Игра Маджонг | Mahjong game
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

241 rinda
2.9MB

  1. <!DOCTYPE html>
  2. <html>
  3. <meta charset="utf-8">
  4. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  5. <body>
  6. <script>
  7. var муром = {};
  8. var murom = муром;
  9. муром.модули = [
  10. [
  11. "муром.загрузка_1.0.1",
  12. "LyoKICogTk9URSBPbmx5IEFTQ0lJIGlzIGFsbG93ZWQgaW4gdGhpcyBsb2FkaW5nIG1vZHVsZQogKiBOT1RFIGJlY2F1c2UgaXQncyBkZWNpcGhlcmVkIHdpdGggYnRvYSgpIGNhbGwsCiAqIE5PVEUgd2hpY2ggY2FuJ3QgaGFuZGxlIFVuaWNvZGUuCiAqIE5PVEUgSG93ZXZlciwgbXVyb20uYXRvYi9idG9hIGZ1bmN0aW9ucyAoZGVmaW5lZCBoZXJlKQogKiBOT1RFIHdvcmsgZmluZSB3aXRoIFVuaWNvZGUsIHNvIHlvdSBhcmUgZnJlZQogKiBOT1RFIHRvIHVzZSBVbmljb2RlIGluIG90aGVyIG1vZHVsZXMKICovCgptdXJvbS5pbnN0YWxsTG9jYWxGb3JhZ2UgPSBmdW5jdGlvbigpCnsKLyoKICAgIGxvY2FsRm9yYWdlIC0tIE9mZmxpbmUgU3RvcmFnZSwgSW1wcm92ZWQKICAgIFZlcnNpb24gMS43LjMKICAgIGh0dHBzOi8vbG9jYWxmb3JhZ2UuZ2l0aHViLmlvL2xvY2FsRm9yYWdlCiAgICAoYykgMjAxMy0yMDE3IE1vemlsbGEsIEFwYWNoZSBMaWNlbnNlIDIuMAoqLwohZnVuY3Rpb24oYSl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1hKCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxhKTtlbHNle3ZhciBiO2I9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLGIubG9jYWxmb3JhZ2U9YSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gYShiLGMsZCl7ZnVuY3Rpb24gZShnLGgpe2lmKCFjW2ddKXtpZighYltnXSl7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWgmJmkpcmV0dXJuIGkoZywhMCk7aWYoZilyZXR1cm4gZihnLCEwKTt2YXIgaj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitnKyInIik7dGhyb3cgai5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixqfXZhciBrPWNbZ109e2V4cG9ydHM6e319O2JbZ11bMF0uY2FsbChrLmV4cG9ydHMsZnVuY3Rpb24oYSl7dmFyIGM9YltnXVsxXVthXTtyZXR1cm4gZShjfHxhKX0sayxrLmV4cG9ydHMsYSxiLGMsZCl9cmV0dXJuIGNbZ10uZXhwb3J0c31mb3IodmFyIGY9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZz0wO2c8ZC5sZW5ndGg7ZysrKWUoZFtnXSk7cmV0dXJuIGV9KHsxOltmdW5jdGlvbihhLGIsYyl7KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKCl7az0hMDtmb3IodmFyIGEsYixjPWwubGVuZ3RoO2M7KXtmb3IoYj1sLGw9W10sYT0tMTsrK2E8YzspYlthXSgpO2M9bC5sZW5ndGh9az0hMX1mdW5jdGlvbiBkKGEpezEhPT1sLnB1c2goYSl8fGt8fGUoKX12YXIgZSxmPWEuTXV0YXRpb25PYnNlcnZlcnx8YS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2lmKGYpe3ZhciBnPTAsaD1uZXcgZihjKSxpPWEuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO2gub2JzZXJ2ZShpLHtjaGFyYWN0ZXJEYXRhOiEwfSksZT1mdW5jdGlvbigpe2kuZGF0YT1nPSsrZyUyfX1lbHNlIGlmKGEuc2V0SW1tZWRpYXRlfHx2b2lkIDA9PT1hLk1lc3NhZ2VDaGFubmVsKWU9ImRvY3VtZW50ImluIGEmJiJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gYS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKT9mdW5jdGlvbigpe3ZhciBiPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtjKCksYi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfSxhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChiKX06ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGMsMCl9O2Vsc2V7dmFyIGo9bmV3IGEuTWVzc2FnZUNoYW5uZWw7ai5wb3J0MS5vbm1lc3NhZ2U9YyxlPWZ1bmN0aW9uKCl7ai5wb3J0Mi5wb3N0TWVzc2FnZSgwKX19dmFyIGssbD1bXTtiLmV4cG9ydHM9ZH0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDI6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZCgpe31mdW5jdGlvbiBlKGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoInJlc29sdmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO3RoaXMuc3RhdGU9cyx0aGlzLnF1ZXVlPVtdLHRoaXMub3V0Y29tZT12b2lkIDAsYSE9PWQmJmkodGhpcyxhKX1mdW5jdGlvbiBmKGEsYixjKXt0aGlzLnByb21pc2U9YSwiZnVuY3Rpb24iPT10eXBlb2YgYiYmKHRoaXMub25GdWxmaWxsZWQ9Yix0aGlzLmNhbGxGdWxmaWxsZWQ9dGhpcy5vdGhlckNhbGxGdWxmaWxsZWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBjJiYodGhpcy5vblJlamVjdGVkPWMsdGhpcy5jYWxsUmVqZWN0ZWQ9dGhpcy5vdGhlckNhbGxSZWplY3RlZCl9ZnVuY3Rpb24gZyhhLGIsYyl7byhmdW5jdGlvbigpe3ZhciBkO3RyeXtkPWIoYyl9Y2F0Y2goYil7cmV0dXJuIHAucmVqZWN0KGEsYil9ZD09PWE/cC5yZWplY3QoYSxuZXcgVHlwZUVycm9yKCJDYW5ub3QgcmVzb2x2ZSBwcm9taXNlIHdpdGggaXRzZWxmIikpOnAucmVzb2x2ZShhLGQpfSl9ZnVuY3Rpb24gaChhKXt2YXIgYj1hJiZhLnRoZW47aWYoYSYmKCJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYilyZXR1cm4gZnVuY3Rpb24oKXtiLmFwcGx5KGEsYXJndW1lbnRzKX19ZnVuY3Rpb24gaShhLGIpe2Z1bmN0aW9uIGMoYil7Znx8KGY9ITAscC5yZWplY3QoYSxiKSl9ZnVuY3Rpb24gZChiKXtmfHwoZj0hMCxwLnJlc29sdmUoYSxiKSl9ZnVuY3Rpb24gZSgpe2IoZCxjKX12YXIgZj0hMSxnPWooZSk7ImVycm9yIj09PWcuc3RhdHVzJiZjKGcudmFsdWUpfWZ1bmN0aW9uIGooYSxiKXt2YXIgYz17fTt0cnl7Yy52YWx1ZT1hKGIpLGMuc3RhdHVzPSJzdWNjZXNzIn1jYXRjaChhKXtjLnN0YXR1cz0iZXJyb3IiLGMudmFsdWU9YX1yZXR1cm4gY31mdW5jdGlvbiBrKGEpe3JldHVybiBhIGluc3RhbmNlb2YgdGhpcz9hOnAucmVzb2x2ZShuZXcgdGhpcyhkKSxhKX1mdW5jdGlvbiBsKGEpe3ZhciBiPW5ldyB0aGlzKGQpO3JldHVybiBwLnJlamVjdChiLGEpfWZ1bmN0aW9uIG0oYSl7ZnVuY3Rpb24gYihhLGIpe2Z1bmN0aW9uIGQoYSl7Z1tiXT1hLCsraCE9PWV8fGZ8fChmPSEwLHAucmVzb2x2ZShqLGcpKX1jLnJlc29sdmUoYSkudGhlbihkLGZ1bmN0aW9uKGEpe2Z8fChmPSEwLHAucmVqZWN0KGosYSkpfSl9dmFyIGM9dGhpcztpZigiW29iamVjdCBBcnJheV0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpKXJldHVybiB0aGlzLnJlamVjdChuZXcgVHlwZUVycm9yKCJtdXN0IGJlIGFuIGFycmF5IikpO3ZhciBlPWEubGVuZ3RoLGY9ITE7aWYoIWUpcmV0dXJuIHRoaXMucmVzb2x2ZShbXSk7Zm9yKHZhciBnPW5ldyBBcnJheShlKSxoPTAsaT0tMSxqPW5ldyB0aGlzKGQpOysraTxlOyliKGFbaV0saSk7cmV0dXJuIGp9ZnVuY3Rpb24gbihhKXtmdW5jdGlvbiBiKGEpe2MucmVzb2x2ZShhKS50aGVuKGZ1bmN0aW9uKGEpe2Z8fChmPSEwLHAucmVzb2x2ZShoLGEpKX0sZnVuY3Rpb24oYSl7Znx8KGY9ITAscC5yZWplY3QoaCxhKSl9KX12YXIgYz10aGlzO2lmKCJbb2JqZWN0IEFycmF5XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkpcmV0dXJuIHRoaXMucmVqZWN0KG5ldyBUeXBlRXJyb3IoIm11c3QgYmUgYW4gYXJyYXkiKSk7dmFyIGU9YS5sZW5ndGgsZj0hMTtpZighZSlyZXR1cm4gdGhpcy5yZXNvbHZlKFtdKTtmb3IodmFyIGc9LTEsaD1uZXcgdGhpcyhkKTsrK2c8ZTspYihhW2ddKTtyZXR1cm4gaH12YXIgbz1hKDEpLHA9e30scT1bIlJFSkVDVEVEIl0scj1bIkZVTEZJTExFRCJdLHM9WyJQRU5ESU5HIl07Yi5leHBvcnRzPWUsZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGEpfSxlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEmJnRoaXMuc3RhdGU9PT1yfHwiZnVuY3Rpb24iIT10eXBlb2YgYiYmdGhpcy5zdGF0ZT09PXEpcmV0dXJuIHRoaXM7dmFyIGM9bmV3IHRoaXMuY29uc3RydWN0b3IoZCk7aWYodGhpcy5zdGF0ZSE9PXMpe2coYyx0aGlzLnN0YXRlPT09cj9hOmIsdGhpcy5vdXRjb21lKX1lbHNlIHRoaXMucXVldWUucHVzaChuZXcgZihjLGEsYikpO3JldHVybiBjfSxmLnByb3RvdHlwZS5jYWxsRnVsZmlsbGVkPWZ1bmN0aW9uKGEpe3AucmVzb2x2ZSh0aGlzLnByb21pc2UsYSl9LGYucHJvdG90eXBlLm90aGVyQ2FsbEZ1bGZpbGxlZD1mdW5jdGlvbihhKXtnKHRoaXMucHJvbWlzZSx0aGlzLm9uRnVsZmlsbGVkLGEpfSxmLnByb3RvdHlwZS5jYWxsUmVqZWN0ZWQ9ZnVuY3Rpb24oYSl7cC5yZWplY3QodGhpcy5wcm9taXNlLGEpfSxmLnByb3RvdHlwZS5vdGhlckNhbGxSZWplY3RlZD1mdW5jdGlvbihhKXtnKHRoaXMucHJvbWlzZSx0aGlzLm9uUmVqZWN0ZWQsYSl9LHAucmVzb2x2ZT1mdW5jdGlvbihhLGIpe3ZhciBjPWooaCxiKTtpZigiZXJyb3IiPT09Yy5zdGF0dXMpcmV0dXJuIHAucmVqZWN0KGEsYy52YWx1ZSk7dmFyIGQ9Yy52YWx1ZTtpZihkKWkoYSxkKTtlbHNle2Euc3RhdGU9cixhLm91dGNvbWU9Yjtmb3IodmFyIGU9LTEsZj1hLnF1ZXVlLmxlbmd0aDsrK2U8ZjspYS5xdWV1ZVtlXS5jYWxsRnVsZmlsbGVkKGIpfXJldHVybiBhfSxwLnJlamVjdD1mdW5jdGlvbihhLGIpe2Euc3RhdGU9cSxhLm91dGNvbWU9Yjtmb3IodmFyIGM9LTEsZD1hLnF1ZXVlLmxlbmd0aDsrK2M8ZDspYS5xdWV1ZVtjXS5jYWxsUmVqZWN0ZWQoYik7cmV0dXJuIGF9LGUucmVzb2x2ZT1rLGUucmVqZWN0PWwsZS5hbGw9bSxlLnJhY2U9bn0sezE6MX1dLDM6W2Z1bmN0aW9uKGEsYixjKXsoZnVuY3Rpb24oYil7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiIhPXR5cGVvZiBiLlByb21pc2UmJihiLlByb21pc2U9YSgyKSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsyOjJ9XSw0OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBlKCl7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgaW5kZXhlZERCKXJldHVybiBpbmRleGVkREI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3ZWJraXRJbmRleGVkREIpcmV0dXJuIHdlYmtpdEluZGV4ZWREQjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG1vekluZGV4ZWREQilyZXR1cm4gbW96SW5kZXhlZERCO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgT0luZGV4ZWREQilyZXR1cm4gT0luZGV4ZWREQjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG1zSW5kZXhlZERCKXJldHVybiBtc0luZGV4ZWREQn1jYXRjaChhKXtyZXR1cm59fWZ1bmN0aW9uIGYoKXt0cnl7aWYoIXVhKXJldHVybiExO3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2Ygb3BlbkRhdGFiYXNlJiYvKFNhZmFyaXxpUGhvbmV8aVBhZHxpUG9kKS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIS9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEvQmxhY2tCZXJyeS8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pLGI9ImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYtMSE9PWZldGNoLnRvU3RyaW5nKCkuaW5kZXhPZigiW25hdGl2ZSBjb2RlIik7cmV0dXJuKCFhfHxiKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBpbmRleGVkREImJiJ1bmRlZmluZWQiIT10eXBlb2YgSURCS2V5UmFuZ2V9Y2F0Y2goYSl7cmV0dXJuITF9fWZ1bmN0aW9uIGcoYSxiKXthPWF8fFtdLGI9Ynx8e307dHJ5e3JldHVybiBuZXcgQmxvYihhLGIpfWNhdGNoKGYpe2lmKCJUeXBlRXJyb3IiIT09Zi5uYW1lKXRocm93IGY7Zm9yKHZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYkJ1aWxkZXI/QmxvYkJ1aWxkZXI6InVuZGVmaW5lZCIhPXR5cGVvZiBNU0Jsb2JCdWlsZGVyP01TQmxvYkJ1aWxkZXI6InVuZGVmaW5lZCIhPXR5cGVvZiBNb3pCbG9iQnVpbGRlcj9Nb3pCbG9iQnVpbGRlcjpXZWJLaXRCbG9iQnVpbGRlcixkPW5ldyBjLGU9MDtlPGEubGVuZ3RoO2UrPTEpZC5hcHBlbmQoYVtlXSk7cmV0dXJuIGQuZ2V0QmxvYihiLnR5cGUpfX1mdW5jdGlvbiBoKGEsYil7YiYmYS50aGVuKGZ1bmN0aW9uKGEpe2IobnVsbCxhKX0sZnVuY3Rpb24oYSl7YihhKX0pfWZ1bmN0aW9uIGkoYSxiLGMpeyJmdW5jdGlvbiI9PXR5cGVvZiBiJiZhLnRoZW4oYiksImZ1bmN0aW9uIj09dHlwZW9mIGMmJmEuY2F0Y2goYyl9ZnVuY3Rpb24gaihhKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjb25zb2xlLndhcm4oYSsiIHVzZWQgYXMgYSBrZXksIGJ1dCBpdCBpcyBub3QgYSBzdHJpbmcuIiksYT1TdHJpbmcoYSkpLGF9ZnVuY3Rpb24gaygpe2lmKGFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSlyZXR1cm4gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV19ZnVuY3Rpb24gbChhKXtmb3IodmFyIGI9YS5sZW5ndGgsYz1uZXcgQXJyYXlCdWZmZXIoYiksZD1uZXcgVWludDhBcnJheShjKSxlPTA7ZTxiO2UrKylkW2VdPWEuY2hhckNvZGVBdChlKTtyZXR1cm4gY31mdW5jdGlvbiBtKGEpe3JldHVybiBuZXcgdmEoZnVuY3Rpb24oYil7dmFyIGM9YS50cmFuc2FjdGlvbih3YSxCYSksZD1nKFsiIl0pO2Mub2JqZWN0U3RvcmUod2EpLnB1dChkLCJrZXkiKSxjLm9uYWJvcnQ9ZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksYighMSl9LGMub25jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBhPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tZVwvKFxkKykvKSxjPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0VkZ2VcLy8pO2IoY3x8IWF8fHBhcnNlSW50KGFbMV0sMTApPj00Myl9fSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pfWZ1bmN0aW9uIG4oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgeGE/dmEucmVzb2x2ZSh4YSk6bShhKS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiB4YT1hfSl9ZnVuY3Rpb24gbyhhKXt2YXIgYj15YVthLm5hbWVdLGM9e307Yy5wcm9taXNlPW5ldyB2YShmdW5jdGlvbihhLGIpe2MucmVzb2x2ZT1hLGMucmVqZWN0PWJ9KSxiLmRlZmVycmVkT3BlcmF0aW9ucy5wdXNoKGMpLGIuZGJSZWFkeT9iLmRiUmVhZHk9Yi5kYlJlYWR5LnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYy5wcm9taXNlfSk6Yi5kYlJlYWR5PWMucHJvbWlzZX1mdW5jdGlvbiBwKGEpe3ZhciBiPXlhW2EubmFtZV0sYz1iLmRlZmVycmVkT3BlcmF0aW9ucy5wb3AoKTtpZihjKXJldHVybiBjLnJlc29sdmUoKSxjLnByb21pc2V9ZnVuY3Rpb24gcShhLGIpe3ZhciBjPXlhW2EubmFtZV0sZD1jLmRlZmVycmVkT3BlcmF0aW9ucy5wb3AoKTtpZihkKXJldHVybiBkLnJlamVjdChiKSxkLnByb21pc2V9ZnVuY3Rpb24gcihhLGIpe3JldHVybiBuZXcgdmEoZnVuY3Rpb24oYyxkKXtpZih5YVthLm5hbWVdPXlhW2EubmFtZV18fEIoKSxhLmRiKXtpZighYilyZXR1cm4gYyhhLmRiKTtvKGEpLGEuZGIuY2xvc2UoKX12YXIgZT1bYS5uYW1lXTtiJiZlLnB1c2goYS52ZXJzaW9uKTt2YXIgZj11YS5vcGVuLmFwcGx5KHVhLGUpO2ImJihmLm9udXBncmFkZW5lZWRlZD1mdW5jdGlvbihiKXt2YXIgYz1mLnJlc3VsdDt0cnl7Yy5jcmVhdGVPYmplY3RTdG9yZShhLnN0b3JlTmFtZSksYi5vbGRWZXJzaW9uPD0xJiZjLmNyZWF0ZU9iamVjdFN0b3JlKHdhKX1jYXRjaChjKXtpZigiQ29uc3RyYWludEVycm9yIiE9PWMubmFtZSl0aHJvdyBjO2NvbnNvbGUud2FybignVGhlIGRhdGFiYXNlICInK2EubmFtZSsnIiBoYXMgYmVlbiB1cGdyYWRlZCBmcm9tIHZlcnNpb24gJytiLm9sZFZlcnNpb24rIiB0byB2ZXJzaW9uICIrYi5uZXdWZXJzaW9uKycsIGJ1dCB0aGUgc3RvcmFnZSAiJythLnN0b3JlTmFtZSsnIiBhbHJlYWR5IGV4aXN0cy4nKX19KSxmLm9uZXJyb3I9ZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGQoZi5lcnJvcil9LGYub25zdWNjZXNzPWZ1bmN0aW9uKCl7YyhmLnJlc3VsdCkscChhKX19KX1mdW5jdGlvbiBzKGEpe3JldHVybiByKGEsITEpfWZ1bmN0aW9uIHQoYSl7cmV0dXJuIHIoYSwhMCl9ZnVuY3Rpb24gdShhLGIpe2lmKCFhLmRiKXJldHVybiEwO3ZhciBjPSFhLmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoYS5zdG9yZU5hbWUpLGQ9YS52ZXJzaW9uPGEuZGIudmVyc2lvbixlPWEudmVyc2lvbj5hLmRiLnZlcnNpb247aWYoZCYmKGEudmVyc2lvbiE9PWImJmNvbnNvbGUud2FybignVGhlIGRhdGFiYXNlICInK2EubmFtZSsiXCIgY2FuJ3QgYmUgZG93bmdyYWRlZCBmcm9tIHZlcnNpb24gIithLmRiLnZlcnNpb24rIiB0byB2ZXJzaW9uICIrYS52ZXJzaW9uKyIuIiksYS52ZXJzaW9uPWEuZGIudmVyc2lvbiksZXx8Yyl7aWYoYyl7dmFyIGY9YS5kYi52ZXJzaW9uKzE7Zj5hLnZlcnNpb24mJihhLnZlcnNpb249Zil9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gdihhKXtyZXR1cm4gbmV3IHZhKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bmV3IEZpbGVSZWFkZXI7ZC5vbmVycm9yPWMsZC5vbmxvYWRlbmQ9ZnVuY3Rpb24oYyl7dmFyIGQ9YnRvYShjLnRhcmdldC5yZXN1bHR8fCIiKTtiKHtfX2xvY2FsX2ZvcmFnZV9lbmNvZGVkX2Jsb2I6ITAsZGF0YTpkLHR5cGU6YS50eXBlfSl9LGQucmVhZEFzQmluYXJ5U3RyaW5nKGEpfSl9ZnVuY3Rpb24gdyhhKXtyZXR1cm4gZyhbbChhdG9iKGEuZGF0YSkpXSx7dHlwZTphLnR5cGV9KX1mdW5jdGlvbiB4KGEpe3JldHVybiBhJiZhLl9fbG9jYWxfZm9yYWdlX2VuY29kZWRfYmxvYn1mdW5jdGlvbiB5KGEpe3ZhciBiPXRoaXMsYz1iLl9pbml0UmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGE9eWFbYi5fZGJJbmZvLm5hbWVdO2lmKGEmJmEuZGJSZWFkeSlyZXR1cm4gYS5kYlJlYWR5fSk7cmV0dXJuIGkoYyxhLGEpLGN9ZnVuY3Rpb24geihhKXtvKGEpO2Zvcih2YXIgYj15YVthLm5hbWVdLGM9Yi5mb3JhZ2VzLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTtlLl9kYkluZm8uZGImJihlLl9kYkluZm8uZGIuY2xvc2UoKSxlLl9kYkluZm8uZGI9bnVsbCl9cmV0dXJuIGEuZGI9bnVsbCxzKGEpLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGEuZGI9Yix1KGEpP3QoYSk6Yn0pLnRoZW4oZnVuY3Rpb24oZCl7YS5kYj1iLmRiPWQ7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspY1tlXS5fZGJJbmZvLmRiPWR9KS5jYXRjaChmdW5jdGlvbihiKXt0aHJvdyBxKGEsYiksYn0pfWZ1bmN0aW9uIEEoYSxiLGMsZCl7dm9pZCAwPT09ZCYmKGQ9MSk7dHJ5e3ZhciBlPWEuZGIudHJhbnNhY3Rpb24oYS5zdG9yZU5hbWUsYik7YyhudWxsLGUpfWNhdGNoKGUpe2lmKGQ+MCYmKCFhLmRifHwiSW52YWxpZFN0YXRlRXJyb3IiPT09ZS5uYW1lfHwiTm90Rm91bmRFcnJvciI9PT1lLm5hbWUpKXJldHVybiB2YS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe2lmKCFhLmRifHwiTm90Rm91bmRFcnJvciI9PT1lLm5hbWUmJiFhLmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoYS5zdG9yZU5hbWUpJiZhLnZlcnNpb248PWEuZGIudmVyc2lvbilyZXR1cm4gYS5kYiYmKGEudmVyc2lvbj1hLmRiLnZlcnNpb24rMSksdChhKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geihhKS50aGVuKGZ1bmN0aW9uKCl7QShhLGIsYyxkLTEpfSl9KS5jYXRjaChjKTtjKGUpfX1mdW5jdGlvbiBCKCl7cmV0dXJue2ZvcmFnZXM6W10sZGI6bnVsbCxkYlJlYWR5Om51bGwsZGVmZXJyZWRPcGVyYXRpb25zOltdfX1mdW5jdGlvbiBDKGEpe2Z1bmN0aW9uIGIoKXtyZXR1cm4gdmEucmVzb2x2ZSgpfXZhciBjPXRoaXMsZD17ZGI6bnVsbH07aWYoYSlmb3IodmFyIGUgaW4gYSlkW2VdPWFbZV07dmFyIGY9eWFbZC5uYW1lXTtmfHwoZj1CKCkseWFbZC5uYW1lXT1mKSxmLmZvcmFnZXMucHVzaChjKSxjLl9pbml0UmVhZHl8fChjLl9pbml0UmVhZHk9Yy5yZWFkeSxjLnJlYWR5PXkpO2Zvcih2YXIgZz1bXSxoPTA7aDxmLmZvcmFnZXMubGVuZ3RoO2grKyl7dmFyIGk9Zi5mb3JhZ2VzW2hdO2khPT1jJiZnLnB1c2goaS5faW5pdFJlYWR5KCkuY2F0Y2goYikpfXZhciBqPWYuZm9yYWdlcy5zbGljZSgwKTtyZXR1cm4gdmEuYWxsKGcpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZC5kYj1mLmRiLHMoZCl9KS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBkLmRiPWEsdShkLGMuX2RlZmF1bHRDb25maWcudmVyc2lvbik/dChkKTphfSkudGhlbihmdW5jdGlvbihhKXtkLmRiPWYuZGI9YSxjLl9kYkluZm89ZDtmb3IodmFyIGI9MDtiPGoubGVuZ3RoO2IrKyl7dmFyIGU9altiXTtlIT09YyYmKGUuX2RiSW5mby5kYj1kLmRiLGUuX2RiSW5mby52ZXJzaW9uPWQudmVyc2lvbil9fSl9ZnVuY3Rpb24gRChhLGIpe3ZhciBjPXRoaXM7YT1qKGEpO3ZhciBkPW5ldyB2YShmdW5jdGlvbihiLGQpe2MucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7QShjLl9kYkluZm8sQWEsZnVuY3Rpb24oZSxmKXtpZihlKXJldHVybiBkKGUpO3RyeXt2YXIgZz1mLm9iamVjdFN0b3JlKGMuX2RiSW5mby5zdG9yZU5hbWUpLGg9Zy5nZXQoYSk7aC5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXt2YXIgYT1oLnJlc3VsdDt2b2lkIDA9PT1hJiYoYT1udWxsKSx4KGEpJiYoYT13KGEpKSxiKGEpfSxoLm9uZXJyb3I9ZnVuY3Rpb24oKXtkKGguZXJyb3IpfX1jYXRjaChhKXtkKGEpfX0pfSkuY2F0Y2goZCl9KTtyZXR1cm4gaChkLGIpLGR9ZnVuY3Rpb24gRShhLGIpe3ZhciBjPXRoaXMsZD1uZXcgdmEoZnVuY3Rpb24oYixkKXtjLnJlYWR5KCkudGhlbihmdW5jdGlvbigpe0EoYy5fZGJJbmZvLEFhLGZ1bmN0aW9uKGUsZil7aWYoZSlyZXR1cm4gZChlKTt0cnl7dmFyIGc9Zi5vYmplY3RTdG9yZShjLl9kYkluZm8uc3RvcmVOYW1lKSxoPWcub3BlbkN1cnNvcigpLGk9MTtoLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3ZhciBjPWgucmVzdWx0O2lmKGMpe3ZhciBkPWMudmFsdWU7eChkKSYmKGQ9dyhkKSk7dmFyIGU9YShkLGMua2V5LGkrKyk7dm9pZCAwIT09ZT9iKGUpOmMuY29udGludWUoKX1lbHNlIGIoKX0saC5vbmVycm9yPWZ1bmN0aW9uKCl7ZChoLmVycm9yKX19Y2F0Y2goYSl7ZChhKX19KX0pLmNhdGNoKGQpfSk7cmV0dXJuIGgoZCxiKSxkfWZ1bmN0aW9uIEYoYSxiLGMpe3ZhciBkPXRoaXM7YT1qKGEpO3ZhciBlPW5ldyB2YShmdW5jdGlvbihjLGUpe3ZhciBmO2QucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGY9ZC5fZGJJbmZvLCJbb2JqZWN0IEJsb2JdIj09PXphLmNhbGwoYik/bihmLmRiKS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBhP2I6dihiKX0pOmJ9KS50aGVuKGZ1bmN0aW9uKGIpe0EoZC5fZGJJbmZvLEJhLGZ1bmN0aW9uKGYsZyl7aWYoZilyZXR1cm4gZShmKTt0cnl7dmFyIGg9Zy5vYmplY3RTdG9yZShkLl9kYkluZm8uc3RvcmVOYW1lKTtudWxsPT09YiYmKGI9dm9pZCAwKTt2YXIgaT1oLnB1dChiLGEpO2cub25jb21wbGV0ZT1mdW5jdGlvbigpe3ZvaWQgMD09PWImJihiPW51bGwpLGMoYil9LGcub25hYm9ydD1nLm9uZXJyb3I9ZnVuY3Rpb24oKXt2YXIgYT1pLmVycm9yP2kuZXJyb3I6aS50cmFuc2FjdGlvbi5lcnJvcjtlKGEpfX1jYXRjaChhKXtlKGEpfX0pfSkuY2F0Y2goZSl9KTtyZXR1cm4gaChlLGMpLGV9ZnVuY3Rpb24gRyhhLGIpe3ZhciBjPXRoaXM7YT1qKGEpO3ZhciBkPW5ldyB2YShmdW5jdGlvbihiLGQpe2MucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7QShjLl9kYkluZm8sQmEsZnVuY3Rpb24oZSxmKXtpZihlKXJldHVybiBkKGUpO3RyeXt2YXIgZz1mLm9iamVjdFN0b3JlKGMuX2RiSW5mby5zdG9yZU5hbWUpLGg9Zy5kZWxldGUoYSk7Zi5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7YigpfSxmLm9uZXJyb3I9ZnVuY3Rpb24oKXtkKGguZXJyb3IpfSxmLm9uYWJvcnQ9ZnVuY3Rpb24oKXt2YXIgYT1oLmVycm9yP2guZXJyb3I6aC50cmFuc2FjdGlvbi5lcnJvcjtkKGEpfX1jYXRjaChhKXtkKGEpfX0pfSkuY2F0Y2goZCl9KTtyZXR1cm4gaChkLGIpLGR9ZnVuY3Rpb24gSChhKXt2YXIgYj10aGlzLGM9bmV3IHZhKGZ1bmN0aW9uKGEsYyl7Yi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXtBKGIuX2RiSW5mbyxCYSxmdW5jdGlvbihkLGUpe2lmKGQpcmV0dXJuIGMoZCk7dHJ5e3ZhciBmPWUub2JqZWN0U3RvcmUoYi5fZGJJbmZvLnN0b3JlTmFtZSksZz1mLmNsZWFyKCk7ZS5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7YSgpfSxlLm9uYWJvcnQ9ZS5vbmVycm9yPWZ1bmN0aW9uKCl7dmFyIGE9Zy5lcnJvcj9nLmVycm9yOmcudHJhbnNhY3Rpb24uZXJyb3I7YyhhKX19Y2F0Y2goYSl7YyhhKX19KX0pLmNhdGNoKGMpfSk7cmV0dXJuIGgoYyxhKSxjfWZ1bmN0aW9uIEkoYSl7dmFyIGI9dGhpcyxjPW5ldyB2YShmdW5jdGlvbihhLGMpe2IucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7QShiLl9kYkluZm8sQWEsZnVuY3Rpb24oZCxlKXtpZihkKXJldHVybiBjKGQpO3RyeXt2YXIgZj1lLm9iamVjdFN0b3JlKGIuX2RiSW5mby5zdG9yZU5hbWUpLGc9Zi5jb3VudCgpO2cub25zdWNjZXNzPWZ1bmN0aW9uKCl7YShnLnJlc3VsdCl9LGcub25lcnJvcj1mdW5jdGlvbigpe2MoZy5lcnJvcil9fWNhdGNoKGEpe2MoYSl9fSl9KS5jYXRjaChjKX0pO3JldHVybiBoKGMsYSksY31mdW5jdGlvbiBKKGEsYil7dmFyIGM9dGhpcyxkPW5ldyB2YShmdW5jdGlvbihiLGQpe2lmKGE8MClyZXR1cm4gdm9pZCBiKG51bGwpO2MucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7QShjLl9kYkluZm8sQWEsZnVuY3Rpb24oZSxmKXtpZihlKXJldHVybiBkKGUpO3RyeXt2YXIgZz1mLm9iamVjdFN0b3JlKGMuX2RiSW5mby5zdG9yZU5hbWUpLGg9ITEsaT1nLm9wZW5DdXJzb3IoKTtpLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3ZhciBjPWkucmVzdWx0O2lmKCFjKXJldHVybiB2b2lkIGIobnVsbCk7MD09PWE/YihjLmtleSk6aD9iKGMua2V5KTooaD0hMCxjLmFkdmFuY2UoYSkpfSxpLm9uZXJyb3I9ZnVuY3Rpb24oKXtkKGkuZXJyb3IpfX1jYXRjaChhKXtkKGEpfX0pfSkuY2F0Y2goZCl9KTtyZXR1cm4gaChkLGIpLGR9ZnVuY3Rpb24gSyhhKXt2YXIgYj10aGlzLGM9bmV3IHZhKGZ1bmN0aW9uKGEsYyl7Yi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXtBKGIuX2RiSW5mbyxBYSxmdW5jdGlvbihkLGUpe2lmKGQpcmV0dXJuIGMoZCk7dHJ5e3ZhciBmPWUub2JqZWN0U3RvcmUoYi5fZGJJbmZvLnN0b3JlTmFtZSksZz1mLm9wZW5DdXJzb3IoKSxoPVtdO2cub25zdWNjZXNzPWZ1bmN0aW9uKCl7dmFyIGI9Zy5yZXN1bHQ7aWYoIWIpcmV0dXJuIHZvaWQgYShoKTtoLnB1c2goYi5rZXkpLGIuY29udGludWUoKX0sZy5vbmVycm9yPWZ1bmN0aW9uKCl7YyhnLmVycm9yKX19Y2F0Y2goYSl7YyhhKX19KX0pLmNhdGNoKGMpfSk7cmV0dXJuIGgoYyxhKSxjfWZ1bmN0aW9uIEwoYSxiKXtiPWsuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBjPXRoaXMuY29uZmlnKCk7YT0iZnVuY3Rpb24iIT10eXBlb2YgYSYmYXx8e30sYS5uYW1lfHwoYS5uYW1lPWEubmFtZXx8Yy5uYW1lLGEuc3RvcmVOYW1lPWEuc3RvcmVOYW1lfHxjLnN0b3JlTmFtZSk7dmFyIGQsZT10aGlzO2lmKGEubmFtZSl7dmFyIGY9YS5uYW1lPT09Yy5uYW1lJiZlLl9kYkluZm8uZGIsZz1mP3ZhLnJlc29sdmUoZS5fZGJJbmZvLmRiKTpzKGEpLnRoZW4oZnVuY3Rpb24oYil7dmFyIGM9eWFbYS5uYW1lXSxkPWMuZm9yYWdlcztjLmRiPWI7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspZFtlXS5fZGJJbmZvLmRiPWI7cmV0dXJuIGJ9KTtkPWEuc3RvcmVOYW1lP2cudGhlbihmdW5jdGlvbihiKXtpZihiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoYS5zdG9yZU5hbWUpKXt2YXIgYz1iLnZlcnNpb24rMTtvKGEpO3ZhciBkPXlhW2EubmFtZV0sZT1kLmZvcmFnZXM7Yi5jbG9zZSgpO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO2cuX2RiSW5mby5kYj1udWxsLGcuX2RiSW5mby52ZXJzaW9uPWN9cmV0dXJuIG5ldyB2YShmdW5jdGlvbihiLGQpe3ZhciBlPXVhLm9wZW4oYS5uYW1lLGMpO2Uub25lcnJvcj1mdW5jdGlvbihhKXtlLnJlc3VsdC5jbG9zZSgpLGQoYSl9LGUub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKCl7ZS5yZXN1bHQuZGVsZXRlT2JqZWN0U3RvcmUoYS5zdG9yZU5hbWUpfSxlLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3ZhciBhPWUucmVzdWx0O2EuY2xvc2UoKSxiKGEpfX0pLnRoZW4oZnVuY3Rpb24oYSl7ZC5kYj1hO2Zvcih2YXIgYj0wO2I8ZS5sZW5ndGg7YisrKXt2YXIgYz1lW2JdO2MuX2RiSW5mby5kYj1hLHAoYy5fZGJJbmZvKX19KS5jYXRjaChmdW5jdGlvbihiKXt0aHJvdyhxKGEsYil8fHZhLnJlc29sdmUoKSkuY2F0Y2goZnVuY3Rpb24oKXt9KSxifSl9fSk6Zy50aGVuKGZ1bmN0aW9uKGIpe28oYSk7dmFyIGM9eWFbYS5uYW1lXSxkPWMuZm9yYWdlcztiLmNsb3NlKCk7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe2RbZV0uX2RiSW5mby5kYj1udWxsfXJldHVybiBuZXcgdmEoZnVuY3Rpb24oYixjKXt2YXIgZD11YS5kZWxldGVEYXRhYmFzZShhLm5hbWUpO2Qub25lcnJvcj1kLm9uYmxvY2tlZD1mdW5jdGlvbihhKXt2YXIgYj1kLnJlc3VsdDtiJiZiLmNsb3NlKCksYyhhKX0sZC5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXt2YXIgYT1kLnJlc3VsdDthJiZhLmNsb3NlKCksYihhKX19KS50aGVuKGZ1bmN0aW9uKGEpe2MuZGI9YTtmb3IodmFyIGI9MDtiPGQubGVuZ3RoO2IrKylwKGRbYl0uX2RiSW5mbyl9KS5jYXRjaChmdW5jdGlvbihiKXt0aHJvdyhxKGEsYil8fHZhLnJlc29sdmUoKSkuY2F0Y2goZnVuY3Rpb24oKXt9KSxifSl9KX1lbHNlIGQ9dmEucmVqZWN0KCJJbnZhbGlkIGFyZ3VtZW50cyIpO3JldHVybiBoKGQsYiksZH1mdW5jdGlvbiBNKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG9wZW5EYXRhYmFzZX1mdW5jdGlvbiBOKGEpe3ZhciBiLGMsZCxlLGYsZz0uNzUqYS5sZW5ndGgsaD1hLmxlbmd0aCxpPTA7Ij0iPT09YVthLmxlbmd0aC0xXSYmKGctLSwiPSI9PT1hW2EubGVuZ3RoLTJdJiZnLS0pO3ZhciBqPW5ldyBBcnJheUJ1ZmZlcihnKSxrPW5ldyBVaW50OEFycmF5KGopO2ZvcihiPTA7YjxoO2IrPTQpYz1EYS5pbmRleE9mKGFbYl0pLGQ9RGEuaW5kZXhPZihhW2IrMV0pLGU9RGEuaW5kZXhPZihhW2IrMl0pLGY9RGEuaW5kZXhPZihhW2IrM10pLGtbaSsrXT1jPDwyfGQ+PjQsa1tpKytdPSgxNSZkKTw8NHxlPj4yLGtbaSsrXT0oMyZlKTw8Nnw2MyZmO3JldHVybiBqfWZ1bmN0aW9uIE8oYSl7dmFyIGIsYz1uZXcgVWludDhBcnJheShhKSxkPSIiO2ZvcihiPTA7YjxjLmxlbmd0aDtiKz0zKWQrPURhW2NbYl0+PjJdLGQrPURhWygzJmNbYl0pPDw0fGNbYisxXT4+NF0sZCs9RGFbKDE1JmNbYisxXSk8PDJ8Y1tiKzJdPj42XSxkKz1EYVs2MyZjW2IrMl1dO3JldHVybiBjLmxlbmd0aCUzPT0yP2Q9ZC5zdWJzdHJpbmcoMCxkLmxlbmd0aC0xKSsiPSI6Yy5sZW5ndGglMz09MSYmKGQ9ZC5zdWJzdHJpbmcoMCxkLmxlbmd0aC0yKSsiPT0iKSxkfWZ1bmN0aW9uIFAoYSxiKXt2YXIgYz0iIjtpZihhJiYoYz1VYS5jYWxsKGEpKSxhJiYoIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PWN8fGEuYnVmZmVyJiYiW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09VWEuY2FsbChhLmJ1ZmZlcikpKXt2YXIgZCxlPUdhO2EgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj8oZD1hLGUrPUlhKTooZD1hLmJ1ZmZlciwiW29iamVjdCBJbnQ4QXJyYXldIj09PWM/ZSs9S2E6IltvYmplY3QgVWludDhBcnJheV0iPT09Yz9lKz1MYToiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iPT09Yz9lKz1NYToiW29iamVjdCBJbnQxNkFycmF5XSI9PT1jP2UrPU5hOiJbb2JqZWN0IFVpbnQxNkFycmF5XSI9PT1jP2UrPVBhOiJbb2JqZWN0IEludDMyQXJyYXldIj09PWM/ZSs9T2E6IltvYmplY3QgVWludDMyQXJyYXldIj09PWM/ZSs9UWE6IltvYmplY3QgRmxvYXQzMkFycmF5XSI9PT1jP2UrPVJhOiJbb2JqZWN0IEZsb2F0NjRBcnJheV0iPT09Yz9lKz1TYTpiKG5ldyBFcnJvcigiRmFpbGVkIHRvIGdldCB0eXBlIGZvciBCaW5hcnlBcnJheSIpKSksYihlK08oZCkpfWVsc2UgaWYoIltvYmplY3QgQmxvYl0iPT09Yyl7dmFyIGY9bmV3IEZpbGVSZWFkZXI7Zi5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgYz1FYSthLnR5cGUrIn4iK08odGhpcy5yZXN1bHQpO2IoR2ErSmErYyl9LGYucmVhZEFzQXJyYXlCdWZmZXIoYSl9ZWxzZSB0cnl7YihKU09OLnN0cmluZ2lmeShhKSl9Y2F0Y2goYyl7Y29uc29sZS5lcnJvcigiQ291bGRuJ3QgY29udmVydCB2YWx1ZSBpbnRvIGEgSlNPTiBzdHJpbmc6ICIsYSksYihudWxsLGMpfX1mdW5jdGlvbiBRKGEpe2lmKGEuc3Vic3RyaW5nKDAsSGEpIT09R2EpcmV0dXJuIEpTT04ucGFyc2UoYSk7dmFyIGIsYz1hLnN1YnN0cmluZyhUYSksZD1hLnN1YnN0cmluZyhIYSxUYSk7aWYoZD09PUphJiZGYS50ZXN0KGMpKXt2YXIgZT1jLm1hdGNoKEZhKTtiPWVbMV0sYz1jLnN1YnN0cmluZyhlWzBdLmxlbmd0aCl9dmFyIGY9TihjKTtzd2l0Y2goZCl7Y2FzZSBJYTpyZXR1cm4gZjtjYXNlIEphOnJldHVybiBnKFtmXSx7dHlwZTpifSk7Y2FzZSBLYTpyZXR1cm4gbmV3IEludDhBcnJheShmKTtjYXNlIExhOnJldHVybiBuZXcgVWludDhBcnJheShmKTtjYXNlIE1hOnJldHVybiBuZXcgVWludDhDbGFtcGVkQXJyYXkoZik7Y2FzZSBOYTpyZXR1cm4gbmV3IEludDE2QXJyYXkoZik7Y2FzZSBQYTpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGYpO2Nhc2UgT2E6cmV0dXJuIG5ldyBJbnQzMkFycmF5KGYpO2Nhc2UgUWE6cmV0dXJuIG5ldyBVaW50MzJBcnJheShmKTtjYXNlIFJhOnJldHVybiBuZXcgRmxvYXQzMkFycmF5KGYpO2Nhc2UgU2E6cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoZik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua293biB0eXBlOiAiK2QpfX1mdW5jdGlvbiBSKGEsYixjLGQpe2EuZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgIitiLnN0b3JlTmFtZSsiIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBrZXkgdW5pcXVlLCB2YWx1ZSkiLFtdLGMsZCl9ZnVuY3Rpb24gUyhhKXt2YXIgYj10aGlzLGM9e2RiOm51bGx9O2lmKGEpZm9yKHZhciBkIGluIGEpY1tkXT0ic3RyaW5nIiE9dHlwZW9mIGFbZF0/YVtkXS50b1N0cmluZygpOmFbZF07dmFyIGU9bmV3IHZhKGZ1bmN0aW9uKGEsZCl7dHJ5e2MuZGI9b3BlbkRhdGFiYXNlKGMubmFtZSxTdHJpbmcoYy52ZXJzaW9uKSxjLmRlc2NyaXB0aW9uLGMuc2l6ZSl9Y2F0Y2goYSl7cmV0dXJuIGQoYSl9Yy5kYi50cmFuc2FjdGlvbihmdW5jdGlvbihlKXtSKGUsYyxmdW5jdGlvbigpe2IuX2RiSW5mbz1jLGEoKX0sZnVuY3Rpb24oYSxiKXtkKGIpfSl9LGQpfSk7cmV0dXJuIGMuc2VyaWFsaXplcj1WYSxlfWZ1bmN0aW9uIFQoYSxiLGMsZCxlLGYpe2EuZXhlY3V0ZVNxbChjLGQsZSxmdW5jdGlvbihhLGcpe2cuY29kZT09PWcuU1lOVEFYX0VSUj9hLmV4ZWN1dGVTcWwoIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScgQU5EIG5hbWUgPSA/IixbYi5zdG9yZU5hbWVdLGZ1bmN0aW9uKGEsaCl7aC5yb3dzLmxlbmd0aD9mKGEsZyk6UihhLGIsZnVuY3Rpb24oKXthLmV4ZWN1dGVTcWwoYyxkLGUsZil9LGYpfSxmKTpmKGEsZyl9LGYpfWZ1bmN0aW9uIFUoYSxiKXt2YXIgYz10aGlzO2E9aihhKTt2YXIgZD1uZXcgdmEoZnVuY3Rpb24oYixkKXtjLnJlYWR5KCkudGhlbihmdW5jdGlvbigpe3ZhciBlPWMuX2RiSW5mbztlLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGMpe1QoYyxlLCJTRUxFQ1QgKiBGUk9NICIrZS5zdG9yZU5hbWUrIiBXSEVSRSBrZXkgPSA/IExJTUlUIDEiLFthXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMucm93cy5sZW5ndGg/Yy5yb3dzLml0ZW0oMCkudmFsdWU6bnVsbDtkJiYoZD1lLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoZCkpLGIoZCl9LGZ1bmN0aW9uKGEsYil7ZChiKX0pfSl9KS5jYXRjaChkKX0pO3JldHVybiBoKGQsYiksZH1mdW5jdGlvbiBWKGEsYil7dmFyIGM9dGhpcyxkPW5ldyB2YShmdW5jdGlvbihiLGQpe2MucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGU9Yy5fZGJJbmZvO2UuZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24oYyl7VChjLGUsIlNFTEVDVCAqIEZST00gIitlLnN0b3JlTmFtZSxbXSxmdW5jdGlvbihjLGQpe2Zvcih2YXIgZj1kLnJvd3MsZz1mLmxlbmd0aCxoPTA7aDxnO2grKyl7dmFyIGk9Zi5pdGVtKGgpLGo9aS52YWx1ZTtpZihqJiYoaj1lLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoaikpLHZvaWQgMCE9PShqPWEoaixpLmtleSxoKzEpKSlyZXR1cm4gdm9pZCBiKGopfWIoKX0sZnVuY3Rpb24oYSxiKXtkKGIpfSl9KX0pLmNhdGNoKGQpfSk7cmV0dXJuIGgoZCxiKSxkfWZ1bmN0aW9uIFcoYSxiLGMsZCl7dmFyIGU9dGhpczthPWooYSk7dmFyIGY9bmV3IHZhKGZ1bmN0aW9uKGYsZyl7ZS5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXt2b2lkIDA9PT1iJiYoYj1udWxsKTt2YXIgaD1iLGk9ZS5fZGJJbmZvO2kuc2VyaWFsaXplci5zZXJpYWxpemUoYixmdW5jdGlvbihiLGope2o/ZyhqKTppLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGMpe1QoYyxpLCJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPICIraS5zdG9yZU5hbWUrIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICg/LCA/KSIsW2EsYl0sZnVuY3Rpb24oKXtmKGgpfSxmdW5jdGlvbihhLGIpe2coYil9KX0sZnVuY3Rpb24oYil7aWYoYi5jb2RlPT09Yi5RVU9UQV9FUlIpe2lmKGQ+MClyZXR1cm4gdm9pZCBmKFcuYXBwbHkoZSxbYSxoLGMsZC0xXSkpO2coYil9fSl9KX0pLmNhdGNoKGcpfSk7cmV0dXJuIGgoZixjKSxmfWZ1bmN0aW9uIFgoYSxiLGMpe3JldHVybiBXLmFwcGx5KHRoaXMsW2EsYixjLDFdKX1mdW5jdGlvbiBZKGEsYil7dmFyIGM9dGhpczthPWooYSk7dmFyIGQ9bmV3IHZhKGZ1bmN0aW9uKGIsZCl7Yy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgZT1jLl9kYkluZm87ZS5kYi50cmFuc2FjdGlvbihmdW5jdGlvbihjKXtUKGMsZSwiREVMRVRFIEZST00gIitlLnN0b3JlTmFtZSsiIFdIRVJFIGtleSA9ID8iLFthXSxmdW5jdGlvbigpe2IoKX0sZnVuY3Rpb24oYSxiKXtkKGIpfSl9KX0pLmNhdGNoKGQpfSk7cmV0dXJuIGgoZCxiKSxkfWZ1bmN0aW9uIFooYSl7dmFyIGI9dGhpcyxjPW5ldyB2YShmdW5jdGlvbihhLGMpe2IucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGQ9Yi5fZGJJbmZvO2QuZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24oYil7VChiLGQsIkRFTEVURSBGUk9NICIrZC5zdG9yZU5hbWUsW10sZnVuY3Rpb24oKXthKCl9LGZ1bmN0aW9uKGEsYil7YyhiKX0pfSl9KS5jYXRjaChjKX0pO3JldHVybiBoKGMsYSksY31mdW5jdGlvbiAkKGEpe3ZhciBiPXRoaXMsYz1uZXcgdmEoZnVuY3Rpb24oYSxjKXtiLnJlYWR5KCkudGhlbihmdW5jdGlvbigpe3ZhciBkPWIuX2RiSW5mbztkLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGIpe1QoYixkLCJTRUxFQ1QgQ09VTlQoa2V5KSBhcyBjIEZST00gIitkLnN0b3JlTmFtZSxbXSxmdW5jdGlvbihiLGMpe3ZhciBkPWMucm93cy5pdGVtKDApLmM7YShkKX0sZnVuY3Rpb24oYSxiKXtjKGIpfSl9KX0pLmNhdGNoKGMpfSk7cmV0dXJuIGgoYyxhKSxjfWZ1bmN0aW9uIF8oYSxiKXt2YXIgYz10aGlzLGQ9bmV3IHZhKGZ1bmN0aW9uKGIsZCl7Yy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgZT1jLl9kYkluZm87ZS5kYi50cmFuc2FjdGlvbihmdW5jdGlvbihjKXtUKGMsZSwiU0VMRUNUIGtleSBGUk9NICIrZS5zdG9yZU5hbWUrIiBXSEVSRSBpZCA9ID8gTElNSVQgMSIsW2ErMV0sZnVuY3Rpb24oYSxjKXt2YXIgZD1jLnJvd3MubGVuZ3RoP2Mucm93cy5pdGVtKDApLmtleTpudWxsO2IoZCl9LGZ1bmN0aW9uKGEsYil7ZChiKX0pfSl9KS5jYXRjaChkKX0pO3JldHVybiBoKGQsYiksZH1mdW5jdGlvbiBhYShhKXt2YXIgYj10aGlzLGM9bmV3IHZhKGZ1bmN0aW9uKGEsYyl7Yi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgZD1iLl9kYkluZm87ZC5kYi50cmFuc2FjdGlvbihmdW5jdGlvbihiKXtUKGIsZCwiU0VMRUNUIGtleSBGUk9NICIrZC5zdG9yZU5hbWUsW10sZnVuY3Rpb24oYixjKXtmb3IodmFyIGQ9W10sZT0wO2U8Yy5yb3dzLmxlbmd0aDtlKyspZC5wdXNoKGMucm93cy5pdGVtKGUpLmtleSk7YShkKX0sZnVuY3Rpb24oYSxiKXtjKGIpfSl9KX0pLmNhdGNoKGMpfSk7cmV0dXJuIGgoYyxhKSxjfWZ1bmN0aW9uIGJhKGEpe3JldHVybiBuZXcgdmEoZnVuY3Rpb24oYixjKXthLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGQpe2QuZXhlY3V0ZVNxbCgiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZSA8PiAnX19XZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fJyIsW10sZnVuY3Rpb24oYyxkKXtmb3IodmFyIGU9W10sZj0wO2Y8ZC5yb3dzLmxlbmd0aDtmKyspZS5wdXNoKGQucm93cy5pdGVtKGYpLm5hbWUpO2Ioe2RiOmEsc3RvcmVOYW1lczplfSl9LGZ1bmN0aW9uKGEsYil7YyhiKX0pfSxmdW5jdGlvbihhKXtjKGEpfSl9KX1mdW5jdGlvbiBjYShhLGIpe2I9ay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGM9dGhpcy5jb25maWcoKTthPSJmdW5jdGlvbiIhPXR5cGVvZiBhJiZhfHx7fSxhLm5hbWV8fChhLm5hbWU9YS5uYW1lfHxjLm5hbWUsYS5zdG9yZU5hbWU9YS5zdG9yZU5hbWV8fGMuc3RvcmVOYW1lKTt2YXIgZCxlPXRoaXM7cmV0dXJuIGQ9YS5uYW1lP25ldyB2YShmdW5jdGlvbihiKXt2YXIgZDtkPWEubmFtZT09PWMubmFtZT9lLl9kYkluZm8uZGI6b3BlbkRhdGFiYXNlKGEubmFtZSwiIiwiIiwwKSxiKGEuc3RvcmVOYW1lP3tkYjpkLHN0b3JlTmFtZXM6W2Euc3RvcmVOYW1lXX06YmEoZCkpfSkudGhlbihmdW5jdGlvbihhKXtyZXR1cm4gbmV3IHZhKGZ1bmN0aW9uKGIsYyl7YS5kYi50cmFuc2FjdGlvbihmdW5jdGlvbihkKXtmdW5jdGlvbiBlKGEpe3JldHVybiBuZXcgdmEoZnVuY3Rpb24oYixjKXtkLmV4ZWN1dGVTcWwoIkRST1AgVEFCTEUgSUYgRVhJU1RTICIrYSxbXSxmdW5jdGlvbigpe2IoKX0sZnVuY3Rpb24oYSxiKXtjKGIpfSl9KX1mb3IodmFyIGY9W10sZz0wLGg9YS5zdG9yZU5hbWVzLmxlbmd0aDtnPGg7ZysrKWYucHVzaChlKGEuc3RvcmVOYW1lc1tnXSkpO3ZhLmFsbChmKS50aGVuKGZ1bmN0aW9uKCl7YigpfSkuY2F0Y2goZnVuY3Rpb24oYSl7YyhhKX0pfSxmdW5jdGlvbihhKXtjKGEpfSl9KX0pOnZhLnJlamVjdCgiSW52YWxpZCBhcmd1bWVudHMiKSxoKGQsYiksZH1mdW5jdGlvbiBkYSgpe3RyeXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGxvY2FsU3RvcmFnZSYmInNldEl0ZW0iaW4gbG9jYWxTdG9yYWdlJiYhIWxvY2FsU3RvcmFnZS5zZXRJdGVtfWNhdGNoKGEpe3JldHVybiExfX1mdW5jdGlvbiBlYShhLGIpe3ZhciBjPWEubmFtZSsiLyI7cmV0dXJuIGEuc3RvcmVOYW1lIT09Yi5zdG9yZU5hbWUmJihjKz1hLnN0b3JlTmFtZSsiLyIpLGN9ZnVuY3Rpb24gZmEoKXt2YXIgYT0iX2xvY2FsZm9yYWdlX3N1cHBvcnRfdGVzdCI7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShhLCEwKSxsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKSwhMX1jYXRjaChhKXtyZXR1cm4hMH19ZnVuY3Rpb24gZ2EoKXtyZXR1cm4hZmEoKXx8bG9jYWxTdG9yYWdlLmxlbmd0aD4wfWZ1bmN0aW9uIGhhKGEpe3ZhciBiPXRoaXMsYz17fTtpZihhKWZvcih2YXIgZCBpbiBhKWNbZF09YVtkXTtyZXR1cm4gYy5rZXlQcmVmaXg9ZWEoYSxiLl9kZWZhdWx0Q29uZmlnKSxnYSgpPyhiLl9kYkluZm89YyxjLnNlcmlhbGl6ZXI9VmEsdmEucmVzb2x2ZSgpKTp2YS5yZWplY3QoKX1mdW5jdGlvbiBpYShhKXt2YXIgYj10aGlzLGM9Yi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXtmb3IodmFyIGE9Yi5fZGJJbmZvLmtleVByZWZpeCxjPWxvY2FsU3RvcmFnZS5sZW5ndGgtMTtjPj0wO2MtLSl7dmFyIGQ9bG9jYWxTdG9yYWdlLmtleShjKTswPT09ZC5pbmRleE9mKGEpJiZsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShkKX19KTtyZXR1cm4gaChjLGEpLGN9ZnVuY3Rpb24gamEoYSxiKXt2YXIgYz10aGlzO2E9aihhKTt2YXIgZD1jLnJlYWR5KCkudGhlbihmdW5jdGlvbigpe3ZhciBiPWMuX2RiSW5mbyxkPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGIua2V5UHJlZml4K2EpO3JldHVybiBkJiYoZD1iLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoZCkpLGR9KTtyZXR1cm4gaChkLGIpLGR9ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz10aGlzLGQ9Yy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXtmb3IodmFyIGI9Yy5fZGJJbmZvLGQ9Yi5rZXlQcmVmaXgsZT1kLmxlbmd0aCxmPWxvY2FsU3RvcmFnZS5sZW5ndGgsZz0xLGg9MDtoPGY7aCsrKXt2YXIgaT1sb2NhbFN0b3JhZ2Uua2V5KGgpO2lmKDA9PT1pLmluZGV4T2YoZCkpe3ZhciBqPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGkpO2lmKGomJihqPWIuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShqKSksdm9pZCAwIT09KGo9YShqLGkuc3Vic3RyaW5nKGUpLGcrKykpKXJldHVybiBqfX19KTtyZXR1cm4gaChkLGIpLGR9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz10aGlzLGQ9Yy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgYixkPWMuX2RiSW5mbzt0cnl7Yj1sb2NhbFN0b3JhZ2Uua2V5KGEpfWNhdGNoKGEpe2I9bnVsbH1yZXR1cm4gYiYmKGI9Yi5zdWJzdHJpbmcoZC5rZXlQcmVmaXgubGVuZ3RoKSksYn0pO3JldHVybiBoKGQsYiksZH1mdW5jdGlvbiBtYShhKXt2YXIgYj10aGlzLGM9Yi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXtmb3IodmFyIGE9Yi5fZGJJbmZvLGM9bG9jYWxTdG9yYWdlLmxlbmd0aCxkPVtdLGU9MDtlPGM7ZSsrKXt2YXIgZj1sb2NhbFN0b3JhZ2Uua2V5KGUpOzA9PT1mLmluZGV4T2YoYS5rZXlQcmVmaXgpJiZkLnB1c2goZi5zdWJzdHJpbmcoYS5rZXlQcmVmaXgubGVuZ3RoKSl9cmV0dXJuIGR9KTtyZXR1cm4gaChjLGEpLGN9ZnVuY3Rpb24gbmEoYSl7dmFyIGI9dGhpcyxjPWIua2V5cygpLnRoZW4oZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofSk7cmV0dXJuIGgoYyxhKSxjfWZ1bmN0aW9uIG9hKGEsYil7dmFyIGM9dGhpczthPWooYSk7dmFyIGQ9Yy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgYj1jLl9kYkluZm87bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYi5rZXlQcmVmaXgrYSl9KTtyZXR1cm4gaChkLGIpLGR9ZnVuY3Rpb24gcGEoYSxiLGMpe3ZhciBkPXRoaXM7YT1qKGEpO3ZhciBlPWQucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7dm9pZCAwPT09YiYmKGI9bnVsbCk7dmFyIGM9YjtyZXR1cm4gbmV3IHZhKGZ1bmN0aW9uKGUsZil7dmFyIGc9ZC5fZGJJbmZvO2cuc2VyaWFsaXplci5zZXJpYWxpemUoYixmdW5jdGlvbihiLGQpe2lmKGQpZihkKTtlbHNlIHRyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShnLmtleVByZWZpeCthLGIpLGUoYyl9Y2F0Y2goYSl7IlF1b3RhRXhjZWVkZWRFcnJvciIhPT1hLm5hbWUmJiJOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRCIhPT1hLm5hbWV8fGYoYSksZihhKX19KX0pfSk7cmV0dXJuIGgoZSxjKSxlfWZ1bmN0aW9uIHFhKGEsYil7aWYoYj1rLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPSJmdW5jdGlvbiIhPXR5cGVvZiBhJiZhfHx7fSwhYS5uYW1lKXt2YXIgYz10aGlzLmNvbmZpZygpO2EubmFtZT1hLm5hbWV8fGMubmFtZSxhLnN0b3JlTmFtZT1hLnN0b3JlTmFtZXx8Yy5zdG9yZU5hbWV9dmFyIGQsZT10aGlzO3JldHVybiBkPWEubmFtZT9uZXcgdmEoZnVuY3Rpb24oYil7YihhLnN0b3JlTmFtZT9lYShhLGUuX2RlZmF1bHRDb25maWcpOmEubmFtZSsiLyIpfSkudGhlbihmdW5jdGlvbihhKXtmb3IodmFyIGI9bG9jYWxTdG9yYWdlLmxlbmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz1sb2NhbFN0b3JhZ2Uua2V5KGIpOzA9PT1jLmluZGV4T2YoYSkmJmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGMpfX0pOnZhLnJlamVjdCgiSW52YWxpZCBhcmd1bWVudHMiKSxoKGQsYiksZH1mdW5jdGlvbiByYShhLGIpe2FbYl09ZnVuY3Rpb24oKXt2YXIgYz1hcmd1bWVudHM7cmV0dXJuIGEucmVhZHkoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGFbYl0uYXBwbHkoYSxjKX0pfX1mdW5jdGlvbiBzYSgpe2Zvcih2YXIgYT0xO2E8YXJndW1lbnRzLmxlbmd0aDthKyspe3ZhciBiPWFyZ3VtZW50c1thXTtpZihiKWZvcih2YXIgYyBpbiBiKWIuaGFzT3duUHJvcGVydHkoYykmJigkYShiW2NdKT9hcmd1bWVudHNbMF1bY109YltjXS5zbGljZSgpOmFyZ3VtZW50c1swXVtjXT1iW2NdKX1yZXR1cm4gYXJndW1lbnRzWzBdfXZhciB0YT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGF9OmZ1bmN0aW9uKGEpe3JldHVybiBhJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZhLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZhIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgYX0sdWE9ZSgpOyJ1bmRlZmluZWQiPT10eXBlb2YgUHJvbWlzZSYmYSgzKTt2YXIgdmE9UHJvbWlzZSx3YT0ibG9jYWwtZm9yYWdlLWRldGVjdC1ibG9iLXN1cHBvcnQiLHhhPXZvaWQgMCx5YT17fSx6YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEFhPSJyZWFkb25seSIsQmE9InJlYWR3cml0ZSIsQ2E9e19kcml2ZXI6ImFzeW5jU3RvcmFnZSIsX2luaXRTdG9yYWdlOkMsX3N1cHBvcnQ6ZigpLGl0ZXJhdGU6RSxnZXRJdGVtOkQsc2V0SXRlbTpGLHJlbW92ZUl0ZW06RyxjbGVhcjpILGxlbmd0aDpJLGtleTpKLGtleXM6Syxkcm9wSW5zdGFuY2U6TH0sRGE9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLEVhPSJ+fmxvY2FsX2ZvcmFnZV90eXBlfiIsRmE9L15+fmxvY2FsX2ZvcmFnZV90eXBlfihbXn5dKyl+LyxHYT0iX19sZnNjX186IixIYT1HYS5sZW5ndGgsSWE9ImFyYmYiLEphPSJibG9iIixLYT0ic2kwOCIsTGE9InVpMDgiLE1hPSJ1aWM4IixOYT0ic2kxNiIsT2E9InNpMzIiLFBhPSJ1cjE2IixRYT0idWkzMiIsUmE9ImZsMzIiLFNhPSJmbDY0IixUYT1IYStJYS5sZW5ndGgsVWE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxWYT17c2VyaWFsaXplOlAsZGVzZXJpYWxpemU6USxzdHJpbmdUb0J1ZmZlcjpOLGJ1ZmZlclRvU3RyaW5nOk99LFdhPXtfZHJpdmVyOiJ3ZWJTUUxTdG9yYWdlIixfaW5pdFN0b3JhZ2U6Uyxfc3VwcG9ydDpNKCksaXRlcmF0ZTpWLGdldEl0ZW06VSxzZXRJdGVtOlgscmVtb3ZlSXRlbTpZLGNsZWFyOlosbGVuZ3RoOiQsa2V5Ol8sa2V5czphYSxkcm9wSW5zdGFuY2U6Y2F9LFhhPXtfZHJpdmVyOiJsb2NhbFN0b3JhZ2VXcmFwcGVyIixfaW5pdFN0b3JhZ2U6aGEsX3N1cHBvcnQ6ZGEoKSxpdGVyYXRlOmthLGdldEl0ZW06amEsc2V0SXRlbTpwYSxyZW1vdmVJdGVtOm9hLGNsZWFyOmlhLGxlbmd0aDpuYSxrZXk6bGEsa2V5czptYSxkcm9wSW5zdGFuY2U6cWF9LFlhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1ifHwibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBlb2YgYiYmaXNOYU4oYSkmJmlzTmFOKGIpfSxaYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPTA7ZDxjOyl7aWYoWWEoYVtkXSxiKSlyZXR1cm4hMDtkKyt9cmV0dXJuITF9LCRhPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9LF9hPXt9LGFiPXt9LGJiPXtJTkRFWEVEREI6Q2EsV0VCU1FMOldhLExPQ0FMU1RPUkFHRTpYYX0sY2I9W2JiLklOREVYRUREQi5fZHJpdmVyLGJiLldFQlNRTC5fZHJpdmVyLGJiLkxPQ0FMU1RPUkFHRS5fZHJpdmVyXSxkYj1bImRyb3BJbnN0YW5jZSJdLGViPVsiY2xlYXIiLCJnZXRJdGVtIiwiaXRlcmF0ZSIsImtleSIsImtleXMiLCJsZW5ndGgiLCJyZW1vdmVJdGVtIiwic2V0SXRlbSJdLmNvbmNhdChkYiksZmI9e2Rlc2NyaXB0aW9uOiIiLGRyaXZlcjpjYi5zbGljZSgpLG5hbWU6ImxvY2FsZm9yYWdlIixzaXplOjQ5ODA3MzYsc3RvcmVOYW1lOiJrZXl2YWx1ZXBhaXJzIix2ZXJzaW9uOjF9LGdiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXtkKHRoaXMsYSk7Zm9yKHZhciBjIGluIGJiKWlmKGJiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZT1iYltjXSxmPWUuX2RyaXZlcjt0aGlzW2NdPWYsX2FbZl18fHRoaXMuZGVmaW5lRHJpdmVyKGUpfXRoaXMuX2RlZmF1bHRDb25maWc9c2Eoe30sZmIpLHRoaXMuX2NvbmZpZz1zYSh7fSx0aGlzLl9kZWZhdWx0Q29uZmlnLGIpLHRoaXMuX2RyaXZlclNldD1udWxsLHRoaXMuX2luaXREcml2ZXI9bnVsbCx0aGlzLl9yZWFkeT0hMSx0aGlzLl9kYkluZm89bnVsbCx0aGlzLl93cmFwTGlicmFyeU1ldGhvZHNXaXRoUmVhZHkoKSx0aGlzLnNldERyaXZlcih0aGlzLl9jb25maWcuZHJpdmVyKS5jYXRjaChmdW5jdGlvbigpe30pfXJldHVybiBhLnByb3RvdHlwZS5jb25maWc9ZnVuY3Rpb24oYSl7aWYoIm9iamVjdCI9PT0odm9pZCAwPT09YT8idW5kZWZpbmVkIjp0YShhKSkpe2lmKHRoaXMuX3JlYWR5KXJldHVybiBuZXcgRXJyb3IoIkNhbid0IGNhbGwgY29uZmlnKCkgYWZ0ZXIgbG9jYWxmb3JhZ2UgaGFzIGJlZW4gdXNlZC4iKTtmb3IodmFyIGIgaW4gYSl7aWYoInN0b3JlTmFtZSI9PT1iJiYoYVtiXT1hW2JdLnJlcGxhY2UoL1xXL2csIl8iKSksInZlcnNpb24iPT09YiYmIm51bWJlciIhPXR5cGVvZiBhW2JdKXJldHVybiBuZXcgRXJyb3IoIkRhdGFiYXNlIHZlcnNpb24gbXVzdCBiZSBhIG51bWJlci4iKTt0aGlzLl9jb25maWdbYl09YVtiXX1yZXR1cm4hKCJkcml2ZXIiaW4gYSYmYS5kcml2ZXIpfHx0aGlzLnNldERyaXZlcih0aGlzLl9jb25maWcuZHJpdmVyKX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/dGhpcy5fY29uZmlnW2FdOnRoaXMuX2NvbmZpZ30sYS5wcm90b3R5cGUuZGVmaW5lRHJpdmVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1uZXcgdmEoZnVuY3Rpb24oYixjKXt0cnl7dmFyIGQ9YS5fZHJpdmVyLGU9bmV3IEVycm9yKCJDdXN0b20gZHJpdmVyIG5vdCBjb21wbGlhbnQ7IHNlZSBodHRwczovL21vemlsbGEuZ2l0aHViLmlvL2xvY2FsRm9yYWdlLyNkZWZpbmVkcml2ZXIiKTtpZighYS5fZHJpdmVyKXJldHVybiB2b2lkIGMoZSk7Zm9yKHZhciBmPWViLmNvbmNhdCgiX2luaXRTdG9yYWdlIiksZz0wLGk9Zi5sZW5ndGg7ZzxpO2crKyl7dmFyIGo9ZltnXTtpZigoIVphKGRiLGopfHxhW2pdKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGFbal0pcmV0dXJuIHZvaWQgYyhlKX0oZnVuY3Rpb24oKXtmb3IodmFyIGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9bmV3IEVycm9yKCJNZXRob2QgIithKyIgaXMgbm90IGltcGxlbWVudGVkIGJ5IHRoZSBjdXJyZW50IGRyaXZlciIpLGM9dmEucmVqZWN0KGIpO3JldHVybiBoKGMsYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0pLGN9fSxjPTAsZD1kYi5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9ZGJbY107YVtlXXx8KGFbZV09YihlKSl9fSkoKTt2YXIgaz1mdW5jdGlvbihjKXtfYVtkXSYmY29uc29sZS5pbmZvKCJSZWRlZmluaW5nIExvY2FsRm9yYWdlIGRyaXZlcjogIitkKSxfYVtkXT1hLGFiW2RdPWMsYigpfTsiX3N1cHBvcnQiaW4gYT9hLl9zdXBwb3J0JiYiZnVuY3Rpb24iPT10eXBlb2YgYS5fc3VwcG9ydD9hLl9zdXBwb3J0KCkudGhlbihrLGMpOmsoISFhLl9zdXBwb3J0KTprKCEwKX1jYXRjaChhKXtjKGEpfX0pO3JldHVybiBpKGQsYixjKSxkfSxhLnByb3RvdHlwZS5kcml2ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJpdmVyfHxudWxsfSxhLnByb3RvdHlwZS5nZXREcml2ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV9hW2FdP3ZhLnJlc29sdmUoX2FbYV0pOnZhLnJlamVjdChuZXcgRXJyb3IoIkRyaXZlciBub3QgZm91bmQuIikpO3JldHVybiBpKGQsYixjKSxkfSxhLnByb3RvdHlwZS5nZXRTZXJpYWxpemVyPWZ1bmN0aW9uKGEpe3ZhciBiPXZhLnJlc29sdmUoVmEpO3JldHVybiBpKGIsYSksYn0sYS5wcm90b3R5cGUucmVhZHk9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWIuX2RyaXZlclNldC50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT1iLl9yZWFkeSYmKGIuX3JlYWR5PWIuX2luaXREcml2ZXIoKSksYi5fcmVhZHl9KTtyZXR1cm4gaShjLGEsYSksY30sYS5wcm90b3R5cGUuc2V0RHJpdmVyPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKCl7Zy5fY29uZmlnLmRyaXZlcj1nLmRyaXZlcigpfWZ1bmN0aW9uIGUoYSl7cmV0dXJuIGcuX2V4dGVuZChhKSxkKCksZy5fcmVhZHk9Zy5faW5pdFN0b3JhZ2UoZy5fY29uZmlnKSxnLl9yZWFkeX1mdW5jdGlvbiBmKGEpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtmb3IoO2M8YS5sZW5ndGg7KXt2YXIgZj1hW2NdO3JldHVybiBjKyssZy5fZGJJbmZvPW51bGwsZy5fcmVhZHk9bnVsbCxnLmdldERyaXZlcihmKS50aGVuKGUpLmNhdGNoKGIpfWQoKTt2YXIgaD1uZXcgRXJyb3IoIk5vIGF2YWlsYWJsZSBzdG9yYWdlIG1ldGhvZCBmb3VuZC4iKTtyZXR1cm4gZy5fZHJpdmVyU2V0PXZhLnJlamVjdChoKSxnLl9kcml2ZXJTZXR9dmFyIGM9MDtyZXR1cm4gYigpfX12YXIgZz10aGlzOyRhKGEpfHwoYT1bYV0pO3ZhciBoPXRoaXMuX2dldFN1cHBvcnRlZERyaXZlcnMoYSksaj1udWxsIT09dGhpcy5fZHJpdmVyU2V0P3RoaXMuX2RyaXZlclNldC5jYXRjaChmdW5jdGlvbigpe3JldHVybiB2YS5yZXNvbHZlKCl9KTp2YS5yZXNvbHZlKCk7cmV0dXJuIHRoaXMuX2RyaXZlclNldD1qLnRoZW4oZnVuY3Rpb24oKXt2YXIgYT1oWzBdO3JldHVybiBnLl9kYkluZm89bnVsbCxnLl9yZWFkeT1udWxsLGcuZ2V0RHJpdmVyKGEpLnRoZW4oZnVuY3Rpb24oYSl7Zy5fZHJpdmVyPWEuX2RyaXZlcixkKCksZy5fd3JhcExpYnJhcnlNZXRob2RzV2l0aFJlYWR5KCksZy5faW5pdERyaXZlcj1mKGgpfSl9KS5jYXRjaChmdW5jdGlvbigpe2QoKTt2YXIgYT1uZXcgRXJyb3IoIk5vIGF2YWlsYWJsZSBzdG9yYWdlIG1ldGhvZCBmb3VuZC4iKTtyZXR1cm4gZy5fZHJpdmVyU2V0PXZhLnJlamVjdChhKSxnLl9kcml2ZXJTZXR9KSxpKHRoaXMuX2RyaXZlclNldCxiLGMpLHRoaXMuX2RyaXZlclNldH0sYS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuISFhYlthXX0sYS5wcm90b3R5cGUuX2V4dGVuZD1mdW5jdGlvbihhKXtzYSh0aGlzLGEpfSxhLnByb3RvdHlwZS5fZ2V0U3VwcG9ydGVkRHJpdmVycz1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9YVtjXTt0aGlzLnN1cHBvcnRzKGUpJiZiLnB1c2goZSl9cmV0dXJuIGJ9LGEucHJvdG90eXBlLl93cmFwTGlicmFyeU1ldGhvZHNXaXRoUmVhZHk9ZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxiPWViLmxlbmd0aDthPGI7YSsrKXJhKHRoaXMsZWJbYV0pfSxhLnByb3RvdHlwZS5jcmVhdGVJbnN0YW5jZT1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGEoYil9LGF9KCksaGI9bmV3IGdiO2IuZXhwb3J0cz1oYn0sezM6M31dfSx7fSxbNF0pKDQpfSk7Cn07CgptdXJvbS5pbnN0YWxsVW5pY29kZUJhc2U2NCA9IGZ1bmN0aW9uKCkKewovKgoJaHR0cHM6Ly9naXRodWIuY29tL3NvbGRlcmpzL1RleHRFbmNvZGVyTGl0ZQoJQXBhY2hlIDIuMAoqLwpmdW5jdGlvbiBUZXh0RW5jb2RlckxpdGUoKXt9ZnVuY3Rpb24gVGV4dERlY29kZXJMaXRlKCl7fShmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB1dGY4VG9CeXRlcyhzdHJpbmcsdW5pdHMpe3VuaXRzPXVuaXRzfHxJbmZpbml0eTt2YXIgY29kZVBvaW50O3ZhciBsZW5ndGg9c3RyaW5nLmxlbmd0aDt2YXIgbGVhZFN1cnJvZ2F0ZT1udWxsO3ZhciBieXRlcz1bXTt2YXIgaT0wO2Zvcig7aTxsZW5ndGg7aSsrKXtjb2RlUG9pbnQ9c3RyaW5nLmNoYXJDb2RlQXQoaSk7aWYoY29kZVBvaW50PjU1Mjk1JiZjb2RlUG9pbnQ8NTczNDQpe2lmKGxlYWRTdXJyb2dhdGUpe2lmKGNvZGVQb2ludDw1NjMyMCl7aWYoKHVuaXRzLT0zKT4tMSlieXRlcy5wdXNoKDIzOSwxOTEsMTg5KTtsZWFkU3Vycm9nYXRlPWNvZGVQb2ludDtjb250aW51ZX1lbHNle2NvZGVQb2ludD1sZWFkU3Vycm9nYXRlLTU1Mjk2PDwxMHxjb2RlUG9pbnQtNTYzMjB8NjU1MzY7bGVhZFN1cnJvZ2F0ZT1udWxsfX1lbHNle2lmKGNvZGVQb2ludD41NjMxOSl7aWYoKHVuaXRzLT0zKT4tMSlieXRlcy5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1lbHNlIGlmKGkrMT09PWxlbmd0aCl7aWYoKHVuaXRzLT0zKT4tMSlieXRlcy5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1lbHNle2xlYWRTdXJyb2dhdGU9Y29kZVBvaW50O2NvbnRpbnVlfX19ZWxzZSBpZihsZWFkU3Vycm9nYXRlKXtpZigodW5pdHMtPTMpPi0xKWJ5dGVzLnB1c2goMjM5LDE5MSwxODkpO2xlYWRTdXJyb2dhdGU9bnVsbH1pZihjb2RlUG9pbnQ8MTI4KXtpZigodW5pdHMtPTEpPDApYnJlYWs7Ynl0ZXMucHVzaChjb2RlUG9pbnQpfWVsc2UgaWYoY29kZVBvaW50PDIwNDgpe2lmKCh1bml0cy09Mik8MClicmVhaztieXRlcy5wdXNoKGNvZGVQb2ludD4+NnwxOTIsY29kZVBvaW50JjYzfDEyOCl9ZWxzZSBpZihjb2RlUG9pbnQ8NjU1MzYpe2lmKCh1bml0cy09Myk8MClicmVhaztieXRlcy5wdXNoKGNvZGVQb2ludD4+MTJ8MjI0LGNvZGVQb2ludD4+NiY2M3wxMjgsY29kZVBvaW50JjYzfDEyOCl9ZWxzZSBpZihjb2RlUG9pbnQ8MjA5NzE1Mil7aWYoKHVuaXRzLT00KTwwKWJyZWFrO2J5dGVzLnB1c2goY29kZVBvaW50Pj4xOHwyNDAsY29kZVBvaW50Pj4xMiY2M3wxMjgsY29kZVBvaW50Pj42JjYzfDEyOCxjb2RlUG9pbnQmNjN8MTI4KX1lbHNle3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iil9fXJldHVybiBieXRlc31mdW5jdGlvbiB1dGY4U2xpY2UoYnVmLHN0YXJ0LGVuZCl7dmFyIHJlcz0iIjt2YXIgdG1wPSIiO2VuZD1NYXRoLm1pbihidWYubGVuZ3RoLGVuZHx8SW5maW5pdHkpO3N0YXJ0PXN0YXJ0fHwwO2Zvcih2YXIgaT1zdGFydDtpPGVuZDtpKyspe2lmKGJ1ZltpXTw9MTI3KXtyZXMrPWRlY29kZVV0ZjhDaGFyKHRtcCkrU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pO3RtcD0iIn1lbHNle3RtcCs9IiUiK2J1ZltpXS50b1N0cmluZygxNil9fXJldHVybiByZXMrZGVjb2RlVXRmOENoYXIodG1wKX1mdW5jdGlvbiBkZWNvZGVVdGY4Q2hhcihzdHIpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cil9Y2F0Y2goZXJyKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NTUzMyl9fVRleHRFbmNvZGVyTGl0ZS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHN0cil7dmFyIHJlc3VsdDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBVaW50OEFycmF5KXtyZXN1bHQ9dXRmOFRvQnl0ZXMoc3RyKX1lbHNle3Jlc3VsdD1uZXcgVWludDhBcnJheSh1dGY4VG9CeXRlcyhzdHIpKX1yZXR1cm4gcmVzdWx0fTtUZXh0RGVjb2RlckxpdGUucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihieXRlcyl7cmV0dXJuIHV0ZjhTbGljZShieXRlcywwLGJ5dGVzLmxlbmd0aCl9fSkoKTtpZih0eXBlb2YgbW9kdWxlPT09Im9iamVjdCImJm1vZHVsZSl7bW9kdWxlLmV4cG9ydHMuVGV4dERlY29kZXJMaXRlPVRleHREZWNvZGVyTGl0ZTttb2R1bGUuZXhwb3J0cy5UZXh0RW5jb2RlckxpdGU9VGV4dEVuY29kZXJMaXRlfQovKgoJaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzCiAJTUlUCiovCihmdW5jdGlvbihyKXtpZih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPXIoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10scil9ZWxzZXt2YXIgZTtpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2U9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtlPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe2U9c2VsZn1lbHNle2U9dGhpc31lLmJhc2U2NGpzPXIoKX19KShmdW5jdGlvbigpe3ZhciByLGUsbjtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGYsaSl7aWYoIW5bZl0pe2lmKCFlW2ZdKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmdSlyZXR1cm4gdShmLCEwKTtpZihhKXJldHVybiBhKGYsITApO3ZhciB2PW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2YrIiciKTt0aHJvdyB2LmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLHZ9dmFyIGQ9bltmXT17ZXhwb3J0czp7fX07ZVtmXVswXS5jYWxsKGQuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ZdWzFdW3JdO3JldHVybiBvKG58fHIpfSxkLGQuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltmXS5leHBvcnRzfWZvcih2YXIgYT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7Zjx0Lmxlbmd0aDtmKyspbyh0W2ZdKTtyZXR1cm4gb31yZXR1cm4gcn0oKSh7Ii8iOltmdW5jdGlvbihyLGUsbil7InVzZSBzdHJpY3QiO24uYnl0ZUxlbmd0aD1kO24udG9CeXRlQXJyYXk9aDtuLmZyb21CeXRlQXJyYXk9cDt2YXIgdD1bXTt2YXIgbz1bXTt2YXIgYT10eXBlb2YgVWludDhBcnJheSE9PSJ1bmRlZmluZWQiP1VpbnQ4QXJyYXk6QXJyYXk7dmFyIGY9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iO2Zvcih2YXIgaT0wLHU9Zi5sZW5ndGg7aTx1OysraSl7dFtpXT1mW2ldO29bZi5jaGFyQ29kZUF0KGkpXT1pfW9bIi0iLmNoYXJDb2RlQXQoMCldPTYyO29bIl8iLmNoYXJDb2RlQXQoMCldPTYzO2Z1bmN0aW9uIHYocil7dmFyIGU9ci5sZW5ndGg7aWYoZSU0PjApe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpfXZhciBuPXIuaW5kZXhPZigiPSIpO2lmKG49PT0tMSluPWU7dmFyIHQ9bj09PWU/MDo0LW4lNDtyZXR1cm5bbix0XX1mdW5jdGlvbiBkKHIpe3ZhciBlPXYocik7dmFyIG49ZVswXTt2YXIgdD1lWzFdO3JldHVybihuK3QpKjMvNC10fWZ1bmN0aW9uIGMocixlLG4pe3JldHVybihlK24pKjMvNC1ufWZ1bmN0aW9uIGgocil7dmFyIGU7dmFyIG49dihyKTt2YXIgdD1uWzBdO3ZhciBmPW5bMV07dmFyIGk9bmV3IGEoYyhyLHQsZikpO3ZhciB1PTA7dmFyIGQ9Zj4wP3QtNDp0O2Zvcih2YXIgaD0wO2g8ZDtoKz00KXtlPW9bci5jaGFyQ29kZUF0KGgpXTw8MTh8b1tyLmNoYXJDb2RlQXQoaCsxKV08PDEyfG9bci5jaGFyQ29kZUF0KGgrMildPDw2fG9bci5jaGFyQ29kZUF0KGgrMyldO2lbdSsrXT1lPj4xNiYyNTU7aVt1KytdPWU+PjgmMjU1O2lbdSsrXT1lJjI1NX1pZihmPT09Mil7ZT1vW3IuY2hhckNvZGVBdChoKV08PDJ8b1tyLmNoYXJDb2RlQXQoaCsxKV0+PjQ7aVt1KytdPWUmMjU1fWlmKGY9PT0xKXtlPW9bci5jaGFyQ29kZUF0KGgpXTw8MTB8b1tyLmNoYXJDb2RlQXQoaCsxKV08PDR8b1tyLmNoYXJDb2RlQXQoaCsyKV0+PjI7aVt1KytdPWU+PjgmMjU1O2lbdSsrXT1lJjI1NX1yZXR1cm4gaX1mdW5jdGlvbiBzKHIpe3JldHVybiB0W3I+PjE4JjYzXSt0W3I+PjEyJjYzXSt0W3I+PjYmNjNdK3RbciY2M119ZnVuY3Rpb24gbChyLGUsbil7dmFyIHQ7dmFyIG89W107Zm9yKHZhciBhPWU7YTxuO2ErPTMpe3Q9KHJbYV08PDE2JjE2NzExNjgwKSsoclthKzFdPDw4JjY1MjgwKSsoclthKzJdJjI1NSk7by5wdXNoKHModCkpfXJldHVybiBvLmpvaW4oIiIpfWZ1bmN0aW9uIHAocil7dmFyIGU7dmFyIG49ci5sZW5ndGg7dmFyIG89biUzO3ZhciBhPVtdO3ZhciBmPTE2MzgzO2Zvcih2YXIgaT0wLHU9bi1vO2k8dTtpKz1mKXthLnB1c2gobChyLGksaStmPnU/dTppK2YpKX1pZihvPT09MSl7ZT1yW24tMV07YS5wdXNoKHRbZT4+Ml0rdFtlPDw0JjYzXSsiPT0iKX1lbHNlIGlmKG89PT0yKXtlPShyW24tMl08PDgpK3Jbbi0xXTthLnB1c2godFtlPj4xMF0rdFtlPj40JjYzXSt0W2U8PDImNjNdKyI9Iil9cmV0dXJuIGEuam9pbigiIil9fSx7fV19LHt9LFtdKSgiLyIpfSk7Ci8qCiAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9ydS9kb2NzL1dlYi9BUEkvV2luZG93QmFzZTY0L0Jhc2U2NF9lbmNvZGluZ19hbmRfZGVjb2RpbmcKKi8KICAgIG11cm9tLmJ0b2EgPSBmdW5jdGlvbihzdHIpCiAgICB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3ICh0eXBlb2YgVGV4dEVuY29kZXIgPT09ICJ1bmRlZmluZWQiID8gVGV4dEVuY29kZXJMaXRlIDogVGV4dEVuY29kZXIpKCJ1dGYtOCIpLmVuY29kZShzdHIpOwogICAgICAgIHJldHVybiBiYXNlNjRqcy5mcm9tQnl0ZUFycmF5KGJ5dGVzKTsKICAgIH07CiAgICBtdXJvbS5hdG9iID0gZnVuY3Rpb24oc3RyKQogICAgewogICAgICAgIHZhciBieXRlcyA9IGJhc2U2NGpzLnRvQnl0ZUFycmF5KHN0cik7CiAgICAgICAgcmV0dXJuIG5ldyAodHlwZW9mIFRleHREZWNvZGVyID09PSAidW5kZWZpbmVkIiA/IFRleHREZWNvZGVyTGl0ZSA6IFRleHREZWNvZGVyKSgidXRmLTgiKS5kZWNvZGUoYnl0ZXMpOwogICAgfTsKfTsKCm11cm9tLm1vZHVsZVByb3BlcnRpZXMgPSBmdW5jdGlvbihpZCkKewogICAgdmFyIG0gPSBtdXJvbS5tb2R1bGVzW2lkXTsKICAgIHJldHVybiAodHlwZW9mIG1bMl0gIT0gInVuZGVmaW5lZCIpID8gbVsyXSA6IHt9Owp9OwoKbXVyb20ubW9kdWxlU3RhdHVzID0gZnVuY3Rpb24oaWQpCnsKICAgIHZhciBwcm9wID0gbXVyb20ubW9kdWxlUHJvcGVydGllcyhpZCk7CiAgICBpZiAoInN0YXR1cyIgaW4gcHJvcCkKICAgIHsKICAgICAgICByZXR1cm4gcHJvcFsic3RhdHVzIl07CiAgICB9CiAgICAvLyBTdGF0dXMgPT0gdHJ1ZSBpZiBleHBsaWNpdCByZWNvcmQgaXMgYWJzZW50LgogICAgcmV0dXJuIHRydWU7Cn07CgptdXJvbS5zdGFydCA9IGZ1bmN0aW9uKCkKewogICAgY29uc29sZS5kZWJ1ZygiT3ZlcnJpZGUgbXVyb20uc3RhcnQoKSBmdW5jdGlvbiB0byBiZSBub3RpZmllZCB3aGVuIGFsbCBtb2R1bGVzIHdlcmUgbG9hZGVkIik7Cn0KCm11cm9tLmxvYWRNb2R1bGVzID0gZnVuY3Rpb24oKQp7CiAgICAvLyBTa2lwIGAwYCBtb2R1bGUgYmVjYXVzZSBpdCdzIHVzLgogICAgZm9yICh2YXIgaSA9IDE7IGkgPCBtdXJvbS5tb2R1bGVzLmxlbmd0aDsgKytpKQogICAgewogICAgICAgIHZhciBtb2R1bGUgPSBtdXJvbS5tb2R1bGVzW2ldOwogICAgICAgIHZhciBuYW1lID0gbW9kdWxlWzBdOwogICAgICAgIHZhciBjb2RlID0gbXVyb20uYXRvYihtb2R1bGVbMV0pOwogICAgICAgIGlmIChtdXJvbS5tb2R1bGVTdGF0dXMoaSkgPT0gZmFsc2UpCiAgICAgICAgewogICAgICAgICAgICAvL2NvbnNvbGUud2FybigiU2tpcCBsb2FkaW5nICciICsgbmFtZSArICInIG1vZHVsZSBiZWNhdXNlIGl0J3MgdHVybmVkIG9mZiIpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAvLyBOT1RFIERvIG5vdCBjYXRjaCBlcnJvciB0byBzZWUgZXJyb3IgbGluZSBudW1iZXJzIGluIGRlYnVnZ2VyIGNvbnNvbGUuCiAgICAgICAgICAgIGV2YWwoY29kZSk7CiAgICAgICAgICAgIC8qCiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBldmFsKGNvZGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgbG9hZCAnIiArIG5hbWUgKyAiJyBtb2R1bGU6ICciICsgZSArICInIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgKi8KICAgICAgICB9CiAgICB9CiAgICAKICAgIG11cm9tLnN0YXJ0KCk7Cn07CgptdXJvbS5sb2FkSW5kZXhlZERCTW9kdWxlcyA9IGZ1bmN0aW9uKGNvbXBsZXRpb25IYW5kbGVyKQp7CiAgICAvLyBTZWUgaWYgSW5kZXhlZERCIGhhcyBtb2R1bGVzLgogICAgLy8gSW5kZXhlZERCIG1vZHVsZXMgb3ZlcnJpZGUgdGhvc2UgY29taW5nIGZyb20gSFRNTC4KICAgIGxvY2FsZm9yYWdlLmNvbmZpZyh7IG5hbWU6ICJtdXJvbSIgfSk7CiAgICBsb2NhbGZvcmFnZS5nZXRJdGVtKCJtb2R1bGVzIiwgZnVuY3Rpb24oZXJyb3IsIG1vZHVsZXMpIHsKICAgICAgICBpZiAobW9kdWxlcykKICAgICAgICB7CiAgICAgICAgICAgIG11cm9tLm1vZHVsZXMgPSBtb2R1bGVzOwogICAgICAgICAgICBjb25zb2xlLmRlYnVnKCJNb2R1bGVzIGhhdmUgYmVlbiBsb2FkZWQgZnJvbSBJbmRleGVkREIiKTsKICAgICAgICB9CiAgICAgICAgaWYgKGVycm9yKQogICAgICAgIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291bGQgbm90IGdldCBtb2R1bGVzIGZyb20gSW5kZXhlZERCOiAnIiArIGVycm9yICsgIiciKTsKICAgICAgICB9CiAgICAgICAgLy8gQ29udGludWUuCiAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgIH0pOwp9OwoKbXVyb20uaW5zdGFsbExvY2FsRm9yYWdlKCk7Cm11cm9tLmluc3RhbGxVbmljb2RlQmFzZTY0KCk7Ci8vIEluZGV4ZWREQiBtb2R1bGVzIG92ZXJyaWRlIEhUTUwgb25lcy4KbXVyb20ubG9hZEluZGV4ZWREQk1vZHVsZXMobXVyb20ubG9hZE1vZHVsZXMpOwo=",
  13. {"status":true}
  14. ],
  15. [
  16. "муром.база_1.3.0",
  17. "LyoKICoKICog0KHQutCw0YfQuNCy0LDQtdC80YvQuSDRhNCw0LnQuyAvIERvd25sb2FkZWQgZmlsZQogKgogKi8KCtC80YPRgNC+0Lwu0YTQsNC50LsgPSB7fTsK0LzRg9GA0L7QvC7RhNCw0LnQuy7QvdCw0YfQsNC70L4gPQpgCjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KCTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIHVzZXItc2NhbGFibGU9bm8sIG1pbmltdW0tc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCI+CiAgICA8Ym9keT4KICAgICAgICA8c2NyaXB0Pgp2YXIg0LzRg9GA0L7QvCA9IHt9Owp2YXIgbXVyb20gPSDQvNGD0YDQvtC8OwrQvNGD0YDQvtC8LtC80L7QtNGD0LvQuCA9IFsKYDsK0LzRg9GA0L7QvC7RhNCw0LnQuy7QutC+0L3QtdGGID0KYApdOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KG11cm9tLCAibW9kdWxlcyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiDQvNGD0YDQvtC8LtC80L7QtNGD0LvQuDsKICAgIH0sCiAgICBzZXQ6IGZ1bmN0aW9uKNC30L3QsNGH0LXQvdC40Y8pCiAgICB7CiAgICAgICAg0LzRg9GA0L7QvC7QvNC+0LTRg9C70LggPSDQt9C90LDRh9C10L3QuNGPOwogICAgfQp9KTsKCnZhciDQt9Cw0LPRgNGD0LfQvtGH0L3Ri9C50JzQvtC00YPQu9GMID0g0LzRg9GA0L7QvC7QvNC+0LTRg9C70LhbMF07CnZhciDQutC+0LQgPSBhdG9iKNC30LDQs9GA0YPQt9C+0YfQvdGL0LnQnNC+0LTRg9C70YxbMV0pOwpldmFsKNC60L7QtCk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICA8L2JvZHk+CjwvaHRtbD4KYDsKCi8qCiAqIAogKiBVVUlECiAqCiAqLwoKLy8gQ3JlYXRlIEdVSUQgLyBVVUlEIGluIEphdmFTY3JpcHQ/Ci8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMTE3NTIzCtC80YPRgNC+0LwudXVpZCA9IGZ1bmN0aW9uKCkKewogICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoCiAgICAgICAgL1t4eV0vZywKICAgICAgICBmdW5jdGlvbihjKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpOwogICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7CiAgICAgICAgfQogICAgKTsKfTsKCi8qCiAqIAogKiDQo9Cy0LXQtNC+0LzQuNGC0LXQu9GMIC8gUmVwb3J0ZXIKICoKICovCgovLyBSZXBvcnRlclN1YnNjcmlwdGlvbiBjbGFzcy4KZnVuY3Rpb24gUmVwb3J0ZXJTdWJzY3JpcHRpb24oaWQsIGNhbGxiYWNrLCByZXBvcnRlcikKewogICAgdGhpcy5pZCA9IGlkOwogICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyOwp9CgovLyBSZXBvcnRlciBjbGFzcy4KZnVuY3Rpb24gUmVwb3J0ZXIobmFtZSkKewogICAgdGhpcy5uYW1lID0KICAgICAgICAodHlwZW9mIG5hbWUgIT09ICJ1bmRlZmluZWQiKSA/IAogICAgICAgIG5hbWUgOgogICAgICAgICIiOwogICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107Cn0KUmVwb3J0ZXIucHJvdG90eXBlLnJlcG9ydCA9IGZ1bmN0aW9uKCkKewogICAgZm9yICh2YXIgaWQgaW4gdGhpcy5zdWJzY3JpcHRpb25zKQogICAgewogICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLnN1YnNjcmlwdGlvbnNbaWRdOwogICAgICAgIHN1YnNjcmlwdGlvbi5jYWxsYmFjaygpOwogICAgfQp9ClJlcG9ydGVyLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbihjYWxsYmFjaykKewogICAgdmFyIGlkID0gbXVyb20udXVpZCgpOwogICAgdmFyIHN1YnNjcmlwdGlvbiA9IG5ldyBSZXBvcnRlclN1YnNjcmlwdGlvbihpZCwgY2FsbGJhY2ssIHRoaXMpOwogICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTsKICAgIHJldHVybiBzdWJzY3JpcHRpb247Cn0KUmVwb3J0ZXIucHJvdG90eXBlLnN1YnNjcmliZU1hbnkgPSBmdW5jdGlvbihmdW5jcykKewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgICB2YXIgZnVuYyA9IGZ1bmNzW2ldOwogICAgICAgIHRoaXMuc3Vic2NyaWJlKGZ1bmMpOwogICAgfQp9Cgp2YXIg0KPQstC10LTQvtC80LjRgtC10LvRjCA9IFJlcG9ydGVyOwpSZXBvcnRlci5wcm90b3R5cGUu0YPQstC10LTQvtC80LjRgtGMID0gZnVuY3Rpb24oKQp7CiAgICB0aGlzLnJlcG9ydCgpOwp9OwpSZXBvcnRlci5wcm90b3R5cGUu0L/QvtC00L/QuNGB0LDRgtGMID0gZnVuY3Rpb24o0YTRg9C90LrRhtC40Y8pCnsKICAgIHRoaXMuc3Vic2NyaWJlKNGE0YPQvdC60YbQuNGPKTsKfTsKUmVwb3J0ZXIucHJvdG90eXBlLtC/0L7QtNC/0LjRgdCw0YLRjNCc0L3QvtCz0L4gPSBmdW5jdGlvbihmdW5jcykKewogICAgdGhpcy5zdWJzY3JpYmVNYW55KGZ1bmNzKTsKfTsKCi8qCiAqIAogKiDQn9GD0YHQuiAvIFN0YXJ0CiAqCiAqLwoK0LzRg9GA0L7QvC7Qv9GD0YHQuiA9IG5ldyDQo9Cy0LXQtNC+0LzQuNGC0LXQu9GMKCk7Ci8vIENhbiBhbHNvIGJlIGFjY2Vzc2VkIGFzICdtdXJvbS5ydW4nLgpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20sICJydW4iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4g0LzRg9GA0L7QvC7Qv9GD0YHQujsKICAgIH0KfSk7Cm11cm9tLnN0YXJ0ID0gZnVuY3Rpb24oKQp7CiAgICDQvNGD0YDQvtC8LtC/0YPRgdC6LtGD0LLQtdC00L7QvNC40YLRjCgpOwp9OwoKLyoKICoKICog0KTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDRgdGC0YDQvtC6IC8gU3RyaW5nIGZvcm1hdHRpbmcKICoKICovCgovLyBKYXZhU2NyaXB0IGVxdWl2YWxlbnQgdG8gcHJpbnRmL1N0cmluZy5Gb3JtYXQKLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ2NzM0MzYKZnVuY3Rpb24g0YTQvtGA0LzQsNGC0KHRgtGA0L7QutC4KCkKewogICAgLy8gSG93IHRvIHNoaWZ0IOKAnGFyZ3VtZW50c+KAnQogICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDc3NTg5NS9ob3ctdG8tc2hpZnQtYXJndW1lbnRzCiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CiAgICB2YXIgc3RyID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxkKyl9L2csIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9ICd1bmRlZmluZWQnCiAgICAgICAgICAgICAgICAgICAgPyBhcmdzW251bWJlcl0KICAgICAgICAgICAgICAgICAgICA6IG1hdGNoCiAgICAgICAgICAgICAgICA7CiAgICB9KTsKfQoKLy8gSmF2YVNjcmlwdCBlcXVpdmFsZW50IHRvIHByaW50Zi9TdHJpbmcuRm9ybWF0Ci8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80NjczNDM2CmZ1bmN0aW9uIGZvcm1hdFN0cmluZygpCnsKICAgIC8vIEhvdyB0byBzaGlmdCDigJxhcmd1bWVudHPigJ0/CiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80Nzc1ODk1L2hvdy10by1zaGlmdC1hcmd1bWVudHMKICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgIHZhciBzdHIgPSBhcmdzLnNoaWZ0KCk7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL3soXGQrKX0vZywgZnVuY3Rpb24obWF0Y2gsIG51bWJlcikgewogICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhcmdzW251bWJlcl0gIT0gJ3VuZGVmaW5lZCcKICAgICAgICAgICAgICAgICAgICA/IGFyZ3NbbnVtYmVyXQogICAgICAgICAgICAgICAgICAgIDogbWF0Y2gKICAgICAgICAgICAgICAgIDsKICAgIH0pOwp9CiAgICA=",
  18. {"status":true}
  19. ],
  20. [
  21. "муром.функции_1.3.0",
  22. "LyoKICoKICog0KHQvtC30LTQsNGC0Ywg0Y3QutGA0LDQvQogKiBDcmVhdGUgYSBzY3JlZW4KICoKICovCmZ1bmN0aW9uINGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvSjQuNC80Y8pCnsKICAgIHZhciDRjdC60YDQsNC9ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICDRjdC60YDQsNC9LmlkID0g0LjQvNGPOwogICAg0Y3QutGA0LDQvS5zdHlsZS5jc3NUZXh0ID0KYApwb3NpdGlvbjogZml4ZWQ7CmxlZnQ6IDA7CnRvcDogMDsKcmlnaHQ6IDA7CmJvdHRvbTogMDsKcG9pbnRlci1ldmVudHM6IGFsbDsKYDsKICAgIHJldHVybiDRjdC60YDQsNC9Owp9CnZhciBjcmVhdGVTY3JlZW4gPSDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L07CgovKgogKgogKiDQodC+0LfQtNCw0YLRjCDQuCDQtNC+0LHQsNCy0LjRgtGMINGN0LrRgNCw0L0g0LogYGJvZHlgCiAqIENyZWF0ZSBhbmQgYWRkIGEgc2NyZWVuIHRvIGBib2R5YAogKgogKi8KZnVuY3Rpb24g0LTQvtCx0LDQstC40YLRjNCt0LrRgNCw0L0o0LjQvNGPLCBodG1sLCBjc3MpCnsKICAgIHZhciDRjdC60YDQsNC9ID0g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC9KNC40LzRjyk7CiAgICDRjdC60YDQsNC9LmlubmVySFRNTCA9IGh0bWw7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKNGN0LrRgNCw0L0pOwogICAgdmFyINCy0LjQtCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICDQstC40LQuaW5uZXJIVE1MID0gY3NzOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCjQstC40LQpOwogICAgCiAgICByZXR1cm4g0Y3QutGA0LDQvTsKfQp2YXIgYWRkU2NyZWVuID0g0LTQvtCx0LDQstC40YLRjNCt0LrRgNCw0L07CgovKgogKgogKiDQodCy0Y/Qt9Cw0YLRjCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC4INGA0LXQsNCz0LjRgNGD0Y7RidGD0Y4g0YTRg9C90LrRhtC40Y4g0LIg0YfQuNGC0LDQtdC80L7QvCDQstC40LTQtQogKiBCaW5kIG5vdGlmaWNhdGlvbiBhbmQgcmVhY3RpbmcgZnVuY3Rpb24gaW4gYSByZWFkYWJsZSB3YXkKICoKICovCmZ1bmN0aW9uINC60L7Qs9C00LAo0YPQstC10LTQvtC80LvQtdC90LjQtSwg0YTRg9C90LrRhtC40Y8pCnsKICAgINGD0LLQtdC00L7QvNC70LXQvdC40LUu0L/QvtC00L/QuNGB0LDRgtGMKNGE0YPQvdC60YbQuNGPKTsKfQp2YXIgd2hlbiA9INC60L7Qs9C00LA7CgovKgogKgogKiBMb2FkIGV4dGVybmFsIHNjcmlwdCBpbnRvIHNjcmlwdCB0YWcKICog0JfQsNCz0YDRg9C30LjRgtGMINGB0YLQvtGA0L7QvdC90LjQuSDRgdC60YDQuNC/0YIg0LIg0YLRjdCzIHNjcmlwdAogKgogKi8KZnVuY3Rpb24g0LfQsNCz0YDRg9C30LjRgtGM0KHQutGA0LjQv9GCKNC60L7QtCkKewogICAgdmFyINGB0LrRgNC40L/RgiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAg0YHQutGA0LjQv9GCLmlubmVySFRNTCA9INC60L7QtDsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0YHQutGA0LjQv9GCKTsKfQp2YXIgbG9hZFNjcmlwdCA9INC30LDQs9GA0YPQt9C40YLRjNCh0LrRgNC40L/RgjsKCi8qCiAqCiAqINCY0LzRjyDQuNGB0L/QvtC70L3Rj9C10LzQvtCz0L4g0L/RgNGP0LzQviDRgdC10LnRh9Cw0YEg0YTQsNC50LvQsCBIVE1MCiAqIE5hbWUgb2YgdGhlIGN1cnJlbnQgSFRNTCBmaWxlCiAqCiAqLwpmdW5jdGlvbiDQuNC80Y/QpNCw0LnQu9CwKCkKewogICAgdmFyINC/0YPRgtGMID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwogICAgdmFyINC40LzRjyA9INC/0YPRgtGMLnNwbGl0KCIvIikucG9wKCk7CiAgICByZXR1cm4gZGVjb2RlVVJJKNC40LzRjyk7Cn0KdmFyIGZpbGVOYW1lID0g0LjQvNGP0KTQsNC50LvQsDsKCi8qCiAqCiAqIFBvcHVsYXRlIGRpY3Rpb25hcnkgd2l0aCBhbm90aGVyIGRpY3Rpb25hcnkKICog0JTQvtCx0LDQstC40YIg0LIg0YHQu9C+0LLQsNGA0Ywg0LTRgNGD0LPQvtC5INGB0LvQvtCy0LDRgNGMCiAqCiAqLwpmdW5jdGlvbiDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LjRgdGF0L7QtNC90YvQuSwg0L3QvtCy0YvQuSkKewogICAgZm9yICh2YXIg0LrQu9GO0YcgaW4g0L3QvtCy0YvQuSkKICAgIHsKICAgICAgICB2YXIg0LfQvdCw0YfQtdC90LjQtSA9INC90L7QstGL0Llb0LrQu9GO0YddOwogICAgICAgINC40YHRhdC+0LTQvdGL0Llb0LrQu9GO0YddID0g0LfQvdCw0YfQtdC90LjQtTsKICAgIH0KfQp2YXIgYWRkRGljdGlvbmFyeSA9INC00L7QsdCw0LLQuNGC0YzQodC70L7QstCw0YDRjDs=",
  23. {"status":true}
  24. ],
  25. [
  26. "MOD_1.0.0",
  27. "Ly8g0JDQn9CYINC00LvRjyDRg9C/0YDQsNCy0LvQtdC90LjRjyDQvNC+0LTRg9C70Y/QvNC4Ci8vIEFQSSB0byBtYW5hZ2UgbW9kdWxlcwoKZnVuY3Rpb24gTW9kdWxlcyhtb2R1bGVzKQp7CiAgICB0aGlzLm1vZHVsZXMgPSBbXTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAi0LzQvtC00YPQu9C4IiwgewogICAgICAgIGdldDogZnVuY3Rpb24oKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlczsKICAgICAgICB9CiAgICB9KTsKICAgIHRoaXMucGFyc2VTZXJpYWxpemVkTW9kdWxlcyhtb2R1bGVzKTsKfQoKLyoKICoKICog0KDQsNC30L7QsdGA0LDRgtGMINC80L7QtNGD0LvQuCDQuNC3INGB0LXRgNC40LDQu9C40LfQvtCy0LDQvdC90L7Qs9C+INGE0L7RgNC80LDRgtCwCiAqIFBhcnNlIG1vZHVsZXMgb2Ygc2VyaWFsaXplZCBmb3JtYXQKICoKICovCk1vZHVsZXMucHJvdG90eXBlLnBhcnNlU2VyaWFsaXplZE1vZHVsZXMgPSBmdW5jdGlvbihpdGVtcykKewogICAgZm9yICh2YXIgaSBpbiBpdGVtcykKICAgIHsKICAgICAgICB2YXIgaXRlbSA9IGl0ZW1zW2ldOwogICAgICAgIHZhciBuYW1lID0gaXRlbVswXTsKICAgICAgICB2YXIgY29kZTY0ID0gaXRlbVsxXTsKICAgICAgICB2YXIgcHJvcGVydGllcyA9ICh0eXBlb2YgaXRlbVsyXSAhPSAidW5kZWZpbmVkIikgPyBpdGVtWzJdIDoge307CiAgICAgICAgCiAgICAgICAgLy8gU3RhdHVzLgogICAgICAgIHZhciBzdGF0dXMgPSB0cnVlOwogICAgICAgIGlmICgic3RhdHVzIiBpbiBwcm9wZXJ0aWVzKQogICAgICAgIHsKICAgICAgICAgICAgc3RhdHVzID0gcHJvcGVydGllc1sic3RhdHVzIl07CiAgICAgICAgfQogICAgICAgIHZhciBtb2R1bGUgPSB7CiAgICAgICAgICAgICJuYW1lIjogbmFtZSwKICAgICAgICAgICAgImNvZGU2NCI6IGNvZGU2NCwKICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1cywKICAgICAgICB9OwogICAgICAgIHRoaXMubW9kdWxlcy5wdXNoKG1vZHVsZSk7CiAgICB9Cn07CgovKgogKgogKiDQodC10YDQuNCw0LvQuNC30L7QstCw0L3Ri9C1INC80L7QtNGD0LvQuAogKiBTZXJpYWxpemVkIG1vZHVsZXMKICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShNb2R1bGVzLnByb3RvdHlwZSwgInNlcmlhbGl6ZWRNb2R1bGVzIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIGl0ZW1zID0gW107CiAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLm1vZHVsZXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgaXRlbSA9IFtdOwogICAgICAgICAgICB2YXIgbSA9IHRoaXMubW9kdWxlc1tpXTsKICAgICAgICAgICAgaXRlbS5wdXNoKG0ubmFtZSk7CiAgICAgICAgICAgIGl0ZW0ucHVzaChtLmNvZGU2NCk7CiAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0ge307CiAgICAgICAgICAgIHByb3BlcnRpZXNbInN0YXR1cyJdID0gbS5zdGF0dXM7CiAgICAgICAgICAgIGl0ZW0ucHVzaChwcm9wZXJ0aWVzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaXRlbXM7CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTW9kdWxlcy5wcm90b3R5cGUsICLRgdC10YDQuNCw0LvQuNC30L7QstCw0L3QvdGL0LXQnNC+0LTRg9C70LgiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVkTW9kdWxlczsKICAgIH0KfSk7CgovKgogKgogKiDQndCw0LnRgtC4INC80L7QtNGD0LvRjCDQv9C+INC40LzQtdC90LgKICogRmluZCBtb2R1bGUgYnkgbmFtZQogKgogKi8KTW9kdWxlcy5wcm90b3R5cGUubW9kdWxlID0gZnVuY3Rpb24obmFtZSkKewogICAgZm9yICh2YXIgaSBpbiB0aGlzLm1vZHVsZXMpCiAgICB7CiAgICAgICAgdmFyIG0gPSB0aGlzLm1vZHVsZXNbaV07CiAgICAgICAgaWYgKG0ubmFtZSA9PSBuYW1lKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG07CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gbnVsbDsKfTsKTW9kdWxlcy5wcm90b3R5cGUu0LzQvtC00YPQu9GMID0gZnVuY3Rpb24o0LjQvNGPKQp7CiAgICByZXR1cm4gdGhpcy5tb2R1bGUo0LjQvNGPKTsKfQoKLyoKICoKICog0J3QsNC50YLQuCDQvdC+0LzQtdGAINC80L7QtNGD0LvRjyDQv9C+INC40LzQtdC90LgKICogRmluZCBtb2R1bGUncyBvcmRlciBieSBuYW1lCiAqCiAqLwpNb2R1bGVzLnByb3RvdHlwZS5tb2R1bGVPcmRlciA9IGZ1bmN0aW9uKG5hbWUpCnsKICAgIGZvciAodmFyIGkgaW4gdGhpcy5tb2R1bGVzKQogICAgewogICAgICAgIHZhciBtID0gdGhpcy5tb2R1bGVzW2ldOwogICAgICAgIGlmIChtLm5hbWUgPT0gbmFtZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuIG51bGw7Cn07Ck1vZHVsZXMucHJvdG90eXBlLtC90L7QvNC10YDQnNC+0LTRg9C70Y8gPSBmdW5jdGlvbijQuNC80Y8pCnsKICAgIHJldHVybiB0aGlzLm1vZHVsZU9yZGVyKNC40LzRjyk7Cn0KCi8qCiAqCiAqINCf0LXRgNC10LzQtdGB0YLQuNGC0Ywg0LzQvtC00YPQu9GMCiAqIE1vdmUgYSBtb2R1bGUKICoKICovCk1vZHVsZXMucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbihmcm9tLCB0bykKewogICAgdmFyIG1vZHVsZSA9IHRoaXMubW9kdWxlc1tmcm9tXTsKICAgIHZhciBuYW1lRnJvbSA9IG1vZHVsZS5uYW1lOwogICAgdmFyIG5hbWVUbyA9ICh0byAhPSBudWxsKSA/IHRoaXMubW9kdWxlc1t0b10ubmFtZSA6IG51bGw7CiAgICAvLyBSZW1vdmUgdGhlIG9sZCBlbnRyeS4KICAgIHZhciBvbGRQb3NpdGlvbiA9IGZyb207CiAgICB0aGlzLm1vZHVsZXMuc3BsaWNlKG9sZFBvc2l0aW9uLCAxKTsKICAgIC8vIEluc2VydCBpbnRvIHRoZSBuZXcgcGxhY2UuCiAgICB2YXIgbmV3UG9zaXRpb24gPSB0aGlzLm1vZHVsZXMubGVuZ3RoOwogICAgaWYgKG5hbWVUbyAhPSBudWxsKQogICAgewogICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5tb2R1bGVPcmRlcihuYW1lVG8pOwogICAgfQogICAgdGhpcy5tb2R1bGVzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbW9kdWxlKTsKfTsKTW9kdWxlcy5wcm90b3R5cGUu0L/QtdGA0LXQvNC10YHRgtC40YLRjCA9IGZ1bmN0aW9uKNC40LcsINCyKQp7CiAgICB0aGlzLm1vdmUo0LjQtywg0LIpOwp9OwoKLyoKICoKICog0JTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INC80L7QtNGD0LvRjAogKiBBZGQgYSBuZXcgbW9kdWxlCiAqCiAqLwpNb2R1bGVzLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihuYW1lLCBjb2RlNjQpCnsKICAgIHZhciBtb2R1bGUgPSB7CiAgICAgICAgIm5hbWUiOiBuYW1lLAogICAgICAgICJjb2RlNjQiOiBjb2RlNjQsCiAgICAgICAgInN0YXR1cyI6IGZhbHNlLAogICAgfTsKICAgIHRoaXMubW9kdWxlcy5wdXNoKG1vZHVsZSk7Cn07Ck1vZHVsZXMucHJvdG90eXBlLtC00L7QsdCw0LLQuNGC0YwgPSBmdW5jdGlvbijQuNC80Y8sINC60L7QtDY0KQp7CiAgICByZXR1cm4gdGhpcy5hZGQo0LjQvNGPLCDQutC+0LQ2NCk7Cn0KCi8qCiAqCiAqINCj0LTQsNC70LjRgtGMINC80L7QtNGD0LvRjAogKiBEZWxldGUgYSBtb2R1bGUKICoKICovCk1vZHVsZXMucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKGlkKQp7CiAgICB0aGlzLm1vZHVsZXMuc3BsaWNlKGlkLCAxKTsKfTsKTW9kdWxlcy5wcm90b3R5cGUu0YPQtNCw0LvQuNGC0YwgPSBmdW5jdGlvbijQvdC+0LzQtdGAKQp7CiAgICB0aGlzLmRlbGV0ZSjQvdC+0LzQtdGAKTsKfQoKLyoKICoKICog0KHQvtC30LTQsNGR0Lwg0Y3QutC30LXQvNC/0LvRj9GAINCc0J7QlAogKiBDcmVhdGUgTU9EIGluc3RhbmNlCiAqCiAqLwp2YXIgTU9EID0gbmV3IE1vZHVsZXMobXVyb20ubW9kdWxlcyk7CnZhciDQnNCe0JQgPSBNT0Q7",
  28. {"status":true}
  29. ],
  30. [
  31. "муром.редактор_1.1.0",
  32. "0LzRg9GA0L7QvC7Qt9Cw0LPRgNGD0LfQuNGC0YxBQ0UgPSBmdW5jdGlvbigpCnsKICAgIC8vINCg0LXQtNCw0LrRgtC+0YAg0LrQvtC00LAgQUNFLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FqYXhvcmcvYWNlLWJ1aWxkcy9ibG9iL21hc3Rlci9zcmMtbWluLW5vY29uZmxpY3QvYWNlLmpzCihmdW5jdGlvbigpe2Z1bmN0aW9uIG8obil7dmFyIGk9ZTtuJiYoZVtuXXx8KGVbbl09e30pLGk9ZVtuXSk7aWYoIWkuZGVmaW5lfHwhaS5kZWZpbmUucGFja2FnZWQpdC5vcmlnaW5hbD1pLmRlZmluZSxpLmRlZmluZT10LGkuZGVmaW5lLnBhY2thZ2VkPSEwO2lmKCFpLnJlcXVpcmV8fCFpLnJlcXVpcmUucGFja2FnZWQpci5vcmlnaW5hbD1pLnJlcXVpcmUsaS5yZXF1aXJlPXIsaS5yZXF1aXJlLnBhY2thZ2VkPSEwfXZhciBBQ0VfTkFNRVNQQUNFID0gImFjZSIsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpOyFlJiZ0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmKGU9d2luZG93KTtpZighQUNFX05BTUVTUEFDRSYmdHlwZW9mIHJlcXVpcmVqcyE9InVuZGVmaW5lZCIpcmV0dXJuO3ZhciB0PWZ1bmN0aW9uKGUsbixyKXtpZih0eXBlb2YgZSE9InN0cmluZyIpe3Qub3JpZ2luYWw/dC5vcmlnaW5hbC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KGNvbnNvbGUuZXJyb3IoImRyb3BwaW5nIG1vZHVsZSBiZWNhdXNlIGRlZmluZSB3YXNuJ3QgYSBzdHJpbmcuIiksY29uc29sZS50cmFjZSgpKTtyZXR1cm59YXJndW1lbnRzLmxlbmd0aD09MiYmKHI9biksdC5tb2R1bGVzW2VdfHwodC5wYXlsb2Fkc1tlXT1yLHQubW9kdWxlc1tlXT1udWxsKX07dC5tb2R1bGVzPXt9LHQucGF5bG9hZHM9e307dmFyIG49ZnVuY3Rpb24oZSx0LG4pe2lmKHR5cGVvZiB0PT0ic3RyaW5nIil7dmFyIGk9cyhlLHQpO2lmKGkhPXVuZGVmaW5lZClyZXR1cm4gbiYmbigpLGl9ZWxzZSBpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT0iW29iamVjdCBBcnJheV0iKXt2YXIgbz1bXTtmb3IodmFyIHU9MCxhPXQubGVuZ3RoO3U8YTsrK3Upe3ZhciBmPXMoZSx0W3VdKTtpZihmPT11bmRlZmluZWQmJnIub3JpZ2luYWwpcmV0dXJuO28ucHVzaChmKX1yZXR1cm4gbiYmbi5hcHBseShudWxsLG8pfHwhMH19LHI9ZnVuY3Rpb24oZSx0KXt2YXIgaT1uKCIiLGUsdCk7cmV0dXJuIGk9PXVuZGVmaW5lZCYmci5vcmlnaW5hbD9yLm9yaWdpbmFsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppfSxpPWZ1bmN0aW9uKGUsdCl7aWYodC5pbmRleE9mKCIhIikhPT0tMSl7dmFyIG49dC5zcGxpdCgiISIpO3JldHVybiBpKGUsblswXSkrIiEiK2koZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpO3Q9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZzIT10KXt2YXIgcz10O3Q9dC5yZXBsYWNlKC9cL1wuXC8vLCIvIikucmVwbGFjZSgvW15cL10rXC9cLlwuXC8vLCIiKX19cmV0dXJuIHR9LHM9ZnVuY3Rpb24oZSxyKXtyPWkoZSxyKTt2YXIgcz10Lm1vZHVsZXNbcl07aWYoIXMpe3M9dC5wYXlsb2Fkc1tyXTtpZih0eXBlb2Ygcz09ImZ1bmN0aW9uIil7dmFyIG89e30sdT17aWQ6cix1cmk6IiIsZXhwb3J0czpvLHBhY2thZ2VkOiEwfSxhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ocixlLHQpfSxmPXMoYSxvLHUpO289Znx8dS5leHBvcnRzLHQubW9kdWxlc1tyXT1vLGRlbGV0ZSB0LnBheWxvYWRzW3JdfXM9dC5tb2R1bGVzW3JdPW98fHN9cmV0dXJuIHN9O28oQUNFX05BTUVTUEFDRSl9KSgpLGFjZS5kZWZpbmUoImFjZS9saWIvcmVnZXhwIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybihlLmdsb2JhbD8iZyI6IiIpKyhlLmlnbm9yZUNhc2U/ImkiOiIiKSsoZS5tdWx0aWxpbmU/Im0iOiIiKSsoZS5leHRlbmRlZD8ieCI6IiIpKyhlLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCxuKTtmb3IodmFyIHI9bnx8MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX12YXIgcj17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxpPXIuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQscz1mdW5jdGlvbigpe3ZhciBlPS9eL2c7cmV0dXJuIHIudGVzdC5jYWxsKGUsIiIpLCFlLmxhc3RJbmRleH0oKTtpZihzJiZpKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLGE7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZ0KXshaSYmdC5sZW5ndGg+MSYmdSh0LCIiKT4tMSYmKGE9UmVnRXhwKHRoaXMuc291cmNlLHIucmVwbGFjZS5jYWxsKG8odGhpcyksImciLCIiKSksci5yZXBsYWNlLmNhbGwoZS5zbGljZSh0LmluZGV4KSxhLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoLTI7ZSsrKWFyZ3VtZW50c1tlXT09PXVuZGVmaW5lZCYmKHRbZV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGY9MTtmPHQubGVuZ3RoO2YrKyluPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2YtMV0sbiYmKHRbbl09dFtmXSk7IXMmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIHR9LHN8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmNhbGwodGhpcyxlKTtyZXR1cm4gdCYmdGhpcy5nbG9iYWwmJiF0WzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+dC5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIXR9KX0pLGFjZS5kZWZpbmUoImFjZS9saWIvZXM1LXNoaW0iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiB3KGUpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGV9Y2F0Y2godCl7fX1mdW5jdGlvbiBIKGUpe3JldHVybiBlPStlLGUhPT1lP2U9MDplIT09MCYmZSE9PTEvMCYmZSE9PS0xLzAmJihlPShlPjB8fC0xKSpNYXRoLmZsb29yKE1hdGguYWJzKGUpKSksZX1mdW5jdGlvbiBCKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBlPT09bnVsbHx8dD09PSJ1bmRlZmluZWQifHx0PT09ImJvb2xlYW4ifHx0PT09Im51bWJlciJ8fHQ9PT0ic3RyaW5nIn1mdW5jdGlvbiBqKGUpe3ZhciB0LG4scjtpZihCKGUpKXJldHVybiBlO249ZS52YWx1ZU9mO2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXt0PW4uY2FsbChlKTtpZihCKHQpKXJldHVybiB0fXI9ZS50b1N0cmluZztpZih0eXBlb2Ygcj09ImZ1bmN0aW9uIil7dD1yLmNhbGwoZSk7aWYoQih0KSlyZXR1cm4gdH10aHJvdyBuZXcgVHlwZUVycm9yfUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHwoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIrbik7dmFyIGk9dS5jYWxsKGFyZ3VtZW50cywxKSxzPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIHMpe3ZhciBlPW4uYXBwbHkodGhpcyxpLmNvbmNhdCh1LmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiBPYmplY3QoZSk9PT1lP2U6dGhpc31yZXR1cm4gbi5hcHBseSh0LGkuY29uY2F0KHUuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBuLnByb3RvdHlwZSYmKHIucHJvdG90eXBlPW4ucHJvdG90eXBlLHMucHJvdG90eXBlPW5ldyByLHIucHJvdG90eXBlPW51bGwpLHN9KTt2YXIgaT1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbCxzPUFycmF5LnByb3RvdHlwZSxvPU9iamVjdC5wcm90b3R5cGUsdT1zLnNsaWNlLGE9aS5iaW5kKG8udG9TdHJpbmcpLGY9aS5iaW5kKG8uaGFzT3duUHJvcGVydHkpLGwsYyxoLHAsZDtpZihkPWYobywiX19kZWZpbmVHZXR0ZXJfXyIpKWw9aS5iaW5kKG8uX19kZWZpbmVHZXR0ZXJfXyksYz1pLmJpbmQoby5fX2RlZmluZVNldHRlcl9fKSxoPWkuYmluZChvLl9fbG9va3VwR2V0dGVyX18pLHA9aS5iaW5kKG8uX19sb29rdXBTZXR0ZXJfXyk7aWYoWzEsMl0uc3BsaWNlKDApLmxlbmd0aCE9MilpZighZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PW5ldyBBcnJheShlKzIpO3JldHVybiB0WzBdPXRbMV09MCx0fXZhciB0PVtdLG47dC5zcGxpY2UuYXBwbHkodCxlKDIwKSksdC5zcGxpY2UuYXBwbHkodCxlKDI2KSksbj10Lmxlbmd0aCx0LnNwbGljZSg1LDAsIlhYWCIpLG4rMT09dC5sZW5ndGg7aWYobisxPT10Lmxlbmd0aClyZXR1cm4hMH0oKSlBcnJheS5wcm90b3R5cGUuc3BsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5sZW5ndGg7ZT4wP2U+biYmKGU9bik6ZT09dm9pZCAwP2U9MDplPDAmJihlPU1hdGgubWF4KG4rZSwwKSksZSt0PG58fCh0PW4tZSk7dmFyIHI9dGhpcy5zbGljZShlLGUrdCksaT11LmNhbGwoYXJndW1lbnRzLDIpLHM9aS5sZW5ndGg7aWYoZT09PW4pcyYmdGhpcy5wdXNoLmFwcGx5KHRoaXMsaSk7ZWxzZXt2YXIgbz1NYXRoLm1pbih0LG4tZSksYT1lK28sZj1hK3MtbyxsPW4tYSxjPW4tbztpZihmPGEpZm9yKHZhciBoPTA7aDxsOysraCl0aGlzW2YraF09dGhpc1thK2hdO2Vsc2UgaWYoZj5hKWZvcihoPWw7aC0tOyl0aGlzW2YraF09dGhpc1thK2hdO2lmKHMmJmU9PT1jKXRoaXMubGVuZ3RoPWMsdGhpcy5wdXNoLmFwcGx5KHRoaXMsaSk7ZWxzZXt0aGlzLmxlbmd0aD1jK3M7Zm9yKGg9MDtoPHM7KytoKXRoaXNbZStoXT1pW2hdfX1yZXR1cm4gcn07ZWxzZXt2YXIgdj1BcnJheS5wcm90b3R5cGUuc3BsaWNlO0FycmF5LnByb3RvdHlwZS5zcGxpY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD92LmFwcGx5KHRoaXMsW2U9PT12b2lkIDA/MDplLHQ9PT12b2lkIDA/dGhpcy5sZW5ndGgtZTp0XS5jb25jYXQodS5jYWxsKGFyZ3VtZW50cywyKSkpOltdfX1BcnJheS5pc0FycmF5fHwoQXJyYXkuaXNBcnJheT1mdW5jdGlvbih0KXtyZXR1cm4gYSh0KT09IltvYmplY3QgQXJyYXldIn0pO3ZhciBtPU9iamVjdCgiYSIpLGc9bVswXSE9ImEifHwhKDAgaW4gbSk7QXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgbj1GKHRoaXMpLHI9ZyYmYSh0aGlzKT09IltvYmplY3QgU3RyaW5nXSI/dGhpcy5zcGxpdCgiIik6bixpPWFyZ3VtZW50c1sxXSxzPS0xLG89ci5sZW5ndGg+Pj4wO2lmKGEodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjt3aGlsZSgrK3M8bylzIGluIHImJnQuY2FsbChpLHJbc10scyxuKX0pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe3ZhciBuPUYodGhpcykscj1nJiZhKHRoaXMpPT0iW29iamVjdCBTdHJpbmddIj90aGlzLnNwbGl0KCIiKTpuLGk9ci5sZW5ndGg+Pj4wLHM9QXJyYXkoaSksbz1hcmd1bWVudHNbMV07aWYoYSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yKHQrIiBpcyBub3QgYSBmdW5jdGlvbiIpO2Zvcih2YXIgdT0wO3U8aTt1KyspdSBpbiByJiYoc1t1XT10LmNhbGwobyxyW3VdLHUsbikpO3JldHVybiBzfSksQXJyYXkucHJvdG90eXBlLmZpbHRlcnx8KEFycmF5LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24odCl7dmFyIG49Rih0aGlzKSxyPWcmJmEodGhpcyk9PSJbb2JqZWN0IFN0cmluZ10iP3RoaXMuc3BsaXQoIiIpOm4saT1yLmxlbmd0aD4+PjAscz1bXSxvLHU9YXJndW1lbnRzWzFdO2lmKGEodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24iKTtmb3IodmFyIGY9MDtmPGk7ZisrKWYgaW4gciYmKG89cltmXSx0LmNhbGwodSxvLGYsbikmJnMucHVzaChvKSk7cmV0dXJuIHN9KSxBcnJheS5wcm90b3R5cGUuZXZlcnl8fChBcnJheS5wcm90b3R5cGUuZXZlcnk9ZnVuY3Rpb24odCl7dmFyIG49Rih0aGlzKSxyPWcmJmEodGhpcyk9PSJbb2JqZWN0IFN0cmluZ10iP3RoaXMuc3BsaXQoIiIpOm4saT1yLmxlbmd0aD4+PjAscz1hcmd1bWVudHNbMV07aWYoYSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yKHQrIiBpcyBub3QgYSBmdW5jdGlvbiIpO2Zvcih2YXIgbz0wO288aTtvKyspaWYobyBpbiByJiYhdC5jYWxsKHMscltvXSxvLG4pKXJldHVybiExO3JldHVybiEwfSksQXJyYXkucHJvdG90eXBlLnNvbWV8fChBcnJheS5wcm90b3R5cGUuc29tZT1mdW5jdGlvbih0KXt2YXIgbj1GKHRoaXMpLHI9ZyYmYSh0aGlzKT09IltvYmplY3QgU3RyaW5nXSI/dGhpcy5zcGxpdCgiIik6bixpPXIubGVuZ3RoPj4+MCxzPWFyZ3VtZW50c1sxXTtpZihhKHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7Zm9yKHZhciBvPTA7bzxpO28rKylpZihvIGluIHImJnQuY2FsbChzLHJbb10sbyxuKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBuPUYodGhpcykscj1nJiZhKHRoaXMpPT0iW29iamVjdCBTdHJpbmddIj90aGlzLnNwbGl0KCIiKTpuLGk9ci5sZW5ndGg+Pj4wO2lmKGEodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24iKTtpZighaSYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7dmFyIHM9MCxvO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpbz1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihzIGluIHIpe289cltzKytdO2JyZWFrfWlmKCsrcz49aSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9d2hpbGUoITApO2Zvcig7czxpO3MrKylzIGluIHImJihvPXQuY2FsbCh2b2lkIDAsbyxyW3NdLHMsbikpO3JldHVybiBvfSksQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0fHwoQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uKHQpe3ZhciBuPUYodGhpcykscj1nJiZhKHRoaXMpPT0iW29iamVjdCBTdHJpbmddIj90aGlzLnNwbGl0KCIiKTpuLGk9ci5sZW5ndGg+Pj4wO2lmKGEodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24iKTtpZighaSYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2VSaWdodCBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTt2YXIgcyxvPWktMTtpZihhcmd1bWVudHMubGVuZ3RoPj0yKXM9YXJndW1lbnRzWzFdO2Vsc2UgZG97aWYobyBpbiByKXtzPXJbby0tXTticmVha31pZigtLW88MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2VSaWdodCBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX13aGlsZSghMCk7ZG8gbyBpbiB0aGlzJiYocz10LmNhbGwodm9pZCAwLHMscltvXSxvLG4pKTt3aGlsZShvLS0pO3JldHVybiBzfSk7aWYoIUFycmF5LnByb3RvdHlwZS5pbmRleE9mfHxbMCwxXS5pbmRleE9mKDEsMikhPS0xKUFycmF5LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe3ZhciBuPWcmJmEodGhpcyk9PSJbb2JqZWN0IFN0cmluZ10iP3RoaXMuc3BsaXQoIiIpOkYodGhpcykscj1uLmxlbmd0aD4+PjA7aWYoIXIpcmV0dXJuLTE7dmFyIGk9MDthcmd1bWVudHMubGVuZ3RoPjEmJihpPUgoYXJndW1lbnRzWzFdKSksaT1pPj0wP2k6TWF0aC5tYXgoMCxyK2kpO2Zvcig7aTxyO2krKylpZihpIGluIG4mJm5baV09PT10KXJldHVybiBpO3JldHVybi0xfTtpZighQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mfHxbMCwxXS5sYXN0SW5kZXhPZigwLC0zKSE9LTEpQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQpe3ZhciBuPWcmJmEodGhpcyk9PSJbb2JqZWN0IFN0cmluZ10iP3RoaXMuc3BsaXQoIiIpOkYodGhpcykscj1uLmxlbmd0aD4+PjA7aWYoIXIpcmV0dXJuLTE7dmFyIGk9ci0xO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9TWF0aC5taW4oaSxIKGFyZ3VtZW50c1sxXSkpKSxpPWk+PTA/aTpyLU1hdGguYWJzKGkpO2Zvcig7aT49MDtpLS0paWYoaSBpbiBuJiZ0PT09bltpXSlyZXR1cm4gaTtyZXR1cm4tMX07T2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8KHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6byl9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIHk9Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih5K3QpO2lmKCFmKHQsbikpcmV0dXJuO3ZhciByLGkscztyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYoZCl7dmFyIHU9dC5fX3Byb3RvX187dC5fX3Byb3RvX189bzt2YXIgaT1oKHQsbikscz1wKHQsbik7dC5fX3Byb3RvX189dTtpZihpfHxzKXJldHVybiBpJiYoci5nZXQ9aSkscyYmKHIuc2V0PXMpLHJ9cmV0dXJuIHIudmFsdWU9dFtuXSxyfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX0pO2lmKCFPYmplY3QuY3JlYXRlKXt2YXIgYjtPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXz09PW51bGw/Yj1mdW5jdGlvbigpe3JldHVybntfX3Byb3RvX186bnVsbH19OmI9ZnVuY3Rpb24oKXt2YXIgZT17fTtmb3IodmFyIHQgaW4gZSllW3RdPW51bGw7cmV0dXJuIGUuY29uc3RydWN0b3I9ZS5oYXNPd25Qcm9wZXJ0eT1lLnByb3BlcnR5SXNFbnVtZXJhYmxlPWUuaXNQcm90b3R5cGVPZj1lLnRvTG9jYWxlU3RyaW5nPWUudG9TdHJpbmc9ZS52YWx1ZU9mPWUuX19wcm90b19fPW51bGwsZX0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LG4pe3ZhciByO2lmKHQ9PT1udWxsKXI9YigpO2Vsc2V7aWYodHlwZW9mIHQhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgdCsiXSAhPSAnb2JqZWN0JyIpO3ZhciBpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10LHI9bmV3IGksci5fX3Byb3RvX189dH1yZXR1cm4gbiE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKSxyfX1pZihPYmplY3QuZGVmaW5lUHJvcGVydHkpe3ZhciBFPXcoe30pLFM9dHlwZW9mIGRvY3VtZW50PT0idW5kZWZpbmVkInx8dyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7aWYoIUV8fCFTKXZhciB4PU9iamVjdC5kZWZpbmVQcm9wZXJ0eX1pZighT2JqZWN0LmRlZmluZVByb3BlcnR5fHx4KXt2YXIgVD0iUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3Q6ICIsTj0iT2JqZWN0LmRlZmluZVByb3BlcnR5IGNhbGxlZCBvbiBub24tb2JqZWN0OiAiLEM9ImdldHRlcnMgJiBzZXR0ZXJzIGNhbiBub3QgYmUgZGVmaW5lZCBvbiB0aGlzIGphdmFzY3JpcHQgZW5naW5lIjtPYmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24odCxuLHIpe2lmKHR5cGVvZiB0IT0ib2JqZWN0IiYmdHlwZW9mIHQhPSJmdW5jdGlvbiJ8fHQ9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoTit0KTtpZih0eXBlb2YgciE9Im9iamVjdCImJnR5cGVvZiByIT0iZnVuY3Rpb24ifHxyPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKFQrcik7aWYoeCl0cnl7cmV0dXJuIHguY2FsbChPYmplY3QsdCxuLHIpfWNhdGNoKGkpe31pZihmKHIsInZhbHVlIikpaWYoZCYmKGgodCxuKXx8cCh0LG4pKSl7dmFyIHM9dC5fX3Byb3RvX187dC5fX3Byb3RvX189byxkZWxldGUgdFtuXSx0W25dPXIudmFsdWUsdC5fX3Byb3RvX189c31lbHNlIHRbbl09ci52YWx1ZTtlbHNle2lmKCFkKXRocm93IG5ldyBUeXBlRXJyb3IoQyk7ZihyLCJnZXQiKSYmbCh0LG4sci5nZXQpLGYociwic2V0IikmJmModCxuLHIuc2V0KX1yZXR1cm4gdH19T2JqZWN0LmRlZmluZVByb3BlcnRpZXN8fChPYmplY3QuZGVmaW5lUHJvcGVydGllcz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgciBpbiBuKWYobixyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuW3JdKTtyZXR1cm4gdH0pLE9iamVjdC5zZWFsfHwoT2JqZWN0LnNlYWw9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxPYmplY3QuZnJlZXplfHwoT2JqZWN0LmZyZWV6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0pO3RyeXtPYmplY3QuZnJlZXplKGZ1bmN0aW9uKCl7fSl9Y2F0Y2goayl7T2JqZWN0LmZyZWV6ZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP246dChuKX19KE9iamVjdC5mcmVlemUpfU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9uc3x8KE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLE9iamVjdC5pc1NlYWxlZHx8KE9iamVjdC5pc1NlYWxlZD1mdW5jdGlvbih0KXtyZXR1cm4hMX0pLE9iamVjdC5pc0Zyb3plbnx8KE9iamVjdC5pc0Zyb3plbj1mdW5jdGlvbih0KXtyZXR1cm4hMX0pLE9iamVjdC5pc0V4dGVuc2libGV8fChPYmplY3QuaXNFeHRlbnNpYmxlPWZ1bmN0aW9uKHQpe2lmKE9iamVjdCh0KT09PXQpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgbj0iIjt3aGlsZShmKHQsbikpbis9Ij8iO3Rbbl09ITA7dmFyIHI9Zih0LG4pO3JldHVybiBkZWxldGUgdFtuXSxyfSk7aWYoIU9iamVjdC5rZXlzKXt2YXIgTD0hMCxBPVsidG9TdHJpbmciLCJ0b0xvY2FsZVN0cmluZyIsInZhbHVlT2YiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNvbnN0cnVjdG9yIl0sTz1BLmxlbmd0aDtmb3IodmFyIE0gaW57dG9TdHJpbmc6bnVsbH0pTD0hMTtPYmplY3Qua2V5cz1mdW5jdGlvbiBJKGUpe2lmKHR5cGVvZiBlIT0ib2JqZWN0IiYmdHlwZW9mIGUhPSJmdW5jdGlvbiJ8fGU9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QiKTt2YXIgST1bXTtmb3IodmFyIHQgaW4gZSlmKGUsdCkmJkkucHVzaCh0KTtpZihMKWZvcih2YXIgbj0wLHI9TztuPHI7bisrKXt2YXIgaT1BW25dO2YoZSxpKSYmSS5wdXNoKGkpfXJldHVybiBJfX1EYXRlLm5vd3x8KERhdGUubm93PWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9KTt2YXIgXz0iCVxuXHgwYlxmXHIgXHUwMGEwXHUxNjgwXHUxODBlXHUyMDAwXHUyMDAxXHUyMDAyXHUyMDAzXHUyMDA0XHUyMDA1XHUyMDA2XHUyMDA3XHUyMDA4XHUyMDA5XHUyMDBhXHUyMDJmXHUyMDVmXHUzMDAwXHUyMDI4XHUyMDI5XHVmZWZmIjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxfLnRyaW0oKSl7Xz0iWyIrXysiXSI7dmFyIEQ9bmV3IFJlZ0V4cCgiXiIrXytfKyIqIiksUD1uZXcgUmVnRXhwKF8rXysiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoRCwiIikucmVwbGFjZShQLCIiKX19dmFyIEY9ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYW4ndCBjb252ZXJ0ICIrZSsiIHRvIG9iamVjdCIpO3JldHVybiBPYmplY3QoZSl9fSksYWNlLmRlZmluZSgiYWNlL2xpYi9maXhvbGRicm93c2VycyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvcmVnZXhwIiwiYWNlL2xpYi9lczUtc2hpbSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZSgiLi9yZWdleHAiKSxlKCIuL2VzNS1zaGltIiksdHlwZW9mIEVsZW1lbnQhPSJ1bmRlZmluZWQiJiYhRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsInJlbW92ZSIse2VudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcyl9fSl9KSxhY2UuZGVmaW5lKCJhY2UvbGliL3VzZXJhZ2VudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5PUz17TElOVVg6IkxJTlVYIixNQUM6Ik1BQyIsV0lORE9XUzoiV0lORE9XUyJ9LHQuZ2V0T1M9ZnVuY3Rpb24oKXtyZXR1cm4gdC5pc01hYz90Lk9TLk1BQzp0LmlzTGludXg/dC5PUy5MSU5VWDp0Lk9TLldJTkRPV1N9O3ZhciByPXR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiP25hdmlnYXRvcjp7fSxpPSgvbWFjfHdpbnxsaW51eC9pLmV4ZWMoci5wbGF0Zm9ybSl8fFsib3RoZXIiXSlbMF0udG9Mb3dlckNhc2UoKSxzPXIudXNlckFnZW50fHwiIixvPXIuYXBwTmFtZXx8IiI7dC5pc1dpbj1pPT0id2luIix0LmlzTWFjPWk9PSJtYWMiLHQuaXNMaW51eD1pPT0ibGludXgiLHQuaXNJRT1vPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyInx8by5pbmRleE9mKCJNU0FwcEhvc3QiKT49MD9wYXJzZUZsb2F0KChzLm1hdGNoKC8oPzpNU0lFIHxUcmlkZW50XC9bMC05XStbXC4wLTldKzsuKnJ2OikoWzAtOV0rW1wuMC05XSspLyl8fFtdKVsxXSk6cGFyc2VGbG9hdCgocy5tYXRjaCgvKD86VHJpZGVudFwvWzAtOV0rW1wuMC05XSs7LipydjopKFswLTldK1tcLjAtOV0rKS8pfHxbXSlbMV0pLHQuaXNPbGRJRT10LmlzSUUmJnQuaXNJRTw5LHQuaXNHZWNrbz10LmlzTW96aWxsYT1zLm1hdGNoKC8gR2Vja29cL1xkKy8pLHQuaXNPcGVyYT10eXBlb2Ygb3BlcmE9PSJvYmplY3QiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwod2luZG93Lm9wZXJhKT09IltvYmplY3QgT3BlcmFdIix0LmlzV2ViS2l0PXBhcnNlRmxvYXQocy5zcGxpdCgiV2ViS2l0LyIpWzFdKXx8dW5kZWZpbmVkLHQuaXNDaHJvbWU9cGFyc2VGbG9hdChzLnNwbGl0KCIgQ2hyb21lLyIpWzFdKXx8dW5kZWZpbmVkLHQuaXNFZGdlPXBhcnNlRmxvYXQocy5zcGxpdCgiIEVkZ2UvIilbMV0pfHx1bmRlZmluZWQsdC5pc0FJUj1zLmluZGV4T2YoIkFkb2JlQUlSIik+PTAsdC5pc0FuZHJvaWQ9cy5pbmRleE9mKCJBbmRyb2lkIik+PTAsdC5pc0Nocm9tZU9TPXMuaW5kZXhPZigiIENyT1MgIik+PTAsdC5pc0lPUz0vaVBhZHxpUGhvbmV8aVBvZC8udGVzdChzKSYmIXdpbmRvdy5NU1N0cmVhbSx0LmlzSU9TJiYodC5pc01hYz0hMCksdC5pc01vYmlsZT10LmlzSU9TfHx0LmlzQW5kcm9pZH0pLGFjZS5kZWZpbmUoImFjZS9saWIvZG9tIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi91c2VyYWdlbnQiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vdXNlcmFnZW50IiksaT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7dC5idWlsZERvbT1mdW5jdGlvbiBvKGUsdCxuKXtpZih0eXBlb2YgZT09InN0cmluZyImJmUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpO3JldHVybiB0JiZ0LmFwcGVuZENoaWxkKHIpLHJ9aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYodHlwZW9mIGVbMF0hPSJzdHJpbmcifHwhZVswXSl7dmFyIGk9W107Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciB1PW8oZVtzXSx0LG4pO3UmJmkucHVzaCh1KX1yZXR1cm4gaX12YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGVbMF0pLGY9ZVsxXSxsPTE7ZiYmdHlwZW9mIGY9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShmKSYmKGw9Mik7Zm9yKHZhciBzPWw7czxlLmxlbmd0aDtzKyspbyhlW3NdLGEsbik7cmV0dXJuIGw9PTImJk9iamVjdC5rZXlzKGYpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZltlXTtlPT09ImNsYXNzIj9hLmNsYXNzTmFtZT1BcnJheS5pc0FycmF5KHQpP3Quam9pbigiICIpOnQ6dHlwZW9mIHQ9PSJmdW5jdGlvbiJ8fGU9PSJ2YWx1ZSI/YVtlXT10OmU9PT0icmVmIj9uJiYoblt0XT1hKTp0IT1udWxsJiZhLnNldEF0dHJpYnV0ZShlLHQpfSksdCYmdC5hcHBlbmRDaGlsZChhKSxhfSx0LmdldERvY3VtZW50SGVhZD1mdW5jdGlvbihlKXtyZXR1cm4gZXx8KGU9ZG9jdW1lbnQpLGUuaGVhZHx8ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxlLmRvY3VtZW50RWxlbWVudH0sdC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUz9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModHx8aSxlKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpfSx0LnJlbW92ZUNoaWxkcmVuPWZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSIifSx0LmNyZWF0ZVRleHROb2RlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dD90Lm93bmVyRG9jdW1lbnQ6ZG9jdW1lbnQ7cmV0dXJuIG4uY3JlYXRlVGV4dE5vZGUoZSl9LHQuY3JlYXRlRnJhZ21lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT9lLm93bmVyRG9jdW1lbnQ6ZG9jdW1lbnQ7cmV0dXJuIHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpfSx0Lmhhc0Nzc0NsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49KGUuY2xhc3NOYW1lKyIiKS5zcGxpdCgvXHMrL2cpO3JldHVybiBuLmluZGV4T2YodCkhPT0tMX0sdC5hZGRDc3NDbGFzcz1mdW5jdGlvbihlLG4pe3QuaGFzQ3NzQ2xhc3MoZSxuKXx8KGUuY2xhc3NOYW1lKz0iICIrbil9LHQucmVtb3ZlQ3NzQ2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNsYXNzTmFtZS5zcGxpdCgvXHMrL2cpO2Zvcig7Oyl7dmFyIHI9bi5pbmRleE9mKHQpO2lmKHI9PS0xKWJyZWFrO24uc3BsaWNlKHIsMSl9ZS5jbGFzc05hbWU9bi5qb2luKCIgIil9LHQudG9nZ2xlQ3NzQ2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNsYXNzTmFtZS5zcGxpdCgvXHMrL2cpLHI9ITA7Zm9yKDs7KXt2YXIgaT1uLmluZGV4T2YodCk7aWYoaT09LTEpYnJlYWs7cj0hMSxuLnNwbGljZShpLDEpfXJldHVybiByJiZuLnB1c2godCksZS5jbGFzc05hbWU9bi5qb2luKCIgIikscn0sdC5zZXRDc3NDbGFzcz1mdW5jdGlvbihlLG4scil7cj90LmFkZENzc0NsYXNzKGUsbik6dC5yZW1vdmVDc3NDbGFzcyhlLG4pfSx0Lmhhc0Nzc1N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscjt0PXR8fGRvY3VtZW50O2lmKHI9dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpKXdoaWxlKG48ci5sZW5ndGgpaWYocltuKytdLmlkPT09ZSlyZXR1cm4hMH0sdC5pbXBvcnRDc3NTdHJpbmc9ZnVuY3Rpb24obixyLGkpe3ZhciBzPWk7aWYoIWl8fCFpLmdldFJvb3ROb2RlKXM9ZG9jdW1lbnQ7ZWxzZXtzPWkuZ2V0Um9vdE5vZGUoKTtpZighc3x8cz09aSlzPWRvY3VtZW50fXZhciBvPXMub3duZXJEb2N1bWVudHx8cztpZihyJiZ0Lmhhc0Nzc1N0cmluZyhyLHMpKXJldHVybiBudWxsO3ImJihuKz0iXG4vKiMgc291cmNlVVJMPWFjZS9jc3MvIityKyIgKi8iKTt2YXIgdT10LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dS5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKG4pKSxyJiYodS5pZD1yKSxzPT1vJiYocz10LmdldERvY3VtZW50SGVhZChvKSkscy5pbnNlcnRCZWZvcmUodSxzLmZpcnN0Q2hpbGQpfSx0LmltcG9ydENzc1N0eWxzaGVldD1mdW5jdGlvbihlLG4pe3QuYnVpbGREb20oWyJsaW5rIix7cmVsOiJzdHlsZXNoZWV0IixocmVmOmV9XSx0LmdldERvY3VtZW50SGVhZChuKSl9LHQuc2Nyb2xsYmFyV2lkdGg9ZnVuY3Rpb24oZSl7dmFyIG49dC5jcmVhdGVFbGVtZW50KCJhY2VfaW5uZXIiKTtuLnN0eWxlLndpZHRoPSIxMDAlIixuLnN0eWxlLm1pbldpZHRoPSIwcHgiLG4uc3R5bGUuaGVpZ2h0PSIyMDBweCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayI7dmFyIHI9dC5jcmVhdGVFbGVtZW50KCJhY2Vfb3V0ZXIiKSxpPXIuc3R5bGU7aS5wb3NpdGlvbj0iYWJzb2x1dGUiLGkubGVmdD0iLTEwMDAwcHgiLGkub3ZlcmZsb3c9ImhpZGRlbiIsaS53aWR0aD0iMjAwcHgiLGkubWluV2lkdGg9IjBweCIsaS5oZWlnaHQ9IjE1MHB4IixpLmRpc3BsYXk9ImJsb2NrIixyLmFwcGVuZENoaWxkKG4pO3ZhciBzPWUuZG9jdW1lbnRFbGVtZW50O3MuYXBwZW5kQ2hpbGQocik7dmFyIG89bi5vZmZzZXRXaWR0aDtpLm92ZXJmbG93PSJzY3JvbGwiO3ZhciB1PW4ub2Zmc2V0V2lkdGg7cmV0dXJuIG89PXUmJih1PXIuY2xpZW50V2lkdGgpLHMucmVtb3ZlQ2hpbGQociksby11fSx0eXBlb2YgZG9jdW1lbnQ9PSJ1bmRlZmluZWQiJiYodC5pbXBvcnRDc3NTdHJpbmc9ZnVuY3Rpb24oKXt9KSx0LmNvbXB1dGVkU3R5bGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSwiIil8fHt9fSx0LnNldFN0eWxlPWZ1bmN0aW9uKGUsdCxuKXtlW3RdIT09biYmKGVbdF09bil9LHQuSEFTX0NTU19BTklNQVRJT049ITEsdC5IQVNfQ1NTX1RSQU5TRk9STVM9ITEsdC5ISV9EUEk9ci5pc1dpbj90eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmd2luZG93LmRldmljZVBpeGVsUmF0aW8+PTEuNTohMDtpZih0eXBlb2YgZG9jdW1lbnQhPSJ1bmRlZmluZWQiKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LkhJX0RQSSYmcy5zdHlsZS50cmFuc2Zvcm0hPT11bmRlZmluZWQmJih0LkhBU19DU1NfVFJBTlNGT1JNUz0hMCksIXIuaXNFZGdlJiZ0eXBlb2Ygcy5zdHlsZS5hbmltYXRpb25OYW1lIT0idW5kZWZpbmVkIiYmKHQuSEFTX0NTU19BTklNQVRJT049ITApLHM9bnVsbH10LkhBU19DU1NfVFJBTlNGT1JNUz90LnRyYW5zbGF0ZT1mdW5jdGlvbihlLHQsbil7ZS5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZSgiK01hdGgucm91bmQodCkrInB4LCAiK01hdGgucm91bmQobikrInB4KSJ9OnQudHJhbnNsYXRlPWZ1bmN0aW9uKGUsdCxuKXtlLnN0eWxlLnRvcD1NYXRoLnJvdW5kKG4pKyJweCIsZS5zdHlsZS5sZWZ0PU1hdGgucm91bmQodCkrInB4In19KSxhY2UuZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5pbmhlcml0cz1mdW5jdGlvbihlLHQpe2Uuc3VwZXJfPXQsZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSl9LHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGFjZS5kZWZpbmUoImFjZS9saWIva2V5cyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL29vcCIpLGk9ZnVuY3Rpb24oKXt2YXIgZT17TU9ESUZJRVJfS0VZUzp7MTY6IlNoaWZ0IiwxNzoiQ3RybCIsMTg6IkFsdCIsMjI0OiJNZXRhIiw5MToiTWV0YUxlZnQiLDkyOiJNZXRhUmlnaHQiLDkzOiJDb250ZXh0TWVudSJ9LEtFWV9NT0RTOntjdHJsOjEsYWx0OjIsb3B0aW9uOjIsc2hpZnQ6NCwic3VwZXIiOjgsbWV0YTo4LGNvbW1hbmQ6OCxjbWQ6OH0sRlVOQ1RJT05fS0VZUzp7ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEzOiJSZXR1cm4iLDE5OiJQYXVzZSIsMjc6IkVzYyIsMzI6IlNwYWNlIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiTGVmdCIsMzg6IlVwIiwzOToiUmlnaHQiLDQwOiJEb3duIiw0NDoiUHJpbnQiLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDk2OiJOdW1wYWQwIiw5NzoiTnVtcGFkMSIsOTg6Ik51bXBhZDIiLDk5OiJOdW1wYWQzIiwxMDA6Ik51bXBhZDQiLDEwMToiTnVtcGFkNSIsMTAyOiJOdW1wYWQ2IiwxMDM6Ik51bXBhZDciLDEwNDoiTnVtcGFkOCIsMTA1OiJOdW1wYWQ5IiwiLTEzIjoiTnVtcGFkRW50ZXIiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtbG9jayIsMTQ1OiJTY3JvbGxsb2NrIn0sUFJJTlRBQkxFX0tFWVM6ezMyOiIgIiw0ODoiMCIsNDk6IjEiLDUwOiIyIiw1MToiMyIsNTI6IjQiLDUzOiI1Iiw1NDoiNiIsNTU6IjciLDU2OiI4Iiw1NzoiOSIsNTk6IjsiLDYxOiI9Iiw2NToiYSIsNjY6ImIiLDY3OiJjIiw2ODoiZCIsNjk6ImUiLDcwOiJmIiw3MToiZyIsNzI6ImgiLDczOiJpIiw3NDoiaiIsNzU6ImsiLDc2OiJsIiw3NzoibSIsNzg6Im4iLDc5OiJvIiw4MDoicCIsODE6InEiLDgyOiJyIiw4MzoicyIsODQ6InQiLDg1OiJ1Iiw4NjoidiIsODc6InciLDg4OiJ4Iiw4OToieSIsOTA6InoiLDEwNzoiKyIsMTA5OiItIiwxMTA6Ii4iLDE4NjoiOyIsMTg3OiI9IiwxODg6IiwiLDE4OToiLSIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyIsMTExOiIvIiwxMDY6IioifX0sdCxuO2ZvcihuIGluIGUuRlVOQ1RJT05fS0VZUyl0PWUuRlVOQ1RJT05fS0VZU1tuXS50b0xvd2VyQ2FzZSgpLGVbdF09cGFyc2VJbnQobiwxMCk7Zm9yKG4gaW4gZS5QUklOVEFCTEVfS0VZUyl0PWUuUFJJTlRBQkxFX0tFWVNbbl0udG9Mb3dlckNhc2UoKSxlW3RdPXBhcnNlSW50KG4sMTApO3JldHVybiByLm1peGluKGUsZS5NT0RJRklFUl9LRVlTKSxyLm1peGluKGUsZS5QUklOVEFCTEVfS0VZUyksci5taXhpbihlLGUuRlVOQ1RJT05fS0VZUyksZS5lbnRlcj1lWyJyZXR1cm4iXSxlLmVzY2FwZT1lLmVzYyxlLmRlbD1lWyJkZWxldGUiXSxlWzE3M109Ii0iLGZ1bmN0aW9uKCl7dmFyIHQ9WyJjbWQiLCJjdHJsIiwiYWx0Iiwic2hpZnQiXTtmb3IodmFyIG49TWF0aC5wb3coMix0Lmxlbmd0aCk7bi0tOyllLktFWV9NT0RTW25dPXQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBuJmUuS0VZX01PRFNbdF19KS5qb2luKCItIikrIi0ifSgpLGUuS0VZX01PRFNbMF09IiIsZS5LRVlfTU9EU1stMV09ImlucHV0LSIsZX0oKTtyLm1peGluKHQsaSksdC5rZXlDb2RlVG9TdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9aVtlXTtyZXR1cm4gdHlwZW9mIHQhPSJzdHJpbmciJiYodD1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKSx0LnRvTG93ZXJDYXNlKCl9fSksYWNlLmRlZmluZSgiYWNlL2xpYi9ldmVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIva2V5cyIsImFjZS9saWIvdXNlcmFnZW50Il0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUsdCxuKXt2YXIgYT11KHQpO2lmKCFpLmlzTWFjJiZzKXt0LmdldE1vZGlmaWVyU3RhdGUmJih0LmdldE1vZGlmaWVyU3RhdGUoIk9TIil8fHQuZ2V0TW9kaWZpZXJTdGF0ZSgiV2luIikpJiYoYXw9OCk7aWYocy5hbHRHcil7aWYoKDMmYSk9PTMpcmV0dXJuO3MuYWx0R3I9MH1pZihuPT09MTh8fG49PT0xNyl7dmFyIGY9ImxvY2F0aW9uImluIHQ/dC5sb2NhdGlvbjp0LmtleUxvY2F0aW9uO2lmKG49PT0xNyYmZj09PTEpc1tuXT09MSYmKG89dC50aW1lU3RhbXApO2Vsc2UgaWYobj09PTE4JiZhPT09MyYmZj09PTIpe3ZhciBsPXQudGltZVN0YW1wLW87bDw1MCYmKHMuYWx0R3I9ITApfX19biBpbiByLk1PRElGSUVSX0tFWVMmJihuPS0xKTtpZighYSYmbj09PTEzKXt2YXIgZj0ibG9jYXRpb24iaW4gdD90LmxvY2F0aW9uOnQua2V5TG9jYXRpb247aWYoZj09PTMpe2UodCxhLC1uKTtpZih0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJufX1pZihpLmlzQ2hyb21lT1MmJmEmOCl7ZSh0LGEsbik7aWYodC5kZWZhdWx0UHJldmVudGVkKXJldHVybjthJj0tOX1yZXR1cm4hIWF8fG4gaW4gci5GVU5DVElPTl9LRVlTfHxuIGluIHIuUFJJTlRBQkxFX0tFWVM/ZSh0LGEsbik6ITF9ZnVuY3Rpb24gZigpe3M9T2JqZWN0LmNyZWF0ZShudWxsKX12YXIgcj1lKCIuL2tleXMiKSxpPWUoIi4vdXNlcmFnZW50Iikscz1udWxsLG89MDt0LmFkZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxuKXtpZihlLmFkZEV2ZW50TGlzdGVuZXIpcmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpO2lmKGUuYXR0YWNoRXZlbnQpe3ZhciByPWZ1bmN0aW9uKCl7bi5jYWxsKGUsd2luZG93LmV2ZW50KX07bi5fd3JhcHBlcj1yLGUuYXR0YWNoRXZlbnQoIm9uIit0LHIpfX0sdC5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQsbil7aWYoZS5yZW1vdmVFdmVudExpc3RlbmVyKXJldHVybiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKTtlLmRldGFjaEV2ZW50JiZlLmRldGFjaEV2ZW50KCJvbiIrdCxuLl93cmFwcGVyfHxuKX0sdC5zdG9wRXZlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuc3RvcFByb3BhZ2F0aW9uKGUpLHQucHJldmVudERlZmF1bHQoZSksITF9LHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6ZS5jYW5jZWxCdWJibGU9ITB9LHQucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMX0sdC5nZXRCdXR0b249ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09ImRibGNsaWNrIj8wOmUudHlwZT09ImNvbnRleHRtZW51Inx8aS5pc01hYyYmZS5jdHJsS2V5JiYhZS5hbHRLZXkmJiFlLnNoaWZ0S2V5PzI6ZS5wcmV2ZW50RGVmYXVsdD9lLmJ1dHRvbjp7MTowLDI6Miw0OjF9W2UuYnV0dG9uXX0sdC5jYXB0dXJlPWZ1bmN0aW9uKGUsbixyKXtmdW5jdGlvbiBpKGUpe24mJm4oZSksciYmcihlKSx0LnJlbW92ZUxpc3RlbmVyKGRvY3VtZW50LCJtb3VzZW1vdmUiLG4sITApLHQucmVtb3ZlTGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNldXAiLGksITApLHQucmVtb3ZlTGlzdGVuZXIoZG9jdW1lbnQsImRyYWdzdGFydCIsaSwhMCl9cmV0dXJuIHQuYWRkTGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNlbW92ZSIsbiwhMCksdC5hZGRMaXN0ZW5lcihkb2N1bWVudCwibW91c2V1cCIsaSwhMCksdC5hZGRMaXN0ZW5lcihkb2N1bWVudCwiZHJhZ3N0YXJ0IixpLCEwKSxpfSx0LmFkZE1vdXNlV2hlZWxMaXN0ZW5lcj1mdW5jdGlvbihlLG4peyJvbm1vdXNld2hlZWwiaW4gZT90LmFkZExpc3RlbmVyKGUsIm1vdXNld2hlZWwiLGZ1bmN0aW9uKGUpe3ZhciB0PTg7ZS53aGVlbERlbHRhWCE9PXVuZGVmaW5lZD8oZS53aGVlbFg9LWUud2hlZWxEZWx0YVgvdCxlLndoZWVsWT0tZS53aGVlbERlbHRhWS90KTooZS53aGVlbFg9MCxlLndoZWVsWT0tZS53aGVlbERlbHRhL3QpLG4oZSl9KToib253aGVlbCJpbiBlP3QuYWRkTGlzdGVuZXIoZSwid2hlZWwiLGZ1bmN0aW9uKGUpe3ZhciB0PS4zNTtzd2l0Y2goZS5kZWx0YU1vZGUpe2Nhc2UgZS5ET01fREVMVEFfUElYRUw6ZS53aGVlbFg9ZS5kZWx0YVgqdHx8MCxlLndoZWVsWT1lLmRlbHRhWSp0fHwwO2JyZWFrO2Nhc2UgZS5ET01fREVMVEFfTElORTpjYXNlIGUuRE9NX0RFTFRBX1BBR0U6ZS53aGVlbFg9KGUuZGVsdGFYfHwwKSo1LGUud2hlZWxZPShlLmRlbHRhWXx8MCkqNX1uKGUpfSk6dC5hZGRMaXN0ZW5lcihlLCJET01Nb3VzZVNjcm9sbCIsZnVuY3Rpb24oZSl7ZS5heGlzJiZlLmF4aXM9PWUuSE9SSVpPTlRBTF9BWElTPyhlLndoZWVsWD0oZS5kZXRhaWx8fDApKjUsZS53aGVlbFk9MCk6KGUud2hlZWxYPTAsZS53aGVlbFk9KGUuZGV0YWlsfHwwKSo1KSxuKGUpfSl9LHQuYWRkTXVsdGlNb3VzZURvd25MaXN0ZW5lcj1mdW5jdGlvbihlLG4scixzKXtmdW5jdGlvbiBjKGUpe3QuZ2V0QnV0dG9uKGUpIT09MD9vPTA6ZS5kZXRhaWw+MT8obysrLG8+NCYmKG89MSkpOm89MTtpZihpLmlzSUUpe3ZhciBjPU1hdGguYWJzKGUuY2xpZW50WC11KT41fHxNYXRoLmFicyhlLmNsaWVudFktYSk+NTtpZighZnx8YylvPTE7ZiYmY2xlYXJUaW1lb3V0KGYpLGY9c2V0VGltZW91dChmdW5jdGlvbigpe2Y9bnVsbH0sbltvLTFdfHw2MDApLG89PTEmJih1PWUuY2xpZW50WCxhPWUuY2xpZW50WSl9ZS5fY2xpY2tzPW8scltzXSgibW91c2Vkb3duIixlKTtpZihvPjQpbz0wO2Vsc2UgaWYobz4xKXJldHVybiByW3NdKGxbb10sZSl9ZnVuY3Rpb24gaChlKXtvPTIsZiYmY2xlYXJUaW1lb3V0KGYpLGY9c2V0VGltZW91dChmdW5jdGlvbigpe2Y9bnVsbH0sbltvLTFdfHw2MDApLHJbc10oIm1vdXNlZG93biIsZSkscltzXShsW29dLGUpfXZhciBvPTAsdSxhLGYsbD17MjoiZGJsY2xpY2siLDM6InRyaXBsZWNsaWNrIiw0OiJxdWFkY2xpY2sifTtBcnJheS5pc0FycmF5KGUpfHwoZT1bZV0pLGUuZm9yRWFjaChmdW5jdGlvbihlKXt0LmFkZExpc3RlbmVyKGUsIm1vdXNlZG93biIsYyksaS5pc09sZElFJiZ0LmFkZExpc3RlbmVyKGUsImRibGNsaWNrIixoKX0pfTt2YXIgdT0haS5pc01hY3x8IWkuaXNPcGVyYXx8IktleWJvYXJkRXZlbnQiaW4gd2luZG93P2Z1bmN0aW9uKGUpe3JldHVybiAwfChlLmN0cmxLZXk/MTowKXwoZS5hbHRLZXk/MjowKXwoZS5zaGlmdEtleT80OjApfChlLm1ldGFLZXk/ODowKX06ZnVuY3Rpb24oZSl7cmV0dXJuIDB8KGUubWV0YUtleT8xOjApfChlLmFsdEtleT8yOjApfChlLnNoaWZ0S2V5PzQ6MCl8KGUuY3RybEtleT84OjApfTt0LmdldE1vZGlmaWVyU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiByLktFWV9NT0RTW3UoZSldfSx0LmFkZENvbW1hbmRLZXlMaXN0ZW5lcj1mdW5jdGlvbihlLG4pe3ZhciByPXQuYWRkTGlzdGVuZXI7aWYoaS5pc09sZEdlY2tvfHxpLmlzT3BlcmEmJiEoIktleWJvYXJkRXZlbnQiaW4gd2luZG93KSl7dmFyIG89bnVsbDtyKGUsImtleWRvd24iLGZ1bmN0aW9uKGUpe289ZS5rZXlDb2RlfSkscihlLCJrZXlwcmVzcyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEobixlLG8pfSl9ZWxzZXt2YXIgdT1udWxsO3IoZSwia2V5ZG93biIsZnVuY3Rpb24oZSl7c1tlLmtleUNvZGVdPShzW2Uua2V5Q29kZV18fDApKzE7dmFyIHQ9YShuLGUsZS5rZXlDb2RlKTtyZXR1cm4gdT1lLmRlZmF1bHRQcmV2ZW50ZWQsdH0pLHIoZSwia2V5cHJlc3MiLGZ1bmN0aW9uKGUpe3UmJihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLnNoaWZ0S2V5fHxlLm1ldGFLZXkpJiYodC5zdG9wRXZlbnQoZSksdT1udWxsKX0pLHIoZSwia2V5dXAiLGZ1bmN0aW9uKGUpe3NbZS5rZXlDb2RlXT1udWxsfSksc3x8KGYoKSxyKHdpbmRvdywiZm9jdXMiLGYpKX19O2lmKHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3cucG9zdE1lc3NhZ2UmJiFpLmlzT2xkSUUpe3ZhciBsPTE7dC5uZXh0VGljaz1mdW5jdGlvbihlLG4pe249bnx8d2luZG93O3ZhciByPSJ6ZXJvLXRpbWVvdXQtbWVzc2FnZS0iK2wrKyxpPWZ1bmN0aW9uKHMpe3MuZGF0YT09ciYmKHQuc3RvcFByb3BhZ2F0aW9uKHMpLHQucmVtb3ZlTGlzdGVuZXIobiwibWVzc2FnZSIsaSksZSgpKX07dC5hZGRMaXN0ZW5lcihuLCJtZXNzYWdlIixpKSxuLnBvc3RNZXNzYWdlKHIsIioiKX19dC4kaWRsZUJsb2NrZWQ9ITEsdC5vbklkbGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbiByKCl7dC4kaWRsZUJsb2NrZWQ/c2V0VGltZW91dChyLDEwMCk6ZSgpfSxuKX0sdC4kaWRsZUJsb2NrSWQ9bnVsbCx0LmJsb2NrSWRsZT1mdW5jdGlvbihlKXt0LiRpZGxlQmxvY2tJZCYmY2xlYXJUaW1lb3V0KHQuJGlkbGVCbG9ja0lkKSx0LiRpZGxlQmxvY2tlZD0hMCx0LiRpZGxlQmxvY2tJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC4kaWRsZUJsb2NrZWQ9ITF9LGV8fDEwMCl9LHQubmV4dEZyYW1lPXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiYod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cub1JlcXVlc3RBbmltYXRpb25GcmFtZSksdC5uZXh0RnJhbWU/dC5uZXh0RnJhbWU9dC5uZXh0RnJhbWUuYmluZCh3aW5kb3cpOnQubmV4dEZyYW1lPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSwxNyl9fSksYWNlLmRlZmluZSgiYWNlL3JhbmdlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJvdy10LnJvd3x8ZS5jb2x1bW4tdC5jb2x1bW59LGk9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5zdGFydD17cm93OmUsY29sdW1uOnR9LHRoaXMuZW5kPXtyb3c6bixjb2x1bW46cn19OyhmdW5jdGlvbigpe3RoaXMuaXNFcXVhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PT1lLnN0YXJ0LnJvdyYmdGhpcy5lbmQucm93PT09ZS5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09PWUuc3RhcnQuY29sdW1uJiZ0aGlzLmVuZC5jb2x1bW49PT1lLmVuZC5jb2x1bW59LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmFuZ2U6IFsiK3RoaXMuc3RhcnQucm93KyIvIit0aGlzLnN0YXJ0LmNvbHVtbisiXSAtPiBbIit0aGlzLmVuZC5yb3crIi8iK3RoaXMuZW5kLmNvbHVtbisiXSJ9LHRoaXMuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTB9LHRoaXMuY29tcGFyZVJhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5lbmQscj1lLnN0YXJ0O3JldHVybiB0PXRoaXMuY29tcGFyZShuLnJvdyxuLmNvbHVtbiksdD09MT8odD10aGlzLmNvbXBhcmUoci5yb3csci5jb2x1bW4pLHQ9PTE/Mjp0PT0wPzE6MCk6dD09LTE/LTI6KHQ9dGhpcy5jb21wYXJlKHIucm93LHIuY29sdW1uKSx0PT0tMT8tMTp0PT0xPzQyOjApfSx0aGlzLmNvbXBhcmVQb2ludD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wYXJlKGUucm93LGUuY29sdW1uKX0sdGhpcy5jb250YWluc1JhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbXBhcmVQb2ludChlLnN0YXJ0KT09MCYmdGhpcy5jb21wYXJlUG9pbnQoZS5lbmQpPT0wfSx0aGlzLmludGVyc2VjdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb21wYXJlUmFuZ2UoZSk7cmV0dXJuIHQ9PS0xfHx0PT0wfHx0PT0xfSx0aGlzLmlzRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10fSx0aGlzLmlzU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10fSx0aGlzLnNldFN0YXJ0PWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLnN0YXJ0LmNvbHVtbj1lLmNvbHVtbix0aGlzLnN0YXJ0LnJvdz1lLnJvdyk6KHRoaXMuc3RhcnQucm93PWUsdGhpcy5zdGFydC5jb2x1bW49dCl9LHRoaXMuc2V0RW5kPWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLmVuZC5jb2x1bW49ZS5jb2x1bW4sdGhpcy5lbmQucm93PWUucm93KToodGhpcy5lbmQucm93PWUsdGhpcy5lbmQuY29sdW1uPXQpfSx0aGlzLmluc2lkZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzRW5kKGUsdCl8fHRoaXMuaXNTdGFydChlLHQpPyExOiEwOiExfSx0aGlzLmluc2lkZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNFbmQoZSx0KT8hMTohMDohMX0sdGhpcy5pbnNpZGVFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc1N0YXJ0KGUsdCk/ITE6ITA6ITF9LHRoaXMuY29tcGFyZT1mdW5jdGlvbihlLHQpe3JldHVybiF0aGlzLmlzTXVsdGlMaW5lKCkmJmU9PT10aGlzLnN0YXJ0LnJvdz90PHRoaXMuc3RhcnQuY29sdW1uPy0xOnQ+dGhpcy5lbmQuY29sdW1uPzE6MDplPHRoaXMuc3RhcnQucm93Py0xOmU+dGhpcy5lbmQucm93PzE6dGhpcy5zdGFydC5yb3c9PT1lP3Q+PXRoaXMuc3RhcnQuY29sdW1uPzA6LTE6dGhpcy5lbmQucm93PT09ZT90PD10aGlzLmVuZC5jb2x1bW4/MDoxOjB9LHRoaXMuY29tcGFyZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dD8tMTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jb21wYXJlRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10PzE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY29tcGFyZUluc2lkZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dD8xOnRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dD8tMTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihlLHQpe2lmKHRoaXMuZW5kLnJvdz50KXZhciBuPXtyb3c6dCsxLGNvbHVtbjowfTtlbHNlIGlmKHRoaXMuZW5kLnJvdzxlKXZhciBuPXtyb3c6ZSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c+dCl2YXIgcj17cm93OnQrMSxjb2x1bW46MH07ZWxzZSBpZih0aGlzLnN0YXJ0LnJvdzxlKXZhciByPXtyb3c6ZSxjb2x1bW46MH07cmV0dXJuIGkuZnJvbVBvaW50cyhyfHx0aGlzLnN0YXJ0LG58fHRoaXMuZW5kKX0sdGhpcy5leHRlbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNvbXBhcmUoZSx0KTtpZihuPT0wKXJldHVybiB0aGlzO2lmKG49PS0xKXZhciByPXtyb3c6ZSxjb2x1bW46dH07ZWxzZSB2YXIgcz17cm93OmUsY29sdW1uOnR9O3JldHVybiBpLmZyb21Qb2ludHMocnx8dGhpcy5zdGFydCxzfHx0aGlzLmVuZCl9LHRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09PXRoaXMuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PT10aGlzLmVuZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3chPT10aGlzLmVuZC5yb3d9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gaS5mcm9tUG9pbnRzKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSx0aGlzLmNvbGxhcHNlUm93cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC5jb2x1bW49PTA/bmV3IGkodGhpcy5zdGFydC5yb3csMCxNYXRoLm1heCh0aGlzLnN0YXJ0LnJvdyx0aGlzLmVuZC5yb3ctMSksMCk6bmV3IGkodGhpcy5zdGFydC5yb3csMCx0aGlzLmVuZC5yb3csMCl9LHRoaXMudG9TY3JlZW5SYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnN0YXJ0KSxuPWUuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZW5kKTtyZXR1cm4gbmV3IGkodC5yb3csdC5jb2x1bW4sbi5yb3csbi5jb2x1bW4pfSx0aGlzLm1vdmVCeT1mdW5jdGlvbihlLHQpe3RoaXMuc3RhcnQucm93Kz1lLHRoaXMuc3RhcnQuY29sdW1uKz10LHRoaXMuZW5kLnJvdys9ZSx0aGlzLmVuZC5jb2x1bW4rPXR9fSkuY2FsbChpLnByb3RvdHlwZSksaS5mcm9tUG9pbnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBpKGUucm93LGUuY29sdW1uLHQucm93LHQuY29sdW1uKX0saS5jb21wYXJlUG9pbnRzPXIsaS5jb21wYXJlUG9pbnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucm93LXQucm93fHxlLmNvbHVtbi10LmNvbHVtbn0sdC5SYW5nZT1pfSksYWNlLmRlZmluZSgiYWNlL2xpYi9sYW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Lmxhc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19LHQuc3RyaW5nUmV2ZXJzZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSx0LnN0cmluZ1JlcGVhdD1mdW5jdGlvbihlLHQpe3ZhciBuPSIiO3doaWxlKHQ+MCl7dCYxJiYobis9ZSk7aWYodD4+PTEpZSs9ZX1yZXR1cm4gbn07dmFyIHI9L15cc1xzKi8saT0vXHNccyokLzt0LnN0cmluZ1RyaW1MZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiIil9LHQuc3RyaW5nVHJpbVJpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoaSwiIil9LHQuY29weU9iamVjdD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9LHQuY29weUFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyllW25dJiZ0eXBlb2YgZVtuXT09Im9iamVjdCI/dFtuXT10aGlzLmNvcHlPYmplY3QoZVtuXSk6dFtuXT1lW25dO3JldHVybiB0fSx0LmRlZXBDb3B5PWZ1bmN0aW9uIHMoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgdDtpZihBcnJheS5pc0FycmF5KGUpKXt0PVtdO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRbbl09cyhlW25dKTtyZXR1cm4gdH1pZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkhPT0iW29iamVjdCBPYmplY3RdIilyZXR1cm4gZTt0PXt9O2Zvcih2YXIgbiBpbiBlKXRbbl09cyhlW25dKTtyZXR1cm4gdH0sdC5hcnJheVRvTWFwPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRbZVtuXV09MTtyZXR1cm4gdH0sdC5jcmVhdGVNYXA9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9LHQuYXJyYXlSZW1vdmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPD1lLmxlbmd0aDtuKyspdD09PWVbbl0mJmUuc3BsaWNlKG4sMSl9LHQuZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLiorP14ke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfSx0LmVzY2FwZUhUTUw9ZnVuY3Rpb24oZSl7cmV0dXJuKCIiK2UpLnJlcGxhY2UoLyYvZywiJiMzODsiKS5yZXBsYWNlKC8iL2csIiYjMzQ7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJiM2MDsiKX0sdC5nZXRNYXRjaE9mZnNldHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtyZXR1cm4gZS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7bi5wdXNoKHtvZmZzZXQ6YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMl0sbGVuZ3RoOmUubGVuZ3RofSl9KSxufSx0LmRlZmVycmVkQ2FsbD1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49ZnVuY3Rpb24oKXt0PW51bGwsZSgpfSxyPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbmNlbCgpLHQ9c2V0VGltZW91dChuLGV8fDApLHJ9O3JldHVybiByLnNjaGVkdWxlPXIsci5jYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuY2VsKCksZSgpLHJ9LHIuY2FuY2VsPWZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dCh0KSx0PW51bGwscn0sci5pc1BlbmRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0scn0sdC5kZWxheWVkQ2FsbD1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1mdW5jdGlvbigpe249bnVsbCxlKCl9LGk9ZnVuY3Rpb24oZSl7bj09bnVsbCYmKG49c2V0VGltZW91dChyLGV8fHQpKX07cmV0dXJuIGkuZGVsYXk9ZnVuY3Rpb24oZSl7biYmY2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dChyLGV8fHQpfSxpLnNjaGVkdWxlPWksaS5jYWxsPWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWwoKSxlKCl9LGkuY2FuY2VsPWZ1bmN0aW9uKCl7biYmY2xlYXJUaW1lb3V0KG4pLG49bnVsbH0saS5pc1BlbmRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0saX19KSxhY2UuZGVmaW5lKCJhY2UvY2xpcGJvYXJkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcjtuLmV4cG9ydHM9e2xpbmVNb2RlOiExLHBhc3RlQ2FuY2VsbGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHImJnI+RGF0ZS5ub3coKS01MD8hMDpyPSExfSxjYW5jZWw6ZnVuY3Rpb24oKXtyPURhdGUubm93KCl9fX0pLGFjZS5kZWZpbmUoImFjZS9rZXlib2FyZC90ZXh0aW5wdXQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2V2ZW50IiwiYWNlL2xpYi91c2VyYWdlbnQiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvbGFuZyIsImFjZS9jbGlwYm9hcmQiLCJhY2UvbGliL2tleXMiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9ZSgiLi4vbGliL2RvbSIpLG89ZSgiLi4vbGliL2xhbmciKSx1PWUoIi4uL2NsaXBib2FyZCIpLGE9aS5pc0Nocm9tZTwxOCxmPWkuaXNJRSxsPWkuaXNDaHJvbWU+NjMsYz00MDAsaD1lKCIuLi9saWIva2V5cyIpLHA9aC5LRVlfTU9EUyxkPWkuaXNJT1Msdj1kPy9ccy86L1xuLyxtPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24geigpe1M9ITAsbi5ibHVyKCksbi5mb2N1cygpLFM9ITF9ZnVuY3Rpb24gWChlKXtlLmtleUNvZGU9PTI3JiZuLnZhbHVlLmxlbmd0aDxuLnNlbGVjdGlvblN0YXJ0JiYoeXx8KHg9bi52YWx1ZSksVD1OPS0xLEwoKSksVygpfWZ1bmN0aW9uICQoKXtjbGVhclRpbWVvdXQoViksVj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dyYmKG4uc3R5bGUuY3NzVGV4dD13LHc9IiIpLHQucmVuZGVyZXIuJGlzTW91c2VQcmVzc2VkPSExLHQucmVuZGVyZXIuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yJiZ0LnJlbmRlcmVyLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpfSwwKX1mdW5jdGlvbiBLKGUsdCxuKXt2YXIgcj1udWxsLGk9ITE7bi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixmdW5jdGlvbihlKXtyJiZjbGVhclRpbWVvdXQociksaT0hMH0sITApLG4uYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLGZ1bmN0aW9uKGUpe3I9c2V0VGltZW91dChmdW5jdGlvbigpe2k9ITF9LDEwMCl9LCEwKTt2YXIgcz1mdW5jdGlvbihlKXtpZihkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09bilyZXR1cm47aWYoaXx8eXx8dC4kbW91c2VIYW5kbGVyLmlzTW91c2VQcmVzc2VkKXJldHVybjtpZihtKXJldHVybjt2YXIgcj1uLnNlbGVjdGlvblN0YXJ0LHM9bi5zZWxlY3Rpb25FbmQsbz1udWxsLHU9MDtpZihyPT0wKW89aC51cDtlbHNlIGlmKHI9PTEpbz1oLmhvbWU7ZWxzZSBpZihzPk4mJnhbc109PSJcbiIpbz1oLmVuZDtlbHNlIGlmKHI8VCYmeFtyLTFdPT0iICIpbz1oLmxlZnQsdT1wLm9wdGlvbjtlbHNlIGlmKHI8VHx8cj09VCYmTiE9VCYmcj09cylvPWgubGVmdDtlbHNlIGlmKHM+TiYmeC5zbGljZSgwLHMpLnNwbGl0KCJcbiIpLmxlbmd0aD4yKW89aC5kb3duO2Vsc2UgaWYocz5OJiZ4W3MtMV09PSIgIilvPWgucmlnaHQsdT1wLm9wdGlvbjtlbHNlIGlmKHM+Tnx8cz09TiYmTiE9VCYmcj09cylvPWgucmlnaHQ7ciE9PXMmJih1fD1wLnNoaWZ0KTtpZihvKXt2YXIgYT10Lm9uQ29tbWFuZEtleSh7fSx1LG8pO2lmKCFhJiZ0LmNvbW1hbmRzKXtvPWgua2V5Q29kZVRvU3RyaW5nKG8pO3ZhciBmPXQuY29tbWFuZHMuZmluZEtleUNvbW1hbmQodSxvKTtmJiZ0LmV4ZWNDb21tYW5kKGYpfVQ9cixOPXMsTCgiIil9fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHMpLHQub24oImRlc3Ryb3kiLGZ1bmN0aW9uKCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixzKX0pfXZhciBuPXMuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtuLmNsYXNzTmFtZT0iYWNlX3RleHQtaW5wdXQiLG4uc2V0QXR0cmlidXRlKCJ3cmFwIiwib2ZmIiksbi5zZXRBdHRyaWJ1dGUoImF1dG9jb3JyZWN0Iiwib2ZmIiksbi5zZXRBdHRyaWJ1dGUoImF1dG9jYXBpdGFsaXplIiwib2ZmIiksbi5zZXRBdHRyaWJ1dGUoInNwZWxsY2hlY2siLCExKSxuLnN0eWxlLm9wYWNpdHk9IjAiLGUuaW5zZXJ0QmVmb3JlKG4sZS5maXJzdENoaWxkKTt2YXIgbT0hMSxnPSExLHk9ITEsYj0hMSx3PSIiO2kuaXNNb2JpbGV8fChuLnN0eWxlLmZvbnRTaXplPSIxcHgiKTt2YXIgRT0hMSxTPSExLHg9IiIsVD0wLE49MDt0cnl7dmFyIEM9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW59Y2F0Y2goayl7fXIuYWRkTGlzdGVuZXIobiwiYmx1ciIsZnVuY3Rpb24oZSl7aWYoUylyZXR1cm47dC5vbkJsdXIoZSksQz0hMX0pLHIuYWRkTGlzdGVuZXIobiwiZm9jdXMiLGZ1bmN0aW9uKGUpe2lmKFMpcmV0dXJuO0M9ITA7aWYoaS5pc0VkZ2UpdHJ5e2lmKCFkb2N1bWVudC5oYXNGb2N1cygpKXJldHVybn1jYXRjaChlKXt9dC5vbkZvY3VzKGUpLGkuaXNFZGdlP3NldFRpbWVvdXQoTCk6TCgpfSksdGhpcy4kZm9jdXNTY3JvbGw9ITEsdGhpcy5mb2N1cz1mdW5jdGlvbigpe2lmKHd8fGx8fHRoaXMuJGZvY3VzU2Nyb2xsPT0iYnJvd3NlciIpcmV0dXJuIG4uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KTt2YXIgZT1uLnN0eWxlLnRvcDtuLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsbi5zdHlsZS50b3A9IjBweCI7dHJ5e3ZhciB0PW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIT0wfWNhdGNoKHIpe3JldHVybn12YXIgaT1bXTtpZih0KXt2YXIgcz1uLnBhcmVudEVsZW1lbnQ7d2hpbGUocyYmcy5ub2RlVHlwZT09MSlpLnB1c2gocykscy5zZXRBdHRyaWJ1dGUoImFjZV9ub2NvbnRleHQiLCEwKSwhcy5wYXJlbnRFbGVtZW50JiZzLmdldFJvb3ROb2RlP3M9cy5nZXRSb290Tm9kZSgpLmhvc3Q6cz1zLnBhcmVudEVsZW1lbnR9bi5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLHQmJmkuZm9yRWFjaChmdW5jdGlvbihlKXtlLnJlbW92ZUF0dHJpYnV0ZSgiYWNlX25vY29udGV4dCIpfSksc2V0VGltZW91dChmdW5jdGlvbigpe24uc3R5bGUucG9zaXRpb249IiIsbi5zdHlsZS50b3A9PSIwcHgiJiYobi5zdHlsZS50b3A9ZSl9LDApfSx0aGlzLmJsdXI9ZnVuY3Rpb24oKXtuLmJsdXIoKX0sdGhpcy5pc0ZvY3VzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gQ30sdC5vbigiYmVmb3JlRW5kT3BlcmF0aW9uIixmdW5jdGlvbigpe2lmKHQuY3VyT3AmJnQuY3VyT3AuY29tbWFuZC5uYW1lPT0iaW5zZXJ0c3RyaW5nIilyZXR1cm47eSYmKHg9bi52YWx1ZT0iIixVKCkpLEwoKX0pO3ZhciBMPWQ/ZnVuY3Rpb24oZSl7aWYoIUN8fG0mJiFlfHxiKXJldHVybjtlfHwoZT0iIik7dmFyIHI9IlxuIGFiIitlKyJjZGUgZmdcbiI7ciE9bi52YWx1ZSYmKG4udmFsdWU9eD1yKTt2YXIgaT00LHM9NCsoZS5sZW5ndGh8fCh0LnNlbGVjdGlvbi5pc0VtcHR5KCk/MDoxKSk7KFQhPWl8fE4hPXMpJiZuLnNldFNlbGVjdGlvblJhbmdlKGkscyksVD1pLE49c306ZnVuY3Rpb24oKXtpZih5fHxiKXJldHVybjtpZighQyYmIV8pcmV0dXJuO3k9ITA7dmFyIGU9dC5zZWxlY3Rpb24scj1lLmdldFJhbmdlKCksaT1lLmN1cnNvci5yb3cscz1yLnN0YXJ0LmNvbHVtbixvPXIuZW5kLmNvbHVtbix1PXQuc2Vzc2lvbi5nZXRMaW5lKGkpO2lmKHIuc3RhcnQucm93IT1pKXt2YXIgYT10LnNlc3Npb24uZ2V0TGluZShpLTEpO3M9ci5zdGFydC5yb3c8aS0xPzA6cyxvKz1hLmxlbmd0aCsxLHU9YSsiXG4iK3V9ZWxzZSBpZihyLmVuZC5yb3chPWkpe3ZhciBmPXQuc2Vzc2lvbi5nZXRMaW5lKGkrMSk7bz1yLmVuZC5yb3c+aSsxP2YubGVuZ3RoOm8sbys9dS5sZW5ndGgrMSx1PXUrIlxuIitmfXUubGVuZ3RoPmMmJihzPGMmJm88Yz91PXUuc2xpY2UoMCxjKToodT0iXG4iLHM9MCxvPTEpKTt2YXIgbD11KyJcblxuIjtsIT14JiYobi52YWx1ZT14PWwsVD1OPWwubGVuZ3RoKSxfJiYoVD1uLnNlbGVjdGlvblN0YXJ0LE49bi5zZWxlY3Rpb25FbmQpO2lmKE4hPW98fFQhPXN8fG4uc2VsZWN0aW9uRW5kIT1OKXRyeXtuLnNldFNlbGVjdGlvblJhbmdlKHMsbyksVD1zLE49b31jYXRjaChoKXt9eT0hMX07QyYmdC5vbkZvY3VzKCk7dmFyIEE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnQ9PT0wJiZlLnNlbGVjdGlvbkVuZD49eC5sZW5ndGgmJmUudmFsdWU9PT14JiZ4JiZlLnNlbGVjdGlvbkVuZCE9PU59LE89ZnVuY3Rpb24oZSl7aWYoeSlyZXR1cm47bT9tPSExOkEobikmJih0LnNlbGVjdEFsbCgpLEwoKSl9LE09bnVsbDt0aGlzLnNldElucHV0SGFuZGxlcj1mdW5jdGlvbihlKXtNPWV9LHRoaXMuZ2V0SW5wdXRIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIE19O3ZhciBfPSExLEQ9ZnVuY3Rpb24oZSxyKXtfJiYoXz0hMSk7aWYoZylyZXR1cm4gTCgpLGUmJnQub25QYXN0ZShlKSxnPSExLCIiO3ZhciBpPW4uc2VsZWN0aW9uU3RhcnQscz1uLnNlbGVjdGlvbkVuZCxvPVQsdT14Lmxlbmd0aC1OLGE9ZSxmPWUubGVuZ3RoLWksbD1lLmxlbmd0aC1zLGM9MDt3aGlsZShvPjAmJnhbY109PWVbY10pYysrLG8tLTthPWEuc2xpY2UoYyksYz0xO3doaWxlKHU+MCYmeC5sZW5ndGgtYz5ULTEmJnhbeC5sZW5ndGgtY109PWVbZS5sZW5ndGgtY10pYysrLHUtLTtmLT1jLTEsbC09Yy0xO3ZhciBoPWEubGVuZ3RoLWMrMTtyZXR1cm4gaDwwJiYobz0taCxoPTApLGE9YS5zbGljZSgwLGgpLCFyJiZmPT1hLmxlbmd0aCYmIW8mJiF1JiYhbD8iIjooYj0hMCxhJiYhbyYmIXUmJiFmJiYhbHx8RT90Lm9uVGV4dElucHV0KGEpOnQub25UZXh0SW5wdXQoYSx7ZXh0ZW5kTGVmdDpvLGV4dGVuZFJpZ2h0OnUscmVzdG9yZVN0YXJ0OmYscmVzdG9yZUVuZDpsfSksYj0hMSx4PWUsVD1pLE49cyxhKX0sUD1mdW5jdGlvbihlKXtpZih5KXJldHVybiBSKCk7aWYoZSYmZS5pbnB1dFR5cGUpe2lmKGUuaW5wdXRUeXBlPT0iaGlzdG9yeVVuZG8iKXJldHVybiB0LmV4ZWNDb21tYW5kKCJ1bmRvIik7aWYoZS5pbnB1dFR5cGU9PSJoaXN0b3J5UmVkbyIpcmV0dXJuIHQuZXhlY0NvbW1hbmQoInJlZG8iKX12YXIgcj1uLnZhbHVlLGk9RChyLCEwKTsoci5sZW5ndGg+YysxMDB8fHYudGVzdChpKSkmJkwoKX0sSD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5jbGlwYm9hcmREYXRhfHx3aW5kb3cuY2xpcGJvYXJkRGF0YTtpZighcnx8YSlyZXR1cm47dmFyIGk9Znx8bj8iVGV4dCI6InRleHQvcGxhaW4iO3RyeXtyZXR1cm4gdD9yLnNldERhdGEoaSx0KSE9PSExOnIuZ2V0RGF0YShpKX1jYXRjaChlKXtpZighbilyZXR1cm4gSChlLHQsITApfX0sQj1mdW5jdGlvbihlLGkpe3ZhciBzPXQuZ2V0Q29weVRleHQoKTtpZighcylyZXR1cm4gci5wcmV2ZW50RGVmYXVsdChlKTtIKGUscyk/KGQmJihMKHMpLG09cyxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bT0hMX0sMTApKSxpP3Qub25DdXQoKTp0Lm9uQ29weSgpLHIucHJldmVudERlZmF1bHQoZSkpOihtPSEwLG4udmFsdWU9cyxuLnNlbGVjdCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXttPSExLEwoKSxpP3Qub25DdXQoKTp0Lm9uQ29weSgpfSkpfSxqPWZ1bmN0aW9uKGUpe0IoZSwhMCl9LEY9ZnVuY3Rpb24oZSl7QihlLCExKX0sST1mdW5jdGlvbihlKXt2YXIgcz1IKGUpO2lmKHUucGFzdGVDYW5jZWxsZWQoKSlyZXR1cm47dHlwZW9mIHM9PSJzdHJpbmciPyhzJiZ0Lm9uUGFzdGUocyxlKSxpLmlzSUUmJnNldFRpbWVvdXQoTCksci5wcmV2ZW50RGVmYXVsdChlKSk6KG4udmFsdWU9IiIsZz0hMCl9O3IuYWRkQ29tbWFuZEtleUxpc3RlbmVyKG4sdC5vbkNvbW1hbmRLZXkuYmluZCh0KSksci5hZGRMaXN0ZW5lcihuLCJzZWxlY3QiLE8pLHIuYWRkTGlzdGVuZXIobiwiaW5wdXQiLFApLHIuYWRkTGlzdGVuZXIobiwiY3V0IixqKSxyLmFkZExpc3RlbmVyKG4sImNvcHkiLEYpLHIuYWRkTGlzdGVuZXIobiwicGFzdGUiLEkpLCghKCJvbmN1dCJpbiBuKXx8ISgib25jb3B5ImluIG4pfHwhKCJvbnBhc3RlImluIG4pKSYmci5hZGRMaXN0ZW5lcihlLCJrZXlkb3duIixmdW5jdGlvbihlKXtpZihpLmlzTWFjJiYhZS5tZXRhS2V5fHwhZS5jdHJsS2V5KXJldHVybjtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDY3OkYoZSk7YnJlYWs7Y2FzZSA4NjpJKGUpO2JyZWFrO2Nhc2UgODg6aihlKX19KTt2YXIgcT1mdW5jdGlvbihlKXtpZih5fHwhdC5vbkNvbXBvc2l0aW9uU3RhcnR8fHQuJHJlYWRPbmx5KXJldHVybjt5PXt9O2lmKEUpcmV0dXJuO3NldFRpbWVvdXQoUiwwKSx0Lm9uKCJtb3VzZWRvd24iLHopO3ZhciByPXQuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtyLmVuZC5yb3c9ci5zdGFydC5yb3csci5lbmQuY29sdW1uPXIuc3RhcnQuY29sdW1uLHkubWFya2VyUmFuZ2U9cix5LnNlbGVjdGlvblN0YXJ0PVQsdC5vbkNvbXBvc2l0aW9uU3RhcnQoeSkseS51c2VUZXh0YXJlYUZvcklNRT8obi52YWx1ZT0iIix4PSIiLFQ9MCxOPTApOihuLm1zR2V0SW5wdXRDb250ZXh0JiYoeS5jb250ZXh0PW4ubXNHZXRJbnB1dENvbnRleHQoKSksbi5nZXRJbnB1dENvbnRleHQmJih5LmNvbnRleHQ9bi5nZXRJbnB1dENvbnRleHQoKSkpfSxSPWZ1bmN0aW9uKCl7aWYoIXl8fCF0Lm9uQ29tcG9zaXRpb25VcGRhdGV8fHQuJHJlYWRPbmx5KXJldHVybjtpZihFKXJldHVybiB6KCk7aWYoeS51c2VUZXh0YXJlYUZvcklNRSl0Lm9uQ29tcG9zaXRpb25VcGRhdGUobi52YWx1ZSk7ZWxzZXt2YXIgZT1uLnZhbHVlO0QoZSkseS5tYXJrZXJSYW5nZSYmKHkuY29udGV4dCYmKHkubWFya2VyUmFuZ2Uuc3RhcnQuY29sdW1uPXkuc2VsZWN0aW9uU3RhcnQ9eS5jb250ZXh0LmNvbXBvc2l0aW9uU3RhcnRPZmZzZXQpLHkubWFya2VyUmFuZ2UuZW5kLmNvbHVtbj15Lm1hcmtlclJhbmdlLnN0YXJ0LmNvbHVtbitOLXkuc2VsZWN0aW9uU3RhcnQpfX0sVT1mdW5jdGlvbihlKXtpZighdC5vbkNvbXBvc2l0aW9uRW5kfHx0LiRyZWFkT25seSlyZXR1cm47eT0hMSx0Lm9uQ29tcG9zaXRpb25FbmQoKSx0Lm9mZigibW91c2Vkb3duIix6KSxlJiZQKCl9LFc9by5kZWxheWVkQ2FsbChSLDUwKS5zY2hlZHVsZS5iaW5kKG51bGwsbnVsbCk7ci5hZGRMaXN0ZW5lcihuLCJjb21wb3NpdGlvbnN0YXJ0IixxKSxyLmFkZExpc3RlbmVyKG4sImNvbXBvc2l0aW9udXBkYXRlIixSKSxyLmFkZExpc3RlbmVyKG4sImtleXVwIixYKSxyLmFkZExpc3RlbmVyKG4sImtleWRvd24iLFcpLHIuYWRkTGlzdGVuZXIobiwiY29tcG9zaXRpb25lbmQiLFUpLHRoaXMuZ2V0RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiBufSx0aGlzLnNldENvbW1hbmRNb2RlPWZ1bmN0aW9uKGUpe0U9ZSxuLnJlYWRPbmx5PSExfSx0aGlzLnNldFJlYWRPbmx5PWZ1bmN0aW9uKGUpe0V8fChuLnJlYWRPbmx5PWUpfSx0aGlzLnNldENvcHlXaXRoRW1wdHlTZWxlY3Rpb249ZnVuY3Rpb24oZSl7fSx0aGlzLm9uQ29udGV4dE1lbnU9ZnVuY3Rpb24oZSl7Xz0hMCxMKCksdC5fZW1pdCgibmF0aXZlY29udGV4dG1lbnUiLHt0YXJnZXQ6dCxkb21FdmVudDplfSksdGhpcy5tb3ZlVG9Nb3VzZShlLCEwKX0sdGhpcy5tb3ZlVG9Nb3VzZT1mdW5jdGlvbihlLG8pe3d8fCh3PW4uc3R5bGUuY3NzVGV4dCksbi5zdHlsZS5jc3NUZXh0PShvPyJ6LWluZGV4OjEwMDAwMDsiOiIiKSsoaS5pc0lFPyJvcGFjaXR5OjAuMTsiOiIiKSsidGV4dC1pbmRlbnQ6IC0iKyhUK04pKnQucmVuZGVyZXIuY2hhcmFjdGVyV2lkdGgqLjUrInB4OyI7dmFyIHU9dC5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1zLmNvbXB1dGVkU3R5bGUodC5jb250YWluZXIpLGY9dS50b3ArKHBhcnNlSW50KGEuYm9yZGVyVG9wV2lkdGgpfHwwKSxsPXUubGVmdCsocGFyc2VJbnQodS5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxjPXUuYm90dG9tLWYtbi5jbGllbnRIZWlnaHQtMixoPWZ1bmN0aW9uKGUpe3MudHJhbnNsYXRlKG4sZS5jbGllbnRYLWwtMixNYXRoLm1pbihlLmNsaWVudFktZi0yLGMpKX07aChlKTtpZihlLnR5cGUhPSJtb3VzZWRvd24iKXJldHVybjt0LnJlbmRlcmVyLiRpc01vdXNlUHJlc3NlZD0hMCxjbGVhclRpbWVvdXQoViksaS5pc1dpbiYmci5jYXB0dXJlKHQuY29udGFpbmVyLGgsJCl9LHRoaXMub25Db250ZXh0TWVudUNsb3NlPSQ7dmFyIFYsSj1mdW5jdGlvbihlKXt0LnRleHRJbnB1dC5vbkNvbnRleHRNZW51KGUpLCQoKX07ci5hZGRMaXN0ZW5lcihuLCJtb3VzZXVwIixKKSxyLmFkZExpc3RlbmVyKG4sIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLCQoKX0pLHIuYWRkTGlzdGVuZXIodC5yZW5kZXJlci5zY3JvbGxlciwiY29udGV4dG1lbnUiLEopLHIuYWRkTGlzdGVuZXIobiwiY29udGV4dG1lbnUiLEopLGQmJksoZSx0LG4pfTt0LlRleHRJbnB1dD1tfSksYWNlLmRlZmluZSgiYWNlL21vdXNlL2RlZmF1bHRfaGFuZGxlcnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL3VzZXJhZ2VudCJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtlLiRjbGlja1NlbGVjdGlvbj1udWxsO3ZhciB0PWUuZWRpdG9yO3Quc2V0RGVmYXVsdEhhbmRsZXIoIm1vdXNlZG93biIsdGhpcy5vbk1vdXNlRG93bi5iaW5kKGUpKSx0LnNldERlZmF1bHRIYW5kbGVyKCJkYmxjbGljayIsdGhpcy5vbkRvdWJsZUNsaWNrLmJpbmQoZSkpLHQuc2V0RGVmYXVsdEhhbmRsZXIoInRyaXBsZWNsaWNrIix0aGlzLm9uVHJpcGxlQ2xpY2suYmluZChlKSksdC5zZXREZWZhdWx0SGFuZGxlcigicXVhZGNsaWNrIix0aGlzLm9uUXVhZENsaWNrLmJpbmQoZSkpLHQuc2V0RGVmYXVsdEhhbmRsZXIoIm1vdXNld2hlZWwiLHRoaXMub25Nb3VzZVdoZWVsLmJpbmQoZSkpO3ZhciBuPVsic2VsZWN0Iiwic3RhcnRTZWxlY3QiLCJzZWxlY3RFbmQiLCJzZWxlY3RBbGxFbmQiLCJzZWxlY3RCeVdvcmRzRW5kIiwic2VsZWN0QnlMaW5lc0VuZCIsImRyYWdXYWl0IiwiZHJhZ1dhaXRFbmQiLCJmb2N1c1dhaXQiXTtuLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT10aGlzW3RdfSx0aGlzKSxlLnNlbGVjdEJ5TGluZXM9dGhpcy5leHRlbmRTZWxlY3Rpb25CeS5iaW5kKGUsImdldExpbmVSYW5nZSIpLGUuc2VsZWN0QnlXb3Jkcz10aGlzLmV4dGVuZFNlbGVjdGlvbkJ5LmJpbmQoZSwiZ2V0V29yZFJhbmdlIil9ZnVuY3Rpb24gdShlLHQsbixyKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KG4tZSwyKStNYXRoLnBvdyhyLXQsMikpfWZ1bmN0aW9uIGEoZSx0KXtpZihlLnN0YXJ0LnJvdz09ZS5lbmQucm93KXZhciBuPTIqdC5jb2x1bW4tZS5zdGFydC5jb2x1bW4tZS5lbmQuY29sdW1uO2Vsc2UgaWYoZS5zdGFydC5yb3c9PWUuZW5kLnJvdy0xJiYhZS5zdGFydC5jb2x1bW4mJiFlLmVuZC5jb2x1bW4pdmFyIG49dC5jb2x1bW4tNDtlbHNlIHZhciBuPTIqdC5yb3ctZS5zdGFydC5yb3ctZS5lbmQucm93O3JldHVybiBuPDA/e2N1cnNvcjplLnN0YXJ0LGFuY2hvcjplLmVuZH06e2N1cnNvcjplLmVuZCxhbmNob3I6ZS5zdGFydH19dmFyIHI9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLGk9MCxzPTU1MDsoZnVuY3Rpb24oKXt0aGlzLm9uTW91c2VEb3duPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5TZWxlY3Rpb24oKSxuPWUuZ2V0RG9jdW1lbnRQb3NpdGlvbigpO3RoaXMubW91c2Vkb3duRXZlbnQ9ZTt2YXIgaT10aGlzLmVkaXRvcixzPWUuZ2V0QnV0dG9uKCk7aWYocyE9PTApe3ZhciBvPWkuZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PW8uaXNFbXB0eSgpOyh1fHxzPT0xKSYmaS5zZWxlY3Rpb24ubW92ZVRvUG9zaXRpb24obikscz09MiYmKGkudGV4dElucHV0Lm9uQ29udGV4dE1lbnUoZS5kb21FdmVudCksci5pc01vemlsbGF8fGUucHJldmVudERlZmF1bHQoKSk7cmV0dXJufXRoaXMubW91c2Vkb3duRXZlbnQudGltZT1EYXRlLm5vdygpO2lmKHQmJiFpLmlzRm9jdXNlZCgpKXtpLmZvY3VzKCk7aWYodGhpcy4kZm9jdXNUaW1lb3V0JiYhdGhpcy4kY2xpY2tTZWxlY3Rpb24mJiFpLmluTXVsdGlTZWxlY3RNb2RlKXt0aGlzLnNldFN0YXRlKCJmb2N1c1dhaXQiKSx0aGlzLmNhcHR1cmVNb3VzZShlKTtyZXR1cm59fXJldHVybiB0aGlzLmNhcHR1cmVNb3VzZShlKSx0aGlzLnN0YXJ0U2VsZWN0KG4sZS5kb21FdmVudC5fY2xpY2tzPjEpLGUucHJldmVudERlZmF1bHQoKX0sdGhpcy5zdGFydFNlbGVjdD1mdW5jdGlvbihlLHQpe2U9ZXx8dGhpcy5lZGl0b3IucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXModGhpcy54LHRoaXMueSk7dmFyIG49dGhpcy5lZGl0b3I7aWYoIXRoaXMubW91c2Vkb3duRXZlbnQpcmV0dXJuO3RoaXMubW91c2Vkb3duRXZlbnQuZ2V0U2hpZnRLZXkoKT9uLnNlbGVjdGlvbi5zZWxlY3RUb1Bvc2l0aW9uKGUpOnR8fG4uc2VsZWN0aW9uLm1vdmVUb1Bvc2l0aW9uKGUpLHR8fHRoaXMuc2VsZWN0KCksbi5yZW5kZXJlci5zY3JvbGxlci5zZXRDYXB0dXJlJiZuLnJlbmRlcmVyLnNjcm9sbGVyLnNldENhcHR1cmUoKSxuLnNldFN0eWxlKCJhY2Vfc2VsZWN0aW5nIiksdGhpcy5zZXRTdGF0ZSgic2VsZWN0Iil9LHRoaXMuc2VsZWN0PWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmVkaXRvcixuPXQucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXModGhpcy54LHRoaXMueSk7aWYodGhpcy4kY2xpY2tTZWxlY3Rpb24pe3ZhciByPXRoaXMuJGNsaWNrU2VsZWN0aW9uLmNvbXBhcmVQb2ludChuKTtpZihyPT0tMSllPXRoaXMuJGNsaWNrU2VsZWN0aW9uLmVuZDtlbHNlIGlmKHI9PTEpZT10aGlzLiRjbGlja1NlbGVjdGlvbi5zdGFydDtlbHNle3ZhciBpPWEodGhpcy4kY2xpY2tTZWxlY3Rpb24sbik7bj1pLmN1cnNvcixlPWkuYW5jaG9yfXQuc2VsZWN0aW9uLnNldFNlbGVjdGlvbkFuY2hvcihlLnJvdyxlLmNvbHVtbil9dC5zZWxlY3Rpb24uc2VsZWN0VG9Qb3NpdGlvbihuKSx0LnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KCl9LHRoaXMuZXh0ZW5kU2VsZWN0aW9uQnk9ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLmVkaXRvcixyPW4ucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXModGhpcy54LHRoaXMueSksaT1uLnNlbGVjdGlvbltlXShyLnJvdyxyLmNvbHVtbik7aWYodGhpcy4kY2xpY2tTZWxlY3Rpb24pe3ZhciBzPXRoaXMuJGNsaWNrU2VsZWN0aW9uLmNvbXBhcmVQb2ludChpLnN0YXJ0KSxvPXRoaXMuJGNsaWNrU2VsZWN0aW9uLmNvbXBhcmVQb2ludChpLmVuZCk7aWYocz09LTEmJm88PTApe3Q9dGhpcy4kY2xpY2tTZWxlY3Rpb24uZW5kO2lmKGkuZW5kLnJvdyE9ci5yb3d8fGkuZW5kLmNvbHVtbiE9ci5jb2x1bW4pcj1pLnN0YXJ0fWVsc2UgaWYobz09MSYmcz49MCl7dD10aGlzLiRjbGlja1NlbGVjdGlvbi5zdGFydDtpZihpLnN0YXJ0LnJvdyE9ci5yb3d8fGkuc3RhcnQuY29sdW1uIT1yLmNvbHVtbilyPWkuZW5kfWVsc2UgaWYocz09LTEmJm89PTEpcj1pLmVuZCx0PWkuc3RhcnQ7ZWxzZXt2YXIgdT1hKHRoaXMuJGNsaWNrU2VsZWN0aW9uLHIpO3I9dS5jdXJzb3IsdD11LmFuY2hvcn1uLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25BbmNob3IodC5yb3csdC5jb2x1bW4pfW4uc2VsZWN0aW9uLnNlbGVjdFRvUG9zaXRpb24ociksbi5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldygpfSx0aGlzLnNlbGVjdEVuZD10aGlzLnNlbGVjdEFsbEVuZD10aGlzLnNlbGVjdEJ5V29yZHNFbmQ9dGhpcy5zZWxlY3RCeUxpbmVzRW5kPWZ1bmN0aW9uKCl7dGhpcy4kY2xpY2tTZWxlY3Rpb249bnVsbCx0aGlzLmVkaXRvci51bnNldFN0eWxlKCJhY2Vfc2VsZWN0aW5nIiksdGhpcy5lZGl0b3IucmVuZGVyZXIuc2Nyb2xsZXIucmVsZWFzZUNhcHR1cmUmJnRoaXMuZWRpdG9yLnJlbmRlcmVyLnNjcm9sbGVyLnJlbGVhc2VDYXB0dXJlKCl9LHRoaXMuZm9jdXNXYWl0PWZ1bmN0aW9uKCl7dmFyIGU9dSh0aGlzLm1vdXNlZG93bkV2ZW50LngsdGhpcy5tb3VzZWRvd25FdmVudC55LHRoaXMueCx0aGlzLnkpLHQ9RGF0ZS5ub3coKTsoZT5pfHx0LXRoaXMubW91c2Vkb3duRXZlbnQudGltZT50aGlzLiRmb2N1c1RpbWVvdXQpJiZ0aGlzLnN0YXJ0U2VsZWN0KHRoaXMubW91c2Vkb3duRXZlbnQuZ2V0RG9jdW1lbnRQb3NpdGlvbigpKX0sdGhpcy5vbkRvdWJsZUNsaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLG49dGhpcy5lZGl0b3Iscj1uLnNlc3Npb24saT1yLmdldEJyYWNrZXRSYW5nZSh0KTtpPyhpLmlzRW1wdHkoKSYmKGkuc3RhcnQuY29sdW1uLS0saS5lbmQuY29sdW1uKyspLHRoaXMuc2V0U3RhdGUoInNlbGVjdCIpKTooaT1uLnNlbGVjdGlvbi5nZXRXb3JkUmFuZ2UodC5yb3csdC5jb2x1bW4pLHRoaXMuc2V0U3RhdGUoInNlbGVjdEJ5V29yZHMiKSksdGhpcy4kY2xpY2tTZWxlY3Rpb249aSx0aGlzLnNlbGVjdCgpfSx0aGlzLm9uVHJpcGxlQ2xpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXREb2N1bWVudFBvc2l0aW9uKCksbj10aGlzLmVkaXRvcjt0aGlzLnNldFN0YXRlKCJzZWxlY3RCeUxpbmVzIik7dmFyIHI9bi5nZXRTZWxlY3Rpb25SYW5nZSgpO3IuaXNNdWx0aUxpbmUoKSYmci5jb250YWlucyh0LnJvdyx0LmNvbHVtbik/KHRoaXMuJGNsaWNrU2VsZWN0aW9uPW4uc2VsZWN0aW9uLmdldExpbmVSYW5nZShyLnN0YXJ0LnJvdyksdGhpcy4kY2xpY2tTZWxlY3Rpb24uZW5kPW4uc2VsZWN0aW9uLmdldExpbmVSYW5nZShyLmVuZC5yb3cpLmVuZCk6dGhpcy4kY2xpY2tTZWxlY3Rpb249bi5zZWxlY3Rpb24uZ2V0TGluZVJhbmdlKHQucm93KSx0aGlzLnNlbGVjdCgpfSx0aGlzLm9uUXVhZENsaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZWRpdG9yO3Quc2VsZWN0QWxsKCksdGhpcy4kY2xpY2tTZWxlY3Rpb249dC5nZXRTZWxlY3Rpb25SYW5nZSgpLHRoaXMuc2V0U3RhdGUoInNlbGVjdEFsbCIpfSx0aGlzLm9uTW91c2VXaGVlbD1mdW5jdGlvbihlKXtpZihlLmdldEFjY2VsS2V5KCkpcmV0dXJuO2UuZ2V0U2hpZnRLZXkoKSYmZS53aGVlbFkmJiFlLndoZWVsWCYmKGUud2hlZWxYPWUud2hlZWxZLGUud2hlZWxZPTApO3ZhciB0PXRoaXMuZWRpdG9yO3RoaXMuJGxhc3RTY3JvbGx8fCh0aGlzLiRsYXN0U2Nyb2xsPXt0OjAsdng6MCx2eTowLGFsbG93ZWQ6MH0pO3ZhciBuPXRoaXMuJGxhc3RTY3JvbGwscj1lLmRvbUV2ZW50LnRpbWVTdGFtcCxpPXItbi50LG89aT9lLndoZWVsWC9pOm4udngsdT1pP2Uud2hlZWxZL2k6bi52eTtpPHMmJihvPShvK24udngpLzIsdT0odStuLnZ5KS8yKTt2YXIgYT1NYXRoLmFicyhvL3UpLGY9ITE7YT49MSYmdC5yZW5kZXJlci5pc1Njcm9sbGFibGVCeShlLndoZWVsWCplLnNwZWVkLDApJiYoZj0hMCksYTw9MSYmdC5yZW5kZXJlci5pc1Njcm9sbGFibGVCeSgwLGUud2hlZWxZKmUuc3BlZWQpJiYoZj0hMCk7aWYoZiluLmFsbG93ZWQ9cjtlbHNlIGlmKHItbi5hbGxvd2VkPHMpe3ZhciBsPU1hdGguYWJzKG8pPD0xLjUqTWF0aC5hYnMobi52eCkmJk1hdGguYWJzKHUpPD0xLjUqTWF0aC5hYnMobi52eSk7bD8oZj0hMCxuLmFsbG93ZWQ9cik6bi5hbGxvd2VkPTB9bi50PXIsbi52eD1vLG4udnk9dTtpZihmKXJldHVybiB0LnJlbmRlcmVyLnNjcm9sbEJ5KGUud2hlZWxYKmUuc3BlZWQsZS53aGVlbFkqZS5zcGVlZCksZS5zdG9wKCl9fSkuY2FsbChvLnByb3RvdHlwZSksdC5EZWZhdWx0SGFuZGxlcnM9b30pLGFjZS5kZWZpbmUoImFjZS90b29sdGlwIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyhlKXt0aGlzLmlzT3Blbj0hMSx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy4kcGFyZW50Tm9kZT1lfXZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZG9tIik7KGZ1bmN0aW9uKCl7dGhpcy4kaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbGVtZW50PWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy4kZWxlbWVudC5jbGFzc05hbWU9ImFjZV90b29sdGlwIix0aGlzLiRlbGVtZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudH0sdGhpcy5nZXRFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsZW1lbnR8fHRoaXMuJGluaXQoKX0sdGhpcy5zZXRUZXh0PWZ1bmN0aW9uKGUpe3RoaXMuZ2V0RWxlbWVudCgpLnRleHRDb250ZW50PWV9LHRoaXMuc2V0SHRtbD1mdW5jdGlvbihlKXt0aGlzLmdldEVsZW1lbnQoKS5pbm5lckhUTUw9ZX0sdGhpcy5zZXRQb3NpdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuZ2V0RWxlbWVudCgpLnN0eWxlLmxlZnQ9ZSsicHgiLHRoaXMuZ2V0RWxlbWVudCgpLnN0eWxlLnRvcD10KyJweCJ9LHRoaXMuc2V0Q2xhc3NOYW1lPWZ1bmN0aW9uKGUpe2kuYWRkQ3NzQ2xhc3ModGhpcy5nZXRFbGVtZW50KCksZSl9LHRoaXMuc2hvdz1mdW5jdGlvbihlLHQsbil7ZSE9bnVsbCYmdGhpcy5zZXRUZXh0KGUpLHQhPW51bGwmJm4hPW51bGwmJnRoaXMuc2V0UG9zaXRpb24odCxuKSx0aGlzLmlzT3Blbnx8KHRoaXMuZ2V0RWxlbWVudCgpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmlzT3Blbj0hMCl9LHRoaXMuaGlkZT1mdW5jdGlvbigpe3RoaXMuaXNPcGVuJiYodGhpcy5nZXRFbGVtZW50KCkuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5pc09wZW49ITEpfSx0aGlzLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVsZW1lbnQoKS5vZmZzZXRIZWlnaHR9LHRoaXMuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFbGVtZW50KCkub2Zmc2V0V2lkdGh9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuaXNPcGVuPSExLHRoaXMuJGVsZW1lbnQmJnRoaXMuJGVsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy4kZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJGVsZW1lbnQpfX0pLmNhbGwocy5wcm90b3R5cGUpLHQuVG9vbHRpcD1zfSksYWNlLmRlZmluZSgiYWNlL21vdXNlL2RlZmF1bHRfZ3V0dGVyX2hhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudCIsImFjZS90b29sdGlwIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB1KGUpe2Z1bmN0aW9uIGwoKXt2YXIgcj11LmdldERvY3VtZW50UG9zaXRpb24oKS5yb3cscz1uLiRhbm5vdGF0aW9uc1tyXTtpZighcylyZXR1cm4gYygpO3ZhciBvPXQuc2Vzc2lvbi5nZXRMZW5ndGgoKTtpZihyPT1vKXt2YXIgYT10LnJlbmRlcmVyLnBpeGVsVG9TY3JlZW5Db29yZGluYXRlcygwLHUueSkucm93LGw9dS4kcG9zO2lmKGE+dC5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Sb3cobC5yb3csbC5jb2x1bW4pKXJldHVybiBjKCl9aWYoZj09cylyZXR1cm47Zj1zLnRleHQuam9pbigiPGJyLz4iKSxpLnNldEh0bWwoZiksaS5zaG93KCksdC5fc2lnbmFsKCJzaG93R3V0dGVyVG9vbHRpcCIsaSksdC5vbigibW91c2V3aGVlbCIsYyk7aWYoZS4kdG9vbHRpcEZvbGxvd3NNb3VzZSloKHUpO2Vsc2V7dmFyIHA9dS5kb21FdmVudC50YXJnZXQsZD1wLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9aS5nZXRFbGVtZW50KCkuc3R5bGU7di5sZWZ0PWQucmlnaHQrInB4Iix2LnRvcD1kLmJvdHRvbSsicHgifX1mdW5jdGlvbiBjKCl7byYmKG89Y2xlYXJUaW1lb3V0KG8pKSxmJiYoaS5oaWRlKCksZj1udWxsLHQuX3NpZ25hbCgiaGlkZUd1dHRlclRvb2x0aXAiLGkpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsYykpfWZ1bmN0aW9uIGgoZSl7aS5zZXRQb3NpdGlvbihlLngsZS55KX12YXIgdD1lLmVkaXRvcixuPXQucmVuZGVyZXIuJGd1dHRlckxheWVyLGk9bmV3IGEodC5jb250YWluZXIpO2UuZWRpdG9yLnNldERlZmF1bHRIYW5kbGVyKCJndXR0ZXJtb3VzZWRvd24iLGZ1bmN0aW9uKHIpe2lmKCF0LmlzRm9jdXNlZCgpfHxyLmdldEJ1dHRvbigpIT0wKXJldHVybjt2YXIgaT1uLmdldFJlZ2lvbihyKTtpZihpPT0iZm9sZFdpZGdldHMiKXJldHVybjt2YXIgcz1yLmdldERvY3VtZW50UG9zaXRpb24oKS5yb3csbz10LnNlc3Npb24uc2VsZWN0aW9uO2lmKHIuZ2V0U2hpZnRLZXkoKSlvLnNlbGVjdFRvKHMsMCk7ZWxzZXtpZihyLmRvbUV2ZW50LmRldGFpbD09MilyZXR1cm4gdC5zZWxlY3RBbGwoKSxyLnByZXZlbnREZWZhdWx0KCk7ZS4kY2xpY2tTZWxlY3Rpb249dC5zZWxlY3Rpb24uZ2V0TGluZVJhbmdlKHMpfXJldHVybiBlLnNldFN0YXRlKCJzZWxlY3RCeUxpbmVzIiksZS5jYXB0dXJlTW91c2Uociksci5wcmV2ZW50RGVmYXVsdCgpfSk7dmFyIG8sdSxmO2UuZWRpdG9yLnNldERlZmF1bHRIYW5kbGVyKCJndXR0ZXJtb3VzZW1vdmUiLGZ1bmN0aW9uKHQpe3ZhciBuPXQuZG9tRXZlbnQudGFyZ2V0fHx0LmRvbUV2ZW50LnNyY0VsZW1lbnQ7aWYoci5oYXNDc3NDbGFzcyhuLCJhY2VfZm9sZC13aWRnZXQiKSlyZXR1cm4gYygpO2YmJmUuJHRvb2x0aXBGb2xsb3dzTW91c2UmJmgodCksdT10O2lmKG8pcmV0dXJuO289c2V0VGltZW91dChmdW5jdGlvbigpe289bnVsbCx1JiYhZS5pc01vdXNlUHJlc3NlZD9sKCk6YygpfSw1MCl9KSxzLmFkZExpc3RlbmVyKHQucmVuZGVyZXIuJGd1dHRlciwibW91c2VvdXQiLGZ1bmN0aW9uKGUpe3U9bnVsbDtpZighZnx8bylyZXR1cm47bz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bz1udWxsLGMoKX0sNTApfSksdC5vbigiY2hhbmdlU2Vzc2lvbiIsYyl9ZnVuY3Rpb24gYShlKXtvLmNhbGwodGhpcyxlKX12YXIgcj1lKCIuLi9saWIvZG9tIiksaT1lKCIuLi9saWIvb29wIikscz1lKCIuLi9saWIvZXZlbnQiKSxvPWUoIi4uL3Rvb2x0aXAiKS5Ub29sdGlwO2kuaW5oZXJpdHMoYSxvKSxmdW5jdGlvbigpe3RoaXMuc2V0UG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj13aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHI9d2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LGk9dGhpcy5nZXRXaWR0aCgpLHM9dGhpcy5nZXRIZWlnaHQoKTtlKz0xNSx0Kz0xNSxlK2k+biYmKGUtPWUraS1uKSx0K3M+ciYmKHQtPTIwK3MpLG8ucHJvdG90eXBlLnNldFBvc2l0aW9uLmNhbGwodGhpcyxlLHQpfX0uY2FsbChhLnByb3RvdHlwZSksdC5HdXR0ZXJIYW5kbGVyPXV9KSxhY2UuZGVmaW5lKCJhY2UvbW91c2UvbW91c2VfZXZlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2V2ZW50IiwiYWNlL2xpYi91c2VyYWdlbnQiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9dC5Nb3VzZUV2ZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5kb21FdmVudD1lLHRoaXMuZWRpdG9yPXQsdGhpcy54PXRoaXMuY2xpZW50WD1lLmNsaWVudFgsdGhpcy55PXRoaXMuY2xpZW50WT1lLmNsaWVudFksdGhpcy4kcG9zPW51bGwsdGhpcy4kaW5TZWxlY3Rpb249bnVsbCx0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITF9OyhmdW5jdGlvbigpe3RoaXMuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7ci5zdG9wUHJvcGFnYXRpb24odGhpcy5kb21FdmVudCksdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9LHRoaXMucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtyLnByZXZlbnREZWZhdWx0KHRoaXMuZG9tRXZlbnQpLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0sdGhpcy5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnByZXZlbnREZWZhdWx0KCl9LHRoaXMuZ2V0RG9jdW1lbnRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRwb3M/dGhpcy4kcG9zOih0aGlzLiRwb3M9dGhpcy5lZGl0b3IucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXModGhpcy5jbGllbnRYLHRoaXMuY2xpZW50WSksdGhpcy4kcG9zKX0sdGhpcy5pblNlbGVjdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuJGluU2VsZWN0aW9uIT09bnVsbClyZXR1cm4gdGhpcy4kaW5TZWxlY3Rpb247dmFyIGU9dGhpcy5lZGl0b3IsdD1lLmdldFNlbGVjdGlvblJhbmdlKCk7aWYodC5pc0VtcHR5KCkpdGhpcy4kaW5TZWxlY3Rpb249ITE7ZWxzZXt2YXIgbj10aGlzLmdldERvY3VtZW50UG9zaXRpb24oKTt0aGlzLiRpblNlbGVjdGlvbj10LmNvbnRhaW5zKG4ucm93LG4uY29sdW1uKX1yZXR1cm4gdGhpcy4kaW5TZWxlY3Rpb259LHRoaXMuZ2V0QnV0dG9uPWZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2V0QnV0dG9uKHRoaXMuZG9tRXZlbnQpfSx0aGlzLmdldFNoaWZ0S2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tRXZlbnQuc2hpZnRLZXl9LHRoaXMuZ2V0QWNjZWxLZXk9aS5pc01hYz9mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbUV2ZW50Lm1ldGFLZXl9OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tRXZlbnQuY3RybEtleX19KS5jYWxsKHMucHJvdG90eXBlKX0pLGFjZS5kZWZpbmUoImFjZS9tb3VzZS9kcmFnZHJvcF9oYW5kbGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iLCJhY2UvbGliL2V2ZW50IiwiYWNlL2xpYi91c2VyYWdlbnQiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gVChlLG4pe3ZhciByPURhdGUubm93KCksaT0hbnx8ZS5yb3chPW4ucm93LHM9IW58fGUuY29sdW1uIT1uLmNvbHVtbjtpZighU3x8aXx8cyl0Lm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGUpLFM9cix4PXt4OnAseTpkfTtlbHNle3ZhciBvPWwoeC54LHgueSxwLGQpO28+YT9TPW51bGw6ci1TPj11JiYodC5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldygpLFM9bnVsbCl9fWZ1bmN0aW9uIE4oZSxuKXt2YXIgcj1EYXRlLm5vdygpLGk9dC5yZW5kZXJlci5sYXllckNvbmZpZy5saW5lSGVpZ2h0LHM9dC5yZW5kZXJlci5sYXllckNvbmZpZy5jaGFyYWN0ZXJXaWR0aCx1PXQucmVuZGVyZXIuc2Nyb2xsZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT17eDp7bGVmdDpwLXUubGVmdCxyaWdodDp1LnJpZ2h0LXB9LHk6e3RvcDpkLXUudG9wLGJvdHRvbTp1LmJvdHRvbS1kfX0sZj1NYXRoLm1pbihhLngubGVmdCxhLngucmlnaHQpLGw9TWF0aC5taW4oYS55LnRvcCxhLnkuYm90dG9tKSxjPXtyb3c6ZS5yb3csY29sdW1uOmUuY29sdW1ufTtmL3M8PTImJihjLmNvbHVtbis9YS54LmxlZnQ8YS54LnJpZ2h0Py0zOjIpLGwvaTw9MSYmKGMucm93Kz1hLnkudG9wPGEueS5ib3R0b20/LTE6MSk7dmFyIGg9ZS5yb3chPWMucm93LHY9ZS5jb2x1bW4hPWMuY29sdW1uLG09IW58fGUucm93IT1uLnJvdztofHx2JiYhbT9FP3ItRT49byYmdC5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldyhjKTpFPXI6RT1udWxsfWZ1bmN0aW9uIEMoKXt2YXIgZT1nO2c9dC5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyhwLGQpLFQoZyxlKSxOKGcsZSl9ZnVuY3Rpb24gaygpe209dC5zZWxlY3Rpb24udG9PcmllbnRlZFJhbmdlKCksaD10LnNlc3Npb24uYWRkTWFya2VyKG0sImFjZV9zZWxlY3Rpb24iLHQuZ2V0U2VsZWN0aW9uU3R5bGUoKSksdC5jbGVhclNlbGVjdGlvbigpLHQuaXNGb2N1c2VkKCkmJnQucmVuZGVyZXIuJGN1cnNvckxheWVyLnNldEJsaW5raW5nKCExKSxjbGVhckludGVydmFsKHYpLEMoKSx2PXNldEludGVydmFsKEMsMjApLHk9MCxpLmFkZExpc3RlbmVyKGRvY3VtZW50LCJtb3VzZW1vdmUiLE8pfWZ1bmN0aW9uIEwoKXtjbGVhckludGVydmFsKHYpLHQuc2Vzc2lvbi5yZW1vdmVNYXJrZXIoaCksaD1udWxsLHQuc2VsZWN0aW9uLmZyb21PcmllbnRlZFJhbmdlKG0pLHQuaXNGb2N1c2VkKCkmJiF3JiZ0LiRyZXNldEN1cnNvclN0eWxlKCksbT1udWxsLGc9bnVsbCx5PTAsRT1udWxsLFM9bnVsbCxpLnJlbW92ZUxpc3RlbmVyKGRvY3VtZW50LCJtb3VzZW1vdmUiLE8pfWZ1bmN0aW9uIE8oKXtBPT1udWxsJiYoQT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7QSE9bnVsbCYmaCYmTCgpfSwyMCkpfWZ1bmN0aW9uIE0oZSl7dmFyIHQ9ZS50eXBlcztyZXR1cm4hdHx8QXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh0LGZ1bmN0aW9uKGUpe3JldHVybiBlPT0idGV4dC9wbGFpbiJ8fGU9PSJUZXh0In0pfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9WyJjb3B5IiwiY29weW1vdmUiLCJhbGwiLCJ1bmluaXRpYWxpemVkIl0sbj1bIm1vdmUiLCJjb3B5bW92ZSIsImxpbmttb3ZlIiwiYWxsIiwidW5pbml0aWFsaXplZCJdLHI9cy5pc01hYz9lLmFsdEtleTplLmN0cmxLZXksaT0idW5pbml0aWFsaXplZCI7dHJ5e2k9ZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZC50b0xvd2VyQ2FzZSgpfWNhdGNoKGUpe312YXIgbz0ibm9uZSI7cmV0dXJuIHImJnQuaW5kZXhPZihpKT49MD9vPSJjb3B5IjpuLmluZGV4T2YoaSk+PTA/bz0ibW92ZSI6dC5pbmRleE9mKGkpPj0wJiYobz0iY29weSIpLG99dmFyIHQ9ZS5lZGl0b3Isbj1yLmNyZWF0ZUVsZW1lbnQoImltZyIpO24uc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFBQUFDSDVCQUVLQUFFQUxBQUFBQUFCQUFFQUFBSUNUQUVBT3c9PSIscy5pc09wZXJhJiYobi5zdHlsZS5jc3NUZXh0PSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7ei1pbmRleDoyMTQ3NDgzNjQ3O29wYWNpdHk6MDsiKTt2YXIgZj1bImRyYWdXYWl0IiwiZHJhZ1dhaXRFbmQiLCJzdGFydERyYWciLCJkcmFnUmVhZHlFbmQiLCJvbk1vdXNlRHJhZyJdO2YuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXRoaXNbdF19LHRoaXMpLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm9uTW91c2VEb3duLmJpbmQoZSkpO3ZhciBjPXQuY29udGFpbmVyLGgscCxkLHYsbSxnLHk9MCxiLHcsRSxTLHg7dGhpcy5vbkRyYWdTdGFydD1mdW5jdGlvbihlKXtpZih0aGlzLmNhbmNlbERyYWd8fCFjLmRyYWdnYWJsZSl7dmFyIHI9dGhpcztyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3Iuc3RhcnRTZWxlY3QoKSxyLmNhcHR1cmVNb3VzZShlKX0sMCksZS5wcmV2ZW50RGVmYXVsdCgpfW09dC5nZXRTZWxlY3Rpb25SYW5nZSgpO3ZhciBpPWUuZGF0YVRyYW5zZmVyO2kuZWZmZWN0QWxsb3dlZD10LmdldFJlYWRPbmx5KCk/ImNvcHkiOiJjb3B5TW92ZSIscy5pc09wZXJhJiYodC5jb250YWluZXIuYXBwZW5kQ2hpbGQobiksbi5zY3JvbGxUb3A9MCksaS5zZXREcmFnSW1hZ2UmJmkuc2V0RHJhZ0ltYWdlKG4sMCwwKSxzLmlzT3BlcmEmJnQuY29udGFpbmVyLnJlbW92ZUNoaWxkKG4pLGkuY2xlYXJEYXRhKCksaS5zZXREYXRhKCJUZXh0Iix0LnNlc3Npb24uZ2V0VGV4dFJhbmdlKCkpLHc9ITAsdGhpcy5zZXRTdGF0ZSgiZHJhZyIpfSx0aGlzLm9uRHJhZ0VuZD1mdW5jdGlvbihlKXtjLmRyYWdnYWJsZT0hMSx3PSExLHRoaXMuc2V0U3RhdGUobnVsbCk7aWYoIXQuZ2V0UmVhZE9ubHkoKSl7dmFyIG49ZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdDshYiYmbj09Im1vdmUiJiZ0LnNlc3Npb24ucmVtb3ZlKHQuZ2V0U2VsZWN0aW9uUmFuZ2UoKSksdC4kcmVzZXRDdXJzb3JTdHlsZSgpfXRoaXMuZWRpdG9yLnVuc2V0U3R5bGUoImFjZV9kcmFnZ2luZyIpLHRoaXMuZWRpdG9yLnJlbmRlcmVyLnNldEN1cnNvclN0eWxlKCIiKX0sdGhpcy5vbkRyYWdFbnRlcj1mdW5jdGlvbihlKXtpZih0LmdldFJlYWRPbmx5KCl8fCFNKGUuZGF0YVRyYW5zZmVyKSlyZXR1cm47cmV0dXJuIHA9ZS5jbGllbnRYLGQ9ZS5jbGllbnRZLGh8fGsoKSx5KyssZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD1iPV8oZSksaS5wcmV2ZW50RGVmYXVsdChlKX0sdGhpcy5vbkRyYWdPdmVyPWZ1bmN0aW9uKGUpe2lmKHQuZ2V0UmVhZE9ubHkoKXx8IU0oZS5kYXRhVHJhbnNmZXIpKXJldHVybjtyZXR1cm4gcD1lLmNsaWVudFgsZD1lLmNsaWVudFksaHx8KGsoKSx5KyspLEEhPT1udWxsJiYoQT1udWxsKSxlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PWI9XyhlKSxpLnByZXZlbnREZWZhdWx0KGUpfSx0aGlzLm9uRHJhZ0xlYXZlPWZ1bmN0aW9uKGUpe3ktLTtpZih5PD0wJiZoKXJldHVybiBMKCksYj1udWxsLGkucHJldmVudERlZmF1bHQoZSl9LHRoaXMub25Ecm9wPWZ1bmN0aW9uKGUpe2lmKCFnKXJldHVybjt2YXIgbj1lLmRhdGFUcmFuc2ZlcjtpZih3KXN3aXRjaChiKXtjYXNlIm1vdmUiOm0uY29udGFpbnMoZy5yb3csZy5jb2x1bW4pP209e3N0YXJ0OmcsZW5kOmd9Om09dC5tb3ZlVGV4dChtLGcpO2JyZWFrO2Nhc2UiY29weSI6bT10Lm1vdmVUZXh0KG0sZywhMCl9ZWxzZXt2YXIgcj1uLmdldERhdGEoIlRleHQiKTttPXtzdGFydDpnLGVuZDp0LnNlc3Npb24uaW5zZXJ0KGcscil9LHQuZm9jdXMoKSxiPW51bGx9cmV0dXJuIEwoKSxpLnByZXZlbnREZWZhdWx0KGUpfSxpLmFkZExpc3RlbmVyKGMsImRyYWdzdGFydCIsdGhpcy5vbkRyYWdTdGFydC5iaW5kKGUpKSxpLmFkZExpc3RlbmVyKGMsImRyYWdlbmQiLHRoaXMub25EcmFnRW5kLmJpbmQoZSkpLGkuYWRkTGlzdGVuZXIoYywiZHJhZ2VudGVyIix0aGlzLm9uRHJhZ0VudGVyLmJpbmQoZSkpLGkuYWRkTGlzdGVuZXIoYywiZHJhZ292ZXIiLHRoaXMub25EcmFnT3Zlci5iaW5kKGUpKSxpLmFkZExpc3RlbmVyKGMsImRyYWdsZWF2ZSIsdGhpcy5vbkRyYWdMZWF2ZS5iaW5kKGUpKSxpLmFkZExpc3RlbmVyKGMsImRyb3AiLHRoaXMub25Ecm9wLmJpbmQoZSkpO3ZhciBBPW51bGx9ZnVuY3Rpb24gbChlLHQsbixyKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KG4tZSwyKStNYXRoLnBvdyhyLXQsMikpfXZhciByPWUoIi4uL2xpYi9kb20iKSxpPWUoIi4uL2xpYi9ldmVudCIpLHM9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLG89MjAwLHU9MjAwLGE9NTsoZnVuY3Rpb24oKXt0aGlzLmRyYWdXYWl0PWZ1bmN0aW9uKCl7dmFyIGU9RGF0ZS5ub3coKS10aGlzLm1vdXNlZG93bkV2ZW50LnRpbWU7ZT50aGlzLmVkaXRvci5nZXREcmFnRGVsYXkoKSYmdGhpcy5zdGFydERyYWcoKX0sdGhpcy5kcmFnV2FpdEVuZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZWRpdG9yLmNvbnRhaW5lcjtlLmRyYWdnYWJsZT0hMSx0aGlzLnN0YXJ0U2VsZWN0KHRoaXMubW91c2Vkb3duRXZlbnQuZ2V0RG9jdW1lbnRQb3NpdGlvbigpKSx0aGlzLnNlbGVjdEVuZCgpfSx0aGlzLmRyYWdSZWFkeUVuZD1mdW5jdGlvbihlKXt0aGlzLmVkaXRvci4kcmVzZXRDdXJzb3JTdHlsZSgpLHRoaXMuZWRpdG9yLnVuc2V0U3R5bGUoImFjZV9kcmFnZ2luZyIpLHRoaXMuZWRpdG9yLnJlbmRlcmVyLnNldEN1cnNvclN0eWxlKCIiKSx0aGlzLmRyYWdXYWl0RW5kKCl9LHRoaXMuc3RhcnREcmFnPWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxEcmFnPSExO3ZhciBlPXRoaXMuZWRpdG9yLHQ9ZS5jb250YWluZXI7dC5kcmFnZ2FibGU9ITAsZS5yZW5kZXJlci4kY3Vyc29yTGF5ZXIuc2V0QmxpbmtpbmcoITEpLGUuc2V0U3R5bGUoImFjZV9kcmFnZ2luZyIpO3ZhciBuPXMuaXNXaW4/ImRlZmF1bHQiOiJtb3ZlIjtlLnJlbmRlcmVyLnNldEN1cnNvclN0eWxlKG4pLHRoaXMuc2V0U3RhdGUoImRyYWdSZWFkeSIpfSx0aGlzLm9uTW91c2VEcmFnPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZWRpdG9yLmNvbnRhaW5lcjtpZihzLmlzSUUmJnRoaXMuc3RhdGU9PSJkcmFnUmVhZHkiKXt2YXIgbj1sKHRoaXMubW91c2Vkb3duRXZlbnQueCx0aGlzLm1vdXNlZG93bkV2ZW50LnksdGhpcy54LHRoaXMueSk7bj4zJiZ0LmRyYWdEcm9wKCl9aWYodGhpcy5zdGF0ZT09PSJkcmFnV2FpdCIpe3ZhciBuPWwodGhpcy5tb3VzZWRvd25FdmVudC54LHRoaXMubW91c2Vkb3duRXZlbnQueSx0aGlzLngsdGhpcy55KTtuPjAmJih0LmRyYWdnYWJsZT0hMSx0aGlzLnN0YXJ0U2VsZWN0KHRoaXMubW91c2Vkb3duRXZlbnQuZ2V0RG9jdW1lbnRQb3NpdGlvbigpKSl9fSx0aGlzLm9uTW91c2VEb3duPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLiRkcmFnRW5hYmxlZClyZXR1cm47dGhpcy5tb3VzZWRvd25FdmVudD1lO3ZhciB0PXRoaXMuZWRpdG9yLG49ZS5pblNlbGVjdGlvbigpLHI9ZS5nZXRCdXR0b24oKSxpPWUuZG9tRXZlbnQuZGV0YWlsfHwxO2lmKGk9PT0xJiZyPT09MCYmbil7aWYoZS5lZGl0b3IuaW5NdWx0aVNlbGVjdE1vZGUmJihlLmdldEFjY2VsS2V5KCl8fGUuZ2V0U2hpZnRLZXkoKSkpcmV0dXJuO3RoaXMubW91c2Vkb3duRXZlbnQudGltZT1EYXRlLm5vdygpO3ZhciBvPWUuZG9tRXZlbnQudGFyZ2V0fHxlLmRvbUV2ZW50LnNyY0VsZW1lbnQ7InVuc2VsZWN0YWJsZSJpbiBvJiYoby51bnNlbGVjdGFibGU9Im9uIik7aWYodC5nZXREcmFnRGVsYXkoKSl7aWYocy5pc1dlYktpdCl7dGhpcy5jYW5jZWxEcmFnPSEwO3ZhciB1PXQuY29udGFpbmVyO3UuZHJhZ2dhYmxlPSEwfXRoaXMuc2V0U3RhdGUoImRyYWdXYWl0Iil9ZWxzZSB0aGlzLnN0YXJ0RHJhZygpO3RoaXMuY2FwdHVyZU1vdXNlKGUsdGhpcy5vbk1vdXNlRHJhZy5iaW5kKHRoaXMpKSxlLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9fX0pLmNhbGwoZi5wcm90b3R5cGUpLHQuRHJhZ2Ryb3BIYW5kbGVyPWZ9KSxhY2UuZGVmaW5lKCJhY2UvbW91c2UvdG91Y2hfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb3VzZS9tb3VzZV9ldmVudCIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL21vdXNlX2V2ZW50IikuTW91c2VFdmVudCxpPWUoIi4uL2xpYi9kb20iKTt0LmFkZFRvdWNoTGlzdGVuZXJzPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24geSgpe3ZhciBlPXdpbmRvdy5uYXZpZ2F0b3ImJndpbmRvdy5uYXZpZ2F0b3IuY2xpcGJvYXJkLHI9ITEscz1mdW5jdGlvbigpe3ZhciBuPXQuZ2V0Q29weVRleHQoKSxzPXQuc2Vzc2lvbi5nZXRVbmRvTWFuYWdlcigpLmhhc1VuZG8oKTtnLnJlcGxhY2VDaGlsZChpLmJ1aWxkRG9tKHI/WyJzcGFuIiwhbiYmWyJzcGFuIix7ImNsYXNzIjoiYWNlX21vYmlsZS1idXR0b24iLGFjdGlvbjoic2VsZWN0YWxsIn0sIlNlbGVjdCBBbGwiXSxuJiZbInNwYW4iLHsiY2xhc3MiOiJhY2VfbW9iaWxlLWJ1dHRvbiIsYWN0aW9uOiJjb3B5In0sIkNvcHkiXSxuJiZbInNwYW4iLHsiY2xhc3MiOiJhY2VfbW9iaWxlLWJ1dHRvbiIsYWN0aW9uOiJjdXQifSwiQ3V0Il0sZSYmWyJzcGFuIix7ImNsYXNzIjoiYWNlX21vYmlsZS1idXR0b24iLGFjdGlvbjoicGFzdGUifSwiUGFzdGUiXSxzJiZbInNwYW4iLHsiY2xhc3MiOiJhY2VfbW9iaWxlLWJ1dHRvbiIsYWN0aW9uOiJ1bmRvIn0sIlVuZG8iXSxbInNwYW4iLHsiY2xhc3MiOiJhY2VfbW9iaWxlLWJ1dHRvbiIsYWN0aW9uOiJmaW5kIn0sIkZpbmQiXSxbInNwYW4iLHsiY2xhc3MiOiJhY2VfbW9iaWxlLWJ1dHRvbiIsYWN0aW9uOiJvcGVuQ29tbWFuZFBhbGxldGUifSwiUGFsbGV0ZSJdXTpbInNwYW4iXSksZy5maXJzdENoaWxkKX0sbz1mdW5jdGlvbihuKXt2YXIgaT1uLnRhcmdldC5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpO2lmKGk9PSJtb3JlInx8IXIpcmV0dXJuIHI9IXIscygpO2lmKGk9PSJwYXN0ZSIpZS5yZWFkVGV4dCgpLnRoZW4oZnVuY3Rpb24oZSl7dC5leGVjQ29tbWFuZChpLGUpfSk7ZWxzZSBpZihpKXtpZihpPT0iY3V0Inx8aT09ImNvcHkiKWU/ZS53cml0ZVRleHQodC5nZXRDb3B5VGV4dCgpKTpkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpO3QuZXhlY0NvbW1hbmQoaSl9Zy5maXJzdENoaWxkLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHI9ITEsaSE9Im9wZW5Db21tYW5kUGFsbGV0ZSImJnQuZm9jdXMoKX07Zz1pLmJ1aWxkRG9tKFsiZGl2Iix7ImNsYXNzIjoiYWNlX21vYmlsZS1tZW51IixvbnRvdWNoc3RhcnQ6ZnVuY3Rpb24oZSl7bj0ibWVudSIsZS5zdG9wUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksdC50ZXh0SW5wdXQuZm9jdXMoKX0sb250b3VjaGVuZDpmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxvKGUpfSxvbmNsaWNrOm99LFsic3BhbiJdLFsic3BhbiIseyJjbGFzcyI6ImFjZV9tb2JpbGUtYnV0dG9uIixhY3Rpb246Im1vcmUifSwiLi4uIl1dLHQuY29udGFpbmVyKX1mdW5jdGlvbiBiKCl7Z3x8eSgpO3ZhciBlPXQuc2VsZWN0aW9uLmN1cnNvcixuPXQucmVuZGVyZXIudGV4dFRvU2NyZWVuQ29vcmRpbmF0ZXMoZS5yb3csZS5jb2x1bW4pLHI9dC5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zy5zdHlsZS50b3A9bi5wYWdlWS1yLnRvcC0zKyJweCIsZy5zdHlsZS5yaWdodD0iMTBweCIsZy5zdHlsZS5kaXNwbGF5PSIiLGcuZmlyc3RDaGlsZC5zdHlsZS5kaXNwbGF5PSJub25lIix0Lm9uKCJpbnB1dCIsdyl9ZnVuY3Rpb24gdyhlKXtnJiYoZy5zdHlsZS5kaXNwbGF5PSJub25lIiksdC5vZmYoImlucHV0Iix3KX1mdW5jdGlvbiBFKCl7Zj1udWxsLGNsZWFyVGltZW91dChmKTt2YXIgZT10LnNlbGVjdGlvbi5nZXRSYW5nZSgpLHI9ZS5jb250YWlucyhoLnJvdyxoLmNvbHVtbik7aWYoZS5pc0VtcHR5KCl8fCFyKXQuc2VsZWN0aW9uLm1vdmVUb1Bvc2l0aW9uKGgpLHQuc2VsZWN0aW9uLnNlbGVjdFdvcmQoKTtuPSJ3YWl0IixiKCl9ZnVuY3Rpb24gUygpe2Y9bnVsbCxjbGVhclRpbWVvdXQoZiksdC5zZWxlY3Rpb24ubW92ZVRvUG9zaXRpb24oaCk7dmFyIGU9cD49Mj90LnNlbGVjdGlvbi5nZXRMaW5lUmFuZ2UoaC5yb3cpOnQuc2Vzc2lvbi5nZXRCcmFja2V0UmFuZ2UoaCk7ZSYmIWUuaXNFbXB0eSgpP3Quc2VsZWN0aW9uLnNldFJhbmdlKGUpOnQuc2VsZWN0aW9uLnNlbGVjdFdvcmQoKSxuPSJ3YWl0In1mdW5jdGlvbiB4KCl7Yys9NjAsbD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2MtLTw9MCYmKGNsZWFySW50ZXJ2YWwobCksbD1udWxsKSxNYXRoLmFicyhkKTwuMDEmJihkPTApLE1hdGguYWJzKHYpPC4wMSYmKHY9MCksYzwyMCYmKGQ9LjkqZCksYzwyMCYmKHY9Ljkqdik7dmFyIGU9dC5zZXNzaW9uLmdldFNjcm9sbFRvcCgpO3QucmVuZGVyZXIuc2Nyb2xsQnkoMTAqZCwxMCp2KSxlPT10LnNlc3Npb24uZ2V0U2Nyb2xsVG9wKCkmJihjPTApfSwxMCl9dmFyIG49InNjcm9sbCIscyxvLHUsYSxmLGwsYz0wLGgscD0wLGQ9MCx2PTAsbSxnO2UuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLGZ1bmN0aW9uKGUpe2lmKCFtKXJldHVybjt2YXIgbj10LnRleHRJbnB1dC5nZXRFbGVtZW50KCk7bi5mb2N1cygpfSksZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihlKXt2YXIgaT1lLnRvdWNoZXM7aWYoZnx8aS5sZW5ndGg+MSl7Y2xlYXJUaW1lb3V0KGYpLGY9bnVsbCx1PS0xLG49Inpvb20iO3JldHVybn1tPXQuJG1vdXNlSGFuZGxlci5pc01vdXNlUHJlc3NlZD0hMDt2YXIgbD10LnJlbmRlcmVyLmxheWVyQ29uZmlnLmxpbmVIZWlnaHQsZz10LnJlbmRlcmVyLmxheWVyQ29uZmlnLmxpbmVIZWlnaHQseT1lLnRpbWVTdGFtcDthPXk7dmFyIGI9aVswXSx3PWIuY2xpZW50WCx4PWIuY2xpZW50WTtNYXRoLmFicyhzLXcpK01hdGguYWJzKG8teCk+bCYmKHU9LTEpLHM9ZS5jbGllbnRYPXcsbz1lLmNsaWVudFk9eCxkPXY9MDt2YXIgVD1uZXcgcihlLHQpO2g9VC5nZXREb2N1bWVudFBvc2l0aW9uKCk7aWYoeS11PDUwMCYmaS5sZW5ndGg9PTEmJiFjKXArKyxlLnByZXZlbnREZWZhdWx0KCksZS5idXR0b249MCxTKCk7ZWxzZXtwPTA7dmFyIE49dC5zZWxlY3Rpb24uY3Vyc29yLEM9dC5zZWxlY3Rpb24uaXNFbXB0eSgpP046dC5zZWxlY3Rpb24uYW5jaG9yLGs9dC5yZW5kZXJlci4kY3Vyc29yTGF5ZXIuZ2V0UGl4ZWxQb3NpdGlvbihOLCEwKSxMPXQucmVuZGVyZXIuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oQywhMCksQT10LnJlbmRlcmVyLnNjcm9sbGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS89Zyx0PXQvbC0uNzUsZSplK3QqdH07aWYoZS5jbGllbnRYPEEubGVmdCl7bj0iem9vbSI7cmV0dXJufXZhciBNPU8oZS5jbGllbnRYLUEubGVmdC1rLmxlZnQsZS5jbGllbnRZLUEudG9wLWsudG9wKSxfPU8oZS5jbGllbnRYLUEubGVmdC1MLmxlZnQsZS5jbGllbnRZLUEudG9wLUwudG9wKTtNPDMuNSYmXzwzLjUmJihuPU0+Xz8iY3Vyc29yIjoiYW5jaG9yIiksXzwzLjU/bj0iYW5jaG9yIjpNPDMuNT9uPSJjdXJzb3IiOm49InNjcm9sbCIsZj1zZXRUaW1lb3V0KEUsNDUwKX11PXl9KSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixmdW5jdGlvbihlKXttPXQuJG1vdXNlSGFuZGxlci5pc01vdXNlUHJlc3NlZD0hMSxsJiZjbGVhckludGVydmFsKGwpLG49PSJ6b29tIj8obj0iIixjPTApOmY/KHQuc2VsZWN0aW9uLm1vdmVUb1Bvc2l0aW9uKGgpLGM9MCxiKCkpOm49PSJzY3JvbGwiPyh4KCksZS5wcmV2ZW50RGVmYXVsdCgpLHcoKSk6YigpLGNsZWFyVGltZW91dChmKSxmPW51bGx9KSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsZnVuY3Rpb24oZSl7ZiYmKGNsZWFyVGltZW91dChmKSxmPW51bGwpO3ZhciBpPWUudG91Y2hlcztpZihpLmxlbmd0aD4xfHxuPT0iem9vbSIpcmV0dXJuO3ZhciB1PWlbMF0sbD1zLXUuY2xpZW50WCxjPW8tdS5jbGllbnRZO2lmKG49PSJ3YWl0Iil7aWYoIShsKmwrYypjPjQpKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7bj0iY3Vyc29yIn1zPXUuY2xpZW50WCxvPXUuY2xpZW50WSxlLmNsaWVudFg9dS5jbGllbnRYLGUuY2xpZW50WT11LmNsaWVudFk7dmFyIGg9ZS50aW1lU3RhbXAscD1oLWE7YT1oO2lmKG49PSJzY3JvbGwiKXt2YXIgbT1uZXcgcihlLHQpO20uc3BlZWQ9MSxtLndoZWVsWD1sLG0ud2hlZWxZPWMsMTAqTWF0aC5hYnMobCk8TWF0aC5hYnMoYykmJihsPTApLDEwKk1hdGguYWJzKGMpPE1hdGguYWJzKGwpJiYoYz0wKSxwIT0wJiYoZD1sL3Asdj1jL3ApLHQuX2VtaXQoIm1vdXNld2hlZWwiLG0pLG0ucHJvcGFnYXRpb25TdG9wcGVkfHwoZD12PTApfWVsc2V7dmFyIGc9bmV3IHIoZSx0KSx5PWcuZ2V0RG9jdW1lbnRQb3NpdGlvbigpO249PSJjdXJzb3IiP3Quc2VsZWN0aW9uLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKHkpOm49PSJhbmNob3IiJiZ0LnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25BbmNob3IoeS5yb3cseS5jb2x1bW4pLHQucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoeSksZS5wcmV2ZW50RGVmYXVsdCgpfX0pfX0pLGFjZS5kZWZpbmUoImFjZS9saWIvbmV0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vZG9tIik7dC5nZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3Q7bi5vcGVuKCJHRVQiLGUsITApLG4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7bi5yZWFkeVN0YXRlPT09NCYmdChuLnJlc3BvbnNlVGV4dCl9LG4uc2VuZChudWxsKX0sdC5sb2FkU2NyaXB0PWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5nZXREb2N1bWVudEhlYWQoKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2kuc3JjPWUsbi5hcHBlbmRDaGlsZChpKSxpLm9ubG9hZD1pLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLG4pe2lmKG58fCFpLnJlYWR5U3RhdGV8fGkucmVhZHlTdGF0ZT09ImxvYWRlZCJ8fGkucmVhZHlTdGF0ZT09ImNvbXBsZXRlIilpPWkub25sb2FkPWkub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsbnx8dCgpfX0sdC5xdWFsaWZ5VVJMPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyZXR1cm4gdC5ocmVmPWUsdC5ocmVmfX0pLGFjZS5kZWZpbmUoImFjZS9saWIvZXZlbnRfZW1pdHRlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e30saT1mdW5jdGlvbigpe3RoaXMucHJvcGFnYXRpb25TdG9wcGVkPSEwfSxzPWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfTtyLl9lbWl0PXIuX2Rpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl9ldmVudFJlZ2lzdHJ5fHwodGhpcy5fZXZlbnRSZWdpc3RyeT17fSksdGhpcy5fZGVmYXVsdEhhbmRsZXJzfHwodGhpcy5fZGVmYXVsdEhhbmRsZXJzPXt9KTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdfHxbXSxyPXRoaXMuX2RlZmF1bHRIYW5kbGVyc1tlXTtpZighbi5sZW5ndGgmJiFyKXJldHVybjtpZih0eXBlb2YgdCE9Im9iamVjdCJ8fCF0KXQ9e307dC50eXBlfHwodC50eXBlPWUpLHQuc3RvcFByb3BhZ2F0aW9ufHwodC5zdG9wUHJvcGFnYXRpb249aSksdC5wcmV2ZW50RGVmYXVsdHx8KHQucHJldmVudERlZmF1bHQ9cyksbj1uLnNsaWNlKCk7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspe25bb10odCx0aGlzKTtpZih0LnByb3BhZ2F0aW9uU3RvcHBlZClicmVha31pZihyJiYhdC5kZWZhdWx0UHJldmVudGVkKXJldHVybiByKHQsdGhpcyl9LHIuX3NpZ25hbD1mdW5jdGlvbihlLHQpe3ZhciBuPSh0aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fSlbZV07aWYoIW4pcmV0dXJuO249bi5zbGljZSgpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl0odCx0aGlzKX0sci5vbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpczt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbiByKCl7bi5yZW1vdmVFdmVudExpc3RlbmVyKGUsciksdC5hcHBseShudWxsLGFyZ3VtZW50cyl9KTtpZighdClyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7dD1lfSl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9kZWZhdWx0SGFuZGxlcnM7bnx8KG49dGhpcy5fZGVmYXVsdEhhbmRsZXJzPXtfZGlzYWJsZWRfOnt9fSk7aWYobltlXSl7dmFyIHI9bltlXSxpPW4uX2Rpc2FibGVkX1tlXTtpfHwobi5fZGlzYWJsZWRfW2VdPWk9W10pLGkucHVzaChyKTt2YXIgcz1pLmluZGV4T2YodCk7cyE9LTEmJmkuc3BsaWNlKHMsMSl9bltlXT10fSxyLnJlbW92ZURlZmF1bHRIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZGVmYXVsdEhhbmRsZXJzO2lmKCFuKXJldHVybjt2YXIgcj1uLl9kaXNhYmxlZF9bZV07aWYobltlXT09dClyJiZ0aGlzLnNldERlZmF1bHRIYW5kbGVyKGUsci5wb3AoKSk7ZWxzZSBpZihyKXt2YXIgaT1yLmluZGV4T2YodCk7aSE9LTEmJnIuc3BsaWNlKGksMSl9fSxyLm9uPXIuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQsbil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgcj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO3JldHVybiByfHwocj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdPVtdKSxyLmluZGV4T2YodCk9PS0xJiZyW24/InVuc2hpZnQiOiJwdXNoIl0odCksdH0sci5vZmY9ci5yZW1vdmVMaXN0ZW5lcj1yLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9ldmVudFJlZ2lzdHJ5PXRoaXMuX2V2ZW50UmVnaXN0cnl8fHt9O3ZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV07aWYoIW4pcmV0dXJuO3ZhciByPW4uaW5kZXhPZih0KTtyIT09LTEmJm4uc3BsaWNlKHIsMSl9LHIucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3RoaXMuX2V2ZW50UmVnaXN0cnkmJih0aGlzLl9ldmVudFJlZ2lzdHJ5W2VdPVtdKX0sdC5FdmVudEVtaXR0ZXI9cn0pLGFjZS5kZWZpbmUoImFjZS9saWIvYXBwX2NvbmZpZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4peyJubyB1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3R5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIiYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4uYXBwbHkoY29uc29sZSxhcmd1bWVudHMpfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1uZXcgRXJyb3IoZSk7bi5kYXRhPXQsdHlwZW9mIGNvbnNvbGU9PSJvYmplY3QiJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKG4pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBufSl9dmFyIHI9ZSgiLi9vb3AiKSxpPWUoIi4vZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixzPXtzZXRPcHRpb25zOmZ1bmN0aW9uKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5zZXRPcHRpb24odCxlW3RdKX0sdGhpcyl9LGdldE9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYoIWUpe3ZhciBuPXRoaXMuJG9wdGlvbnM7ZT1PYmplY3Qua2V5cyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIW5bZV0uaGlkZGVufSl9ZWxzZSBBcnJheS5pc0FycmF5KGUpfHwodD1lLGU9T2JqZWN0LmtleXModCkpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7dFtlXT10aGlzLmdldE9wdGlvbihlKX0sdGhpcyksdH0sc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7aWYodGhpc1siJCIrZV09PT10KXJldHVybjt2YXIgbj10aGlzLiRvcHRpb25zW2VdO2lmKCFuKXJldHVybiBvKCdtaXNzcGVsbGVkIG9wdGlvbiAiJytlKyciJyk7aWYobi5mb3J3YXJkVG8pcmV0dXJuIHRoaXNbbi5mb3J3YXJkVG9dJiZ0aGlzW24uZm9yd2FyZFRvXS5zZXRPcHRpb24oZSx0KTtuLmhhbmRsZXNTZXR8fCh0aGlzWyIkIitlXT10KSxuJiZuLnNldCYmbi5zZXQuY2FsbCh0aGlzLHQpfSxnZXRPcHRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kb3B0aW9uc1tlXTtyZXR1cm4gdD90LmZvcndhcmRUbz90aGlzW3QuZm9yd2FyZFRvXSYmdGhpc1t0LmZvcndhcmRUb10uZ2V0T3B0aW9uKGUpOnQmJnQuZ2V0P3QuZ2V0LmNhbGwodGhpcyk6dGhpc1siJCIrZV06bygnbWlzc3BlbGxlZCBvcHRpb24gIicrZSsnIicpfX0sYT1mdW5jdGlvbigpe3RoaXMuJGRlZmF1bHRPcHRpb25zPXt9fTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuZGVmaW5lT3B0aW9ucz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuJG9wdGlvbnN8fCh0aGlzLiRkZWZhdWx0T3B0aW9uc1t0XT1lLiRvcHRpb25zPXt9KSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPW5bdF07dHlwZW9mIHI9PSJzdHJpbmciJiYocj17Zm9yd2FyZFRvOnJ9KSxyLm5hbWV8fChyLm5hbWU9dCksZS4kb3B0aW9uc1tyLm5hbWVdPXIsImluaXRpYWxWYWx1ZSJpbiByJiYoZVsiJCIrci5uYW1lXT1yLmluaXRpYWxWYWx1ZSl9KSxyLmltcGxlbWVudChlLHMpLHRoaXN9LHRoaXMucmVzZXRPcHRpb25zPWZ1bmN0aW9uKGUpe09iamVjdC5rZXlzKGUuJG9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49ZS4kb3B0aW9uc1t0XTsidmFsdWUiaW4gbiYmZS5zZXRPcHRpb24odCxuLnZhbHVlKX0pfSx0aGlzLnNldERlZmF1bHRWYWx1ZT1mdW5jdGlvbihlLHQsbil7aWYoIWUpe2ZvcihlIGluIHRoaXMuJGRlZmF1bHRPcHRpb25zKWlmKHRoaXMuJGRlZmF1bHRPcHRpb25zW2VdW3RdKWJyZWFrO2lmKCF0aGlzLiRkZWZhdWx0T3B0aW9uc1tlXVt0XSlyZXR1cm4hMX12YXIgcj10aGlzLiRkZWZhdWx0T3B0aW9uc1tlXXx8KHRoaXMuJGRlZmF1bHRPcHRpb25zW2VdPXt9KTtyW3RdJiYoci5mb3J3YXJkVG8/dGhpcy5zZXREZWZhdWx0VmFsdWUoci5mb3J3YXJkVG8sdCxuKTpyW3RdLnZhbHVlPW4pfSx0aGlzLnNldERlZmF1bHRWYWx1ZXM9ZnVuY3Rpb24oZSx0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3RoaXMuc2V0RGVmYXVsdFZhbHVlKGUsbix0W25dKX0sdGhpcyl9LHRoaXMud2Fybj1vLHRoaXMucmVwb3J0RXJyb3I9dX0pLmNhbGwoYS5wcm90b3R5cGUpLHQuQXBwQ29uZmlnPWF9KSxhY2UuZGVmaW5lKCJhY2UvY29uZmlnIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL25ldCIsImFjZS9saWIvYXBwX2NvbmZpZyJdLGZ1bmN0aW9uKGUsdCxuKXsibm8gdXNlIHN0cmljdCI7ZnVuY3Rpb24gbChyKXtpZighdXx8IXUuZG9jdW1lbnQpcmV0dXJuO2EucGFja2FnZWQ9cnx8ZS5wYWNrYWdlZHx8bi5wYWNrYWdlZHx8dS5kZWZpbmUmJmRlZmluZS5wYWNrYWdlZDt2YXIgaT17fSxzPSIiLG89ZG9jdW1lbnQuY3VycmVudFNjcmlwdHx8ZG9jdW1lbnQuX2N1cnJlbnRTY3JpcHQsZj1vJiZvLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50LGw9Zi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7Zm9yKHZhciBoPTA7aDxsLmxlbmd0aDtoKyspe3ZhciBwPWxbaF0sZD1wLnNyY3x8cC5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKCFkKWNvbnRpbnVlO3ZhciB2PXAuYXR0cmlidXRlcztmb3IodmFyIG09MCxnPXYubGVuZ3RoO208ZzttKyspe3ZhciB5PXZbbV07eS5uYW1lLmluZGV4T2YoImRhdGEtYWNlLSIpPT09MCYmKGlbYyh5Lm5hbWUucmVwbGFjZSgvXmRhdGEtYWNlLS8sIiIpKV09eS52YWx1ZSl9dmFyIGI9ZC5tYXRjaCgvXiguKilcL2FjZShcLVx3Kyk/XC5qcyhcP3wkKS8pO2ImJihzPWJbMV0pfXMmJihpLmJhc2U9aS5iYXNlfHxzLGkucGFja2FnZWQ9ITApLGkuYmFzZVBhdGg9aS5iYXNlLGkud29ya2VyUGF0aD1pLndvcmtlclBhdGh8fGkuYmFzZSxpLm1vZGVQYXRoPWkubW9kZVBhdGh8fGkuYmFzZSxpLnRoZW1lUGF0aD1pLnRoZW1lUGF0aHx8aS5iYXNlLGRlbGV0ZSBpLmJhc2U7Zm9yKHZhciB3IGluIGkpdHlwZW9mIGlbd10hPSJ1bmRlZmluZWQiJiZ0LnNldCh3LGlbd10pfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGUucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfXZhciByPWUoIi4vbGliL2xhbmciKSxpPWUoIi4vbGliL29vcCIpLHM9ZSgiLi9saWIvbmV0Iiksbz1lKCIuL2xpYi9hcHBfY29uZmlnIikuQXBwQ29uZmlnO24uZXhwb3J0cz10PW5ldyBvO3ZhciB1PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN8fHR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ3aW5kb3d9KCksYT17cGFja2FnZWQ6ITEsd29ya2VyUGF0aDpudWxsLG1vZGVQYXRoOm51bGwsdGhlbWVQYXRoOm51bGwsYmFzZVBhdGg6IiIsc3VmZml4OiIuanMiLCRtb2R1bGVVcmxzOnt9LGxvYWRXb3JrZXJGcm9tQmxvYjohMCxzaGFyZWRQb3B1cHM6ITF9O3QuZ2V0PWZ1bmN0aW9uKGUpe2lmKCFhLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb25maWcga2V5OiAiK2UpO3JldHVybiBhW2VdfSx0LnNldD1mdW5jdGlvbihlLHQpe2lmKGEuaGFzT3duUHJvcGVydHkoZSkpYVtlXT10O2Vsc2UgaWYodGhpcy5zZXREZWZhdWx0VmFsdWUoIiIsZSx0KT09MCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY29uZmlnIGtleTogIitlKX0sdC5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gci5jb3B5T2JqZWN0KGEpfSx0LiRtb2Rlcz17fSx0Lm1vZHVsZVVybD1mdW5jdGlvbihlLHQpe2lmKGEuJG1vZHVsZVVybHNbZV0pcmV0dXJuIGEuJG1vZHVsZVVybHNbZV07dmFyIG49ZS5zcGxpdCgiLyIpO3Q9dHx8bltuLmxlbmd0aC0yXXx8IiI7dmFyIHI9dD09InNuaXBwZXRzIj8iLyI6Ii0iLGk9bltuLmxlbmd0aC0xXTtpZih0PT0id29ya2VyIiYmcj09Ii0iKXt2YXIgcz1uZXcgUmVnRXhwKCJeIit0KyJbXFwtX118W1xcLV9dIit0KyIkIiwiZyIpO2k9aS5yZXBsYWNlKHMsIiIpfSghaXx8aT09dCkmJm4ubGVuZ3RoPjEmJihpPW5bbi5sZW5ndGgtMl0pO3ZhciBvPWFbdCsiUGF0aCJdO3JldHVybiBvPT1udWxsP289YS5iYXNlUGF0aDpyPT0iLyImJih0PXI9IiIpLG8mJm8uc2xpY2UoLTEpIT0iLyImJihvKz0iLyIpLG8rdCtyK2krdGhpcy5nZXQoInN1ZmZpeCIpfSx0LnNldE1vZHVsZVVybD1mdW5jdGlvbihlLHQpe3JldHVybiBhLiRtb2R1bGVVcmxzW2VdPXR9LHQuJGxvYWRpbmc9e30sdC5sb2FkTW9kdWxlPWZ1bmN0aW9uKG4scil7dmFyIGksbztBcnJheS5pc0FycmF5KG4pJiYobz1uWzBdLG49blsxXSk7dHJ5e2k9ZShuKX1jYXRjaCh1KXt9aWYoaSYmIXQuJGxvYWRpbmdbbl0pcmV0dXJuIHImJnIoaSk7dC4kbG9hZGluZ1tuXXx8KHQuJGxvYWRpbmdbbl09W10pLHQuJGxvYWRpbmdbbl0ucHVzaChyKTtpZih0LiRsb2FkaW5nW25dLmxlbmd0aD4xKXJldHVybjt2YXIgYT1mdW5jdGlvbigpe2UoW25dLGZ1bmN0aW9uKGUpe3QuX2VtaXQoImxvYWQubW9kdWxlIix7bmFtZTpuLG1vZHVsZTplfSk7dmFyIHI9dC4kbG9hZGluZ1tuXTt0LiRsb2FkaW5nW25dPW51bGwsci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QmJnQoZSl9KX0pfTtpZighdC5nZXQoInBhY2thZ2VkIikpcmV0dXJuIGEoKTtzLmxvYWRTY3JpcHQodC5tb2R1bGVVcmwobixvKSxhKSxmKCl9O3ZhciBmPWZ1bmN0aW9uKCl7IWEuYmFzZVBhdGgmJiFhLndvcmtlclBhdGgmJiFhLm1vZGVQYXRoJiYhYS50aGVtZVBhdGgmJiFPYmplY3Qua2V5cyhhLiRtb2R1bGVVcmxzKS5sZW5ndGgmJihjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gaW5mZXIgcGF0aCB0byBhY2UgZnJvbSBzY3JpcHQgc3JjLCIsInVzZSBhY2UuY29uZmlnLnNldCgnYmFzZVBhdGgnLCAncGF0aCcpIHRvIGVuYWJsZSBkeW5hbWljIGxvYWRpbmcgb2YgbW9kZXMgYW5kIHRoZW1lcyIsIm9yIHdpdGggd2VicGFjayB1c2UgYWNlL3dlYnBhY2stcmVzb2x2ZXIiKSxmPWZ1bmN0aW9uKCl7fSl9O3QuaW5pdD1sLHQudmVyc2lvbj0iMS40LjYifSksYWNlLmRlZmluZSgiYWNlL21vdXNlL21vdXNlX2hhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2V2ZW50IiwiYWNlL2xpYi91c2VyYWdlbnQiLCJhY2UvbW91c2UvZGVmYXVsdF9oYW5kbGVycyIsImFjZS9tb3VzZS9kZWZhdWx0X2d1dHRlcl9oYW5kbGVyIiwiYWNlL21vdXNlL21vdXNlX2V2ZW50IiwiYWNlL21vdXNlL2RyYWdkcm9wX2hhbmRsZXIiLCJhY2UvbW91c2UvdG91Y2hfaGFuZGxlciIsImFjZS9jb25maWciXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9ZSgiLi9kZWZhdWx0X2hhbmRsZXJzIikuRGVmYXVsdEhhbmRsZXJzLG89ZSgiLi9kZWZhdWx0X2d1dHRlcl9oYW5kbGVyIikuR3V0dGVySGFuZGxlcix1PWUoIi4vbW91c2VfZXZlbnQiKS5Nb3VzZUV2ZW50LGE9ZSgiLi9kcmFnZHJvcF9oYW5kbGVyIikuRHJhZ2Ryb3BIYW5kbGVyLGY9ZSgiLi90b3VjaF9oYW5kbGVyIikuYWRkVG91Y2hMaXN0ZW5lcnMsbD1lKCIuLi9jb25maWciKSxjPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5lZGl0b3I9ZSxuZXcgcyh0aGlzKSxuZXcgbyh0aGlzKSxuZXcgYSh0aGlzKTt2YXIgbj1mdW5jdGlvbih0KXt2YXIgbj0hZG9jdW1lbnQuaGFzRm9jdXN8fCFkb2N1bWVudC5oYXNGb2N1cygpfHwhZS5pc0ZvY3VzZWQoKSYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09KGUudGV4dElucHV0JiZlLnRleHRJbnB1dC5nZXRFbGVtZW50KCkpO24mJndpbmRvdy5mb2N1cygpLGUuZm9jdXMoKX0sdT1lLnJlbmRlcmVyLmdldE1vdXNlRXZlbnRUYXJnZXQoKTtyLmFkZExpc3RlbmVyKHUsImNsaWNrIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsImNsaWNrIikpLHIuYWRkTGlzdGVuZXIodSwibW91c2Vtb3ZlIix0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcywibW91c2Vtb3ZlIikpLHIuYWRkTXVsdGlNb3VzZURvd25MaXN0ZW5lcihbdSxlLnJlbmRlcmVyLnNjcm9sbEJhclYmJmUucmVuZGVyZXIuc2Nyb2xsQmFyVi5pbm5lcixlLnJlbmRlcmVyLnNjcm9sbEJhckgmJmUucmVuZGVyZXIuc2Nyb2xsQmFySC5pbm5lcixlLnRleHRJbnB1dCYmZS50ZXh0SW5wdXQuZ2V0RWxlbWVudCgpXS5maWx0ZXIoQm9vbGVhbiksWzQwMCwzMDAsMjUwXSx0aGlzLCJvbk1vdXNlRXZlbnQiKSxyLmFkZE1vdXNlV2hlZWxMaXN0ZW5lcihlLmNvbnRhaW5lcix0aGlzLm9uTW91c2VXaGVlbC5iaW5kKHRoaXMsIm1vdXNld2hlZWwiKSksZihlLmNvbnRhaW5lcixlKTt2YXIgbD1lLnJlbmRlcmVyLiRndXR0ZXI7ci5hZGRMaXN0ZW5lcihsLCJtb3VzZWRvd24iLHRoaXMub25Nb3VzZUV2ZW50LmJpbmQodGhpcywiZ3V0dGVybW91c2Vkb3duIikpLHIuYWRkTGlzdGVuZXIobCwiY2xpY2siLHRoaXMub25Nb3VzZUV2ZW50LmJpbmQodGhpcywiZ3V0dGVyY2xpY2siKSksci5hZGRMaXN0ZW5lcihsLCJkYmxjbGljayIsdGhpcy5vbk1vdXNlRXZlbnQuYmluZCh0aGlzLCJndXR0ZXJkYmxjbGljayIpKSxyLmFkZExpc3RlbmVyKGwsIm1vdXNlbW92ZSIsdGhpcy5vbk1vdXNlRXZlbnQuYmluZCh0aGlzLCJndXR0ZXJtb3VzZW1vdmUiKSksci5hZGRMaXN0ZW5lcih1LCJtb3VzZWRvd24iLG4pLHIuYWRkTGlzdGVuZXIobCwibW91c2Vkb3duIixuKSxpLmlzSUUmJmUucmVuZGVyZXIuc2Nyb2xsQmFyViYmKHIuYWRkTGlzdGVuZXIoZS5yZW5kZXJlci5zY3JvbGxCYXJWLmVsZW1lbnQsIm1vdXNlZG93biIsbiksci5hZGRMaXN0ZW5lcihlLnJlbmRlcmVyLnNjcm9sbEJhckguZWxlbWVudCwibW91c2Vkb3duIixuKSksZS5vbigibW91c2Vtb3ZlIixmdW5jdGlvbihuKXtpZih0LnN0YXRlfHx0LiRkcmFnRGVsYXl8fCF0LiRkcmFnRW5hYmxlZClyZXR1cm47dmFyIHI9ZS5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyhuLngsbi55KSxpPWUuc2Vzc2lvbi5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSxzPWUucmVuZGVyZXI7IWkuaXNFbXB0eSgpJiZpLmluc2lkZVN0YXJ0KHIucm93LHIuY29sdW1uKT9zLnNldEN1cnNvclN0eWxlKCJkZWZhdWx0Iik6cy5zZXRDdXJzb3JTdHlsZSgiIil9KX07KGZ1bmN0aW9uKCl7dGhpcy5vbk1vdXNlRXZlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmVkaXRvci5fZW1pdChlLG5ldyB1KHQsdGhpcy5lZGl0b3IpKX0sdGhpcy5vbk1vdXNlTW92ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZWRpdG9yLl9ldmVudFJlZ2lzdHJ5JiZ0aGlzLmVkaXRvci5fZXZlbnRSZWdpc3RyeS5tb3VzZW1vdmU7aWYoIW58fCFuLmxlbmd0aClyZXR1cm47dGhpcy5lZGl0b3IuX2VtaXQoZSxuZXcgdSh0LHRoaXMuZWRpdG9yKSl9LHRoaXMub25Nb3VzZVdoZWVsPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHUodCx0aGlzLmVkaXRvcik7bi5zcGVlZD10aGlzLiRzY3JvbGxTcGVlZCoyLG4ud2hlZWxYPXQud2hlZWxYLG4ud2hlZWxZPXQud2hlZWxZLHRoaXMuZWRpdG9yLl9lbWl0KGUsbil9LHRoaXMuc2V0U3RhdGU9ZnVuY3Rpb24oZSl7dGhpcy5zdGF0ZT1lfSx0aGlzLmNhcHR1cmVNb3VzZT1mdW5jdGlvbihlLHQpe3RoaXMueD1lLngsdGhpcy55PWUueSx0aGlzLmlzTW91c2VQcmVzc2VkPSEwO3ZhciBuPXRoaXMuZWRpdG9yLHM9dGhpcy5lZGl0b3IucmVuZGVyZXI7cy4kaXNNb3VzZVByZXNzZWQ9ITA7dmFyIG89dGhpcyxhPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybjtpZihpLmlzV2ViS2l0JiYhZS53aGljaCYmby5yZWxlYXNlTW91c2UpcmV0dXJuIG8ucmVsZWFzZU1vdXNlKCk7by54PWUuY2xpZW50WCxvLnk9ZS5jbGllbnRZLHQmJnQoZSksby5tb3VzZUV2ZW50PW5ldyB1KGUsby5lZGl0b3IpLG8uJG1vdXNlTW92ZWQ9ITB9LGY9ZnVuY3Rpb24oZSl7bi5vZmYoImJlZm9yZUVuZE9wZXJhdGlvbiIsYyksY2xlYXJJbnRlcnZhbChoKSxsKCksb1tvLnN0YXRlKyJFbmQiXSYmb1tvLnN0YXRlKyJFbmQiXShlKSxvLnN0YXRlPSIiLG8uaXNNb3VzZVByZXNzZWQ9cy4kaXNNb3VzZVByZXNzZWQ9ITEscy4ka2VlcFRleHRBcmVhQXRDdXJzb3ImJnMuJG1vdmVUZXh0QXJlYVRvQ3Vyc29yKCksby4kb25DYXB0dXJlTW91c2VNb3ZlPW8ucmVsZWFzZU1vdXNlPW51bGwsZSYmby5vbk1vdXNlRXZlbnQoIm1vdXNldXAiLGUpLG4uZW5kT3BlcmF0aW9uKCl9LGw9ZnVuY3Rpb24oKXtvW28uc3RhdGVdJiZvW28uc3RhdGVdKCksby4kbW91c2VNb3ZlZD0hMX07aWYoaS5pc09sZElFJiZlLmRvbUV2ZW50LnR5cGU9PSJkYmxjbGljayIpcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmKGUpfSk7dmFyIGM9ZnVuY3Rpb24oZSl7aWYoIW8ucmVsZWFzZU1vdXNlKXJldHVybjtuLmN1ck9wLmNvbW1hbmQubmFtZSYmbi5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkJiYob1tvLnN0YXRlKyJFbmQiXSYmb1tvLnN0YXRlKyJFbmQiXSgpLG8uc3RhdGU9IiIsby5yZWxlYXNlTW91c2UoKSl9O24ub24oImJlZm9yZUVuZE9wZXJhdGlvbiIsYyksbi5zdGFydE9wZXJhdGlvbih7Y29tbWFuZDp7bmFtZToibW91c2UifX0pLG8uJG9uQ2FwdHVyZU1vdXNlTW92ZT1hLG8ucmVsZWFzZU1vdXNlPXIuY2FwdHVyZSh0aGlzLmVkaXRvci5jb250YWluZXIsYSxmKTt2YXIgaD1zZXRJbnRlcnZhbChsLDIwKX0sdGhpcy5yZWxlYXNlTW91c2U9bnVsbCx0aGlzLmNhbmNlbENvbnRleHRNZW51PWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCl7aWYodCYmdC5kb21FdmVudCYmdC5kb21FdmVudC50eXBlIT0iY29udGV4dG1lbnUiKXJldHVybjt0aGlzLmVkaXRvci5vZmYoIm5hdGl2ZWNvbnRleHRtZW51IixlKSx0JiZ0LmRvbUV2ZW50JiZyLnN0b3BFdmVudCh0LmRvbUV2ZW50KX0uYmluZCh0aGlzKTtzZXRUaW1lb3V0KGUsMTApLHRoaXMuZWRpdG9yLm9uKCJuYXRpdmVjb250ZXh0bWVudSIsZSl9fSkuY2FsbChjLnByb3RvdHlwZSksbC5kZWZpbmVPcHRpb25zKGMucHJvdG90eXBlLCJtb3VzZUhhbmRsZXIiLHtzY3JvbGxTcGVlZDp7aW5pdGlhbFZhbHVlOjJ9LGRyYWdEZWxheTp7aW5pdGlhbFZhbHVlOmkuaXNNYWM/MTUwOjB9LGRyYWdFbmFibGVkOntpbml0aWFsVmFsdWU6ITB9LGZvY3VzVGltZW91dDp7aW5pdGlhbFZhbHVlOjB9LHRvb2x0aXBGb2xsb3dzTW91c2U6e2luaXRpYWxWYWx1ZTohMH19KSx0Lk1vdXNlSGFuZGxlcj1jfSksYWNlLmRlZmluZSgiYWNlL21vdXNlL2ZvbGRfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe2Uub24oImNsaWNrIixmdW5jdGlvbih0KXt2YXIgbj10LmdldERvY3VtZW50UG9zaXRpb24oKSxpPWUuc2Vzc2lvbixzPWkuZ2V0Rm9sZEF0KG4ucm93LG4uY29sdW1uLDEpO3MmJih0LmdldEFjY2VsS2V5KCk/aS5yZW1vdmVGb2xkKHMpOmkuZXhwYW5kRm9sZChzKSx0LnN0b3AoKSk7dmFyIG89dC5kb21FdmVudCYmdC5kb21FdmVudC50YXJnZXQ7byYmci5oYXNDc3NDbGFzcyhvLCJhY2VfaW5saW5lX2J1dHRvbiIpJiZyLmhhc0Nzc0NsYXNzKG8sImFjZV90b2dnbGVfd3JhcCIpJiYoaS5zZXRPcHRpb24oIndyYXAiLCFpLmdldFVzZVdyYXBNb2RlKCkpLGUucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKSl9KSxlLm9uKCJndXR0ZXJjbGljayIsZnVuY3Rpb24odCl7dmFyIG49ZS5yZW5kZXJlci4kZ3V0dGVyTGF5ZXIuZ2V0UmVnaW9uKHQpO2lmKG49PSJmb2xkV2lkZ2V0cyIpe3ZhciByPXQuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLnJvdyxpPWUuc2Vzc2lvbjtpLmZvbGRXaWRnZXRzJiZpLmZvbGRXaWRnZXRzW3JdJiZlLnNlc3Npb24ub25Gb2xkV2lkZ2V0Q2xpY2socix0KSxlLmlzRm9jdXNlZCgpfHxlLmZvY3VzKCksdC5zdG9wKCl9fSksZS5vbigiZ3V0dGVyZGJsY2xpY2siLGZ1bmN0aW9uKHQpe3ZhciBuPWUucmVuZGVyZXIuJGd1dHRlckxheWVyLmdldFJlZ2lvbih0KTtpZihuPT0iZm9sZFdpZGdldHMiKXt2YXIgcj10LmdldERvY3VtZW50UG9zaXRpb24oKS5yb3csaT1lLnNlc3Npb24scz1pLmdldFBhcmVudEZvbGRSYW5nZURhdGEociwhMCksbz1zLnJhbmdlfHxzLmZpcnN0UmFuZ2U7aWYobyl7cj1vLnN0YXJ0LnJvdzt2YXIgdT1pLmdldEZvbGRBdChyLGkuZ2V0TGluZShyKS5sZW5ndGgsMSk7dT9pLnJlbW92ZUZvbGQodSk6KGkuYWRkRm9sZCgiLi4uIixvKSxlLnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KHtyb3c6by5zdGFydC5yb3csY29sdW1uOjB9KSl9dC5zdG9wKCl9fSl9dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3QuRm9sZEhhbmRsZXI9aX0pLGFjZS5kZWZpbmUoImFjZS9rZXlib2FyZC9rZXliaW5kaW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9rZXlzIiwiYWNlL2xpYi9ldmVudCJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vbGliL2tleXMiKSxpPWUoIi4uL2xpYi9ldmVudCIpLHM9ZnVuY3Rpb24oZSl7dGhpcy4kZWRpdG9yPWUsdGhpcy4kZGF0YT17ZWRpdG9yOmV9LHRoaXMuJGhhbmRsZXJzPVtdLHRoaXMuc2V0RGVmYXVsdEhhbmRsZXIoZS5jb21tYW5kcyl9OyhmdW5jdGlvbigpe3RoaXMuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSl7dGhpcy5yZW1vdmVLZXlib2FyZEhhbmRsZXIodGhpcy4kZGVmYXVsdEhhbmRsZXIpLHRoaXMuJGRlZmF1bHRIYW5kbGVyPWUsdGhpcy5hZGRLZXlib2FyZEhhbmRsZXIoZSwwKX0sdGhpcy5zZXRLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kaGFuZGxlcnM7aWYodFt0Lmxlbmd0aC0xXT09ZSlyZXR1cm47d2hpbGUodFt0Lmxlbmd0aC0xXSYmdFt0Lmxlbmd0aC0xXSE9dGhpcy4kZGVmYXVsdEhhbmRsZXIpdGhpcy5yZW1vdmVLZXlib2FyZEhhbmRsZXIodFt0Lmxlbmd0aC0xXSk7dGhpcy5hZGRLZXlib2FyZEhhbmRsZXIoZSwxKX0sdGhpcy5hZGRLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47dHlwZW9mIGU9PSJmdW5jdGlvbiImJiFlLmhhbmRsZUtleWJvYXJkJiYoZS5oYW5kbGVLZXlib2FyZD1lKTt2YXIgbj10aGlzLiRoYW5kbGVycy5pbmRleE9mKGUpO24hPS0xJiZ0aGlzLiRoYW5kbGVycy5zcGxpY2UobiwxKSx0PT11bmRlZmluZWQ/dGhpcy4kaGFuZGxlcnMucHVzaChlKTp0aGlzLiRoYW5kbGVycy5zcGxpY2UodCwwLGUpLG49PS0xJiZlLmF0dGFjaCYmZS5hdHRhY2godGhpcy4kZWRpdG9yKX0sdGhpcy5yZW1vdmVLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kaGFuZGxlcnMuaW5kZXhPZihlKTtyZXR1cm4gdD09LTE/ITE6KHRoaXMuJGhhbmRsZXJzLnNwbGljZSh0LDEpLGUuZGV0YWNoJiZlLmRldGFjaCh0aGlzLiRlZGl0b3IpLCEwKX0sdGhpcy5nZXRLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaGFuZGxlcnNbdGhpcy4kaGFuZGxlcnMubGVuZ3RoLTFdfSx0aGlzLmdldFN0YXR1c1RleHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRkYXRhLHQ9ZS5lZGl0b3I7cmV0dXJuIHRoaXMuJGhhbmRsZXJzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRTdGF0dXNUZXh0JiZuLmdldFN0YXR1c1RleHQodCxlKXx8IiJ9KS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpfSx0aGlzLiRjYWxsS2V5Ym9hcmRIYW5kbGVycz1mdW5jdGlvbihlLHQsbixyKXt2YXIgcyxvPSExLHU9dGhpcy4kZWRpdG9yLmNvbW1hbmRzO2Zvcih2YXIgYT10aGlzLiRoYW5kbGVycy5sZW5ndGg7YS0tOyl7cz10aGlzLiRoYW5kbGVyc1thXS5oYW5kbGVLZXlib2FyZCh0aGlzLiRkYXRhLGUsdCxuLHIpO2lmKCFzfHwhcy5jb21tYW5kKWNvbnRpbnVlO3MuY29tbWFuZD09Im51bGwiP289ITA6bz11LmV4ZWMocy5jb21tYW5kLHRoaXMuJGVkaXRvcixzLmFyZ3MsciksbyYmciYmZSE9LTEmJnMucGFzc0V2ZW50IT0xJiZzLmNvbW1hbmQucGFzc0V2ZW50IT0xJiZpLnN0b3BFdmVudChyKTtpZihvKWJyZWFrfXJldHVybiFvJiZlPT0tMSYmKHM9e2NvbW1hbmQ6Imluc2VydHN0cmluZyJ9LG89dS5leGVjKCJpbnNlcnRzdHJpbmciLHRoaXMuJGVkaXRvcix0KSksbyYmdGhpcy4kZWRpdG9yLl9zaWduYWwmJnRoaXMuJGVkaXRvci5fc2lnbmFsKCJrZXlib2FyZEFjdGl2aXR5IixzKSxvfSx0aGlzLm9uQ29tbWFuZEtleT1mdW5jdGlvbihlLHQsbil7dmFyIGk9ci5rZXlDb2RlVG9TdHJpbmcobik7cmV0dXJuIHRoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzKHQsaSxuLGUpfSx0aGlzLm9uVGV4dElucHV0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRjYWxsS2V5Ym9hcmRIYW5kbGVycygtMSxlKX19KS5jYWxsKHMucHJvdG90eXBlKSx0LktleUJpbmRpbmc9c30pLGFjZS5kZWZpbmUoImFjZS9saWIvYmlkaXV0aWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEYoZSx0LG4scil7dmFyIGk9cz9kOnAsYz1udWxsLGg9bnVsbCx2PW51bGwsbT0wLGc9bnVsbCx5PW51bGwsYj0tMSx3PW51bGwsRT1udWxsLFQ9W107aWYoIXIpZm9yKHc9MCxyPVtdO3c8bjt3Kyspclt3XT1SKGVbd10pO289cyx1PSExLGE9ITEsZj0hMSxsPSExO2ZvcihFPTA7RTxuO0UrKyl7Yz1tLFRbRV09aD1xKGUscixULEUpLG09aVtjXVtoXSxnPW0mMjQwLG0mPTE1LHRbRV09dj1pW21dWzVdO2lmKGc+MClpZihnPT0xNil7Zm9yKHc9Yjt3PEU7dysrKXRbd109MTtiPS0xfWVsc2UgYj0tMTt5PWlbbV1bNl07aWYoeSliPT0tMSYmKGI9RSk7ZWxzZSBpZihiPi0xKXtmb3Iodz1iO3c8RTt3KyspdFt3XT12O2I9LTF9cltFXT09UyYmKHRbRV09MCksb3w9dn1pZihsKWZvcih3PTA7dzxuO3crKylpZihyW3ddPT14KXt0W3ddPXM7Zm9yKHZhciBDPXctMTtDPj0wO0MtLSl7aWYocltDXSE9TilicmVhazt0W0NdPXN9fX1mdW5jdGlvbiBJKGUsdCxuKXtpZihvPGUpcmV0dXJuO2lmKGU9PTEmJnM9PW0mJiFmKXtuLnJldmVyc2UoKTtyZXR1cm59dmFyIHI9bi5sZW5ndGgsaT0wLHUsYSxsLGM7d2hpbGUoaTxyKXtpZih0W2ldPj1lKXt1PWkrMTt3aGlsZSh1PHImJnRbdV0+PWUpdSsrO2ZvcihhPWksbD11LTE7YTxsO2ErKyxsLS0pYz1uW2FdLG5bYV09bltsXSxuW2xdPWM7aT11fWkrK319ZnVuY3Rpb24gcShlLHQsbixyKXt2YXIgaT10W3JdLG8sYyxoLHA7c3dpdGNoKGkpe2Nhc2UgZzpjYXNlIHk6dT0hMTtjYXNlIEU6Y2FzZSB3OnJldHVybiBpO2Nhc2UgYjpyZXR1cm4gdT93OmI7Y2FzZSBUOnJldHVybiB1PSEwLGE9ITAseTtjYXNlIE46cmV0dXJuIEU7Y2FzZSBDOmlmKHI8MXx8cisxPj10Lmxlbmd0aHx8KG89bltyLTFdKSE9YiYmbyE9d3x8KGM9dFtyKzFdKSE9YiYmYyE9dylyZXR1cm4gRTtyZXR1cm4gdSYmKGM9dyksYz09bz9jOkU7Y2FzZSBrOm89cj4wP25bci0xXTpTO2lmKG89PWImJnIrMTx0Lmxlbmd0aCYmdFtyKzFdPT1iKXJldHVybiBiO3JldHVybiBFO2Nhc2UgTDppZihyPjAmJm5bci0xXT09YilyZXR1cm4gYjtpZih1KXJldHVybiBFO3A9cisxLGg9dC5sZW5ndGg7d2hpbGUocDxoJiZ0W3BdPT1MKXArKztpZihwPGgmJnRbcF09PWIpcmV0dXJuIGI7cmV0dXJuIEU7Y2FzZSBBOmg9dC5sZW5ndGgscD1yKzE7d2hpbGUocDxoJiZ0W3BdPT1BKXArKztpZihwPGgpe3ZhciBkPWVbcl0sdj1kPj0xNDI1JiZkPD0yMzAzfHxkPT02NDI4NjtvPXRbcF07aWYodiYmKG89PXl8fG89PVQpKXJldHVybiB5fWlmKHI8MXx8KG89dFtyLTFdKT09UylyZXR1cm4gRTtyZXR1cm4gbltyLTFdO2Nhc2UgUzpyZXR1cm4gdT0hMSxmPSEwLHM7Y2FzZSB4OnJldHVybiBsPSEwLEU7Y2FzZSBPOmNhc2UgTTpjYXNlIEQ6Y2FzZSBQOmNhc2UgXzp1PSExO2Nhc2UgSDpyZXR1cm4gRX19ZnVuY3Rpb24gUihlKXt2YXIgdD1lLmNoYXJDb2RlQXQoMCksbj10Pj44O3JldHVybiBuPT0wP3Q+MTkxP2c6Qlt0XTpuPT01Py9bXHUwNTkxLVx1MDVmNF0vLnRlc3QoZSk/eTpnOm49PTY/L1tcdTA2MTAtXHUwNjFhXHUwNjRiLVx1MDY1Zlx1MDZkNi1cdTA2ZTRcdTA2ZTctXHUwNmVkXS8udGVzdChlKT9BOi9bXHUwNjYwLVx1MDY2OVx1MDY2Yi1cdTA2NmNdLy50ZXN0KGUpP3c6dD09MTY0Mj9MOi9bXHUwNmYwLVx1MDZmOV0vLnRlc3QoZSk/YjpUOm49PTMyJiZ0PD04Mjg3P2pbdCYyNTVdOm49PTI1ND90Pj02NTEzNj9UOkU6RX1mdW5jdGlvbiBVKGUpe3JldHVybiBlPj0iXHUwNjRiIiYmZTw9Ilx1MDY1NSJ9dmFyIHI9WyJcdTA2MjEiLCJcdTA2NDEiXSxpPVsiXHUwNjNhIiwiXHUwNjRhIl0scz0wLG89MCx1PSExLGE9ITEsZj0hMSxsPSExLGM9ITEsaD0hMSxwPVtbMCwzLDAsMSwwLDAsMF0sWzAsMywwLDEsMiwyLDBdLFswLDMsMCwxNywyLDAsMV0sWzAsMyw1LDUsNCwxLDBdLFswLDMsMjEsMjEsNCwwLDFdLFswLDMsNSw1LDQsMiwwXV0sZD1bWzIsMCwxLDEsMCwxLDBdLFsyLDAsMSwxLDAsMiwwXSxbMiwwLDIsMSwzLDIsMF0sWzIsMCwyLDMzLDMsMSwxXV0sdj0wLG09MSxnPTAseT0xLGI9Mix3PTMsRT00LFM9NSx4PTYsVD03LE49OCxDPTksaz0xMCxMPTExLEE9MTIsTz0xMyxNPTE0LF89MTUsRD0xNixQPTE3LEg9MTgsQj1bSCxILEgsSCxILEgsSCxILEgseCxTLHgsTixTLEgsSCxILEgsSCxILEgsSCxILEgsSCxILEgsSCxTLFMsUyx4LE4sRSxFLEwsTCxMLEUsRSxFLEUsRSxrLEMsayxDLEMsYixiLGIsYixiLGIsYixiLGIsYixDLEUsRSxFLEUsRSxFLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxFLEUsRSxFLEUsRSxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsZyxnLGcsRSxFLEUsRSxILEgsSCxILEgsSCxTLEgsSCxILEgsSCxILEgsSCxILEgsSCxILEgsSCxILEgsSCxILEgsSCxILEgsSCxILEgsSCxDLEUsTCxMLEwsTCxFLEUsRSxFLGcsRSxFLEgsRSxFLEwsTCxiLGIsRSxnLEUsRSxFLGIsZyxFLEUsRSxFLEVdLGo9W04sTixOLE4sTixOLE4sTixOLE4sTixILEgsSCxnLHksRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsTixTLE8sTSxfLEQsUCxDLEwsTCxMLEwsTCxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxDLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxFLEUsRSxOXTt0Lkw9Zyx0LlI9eSx0LkVOPWIsdC5PTl9SPTMsdC5BTj00LHQuUl9IPTUsdC5CPTYsdC5STEU9Nyx0LkRPVD0iXHUwMGI3Iix0LmRvQmlkaVJlb3JkZXI9ZnVuY3Rpb24oZSxuLHIpe2lmKGUubGVuZ3RoPDIpcmV0dXJue307dmFyIGk9ZS5zcGxpdCgiIiksbz1uZXcgQXJyYXkoaS5sZW5ndGgpLHU9bmV3IEFycmF5KGkubGVuZ3RoKSxhPVtdO3M9cj9tOnYsRihpLGEsaS5sZW5ndGgsbik7Zm9yKHZhciBmPTA7ZjxvLmxlbmd0aDtvW2ZdPWYsZisrKTtJKDIsYSxvKSxJKDEsYSxvKTtmb3IodmFyIGY9MDtmPG8ubGVuZ3RoLTE7ZisrKW5bZl09PT13P2FbZl09dC5BTjphW2ZdPT09eSYmKG5bZl0+VCYmbltmXTxPfHxuW2ZdPT09RXx8bltmXT09PUgpP2FbZl09dC5PTl9SOmY+MCYmaVtmLTFdPT09Ilx1MDY0NCImJi9cdTA2MjJ8XHUwNjIzfFx1MDYyNXxcdTA2MjcvLnRlc3QoaVtmXSkmJihhW2YtMV09YVtmXT10LlJfSCxmKyspO2lbaS5sZW5ndGgtMV09PT10LkRPVCYmKGFbaS5sZW5ndGgtMV09dC5CKSxpWzBdPT09Ilx1MjAyYiImJihhWzBdPXQuUkxFKTtmb3IodmFyIGY9MDtmPG8ubGVuZ3RoO2YrKyl1W2ZdPWFbb1tmXV07cmV0dXJue2xvZ2ljYWxGcm9tVmlzdWFsOm8sYmlkaUxldmVsczp1fX0sdC5oYXNCaWRpQ2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPSExO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXRbcl09UihlLmNoYXJBdChyKSksIW4mJih0W3JdPT15fHx0W3JdPT1UfHx0W3JdPT13KSYmKG49ITApO3JldHVybiBufSx0LmdldFZpc3VhbEZyb21Mb2dpY2FsSWR4PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0LmxvZ2ljYWxGcm9tVmlzdWFsLmxlbmd0aDtuKyspaWYodC5sb2dpY2FsRnJvbVZpc3VhbFtuXT09ZSlyZXR1cm4gbjtyZXR1cm4gMH19KSxhY2UuZGVmaW5lKCJhY2UvYmlkaWhhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2JpZGl1dGlsIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2xpYi9iaWRpdXRpbCIpLGk9ZSgiLi9saWIvbGFuZyIpLHM9L1tcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MDcwMC1cdTA4YWNcdTIwMkJdLyxvPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbj1lLHRoaXMuYmlkaU1hcD17fSx0aGlzLmN1cnJlbnRSb3c9bnVsbCx0aGlzLmJpZGlVdGlsPXIsdGhpcy5jaGFyV2lkdGhzPVtdLHRoaXMuRU9MPSJcdTAwYWMiLHRoaXMuc2hvd0ludmlzaWJsZXM9ITAsdGhpcy5pc1J0bERpcj0hMSx0aGlzLiRpc1J0bD0hMSx0aGlzLmxpbmU9IiIsdGhpcy53cmFwSW5kZW50PTAsdGhpcy5FT0Y9Ilx1MDBiNiIsdGhpcy5STEU9Ilx1MjAyYiIsdGhpcy5jb250ZW50V2lkdGg9MCx0aGlzLmZvbnRNZXRyaWNzPW51bGwsdGhpcy5ydGxMaW5lT2Zmc2V0PTAsdGhpcy53cmFwT2Zmc2V0PTAsdGhpcy5pc01vdmVMZWZ0T3BlcmF0aW9uPSExLHRoaXMuc2VlbkJpZGk9cy50ZXN0KGUuZ2V0VmFsdWUoKSl9OyhmdW5jdGlvbigpe3RoaXMuaXNCaWRpUm93PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5zZWVuQmlkaT8oZSE9PXRoaXMuY3VycmVudFJvdyYmKHRoaXMuY3VycmVudFJvdz1lLHRoaXMudXBkYXRlUm93TGluZSh0LG4pLHRoaXMudXBkYXRlQmlkaU1hcCgpKSx0aGlzLmJpZGlNYXAuYmlkaUxldmVscyk6ITF9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dGhpcy5zZWVuQmlkaT90aGlzLmN1cnJlbnRSb3c9bnVsbDplLmFjdGlvbj09Imluc2VydCImJnMudGVzdChlLmxpbmVzLmpvaW4oIlxuIikpJiYodGhpcy5zZWVuQmlkaT0hMCx0aGlzLmN1cnJlbnRSb3c9bnVsbCl9LHRoaXMuZ2V0RG9jdW1lbnRSb3c9ZnVuY3Rpb24oKXt2YXIgZT0wLHQ9dGhpcy5zZXNzaW9uLiRzY3JlZW5Sb3dDYWNoZTtpZih0Lmxlbmd0aCl7dmFyIG49dGhpcy5zZXNzaW9uLiRnZXRSb3dDYWNoZUluZGV4KHQsdGhpcy5jdXJyZW50Um93KTtuPj0wJiYoZT10aGlzLnNlc3Npb24uJGRvY1Jvd0NhY2hlW25dKX1yZXR1cm4gZX0sdGhpcy5nZXRTcGxpdEluZGV4PWZ1bmN0aW9uKCl7dmFyIGU9MCx0PXRoaXMuc2Vzc2lvbi4kc2NyZWVuUm93Q2FjaGU7aWYodC5sZW5ndGgpe3ZhciBuLHI9dGhpcy5zZXNzaW9uLiRnZXRSb3dDYWNoZUluZGV4KHQsdGhpcy5jdXJyZW50Um93KTt3aGlsZSh0aGlzLmN1cnJlbnRSb3ctZT4wKXtuPXRoaXMuc2Vzc2lvbi4kZ2V0Um93Q2FjaGVJbmRleCh0LHRoaXMuY3VycmVudFJvdy1lLTEpO2lmKG4hPT1yKWJyZWFrO3I9bixlKyt9fWVsc2UgZT10aGlzLmN1cnJlbnRSb3c7cmV0dXJuIGV9LHRoaXMudXBkYXRlUm93TGluZT1mdW5jdGlvbihlLHQpe2U9PT11bmRlZmluZWQmJihlPXRoaXMuZ2V0RG9jdW1lbnRSb3coKSk7dmFyIG49ZT09PXRoaXMuc2Vzc2lvbi5nZXRMZW5ndGgoKS0xLHM9bj90aGlzLkVPRjp0aGlzLkVPTDt0aGlzLndyYXBJbmRlbnQ9MCx0aGlzLmxpbmU9dGhpcy5zZXNzaW9uLmdldExpbmUoZSksdGhpcy5pc1J0bERpcj10aGlzLiRpc1J0bHx8dGhpcy5saW5lLmNoYXJBdCgwKT09PXRoaXMuUkxFO2lmKHRoaXMuc2Vzc2lvbi4kdXNlV3JhcE1vZGUpe3ZhciBvPXRoaXMuc2Vzc2lvbi4kd3JhcERhdGFbZV07byYmKHQ9PT11bmRlZmluZWQmJih0PXRoaXMuZ2V0U3BsaXRJbmRleCgpKSx0PjAmJm8ubGVuZ3RoPyh0aGlzLndyYXBJbmRlbnQ9by5pbmRlbnQsdGhpcy53cmFwT2Zmc2V0PXRoaXMud3JhcEluZGVudCp0aGlzLmNoYXJXaWR0aHNbci5MXSx0aGlzLmxpbmU9dDxvLmxlbmd0aD90aGlzLmxpbmUuc3Vic3RyaW5nKG9bdC0xXSxvW3RdKTp0aGlzLmxpbmUuc3Vic3RyaW5nKG9bby5sZW5ndGgtMV0pKTp0aGlzLmxpbmU9dGhpcy5saW5lLnN1YnN0cmluZygwLG9bdF0pKSx0PT1vLmxlbmd0aCYmKHRoaXMubGluZSs9dGhpcy5zaG93SW52aXNpYmxlcz9zOnIuRE9UKX1lbHNlIHRoaXMubGluZSs9dGhpcy5zaG93SW52aXNpYmxlcz9zOnIuRE9UO3ZhciB1PXRoaXMuc2Vzc2lvbixhPTAsZjt0aGlzLmxpbmU9dGhpcy5saW5lLnJlcGxhY2UoL1x0fFtcdTExMDAtXHUyMDI5LCBcdTIwMkYtXHVGRkU2XS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT0iCSJ8fHUuaXNGdWxsV2lkdGgoZS5jaGFyQ29kZUF0KDApKT8oZj1lPT09IgkiP3UuZ2V0U2NyZWVuVGFiU2l6ZSh0K2EpOjIsYSs9Zi0xLGkuc3RyaW5nUmVwZWF0KHIuRE9ULGYpKTplfSksdGhpcy5pc1J0bERpciYmKHRoaXMuZm9udE1ldHJpY3MuJG1haW4udGV4dENvbnRlbnQ9dGhpcy5saW5lLmNoYXJBdCh0aGlzLmxpbmUubGVuZ3RoLTEpPT1yLkRPVD90aGlzLmxpbmUuc3Vic3RyKDAsdGhpcy5saW5lLmxlbmd0aC0xKTp0aGlzLmxpbmUsdGhpcy5ydGxMaW5lT2Zmc2V0PXRoaXMuY29udGVudFdpZHRoLXRoaXMuZm9udE1ldHJpY3MuJG1haW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfSx0aGlzLnVwZGF0ZUJpZGlNYXA9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyLmhhc0JpZGlDaGFyYWN0ZXJzKHRoaXMubGluZSxlKXx8dGhpcy5pc1J0bERpcj90aGlzLmJpZGlNYXA9ci5kb0JpZGlSZW9yZGVyKHRoaXMubGluZSxlLHRoaXMuaXNSdGxEaXIpOnRoaXMuYmlkaU1hcD17fX0sdGhpcy5tYXJrQXNEaXJ0eT1mdW5jdGlvbigpe3RoaXMuY3VycmVudFJvdz1udWxsfSx0aGlzLnVwZGF0ZUNoYXJhY3RlcldpZHRocz1mdW5jdGlvbihlKXtpZih0aGlzLmNoYXJhY3RlcldpZHRoPT09ZS4kY2hhcmFjdGVyU2l6ZS53aWR0aClyZXR1cm47dGhpcy5mb250TWV0cmljcz1lO3ZhciB0PXRoaXMuY2hhcmFjdGVyV2lkdGg9ZS4kY2hhcmFjdGVyU2l6ZS53aWR0aCxuPWUuJG1lYXN1cmVDaGFyV2lkdGgoIlx1MDVkNCIpO3RoaXMuY2hhcldpZHRoc1tyLkxdPXRoaXMuY2hhcldpZHRoc1tyLkVOXT10aGlzLmNoYXJXaWR0aHNbci5PTl9SXT10LHRoaXMuY2hhcldpZHRoc1tyLlJdPXRoaXMuY2hhcldpZHRoc1tyLkFOXT1uLHRoaXMuY2hhcldpZHRoc1tyLlJfSF09biouNDUsdGhpcy5jaGFyV2lkdGhzW3IuQl09dGhpcy5jaGFyV2lkdGhzW3IuUkxFXT0wLHRoaXMuY3VycmVudFJvdz1udWxsfSx0aGlzLnNldFNob3dJbnZpc2libGVzPWZ1bmN0aW9uKGUpe3RoaXMuc2hvd0ludmlzaWJsZXM9ZSx0aGlzLmN1cnJlbnRSb3c9bnVsbH0sdGhpcy5zZXRFb2xDaGFyPWZ1bmN0aW9uKGUpe3RoaXMuRU9MPWV9LHRoaXMuc2V0Q29udGVudFdpZHRoPWZ1bmN0aW9uKGUpe3RoaXMuY29udGVudFdpZHRoPWV9LHRoaXMuaXNSdGxMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRpc1J0bD8hMDplIT11bmRlZmluZWQ/dGhpcy5zZXNzaW9uLmdldExpbmUoZSkuY2hhckF0KDApPT10aGlzLlJMRTp0aGlzLmlzUnRsRGlyfSx0aGlzLnNldFJ0bERpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKTtmb3IodmFyIHI9ZS5zZWxlY3Rpb24uZ2V0U2VsZWN0aW9uQW5jaG9yKCkucm93O3I8PW4ucm93O3IrKykhdCYmZS5zZXNzaW9uLmdldExpbmUocikuY2hhckF0KDApPT09ZS5zZXNzaW9uLiRiaWRpSGFuZGxlci5STEU/ZS5zZXNzaW9uLmRvYy5yZW1vdmVJbkxpbmUociwwLDEpOnQmJmUuc2Vzc2lvbi5nZXRMaW5lKHIpLmNoYXJBdCgwKSE9PWUuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuUkxFJiZlLnNlc3Npb24uZG9jLmluc2VydCh7Y29sdW1uOjAscm93OnJ9LGUuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuUkxFKX0sdGhpcy5nZXRQb3NMZWZ0PWZ1bmN0aW9uKGUpe2UtPXRoaXMud3JhcEluZGVudDt2YXIgdD10aGlzLmxpbmUuY2hhckF0KDApPT09dGhpcy5STEU/MTowLG49ZT50P3RoaXMuc2Vzc2lvbi5nZXRPdmVyd3JpdGUoKT9lOmUtMTp0LGk9ci5nZXRWaXN1YWxGcm9tTG9naWNhbElkeChuLHRoaXMuYmlkaU1hcCkscz10aGlzLmJpZGlNYXAuYmlkaUxldmVscyxvPTA7IXRoaXMuc2Vzc2lvbi5nZXRPdmVyd3JpdGUoKSYmZTw9dCYmc1tpXSUyIT09MCYmaSsrO2Zvcih2YXIgdT0wO3U8aTt1Kyspbys9dGhpcy5jaGFyV2lkdGhzW3NbdV1dO3JldHVybiF0aGlzLnNlc3Npb24uZ2V0T3ZlcndyaXRlKCkmJmU+dCYmc1tpXSUyPT09MCYmKG8rPXRoaXMuY2hhcldpZHRoc1tzW2ldXSksdGhpcy53cmFwSW5kZW50JiYobys9dGhpcy5pc1J0bERpcj8tMSp0aGlzLndyYXBPZmZzZXQ6dGhpcy53cmFwT2Zmc2V0KSx0aGlzLmlzUnRsRGlyJiYobys9dGhpcy5ydGxMaW5lT2Zmc2V0KSxvfSx0aGlzLmdldFNlbGVjdGlvbnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmJpZGlNYXAscj1uLmJpZGlMZXZlbHMsaSxzPVtdLG89MCx1PU1hdGgubWluKGUsdCktdGhpcy53cmFwSW5kZW50LGE9TWF0aC5tYXgoZSx0KS10aGlzLndyYXBJbmRlbnQsZj0hMSxsPSExLGM9MDt0aGlzLndyYXBJbmRlbnQmJihvKz10aGlzLmlzUnRsRGlyPy0xKnRoaXMud3JhcE9mZnNldDp0aGlzLndyYXBPZmZzZXQpO2Zvcih2YXIgaCxwPTA7cDxyLmxlbmd0aDtwKyspaD1uLmxvZ2ljYWxGcm9tVmlzdWFsW3BdLGk9cltwXSxmPWg+PXUmJmg8YSxmJiYhbD9jPW86IWYmJmwmJnMucHVzaCh7bGVmdDpjLHdpZHRoOm8tY30pLG8rPXRoaXMuY2hhcldpZHRoc1tpXSxsPWY7ZiYmcD09PXIubGVuZ3RoJiZzLnB1c2goe2xlZnQ6Yyx3aWR0aDpvLWN9KTtpZih0aGlzLmlzUnRsRGlyKWZvcih2YXIgZD0wO2Q8cy5sZW5ndGg7ZCsrKXNbZF0ubGVmdCs9dGhpcy5ydGxMaW5lT2Zmc2V0O3JldHVybiBzfSx0aGlzLm9mZnNldFRvQ29sPWZ1bmN0aW9uKGUpe3RoaXMuaXNSdGxEaXImJihlLT10aGlzLnJ0bExpbmVPZmZzZXQpO3ZhciB0PTAsZT1NYXRoLm1heChlLDApLG49MCxyPTAsaT10aGlzLmJpZGlNYXAuYmlkaUxldmVscyxzPXRoaXMuY2hhcldpZHRoc1tpW3JdXTt0aGlzLndyYXBJbmRlbnQmJihlLT10aGlzLmlzUnRsRGlyPy0xKnRoaXMud3JhcE9mZnNldDp0aGlzLndyYXBPZmZzZXQpO3doaWxlKGU+bitzLzIpe24rPXM7aWYocj09PWkubGVuZ3RoLTEpe3M9MDticmVha31zPXRoaXMuY2hhcldpZHRoc1tpWysrcl1dfXJldHVybiByPjAmJmlbci0xXSUyIT09MCYmaVtyXSUyPT09MD8oZTxuJiZyLS0sdD10aGlzLmJpZGlNYXAubG9naWNhbEZyb21WaXN1YWxbcl0pOnI+MCYmaVtyLTFdJTI9PT0wJiZpW3JdJTIhPT0wP3Q9MSsoZT5uP3RoaXMuYmlkaU1hcC5sb2dpY2FsRnJvbVZpc3VhbFtyXTp0aGlzLmJpZGlNYXAubG9naWNhbEZyb21WaXN1YWxbci0xXSk6dGhpcy5pc1J0bERpciYmcj09PWkubGVuZ3RoLTEmJnM9PT0wJiZpW3ItMV0lMj09PTB8fCF0aGlzLmlzUnRsRGlyJiZyPT09MCYmaVtyXSUyIT09MD90PTErdGhpcy5iaWRpTWFwLmxvZ2ljYWxGcm9tVmlzdWFsW3JdOihyPjAmJmlbci0xXSUyIT09MCYmcyE9PTAmJnItLSx0PXRoaXMuYmlkaU1hcC5sb2dpY2FsRnJvbVZpc3VhbFtyXSksdD09PTAmJnRoaXMuaXNSdGxEaXImJnQrKyx0K3RoaXMud3JhcEluZGVudH19KS5jYWxsKG8ucHJvdG90eXBlKSx0LkJpZGlIYW5kbGVyPW99KSxhY2UuZGVmaW5lKCJhY2Uvc2VsZWN0aW9uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvbGFuZyIpLHM9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixvPWUoIi4vcmFuZ2UiKS5SYW5nZSx1PWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbj1lLHRoaXMuZG9jPWUuZ2V0RG9jdW1lbnQoKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5jdXJzb3I9dGhpcy5sZWFkPXRoaXMuZG9jLmNyZWF0ZUFuY2hvcigwLDApLHRoaXMuYW5jaG9yPXRoaXMuZG9jLmNyZWF0ZUFuY2hvcigwLDApLHRoaXMuJHNpbGVudD0hMTt2YXIgdD10aGlzO3RoaXMuY3Vyc29yLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe3QuJGN1cnNvckNoYW5nZWQ9ITAsdC4kc2lsZW50fHx0Ll9lbWl0KCJjaGFuZ2VDdXJzb3IiKSwhdC4kaXNFbXB0eSYmIXQuJHNpbGVudCYmdC5fZW1pdCgiY2hhbmdlU2VsZWN0aW9uIiksIXQuJGtlZXBEZXNpcmVkQ29sdW1uT25DaGFuZ2UmJmUub2xkLmNvbHVtbiE9ZS52YWx1ZS5jb2x1bW4mJih0LiRkZXNpcmVkQ29sdW1uPW51bGwpfSksdGhpcy5hbmNob3Iub24oImNoYW5nZSIsZnVuY3Rpb24oKXt0LiRhbmNob3JDaGFuZ2VkPSEwLCF0LiRpc0VtcHR5JiYhdC4kc2lsZW50JiZ0Ll9lbWl0KCJjaGFuZ2VTZWxlY3Rpb24iKX0pfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLHMpLHRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRpc0VtcHR5fHx0aGlzLmFuY2hvci5yb3c9PXRoaXMubGVhZC5yb3cmJnRoaXMuYW5jaG9yLmNvbHVtbj09dGhpcy5sZWFkLmNvbHVtbn0sdGhpcy5pc011bHRpTGluZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLiRpc0VtcHR5JiZ0aGlzLmFuY2hvci5yb3chPXRoaXMuY3Vyc29yLnJvd30sdGhpcy5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZWFkLmdldFBvc2l0aW9uKCl9LHRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yPWZ1bmN0aW9uKGUsdCl7dGhpcy4kaXNFbXB0eT0hMSx0aGlzLmFuY2hvci5zZXRQb3NpdGlvbihlLHQpfSx0aGlzLmdldEFuY2hvcj10aGlzLmdldFNlbGVjdGlvbkFuY2hvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRpc0VtcHR5P3RoaXMuZ2V0U2VsZWN0aW9uTGVhZCgpOnRoaXMuYW5jaG9yLmdldFBvc2l0aW9uKCl9LHRoaXMuZ2V0U2VsZWN0aW9uTGVhZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlYWQuZ2V0UG9zaXRpb24oKX0sdGhpcy5pc0JhY2t3YXJkcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYW5jaG9yLHQ9dGhpcy5sZWFkO3JldHVybiBlLnJvdz50LnJvd3x8ZS5yb3c9PXQucm93JiZlLmNvbHVtbj50LmNvbHVtbn0sdGhpcy5nZXRSYW5nZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYW5jaG9yLHQ9dGhpcy5sZWFkO3JldHVybiB0aGlzLiRpc0VtcHR5P28uZnJvbVBvaW50cyh0LHQpOnRoaXMuaXNCYWNrd2FyZHMoKT9vLmZyb21Qb2ludHModCxlKTpvLmZyb21Qb2ludHMoZSx0KX0sdGhpcy5jbGVhclNlbGVjdGlvbj1mdW5jdGlvbigpe3RoaXMuJGlzRW1wdHl8fCh0aGlzLiRpc0VtcHR5PSEwLHRoaXMuX2VtaXQoImNoYW5nZVNlbGVjdGlvbiIpKX0sdGhpcy5zZWxlY3RBbGw9ZnVuY3Rpb24oKXt0aGlzLiRzZXRTZWxlY3Rpb24oMCwwLE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1BWF9WQUxVRSl9LHRoaXMuc2V0UmFuZ2U9dGhpcy5zZXRTZWxlY3Rpb25SYW5nZT1mdW5jdGlvbihlLHQpe3ZhciBuPXQ/ZS5lbmQ6ZS5zdGFydCxyPXQ/ZS5zdGFydDplLmVuZDt0aGlzLiRzZXRTZWxlY3Rpb24obi5yb3csbi5jb2x1bW4sci5yb3csci5jb2x1bW4pfSx0aGlzLiRzZXRTZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy4kaXNFbXB0eSxzPXRoaXMuaW5NdWx0aVNlbGVjdE1vZGU7dGhpcy4kc2lsZW50PSEwLHRoaXMuJGN1cnNvckNoYW5nZWQ9dGhpcy4kYW5jaG9yQ2hhbmdlZD0hMSx0aGlzLmFuY2hvci5zZXRQb3NpdGlvbihlLHQpLHRoaXMuY3Vyc29yLnNldFBvc2l0aW9uKG4sciksdGhpcy4kaXNFbXB0eT0hby5jb21wYXJlUG9pbnRzKHRoaXMuYW5jaG9yLHRoaXMuY3Vyc29yKSx0aGlzLiRzaWxlbnQ9ITEsdGhpcy4kY3Vyc29yQ2hhbmdlZCYmdGhpcy5fZW1pdCgiY2hhbmdlQ3Vyc29yIiksKHRoaXMuJGN1cnNvckNoYW5nZWR8fHRoaXMuJGFuY2hvckNoYW5nZWR8fGkhPXRoaXMuJGlzRW1wdHl8fHMpJiZ0aGlzLl9lbWl0KCJjaGFuZ2VTZWxlY3Rpb24iKX0sdGhpcy4kbW92ZVNlbGVjdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlYWQ7dGhpcy4kaXNFbXB0eSYmdGhpcy5zZXRTZWxlY3Rpb25BbmNob3IodC5yb3csdC5jb2x1bW4pLGUuY2FsbCh0aGlzKX0sdGhpcy5zZWxlY3RUbz1mdW5jdGlvbihlLHQpe3RoaXMuJG1vdmVTZWxlY3Rpb24oZnVuY3Rpb24oKXt0aGlzLm1vdmVDdXJzb3JUbyhlLHQpfSl9LHRoaXMuc2VsZWN0VG9Qb3NpdGlvbj1mdW5jdGlvbihlKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKGZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihlKX0pfSx0aGlzLm1vdmVUbz1mdW5jdGlvbihlLHQpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLm1vdmVDdXJzb3JUbyhlLHQpfSx0aGlzLm1vdmVUb1Bvc2l0aW9uPWZ1bmN0aW9uKGUpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGUpfSx0aGlzLnNlbGVjdFVwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JVcCl9LHRoaXMuc2VsZWN0RG93bj1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yRG93bil9LHRoaXMuc2VsZWN0UmlnaHQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvclJpZ2h0KX0sdGhpcy5zZWxlY3RMZWZ0PWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JMZWZ0KX0sdGhpcy5zZWxlY3RMaW5lU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckxpbmVTdGFydCl9LHRoaXMuc2VsZWN0TGluZUVuZD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yTGluZUVuZCl9LHRoaXMuc2VsZWN0RmlsZUVuZD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yRmlsZUVuZCl9LHRoaXMuc2VsZWN0RmlsZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JGaWxlU3RhcnQpfSx0aGlzLnNlbGVjdFdvcmRSaWdodD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yV29yZFJpZ2h0KX0sdGhpcy5zZWxlY3RXb3JkTGVmdD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yV29yZExlZnQpfSx0aGlzLmdldFdvcmRSYW5nZT1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiB0PT0idW5kZWZpbmVkIil7dmFyIG49ZXx8dGhpcy5sZWFkO2U9bi5yb3csdD1uLmNvbHVtbn1yZXR1cm4gdGhpcy5zZXNzaW9uLmdldFdvcmRSYW5nZShlLHQpfSx0aGlzLnNlbGVjdFdvcmQ9ZnVuY3Rpb24oKXt0aGlzLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZ2V0V29yZFJhbmdlKCkpfSx0aGlzLnNlbGVjdEFXb3JkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDdXJzb3IoKSx0PXRoaXMuc2Vzc2lvbi5nZXRBV29yZFJhbmdlKGUucm93LGUuY29sdW1uKTt0aGlzLnNldFNlbGVjdGlvblJhbmdlKHQpfSx0aGlzLmdldExpbmVSYW5nZT1mdW5jdGlvbihlLHQpe3ZhciBuPXR5cGVvZiBlPT0ibnVtYmVyIj9lOnRoaXMubGVhZC5yb3cscixpPXRoaXMuc2Vzc2lvbi5nZXRGb2xkTGluZShuKTtyZXR1cm4gaT8obj1pLnN0YXJ0LnJvdyxyPWkuZW5kLnJvdyk6cj1uLHQ9PT0hMD9uZXcgbyhuLDAscix0aGlzLnNlc3Npb24uZ2V0TGluZShyKS5sZW5ndGgpOm5ldyBvKG4sMCxyKzEsMCl9LHRoaXMuc2VsZWN0TGluZT1mdW5jdGlvbigpe3RoaXMuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5nZXRMaW5lUmFuZ2UoKSl9LHRoaXMubW92ZUN1cnNvclVwPWZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yQnkoLTEsMCl9LHRoaXMubW92ZUN1cnNvckRvd249ZnVuY3Rpb24oKXt0aGlzLm1vdmVDdXJzb3JCeSgxLDApfSx0aGlzLndvdWxkTW92ZUludG9Tb2Z0VGFiPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmNvbHVtbixpPWUuY29sdW1uK3Q7cmV0dXJuIG48MCYmKHI9ZS5jb2x1bW4tdCxpPWUuY29sdW1uKSx0aGlzLnNlc3Npb24uaXNUYWJTdG9wKGUpJiZ0aGlzLmRvYy5nZXRMaW5lKGUucm93KS5zbGljZShyLGkpLnNwbGl0KCIgIikubGVuZ3RoLTE9PXR9LHRoaXMubW92ZUN1cnNvckxlZnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlYWQuZ2V0UG9zaXRpb24oKSx0O2lmKHQ9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChlLnJvdyxlLmNvbHVtbiwtMSkpdGhpcy5tb3ZlQ3Vyc29yVG8odC5zdGFydC5yb3csdC5zdGFydC5jb2x1bW4pO2Vsc2UgaWYoZS5jb2x1bW49PT0wKWUucm93PjAmJnRoaXMubW92ZUN1cnNvclRvKGUucm93LTEsdGhpcy5kb2MuZ2V0TGluZShlLnJvdy0xKS5sZW5ndGgpO2Vsc2V7dmFyIG49dGhpcy5zZXNzaW9uLmdldFRhYlNpemUoKTt0aGlzLndvdWxkTW92ZUludG9Tb2Z0VGFiKGUsbiwtMSkmJiF0aGlzLnNlc3Npb24uZ2V0TmF2aWdhdGVXaXRoaW5Tb2Z0VGFicygpP3RoaXMubW92ZUN1cnNvckJ5KDAsLW4pOnRoaXMubW92ZUN1cnNvckJ5KDAsLTEpfX0sdGhpcy5tb3ZlQ3Vyc29yUmlnaHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlYWQuZ2V0UG9zaXRpb24oKSx0O2lmKHQ9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChlLnJvdyxlLmNvbHVtbiwxKSl0aGlzLm1vdmVDdXJzb3JUbyh0LmVuZC5yb3csdC5lbmQuY29sdW1uKTtlbHNlIGlmKHRoaXMubGVhZC5jb2x1bW49PXRoaXMuZG9jLmdldExpbmUodGhpcy5sZWFkLnJvdykubGVuZ3RoKXRoaXMubGVhZC5yb3c8dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMSYmdGhpcy5tb3ZlQ3Vyc29yVG8odGhpcy5sZWFkLnJvdysxLDApO2Vsc2V7dmFyIG49dGhpcy5zZXNzaW9uLmdldFRhYlNpemUoKSxlPXRoaXMubGVhZDt0aGlzLndvdWxkTW92ZUludG9Tb2Z0VGFiKGUsbiwxKSYmIXRoaXMuc2Vzc2lvbi5nZXROYXZpZ2F0ZVdpdGhpblNvZnRUYWJzKCk/dGhpcy5tb3ZlQ3Vyc29yQnkoMCxuKTp0aGlzLm1vdmVDdXJzb3JCeSgwLDEpfX0sdGhpcy5tb3ZlQ3Vyc29yTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWFkLnJvdyx0PXRoaXMubGVhZC5jb2x1bW4sbj10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblJvdyhlLHQpLHI9dGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihuLDApLGk9dGhpcy5zZXNzaW9uLmdldERpc3BsYXlMaW5lKGUsbnVsbCxyLnJvdyxyLmNvbHVtbikscz1pLm1hdGNoKC9eXHMqLyk7c1swXS5sZW5ndGghPXQmJiF0aGlzLnNlc3Npb24uJHVzZUVtYWNzU3R5bGVMaW5lU3RhcnQmJihyLmNvbHVtbis9c1swXS5sZW5ndGgpLHRoaXMubW92ZUN1cnNvclRvUG9zaXRpb24ocil9LHRoaXMubW92ZUN1cnNvckxpbmVFbmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlYWQsdD10aGlzLnNlc3Npb24uZ2V0RG9jdW1lbnRMYXN0Um93Q29sdW1uUG9zaXRpb24oZS5yb3csZS5jb2x1bW4pO2lmKHRoaXMubGVhZC5jb2x1bW49PXQuY29sdW1uKXt2YXIgbj10aGlzLnNlc3Npb24uZ2V0TGluZSh0LnJvdyk7aWYodC5jb2x1bW49PW4ubGVuZ3RoKXt2YXIgcj1uLnNlYXJjaCgvXHMrJC8pO3I+MCYmKHQuY29sdW1uPXIpfX10aGlzLm1vdmVDdXJzb3JUbyh0LnJvdyx0LmNvbHVtbil9LHRoaXMubW92ZUN1cnNvckZpbGVFbmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRvYy5nZXRMZW5ndGgoKS0xLHQ9dGhpcy5kb2MuZ2V0TGluZShlKS5sZW5ndGg7dGhpcy5tb3ZlQ3Vyc29yVG8oZSx0KX0sdGhpcy5tb3ZlQ3Vyc29yRmlsZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yVG8oMCwwKX0sdGhpcy5tb3ZlQ3Vyc29yTG9uZ1dvcmRSaWdodD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVhZC5yb3csdD10aGlzLmxlYWQuY29sdW1uLG49dGhpcy5kb2MuZ2V0TGluZShlKSxyPW4uc3Vic3RyaW5nKHQpO3RoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wLHRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleD0wO3ZhciBpPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoZSx0LDEpO2lmKGkpe3RoaXMubW92ZUN1cnNvclRvKGkuZW5kLnJvdyxpLmVuZC5jb2x1bW4pO3JldHVybn10aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5leGVjKHIpJiYodCs9dGhpcy5zZXNzaW9uLm5vblRva2VuUmUubGFzdEluZGV4LHRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wLHI9bi5zdWJzdHJpbmcodCkpO2lmKHQ+PW4ubGVuZ3RoKXt0aGlzLm1vdmVDdXJzb3JUbyhlLG4ubGVuZ3RoKSx0aGlzLm1vdmVDdXJzb3JSaWdodCgpLGU8dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMSYmdGhpcy5tb3ZlQ3Vyc29yV29yZFJpZ2h0KCk7cmV0dXJufXRoaXMuc2Vzc2lvbi50b2tlblJlLmV4ZWMocikmJih0Kz10aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXgsdGhpcy5zZXNzaW9uLnRva2VuUmUubGFzdEluZGV4PTApLHRoaXMubW92ZUN1cnNvclRvKGUsdCl9LHRoaXMubW92ZUN1cnNvckxvbmdXb3JkTGVmdD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVhZC5yb3csdD10aGlzLmxlYWQuY29sdW1uLG47aWYobj10aGlzLnNlc3Npb24uZ2V0Rm9sZEF0KGUsdCwtMSkpe3RoaXMubW92ZUN1cnNvclRvKG4uc3RhcnQucm93LG4uc3RhcnQuY29sdW1uKTtyZXR1cm59dmFyIHI9dGhpcy5zZXNzaW9uLmdldEZvbGRTdHJpbmdBdChlLHQsLTEpO3I9PW51bGwmJihyPXRoaXMuZG9jLmdldExpbmUoZSkuc3Vic3RyaW5nKDAsdCkpO3ZhciBzPWkuc3RyaW5nUmV2ZXJzZShyKTt0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5sYXN0SW5kZXg9MCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MCx0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5leGVjKHMpJiYodC09dGhpcy5zZXNzaW9uLm5vblRva2VuUmUubGFzdEluZGV4LHM9cy5zbGljZSh0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5sYXN0SW5kZXgpLHRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wKTtpZih0PD0wKXt0aGlzLm1vdmVDdXJzb3JUbyhlLDApLHRoaXMubW92ZUN1cnNvckxlZnQoKSxlPjAmJnRoaXMubW92ZUN1cnNvcldvcmRMZWZ0KCk7cmV0dXJufXRoaXMuc2Vzc2lvbi50b2tlblJlLmV4ZWMocykmJih0LT10aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXgsdGhpcy5zZXNzaW9uLnRva2VuUmUubGFzdEluZGV4PTApLHRoaXMubW92ZUN1cnNvclRvKGUsdCl9LHRoaXMuJHNob3J0V29yZEVuZEluZGV4PWZ1bmN0aW9uKGUpe3ZhciB0PTAsbixyPS9ccy8saT10aGlzLnNlc3Npb24udG9rZW5SZTtpLmxhc3RJbmRleD0wO2lmKHRoaXMuc2Vzc2lvbi50b2tlblJlLmV4ZWMoZSkpdD10aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg7ZWxzZXt3aGlsZSgobj1lW3RdKSYmci50ZXN0KG4pKXQrKztpZih0PDEpe2kubGFzdEluZGV4PTA7d2hpbGUoKG49ZVt0XSkmJiFpLnRlc3Qobikpe2kubGFzdEluZGV4PTAsdCsrO2lmKHIudGVzdChuKSl7aWYodD4yKXt0LS07YnJlYWt9d2hpbGUoKG49ZVt0XSkmJnIudGVzdChuKSl0Kys7aWYodD4yKWJyZWFrfX19fXJldHVybiBpLmxhc3RJbmRleD0wLHR9LHRoaXMubW92ZUN1cnNvclNob3J0V29yZFJpZ2h0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWFkLnJvdyx0PXRoaXMubGVhZC5jb2x1bW4sbj10aGlzLmRvYy5nZXRMaW5lKGUpLHI9bi5zdWJzdHJpbmcodCksaT10aGlzLnNlc3Npb24uZ2V0Rm9sZEF0KGUsdCwxKTtpZihpKXJldHVybiB0aGlzLm1vdmVDdXJzb3JUbyhpLmVuZC5yb3csaS5lbmQuY29sdW1uKTtpZih0PT1uLmxlbmd0aCl7dmFyIHM9dGhpcy5kb2MuZ2V0TGVuZ3RoKCk7ZG8gZSsrLHI9dGhpcy5kb2MuZ2V0TGluZShlKTt3aGlsZShlPHMmJi9eXHMqJC8udGVzdChyKSk7L15ccysvLnRlc3Qocil8fChyPSIiKSx0PTB9dmFyIG89dGhpcy4kc2hvcnRXb3JkRW5kSW5kZXgocik7dGhpcy5tb3ZlQ3Vyc29yVG8oZSx0K28pfSx0aGlzLm1vdmVDdXJzb3JTaG9ydFdvcmRMZWZ0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWFkLnJvdyx0PXRoaXMubGVhZC5jb2x1bW4sbjtpZihuPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoZSx0LC0xKSlyZXR1cm4gdGhpcy5tb3ZlQ3Vyc29yVG8obi5zdGFydC5yb3csbi5zdGFydC5jb2x1bW4pO3ZhciByPXRoaXMuc2Vzc2lvbi5nZXRMaW5lKGUpLnN1YnN0cmluZygwLHQpO2lmKHQ9PT0wKXtkbyBlLS0scj10aGlzLmRvYy5nZXRMaW5lKGUpO3doaWxlKGU+MCYmL15ccyokLy50ZXN0KHIpKTt0PXIubGVuZ3RoLC9ccyskLy50ZXN0KHIpfHwocj0iIil9dmFyIHM9aS5zdHJpbmdSZXZlcnNlKHIpLG89dGhpcy4kc2hvcnRXb3JkRW5kSW5kZXgocyk7cmV0dXJuIHRoaXMubW92ZUN1cnNvclRvKGUsdC1vKX0sdGhpcy5tb3ZlQ3Vyc29yV29yZFJpZ2h0PWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLiRzZWxlY3RMb25nV29yZHM/dGhpcy5tb3ZlQ3Vyc29yTG9uZ1dvcmRSaWdodCgpOnRoaXMubW92ZUN1cnNvclNob3J0V29yZFJpZ2h0KCl9LHRoaXMubW92ZUN1cnNvcldvcmRMZWZ0PWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLiRzZWxlY3RMb25nV29yZHM/dGhpcy5tb3ZlQ3Vyc29yTG9uZ1dvcmRMZWZ0KCk6dGhpcy5tb3ZlQ3Vyc29yU2hvcnRXb3JkTGVmdCgpfSx0aGlzLm1vdmVDdXJzb3JCeT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5sZWFkLnJvdyx0aGlzLmxlYWQuY29sdW1uKSxyO3Q9PT0wJiYoZSE9PTAmJih0aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyLmlzQmlkaVJvdyhuLnJvdyx0aGlzLmxlYWQucm93KT8ocj10aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyLmdldFBvc0xlZnQobi5jb2x1bW4pLG4uY29sdW1uPU1hdGgucm91bmQoci90aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyLmNoYXJXaWR0aHNbMF0pKTpyPW4uY29sdW1uKnRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuY2hhcldpZHRoc1swXSksdGhpcy4kZGVzaXJlZENvbHVtbj9uLmNvbHVtbj10aGlzLiRkZXNpcmVkQ29sdW1uOnRoaXMuJGRlc2lyZWRDb2x1bW49bi5jb2x1bW4pO3ZhciBpPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24obi5yb3crZSxuLmNvbHVtbixyKTtlIT09MCYmdD09PTAmJmkucm93PT09dGhpcy5sZWFkLnJvdyYmaS5jb2x1bW49PT10aGlzLmxlYWQuY29sdW1uJiZ0aGlzLnNlc3Npb24ubGluZVdpZGdldHMmJnRoaXMuc2Vzc2lvbi5saW5lV2lkZ2V0c1tpLnJvd10mJihpLnJvdz4wfHxlPjApJiZpLnJvdysrLHRoaXMubW92ZUN1cnNvclRvKGkucm93LGkuY29sdW1uK3QsdD09PTApfSx0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uPWZ1bmN0aW9uKGUpe3RoaXMubW92ZUN1cnNvclRvKGUucm93LGUuY29sdW1uKX0sdGhpcy5tb3ZlQ3Vyc29yVG89ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoZSx0LDEpO3ImJihlPXIuc3RhcnQucm93LHQ9ci5zdGFydC5jb2x1bW4pLHRoaXMuJGtlZXBEZXNpcmVkQ29sdW1uT25DaGFuZ2U9ITA7dmFyIGk9dGhpcy5zZXNzaW9uLmdldExpbmUoZSk7L1tcdURDMDAtXHVERkZGXS8udGVzdChpLmNoYXJBdCh0KSkmJmkuY2hhckF0KHQtMSkmJih0aGlzLmxlYWQucm93PT1lJiZ0aGlzLmxlYWQuY29sdW1uPT10KzE/dC09MTp0Kz0xKSx0aGlzLmxlYWQuc2V0UG9zaXRpb24oZSx0KSx0aGlzLiRrZWVwRGVzaXJlZENvbHVtbk9uQ2hhbmdlPSExLG58fCh0aGlzLiRkZXNpcmVkQ29sdW1uPW51bGwpfSx0aGlzLm1vdmVDdXJzb3JUb1NjcmVlbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihlLHQpO3RoaXMubW92ZUN1cnNvclRvKHIucm93LHIuY29sdW1uLG4pfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMubGVhZC5kZXRhY2goKSx0aGlzLmFuY2hvci5kZXRhY2goKSx0aGlzLnNlc3Npb249dGhpcy5kb2M9bnVsbH0sdGhpcy5mcm9tT3JpZW50ZWRSYW5nZT1mdW5jdGlvbihlKXt0aGlzLnNldFNlbGVjdGlvblJhbmdlKGUsZS5jdXJzb3I9PWUuc3RhcnQpLHRoaXMuJGRlc2lyZWRDb2x1bW49ZS5kZXNpcmVkQ29sdW1ufHx0aGlzLiRkZXNpcmVkQ29sdW1ufSx0aGlzLnRvT3JpZW50ZWRSYW5nZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFJhbmdlKCk7cmV0dXJuIGU/KGUuc3RhcnQuY29sdW1uPXQuc3RhcnQuY29sdW1uLGUuc3RhcnQucm93PXQuc3RhcnQucm93LGUuZW5kLmNvbHVtbj10LmVuZC5jb2x1bW4sZS5lbmQucm93PXQuZW5kLnJvdyk6ZT10LGUuY3Vyc29yPXRoaXMuaXNCYWNrd2FyZHMoKT9lLnN0YXJ0OmUuZW5kLGUuZGVzaXJlZENvbHVtbj10aGlzLiRkZXNpcmVkQ29sdW1uLGV9LHRoaXMuZ2V0UmFuZ2VPZk1vdmVtZW50cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldEN1cnNvcigpO3RyeXtlKHRoaXMpO3ZhciBuPXRoaXMuZ2V0Q3Vyc29yKCk7cmV0dXJuIG8uZnJvbVBvaW50cyh0LG4pfWNhdGNoKHIpe3JldHVybiBvLmZyb21Qb2ludHModCx0KX1maW5hbGx5e3RoaXMubW92ZUN1cnNvclRvUG9zaXRpb24odCl9fSx0aGlzLnRvSlNPTj1mdW5jdGlvbigpe2lmKHRoaXMucmFuZ2VDb3VudCl2YXIgZT10aGlzLnJhbmdlcy5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbG9uZSgpO3JldHVybiB0LmlzQmFja3dhcmRzPWUuY3Vyc29yPT1lLnN0YXJ0LHR9KTtlbHNle3ZhciBlPXRoaXMuZ2V0UmFuZ2UoKTtlLmlzQmFja3dhcmRzPXRoaXMuaXNCYWNrd2FyZHMoKX1yZXR1cm4gZX0sdGhpcy5mcm9tSlNPTj1mdW5jdGlvbihlKXtpZihlLnN0YXJ0PT11bmRlZmluZWQpe2lmKHRoaXMucmFuZ2VMaXN0JiZlLmxlbmd0aD4xKXt0aGlzLnRvU2luZ2xlUmFuZ2UoZVswXSk7Zm9yKHZhciB0PWUubGVuZ3RoO3QtLTspe3ZhciBuPW8uZnJvbVBvaW50cyhlW3RdLnN0YXJ0LGVbdF0uZW5kKTtlW3RdLmlzQmFja3dhcmRzJiYobi5jdXJzb3I9bi5zdGFydCksdGhpcy5hZGRSYW5nZShuLCEwKX1yZXR1cm59ZT1lWzBdfXRoaXMucmFuZ2VMaXN0JiZ0aGlzLnRvU2luZ2xlUmFuZ2UoZSksdGhpcy5zZXRTZWxlY3Rpb25SYW5nZShlLGUuaXNCYWNrd2FyZHMpfSx0aGlzLmlzRXF1YWw9ZnVuY3Rpb24oZSl7aWYoKGUubGVuZ3RofHx0aGlzLnJhbmdlQ291bnQpJiZlLmxlbmd0aCE9dGhpcy5yYW5nZUNvdW50KXJldHVybiExO2lmKCFlLmxlbmd0aHx8IXRoaXMucmFuZ2VzKXJldHVybiB0aGlzLmdldFJhbmdlKCkuaXNFcXVhbChlKTtmb3IodmFyIHQ9dGhpcy5yYW5nZXMubGVuZ3RoO3QtLTspaWYoIXRoaXMucmFuZ2VzW3RdLmlzRXF1YWwoZVt0XSkpcmV0dXJuITE7cmV0dXJuITB9fSkuY2FsbCh1LnByb3RvdHlwZSksdC5TZWxlY3Rpb249dX0pLGFjZS5kZWZpbmUoImFjZS90b2tlbml6ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvY29uZmlnIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2NvbmZpZyIpLGk9MmUzLHM9ZnVuY3Rpb24oZSl7dGhpcy5zdGF0ZXM9ZSx0aGlzLnJlZ0V4cHM9e30sdGhpcy5tYXRjaE1hcHBpbmdzPXt9O2Zvcih2YXIgdCBpbiB0aGlzLnN0YXRlcyl7dmFyIG49dGhpcy5zdGF0ZXNbdF0scj1bXSxpPTAscz10aGlzLm1hdGNoTWFwcGluZ3NbdF09e2RlZmF1bHRUb2tlbjoidGV4dCJ9LG89ImciLHU9W107Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBmPW5bYV07Zi5kZWZhdWx0VG9rZW4mJihzLmRlZmF1bHRUb2tlbj1mLmRlZmF1bHRUb2tlbiksZi5jYXNlSW5zZW5zaXRpdmUmJihvPSJnaSIpO2lmKGYucmVnZXg9PW51bGwpY29udGludWU7Zi5yZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCYmKGYucmVnZXg9Zi5yZWdleC50b1N0cmluZygpLnNsaWNlKDEsLTEpKTt2YXIgbD1mLnJlZ2V4LGM9KG5ldyBSZWdFeHAoIig/OigiK2wrIil8KC4pKSIpKS5leGVjKCJhIikubGVuZ3RoLTI7QXJyYXkuaXNBcnJheShmLnRva2VuKT9mLnRva2VuLmxlbmd0aD09MXx8Yz09MT9mLnRva2VuPWYudG9rZW5bMF06Yy0xIT1mLnRva2VuLmxlbmd0aD8odGhpcy5yZXBvcnRFcnJvcigibnVtYmVyIG9mIGNsYXNzZXMgYW5kIHJlZ2V4cCBncm91cHMgZG9lc24ndCBtYXRjaCIse3J1bGU6Zixncm91cENvdW50OmMtMX0pLGYudG9rZW49Zi50b2tlblswXSk6KGYudG9rZW5BcnJheT1mLnRva2VuLGYudG9rZW49bnVsbCxmLm9uTWF0Y2g9dGhpcy4kYXJyYXlUb2tlbnMpOnR5cGVvZiBmLnRva2VuPT0iZnVuY3Rpb24iJiYhZi5vbk1hdGNoJiYoYz4xP2Yub25NYXRjaD10aGlzLiRhcHBseVRva2VuOmYub25NYXRjaD1mLnRva2VuKSxjPjEmJigvXFxcZC8udGVzdChmLnJlZ2V4KT9sPWYucmVnZXgucmVwbGFjZSgvXFwoWzAtOV0rKS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIlxcIisocGFyc2VJbnQodCwxMCkraSsxKX0pOihjPTEsbD10aGlzLnJlbW92ZUNhcHR1cmluZ0dyb3VwcyhmLnJlZ2V4KSksIWYuc3BsaXRSZWdleCYmdHlwZW9mIGYudG9rZW4hPSJzdHJpbmciJiZ1LnB1c2goZikpLHNbaV09YSxpKz1jLHIucHVzaChsKSxmLm9uTWF0Y2h8fChmLm9uTWF0Y2g9bnVsbCl9ci5sZW5ndGh8fChzWzBdPTAsci5wdXNoKCIkIikpLHUuZm9yRWFjaChmdW5jdGlvbihlKXtlLnNwbGl0UmVnZXg9dGhpcy5jcmVhdGVTcGxpdHRlclJlZ2V4cChlLnJlZ2V4LG8pfSx0aGlzKSx0aGlzLnJlZ0V4cHNbdF09bmV3IFJlZ0V4cCgiKCIrci5qb2luKCIpfCgiKSsiKXwoJCkiLG8pfX07KGZ1bmN0aW9uKCl7dGhpcy4kc2V0TWF4VG9rZW5Db3VudD1mdW5jdGlvbihlKXtpPWV8MH0sdGhpcy4kYXBwbHlUb2tlbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNwbGl0UmVnZXguZXhlYyhlKS5zbGljZSgxKSxuPXRoaXMudG9rZW4uYXBwbHkodGhpcyx0KTtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJuW3t0eXBlOm4sdmFsdWU6ZX1dO3ZhciByPVtdO2Zvcih2YXIgaT0wLHM9bi5sZW5ndGg7aTxzO2krKyl0W2ldJiYocltyLmxlbmd0aF09e3R5cGU6bltpXSx2YWx1ZTp0W2ldfSk7cmV0dXJuIHJ9LHRoaXMuJGFycmF5VG9rZW5zPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybltdO3ZhciB0PXRoaXMuc3BsaXRSZWdleC5leGVjKGUpO2lmKCF0KXJldHVybiJ0ZXh0Ijt2YXIgbj1bXSxyPXRoaXMudG9rZW5BcnJheTtmb3IodmFyIGk9MCxzPXIubGVuZ3RoO2k8cztpKyspdFtpKzFdJiYobltuLmxlbmd0aF09e3R5cGU6cltpXSx2YWx1ZTp0W2krMV19KTtyZXR1cm4gbn0sdGhpcy5yZW1vdmVDYXB0dXJpbmdHcm91cHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9cXC58XFsoPzpcXC58W15cXFxdXSkqfFwoXD9bOj0hXXwoXCgpL2csZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iKD86IjplfSk7cmV0dXJuIHR9LHRoaXMuY3JlYXRlU3BsaXR0ZXJSZWdleHA9ZnVuY3Rpb24oZSx0KXtpZihlLmluZGV4T2YoIig/PSIpIT0tMSl7dmFyIG49MCxyPSExLGk9e307ZS5yZXBsYWNlKC8oXFwuKXwoXCgoPzpcP1s9IV0pPyl8KFwpKXwoW1xbXF1dKS9nLGZ1bmN0aW9uKGUsdCxzLG8sdSxhKXtyZXR1cm4gcj9yPXUhPSJdIjp1P3I9ITA6bz8obj09aS5zdGFjayYmKGkuZW5kPWErMSxpLnN0YWNrPS0xKSxuLS0pOnMmJihuKysscy5sZW5ndGghPTEmJihpLnN0YWNrPW4saS5zdGFydD1hKSksZX0pLGkuZW5kIT1udWxsJiYvXlwpKiQvLnRlc3QoZS5zdWJzdHIoaS5lbmQpKSYmKGU9ZS5zdWJzdHJpbmcoMCxpLnN0YXJ0KStlLnN1YnN0cihpLmVuZCkpfXJldHVybiBlLmNoYXJBdCgwKSE9Il4iJiYoZT0iXiIrZSksZS5jaGFyQXQoZS5sZW5ndGgtMSkhPSIkIiYmKGUrPSIkIiksbmV3IFJlZ0V4cChlLCh0fHwiIikucmVwbGFjZSgiZyIsIiIpKX0sdGhpcy5nZXRMaW5lVG9rZW5zPWZ1bmN0aW9uKGUsdCl7aWYodCYmdHlwZW9mIHQhPSJzdHJpbmciKXt2YXIgbj10LnNsaWNlKDApO3Q9blswXSx0PT09IiN0bXAiJiYobi5zaGlmdCgpLHQ9bi5zaGlmdCgpKX1lbHNlIHZhciBuPVtdO3ZhciByPXR8fCJzdGFydCIscz10aGlzLnN0YXRlc1tyXTtzfHwocj0ic3RhcnQiLHM9dGhpcy5zdGF0ZXNbcl0pO3ZhciBvPXRoaXMubWF0Y2hNYXBwaW5nc1tyXSx1PXRoaXMucmVnRXhwc1tyXTt1Lmxhc3RJbmRleD0wO3ZhciBhLGY9W10sbD0wLGM9MCxoPXt0eXBlOm51bGwsdmFsdWU6IiJ9O3doaWxlKGE9dS5leGVjKGUpKXt2YXIgcD1vLmRlZmF1bHRUb2tlbixkPW51bGwsdj1hWzBdLG09dS5sYXN0SW5kZXg7aWYobS12Lmxlbmd0aD5sKXt2YXIgZz1lLnN1YnN0cmluZyhsLG0tdi5sZW5ndGgpO2gudHlwZT09cD9oLnZhbHVlKz1nOihoLnR5cGUmJmYucHVzaChoKSxoPXt0eXBlOnAsdmFsdWU6Z30pfWZvcih2YXIgeT0wO3k8YS5sZW5ndGgtMjt5Kyspe2lmKGFbeSsxXT09PXVuZGVmaW5lZCljb250aW51ZTtkPXNbb1t5XV0sZC5vbk1hdGNoP3A9ZC5vbk1hdGNoKHYscixuLGUpOnA9ZC50b2tlbixkLm5leHQmJih0eXBlb2YgZC5uZXh0PT0ic3RyaW5nIj9yPWQubmV4dDpyPWQubmV4dChyLG4pLHM9dGhpcy5zdGF0ZXNbcl0sc3x8KHRoaXMucmVwb3J0RXJyb3IoInN0YXRlIGRvZXNuJ3QgZXhpc3QiLHIpLHI9InN0YXJ0IixzPXRoaXMuc3RhdGVzW3JdKSxvPXRoaXMubWF0Y2hNYXBwaW5nc1tyXSxsPW0sdT10aGlzLnJlZ0V4cHNbcl0sdS5sYXN0SW5kZXg9bSksZC5jb25zdW1lTGluZUVuZCYmKGw9bSk7YnJlYWt9aWYodilpZih0eXBlb2YgcD09InN0cmluZyIpISFkJiZkLm1lcmdlPT09ITF8fGgudHlwZSE9PXA/KGgudHlwZSYmZi5wdXNoKGgpLGg9e3R5cGU6cCx2YWx1ZTp2fSk6aC52YWx1ZSs9djtlbHNlIGlmKHApe2gudHlwZSYmZi5wdXNoKGgpLGg9e3R5cGU6bnVsbCx2YWx1ZToiIn07Zm9yKHZhciB5PTA7eTxwLmxlbmd0aDt5KyspZi5wdXNoKHBbeV0pfWlmKGw9PWUubGVuZ3RoKWJyZWFrO2w9bTtpZihjKys+aSl7Yz4yKmUubGVuZ3RoJiZ0aGlzLnJlcG9ydEVycm9yKCJpbmZpbml0ZSBsb29wIHdpdGggaW4gYWNlIHRva2VuaXplciIse3N0YXJ0U3RhdGU6dCxsaW5lOmV9KTt3aGlsZShsPGUubGVuZ3RoKWgudHlwZSYmZi5wdXNoKGgpLGg9e3ZhbHVlOmUuc3Vic3RyaW5nKGwsbCs9NTAwKSx0eXBlOiJvdmVyZmxvdyJ9O3I9InN0YXJ0IixuPVtdO2JyZWFrfX1yZXR1cm4gaC50eXBlJiZmLnB1c2goaCksbi5sZW5ndGg+MSYmblswXSE9PXImJm4udW5zaGlmdCgiI3RtcCIscikse3Rva2VuczpmLHN0YXRlOm4ubGVuZ3RoP246cn19LHRoaXMucmVwb3J0RXJyb3I9ci5yZXBvcnRFcnJvcn0pLmNhbGwocy5wcm90b3R5cGUpLHQuVG9rZW5pemVyPXN9KSxhY2UuZGVmaW5lKCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vbGliL2xhbmciKSxpPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImVtcHR5X2xpbmUiLHJlZ2V4OiJeJCJ9LHtkZWZhdWx0VG9rZW46InRleHQifV19fTsoZnVuY3Rpb24oKXt0aGlzLmFkZFJ1bGVzPWZ1bmN0aW9uKGUsdCl7aWYoIXQpe2Zvcih2YXIgbiBpbiBlKXRoaXMuJHJ1bGVzW25dPWVbbl07cmV0dXJufWZvcih2YXIgbiBpbiBlKXt2YXIgcj1lW25dO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgcz1yW2ldO2lmKHMubmV4dHx8cy5vbk1hdGNoKXR5cGVvZiBzLm5leHQ9PSJzdHJpbmciJiZzLm5leHQuaW5kZXhPZih0KSE9PTAmJihzLm5leHQ9dCtzLm5leHQpLHMubmV4dFN0YXRlJiZzLm5leHRTdGF0ZS5pbmRleE9mKHQpIT09MCYmKHMubmV4dFN0YXRlPXQrcy5uZXh0U3RhdGUpfXRoaXMuJHJ1bGVzW3Qrbl09cn19LHRoaXMuZ2V0UnVsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcnVsZXN9LHRoaXMuZW1iZWRSdWxlcz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXR5cGVvZiBlPT0iZnVuY3Rpb24iPyhuZXcgZSkuZ2V0UnVsZXMoKTplO2lmKGkpZm9yKHZhciB1PTA7dTxpLmxlbmd0aDt1KyspaVt1XT10K2lbdV07ZWxzZXtpPVtdO2Zvcih2YXIgYSBpbiBvKWkucHVzaCh0K2EpfXRoaXMuYWRkUnVsZXMobyx0KTtpZihuKXt2YXIgZj1BcnJheS5wcm90b3R5cGVbcz8icHVzaCI6InVuc2hpZnQiXTtmb3IodmFyIHU9MDt1PGkubGVuZ3RoO3UrKylmLmFwcGx5KHRoaXMuJHJ1bGVzW2lbdV1dLHIuZGVlcENvcHkobikpfXRoaXMuJGVtYmVkc3x8KHRoaXMuJGVtYmVkcz1bXSksdGhpcy4kZW1iZWRzLnB1c2godCl9LHRoaXMuZ2V0RW1iZWRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVtYmVkc307dmFyIGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZSE9InN0YXJ0Inx8dC5sZW5ndGgpJiZ0LnVuc2hpZnQodGhpcy5uZXh0U3RhdGUsZSksdGhpcy5uZXh0U3RhdGV9LHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5zaGlmdCgpLHQuc2hpZnQoKXx8InN0YXJ0In07dGhpcy5ub3JtYWxpemVSdWxlcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGkocyl7dmFyIG89cltzXTtvLnByb2Nlc3NlZD0hMDtmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKyl7dmFyIGE9b1t1XSxmPW51bGw7QXJyYXkuaXNBcnJheShhKSYmKGY9YSxhPXt9KSwhYS5yZWdleCYmYS5zdGFydCYmKGEucmVnZXg9YS5zdGFydCxhLm5leHR8fChhLm5leHQ9W10pLGEubmV4dC5wdXNoKHtkZWZhdWx0VG9rZW46YS50b2tlbn0se3Rva2VuOmEudG9rZW4rIi5lbmQiLHJlZ2V4OmEuZW5kfHxhLnN0YXJ0LG5leHQ6InBvcCJ9KSxhLnRva2VuPWEudG9rZW4rIi5zdGFydCIsYS5wdXNoPSEwKTt2YXIgbD1hLm5leHR8fGEucHVzaDtpZihsJiZBcnJheS5pc0FycmF5KGwpKXt2YXIgYz1hLnN0YXRlTmFtZTtjfHwoYz1hLnRva2VuLHR5cGVvZiBjIT0ic3RyaW5nIiYmKGM9Y1swXXx8IiIpLHJbY10mJihjKz1uKyspKSxyW2NdPWwsYS5uZXh0PWMsaShjKX1lbHNlIGw9PSJwb3AiJiYoYS5uZXh0PXQpO2EucHVzaCYmKGEubmV4dFN0YXRlPWEubmV4dHx8YS5wdXNoLGEubmV4dD1lLGRlbGV0ZSBhLnB1c2gpO2lmKGEucnVsZXMpZm9yKHZhciBoIGluIGEucnVsZXMpcltoXT9yW2hdLnB1c2gmJnJbaF0ucHVzaC5hcHBseShyW2hdLGEucnVsZXNbaF0pOnJbaF09YS5ydWxlc1toXTt2YXIgcD10eXBlb2YgYT09InN0cmluZyI/YTphLmluY2x1ZGU7cCYmKEFycmF5LmlzQXJyYXkocCk/Zj1wLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gcltlXX0pOmY9cltwXSk7aWYoZil7dmFyIGQ9W3UsMV0uY29uY2F0KGYpO2Eubm9Fc2NhcGUmJihkPWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLm5leHR9KSksby5zcGxpY2UuYXBwbHkobyxkKSx1LS19YS5rZXl3b3JkTWFwJiYoYS50b2tlbj10aGlzLmNyZWF0ZUtleXdvcmRNYXBwZXIoYS5rZXl3b3JkTWFwLGEuZGVmYXVsdFRva2VufHwidGV4dCIsYS5jYXNlSW5zZW5zaXRpdmUpLGRlbGV0ZSBhLmRlZmF1bHRUb2tlbil9fXZhciBuPTAscj10aGlzLiRydWxlcztPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGksdGhpcyl9LHRoaXMuY3JlYXRlS2V5d29yZE1hcHBlcj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBzPWVbdF07biYmKHM9cy50b0xvd2VyQ2FzZSgpKTt2YXIgbz1zLnNwbGl0KHJ8fCJ8Iik7Zm9yKHZhciB1PW8ubGVuZ3RoO3UtLTspaVtvW3VdXT10fSksT2JqZWN0LmdldFByb3RvdHlwZU9mKGkpJiYoaS5fX3Byb3RvX189bnVsbCksdGhpcy4ka2V5d29yZExpc3Q9T2JqZWN0LmtleXMoaSksZT1udWxsLG4/ZnVuY3Rpb24oZSl7cmV0dXJuIGlbZS50b0xvd2VyQ2FzZSgpXXx8dH06ZnVuY3Rpb24oZSl7cmV0dXJuIGlbZV18fHR9fSx0aGlzLmdldEtleXdvcmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGtleXdvcmRzfX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuVGV4dEhpZ2hsaWdodFJ1bGVzPWl9KSxhY2UuZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7dGhpcy4kYmVoYXZpb3Vycz17fX07KGZ1bmN0aW9uKCl7dGhpcy5hZGQ9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh1bmRlZmluZWQpe2Nhc2UgdGhpcy4kYmVoYXZpb3Vyczp0aGlzLiRiZWhhdmlvdXJzPXt9O2Nhc2UgdGhpcy4kYmVoYXZpb3Vyc1tlXTp0aGlzLiRiZWhhdmlvdXJzW2VdPXt9fXRoaXMuJGJlaGF2aW91cnNbZV1bdF09bn0sdGhpcy5hZGRCZWhhdmlvdXJzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWZvcih2YXIgbiBpbiBlW3RdKXRoaXMuYWRkKHQsbixlW3RdW25dKX0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oZSl7dGhpcy4kYmVoYXZpb3VycyYmdGhpcy4kYmVoYXZpb3Vyc1tlXSYmZGVsZXRlIHRoaXMuJGJlaGF2aW91cnNbZV19LHRoaXMuaW5oZXJpdD1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXZhciBuPShuZXcgZSkuZ2V0QmVoYXZpb3Vycyh0KTtlbHNlIHZhciBuPWUuZ2V0QmVoYXZpb3Vycyh0KTt0aGlzLmFkZEJlaGF2aW91cnMobil9LHRoaXMuZ2V0QmVoYXZpb3Vycz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpcy4kYmVoYXZpb3Vyczt2YXIgdD17fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLiRiZWhhdmlvdXJzW2Vbbl1dJiYodFtlW25dXT10aGlzLiRiZWhhdmlvdXJzW2Vbbl1dKTtyZXR1cm4gdH19KS5jYWxsKHIucHJvdG90eXBlKSx0LkJlaGF2aW91cj1yfSksYWNlLmRlZmluZSgiYWNlL3Rva2VuX2l0ZXJhdG9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbihlLHQsbil7dGhpcy4kc2Vzc2lvbj1lLHRoaXMuJHJvdz10LHRoaXMuJHJvd1Rva2Vucz1lLmdldFRva2Vucyh0KTt2YXIgcj1lLmdldFRva2VuQXQodCxuKTt0aGlzLiR0b2tlbkluZGV4PXI/ci5pbmRleDotMX07KGZ1bmN0aW9uKCl7dGhpcy5zdGVwQmFja3dhcmQ9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbkluZGV4LT0xO3doaWxlKHRoaXMuJHRva2VuSW5kZXg8MCl7dGhpcy4kcm93LT0xO2lmKHRoaXMuJHJvdzwwKXJldHVybiB0aGlzLiRyb3c9MCxudWxsO3RoaXMuJHJvd1Rva2Vucz10aGlzLiRzZXNzaW9uLmdldFRva2Vucyh0aGlzLiRyb3cpLHRoaXMuJHRva2VuSW5kZXg9dGhpcy4kcm93VG9rZW5zLmxlbmd0aC0xfXJldHVybiB0aGlzLiRyb3dUb2tlbnNbdGhpcy4kdG9rZW5JbmRleF19LHRoaXMuc3RlcEZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbkluZGV4Kz0xO3ZhciBlO3doaWxlKHRoaXMuJHRva2VuSW5kZXg+PXRoaXMuJHJvd1Rva2Vucy5sZW5ndGgpe3RoaXMuJHJvdys9MSxlfHwoZT10aGlzLiRzZXNzaW9uLmdldExlbmd0aCgpKTtpZih0aGlzLiRyb3c+PWUpcmV0dXJuIHRoaXMuJHJvdz1lLTEsbnVsbDt0aGlzLiRyb3dUb2tlbnM9dGhpcy4kc2Vzc2lvbi5nZXRUb2tlbnModGhpcy4kcm93KSx0aGlzLiR0b2tlbkluZGV4PTB9cmV0dXJuIHRoaXMuJHJvd1Rva2Vuc1t0aGlzLiR0b2tlbkluZGV4XX0sdGhpcy5nZXRDdXJyZW50VG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcm93VG9rZW5zW3RoaXMuJHRva2VuSW5kZXhdfSx0aGlzLmdldEN1cnJlbnRUb2tlblJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRyb3d9LHRoaXMuZ2V0Q3VycmVudFRva2VuQ29sdW1uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kcm93VG9rZW5zLHQ9dGhpcy4kdG9rZW5JbmRleCxuPWVbdF0uc3RhcnQ7aWYobiE9PXVuZGVmaW5lZClyZXR1cm4gbjtuPTA7d2hpbGUodD4wKXQtPTEsbis9ZVt0XS52YWx1ZS5sZW5ndGg7cmV0dXJuIG59LHRoaXMuZ2V0Q3VycmVudFRva2VuUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm57cm93OnRoaXMuJHJvdyxjb2x1bW46dGhpcy5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX19LHRoaXMuZ2V0Q3VycmVudFRva2VuUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRyb3dUb2tlbnNbdGhpcy4kdG9rZW5JbmRleF0sdD10aGlzLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpO3JldHVybiBuZXcgcih0aGlzLiRyb3csdCx0aGlzLiRyb3csdCtlLnZhbHVlLmxlbmd0aCl9fSkuY2FsbChpLnByb3RvdHlwZSksdC5Ub2tlbkl0ZXJhdG9yPWl9KSxhY2UuZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiLCJhY2UvdG9rZW5faXRlcmF0b3IiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixvPWUoIi4uLy4uL2xpYi9sYW5nIiksdT1bInRleHQiLCJwYXJlbi5ycGFyZW4iLCJycGFyZW4iLCJwYXJlbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIl0sYT1bInRleHQiLCJwYXJlbi5ycGFyZW4iLCJycGFyZW4iLCJwYXJlbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiY29tbWVudCJdLGYsbD17fSxjPXsnIic6JyInLCInIjoiJyJ9LGg9ZnVuY3Rpb24oZSl7dmFyIHQ9LTE7ZS5tdWx0aVNlbGVjdCYmKHQ9ZS5zZWxlY3Rpb24uaW5kZXgsbC5yYW5nZUNvdW50IT1lLm11bHRpU2VsZWN0LnJhbmdlQ291bnQmJihsPXtyYW5nZUNvdW50OmUubXVsdGlTZWxlY3QucmFuZ2VDb3VudH0pKTtpZihsW3RdKXJldHVybiBmPWxbdF07Zj1sW3RdPXthdXRvSW5zZXJ0ZWRCcmFja2V0czowLGF1dG9JbnNlcnRlZFJvdzotMSxhdXRvSW5zZXJ0ZWRMaW5lRW5kOiIiLG1heWJlSW5zZXJ0ZWRCcmFja2V0czowLG1heWJlSW5zZXJ0ZWRSb3c6LTEsbWF5YmVJbnNlcnRlZExpbmVTdGFydDoiIixtYXliZUluc2VydGVkTGluZUVuZDoiIn19LHA9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5lbmQucm93LWUuc3RhcnQucm93O3JldHVybnt0ZXh0Om4rdCtyLHNlbGVjdGlvbjpbMCxlLnN0YXJ0LmNvbHVtbisxLGksZS5lbmQuY29sdW1uKyhpPzA6MSldfX0sZD1mdW5jdGlvbihlKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbih0LG4scixpLHMpe3ZhciB1PXIuZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPWkuZG9jLmdldExpbmUodS5yb3cpO2lmKHM9PSJ7Iil7aChyKTt2YXIgbD1yLmdldFNlbGVjdGlvblJhbmdlKCksYz1pLmRvYy5nZXRUZXh0UmFuZ2UobCk7aWYoYyE9PSIiJiZjIT09InsiJiZyLmdldFdyYXBCZWhhdmlvdXJzRW5hYmxlZCgpKXJldHVybiBwKGwsYywieyIsIn0iKTtpZihkLmlzU2FuZUluc2VydGlvbihyLGkpKXJldHVybi9bXF1cfVwpXS8udGVzdChhW3UuY29sdW1uXSl8fHIuaW5NdWx0aVNlbGVjdE1vZGV8fGUmJmUuYnJhY2VzPyhkLnJlY29yZEF1dG9JbnNlcnQocixpLCJ9Iikse3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19KTooZC5yZWNvcmRNYXliZUluc2VydChyLGksInsiKSx7dGV4dDoieyIsc2VsZWN0aW9uOlsxLDFdfSl9ZWxzZSBpZihzPT0ifSIpe2gocik7dmFyIHY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYodj09In0iKXt2YXIgbT1pLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihtIT09bnVsbCYmZC5pc0F1dG9JbnNlcnRlZENsb3NpbmcodSxhLHMpKXJldHVybiBkLnBvcEF1dG9JbnNlcnRlZENsb3NpbmcoKSx7dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNle2lmKHM9PSJcbiJ8fHM9PSJcclxuIil7aChyKTt2YXIgZz0iIjtkLmlzTWF5YmVJbnNlcnRlZENsb3NpbmcodSxhKSYmKGc9by5zdHJpbmdSZXBlYXQoIn0iLGYubWF5YmVJbnNlcnRlZEJyYWNrZXRzKSxkLmNsZWFyTWF5YmVJbnNlcnRlZENsb3NpbmcoKSk7dmFyIHY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYodj09PSJ9Iil7dmFyIHk9aS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9LCJ9Iik7aWYoIXkpcmV0dXJuIG51bGw7dmFyIGI9dGhpcy4kZ2V0SW5kZW50KGkuZ2V0TGluZSh5LnJvdykpfWVsc2V7aWYoIWcpe2QuY2xlYXJNYXliZUluc2VydGVkQ2xvc2luZygpO3JldHVybn12YXIgYj10aGlzLiRnZXRJbmRlbnQoYSl9dmFyIHc9YitpLmdldFRhYlN0cmluZygpO3JldHVybnt0ZXh0OiJcbiIrdysiXG4iK2IrZyxzZWxlY3Rpb246WzEsdy5sZW5ndGgsMSx3Lmxlbmd0aF19fWQuY2xlYXJNYXliZUluc2VydGVkQ2xvc2luZygpfX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXtoKG4pO3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGk7Zi5tYXliZUluc2VydGVkQnJhY2tldHMtLX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7aChuKTt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7aWYobyE9PSIiJiZuLmdldFdyYXBCZWhhdmlvdXJzRW5hYmxlZCgpKXJldHVybiBwKHMsbywiKCIsIikiKTtpZihkLmlzU2FuZUluc2VydGlvbihuLHIpKXJldHVybiBkLnJlY29yZEF1dG9JbnNlcnQobixyLCIpIikse3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWVsc2UgaWYoaT09IikiKXtoKG4pO3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbCYmZC5pc0F1dG9JbnNlcnRlZENsb3NpbmcodSxhLGkpKXJldHVybiBkLnBvcEF1dG9JbnNlcnRlZENsb3NpbmcoKSx7dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7aChuKTt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJicmFja2V0cyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iWyIpe2gobik7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO2lmKG8hPT0iIiYmbi5nZXRXcmFwQmVoYXZpb3Vyc0VuYWJsZWQoKSlyZXR1cm4gcChzLG8sIlsiLCJdIik7aWYoZC5pc1NhbmVJbnNlcnRpb24obixyKSlyZXR1cm4gZC5yZWNvcmRBdXRvSW5zZXJ0KG4sciwiXSIpLHt0ZXh0OiJbXSIsc2VsZWN0aW9uOlsxLDFdfX1lbHNlIGlmKGk9PSJdIil7aChuKTt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJdIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJdIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwmJmQuaXNBdXRvSW5zZXJ0ZWRDbG9zaW5nKHUsYSxpKSlyZXR1cm4gZC5wb3BBdXRvSW5zZXJ0ZWRDbG9zaW5nKCkse3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoImJyYWNrZXRzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJbIil7aChuKTt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09Il0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLiRtb2RlLiRxdW90ZXN8fGM7aWYoaS5sZW5ndGg9PTEmJnNbaV0pe2lmKHRoaXMubGluZUNvbW1lbnRTdGFydCYmdGhpcy5saW5lQ29tbWVudFN0YXJ0LmluZGV4T2YoaSkhPS0xKXJldHVybjtoKG4pO3ZhciBvPWksdT1uLmdldFNlbGVjdGlvblJhbmdlKCksYT1yLmRvYy5nZXRUZXh0UmFuZ2UodSk7aWYoYSE9PSIiJiYoYS5sZW5ndGghPTF8fCFzW2FdKSYmbi5nZXRXcmFwQmVoYXZpb3Vyc0VuYWJsZWQoKSlyZXR1cm4gcCh1LGEsbyxvKTtpZighYSl7dmFyIGY9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGw9ci5kb2MuZ2V0TGluZShmLnJvdyksZD1sLnN1YnN0cmluZyhmLmNvbHVtbi0xLGYuY29sdW1uKSx2PWwuc3Vic3RyaW5nKGYuY29sdW1uLGYuY29sdW1uKzEpLG09ci5nZXRUb2tlbkF0KGYucm93LGYuY29sdW1uKSxnPXIuZ2V0VG9rZW5BdChmLnJvdyxmLmNvbHVtbisxKTtpZihkPT0iXFwiJiZtJiYvZXNjYXBlLy50ZXN0KG0udHlwZSkpcmV0dXJuIG51bGw7dmFyIHk9bSYmL3N0cmluZ3xlc2NhcGUvLnRlc3QobS50eXBlKSxiPSFnfHwvc3RyaW5nfGVzY2FwZS8udGVzdChnLnR5cGUpLHc7aWYodj09byl3PXkhPT1iLHcmJi9zdHJpbmdcLmVuZC8udGVzdChnLnR5cGUpJiYodz0hMSk7ZWxzZXtpZih5JiYhYilyZXR1cm4gbnVsbDtpZih5JiZiKXJldHVybiBudWxsO3ZhciBFPXIuJG1vZGUudG9rZW5SZTtFLmxhc3RJbmRleD0wO3ZhciBTPUUudGVzdChkKTtFLmxhc3RJbmRleD0wO3ZhciB4PUUudGVzdChkKTtpZihTfHx4KXJldHVybiBudWxsO2lmKHYmJiEvW1xzOywufSlcXVxcXS8udGVzdCh2KSlyZXR1cm4gbnVsbDt2YXIgVD1sW2YuY29sdW1uLTJdO2lmKCEoZCE9b3x8VCE9byYmIUUudGVzdChUKSkpcmV0dXJuIG51bGw7dz0hMH1yZXR1cm57dGV4dDp3P28rbzoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLiRtb2RlLiRxdW90ZXN8fGMsbz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcy5oYXNPd25Qcm9wZXJ0eShvKSl7aChuKTt2YXIgdT1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSxhPXUuc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYoYT09bylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ZC5pc1NhbmVJbnNlcnRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldEN1cnNvclBvc2l0aW9uKCkscj1uZXcgcyh0LG4ucm93LG4uY29sdW1uKTtpZighdGhpcy4kbWF0Y2hUb2tlblR5cGUoci5nZXRDdXJyZW50VG9rZW4oKXx8InRleHQiLHUpKXtpZigvWyl9XF1dLy50ZXN0KGUuc2Vzc2lvbi5nZXRMaW5lKG4ucm93KVtuLmNvbHVtbl0pKXJldHVybiEwO3ZhciBpPW5ldyBzKHQsbi5yb3csbi5jb2x1bW4rMSk7aWYoIXRoaXMuJG1hdGNoVG9rZW5UeXBlKGkuZ2V0Q3VycmVudFRva2VuKCl8fCJ0ZXh0Iix1KSlyZXR1cm4hMX1yZXR1cm4gci5zdGVwRm9yd2FyZCgpLHIuZ2V0Q3VycmVudFRva2VuUm93KCkhPT1uLnJvd3x8dGhpcy4kbWF0Y2hUb2tlblR5cGUoci5nZXRDdXJyZW50VG9rZW4oKXx8InRleHQiLGEpfSxkLiRtYXRjaFRva2VuVHlwZT1mdW5jdGlvbihlLHQpe3JldHVybiB0LmluZGV4T2YoZS50eXBlfHxlKT4tMX0sZC5yZWNvcmRBdXRvSW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldEN1cnNvclBvc2l0aW9uKCksaT10LmRvYy5nZXRMaW5lKHIucm93KTt0aGlzLmlzQXV0b0luc2VydGVkQ2xvc2luZyhyLGksZi5hdXRvSW5zZXJ0ZWRMaW5lRW5kWzBdKXx8KGYuYXV0b0luc2VydGVkQnJhY2tldHM9MCksZi5hdXRvSW5zZXJ0ZWRSb3c9ci5yb3csZi5hdXRvSW5zZXJ0ZWRMaW5lRW5kPW4raS5zdWJzdHIoci5jb2x1bW4pLGYuYXV0b0luc2VydGVkQnJhY2tldHMrK30sZC5yZWNvcmRNYXliZUluc2VydD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRDdXJzb3JQb3NpdGlvbigpLGk9dC5kb2MuZ2V0TGluZShyLnJvdyk7dGhpcy5pc01heWJlSW5zZXJ0ZWRDbG9zaW5nKHIsaSl8fChmLm1heWJlSW5zZXJ0ZWRCcmFja2V0cz0wKSxmLm1heWJlSW5zZXJ0ZWRSb3c9ci5yb3csZi5tYXliZUluc2VydGVkTGluZVN0YXJ0PWkuc3Vic3RyKDAsci5jb2x1bW4pK24sZi5tYXliZUluc2VydGVkTGluZUVuZD1pLnN1YnN0cihyLmNvbHVtbiksZi5tYXliZUluc2VydGVkQnJhY2tldHMrK30sZC5pc0F1dG9JbnNlcnRlZENsb3Npbmc9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLmF1dG9JbnNlcnRlZEJyYWNrZXRzPjAmJmUucm93PT09Zi5hdXRvSW5zZXJ0ZWRSb3cmJm49PT1mLmF1dG9JbnNlcnRlZExpbmVFbmRbMF0mJnQuc3Vic3RyKGUuY29sdW1uKT09PWYuYXV0b0luc2VydGVkTGluZUVuZH0sZC5pc01heWJlSW5zZXJ0ZWRDbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYubWF5YmVJbnNlcnRlZEJyYWNrZXRzPjAmJmUucm93PT09Zi5tYXliZUluc2VydGVkUm93JiZ0LnN1YnN0cihlLmNvbHVtbik9PT1mLm1heWJlSW5zZXJ0ZWRMaW5lRW5kJiZ0LnN1YnN0cigwLGUuY29sdW1uKT09Zi5tYXliZUluc2VydGVkTGluZVN0YXJ0fSxkLnBvcEF1dG9JbnNlcnRlZENsb3Npbmc9ZnVuY3Rpb24oKXtmLmF1dG9JbnNlcnRlZExpbmVFbmQ9Zi5hdXRvSW5zZXJ0ZWRMaW5lRW5kLnN1YnN0cigxKSxmLmF1dG9JbnNlcnRlZEJyYWNrZXRzLS19LGQuY2xlYXJNYXliZUluc2VydGVkQ2xvc2luZz1mdW5jdGlvbigpe2YmJihmLm1heWJlSW5zZXJ0ZWRCcmFja2V0cz0wLGYubWF5YmVJbnNlcnRlZFJvdz0tMSl9LHIuaW5oZXJpdHMoZCxpKSx0LkNzdHlsZUJlaGF2aW91cj1kfSksYWNlLmRlZmluZSgiYWNlL3VuaWNvZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPVs0OCw5LDgsMjUsNSwwLDIsMjUsNDgsMCwxMSwwLDUsMCw2LDIyLDIsMzAsMiw0NTcsNSwxMSwxNSw0LDgsMCwyLDAsMTgsMTE2LDIsMSwzLDMsOSwwLDIsMiwyLDAsMiwxOSwyLDgyLDIsMTM4LDIsNCwzLDE1NSwxMiwzNywzLDAsOCwzOCwxMCw0NCwyLDAsMiwxLDIsMSwyLDAsOSwyNiw2LDIsMzAsMTAsNyw2MSwyLDksNSwxMDEsMiw3LDMsOSwyLDE4LDMsMCwxNyw1OCwzLDEwMCwxNSw1Myw1LDAsNiw0NSwyMTEsNTcsMywxOCwyLDUsMywxMSwzLDksMiwxLDcsNiwyLDIsMiw3LDMsMSwzLDIxLDIsNiwyLDAsNCwzLDMsOCwzLDEsMywzLDksMCw1LDEsMiw0LDMsMTEsMTYsMiwyLDUsNSwxLDMsMjEsMiw2LDIsMSwyLDEsMiwxLDMsMCwyLDQsNSwxLDMsMiw0LDAsOCwzLDIsMCw4LDE1LDEyLDIsMiw4LDIsMiwyLDIxLDIsNiwyLDEsMiw0LDMsOSwyLDIsMiwyLDMsMCwxNiwzLDMsOSwxOCwyLDIsNywzLDEsMywyMSwyLDYsMiwxLDIsNCwzLDgsMywxLDMsMiw5LDEsNSwxLDIsNCwzLDksMiwwLDE3LDEsMiw1LDQsMiwyLDMsNCwxLDIsMCwyLDEsNCwxLDQsMiw0LDExLDUsNCw0LDIsMiwzLDMsMCw3LDAsMTUsOSwxOCwyLDIsNywyLDIsMiwyMiwyLDksMiw0LDQsNywyLDIsMiwzLDgsMSwyLDEsNywzLDMsOSwxOSwxLDIsNywyLDIsMiwyMiwyLDksMiw0LDMsOCwyLDIsMiwzLDgsMSw4LDAsMiwzLDMsOSwxOSwxLDIsNywyLDIsMiwyMiwyLDE1LDQsNywyLDIsMiwzLDEwLDAsOSwzLDMsOSwxMSw1LDMsMSwyLDE3LDQsMjMsMiw4LDIsMCwzLDYsNCwwLDUsNSwyLDAsMiw3LDE5LDEsMTQsNTcsNiwxNCwyLDksNDAsMSwyLDAsMywxLDIsMCwzLDAsNywzLDIsNiwyLDIsMiwwLDIsMCwzLDEsMiwxMiwyLDIsMyw0LDIsMCwyLDUsMyw5LDMsMSwzNSwwLDI0LDEsNyw5LDEyLDAsMiwwLDIsMCw1LDksMiwzNSw1LDE5LDIsNSw1LDcsMiwzNSwxMCwwLDU4LDczLDcsNzcsMywzNywxMSw0MiwyLDAsNCwzMjgsMiwzLDMsNiwyLDAsMiwzLDMsNDAsMiwzLDMsMzIsMiwzLDMsNiwyLDAsMiwzLDMsMTQsMiw1NiwyLDMsMyw2Niw1LDAsMzMsMTUsMTcsODQsMTMsNjE5LDMsMTYsMiwyNSw2LDc0LDIyLDEyLDIsNiwxMiwyMCwxMiwxOSwxMywxMiwyLDIsMiwxLDEzLDUxLDMsMjksNCwwLDUsMSwzLDksMzQsMiwzLDksNyw4Nyw5LDQyLDYsNjksMTEsMjgsNCwxMSw1LDExLDExLDM5LDMsNCwxMiw0Myw1LDI1LDcsMTAsMzgsMjcsNSw2MiwyLDI4LDMsMTAsNyw5LDE0LDAsODksNzUsNSw5LDE4LDgsMTMsNDIsNCwxMSw3MSw1NSw5LDksNCw0OCw4MywyLDIsMzAsMTQsMjMwLDIzLDI4MCwzLDUsMywzNywzLDUsMyw3LDIsMCwyLDAsMiwwLDIsMzAsMyw1MiwyLDYsMiwwLDQsMiwyLDYsNCwzLDMsNSw1LDEyLDYsMiwyLDYsNjcsMSwyMCwwLDI5LDAsMTQsMCwxNyw0LDYwLDEyLDUsMCw0LDExLDE4LDAsNSwwLDMsOSwyLDAsNCw0LDcsMCwyLDAsMiwwLDIsMywyLDEwLDMsMyw2LDQsNSwwLDUzLDEsMjY4NCw0NiwyLDQ2LDIsMTMyLDcsNiwxNSwzNywxMSw1MywxMCwwLDE3LDIyLDEwLDYsMiw2LDIsNiwyLDYsMiw2LDIsNiwyLDYsMiw2LDIsMzEsNDgsMCw0NzAsMSwzNiw1LDIsNCw2LDEsNSw4NSwzLDEsMywyLDIsODksMiwzLDYsNDAsNCw5MywxOCwyMyw1NywxNSw1MTMsNjU4MSw3NSwyMDkzOSw1MywxMTY0LDY4LDQ1LDMsMjY4LDQsMjcsMjEsMzEsMywxMywxMywxLDIsMjQsOSw2OSwxMSwxLDM4LDgsMywxMDIsMywxLDExMSw0NCwyNSw1MSwxMyw2OCwxMiw5LDcsMjMsNCwwLDUsNDUsMywzNSwxMywyOCw0LDY0LDE1LDEwLDM5LDU0LDEwLDEzLDMsOSw3LDIyLDQsMSw1LDY2LDI1LDIsMjI3LDQyLDIsMSwzLDksNywxMTE3MSwxMywyMiw1LDQ4LDg0NTMsMzAxLDMsNjEsMywxMDUsMzksNiwxMyw0LDYsMTEsMiwxMiwyLDQsMiwwLDIsMSwyLDEsMiwxMDcsMzQsMzYyLDE5LDYzLDMsNTMsNDEsMTEsNSwxNSwxNyw2LDEzLDEsMjUsMiwzMyw0LDIsMTM0LDIwLDksOCwyNSw1LDAsMiwyNSwxMiw4OCw0LDUsMyw1LDMsNSwzLDJdLGk9MCxzPVtdO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bys9MilzLnB1c2goaSs9cltvXSkscltvKzFdJiZzLnB1c2goNDUsaSs9cltvKzFdKTt0LndvcmRDaGFycz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscyl9KSxhY2UuZGVmaW5lKCJhY2UvbW9kZS90ZXh0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2NvbmZpZyIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvdW5pY29kZSIsImFjZS9saWIvbGFuZyIsImFjZS90b2tlbl9pdGVyYXRvciIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vY29uZmlnIiksaT1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLHU9ZSgiLi4vdW5pY29kZSIpLGE9ZSgiLi4vbGliL2xhbmciKSxmPWUoIi4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixsPWUoIi4uL3JhbmdlIikuUmFuZ2UsYz1mdW5jdGlvbigpe3RoaXMuSGlnaGxpZ2h0UnVsZXM9c307KGZ1bmN0aW9uKCl7dGhpcy4kZGVmYXVsdEJlaGF2aW91cj1uZXcgbyx0aGlzLnRva2VuUmU9bmV3IFJlZ0V4cCgiXlsiK3Uud29yZENoYXJzKyJcXCRfXSsiLCJnIiksdGhpcy5ub25Ub2tlblJlPW5ldyBSZWdFeHAoIl4oPzpbXiIrdS53b3JkQ2hhcnMrIlxcJF9dfFxcc10pKyIsImciKSx0aGlzLmdldFRva2VuaXplcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR0b2tlbml6ZXJ8fCh0aGlzLiRoaWdobGlnaHRSdWxlcz10aGlzLiRoaWdobGlnaHRSdWxlc3x8bmV3IHRoaXMuSGlnaGxpZ2h0UnVsZXModGhpcy4kaGlnaGxpZ2h0UnVsZUNvbmZpZyksdGhpcy4kdG9rZW5pemVyPW5ldyBpKHRoaXMuJGhpZ2hsaWdodFJ1bGVzLmdldFJ1bGVzKCkpKSx0aGlzLiR0b2tlbml6ZXJ9LHRoaXMubGluZUNvbW1lbnRTdGFydD0iIix0aGlzLmJsb2NrQ29tbWVudD0iIix0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXtmdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD1uO3Q8PXI7dCsrKWUoaS5nZXRMaW5lKHQpLHQpfXZhciBpPXQuZG9jLHM9ITAsbz0hMCx1PUluZmluaXR5LGY9dC5nZXRUYWJTaXplKCksbD0hMTtpZighdGhpcy5saW5lQ29tbWVudFN0YXJ0KXtpZighdGhpcy5ibG9ja0NvbW1lbnQpcmV0dXJuITE7dmFyIGM9dGhpcy5ibG9ja0NvbW1lbnQuc3RhcnQsaD10aGlzLmJsb2NrQ29tbWVudC5lbmQscD1uZXcgUmVnRXhwKCJeKFxccyopKD86IithLmVzY2FwZVJlZ0V4cChjKSsiKSIpLGQ9bmV3IFJlZ0V4cCgiKD86IithLmVzY2FwZVJlZ0V4cChoKSsiKVxccyokIiksdj1mdW5jdGlvbihlLHQpe2lmKGcoZSx0KSlyZXR1cm47aWYoIXN8fC9cUy8udGVzdChlKSlpLmluc2VydEluTGluZSh7cm93OnQsY29sdW1uOmUubGVuZ3RofSxoKSxpLmluc2VydEluTGluZSh7cm93OnQsY29sdW1uOnV9LGMpfSxtPWZ1bmN0aW9uKGUsdCl7dmFyIG47KG49ZS5tYXRjaChkKSkmJmkucmVtb3ZlSW5MaW5lKHQsZS5sZW5ndGgtblswXS5sZW5ndGgsZS5sZW5ndGgpLChuPWUubWF0Y2gocCkpJiZpLnJlbW92ZUluTGluZSh0LG5bMV0ubGVuZ3RoLG5bMF0ubGVuZ3RoKX0sZz1mdW5jdGlvbihlLG4pe2lmKHAudGVzdChlKSlyZXR1cm4hMDt2YXIgcj10LmdldFRva2VucyhuKTtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylpZihyW2ldLnR5cGU9PT0iY29tbWVudCIpcmV0dXJuITB9fWVsc2V7aWYoQXJyYXkuaXNBcnJheSh0aGlzLmxpbmVDb21tZW50U3RhcnQpKXZhciBwPXRoaXMubGluZUNvbW1lbnRTdGFydC5tYXAoYS5lc2NhcGVSZWdFeHApLmpvaW4oInwiKSxjPXRoaXMubGluZUNvbW1lbnRTdGFydFswXTtlbHNlIHZhciBwPWEuZXNjYXBlUmVnRXhwKHRoaXMubGluZUNvbW1lbnRTdGFydCksYz10aGlzLmxpbmVDb21tZW50U3RhcnQ7cD1uZXcgUmVnRXhwKCJeKFxccyopKD86IitwKyIpID8iKSxsPXQuZ2V0VXNlU29mdFRhYnMoKTt2YXIgbT1mdW5jdGlvbihlLHQpe3ZhciBuPWUubWF0Y2gocCk7aWYoIW4pcmV0dXJuO3ZhciByPW5bMV0ubGVuZ3RoLHM9blswXS5sZW5ndGg7IWIoZSxyLHMpJiZuWzBdW3MtMV09PSIgIiYmcy0tLGkucmVtb3ZlSW5MaW5lKHQscixzKX0seT1jKyIgIix2PWZ1bmN0aW9uKGUsdCl7aWYoIXN8fC9cUy8udGVzdChlKSliKGUsdSx1KT9pLmluc2VydEluTGluZSh7cm93OnQsY29sdW1uOnV9LHkpOmkuaW5zZXJ0SW5MaW5lKHtyb3c6dCxjb2x1bW46dX0sYyl9LGc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC50ZXN0KGUpfSxiPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0wO3doaWxlKHQtLSYmZS5jaGFyQXQodCk9PSIgIilyKys7aWYociVmIT0wKXJldHVybiExO3ZhciByPTA7d2hpbGUoZS5jaGFyQXQobisrKT09IiAiKXIrKztyZXR1cm4gZj4yP3IlZiE9Zi0xOnIlZj09MH19dmFyIEU9SW5maW5pdHk7dyhmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2VhcmNoKC9cUy8pO24hPT0tMT8objx1JiYodT1uKSxvJiYhZyhlLHQpJiYobz0hMSkpOkU+ZS5sZW5ndGgmJihFPWUubGVuZ3RoKX0pLHU9PUluZmluaXR5JiYodT1FLHM9ITEsbz0hMSksbCYmdSVmIT0wJiYodT1NYXRoLmZsb29yKHUvZikqZiksdyhvP206dil9LHRoaXMudG9nZ2xlQmxvY2tDb21tZW50PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuYmxvY2tDb21tZW50O2lmKCFpKXJldHVybjshaS5zdGFydCYmaVswXSYmKGk9aVswXSk7dmFyIHM9bmV3IGYodCxyLnJvdyxyLmNvbHVtbiksbz1zLmdldEN1cnJlbnRUb2tlbigpLHU9dC5zZWxlY3Rpb24sYT10LnNlbGVjdGlvbi50b09yaWVudGVkUmFuZ2UoKSxjLGg7aWYobyYmL2NvbW1lbnQvLnRlc3Qoby50eXBlKSl7dmFyIHAsZDt3aGlsZShvJiYvY29tbWVudC8udGVzdChvLnR5cGUpKXt2YXIgdj1vLnZhbHVlLmluZGV4T2YoaS5zdGFydCk7aWYodiE9LTEpe3ZhciBtPXMuZ2V0Q3VycmVudFRva2VuUm93KCksZz1zLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3Y7cD1uZXcgbChtLGcsbSxnK2kuc3RhcnQubGVuZ3RoKTticmVha31vPXMuc3RlcEJhY2t3YXJkKCl9dmFyIHM9bmV3IGYodCxyLnJvdyxyLmNvbHVtbiksbz1zLmdldEN1cnJlbnRUb2tlbigpO3doaWxlKG8mJi9jb21tZW50Ly50ZXN0KG8udHlwZSkpe3ZhciB2PW8udmFsdWUuaW5kZXhPZihpLmVuZCk7aWYodiE9LTEpe3ZhciBtPXMuZ2V0Q3VycmVudFRva2VuUm93KCksZz1zLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3Y7ZD1uZXcgbChtLGcsbSxnK2kuZW5kLmxlbmd0aCk7YnJlYWt9bz1zLnN0ZXBGb3J3YXJkKCl9ZCYmdC5yZW1vdmUoZCkscCYmKHQucmVtb3ZlKHApLGM9cC5zdGFydC5yb3csaD0taS5zdGFydC5sZW5ndGgpfWVsc2UgaD1pLnN0YXJ0Lmxlbmd0aCxjPW4uc3RhcnQucm93LHQuaW5zZXJ0KG4uZW5kLGkuZW5kKSx0Lmluc2VydChuLnN0YXJ0LGkuc3RhcnQpO2Euc3RhcnQucm93PT1jJiYoYS5zdGFydC5jb2x1bW4rPWgpLGEuZW5kLnJvdz09YyYmKGEuZW5kLmNvbHVtbis9aCksdC5zZWxlY3Rpb24uZnJvbU9yaWVudGVkUmFuZ2UoYSl9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7fSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2goL15ccyovKVswXX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGx9LHRoaXMuY3JlYXRlTW9kZURlbGVnYXRlcz1mdW5jdGlvbihlKXt0aGlzLiRlbWJlZHM9W10sdGhpcy4kbW9kZXM9e307Zm9yKHZhciB0IGluIGUpaWYoZVt0XSl7dmFyIG49ZVt0XSxpPW4ucHJvdG90eXBlLiRpZCxzPXIuJG1vZGVzW2ldO3N8fChyLiRtb2Rlc1tpXT1zPW5ldyBuKSxyLiRtb2Rlc1t0XXx8KHIuJG1vZGVzW3RdPXMpLHRoaXMuJGVtYmVkcy5wdXNoKHQpLHRoaXMuJG1vZGVzW3RdPXN9dmFyIG89WyJ0b2dnbGVCbG9ja0NvbW1lbnQiLCJ0b2dnbGVDb21tZW50TGluZXMiLCJnZXROZXh0TGluZUluZGVudCIsImNoZWNrT3V0ZGVudCIsImF1dG9PdXRkZW50IiwidHJhbnNmb3JtQWN0aW9uIiwiZ2V0Q29tcGxldGlvbnMiXTtmb3IodmFyIHQ9MDt0PG8ubGVuZ3RoO3QrKykoZnVuY3Rpb24oZSl7dmFyIG49b1t0XSxyPWVbbl07ZVtvW3RdXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkZWxlZ2F0b3Iobixhcmd1bWVudHMscil9fSkodGhpcyl9LHRoaXMuJGRlbGVnYXRvcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXXx8InN0YXJ0IjtpZih0eXBlb2YgciE9InN0cmluZyIpe2lmKEFycmF5LmlzQXJyYXkoclsyXSkpe3ZhciBpPXJbMl1bclsyXS5sZW5ndGgtMV0scz10aGlzLiRtb2Rlc1tpXTtpZihzKXJldHVybiBzW2VdLmFwcGx5KHMsW3JbMV1dLmNvbmNhdChbXS5zbGljZS5jYWxsKHQsMSkpKX1yPXJbMF18fCJzdGFydCJ9Zm9yKHZhciBvPTA7bzx0aGlzLiRlbWJlZHMubGVuZ3RoO28rKyl7aWYoIXRoaXMuJG1vZGVzW3RoaXMuJGVtYmVkc1tvXV0pY29udGludWU7dmFyIHU9ci5zcGxpdCh0aGlzLiRlbWJlZHNbb10pO2lmKCF1WzBdJiZ1WzFdKXt0WzBdPXVbMV07dmFyIHM9dGhpcy4kbW9kZXNbdGhpcy4kZW1iZWRzW29dXTtyZXR1cm4gc1tlXS5hcHBseShzLHQpfX12YXIgYT1uLmFwcGx5KHRoaXMsdCk7cmV0dXJuIG4/YTp1bmRlZmluZWR9LHRoaXMudHJhbnNmb3JtQWN0aW9uPWZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYodGhpcy4kYmVoYXZpb3VyKXt2YXIgcz10aGlzLiRiZWhhdmlvdXIuZ2V0QmVoYXZpb3VycygpO2Zvcih2YXIgbyBpbiBzKWlmKHNbb11bdF0pe3ZhciB1PXNbb11bdF0uYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKHUpcmV0dXJuIHV9fX0sdGhpcy5nZXRLZXl3b3Jkcz1mdW5jdGlvbihlKXtpZighdGhpcy5jb21wbGV0aW9uS2V5d29yZHMpe3ZhciB0PXRoaXMuJHRva2VuaXplci5ydWxlcyxuPVtdO2Zvcih2YXIgciBpbiB0KXt2YXIgaT10W3JdO2Zvcih2YXIgcz0wLG89aS5sZW5ndGg7czxvO3MrKylpZih0eXBlb2YgaVtzXS50b2tlbj09InN0cmluZyIpL2tleXdvcmR8c3VwcG9ydHxzdG9yYWdlLy50ZXN0KGlbc10udG9rZW4pJiZuLnB1c2goaVtzXS5yZWdleCk7ZWxzZSBpZih0eXBlb2YgaVtzXS50b2tlbj09Im9iamVjdCIpZm9yKHZhciB1PTAsYT1pW3NdLnRva2VuLmxlbmd0aDt1PGE7dSsrKWlmKC9rZXl3b3JkfHN1cHBvcnR8c3RvcmFnZS8udGVzdChpW3NdLnRva2VuW3VdKSl7dmFyIHI9aVtzXS5yZWdleC5tYXRjaCgvXCguKz9cKS9nKVt1XTtuLnB1c2goci5zdWJzdHIoMSxyLmxlbmd0aC0yKSl9fXRoaXMuY29tcGxldGlvbktleXdvcmRzPW59cmV0dXJuIGU/bi5jb25jYXQodGhpcy4ka2V5d29yZExpc3R8fFtdKTp0aGlzLiRrZXl3b3JkTGlzdH0sdGhpcy4kY3JlYXRlS2V5d29yZExpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaGlnaGxpZ2h0UnVsZXN8fHRoaXMuZ2V0VG9rZW5pemVyKCksdGhpcy4ka2V5d29yZExpc3Q9dGhpcy4kaGlnaGxpZ2h0UnVsZXMuJGtleXdvcmRMaXN0fHxbXX0sdGhpcy5nZXRDb21wbGV0aW9ucz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLiRrZXl3b3JkTGlzdHx8dGhpcy4kY3JlYXRlS2V5d29yZExpc3QoKTtyZXR1cm4gaS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6ZSx2YWx1ZTplLHNjb3JlOjAsbWV0YToia2V5d29yZCJ9fSl9LHRoaXMuJGlkPSJhY2UvbW9kZS90ZXh0In0pLmNhbGwoYy5wcm90b3R5cGUpLHQuTW9kZT1jfSksYWNlLmRlZmluZSgiYWNlL2FwcGx5X2RlbHRhIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dGhyb3cgY29uc29sZS5sb2coIkludmFsaWQgRGVsdGE6IixlKSwiSW52YWxpZCBEZWx0YTogIit0fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gdC5yb3c+PTAmJnQucm93PGUubGVuZ3RoJiZ0LmNvbHVtbj49MCYmdC5jb2x1bW48PWVbdC5yb3ddLmxlbmd0aH1mdW5jdGlvbiBzKGUsdCl7dC5hY3Rpb24hPSJpbnNlcnQiJiZ0LmFjdGlvbiE9InJlbW92ZSImJnIodCwiZGVsdGEuYWN0aW9uIG11c3QgYmUgJ2luc2VydCcgb3IgJ3JlbW92ZSciKSx0LmxpbmVzIGluc3RhbmNlb2YgQXJyYXl8fHIodCwiZGVsdGEubGluZXMgbXVzdCBiZSBhbiBBcnJheSIpLCghdC5zdGFydHx8IXQuZW5kKSYmcih0LCJkZWx0YS5zdGFydC9lbmQgbXVzdCBiZSBhbiBwcmVzZW50Iik7dmFyIG49dC5zdGFydDtpKGUsdC5zdGFydCl8fHIodCwiZGVsdGEuc3RhcnQgbXVzdCBiZSBjb250YWluZWQgaW4gZG9jdW1lbnQiKTt2YXIgcz10LmVuZDt0LmFjdGlvbj09InJlbW92ZSImJiFpKGUscykmJnIodCwiZGVsdGEuZW5kIG11c3QgY29udGFpbmVkIGluIGRvY3VtZW50IGZvciAncmVtb3ZlJyBhY3Rpb25zIik7dmFyIG89cy5yb3ctbi5yb3csdT1zLmNvbHVtbi0obz09MD9uLmNvbHVtbjowKTsobyE9dC5saW5lcy5sZW5ndGgtMXx8dC5saW5lc1tvXS5sZW5ndGghPXUpJiZyKHQsImRlbHRhLnJhbmdlIG11c3QgbWF0Y2ggZGVsdGEgbGluZXMiKX10LmFwcGx5RGVsdGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuc3RhcnQucm93LGk9dC5zdGFydC5jb2x1bW4scz1lW3JdfHwiIjtzd2l0Y2godC5hY3Rpb24pe2Nhc2UiaW5zZXJ0Ijp2YXIgbz10LmxpbmVzO2lmKG8ubGVuZ3RoPT09MSllW3JdPXMuc3Vic3RyaW5nKDAsaSkrdC5saW5lc1swXStzLnN1YnN0cmluZyhpKTtlbHNle3ZhciB1PVtyLDFdLmNvbmNhdCh0LmxpbmVzKTtlLnNwbGljZS5hcHBseShlLHUpLGVbcl09cy5zdWJzdHJpbmcoMCxpKStlW3JdLGVbcit0LmxpbmVzLmxlbmd0aC0xXSs9cy5zdWJzdHJpbmcoaSl9YnJlYWs7Y2FzZSJyZW1vdmUiOnZhciBhPXQuZW5kLmNvbHVtbixmPXQuZW5kLnJvdztyPT09Zj9lW3JdPXMuc3Vic3RyaW5nKDAsaSkrcy5zdWJzdHJpbmcoYSk6ZS5zcGxpY2UocixmLXIrMSxzLnN1YnN0cmluZygwLGkpK2VbZl0uc3Vic3RyaW5nKGEpKX19fSksYWNlLmRlZmluZSgiYWNlL2FuY2hvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz10LkFuY2hvcj1mdW5jdGlvbihlLHQsbil7dGhpcy4kb25DaGFuZ2U9dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpLHRoaXMuYXR0YWNoKGUpLHR5cGVvZiBuPT0idW5kZWZpbmVkIj90aGlzLnNldFBvc2l0aW9uKHQucm93LHQuY29sdW1uKTp0aGlzLnNldFBvc2l0aW9uKHQsbil9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciByPW4/ZS5jb2x1bW48PXQuY29sdW1uOmUuY29sdW1uPHQuY29sdW1uO3JldHVybiBlLnJvdzx0LnJvd3x8ZS5yb3c9PXQucm93JiZyfWZ1bmN0aW9uIHQodCxuLHIpe3ZhciBpPXQuYWN0aW9uPT0iaW5zZXJ0IixzPShpPzE6LTEpKih0LmVuZC5yb3ctdC5zdGFydC5yb3cpLG89KGk/MTotMSkqKHQuZW5kLmNvbHVtbi10LnN0YXJ0LmNvbHVtbiksdT10LnN0YXJ0LGE9aT91OnQuZW5kO3JldHVybiBlKG4sdSxyKT97cm93Om4ucm93LGNvbHVtbjpuLmNvbHVtbn06ZShhLG4sIXIpP3tyb3c6bi5yb3crcyxjb2x1bW46bi5jb2x1bW4rKG4ucm93PT1hLnJvdz9vOjApfTp7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbn19ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQodGhpcy5yb3csdGhpcy5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnR9LHRoaXMuJGluc2VydFJpZ2h0PSExLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7aWYoZS5zdGFydC5yb3c9PWUuZW5kLnJvdyYmZS5zdGFydC5yb3chPXRoaXMucm93KXJldHVybjtpZihlLnN0YXJ0LnJvdz50aGlzLnJvdylyZXR1cm47dmFyIG49dChlLHtyb3c6dGhpcy5yb3csY29sdW1uOnRoaXMuY29sdW1ufSx0aGlzLiRpbnNlcnRSaWdodCk7dGhpcy5zZXRQb3NpdGlvbihuLnJvdyxuLmNvbHVtbiwhMCl9LHRoaXMuc2V0UG9zaXRpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByO24/cj17cm93OmUsY29sdW1uOnR9OnI9dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChlLHQpO2lmKHRoaXMucm93PT1yLnJvdyYmdGhpcy5jb2x1bW49PXIuY29sdW1uKXJldHVybjt2YXIgaT17cm93OnRoaXMucm93LGNvbHVtbjp0aGlzLmNvbHVtbn07dGhpcy5yb3c9ci5yb3csdGhpcy5jb2x1bW49ci5jb2x1bW4sdGhpcy5fc2lnbmFsKCJjaGFuZ2UiLHtvbGQ6aSx2YWx1ZTpyfSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX0sdGhpcy5hdHRhY2g9ZnVuY3Rpb24oZSl7dGhpcy5kb2N1bWVudD1lfHx0aGlzLmRvY3VtZW50LHRoaXMuZG9jdW1lbnQub24oImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfSx0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIGU+PXRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCk/KG4ucm93PU1hdGgubWF4KDAsdGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKS0xKSxuLmNvbHVtbj10aGlzLmRvY3VtZW50LmdldExpbmUobi5yb3cpLmxlbmd0aCk6ZTwwPyhuLnJvdz0wLG4uY29sdW1uPTApOihuLnJvdz1lLG4uY29sdW1uPU1hdGgubWluKHRoaXMuZG9jdW1lbnQuZ2V0TGluZShuLnJvdykubGVuZ3RoLE1hdGgubWF4KDAsdCkpKSx0PDAmJihuLmNvbHVtbj0wKSxufX0pLmNhbGwocy5wcm90b3R5cGUpfSksYWNlLmRlZmluZSgiYWNlL2RvY3VtZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvYXBwbHlfZGVsdGEiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiLCJhY2UvYW5jaG9yIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vYXBwbHlfZGVsdGEiKS5hcHBseURlbHRhLHM9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixvPWUoIi4vcmFuZ2UiKS5SYW5nZSx1PWUoIi4vYW5jaG9yIikuQW5jaG9yLGE9ZnVuY3Rpb24oZSl7dGhpcy4kbGluZXM9WyIiXSxlLmxlbmd0aD09PTA/dGhpcy4kbGluZXM9WyIiXTpBcnJheS5pc0FycmF5KGUpP3RoaXMuaW5zZXJ0TWVyZ2VkTGluZXMoe3JvdzowLGNvbHVtbjowfSxlKTp0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGUpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLHMpLHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMZW5ndGgoKS0xO3RoaXMucmVtb3ZlKG5ldyBvKDAsMCx0LHRoaXMuZ2V0TGluZSh0KS5sZW5ndGgpKSx0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGUpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QWxsTGluZXMoKS5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy5jcmVhdGVBbmNob3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHUodGhpcyxlLHQpfSwiYWFhIi5zcGxpdCgvYS8pLmxlbmd0aD09PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7dGhpcy4kYXV0b05ld0xpbmU9dD90WzFdOiJcbiIsdGhpcy5fc2lnbmFsKCJjaGFuZ2VOZXdMaW5lTW9kZSIpfSx0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXI9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy4kbmV3TGluZU1vZGUpe2Nhc2Uid2luZG93cyI6cmV0dXJuIlxyXG4iO2Nhc2UidW5peCI6cmV0dXJuIlxuIjtkZWZhdWx0OnJldHVybiB0aGlzLiRhdXRvTmV3TGluZXx8IlxuIn19LHRoaXMuJGF1dG9OZXdMaW5lPSIiLHRoaXMuJG5ld0xpbmVNb2RlPSJhdXRvIix0aGlzLnNldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJG5ld0xpbmVNb2RlPT09ZSlyZXR1cm47dGhpcy4kbmV3TGluZU1vZGU9ZSx0aGlzLl9zaWduYWwoImNoYW5nZU5ld0xpbmVNb2RlIil9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBlPT0iXHJcbiJ8fGU9PSJcciJ8fGU9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kbGluZXNbZV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGUsdCsxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ2V0TGluZXNGb3JSYW5nZShlKS5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy5nZXRMaW5lc0ZvclJhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUuc3RhcnQucm93PT09ZS5lbmQucm93KXQ9W3RoaXMuZ2V0TGluZShlLnN0YXJ0LnJvdykuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uLGUuZW5kLmNvbHVtbildO2Vsc2V7dD10aGlzLmdldExpbmVzKGUuc3RhcnQucm93LGUuZW5kLnJvdyksdFswXT0odFswXXx8IiIpLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbik7dmFyIG49dC5sZW5ndGgtMTtlLmVuZC5yb3ctZS5zdGFydC5yb3c9PW4mJih0W25dPXRbbl0uc3Vic3RyaW5nKDAsZS5lbmQuY29sdW1uKSl9cmV0dXJuIHR9LHRoaXMuaW5zZXJ0TGluZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKCJVc2Ugb2YgZG9jdW1lbnQuaW5zZXJ0TGluZXMgaXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBpbnNlcnRGdWxsTGluZXMgbWV0aG9kIGluc3RlYWQuIiksdGhpcy5pbnNlcnRGdWxsTGluZXMoZSx0KX0sdGhpcy5yZW1vdmVMaW5lcz1mdW5jdGlvbihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlVzZSBvZiBkb2N1bWVudC5yZW1vdmVMaW5lcyBpcyBkZXByZWNhdGVkLiBVc2UgdGhlIHJlbW92ZUZ1bGxMaW5lcyBtZXRob2QgaW5zdGVhZC4iKSx0aGlzLnJlbW92ZUZ1bGxMaW5lcyhlLHQpfSx0aGlzLmluc2VydE5ld0xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVXNlIG9mIGRvY3VtZW50Lmluc2VydE5ld0xpbmUgaXMgZGVwcmVjYXRlZC4gVXNlIGluc2VydE1lcmdlZExpbmVzKHBvc2l0aW9uLCBbJycsICcnXSkgaW5zdGVhZC4iKSx0aGlzLmluc2VydE1lcmdlZExpbmVzKGUsWyIiLCIiXSl9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUodCksdGhpcy5pbnNlcnRNZXJnZWRMaW5lcyhlLHRoaXMuJHNwbGl0KHQpKX0sdGhpcy5pbnNlcnRJbkxpbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNsaXBwZWRQb3MoZS5yb3csZS5jb2x1bW4pLHI9dGhpcy5wb3MoZS5yb3csZS5jb2x1bW4rdC5sZW5ndGgpO3JldHVybiB0aGlzLmFwcGx5RGVsdGEoe3N0YXJ0Om4sZW5kOnIsYWN0aW9uOiJpbnNlcnQiLGxpbmVzOlt0XX0sITApLHRoaXMuY2xvbmVQb3Mocil9LHRoaXMuY2xpcHBlZFBvcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0TGVuZ3RoKCk7ZT09PXVuZGVmaW5lZD9lPW46ZTwwP2U9MDplPj1uJiYoZT1uLTEsdD11bmRlZmluZWQpO3ZhciByPXRoaXMuZ2V0TGluZShlKTtyZXR1cm4gdD09dW5kZWZpbmVkJiYodD1yLmxlbmd0aCksdD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHIubGVuZ3RoKSx7cm93OmUsY29sdW1uOnR9fSx0aGlzLmNsb25lUG9zPWZ1bmN0aW9uKGUpe3JldHVybntyb3c6ZS5yb3csY29sdW1uOmUuY29sdW1ufX0sdGhpcy5wb3M9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cm93OmUsY29sdW1uOnR9fSx0aGlzLiRjbGlwUG9zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMZW5ndGgoKTtyZXR1cm4gZS5yb3c+PXQ/KGUucm93PU1hdGgubWF4KDAsdC0xKSxlLmNvbHVtbj10aGlzLmdldExpbmUodC0xKS5sZW5ndGgpOihlLnJvdz1NYXRoLm1heCgwLGUucm93KSxlLmNvbHVtbj1NYXRoLm1pbihNYXRoLm1heChlLmNvbHVtbiwwKSx0aGlzLmdldExpbmUoZS5yb3cpLmxlbmd0aCkpLGV9LHRoaXMuaW5zZXJ0RnVsbExpbmVzPWZ1bmN0aW9uKGUsdCl7ZT1NYXRoLm1pbihNYXRoLm1heChlLDApLHRoaXMuZ2V0TGVuZ3RoKCkpO3ZhciBuPTA7ZTx0aGlzLmdldExlbmd0aCgpPyh0PXQuY29uY2F0KFsiIl0pLG49MCk6KHQ9WyIiXS5jb25jYXQodCksZS0tLG49dGhpcy4kbGluZXNbZV0ubGVuZ3RoKSx0aGlzLmluc2VydE1lcmdlZExpbmVzKHtyb3c6ZSxjb2x1bW46bn0sdCl9LHRoaXMuaW5zZXJ0TWVyZ2VkTGluZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNsaXBwZWRQb3MoZS5yb3csZS5jb2x1bW4pLHI9e3JvdzpuLnJvdyt0Lmxlbmd0aC0xLGNvbHVtbjoodC5sZW5ndGg9PTE/bi5jb2x1bW46MCkrdFt0Lmxlbmd0aC0xXS5sZW5ndGh9O3JldHVybiB0aGlzLmFwcGx5RGVsdGEoe3N0YXJ0Om4sZW5kOnIsYWN0aW9uOiJpbnNlcnQiLGxpbmVzOnR9KSx0aGlzLmNsb25lUG9zKHIpfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNsaXBwZWRQb3MoZS5zdGFydC5yb3csZS5zdGFydC5jb2x1bW4pLG49dGhpcy5jbGlwcGVkUG9zKGUuZW5kLnJvdyxlLmVuZC5jb2x1bW4pO3JldHVybiB0aGlzLmFwcGx5RGVsdGEoe3N0YXJ0OnQsZW5kOm4sYWN0aW9uOiJyZW1vdmUiLGxpbmVzOnRoaXMuZ2V0TGluZXNGb3JSYW5nZSh7c3RhcnQ6dCxlbmQ6bn0pfSksdGhpcy5jbG9uZVBvcyh0KX0sdGhpcy5yZW1vdmVJbkxpbmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuY2xpcHBlZFBvcyhlLHQpLGk9dGhpcy5jbGlwcGVkUG9zKGUsbik7cmV0dXJuIHRoaXMuYXBwbHlEZWx0YSh7c3RhcnQ6cixlbmQ6aSxhY3Rpb246InJlbW92ZSIsbGluZXM6dGhpcy5nZXRMaW5lc0ZvclJhbmdlKHtzdGFydDpyLGVuZDppfSl9LCEwKSx0aGlzLmNsb25lUG9zKHIpfSx0aGlzLnJlbW92ZUZ1bGxMaW5lcz1mdW5jdGlvbihlLHQpe2U9TWF0aC5taW4oTWF0aC5tYXgoMCxlKSx0aGlzLmdldExlbmd0aCgpLTEpLHQ9TWF0aC5taW4oTWF0aC5tYXgoMCx0KSx0aGlzLmdldExlbmd0aCgpLTEpO3ZhciBuPXQ9PXRoaXMuZ2V0TGVuZ3RoKCktMSYmZT4wLHI9dDx0aGlzLmdldExlbmd0aCgpLTEsaT1uP2UtMTplLHM9bj90aGlzLmdldExpbmUoaSkubGVuZ3RoOjAsdT1yP3QrMTp0LGE9cj8wOnRoaXMuZ2V0TGluZSh1KS5sZW5ndGgsZj1uZXcgbyhpLHMsdSxhKSxsPXRoaXMuJGxpbmVzLnNsaWNlKGUsdCsxKTtyZXR1cm4gdGhpcy5hcHBseURlbHRhKHtzdGFydDpmLnN0YXJ0LGVuZDpmLmVuZCxhY3Rpb246InJlbW92ZSIsbGluZXM6dGhpcy5nZXRMaW5lc0ZvclJhbmdlKGYpfSksbH0sdGhpcy5yZW1vdmVOZXdMaW5lPWZ1bmN0aW9uKGUpe2U8dGhpcy5nZXRMZW5ndGgoKS0xJiZlPj0wJiZ0aGlzLmFwcGx5RGVsdGEoe3N0YXJ0OnRoaXMucG9zKGUsdGhpcy5nZXRMaW5lKGUpLmxlbmd0aCksZW5kOnRoaXMucG9zKGUrMSwwKSxhY3Rpb246InJlbW92ZSIsbGluZXM6WyIiLCIiXX0pfSx0aGlzLnJlcGxhY2U9ZnVuY3Rpb24oZSx0KXtlIGluc3RhbmNlb2Ygb3x8KGU9by5mcm9tUG9pbnRzKGUuc3RhcnQsZS5lbmQpKTtpZih0Lmxlbmd0aD09PTAmJmUuaXNFbXB0eSgpKXJldHVybiBlLnN0YXJ0O2lmKHQ9PXRoaXMuZ2V0VGV4dFJhbmdlKGUpKXJldHVybiBlLmVuZDt0aGlzLnJlbW92ZShlKTt2YXIgbjtyZXR1cm4gdD9uPXRoaXMuaW5zZXJ0KGUuc3RhcnQsdCk6bj1lLnN0YXJ0LG59LHRoaXMuYXBwbHlEZWx0YXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5hcHBseURlbHRhKGVbdF0pfSx0aGlzLnJldmVydERlbHRhcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl0aGlzLnJldmVydERlbHRhKGVbdF0pfSx0aGlzLmFwcGx5RGVsdGE9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFjdGlvbj09Imluc2VydCI7aWYobj9lLmxpbmVzLmxlbmd0aDw9MSYmIWUubGluZXNbMF06IW8uY29tcGFyZVBvaW50cyhlLnN0YXJ0LGUuZW5kKSlyZXR1cm47biYmZS5saW5lcy5sZW5ndGg+MmU0P3RoaXMuJHNwbGl0QW5kYXBwbHlMYXJnZURlbHRhKGUsMmU0KTooaSh0aGlzLiRsaW5lcyxlLHQpLHRoaXMuX3NpZ25hbCgiY2hhbmdlIixlKSl9LHRoaXMuJHNwbGl0QW5kYXBwbHlMYXJnZURlbHRhPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5saW5lcyxyPW4ubGVuZ3RoLXQrMSxpPWUuc3RhcnQucm93LHM9ZS5zdGFydC5jb2x1bW47Zm9yKHZhciBvPTAsdT0wO288cjtvPXUpe3UrPXQtMTt2YXIgYT1uLnNsaWNlKG8sdSk7YS5wdXNoKCIiKSx0aGlzLmFwcGx5RGVsdGEoe3N0YXJ0OnRoaXMucG9zKGkrbyxzKSxlbmQ6dGhpcy5wb3MoaSt1LHM9MCksYWN0aW9uOmUuYWN0aW9uLGxpbmVzOmF9LCEwKX1lLmxpbmVzPW4uc2xpY2UobyksZS5zdGFydC5yb3c9aStvLGUuc3RhcnQuY29sdW1uPXMsdGhpcy5hcHBseURlbHRhKGUsITApfSx0aGlzLnJldmVydERlbHRhPWZ1bmN0aW9uKGUpe3RoaXMuYXBwbHlEZWx0YSh7c3RhcnQ6dGhpcy5jbG9uZVBvcyhlLnN0YXJ0KSxlbmQ6dGhpcy5jbG9uZVBvcyhlLmVuZCksYWN0aW9uOmUuYWN0aW9uPT0iaW5zZXJ0Ij8icmVtb3ZlIjoiaW5zZXJ0IixsaW5lczplLmxpbmVzLnNsaWNlKCl9KX0sdGhpcy5pbmRleFRvUG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRsaW5lc3x8dGhpcy5nZXRBbGxMaW5lcygpLHI9dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkubGVuZ3RoO2Zvcih2YXIgaT10fHwwLHM9bi5sZW5ndGg7aTxzO2krKyl7ZS09bltpXS5sZW5ndGgrcjtpZihlPDApcmV0dXJue3JvdzppLGNvbHVtbjplK25baV0ubGVuZ3RoK3J9fXJldHVybntyb3c6cy0xLGNvbHVtbjplK25bcy0xXS5sZW5ndGgrcn19LHRoaXMucG9zaXRpb25Ub0luZGV4PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kbGluZXN8fHRoaXMuZ2V0QWxsTGluZXMoKSxyPXRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpLmxlbmd0aCxpPTAscz1NYXRoLm1pbihlLnJvdyxuLmxlbmd0aCk7Zm9yKHZhciBvPXR8fDA7bzxzOysrbylpKz1uW29dLmxlbmd0aCtyO3JldHVybiBpK2UuY29sdW1ufX0pLmNhbGwoYS5wcm90b3R5cGUpLHQuRG9jdW1lbnQ9YX0pLGFjZS5kZWZpbmUoImFjZS9iYWNrZ3JvdW5kX3Rva2VuaXplciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz1mdW5jdGlvbihlLHQpe3RoaXMucnVubmluZz0hMSx0aGlzLmxpbmVzPVtdLHRoaXMuc3RhdGVzPVtdLHRoaXMuY3VycmVudExpbmU9MCx0aGlzLnRva2VuaXplcj1lO3ZhciBuPXRoaXM7dGhpcy4kd29ya2VyPWZ1bmN0aW9uKCl7aWYoIW4ucnVubmluZylyZXR1cm47dmFyIGU9bmV3IERhdGUsdD1uLmN1cnJlbnRMaW5lLHI9LTEsaT1uLmRvYyxzPXQ7d2hpbGUobi5saW5lc1t0XSl0Kys7dmFyIG89aS5nZXRMZW5ndGgoKSx1PTA7bi5ydW5uaW5nPSExO3doaWxlKHQ8byl7bi4kdG9rZW5pemVSb3codCkscj10O2RvIHQrKzt3aGlsZShuLmxpbmVzW3RdKTt1Kys7aWYodSU1PT09MCYmbmV3IERhdGUtZT4yMCl7bi5ydW5uaW5nPXNldFRpbWVvdXQobi4kd29ya2VyLDIwKTticmVha319bi5jdXJyZW50TGluZT10LHI9PS0xJiYocj10KSxzPD1yJiZuLmZpcmVVcGRhdGVFdmVudChzLHIpfX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLnNldFRva2VuaXplcj1mdW5jdGlvbihlKXt0aGlzLnRva2VuaXplcj1lLHRoaXMubGluZXM9W10sdGhpcy5zdGF0ZXM9W10sdGhpcy5zdGFydCgwKX0sdGhpcy5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt0aGlzLmRvYz1lLHRoaXMubGluZXM9W10sdGhpcy5zdGF0ZXM9W10sdGhpcy5zdG9wKCl9LHRoaXMuZmlyZVVwZGF0ZUV2ZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49e2ZpcnN0OmUsbGFzdDp0fTt0aGlzLl9zaWduYWwoInVwZGF0ZSIse2RhdGE6bn0pfSx0aGlzLnN0YXJ0PWZ1bmN0aW9uKGUpe3RoaXMuY3VycmVudExpbmU9TWF0aC5taW4oZXx8MCx0aGlzLmN1cnJlbnRMaW5lLHRoaXMuZG9jLmdldExlbmd0aCgpKSx0aGlzLmxpbmVzLnNwbGljZSh0aGlzLmN1cnJlbnRMaW5lLHRoaXMubGluZXMubGVuZ3RoKSx0aGlzLnN0YXRlcy5zcGxpY2UodGhpcy5jdXJyZW50TGluZSx0aGlzLnN0YXRlcy5sZW5ndGgpLHRoaXMuc3RvcCgpLHRoaXMucnVubmluZz1zZXRUaW1lb3V0KHRoaXMuJHdvcmtlciw3MDApfSx0aGlzLnNjaGVkdWxlU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLnJ1bm5pbmd8fCh0aGlzLnJ1bm5pbmc9c2V0VGltZW91dCh0aGlzLiR3b3JrZXIsNzAwKSl9LHRoaXMuJHVwZGF0ZU9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RhcnQucm93LG49ZS5lbmQucm93LXQ7aWYobj09PTApdGhpcy5saW5lc1t0XT1udWxsO2Vsc2UgaWYoZS5hY3Rpb249PSJyZW1vdmUiKXRoaXMubGluZXMuc3BsaWNlKHQsbisxLG51bGwpLHRoaXMuc3RhdGVzLnNwbGljZSh0LG4rMSxudWxsKTtlbHNle3ZhciByPUFycmF5KG4rMSk7ci51bnNoaWZ0KHQsMSksdGhpcy5saW5lcy5zcGxpY2UuYXBwbHkodGhpcy5saW5lcyxyKSx0aGlzLnN0YXRlcy5zcGxpY2UuYXBwbHkodGhpcy5zdGF0ZXMscil9dGhpcy5jdXJyZW50TGluZT1NYXRoLm1pbih0LHRoaXMuY3VycmVudExpbmUsdGhpcy5kb2MuZ2V0TGVuZ3RoKCkpLHRoaXMuc3RvcCgpfSx0aGlzLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnJ1bm5pbmcmJmNsZWFyVGltZW91dCh0aGlzLnJ1bm5pbmcpLHRoaXMucnVubmluZz0hMX0sdGhpcy5nZXRUb2tlbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGluZXNbZV18fHRoaXMuJHRva2VuaXplUm93KGUpfSx0aGlzLmdldFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmN1cnJlbnRMaW5lPT1lJiZ0aGlzLiR0b2tlbml6ZVJvdyhlKSx0aGlzLnN0YXRlc1tlXXx8InN0YXJ0In0sdGhpcy4kdG9rZW5pemVSb3c9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kb2MuZ2V0TGluZShlKSxuPXRoaXMuc3RhdGVzW2UtMV0scj10aGlzLnRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsbixlKTtyZXR1cm4gdGhpcy5zdGF0ZXNbZV0rIiIhPXIuc3RhdGUrIiI/KHRoaXMuc3RhdGVzW2VdPXIuc3RhdGUsdGhpcy5saW5lc1tlKzFdPW51bGwsdGhpcy5jdXJyZW50TGluZT5lKzEmJih0aGlzLmN1cnJlbnRMaW5lPWUrMSkpOnRoaXMuY3VycmVudExpbmU9PWUmJih0aGlzLmN1cnJlbnRMaW5lPWUrMSksdGhpcy5saW5lc1tlXT1yLnRva2Vuc319KS5jYWxsKHMucHJvdG90eXBlKSx0LkJhY2tncm91bmRUb2tlbml6ZXI9c30pLGFjZS5kZWZpbmUoImFjZS9zZWFyY2hfaGlnaGxpZ2h0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vbGliL2xhbmciKSxpPWUoIi4vbGliL29vcCIpLHM9ZSgiLi9yYW5nZSIpLlJhbmdlLG89ZnVuY3Rpb24oZSx0LG4pe3RoaXMuc2V0UmVnZXhwKGUpLHRoaXMuY2xheno9dCx0aGlzLnR5cGU9bnx8InRleHQifTsoZnVuY3Rpb24oKXt0aGlzLk1BWF9SQU5HRVM9NTAwLHRoaXMuc2V0UmVnZXhwPWZ1bmN0aW9uKGUpe2lmKHRoaXMucmVnRXhwKyIiPT1lKyIiKXJldHVybjt0aGlzLnJlZ0V4cD1lLHRoaXMuY2FjaGU9W119LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGUsdCxuLGkpe2lmKCF0aGlzLnJlZ0V4cClyZXR1cm47dmFyIG89aS5maXJzdFJvdyx1PWkubGFzdFJvdztmb3IodmFyIGE9bzthPD11O2ErKyl7dmFyIGY9dGhpcy5jYWNoZVthXTtmPT1udWxsJiYoZj1yLmdldE1hdGNoT2Zmc2V0cyhuLmdldExpbmUoYSksdGhpcy5yZWdFeHApLGYubGVuZ3RoPnRoaXMuTUFYX1JBTkdFUyYmKGY9Zi5zbGljZSgwLHRoaXMuTUFYX1JBTkdFUykpLGY9Zi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBzKGEsZS5vZmZzZXQsYSxlLm9mZnNldCtlLmxlbmd0aCl9KSx0aGlzLmNhY2hlW2FdPWYubGVuZ3RoP2Y6IiIpO2Zvcih2YXIgbD1mLmxlbmd0aDtsLS07KXQuZHJhd1NpbmdsZUxpbmVNYXJrZXIoZSxmW2xdLnRvU2NyZWVuUmFuZ2UobiksdGhpcy5jbGF6eixpKX19fSkuY2FsbChvLnByb3RvdHlwZSksdC5TZWFyY2hIaWdobGlnaHQ9b30pLGFjZS5kZWZpbmUoImFjZS9lZGl0X3Nlc3Npb24vZm9sZF9saW5lIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7dGhpcy5mb2xkRGF0YT1lLEFycmF5LmlzQXJyYXkodCk/dGhpcy5mb2xkcz10OnQ9dGhpcy5mb2xkcz1bdF07dmFyIG49dFt0Lmxlbmd0aC0xXTt0aGlzLnJhbmdlPW5ldyByKHRbMF0uc3RhcnQucm93LHRbMF0uc3RhcnQuY29sdW1uLG4uZW5kLnJvdyxuLmVuZC5jb2x1bW4pLHRoaXMuc3RhcnQ9dGhpcy5yYW5nZS5zdGFydCx0aGlzLmVuZD10aGlzLnJhbmdlLmVuZCx0aGlzLmZvbGRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXRGb2xkTGluZSh0aGlzKX0sdGhpcyl9dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZTsoZnVuY3Rpb24oKXt0aGlzLnNoaWZ0Um93PWZ1bmN0aW9uKGUpe3RoaXMuc3RhcnQucm93Kz1lLHRoaXMuZW5kLnJvdys9ZSx0aGlzLmZvbGRzLmZvckVhY2goZnVuY3Rpb24odCl7dC5zdGFydC5yb3crPWUsdC5lbmQucm93Kz1lfSl9LHRoaXMuYWRkRm9sZD1mdW5jdGlvbihlKXtpZihlLnNhbWVSb3cpe2lmKGUuc3RhcnQucm93PHRoaXMuc3RhcnRSb3d8fGUuZW5kUm93PnRoaXMuZW5kUm93KXRocm93IG5ldyBFcnJvcigiQ2FuJ3QgYWRkIGEgZm9sZCB0byB0aGlzIEZvbGRMaW5lIGFzIGl0IGhhcyBubyBjb25uZWN0aW9uIik7dGhpcy5mb2xkcy5wdXNoKGUpLHRoaXMuZm9sZHMuc29ydChmdW5jdGlvbihlLHQpe3JldHVybi1lLnJhbmdlLmNvbXBhcmVFbmQodC5zdGFydC5yb3csdC5zdGFydC5jb2x1bW4pfSksdGhpcy5yYW5nZS5jb21wYXJlRW5kKGUuc3RhcnQucm93LGUuc3RhcnQuY29sdW1uKT4wPyh0aGlzLmVuZC5yb3c9ZS5lbmQucm93LHRoaXMuZW5kLmNvbHVtbj1lLmVuZC5jb2x1bW4pOnRoaXMucmFuZ2UuY29tcGFyZVN0YXJ0KGUuZW5kLnJvdyxlLmVuZC5jb2x1bW4pPDAmJih0aGlzLnN0YXJ0LnJvdz1lLnN0YXJ0LnJvdyx0aGlzLnN0YXJ0LmNvbHVtbj1lLnN0YXJ0LmNvbHVtbil9ZWxzZSBpZihlLnN0YXJ0LnJvdz09dGhpcy5lbmQucm93KXRoaXMuZm9sZHMucHVzaChlKSx0aGlzLmVuZC5yb3c9ZS5lbmQucm93LHRoaXMuZW5kLmNvbHVtbj1lLmVuZC5jb2x1bW47ZWxzZXtpZihlLmVuZC5yb3chPXRoaXMuc3RhcnQucm93KXRocm93IG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFkZCBmb2xkIHRvIEZvbGRSb3cgdGhhdCBkb2Vzbid0IGhhdmUgYSBtYXRjaGluZyByb3ciKTt0aGlzLmZvbGRzLnVuc2hpZnQoZSksdGhpcy5zdGFydC5yb3c9ZS5zdGFydC5yb3csdGhpcy5zdGFydC5jb2x1bW49ZS5zdGFydC5jb2x1bW59ZS5mb2xkTGluZT10aGlzfSx0aGlzLmNvbnRhaW5zUm93PWZ1bmN0aW9uKGUpe3JldHVybiBlPj10aGlzLnN0YXJ0LnJvdyYmZTw9dGhpcy5lbmQucm93fSx0aGlzLndhbGs9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPTAsaT10aGlzLmZvbGRzLHMsbyx1LGE9ITA7dD09bnVsbCYmKHQ9dGhpcy5lbmQucm93LG49dGhpcy5lbmQuY29sdW1uKTtmb3IodmFyIGY9MDtmPGkubGVuZ3RoO2YrKyl7cz1pW2ZdLG89cy5yYW5nZS5jb21wYXJlU3RhcnQodCxuKTtpZihvPT0tMSl7ZShudWxsLHQsbixyLGEpO3JldHVybn11PWUobnVsbCxzLnN0YXJ0LnJvdyxzLnN0YXJ0LmNvbHVtbixyLGEpLHU9IXUmJmUocy5wbGFjZWhvbGRlcixzLnN0YXJ0LnJvdyxzLnN0YXJ0LmNvbHVtbixyKTtpZih1fHxvPT09MClyZXR1cm47YT0hcy5zYW1lUm93LHI9cy5lbmQuY29sdW1ufWUobnVsbCx0LG4scixhKX0sdGhpcy5nZXROZXh0Rm9sZFRvPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtmb3IodmFyIGk9MDtpPHRoaXMuZm9sZHMubGVuZ3RoO2krKyl7bj10aGlzLmZvbGRzW2ldLHI9bi5yYW5nZS5jb21wYXJlRW5kKGUsdCk7aWYocj09LTEpcmV0dXJue2ZvbGQ6bixraW5kOiJhZnRlciJ9O2lmKHI9PT0wKXJldHVybntmb2xkOm4sa2luZDoiaW5zaWRlIn19cmV0dXJuIG51bGx9LHRoaXMuYWRkUmVtb3ZlQ2hhcnM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZ2V0TmV4dEZvbGRUbyhlLHQpLGkscztpZihyKXtpPXIuZm9sZDtpZihyLmtpbmQ9PSJpbnNpZGUiJiZpLnN0YXJ0LmNvbHVtbiE9dCYmaS5zdGFydC5yb3chPWUpd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyhlLHQsaSk7ZWxzZSBpZihpLnN0YXJ0LnJvdz09ZSl7cz10aGlzLmZvbGRzO3ZhciBvPXMuaW5kZXhPZihpKTtvPT09MCYmKHRoaXMuc3RhcnQuY29sdW1uKz1uKTtmb3IobztvPHMubGVuZ3RoO28rKyl7aT1zW29dLGkuc3RhcnQuY29sdW1uKz1uO2lmKCFpLnNhbWVSb3cpcmV0dXJuO2kuZW5kLmNvbHVtbis9bn10aGlzLmVuZC5jb2x1bW4rPW59fX0sdGhpcy5zcGxpdD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0TmV4dEZvbGRUbyhlLHQpO2lmKCFufHxuLmtpbmQ9PSJpbnNpZGUiKXJldHVybiBudWxsO3ZhciByPW4uZm9sZCxzPXRoaXMuZm9sZHMsbz10aGlzLmZvbGREYXRhLHU9cy5pbmRleE9mKHIpLGE9c1t1LTFdO3RoaXMuZW5kLnJvdz1hLmVuZC5yb3csdGhpcy5lbmQuY29sdW1uPWEuZW5kLmNvbHVtbixzPXMuc3BsaWNlKHUscy5sZW5ndGgtdSk7dmFyIGY9bmV3IGkobyxzKTtyZXR1cm4gby5zcGxpY2Uoby5pbmRleE9mKHRoaXMpKzEsMCxmKSxmfSx0aGlzLm1lcmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZm9sZHM7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5hZGRGb2xkKHRbbl0pO3ZhciByPXRoaXMuZm9sZERhdGE7ci5zcGxpY2Uoci5pbmRleE9mKGUpLDEpfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9W3RoaXMucmFuZ2UudG9TdHJpbmcoKSsiOiBbIl07cmV0dXJuIHRoaXMuZm9sZHMuZm9yRWFjaChmdW5jdGlvbih0KXtlLnB1c2goIiAgIit0LnRvU3RyaW5nKCkpfSksZS5wdXNoKCJdIiksZS5qb2luKCJcbiIpfSx0aGlzLmlkeFRvUG9zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9MDtmb3IodmFyIG49MDtuPHRoaXMuZm9sZHMubGVuZ3RoO24rKyl7dmFyIHI9dGhpcy5mb2xkc1tuXTtlLT1yLnN0YXJ0LmNvbHVtbi10O2lmKGU8MClyZXR1cm57cm93OnIuc3RhcnQucm93LGNvbHVtbjpyLnN0YXJ0LmNvbHVtbitlfTtlLT1yLnBsYWNlaG9sZGVyLmxlbmd0aDtpZihlPDApcmV0dXJuIHIuc3RhcnQ7dD1yLmVuZC5jb2x1bW59cmV0dXJue3Jvdzp0aGlzLmVuZC5yb3csY29sdW1uOnRoaXMuZW5kLmNvbHVtbitlfX19KS5jYWxsKGkucHJvdG90eXBlKSx0LkZvbGRMaW5lPWl9KSxhY2UuZGVmaW5lKCJhY2UvcmFuZ2VfbGlzdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi9yYW5nZSIpLlJhbmdlLGk9ci5jb21wYXJlUG9pbnRzLHM9ZnVuY3Rpb24oKXt0aGlzLnJhbmdlcz1bXSx0aGlzLiRiaWFzPTF9OyhmdW5jdGlvbigpe3RoaXMuY29tcGFyZVBvaW50cz1pLHRoaXMucG9pbnRJbmRleD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5yYW5nZXM7Zm9yKHZhciBzPW58fDA7czxyLmxlbmd0aDtzKyspe3ZhciBvPXJbc10sdT1pKGUsby5lbmQpO2lmKHU+MCljb250aW51ZTt2YXIgYT1pKGUsby5zdGFydCk7cmV0dXJuIHU9PT0wP3QmJmEhPT0wPy1zLTI6czphPjB8fGE9PT0wJiYhdD9zOi1zLTF9cmV0dXJuLXMtMX0sdGhpcy5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9IWUuaXNFbXB0eSgpLG49dGhpcy5wb2ludEluZGV4KGUuc3RhcnQsdCk7bjwwJiYobj0tbi0xKTt2YXIgcj10aGlzLnBvaW50SW5kZXgoZS5lbmQsdCxuKTtyZXR1cm4gcjwwP3I9LXItMTpyKyssdGhpcy5yYW5nZXMuc3BsaWNlKG4sci1uLGUpfSx0aGlzLmFkZExpc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuPWUubGVuZ3RoO24tLTspdC5wdXNoLmFwcGx5KHQsdGhpcy5hZGQoZVtuXSkpO3JldHVybiB0fSx0aGlzLnN1YnN0cmFjdFBvaW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucG9pbnRJbmRleChlKTtpZih0Pj0wKXJldHVybiB0aGlzLnJhbmdlcy5zcGxpY2UodCwxKX0sdGhpcy5tZXJnZT1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5yYW5nZXM7dD10LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLnN0YXJ0LHQuc3RhcnQpfSk7dmFyIG49dFswXSxyO2Zvcih2YXIgcz0xO3M8dC5sZW5ndGg7cysrKXtyPW4sbj10W3NdO3ZhciBvPWkoci5lbmQsbi5zdGFydCk7aWYobzwwKWNvbnRpbnVlO2lmKG89PTAmJiFyLmlzRW1wdHkoKSYmIW4uaXNFbXB0eSgpKWNvbnRpbnVlO2koci5lbmQsbi5lbmQpPDAmJihyLmVuZC5yb3c9bi5lbmQucm93LHIuZW5kLmNvbHVtbj1uLmVuZC5jb2x1bW4pLHQuc3BsaWNlKHMsMSksZS5wdXNoKG4pLG49cixzLS19cmV0dXJuIHRoaXMucmFuZ2VzPXQsZX0sdGhpcy5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnBvaW50SW5kZXgoe3JvdzplLGNvbHVtbjp0fSk+PTB9LHRoaXMuY29udGFpbnNQb2ludD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wb2ludEluZGV4KGUpPj0wfSx0aGlzLnJhbmdlQXRQb2ludD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvaW50SW5kZXgoZSk7aWYodD49MClyZXR1cm4gdGhpcy5yYW5nZXNbdF19LHRoaXMuY2xpcFJvd3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhbmdlcztpZihuWzBdLnN0YXJ0LnJvdz50fHxuW24ubGVuZ3RoLTFdLnN0YXJ0LnJvdzxlKXJldHVybltdO3ZhciByPXRoaXMucG9pbnRJbmRleCh7cm93OmUsY29sdW1uOjB9KTtyPDAmJihyPS1yLTEpO3ZhciBpPXRoaXMucG9pbnRJbmRleCh7cm93OnQsY29sdW1uOjB9LHIpO2k8MCYmKGk9LWktMSk7dmFyIHM9W107Zm9yKHZhciBvPXI7bzxpO28rKylzLnB1c2gobltvXSk7cmV0dXJuIHN9LHRoaXMucmVtb3ZlQWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VzLnNwbGljZSgwLHRoaXMucmFuZ2VzLmxlbmd0aCl9LHRoaXMuYXR0YWNoPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbiYmdGhpcy5kZXRhY2goKSx0aGlzLnNlc3Npb249ZSx0aGlzLm9uQ2hhbmdlPXRoaXMuJG9uQ2hhbmdlLmJpbmQodGhpcyksdGhpcy5zZXNzaW9uLm9uKCJjaGFuZ2UiLHRoaXMub25DaGFuZ2UpfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe2lmKCF0aGlzLnNlc3Npb24pcmV0dXJuO3RoaXMuc2Vzc2lvbi5yZW1vdmVMaXN0ZW5lcigiY2hhbmdlIix0aGlzLm9uQ2hhbmdlKSx0aGlzLnNlc3Npb249bnVsbH0sdGhpcy4kb25DaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGFydCxuPWUuZW5kLHI9dC5yb3csaT1uLnJvdyxzPXRoaXMucmFuZ2VzO2Zvcih2YXIgbz0wLHU9cy5sZW5ndGg7bzx1O28rKyl7dmFyIGE9c1tvXTtpZihhLmVuZC5yb3c+PXIpYnJlYWt9aWYoZS5hY3Rpb249PSJpbnNlcnQiKXt2YXIgZj1pLXIsbD0tdC5jb2x1bW4rbi5jb2x1bW47Zm9yKDtvPHU7bysrKXt2YXIgYT1zW29dO2lmKGEuc3RhcnQucm93PnIpYnJlYWs7YS5zdGFydC5yb3c9PXImJmEuc3RhcnQuY29sdW1uPj10LmNvbHVtbiYmKGEuc3RhcnQuY29sdW1uPT10LmNvbHVtbiYmdGhpcy4kYmlhczw9MHx8KGEuc3RhcnQuY29sdW1uKz1sLGEuc3RhcnQucm93Kz1mKSk7aWYoYS5lbmQucm93PT1yJiZhLmVuZC5jb2x1bW4+PXQuY29sdW1uKXtpZihhLmVuZC5jb2x1bW49PXQuY29sdW1uJiZ0aGlzLiRiaWFzPDApY29udGludWU7YS5lbmQuY29sdW1uPT10LmNvbHVtbiYmbD4wJiZvPHUtMSYmYS5lbmQuY29sdW1uPmEuc3RhcnQuY29sdW1uJiZhLmVuZC5jb2x1bW49PXNbbysxXS5zdGFydC5jb2x1bW4mJihhLmVuZC5jb2x1bW4tPWwpLGEuZW5kLmNvbHVtbis9bCxhLmVuZC5yb3crPWZ9fX1lbHNle3ZhciBmPXItaSxsPXQuY29sdW1uLW4uY29sdW1uO2Zvcig7bzx1O28rKyl7dmFyIGE9c1tvXTtpZihhLnN0YXJ0LnJvdz5pKWJyZWFrO2lmKGEuZW5kLnJvdzxpJiYocjxhLmVuZC5yb3d8fHI9PWEuZW5kLnJvdyYmdC5jb2x1bW48YS5lbmQuY29sdW1uKSlhLmVuZC5yb3c9cixhLmVuZC5jb2x1bW49dC5jb2x1bW47ZWxzZSBpZihhLmVuZC5yb3c9PWkpaWYoYS5lbmQuY29sdW1uPD1uLmNvbHVtbil7aWYoZnx8YS5lbmQuY29sdW1uPnQuY29sdW1uKWEuZW5kLmNvbHVtbj10LmNvbHVtbixhLmVuZC5yb3c9dC5yb3d9ZWxzZSBhLmVuZC5jb2x1bW4rPWwsYS5lbmQucm93Kz1mO2Vsc2UgYS5lbmQucm93PmkmJihhLmVuZC5yb3crPWYpO2lmKGEuc3RhcnQucm93PGkmJihyPGEuc3RhcnQucm93fHxyPT1hLnN0YXJ0LnJvdyYmdC5jb2x1bW48YS5zdGFydC5jb2x1bW4pKWEuc3RhcnQucm93PXIsYS5zdGFydC5jb2x1bW49dC5jb2x1bW47ZWxzZSBpZihhLnN0YXJ0LnJvdz09aSlpZihhLnN0YXJ0LmNvbHVtbjw9bi5jb2x1bW4pe2lmKGZ8fGEuc3RhcnQuY29sdW1uPnQuY29sdW1uKWEuc3RhcnQuY29sdW1uPXQuY29sdW1uLGEuc3RhcnQucm93PXQucm93fWVsc2UgYS5zdGFydC5jb2x1bW4rPWwsYS5zdGFydC5yb3crPWY7ZWxzZSBhLnN0YXJ0LnJvdz5pJiYoYS5zdGFydC5yb3crPWYpfX1pZihmIT0wJiZvPHUpZm9yKDtvPHU7bysrKXt2YXIgYT1zW29dO2Euc3RhcnQucm93Kz1mLGEuZW5kLnJvdys9Zn19fSkuY2FsbChzLnByb3RvdHlwZSksdC5SYW5nZUxpc3Q9c30pLGFjZS5kZWZpbmUoImFjZS9lZGl0X3Nlc3Npb24vZm9sZCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZV9saXN0IiwiYWNlL2xpYi9vb3AiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSx0KXtlLnJvdy09dC5yb3csZS5yb3c9PTAmJihlLmNvbHVtbi09dC5jb2x1bW4pfWZ1bmN0aW9uIHUoZSx0KXtvKGUuc3RhcnQsdCksbyhlLmVuZCx0KX1mdW5jdGlvbiBhKGUsdCl7ZS5yb3c9PTAmJihlLmNvbHVtbis9dC5jb2x1bW4pLGUucm93Kz10LnJvd31mdW5jdGlvbiBmKGUsdCl7YShlLnN0YXJ0LHQpLGEoZS5lbmQsdCl9dmFyIHI9ZSgiLi4vcmFuZ2VfbGlzdCIpLlJhbmdlTGlzdCxpPWUoIi4uL2xpYi9vb3AiKSxzPXQuRm9sZD1mdW5jdGlvbihlLHQpe3RoaXMuZm9sZExpbmU9bnVsbCx0aGlzLnBsYWNlaG9sZGVyPXQsdGhpcy5yYW5nZT1lLHRoaXMuc3RhcnQ9ZS5zdGFydCx0aGlzLmVuZD1lLmVuZCx0aGlzLnNhbWVSb3c9ZS5zdGFydC5yb3c9PWUuZW5kLnJvdyx0aGlzLnN1YkZvbGRzPXRoaXMucmFuZ2VzPVtdfTtpLmluaGVyaXRzKHMsciksZnVuY3Rpb24oKXt0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuJyInK3RoaXMucGxhY2Vob2xkZXIrJyIgJyt0aGlzLnJhbmdlLnRvU3RyaW5nKCl9LHRoaXMuc2V0Rm9sZExpbmU9ZnVuY3Rpb24oZSl7dGhpcy5mb2xkTGluZT1lLHRoaXMuc3ViRm9sZHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnNldEZvbGRMaW5lKGUpfSl9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJhbmdlLmNsb25lKCksdD1uZXcgcyhlLHRoaXMucGxhY2Vob2xkZXIpO3JldHVybiB0aGlzLnN1YkZvbGRzLmZvckVhY2goZnVuY3Rpb24oZSl7dC5zdWJGb2xkcy5wdXNoKGUuY2xvbmUoKSl9KSx0LmNvbGxhcHNlQ2hpbGRyZW49dGhpcy5jb2xsYXBzZUNoaWxkcmVuLHR9LHRoaXMuYWRkU3ViRm9sZD1mdW5jdGlvbihlKXtpZih0aGlzLnJhbmdlLmlzRXF1YWwoZSkpcmV0dXJuO3UoZSx0aGlzLnN0YXJ0KTt2YXIgdD1lLnN0YXJ0LnJvdyxuPWUuc3RhcnQuY29sdW1uO2Zvcih2YXIgcj0wLGk9LTE7cjx0aGlzLnN1YkZvbGRzLmxlbmd0aDtyKyspe2k9dGhpcy5zdWJGb2xkc1tyXS5yYW5nZS5jb21wYXJlKHQsbik7aWYoaSE9MSlicmVha312YXIgcz10aGlzLnN1YkZvbGRzW3JdLG89MDtpZihpPT0wKXtpZihzLnJhbmdlLmNvbnRhaW5zUmFuZ2UoZSkpcmV0dXJuIHMuYWRkU3ViRm9sZChlKTtvPTF9dmFyIHQ9ZS5yYW5nZS5lbmQucm93LG49ZS5yYW5nZS5lbmQuY29sdW1uO2Zvcih2YXIgYT1yLGk9LTE7YTx0aGlzLnN1YkZvbGRzLmxlbmd0aDthKyspe2k9dGhpcy5zdWJGb2xkc1thXS5yYW5nZS5jb21wYXJlKHQsbik7aWYoaSE9MSlicmVha31pPT0wJiZhKys7dmFyIGY9dGhpcy5zdWJGb2xkcy5zcGxpY2UocixhLXIsZSksbD1pPT0wP2YubGVuZ3RoLTE6Zi5sZW5ndGg7Zm9yKHZhciBjPW87YzxsO2MrKyllLmFkZFN1YkZvbGQoZltjXSk7cmV0dXJuIGUuc2V0Rm9sZExpbmUodGhpcy5mb2xkTGluZSksZX0sdGhpcy5yZXN0b3JlUmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSx0aGlzLnN0YXJ0KX19LmNhbGwocy5wcm90b3R5cGUpfSksYWNlLmRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkaW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIiwiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkX2xpbmUiLCJhY2UvZWRpdF9zZXNzaW9uL2ZvbGQiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUoKXt0aGlzLmdldEZvbGRBdD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5nZXRGb2xkTGluZShlKTtpZighcilyZXR1cm4gbnVsbDt2YXIgaT1yLmZvbGRzO2Zvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgbz1pW3NdLnJhbmdlO2lmKG8uY29udGFpbnMoZSx0KSl7aWYobj09MSYmby5pc0VuZChlLHQpJiYhby5pc0VtcHR5KCkpY29udGludWU7aWYobj09LTEmJm8uaXNTdGFydChlLHQpJiYhby5pc0VtcHR5KCkpY29udGludWU7cmV0dXJuIGlbc119fX0sdGhpcy5nZXRGb2xkc0luUmFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGFydCxuPWUuZW5kLHI9dGhpcy4kZm9sZERhdGEsaT1bXTt0LmNvbHVtbis9MSxuLmNvbHVtbi09MTtmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIG89cltzXS5yYW5nZS5jb21wYXJlUmFuZ2UoZSk7aWYobz09Miljb250aW51ZTtpZihvPT0tMilicmVhazt2YXIgdT1yW3NdLmZvbGRzO2Zvcih2YXIgYT0wO2E8dS5sZW5ndGg7YSsrKXt2YXIgZj11W2FdO289Zi5yYW5nZS5jb21wYXJlUmFuZ2UoZSk7aWYobz09LTIpYnJlYWs7aWYobz09Miljb250aW51ZTtpZihvPT00MilicmVhaztpLnB1c2goZil9fXJldHVybiB0LmNvbHVtbi09MSxuLmNvbHVtbis9MSxpfSx0aGlzLmdldEZvbGRzSW5SYW5nZUxpc3Q9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIHQ9W107ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Q9dC5jb25jYXQodGhpcy5nZXRGb2xkc0luUmFuZ2UoZSkpfSx0aGlzKX1lbHNlIHZhciB0PXRoaXMuZ2V0Rm9sZHNJblJhbmdlKGUpO3JldHVybiB0fSx0aGlzLmdldEFsbEZvbGRzPWZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLiRmb2xkRGF0YTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylmb3IodmFyIHI9MDtyPHRbbl0uZm9sZHMubGVuZ3RoO3IrKyllLnB1c2godFtuXS5mb2xkc1tyXSk7cmV0dXJuIGV9LHRoaXMuZ2V0Rm9sZFN0cmluZ0F0PWZ1bmN0aW9uKGUsdCxuLHIpe3I9cnx8dGhpcy5nZXRGb2xkTGluZShlKTtpZighcilyZXR1cm4gbnVsbDt2YXIgaT17ZW5kOntjb2x1bW46MH19LHMsbztmb3IodmFyIHU9MDt1PHIuZm9sZHMubGVuZ3RoO3UrKyl7bz1yLmZvbGRzW3VdO3ZhciBhPW8ucmFuZ2UuY29tcGFyZUVuZChlLHQpO2lmKGE9PS0xKXtzPXRoaXMuZ2V0TGluZShvLnN0YXJ0LnJvdykuc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixvLnN0YXJ0LmNvbHVtbik7YnJlYWt9aWYoYT09PTApcmV0dXJuIG51bGw7aT1vfXJldHVybiBzfHwocz10aGlzLmdldExpbmUoby5zdGFydC5yb3cpLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4pKSxuPT0tMT9zLnN1YnN0cmluZygwLHQtaS5lbmQuY29sdW1uKTpuPT0xP3Muc3Vic3RyaW5nKHQtaS5lbmQuY29sdW1uKTpzfSx0aGlzLmdldEZvbGRMaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kZm9sZERhdGEscj0wO3QmJihyPW4uaW5kZXhPZih0KSkscj09LTEmJihyPTApO2ZvcihyO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1uW3JdO2lmKGkuc3RhcnQucm93PD1lJiZpLmVuZC5yb3c+PWUpcmV0dXJuIGk7aWYoaS5lbmQucm93PmUpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9LHRoaXMuZ2V0TmV4dEZvbGRMaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kZm9sZERhdGEscj0wO3QmJihyPW4uaW5kZXhPZih0KSkscj09LTEmJihyPTApO2ZvcihyO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1uW3JdO2lmKGkuZW5kLnJvdz49ZSlyZXR1cm4gaX1yZXR1cm4gbnVsbH0sdGhpcy5nZXRGb2xkZWRSb3dDb3VudD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJGZvbGREYXRhLHI9dC1lKzE7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBzPW5baV0sbz1zLmVuZC5yb3csdT1zLnN0YXJ0LnJvdztpZihvPj10KXt1PHQmJih1Pj1lP3ItPXQtdTpyPTApO2JyZWFrfW8+PWUmJih1Pj1lP3ItPW8tdTpyLT1vLWUrMSl9cmV0dXJuIHJ9LHRoaXMuJGFkZEZvbGRMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRmb2xkRGF0YS5wdXNoKGUpLHRoaXMuJGZvbGREYXRhLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdGFydC5yb3ctdC5zdGFydC5yb3d9KSxlfSx0aGlzLmFkZEZvbGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRmb2xkRGF0YSxyPSExLG87ZSBpbnN0YW5jZW9mIHM/bz1lOihvPW5ldyBzKHQsZSksby5jb2xsYXBzZUNoaWxkcmVuPXQuY29sbGFwc2VDaGlsZHJlbiksdGhpcy4kY2xpcFJhbmdlVG9Eb2N1bWVudChvLnJhbmdlKTt2YXIgdT1vLnN0YXJ0LnJvdyxhPW8uc3RhcnQuY29sdW1uLGY9by5lbmQucm93LGw9by5lbmQuY29sdW1uLGM9dGhpcy5nZXRGb2xkQXQodSxhLDEpLGg9dGhpcy5nZXRGb2xkQXQoZixsLC0xKTtpZihjJiZoPT1jKXJldHVybiBjLmFkZFN1YkZvbGQobyk7YyYmIWMucmFuZ2UuaXNTdGFydCh1LGEpJiZ0aGlzLnJlbW92ZUZvbGQoYyksaCYmIWgucmFuZ2UuaXNFbmQoZixsKSYmdGhpcy5yZW1vdmVGb2xkKGgpO3ZhciBwPXRoaXMuZ2V0Rm9sZHNJblJhbmdlKG8ucmFuZ2UpO3AubGVuZ3RoPjAmJih0aGlzLnJlbW92ZUZvbGRzKHApLHAuZm9yRWFjaChmdW5jdGlvbihlKXtvLmFkZFN1YkZvbGQoZSl9KSk7Zm9yKHZhciBkPTA7ZDxuLmxlbmd0aDtkKyspe3ZhciB2PW5bZF07aWYoZj09di5zdGFydC5yb3cpe3YuYWRkRm9sZChvKSxyPSEwO2JyZWFrfWlmKHU9PXYuZW5kLnJvdyl7di5hZGRGb2xkKG8pLHI9ITA7aWYoIW8uc2FtZVJvdyl7dmFyIG09bltkKzFdO2lmKG0mJm0uc3RhcnQucm93PT1mKXt2Lm1lcmdlKG0pO2JyZWFrfX1icmVha31pZihmPD12LnN0YXJ0LnJvdylicmVha31yZXR1cm4gcnx8KHY9dGhpcy4kYWRkRm9sZExpbmUobmV3IGkodGhpcy4kZm9sZERhdGEsbykpKSx0aGlzLiR1c2VXcmFwTW9kZT90aGlzLiR1cGRhdGVXcmFwRGF0YSh2LnN0YXJ0LnJvdyx2LnN0YXJ0LnJvdyk6dGhpcy4kdXBkYXRlUm93TGVuZ3RoQ2FjaGUodi5zdGFydC5yb3csdi5zdGFydC5yb3cpLHRoaXMuJG1vZGlmaWVkPSEwLHRoaXMuX3NpZ25hbCgiY2hhbmdlRm9sZCIse2RhdGE6byxhY3Rpb246ImFkZCJ9KSxvfSx0aGlzLmFkZEZvbGRzPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzLmFkZEZvbGQoZSl9LHRoaXMpfSx0aGlzLnJlbW92ZUZvbGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mb2xkTGluZSxuPXQuc3RhcnQucm93LHI9dC5lbmQucm93LGk9dGhpcy4kZm9sZERhdGEscz10LmZvbGRzO2lmKHMubGVuZ3RoPT0xKWkuc3BsaWNlKGkuaW5kZXhPZih0KSwxKTtlbHNlIGlmKHQucmFuZ2UuaXNFbmQoZS5lbmQucm93LGUuZW5kLmNvbHVtbikpcy5wb3AoKSx0LmVuZC5yb3c9c1tzLmxlbmd0aC0xXS5lbmQucm93LHQuZW5kLmNvbHVtbj1zW3MubGVuZ3RoLTFdLmVuZC5jb2x1bW47ZWxzZSBpZih0LnJhbmdlLmlzU3RhcnQoZS5zdGFydC5yb3csZS5zdGFydC5jb2x1bW4pKXMuc2hpZnQoKSx0LnN0YXJ0LnJvdz1zWzBdLnN0YXJ0LnJvdyx0LnN0YXJ0LmNvbHVtbj1zWzBdLnN0YXJ0LmNvbHVtbjtlbHNlIGlmKGUuc2FtZVJvdylzLnNwbGljZShzLmluZGV4T2YoZSksMSk7ZWxzZXt2YXIgbz10LnNwbGl0KGUuc3RhcnQucm93LGUuc3RhcnQuY29sdW1uKTtzPW8uZm9sZHMscy5zaGlmdCgpLG8uc3RhcnQucm93PXNbMF0uc3RhcnQucm93LG8uc3RhcnQuY29sdW1uPXNbMF0uc3RhcnQuY29sdW1ufXRoaXMuJHVwZGF0aW5nfHwodGhpcy4kdXNlV3JhcE1vZGU/dGhpcy4kdXBkYXRlV3JhcERhdGEobixyKTp0aGlzLiR1cGRhdGVSb3dMZW5ndGhDYWNoZShuLHIpKSx0aGlzLiRtb2RpZmllZD0hMCx0aGlzLl9zaWduYWwoImNoYW5nZUZvbGQiLHtkYXRhOmUsYWN0aW9uOiJyZW1vdmUifSl9LHRoaXMucmVtb3ZlRm9sZHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKGVbbl0pO3QuZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzLnJlbW92ZUZvbGQoZSl9LHRoaXMpLHRoaXMuJG1vZGlmaWVkPSEwfSx0aGlzLmV4cGFuZEZvbGQ9ZnVuY3Rpb24oZSl7dGhpcy5yZW1vdmVGb2xkKGUpLGUuc3ViRm9sZHMuZm9yRWFjaChmdW5jdGlvbih0KXtlLnJlc3RvcmVSYW5nZSh0KSx0aGlzLmFkZEZvbGQodCl9LHRoaXMpLGUuY29sbGFwc2VDaGlsZHJlbj4wJiZ0aGlzLmZvbGRBbGwoZS5zdGFydC5yb3crMSxlLmVuZC5yb3csZS5jb2xsYXBzZUNoaWxkcmVuLTEpLGUuc3ViRm9sZHM9W119LHRoaXMuZXhwYW5kRm9sZHM9ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RoaXMuZXhwYW5kRm9sZChlKX0sdGhpcyl9LHRoaXMudW5mb2xkPWZ1bmN0aW9uKGUsdCl7dmFyIG4saTtlPT1udWxsPyhuPW5ldyByKDAsMCx0aGlzLmdldExlbmd0aCgpLDApLHQ9ITApOnR5cGVvZiBlPT0ibnVtYmVyIj9uPW5ldyByKGUsMCxlLHRoaXMuZ2V0TGluZShlKS5sZW5ndGgpOiJyb3ciaW4gZT9uPXIuZnJvbVBvaW50cyhlLGUpOm49ZSxpPXRoaXMuZ2V0Rm9sZHNJblJhbmdlTGlzdChuKTtpZih0KXRoaXMucmVtb3ZlRm9sZHMoaSk7ZWxzZXt2YXIgcz1pO3doaWxlKHMubGVuZ3RoKXRoaXMuZXhwYW5kRm9sZHMocykscz10aGlzLmdldEZvbGRzSW5SYW5nZUxpc3Qobil9aWYoaS5sZW5ndGgpcmV0dXJuIGl9LHRoaXMuaXNSb3dGb2xkZWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIXRoaXMuZ2V0Rm9sZExpbmUoZSx0KX0sdGhpcy5nZXRSb3dGb2xkRW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRGb2xkTGluZShlLHQpO3JldHVybiBuP24uZW5kLnJvdzplfSx0aGlzLmdldFJvd0ZvbGRTdGFydD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0Rm9sZExpbmUoZSx0KTtyZXR1cm4gbj9uLnN0YXJ0LnJvdzplfSx0aGlzLmdldEZvbGREaXNwbGF5TGluZT1mdW5jdGlvbihlLHQsbixyLGkpe3I9PW51bGwmJihyPWUuc3RhcnQucm93KSxpPT1udWxsJiYoaT0wKSx0PT1udWxsJiYodD1lLmVuZC5yb3cpLG49PW51bGwmJihuPXRoaXMuZ2V0TGluZSh0KS5sZW5ndGgpO3ZhciBzPXRoaXMuZG9jLG89IiI7cmV0dXJuIGUud2FsayhmdW5jdGlvbihlLHQsbix1KXtpZih0PHIpcmV0dXJuO2lmKHQ9PXIpe2lmKG48aSlyZXR1cm47dT1NYXRoLm1heChpLHUpfWUhPW51bGw/bys9ZTpvKz1zLmdldExpbmUodCkuc3Vic3RyaW5nKHUsbil9LHQsbiksb30sdGhpcy5nZXREaXNwbGF5TGluZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLmdldEZvbGRMaW5lKGUpO2lmKCFpKXt2YXIgcztyZXR1cm4gcz10aGlzLmRvYy5nZXRMaW5lKGUpLHMuc3Vic3RyaW5nKHJ8fDAsdHx8cy5sZW5ndGgpfXJldHVybiB0aGlzLmdldEZvbGREaXNwbGF5TGluZShpLGUsdCxuLHIpfSx0aGlzLiRjbG9uZUZvbGREYXRhPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIGU9dGhpcy4kZm9sZERhdGEubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZm9sZHMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsb25lKCl9KTtyZXR1cm4gbmV3IGkoZSxuKX0pLGV9LHRoaXMudG9nZ2xlRm9sZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNlbGVjdGlvbixuPXQuZ2V0UmFuZ2UoKSxyLGk7aWYobi5pc0VtcHR5KCkpe3ZhciBzPW4uc3RhcnQ7cj10aGlzLmdldEZvbGRBdChzLnJvdyxzLmNvbHVtbik7aWYocil7dGhpcy5leHBhbmRGb2xkKHIpO3JldHVybn0oaT10aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQocykpP24uY29tcGFyZVBvaW50KGkpPT0xP24uZW5kPWk6KG4uc3RhcnQ9aSxuLnN0YXJ0LmNvbHVtbisrLG4uZW5kLmNvbHVtbi0tKTooaT10aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpzLnJvdyxjb2x1bW46cy5jb2x1bW4rMX0pKT8obi5jb21wYXJlUG9pbnQoaSk9PTE/bi5lbmQ9aTpuLnN0YXJ0PWksbi5zdGFydC5jb2x1bW4rKyk6bj10aGlzLmdldENvbW1lbnRGb2xkUmFuZ2Uocy5yb3cscy5jb2x1bW4pfHxufWVsc2V7dmFyIG89dGhpcy5nZXRGb2xkc0luUmFuZ2Uobik7aWYoZSYmby5sZW5ndGgpe3RoaXMuZXhwYW5kRm9sZHMobyk7cmV0dXJufW8ubGVuZ3RoPT0xJiYocj1vWzBdKX1yfHwocj10aGlzLmdldEZvbGRBdChuLnN0YXJ0LnJvdyxuLnN0YXJ0LmNvbHVtbikpO2lmKHImJnIucmFuZ2UudG9TdHJpbmcoKT09bi50b1N0cmluZygpKXt0aGlzLmV4cGFuZEZvbGQocik7cmV0dXJufXZhciB1PSIuLi4iO2lmKCFuLmlzTXVsdGlMaW5lKCkpe3U9dGhpcy5nZXRUZXh0UmFuZ2Uobik7aWYodS5sZW5ndGg8NClyZXR1cm47dT11LnRyaW0oKS5zdWJzdHJpbmcoMCwyKSsiLi4ifXRoaXMuYWRkRm9sZCh1LG4pfSx0aGlzLmdldENvbW1lbnRGb2xkUmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW5ldyBvKHRoaXMsZSx0KSxzPWkuZ2V0Q3VycmVudFRva2VuKCksdT1zLnR5cGU7aWYocyYmL15jb21tZW50fHN0cmluZy8udGVzdCh1KSl7dT11Lm1hdGNoKC9jb21tZW50fHN0cmluZy8pWzBdLHU9PSJjb21tZW50IiYmKHUrPSJ8ZG9jLXN0YXJ0Iik7dmFyIGE9bmV3IFJlZ0V4cCh1KSxmPW5ldyByO2lmKG4hPTEpe2RvIHM9aS5zdGVwQmFja3dhcmQoKTt3aGlsZShzJiZhLnRlc3Qocy50eXBlKSk7aS5zdGVwRm9yd2FyZCgpfWYuc3RhcnQucm93PWkuZ2V0Q3VycmVudFRva2VuUm93KCksZi5zdGFydC5jb2x1bW49aS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKSsyLGk9bmV3IG8odGhpcyxlLHQpO2lmKG4hPS0xKXt2YXIgbD0tMTtkb3tzPWkuc3RlcEZvcndhcmQoKTtpZihsPT0tMSl7dmFyIGM9dGhpcy5nZXRTdGF0ZShpLiRyb3cpO2EudGVzdChjKXx8KGw9aS4kcm93KX1lbHNlIGlmKGkuJHJvdz5sKWJyZWFrfXdoaWxlKHMmJmEudGVzdChzLnR5cGUpKTtzPWkuc3RlcEJhY2t3YXJkKCl9ZWxzZSBzPWkuZ2V0Q3VycmVudFRva2VuKCk7cmV0dXJuIGYuZW5kLnJvdz1pLmdldEN1cnJlbnRUb2tlblJvdygpLGYuZW5kLmNvbHVtbj1pLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3MudmFsdWUubGVuZ3RoLTIsZn19LHRoaXMuZm9sZEFsbD1mdW5jdGlvbihlLHQsbil7bj09dW5kZWZpbmVkJiYobj0xZTUpO3ZhciByPXRoaXMuZm9sZFdpZGdldHM7aWYoIXIpcmV0dXJuO3Q9dHx8dGhpcy5nZXRMZW5ndGgoKSxlPWV8fDA7Zm9yKHZhciBpPWU7aTx0O2krKyl7cltpXT09bnVsbCYmKHJbaV09dGhpcy5nZXRGb2xkV2lkZ2V0KGkpKTtpZihyW2ldIT0ic3RhcnQiKWNvbnRpbnVlO3ZhciBzPXRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlKGkpO2lmKHMmJnMuaXNNdWx0aUxpbmUoKSYmcy5lbmQucm93PD10JiZzLnN0YXJ0LnJvdz49ZSl7aT1zLmVuZC5yb3c7dHJ5e3ZhciBvPXRoaXMuYWRkRm9sZCgiLi4uIixzKTtvJiYoby5jb2xsYXBzZUNoaWxkcmVuPW4pfWNhdGNoKHUpe319fX0sdGhpcy4kZm9sZFN0eWxlcz17bWFudWFsOjEsbWFya2JlZ2luOjEsbWFya2JlZ2luZW5kOjF9LHRoaXMuJGZvbGRTdHlsZT0ibWFya2JlZ2luIix0aGlzLnNldEZvbGRTdHlsZT1mdW5jdGlvbihlKXtpZighdGhpcy4kZm9sZFN0eWxlc1tlXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9sZCBzdHlsZTogIitlKyJbIitPYmplY3Qua2V5cyh0aGlzLiRmb2xkU3R5bGVzKS5qb2luKCIsICIpKyJdIik7aWYodGhpcy4kZm9sZFN0eWxlPT1lKXJldHVybjt0aGlzLiRmb2xkU3R5bGU9ZSxlPT0ibWFudWFsIiYmdGhpcy51bmZvbGQoKTt2YXIgdD10aGlzLiRmb2xkTW9kZTt0aGlzLiRzZXRGb2xkaW5nKG51bGwpLHRoaXMuJHNldEZvbGRpbmcodCl9LHRoaXMuJHNldEZvbGRpbmc9ZnVuY3Rpb24oZSl7aWYodGhpcy4kZm9sZE1vZGU9PWUpcmV0dXJuO3RoaXMuJGZvbGRNb2RlPWUsdGhpcy5vZmYoImNoYW5nZSIsdGhpcy4kdXBkYXRlRm9sZFdpZGdldHMpLHRoaXMub2ZmKCJ0b2tlbml6ZXJVcGRhdGUiLHRoaXMuJHRva2VuaXplclVwZGF0ZUZvbGRXaWRnZXRzKSx0aGlzLl9zaWduYWwoImNoYW5nZUFubm90YXRpb24iKTtpZighZXx8dGhpcy4kZm9sZFN0eWxlPT0ibWFudWFsIil7dGhpcy5mb2xkV2lkZ2V0cz1udWxsO3JldHVybn10aGlzLmZvbGRXaWRnZXRzPVtdLHRoaXMuZ2V0Rm9sZFdpZGdldD1lLmdldEZvbGRXaWRnZXQuYmluZChlLHRoaXMsdGhpcy4kZm9sZFN0eWxlKSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1lLmdldEZvbGRXaWRnZXRSYW5nZS5iaW5kKGUsdGhpcyx0aGlzLiRmb2xkU3R5bGUpLHRoaXMuJHVwZGF0ZUZvbGRXaWRnZXRzPXRoaXMudXBkYXRlRm9sZFdpZGdldHMuYmluZCh0aGlzKSx0aGlzLiR0b2tlbml6ZXJVcGRhdGVGb2xkV2lkZ2V0cz10aGlzLnRva2VuaXplclVwZGF0ZUZvbGRXaWRnZXRzLmJpbmQodGhpcyksdGhpcy5vbigiY2hhbmdlIix0aGlzLiR1cGRhdGVGb2xkV2lkZ2V0cyksdGhpcy5vbigidG9rZW5pemVyVXBkYXRlIix0aGlzLiR0b2tlbml6ZXJVcGRhdGVGb2xkV2lkZ2V0cyl9LHRoaXMuZ2V0UGFyZW50Rm9sZFJhbmdlRGF0YT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZm9sZFdpZGdldHM7aWYoIW58fHQmJm5bZV0pcmV0dXJue307dmFyIHI9ZS0xLGk7d2hpbGUocj49MCl7dmFyIHM9bltyXTtzPT1udWxsJiYocz1uW3JdPXRoaXMuZ2V0Rm9sZFdpZGdldChyKSk7aWYocz09InN0YXJ0Iil7dmFyIG89dGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2Uocik7aXx8KGk9byk7aWYobyYmby5lbmQucm93Pj1lKWJyZWFrfXItLX1yZXR1cm57cmFuZ2U6ciE9PS0xJiZvLGZpcnN0UmFuZ2U6aX19LHRoaXMub25Gb2xkV2lkZ2V0Q2xpY2s9ZnVuY3Rpb24oZSx0KXt0PXQuZG9tRXZlbnQ7dmFyIG49e2NoaWxkcmVuOnQuc2hpZnRLZXksYWxsOnQuY3RybEtleXx8dC5tZXRhS2V5LHNpYmxpbmdzOnQuYWx0S2V5fSxyPXRoaXMuJHRvZ2dsZUZvbGRXaWRnZXQoZSxuKTtpZighcil7dmFyIGk9dC50YXJnZXR8fHQuc3JjRWxlbWVudDtpJiYvYWNlX2ZvbGQtd2lkZ2V0Ly50ZXN0KGkuY2xhc3NOYW1lKSYmKGkuY2xhc3NOYW1lKz0iIGFjZV9pbnZhbGlkIil9fSx0aGlzLiR0b2dnbGVGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuZ2V0Rm9sZFdpZGdldClyZXR1cm47dmFyIG49dGhpcy5nZXRGb2xkV2lkZ2V0KGUpLHI9dGhpcy5nZXRMaW5lKGUpLGk9bj09PSJlbmQiPy0xOjEscz10aGlzLmdldEZvbGRBdChlLGk9PT0tMT8wOnIubGVuZ3RoLGkpO2lmKHMpcmV0dXJuIHQuY2hpbGRyZW58fHQuYWxsP3RoaXMucmVtb3ZlRm9sZChzKTp0aGlzLmV4cGFuZEZvbGQocyksczt2YXIgbz10aGlzLmdldEZvbGRXaWRnZXRSYW5nZShlLCEwKTtpZihvJiYhby5pc011bHRpTGluZSgpKXtzPXRoaXMuZ2V0Rm9sZEF0KG8uc3RhcnQucm93LG8uc3RhcnQuY29sdW1uLDEpO2lmKHMmJm8uaXNFcXVhbChzLnJhbmdlKSlyZXR1cm4gdGhpcy5yZW1vdmVGb2xkKHMpLHN9aWYodC5zaWJsaW5ncyl7dmFyIHU9dGhpcy5nZXRQYXJlbnRGb2xkUmFuZ2VEYXRhKGUpO2lmKHUucmFuZ2UpdmFyIGE9dS5yYW5nZS5zdGFydC5yb3crMSxmPXUucmFuZ2UuZW5kLnJvdzt0aGlzLmZvbGRBbGwoYSxmLHQuYWxsPzFlNDowKX1lbHNlIHQuY2hpbGRyZW4/KGY9bz9vLmVuZC5yb3c6dGhpcy5nZXRMZW5ndGgoKSx0aGlzLmZvbGRBbGwoZSsxLGYsdC5hbGw/MWU0OjApKTpvJiYodC5hbGwmJihvLmNvbGxhcHNlQ2hpbGRyZW49MWU0KSx0aGlzLmFkZEZvbGQoIi4uLiIsbykpO3JldHVybiBvfSx0aGlzLnRvZ2dsZUZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZWxlY3Rpb24uZ2V0Q3Vyc29yKCkucm93O3Q9dGhpcy5nZXRSb3dGb2xkU3RhcnQodCk7dmFyIG49dGhpcy4kdG9nZ2xlRm9sZFdpZGdldCh0LHt9KTtpZihuKXJldHVybjt2YXIgcj10aGlzLmdldFBhcmVudEZvbGRSYW5nZURhdGEodCwhMCk7bj1yLnJhbmdlfHxyLmZpcnN0UmFuZ2U7aWYobil7dD1uLnN0YXJ0LnJvdzt2YXIgaT10aGlzLmdldEZvbGRBdCh0LHRoaXMuZ2V0TGluZSh0KS5sZW5ndGgsMSk7aT90aGlzLnJlbW92ZUZvbGQoaSk6dGhpcy5hZGRGb2xkKCIuLi4iLG4pfX0sdGhpcy51cGRhdGVGb2xkV2lkZ2V0cz1mdW5jdGlvbihlKXt2YXIgdD1lLnN0YXJ0LnJvdyxuPWUuZW5kLnJvdy10O2lmKG49PT0wKXRoaXMuZm9sZFdpZGdldHNbdF09bnVsbDtlbHNlIGlmKGUuYWN0aW9uPT0icmVtb3ZlIil0aGlzLmZvbGRXaWRnZXRzLnNwbGljZSh0LG4rMSxudWxsKTtlbHNle3ZhciByPUFycmF5KG4rMSk7ci51bnNoaWZ0KHQsMSksdGhpcy5mb2xkV2lkZ2V0cy5zcGxpY2UuYXBwbHkodGhpcy5mb2xkV2lkZ2V0cyxyKX19LHRoaXMudG9rZW5pemVyVXBkYXRlRm9sZFdpZGdldHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO3QuZmlyc3QhPXQubGFzdCYmdGhpcy5mb2xkV2lkZ2V0cy5sZW5ndGg+dC5maXJzdCYmdGhpcy5mb2xkV2lkZ2V0cy5zcGxpY2UodC5maXJzdCx0aGlzLmZvbGRXaWRnZXRzLmxlbmd0aCl9fXZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1lKCIuL2ZvbGRfbGluZSIpLkZvbGRMaW5lLHM9ZSgiLi9mb2xkIikuRm9sZCxvPWUoIi4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcjt0LkZvbGRpbmc9dX0pLGFjZS5kZWZpbmUoImFjZS9lZGl0X3Nlc3Npb24vYnJhY2tldF9tYXRjaCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS90b2tlbl9pdGVyYXRvciIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcygpe3RoaXMuZmluZE1hdGNoaW5nQnJhY2tldD1mdW5jdGlvbihlLHQpe2lmKGUuY29sdW1uPT0wKXJldHVybiBudWxsO3ZhciBuPXR8fHRoaXMuZ2V0TGluZShlLnJvdykuY2hhckF0KGUuY29sdW1uLTEpO2lmKG49PSIiKXJldHVybiBudWxsO3ZhciByPW4ubWF0Y2goLyhbXChcW1x7XSl8KFtcKVxdXH1dKS8pO3JldHVybiByP3JbMV0/dGhpcy4kZmluZENsb3NpbmdCcmFja2V0KHJbMV0sZSk6dGhpcy4kZmluZE9wZW5pbmdCcmFja2V0KHJbMl0sZSk6bnVsbH0sdGhpcy5nZXRCcmFja2V0UmFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lKGUucm93KSxuPSEwLHIscz10LmNoYXJBdChlLmNvbHVtbi0xKSxvPXMmJnMubWF0Y2goLyhbXChcW1x7XSl8KFtcKVxdXH1dKS8pO298fChzPXQuY2hhckF0KGUuY29sdW1uKSxlPXtyb3c6ZS5yb3csY29sdW1uOmUuY29sdW1uKzF9LG89cyYmcy5tYXRjaCgvKFtcKFxbXHtdKXwoW1wpXF1cfV0pLyksbj0hMSk7aWYoIW8pcmV0dXJuIG51bGw7aWYob1sxXSl7dmFyIHU9dGhpcy4kZmluZENsb3NpbmdCcmFja2V0KG9bMV0sZSk7aWYoIXUpcmV0dXJuIG51bGw7cj1pLmZyb21Qb2ludHMoZSx1KSxufHwoci5lbmQuY29sdW1uKyssci5zdGFydC5jb2x1bW4tLSksci5jdXJzb3I9ci5lbmR9ZWxzZXt2YXIgdT10aGlzLiRmaW5kT3BlbmluZ0JyYWNrZXQob1syXSxlKTtpZighdSlyZXR1cm4gbnVsbDtyPWkuZnJvbVBvaW50cyh1LGUpLG58fChyLnN0YXJ0LmNvbHVtbisrLHIuZW5kLmNvbHVtbi0tKSxyLmN1cnNvcj1yLnN0YXJ0fXJldHVybiByfSx0aGlzLiRicmFja2V0cz17IikiOiIoIiwiKCI6IikiLCJdIjoiWyIsIlsiOiJdIiwieyI6In0iLCJ9IjoieyIsIjwiOiI+IiwiPiI6IjwifSx0aGlzLiRmaW5kT3BlbmluZ0JyYWNrZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXMuJGJyYWNrZXRzW2VdLHM9MSxvPW5ldyByKHRoaXMsdC5yb3csdC5jb2x1bW4pLHU9by5nZXRDdXJyZW50VG9rZW4oKTt1fHwodT1vLnN0ZXBGb3J3YXJkKCkpO2lmKCF1KXJldHVybjtufHwobj1uZXcgUmVnRXhwKCIoXFwuPyIrdS50eXBlLnJlcGxhY2UoIi4iLCJcXC4iKS5yZXBsYWNlKCJycGFyZW4iLCIucGFyZW4iKS5yZXBsYWNlKC9cYig/OmVuZClcYi8sIig/OnN0YXJ0fGJlZ2lufGVuZCkiKSsiKSsiKSk7dmFyIGE9dC5jb2x1bW4tby5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKS0yLGY9dS52YWx1ZTtmb3IoOzspe3doaWxlKGE+PTApe3ZhciBsPWYuY2hhckF0KGEpO2lmKGw9PWkpe3MtPTE7aWYocz09MClyZXR1cm57cm93Om8uZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmErby5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX19ZWxzZSBsPT1lJiYocys9MSk7YS09MX1kbyB1PW8uc3RlcEJhY2t3YXJkKCk7d2hpbGUodSYmIW4udGVzdCh1LnR5cGUpKTtpZih1PT1udWxsKWJyZWFrO2Y9dS52YWx1ZSxhPWYubGVuZ3RoLTF9cmV0dXJuIG51bGx9LHRoaXMuJGZpbmRDbG9zaW5nQnJhY2tldD1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcy4kYnJhY2tldHNbZV0scz0xLG89bmV3IHIodGhpcyx0LnJvdyx0LmNvbHVtbiksdT1vLmdldEN1cnJlbnRUb2tlbigpO3V8fCh1PW8uc3RlcEZvcndhcmQoKSk7aWYoIXUpcmV0dXJuO258fChuPW5ldyBSZWdFeHAoIihcXC4/Iit1LnR5cGUucmVwbGFjZSgiLiIsIlxcLiIpLnJlcGxhY2UoImxwYXJlbiIsIi5wYXJlbiIpLnJlcGxhY2UoL1xiKD86c3RhcnR8YmVnaW4pXGIvLCIoPzpzdGFydHxiZWdpbnxlbmQpIikrIikrIikpO3ZhciBhPXQuY29sdW1uLW8uZ2V0Q3VycmVudFRva2VuQ29sdW1uKCk7Zm9yKDs7KXt2YXIgZj11LnZhbHVlLGw9Zi5sZW5ndGg7d2hpbGUoYTxsKXt2YXIgYz1mLmNoYXJBdChhKTtpZihjPT1pKXtzLT0xO2lmKHM9PTApcmV0dXJue3JvdzpvLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphK28uZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9fWVsc2UgYz09ZSYmKHMrPTEpO2ErPTF9ZG8gdT1vLnN0ZXBGb3J3YXJkKCk7d2hpbGUodSYmIW4udGVzdCh1LnR5cGUpKTtpZih1PT1udWxsKWJyZWFrO2E9MH1yZXR1cm4gbnVsbH19dmFyIHI9ZSgiLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGk9ZSgiLi4vcmFuZ2UiKS5SYW5nZTt0LkJyYWNrZXRNYXRjaD1zfSksYWNlLmRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbiIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2JpZGloYW5kbGVyIiwiYWNlL2NvbmZpZyIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9zZWxlY3Rpb24iLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3JhbmdlIiwiYWNlL2RvY3VtZW50IiwiYWNlL2JhY2tncm91bmRfdG9rZW5pemVyIiwiYWNlL3NlYXJjaF9oaWdobGlnaHQiLCJhY2UvZWRpdF9zZXNzaW9uL2ZvbGRpbmciLCJhY2UvZWRpdF9zZXNzaW9uL2JyYWNrZXRfbWF0Y2giXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvbGFuZyIpLHM9ZSgiLi9iaWRpaGFuZGxlciIpLkJpZGlIYW5kbGVyLG89ZSgiLi9jb25maWciKSx1PWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsYT1lKCIuL3NlbGVjdGlvbiIpLlNlbGVjdGlvbixmPWUoIi4vbW9kZS90ZXh0IikuTW9kZSxsPWUoIi4vcmFuZ2UiKS5SYW5nZSxjPWUoIi4vZG9jdW1lbnQiKS5Eb2N1bWVudCxoPWUoIi4vYmFja2dyb3VuZF90b2tlbml6ZXIiKS5CYWNrZ3JvdW5kVG9rZW5pemVyLHA9ZSgiLi9zZWFyY2hfaGlnaGxpZ2h0IikuU2VhcmNoSGlnaGxpZ2h0LGQ9ZnVuY3Rpb24oZSx0KXt0aGlzLiRicmVha3BvaW50cz1bXSx0aGlzLiRkZWNvcmF0aW9ucz1bXSx0aGlzLiRmcm9udE1hcmtlcnM9e30sdGhpcy4kYmFja01hcmtlcnM9e30sdGhpcy4kbWFya2VySWQ9MSx0aGlzLiR1bmRvU2VsZWN0PSEwLHRoaXMuJGZvbGREYXRhPVtdLHRoaXMuaWQ9InNlc3Npb24iKyArK2QuJHVpZCx0aGlzLiRmb2xkRGF0YS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmpvaW4oIlxuIil9LHRoaXMub24oImNoYW5nZUZvbGQiLHRoaXMub25DaGFuZ2VGb2xkLmJpbmQodGhpcykpLHRoaXMuJG9uQ2hhbmdlPXRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtpZih0eXBlb2YgZSE9Im9iamVjdCJ8fCFlLmdldExpbmUpZT1uZXcgYyhlKTt0aGlzLnNldERvY3VtZW50KGUpLHRoaXMuc2VsZWN0aW9uPW5ldyBhKHRoaXMpLHRoaXMuJGJpZGlIYW5kbGVyPW5ldyBzKHRoaXMpLG8ucmVzZXRPcHRpb25zKHRoaXMpLHRoaXMuc2V0TW9kZSh0KSxvLl9zaWduYWwoInNlc3Npb24iLHRoaXMpfTtkLiR1aWQ9MCxmdW5jdGlvbigpe2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGU8NDM1Mj8hMTplPj00MzUyJiZlPD00NDQ3fHxlPj00NTE1JiZlPD00NTE5fHxlPj00NjAyJiZlPD00NjA3fHxlPj05MDAxJiZlPD05MDAyfHxlPj0xMTkwNCYmZTw9MTE5Mjl8fGU+PTExOTMxJiZlPD0xMjAxOXx8ZT49MTIwMzImJmU8PTEyMjQ1fHxlPj0xMjI3MiYmZTw9MTIyODN8fGU+PTEyMjg4JiZlPD0xMjM1MHx8ZT49MTIzNTMmJmU8PTEyNDM4fHxlPj0xMjQ0MSYmZTw9MTI1NDN8fGU+PTEyNTQ5JiZlPD0xMjU4OXx8ZT49MTI1OTMmJmU8PTEyNjg2fHxlPj0xMjY4OCYmZTw9MTI3MzB8fGU+PTEyNzM2JiZlPD0xMjc3MXx8ZT49MTI3ODQmJmU8PTEyODMwfHxlPj0xMjgzMiYmZTw9MTI4NzF8fGU+PTEyODgwJiZlPD0xMzA1NHx8ZT49MTMwNTYmJmU8PTE5OTAzfHxlPj0xOTk2OCYmZTw9NDIxMjR8fGU+PTQyMTI4JiZlPD00MjE4Mnx8ZT49NDMzNjAmJmU8PTQzMzg4fHxlPj00NDAzMiYmZTw9NTUyMDN8fGU+PTU1MjE2JiZlPD01NTIzOHx8ZT49NTUyNDMmJmU8PTU1MjkxfHxlPj02Mzc0NCYmZTw9NjQyNTV8fGU+PTY1MDQwJiZlPD02NTA0OXx8ZT49NjUwNzImJmU8PTY1MTA2fHxlPj02NTEwOCYmZTw9NjUxMjZ8fGU+PTY1MTI4JiZlPD02NTEzMXx8ZT49NjUyODEmJmU8PTY1Mzc2fHxlPj02NTUwNCYmZTw9NjU1MTB9ci5pbXBsZW1lbnQodGhpcyx1KSx0aGlzLnNldERvY3VtZW50PWZ1bmN0aW9uKGUpe3RoaXMuZG9jJiZ0aGlzLmRvYy5yZW1vdmVMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSksdGhpcy5kb2M9ZSxlLm9uKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKSx0aGlzLmJnVG9rZW5pemVyJiZ0aGlzLmJnVG9rZW5pemVyLnNldERvY3VtZW50KHRoaXMuZ2V0RG9jdW1lbnQoKSksdGhpcy5yZXNldENhY2hlcygpfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jfSx0aGlzLiRyZXNldFJvd0NhY2hlPWZ1bmN0aW9uKGUpe2lmKCFlKXt0aGlzLiRkb2NSb3dDYWNoZT1bXSx0aGlzLiRzY3JlZW5Sb3dDYWNoZT1bXTtyZXR1cm59dmFyIHQ9dGhpcy4kZG9jUm93Q2FjaGUubGVuZ3RoLG49dGhpcy4kZ2V0Um93Q2FjaGVJbmRleCh0aGlzLiRkb2NSb3dDYWNoZSxlKSsxO3Q+biYmKHRoaXMuJGRvY1Jvd0NhY2hlLnNwbGljZShuLHQpLHRoaXMuJHNjcmVlblJvd0NhY2hlLnNwbGljZShuLHQpKX0sdGhpcy4kZ2V0Um93Q2FjaGVJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj1lLmxlbmd0aC0xO3doaWxlKG48PXIpe3ZhciBpPW4rcj4+MSxzPWVbaV07aWYodD5zKW49aSsxO2Vsc2V7aWYoISh0PHMpKXJldHVybiBpO3I9aS0xfX1yZXR1cm4gbi0xfSx0aGlzLnJlc2V0Q2FjaGVzPWZ1bmN0aW9uKCl7dGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kd3JhcERhdGE9W10sdGhpcy4kcm93TGVuZ3RoQ2FjaGU9W10sdGhpcy4kcmVzZXRSb3dDYWNoZSgwKSx0aGlzLmJnVG9rZW5pemVyJiZ0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KDApfSx0aGlzLm9uQ2hhbmdlRm9sZD1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGE7dGhpcy4kcmVzZXRSb3dDYWNoZSh0LnN0YXJ0LnJvdyl9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kYmlkaUhhbmRsZXIub25DaGFuZ2UoZSksdGhpcy4kcmVzZXRSb3dDYWNoZShlLnN0YXJ0LnJvdyk7dmFyIHQ9dGhpcy4kdXBkYXRlSW50ZXJuYWxEYXRhT25DaGFuZ2UoZSk7IXRoaXMuJGZyb21VbmRvJiZ0aGlzLiR1bmRvTWFuYWdlciYmKHQmJnQubGVuZ3RoJiYodGhpcy4kdW5kb01hbmFnZXIuYWRkKHthY3Rpb246InJlbW92ZUZvbGRzIixmb2xkczp0fSx0aGlzLm1lcmdlVW5kb0RlbHRhcyksdGhpcy5tZXJnZVVuZG9EZWx0YXM9ITApLHRoaXMuJHVuZG9NYW5hZ2VyLmFkZChlLHRoaXMubWVyZ2VVbmRvRGVsdGFzKSx0aGlzLm1lcmdlVW5kb0RlbHRhcz0hMCx0aGlzLiRpbmZvcm1VbmRvTWFuYWdlci5zY2hlZHVsZSgpKSx0aGlzLmJnVG9rZW5pemVyJiZ0aGlzLmJnVG9rZW5pemVyLiR1cGRhdGVPbkNoYW5nZShlKSx0aGlzLl9zaWduYWwoImNoYW5nZSIsZSl9LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7dGhpcy5kb2Muc2V0VmFsdWUoZSksdGhpcy5zZWxlY3Rpb24ubW92ZVRvKDAsMCksdGhpcy4kcmVzZXRSb3dDYWNoZSgwKSx0aGlzLnNldFVuZG9NYW5hZ2VyKHRoaXMuJHVuZG9NYW5hZ2VyKSx0aGlzLmdldFVuZG9NYW5hZ2VyKCkucmVzZXQoKX0sdGhpcy5nZXRWYWx1ZT10aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jLmdldFZhbHVlKCl9LHRoaXMuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9ufSx0aGlzLmdldFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJnVG9rZW5pemVyLmdldFN0YXRlKGUpfSx0aGlzLmdldFRva2Vucz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iZ1Rva2VuaXplci5nZXRUb2tlbnMoZSl9LHRoaXMuZ2V0VG9rZW5BdD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuYmdUb2tlbml6ZXIuZ2V0VG9rZW5zKGUpLHIsaT0wO2lmKHQ9PW51bGwpe3ZhciBzPW4ubGVuZ3RoLTE7aT10aGlzLmdldExpbmUoZSkubGVuZ3RofWVsc2UgZm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspe2krPW5bc10udmFsdWUubGVuZ3RoO2lmKGk+PXQpYnJlYWt9cmV0dXJuIHI9bltzXSxyPyhyLmluZGV4PXMsci5zdGFydD1pLXIudmFsdWUubGVuZ3RoLHIpOm51bGx9LHRoaXMuc2V0VW5kb01hbmFnZXI9ZnVuY3Rpb24oZSl7dGhpcy4kdW5kb01hbmFnZXI9ZSx0aGlzLiRpbmZvcm1VbmRvTWFuYWdlciYmdGhpcy4kaW5mb3JtVW5kb01hbmFnZXIuY2FuY2VsKCk7aWYoZSl7dmFyIHQ9dGhpcztlLmFkZFNlc3Npb24odGhpcyksdGhpcy4kc3luY0luZm9ybVVuZG9NYW5hZ2VyPWZ1bmN0aW9uKCl7dC4kaW5mb3JtVW5kb01hbmFnZXIuY2FuY2VsKCksdC5tZXJnZVVuZG9EZWx0YXM9ITF9LHRoaXMuJGluZm9ybVVuZG9NYW5hZ2VyPWkuZGVsYXllZENhbGwodGhpcy4kc3luY0luZm9ybVVuZG9NYW5hZ2VyKX1lbHNlIHRoaXMuJHN5bmNJbmZvcm1VbmRvTWFuYWdlcj1mdW5jdGlvbigpe319LHRoaXMubWFya1VuZG9Hcm91cD1mdW5jdGlvbigpe3RoaXMuJHN5bmNJbmZvcm1VbmRvTWFuYWdlciYmdGhpcy4kc3luY0luZm9ybVVuZG9NYW5hZ2VyKCl9LHRoaXMuJGRlZmF1bHRVbmRvTWFuYWdlcj17dW5kbzpmdW5jdGlvbigpe30scmVkbzpmdW5jdGlvbigpe30saGFzVW5kbzpmdW5jdGlvbigpe30saGFzUmVkbzpmdW5jdGlvbigpe30scmVzZXQ6ZnVuY3Rpb24oKXt9LGFkZDpmdW5jdGlvbigpe30sYWRkU2VsZWN0aW9uOmZ1bmN0aW9uKCl7fSxzdGFydE5ld0dyb3VwOmZ1bmN0aW9uKCl7fSxhZGRTZXNzaW9uOmZ1bmN0aW9uKCl7fX0sdGhpcy5nZXRVbmRvTWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR1bmRvTWFuYWdlcnx8dGhpcy4kZGVmYXVsdFVuZG9NYW5hZ2VyfSx0aGlzLmdldFRhYlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFVzZVNvZnRUYWJzKCk/aS5zdHJpbmdSZXBlYXQoIiAiLHRoaXMuZ2V0VGFiU2l6ZSgpKToiCSJ9LHRoaXMuc2V0VXNlU29mdFRhYnM9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oInVzZVNvZnRUYWJzIixlKX0sdGhpcy5nZXRVc2VTb2Z0VGFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR1c2VTb2Z0VGFicyYmIXRoaXMuJG1vZGUuJGluZGVudFdpdGhUYWJzfSx0aGlzLnNldFRhYlNpemU9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oInRhYlNpemUiLGUpfSx0aGlzLmdldFRhYlNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGFiU2l6ZX0sdGhpcy5pc1RhYlN0b3A9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJHVzZVNvZnRUYWJzJiZlLmNvbHVtbiV0aGlzLiR0YWJTaXplPT09MH0sdGhpcy5zZXROYXZpZ2F0ZVdpdGhpblNvZnRUYWJzPWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJuYXZpZ2F0ZVdpdGhpblNvZnRUYWJzIixlKX0sdGhpcy5nZXROYXZpZ2F0ZVdpdGhpblNvZnRUYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG5hdmlnYXRlV2l0aGluU29mdFRhYnN9LHRoaXMuJG92ZXJ3cml0ZT0hMSx0aGlzLnNldE92ZXJ3cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigib3ZlcndyaXRlIixlKX0sdGhpcy5nZXRPdmVyd3JpdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kb3ZlcndyaXRlfSx0aGlzLnRvZ2dsZU92ZXJ3cml0ZT1mdW5jdGlvbigpe3RoaXMuc2V0T3ZlcndyaXRlKCF0aGlzLiRvdmVyd3JpdGUpfSx0aGlzLmFkZEd1dHRlckRlY29yYXRpb249ZnVuY3Rpb24oZSx0KXt0aGlzLiRkZWNvcmF0aW9uc1tlXXx8KHRoaXMuJGRlY29yYXRpb25zW2VdPSIiKSx0aGlzLiRkZWNvcmF0aW9uc1tlXSs9IiAiK3QsdGhpcy5fc2lnbmFsKCJjaGFuZ2VCcmVha3BvaW50Iix7fSl9LHRoaXMucmVtb3ZlR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuJGRlY29yYXRpb25zW2VdPSh0aGlzLiRkZWNvcmF0aW9uc1tlXXx8IiIpLnJlcGxhY2UoIiAiK3QsIiIpLHRoaXMuX3NpZ25hbCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLmdldEJyZWFrcG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGJyZWFrcG9pbnRzfSx0aGlzLnNldEJyZWFrcG9pbnRzPWZ1bmN0aW9uKGUpe3RoaXMuJGJyZWFrcG9pbnRzPVtdO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuJGJyZWFrcG9pbnRzW2VbdF1dPSJhY2VfYnJlYWtwb2ludCI7dGhpcy5fc2lnbmFsKCJjaGFuZ2VCcmVha3BvaW50Iix7fSl9LHRoaXMuY2xlYXJCcmVha3BvaW50cz1mdW5jdGlvbigpe3RoaXMuJGJyZWFrcG9pbnRzPVtdLHRoaXMuX3NpZ25hbCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLnNldEJyZWFrcG9pbnQ9ZnVuY3Rpb24oZSx0KXt0PT09dW5kZWZpbmVkJiYodD0iYWNlX2JyZWFrcG9pbnQiKSx0P3RoaXMuJGJyZWFrcG9pbnRzW2VdPXQ6ZGVsZXRlIHRoaXMuJGJyZWFrcG9pbnRzW2VdLHRoaXMuX3NpZ25hbCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLmNsZWFyQnJlYWtwb2ludD1mdW5jdGlvbihlKXtkZWxldGUgdGhpcy4kYnJlYWtwb2ludHNbZV0sdGhpcy5fc2lnbmFsKCJjaGFuZ2VCcmVha3BvaW50Iix7fSl9LHRoaXMuYWRkTWFya2VyPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuJG1hcmtlcklkKysscz17cmFuZ2U6ZSx0eXBlOm58fCJsaW5lIixyZW5kZXJlcjp0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOm51bGwsY2xheno6dCxpbkZyb250OiEhcixpZDppfTtyZXR1cm4gcj8odGhpcy4kZnJvbnRNYXJrZXJzW2ldPXMsdGhpcy5fc2lnbmFsKCJjaGFuZ2VGcm9udE1hcmtlciIpKToodGhpcy4kYmFja01hcmtlcnNbaV09cyx0aGlzLl9zaWduYWwoImNoYW5nZUJhY2tNYXJrZXIiKSksaX0sdGhpcy5hZGREeW5hbWljTWFya2VyPWZ1bmN0aW9uKGUsdCl7aWYoIWUudXBkYXRlKXJldHVybjt2YXIgbj10aGlzLiRtYXJrZXJJZCsrO3JldHVybiBlLmlkPW4sZS5pbkZyb250PSEhdCx0Pyh0aGlzLiRmcm9udE1hcmtlcnNbbl09ZSx0aGlzLl9zaWduYWwoImNoYW5nZUZyb250TWFya2VyIikpOih0aGlzLiRiYWNrTWFya2Vyc1tuXT1lLHRoaXMuX3NpZ25hbCgiY2hhbmdlQmFja01hcmtlciIpKSxlfSx0aGlzLnJlbW92ZU1hcmtlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLiRmcm9udE1hcmtlcnNbZV18fHRoaXMuJGJhY2tNYXJrZXJzW2VdO2lmKCF0KXJldHVybjt2YXIgbj10LmluRnJvbnQ/dGhpcy4kZnJvbnRNYXJrZXJzOnRoaXMuJGJhY2tNYXJrZXJzO2RlbGV0ZSBuW2VdLHRoaXMuX3NpZ25hbCh0LmluRnJvbnQ/ImNoYW5nZUZyb250TWFya2VyIjoiY2hhbmdlQmFja01hcmtlciIpfSx0aGlzLmdldE1hcmtlcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/dGhpcy4kZnJvbnRNYXJrZXJzOnRoaXMuJGJhY2tNYXJrZXJzfSx0aGlzLmhpZ2hsaWdodD1mdW5jdGlvbihlKXtpZighdGhpcy4kc2VhcmNoSGlnaGxpZ2h0KXt2YXIgdD1uZXcgcChudWxsLCJhY2Vfc2VsZWN0ZWQtd29yZCIsInRleHQiKTt0aGlzLiRzZWFyY2hIaWdobGlnaHQ9dGhpcy5hZGREeW5hbWljTWFya2VyKHQpfXRoaXMuJHNlYXJjaEhpZ2hsaWdodC5zZXRSZWdleHAoZSl9LHRoaXMuaGlnaGxpZ2h0TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dHlwZW9mIHQhPSJudW1iZXIiJiYobj10LHQ9ZSksbnx8KG49ImFjZV9zdGVwIik7dmFyIGk9bmV3IGwoZSwwLHQsSW5maW5pdHkpO3JldHVybiBpLmlkPXRoaXMuYWRkTWFya2VyKGksbiwiZnVsbExpbmUiLHIpLGl9LHRoaXMuc2V0QW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7dGhpcy4kYW5ub3RhdGlvbnM9ZSx0aGlzLl9zaWduYWwoImNoYW5nZUFubm90YXRpb24iLHt9KX0sdGhpcy5nZXRBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhbm5vdGF0aW9uc3x8W119LHRoaXMuY2xlYXJBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3RoaXMuc2V0QW5ub3RhdGlvbnMoW10pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14uKj8oXHI/XG4pL20pO3Q/dGhpcy4kYXV0b05ld0xpbmU9dFsxXTp0aGlzLiRhdXRvTmV3TGluZT0iXG4ifSx0aGlzLmdldFdvcmRSYW5nZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0TGluZShlKSxyPSExO3Q+MCYmKHI9ISFuLmNoYXJBdCh0LTEpLm1hdGNoKHRoaXMudG9rZW5SZSkpLHJ8fChyPSEhbi5jaGFyQXQodCkubWF0Y2godGhpcy50b2tlblJlKSk7aWYocil2YXIgaT10aGlzLnRva2VuUmU7ZWxzZSBpZigvXlxzKyQvLnRlc3Qobi5zbGljZSh0LTEsdCsxKSkpdmFyIGk9L1xzLztlbHNlIHZhciBpPXRoaXMubm9uVG9rZW5SZTt2YXIgcz10O2lmKHM+MCl7ZG8gcy0tO3doaWxlKHM+PTAmJm4uY2hhckF0KHMpLm1hdGNoKGkpKTtzKyt9dmFyIG89dDt3aGlsZShvPG4ubGVuZ3RoJiZuLmNoYXJBdChvKS5tYXRjaChpKSlvKys7cmV0dXJuIG5ldyBsKGUscyxlLG8pfSx0aGlzLmdldEFXb3JkUmFuZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldFdvcmRSYW5nZShlLHQpLHI9dGhpcy5nZXRMaW5lKG4uZW5kLnJvdyk7d2hpbGUoci5jaGFyQXQobi5lbmQuY29sdW1uKS5tYXRjaCgvWyBcdF0vKSluLmVuZC5jb2x1bW4rPTE7cmV0dXJuIG59LHRoaXMuc2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oZSl7dGhpcy5kb2Muc2V0TmV3TGluZU1vZGUoZSl9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2MuZ2V0TmV3TGluZU1vZGUoKX0sdGhpcy5zZXRVc2VXb3JrZXI9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oInVzZVdvcmtlciIsZSl9LHRoaXMuZ2V0VXNlV29ya2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHVzZVdvcmtlcn0sdGhpcy5vblJlbG9hZFRva2VuaXplcj1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGE7dGhpcy5iZ1Rva2VuaXplci5zdGFydCh0LmZpcnN0KSx0aGlzLl9zaWduYWwoInRva2VuaXplclVwZGF0ZSIsZSl9LHRoaXMuJG1vZGVzPW8uJG1vZGVzLHRoaXMuJG1vZGU9bnVsbCx0aGlzLiRtb2RlSWQ9bnVsbCx0aGlzLnNldE1vZGU9ZnVuY3Rpb24oZSx0KXtpZihlJiZ0eXBlb2YgZT09Im9iamVjdCIpe2lmKGUuZ2V0VG9rZW5pemVyKXJldHVybiB0aGlzLiRvbkNoYW5nZU1vZGUoZSk7dmFyIG49ZSxyPW4ucGF0aH1lbHNlIHI9ZXx8ImFjZS9tb2RlL3RleHQiO3RoaXMuJG1vZGVzWyJhY2UvbW9kZS90ZXh0Il18fCh0aGlzLiRtb2Rlc1siYWNlL21vZGUvdGV4dCJdPW5ldyBmKTtpZih0aGlzLiRtb2Rlc1tyXSYmIW4pe3RoaXMuJG9uQ2hhbmdlTW9kZSh0aGlzLiRtb2Rlc1tyXSksdCYmdCgpO3JldHVybn10aGlzLiRtb2RlSWQ9cixvLmxvYWRNb2R1bGUoWyJtb2RlIixyXSxmdW5jdGlvbihlKXtpZih0aGlzLiRtb2RlSWQhPT1yKXJldHVybiB0JiZ0KCk7dGhpcy4kbW9kZXNbcl0mJiFuP3RoaXMuJG9uQ2hhbmdlTW9kZSh0aGlzLiRtb2Rlc1tyXSk6ZSYmZS5Nb2RlJiYoZT1uZXcgZS5Nb2RlKG4pLG58fCh0aGlzLiRtb2Rlc1tyXT1lLGUuJGlkPXIpLHRoaXMuJG9uQ2hhbmdlTW9kZShlKSksdCYmdCgpfS5iaW5kKHRoaXMpKSx0aGlzLiRtb2RlfHx0aGlzLiRvbkNoYW5nZU1vZGUodGhpcy4kbW9kZXNbImFjZS9tb2RlL3RleHQiXSwhMCl9LHRoaXMuJG9uQ2hhbmdlTW9kZT1mdW5jdGlvbihlLHQpe3R8fCh0aGlzLiRtb2RlSWQ9ZS4kaWQpO2lmKHRoaXMuJG1vZGU9PT1lKXJldHVybjt0aGlzLiRtb2RlPWUsdGhpcy4kc3RvcFdvcmtlcigpLHRoaXMuJHVzZVdvcmtlciYmdGhpcy4kc3RhcnRXb3JrZXIoKTt2YXIgbj1lLmdldFRva2VuaXplcigpO2lmKG4uYWRkRXZlbnRMaXN0ZW5lciE9PXVuZGVmaW5lZCl7dmFyIHI9dGhpcy5vblJlbG9hZFRva2VuaXplci5iaW5kKHRoaXMpO24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlIixyKX1pZighdGhpcy5iZ1Rva2VuaXplcil7dGhpcy5iZ1Rva2VuaXplcj1uZXcgaChuKTt2YXIgaT10aGlzO3RoaXMuYmdUb2tlbml6ZXIuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlIixmdW5jdGlvbihlKXtpLl9zaWduYWwoInRva2VuaXplclVwZGF0ZSIsZSl9KX1lbHNlIHRoaXMuYmdUb2tlbml6ZXIuc2V0VG9rZW5pemVyKG4pO3RoaXMuYmdUb2tlbml6ZXIuc2V0RG9jdW1lbnQodGhpcy5nZXREb2N1bWVudCgpKSx0aGlzLnRva2VuUmU9ZS50b2tlblJlLHRoaXMubm9uVG9rZW5SZT1lLm5vblRva2VuUmUsdHx8KGUuYXR0YWNoVG9TZXNzaW9uJiZlLmF0dGFjaFRvU2Vzc2lvbih0aGlzKSx0aGlzLiRvcHRpb25zLndyYXBNZXRob2Quc2V0LmNhbGwodGhpcyx0aGlzLiR3cmFwTWV0aG9kKSx0aGlzLiRzZXRGb2xkaW5nKGUuZm9sZGluZ1J1bGVzKSx0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KDApLHRoaXMuX2VtaXQoImNoYW5nZU1vZGUiKSl9LHRoaXMuJHN0b3BXb3JrZXI9ZnVuY3Rpb24oKXt0aGlzLiR3b3JrZXImJih0aGlzLiR3b3JrZXIudGVybWluYXRlKCksdGhpcy4kd29ya2VyPW51bGwpfSx0aGlzLiRzdGFydFdvcmtlcj1mdW5jdGlvbigpe3RyeXt0aGlzLiR3b3JrZXI9dGhpcy4kbW9kZS5jcmVhdGVXb3JrZXIodGhpcyl9Y2F0Y2goZSl7by53YXJuKCJDb3VsZCBub3QgbG9hZCB3b3JrZXIiLGUpLHRoaXMuJHdvcmtlcj1udWxsfX0sdGhpcy5nZXRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG1vZGV9LHRoaXMuJHNjcm9sbFRvcD0wLHRoaXMuc2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJHNjcm9sbFRvcD09PWV8fGlzTmFOKGUpKXJldHVybjt0aGlzLiRzY3JvbGxUb3A9ZSx0aGlzLl9zaWduYWwoImNoYW5nZVNjcm9sbFRvcCIsZSl9LHRoaXMuZ2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNjcm9sbFRvcH0sdGhpcy4kc2Nyb2xsTGVmdD0wLHRoaXMuc2V0U2Nyb2xsTGVmdD1mdW5jdGlvbihlKXtpZih0aGlzLiRzY3JvbGxMZWZ0PT09ZXx8aXNOYU4oZSkpcmV0dXJuO3RoaXMuJHNjcm9sbExlZnQ9ZSx0aGlzLl9zaWduYWwoImNoYW5nZVNjcm9sbExlZnQiLGUpfSx0aGlzLmdldFNjcm9sbExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsTGVmdH0sdGhpcy5nZXRTY3JlZW5XaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjb21wdXRlV2lkdGgoKSx0aGlzLmxpbmVXaWRnZXRzP01hdGgubWF4KHRoaXMuZ2V0TGluZVdpZGdldE1heFdpZHRoKCksdGhpcy5zY3JlZW5XaWR0aCk6dGhpcy5zY3JlZW5XaWR0aH0sdGhpcy5nZXRMaW5lV2lkZ2V0TWF4V2lkdGg9ZnVuY3Rpb24oKXtpZih0aGlzLmxpbmVXaWRnZXRzV2lkdGghPW51bGwpcmV0dXJuIHRoaXMubGluZVdpZGdldHNXaWR0aDt2YXIgZT0wO3JldHVybiB0aGlzLmxpbmVXaWRnZXRzLmZvckVhY2goZnVuY3Rpb24odCl7dCYmdC5zY3JlZW5XaWR0aD5lJiYoZT10LnNjcmVlbldpZHRoKX0pLHRoaXMubGluZVdpZGdldFdpZHRoPWV9LHRoaXMuJGNvbXB1dGVXaWR0aD1mdW5jdGlvbihlKXtpZih0aGlzLiRtb2RpZmllZHx8ZSl7dGhpcy4kbW9kaWZpZWQ9ITE7aWYodGhpcy4kdXNlV3JhcE1vZGUpcmV0dXJuIHRoaXMuc2NyZWVuV2lkdGg9dGhpcy4kd3JhcExpbWl0O3ZhciB0PXRoaXMuZG9jLmdldEFsbExpbmVzKCksbj10aGlzLiRyb3dMZW5ndGhDYWNoZSxyPTAsaT0wLHM9dGhpcy4kZm9sZERhdGFbaV0sbz1zP3Muc3RhcnQucm93OkluZmluaXR5LHU9dC5sZW5ndGg7Zm9yKHZhciBhPTA7YTx1O2ErKyl7aWYoYT5vKXthPXMuZW5kLnJvdysxO2lmKGE+PXUpYnJlYWs7cz10aGlzLiRmb2xkRGF0YVtpKytdLG89cz9zLnN0YXJ0LnJvdzpJbmZpbml0eX1uW2FdPT1udWxsJiYoblthXT10aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aCh0W2FdKVswXSksblthXT5yJiYocj1uW2FdKX10aGlzLnNjcmVlbldpZHRoPXJ9fSx0aGlzLmdldExpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9jLmdldExpbmUoZSl9LHRoaXMuZ2V0TGluZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5kb2MuZ2V0TGluZXMoZSx0KX0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2MuZ2V0TGVuZ3RoKCl9LHRoaXMuZ2V0VGV4dFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRvYy5nZXRUZXh0UmFuZ2UoZXx8dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSl9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZG9jLmluc2VydChlLHQpfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2MucmVtb3ZlKGUpfSx0aGlzLnJlbW92ZUZ1bGxMaW5lcz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmRvYy5yZW1vdmVGdWxsTGluZXMoZSx0KX0sdGhpcy51bmRvQ2hhbmdlcz1mdW5jdGlvbihlLHQpe2lmKCFlLmxlbmd0aClyZXR1cm47dGhpcy4kZnJvbVVuZG89ITA7Zm9yKHZhciBuPWUubGVuZ3RoLTE7biE9LTE7bi0tKXt2YXIgcj1lW25dO3IuYWN0aW9uPT0iaW5zZXJ0Inx8ci5hY3Rpb249PSJyZW1vdmUiP3RoaXMuZG9jLnJldmVydERlbHRhKHIpOnIuZm9sZHMmJnRoaXMuYWRkRm9sZHMoci5mb2xkcyl9IXQmJnRoaXMuJHVuZG9TZWxlY3QmJihlLnNlbGVjdGlvbkJlZm9yZT90aGlzLnNlbGVjdGlvbi5mcm9tSlNPTihlLnNlbGVjdGlvbkJlZm9yZSk6dGhpcy5zZWxlY3Rpb24uc2V0UmFuZ2UodGhpcy4kZ2V0VW5kb1NlbGVjdGlvbihlLCEwKSkpLHRoaXMuJGZyb21VbmRvPSExfSx0aGlzLnJlZG9DaGFuZ2VzPWZ1bmN0aW9uKGUsdCl7aWYoIWUubGVuZ3RoKXJldHVybjt0aGlzLiRmcm9tVW5kbz0hMDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTsoci5hY3Rpb249PSJpbnNlcnQifHxyLmFjdGlvbj09InJlbW92ZSIpJiZ0aGlzLmRvYy5hcHBseURlbHRhKHIpfSF0JiZ0aGlzLiR1bmRvU2VsZWN0JiYoZS5zZWxlY3Rpb25BZnRlcj90aGlzLnNlbGVjdGlvbi5mcm9tSlNPTihlLnNlbGVjdGlvbkFmdGVyKTp0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZSh0aGlzLiRnZXRVbmRvU2VsZWN0aW9uKGUsITEpKSksdGhpcy4kZnJvbVVuZG89ITF9LHRoaXMuc2V0VW5kb1NlbGVjdD1mdW5jdGlvbihlKXt0aGlzLiR1bmRvU2VsZWN0PWV9LHRoaXMuJGdldFVuZG9TZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybiB0P2UuYWN0aW9uIT09Imluc2VydCI6ZS5hY3Rpb249PT0iaW5zZXJ0In12YXIgcixpLHM7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciB1PWVbb107aWYoIXUuc3RhcnQpY29udGludWU7aWYoIXIpe24odSk/KHI9bC5mcm9tUG9pbnRzKHUuc3RhcnQsdS5lbmQpLHM9ITApOihyPWwuZnJvbVBvaW50cyh1LnN0YXJ0LHUuc3RhcnQpLHM9ITEpO2NvbnRpbnVlfW4odSk/KGk9dS5zdGFydCxyLmNvbXBhcmUoaS5yb3csaS5jb2x1bW4pPT0tMSYmci5zZXRTdGFydChpKSxpPXUuZW5kLHIuY29tcGFyZShpLnJvdyxpLmNvbHVtbik9PTEmJnIuc2V0RW5kKGkpLHM9ITApOihpPXUuc3RhcnQsci5jb21wYXJlKGkucm93LGkuY29sdW1uKT09LTEmJihyPWwuZnJvbVBvaW50cyh1LnN0YXJ0LHUuc3RhcnQpKSxzPSExKX1yZXR1cm4gcn0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZG9jLnJlcGxhY2UoZSx0KX0sdGhpcy5tb3ZlVGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5nZXRUZXh0UmFuZ2UoZSksaT10aGlzLmdldEZvbGRzSW5SYW5nZShlKSxzPWwuZnJvbVBvaW50cyh0LHQpO2lmKCFuKXt0aGlzLnJlbW92ZShlKTt2YXIgbz1lLnN0YXJ0LnJvdy1lLmVuZC5yb3csdT1vPy1lLmVuZC5jb2x1bW46ZS5zdGFydC5jb2x1bW4tZS5lbmQuY29sdW1uO3UmJihzLnN0YXJ0LnJvdz09ZS5lbmQucm93JiZzLnN0YXJ0LmNvbHVtbj5lLmVuZC5jb2x1bW4mJihzLnN0YXJ0LmNvbHVtbis9dSkscy5lbmQucm93PT1lLmVuZC5yb3cmJnMuZW5kLmNvbHVtbj5lLmVuZC5jb2x1bW4mJihzLmVuZC5jb2x1bW4rPXUpKSxvJiZzLnN0YXJ0LnJvdz49ZS5lbmQucm93JiYocy5zdGFydC5yb3crPW8scy5lbmQucm93Kz1vKX1zLmVuZD10aGlzLmluc2VydChzLnN0YXJ0LHIpO2lmKGkubGVuZ3RoKXt2YXIgYT1lLnN0YXJ0LGY9cy5zdGFydCxvPWYucm93LWEucm93LHU9Zi5jb2x1bW4tYS5jb2x1bW47dGhpcy5hZGRGb2xkcyhpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZT1lLmNsb25lKCksZS5zdGFydC5yb3c9PWEucm93JiYoZS5zdGFydC5jb2x1bW4rPXUpLGUuZW5kLnJvdz09YS5yb3cmJihlLmVuZC5jb2x1bW4rPXUpLGUuc3RhcnQucm93Kz1vLGUuZW5kLnJvdys9byxlfSkpfXJldHVybiBzfSx0aGlzLmluZGVudFJvd3M9ZnVuY3Rpb24oZSx0LG4pe249bi5yZXBsYWNlKC9cdC9nLHRoaXMuZ2V0VGFiU3RyaW5nKCkpO2Zvcih2YXIgcj1lO3I8PXQ7cisrKXRoaXMuZG9jLmluc2VydEluTGluZSh7cm93OnIsY29sdW1uOjB9LG4pfSx0aGlzLm91dGRlbnRSb3dzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sbGFwc2VSb3dzKCksbj1uZXcgbCgwLDAsMCwwKSxyPXRoaXMuZ2V0VGFiU2l6ZSgpO2Zvcih2YXIgaT10LnN0YXJ0LnJvdztpPD10LmVuZC5yb3c7KytpKXt2YXIgcz10aGlzLmdldExpbmUoaSk7bi5zdGFydC5yb3c9aSxuLmVuZC5yb3c9aTtmb3IodmFyIG89MDtvPHI7KytvKWlmKHMuY2hhckF0KG8pIT0iICIpYnJlYWs7bzxyJiZzLmNoYXJBdChvKT09IgkiPyhuLnN0YXJ0LmNvbHVtbj1vLG4uZW5kLmNvbHVtbj1vKzEpOihuLnN0YXJ0LmNvbHVtbj0wLG4uZW5kLmNvbHVtbj1vKSx0aGlzLnJlbW92ZShuKX19LHRoaXMuJG1vdmVMaW5lcz1mdW5jdGlvbihlLHQsbil7ZT10aGlzLmdldFJvd0ZvbGRTdGFydChlKSx0PXRoaXMuZ2V0Um93Rm9sZEVuZCh0KTtpZihuPDApe3ZhciByPXRoaXMuZ2V0Um93Rm9sZFN0YXJ0KGUrbik7aWYocjwwKXJldHVybiAwO3ZhciBpPXItZX1lbHNlIGlmKG4+MCl7dmFyIHI9dGhpcy5nZXRSb3dGb2xkRW5kKHQrbik7aWYocj50aGlzLmRvYy5nZXRMZW5ndGgoKS0xKXJldHVybiAwO3ZhciBpPXItdH1lbHNle2U9dGhpcy4kY2xpcFJvd1RvRG9jdW1lbnQoZSksdD10aGlzLiRjbGlwUm93VG9Eb2N1bWVudCh0KTt2YXIgaT10LWUrMX12YXIgcz1uZXcgbChlLDAsdCxOdW1iZXIuTUFYX1ZBTFVFKSxvPXRoaXMuZ2V0Rm9sZHNJblJhbmdlKHMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZT1lLmNsb25lKCksZS5zdGFydC5yb3crPWksZS5lbmQucm93Kz1pLGV9KSx1PW49PTA/dGhpcy5kb2MuZ2V0TGluZXMoZSx0KTp0aGlzLmRvYy5yZW1vdmVGdWxsTGluZXMoZSx0KTtyZXR1cm4gdGhpcy5kb2MuaW5zZXJ0RnVsbExpbmVzKGUraSx1KSxvLmxlbmd0aCYmdGhpcy5hZGRGb2xkcyhvKSxpfSx0aGlzLm1vdmVMaW5lc1VwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuJG1vdmVMaW5lcyhlLHQsLTEpfSx0aGlzLm1vdmVMaW5lc0Rvd249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy4kbW92ZUxpbmVzKGUsdCwxKX0sdGhpcy5kdXBsaWNhdGVMaW5lcz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLiRtb3ZlTGluZXMoZSx0LDApfSx0aGlzLiRjbGlwUm93VG9Eb2N1bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbihlLHRoaXMuZG9jLmdldExlbmd0aCgpLTEpKX0sdGhpcy4kY2xpcENvbHVtblRvUm93PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ8MD8wOk1hdGgubWluKHRoaXMuZG9jLmdldExpbmUoZSkubGVuZ3RoLHQpfSx0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50PWZ1bmN0aW9uKGUsdCl7dD1NYXRoLm1heCgwLHQpO2lmKGU8MCllPTAsdD0wO2Vsc2V7dmFyIG49dGhpcy5kb2MuZ2V0TGVuZ3RoKCk7ZT49bj8oZT1uLTEsdD10aGlzLmRvYy5nZXRMaW5lKG4tMSkubGVuZ3RoKTp0PU1hdGgubWluKHRoaXMuZG9jLmdldExpbmUoZSkubGVuZ3RoLHQpfXJldHVybntyb3c6ZSxjb2x1bW46dH19LHRoaXMuJGNsaXBSYW5nZVRvRG9jdW1lbnQ9ZnVuY3Rpb24oZSl7ZS5zdGFydC5yb3c8MD8oZS5zdGFydC5yb3c9MCxlLnN0YXJ0LmNvbHVtbj0wKTplLnN0YXJ0LmNvbHVtbj10aGlzLiRjbGlwQ29sdW1uVG9Sb3coZS5zdGFydC5yb3csZS5zdGFydC5jb2x1bW4pO3ZhciB0PXRoaXMuZG9jLmdldExlbmd0aCgpLTE7cmV0dXJuIGUuZW5kLnJvdz50PyhlLmVuZC5yb3c9dCxlLmVuZC5jb2x1bW49dGhpcy5kb2MuZ2V0TGluZSh0KS5sZW5ndGgpOmUuZW5kLmNvbHVtbj10aGlzLiRjbGlwQ29sdW1uVG9Sb3coZS5lbmQucm93LGUuZW5kLmNvbHVtbiksZX0sdGhpcy4kd3JhcExpbWl0PTgwLHRoaXMuJHVzZVdyYXBNb2RlPSExLHRoaXMuJHdyYXBMaW1pdFJhbmdlPXttaW46bnVsbCxtYXg6bnVsbH0sdGhpcy5zZXRVc2VXcmFwTW9kZT1mdW5jdGlvbihlKXtpZihlIT10aGlzLiR1c2VXcmFwTW9kZSl7dGhpcy4kdXNlV3JhcE1vZGU9ZSx0aGlzLiRtb2RpZmllZD0hMCx0aGlzLiRyZXNldFJvd0NhY2hlKDApO2lmKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy4kd3JhcERhdGE9QXJyYXkodCksdGhpcy4kdXBkYXRlV3JhcERhdGEoMCx0LTEpfXRoaXMuX3NpZ25hbCgiY2hhbmdlV3JhcE1vZGUiKX19LHRoaXMuZ2V0VXNlV3JhcE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdXNlV3JhcE1vZGV9LHRoaXMuc2V0V3JhcExpbWl0UmFuZ2U9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLiR3cmFwTGltaXRSYW5nZS5taW4hPT1lfHx0aGlzLiR3cmFwTGltaXRSYW5nZS5tYXghPT10KXRoaXMuJHdyYXBMaW1pdFJhbmdlPXttaW46ZSxtYXg6dH0sdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kYmlkaUhhbmRsZXIubWFya0FzRGlydHkoKSx0aGlzLiR1c2VXcmFwTW9kZSYmdGhpcy5fc2lnbmFsKCJjaGFuZ2VXcmFwTW9kZSIpfSx0aGlzLmFkanVzdFdyYXBMaW1pdD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJHdyYXBMaW1pdFJhbmdlO24ubWF4PDAmJihuPXttaW46dCxtYXg6dH0pO3ZhciByPXRoaXMuJGNvbnN0cmFpbldyYXBMaW1pdChlLG4ubWluLG4ubWF4KTtyZXR1cm4gciE9dGhpcy4kd3JhcExpbWl0JiZyPjE/KHRoaXMuJHdyYXBMaW1pdD1yLHRoaXMuJG1vZGlmaWVkPSEwLHRoaXMuJHVzZVdyYXBNb2RlJiYodGhpcy4kdXBkYXRlV3JhcERhdGEoMCx0aGlzLmdldExlbmd0aCgpLTEpLHRoaXMuJHJlc2V0Um93Q2FjaGUoMCksdGhpcy5fc2lnbmFsKCJjaGFuZ2VXcmFwTGltaXQiKSksITApOiExfSx0aGlzLiRjb25zdHJhaW5XcmFwTGltaXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiYoZT1NYXRoLm1heCh0LGUpKSxuJiYoZT1NYXRoLm1pbihuLGUpKSxlfSx0aGlzLmdldFdyYXBMaW1pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR3cmFwTGltaXR9LHRoaXMuc2V0V3JhcExpbWl0PWZ1bmN0aW9uKGUpe3RoaXMuc2V0V3JhcExpbWl0UmFuZ2UoZSxlKX0sdGhpcy5nZXRXcmFwTGltaXRSYW5nZT1mdW5jdGlvbigpe3JldHVybnttaW46dGhpcy4kd3JhcExpbWl0UmFuZ2UubWluLG1heDp0aGlzLiR3cmFwTGltaXRSYW5nZS5tYXh9fSx0aGlzLiR1cGRhdGVJbnRlcm5hbERhdGFPbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLiR1c2VXcmFwTW9kZSxuPWUuYWN0aW9uLHI9ZS5zdGFydCxpPWUuZW5kLHM9ci5yb3csbz1pLnJvdyx1PW8tcyxhPW51bGw7dGhpcy4kdXBkYXRpbmc9ITA7aWYodSE9MClpZihuPT09InJlbW92ZSIpe3RoaXNbdD8iJHdyYXBEYXRhIjoiJHJvd0xlbmd0aENhY2hlIl0uc3BsaWNlKHMsdSk7dmFyIGY9dGhpcy4kZm9sZERhdGE7YT10aGlzLmdldEZvbGRzSW5SYW5nZShlKSx0aGlzLnJlbW92ZUZvbGRzKGEpO3ZhciBsPXRoaXMuZ2V0Rm9sZExpbmUoaS5yb3cpLGM9MDtpZihsKXtsLmFkZFJlbW92ZUNoYXJzKGkucm93LGkuY29sdW1uLHIuY29sdW1uLWkuY29sdW1uKSxsLnNoaWZ0Um93KC11KTt2YXIgaD10aGlzLmdldEZvbGRMaW5lKHMpO2gmJmghPT1sJiYoaC5tZXJnZShsKSxsPWgpLGM9Zi5pbmRleE9mKGwpKzF9Zm9yKGM7YzxmLmxlbmd0aDtjKyspe3ZhciBsPWZbY107bC5zdGFydC5yb3c+PWkucm93JiZsLnNoaWZ0Um93KC11KX1vPXN9ZWxzZXt2YXIgcD1BcnJheSh1KTtwLnVuc2hpZnQocywwKTt2YXIgZD10P3RoaXMuJHdyYXBEYXRhOnRoaXMuJHJvd0xlbmd0aENhY2hlO2Quc3BsaWNlLmFwcGx5KGQscCk7dmFyIGY9dGhpcy4kZm9sZERhdGEsbD10aGlzLmdldEZvbGRMaW5lKHMpLGM9MDtpZihsKXt2YXIgdj1sLnJhbmdlLmNvbXBhcmVJbnNpZGUoci5yb3csci5jb2x1bW4pO3Y9PTA/KGw9bC5zcGxpdChyLnJvdyxyLmNvbHVtbiksbCYmKGwuc2hpZnRSb3codSksbC5hZGRSZW1vdmVDaGFycyhvLDAsaS5jb2x1bW4tci5jb2x1bW4pKSk6dj09LTEmJihsLmFkZFJlbW92ZUNoYXJzKHMsMCxpLmNvbHVtbi1yLmNvbHVtbiksbC5zaGlmdFJvdyh1KSksYz1mLmluZGV4T2YobCkrMX1mb3IoYztjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtsLnN0YXJ0LnJvdz49cyYmbC5zaGlmdFJvdyh1KX19ZWxzZXt1PU1hdGguYWJzKGUuc3RhcnQuY29sdW1uLWUuZW5kLmNvbHVtbiksbj09PSJyZW1vdmUiJiYoYT10aGlzLmdldEZvbGRzSW5SYW5nZShlKSx0aGlzLnJlbW92ZUZvbGRzKGEpLHU9LXUpO3ZhciBsPXRoaXMuZ2V0Rm9sZExpbmUocyk7bCYmbC5hZGRSZW1vdmVDaGFycyhzLHIuY29sdW1uLHUpfXJldHVybiB0JiZ0aGlzLiR3cmFwRGF0YS5sZW5ndGghPXRoaXMuZG9jLmdldExlbmd0aCgpJiZjb25zb2xlLmVycm9yKCJkb2MuZ2V0TGVuZ3RoKCkgYW5kICR3cmFwRGF0YS5sZW5ndGggaGF2ZSB0byBiZSB0aGUgc2FtZSEiKSx0aGlzLiR1cGRhdGluZz0hMSx0P3RoaXMuJHVwZGF0ZVdyYXBEYXRhKHMsbyk6dGhpcy4kdXBkYXRlUm93TGVuZ3RoQ2FjaGUocyxvKSxhfSx0aGlzLiR1cGRhdGVSb3dMZW5ndGhDYWNoZT1mdW5jdGlvbihlLHQsbil7dGhpcy4kcm93TGVuZ3RoQ2FjaGVbZV09bnVsbCx0aGlzLiRyb3dMZW5ndGhDYWNoZVt0XT1udWxsfSx0aGlzLiR1cGRhdGVXcmFwRGF0YT1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZG9jLmdldEFsbExpbmVzKCksaT10aGlzLmdldFRhYlNpemUoKSxvPXRoaXMuJHdyYXBEYXRhLHU9dGhpcy4kd3JhcExpbWl0LGEsZixsPWU7dD1NYXRoLm1pbih0LHIubGVuZ3RoLTEpO3doaWxlKGw8PXQpZj10aGlzLmdldEZvbGRMaW5lKGwsZiksZj8oYT1bXSxmLndhbGsoZnVuY3Rpb24oZSx0LGksbyl7dmFyIHU7aWYoZSE9bnVsbCl7dT10aGlzLiRnZXREaXNwbGF5VG9rZW5zKGUsYS5sZW5ndGgpLHVbMF09bjtmb3IodmFyIGY9MTtmPHUubGVuZ3RoO2YrKyl1W2ZdPXN9ZWxzZSB1PXRoaXMuJGdldERpc3BsYXlUb2tlbnMoclt0XS5zdWJzdHJpbmcobyxpKSxhLmxlbmd0aCk7YT1hLmNvbmNhdCh1KX0uYmluZCh0aGlzKSxmLmVuZC5yb3cscltmLmVuZC5yb3ddLmxlbmd0aCsxKSxvW2Yuc3RhcnQucm93XT10aGlzLiRjb21wdXRlV3JhcFNwbGl0cyhhLHUsaSksbD1mLmVuZC5yb3crMSk6KGE9dGhpcy4kZ2V0RGlzcGxheVRva2VucyhyW2xdKSxvW2xdPXRoaXMuJGNvbXB1dGVXcmFwU3BsaXRzKGEsdSxpKSxsKyspfTt2YXIgZT0xLHQ9MixuPTMscz00LGE9OSxjPTEwLGQ9MTEsdj0xMjt0aGlzLiRjb21wdXRlV3JhcFNwbGl0cz1mdW5jdGlvbihlLHIsaSl7ZnVuY3Rpb24gZygpe3ZhciB0PTA7aWYobT09PTApcmV0dXJuIHQ7aWYocClmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtpZihyPT1jKXQrPTE7ZWxzZXtpZihyIT1kKXtpZihyPT12KWNvbnRpbnVlO2JyZWFrfXQrPWl9fXJldHVybiBoJiZwIT09ITEmJih0Kz1pKSxNYXRoLm1pbih0LG0pfWZ1bmN0aW9uIHkodCl7dmFyIG49dC1mO2Zvcih2YXIgcj1mO3I8dDtyKyspe3ZhciBpPWVbcl07aWYoaT09PTEyfHxpPT09MiluLT0xfW8ubGVuZ3RofHwoYj1nKCksby5pbmRlbnQ9YiksbCs9bixvLnB1c2gobCksZj10fWlmKGUubGVuZ3RoPT0wKXJldHVybltdO3ZhciBvPVtdLHU9ZS5sZW5ndGgsZj0wLGw9MCxoPXRoaXMuJHdyYXBBc0NvZGUscD10aGlzLiRpbmRlbnRlZFNvZnRXcmFwLG09cjw9TWF0aC5tYXgoMippLDgpfHxwPT09ITE/MDpNYXRoLmZsb29yKHIvMiksYj0wO3doaWxlKHUtZj5yLWIpe3ZhciB3PWYrci1iO2lmKGVbdy0xXT49YyYmZVt3XT49Yyl7eSh3KTtjb250aW51ZX1pZihlW3ddPT1ufHxlW3ddPT1zKXtmb3Iodzt3IT1mLTE7dy0tKWlmKGVbd109PW4pYnJlYWs7aWYodz5mKXt5KHcpO2NvbnRpbnVlfXc9ZityO2Zvcih3O3c8ZS5sZW5ndGg7dysrKWlmKGVbd10hPXMpYnJlYWs7aWYodz09ZS5sZW5ndGgpYnJlYWs7eSh3KTtjb250aW51ZX12YXIgRT1NYXRoLm1heCh3LShyLShyPj4yKSksZi0xKTt3aGlsZSh3PkUmJmVbd108bil3LS07aWYoaCl7d2hpbGUodz5FJiZlW3ddPG4pdy0tO3doaWxlKHc+RSYmZVt3XT09YSl3LS19ZWxzZSB3aGlsZSh3PkUmJmVbd108Yyl3LS07aWYodz5FKXt5KCsrdyk7Y29udGludWV9dz1mK3IsZVt3XT09dCYmdy0tLHkody1iKX1yZXR1cm4gb30sdGhpcy4kZ2V0RGlzcGxheVRva2Vucz1mdW5jdGlvbihuLHIpe3ZhciBpPVtdLHM7cj1yfHwwO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXt2YXIgdT1uLmNoYXJDb2RlQXQobyk7aWYodT09OSl7cz10aGlzLmdldFNjcmVlblRhYlNpemUoaS5sZW5ndGgrciksaS5wdXNoKGQpO2Zvcih2YXIgZj0xO2Y8cztmKyspaS5wdXNoKHYpfWVsc2UgdT09MzI/aS5wdXNoKGMpOnU+MzkmJnU8NDh8fHU+NTcmJnU8NjQ/aS5wdXNoKGEpOnU+PTQzNTImJm0odSk/aS5wdXNoKGUsdCk6aS5wdXNoKGUpfXJldHVybiBpfSx0aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aD1mdW5jdGlvbihlLHQsbil7aWYodD09MClyZXR1cm5bMCwwXTt0PT1udWxsJiYodD1JbmZpbml0eSksbj1ufHwwO3ZhciByLGk7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7cj1lLmNoYXJDb2RlQXQoaSkscj09OT9uKz10aGlzLmdldFNjcmVlblRhYlNpemUobik6cj49NDM1MiYmbShyKT9uKz0yOm4rPTE7aWYobj50KWJyZWFrfXJldHVybltuLGldfSx0aGlzLmxpbmVXaWRnZXRzPW51bGwsdGhpcy5nZXRSb3dMZW5ndGg9ZnVuY3Rpb24oZSl7aWYodGhpcy5saW5lV2lkZ2V0cyl2YXIgdD10aGlzLmxpbmVXaWRnZXRzW2VdJiZ0aGlzLmxpbmVXaWRnZXRzW2VdLnJvd0NvdW50fHwwO2Vsc2UgdD0wO3JldHVybiF0aGlzLiR1c2VXcmFwTW9kZXx8IXRoaXMuJHdyYXBEYXRhW2VdPzErdDp0aGlzLiR3cmFwRGF0YVtlXS5sZW5ndGgrMSt0fSx0aGlzLmdldFJvd0xpbmVDb3VudD1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy4kdXNlV3JhcE1vZGV8fCF0aGlzLiR3cmFwRGF0YVtlXT8xOnRoaXMuJHdyYXBEYXRhW2VdLmxlbmd0aCsxfSx0aGlzLmdldFJvd1dyYXBJbmRlbnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy4kdXNlV3JhcE1vZGUpe3ZhciB0PXRoaXMuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGUsTnVtYmVyLk1BWF9WQUxVRSksbj10aGlzLiR3cmFwRGF0YVt0LnJvd107cmV0dXJuIG4ubGVuZ3RoJiZuWzBdPHQuY29sdW1uP24uaW5kZW50OjB9cmV0dXJuIDB9LHRoaXMuZ2V0U2NyZWVuTGFzdFJvd0NvbHVtbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihlLE51bWJlci5NQVhfVkFMVUUpO3JldHVybiB0aGlzLmRvY3VtZW50VG9TY3JlZW5Db2x1bW4odC5yb3csdC5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50TGFzdFJvd0NvbHVtbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZG9jdW1lbnRUb1NjcmVlblJvdyhlLHQpO3JldHVybiB0aGlzLmdldFNjcmVlbkxhc3RSb3dDb2x1bW4obil9LHRoaXMuZ2V0RG9jdW1lbnRMYXN0Um93Q29sdW1uUG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmRvY3VtZW50VG9TY3JlZW5Sb3coZSx0KTtyZXR1cm4gdGhpcy5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24obixOdW1iZXIuTUFYX1ZBTFVFLzEwKX0sdGhpcy5nZXRSb3dTcGxpdERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJHVzZVdyYXBNb2RlP3RoaXMuJHdyYXBEYXRhW2VdOnVuZGVmaW5lZH0sdGhpcy5nZXRTY3JlZW5UYWJTaXplPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiR0YWJTaXplLShlJXRoaXMuJHRhYlNpemV8MCl9LHRoaXMuc2NyZWVuVG9Eb2N1bWVudFJvdz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihlLHQpLnJvd30sdGhpcy5zY3JlZW5Ub0RvY3VtZW50Q29sdW1uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGUsdCkuY29sdW1ufSx0aGlzLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbj1mdW5jdGlvbihlLHQsbil7aWYoZTwwKXJldHVybntyb3c6MCxjb2x1bW46MH07dmFyIHIsaT0wLHM9MCxvLHU9MCxhPTAsZj10aGlzLiRzY3JlZW5Sb3dDYWNoZSxsPXRoaXMuJGdldFJvd0NhY2hlSW5kZXgoZixlKSxjPWYubGVuZ3RoO2lmKGMmJmw+PTApdmFyIHU9ZltsXSxpPXRoaXMuJGRvY1Jvd0NhY2hlW2xdLGg9ZT5mW2MtMV07ZWxzZSB2YXIgaD0hYzt2YXIgcD10aGlzLmdldExlbmd0aCgpLTEsZD10aGlzLmdldE5leHRGb2xkTGluZShpKSx2PWQ/ZC5zdGFydC5yb3c6SW5maW5pdHk7d2hpbGUodTw9ZSl7YT10aGlzLmdldFJvd0xlbmd0aChpKTtpZih1K2E+ZXx8aT49cClicmVhazt1Kz1hLGkrKyxpPnYmJihpPWQuZW5kLnJvdysxLGQ9dGhpcy5nZXROZXh0Rm9sZExpbmUoaSxkKSx2PWQ/ZC5zdGFydC5yb3c6SW5maW5pdHkpLGgmJih0aGlzLiRkb2NSb3dDYWNoZS5wdXNoKGkpLHRoaXMuJHNjcmVlblJvd0NhY2hlLnB1c2godSkpfWlmKGQmJmQuc3RhcnQucm93PD1pKXI9dGhpcy5nZXRGb2xkRGlzcGxheUxpbmUoZCksaT1kLnN0YXJ0LnJvdztlbHNle2lmKHUrYTw9ZXx8aT5wKXJldHVybntyb3c6cCxjb2x1bW46dGhpcy5nZXRMaW5lKHApLmxlbmd0aH07cj10aGlzLmdldExpbmUoaSksZD1udWxsfXZhciBtPTAsZz1NYXRoLmZsb29yKGUtdSk7aWYodGhpcy4kdXNlV3JhcE1vZGUpe3ZhciB5PXRoaXMuJHdyYXBEYXRhW2ldO3kmJihvPXlbZ10sZz4wJiZ5Lmxlbmd0aCYmKG09eS5pbmRlbnQscz15W2ctMV18fHlbeS5sZW5ndGgtMV0scj1yLnN1YnN0cmluZyhzKSkpfXJldHVybiBuIT09dW5kZWZpbmVkJiZ0aGlzLiRiaWRpSGFuZGxlci5pc0JpZGlSb3codStnLGksZykmJih0PXRoaXMuJGJpZGlIYW5kbGVyLm9mZnNldFRvQ29sKG4pKSxzKz10aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aChyLHQtbSlbMV0sdGhpcy4kdXNlV3JhcE1vZGUmJnM+PW8mJihzPW8tMSksZD9kLmlkeFRvUG9zaXRpb24ocyk6e3JvdzppLGNvbHVtbjpzfX0sdGhpcy5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb249ZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgdD09InVuZGVmaW5lZCIpdmFyIG49dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChlLnJvdyxlLmNvbHVtbik7ZWxzZSBuPXRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQoZSx0KTtlPW4ucm93LHQ9bi5jb2x1bW47dmFyIHI9MCxpPW51bGwscz1udWxsO3M9dGhpcy5nZXRGb2xkQXQoZSx0LDEpLHMmJihlPXMuc3RhcnQucm93LHQ9cy5zdGFydC5jb2x1bW4pO3ZhciBvLHU9MCxhPXRoaXMuJGRvY1Jvd0NhY2hlLGY9dGhpcy4kZ2V0Um93Q2FjaGVJbmRleChhLGUpLGw9YS5sZW5ndGg7aWYobCYmZj49MCl2YXIgdT1hW2ZdLHI9dGhpcy4kc2NyZWVuUm93Q2FjaGVbZl0sYz1lPmFbbC0xXTtlbHNlIHZhciBjPSFsO3ZhciBoPXRoaXMuZ2V0TmV4dEZvbGRMaW5lKHUpLHA9aD9oLnN0YXJ0LnJvdzpJbmZpbml0eTt3aGlsZSh1PGUpe2lmKHU+PXApe289aC5lbmQucm93KzE7aWYobz5lKWJyZWFrO2g9dGhpcy5nZXROZXh0Rm9sZExpbmUobyxoKSxwPWg/aC5zdGFydC5yb3c6SW5maW5pdHl9ZWxzZSBvPXUrMTtyKz10aGlzLmdldFJvd0xlbmd0aCh1KSx1PW8sYyYmKHRoaXMuJGRvY1Jvd0NhY2hlLnB1c2godSksdGhpcy4kc2NyZWVuUm93Q2FjaGUucHVzaChyKSl9dmFyIGQ9IiI7aCYmdT49cD8oZD10aGlzLmdldEZvbGREaXNwbGF5TGluZShoLGUsdCksaT1oLnN0YXJ0LnJvdyk6KGQ9dGhpcy5nZXRMaW5lKGUpLnN1YnN0cmluZygwLHQpLGk9ZSk7dmFyIHY9MDtpZih0aGlzLiR1c2VXcmFwTW9kZSl7dmFyIG09dGhpcy4kd3JhcERhdGFbaV07aWYobSl7dmFyIGc9MDt3aGlsZShkLmxlbmd0aD49bVtnXSlyKyssZysrO2Q9ZC5zdWJzdHJpbmcobVtnLTFdfHwwLGQubGVuZ3RoKSx2PWc+MD9tLmluZGVudDowfX1yZXR1cm57cm93OnIsY29sdW1uOnYrdGhpcy4kZ2V0U3RyaW5nU2NyZWVuV2lkdGgoZClbMF19fSx0aGlzLmRvY3VtZW50VG9TY3JlZW5Db2x1bW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oZSx0KS5jb2x1bW59LHRoaXMuZG9jdW1lbnRUb1NjcmVlblJvdz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbihlLHQpLnJvd30sdGhpcy5nZXRTY3JlZW5MZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT0wLHQ9bnVsbDtpZighdGhpcy4kdXNlV3JhcE1vZGUpe2U9dGhpcy5nZXRMZW5ndGgoKTt2YXIgbj10aGlzLiRmb2xkRGF0YTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl0PW5bcl0sZS09dC5lbmQucm93LXQuc3RhcnQucm93fWVsc2V7dmFyIGk9dGhpcy4kd3JhcERhdGEubGVuZ3RoLHM9MCxyPTAsdD10aGlzLiRmb2xkRGF0YVtyKytdLG89dD90LnN0YXJ0LnJvdzpJbmZpbml0eTt3aGlsZShzPGkpe3ZhciB1PXRoaXMuJHdyYXBEYXRhW3NdO2UrPXU/dS5sZW5ndGgrMToxLHMrKyxzPm8mJihzPXQuZW5kLnJvdysxLHQ9dGhpcy4kZm9sZERhdGFbcisrXSxvPXQ/dC5zdGFydC5yb3c6SW5maW5pdHkpfX1yZXR1cm4gdGhpcy5saW5lV2lkZ2V0cyYmKGUrPXRoaXMuJGdldFdpZGdldFNjcmVlbkxlbmd0aCgpKSxlfSx0aGlzLiRzZXRGb250TWV0cmljcz1mdW5jdGlvbihlKXtpZighdGhpcy4kZW5hYmxlVmFyQ2hhcilyZXR1cm47dGhpcy4kZ2V0U3RyaW5nU2NyZWVuV2lkdGg9ZnVuY3Rpb24odCxuLHIpe2lmKG49PT0wKXJldHVyblswLDBdO258fChuPUluZmluaXR5KSxyPXJ8fDA7dmFyIGkscztmb3Iocz0wO3M8dC5sZW5ndGg7cysrKXtpPXQuY2hhckF0KHMpLGk9PT0iCSI/cis9dGhpcy5nZXRTY3JlZW5UYWJTaXplKHIpOnIrPWUuZ2V0Q2hhcmFjdGVyV2lkdGgoaSk7aWYocj5uKWJyZWFrfXJldHVybltyLHNdfX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5iZ1Rva2VuaXplciYmKHRoaXMuYmdUb2tlbml6ZXIuc2V0RG9jdW1lbnQobnVsbCksdGhpcy5iZ1Rva2VuaXplcj1udWxsKSx0aGlzLiRzdG9wV29ya2VyKCl9LHRoaXMuaXNGdWxsV2lkdGg9bX0uY2FsbChkLnByb3RvdHlwZSksZSgiLi9lZGl0X3Nlc3Npb24vZm9sZGluZyIpLkZvbGRpbmcuY2FsbChkLnByb3RvdHlwZSksZSgiLi9lZGl0X3Nlc3Npb24vYnJhY2tldF9tYXRjaCIpLkJyYWNrZXRNYXRjaC5jYWxsKGQucHJvdG90eXBlKSxvLmRlZmluZU9wdGlvbnMoZC5wcm90b3R5cGUsInNlc3Npb24iLHt3cmFwOntzZXQ6ZnVuY3Rpb24oZSl7IWV8fGU9PSJvZmYiP2U9ITE6ZT09ImZyZWUiP2U9ITA6ZT09InByaW50TWFyZ2luIj9lPS0xOnR5cGVvZiBlPT0ic3RyaW5nIiYmKGU9cGFyc2VJbnQoZSwxMCl8fCExKTtpZih0aGlzLiR3cmFwPT1lKXJldHVybjt0aGlzLiR3cmFwPWU7aWYoIWUpdGhpcy5zZXRVc2VXcmFwTW9kZSghMSk7ZWxzZXt2YXIgdD10eXBlb2YgZT09Im51bWJlciI/ZTpudWxsO3RoaXMuc2V0V3JhcExpbWl0UmFuZ2UodCx0KSx0aGlzLnNldFVzZVdyYXBNb2RlKCEwKX19LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFVzZVdyYXBNb2RlKCk/dGhpcy4kd3JhcD09LTE/InByaW50TWFyZ2luIjp0aGlzLmdldFdyYXBMaW1pdFJhbmdlKCkubWluP3RoaXMuJHdyYXA6ImZyZWUiOiJvZmYifSxoYW5kbGVzU2V0OiEwfSx3cmFwTWV0aG9kOntzZXQ6ZnVuY3Rpb24oZSl7ZT1lPT0iYXV0byI/dGhpcy4kbW9kZS50eXBlIT0idGV4dCI6ZSE9InRleHQiLGUhPXRoaXMuJHdyYXBBc0NvZGUmJih0aGlzLiR3cmFwQXNDb2RlPWUsdGhpcy4kdXNlV3JhcE1vZGUmJih0aGlzLiR1c2VXcmFwTW9kZT0hMSx0aGlzLnNldFVzZVdyYXBNb2RlKCEwKSkpfSxpbml0aWFsVmFsdWU6ImF1dG8ifSxpbmRlbnRlZFNvZnRXcmFwOntzZXQ6ZnVuY3Rpb24oKXt0aGlzLiR1c2VXcmFwTW9kZSYmKHRoaXMuJHVzZVdyYXBNb2RlPSExLHRoaXMuc2V0VXNlV3JhcE1vZGUoITApKX0saW5pdGlhbFZhbHVlOiEwfSxmaXJzdExpbmVOdW1iZXI6e3NldDpmdW5jdGlvbigpe3RoaXMuX3NpZ25hbCgiY2hhbmdlQnJlYWtwb2ludCIpfSxpbml0aWFsVmFsdWU6MX0sdXNlV29ya2VyOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy4kdXNlV29ya2VyPWUsdGhpcy4kc3RvcFdvcmtlcigpLGUmJnRoaXMuJHN0YXJ0V29ya2VyKCl9LGluaXRpYWxWYWx1ZTohMH0sdXNlU29mdFRhYnM6e2luaXRpYWxWYWx1ZTohMH0sdGFiU2l6ZTp7c2V0OmZ1bmN0aW9uKGUpe2U9cGFyc2VJbnQoZSksZT4wJiZ0aGlzLiR0YWJTaXplIT09ZSYmKHRoaXMuJG1vZGlmaWVkPSEwLHRoaXMuJHJvd0xlbmd0aENhY2hlPVtdLHRoaXMuJHRhYlNpemU9ZSx0aGlzLl9zaWduYWwoImNoYW5nZVRhYlNpemUiKSl9LGluaXRpYWxWYWx1ZTo0LGhhbmRsZXNTZXQ6ITB9LG5hdmlnYXRlV2l0aGluU29mdFRhYnM6e2luaXRpYWxWYWx1ZTohMX0sZm9sZFN0eWxlOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5zZXRGb2xkU3R5bGUoZSl9LGhhbmRsZXNTZXQ6ITB9LG92ZXJ3cml0ZTp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuX3NpZ25hbCgiY2hhbmdlT3ZlcndyaXRlIil9LGluaXRpYWxWYWx1ZTohMX0sbmV3TGluZU1vZGU6e3NldDpmdW5jdGlvbihlKXt0aGlzLmRvYy5zZXROZXdMaW5lTW9kZShlKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jLmdldE5ld0xpbmVNb2RlKCl9LGhhbmRsZXNTZXQ6ITB9LG1vZGU6e3NldDpmdW5jdGlvbihlKXt0aGlzLnNldE1vZGUoZSl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRtb2RlSWR9LGhhbmRsZXNTZXQ6ITB9fSksdC5FZGl0U2Vzc2lvbj1kfSksYWNlLmRlZmluZSgiYWNlL3NlYXJjaCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvbGFuZyIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB1KGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4vXHcvLnRlc3QoZSl8fHQucmVnRXhwPyJcXGIiOiIifXJldHVybiBuKGVbMF0pK2UrbihlW2UubGVuZ3RoLTFdKX12YXIgcj1lKCIuL2xpYi9sYW5nIiksaT1lKCIuL2xpYi9vb3AiKSxzPWUoIi4vcmFuZ2UiKS5SYW5nZSxvPWZ1bmN0aW9uKCl7dGhpcy4kb3B0aW9ucz17fX07KGZ1bmN0aW9uKCl7dGhpcy5zZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkubWl4aW4odGhpcy4kb3B0aW9ucyxlKSx0aGlzfSx0aGlzLmdldE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gci5jb3B5T2JqZWN0KHRoaXMuJG9wdGlvbnMpfSx0aGlzLnNldE9wdGlvbnM9ZnVuY3Rpb24oZSl7dGhpcy4kb3B0aW9ucz1lfSx0aGlzLmZpbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kb3B0aW9ucyxuPXRoaXMuJG1hdGNoSXRlcmF0b3IoZSx0KTtpZighbilyZXR1cm4hMTt2YXIgcj1udWxsO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24oZSxuLGksbyl7cmV0dXJuIHI9bmV3IHMoZSxuLGksbyksbj09byYmdC5zdGFydCYmdC5zdGFydC5zdGFydCYmdC5za2lwQ3VycmVudCE9MCYmci5pc0VxdWFsKHQuc3RhcnQpPyhyPW51bGwsITEpOiEwfSkscn0sdGhpcy5maW5kQWxsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJG9wdGlvbnM7aWYoIXQubmVlZGxlKXJldHVybltdO3RoaXMuJGFzc2VtYmxlUmVnRXhwKHQpO3ZhciBuPXQucmFuZ2UsaT1uP2UuZ2V0TGluZXMobi5zdGFydC5yb3csbi5lbmQucm93KTplLmRvYy5nZXRBbGxMaW5lcygpLG89W10sdT10LnJlO2lmKHQuJGlzTXVsdGlMaW5lKXt2YXIgYT11Lmxlbmd0aCxmPWkubGVuZ3RoLWEsbDtlOmZvcih2YXIgYz11Lm9mZnNldHx8MDtjPD1mO2MrKyl7Zm9yKHZhciBoPTA7aDxhO2grKylpZihpW2MraF0uc2VhcmNoKHVbaF0pPT0tMSljb250aW51ZSBlO3ZhciBwPWlbY10sZD1pW2MrYS0xXSx2PXAubGVuZ3RoLXAubWF0Y2godVswXSlbMF0ubGVuZ3RoLG09ZC5tYXRjaCh1W2EtMV0pWzBdLmxlbmd0aDtpZihsJiZsLmVuZC5yb3c9PT1jJiZsLmVuZC5jb2x1bW4+diljb250aW51ZTtvLnB1c2gobD1uZXcgcyhjLHYsYythLTEsbSkpLGE+MiYmKGM9YythLTIpfX1lbHNlIGZvcih2YXIgZz0wO2c8aS5sZW5ndGg7ZysrKXt2YXIgeT1yLmdldE1hdGNoT2Zmc2V0cyhpW2ddLHUpO2Zvcih2YXIgaD0wO2g8eS5sZW5ndGg7aCsrKXt2YXIgYj15W2hdO28ucHVzaChuZXcgcyhnLGIub2Zmc2V0LGcsYi5vZmZzZXQrYi5sZW5ndGgpKX19aWYobil7dmFyIHc9bi5zdGFydC5jb2x1bW4sRT1uLnN0YXJ0LmNvbHVtbixnPTAsaD1vLmxlbmd0aC0xO3doaWxlKGc8aCYmb1tnXS5zdGFydC5jb2x1bW48dyYmb1tnXS5zdGFydC5yb3c9PW4uc3RhcnQucm93KWcrKzt3aGlsZShnPGgmJm9baF0uZW5kLmNvbHVtbj5FJiZvW2hdLmVuZC5yb3c9PW4uZW5kLnJvdyloLS07bz1vLnNsaWNlKGcsaCsxKTtmb3IoZz0wLGg9by5sZW5ndGg7ZzxoO2crKylvW2ddLnN0YXJ0LnJvdys9bi5zdGFydC5yb3csb1tnXS5lbmQucm93Kz1uLnN0YXJ0LnJvd31yZXR1cm4gb30sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kb3B0aW9ucyxyPXRoaXMuJGFzc2VtYmxlUmVnRXhwKG4pO2lmKG4uJGlzTXVsdGlMaW5lKXJldHVybiB0O2lmKCFyKXJldHVybjt2YXIgaT1yLmV4ZWMoZSk7aWYoIWl8fGlbMF0ubGVuZ3RoIT1lLmxlbmd0aClyZXR1cm4gbnVsbDt0PWUucmVwbGFjZShyLHQpO2lmKG4ucHJlc2VydmVDYXNlKXt0PXQuc3BsaXQoIiIpO2Zvcih2YXIgcz1NYXRoLm1pbihlLmxlbmd0aCxlLmxlbmd0aCk7cy0tOyl7dmFyIG89ZVtzXTtvJiZvLnRvTG93ZXJDYXNlKCkhPW8/dFtzXT10W3NdLnRvVXBwZXJDYXNlKCk6dFtzXT10W3NdLnRvTG93ZXJDYXNlKCl9dD10LmpvaW4oIiIpfXJldHVybiB0fSx0aGlzLiRhc3NlbWJsZVJlZ0V4cD1mdW5jdGlvbihlLHQpe2lmKGUubmVlZGxlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBlLnJlPWUubmVlZGxlO3ZhciBuPWUubmVlZGxlO2lmKCFlLm5lZWRsZSlyZXR1cm4gZS5yZT0hMTtlLnJlZ0V4cHx8KG49ci5lc2NhcGVSZWdFeHAobikpLGUud2hvbGVXb3JkJiYobj11KG4sZSkpO3ZhciBpPWUuY2FzZVNlbnNpdGl2ZT8iZ20iOiJnbWkiO2UuJGlzTXVsdGlMaW5lPSF0JiYvW1xuXHJdLy50ZXN0KG4pO2lmKGUuJGlzTXVsdGlMaW5lKXJldHVybiBlLnJlPXRoaXMuJGFzc2VtYmxlTXVsdGlsaW5lUmVnRXhwKG4saSk7dHJ5e3ZhciBzPW5ldyBSZWdFeHAobixpKX1jYXRjaChvKXtzPSExfXJldHVybiBlLnJlPXN9LHRoaXMuJGFzc2VtYmxlTXVsdGlsaW5lUmVnRXhwPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5yZXBsYWNlKC9cclxufFxyfFxuL2csIiRcbl4iKS5zcGxpdCgiXG4iKSxyPVtdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXRyeXtyLnB1c2gobmV3IFJlZ0V4cChuW2ldLHQpKX1jYXRjaChzKXtyZXR1cm4hMX1yZXR1cm4gcn0sdGhpcy4kbWF0Y2hJdGVyYXRvcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJGFzc2VtYmxlUmVnRXhwKHQpO2lmKCFuKXJldHVybiExO3ZhciByPXQuYmFja3dhcmRzPT0xLGk9dC5za2lwQ3VycmVudCE9MCxzPXQucmFuZ2Usbz10LnN0YXJ0O298fChvPXM/c1tyPyJlbmQiOiJzdGFydCJdOmUuc2VsZWN0aW9uLmdldFJhbmdlKCkpLG8uc3RhcnQmJihvPW9baSE9cj8iZW5kIjoic3RhcnQiXSk7dmFyIHU9cz9zLnN0YXJ0LnJvdzowLGE9cz9zLmVuZC5yb3c6ZS5nZXRMZW5ndGgoKS0xO2lmKHIpdmFyIGY9ZnVuY3Rpb24oZSl7dmFyIG49by5yb3c7aWYoYyhuLG8uY29sdW1uLGUpKXJldHVybjtmb3Iobi0tO24+PXU7bi0tKWlmKGMobixOdW1iZXIuTUFYX1ZBTFVFLGUpKXJldHVybjtpZih0LndyYXA9PTApcmV0dXJuO2ZvcihuPWEsdT1vLnJvdztuPj11O24tLSlpZihjKG4sTnVtYmVyLk1BWF9WQUxVRSxlKSlyZXR1cm59O2Vsc2UgdmFyIGY9ZnVuY3Rpb24oZSl7dmFyIG49by5yb3c7aWYoYyhuLG8uY29sdW1uLGUpKXJldHVybjtmb3Iobis9MTtuPD1hO24rKylpZihjKG4sMCxlKSlyZXR1cm47aWYodC53cmFwPT0wKXJldHVybjtmb3Iobj11LGE9by5yb3c7bjw9YTtuKyspaWYoYyhuLDAsZSkpcmV0dXJufTtpZih0LiRpc011bHRpTGluZSl2YXIgbD1uLmxlbmd0aCxjPWZ1bmN0aW9uKHQsaSxzKXt2YXIgbz1yP3QtbCsxOnQ7aWYobzwwKXJldHVybjt2YXIgdT1lLmdldExpbmUobyksYT11LnNlYXJjaChuWzBdKTtpZighciYmYTxpfHxhPT09LTEpcmV0dXJuO2Zvcih2YXIgZj0xO2Y8bDtmKyspe3U9ZS5nZXRMaW5lKG8rZik7aWYodS5zZWFyY2gobltmXSk9PS0xKXJldHVybn12YXIgYz11Lm1hdGNoKG5bbC0xXSlbMF0ubGVuZ3RoO2lmKHImJmM+aSlyZXR1cm47aWYocyhvLGEsbytsLTEsYykpcmV0dXJuITB9O2Vsc2UgaWYocil2YXIgYz1mdW5jdGlvbih0LHIsaSl7dmFyIHM9ZS5nZXRMaW5lKHQpLG89W10sdSxhPTA7bi5sYXN0SW5kZXg9MDt3aGlsZSh1PW4uZXhlYyhzKSl7dmFyIGY9dVswXS5sZW5ndGg7YT11LmluZGV4O2lmKCFmKXtpZihhPj1zLmxlbmd0aClicmVhaztuLmxhc3RJbmRleD1hKz0xfWlmKHUuaW5kZXgrZj5yKWJyZWFrO28ucHVzaCh1LmluZGV4LGYpfWZvcih2YXIgbD1vLmxlbmd0aC0xO2w+PTA7bC09Mil7dmFyIGM9b1tsLTFdLGY9b1tsXTtpZihpKHQsYyx0LGMrZikpcmV0dXJuITB9fTtlbHNlIHZhciBjPWZ1bmN0aW9uKHQscixpKXt2YXIgcz1lLmdldExpbmUodCksbyx1O24ubGFzdEluZGV4PXI7d2hpbGUodT1uLmV4ZWMocykpe3ZhciBhPXVbMF0ubGVuZ3RoO289dS5pbmRleDtpZihpKHQsbyx0LG8rYSkpcmV0dXJuITA7aWYoIWEpe24ubGFzdEluZGV4PW8rPTE7aWYobz49cy5sZW5ndGgpcmV0dXJuITF9fX07cmV0dXJue2ZvckVhY2g6Zn19fSkuY2FsbChvLnByb3RvdHlwZSksdC5TZWFyY2g9b30pLGFjZS5kZWZpbmUoImFjZS9rZXlib2FyZC9oYXNoX2hhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2tleXMiLCJhY2UvbGliL3VzZXJhZ2VudCJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQpe3RoaXMucGxhdGZvcm09dHx8KGkuaXNNYWM/Im1hYyI6IndpbiIpLHRoaXMuY29tbWFuZHM9e30sdGhpcy5jb21tYW5kS2V5QmluZGluZz17fSx0aGlzLmFkZENvbW1hbmRzKGUpLHRoaXMuJHNpbmdsZUNvbW1hbmQ9ITB9ZnVuY3Rpb24gdShlLHQpe28uY2FsbCh0aGlzLGUsdCksdGhpcy4kc2luZ2xlQ29tbWFuZD0hMX12YXIgcj1lKCIuLi9saWIva2V5cyIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9ci5LRVlfTU9EUzt1LnByb3RvdHlwZT1vLnByb3RvdHlwZSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZS5iaW5kS2V5JiZlLmJpbmRLZXkucG9zaXRpb258fChlLmlzRGVmYXVsdD8tMTAwOjApfXRoaXMuYWRkQ29tbWFuZD1mdW5jdGlvbihlKXt0aGlzLmNvbW1hbmRzW2UubmFtZV0mJnRoaXMucmVtb3ZlQ29tbWFuZChlKSx0aGlzLmNvbW1hbmRzW2UubmFtZV09ZSxlLmJpbmRLZXkmJnRoaXMuX2J1aWxkS2V5SGFzaChlKX0sdGhpcy5yZW1vdmVDb21tYW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZSYmKHR5cGVvZiBlPT0ic3RyaW5nIj9lOmUubmFtZSk7ZT10aGlzLmNvbW1hbmRzW25dLHR8fGRlbGV0ZSB0aGlzLmNvbW1hbmRzW25dO3ZhciByPXRoaXMuY29tbWFuZEtleUJpbmRpbmc7Zm9yKHZhciBpIGluIHIpe3ZhciBzPXJbaV07aWYocz09ZSlkZWxldGUgcltpXTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocykpe3ZhciBvPXMuaW5kZXhPZihlKTtvIT0tMSYmKHMuc3BsaWNlKG8sMSkscy5sZW5ndGg9PTEmJihyW2ldPXNbMF0pKX19fSx0aGlzLmJpbmRLZXk9ZnVuY3Rpb24oZSx0LG4pe3R5cGVvZiBlPT0ib2JqZWN0IiYmZSYmKG49PXVuZGVmaW5lZCYmKG49ZS5wb3NpdGlvbiksZT1lW3RoaXMucGxhdGZvcm1dKTtpZighZSlyZXR1cm47aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpcmV0dXJuIHRoaXMuYWRkQ29tbWFuZCh7ZXhlYzp0LGJpbmRLZXk6ZSxuYW1lOnQubmFtZXx8ZX0pO2Uuc3BsaXQoInwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPSIiO2lmKGUuaW5kZXhPZigiICIpIT0tMSl7dmFyIGk9ZS5zcGxpdCgvXHMrLyk7ZT1pLnBvcCgpLGkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBhcnNlS2V5cyhlKSxuPXNbdC5oYXNoSWRdK3Qua2V5O3IrPShyPyIgIjoiIikrbix0aGlzLl9hZGRDb21tYW5kVG9CaW5kaW5nKHIsImNoYWluS2V5cyIpfSx0aGlzKSxyKz0iICJ9dmFyIG89dGhpcy5wYXJzZUtleXMoZSksdT1zW28uaGFzaElkXStvLmtleTt0aGlzLl9hZGRDb21tYW5kVG9CaW5kaW5nKHIrdSx0LG4pfSx0aGlzKX0sdGhpcy5fYWRkQ29tbWFuZFRvQmluZGluZz1mdW5jdGlvbih0LG4scil7dmFyIGk9dGhpcy5jb21tYW5kS2V5QmluZGluZyxzO2lmKCFuKWRlbGV0ZSBpW3RdO2Vsc2UgaWYoIWlbdF18fHRoaXMuJHNpbmdsZUNvbW1hbmQpaVt0XT1uO2Vsc2V7QXJyYXkuaXNBcnJheShpW3RdKT8ocz1pW3RdLmluZGV4T2YobikpIT0tMSYmaVt0XS5zcGxpY2UocywxKTppW3RdPVtpW3RdXSx0eXBlb2YgciE9Im51bWJlciImJihyPWUobikpO3ZhciBvPWlbdF07Zm9yKHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIHU9b1tzXSxhPWUodSk7aWYoYT5yKWJyZWFrfW8uc3BsaWNlKHMsMCxuKX19LHRoaXMuYWRkQ29tbWFuZHM9ZnVuY3Rpb24oZSl7ZSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1lW3RdO2lmKCFuKXJldHVybjtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJuIHRoaXMuYmluZEtleShuLHQpO3R5cGVvZiBuPT0iZnVuY3Rpb24iJiYobj17ZXhlYzpufSk7aWYodHlwZW9mIG4hPSJvYmplY3QiKXJldHVybjtuLm5hbWV8fChuLm5hbWU9dCksdGhpcy5hZGRDb21tYW5kKG4pfSx0aGlzKX0sdGhpcy5yZW1vdmVDb21tYW5kcz1mdW5jdGlvbihlKXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMucmVtb3ZlQ29tbWFuZChlW3RdKX0sdGhpcyl9LHRoaXMuYmluZEtleXM9ZnVuY3Rpb24oZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLmJpbmRLZXkodCxlW3RdKX0sdGhpcyl9LHRoaXMuX2J1aWxkS2V5SGFzaD1mdW5jdGlvbihlKXt0aGlzLmJpbmRLZXkoZS5iaW5kS2V5LGUpfSx0aGlzLnBhcnNlS2V5cz1mdW5jdGlvbihlKXt2YXIgdD1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1tcLVwrXShbXC1cK10pPy8pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLG49dC5wb3AoKSxpPXJbbl07aWYoci5GVU5DVElPTl9LRVlTW2ldKW49ci5GVU5DVElPTl9LRVlTW2ldLnRvTG93ZXJDYXNlKCk7ZWxzZXtpZighdC5sZW5ndGgpcmV0dXJue2tleTpuLGhhc2hJZDotMX07aWYodC5sZW5ndGg9PTEmJnRbMF09PSJzaGlmdCIpcmV0dXJue2tleTpuLnRvVXBwZXJDYXNlKCksaGFzaElkOi0xfX12YXIgcz0wO2Zvcih2YXIgbz10Lmxlbmd0aDtvLS07KXt2YXIgdT1yLktFWV9NT0RTW3Rbb11dO2lmKHU9PW51bGwpcmV0dXJuIHR5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIiYmY29uc29sZS5lcnJvcigiaW52YWxpZCBtb2RpZmllciAiK3Rbb10rIiBpbiAiK2UpLCExO3N8PXV9cmV0dXJue2tleTpuLGhhc2hJZDpzfX0sdGhpcy5maW5kS2V5Q29tbWFuZD1mdW5jdGlvbih0LG4pe3ZhciByPXNbdF0rbjtyZXR1cm4gdGhpcy5jb21tYW5kS2V5QmluZGluZ1tyXX0sdGhpcy5oYW5kbGVLZXlib2FyZD1mdW5jdGlvbihlLHQsbixyKXtpZihyPDApcmV0dXJuO3ZhciBpPXNbdF0rbixvPXRoaXMuY29tbWFuZEtleUJpbmRpbmdbaV07ZS4ka2V5Q2hhaW4mJihlLiRrZXlDaGFpbis9IiAiK2ksbz10aGlzLmNvbW1hbmRLZXlCaW5kaW5nW2UuJGtleUNoYWluXXx8byk7aWYobylpZihvPT0iY2hhaW5LZXlzInx8b1tvLmxlbmd0aC0xXT09ImNoYWluS2V5cyIpcmV0dXJuIGUuJGtleUNoYWluPWUuJGtleUNoYWlufHxpLHtjb21tYW5kOiJudWxsIn07aWYoZS4ka2V5Q2hhaW4paWYoISF0JiZ0IT00fHxuLmxlbmd0aCE9MSl7aWYodD09LTF8fHI+MCllLiRrZXlDaGFpbj0iIn1lbHNlIGUuJGtleUNoYWluPWUuJGtleUNoYWluLnNsaWNlKDAsLWkubGVuZ3RoLTEpO3JldHVybntjb21tYW5kOm99fSx0aGlzLmdldFN0YXR1c1RleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC4ka2V5Q2hhaW58fCIifX0uY2FsbChvLnByb3RvdHlwZSksdC5IYXNoSGFuZGxlcj1vLHQuTXVsdGlIYXNoSGFuZGxlcj11fSksYWNlLmRlZmluZSgiYWNlL2NvbW1hbmRzL2NvbW1hbmRfbWFuYWdlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2tleWJvYXJkL2hhc2hfaGFuZGxlciIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4va2V5Ym9hcmQvaGFzaF9oYW5kbGVyIikuTXVsdGlIYXNoSGFuZGxlcixzPWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLG89ZnVuY3Rpb24oZSx0KXtpLmNhbGwodGhpcyx0LGUpLHRoaXMuYnlOYW1lPXRoaXMuY29tbWFuZHMsdGhpcy5zZXREZWZhdWx0SGFuZGxlcigiZXhlYyIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tbWFuZC5leGVjKGUuZWRpdG9yLGUuYXJnc3x8e30pfSl9O3IuaW5oZXJpdHMobyxpKSxmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMscyksdGhpcy5leGVjPWZ1bmN0aW9uKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHI9ZS5sZW5ndGg7ci0tOylpZih0aGlzLmV4ZWMoZVtyXSx0LG4pKXJldHVybiEwO3JldHVybiExfXR5cGVvZiBlPT0ic3RyaW5nIiYmKGU9dGhpcy5jb21tYW5kc1tlXSk7aWYoIWUpcmV0dXJuITE7aWYodCYmdC4kcmVhZE9ubHkmJiFlLnJlYWRPbmx5KXJldHVybiExO2lmKHRoaXMuJGNoZWNrQ29tbWFuZFN0YXRlIT0wJiZlLmlzQXZhaWxhYmxlJiYhZS5pc0F2YWlsYWJsZSh0KSlyZXR1cm4hMTt2YXIgaT17ZWRpdG9yOnQsY29tbWFuZDplLGFyZ3M6bn07cmV0dXJuIGkucmV0dXJuVmFsdWU9dGhpcy5fZW1pdCgiZXhlYyIsaSksdGhpcy5fc2lnbmFsKCJhZnRlckV4ZWMiLGkpLGkucmV0dXJuVmFsdWU9PT0hMT8hMTohMH0sdGhpcy50b2dnbGVSZWNvcmRpbmc9ZnVuY3Rpb24oZSl7aWYodGhpcy4kaW5SZXBsYXkpcmV0dXJuO3JldHVybiBlJiZlLl9lbWl0KCJjaGFuZ2VTdGF0dXMiKSx0aGlzLnJlY29yZGluZz8odGhpcy5tYWNyby5wb3AoKSx0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImV4ZWMiLHRoaXMuJGFkZENvbW1hbmRUb01hY3JvKSx0aGlzLm1hY3JvLmxlbmd0aHx8KHRoaXMubWFjcm89dGhpcy5vbGRNYWNybyksdGhpcy5yZWNvcmRpbmc9ITEpOih0aGlzLiRhZGRDb21tYW5kVG9NYWNyb3x8KHRoaXMuJGFkZENvbW1hbmRUb01hY3JvPWZ1bmN0aW9uKGUpe3RoaXMubWFjcm8ucHVzaChbZS5jb21tYW5kLGUuYXJnc10pfS5iaW5kKHRoaXMpKSx0aGlzLm9sZE1hY3JvPXRoaXMubWFjcm8sdGhpcy5tYWNybz1bXSx0aGlzLm9uKCJleGVjIix0aGlzLiRhZGRDb21tYW5kVG9NYWNybyksdGhpcy5yZWNvcmRpbmc9ITApfSx0aGlzLnJlcGxheT1mdW5jdGlvbihlKXtpZih0aGlzLiRpblJlcGxheXx8IXRoaXMubWFjcm8pcmV0dXJuO2lmKHRoaXMucmVjb3JkaW5nKXJldHVybiB0aGlzLnRvZ2dsZVJlY29yZGluZyhlKTt0cnl7dGhpcy4kaW5SZXBsYXk9ITAsdGhpcy5tYWNyby5mb3JFYWNoKGZ1bmN0aW9uKHQpe3R5cGVvZiB0PT0ic3RyaW5nIj90aGlzLmV4ZWModCxlKTp0aGlzLmV4ZWModFswXSxlLHRbMV0pfSx0aGlzKX1maW5hbGx5e3RoaXMuJGluUmVwbGF5PSExfX0sdGhpcy50cmltTWFjcm89ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZVswXSE9InN0cmluZyImJihlWzBdPWVbMF0ubmFtZSksZVsxXXx8KGU9ZVswXSksZX0pfX0uY2FsbChvLnByb3RvdHlwZSksdC5Db21tYW5kTWFuYWdlcj1vfSksYWNlLmRlZmluZSgiYWNlL2NvbW1hbmRzL2RlZmF1bHRfY29tbWFuZHMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2xhbmciLCJhY2UvY29uZmlnIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCl7cmV0dXJue3dpbjplLG1hYzp0fX12YXIgcj1lKCIuLi9saWIvbGFuZyIpLGk9ZSgiLi4vY29uZmlnIikscz1lKCIuLi9yYW5nZSIpLlJhbmdlO3QuY29tbWFuZHM9W3tuYW1lOiJzaG93U2V0dGluZ3NNZW51IixiaW5kS2V5Om8oIkN0cmwtLCIsIkNvbW1hbmQtLCIpLGV4ZWM6ZnVuY3Rpb24oZSl7aS5sb2FkTW9kdWxlKCJhY2UvZXh0L3NldHRpbmdzX21lbnUiLGZ1bmN0aW9uKHQpe3QuaW5pdChlKSxlLnNob3dTZXR0aW5nc01lbnUoKX0pfSxyZWFkT25seTohMH0se25hbWU6ImdvVG9OZXh0RXJyb3IiLGJpbmRLZXk6bygiQWx0LUUiLCJGNCIpLGV4ZWM6ZnVuY3Rpb24oZSl7aS5sb2FkTW9kdWxlKCIuL2V4dC9lcnJvcl9tYXJrZXIiLGZ1bmN0aW9uKHQpe3Quc2hvd0Vycm9yTWFya2VyKGUsMSl9KX0sc2Nyb2xsSW50b1ZpZXc6ImFuaW1hdGUiLHJlYWRPbmx5OiEwfSx7bmFtZToiZ29Ub1ByZXZpb3VzRXJyb3IiLGJpbmRLZXk6bygiQWx0LVNoaWZ0LUUiLCJTaGlmdC1GNCIpLGV4ZWM6ZnVuY3Rpb24oZSl7aS5sb2FkTW9kdWxlKCIuL2V4dC9lcnJvcl9tYXJrZXIiLGZ1bmN0aW9uKHQpe3Quc2hvd0Vycm9yTWFya2VyKGUsLTEpfSl9LHNjcm9sbEludG9WaWV3OiJhbmltYXRlIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdGFsbCIsZGVzY3JpcHRpb246IlNlbGVjdCBhbGwiLGJpbmRLZXk6bygiQ3RybC1BIiwiQ29tbWFuZC1BIiksZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdEFsbCgpfSxyZWFkT25seTohMH0se25hbWU6ImNlbnRlcnNlbGVjdGlvbiIsZGVzY3JpcHRpb246IkNlbnRlciBzZWxlY3Rpb24iLGJpbmRLZXk6byhudWxsLCJDdHJsLUwiKSxleGVjOmZ1bmN0aW9uKGUpe2UuY2VudGVyU2VsZWN0aW9uKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b2xpbmUiLGRlc2NyaXB0aW9uOiJHbyB0byBsaW5lLi4uIixiaW5kS2V5Om8oIkN0cmwtTCIsIkNvbW1hbmQtTCIpLGV4ZWM6ZnVuY3Rpb24oZSx0KXt0eXBlb2YgdD09Im51bWJlciImJiFpc05hTih0KSYmZS5nb3RvTGluZSh0KSxlLnByb21wdCh7JHR5cGU6ImdvdG9MaW5lIn0pfSxyZWFkT25seTohMH0se25hbWU6ImZvbGQiLGJpbmRLZXk6bygiQWx0LUx8Q3RybC1GMSIsIkNvbW1hbmQtQWx0LUx8Q29tbWFuZC1GMSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLnRvZ2dsZUZvbGQoITEpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIsc2Nyb2xsSW50b1ZpZXc6ImNlbnRlciIscmVhZE9ubHk6ITB9LHtuYW1lOiJ1bmZvbGQiLGJpbmRLZXk6bygiQWx0LVNoaWZ0LUx8Q3RybC1TaGlmdC1GMSIsIkNvbW1hbmQtQWx0LVNoaWZ0LUx8Q29tbWFuZC1TaGlmdC1GMSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLnRvZ2dsZUZvbGQoITApfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIsc2Nyb2xsSW50b1ZpZXc6ImNlbnRlciIscmVhZE9ubHk6ITB9LHtuYW1lOiJ0b2dnbGVGb2xkV2lkZ2V0IixiaW5kS2V5Om8oIkYyIiwiRjIiKSxleGVjOmZ1bmN0aW9uKGUpe2Uuc2Vzc2lvbi50b2dnbGVGb2xkV2lkZ2V0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY2VudGVyIixyZWFkT25seTohMH0se25hbWU6InRvZ2dsZVBhcmVudEZvbGRXaWRnZXQiLGJpbmRLZXk6bygiQWx0LUYyIiwiQWx0LUYyIiksZXhlYzpmdW5jdGlvbihlKXtlLnNlc3Npb24udG9nZ2xlRm9sZFdpZGdldCghMCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY2VudGVyIixyZWFkT25seTohMH0se25hbWU6ImZvbGRhbGwiLGRlc2NyaXB0aW9uOiJGb2xkIGFsbCIsYmluZEtleTpvKG51bGwsIkN0cmwtQ29tbWFuZC1PcHRpb24tMCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLmZvbGRBbGwoKX0sc2Nyb2xsSW50b1ZpZXc6ImNlbnRlciIscmVhZE9ubHk6ITB9LHtuYW1lOiJmb2xkT3RoZXIiLGRlc2NyaXB0aW9uOiJGb2xkIG90aGVyIixiaW5kS2V5Om8oIkFsdC0wIiwiQ29tbWFuZC1PcHRpb24tMCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLmZvbGRBbGwoKSxlLnNlc3Npb24udW5mb2xkKGUuc2VsZWN0aW9uLmdldEFsbFJhbmdlcygpKX0sc2Nyb2xsSW50b1ZpZXc6ImNlbnRlciIscmVhZE9ubHk6ITB9LHtuYW1lOiJ1bmZvbGRhbGwiLGRlc2NyaXB0aW9uOiJVbmZvbGQgYWxsIixiaW5kS2V5Om8oIkFsdC1TaGlmdC0wIiwiQ29tbWFuZC1PcHRpb24tU2hpZnQtMCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLnVuZm9sZCgpfSxzY3JvbGxJbnRvVmlldzoiY2VudGVyIixyZWFkT25seTohMH0se25hbWU6ImZpbmRuZXh0IixkZXNjcmlwdGlvbjoiRmluZCBuZXh0IixiaW5kS2V5Om8oIkN0cmwtSyIsIkNvbW1hbmQtRyIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5maW5kTmV4dCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIsc2Nyb2xsSW50b1ZpZXc6ImNlbnRlciIscmVhZE9ubHk6ITB9LHtuYW1lOiJmaW5kcHJldmlvdXMiLGRlc2NyaXB0aW9uOiJGaW5kIHByZXZpb3VzIixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtSyIsIkNvbW1hbmQtU2hpZnQtRyIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5maW5kUHJldmlvdXMoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjZW50ZXIiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0T3JGaW5kTmV4dCIsZGVzY3JpcHRpb246IlNlbGVjdCBvciBmaW5kIG5leHQiLGJpbmRLZXk6bygiQWx0LUsiLCJDdHJsLUciKSxleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0aW9uLmlzRW1wdHkoKT9lLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCk6ZS5maW5kTmV4dCgpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdE9yRmluZFByZXZpb3VzIixkZXNjcmlwdGlvbjoiU2VsZWN0IG9yIGZpbmQgcHJldmlvdXMiLGJpbmRLZXk6bygiQWx0LVNoaWZ0LUsiLCJDdHJsLVNoaWZ0LUciKSxleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0aW9uLmlzRW1wdHkoKT9lLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCk6ZS5maW5kUHJldmlvdXMoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJmaW5kIixkZXNjcmlwdGlvbjoiRmluZCIsYmluZEtleTpvKCJDdHJsLUYiLCJDb21tYW5kLUYiKSxleGVjOmZ1bmN0aW9uKGUpe2kubG9hZE1vZHVsZSgiYWNlL2V4dC9zZWFyY2hib3giLGZ1bmN0aW9uKHQpe3QuU2VhcmNoKGUpfSl9LHJlYWRPbmx5OiEwfSx7bmFtZToib3ZlcndyaXRlIixkZXNjcmlwdGlvbjoiT3ZlcndyaXRlIixiaW5kS2V5OiJJbnNlcnQiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS50b2dnbGVPdmVyd3JpdGUoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R0b3N0YXJ0IixkZXNjcmlwdGlvbjoiU2VsZWN0IHRvIHN0YXJ0IixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtSG9tZSIsIkNvbW1hbmQtU2hpZnQtSG9tZXxDb21tYW5kLVNoaWZ0LVVwIiksZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdEZpbGVTdGFydCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITAsc2Nyb2xsSW50b1ZpZXc6ImFuaW1hdGUiLGFjZUNvbW1hbmRHcm91cDoiZmlsZUp1bXAifSx7bmFtZToiZ290b3N0YXJ0IixkZXNjcmlwdGlvbjoiR28gdG8gc3RhcnQiLGJpbmRLZXk6bygiQ3RybC1Ib21lIiwiQ29tbWFuZC1Ib21lfENvbW1hbmQtVXAiKSxleGVjOmZ1bmN0aW9uKGUpe2UubmF2aWdhdGVGaWxlU3RhcnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwLHNjcm9sbEludG9WaWV3OiJhbmltYXRlIixhY2VDb21tYW5kR3JvdXA6ImZpbGVKdW1wIn0se25hbWU6InNlbGVjdHVwIixkZXNjcmlwdGlvbjoiU2VsZWN0IHVwIixiaW5kS2V5Om8oIlNoaWZ0LVVwIiwiU2hpZnQtVXB8Q3RybC1TaGlmdC1QIiksZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdFVwKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6ImdvbGluZXVwIixkZXNjcmlwdGlvbjoiR28gbGluZSB1cCIsYmluZEtleTpvKCJVcCIsIlVwfEN0cmwtUCIpLGV4ZWM6ZnVuY3Rpb24oZSx0KXtlLm5hdmlnYXRlVXAodC50aW1lcyl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdHRvZW5kIixkZXNjcmlwdGlvbjoiU2VsZWN0IHRvIGVuZCIsYmluZEtleTpvKCJDdHJsLVNoaWZ0LUVuZCIsIkNvbW1hbmQtU2hpZnQtRW5kfENvbW1hbmQtU2hpZnQtRG93biIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RGaWxlRW5kKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMCxzY3JvbGxJbnRvVmlldzoiYW5pbWF0ZSIsYWNlQ29tbWFuZEdyb3VwOiJmaWxlSnVtcCJ9LHtuYW1lOiJnb3RvZW5kIixkZXNjcmlwdGlvbjoiR28gdG8gZW5kIixiaW5kS2V5Om8oIkN0cmwtRW5kIiwiQ29tbWFuZC1FbmR8Q29tbWFuZC1Eb3duIiksZXhlYzpmdW5jdGlvbihlKXtlLm5hdmlnYXRlRmlsZUVuZCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITAsc2Nyb2xsSW50b1ZpZXc6ImFuaW1hdGUiLGFjZUNvbW1hbmRHcm91cDoiZmlsZUp1bXAifSx7bmFtZToic2VsZWN0ZG93biIsZGVzY3JpcHRpb246IlNlbGVjdCBkb3duIixiaW5kS2V5Om8oIlNoaWZ0LURvd24iLCJTaGlmdC1Eb3dufEN0cmwtU2hpZnQtTiIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3REb3duKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6ImdvbGluZWRvd24iLGRlc2NyaXB0aW9uOiJHbyBsaW5lIGRvd24iLGJpbmRLZXk6bygiRG93biIsIkRvd258Q3RybC1OIiksZXhlYzpmdW5jdGlvbihlLHQpe2UubmF2aWdhdGVEb3duKHQudGltZXMpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIsc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R3b3JkbGVmdCIsZGVzY3JpcHRpb246IlNlbGVjdCB3b3JkIGxlZnQiLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1MZWZ0IiwiT3B0aW9uLVNoaWZ0LUxlZnQiKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0V29yZExlZnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3dvcmRsZWZ0IixkZXNjcmlwdGlvbjoiR28gdG8gd29yZCBsZWZ0IixiaW5kS2V5Om8oIkN0cmwtTGVmdCIsIk9wdGlvbi1MZWZ0IiksZXhlYzpmdW5jdGlvbihlKXtlLm5hdmlnYXRlV29yZExlZnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0dG9saW5lc3RhcnQiLGRlc2NyaXB0aW9uOiJTZWxlY3QgdG8gbGluZSBzdGFydCIsYmluZEtleTpvKCJBbHQtU2hpZnQtTGVmdCIsIkNvbW1hbmQtU2hpZnQtTGVmdHxDdHJsLVNoaWZ0LUEiKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0TGluZVN0YXJ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6ImdvdG9saW5lc3RhcnQiLGRlc2NyaXB0aW9uOiJHbyB0byBsaW5lIHN0YXJ0IixiaW5kS2V5Om8oIkFsdC1MZWZ0fEhvbWUiLCJDb21tYW5kLUxlZnR8SG9tZXxDdHJsLUEiKSxleGVjOmZ1bmN0aW9uKGUpe2UubmF2aWdhdGVMaW5lU3RhcnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0bGVmdCIsZGVzY3JpcHRpb246IlNlbGVjdCBsZWZ0IixiaW5kS2V5Om8oIlNoaWZ0LUxlZnQiLCJTaGlmdC1MZWZ0fEN0cmwtU2hpZnQtQiIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RMZWZ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6ImdvdG9sZWZ0IixkZXNjcmlwdGlvbjoiR28gdG8gbGVmdCIsYmluZEtleTpvKCJMZWZ0IiwiTGVmdHxDdHJsLUIiKSxleGVjOmZ1bmN0aW9uKGUsdCl7ZS5uYXZpZ2F0ZUxlZnQodC50aW1lcyl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdHdvcmRyaWdodCIsZGVzY3JpcHRpb246IlNlbGVjdCB3b3JkIHJpZ2h0IixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtUmlnaHQiLCJPcHRpb24tU2hpZnQtUmlnaHQiKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0V29yZFJpZ2h0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6ImdvdG93b3JkcmlnaHQiLGRlc2NyaXB0aW9uOiJHbyB0byB3b3JkIHJpZ2h0IixiaW5kS2V5Om8oIkN0cmwtUmlnaHQiLCJPcHRpb24tUmlnaHQiKSxleGVjOmZ1bmN0aW9uKGUpe2UubmF2aWdhdGVXb3JkUmlnaHQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0dG9saW5lZW5kIixkZXNjcmlwdGlvbjoiU2VsZWN0IHRvIGxpbmUgZW5kIixiaW5kS2V5Om8oIkFsdC1TaGlmdC1SaWdodCIsIkNvbW1hbmQtU2hpZnQtUmlnaHR8U2hpZnQtRW5kfEN0cmwtU2hpZnQtRSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RMaW5lRW5kKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6ImdvdG9saW5lZW5kIixkZXNjcmlwdGlvbjoiR28gdG8gbGluZSBlbmQiLGJpbmRLZXk6bygiQWx0LVJpZ2h0fEVuZCIsIkNvbW1hbmQtUmlnaHR8RW5kfEN0cmwtRSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5uYXZpZ2F0ZUxpbmVFbmQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0cmlnaHQiLGRlc2NyaXB0aW9uOiJTZWxlY3QgcmlnaHQiLGJpbmRLZXk6bygiU2hpZnQtUmlnaHQiLCJTaGlmdC1SaWdodCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSaWdodCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIsc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvcmlnaHQiLGRlc2NyaXB0aW9uOiJHbyB0byByaWdodCIsYmluZEtleTpvKCJSaWdodCIsIlJpZ2h0fEN0cmwtRiIpLGV4ZWM6ZnVuY3Rpb24oZSx0KXtlLm5hdmlnYXRlUmlnaHQodC50aW1lcyl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdHBhZ2Vkb3duIixkZXNjcmlwdGlvbjoiU2VsZWN0IHBhZ2UgZG93biIsYmluZEtleToiU2hpZnQtUGFnZURvd24iLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RQYWdlRG93bigpfSxyZWFkT25seTohMH0se25hbWU6InBhZ2Vkb3duIixkZXNjcmlwdGlvbjoiUGFnZSBkb3duIixiaW5kS2V5Om8obnVsbCwiT3B0aW9uLVBhZ2VEb3duIiksZXhlYzpmdW5jdGlvbihlKXtlLnNjcm9sbFBhZ2VEb3duKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3BhZ2Vkb3duIixkZXNjcmlwdGlvbjoiR28gdG8gcGFnZSBkb3duIixiaW5kS2V5Om8oIlBhZ2VEb3duIiwiUGFnZURvd258Q3RybC1WIiksZXhlYzpmdW5jdGlvbihlKXtlLmdvdG9QYWdlRG93bigpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdHBhZ2V1cCIsZGVzY3JpcHRpb246IlNlbGVjdCBwYWdlIHVwIixiaW5kS2V5OiJTaGlmdC1QYWdlVXAiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RQYWdlVXAoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJwYWdldXAiLGRlc2NyaXB0aW9uOiJQYWdlIHVwIixiaW5kS2V5Om8obnVsbCwiT3B0aW9uLVBhZ2VVcCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zY3JvbGxQYWdlVXAoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvcGFnZXVwIixkZXNjcmlwdGlvbjoiR28gdG8gcGFnZSB1cCIsYmluZEtleToiUGFnZVVwIixleGVjOmZ1bmN0aW9uKGUpe2UuZ290b1BhZ2VVcCgpfSxyZWFkT25seTohMH0se25hbWU6InNjcm9sbHVwIixkZXNjcmlwdGlvbjoiU2Nyb2xsIHVwIixiaW5kS2V5Om8oIkN0cmwtVXAiLG51bGwpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW5kZXJlci5zY3JvbGxCeSgwLC0yKmUucmVuZGVyZXIubGF5ZXJDb25maWcubGluZUhlaWdodCl9LHJlYWRPbmx5OiEwfSx7bmFtZToic2Nyb2xsZG93biIsZGVzY3JpcHRpb246IlNjcm9sbCBkb3duIixiaW5kS2V5Om8oIkN0cmwtRG93biIsbnVsbCksZXhlYzpmdW5jdGlvbihlKXtlLnJlbmRlcmVyLnNjcm9sbEJ5KDAsMiplLnJlbmRlcmVyLmxheWVyQ29uZmlnLmxpbmVIZWlnaHQpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdGxpbmVzdGFydCIsZGVzY3JpcHRpb246IlNlbGVjdCBsaW5lIHN0YXJ0IixiaW5kS2V5OiJTaGlmdC1Ib21lIixleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0TGluZVN0YXJ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdGxpbmVlbmQiLGRlc2NyaXB0aW9uOiJTZWxlY3QgbGluZSBlbmQiLGJpbmRLZXk6IlNoaWZ0LUVuZCIsZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdExpbmVFbmQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToidG9nZ2xlcmVjb3JkaW5nIixkZXNjcmlwdGlvbjoiVG9nZ2xlIHJlY29yZGluZyIsYmluZEtleTpvKCJDdHJsLUFsdC1FIiwiQ29tbWFuZC1PcHRpb24tRSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5jb21tYW5kcy50b2dnbGVSZWNvcmRpbmcoZSl9LHJlYWRPbmx5OiEwfSx7bmFtZToicmVwbGF5bWFjcm8iLGRlc2NyaXB0aW9uOiJSZXBsYXkgbWFjcm8iLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1FIiwiQ29tbWFuZC1TaGlmdC1FIiksZXhlYzpmdW5jdGlvbihlKXtlLmNvbW1hbmRzLnJlcGxheShlKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJqdW1wdG9tYXRjaGluZyIsZGVzY3JpcHRpb246Ikp1bXAgdG8gbWF0Y2hpbmciLGJpbmRLZXk6bygiQ3RybC1cXHxDdHJsLVAiLCJDb21tYW5kLVxcIiksZXhlYzpmdW5jdGlvbihlKXtlLmp1bXBUb01hdGNoaW5nKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiYW5pbWF0ZSIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R0b21hdGNoaW5nIixkZXNjcmlwdGlvbjoiU2VsZWN0IHRvIG1hdGNoaW5nIixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtXFx8Q3RybC1TaGlmdC1QIiwiQ29tbWFuZC1TaGlmdC1cXCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5qdW1wVG9NYXRjaGluZyghMCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiYW5pbWF0ZSIscmVhZE9ubHk6ITB9LHtuYW1lOiJleHBhbmRUb01hdGNoaW5nIixkZXNjcmlwdGlvbjoiRXhwYW5kIHRvIG1hdGNoaW5nIixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtTSIsIkN0cmwtU2hpZnQtTSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5qdW1wVG9NYXRjaGluZyghMCwhMCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiYW5pbWF0ZSIscmVhZE9ubHk6ITB9LHtuYW1lOiJwYXNzS2V5c1RvQnJvd3NlciIsZGVzY3JpcHRpb246IlBhc3Mga2V5cyB0byBicm93c2VyIixiaW5kS2V5Om8obnVsbCxudWxsKSxleGVjOmZ1bmN0aW9uKCl7fSxwYXNzRXZlbnQ6ITAscmVhZE9ubHk6ITB9LHtuYW1lOiJjb3B5IixkZXNjcmlwdGlvbjoiQ29weSIsZXhlYzpmdW5jdGlvbihlKXt9LHJlYWRPbmx5OiEwfSx7bmFtZToiY3V0IixkZXNjcmlwdGlvbjoiQ3V0IixleGVjOmZ1bmN0aW9uKGUpe3ZhciB0PWUuJGNvcHlXaXRoRW1wdHlTZWxlY3Rpb24mJmUuc2VsZWN0aW9uLmlzRW1wdHkoKSxuPXQ/ZS5zZWxlY3Rpb24uZ2V0TGluZVJhbmdlKCk6ZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtlLl9lbWl0KCJjdXQiLG4pLG4uaXNFbXB0eSgpfHxlLnNlc3Npb24ucmVtb3ZlKG4pLGUuY2xlYXJTZWxlY3Rpb24oKX0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIsbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToicGFzdGUiLGRlc2NyaXB0aW9uOiJQYXN0ZSIsZXhlYzpmdW5jdGlvbihlLHQpe2UuJGhhbmRsZVBhc3RlKHQpfSxzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InJlbW92ZWxpbmUiLGRlc2NyaXB0aW9uOiJSZW1vdmUgbGluZSIsYmluZEtleTpvKCJDdHJsLUQiLCJDb21tYW5kLUQiKSxleGVjOmZ1bmN0aW9uKGUpe2UucmVtb3ZlTGluZXMoKX0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIsbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2hMaW5lIn0se25hbWU6ImR1cGxpY2F0ZVNlbGVjdGlvbiIsZGVzY3JpcHRpb246IkR1cGxpY2F0ZSBzZWxlY3Rpb24iLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1EIiwiQ29tbWFuZC1TaGlmdC1EIiksZXhlYzpmdW5jdGlvbihlKXtlLmR1cGxpY2F0ZVNlbGVjdGlvbigpfSxzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJzb3J0bGluZXMiLGRlc2NyaXB0aW9uOiJTb3J0IGxpbmVzIixiaW5kS2V5Om8oIkN0cmwtQWx0LVMiLCJDb21tYW5kLUFsdC1TIiksZXhlYzpmdW5jdGlvbihlKXtlLnNvcnRMaW5lcygpfSxzY3JvbGxJbnRvVmlldzoic2VsZWN0aW9uIixtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaExpbmUifSx7bmFtZToidG9nZ2xlY29tbWVudCIsZGVzY3JpcHRpb246IlRvZ2dsZSBjb21tZW50IixiaW5kS2V5Om8oIkN0cmwtLyIsIkNvbW1hbmQtLyIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS50b2dnbGVDb21tZW50TGluZXMoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2hMaW5lIixzY3JvbGxJbnRvVmlldzoic2VsZWN0aW9uUGFydCJ9LHtuYW1lOiJ0b2dnbGVCbG9ja0NvbW1lbnQiLGRlc2NyaXB0aW9uOiJUb2dnbGUgYmxvY2sgY29tbWVudCIsYmluZEtleTpvKCJDdHJsLVNoaWZ0LS8iLCJDb21tYW5kLVNoaWZ0LS8iKSxleGVjOmZ1bmN0aW9uKGUpe2UudG9nZ2xlQmxvY2tDb21tZW50KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoic2VsZWN0aW9uUGFydCJ9LHtuYW1lOiJtb2RpZnlOdW1iZXJVcCIsZGVzY3JpcHRpb246Ik1vZGlmeSBudW1iZXIgdXAiLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1VcCIsIkFsdC1TaGlmdC1VcCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5tb2RpZnlOdW1iZXIoMSl9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6Im1vZGlmeU51bWJlckRvd24iLGRlc2NyaXB0aW9uOiJNb2RpZnkgbnVtYmVyIGRvd24iLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1Eb3duIiwiQWx0LVNoaWZ0LURvd24iKSxleGVjOmZ1bmN0aW9uKGUpe2UubW9kaWZ5TnVtYmVyKC0xKX0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIsbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToicmVwbGFjZSIsZGVzY3JpcHRpb246IlJlcGxhY2UiLGJpbmRLZXk6bygiQ3RybC1IIiwiQ29tbWFuZC1PcHRpb24tRiIpLGV4ZWM6ZnVuY3Rpb24oZSl7aS5sb2FkTW9kdWxlKCJhY2UvZXh0L3NlYXJjaGJveCIsZnVuY3Rpb24odCl7dC5TZWFyY2goZSwhMCl9KX19LHtuYW1lOiJ1bmRvIixkZXNjcmlwdGlvbjoiVW5kbyIsYmluZEtleTpvKCJDdHJsLVoiLCJDb21tYW5kLVoiKSxleGVjOmZ1bmN0aW9uKGUpe2UudW5kbygpfX0se25hbWU6InJlZG8iLGRlc2NyaXB0aW9uOiJSZWRvIixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtWnxDdHJsLVkiLCJDb21tYW5kLVNoaWZ0LVp8Q29tbWFuZC1ZIiksZXhlYzpmdW5jdGlvbihlKXtlLnJlZG8oKX19LHtuYW1lOiJjb3B5bGluZXN1cCIsZGVzY3JpcHRpb246IkNvcHkgbGluZXMgdXAiLGJpbmRLZXk6bygiQWx0LVNoaWZ0LVVwIiwiQ29tbWFuZC1PcHRpb24tVXAiKSxleGVjOmZ1bmN0aW9uKGUpe2UuY29weUxpbmVzVXAoKX0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciJ9LHtuYW1lOiJtb3ZlbGluZXN1cCIsZGVzY3JpcHRpb246Ik1vdmUgbGluZXMgdXAiLGJpbmRLZXk6bygiQWx0LVVwIiwiT3B0aW9uLVVwIiksZXhlYzpmdW5jdGlvbihlKXtlLm1vdmVMaW5lc1VwKCl9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToiY29weWxpbmVzZG93biIsZGVzY3JpcHRpb246IkNvcHkgbGluZXMgZG93biIsYmluZEtleTpvKCJBbHQtU2hpZnQtRG93biIsIkNvbW1hbmQtT3B0aW9uLURvd24iKSxleGVjOmZ1bmN0aW9uKGUpe2UuY29weUxpbmVzRG93bigpfSxzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6Im1vdmVsaW5lc2Rvd24iLGRlc2NyaXB0aW9uOiJNb3ZlIGxpbmVzIGRvd24iLGJpbmRLZXk6bygiQWx0LURvd24iLCJPcHRpb24tRG93biIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5tb3ZlTGluZXNEb3duKCl9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToiZGVsIixkZXNjcmlwdGlvbjoiRGVsZXRlIixiaW5kS2V5Om8oIkRlbGV0ZSIsIkRlbGV0ZXxDdHJsLUR8U2hpZnQtRGVsZXRlIiksZXhlYzpmdW5jdGlvbihlKXtlLnJlbW92ZSgicmlnaHQiKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToiYmFja3NwYWNlIixkZXNjcmlwdGlvbjoiQmFja3NwYWNlIixiaW5kS2V5Om8oIlNoaWZ0LUJhY2tzcGFjZXxCYWNrc3BhY2UiLCJDdHJsLUJhY2tzcGFjZXxTaGlmdC1CYWNrc3BhY2V8QmFja3NwYWNlfEN0cmwtSCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW1vdmUoImxlZnQiKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToiY3V0X29yX2RlbGV0ZSIsZGVzY3JpcHRpb246IkN1dCBvciBkZWxldGUiLGJpbmRLZXk6bygiU2hpZnQtRGVsZXRlIixudWxsKSxleGVjOmZ1bmN0aW9uKGUpe2lmKCFlLnNlbGVjdGlvbi5pc0VtcHR5KCkpcmV0dXJuITE7ZS5yZW1vdmUoImxlZnQiKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToicmVtb3ZldG9saW5lc3RhcnQiLGRlc2NyaXB0aW9uOiJSZW1vdmUgdG8gbGluZSBzdGFydCIsYmluZEtleTpvKCJBbHQtQmFja3NwYWNlIiwiQ29tbWFuZC1CYWNrc3BhY2UiKSxleGVjOmZ1bmN0aW9uKGUpe2UucmVtb3ZlVG9MaW5lU3RhcnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToicmVtb3ZldG9saW5lZW5kIixkZXNjcmlwdGlvbjoiUmVtb3ZlIHRvIGxpbmUgZW5kIixiaW5kS2V5Om8oIkFsdC1EZWxldGUiLCJDdHJsLUt8Q29tbWFuZC1EZWxldGUiKSxleGVjOmZ1bmN0aW9uKGUpe2UucmVtb3ZlVG9MaW5lRW5kKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InJlbW92ZXRvbGluZXN0YXJ0aGFyZCIsZGVzY3JpcHRpb246IlJlbW92ZSB0byBsaW5lIHN0YXJ0IGhhcmQiLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1CYWNrc3BhY2UiLG51bGwpLGV4ZWM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTt0LnN0YXJ0LmNvbHVtbj0wLGUuc2Vzc2lvbi5yZW1vdmUodCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InJlbW92ZXRvbGluZWVuZGhhcmQiLGRlc2NyaXB0aW9uOiJSZW1vdmUgdG8gbGluZSBlbmQgaGFyZCIsYmluZEtleTpvKCJDdHJsLVNoaWZ0LURlbGV0ZSIsbnVsbCksZXhlYzpmdW5jdGlvbihlKXt2YXIgdD1lLnNlbGVjdGlvbi5nZXRSYW5nZSgpO3QuZW5kLmNvbHVtbj1OdW1iZXIuTUFYX1ZBTFVFLGUuc2Vzc2lvbi5yZW1vdmUodCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InJlbW92ZXdvcmRsZWZ0IixkZXNjcmlwdGlvbjoiUmVtb3ZlIHdvcmQgbGVmdCIsYmluZEtleTpvKCJDdHJsLUJhY2tzcGFjZSIsIkFsdC1CYWNrc3BhY2V8Q3RybC1BbHQtQmFja3NwYWNlIiksZXhlYzpmdW5jdGlvbihlKXtlLnJlbW92ZVdvcmRMZWZ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InJlbW92ZXdvcmRyaWdodCIsZGVzY3JpcHRpb246IlJlbW92ZSB3b3JkIHJpZ2h0IixiaW5kS2V5Om8oIkN0cmwtRGVsZXRlIiwiQWx0LURlbGV0ZSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW1vdmVXb3JkUmlnaHQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToib3V0ZGVudCIsZGVzY3JpcHRpb246Ik91dGRlbnQiLGJpbmRLZXk6bygiU2hpZnQtVGFiIiwiU2hpZnQtVGFiIiksZXhlYzpmdW5jdGlvbihlKXtlLmJsb2NrT3V0ZGVudCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIsc2Nyb2xsSW50b1ZpZXc6InNlbGVjdGlvblBhcnQifSx7bmFtZToiaW5kZW50IixkZXNjcmlwdGlvbjoiSW5kZW50IixiaW5kS2V5Om8oIlRhYiIsIlRhYiIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5pbmRlbnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJzZWxlY3Rpb25QYXJ0In0se25hbWU6ImJsb2Nrb3V0ZGVudCIsZGVzY3JpcHRpb246IkJsb2NrIG91dGRlbnQiLGJpbmRLZXk6bygiQ3RybC1bIiwiQ3RybC1bIiksZXhlYzpmdW5jdGlvbihlKXtlLmJsb2NrT3V0ZGVudCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaExpbmUiLHNjcm9sbEludG9WaWV3OiJzZWxlY3Rpb25QYXJ0In0se25hbWU6ImJsb2NraW5kZW50IixkZXNjcmlwdGlvbjoiQmxvY2sgaW5kZW50IixiaW5kS2V5Om8oIkN0cmwtXSIsIkN0cmwtXSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5ibG9ja0luZGVudCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaExpbmUiLHNjcm9sbEludG9WaWV3OiJzZWxlY3Rpb25QYXJ0In0se25hbWU6Imluc2VydHN0cmluZyIsZGVzY3JpcHRpb246Ikluc2VydCBzdHJpbmciLGV4ZWM6ZnVuY3Rpb24oZSx0KXtlLmluc2VydCh0KX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToiaW5zZXJ0dGV4dCIsZGVzY3JpcHRpb246Ikluc2VydCB0ZXh0IixleGVjOmZ1bmN0aW9uKGUsdCl7ZS5pbnNlcnQoci5zdHJpbmdSZXBlYXQodC50ZXh0fHwiIix0LnRpbWVzfHwxKSl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InNwbGl0bGluZSIsZGVzY3JpcHRpb246IlNwbGl0IGxpbmUiLGJpbmRLZXk6byhudWxsLCJDdHJsLU8iKSxleGVjOmZ1bmN0aW9uKGUpe2Uuc3BsaXRMaW5lKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6InRyYW5zcG9zZWxldHRlcnMiLGRlc2NyaXB0aW9uOiJUcmFuc3Bvc2UgbGV0dGVycyIsYmluZEtleTpvKCJBbHQtU2hpZnQtWCIsIkN0cmwtVCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS50cmFuc3Bvc2VMZXR0ZXJzKCl9LG11bHRpU2VsZWN0QWN0aW9uOmZ1bmN0aW9uKGUpe2UudHJhbnNwb3NlU2VsZWN0aW9ucygxKX0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciJ9LHtuYW1lOiJ0b3VwcGVyY2FzZSIsZGVzY3JpcHRpb246IlRvIHVwcGVyY2FzZSIsYmluZEtleTpvKCJDdHJsLVUiLCJDdHJsLVUiKSxleGVjOmZ1bmN0aW9uKGUpe2UudG9VcHBlckNhc2UoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToidG9sb3dlcmNhc2UiLGRlc2NyaXB0aW9uOiJUbyBsb3dlcmNhc2UiLGJpbmRLZXk6bygiQ3RybC1TaGlmdC1VIiwiQ3RybC1TaGlmdC1VIiksZXhlYzpmdW5jdGlvbihlKXtlLnRvTG93ZXJDYXNlKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixzY3JvbGxJbnRvVmlldzoiY3Vyc29yIn0se25hbWU6ImV4cGFuZHRvbGluZSIsZGVzY3JpcHRpb246IkV4cGFuZCB0byBsaW5lIixiaW5kS2V5Om8oIkN0cmwtU2hpZnQtTCIsIkNvbW1hbmQtU2hpZnQtTCIpLGV4ZWM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTt0LnN0YXJ0LmNvbHVtbj10LmVuZC5jb2x1bW49MCx0LmVuZC5yb3crKyxlLnNlbGVjdGlvbi5zZXRSYW5nZSh0LCExKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToiam9pbmxpbmVzIixkZXNjcmlwdGlvbjoiSm9pbiBsaW5lcyIsYmluZEtleTpvKG51bGwsbnVsbCksZXhlYzpmdW5jdGlvbihlKXt2YXIgdD1lLnNlbGVjdGlvbi5pc0JhY2t3YXJkcygpLG49dD9lLnNlbGVjdGlvbi5nZXRTZWxlY3Rpb25MZWFkKCk6ZS5zZWxlY3Rpb24uZ2V0U2VsZWN0aW9uQW5jaG9yKCksaT10P2Uuc2VsZWN0aW9uLmdldFNlbGVjdGlvbkFuY2hvcigpOmUuc2VsZWN0aW9uLmdldFNlbGVjdGlvbkxlYWQoKSxvPWUuc2Vzc2lvbi5kb2MuZ2V0TGluZShuLnJvdykubGVuZ3RoLHU9ZS5zZXNzaW9uLmRvYy5nZXRUZXh0UmFuZ2UoZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSksYT11LnJlcGxhY2UoL1xuXHMqLywiICIpLmxlbmd0aCxmPWUuc2Vzc2lvbi5kb2MuZ2V0TGluZShuLnJvdyk7Zm9yKHZhciBsPW4ucm93KzE7bDw9aS5yb3crMTtsKyspe3ZhciBjPXIuc3RyaW5nVHJpbUxlZnQoci5zdHJpbmdUcmltUmlnaHQoZS5zZXNzaW9uLmRvYy5nZXRMaW5lKGwpKSk7Yy5sZW5ndGghPT0wJiYoYz0iICIrYyksZis9Y31pLnJvdysxPGUuc2Vzc2lvbi5kb2MuZ2V0TGVuZ3RoKCktMSYmKGYrPWUuc2Vzc2lvbi5kb2MuZ2V0TmV3TGluZUNoYXJhY3RlcigpKSxlLmNsZWFyU2VsZWN0aW9uKCksZS5zZXNzaW9uLmRvYy5yZXBsYWNlKG5ldyBzKG4ucm93LDAsaS5yb3crMiwwKSxmKSxhPjA/KGUuc2VsZWN0aW9uLm1vdmVDdXJzb3JUbyhuLnJvdyxuLmNvbHVtbiksZS5zZWxlY3Rpb24uc2VsZWN0VG8obi5yb3csbi5jb2x1bW4rYSkpOihvPWUuc2Vzc2lvbi5kb2MuZ2V0TGluZShuLnJvdykubGVuZ3RoPm8/bysxOm8sZS5zZWxlY3Rpb24ubW92ZUN1cnNvclRvKG4ucm93LG8pKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiaW52ZXJ0U2VsZWN0aW9uIixkZXNjcmlwdGlvbjoiSW52ZXJ0IHNlbGVjdGlvbiIsYmluZEtleTpvKG51bGwsbnVsbCksZXhlYzpmdW5jdGlvbihlKXt2YXIgdD1lLnNlc3Npb24uZG9jLmdldExlbmd0aCgpLTEsbj1lLnNlc3Npb24uZG9jLmdldExpbmUodCkubGVuZ3RoLHI9ZS5zZWxlY3Rpb24ucmFuZ2VMaXN0LnJhbmdlcyxpPVtdO3IubGVuZ3RoPDEmJihyPVtlLnNlbGVjdGlvbi5nZXRSYW5nZSgpXSk7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspbz09ci5sZW5ndGgtMSYmKHJbb10uZW5kLnJvdyE9PXR8fHJbb10uZW5kLmNvbHVtbiE9PW4pJiZpLnB1c2gobmV3IHMocltvXS5lbmQucm93LHJbb10uZW5kLmNvbHVtbix0LG4pKSxvPT09MD8ocltvXS5zdGFydC5yb3chPT0wfHxyW29dLnN0YXJ0LmNvbHVtbiE9PTApJiZpLnB1c2gobmV3IHMoMCwwLHJbb10uc3RhcnQucm93LHJbb10uc3RhcnQuY29sdW1uKSk6aS5wdXNoKG5ldyBzKHJbby0xXS5lbmQucm93LHJbby0xXS5lbmQuY29sdW1uLHJbb10uc3RhcnQucm93LHJbb10uc3RhcnQuY29sdW1uKSk7ZS5leGl0TXVsdGlTZWxlY3RNb2RlKCksZS5jbGVhclNlbGVjdGlvbigpO2Zvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKWUuc2VsZWN0aW9uLmFkZFJhbmdlKGlbb10sITEpfSxyZWFkT25seTohMCxzY3JvbGxJbnRvVmlldzoibm9uZSJ9LHtuYW1lOiJvcGVuQ29tbWFuZFBhbGxldGUiLGRlc2NyaXB0aW9uOiJPcGVuIGNvbW1hbmQgcGFsbGV0ZSIsYmluZEtleTpvKCJGMSIsIkYxIiksZXhlYzpmdW5jdGlvbihlKXtlLnByb21wdCh7JHR5cGU6ImNvbW1hbmRzIn0pfSxyZWFkT25seTohMH0se25hbWU6Im1vZGVTZWxlY3QiLGRlc2NyaXB0aW9uOiJDaGFuZ2UgbGFuZ3VhZ2UgbW9kZS4uLiIsYmluZEtleTpvKG51bGwsbnVsbCksZXhlYzpmdW5jdGlvbihlKXtlLnByb21wdCh7JHR5cGU6Im1vZGVzIn0pfSxyZWFkT25seTohMH1dfSksYWNlLmRlZmluZSgiYWNlL2VkaXRvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi91c2VyYWdlbnQiLCJhY2Uva2V5Ym9hcmQvdGV4dGlucHV0IiwiYWNlL21vdXNlL21vdXNlX2hhbmRsZXIiLCJhY2UvbW91c2UvZm9sZF9oYW5kbGVyIiwiYWNlL2tleWJvYXJkL2tleWJpbmRpbmciLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL3NlYXJjaCIsImFjZS9yYW5nZSIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9jb21tYW5kcy9jb21tYW5kX21hbmFnZXIiLCJhY2UvY29tbWFuZHMvZGVmYXVsdF9jb21tYW5kcyIsImFjZS9jb25maWciLCJhY2UvdG9rZW5faXRlcmF0b3IiLCJhY2UvY2xpcGJvYXJkIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlKCIuL2xpYi9maXhvbGRicm93c2VycyIpO3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZG9tIikscz1lKCIuL2xpYi9sYW5nIiksbz1lKCIuL2xpYi91c2VyYWdlbnQiKSx1PWUoIi4va2V5Ym9hcmQvdGV4dGlucHV0IikuVGV4dElucHV0LGE9ZSgiLi9tb3VzZS9tb3VzZV9oYW5kbGVyIikuTW91c2VIYW5kbGVyLGY9ZSgiLi9tb3VzZS9mb2xkX2hhbmRsZXIiKS5Gb2xkSGFuZGxlcixsPWUoIi4va2V5Ym9hcmQva2V5YmluZGluZyIpLktleUJpbmRpbmcsYz1lKCIuL2VkaXRfc2Vzc2lvbiIpLkVkaXRTZXNzaW9uLGg9ZSgiLi9zZWFyY2giKS5TZWFyY2gscD1lKCIuL3JhbmdlIikuUmFuZ2UsZD1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHY9ZSgiLi9jb21tYW5kcy9jb21tYW5kX21hbmFnZXIiKS5Db21tYW5kTWFuYWdlcixtPWUoIi4vY29tbWFuZHMvZGVmYXVsdF9jb21tYW5kcyIpLmNvbW1hbmRzLGc9ZSgiLi9jb25maWciKSx5PWUoIi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGI9ZSgiLi9jbGlwYm9hcmQiKSx3PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldENvbnRhaW5lckVsZW1lbnQoKTt0aGlzLmNvbnRhaW5lcj1yLHRoaXMucmVuZGVyZXI9ZSx0aGlzLmlkPSJlZGl0b3IiKyArK3cuJHVpZCx0aGlzLmNvbW1hbmRzPW5ldyB2KG8uaXNNYWM/Im1hYyI6IndpbiIsbSksdHlwZW9mIGRvY3VtZW50PT0ib2JqZWN0IiYmKHRoaXMudGV4dElucHV0PW5ldyB1KGUuZ2V0VGV4dEFyZWFDb250YWluZXIoKSx0aGlzKSx0aGlzLnJlbmRlcmVyLnRleHRhcmVhPXRoaXMudGV4dElucHV0LmdldEVsZW1lbnQoKSx0aGlzLiRtb3VzZUhhbmRsZXI9bmV3IGEodGhpcyksbmV3IGYodGhpcykpLHRoaXMua2V5QmluZGluZz1uZXcgbCh0aGlzKSx0aGlzLiRzZWFyY2g9KG5ldyBoKS5zZXQoe3dyYXA6ITB9KSx0aGlzLiRoaXN0b3J5VHJhY2tlcj10aGlzLiRoaXN0b3J5VHJhY2tlci5iaW5kKHRoaXMpLHRoaXMuY29tbWFuZHMub24oImV4ZWMiLHRoaXMuJGhpc3RvcnlUcmFja2VyKSx0aGlzLiRpbml0T3BlcmF0aW9uTGlzdGVuZXJzKCksdGhpcy5fJGVtaXRJbnB1dEV2ZW50PXMuZGVsYXllZENhbGwoZnVuY3Rpb24oKXt0aGlzLl9zaWduYWwoImlucHV0Iix7fSksdGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24uYmdUb2tlbml6ZXImJnRoaXMuc2Vzc2lvbi5iZ1Rva2VuaXplci5zY2hlZHVsZVN0YXJ0KCl9LmJpbmQodGhpcykpLHRoaXMub24oImNoYW5nZSIsZnVuY3Rpb24oZSx0KXt0Ll8kZW1pdElucHV0RXZlbnQuc2NoZWR1bGUoMzEpfSksdGhpcy5zZXRTZXNzaW9uKHR8fG4mJm4uc2Vzc2lvbnx8bmV3IGMoIiIpKSxnLnJlc2V0T3B0aW9ucyh0aGlzKSxuJiZ0aGlzLnNldE9wdGlvbnMobiksZy5fc2lnbmFsKCJlZGl0b3IiLHRoaXMpfTt3LiR1aWQ9MCxmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMsZCksdGhpcy4kaW5pdE9wZXJhdGlvbkxpc3RlbmVycz1mdW5jdGlvbigpe3RoaXMuY29tbWFuZHMub24oImV4ZWMiLHRoaXMuc3RhcnRPcGVyYXRpb24uYmluZCh0aGlzKSwhMCksdGhpcy5jb21tYW5kcy5vbigiYWZ0ZXJFeGVjIix0aGlzLmVuZE9wZXJhdGlvbi5iaW5kKHRoaXMpLCEwKSx0aGlzLiRvcFJlc2V0VGltZXI9cy5kZWxheWVkQ2FsbCh0aGlzLmVuZE9wZXJhdGlvbi5iaW5kKHRoaXMsITApKSx0aGlzLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dGhpcy5jdXJPcHx8KHRoaXMuc3RhcnRPcGVyYXRpb24oKSx0aGlzLmN1ck9wLnNlbGVjdGlvbkJlZm9yZT10aGlzLiRsYXN0U2VsKSx0aGlzLmN1ck9wLmRvY0NoYW5nZWQ9ITB9LmJpbmQodGhpcyksITApLHRoaXMub24oImNoYW5nZVNlbGVjdGlvbiIsZnVuY3Rpb24oKXt0aGlzLmN1ck9wfHwodGhpcy5zdGFydE9wZXJhdGlvbigpLHRoaXMuY3VyT3Auc2VsZWN0aW9uQmVmb3JlPXRoaXMuJGxhc3RTZWwpLHRoaXMuY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZD0hMH0uYmluZCh0aGlzKSwhMCl9LHRoaXMuY3VyT3A9bnVsbCx0aGlzLnByZXZPcD17fSx0aGlzLnN0YXJ0T3BlcmF0aW9uPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY3VyT3Ape2lmKCFlfHx0aGlzLmN1ck9wLmNvbW1hbmQpcmV0dXJuO3RoaXMucHJldk9wPXRoaXMuY3VyT3B9ZXx8KHRoaXMucHJldmlvdXNDb21tYW5kPW51bGwsZT17fSksdGhpcy4kb3BSZXNldFRpbWVyLnNjaGVkdWxlKCksdGhpcy5jdXJPcD10aGlzLnNlc3Npb24uY3VyT3A9e2NvbW1hbmQ6ZS5jb21tYW5kfHx7fSxhcmdzOmUuYXJncyxzY3JvbGxUb3A6dGhpcy5yZW5kZXJlci5zY3JvbGxUb3B9LHRoaXMuY3VyT3Auc2VsZWN0aW9uQmVmb3JlPXRoaXMuc2VsZWN0aW9uLnRvSlNPTigpfSx0aGlzLmVuZE9wZXJhdGlvbj1mdW5jdGlvbihlKXtpZih0aGlzLmN1ck9wKXtpZihlJiZlLnJldHVyblZhbHVlPT09ITEpcmV0dXJuIHRoaXMuY3VyT3A9bnVsbDtpZihlPT0xJiZ0aGlzLmN1ck9wLmNvbW1hbmQmJnRoaXMuY3VyT3AuY29tbWFuZC5uYW1lPT0ibW91c2UiKXJldHVybjt0aGlzLl9zaWduYWwoImJlZm9yZUVuZE9wZXJhdGlvbiIpO2lmKCF0aGlzLmN1ck9wKXJldHVybjt2YXIgdD10aGlzLmN1ck9wLmNvbW1hbmQsbj10JiZ0LnNjcm9sbEludG9WaWV3O2lmKG4pe3N3aXRjaChuKXtjYXNlImNlbnRlci1hbmltYXRlIjpuPSJhbmltYXRlIjtjYXNlImNlbnRlciI6dGhpcy5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldyhudWxsLC41KTticmVhaztjYXNlImFuaW1hdGUiOmNhc2UiY3Vyc29yIjp0aGlzLnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KCk7YnJlYWs7Y2FzZSJzZWxlY3Rpb25QYXJ0Ijp2YXIgcj10aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpLGk9dGhpcy5yZW5kZXJlci5sYXllckNvbmZpZzsoci5zdGFydC5yb3c+PWkubGFzdFJvd3x8ci5lbmQucm93PD1pLmZpcnN0Um93KSYmdGhpcy5yZW5kZXJlci5zY3JvbGxTZWxlY3Rpb25JbnRvVmlldyh0aGlzLnNlbGVjdGlvbi5hbmNob3IsdGhpcy5zZWxlY3Rpb24ubGVhZCk7YnJlYWs7ZGVmYXVsdDp9bj09ImFuaW1hdGUiJiZ0aGlzLnJlbmRlcmVyLmFuaW1hdGVTY3JvbGxpbmcodGhpcy5jdXJPcC5zY3JvbGxUb3ApfXZhciBzPXRoaXMuc2VsZWN0aW9uLnRvSlNPTigpO3RoaXMuY3VyT3Auc2VsZWN0aW9uQWZ0ZXI9cyx0aGlzLiRsYXN0U2VsPXRoaXMuc2VsZWN0aW9uLnRvSlNPTigpLHRoaXMuc2Vzc2lvbi5nZXRVbmRvTWFuYWdlcigpLmFkZFNlbGVjdGlvbihzKSx0aGlzLnByZXZPcD10aGlzLmN1ck9wLHRoaXMuY3VyT3A9bnVsbH19LHRoaXMuJG1lcmdlYWJsZUNvbW1hbmRzPVsiYmFja3NwYWNlIiwiZGVsIiwiaW5zZXJ0c3RyaW5nIl0sdGhpcy4kaGlzdG9yeVRyYWNrZXI9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuJG1lcmdlVW5kb0RlbHRhcylyZXR1cm47dmFyIHQ9dGhpcy5wcmV2T3Asbj10aGlzLiRtZXJnZWFibGVDb21tYW5kcyxyPXQuY29tbWFuZCYmZS5jb21tYW5kLm5hbWU9PXQuY29tbWFuZC5uYW1lO2lmKGUuY29tbWFuZC5uYW1lPT0iaW5zZXJ0c3RyaW5nIil7dmFyIGk9ZS5hcmdzO3RoaXMubWVyZ2VOZXh0Q29tbWFuZD09PXVuZGVmaW5lZCYmKHRoaXMubWVyZ2VOZXh0Q29tbWFuZD0hMCkscj1yJiZ0aGlzLm1lcmdlTmV4dENvbW1hbmQmJighL1xzLy50ZXN0KGkpfHwvXHMvLnRlc3QodC5hcmdzKSksdGhpcy5tZXJnZU5leHRDb21tYW5kPSEwfWVsc2Ugcj1yJiZuLmluZGV4T2YoZS5jb21tYW5kLm5hbWUpIT09LTE7dGhpcy4kbWVyZ2VVbmRvRGVsdGFzIT0iYWx3YXlzIiYmRGF0ZS5ub3coKS10aGlzLnNlcXVlbmNlU3RhcnRUaW1lPjJlMyYmKHI9ITEpLHI/dGhpcy5zZXNzaW9uLm1lcmdlVW5kb0RlbHRhcz0hMDpuLmluZGV4T2YoZS5jb21tYW5kLm5hbWUpIT09LTEmJih0aGlzLnNlcXVlbmNlU3RhcnRUaW1lPURhdGUubm93KCkpfSx0aGlzLnNldEtleWJvYXJkSGFuZGxlcj1mdW5jdGlvbihlLHQpe2lmKGUmJnR5cGVvZiBlPT0ic3RyaW5nIiYmZSE9ImFjZSIpe3RoaXMuJGtleWJpbmRpbmdJZD1lO3ZhciBuPXRoaXM7Zy5sb2FkTW9kdWxlKFsia2V5YmluZGluZyIsZV0sZnVuY3Rpb24ocil7bi4ka2V5YmluZGluZ0lkPT1lJiZuLmtleUJpbmRpbmcuc2V0S2V5Ym9hcmRIYW5kbGVyKHImJnIuaGFuZGxlciksdCYmdCgpfSl9ZWxzZSB0aGlzLiRrZXliaW5kaW5nSWQ9bnVsbCx0aGlzLmtleUJpbmRpbmcuc2V0S2V5Ym9hcmRIYW5kbGVyKGUpLHQmJnQoKX0sdGhpcy5nZXRLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rZXlCaW5kaW5nLmdldEtleWJvYXJkSGFuZGxlcigpfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7aWYodGhpcy5zZXNzaW9uPT1lKXJldHVybjt0aGlzLmN1ck9wJiZ0aGlzLmVuZE9wZXJhdGlvbigpLHRoaXMuY3VyT3A9e307dmFyIHQ9dGhpcy5zZXNzaW9uO2lmKHQpe3RoaXMuc2Vzc2lvbi5vZmYoImNoYW5nZSIsdGhpcy4kb25Eb2N1bWVudENoYW5nZSksdGhpcy5zZXNzaW9uLm9mZigiY2hhbmdlTW9kZSIsdGhpcy4kb25DaGFuZ2VNb2RlKSx0aGlzLnNlc3Npb24ub2ZmKCJ0b2tlbml6ZXJVcGRhdGUiLHRoaXMuJG9uVG9rZW5pemVyVXBkYXRlKSx0aGlzLnNlc3Npb24ub2ZmKCJjaGFuZ2VUYWJTaXplIix0aGlzLiRvbkNoYW5nZVRhYlNpemUpLHRoaXMuc2Vzc2lvbi5vZmYoImNoYW5nZVdyYXBMaW1pdCIsdGhpcy4kb25DaGFuZ2VXcmFwTGltaXQpLHRoaXMuc2Vzc2lvbi5vZmYoImNoYW5nZVdyYXBNb2RlIix0aGlzLiRvbkNoYW5nZVdyYXBNb2RlKSx0aGlzLnNlc3Npb24ub2ZmKCJjaGFuZ2VGb2xkIix0aGlzLiRvbkNoYW5nZUZvbGQpLHRoaXMuc2Vzc2lvbi5vZmYoImNoYW5nZUZyb250TWFya2VyIix0aGlzLiRvbkNoYW5nZUZyb250TWFya2VyKSx0aGlzLnNlc3Npb24ub2ZmKCJjaGFuZ2VCYWNrTWFya2VyIix0aGlzLiRvbkNoYW5nZUJhY2tNYXJrZXIpLHRoaXMuc2Vzc2lvbi5vZmYoImNoYW5nZUJyZWFrcG9pbnQiLHRoaXMuJG9uQ2hhbmdlQnJlYWtwb2ludCksdGhpcy5zZXNzaW9uLm9mZigiY2hhbmdlQW5ub3RhdGlvbiIsdGhpcy4kb25DaGFuZ2VBbm5vdGF0aW9uKSx0aGlzLnNlc3Npb24ub2ZmKCJjaGFuZ2VPdmVyd3JpdGUiLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlKSx0aGlzLnNlc3Npb24ub2ZmKCJjaGFuZ2VTY3JvbGxUb3AiLHRoaXMuJG9uU2Nyb2xsVG9wQ2hhbmdlKSx0aGlzLnNlc3Npb24ub2ZmKCJjaGFuZ2VTY3JvbGxMZWZ0Iix0aGlzLiRvblNjcm9sbExlZnRDaGFuZ2UpO3ZhciBuPXRoaXMuc2Vzc2lvbi5nZXRTZWxlY3Rpb24oKTtuLm9mZigiY2hhbmdlQ3Vyc29yIix0aGlzLiRvbkN1cnNvckNoYW5nZSksbi5vZmYoImNoYW5nZVNlbGVjdGlvbiIsdGhpcy4kb25TZWxlY3Rpb25DaGFuZ2UpfXRoaXMuc2Vzc2lvbj1lLGU/KHRoaXMuJG9uRG9jdW1lbnRDaGFuZ2U9dGhpcy5vbkRvY3VtZW50Q2hhbmdlLmJpbmQodGhpcyksZS5vbigiY2hhbmdlIix0aGlzLiRvbkRvY3VtZW50Q2hhbmdlKSx0aGlzLnJlbmRlcmVyLnNldFNlc3Npb24oZSksdGhpcy4kb25DaGFuZ2VNb2RlPXRoaXMub25DaGFuZ2VNb2RlLmJpbmQodGhpcyksZS5vbigiY2hhbmdlTW9kZSIsdGhpcy4kb25DaGFuZ2VNb2RlKSx0aGlzLiRvblRva2VuaXplclVwZGF0ZT10aGlzLm9uVG9rZW5pemVyVXBkYXRlLmJpbmQodGhpcyksZS5vbigidG9rZW5pemVyVXBkYXRlIix0aGlzLiRvblRva2VuaXplclVwZGF0ZSksdGhpcy4kb25DaGFuZ2VUYWJTaXplPXRoaXMucmVuZGVyZXIub25DaGFuZ2VUYWJTaXplLmJpbmQodGhpcy5yZW5kZXJlciksZS5vbigiY2hhbmdlVGFiU2l6ZSIsdGhpcy4kb25DaGFuZ2VUYWJTaXplKSx0aGlzLiRvbkNoYW5nZVdyYXBMaW1pdD10aGlzLm9uQ2hhbmdlV3JhcExpbWl0LmJpbmQodGhpcyksZS5vbigiY2hhbmdlV3JhcExpbWl0Iix0aGlzLiRvbkNoYW5nZVdyYXBMaW1pdCksdGhpcy4kb25DaGFuZ2VXcmFwTW9kZT10aGlzLm9uQ2hhbmdlV3JhcE1vZGUuYmluZCh0aGlzKSxlLm9uKCJjaGFuZ2VXcmFwTW9kZSIsdGhpcy4kb25DaGFuZ2VXcmFwTW9kZSksdGhpcy4kb25DaGFuZ2VGb2xkPXRoaXMub25DaGFuZ2VGb2xkLmJpbmQodGhpcyksZS5vbigiY2hhbmdlRm9sZCIsdGhpcy4kb25DaGFuZ2VGb2xkKSx0aGlzLiRvbkNoYW5nZUZyb250TWFya2VyPXRoaXMub25DaGFuZ2VGcm9udE1hcmtlci5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5vbigiY2hhbmdlRnJvbnRNYXJrZXIiLHRoaXMuJG9uQ2hhbmdlRnJvbnRNYXJrZXIpLHRoaXMuJG9uQ2hhbmdlQmFja01hcmtlcj10aGlzLm9uQ2hhbmdlQmFja01hcmtlci5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5vbigiY2hhbmdlQmFja01hcmtlciIsdGhpcy4kb25DaGFuZ2VCYWNrTWFya2VyKSx0aGlzLiRvbkNoYW5nZUJyZWFrcG9pbnQ9dGhpcy5vbkNoYW5nZUJyZWFrcG9pbnQuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZUJyZWFrcG9pbnQiLHRoaXMuJG9uQ2hhbmdlQnJlYWtwb2ludCksdGhpcy4kb25DaGFuZ2VBbm5vdGF0aW9uPXRoaXMub25DaGFuZ2VBbm5vdGF0aW9uLmJpbmQodGhpcyksdGhpcy5zZXNzaW9uLm9uKCJjaGFuZ2VBbm5vdGF0aW9uIix0aGlzLiRvbkNoYW5nZUFubm90YXRpb24pLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlPXRoaXMub25DdXJzb3JDaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZU92ZXJ3cml0ZSIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpLHRoaXMuJG9uU2Nyb2xsVG9wQ2hhbmdlPXRoaXMub25TY3JvbGxUb3BDaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZVNjcm9sbFRvcCIsdGhpcy4kb25TY3JvbGxUb3BDaGFuZ2UpLHRoaXMuJG9uU2Nyb2xsTGVmdENoYW5nZT10aGlzLm9uU2Nyb2xsTGVmdENoYW5nZS5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5vbigiY2hhbmdlU2Nyb2xsTGVmdCIsdGhpcy4kb25TY3JvbGxMZWZ0Q2hhbmdlKSx0aGlzLnNlbGVjdGlvbj1lLmdldFNlbGVjdGlvbigpLHRoaXMuc2VsZWN0aW9uLm9uKCJjaGFuZ2VDdXJzb3IiLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlKSx0aGlzLiRvblNlbGVjdGlvbkNoYW5nZT10aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyksdGhpcy5zZWxlY3Rpb24ub24oImNoYW5nZVNlbGVjdGlvbiIsdGhpcy4kb25TZWxlY3Rpb25DaGFuZ2UpLHRoaXMub25DaGFuZ2VNb2RlKCksdGhpcy5vbkN1cnNvckNoYW5nZSgpLHRoaXMub25TY3JvbGxUb3BDaGFuZ2UoKSx0aGlzLm9uU2Nyb2xsTGVmdENoYW5nZSgpLHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLm9uQ2hhbmdlRnJvbnRNYXJrZXIoKSx0aGlzLm9uQ2hhbmdlQmFja01hcmtlcigpLHRoaXMub25DaGFuZ2VCcmVha3BvaW50KCksdGhpcy5vbkNoYW5nZUFubm90YXRpb24oKSx0aGlzLnNlc3Npb24uZ2V0VXNlV3JhcE1vZGUoKSYmdGhpcy5yZW5kZXJlci5hZGp1c3RXcmFwTGltaXQoKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUZ1bGwoKSk6KHRoaXMuc2VsZWN0aW9uPW51bGwsdGhpcy5yZW5kZXJlci5zZXRTZXNzaW9uKGUpKSx0aGlzLl9zaWduYWwoImNoYW5nZVNlc3Npb24iLHtzZXNzaW9uOmUsb2xkU2Vzc2lvbjp0fSksdGhpcy5jdXJPcD1udWxsLHQmJnQuX3NpZ25hbCgiY2hhbmdlRWRpdG9yIix7b2xkRWRpdG9yOnRoaXN9KSxlJiZlLl9zaWduYWwoImNoYW5nZUVkaXRvciIse2VkaXRvcjp0aGlzfSksZSYmZS5iZ1Rva2VuaXplciYmZS5iZ1Rva2VuaXplci5zY2hlZHVsZVN0YXJ0KCl9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb259LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zZXNzaW9uLmRvYy5zZXRWYWx1ZShlKSx0P3Q9PTE/dGhpcy5uYXZpZ2F0ZUZpbGVFbmQoKTp0PT0tMSYmdGhpcy5uYXZpZ2F0ZUZpbGVTdGFydCgpOnRoaXMuc2VsZWN0QWxsKCksZX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0VmFsdWUoKX0sdGhpcy5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb259LHRoaXMucmVzaXplPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIub25SZXNpemUoZSl9LHRoaXMuc2V0VGhlbWU9ZnVuY3Rpb24oZSx0KXt0aGlzLnJlbmRlcmVyLnNldFRoZW1lKGUsdCl9LHRoaXMuZ2V0VGhlbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRUaGVtZSgpfSx0aGlzLnNldFN0eWxlPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUoZSl9LHRoaXMudW5zZXRTdHlsZT1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnVuc2V0U3R5bGUoZSl9LHRoaXMuZ2V0Rm9udFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oImZvbnRTaXplIil8fGkuY29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lcikuZm9udFNpemV9LHRoaXMuc2V0Rm9udFNpemU9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oImZvbnRTaXplIixlKX0sdGhpcy4kaGlnaGxpZ2h0QnJhY2tldHM9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uJGJyYWNrZXRIaWdobGlnaHQmJih0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMuc2Vzc2lvbi4kYnJhY2tldEhpZ2hsaWdodCksdGhpcy5zZXNzaW9uLiRicmFja2V0SGlnaGxpZ2h0PW51bGwpO2lmKHRoaXMuJGhpZ2hsaWdodFBlbmRpbmcpcmV0dXJuO3ZhciBlPXRoaXM7dGhpcy4kaGlnaGxpZ2h0UGVuZGluZz0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS4kaGlnaGxpZ2h0UGVuZGluZz0hMTt2YXIgdD1lLnNlc3Npb247aWYoIXR8fCF0LmJnVG9rZW5pemVyKXJldHVybjt2YXIgbj10LmZpbmRNYXRjaGluZ0JyYWNrZXQoZS5nZXRDdXJzb3JQb3NpdGlvbigpKTtpZihuKXZhciByPW5ldyBwKG4ucm93LG4uY29sdW1uLG4ucm93LG4uY29sdW1uKzEpO2Vsc2UgaWYodC4kbW9kZS5nZXRNYXRjaGluZyl2YXIgcj10LiRtb2RlLmdldE1hdGNoaW5nKGUuc2Vzc2lvbik7ciYmKHQuJGJyYWNrZXRIaWdobGlnaHQ9dC5hZGRNYXJrZXIociwiYWNlX2JyYWNrZXQiLCJ0ZXh0IikpfSw1MCl9LHRoaXMuJGhpZ2hsaWdodFRhZ3M9ZnVuY3Rpb24oKXtpZih0aGlzLiRoaWdobGlnaHRUYWdQZW5kaW5nKXJldHVybjt2YXIgZT10aGlzO3RoaXMuJGhpZ2hsaWdodFRhZ1BlbmRpbmc9ITAsc2V0VGltZW91dChmdW5jdGlvbigpe2UuJGhpZ2hsaWdodFRhZ1BlbmRpbmc9ITE7dmFyIHQ9ZS5zZXNzaW9uO2lmKCF0fHwhdC5iZ1Rva2VuaXplcilyZXR1cm47dmFyIG49ZS5nZXRDdXJzb3JQb3NpdGlvbigpLHI9bmV3IHkoZS5zZXNzaW9uLG4ucm93LG4uY29sdW1uKSxpPXIuZ2V0Q3VycmVudFRva2VuKCk7aWYoIWl8fCEvXGIoPzp0YWctb3Blbnx0YWctbmFtZSkvLnRlc3QoaS50eXBlKSl7dC5yZW1vdmVNYXJrZXIodC4kdGFnSGlnaGxpZ2h0KSx0LiR0YWdIaWdobGlnaHQ9bnVsbDtyZXR1cm59aWYoaS50eXBlLmluZGV4T2YoInRhZy1vcGVuIikhPS0xKXtpPXIuc3RlcEZvcndhcmQoKTtpZighaSlyZXR1cm59dmFyIHM9aS52YWx1ZSxvPTAsdT1yLnN0ZXBCYWNrd2FyZCgpO2lmKHUudmFsdWU9PSI8Iil7ZG8gdT1pLGk9ci5zdGVwRm9yd2FyZCgpLGkmJmkudmFsdWU9PT1zJiZpLnR5cGUuaW5kZXhPZigidGFnLW5hbWUiKSE9PS0xJiYodS52YWx1ZT09PSI8Ij9vKys6dS52YWx1ZT09PSI8LyImJm8tLSk7d2hpbGUoaSYmbz49MCl9ZWxzZXtkbyBpPXUsdT1yLnN0ZXBCYWNrd2FyZCgpLGkmJmkudmFsdWU9PT1zJiZpLnR5cGUuaW5kZXhPZigidGFnLW5hbWUiKSE9PS0xJiYodS52YWx1ZT09PSI8Ij9vKys6dS52YWx1ZT09PSI8LyImJm8tLSk7d2hpbGUodSYmbzw9MCk7ci5zdGVwRm9yd2FyZCgpfWlmKCFpKXt0LnJlbW92ZU1hcmtlcih0LiR0YWdIaWdobGlnaHQpLHQuJHRhZ0hpZ2hsaWdodD1udWxsO3JldHVybn12YXIgYT1yLmdldEN1cnJlbnRUb2tlblJvdygpLGY9ci5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKSxsPW5ldyBwKGEsZixhLGYraS52YWx1ZS5sZW5ndGgpLGM9dC4kYmFja01hcmtlcnNbdC4kdGFnSGlnaGxpZ2h0XTt0LiR0YWdIaWdobGlnaHQmJmMhPXVuZGVmaW5lZCYmbC5jb21wYXJlUmFuZ2UoYy5yYW5nZSkhPT0wJiYodC5yZW1vdmVNYXJrZXIodC4kdGFnSGlnaGxpZ2h0KSx0LiR0YWdIaWdobGlnaHQ9bnVsbCksdC4kdGFnSGlnaGxpZ2h0fHwodC4kdGFnSGlnaGxpZ2h0PXQuYWRkTWFya2VyKGwsImFjZV9icmFja2V0IiwidGV4dCIpKX0sNTApfSx0aGlzLmZvY3VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5pc0ZvY3VzZWQoKXx8ZS50ZXh0SW5wdXQuZm9jdXMoKX0pLHRoaXMudGV4dElucHV0LmZvY3VzKCl9LHRoaXMuaXNGb2N1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dElucHV0LmlzRm9jdXNlZCgpfSx0aGlzLmJsdXI9ZnVuY3Rpb24oKXt0aGlzLnRleHRJbnB1dC5ibHVyKCl9LHRoaXMub25Gb2N1cz1mdW5jdGlvbihlKXtpZih0aGlzLiRpc0ZvY3VzZWQpcmV0dXJuO3RoaXMuJGlzRm9jdXNlZD0hMCx0aGlzLnJlbmRlcmVyLnNob3dDdXJzb3IoKSx0aGlzLnJlbmRlcmVyLnZpc3VhbGl6ZUZvY3VzKCksdGhpcy5fZW1pdCgiZm9jdXMiLGUpfSx0aGlzLm9uQmx1cj1mdW5jdGlvbihlKXtpZighdGhpcy4kaXNGb2N1c2VkKXJldHVybjt0aGlzLiRpc0ZvY3VzZWQ9ITEsdGhpcy5yZW5kZXJlci5oaWRlQ3Vyc29yKCksdGhpcy5yZW5kZXJlci52aXN1YWxpemVCbHVyKCksdGhpcy5fZW1pdCgiYmx1ciIsZSl9LHRoaXMuJGN1cnNvckNoYW5nZT1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlQ3Vyc29yKCl9LHRoaXMub25Eb2N1bWVudENoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNlc3Npb24uJHVzZVdyYXBNb2RlLG49ZS5zdGFydC5yb3c9PWUuZW5kLnJvdz9lLmVuZC5yb3c6SW5maW5pdHk7dGhpcy5yZW5kZXJlci51cGRhdGVMaW5lcyhlLnN0YXJ0LnJvdyxuLHQpLHRoaXMuX3NpZ25hbCgiY2hhbmdlIixlKSx0aGlzLiRjdXJzb3JDaGFuZ2UoKSx0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCl9LHRoaXMub25Ub2tlbml6ZXJVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO3RoaXMucmVuZGVyZXIudXBkYXRlTGluZXModC5maXJzdCx0Lmxhc3QpfSx0aGlzLm9uU2Nyb2xsVG9wQ2hhbmdlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5zY3JvbGxUb1kodGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpKX0sdGhpcy5vblNjcm9sbExlZnRDaGFuZ2U9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnNjcm9sbFRvWCh0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsTGVmdCgpKX0sdGhpcy5vbkN1cnNvckNoYW5nZT1mdW5jdGlvbigpe3RoaXMuJGN1cnNvckNoYW5nZSgpLHRoaXMuJGhpZ2hsaWdodEJyYWNrZXRzKCksdGhpcy4kaGlnaGxpZ2h0VGFncygpLHRoaXMuJHVwZGF0ZUhpZ2hsaWdodEFjdGl2ZUxpbmUoKSx0aGlzLl9zaWduYWwoImNoYW5nZVNlbGVjdGlvbiIpfSx0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTZXNzaW9uKCksdDtpZih0aGlzLiRoaWdobGlnaHRBY3RpdmVMaW5lKXtpZih0aGlzLiRzZWxlY3Rpb25TdHlsZSE9ImxpbmUifHwhdGhpcy5zZWxlY3Rpb24uaXNNdWx0aUxpbmUoKSl0PXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKTt0aGlzLnJlbmRlcmVyLnRoZW1lJiZ0aGlzLnJlbmRlcmVyLnRoZW1lLiRzZWxlY3Rpb25Db2xvckNvbmZsaWN0JiYhdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiYodD0hMSksdGhpcy5yZW5kZXJlci4kbWF4TGluZXMmJnRoaXMuc2Vzc2lvbi5nZXRMZW5ndGgoKT09PTEmJiEodGhpcy5yZW5kZXJlci4kbWluTGluZXM+MSkmJih0PSExKX1pZihlLiRoaWdobGlnaHRMaW5lTWFya2VyJiYhdCllLnJlbW92ZU1hcmtlcihlLiRoaWdobGlnaHRMaW5lTWFya2VyLmlkKSxlLiRoaWdobGlnaHRMaW5lTWFya2VyPW51bGw7ZWxzZSBpZighZS4kaGlnaGxpZ2h0TGluZU1hcmtlciYmdCl7dmFyIG49bmV3IHAodC5yb3csdC5jb2x1bW4sdC5yb3csSW5maW5pdHkpO24uaWQ9ZS5hZGRNYXJrZXIobiwiYWNlX2FjdGl2ZS1saW5lIiwic2NyZWVuTGluZSIpLGUuJGhpZ2hsaWdodExpbmVNYXJrZXI9bn1lbHNlIHQmJihlLiRoaWdobGlnaHRMaW5lTWFya2VyLnN0YXJ0LnJvdz10LnJvdyxlLiRoaWdobGlnaHRMaW5lTWFya2VyLmVuZC5yb3c9dC5yb3csZS4kaGlnaGxpZ2h0TGluZU1hcmtlci5zdGFydC5jb2x1bW49dC5jb2x1bW4sZS5fc2lnbmFsKCJjaGFuZ2VCYWNrTWFya2VyIikpfSx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2Vzc2lvbjt0LiRzZWxlY3Rpb25NYXJrZXImJnQucmVtb3ZlTWFya2VyKHQuJHNlbGVjdGlvbk1hcmtlciksdC4kc2VsZWN0aW9uTWFya2VyPW51bGw7aWYoIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSl7dmFyIG49dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSxyPXRoaXMuZ2V0U2VsZWN0aW9uU3R5bGUoKTt0LiRzZWxlY3Rpb25NYXJrZXI9dC5hZGRNYXJrZXIobiwiYWNlX3NlbGVjdGlvbiIscil9ZWxzZSB0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCk7dmFyIGk9dGhpcy4kaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkJiZ0aGlzLiRnZXRTZWxlY3Rpb25IaWdoTGlnaHRSZWdleHAoKTt0aGlzLnNlc3Npb24uaGlnaGxpZ2h0KGkpLHRoaXMuX3NpZ25hbCgiY2hhbmdlU2VsZWN0aW9uIil9LHRoaXMuJGdldFNlbGVjdGlvbkhpZ2hMaWdodFJlZ2V4cD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbix0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtpZih0LmlzRW1wdHkoKXx8dC5pc011bHRpTGluZSgpKXJldHVybjt2YXIgbj10LnN0YXJ0LmNvbHVtbixyPXQuZW5kLmNvbHVtbixpPWUuZ2V0TGluZSh0LnN0YXJ0LnJvdykscz1pLnN1YnN0cmluZyhuLHIpO2lmKHMubGVuZ3RoPjVlM3x8IS9bXHdcZF0vLnRlc3QocykpcmV0dXJuO3ZhciBvPXRoaXMuJHNlYXJjaC4kYXNzZW1ibGVSZWdFeHAoe3dob2xlV29yZDohMCxjYXNlU2Vuc2l0aXZlOiEwLG5lZWRsZTpzfSksdT1pLnN1YnN0cmluZyhuLTEscisxKTtpZighby50ZXN0KHUpKXJldHVybjtyZXR1cm4gb30sdGhpcy5vbkNoYW5nZUZyb250TWFya2VyPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci51cGRhdGVGcm9udE1hcmtlcnMoKX0sdGhpcy5vbkNoYW5nZUJhY2tNYXJrZXI9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZUJhY2tNYXJrZXJzKCl9LHRoaXMub25DaGFuZ2VCcmVha3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci51cGRhdGVCcmVha3BvaW50cygpfSx0aGlzLm9uQ2hhbmdlQW5ub3RhdGlvbj1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuc2V0QW5ub3RhdGlvbnModGhpcy5zZXNzaW9uLmdldEFubm90YXRpb25zKCkpfSx0aGlzLm9uQ2hhbmdlTW9kZT1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZVRleHQoKSx0aGlzLl9lbWl0KCJjaGFuZ2VNb2RlIixlKX0sdGhpcy5vbkNoYW5nZVdyYXBMaW1pdD1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlRnVsbCgpfSx0aGlzLm9uQ2hhbmdlV3JhcE1vZGU9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLm9uUmVzaXplKCEwKX0sdGhpcy5vbkNoYW5nZUZvbGQ9ZnVuY3Rpb24oKXt0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCksdGhpcy5yZW5kZXJlci51cGRhdGVGdWxsKCl9LHRoaXMuZ2V0U2VsZWN0ZWRUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKX0sdGhpcy5nZXRDb3B5VGV4dD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0U2VsZWN0ZWRUZXh0KCksdD10aGlzLnNlc3Npb24uZG9jLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSxuPSExO2lmKCFlJiZ0aGlzLiRjb3B5V2l0aEVtcHR5U2VsZWN0aW9uKXtuPSEwO3ZhciByPXRoaXMuc2VsZWN0aW9uLmdldEFsbFJhbmdlcygpO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgcz1yW2ldO2lmKGkmJnJbaS0xXS5zdGFydC5yb3c9PXMuc3RhcnQucm93KWNvbnRpbnVlO2UrPXRoaXMuc2Vzc2lvbi5nZXRMaW5lKHMuc3RhcnQucm93KSt0fX12YXIgbz17dGV4dDplfTtyZXR1cm4gdGhpcy5fc2lnbmFsKCJjb3B5IixvKSxiLmxpbmVNb2RlPW4/by50ZXh0OiIiLG8udGV4dH0sdGhpcy5vbkNvcHk9ZnVuY3Rpb24oKXt0aGlzLmNvbW1hbmRzLmV4ZWMoImNvcHkiLHRoaXMpfSx0aGlzLm9uQ3V0PWZ1bmN0aW9uKCl7dGhpcy5jb21tYW5kcy5leGVjKCJjdXQiLHRoaXMpfSx0aGlzLm9uUGFzdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj17dGV4dDplLGV2ZW50OnR9O3RoaXMuY29tbWFuZHMuZXhlYygicGFzdGUiLHRoaXMsbil9LHRoaXMuJGhhbmRsZVBhc3RlPWZ1bmN0aW9uKGUpe3R5cGVvZiBlPT0ic3RyaW5nIiYmKGU9e3RleHQ6ZX0pLHRoaXMuX3NpZ25hbCgicGFzdGUiLGUpO3ZhciB0PWUudGV4dCxuPXQ9PWIubGluZU1vZGUscj10aGlzLnNlc3Npb247aWYoIXRoaXMuaW5NdWx0aVNlbGVjdE1vZGV8fHRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZSluP3IuaW5zZXJ0KHtyb3c6dGhpcy5zZWxlY3Rpb24ubGVhZC5yb3csY29sdW1uOjB9LHQpOnRoaXMuaW5zZXJ0KHQpO2Vsc2UgaWYobil0aGlzLnNlbGVjdGlvbi5yYW5nZUxpc3QucmFuZ2VzLmZvckVhY2goZnVuY3Rpb24oZSl7ci5pbnNlcnQoe3JvdzplLnN0YXJ0LnJvdyxjb2x1bW46MH0sdCl9KTtlbHNle3ZhciBpPXQuc3BsaXQoL1xyXG58XHJ8XG4vKSxzPXRoaXMuc2VsZWN0aW9uLnJhbmdlTGlzdC5yYW5nZXMsbz1pLmxlbmd0aD09MiYmKCFpWzBdfHwhaVsxXSk7aWYoaS5sZW5ndGghPXMubGVuZ3RofHxvKXJldHVybiB0aGlzLmNvbW1hbmRzLmV4ZWMoImluc2VydHN0cmluZyIsdGhpcyx0KTtmb3IodmFyIHU9cy5sZW5ndGg7dS0tOyl7dmFyIGE9c1t1XTthLmlzRW1wdHkoKXx8ci5yZW1vdmUoYSksci5pbnNlcnQoYS5zdGFydCxpW3VdKX19fSx0aGlzLmV4ZWNDb21tYW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tbWFuZHMuZXhlYyhlLHRoaXMsdCl9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zZXNzaW9uLHI9bi5nZXRNb2RlKCksaT10aGlzLmdldEN1cnNvclBvc2l0aW9uKCk7aWYodGhpcy5nZXRCZWhhdmlvdXJzRW5hYmxlZCgpJiYhdCl7dmFyIHM9ci50cmFuc2Zvcm1BY3Rpb24obi5nZXRTdGF0ZShpLnJvdyksImluc2VydGlvbiIsdGhpcyxuLGUpO3MmJihlIT09cy50ZXh0JiYodGhpcy5pblZpcnR1YWxTZWxlY3Rpb25Nb2RlfHwodGhpcy5zZXNzaW9uLm1lcmdlVW5kb0RlbHRhcz0hMSx0aGlzLm1lcmdlTmV4dENvbW1hbmQ9ITEpKSxlPXMudGV4dCl9ZT09IgkiJiYoZT10aGlzLnNlc3Npb24uZ2V0VGFiU3RyaW5nKCkpO2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3ZhciBvPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtpPXRoaXMuc2Vzc2lvbi5yZW1vdmUobyksdGhpcy5jbGVhclNlbGVjdGlvbigpfWVsc2UgaWYodGhpcy5zZXNzaW9uLmdldE92ZXJ3cml0ZSgpJiZlLmluZGV4T2YoIlxuIik9PS0xKXt2YXIgbz1uZXcgcC5mcm9tUG9pbnRzKGksaSk7by5lbmQuY29sdW1uKz1lLmxlbmd0aCx0aGlzLnNlc3Npb24ucmVtb3ZlKG8pfWlmKGU9PSJcbiJ8fGU9PSJcclxuIil7dmFyIHU9bi5nZXRMaW5lKGkucm93KTtpZihpLmNvbHVtbj51LnNlYXJjaCgvXFN8JC8pKXt2YXIgYT11LnN1YnN0cihpLmNvbHVtbikuc2VhcmNoKC9cU3wkLyk7bi5kb2MucmVtb3ZlSW5MaW5lKGkucm93LGkuY29sdW1uLGkuY29sdW1uK2EpfX10aGlzLmNsZWFyU2VsZWN0aW9uKCk7dmFyIGY9aS5jb2x1bW4sbD1uLmdldFN0YXRlKGkucm93KSx1PW4uZ2V0TGluZShpLnJvdyksYz1yLmNoZWNrT3V0ZGVudChsLHUsZSk7bi5pbnNlcnQoaSxlKSxzJiZzLnNlbGVjdGlvbiYmKHMuc2VsZWN0aW9uLmxlbmd0aD09Mj90aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuZXcgcChpLnJvdyxmK3Muc2VsZWN0aW9uWzBdLGkucm93LGYrcy5zZWxlY3Rpb25bMV0pKTp0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuZXcgcChpLnJvdytzLnNlbGVjdGlvblswXSxzLnNlbGVjdGlvblsxXSxpLnJvdytzLnNlbGVjdGlvblsyXSxzLnNlbGVjdGlvblszXSkpKTtpZihuLmdldERvY3VtZW50KCkuaXNOZXdMaW5lKGUpKXt2YXIgaD1yLmdldE5leHRMaW5lSW5kZW50KGwsdS5zbGljZSgwLGkuY29sdW1uKSxuLmdldFRhYlN0cmluZygpKTtuLmluc2VydCh7cm93Omkucm93KzEsY29sdW1uOjB9LGgpfWMmJnIuYXV0b091dGRlbnQobCxuLGkucm93KX0sdGhpcy5vblRleHRJbnB1dD1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiB0aGlzLmtleUJpbmRpbmcub25UZXh0SW5wdXQoZSk7dGhpcy5zdGFydE9wZXJhdGlvbih7Y29tbWFuZDp7bmFtZToiaW5zZXJ0c3RyaW5nIn19KTt2YXIgbj10aGlzLmFwcGx5Q29tcG9zaXRpb24uYmluZCh0aGlzLGUsdCk7dGhpcy5zZWxlY3Rpb24ucmFuZ2VDb3VudD90aGlzLmZvckVhY2hTZWxlY3Rpb24obik6bigpLHRoaXMuZW5kT3BlcmF0aW9uKCl9LHRoaXMuYXBwbHlDb21wb3NpdGlvbj1mdW5jdGlvbihlLHQpe2lmKHQuZXh0ZW5kTGVmdHx8dC5leHRlbmRSaWdodCl7dmFyIG49dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtuLnN0YXJ0LmNvbHVtbi09dC5leHRlbmRMZWZ0LG4uZW5kLmNvbHVtbis9dC5leHRlbmRSaWdodCx0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShuKSwhZSYmIW4uaXNFbXB0eSgpJiZ0aGlzLnJlbW92ZSgpfShlfHwhdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKSYmdGhpcy5pbnNlcnQoZSwhMCk7aWYodC5yZXN0b3JlU3RhcnR8fHQucmVzdG9yZUVuZCl7dmFyIG49dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtuLnN0YXJ0LmNvbHVtbi09dC5yZXN0b3JlU3RhcnQsbi5lbmQuY29sdW1uLT10LnJlc3RvcmVFbmQsdGhpcy5zZWxlY3Rpb24uc2V0UmFuZ2Uobil9fSx0aGlzLm9uQ29tbWFuZEtleT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMua2V5QmluZGluZy5vbkNvbW1hbmRLZXkoZSx0LG4pfSx0aGlzLnNldE92ZXJ3cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNlc3Npb24uc2V0T3ZlcndyaXRlKGUpfSx0aGlzLmdldE92ZXJ3cml0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0T3ZlcndyaXRlKCl9LHRoaXMudG9nZ2xlT3ZlcndyaXRlPWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLnRvZ2dsZU92ZXJ3cml0ZSgpfSx0aGlzLnNldFNjcm9sbFNwZWVkPWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJzY3JvbGxTcGVlZCIsZSl9LHRoaXMuZ2V0U2Nyb2xsU3BlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oInNjcm9sbFNwZWVkIil9LHRoaXMuc2V0RHJhZ0RlbGF5PWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJkcmFnRGVsYXkiLGUpfSx0aGlzLmdldERyYWdEZWxheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE9wdGlvbigiZHJhZ0RlbGF5Iil9LHRoaXMuc2V0U2VsZWN0aW9uU3R5bGU9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oInNlbGVjdGlvblN0eWxlIixlKX0sdGhpcy5nZXRTZWxlY3Rpb25TdHlsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE9wdGlvbigic2VsZWN0aW9uU3R5bGUiKX0sdGhpcy5zZXRIaWdobGlnaHRBY3RpdmVMaW5lPWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJoaWdobGlnaHRBY3RpdmVMaW5lIixlKX0sdGhpcy5nZXRIaWdobGlnaHRBY3RpdmVMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKCJoaWdobGlnaHRBY3RpdmVMaW5lIil9LHRoaXMuc2V0SGlnaGxpZ2h0R3V0dGVyTGluZT1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigiaGlnaGxpZ2h0R3V0dGVyTGluZSIsZSl9LHRoaXMuZ2V0SGlnaGxpZ2h0R3V0dGVyTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE9wdGlvbigiaGlnaGxpZ2h0R3V0dGVyTGluZSIpfSx0aGlzLnNldEhpZ2hsaWdodFNlbGVjdGVkV29yZD1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigiaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkIixlKX0sdGhpcy5nZXRIaWdobGlnaHRTZWxlY3RlZFdvcmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkfSx0aGlzLnNldEFuaW1hdGVkU2Nyb2xsPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0QW5pbWF0ZWRTY3JvbGwoZSl9LHRoaXMuZ2V0QW5pbWF0ZWRTY3JvbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRBbmltYXRlZFNjcm9sbCgpfSx0aGlzLnNldFNob3dJbnZpc2libGVzPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0U2hvd0ludmlzaWJsZXMoZSl9LHRoaXMuZ2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRTaG93SW52aXNpYmxlcygpfSx0aGlzLnNldERpc3BsYXlJbmRlbnRHdWlkZXM9ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXJlci5zZXREaXNwbGF5SW5kZW50R3VpZGVzKGUpfSx0aGlzLmdldERpc3BsYXlJbmRlbnRHdWlkZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXREaXNwbGF5SW5kZW50R3VpZGVzKCl9LHRoaXMuc2V0U2hvd1ByaW50TWFyZ2luPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0U2hvd1ByaW50TWFyZ2luKGUpfSx0aGlzLmdldFNob3dQcmludE1hcmdpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmdldFNob3dQcmludE1hcmdpbigpfSx0aGlzLnNldFByaW50TWFyZ2luQ29sdW1uPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0UHJpbnRNYXJnaW5Db2x1bW4oZSl9LHRoaXMuZ2V0UHJpbnRNYXJnaW5Db2x1bW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRQcmludE1hcmdpbkNvbHVtbigpfSx0aGlzLnNldFJlYWRPbmx5PWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJyZWFkT25seSIsZSl9LHRoaXMuZ2V0UmVhZE9ubHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oInJlYWRPbmx5Iil9LHRoaXMuc2V0QmVoYXZpb3Vyc0VuYWJsZWQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oImJlaGF2aW91cnNFbmFibGVkIixlKX0sdGhpcy5nZXRCZWhhdmlvdXJzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE9wdGlvbigiYmVoYXZpb3Vyc0VuYWJsZWQiKX0sdGhpcy5zZXRXcmFwQmVoYXZpb3Vyc0VuYWJsZWQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oIndyYXBCZWhhdmlvdXJzRW5hYmxlZCIsZSl9LHRoaXMuZ2V0V3JhcEJlaGF2aW91cnNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKCJ3cmFwQmVoYXZpb3Vyc0VuYWJsZWQiKX0sdGhpcy5zZXRTaG93Rm9sZFdpZGdldHM9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oInNob3dGb2xkV2lkZ2V0cyIsZSl9LHRoaXMuZ2V0U2hvd0ZvbGRXaWRnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKCJzaG93Rm9sZFdpZGdldHMiKX0sdGhpcy5zZXRGYWRlRm9sZFdpZGdldHM9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oImZhZGVGb2xkV2lkZ2V0cyIsZSl9LHRoaXMuZ2V0RmFkZUZvbGRXaWRnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKCJmYWRlRm9sZFdpZGdldHMiKX0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oZSl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiYoZT09ImxlZnQiP3RoaXMuc2VsZWN0aW9uLnNlbGVjdExlZnQoKTp0aGlzLnNlbGVjdGlvbi5zZWxlY3RSaWdodCgpKTt2YXIgdD10aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7aWYodGhpcy5nZXRCZWhhdmlvdXJzRW5hYmxlZCgpKXt2YXIgbj10aGlzLnNlc3Npb24scj1uLmdldFN0YXRlKHQuc3RhcnQucm93KSxpPW4uZ2V0TW9kZSgpLnRyYW5zZm9ybUFjdGlvbihyLCJkZWxldGlvbiIsdGhpcyxuLHQpO2lmKHQuZW5kLmNvbHVtbj09PTApe3ZhciBzPW4uZ2V0VGV4dFJhbmdlKHQpO2lmKHNbcy5sZW5ndGgtMV09PSJcbiIpe3ZhciBvPW4uZ2V0TGluZSh0LmVuZC5yb3cpOy9eXHMrJC8udGVzdChvKSYmKHQuZW5kLmNvbHVtbj1vLmxlbmd0aCl9fWkmJih0PWkpfXRoaXMuc2Vzc2lvbi5yZW1vdmUodCksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVdvcmRSaWdodD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZFJpZ2h0KCksdGhpcy5zZXNzaW9uLnJlbW92ZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5yZW1vdmVXb3JkTGVmdD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZExlZnQoKSx0aGlzLnNlc3Npb24ucmVtb3ZlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVRvTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RMaW5lU3RhcnQoKSx0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkmJnRoaXMuc2VsZWN0aW9uLnNlbGVjdExlZnQoKSx0aGlzLnNlc3Npb24ucmVtb3ZlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVRvTGluZUVuZD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0TGluZUVuZCgpO3ZhciBlPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtlLnN0YXJ0LmNvbHVtbj09ZS5lbmQuY29sdW1uJiZlLnN0YXJ0LnJvdz09ZS5lbmQucm93JiYoZS5lbmQuY29sdW1uPTAsZS5lbmQucm93KyspLHRoaXMuc2Vzc2lvbi5yZW1vdmUoZSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnNwbGl0TGluZT1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKXx8KHRoaXMuc2Vzc2lvbi5yZW1vdmUodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCkpO3ZhciBlPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKTt0aGlzLmluc2VydCgiXG4iKSx0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGUpfSx0aGlzLnRyYW5zcG9zZUxldHRlcnM9ZnVuY3Rpb24oKXtpZighdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKXJldHVybjt2YXIgZT10aGlzLmdldEN1cnNvclBvc2l0aW9uKCksdD1lLmNvbHVtbjtpZih0PT09MClyZXR1cm47dmFyIG49dGhpcy5zZXNzaW9uLmdldExpbmUoZS5yb3cpLHIsaTt0PG4ubGVuZ3RoPyhyPW4uY2hhckF0KHQpK24uY2hhckF0KHQtMSksaT1uZXcgcChlLnJvdyx0LTEsZS5yb3csdCsxKSk6KHI9bi5jaGFyQXQodC0xKStuLmNoYXJBdCh0LTIpLGk9bmV3IHAoZS5yb3csdC0yLGUucm93LHQpKSx0aGlzLnNlc3Npb24ucmVwbGFjZShpLHIpLHRoaXMuc2Vzc2lvbi5zZWxlY3Rpb24ubW92ZVRvUG9zaXRpb24oaS5lbmQpfSx0aGlzLnRvTG93ZXJDYXNlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZCgpO3ZhciB0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxuPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UodCk7dGhpcy5zZXNzaW9uLnJlcGxhY2UodCxuLnRvTG93ZXJDYXNlKCkpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGUpfSx0aGlzLnRvVXBwZXJDYXNlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZCgpO3ZhciB0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxuPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UodCk7dGhpcy5zZXNzaW9uLnJlcGxhY2UodCxuLnRvVXBwZXJDYXNlKCkpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGUpfSx0aGlzLmluZGVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbix0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtpZih0LnN0YXJ0LnJvdzx0LmVuZC5yb3cpe3ZhciBuPXRoaXMuJGdldFNlbGVjdGVkUm93cygpO2UuaW5kZW50Um93cyhuLmZpcnN0LG4ubGFzdCwiCSIpO3JldHVybn1pZih0LnN0YXJ0LmNvbHVtbjx0LmVuZC5jb2x1bW4pe3ZhciByPWUuZ2V0VGV4dFJhbmdlKHQpO2lmKCEvXlxzKyQvLnRlc3Qocikpe3ZhciBuPXRoaXMuJGdldFNlbGVjdGVkUm93cygpO2UuaW5kZW50Um93cyhuLmZpcnN0LG4ubGFzdCwiCSIpO3JldHVybn19dmFyIGk9ZS5nZXRMaW5lKHQuc3RhcnQucm93KSxvPXQuc3RhcnQsdT1lLmdldFRhYlNpemUoKSxhPWUuZG9jdW1lbnRUb1NjcmVlbkNvbHVtbihvLnJvdyxvLmNvbHVtbik7aWYodGhpcy5zZXNzaW9uLmdldFVzZVNvZnRUYWJzKCkpdmFyIGY9dS1hJXUsbD1zLnN0cmluZ1JlcGVhdCgiICIsZik7ZWxzZXt2YXIgZj1hJXU7d2hpbGUoaVt0LnN0YXJ0LmNvbHVtbi0xXT09IiAiJiZmKXQuc3RhcnQuY29sdW1uLS0sZi0tO3RoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKHQpLGw9IgkifXJldHVybiB0aGlzLmluc2VydChsKX0sdGhpcy5ibG9ja0luZGVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuJGdldFNlbGVjdGVkUm93cygpO3RoaXMuc2Vzc2lvbi5pbmRlbnRSb3dzKGUuZmlyc3QsZS5sYXN0LCIJIil9LHRoaXMuYmxvY2tPdXRkZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZXNzaW9uLmdldFNlbGVjdGlvbigpO3RoaXMuc2Vzc2lvbi5vdXRkZW50Um93cyhlLmdldFJhbmdlKCkpfSx0aGlzLnNvcnRMaW5lcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuJGdldFNlbGVjdGVkUm93cygpLHQ9dGhpcy5zZXNzaW9uLG49W107Zm9yKHZhciByPWUuZmlyc3Q7cjw9ZS5sYXN0O3IrKyluLnB1c2godC5nZXRMaW5lKHIpKTtuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpPHQudG9Mb3dlckNhc2UoKT8tMTplLnRvTG93ZXJDYXNlKCk+dC50b0xvd2VyQ2FzZSgpPzE6MH0pO3ZhciBpPW5ldyBwKDAsMCwwLDApO2Zvcih2YXIgcj1lLmZpcnN0O3I8PWUubGFzdDtyKyspe3ZhciBzPXQuZ2V0TGluZShyKTtpLnN0YXJ0LnJvdz1yLGkuZW5kLnJvdz1yLGkuZW5kLmNvbHVtbj1zLmxlbmd0aCx0LnJlcGxhY2UoaSxuW3ItZS5maXJzdF0pfX0sdGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNlc3Npb24uZ2V0U3RhdGUodGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLnJvdyksdD10aGlzLiRnZXRTZWxlY3RlZFJvd3MoKTt0aGlzLnNlc3Npb24uZ2V0TW9kZSgpLnRvZ2dsZUNvbW1lbnRMaW5lcyhlLHRoaXMuc2Vzc2lvbix0LmZpcnN0LHQubGFzdCl9LHRoaXMudG9nZ2xlQmxvY2tDb21tZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLHQ9dGhpcy5zZXNzaW9uLmdldFN0YXRlKGUucm93KSxuPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTt0aGlzLnNlc3Npb24uZ2V0TW9kZSgpLnRvZ2dsZUJsb2NrQ29tbWVudCh0LHRoaXMuc2Vzc2lvbixuLGUpfSx0aGlzLmdldE51bWJlckF0PWZ1bmN0aW9uKGUsdCl7dmFyIG49L1tcLV0/WzAtOV0rKD86XC5bMC05XSspPy9nO24ubGFzdEluZGV4PTA7dmFyIHI9dGhpcy5zZXNzaW9uLmdldExpbmUoZSk7d2hpbGUobi5sYXN0SW5kZXg8dCl7dmFyIGk9bi5leGVjKHIpO2lmKGkuaW5kZXg8PXQmJmkuaW5kZXgraVswXS5sZW5ndGg+PXQpe3ZhciBzPXt2YWx1ZTppWzBdLHN0YXJ0OmkuaW5kZXgsZW5kOmkuaW5kZXgraVswXS5sZW5ndGh9O3JldHVybiBzfX1yZXR1cm4gbnVsbH0sdGhpcy5tb2RpZnlOdW1iZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZWxlY3Rpb24uZ2V0Q3Vyc29yKCkucm93LG49dGhpcy5zZWxlY3Rpb24uZ2V0Q3Vyc29yKCkuY29sdW1uLHI9bmV3IHAodCxuLTEsdCxuKSxpPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2Uocik7aWYoIWlzTmFOKHBhcnNlRmxvYXQoaSkpJiZpc0Zpbml0ZShpKSl7dmFyIHM9dGhpcy5nZXROdW1iZXJBdCh0LG4pO2lmKHMpe3ZhciBvPXMudmFsdWUuaW5kZXhPZigiLiIpPj0wP3Muc3RhcnQrcy52YWx1ZS5pbmRleE9mKCIuIikrMTpzLmVuZCx1PXMuc3RhcnQrcy52YWx1ZS5sZW5ndGgtbyxhPXBhcnNlRmxvYXQocy52YWx1ZSk7YSo9TWF0aC5wb3coMTAsdSksbyE9PXMuZW5kJiZuPG8/ZSo9TWF0aC5wb3coMTAscy5lbmQtbi0xKTplKj1NYXRoLnBvdygxMCxzLmVuZC1uKSxhKz1lLGEvPU1hdGgucG93KDEwLHUpO3ZhciBmPWEudG9GaXhlZCh1KSxsPW5ldyBwKHQscy5zdGFydCx0LHMuZW5kKTt0aGlzLnNlc3Npb24ucmVwbGFjZShsLGYpLHRoaXMubW92ZUN1cnNvclRvKHQsTWF0aC5tYXgocy5zdGFydCsxLG4rZi5sZW5ndGgtcy52YWx1ZS5sZW5ndGgpKX19ZWxzZSB0aGlzLnRvZ2dsZVdvcmQoKX0sdGhpcy4kdG9nZ2xlV29yZFBhaXJzPVtbImZpcnN0IiwibGFzdCJdLFsidHJ1ZSIsImZhbHNlIl0sWyJ5ZXMiLCJubyJdLFsid2lkdGgiLCJoZWlnaHQiXSxbInRvcCIsImJvdHRvbSJdLFsicmlnaHQiLCJsZWZ0Il0sWyJvbiIsIm9mZiJdLFsieCIsInkiXSxbImdldCIsInNldCJdLFsibWF4IiwibWluIl0sWyJob3Jpem9udGFsIiwidmVydGljYWwiXSxbInNob3ciLCJoaWRlIl0sWyJhZGQiLCJyZW1vdmUiXSxbInVwIiwiZG93biJdLFsiYmVmb3JlIiwiYWZ0ZXIiXSxbImV2ZW4iLCJvZGQiXSxbImluc2lkZSIsIm91dHNpZGUiXSxbIm5leHQiLCJwcmV2aW91cyJdLFsiaW5jcmVhc2UiLCJkZWNyZWFzZSJdLFsiYXR0YWNoIiwiZGV0YWNoIl0sWyImJiIsInx8Il0sWyI9PSIsIiE9Il1dLHRoaXMudG9nZ2xlV29yZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VsZWN0aW9uLmdldEN1cnNvcigpLnJvdyx0PXRoaXMuc2VsZWN0aW9uLmdldEN1cnNvcigpLmNvbHVtbjt0aGlzLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCk7dmFyIG49dGhpcy5nZXRTZWxlY3RlZFRleHQoKSxyPXRoaXMuc2VsZWN0aW9uLmdldFdvcmRSYW5nZSgpLnN0YXJ0LmNvbHVtbixpPW4ucmVwbGFjZSgvKFthLXpdK3xbQS1aXSspKD89W0EtWl9dfCQpL2csIiQxICIpLnNwbGl0KC9ccy8pLG89dC1yLTE7bzwwJiYobz0wKTt2YXIgdT0wLGE9MCxmPXRoaXM7bi5tYXRjaCgvW0EtWmEtejAtOV9dKy8pJiZpLmZvckVhY2goZnVuY3Rpb24odCxpKXthPXUrdC5sZW5ndGgsbz49dSYmbzw9YSYmKG49dCxmLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGYubW92ZUN1cnNvclRvKGUsdStyKSxmLnNlbGVjdGlvbi5zZWxlY3RUbyhlLGErcikpLHU9YX0pO3ZhciBsPXRoaXMuJHRvZ2dsZVdvcmRQYWlycyxjO2Zvcih2YXIgaD0wO2g8bC5sZW5ndGg7aCsrKXt2YXIgcD1sW2hdO2Zvcih2YXIgZD0wO2Q8PTE7ZCsrKXt2YXIgdj0rIWQsbT1uLm1hdGNoKG5ldyBSZWdFeHAoIl5cXHM/Xz8oIitzLmVzY2FwZVJlZ0V4cChwW2RdKSsiKVxccz8kIiwiaSIpKTtpZihtKXt2YXIgZz1uLm1hdGNoKG5ldyBSZWdFeHAoIihbX118XnxcXHMpKCIrcy5lc2NhcGVSZWdFeHAobVsxXSkrIikoJHxcXHMpIiwiZyIpKTtnJiYoYz1uLnJlcGxhY2UobmV3IFJlZ0V4cChzLmVzY2FwZVJlZ0V4cChwW2RdKSwiaSIpLGZ1bmN0aW9uKGUpe3ZhciB0PXBbdl07cmV0dXJuIGUudG9VcHBlckNhc2UoKT09ZT90PXQudG9VcHBlckNhc2UoKTplLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpPT1lLmNoYXJBdCgwKSYmKHQ9dC5zdWJzdHIoMCwwKStwW3ZdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpKSx0fSksdGhpcy5pbnNlcnQoYyksYz0iIil9fX19LHRoaXMucmVtb3ZlTGluZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRnZXRTZWxlY3RlZFJvd3MoKTt0aGlzLnNlc3Npb24ucmVtb3ZlRnVsbExpbmVzKGUuZmlyc3QsZS5sYXN0KSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMuZHVwbGljYXRlU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZWxlY3Rpb24sdD10aGlzLnNlc3Npb24sbj1lLmdldFJhbmdlKCkscj1lLmlzQmFja3dhcmRzKCk7aWYobi5pc0VtcHR5KCkpe3ZhciBpPW4uc3RhcnQucm93O3QuZHVwbGljYXRlTGluZXMoaSxpKX1lbHNle3ZhciBzPXI/bi5zdGFydDpuLmVuZCxvPXQuaW5zZXJ0KHMsdC5nZXRUZXh0UmFuZ2UobiksITEpO24uc3RhcnQ9cyxuLmVuZD1vLGUuc2V0U2VsZWN0aW9uUmFuZ2UobixyKX19LHRoaXMubW92ZUxpbmVzRG93bj1mdW5jdGlvbigpe3RoaXMuJG1vdmVMaW5lcygxLCExKX0sdGhpcy5tb3ZlTGluZXNVcD1mdW5jdGlvbigpe3RoaXMuJG1vdmVMaW5lcygtMSwhMSl9LHRoaXMubW92ZVRleHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLnNlc3Npb24ubW92ZVRleHQoZSx0LG4pfSx0aGlzLmNvcHlMaW5lc1VwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUxpbmVzKC0xLCEwKX0sdGhpcy5jb3B5TGluZXNEb3duPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUxpbmVzKDEsITApfSx0aGlzLiRtb3ZlTGluZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9dGhpcy5zZWxlY3Rpb247aWYoIWkuaW5NdWx0aVNlbGVjdE1vZGV8fHRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZSl7dmFyIHM9aS50b09yaWVudGVkUmFuZ2UoKTtuPXRoaXMuJGdldFNlbGVjdGVkUm93cyhzKSxyPXRoaXMuc2Vzc2lvbi4kbW92ZUxpbmVzKG4uZmlyc3Qsbi5sYXN0LHQ/MDplKSx0JiZlPT0tMSYmKHI9MCkscy5tb3ZlQnkociwwKSxpLmZyb21PcmllbnRlZFJhbmdlKHMpfWVsc2V7dmFyIG89aS5yYW5nZUxpc3QucmFuZ2VzO2kucmFuZ2VMaXN0LmRldGFjaCh0aGlzLnNlc3Npb24pLHRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZT0hMDt2YXIgdT0wLGE9MCxmPW8ubGVuZ3RoO2Zvcih2YXIgbD0wO2w8ZjtsKyspe3ZhciBjPWw7b1tsXS5tb3ZlQnkodSwwKSxuPXRoaXMuJGdldFNlbGVjdGVkUm93cyhvW2xdKTt2YXIgaD1uLmZpcnN0LHA9bi5sYXN0O3doaWxlKCsrbDxmKXthJiZvW2xdLm1vdmVCeShhLDApO3ZhciBkPXRoaXMuJGdldFNlbGVjdGVkUm93cyhvW2xdKTtpZih0JiZkLmZpcnN0IT1wKWJyZWFrO2lmKCF0JiZkLmZpcnN0PnArMSlicmVhaztwPWQubGFzdH1sLS0sdT10aGlzLnNlc3Npb24uJG1vdmVMaW5lcyhoLHAsdD8wOmUpLHQmJmU9PS0xJiYoYz1sKzEpO3doaWxlKGM8PWwpb1tjXS5tb3ZlQnkodSwwKSxjKys7dHx8KHU9MCksYSs9dX1pLmZyb21PcmllbnRlZFJhbmdlKGkucmFuZ2VzWzBdKSxpLnJhbmdlTGlzdC5hdHRhY2godGhpcy5zZXNzaW9uKSx0aGlzLmluVmlydHVhbFNlbGVjdGlvbk1vZGU9ITF9fSx0aGlzLiRnZXRTZWxlY3RlZFJvd3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9KGV8fHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSkuY29sbGFwc2VSb3dzKCkse2ZpcnN0OnRoaXMuc2Vzc2lvbi5nZXRSb3dGb2xkU3RhcnQoZS5zdGFydC5yb3cpLGxhc3Q6dGhpcy5zZXNzaW9uLmdldFJvd0ZvbGRFbmQoZS5lbmQucm93KX19LHRoaXMub25Db21wb3NpdGlvblN0YXJ0PWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2hvd0NvbXBvc2l0aW9uKGUpfSx0aGlzLm9uQ29tcG9zaXRpb25VcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXJlci5zZXRDb21wb3NpdGlvblRleHQoZSl9LHRoaXMub25Db21wb3NpdGlvbkVuZD1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuaGlkZUNvbXBvc2l0aW9uKCl9LHRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0Rmlyc3RWaXNpYmxlUm93KCl9LHRoaXMuZ2V0TGFzdFZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRMYXN0VmlzaWJsZVJvdygpfSx0aGlzLmlzUm93VmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy5nZXRGaXJzdFZpc2libGVSb3coKSYmZTw9dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpfSx0aGlzLmlzUm93RnVsbHlWaXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiBlPj10aGlzLnJlbmRlcmVyLmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCkmJmU8PXRoaXMucmVuZGVyZXIuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdygpfSx0aGlzLiRnZXRWaXNpYmxlUm93Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRTY3JvbGxCb3R0b21Sb3coKS10aGlzLnJlbmRlcmVyLmdldFNjcm9sbFRvcFJvdygpKzF9LHRoaXMuJG1vdmVCeVBhZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbmRlcmVyLHI9dGhpcy5yZW5kZXJlci5sYXllckNvbmZpZyxpPWUqTWF0aC5mbG9vcihyLmhlaWdodC9yLmxpbmVIZWlnaHQpO3Q9PT0hMD90aGlzLnNlbGVjdGlvbi4kbW92ZVNlbGVjdGlvbihmdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvckJ5KGksMCl9KTp0PT09ITEmJih0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yQnkoaSwwKSx0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpKTt2YXIgcz1uLnNjcm9sbFRvcDtuLnNjcm9sbEJ5KDAsaSpyLmxpbmVIZWlnaHQpLHQhPW51bGwmJm4uc2Nyb2xsQ3Vyc29ySW50b1ZpZXcobnVsbCwuNSksbi5hbmltYXRlU2Nyb2xsaW5nKHMpfSx0aGlzLnNlbGVjdFBhZ2VEb3duPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgxLCEwKX0sdGhpcy5zZWxlY3RQYWdlVXA9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKC0xLCEwKX0sdGhpcy5nb3RvUGFnZURvd249ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKDEsITEpfSx0aGlzLmdvdG9QYWdlVXA9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKC0xLCExKX0sdGhpcy5zY3JvbGxQYWdlRG93bj1mdW5jdGlvbigpe3RoaXMuJG1vdmVCeVBhZ2UoMSl9LHRoaXMuc2Nyb2xsUGFnZVVwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgtMSl9LHRoaXMuc2Nyb2xsVG9Sb3c9ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXJlci5zY3JvbGxUb1JvdyhlKX0sdGhpcy5zY3JvbGxUb0xpbmU9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5yZW5kZXJlci5zY3JvbGxUb0xpbmUoZSx0LG4scil9LHRoaXMuY2VudGVyU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpLHQ9e3JvdzpNYXRoLmZsb29yKGUuc3RhcnQucm93KyhlLmVuZC5yb3ctZS5zdGFydC5yb3cpLzIpLGNvbHVtbjpNYXRoLmZsb29yKGUuc3RhcnQuY29sdW1uKyhlLmVuZC5jb2x1bW4tZS5zdGFydC5jb2x1bW4pLzIpfTt0aGlzLnJlbmRlcmVyLmFsaWduQ3Vyc29yKHQsLjUpfSx0aGlzLmdldEN1cnNvclBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmdldEN1cnNvcigpfSx0aGlzLmdldEN1cnNvclBvc2l0aW9uU2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpKX0sdGhpcy5nZXRTZWxlY3Rpb25SYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpfSx0aGlzLnNlbGVjdEFsbD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbCgpfSx0aGlzLmNsZWFyU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5tb3ZlQ3Vyc29yVG89ZnVuY3Rpb24oZSx0KXt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG8oZSx0KX0sdGhpcy5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbj1mdW5jdGlvbihlKXt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihlKX0sdGhpcy5qdW1wVG9NYXRjaGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxyPW5ldyB5KHRoaXMuc2Vzc2lvbixuLnJvdyxuLmNvbHVtbiksaT1yLmdldEN1cnJlbnRUb2tlbigpLHM9aXx8ci5zdGVwRm9yd2FyZCgpO2lmKCFzKXJldHVybjt2YXIgbyx1PSExLGE9e30sZj1uLmNvbHVtbi1zLnN0YXJ0LGwsYz17IikiOiIoIiwiKCI6IigiLCJdIjoiWyIsIlsiOiJbIiwieyI6InsiLCJ9IjoieyJ9O2Rve2lmKHMudmFsdWUubWF0Y2goL1t7fSgpXFtcXV0vZykpZm9yKDtmPHMudmFsdWUubGVuZ3RoJiYhdTtmKyspe2lmKCFjW3MudmFsdWVbZl1dKWNvbnRpbnVlO2w9Y1tzLnZhbHVlW2ZdXSsiLiIrcy50eXBlLnJlcGxhY2UoInJwYXJlbiIsImxwYXJlbiIpLGlzTmFOKGFbbF0pJiYoYVtsXT0wKTtzd2l0Y2gocy52YWx1ZVtmXSl7Y2FzZSIoIjpjYXNlIlsiOmNhc2UieyI6YVtsXSsrO2JyZWFrO2Nhc2UiKSI6Y2FzZSJdIjpjYXNlIn0iOmFbbF0tLSxhW2xdPT09LTEmJihvPSJicmFja2V0Iix1PSEwKX19ZWxzZSBzLnR5cGUuaW5kZXhPZigidGFnLW5hbWUiKSE9PS0xJiYoaXNOYU4oYVtzLnZhbHVlXSkmJihhW3MudmFsdWVdPTApLGkudmFsdWU9PT0iPCI/YVtzLnZhbHVlXSsrOmkudmFsdWU9PT0iPC8iJiZhW3MudmFsdWVdLS0sYVtzLnZhbHVlXT09PS0xJiYobz0idGFnIix1PSEwKSk7dXx8KGk9cyxzPXIuc3RlcEZvcndhcmQoKSxmPTApfXdoaWxlKHMmJiF1KTtpZighbylyZXR1cm47dmFyIGgsZDtpZihvPT09ImJyYWNrZXQiKXtoPXRoaXMuc2Vzc2lvbi5nZXRCcmFja2V0UmFuZ2Uobik7aWYoIWgpe2g9bmV3IHAoci5nZXRDdXJyZW50VG9rZW5Sb3coKSxyLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2YtMSxyLmdldEN1cnJlbnRUb2tlblJvdygpLHIuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrZi0xKSxkPWguc3RhcnQ7aWYodHx8ZC5yb3c9PT1uLnJvdyYmTWF0aC5hYnMoZC5jb2x1bW4tbi5jb2x1bW4pPDIpaD10aGlzLnNlc3Npb24uZ2V0QnJhY2tldFJhbmdlKGQpfX1lbHNlIGlmKG89PT0idGFnIil7aWYoIXN8fHMudHlwZS5pbmRleE9mKCJ0YWctbmFtZSIpPT09LTEpcmV0dXJuO3ZhciB2PXMudmFsdWU7aD1uZXcgcChyLmdldEN1cnJlbnRUb2tlblJvdygpLHIuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCktMixyLmdldEN1cnJlbnRUb2tlblJvdygpLHIuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCktMik7aWYoaC5jb21wYXJlKG4ucm93LG4uY29sdW1uKT09PTApe3U9ITE7ZG8gcz1pLGk9ci5zdGVwQmFja3dhcmQoKSxpJiYoaS50eXBlLmluZGV4T2YoInRhZy1jbG9zZSIpIT09LTEmJmguc2V0RW5kKHIuZ2V0Q3VycmVudFRva2VuUm93KCksci5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKSsxKSxzLnZhbHVlPT09diYmcy50eXBlLmluZGV4T2YoInRhZy1uYW1lIikhPT0tMSYmKGkudmFsdWU9PT0iPCI/YVt2XSsrOmkudmFsdWU9PT0iPC8iJiZhW3ZdLS0sYVt2XT09PTAmJih1PSEwKSkpO3doaWxlKGkmJiF1KX1zJiZzLnR5cGUuaW5kZXhPZigidGFnLW5hbWUiKSYmKGQ9aC5zdGFydCxkLnJvdz09bi5yb3cmJk1hdGguYWJzKGQuY29sdW1uLW4uY29sdW1uKTwyJiYoZD1oLmVuZCkpfWQ9aCYmaC5jdXJzb3J8fGQsZCYmKGU/aCYmdD90aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShoKTpoJiZoLmlzRXF1YWwodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKT90aGlzLmNsZWFyU2VsZWN0aW9uKCk6dGhpcy5zZWxlY3Rpb24uc2VsZWN0VG8oZC5yb3csZC5jb2x1bW4pOnRoaXMuc2VsZWN0aW9uLm1vdmVUbyhkLnJvdyxkLmNvbHVtbikpfSx0aGlzLmdvdG9MaW5lPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHRoaXMuc2Vzc2lvbi51bmZvbGQoe3JvdzplLTEsY29sdW1uOnR8fDB9KSx0aGlzLmV4aXRNdWx0aVNlbGVjdE1vZGUmJnRoaXMuZXhpdE11bHRpU2VsZWN0TW9kZSgpLHRoaXMubW92ZUN1cnNvclRvKGUtMSx0fHwwKSx0aGlzLmlzUm93RnVsbHlWaXNpYmxlKGUtMSl8fHRoaXMuc2Nyb2xsVG9MaW5lKGUtMSwhMCxuKX0sdGhpcy5uYXZpZ2F0ZVRvPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZWxlY3Rpb24ubW92ZVRvKGUsdCl9LHRoaXMubmF2aWdhdGVVcD1mdW5jdGlvbihlKXtpZih0aGlzLnNlbGVjdGlvbi5pc011bHRpTGluZSgpJiYhdGhpcy5zZWxlY3Rpb24uaXNCYWNrd2FyZHMoKSl7dmFyIHQ9dGhpcy5zZWxlY3Rpb24uYW5jaG9yLmdldFBvc2l0aW9uKCk7cmV0dXJuIHRoaXMubW92ZUN1cnNvclRvUG9zaXRpb24odCl9dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yQnkoLWV8fC0xLDApfSx0aGlzLm5hdmlnYXRlRG93bj1mdW5jdGlvbihlKXtpZih0aGlzLnNlbGVjdGlvbi5pc011bHRpTGluZSgpJiZ0aGlzLnNlbGVjdGlvbi5pc0JhY2t3YXJkcygpKXt2YXIgdD10aGlzLnNlbGVjdGlvbi5hbmNob3IuZ2V0UG9zaXRpb24oKTtyZXR1cm4gdGhpcy5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbih0KX10aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHRoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JCeShlfHwxLDApfSx0aGlzLm5hdmlnYXRlTGVmdD1mdW5jdGlvbihlKXtpZighdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKXt2YXIgdD10aGlzLmdldFNlbGVjdGlvblJhbmdlKCkuc3RhcnQ7dGhpcy5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbih0KX1lbHNle2U9ZXx8MTt3aGlsZShlLS0pdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckxlZnQoKX10aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubmF2aWdhdGVSaWdodD1mdW5jdGlvbihlKXtpZighdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKXt2YXIgdD10aGlzLmdldFNlbGVjdGlvblJhbmdlKCkuZW5kO3RoaXMubW92ZUN1cnNvclRvUG9zaXRpb24odCl9ZWxzZXtlPWV8fDE7d2hpbGUoZS0tKXRoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JSaWdodCgpfXRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZUxpbmVTdGFydD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JMaW5lU3RhcnQoKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubmF2aWdhdGVMaW5lRW5kPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckxpbmVFbmQoKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubmF2aWdhdGVGaWxlRW5kPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckZpbGVFbmQoKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubmF2aWdhdGVGaWxlU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRmlsZVN0YXJ0KCksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLm5hdmlnYXRlV29yZFJpZ2h0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvcldvcmRSaWdodCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZVdvcmRMZWZ0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvcldvcmRMZWZ0KCksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlcGxhY2U9ZnVuY3Rpb24oZSx0KXt0JiZ0aGlzLiRzZWFyY2guc2V0KHQpO3ZhciBuPXRoaXMuJHNlYXJjaC5maW5kKHRoaXMuc2Vzc2lvbikscj0wO3JldHVybiBuPyh0aGlzLiR0cnlSZXBsYWNlKG4sZSkmJihyPTEpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKG4pLHRoaXMucmVuZGVyZXIuc2Nyb2xsU2VsZWN0aW9uSW50b1ZpZXcobi5zdGFydCxuLmVuZCkscik6cn0sdGhpcy5yZXBsYWNlQWxsPWZ1bmN0aW9uKGUsdCl7dCYmdGhpcy4kc2VhcmNoLnNldCh0KTt2YXIgbj10aGlzLiRzZWFyY2guZmluZEFsbCh0aGlzLnNlc3Npb24pLHI9MDtpZighbi5sZW5ndGgpcmV0dXJuIHI7dmFyIGk9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO3RoaXMuc2VsZWN0aW9uLm1vdmVUbygwLDApO2Zvcih2YXIgcz1uLmxlbmd0aC0xO3M+PTA7LS1zKXRoaXMuJHRyeVJlcGxhY2UobltzXSxlKSYmcisrO3JldHVybiB0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShpKSxyfSx0aGlzLiR0cnlSZXBsYWNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZShlKTtyZXR1cm4gdD10aGlzLiRzZWFyY2gucmVwbGFjZShuLHQpLHQhPT1udWxsPyhlLmVuZD10aGlzLnNlc3Npb24ucmVwbGFjZShlLHQpLGUpOm51bGx9LHRoaXMuZ2V0TGFzdFNlYXJjaE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2VhcmNoLmdldE9wdGlvbnMoKX0sdGhpcy5maW5kPWZ1bmN0aW9uKGUsdCxuKXt0fHwodD17fSksdHlwZW9mIGU9PSJzdHJpbmcifHxlIGluc3RhbmNlb2YgUmVnRXhwP3QubmVlZGxlPWU6dHlwZW9mIGU9PSJvYmplY3QiJiZyLm1peGluKHQsZSk7dmFyIGk9dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTt0Lm5lZWRsZT09bnVsbCYmKGU9dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZShpKXx8dGhpcy4kc2VhcmNoLiRvcHRpb25zLm5lZWRsZSxlfHwoaT10aGlzLnNlc3Npb24uZ2V0V29yZFJhbmdlKGkuc3RhcnQucm93LGkuc3RhcnQuY29sdW1uKSxlPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UoaSkpLHRoaXMuJHNlYXJjaC5zZXQoe25lZWRsZTplfSkpLHRoaXMuJHNlYXJjaC5zZXQodCksdC5zdGFydHx8dGhpcy4kc2VhcmNoLnNldCh7c3RhcnQ6aX0pO3ZhciBzPXRoaXMuJHNlYXJjaC5maW5kKHRoaXMuc2Vzc2lvbik7aWYodC5wcmV2ZW50U2Nyb2xsKXJldHVybiBzO2lmKHMpcmV0dXJuIHRoaXMucmV2ZWFsUmFuZ2UocyxuKSxzO3QuYmFja3dhcmRzP2kuc3RhcnQ9aS5lbmQ6aS5lbmQ9aS5zdGFydCx0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShpKX0sdGhpcy5maW5kTmV4dD1mdW5jdGlvbihlLHQpe3RoaXMuZmluZCh7c2tpcEN1cnJlbnQ6ITAsYmFja3dhcmRzOiExfSxlLHQpfSx0aGlzLmZpbmRQcmV2aW91cz1mdW5jdGlvbihlLHQpe3RoaXMuZmluZChlLHtza2lwQ3VycmVudDohMCxiYWNrd2FyZHM6ITB9LHQpfSx0aGlzLnJldmVhbFJhbmdlPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXNzaW9uLnVuZm9sZChlKSx0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShlKTt2YXIgbj10aGlzLnJlbmRlcmVyLnNjcm9sbFRvcDt0aGlzLnJlbmRlcmVyLnNjcm9sbFNlbGVjdGlvbkludG9WaWV3KGUuc3RhcnQsZS5lbmQsLjUpLHQhPT0hMSYmdGhpcy5yZW5kZXJlci5hbmltYXRlU2Nyb2xsaW5nKG4pfSx0aGlzLnVuZG89ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uZ2V0VW5kb01hbmFnZXIoKS51bmRvKHRoaXMuc2Vzc2lvbiksdGhpcy5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldyhudWxsLC41KX0sdGhpcy5yZWRvPWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLmdldFVuZG9NYW5hZ2VyKCkucmVkbyh0aGlzLnNlc3Npb24pLHRoaXMucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcobnVsbCwuNSl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuZGVzdHJveSgpLHRoaXMuX3NpZ25hbCgiZGVzdHJveSIsdGhpcyksdGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24uZGVzdHJveSgpfSx0aGlzLnNldEF1dG9TY3JvbGxFZGl0b3JJbnRvVmlldz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm47dmFyIHQsbj10aGlzLHI9ITE7dGhpcy4kc2Nyb2xsQW5jaG9yfHwodGhpcy4kc2Nyb2xsQW5jaG9yPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTt2YXIgaT10aGlzLiRzY3JvbGxBbmNob3I7aS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZSIsdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGksdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7dmFyIHM9dGhpcy5vbigiY2hhbmdlU2VsZWN0aW9uIixmdW5jdGlvbigpe3I9ITB9KSxvPXRoaXMucmVuZGVyZXIub24oImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXtyJiYodD1uLnJlbmRlcmVyLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSl9KSx1PXRoaXMucmVuZGVyZXIub24oImFmdGVyUmVuZGVyIixmdW5jdGlvbigpe2lmKHImJnQmJihuLmlzRm9jdXNlZCgpfHxuLnNlYXJjaEJveCYmbi5zZWFyY2hCb3guaXNGb2N1c2VkKCkpKXt2YXIgZT1uLnJlbmRlcmVyLHM9ZS4kY3Vyc29yTGF5ZXIuJHBpeGVsUG9zLG89ZS5sYXllckNvbmZpZyx1PXMudG9wLW8ub2Zmc2V0O3MudG9wPj0wJiZ1K3QudG9wPDA/cj0hMDpzLnRvcDxvLmhlaWdodCYmcy50b3ArdC50b3Arby5saW5lSGVpZ2h0PndpbmRvdy5pbm5lckhlaWdodD9yPSExOnI9bnVsbCxyIT1udWxsJiYoaS5zdHlsZS50b3A9dSsicHgiLGkuc3R5bGUubGVmdD1zLmxlZnQrInB4IixpLnN0eWxlLmhlaWdodD1vLmxpbmVIZWlnaHQrInB4IixpLnNjcm9sbEludG9WaWV3KHIpKSxyPXQ9bnVsbH19KTt0aGlzLnNldEF1dG9TY3JvbGxFZGl0b3JJbnRvVmlldz1mdW5jdGlvbihlKXtpZihlKXJldHVybjtkZWxldGUgdGhpcy5zZXRBdXRvU2Nyb2xsRWRpdG9ySW50b1ZpZXcsdGhpcy5vZmYoImNoYW5nZVNlbGVjdGlvbiIscyksdGhpcy5yZW5kZXJlci5vZmYoImFmdGVyUmVuZGVyIix1KSx0aGlzLnJlbmRlcmVyLm9mZigiYmVmb3JlUmVuZGVyIixvKX19LHRoaXMuJHJlc2V0Q3Vyc29yU3R5bGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRjdXJzb3JTdHlsZXx8ImFjZSIsdD10aGlzLnJlbmRlcmVyLiRjdXJzb3JMYXllcjtpZighdClyZXR1cm47dC5zZXRTbW9vdGhCbGlua2luZygvc21vb3RoLy50ZXN0KGUpKSx0LmlzQmxpbmtpbmc9IXRoaXMuJHJlYWRPbmx5JiZlIT0id2lkZSIsaS5zZXRDc3NDbGFzcyh0LmVsZW1lbnQsImFjZV9zbGltLWN1cnNvcnMiLC9zbGltLy50ZXN0KGUpKX0sdGhpcy5wcm9tcHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7Zy5sb2FkTW9kdWxlKCIuL2V4dC9wcm9tcHQiLGZ1bmN0aW9uKGkpe2kucHJvbXB0KHIsZSx0LG4pfSl9fS5jYWxsKHcucHJvdG90eXBlKSxnLmRlZmluZU9wdGlvbnMody5wcm90b3R5cGUsImVkaXRvciIse3NlbGVjdGlvblN0eWxlOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpLHRoaXMuX3NpZ25hbCgiY2hhbmdlU2VsZWN0aW9uU3R5bGUiLHtkYXRhOmV9KX0saW5pdGlhbFZhbHVlOiJsaW5lIn0saGlnaGxpZ2h0QWN0aXZlTGluZTp7c2V0OmZ1bmN0aW9uKCl7dGhpcy4kdXBkYXRlSGlnaGxpZ2h0QWN0aXZlTGluZSgpfSxpbml0aWFsVmFsdWU6ITB9LGhpZ2hsaWdodFNlbGVjdGVkV29yZDp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuJG9uU2VsZWN0aW9uQ2hhbmdlKCl9LGluaXRpYWxWYWx1ZTohMH0scmVhZE9ubHk6e3NldDpmdW5jdGlvbihlKXt0aGlzLnRleHRJbnB1dC5zZXRSZWFkT25seShlKSx0aGlzLiRyZXNldEN1cnNvclN0eWxlKCl9LGluaXRpYWxWYWx1ZTohMX0sY29weVdpdGhFbXB0eVNlbGVjdGlvbjp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMudGV4dElucHV0LnNldENvcHlXaXRoRW1wdHlTZWxlY3Rpb24oZSl9LGluaXRpYWxWYWx1ZTohMX0sY3Vyc29yU3R5bGU6e3NldDpmdW5jdGlvbihlKXt0aGlzLiRyZXNldEN1cnNvclN0eWxlKCl9LHZhbHVlczpbImFjZSIsInNsaW0iLCJzbW9vdGgiLCJ3aWRlIl0saW5pdGlhbFZhbHVlOiJhY2UifSxtZXJnZVVuZG9EZWx0YXM6e3ZhbHVlczpbITEsITAsImFsd2F5cyJdLGluaXRpYWxWYWx1ZTohMH0sYmVoYXZpb3Vyc0VuYWJsZWQ6e2luaXRpYWxWYWx1ZTohMH0sd3JhcEJlaGF2aW91cnNFbmFibGVkOntpbml0aWFsVmFsdWU6ITB9LGF1dG9TY3JvbGxFZGl0b3JJbnRvVmlldzp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuc2V0QXV0b1Njcm9sbEVkaXRvckludG9WaWV3KGUpfX0sa2V5Ym9hcmRIYW5kbGVyOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5zZXRLZXlib2FyZEhhbmRsZXIoZSl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRrZXliaW5kaW5nSWR9LGhhbmRsZXNTZXQ6ITB9LHZhbHVlOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uLnNldFZhbHVlKGUpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfSxoYW5kbGVzU2V0OiEwLGhpZGRlbjohMH0sc2Vzc2lvbjp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuc2V0U2Vzc2lvbihlKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbn0saGFuZGxlc1NldDohMCxoaWRkZW46ITB9LHNob3dMaW5lTnVtYmVyczp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuJGd1dHRlckxheWVyLnNldFNob3dMaW5lTnVtYmVycyhlKSx0aGlzLnJlbmRlcmVyLiRsb29wLnNjaGVkdWxlKHRoaXMucmVuZGVyZXIuQ0hBTkdFX0dVVFRFUiksZSYmdGhpcy4kcmVsYXRpdmVMaW5lTnVtYmVycz9FLmF0dGFjaCh0aGlzKTpFLmRldGFjaCh0aGlzKX0saW5pdGlhbFZhbHVlOiEwfSxyZWxhdGl2ZUxpbmVOdW1iZXJzOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy4kc2hvd0xpbmVOdW1iZXJzJiZlP0UuYXR0YWNoKHRoaXMpOkUuZGV0YWNoKHRoaXMpfX0saFNjcm9sbEJhckFsd2F5c1Zpc2libGU6InJlbmRlcmVyIix2U2Nyb2xsQmFyQWx3YXlzVmlzaWJsZToicmVuZGVyZXIiLGhpZ2hsaWdodEd1dHRlckxpbmU6InJlbmRlcmVyIixhbmltYXRlZFNjcm9sbDoicmVuZGVyZXIiLHNob3dJbnZpc2libGVzOiJyZW5kZXJlciIsc2hvd1ByaW50TWFyZ2luOiJyZW5kZXJlciIscHJpbnRNYXJnaW5Db2x1bW46InJlbmRlcmVyIixwcmludE1hcmdpbjoicmVuZGVyZXIiLGZhZGVGb2xkV2lkZ2V0czoicmVuZGVyZXIiLHNob3dGb2xkV2lkZ2V0czoicmVuZGVyZXIiLGRpc3BsYXlJbmRlbnRHdWlkZXM6InJlbmRlcmVyIixzaG93R3V0dGVyOiJyZW5kZXJlciIsZm9udFNpemU6InJlbmRlcmVyIixmb250RmFtaWx5OiJyZW5kZXJlciIsbWF4TGluZXM6InJlbmRlcmVyIixtaW5MaW5lczoicmVuZGVyZXIiLHNjcm9sbFBhc3RFbmQ6InJlbmRlcmVyIixmaXhlZFdpZHRoR3V0dGVyOiJyZW5kZXJlciIsdGhlbWU6InJlbmRlcmVyIixoYXNDc3NUcmFuc2Zvcm1zOiJyZW5kZXJlciIsbWF4UGl4ZWxIZWlnaHQ6InJlbmRlcmVyIix1c2VUZXh0YXJlYUZvcklNRToicmVuZGVyZXIiLHNjcm9sbFNwZWVkOiIkbW91c2VIYW5kbGVyIixkcmFnRGVsYXk6IiRtb3VzZUhhbmRsZXIiLGRyYWdFbmFibGVkOiIkbW91c2VIYW5kbGVyIixmb2N1c1RpbWVvdXQ6IiRtb3VzZUhhbmRsZXIiLHRvb2x0aXBGb2xsb3dzTW91c2U6IiRtb3VzZUhhbmRsZXIiLGZpcnN0TGluZU51bWJlcjoic2Vzc2lvbiIsb3ZlcndyaXRlOiJzZXNzaW9uIixuZXdMaW5lTW9kZToic2Vzc2lvbiIsdXNlV29ya2VyOiJzZXNzaW9uIix1c2VTb2Z0VGFiczoic2Vzc2lvbiIsbmF2aWdhdGVXaXRoaW5Tb2Z0VGFiczoic2Vzc2lvbiIsdGFiU2l6ZToic2Vzc2lvbiIsd3JhcDoic2Vzc2lvbiIsaW5kZW50ZWRTb2Z0V3JhcDoic2Vzc2lvbiIsZm9sZFN0eWxlOiJzZXNzaW9uIixtb2RlOiJzZXNzaW9uIn0pO3ZhciBFPXtnZXRUZXh0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuKE1hdGguYWJzKGUuc2VsZWN0aW9uLmxlYWQucm93LXQpfHx0KzErKHQ8OT8iXHUwMGI3IjoiIikpKyIifSxnZXRXaWR0aDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIE1hdGgubWF4KHQudG9TdHJpbmcoKS5sZW5ndGgsKG4ubGFzdFJvdysxKS50b1N0cmluZygpLmxlbmd0aCwyKSpuLmNoYXJhY3RlcldpZHRofSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXt0LnJlbmRlcmVyLiRsb29wLnNjaGVkdWxlKHQucmVuZGVyZXIuQ0hBTkdFX0dVVFRFUil9LGF0dGFjaDpmdW5jdGlvbihlKXtlLnJlbmRlcmVyLiRndXR0ZXJMYXllci4kcmVuZGVyZXI9dGhpcyxlLm9uKCJjaGFuZ2VTZWxlY3Rpb24iLHRoaXMudXBkYXRlKSx0aGlzLnVwZGF0ZShudWxsLGUpfSxkZXRhY2g6ZnVuY3Rpb24oZSl7ZS5yZW5kZXJlci4kZ3V0dGVyTGF5ZXIuJHJlbmRlcmVyPT10aGlzJiYoZS5yZW5kZXJlci4kZ3V0dGVyTGF5ZXIuJHJlbmRlcmVyPW51bGwpLGUub2ZmKCJjaGFuZ2VTZWxlY3Rpb24iLHRoaXMudXBkYXRlKSx0aGlzLnVwZGF0ZShudWxsLGUpfX07dC5FZGl0b3I9d30pLGFjZS5kZWZpbmUoImFjZS91bmRvbWFuYWdlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj10O24tLTspe3ZhciByPWVbbl07aWYociYmIXJbMF0uaWdub3JlKXt3aGlsZShuPHQtMSl7dmFyIGk9ZChlW25dLGVbbisxXSk7ZVtuXT1pWzBdLGVbbisxXT1pWzFdLG4rK31yZXR1cm4hMH19fWZ1bmN0aW9uIGEoZSl7dmFyIHQ9ZS5hY3Rpb249PSJpbnNlcnQiLG49ZS5zdGFydCxyPWUuZW5kLGk9KHIucm93LW4ucm93KSoodD8xOi0xKSxzPShyLmNvbHVtbi1uLmNvbHVtbikqKHQ/MTotMSk7dCYmKHI9bik7Zm9yKHZhciBvIGluIHRoaXMubWFya3Mpe3ZhciBhPXRoaXMubWFya3Nbb10sZj11KGEsbik7aWYoZjwwKWNvbnRpbnVlO2lmKGY9PT0wJiZ0KXtpZihhLmJpYXMhPTEpe2EuYmlhcz09LTE7Y29udGludWV9Zj0xfXZhciBsPXQ/Zjp1KGEscik7aWYobD4wKXthLnJvdys9aSxhLmNvbHVtbis9YS5yb3c9PXIucm93P3M6MDtjb250aW51ZX0hdCYmbDw9MCYmKGEucm93PW4ucm93LGEuY29sdW1uPW4uY29sdW1uLGw9PT0wJiYoYS5iaWFzPTEpKX19ZnVuY3Rpb24gZihlKXtyZXR1cm57cm93OmUucm93LGNvbHVtbjplLmNvbHVtbn19ZnVuY3Rpb24gbChlKXtyZXR1cm57c3RhcnQ6ZihlLnN0YXJ0KSxlbmQ6ZihlLmVuZCksYWN0aW9uOmUuYWN0aW9uLGxpbmVzOmUubGluZXMuc2xpY2UoKX19ZnVuY3Rpb24gYyhlKXtlPWV8fHRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5tYXAoYykuam9pbigiXG4iKTt2YXIgdD0iIjtlLmFjdGlvbj8odD1lLmFjdGlvbj09Imluc2VydCI/IisiOiItIix0Kz0iWyIrZS5saW5lcysiXSIpOmUudmFsdWUmJihBcnJheS5pc0FycmF5KGUudmFsdWUpP3Q9ZS52YWx1ZS5tYXAoaCkuam9pbigiXG4iKTp0PWgoZS52YWx1ZSkpLGUuc3RhcnQmJih0Kz1oKGUpKTtpZihlLmlkfHxlLnJldil0Kz0iCSgiKyhlLmlkfHxlLnJldikrIikiO3JldHVybiB0fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGUuc3RhcnQucm93KyI6IitlLnN0YXJ0LmNvbHVtbisiPT4iK2UuZW5kLnJvdysiOiIrZS5lbmQuY29sdW1ufWZ1bmN0aW9uIHAoZSx0KXt2YXIgbj1lLmFjdGlvbj09Imluc2VydCIscj10LmFjdGlvbj09Imluc2VydCI7aWYobiYmcilpZihvKHQuc3RhcnQsZS5lbmQpPj0wKW0odCxlLC0xKTtlbHNle2lmKCEobyh0LnN0YXJ0LGUuc3RhcnQpPD0wKSlyZXR1cm4gbnVsbDttKGUsdCwxKX1lbHNlIGlmKG4mJiFyKWlmKG8odC5zdGFydCxlLmVuZCk+PTApbSh0LGUsLTEpO2Vsc2V7aWYoIShvKHQuZW5kLGUuc3RhcnQpPD0wKSlyZXR1cm4gbnVsbDttKGUsdCwtMSl9ZWxzZSBpZighbiYmcilpZihvKHQuc3RhcnQsZS5zdGFydCk+PTApbSh0LGUsMSk7ZWxzZXtpZighKG8odC5zdGFydCxlLnN0YXJ0KTw9MCkpcmV0dXJuIG51bGw7bShlLHQsMSl9ZWxzZSBpZighbiYmIXIpaWYobyh0LnN0YXJ0LGUuc3RhcnQpPj0wKW0odCxlLDEpO2Vsc2V7aWYoIShvKHQuZW5kLGUuc3RhcnQpPD0wKSlyZXR1cm4gbnVsbDttKGUsdCwtMSl9cmV0dXJuW3QsZV19ZnVuY3Rpb24gZChlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aDtuLS07KWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKCFwKGVbbl0sdFtyXSkpe3doaWxlKG48ZS5sZW5ndGgpe3doaWxlKHItLSlwKHRbcl0sZVtuXSk7cj10Lmxlbmd0aCxuKyt9cmV0dXJuW2UsdF19cmV0dXJuIGUuc2VsZWN0aW9uQmVmb3JlPXQuc2VsZWN0aW9uQmVmb3JlPWUuc2VsZWN0aW9uQWZ0ZXI9dC5zZWxlY3Rpb25BZnRlcj1udWxsLFt0LGVdfWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj1lLmFjdGlvbj09Imluc2VydCIscj10LmFjdGlvbj09Imluc2VydCI7aWYobiYmcilvKGUuc3RhcnQsdC5zdGFydCk8MD9tKHQsZSwxKTptKGUsdCwxKTtlbHNlIGlmKG4mJiFyKW8oZS5zdGFydCx0LmVuZCk+PTA/bShlLHQsLTEpOm8oZS5zdGFydCx0LnN0YXJ0KTw9MD9tKHQsZSwxKToobShlLHMuZnJvbVBvaW50cyh0LnN0YXJ0LGUuc3RhcnQpLC0xKSxtKHQsZSwxKSk7ZWxzZSBpZighbiYmcilvKHQuc3RhcnQsZS5lbmQpPj0wP20odCxlLC0xKTpvKHQuc3RhcnQsZS5zdGFydCk8PTA/bShlLHQsMSk6KG0odCxzLmZyb21Qb2ludHMoZS5zdGFydCx0LnN0YXJ0KSwtMSksbShlLHQsMSkpO2Vsc2UgaWYoIW4mJiFyKWlmKG8odC5zdGFydCxlLmVuZCk+PTApbSh0LGUsLTEpO2Vsc2V7aWYoIShvKHQuZW5kLGUuc3RhcnQpPD0wKSl7dmFyIGksdTtyZXR1cm4gbyhlLnN0YXJ0LHQuc3RhcnQpPDAmJihpPWUsZT15KGUsdC5zdGFydCkpLG8oZS5lbmQsdC5lbmQpPjAmJih1PXkoZSx0LmVuZCkpLGcodC5lbmQsZS5zdGFydCxlLmVuZCwtMSksdSYmIWkmJihlLmxpbmVzPXUubGluZXMsZS5zdGFydD11LnN0YXJ0LGUuZW5kPXUuZW5kLHU9ZSksW3QsaSx1XS5maWx0ZXIoQm9vbGVhbil9bShlLHQsLTEpfXJldHVyblt0LGVdfWZ1bmN0aW9uIG0oZSx0LG4pe2coZS5zdGFydCx0LnN0YXJ0LHQuZW5kLG4pLGcoZS5lbmQsdC5zdGFydCx0LmVuZCxuKX1mdW5jdGlvbiBnKGUsdCxuLHIpe2Uucm93PT0ocj09MT90Om4pLnJvdyYmKGUuY29sdW1uKz1yKihuLmNvbHVtbi10LmNvbHVtbikpLGUucm93Kz1yKihuLnJvdy10LnJvdyl9ZnVuY3Rpb24geShlLHQpe3ZhciBuPWUubGluZXMscj1lLmVuZDtlLmVuZD1mKHQpO3ZhciBpPWUuZW5kLnJvdy1lLnN0YXJ0LnJvdyxzPW4uc3BsaWNlKGksbi5sZW5ndGgpLG89aT90LmNvbHVtbjp0LmNvbHVtbi1lLnN0YXJ0LmNvbHVtbjtuLnB1c2goc1swXS5zdWJzdHJpbmcoMCxvKSksc1swXT1zWzBdLnN1YnN0cihvKTt2YXIgdT17c3RhcnQ6Zih0KSxlbmQ6cixsaW5lczpzLGFjdGlvbjplLmFjdGlvbn07cmV0dXJuIHV9ZnVuY3Rpb24gYihlLHQpe3Q9bCh0KTtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOyl7dmFyIHI9ZVtuXTtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIHM9cltpXSxvPXYocyx0KTt0PW9bMF0sby5sZW5ndGghPTImJihvWzJdPyhyLnNwbGljZShpKzEsMSxvWzFdLG9bMl0pLGkrKyk6b1sxXXx8KHIuc3BsaWNlKGksMSksaS0tKSl9ci5sZW5ndGh8fGUuc3BsaWNlKG4sMSl9cmV0dXJuIGV9ZnVuY3Rpb24gdyhlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKWIoZSxyW2ldKX19dmFyIHI9ZnVuY3Rpb24oKXt0aGlzLiRtYXhSZXY9MCx0aGlzLiRmcm9tVW5kbz0hMSx0aGlzLnJlc2V0KCl9OyhmdW5jdGlvbigpe3RoaXMuYWRkU2Vzc2lvbj1mdW5jdGlvbihlKXt0aGlzLiRzZXNzaW9uPWV9LHRoaXMuYWRkPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLiRmcm9tVW5kbylyZXR1cm47aWYoZT09dGhpcy4kbGFzdERlbHRhKXJldHVybjtpZih0PT09ITF8fCF0aGlzLmxhc3REZWx0YXMpdGhpcy5sYXN0RGVsdGFzPVtdLHRoaXMuJHVuZG9TdGFjay5wdXNoKHRoaXMubGFzdERlbHRhcyksZS5pZD10aGlzLiRyZXY9Kyt0aGlzLiRtYXhSZXY7aWYoZS5hY3Rpb249PSJyZW1vdmUifHxlLmFjdGlvbj09Imluc2VydCIpdGhpcy4kbGFzdERlbHRhPWU7dGhpcy5sYXN0RGVsdGFzLnB1c2goZSl9LHRoaXMuYWRkU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZWxlY3Rpb25zLnB1c2goe3ZhbHVlOmUscmV2OnR8fHRoaXMuJHJldn0pfSx0aGlzLnN0YXJ0TmV3R3JvdXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0RGVsdGFzPW51bGwsdGhpcy4kcmV2fSx0aGlzLm1hcmtJZ25vcmVkPWZ1bmN0aW9uKGUsdCl7dD09bnVsbCYmKHQ9dGhpcy4kcmV2KzEpO3ZhciBuPXRoaXMuJHVuZG9TdGFjaztmb3IodmFyIHI9bi5sZW5ndGg7ci0tOyl7dmFyIGk9bltyXVswXTtpZihpLmlkPD1lKWJyZWFrO2kuaWQ8dCYmKGkuaWdub3JlPSEwKX10aGlzLmxhc3REZWx0YXM9bnVsbH0sdGhpcy5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNlbGVjdGlvbnM7Zm9yKHZhciByPW4ubGVuZ3RoO3ItLTspe3ZhciBpPW5bcl07aWYoaS5yZXY8ZSlyZXR1cm4gdCYmKGk9bltyKzFdKSxpfX0sdGhpcy5nZXRSZXZpc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRyZXZ9LHRoaXMuZ2V0RGVsdGFzPWZ1bmN0aW9uKGUsdCl7dD09bnVsbCYmKHQ9dGhpcy4kcmV2KzEpO3ZhciBuPXRoaXMuJHVuZG9TdGFjayxyPW51bGwsaT0wO2Zvcih2YXIgcz1uLmxlbmd0aDtzLS07KXt2YXIgbz1uW3NdWzBdO28uaWQ8dCYmIXImJihyPXMrMSk7aWYoby5pZDw9ZSl7aT1zKzE7YnJlYWt9fXJldHVybiBuLnNsaWNlKGkscil9LHRoaXMuZ2V0Q2hhbmdlZFJhbmdlcz1mdW5jdGlvbihlLHQpe3Q9PW51bGwmJih0PXRoaXMuJHJldisxKX0sdGhpcy5nZXRDaGFuZ2VkTGluZXM9ZnVuY3Rpb24oZSx0KXt0PT1udWxsJiYodD10aGlzLiRyZXYrMSl9LHRoaXMudW5kbz1mdW5jdGlvbihlLHQpe3RoaXMubGFzdERlbHRhcz1udWxsO3ZhciBuPXRoaXMuJHVuZG9TdGFjaztpZighaShuLG4ubGVuZ3RoKSlyZXR1cm47ZXx8KGU9dGhpcy4kc2Vzc2lvbiksdGhpcy4kcmVkb1N0YWNrQmFzZVJldiE9PXRoaXMuJHJldiYmdGhpcy4kcmVkb1N0YWNrLmxlbmd0aCYmKHRoaXMuJHJlZG9TdGFjaz1bXSksdGhpcy4kZnJvbVVuZG89ITA7dmFyIHI9bi5wb3AoKSxzPW51bGw7cmV0dXJuIHImJnIubGVuZ3RoJiYocz1lLnVuZG9DaGFuZ2VzKHIsdCksdGhpcy4kcmVkb1N0YWNrLnB1c2gociksdGhpcy4kc3luY1JldigpKSx0aGlzLiRmcm9tVW5kbz0hMSxzfSx0aGlzLnJlZG89ZnVuY3Rpb24oZSx0KXt0aGlzLmxhc3REZWx0YXM9bnVsbCxlfHwoZT10aGlzLiRzZXNzaW9uKSx0aGlzLiRmcm9tVW5kbz0hMDtpZih0aGlzLiRyZWRvU3RhY2tCYXNlUmV2IT10aGlzLiRyZXYpe3ZhciBuPXRoaXMuZ2V0RGVsdGFzKHRoaXMuJHJlZG9TdGFja0Jhc2VSZXYsdGhpcy4kcmV2KzEpO3codGhpcy4kcmVkb1N0YWNrLG4pLHRoaXMuJHJlZG9TdGFja0Jhc2VSZXY9dGhpcy4kcmV2LHRoaXMuJHJlZG9TdGFjay5mb3JFYWNoKGZ1bmN0aW9uKGUpe2VbMF0uaWQ9Kyt0aGlzLiRtYXhSZXZ9LHRoaXMpfXZhciByPXRoaXMuJHJlZG9TdGFjay5wb3AoKSxpPW51bGw7cmV0dXJuIHImJihpPWUucmVkb0NoYW5nZXMocix0KSx0aGlzLiR1bmRvU3RhY2sucHVzaChyKSx0aGlzLiRzeW5jUmV2KCkpLHRoaXMuJGZyb21VbmRvPSExLGl9LHRoaXMuJHN5bmNSZXY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiR1bmRvU3RhY2ssdD1lW2UubGVuZ3RoLTFdLG49dCYmdFswXS5pZHx8MDt0aGlzLiRyZWRvU3RhY2tCYXNlUmV2PW4sdGhpcy4kcmV2PW59LHRoaXMucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmxhc3REZWx0YXM9bnVsbCx0aGlzLiRsYXN0RGVsdGE9bnVsbCx0aGlzLiR1bmRvU3RhY2s9W10sdGhpcy4kcmVkb1N0YWNrPVtdLHRoaXMuJHJldj0wLHRoaXMubWFyaz0wLHRoaXMuJHJlZG9TdGFja0Jhc2VSZXY9dGhpcy4kcmV2LHRoaXMuc2VsZWN0aW9ucz1bXX0sdGhpcy5jYW5VbmRvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHVuZG9TdGFjay5sZW5ndGg+MH0sdGhpcy5jYW5SZWRvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJlZG9TdGFjay5sZW5ndGg+MH0sdGhpcy5ib29rbWFyaz1mdW5jdGlvbihlKXtlPT11bmRlZmluZWQmJihlPXRoaXMuJHJldiksdGhpcy5tYXJrPWV9LHRoaXMuaXNBdEJvb2ttYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJldj09PXRoaXMubWFya30sdGhpcy50b0pTT049ZnVuY3Rpb24oKXt9LHRoaXMuZnJvbUpTT049ZnVuY3Rpb24oKXt9LHRoaXMuaGFzVW5kbz10aGlzLmNhblVuZG8sdGhpcy5oYXNSZWRvPXRoaXMuY2FuUmVkbyx0aGlzLmlzQ2xlYW49dGhpcy5pc0F0Qm9va21hcmssdGhpcy5tYXJrQ2xlYW49dGhpcy5ib29rbWFyayx0aGlzLiRwcmV0dHlQcmludD1mdW5jdGlvbihlKXtyZXR1cm4gZT9jKGUpOmModGhpcy4kdW5kb1N0YWNrKSsiXG4tLS1cbiIrYyh0aGlzLiRyZWRvU3RhY2spfX0pLmNhbGwoci5wcm90b3R5cGUpO3ZhciBzPWUoIi4vcmFuZ2UiKS5SYW5nZSxvPXMuY29tcGFyZVBvaW50cyx1PXMuY29tcGFyZVBvaW50czt0LlVuZG9NYW5hZ2VyPXJ9KSxhY2UuZGVmaW5lKCJhY2UvbGF5ZXIvbGluZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpLGk9ZnVuY3Rpb24oZSx0KXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLmNhbnZhc0hlaWdodD10fHw1ZTUsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD10aGlzLmNhbnZhc0hlaWdodCoyKyJweCIsdGhpcy5jZWxscz1bXSx0aGlzLmNlbGxDYWNoZT1bXSx0aGlzLiRvZmZzZXRDb2VmZmljaWVudD0wfTsoZnVuY3Rpb24oKXt0aGlzLm1vdmVDb250YWluZXI9ZnVuY3Rpb24oZSl7ci50cmFuc2xhdGUodGhpcy5lbGVtZW50LDAsLShlLmZpcnN0Um93U2NyZWVuKmUubGluZUhlaWdodCV0aGlzLmNhbnZhc0hlaWdodCktZS5vZmZzZXQqdGhpcy4kb2Zmc2V0Q29lZmZpY2llbnQpfSx0aGlzLnBhZ2VDaGFuZ2VkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguZmxvb3IoZS5maXJzdFJvd1NjcmVlbiplLmxpbmVIZWlnaHQvdGhpcy5jYW52YXNIZWlnaHQpIT09TWF0aC5mbG9vcih0LmZpcnN0Um93U2NyZWVuKnQubGluZUhlaWdodC90aGlzLmNhbnZhc0hlaWdodCl9LHRoaXMuY29tcHV0ZUxpbmVUb3A9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuZmlyc3RSb3dTY3JlZW4qdC5saW5lSGVpZ2h0LGk9TWF0aC5mbG9vcihyL3RoaXMuY2FudmFzSGVpZ2h0KSxzPW4uZG9jdW1lbnRUb1NjcmVlblJvdyhlLDApKnQubGluZUhlaWdodDtyZXR1cm4gcy1pKnRoaXMuY2FudmFzSGVpZ2h0fSx0aGlzLmNvbXB1dGVMaW5lSGVpZ2h0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdC5saW5lSGVpZ2h0Km4uZ2V0Um93TGVuZ3RoKGUpfSx0aGlzLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNlbGxzLmxlbmd0aH0sdGhpcy5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2VsbHNbZV19LHRoaXMuc2hpZnQ9ZnVuY3Rpb24oKXt0aGlzLiRjYWNoZUNlbGwodGhpcy5jZWxscy5zaGlmdCgpKX0sdGhpcy5wb3A9ZnVuY3Rpb24oKXt0aGlzLiRjYWNoZUNlbGwodGhpcy5jZWxscy5wb3AoKSl9LHRoaXMucHVzaD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXt0aGlzLmNlbGxzLnB1c2guYXBwbHkodGhpcy5jZWxscyxlKTt2YXIgdD1yLmNyZWF0ZUZyYWdtZW50KHRoaXMuZWxlbWVudCk7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdC5hcHBlbmRDaGlsZChlW25dLmVsZW1lbnQpO3RoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0KX1lbHNlIHRoaXMuY2VsbHMucHVzaChlKSx0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZS5lbGVtZW50KX0sdGhpcy51bnNoaWZ0PWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe3RoaXMuY2VsbHMudW5zaGlmdC5hcHBseSh0aGlzLmNlbGxzLGUpO3ZhciB0PXIuY3JlYXRlRnJhZ21lbnQodGhpcy5lbGVtZW50KTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0LmFwcGVuZENoaWxkKGVbbl0uZWxlbWVudCk7dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQ/dGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTp0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9ZWxzZSB0aGlzLmNlbGxzLnVuc2hpZnQoZSksdGhpcy5lbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudCgiYWZ0ZXJiZWdpbiIsZS5lbGVtZW50KX0sdGhpcy5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2VsbHMubGVuZ3RoP3RoaXMuY2VsbHNbdGhpcy5jZWxscy5sZW5ndGgtMV06bnVsbH0sdGhpcy4kY2FjaGVDZWxsPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybjtlLmVsZW1lbnQucmVtb3ZlKCksdGhpcy5jZWxsQ2FjaGUucHVzaChlKX0sdGhpcy5jcmVhdGVDZWxsPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzPXRoaXMuY2VsbENhY2hlLnBvcCgpO2lmKCFzKXt2YXIgbz1yLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kmJmkobyksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG8pLHM9e2VsZW1lbnQ6byx0ZXh0OiIiLHJvdzplfX1yZXR1cm4gcy5yb3c9ZSxzfX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTGluZXM9aX0pLGFjZS5kZWZpbmUoImFjZS9sYXllci9ndXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL2xheWVyL2xpbmVzIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBmKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtlLmFwcGVuZENoaWxkKHQpO3ZhciBuPXIuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBlLmFwcGVuZENoaWxkKG4pLGV9dmFyIHI9ZSgiLi4vbGliL2RvbSIpLGk9ZSgiLi4vbGliL29vcCIpLHM9ZSgiLi4vbGliL2xhbmciKSxvPWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHU9ZSgiLi9saW5lcyIpLkxpbmVzLGE9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50PXIuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lbGVtZW50LmNsYXNzTmFtZT0iYWNlX2xheWVyIGFjZV9ndXR0ZXItbGF5ZXIiLGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLnNldFNob3dGb2xkV2lkZ2V0cyh0aGlzLiRzaG93Rm9sZFdpZGdldHMpLHRoaXMuZ3V0dGVyV2lkdGg9MCx0aGlzLiRhbm5vdGF0aW9ucz1bXSx0aGlzLiR1cGRhdGVBbm5vdGF0aW9ucz10aGlzLiR1cGRhdGVBbm5vdGF0aW9ucy5iaW5kKHRoaXMpLHRoaXMuJGxpbmVzPW5ldyB1KHRoaXMuZWxlbWVudCksdGhpcy4kbGluZXMuJG9mZnNldENvZWZmaWNpZW50PTF9OyhmdW5jdGlvbigpe2kuaW1wbGVtZW50KHRoaXMsbyksdGhpcy5zZXRTZXNzaW9uPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbiYmdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kdXBkYXRlQW5ub3RhdGlvbnMpLHRoaXMuc2Vzc2lvbj1lLGUmJmUub24oImNoYW5nZSIsdGhpcy4kdXBkYXRlQW5ub3RhdGlvbnMpfSx0aGlzLmFkZEd1dHRlckRlY29yYXRpb249ZnVuY3Rpb24oZSx0KXt3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oImRlcHJlY2F0ZWQgdXNlIHNlc3Npb24uYWRkR3V0dGVyRGVjb3JhdGlvbiIpLHRoaXMuc2Vzc2lvbi5hZGRHdXR0ZXJEZWNvcmF0aW9uKGUsdCl9LHRoaXMucmVtb3ZlR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihlLHQpe3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiZGVwcmVjYXRlZCB1c2Ugc2Vzc2lvbi5yZW1vdmVHdXR0ZXJEZWNvcmF0aW9uIiksdGhpcy5zZXNzaW9uLnJlbW92ZUd1dHRlckRlY29yYXRpb24oZSx0KX0sdGhpcy5zZXRBbm5vdGF0aW9ucz1mdW5jdGlvbihlKXt0aGlzLiRhbm5vdGF0aW9ucz1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XSxyPW4ucm93LGk9dGhpcy4kYW5ub3RhdGlvbnNbcl07aXx8KGk9dGhpcy4kYW5ub3RhdGlvbnNbcl09e3RleHQ6W119KTt2YXIgbz1uLnRleHQ7bz1vP3MuZXNjYXBlSFRNTChvKTpuLmh0bWx8fCIiLGkudGV4dC5pbmRleE9mKG8pPT09LTEmJmkudGV4dC5wdXNoKG8pO3ZhciB1PW4udHlwZTt1PT0iZXJyb3IiP2kuY2xhc3NOYW1lPSIgYWNlX2Vycm9yIjp1PT0id2FybmluZyImJmkuY2xhc3NOYW1lIT0iIGFjZV9lcnJvciI/aS5jbGFzc05hbWU9IiBhY2Vfd2FybmluZyI6dT09ImluZm8iJiYhaS5jbGFzc05hbWUmJihpLmNsYXNzTmFtZT0iIGFjZV9pbmZvIil9fSx0aGlzLiR1cGRhdGVBbm5vdGF0aW9ucz1mdW5jdGlvbihlKXtpZighdGhpcy4kYW5ub3RhdGlvbnMubGVuZ3RoKXJldHVybjt2YXIgdD1lLnN0YXJ0LnJvdyxuPWUuZW5kLnJvdy10O2lmKG4hPT0wKWlmKGUuYWN0aW9uPT0icmVtb3ZlIil0aGlzLiRhbm5vdGF0aW9ucy5zcGxpY2UodCxuKzEsbnVsbCk7ZWxzZXt2YXIgcj1uZXcgQXJyYXkobisxKTtyLnVuc2hpZnQodCwxKSx0aGlzLiRhbm5vdGF0aW9ucy5zcGxpY2UuYXBwbHkodGhpcy4kYW5ub3RhdGlvbnMscil9fSx0aGlzLnVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLmNvbmZpZz1lO3ZhciB0PXRoaXMuc2Vzc2lvbixuPWUuZmlyc3RSb3cscj1NYXRoLm1pbihlLmxhc3RSb3crZS5ndXR0ZXJPZmZzZXQsdC5nZXRMZW5ndGgoKS0xKTt0aGlzLm9sZExhc3RSb3c9cix0aGlzLmNvbmZpZz1lLHRoaXMuJGxpbmVzLm1vdmVDb250YWluZXIoZSksdGhpcy4kdXBkYXRlQ3Vyc29yUm93KCk7dmFyIGk9dC5nZXROZXh0Rm9sZExpbmUobikscz1pP2kuc3RhcnQucm93OkluZmluaXR5LG89bnVsbCx1PS0xLGE9bjtmb3IoOzspe2E+cyYmKGE9aS5lbmQucm93KzEsaT10LmdldE5leHRGb2xkTGluZShhLGkpLHM9aT9pLnN0YXJ0LnJvdzpJbmZpbml0eSk7aWYoYT5yKXt3aGlsZSh0aGlzLiRsaW5lcy5nZXRMZW5ndGgoKT51KzEpdGhpcy4kbGluZXMucG9wKCk7YnJlYWt9bz10aGlzLiRsaW5lcy5nZXQoKyt1KSxvP28ucm93PWE6KG89dGhpcy4kbGluZXMuY3JlYXRlQ2VsbChhLGUsdGhpcy5zZXNzaW9uLGYpLHRoaXMuJGxpbmVzLnB1c2gobykpLHRoaXMuJHJlbmRlckNlbGwobyxlLGksYSksYSsrfXRoaXMuX3NpZ25hbCgiYWZ0ZXJSZW5kZXIiKSx0aGlzLiR1cGRhdGVHdXR0ZXJXaWR0aChlKX0sdGhpcy4kdXBkYXRlR3V0dGVyV2lkdGg9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZXNzaW9uLG49dC5ndXR0ZXJSZW5kZXJlcnx8dGhpcy4kcmVuZGVyZXIscj10LiRmaXJzdExpbmVOdW1iZXIsaT10aGlzLiRsaW5lcy5sYXN0KCk/dGhpcy4kbGluZXMubGFzdCgpLnRleHQ6IiI7aWYodGhpcy4kZml4ZWRXaWR0aHx8dC4kdXNlV3JhcE1vZGUpaT10LmdldExlbmd0aCgpK3ItMTt2YXIgcz1uP24uZ2V0V2lkdGgodCxpLGUpOmkudG9TdHJpbmcoKS5sZW5ndGgqZS5jaGFyYWN0ZXJXaWR0aCxvPXRoaXMuJHBhZGRpbmd8fHRoaXMuJGNvbXB1dGVQYWRkaW5nKCk7cys9by5sZWZ0K28ucmlnaHQscyE9PXRoaXMuZ3V0dGVyV2lkdGgmJiFpc05hTihzKSYmKHRoaXMuZ3V0dGVyV2lkdGg9cyx0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5zdHlsZS53aWR0aD10aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9TWF0aC5jZWlsKHRoaXMuZ3V0dGVyV2lkdGgpKyJweCIsdGhpcy5fc2lnbmFsKCJjaGFuZ2VHdXR0ZXJXaWR0aCIscykpfSx0aGlzLiR1cGRhdGVDdXJzb3JSb3c9ZnVuY3Rpb24oKXtpZighdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZSlyZXR1cm47dmFyIGU9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbi5nZXRDdXJzb3IoKTtpZih0aGlzLiRjdXJzb3JSb3c9PT1lLnJvdylyZXR1cm47dGhpcy4kY3Vyc29yUm93PWUucm93fSx0aGlzLnVwZGF0ZUxpbmVIaWdobGlnaHQ9ZnVuY3Rpb24oKXtpZighdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZSlyZXR1cm47dmFyIGU9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbi5jdXJzb3Iucm93O3RoaXMuJGN1cnNvclJvdz1lO2lmKHRoaXMuJGN1cnNvckNlbGwmJnRoaXMuJGN1cnNvckNlbGwucm93PT1lKXJldHVybjt0aGlzLiRjdXJzb3JDZWxsJiYodGhpcy4kY3Vyc29yQ2VsbC5lbGVtZW50LmNsYXNzTmFtZT10aGlzLiRjdXJzb3JDZWxsLmVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UoImFjZV9ndXR0ZXItYWN0aXZlLWxpbmUgIiwiIikpO3ZhciB0PXRoaXMuJGxpbmVzLmNlbGxzO3RoaXMuJGN1cnNvckNlbGw9bnVsbDtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtpZihyLnJvdz49dGhpcy4kY3Vyc29yUm93KXtpZihyLnJvdz50aGlzLiRjdXJzb3JSb3cpe3ZhciBpPXRoaXMuc2Vzc2lvbi5nZXRGb2xkTGluZSh0aGlzLiRjdXJzb3JSb3cpO2lmKCEobj4wJiZpJiZpLnN0YXJ0LnJvdz09dFtuLTFdLnJvdykpYnJlYWs7cj10W24tMV19ci5lbGVtZW50LmNsYXNzTmFtZT0iYWNlX2d1dHRlci1hY3RpdmUtbGluZSAiK3IuZWxlbWVudC5jbGFzc05hbWUsdGhpcy4kY3Vyc29yQ2VsbD1yO2JyZWFrfX19LHRoaXMuc2Nyb2xsTGluZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb25maWc7dGhpcy5jb25maWc9ZSx0aGlzLiR1cGRhdGVDdXJzb3JSb3coKTtpZih0aGlzLiRsaW5lcy5wYWdlQ2hhbmdlZCh0LGUpKXJldHVybiB0aGlzLnVwZGF0ZShlKTt0aGlzLiRsaW5lcy5tb3ZlQ29udGFpbmVyKGUpO3ZhciBuPU1hdGgubWluKGUubGFzdFJvdytlLmd1dHRlck9mZnNldCx0aGlzLnNlc3Npb24uZ2V0TGVuZ3RoKCktMSkscj10aGlzLm9sZExhc3RSb3c7dGhpcy5vbGRMYXN0Um93PW47aWYoIXR8fHI8ZS5maXJzdFJvdylyZXR1cm4gdGhpcy51cGRhdGUoZSk7aWYobjx0LmZpcnN0Um93KXJldHVybiB0aGlzLnVwZGF0ZShlKTtpZih0LmZpcnN0Um93PGUuZmlyc3RSb3cpZm9yKHZhciBpPXRoaXMuc2Vzc2lvbi5nZXRGb2xkZWRSb3dDb3VudCh0LmZpcnN0Um93LGUuZmlyc3RSb3ctMSk7aT4wO2ktLSl0aGlzLiRsaW5lcy5zaGlmdCgpO2lmKHI+bilmb3IodmFyIGk9dGhpcy5zZXNzaW9uLmdldEZvbGRlZFJvd0NvdW50KG4rMSxyKTtpPjA7aS0tKXRoaXMuJGxpbmVzLnBvcCgpO2UuZmlyc3RSb3c8dC5maXJzdFJvdyYmdGhpcy4kbGluZXMudW5zaGlmdCh0aGlzLiRyZW5kZXJMaW5lcyhlLGUuZmlyc3RSb3csdC5maXJzdFJvdy0xKSksbj5yJiZ0aGlzLiRsaW5lcy5wdXNoKHRoaXMuJHJlbmRlckxpbmVzKGUscisxLG4pKSx0aGlzLnVwZGF0ZUxpbmVIaWdobGlnaHQoKSx0aGlzLl9zaWduYWwoImFmdGVyUmVuZGVyIiksdGhpcy4kdXBkYXRlR3V0dGVyV2lkdGgoZSl9LHRoaXMuJHJlbmRlckxpbmVzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1bXSxpPXQscz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGkpLG89cz9zLnN0YXJ0LnJvdzpJbmZpbml0eTtmb3IoOzspe2k+byYmKGk9cy5lbmQucm93KzEscz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGkscyksbz1zP3Muc3RhcnQucm93OkluZmluaXR5KTtpZihpPm4pYnJlYWs7dmFyIHU9dGhpcy4kbGluZXMuY3JlYXRlQ2VsbChpLGUsdGhpcy5zZXNzaW9uLGYpO3RoaXMuJHJlbmRlckNlbGwodSxlLHMsaSksci5wdXNoKHUpLGkrK31yZXR1cm4gcn0sdGhpcy4kcmVuZGVyQ2VsbD1mdW5jdGlvbihlLHQsbixpKXt2YXIgcz1lLmVsZW1lbnQsbz10aGlzLnNlc3Npb24sdT1zLmNoaWxkTm9kZXNbMF0sYT1zLmNoaWxkTm9kZXNbMV0sZj1vLiRmaXJzdExpbmVOdW1iZXIsbD1vLiRicmVha3BvaW50cyxjPW8uJGRlY29yYXRpb25zLGg9by5ndXR0ZXJSZW5kZXJlcnx8dGhpcy4kcmVuZGVyZXIscD10aGlzLiRzaG93Rm9sZFdpZGdldHMmJm8uZm9sZFdpZGdldHMsZD1uP24uc3RhcnQucm93Ok51bWJlci5NQVhfVkFMVUUsdj0iYWNlX2d1dHRlci1jZWxsICI7dGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZSYmKGk9PXRoaXMuJGN1cnNvclJvd3x8biYmaTx0aGlzLiRjdXJzb3JSb3cmJmk+PWQmJnRoaXMuJGN1cnNvclJvdzw9bi5lbmQucm93KSYmKHYrPSJhY2VfZ3V0dGVyLWFjdGl2ZS1saW5lICIsdGhpcy4kY3Vyc29yQ2VsbCE9ZSYmKHRoaXMuJGN1cnNvckNlbGwmJih0aGlzLiRjdXJzb3JDZWxsLmVsZW1lbnQuY2xhc3NOYW1lPXRoaXMuJGN1cnNvckNlbGwuZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZSgiYWNlX2d1dHRlci1hY3RpdmUtbGluZSAiLCIiKSksdGhpcy4kY3Vyc29yQ2VsbD1lKSksbFtpXSYmKHYrPWxbaV0pLGNbaV0mJih2Kz1jW2ldKSx0aGlzLiRhbm5vdGF0aW9uc1tpXSYmKHYrPXRoaXMuJGFubm90YXRpb25zW2ldLmNsYXNzTmFtZSkscy5jbGFzc05hbWUhPXYmJihzLmNsYXNzTmFtZT12KTtpZihwKXt2YXIgbT1wW2ldO209PW51bGwmJihtPXBbaV09by5nZXRGb2xkV2lkZ2V0KGkpKX1pZihtKXt2YXIgdj0iYWNlX2ZvbGQtd2lkZ2V0IGFjZV8iK207bT09InN0YXJ0IiYmaT09ZCYmaTxuLmVuZC5yb3c/dis9IiBhY2VfY2xvc2VkIjp2Kz0iIGFjZV9vcGVuIixhLmNsYXNzTmFtZSE9diYmKGEuY2xhc3NOYW1lPXYpO3ZhciBnPXQubGluZUhlaWdodCsicHgiO3Iuc2V0U3R5bGUoYS5zdHlsZSwiaGVpZ2h0IixnKSxyLnNldFN0eWxlKGEuc3R5bGUsImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKX1lbHNlIGEmJnIuc2V0U3R5bGUoYS5zdHlsZSwiZGlzcGxheSIsIm5vbmUiKTt2YXIgeT0oaD9oLmdldFRleHQobyxpKTppK2YpLnRvU3RyaW5nKCk7cmV0dXJuIHkhPT11LmRhdGEmJih1LmRhdGE9eSksci5zZXRTdHlsZShlLmVsZW1lbnQuc3R5bGUsImhlaWdodCIsdGhpcy4kbGluZXMuY29tcHV0ZUxpbmVIZWlnaHQoaSx0LG8pKyJweCIpLHIuc2V0U3R5bGUoZS5lbGVtZW50LnN0eWxlLCJ0b3AiLHRoaXMuJGxpbmVzLmNvbXB1dGVMaW5lVG9wKGksdCxvKSsicHgiKSxlLnRleHQ9eSxlfSx0aGlzLiRmaXhlZFdpZHRoPSExLHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmU9ITAsdGhpcy4kcmVuZGVyZXI9IiIsdGhpcy5zZXRIaWdobGlnaHRHdXR0ZXJMaW5lPWZ1bmN0aW9uKGUpe3RoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmU9ZX0sdGhpcy4kc2hvd0xpbmVOdW1iZXJzPSEwLHRoaXMuJHJlbmRlcmVyPSIiLHRoaXMuc2V0U2hvd0xpbmVOdW1iZXJzPWZ1bmN0aW9uKGUpe3RoaXMuJHJlbmRlcmVyPSFlJiZ7Z2V0V2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiIifX19LHRoaXMuZ2V0U2hvd0xpbmVOdW1iZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNob3dMaW5lTnVtYmVyc30sdGhpcy4kc2hvd0ZvbGRXaWRnZXRzPSEwLHRoaXMuc2V0U2hvd0ZvbGRXaWRnZXRzPWZ1bmN0aW9uKGUpe2U/ci5hZGRDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9mb2xkaW5nLWVuYWJsZWQiKTpyLnJlbW92ZUNzc0NsYXNzKHRoaXMuZWxlbWVudCwiYWNlX2ZvbGRpbmctZW5hYmxlZCIpLHRoaXMuJHNob3dGb2xkV2lkZ2V0cz1lLHRoaXMuJHBhZGRpbmc9bnVsbH0sdGhpcy5nZXRTaG93Rm9sZFdpZGdldHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2hvd0ZvbGRXaWRnZXRzfSx0aGlzLiRjb21wdXRlUGFkZGluZz1mdW5jdGlvbigpe2lmKCF0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZClyZXR1cm57bGVmdDowLHJpZ2h0OjB9O3ZhciBlPXIuY29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXMuJHBhZGRpbmc9e30sdGhpcy4kcGFkZGluZy5sZWZ0PShwYXJzZUludChlLmJvcmRlckxlZnRXaWR0aCl8fDApKyhwYXJzZUludChlLnBhZGRpbmdMZWZ0KXx8MCkrMSx0aGlzLiRwYWRkaW5nLnJpZ2h0PShwYXJzZUludChlLmJvcmRlclJpZ2h0V2lkdGgpfHwwKSsocGFyc2VJbnQoZS5wYWRkaW5nUmlnaHQpfHwwKSx0aGlzLiRwYWRkaW5nfSx0aGlzLmdldFJlZ2lvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLiRwYWRkaW5nfHx0aGlzLiRjb21wdXRlUGFkZGluZygpLG49dGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGUueDx0LmxlZnQrbi5sZWZ0KXJldHVybiJtYXJrZXJzIjtpZih0aGlzLiRzaG93Rm9sZFdpZGdldHMmJmUueD5uLnJpZ2h0LXQucmlnaHQpcmV0dXJuImZvbGRXaWRnZXRzIn19KS5jYWxsKGEucHJvdG90eXBlKSx0Lkd1dHRlcj1hfSksYWNlLmRlZmluZSgiYWNlL2xheWVyL21hcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZSgiLi4vbGliL2RvbSIpLHM9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50PWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lbGVtZW50LmNsYXNzTmFtZT0iYWNlX2xheWVyIGFjZV9tYXJrZXItbGF5ZXIiLGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KX07KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyKXtyZXR1cm4oZT8xOjApfCh0PzI6MCl8KG4/NDowKXwocj84OjApfXRoaXMuJHBhZGRpbmc9MCx0aGlzLnNldFBhZGRpbmc9ZnVuY3Rpb24oZSl7dGhpcy4kcGFkZGluZz1lfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uPWV9LHRoaXMuc2V0TWFya2Vycz1mdW5jdGlvbihlKXt0aGlzLm1hcmtlcnM9ZX0sdGhpcy5lbHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmkhPS0xJiZ0aGlzLmVsZW1lbnQuY2hpbGROb2Rlc1t0aGlzLmldO24/dGhpcy5pKys6KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG4pLHRoaXMuaT0tMSksbi5zdHlsZS5jc3NUZXh0PXQsbi5jbGFzc05hbWU9ZX0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuO3RoaXMuY29uZmlnPWUsdGhpcy5pPTA7dmFyIHQ7Zm9yKHZhciBuIGluIHRoaXMubWFya2Vycyl7dmFyIHI9dGhpcy5tYXJrZXJzW25dO2lmKCFyLnJhbmdlKXtyLnVwZGF0ZSh0LHRoaXMsdGhpcy5zZXNzaW9uLGUpO2NvbnRpbnVlfXZhciBpPXIucmFuZ2UuY2xpcFJvd3MoZS5maXJzdFJvdyxlLmxhc3RSb3cpO2lmKGkuaXNFbXB0eSgpKWNvbnRpbnVlO2k9aS50b1NjcmVlblJhbmdlKHRoaXMuc2Vzc2lvbik7aWYoci5yZW5kZXJlcil7dmFyIHM9dGhpcy4kZ2V0VG9wKGkuc3RhcnQucm93LGUpLG89dGhpcy4kcGFkZGluZytpLnN0YXJ0LmNvbHVtbiplLmNoYXJhY3RlcldpZHRoO3IucmVuZGVyZXIodCxpLG8scyxlKX1lbHNlIHIudHlwZT09ImZ1bGxMaW5lIj90aGlzLmRyYXdGdWxsTGluZU1hcmtlcih0LGksci5jbGF6eixlKTpyLnR5cGU9PSJzY3JlZW5MaW5lIj90aGlzLmRyYXdTY3JlZW5MaW5lTWFya2VyKHQsaSxyLmNsYXp6LGUpOmkuaXNNdWx0aUxpbmUoKT9yLnR5cGU9PSJ0ZXh0Ij90aGlzLmRyYXdUZXh0TWFya2VyKHQsaSxyLmNsYXp6LGUpOnRoaXMuZHJhd011bHRpTGluZU1hcmtlcih0LGksci5jbGF6eixlKTp0aGlzLmRyYXdTaW5nbGVMaW5lTWFya2VyKHQsaSxyLmNsYXp6KyIgYWNlX3N0YXJ0IisiIGFjZV9icjE1IixlKX1pZih0aGlzLmkhPS0xKXdoaWxlKHRoaXMuaTx0aGlzLmVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQpdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudC5sYXN0Q2hpbGQpfSx0aGlzLiRnZXRUb3A9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS10LmZpcnN0Um93U2NyZWVuKSp0LmxpbmVIZWlnaHR9LHRoaXMuZHJhd1RleHRNYXJrZXI9ZnVuY3Rpb24odCxuLGkscyxvKXt2YXIgdT10aGlzLnNlc3Npb24sYT1uLnN0YXJ0LnJvdyxmPW4uZW5kLnJvdyxsPWEsYz0wLGg9MCxwPXUuZ2V0U2NyZWVuTGFzdFJvd0NvbHVtbihsKSxkPW5ldyByKGwsbi5zdGFydC5jb2x1bW4sbCxoKTtmb3IoO2w8PWY7bCsrKWQuc3RhcnQucm93PWQuZW5kLnJvdz1sLGQuc3RhcnQuY29sdW1uPWw9PWE/bi5zdGFydC5jb2x1bW46dS5nZXRSb3dXcmFwSW5kZW50KGwpLGQuZW5kLmNvbHVtbj1wLGM9aCxoPXAscD1sKzE8Zj91LmdldFNjcmVlbkxhc3RSb3dDb2x1bW4obCsxKTpsPT1mPzA6bi5lbmQuY29sdW1uLHRoaXMuZHJhd1NpbmdsZUxpbmVNYXJrZXIodCxkLGkrKGw9PWE/IiBhY2Vfc3RhcnQiOiIiKSsiIGFjZV9iciIrZShsPT1hfHxsPT1hKzEmJm4uc3RhcnQuY29sdW1uLGM8aCxoPnAsbD09ZikscyxsPT1mPzA6MSxvKX0sdGhpcy5kcmF3TXVsdGlMaW5lTWFya2VyPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9dGhpcy4kcGFkZGluZyxvPXIubGluZUhlaWdodCx1PXRoaXMuJGdldFRvcCh0LnN0YXJ0LnJvdyxyKSxhPXMrdC5zdGFydC5jb2x1bW4qci5jaGFyYWN0ZXJXaWR0aDtpPWl8fCIiO2lmKHRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuaXNCaWRpUm93KHQuc3RhcnQucm93KSl7dmFyIGY9dC5jbG9uZSgpO2YuZW5kLnJvdz1mLnN0YXJ0LnJvdyxmLmVuZC5jb2x1bW49dGhpcy5zZXNzaW9uLmdldExpbmUoZi5zdGFydC5yb3cpLmxlbmd0aCx0aGlzLmRyYXdCaWRpU2luZ2xlTGluZU1hcmtlcihlLGYsbisiIGFjZV9icjEgYWNlX3N0YXJ0IixyLG51bGwsaSl9ZWxzZSB0aGlzLmVsdChuKyIgYWNlX2JyMSBhY2Vfc3RhcnQiLCJoZWlnaHQ6IitvKyJweDsiKyJyaWdodDowOyIrInRvcDoiK3UrInB4O2xlZnQ6IithKyJweDsiKyhpfHwiIikpO2lmKHRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuaXNCaWRpUm93KHQuZW5kLnJvdykpe3ZhciBmPXQuY2xvbmUoKTtmLnN0YXJ0LnJvdz1mLmVuZC5yb3csZi5zdGFydC5jb2x1bW49MCx0aGlzLmRyYXdCaWRpU2luZ2xlTGluZU1hcmtlcihlLGYsbisiIGFjZV9icjEyIixyLG51bGwsaSl9ZWxzZXt1PXRoaXMuJGdldFRvcCh0LmVuZC5yb3cscik7dmFyIGw9dC5lbmQuY29sdW1uKnIuY2hhcmFjdGVyV2lkdGg7dGhpcy5lbHQobisiIGFjZV9icjEyIiwiaGVpZ2h0OiIrbysicHg7Iisid2lkdGg6IitsKyJweDsiKyJ0b3A6Iit1KyJweDsiKyJsZWZ0OiIrcysicHg7IisoaXx8IiIpKX1vPSh0LmVuZC5yb3ctdC5zdGFydC5yb3ctMSkqci5saW5lSGVpZ2h0O2lmKG88PTApcmV0dXJuO3U9dGhpcy4kZ2V0VG9wKHQuc3RhcnQucm93KzEscik7dmFyIGM9KHQuc3RhcnQuY29sdW1uPzE6MCl8KHQuZW5kLmNvbHVtbj8wOjgpO3RoaXMuZWx0KG4rKGM/IiBhY2VfYnIiK2M6IiIpLCJoZWlnaHQ6IitvKyJweDsiKyJyaWdodDowOyIrInRvcDoiK3UrInB4OyIrImxlZnQ6IitzKyJweDsiKyhpfHwiIikpfSx0aGlzLmRyYXdTaW5nbGVMaW5lTWFya2VyPWZ1bmN0aW9uKGUsdCxuLHIsaSxzKXtpZih0aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyLmlzQmlkaVJvdyh0LnN0YXJ0LnJvdykpcmV0dXJuIHRoaXMuZHJhd0JpZGlTaW5nbGVMaW5lTWFya2VyKGUsdCxuLHIsaSxzKTt2YXIgbz1yLmxpbmVIZWlnaHQsdT0odC5lbmQuY29sdW1uKyhpfHwwKS10LnN0YXJ0LmNvbHVtbikqci5jaGFyYWN0ZXJXaWR0aCxhPXRoaXMuJGdldFRvcCh0LnN0YXJ0LnJvdyxyKSxmPXRoaXMuJHBhZGRpbmcrdC5zdGFydC5jb2x1bW4qci5jaGFyYWN0ZXJXaWR0aDt0aGlzLmVsdChuLCJoZWlnaHQ6IitvKyJweDsiKyJ3aWR0aDoiK3UrInB4OyIrInRvcDoiK2ErInB4OyIrImxlZnQ6IitmKyJweDsiKyhzfHwiIikpfSx0aGlzLmRyYXdCaWRpU2luZ2xlTGluZU1hcmtlcj1mdW5jdGlvbihlLHQsbixyLGkscyl7dmFyIG89ci5saW5lSGVpZ2h0LHU9dGhpcy4kZ2V0VG9wKHQuc3RhcnQucm93LHIpLGE9dGhpcy4kcGFkZGluZyxmPXRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuZ2V0U2VsZWN0aW9ucyh0LnN0YXJ0LmNvbHVtbix0LmVuZC5jb2x1bW4pO2YuZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzLmVsdChuLCJoZWlnaHQ6IitvKyJweDsiKyJ3aWR0aDoiK2Uud2lkdGgrKGl8fDApKyJweDsiKyJ0b3A6Iit1KyJweDsiKyJsZWZ0OiIrKGErZS5sZWZ0KSsicHg7Iisoc3x8IiIpKX0sdGhpcyl9LHRoaXMuZHJhd0Z1bGxMaW5lTWFya2VyPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9dGhpcy4kZ2V0VG9wKHQuc3RhcnQucm93LHIpLG89ci5saW5lSGVpZ2h0O3Quc3RhcnQucm93IT10LmVuZC5yb3cmJihvKz10aGlzLiRnZXRUb3AodC5lbmQucm93LHIpLXMpLHRoaXMuZWx0KG4sImhlaWdodDoiK28rInB4OyIrInRvcDoiK3MrInB4OyIrImxlZnQ6MDtyaWdodDowOyIrKGl8fCIiKSl9LHRoaXMuZHJhd1NjcmVlbkxpbmVNYXJrZXI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz10aGlzLiRnZXRUb3AodC5zdGFydC5yb3csciksbz1yLmxpbmVIZWlnaHQ7dGhpcy5lbHQobiwiaGVpZ2h0OiIrbysicHg7IisidG9wOiIrcysicHg7IisibGVmdDowO3JpZ2h0OjA7IisoaXx8IiIpKX19KS5jYWxsKHMucHJvdG90eXBlKSx0Lk1hcmtlcj1zfSksYWNlLmRlZmluZSgiYWNlL2xheWVyL3RleHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xheWVyL2xpbmVzIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvZG9tIikscz1lKCIuLi9saWIvbGFuZyIpLG89ZSgiLi9saW5lcyIpLkxpbmVzLHU9ZSgiLi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsYT1mdW5jdGlvbihlKXt0aGlzLmRvbT1pLHRoaXMuZWxlbWVudD10aGlzLmRvbS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJhY2VfbGF5ZXIgYWNlX3RleHQtbGF5ZXIiLGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLiR1cGRhdGVFb2xDaGFyPXRoaXMuJHVwZGF0ZUVvbENoYXIuYmluZCh0aGlzKSx0aGlzLiRsaW5lcz1uZXcgbyh0aGlzLmVsZW1lbnQpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLHUpLHRoaXMuRU9GX0NIQVI9Ilx1MDBiNiIsdGhpcy5FT0xfQ0hBUl9MRj0iXHUwMGFjIix0aGlzLkVPTF9DSEFSX0NSTEY9Ilx1MDBhNCIsdGhpcy5FT0xfQ0hBUj10aGlzLkVPTF9DSEFSX0xGLHRoaXMuVEFCX0NIQVI9Ilx1MjAxNCIsdGhpcy5TUEFDRV9DSEFSPSJcdTAwYjciLHRoaXMuJHBhZGRpbmc9MCx0aGlzLk1BWF9MSU5FX0xFTkdUSD0xZTQsdGhpcy4kdXBkYXRlRW9sQ2hhcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbi5kb2MsdD1lLmdldE5ld0xpbmVDaGFyYWN0ZXIoKT09IlxuIiYmZS5nZXROZXdMaW5lTW9kZSgpIT0id2luZG93cyIsbj10P3RoaXMuRU9MX0NIQVJfTEY6dGhpcy5FT0xfQ0hBUl9DUkxGO2lmKHRoaXMuRU9MX0NIQVIhPW4pcmV0dXJuIHRoaXMuRU9MX0NIQVI9biwhMH0sdGhpcy5zZXRQYWRkaW5nPWZ1bmN0aW9uKGUpe3RoaXMuJHBhZGRpbmc9ZSx0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luPSIwICIrZSsicHgifSx0aGlzLmdldExpbmVIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZm9udE1ldHJpY3MuJGNoYXJhY3RlclNpemUuaGVpZ2h0fHwwfSx0aGlzLmdldENoYXJhY3RlcldpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGZvbnRNZXRyaWNzLiRjaGFyYWN0ZXJTaXplLndpZHRofHwwfSx0aGlzLiRzZXRGb250TWV0cmljcz1mdW5jdGlvbihlKXt0aGlzLiRmb250TWV0cmljcz1lLHRoaXMuJGZvbnRNZXRyaWNzLm9uKCJjaGFuZ2VDaGFyYWN0ZXJTaXplIixmdW5jdGlvbihlKXt0aGlzLl9zaWduYWwoImNoYW5nZUNoYXJhY3RlclNpemUiLGUpfS5iaW5kKHRoaXMpKSx0aGlzLiRwb2xsU2l6ZUNoYW5nZXMoKX0sdGhpcy5jaGVja0ZvclNpemVDaGFuZ2VzPWZ1bmN0aW9uKCl7dGhpcy4kZm9udE1ldHJpY3MuY2hlY2tGb3JTaXplQ2hhbmdlcygpfSx0aGlzLiRwb2xsU2l6ZUNoYW5nZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcG9sbFNpemVDaGFuZ2VzVGltZXI9dGhpcy4kZm9udE1ldHJpY3MuJHBvbGxTaXplQ2hhbmdlcygpfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uPWUsZSYmdGhpcy4kY29tcHV0ZVRhYlN0cmluZygpfSx0aGlzLnNob3dJbnZpc2libGVzPSExLHRoaXMuc2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2hvd0ludmlzaWJsZXM9PWU/ITE6KHRoaXMuc2hvd0ludmlzaWJsZXM9ZSx0aGlzLiRjb21wdXRlVGFiU3RyaW5nKCksITApfSx0aGlzLmRpc3BsYXlJbmRlbnRHdWlkZXM9ITAsdGhpcy5zZXREaXNwbGF5SW5kZW50R3VpZGVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpc3BsYXlJbmRlbnRHdWlkZXM9PWU/ITE6KHRoaXMuZGlzcGxheUluZGVudEd1aWRlcz1lLHRoaXMuJGNvbXB1dGVUYWJTdHJpbmcoKSwhMCl9LHRoaXMuJHRhYlN0cmluZ3M9W10sdGhpcy5vbkNoYW5nZVRhYlNpemU9dGhpcy4kY29tcHV0ZVRhYlN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbi5nZXRUYWJTaXplKCk7dGhpcy50YWJTaXplPWU7dmFyIHQ9dGhpcy4kdGFiU3RyaW5ncz1bMF07Zm9yKHZhciBuPTE7bjxlKzE7bisrKWlmKHRoaXMuc2hvd0ludmlzaWJsZXMpe3ZhciByPXRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyLmNsYXNzTmFtZT0iYWNlX2ludmlzaWJsZSBhY2VfaW52aXNpYmxlX3RhYiIsci50ZXh0Q29udGVudD1zLnN0cmluZ1JlcGVhdCh0aGlzLlRBQl9DSEFSLG4pLHQucHVzaChyKX1lbHNlIHQucHVzaCh0aGlzLmRvbS5jcmVhdGVUZXh0Tm9kZShzLnN0cmluZ1JlcGVhdCgiICIsbiksdGhpcy5lbGVtZW50KSk7aWYodGhpcy5kaXNwbGF5SW5kZW50R3VpZGVzKXt0aGlzLiRpbmRlbnRHdWlkZVJlPS9cc1xTfCBcdHxcdCB8XHMkLzt2YXIgaT0iYWNlX2luZGVudC1ndWlkZSIsbz0iIix1PSIiO2lmKHRoaXMuc2hvd0ludmlzaWJsZXMpe2krPSIgYWNlX2ludmlzaWJsZSIsbz0iIGFjZV9pbnZpc2libGVfc3BhY2UiLHU9IiBhY2VfaW52aXNpYmxlX3RhYiI7dmFyIGE9cy5zdHJpbmdSZXBlYXQodGhpcy5TUEFDRV9DSEFSLHRoaXMudGFiU2l6ZSksZj1zLnN0cmluZ1JlcGVhdCh0aGlzLlRBQl9DSEFSLHRoaXMudGFiU2l6ZSl9ZWxzZSB2YXIgYT1zLnN0cmluZ1JlcGVhdCgiICIsdGhpcy50YWJTaXplKSxmPWE7dmFyIHI9dGhpcy5kb20uY3JlYXRlRWxlbWVudCgic3BhbiIpO3IuY2xhc3NOYW1lPWkrbyxyLnRleHRDb250ZW50PWEsdGhpcy4kdGFiU3RyaW5nc1siICJdPXI7dmFyIHI9dGhpcy5kb20uY3JlYXRlRWxlbWVudCgic3BhbiIpO3IuY2xhc3NOYW1lPWkrdSxyLnRleHRDb250ZW50PWYsdGhpcy4kdGFiU3RyaW5nc1siCSJdPXJ9fSx0aGlzLnVwZGF0ZUxpbmVzPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmNvbmZpZy5sYXN0Um93IT1lLmxhc3RSb3d8fHRoaXMuY29uZmlnLmZpcnN0Um93IT1lLmZpcnN0Um93KXJldHVybiB0aGlzLnVwZGF0ZShlKTt0aGlzLmNvbmZpZz1lO3ZhciByPU1hdGgubWF4KHQsZS5maXJzdFJvdyksaT1NYXRoLm1pbihuLGUubGFzdFJvdykscz10aGlzLmVsZW1lbnQuY2hpbGROb2RlcyxvPTA7Zm9yKHZhciB1PWUuZmlyc3RSb3c7dTxyO3UrKyl7dmFyIGE9dGhpcy5zZXNzaW9uLmdldEZvbGRMaW5lKHUpO2lmKGEpe2lmKGEuY29udGFpbnNSb3cocikpe3I9YS5zdGFydC5yb3c7YnJlYWt9dT1hLmVuZC5yb3d9bysrfXZhciBmPSExLHU9cixhPXRoaXMuc2Vzc2lvbi5nZXROZXh0Rm9sZExpbmUodSksbD1hP2Euc3RhcnQucm93OkluZmluaXR5O2Zvcig7Oyl7dT5sJiYodT1hLmVuZC5yb3crMSxhPXRoaXMuc2Vzc2lvbi5nZXROZXh0Rm9sZExpbmUodSxhKSxsPWE/YS5zdGFydC5yb3c6SW5maW5pdHkpO2lmKHU+aSlicmVhazt2YXIgYz1zW28rK107aWYoYyl7dGhpcy5kb20ucmVtb3ZlQ2hpbGRyZW4oYyksdGhpcy4kcmVuZGVyTGluZShjLHUsdT09bD9hOiExKSxmJiYoYy5zdHlsZS50b3A9dGhpcy4kbGluZXMuY29tcHV0ZUxpbmVUb3AodSxlLHRoaXMuc2Vzc2lvbikrInB4Iik7dmFyIGg9ZS5saW5lSGVpZ2h0KnRoaXMuc2Vzc2lvbi5nZXRSb3dMZW5ndGgodSkrInB4IjtjLnN0eWxlLmhlaWdodCE9aCYmKGY9ITAsYy5zdHlsZS5oZWlnaHQ9aCl9dSsrfWlmKGYpd2hpbGUobzx0aGlzLiRsaW5lcy5jZWxscy5sZW5ndGgpe3ZhciBwPXRoaXMuJGxpbmVzLmNlbGxzW28rK107cC5lbGVtZW50LnN0eWxlLnRvcD10aGlzLiRsaW5lcy5jb21wdXRlTGluZVRvcChwLnJvdyxlLHRoaXMuc2Vzc2lvbikrInB4In19LHRoaXMuc2Nyb2xsTGluZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb25maWc7dGhpcy5jb25maWc9ZTtpZih0aGlzLiRsaW5lcy5wYWdlQ2hhbmdlZCh0LGUpKXJldHVybiB0aGlzLnVwZGF0ZShlKTt0aGlzLiRsaW5lcy5tb3ZlQ29udGFpbmVyKGUpO3ZhciBuPWUubGFzdFJvdyxyPXQ/dC5sYXN0Um93Oi0xO2lmKCF0fHxyPGUuZmlyc3RSb3cpcmV0dXJuIHRoaXMudXBkYXRlKGUpO2lmKG48dC5maXJzdFJvdylyZXR1cm4gdGhpcy51cGRhdGUoZSk7aWYoIXR8fHQubGFzdFJvdzxlLmZpcnN0Um93KXJldHVybiB0aGlzLnVwZGF0ZShlKTtpZihlLmxhc3RSb3c8dC5maXJzdFJvdylyZXR1cm4gdGhpcy51cGRhdGUoZSk7aWYodC5maXJzdFJvdzxlLmZpcnN0Um93KWZvcih2YXIgaT10aGlzLnNlc3Npb24uZ2V0Rm9sZGVkUm93Q291bnQodC5maXJzdFJvdyxlLmZpcnN0Um93LTEpO2k+MDtpLS0pdGhpcy4kbGluZXMuc2hpZnQoKTtpZih0Lmxhc3RSb3c+ZS5sYXN0Um93KWZvcih2YXIgaT10aGlzLnNlc3Npb24uZ2V0Rm9sZGVkUm93Q291bnQoZS5sYXN0Um93KzEsdC5sYXN0Um93KTtpPjA7aS0tKXRoaXMuJGxpbmVzLnBvcCgpO2UuZmlyc3RSb3c8dC5maXJzdFJvdyYmdGhpcy4kbGluZXMudW5zaGlmdCh0aGlzLiRyZW5kZXJMaW5lc0ZyYWdtZW50KGUsZS5maXJzdFJvdyx0LmZpcnN0Um93LTEpKSxlLmxhc3RSb3c+dC5sYXN0Um93JiZ0aGlzLiRsaW5lcy5wdXNoKHRoaXMuJHJlbmRlckxpbmVzRnJhZ21lbnQoZSx0Lmxhc3RSb3crMSxlLmxhc3RSb3cpKX0sdGhpcy4kcmVuZGVyTGluZXNGcmFnbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10scz10LG89dGhpcy5zZXNzaW9uLmdldE5leHRGb2xkTGluZShzKSx1PW8/by5zdGFydC5yb3c6SW5maW5pdHk7Zm9yKDs7KXtzPnUmJihzPW8uZW5kLnJvdysxLG89dGhpcy5zZXNzaW9uLmdldE5leHRGb2xkTGluZShzLG8pLHU9bz9vLnN0YXJ0LnJvdzpJbmZpbml0eSk7aWYocz5uKWJyZWFrO3ZhciBhPXRoaXMuJGxpbmVzLmNyZWF0ZUNlbGwocyxlLHRoaXMuc2Vzc2lvbiksZj1hLmVsZW1lbnQ7dGhpcy5kb20ucmVtb3ZlQ2hpbGRyZW4oZiksaS5zZXRTdHlsZShmLnN0eWxlLCJoZWlnaHQiLHRoaXMuJGxpbmVzLmNvbXB1dGVMaW5lSGVpZ2h0KHMsZSx0aGlzLnNlc3Npb24pKyJweCIpLGkuc2V0U3R5bGUoZi5zdHlsZSwidG9wIix0aGlzLiRsaW5lcy5jb21wdXRlTGluZVRvcChzLGUsdGhpcy5zZXNzaW9uKSsicHgiKSx0aGlzLiRyZW5kZXJMaW5lKGYscyxzPT11P286ITEpLHRoaXMuJHVzZUxpbmVHcm91cHMoKT9mLmNsYXNzTmFtZT0iYWNlX2xpbmVfZ3JvdXAiOmYuY2xhc3NOYW1lPSJhY2VfbGluZSIsci5wdXNoKGEpLHMrK31yZXR1cm4gcn0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy4kbGluZXMubW92ZUNvbnRhaW5lcihlKSx0aGlzLmNvbmZpZz1lO3ZhciB0PWUuZmlyc3RSb3csbj1lLmxhc3RSb3cscj10aGlzLiRsaW5lczt3aGlsZShyLmdldExlbmd0aCgpKXIucG9wKCk7ci5wdXNoKHRoaXMuJHJlbmRlckxpbmVzRnJhZ21lbnQoZSx0LG4pKX0sdGhpcy4kdGV4dFRva2VuPXt0ZXh0OiEwLHJwYXJlbjohMCxscGFyZW46ITB9LHRoaXMuJHJlbmRlclRva2VuPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMsbz0vKFx0KXwoICspfChbXHgwMC1ceDFmXHg4MC1ceGEwXHhhZFx1MTY4MFx1MTgwRVx1MjAwMC1cdTIwMGZcdTIwMjhcdTIwMjlcdTIwMkZcdTIwNUZcdUZFRkZcdUZGRjktXHVGRkZDXSspfChcdTMwMDApfChbXHUxMTAwLVx1MTE1Rlx1MTFBMy1cdTExQTdcdTExRkEtXHUxMUZGXHUyMzI5LVx1MjMyQVx1MkU4MC1cdTJFOTlcdTJFOUItXHUyRUYzXHUyRjAwLVx1MkZENVx1MkZGMC1cdTJGRkJcdTMwMDEtXHUzMDNFXHUzMDQxLVx1MzA5Nlx1MzA5OS1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzE5MC1cdTMxQkFcdTMxQzAtXHUzMUUzXHUzMUYwLVx1MzIxRVx1MzIyMC1cdTMyNDdcdTMyNTAtXHUzMkZFXHUzMzAwLVx1NERCRlx1NEUwMC1cdUE0OENcdUE0OTAtXHVBNEM2XHVBOTYwLVx1QTk3Q1x1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBRkZcdUZFMTAtXHVGRTE5XHVGRTMwLVx1RkU1Mlx1RkU1NC1cdUZFNjZcdUZFNjgtXHVGRTZCXHVGRjAxLVx1RkY2MFx1RkZFMC1cdUZGRTZdfFtcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXSkvZyx1PXRoaXMuZG9tLmNyZWF0ZUZyYWdtZW50KHRoaXMuZWxlbWVudCksYSxmPTA7d2hpbGUoYT1vLmV4ZWMocikpe3ZhciBsPWFbMV0sYz1hWzJdLGg9YVszXSxwPWFbNF0sZD1hWzVdO2lmKCFpLnNob3dJbnZpc2libGVzJiZjKWNvbnRpbnVlO3ZhciB2PWYhPWEuaW5kZXg/ci5zbGljZShmLGEuaW5kZXgpOiIiO2Y9YS5pbmRleCthWzBdLmxlbmd0aCx2JiZ1LmFwcGVuZENoaWxkKHRoaXMuZG9tLmNyZWF0ZVRleHROb2RlKHYsdGhpcy5lbGVtZW50KSk7aWYobCl7dmFyIG09aS5zZXNzaW9uLmdldFNjcmVlblRhYlNpemUodCthLmluZGV4KTt1LmFwcGVuZENoaWxkKGkuJHRhYlN0cmluZ3NbbV0uY2xvbmVOb2RlKCEwKSksdCs9bS0xfWVsc2UgaWYoYylpZihpLnNob3dJbnZpc2libGVzKXt2YXIgZz10aGlzLmRvbS5jcmVhdGVFbGVtZW50KCJzcGFuIik7Zy5jbGFzc05hbWU9ImFjZV9pbnZpc2libGUgYWNlX2ludmlzaWJsZV9zcGFjZSIsZy50ZXh0Q29udGVudD1zLnN0cmluZ1JlcGVhdChpLlNQQUNFX0NIQVIsYy5sZW5ndGgpLHUuYXBwZW5kQ2hpbGQoZyl9ZWxzZSB1LmFwcGVuZENoaWxkKHRoaXMuY29tLmNyZWF0ZVRleHROb2RlKGMsdGhpcy5lbGVtZW50KSk7ZWxzZSBpZihoKXt2YXIgZz10aGlzLmRvbS5jcmVhdGVFbGVtZW50KCJzcGFuIik7Zy5jbGFzc05hbWU9ImFjZV9pbnZpc2libGUgYWNlX2ludmlzaWJsZV9zcGFjZSBhY2VfaW52YWxpZCIsZy50ZXh0Q29udGVudD1zLnN0cmluZ1JlcGVhdChpLlNQQUNFX0NIQVIsaC5sZW5ndGgpLHUuYXBwZW5kQ2hpbGQoZyl9ZWxzZSBpZihwKXt0Kz0xO3ZhciBnPXRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtnLnN0eWxlLndpZHRoPWkuY29uZmlnLmNoYXJhY3RlcldpZHRoKjIrInB4IixnLmNsYXNzTmFtZT1pLnNob3dJbnZpc2libGVzPyJhY2VfY2prIGFjZV9pbnZpc2libGUgYWNlX2ludmlzaWJsZV9zcGFjZSI6ImFjZV9jamsiLGcudGV4dENvbnRlbnQ9aS5zaG93SW52aXNpYmxlcz9pLlNQQUNFX0NIQVI6cCx1LmFwcGVuZENoaWxkKGcpfWVsc2UgaWYoZCl7dCs9MTt2YXIgZz10aGlzLmRvbS5jcmVhdGVFbGVtZW50KCJzcGFuIik7Zy5zdHlsZS53aWR0aD1pLmNvbmZpZy5jaGFyYWN0ZXJXaWR0aCoyKyJweCIsZy5jbGFzc05hbWU9ImFjZV9jamsiLGcudGV4dENvbnRlbnQ9ZCx1LmFwcGVuZENoaWxkKGcpfX11LmFwcGVuZENoaWxkKHRoaXMuZG9tLmNyZWF0ZVRleHROb2RlKGY/ci5zbGljZShmKTpyLHRoaXMuZWxlbWVudCkpO2lmKCF0aGlzLiR0ZXh0VG9rZW5bbi50eXBlXSl7dmFyIHk9ImFjZV8iK24udHlwZS5yZXBsYWNlKC9cLi9nLCIgYWNlXyIpLGc9dGhpcy5kb20uY3JlYXRlRWxlbWVudCgic3BhbiIpO24udHlwZT09ImZvbGQiJiYoZy5zdHlsZS53aWR0aD1uLnZhbHVlLmxlbmd0aCp0aGlzLmNvbmZpZy5jaGFyYWN0ZXJXaWR0aCsicHgiKSxnLmNsYXNzTmFtZT15LGcuYXBwZW5kQ2hpbGQodSksZS5hcHBlbmRDaGlsZChnKX1lbHNlIGUuYXBwZW5kQ2hpbGQodSk7cmV0dXJuIHQrci5sZW5ndGh9LHRoaXMucmVuZGVySW5kZW50R3VpZGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuc2VhcmNoKHRoaXMuJGluZGVudEd1aWRlUmUpO2lmKHI8PTB8fHI+PW4pcmV0dXJuIHQ7aWYodFswXT09IiAiKXtyLT1yJXRoaXMudGFiU2l6ZTt2YXIgaT1yL3RoaXMudGFiU2l6ZTtmb3IodmFyIHM9MDtzPGk7cysrKWUuYXBwZW5kQ2hpbGQodGhpcy4kdGFiU3RyaW5nc1siICJdLmNsb25lTm9kZSghMCkpO3JldHVybiB0LnN1YnN0cihyKX1pZih0WzBdPT0iCSIpe2Zvcih2YXIgcz0wO3M8cjtzKyspZS5hcHBlbmRDaGlsZCh0aGlzLiR0YWJTdHJpbmdzWyIJIl0uY2xvbmVOb2RlKCEwKSk7cmV0dXJuIHQuc3Vic3RyKHIpfXJldHVybiB0fSx0aGlzLiRjcmVhdGVMaW5lRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmRvbS5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9ImFjZV9saW5lIix0LnN0eWxlLmhlaWdodD10aGlzLmNvbmZpZy5saW5lSGVpZ2h0KyJweCIsdH0sdGhpcy4kcmVuZGVyV3JhcHBlZExpbmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPTAsaT0wLG89blswXSx1PTAsYT10aGlzLiRjcmVhdGVMaW5lRWxlbWVudCgpO2UuYXBwZW5kQ2hpbGQoYSk7Zm9yKHZhciBmPTA7Zjx0Lmxlbmd0aDtmKyspe3ZhciBsPXRbZl0sYz1sLnZhbHVlO2lmKGY9PTAmJnRoaXMuZGlzcGxheUluZGVudEd1aWRlcyl7cj1jLmxlbmd0aCxjPXRoaXMucmVuZGVySW5kZW50R3VpZGUoYSxjLG8pO2lmKCFjKWNvbnRpbnVlO3ItPWMubGVuZ3RofWlmKHIrYy5sZW5ndGg8byl1PXRoaXMuJHJlbmRlclRva2VuKGEsdSxsLGMpLHIrPWMubGVuZ3RoO2Vsc2V7d2hpbGUocitjLmxlbmd0aD49byl1PXRoaXMuJHJlbmRlclRva2VuKGEsdSxsLGMuc3Vic3RyaW5nKDAsby1yKSksYz1jLnN1YnN0cmluZyhvLXIpLHI9byxhPXRoaXMuJGNyZWF0ZUxpbmVFbGVtZW50KCksZS5hcHBlbmRDaGlsZChhKSxhLmFwcGVuZENoaWxkKHRoaXMuZG9tLmNyZWF0ZVRleHROb2RlKHMuc3RyaW5nUmVwZWF0KCJcdTAwYTAiLG4uaW5kZW50KSx0aGlzLmVsZW1lbnQpKSxpKyssdT0wLG89bltpXXx8TnVtYmVyLk1BWF9WQUxVRTtjLmxlbmd0aCE9MCYmKHIrPWMubGVuZ3RoLHU9dGhpcy4kcmVuZGVyVG9rZW4oYSx1LGwsYykpfX1uW24ubGVuZ3RoLTFdPnRoaXMuTUFYX0xJTkVfTEVOR1RIJiZ0aGlzLiRyZW5kZXJPdmVyZmxvd01lc3NhZ2UoYSx1LG51bGwsIiIsITApfSx0aGlzLiRyZW5kZXJTaW1wbGVMaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPXRbMF0saT1yLnZhbHVlO3RoaXMuZGlzcGxheUluZGVudEd1aWRlcyYmKGk9dGhpcy5yZW5kZXJJbmRlbnRHdWlkZShlLGkpKSxpJiYobj10aGlzLiRyZW5kZXJUb2tlbihlLG4scixpKSk7Zm9yKHZhciBzPTE7czx0Lmxlbmd0aDtzKyspe3I9dFtzXSxpPXIudmFsdWU7aWYobitpLmxlbmd0aD50aGlzLk1BWF9MSU5FX0xFTkdUSClyZXR1cm4gdGhpcy4kcmVuZGVyT3ZlcmZsb3dNZXNzYWdlKGUsbixyLGkpO249dGhpcy4kcmVuZGVyVG9rZW4oZSxuLHIsaSl9fSx0aGlzLiRyZW5kZXJPdmVyZmxvd01lc3NhZ2U9ZnVuY3Rpb24oZSx0LG4scixpKXtuJiZ0aGlzLiRyZW5kZXJUb2tlbihlLHQsbixyLnNsaWNlKDAsdGhpcy5NQVhfTElORV9MRU5HVEgtdCkpO3ZhciBzPXRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtzLmNsYXNzTmFtZT0iYWNlX2lubGluZV9idXR0b24gYWNlX2tleXdvcmQgYWNlX3RvZ2dsZV93cmFwIixzLnRleHRDb250ZW50PWk/IjxoaWRlPiI6IjxjbGljayB0byBzZWUgbW9yZS4uLj4iLGUuYXBwZW5kQ2hpbGQocyl9LHRoaXMuJHJlbmRlckxpbmU9ZnVuY3Rpb24oZSx0LG4peyFuJiZuIT0wJiYobj10aGlzLnNlc3Npb24uZ2V0Rm9sZExpbmUodCkpO2lmKG4pdmFyIHI9dGhpcy4kZ2V0Rm9sZExpbmVUb2tlbnModCxuKTtlbHNlIHZhciByPXRoaXMuc2Vzc2lvbi5nZXRUb2tlbnModCk7dmFyIGk9ZTtpZihyLmxlbmd0aCl7dmFyIHM9dGhpcy5zZXNzaW9uLmdldFJvd1NwbGl0RGF0YSh0KTtpZihzJiZzLmxlbmd0aCl7dGhpcy4kcmVuZGVyV3JhcHBlZExpbmUoZSxyLHMpO3ZhciBpPWUubGFzdENoaWxkfWVsc2V7dmFyIGk9ZTt0aGlzLiR1c2VMaW5lR3JvdXBzKCkmJihpPXRoaXMuJGNyZWF0ZUxpbmVFbGVtZW50KCksZS5hcHBlbmRDaGlsZChpKSksdGhpcy4kcmVuZGVyU2ltcGxlTGluZShpLHIpfX1lbHNlIHRoaXMuJHVzZUxpbmVHcm91cHMoKSYmKGk9dGhpcy4kY3JlYXRlTGluZUVsZW1lbnQoKSxlLmFwcGVuZENoaWxkKGkpKTtpZih0aGlzLnNob3dJbnZpc2libGVzJiZpKXtuJiYodD1uLmVuZC5yb3cpO3ZhciBvPXRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtvLmNsYXNzTmFtZT0iYWNlX2ludmlzaWJsZSBhY2VfaW52aXNpYmxlX2VvbCIsby50ZXh0Q29udGVudD10PT10aGlzLnNlc3Npb24uZ2V0TGVuZ3RoKCktMT90aGlzLkVPRl9DSEFSOnRoaXMuRU9MX0NIQVIsaS5hcHBlbmRDaGlsZChvKX19LHRoaXMuJGdldEZvbGRMaW5lVG9rZW5zPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaShlLHQsbil7dmFyIGk9MCxzPTA7d2hpbGUocytlW2ldLnZhbHVlLmxlbmd0aDx0KXtzKz1lW2ldLnZhbHVlLmxlbmd0aCxpKys7aWYoaT09ZS5sZW5ndGgpcmV0dXJufWlmKHMhPXQpe3ZhciBvPWVbaV0udmFsdWUuc3Vic3RyaW5nKHQtcyk7by5sZW5ndGg+bi10JiYobz1vLnN1YnN0cmluZygwLG4tdCkpLHIucHVzaCh7dHlwZTplW2ldLnR5cGUsdmFsdWU6b30pLHM9dCtvLmxlbmd0aCxpKz0xfXdoaWxlKHM8biYmaTxlLmxlbmd0aCl7dmFyIG89ZVtpXS52YWx1ZTtvLmxlbmd0aCtzPm4/ci5wdXNoKHt0eXBlOmVbaV0udHlwZSx2YWx1ZTpvLnN1YnN0cmluZygwLG4tcyl9KTpyLnB1c2goZVtpXSkscys9by5sZW5ndGgsaSs9MX19dmFyIG49dGhpcy5zZXNzaW9uLHI9W10scz1uLmdldFRva2VucyhlKTtyZXR1cm4gdC53YWxrKGZ1bmN0aW9uKGUsdCxvLHUsYSl7ZSE9bnVsbD9yLnB1c2goe3R5cGU6ImZvbGQiLHZhbHVlOmV9KTooYSYmKHM9bi5nZXRUb2tlbnModCkpLHMubGVuZ3RoJiZpKHMsdSxvKSl9LHQuZW5kLnJvdyx0aGlzLnNlc3Npb24uZ2V0TGluZSh0LmVuZC5yb3cpLmxlbmd0aCkscn0sdGhpcy4kdXNlTGluZUdyb3Vwcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0VXNlV3JhcE1vZGUoKX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7fX0pLmNhbGwoYS5wcm90b3R5cGUpLHQuVGV4dD1hfSksYWNlLmRlZmluZSgiYWNlL2xheWVyL2N1cnNvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi9saWIvZG9tIiksaT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQ9ci5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJhY2VfbGF5ZXIgYWNlX2N1cnNvci1sYXllciIsZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMuaXNCbGlua2luZz0hMCx0aGlzLmJsaW5rSW50ZXJ2YWw9MWUzLHRoaXMuc21vb3RoQmxpbmtpbmc9ITEsdGhpcy5jdXJzb3JzPVtdLHRoaXMuY3Vyc29yPXRoaXMuYWRkQ3Vyc29yKCksci5hZGRDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9oaWRkZW4tY3Vyc29ycyIpLHRoaXMuJHVwZGF0ZUN1cnNvcnM9dGhpcy4kdXBkYXRlT3BhY2l0eS5iaW5kKHRoaXMpfTsoZnVuY3Rpb24oKXt0aGlzLiR1cGRhdGVPcGFjaXR5PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3Vyc29ycztmb3IodmFyIG49dC5sZW5ndGg7bi0tOylyLnNldFN0eWxlKHRbbl0uc3R5bGUsIm9wYWNpdHkiLGU/IiI6IjAiKX0sdGhpcy4kc3RhcnRDc3NBbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnNvcnM7Zm9yKHZhciB0PWUubGVuZ3RoO3QtLTspZVt0XS5zdHlsZS5hbmltYXRpb25EdXJhdGlvbj10aGlzLmJsaW5rSW50ZXJ2YWwrIm1zIjtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5hZGRDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9hbmltYXRlLWJsaW5raW5nIil9LmJpbmQodGhpcykpfSx0aGlzLiRzdG9wQ3NzQW5pbWF0aW9uPWZ1bmN0aW9uKCl7ci5yZW1vdmVDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9hbmltYXRlLWJsaW5raW5nIil9LHRoaXMuJHBhZGRpbmc9MCx0aGlzLnNldFBhZGRpbmc9ZnVuY3Rpb24oZSl7dGhpcy4kcGFkZGluZz1lfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uPWV9LHRoaXMuc2V0Qmxpbmtpbmc9ZnVuY3Rpb24oZSl7ZSE9dGhpcy5pc0JsaW5raW5nJiYodGhpcy5pc0JsaW5raW5nPWUsdGhpcy5yZXN0YXJ0VGltZXIoKSl9LHRoaXMuc2V0QmxpbmtJbnRlcnZhbD1mdW5jdGlvbihlKXtlIT10aGlzLmJsaW5rSW50ZXJ2YWwmJih0aGlzLmJsaW5rSW50ZXJ2YWw9ZSx0aGlzLnJlc3RhcnRUaW1lcigpKX0sdGhpcy5zZXRTbW9vdGhCbGlua2luZz1mdW5jdGlvbihlKXtlIT10aGlzLnNtb290aEJsaW5raW5nJiYodGhpcy5zbW9vdGhCbGlua2luZz1lLHIuc2V0Q3NzQ2xhc3ModGhpcy5lbGVtZW50LCJhY2Vfc21vb3RoLWJsaW5raW5nIixlKSx0aGlzLiR1cGRhdGVDdXJzb3JzKCEwKSx0aGlzLnJlc3RhcnRUaW1lcigpKX0sdGhpcy5hZGRDdXJzb3I9ZnVuY3Rpb24oKXt2YXIgZT1yLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmNsYXNzTmFtZT0iYWNlX2N1cnNvciIsdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGUpLHRoaXMuY3Vyc29ycy5wdXNoKGUpLGV9LHRoaXMucmVtb3ZlQ3Vyc29yPWZ1bmN0aW9uKCl7aWYodGhpcy5jdXJzb3JzLmxlbmd0aD4xKXt2YXIgZT10aGlzLmN1cnNvcnMucG9wKCk7cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxlfX0sdGhpcy5oaWRlQ3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy5pc1Zpc2libGU9ITEsci5hZGRDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9oaWRkZW4tY3Vyc29ycyIpLHRoaXMucmVzdGFydFRpbWVyKCl9LHRoaXMuc2hvd0N1cnNvcj1mdW5jdGlvbigpe3RoaXMuaXNWaXNpYmxlPSEwLHIucmVtb3ZlQ3NzQ2xhc3ModGhpcy5lbGVtZW50LCJhY2VfaGlkZGVuLWN1cnNvcnMiKSx0aGlzLnJlc3RhcnRUaW1lcigpfSx0aGlzLnJlc3RhcnRUaW1lcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuJHVwZGF0ZUN1cnNvcnM7Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpLGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCksdGhpcy4kc3RvcENzc0FuaW1hdGlvbigpLHRoaXMuc21vb3RoQmxpbmtpbmcmJnIucmVtb3ZlQ3NzQ2xhc3ModGhpcy5lbGVtZW50LCJhY2Vfc21vb3RoLWJsaW5raW5nIiksZSghMCk7aWYoIXRoaXMuaXNCbGlua2luZ3x8IXRoaXMuYmxpbmtJbnRlcnZhbHx8IXRoaXMuaXNWaXNpYmxlKXt0aGlzLiRzdG9wQ3NzQW5pbWF0aW9uKCk7cmV0dXJufXRoaXMuc21vb3RoQmxpbmtpbmcmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyLmFkZENzc0NsYXNzKHRoaXMuZWxlbWVudCwiYWNlX3Ntb290aC1ibGlua2luZyIpfS5iaW5kKHRoaXMpKTtpZihyLkhBU19DU1NfQU5JTUFUSU9OKXRoaXMuJHN0YXJ0Q3NzQW5pbWF0aW9uKCk7ZWxzZXt2YXIgdD1mdW5jdGlvbigpe3RoaXMudGltZW91dElkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKCExKX0sLjYqdGhpcy5ibGlua0ludGVydmFsKX0uYmluZCh0aGlzKTt0aGlzLmludGVydmFsSWQ9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtlKCEwKSx0KCl9LHRoaXMuYmxpbmtJbnRlcnZhbCksdCgpfX0sdGhpcy5nZXRQaXhlbFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuY29uZmlnfHwhdGhpcy5zZXNzaW9uKXJldHVybntsZWZ0OjAsdG9wOjB9O2V8fChlPXRoaXMuc2Vzc2lvbi5zZWxlY3Rpb24uZ2V0Q3Vyc29yKCkpO3ZhciBuPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oZSkscj10aGlzLiRwYWRkaW5nKyh0aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyLmlzQmlkaVJvdyhuLnJvdyxlLnJvdyk/dGhpcy5zZXNzaW9uLiRiaWRpSGFuZGxlci5nZXRQb3NMZWZ0KG4uY29sdW1uKTpuLmNvbHVtbip0aGlzLmNvbmZpZy5jaGFyYWN0ZXJXaWR0aCksaT0obi5yb3ctKHQ/dGhpcy5jb25maWcuZmlyc3RSb3dTY3JlZW46MCkpKnRoaXMuY29uZmlnLmxpbmVIZWlnaHQ7cmV0dXJue2xlZnQ6cix0b3A6aX19LHRoaXMuaXNDdXJzb3JJblZpZXc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b3A+PTAmJmUudG9wPHQubWF4SGVpZ2h0fSx0aGlzLnVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLmNvbmZpZz1lO3ZhciB0PXRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2VycyxuPTAsaT0wO2lmKHQ9PT11bmRlZmluZWR8fHQubGVuZ3RoPT09MCl0PVt7Y3Vyc29yOm51bGx9XTtmb3IodmFyIG49MCxzPXQubGVuZ3RoO248cztuKyspe3ZhciBvPXRoaXMuZ2V0UGl4ZWxQb3NpdGlvbih0W25dLmN1cnNvciwhMCk7aWYoKG8udG9wPmUuaGVpZ2h0K2Uub2Zmc2V0fHxvLnRvcDwwKSYmbj4xKWNvbnRpbnVlO3ZhciB1PXRoaXMuY3Vyc29yc1tpKytdfHx0aGlzLmFkZEN1cnNvcigpLGE9dS5zdHlsZTt0aGlzLmRyYXdDdXJzb3I/dGhpcy5kcmF3Q3Vyc29yKHUsbyxlLHRbbl0sdGhpcy5zZXNzaW9uKTp0aGlzLmlzQ3Vyc29ySW5WaWV3KG8sZSk/KHIuc2V0U3R5bGUoYSwiZGlzcGxheSIsImJsb2NrIiksci50cmFuc2xhdGUodSxvLmxlZnQsby50b3ApLHIuc2V0U3R5bGUoYSwid2lkdGgiLE1hdGgucm91bmQoZS5jaGFyYWN0ZXJXaWR0aCkrInB4Iiksci5zZXRTdHlsZShhLCJoZWlnaHQiLGUubGluZUhlaWdodCsicHgiKSk6ci5zZXRTdHlsZShhLCJkaXNwbGF5Iiwibm9uZSIpfXdoaWxlKHRoaXMuY3Vyc29ycy5sZW5ndGg+aSl0aGlzLnJlbW92ZUN1cnNvcigpO3ZhciBmPXRoaXMuc2Vzc2lvbi5nZXRPdmVyd3JpdGUoKTt0aGlzLiRzZXRPdmVyd3JpdGUoZiksdGhpcy4kcGl4ZWxQb3M9byx0aGlzLnJlc3RhcnRUaW1lcigpfSx0aGlzLmRyYXdDdXJzb3I9bnVsbCx0aGlzLiRzZXRPdmVyd3JpdGU9ZnVuY3Rpb24oZSl7ZSE9dGhpcy5vdmVyd3JpdGUmJih0aGlzLm92ZXJ3cml0ZT1lLGU/ci5hZGRDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9vdmVyd3JpdGUtY3Vyc29ycyIpOnIucmVtb3ZlQ3NzQ2xhc3ModGhpcy5lbGVtZW50LCJhY2Vfb3ZlcndyaXRlLWN1cnNvcnMiKSl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKSxjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SWQpfX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuQ3Vyc29yPWl9KSxhY2UuZGVmaW5lKCJhY2Uvc2Nyb2xsYmFyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvZXZlbnQiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZG9tIikscz1lKCIuL2xpYi9ldmVudCIpLG89ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcix1PTMyNzY4LGE9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50PWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lbGVtZW50LmNsYXNzTmFtZT0iYWNlX3Njcm9sbGJhciBhY2Vfc2Nyb2xsYmFyIit0aGlzLmNsYXNzU3VmZml4LHRoaXMuaW5uZXI9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmlubmVyLmNsYXNzTmFtZT0iYWNlX3Njcm9sbGJhci1pbm5lciIsdGhpcy5pbm5lci50ZXh0Q29udGVudD0iXHUwMGEwIix0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5pbm5lciksZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuc2V0VmlzaWJsZSghMSksdGhpcy5za2lwRXZlbnQ9ITEscy5hZGRMaXN0ZW5lcih0aGlzLmVsZW1lbnQsInNjcm9sbCIsdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKSxzLmFkZExpc3RlbmVyKHRoaXMuZWxlbWVudCwibW91c2Vkb3duIixzLnByZXZlbnREZWZhdWx0KX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxvKSx0aGlzLnNldFZpc2libGU9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXk9ZT8iIjoibm9uZSIsdGhpcy5pc1Zpc2libGU9ZSx0aGlzLmNvZWZmPTF9fSkuY2FsbChhLnByb3RvdHlwZSk7dmFyIGY9ZnVuY3Rpb24oZSx0KXthLmNhbGwodGhpcyxlKSx0aGlzLnNjcm9sbFRvcD0wLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdC4kc2Nyb2xsYmFyV2lkdGg9dGhpcy53aWR0aD1pLnNjcm9sbGJhcldpZHRoKGUub3duZXJEb2N1bWVudCksdGhpcy5pbm5lci5zdHlsZS53aWR0aD10aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9KHRoaXMud2lkdGh8fDE1KSs1KyJweCIsdGhpcy4kbWluV2lkdGg9MH07ci5pbmhlcml0cyhmLGEpLGZ1bmN0aW9uKCl7dGhpcy5jbGFzc1N1ZmZpeD0iLXYiLHRoaXMub25TY3JvbGw9ZnVuY3Rpb24oKXtpZighdGhpcy5za2lwRXZlbnQpe3RoaXMuc2Nyb2xsVG9wPXRoaXMuZWxlbWVudC5zY3JvbGxUb3A7aWYodGhpcy5jb2VmZiE9MSl7dmFyIGU9dGhpcy5lbGVtZW50LmNsaWVudEhlaWdodC90aGlzLnNjcm9sbEhlaWdodDt0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcCooMS1lKS8odGhpcy5jb2VmZi1lKX10aGlzLl9lbWl0KCJzY3JvbGwiLHtkYXRhOnRoaXMuc2Nyb2xsVG9wfSl9dGhpcy5za2lwRXZlbnQ9ITF9LHRoaXMuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5pc1Zpc2libGU/dGhpcy53aWR0aDowLHRoaXMuJG1pbldpZHRofHwwKX0sdGhpcy5zZXRIZWlnaHQ9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD1lKyJweCJ9LHRoaXMuc2V0SW5uZXJIZWlnaHQ9dGhpcy5zZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oZSl7dGhpcy5zY3JvbGxIZWlnaHQ9ZSxlPnU/KHRoaXMuY29lZmY9dS9lLGU9dSk6dGhpcy5jb2VmZiE9MSYmKHRoaXMuY29lZmY9MSksdGhpcy5pbm5lci5zdHlsZS5oZWlnaHQ9ZSsicHgifSx0aGlzLnNldFNjcm9sbFRvcD1mdW5jdGlvbihlKXt0aGlzLnNjcm9sbFRvcCE9ZSYmKHRoaXMuc2tpcEV2ZW50PSEwLHRoaXMuc2Nyb2xsVG9wPWUsdGhpcy5lbGVtZW50LnNjcm9sbFRvcD1lKnRoaXMuY29lZmYpfX0uY2FsbChmLnByb3RvdHlwZSk7dmFyIGw9ZnVuY3Rpb24oZSx0KXthLmNhbGwodGhpcyxlKSx0aGlzLnNjcm9sbExlZnQ9MCx0aGlzLmhlaWdodD10LiRzY3JvbGxiYXJXaWR0aCx0aGlzLmlubmVyLnN0eWxlLmhlaWdodD10aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0PSh0aGlzLmhlaWdodHx8MTUpKzUrInB4In07ci5pbmhlcml0cyhsLGEpLGZ1bmN0aW9uKCl7dGhpcy5jbGFzc1N1ZmZpeD0iLWgiLHRoaXMub25TY3JvbGw9ZnVuY3Rpb24oKXt0aGlzLnNraXBFdmVudHx8KHRoaXMuc2Nyb2xsTGVmdD10aGlzLmVsZW1lbnQuc2Nyb2xsTGVmdCx0aGlzLl9lbWl0KCJzY3JvbGwiLHtkYXRhOnRoaXMuc2Nyb2xsTGVmdH0pKSx0aGlzLnNraXBFdmVudD0hMX0sdGhpcy5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1Zpc2libGU/dGhpcy5oZWlnaHQ6MH0sdGhpcy5zZXRXaWR0aD1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9ZSsicHgifSx0aGlzLnNldElubmVyV2lkdGg9ZnVuY3Rpb24oZSl7dGhpcy5pbm5lci5zdHlsZS53aWR0aD1lKyJweCJ9LHRoaXMuc2V0U2Nyb2xsV2lkdGg9ZnVuY3Rpb24oZSl7dGhpcy5pbm5lci5zdHlsZS53aWR0aD1lKyJweCJ9LHRoaXMuc2V0U2Nyb2xsTGVmdD1mdW5jdGlvbihlKXt0aGlzLnNjcm9sbExlZnQhPWUmJih0aGlzLnNraXBFdmVudD0hMCx0aGlzLnNjcm9sbExlZnQ9dGhpcy5lbGVtZW50LnNjcm9sbExlZnQ9ZSl9fS5jYWxsKGwucHJvdG90eXBlKSx0LlNjcm9sbEJhcj1mLHQuU2Nyb2xsQmFyVj1mLHQuU2Nyb2xsQmFySD1sLHQuVlNjcm9sbEJhcj1mLHQuSFNjcm9sbEJhcj1sfSksYWNlLmRlZmluZSgiYWNlL3JlbmRlcmxvb3AiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2V2ZW50Il0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2xpYi9ldmVudCIpLGk9ZnVuY3Rpb24oZSx0KXt0aGlzLm9uUmVuZGVyPWUsdGhpcy5wZW5kaW5nPSExLHRoaXMuY2hhbmdlcz0wLHRoaXMuJHJlY3Vyc2lvbkxpbWl0PTIsdGhpcy53aW5kb3c9dHx8d2luZG93O3ZhciBuPXRoaXM7dGhpcy5fZmx1c2g9ZnVuY3Rpb24oZSl7bi5wZW5kaW5nPSExO3ZhciB0PW4uY2hhbmdlczt0JiYoci5ibG9ja0lkbGUoMTAwKSxuLmNoYW5nZXM9MCxuLm9uUmVuZGVyKHQpKTtpZihuLmNoYW5nZXMpe2lmKG4uJHJlY3Vyc2lvbkxpbWl0LS08MClyZXR1cm47bi5zY2hlZHVsZSgpfWVsc2Ugbi4kcmVjdXJzaW9uTGltaXQ9Mn19OyhmdW5jdGlvbigpe3RoaXMuc2NoZWR1bGU9ZnVuY3Rpb24oZSl7dGhpcy5jaGFuZ2VzPXRoaXMuY2hhbmdlc3xlLHRoaXMuY2hhbmdlcyYmIXRoaXMucGVuZGluZyYmKHIubmV4dEZyYW1lKHRoaXMuX2ZsdXNoKSx0aGlzLnBlbmRpbmc9ITApfSx0aGlzLmNsZWFyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2hhbmdlcztyZXR1cm4gdGhpcy5jaGFuZ2VzPTAsdH19KS5jYWxsKGkucHJvdG90eXBlKSx0LlJlbmRlckxvb3A9aX0pLGFjZS5kZWZpbmUoImFjZS9sYXllci9mb250X21ldHJpY3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9ldmVudCIsImFjZS9saWIvdXNlcmFnZW50IiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9kb20iKSxzPWUoIi4uL2xpYi9sYW5nIiksbz1lKCIuLi9saWIvZXZlbnQiKSx1PWUoIi4uL2xpYi91c2VyYWdlbnQiKSxhPWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGY9MjU2LGw9dHlwZW9mIFJlc2l6ZU9ic2VydmVyPT0iZnVuY3Rpb24iLGM9MjAwLGg9dC5Gb250TWV0cmljcz1mdW5jdGlvbihlKXt0aGlzLmVsPWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy4kc2V0TWVhc3VyZU5vZGVTdHlsZXModGhpcy5lbC5zdHlsZSwhMCksdGhpcy4kbWFpbj1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuJHNldE1lYXN1cmVOb2RlU3R5bGVzKHRoaXMuJG1haW4uc3R5bGUpLHRoaXMuJG1lYXN1cmVOb2RlPWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy4kc2V0TWVhc3VyZU5vZGVTdHlsZXModGhpcy4kbWVhc3VyZU5vZGUuc3R5bGUpLHRoaXMuZWwuYXBwZW5kQ2hpbGQodGhpcy4kbWFpbiksdGhpcy5lbC5hcHBlbmRDaGlsZCh0aGlzLiRtZWFzdXJlTm9kZSksZS5hcHBlbmRDaGlsZCh0aGlzLmVsKSx0aGlzLiRtZWFzdXJlTm9kZS5pbm5lckhUTUw9cy5zdHJpbmdSZXBlYXQoIlgiLGYpLHRoaXMuJGNoYXJhY3RlclNpemU9e3dpZHRoOjAsaGVpZ2h0OjB9LGw/dGhpcy4kYWRkT2JzZXJ2ZXIoKTp0aGlzLmNoZWNrRm9yU2l6ZUNoYW5nZXMoKX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxhKSx0aGlzLiRjaGFyYWN0ZXJTaXplPXt3aWR0aDowLGhlaWdodDowfSx0aGlzLiRzZXRNZWFzdXJlTm9kZVN0eWxlcz1mdW5jdGlvbihlLHQpe2Uud2lkdGg9ZS5oZWlnaHQ9ImF1dG8iLGUubGVmdD1lLnRvcD0iMHB4IixlLnZpc2liaWxpdHk9ImhpZGRlbiIsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUud2hpdGVTcGFjZT0icHJlIix1LmlzSUU8OD9lWyJmb250LWZhbWlseSJdPSJpbmhlcml0IjplLmZvbnQ9ImluaGVyaXQiLGUub3ZlcmZsb3c9dD8iaGlkZGVuIjoidmlzaWJsZSJ9LHRoaXMuY2hlY2tGb3JTaXplQ2hhbmdlcz1mdW5jdGlvbihlKXtlPT09dW5kZWZpbmVkJiYoZT10aGlzLiRtZWFzdXJlU2l6ZXMoKSk7aWYoZSYmKHRoaXMuJGNoYXJhY3RlclNpemUud2lkdGghPT1lLndpZHRofHx0aGlzLiRjaGFyYWN0ZXJTaXplLmhlaWdodCE9PWUuaGVpZ2h0KSl7dGhpcy4kbWVhc3VyZU5vZGUuc3R5bGUuZm9udFdlaWdodD0iYm9sZCI7dmFyIHQ9dGhpcy4kbWVhc3VyZVNpemVzKCk7dGhpcy4kbWVhc3VyZU5vZGUuc3R5bGUuZm9udFdlaWdodD0iIix0aGlzLiRjaGFyYWN0ZXJTaXplPWUsdGhpcy5jaGFyU2l6ZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmFsbG93Qm9sZEZvbnRzPXQmJnQud2lkdGg9PT1lLndpZHRoJiZ0LmhlaWdodD09PWUuaGVpZ2h0LHRoaXMuX2VtaXQoImNoYW5nZUNoYXJhY3RlclNpemUiLHtkYXRhOmV9KX19LHRoaXMuJGFkZE9ic2VydmVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLiRvYnNlcnZlcj1uZXcgd2luZG93LlJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uKHQpe3ZhciBuPXRbMF0uY29udGVudFJlY3Q7ZS5jaGVja0ZvclNpemVDaGFuZ2VzKHtoZWlnaHQ6bi5oZWlnaHQsd2lkdGg6bi53aWR0aC9mfSl9KSx0aGlzLiRvYnNlcnZlci5vYnNlcnZlKHRoaXMuJG1lYXN1cmVOb2RlKX0sdGhpcy4kcG9sbFNpemVDaGFuZ2VzPWZ1bmN0aW9uKCl7aWYodGhpcy4kcG9sbFNpemVDaGFuZ2VzVGltZXJ8fHRoaXMuJG9ic2VydmVyKXJldHVybiB0aGlzLiRwb2xsU2l6ZUNoYW5nZXNUaW1lcjt2YXIgZT10aGlzO3JldHVybiB0aGlzLiRwb2xsU2l6ZUNoYW5nZXNUaW1lcj1vLm9uSWRsZShmdW5jdGlvbiB0KCl7ZS5jaGVja0ZvclNpemVDaGFuZ2VzKCksby5vbklkbGUodCw1MDApfSw1MDApfSx0aGlzLnNldFBvbGxpbmc9ZnVuY3Rpb24oZSl7ZT90aGlzLiRwb2xsU2l6ZUNoYW5nZXMoKTp0aGlzLiRwb2xsU2l6ZUNoYW5nZXNUaW1lciYmKGNsZWFySW50ZXJ2YWwodGhpcy4kcG9sbFNpemVDaGFuZ2VzVGltZXIpLHRoaXMuJHBvbGxTaXplQ2hhbmdlc1RpbWVyPTApfSx0aGlzLiRtZWFzdXJlU2l6ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9e2hlaWdodDooZXx8dGhpcy4kbWVhc3VyZU5vZGUpLmNsaWVudEhlaWdodCx3aWR0aDooZXx8dGhpcy4kbWVhc3VyZU5vZGUpLmNsaWVudFdpZHRoL2Z9O3JldHVybiB0LndpZHRoPT09MHx8dC5oZWlnaHQ9PT0wP251bGw6dH0sdGhpcy4kbWVhc3VyZUNoYXJXaWR0aD1mdW5jdGlvbihlKXt0aGlzLiRtYWluLmlubmVySFRNTD1zLnN0cmluZ1JlcGVhdChlLGYpO3ZhciB0PXRoaXMuJG1haW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIHQud2lkdGgvZn0sdGhpcy5nZXRDaGFyYWN0ZXJXaWR0aD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNoYXJTaXplc1tlXTtyZXR1cm4gdD09PXVuZGVmaW5lZCYmKHQ9dGhpcy5jaGFyU2l6ZXNbZV09dGhpcy4kbWVhc3VyZUNoYXJXaWR0aChlKS90aGlzLiRjaGFyYWN0ZXJTaXplLndpZHRoKSx0fSx0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKHRoaXMuJHBvbGxTaXplQ2hhbmdlc1RpbWVyKSx0aGlzLiRvYnNlcnZlciYmdGhpcy4kb2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuZWwmJnRoaXMuZWwucGFyZW50Tm9kZSYmdGhpcy5lbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWwpfSx0aGlzLiRnZXRab29tPWZ1bmN0aW9uIGUodCl7cmV0dXJuIHQ/KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLnpvb218fDEpKmUodC5wYXJlbnRFbGVtZW50KToxfSx0aGlzLiRpbml0VHJhbnNmb3JtTWVhc3VyZU5vZGVzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm5bImRpdiIse3N0eWxlOiJwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiIrZSsicHg7bGVmdDoiK3QrInB4OyJ9XX07dGhpcy5lbHM9aS5idWlsZERvbShbZSgwLDApLGUoYywwKSxlKDAsYyksZShjLGMpXSx0aGlzLmVsKX0sdGhpcy50cmFuc2Zvcm1Db29yZGluYXRlcz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPWVbMV0qdFswXS1lWzBdKnRbMV07cmV0dXJuWygtdFsxXSpuWzBdK3RbMF0qblsxXSkvciwoK2VbMV0qblswXS1lWzBdKm5bMV0pL3JdfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm5bZVswXS10WzBdLGVbMV0tdFsxXV19ZnVuY3Rpb24gcyhlLHQpe3JldHVybltlWzBdK3RbMF0sZVsxXSt0WzFdXX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuW2UqdFswXSxlKnRbMV1dfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bdC5sZWZ0LHQudG9wXX1pZihlKXt2YXIgbj10aGlzLiRnZXRab29tKHRoaXMuZWwpO2U9bygxL24sZSl9dGhpcy5lbHN8fHRoaXMuJGluaXRUcmFuc2Zvcm1NZWFzdXJlTm9kZXMoKTt2YXIgYT11KHRoaXMuZWxzWzBdKSxmPXUodGhpcy5lbHNbMV0pLGw9dSh0aGlzLmVsc1syXSksaD11KHRoaXMuZWxzWzNdKSxwPXIoaShoLGYpLGkoaCxsKSxpKHMoZixsKSxzKGgsYSkpKSxkPW8oMStwWzBdLGkoZixhKSksdj1vKDErcFsxXSxpKGwsYSkpO2lmKHQpe3ZhciBtPXQsZz1wWzBdKm1bMF0vYytwWzFdKm1bMV0vYysxLHk9cyhvKG1bMF0sZCksbyhtWzFdLHYpKTtyZXR1cm4gcyhvKDEvZy9jLHkpLGEpfXZhciBiPWkoZSxhKSx3PXIoaShkLG8ocFswXSxiKSksaSh2LG8ocFsxXSxiKSksYik7cmV0dXJuIG8oYyx3KX19KS5jYWxsKGgucHJvdG90eXBlKX0pLGFjZS5kZWZpbmUoImFjZS92aXJ0dWFsX3JlbmRlcmVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2RvbSIsImFjZS9jb25maWciLCJhY2UvbGF5ZXIvZ3V0dGVyIiwiYWNlL2xheWVyL21hcmtlciIsImFjZS9sYXllci90ZXh0IiwiYWNlL2xheWVyL2N1cnNvciIsImFjZS9zY3JvbGxiYXIiLCJhY2Uvc2Nyb2xsYmFyIiwiYWNlL3JlbmRlcmxvb3AiLCJhY2UvbGF5ZXIvZm9udF9tZXRyaWNzIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL2xpYi91c2VyYWdlbnQiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZG9tIikscz1lKCIuL2NvbmZpZyIpLG89ZSgiLi9sYXllci9ndXR0ZXIiKS5HdXR0ZXIsdT1lKCIuL2xheWVyL21hcmtlciIpLk1hcmtlcixhPWUoIi4vbGF5ZXIvdGV4dCIpLlRleHQsZj1lKCIuL2xheWVyL2N1cnNvciIpLkN1cnNvcixsPWUoIi4vc2Nyb2xsYmFyIikuSFNjcm9sbEJhcixjPWUoIi4vc2Nyb2xsYmFyIikuVlNjcm9sbEJhcixoPWUoIi4vcmVuZGVybG9vcCIpLlJlbmRlckxvb3AscD1lKCIuL2xheWVyL2ZvbnRfbWV0cmljcyIpLkZvbnRNZXRyaWNzLGQ9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcix2PScuYWNlX2JyMSB7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1cyAgICA6IDNweDt9LmFjZV9icjIge2JvcmRlci10b3AtcmlnaHQtcmFkaXVzICAgOiAzcHg7fS5hY2VfYnIzIHtib3JkZXItdG9wLWxlZnQtcmFkaXVzICAgIDogM3B4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogICAgM3B4O30uYWNlX2JyNCB7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDt9LmFjZV9icjUge2JvcmRlci10b3AtbGVmdC1yYWRpdXMgICAgOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7fS5hY2VfYnI2IHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyAgIDogM3B4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4O30uYWNlX2JyNyB7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1cyAgICA6IDNweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICAgIDNweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDt9LmFjZV9icjgge2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMgOiAzcHg7fS5hY2VfYnI5IHtib3JkZXItdG9wLWxlZnQtcmFkaXVzICAgIDogM3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAgM3B4O30uYWNlX2JyMTB7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXMgICA6IDNweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogIDNweDt9LmFjZV9icjExe2JvcmRlci10b3AtbGVmdC1yYWRpdXMgICAgOiAzcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAgICAzcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICAzcHg7fS5hY2VfYnIxMntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAgM3B4O30uYWNlX2JyMTN7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1cyAgICA6IDNweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogIDNweDt9LmFjZV9icjE0e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzICAgOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICAzcHg7fS5hY2VfYnIxNXtib3JkZXItdG9wLWxlZnQtcmFkaXVzICAgIDogM3B4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogICAgM3B4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7fS5hY2VfZWRpdG9yIHtwb3NpdGlvbjogcmVsYXRpdmU7b3ZlcmZsb3c6IGhpZGRlbjtmb250OiAxMnB4L25vcm1hbCBcJ01vbmFjb1wnLCBcJ01lbmxvXCcsIFwnVWJ1bnR1IE1vbm9cJywgXCdDb25zb2xhc1wnLCBcJ3NvdXJjZS1jb2RlLXByb1wnLCBtb25vc3BhY2U7ZGlyZWN0aW9uOiBsdHI7dGV4dC1hbGlnbjogbGVmdDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7fS5hY2Vfc2Nyb2xsZXIge3Bvc2l0aW9uOiBhYnNvbHV0ZTtvdmVyZmxvdzogaGlkZGVuO3RvcDogMDtib3R0b206IDA7YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDstbXMtdXNlci1zZWxlY3Q6IG5vbmU7LW1vei11c2VyLXNlbGVjdDogbm9uZTstd2Via2l0LXVzZXItc2VsZWN0OiBub25lO3VzZXItc2VsZWN0OiBub25lO2N1cnNvcjogdGV4dDt9LmFjZV9jb250ZW50IHtwb3NpdGlvbjogYWJzb2x1dGU7Ym94LXNpemluZzogYm9yZGVyLWJveDttaW4td2lkdGg6IDEwMCU7Y29udGFpbjogc3R5bGUgc2l6ZSBsYXlvdXQ7fS5hY2VfZHJhZ2dpbmcgLmFjZV9zY3JvbGxlcjpiZWZvcmV7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtsZWZ0OiAwO3JpZ2h0OiAwO2JvdHRvbTogMDtjb250ZW50OiBcJ1wnO2JhY2tncm91bmQ6IHJnYmEoMjUwLCAyNTAsIDI1MCwgMC4wMSk7ei1pbmRleDogMTAwMDt9LmFjZV9kcmFnZ2luZy5hY2VfZGFyayAuYWNlX3Njcm9sbGVyOmJlZm9yZXtiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDEpO30uYWNlX3NlbGVjdGluZywgLmFjZV9zZWxlY3RpbmcgKiB7Y3Vyc29yOiB0ZXh0ICFpbXBvcnRhbnQ7fS5hY2VfZ3V0dGVyIHtwb3NpdGlvbjogYWJzb2x1dGU7b3ZlcmZsb3cgOiBoaWRkZW47d2lkdGg6IGF1dG87dG9wOiAwO2JvdHRvbTogMDtsZWZ0OiAwO2N1cnNvcjogZGVmYXVsdDt6LWluZGV4OiA0Oy1tcy11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7dXNlci1zZWxlY3Q6IG5vbmU7Y29udGFpbjogc3R5bGUgc2l6ZSBsYXlvdXQ7fS5hY2VfZ3V0dGVyLWFjdGl2ZS1saW5lIHtwb3NpdGlvbjogYWJzb2x1dGU7bGVmdDogMDtyaWdodDogMDt9LmFjZV9zY3JvbGxlci5hY2Vfc2Nyb2xsLWxlZnQge2JveC1zaGFkb3c6IDE3cHggMCAxNnB4IC0xNnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldDt9LmFjZV9ndXR0ZXItY2VsbCB7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtsZWZ0OiAwO3JpZ2h0OiAwO3BhZGRpbmctbGVmdDogMTlweDtwYWRkaW5nLXJpZ2h0OiA2cHg7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDt9LmFjZV9ndXR0ZXItY2VsbC5hY2VfZXJyb3Ige2JhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FNQUFBQW9MUTlUQUFBQk9GQk1WRVgvLy8vLy8vLy9RUnN3RkFiL1VpNHdGQVl3RkFZd0ZBYVdHQWZEUnltek9TSC9QeHN3RkFiL1NpVXdGQVl3RkFiVVBSdmpRaURsbG9nNUhoSGRSeWJzVGkzL1R5djlUaXIrU3lqL1VDMy8vLy9YdXJlYk1CSXdGQWIvUlNIYlB4L2dVemZkd0wza3pNaXZLQkF3RkFiYnZibmhQeDY2Tmhvd0ZBWXdGQWFaSmc4d0ZBYXhLQkRadXJmL1JCNm1NeGIvU0NNd0ZBWXdGQWJ4UUIzK1JCNHdGQWIvUWh5NE9oKzRRaWZiTlJjd0ZBWXdGQVl3RkFiL1FSemROaGd3RkFZd0ZBYmF2N3YvVXk3b2FFNjhNQks1THhMZXdyL3IyTlhld0xzd0ZBYXhKdzR3RkFia1BSeTJQeVl3RkFheEtoTG0xdE13RkFhelBpUXdGQWFVR0FiL1FCcmZPeDNidnJ2L1ZDL21hRTR3RkFiUlBCcTZNUk84UXluZXc4RHAydGpmd2Iwd0ZBYng2ZWp1NStieTZ1bnM0dUg5L2YzNit2ci9Ha0hqQUFBQVluUlNUbE1BR3QrNjRybld1L2JvOGVBQTRJbkgzK0R3b043ajRlTGk0eFA5OU5mZzQrYisvdTlCL2VEczFNRDFtTzcrNFBIZzJNWGEzNDdnN3ZEaXpNTE40ZUcrUHY3aTVldnMvdjc5eXU3UzMvRFY3LzQ5OFl2MjRlSCs0dWZRM096dS92Nyt5MTNzUnF3QUFBRExTVVJCVkhqYVpjL1hEc0ZnR0lCaHREcnNobGl0bWsySXJiSEZxTDJwdlhmLys3OERQb2tqNytGejlxcFUvOVVYSklsaG1QYVRhUTZRUGF6MG1tKzVnd2tnb3ZjVjZHWnpkNUp0Q1F3Z3N4b0hPdkpPMTVrbGVSTEFuTWdIRklFU1VFUG1hd0I5bmdtZWxUdGlwd3dmQVNpbHhPTHlpVjVVVlV5VkFmYkcwY0NQSGlnK0dCa3pBRU5IUzBBc3RWRjZiYWNaSU96Z0xteHNIYnQyT2VjTmdKQzgzSkVSbWVQVVlxOEFSR2tKeDZYdEZzZGRkQlFnWkUyblBSNkNJQ1poYXdqQTRGYi9jaHYrMzk5a2ZSK01NTURHT1FBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246IDJweCBjZW50ZXI7fS5hY2VfZ3V0dGVyLWNlbGwuYWNlX3dhcm5pbmcge2JhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FNQUFBQW9MUTlUQUFBQW1WQk1WRVgvLy84QUFBRC8vLzhBQUFBQUFBQlBTemIvNXNBQUFBQi9ibEgvNzN6L3Vsa0FBQUFBQUFEODVwa0FBQUFBQUFBQ0FnUC92R3ovcmtEZXJHYkdyVjcvcGtRSUNBZi8vLy9lMElzQUFBRC9vRUQvcVR2aHJuVUFBQUQveUhEL25qY0FBQUR1djJyL256Ly9vVGovcDA2NG9HZi96SEFBQUFBOU5pci90RklBQUFEL3RsVGl1V2YvdGtJQUFBQ3luWEVBQUFBQUFBQXRJUlc3ekJwQkFBQUFNM1JTVGxNQUFCUjFtN1JYTzhMbjMxWjM2elQrbmVYZTVPem9vUkRmbitUWjRwM2gyaFRmNHQzazN1Y3lyTjFLNStYYWtzNTJTZnM5Q1hnckFBQUFqa2xFUVZSNDJvM1BiUStDSUJRRllFd2JvUGhTWWdvWXVuSXFxTG42L3o4dVlkSDhWbWRudTl2ejRXd1hnTi94VFBSRDIrc2dPY1pqc2dlL3doWFpnVWFZWXZUOFFudUphVXJqckhVUXJlR2N6dUVhZlFDTy9TSlR1ZlRicm9Xc1Bnc2xsVmhxM3dKRWsyalVTelgzQ1VFREpDODQ3MDdkalJjNU1UQVF4b0xndXBXUndXNlVCNWZTKytOVjhBYk9aZ25zQzdCcEVBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1wb3NpdGlvbjogMnB4IGNlbnRlcjt9LmFjZV9ndXR0ZXItY2VsbC5hY2VfaW5mbyB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQUFBQUFBNm1LQzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUFKMFVrNVRBQUIyazgwNEFBQUFQa2xFUVZRWTAyTmdJQjY4UXVPM3RpTHpuakF3cEtUZ055RGJNZWd3aXNDSFpVRVRVWlYwWnFPcXVCcFhqMnJ0bnBTSlQxQUVublJtTDJPZ0dnQUFJS2tSUWFwMmh0Z0FBQUFBU1VWT1JLNUNZSUk9Iik7YmFja2dyb3VuZC1wb3NpdGlvbjogMnB4IGNlbnRlcjt9LmFjZV9kYXJrIC5hY2VfZ3V0dGVyLWNlbGwuYWNlX2luZm8ge2JhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQkFNQUFBRHQzZUpTQUFBQUpGQk1WRVVBQUFDaG9hR0FnSUFxS2lxK3ZyNnRyYTFaV1ZtVWxKU2JtNXM4UER4dWJtNTZlbnJkZ3pnM0FBQUFBWFJTVGxNQVFPYllaZ0FBQUNsSlJFRlVlTnBqWU1BUGRzTVlIZWd5SlpGUUJsc1VsTUZWQ1dVWUtrQVpNeFpBR2R4bERNUUJBRytUQlA0QjZSeUpBQUFBQUVsRlRrU3VRbUNDIik7fS5hY2Vfc2Nyb2xsYmFyIHtjb250YWluOiBzdHJpY3Q7cG9zaXRpb246IGFic29sdXRlO3JpZ2h0OiAwO2JvdHRvbTogMDt6LWluZGV4OiA2O30uYWNlX3Njcm9sbGJhci1pbm5lciB7cG9zaXRpb246IGFic29sdXRlO2N1cnNvcjogdGV4dDtsZWZ0OiAwO3RvcDogMDt9LmFjZV9zY3JvbGxiYXItdntvdmVyZmxvdy14OiBoaWRkZW47b3ZlcmZsb3cteTogc2Nyb2xsO3RvcDogMDt9LmFjZV9zY3JvbGxiYXItaCB7b3ZlcmZsb3cteDogc2Nyb2xsO292ZXJmbG93LXk6IGhpZGRlbjtsZWZ0OiAwO30uYWNlX3ByaW50LW1hcmdpbiB7cG9zaXRpb246IGFic29sdXRlO2hlaWdodDogMTAwJTt9LmFjZV90ZXh0LWlucHV0IHtwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogMDt3aWR0aDogMC41ZW07aGVpZ2h0OiAxZW07b3BhY2l0eTogMDtiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDstbW96LWFwcGVhcmFuY2U6IG5vbmU7YXBwZWFyYW5jZTogbm9uZTtib3JkZXI6IG5vbmU7cmVzaXplOiBub25lO291dGxpbmU6IG5vbmU7b3ZlcmZsb3c6IGhpZGRlbjtmb250OiBpbmhlcml0O3BhZGRpbmc6IDAgMXB4O21hcmdpbjogMCAtMXB4O2NvbnRhaW46IHN0cmljdDstbXMtdXNlci1zZWxlY3Q6IHRleHQ7LW1vei11c2VyLXNlbGVjdDogdGV4dDstd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O3VzZXItc2VsZWN0OiB0ZXh0O3doaXRlLXNwYWNlOiBwcmUhaW1wb3J0YW50O30uYWNlX3RleHQtaW5wdXQuYWNlX2NvbXBvc2l0aW9uIHtiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtjb2xvcjogaW5oZXJpdDt6LWluZGV4OiAxMDAwO29wYWNpdHk6IDE7fS5hY2VfY29tcG9zaXRpb25fcGxhY2Vob2xkZXIgeyBjb2xvcjogdHJhbnNwYXJlbnQgfS5hY2VfY29tcG9zaXRpb25fbWFya2VyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkO3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3JkZXItcmFkaXVzOiAwO21hcmdpbi10b3A6IDFweDt9W2FjZV9ub2NvbnRleHQ9dHJ1ZV0ge3RyYW5zZm9ybTogbm9uZSFpbXBvcnRhbnQ7ZmlsdGVyOiBub25lIWltcG9ydGFudDtwZXJzcGVjdGl2ZTogbm9uZSFpbXBvcnRhbnQ7Y2xpcC1wYXRoOiBub25lIWltcG9ydGFudDttYXNrIDogbm9uZSFpbXBvcnRhbnQ7Y29udGFpbjogbm9uZSFpbXBvcnRhbnQ7cGVyc3BlY3RpdmU6IG5vbmUhaW1wb3J0YW50O21peC1ibGVuZC1tb2RlOiBpbml0aWFsIWltcG9ydGFudDt6LWluZGV4OiBhdXRvO30uYWNlX2xheWVyIHt6LWluZGV4OiAxO3Bvc2l0aW9uOiBhYnNvbHV0ZTtvdmVyZmxvdzogaGlkZGVuO3dvcmQtd3JhcDogbm9ybWFsO3doaXRlLXNwYWNlOiBwcmU7aGVpZ2h0OiAxMDAlO3dpZHRoOiAxMDAlO2JveC1zaXppbmc6IGJvcmRlci1ib3g7cG9pbnRlci1ldmVudHM6IG5vbmU7fS5hY2VfZ3V0dGVyLWxheWVyIHtwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IGF1dG87dGV4dC1hbGlnbjogcmlnaHQ7cG9pbnRlci1ldmVudHM6IGF1dG87aGVpZ2h0OiAxMDAwMDAwcHg7Y29udGFpbjogc3R5bGUgc2l6ZSBsYXlvdXQ7fS5hY2VfdGV4dC1sYXllciB7Zm9udDogaW5oZXJpdCAhaW1wb3J0YW50O3Bvc2l0aW9uOiBhYnNvbHV0ZTtoZWlnaHQ6IDEwMDAwMDBweDt3aWR0aDogMTAwMDAwMHB4O2NvbnRhaW46IHN0eWxlIHNpemUgbGF5b3V0O30uYWNlX3RleHQtbGF5ZXIgPiAuYWNlX2xpbmUsIC5hY2VfdGV4dC1sYXllciA+IC5hY2VfbGluZV9ncm91cCB7Y29udGFpbjogc3R5bGUgc2l6ZSBsYXlvdXQ7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtsZWZ0OiAwO3JpZ2h0OiAwO30uYWNlX2hpZHBpIC5hY2VfdGV4dC1sYXllciwuYWNlX2hpZHBpIC5hY2VfZ3V0dGVyLWxheWVyLC5hY2VfaGlkcGkgLmFjZV9jb250ZW50LC5hY2VfaGlkcGkgLmFjZV9ndXR0ZXIge2NvbnRhaW46IHN0cmljdDt3aWxsLWNoYW5nZTogdHJhbnNmb3JtO30uYWNlX2hpZHBpIC5hY2VfdGV4dC1sYXllciA+IC5hY2VfbGluZSwgLmFjZV9oaWRwaSAuYWNlX3RleHQtbGF5ZXIgPiAuYWNlX2xpbmVfZ3JvdXAge2NvbnRhaW46IHN0cmljdDt9LmFjZV9jamsge2Rpc3BsYXk6IGlubGluZS1ibG9jazt0ZXh0LWFsaWduOiBjZW50ZXI7fS5hY2VfY3Vyc29yLWxheWVyIHt6LWluZGV4OiA0O30uYWNlX2N1cnNvciB7ei1pbmRleDogNDtwb3NpdGlvbjogYWJzb2x1dGU7Ym94LXNpemluZzogYm9yZGVyLWJveDtib3JkZXItbGVmdDogMnB4IHNvbGlkO3RyYW5zZm9ybTogdHJhbnNsYXRleigwKTt9LmFjZV9tdWx0aXNlbGVjdCAuYWNlX2N1cnNvciB7Ym9yZGVyLWxlZnQtd2lkdGg6IDFweDt9LmFjZV9zbGltLWN1cnNvcnMgLmFjZV9jdXJzb3Ige2JvcmRlci1sZWZ0LXdpZHRoOiAxcHg7fS5hY2Vfb3ZlcndyaXRlLWN1cnNvcnMgLmFjZV9jdXJzb3Ige2JvcmRlci1sZWZ0LXdpZHRoOiAwO2JvcmRlci1ib3R0b206IDFweCBzb2xpZDt9LmFjZV9oaWRkZW4tY3Vyc29ycyAuYWNlX2N1cnNvciB7b3BhY2l0eTogMC4yO30uYWNlX3Ntb290aC1ibGlua2luZyAuYWNlX2N1cnNvciB7dHJhbnNpdGlvbjogb3BhY2l0eSAwLjE4czt9LmFjZV9hbmltYXRlLWJsaW5raW5nIC5hY2VfY3Vyc29yIHthbmltYXRpb24tZHVyYXRpb246IDEwMDBtczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwLWVuZDthbmltYXRpb24tbmFtZTogYmxpbmstYWNlLWFuaW1hdGU7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7fS5hY2VfYW5pbWF0ZS1ibGlua2luZy5hY2Vfc21vb3RoLWJsaW5raW5nIC5hY2VfY3Vyc29yIHthbmltYXRpb24tZHVyYXRpb246IDEwMDBtczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDthbmltYXRpb24tbmFtZTogYmxpbmstYWNlLWFuaW1hdGUtc21vb3RoO31Aa2V5ZnJhbWVzIGJsaW5rLWFjZS1hbmltYXRlIHtmcm9tLCB0byB7IG9wYWNpdHk6IDE7IH02MCUgeyBvcGFjaXR5OiAwOyB9fUBrZXlmcmFtZXMgYmxpbmstYWNlLWFuaW1hdGUtc21vb3RoIHtmcm9tLCB0byB7IG9wYWNpdHk6IDE7IH00NSUgeyBvcGFjaXR5OiAxOyB9NjAlIHsgb3BhY2l0eTogMDsgfTg1JSB7IG9wYWNpdHk6IDA7IH19LmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwLCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0YWNrIHtwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogMzt9LmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24ge3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiA1O30uYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQge3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiA2O30uYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZS1saW5lIHtwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogMjt9LmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZC13b3JkIHtwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogNDtib3gtc2l6aW5nOiBib3JkZXItYm94O30uYWNlX2xpbmUgLmFjZV9mb2xkIHtib3gtc2l6aW5nOiBib3JkZXItYm94O2Rpc3BsYXk6IGlubGluZS1ibG9jaztoZWlnaHQ6IDExcHg7bWFyZ2luLXRvcDogLTJweDt2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJFQUFBQUpDQVlBQUFEVTZNY01BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUpwSlJFRlVlTnBpL1AvL1B3T2xnQVhHWUdSa2xBVlNva0Q4R21qd1kxd2FzS2xqUXBZQUN0cENGZUFEY0hWUWZReU1RQXd6d0FaSTN3Skt2Q0xrZktCYU1TQ2xCbFI3Qk9RaWtDRkdRRUVySUgwVnFrYWJpR0NBcXdVYWRBelpKUnhRci8wZ3dpWElhbDh6UVFQbk5WVGdKMVRkYXdMMFQ1Z0JJUDFNVUpOaEJ2MkhLb1FISGpxTnJBNFdPNHpZMGdseU5LTFQyS0lmSU1BQVFzZGdHaVh2Z25ZQUFBQUFTVVZPUks1Q1lJST0iKSx1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBM0NBWUFBQUROTmlBNUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBQ0pKUkVGVWVOcGkrUC8vZnhnVEF3UERCeER4RDA3OFJTWCtZZUV5REZNQ0lNQUFJM0lObVhpd2YyWUFBQUFBU1VWT1JLNUNZSUk9Iik7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdCwgcmVwZWF0LXg7YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlciwgdG9wIGxlZnQ7Y29sb3I6IHRyYW5zcGFyZW50O2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrO2JvcmRlci1yYWRpdXM6IDJweDtjdXJzb3I6IHBvaW50ZXI7cG9pbnRlci1ldmVudHM6IGF1dG87fS5hY2VfZGFyayAuYWNlX2ZvbGQge30uYWNlX2ZvbGQ6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkVBQUFBSkNBWUFBQURVNk1jTUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSnBKUkVGVWVOcGkvUC8vUHdPbGdBWEdZR1JrbEFWU29rRDhHbWp3WTF3YXNLbGpRcFlBQ3RwQ0ZlQURjSFZRZlF5TVFBd3p3QVpJM3dKS3ZDTGtmS0JhTVNDbEJsUjdCT1Fpa0NGR1FFRXJJSDBWcWthYmlHQ0Fxd1VhZEF6WkpSeFFyLzBnd2lYSWFsOHpRUVBuTlZUZ0oxVGRhd0wwVDVnQklQMU1VSk5oQnYySEtvUUhIanFOckE0V080elkwZ2x5TktMVDJLSWZJTUFBUXNkZ0dpWHZnbllBQUFBQVNVVk9SSzVDWUlJPSIpLHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUEzQ0FZQUFBRE5OaUE1QUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFDQkpSRUZVZU5waStQLy9mejRUQXdQRFp4RHhENVg0aTVmTE1Fd0pnQUFEQUVQVkRiak53ODdaQUFBQUFFbEZUa1N1UW1DQyIpO30uYWNlX3Rvb2x0aXAge2JhY2tncm91bmQtY29sb3I6ICNGRkY7YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMCwgMCwgMCwgMC4xKSk7Ym9yZGVyOiAxcHggc29saWQgZ3JheTtib3JkZXItcmFkaXVzOiAxcHg7Ym94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtjb2xvcjogYmxhY2s7bWF4LXdpZHRoOiAxMDAlO3BhZGRpbmc6IDNweCA0cHg7cG9zaXRpb246IGZpeGVkO3otaW5kZXg6IDk5OTk5OTtib3gtc2l6aW5nOiBib3JkZXItYm94O2N1cnNvcjogZGVmYXVsdDt3aGl0ZS1zcGFjZTogcHJlO3dvcmQtd3JhcDogYnJlYWstd29yZDtsaW5lLWhlaWdodDogbm9ybWFsO2ZvbnQtc3R5bGU6IG5vcm1hbDtmb250LXdlaWdodDogbm9ybWFsO2xldHRlci1zcGFjaW5nOiBub3JtYWw7cG9pbnRlci1ldmVudHM6IG5vbmU7fS5hY2VfZm9sZGluZy1lbmFibGVkID4gLmFjZV9ndXR0ZXItY2VsbCB7cGFkZGluZy1yaWdodDogMTNweDt9LmFjZV9mb2xkLXdpZGdldCB7Ym94LXNpemluZzogYm9yZGVyLWJveDttYXJnaW46IDAgLTEycHggMCAxcHg7ZGlzcGxheTogbm9uZTt3aWR0aDogMTFweDt2ZXJ0aWNhbC1hbGlnbjogdG9wO2JhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBVUFBQUFGQ0FZQUFBQ05ieWJsQUFBQU5FbEVRVlI0Mm1XS3NRMEFNQXpDOGl4TGxyelFqem1CaUVqcDBBNld3QkNTUGdLQVhvTGtxU290N25OM3lNd1I3cFozMk56cEtrVm9EQlV4S0FBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtib3JkZXItcmFkaXVzOiAzcHg7Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Y3Vyc29yOiBwb2ludGVyO30uYWNlX2ZvbGRpbmctZW5hYmxlZCAuYWNlX2ZvbGQtd2lkZ2V0IHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7ICAgfS5hY2VfZm9sZC13aWRnZXQuYWNlX2VuZCB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFVQUFBQUZDQVlBQUFDTmJ5YmxBQUFBTkVsRVFWUjQybTNId1FrQU1BaEQwWXpzUmNoRktJN3NBaWtlV2tyeHdTY0VCMG5oNWU3S1RQV2ltWmtpNHRZZlZiWCtNTmw0cHlaWGVqVU8xUUFBQUFCSlJVNUVya0pnZ2c9PSIpO30uYWNlX2ZvbGQtd2lkZ2V0LmFjZV9jbG9zZWQge2JhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBTUFBQUFHQ0FZQUFBQUc1U1FNQUFBQU9VbEVRVlI0MmpYS3dRa0FNQWdEd0t3cUtENEV3UTI2c1NPa1ZXamdJSUhBelBpQ2dhcWlxbkpIWm5LSUNCRVJITjE5NE81Yjl2Ykx1QVZSTCtsMFlXblpBQUFBQUVsRlRrU3VRbUNDWEE9PSIpO30uYWNlX2ZvbGQtd2lkZ2V0OmhvdmVyIHtib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMyk7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO2JveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7fS5hY2VfZm9sZC13aWRnZXQ6YWN0aXZlIHtib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNCk7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO30uYWNlX2RhcmsgLmFjZV9mb2xkLXdpZGdldCB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFVQUFBQUZDQVlBQUFDTmJ5YmxBQUFBSGtsRVFWUUlXMlA0Ly84L0F6b0dFUTdvR0NhTExBaFdpU3dCMTQ2QkFRQ1NUUFlvY3FUMEFBQUFBRWxGVGtTdVFtQ0MiKTt9LmFjZV9kYXJrIC5hY2VfZm9sZC13aWRnZXQuYWNlX2VuZCB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFVQUFBQUZDQVlBQUFDTmJ5YmxBQUFBSDBsRVFWUUlXMlA0Ly84L0F4UTd3TmpJQWpETWdDNEF4akNWS0JpcklBQUYwa3oycmxoeHBBQUFBQUJKUlU1RXJrSmdnZz09Iik7fS5hY2VfZGFyayAuYWNlX2ZvbGQtd2lkZ2V0LmFjZV9jbG9zZWQge2JhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBTUFBQUFGQ0FZQUFBQ0FjVmFpQUFBQUhFbEVRVlFJVzJQNC8vKy9BeEF6Z0RBRGxPT0F6bkhBS2dQV0F3QVJqaThVSURUZlFRQUFBQUJKUlU1RXJrSmdnZz09Iik7fS5hY2VfZGFyayAuYWNlX2ZvbGQtd2lkZ2V0OmhvdmVyIHtib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTt9LmFjZV9kYXJrIC5hY2VfZm9sZC13aWRnZXQ6YWN0aXZlIHtib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO30uYWNlX2lubGluZV9idXR0b24ge2JvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7bWFyZ2luOiAtMXB4IDhweDtwYWRkaW5nOiAwIDVweDtwb2ludGVyLWV2ZW50czogYXV0bztjdXJzb3I6IHBvaW50ZXI7fS5hY2VfaW5saW5lX2J1dHRvbjpob3ZlciB7Ym9yZGVyLWNvbG9yOiBncmF5O2JhY2tncm91bmQ6IHJnYmEoMjAwLDIwMCwyMDAsMC4yKTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cG9pbnRlci1ldmVudHM6IGF1dG87fS5hY2VfZm9sZC13aWRnZXQuYWNlX2ludmFsaWQge2JhY2tncm91bmQtY29sb3I6ICNGRkI0QjQ7Ym9yZGVyLWNvbG9yOiAjREU1NTU1O30uYWNlX2ZhZGUtZm9sZC13aWRnZXRzIC5hY2VfZm9sZC13aWRnZXQge3RyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlIDAuMDVzO29wYWNpdHk6IDA7fS5hY2VfZmFkZS1mb2xkLXdpZGdldHM6aG92ZXIgLmFjZV9mb2xkLXdpZGdldCB7dHJhbnNpdGlvbjogb3BhY2l0eSAwLjA1cyBlYXNlIDAuMDVzO29wYWNpdHk6MTt9LmFjZV91bmRlcmxpbmUge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO30uYWNlX2JvbGQge2ZvbnQtd2VpZ2h0OiBib2xkO30uYWNlX25vYm9sZCAuYWNlX2JvbGQge2ZvbnQtd2VpZ2h0OiBub3JtYWw7fS5hY2VfaXRhbGljIHtmb250LXN0eWxlOiBpdGFsaWM7fS5hY2VfZXJyb3ItbWFya2VyIHtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMCwgMCwwLjIpO3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiA5O30uYWNlX2hpZ2hsaWdodC1tYXJrZXIge2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDAsMC4yKTtwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogODt9LmFjZV9tb2JpbGUtbWVudSB7cG9zaXRpb246IGFic29sdXRlO2xpbmUtaGVpZ2h0OiAxLjU7Ym9yZGVyLXJhZGl1czogNHB4Oy1tcy11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7dXNlci1zZWxlY3Q6IG5vbmU7YmFja2dyb3VuZDogd2hpdGU7Ym94LXNoYWRvdzogMXB4IDNweCAycHggZ3JleTtib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjO2NvbG9yOiBibGFjazt9LmFjZV9kYXJrID4gLmFjZV9tb2JpbGUtbWVudSB7YmFja2dyb3VuZDogIzMzMztjb2xvcjogI2NjYztib3gtc2hhZG93OiAxcHggM3B4IDJweCBncmV5O2JvcmRlcjogMXB4IHNvbGlkICM0NDQ7fS5hY2VfbW9iaWxlLWJ1dHRvbiB7cGFkZGluZzogMnB4O2N1cnNvcjogcG9pbnRlcjtvdmVyZmxvdzogaGlkZGVuO30uYWNlX21vYmlsZS1idXR0b246aG92ZXIge2JhY2tncm91bmQtY29sb3I6ICNlZWU7b3BhY2l0eToxO30uYWNlX21vYmlsZS1idXR0b246YWN0aXZlIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO30nLG09ZSgiLi9saWIvdXNlcmFnZW50IiksZz1tLmlzSUU7aS5pbXBvcnRDc3NTdHJpbmcodiwiYWNlX2VkaXRvci5jc3MiKTt2YXIgeT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7dGhpcy5jb250YWluZXI9ZXx8aS5jcmVhdGVFbGVtZW50KCJkaXYiKSxpLmFkZENzc0NsYXNzKHRoaXMuY29udGFpbmVyLCJhY2VfZWRpdG9yIiksaS5ISV9EUEkmJmkuYWRkQ3NzQ2xhc3ModGhpcy5jb250YWluZXIsImFjZV9oaWRwaSIpLHRoaXMuc2V0VGhlbWUodCksdGhpcy4kZ3V0dGVyPWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy4kZ3V0dGVyLmNsYXNzTmFtZT0iYWNlX2d1dHRlciIsdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy4kZ3V0dGVyKSx0aGlzLiRndXR0ZXIuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsITApLHRoaXMuc2Nyb2xsZXI9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNjcm9sbGVyLmNsYXNzTmFtZT0iYWNlX3Njcm9sbGVyIix0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGVyKSx0aGlzLmNvbnRlbnQ9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRlbnQuY2xhc3NOYW1lPSJhY2VfY29udGVudCIsdGhpcy5zY3JvbGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnQpLHRoaXMuJGd1dHRlckxheWVyPW5ldyBvKHRoaXMuJGd1dHRlciksdGhpcy4kZ3V0dGVyTGF5ZXIub24oImNoYW5nZUd1dHRlcldpZHRoIix0aGlzLm9uR3V0dGVyUmVzaXplLmJpbmQodGhpcykpLHRoaXMuJG1hcmtlckJhY2s9bmV3IHUodGhpcy5jb250ZW50KTt2YXIgcj10aGlzLiR0ZXh0TGF5ZXI9bmV3IGEodGhpcy5jb250ZW50KTt0aGlzLmNhbnZhcz1yLmVsZW1lbnQsdGhpcy4kbWFya2VyRnJvbnQ9bmV3IHUodGhpcy5jb250ZW50KSx0aGlzLiRjdXJzb3JMYXllcj1uZXcgZih0aGlzLmNvbnRlbnQpLHRoaXMuJGhvcml6U2Nyb2xsPSExLHRoaXMuJHZTY3JvbGw9ITEsdGhpcy5zY3JvbGxCYXI9dGhpcy5zY3JvbGxCYXJWPW5ldyBjKHRoaXMuY29udGFpbmVyLHRoaXMpLHRoaXMuc2Nyb2xsQmFySD1uZXcgbCh0aGlzLmNvbnRhaW5lcix0aGlzKSx0aGlzLnNjcm9sbEJhclYuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixmdW5jdGlvbihlKXtuLiRzY3JvbGxBbmltYXRpb258fG4uc2Vzc2lvbi5zZXRTY3JvbGxUb3AoZS5kYXRhLW4uc2Nyb2xsTWFyZ2luLnRvcCl9KSx0aGlzLnNjcm9sbEJhckguYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixmdW5jdGlvbihlKXtuLiRzY3JvbGxBbmltYXRpb258fG4uc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KGUuZGF0YS1uLnNjcm9sbE1hcmdpbi5sZWZ0KX0pLHRoaXMuc2Nyb2xsVG9wPTAsdGhpcy5zY3JvbGxMZWZ0PTAsdGhpcy5jdXJzb3JQb3M9e3JvdzowLGNvbHVtbjowfSx0aGlzLiRmb250TWV0cmljcz1uZXcgcCh0aGlzLmNvbnRhaW5lciksdGhpcy4kdGV4dExheWVyLiRzZXRGb250TWV0cmljcyh0aGlzLiRmb250TWV0cmljcyksdGhpcy4kdGV4dExheWVyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZUNoYXJhY3RlclNpemUiLGZ1bmN0aW9uKGUpe24udXBkYXRlQ2hhcmFjdGVyU2l6ZSgpLG4ub25SZXNpemUoITAsbi5ndXR0ZXJXaWR0aCxuLiRzaXplLndpZHRoLG4uJHNpemUuaGVpZ2h0KSxuLl9zaWduYWwoImNoYW5nZUNoYXJhY3RlclNpemUiLGUpfSksdGhpcy4kc2l6ZT17d2lkdGg6MCxoZWlnaHQ6MCxzY3JvbGxlckhlaWdodDowLHNjcm9sbGVyV2lkdGg6MCwkZGlydHk6ITB9LHRoaXMubGF5ZXJDb25maWc9e3dpZHRoOjEscGFkZGluZzowLGZpcnN0Um93OjAsZmlyc3RSb3dTY3JlZW46MCxsYXN0Um93OjAsbGluZUhlaWdodDowLGNoYXJhY3RlcldpZHRoOjAsbWluSGVpZ2h0OjEsbWF4SGVpZ2h0OjEsb2Zmc2V0OjAsaGVpZ2h0OjEsZ3V0dGVyT2Zmc2V0OjF9LHRoaXMuc2Nyb2xsTWFyZ2luPXtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MCx2OjAsaDowfSx0aGlzLm1hcmdpbj17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjAsdjowLGg6MH0sdGhpcy4ka2VlcFRleHRBcmVhQXRDdXJzb3I9IW0uaXNJT1MsdGhpcy4kbG9vcD1uZXcgaCh0aGlzLiRyZW5kZXJDaGFuZ2VzLmJpbmQodGhpcyksdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKSx0aGlzLnVwZGF0ZUNoYXJhY3RlclNpemUoKSx0aGlzLnNldFBhZGRpbmcoNCkscy5yZXNldE9wdGlvbnModGhpcykscy5fc2lnbmFsKCJyZW5kZXJlciIsdGhpcyl9OyhmdW5jdGlvbigpe3RoaXMuQ0hBTkdFX0NVUlNPUj0xLHRoaXMuQ0hBTkdFX01BUktFUj0yLHRoaXMuQ0hBTkdFX0dVVFRFUj00LHRoaXMuQ0hBTkdFX1NDUk9MTD04LHRoaXMuQ0hBTkdFX0xJTkVTPTE2LHRoaXMuQ0hBTkdFX1RFWFQ9MzIsdGhpcy5DSEFOR0VfU0laRT02NCx0aGlzLkNIQU5HRV9NQVJLRVJfQkFDSz0xMjgsdGhpcy5DSEFOR0VfTUFSS0VSX0ZST05UPTI1Nix0aGlzLkNIQU5HRV9GVUxMPTUxMix0aGlzLkNIQU5HRV9IX1NDUk9MTD0xMDI0LHIuaW1wbGVtZW50KHRoaXMsZCksdGhpcy51cGRhdGVDaGFyYWN0ZXJTaXplPWZ1bmN0aW9uKCl7dGhpcy4kdGV4dExheWVyLmFsbG93Qm9sZEZvbnRzIT10aGlzLiRhbGxvd0JvbGRGb250cyYmKHRoaXMuJGFsbG93Qm9sZEZvbnRzPXRoaXMuJHRleHRMYXllci5hbGxvd0JvbGRGb250cyx0aGlzLnNldFN0eWxlKCJhY2Vfbm9ib2xkIiwhdGhpcy4kYWxsb3dCb2xkRm9udHMpKSx0aGlzLmxheWVyQ29uZmlnLmNoYXJhY3RlcldpZHRoPXRoaXMuY2hhcmFjdGVyV2lkdGg9dGhpcy4kdGV4dExheWVyLmdldENoYXJhY3RlcldpZHRoKCksdGhpcy5sYXllckNvbmZpZy5saW5lSGVpZ2h0PXRoaXMubGluZUhlaWdodD10aGlzLiR0ZXh0TGF5ZXIuZ2V0TGluZUhlaWdodCgpLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCksaS5zZXRTdHlsZSh0aGlzLnNjcm9sbGVyLnN0eWxlLCJsaW5lLWhlaWdodCIsdGhpcy5saW5lSGVpZ2h0KyJweCIpfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24uZG9jLm9mZigiY2hhbmdlTmV3TGluZU1vZGUiLHRoaXMub25DaGFuZ2VOZXdMaW5lTW9kZSksdGhpcy5zZXNzaW9uPWUsZSYmdGhpcy5zY3JvbGxNYXJnaW4udG9wJiZlLmdldFNjcm9sbFRvcCgpPD0wJiZlLnNldFNjcm9sbFRvcCgtdGhpcy5zY3JvbGxNYXJnaW4udG9wKSx0aGlzLiRjdXJzb3JMYXllci5zZXRTZXNzaW9uKGUpLHRoaXMuJG1hcmtlckJhY2suc2V0U2Vzc2lvbihlKSx0aGlzLiRtYXJrZXJGcm9udC5zZXRTZXNzaW9uKGUpLHRoaXMuJGd1dHRlckxheWVyLnNldFNlc3Npb24oZSksdGhpcy4kdGV4dExheWVyLnNldFNlc3Npb24oZSk7aWYoIWUpcmV0dXJuO3RoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfRlVMTCksdGhpcy5zZXNzaW9uLiRzZXRGb250TWV0cmljcyh0aGlzLiRmb250TWV0cmljcyksdGhpcy5zY3JvbGxCYXJILnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxCYXJWLnNjcm9sbFRvcD1udWxsLHRoaXMub25DaGFuZ2VOZXdMaW5lTW9kZT10aGlzLm9uQ2hhbmdlTmV3TGluZU1vZGUuYmluZCh0aGlzKSx0aGlzLm9uQ2hhbmdlTmV3TGluZU1vZGUoKSx0aGlzLnNlc3Npb24uZG9jLm9uKCJjaGFuZ2VOZXdMaW5lTW9kZSIsdGhpcy5vbkNoYW5nZU5ld0xpbmVNb2RlKX0sdGhpcy51cGRhdGVMaW5lcz1mdW5jdGlvbihlLHQsbil7dD09PXVuZGVmaW5lZCYmKHQ9SW5maW5pdHkpLHRoaXMuJGNoYW5nZWRMaW5lcz8odGhpcy4kY2hhbmdlZExpbmVzLmZpcnN0Um93PmUmJih0aGlzLiRjaGFuZ2VkTGluZXMuZmlyc3RSb3c9ZSksdGhpcy4kY2hhbmdlZExpbmVzLmxhc3RSb3c8dCYmKHRoaXMuJGNoYW5nZWRMaW5lcy5sYXN0Um93PXQpKTp0aGlzLiRjaGFuZ2VkTGluZXM9e2ZpcnN0Um93OmUsbGFzdFJvdzp0fTtpZih0aGlzLiRjaGFuZ2VkTGluZXMubGFzdFJvdzx0aGlzLmxheWVyQ29uZmlnLmZpcnN0Um93KXtpZighbilyZXR1cm47dGhpcy4kY2hhbmdlZExpbmVzLmxhc3RSb3c9dGhpcy5sYXllckNvbmZpZy5sYXN0Um93fWlmKHRoaXMuJGNoYW5nZWRMaW5lcy5maXJzdFJvdz50aGlzLmxheWVyQ29uZmlnLmxhc3RSb3cpcmV0dXJuO3RoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfTElORVMpfSx0aGlzLm9uQ2hhbmdlTmV3TGluZU1vZGU9ZnVuY3Rpb24oKXt0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1RFWFQpLHRoaXMuJHRleHRMYXllci4kdXBkYXRlRW9sQ2hhcigpLHRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuc2V0RW9sQ2hhcih0aGlzLiR0ZXh0TGF5ZXIuRU9MX0NIQVIpfSx0aGlzLm9uQ2hhbmdlVGFiU2l6ZT1mdW5jdGlvbigpe3RoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfVEVYVHx0aGlzLkNIQU5HRV9NQVJLRVIpLHRoaXMuJHRleHRMYXllci5vbkNoYW5nZVRhYlNpemUoKX0sdGhpcy51cGRhdGVUZXh0PWZ1bmN0aW9uKCl7dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9URVhUKX0sdGhpcy51cGRhdGVGdWxsPWZ1bmN0aW9uKGUpe2U/dGhpcy4kcmVuZGVyQ2hhbmdlcyh0aGlzLkNIQU5HRV9GVUxMLCEwKTp0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0ZVTEwpfSx0aGlzLnVwZGF0ZUZvbnRTaXplPWZ1bmN0aW9uKCl7dGhpcy4kdGV4dExheWVyLmNoZWNrRm9yU2l6ZUNoYW5nZXMoKX0sdGhpcy4kY2hhbmdlcz0wLHRoaXMuJHVwZGF0ZVNpemVBc3luYz1mdW5jdGlvbigpe3RoaXMuJGxvb3AucGVuZGluZz90aGlzLiRzaXplLiRkaXJ0eT0hMDp0aGlzLm9uUmVzaXplKCl9LHRoaXMub25SZXNpemU9ZnVuY3Rpb24oZSx0LG4scil7aWYodGhpcy5yZXNpemluZz4yKXJldHVybjt0aGlzLnJlc2l6aW5nPjA/dGhpcy5yZXNpemluZysrOnRoaXMucmVzaXppbmc9ZT8xOjA7dmFyIGk9dGhpcy5jb250YWluZXI7cnx8KHI9aS5jbGllbnRIZWlnaHR8fGkuc2Nyb2xsSGVpZ2h0KSxufHwobj1pLmNsaWVudFdpZHRofHxpLnNjcm9sbFdpZHRoKTt2YXIgcz10aGlzLiR1cGRhdGVDYWNoZWRTaXplKGUsdCxuLHIpO2lmKCF0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0fHwhbiYmIXIpcmV0dXJuIHRoaXMucmVzaXppbmc9MDtlJiYodGhpcy4kZ3V0dGVyTGF5ZXIuJHBhZGRpbmc9bnVsbCksZT90aGlzLiRyZW5kZXJDaGFuZ2VzKHN8dGhpcy4kY2hhbmdlcywhMCk6dGhpcy4kbG9vcC5zY2hlZHVsZShzfHRoaXMuJGNoYW5nZXMpLHRoaXMucmVzaXppbmcmJih0aGlzLnJlc2l6aW5nPTApLHRoaXMuc2Nyb2xsQmFyVi5zY3JvbGxMZWZ0PXRoaXMuc2Nyb2xsQmFyVi5zY3JvbGxUb3A9bnVsbH0sdGhpcy4kdXBkYXRlQ2FjaGVkU2l6ZT1mdW5jdGlvbihlLHQsbixyKXtyLT10aGlzLiRleHRyYUhlaWdodHx8MDt2YXIgcz0wLG89dGhpcy4kc2l6ZSx1PXt3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxzY3JvbGxlckhlaWdodDpvLnNjcm9sbGVySGVpZ2h0LHNjcm9sbGVyV2lkdGg6by5zY3JvbGxlcldpZHRofTtyJiYoZXx8by5oZWlnaHQhPXIpJiYoby5oZWlnaHQ9cixzfD10aGlzLkNIQU5HRV9TSVpFLG8uc2Nyb2xsZXJIZWlnaHQ9by5oZWlnaHQsdGhpcy4kaG9yaXpTY3JvbGwmJihvLnNjcm9sbGVySGVpZ2h0LT10aGlzLnNjcm9sbEJhckguZ2V0SGVpZ2h0KCkpLHRoaXMuc2Nyb2xsQmFyVi5lbGVtZW50LnN0eWxlLmJvdHRvbT10aGlzLnNjcm9sbEJhckguZ2V0SGVpZ2h0KCkrInB4IixzfD10aGlzLkNIQU5HRV9TQ1JPTEwpO2lmKG4mJihlfHxvLndpZHRoIT1uKSl7c3w9dGhpcy5DSEFOR0VfU0laRSxvLndpZHRoPW4sdD09bnVsbCYmKHQ9dGhpcy4kc2hvd0d1dHRlcj90aGlzLiRndXR0ZXIub2Zmc2V0V2lkdGg6MCksdGhpcy5ndXR0ZXJXaWR0aD10LGkuc2V0U3R5bGUodGhpcy5zY3JvbGxCYXJILmVsZW1lbnQuc3R5bGUsImxlZnQiLHQrInB4IiksaS5zZXRTdHlsZSh0aGlzLnNjcm9sbGVyLnN0eWxlLCJsZWZ0Iix0K3RoaXMubWFyZ2luLmxlZnQrInB4Iiksby5zY3JvbGxlcldpZHRoPU1hdGgubWF4KDAsbi10LXRoaXMuc2Nyb2xsQmFyVi5nZXRXaWR0aCgpLXRoaXMubWFyZ2luLmgpLGkuc2V0U3R5bGUodGhpcy4kZ3V0dGVyLnN0eWxlLCJsZWZ0Iix0aGlzLm1hcmdpbi5sZWZ0KyJweCIpO3ZhciBhPXRoaXMuc2Nyb2xsQmFyVi5nZXRXaWR0aCgpKyJweCI7aS5zZXRTdHlsZSh0aGlzLnNjcm9sbEJhckguZWxlbWVudC5zdHlsZSwicmlnaHQiLGEpLGkuc2V0U3R5bGUodGhpcy5zY3JvbGxlci5zdHlsZSwicmlnaHQiLGEpLGkuc2V0U3R5bGUodGhpcy5zY3JvbGxlci5zdHlsZSwiYm90dG9tIix0aGlzLnNjcm9sbEJhckguZ2V0SGVpZ2h0KCkpO2lmKHRoaXMuc2Vzc2lvbiYmdGhpcy5zZXNzaW9uLmdldFVzZVdyYXBNb2RlKCkmJnRoaXMuYWRqdXN0V3JhcExpbWl0KCl8fGUpc3w9dGhpcy5DSEFOR0VfRlVMTH1yZXR1cm4gby4kZGlydHk9IW58fCFyLHMmJnRoaXMuX3NpZ25hbCgicmVzaXplIix1KSxzfSx0aGlzLm9uR3V0dGVyUmVzaXplPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJHNob3dHdXR0ZXI/ZTowO3QhPXRoaXMuZ3V0dGVyV2lkdGgmJih0aGlzLiRjaGFuZ2VzfD10aGlzLiR1cGRhdGVDYWNoZWRTaXplKCEwLHQsdGhpcy4kc2l6ZS53aWR0aCx0aGlzLiRzaXplLmhlaWdodCkpLHRoaXMuc2Vzc2lvbi5nZXRVc2VXcmFwTW9kZSgpJiZ0aGlzLmFkanVzdFdyYXBMaW1pdCgpP3RoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfRlVMTCk6dGhpcy4kc2l6ZS4kZGlydHk/dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKTp0aGlzLiRjb21wdXRlTGF5ZXJDb25maWcoKX0sdGhpcy5hZGp1c3RXcmFwTGltaXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzaXplLnNjcm9sbGVyV2lkdGgtdGhpcy4kcGFkZGluZyoyLHQ9TWF0aC5mbG9vcihlL3RoaXMuY2hhcmFjdGVyV2lkdGgpO3JldHVybiB0aGlzLnNlc3Npb24uYWRqdXN0V3JhcExpbWl0KHQsdGhpcy4kc2hvd1ByaW50TWFyZ2luJiZ0aGlzLiRwcmludE1hcmdpbkNvbHVtbil9LHRoaXMuc2V0QW5pbWF0ZWRTY3JvbGw9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oImFuaW1hdGVkU2Nyb2xsIixlKX0sdGhpcy5nZXRBbmltYXRlZFNjcm9sbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhbmltYXRlZFNjcm9sbH0sdGhpcy5zZXRTaG93SW52aXNpYmxlcz1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigic2hvd0ludmlzaWJsZXMiLGUpLHRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuc2V0U2hvd0ludmlzaWJsZXMoZSl9LHRoaXMuZ2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oInNob3dJbnZpc2libGVzIil9LHRoaXMuZ2V0RGlzcGxheUluZGVudEd1aWRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE9wdGlvbigiZGlzcGxheUluZGVudEd1aWRlcyIpfSx0aGlzLnNldERpc3BsYXlJbmRlbnRHdWlkZXM9ZnVuY3Rpb24oZSl7dGhpcy5zZXRPcHRpb24oImRpc3BsYXlJbmRlbnRHdWlkZXMiLGUpfSx0aGlzLnNldFNob3dQcmludE1hcmdpbj1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigic2hvd1ByaW50TWFyZ2luIixlKX0sdGhpcy5nZXRTaG93UHJpbnRNYXJnaW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oInNob3dQcmludE1hcmdpbiIpfSx0aGlzLnNldFByaW50TWFyZ2luQ29sdW1uPWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJwcmludE1hcmdpbkNvbHVtbiIsZSl9LHRoaXMuZ2V0UHJpbnRNYXJnaW5Db2x1bW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oInByaW50TWFyZ2luQ29sdW1uIil9LHRoaXMuZ2V0U2hvd0d1dHRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE9wdGlvbigic2hvd0d1dHRlciIpfSx0aGlzLnNldFNob3dHdXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0T3B0aW9uKCJzaG93R3V0dGVyIixlKX0sdGhpcy5nZXRGYWRlRm9sZFdpZGdldHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRPcHRpb24oImZhZGVGb2xkV2lkZ2V0cyIpfSx0aGlzLnNldEZhZGVGb2xkV2lkZ2V0cz1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigiZmFkZUZvbGRXaWRnZXRzIixlKX0sdGhpcy5zZXRIaWdobGlnaHRHdXR0ZXJMaW5lPWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJoaWdobGlnaHRHdXR0ZXJMaW5lIixlKX0sdGhpcy5nZXRIaWdobGlnaHRHdXR0ZXJMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKCJoaWdobGlnaHRHdXR0ZXJMaW5lIil9LHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHNob3dQcmludE1hcmdpbiYmIXRoaXMuJHByaW50TWFyZ2luRWwpcmV0dXJuO2lmKCF0aGlzLiRwcmludE1hcmdpbkVsKXt2YXIgZT1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJhY2VfbGF5ZXIgYWNlX3ByaW50LW1hcmdpbi1sYXllciIsdGhpcy4kcHJpbnRNYXJnaW5FbD1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuJHByaW50TWFyZ2luRWwuY2xhc3NOYW1lPSJhY2VfcHJpbnQtbWFyZ2luIixlLmFwcGVuZENoaWxkKHRoaXMuJHByaW50TWFyZ2luRWwpLHRoaXMuY29udGVudC5pbnNlcnRCZWZvcmUoZSx0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZCl9dmFyIHQ9dGhpcy4kcHJpbnRNYXJnaW5FbC5zdHlsZTt0LmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmNoYXJhY3RlcldpZHRoKnRoaXMuJHByaW50TWFyZ2luQ29sdW1uK3RoaXMuJHBhZGRpbmcpKyJweCIsdC52aXNpYmlsaXR5PXRoaXMuJHNob3dQcmludE1hcmdpbj8idmlzaWJsZSI6ImhpZGRlbiIsdGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24uJHdyYXA9PS0xJiZ0aGlzLmFkanVzdFdyYXBMaW1pdCgpfSx0aGlzLmdldENvbnRhaW5lckVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXJ9LHRoaXMuZ2V0TW91c2VFdmVudFRhcmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbGVyfSx0aGlzLmdldFRleHRBcmVhQ29udGFpbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyfSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcj1mdW5jdGlvbigpe2lmKHRoaXMuJGlzTW91c2VQcmVzc2VkKXJldHVybjt2YXIgZT10aGlzLnRleHRhcmVhLnN0eWxlLHQ9dGhpcy4kY29tcG9zaXRpb247aWYoIXRoaXMuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yJiYhdCl7aS50cmFuc2xhdGUodGhpcy50ZXh0YXJlYSwtMTAwLDApO3JldHVybn12YXIgbj10aGlzLiRjdXJzb3JMYXllci4kcGl4ZWxQb3M7aWYoIW4pcmV0dXJuO3QmJnQubWFya2VyUmFuZ2UmJihuPXRoaXMuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24odC5tYXJrZXJSYW5nZS5zdGFydCwhMCkpO3ZhciByPXRoaXMubGF5ZXJDb25maWcscz1uLnRvcCxvPW4ubGVmdDtzLT1yLm9mZnNldDt2YXIgdT10JiZ0LnVzZVRleHRhcmVhRm9ySU1FP3RoaXMubGluZUhlaWdodDpnPzA6MTtpZihzPDB8fHM+ci5oZWlnaHQtdSl7aS50cmFuc2xhdGUodGhpcy50ZXh0YXJlYSwwLDApO3JldHVybn12YXIgYT0xLGY9dGhpcy4kc2l6ZS5oZWlnaHQtdTtpZighdClzKz10aGlzLmxpbmVIZWlnaHQ7ZWxzZSBpZih0LnVzZVRleHRhcmVhRm9ySU1FKXt2YXIgbD10aGlzLnRleHRhcmVhLnZhbHVlO2E9dGhpcy5jaGFyYWN0ZXJXaWR0aCp0aGlzLnNlc3Npb24uJGdldFN0cmluZ1NjcmVlbldpZHRoKGwpWzBdLHUrPTJ9ZWxzZSBzKz10aGlzLmxpbmVIZWlnaHQrMjtvLT10aGlzLnNjcm9sbExlZnQsbz50aGlzLiRzaXplLnNjcm9sbGVyV2lkdGgtYSYmKG89dGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoLWEpLG8rPXRoaXMuZ3V0dGVyV2lkdGgrdGhpcy5tYXJnaW4ubGVmdCxpLnNldFN0eWxlKGUsImhlaWdodCIsdSsicHgiKSxpLnNldFN0eWxlKGUsIndpZHRoIixhKyJweCIpLGkudHJhbnNsYXRlKHRoaXMudGV4dGFyZWEsTWF0aC5taW4obyx0aGlzLiRzaXplLnNjcm9sbGVyV2lkdGgtYSksTWF0aC5taW4ocyxmKSl9LHRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF5ZXJDb25maWcuZmlyc3RSb3d9LHRoaXMuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXllckNvbmZpZy5maXJzdFJvdysodGhpcy5sYXllckNvbmZpZy5vZmZzZXQ9PT0wPzA6MSl9LHRoaXMuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGF5ZXJDb25maWcsdD1lLmxhc3RSb3csbj10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblJvdyh0LDApKmUubGluZUhlaWdodDtyZXR1cm4gbi10aGlzLnNlc3Npb24uZ2V0U2Nyb2xsVG9wKCk+ZS5oZWlnaHQtZS5saW5lSGVpZ2h0P3QtMTp0fSx0aGlzLmdldExhc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF5ZXJDb25maWcubGFzdFJvd30sdGhpcy4kcGFkZGluZz1udWxsLHRoaXMuc2V0UGFkZGluZz1mdW5jdGlvbihlKXt0aGlzLiRwYWRkaW5nPWUsdGhpcy4kdGV4dExheWVyLnNldFBhZGRpbmcoZSksdGhpcy4kY3Vyc29yTGF5ZXIuc2V0UGFkZGluZyhlKSx0aGlzLiRtYXJrZXJGcm9udC5zZXRQYWRkaW5nKGUpLHRoaXMuJG1hcmtlckJhY2suc2V0UGFkZGluZyhlKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0ZVTEwpLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LHRoaXMuc2V0U2Nyb2xsTWFyZ2luPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuc2Nyb2xsTWFyZ2luO2kudG9wPWV8MCxpLmJvdHRvbT10fDAsaS5yaWdodD1yfDAsaS5sZWZ0PW58MCxpLnY9aS50b3AraS5ib3R0b20saS5oPWkubGVmdCtpLnJpZ2h0LGkudG9wJiZ0aGlzLnNjcm9sbFRvcDw9MCYmdGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKC1pLnRvcCksdGhpcy51cGRhdGVGdWxsKCl9LHRoaXMuc2V0TWFyZ2luPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMubWFyZ2luO2kudG9wPWV8MCxpLmJvdHRvbT10fDAsaS5yaWdodD1yfDAsaS5sZWZ0PW58MCxpLnY9aS50b3AraS5ib3R0b20saS5oPWkubGVmdCtpLnJpZ2h0LHRoaXMuJHVwZGF0ZUNhY2hlZFNpemUoITAsdGhpcy5ndXR0ZXJXaWR0aCx0aGlzLiRzaXplLndpZHRoLHRoaXMuJHNpemUuaGVpZ2h0KSx0aGlzLnVwZGF0ZUZ1bGwoKX0sdGhpcy5nZXRIU2Nyb2xsQmFyQWx3YXlzVmlzaWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRoU2Nyb2xsQmFyQWx3YXlzVmlzaWJsZX0sdGhpcy5zZXRIU2Nyb2xsQmFyQWx3YXlzVmlzaWJsZT1mdW5jdGlvbihlKXt0aGlzLnNldE9wdGlvbigiaFNjcm9sbEJhckFsd2F5c1Zpc2libGUiLGUpfSx0aGlzLmdldFZTY3JvbGxCYXJBbHdheXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZTY3JvbGxCYXJBbHdheXNWaXNpYmxlfSx0aGlzLnNldFZTY3JvbGxCYXJBbHdheXNWaXNpYmxlPWZ1bmN0aW9uKGUpe3RoaXMuc2V0T3B0aW9uKCJ2U2Nyb2xsQmFyQWx3YXlzVmlzaWJsZSIsZSl9LHRoaXMuJHVwZGF0ZVNjcm9sbEJhclY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxheWVyQ29uZmlnLm1heEhlaWdodCx0PXRoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQ7IXRoaXMuJG1heExpbmVzJiZ0aGlzLiRzY3JvbGxQYXN0RW5kJiYoZS09KHQtdGhpcy5saW5lSGVpZ2h0KSp0aGlzLiRzY3JvbGxQYXN0RW5kLHRoaXMuc2Nyb2xsVG9wPmUtdCYmKGU9dGhpcy5zY3JvbGxUb3ArdCx0aGlzLnNjcm9sbEJhclYuc2Nyb2xsVG9wPW51bGwpKSx0aGlzLnNjcm9sbEJhclYuc2V0U2Nyb2xsSGVpZ2h0KGUrdGhpcy5zY3JvbGxNYXJnaW4udiksdGhpcy5zY3JvbGxCYXJWLnNldFNjcm9sbFRvcCh0aGlzLnNjcm9sbFRvcCt0aGlzLnNjcm9sbE1hcmdpbi50b3ApfSx0aGlzLiR1cGRhdGVTY3JvbGxCYXJIPWZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxCYXJILnNldFNjcm9sbFdpZHRoKHRoaXMubGF5ZXJDb25maWcud2lkdGgrMip0aGlzLiRwYWRkaW5nK3RoaXMuc2Nyb2xsTWFyZ2luLmgpLHRoaXMuc2Nyb2xsQmFySC5zZXRTY3JvbGxMZWZ0KHRoaXMuc2Nyb2xsTGVmdCt0aGlzLnNjcm9sbE1hcmdpbi5sZWZ0KX0sdGhpcy4kZnJvemVuPSExLHRoaXMuZnJlZXplPWZ1bmN0aW9uKCl7dGhpcy4kZnJvemVuPSEwfSx0aGlzLnVuZnJlZXplPWZ1bmN0aW9uKCl7dGhpcy4kZnJvemVuPSExfSx0aGlzLiRyZW5kZXJDaGFuZ2VzPWZ1bmN0aW9uKGUsdCl7dGhpcy4kY2hhbmdlcyYmKGV8PXRoaXMuJGNoYW5nZXMsdGhpcy4kY2hhbmdlcz0wKTtpZighdGhpcy5zZXNzaW9ufHwhdGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGh8fHRoaXMuJGZyb3plbnx8IWUmJiF0KXt0aGlzLiRjaGFuZ2VzfD1lO3JldHVybn1pZih0aGlzLiRzaXplLiRkaXJ0eSlyZXR1cm4gdGhpcy4kY2hhbmdlc3w9ZSx0aGlzLm9uUmVzaXplKCEwKTt0aGlzLmxpbmVIZWlnaHR8fHRoaXMuJHRleHRMYXllci5jaGVja0ZvclNpemVDaGFuZ2VzKCksdGhpcy5fc2lnbmFsKCJiZWZvcmVSZW5kZXIiKSx0aGlzLnNlc3Npb24mJnRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXImJnRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIudXBkYXRlQ2hhcmFjdGVyV2lkdGhzKHRoaXMuJGZvbnRNZXRyaWNzKTt2YXIgbj10aGlzLmxheWVyQ29uZmlnO2lmKGUmdGhpcy5DSEFOR0VfRlVMTHx8ZSZ0aGlzLkNIQU5HRV9TSVpFfHxlJnRoaXMuQ0hBTkdFX1RFWFR8fGUmdGhpcy5DSEFOR0VfTElORVN8fGUmdGhpcy5DSEFOR0VfU0NST0xMfHxlJnRoaXMuQ0hBTkdFX0hfU0NST0xMKXtlfD10aGlzLiRjb21wdXRlTGF5ZXJDb25maWcoKXx0aGlzLiRsb29wLmNsZWFyKCk7aWYobi5maXJzdFJvdyE9dGhpcy5sYXllckNvbmZpZy5maXJzdFJvdyYmbi5maXJzdFJvd1NjcmVlbj09dGhpcy5sYXllckNvbmZpZy5maXJzdFJvd1NjcmVlbil7dmFyIHI9dGhpcy5zY3JvbGxUb3ArKG4uZmlyc3RSb3ctdGhpcy5sYXllckNvbmZpZy5maXJzdFJvdykqdGhpcy5saW5lSGVpZ2h0O3I+MCYmKHRoaXMuc2Nyb2xsVG9wPXIsZXw9dGhpcy5DSEFOR0VfU0NST0xMLGV8PXRoaXMuJGNvbXB1dGVMYXllckNvbmZpZygpfHRoaXMuJGxvb3AuY2xlYXIoKSl9bj10aGlzLmxheWVyQ29uZmlnLHRoaXMuJHVwZGF0ZVNjcm9sbEJhclYoKSxlJnRoaXMuQ0hBTkdFX0hfU0NST0xMJiZ0aGlzLiR1cGRhdGVTY3JvbGxCYXJIKCksaS50cmFuc2xhdGUodGhpcy5jb250ZW50LC10aGlzLnNjcm9sbExlZnQsLW4ub2Zmc2V0KTt2YXIgcz1uLndpZHRoKzIqdGhpcy4kcGFkZGluZysicHgiLG89bi5taW5IZWlnaHQrInB4IjtpLnNldFN0eWxlKHRoaXMuY29udGVudC5zdHlsZSwid2lkdGgiLHMpLGkuc2V0U3R5bGUodGhpcy5jb250ZW50LnN0eWxlLCJoZWlnaHQiLG8pfWUmdGhpcy5DSEFOR0VfSF9TQ1JPTEwmJihpLnRyYW5zbGF0ZSh0aGlzLmNvbnRlbnQsLXRoaXMuc2Nyb2xsTGVmdCwtbi5vZmZzZXQpLHRoaXMuc2Nyb2xsZXIuY2xhc3NOYW1lPXRoaXMuc2Nyb2xsTGVmdDw9MD8iYWNlX3Njcm9sbGVyIjoiYWNlX3Njcm9sbGVyIGFjZV9zY3JvbGwtbGVmdCIpO2lmKGUmdGhpcy5DSEFOR0VfRlVMTCl7dGhpcy4kY2hhbmdlZExpbmVzPW51bGwsdGhpcy4kdGV4dExheWVyLnVwZGF0ZShuKSx0aGlzLiRzaG93R3V0dGVyJiZ0aGlzLiRndXR0ZXJMYXllci51cGRhdGUobiksdGhpcy4kbWFya2VyQmFjay51cGRhdGUobiksdGhpcy4kbWFya2VyRnJvbnQudXBkYXRlKG4pLHRoaXMuJGN1cnNvckxheWVyLnVwZGF0ZShuKSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpLHRoaXMuX3NpZ25hbCgiYWZ0ZXJSZW5kZXIiKTtyZXR1cm59aWYoZSZ0aGlzLkNIQU5HRV9TQ1JPTEwpe3RoaXMuJGNoYW5nZWRMaW5lcz1udWxsLGUmdGhpcy5DSEFOR0VfVEVYVHx8ZSZ0aGlzLkNIQU5HRV9MSU5FUz90aGlzLiR0ZXh0TGF5ZXIudXBkYXRlKG4pOnRoaXMuJHRleHRMYXllci5zY3JvbGxMaW5lcyhuKSx0aGlzLiRzaG93R3V0dGVyJiYoZSZ0aGlzLkNIQU5HRV9HVVRURVJ8fGUmdGhpcy5DSEFOR0VfTElORVM/dGhpcy4kZ3V0dGVyTGF5ZXIudXBkYXRlKG4pOnRoaXMuJGd1dHRlckxheWVyLnNjcm9sbExpbmVzKG4pKSx0aGlzLiRtYXJrZXJCYWNrLnVwZGF0ZShuKSx0aGlzLiRtYXJrZXJGcm9udC51cGRhdGUobiksdGhpcy4kY3Vyc29yTGF5ZXIudXBkYXRlKG4pLHRoaXMuJG1vdmVUZXh0QXJlYVRvQ3Vyc29yKCksdGhpcy5fc2lnbmFsKCJhZnRlclJlbmRlciIpO3JldHVybn1lJnRoaXMuQ0hBTkdFX1RFWFQ/KHRoaXMuJGNoYW5nZWRMaW5lcz1udWxsLHRoaXMuJHRleHRMYXllci51cGRhdGUobiksdGhpcy4kc2hvd0d1dHRlciYmdGhpcy4kZ3V0dGVyTGF5ZXIudXBkYXRlKG4pKTplJnRoaXMuQ0hBTkdFX0xJTkVTPyh0aGlzLiR1cGRhdGVMaW5lcygpfHxlJnRoaXMuQ0hBTkdFX0dVVFRFUiYmdGhpcy4kc2hvd0d1dHRlcikmJnRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZShuKTplJnRoaXMuQ0hBTkdFX1RFWFR8fGUmdGhpcy5DSEFOR0VfR1VUVEVSP3RoaXMuJHNob3dHdXR0ZXImJnRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZShuKTplJnRoaXMuQ0hBTkdFX0NVUlNPUiYmdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZSYmdGhpcy4kZ3V0dGVyTGF5ZXIudXBkYXRlTGluZUhpZ2hsaWdodChuKSxlJnRoaXMuQ0hBTkdFX0NVUlNPUiYmKHRoaXMuJGN1cnNvckxheWVyLnVwZGF0ZShuKSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpKSxlJih0aGlzLkNIQU5HRV9NQVJLRVJ8dGhpcy5DSEFOR0VfTUFSS0VSX0ZST05UKSYmdGhpcy4kbWFya2VyRnJvbnQudXBkYXRlKG4pLGUmKHRoaXMuQ0hBTkdFX01BUktFUnx0aGlzLkNIQU5HRV9NQVJLRVJfQkFDSykmJnRoaXMuJG1hcmtlckJhY2sudXBkYXRlKG4pLHRoaXMuX3NpZ25hbCgiYWZ0ZXJSZW5kZXIiKX0sdGhpcy4kYXV0b3NpemU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNlc3Npb24uZ2V0U2NyZWVuTGVuZ3RoKCkqdGhpcy5saW5lSGVpZ2h0LHQ9dGhpcy4kbWF4TGluZXMqdGhpcy5saW5lSGVpZ2h0LG49TWF0aC5taW4odCxNYXRoLm1heCgodGhpcy4kbWluTGluZXN8fDEpKnRoaXMubGluZUhlaWdodCxlKSkrdGhpcy5zY3JvbGxNYXJnaW4udisodGhpcy4kZXh0cmFIZWlnaHR8fDApO3RoaXMuJGhvcml6U2Nyb2xsJiYobis9dGhpcy5zY3JvbGxCYXJILmdldEhlaWdodCgpKSx0aGlzLiRtYXhQaXhlbEhlaWdodCYmbj50aGlzLiRtYXhQaXhlbEhlaWdodCYmKG49dGhpcy4kbWF4UGl4ZWxIZWlnaHQpO3ZhciByPW48PTIqdGhpcy5saW5lSGVpZ2h0LGk9IXImJmU+dDtpZihuIT10aGlzLmRlc2lyZWRIZWlnaHR8fHRoaXMuJHNpemUuaGVpZ2h0IT10aGlzLmRlc2lyZWRIZWlnaHR8fGkhPXRoaXMuJHZTY3JvbGwpe2khPXRoaXMuJHZTY3JvbGwmJih0aGlzLiR2U2Nyb2xsPWksdGhpcy5zY3JvbGxCYXJWLnNldFZpc2libGUoaSkpO3ZhciBzPXRoaXMuY29udGFpbmVyLmNsaWVudFdpZHRoO3RoaXMuY29udGFpbmVyLnN0eWxlLmhlaWdodD1uKyJweCIsdGhpcy4kdXBkYXRlQ2FjaGVkU2l6ZSghMCx0aGlzLiRndXR0ZXJXaWR0aCxzLG4pLHRoaXMuZGVzaXJlZEhlaWdodD1uLHRoaXMuX3NpZ25hbCgiYXV0b3NpemUiKX19LHRoaXMuJGNvbXB1dGVMYXllckNvbmZpZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbix0PXRoaXMuJHNpemUsbj10LmhlaWdodDw9Mip0aGlzLmxpbmVIZWlnaHQscj10aGlzLnNlc3Npb24uZ2V0U2NyZWVuTGVuZ3RoKCksaT1yKnRoaXMubGluZUhlaWdodCxzPXRoaXMuJGdldExvbmdlc3RMaW5lKCksbz0hbiYmKHRoaXMuJGhTY3JvbGxCYXJBbHdheXNWaXNpYmxlfHx0LnNjcm9sbGVyV2lkdGgtcy0yKnRoaXMuJHBhZGRpbmc8MCksdT10aGlzLiRob3JpelNjcm9sbCE9PW87dSYmKHRoaXMuJGhvcml6U2Nyb2xsPW8sdGhpcy5zY3JvbGxCYXJILnNldFZpc2libGUobykpO3ZhciBhPXRoaXMuJHZTY3JvbGw7dGhpcy4kbWF4TGluZXMmJnRoaXMubGluZUhlaWdodD4xJiZ0aGlzLiRhdXRvc2l6ZSgpO3ZhciBmPXQuc2Nyb2xsZXJIZWlnaHQrdGhpcy5saW5lSGVpZ2h0LGw9IXRoaXMuJG1heExpbmVzJiZ0aGlzLiRzY3JvbGxQYXN0RW5kPyh0LnNjcm9sbGVySGVpZ2h0LXRoaXMubGluZUhlaWdodCkqdGhpcy4kc2Nyb2xsUGFzdEVuZDowO2krPWw7dmFyIGM9dGhpcy5zY3JvbGxNYXJnaW47dGhpcy5zZXNzaW9uLnNldFNjcm9sbFRvcChNYXRoLm1heCgtYy50b3AsTWF0aC5taW4odGhpcy5zY3JvbGxUb3AsaS10LnNjcm9sbGVySGVpZ2h0K2MuYm90dG9tKSkpLHRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KE1hdGgubWF4KC1jLmxlZnQsTWF0aC5taW4odGhpcy5zY3JvbGxMZWZ0LHMrMip0aGlzLiRwYWRkaW5nLXQuc2Nyb2xsZXJXaWR0aCtjLnJpZ2h0KSkpO3ZhciBoPSFuJiYodGhpcy4kdlNjcm9sbEJhckFsd2F5c1Zpc2libGV8fHQuc2Nyb2xsZXJIZWlnaHQtaStsPDB8fHRoaXMuc2Nyb2xsVG9wPmMudG9wKSxwPWEhPT1oO3AmJih0aGlzLiR2U2Nyb2xsPWgsdGhpcy5zY3JvbGxCYXJWLnNldFZpc2libGUoaCkpO3ZhciBkPXRoaXMuc2Nyb2xsVG9wJXRoaXMubGluZUhlaWdodCx2PU1hdGguY2VpbChmL3RoaXMubGluZUhlaWdodCktMSxtPU1hdGgubWF4KDAsTWF0aC5yb3VuZCgodGhpcy5zY3JvbGxUb3AtZCkvdGhpcy5saW5lSGVpZ2h0KSksZz1tK3YseSxiLHc9dGhpcy5saW5lSGVpZ2h0O209ZS5zY3JlZW5Ub0RvY3VtZW50Um93KG0sMCk7dmFyIEU9ZS5nZXRGb2xkTGluZShtKTtFJiYobT1FLnN0YXJ0LnJvdykseT1lLmRvY3VtZW50VG9TY3JlZW5Sb3cobSwwKSxiPWUuZ2V0Um93TGVuZ3RoKG0pKncsZz1NYXRoLm1pbihlLnNjcmVlblRvRG9jdW1lbnRSb3coZywwKSxlLmdldExlbmd0aCgpLTEpLGY9dC5zY3JvbGxlckhlaWdodCtlLmdldFJvd0xlbmd0aChnKSp3K2IsZD10aGlzLnNjcm9sbFRvcC15Knc7dmFyIFM9MDtpZih0aGlzLmxheWVyQ29uZmlnLndpZHRoIT1zfHx1KVM9dGhpcy5DSEFOR0VfSF9TQ1JPTEw7aWYodXx8cClTfD10aGlzLiR1cGRhdGVDYWNoZWRTaXplKCEwLHRoaXMuZ3V0dGVyV2lkdGgsdC53aWR0aCx0LmhlaWdodCksdGhpcy5fc2lnbmFsKCJzY3JvbGxiYXJWaXNpYmlsaXR5Q2hhbmdlZCIpLHAmJihzPXRoaXMuJGdldExvbmdlc3RMaW5lKCkpO3JldHVybiB0aGlzLmxheWVyQ29uZmlnPXt3aWR0aDpzLHBhZGRpbmc6dGhpcy4kcGFkZGluZyxmaXJzdFJvdzptLGZpcnN0Um93U2NyZWVuOnksbGFzdFJvdzpnLGxpbmVIZWlnaHQ6dyxjaGFyYWN0ZXJXaWR0aDp0aGlzLmNoYXJhY3RlcldpZHRoLG1pbkhlaWdodDpmLG1heEhlaWdodDppLG9mZnNldDpkLGd1dHRlck9mZnNldDp3P01hdGgubWF4KDAsTWF0aC5jZWlsKChkK3QuaGVpZ2h0LXQuc2Nyb2xsZXJIZWlnaHQpL3cpKTowLGhlaWdodDp0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0fSx0aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyJiZ0aGlzLnNlc3Npb24uJGJpZGlIYW5kbGVyLnNldENvbnRlbnRXaWR0aChzLXRoaXMuJHBhZGRpbmcpLFN9LHRoaXMuJHVwZGF0ZUxpbmVzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJGNoYW5nZWRMaW5lcylyZXR1cm47dmFyIGU9dGhpcy4kY2hhbmdlZExpbmVzLmZpcnN0Um93LHQ9dGhpcy4kY2hhbmdlZExpbmVzLmxhc3RSb3c7dGhpcy4kY2hhbmdlZExpbmVzPW51bGw7dmFyIG49dGhpcy5sYXllckNvbmZpZztpZihlPm4ubGFzdFJvdysxKXJldHVybjtpZih0PG4uZmlyc3RSb3cpcmV0dXJuO2lmKHQ9PT1JbmZpbml0eSl7dGhpcy4kc2hvd0d1dHRlciYmdGhpcy4kZ3V0dGVyTGF5ZXIudXBkYXRlKG4pLHRoaXMuJHRleHRMYXllci51cGRhdGUobik7cmV0dXJufXJldHVybiB0aGlzLiR0ZXh0TGF5ZXIudXBkYXRlTGluZXMobixlLHQpLCEwfSx0aGlzLiRnZXRMb25nZXN0TGluZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbi5nZXRTY3JlZW5XaWR0aCgpO3JldHVybiB0aGlzLnNob3dJbnZpc2libGVzJiYhdGhpcy5zZXNzaW9uLiR1c2VXcmFwTW9kZSYmKGUrPTEpLHRoaXMuJHRleHRMYXllciYmZT50aGlzLiR0ZXh0TGF5ZXIuTUFYX0xJTkVfTEVOR1RIJiYoZT10aGlzLiR0ZXh0TGF5ZXIuTUFYX0xJTkVfTEVOR1RIKzMwKSxNYXRoLm1heCh0aGlzLiRzaXplLnNjcm9sbGVyV2lkdGgtMip0aGlzLiRwYWRkaW5nLE1hdGgucm91bmQoZSp0aGlzLmNoYXJhY3RlcldpZHRoKSl9LHRoaXMudXBkYXRlRnJvbnRNYXJrZXJzPWZ1bmN0aW9uKCl7dGhpcy4kbWFya2VyRnJvbnQuc2V0TWFya2Vycyh0aGlzLnNlc3Npb24uZ2V0TWFya2VycyghMCkpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfTUFSS0VSX0ZST05UKX0sdGhpcy51cGRhdGVCYWNrTWFya2Vycz1mdW5jdGlvbigpe3RoaXMuJG1hcmtlckJhY2suc2V0TWFya2Vycyh0aGlzLnNlc3Npb24uZ2V0TWFya2VycygpKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX01BUktFUl9CQUNLKX0sdGhpcy5hZGRHdXR0ZXJEZWNvcmF0aW9uPWZ1bmN0aW9uKGUsdCl7dGhpcy4kZ3V0dGVyTGF5ZXIuYWRkR3V0dGVyRGVjb3JhdGlvbihlLHQpfSx0aGlzLnJlbW92ZUd1dHRlckRlY29yYXRpb249ZnVuY3Rpb24oZSx0KXt0aGlzLiRndXR0ZXJMYXllci5yZW1vdmVHdXR0ZXJEZWNvcmF0aW9uKGUsdCl9LHRoaXMudXBkYXRlQnJlYWtwb2ludHM9ZnVuY3Rpb24oZSl7dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9HVVRURVIpfSx0aGlzLnNldEFubm90YXRpb25zPWZ1bmN0aW9uKGUpe3RoaXMuJGd1dHRlckxheWVyLnNldEFubm90YXRpb25zKGUpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfR1VUVEVSKX0sdGhpcy51cGRhdGVDdXJzb3I9ZnVuY3Rpb24oKXt0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0NVUlNPUil9LHRoaXMuaGlkZUN1cnNvcj1mdW5jdGlvbigpe3RoaXMuJGN1cnNvckxheWVyLmhpZGVDdXJzb3IoKX0sdGhpcy5zaG93Q3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy4kY3Vyc29yTGF5ZXIuc2hvd0N1cnNvcigpfSx0aGlzLnNjcm9sbFNlbGVjdGlvbkludG9WaWV3PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnNjcm9sbEN1cnNvckludG9WaWV3KGUsbiksdGhpcy5zY3JvbGxDdXJzb3JJbnRvVmlldyh0LG4pfSx0aGlzLnNjcm9sbEN1cnNvckludG9WaWV3PWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0PT09MClyZXR1cm47dmFyIHI9dGhpcy4kY3Vyc29yTGF5ZXIuZ2V0UGl4ZWxQb3NpdGlvbihlKSxpPXIubGVmdCxzPXIudG9wLG89biYmbi50b3B8fDAsdT1uJiZuLmJvdHRvbXx8MCxhPXRoaXMuJHNjcm9sbEFuaW1hdGlvbj90aGlzLnNlc3Npb24uZ2V0U2Nyb2xsVG9wKCk6dGhpcy5zY3JvbGxUb3A7YStvPnM/KHQmJmErbz5zK3RoaXMubGluZUhlaWdodCYmKHMtPXQqdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodCkscz09PTAmJihzPS10aGlzLnNjcm9sbE1hcmdpbi50b3ApLHRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AocykpOmErdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodC11PHMrdGhpcy5saW5lSGVpZ2h0JiYodCYmYSt0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0LXU8cy10aGlzLmxpbmVIZWlnaHQmJihzKz10KnRoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQpLHRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3Aocyt0aGlzLmxpbmVIZWlnaHQrdS10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSk7dmFyIGY9dGhpcy5zY3JvbGxMZWZ0O2Y+aT8oaTx0aGlzLiRwYWRkaW5nKzIqdGhpcy5sYXllckNvbmZpZy5jaGFyYWN0ZXJXaWR0aCYmKGk9LXRoaXMuc2Nyb2xsTWFyZ2luLmxlZnQpLHRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KGkpKTpmK3RoaXMuJHNpemUuc2Nyb2xsZXJXaWR0aDxpK3RoaXMuY2hhcmFjdGVyV2lkdGg/dGhpcy5zZXNzaW9uLnNldFNjcm9sbExlZnQoTWF0aC5yb3VuZChpK3RoaXMuY2hhcmFjdGVyV2lkdGgtdGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoKSk6Zjw9dGhpcy4kcGFkZGluZyYmaS1mPHRoaXMuY2hhcmFjdGVyV2lkdGgmJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KDApfSx0aGlzLmdldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsVG9wKCl9LHRoaXMuZ2V0U2Nyb2xsTGVmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsTGVmdCgpfSx0aGlzLmdldFNjcm9sbFRvcFJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbFRvcC90aGlzLmxpbmVIZWlnaHR9LHRoaXMuZ2V0U2Nyb2xsQm90dG9tUm93PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5mbG9vcigodGhpcy5zY3JvbGxUb3ArdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodCkvdGhpcy5saW5lSGVpZ2h0KS0xKX0sdGhpcy5zY3JvbGxUb1Jvdz1mdW5jdGlvbihlKXt0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGUqdGhpcy5saW5lSGVpZ2h0KX0sdGhpcy5hbGlnbkN1cnNvcj1mdW5jdGlvbihlLHQpe3R5cGVvZiBlPT0ibnVtYmVyIiYmKGU9e3JvdzplLGNvbHVtbjowfSk7dmFyIG49dGhpcy4kY3Vyc29yTGF5ZXIuZ2V0UGl4ZWxQb3NpdGlvbihlKSxyPXRoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQtdGhpcy5saW5lSGVpZ2h0LGk9bi50b3AtcioodHx8MCk7cmV0dXJuIHRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoaSksaX0sdGhpcy5TVEVQUz04LHRoaXMuJGNhbGNTdGVwcz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj10aGlzLlNURVBTLGk9W10scz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4qKE1hdGgucG93KGUtMSwzKSsxKSt0fTtmb3Iobj0wO248cjsrK24paS5wdXNoKHMobi90aGlzLlNURVBTLGUsdC1lKSk7cmV0dXJuIGl9LHRoaXMuc2Nyb2xsVG9MaW5lPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oe3JvdzplLGNvbHVtbjowfSkscz1pLnRvcDt0JiYocy09dGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodC8yKTt2YXIgbz10aGlzLnNjcm9sbFRvcDt0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKHMpLG4hPT0hMSYmdGhpcy5hbmltYXRlU2Nyb2xsaW5nKG8scil9LHRoaXMuYW5pbWF0ZVNjcm9sbGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc2Nyb2xsVG9wO2lmKCF0aGlzLiRhbmltYXRlZFNjcm9sbClyZXR1cm47dmFyIHI9dGhpcztpZihlPT1uKXJldHVybjtpZih0aGlzLiRzY3JvbGxBbmltYXRpb24pe3ZhciBpPXRoaXMuJHNjcm9sbEFuaW1hdGlvbi5zdGVwcztpZihpLmxlbmd0aCl7ZT1pWzBdO2lmKGU9PW4pcmV0dXJufX12YXIgcz1yLiRjYWxjU3RlcHMoZSxuKTt0aGlzLiRzY3JvbGxBbmltYXRpb249e2Zyb206ZSx0bzpuLHN0ZXBzOnN9LGNsZWFySW50ZXJ2YWwodGhpcy4kdGltZXIpLHIuc2Vzc2lvbi5zZXRTY3JvbGxUb3Aocy5zaGlmdCgpKSxyLnNlc3Npb24uJHNjcm9sbFRvcD1uLHRoaXMuJHRpbWVyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7cy5sZW5ndGg/KHIuc2Vzc2lvbi5zZXRTY3JvbGxUb3Aocy5zaGlmdCgpKSxyLnNlc3Npb24uJHNjcm9sbFRvcD1uKTpuIT1udWxsPyhyLnNlc3Npb24uJHNjcm9sbFRvcD0tMSxyLnNlc3Npb24uc2V0U2Nyb2xsVG9wKG4pLG49bnVsbCk6KHIuJHRpbWVyPWNsZWFySW50ZXJ2YWwoci4kdGltZXIpLHIuJHNjcm9sbEFuaW1hdGlvbj1udWxsLHQmJnQoKSl9LDEwKX0sdGhpcy5zY3JvbGxUb1k9ZnVuY3Rpb24oZSl7dGhpcy5zY3JvbGxUb3AhPT1lJiYodGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9TQ1JPTEwpLHRoaXMuc2Nyb2xsVG9wPWUpfSx0aGlzLnNjcm9sbFRvWD1mdW5jdGlvbihlKXt0aGlzLnNjcm9sbExlZnQhPT1lJiYodGhpcy5zY3JvbGxMZWZ0PWUpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfSF9TQ1JPTEwpfSx0aGlzLnNjcm9sbFRvPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXNzaW9uLnNldFNjcm9sbFRvcCh0KSx0aGlzLnNlc3Npb24uc2V0U2Nyb2xsTGVmdCh0KX0sdGhpcy5zY3JvbGxCeT1mdW5jdGlvbihlLHQpe3QmJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AodGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpK3QpLGUmJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxMZWZ0KCkrZSl9LHRoaXMuaXNTY3JvbGxhYmxlQnk9ZnVuY3Rpb24oZSx0KXtpZih0PDAmJnRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxUb3AoKT49MS10aGlzLnNjcm9sbE1hcmdpbi50b3ApcmV0dXJuITA7aWYodD4wJiZ0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsVG9wKCkrdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodC10aGlzLmxheWVyQ29uZmlnLm1heEhlaWdodDwtMSt0aGlzLnNjcm9sbE1hcmdpbi5ib3R0b20pcmV0dXJuITA7aWYoZTwwJiZ0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsTGVmdCgpPj0xLXRoaXMuc2Nyb2xsTWFyZ2luLmxlZnQpcmV0dXJuITA7aWYoZT4wJiZ0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsTGVmdCgpK3RoaXMuJHNpemUuc2Nyb2xsZXJXaWR0aC10aGlzLmxheWVyQ29uZmlnLndpZHRoPC0xK3RoaXMuc2Nyb2xsTWFyZ2luLnJpZ2h0KXJldHVybiEwfSx0aGlzLnBpeGVsVG9TY3JlZW5Db29yZGluYXRlcz1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKHRoaXMuJGhhc0Nzc1RyYW5zZm9ybXMpe249e3RvcDowLGxlZnQ6MH07dmFyIHI9dGhpcy4kZm9udE1ldHJpY3MudHJhbnNmb3JtQ29vcmRpbmF0ZXMoW2UsdF0pO2U9clsxXS10aGlzLmd1dHRlcldpZHRoLXRoaXMubWFyZ2luLmxlZnQsdD1yWzBdfWVsc2Ugbj10aGlzLnNjcm9sbGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBpPWUrdGhpcy5zY3JvbGxMZWZ0LW4ubGVmdC10aGlzLiRwYWRkaW5nLHM9aS90aGlzLmNoYXJhY3RlcldpZHRoLG89TWF0aC5mbG9vcigodCt0aGlzLnNjcm9sbFRvcC1uLnRvcCkvdGhpcy5saW5lSGVpZ2h0KSx1PXRoaXMuJGJsb2NrQ3Vyc29yP01hdGguZmxvb3Iocyk6TWF0aC5yb3VuZChzKTtyZXR1cm57cm93Om8sY29sdW1uOnUsc2lkZTpzLXU+MD8xOi0xLG9mZnNldFg6aX19LHRoaXMuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih0aGlzLiRoYXNDc3NUcmFuc2Zvcm1zKXtuPXt0b3A6MCxsZWZ0OjB9O3ZhciByPXRoaXMuJGZvbnRNZXRyaWNzLnRyYW5zZm9ybUNvb3JkaW5hdGVzKFtlLHRdKTtlPXJbMV0tdGhpcy5ndXR0ZXJXaWR0aC10aGlzLm1hcmdpbi5sZWZ0LHQ9clswXX1lbHNlIG49dGhpcy5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt2YXIgaT1lK3RoaXMuc2Nyb2xsTGVmdC1uLmxlZnQtdGhpcy4kcGFkZGluZyxzPWkvdGhpcy5jaGFyYWN0ZXJXaWR0aCxvPXRoaXMuJGJsb2NrQ3Vyc29yP01hdGguZmxvb3Iocyk6TWF0aC5yb3VuZChzKSx1PU1hdGguZmxvb3IoKHQrdGhpcy5zY3JvbGxUb3Atbi50b3ApL3RoaXMubGluZUhlaWdodCk7cmV0dXJuIHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24odSxNYXRoLm1heChvLDApLGkpfSx0aGlzLnRleHRUb1NjcmVlbkNvb3JkaW5hdGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oZSx0KSxpPXRoaXMuJHBhZGRpbmcrKHRoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuaXNCaWRpUm93KHIucm93LGUpP3RoaXMuc2Vzc2lvbi4kYmlkaUhhbmRsZXIuZ2V0UG9zTGVmdChyLmNvbHVtbik6TWF0aC5yb3VuZChyLmNvbHVtbip0aGlzLmNoYXJhY3RlcldpZHRoKSkscz1yLnJvdyp0aGlzLmxpbmVIZWlnaHQ7cmV0dXJue3BhZ2VYOm4ubGVmdCtpLXRoaXMuc2Nyb2xsTGVmdCxwYWdlWTpuLnRvcCtzLXRoaXMuc2Nyb2xsVG9wfX0sdGhpcy52aXN1YWxpemVGb2N1cz1mdW5jdGlvbigpe2kuYWRkQ3NzQ2xhc3ModGhpcy5jb250YWluZXIsImFjZV9mb2N1cyIpfSx0aGlzLnZpc3VhbGl6ZUJsdXI9ZnVuY3Rpb24oKXtpLnJlbW92ZUNzc0NsYXNzKHRoaXMuY29udGFpbmVyLCJhY2VfZm9jdXMiKX0sdGhpcy5zaG93Q29tcG9zaXRpb249ZnVuY3Rpb24oZSl7dGhpcy4kY29tcG9zaXRpb249ZSxlLmNzc1RleHR8fChlLmNzc1RleHQ9dGhpcy50ZXh0YXJlYS5zdHlsZS5jc3NUZXh0KSxlLnVzZVRleHRhcmVhRm9ySU1FPXRoaXMuJHVzZVRleHRhcmVhRm9ySU1FLHRoaXMuJHVzZVRleHRhcmVhRm9ySU1FPyhpLmFkZENzc0NsYXNzKHRoaXMudGV4dGFyZWEsImFjZV9jb21wb3NpdGlvbiIpLHRoaXMudGV4dGFyZWEuc3R5bGUuY3NzVGV4dD0iIix0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpLHRoaXMuJGN1cnNvckxheWVyLmVsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIpOmUubWFya2VySWQ9dGhpcy5zZXNzaW9uLmFkZE1hcmtlcihlLm1hcmtlclJhbmdlLCJhY2VfY29tcG9zaXRpb25fbWFya2VyIiwidGV4dCIpfSx0aGlzLnNldENvbXBvc2l0aW9uVGV4dD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNlc3Npb24uc2VsZWN0aW9uLmN1cnNvcjt0aGlzLmFkZFRva2VuKGUsImNvbXBvc2l0aW9uX3BsYWNlaG9sZGVyIix0LnJvdyx0LmNvbHVtbiksdGhpcy4kbW92ZVRleHRBcmVhVG9DdXJzb3IoKX0sdGhpcy5oaWRlQ29tcG9zaXRpb249ZnVuY3Rpb24oKXtpZighdGhpcy4kY29tcG9zaXRpb24pcmV0dXJuO3RoaXMuJGNvbXBvc2l0aW9uLm1hcmtlcklkJiZ0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMuJGNvbXBvc2l0aW9uLm1hcmtlcklkKSxpLnJlbW92ZUNzc0NsYXNzKHRoaXMudGV4dGFyZWEsImFjZV9jb21wb3NpdGlvbiIpLHRoaXMudGV4dGFyZWEuc3R5bGUuY3NzVGV4dD10aGlzLiRjb21wb3NpdGlvbi5jc3NUZXh0LHRoaXMuJGNvbXBvc2l0aW9uPW51bGwsdGhpcy4kY3Vyc29yTGF5ZXIuZWxlbWVudC5zdHlsZS5kaXNwbGF5PSIifSx0aGlzLmFkZFRva2VuPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuc2Vzc2lvbjtpLmJnVG9rZW5pemVyLmxpbmVzW25dPW51bGw7dmFyIHM9e3R5cGU6dCx2YWx1ZTplfSxvPWkuZ2V0VG9rZW5zKG4pO2lmKHI9PW51bGwpby5wdXNoKHMpO2Vsc2V7dmFyIHU9MDtmb3IodmFyIGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIGY9b1thXTt1Kz1mLnZhbHVlLmxlbmd0aDtpZihyPD11KXt2YXIgbD1mLnZhbHVlLmxlbmd0aC0odS1yKSxjPWYudmFsdWUuc2xpY2UoMCxsKSxoPWYudmFsdWUuc2xpY2UobCk7by5zcGxpY2UoYSwxLHt0eXBlOmYudHlwZSx2YWx1ZTpjfSxzLHt0eXBlOmYudHlwZSx2YWx1ZTpofSk7YnJlYWt9fX10aGlzLnVwZGF0ZUxpbmVzKG4sbil9LHRoaXMuc2V0VGhlbWU9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBvKHIpe2lmKG4uJHRoZW1lSWQhPWUpcmV0dXJuIHQmJnQoKTtpZighcnx8IXIuY3NzQ2xhc3MpdGhyb3cgbmV3IEVycm9yKCJjb3VsZG4ndCBsb2FkIG1vZHVsZSAiK2UrIiBvciBpdCBkaWRuJ3QgY2FsbCBkZWZpbmUiKTtyLiRpZCYmKG4uJHRoZW1lSWQ9ci4kaWQpLGkuaW1wb3J0Q3NzU3RyaW5nKHIuY3NzVGV4dCxyLmNzc0NsYXNzLG4uY29udGFpbmVyKSxuLnRoZW1lJiZpLnJlbW92ZUNzc0NsYXNzKG4uY29udGFpbmVyLG4udGhlbWUuY3NzQ2xhc3MpO3ZhciBzPSJwYWRkaW5nImluIHI/ci5wYWRkaW5nOiJwYWRkaW5nImluKG4udGhlbWV8fHt9KT80Om4uJHBhZGRpbmc7bi4kcGFkZGluZyYmcyE9bi4kcGFkZGluZyYmbi5zZXRQYWRkaW5nKHMpLG4uJHRoZW1lPXIuY3NzQ2xhc3Msbi50aGVtZT1yLGkuYWRkQ3NzQ2xhc3Mobi5jb250YWluZXIsci5jc3NDbGFzcyksaS5zZXRDc3NDbGFzcyhuLmNvbnRhaW5lciwiYWNlX2RhcmsiLHIuaXNEYXJrKSxuLiRzaXplJiYobi4kc2l6ZS53aWR0aD0wLG4uJHVwZGF0ZVNpemVBc3luYygpKSxuLl9kaXNwYXRjaEV2ZW50KCJ0aGVtZUxvYWRlZCIse3RoZW1lOnJ9KSx0JiZ0KCl9dmFyIG49dGhpczt0aGlzLiR0aGVtZUlkPWUsbi5fZGlzcGF0Y2hFdmVudCgidGhlbWVDaGFuZ2UiLHt0aGVtZTplfSk7aWYoIWV8fHR5cGVvZiBlPT0ic3RyaW5nIil7dmFyIHI9ZXx8dGhpcy4kb3B0aW9ucy50aGVtZS5pbml0aWFsVmFsdWU7cy5sb2FkTW9kdWxlKFsidGhlbWUiLHJdLG8pfWVsc2UgbyhlKX0sdGhpcy5nZXRUaGVtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR0aGVtZUlkfSx0aGlzLnNldFN0eWxlPWZ1bmN0aW9uKGUsdCl7aS5zZXRDc3NDbGFzcyh0aGlzLmNvbnRhaW5lcixlLHQhPT0hMSl9LHRoaXMudW5zZXRTdHlsZT1mdW5jdGlvbihlKXtpLnJlbW92ZUNzc0NsYXNzKHRoaXMuY29udGFpbmVyLGUpfSx0aGlzLnNldEN1cnNvclN0eWxlPWZ1bmN0aW9uKGUpe2kuc2V0U3R5bGUodGhpcy5zY3JvbGxlci5zdHlsZSwiY3Vyc29yIixlKX0sdGhpcy5zZXRNb3VzZUN1cnNvcj1mdW5jdGlvbihlKXtpLnNldFN0eWxlKHRoaXMuc2Nyb2xsZXIuc3R5bGUsImN1cnNvciIsZSl9LHRoaXMuYXR0YWNoVG9TaGFkb3dSb290PWZ1bmN0aW9uKCl7aS5pbXBvcnRDc3NTdHJpbmcodiwiYWNlX2VkaXRvci5jc3MiLHRoaXMuY29udGFpbmVyKX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5mcmVlemUoKSx0aGlzLiRmb250TWV0cmljcy5kZXN0cm95KCksdGhpcy4kY3Vyc29yTGF5ZXIuZGVzdHJveSgpfX0pLmNhbGwoeS5wcm90b3R5cGUpLHMuZGVmaW5lT3B0aW9ucyh5LnByb3RvdHlwZSwicmVuZGVyZXIiLHthbmltYXRlZFNjcm9sbDp7aW5pdGlhbFZhbHVlOiExfSxzaG93SW52aXNpYmxlczp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuJHRleHRMYXllci5zZXRTaG93SW52aXNpYmxlcyhlKSYmdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9URVhUKX0saW5pdGlhbFZhbHVlOiExfSxzaG93UHJpbnRNYXJnaW46e3NldDpmdW5jdGlvbigpe3RoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LGluaXRpYWxWYWx1ZTohMH0scHJpbnRNYXJnaW5Db2x1bW46e3NldDpmdW5jdGlvbigpe3RoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LGluaXRpYWxWYWx1ZTo4MH0scHJpbnRNYXJnaW46e3NldDpmdW5jdGlvbihlKXt0eXBlb2YgZT09Im51bWJlciImJih0aGlzLiRwcmludE1hcmdpbkNvbHVtbj1lKSx0aGlzLiRzaG93UHJpbnRNYXJnaW49ISFlLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzaG93UHJpbnRNYXJnaW4mJnRoaXMuJHByaW50TWFyZ2luQ29sdW1ufX0sc2hvd0d1dHRlcjp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuJGd1dHRlci5zdHlsZS5kaXNwbGF5PWU/ImJsb2NrIjoibm9uZSIsdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKSx0aGlzLm9uR3V0dGVyUmVzaXplKCl9LGluaXRpYWxWYWx1ZTohMH0sZmFkZUZvbGRXaWRnZXRzOntzZXQ6ZnVuY3Rpb24oZSl7aS5zZXRDc3NDbGFzcyh0aGlzLiRndXR0ZXIsImFjZV9mYWRlLWZvbGQtd2lkZ2V0cyIsZSl9LGluaXRpYWxWYWx1ZTohMX0sc2hvd0ZvbGRXaWRnZXRzOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy4kZ3V0dGVyTGF5ZXIuc2V0U2hvd0ZvbGRXaWRnZXRzKGUpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfR1VUVEVSKX0saW5pdGlhbFZhbHVlOiEwfSxkaXNwbGF5SW5kZW50R3VpZGVzOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy4kdGV4dExheWVyLnNldERpc3BsYXlJbmRlbnRHdWlkZXMoZSkmJnRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfVEVYVCl9LGluaXRpYWxWYWx1ZTohMH0saGlnaGxpZ2h0R3V0dGVyTGluZTp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuJGd1dHRlckxheWVyLnNldEhpZ2hsaWdodEd1dHRlckxpbmUoZSksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9HVVRURVIpfSxpbml0aWFsVmFsdWU6ITB9LGhTY3JvbGxCYXJBbHdheXNWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oZSl7KCF0aGlzLiRoU2Nyb2xsQmFyQWx3YXlzVmlzaWJsZXx8IXRoaXMuJGhvcml6U2Nyb2xsKSYmdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9TQ1JPTEwpfSxpbml0aWFsVmFsdWU6ITF9LHZTY3JvbGxCYXJBbHdheXNWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oZSl7KCF0aGlzLiR2U2Nyb2xsQmFyQWx3YXlzVmlzaWJsZXx8IXRoaXMuJHZTY3JvbGwpJiZ0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1NDUk9MTCl9LGluaXRpYWxWYWx1ZTohMX0sZm9udFNpemU6e3NldDpmdW5jdGlvbihlKXt0eXBlb2YgZT09Im51bWJlciImJihlKz0icHgiKSx0aGlzLmNvbnRhaW5lci5zdHlsZS5mb250U2l6ZT1lLHRoaXMudXBkYXRlRm9udFNpemUoKX0saW5pdGlhbFZhbHVlOjEyfSxmb250RmFtaWx5OntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5jb250YWluZXIuc3R5bGUuZm9udEZhbWlseT1lLHRoaXMudXBkYXRlRm9udFNpemUoKX19LG1heExpbmVzOntzZXQ6ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVGdWxsKCl9fSxtaW5MaW5lczp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuJG1pbkxpbmVzPDU2Mjk0OTk1MzQyMTMxMXx8KHRoaXMuJG1pbkxpbmVzPTApLHRoaXMudXBkYXRlRnVsbCgpfX0sbWF4UGl4ZWxIZWlnaHQ6e3NldDpmdW5jdGlvbihlKXt0aGlzLnVwZGF0ZUZ1bGwoKX0saW5pdGlhbFZhbHVlOjB9LHNjcm9sbFBhc3RFbmQ6e3NldDpmdW5jdGlvbihlKXtlPStlfHwwO2lmKHRoaXMuJHNjcm9sbFBhc3RFbmQ9PWUpcmV0dXJuO3RoaXMuJHNjcm9sbFBhc3RFbmQ9ZSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1NDUk9MTCl9LGluaXRpYWxWYWx1ZTowLGhhbmRsZXNTZXQ6ITB9LGZpeGVkV2lkdGhHdXR0ZXI6e3NldDpmdW5jdGlvbihlKXt0aGlzLiRndXR0ZXJMYXllci4kZml4ZWRXaWR0aD0hIWUsdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9HVVRURVIpfX0sdGhlbWU6e3NldDpmdW5jdGlvbihlKXt0aGlzLnNldFRoZW1lKGUpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGhlbWVJZHx8dGhpcy50aGVtZX0saW5pdGlhbFZhbHVlOiIuL3RoZW1lL3RleHRtYXRlIixoYW5kbGVzU2V0OiEwfSxoYXNDc3NUcmFuc2Zvcm1zOnt9LHVzZVRleHRhcmVhRm9ySU1FOntpbml0aWFsVmFsdWU6IW0uaXNNb2JpbGUmJiFtLmlzSUV9fSksdC5WaXJ0dWFsUmVuZGVyZXI9eX0pLGFjZS5kZWZpbmUoImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9uZXQiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvY29uZmlnIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB1KGUpe3ZhciB0PSJpbXBvcnRTY3JpcHRzKCciK2kucXVhbGlmeVVSTChlKSsiJyk7Ijt0cnl7cmV0dXJuIG5ldyBCbG9iKFt0XSx7dHlwZToiYXBwbGljYXRpb24vamF2YXNjcmlwdCJ9KX1jYXRjaChuKXt2YXIgcj13aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyLHM9bmV3IHI7cmV0dXJuIHMuYXBwZW5kKHQpLHMuZ2V0QmxvYigiYXBwbGljYXRpb24vamF2YXNjcmlwdCIpfX1mdW5jdGlvbiBhKGUpe2lmKHR5cGVvZiBXb3JrZXI9PSJ1bmRlZmluZWQiKXJldHVybntwb3N0TWVzc2FnZTpmdW5jdGlvbigpe30sdGVybWluYXRlOmZ1bmN0aW9uKCl7fX07aWYoby5nZXQoImxvYWRXb3JrZXJGcm9tQmxvYiIpKXt2YXIgdD11KGUpLG49d2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTCxyPW4uY3JlYXRlT2JqZWN0VVJMKHQpO3JldHVybiBuZXcgV29ya2VyKHIpfXJldHVybiBuZXcgV29ya2VyKGUpfXZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9uZXQiKSxzPWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLG89ZSgiLi4vY29uZmlnIiksZj1mdW5jdGlvbihlKXtlLnBvc3RNZXNzYWdlfHwoZT10aGlzLiRjcmVhdGVXb3JrZXJGcm9tT2xkQ29uZmlnLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdGhpcy4kd29ya2VyPWUsdGhpcy4kc2VuZERlbHRhUXVldWU9dGhpcy4kc2VuZERlbHRhUXVldWUuYmluZCh0aGlzKSx0aGlzLmNoYW5nZUxpc3RlbmVyPXRoaXMuY2hhbmdlTGlzdGVuZXIuYmluZCh0aGlzKSx0aGlzLm9uTWVzc2FnZT10aGlzLm9uTWVzc2FnZS5iaW5kKHRoaXMpLHRoaXMuY2FsbGJhY2tJZD0xLHRoaXMuY2FsbGJhY2tzPXt9LHRoaXMuJHdvcmtlci5vbm1lc3NhZ2U9dGhpcy5vbk1lc3NhZ2V9OyhmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMscyksdGhpcy4kY3JlYXRlV29ya2VyRnJvbU9sZENvbmZpZz1mdW5jdGlvbih0LG4scixpLHMpe2UubmFtZVRvVXJsJiYhZS50b1VybCYmKGUudG9Vcmw9ZS5uYW1lVG9VcmwpO2lmKG8uZ2V0KCJwYWNrYWdlZCIpfHwhZS50b1VybClpPWl8fG8ubW9kdWxlVXJsKG4sIndvcmtlciIpO2Vsc2V7dmFyIHU9dGhpcy4kbm9ybWFsaXplUGF0aDtpPWl8fHUoZS50b1VybCgiYWNlL3dvcmtlci93b3JrZXIuanMiLG51bGwsIl8iKSk7dmFyIGY9e307dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2ZbdF09dShlLnRvVXJsKHQsbnVsbCwiXyIpLnJlcGxhY2UoLyhcLmpzKT8oXD8uKik/JC8sIiIpKX0pfXJldHVybiB0aGlzLiR3b3JrZXI9YShpKSxzJiZ0aGlzLnNlbmQoImltcG9ydFNjcmlwdHMiLHMpLHRoaXMuJHdvcmtlci5wb3N0TWVzc2FnZSh7aW5pdDohMCx0bG5zOmYsbW9kdWxlOm4sY2xhc3NuYW1lOnJ9KSx0aGlzLiR3b3JrZXJ9LHRoaXMub25NZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YTtzd2l0Y2godC50eXBlKXtjYXNlImV2ZW50Ijp0aGlzLl9zaWduYWwodC5uYW1lLHtkYXRhOnQuZGF0YX0pO2JyZWFrO2Nhc2UiY2FsbCI6dmFyIG49dGhpcy5jYWxsYmFja3NbdC5pZF07biYmKG4odC5kYXRhKSxkZWxldGUgdGhpcy5jYWxsYmFja3NbdC5pZF0pO2JyZWFrO2Nhc2UiZXJyb3IiOnRoaXMucmVwb3J0RXJyb3IodC5kYXRhKTticmVhaztjYXNlImxvZyI6d2luZG93LmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLHQuZGF0YSl9fSx0aGlzLnJlcG9ydEVycm9yPWZ1bmN0aW9uKGUpe3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpfSx0aGlzLiRub3JtYWxpemVQYXRoPWZ1bmN0aW9uKGUpe3JldHVybiBpLnF1YWxpZnlVUkwoZSl9LHRoaXMudGVybWluYXRlPWZ1bmN0aW9uKCl7dGhpcy5fc2lnbmFsKCJ0ZXJtaW5hdGUiLHt9KSx0aGlzLmRlbHRhUXVldWU9bnVsbCx0aGlzLiR3b3JrZXIudGVybWluYXRlKCksdGhpcy4kd29ya2VyPW51bGwsdGhpcy4kZG9jJiZ0aGlzLiRkb2Mub2ZmKCJjaGFuZ2UiLHRoaXMuY2hhbmdlTGlzdGVuZXIpLHRoaXMuJGRvYz1udWxsfSx0aGlzLnNlbmQ9ZnVuY3Rpb24oZSx0KXt0aGlzLiR3b3JrZXIucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6ZSxhcmdzOnR9KX0sdGhpcy5jYWxsPWZ1bmN0aW9uKGUsdCxuKXtpZihuKXt2YXIgcj10aGlzLmNhbGxiYWNrSWQrKzt0aGlzLmNhbGxiYWNrc1tyXT1uLHQucHVzaChyKX10aGlzLnNlbmQoZSx0KX0sdGhpcy5lbWl0PWZ1bmN0aW9uKGUsdCl7dHJ5e3QuZGF0YSYmdC5kYXRhLmVyciYmKHQuZGF0YS5lcnI9e21lc3NhZ2U6dC5kYXRhLmVyci5tZXNzYWdlLHN0YWNrOnQuZGF0YS5lcnIuc3RhY2ssY29kZTp0LmRhdGEuZXJyLmNvZGV9KSx0aGlzLiR3b3JrZXIucG9zdE1lc3NhZ2Uoe2V2ZW50OmUsZGF0YTp7ZGF0YTp0LmRhdGF9fSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcihuLnN0YWNrKX19LHRoaXMuYXR0YWNoVG9Eb2N1bWVudD1mdW5jdGlvbihlKXt0aGlzLiRkb2MmJnRoaXMudGVybWluYXRlKCksdGhpcy4kZG9jPWUsdGhpcy5jYWxsKCJzZXRWYWx1ZSIsW2UuZ2V0VmFsdWUoKV0pLGUub24oImNoYW5nZSIsdGhpcy5jaGFuZ2VMaXN0ZW5lcil9LHRoaXMuY2hhbmdlTGlzdGVuZXI9ZnVuY3Rpb24oZSl7dGhpcy5kZWx0YVF1ZXVlfHwodGhpcy5kZWx0YVF1ZXVlPVtdLHNldFRpbWVvdXQodGhpcy4kc2VuZERlbHRhUXVldWUsMCkpLGUuYWN0aW9uPT0iaW5zZXJ0Ij90aGlzLmRlbHRhUXVldWUucHVzaChlLnN0YXJ0LGUubGluZXMpOnRoaXMuZGVsdGFRdWV1ZS5wdXNoKGUuc3RhcnQsZS5lbmQpfSx0aGlzLiRzZW5kRGVsdGFRdWV1ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZGVsdGFRdWV1ZTtpZighZSlyZXR1cm47dGhpcy5kZWx0YVF1ZXVlPW51bGwsZS5sZW5ndGg+NTAmJmUubGVuZ3RoPnRoaXMuJGRvYy5nZXRMZW5ndGgoKT4+MT90aGlzLmNhbGwoInNldFZhbHVlIixbdGhpcy4kZG9jLmdldFZhbHVlKCldKTp0aGlzLmVtaXQoImNoYW5nZSIse2RhdGE6ZX0pfX0pLmNhbGwoZi5wcm90b3R5cGUpO3ZhciBsPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsLGk9ITEsdT1PYmplY3QuY3JlYXRlKHMpLGE9W10sbD1uZXcgZih7bWVzc2FnZUJ1ZmZlcjphLHRlcm1pbmF0ZTpmdW5jdGlvbigpe30scG9zdE1lc3NhZ2U6ZnVuY3Rpb24oZSl7YS5wdXNoKGUpO2lmKCFyKXJldHVybjtpP3NldFRpbWVvdXQoYyk6YygpfX0pO2wuc2V0RW1pdFN5bmM9ZnVuY3Rpb24oZSl7aT1lfTt2YXIgYz1mdW5jdGlvbigpe3ZhciBlPWEuc2hpZnQoKTtlLmNvbW1hbmQ/cltlLmNvbW1hbmRdLmFwcGx5KHIsZS5hcmdzKTplLmV2ZW50JiZ1Ll9zaWduYWwoZS5ldmVudCxlLmRhdGEpfTtyZXR1cm4gdS5wb3N0TWVzc2FnZT1mdW5jdGlvbihlKXtsLm9uTWVzc2FnZSh7ZGF0YTplfSl9LHUuY2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXt0aGlzLnBvc3RNZXNzYWdlKHt0eXBlOiJjYWxsIixpZDp0LGRhdGE6ZX0pfSx1LmVtaXQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnBvc3RNZXNzYWdlKHt0eXBlOiJldmVudCIsbmFtZTplLGRhdGE6dH0pfSxvLmxvYWRNb2R1bGUoWyJ3b3JrZXIiLHRdLGZ1bmN0aW9uKGUpe3I9bmV3IGVbbl0odSk7d2hpbGUoYS5sZW5ndGgpYygpfSksbH07dC5VSVdvcmtlckNsaWVudD1sLHQuV29ya2VyQ2xpZW50PWYsdC5jcmVhdGVXb3JrZXI9YX0pLGFjZS5kZWZpbmUoImFjZS9wbGFjZWhvbGRlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9saWIvb29wIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL3JhbmdlIikuUmFuZ2UsaT1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHM9ZSgiLi9saWIvb29wIiksbz1mdW5jdGlvbihlLHQsbixyLGkscyl7dmFyIG89dGhpczt0aGlzLmxlbmd0aD10LHRoaXMuc2Vzc2lvbj1lLHRoaXMuZG9jPWUuZ2V0RG9jdW1lbnQoKSx0aGlzLm1haW5DbGFzcz1pLHRoaXMub3RoZXJzQ2xhc3M9cyx0aGlzLiRvblVwZGF0ZT10aGlzLm9uVXBkYXRlLmJpbmQodGhpcyksdGhpcy5kb2Mub24oImNoYW5nZSIsdGhpcy4kb25VcGRhdGUpLHRoaXMuJG90aGVycz1yLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlPWZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe28ub25DdXJzb3JDaGFuZ2UoKX0pfSx0aGlzLiRwb3M9bjt2YXIgdT1lLmdldFVuZG9NYW5hZ2VyKCkuJHVuZG9TdGFja3x8ZS5nZXRVbmRvTWFuYWdlcigpLiR1bmRvc3RhY2t8fHtsZW5ndGg6LTF9O3RoaXMuJHVuZG9TdGFja0RlcHRoPXUubGVuZ3RoLHRoaXMuc2V0dXAoKSxlLnNlbGVjdGlvbi5vbigiY2hhbmdlQ3Vyc29yIix0aGlzLiRvbkN1cnNvckNoYW5nZSl9OyhmdW5jdGlvbigpe3MuaW1wbGVtZW50KHRoaXMsaSksdGhpcy5zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLmRvYyxuPXRoaXMuc2Vzc2lvbjt0aGlzLnNlbGVjdGlvbkJlZm9yZT1uLnNlbGVjdGlvbi50b0pTT04oKSxuLnNlbGVjdGlvbi5pbk11bHRpU2VsZWN0TW9kZSYmbi5zZWxlY3Rpb24udG9TaW5nbGVSYW5nZSgpLHRoaXMucG9zPXQuY3JlYXRlQW5jaG9yKHRoaXMuJHBvcy5yb3csdGhpcy4kcG9zLmNvbHVtbik7dmFyIGk9dGhpcy5wb3M7aS4kaW5zZXJ0UmlnaHQ9ITAsaS5kZXRhY2goKSxpLm1hcmtlcklkPW4uYWRkTWFya2VyKG5ldyByKGkucm93LGkuY29sdW1uLGkucm93LGkuY29sdW1uK3RoaXMubGVuZ3RoKSx0aGlzLm1haW5DbGFzcyxudWxsLCExKSx0aGlzLm90aGVycz1bXSx0aGlzLiRvdGhlcnMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj10LmNyZWF0ZUFuY2hvcihuLnJvdyxuLmNvbHVtbik7ci4kaW5zZXJ0UmlnaHQ9ITAsci5kZXRhY2goKSxlLm90aGVycy5wdXNoKHIpfSksbi5zZXRVbmRvU2VsZWN0KCExKX0sdGhpcy5zaG93T3RoZXJNYXJrZXJzPWZ1bmN0aW9uKCl7aWYodGhpcy5vdGhlcnNBY3RpdmUpcmV0dXJuO3ZhciBlPXRoaXMuc2Vzc2lvbix0PXRoaXM7dGhpcy5vdGhlcnNBY3RpdmU9ITAsdGhpcy5vdGhlcnMuZm9yRWFjaChmdW5jdGlvbihuKXtuLm1hcmtlcklkPWUuYWRkTWFya2VyKG5ldyByKG4ucm93LG4uY29sdW1uLG4ucm93LG4uY29sdW1uK3QubGVuZ3RoKSx0Lm90aGVyc0NsYXNzLG51bGwsITEpfSl9LHRoaXMuaGlkZU90aGVyTWFya2Vycz1mdW5jdGlvbigpe2lmKCF0aGlzLm90aGVyc0FjdGl2ZSlyZXR1cm47dGhpcy5vdGhlcnNBY3RpdmU9ITE7Zm9yKHZhciBlPTA7ZTx0aGlzLm90aGVycy5sZW5ndGg7ZSsrKXRoaXMuc2Vzc2lvbi5yZW1vdmVNYXJrZXIodGhpcy5vdGhlcnNbZV0ubWFya2VySWQpfSx0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJHVwZGF0aW5nKXJldHVybiB0aGlzLnVwZGF0ZUFuY2hvcnMoZSk7dmFyIHQ9ZTtpZih0LnN0YXJ0LnJvdyE9PXQuZW5kLnJvdylyZXR1cm47aWYodC5zdGFydC5yb3chPT10aGlzLnBvcy5yb3cpcmV0dXJuO3RoaXMuJHVwZGF0aW5nPSEwO3ZhciBuPWUuYWN0aW9uPT09Imluc2VydCI/dC5lbmQuY29sdW1uLXQuc3RhcnQuY29sdW1uOnQuc3RhcnQuY29sdW1uLXQuZW5kLmNvbHVtbixpPXQuc3RhcnQuY29sdW1uPj10aGlzLnBvcy5jb2x1bW4mJnQuc3RhcnQuY29sdW1uPD10aGlzLnBvcy5jb2x1bW4rdGhpcy5sZW5ndGgrMSxzPXQuc3RhcnQuY29sdW1uLXRoaXMucG9zLmNvbHVtbjt0aGlzLnVwZGF0ZUFuY2hvcnMoZSksaSYmKHRoaXMubGVuZ3RoKz1uKTtpZihpJiYhdGhpcy5zZXNzaW9uLiRmcm9tVW5kbylpZihlLmFjdGlvbj09PSJpbnNlcnQiKWZvcih2YXIgbz10aGlzLm90aGVycy5sZW5ndGgtMTtvPj0wO28tLSl7dmFyIHU9dGhpcy5vdGhlcnNbb10sYT17cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbitzfTt0aGlzLmRvYy5pbnNlcnRNZXJnZWRMaW5lcyhhLGUubGluZXMpfWVsc2UgaWYoZS5hY3Rpb249PT0icmVtb3ZlIilmb3IodmFyIG89dGhpcy5vdGhlcnMubGVuZ3RoLTE7bz49MDtvLS0pe3ZhciB1PXRoaXMub3RoZXJzW29dLGE9e3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rc307dGhpcy5kb2MucmVtb3ZlKG5ldyByKGEucm93LGEuY29sdW1uLGEucm93LGEuY29sdW1uLW4pKX10aGlzLiR1cGRhdGluZz0hMSx0aGlzLnVwZGF0ZU1hcmtlcnMoKX0sdGhpcy51cGRhdGVBbmNob3JzPWZ1bmN0aW9uKGUpe3RoaXMucG9zLm9uQ2hhbmdlKGUpO2Zvcih2YXIgdD10aGlzLm90aGVycy5sZW5ndGg7dC0tOyl0aGlzLm90aGVyc1t0XS5vbkNoYW5nZShlKTt0aGlzLnVwZGF0ZU1hcmtlcnMoKX0sdGhpcy51cGRhdGVNYXJrZXJzPWZ1bmN0aW9uKCl7aWYodGhpcy4kdXBkYXRpbmcpcmV0dXJuO3ZhciBlPXRoaXMsdD10aGlzLnNlc3Npb24sbj1mdW5jdGlvbihuLGkpe3QucmVtb3ZlTWFya2VyKG4ubWFya2VySWQpLG4ubWFya2VySWQ9dC5hZGRNYXJrZXIobmV3IHIobi5yb3csbi5jb2x1bW4sbi5yb3csbi5jb2x1bW4rZS5sZW5ndGgpLGksbnVsbCwhMSl9O24odGhpcy5wb3MsdGhpcy5tYWluQ2xhc3MpO2Zvcih2YXIgaT10aGlzLm90aGVycy5sZW5ndGg7aS0tOyluKHRoaXMub3RoZXJzW2ldLHRoaXMub3RoZXJzQ2xhc3MpfSx0aGlzLm9uQ3Vyc29yQ2hhbmdlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJHVwZGF0aW5nfHwhdGhpcy5zZXNzaW9uKXJldHVybjt2YXIgdD10aGlzLnNlc3Npb24uc2VsZWN0aW9uLmdldEN1cnNvcigpO3Qucm93PT09dGhpcy5wb3Mucm93JiZ0LmNvbHVtbj49dGhpcy5wb3MuY29sdW1uJiZ0LmNvbHVtbjw9dGhpcy5wb3MuY29sdW1uK3RoaXMubGVuZ3RoPyh0aGlzLnNob3dPdGhlck1hcmtlcnMoKSx0aGlzLl9lbWl0KCJjdXJzb3JFbnRlciIsZSkpOih0aGlzLmhpZGVPdGhlck1hcmtlcnMoKSx0aGlzLl9lbWl0KCJjdXJzb3JMZWF2ZSIsZSkpfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMuc2Vzc2lvbi5yZW1vdmVNYXJrZXIodGhpcy5wb3MmJnRoaXMucG9zLm1hcmtlcklkKSx0aGlzLmhpZGVPdGhlck1hcmtlcnMoKSx0aGlzLmRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuJG9uVXBkYXRlKSx0aGlzLnNlc3Npb24uc2VsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZUN1cnNvciIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpLHRoaXMuc2Vzc2lvbi5zZXRVbmRvU2VsZWN0KCEwKSx0aGlzLnNlc3Npb249bnVsbH0sdGhpcy5jYW5jZWw9ZnVuY3Rpb24oKXtpZih0aGlzLiR1bmRvU3RhY2tEZXB0aD09PS0xKXJldHVybjt2YXIgZT10aGlzLnNlc3Npb24uZ2V0VW5kb01hbmFnZXIoKSx0PShlLiR1bmRvU3RhY2t8fGUuJHVuZG9zdGFjaykubGVuZ3RoLXRoaXMuJHVuZG9TdGFja0RlcHRoO2Zvcih2YXIgbj0wO248dDtuKyspZS51bmRvKHRoaXMuc2Vzc2lvbiwhMCk7dGhpcy5zZWxlY3Rpb25CZWZvcmUmJnRoaXMuc2Vzc2lvbi5zZWxlY3Rpb24uZnJvbUpTT04odGhpcy5zZWxlY3Rpb25CZWZvcmUpfX0pLmNhbGwoby5wcm90b3R5cGUpLHQuUGxhY2VIb2xkZXI9b30pLGFjZS5kZWZpbmUoImFjZS9tb3VzZS9tdWx0aV9zZWxlY3RfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZXZlbnQiLCJhY2UvbGliL3VzZXJhZ2VudCJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGUucm93PT10LnJvdyYmZS5jb2x1bW49PXQuY29sdW1ufWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZS5kb21FdmVudCxuPXQuYWx0S2V5LG89dC5zaGlmdEtleSx1PXQuY3RybEtleSxhPWUuZ2V0QWNjZWxLZXkoKSxmPWUuZ2V0QnV0dG9uKCk7dSYmaS5pc01hYyYmKGY9dC5idXR0b24pO2lmKGUuZWRpdG9yLmluTXVsdGlTZWxlY3RNb2RlJiZmPT0yKXtlLmVkaXRvci50ZXh0SW5wdXQub25Db250ZXh0TWVudShlLmRvbUV2ZW50KTtyZXR1cm59aWYoIXUmJiFuJiYhYSl7Zj09PTAmJmUuZWRpdG9yLmluTXVsdGlTZWxlY3RNb2RlJiZlLmVkaXRvci5leGl0TXVsdGlTZWxlY3RNb2RlKCk7cmV0dXJufWlmKGYhPT0wKXJldHVybjt2YXIgbD1lLmVkaXRvcixjPWwuc2VsZWN0aW9uLGg9bC5pbk11bHRpU2VsZWN0TW9kZSxwPWUuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLGQ9Yy5nZXRDdXJzb3IoKSx2PWUuaW5TZWxlY3Rpb24oKXx8Yy5pc0VtcHR5KCkmJnMocCxkKSxtPWUueCxnPWUueSx5PWZ1bmN0aW9uKGUpe209ZS5jbGllbnRYLGc9ZS5jbGllbnRZfSxiPWwuc2Vzc2lvbix3PWwucmVuZGVyZXIucGl4ZWxUb1NjcmVlbkNvb3JkaW5hdGVzKG0sZyksRT13LFM7aWYobC4kbW91c2VIYW5kbGVyLiRlbmFibGVKdW1wVG9EZWYpdSYmbnx8YSYmbj9TPW8/ImJsb2NrIjoiYWRkIjpuJiZsLiRibG9ja1NlbGVjdEVuYWJsZWQmJihTPSJibG9jayIpO2Vsc2UgaWYoYSYmIW4pe1M9ImFkZCI7aWYoIWgmJm8pcmV0dXJufWVsc2UgbiYmbC4kYmxvY2tTZWxlY3RFbmFibGVkJiYoUz0iYmxvY2siKTtTJiZpLmlzTWFjJiZ0LmN0cmxLZXkmJmwuJG1vdXNlSGFuZGxlci5jYW5jZWxDb250ZXh0TWVudSgpO2lmKFM9PSJhZGQiKXtpZighaCYmdilyZXR1cm47aWYoIWgpe3ZhciB4PWMudG9PcmllbnRlZFJhbmdlKCk7bC5hZGRTZWxlY3Rpb25NYXJrZXIoeCl9dmFyIFQ9Yy5yYW5nZUxpc3QucmFuZ2VBdFBvaW50KHApO2wuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZT0hMCxvJiYoVD1udWxsLHg9Yy5yYW5nZXNbMF18fHgsbC5yZW1vdmVTZWxlY3Rpb25NYXJrZXIoeCkpLGwub25jZSgibW91c2V1cCIsZnVuY3Rpb24oKXt2YXIgZT1jLnRvT3JpZW50ZWRSYW5nZSgpO1QmJmUuaXNFbXB0eSgpJiZzKFQuY3Vyc29yLGUuY3Vyc29yKT9jLnN1YnN0cmFjdFBvaW50KGUuY3Vyc29yKToobz9jLnN1YnN0cmFjdFBvaW50KHguY3Vyc29yKTp4JiYobC5yZW1vdmVTZWxlY3Rpb25NYXJrZXIoeCksYy5hZGRSYW5nZSh4KSksYy5hZGRSYW5nZShlKSksbC5pblZpcnR1YWxTZWxlY3Rpb25Nb2RlPSExfSl9ZWxzZSBpZihTPT0iYmxvY2siKXtlLnN0b3AoKSxsLmluVmlydHVhbFNlbGVjdGlvbk1vZGU9ITA7dmFyIE4sQz1bXSxrPWZ1bmN0aW9uKCl7dmFyIGU9bC5yZW5kZXJlci5waXhlbFRvU2NyZWVuQ29vcmRpbmF0ZXMobSxnKSx0PWIuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGUucm93LGUuY29sdW1uLGUub2Zmc2V0WCk7aWYocyhFLGUpJiZzKHQsYy5sZWFkKSlyZXR1cm47RT1lLGwuc2VsZWN0aW9uLm1vdmVUb1Bvc2l0aW9uKHQpLGwucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKSxsLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoQyksQz1jLnJlY3Rhbmd1bGFyUmFuZ2VCbG9jayhFLHcpLGwuJG1vdXNlSGFuZGxlci4kY2xpY2tTZWxlY3Rpb24mJkMubGVuZ3RoPT0xJiZDWzBdLmlzRW1wdHkoKSYmKENbMF09bC4kbW91c2VIYW5kbGVyLiRjbGlja1NlbGVjdGlvbi5jbG9uZSgpKSxDLmZvckVhY2gobC5hZGRTZWxlY3Rpb25NYXJrZXIsbCksbC51cGRhdGVTZWxlY3Rpb25NYXJrZXJzKCl9O2gmJiFhP2MudG9TaW5nbGVSYW5nZSgpOiFoJiZhJiYoTj1jLnRvT3JpZW50ZWRSYW5nZSgpLGwuYWRkU2VsZWN0aW9uTWFya2VyKE4pKSxvP3c9Yi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oYy5sZWFkKTpjLm1vdmVUb1Bvc2l0aW9uKHApLEU9e3JvdzotMSxjb2x1bW46LTF9O3ZhciBMPWZ1bmN0aW9uKGUpe2soKSxjbGVhckludGVydmFsKE8pLGwucmVtb3ZlU2VsZWN0aW9uTWFya2VycyhDKSxDLmxlbmd0aHx8KEM9W2MudG9PcmllbnRlZFJhbmdlKCldKSxOJiYobC5yZW1vdmVTZWxlY3Rpb25NYXJrZXIoTiksYy50b1NpbmdsZVJhbmdlKE4pKTtmb3IodmFyIHQ9MDt0PEMubGVuZ3RoO3QrKyljLmFkZFJhbmdlKENbdF0pO2wuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZT0hMSxsLiRtb3VzZUhhbmRsZXIuJGNsaWNrU2VsZWN0aW9uPW51bGx9LEE9aztyLmNhcHR1cmUobC5jb250YWluZXIseSxMKTt2YXIgTz1zZXRJbnRlcnZhbChmdW5jdGlvbigpe0EoKX0sMjApO3JldHVybiBlLnByZXZlbnREZWZhdWx0KCl9fXZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpO3Qub25Nb3VzZURvd249b30pLGFjZS5kZWZpbmUoImFjZS9jb21tYW5kcy9tdWx0aV9zZWxlY3RfY29tbWFuZHMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uva2V5Ym9hcmQvaGFzaF9oYW5kbGVyIl0sZnVuY3Rpb24oZSx0LG4pe3QuZGVmYXVsdENvbW1hbmRzPVt7bmFtZToiYWRkQ3Vyc29yQWJvdmUiLGRlc2NyaXB0aW9uOiJBZGQgY3Vyc29yIGFib3ZlIixleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0TW9yZUxpbmVzKC0xKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1VcCIsbWFjOiJDdHJsLUFsdC1VcCJ9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToiYWRkQ3Vyc29yQmVsb3ciLGRlc2NyaXB0aW9uOiJBZGQgY3Vyc29yIGJlbG93IixleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0TW9yZUxpbmVzKDEpfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LURvd24iLG1hYzoiQ3RybC1BbHQtRG93biJ9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToiYWRkQ3Vyc29yQWJvdmVTa2lwQ3VycmVudCIsZGVzY3JpcHRpb246IkFkZCBjdXJzb3IgYWJvdmUgKHNraXAgY3VycmVudCkiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RNb3JlTGluZXMoLTEsITApfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LVNoaWZ0LVVwIixtYWM6IkN0cmwtQWx0LVNoaWZ0LVVwIn0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIscmVhZE9ubHk6ITB9LHtuYW1lOiJhZGRDdXJzb3JCZWxvd1NraXBDdXJyZW50IixkZXNjcmlwdGlvbjoiQWRkIGN1cnNvciBiZWxvdyAoc2tpcCBjdXJyZW50KSIsZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdE1vcmVMaW5lcygxLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1Eb3duIixtYWM6IkN0cmwtQWx0LVNoaWZ0LURvd24ifSxzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdE1vcmVCZWZvcmUiLGRlc2NyaXB0aW9uOiJTZWxlY3QgbW9yZSBiZWZvcmUiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RNb3JlKC0xKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1MZWZ0IixtYWM6IkN0cmwtQWx0LUxlZnQifSxzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdE1vcmVBZnRlciIsZGVzY3JpcHRpb246IlNlbGVjdCBtb3JlIGFmdGVyIixleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0TW9yZSgxKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1SaWdodCIsbWFjOiJDdHJsLUFsdC1SaWdodCJ9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0TmV4dEJlZm9yZSIsZGVzY3JpcHRpb246IlNlbGVjdCBuZXh0IGJlZm9yZSIsZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdE1vcmUoLTEsITApfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LVNoaWZ0LUxlZnQiLG1hYzoiQ3RybC1BbHQtU2hpZnQtTGVmdCJ9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0TmV4dEFmdGVyIixkZXNjcmlwdGlvbjoiU2VsZWN0IG5leHQgYWZ0ZXIiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RNb3JlKDEsITApfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LVNoaWZ0LVJpZ2h0IixtYWM6IkN0cmwtQWx0LVNoaWZ0LVJpZ2h0In0sc2Nyb2xsSW50b1ZpZXc6ImN1cnNvciIscmVhZE9ubHk6ITB9LHtuYW1lOiJzcGxpdEludG9MaW5lcyIsZGVzY3JpcHRpb246IlNwbGl0IGludG8gbGluZXMiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5tdWx0aVNlbGVjdC5zcGxpdEludG9MaW5lcygpfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LUwiLG1hYzoiQ3RybC1BbHQtTCJ9LHJlYWRPbmx5OiEwfSx7bmFtZToiYWxpZ25DdXJzb3JzIixkZXNjcmlwdGlvbjoiQWxpZ24gY3Vyc29ycyIsZXhlYzpmdW5jdGlvbihlKXtlLmFsaWduQ3Vyc29ycygpfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LUEiLG1hYzoiQ3RybC1BbHQtQSJ9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IifSx7bmFtZToiZmluZEFsbCIsZGVzY3JpcHRpb246IkZpbmQgYWxsIixleGVjOmZ1bmN0aW9uKGUpe2UuZmluZEFsbCgpfSxiaW5kS2V5Ont3aW46IkN0cmwtQWx0LUsiLG1hYzoiQ3RybC1BbHQtRyJ9LHNjcm9sbEludG9WaWV3OiJjdXJzb3IiLHJlYWRPbmx5OiEwfV0sdC5tdWx0aVNlbGVjdENvbW1hbmRzPVt7bmFtZToic2luZ2xlU2VsZWN0aW9uIixkZXNjcmlwdGlvbjoiU2luZ2xlIHNlbGVjdGlvbiIsYmluZEtleToiZXNjIixleGVjOmZ1bmN0aW9uKGUpe2UuZXhpdE11bHRpU2VsZWN0TW9kZSgpfSxzY3JvbGxJbnRvVmlldzoiY3Vyc29yIixyZWFkT25seTohMCxpc0F2YWlsYWJsZTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5pbk11bHRpU2VsZWN0TW9kZX19XTt2YXIgcj1lKCIuLi9rZXlib2FyZC9oYXNoX2hhbmRsZXIiKS5IYXNoSGFuZGxlcjt0LmtleWJvYXJkSGFuZGxlcj1uZXcgcih0Lm11bHRpU2VsZWN0Q29tbWFuZHMpfSksYWNlLmRlZmluZSgiYWNlL211bHRpX3NlbGVjdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZV9saXN0IiwiYWNlL3JhbmdlIiwiYWNlL3NlbGVjdGlvbiIsImFjZS9tb3VzZS9tdWx0aV9zZWxlY3RfaGFuZGxlciIsImFjZS9saWIvZXZlbnQiLCJhY2UvbGliL2xhbmciLCJhY2UvY29tbWFuZHMvbXVsdGlfc2VsZWN0X2NvbW1hbmRzIiwiYWNlL3NlYXJjaCIsImFjZS9lZGl0X3Nlc3Npb24iLCJhY2UvZWRpdG9yIiwiYWNlL2NvbmZpZyJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBoKGUsdCxuKXtyZXR1cm4gYy4kb3B0aW9ucy53cmFwPSEwLGMuJG9wdGlvbnMubmVlZGxlPXQsYy4kb3B0aW9ucy5iYWNrd2FyZHM9bj09LTEsYy5maW5kKGUpfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZS5yb3c9PXQucm93JiZlLmNvbHVtbj09dC5jb2x1bW59ZnVuY3Rpb24gbShlKXtpZihlLiRtdWx0aXNlbGVjdE9uU2Vzc2lvbkNoYW5nZSlyZXR1cm47ZS4kb25BZGRSYW5nZT1lLiRvbkFkZFJhbmdlLmJpbmQoZSksZS4kb25SZW1vdmVSYW5nZT1lLiRvblJlbW92ZVJhbmdlLmJpbmQoZSksZS4kb25NdWx0aVNlbGVjdD1lLiRvbk11bHRpU2VsZWN0LmJpbmQoZSksZS4kb25TaW5nbGVTZWxlY3Q9ZS4kb25TaW5nbGVTZWxlY3QuYmluZChlKSxlLiRtdWx0aXNlbGVjdE9uU2Vzc2lvbkNoYW5nZT10Lm9uU2Vzc2lvbkNoYW5nZS5iaW5kKGUpLGUuJGNoZWNrTXVsdGlzZWxlY3RDaGFuZ2U9ZS4kY2hlY2tNdWx0aXNlbGVjdENoYW5nZS5iaW5kKGUpLGUuJG11bHRpc2VsZWN0T25TZXNzaW9uQ2hhbmdlKGUpLGUub24oImNoYW5nZVNlc3Npb24iLGUuJG11bHRpc2VsZWN0T25TZXNzaW9uQ2hhbmdlKSxlLm9uKCJtb3VzZWRvd24iLG8pLGUuY29tbWFuZHMuYWRkQ29tbWFuZHMoZi5kZWZhdWx0Q29tbWFuZHMpLGcoZSl9ZnVuY3Rpb24gZyhlKXtmdW5jdGlvbiByKHQpe24mJihlLnJlbmRlcmVyLnNldE1vdXNlQ3Vyc29yKCIiKSxuPSExKX1pZighZS50ZXh0SW5wdXQpcmV0dXJuO3ZhciB0PWUudGV4dElucHV0LmdldEVsZW1lbnQoKSxuPSExO3UuYWRkTGlzdGVuZXIodCwia2V5ZG93biIsZnVuY3Rpb24odCl7dmFyIGk9dC5rZXlDb2RlPT0xOCYmISh0LmN0cmxLZXl8fHQuc2hpZnRLZXl8fHQubWV0YUtleSk7ZS4kYmxvY2tTZWxlY3RFbmFibGVkJiZpP258fChlLnJlbmRlcmVyLnNldE1vdXNlQ3Vyc29yKCJjcm9zc2hhaXIiKSxuPSEwKTpuJiZyKCl9KSx1LmFkZExpc3RlbmVyKHQsImtleXVwIixyKSx1LmFkZExpc3RlbmVyKHQsImJsdXIiLHIpfXZhciByPWUoIi4vcmFuZ2VfbGlzdCIpLlJhbmdlTGlzdCxpPWUoIi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vc2VsZWN0aW9uIikuU2VsZWN0aW9uLG89ZSgiLi9tb3VzZS9tdWx0aV9zZWxlY3RfaGFuZGxlciIpLm9uTW91c2VEb3duLHU9ZSgiLi9saWIvZXZlbnQiKSxhPWUoIi4vbGliL2xhbmciKSxmPWUoIi4vY29tbWFuZHMvbXVsdGlfc2VsZWN0X2NvbW1hbmRzIik7dC5jb21tYW5kcz1mLmRlZmF1bHRDb21tYW5kcy5jb25jYXQoZi5tdWx0aVNlbGVjdENvbW1hbmRzKTt2YXIgbD1lKCIuL3NlYXJjaCIpLlNlYXJjaCxjPW5ldyBsLHA9ZSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbjsoZnVuY3Rpb24oKXt0aGlzLmdldFNlbGVjdGlvbk1hcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2VsZWN0aW9uTWFya2Vyc319KS5jYWxsKHAucHJvdG90eXBlKSxmdW5jdGlvbigpe3RoaXMucmFuZ2VzPW51bGwsdGhpcy5yYW5nZUxpc3Q9bnVsbCx0aGlzLmFkZFJhbmdlPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCF0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiZ0aGlzLnJhbmdlQ291bnQ9PT0wKXt2YXIgbj10aGlzLnRvT3JpZW50ZWRSYW5nZSgpO3RoaXMucmFuZ2VMaXN0LmFkZChuKSx0aGlzLnJhbmdlTGlzdC5hZGQoZSk7aWYodGhpcy5yYW5nZUxpc3QucmFuZ2VzLmxlbmd0aCE9MilyZXR1cm4gdGhpcy5yYW5nZUxpc3QucmVtb3ZlQWxsKCksdHx8dGhpcy5mcm9tT3JpZW50ZWRSYW5nZShlKTt0aGlzLnJhbmdlTGlzdC5yZW1vdmVBbGwoKSx0aGlzLnJhbmdlTGlzdC5hZGQobiksdGhpcy4kb25BZGRSYW5nZShuKX1lLmN1cnNvcnx8KGUuY3Vyc29yPWUuZW5kKTt2YXIgcj10aGlzLnJhbmdlTGlzdC5hZGQoZSk7cmV0dXJuIHRoaXMuJG9uQWRkUmFuZ2UoZSksci5sZW5ndGgmJnRoaXMuJG9uUmVtb3ZlUmFuZ2UociksdGhpcy5yYW5nZUNvdW50PjEmJiF0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiYodGhpcy5fc2lnbmFsKCJtdWx0aVNlbGVjdCIpLHRoaXMuaW5NdWx0aVNlbGVjdE1vZGU9ITAsdGhpcy5zZXNzaW9uLiR1bmRvU2VsZWN0PSExLHRoaXMucmFuZ2VMaXN0LmF0dGFjaCh0aGlzLnNlc3Npb24pKSx0fHx0aGlzLmZyb21PcmllbnRlZFJhbmdlKGUpfSx0aGlzLnRvU2luZ2xlUmFuZ2U9ZnVuY3Rpb24oZSl7ZT1lfHx0aGlzLnJhbmdlc1swXTt2YXIgdD10aGlzLnJhbmdlTGlzdC5yZW1vdmVBbGwoKTt0Lmxlbmd0aCYmdGhpcy4kb25SZW1vdmVSYW5nZSh0KSxlJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKGUpfSx0aGlzLnN1YnN0cmFjdFBvaW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmFuZ2VMaXN0LnN1YnN0cmFjdFBvaW50KGUpO2lmKHQpcmV0dXJuIHRoaXMuJG9uUmVtb3ZlUmFuZ2UodCksdFswXX0sdGhpcy5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yYW5nZUxpc3QubWVyZ2UoKTtlLmxlbmd0aCYmdGhpcy4kb25SZW1vdmVSYW5nZShlKX0sdGhpcy4kb25BZGRSYW5nZT1mdW5jdGlvbihlKXt0aGlzLnJhbmdlQ291bnQ9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLmxlbmd0aCx0aGlzLnJhbmdlcy51bnNoaWZ0KGUpLHRoaXMuX3NpZ25hbCgiYWRkUmFuZ2UiLHtyYW5nZTplfSl9LHRoaXMuJG9uUmVtb3ZlUmFuZ2U9ZnVuY3Rpb24oZSl7dGhpcy5yYW5nZUNvdW50PXRoaXMucmFuZ2VMaXN0LnJhbmdlcy5sZW5ndGg7aWYodGhpcy5yYW5nZUNvdW50PT0xJiZ0aGlzLmluTXVsdGlTZWxlY3RNb2RlKXt2YXIgdD10aGlzLnJhbmdlTGlzdC5yYW5nZXMucG9wKCk7ZS5wdXNoKHQpLHRoaXMucmFuZ2VDb3VudD0wfWZvcih2YXIgbj1lLmxlbmd0aDtuLS07KXt2YXIgcj10aGlzLnJhbmdlcy5pbmRleE9mKGVbbl0pO3RoaXMucmFuZ2VzLnNwbGljZShyLDEpfXRoaXMuX3NpZ25hbCgicmVtb3ZlUmFuZ2UiLHtyYW5nZXM6ZX0pLHRoaXMucmFuZ2VDb3VudD09PTAmJnRoaXMuaW5NdWx0aVNlbGVjdE1vZGUmJih0aGlzLmluTXVsdGlTZWxlY3RNb2RlPSExLHRoaXMuX3NpZ25hbCgic2luZ2xlU2VsZWN0IiksdGhpcy5zZXNzaW9uLiR1bmRvU2VsZWN0PSEwLHRoaXMucmFuZ2VMaXN0LmRldGFjaCh0aGlzLnNlc3Npb24pKSx0PXR8fHRoaXMucmFuZ2VzWzBdLHQmJiF0LmlzRXF1YWwodGhpcy5nZXRSYW5nZSgpKSYmdGhpcy5mcm9tT3JpZW50ZWRSYW5nZSh0KX0sdGhpcy4kaW5pdFJhbmdlTGlzdD1mdW5jdGlvbigpe2lmKHRoaXMucmFuZ2VMaXN0KXJldHVybjt0aGlzLnJhbmdlTGlzdD1uZXcgcix0aGlzLnJhbmdlcz1bXSx0aGlzLnJhbmdlQ291bnQ9MH0sdGhpcy5nZXRBbGxSYW5nZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZUNvdW50P3RoaXMucmFuZ2VMaXN0LnJhbmdlcy5jb25jYXQoKTpbdGhpcy5nZXRSYW5nZSgpXX0sdGhpcy5zcGxpdEludG9MaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMucmFuZ2VDb3VudD4xKXt2YXIgZT10aGlzLnJhbmdlTGlzdC5yYW5nZXMsdD1lW2UubGVuZ3RoLTFdLG49aS5mcm9tUG9pbnRzKGVbMF0uc3RhcnQsdC5lbmQpO3RoaXMudG9TaW5nbGVSYW5nZSgpLHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2Uobix0LmN1cnNvcj09dC5zdGFydCl9ZWxzZXt2YXIgbj10aGlzLmdldFJhbmdlKCkscj10aGlzLmlzQmFja3dhcmRzKCkscz1uLnN0YXJ0LnJvdyxvPW4uZW5kLnJvdztpZihzPT1vKXtpZihyKXZhciB1PW4uZW5kLGE9bi5zdGFydDtlbHNlIHZhciB1PW4uc3RhcnQsYT1uLmVuZDt0aGlzLmFkZFJhbmdlKGkuZnJvbVBvaW50cyhhLGEpKSx0aGlzLmFkZFJhbmdlKGkuZnJvbVBvaW50cyh1LHUpKTtyZXR1cm59dmFyIGY9W10sbD10aGlzLmdldExpbmVSYW5nZShzLCEwKTtsLnN0YXJ0LmNvbHVtbj1uLnN0YXJ0LmNvbHVtbixmLnB1c2gobCk7Zm9yKHZhciBjPXMrMTtjPG87YysrKWYucHVzaCh0aGlzLmdldExpbmVSYW5nZShjLCEwKSk7bD10aGlzLmdldExpbmVSYW5nZShvLCEwKSxsLmVuZC5jb2x1bW49bi5lbmQuY29sdW1uLGYucHVzaChsKSxmLmZvckVhY2godGhpcy5hZGRSYW5nZSx0aGlzKX19LHRoaXMudG9nZ2xlQmxvY2tTZWxlY3Rpb249ZnVuY3Rpb24oKXtpZih0aGlzLnJhbmdlQ291bnQ+MSl7dmFyIGU9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLHQ9ZVtlLmxlbmd0aC0xXSxuPWkuZnJvbVBvaW50cyhlWzBdLnN0YXJ0LHQuZW5kKTt0aGlzLnRvU2luZ2xlUmFuZ2UoKSx0aGlzLnNldFNlbGVjdGlvblJhbmdlKG4sdC5jdXJzb3I9PXQuc3RhcnQpfWVsc2V7dmFyIHI9dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLmN1cnNvcikscz10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuYW5jaG9yKSxvPXRoaXMucmVjdGFuZ3VsYXJSYW5nZUJsb2NrKHIscyk7by5mb3JFYWNoKHRoaXMuYWRkUmFuZ2UsdGhpcyl9fSx0aGlzLnJlY3Rhbmd1bGFyUmFuZ2VCbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10scz1lLmNvbHVtbjx0LmNvbHVtbjtpZihzKXZhciBvPWUuY29sdW1uLHU9dC5jb2x1bW4sYT1lLm9mZnNldFgsZj10Lm9mZnNldFg7ZWxzZSB2YXIgbz10LmNvbHVtbix1PWUuY29sdW1uLGE9dC5vZmZzZXRYLGY9ZS5vZmZzZXRYO3ZhciBsPWUucm93PHQucm93O2lmKGwpdmFyIGM9ZS5yb3csaD10LnJvdztlbHNlIHZhciBjPXQucm93LGg9ZS5yb3c7bzwwJiYobz0wKSxjPDAmJihjPTApLGM9PWgmJihuPSEwKTt2YXIgcDtmb3IodmFyIGQ9YztkPD1oO2QrKyl7dmFyIG09aS5mcm9tUG9pbnRzKHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZCxvLGEpLHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZCx1LGYpKTtpZihtLmlzRW1wdHkoKSl7aWYocCYmdihtLmVuZCxwKSlicmVhaztwPW0uZW5kfW0uY3Vyc29yPXM/bS5zdGFydDptLmVuZCxyLnB1c2gobSl9bCYmci5yZXZlcnNlKCk7aWYoIW4pe3ZhciBnPXIubGVuZ3RoLTE7d2hpbGUocltnXS5pc0VtcHR5KCkmJmc+MClnLS07aWYoZz4wKXt2YXIgeT0wO3doaWxlKHJbeV0uaXNFbXB0eSgpKXkrK31mb3IodmFyIGI9ZztiPj15O2ItLSlyW2JdLmlzRW1wdHkoKSYmci5zcGxpY2UoYiwxKX1yZXR1cm4gcn19LmNhbGwocy5wcm90b3R5cGUpO3ZhciBkPWUoIi4vZWRpdG9yIikuRWRpdG9yOyhmdW5jdGlvbigpe3RoaXMudXBkYXRlU2VsZWN0aW9uTWFya2Vycz1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlQ3Vyc29yKCksdGhpcy5yZW5kZXJlci51cGRhdGVCYWNrTWFya2VycygpfSx0aGlzLmFkZFNlbGVjdGlvbk1hcmtlcj1mdW5jdGlvbihlKXtlLmN1cnNvcnx8KGUuY3Vyc29yPWUuZW5kKTt2YXIgdD10aGlzLmdldFNlbGVjdGlvblN0eWxlKCk7cmV0dXJuIGUubWFya2VyPXRoaXMuc2Vzc2lvbi5hZGRNYXJrZXIoZSwiYWNlX3NlbGVjdGlvbiIsdCksdGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLnB1c2goZSksdGhpcy5zZXNzaW9uLnNlbGVjdGlvbk1hcmtlckNvdW50PXRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycy5sZW5ndGgsZX0sdGhpcy5yZW1vdmVTZWxlY3Rpb25NYXJrZXI9ZnVuY3Rpb24oZSl7aWYoIWUubWFya2VyKXJldHVybjt0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKGUubWFya2VyKTt2YXIgdD10aGlzLnNlc3Npb24uJHNlbGVjdGlvbk1hcmtlcnMuaW5kZXhPZihlKTt0IT0tMSYmdGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLnNwbGljZSh0LDEpLHRoaXMuc2Vzc2lvbi5zZWxlY3Rpb25NYXJrZXJDb3VudD10aGlzLnNlc3Npb24uJHNlbGVjdGlvbk1hcmtlcnMubGVuZ3RofSx0aGlzLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzO2Zvcih2YXIgbj1lLmxlbmd0aDtuLS07KXt2YXIgcj1lW25dO2lmKCFyLm1hcmtlciljb250aW51ZTt0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKHIubWFya2VyKTt2YXIgaT10LmluZGV4T2Yocik7aSE9LTEmJnQuc3BsaWNlKGksMSl9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbk1hcmtlckNvdW50PXQubGVuZ3RofSx0aGlzLiRvbkFkZFJhbmdlPWZ1bmN0aW9uKGUpe3RoaXMuYWRkU2VsZWN0aW9uTWFya2VyKGUucmFuZ2UpLHRoaXMucmVuZGVyZXIudXBkYXRlQ3Vyc29yKCksdGhpcy5yZW5kZXJlci51cGRhdGVCYWNrTWFya2VycygpfSx0aGlzLiRvblJlbW92ZVJhbmdlPWZ1bmN0aW9uKGUpe3RoaXMucmVtb3ZlU2VsZWN0aW9uTWFya2VycyhlLnJhbmdlcyksdGhpcy5yZW5kZXJlci51cGRhdGVDdXJzb3IoKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUJhY2tNYXJrZXJzKCl9LHRoaXMuJG9uTXVsdGlTZWxlY3Q9ZnVuY3Rpb24oZSl7aWYodGhpcy5pbk11bHRpU2VsZWN0TW9kZSlyZXR1cm47dGhpcy5pbk11bHRpU2VsZWN0TW9kZT0hMCx0aGlzLnNldFN0eWxlKCJhY2VfbXVsdGlzZWxlY3QiKSx0aGlzLmtleUJpbmRpbmcuYWRkS2V5Ym9hcmRIYW5kbGVyKGYua2V5Ym9hcmRIYW5kbGVyKSx0aGlzLmNvbW1hbmRzLnNldERlZmF1bHRIYW5kbGVyKCJleGVjIix0aGlzLiRvbk11bHRpU2VsZWN0RXhlYyksdGhpcy5yZW5kZXJlci51cGRhdGVDdXJzb3IoKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUJhY2tNYXJrZXJzKCl9LHRoaXMuJG9uU2luZ2xlU2VsZWN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2Vzc2lvbi5tdWx0aVNlbGVjdC5pblZpcnR1YWxNb2RlKXJldHVybjt0aGlzLmluTXVsdGlTZWxlY3RNb2RlPSExLHRoaXMudW5zZXRTdHlsZSgiYWNlX211bHRpc2VsZWN0IiksdGhpcy5rZXlCaW5kaW5nLnJlbW92ZUtleWJvYXJkSGFuZGxlcihmLmtleWJvYXJkSGFuZGxlciksdGhpcy5jb21tYW5kcy5yZW1vdmVEZWZhdWx0SGFuZGxlcigiZXhlYyIsdGhpcy4kb25NdWx0aVNlbGVjdEV4ZWMpLHRoaXMucmVuZGVyZXIudXBkYXRlQ3Vyc29yKCksdGhpcy5yZW5kZXJlci51cGRhdGVCYWNrTWFya2VycygpLHRoaXMuX2VtaXQoImNoYW5nZVNlbGVjdGlvbiIpfSx0aGlzLiRvbk11bHRpU2VsZWN0RXhlYz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbW1hbmQsbj1lLmVkaXRvcjtpZighbi5tdWx0aVNlbGVjdClyZXR1cm47aWYoIXQubXVsdGlTZWxlY3RBY3Rpb24pe3ZhciByPXQuZXhlYyhuLGUuYXJnc3x8e30pO24ubXVsdGlTZWxlY3QuYWRkUmFuZ2Uobi5tdWx0aVNlbGVjdC50b09yaWVudGVkUmFuZ2UoKSksbi5tdWx0aVNlbGVjdC5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzKCl9ZWxzZSB0Lm11bHRpU2VsZWN0QWN0aW9uPT0iZm9yRWFjaCI/cj1uLmZvckVhY2hTZWxlY3Rpb24odCxlLmFyZ3MpOnQubXVsdGlTZWxlY3RBY3Rpb249PSJmb3JFYWNoTGluZSI/cj1uLmZvckVhY2hTZWxlY3Rpb24odCxlLmFyZ3MsITApOnQubXVsdGlTZWxlY3RBY3Rpb249PSJzaW5nbGUiPyhuLmV4aXRNdWx0aVNlbGVjdE1vZGUoKSxyPXQuZXhlYyhuLGUuYXJnc3x8e30pKTpyPXQubXVsdGlTZWxlY3RBY3Rpb24obixlLmFyZ3N8fHt9KTtyZXR1cm4gcn0sdGhpcy5mb3JFYWNoU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmluVmlydHVhbFNlbGVjdGlvbk1vZGUpcmV0dXJuO3ZhciByPW4mJm4ua2VlcE9yZGVyLGk9bj09MXx8biYmbi4kYnlMaW5lcyxvPXRoaXMuc2Vzc2lvbix1PXRoaXMuc2VsZWN0aW9uLGE9dS5yYW5nZUxpc3QsZj0ocj91OmEpLnJhbmdlcyxsO2lmKCFmLmxlbmd0aClyZXR1cm4gZS5leGVjP2UuZXhlYyh0aGlzLHR8fHt9KTplKHRoaXMsdHx8e30pO3ZhciBjPXUuX2V2ZW50UmVnaXN0cnk7dS5fZXZlbnRSZWdpc3RyeT17fTt2YXIgaD1uZXcgcyhvKTt0aGlzLmluVmlydHVhbFNlbGVjdGlvbk1vZGU9ITA7Zm9yKHZhciBwPWYubGVuZ3RoO3AtLTspe2lmKGkpd2hpbGUocD4wJiZmW3BdLnN0YXJ0LnJvdz09ZltwLTFdLmVuZC5yb3cpcC0tO2guZnJvbU9yaWVudGVkUmFuZ2UoZltwXSksaC5pbmRleD1wLHRoaXMuc2VsZWN0aW9uPW8uc2VsZWN0aW9uPWg7dmFyIGQ9ZS5leGVjP2UuZXhlYyh0aGlzLHR8fHt9KTplKHRoaXMsdHx8e30pOyFsJiZkIT09dW5kZWZpbmVkJiYobD1kKSxoLnRvT3JpZW50ZWRSYW5nZShmW3BdKX1oLmRldGFjaCgpLHRoaXMuc2VsZWN0aW9uPW8uc2VsZWN0aW9uPXUsdGhpcy5pblZpcnR1YWxTZWxlY3Rpb25Nb2RlPSExLHUuX2V2ZW50UmVnaXN0cnk9Yyx1Lm1lcmdlT3ZlcmxhcHBpbmdSYW5nZXMoKSx1LnJhbmdlc1swXSYmdS5mcm9tT3JpZW50ZWRSYW5nZSh1LnJhbmdlc1swXSk7dmFyIHY9dGhpcy5yZW5kZXJlci4kc2Nyb2xsQW5pbWF0aW9uO3JldHVybiB0aGlzLm9uQ3Vyc29yQ2hhbmdlKCksdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpLHYmJnYuZnJvbT09di50byYmdGhpcy5yZW5kZXJlci5hbmltYXRlU2Nyb2xsaW5nKHYuZnJvbSksbH0sdGhpcy5leGl0TXVsdGlTZWxlY3RNb2RlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuaW5NdWx0aVNlbGVjdE1vZGV8fHRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZSlyZXR1cm47dGhpcy5tdWx0aVNlbGVjdC50b1NpbmdsZVJhbmdlKCl9LHRoaXMuZ2V0U2VsZWN0ZWRUZXh0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7aWYodGhpcy5pbk11bHRpU2VsZWN0TW9kZSYmIXRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZSl7dmFyIHQ9dGhpcy5tdWx0aVNlbGVjdC5yYW5nZUxpc3QucmFuZ2VzLG49W107Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspbi5wdXNoKHRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UodFtyXSkpO3ZhciBpPXRoaXMuc2Vzc2lvbi5nZXREb2N1bWVudCgpLmdldE5ld0xpbmVDaGFyYWN0ZXIoKTtlPW4uam9pbihpKSxlLmxlbmd0aD09KG4ubGVuZ3RoLTEpKmkubGVuZ3RoJiYoZT0iIil9ZWxzZSB0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCl8fChlPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKSk7cmV0dXJuIGV9LHRoaXMuJGNoZWNrTXVsdGlzZWxlY3RDaGFuZ2U9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiYhdGhpcy5pblZpcnR1YWxTZWxlY3Rpb25Nb2RlKXt2YXIgbj10aGlzLm11bHRpU2VsZWN0LnJhbmdlc1swXTtpZih0aGlzLm11bHRpU2VsZWN0LmlzRW1wdHkoKSYmdD09dGhpcy5tdWx0aVNlbGVjdC5hbmNob3IpcmV0dXJuO3ZhciByPXQ9PXRoaXMubXVsdGlTZWxlY3QuYW5jaG9yP24uY3Vyc29yPT1uLnN0YXJ0P24uZW5kOm4uc3RhcnQ6bi5jdXJzb3I7ci5yb3chPXQucm93fHx0aGlzLnNlc3Npb24uJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQoci5yb3csci5jb2x1bW4pLmNvbHVtbiE9dC5jb2x1bW4/dGhpcy5tdWx0aVNlbGVjdC50b1NpbmdsZVJhbmdlKHRoaXMubXVsdGlTZWxlY3QudG9PcmllbnRlZFJhbmdlKCkpOnRoaXMubXVsdGlTZWxlY3QubWVyZ2VPdmVybGFwcGluZ1JhbmdlcygpfX0sdGhpcy5maW5kQWxsPWZ1bmN0aW9uKGUsdCxuKXt0PXR8fHt9LHQubmVlZGxlPWV8fHQubmVlZGxlO2lmKHQubmVlZGxlPT11bmRlZmluZWQpe3ZhciByPXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKT90aGlzLnNlbGVjdGlvbi5nZXRXb3JkUmFuZ2UoKTp0aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpO3QubmVlZGxlPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2Uocil9dGhpcy4kc2VhcmNoLnNldCh0KTt2YXIgaT10aGlzLiRzZWFyY2guZmluZEFsbCh0aGlzLnNlc3Npb24pO2lmKCFpLmxlbmd0aClyZXR1cm4gMDt2YXIgcz10aGlzLm11bHRpU2VsZWN0O258fHMudG9TaW5nbGVSYW5nZShpWzBdKTtmb3IodmFyIG89aS5sZW5ndGg7by0tOylzLmFkZFJhbmdlKGlbb10sITApO3JldHVybiByJiZzLnJhbmdlTGlzdC5yYW5nZUF0UG9pbnQoci5zdGFydCkmJnMuYWRkUmFuZ2UociwhMCksaS5sZW5ndGh9LHRoaXMuc2VsZWN0TW9yZUxpbmVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zZWxlY3Rpb24udG9PcmllbnRlZFJhbmdlKCkscj1uLmN1cnNvcj09bi5lbmQscz10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKG4uY3Vyc29yKTt0aGlzLnNlbGVjdGlvbi4kZGVzaXJlZENvbHVtbiYmKHMuY29sdW1uPXRoaXMuc2VsZWN0aW9uLiRkZXNpcmVkQ29sdW1uKTt2YXIgbz10aGlzLnNlc3Npb24uc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKHMucm93K2Uscy5jb2x1bW4pO2lmKCFuLmlzRW1wdHkoKSl2YXIgdT10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHI/bi5lbmQ6bi5zdGFydCksYT10aGlzLnNlc3Npb24uc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKHUucm93K2UsdS5jb2x1bW4pO2Vsc2UgdmFyIGE9bztpZihyKXt2YXIgZj1pLmZyb21Qb2ludHMobyxhKTtmLmN1cnNvcj1mLnN0YXJ0fWVsc2V7dmFyIGY9aS5mcm9tUG9pbnRzKGEsbyk7Zi5jdXJzb3I9Zi5lbmR9Zi5kZXNpcmVkQ29sdW1uPXMuY29sdW1uO2lmKCF0aGlzLnNlbGVjdGlvbi5pbk11bHRpU2VsZWN0TW9kZSl0aGlzLnNlbGVjdGlvbi5hZGRSYW5nZShuKTtlbHNlIGlmKHQpdmFyIGw9bi5jdXJzb3I7dGhpcy5zZWxlY3Rpb24uYWRkUmFuZ2UoZiksbCYmdGhpcy5zZWxlY3Rpb24uc3Vic3RyYWN0UG9pbnQobCl9LHRoaXMudHJhbnNwb3NlU2VsZWN0aW9ucz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNlc3Npb24sbj10Lm11bHRpU2VsZWN0LHI9bi5yYW5nZXM7Zm9yKHZhciBpPXIubGVuZ3RoO2ktLTspe3ZhciBzPXJbaV07aWYocy5pc0VtcHR5KCkpe3ZhciBvPXQuZ2V0V29yZFJhbmdlKHMuc3RhcnQucm93LHMuc3RhcnQuY29sdW1uKTtzLnN0YXJ0LnJvdz1vLnN0YXJ0LnJvdyxzLnN0YXJ0LmNvbHVtbj1vLnN0YXJ0LmNvbHVtbixzLmVuZC5yb3c9by5lbmQucm93LHMuZW5kLmNvbHVtbj1vLmVuZC5jb2x1bW59fW4ubWVyZ2VPdmVybGFwcGluZ1JhbmdlcygpO3ZhciB1PVtdO2Zvcih2YXIgaT1yLmxlbmd0aDtpLS07KXt2YXIgcz1yW2ldO3UudW5zaGlmdCh0LmdldFRleHRSYW5nZShzKSl9ZTwwP3UudW5zaGlmdCh1LnBvcCgpKTp1LnB1c2godS5zaGlmdCgpKTtmb3IodmFyIGk9ci5sZW5ndGg7aS0tOyl7dmFyIHM9cltpXSxvPXMuY2xvbmUoKTt0LnJlcGxhY2Uocyx1W2ldKSxzLnN0YXJ0LnJvdz1vLnN0YXJ0LnJvdyxzLnN0YXJ0LmNvbHVtbj1vLnN0YXJ0LmNvbHVtbn1uLmZyb21PcmllbnRlZFJhbmdlKG4ucmFuZ2VzWzBdKX0sdGhpcy5zZWxlY3RNb3JlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnNlc3Npb24saT1yLm11bHRpU2VsZWN0LHM9aS50b09yaWVudGVkUmFuZ2UoKTtpZihzLmlzRW1wdHkoKSl7cz1yLmdldFdvcmRSYW5nZShzLnN0YXJ0LnJvdyxzLnN0YXJ0LmNvbHVtbikscy5jdXJzb3I9ZT09LTE/cy5zdGFydDpzLmVuZCx0aGlzLm11bHRpU2VsZWN0LmFkZFJhbmdlKHMpO2lmKG4pcmV0dXJufXZhciBvPXIuZ2V0VGV4dFJhbmdlKHMpLHU9aChyLG8sZSk7dSYmKHUuY3Vyc29yPWU9PS0xP3Uuc3RhcnQ6dS5lbmQsdGhpcy5zZXNzaW9uLnVuZm9sZCh1KSx0aGlzLm11bHRpU2VsZWN0LmFkZFJhbmdlKHUpLHRoaXMucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcobnVsbCwuNSkpLHQmJnRoaXMubXVsdGlTZWxlY3Quc3Vic3RyYWN0UG9pbnQocy5jdXJzb3IpfSx0aGlzLmFsaWduQ3Vyc29ycz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbix0PWUubXVsdGlTZWxlY3Qsbj10LnJhbmdlcyxyPS0xLHM9bi5maWx0ZXIoZnVuY3Rpb24oZSl7aWYoZS5jdXJzb3Iucm93PT1yKXJldHVybiEwO3I9ZS5jdXJzb3Iucm93fSk7aWYoIW4ubGVuZ3RofHxzLmxlbmd0aD09bi5sZW5ndGgtMSl7dmFyIG89dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSx1PW8uc3RhcnQucm93LGY9by5lbmQucm93LGw9dT09ZjtpZihsKXt2YXIgYz10aGlzLnNlc3Npb24uZ2V0TGVuZ3RoKCksaDtkbyBoPXRoaXMuc2Vzc2lvbi5nZXRMaW5lKGYpO3doaWxlKC9bPTpdLy50ZXN0KGgpJiYrK2Y8Yyk7ZG8gaD10aGlzLnNlc3Npb24uZ2V0TGluZSh1KTt3aGlsZSgvWz06XS8udGVzdChoKSYmLS11PjApO3U8MCYmKHU9MCksZj49YyYmKGY9Yy0xKX12YXIgcD10aGlzLnNlc3Npb24ucmVtb3ZlRnVsbExpbmVzKHUsZik7cD10aGlzLiRyZUFsaWduVGV4dChwLGwpLHRoaXMuc2Vzc2lvbi5pbnNlcnQoe3Jvdzp1LGNvbHVtbjowfSxwLmpvaW4oIlxuIikrIlxuIiksbHx8KG8uc3RhcnQuY29sdW1uPTAsby5lbmQuY29sdW1uPXBbcC5sZW5ndGgtMV0ubGVuZ3RoKSx0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShvKX1lbHNle3MuZm9yRWFjaChmdW5jdGlvbihlKXt0LnN1YnN0cmFjdFBvaW50KGUuY3Vyc29yKX0pO3ZhciBkPTAsdj1JbmZpbml0eSxtPW4ubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXQuY3Vyc29yLHI9ZS5nZXRMaW5lKG4ucm93KSxpPXIuc3Vic3RyKG4uY29sdW1uKS5zZWFyY2goL1xTL2cpO3JldHVybiBpPT0tMSYmKGk9MCksbi5jb2x1bW4+ZCYmKGQ9bi5jb2x1bW4pLGk8diYmKHY9aSksaX0pO24uZm9yRWFjaChmdW5jdGlvbih0LG4pe3ZhciByPXQuY3Vyc29yLHM9ZC1yLmNvbHVtbixvPW1bbl0tdjtzPm8/ZS5pbnNlcnQocixhLnN0cmluZ1JlcGVhdCgiICIscy1vKSk6ZS5yZW1vdmUobmV3IGkoci5yb3csci5jb2x1bW4sci5yb3csci5jb2x1bW4tcytvKSksdC5zdGFydC5jb2x1bW49dC5lbmQuY29sdW1uPWQsdC5zdGFydC5yb3c9dC5lbmQucm93PXIucm93LHQuY3Vyc29yPXQuZW5kfSksdC5mcm9tT3JpZW50ZWRSYW5nZShuWzBdKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX19LHRoaXMuJHJlQWxpZ25UZXh0PWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gdShlKXtyZXR1cm4gYS5zdHJpbmdSZXBlYXQoIiAiLGUpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGVbMl0/dShpKStlWzJdK3Uocy1lWzJdLmxlbmd0aCtvKStlWzRdLnJlcGxhY2UoL14oWz06XSlccysvLCIkMSAiKTplWzBdfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGVbMl0/dShpK3MtZVsyXS5sZW5ndGgpK2VbMl0rdShvKStlWzRdLnJlcGxhY2UoL14oWz06XSlccysvLCIkMSAiKTplWzBdfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGVbMl0/dShpKStlWzJdK3UobykrZVs0XS5yZXBsYWNlKC9eKFs9Ol0pXHMrLywiJDEgIik6ZVswXX12YXIgbj0hMCxyPSEwLGkscyxvO3JldHVybiBlLm1hcChmdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC8oXHMqKSguKj8pKFxzKikoWz06XS4qKS8pO3JldHVybiB0P2k9PW51bGw/KGk9dFsxXS5sZW5ndGgscz10WzJdLmxlbmd0aCxvPXRbM10ubGVuZ3RoLHQpOihpK3MrbyE9dFsxXS5sZW5ndGgrdFsyXS5sZW5ndGgrdFszXS5sZW5ndGgmJihyPSExKSxpIT10WzFdLmxlbmd0aCYmKG49ITEpLGk+dFsxXS5sZW5ndGgmJihpPXRbMV0ubGVuZ3RoKSxzPHRbMl0ubGVuZ3RoJiYocz10WzJdLmxlbmd0aCksbz50WzNdLmxlbmd0aCYmKG89dFszXS5sZW5ndGgpLHQpOltlXX0pLm1hcCh0P2Y6bj9yP2w6ZjpjKX19KS5jYWxsKGQucHJvdG90eXBlKSx0Lm9uU2Vzc2lvbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLnNlc3Npb247dCYmIXQubXVsdGlTZWxlY3QmJih0LiRzZWxlY3Rpb25NYXJrZXJzPVtdLHQuc2VsZWN0aW9uLiRpbml0UmFuZ2VMaXN0KCksdC5tdWx0aVNlbGVjdD10LnNlbGVjdGlvbiksdGhpcy5tdWx0aVNlbGVjdD10JiZ0Lm11bHRpU2VsZWN0O3ZhciBuPWUub2xkU2Vzc2lvbjtuJiYobi5tdWx0aVNlbGVjdC5vZmYoImFkZFJhbmdlIix0aGlzLiRvbkFkZFJhbmdlKSxuLm11bHRpU2VsZWN0Lm9mZigicmVtb3ZlUmFuZ2UiLHRoaXMuJG9uUmVtb3ZlUmFuZ2UpLG4ubXVsdGlTZWxlY3Qub2ZmKCJtdWx0aVNlbGVjdCIsdGhpcy4kb25NdWx0aVNlbGVjdCksbi5tdWx0aVNlbGVjdC5vZmYoInNpbmdsZVNlbGVjdCIsdGhpcy4kb25TaW5nbGVTZWxlY3QpLG4ubXVsdGlTZWxlY3QubGVhZC5vZmYoImNoYW5nZSIsdGhpcy4kY2hlY2tNdWx0aXNlbGVjdENoYW5nZSksbi5tdWx0aVNlbGVjdC5hbmNob3Iub2ZmKCJjaGFuZ2UiLHRoaXMuJGNoZWNrTXVsdGlzZWxlY3RDaGFuZ2UpKSx0JiYodC5tdWx0aVNlbGVjdC5vbigiYWRkUmFuZ2UiLHRoaXMuJG9uQWRkUmFuZ2UpLHQubXVsdGlTZWxlY3Qub24oInJlbW92ZVJhbmdlIix0aGlzLiRvblJlbW92ZVJhbmdlKSx0Lm11bHRpU2VsZWN0Lm9uKCJtdWx0aVNlbGVjdCIsdGhpcy4kb25NdWx0aVNlbGVjdCksdC5tdWx0aVNlbGVjdC5vbigic2luZ2xlU2VsZWN0Iix0aGlzLiRvblNpbmdsZVNlbGVjdCksdC5tdWx0aVNlbGVjdC5sZWFkLm9uKCJjaGFuZ2UiLHRoaXMuJGNoZWNrTXVsdGlzZWxlY3RDaGFuZ2UpLHQubXVsdGlTZWxlY3QuYW5jaG9yLm9uKCJjaGFuZ2UiLHRoaXMuJGNoZWNrTXVsdGlzZWxlY3RDaGFuZ2UpKSx0JiZ0aGlzLmluTXVsdGlTZWxlY3RNb2RlIT10LnNlbGVjdGlvbi5pbk11bHRpU2VsZWN0TW9kZSYmKHQuc2VsZWN0aW9uLmluTXVsdGlTZWxlY3RNb2RlP3RoaXMuJG9uTXVsdGlTZWxlY3QoKTp0aGlzLiRvblNpbmdsZVNlbGVjdCgpKX0sdC5NdWx0aVNlbGVjdD1tLGUoIi4vY29uZmlnIikuZGVmaW5lT3B0aW9ucyhkLnByb3RvdHlwZSwiZWRpdG9yIix7ZW5hYmxlTXVsdGlzZWxlY3Q6e3NldDpmdW5jdGlvbihlKXttKHRoaXMpLGU/KHRoaXMub24oImNoYW5nZVNlc3Npb24iLHRoaXMuJG11bHRpc2VsZWN0T25TZXNzaW9uQ2hhbmdlKSx0aGlzLm9uKCJtb3VzZWRvd24iLG8pKToodGhpcy5vZmYoImNoYW5nZVNlc3Npb24iLHRoaXMuJG11bHRpc2VsZWN0T25TZXNzaW9uQ2hhbmdlKSx0aGlzLm9mZigibW91c2Vkb3duIixvKSl9LHZhbHVlOiEwfSxlbmFibGVCbG9ja1NlbGVjdDp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuJGJsb2NrU2VsZWN0RW5hYmxlZD1lfSx2YWx1ZTohMH19KX0pLGFjZS5kZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKXt2YXIgaD1lLmdldFRva2VuQXQodCwwKTtpZighaHx8aC50eXBlIT09InN0cmluZyIpYnJlYWt9bD10fWlmKGw+Zil7dmFyIHA9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwscCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9ZS5nZXRGb2xkV2lkZ2V0KHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX0sdGhpcy5jbG9zaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppfSx1PWUuJGZpbmRPcGVuaW5nQnJhY2tldCh0LG8pO2lmKCF1KXJldHVybjtyZXR1cm4gdS5jb2x1bW4rKyxvLmNvbHVtbi0tLHIuZnJvbVBvaW50cyh1LG8pfX0pLmNhbGwoaS5wcm90b3R5cGUpfSksYWNlLmRlZmluZSgiYWNlL3RoZW1lL3RleHRtYXRlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuaXNEYXJrPSExLHQuY3NzQ2xhc3M9ImFjZS10bSIsdC5jc3NUZXh0PScuYWNlLXRtIC5hY2VfZ3V0dGVyIHtiYWNrZ3JvdW5kOiAjZjBmMGYwO2NvbG9yOiAjMzMzO30uYWNlLXRtIC5hY2VfcHJpbnQtbWFyZ2luIHt3aWR0aDogMXB4O2JhY2tncm91bmQ6ICNlOGU4ZTg7fS5hY2UtdG0gLmFjZV9mb2xkIHtiYWNrZ3JvdW5kLWNvbG9yOiAjNkI3MkU2O30uYWNlLXRtIHtiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO2NvbG9yOiBibGFjazt9LmFjZS10bSAuYWNlX2N1cnNvciB7Y29sb3I6IGJsYWNrO30uYWNlLXRtIC5hY2VfaW52aXNpYmxlIHtjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpO30uYWNlLXRtIC5hY2Vfc3RvcmFnZSwuYWNlLXRtIC5hY2Vfa2V5d29yZCB7Y29sb3I6IGJsdWU7fS5hY2UtdG0gLmFjZV9jb25zdGFudCB7Y29sb3I6IHJnYigxOTcsIDYsIDExKTt9LmFjZS10bSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHtjb2xvcjogcmdiKDg4LCA3MiwgMjQ2KTt9LmFjZS10bSAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7Y29sb3I6IHJnYig4OCwgOTIsIDI0Nik7fS5hY2UtdG0gLmFjZV9jb25zdGFudC5hY2VfbGlicmFyeSB7Y29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS10bSAuYWNlX2ludmFsaWQge2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjEpO2NvbG9yOiByZWQ7fS5hY2UtdG0gLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7Y29sb3I6IHJnYig2MCwgNzYsIDExNCk7fS5hY2UtdG0gLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7Y29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS10bSAuYWNlX3N1cHBvcnQuYWNlX3R5cGUsLmFjZS10bSAuYWNlX3N1cHBvcnQuYWNlX2NsYXNzIHtjb2xvcjogcmdiKDEwOSwgMTIxLCAyMjIpO30uYWNlLXRtIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3Ige2NvbG9yOiByZ2IoMTA0LCAxMTgsIDEzNSk7fS5hY2UtdG0gLmFjZV9zdHJpbmcge2NvbG9yOiByZ2IoMywgMTA2LCA3KTt9LmFjZS10bSAuYWNlX2NvbW1lbnQge2NvbG9yOiByZ2IoNzYsIDEzNiwgMTA3KTt9LmFjZS10bSAuYWNlX2NvbW1lbnQuYWNlX2RvYyB7Y29sb3I6IHJnYigwLCAxMDIsIDI1NSk7fS5hY2UtdG0gLmFjZV9jb21tZW50LmFjZV9kb2MuYWNlX3RhZyB7Y29sb3I6IHJnYigxMjgsIDE1OSwgMTkxKTt9LmFjZS10bSAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHtjb2xvcjogcmdiKDAsIDAsIDIwNSk7fS5hY2UtdG0gLmFjZV92YXJpYWJsZSB7Y29sb3I6IHJnYig0OSwgMTMyLCAxNDkpO30uYWNlLXRtIC5hY2VfeG1sLXBlIHtjb2xvcjogcmdiKDEwNCwgMTA0LCA5MSk7fS5hY2UtdG0gLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHtjb2xvcjogIzAwMDBBMjt9LmFjZS10bSAuYWNlX2hlYWRpbmcge2NvbG9yOiByZ2IoMTIsIDcsIDI1NSk7fS5hY2UtdG0gLmFjZV9saXN0IHtjb2xvcjpyZ2IoMTg1LCA2LCAxNDQpO30uYWNlLXRtIC5hY2VfbWV0YS5hY2VfdGFnIHtjb2xvcjpyZ2IoMCwgMjIsIDE0Mik7fS5hY2UtdG0gLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHtjb2xvcjogcmdiKDI1NSwgMCwgMCl9LmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7YmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO30uYWNlLXRtLmFjZV9tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5hY2Vfc3RhcnQge2JveC1zaGFkb3c6IDAgMCAzcHggMHB4IHdoaXRlO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7YmFja2dyb3VuZDogcmdiKDI1MiwgMjU1LCAwKTt9LmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0YWNrIHtiYWNrZ3JvdW5kOiByZ2IoMTY0LCAyMjksIDEwMSk7fS5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHttYXJnaW46IC0xcHggMCAwIC0xcHg7Ym9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlLWxpbmUge2JhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNyk7fS5hY2UtdG0gLmFjZV9ndXR0ZXItYWN0aXZlLWxpbmUge2JhY2tncm91bmQtY29sb3IgOiAjZGNkY2RjO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWQtd29yZCB7YmFja2dyb3VuZDogcmdiKDI1MCwgMjUwLCAyNTUpO2JvcmRlcjogMXB4IHNvbGlkIHJnYigyMDAsIDIwMCwgMjUwKTt9LmFjZS10bSAuYWNlX2luZGVudC1ndWlkZSB7YmFja2dyb3VuZDogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUNDQVlBQUFDWmdiWW5BQUFBRTBsRVFWUUltV1A0Ly8vL2Y0YkxseS8vQndBbVZnZDEvdzExL2dBQUFBQkpSVTVFcmtKZ2dnPT0iKSByaWdodCByZXBlYXQteTt9Jyx0LiRpZD0iYWNlL3RoZW1lL3RleHRtYXRlIjt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSksYWNlLmRlZmluZSgiYWNlL2xpbmVfd2lkZ2V0cyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9kb20iLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7dGhpcy5zZXNzaW9uPWUsdGhpcy5zZXNzaW9uLndpZGdldE1hbmFnZXI9dGhpcyx0aGlzLnNlc3Npb24uZ2V0Um93TGVuZ3RoPXRoaXMuZ2V0Um93TGVuZ3RoLHRoaXMuc2Vzc2lvbi4kZ2V0V2lkZ2V0U2NyZWVuTGVuZ3RoPXRoaXMuJGdldFdpZGdldFNjcmVlbkxlbmd0aCx0aGlzLnVwZGF0ZU9uQ2hhbmdlPXRoaXMudXBkYXRlT25DaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnJlbmRlcldpZGdldHM9dGhpcy5yZW5kZXJXaWRnZXRzLmJpbmQodGhpcyksdGhpcy5tZWFzdXJlV2lkZ2V0cz10aGlzLm1lYXN1cmVXaWRnZXRzLmJpbmQodGhpcyksdGhpcy5zZXNzaW9uLl9jaGFuZ2VkV2lkZ2V0cz1bXSx0aGlzLiRvbkNoYW5nZUVkaXRvcj10aGlzLiRvbkNoYW5nZUVkaXRvci5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5vbigiY2hhbmdlIix0aGlzLnVwZGF0ZU9uQ2hhbmdlKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZUZvbGQiLHRoaXMudXBkYXRlT25Gb2xkKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZUVkaXRvciIsdGhpcy4kb25DaGFuZ2VFZGl0b3IpfXZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZG9tIikscz1lKCIuL3JhbmdlIikuUmFuZ2U7KGZ1bmN0aW9uKCl7dGhpcy5nZXRSb3dMZW5ndGg9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXMubGluZVdpZGdldHM/dD10aGlzLmxpbmVXaWRnZXRzW2VdJiZ0aGlzLmxpbmVXaWRnZXRzW2VdLnJvd0NvdW50fHwwOnQ9MCwhdGhpcy4kdXNlV3JhcE1vZGV8fCF0aGlzLiR3cmFwRGF0YVtlXT8xK3Q6dGhpcy4kd3JhcERhdGFbZV0ubGVuZ3RoKzErdH0sdGhpcy4kZ2V0V2lkZ2V0U2NyZWVuTGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gdGhpcy5saW5lV2lkZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QmJnQucm93Q291bnQmJiF0LmhpZGRlbiYmKGUrPXQucm93Q291bnQpfSksZX0sdGhpcy4kb25DaGFuZ2VFZGl0b3I9ZnVuY3Rpb24oZSl7dGhpcy5hdHRhY2goZS5lZGl0b3IpfSx0aGlzLmF0dGFjaD1mdW5jdGlvbihlKXtlJiZlLndpZGdldE1hbmFnZXImJmUud2lkZ2V0TWFuYWdlciE9dGhpcyYmZS53aWRnZXRNYW5hZ2VyLmRldGFjaCgpO2lmKHRoaXMuZWRpdG9yPT1lKXJldHVybjt0aGlzLmRldGFjaCgpLHRoaXMuZWRpdG9yPWUsZSYmKGUud2lkZ2V0TWFuYWdlcj10aGlzLGUucmVuZGVyZXIub24oImJlZm9yZVJlbmRlciIsdGhpcy5tZWFzdXJlV2lkZ2V0cyksZS5yZW5kZXJlci5vbigiYWZ0ZXJSZW5kZXIiLHRoaXMucmVuZGVyV2lkZ2V0cykpfSx0aGlzLmRldGFjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmVkaXRvcjtpZighdClyZXR1cm47dGhpcy5lZGl0b3I9bnVsbCx0LndpZGdldE1hbmFnZXI9bnVsbCx0LnJlbmRlcmVyLm9mZigiYmVmb3JlUmVuZGVyIix0aGlzLm1lYXN1cmVXaWRnZXRzKSx0LnJlbmRlcmVyLm9mZigiYWZ0ZXJSZW5kZXIiLHRoaXMucmVuZGVyV2lkZ2V0cyk7dmFyIG49dGhpcy5zZXNzaW9uLmxpbmVXaWRnZXRzO24mJm4uZm9yRWFjaChmdW5jdGlvbihlKXtlJiZlLmVsJiZlLmVsLnBhcmVudE5vZGUmJihlLl9pbkRvY3VtZW50PSExLGUuZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlLmVsKSl9KX0sdGhpcy51cGRhdGVPbkZvbGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmxpbmVXaWRnZXRzO2lmKCFufHwhZS5hY3Rpb24pcmV0dXJuO3ZhciByPWUuZGF0YSxpPXIuc3RhcnQucm93LHM9ci5lbmQucm93LG89ZS5hY3Rpb249PSJhZGQiO2Zvcih2YXIgdT1pKzE7dTxzO3UrKyluW3VdJiYoblt1XS5oaWRkZW49byk7bltzXSYmKG8/bltpXT9uW3NdLmhpZGRlbj1vOm5baV09bltzXToobltpXT09bltzXSYmKG5baV09dW5kZWZpbmVkKSxuW3NdLmhpZGRlbj1vKSl9LHRoaXMudXBkYXRlT25DaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZXNzaW9uLmxpbmVXaWRnZXRzO2lmKCF0KXJldHVybjt2YXIgbj1lLnN0YXJ0LnJvdyxyPWUuZW5kLnJvdy1uO2lmKHIhPT0wKWlmKGUuYWN0aW9uPT0icmVtb3ZlIil7dmFyIGk9dC5zcGxpY2UobisxLHIpO2kuZm9yRWFjaChmdW5jdGlvbihlKXtlJiZ0aGlzLnJlbW92ZUxpbmVXaWRnZXQoZSl9LHRoaXMpLHRoaXMuJHVwZGF0ZVJvd3MoKX1lbHNle3ZhciBzPW5ldyBBcnJheShyKTtzLnVuc2hpZnQobiwwKSx0LnNwbGljZS5hcHBseSh0LHMpLHRoaXMuJHVwZGF0ZVJvd3MoKX19LHRoaXMuJHVwZGF0ZVJvd3M9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNlc3Npb24ubGluZVdpZGdldHM7aWYoIWUpcmV0dXJuO3ZhciB0PSEwO2UuZm9yRWFjaChmdW5jdGlvbihlLG4pe2lmKGUpe3Q9ITEsZS5yb3c9bjt3aGlsZShlLiRvbGRXaWRnZXQpZS4kb2xkV2lkZ2V0LnJvdz1uLGU9ZS4kb2xkV2lkZ2V0fX0pLHQmJih0aGlzLnNlc3Npb24ubGluZVdpZGdldHM9bnVsbCl9LHRoaXMuYWRkTGluZVdpZGdldD1mdW5jdGlvbihlKXt0aGlzLnNlc3Npb24ubGluZVdpZGdldHN8fCh0aGlzLnNlc3Npb24ubGluZVdpZGdldHM9bmV3IEFycmF5KHRoaXMuc2Vzc2lvbi5nZXRMZW5ndGgoKSkpO3ZhciB0PXRoaXMuc2Vzc2lvbi5saW5lV2lkZ2V0c1tlLnJvd107dCYmKGUuJG9sZFdpZGdldD10LHQuZWwmJnQuZWwucGFyZW50Tm9kZSYmKHQuZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0LmVsKSx0Ll9pbkRvY3VtZW50PSExKSksdGhpcy5zZXNzaW9uLmxpbmVXaWRnZXRzW2Uucm93XT1lLGUuc2Vzc2lvbj10aGlzLnNlc3Npb247dmFyIG49dGhpcy5lZGl0b3IucmVuZGVyZXI7ZS5odG1sJiYhZS5lbCYmKGUuZWw9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLmVsLmlubmVySFRNTD1lLmh0bWwpLGUuZWwmJihpLmFkZENzc0NsYXNzKGUuZWwsImFjZV9saW5lV2lkZ2V0Q29udGFpbmVyIiksZS5lbC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuZWwuc3R5bGUuekluZGV4PTUsbi5jb250YWluZXIuYXBwZW5kQ2hpbGQoZS5lbCksZS5faW5Eb2N1bWVudD0hMCksZS5jb3Zlckd1dHRlcnx8KGUuZWwuc3R5bGUuekluZGV4PTMpLGUucGl4ZWxIZWlnaHQ9PW51bGwmJihlLnBpeGVsSGVpZ2h0PWUuZWwub2Zmc2V0SGVpZ2h0KSxlLnJvd0NvdW50PT1udWxsJiYoZS5yb3dDb3VudD1lLnBpeGVsSGVpZ2h0L24ubGF5ZXJDb25maWcubGluZUhlaWdodCk7dmFyIHI9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChlLnJvdywwKTtlLiRmb2xkPXI7aWYocil7dmFyIHM9dGhpcy5zZXNzaW9uLmxpbmVXaWRnZXRzO2Uucm93PT1yLmVuZC5yb3cmJiFzW3Iuc3RhcnQucm93XT9zW3Iuc3RhcnQucm93XT1lOmUuaGlkZGVuPSEwfXJldHVybiB0aGlzLnNlc3Npb24uX2VtaXQoImNoYW5nZUZvbGQiLHtkYXRhOntzdGFydDp7cm93OmUucm93fX19KSx0aGlzLiR1cGRhdGVSb3dzKCksdGhpcy5yZW5kZXJXaWRnZXRzKG51bGwsbiksdGhpcy5vbldpZGdldENoYW5nZWQoZSksZX0sdGhpcy5yZW1vdmVMaW5lV2lkZ2V0PWZ1bmN0aW9uKGUpe2UuX2luRG9jdW1lbnQ9ITEsZS5zZXNzaW9uPW51bGwsZS5lbCYmZS5lbC5wYXJlbnROb2RlJiZlLmVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5lbCk7aWYoZS5lZGl0b3ImJmUuZWRpdG9yLmRlc3Ryb3kpdHJ5e2UuZWRpdG9yLmRlc3Ryb3koKX1jYXRjaCh0KXt9aWYodGhpcy5zZXNzaW9uLmxpbmVXaWRnZXRzKXt2YXIgbj10aGlzLnNlc3Npb24ubGluZVdpZGdldHNbZS5yb3ddO2lmKG49PWUpdGhpcy5zZXNzaW9uLmxpbmVXaWRnZXRzW2Uucm93XT1lLiRvbGRXaWRnZXQsZS4kb2xkV2lkZ2V0JiZ0aGlzLm9uV2lkZ2V0Q2hhbmdlZChlLiRvbGRXaWRnZXQpO2Vsc2Ugd2hpbGUobil7aWYobi4kb2xkV2lkZ2V0PT1lKXtuLiRvbGRXaWRnZXQ9ZS4kb2xkV2lkZ2V0O2JyZWFrfW49bi4kb2xkV2lkZ2V0fX10aGlzLnNlc3Npb24uX2VtaXQoImNoYW5nZUZvbGQiLHtkYXRhOntzdGFydDp7cm93OmUucm93fX19KSx0aGlzLiR1cGRhdGVSb3dzKCl9LHRoaXMuZ2V0V2lkZ2V0c0F0Um93PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2Vzc2lvbi5saW5lV2lkZ2V0cyxuPXQmJnRbZV0scj1bXTt3aGlsZShuKXIucHVzaChuKSxuPW4uJG9sZFdpZGdldDtyZXR1cm4gcn0sdGhpcy5vbldpZGdldENoYW5nZWQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uLl9jaGFuZ2VkV2lkZ2V0cy5wdXNoKGUpLHRoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5yZW5kZXJlci51cGRhdGVGdWxsKCl9LHRoaXMubWVhc3VyZVdpZGdldHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNlc3Npb24uX2NoYW5nZWRXaWRnZXRzLHI9dC5sYXllckNvbmZpZztpZighbnx8IW4ubGVuZ3RoKXJldHVybjt2YXIgaT1JbmZpbml0eTtmb3IodmFyIHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIG89bltzXTtpZighb3x8IW8uZWwpY29udGludWU7aWYoby5zZXNzaW9uIT10aGlzLnNlc3Npb24pY29udGludWU7aWYoIW8uX2luRG9jdW1lbnQpe2lmKHRoaXMuc2Vzc2lvbi5saW5lV2lkZ2V0c1tvLnJvd10hPW8pY29udGludWU7by5faW5Eb2N1bWVudD0hMCx0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChvLmVsKX1vLmg9by5lbC5vZmZzZXRIZWlnaHQsby5maXhlZFdpZHRofHwoby53PW8uZWwub2Zmc2V0V2lkdGgsby5zY3JlZW5XaWR0aD1NYXRoLmNlaWwoby53L3IuY2hhcmFjdGVyV2lkdGgpKTt2YXIgdT1vLmgvci5saW5lSGVpZ2h0O28uY292ZXJMaW5lJiYodS09dGhpcy5zZXNzaW9uLmdldFJvd0xpbmVDb3VudChvLnJvdyksdTwwJiYodT0wKSksby5yb3dDb3VudCE9dSYmKG8ucm93Q291bnQ9dSxvLnJvdzxpJiYoaT1vLnJvdykpfWkhPUluZmluaXR5JiYodGhpcy5zZXNzaW9uLl9lbWl0KCJjaGFuZ2VGb2xkIix7ZGF0YTp7c3RhcnQ6e3JvdzppfX19KSx0aGlzLnNlc3Npb24ubGluZVdpZGdldFdpZHRoPW51bGwpLHRoaXMuc2Vzc2lvbi5fY2hhbmdlZFdpZGdldHM9W119LHRoaXMucmVuZGVyV2lkZ2V0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXQubGF5ZXJDb25maWcscj10aGlzLnNlc3Npb24ubGluZVdpZGdldHM7aWYoIXIpcmV0dXJuO3ZhciBpPU1hdGgubWluKHRoaXMuZmlyc3RSb3csbi5maXJzdFJvdykscz1NYXRoLm1heCh0aGlzLmxhc3RSb3csbi5sYXN0Um93LHIubGVuZ3RoKTt3aGlsZShpPjAmJiFyW2ldKWktLTt0aGlzLmZpcnN0Um93PW4uZmlyc3RSb3csdGhpcy5sYXN0Um93PW4ubGFzdFJvdyx0LiRjdXJzb3JMYXllci5jb25maWc9bjtmb3IodmFyIG89aTtvPD1zO28rKyl7dmFyIHU9cltvXTtpZighdXx8IXUuZWwpY29udGludWU7aWYodS5oaWRkZW4pe3UuZWwuc3R5bGUudG9wPS0xMDAtKHUucGl4ZWxIZWlnaHR8fDApKyJweCI7Y29udGludWV9dS5faW5Eb2N1bWVudHx8KHUuX2luRG9jdW1lbnQ9ITAsdC5jb250YWluZXIuYXBwZW5kQ2hpbGQodS5lbCkpO3ZhciBhPXQuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oe3JvdzpvLGNvbHVtbjowfSwhMCkudG9wO3UuY292ZXJMaW5lfHwoYSs9bi5saW5lSGVpZ2h0KnRoaXMuc2Vzc2lvbi5nZXRSb3dMaW5lQ291bnQodS5yb3cpKSx1LmVsLnN0eWxlLnRvcD1hLW4ub2Zmc2V0KyJweCI7dmFyIGY9dS5jb3Zlckd1dHRlcj8wOnQuZ3V0dGVyV2lkdGg7dS5maXhlZFdpZHRofHwoZi09dC5zY3JvbGxMZWZ0KSx1LmVsLnN0eWxlLmxlZnQ9ZisicHgiLHUuZnVsbFdpZHRoJiZ1LnNjcmVlbldpZHRoJiYodS5lbC5zdHlsZS5taW5XaWR0aD1uLndpZHRoKzIqbi5wYWRkaW5nKyJweCIpLHUuZml4ZWRXaWR0aD91LmVsLnN0eWxlLnJpZ2h0PXQuc2Nyb2xsQmFyLmdldFdpZHRoKCkrInB4Ijp1LmVsLnN0eWxlLnJpZ2h0PSIifX19KS5jYWxsKG8ucHJvdG90eXBlKSx0LkxpbmVXaWRnZXRzPW99KSxhY2UuZGVmaW5lKCJhY2UvZXh0L2Vycm9yX21hcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saW5lX3dpZGdldHMiLCJhY2UvbGliL2RvbSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQsbil7dmFyIHI9MCxpPWUubGVuZ3RoLTE7d2hpbGUocjw9aSl7dmFyIHM9citpPj4xLG89bih0LGVbc10pO2lmKG8+MClyPXMrMTtlbHNle2lmKCEobzwwKSlyZXR1cm4gcztpPXMtMX19cmV0dXJuLShyKzEpfWZ1bmN0aW9uIHUoZSx0LG4pe3ZhciByPWUuZ2V0QW5ub3RhdGlvbnMoKS5zb3J0KHMuY29tcGFyZVBvaW50cyk7aWYoIXIubGVuZ3RoKXJldHVybjt2YXIgaT1vKHIse3Jvdzp0LGNvbHVtbjotMX0scy5jb21wYXJlUG9pbnRzKTtpPDAmJihpPS1pLTEpLGk+PXIubGVuZ3RoP2k9bj4wPzA6ci5sZW5ndGgtMTppPT09MCYmbjwwJiYoaT1yLmxlbmd0aC0xKTt2YXIgdT1yW2ldO2lmKCF1fHwhbilyZXR1cm47aWYodS5yb3c9PT10KXtkbyB1PXJbaSs9bl07d2hpbGUodSYmdS5yb3c9PT10KTtpZighdSlyZXR1cm4gci5zbGljZSgpfXZhciBhPVtdO3Q9dS5yb3c7ZG8gYVtuPDA/InVuc2hpZnQiOiJwdXNoIl0odSksdT1yW2krPW5dO3doaWxlKHUmJnUucm93PT10KTtyZXR1cm4gYS5sZW5ndGgmJmF9dmFyIHI9ZSgiLi4vbGluZV93aWRnZXRzIikuTGluZVdpZGdldHMsaT1lKCIuLi9saWIvZG9tIikscz1lKCIuLi9yYW5nZSIpLlJhbmdlO3Quc2hvd0Vycm9yTWFya2VyPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zZXNzaW9uO24ud2lkZ2V0TWFuYWdlcnx8KG4ud2lkZ2V0TWFuYWdlcj1uZXcgcihuKSxuLndpZGdldE1hbmFnZXIuYXR0YWNoKGUpKTt2YXIgcz1lLmdldEN1cnNvclBvc2l0aW9uKCksbz1zLnJvdyxhPW4ud2lkZ2V0TWFuYWdlci5nZXRXaWRnZXRzQXRSb3cobykuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJlcnJvck1hcmtlciJ9KVswXTthP2EuZGVzdHJveSgpOm8tPXQ7dmFyIGY9dShuLG8sdCksbDtpZihmKXt2YXIgYz1mWzBdO3MuY29sdW1uPShjLnBvcyYmdHlwZW9mIGMuY29sdW1uIT0ibnVtYmVyIj9jLnBvcy5zYzpjLmNvbHVtbil8fDAscy5yb3c9Yy5yb3csbD1lLnJlbmRlcmVyLiRndXR0ZXJMYXllci4kYW5ub3RhdGlvbnNbcy5yb3ddfWVsc2V7aWYoYSlyZXR1cm47bD17dGV4dDpbIkxvb2tzIGdvb2QhIl0sY2xhc3NOYW1lOiJhY2Vfb2sifX1lLnNlc3Npb24udW5mb2xkKHMucm93KSxlLnNlbGVjdGlvbi5tb3ZlVG9Qb3NpdGlvbihzKTt2YXIgaD17cm93OnMucm93LGZpeGVkV2lkdGg6ITAsY292ZXJHdXR0ZXI6ITAsZWw6aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0eXBlOiJlcnJvck1hcmtlciJ9LHA9aC5lbC5hcHBlbmRDaGlsZChpLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxkPWguZWwuYXBwZW5kQ2hpbGQoaS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7ZC5jbGFzc05hbWU9ImVycm9yX3dpZGdldF9hcnJvdyAiK2wuY2xhc3NOYW1lO3ZhciB2PWUucmVuZGVyZXIuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24ocykubGVmdDtkLnN0eWxlLmxlZnQ9ditlLnJlbmRlcmVyLmd1dHRlcldpZHRoLTUrInB4IixoLmVsLmNsYXNzTmFtZT0iZXJyb3Jfd2lkZ2V0X3dyYXBwZXIiLHAuY2xhc3NOYW1lPSJlcnJvcl93aWRnZXQgIitsLmNsYXNzTmFtZSxwLmlubmVySFRNTD1sLnRleHQuam9pbigiPGJyPiIpLHAuYXBwZW5kQ2hpbGQoaS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dmFyIG09ZnVuY3Rpb24oZSx0LG4pe2lmKHQ9PT0wJiYobj09PSJlc2MifHxuPT09InJldHVybiIpKXJldHVybiBoLmRlc3Ryb3koKSx7Y29tbWFuZDoibnVsbCJ9fTtoLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZihlLiRtb3VzZUhhbmRsZXIuaXNNb3VzZVByZXNzZWQpcmV0dXJuO2Uua2V5QmluZGluZy5yZW1vdmVLZXlib2FyZEhhbmRsZXIobSksbi53aWRnZXRNYW5hZ2VyLnJlbW92ZUxpbmVXaWRnZXQoaCksZS5vZmYoImNoYW5nZVNlbGVjdGlvbiIsaC5kZXN0cm95KSxlLm9mZigiY2hhbmdlU2Vzc2lvbiIsaC5kZXN0cm95KSxlLm9mZigibW91c2V1cCIsaC5kZXN0cm95KSxlLm9mZigiY2hhbmdlIixoLmRlc3Ryb3kpfSxlLmtleUJpbmRpbmcuYWRkS2V5Ym9hcmRIYW5kbGVyKG0pLGUub24oImNoYW5nZVNlbGVjdGlvbiIsaC5kZXN0cm95KSxlLm9uKCJjaGFuZ2VTZXNzaW9uIixoLmRlc3Ryb3kpLGUub24oIm1vdXNldXAiLGguZGVzdHJveSksZS5vbigiY2hhbmdlIixoLmRlc3Ryb3kpLGUuc2Vzc2lvbi53aWRnZXRNYW5hZ2VyLmFkZExpbmVXaWRnZXQoaCksaC5lbC5vbm1vdXNlZG93bj1lLmZvY3VzLmJpbmQoZSksZS5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldyhudWxsLC41LHtib3R0b206aC5lbC5vZmZzZXRIZWlnaHR9KX0saS5pbXBvcnRDc3NTdHJpbmcoIiAgICAuZXJyb3Jfd2lkZ2V0X3dyYXBwZXIgeyAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDsgICAgICAgIGNvbG9yOiBpbmhlcml0OyAgICAgICAgYm9yZGVyOm5vbmUgICAgfSAgICAuZXJyb3Jfd2lkZ2V0IHsgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDJweDsgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDJweDsgICAgICAgIG1hcmdpbjogNXB4IDA7ICAgICAgICBwYWRkaW5nOiAxMHB4IDQwcHg7ICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7ICAgIH0gICAgLmVycm9yX3dpZGdldC5hY2VfZXJyb3IsIC5lcnJvcl93aWRnZXRfYXJyb3cuYWNlX2Vycm9yeyAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVhICAgIH0gICAgLmVycm9yX3dpZGdldC5hY2Vfd2FybmluZywgLmVycm9yX3dpZGdldF9hcnJvdy5hY2Vfd2FybmluZ3sgICAgICAgIGJvcmRlci1jb2xvcjogI0YxRDgxNyAgICB9ICAgIC5lcnJvcl93aWRnZXQuYWNlX2luZm8sIC5lcnJvcl93aWRnZXRfYXJyb3cuYWNlX2luZm97ICAgICAgICBib3JkZXItY29sb3I6ICM1YTVhNWEgICAgfSAgICAuZXJyb3Jfd2lkZ2V0LmFjZV9vaywgLmVycm9yX3dpZGdldF9hcnJvdy5hY2Vfb2t7ICAgICAgICBib3JkZXItY29sb3I6ICM1YWFhNWEgICAgfSAgICAuZXJyb3Jfd2lkZ2V0X2Fycm93IHsgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgICAgICAgIGJvcmRlcjogc29saWQgNXB4OyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQhaW1wb3J0YW50OyAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCFpbXBvcnRhbnQ7ICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQhaW1wb3J0YW50OyAgICAgICAgdG9wOiAtNXB4OyAgICB9IiwiIil9KSxhY2UuZGVmaW5lKCJhY2UvYWNlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9maXhvbGRicm93c2VycyIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9ldmVudCIsImFjZS9yYW5nZSIsImFjZS9lZGl0b3IiLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL3VuZG9tYW5hZ2VyIiwiYWNlL3ZpcnR1YWxfcmVuZGVyZXIiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2Uva2V5Ym9hcmQvaGFzaF9oYW5kbGVyIiwiYWNlL3BsYWNlaG9sZGVyIiwiYWNlL211bHRpX3NlbGVjdCIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIiwiYWNlL3RoZW1lL3RleHRtYXRlIiwiYWNlL2V4dC9lcnJvcl9tYXJrZXIiLCJhY2UvY29uZmlnIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlKCIuL2xpYi9maXhvbGRicm93c2VycyIpO3ZhciByPWUoIi4vbGliL2RvbSIpLGk9ZSgiLi9saWIvZXZlbnQiKSxzPWUoIi4vcmFuZ2UiKS5SYW5nZSxvPWUoIi4vZWRpdG9yIikuRWRpdG9yLHU9ZSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbixhPWUoIi4vdW5kb21hbmFnZXIiKS5VbmRvTWFuYWdlcixmPWUoIi4vdmlydHVhbF9yZW5kZXJlciIpLlZpcnR1YWxSZW5kZXJlcjtlKCIuL3dvcmtlci93b3JrZXJfY2xpZW50IiksZSgiLi9rZXlib2FyZC9oYXNoX2hhbmRsZXIiKSxlKCIuL3BsYWNlaG9sZGVyIiksZSgiLi9tdWx0aV9zZWxlY3QiKSxlKCIuL21vZGUvZm9sZGluZy9mb2xkX21vZGUiKSxlKCIuL3RoZW1lL3RleHRtYXRlIiksZSgiLi9leHQvZXJyb3JfbWFya2VyIiksdC5jb25maWc9ZSgiLi9jb25maWciKSx0LnJlcXVpcmU9ZSx0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiYodC5kZWZpbmU9ZGVmaW5lKSx0LmVkaXQ9ZnVuY3Rpb24oZSxuKXtpZih0eXBlb2YgZT09InN0cmluZyIpe3ZhciBzPWU7ZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoImFjZS5lZGl0IGNhbid0IGZpbmQgZGl2ICMiK3MpfWlmKGUmJmUuZW52JiZlLmVudi5lZGl0b3IgaW5zdGFuY2VvZiBvKXJldHVybiBlLmVudi5lZGl0b3I7dmFyIHU9IiI7aWYoZSYmL2lucHV0fHRleHRhcmVhL2kudGVzdChlLnRhZ05hbWUpKXt2YXIgYT1lO3U9YS52YWx1ZSxlPXIuY3JlYXRlRWxlbWVudCgicHJlIiksYS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGEpfWVsc2UgZSYmKHU9ZS50ZXh0Q29udGVudCxlLmlubmVySFRNTD0iIik7dmFyIGw9dC5jcmVhdGVFZGl0U2Vzc2lvbih1KSxjPW5ldyBvKG5ldyBmKGUpLGwsbiksaD17ZG9jdW1lbnQ6bCxlZGl0b3I6YyxvblJlc2l6ZTpjLnJlc2l6ZS5iaW5kKGMsbnVsbCl9O3JldHVybiBhJiYoaC50ZXh0YXJlYT1hKSxpLmFkZExpc3RlbmVyKHdpbmRvdywicmVzaXplIixoLm9uUmVzaXplKSxjLm9uKCJkZXN0cm95IixmdW5jdGlvbigpe2kucmVtb3ZlTGlzdGVuZXIod2luZG93LCJyZXNpemUiLGgub25SZXNpemUpLGguZWRpdG9yLmNvbnRhaW5lci5lbnY9bnVsbH0pLGMuY29udGFpbmVyLmVudj1jLmVudj1oLGN9LHQuY3JlYXRlRWRpdFNlc3Npb249ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgdShlLHQpO3JldHVybiBuLnNldFVuZG9NYW5hZ2VyKG5ldyBhKSxufSx0LlJhbmdlPXMsdC5FZGl0b3I9byx0LkVkaXRTZXNzaW9uPXUsdC5VbmRvTWFuYWdlcj1hLHQuVmlydHVhbFJlbmRlcmVyPWYsdC52ZXJzaW9uPXQuY29uZmlnLnZlcnNpb259KTsgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhY2UucmVxdWlyZShbImFjZS9hY2UiXSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY29uZmlnLmluaXQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuZGVmaW5lID0gYWNlLmRlZmluZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuYWNlKQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuYWNlID0gYTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYSkgaWYgKGEuaGFzT3duUHJvcGVydHkoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmFjZVtrZXldID0gYVtrZXldOwogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hY2VbImRlZmF1bHQiXSA9IHdpbmRvdy5hY2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgPT0gIm9iamVjdCIgJiYgdHlwZW9mIGV4cG9ydHMgPT0gIm9iamVjdCIgJiYgbW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gd2luZG93LmFjZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSkoKTsKfTsKCtC80YPRgNC+0Lwu0LfQsNCz0YDRg9C30LjRgtGM0KDQtdC20LjQvEFDRUpTID0gZnVuY3Rpb24oKQp7CiAgICAvLyDQoNC10LbQuNC8IEphdmFTY3JpcHQg0LTQu9GPIEFDRS4KICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS1idWlsZHMvYmxvYi9tYXN0ZXIvc3JjLW1pbi1ub2NvbmZsaWN0L21vZGUtamF2YXNjcmlwdC5qcwphY2UuZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSxzLmdldFRhZ1J1bGUoKSx7ZGVmYXVsdFRva2VuOiJjb21tZW50LmRvYyIsY2FzZUluc2Vuc2l0aXZlOiEwfV19fTtyLmluaGVyaXRzKHMsaSkscy5nZXRUYWdSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MudGFnLnN0b3JhZ2UudHlwZSIscmVnZXg6IlxcYig/OlRPRE98RklYTUV8WFhYfEhBQ0spXFxiIn19LHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGFjZS5kZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYSgpe3ZhciBlPW8ucmVwbGFjZSgiXFxkIiwiXFxkXFwtIiksdD17b25NYXRjaDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5jaGFyQXQoMSk9PSIvIj8yOjE7aWYocj09MSl0IT10aGlzLm5leHRTdGF0ZT9uLnVuc2hpZnQodGhpcy5uZXh0LHRoaXMubmV4dFN0YXRlLDApOm4udW5zaGlmdCh0aGlzLm5leHQpLG5bMl0rKztlbHNlIGlmKHI9PTImJnQ9PXRoaXMubmV4dFN0YXRlKXtuWzFdLS07aWYoIW5bMV18fG5bMV08MCluLnNoaWZ0KCksbi5zaGlmdCgpfXJldHVyblt7dHlwZToibWV0YS50YWcucHVuY3R1YXRpb24uIisocj09MT8iIjoiZW5kLSIpKyJ0YWctb3Blbi54bWwiLHZhbHVlOmUuc2xpY2UoMCxyKX0se3R5cGU6Im1ldGEudGFnLnRhZy1uYW1lLnhtbCIsdmFsdWU6ZS5zdWJzdHIocil9XX0scmVnZXg6IjwvPyIrZSsiIixuZXh0OiJqc3hBdHRyaWJ1dGVzIixuZXh0U3RhdGU6ImpzeCJ9O3RoaXMuJHJ1bGVzLnN0YXJ0LnVuc2hpZnQodCk7dmFyIG49e3JlZ2V4OiJ7Iix0b2tlbjoicGFyZW4ucXVhc2kuc3RhcnQiLHB1c2g6InN0YXJ0In07dGhpcy4kcnVsZXMuanN4PVtuLHQse2luY2x1ZGU6InJlZmVyZW5jZSJ9LHtkZWZhdWx0VG9rZW46InN0cmluZyJ9XSx0aGlzLiRydWxlcy5qc3hBdHRyaWJ1dGVzPVt7dG9rZW46Im1ldGEudGFnLnB1bmN0dWF0aW9uLnRhZy1jbG9zZS54bWwiLHJlZ2V4OiIvPz4iLG9uTWF0Y2g6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PT1uWzBdJiZuLnNoaWZ0KCksZS5sZW5ndGg9PTImJihuWzBdPT10aGlzLm5leHRTdGF0ZSYmblsxXS0tLCghblsxXXx8blsxXTwwKSYmbi5zcGxpY2UoMCwyKSksdGhpcy5uZXh0PW5bMF18fCJzdGFydCIsW3t0eXBlOnRoaXMudG9rZW4sdmFsdWU6ZX1dfSxuZXh0U3RhdGU6ImpzeCJ9LG4sZigianN4QXR0cmlidXRlcyIpLHt0b2tlbjoiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnhtbCIscmVnZXg6ZX0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yLmF0dHJpYnV0ZS1lcXVhbHMueG1sIixyZWdleDoiPSJ9LHt0b2tlbjoidGV4dC50YWctd2hpdGVzcGFjZS54bWwiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJzdHJpbmcuYXR0cmlidXRlLXZhbHVlLnhtbCIscmVnZXg6IiciLHN0YXRlTmFtZToianN4X2F0dHJfcSIscHVzaDpbe3Rva2VuOiJzdHJpbmcuYXR0cmlidXRlLXZhbHVlLnhtbCIscmVnZXg6IiciLG5leHQ6InBvcCJ9LHtpbmNsdWRlOiJyZWZlcmVuY2UifSx7ZGVmYXVsdFRva2VuOiJzdHJpbmcuYXR0cmlidXRlLXZhbHVlLnhtbCJ9XX0se3Rva2VuOiJzdHJpbmcuYXR0cmlidXRlLXZhbHVlLnhtbCIscmVnZXg6JyInLHN0YXRlTmFtZToianN4X2F0dHJfcXEiLHB1c2g6W3t0b2tlbjoic3RyaW5nLmF0dHJpYnV0ZS12YWx1ZS54bWwiLHJlZ2V4OiciJyxuZXh0OiJwb3AifSx7aW5jbHVkZToicmVmZXJlbmNlIn0se2RlZmF1bHRUb2tlbjoic3RyaW5nLmF0dHJpYnV0ZS12YWx1ZS54bWwifV19LHRdLHRoaXMuJHJ1bGVzLnJlZmVyZW5jZT1be3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUucmVmZXJlbmNlLnhtbCIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn1dfWZ1bmN0aW9uIGYoZSl7cmV0dXJuW3t0b2tlbjoiY29tbWVudCIscmVnZXg6L1wvXCovLG5leHQ6W2kuZ2V0VGFnUnVsZSgpLHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcKlxcLyIsbmV4dDplfHwicG9wIn0se2RlZmF1bHRUb2tlbjoiY29tbWVudCIsY2FzZUluc2Vuc2l0aXZlOiEwfV19LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLyIsbmV4dDpbaS5nZXRUYWdSdWxlKCkse3Rva2VuOiJjb21tZW50IixyZWdleDoiJHxeIixuZXh0OmV8fCJwb3AifSx7ZGVmYXVsdFRva2VuOiJjb21tZW50IixjYXNlSW5zZW5zaXRpdmU6ITB9XX1dfXZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPSJbYS16QS1aXFwkX1x1MDBhMS1cdWZmZmZdW2EtekEtWlxcZFxcJF9cdTAwYTEtXHVmZmZmXSoiLHU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jcmVhdGVLZXl3b3JkTWFwcGVyKHsidmFyaWFibGUubGFuZ3VhZ2UiOiJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLGtleXdvcmQ6ImNvbnN0fHlpZWxkfGltcG9ydHxnZXR8c2V0fGFzeW5jfGF3YWl0fGJyZWFrfGNhc2V8Y2F0Y2h8Y29udGludWV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxvZnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8bGV0fHZhcnx3aGlsZXx3aXRofGRlYnVnZ2VyfF9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fX3xjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIsInN0b3JhZ2UudHlwZSI6ImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLCJjb25zdGFudC5sYW5ndWFnZSI6Im51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIsInN1cHBvcnQuZnVuY3Rpb24iOiJhbGVydCIsImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iOiJ0cnVlfGZhbHNlIn0sImlkZW50aWZpZXIiKSxuPSJjYXNlfGRvfGVsc2V8ZmluYWxseXxpbnxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mfHlpZWxkfHZvaWQiLHI9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fHV7WzAtOWEtZkEtRl17MSw2fX18WzAtMl1bMC03XXswLDJ9fDNbMC03XVswLTddP3xbNC03XVswLTddP3wuKSI7dGhpcy4kcnVsZXM9e25vX3JlZ2V4OltpLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0IiksZigibm9fcmVnZXgiKSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPz0uKSIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIig/PS4pJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6LzAoPzpbeFhdWzAtOWEtZkEtRl0rfFtvT11bMC03XSt8W2JCXVswMV0rKVxiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovKD86XGRcZCooPzpcLlxkKik/fFwuXGQrKSg/OltlRV1bKy1dP1xkK1xiKT8vfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiXSxyZWdleDoiKCIrbysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK28rIikoXFxzKikoPSkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK28rIikoXFwuKSgiK28rIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitvKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitvKyIpKFxcLikoIitvKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMrKShcXHcrKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitvKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiZnJvbSg/PVxccyooJ3xcIikpIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiKD86IituKyIpXFxiIixuZXh0OiJzdGFydCJ9LHt0b2tlbjpbInN1cHBvcnQuY29uc3RhbnQiXSxyZWdleDovdGhhdFxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dHJhY2V8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46dCxyZWdleDpvfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovWy5dKD8hWy5dKS8sbmV4dDoicHJvcGVydHkifSx7dG9rZW46InN0b3JhZ2UudHlwZSIscmVnZXg6Lz0+LyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6Ly0tfFwrXCt8XC57M318PT09fD09fD18IT18IT09fDwrPT98Pis9P3whfCYmfFx8XHx8XD86fFshJCUmKitcLX5cL15dPT8vLG5leHQ6InN0YXJ0In0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6L1s/Oiw7Ll0vLG5leHQ6InN0YXJ0In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFsoe10vLG5leHQ6InN0YXJ0In0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9eIyEuKiQvfV0scHJvcGVydHk6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitvKyIpKFxcLikoIitvKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKSg/OihcXHMrKShcXHcrKSk/KFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4Oi9bLl0oPyFbLl0pL30se3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDovKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B8cmlrZSl8aSg/Om58emVUb0NvbnRlbnR8ZGViYXJ8Z25UZXh0KXxvcnR8dSg/OnB8Yig/OnN0cig/OmluZyk/KT8pfHBsaSg/OmNlfHQpfGUoPzpuZHx0KD86UmUoPzpzaXphYmxlfHF1ZXN0SGVhZGVyKXxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG8oPzp0S2V5c3x1cnMpfFllYXJ8Q3Vyc29yfFRpbWUoPzpvdXQpP3xJbnRlcnZhbHxaT3B0aW9uc3xEYXRlfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYXRlfEZ1bGxZZWFyKXxGdWxsWWVhcnxBY3RpdmUpfGFyY2gpfHFydHxsaWNlfGF2ZVByZWZlcmVuY2VzfG1hbGwpfGgoPzpvbWV8YW5kbGVFdmVudCl8bmF2aWdhdGV8Yyg/Omhhcig/OkNvZGVBdHxBdCl8byg/OnN8big/OmNhdHx0ZXh0dWFsfGZpcm0pfG1waWxlKXxlaWx8bGVhcig/OlRpbWVvdXR8SW50ZXJ2YWwpP3xhKD86cHR1cmVFdmVudHN8bGwpfHJlYXRlKD86U3R5bGVTaGVldHxQb3B1cHxFdmVudE9iamVjdCkpfHQoPzpvKD86R01UU3RyaW5nfFMoPzp0cmluZ3xvdXJjZSl8VSg/OlRDU3RyaW5nfHBwZXJDYXNlKXxMbyg/OmNhbGVTdHJpbmd8d2VyQ2FzZSkpfGVzdHxhKD86bnxpbnQoPzpFbmFibGVkKT8pKXxpKD86cyg/Ok5hTnxGaW5pdGUpfG5kZXhPZnx0YWxpY3MpfGQoPzppc2FibGVFeHRlcm5hbENhcHR1cmV8dW1wfGV0YWNoRXZlbnQpfHUoPzpuKD86c2hpZnR8dGFpbnR8ZXNjYXBlfHdhdGNoKXxwZGF0ZUNvbW1hbmRzKXxqKD86b2lufGF2YUVuYWJsZWQpfHAoPzpvKD86cHx3KXx1c2h8bHVnaW5zLnJlZnJlc2h8YSg/OmRkaW5nc3xyc2UoPzpJbnR8RmxvYXQpPyl8cig/OmludHxvbXB0fGVmZXJlbmNlKSl8ZSg/OnNjYXBlfG5hYmxlRXh0ZXJuYWxDYXB0dXJlfHZhbHxsZW1lbnRGcm9tUG9pbnR8eCg/OnB8ZWMoPzpTY3JpcHR8Q29tbWFuZCk/KSl8dmFsdWVPZnxVVEN8cXVlcnlDb21tYW5kKD86U3RhdGV8SW5kZXRlcm18RW5hYmxlZHxWYWx1ZSl8Zig/OmkoPzpuZHxsZSg/Ok1vZGlmaWVkRGF0ZXxTaXplfENyZWF0ZWREYXRlfFVwZGF0ZWREYXRlKXx4ZWQpfG8oPzpudCg/OnNpemV8Y29sb3IpfHJ3YXJkKXxsb29yfHJvbUNoYXJDb2RlKXx3YXRjaHxsKD86aW5rfG8oPzphZHxnKXxhc3RJbmRleE9mKXxhKD86c2lufG5jaG9yfGNvc3x0KD86dGFjaEV2ZW50fG9ifGFuKD86Mik/KXxwcGx5fGxlcnR8Yig/OnN8b3J0KSl8cig/Om91KD86bmR8dGVFdmVudHMpfGUoPzpzaXplKD86Qnl8VG8pfGNhbGN8dHVyblZhbHVlfHBsYWNlfHZlcnNlfGwoPzpvYWR8ZWFzZSg/OkNhcHR1cmV8RXZlbnRzKSkpfGFuZG9tKXxnKD86b3xldCg/OlJlc3BvbnNlSGVhZGVyfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2UoPzpjb25kc3xsZWN0aW9uKXxIb3Vyc3xZZWFyfFRpbWUoPzp6b25lT2Zmc2V0KT98RGEoPzp5fHRlKXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGEoPzp5fHRlKXxGdWxsWWVhcil8RnVsbFllYXJ8QSg/OnR0ZW50aW9ufGxsUmVzcG9uc2VIZWFkZXJzKSkpfG0oPzppbnxvdmUoPzpCKD86eXxlbG93KXxUbyg/OkFic29sdXRlKT98QWJvdmUpfGVyZ2VBdHRyaWJ1dGVzfGEoPzp0Y2h8cmdpbnN8eCkpfGIoPzp0b2F8aWd8byg/OmxkfHJkZXJXaWR0aHMpfGxpbmt8YWNrKSlcYig/PVwoKS99LHt0b2tlbjoic3VwcG9ydC5mdW5jdGlvbi5kb20iLHJlZ2V4Oi8ocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWV8Q2xhc3NOYW1lKXxCeUlkKXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGJsdXIpXGIoPz1cKCkvfSx7dG9rZW46InN1cHBvcnQuY29uc3RhbnQiLHJlZ2V4Oi8ocyg/OnlzdGVtTGFuZ3VhZ2V8Y3IoPzppcHRzfG9sbGJhcnN8ZWVuKD86WHxZfFRvcHxMZWZ0KSl8dCg/OnlsZSg/OlNoZWV0cyk/fGF0dXMoPzpUZXh0fGJhcik/KXxpYmxpbmcoPzpCZWxvd3xBYm92ZSl8b3VyY2V8dWZmaXhlc3xlKD86Y3VyaXR5KD86UG9saWN5KT98bCg/OmVjdGlvbnxmKSkpfGgoPzppc3Rvcnl8b3N0KD86bmFtZSk/fGFzKD86aHxGb2N1cykpfHl8WCg/Ok1MRG9jdW1lbnR8U0xEb2N1bWVudCl8big/OmV4dHxhbWUoPzpzcGFjZSg/OnN8VVJJKXxQcm9wKSl8TSg/OklOX1ZBTFVFfEFYX1ZBTFVFKXxjKD86aGFyYWN0ZXJTZXR8byg/Om4oPzpzdHJ1Y3Rvcnx0cm9sbGVycyl8b2tpZUVuYWJsZWR8bG9yRGVwdGh8bXAoPzpvbmVudHN8bGV0ZSkpfHVycmVudHxwdUNsYXNzfGwoPzppKD86cCg/OmJvYXJkRGF0YSk/fGVudEluZm9ybWF0aW9uKXxvc2VkfGFzc2VzKXxhbGxlKD86ZXxyKXxyeXB0byl8dCg/Om8oPzpvbGJhcnxwKXxleHQoPzpUcmFuc2Zvcm18SW5kZW50fERlY29yYXRpb258QWxpZ24pfGFncyl8U1FSVCg/OjFfMnwyKXxpKD86big/Om5lcig/OkhlaWdodHxXaWR0aCl8cHV0KXxkc3xnbm9yZUNhc2UpfHpJbmRleHxvKD86c2NwdXxuKD86cmVhZHlzdGF0ZWNoYW5nZXxMaW5lKXx1dGVyKD86SGVpZ2h0fFdpZHRoKXxwKD86c1Byb2ZpbGV8ZW5lcil8ZmZzY3JlZW5CdWZmZXJpbmcpfE5FR0FUSVZFX0lORklOSVRZfGQoPzppKD86c3BsYXl8YWxvZyg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdHxBcmd1bWVudHMpfHJlY3Rvcmllcyl8ZSg/OnNjcmlwdGlvbnxmYXVsdCg/OlN0YXR1c3xDaCg/OmVja2VkfGFyc2V0KXxWaWV3KSkpfHUoPzpzZXIoPzpQcm9maWxlfExhbmd1YWdlfEFnZW50KXxuKD86aXF1ZUlEfGRlZmluZWQpfHBkYXRlSW50ZXJ2YWwpfF9jb250ZW50fHAoPzppeGVsRGVwdGh8b3J0fGVyc29uYWxiYXJ8a2NzMTF8bCg/OnVnaW5zfGF0Zm9ybSl8YSg/OnRobmFtZXxkZGluZyg/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCl8cmVudCg/OldpbmRvd3xMYXllcik/fGdlKD86WCg/Ok9mZnNldCk/fFkoPzpPZmZzZXQpPykpfHIoPzpvKD86dG8oPzpjb2x8dHlwZSl8ZHVjdCg/OlN1Yik/fG1wdGVyKXxlKD86dmlvdXN8Zml4KSkpfGUoPzpuKD86Y29kaW5nfGFibGVkUGx1Z2luKXx4KD86dGVybmFsfHBhbmRvKXxtYmVkcyl8dig/OmlzaWJpbGl0eXxlbmRvcig/OlN1Yik/fExpbmtjb2xvcil8VVJMVW5lbmNvZGVkfFAoPzpJfE9TSVRJVkVfSU5GSU5JVFkpfGYoPzppbGVuYW1lfG8oPzpudCg/OlNpemV8RmFtaWx5fFdlaWdodCl8cm1OYW1lKXxyYW1lKD86c3xFbGVtZW50KXxnQ29sb3IpfEV8d2hpdGVTcGFjZXxsKD86aSg/OnN0U3R5bGVUeXBlfG4oPzplSGVpZ2h0fGtDb2xvcikpfG8oPzpjYSg/OnRpb24oPzpiYXIpP3xsTmFtZSl8d3NyYyl8ZSg/Om5ndGh8ZnQoPzpDb250ZXh0KT8pfGEoPzpzdCg/Ok0oPzpvZGlmaWVkfGF0Y2gpfEluZGV4fFBhcmVuKXx5ZXIoPzpzfFgpfG5ndWFnZSkpfGEoPzpwcCg/Ok1pbm9yVmVyc2lvbnxOYW1lfENvKD86ZGVOYW1lfHJlKXxWZXJzaW9uKXx2YWlsKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0KXxsbHxyKD86aXR5fGd1bWVudHMpfExpbmtjb2xvcnxib3ZlKXxyKD86aWdodCg/OkNvbnRleHQpP3xlKD86c3BvbnNlKD86WE1MfFRleHQpfGFkeVN0YXRlKSl8Z2xvYmFsfHh8bSg/OmltZVR5cGVzfHVsdGlsaW5lfGVudWJhcnxhcmdpbig/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCkpfEwoPzpOKD86MTB8Mil8T0coPzoxMEV8MkUpKXxiKD86byg/OnR0b218cmRlcig/OldpZHRofFJpZ2h0V2lkdGh8Qm90dG9tV2lkdGh8U3R5bGV8Q29sb3J8VG9wV2lkdGh8TGVmdFdpZHRoKSl8dWZmZXJEZXB0aHxlbG93fGFja2dyb3VuZCg/OkNvbG9yfEltYWdlKSkpXGIvfSx7dG9rZW46ImlkZW50aWZpZXIiLHJlZ2V4Om99LHtyZWdleDoiIix0b2tlbjoiZW1wdHkiLG5leHQ6Im5vX3JlZ2V4In1dLHN0YXJ0OltpLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0IiksZigic3RhcnQiKSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzK3xeJCIsbmV4dDoic3RhcnQifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJub19yZWdleCJ9XSxyZWdleDpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiL1tzeG5naW15XSoiLG5leHQ6Im5vX3JlZ2V4In0se3Rva2VuOiJpbnZhbGlkIixyZWdleDovXHtcZCtcYiw/XGQqXH1bKypdfFsrKiReP11bKypdfFskXl1bP118XD97Myx9L30se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Oi9cKFw/Wzo9IV18XCl8XHtcZCtcYiw/XGQqXH18WysqXVw/fFsoKSReKyo/Ll0vfSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmRlbGltaXRlciIscmVnZXg6L1x8L30se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Oi9cW1xePy8sbmV4dDoicmVnZXhfY2hhcmFjdGVyX2NsYXNzIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiQiLG5leHQ6Im5vX3JlZ2V4In0se2RlZmF1bHRUb2tlbjoic3RyaW5nLnJlZ2V4cCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmNoYXJjbGFzcy5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Il0iLG5leHQ6InJlZ2V4In0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OiItIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiQiLG5leHQ6Im5vX3JlZ2V4In0se2RlZmF1bHRUb2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MifV0sZnVuY3Rpb25fYXJndW1lbnRzOlt7dG9rZW46InZhcmlhYmxlLnBhcmFtZXRlciIscmVnZXg6b30se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlssIF0rIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IiQifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJub19yZWdleCJ9XSxxcXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OnJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLGNvbnN1bWVMaW5lRW5kOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyJ8JCcsbmV4dDoibm9fcmVnZXgifSx7ZGVmYXVsdFRva2VuOiJzdHJpbmcifV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OnJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLGNvbnN1bWVMaW5lRW5kOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoibm9fcmVnZXgifSx7ZGVmYXVsdFRva2VuOiJzdHJpbmcifV19O2lmKCFlfHwhZS5ub0VTNil0aGlzLiRydWxlcy5ub19yZWdleC51bnNoaWZ0KHtyZWdleDoiW3t9XSIsb25NYXRjaDpmdW5jdGlvbihlLHQsbil7dGhpcy5uZXh0PWU9PSJ7Ij90aGlzLm5leHRTdGF0ZToiIjtpZihlPT0ieyImJm4ubGVuZ3RoKW4udW5zaGlmdCgic3RhcnQiLHQpO2Vsc2UgaWYoZT09In0iJiZuLmxlbmd0aCl7bi5zaGlmdCgpLHRoaXMubmV4dD1uLnNoaWZ0KCk7aWYodGhpcy5uZXh0LmluZGV4T2YoInN0cmluZyIpIT0tMXx8dGhpcy5uZXh0LmluZGV4T2YoImpzeCIpIT0tMSlyZXR1cm4icGFyZW4ucXVhc2kuZW5kIn1yZXR1cm4gZT09InsiPyJwYXJlbi5scGFyZW4iOiJwYXJlbi5ycGFyZW4ifSxuZXh0U3RhdGU6InN0YXJ0In0se3Rva2VuOiJzdHJpbmcucXVhc2kuc3RhcnQiLHJlZ2V4Oi9gLyxwdXNoOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6cn0se3Rva2VuOiJwYXJlbi5xdWFzaS5zdGFydCIscmVnZXg6L1wkey8scHVzaDoic3RhcnQifSx7dG9rZW46InN0cmluZy5xdWFzaS5lbmQiLHJlZ2V4Oi9gLyxuZXh0OiJwb3AifSx7ZGVmYXVsdFRva2VuOiJzdHJpbmcucXVhc2kifV19KSwoIWV8fGUuanN4IT0wKSYmYS5jYWxsKHRoaXMpO3RoaXMuZW1iZWRSdWxlcyhpLCJkb2MtIixbaS5nZXRFbmRSdWxlKCJub19yZWdleCIpXSksdGhpcy5ub3JtYWxpemVSdWxlcygpfTtyLmluaGVyaXRzKHUscyksdC5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXM9dX0pLGFjZS5kZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoKC9eXHMqLylbMF19fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksYWNlLmRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW5ldyBSZWdFeHAodGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIuc291cmNlLnJlcGxhY2UoL1x8W158XSo/JC8sInwiK2Uuc3RhcnQpKSx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW5ldyBSZWdFeHAodGhpcy5mb2xkaW5nU3RvcE1hcmtlci5zb3VyY2UucmVwbGFjZSgvXHxbXnxdKj8kLywifCIrZS5lbmQpKSl9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oW1x7XFtcKF0pW15cfVxdXCldKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce1woXSooW1x9XF1cKV0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLnNpbmdsZUxpbmVCbG9ja0NvbW1lbnRSZT0vXlxzKihcL1wqKS4qXCpcL1xzKiQvLHRoaXMudHJpcGxlU3RhckJsb2NrQ29tbWVudFJlPS9eXHMqKFwvXCpcKlwqKS4qXCpcL1xzKiQvLHRoaXMuc3RhcnRSZWdpb25SZT0vXlxzKihcL1wqfFwvXC8pIz9yZWdpb25cYi8sdGhpcy5fZ2V0Rm9sZFdpZGdldEJhc2U9dGhpcy5nZXRGb2xkV2lkZ2V0LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO2lmKHRoaXMuc2luZ2xlTGluZUJsb2NrQ29tbWVudFJlLnRlc3QocikmJiF0aGlzLnN0YXJ0UmVnaW9uUmUudGVzdChyKSYmIXRoaXMudHJpcGxlU3RhckJsb2NrQ29tbWVudFJlLnRlc3QocikpcmV0dXJuIiI7dmFyIGk9dGhpcy5fZ2V0Rm9sZFdpZGdldEJhc2UoZSx0LG4pO3JldHVybiFpJiZ0aGlzLnN0YXJ0UmVnaW9uUmUudGVzdChyKT8ic3RhcnQiOml9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPWUuZ2V0TGluZShuKTtpZih0aGlzLnN0YXJ0UmVnaW9uUmUudGVzdChpKSlyZXR1cm4gdGhpcy5nZXRDb21tZW50UmVnaW9uQmxvY2soZSxpLG4pO3ZhciBzPWkubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgsMSk7cmV0dXJuIHUmJiF1LmlzTXVsdGlMaW5lKCkmJihyP3U9dGhpcy5nZXRTZWN0aW9uUmFuZ2UoZSxuKTp0IT0iYWxsIiYmKHU9bnVsbCkpLHV9aWYodD09PSJtYXJrYmVnaW4iKXJldHVybjt2YXIgcz1pLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7cmV0dXJuIHNbMV0/dGhpcy5jbG9zaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pOmUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8sLTEpfX0sdGhpcy5nZXRTZWN0aW9uUmFuZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCkscj1uLnNlYXJjaCgvXFMvKSxzPXQsbz1uLmxlbmd0aDt0Kz0xO3ZhciB1PXQsYT1lLmdldExlbmd0aCgpO3doaWxlKCsrdDxhKXtuPWUuZ2V0TGluZSh0KTt2YXIgZj1uLnNlYXJjaCgvXFMvKTtpZihmPT09LTEpY29udGludWU7aWYocj5mKWJyZWFrO3ZhciBsPXRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlKGUsImFsbCIsdCk7aWYobCl7aWYobC5zdGFydC5yb3c8PXMpYnJlYWs7aWYobC5pc011bHRpTGluZSgpKXQ9bC5lbmQucm93O2Vsc2UgaWYocj09ZilicmVha311PXR9cmV0dXJuIG5ldyBpKHMsbyx1LGUuZ2V0TGluZSh1KS5sZW5ndGgpfSx0aGlzLmdldENvbW1lbnRSZWdpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC5zZWFyY2goL1xzKiQvKSxzPWUuZ2V0TGVuZ3RoKCksbz1uLHU9L15ccyooPzpcL1wqfFwvXC98LS0pIz8oZW5kKT9yZWdpb25cYi8sYT0xO3doaWxlKCsrbjxzKXt0PWUuZ2V0TGluZShuKTt2YXIgZj11LmV4ZWModCk7aWYoIWYpY29udGludWU7ZlsxXT9hLS06YSsrO2lmKCFhKWJyZWFrfXZhciBsPW47aWYobD5vKXJldHVybiBuZXcgaShvLHIsbCx0Lmxlbmd0aCl9fS5jYWxsKG8ucHJvdG90eXBlKX0pLGFjZS5kZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsdT1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxhPWUoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixmPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxsPWZ1bmN0aW9uKCl7dGhpcy5IaWdobGlnaHRSdWxlcz1zLHRoaXMuJG91dGRlbnQ9bmV3IG8sdGhpcy4kYmVoYXZpb3VyPW5ldyBhLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBmfTtyLmluaGVyaXRzKGwsaSksZnVuY3Rpb24oKXt0aGlzLmxpbmVDb21tZW50U3RhcnQ9Ii8vIix0aGlzLmJsb2NrQ29tbWVudD17c3RhcnQ6Ii8qIixlbmQ6IiovIn0sdGhpcy4kcXVvdGVzPXsnIic6JyInLCInIjoiJyIsImAiOiJgIn0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy5nZXRUb2tlbml6ZXIoKS5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucyxvPWkuc3RhdGU7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCJ8fGU9PSJub19yZWdleCIpe3ZhciB1PXQubWF0Y2goL14uKig/OlxiY2FzZVxiLio6fFtce1woXFtdKVxzKiQvKTt1JiYocis9bil9ZWxzZSBpZihlPT0iZG9jLXN0YXJ0Iil7aWYobz09InN0YXJ0Inx8bz09Im5vX3JlZ2V4IilyZXR1cm4iIjt2YXIgdT10Lm1hdGNoKC9eXHMqKFwvPylcKi8pO3UmJih1WzFdJiYocis9IiAiKSxyKz0iKiAiKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB1KFsiYWNlIl0sImFjZS9tb2RlL2phdmFzY3JpcHRfd29ya2VyIiwiSmF2YVNjcmlwdFdvcmtlciIpO3JldHVybiB0LmF0dGFjaFRvRG9jdW1lbnQoZS5nZXREb2N1bWVudCgpKSx0Lm9uKCJhbm5vdGF0ZSIsZnVuY3Rpb24odCl7ZS5zZXRBbm5vdGF0aW9ucyh0LmRhdGEpfSksdC5vbigidGVybWluYXRlIixmdW5jdGlvbigpe2UuY2xlYXJBbm5vdGF0aW9ucygpfSksdH0sdGhpcy4kaWQ9ImFjZS9tb2RlL2phdmFzY3JpcHQifS5jYWxsKGwucHJvdG90eXBlKSx0Lk1vZGU9bH0pOyAgICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgYWNlLnJlcXVpcmUoWyJhY2UvbW9kZS9qYXZhc2NyaXB0Il0sIGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgPT0gIm9iamVjdCIgJiYgdHlwZW9mIGV4cG9ydHMgPT0gIm9iamVjdCIgJiYgbW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pKCk7ICAgIAp9Ow==",
  33. {"status":true}
  34. ],
  35. [
  36. "jquery.min.js_3.4.1",
  37. "LyohIGpRdWVyeSB2My40LjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3QoZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKEMsZSl7InVzZSBzdHJpY3QiO3ZhciB0PVtdLEU9Qy5kb2N1bWVudCxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmNvbmNhdCx1PXQucHVzaCxpPXQuaW5kZXhPZixuPXt9LG89bi50b1N0cmluZyx2PW4uaGFzT3duUHJvcGVydHksYT12LnRvU3RyaW5nLGw9YS5jYWxsKE9iamVjdCkseT17fSxtPWZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGV9LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmU9PT1lLndpbmRvd30sYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjQuMSIsaz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgay5mbi5pbml0KGUsdCl9LHA9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nO2Z1bmN0aW9uIGQoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9ay5mbj1rLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6ayxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ay5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGsuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGsubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlbmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjx0P1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1LHNvcnQ6dC5zb3J0LHNwbGljZTp0LnNwbGljZX0say5leHRlbmQ9ay5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG0oYSl8fChhPXt9KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKGsuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNBcnJheShuKT9bXTppfHxrLmlzUGxhaW5PYmplY3Qobik/bjp7fSxpPSExLGFbdF09ay5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LGsuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhmK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj12LmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJmEuY2FsbChuKT09PWwpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0KXtiKGUse25vbmNlOnQmJnQubm9uY2V9KX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MDtpZihkKGUpKXtmb3Iobj1lLmxlbmd0aDtyPG47cisrKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVha31lbHNlIGZvcihyIGluIGUpaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrO3JldHVybiBlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKHAsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKGQoT2JqZWN0KGUpKT9rLm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTp1LmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/LTE6aS5jYWxsKHQsZSxuKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49K3QubGVuZ3RoLHI9MCxpPWUubGVuZ3RoO3I8bjtyKyspZVtpKytdPXRbcl07cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPVtdLGk9MCxvPWUubGVuZ3RoLGE9IW47aTxvO2krKykhdChlW2ldLGkpIT09YSYmci5wdXNoKGVbaV0pO3JldHVybiByfSxtYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz0wLGE9W107aWYoZChlKSlmb3Iocj1lLmxlbmd0aDtvPHI7bysrKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO2Vsc2UgZm9yKG8gaW4gZSludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtyZXR1cm4gZy5hcHBseShbXSxhKX0sZ3VpZDoxLHN1cHBvcnQ6eX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihrLmZuW1N5bWJvbC5pdGVyYXRvcl09dFtTeW1ib2wuaXRlcmF0b3JdKSxrLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7blsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTt2YXIgaD1mdW5jdGlvbihuKXt2YXIgZSxkLGIsbyxpLGgsZixnLHcsdSxsLFQsQyxhLEUsdixzLGMseSxrPSJzaXp6bGUiKzEqbmV3IERhdGUsbT1uLmRvY3VtZW50LFM9MCxyPTAscD11ZSgpLHg9dWUoKSxOPXVlKCksQT11ZSgpLEQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJihsPSEwKSwwfSxqPXt9Lmhhc093blByb3BlcnR5LHQ9W10scT10LnBvcCxMPXQucHVzaCxIPXQucHVzaCxPPXQuc2xpY2UsUD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZihlW25dPT09dClyZXR1cm4gbjtyZXR1cm4tMX0sUj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLE09IltcXHgyMFxcdFxcclxcblxcZl0iLEk9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixXPSJcXFsiK00rIiooIitJKyIpKD86IitNKyIqKFsqXiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrSSsiKSl8KSIrTSsiKlxcXSIsJD0iOigiK0krIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1crIikqKXwuKilcXCl8KSIsRj1uZXcgUmVnRXhwKE0rIisiLCJnIiksQj1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLF89bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSx6PW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKE0rInw+IiksWD1uZXcgUmVnRXhwKCQpLFY9bmV3IFJlZ0V4cCgiXiIrSSsiJCIpLEc9e0lEOm5ldyBSZWdFeHAoIl4jKCIrSSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitJKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitJKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrVyksUFNFVURPOm5ldyBSZWdFeHAoIl4iKyQpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK1IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L0hUTUwkL2ksUT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLEo9L15oXGQkL2ksSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGVlPS9bK35dLyx0ZT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksbmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIweCIrdC02NTUzNjtyZXR1cm4gciE9cnx8bj90OnI8MD9TdHJpbmcuZnJvbUNoYXJDb2RlKHIrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUocj4+MTB8NTUyOTYsMTAyMyZyfDU2MzIwKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwobS5jaGlsZE5vZGVzKSxtLmNoaWxkTm9kZXMpLHRbbS5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoKGU/ZS5vd25lckRvY3VtZW50fHxlOm0pIT09QyYmVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhQVt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiZVLnRlc3QodCkpeyhzPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZShyZSxpZSk6ZS5zZXRBdHRyaWJ1dGUoImlkIixzPWspLG89KGw9aCh0KSkubGVuZ3RoO3doaWxlKG8tLSlsW29dPSIjIitzKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpLGY9ZWUudGVzdCh0KSYmeWUoZS5wYXJlbnROb2RlKXx8ZX10cnl7cmV0dXJuIEguYXBwbHkobixmLnF1ZXJ5U2VsZWN0b3JBbGwoYykpLG59Y2F0Y2goZSl7QSh0LCEwKX1maW5hbGx5e3M9PT1rJiZlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBnKHQucmVwbGFjZShCLCIkMSIpLGUsbixyKX1mdW5jdGlvbiB1ZSgpe3ZhciByPVtdO3JldHVybiBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHIucHVzaCh0KyIgIik+Yi5jYWNoZUxlbmd0aCYmZGVsZXRlIGVbci5zaGlmdCgpXSxlW3QrIiAiXT1ufX1mdW5jdGlvbiBsZShlKXtyZXR1cm4gZVtrXT0hMCxlfWZ1bmN0aW9uIGNlKGUpe3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFlKHQpfWNhdGNoKGUpe3JldHVybiExfWZpbmFsbHl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdD1udWxsfX1mdW5jdGlvbiBmZShlLHQpe3ZhciBuPWUuc3BsaXQoInwiKSxyPW4ubGVuZ3RoO3doaWxlKHItLSliLmF0dHJIYW5kbGVbbltyXV09dH1mdW5jdGlvbiBwZShlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9kZVR5cGUmJmUuc291cmNlSW5kZXgtdC5zb3VyY2VJbmRleDtpZihyKXJldHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJsaW5nKWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gZGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmUudHlwZT09PXR9fWZ1bmN0aW9uIGhlKG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT10fHwiYnV0dG9uIj09PXQpJiZlLnR5cGU9PT1ufX1mdW5jdGlvbiBnZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImZvcm0iaW4gZT9lLnBhcmVudE5vZGUmJiExPT09ZS5kaXNhYmxlZD8ibGFiZWwiaW4gZT8ibGFiZWwiaW4gZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5kaXNhYmxlZD09PXQ6ZS5kaXNhYmxlZD09PXQ6ZS5pc0Rpc2FibGVkPT09dHx8ZS5pc0Rpc2FibGVkIT09IXQmJmFlKGUpPT09dDplLmRpc2FibGVkPT09dDoibGFiZWwiaW4gZSYmZS5kaXNhYmxlZD09PXR9fWZ1bmN0aW9uIHZlKGEpe3JldHVybiBsZShmdW5jdGlvbihvKXtyZXR1cm4gbz0rbyxsZShmdW5jdGlvbihlLHQpe3ZhciBuLHI9YShbXSxlLmxlbmd0aCxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249cltpXV0mJihlW25dPSEodFtuXT1lW25dKSl9KX0pfWZ1bmN0aW9uIHllKGUpe3JldHVybiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9Zm9yKGUgaW4gZD1zZS5zdXBwb3J0PXt9LGk9c2UuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lc3BhY2VVUkksbj0oZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVkudGVzdCh0fHxuJiZuLm5vZGVOYW1lfHwiSFRNTCIpfSxUPXNlLnNldERvY3VtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lP2Uub3duZXJEb2N1bWVudHx8ZTptO3JldHVybiByIT09QyYmOT09PXIubm9kZVR5cGUmJnIuZG9jdW1lbnRFbGVtZW50JiYoYT0oQz1yKS5kb2N1bWVudEVsZW1lbnQsRT0haShDKSxtIT09QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuYXR0cmlidXRlcz1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxkLmdldEVsZW1lbnRzQnlUYWdOYW1lPWNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKEMuY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUsudGVzdChDLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGQuZ2V0QnlJZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5pZD1rLCFDLmdldEVsZW1lbnRzQnlOYW1lfHwhQy5nZXRFbGVtZW50c0J5TmFtZShrKS5sZW5ndGh9KSxkLmdldEJ5SWQ/KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmRSl7dmFyIG4scixpLG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6ZC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxsKGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioiPT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gb30sYi5maW5kLkNMQVNTPWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmRSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxzPVtdLHY9W10sKGQucXNhPUsudGVzdChDLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGNlKGZ1bmN0aW9uKGUpe2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitrKyInPjwvYT48c2VsZWN0IGlkPSciK2srIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmdi5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK1IrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitrKyItXSIpLmxlbmd0aHx8di5wdXNoKCJ+PSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitrKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpfSksY2UoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmdi5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnYucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSx2LnB1c2goIiwuKjoiKX0pKSwoZC5tYXRjaGVzU2VsZWN0b3I9Sy50ZXN0KGM9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcikpJiZjZShmdW5jdGlvbihlKXtkLmRpc2Nvbm5lY3RlZE1hdGNoPWMuY2FsbChlLCIqIiksYy5jYWxsKGUsIltzIT0nJ106eCIpLHMucHVzaCgiIT0iLCQpfSksdj12Lmxlbmd0aCYmbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSkscz1zLmxlbmd0aCYmbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksdD1LLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxLLnRlc3QoYS5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxEPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxlKT09PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09PUN8fGUub3duZXJEb2N1bWVudD09PW0mJnkobSxlKT8tMTp0PT09Q3x8dC5vd25lckRvY3VtZW50PT09bSYmeShtLHQpPzE6dT9QKHUsZSktUCh1LHQpOjA6NCZuPy0xOjEpfTpmdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBsPSEwLDA7dmFyIG4scj0wLGk9ZS5wYXJlbnROb2RlLG89dC5wYXJlbnROb2RlLGE9W2VdLHM9W3RdO2lmKCFpfHwhbylyZXR1cm4gZT09PUM/LTE6dD09PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09PW0/LTE6c1tyXT09PW0/MTowfSksQ30sc2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBzZShlLG51bGwsbnVsbCx0KX0sc2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoKGUub3duZXJEb2N1bWVudHx8ZSkhPT1DJiZUKGUpLGQubWF0Y2hlc1NlbGVjdG9yJiZFJiYhQVt0KyIgIl0mJighc3x8IXMudGVzdCh0KSkmJighdnx8IXYudGVzdCh0KSkpdHJ5e3ZhciBuPWMuY2FsbChlLHQpO2lmKG58fGQuZGlzY29ubmVjdGVkTWF0Y2h8fGUuZG9jdW1lbnQmJjExIT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gbn1jYXRjaChlKXtBKHQsITApfXJldHVybiAwPHNlKHQsQyxudWxsLFtlXSkubGVuZ3RofSxzZS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybihlLm93bmVyRG9jdW1lbnR8fGUpIT09QyYmVChlKSx5KGUsdCl9LHNlLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9PUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZqLmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KEQpLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1wW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJnAoZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoRiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtrXXx8KGFba109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09UyYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W1MscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW2tdfHwoYVtrXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1TJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW2tdfHwoYVtrXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtTLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW2tdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoQiwiJDEiKSk7cmV0dXJuIHNba10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bUyxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW2tdfHwoZVtrXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PVMmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltrXSYmKHY9Q2UodikpLHkmJiF5W2tdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlba10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoQiwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKEIsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9TltlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtrXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPU4oZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPVMrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT09Q3x8dHx8aSk7bCE9PWcmJm51bGwhPShvPWRbbF0pO2wrKyl7aWYoeCYmbyl7YT0wLHR8fG8ub3duZXJEb2N1bWVudD09PUN8fChUKG8pLG49IUUpO3doaWxlKHM9dlthKytdKWlmKHMobyx0fHxDLG4pKXtyLnB1c2gobyk7YnJlYWt9aSYmKFM9aCl9bSYmKChvPSFzJiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVthKytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1xLmNhbGwocikpO2Y9VGUoZil9SC5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5sZW5ndGgmJnNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihTPWgsdz1wKSxjfSxtP2xlKHIpOnIpKSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX0sZz1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGM9IXImJmgoZT1sLnNlbGVjdG9yfHxlKTtpZihuPW58fFtdLDE9PT1jLmxlbmd0aCl7aWYoMjwobz1jWzBdPWNbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShhPW9bMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiZFJiZiLnJlbGF0aXZlW29bMV0udHlwZV0pe2lmKCEodD0oYi5maW5kLklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUcubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1iLmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSxlZS50ZXN0KG9bMF0udHlwZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSwhKGU9ci5sZW5ndGgmJnhlKG8pKSlyZXR1cm4gSC5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8ZihlLGMpKShyLHQsIUUsbiwhdHx8ZWUudGVzdChlKSYmeWUodC5wYXJlbnROb2RlKXx8dCksbn0sZC5zb3J0U3RhYmxlPWsuc3BsaXQoIiIpLnNvcnQoRCkuam9pbigiIik9PT1rLGQuZGV0ZWN0RHVwbGljYXRlcz0hIWwsVCgpLGQuc29ydERldGFjaGVkPWNlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oQy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxkLmF0dHJpYnV0ZXMmJmNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGZlKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmZShSLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLHNlfShDKTtrLmZpbmQ9aCxrLmV4cHI9aC5zZWxlY3RvcnMsay5leHByWyI6Il09ay5leHByLnBzZXVkb3Msay51bmlxdWVTb3J0PWsudW5pcXVlPWgudW5pcXVlU29ydCxrLnRleHQ9aC5nZXRUZXh0LGsuaXNYTUxEb2M9aC5pc1hNTCxrLmNvbnRhaW5zPWguY29udGFpbnMsay5lc2NhcGVTZWxlY3Rvcj1oLmVzY2FwZTt2YXIgVD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmayhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LFM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LE49ay5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgRD0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBqKGUsbixyKXtyZXR1cm4gbShuKT9rLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5jYWxsKGUsdCxlKSE9PXJ9KTpuLm5vZGVUeXBlP2suZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/ay5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuLTE8aS5jYWxsKG4sZSkhPT1yfSk6ay5maWx0ZXIobixlLHIpfWsuZmlsdGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwxPT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP2suZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106ay5maW5kLm1hdGNoZXMoZSxrLmdyZXAodCxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LGsuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhrKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihrLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKG49dGhpcy5wdXNoU3RhY2soW10pLHQ9MDt0PHI7dCsrKWsuZmluZChlLGlbdF0sbik7cmV0dXJuIDE8cj9rLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFqKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZOLnRlc3QoZSk/ayhlKTplfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBxLEw9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoay5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8cSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOkwuZXhlYyhlKSl8fCFyWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2Ygaz90WzBdOnQsay5tZXJnZSh0aGlzLGsucGFyc2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RSwhMCkpLEQudGVzdChyWzFdKSYmay5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpbSh0aGlzW3JdKT90aGlzW3JdKHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUUuZ2V0RWxlbWVudEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0oZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoayk6ay5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1rLmZuLHE9ayhFKTt2YXIgSD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxPPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIFAoZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfWsuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ayhlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihrLmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT0ic3RyaW5nIiE9dHlwZW9mIGUmJmsoZSk7aWYoIU4udGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZrLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/ay51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/aS5jYWxsKGsoZSksdGhpc1swXSk6aS5jYWxsKHRoaXMsZS5qcXVlcnk/ZVswXTplKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhrLnVuaXF1ZVNvcnQoay5tZXJnZSh0aGlzLmdldCgpLGsoZSx0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksay5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVChlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gUChlLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiBQKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFQoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBUKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBTKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gUyhlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUuY29udGVudERvY3VtZW50P2UuY29udGVudERvY3VtZW50OihBKGUsInRlbXBsYXRlIikmJihlPWUuY29udGVudHx8ZSksay5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKHIsaSl7ay5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPWsubWFwKHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG49ay5maWx0ZXIodCxuKSksMTx0aGlzLmxlbmd0aCYmKE9bcl18fGsudW5pcXVlU29ydChuKSxILnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUj0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gSShlKXt0aHJvdyBlfWZ1bmN0aW9uIFcoZSx0LG4scil7dmFyIGk7dHJ5e2UmJm0oaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmbShpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fWsuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/KGU9cixuPXt9LGsuZWFjaChlLm1hdGNoKFIpfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxuKTprLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgrK2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihsPXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkpLGZ1bmN0aW9uIG4oZSl7ay5lYWNoKGUsZnVuY3Rpb24oZSx0KXttKHQpP3IudW5pcXVlJiZmLmhhcyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXcodCkmJm4odCl9KX0oYXJndW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gay5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKC0xPChuPWsuaW5BcnJheSh0LHMsbikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPGsuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFhfSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIW99fTtyZXR1cm4gZn0say5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciBvPVtbIm5vdGlmeSIsInByb2dyZXNzIixrLkNhbGxiYWNrcygibWVtb3J5Iiksay5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLGsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixrLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxrLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxpPSJwZW5kaW5nIixhPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzO3JldHVybiBrLkRlZmVycmVkKGZ1bmN0aW9uKHIpe2suZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49bShpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmbShlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVjdCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIgZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sbSh0KT9zP3QuY2FsbChlLGwodSxvLE0scyksbCh1LG8sSSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxNLHMpLGwodSxvLEkscyksbCh1LG8sTSxvLm5vdGlmeVdpdGgpKSk6KGEhPT1NJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJlc29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtrLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJmsuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuc3RhY2tUcmFjZSksdTw9aSsxJiYoYSE9PUkmJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikpfX07aT90KCk6KGsuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodC5zdGFja1RyYWNlPWsuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLEMuc2V0VGltZW91dCh0KSl9fXJldHVybiBrLkRlZmVycmVkKGZ1bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLG0ocik/cjpNLGUubm90aWZ5V2l0aCkpLG9bMV1bM10uYWRkKGwoMCxlLG0odCk/dDpNKSksb1syXVszXS5hZGQobCgwLGUsbShuKT9uOkkpKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9rLmV4dGVuZChlLGEpOmF9fSxzPXt9O3JldHVybiBrLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXRbMl0scj10WzVdO2FbdFsxXV09bi5hZGQsciYmbi5hZGQoZnVuY3Rpb24oKXtpPXJ9LG9bMy1lXVsyXS5kaXNhYmxlLG9bMy1lXVszXS5kaXNhYmxlLG9bMF1bMl0ubG9jayxvWzBdWzNdLmxvY2spLG4uYWRkKHRbM10uZmlyZSksc1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBzW3RbMF0rIldpdGgiXSh0aGlzPT09cz92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LHNbdFswXSsiV2l0aCJdPW4uZmlyZVdpdGh9KSxhLnByb21pc2UocyksZSYmZS5jYWxsKHMscyksc30sd2hlbjpmdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHQ9bixyPUFycmF5KHQpLGk9cy5jYWxsKGFyZ3VtZW50cyksbz1rLkRlZmVycmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxhcmd1bWVudHMubGVuZ3RoP3MuY2FsbChhcmd1bWVudHMpOmUsLS1ufHxvLnJlc29sdmVXaXRoKHIsaSl9fTtpZihuPD0xJiYoVyhlLG8uZG9uZShhKHQpKS5yZXNvbHZlLG8ucmVqZWN0LCFuKSwicGVuZGluZyI9PT1vLnN0YXRlKCl8fG0oaVt0XSYmaVt0XS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3doaWxlKHQtLSlXKGlbdF0sYSh0KSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciAkPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO2suRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe0MuY29uc29sZSYmQy5jb25zb2xlLndhcm4mJmUmJiQudGVzdChlLm5hbWUpJiZDLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0say5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9O3ZhciBGPWsuRGVmZXJyZWQoKTtmdW5jdGlvbiBCKCl7RS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCKSxDLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEIpLGsucmVhZHkoKX1rLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7ay5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LGsuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1rLnJlYWR5V2FpdDprLmlzUmVhZHkpfHwoay5pc1JlYWR5PSEwKSE9PWUmJjA8LS1rLnJlYWR5V2FpdHx8Ri5yZXNvbHZlV2l0aChFLFtrXSl9fSksay5yZWFkeS50aGVuPUYudGhlbiwiY29tcGxldGUiPT09RS5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1FLnJlYWR5U3RhdGUmJiFFLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9DLnNldFRpbWVvdXQoay5yZWFkeSk6KEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixCKSk7dmFyIF89ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXcobikpZm9yKHMgaW4gaT0hMCxuKV8oZSx0LHMsbltzXSwhMCxvLGEpO2Vsc2UgaWYodm9pZCAwIT09ciYmKGk9ITAsbShyKXx8KGE9ITApLGwmJihhPyh0LmNhbGwoZSxyKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGwuY2FsbChrKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5jYWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4pOm99LHo9L14tbXMtLyxVPS8tKFthLXpdKS9nO2Z1bmN0aW9uIFgoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIGUucmVwbGFjZSh6LCJtcy0iKS5yZXBsYWNlKFUsWCl9dmFyIEc9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBZKCl7dGhpcy5leHBhbmRvPWsuZXhwYW5kbytZLnVpZCsrfVkudWlkPTEsWS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sRyhlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbVih0KV09bjtlbHNlIGZvcihyIGluIHQpaVtWKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1YodCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFYpOih0PVYodCkpaW4gcj9bdF06dC5tYXRjaChSKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fGsuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIWsuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBRPW5ldyBZLEo9bmV3IFksSz0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLFo9L1tBLVpdL2c7ZnVuY3Rpb24gZWUoZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShaLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Sy50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fUouc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufWsuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBKLmhhc0RhdGEoZSl8fFEuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEouYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe0oucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9fSksay5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1KLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVEuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9VihyLnNsaWNlKDUpKSxlZShvLHIsaVtyXSkpO1Euc2V0KG8sImhhc0RhdGFBdHRycyIsITApfXJldHVybiBpfXJldHVybiJvYmplY3QiPT10eXBlb2Ygbj90aGlzLmVhY2goZnVuY3Rpb24oKXtKLnNldCh0aGlzLG4pfSk6Xyh0aGlzLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKG8mJnZvaWQgMD09PWUpcmV0dXJuIHZvaWQgMCE9PSh0PUouZ2V0KG8sbikpP3Q6dm9pZCAwIT09KHQ9ZWUobyxuKSk/dDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Si5zZXQodGhpcyxuLGUpfSl9LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0oucmVtb3ZlKHRoaXMsZSl9KX19KSxrLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1RLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPVEuYWNjZXNzKGUsdCxrLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1rLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPWsuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsZnVuY3Rpb24oKXtrLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gUS5nZXQoZSxuKXx8US5hY2Nlc3MoZSxuLHtlbXB0eTprLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtRLnJlbW92ZShlLFt0KyJxdWV1ZSIsbl0pfSl9KX19KSxrLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/ay5xdWV1ZSh0aGlzWzBdLHQpOnZvaWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1rLnF1ZXVlKHRoaXMsdCxuKTtrLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJmsuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2suZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTEsaT1rLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSkobj1RLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1wdHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciB0ZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxuZT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrdGUrIikoW2EteiVdKikkIiwiaSIpLHJlPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0saWU9RS5kb2N1bWVudEVsZW1lbnQsb2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxhZT17Y29tcG9zZWQ6ITB9O2llLmdldFJvb3ROb2RlJiYob2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHxlLmdldFJvb3ROb2RlKGFlKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBzZT1mdW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09ZS5zdHlsZS5kaXNwbGF5JiZvZShlKSYmIm5vbmUiPT09ay5jc3MoZSwiZGlzcGxheSIpfSx1ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGE9e307Zm9yKG8gaW4gdClhW29dPWUuc3R5bGVbb10sZS5zdHlsZVtvXT10W29dO2ZvcihvIGluIGk9bi5hcHBseShlLHJ8fFtdKSx0KWUuc3R5bGVbb109YVtvXTtyZXR1cm4gaX07ZnVuY3Rpb24gbGUoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBrLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChrLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihrLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmbmUuZXhlYyhrLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pay5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLGsuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgY2U9e307ZnVuY3Rpb24gZmUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109US5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmc2UocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT1jZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9ay5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSxjZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsUS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1rLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtzZSh0aGlzKT9rKHRoaXMpLnNob3coKTprKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksZ2U9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP2subWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspUS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFEuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2Uub3B0Z3JvdXA9Z2Uub3B0aW9uLGdlLnRib2R5PWdlLnRmb290PWdlLmNvbGdyb3VwPWdlLmNhcHRpb249Z2UudGhlYWQsZ2UudGg9Z2UudGQ7dmFyIG1lLHhlLGJlPS88fCYjP1x3KzsvO2Z1bmN0aW9uIHdlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGEscyx1LGwsYyxmPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHA9W10sZD0wLGg9ZS5sZW5ndGg7ZDxoO2QrKylpZigobz1lW2RdKXx8MD09PW8paWYoIm9iamVjdCI9PT13KG8pKWsubWVyZ2UocCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKGJlLnRlc3Qobykpe2E9YXx8Zi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxzPShkZS5leGVjKG8pfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLHU9Z2Vbc118fGdlLl9kZWZhdWx0LGEuaW5uZXJIVE1MPXVbMV0ray5odG1sUHJlZmlsdGVyKG8pK3VbMl0sYz11WzBdO3doaWxlKGMtLSlhPWEubGFzdENoaWxkO2subWVyZ2UocCxhLmNoaWxkTm9kZXMpLChhPWYuZmlyc3RDaGlsZCkudGV4dENvbnRlbnQ9IiJ9ZWxzZSBwLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7Zi50ZXh0Q29udGVudD0iIixkPTA7d2hpbGUobz1wW2QrK10paWYociYmLTE8ay5pbkFycmF5KG8scikpaSYmaS5wdXNoKG8pO2Vsc2UgaWYobD1vZShvKSxhPXZlKGYuYXBwZW5kQ2hpbGQobyksInNjcmlwdCIpLGwmJnllKGEpLG4pe2M9MDt3aGlsZShvPWFbYysrXSloZS50ZXN0KG8udHlwZXx8IiIpJiZuLnB1c2gobyl9cmV0dXJuIGZ9bWU9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKHhlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSx4ZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIikseGUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLG1lLmFwcGVuZENoaWxkKHhlKSx5LmNoZWNrQ2xvbmU9bWUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLG1lLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIW1lLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTt2YXIgVGU9L15rZXkvLENlPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxFZT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24ga2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBTZSgpe3JldHVybiExfWZ1bmN0aW9uIE5lKGUsdCl7cmV0dXJuIGU9PT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRS5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319KCk9PSgiZm9jdXMiPT09dCl9ZnVuY3Rpb24gQWUoZSx0LG4scixpLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtmb3IocyBpbiJzdHJpbmciIT10eXBlb2YgbiYmKHI9cnx8bixuPXZvaWQgMCksdClBZShlLHMsbixyLHRbc10sbyk7cmV0dXJuIGV9aWYobnVsbD09ciYmbnVsbD09aT8oaT1uLHI9bj12b2lkIDApOm51bGw9PWkmJigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXZvaWQgMCk6KGk9cixyPW4sbj12b2lkIDApKSwhMT09PWkpaT1TZTtlbHNlIGlmKCFpKXJldHVybiBlO3JldHVybiAxPT09byYmKGE9aSwoaT1mdW5jdGlvbihlKXtyZXR1cm4gaygpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9YS5ndWlkfHwoYS5ndWlkPWsuZ3VpZCsrKSksZS5lYWNoKGZ1bmN0aW9uKCl7ay5ldmVudC5hZGQodGhpcyx0LGkscixuKX0pfWZ1bmN0aW9uIERlKGUsaSxvKXtvPyhRLnNldChlLGksITEpLGsuZXZlbnQuYWRkKGUsaSx7bmFtZXNwYWNlOiExLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPVEuZ2V0KHRoaXMsaSk7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tpXSl7aWYoci5sZW5ndGgpKGsuZXZlbnQuc3BlY2lhbFtpXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKHI9cy5jYWxsKGFyZ3VtZW50cyksUS5zZXQodGhpcyxpLHIpLHQ9byh0aGlzLGkpLHRoaXNbaV0oKSxyIT09KG49US5nZXQodGhpcyxpKSl8fHQ/US5zZXQodGhpcyxpLCExKTpuPXt9LHIhPT1uKXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxuLnZhbHVlfWVsc2Ugci5sZW5ndGgmJihRLnNldCh0aGlzLGkse3ZhbHVlOmsuZXZlbnQudHJpZ2dlcihrLmV4dGVuZChyWzBdLGsuRXZlbnQucHJvdG90eXBlKSxyLnNsaWNlKDEpLHRoaXMpfSksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fSkpOnZvaWQgMD09PVEuZ2V0KGUsaSkmJmsuZXZlbnQuYWRkKGUsaSxrZSl9ay5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1RLmdldCh0KTtpZih2KXtuLmhhbmRsZXImJihuPShvPW4pLmhhbmRsZXIsaT1vLnNlbGVjdG9yKSxpJiZrLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGllLGkpLG4uZ3VpZHx8KG4uZ3VpZD1rLmd1aWQrKyksKHU9di5ldmVudHMpfHwodT12LmV2ZW50cz17fSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGsmJmsuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP2suZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChSKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9RWUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9ay5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmay5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxrLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9US5oYXNEYXRhKGUpJiZRLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChSKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9RWUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPWsuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fGsucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KWsuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7ay5pc0VtcHR5T2JqZWN0KHUpJiZRLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1rLmV2ZW50LmZpeChlKSx1PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxsPShRLmdldCh0aGlzLCJldmVudHMiKXx8e30pW3MudHlwZV18fFtdLGM9ay5ldmVudC5zcGVjaWFsW3MudHlwZV18fHt9O2Zvcih1WzBdPXMsdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdVt0XT1hcmd1bWVudHNbdF07aWYocy5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHwhMSE9PWMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLHMpKXthPWsuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLHMsbCksdD0wO3doaWxlKChpPWFbdCsrXSkmJiFzLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3MuY3VycmVudFRhcmdldD1pLmVsZW0sbj0wO3doaWxlKChvPWkuaGFuZGxlcnNbbisrXSkmJiFzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpcy5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhcy5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwocy5oYW5kbGVPYmo9byxzLmRhdGE9by5kYXRhLHZvaWQgMCE9PShyPSgoay5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSx1KSkmJiExPT09KHMucmVzdWx0PXIpJiYocy5wcmV2ZW50RGVmYXVsdCgpLHMuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gYy5wb3N0RGlzcGF0Y2gmJmMucG9zdERpc3BhdGNoLmNhbGwodGhpcyxzKSxzLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzPVtdLHU9dC5kZWxlZ2F0ZUNvdW50LGw9ZS50YXJnZXQ7aWYodSYmbC5ub2RlVHlwZSYmISgiY2xpY2siPT09ZS50eXBlJiYxPD1lLmJ1dHRvbikpZm9yKDtsIT09dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fCEwIT09bC5kaXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248dTtuKyspdm9pZCAwPT09YVtpPShyPXRbbl0pLnNlbGVjdG9yKyIgIl0mJihhW2ldPXIubmVlZHNDb250ZXh0Py0xPGsoaSx0aGlzKS5pbmRleChsKTprLmZpbmQoaSx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6b30pfXJldHVybiBsPXRoaXMsdTx0Lmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoay5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Om0oZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW2suZXhwYW5kb10/ZTpuZXcgay5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmRGUodCwiY2xpY2siLGtlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmRGUodCwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZRLmdldCh0LCJjbGljayIpfHxBKHQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9yaWdpbmFsRXZlbnQmJihlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxrLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGUsdCxuKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSxrLkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2Ygay5FdmVudCkpcmV0dXJuIG5ldyBrLkV2ZW50KGUsdCk7ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09ZS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWUucmV0dXJuVmFsdWU/a2U6U2UsdGhpcy50YXJnZXQ9ZS50YXJnZXQmJjM9PT1lLnRhcmdldC5ub2RlVHlwZT9lLnRhcmdldC5wYXJlbnROb2RlOmUudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1lLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWUucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWUsdCYmay5leHRlbmQodGhpcyx0KSx0aGlzLnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW2suZXhwYW5kb109ITB9LGsuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpTZSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpTZSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpTZSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1rZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1rZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9a2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LGsuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4gbnVsbD09ZS53aGljaCYmVGUudGVzdChlLnR5cGUpP251bGwhPWUuY2hhckNvZGU/ZS5jaGFyQ29kZTplLmtleUNvZGU6IWUud2hpY2gmJnZvaWQgMCE9PXQmJkNlLnRlc3QoZS50eXBlKT8xJnQ/MToyJnQ/Mzo0JnQ/MjowOmUud2hpY2h9fSxrLmV2ZW50LmFkZFByb3ApLGsuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtrLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIERlKHRoaXMsZSxOZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gRGUodGhpcyxlKSwhMH0sZGVsZWdhdGVUeXBlOnR9fSksay5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe2suZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxrLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxrLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEFlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gQWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosayhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49U2UpLHRoaXMuZWFjaChmdW5jdGlvbigpe2suZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGplPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxxZT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxMZT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxIZT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2c7ZnVuY3Rpb24gT2UoZSx0KXtyZXR1cm4gQShlLCJ0YWJsZSIpJiZBKDExIT09dC5ub2RlVHlwZT90OnQuZmlyc3RDaGlsZCwidHIiKSYmayhlKS5jaGlsZHJlbigidGJvZHkiKVswXXx8ZX1mdW5jdGlvbiBQZShlKXtyZXR1cm4gZS50eXBlPShudWxsIT09ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIFJlKGUpe3JldHVybiJ0cnVlLyI9PT0oZS50eXBlfHwiIikuc2xpY2UoMCw1KT9lLnR5cGU9ZS50eXBlLnNsaWNlKDUpOmUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksZX1mdW5jdGlvbiBNZShlLHQpe3ZhciBuLHIsaSxvLGEscyx1LGw7aWYoMT09PXQubm9kZVR5cGUpe2lmKFEuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1RLnNldCh0LG8pLGw9by5ldmVudHMpKWZvcihpIGluIGRlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fSxsKWZvcihuPTAscj1sW2ldLmxlbmd0aDtuPHI7bisrKWsuZXZlbnQuYWRkKHQsaSxsW2ldW25dKTtKLmhhc0RhdGEoZSkmJihzPUouYWNjZXNzKGUpLHU9ay5leHRlbmQoe30scyksSi5zZXQodCx1KSl9fWZ1bmN0aW9uIEllKG4scixpLG8pe3I9Zy5hcHBseShbXSxyKTt2YXIgZSx0LGEscyx1LGwsYz0wLGY9bi5sZW5ndGgscD1mLTEsZD1yWzBdLGg9bShkKTtpZihofHwxPGYmJiJzdHJpbmciPT10eXBlb2YgZCYmIXkuY2hlY2tDbG9uZSYmTGUudGVzdChkKSlyZXR1cm4gbi5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4uZXEoZSk7aCYmKHJbMF09ZC5jYWxsKHRoaXMsZSx0Lmh0bWwoKSkpLEllKHQscixpLG8pfSk7aWYoZiYmKHQ9KGU9d2UocixuWzBdLm93bmVyRG9jdW1lbnQsITEsbixvKSkuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9dCksdHx8bykpe2ZvcihzPShhPWsubWFwKHZlKGUsInNjcmlwdCIpLFBlKSkubGVuZ3RoO2M8ZjtjKyspdT1lLGMhPT1wJiYodT1rLmNsb25lKHUsITAsITApLHMmJmsubWVyZ2UoYSx2ZSh1LCJzY3JpcHQiKSkpLGkuY2FsbChuW2NdLHUsYyk7aWYocylmb3IobD1hW2EubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsay5tYXAoYSxSZSksYz0wO2M8cztjKyspdT1hW2NdLGhlLnRlc3QodS50eXBlfHwiIikmJiFRLmFjY2Vzcyh1LCJnbG9iYWxFdmFsIikmJmsuY29udGFpbnMobCx1KSYmKHUuc3JjJiYibW9kdWxlIiE9PSh1LnR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpP2suX2V2YWxVcmwmJiF1Lm5vTW9kdWxlJiZrLl9ldmFsVXJsKHUuc3JjLHtub25jZTp1Lm5vbmNlfHx1LmdldEF0dHJpYnV0ZSgibm9uY2UiKX0pOmIodS50ZXh0Q29udGVudC5yZXBsYWNlKEhlLCIiKSx1LGwpKX1yZXR1cm4gbn1mdW5jdGlvbiBXZShlLHQsbil7Zm9yKHZhciByLGk9dD9rLmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8ay5jbGVhbkRhdGEodmUocikpLHIucGFyZW50Tm9kZSYmKG4mJm9lKHIpJiZ5ZSh2ZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX1rLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGplLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGM9ZS5jbG9uZU5vZGUoITApLGY9b2UoZSk7aWYoISh5Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHxrLmlzWE1MRG9jKGUpKSlmb3IoYT12ZShjKSxyPTAsaT0obz12ZShlKSkubGVuZ3RoO3I8aTtyKyspcz1vW3JdLHU9YVtyXSx2b2lkIDAsImlucHV0Ij09PShsPXUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJnBlLnRlc3Qocy50eXBlKT91LmNoZWNrZWQ9cy5jaGVja2VkOiJpbnB1dCIhPT1sJiYidGV4dGFyZWEiIT09bHx8KHUuZGVmYXVsdFZhbHVlPXMuZGVmYXVsdFZhbHVlKTtpZih0KWlmKG4pZm9yKG89b3x8dmUoZSksYT1hfHx2ZShjKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKU1lKG9bcl0sYVtyXSk7ZWxzZSBNZShlLGMpO3JldHVybiAwPChhPXZlKGMsInNjcmlwdCIpKS5sZW5ndGgmJnllKGEsIWYmJnZlKGUsInNjcmlwdCIpKSxjfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPWsuZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49ZVtvXSk7bysrKWlmKEcobikpe2lmKHQ9bltRLmV4cGFuZG9dKXtpZih0LmV2ZW50cylmb3IociBpbiB0LmV2ZW50cylpW3JdP2suZXZlbnQucmVtb3ZlKG4scik6ay5yZW1vdmVFdmVudChuLHIsdC5oYW5kbGUpO25bUS5leHBhbmRvXT12b2lkIDB9bltKLmV4cGFuZG9dJiYobltKLmV4cGFuZG9dPXZvaWQgMCl9fX0pLGsuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFdlKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gV2UodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2sudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1lKX0pfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBJZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8T2UodGhpcyxlKS5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdD1PZSh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9MDtudWxsIT0oZT10aGlzW3RdKTt0KyspMT09PWUubm9kZVR5cGUmJihrLmNsZWFuRGF0YSh2ZShlLCExKSksZS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGsuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxuPTAscj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYhcWUudGVzdChlKSYmIWdlWyhkZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1rLmh0bWxQcmVmaWx0ZXIoZSk7dHJ5e2Zvcig7bjxyO24rKykxPT09KHQ9dGhpc1tuXXx8e30pLm5vZGVUeXBlJiYoay5jbGVhbkRhdGEodmUodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChlKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gSWUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2suaW5BcnJheSh0aGlzLG4pPDAmJihrLmNsZWFuRGF0YSh2ZSh0aGlzKSksdCYmdC5yZXBsYWNlQ2hpbGQoZSx0aGlzKSl9LG4pfX0pLGsuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsYSl7ay5mbltlXT1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj1bXSxyPWsoZSksaT1yLmxlbmd0aC0xLG89MDtvPD1pO28rKyl0PW89PT1pP3RoaXM6dGhpcy5jbG9uZSghMCksayhyW29dKVthXSh0KSx1LmFwcGx5KG4sdC5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciAkZT1uZXcgUmVnRXhwKCJeKCIrdGUrIikoPyFweClbYS16JV0rJCIsImkiKSxGZT1mdW5jdGlvbihlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIHQmJnQub3BlbmVyfHwodD1DKSx0LmdldENvbXB1dGVkU3R5bGUoZSl9LEJlPW5ldyBSZWdFeHAocmUuam9pbigifCIpLCJpIik7ZnVuY3Rpb24gX2UoZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5zdHlsZTtyZXR1cm4obj1ufHxGZShlKSkmJigiIiE9PShhPW4uZ2V0UHJvcGVydHlWYWx1ZSh0KXx8blt0XSl8fG9lKGUpfHwoYT1rLnN0eWxlKGUsdCkpLCF5LnBpeGVsQm94U3R5bGVzKCkmJiRlLnRlc3QoYSkmJkJlLnRlc3QodCkmJihyPXMud2lkdGgsaT1zLm1pbldpZHRoLG89cy5tYXhXaWR0aCxzLm1pbldpZHRoPXMubWF4V2lkdGg9cy53aWR0aD1hLGE9bi53aWR0aCxzLndpZHRoPXIscy5taW5XaWR0aD1pLHMubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIHplKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYodSl7cy5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIix1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLGllLmFwcGVuZENoaWxkKHMpLmFwcGVuZENoaWxkKHUpO3ZhciBlPUMuZ2V0Q29tcHV0ZWRTdHlsZSh1KTtuPSIxJSIhPT1lLnRvcCxhPTEyPT09dChlLm1hcmdpbkxlZnQpLHUuc3R5bGUucmlnaHQ9IjYwJSIsbz0zNj09PXQoZS5yaWdodCkscj0zNj09PXQoZS53aWR0aCksdS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGk9MTI9PT10KHUub2Zmc2V0V2lkdGgvMyksaWUucmVtb3ZlQ2hpbGQocyksdT1udWxsfX1mdW5jdGlvbiB0KGUpe3JldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpfXZhciBuLHIsaSxvLGEscz1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKTt1LnN0eWxlJiYodS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLHUuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix5LmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09dS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxrLmV4dGVuZCh5LHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBlKCkscn0scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG99LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG59LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBlKCksYX0sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBlKCksaX19KSl9KCk7dmFyIFVlPVsiV2Via2l0IiwiTW96IiwibXMiXSxYZT1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLFZlPXt9O2Z1bmN0aW9uIEdlKGUpe3ZhciB0PWsuY3NzUHJvcHNbZV18fFZlW2VdO3JldHVybiB0fHwoZSBpbiBYZT9lOlZlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49VWUubGVuZ3RoO3doaWxlKG4tLSlpZigoZT1VZVtuXSt0KWluIFhlKXJldHVybiBlfShlKXx8ZSl9dmFyIFllPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxRZT0vXi0tLyxKZT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sS2U9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIFplKGUsdCxuKXt2YXIgcj1uZS5leGVjKHQpO3JldHVybiByP01hdGgubWF4KDAsclsyXS0obnx8MCkpKyhyWzNdfHwicHgiKTp0fWZ1bmN0aW9uIGV0KGUsdCxuLHIsaSxvKXt2YXIgYT0id2lkdGgiPT09dD8xOjAscz0wLHU9MDtpZihuPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKHUrPWsuY3NzKGUsbityZVthXSwhMCxpKSkscj8oImNvbnRlbnQiPT09biYmKHUtPWsuY3NzKGUsInBhZGRpbmciK3JlW2FdLCEwLGkpKSwibWFyZ2luIiE9PW4mJih1LT1rLmNzcyhlLCJib3JkZXIiK3JlW2FdKyJXaWR0aCIsITAsaSkpKToodSs9ay5jc3MoZSwicGFkZGluZyIrcmVbYV0sITAsaSksInBhZGRpbmciIT09bj91Kz1rLmNzcyhlLCJib3JkZXIiK3JlW2FdKyJXaWR0aCIsITAsaSk6cys9ay5jc3MoZSwiYm9yZGVyIityZVthXSsiV2lkdGgiLCEwLGkpKTtyZXR1cm4hciYmMDw9byYmKHUrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLW8tdS1zLS41KSl8fDApLHV9ZnVuY3Rpb24gdHQoZSx0LG4pe3ZhciByPUZlKGUpLGk9KCF5LmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT1rLmNzcyhlLCJib3hTaXppbmciLCExLHIpLG89aSxhPV9lKGUsdCxyKSxzPSJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2lmKCRlLnRlc3QoYSkpe2lmKCFuKXJldHVybiBhO2E9ImF1dG8ifXJldHVybigheS5ib3hTaXppbmdSZWxpYWJsZSgpJiZpfHwiYXV0byI9PT1hfHwhcGFyc2VGbG9hdChhKSYmImlubGluZSI9PT1rLmNzcyhlLCJkaXNwbGF5IiwhMSxyKSkmJmUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihpPSJib3JkZXItYm94Ij09PWsuY3NzKGUsImJveFNpemluZyIsITEsciksKG89cyBpbiBlKSYmKGE9ZVtzXSkpLChhPXBhcnNlRmxvYXQoYSl8fDApK2V0KGUsdCxufHwoaT8iYm9yZGVyIjoiY29udGVudCIpLG8scixhKSsicHgifWZ1bmN0aW9uIG50KGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBudC5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfWsuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49X2UoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2YXIgaSxvLGEscz1WKHQpLHU9UWUudGVzdCh0KSxsPWUuc3R5bGU7aWYodXx8KHQ9R2UocykpLGE9ay5jc3NIb29rc1t0XXx8ay5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6bFt0XTsic3RyaW5nIj09PShvPXR5cGVvZiBuKSYmKGk9bmUuZXhlYyhuKSkmJmlbMV0mJihuPWxlKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1uJiZuPT1uJiYoIm51bWJlciIhPT1vfHx1fHwobis9aSYmaVszXXx8KGsuY3NzTnVtYmVyW3NdPyIiOiJweCIpKSx5LmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1ufHwwIT09dC5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChsW3RdPSJpbmhlcml0IiksYSYmInNldCJpbiBhJiZ2b2lkIDA9PT0obj1hLnNldChlLG4scikpfHwodT9sLnNldFByb3BlcnR5KHQsbik6bFt0XT1uKSl9fSxjc3M6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHM9Vih0KTtyZXR1cm4gUWUudGVzdCh0KXx8KHQ9R2UocykpLChhPWsuY3NzSG9va3NbdF18fGsuY3NzSG9va3Nbc10pJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAsbikpLHZvaWQgMD09PWkmJihpPV9lKGUsdCxyKSksIm5vcm1hbCI9PT1pJiZ0IGluIEtlJiYoaT1LZVt0XSksIiI9PT1ufHxuPyhvPXBhcnNlRmxvYXQoaSksITA9PT1ufHxpc0Zpbml0ZShvKT9vfHwwOmkpOml9fSksay5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLHUpe2suY3NzSG9va3NbdV09e2dldDpmdW5jdGlvbihlLHQsbil7aWYodClyZXR1cm4hWWUudGVzdChrLmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP3R0KGUsdSxuKTp1ZShlLEplLGZ1bmN0aW9uKCl7cmV0dXJuIHR0KGUsdSxuKX0pfSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9RmUoZSksbz0heS5zY3JvbGxib3hTaXplKCkmJiJhYnNvbHV0ZSI9PT1pLnBvc2l0aW9uLGE9KG98fG4pJiYiYm9yZGVyLWJveCI9PT1rLmNzcyhlLCJib3hTaXppbmciLCExLGkpLHM9bj9ldChlLHUsbixhLGkpOjA7cmV0dXJuIGEmJm8mJihzLT1NYXRoLmNlaWwoZVsib2Zmc2V0Iit1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKV0tcGFyc2VGbG9hdChpW3VdKS1ldChlLHUsImJvcmRlciIsITEsaSktLjUpKSxzJiYocj1uZS5leGVjKHQpKSYmInB4IiE9PShyWzNdfHwicHgiKSYmKGUuc3R5bGVbdV09dCx0PWsuY3NzKGUsdSkpLFplKDAsdCxzKX19fSksay5jc3NIb29rcy5tYXJnaW5MZWZ0PXplKHkucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4ocGFyc2VGbG9hdChfZShlLCJtYXJnaW5MZWZ0IikpfHxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdWUoZSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLGsuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGksbyl7ay5jc3NIb29rc1tpK29dPXtleHBhbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj17fSxyPSJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIgIik6W2VdO3Q8NDt0KyspbltpK3JlW3RdK29dPXJbdF18fHJbdC0yXXx8clswXTtyZXR1cm4gbn19LCJtYXJnaW4iIT09aSYmKGsuY3NzSG9va3NbaStvXS5zZXQ9WmUpfSksay5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihlLHQpe3JldHVybiBfKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fSxhPTA7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHI9RmUoZSksaT10Lmxlbmd0aDthPGk7YSsrKW9bdFthXV09ay5jc3MoZSx0W2FdLCExLHIpO3JldHVybiBvfXJldHVybiB2b2lkIDAhPT1uP2suc3R5bGUoZSx0LG4pOmsuY3NzKGUsdCl9LGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfX0pLCgoay5Ud2Vlbj1udCkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpudCxpbml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1pfHxrLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9cix0aGlzLnVuaXQ9b3x8KGsuY3NzTnVtYmVyW25dPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgZT1udC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gZSYmZS5nZXQ/ZS5nZXQodGhpcyk6bnQucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGUpe3ZhciB0LG49bnQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz10PWsuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPXQ9ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTpudC5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSkuaW5pdC5wcm90b3R5cGU9bnQucHJvdG90eXBlLChudC5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD1rLmNzcyhlLmVsZW0sZS5wcm9wLCIiKSkmJiJhdXRvIiE9PXQ/dDowfSxzZXQ6ZnVuY3Rpb24oZSl7ay5meC5zdGVwW2UucHJvcF0/ay5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8IWsuY3NzSG9va3NbZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW0dlKGUucHJvcCldP2UuZWxlbVtlLnByb3BdPWUubm93Omsuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpfX19KS5zY3JvbGxUb3A9bnQucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5wYXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0say5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxrLmZ4PW50LnByb3RvdHlwZS5pbml0LGsuZnguc3RlcD17fTt2YXIgcnQsaXQsb3QsYXQsc3Q9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHV0PS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gbHQoKXtpdCYmKCExPT09RS5oaWRkZW4mJkMucmVxdWVzdEFuaW1hdGlvbkZyYW1lP0MucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGx0KTpDLnNldFRpbWVvdXQobHQsay5meC5pbnRlcnZhbCksay5meC50aWNrKCkpfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIEMuc2V0VGltZW91dChmdW5jdGlvbigpe3J0PXZvaWQgMH0pLHJ0PURhdGUubm93KCl9ZnVuY3Rpb24gZnQoZSx0KXt2YXIgbixyPTAsaT17aGVpZ2h0OmV9O2Zvcih0PXQ/MTowO3I8NDtyKz0yLXQpaVsibWFyZ2luIisobj1yZVtyXSldPWlbInBhZGRpbmciK25dPWU7cmV0dXJuIHQmJihpLm9wYWNpdHk9aS53aWR0aD1lKSxpfWZ1bmN0aW9uIHB0KGUsdCxuKXtmb3IodmFyIHIsaT0oZHQudHdlZW5lcnNbdF18fFtdKS5jb25jYXQoZHQudHdlZW5lcnNbIioiXSksbz0wLGE9aS5sZW5ndGg7bzxhO28rKylpZihyPWlbb10uY2FsbChuLHQsZSkpcmV0dXJuIHJ9ZnVuY3Rpb24gZHQobyxlLHQpe3ZhciBuLGEscj0wLGk9ZHQucHJlZmlsdGVycy5sZW5ndGgscz1rLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihhKXJldHVybiExO2Zvcih2YXIgZT1ydHx8Y3QoKSx0PU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi1lKSxuPTEtKHQvbC5kdXJhdGlvbnx8MCkscj0wLGk9bC50d2VlbnMubGVuZ3RoO3I8aTtyKyspbC50d2VlbnNbcl0ucnVuKG4pO3JldHVybiBzLm5vdGlmeVdpdGgobyxbbCxuLHRdKSxuPDEmJmk/dDooaXx8cy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsXSksITEpfSxsPXMucHJvbWlzZSh7ZWxlbTpvLHByb3BzOmsuZXh0ZW5kKHt9LGUpLG9wdHM6ay5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOmsuZWFzaW5nLl9kZWZhdWx0fSx0KSxvcmlnaW5hbFByb3BlcnRpZXM6ZSxvcmlnaW5hbE9wdGlvbnM6dCxzdGFydFRpbWU6cnR8fGN0KCksZHVyYXRpb246dC5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1rLlR3ZWVuKG8sbC5vcHRzLGUsdCxsLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gobiksbn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgdD0wLG49ZT9sLnR3ZWVucy5sZW5ndGg6MDtpZihhKXJldHVybiB0aGlzO2ZvcihhPSEwO3Q8bjt0KyspbC50d2VlbnNbdF0ucnVuKDEpO3JldHVybiBlPyhzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2wsZV0pKTpzLnJlamVjdFdpdGgobyxbbCxlXSksdGhpc319KSxjPWwucHJvcHM7Zm9yKCFmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGE7Zm9yKG4gaW4gZSlpZihpPXRbcj1WKG4pXSxvPWVbbl0sQXJyYXkuaXNBcnJheShvKSYmKGk9b1sxXSxvPWVbbl09b1swXSksbiE9PXImJihlW3JdPW8sZGVsZXRlIGVbbl0pLChhPWsuY3NzSG9va3Nbcl0pJiYiZXhwYW5kImluIGEpZm9yKG4gaW4gbz1hLmV4cGFuZChvKSxkZWxldGUgZVtyXSxvKW4gaW4gZXx8KGVbbl09b1tuXSx0W25dPWkpO2Vsc2UgdFtyXT1pfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTtyPGk7cisrKWlmKG49ZHQucHJlZmlsdGVyc1tyXS5jYWxsKGwsbyxjLGwub3B0cykpcmV0dXJuIG0obi5zdG9wKSYmKGsuX3F1ZXVlSG9va3MobC5lbGVtLGwub3B0cy5xdWV1ZSkuc3RvcD1uLnN0b3AuYmluZChuKSksbjtyZXR1cm4gay5tYXAoYyxwdCxsKSxtKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKG8sbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksay5meC50aW1lcihrLmV4dGVuZCh1LHtlbGVtOm8sYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsfWsuQW5pbWF0aW9uPWsuZXh0ZW5kKGR0LHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KTtyZXR1cm4gbGUobi5lbGVtLGUsbmUuZXhlYyh0KSxuKSxufV19LHR3ZWVuZXI6ZnVuY3Rpb24oZSx0KXttKGUpPyh0PWUsZT1bIioiXSk6ZT1lLm1hdGNoKFIpO2Zvcih2YXIgbixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW49ZVtyXSxkdC50d2VlbmVyc1tuXT1kdC50d2VlbmVyc1tuXXx8W10sZHQudHdlZW5lcnNbbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyczpbZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGMsZj0id2lkdGgiaW4gdHx8ImhlaWdodCJpbiB0LHA9dGhpcyxkPXt9LGg9ZS5zdHlsZSxnPWUubm9kZVR5cGUmJnNlKGUpLHY9US5nZXQoZSwiZnhzaG93Iik7Zm9yKHIgaW4gbi5xdWV1ZXx8KG51bGw9PShhPWsuX3F1ZXVlSG9va3MoZSwiZngiKSkudW5xdWV1ZWQmJihhLnVucXVldWVkPTAscz1hLmVtcHR5LmZpcmUsYS5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7YS51bnF1ZXVlZHx8cygpfSksYS51bnF1ZXVlZCsrLHAuYWx3YXlzKGZ1bmN0aW9uKCl7cC5hbHdheXMoZnVuY3Rpb24oKXthLnVucXVldWVkLS0say5xdWV1ZShlLCJmeCIpLmxlbmd0aHx8YS5lbXB0eS5maXJlKCl9KX0pKSx0KWlmKGk9dFtyXSxzdC50ZXN0KGkpKXtpZihkZWxldGUgdFtyXSxvPW98fCJ0b2dnbGUiPT09aSxpPT09KGc/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWl8fCF2fHx2b2lkIDA9PT12W3JdKWNvbnRpbnVlO2c9ITB9ZFtyXT12JiZ2W3JdfHxrLnN0eWxlKGUscil9aWYoKHU9IWsuaXNFbXB0eU9iamVjdCh0KSl8fCFrLmlzRW1wdHlPYmplY3QoZCkpZm9yKHIgaW4gZiYmMT09PWUubm9kZVR5cGUmJihuLm92ZXJmbG93PVtoLm92ZXJmbG93LGgub3ZlcmZsb3dYLGgub3ZlcmZsb3dZXSxudWxsPT0obD12JiZ2LmRpc3BsYXkpJiYobD1RLmdldChlLCJkaXNwbGF5IikpLCJub25lIj09PShjPWsuY3NzKGUsImRpc3BsYXkiKSkmJihsP2M9bDooZmUoW2VdLCEwKSxsPWUuc3R5bGUuZGlzcGxheXx8bCxjPWsuY3NzKGUsImRpc3BsYXkiKSxmZShbZV0pKSksKCJpbmxpbmUiPT09Y3x8ImlubGluZS1ibG9jayI9PT1jJiZudWxsIT1sKSYmIm5vbmUiPT09ay5jc3MoZSwiZmxvYXQiKSYmKHV8fChwLmRvbmUoZnVuY3Rpb24oKXtoLmRpc3BsYXk9bH0pLG51bGw9PWwmJihjPWguZGlzcGxheSxsPSJub25lIj09PWM/IiI6YykpLGguZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cmJihoLm92ZXJmbG93PSJoaWRkZW4iLHAuYWx3YXlzKGZ1bmN0aW9uKCl7aC5vdmVyZmxvdz1uLm92ZXJmbG93WzBdLGgub3ZlcmZsb3dYPW4ub3ZlcmZsb3dbMV0saC5vdmVyZmxvd1k9bi5vdmVyZmxvd1syXX0pKSx1PSExLGQpdXx8KHY/ImhpZGRlbiJpbiB2JiYoZz12LmhpZGRlbik6dj1RLmFjY2VzcyhlLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxvJiYodi5oaWRkZW49IWcpLGcmJmZlKFtlXSwhMCkscC5kb25lKGZ1bmN0aW9uKCl7Zm9yKHIgaW4gZ3x8ZmUoW2VdKSxRLnJlbW92ZShlLCJmeHNob3ciKSxkKWsuc3R5bGUoZSxyLGRbcl0pfSkpLHU9cHQoZz92W3JdOjAscixwKSxyIGluIHZ8fCh2W3JdPXUuc3RhcnQsZyYmKHUuZW5kPXUuc3RhcnQsdS5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P2R0LnByZWZpbHRlcnMudW5zaGlmdChlKTpkdC5wcmVmaWx0ZXJzLnB1c2goZSl9fSksay5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5cGVvZiBlP2suZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8bShlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0fHx0JiYhbSh0KSYmdH07cmV0dXJuIGsuZngub2ZmP3IuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIHIuZHVyYXRpb24mJihyLmR1cmF0aW9uIGluIGsuZnguc3BlZWRzP3IuZHVyYXRpb249ay5meC5zcGVlZHNbci5kdXJhdGlvbl06ci5kdXJhdGlvbj1rLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ci5xdWV1ZSYmITAhPT1yLnF1ZXVlfHwoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXttKHIub2xkKSYmci5vbGQuY2FsbCh0aGlzKSxyLnF1ZXVlJiZrLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0scn0say5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5maWx0ZXIoc2UpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPWsuaXNFbXB0eU9iamVjdCh0KSxvPWsuc3BlZWQoZSxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgZT1kdCh0aGlzLGsuZXh0ZW5kKHt9LHQpLG8pOyhpfHxRLmdldCh0aGlzLCJmaW5pc2giKSkmJmUuc3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fCExPT09by5xdWV1ZT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGksZSxvKXt2YXIgYT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KG8pfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGkmJihvPWUsZT1pLGk9dm9pZCAwKSxlJiYhMSE9PWkmJnRoaXMucXVldWUoaXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsdD1udWxsIT1pJiZpKyJxdWV1ZUhvb2tzIixuPWsudGltZXJzLHI9US5nZXQodGhpcyk7aWYodClyW3RdJiZyW3RdLnN0b3AmJmEoclt0XSk7ZWxzZSBmb3IodCBpbiByKXJbdF0mJnJbdF0uc3RvcCYmdXQudGVzdCh0KSYmYShyW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPWkmJm5bdF0ucXVldWUhPT1pfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8ay5kZXF1ZXVlKHRoaXMsaSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD1RLmdldCh0aGlzKSxuPXRbYSsicXVldWUiXSxyPXRbYSsicXVldWVIb29rcyJdLGk9ay50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLGsucXVldWUodGhpcyxhLFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9aS5sZW5ndGg7ZS0tOylpW2VdLmVsZW09PT10aGlzJiZpW2VdLnF1ZXVlPT09YSYmKGlbZV0uYW5pbS5zdG9wKCEwKSxpLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksay5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihlLHIpe3ZhciBpPWsuZm5bcl07ay5mbltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGZ0KHIsITApLGUsdCxuKX19KSxrLmVhY2goe3NsaWRlRG93bjpmdCgic2hvdyIpLHNsaWRlVXA6ZnQoImhpZGUiKSxzbGlkZVRvZ2dsZTpmdCgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHIpe2suZm5bZV09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmFuaW1hdGUocixlLHQsbil9fSksay50aW1lcnM9W10say5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsdD0wLG49ay50aW1lcnM7Zm9yKHJ0PURhdGUubm93KCk7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkoKXx8blt0XSE9PWV8fG4uc3BsaWNlKHQtLSwxKTtuLmxlbmd0aHx8ay5meC5zdG9wKCkscnQ9dm9pZCAwfSxrLmZ4LnRpbWVyPWZ1bmN0aW9uKGUpe2sudGltZXJzLnB1c2goZSksay5meC5zdGFydCgpfSxrLmZ4LmludGVydmFsPTEzLGsuZnguc3RhcnQ9ZnVuY3Rpb24oKXtpdHx8KGl0PSEwLGx0KCkpfSxrLmZ4LnN0b3A9ZnVuY3Rpb24oKXtpdD1udWxsfSxrLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxrLmZuLmRlbGF5PWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHI9ay5meCYmay5meC5zcGVlZHNbcl18fHIsZT1lfHwiZngiLHRoaXMucXVldWUoZSxmdW5jdGlvbihlLHQpe3ZhciBuPUMuc2V0VGltZW91dChlLHIpO3Quc3RvcD1mdW5jdGlvbigpe0MuY2xlYXJUaW1lb3V0KG4pfX0pfSxvdD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYXQ9RS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxvdC50eXBlPSJjaGVja2JveCIseS5jaGVja09uPSIiIT09b3QudmFsdWUseS5vcHRTZWxlY3RlZD1hdC5zZWxlY3RlZCwob3Q9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCIsb3QudHlwZT0icmFkaW8iLHkucmFkaW9WYWx1ZT0idCI9PT1vdC52YWx1ZTt2YXIgaHQsZ3Q9ay5leHByLmF0dHJIYW5kbGU7ay5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLGsuYXR0cixlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ay5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSxrLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP2sucHJvcChlLHQsbik6KDE9PT1vJiZrLmlzWE1MRG9jKGUpfHwoaT1rLmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoay5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9odDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgay5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6KGUuc2V0QXR0cmlidXRlKHQsbisiIiksbik6aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjpudWxsPT0ocj1rLmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIXkucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJkEoZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10JiZ0Lm1hdGNoKFIpO2lmKGkmJjE9PT1lLm5vZGVUeXBlKXdoaWxlKG49aVtyKytdKWUucmVtb3ZlQXR0cmlidXRlKG4pfX0pLGh0PXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09dD9rLnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSxrLmVhY2goay5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgYT1ndFt0XXx8ay5maW5kLmF0dHI7Z3RbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChpPWd0W29dLGd0W29dPXIscj1udWxsIT1hKGUsdCxuKT9vOm51bGwsZ3Rbb109aSkscn19KTt2YXIgdnQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx5dD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24gbXQoZSl7cmV0dXJuKGUubWF0Y2goUil8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24geHQoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZToic3RyaW5nIj09dHlwZW9mIGUmJmUubWF0Y2goUil8fFtdfWsuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyxrLnByb3AsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2sucHJvcEZpeFtlXXx8ZV19KX19KSxrLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJmsuaXNYTUxEb2MoZSl8fCh0PWsucHJvcEZpeFt0XXx8dCxpPWsucHJvcEhvb2tzW3RdKSx2b2lkIDAhPT1uP2kmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOmVbdF09bjppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1rLmZpbmQuYXR0cihlLCJ0YWJpbmRleCIpO3JldHVybiB0P3BhcnNlSW50KHQsMTApOnZ0LnRlc3QoZS5ub2RlTmFtZSl8fHl0LnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLHkub3B0U2VsZWN0ZWR8fChrLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksay5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtrLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSksay5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYSxzLHU9MDtpZihtKHQpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7ayh0aGlzKS5hZGRDbGFzcyh0LmNhbGwodGhpcyxlLHh0KHRoaXMpKSl9KTtpZigoZT1idCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9eHQobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK210KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXIuaW5kZXhPZigiICIrbysiICIpPDAmJihyKz1vKyIgIik7aSE9PShzPW10KHIpKSYmbi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLnJlbW92ZUNsYXNzKHQuY2FsbCh0aGlzLGUseHQodGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwiIik7aWYoKGU9YnQodCkpLmxlbmd0aCl3aGlsZShuPXRoaXNbdSsrXSlpZihpPXh0KG4pLHI9MT09PW4ubm9kZVR5cGUmJiIgIittdChpKSsiICIpe2E9MDt3aGlsZShvPWVbYSsrXSl3aGlsZSgtMTxyLmluZGV4T2YoIiAiK28rIiAiKSlyPXIucmVwbGFjZSgiICIrbysiICIsIiAiKTtpIT09KHM9bXQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihpLHQpe3ZhciBvPXR5cGVvZiBpLGE9InN0cmluZyI9PT1vfHxBcnJheS5pc0FycmF5KGkpO3JldHVybiJib29sZWFuIj09dHlwZW9mIHQmJmE/dD90aGlzLmFkZENsYXNzKGkpOnRoaXMucmVtb3ZlQ2xhc3MoaSk6bShpKT90aGlzLmVhY2goZnVuY3Rpb24oZSl7ayh0aGlzKS50b2dnbGVDbGFzcyhpLmNhbGwodGhpcyxlLHh0KHRoaXMpLHQpLHQpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7aWYoYSl7dD0wLG49ayh0aGlzKSxyPWJ0KGkpO3doaWxlKGU9clt0KytdKW4uaGFzQ2xhc3MoZSk/bi5yZW1vdmVDbGFzcyhlKTpuLmFkZENsYXNzKGUpfWVsc2Ugdm9pZCAwIT09aSYmImJvb2xlYW4iIT09b3x8KChlPXh0KHRoaXMpKSYmUS5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsZXx8ITE9PT1pPyIiOlEuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHI9MDt0PSIgIitlKyIgIjt3aGlsZShuPXRoaXNbcisrXSlpZigxPT09bi5ub2RlVHlwZSYmLTE8KCIgIittdCh4dChuKSkrIiAiKS5pbmRleE9mKHQpKXJldHVybiEwO3JldHVybiExfX0pO3ZhciB3dD0vXHIvZztrLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKG4pe3ZhciByLGUsaSx0PXRoaXNbMF07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bShuKSx0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ7MT09PXRoaXMubm9kZVR5cGUmJihudWxsPT0odD1pP24uY2FsbCh0aGlzLGUsayh0aGlzKS52YWwoKSk6bik/dD0iIjoibnVtYmVyIj09dHlwZW9mIHQ/dCs9IiI6QXJyYXkuaXNBcnJheSh0KSYmKHQ9ay5tYXAodCxmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjplKyIifSkpLChyPWsudmFsSG9va3NbdGhpcy50eXBlXXx8ay52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmInNldCJpbiByJiZ2b2lkIDAhPT1yLnNldCh0aGlzLHQsInZhbHVlIil8fCh0aGlzLnZhbHVlPXQpKX0pKTp0PyhyPWsudmFsSG9va3NbdC50eXBlXXx8ay52YWxIb29rc1t0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmImdldCJpbiByJiZ2b2lkIDAhPT0oZT1yLmdldCh0LCJ2YWx1ZSIpKT9lOiJzdHJpbmciPT10eXBlb2YoZT10LnZhbHVlKT9lLnJlcGxhY2Uod3QsIiIpOm51bGw9PWU/IiI6ZTp2b2lkIDB9fSksay5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1rLmZpbmQuYXR0cihlLCJ2YWx1ZSIpO3JldHVybiBudWxsIT10P3Q6bXQoay50ZXh0KGUpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPWUub3B0aW9ucyxvPWUuc2VsZWN0ZWRJbmRleCxhPSJzZWxlY3Qtb25lIj09PWUudHlwZSxzPWE/bnVsbDpbXSx1PWE/bysxOmkubGVuZ3RoO2ZvcihyPW88MD91OmE/bzowO3I8dTtyKyspaWYoKChuPWlbcl0pLnNlbGVjdGVkfHxyPT09bykmJiFuLmRpc2FibGVkJiYoIW4ucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUEobi5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYodD1rKG4pLnZhbCgpLGEpcmV0dXJuIHQ7cy5wdXNoKHQpfXJldHVybiBzfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9ZS5vcHRpb25zLG89ay5tYWtlQXJyYXkodCksYT1pLmxlbmd0aDt3aGlsZShhLS0pKChyPWlbYV0pLnNlbGVjdGVkPS0xPGsuaW5BcnJheShrLnZhbEhvb2tzLm9wdGlvbi5nZXQociksbykpJiYobj0hMCk7cmV0dXJuIG58fChlLnNlbGVjdGVkSW5kZXg9LTEpLG99fX19KSxrLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtrLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBlLmNoZWNrZWQ9LTE8ay5pbkFycmF5KGsoZSkudmFsKCksdCl9fSx5LmNoZWNrT258fChrLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6ZS52YWx1ZX0pfSkseS5mb2N1c2luPSJvbmZvY3VzaW4iaW4gQzt2YXIgVHQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEN0PWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCl9O2suZXh0ZW5kKGsuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsLGMsZixwPVtufHxFXSxkPXYuY2FsbChlLCJ0eXBlIik/ZS50eXBlOmUsaD12LmNhbGwoZSwibmFtZXNwYWNlIik/ZS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihvPWY9YT1uPW58fEUsMyE9PW4ubm9kZVR5cGUmJjghPT1uLm5vZGVUeXBlJiYhVHQudGVzdChkK2suZXZlbnQudHJpZ2dlcmVkKSYmKC0xPGQuaW5kZXhPZigiLiIpJiYoZD0oaD1kLnNwbGl0KCIuIikpLnNoaWZ0KCksaC5zb3J0KCkpLHU9ZC5pbmRleE9mKCI6Iik8MCYmIm9uIitkLChlPWVbay5leHBhbmRvXT9lOm5ldyBrLkV2ZW50KGQsIm9iamVjdCI9PXR5cGVvZiBlJiZlKSkuaXNUcmlnZ2VyPXI/MjozLGUubmFtZXNwYWNlPWguam9pbigiLiIpLGUucm5hbWVzcGFjZT1lLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsZS5yZXN1bHQ9dm9pZCAwLGUudGFyZ2V0fHwoZS50YXJnZXQ9biksdD1udWxsPT10P1tlXTprLm1ha2VBcnJheSh0LFtlXSksYz1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LHJ8fCFjLnRyaWdnZXJ8fCExIT09Yy50cmlnZ2VyLmFwcGx5KG4sdCkpKXtpZighciYmIWMubm9CdWJibGUmJiF4KG4pKXtmb3Iocz1jLmRlbGVnYXRlVHlwZXx8ZCxUdC50ZXN0KHMrZCl8fChvPW8ucGFyZW50Tm9kZSk7bztvPW8ucGFyZW50Tm9kZSlwLnB1c2gobyksYT1vO2E9PT0obi5vd25lckRvY3VtZW50fHxFKSYmcC5wdXNoKGEuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93fHxDKX1pPTA7d2hpbGUoKG89cFtpKytdKSYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlmPW8sZS50eXBlPTE8aT9zOmMuYmluZFR5cGV8fGQsKGw9KFEuZ2V0KG8sImV2ZW50cyIpfHx7fSlbZS50eXBlXSYmUS5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJkcobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCFHKG4pfHx1JiZtKG5bZF0pJiYheChuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxrLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQsQ3QpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLEN0KSxrLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsYSYmKG5bdV09YSkpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWsuZXh0ZW5kKG5ldyBrLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO2suZXZlbnQudHJpZ2dlcihyLG51bGwsdCl9fSksay5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ay5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gay5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx5LmZvY3VzaW58fGsuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24obixyKXt2YXIgaT1mdW5jdGlvbihlKXtrLmV2ZW50LnNpbXVsYXRlKHIsZS50YXJnZXQsay5ldmVudC5maXgoZSkpfTtrLmV2ZW50LnNwZWNpYWxbcl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLHQ9US5hY2Nlc3MoZSxyKTt0fHxlLmFkZEV2ZW50TGlzdGVuZXIobixpLCEwKSxRLmFjY2VzcyhlLHIsKHR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyx0PVEuYWNjZXNzKGUsciktMTt0P1EuYWNjZXNzKGUscix0KTooZS5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMCksUS5yZW1vdmUoZSxyKSl9fX0pO3ZhciBFdD1DLmxvY2F0aW9uLGt0PURhdGUubm93KCksU3Q9L1w/LztrLnBhcnNlWE1MPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBDLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7dD12b2lkIDB9cmV0dXJuIHQmJiF0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8ay5lcnJvcigiSW52YWxpZCBYTUw6ICIrZSksdH07dmFyIE50PS9cW1xdJC8sQXQ9L1xyP1xuL2csRHQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLGp0PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBxdChuLGUscixpKXt2YXIgdDtpZihBcnJheS5pc0FycmF5KGUpKWsuZWFjaChlLGZ1bmN0aW9uKGUsdCl7cnx8TnQudGVzdChuKT9pKG4sdCk6cXQobisiWyIrKCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dD9lOiIiKSsiXSIsdCxyLGkpfSk7ZWxzZSBpZihyfHwib2JqZWN0IiE9PXcoZSkpaShuLGUpO2Vsc2UgZm9yKHQgaW4gZSlxdChuKyJbIit0KyJdIixlW3RdLHIsaSl9ay5wYXJhbT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1mdW5jdGlvbihlLHQpe3ZhciBuPW0odCk/dCgpOnQ7cltyLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09bj8iIjpuKX07aWYobnVsbD09ZSlyZXR1cm4iIjtpZihBcnJheS5pc0FycmF5KGUpfHxlLmpxdWVyeSYmIWsuaXNQbGFpbk9iamVjdChlKSlrLmVhY2goZSxmdW5jdGlvbigpe2kodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IobiBpbiBlKXF0KG4sZVtuXSx0LGkpO3JldHVybiByLmpvaW4oIiYiKX0say5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBrLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9ay5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGU/ay5tYWtlQXJyYXkoZSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhayh0aGlzKS5pcygiOmRpc2FibGVkIikmJmp0LnRlc3QodGhpcy5ub2RlTmFtZSkmJiFEdC50ZXN0KGUpJiYodGhpcy5jaGVja2VkfHwhcGUudGVzdChlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj1rKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1uP251bGw6QXJyYXkuaXNBcnJheShuKT9rLm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFtZSx2YWx1ZTplLnJlcGxhY2UoQXQsIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFsdWU6bi5yZXBsYWNlKEF0LCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIEx0PS8lMjAvZyxIdD0vIy4qJC8sT3Q9LyhbPyZdKV89W14mXSovLFB0PS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sUnQ9L14oPzpHRVR8SEVBRCkkLyxNdD0vXlwvXC8vLEl0PXt9LFd0PXt9LCR0PSIqLyIuY29uY2F0KCIqIiksRnQ9RS5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gQnQobyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7InN0cmluZyIhPXR5cGVvZiBlJiYodD1lLGU9IioiKTt2YXIgbixyPTAsaT1lLnRvTG93ZXJDYXNlKCkubWF0Y2goUil8fFtdO2lmKG0odCkpd2hpbGUobj1pW3IrK10pIisiPT09blswXT8obj1uLnNsaWNlKDEpfHwiKiIsKG9bbl09b1tuXXx8W10pLnVuc2hpZnQodCkpOihvW25dPW9bbl18fFtdKS5wdXNoKHQpfX1mdW5jdGlvbiBfdCh0LGksbyxhKXt2YXIgcz17fSx1PXQ9PT1XdDtmdW5jdGlvbiBsKGUpe3ZhciByO3JldHVybiBzW2VdPSEwLGsuZWFjaCh0W2VdfHxbXSxmdW5jdGlvbihlLHQpe3ZhciBuPXQoaSxvLGEpO3JldHVybiJzdHJpbmciIT10eXBlb2Ygbnx8dXx8c1tuXT91PyEocj1uKTp2b2lkIDA6KGkuZGF0YVR5cGVzLnVuc2hpZnQobiksbChuKSwhMSl9KSxyfXJldHVybiBsKGkuZGF0YVR5cGVzWzBdKXx8IXNbIioiXSYmbCgiKiIpfWZ1bmN0aW9uIHp0KGUsdCl7dmFyIG4scixpPWsuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IobiBpbiB0KXZvaWQgMCE9PXRbbl0mJigoaVtuXT9lOnJ8fChyPXt9KSlbbl09dFtuXSk7cmV0dXJuIHImJmsuZXh0ZW5kKCEwLGUsciksZX1GdC5ocmVmPUV0LmhyZWYsay5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOkV0LmhyZWYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoRXQucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6JHQsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6SlNPTi5wYXJzZSwidGV4dCB4bWwiOmsucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihlLHQpe3JldHVybiB0P3p0KHp0KGUsay5hamF4U2V0dGluZ3MpLHQpOnp0KGsuYWpheFNldHRpbmdzLGUpfSxhamF4UHJlZmlsdGVyOkJ0KEl0KSxhamF4VHJhbnNwb3J0OkJ0KFd0KSxhamF4OmZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBlJiYodD1lLGU9dm9pZCAwKSx0PXR8fHt9O3ZhciBjLGYscCxuLGQscixoLGcsaSxvLHY9ay5hamF4U2V0dXAoe30sdCkseT12LmNvbnRleHR8fHYsbT12LmNvbnRleHQmJih5Lm5vZGVUeXBlfHx5LmpxdWVyeSk/ayh5KTprLmV2ZW50LHg9ay5EZWZlcnJlZCgpLGI9ay5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksdz12LnN0YXR1c0NvZGV8fHt9LGE9e30scz17fSx1PSJjYW5jZWxlZCIsVD17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGgpe2lmKCFuKXtuPXt9O3doaWxlKHQ9UHQuZXhlYyhwKSluW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdPShuW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KHRbMl0pfXQ9bltlLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09dD9udWxsOnQuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGg/cDpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWgmJihlPXNbZS50b0xvd2VyQ2FzZSgpXT1zW2UudG9Mb3dlckNhc2UoKV18fGUsYVtlXT10KSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1oJiYodi5taW1lVHlwZT1lKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpaWYoaClULmFsd2F5cyhlW1Quc3RhdHVzXSk7ZWxzZSBmb3IodCBpbiBlKXdbdF09W3dbdF0sZVt0XV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHU7cmV0dXJuIGMmJmMuYWJvcnQodCksbCgwLHQpLHRoaXN9fTtpZih4LnByb21pc2UoVCksdi51cmw9KChlfHx2LnVybHx8RXQuaHJlZikrIiIpLnJlcGxhY2UoTXQsRXQucHJvdG9jb2wrIi8vIiksdi50eXBlPXQubWV0aG9kfHx0LnR5cGV8fHYubWV0aG9kfHx2LnR5cGUsdi5kYXRhVHlwZXM9KHYuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChSKXx8WyIiXSxudWxsPT12LmNyb3NzRG9tYWluKXtyPUUuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtyLmhyZWY9di51cmwsci5ocmVmPXIuaHJlZix2LmNyb3NzRG9tYWluPUZ0LnByb3RvY29sKyIvLyIrRnQuaG9zdCE9ci5wcm90b2NvbCsiLy8iK3IuaG9zdH1jYXRjaChlKXt2LmNyb3NzRG9tYWluPSEwfX1pZih2LmRhdGEmJnYucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygdi5kYXRhJiYodi5kYXRhPWsucGFyYW0odi5kYXRhLHYudHJhZGl0aW9uYWwpKSxfdChJdCx2LHQsVCksaClyZXR1cm4gVDtmb3IoaSBpbihnPWsuZXZlbnQmJnYuZ2xvYmFsKSYmMD09ay5hY3RpdmUrKyYmay5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSx2LnR5cGU9di50eXBlLnRvVXBwZXJDYXNlKCksdi5oYXNDb250ZW50PSFSdC50ZXN0KHYudHlwZSksZj12LnVybC5yZXBsYWNlKEh0LCIiKSx2Lmhhc0NvbnRlbnQ/di5kYXRhJiZ2LnByb2Nlc3NEYXRhJiYwPT09KHYuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKHYuZGF0YT12LmRhdGEucmVwbGFjZShMdCwiKyIpKToobz12LnVybC5zbGljZShmLmxlbmd0aCksdi5kYXRhJiYodi5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiB2LmRhdGEpJiYoZis9KFN0LnRlc3QoZik/IiYiOiI/Iikrdi5kYXRhLGRlbGV0ZSB2LmRhdGEpLCExPT09di5jYWNoZSYmKGY9Zi5yZXBsYWNlKE90LCIkMSIpLG89KFN0LnRlc3QoZik/IiYiOiI/IikrIl89IitrdCsrK28pLHYudXJsPWYrbyksdi5pZk1vZGlmaWVkJiYoay5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGsubGFzdE1vZGlmaWVkW2ZdKSxrLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsay5ldGFnW2ZdKSksKHYuZGF0YSYmdi5oYXNDb250ZW50JiYhMSE9PXYuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdi5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHYuZGF0YVR5cGVzWzBdJiZ2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dP3YuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0rKCIqIiE9PXYuZGF0YVR5cGVzWzBdPyIsICIrJHQrIjsgcT0wLjAxIjoiIik6di5hY2NlcHRzWyIqIl0pLHYuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx2LmhlYWRlcnNbaV0pO2lmKHYuYmVmb3JlU2VuZCYmKCExPT09di5iZWZvcmVTZW5kLmNhbGwoeSxULHYpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh2LmNvbXBsZXRlKSxULmRvbmUodi5zdWNjZXNzKSxULmZhaWwodi5lcnJvciksYz1fdChXdCx2LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHZdKSxoKXJldHVybiBUO3YuYXN5bmMmJjA8di50aW1lb3V0JiYoZD1DLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmFib3J0KCJ0aW1lb3V0Iil9LHYudGltZW91dCkpO3RyeXtoPSExLGMuc2VuZChhLGwpfWNhdGNoKGUpe2lmKGgpdGhyb3cgZTtsKC0xLGUpfX1lbHNlIGwoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGwoZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXQ7aHx8KGg9ITAsZCYmQy5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHYsVCxuKSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoay5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKGsuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLWsuYWN0aXZlfHxrLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGsuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBrLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxrLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtrW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksay5hamF4KGsuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxrLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxrLl9ldmFsVXJsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7ay5nbG9iYWxFdmFsKGUsdCl9fSl9LGsuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PWsoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1rKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtrKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLGsuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hay5leHByLnBzZXVkb3MudmlzaWJsZShlKX0say5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LGsuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIFV0PXswOjIwMCwxMjIzOjIwNH0sWHQ9ay5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhWHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gWHQseS5hamF4PVh0PSEhWHQsay5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHxYdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChVdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksay5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxrLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gay5nbG9iYWxFdmFsKGUpLGV9fX0pLGsuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxrLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1rKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgVnQsR3Q9W10sWXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztrLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9R3QucG9wKCl8fGsuZXhwYW5kbysiXyIra3QrKztyZXR1cm4gdGhpc1tlXT0hMCxlfX0pLGsuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPSExIT09ZS5qc29ucCYmKFl0LnRlc3QoZS51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmWXQudGVzdChlLmRhdGEpJiYiZGF0YSIpO2lmKGF8fCJqc29ucCI9PT1lLmRhdGFUeXBlc1swXSlyZXR1cm4gcj1lLmpzb25wQ2FsbGJhY2s9bShlLmpzb25wQ2FsbGJhY2spP2UuanNvbnBDYWxsYmFjaygpOmUuanNvbnBDYWxsYmFjayxhP2VbYV09ZVthXS5yZXBsYWNlKFl0LCIkMSIrcik6ITEhPT1lLmpzb25wJiYoZS51cmwrPShTdC50ZXN0KGUudXJsKT8iJiI6Ij8iKStlLmpzb25wKyI9IityKSxlLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gb3x8ay5lcnJvcihyKyIgd2FzIG5vdCBjYWxsZWQiKSxvWzBdfSxlLmRhdGFUeXBlc1swXT0ianNvbiIsaT1DW3JdLENbcl09ZnVuY3Rpb24oKXtvPWFyZ3VtZW50c30sbi5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1pP2soQykucmVtb3ZlUHJvcChyKTpDW3JdPWksZVtyXSYmKGUuanNvbnBDYWxsYmFjaz10Lmpzb25wQ2FsbGJhY2ssR3QucHVzaChyKSksbyYmbShpKSYmaShvWzBdKSxvPWk9dm9pZCAwfSksInNjcmlwdCJ9KSx5LmNyZWF0ZUhUTUxEb2N1bWVudD0oKFZ0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5KS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09VnQuY2hpbGROb2Rlcy5sZW5ndGgpLGsucGFyc2VIVE1MPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/W106KCJib29sZWFuIj09dHlwZW9mIHQmJihuPXQsdD0hMSksdHx8KHkuY3JlYXRlSFRNTERvY3VtZW50Pygocj0odD1FLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZj1FLmxvY2F0aW9uLmhyZWYsdC5oZWFkLmFwcGVuZENoaWxkKHIpKTp0PUUpLG89IW4mJltdLChpPUQuZXhlYyhlKSk/W3QuY3JlYXRlRWxlbWVudChpWzFdKV06KGk9d2UoW2VdLHQsbyksbyYmby5sZW5ndGgmJmsobykucmVtb3ZlKCksay5tZXJnZShbXSxpLmNoaWxkTm9kZXMpKSk7dmFyIHIsaSxvfSxrLmZuLmxvYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPXRoaXMscz1lLmluZGV4T2YoIiAiKTtyZXR1cm4tMTxzJiYocj1tdChlLnNsaWNlKHMpKSxlPWUuc2xpY2UoMCxzKSksbSh0KT8obj10LHQ9dm9pZCAwKTp0JiYib2JqZWN0Ij09dHlwZW9mIHQmJihpPSJQT1NUIiksMDxhLmxlbmd0aCYmay5hamF4KHt1cmw6ZSx0eXBlOml8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOnR9KS5kb25lKGZ1bmN0aW9uKGUpe289YXJndW1lbnRzLGEuaHRtbChyP2soIjxkaXY+IikuYXBwZW5kKGsucGFyc2VIVE1MKGUpKS5maW5kKHIpOmUpfSkuYWx3YXlzKG4mJmZ1bmN0aW9uKGUsdCl7YS5lYWNoKGZ1bmN0aW9uKCl7bi5hcHBseSh0aGlzLG98fFtlLnJlc3BvbnNlVGV4dCx0LGVdKX0pfSksdGhpc30say5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXtrLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksay5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGsuZ3JlcChrLnRpbWVycyxmdW5jdGlvbihlKXtyZXR1cm4gdD09PWUuZWxlbX0pLmxlbmd0aH0say5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9ay5jc3MoZSwicG9zaXRpb24iKSxjPWsoZSksZj17fTsic3RhdGljIj09PWwmJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9Yy5vZmZzZXQoKSxvPWsuY3NzKGUsInRvcCIpLHU9ay5jc3MoZSwibGVmdCIpLCgiYWJzb2x1dGUiPT09bHx8ImZpeGVkIj09PWwpJiYtMTwobyt1KS5pbmRleE9mKCJhdXRvIik/KGE9KHI9Yy5wb3NpdGlvbigpKS50b3AsaT1yLmxlZnQpOihhPXBhcnNlRmxvYXQobyl8fDAsaT1wYXJzZUZsb2F0KHUpfHwwKSxtKHQpJiYodD10LmNhbGwoZSxuLGsuZXh0ZW5kKHt9LHMpKSksbnVsbCE9dC50b3AmJihmLnRvcD10LnRvcC1zLnRvcCthKSxudWxsIT10LmxlZnQmJihmLmxlZnQ9dC5sZWZ0LXMubGVmdCtpKSwidXNpbmciaW4gdD90LnVzaW5nLmNhbGwoZSxmKTpjLmNzcyhmKX19LGsuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24odCl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihlKXtrLm9mZnNldC5zZXRPZmZzZXQodGhpcyx0LGUpfSk7dmFyIGUsbixyPXRoaXNbMF07cmV0dXJuIHI/ci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6ZS50b3Arbi5wYWdlWU9mZnNldCxsZWZ0OmUubGVmdCtuLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbixyPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09ay5jc3MociwicG9zaXRpb24iKSl0PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXt0PXRoaXMub2Zmc2V0KCksbj1yLm93bmVyRG9jdW1lbnQsZT1yLm9mZnNldFBhcmVudHx8bi5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmKGU9PT1uLmJvZHl8fGU9PT1uLmRvY3VtZW50RWxlbWVudCkmJiJzdGF0aWMiPT09ay5jc3MoZSwicG9zaXRpb24iKSllPWUucGFyZW50Tm9kZTtlJiZlIT09ciYmMT09PWUubm9kZVR5cGUmJigoaT1rKGUpLm9mZnNldCgpKS50b3ArPWsuY3NzKGUsImJvcmRlclRvcFdpZHRoIiwhMCksaS5sZWZ0Kz1rLmNzcyhlLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDp0LnRvcC1pLnRvcC1rLmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1pLmxlZnQtay5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50O3doaWxlKGUmJiJzdGF0aWMiPT09ay5jc3MoZSwicG9zaXRpb24iKSllPWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxpZX0pfX0pLGsuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbih0LGkpe3ZhciBvPSJwYWdlWU9mZnNldCI9PT1pO2suZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoeChlKT9yPWU6OT09PWUubm9kZVR5cGUmJihyPWUuZGVmYXVsdFZpZXcpLHZvaWQgMD09PW4pcmV0dXJuIHI/cltpXTplW3RdO3I/ci5zY3JvbGxUbyhvP3IucGFnZVhPZmZzZXQ6bixvP246ci5wYWdlWU9mZnNldCk6ZVt0XT1ufSx0LGUsYXJndW1lbnRzLmxlbmd0aCl9fSksay5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGUsbil7ay5jc3NIb29rc1tuXT16ZSh5LnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiB0PV9lKGUsbiksJGUudGVzdCh0KT9rKGUpLnBvc2l0aW9uKClbbl0rInB4Ijp0fSl9KSxrLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLHMpe2suZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpzLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24ocixvKXtrLmZuW29dPWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCYmKHJ8fCJib29sZWFuIiE9dHlwZW9mIGUpLGk9cnx8KCEwPT09ZXx8ITA9PT10PyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gXyh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4geChlKT8wPT09by5pbmRleE9mKCJvdXRlciIpP2VbImlubmVyIithXTplLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09ZS5ub2RlVHlwZT8ocj1lLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChlLmJvZHlbInNjcm9sbCIrYV0sclsic2Nyb2xsIithXSxlLmJvZHlbIm9mZnNldCIrYV0sclsib2Zmc2V0IithXSxyWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09bj9rLmNzcyhlLHQsaSk6ay5zdHlsZShlLHQsbixpKX0scyxuP2U6dm9pZCAwLG4pfX0pfSksay5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7ay5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSksay5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLGsuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX19KSxrLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxtKGUpKXJldHVybiByPXMuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLHIuY29uY2F0KHMuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGsuZ3VpZCsrLGl9LGsuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/ay5yZWFkeVdhaXQrKzprLnJlYWR5KCEwKX0say5pc0FycmF5PUFycmF5LmlzQXJyYXksay5wYXJzZUpTT049SlNPTi5wYXJzZSxrLm5vZGVOYW1lPUEsay5pc0Z1bmN0aW9uPW0say5pc1dpbmRvdz14LGsuY2FtZWxDYXNlPVYsay50eXBlPXcsay5ub3c9RGF0ZS5ub3csay5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ay50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4ga30pO3ZhciBRdD1DLmpRdWVyeSxKdD1DLiQ7cmV0dXJuIGsubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gQy4kPT09ayYmKEMuJD1KdCksZSYmQy5qUXVlcnk9PT1rJiYoQy5qUXVlcnk9UXQpLGt9LGV8fChDLmpRdWVyeT1DLiQ9ayksa30pOwo=",
  38. {"status":false}
  39. ],
  40. [
  41. "jquery_3.4.1",
  42. "ZnVuY3Rpb24gaW5zdGFsbEpRdWVyeSgpCnsKICAgIHZhciBqcyA9IE1PRC5tb2R1bGUoImpxdWVyeS5taW4uanNfMy40LjEiKS5jb2RlNjQ7CiAgICBldmFsKG11cm9tLmF0b2IoanMpKTsKfQoKaW5zdGFsbEpRdWVyeSgpOw==",
  43. {"status":true}
  44. ],
  45. [
  46. "w2ui.min.js_1.5",
  47. "LyogdzJ1aSAxLjUueCAobmlnaHRseSkgKGMpIGh0dHA6Ly93MnVpLmNvbSwgdml0bWFsaW5hQGdtYWlsLmNvbSAqLwoKdmFyIHcydWk9dzJ1aXx8e30sdzJvYmo9dzJvYmp8fHt9LHcydXRpbHM9ZnVuY3Rpb24oZyl7dmFyIGU9e307cmV0dXJue3ZlcnNpb246IjEuNS54IixzZXR0aW5nczp7bG9jYWxlOiJlbi11cyIsZGF0ZUZvcm1hdDoibS9kL3l5eXkiLHRpbWVGb3JtYXQ6ImhoOm1pIHBtIixkYXRldGltZUZvcm1hdDoibS9kL3l5eXl8aGg6bWkgcG0iLGN1cnJlbmN5UHJlZml4OiIkIixjdXJyZW5jeVN1ZmZpeDoiIixjdXJyZW5jeVByZWNpc2lvbjoyLGdyb3VwU3ltYm9sOiIsIixkZWNpbWFsU3ltYm9sOiIuIixzaG9ydG1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGZ1bGxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0ZGF5czpbIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyIsIlMiXSxmdWxsZGF5czpbIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5IiwiU3VuZGF5Il0sd2Vla1N0YXJ0czoiTSIsZGF0YVR5cGU6IkhUVFBKU09OIixwaHJhc2VzOnt9LGRhdGVTdGFydFllYXI6MTk1MCxkYXRlRW5kWWVhcjoyMDIwLG1hY0J1dHRvbk9yZGVyOiExfSxpc0JpbjpmdW5jdGlvbihlKXtyZXR1cm4vXlswLTFdKyQvLnRlc3QoZSl9LGlzSW50OmgsaXNGbG9hdDpmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUucmVwbGFjZSgvXHMrL2csIiIpLnJlcGxhY2UodzJ1dGlscy5zZXR0aW5ncy5ncm91cFN5bWJvbCwiIikucmVwbGFjZSh3MnV0aWxzLnNldHRpbmdzLmRlY2ltYWxTeW1ib2wsIi4iKSk7cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZXx8InN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWUpJiYhaXNOYU4oTnVtYmVyKGUpKX0saXNNb25leTpmdW5jdGlvbihlKXt2YXIgdD13MnV0aWxzLnNldHRpbmdzLGk9bmV3IFJlZ0V4cCgiXiIrKHQuY3VycmVuY3lQcmVmaXg/IlxcIit0LmN1cnJlbmN5UHJlZml4KyI/IjoiIikrIlstK10/IisodC5jdXJyZW5jeVByZWZpeD8iXFwiK3QuY3VycmVuY3lQcmVmaXgrIj8iOiIiKSsiWzAtOV0qW1xcIit0LmRlY2ltYWxTeW1ib2wrIl0/WzAtOV0rIisodC5jdXJyZW5jeVN1ZmZpeD8iXFwiK3QuY3VycmVuY3lTdWZmaXgrIj8iOiIiKSsiJCIsImkiKTsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUucmVwbGFjZShuZXcgUmVnRXhwKHQuZ3JvdXBTeW1ib2wsImciKSwiIikpO3JldHVybiJvYmplY3QiIT10eXBlb2YgZSYmIiIhPT1lJiZpLnRlc3QoZSl9LGlzSGV4OmZ1bmN0aW9uKGUpe3JldHVybi9eKDB4KT9bMC05YS1mQS1GXSskLy50ZXN0KGUpfSxpc0FscGhhTnVtZXJpYzpmdW5jdGlvbihlKXtyZXR1cm4vXlthLXpBLVowLTlfLV0rJC8udGVzdChlKX0saXNFbWFpbDpmdW5jdGlvbihlKXtyZXR1cm4vXlthLXpBLVowLTkuXyVcLStdK0Bb0LAt0Y/QkC3Qr2EtekEtWjAtOS4tXStcLlvQsC3Rj9CQLdCvYS16QS1aXSskLy50ZXN0KGUpfSxpc0lwQWRkcmVzczpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXigoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KS4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykkIikudGVzdChlKX0saXNEYXRlOmZ1bmN0aW9uKGUsdCxpKXtpZighZSlyZXR1cm4hMTt2YXIgcyxuLGEscj0iSW52YWxpZCBEYXRlIjtudWxsPT10JiYodD13MnV0aWxzLnNldHRpbmdzLmRhdGVGb3JtYXQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldEZ1bGxZZWFyKWE9ZS5nZXRGdWxsWWVhcigpLHM9ZS5nZXRNb250aCgpKzEsbj1lLmdldERhdGUoKTtlbHNlIGlmKHBhcnNlSW50KGUpPT1lJiYwPHBhcnNlSW50KGUpKWU9bmV3IERhdGUocGFyc2VJbnQoZSkpLGE9ZS5nZXRGdWxsWWVhcigpLHM9ZS5nZXRNb250aCgpKzEsbj1lLmdldERhdGUoKTtlbHNle2lmKGU9U3RyaW5nKGUpLG5ldyBSZWdFeHAoIm1vbiIsImlnIikudGVzdCh0KSl7dD10LnJlcGxhY2UoL21vbnRoL2dpLCJtIikucmVwbGFjZSgvbW9uL2dpLCJtIikucmVwbGFjZSgvZGQvZ2ksImQiKS5yZXBsYWNlKC9bLCBdL2dpLCIvIikucmVwbGFjZSgvXC9cLy9nLCIvIikudG9Mb3dlckNhc2UoKSxlPWUucmVwbGFjZSgvWywgXS9naSwiLyIpLnJlcGxhY2UoL1wvXC8vZywiLyIpLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBsPTAsbz13MnV0aWxzLnNldHRpbmdzLmZ1bGxtb250aHMubGVuZ3RoO2w8bztsKyspe3ZhciBkPXcydXRpbHMuc2V0dGluZ3MuZnVsbG1vbnRoc1tsXTtlPWUucmVwbGFjZShuZXcgUmVnRXhwKGQsImlnIikscGFyc2VJbnQobCkrMSkucmVwbGFjZShuZXcgUmVnRXhwKGQuc3Vic3RyKDAsMyksImlnIikscGFyc2VJbnQobCkrMSl9fXZhciB1PWUucmVwbGFjZSgvLS9nLCIvIikucmVwbGFjZSgvXC4vZywiLyIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoIi8iKSxjPXQucmVwbGFjZSgvLS9nLCIvIikucmVwbGFjZSgvXC4vZywiLyIpLnRvTG93ZXJDYXNlKCk7Im1tL2RkL3l5eXkiPT09YyYmKHM9dVswXSxuPXVbMV0sYT11WzJdKSwibS9kL3l5eXkiPT09YyYmKHM9dVswXSxuPXVbMV0sYT11WzJdKSwiZGQvbW0veXl5eSI9PT1jJiYocz11WzFdLG49dVswXSxhPXVbMl0pLCJkL20veXl5eSI9PT1jJiYocz11WzFdLG49dVswXSxhPXVbMl0pLCJ5eXl5L2RkL21tIj09PWMmJihzPXVbMl0sbj11WzFdLGE9dVswXSksInl5eXkvZC9tIj09PWMmJihzPXVbMl0sbj11WzFdLGE9dVswXSksInl5eXkvbW0vZGQiPT09YyYmKHM9dVsxXSxuPXVbMl0sYT11WzBdKSwieXl5eS9tL2QiPT09YyYmKHM9dVsxXSxuPXVbMl0sYT11WzBdKSwibW0vZGQveXkiPT09YyYmKHM9dVswXSxuPXVbMV0sYT11WzJdKSwibS9kL3l5Ij09PWMmJihzPXVbMF0sbj11WzFdLGE9cGFyc2VJbnQodVsyXSkrMTkwMCksImRkL21tL3l5Ij09PWMmJihzPXVbMV0sbj11WzBdLGE9cGFyc2VJbnQodVsyXSkrMTkwMCksImQvbS95eSI9PT1jJiYocz11WzFdLG49dVswXSxhPXBhcnNlSW50KHVbMl0pKzE5MDApLCJ5eS9kZC9tbSI9PT1jJiYocz11WzJdLG49dVsxXSxhPXBhcnNlSW50KHVbMF0pKzE5MDApLCJ5eS9kL20iPT09YyYmKHM9dVsyXSxuPXVbMV0sYT1wYXJzZUludCh1WzBdKSsxOTAwKSwieXkvbW0vZGQiPT09YyYmKHM9dVsxXSxuPXVbMl0sYT1wYXJzZUludCh1WzBdKSsxOTAwKSwieXkvbS9kIj09PWMmJihzPXVbMV0sbj11WzJdLGE9cGFyc2VJbnQodVswXSkrMTkwMCl9aWYoIWgoYSkpcmV0dXJuITE7aWYoIWgocykpcmV0dXJuITE7aWYoIWgobikpcmV0dXJuITE7aWYoYT0rYSxzPStzLG49K24scj1uZXcgRGF0ZShhLHMtMSxuKSxudWxsPT1zKXJldHVybiExO2lmKCJJbnZhbGlkIERhdGUiPT09U3RyaW5nKHIpKXJldHVybiExO2lmKHIuZ2V0TW9udGgoKSsxIT09c3x8ci5nZXREYXRlKCkhPT1ufHxyLmdldEZ1bGxZZWFyKCkhPT1hKXJldHVybiExO3JldHVybiEwIT09aXx8cn0saXNUaW1lOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4hMTt2YXIgaSxzLG47ZT0oZT1TdHJpbmcoZSkpLnRvVXBwZXJDYXNlKCkscz0wPD1lLmluZGV4T2YoIkFNIik7dmFyIGE9KG49MDw9ZS5pbmRleE9mKCJQTSIpKXx8cztpPWE/MTI6MjQ7ZT1lLnJlcGxhY2UoIkFNIiwiIikucmVwbGFjZSgiUE0iLCIiKTt2YXIgcj0oZT1nLnRyaW0oZSkpLnNwbGl0KCI6IiksbD1wYXJzZUludChyWzBdfHwwKSxvPXBhcnNlSW50KHJbMV18fDApLGQ9cGFyc2VJbnQoclsyXXx8MCk7aWYoKCFhfHwxIT09ci5sZW5ndGgpJiYyIT09ci5sZW5ndGgmJjMhPT1yLmxlbmd0aClyZXR1cm4hMTtpZigiIj09PXJbMF18fGw8MHx8aTxsfHwhdGhpcy5pc0ludChyWzBdKXx8MjxyWzBdLmxlbmd0aClyZXR1cm4hMTtpZigxPHIubGVuZ3RoJiYoIiI9PT1yWzFdfHxvPDB8fDU5PG98fCF0aGlzLmlzSW50KHJbMV0pfHwyIT09clsxXS5sZW5ndGgpKXJldHVybiExO2lmKDI8ci5sZW5ndGgmJigiIj09PXJbMl18fGQ8MHx8NTk8ZHx8IXRoaXMuaXNJbnQoclsyXSl8fDIhPT1yWzJdLmxlbmd0aCkpcmV0dXJuITE7aWYoIWEmJmk9PT1sJiYoMCE9PW98fDAhPT1kKSlyZXR1cm4hMTtpZihhJiYxPT09ci5sZW5ndGgmJjA9PT1sKXJldHVybiExO2lmKCEwIT09dClyZXR1cm4hMDtuJiYxMiE9PWwmJihsKz0xMik7cyYmMTI9PT1sJiYobCs9MTIpO3JldHVybntob3VyczpsLG1pbnV0ZXM6byxzZWNvbmRzOmR9fSxpc0RhdGVUaW1lOmZ1bmN0aW9uKGUsdCxpKXtudWxsPT10JiYodD13MnV0aWxzLnNldHRpbmdzLmRhdGV0aW1lRm9ybWF0KTt2YXIgcz10LnNwbGl0KCJ8Iik7e2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldEZ1bGxZZWFyKXJldHVybiEwIT09aXx8ZTtpZihwYXJzZUludChlKT09PWUmJjA8PXBhcnNlSW50KGUpKXJldHVybiBlPW5ldyBEYXRlKHBhcnNlSW50KGUpKSwhMCE9PWl8fGU7aWYocGFyc2VJbnQoZSk9PT1lJiZwYXJzZUludChlKTwwKXJldHVybiExO3ZhciBuPVN0cmluZyhlKS5pbmRleE9mKCIgIiksYT1bZS5zdWJzdHIoMCxuKSxlLnN1YnN0cihuKS50cmltKCldO3NbMF09c1swXS50cmltKCksc1sxXSYmKHNbMV09c1sxXS50cmltKCkpO3ZhciByPXcydXRpbHMuaXNEYXRlKGFbMF0sc1swXSwhMCksbD13MnV0aWxzLmlzVGltZShhWzFdLCEwKTtyZXR1cm4hMSE9PXImJiExIT09bCYmKCEwIT09aXx8KHIuc2V0SG91cnMobC5ob3Vycyksci5zZXRNaW51dGVzKGwubWludXRlcyksci5zZXRTZWNvbmRzKGwuc2Vjb25kcykscikpfX0sYWdlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCIiPT09ZXx8bnVsbD09ZSlyZXR1cm4iIjt0PSJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldEZ1bGxZZWFyP2U6cGFyc2VJbnQoZSk9PWUmJjA8cGFyc2VJbnQoZSk/bmV3IERhdGUocGFyc2VJbnQoZSkpOm5ldyBEYXRlKGUpO2lmKCJJbnZhbGlkIERhdGUiPT09U3RyaW5nKHQpKXJldHVybiIiO3ZhciBpPSgobmV3IERhdGUpLmdldFRpbWUoKS10LmdldFRpbWUoKSkvMWUzLHM9IiIsbj0iIjtpPDA/KHM9MCxuPSJzZWMiKTppPDYwPyhzPU1hdGguZmxvb3IoaSksbj0ic2VjIixpPDAmJihzPTAsbj0ic2VjIikpOmk8MzYwMD8ocz1NYXRoLmZsb29yKGkvNjApLG49Im1pbiIpOmk8ODY0MDA/KHM9TWF0aC5mbG9vcihpLzYwLzYwKSxuPSJob3VyIik6aTwyNTkyZTM/KHM9TWF0aC5mbG9vcihpLzI0LzYwLzYwKSxuPSJkYXkiKTppPDMxNTM2ZTM/KHM9TWF0aC5mbG9vcihpLzMwLzI0LzYwLzYwKjEwKS8xMCxuPSJtb250aCIpOmk8MTI2MTQ0ZTM/KHM9TWF0aC5mbG9vcihpLzM2NS8yNC82MC82MCoxMCkvMTAsbj0ieWVhciIpOjEyNjE0NGUzPD1pJiYocz1NYXRoLmZsb29yKGkvMzY1LjI1LzI0LzYwLzYwKjEwKS8xMCxuPSJ5ZWFyIik7cmV0dXJuIHMrIiAiK24rKDE8cz8icyI6IiIpfSxpbnRlcnZhbDpmdW5jdGlvbihlKXt2YXIgdD0iIjt0PWU8MWUzPyI8IDEgc2VjIjplPDZlND9NYXRoLmZsb29yKGUvMWUzKSsiIHNlY3MiOmU8MzZlNT9NYXRoLmZsb29yKGUvNmU0KSsiIG1pbnMiOmU8ODY0ZTU/TWF0aC5mbG9vcihlLzM2ZTUqMTApLzEwKyIgaG91cnMiOmU8MjYyOGU2P01hdGguZmxvb3IoZS84NjRlNSoxMCkvMTArIiBkYXlzIjplPDMxNTM2ZTY/TWF0aC5mbG9vcihlLzI2MjhlNioxMCkvMTArIiBtb250aHMiOk1hdGguZmxvb3IoZS8zMTUzNmU1KS8xMCsiIHllYXJzIjtyZXR1cm4gdH0sZGF0ZTpmdW5jdGlvbihlKXtpZigiIj09PWV8fG51bGw9PWV8fCJvYmplY3QiPT10eXBlb2YgZSYmIWUuZ2V0TW9udGgpcmV0dXJuIiI7dmFyIHQ9bmV3IERhdGUoZSk7dzJ1dGlscy5pc0ludChlKSYmKHQ9bmV3IERhdGUoTnVtYmVyKGUpKSk7aWYoIkludmFsaWQgRGF0ZSI9PT1TdHJpbmcodCkpcmV0dXJuIiI7dmFyIGk9dzJ1dGlscy5zZXR0aW5ncy5zaG9ydG1vbnRocyxzPW5ldyBEYXRlLG49bmV3IERhdGU7bi5zZXRUaW1lKG4uZ2V0VGltZSgpLTg2NGU1KTt2YXIgYT1pW3QuZ2V0TW9udGgoKV0rIiAiK3QuZ2V0RGF0ZSgpKyIsICIrdC5nZXRGdWxsWWVhcigpLHI9aVtzLmdldE1vbnRoKCldKyIgIitzLmdldERhdGUoKSsiLCAiK3MuZ2V0RnVsbFllYXIoKSxsPWlbbi5nZXRNb250aCgpXSsiICIrbi5nZXREYXRlKCkrIiwgIituLmdldEZ1bGxZZWFyKCksbz10LmdldEhvdXJzKCktKDEyPHQuZ2V0SG91cnMoKT8xMjowKSsiOiIrKHQuZ2V0TWludXRlcygpPDEwPyIwIjoiIikrdC5nZXRNaW51dGVzKCkrIiAiKygxMjw9dC5nZXRIb3VycygpPyJwbSI6ImFtIiksZD10LmdldEhvdXJzKCktKDEyPHQuZ2V0SG91cnMoKT8xMjowKSsiOiIrKHQuZ2V0TWludXRlcygpPDEwPyIwIjoiIikrdC5nZXRNaW51dGVzKCkrIjoiKyh0LmdldFNlY29uZHMoKTwxMD8iMCI6IiIpK3QuZ2V0U2Vjb25kcygpKyIgIisoMTI8PXQuZ2V0SG91cnMoKT8icG0iOiJhbSIpLHU9YTthPT1yJiYodT1vKTthPT1sJiYodT13MnV0aWxzLmxhbmcoIlllc3RlcmRheSIpKTtyZXR1cm4nPHNwYW4gdGl0bGU9IicrYSsiICIrZCsnIj4nK3UrIjwvc3Bhbj4ifSxmb3JtYXRTaXplOmZ1bmN0aW9uKGUpe2lmKCF3MnV0aWxzLmlzRmxvYXQoZSl8fCIiPT09ZSlyZXR1cm4iIjtpZigwPT09KGU9cGFyc2VGbG9hdChlKSkpcmV0dXJuIDA7dmFyIHQ9cGFyc2VJbnQoTWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLmxvZygxMDI0KSkpO3JldHVybihNYXRoLmZsb29yKGUvTWF0aC5wb3coMTAyNCx0KSoxMCkvMTApLnRvRml4ZWQoMD09PXQ/MDoxKSsiICIrKFsiQnQiLCJLQiIsIk1CIiwiR0IiLCJUQiIsIlBCIiwiRUIiLCJaQiJdW3RdfHwiPz8iKX0sZm9ybWF0TnVtYmVyOmZ1bmN0aW9uKGUsdCxpKXtpZihudWxsPT1lfHwiIj09PWV8fCJvYmplY3QiPT10eXBlb2YgZSlyZXR1cm4iIjt2YXIgcz17bWluaW11bUZyYWN0aW9uRGlnaXRzOnQsbWF4aW11bUZyYWN0aW9uRGlnaXRzOnQsdXNlR3JvdXBpbmc6aX07KG51bGw9PXR8fHQ8MCkmJihzLm1pbmltdW1GcmFjdGlvbkRpZ2l0cz0wLHMubWF4aW11bUZyYWN0aW9uRGlnaXRzPTIwKTtyZXR1cm4gcGFyc2VGbG9hdChlKS50b0xvY2FsZVN0cmluZyh3MnV0aWxzLnNldHRpbmdzLmxvY2FsZSxzKX0sZm9ybWF0RGF0ZTpmdW5jdGlvbihlLHQpe3Q9dHx8dGhpcy5zZXR0aW5ncy5kYXRlRm9ybWF0O2lmKCIiPT09ZXx8bnVsbD09ZXx8Im9iamVjdCI9PXR5cGVvZiBlJiYhZS5nZXRNb250aClyZXR1cm4iIjt2YXIgaT1uZXcgRGF0ZShlKTt3MnV0aWxzLmlzSW50KGUpJiYoaT1uZXcgRGF0ZShOdW1iZXIoZSkpKTtpZigiSW52YWxpZCBEYXRlIj09PVN0cmluZyhpKSlyZXR1cm4iIjt2YXIgcz1pLmdldEZ1bGxZZWFyKCksbj1pLmdldE1vbnRoKCksYT1pLmdldERhdGUoKTtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIm1vbnRoIix3MnV0aWxzLnNldHRpbmdzLmZ1bGxtb250aHNbbl0pLnJlcGxhY2UoIm1vbiIsdzJ1dGlscy5zZXR0aW5ncy5zaG9ydG1vbnRoc1tuXSkucmVwbGFjZSgveXl5eS9nLHMpLnJlcGxhY2UoL3l5eS9nLHMpLnJlcGxhY2UoL3l5L2csMmUzPHM/MTAwK3BhcnNlSW50KFN0cmluZyhzKS5zdWJzdHIoMikpOlN0cmluZyhzKS5zdWJzdHIoMikpLnJlcGxhY2UoLyhefFteYS16JF0peS9nLCIkMSIrcykucmVwbGFjZSgvbW0vZywobisxPDEwPyIwIjoiIikrKG4rMSkpLnJlcGxhY2UoL2RkL2csKGE8MTA/IjAiOiIiKSthKS5yZXBsYWNlKC90aC9nLDE9PWE/InN0IjoidGgiKS5yZXBsYWNlKC90aC9nLDI9PWE/Im5kIjoidGgiKS5yZXBsYWNlKC90aC9nLDM9PWE/InJkIjoidGgiKS5yZXBsYWNlKC8oXnxbXmEteiRdKW0vZywiJDEiKyhuKzEpKS5yZXBsYWNlKC8oXnxbXmEteiRdKWQvZywiJDEiK2EpfSxmb3JtYXRUaW1lOmZ1bmN0aW9uKGUsdCl7dzJ1dGlscy5zZXR0aW5ncy5zaG9ydG1vbnRocyx3MnV0aWxzLnNldHRpbmdzLmZ1bGxtb250aHM7dD10fHx0aGlzLnNldHRpbmdzLnRpbWVGb3JtYXQ7aWYoIiI9PT1lfHxudWxsPT1lfHwib2JqZWN0Ij09dHlwZW9mIGUmJiFlLmdldE1vbnRoKXJldHVybiIiO3ZhciBpPW5ldyBEYXRlKGUpO3cydXRpbHMuaXNJbnQoZSkmJihpPW5ldyBEYXRlKE51bWJlcihlKSkpO2lmKHcydXRpbHMuaXNUaW1lKGUpKXt2YXIgcz13MnV0aWxzLmlzVGltZShlLCEwKTsoaT1uZXcgRGF0ZSkuc2V0SG91cnMocy5ob3VycyksaS5zZXRNaW51dGVzKHMubWludXRlcyl9aWYoIkludmFsaWQgRGF0ZSI9PT1TdHJpbmcoaSkpcmV0dXJuIiI7dmFyIG49ImFtIixhPWkuZ2V0SG91cnMoKSxyPWkuZ2V0SG91cnMoKSxsPWkuZ2V0TWludXRlcygpLG89aS5nZXRTZWNvbmRzKCk7bDwxMCYmKGw9IjAiK2wpO288MTAmJihvPSIwIitvKTstMT09PXQuaW5kZXhPZigiYW0iKSYmLTE9PT10LmluZGV4T2YoInBtIil8fCgxMjw9YSYmKG49InBtIiksMTI8YSYmKGEtPTEyKSwwPT09YSYmKGE9MTIpKTtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoImFtIixuKS5yZXBsYWNlKCJwbSIsbikucmVwbGFjZSgiaGhoIixhPDEwPyIwIithOmEpLnJlcGxhY2UoImhoMjQiLHI8MTA/IjAiK3I6cikucmVwbGFjZSgiaDI0IixyKS5yZXBsYWNlKCJoaCIsYSkucmVwbGFjZSgibW0iLGwpLnJlcGxhY2UoIm1pIixsKS5yZXBsYWNlKCJzcyIsbykucmVwbGFjZSgvKF58W15hLXokXSloL2csIiQxIithKS5yZXBsYWNlKC8oXnxbXmEteiRdKW0vZywiJDEiK2wpLnJlcGxhY2UoLyhefFteYS16JF0pcy9nLCIkMSIrbyl9LGZvcm1hdERhdGVUaW1lOmZ1bmN0aW9uKGUsdCl7dmFyIGk7aWYoIiI9PT1lfHxudWxsPT1lfHwib2JqZWN0Ij09dHlwZW9mIGUmJiFlLmdldE1vbnRoKXJldHVybiIiOyJzdHJpbmciIT10eXBlb2YgdD9pPVt0aGlzLnNldHRpbmdzLmRhdGVGb3JtYXQsdGhpcy5zZXR0aW5ncy50aW1lRm9ybWF0XTooKGk9dC5zcGxpdCgifCIpKVswXT1pWzBdLnRyaW0oKSxpWzFdPTE8aS5sZW5ndGg/aVsxXS50cmltKCk6dGhpcy5zZXR0aW5ncy50aW1lRm9ybWF0KTsiaDEyIj09PWlbMV0mJihpWzFdPSJoOm0gcG0iKTsiaDI0Ij09PWlbMV0mJihpWzFdPSJoMjQ6bSIpO3JldHVybiB0aGlzLmZvcm1hdERhdGUoZSxpWzBdKSsiICIrdGhpcy5mb3JtYXRUaW1lKGUsaVsxXSl9LHN0cmlwVGFnczpmdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiBlO3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJudW1iZXIiOmJyZWFrO2Nhc2Uic3RyaW5nIjplPVN0cmluZyhlKS5yZXBsYWNlKC88KD86W14+PV18PSdbXiddKid8PSJbXiJdKiJ8PVteJyJdW15ccz5dKikqPi9naSwiIik7YnJlYWs7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkoZSkpe2U9Zy5leHRlbmQoITAsW10sZSk7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT10aGlzLnN0cmlwVGFncyhlW3RdKX1lbHNlIGZvcih2YXIgdCBpbiBlPWcuZXh0ZW5kKCEwLHt9LGUpKWVbdF09dGhpcy5zdHJpcFRhZ3MoZVt0XSl9cmV0dXJuIGV9LGVuY29kZVRhZ3M6bixkZWNvZGVUYWdzOmZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIGU7c3dpdGNoKHR5cGVvZiBlKXtjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJzdHJpbmciOmU9U3RyaW5nKGUpLnJlcGxhY2UoLyZndDsvZywiPiIpLnJlcGxhY2UoLyZsdDsvZywiPCIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpO2JyZWFrO2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGUpKXtlPWcuZXh0ZW5kKCEwLFtdLGUpO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5kZWNvZGVUYWdzKGVbdF0pfWVsc2UgZm9yKHZhciB0IGluIGU9Zy5leHRlbmQoITAse30sZSkpZVt0XT10aGlzLmRlY29kZVRhZ3MoZVt0XSl9cmV0dXJuIGV9LGVzY2FwZUlkOmZ1bmN0aW9uKGUpe3JldHVybiIiPT09ZXx8bnVsbD09ZT8iIjpTdHJpbmcoZSkucmVwbGFjZSgvKFs7JixcLlwrXCpcfidgOiJcIVxeIyQlQFxbXF1cKFwpPTw+XHxcLz8ge31cXF0pL2csIlxcJDEiKX0sYmFzZTY0ZW5jb2RlOmZ1bmN0aW9uKGUpe3ZhciB0LGkscyxuLGEscixsLG89IiIsZD0wLHU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtlPWZ1bmN0aW9uKGUpe2U9U3RyaW5nKGUpLnJlcGxhY2UoL1xyXG4vZywiXG4iKTtmb3IodmFyIHQ9IiIsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcz1lLmNoYXJDb2RlQXQoaSk7czwxMjg/dCs9U3RyaW5nLmZyb21DaGFyQ29kZShzKTooMTI3PHMmJnM8MjA0OD90Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHM+PjZ8MTkyKToodCs9U3RyaW5nLmZyb21DaGFyQ29kZShzPj4xMnwyMjQpLHQrPVN0cmluZy5mcm9tQ2hhckNvZGUocz4+NiY2M3wxMjgpKSx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDYzJnN8MTI4KSl9cmV0dXJuIHR9KGUpO2Zvcig7ZDxlLmxlbmd0aDspdD1lLmNoYXJDb2RlQXQoZCsrKSxpPWUuY2hhckNvZGVBdChkKyspLHM9ZS5jaGFyQ29kZUF0KGQrKyksbj10Pj4yLGE9KDMmdCk8PDR8aT4+NCxyPSgxNSZpKTw8MnxzPj42LGw9NjMmcyxpc05hTihpKT9yPWw9NjQ6aXNOYU4ocykmJihsPTY0KSxvPW8rdS5jaGFyQXQobikrdS5jaGFyQXQoYSkrdS5jaGFyQXQocikrdS5jaGFyQXQobCk7cmV0dXJuIG99LGJhc2U2NGRlY29kZTpmdW5jdGlvbihlKXt2YXIgdCxpLHMsbixhLHIsbCxvPSIiLGQ9MCx1PSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7ZT1lLnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCIiKTtmb3IoO2Q8ZS5sZW5ndGg7KW49dS5pbmRleE9mKGUuY2hhckF0KGQrKykpLGE9dS5pbmRleE9mKGUuY2hhckF0KGQrKykpLHI9dS5pbmRleE9mKGUuY2hhckF0KGQrKykpLGw9dS5pbmRleE9mKGUuY2hhckF0KGQrKykpLHQ9bjw8MnxhPj40LGk9KDE1JmEpPDw0fHI+PjIscz0oMyZyKTw8NnxsLG8rPVN0cmluZy5mcm9tQ2hhckNvZGUodCksNjQhPT1yJiYobys9U3RyaW5nLmZyb21DaGFyQ29kZShpKSksNjQhPT1sJiYobys9U3RyaW5nLmZyb21DaGFyQ29kZShzKSk7cmV0dXJuIG89ZnVuY3Rpb24oZSl7dmFyIHQsaSxzPSIiLG49MCxhPTA7Zm9yKDtuPGUubGVuZ3RoOykoYT1lLmNoYXJDb2RlQXQobikpPDEyOD8ocys9U3RyaW5nLmZyb21DaGFyQ29kZShhKSxuKyspOjE5MTxhJiZhPDIyND8odD1lLmNoYXJDb2RlQXQobisxKSxzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZhKTw8Nnw2MyZ0KSxuKz0yKToodD1lLmNoYXJDb2RlQXQobisxKSxpPWUuY2hhckNvZGVBdChuKzIpLHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1JmEpPDwxMnwoNjMmdCk8PDZ8NjMmaSksbis9Myk7cmV0dXJuIHN9KG8pfSxtZDU6ZnVuY3Rpb24oZSl7dmFyIGE9MDtmdW5jdGlvbiB0KGUpe3JldHVybiByKGwobihlKSw4KmUubGVuZ3RoKSl9ZnVuY3Rpb24gaShlKXtmb3IodmFyIHQsaT1hPyIwMTIzNDU2Nzg5QUJDREVGIjoiMDEyMzQ1Njc4OWFiY2RlZiIscz0iIixuPTA7bjxlLmxlbmd0aDtuKyspdD1lLmNoYXJDb2RlQXQobikscys9aS5jaGFyQXQodD4+PjQmMTUpK2kuY2hhckF0KDE1JnQpO3JldHVybiBzfWZ1bmN0aW9uIHMoZSl7Zm9yKHZhciB0LGkscz0iIixuPS0xOysrbjxlLmxlbmd0aDspdD1lLmNoYXJDb2RlQXQobiksaT1uKzE8ZS5sZW5ndGg/ZS5jaGFyQ29kZUF0KG4rMSk6MCw1NTI5Njw9dCYmdDw9NTYzMTkmJjU2MzIwPD1pJiZpPD01NzM0MyYmKHQ9NjU1MzYrKCgxMDIzJnQpPDwxMCkrKDEwMjMmaSksbisrKSx0PD0xMjc/cys9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTp0PD0yMDQ3P3MrPVN0cmluZy5mcm9tQ2hhckNvZGUoMTkyfHQ+Pj42JjMxLDEyOHw2MyZ0KTp0PD02NTUzNT9zKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDIyNHx0Pj4+MTImMTUsMTI4fHQ+Pj42JjYzLDEyOHw2MyZ0KTp0PD0yMDk3MTUxJiYocys9U3RyaW5nLmZyb21DaGFyQ29kZSgyNDB8dD4+PjE4JjcsMTI4fHQ+Pj4xMiY2MywxMjh8dD4+PjYmNjMsMTI4fDYzJnQpKTtyZXR1cm4gc31mdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD1BcnJheShlLmxlbmd0aD4+MiksaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV09MDtmb3IoaT0wO2k8OCplLmxlbmd0aDtpKz04KXRbaT4+NV18PSgyNTUmZS5jaGFyQ29kZUF0KGkvOCkpPDxpJTMyO3JldHVybiB0fWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PSIiLGk9MDtpPDMyKmUubGVuZ3RoO2krPTgpdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW2k+PjVdPj4+aSUzMiYyNTUpO3JldHVybiB0fWZ1bmN0aW9uIGwoZSx0KXtlW3Q+PjVdfD0xMjg8PHQlMzIsZVsxNCsodCs2ND4+Pjk8PDQpXT10O2Zvcih2YXIgaT0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxuPS0xNzMyNTg0MTk0LGE9MjcxNzMzODc4LHI9MDtyPGUubGVuZ3RoO3IrPTE2KXt2YXIgbD1pLG89cyxkPW4sdT1hO3M9ZihzPWYocz1mKHM9ZihzPXAocz1wKHM9cChzPXAocz1oKHM9aChzPWgocz1oKHM9YyhzPWMocz1jKHM9YyhzLG49YyhuLGE9YyhhLGk9YyhpLHMsbixhLGVbciswXSw3LC02ODA4NzY5MzYpLHMsbixlW3IrMV0sMTIsLTM4OTU2NDU4NiksaSxzLGVbcisyXSwxNyw2MDYxMDU4MTkpLGEsaSxlW3IrM10sMjIsLTEwNDQ1MjUzMzApLG49YyhuLGE9YyhhLGk9YyhpLHMsbixhLGVbcis0XSw3LC0xNzY0MTg4OTcpLHMsbixlW3IrNV0sMTIsMTIwMDA4MDQyNiksaSxzLGVbcis2XSwxNywtMTQ3MzIzMTM0MSksYSxpLGVbcis3XSwyMiwtNDU3MDU5ODMpLG49YyhuLGE9YyhhLGk9YyhpLHMsbixhLGVbcis4XSw3LDE3NzAwMzU0MTYpLHMsbixlW3IrOV0sMTIsLTE5NTg0MTQ0MTcpLGkscyxlW3IrMTBdLDE3LC00MjA2MyksYSxpLGVbcisxMV0sMjIsLTE5OTA0MDQxNjIpLG49YyhuLGE9YyhhLGk9YyhpLHMsbixhLGVbcisxMl0sNywxODA0NjAzNjgyKSxzLG4sZVtyKzEzXSwxMiwtNDAzNDExMDEpLGkscyxlW3IrMTRdLDE3LC0xNTAyMDAyMjkwKSxhLGksZVtyKzE1XSwyMiwxMjM2NTM1MzI5KSxuPWgobixhPWgoYSxpPWgoaSxzLG4sYSxlW3IrMV0sNSwtMTY1Nzk2NTEwKSxzLG4sZVtyKzZdLDksLTEwNjk1MDE2MzIpLGkscyxlW3IrMTFdLDE0LDY0MzcxNzcxMyksYSxpLGVbciswXSwyMCwtMzczODk3MzAyKSxuPWgobixhPWgoYSxpPWgoaSxzLG4sYSxlW3IrNV0sNSwtNzAxNTU4NjkxKSxzLG4sZVtyKzEwXSw5LDM4MDE2MDgzKSxpLHMsZVtyKzE1XSwxNCwtNjYwNDc4MzM1KSxhLGksZVtyKzRdLDIwLC00MDU1Mzc4NDgpLG49aChuLGE9aChhLGk9aChpLHMsbixhLGVbcis5XSw1LDU2ODQ0NjQzOCkscyxuLGVbcisxNF0sOSwtMTAxOTgwMzY5MCksaSxzLGVbciszXSwxNCwtMTg3MzYzOTYxKSxhLGksZVtyKzhdLDIwLDExNjM1MzE1MDEpLG49aChuLGE9aChhLGk9aChpLHMsbixhLGVbcisxM10sNSwtMTQ0NDY4MTQ2NykscyxuLGVbcisyXSw5LC01MTQwMzc4NCksaSxzLGVbcis3XSwxNCwxNzM1MzI4NDczKSxhLGksZVtyKzEyXSwyMCwtMTkyNjYwNzczNCksbj1wKG4sYT1wKGEsaT1wKGkscyxuLGEsZVtyKzVdLDQsLTM3ODU1OCkscyxuLGVbcis4XSwxMSwtMjAyMjU3NDQ2MyksaSxzLGVbcisxMV0sMTYsMTgzOTAzMDU2MiksYSxpLGVbcisxNF0sMjMsLTM1MzA5NTU2KSxuPXAobixhPXAoYSxpPXAoaSxzLG4sYSxlW3IrMV0sNCwtMTUzMDk5MjA2MCkscyxuLGVbcis0XSwxMSwxMjcyODkzMzUzKSxpLHMsZVtyKzddLDE2LC0xNTU0OTc2MzIpLGEsaSxlW3IrMTBdLDIzLC0xMDk0NzMwNjQwKSxuPXAobixhPXAoYSxpPXAoaSxzLG4sYSxlW3IrMTNdLDQsNjgxMjc5MTc0KSxzLG4sZVtyKzBdLDExLC0zNTg1MzcyMjIpLGkscyxlW3IrM10sMTYsLTcyMjUyMTk3OSksYSxpLGVbcis2XSwyMyw3NjAyOTE4OSksbj1wKG4sYT1wKGEsaT1wKGkscyxuLGEsZVtyKzldLDQsLTY0MDM2NDQ4NykscyxuLGVbcisxMl0sMTEsLTQyMTgxNTgzNSksaSxzLGVbcisxNV0sMTYsNTMwNzQyNTIwKSxhLGksZVtyKzJdLDIzLC05OTUzMzg2NTEpLG49ZihuLGE9ZihhLGk9ZihpLHMsbixhLGVbciswXSw2LC0xOTg2MzA4NDQpLHMsbixlW3IrN10sMTAsMTEyNjg5MTQxNSksaSxzLGVbcisxNF0sMTUsLTE0MTYzNTQ5MDUpLGEsaSxlW3IrNV0sMjEsLTU3NDM0MDU1KSxuPWYobixhPWYoYSxpPWYoaSxzLG4sYSxlW3IrMTJdLDYsMTcwMDQ4NTU3MSkscyxuLGVbciszXSwxMCwtMTg5NDk4NjYwNiksaSxzLGVbcisxMF0sMTUsLTEwNTE1MjMpLGEsaSxlW3IrMV0sMjEsLTIwNTQ5MjI3OTkpLG49ZihuLGE9ZihhLGk9ZihpLHMsbixhLGVbcis4XSw2LDE4NzMzMTMzNTkpLHMsbixlW3IrMTVdLDEwLC0zMDYxMTc0NCksaSxzLGVbcis2XSwxNSwtMTU2MDE5ODM4MCksYSxpLGVbcisxM10sMjEsMTMwOTE1MTY0OSksbj1mKG4sYT1mKGEsaT1mKGkscyxuLGEsZVtyKzRdLDYsLTE0NTUyMzA3MCkscyxuLGVbcisxMV0sMTAsLTExMjAyMTAzNzkpLGkscyxlW3IrMl0sMTUsNzE4Nzg3MjU5KSxhLGksZVtyKzldLDIxLC0zNDM0ODU1NTEpLGk9ZyhpLGwpLHM9ZyhzLG8pLG49ZyhuLGQpLGE9ZyhhLHUpfXJldHVybiBBcnJheShpLHMsbixhKX1mdW5jdGlvbiBvKGUsdCxpLHMsbixhKXtyZXR1cm4gZyhmdW5jdGlvbihlLHQpe3JldHVybiBlPDx0fGU+Pj4zMi10fShnKGcodCxlKSxnKHMsYSkpLG4pLGkpfWZ1bmN0aW9uIGMoZSx0LGkscyxuLGEscil7cmV0dXJuIG8odCZpfH50JnMsZSx0LG4sYSxyKX1mdW5jdGlvbiBoKGUsdCxpLHMsbixhLHIpe3JldHVybiBvKHQmc3xpJn5zLGUsdCxuLGEscil9ZnVuY3Rpb24gcChlLHQsaSxzLG4sYSxyKXtyZXR1cm4gbyh0XmlecyxlLHQsbixhLHIpfWZ1bmN0aW9uIGYoZSx0LGkscyxuLGEscil7cmV0dXJuIG8oaV4odHx+cyksZSx0LG4sYSxyKX1mdW5jdGlvbiBnKGUsdCl7dmFyIGk9KDY1NTM1JmUpKyg2NTUzNSZ0KTtyZXR1cm4oZT4+MTYpKyh0Pj4xNikrKGk+PjE2KTw8MTZ8NjU1MzUmaX1yZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGkodChzKGUpKSl9KGUpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCxpLHMpe3ZhciBuPWcoZSkud2lkdGgoKSxhPWcoZSkuaGVpZ2h0KCk7aWYoIWV8fCF0KXJldHVybiB2b2lkIGNvbnNvbGUubG9nKCJFUlJPUjogQ2Fubm90IGRvIHRyYW5zaXRpb24gd2hlbiBvbmUgb2YgdGhlIGRpdnMgaXMgbnVsbCIpO3N3aXRjaChlLnBhcmVudE5vZGUuc3R5bGUuY3NzVGV4dCs9InBlcnNwZWN0aXZlOiA5MDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsiLGUuc3R5bGUuY3NzVGV4dCs9IjsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAxMDE5OyBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4iLHQuc3R5bGUuY3NzVGV4dCs9IjsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAxMDIwOyBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4iLGkpe2Nhc2Uic2xpZGUtbGVmdCI6ZS5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdC5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgiK24rInB4LCAwLCAwKSIsZyh0KS5zaG93KCksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApIixlLnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0iK24rInB4LCAwLCAwKSJ9LDEpO2JyZWFrO2Nhc2Uic2xpZGUtcmlnaHQiOmUuc3R5bGUuY3NzVGV4dCs9Im92ZXJmbG93OiBoaWRkZW47IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkiLHQuc3R5bGUuY3NzVGV4dCs9Im92ZXJmbG93OiBoaWRkZW47IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLSIrbisicHgsIDAsIDApIixnKHQpLnNob3coKSx3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3Quc3R5bGUuY3NzVGV4dCs9InRyYW5zaXRpb246IDAuNXM7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwLCAwKSIsZS5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41czsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgiK24rInB4LCAwLCAwKSJ9LDEpO2JyZWFrO2Nhc2Uic2xpZGUtZG93biI6ZS5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgei1pbmRleDogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdC5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgei1pbmRleDogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSIsZyh0KS5zaG93KCksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApIixlLnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsICIrYSsicHgsIDApIn0sMSk7YnJlYWs7Y2FzZSJzbGlkZS11cCI6ZS5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdC5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAiK2ErInB4LCAwKSIsZyh0KS5zaG93KCksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApIixlLnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApIn0sMSk7YnJlYWs7Y2FzZSJmbGlwLWxlZnQiOmUuc3R5bGUuY3NzVGV4dCs9Im92ZXJmbG93OiBoaWRkZW47IHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKSIsdC5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiByb3RhdGVZKC0xODBkZWcpIixnKHQpLnNob3coKSx3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3Quc3R5bGUuY3NzVGV4dCs9InRyYW5zaXRpb246IDAuNXM7IHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKSIsZS5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41czsgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykifSwxKTticmVhaztjYXNlImZsaXAtcmlnaHQiOmUuc3R5bGUuY3NzVGV4dCs9Im92ZXJmbG93OiBoaWRkZW47IHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKSIsdC5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykiLGcodCkuc2hvdygpLHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41czsgdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpIixlLnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHJvdGF0ZVkoLTE4MGRlZykifSwxKTticmVhaztjYXNlImZsaXAtZG93biI6ZS5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIix0LnN0eWxlLmNzc1RleHQrPSJvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSIsZyh0KS5zaG93KCksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZykiLGUuc3R5bGUuY3NzVGV4dCs9InRyYW5zaXRpb246IDAuNXM7IHRyYW5zZm9ybTogcm90YXRlWCgtMTgwZGVnKSJ9LDEpO2JyZWFrO2Nhc2UiZmxpcC11cCI6ZS5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIix0LnN0eWxlLmNzc1RleHQrPSJvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2Zvcm06IHJvdGF0ZVgoLTE4MGRlZykiLGcodCkuc2hvdygpLHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41czsgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIixlLnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSJ9LDEpO2JyZWFrO2Nhc2UicG9wLWluIjplLnN0eWxlLmNzc1RleHQrPSJvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApIix0LnN0eWxlLmNzc1RleHQrPSJvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB0cmFuc2Zvcm06IHNjYWxlKC44KTsgb3BhY2l0eTogMDsiLGcodCkuc2hvdygpLHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41czsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMTsiLGUuc3R5bGUuY3NzVGV4dCs9InRyYW5zaXRpb246IDAuNXM7In0sMSk7YnJlYWs7Y2FzZSJwb3Atb3V0IjplLnN0eWxlLmNzc1RleHQrPSJvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAxOyIsdC5zdHlsZS5jc3NUZXh0Kz0ib3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsgb3BhY2l0eTogMDsiLGcodCkuc2hvdygpLHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41czsgb3BhY2l0eTogMTsiLGUuc3R5bGUuY3NzVGV4dCs9InRyYW5zaXRpb246IDAuNXM7IHRyYW5zZm9ybTogc2NhbGUoMS43KTsgb3BhY2l0eTogMDsifSwxKTticmVhaztkZWZhdWx0OmUuc3R5bGUuY3NzVGV4dCs9Im92ZXJmbG93OiBoaWRkZW47IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkiLHQuc3R5bGUuY3NzVGV4dCs9Im92ZXJmbG93OiBoaWRkZW47IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyBvcGFjaXR5OiAwOyIsZyh0KS5zaG93KCksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnN0eWxlLmNzc1RleHQrPSJ0cmFuc2l0aW9uOiAwLjVzOyBvcGFjaXR5OiAxOyIsZS5zdHlsZS5jc3NUZXh0Kz0idHJhbnNpdGlvbjogMC41cyJ9LDEpfXNldFRpbWVvdXQoZnVuY3Rpb24oKXsic2xpZGUtZG93biI9PT1pJiYoZyhlKS5jc3MoInotaW5kZXgiLCIxMDE5IiksZyh0KS5jc3MoInotaW5kZXgiLCIxMDIwIikpLHQmJmcodCkuY3NzKHtvcGFjaXR5OiIxIn0pLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCh7dHJhbnNpdGlvbjoiIix0cmFuc2Zvcm06IiJ9KSksZSYmZyhlKS5jc3Moe29wYWNpdHk6IjEifSkuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOiIiLHRyYW5zZm9ybToiIn0pKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmcygpfSw1MDApfSxsb2NrOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz17fTsib2JqZWN0Ij09dHlwZW9mIHQ/cz10OihzLm1zZz10LHMuc3Bpbm5lcj1pKTtzLm1zZ3x8MD09PXMubXNnfHwocy5tc2c9IiIpO3cydXRpbHMudW5sb2NrKGUpLGcoZSkucHJlcGVuZCgnPGRpdiBjbGFzcz0idzJ1aS1sb2NrIj48L2Rpdj48ZGl2IGNsYXNzPSJ3MnVpLWxvY2stbXNnIj48L2Rpdj4nKTt2YXIgbj1nKGUpLmZpbmQoIi53MnVpLWxvY2siKSxhPWcoZSkuZmluZCgiLncydWktbG9jay1tc2ciKTtzLm1zZ3x8YS5jc3MoeyJiYWNrZ3JvdW5kLWNvbG9yIjoidHJhbnNwYXJlbnQiLGJvcmRlcjoiMHB4In0pOyEwPT09cy5zcGlubmVyJiYocy5tc2c9JzxkaXYgY2xhc3M9IncydWktc3Bpbm5lciIgJysocy5tc2c/IiI6J3N0eWxlPSJ3aWR0aDogMzVweDsgaGVpZ2h0OiAzNXB4IicpKyI+PC9kaXY+IitzLm1zZyk7bnVsbCE9cy5vcGFjaXR5JiZuLmNzcygib3BhY2l0eSIscy5vcGFjaXR5KTsiZnVuY3Rpb24iPT10eXBlb2Ygbi5mYWRlSW4/KG4uZmFkZUluKDIwMCksYS5odG1sKHMubXNnKS5mYWRlSW4oMjAwKSk6KG4uc2hvdygpLGEuaHRtbChzLm1zZykuc2hvdygwKSl9LHVubG9jazpmdW5jdGlvbihlLHQpe2godCk/KGcoZSkuZmluZCgiLncydWktbG9jayIpLmZhZGVPdXQodCksc2V0VGltZW91dChmdW5jdGlvbigpe2coZSkuZmluZCgiLncydWktbG9jayIpLnJlbW92ZSgpLGcoZSkuZmluZCgiLncydWktbG9jay1tc2ciKS5yZW1vdmUoKX0sdCkpOihnKGUpLmZpbmQoIi53MnVpLWxvY2siKS5yZW1vdmUoKSxnKGUpLmZpbmQoIi53MnVpLWxvY2stbXNnIikucmVtb3ZlKCkpfSxtZXNzYWdlOmZ1bmN0aW9uKHMsZSl7dmFyIHQsbixhPXRoaXM7ZygpLncydGFnKCksZT1lfHx7d2lkdGg6MjAwLGhlaWdodDoxMDB9O251bGw9PWUub24mJmcuZXh0ZW5kKGUsdzJ1dGlscy5ldmVudCk7bnVsbD09ZS53aWR0aCYmKGUud2lkdGg9MjAwKTtudWxsPT1lLmhlaWdodCYmKGUuaGVpZ2h0PTEwMCk7dmFyIGk9cGFyc2VJbnQoZyhzLmJveCkud2lkdGgoKSkscj1wYXJzZUludChnKHMuYm94KS5oZWlnaHQoKSksbD1wYXJzZUludChnKHMuYm94KS5maW5kKHMudGl0bGUpLmNzcygiaGVpZ2h0Iil8fDApO2Uud2lkdGg+aSYmKGUud2lkdGg9aS0xMCk7ZS5oZWlnaHQ+ci1sJiYoZS5oZWlnaHQ9ci0xMC1sKTtlLm9yaWdpbmFsV2lkdGg9ZS53aWR0aCxlLm9yaWdpbmFsSGVpZ2h0PWUuaGVpZ2h0LHBhcnNlSW50KGUud2lkdGgpPDAmJihlLndpZHRoPWkrZS53aWR0aCk7cGFyc2VJbnQoZS53aWR0aCk8MTAmJihlLndpZHRoPTEwKTtwYXJzZUludChlLmhlaWdodCk8MCYmKGUuaGVpZ2h0PXIrZS5oZWlnaHQtbCk7cGFyc2VJbnQoZS5oZWlnaHQpPDEwJiYoZS5oZWlnaHQ9MTApO251bGw9PWUuaGlkZU9uQ2xpY2smJihlLmhpZGVPbkNsaWNrPSExKTt2YXIgbz1nKHMuYm94KS5kYXRhKCJvcHRpb25zIil8fHt9OyhudWxsPT1lLndpZHRofHxlLndpZHRoPm8ud2lkdGgtMTApJiYoZS53aWR0aD1vLndpZHRoLTEwKTsobnVsbD09ZS5oZWlnaHR8fGUuaGVpZ2h0Pm8uaGVpZ2h0LWwtNSkmJihlLmhlaWdodD1vLmhlaWdodC1sLTUpO2Uub3JpZ2luYWxIZWlnaHQ8MCYmKGUuaGVpZ2h0PXIrZS5vcmlnaW5hbEhlaWdodC1sKTtlLm9yaWdpbmFsV2lkdGg8MCYmKGUud2lkdGg9aSsyKmUub3JpZ2luYWxXaWR0aCk7dmFyIGQ9ZyhzLmJveCkuZmluZChzLnRpdGxlKSx1PWcocy5ib3gpLmZpbmQoIi53MnVpLW1lc3NhZ2UudzJ1aS1jbG9zaW5nIik7MDxnKHMuYm94KS5maW5kKCIudzJ1aS1tZXNzYWdlLncydWktY2xvc2luZyIpLmxlbmd0aCYmKGNsZWFyVGltZW91dCh0KSxmKHUsdS5kYXRhKCJvcHRpb25zIil8fHt9KSk7dmFyIGM9ZyhzLmJveCkuZmluZCgiLncydWktbWVzc2FnZSIpLmxlbmd0aDtpZigiIj09PWcudHJpbShlLmh0bWwpJiYiIj09PWcudHJpbShlLmJvZHkpJiYiIj09PWcudHJpbShlLmJ1dHRvbnMpKXtpZigwPT09YylyZXR1cm47dmFyIGg9ZyhzLmJveCkuZmluZCgiI3cydWktbWVzc2FnZSIrKGMtMSkpO2U9aC5kYXRhKCJvcHRpb25zIil8fHt9O2lmKCEwPT09KG49ZS50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjbG9zZSIsdGFyZ2V0OiJzZWxmIn0pKS5pc0NhbmNlbGxlZClyZXR1cm47aC5jc3ModzJ1dGlscy5jc3NQcmVmaXgoe3RyYW5zaXRpb246IjAuMTVzIix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLSIrZS5oZWlnaHQrInB4KSJ9KSkuYWRkQ2xhc3MoIncydWktY2xvc2luZyIpLDE9PT1jP3RoaXMudW5sb2NrJiYocy5wYXJhbT90aGlzLnVubG9jayhzLnBhcmFtLDE1MCk6dGhpcy51bmxvY2soMTUwKSk6ZyhzLmJveCkuZmluZCgiI3cydWktbWVzc2FnZSIrKGMtMikpLmNzcygiei1pbmRleCIsMTUwMCksdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZihoLGUpfSwxNTApfWVsc2V7IiI9PT1nLnRyaW0oZS5ib2R5KSYmIiI9PT1nLnRyaW0oZS5idXR0b25zKXx8KGUuaHRtbD0nPGRpdiBjbGFzcz0idzJ1aS1tZXNzYWdlLWJvZHkiPicrKGUuYm9keXx8IiIpKyc8L2Rpdj48ZGl2IGNsYXNzPSJ3MnVpLW1lc3NhZ2UtYnV0dG9ucyI+JysoZS5idXR0b25zfHwiIikrIjwvZGl2PiIpLGcocy5ib3gpLmZpbmQoIi53MnVpLW1lc3NhZ2UiKS5jc3MoInotaW5kZXgiLDEzOTApLGQuZGF0YSgib2xkLXotaW5kZXgiLGQuY3NzKCJ6LWluZGV4IikpLGQuY3NzKCJ6LWluZGV4IiwxNTAxKSxnKHMuYm94KS5maW5kKHMuYm9keSkuYmVmb3JlKCc8ZGl2IGlkPSJ3MnVpLW1lc3NhZ2UnK2MrJyIgb25tb3VzZWRvd249ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyIgICAgY2xhc3M9IncydWktbWVzc2FnZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IHotaW5kZXg6IDE1MDA7ICcrKDA9PT1kLmxlbmd0aD8idG9wOiAwcHg7IjoidG9wOiAiK3cydXRpbHMuZ2V0U2l6ZShkLCJoZWlnaHQiKSsicHg7IikrKG51bGwhPWUud2lkdGg/IndpZHRoOiAiK2Uud2lkdGgrInB4OyBsZWZ0OiAiKyhpLWUud2lkdGgpLzIrInB4OyI6ImxlZnQ6IDEwcHg7IHJpZ2h0OiAxMHB4OyIpKyhudWxsIT1lLmhlaWdodD8iaGVpZ2h0OiAiK2UuaGVpZ2h0KyJweDsiOiJib3R0b206IDZweDsiKSt3MnV0aWxzLmNzc1ByZWZpeCgidHJhbnNpdGlvbiIsIi4zcyIsITApKyciJysoITA9PT1lLmhpZGVPbkNsaWNrP3MucGFyYW0/J29uY2xpY2s9Iicrcy5wYXRoKyIubWVzc2FnZSgnIitzLnBhcmFtKyInKTtcIiI6J29uY2xpY2s9Iicrcy5wYXRoKycubWVzc2FnZSgpOyInOiIiKSsiPjwvZGl2PiIpLGcocy5ib3gpLmZpbmQoIiN3MnVpLW1lc3NhZ2UiK2MpLmRhdGEoIm9wdGlvbnMiLGUpLmRhdGEoInByZXZfZm9jdXMiLGcoIjpmb2N1cyIpKTt2YXIgcD1nKHMuYm94KS5maW5kKCIjdzJ1aS1tZXNzYWdlIitjKS5jc3MoImRpc3BsYXkiKTtpZihnKHMuYm94KS5maW5kKCIjdzJ1aS1tZXNzYWdlIitjKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoe3RyYW5zZm9ybToibm9uZSI9PT1wPyJ0cmFuc2xhdGVZKC0iK2UuaGVpZ2h0KyJweCkiOiJ0cmFuc2xhdGVZKDBweCkifSkpLCJub25lIj09PXApe2lmKGcocy5ib3gpLmZpbmQoIiN3MnVpLW1lc3NhZ2UiK2MpLnNob3coKS5odG1sKGUuaHRtbCksZS5ib3g9ZyhzLmJveCkuZmluZCgiI3cydWktbWVzc2FnZSIrYyksITA9PT0obj1lLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im9wZW4iLHRhcmdldDoic2VsZiJ9KSkuaXNDYW5jZWxsZWQpcmV0dXJuIGQuY3NzKCJ6LWluZGV4IixkLmRhdGEoIm9sZC16LWluZGV4IikpLHZvaWQgZyhzLmJveCkuZmluZCgiI3cydWktbWVzc2FnZSIrYykucmVtb3ZlKCk7c2V0VGltZW91dChmdW5jdGlvbigpe2cocy5ib3gpLmZpbmQoIiN3MnVpLW1lc3NhZ2UiK2MpLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCh7dHJhbnNmb3JtOiJub25lIj09PXA/InRyYW5zbGF0ZVkoMHB4KSI6InRyYW5zbGF0ZVkoLSIrZS5oZWlnaHQrInB4KSJ9KSl9LDEpLDA9PT1jJiZ0aGlzLmxvY2smJihzLnBhcmFtP3RoaXMubG9jayhzLnBhcmFtKTp0aGlzLmxvY2soKSksc2V0VGltZW91dChmdW5jdGlvbigpe2cocy5ib3gpLmZpbmQoIiN3MnVpLW1lc3NhZ2UiK2MpLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCh7dHJhbnNpdGlvbjoiMHMifSkpLGUudHJpZ2dlcihnLmV4dGVuZChuLHtwaGFzZToiYWZ0ZXIifSkpfSwzNTApfX1mdW5jdGlvbiBmKGUsdCl7aWYobnVsbD09biYmITA9PT0obj10LnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im9wZW4iLHRhcmdldDoic2VsZiJ9KSkuaXNDYW5jZWxsZWQpcmV0dXJuIGQuY3NzKCJ6LWluZGV4IixkLmRhdGEoIm9sZC16LWluZGV4IikpLHZvaWQgZyhzLmJveCkuZmluZCgiI3cydWktbWVzc2FnZSIrYykucmVtb3ZlKCk7dmFyIGk9ZS5kYXRhKCJwcmV2X2ZvY3VzIik7ZS5yZW1vdmUoKSxpJiYwPGkubGVuZ3RoP2kuZm9jdXMoKTphJiZhLmZvY3VzJiZhLmZvY3VzKCksZC5jc3MoInotaW5kZXgiLGQuZGF0YSgib2xkLXotaW5kZXgiKSksdC50cmlnZ2VyKGcuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSl9fSxuYXR1cmFsQ29tcGFyZTpmdW5jdGlvbihlLHQpe3ZhciBzLGksbj0xLGE9MCxyPTAsbD1TdHJpbmcuYWxwaGFiZXQ7ZnVuY3Rpb24gbyhlLHQsaSl7aWYoaSl7Zm9yKHM9dDsoaT1vKGUscykpPDc2JiY2NTxpOykrK3M7cmV0dXJuK2Uuc2xpY2UodC0xLHMpfXJldHVybi0xPChpPWwmJmwuaW5kZXhPZihlLmNoYXJBdCh0KSkpP2krNzY6KGk9ZS5jaGFyQ29kZUF0KHQpfHwwKTw0NXx8MTI3PGk/aTppPDQ2PzY1Omk8NDg/aS0xOmk8NTg/aSsxODppPDY1P2ktMTE6aTw5MT9pKzExOmk8OTc/aS0zNzppPDEyMz9pKzU6aS02M31pZigoZSs9IiIpIT0odCs9IiIpKWZvcig7bjspaWYoaT1vKGUsYSsrKSxuPW8odCxyKyspLGk8NzYmJm48NzYmJjY2PGkmJjY2PG4mJihpPW8oZSxhLGEpLG49byh0LHIsYT1zKSxyPXMpLGkhPW4pcmV0dXJuIGk8bj8tMToxO3JldHVybiAwfSxsYW5nOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2V0dGluZ3MucGhyYXNlc1tlXTtyZXR1cm4gbnVsbD09dD9lOnR9LGxvY2FsZTpmdW5jdGlvbihzLG4pe3M9c3x8ImVuLXVzIjtpZigic3RyaW5nIiE9dHlwZW9mIHMpcmV0dXJuIHZvaWQodzJ1dGlscy5zZXR0aW5ncz1nLmV4dGVuZCghMCx3MnV0aWxzLnNldHRpbmdzLHMpKTs1PT09cy5sZW5ndGgmJihzPSJsb2NhbGUvIitzKyIuanNvbiIpO3cydXRpbHMuc2V0dGluZ3MucGhyYXNlcz17fSxnLmFqYXgoe3VybDpzLHR5cGU6IkdFVCIsZGF0YVR5cGU6IkpTT04iLHN1Y2Nlc3M6ZnVuY3Rpb24oZSx0LGkpe3cydXRpbHMuc2V0dGluZ3M9Zy5leHRlbmQoITAsdzJ1dGlscy5zZXR0aW5ncyxlKSwiZnVuY3Rpb24iPT10eXBlb2YgbiYmbigpfSxlcnJvcjpmdW5jdGlvbihlLHQsaSl7Y29uc29sZS5sb2coIkVSUk9SOiBDYW5ub3QgbG9hZCBsb2NhbGUgIitzKX19KX0sZ2V0U2l6ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWcoZSkscz17bGVmdDpwYXJzZUludChpLmNzcygiYm9yZGVyLWxlZnQtd2lkdGgiKSl8fDAscmlnaHQ6cGFyc2VJbnQoaS5jc3MoImJvcmRlci1yaWdodC13aWR0aCIpKXx8MCx0b3A6cGFyc2VJbnQoaS5jc3MoImJvcmRlci10b3Atd2lkdGgiKSl8fDAsYm90dG9tOnBhcnNlSW50KGkuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIikpfHwwfSxuPXtsZWZ0OnBhcnNlSW50KGkuY3NzKCJtYXJnaW4tbGVmdCIpKXx8MCxyaWdodDpwYXJzZUludChpLmNzcygibWFyZ2luLXJpZ2h0IikpfHwwLHRvcDpwYXJzZUludChpLmNzcygibWFyZ2luLXRvcCIpKXx8MCxib3R0b206cGFyc2VJbnQoaS5jc3MoIm1hcmdpbi1ib3R0b20iKSl8fDB9LGE9e2xlZnQ6cGFyc2VJbnQoaS5jc3MoInBhZGRpbmctbGVmdCIpKXx8MCxyaWdodDpwYXJzZUludChpLmNzcygicGFkZGluZy1yaWdodCIpKXx8MCx0b3A6cGFyc2VJbnQoaS5jc3MoInBhZGRpbmctdG9wIikpfHwwLGJvdHRvbTpwYXJzZUludChpLmNzcygicGFkZGluZy1ib3R0b20iKSl8fDB9O3N3aXRjaCh0KXtjYXNlInRvcCI6cmV0dXJuIHMudG9wK24udG9wK2EudG9wO2Nhc2UiYm90dG9tIjpyZXR1cm4gcy5ib3R0b20rbi5ib3R0b20rYS5ib3R0b207Y2FzZSJsZWZ0IjpyZXR1cm4gcy5sZWZ0K24ubGVmdCthLmxlZnQ7Y2FzZSJyaWdodCI6cmV0dXJuIHMucmlnaHQrbi5yaWdodCthLnJpZ2h0O2Nhc2Uid2lkdGgiOnJldHVybiBzLmxlZnQrcy5yaWdodCtuLmxlZnQrbi5yaWdodCthLmxlZnQrYS5yaWdodCtwYXJzZUludChpLndpZHRoKCkpO2Nhc2UiaGVpZ2h0IjpyZXR1cm4gcy50b3Arcy5ib3R0b20rbi50b3Arbi5ib3R0b20rYS50b3ArYS5ib3R0b20rcGFyc2VJbnQoaS5oZWlnaHQoKSk7Y2FzZSIrd2lkdGgiOnJldHVybiBzLmxlZnQrcy5yaWdodCtuLmxlZnQrbi5yaWdodCthLmxlZnQrYS5yaWdodDtjYXNlIitoZWlnaHQiOnJldHVybiBzLnRvcCtzLmJvdHRvbStuLnRvcCtuLmJvdHRvbSthLnRvcCthLmJvdHRvbX1yZXR1cm4gMH0sZ2V0U3RyV2lkdGg6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPSc8ZGl2IGlkPSJfdG1wX3dpZHRoIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IC05MDBweDsnKyh0fHwiIikrJyI+JytuKGUpKyI8L2Rpdj4iO3JldHVybiBnKCJib2R5IikuYXBwZW5kKHMpLGk9ZygiI190bXBfd2lkdGgiKS53aWR0aCgpLGcoIiNfdG1wX3dpZHRoIikucmVtb3ZlKCksaX0sc2Nyb2xsQmFyU2l6ZTpmdW5jdGlvbigpe2lmKGUuc2Nyb2xsQmFyU2l6ZSlyZXR1cm4gZS5zY3JvbGxCYXJTaXplO2coImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9Il9zY3JvbGxiYXJfd2lkdGgiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTMwMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IG92ZXJmbG93LXk6IHNjcm9sbDsiPiAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEyMHB4Ij4xPC9kaXY+PC9kaXY+JyksZS5zY3JvbGxCYXJTaXplPTEwMC1nKCIjX3Njcm9sbGJhcl93aWR0aCA+IGRpdiIpLndpZHRoKCksZygiI19zY3JvbGxiYXJfd2lkdGgiKS5yZW1vdmUoKSwwPD1TdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2VudCkuaW5kZXhPZigiTVNJRSIpJiYoZS5zY3JvbGxCYXJTaXplPWUuc2Nyb2xsQmFyU2l6ZS8yKTtyZXR1cm4gZS5zY3JvbGxCYXJTaXplfSxjaGVja05hbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmbnVsbCE9ZS5uYW1lP251bGw9PXcydWlbZS5uYW1lXT8hIXcydXRpbHMuaXNBbHBoYU51bWVyaWMoZS5uYW1lKXx8KGNvbnNvbGUubG9nKCdFUlJPUjogVGhlIHBhcmFtZXRlciAibmFtZSIgaGFzIHRvIGJlIGFscGhhLW51bWVyaWMgKGEteiwgMC05LCBkYXNoIGFuZCB1bmRlcnNjb3JlKS4gJyksITEpOihjb25zb2xlLmxvZygnRVJST1I6IFRoZSBwYXJhbWV0ZXIgIm5hbWUiIGlzIG5vdCB1bmlxdWUuIFRoZXJlIGFyZSBvdGhlciBvYmplY3RzIGFscmVhZHkgY3JlYXRlZCB3aXRoIHRoZSBzYW1lIG5hbWUgKG9iajogJytlLm5hbWUrIikuIiksITEpOihjb25zb2xlLmxvZygnRVJST1I6IFRoZSBwYXJhbWV0ZXIgIm5hbWUiIGlzIHJlcXVpcmVkIGJ1dCBub3Qgc3VwcGxpZWQgaW4gJCgpLicrdCsiKCkuIiksITEpfSxjaGVja1VuaXF1ZUlkOmZ1bmN0aW9uKGUsdCxpLHMpe2cuaXNBcnJheSh0KXx8KHQ9W3RdKTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmlkPT09ZSlyZXR1cm4gY29uc29sZS5sb2coJ0VSUk9SOiBUaGUgcGFyYW1ldGVyICJpZD0nK2UrJyIgaXMgbm90IHVuaXF1ZSB3aXRoaW4gdGhlIGN1cnJlbnQgJytpKyIuIChvYmo6ICIrcysiKSIpLCExO3JldHVybiEwfSxwYXJzZVJvdXRlOmZ1bmN0aW9uKGUpe3ZhciByPVtdLHQ9ZS5yZXBsYWNlKC9cL1woL2csIig/Oi8iKS5yZXBsYWNlKC9cKy9nLCJfX3BsdXNfXyIpLnJlcGxhY2UoLyhcLyk/KFwuKT86KFx3KykoPzooXCguKj9cKSkpPyhcPyk/L2csZnVuY3Rpb24oZSx0LGkscyxuLGEpe3JldHVybiByLnB1c2goe25hbWU6cyxvcHRpb25hbDohIWF9KSx0PXR8fCIiLChhPyIiOnQpKyIoPzoiKyhhP3Q6IiIpKyhpfHwiIikrKG58fChpPyIoW14vLl0rPykiOiIoW14vXSs/KSIpKSsiKSIrKGF8fCIiKX0pLnJlcGxhY2UoLyhbXC8uXSkvZywiXFwkMSIpLnJlcGxhY2UoL19fcGx1c19fL2csIiguKykiKS5yZXBsYWNlKC9cKi9nLCIoLiopIik7cmV0dXJue3BhdGg6bmV3IFJlZ0V4cCgiXiIrdCsiJCIsImkiKSxrZXlzOnJ9fSxjc3NQcmVmaXg6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXt9LG49e30sYT0iIjtnLmlzUGxhaW5PYmplY3QoZSk/KHM9ZSwhMD09PXQmJihpPSEwKSk6c1tlXT10O2Zvcih2YXIgciBpbiBzKW5bcl09c1tyXSxuWyItd2Via2l0LSIrcl09c1tyXSxuWyItbW96LSIrcl09c1tyXS5yZXBsYWNlKCItd2Via2l0LSIsIi1tb3otIiksblsiLW1zLSIrcl09c1tyXS5yZXBsYWNlKCItd2Via2l0LSIsIi1tcy0iKSxuWyItby0iK3JdPXNbcl0ucmVwbGFjZSgiLXdlYmtpdC0iLCItby0iKTtpZighMD09PWkpZm9yKHZhciByIGluIG4pYSs9cisiOiAiK25bcl0rIjsgIjtlbHNlIGE9bjtyZXR1cm4gYX0scGFyc2VDb2xvcjpmdW5jdGlvbihlKXt7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO2U9ZS50cmltKCkudG9VcHBlckNhc2UoKX0iIyI9PT1lWzBdJiYoZT1lLnN1YnN0cigxKSk7dmFyIHQ9e307aWYoMz09PWUubGVuZ3RoKXQ9e3I6cGFyc2VJbnQoZVswXStlWzBdLDE2KSxnOnBhcnNlSW50KGVbMV0rZVsxXSwxNiksYjpwYXJzZUludChlWzJdK2VbMl0sMTYpLGE6MX07ZWxzZSBpZig2PT09ZS5sZW5ndGgpdD17cjpwYXJzZUludChlLnN1YnN0cigwLDIpLDE2KSxnOnBhcnNlSW50KGUuc3Vic3RyKDIsMiksMTYpLGI6cGFyc2VJbnQoZS5zdWJzdHIoNCwyKSwxNiksYToxfTtlbHNlIGlmKDQ8ZS5sZW5ndGgmJiJSR0IoIj09PWUuc3Vic3RyKDAsNCkpe3ZhciBpPWUucmVwbGFjZSgiUkdCIiwiIikucmVwbGFjZSgvXCgvZywiIikucmVwbGFjZSgvXCkvZywiIikuc3BsaXQoIiwiKTt0PXtyOnBhcnNlSW50KGlbMF0sMTApLGc6cGFyc2VJbnQoaVsxXSwxMCksYjpwYXJzZUludChpWzJdLDEwKSxhOjF9fWVsc2V7aWYoISg1PGUubGVuZ3RoJiYiUkdCQSgiPT09ZS5zdWJzdHIoMCw1KSkpcmV0dXJuIG51bGw7aT1lLnJlcGxhY2UoIlJHQkEiLCIiKS5yZXBsYWNlKC9cKC9nLCIiKS5yZXBsYWNlKC9cKS9nLCIiKS5zcGxpdCgiLCIpO3Q9e3I6cGFyc2VJbnQoaVswXSwxMCksZzpwYXJzZUludChpWzFdLDEwKSxiOnBhcnNlSW50KGlbMl0sMTApLGE6cGFyc2VGbG9hdChpWzNdKX19cmV0dXJuIHR9LGhzdjJyZ2I6ZnVuY3Rpb24oZSx0LGkscyl7dmFyIG4sYSxyLGwsbyxkLHUsYzsxPT09YXJndW1lbnRzLmxlbmd0aCYmKHQ9ZS5zLGk9ZS52LHM9ZS5hLGU9ZS5oKTtzd2l0Y2goZS89MzYwLHQvPTEwMCxpLz0xMDAsbD1NYXRoLmZsb29yKDYqZSksZD1pKigxLXQpLHU9aSooMS0obz02KmUtbCkqdCksYz1pKigxLSgxLW8pKnQpLGwlNil7Y2FzZSAwOm49aSxhPWMscj1kO2JyZWFrO2Nhc2UgMTpuPXUsYT1pLHI9ZDticmVhaztjYXNlIDI6bj1kLGE9aSxyPWM7YnJlYWs7Y2FzZSAzOm49ZCxhPXUscj1pO2JyZWFrO2Nhc2UgNDpuPWMsYT1kLHI9aTticmVhaztjYXNlIDU6bj1pLGE9ZCxyPXV9cmV0dXJue3I6TWF0aC5yb3VuZCgyNTUqbiksZzpNYXRoLnJvdW5kKDI1NSphKSxiOk1hdGgucm91bmQoMjU1KnIpLGE6bnVsbCE9cz9zOjF9fSxyZ2IyaHN2OmZ1bmN0aW9uKGUsdCxpLHMpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYodD1lLmcsaT1lLmIscz1lLmEsZT1lLnIpO3ZhciBuLGE9TWF0aC5tYXgoZSx0LGkpLHI9TWF0aC5taW4oZSx0LGkpLGw9YS1yLG89MD09PWE/MDpsL2EsZD1hLzI1NTtzd2l0Y2goYSl7Y2FzZSByOm49MDticmVhaztjYXNlIGU6bj10LWkrbCoodDxpPzY6MCksbi89NipsO2JyZWFrO2Nhc2UgdDpuPWktZSsyKmwsbi89NipsO2JyZWFrO2Nhc2UgaTpuPWUtdCs0Kmwsbi89NipsfXJldHVybntoOk1hdGgucm91bmQoMzYwKm4pLHM6TWF0aC5yb3VuZCgxMDAqbyksdjpNYXRoLnJvdW5kKDEwMCpkKSxhOm51bGwhPXM/czoxfX0sZ2V0Q3Vyc29yUG9zaXRpb246ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgdCxpPTAscz1lLm93bmVyRG9jdW1lbnR8fGUuZG9jdW1lbnQsbj1zLmRlZmF1bHRWaWV3fHxzLnBhcmVudFdpbmRvdztpZihlLnRhZ05hbWUmJiJJTlBVVCI9PT1lLnRhZ05hbWUudG9VcHBlckNhc2UoKSYmZS5zZWxlY3Rpb25TdGFydClpPWUuc2VsZWN0aW9uU3RhcnQ7ZWxzZSBpZihuLmdldFNlbGVjdGlvbil7aWYoMDwodD1uLmdldFNlbGVjdGlvbigpKS5yYW5nZUNvdW50KXt2YXIgYT10LmdldFJhbmdlQXQoMCkscj1hLmNsb25lUmFuZ2UoKTtyLnNlbGVjdE5vZGVDb250ZW50cyhlKSxyLnNldEVuZChhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCksaT1yLnRvU3RyaW5nKCkubGVuZ3RofX1lbHNlIGlmKCh0PXMuc2VsZWN0aW9uKSYmIkNvbnRyb2wiIT09dC50eXBlKXt2YXIgbD10LmNyZWF0ZVJhbmdlKCksbz1zLmJvZHkuY3JlYXRlVGV4dFJhbmdlKCk7by5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLnNldEVuZFBvaW50KCJFbmRUb0VuZCIsbCksaT1vLnRleHQubGVuZ3RofXJldHVybiBpfSxzZXRDdXJzb3JQb3NpdGlvbjpmdW5jdGlvbihlLHQsaSl7dmFyIHMsbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGE9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKG51bGw9PWUpcmV0dXJuO2Zvcih2YXIgcj0wO3I8ZS5jaGlsZE5vZGVzLmxlbmd0aDtyKyspe3ZhciBsPWcoZS5jaGlsZE5vZGVzW3JdKS50ZXh0KCk7aWYoZS5jaGlsZE5vZGVzW3JdLnRhZ05hbWUmJihsPShsPWcoZS5jaGlsZE5vZGVzW3JdKS5odG1sKCkpLnJlcGxhY2UoLyZsdDsvZywiPCIpLnJlcGxhY2UoLyZndDsvZywiPiIpLnJlcGxhY2UoLyZhbXA7L2csIiYiKS5yZXBsYWNlKC8mcXVvdDsvZywnIicpLnJlcGxhY2UoLyZuYnNwOy9nLCIgIikpLHQ8PWwubGVuZ3RoKXsocz1lLmNoaWxkTm9kZXNbcl0pLmNoaWxkTm9kZXMmJjA8cy5jaGlsZE5vZGVzLmxlbmd0aCYmKHM9cy5jaGlsZE5vZGVzWzBdKSxzLmNoaWxkTm9kZXMmJjA8cy5jaGlsZE5vZGVzLmxlbmd0aCYmKHM9cy5jaGlsZE5vZGVzWzBdKTticmVha310LT1sLmxlbmd0aH1pZihudWxsPT1zKXJldHVybjt0PnMubGVuZ3RoJiYodD1zLmxlbmd0aCk7bi5zZXRTdGFydChzLHQpLGk/bi5zZXRFbmQocyxpKTpuLmNvbGxhcHNlKCEwKTthLnJlbW92ZUFsbFJhbmdlcygpLGEuYWRkUmFuZ2Uobil9LHRlc3RMb2NhbFN0b3JhZ2U6dCxoYXNMb2NhbFN0b3JhZ2U6dCgpLGlzSU9TOi0xIT09bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImlwaG9uZSIpfHwtMSE9PW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJpcG9kIil8fC0xIT09bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImlwYWQiKXx8LTEhPT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibW9iaWxlIil8fC0xIT09bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImFuZHJvaWQiKSxpc0lFOi0xIT09bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm1zaWUiKXx8LTEhPT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigidHJpZGVudCIpfTtmdW5jdGlvbiBoKGUpe3JldHVybi9eWy0rXT9bMC05XSskLy50ZXN0KGUpfWZ1bmN0aW9uIG4oZSl7aWYobnVsbD09ZSlyZXR1cm4gZTtzd2l0Y2godHlwZW9mIGUpe2Nhc2UibnVtYmVyIjpicmVhaztjYXNlInN0cmluZyI6ZT1TdHJpbmcoZSkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7YnJlYWs7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkoZSkpe2U9Zy5leHRlbmQoITAsW10sZSk7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT10aGlzLmVuY29kZVRhZ3MoZVt0XSl9ZWxzZSBmb3IodmFyIHQgaW4gZT1nLmV4dGVuZCghMCx7fSxlKSllW3RdPXRoaXMuZW5jb2RlVGFncyhlW3RdKX1yZXR1cm4gZX1mdW5jdGlvbiB0KCl7dmFyIGU9IncydWlfdGVzdCI7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLGUpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpLCEwfWNhdGNoKGUpe3JldHVybiExfX19KGpRdWVyeSk7dzJ1dGlscy5mb3JtYXR0ZXJzPXtudW1iZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMjA8cGFyc2VJbnQodCkmJih0PTIwKSxwYXJzZUludCh0KTwwJiYodD0wKSxudWxsPT1lfHwiIj09PWU/IiI6dzJ1dGlscy5mb3JtYXROdW1iZXIocGFyc2VGbG9hdChlKSx0LCEwKX0sZmxvYXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdzJ1dGlscy5mb3JtYXR0ZXJzLm51bWJlcihlLHQpfSxpbnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdzJ1dGlscy5mb3JtYXR0ZXJzLm51bWJlcihlLDApfSxtb25leTpmdW5jdGlvbihlLHQpe2lmKG51bGw9PWV8fCIiPT09ZSlyZXR1cm4iIjt2YXIgaT13MnV0aWxzLmZvcm1hdE51bWJlcihOdW1iZXIoZSksdzJ1dGlscy5zZXR0aW5ncy5jdXJyZW5jeVByZWNpc2lvbnx8Mik7cmV0dXJuKHcydXRpbHMuc2V0dGluZ3MuY3VycmVuY3lQcmVmaXh8fCIiKStpKyh3MnV0aWxzLnNldHRpbmdzLmN1cnJlbmN5U3VmZml4fHwiIil9LGN1cnJlbmN5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHcydXRpbHMuZm9ybWF0dGVycy5tb25leShlLHQpfSxwZXJjZW50OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWV8fCIiPT09ZT8iIjp3MnV0aWxzLmZvcm1hdE51bWJlcihlLHR8fDEpKyIlIn0sc2l6ZTpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lfHwiIj09PWU/IiI6dzJ1dGlscy5mb3JtYXRTaXplKHBhcnNlSW50KGUpKX0sZGF0ZTpmdW5jdGlvbihlLHQpe2lmKCIiPT09dCYmKHQ9dzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0KSxudWxsPT1lfHwwPT09ZXx8IiI9PT1lKXJldHVybiIiO3ZhciBpPXcydXRpbHMuaXNEYXRlVGltZShlLHQsITApO3JldHVybiExPT09aSYmKGk9dzJ1dGlscy5pc0RhdGUoZSx0LCEwKSksJzxzcGFuIHRpdGxlPSInK2krJyI+Jyt3MnV0aWxzLmZvcm1hdERhdGUoaSx0KSsiPC9zcGFuPiJ9LGRhdGV0aW1lOmZ1bmN0aW9uKGUsdCl7aWYoIiI9PT10JiYodD13MnV0aWxzLnNldHRpbmdzLmRhdGV0aW1lRm9ybWF0KSxudWxsPT1lfHwwPT09ZXx8IiI9PT1lKXJldHVybiIiO3ZhciBpPXcydXRpbHMuaXNEYXRlVGltZShlLHQsITApO3JldHVybiExPT09aSYmKGk9dzJ1dGlscy5pc0RhdGUoZSx0LCEwKSksJzxzcGFuIHRpdGxlPSInK2krJyI+Jyt3MnV0aWxzLmZvcm1hdERhdGVUaW1lKGksdCkrIjwvc3Bhbj4ifSx0aW1lOmZ1bmN0aW9uKGUsdCl7aWYoIiI9PT10JiYodD13MnV0aWxzLnNldHRpbmdzLnRpbWVGb3JtYXQpLCJoMTIiPT09dCYmKHQ9ImhoOm1pIHBtIiksImgyNCI9PT10JiYodD0iaDI0Om1pIiksbnVsbD09ZXx8MD09PWV8fCIiPT09ZSlyZXR1cm4iIjt2YXIgaT13MnV0aWxzLmlzRGF0ZVRpbWUoZSx0LCEwKTtyZXR1cm4hMT09PWkmJihpPXcydXRpbHMuaXNEYXRlKGUsdCwhMCkpLCc8c3BhbiB0aXRsZT0iJytpKyciPicrdzJ1dGlscy5mb3JtYXRUaW1lKGUsdCkrIjwvc3Bhbj4ifSx0aW1lc3RhbXA6ZnVuY3Rpb24oZSx0KXtpZigiIj09PXQmJih0PXcydXRpbHMuc2V0dGluZ3MuZGF0ZXRpbWVGb3JtYXQpLG51bGw9PWV8fDA9PT1lfHwiIj09PWUpcmV0dXJuIiI7dmFyIGk9dzJ1dGlscy5pc0RhdGVUaW1lKGUsdCwhMCk7cmV0dXJuITE9PT1pJiYoaT13MnV0aWxzLmlzRGF0ZShlLHQsITApKSxpLnRvU3RyaW5nP2kudG9TdHJpbmcoKToiIn0sZ210OmZ1bmN0aW9uKGUsdCl7aWYoIiI9PT10JiYodD13MnV0aWxzLnNldHRpbmdzLmRhdGV0aW1lRm9ybWF0KSxudWxsPT1lfHwwPT09ZXx8IiI9PT1lKXJldHVybiIiO3ZhciBpPXcydXRpbHMuaXNEYXRlVGltZShlLHQsITApO3JldHVybiExPT09aSYmKGk9dzJ1dGlscy5pc0RhdGUoZSx0LCEwKSksaS50b1VUQ1N0cmluZz9pLnRvVVRDU3RyaW5nKCk6IiJ9LGFnZTpmdW5jdGlvbihlLHQpe2lmKG51bGw9PWV8fDA9PT1lfHwiIj09PWUpcmV0dXJuIiI7dmFyIGk9dzJ1dGlscy5pc0RhdGVUaW1lKGUsbnVsbCwhMCk7cmV0dXJuITE9PT1pJiYoaT13MnV0aWxzLmlzRGF0ZShlLG51bGwsITApKSwnPHNwYW4gdGl0bGU9IicraSsnIj4nK3cydXRpbHMuYWdlKGUpKyh0PyIgIit0OiIiKSsiPC9zcGFuPiJ9LGludGVydmFsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWV8fDA9PT1lfHwiIj09PWU/IiI6dzJ1dGlscy5pbnRlcnZhbChlKSsodD8iICIrdDoiIil9LHRvZ2dsZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPyJZZXMiOiIifSxwYXNzd29yZDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaT0iIixzPTA7czxlLmxlbmd0aDtzKyspaSs9IioiO3JldHVybiBpfX0sdzJ1dGlscy5ldmVudD17b246ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPWpRdWVyeTsic3RyaW5nIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKCIuIikmJihlPShuPWUuc3BsaXQoIi4iKSlbMF0saT1uWzFdKTtpZigic3RyaW5nIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKCI6Iikpe3ZhciBuPWUuc3BsaXQoIjoiKTstMSE9PVsiY29tcGxldGUiLCJkb25lIl0uaW5kZXhPZihlWzFdKSYmKGVbMV09ImFmdGVyIiksZT17dHlwZTpuWzBdLGV4ZWN1dGU6blsxXX19cy5pc1BsYWluT2JqZWN0KGUpfHwoZT17dHlwZTplLHNjb3BlOml9KSwoZT1zLmV4dGVuZCh7dHlwZTpudWxsLGV4ZWN1dGU6ImJlZm9yZSIsdGFyZ2V0Om51bGwsb25Db21wbGV0ZTpudWxsfSxlKSkudHlwZT90PyhzLmlzQXJyYXkodGhpcy5oYW5kbGVycyl8fCh0aGlzLmhhbmRsZXJzPVtdKSx0aGlzLmhhbmRsZXJzLnB1c2goe2VkYXRhOmUsaGFuZGxlcjp0fSkpOmNvbnNvbGUubG9nKCJFUlJPUjogWW91IG11c3Qgc3BlY2lmeSBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIHdoZW4gY2FsbGluZyAub24oKSBtZXRob2Qgb2YgIit0aGlzLm5hbWUpOmNvbnNvbGUubG9nKCJFUlJPUjogWW91IG11c3Qgc3BlY2lmeSBldmVudCB0eXBlIHdoZW4gY2FsbGluZyAub24oKSBtZXRob2Qgb2YgIit0aGlzLm5hbWUpfSxvZmY6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPWpRdWVyeTsic3RyaW5nIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKCIuIikmJihlPShuPWUuc3BsaXQoIi4iKSlbMF0saT1uWzFdKTtpZigic3RyaW5nIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKCI6Iikpe3ZhciBuPWUuc3BsaXQoIjoiKTstMSE9PVsiY29tcGxldGUiLCJkb25lIl0uaW5kZXhPZihlWzFdKSYmKGVbMV09ImFmdGVyIiksZT17dHlwZTpuWzBdLGV4ZWN1dGU6blsxXX19aWYocy5pc1BsYWluT2JqZWN0KGUpfHwoZT17dHlwZTplfSksKGU9cy5leHRlbmQoe30se3R5cGU6bnVsbCxleGVjdXRlOiJiZWZvcmUiLHRhcmdldDpudWxsLG9uQ29tcGxldGU6bnVsbH0sZSkpLnR5cGV8fGkpe3Q9dHx8bnVsbDtmb3IodmFyIGE9W10scj0wLGw9dGhpcy5oYW5kbGVycy5sZW5ndGg7cjxsO3IrKyl7dmFyIG89dGhpcy5oYW5kbGVyc1tyXTsoby5lZGF0YS50eXBlIT09ZS50eXBlJiYiKiIhPT1lLnR5cGUmJihudWxsPT1vLmVkYXRhLnNjb3BlfHwiIiE9ZS50eXBlKXx8by5lZGF0YS50YXJnZXQhPT1lLnRhcmdldCYmbnVsbCE9ZS50YXJnZXR8fG8uZWRhdGEuZXhlY3V0ZSE9PWUuZXhlY3V0ZSYmbnVsbCE9ZS5leGVjdXRlfHwhKG8uaGFuZGxlcj09PXQmJm51bGwhPXR8fG51bGwhPWkmJm8uZWRhdGEuc2NvcGU9PWkpKSYmYS5wdXNoKG8pfXRoaXMuaGFuZGxlcnM9YX1lbHNlIGNvbnNvbGUubG9nKCJFUlJPUjogWW91IG11c3Qgc3BlY2lmeSBldmVudCB0eXBlIHdoZW4gY2FsbGluZyAub2ZmKCkgbWV0aG9kIG9mICIrdGhpcy5uYW1lKX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdCxpLHMsbj1qUXVlcnk7ImJlZm9yZSI9PT0oZT1uLmV4dGVuZCh7dHlwZTpudWxsLHBoYXNlOiJiZWZvcmUiLHRhcmdldDpudWxsLGRvbmVIYW5kbGVyczpbXX0sZSx7aXNTdG9wcGVkOiExLGlzQ2FuY2VsbGVkOiExLGRvbmU6ZnVuY3Rpb24oZSl7dGhpcy5kb25lSGFuZGxlcnMucHVzaChlKX0scHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzQ2FuY2VsbGVkPSEwfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD0hMH19KSkucGhhc2UmJihlLm9uQ29tcGxldGU9bnVsbCksbnVsbD09ZS50YXJnZXQmJihlLnRhcmdldD1udWxsKSxuLmlzQXJyYXkodGhpcy5oYW5kbGVycyl8fCh0aGlzLmhhbmRsZXJzPVtdKTtmb3IodmFyIGE9dGhpcy5oYW5kbGVycy5sZW5ndGgtMTswPD1hO2EtLSl7dmFyIHI9dGhpcy5oYW5kbGVyc1thXTtpZighKHIuZWRhdGEudHlwZSE9PWUudHlwZSYmIioiIT09ci5lZGF0YS50eXBlfHxyLmVkYXRhLnRhcmdldCE9PWUudGFyZ2V0JiZudWxsIT1yLmVkYXRhLnRhcmdldHx8ci5lZGF0YS5leGVjdXRlIT09ZS5waGFzZSYmIioiIT09ci5lZGF0YS5leGVjdXRlJiYiKiIhPT1yLmVkYXRhLnBoYXNlKSYmKGU9bi5leHRlbmQoe30sci5lZGF0YSxlKSx0PVtdLChzPW5ldyBSZWdFeHAoL1woKC4qPylcKS8pLmV4ZWMoci5oYW5kbGVyKSkmJih0PXNbMV0uc3BsaXQoL1xzKixccyovKSksMj09PXQubGVuZ3RoP3IuaGFuZGxlci5jYWxsKHRoaXMsZS50YXJnZXQsZSk6ci5oYW5kbGVyLmNhbGwodGhpcyxlKSwhMD09PWUuaXNTdG9wcGVkfHwhMD09PWUuc3RvcCkpcmV0dXJuIGV9dmFyIGw9Im9uIitlLnR5cGUuc3Vic3RyKDAsMSkudG9VcHBlckNhc2UoKStlLnR5cGUuc3Vic3RyKDEpO2lmKCJiZWZvcmUiPT09ZS5waGFzZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXNbbF0mJihpPXRoaXNbbF0sdD1bXSwocz1uZXcgUmVnRXhwKC9cKCguKj8pXCkvKS5leGVjKGkpKSYmKHQ9c1sxXS5zcGxpdCgvXHMqLFxzKi8pKSwyPT09dC5sZW5ndGg/aS5jYWxsKHRoaXMsZS50YXJnZXQsZSk6aS5jYWxsKHRoaXMsZSksITA9PT1lLmlzU3RvcHBlZHx8ITA9PT1lLnN0b3ApKXJldHVybiBlO2lmKG51bGwhPWUub2JqZWN0JiYiYmVmb3JlIj09PWUucGhhc2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLm9iamVjdFtsXSYmKGk9ZS5vYmplY3RbbF0sdD1bXSwocz1uZXcgUmVnRXhwKC9cKCguKj8pXCkvKS5leGVjKGkpKSYmKHQ9c1sxXS5zcGxpdCgvXHMqLFxzKi8pKSwyPT09dC5sZW5ndGg/aS5jYWxsKHRoaXMsZS50YXJnZXQsZSk6aS5jYWxsKHRoaXMsZSksITA9PT1lLmlzU3RvcHBlZHx8ITA9PT1lLnN0b3ApKXJldHVybiBlO2lmKCJhZnRlciI9PT1lLnBoYXNlKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkNvbXBsZXRlJiZlLm9uQ29tcGxldGUuY2FsbCh0aGlzLGUpO2Zvcih2YXIgbz0wO288ZS5kb25lSGFuZGxlcnMubGVuZ3RoO28rKykiZnVuY3Rpb24iPT10eXBlb2YgZS5kb25lSGFuZGxlcnNbb10mJmUuZG9uZUhhbmRsZXJzW29dLmNhbGwodGhpcyxlKX1yZXR1cm4gZX19LGZ1bmN0aW9uKF8pe18uZm4udzJyZW5kZXI9ZnVuY3Rpb24oZSl7MDxfKHRoaXMpLmxlbmd0aCYmKCJzdHJpbmciPT10eXBlb2YgZSYmdzJ1aVtlXSYmdzJ1aVtlXS5yZW5kZXIoXyh0aGlzKVswXSksIm9iamVjdCI9PXR5cGVvZiBlJiZlLnJlbmRlcihfKHRoaXMpWzBdKSl9LF8uZm4udzJkZXN0cm95PWZ1bmN0aW9uKGUpeyFlJiYwPHRoaXMubGVuZ3RoJiYoZT10aGlzLmF0dHIoIm5hbWUiKSksInN0cmluZyI9PXR5cGVvZiBlJiZ3MnVpW2VdJiZ3MnVpW2VdLmRlc3Ryb3koKSwib2JqZWN0Ij09dHlwZW9mIGUmJmUuZGVzdHJveSgpfSxfLmZuLncybWFya2VyPWZ1bmN0aW9uKCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBBcnJheS5pc0FycmF5KHJbMF0pJiYocj1yWzBdKSwwIT09ci5sZW5ndGgmJnJbMF0/Xyh0aGlzKS5lYWNoKGZ1bmN0aW9uKGUsdCl7bChlLHQpO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgcz1yW2ldOyJzdHJpbmciIT10eXBlb2YgcyYmKHM9U3RyaW5nKHMpKSxzPXMucmVwbGFjZSgvWy1bXF17fSgpKis/LixcXF4kfCNcc10vZywiXFwkJiIpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZndDsiKS5yZXBsYWNlKC8+L2csIiZsdDsiKTt2YXIgbj1uZXcgUmVnRXhwKHMrIig/IShbXjxdKyk/PikiLCJnaSIpO3QuaW5uZXJIVE1MPXQuaW5uZXJIVE1MLnJlcGxhY2UobixhKX1mdW5jdGlvbiBhKGUpe3JldHVybic8c3BhbiBjbGFzcz0idzJ1aS1tYXJrZXIiPicrZSsiPC9zcGFuPiJ9fSk6Xyh0aGlzKS5lYWNoKGwpO2Z1bmN0aW9uIGwoZSx0KXtmb3IoOy0xIT09dC5pbm5lckhUTUwuaW5kZXhPZignPHNwYW4gY2xhc3M9IncydWktbWFya2VyIj4nKTspdC5pbm5lckhUTUw9dC5pbm5lckhUTUwucmVwbGFjZSgvXDxzcGFuIGNsYXNzPVwidzJ1aVwtbWFya2VyXCJcPigoLnxcbnxccikqKVw8XC9zcGFuXD4vZ2ksIiQxIil9fSxfLmZuLncydGFnPWZ1bmN0aW9uKGwsbyl7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgbCYmbnVsbCE9KG89bCkuaHRtbCYmKGw9by5odG1sKSxudWxsIT0obz1fLmV4dGVuZCh7aWQ6bnVsbCxodG1sOmwscG9zaXRpb246InJpZ2h0fHRvcCIsYWxpZ246Im5vbmUiLGxlZnQ6MCx0b3A6MCxzdHlsZToiIixjc3M6e30sY2xhc3NOYW1lOiIiLGlucHV0Q2xhc3M6IiIsb25TaG93Om51bGwsb25IaWRlOm51bGwsaGlkZU9uS2V5UHJlc3M6ITAsaGlkZU9uRm9jdXM6ITEsaGlkZU9uQmx1cjohMSxoaWRlT25DbGljazohMSxoaWRlT25DaGFuZ2U6ITB9LG8pKS5uYW1lJiZudWxsPT1vLmlkJiYoby5pZD1vLm5hbWUpLCIiIT09by5jbGFzcyYmIiI9PT1vLmlucHV0Q2xhc3MmJihvLmlucHV0Q2xhc3M9by5jbGFzcyksMCE9PV8odGhpcykubGVuZ3RoKXJldHVybiBfKHRoaXMpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgYyxpPW8uaWQ/by5pZDp0LmlkOyIiPT1pJiYoaT1fKHQpLmZpbmQoImlucHV0IikuYXR0cigiaWQiKSksaT1pfHwibm9pZCI7dmFyIHM9dzJ1dGlscy5lc2NhcGVJZChpKTtyZXR1cm4gbnVsbCE9Xyh0aGlzKS5kYXRhKCJ3MnRhZyIpPyhjPV8odGhpcykuZGF0YSgidzJ0YWciKSxfLmV4dGVuZChjLm9wdGlvbnMsbykpOmM9e2lkOmksYXR0YWNoZWRUbzp0LGJveDpfKCIjdzJ1aS10YWctIitzKSxvcHRpb25zOl8uZXh0ZW5kKHt9LG8pLGluaXQ6bixoaWRlOmZ1bmN0aW9uKCl7aWYoYy5ib3gubGVuZ3RoPD0wKXJldHVybjtjLnRtcC50aW1lciYmY2xlYXJUaW1lb3V0KGMudG1wLnRpbWVyKTtjLmJveC5yZW1vdmUoKSxjLm9wdGlvbnMuaGlkZU9uQ2xpY2smJl8oImJvZHkiKS5vZmYoIi53MnRhZyIrKGMuaWR8fCIiKSk7XyhjLmF0dGFjaGVkVG8pLm9mZigiLncydGFnIikucmVtb3ZlQ2xhc3MoYy5vcHRpb25zLmlucHV0Q2xhc3MpLnJlbW92ZURhdGEoIncydGFnIiksMDxfKGMuYXR0YWNoZWRUbykubGVuZ3RoJiYoXyhjLmF0dGFjaGVkVG8pWzBdLnN0eWxlLmNzc1RleHQ9Yy50bXAub3JpZ2luYWxDU1MpOyJmdW5jdGlvbiI9PXR5cGVvZiBjLm9wdGlvbnMub25IaWRlJiZjLm9wdGlvbnMub25IaWRlKCl9LGdldFBvczpyLGlzTW92ZWQ6YSx0bXA6e319LHZvaWQoIiI9PT1sfHxudWxsPT1sP2MuaGlkZSgpOjAhPT1jLmJveC5sZW5ndGg/Yy5ib3guZmluZCgiLncydWktdGFnLWJvZHkiKS5jc3MoYy5vcHRpb25zLmNzcykuYXR0cigic3R5bGUiLGMub3B0aW9ucy5zdHlsZSkuYWRkQ2xhc3MoYy5vcHRpb25zLmNsYXNzTmFtZSkuaHRtbChjLm9wdGlvbnMuaHRtbCk6KGMudG1wLm9yaWdpbmFsQ1NTPSIiLDA8XyhjLmF0dGFjaGVkVG8pLmxlbmd0aCYmKGMudG1wLm9yaWdpbmFsQ1NTPV8oYy5hdHRhY2hlZFRvKVswXS5zdHlsZS5jc3NUZXh0KSxfKCJib2R5IikuYXBwZW5kKCc8ZGl2IG9uY2xpY2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGlkPSJ3MnVpLXRhZy0nK2MuaWQrJyIgICAgICAgIGNsYXNzPSJ3MnVpLXRhZyAnKygwPF8oYy5hdHRhY2hlZFRvKS5wYXJlbnRzKCIudzJ1aS1wb3B1cCwgLncydWktb3ZlcmxheS1wb3B1cCwgLncydWktbWVzc2FnZSIpLmxlbmd0aD8idzJ1aS10YWctcG9wdXAiOiIiKSsnIj4gICA8ZGl2IHN0eWxlPSJtYXJnaW46IC0ycHggMHB4IDBweCAtMnB4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyI+ICAgICAgPGRpdiBjbGFzcz0idzJ1aS10YWctYm9keSAnK2Mub3B0aW9ucy5jbGFzc05hbWUrJyIgc3R5bGU9IicrKGMub3B0aW9ucy5zdHlsZXx8IiIpKyciPicrbCsiPC9kaXY+ICAgPC9kaXY+PC9kaXY+IiksYy5ib3g9XygiI3cydWktdGFnLSIrcyksXyhjLmF0dGFjaGVkVG8pLmRhdGEoIncydGFnIixjKSxzZXRUaW1lb3V0KG4sMSkpKTtmdW5jdGlvbiBuKCl7aWYoYy5ib3guY3NzKCJkaXNwbGF5IiwiYmxvY2siKSxjJiZjLmJveCYmXyhjLmF0dGFjaGVkVG8pLm9mZnNldCgpKXt2YXIgZT1jLmdldFBvcygpO2MuYm94LmNzcyh7b3BhY2l0eToiMSIsbGVmdDplLmxlZnQrInB4Iix0b3A6ZS50b3ArInB4In0pLmRhdGEoIncydGFnIixjKS5maW5kKCIudzJ1aS10YWctYm9keSIpLmFkZENsYXNzKGUucG9zQ2xhc3MpLGMudG1wLnBvcz1lLmxlZnQrIngiK2UudG9wLF8oYy5hdHRhY2hlZFRvKS5vZmYoIi53MnRhZyIpLmNzcyhjLm9wdGlvbnMuY3NzKS5hZGRDbGFzcyhjLm9wdGlvbnMuaW5wdXRDbGFzcyksYy5vcHRpb25zLmhpZGVPbktleVByZXNzJiZfKGMuYXR0YWNoZWRUbykub24oImtleXByZXNzLncydGFnIixjLmhpZGUpLGMub3B0aW9ucy5oaWRlT25Gb2N1cyYmXyhjLmF0dGFjaGVkVG8pLm9uKCJmb2N1cy53MnRhZyIsYy5oaWRlKSxvLmhpZGVPbkNoYW5nZSYmKCJJTlBVVCI9PT10Lm5vZGVOYW1lP18odCkub24oImNoYW5nZS53MnRhZyIsYy5oaWRlKTpfKHQpLmZpbmQoImlucHV0Iikub24oImNoYW5nZS53MnRhZyIsYy5oaWRlKSksYy5vcHRpb25zLmhpZGVPbkJsdXImJl8oYy5hdHRhY2hlZFRvKS5vbigiYmx1ci53MnRhZyIsYy5oaWRlKSxjLm9wdGlvbnMuaGlkZU9uQ2xpY2smJl8oImJvZHkiKS5vbigiY2xpY2sudzJ0YWciKyhjLmlkfHwiIiksYy5oaWRlKSwiZnVuY3Rpb24iPT10eXBlb2YgYy5vcHRpb25zLm9uU2hvdyYmYy5vcHRpb25zLm9uU2hvdygpLGEoKX19ZnVuY3Rpb24gYShlKXt2YXIgdD1fKGMuYXR0YWNoZWRUbykub2Zmc2V0KCk7aWYoMD09PV8oYy5hdHRhY2hlZFRvKS5sZW5ndGh8fDA9PT10LmxlZnQmJjA9PT10LnRvcHx8MD09PWMuYm94LmZpbmQoIi53MnVpLXRhZy1ib2R5IikubGVuZ3RoKWMuaGlkZSgpO2Vsc2V7dmFyIGk9cigpO2MudG1wLnBvcyE9PWkubGVmdCsieCIraS50b3AmJihjLmJveC5jc3ModzJ1dGlscy5jc3NQcmVmaXgoe3RyYW5zaXRpb246ZT8iMHMiOiIuMnMifSkpLmNzcyh7bGVmdDppLmxlZnQrInB4Iix0b3A6aS50b3ArInB4In0pLGMudG1wLnBvcz1pLmxlZnQrIngiK2kudG9wKSxjLnRtcC50aW1lciYmY2xlYXJUaW1lb3V0KGMudG1wLnRpbWVyKSxjLnRtcC50aW1lcj1zZXRUaW1lb3V0KGEsMTAwKX19ZnVuY3Rpb24gcigpe3ZhciBlPV8oYy5hdHRhY2hlZFRvKS5vZmZzZXQoKSx0PSJ3MnVpLXRhZy1yaWdodCIsaT1wYXJzZUludChlLmxlZnQrYy5hdHRhY2hlZFRvLm9mZnNldFdpZHRoKyhjLm9wdGlvbnMubGVmdD9jLm9wdGlvbnMubGVmdDowKSkscz1wYXJzZUludChlLnRvcCsoYy5vcHRpb25zLnRvcD9jLm9wdGlvbnMudG9wOjApKSxuPWMuYm94LmZpbmQoIi53MnVpLXRhZy1ib2R5IiksYT1uWzBdLm9mZnNldFdpZHRoLHI9blswXS5vZmZzZXRIZWlnaHQ7aWYoInN0cmluZyI9PXR5cGVvZiBjLm9wdGlvbnMucG9zaXRpb24mJi0xIT09Yy5vcHRpb25zLnBvc2l0aW9uLmluZGV4T2YoInwiKSYmKGMub3B0aW9ucy5wb3NpdGlvbj1jLm9wdGlvbnMucG9zaXRpb24uc3BsaXQoInwiKSksInRvcCI9PT1jLm9wdGlvbnMucG9zaXRpb24pdD0idzJ1aS10YWctdG9wIixpPXBhcnNlSW50KGUubGVmdCsoYy5vcHRpb25zLmxlZnQ/Yy5vcHRpb25zLmxlZnQ6MCkpLTE0LHM9cGFyc2VJbnQoZS50b3ArKGMub3B0aW9ucy50b3A/Yy5vcHRpb25zLnRvcDowKSktci0xMDtlbHNlIGlmKCJib3R0b20iPT09Yy5vcHRpb25zLnBvc2l0aW9uKXQ9IncydWktdGFnLWJvdHRvbSIsaT1wYXJzZUludChlLmxlZnQrKGMub3B0aW9ucy5sZWZ0P2Mub3B0aW9ucy5sZWZ0OjApKS0xNCxzPXBhcnNlSW50KGUudG9wK2MuYXR0YWNoZWRUby5vZmZzZXRIZWlnaHQrKGMub3B0aW9ucy50b3A/Yy5vcHRpb25zLnRvcDowKSkrMTA7ZWxzZSBpZigibGVmdCI9PT1jLm9wdGlvbnMucG9zaXRpb24pdD0idzJ1aS10YWctbGVmdCIsaT1wYXJzZUludChlLmxlZnQrKGMub3B0aW9ucy5sZWZ0P2Mub3B0aW9ucy5sZWZ0OjApKS1hLTIwLHM9cGFyc2VJbnQoZS50b3ArKGMub3B0aW9ucy50b3A/Yy5vcHRpb25zLnRvcDowKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGMub3B0aW9ucy5wb3NpdGlvbikpe2Zvcih2YXIgbD13aW5kb3cuaW5uZXJXaWR0aCxvPXdpbmRvdy5pbm5lckhlaWdodCxkPTA7ZDxjLm9wdGlvbnMucG9zaXRpb24ubGVuZ3RoO2QrKyl7dmFyIHU9Yy5vcHRpb25zLnBvc2l0aW9uW2RdO2lmKCJyaWdodCI9PT11KXtpZih0PSJ3MnVpLXRhZy1yaWdodCIsaT1wYXJzZUludChlLmxlZnQrYy5hdHRhY2hlZFRvLm9mZnNldFdpZHRoKyhjLm9wdGlvbnMubGVmdD9jLm9wdGlvbnMubGVmdDowKSkscz1wYXJzZUludChlLnRvcCsoYy5vcHRpb25zLnRvcD9jLm9wdGlvbnMudG9wOjApKSxpK2E8PWwpYnJlYWt9ZWxzZSBpZigibGVmdCI9PT11KXtpZih0PSJ3MnVpLXRhZy1sZWZ0IixpPXBhcnNlSW50KGUubGVmdCsoYy5vcHRpb25zLmxlZnQ/Yy5vcHRpb25zLmxlZnQ6MCkpLWEtMjAscz1wYXJzZUludChlLnRvcCsoYy5vcHRpb25zLnRvcD9jLm9wdGlvbnMudG9wOjApKSwwPD1pKWJyZWFrfWVsc2UgaWYoInRvcCI9PT11KXtpZih0PSJ3MnVpLXRhZy10b3AiLGk9cGFyc2VJbnQoZS5sZWZ0KyhjLm9wdGlvbnMubGVmdD9jLm9wdGlvbnMubGVmdDowKSktMTQscz1wYXJzZUludChlLnRvcCsoYy5vcHRpb25zLnRvcD9jLm9wdGlvbnMudG9wOjApKS1yLTEwLGkrYTw9bCYmMDw9cylicmVha31lbHNlIGlmKCJib3R0b20iPT09dSYmKHQ9IncydWktdGFnLWJvdHRvbSIsaT1wYXJzZUludChlLmxlZnQrKGMub3B0aW9ucy5sZWZ0P2Mub3B0aW9ucy5sZWZ0OjApKS0xNCxzPXBhcnNlSW50KGUudG9wK2MuYXR0YWNoZWRUby5vZmZzZXRIZWlnaHQrKGMub3B0aW9ucy50b3A/Yy5vcHRpb25zLnRvcDowKSkrMTAsaSthPD1sJiZzK3I8PW8pKWJyZWFrfW4uZGF0YSgicG9zQ2xhc3MiKSE9PXQmJm4ucmVtb3ZlQ2xhc3MoIncydWktdGFnLXJpZ2h0IHcydWktdGFnLWxlZnQgdzJ1aS10YWctdG9wIHcydWktdGFnLWJvdHRvbSIpLmFkZENsYXNzKHQpLmRhdGEoInBvc0NsYXNzIix0KX1yZXR1cm57bGVmdDppLHRvcDpzLHBvc0NsYXNzOnR9fX0pO18oIi53MnVpLXRhZyIpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgaT1fKHQpLmRhdGEoIncydGFnIik7aSYmaS5oaWRlKCl9KX0sXy5mbi53Mm92ZXJsYXk9ZnVuY3Rpb24oZSx2KXt2YXIgdCx5PXRoaXMsYj0iIjtpZigxPT09YXJndW1lbnRzLmxlbmd0aCYmKHY9Im9iamVjdCI9PXR5cGVvZiBlP2U6e2h0bWw6ZX0pLDI9PT1hcmd1bWVudHMubGVuZ3RoJiYodi5odG1sPWUpLF8uaXNQbGFpbk9iamVjdCh2KXx8KHY9e30pLCh2PV8uZXh0ZW5kKHt9LHtuYW1lOm51bGwsaHRtbDoiIixhbGlnbjoibm9uZSIsbGVmdDowLHRvcDowLHRpcExlZnQ6MzAsbm9UaXA6ITEsc2VsZWN0YWJsZTohMSx3aWR0aDowLGhlaWdodDowLG1heFdpZHRoOm51bGwsbWF4SGVpZ2h0Om51bGwsY29udGV4dE1lbnU6ITEscGFnZVg6bnVsbCxwYWdlWTpudWxsLG9yaWdpbmFsRXZlbnQ6bnVsbCxzdHlsZToiIixjbGFzczoiIixvdmVybGF5U3R5bGU6IiIsb25TaG93Om51bGwsb25IaWRlOm51bGwsb3BlbkFib3ZlOiExLHRtcDp7fX0sdikpLm5hbWUmJihiPSItIit2Lm5hbWUpLDA9PT10aGlzLmxlbmd0aHx8IiI9PT12Lmh0bWx8fG51bGw9PXYuaHRtbClyZXR1cm4gMDxfKCIjdzJ1aS1vdmVybGF5IitiKS5sZW5ndGg/ImZ1bmN0aW9uIj09dHlwZW9mKHQ9XygiI3cydWktb3ZlcmxheSIrYilbMF0uaGlkZSkmJnQoKTpfKCIjdzJ1aS1vdmVybGF5IitiKS5yZW1vdmUoKSxfKHRoaXMpOzA8XygiI3cydWktb3ZlcmxheSIrYikubGVuZ3RoJiYodD1fKCIjdzJ1aS1vdmVybGF5IitiKVswXS5oaWRlLF8oZG9jdW1lbnQpLm9mZigiLncyb3ZlcmxheSIrYiksImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQoKSksMDx5Lmxlbmd0aCYmKG51bGw9PXlbMF0udGFnTmFtZXx8IkJPRFkiPT09eVswXS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpJiYodi5jb250ZXh0TWVudT0hMCksdi5jb250ZXh0TWVudSYmdi5vcmlnaW5hbEV2ZW50JiYodi5wYWdlWD12Lm9yaWdpbmFsRXZlbnQucGFnZVgsdi5wYWdlWT12Lm9yaWdpbmFsRXZlbnQucGFnZVkpLCF2LmNvbnRleHRNZW51fHxudWxsIT12LnBhZ2VYJiZudWxsIT12LnBhZ2VZfHxjb25zb2xlLmxvZygiRVJST1I6IHRvIGRpc3BsYXkgbWVudSBhdCBtb3VzZSBsb2NhdGlvbiwgcGFzcyBvcHRpb25zLnBhZ2VYIGFuZCBvcHRpb25zLnBhZ2VZLiIpLF8oImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9IncydWktb3ZlcmxheScrYisnIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgJyt2Lm92ZXJsYXlTdHlsZSsnIiAgICAgICAgY2xhc3M9IncydWktcmVzZXQgdzJ1aS1vdmVybGF5ICcrKDA8Xyh0aGlzKS5wYXJlbnRzKCIudzJ1aS1wb3B1cCwgLncydWktb3ZlcmxheS1wb3B1cCwgLncydWktbWVzc2FnZSIpLmxlbmd0aD8idzJ1aS1vdmVybGF5LXBvcHVwIjoiIikrJyI+ICAgIDxzdHlsZT48L3N0eWxlPiAgICA8ZGl2IHN0eWxlPSJtaW4td2lkdGg6IDEwMCU7ICcrdi5zdHlsZSsnIiBjbGFzcz0iJyt2LmNsYXNzKyciPjwvZGl2PjwvZGl2PicpO3ZhciBpPV8oIiN3MnVpLW92ZXJsYXkiK2IpLHM9aS5maW5kKCIgPiBkaXYiKTtzLmh0bWwodi5odG1sKTt2YXIgbj1zLmNzcygiYmFja2dyb3VuZC1jb2xvciIpO251bGwhPW4mJiJyZ2JhKDAsIDAsIDAsIDApIiE9PW4mJiJ0cmFuc3BhcmVudCIhPT1uJiZpLmNzcyh7ImJhY2tncm91bmQtY29sb3IiOm4sImJvcmRlci1jb2xvciI6bn0pO3ZhciBhPV8oeSkub2Zmc2V0KCl8fHt9O3JldHVybiBpLmRhdGEoImVsZW1lbnQiLDA8eS5sZW5ndGg/eVswXTpudWxsKS5kYXRhKCJvcHRpb25zIix2KS5kYXRhKCJwb3NpdGlvbiIsYS5sZWZ0KyJ4IithLnRvcCkuZmFkZUluKCJmYXN0Iikub24oImNsaWNrIixmdW5jdGlvbihlKXtfKCIjdzJ1aS1vdmVybGF5IitiKS5kYXRhKCJrZWVwT3BlbiIsITApLCJMQUJFTCI9PT1lLnRhcmdldC50YWdOYW1lLnRvVXBwZXJDYXNlKCkmJmUuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigibW91c2Vkb3duIixmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC50YWdOYW1lLnRvVXBwZXJDYXNlKCk7LTEhPT1bIklOUFVUIiwiVEVYVEFSRUEiLCJTRUxFQ1QiXS5pbmRleE9mKHQpfHx2LnNlbGVjdGFibGV8fGUucHJldmVudERlZmF1bHQoKX0pLGlbMF0uaGlkZT1yLGlbMF0ucmVzaXplPXgsc2V0VGltZW91dChmdW5jdGlvbigpe18oZG9jdW1lbnQpLm9mZigiLncyb3ZlcmxheSIrYikub24oImNsaWNrLncyb3ZlcmxheSIrYixyKSwiZnVuY3Rpb24iPT10eXBlb2Ygdi5vblNob3cmJnYub25TaG93KCkseCgpfSwxMCksZnVuY3Rpb24gZSgpe3ZhciB0PV8oIiN3MnVpLW92ZXJsYXkiK2IpO2lmKHQuZGF0YSgiZWxlbWVudCIpIT09eVswXSlyZXR1cm47aWYoMD09PXQubGVuZ3RoKXJldHVybjt2YXIgaT1fKHkpLm9mZnNldCgpfHx7fTt2YXIgcz1pLmxlZnQrIngiK2kudG9wO3QuZGF0YSgicG9zaXRpb24iKSE9PXM/cigpOnNldFRpbWVvdXQoZSwyNTApfSgpLF8odGhpcyk7ZnVuY3Rpb24gcihlKXtpZighZXx8MD09PWUuYnV0dG9uKXt2YXIgdCxpPV8oIiN3MnVpLW92ZXJsYXkiK2IpO2lmKCFlfHxfKF8oZS50YXJnZXQpLmNsb3Nlc3QoIi53MnVpLW92ZXJsYXkiKS5kYXRhKCJlbGVtZW50IikpLmNsb3Nlc3QoIi53MnVpLW92ZXJsYXkiKVswXSE9PWlbMF0paWYoITAhPT1pLmRhdGEoImtlZXBPcGVuIikpImZ1bmN0aW9uIj09dHlwZW9mIHYub25IaWRlJiYodD12Lm9uSGlkZSgpKSwhMSE9PXQmJihpLnJlbW92ZSgpLF8oZG9jdW1lbnQpLm9mZigiLncyb3ZlcmxheSIrYiksY2xlYXJJbnRlcnZhbChpLmRhdGEoInRpbWVyIikpKTtlbHNlIGkucmVtb3ZlRGF0YSgia2VlcE9wZW4iKX19ZnVuY3Rpb24geCgpe3ZhciBlPV8oIiN3MnVpLW92ZXJsYXkiK2IpLHQ9ZS5maW5kKCIgPiBkaXYiKSxpPV8oIiN3MnVpLW92ZXJsYXkiK2IrIiBkaXYudzJ1aS1tZW51Iikscz17fTtpZigwPGkubGVuZ3RoJiYoaS5jc3MoIm92ZXJmbG93LXkiLCJoaWRkZW4iKSxzLnNjcm9sbFRvcD1pLnNjcm9sbFRvcCgpLHMuc2Nyb2xsTGVmdD1pLnNjcm9sbExlZnQoKSksMDxlLmxlbmd0aCl7dC5oZWlnaHQoImF1dG8iKS53aWR0aCgiYXV0byIpO3ZhciBuPSExLGE9dC5oZWlnaHQoKSxyPXQud2lkdGgoKTt2LndpZHRoJiZ2LndpZHRoPHImJihyPXYud2lkdGgpLHI8MzAmJihyPTMwKSx2LnRtcC5jb250ZW50SGVpZ2h0JiYoYT1wYXJzZUludCh2LnRtcC5jb250ZW50SGVpZ2h0KSx0LmhlaWdodChhKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9dC5maW5kKCJkaXYudzJ1aS1tZW51Iik7YT5lLmhlaWdodCgpJiZ0LmZpbmQoImRpdi53MnVpLW1lbnUiKS5jc3MoIm92ZXJmbG93LXkiLCJoaWRkZW4iKX0sMSksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPXQuZmluZCgiZGl2LncydWktbWVudSIpOyJhdXRvIiE9PWUuY3NzKCJvdmVyZmxvdy15IikmJmUuY3NzKCJvdmVyZmxvdy15IiwiYXV0byIpfSwxMCkpLHYudG1wLmNvbnRlbnRXaWR0aCYmImJvdGgiIT09di5hbGlnbj8ocj1wYXJzZUludCh2LnRtcC5jb250ZW50V2lkdGgpLHQud2lkdGgociksc2V0VGltZW91dChmdW5jdGlvbigpe3I+dC5maW5kKCJkaXYudzJ1aS1tZW51ID4gdGFibGUiKS53aWR0aCgpJiZ0LmZpbmQoImRpdi53MnVpLW1lbnUgPiB0YWJsZSIpLmNzcygib3ZlcmZsb3cteCIsImhpZGRlbiIpfSwxKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5maW5kKCJkaXYudzJ1aS1tZW51ID4gdGFibGUiKS5jc3MoIm92ZXJmbG93LXgiLCJhdXRvIil9LDEwKSk6dC5maW5kKCJkaXYudzJ1aS1tZW51IikuY3NzKCJ3aWR0aCIsIjEwMCUiKTt2YXIgbD12LmxlZnQsbz12LndpZHRoLGQ9di50aXBMZWZ0O3N3aXRjaCh2LmFsaWduKXtjYXNlImJvdGgiOmw9MTcsMD09PXYud2lkdGgmJih2LndpZHRoPXcydXRpbHMuZ2V0U2l6ZShfKHkpLCJ3aWR0aCIpKSx2Lm1heFdpZHRoJiZ2LndpZHRoPnYubWF4V2lkdGgmJih2LndpZHRoPXYubWF4V2lkdGgpO2JyZWFrO2Nhc2UibGVmdCI6bD0xNzticmVhaztjYXNlInJpZ2h0IjpsPXcydXRpbHMuZ2V0U2l6ZShfKHkpLCJ3aWR0aCIpLXIrMTAsZD1yLTQwfW89MzAhPT1yfHxvP3Yud2lkdGg/di53aWR0aDoiYXV0byI6MzA7dmFyIHUsYyxoLHA9KHItMTcpLzI7aWYoImF1dG8iIT09byYmKHA9KG8tMTcpLzIpLHA8MjUmJihsPTI1LXAsZD1NYXRoLmZsb29yKHApKSx2LmNvbnRleHRNZW51KXU9di5wYWdlWCs4LGM9di5wYWdlWS0wLGg9di5wYWdlWTtlbHNlIHU9KDI1PChnPXkub2Zmc2V0KCl8fHt9KS5sZWZ0P2cubGVmdDoyNSkrbCxjPWcudG9wK3cydXRpbHMuZ2V0U2l6ZSh5LCJoZWlnaHQiKSt2LnRvcCs3LGg9Zy50b3A7ZS5jc3Moe2xlZnQ6dSsicHgiLHRvcDpjKyJweCIsIm1pbi13aWR0aCI6bywibWluLWhlaWdodCI6di5oZWlnaHQ/di5oZWlnaHQ6ImF1dG8ifSk7dmFyIGYsZz10Lm9mZnNldCgpfHx7fSxtPXdpbmRvdy5pbm5lckhlaWdodCtfKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1nLnRvcC03LHc9d2luZG93LmlubmVyV2lkdGgrXyhkb2N1bWVudCkuc2Nyb2xsTGVmdCgpLWcubGVmdC03O2lmKHYuY29udGV4dE1lbnUmJihtPXdpbmRvdy5pbm5lckhlaWdodCtfKGRvY3VtZW50KS5zY3JvbGxUb3AoKS12LnBhZ2VZLTE1LHc9d2luZG93LmlubmVyV2lkdGgrXyhkb2N1bWVudCkuc2Nyb2xsTGVmdCgpLXYucGFnZVgpLC01MDxtJiZtPDIxMHx8ITA9PT12Lm9wZW5BYm92ZSlmPXYuY29udGV4dE1lbnU/KG09di5wYWdlWS03LDUpOihtPWcudG9wLV8oZG9jdW1lbnQpLnNjcm9sbFRvcCgpLTcsMjQpLHYubWF4SGVpZ2h0JiZtPnYubWF4SGVpZ2h0JiYobT12Lm1heEhlaWdodCksbTxhJiYobj0hMCx0LmhlaWdodChtKS53aWR0aChyKS5jc3MoeyJvdmVyZmxvdy15IjoiYXV0byJ9KSxhPW0pLGUuYWRkQ2xhc3MoImJvdHRvbS1hcnJvdyIpLGUuY3NzKCJ0b3AiLGgtYS1mK3YudG9wKyJweCIpLGUuZmluZCgiPnN0eWxlIikuaHRtbCgiI3cydWktb3ZlcmxheSIrYisiOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAiK3BhcnNlSW50KGQpKyJweDsgfSN3MnVpLW92ZXJsYXkiK2IrIjphZnRlciB7IG1hcmdpbi1sZWZ0OiAiK3BhcnNlSW50KGQpKyJweDsgfSIpO2Vsc2Ugdi5tYXhIZWlnaHQmJm0+di5tYXhIZWlnaHQmJihtPXYubWF4SGVpZ2h0KSxtPGEmJihuPSEwLHQuaGVpZ2h0KG0pLndpZHRoKHIpLmNzcyh7Im92ZXJmbG93LXkiOiJhdXRvIn0pKSxlLmFkZENsYXNzKCJ0b3AtYXJyb3ciKSxlLmZpbmQoIj5zdHlsZSIpLmh0bWwoIiN3MnVpLW92ZXJsYXkiK2IrIjpiZWZvcmUgeyBtYXJnaW4tbGVmdDogIitwYXJzZUludChkKSsicHg7IH0jdzJ1aS1vdmVybGF5IitiKyI6YWZ0ZXIgeyBtYXJnaW4tbGVmdDogIitwYXJzZUludChkKSsicHg7IH0iKTtyPXQud2lkdGgoKSx3PXdpbmRvdy5pbm5lcldpZHRoK18oZG9jdW1lbnQpLnNjcm9sbExlZnQoKS1nLmxlZnQtNyx2Lm1heFdpZHRoJiZ3PnYubWF4V2lkdGgmJih3PXYubWF4V2lkdGgpLHc8ciYmImJvdGgiIT09di5hbGlnbiYmKHYuYWxpZ249InJpZ2h0IixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eCgpfSwxKSksKHYuY29udGV4dE1lbnV8fHYubm9UaXApJiZlLmZpbmQoIj5zdHlsZSIpLmh0bWwoIiN3MnVpLW92ZXJsYXkiK2IrIjpiZWZvcmUgeyBkaXNwbGF5OiBub25lOyB9I3cydWktb3ZlcmxheSIrYisiOmFmdGVyIHsgZGlzcGxheTogbm9uZTsgfSIpLG4mJiJib3RoIiE9PXYuYWxpZ24mJnQud2lkdGgocit3MnV0aWxzLnNjcm9sbEJhclNpemUoKSsyKX0wPGkubGVuZ3RoJiYoaS5jc3MoIm92ZXJmbG93LXkiLCJhdXRvIiksaS5zY3JvbGxUb3Aocy5zY3JvbGxUb3ApLGkuc2Nyb2xsTGVmdChzLnNjcm9sbExlZnQpKX19LF8uZm4udzJtZW51PWZ1bmN0aW9uKGUsdyl7dyYmImZ1bmN0aW9uIj09dHlwZW9mIHcuaXRlbXMmJih3Lml0ZW1zPXcuaXRlbXMoKSk7dmFyIG89dGhpcyxkPSIiO2lmKCJyZWZyZXNoIj09PWUpaWYoMDxfKCIjdzJ1aS1vdmVybGF5IitkKS5sZW5ndGgpe3c9Xy5leHRlbmQoXy5mbi53Mm1lbnVPcHRpb25zLHcpO3ZhciB0PV8oIiN3MnVpLW92ZXJsYXkiK2QrIiBkaXYudzJ1aS1tZW51Iikuc2Nyb2xsVG9wKCk7XygiI3cydWktb3ZlcmxheSIrZCsiIGRpdi53MnVpLW1lbnUiKS5odG1sKHYoKSksXygiI3cydWktb3ZlcmxheSIrZCsiIGRpdi53MnVpLW1lbnUiKS5zY3JvbGxUb3AodCksYygpfWVsc2UgXyh0aGlzKS53Mm1lbnUodyk7ZWxzZXtpZigicmVmcmVzaC1pbmRleCIhPT1lKXsxPT09YXJndW1lbnRzLmxlbmd0aD93PWU6dy5pdGVtcz1lLCJvYmplY3QiIT10eXBlb2YgdyYmKHc9e30pLHc9Xy5leHRlbmQoe30se3R5cGU6Im5vcm1hbCIsaW5kZXg6bnVsbCxpdGVtczpbXSxyZW5kZXI6bnVsbCxtc2dOb0l0ZW1zOiJObyBpdGVtcyIsb25TZWxlY3Q6bnVsbCxoaWRlT25SZW1vdmU6ITEsdG1wOnt9fSx3KSwoXy5mbi53Mm1lbnVPcHRpb25zPXcpLm5hbWUmJihkPSItIit3Lm5hbWUpLCJmdW5jdGlvbiI9PXR5cGVvZiB3LnNlbGVjdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHcub25TZWxlY3QmJih3Lm9uU2VsZWN0PXcuc2VsZWN0KSwiZnVuY3Rpb24iPT10eXBlb2Ygdy5yZW1vdmUmJiJmdW5jdGlvbiIhPXR5cGVvZiB3Lm9uUmVtb3ZlJiYody5vblJlbW92ZT13LnJlbW92ZSksImZ1bmN0aW9uIj09dHlwZW9mIHcub25SZW5kZXImJiJmdW5jdGlvbiIhPXR5cGVvZiB3LnJlbmRlciYmKHcucmVuZGVyPXcub25SZW5kZXIpLF8uZm4udzJtZW51Q2xpY2s9ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPSExLG49XyhlLnRhcmdldCkuY2xvc2VzdCgidHIiKTstMSE9PVsicmFkaW8iLCJjaGVjayJdLmluZGV4T2Yody50eXBlKSYmKGUuc2hpZnRLZXl8fGUubWV0YUtleXx8ZS5jdHJsS2V5KSYmKHM9ITApLGl0ZW1zPW51bGw9PWk/dy5pdGVtczp3Lml0ZW1zW2ldLml0ZW1zLF8oZS50YXJnZXQpLmhhc0NsYXNzKCJyZW1vdmUiKT8oImZ1bmN0aW9uIj09dHlwZW9mIHcub25SZW1vdmUmJncub25SZW1vdmUoe2luZGV4OnQscGFyZW50SW5kZXg6aSxpdGVtOml0ZW1zW3RdLGtlZXBPcGVuOnMsb3JpZ2luYWxFdmVudDplfSkscz0hdy5oaWRlT25SZW1vdmUsXyhlLnRhcmdldCkuY2xvc2VzdCgidHIiKS5yZW1vdmUoKSxjKCkpOm4uaGFzQ2xhc3MoImhhcy1zdWItbWVudSIpPyhzPSEwLG4uaGFzQ2xhc3MoImV4cGFuZGVkIik/KGl0ZW1zW3RdLmV4cGFuZGVkPSExLG4ucmVtb3ZlQ2xhc3MoImV4cGFuZGVkIikuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLm5leHQoKS5oaWRlKCkpOihpdGVtc1t0XS5leHBhbmRlZD0hMCxuLmFkZENsYXNzKCJleHBhbmRlZCIpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZWQiKS5uZXh0KCkuc2hvdygpKSxjKCkpOiJmdW5jdGlvbiI9PXR5cGVvZiB3Lm9uU2VsZWN0JiZ3Lm9uU2VsZWN0KHtpbmRleDp0LHBhcmVudEluZGV4OmksaXRlbTppdGVtc1t0XSxrZWVwT3BlbjpzLG9yaWdpbmFsRXZlbnQ6ZX0pO3ZhciBhPV8oIiN3MnVpLW92ZXJsYXkiK2QpO2EucmVtb3ZlRGF0YSgia2VlcE9wZW4iKSwwPGEubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgYVswXS5oaWRlJiYhcyYmYVswXS5oaWRlKCl9LF8uZm4udzJtZW51RG93bj1mdW5jdGlvbihlLHQsaSl7dmFyIHMsbixhPV8oZS50YXJnZXQpLmNsb3Nlc3QoInRyIikscj1fKGEuZ2V0KDApKS5maW5kKCIudzJ1aS1pY29uIik7cz1udWxsPT1pP3cuaXRlbXM6dy5pdGVtc1tpXS5pdGVtcywiY2hlY2siIT09dy50eXBlJiYicmFkaW8iIT09dy50eXBlfHxfKGUudGFyZ2V0KS5oYXNDbGFzcygicmVtb3ZlIil8fF8oZS50YXJnZXQpLmNsb3Nlc3QoInRyIikuaGFzQ2xhc3MoImhhcy1zdWItbWVudSIpfHwoKG49c1t0XSkuY2hlY2tlZD0hbi5jaGVja2VkLG4uY2hlY2tlZD8oInJhZGlvIj09PXcudHlwZSYmci5wYXJlbnRzKCJ0YWJsZSIpLmZpbmQoIi53MnVpLWljb24iKS5yZW1vdmVDbGFzcygidzJ1aS1pY29uLWNoZWNrIikuYWRkQ2xhc3MoIncydWktaWNvbi1lbXB0eSIpLCJjaGVjayI9PT13LnR5cGUmJm51bGwhPW4uZ3JvdXAmJnMuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuaWQhPW4uaWQmJmUuZ3JvdXA9PT1uLmdyb3VwJiZlLmNoZWNrZWQmJihyLmNsb3Nlc3QoInRhYmxlIikuZmluZCgidHJbaW5kZXg9Iit0KyJdIC53MnVpLWljb24iKS5yZW1vdmVDbGFzcygidzJ1aS1pY29uLWNoZWNrIikuYWRkQ2xhc3MoIncydWktaWNvbi1lbXB0eSIpLHNbdF0uY2hlY2tlZD0hMSl9KSxyLnJlbW92ZUNsYXNzKCJ3MnVpLWljb24tZW1wdHkiKS5hZGRDbGFzcygidzJ1aS1pY29uLWNoZWNrIikpOiJjaGVjayI9PT13LnR5cGUmJm51bGw9PW4uZ3JvdXAmJnIucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1jaGVjayIpLmFkZENsYXNzKCJ3MnVpLWljb24tZW1wdHkiKSksYS5wYXJlbnQoKS5maW5kKCJ0ciIpLnJlbW92ZUNsYXNzKCJ3MnVpLXNlbGVjdGVkIiksYS5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpfTt2YXIgaT0iIjtpZih3LnNlYXJjaCl7aSs9JzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogNDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgc2lsdmVyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRUNFQ0VDOyBwYWRkaW5nOiA4cHggNXB4OyI+ICAgIDxkaXYgY2xhc3M9IncydWktaWNvbiBpY29uLXNlYXJjaCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbWFyZ2luLXRvcDogNHB4OyBtYXJnaW4tbGVmdDogNnB4OyB3aWR0aDogMTFweDsgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCAhaW1wb3J0YW50OyI+PC9kaXY+ICAgIDxpbnB1dCBpZD0ibWVudS1zZWFyY2giIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDogMTAwJTsgb3V0bGluZTogbm9uZTsgcGFkZGluZy1sZWZ0OiAyMHB4OyIgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ii8+PC9kaXY+Jyx3LnN0eWxlKz0iO2JhY2tncm91bmQtY29sb3I6ICNFQ0VDRUMiO2Zvcih2YXIgcz13LmluZGV4PTA7czx3Lml0ZW1zLmxlbmd0aDtzKyspdy5pdGVtc1tzXS5oaWRkZW49ITF9aSs9JzxkaXYgY2xhc3M9IncydWktbWVudSIgc3R5bGU9InRvcDogJysody5zZWFyY2g/NDA6MCkrJ3B4Ij4nK3YoKSsiPC9kaXY+Ijt2YXIgbj1fKHRoaXMpLncyb3ZlcmxheShpLHcpO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoXygiI3cydWktb3ZlcmxheSIrZCsiICNtZW51LXNlYXJjaCIpLm9uKCJrZXl1cCIsaCkub24oImtleWRvd24iLGZ1bmN0aW9uKGUpezk9PT1lLmtleUNvZGUmJihlLnN0b3BQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSl9KSx3LnNlYXJjaCl7aWYoLTEhPT1bInRleHQiLCJwYXNzd29yZCJdLmluZGV4T2YoXyhvKVswXS50eXBlKXx8IlRFWFRBUkVBIj09PV8obylbMF0udGFnTmFtZS50b1VwcGVyQ2FzZSgpKXJldHVybjtfKCIjdzJ1aS1vdmVybGF5IitkKyIgI21lbnUtc2VhcmNoIikuZm9jdXMoKX1jKCl9LDI1MCksYygpLG59dmFyIGE9XygiI3cydWktb3ZlcmxheSIrZCsiIGRpdi53MnVpLW1lbnUiKSxyPWEuZmluZCgidHJbaW5kZXg9Iit3LmluZGV4KyJdIik7dD1hLnNjcm9sbFRvcCgpO2lmKGEuZmluZCgidHIudzJ1aS1zZWxlY3RlZCIpLnJlbW92ZUNsYXNzKCJ3MnVpLXNlbGVjdGVkIiksci5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLDA8ci5sZW5ndGgpe3ZhciBsPXJbMF0ub2Zmc2V0VG9wLTUsdT1hLmhlaWdodCgpO2Euc2Nyb2xsVG9wKHQpLChsPHR8fGwrci5oZWlnaHQoKT50K3UpJiZhLmFuaW1hdGUoe3Njcm9sbFRvcDpsLSh1LTIqci5oZWlnaHQoKSkvMn0sMjAwLCJsaW5lYXIiKX1jKCl9cmV0dXJuO2Z1bmN0aW9uIGMoKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XygiI3cydWktb3ZlcmxheSIrZCsiIHRyLncydWktc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCIpO3ZhciBlPV8oIiN3MnVpLW92ZXJsYXkiK2QrIiB0cltpbmRleD0iK3cuaW5kZXgrIl0iKSx0PV8oIiN3MnVpLW92ZXJsYXkiK2QrIiBkaXYudzJ1aS1tZW51Iikuc2Nyb2xsVG9wKCk7aWYoZS5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLHcudG1wJiYody50bXAuY29udGVudEhlaWdodD1fKCIjdzJ1aS1vdmVybGF5IitkKyIgdGFibGUiKS5oZWlnaHQoKSsody5zZWFyY2g/NTA6MTApLHcudG1wLmNvbnRlbnRXaWR0aD1fKCIjdzJ1aS1vdmVybGF5IitkKyIgdGFibGUiKS53aWR0aCgpKSwwPF8oIiN3MnVpLW92ZXJsYXkiK2QpLmxlbmd0aCYmXygiI3cydWktb3ZlcmxheSIrZClbMF0ucmVzaXplKCksMDxlLmxlbmd0aCl7dmFyIGk9ZVswXS5vZmZzZXRUb3AtNSxzPV8oIiN3MnVpLW92ZXJsYXkiK2QrIiBkaXYudzJ1aS1tZW51IikuaGVpZ2h0KCk7XygiI3cydWktb3ZlcmxheSIrZCsiIGRpdi53MnVpLW1lbnUiKS5zY3JvbGxUb3AodCksKGk8dHx8aStlLmhlaWdodCgpPnQrcykmJl8oIiN3MnVpLW92ZXJsYXkiK2QrIiBkaXYudzJ1aS1tZW51IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOmktKHMtMiplLmhlaWdodCgpKS8yfSwyMDAsImxpbmVhciIpfX0sMSl9ZnVuY3Rpb24gaChlKXt2YXIgdD10aGlzLnZhbHVlLGk9ITE7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSAxMzpfKCIjdzJ1aS1vdmVybGF5IitkKS5yZW1vdmUoKSxfLmZuLncybWVudUNsaWNrKGUsdy5pbmRleCk7YnJlYWs7Y2FzZSA5OmNhc2UgMjc6XygiI3cydWktb3ZlcmxheSIrZCkucmVtb3ZlKCksXy5mbi53Mm1lbnVDbGljayhlLC0xKTticmVhaztjYXNlIDM4OmZvcih3LmluZGV4PXcydXRpbHMuaXNJbnQody5pbmRleCk/cGFyc2VJbnQody5pbmRleCk6MCx3LmluZGV4LS07MDx3LmluZGV4JiZ3Lml0ZW1zW3cuaW5kZXhdLmhpZGRlbjspdy5pbmRleC0tO2lmKDA9PT13LmluZGV4JiZ3Lml0ZW1zW3cuaW5kZXhdLmhpZGRlbilmb3IoO3cuaXRlbXNbdy5pbmRleF0mJncuaXRlbXNbdy5pbmRleF0uaGlkZGVuOyl3LmluZGV4Kys7dy5pbmRleDwwJiYody5pbmRleD0wKSxpPSEwO2JyZWFrO2Nhc2UgNDA6Zm9yKHcuaW5kZXg9dzJ1dGlscy5pc0ludCh3LmluZGV4KT9wYXJzZUludCh3LmluZGV4KTowLHcuaW5kZXgrKzt3LmluZGV4PHcuaXRlbXMubGVuZ3RoLTEmJncuaXRlbXNbdy5pbmRleF0uaGlkZGVuOyl3LmluZGV4Kys7aWYody5pbmRleD09PXcuaXRlbXMubGVuZ3RoLTEmJncuaXRlbXNbdy5pbmRleF0uaGlkZGVuKWZvcig7dy5pdGVtc1t3LmluZGV4XSYmdy5pdGVtc1t3LmluZGV4XS5oaWRkZW47KXcuaW5kZXgtLTt3LmluZGV4Pj13Lml0ZW1zLmxlbmd0aCYmKHcuaW5kZXg9dy5pdGVtcy5sZW5ndGgtMSksaT0hMH1pZighaSl7Zm9yKHZhciBzPTAsbj0wO248dy5pdGVtcy5sZW5ndGg7bisrKXt2YXIgYT13Lml0ZW1zW25dLHI9IiIsbD0iIjstMSE9PVsiaXMiLCJiZWdpbnMgd2l0aCJdLmluZGV4T2Yody5tYXRjaCkmJihyPSJeIiksLTEhPT1bImlzIiwiZW5kcyB3aXRoIl0uaW5kZXhPZih3Lm1hdGNoKSYmKGw9IiQiKTt0cnl7bmV3IFJlZ0V4cChyK3QrbCwiaSIpLnRlc3QoYS50ZXh0KXx8Ii4uLiI9PT1hLnRleHQ/YS5oaWRkZW49ITE6YS5oaWRkZW49ITB9Y2F0Y2goZSl7fSJlbnVtIj09PW8udHlwZSYmLTEhPT1fLmluQXJyYXkoYS5pZCxpZHMpJiYoYS5oaWRkZW49ITApLCEwIT09YS5oaWRkZW4mJnMrK31mb3Iody5pbmRleD0wO3cuaW5kZXg8dy5pdGVtcy5sZW5ndGgtMSYmdy5pdGVtc1t3LmluZGV4XS5oaWRkZW47KXcuaW5kZXgrKztzPD0wJiYody5pbmRleD0tMSl9XyhvKS53Mm1lbnUoInJlZnJlc2giLHcpLGMoKX1mdW5jdGlvbiB2KGUsdCxpLHMpe2lmKHcuc3Bpbm5lcilyZXR1cm4nPHRhYmxlPjx0Ym9keT48dHI+PHRkIHN0eWxlPSJwYWRkaW5nOiA1cHggMTBweCAxMHB4IDEwcHg7IHRleHQtYWxpZ246IGNlbnRlciI+ICAgIDxkaXYgY2xhc3M9IncydWktc3Bpbm5lciIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiA1cHg7Ij48L2Rpdj4gICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogM3B4OyBjb2xvcjogIzk5OTsiPicrdzJ1dGlscy5sYW5nKCJMb2FkaW5nLi4uIikrIjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+Ijt2YXIgbj0wLGE9Jzx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSInKyh0PyIgc3ViLW1lbnUiOiIiKSsnIj48dGJvZHk+JyxyPW51bGwsbD1udWxsO251bGw9PWUmJihlPXcuaXRlbXMpO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgZD1lW29dO2lmKCJzdHJpbmciPT10eXBlb2YgZD9kPXtpZDpkLHRleHQ6ZH06KG51bGwhPWQudGV4dCYmbnVsbD09ZC5pZCYmKGQuaWQ9ZC50ZXh0KSxudWxsPT1kLnRleHQmJm51bGwhPWQuaWQmJihkLnRleHQ9ZC5pZCksbnVsbCE9ZC5jYXB0aW9uJiYoZC50ZXh0PWQuY2FwdGlvbiksbnVsbD09KHI9ZC5pbWcpJiYocj1udWxsKSxudWxsPT0obD1kLmljb24pJiYobD1udWxsKSksLTE9PVsicmFkaW8iLCJjaGVjayJdLmluZGV4T2Yody50eXBlKXx8QXJyYXkuaXNBcnJheShkLml0ZW1zKXx8KGw9ITA9PT1kLmNoZWNrZWQ/IncydWktaWNvbi1jaGVjayI6IncydWktaWNvbi1lbXB0eSIpLCEwIT09ZC5oaWRkZW4pe3ZhciB1PSIiLGM9ZC50ZXh0LGg9IiI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHcucmVuZGVyJiYoYz13LnJlbmRlcihkLHcpKSxyJiYodT0nPHRkIGNsYXNzPSJtZW51LWljb24iPjxkaXYgY2xhc3M9IncydWktdGItaW1hZ2UgdzJ1aS1pY29uICcrcisnIj48L2Rpdj48L3RkPicpLGwmJih1PSc8dGQgY2xhc3M9Im1lbnUtaWNvbiIgYWxpZ249ImNlbnRlciI+PHNwYW4gY2xhc3M9IncydWktaWNvbiAnK2wrJyI+PC9zcGFuPjwvdGQ+JyksImJyZWFrIiE9PWQudHlwZSYmbnVsbCE9YyYmIiIhPT1jJiYiLS0iIT1TdHJpbmcoYykuc3Vic3RyKDAsMikpe3ZhciBwPW4lMj09MD8idzJ1aS1pdGVtLWV2ZW4iOiJ3MnVpLWl0ZW0tb2RkIjshMCE9PXcuYWx0Um93cyYmKHA9IiIpO3ZhciBmPTE7IiI9PT11JiZmKyssbnVsbCE9ZC5jb3VudHx8bnVsbCE9ZC5ob3RrZXl8fCEwPT09ZC5yZW1vdmV8fEFycmF5LmlzQXJyYXkoZC5pdGVtcyl8fGYrKyxudWxsPT1kLnRvb2x0aXAmJm51bGwhPWQuaGludCYmKGQudG9vbHRpcD1kLmhpbnQpO3ZhciBnPSIiOyEwPT09ZC5yZW1vdmU/Zz0nPHNwYW4gY2xhc3M9InJlbW92ZSI+WDwvc3Bhbj4nOkFycmF5LmlzQXJyYXkoZC5pdGVtcyk/KGc9IjxzcGFuPjwvc3Bhbj4iLGg9Jzx0ciBzdHlsZT0iJysoZC5leHBhbmRlZD8iIjoiZGlzcGxheTogbm9uZSIpKyciPiAgICAgPHRkIGNvbHNwYW49IjMiPicrdihkLml0ZW1zLCEwLCFkLmV4cGFuZGVkLG8pKyI8L3RkPjx0cj4iKToobnVsbCE9ZC5jb3VudCYmKGcrPSI8c3Bhbj4iK2QuY291bnQrIjwvc3Bhbj4iKSxudWxsIT1kLmhvdGtleSYmKGcrPSc8c3BhbiBjbGFzcz0iaG90a2V5Ij4nK2QuaG90a2V5KyI8L3NwYW4+IikpLGErPSc8dHIgaW5kZXg9IicrbysnIiBzdHlsZT0iJysoZC5zdHlsZT9kLnN0eWxlOiIiKSsnIiAnKyhkLnRvb2x0aXA/J3RpdGxlPSInK3cydXRpbHMubGFuZyhkLnRvb2x0aXApKyciJzoiIikrJyBjbGFzcz0iJytwKyh3LmluZGV4PT09bz8iIHcydWktc2VsZWN0ZWQiOiIiKSsoITA9PT1kLmRpc2FibGVkPyIgdzJ1aS1kaXNhYmxlZCI6IiIpKygiIiE9PWg/IiBoYXMtc3ViLW1lbnUiKyhkLmV4cGFuZGVkPyIgZXhwYW5kZWQiOiIgY29sbGFwc2VkIik6IiIpKyciICAgICAgICBvbm1vdXNlZG93bj0iaWYgKCcrKCEwPT09ZC5kaXNhYmxlZD8idHJ1ZSI6ImZhbHNlIikrIikgcmV0dXJuOyAgICAgICAgICAgICAgIGpRdWVyeS5mbi53Mm1lbnVEb3duKGV2ZW50LCAiK28rIiwgICIrcysnKTsiICAgICAgICBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgICAgICAgICAgICAgICAgaWYgKCcrKCEwPT09ZC5kaXNhYmxlZD8idHJ1ZSI6ImZhbHNlIikrIikgcmV0dXJuOyAgICAgICAgICAgICAgIGpRdWVyeS5mbi53Mm1lbnVDbGljayhldmVudCwgIitvKyIsICAiK3MrJyk7Ij4nKyh0PyI8dGQ+PC90ZD4iOiIiKSt1KycgICA8dGQgY2xhc3M9Im1lbnUtdGV4dCIgY29sc3Bhbj0iJytmKyciPicrdzJ1dGlscy5sYW5nKGMpKyc8L3RkPiAgIDx0ZCBjbGFzcz0ibWVudS1jb3VudCI+JytnKyI8L3RkPjwvdHI+IitoLG4rK31lbHNle3ZhciBtPWMucmVwbGFjZSgvXi0rL2csIiIpO2ErPSc8dHI+PHRkIGNvbHNwYW49IjMiIGNsYXNzPSJtZW51LWRpdmlkZXIgJysoIiIhPW0/ImRpdmlkZXItdGV4dCI6IiIpKyciPiAgIDxkaXYgY2xhc3M9ImxpbmUiPicrbSsnPC9kaXY+ICAgPGRpdiBjbGFzcz0idGV4dCI+JyttKyI8L2Rpdj48L3RkPjwvdHI+In19ZVtvXT1kfXJldHVybiAwPT09biYmKGErPSc8dHI+PHRkIHN0eWxlPSJwYWRkaW5nOiAxM3B4OyBjb2xvcjogIzk5OTsgdGV4dC1hbGlnbjogY2VudGVyIj4nK3cubXNnTm9JdGVtcysiPC9kaXY+PC90ZD48L3RyPiIpLGErPSI8L3Rib2R5PjwvdGFibGU+In19LF8uZm4udzJjb2xvcj1mdW5jdGlvbihuLGUpe3ZhciB0PV8odGhpcyksYT10WzBdO2lmKHQuZGF0YSgic2tpcEluaXQiKSl0LnJlbW92ZURhdGEoInNraXBJbml0Iik7ZWxzZXt2YXIgcj1bLTEsLTFdO251bGw9PV8uZm4udzJjb2xvclBhbGV0dGUmJihfLmZuLncyY29sb3JQYWxldHRlPVtbIjAwMDAwMCIsIjMzMzMzMyIsIjU1NTU1NSIsIjc3Nzc3NyIsIjg4ODg4OCIsIjk5OTk5OSIsIkFBQUFBQSIsIkNDQ0NDQyIsIkRERERERCIsIkVFRUVFRSIsIkY3RjdGNyIsIkZGRkZGRiJdLFsiRkYwMTFCIiwiRkY5ODM4IiwiRkZDMzAwIiwiRkZGRDU5IiwiODZGRjE0IiwiMTRGRjdBIiwiMkVGRkZDIiwiMjY5M0ZGIiwiMDA2Q0U3IiwiOUIyNEY0IiwiRkYyMUY1IiwiRkYwMDk5Il0sWyJGRkVBRUEiLCJGQ0VGRTEiLCJGQ0Y0REMiLCJGRkZFQ0YiLCJFQkZGRDkiLCJEOUZGRTkiLCJFMEZGRkYiLCJFOEY0RkYiLCJFQ0Y0RkMiLCJFQUU2RjQiLCJGRkY1RkUiLCJGQ0YwRjciXSxbIkY0Q0NDQyIsIkZDRTVDRCIsIkZGRjFDMiIsIkZGRkRBMSIsIkQ1RkNCMSIsIkI1RjdEMCIsIkJGRkZGRiIsIkQ2RUNGRiIsIkNGRTJGMyIsIkQ5RDFFOSIsIkZGRTNGRCIsIkZGRDlGMCJdLFsiRUE5ODk5IiwiRjlDQjlDIiwiRkZFNDhDIiwiRjdGNTZGIiwiQjlGNzdFIiwiODRGMEIxIiwiODNGN0Y3IiwiQjVEQUZGIiwiOUZDNUU4IiwiQjRBN0Q2IiwiRkFCOUY2IiwiRkZBRERFIl0sWyJFMDY2NjYiLCJGNkIyNkIiLCJERUI3MzciLCJFMERFNTEiLCI4RkRCNDgiLCI1MkQxODkiLCI0RURFREIiLCI3NkFDRTMiLCI2RkE4REMiLCI4RTdDQzMiLCJFMDdFREEiLCJGMjZEQkQiXSxbIkNDMDgxNCIsIkU2OTEzOCIsIkFCODgxNiIsIkI1QjIwRSIsIjZCQUIzMCIsIjI3QTg1RiIsIjFCQThBNiIsIjNDODFDNyIsIjNEODVDNiIsIjY3NEVBNyIsIkExNEY5RCIsIkJGNDk5MCJdLFsiOTkwNTBDIiwiQjQ1RjE3IiwiODA2NTBFIiwiNzM3MTAzIiwiMzk1RTE0IiwiMTA3ODNEIiwiMTM2MTVFIiwiMDk0Nzg1IiwiMEE1Mzk0IiwiMzUxQzc1IiwiNzgwMTcyIiwiNzgyQzVBIl1dKTt2YXIgYyxsPV8uZm4udzJjb2xvclBhbGV0dGU7InN0cmluZyI9PXR5cGVvZiBuJiYobj17Y29sb3I6bix0cmFuc3BhcmVudDohMH0pLG51bGw9PW4ub25TZWxlY3QmJm51bGwhPWUmJihuLm9uU2VsZWN0PWUpLG4udHJhbnNwYXJlbnQmJiIzMzMzMzMiPT1sWzBdWzFdJiYobFswXS5zcGxpY2UoMSwxKSxsWzBdLnB1c2goIiIpKSxuLnRyYW5zcGFyZW50fHwiMzMzMzMzIj09bFswXVsxXXx8KGxbMF0uc3BsaWNlKDEsMCwiMzMzMzMzIiksbFswXS5wb3AoKSksbi5jb2xvciYmKG4uY29sb3I9U3RyaW5nKG4uY29sb3IpLnRvVXBwZXJDYXNlKCkpLCJzdHJpbmciPT10eXBlb2Ygbi5jb2xvciYmIiMiPT09bi5jb2xvci5zdWJzdHIoMCwxKSYmKG4uY29sb3I9bi5jb2xvci5zdWJzdHIoMSkpLG51bGw9PW4uZmlyZUNoYW5nZSYmKG4uZmlyZUNoYW5nZT0hMCksMD09PV8oIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGg/XyhhKS53Mm92ZXJsYXkodyhuKSxuKTooXygiI3cydWktb3ZlcmxheSAudzJ1aS1jb2xvciIpLnBhcmVudCgpLmh0bWwodyhuKSksXygiI3cydWktb3ZlcmxheSIpLnNob3coKSksXygiI3cydWktb3ZlcmxheSAuY29sb3IiKS5vZmYoIi53MmNvbG9yIikub24oIm1vdXNlZG93bi53MmNvbG9yIixmdW5jdGlvbihlKXt2YXIgdD1fKGUub3JpZ2luYWxFdmVudC50YXJnZXQpLmF0dHIoIm5hbWUiKTtyPV8oZS5vcmlnaW5hbEV2ZW50LnRhcmdldCkuYXR0cigiaW5kZXgiKS5zcGxpdCgiOiIpLCJJTlBVVCI9PT1hLnRhZ05hbWUudG9VcHBlckNhc2UoKT8obi5maXJlQ2hhbmdlJiZfKGEpLmNoYW5nZSgpLF8oYSkubmV4dCgpLmZpbmQoIj5kaXYiKS5jc3MoImJhY2tncm91bmQtY29sb3IiLHQpKTpfKGEpLmRhdGEoIl9jb2xvciIsdCksImZ1bmN0aW9uIj09dHlwZW9mIG4ub25TZWxlY3QmJm4ub25TZWxlY3QodCl9KS5vbigibW91c2V1cC53MmNvbG9yIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXswPF8oIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJl8oIiN3MnVpLW92ZXJsYXkiKS5yZW1vdmVEYXRhKCJrZWVwT3BlbiIpWzBdLmhpZGUoKX0sMTApfSksXygiI3cydWktb3ZlcmxheSAuY29sb3Itb3JpZ2luYWwiKS5vZmYoIi53MmNvbG9yIikub24oImNsaWNrLncyY29sb3IiLGZ1bmN0aW9uKGUpe3ZhciB0PXcydXRpbHMucGFyc2VDb2xvcihfKGUudGFyZ2V0KS5jc3MoImJhY2tncm91bmQtY29sb3IiKSk7bnVsbCE9dCYmKGQ9dCxvPXcydXRpbHMucmdiMmhzdihkKSxoKG8pLHUoKSxwKCkpfSksXygiI3cydWktb3ZlcmxheSBpbnB1dCIpLm9mZigiLncyY29sb3IiKS5vbigibW91c2Vkb3duLncyY29sb3IiLGZ1bmN0aW9uKGUpe18oIiN3MnVpLW92ZXJsYXkiKS5kYXRhKCJrZWVwT3BlbiIsITApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtfKCIjdzJ1aS1vdmVybGF5IikuZGF0YSgia2VlcE9wZW4iLCEwKX0sMTApLGUuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2hhbmdlLncyY29sb3IiLGZ1bmN0aW9uKCl7dmFyIGU9Xyh0aGlzKSx0PXBhcnNlRmxvYXQoZS52YWwoKSksaT1wYXJzZUZsb2F0KGUuYXR0cigibWF4IikpO2lzTmFOKHQpJiYodD0wKSwxPGkmJih0PXBhcnNlSW50KHQpKSwwPGkmJmk8dCYmKGUudmFsKGkpLHQ9aSksdDwwJiYoZS52YWwoMCksdD0wKTt2YXIgcz1lLmF0dHIoIm5hbWUiKSxuPXt9Oy0xIT09WyJyIiwiZyIsImIiLCJhIl0uaW5kZXhPZihzKT8oZFtzXT10LG89dzJ1dGlscy5yZ2IyaHN2KGQpKTotMSE9PVsiaCIsInMiLCJ2Il0uaW5kZXhPZihzKSYmKG5bc109dCksaChuKSx1KCkscCgpfSk7dmFyIG8sZD13MnV0aWxzLnBhcnNlQ29sb3Iobi5jb2xvcik7bnVsbD09ZCYmKGQ9e3I6MTQwLGc6MTUwLGI6MTYwLGE6MX0sbz13MnV0aWxzLnJnYjJoc3YoZCkpLG89dzJ1dGlscy5yZ2IyaHN2KGQpO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9Xyh0aGlzKS5maW5kKCIudmFsdWUxLCAudmFsdWUyIiksaT1wYXJzZUludCh0LndpZHRoKCkpLzI7dC5oYXNDbGFzcygibW92ZS14IikmJnQuY3NzKHtsZWZ0OmUub2Zmc2V0WC1pKyJweCJ9KSx0Lmhhc0NsYXNzKCJtb3ZlLXkiKSYmdC5jc3Moe3RvcDplLm9mZnNldFktaSsicHgifSksYz17JGVsOnQseDplLnBhZ2VYLHk6ZS5wYWdlWSx3aWR0aDp0LnBhcmVudCgpLndpZHRoKCksaGVpZ2h0OnQucGFyZW50KCkuaGVpZ2h0KCksbGVmdDpwYXJzZUludCh0LmNzcygibGVmdCIpKSx0b3A6cGFyc2VJbnQodC5jc3MoInRvcCIpKX0sZihlKSxfKCJib2R5Iikub2ZmKCIudzJjb2xvciIpLm9uKG0sZikub24oZyxzKX12YXIgaD1mdW5jdGlvbihlLHQpe251bGwhPWUuaCYmKG8uaD1lLmgpLG51bGwhPWUucyYmKG8ucz1lLnMpLG51bGwhPWUudiYmKG8udj1lLnYpLG51bGwhPWUuYSYmKGQuYT1lLmEsby5hPWUuYSk7dmFyIGk9InJnYmEoIisoZD13MnV0aWxzLmhzdjJyZ2IobykpLnIrIiwiK2QuZysiLCIrZC5iKyIsIitkLmErIikiLHM9W051bWJlcihkLnIpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLE51bWJlcihkLmcpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLE51bWJlcihkLmIpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXTtzLmZvckVhY2goZnVuY3Rpb24oZSx0KXsxPT09ZS5sZW5ndGgmJihzW3RdPSIwIitlKX0pLDE9PT1kLmEmJihpPXNbMF0rc1sxXStzWzJdKSxfKCIjdzJ1aS1vdmVybGF5IC5jb2xvci1wcmV2aWV3IikuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIixpKSxfKCIjdzJ1aS1vdmVybGF5IGlucHV0IikuZWFjaChmdW5jdGlvbihlLHQpe3QubmFtZSYmKG51bGwhPWRbdC5uYW1lXSYmKHQudmFsdWU9ZFt0Lm5hbWVdKSxudWxsIT1vW3QubmFtZV0mJih0LnZhbHVlPW9bdC5uYW1lXSksImEiPT09dC5uYW1lJiYodC52YWx1ZT1kLmEpKX0pLHQ/XygiI3cydWktb3ZlcmxheSAuY29sb3Itb3JpZ2luYWwiKS5jc3MoImJhY2tncm91bmQtY29sb3IiLGkpOigiSU5QVVQiPT09YS50YWdOYW1lLnRvVXBwZXJDYXNlKCk/KF8oYSkudmFsKGkpLmRhdGEoInNraXBJbml0IiwhMCksbi5maXJlQ2hhbmdlJiZfKGEpLmNoYW5nZSgpLF8oYSkubmV4dCgpLmZpbmQoIj5kaXYiKS5jc3MoImJhY2tncm91bmQtY29sb3IiLGkpKTpfKGEpLmRhdGEoIl9jb2xvciIsaSksImZ1bmN0aW9uIj09dHlwZW9mIG4ub25TZWxlY3QmJm4ub25TZWxlY3QoaSkpfSx1PWZ1bmN0aW9uKCl7dmFyIGU9XygiI3cydWktb3ZlcmxheSAucGFsZXR0ZSAudmFsdWUxIiksdD1fKCIjdzJ1aS1vdmVybGF5IC5yYWluYm93IC52YWx1ZTIiKSxpPV8oIiN3MnVpLW92ZXJsYXkgLmFscGhhIC52YWx1ZTIiKSxzPXBhcnNlSW50KGUud2lkdGgoKSkvMixuPXBhcnNlSW50KHQud2lkdGgoKSkvMjtlLmNzcyh7bGVmdDoxNTAqby5zLzEwMC1zLHRvcDoxMjUqKDEwMC1vLnYpLzEwMC1zfSksdC5jc3MoImxlZnQiLG8uaC8yLjQtbiksaS5jc3MoImxlZnQiLDE1MCpkLmEtbil9LHA9ZnVuY3Rpb24oKXt2YXIgZT13MnV0aWxzLmhzdjJyZ2Ioby5oLDEwMCwxMDApLHQ9ZS5yKyIsIitlLmcrIiwiK2UuYjtfKCIjdzJ1aS1vdmVybGF5IC5wYWxldHRlIikuY3NzKCJiYWNrZ3JvdW5kLWltYWdlIiwibGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKCIrdCsiLDApIDAlLCByZ2JhKCIrdCsiLDEpIDEwMCUpIil9LHM9ZnVuY3Rpb24oZSl7XygiYm9keSIpLm9mZigiLncyY29sb3IiKX0sZj1mdW5jdGlvbihlKXt2YXIgdD1jLiRlbCxpPWUucGFnZVgtYy54LHM9ZS5wYWdlWS1jLnksbj1jLmxlZnQraSxhPWMudG9wK3Mscj1wYXJzZUludCh0LndpZHRoKCkpLzI7bjwtciYmKG49LXIpLGE8LXImJihhPS1yKSxuPmMud2lkdGgtciYmKG49Yy53aWR0aC1yKSxhPmMuaGVpZ2h0LXImJihhPWMuaGVpZ2h0LXIpLHQuaGFzQ2xhc3MoIm1vdmUteCIpJiZ0LmNzcyh7bGVmdDpuKyJweCJ9KSx0Lmhhc0NsYXNzKCJtb3ZlLXkiKSYmdC5jc3Moe3RvcDphKyJweCJ9KTt2YXIgbD10LnBhcmVudCgpLmF0dHIoIm5hbWUiKSxvPXBhcnNlSW50KHQuY3NzKCJsZWZ0IikpK3IsZD1wYXJzZUludCh0LmNzcygidG9wIikpK3I7aWYoInBhbGV0dGUiPT09bCYmaCh7czpNYXRoLnJvdW5kKG8vYy53aWR0aCoxMDApLHY6TWF0aC5yb3VuZCgxMDAtZC9jLmhlaWdodCoxMDApfSksInJhaW5ib3ciPT09bCl7dmFyIHU9TWF0aC5yb3VuZCgyLjQqbyk7aCh7aDp1fSkscCgpfSJhbHBoYSI9PT1sJiZoKHthOnBhcnNlRmxvYXQoTnVtYmVyKG8vMTUwKS50b0ZpeGVkKDIpKX0pfTshMCE9PV8uZm4uX2NvbG9yQWR2YW5jZWQmJiEwIT09bi5hZHZhbmNlZHx8KF8oIiN3MnVpLW92ZXJsYXkgLncydWktY29sb3ItdGFicyA6bnRoLWNoaWxkKDIpIikuY2xpY2soKSxfKCIjdzJ1aS1vdmVybGF5IikucmVtb3ZlRGF0YSgia2VlcE9wZW4iKSksaCh7fSwhMCkscCgpLHUoKTt2YXIgZz0ibW91c2V1cC53MmNvbG9yIixtPSJtb3VzZW1vdmUudzJjb2xvciI7dzJ1dGlscy5pc0lPUyYmKCJ0b3VjaHN0YXJ0LncyY29sb3IiLGc9InRvdWNoZW5kLncyY29sb3IiLG09InRvdWNobW92ZS53MmNvbG9yICAiKSxfKCIjdzJ1aS1vdmVybGF5IC5wYWxldHRlIikub2ZmKCIudzJjb2xvciIpLm9uKCJtb3VzZWRvd24udzJjb2xvciIsaSksXygiI3cydWktb3ZlcmxheSAucmFpbmJvdyIpLm9mZigiLncyY29sb3IiKS5vbigibW91c2Vkb3duLncyY29sb3IiLGkpLF8oIiN3MnVpLW92ZXJsYXkgLmFscGhhIikub2ZmKCIudzJjb2xvciIpLm9uKCJtb3VzZWRvd24udzJjb2xvciIsaSksYS5uYXY9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UidXAiOnJbMF0tLTticmVhaztjYXNlImRvd24iOnJbMF0rKzticmVhaztjYXNlInJpZ2h0IjpyWzFdKys7YnJlYWs7Y2FzZSJsZWZ0IjpyWzFdLS19cmV0dXJuIHJbMF08MCYmKHJbMF09MCksclswXT5sLmxlbmd0aC0yJiYoclswXT1sLmxlbmd0aC0yKSxyWzFdPDAmJihyWzFdPTApLHJbMV0+bFswXS5sZW5ndGgtMSYmKHJbMV09bFswXS5sZW5ndGgtMSksY29sb3I9bFtyWzBdXVtyWzFdXSxfKGEpLmRhdGEoIl9jb2xvciIsY29sb3IpLGNvbG9yfX1mdW5jdGlvbiB3KGUpe2UuY29sb3I7Zm9yKHZhciB0LGk9JzxkaXYgY2xhc3M9IncydWktY29sb3IiIG9ubW91c2Vkb3duPSJqUXVlcnkodGhpcykucGFyZW50cyhcJy53MnVpLW92ZXJsYXlcJykuZGF0YShcJ2tlZXBPcGVuXCcsIHRydWUpIj48ZGl2IGNsYXNzPSJ3MnVpLWNvbG9yLXBhbGV0dGUiPjx0YWJsZSBjZWxsc3BhY2luZz0iNSI+PHRib2R5Picscz0wO3M8bC5sZW5ndGg7cysrKXtpKz0iPHRyPiI7Zm9yKHZhciBuPTA7bjxsW3NdLmxlbmd0aDtuKyspdD0iRkZGRkZGIj09PWxbc11bbl0/Ijtib3JkZXI6IDFweCBzb2xpZCAjZWZlZmVmIjoiIixpKz0nPHRkPiAgICA8ZGl2IGNsYXNzPSJjb2xvciAnKygiIj09PWxbc11bbl0/Im5vLWNvbG9yIjoiIikrJyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICMnK2xbc11bbl0rdCsnOyIgICAgICAgIG5hbWU9IicrbFtzXVtuXSsnIiBpbmRleD0iJytzKyI6IituKyciPicrKGUuY29sb3I9PWxbc11bbl0/IiYjMTQ5OyI6IiYjMTYwOyIpKyIgICAgPC9kaXY+PC90ZD4iLGUuY29sb3I9PWxbc11bbl0mJihyPVtzLG5dKTtpKz0iPC90cj4iLHM8MiYmKGkrPSc8dHI+PHRkIHN0eWxlPSJoZWlnaHQ6IDhweCIgY29sc3Bhbj0iOCI+PC90ZD48L3RyPicpfXJldHVybiBpKz0iPC90Ym9keT48L3RhYmxlPjwvZGl2PiIsaSs9JzxkaXYgY2xhc3M9IncydWktY29sb3ItYWR2YW5jZWQiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4gICA8ZGl2IGNsYXNzPSJjb2xvci1pbmZvIj4gICAgICAgPGRpdiBjbGFzcz0iY29sb3ItcHJldmlldy1iZyI+PGRpdiBjbGFzcz0iY29sb3ItcHJldmlldyI+PC9kaXY+PGRpdiBjbGFzcz0iY29sb3Itb3JpZ2luYWwiPjwvZGl2PjwvZGl2PiAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1wYXJ0Ij4gICAgICAgICAgIDxzcGFuPkg8L3NwYW4+IDxpbnB1dCBuYW1lPSJoIiBtYXhsZW5ndGg9IjMiIG1heD0iMzYwIiB0YWJpbmRleD0iMTAxIj4gICAgICAgICAgIDxzcGFuPlI8L3NwYW4+IDxpbnB1dCBuYW1lPSJyIiBtYXhsZW5ndGg9IjMiIG1heD0iMjU1IiB0YWJpbmRleD0iMTA0Ij4gICAgICAgPC9kaXY+ICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXBhcnQiPiAgICAgICAgICAgPHNwYW4+Uzwvc3Bhbj4gPGlucHV0IG5hbWU9InMiIG1heGxlbmd0aD0iMyIgbWF4PSIxMDAiIHRhYmluZGV4PSIxMDIiPiAgICAgICAgICAgPHNwYW4+Rzwvc3Bhbj4gPGlucHV0IG5hbWU9ImciIG1heGxlbmd0aD0iMyIgbWF4PSIyNTUiIHRhYmluZGV4PSIxMDUiPiAgICAgICA8L2Rpdj4gICAgICAgPGRpdiBjbGFzcz0iY29sb3ItcGFydCI+ICAgICAgICAgICA8c3Bhbj5WPC9zcGFuPiA8aW5wdXQgbmFtZT0idiIgbWF4bGVuZ3RoPSIzIiBtYXg9IjEwMCIgdGFiaW5kZXg9IjEwMyI+ICAgICAgICAgICA8c3Bhbj5CPC9zcGFuPiA8aW5wdXQgbmFtZT0iYiIgbWF4bGVuZ3RoPSIzIiBtYXg9IjI1NSIgdGFiaW5kZXg9IjEwNiI+ICAgICAgIDwvZGl2PiAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1wYXJ0IiBzdHlsZT0ibWFyZ2luOiAzMHB4IDBweCAwcHggMnB4Ij4gICAgICAgICAgIDxzcGFuIHN0eWxlPSJ3aWR0aDogNDBweCI+T3BhY2l0eTwvc3Bhbj4gICAgICAgICAgICA8aW5wdXQgbmFtZT0iYSIgbWF4bGVuZ3RoPSI1IiBtYXg9IjEiIHN0eWxlPSJ3aWR0aDogMzJweCAhaW1wb3J0YW50IiB0YWJpbmRleD0iMTA3Ij4gICAgICAgPC9kaXY+ICAgPC9kaXY+ICAgPGRpdiBjbGFzcz0icGFsZXR0ZSIgbmFtZT0icGFsZXR0ZSI+ICAgICAgIDxkaXYgY2xhc3M9InBhbGV0dGUtYmciPjwvZGl2PiAgICAgICA8ZGl2IGNsYXNzPSJ2YWx1ZTEgbW92ZS14IG1vdmUteSI+PC9kaXY+ICAgPC9kaXY+ICAgPGRpdiBjbGFzcz0icmFpbmJvdyIgbmFtZT0icmFpbmJvdyI+ICAgICAgIDxkaXYgY2xhc3M9InZhbHVlMiBtb3ZlLXgiPjwvZGl2PiAgIDwvZGl2PiAgIDxkaXYgY2xhc3M9ImFscGhhIiBuYW1lPSJhbHBoYSI+ICAgICAgIDxkaXYgY2xhc3M9ImFscGhhLWJnIj48L2Rpdj4gICAgICAgPGRpdiBjbGFzcz0idmFsdWUyIG1vdmUteCI+PC9kaXY+ICAgPC9kaXY+PC9kaXY+JyxpKz0iPGRpdiBjbGFzcz1cIncydWktY29sb3ItdGFic1wiPiAgIDxkaXYgY2xhc3M9XCJ3MnVpLWNvbG9yLXRhYiBzZWxlY3RlZFwiIG9uY2xpY2s9XCJqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ3NlbGVjdGVkJykubmV4dCgpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpLnBhcmVudHMoJy53MnVpLW92ZXJsYXknKS5maW5kKCcudzJ1aS1jb2xvci1hZHZhbmNlZCcpLmhpZGUoKS5wYXJlbnQoKS5maW5kKCcudzJ1aS1jb2xvci1wYWxldHRlJykuc2hvdygpOyBqUXVlcnkuZm4uX2NvbG9yQWR2YW5jZWQgPSBmYWxzZTsgalF1ZXJ5KCcjdzJ1aS1vdmVybGF5JylbMF0ucmVzaXplKClcIj48c3BhbiBjbGFzcz1cIncydWktaWNvbiB3MnVpLWljb24tY29sb3JzXCI+PC9zcGFuPjwvZGl2PiAgIDxkaXYgY2xhc3M9XCJ3MnVpLWNvbG9yLXRhYlwiIG9uY2xpY2s9XCJqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ3NlbGVjdGVkJykucHJldigpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpLnBhcmVudHMoJy53MnVpLW92ZXJsYXknKS5maW5kKCcudzJ1aS1jb2xvci1hZHZhbmNlZCcpLnNob3coKS5wYXJlbnQoKS5maW5kKCcudzJ1aS1jb2xvci1wYWxldHRlJykuaGlkZSgpOyBqUXVlcnkuZm4uX2NvbG9yQWR2YW5jZWQgPSB0cnVlOyBqUXVlcnkoJyN3MnVpLW92ZXJsYXknKVswXS5yZXNpemUoKVwiPjxzcGFuIGNsYXNzPVwidzJ1aS1pY29uIHcydWktaWNvbi1zZXR0aW5nc1wiPjwvc3Bhbj48L2Rpdj4gICA8ZGl2IHN0eWxlPVwicGFkZGluZzogOHB4OyB0ZXh0LWFsaWduOiByaWdodDtcIj4iKygic3RyaW5nIj09dHlwZW9mIGUuaHRtbD9lLmh0bWw6IiIpKyc8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsgaGVpZ2h0OiAwIj48L2Rpdj4nfX19KGpRdWVyeSksZnVuY3Rpb24oJCl7dmFyIHcyZ3JpZD1mdW5jdGlvbihlKXt0aGlzLm5hbWU9bnVsbCx0aGlzLmJveD1udWxsLHRoaXMuY29sdW1ucz1bXSx0aGlzLmNvbHVtbkdyb3Vwcz1bXSx0aGlzLnJlY29yZHM9W10sdGhpcy5zdW1tYXJ5PVtdLHRoaXMuc2VhcmNoZXM9W10sdGhpcy5zb3J0TWFwPXt9LHRoaXMudG9vbGJhcj17fSx0aGlzLnRvdGFsPTAsdGhpcy5yZWNpZD1udWxsLHRoaXMubGFzdD17ZmllbGQ6IiIsbGFiZWw6IiIsbG9naWM6Ik9SIixzZWFyY2g6IiIsc2VhcmNoSWRzOltdLHNlbGVjdGlvbjp7aW5kZXhlczpbXSxjb2x1bW5zOnt9fSxtdWx0aTohMSxzY3JvbGxUb3A6MCxzY3JvbGxMZWZ0OjAsY29sU3RhcnQ6MCxjb2xFbmQ6MCxzb3J0RGF0YTpudWxsLHNvcnRDb3VudDowLHhocjpudWxsLHJhbmdlX3N0YXJ0Om51bGwscmFuZ2VfZW5kOm51bGwsc2VsX2luZDpudWxsLHNlbF9jb2w6bnVsbCxzZWxfdHlwZTpudWxsLGVkaXRfY29sOm51bGwsaXNTYWZhcmk6L14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX0sJC5leHRlbmQoITAsdGhpcyx3Mm9iai5ncmlkKSx0aGlzLnNob3c9JC5leHRlbmQoITAse30sdzJncmlkLnByb3RvdHlwZS5zaG93KSx0aGlzLnBvc3REYXRhPSQuZXh0ZW5kKCEwLHt9LHcyZ3JpZC5wcm90b3R5cGUucG9zdERhdGEpLHRoaXMuaHR0cEhlYWRlcnM9JC5leHRlbmQoITAse30sdzJncmlkLnByb3RvdHlwZS5odHRwSGVhZGVycyksdGhpcy5idXR0b25zPSQuZXh0ZW5kKCEwLHt9LHcyZ3JpZC5wcm90b3R5cGUuYnV0dG9ucyksdGhpcy5vcGVyYXRvcnM9JC5leHRlbmQoITAse30sdzJncmlkLnByb3RvdHlwZS5vcGVyYXRvcnMpLHRoaXMub3BlcmF0b3JzTWFwPSQuZXh0ZW5kKCEwLHt9LHcyZ3JpZC5wcm90b3R5cGUub3BlcmF0b3JzTWFwKSx0aGlzLnN0YXRlQ29sUHJvcHM9JC5leHRlbmQoITAse30sdzJncmlkLnByb3RvdHlwZS5zdGF0ZUNvbFByb3BzKSx0aGlzLnN0YXRlQ29sRGVmYXVsdHM9JC5leHRlbmQoITAse30sdzJncmlkLnByb3RvdHlwZS5zdGF0ZUNvbERlZmF1bHRzKSwkLmV4dGVuZCghMCx0aGlzLGUpfTskLmZuLncyZ3JpZD1mdW5jdGlvbihlKXtpZigkLmlzUGxhaW5PYmplY3QoZSkpe2lmKCF3MnV0aWxzLmNoZWNrTmFtZShlLCJ3MmdyaWQiKSlyZXR1cm47dmFyIHQsaT1lLmNvbHVtbnMscz1lLmNvbHVtbkdyb3VwcyxuPWUucmVjb3JkcyxhPWUuc2VhcmNoZXMscj1lLnNlYXJjaERhdGEsbD1lLnNvcnREYXRhLG89bmV3IHcyZ3JpZChlKTtpZigkLmV4dGVuZChvLHtyZWNvcmRzOltdLGNvbHVtbnM6W10sc2VhcmNoZXM6W10sc29ydERhdGE6W10sc2VhcmNoRGF0YTpbXSxoYW5kbGVyczpbXX0pLGkpZm9yKHQ9MDt0PGkubGVuZ3RoO3QrKylvLmNvbHVtbnNbdF09JC5leHRlbmQoITAse30saVt0XSk7aWYocylmb3IodD0wO3Q8cy5sZW5ndGg7dCsrKW8uY29sdW1uR3JvdXBzW3RdPSQuZXh0ZW5kKCEwLHt9LHNbdF0pO2lmKGEpZm9yKHQ9MDt0PGEubGVuZ3RoO3QrKylvLnNlYXJjaGVzW3RdPSQuZXh0ZW5kKCEwLHt9LGFbdF0pO2lmKHIpZm9yKHQ9MDt0PHIubGVuZ3RoO3QrKylvLnNlYXJjaERhdGFbdF09JC5leHRlbmQoITAse30sclt0XSk7aWYobClmb3IodD0wO3Q8bC5sZW5ndGg7dCsrKW8uc29ydERhdGFbdF09JC5leHRlbmQoITAse30sbFt0XSk7aWYobilmb3IodmFyIGQ9MDtkPG4ubGVuZ3RoO2QrKyl7aWYobnVsbCE9bltkXVtvLnJlY2lkXSYmKG5bZF0ucmVjaWQ9bltkXVtvLnJlY2lkXSksbnVsbD09bltkXS5yZWNpZClyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygiRVJST1I6IENhbm5vdCBhZGQgcmVjb3JkcyB3aXRob3V0IHJlY2lkLiAob2JqOiAiK28ubmFtZSsiKSIpO28ucmVjb3Jkc1tkXT0kLmV4dGVuZCghMCx7fSxuW2RdKX1mb3IodmFyIHU9MDt1PG8uY29sdW1ucy5sZW5ndGg7dSsrKXt2YXIgYz1vLmNvbHVtbnNbdV0saD1jLnNlYXJjaGFibGU7aWYobnVsbCE9aCYmITEhPT1oJiZudWxsPT1vLmdldFNlYXJjaChjLmZpZWxkKSlpZigkLmlzUGxhaW5PYmplY3QoaCkpby5hZGRTZWFyY2goJC5leHRlbmQoe2ZpZWxkOmMuZmllbGQsbGFiZWw6Yy50ZXh0LHR5cGU6InRleHQifSxoKSk7ZWxzZXt2YXIgcD1jLnNlYXJjaGFibGUsZj0iIjshMD09PWMuc2VhcmNoYWJsZSYmKHA9InRleHQiLGY9J3NpemU9IjIwIicpLG8uYWRkU2VhcmNoKHtmaWVsZDpjLmZpZWxkLGxhYmVsOmMudGV4dCx0eXBlOnAsYXR0cjpmfSl9fXJldHVybiBvLmluaXRUb29sYmFyKCksby51cGRhdGVUb29sYmFyKCksMCE9PSQodGhpcykubGVuZ3RoJiZvLnJlbmRlcigkKHRoaXMpWzBdKSx3MnVpW28ubmFtZV09b312YXIgZz13MnVpWyQodGhpcykuYXR0cigibmFtZSIpXTtyZXR1cm4gZz8wPGFyZ3VtZW50cy5sZW5ndGg/KGdbZV0mJmdbZV0uYXBwbHkoZyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpLHRoaXMpOmc6bnVsbH0sdzJncmlkLnByb3RvdHlwZT17aGVhZGVyOiIiLHVybDoiIixsaW1pdDoxMDAsb2Zmc2V0OjAsc2VhcmNoRGF0YTpbXSxzb3J0RGF0YTpbXSxyb3V0ZURhdGE6e30scG9zdERhdGE6e30saHR0cEhlYWRlcnM6e30sc2hvdzp7aGVhZGVyOiExLHRvb2xiYXI6ITEsZm9vdGVyOiExLGNvbHVtbkhlYWRlcnM6ITAsbGluZU51bWJlcnM6ITEsb3JkZXJDb2x1bW46ITEsZXhwYW5kQ29sdW1uOiExLHNlbGVjdENvbHVtbjohMSxlbXB0eVJlY29yZHM6ITAsdG9vbGJhclJlbG9hZDohMCx0b29sYmFyQ29sdW1uczohMCx0b29sYmFyU2VhcmNoOiEwLHRvb2xiYXJJbnB1dDohMCx0b29sYmFyQWRkOiExLHRvb2xiYXJFZGl0OiExLHRvb2xiYXJEZWxldGU6ITEsdG9vbGJhclNhdmU6ITEsc2VhcmNoQWxsOiEwLHNlYXJjaEhpZGRlbk1zZzohMSxzdGF0dXNSYW5nZTohMCxzdGF0dXNCdWZmZXJlZDohMSxzdGF0dXNSZWNvcmRJRDohMCxzdGF0dXNTZWxlY3Rpb246ITAsc3RhdHVzUmVzcG9uc2U6ITAsc3RhdHVzU29ydDohMSxzdGF0dXNTZWFyY2g6ITEscmVjb3JkVGl0bGVzOiEwLHNlbGVjdGlvbkJvcmRlcjohMCxza2lwUmVjb3JkczohMCxzYXZlUmVzdG9yZVN0YXRlOiEwfSxzdGF0ZUlkOm51bGwsaGFzRm9jdXM6ITEsYXV0b0xvYWQ6ITAsZml4ZWRCb2R5OiEwLHJlY29yZEhlaWdodDoyNCxsaW5lTnVtYmVyV2lkdGg6bnVsbCxrZXlib2FyZDohMCxzZWxlY3RUeXBlOiJyb3ciLG11bHRpU2VhcmNoOiEwLG11bHRpU2VsZWN0OiEwLG11bHRpU29ydDohMCxyZW9yZGVyQ29sdW1uczohMSxyZW9yZGVyUm93czohMSxzaG93RXh0cmFPblNlYXJjaDowLG1hcmtTZWFyY2g6ITAsY29sdW1uVG9vbHRpcDoibm9ybWFsIixkaXNhYmxlQ1ZTOiExLHRleHRTZWFyY2g6ImJlZ2lucyIsbmVzdGVkRmllbGRzOiEwLHZzX3N0YXJ0OjE1MCx2c19leHRyYToxNSxzdHlsZToiIixyYW5nZXM6W10sbWVudTpbXSxtZXRob2Q6bnVsbCxkYXRhVHlwZTpudWxsLHBhcnNlcjpudWxsLHN0YXRlQ29sUHJvcHM6e3RleHQ6ITEsZmllbGQ6ITAsc2l6ZTohMCxtaW46ITEsbWF4OiExLGdyaWRNaW5XaWR0aDohMSxzaXplQ29ycmVjdGVkOiExLHNpemVDYWxjdWxhdGVkOiEwLHNpemVPcmlnaW5hbDohMCxzaXplVHlwZTohMCxoaWRkZW46ITAsc29ydGFibGU6ITEsc2VhcmNoYWJsZTohMSxyZXNpemFibGU6ITEsaGlkZWFibGU6ITEsYXR0cjohMSxzdHlsZTohMSxyZW5kZXI6ITEsdGl0bGU6ITEsZWRpdGFibGU6ITEsZnJvemVuOiEwLGluZm86ITF9LHN0YXRlQ29sRGVmYXVsdHM6e3RleHQ6IiIsZmllbGQ6IiIsc2l6ZTpudWxsLG1pbjoyMCxtYXg6bnVsbCxncmlkTWluV2lkdGg6bnVsbCxzaXplQ29ycmVjdGVkOm51bGwsc2l6ZUNhbGN1bGF0ZWQ6bnVsbCxzaXplT3JpZ2luYWw6bnVsbCxzaXplVHlwZTpudWxsLGhpZGRlbjohMSxzb3J0YWJsZTohMSxzZWFyY2hhYmxlOiExLHJlc2l6YWJsZTohMCxoaWRlYWJsZTohMCxhdHRyOiIiLHN0eWxlOiIiLHJlbmRlcjpudWxsLHRpdGxlOm51bGwsZWRpdGFibGU6e30sZnJvemVuOiExLGluZm86bnVsbH0sbXNnRGVsZXRlOiJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIE5OIHJlY29yZHM/Iixtc2dEZWxldGVCdG46IkRlbGV0ZSIsbXNnTm90SlNPTjoiUmV0dXJuZWQgZGF0YSBpcyBub3QgaW4gdmFsaWQgSlNPTiBmb3JtYXQuIixtc2dBSkFYZXJyb3I6IkFKQVggZXJyb3IuIFNlZSBjb25zb2xlIGZvciBtb3JlIGRldGFpbHMuIixtc2dSZWZyZXNoOiJSZWZyZXNoaW5nLi4uIixtc2dOZWVkUmVsb2FkOiJZb3VyIHJlbW90ZSBkYXRhIHNvdXJjZSByZWNvcmQgY291bnQgaGFzIGNoYW5nZWQsIHJlbG9hZGluZyBmcm9tIHRoZSBmaXJzdCByZWNvcmQuIixtc2dFbXB0eToiIixidXR0b25zOntyZWxvYWQ6e3R5cGU6ImJ1dHRvbiIsaWQ6IncydWktcmVsb2FkIixpY29uOiJ3MnVpLWljb24tcmVsb2FkIix0b29sdGlwOiJSZWxvYWQgZGF0YSBpbiB0aGUgbGlzdCJ9LGNvbHVtbnM6e3R5cGU6ImRyb3AiLGlkOiJ3MnVpLWNvbHVtbi1vbi1vZmYiLGljb246IncydWktaWNvbi1jb2x1bW5zIix0b29sdGlwOiJTaG93L2hpZGUgY29sdW1ucyIsYXJyb3c6ITEsaHRtbDoiIn0sc2VhcmNoOnt0eXBlOiJodG1sIixpZDoidzJ1aS1zZWFyY2giLGh0bWw6IjxkaXYgY2xhc3M9XCJ3MnVpLWljb24gaWNvbi1zZWFyY2gtZG93biB3MnVpLXNlYXJjaC1kb3duXCIgb25jbGljaz1cInZhciBncmlkID0gdzJ1aVtqUXVlcnkodGhpcykucGFyZW50cygnZGl2LncydWktZ3JpZCcpLmF0dHIoJ25hbWUnKV07IGdyaWQuc2VhcmNoU2hvd0ZpZWxkcygpXCI+PC9kaXY+In0sInNlYXJjaC1nbyI6e3R5cGU6ImRyb3AiLGlkOiJ3MnVpLXNlYXJjaC1hZHZhbmNlZCIsaWNvbjoidzJ1aS1pY29uLXNlYXJjaCIsdGV4dDoiU2VhcmNoIix0b29sdGlwOiJPcGVuIFNlYXJjaCBGaWVsZHMifSxhZGQ6e3R5cGU6ImJ1dHRvbiIsaWQ6IncydWktYWRkIix0ZXh0OiJBZGQgTmV3Iix0b29sdGlwOiJBZGQgbmV3IHJlY29yZCIsaWNvbjoidzJ1aS1pY29uLXBsdXMifSxlZGl0Ont0eXBlOiJidXR0b24iLGlkOiJ3MnVpLWVkaXQiLHRleHQ6IkVkaXQiLHRvb2x0aXA6IkVkaXQgc2VsZWN0ZWQgcmVjb3JkIixpY29uOiJ3MnVpLWljb24tcGVuY2lsIixkaXNhYmxlZDohMH0sZGVsZXRlOnt0eXBlOiJidXR0b24iLGlkOiJ3MnVpLWRlbGV0ZSIsdGV4dDoiRGVsZXRlIix0b29sdGlwOiJEZWxldGUgc2VsZWN0ZWQgcmVjb3JkcyIsaWNvbjoidzJ1aS1pY29uLWNyb3NzIixkaXNhYmxlZDohMH0sc2F2ZTp7dHlwZToiYnV0dG9uIixpZDoidzJ1aS1zYXZlIix0ZXh0OiJTYXZlIix0b29sdGlwOiJTYXZlIGNoYW5nZWQgcmVjb3JkcyIsaWNvbjoidzJ1aS1pY29uLWNoZWNrIn19LG9wZXJhdG9yczp7dGV4dDpbImlzIiwiYmVnaW5zIiwiY29udGFpbnMiLCJlbmRzIl0sbnVtYmVyOlsiPSIsImJldHdlZW4iLCI+IiwiPCIsIj49IiwiPD0iXSxkYXRlOlsiaXMiLCJiZXR3ZWVuIix7b3BlcjoibGVzcyIsdGV4dDoiYmVmb3JlIn0se29wZXI6Im1vcmUiLHRleHQ6ImFmdGVyIn1dLGxpc3Q6WyJpcyJdLGhleDpbImlzIiwiYmV0d2VlbiJdLGNvbG9yOlsiaXMiLCJiZWdpbnMiLCJjb250YWlucyIsImVuZHMiXSxlbnVtOlsiaW4iLCJub3QgaW4iXX0sb3BlcmF0b3JzTWFwOnt0ZXh0OiJ0ZXh0IixpbnQ6Im51bWJlciIsZmxvYXQ6Im51bWJlciIsbW9uZXk6Im51bWJlciIsY3VycmVuY3k6Im51bWJlciIscGVyY2VudDoibnVtYmVyIixoZXg6ImhleCIsYWxwaGFudW1lcmljOiJ0ZXh0Iixjb2xvcjoiY29sb3IiLGRhdGU6ImRhdGUiLHRpbWU6ImRhdGUiLGRhdGV0aW1lOiJkYXRlIixsaXN0OiJsaXN0Iixjb21ibzoidGV4dCIsZW51bToiZW51bSIsZmlsZToiZW51bSIsc2VsZWN0OiJsaXN0IixyYWRpbzoibGlzdCIsY2hlY2tib3g6Imxpc3QiLHRvZ2dsZToibGlzdCJ9LG9uQWRkOm51bGwsb25FZGl0Om51bGwsb25SZXF1ZXN0Om51bGwsb25Mb2FkOm51bGwsb25EZWxldGU6bnVsbCxvblNhdmU6bnVsbCxvblNlbGVjdDpudWxsLG9uVW5zZWxlY3Q6bnVsbCxvbkNsaWNrOm51bGwsb25EYmxDbGljazpudWxsLG9uQ29udGV4dE1lbnU6bnVsbCxvbk1lbnVDbGljazpudWxsLG9uQ29sdW1uQ2xpY2s6bnVsbCxvbkNvbHVtbkRibENsaWNrOm51bGwsb25Db2x1bW5SZXNpemU6bnVsbCxvbkNvbHVtbkF1dG9SZXNpemU6bnVsbCxvblNvcnQ6bnVsbCxvblNlYXJjaDpudWxsLG9uU2VhcmNoT3BlbjpudWxsLG9uQ2hhbmdlOm51bGwsb25SZXN0b3JlOm51bGwsb25FeHBhbmQ6bnVsbCxvbkNvbGxhcHNlOm51bGwsb25FcnJvcjpudWxsLG9uS2V5ZG93bjpudWxsLG9uVG9vbGJhcjpudWxsLG9uQ29sdW1uT25PZmY6bnVsbCxvbkNvcHk6bnVsbCxvblBhc3RlOm51bGwsb25TZWxlY3Rpb25FeHRlbmQ6bnVsbCxvbkVkaXRGaWVsZDpudWxsLG9uUmVuZGVyOm51bGwsb25SZWZyZXNoOm51bGwsb25SZWxvYWQ6bnVsbCxvblJlc2l6ZTpudWxsLG9uRGVzdHJveTpudWxsLG9uU3RhdGVTYXZlOm51bGwsb25TdGF0ZVJlc3RvcmU6bnVsbCxvbkZvY3VzOm51bGwsb25CbHVyOm51bGwsb25SZW9yZGVyUm93Om51bGwsYWRkOmZ1bmN0aW9uKGUsdCl7JC5pc0FycmF5KGUpfHwoZT1bZV0pO2Zvcih2YXIgaT0wLHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIG49ZVtzXTtudWxsIT1uW3RoaXMucmVjaWRdJiYobi5yZWNpZD1uW3RoaXMucmVjaWRdKSxudWxsIT1uLnJlY2lkPyhuLncydWkmJiEwPT09bi53MnVpLnN1bW1hcnk/dD90aGlzLnN1bW1hcnkudW5zaGlmdChuKTp0aGlzLnN1bW1hcnkucHVzaChuKTp0P3RoaXMucmVjb3Jkcy51bnNoaWZ0KG4pOnRoaXMucmVjb3Jkcy5wdXNoKG4pLGkrKyk6Y29uc29sZS5sb2coIkVSUk9SOiBDYW5ub3QgYWRkIHJlY29yZCB3aXRob3V0IHJlY2lkLiAob2JqOiAiK3RoaXMubmFtZSsiKSIpfXJldHVybigib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldCk/dGhpcy5yZWZyZXNoKCk6KHRoaXMudG90YWw9dGhpcy5yZWNvcmRzLmxlbmd0aCx0aGlzLmxvY2FsU29ydCghMSwhMCksdGhpcy5sb2NhbFNlYXJjaCgpLHRoaXMucmVmcmVzaEJvZHkoKSx0aGlzLnJlc2l6ZVJlY29yZHMoKSksaX0sZmluZDpmdW5jdGlvbihlLHQpe251bGw9PWUmJihlPXt9KTt2YXIgaT1bXSxzPSExO2Zvcih2YXIgbiBpbiBlKS0xIT1TdHJpbmcobikuaW5kZXhPZigiLiIpJiYocz0hMCk7Zm9yKHZhciBhPTA7YTx0aGlzLnJlY29yZHMubGVuZ3RoO2ErKyl7dmFyIHI9ITA7Zm9yKHZhciBuIGluIGUpe3ZhciBsPXRoaXMucmVjb3Jkc1thXVtuXTtzJiYtMSE9U3RyaW5nKG4pLmluZGV4T2YoIi4iKSYmKGw9dGhpcy5wYXJzZUZpZWxkKHRoaXMucmVjb3Jkc1thXSxuKSksIm5vdC1udWxsIj09ZVtuXT9udWxsIT1sJiYiIiE9PWx8fChyPSExKTplW25dIT1sJiYocj0hMSl9ciYmITAhPT10JiZpLnB1c2godGhpcy5yZWNvcmRzW2FdLnJlY2lkKSxyJiYhMD09PXQmJmkucHVzaChhKX1yZXR1cm4gaX0sc2V0OmZ1bmN0aW9uKGUsdCxpKXtpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYoaT10LHQ9ZSxlPW51bGwpLG51bGw9PWUpe2Zvcih2YXIgcz0wO3M8dGhpcy5yZWNvcmRzLmxlbmd0aDtzKyspJC5leHRlbmQoITAsdGhpcy5yZWNvcmRzW3NdLHQpOyEwIT09aSYmdGhpcy5yZWZyZXNoKCl9ZWxzZXt2YXIgbj10aGlzLmdldChlLCEwKTtpZihudWxsPT1uKXJldHVybiExOyF0aGlzLnJlY29yZHNbbl18fHRoaXMucmVjb3Jkc1tuXS5yZWNpZCE9ZT8kLmV4dGVuZCghMCx0aGlzLnN1bW1hcnlbbl0sdCk6JC5leHRlbmQoITAsdGhpcy5yZWNvcmRzW25dLHQpLCEwIT09aSYmdGhpcy5yZWZyZXNoUm93KGUsbil9cmV0dXJuITB9LGdldDpmdW5jdGlvbihlLHQpe2lmKCQuaXNBcnJheShlKSl7Zm9yKHZhciBpPVtdLHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5nZXQoZVtzXSx0KTtudWxsIT09biYmaS5wdXNoKG4pfXJldHVybiBpfXZhciBhPXRoaXMubGFzdC5pZENhY2hlO2lmKGF8fCh0aGlzLmxhc3QuaWRDYWNoZT1hPXt9KSwibnVtYmVyIj09dHlwZW9mKHM9YVtlXSkpe2lmKDA8PXMmJnM8dGhpcy5yZWNvcmRzLmxlbmd0aCYmdGhpcy5yZWNvcmRzW3NdLnJlY2lkPT1lKXJldHVybiEwPT09dD9zOnRoaXMucmVjb3Jkc1tzXTtpZigwPD0ocz1+cykmJnM8dGhpcy5zdW1tYXJ5Lmxlbmd0aCYmdGhpcy5zdW1tYXJ5W3NdLnJlY2lkPT1lKXJldHVybiEwPT09dD9zOnRoaXMuc3VtbWFyeVtzXTt0aGlzLmxhc3QuaWRDYWNoZT1hPXt9fWZvcihzPTA7czx0aGlzLnJlY29yZHMubGVuZ3RoO3MrKylpZih0aGlzLnJlY29yZHNbc10ucmVjaWQ9PWUpcmV0dXJuIGFbZV09cywhMD09PXQ/czp0aGlzLnJlY29yZHNbc107Zm9yKHM9MDtzPHRoaXMuc3VtbWFyeS5sZW5ndGg7cysrKWlmKHRoaXMuc3VtbWFyeVtzXS5yZWNpZD09ZSlyZXR1cm4gYVtlXT1+cywhMD09PXQ/czp0aGlzLnN1bW1hcnlbc107cmV0dXJuIG51bGx9LGdldEZpcnN0OmZ1bmN0aW9uKCl7aWYoMD09dGhpcy5yZWNvcmRzLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgZT10aGlzLnJlY29yZHNbMF0ucmVjaWQsdD10aGlzLmxhc3Quc2VhcmNoSWRzO3JldHVybiAwPHRoaXMuc2VhcmNoRGF0YS5sZW5ndGgmJihlPUFycmF5LmlzQXJyYXkodCkmJjA8dC5sZW5ndGg/dGhpcy5yZWNvcmRzW3RbMF1dLnJlY2lkOm51bGwpLGV9LHJlbW92ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXtmb3IodmFyIGk9dGhpcy5yZWNvcmRzLmxlbmd0aC0xOzA8PWk7aS0tKXRoaXMucmVjb3Jkc1tpXS5yZWNpZD09YXJndW1lbnRzW3RdJiYodGhpcy5yZWNvcmRzLnNwbGljZShpLDEpLGUrKyk7Zm9yKGk9dGhpcy5zdW1tYXJ5Lmxlbmd0aC0xOzA8PWk7aS0tKXRoaXMuc3VtbWFyeVtpXS5yZWNpZD09YXJndW1lbnRzW3RdJiYodGhpcy5zdW1tYXJ5LnNwbGljZShpLDEpLGUrKyl9cmV0dXJuKCJvYmplY3QiIT10eXBlb2YgdGhpcy51cmw/dGhpcy51cmw6dGhpcy51cmwuZ2V0KXx8KHRoaXMubG9jYWxTb3J0KCExLCEwKSx0aGlzLmxvY2FsU2VhcmNoKCkpLHRoaXMucmVmcmVzaCgpLGV9LGFkZENvbHVtbjpmdW5jdGlvbihlLHQpe3ZhciBpPTA7MT09YXJndW1lbnRzLmxlbmd0aD8odD1lLGU9dGhpcy5jb2x1bW5zLmxlbmd0aCk6KCJzdHJpbmciPT10eXBlb2YgZSYmKGU9dGhpcy5nZXRDb2x1bW4oZSwhMCkpLG51bGw9PWUmJihlPXRoaXMuY29sdW1ucy5sZW5ndGgpKSwkLmlzQXJyYXkodCl8fCh0PVt0XSk7Zm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspe2lmKHRoaXMuY29sdW1ucy5zcGxpY2UoZSwwLHRbc10pLHRbc10uc2VhcmNoYWJsZSl7dmFyIG49dFtzXS5zZWFyY2hhYmxlLGE9IiI7ITA9PT10W3NdLnNlYXJjaGFibGUmJihuPSJ0ZXh0IixhPSdzaXplPSIyMCInKSx0aGlzLmFkZFNlYXJjaCh7ZmllbGQ6dFtzXS5maWVsZCxsYWJlbDp0W3NdLmxhYmVsLHR5cGU6bixhdHRyOmF9KX1lKyssaSsrfXJldHVybiB0aGlzLnJlZnJlc2goKSxpfSxyZW1vdmVDb2x1bW46ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylmb3IodmFyIGk9dGhpcy5jb2x1bW5zLmxlbmd0aC0xOzA8PWk7aS0tKXRoaXMuY29sdW1uc1tpXS5maWVsZD09YXJndW1lbnRzW3RdJiYodGhpcy5jb2x1bW5zW2ldLnNlYXJjaGFibGUmJnRoaXMucmVtb3ZlU2VhcmNoKGFyZ3VtZW50c1t0XSksdGhpcy5jb2x1bW5zLnNwbGljZShpLDEpLGUrKyk7cmV0dXJuIHRoaXMucmVmcmVzaCgpLGV9LGdldENvbHVtbjpmdW5jdGlvbihlLHQpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGk9W10scz0wO3M8dGhpcy5jb2x1bW5zLmxlbmd0aDtzKyspaS5wdXNoKHRoaXMuY29sdW1uc1tzXS5maWVsZCk7cmV0dXJuIGl9Zm9yKHM9MDtzPHRoaXMuY29sdW1ucy5sZW5ndGg7cysrKWlmKHRoaXMuY29sdW1uc1tzXS5maWVsZD09ZSlyZXR1cm4hMD09PXQ/czp0aGlzLmNvbHVtbnNbc107cmV0dXJuIG51bGx9LHVwZGF0ZUNvbHVtbjpmdW5jdGlvbihlLHMpe3ZhciB0PXRoaXMsbj0wO3JldHVybihlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLmZvckVhY2goZnVuY3Rpb24oZSl7dC5jb2x1bW5zLmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5maWVsZD09ZSl7dmFyIGk9JC5leHRlbmQoITAse30scyk7T2JqZWN0LmtleXMoaSkuZm9yRWFjaChmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgaVtlXSYmKGlbZV09aVtlXSh0KSksdFtlXSE9aVtlXSYmbisrfSksJC5leHRlbmQoITAsdCxpKX19KX0pLHRoaXMucmVmcmVzaEJvZHkoKSx0aGlzLnJlc2l6ZVJlY29yZHMoKSxufSx0b2dnbGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVDb2x1bW4oQXJyYXkuZnJvbShhcmd1bWVudHMpLHtoaWRkZW46ZnVuY3Rpb24oZSl7cmV0dXJuIWUuaGlkZGVufX0pfSxzaG93Q29sdW1uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlQ29sdW1uKEFycmF5LmZyb20oYXJndW1lbnRzKSx7aGlkZGVuOiExfSl9LGhpZGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVDb2x1bW4oQXJyYXkuZnJvbShhcmd1bWVudHMpLHtoaWRkZW46ITB9KX0sYWRkU2VhcmNoOmZ1bmN0aW9uKGUsdCl7dmFyIGk9MDsxPT1hcmd1bWVudHMubGVuZ3RoPyh0PWUsZT10aGlzLnNlYXJjaGVzLmxlbmd0aCk6KCJzdHJpbmciPT10eXBlb2YgZSYmKGU9dGhpcy5nZXRTZWFyY2goZSwhMCkpLG51bGw9PWUmJihlPXRoaXMuc2VhcmNoZXMubGVuZ3RoKSksJC5pc0FycmF5KHQpfHwodD1bdF0pO2Zvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXRoaXMuc2VhcmNoZXMuc3BsaWNlKGUsMCx0W3NdKSxlKyssaSsrO3JldHVybiB0aGlzLnNlYXJjaENsb3NlKCksaX0scmVtb3ZlU2VhcmNoOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZm9yKHZhciBpPXRoaXMuc2VhcmNoZXMubGVuZ3RoLTE7MDw9aTtpLS0pdGhpcy5zZWFyY2hlc1tpXS5maWVsZD09YXJndW1lbnRzW3RdJiYodGhpcy5zZWFyY2hlcy5zcGxpY2UoaSwxKSxlKyspO3JldHVybiB0aGlzLnNlYXJjaENsb3NlKCksZX0sZ2V0U2VhcmNoOmZ1bmN0aW9uKGUsdCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgaT1bXSxzPTA7czx0aGlzLnNlYXJjaGVzLmxlbmd0aDtzKyspaS5wdXNoKHRoaXMuc2VhcmNoZXNbc10uZmllbGQpO3JldHVybiBpfWZvcihzPTA7czx0aGlzLnNlYXJjaGVzLmxlbmd0aDtzKyspaWYodGhpcy5zZWFyY2hlc1tzXS5maWVsZD09ZSlyZXR1cm4hMD09PXQ/czp0aGlzLnNlYXJjaGVzW3NdO3JldHVybiBudWxsfSx0b2dnbGVTZWFyY2g6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylmb3IodmFyIGk9dGhpcy5zZWFyY2hlcy5sZW5ndGgtMTswPD1pO2ktLSl0aGlzLnNlYXJjaGVzW2ldLmZpZWxkPT1hcmd1bWVudHNbdF0mJih0aGlzLnNlYXJjaGVzW2ldLmhpZGRlbj0hdGhpcy5zZWFyY2hlc1tpXS5oaWRkZW4sZSsrKTtyZXR1cm4gdGhpcy5zZWFyY2hDbG9zZSgpLGV9LHNob3dTZWFyY2g6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylmb3IodmFyIGk9dGhpcy5zZWFyY2hlcy5sZW5ndGgtMTswPD1pO2ktLSl0aGlzLnNlYXJjaGVzW2ldLmZpZWxkPT1hcmd1bWVudHNbdF0mJiExIT09dGhpcy5zZWFyY2hlc1tpXS5oaWRkZW4mJih0aGlzLnNlYXJjaGVzW2ldLmhpZGRlbj0hMSxlKyspO3JldHVybiB0aGlzLnNlYXJjaENsb3NlKCksZX0saGlkZVNlYXJjaDpmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWZvcih2YXIgaT10aGlzLnNlYXJjaGVzLmxlbmd0aC0xOzA8PWk7aS0tKXRoaXMuc2VhcmNoZXNbaV0uZmllbGQ9PWFyZ3VtZW50c1t0XSYmITAhPT10aGlzLnNlYXJjaGVzW2ldLmhpZGRlbiYmKHRoaXMuc2VhcmNoZXNbaV0uaGlkZGVuPSEwLGUrKyk7cmV0dXJuIHRoaXMuc2VhcmNoQ2xvc2UoKSxlfSxnZXRTZWFyY2hEYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zZWFyY2hEYXRhLmxlbmd0aDt0KyspaWYodGhpcy5zZWFyY2hEYXRhW3RdLmZpZWxkPT1lKXJldHVybiB0aGlzLnNlYXJjaERhdGFbdF07cmV0dXJuIG51bGx9LGxvY2FsU29ydDpmdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgdGhpcy51cmw/dGhpcy51cmw6dGhpcy51cmwuZ2V0KWNvbnNvbGUubG9nKCJFUlJPUjogZ3JpZC5sb2NhbFNvcnQgY2FuIG9ubHkgYmUgdXNlZCBvbiBsb2NhbCBkYXRhIHNvdXJjZSwgZ3JpZC51cmwgc2hvdWxkIGJlIGVtcHR5LiIpO2Vsc2UgaWYoISQuaXNFbXB0eU9iamVjdCh0aGlzLnNvcnREYXRhKSl7dmFyIGk9KG5ldyBEYXRlKS5nZXRUaW1lKCksZD10aGlzO2Quc2VsZWN0aW9uU2F2ZSgpLGQucHJlcGFyZURhdGEoKSx0fHxkLnJlc2V0KCk7Zm9yKHZhciBzPTA7czx0aGlzLnNvcnREYXRhLmxlbmd0aDtzKyspe3ZhciBuPXRoaXMuZ2V0Q29sdW1uKHRoaXMuc29ydERhdGFbc10uZmllbGQpO2lmKCFuKXJldHVybjsic3RyaW5nIj09dHlwZW9mIG4ucmVuZGVyJiYoLTEhPVsiZGF0ZSIsImFnZSJdLmluZGV4T2Yobi5yZW5kZXIuc3BsaXQoIjoiKVswXSkmJih0aGlzLnNvcnREYXRhW3NdLmZpZWxkXz1uLmZpZWxkKyJfIiksLTEhPVsidGltZSJdLmluZGV4T2Yobi5yZW5kZXIuc3BsaXQoIjoiKVswXSkmJih0aGlzLnNvcnREYXRhW3NdLmZpZWxkXz1uLmZpZWxkKyJfIikpfXJldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8ZC5yZWNvcmRzLmxlbmd0aDtlKyspe3ZhciB0PWQucmVjb3Jkc1tlXTt0LncydWkmJm51bGwhPXQudzJ1aS5wYXJlbnRfcmVjaWQmJih0LncydWkuX3BhdGg9cih0KSl9fSgpLHRoaXMucmVjb3Jkcy5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlLncydWkmJm51bGwhPWUudzJ1aS5wYXJlbnRfcmVjaWR8fHQudzJ1aSYmbnVsbCE9dC53MnVpLnBhcmVudF9yZWNpZCkpcmV0dXJuIGwoZSx0KTtmb3IodmFyIGk9cihlKSxzPXIodCksbj0wO248TWF0aC5taW4oaS5sZW5ndGgscy5sZW5ndGgpO24rKyl7dmFyIGE9bChpW25dLHNbbl0pO2lmKDAhPT1hKXJldHVybiBhfXJldHVybiBpLmxlbmd0aD5zLmxlbmd0aD8xOmkubGVuZ3RoPHMubGVuZ3RoPy0xOihjb25zb2xlLmxvZygiRVJST1I6IHR3byBwYXRocyBzaG91bGQgbm90IGJlIGVxdWFsLiIpLDApfShlLHQpfSksZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGQucmVjb3Jkcy5sZW5ndGg7ZSsrKXt2YXIgdD1kLnJlY29yZHNbZV07dC53MnVpJiZudWxsIT10LncydWkucGFyZW50X3JlY2lkJiYodC53MnVpLl9wYXRoPW51bGwpfX0oKSxkLnNlbGVjdGlvblJlc3RvcmUodCksaT0obmV3IERhdGUpLmdldFRpbWUoKS1pLCEwIT09ZSYmZC5zaG93LnN0YXR1c1NvcnQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLnN0YXR1cyh3MnV0aWxzLmxhbmcoIlNvcnRpbmcgdG9vayIpKyIgIitpLzFlMysiICIrdzJ1dGlscy5sYW5nKCJzZWMiKSl9LDEwKSxpfWZ1bmN0aW9uIHIoZSl7aWYoIWUudzJ1aXx8bnVsbD09ZS53MnVpLnBhcmVudF9yZWNpZClyZXR1cm5bZV07aWYoZS53MnVpLl9wYXRoKXJldHVybiBlLncydWkuX3BhdGg7dmFyIHQ9ZC5nZXQoZS53MnVpLnBhcmVudF9yZWNpZCk7cmV0dXJuIHQ/cih0KS5jb25jYXQoZSk6KGNvbnNvbGUubG9nKCJFUlJPUjogbm8gcGFyZW50IHJlY29yZDogIitlLncydWkucGFyZW50X3JlY2lkKSxbZV0pfWZ1bmN0aW9uIGwoZSx0KXtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIGk9MDtpPGQuc29ydERhdGEubGVuZ3RoO2krKyl7dmFyIHM9ZC5zb3J0RGF0YVtpXS5maWVsZCxuPWQuc29ydERhdGFbaV0uZmllbGRfP2Quc29ydERhdGFbaV0uZmllbGRfOnMsYT1lW25dLHI9dFtuXTstMSE9U3RyaW5nKHMpLmluZGV4T2YoIi4iKSYmKGE9ZC5wYXJzZUZpZWxkKGUsbikscj1kLnBhcnNlRmllbGQodCxuKSk7dmFyIGw9ZC5nZXRDb2x1bW4ocyk7aWYobCYmbnVsbCE9bC5lZGl0YWJsZSYmKCQuaXNQbGFpbk9iamVjdChhKSYmYS50ZXh0JiYoYT1hLnRleHQpLCQuaXNQbGFpbk9iamVjdChyKSYmci50ZXh0JiYocj1yLnRleHQpKSwwIT09KG89dShhLHIsaSxkLnNvcnREYXRhW2ldLmRpcmVjdGlvbixsLnNvcnRNb2RlfHwiZGVmYXVsdCIpKSlyZXR1cm4gb312YXIgbztyZXR1cm4gbz11KGUucmVjaWQsdC5yZWNpZCwtMSwiYXNjIil9ZnVuY3Rpb24gdShlLHQsaSxzLG4pe2lmKGU9PT10KXJldHVybiAwO2lmKChudWxsPT1lfHwiIj09PWUpJiZudWxsIT10JiYiIiE9PXQpcmV0dXJuIDE7aWYobnVsbCE9ZSYmIiIhPT1lJiYobnVsbD09dHx8IiI9PT10KSlyZXR1cm4tMTt2YXIgYT0iYXNjIj09PXMudG9Mb3dlckNhc2UoKT8xOi0xO2lmKHR5cGVvZiBlIT10eXBlb2YgdClyZXR1cm4gdHlwZW9mIHQ8dHlwZW9mIGU/YTotYTtpZihlLmNvbnN0cnVjdG9yLm5hbWUhPXQuY29uc3RydWN0b3IubmFtZSlyZXR1cm4gZS5jb25zdHJ1Y3Rvci5uYW1lPnQuY29uc3RydWN0b3IubmFtZT9hOi1hO2UmJiJvYmplY3QiPT10eXBlb2YgZSYmKGU9ZS52YWx1ZU9mKCkpLHQmJiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9dC52YWx1ZU9mKCkpO3ZhciByPXt9LnRvU3RyaW5nO3N3aXRjaChlJiYib2JqZWN0Ij09dHlwZW9mIGUmJmUudG9TdHJpbmchPXImJihlPVN0cmluZyhlKSksdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0LnRvU3RyaW5nIT1yJiYodD1TdHJpbmcodCkpLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9JC50cmltKGUudG9Mb3dlckNhc2UoKSkpLCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9JC50cmltKHQudG9Mb3dlckNhc2UoKSkpLG4pe2Nhc2UibmF0dXJhbCI6bj13MnV0aWxzLm5hdHVyYWxDb21wYXJlfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24oZSx0KSphOnQ8ZT9hOmU8dD8tYTowfX0sbG9jYWxTZWFyY2g6ZnVuY3Rpb24oZSl7dmFyIHQ9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQ7aWYoIXQpe3ZhciBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHA9dGhpcyxmPXt9LnRvU3RyaW5nLHM9e307aWYodGhpcy50b3RhbD10aGlzLnJlY29yZHMubGVuZ3RoLHRoaXMubGFzdC5zZWFyY2hJZHM9W10sdGhpcy5wcmVwYXJlRGF0YSgpLDA8dGhpcy5zZWFyY2hEYXRhLmxlbmd0aCYmIXQpe2Zvcih2YXIgbj10aGlzLnRvdGFsPTA7bjx0aGlzLnJlY29yZHMubGVuZ3RoO24rKyl7dmFyIGE9dGhpcy5yZWNvcmRzW25dO2lmKGcoYSkpaWYoYSYmYS53MnVpJiZkKGEudzJ1aS5wYXJlbnRfcmVjaWQpLDA8dGhpcy5zaG93RXh0cmFPblNlYXJjaCl7dmFyIHI9dGhpcy5zaG93RXh0cmFPblNlYXJjaCxsPXRoaXMuc2hvd0V4dHJhT25TZWFyY2g7aWYobjxyJiYocj1uKSxuK2w+dGhpcy5yZWNvcmRzLmxlbmd0aCYmKGw9dGhpcy5yZWNvcmRzLmxlbmd0aC1uKSwwPHIpZm9yKHZhciBvPW4tcjtvPG47bysrKXRoaXMubGFzdC5zZWFyY2hJZHMuaW5kZXhPZihvKTwwJiZ0aGlzLmxhc3Quc2VhcmNoSWRzLnB1c2gobyk7aWYodGhpcy5sYXN0LnNlYXJjaElkcy5pbmRleE9mKG4pPDAmJnRoaXMubGFzdC5zZWFyY2hJZHMucHVzaChuKSwwPGwpZm9yKG89bisxO288PW4rbDtvKyspdGhpcy5sYXN0LnNlYXJjaElkcy5pbmRleE9mKG8pPDAmJnRoaXMubGFzdC5zZWFyY2hJZHMucHVzaChvKX1lbHNlIHRoaXMubGFzdC5zZWFyY2hJZHMucHVzaChuKX10aGlzLnRvdGFsPXRoaXMubGFzdC5zZWFyY2hJZHMubGVuZ3RofXJldHVybiBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpLWksITAhPT1lJiZwLnNob3cuc3RhdHVzU2VhcmNoJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cC5zdGF0dXModzJ1dGlscy5sYW5nKCJTZWFyY2ggdG9vayIpKyIgIitpLzFlMysiICIrdzJ1dGlscy5sYW5nKCJzZWMiKSl9LDEwKSxpfWZ1bmN0aW9uIGcoZSl7Zm9yKHZhciB0PTAsaT0hMSxzPTA7czxwLnNlYXJjaERhdGEubGVuZ3RoO3MrKyl7dmFyIG49cC5zZWFyY2hEYXRhW3NdLGE9cC5nZXRTZWFyY2gobi5maWVsZCk7aWYobnVsbCE9bil7bnVsbD09YSYmKGE9e2ZpZWxkOm4uZmllbGQsdHlwZTpuLnR5cGV9KTt2YXIgcj1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKSxsPW51bGw9PXJ8fCJvYmplY3QiPT10eXBlb2YgciYmci50b1N0cmluZz09Zj8iIjpTdHJpbmcocikudG9Mb3dlckNhc2UoKTtpZihudWxsIT1uLnZhbHVlKWlmKCQuaXNBcnJheShuLnZhbHVlKSl7ZD1uLnZhbHVlWzBdO3ZhciBvPW4udmFsdWVbMV19ZWxzZSB2YXIgZD1TdHJpbmcobi52YWx1ZSkudG9Mb3dlckNhc2UoKTtzd2l0Y2gobi5vcGVyYXRvcil7Y2FzZSI9IjpjYXNlImlzIjppZihwLnBhcnNlRmllbGQoZSxhLmZpZWxkKT09bi52YWx1ZSl0Kys7ZWxzZSBpZigiZGF0ZSI9PWEudHlwZSl7dmFyIHU9cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpaW5zdGFuY2VvZiBEYXRlP3AucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKTpwLnBhcnNlRmllbGQoZSxhLmZpZWxkKTsobD13MnV0aWxzLmZvcm1hdERhdGUodSwieXl5eS1tbS1kZCIpKT09KGQ9dzJ1dGlscy5mb3JtYXREYXRlKHcydXRpbHMuaXNEYXRlKGQsdzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0LCEwKSwieXl5eS1tbS1kZCIpKSYmdCsrfWVsc2UgaWYoInRpbWUiPT1hLnR5cGUpe3U9cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpaW5zdGFuY2VvZiBEYXRlP3AucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKTpwLnBhcnNlRmllbGQoZSxhLmZpZWxkKTsobD13MnV0aWxzLmZvcm1hdFRpbWUodSwiaGgyNDptaSIpKT09KGQ9dzJ1dGlscy5mb3JtYXRUaW1lKGQsImhoMjQ6bWkiKSkmJnQrK31lbHNlIGlmKCJkYXRldGltZSI9PWEudHlwZSl7dT1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIilpbnN0YW5jZW9mIERhdGU/cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpOnAucGFyc2VGaWVsZChlLGEuZmllbGQpOyhsPXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUodSwieXl5eS1tbS1kZHxoaDI0Om1tOnNzIikpPT0oZD13MnV0aWxzLmZvcm1hdERhdGVUaW1lKHcydXRpbHMuaXNEYXRlVGltZShkLHcydXRpbHMuc2V0dGluZ3MuZGF0ZXRpbWVGb3JtYXQsITApLCJ5eXl5LW1tLWRkfGhoMjQ6bW06c3MiKSkmJnQrK31icmVhaztjYXNlImJldHdlZW4iOmlmKC0xIT1bImludCIsImZsb2F0IiwibW9uZXkiLCJjdXJyZW5jeSIsInBlcmNlbnQiXS5pbmRleE9mKGEudHlwZSkpcGFyc2VGbG9hdChwLnBhcnNlRmllbGQoZSxhLmZpZWxkKSk+PXBhcnNlRmxvYXQoZCkmJnBhcnNlRmxvYXQocC5wYXJzZUZpZWxkKGUsYS5maWVsZCkpPD1wYXJzZUZsb2F0KG8pJiZ0Kys7ZWxzZSBpZigiZGF0ZSI9PWEudHlwZSl7dT1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIilpbnN0YW5jZW9mIERhdGU/cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpOnAucGFyc2VGaWVsZChlLGEuZmllbGQpLGw9dzJ1dGlscy5pc0RhdGUodSx3MnV0aWxzLnNldHRpbmdzLmRhdGVGb3JtYXQsITApLGQ9dzJ1dGlscy5pc0RhdGUoZCx3MnV0aWxzLnNldHRpbmdzLmRhdGVGb3JtYXQsITApO251bGwhPShvPXcydXRpbHMuaXNEYXRlKG8sdzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0LCEwKSkmJihvPW5ldyBEYXRlKG8uZ2V0VGltZSgpKzg2NGU1KSksZDw9bCYmbDxvJiZ0Kyt9ZWxzZSBpZigidGltZSI9PWEudHlwZSl7bD1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIilpbnN0YW5jZW9mIERhdGU/cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpOnAucGFyc2VGaWVsZChlLGEuZmllbGQpLGQ9dzJ1dGlscy5pc1RpbWUoZCwhMCksbz13MnV0aWxzLmlzVGltZShvLCEwKTtkPShuZXcgRGF0ZSkuc2V0SG91cnMoZC5ob3VycyxkLm1pbnV0ZXMsZC5zZWNvbmRzP2Quc2Vjb25kczowLDApLG89KG5ldyBEYXRlKS5zZXRIb3VycyhvLmhvdXJzLG8ubWludXRlcyxvLnNlY29uZHM/by5zZWNvbmRzOjAsMCksZDw9bCYmbDxvJiZ0Kyt9ZWxzZSBpZigiZGF0ZXRpbWUiPT1hLnR5cGUpe2w9cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpaW5zdGFuY2VvZiBEYXRlP3AucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKTpwLnBhcnNlRmllbGQoZSxhLmZpZWxkKSxkPXcydXRpbHMuaXNEYXRlVGltZShkLHcydXRpbHMuc2V0dGluZ3MuZGF0ZXRpbWVGb3JtYXQsITApO289KG89dzJ1dGlscy5pc0RhdGVUaW1lKG8sdzJ1dGlscy5zZXR0aW5ncy5kYXRldGltZUZvcm1hdCwhMCkpJiZuZXcgRGF0ZShvLmdldFRpbWUoKSs4NjRlNSksZDw9bCYmbDxvJiZ0Kyt9YnJlYWs7Y2FzZSI8PSI6aT0hMDtjYXNlIjwiOmNhc2UibGVzcyI6aWYoLTEhPVsiaW50IiwiZmxvYXQiLCJtb25leSIsImN1cnJlbmN5IiwicGVyY2VudCJdLmluZGV4T2YoYS50eXBlKSkoKGw9cGFyc2VGbG9hdChwLnBhcnNlRmllbGQoZSxhLmZpZWxkKSkpPChkPXBhcnNlRmxvYXQobi52YWx1ZSkpfHxpJiZsPT09ZCkmJnQrKztlbHNlIGlmKCJkYXRlIj09YS50eXBlKXt1PXAucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKWluc3RhbmNlb2YgRGF0ZT9wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIik6cC5wYXJzZUZpZWxkKGUsYS5maWVsZCk7KChsPXcydXRpbHMuaXNEYXRlKHUsdzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0LCEwKSk8KGQ9dzJ1dGlscy5pc0RhdGUoZCx3MnV0aWxzLnNldHRpbmdzLmRhdGVGb3JtYXQsITApKXx8aSYmbD09PWQpJiZ0Kyt9ZWxzZSBpZigidGltZSI9PWEudHlwZSl7dT1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIilpbnN0YW5jZW9mIERhdGU/cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpOnAucGFyc2VGaWVsZChlLGEuZmllbGQpOygobD13MnV0aWxzLmZvcm1hdFRpbWUodSwiaGgyNDptaSIpKTwoZD13MnV0aWxzLmZvcm1hdFRpbWUoZCwiaGgyNDptaSIpKXx8aSYmbD09PWQpJiZ0Kyt9ZWxzZSBpZigiZGF0ZXRpbWUiPT1hLnR5cGUpe3U9cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpaW5zdGFuY2VvZiBEYXRlP3AucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKTpwLnBhcnNlRmllbGQoZSxhLmZpZWxkKSxsPXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUodSwieXl5eS1tbS1kZHxoaDI0Om1tOnNzIiksZD13MnV0aWxzLmZvcm1hdERhdGVUaW1lKHcydXRpbHMuaXNEYXRlVGltZShkLHcydXRpbHMuc2V0dGluZ3MuZGF0ZXRpbWVGb3JtYXQsITApLCJ5eXl5LW1tLWRkfGhoMjQ6bW06c3MiKTtsLmxlbmd0aD09ZC5sZW5ndGgmJihsPGR8fGkmJmw9PT1kKSYmdCsrfWJyZWFrO2Nhc2UiPj0iOmk9ITA7Y2FzZSI+IjpjYXNlIm1vcmUiOmlmKC0xIT1bImludCIsImZsb2F0IiwibW9uZXkiLCJjdXJyZW5jeSIsInBlcmNlbnQiXS5pbmRleE9mKGEudHlwZSkpe2w9cGFyc2VGbG9hdChwLnBhcnNlRmllbGQoZSxhLmZpZWxkKSk7KChkPXBhcnNlRmxvYXQobi52YWx1ZSkpPGx8fGkmJmw9PT1kKSYmdCsrfWVsc2UgaWYoImRhdGUiPT1hLnR5cGUpe3U9cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpaW5zdGFuY2VvZiBEYXRlP3AucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKTpwLnBhcnNlRmllbGQoZSxhLmZpZWxkKSxsPXcydXRpbHMuaXNEYXRlKHUsdzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0LCEwKTsoKGQ9dzJ1dGlscy5pc0RhdGUoZCx3MnV0aWxzLnNldHRpbmdzLmRhdGVGb3JtYXQsITApKTxsfHxpJiZsPT09ZCkmJnQrK31lbHNlIGlmKCJ0aW1lIj09YS50eXBlKXt1PXAucGFyc2VGaWVsZChlLGEuZmllbGQrIl8iKWluc3RhbmNlb2YgRGF0ZT9wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIik6cC5wYXJzZUZpZWxkKGUsYS5maWVsZCksbD13MnV0aWxzLmZvcm1hdFRpbWUodSwiaGgyNDptaSIpOygoZD13MnV0aWxzLmZvcm1hdFRpbWUoZCwiaGgyNDptaSIpKTxsfHxpJiZsPT09ZCkmJnQrK31lbHNlIGlmKCJkYXRldGltZSI9PWEudHlwZSl7dT1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKyJfIilpbnN0YW5jZW9mIERhdGU/cC5wYXJzZUZpZWxkKGUsYS5maWVsZCsiXyIpOnAucGFyc2VGaWVsZChlLGEuZmllbGQpLGw9dzJ1dGlscy5mb3JtYXREYXRlVGltZSh1LCJ5eXl5LW1tLWRkfGhoMjQ6bW06c3MiKSxkPXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUodzJ1dGlscy5pc0RhdGVUaW1lKGQsdzJ1dGlscy5zZXR0aW5ncy5kYXRldGltZUZvcm1hdCwhMCksInl5eXktbW0tZGR8aGgyNDptbTpzcyIpO2wubGVuZ3RoPT1kLmxlbmd0aCYmKGQ8bHx8aSYmbD09PWQpJiZ0Kyt9YnJlYWs7Y2FzZSJpbiI6dT1uLnZhbHVlO24uc3ZhbHVlJiYodT1uLnN2YWx1ZSksLTE9PT11LmluZGV4T2YodzJ1dGlscy5pc0Zsb2F0KHIpP3BhcnNlRmxvYXQocik6cikmJi0xPT09dS5pbmRleE9mKGwpfHx0Kys7YnJlYWs7Y2FzZSJub3QgaW4iOnU9bi52YWx1ZTtuLnN2YWx1ZSYmKHU9bi5zdmFsdWUpLC0xPT09dS5pbmRleE9mKHcydXRpbHMuaXNGbG9hdChyKT9wYXJzZUZsb2F0KHIpOnIpJiYtMT09PXUuaW5kZXhPZihsKSYmdCsrO2JyZWFrO2Nhc2UiYmVnaW5zIjpjYXNlImJlZ2lucyB3aXRoIjowPT09bC5pbmRleE9mKGQpJiZ0Kys7YnJlYWs7Y2FzZSJjb250YWlucyI6MDw9bC5pbmRleE9mKGQpJiZ0Kys7YnJlYWs7Y2FzZSJudWxsIjpudWxsPT1wLnBhcnNlRmllbGQoZSxhLmZpZWxkKSYmdCsrO2JyZWFrO2Nhc2Uibm90IG51bGwiOm51bGwhPXAucGFyc2VGaWVsZChlLGEuZmllbGQpJiZ0Kys7YnJlYWs7Y2FzZSJlbmRzIjpjYXNlImVuZHMgd2l0aCI6dmFyIGM9bC5sYXN0SW5kZXhPZihkKTstMSE9PWMmJmM9PWwubGVuZ3RoLWQubGVuZ3RoJiZ0Kyt9fX1pZigiT1IiPT1wLmxhc3QubG9naWMmJjAhPT10fHwiQU5EIj09cC5sYXN0LmxvZ2ljJiZ0PT1wLnNlYXJjaERhdGEubGVuZ3RoKXJldHVybiEwO2lmKGUudzJ1aSYmZS53MnVpLmNoaWxkcmVuJiYhMCE9PWUudzJ1aS5leHBhbmRlZClmb3IodmFyIGg9MDtoPGUudzJ1aS5jaGlsZHJlbi5sZW5ndGg7aCsrKXtpZihnKGUudzJ1aS5jaGlsZHJlbltoXSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gZChlKXtpZih2b2lkIDAhPT1lJiYhc1tlXSl7c1tlXT0hMDt2YXIgdD1wLmdldChlLCEwKTtpZihudWxsIT10JiYtMT09JC5pbkFycmF5KHQscC5sYXN0LnNlYXJjaElkcykpe3ZhciBpPXAucmVjb3Jkc1t0XTtpJiZpLncydWkmJmQoaS53MnVpLnBhcmVudF9yZWNpZCkscC5sYXN0LnNlYXJjaElkcy5wdXNoKHQpfX19Y29uc29sZS5sb2coIkVSUk9SOiBncmlkLmxvY2FsU2VhcmNoIGNhbiBvbmx5IGJlIHVzZWQgb24gbG9jYWwgZGF0YSBzb3VyY2UsIGdyaWQudXJsIHNob3VsZCBiZSBlbXB0eS4iKX0sZ2V0UmFuZ2VEYXRhOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXQoZVswXS5yZWNpZCwhMCkscz10aGlzLmdldChlWzFdLnJlY2lkLCEwKSxuPWVbMF0uY29sdW1uLGE9ZVsxXS5jb2x1bW4scj1bXTtpZihuPT1hKWZvcih2YXIgbD1pO2w8PXM7bCsrKXt2YXIgbz0oZD10aGlzLnJlY29yZHNbbF0pW3RoaXMuY29sdW1uc1tuXS5maWVsZF18fG51bGw7ITAhPT10P3IucHVzaChvKTpyLnB1c2goe2RhdGE6byxjb2x1bW46bixpbmRleDpsLHJlY29yZDpkfSl9ZWxzZSBpZihpPT1zKWZvcih2YXIgZD10aGlzLnJlY29yZHNbaV0sdT1uO3U8PWE7dSsrKXtvPWRbdGhpcy5jb2x1bW5zW3VdLmZpZWxkXXx8bnVsbDshMCE9PXQ/ci5wdXNoKG8pOnIucHVzaCh7ZGF0YTpvLGNvbHVtbjp1LGluZGV4OmkscmVjb3JkOmR9KX1lbHNlIGZvcihsPWk7bDw9cztsKyspe2Q9dGhpcy5yZWNvcmRzW2xdO3IucHVzaChbXSk7Zm9yKHU9bjt1PD1hO3UrKyl7bz1kW3RoaXMuY29sdW1uc1t1XS5maWVsZF07ITAhPT10P3Jbci5sZW5ndGgtMV0ucHVzaChvKTpyW3IubGVuZ3RoLTFdLnB1c2goe2RhdGE6byxjb2x1bW46dSxpbmRleDpsLHJlY29yZDpkfSl9fXJldHVybiByfSxhZGRSYW5nZTpmdW5jdGlvbihlKXt2YXIgdD0wO2lmKCJyb3ciPT10aGlzLnNlbGVjdFR5cGUpcmV0dXJuIHQ7JC5pc0FycmF5KGUpfHwoZT1bZV0pO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXtpZigib2JqZWN0IiE9dHlwZW9mIGVbaV0mJihlW2ldPXtuYW1lOiJzZWxlY3Rpb24ifSksInNlbGVjdGlvbiI9PWVbaV0ubmFtZSl7aWYoITE9PT10aGlzLnNob3cuc2VsZWN0aW9uQm9yZGVyKWNvbnRpbnVlO3ZhciBzPXRoaXMuZ2V0U2VsZWN0aW9uKCk7aWYoMD09PXMubGVuZ3RoKXt0aGlzLnJlbW92ZVJhbmdlKCJzZWxlY3Rpb24iKTtjb250aW51ZX12YXIgbj1zWzBdLGE9c1tzLmxlbmd0aC0xXX1lbHNlIG49ZVtpXS5yYW5nZVswXSxhPWVbaV0ucmFuZ2VbMV07aWYobil7Zm9yKHZhciByPXtuYW1lOmVbaV0ubmFtZSxyYW5nZTpbe3JlY2lkOm4ucmVjaWQsY29sdW1uOm4uY29sdW1ufSx7cmVjaWQ6YS5yZWNpZCxjb2x1bW46YS5jb2x1bW59XSxzdHlsZTplW2ldLnN0eWxlfHwiIn0sbD0hMSxvPTA7bzx0aGlzLnJhbmdlcy5sZW5ndGg7bysrKWlmKHRoaXMucmFuZ2VzW29dLm5hbWU9PWVbaV0ubmFtZSl7bD1vO2JyZWFrfSExIT09bD90aGlzLnJhbmdlc1tsXT1yOnRoaXMucmFuZ2VzLnB1c2gociksdCsrfX1yZXR1cm4gdGhpcy5yZWZyZXNoUmFuZ2VzKCksdH0scmVtb3ZlUmFuZ2U6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGk9YXJndW1lbnRzW3RdOyQoIiNncmlkXyIrdGhpcy5uYW1lKyJfIitpKS5yZW1vdmUoKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2YiK2kpLnJlbW92ZSgpO2Zvcih2YXIgcz10aGlzLnJhbmdlcy5sZW5ndGgtMTswPD1zO3MtLSl0aGlzLnJhbmdlc1tzXS5uYW1lPT1pJiYodGhpcy5yYW5nZXMuc3BsaWNlKHMsMSksZSsrKX1yZXR1cm4gZX0scmVmcmVzaFJhbmdlczpmdW5jdGlvbigpe2lmKDAhPT10aGlzLnJhbmdlcy5sZW5ndGgpe2Zvcih2YXIgcj10aGlzLGU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNvcmRzIiksaT0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY29yZHMiKSxzPTA7czx0aGlzLnJhbmdlcy5sZW5ndGg7cysrKXt2YXIgbj10aGlzLnJhbmdlc1tzXSxhPW4ucmFuZ2VbMF0sbD1uLnJhbmdlWzFdO251bGw9PWEuaW5kZXgmJihhLmluZGV4PXRoaXMuZ2V0KGEucmVjaWQsITApKSxudWxsPT1sLmluZGV4JiYobC5pbmRleD10aGlzLmdldChsLnJlY2lkLCEwKSk7dmFyIG89JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfIit3MnV0aWxzLmVzY2FwZUlkKGEucmVjaWQpKycgdGRbY29sPSInK2EuY29sdW1uKyciXScpLGQ9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfIit3MnV0aWxzLmVzY2FwZUlkKGwucmVjaWQpKycgdGRbY29sPSInK2wuY29sdW1uKyciXScpLHU9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChhLnJlY2lkKSsnIHRkW2NvbD0iJythLmNvbHVtbisnIl0nKSxjPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY18iK3cydXRpbHMuZXNjYXBlSWQobC5yZWNpZCkrJyB0ZFtjb2w9IicrbC5jb2x1bW4rJyJdJyksaD1sLmNvbHVtbjthLmNvbHVtbjx0aGlzLmxhc3QuY29sU3RhcnQmJmwuY29sdW1uPnRoaXMubGFzdC5jb2xTdGFydCYmKG89JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfIit3MnV0aWxzLmVzY2FwZUlkKGEucmVjaWQpKycgdGRbY29sPSJzdGFydCJdJykpLGEuY29sdW1uPHRoaXMubGFzdC5jb2xFbmQmJmwuY29sdW1uPnRoaXMubGFzdC5jb2xFbmQmJihoPSciZW5kIicsZD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3cydXRpbHMuZXNjYXBlSWQobC5yZWNpZCkrJyB0ZFtjb2w9ImVuZCJdJykpO3ZhciBwPXBhcnNlSW50KCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX3RvcCIpLm5leHQoKS5hdHRyKCJpbmRleCIpKSxmPXBhcnNlSW50KCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX2JvdHRvbSIpLnByZXYoKS5hdHRyKCJpbmRleCIpKSxnPXBhcnNlSW50KCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY190b3AiKS5uZXh0KCkuYXR0cigiaW5kZXgiKSksbT1wYXJzZUludCgkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfYm90dG9tIikucHJldigpLmF0dHIoImluZGV4IikpOzA9PT1vLmxlbmd0aCYmYS5pbmRleDxwJiZsLmluZGV4PnAmJihvPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX3RvcCIpLm5leHQoKS5maW5kKCJ0ZFtjb2w9IithLmNvbHVtbisiXSIpKSwwPT09ZC5sZW5ndGgmJmwuaW5kZXg+ZiYmYS5pbmRleDxmJiYoZD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY19ib3R0b20iKS5wcmV2KCkuZmluZCgidGRbY29sPSIraCsiXSIpKSwwPT09dS5sZW5ndGgmJmEuaW5kZXg8ZyYmbC5pbmRleD5nJiYodT0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfdG9wIikubmV4dCgpLmZpbmQoInRkW2NvbD0iK2EuY29sdW1uKyJdIikpLDA9PT1jLmxlbmd0aCYmbC5pbmRleD5tJiZhLmluZGV4PG0mJihjPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY19ib3R0b20iKS5wcmV2KCkuZmluZCgidGRbY29sPSIrbC5jb2x1bW4rIl0iKSk7dmFyIHc9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9lZGl0YWJsZSIpLmZpbmQoIi53MnVpLWlucHV0Iiksdj13LmF0dHIoInJlY2lkIikseT13LmF0dHIoImNvbHVtbiIpO2lmKCJzZWxlY3Rpb24iIT1uLm5hbWV8fG4ucmFuZ2VbMF0ucmVjaWQhPXZ8fG4ucmFuZ2VbMF0uY29sdW1uIT15KXt2YXIgYj0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2YiK24ubmFtZSk7aWYoMDx1Lmxlbmd0aHx8MDxjLmxlbmd0aClpZigwPT09Yi5sZW5ndGg/KHQuYXBwZW5kKCc8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKyJfZiIrbi5uYW1lKyciIGNsYXNzPSJ3MnVpLXNlbGVjdGlvbiIgc3R5bGU9Iicrbi5zdHlsZSsnIj4nKygic2VsZWN0aW9uIj09bi5uYW1lPyc8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfcmVzaXplciIgY2xhc3M9IncydWktc2VsZWN0aW9uLXJlc2l6ZXIiPjwvZGl2Pic6IiIpKyI8L2Rpdj4iKSxiPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZiIrbi5uYW1lKSk6KGIuYXR0cigic3R5bGUiLG4uc3R5bGUpLGIuZmluZCgiLncydWktc2VsZWN0aW9uLXJlc2l6ZXIiKS5zaG93KCkpLDA9PT1jLmxlbmd0aCYmKDA9PT0oYz0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfIit3MnV0aWxzLmVzY2FwZUlkKGwucmVjaWQpKyIgdGQ6bGFzdC1jaGlsZCIpKS5sZW5ndGgmJihjPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY19ib3R0b20gdGQ6Zmlyc3QtY2hpbGQiKSksYi5jc3MoImJvcmRlci1yaWdodCIsIjBweCIpLGIuZmluZCgiLncydWktc2VsZWN0aW9uLXJlc2l6ZXIiKS5oaWRlKCkpLG51bGwhPWEucmVjaWQmJm51bGwhPWwucmVjaWQmJjA8dS5sZW5ndGgmJjA8Yy5sZW5ndGgpe3ZhciB4PXUucG9zaXRpb24oKS5sZWZ0LTArdC5zY3JvbGxMZWZ0KCksXz11LnBvc2l0aW9uKCkudG9wLTArdC5zY3JvbGxUb3AoKTtiLnNob3coKS5jc3Moe2xlZnQ6KDA8eD94OjApKyJweCIsdG9wOigwPF8/XzowKSsicHgiLHdpZHRoOmMucG9zaXRpb24oKS5sZWZ0LXUucG9zaXRpb24oKS5sZWZ0K2Mud2lkdGgoKSsyKyJweCIsaGVpZ2h0OmMucG9zaXRpb24oKS50b3AtdS5wb3NpdGlvbigpLnRvcCtjLmhlaWdodCgpKzErInB4In0pfWVsc2UgYi5oaWRlKCk7ZWxzZSBiLmhpZGUoKTtiPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfIituLm5hbWUpO2lmKDA8by5sZW5ndGh8fDA8ZC5sZW5ndGgpaWYoMD09PWIubGVuZ3RoPyhpLmFwcGVuZCgnPGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiXyIrbi5uYW1lKyciIGNsYXNzPSJ3MnVpLXNlbGVjdGlvbiIgc3R5bGU9Iicrbi5zdHlsZSsnIj4nKygic2VsZWN0aW9uIj09bi5uYW1lPyc8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfcmVzaXplciIgY2xhc3M9IncydWktc2VsZWN0aW9uLXJlc2l6ZXIiPjwvZGl2Pic6IiIpKyI8L2Rpdj4iKSxiPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfIituLm5hbWUpKTpiLmF0dHIoInN0eWxlIixuLnN0eWxlKSwwPT09by5sZW5ndGgmJjA9PT0obz0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3cydXRpbHMuZXNjYXBlSWQoYS5yZWNpZCkrIiB0ZDpmaXJzdC1jaGlsZCIpKS5sZW5ndGgmJihvPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX3RvcCB0ZDpmaXJzdC1jaGlsZCIpKSwwIT09Yy5sZW5ndGgmJmIuY3NzKCJib3JkZXItbGVmdCIsIjBweCIpLG51bGwhPWEucmVjaWQmJm51bGwhPWwucmVjaWQmJjA8by5sZW5ndGgmJjA8ZC5sZW5ndGgpe3g9by5wb3NpdGlvbigpLmxlZnQtMCtpLnNjcm9sbExlZnQoKSxfPW8ucG9zaXRpb24oKS50b3AtMCtpLnNjcm9sbFRvcCgpO2Iuc2hvdygpLmNzcyh7bGVmdDooMDx4P3g6MCkrInB4Iix0b3A6KDA8Xz9fOjApKyJweCIsd2lkdGg6ZC5wb3NpdGlvbigpLmxlZnQtby5wb3NpdGlvbigpLmxlZnQrZC53aWR0aCgpKzIrInB4IixoZWlnaHQ6ZC5wb3NpdGlvbigpLnRvcC1vLnBvc2l0aW9uKCkudG9wK2QuaGVpZ2h0KCkrMSsicHgifSl9ZWxzZSBiLmhpZGUoKTtlbHNlIGIuaGlkZSgpfX0kKHRoaXMuYm94KS5maW5kKCIudzJ1aS1zZWxlY3Rpb24tcmVzaXplciIpLm9mZigibW91c2Vkb3duIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7dmFyIHQ9ci5nZXRTZWxlY3Rpb24oKTtyLmxhc3QubW92ZT17dHlwZToiZXhwYW5kIix4OmUuc2NyZWVuWCx5OmUuc2NyZWVuWSxkaXZYOjAsZGl2WTowLHJlY2lkOnRbMF0ucmVjaWQsY29sdW1uOnRbMF0uY29sdW1uLG9yaWdpbmFsUmFuZ2U6W3tyZWNpZDp0WzBdLnJlY2lkLGNvbHVtbjp0WzBdLmNvbHVtbn0se3JlY2lkOnRbdC5sZW5ndGgtMV0ucmVjaWQsY29sdW1uOnRbdC5sZW5ndGgtMV0uY29sdW1ufV0sbmV3UmFuZ2U6W3tyZWNpZDp0WzBdLnJlY2lkLGNvbHVtbjp0WzBdLmNvbHVtbn0se3JlY2lkOnRbdC5sZW5ndGgtMV0ucmVjaWQsY29sdW1uOnRbdC5sZW5ndGgtMV0uY29sdW1ufV19LCQoZG9jdW1lbnQpLm9mZigiLncydWktIityLm5hbWUpLm9uKCJtb3VzZW1vdmUudzJ1aS0iK3IubmFtZSxDKS5vbigibW91c2V1cC53MnVpLSIrci5uYW1lLFQpLGUucHJldmVudERlZmF1bHQoKX0pLm9mZigiZGJsY2xpY2siKS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciB0PXIudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVzaXplckRibENsaWNrIix0YXJnZXQ6ci5uYW1lLG9yaWdpbmFsRXZlbnQ6ZX0pOyEwIT09dC5pc0NhbmNlbGxlZCYmci50cmlnZ2VyKCQuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSl9KTt2YXIgaz17cGhhc2U6ImJlZm9yZSIsdHlwZToic2VsZWN0aW9uRXh0ZW5kIix0YXJnZXQ6ci5uYW1lLG9yaWdpbmFsUmFuZ2U6bnVsbCxuZXdSYW5nZTpudWxsfTtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKS1lfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ci5sYXN0Lm1vdmU7aWYodCYmImV4cGFuZCI9PXQudHlwZSl7dmFyIGksczt0LmRpdlg9ZS5zY3JlZW5YLXQueCx0LmRpdlk9ZS5zY3JlZW5ZLXQueTt2YXIgbj1lLm9yaWdpbmFsRXZlbnQudGFyZ2V0O2lmKCJURCIhPW4udGFnTmFtZS50b1VwcGVyQ2FzZSgpJiYobj0kKG4pLnBhcmVudHMoInRkIilbMF0pLG51bGwhPSQobikuYXR0cigiY29sIikmJihzPXBhcnNlSW50KCQobikuYXR0cigiY29sIikpKSxuPSQobikucGFyZW50cygidHIiKVswXSxpPSQobikuYXR0cigicmVjaWQiKSx0Lm5ld1JhbmdlWzFdLnJlY2lkIT1pfHx0Lm5ld1JhbmdlWzFdLmNvbHVtbiE9cyl7dmFyIGE9JC5leHRlbmQoe30sdC5uZXdSYW5nZSk7aWYodC5uZXdSYW5nZT1be3JlY2lkOnQucmVjaWQsY29sdW1uOnQuY29sdW1ufSx7cmVjaWQ6aSxjb2x1bW46c31dLCEwPT09KGs9ci50cmlnZ2VyKCQuZXh0ZW5kKGsse29yaWdpbmFsUmFuZ2U6dC5vcmlnaW5hbFJhbmdlLG5ld1JhbmdlOnQubmV3UmFuZ2V9KSkpLmlzQ2FuY2VsbGVkKXJldHVybiB0Lm5ld1JhbmdlPWEsdm9pZChrLm5ld1JhbmdlPWEpO3IucmVtb3ZlUmFuZ2UoImdyaWQtc2VsZWN0aW9uLWV4cGFuZCIpLHIuYWRkUmFuZ2Uoe25hbWU6ImdyaWQtc2VsZWN0aW9uLWV4cGFuZCIscmFuZ2U6ay5uZXdSYW5nZSxzdHlsZToiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDAsMTAwLDEwMCwwLjEpOyBib3JkZXI6IDJweCBkb3R0ZWQgcmdiYSgxMDAsMTAwLDEwMCwwLjUpOyJ9KX19fWZ1bmN0aW9uIFQoZSl7ci5yZW1vdmVSYW5nZSgiZ3JpZC1zZWxlY3Rpb24tZXhwYW5kIiksZGVsZXRlIHIubGFzdC5tb3ZlLCQoZG9jdW1lbnQpLm9mZigiLncydWktIityLm5hbWUpLHIudHJpZ2dlcigkLmV4dGVuZChrLHtwaGFzZToiYWZ0ZXIifSkpfX0sc2VsZWN0OmZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIDA7KG5ldyBEYXRlKS5nZXRUaW1lKCk7dmFyIGU9MCx0PXRoaXMubGFzdC5zZWxlY3Rpb247dGhpcy5tdWx0aVNlbGVjdHx8dGhpcy5zZWxlY3ROb25lKCk7dmFyIGk9e3BoYXNlOiJiZWZvcmUiLHR5cGU6InNlbGVjdCIsdGFyZ2V0OnRoaXMubmFtZX07MT09YXJndW1lbnRzLmxlbmd0aD8oaS5tdWx0aXBsZT0hMSwkLmlzUGxhaW5PYmplY3QoYXJndW1lbnRzWzBdKT8oaS5yZWNpZD1hcmd1bWVudHNbMF0ucmVjaWQsaS5jb2x1bW49YXJndW1lbnRzWzBdLmNvbHVtbik6aS5yZWNpZD1hcmd1bWVudHNbMF0pOihpLm11bHRpcGxlPSEwLGkucmVjaWRzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSk7dmFyIHM9dGhpcy50cmlnZ2VyKGkpO2lmKCEwPT09cy5pc0NhbmNlbGxlZClyZXR1cm4gMDtpZigicm93Ij09dGhpcy5zZWxlY3RUeXBlKWZvcih2YXIgbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciBhPSJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW25dP2FyZ3VtZW50c1tuXS5yZWNpZDphcmd1bWVudHNbbl07aWYobnVsbCE9KGg9dGhpcy5nZXQoYSwhMCkpKXt2YXIgcj1udWxsLGw9bnVsbDtpZigoMCE9PXRoaXMuc2VhcmNoRGF0YS5sZW5ndGh8fGgrMT49dGhpcy5sYXN0LnJhbmdlX3N0YXJ0JiZoKzE8PXRoaXMubGFzdC5yYW5nZV9lbmQpJiYocj0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfIit3MnV0aWxzLmVzY2FwZUlkKGEpKSxsPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChhKSkpLCJyb3ciPT10aGlzLnNlbGVjdFR5cGUpe2lmKC0xIT10LmluZGV4ZXMuaW5kZXhPZihoKSljb250aW51ZTt0LmluZGV4ZXMucHVzaChoKSxyJiZsJiYoci5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmRhdGEoInNlbGVjdGVkIiwieWVzIikuZmluZCgiLncydWktY29sLW51bWJlciIpLmFkZENsYXNzKCJ3MnVpLXJvdy1zZWxlY3RlZCIpLGwuYWRkQ2xhc3MoIncydWktc2VsZWN0ZWQiKS5kYXRhKCJzZWxlY3RlZCIsInllcyIpLmZpbmQoIi53MnVpLWNvbC1udW1iZXIiKS5hZGRDbGFzcygidzJ1aS1yb3ctc2VsZWN0ZWQiKSxyLmZpbmQoIi53MnVpLWdyaWQtc2VsZWN0LWNoZWNrIikucHJvcCgiY2hlY2tlZCIsITApKSxlKyt9fX1lbHNle3ZhciBvPXt9O2ZvcihuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7YT0ib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1tuXT9hcmd1bWVudHNbbl0ucmVjaWQ6YXJndW1lbnRzW25dO3ZhciBkPSJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW25dP2FyZ3VtZW50c1tuXS5jb2x1bW46bnVsbDtpZihvW2FdPW9bYV18fFtdLCQuaXNBcnJheShkKSlvW2FdPWQ7ZWxzZSBpZih3MnV0aWxzLmlzSW50KGQpKW9bYV0ucHVzaChkKTtlbHNlIGZvcih2YXIgdT0wO3U8dGhpcy5jb2x1bW5zLmxlbmd0aDt1KyspdGhpcy5jb2x1bW5zW3VdLmhpZGRlbnx8b1thXS5wdXNoKHBhcnNlSW50KHUpKX12YXIgYz1bXTtmb3IodmFyIGEgaW4gbyl7dmFyIGg7aWYobnVsbCE9KGg9dGhpcy5nZXQoYSwhMCkpKXtyPW51bGwsbD1udWxsO2grMT49dGhpcy5sYXN0LnJhbmdlX3N0YXJ0JiZoKzE8PXRoaXMubGFzdC5yYW5nZV9lbmQmJihyPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChhKSksbD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfIit3MnV0aWxzLmVzY2FwZUlkKGEpKSk7dmFyIHA9dC5jb2x1bW5zW2hdfHxbXTstMT09dC5pbmRleGVzLmluZGV4T2YoaCkmJnQuaW5kZXhlcy5wdXNoKGgpO2Zvcih2YXIgZj0wO2Y8b1thXS5sZW5ndGg7ZisrKS0xPT1wLmluZGV4T2Yob1thXVtmXSkmJnAucHVzaChvW2FdW2ZdKTtwLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSk7Zm9yKGY9MDtmPG9bYV0ubGVuZ3RoO2YrKyl7dmFyIGc9b1thXVtmXTstMT09Yy5pbmRleE9mKGcpJiZjLnB1c2goZyksciYmKHIuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIraCsiXyIrZykuYWRkQ2xhc3MoIncydWktc2VsZWN0ZWQiKSxyLmZpbmQoIi53MnVpLWNvbC1udW1iZXIiKS5hZGRDbGFzcygidzJ1aS1yb3ctc2VsZWN0ZWQiKSxyLmRhdGEoInNlbGVjdGVkIiwieWVzIiksci5maW5kKCIudzJ1aS1ncmlkLXNlbGVjdC1jaGVjayIpLnByb3AoImNoZWNrZWQiLCEwKSksbCYmKGwuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIraCsiXyIrZykuYWRkQ2xhc3MoIncydWktc2VsZWN0ZWQiKSxsLmZpbmQoIi53MnVpLWNvbC1udW1iZXIiKS5hZGRDbGFzcygidzJ1aS1yb3ctc2VsZWN0ZWQiKSxsLmRhdGEoInNlbGVjdGVkIiwieWVzIiksbC5maW5kKCIudzJ1aS1ncmlkLXNlbGVjdC1jaGVjayIpLnByb3AoImNoZWNrZWQiLCEwKSksZSsrfXQuY29sdW1uc1toXT1wfX1mb3IodmFyIG09MDttPGMubGVuZ3RoO20rKykkKHRoaXMuYm94KS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2NvbHVtbl8iK2NbbV0rIiAudzJ1aS1jb2wtaGVhZGVyIikuYWRkQ2xhc3MoIncydWktY29sLXNlbGVjdGVkIil9dC5pbmRleGVzLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSk7dmFyIHc9MDx0aGlzLnJlY29yZHMubGVuZ3RoJiZ0LmluZGV4ZXMubGVuZ3RoPT10aGlzLnJlY29yZHMubGVuZ3RoLHY9MDx0LmluZGV4ZXMubGVuZ3RoJiYwIT09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aCYmdC5pbmRleGVzLmxlbmd0aD09dGhpcy5sYXN0LnNlYXJjaElkcy5sZW5ndGg7cmV0dXJuIHd8fHY/JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jaGVja19hbGwiKS5wcm9wKCJjaGVja2VkIiwhMCk6JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jaGVja19hbGwiKS5wcm9wKCJjaGVja2VkIiwhMSksdGhpcy5zdGF0dXMoKSx0aGlzLmFkZFJhbmdlKCJzZWxlY3Rpb24iKSx0aGlzLnVwZGF0ZVRvb2xiYXIodCx3KSx0aGlzLnRyaWdnZXIoJC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKSxlfSx1bnNlbGVjdDpmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9dGhpcy5sYXN0LnNlbGVjdGlvbixpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIHM9Im9iamVjdCI9PXR5cGVvZiBhcmd1bWVudHNbaV0/YXJndW1lbnRzW2ldLnJlY2lkOmFyZ3VtZW50c1tpXSxuPXRoaXMuZ2V0KHMpO2lmKG51bGwhPW4pe3ZhciBhPXRoaXMuZ2V0KG4ucmVjaWQsITApLHI9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChzKSksbD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3cydXRpbHMuZXNjYXBlSWQocykpO2lmKCJyb3ciPT10aGlzLnNlbGVjdFR5cGUpe2lmKC0xPT10LmluZGV4ZXMuaW5kZXhPZihhKSljb250aW51ZTtpZighMD09PShjPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToidW5zZWxlY3QiLHRhcmdldDp0aGlzLm5hbWUscmVjaWQ6cyxpbmRleDphfSkpLmlzQ2FuY2VsbGVkKWNvbnRpbnVlO3QuaW5kZXhlcy5zcGxpY2UodC5pbmRleGVzLmluZGV4T2YoYSksMSksci5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCB3MnVpLWluYWN0aXZlIikucmVtb3ZlRGF0YSgic2VsZWN0ZWQiKS5maW5kKCIudzJ1aS1jb2wtbnVtYmVyIikucmVtb3ZlQ2xhc3MoIncydWktcm93LXNlbGVjdGVkIiksbC5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCB3MnVpLWluYWN0aXZlIikucmVtb3ZlRGF0YSgic2VsZWN0ZWQiKS5maW5kKCIudzJ1aS1jb2wtbnVtYmVyIikucmVtb3ZlQ2xhc3MoIncydWktcm93LXNlbGVjdGVkIiksMCE9ci5sZW5ndGgmJihyWzBdLnN0eWxlLmNzc1RleHQ9ImhlaWdodDogIit0aGlzLnJlY29yZEhlaWdodCsicHg7ICIrci5hdHRyKCJjdXN0b21fc3R5bGUiKSxsWzBdLnN0eWxlLmNzc1RleHQ9ImhlaWdodDogIit0aGlzLnJlY29yZEhlaWdodCsicHg7ICIrbC5hdHRyKCJjdXN0b21fc3R5bGUiKSksci5maW5kKCIudzJ1aS1ncmlkLXNlbGVjdC1jaGVjayIpLnByb3AoImNoZWNrZWQiLCExKSxlKyt9ZWxzZXt2YXIgbz1hcmd1bWVudHNbaV0uY29sdW1uO2lmKCF3MnV0aWxzLmlzSW50KG8pKXtmb3IodmFyIGQ9W10sdT0wO3U8dGhpcy5jb2x1bW5zLmxlbmd0aDt1KyspdGhpcy5jb2x1bW5zW3VdLmhpZGRlbnx8ZC5wdXNoKHtyZWNpZDpzLGNvbHVtbjp1fSk7cmV0dXJuIHRoaXMudW5zZWxlY3QuYXBwbHkodGhpcyxkKX12YXIgYyxoPXQuY29sdW1uc1thXTtpZighJC5pc0FycmF5KGgpfHwtMT09aC5pbmRleE9mKG8pKWNvbnRpbnVlO2lmKCEwPT09KGM9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJ1bnNlbGVjdCIsdGFyZ2V0OnRoaXMubmFtZSxyZWNpZDpzLGNvbHVtbjpvfSkpLmlzQ2FuY2VsbGVkKWNvbnRpbnVlO2guc3BsaWNlKGguaW5kZXhPZihvKSwxKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3cydXRpbHMuZXNjYXBlSWQocykpLmZpbmQoIiA+IHRkW2NvbD0iK28rIl0iKS5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCB3MnVpLWluYWN0aXZlIiksJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChzKSkuZmluZCgiID4gdGRbY29sPSIrbysiXSIpLnJlbW92ZUNsYXNzKCJ3MnVpLXNlbGVjdGVkIHcydWktaW5hY3RpdmUiKTt2YXIgcD0hMSxmPSExLGc9dGhpcy5nZXRTZWxlY3Rpb24oKTtmb3IodT0wO3U8Zy5sZW5ndGg7dSsrKWdbdV0uY29sdW1uPT1vJiYocD0hMCksZ1t1XS5yZWNpZD09cyYmKGY9ITApO3B8fCQodGhpcy5ib3gpLmZpbmQoIi53MnVpLWdyaWQtY29sdW1ucyB0ZFtjb2w9IitvKyJdIC53MnVpLWNvbC1oZWFkZXIsIC53MnVpLWdyaWQtZmNvbHVtbnMgdGRbY29sPSIrbysiXSAudzJ1aS1jb2wtaGVhZGVyIikucmVtb3ZlQ2xhc3MoIncydWktY29sLXNlbGVjdGVkIiksZnx8JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChzKSkuZmluZCgiLncydWktY29sLW51bWJlciIpLnJlbW92ZUNsYXNzKCJ3MnVpLXJvdy1zZWxlY3RlZCIpLGUrKywwPT09aC5sZW5ndGgmJihkZWxldGUgdC5jb2x1bW5zW2FdLHQuaW5kZXhlcy5zcGxpY2UodC5pbmRleGVzLmluZGV4T2YoYSksMSksci5yZW1vdmVEYXRhKCJzZWxlY3RlZCIpLHIuZmluZCgiLncydWktZ3JpZC1zZWxlY3QtY2hlY2siKS5wcm9wKCJjaGVja2VkIiwhMSksbC5yZW1vdmVEYXRhKCJzZWxlY3RlZCIpKX10aGlzLnRyaWdnZXIoJC5leHRlbmQoYyx7cGhhc2U6ImFmdGVyIn0pKX19dmFyIG09MDx0aGlzLnJlY29yZHMubGVuZ3RoJiZ0LmluZGV4ZXMubGVuZ3RoPT10aGlzLnJlY29yZHMubGVuZ3RoLHc9MDx0LmluZGV4ZXMubGVuZ3RoJiYwIT09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aCYmdC5pbmRleGVzLmxlbmd0aD09dGhpcy5sYXN0LnNlYXJjaElkcy5sZW5ndGg7cmV0dXJuIG18fHc/JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jaGVja19hbGwiKS5wcm9wKCJjaGVja2VkIiwhMCk6JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jaGVja19hbGwiKS5wcm9wKCJjaGVja2VkIiwhMSksdGhpcy5zdGF0dXMoKSx0aGlzLmFkZFJhbmdlKCJzZWxlY3Rpb24iKSx0aGlzLnVwZGF0ZVRvb2xiYXIodCxtKSxlfSxzZWxlY3RBbGw6ZnVuY3Rpb24oKXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKTtpZighMSE9PXRoaXMubXVsdGlTZWxlY3Qpe3ZhciB0PXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToic2VsZWN0Iix0YXJnZXQ6dGhpcy5uYW1lLGFsbDohMH0pO2lmKCEwIT09dC5pc0NhbmNlbGxlZCl7Zm9yKHZhciBpPSJvYmplY3QiIT10eXBlb2YgdGhpcy51cmw/dGhpcy51cmw6dGhpcy51cmwuZ2V0LHM9dGhpcy5sYXN0LnNlbGVjdGlvbixuPVtdLGE9MDthPHRoaXMuY29sdW1ucy5sZW5ndGg7YSsrKW4ucHVzaChhKTtpZihzLmluZGV4ZXM9W10saXx8MD09PXRoaXMuc2VhcmNoRGF0YS5sZW5ndGgpe3ZhciByPXRoaXMucmVjb3Jkcy5sZW5ndGg7MD09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aHx8aXx8KHI9dGhpcy5sYXN0LnNlYXJjaElkcy5sZW5ndGgpO2ZvcihhPTA7YTxyO2ErKylzLmluZGV4ZXMucHVzaChhKSwicm93IiE9dGhpcy5zZWxlY3RUeXBlJiYocy5jb2x1bW5zW2FdPW4uc2xpY2UoKSl9ZWxzZSBmb3IodmFyIGE9MDthPHRoaXMubGFzdC5zZWFyY2hJZHMubGVuZ3RoO2ErKylzLmluZGV4ZXMucHVzaCh0aGlzLmxhc3Quc2VhcmNoSWRzW2FdKSwicm93IiE9dGhpcy5zZWxlY3RUeXBlJiYocy5jb2x1bW5zW3RoaXMubGFzdC5zZWFyY2hJZHNbYV1dPW4uc2xpY2UoKSk7cmV0dXJuInJvdyI9PXRoaXMuc2VsZWN0VHlwZT8oJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1yZWNvcmRzIHRyIikubm90KCIudzJ1aS1lbXB0eS1yZWNvcmQiKS5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmRhdGEoInNlbGVjdGVkIiwieWVzIikuZmluZCgiLncydWktY29sLW51bWJlciIpLmFkZENsYXNzKCJ3MnVpLXJvdy1zZWxlY3RlZCIpLCQodGhpcy5ib3gpLmZpbmQoIi53MnVpLWdyaWQtZnJlY29yZHMgdHIiKS5ub3QoIi53MnVpLWVtcHR5LXJlY29yZCIpLmFkZENsYXNzKCJ3MnVpLXNlbGVjdGVkIikuZGF0YSgic2VsZWN0ZWQiLCJ5ZXMiKS5maW5kKCIudzJ1aS1jb2wtbnVtYmVyIikuYWRkQ2xhc3MoIncydWktcm93LXNlbGVjdGVkIikpOigkKHRoaXMuYm94KS5maW5kKCIudzJ1aS1ncmlkLWNvbHVtbnMgdGQgLncydWktY29sLWhlYWRlciwgLncydWktZ3JpZC1mY29sdW1ucyB0ZCAudzJ1aS1jb2wtaGVhZGVyIikuYWRkQ2xhc3MoIncydWktY29sLXNlbGVjdGVkIiksJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1yZWNvcmRzIHRyIC53MnVpLWNvbC1udW1iZXIiKS5hZGRDbGFzcygidzJ1aS1yb3ctc2VsZWN0ZWQiKSwkKHRoaXMuYm94KS5maW5kKCIudzJ1aS1ncmlkLXJlY29yZHMgdHIiKS5ub3QoIi53MnVpLWVtcHR5LXJlY29yZCIpLmZpbmQoIi53MnVpLWdyaWQtZGF0YSIpLm5vdCgiLncydWktY29sLXNlbGVjdCIpLmFkZENsYXNzKCJ3MnVpLXNlbGVjdGVkIikuZGF0YSgic2VsZWN0ZWQiLCJ5ZXMiKSwkKHRoaXMuYm94KS5maW5kKCIudzJ1aS1ncmlkLWZyZWNvcmRzIHRyIC53MnVpLWNvbC1udW1iZXIiKS5hZGRDbGFzcygidzJ1aS1yb3ctc2VsZWN0ZWQiKSwkKHRoaXMuYm94KS5maW5kKCIudzJ1aS1ncmlkLWZyZWNvcmRzIHRyIikubm90KCIudzJ1aS1lbXB0eS1yZWNvcmQiKS5maW5kKCIudzJ1aS1ncmlkLWRhdGEiKS5ub3QoIi53MnVpLWNvbC1zZWxlY3QiKS5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmRhdGEoInNlbGVjdGVkIiwieWVzIikpLCQodGhpcy5ib3gpLmZpbmQoImlucHV0LncydWktZ3JpZC1zZWxlY3QtY2hlY2siKS5wcm9wKCJjaGVja2VkIiwhMCksMT09KHM9dGhpcy5nZXRTZWxlY3Rpb24oITApKS5sZW5ndGg/dGhpcy50b29sYmFyLmVuYWJsZSgidzJ1aS1lZGl0Iik6dGhpcy50b29sYmFyLmRpc2FibGUoIncydWktZWRpdCIpLDE8PXMubGVuZ3RoP3RoaXMudG9vbGJhci5lbmFibGUoIncydWktZGVsZXRlIik6dGhpcy50b29sYmFyLmRpc2FibGUoIncydWktZGVsZXRlIiksdGhpcy5hZGRSYW5nZSgic2VsZWN0aW9uIiksJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jaGVja19hbGwiKS5wcm9wKCJjaGVja2VkIiwhMCksdGhpcy5zdGF0dXMoKSx0aGlzLnVwZGF0ZVRvb2xiYXIoe2luZGV4ZXM6c30sITApLHRoaXMudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLWV9fX0sc2VsZWN0Tm9uZTpmdW5jdGlvbigpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJ1bnNlbGVjdCIsdGFyZ2V0OnRoaXMubmFtZSxhbGw6ITB9KTtpZighMCE9PXQuaXNDYW5jZWxsZWQpe3ZhciBpPXRoaXMubGFzdC5zZWxlY3Rpb247cmV0dXJuInJvdyI9PXRoaXMuc2VsZWN0VHlwZT8oJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1yZWNvcmRzIHRyLncydWktc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCB3MnVpLWluYWN0aXZlIikucmVtb3ZlRGF0YSgic2VsZWN0ZWQiKS5maW5kKCIudzJ1aS1jb2wtbnVtYmVyIikucmVtb3ZlQ2xhc3MoIncydWktcm93LXNlbGVjdGVkIiksJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1mcmVjb3JkcyB0ci53MnVpLXNlbGVjdGVkIikucmVtb3ZlQ2xhc3MoIncydWktc2VsZWN0ZWQgdzJ1aS1pbmFjdGl2ZSIpLnJlbW92ZURhdGEoInNlbGVjdGVkIikuZmluZCgiLncydWktY29sLW51bWJlciIpLnJlbW92ZUNsYXNzKCJ3MnVpLXJvdy1zZWxlY3RlZCIpKTooJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1jb2x1bW5zIHRkIC53MnVpLWNvbC1oZWFkZXIsIC53MnVpLWdyaWQtZmNvbHVtbnMgdGQgLncydWktY29sLWhlYWRlciIpLnJlbW92ZUNsYXNzKCJ3MnVpLWNvbC1zZWxlY3RlZCIpLCQodGhpcy5ib3gpLmZpbmQoIi53MnVpLWdyaWQtcmVjb3JkcyB0ciAudzJ1aS1jb2wtbnVtYmVyIikucmVtb3ZlQ2xhc3MoIncydWktcm93LXNlbGVjdGVkIiksJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1mcmVjb3JkcyB0ciAudzJ1aS1jb2wtbnVtYmVyIikucmVtb3ZlQ2xhc3MoIncydWktcm93LXNlbGVjdGVkIiksJCh0aGlzLmJveCkuZmluZCgiLncydWktZ3JpZC1kYXRhLncydWktc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCB3MnVpLWluYWN0aXZlIikucmVtb3ZlRGF0YSgic2VsZWN0ZWQiKSksJCh0aGlzLmJveCkuZmluZCgiaW5wdXQudzJ1aS1ncmlkLXNlbGVjdC1jaGVjayIpLnByb3AoImNoZWNrZWQiLCExKSxpLmluZGV4ZXM9W10saS5jb2x1bW5zPXt9LHRoaXMudG9vbGJhci5kaXNhYmxlKCJ3MnVpLWVkaXQiLCJ3MnVpLWRlbGV0ZSIpLHRoaXMucmVtb3ZlUmFuZ2UoInNlbGVjdGlvbiIpLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfY2hlY2tfYWxsIikucHJvcCgiY2hlY2tlZCIsITEpLHRoaXMuc3RhdHVzKCksdGhpcy51cGRhdGVUb29sYmFyKGksITEpLHRoaXMudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLWV9fSx1cGRhdGVUb29sYmFyOmZ1bmN0aW9uKGksZSl7dmFyIHM9dGhpcyxuPWkmJmkuaW5kZXhlcz9pLmluZGV4ZXMubGVuZ3RoOjA7ZnVuY3Rpb24gYShlLHQpezA9PT1lLmJhdGNoJiYoMDxuP3MudG9vbGJhci5lbmFibGUodCtlLmlkKTpzLnRvb2xiYXIuZGlzYWJsZSh0K2UuaWQpKSxudWxsIT1lLmJhdGNoJiYhaXNOYU4oZS5iYXRjaCkmJjA8ZS5iYXRjaCYmKG49PWUuYmF0Y2g/cy50b29sYmFyLmVuYWJsZSh0K2UuaWQpOnMudG9vbGJhci5kaXNhYmxlKHQrZS5pZCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmJhdGNoJiZlLmJhdGNoKCJjZWxsIj09cy5zZWxlY3RUeXBlP2k6aT9pLmluZGV4ZXM6bnVsbCl9dGhpcy50b29sYmFyLml0ZW1zLmZvckVhY2goZnVuY3Rpb24odCl7YSh0LCIiKSxBcnJheS5pc0FycmF5KHQuaXRlbXMpJiZ0Lml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7YShlLHQuaWQrIjoiKX0pfSl9LGdldFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1bXSxpPXRoaXMubGFzdC5zZWxlY3Rpb247aWYoInJvdyI9PXRoaXMuc2VsZWN0VHlwZSl7Zm9yKHZhciBzPTA7czxpLmluZGV4ZXMubGVuZ3RoO3MrKyl0aGlzLnJlY29yZHNbaS5pbmRleGVzW3NdXSYmKCEwPT09ZT90LnB1c2goaS5pbmRleGVzW3NdKTp0LnB1c2godGhpcy5yZWNvcmRzW2kuaW5kZXhlc1tzXV0ucmVjaWQpKTtyZXR1cm4gdH1mb3Iocz0wO3M8aS5pbmRleGVzLmxlbmd0aDtzKyspe3ZhciBuPWkuY29sdW1uc1tpLmluZGV4ZXNbc11dO2lmKHRoaXMucmVjb3Jkc1tpLmluZGV4ZXNbc11dKWZvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKXQucHVzaCh7cmVjaWQ6dGhpcy5yZWNvcmRzW2kuaW5kZXhlc1tzXV0ucmVjaWQsaW5kZXg6cGFyc2VJbnQoaS5pbmRleGVzW3NdKSxjb2x1bW46blthXX0pfXJldHVybiB0fSxzZWFyY2g6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQscz1bXSxuPXRoaXMubGFzdC5tdWx0aSxhPXRoaXMubGFzdC5sb2dpYyxyPXRoaXMubGFzdC5maWVsZCxsPXRoaXMubGFzdC5zZWFyY2gsbz0hMSxkPTA7ZDx0aGlzLnNlYXJjaGVzLmxlbmd0aDtkKyspdGhpcy5zZWFyY2hlc1tkXS5oaWRkZW4mJm51bGwhPXRoaXMuc2VhcmNoZXNbZF0udmFsdWUmJihzLnB1c2goe2ZpZWxkOnRoaXMuc2VhcmNoZXNbZF0uZmllbGQsb3BlcmF0b3I6dGhpcy5zZWFyY2hlc1tkXS5vcGVyYXRvcnx8ImlzIix0eXBlOnRoaXMuc2VhcmNoZXNbZF0udHlwZSx2YWx1ZTp0aGlzLnNlYXJjaGVzW2RdLnZhbHVlfHwiIn0pLG89ITApO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXtsPSIiO2ZvcihkPTA7ZDx0aGlzLnNlYXJjaGVzLmxlbmd0aDtkKyspe3ZhciB1PXRoaXMuc2VhcmNoZXNbZF0sYz0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX29wZXJhdG9yXyIrZCkudmFsKCksaD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZpZWxkXyIrZCkscD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZpZWxkMl8iK2QpLGY9aC52YWwoKSxnPXAudmFsKCksbT1udWxsLHc9bnVsbDtpZigtMSE9WyJpbnQiLCJmbG9hdCIsIm1vbmV5IiwiY3VycmVuY3kiLCJwZXJjZW50Il0uaW5kZXhPZih1LnR5cGUpKXt2YXIgdj1oLmRhdGEoIncyZmllbGQiKSx5PXAuZGF0YSgidzJmaWVsZCIpO3YmJihmPXYuY2xlYW4oZikpLHkmJihnPXkuY2xlYW4oZykpfWlmKC0xIT1bImxpc3QiLCJlbnVtIl0uaW5kZXhPZih1LnR5cGUpKWlmKGY9aC5kYXRhKCJzZWxlY3RlZCIpfHx7fSwkLmlzQXJyYXkoZikpe209W107Zm9yKHZhciBiPTA7YjxmLmxlbmd0aDtiKyspbS5wdXNoKHcydXRpbHMuaXNGbG9hdChmW2JdLmlkKT9wYXJzZUZsb2F0KGZbYl0uaWQpOlN0cmluZyhmW2JdLmlkKS50b0xvd2VyQ2FzZSgpKSxkZWxldGUgZltiXS5oaWRkZW47JC5pc0VtcHR5T2JqZWN0KGYpJiYoZj0iIil9ZWxzZSB3PWYudGV4dHx8IiIsZj1mLmlkfHwiIjtpZigiIiE9PWYmJm51bGwhPWZ8fG51bGwhPWcmJiIiIT09Zyl7dmFyIHg9e2ZpZWxkOnUuZmllbGQsdHlwZTp1LnR5cGUsb3BlcmF0b3I6Y307ImJldHdlZW4iPT1jPyQuZXh0ZW5kKHgse3ZhbHVlOltmLGddfSk6ImluIj09YyYmInN0cmluZyI9PXR5cGVvZiBmPyQuZXh0ZW5kKHgse3ZhbHVlOmYuc3BsaXQoIiwiKX0pOiJub3QgaW4iPT1jJiYic3RyaW5nIj09dHlwZW9mIGY/JC5leHRlbmQoeCx7dmFsdWU6Zi5zcGxpdCgiLCIpfSk6JC5leHRlbmQoeCx7dmFsdWU6Zn0pLG0mJiQuZXh0ZW5kKHgse3N2YWx1ZTptfSksdyYmJC5leHRlbmQoeCx7dGV4dDp3fSk7dHJ5eyJkYXRlIj09dS50eXBlJiYiYmV0d2VlbiI9PWMmJih4LnZhbHVlWzBdPWYseC52YWx1ZVsxXT1nKSwiZGF0ZSI9PXUudHlwZSYmImlzIj09YyYmKHgudmFsdWU9Zil9Y2F0Y2goZSl7fXMucHVzaCh4KSxuPSEwfX1hPSJBTkQifWlmKCJzdHJpbmciPT10eXBlb2YgZSYmKDE9PWFyZ3VtZW50cy5sZW5ndGgmJih0PWUsZT0iYWxsIikscj1lLG49ITEsYT1vPyJBTkQiOiJPUiIsbnVsbCE9KGw9dCkpKWlmKCJhbGwiPT1lLnRvTG93ZXJDYXNlKCkpaWYoMDx0aGlzLnNlYXJjaGVzLmxlbmd0aClmb3IoZD0wO2Q8dGhpcy5zZWFyY2hlcy5sZW5ndGg7ZCsrKXtpZigidGV4dCI9PSh1PXRoaXMuc2VhcmNoZXNbZF0pLnR5cGV8fCJhbHBoYW51bWVyaWMiPT11LnR5cGUmJncydXRpbHMuaXNBbHBoYU51bWVyaWModCl8fCJpbnQiPT11LnR5cGUmJncydXRpbHMuaXNJbnQodCl8fCJmbG9hdCI9PXUudHlwZSYmdzJ1dGlscy5pc0Zsb2F0KHQpfHwicGVyY2VudCI9PXUudHlwZSYmdzJ1dGlscy5pc0Zsb2F0KHQpfHwoImhleCI9PXUudHlwZXx8ImNvbG9yIj09dS50eXBlKSYmdzJ1dGlscy5pc0hleCh0KXx8ImN1cnJlbmN5Ij09dS50eXBlJiZ3MnV0aWxzLmlzTW9uZXkodCl8fCJtb25leSI9PXUudHlwZSYmdzJ1dGlscy5pc01vbmV5KHQpfHwiZGF0ZSI9PXUudHlwZSYmdzJ1dGlscy5pc0RhdGUodCl8fCJ0aW1lIj09dS50eXBlJiZ3MnV0aWxzLmlzVGltZSh0KXx8ImRhdGV0aW1lIj09dS50eXBlJiZ3MnV0aWxzLmlzRGF0ZVRpbWUodCl8fCJkYXRldGltZSI9PXUudHlwZSYmdzJ1dGlscy5pc0RhdGUodCl8fCJlbnVtIj09dS50eXBlJiZ3MnV0aWxzLmlzQWxwaGFOdW1lcmljKHQpfHwibGlzdCI9PXUudHlwZSYmdzJ1dGlscy5pc0FscGhhTnVtZXJpYyh0KSl7eD17ZmllbGQ6dS5maWVsZCx0eXBlOnUudHlwZSxvcGVyYXRvcjpudWxsIT11Lm9wZXJhdG9yP3Uub3BlcmF0b3I6InRleHQiPT11LnR5cGU/dGhpcy50ZXh0U2VhcmNoOiJpcyIsdmFsdWU6dH07IiIhPSQudHJpbSh0KSYmcy5wdXNoKHgpfWlmKC0xIT1bImludCIsImZsb2F0IiwibW9uZXkiLCJjdXJyZW5jeSIsInBlcmNlbnQiXS5pbmRleE9mKHUudHlwZSkmJjI9PSQudHJpbShTdHJpbmcodCkpLnNwbGl0KCItIikubGVuZ3RoKXt2YXIgXz0kLnRyaW0oU3RyaW5nKHQpKS5zcGxpdCgiLSIpO3g9e2ZpZWxkOnUuZmllbGQsdHlwZTp1LnR5cGUsb3BlcmF0b3I6bnVsbCE9dS5vcGVyYXRvcj91Lm9wZXJhdG9yOiJiZXR3ZWVuIix2YWx1ZTpbX1swXSxfWzFdXX07cy5wdXNoKHgpfWlmKC0xIT1bImxpc3QiLCJlbnVtIl0uaW5kZXhPZih1LnR5cGUpKXt2YXIgaz1bXTtudWxsPT11Lm9wdGlvbnMmJih1Lm9wdGlvbnM9e30pLEFycmF5LmlzQXJyYXkodS5vcHRpb25zLml0ZW1zKXx8KHUub3B0aW9ucy5pdGVtcz1bXSk7Zm9yKGI9MDtiPHUub3B0aW9ucy5pdGVtcztiKyspe3g9dS5vcHRpb25zLml0ZW1zW2JdO3RyeXt2YXIgQz1uZXcgUmVnRXhwKHQsImkiKTtDLnRlc3QoeCkmJmsucHVzaChiKSx4LnRleHQmJkMudGVzdCh4LnRleHQpJiZrLnB1c2goeC5pZCl9Y2F0Y2goZSl7fX1pZigwPGsubGVuZ3RoKXt4PXtmaWVsZDp1LmZpZWxkLHR5cGU6dS50eXBlLG9wZXJhdG9yOm51bGwhPXUub3BlcmF0b3I/dS5vcGVyYXRvcjoiaW4iLHZhbHVlOmt9O3MucHVzaCh4KX19fWVsc2UgZm9yKGQ9MDtkPHRoaXMuY29sdW1ucy5sZW5ndGg7ZCsrKXt4PXtmaWVsZDp0aGlzLmNvbHVtbnNbZF0uZmllbGQsdHlwZToidGV4dCIsb3BlcmF0b3I6dGhpcy50ZXh0U2VhcmNoLHZhbHVlOnR9O3MucHVzaCh4KX1lbHNle3ZhciBUPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfc2VhcmNoX2FsbCIpO2lmKG51bGw9PSh1PXRoaXMuZ2V0U2VhcmNoKGUpKSYmKHU9e2ZpZWxkOmUsdHlwZToidGV4dCJ9KSx1LmZpZWxkPT1lJiYodGhpcy5sYXN0LmxhYmVsPXUubGFiZWwpLCIiIT09dCl7dmFyIFM9dGhpcy50ZXh0U2VhcmNoLE89dDtpZigtMSE9WyJkYXRlIiwidGltZSIsImRhdGV0aW1lIl0uaW5kZXhPZih1LnR5cGUpJiYoUz0iaXMiKSwtMSE9WyJsaXN0IiwiZW51bSJdLmluZGV4T2YodS50eXBlKSlTPSJpcyIsTz0oeD1ULmRhdGEoInNlbGVjdGVkIikpJiYhJC5pc0VtcHR5T2JqZWN0KHgpP3guaWQ6IiI7aWYoImludCI9PXUudHlwZSYmIiIhPT10KXtpZihTPSJpcyIsLTEhPVN0cmluZyh0KS5pbmRleE9mKCItIikpMj09KHg9dC5zcGxpdCgiLSIpKS5sZW5ndGgmJihTPSJiZXR3ZWVuIixPPVtwYXJzZUludCh4WzBdKSxwYXJzZUludCh4WzFdKV0pO2lmKC0xIT1TdHJpbmcodCkuaW5kZXhPZigiLCIpKXt4PXQuc3BsaXQoIiwiKTtTPSJpbiIsTz1bXTtmb3IoZD0wO2Q8eC5sZW5ndGg7ZCsrKU8ucHVzaCh4W2RdKX19bnVsbCE9dS5vcGVyYXRvciYmKFM9dS5vcGVyYXRvcik7eD17ZmllbGQ6dS5maWVsZCx0eXBlOnUudHlwZSxvcGVyYXRvcjpTLHZhbHVlOk99O3MucHVzaCh4KX19aWYoJC5pc0FycmF5KGUpKXt2YXIgRD0iQU5EIjsic3RyaW5nIj09dHlwZW9mIHQmJiJPUiIhPShEPXQudG9VcHBlckNhc2UoKSkmJiJBTkQiIT1EJiYoRD0iQU5EIiksbj0hKGw9IiIpLGE9RDtmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKXt2YXIgej1lW2RdO2lmKG51bGw9PSh1PXRoaXMuZ2V0U2VhcmNoKHouZmllbGQpKSYmKHU9e3R5cGU6InRleHQiLG9wZXJhdG9yOnRoaXMudGV4dFNlYXJjaH0pLCQuaXNBcnJheSh6LnZhbHVlKSlmb3IoYj0wO2I8ei52YWx1ZS5sZW5ndGg7YisrKSJzdHJpbmciPT10eXBlb2Ygei52YWx1ZVtiXSYmKHoudmFsdWVbYl09ei52YWx1ZVtiXS50b0xvd2VyQ2FzZSgpKTtzLnB1c2goJC5leHRlbmQoITAse30sdSx6KSl9fXZhciBJPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToic2VhcmNoIix0YXJnZXQ6dGhpcy5uYW1lLG11bHRpOjA9PT1hcmd1bWVudHMubGVuZ3RoLHNlYXJjaEZpZWxkOmV8fCJtdWx0aSIsc2VhcmNoVmFsdWU6ZT90OiJtdWx0aSIsc2VhcmNoRGF0YTpzLHNlYXJjaExvZ2ljOmF9KTshMCE9PUkuaXNDYW5jZWxsZWQmJih0aGlzLnNlYXJjaERhdGE9SS5zZWFyY2hEYXRhLHRoaXMubGFzdC5maWVsZD1yLHRoaXMubGFzdC5zZWFyY2g9bCx0aGlzLmxhc3QubXVsdGk9bix0aGlzLmxhc3QubG9naWM9SS5zZWFyY2hMb2dpYyx0aGlzLmxhc3Quc2Nyb2xsVG9wPTAsdGhpcy5sYXN0LnNjcm9sbExlZnQ9MCx0aGlzLmxhc3Quc2VsZWN0aW9uLmluZGV4ZXM9W10sdGhpcy5sYXN0LnNlbGVjdGlvbi5jb2x1bW5zPXt9LHRoaXMuc2VhcmNoQ2xvc2UoKSxpPyh0aGlzLmxhc3QueGhyX29mZnNldD0wLHRoaXMucmVsb2FkKCkpOih0aGlzLmxvY2FsU2VhcmNoKCksdGhpcy5yZWZyZXNoKCkpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChJLHtwaGFzZToiYWZ0ZXIifSkpKX0sc2VhcmNoT3BlbjpmdW5jdGlvbigpe2lmKHRoaXMuYm94JiYwIT09dGhpcy5zZWFyY2hlcy5sZW5ndGgpe3ZhciB0PXRoaXMsaT10LnRvb2xiYXIuZ2V0KCJ3MnVpLXNlYXJjaC1hZHZhbmNlZCIpLHM9IiN0Yl8iK3QudG9vbGJhci5uYW1lKyJfaXRlbV8iK3cydXRpbHMuZXNjYXBlSWQoaS5pZCkrIiB0YWJsZS53MnVpLWJ1dHRvbiIsbj10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InNlYXJjaE9wZW4iLHRhcmdldDp0aGlzLm5hbWV9KTshMCE9PW4uaXNDYW5jZWxsZWQ/JCgiI3RiXyIrdGhpcy5uYW1lKyJfdG9vbGJhcl9pdGVtX3cydWktc2VhcmNoLWFkdmFuY2VkIikudzJvdmVybGF5KHtodG1sOnRoaXMuZ2V0U2VhcmNoZXNIVE1MKCksbmFtZTp0aGlzLm5hbWUrIi1zZWFyY2hPdmVybGF5IixsZWZ0Oi0xMCxjbGFzczoidzJ1aS1ncmlkLXNlYXJjaGVzIixvblNob3c6ZnVuY3Rpb24oKXt0LmluaXRTZWFyY2hlcygpLCQoIiN3MnVpLW92ZXJsYXktIit0Lm5hbWUrIi1zZWFyY2hPdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMiKS5kYXRhKCJncmlkLW5hbWUiLHQubmFtZSk7dmFyIGU9JCgiI3cydWktb3ZlcmxheS0iK3RoaXMubmFtZSsiLXNlYXJjaE92ZXJsYXkgLncydWktZ3JpZC1zZWFyY2hlcyAqW3JlbD1zZWFyY2hdIik7MDxlLmxlbmd0aCYmZVswXS5mb2N1cygpLGkuY2hlY2tlZHx8KGkuY2hlY2tlZD0hMCwkKHMpLmFkZENsYXNzKCJjaGVja2VkIikpLHQudHJpZ2dlcigkLmV4dGVuZChuLHtwaGFzZToiYWZ0ZXIifSkpfSxvbkhpZGU6ZnVuY3Rpb24oKXtpLmNoZWNrZWQ9ITEsJChzKS5yZW1vdmVDbGFzcygiY2hlY2tlZCIpfX0pOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnRvb2xiYXIudW5jaGVjaygidzJ1aS1zZWFyY2gtYWR2YW5jZWQiKX0sMSl9fSxzZWFyY2hDbG9zZTpmdW5jdGlvbigpe3RoaXMuYm94JiYwIT09dGhpcy5zZWFyY2hlcy5sZW5ndGgmJih0aGlzLnRvb2xiYXImJnRoaXMudG9vbGJhci51bmNoZWNrKCJ3MnVpLXNlYXJjaC1hZHZhbmNlZCIsIncydWktY29sdW1uLW9uLW9mZiIpLCQoKS53Mm92ZXJsYXkoe25hbWU6dGhpcy5uYW1lKyItc2VhcmNoT3ZlcmxheSJ9KSl9LHNlYXJjaFJlc2V0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxpPSExLHM9MDtzPHRoaXMuc2VhcmNoZXMubGVuZ3RoO3MrKyl0aGlzLnNlYXJjaGVzW3NdLmhpZGRlbiYmbnVsbCE9dGhpcy5zZWFyY2hlc1tzXS52YWx1ZSYmKHQucHVzaCh7ZmllbGQ6dGhpcy5zZWFyY2hlc1tzXS5maWVsZCxvcGVyYXRvcjp0aGlzLnNlYXJjaGVzW3NdLm9wZXJhdG9yfHwiaXMiLHR5cGU6dGhpcy5zZWFyY2hlc1tzXS50eXBlLHZhbHVlOnRoaXMuc2VhcmNoZXNbc10udmFsdWV8fCIifSksaT0hMCk7dmFyIG49dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJzZWFyY2giLHJlc2V0OiEwLHRhcmdldDp0aGlzLm5hbWUsc2VhcmNoRGF0YTp0fSk7aWYoITAhPT1uLmlzQ2FuY2VsbGVkKXtpZih0aGlzLnNlYXJjaERhdGE9bi5zZWFyY2hEYXRhLHRoaXMubGFzdC5zZWFyY2g9IiIsdGhpcy5sYXN0LmxvZ2ljPWk/IkFORCI6Ik9SIiwwPHRoaXMuc2VhcmNoZXMubGVuZ3RoKWlmKHRoaXMubXVsdGlTZWFyY2gmJnRoaXMuc2hvdy5zZWFyY2hBbGwpdGhpcy5sYXN0LmZpZWxkPSJhbGwiLHRoaXMubGFzdC5sYWJlbD13MnV0aWxzLmxhbmcoIkFsbCBGaWVsZHMiKTtlbHNle2Zvcih2YXIgYT0wO2E8dGhpcy5zZWFyY2hlcy5sZW5ndGgmJih0aGlzLnNlYXJjaGVzW2FdLmhpZGRlbnx8ITE9PT10aGlzLnNlYXJjaGVzW2FdLnNpbXBsZSk7KWErKzthPj10aGlzLnNlYXJjaGVzLmxlbmd0aD8odGhpcy5sYXN0LmZpZWxkPSIiLHRoaXMubGFzdC5sYWJlbD0iIik6KHRoaXMubGFzdC5maWVsZD10aGlzLnNlYXJjaGVzW2FdLmZpZWxkLHRoaXMubGFzdC5sYWJlbD10aGlzLnNlYXJjaGVzW2FdLmxhYmVsKX10aGlzLmxhc3QubXVsdGk9ITEsdGhpcy5sYXN0Lnhocl9vZmZzZXQ9MCx0aGlzLmxhc3Quc2Nyb2xsVG9wPTAsdGhpcy5sYXN0LnNjcm9sbExlZnQ9MCx0aGlzLmxhc3Quc2VsZWN0aW9uLmluZGV4ZXM9W10sdGhpcy5sYXN0LnNlbGVjdGlvbi5jb2x1bW5zPXt9LHRoaXMuc2VhcmNoQ2xvc2UoKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3NlYXJjaF9hbGwiKS52YWwoIiIpLnJlbW92ZURhdGEoInNlbGVjdGVkIiksZXx8dGhpcy5yZWxvYWQoKSx0aGlzLnRyaWdnZXIoJC5leHRlbmQobix7cGhhc2U6ImFmdGVyIn0pKX19LHNlYXJjaFNob3dGaWVsZHM6ZnVuY3Rpb24oZSl7dmFyIHQ9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9zZWFyY2hfYWxsIik7aWYoITAhPT1lKXtmb3IodmFyIGk9JzxkaXYgY2xhc3M9IncydWktc2VsZWN0LWZpZWxkIj48dGFibGU+PHRib2R5Picscz0tMTtzPHRoaXMuc2VhcmNoZXMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5zZWFyY2hlc1tzXSxhPW4/bi5maWVsZDpudWxsLHI9dGhpcy5nZXRDb2x1bW4oYSksbD0hMSxvPSJUaGlzIGNvbHVtbiBpcyBoaWRkZW4iO2lmKDE9PXRoaXMuc2hvdy5zZWFyY2hIaWRkZW5Nc2cmJi0xIT1zJiYobnVsbD09cnx8ITA9PT1yLmhpZGRlbiYmITEhPT1yLmhpZGVhYmxlKSYmKGw9ITAsbnVsbD09ciYmKG89IlRoaXMgY29sdW1uIGRvZXMgbm90IGV4aXN0IikpLC0xPT1zKXtpZighdGhpcy5tdWx0aVNlYXJjaHx8IXRoaXMuc2hvdy5zZWFyY2hBbGwpY29udGludWU7bj17ZmllbGQ6ImFsbCIsbGFiZWw6dzJ1dGlscy5sYW5nKCJBbGwgRmllbGRzIil9fWVsc2V7aWYobnVsbCE9ciYmITE9PT1yLmhpZGVhYmxlKWNvbnRpbnVlO2lmKCEwPT09dGhpcy5zZWFyY2hlc1tzXS5oaWRkZW58fCExPT09dGhpcy5zZWFyY2hlc1tzXS5zaW1wbGUpY29udGludWV9bnVsbD09bi5sYWJlbCYmbnVsbCE9bi5jYXB0aW9uJiYoY29uc29sZS5sb2coIk5PVElDRTogZ3JpZCBzZWFyY2guY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHNlYXJjaC5sYWJlbC4gU2VhcmNoIC0+IixuKSxuLmxhYmVsPW4uY2FwdGlvbiksaSs9Jzx0ciBzdHlsZT0iJysobD8iY29sb3I6IHNpbHZlciI6IiIpKyciICcrKGw/Im9ubW91c2VlbnRlcj1cImpRdWVyeSh0aGlzKS53MnRhZyh7IHRvcDogNCwgaHRtbDogJyIrbysnXCcgfSkiIG9ubW91c2VsZWF2ZT0ialF1ZXJ5KHRoaXMpLncydGFnKCkiJzoiIikrKHcydXRpbHMuaXNJT1M/Im9uVG91Y2hTdGFydCI6Im9uQ2xpY2siKSsiPVwidzJ1aVsnIit0aGlzLm5hbWUrIiddLmluaXRBbGxGaWVsZCgnIituLmZpZWxkKyInKTsgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgalF1ZXJ5KCcjZ3JpZF8iK3RoaXMubmFtZSsiX3NlYXJjaF9hbGwnKS53Mm92ZXJsYXkoeyBuYW1lOiAnIit0aGlzLm5hbWUrJy1zZWFyY2hGaWVsZHNcJyB9KTsiPiAgIDx0ZD4gICAgICAgPHNwYW4gY2xhc3M9IncydWktY29sdW1uLWNoZWNrIHcydWktaWNvbi0nKyhuLmZpZWxkPT10aGlzLmxhc3QuZmllbGQ/ImNoZWNrIjoiZW1wdHkiKSsnIj48L3NwYW4+ICAgPC90ZD4gICA8dGQ+JytuLmxhYmVsKyI8L3RkPjwvdHI+In1pKz0iPC90Ym9keT48L3RhYmxlPjwvZGl2PiI7dmFyIGQ9dGhpcy5uYW1lKyItc2VhcmNoRmllbGRzIjsxPT0kKCIjdzJ1aS1vdmVybGF5LSIrZCkubGVuZ3RoJiYoaT0iIiksc2V0VGltZW91dChmdW5jdGlvbigpeyQodCkudzJvdmVybGF5KHtodG1sOmksbmFtZTpkLGxlZnQ6LTEwfSl9LDEpfWVsc2UgJCh0KS53Mm92ZXJsYXkoe25hbWU6dGhpcy5uYW1lKyItc2VhcmNoRmllbGRzIn0pfSxpbml0QWxsRmllbGQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3NlYXJjaF9hbGwiKTtpZigiYWxsIj09ZSl7dmFyIHM9e2ZpZWxkOiJhbGwiLGxhYmVsOncydXRpbHMubGFuZygiQWxsIEZpZWxkcyIpfTtpLncyZmllbGQoImNsZWFyIiksaS5jaGFuZ2UoKX1lbHNle2lmKG51bGw9PShzPXRoaXMuZ2V0U2VhcmNoKGUpKSlyZXR1cm47dmFyIG49cy50eXBlOy0xIT1bImVudW0iLCJzZWxlY3QiXS5pbmRleE9mKG4pJiYobj0ibGlzdCIpLGkudzJmaWVsZChuLCQuZXh0ZW5kKHt9LHMub3B0aW9ucyx7c3VmZml4OiIiLGF1dG9Gb3JtYXQ6ITEsc2VsZWN0ZWQ6dH0pKSwtMSE9WyJsaXN0IiwiZW51bSIsImRhdGUiLCJ0aW1lIiwiZGF0ZXRpbWUiXS5pbmRleE9mKHMudHlwZSkmJih0aGlzLmxhc3Quc2VhcmNoPSIiLHRoaXMubGFzdC5pdGVtPSIiLGkudmFsKCIiKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3NlYXJjaENsZWFyIikuaGlkZSgpKX0iIiE9dGhpcy5sYXN0LnNlYXJjaD8odGhpcy5sYXN0LmxhYmVsPXMubGFiZWwsdGhpcy5zZWFyY2gocy5maWVsZCx0aGlzLmxhc3Quc2VhcmNoKSk6KHRoaXMubGFzdC5maWVsZD1zLmZpZWxkLHRoaXMubGFzdC5sYWJlbD1zLmxhYmVsKSxpLmF0dHIoInBsYWNlaG9sZGVyIix3MnV0aWxzLmxhbmcocy5sYWJlbHx8cy5jYXB0aW9ufHxzLmZpZWxkKSksJCgpLncyb3ZlcmxheSh7bmFtZTp0aGlzLm5hbWUrIi1zZWFyY2hGaWVsZHMifSl9LGNsZWFyOmZ1bmN0aW9uKGUpe3RoaXMudG90YWw9MCx0aGlzLnJlY29yZHM9W10sdGhpcy5zdW1tYXJ5PVtdLHRoaXMubGFzdC54aHJfb2Zmc2V0PTAsdGhpcy5sYXN0LmlkQ2FjaGU9e30sdGhpcy5yZXNldCghMCksZXx8dGhpcy5yZWZyZXNoKCl9LHJlc2V0OmZ1bmN0aW9uKGUpe3RoaXMubGFzdC5zY3JvbGxUb3A9MCx0aGlzLmxhc3Quc2Nyb2xsTGVmdD0wLHRoaXMubGFzdC5zZWxlY3Rpb249e2luZGV4ZXM6W10sY29sdW1uczp7fX0sdGhpcy5sYXN0LnJhbmdlX3N0YXJ0PW51bGwsdGhpcy5sYXN0LnJhbmdlX2VuZD1udWxsLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjb3JkcyIpLnByb3AoInNjcm9sbFRvcCIsMCksZXx8dGhpcy5yZWZyZXNoKCl9LHNraXA6ZnVuY3Rpb24oZSx0KXsoIm9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQpPyh0aGlzLm9mZnNldD1wYXJzZUludChlKSx0aGlzLm9mZnNldD50aGlzLnRvdGFsJiYodGhpcy5vZmZzZXQ9dGhpcy50b3RhbC10aGlzLmxpbWl0KSwodGhpcy5vZmZzZXQ8MHx8IXcydXRpbHMuaXNJbnQodGhpcy5vZmZzZXQpKSYmKHRoaXMub2Zmc2V0PTApLHRoaXMuY2xlYXIoITApLHRoaXMucmVsb2FkKHQpKTpjb25zb2xlLmxvZygiRVJST1I6IGdyaWQuc2tpcCgpIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHlvdSBoYXZlIHJlbW90ZSBkYXRhIHNvdXJjZS4iKX0sbG9hZDpmdW5jdGlvbihlLHQpe251bGwhPWU/KHRoaXMuY2xlYXIoITApLHRoaXMucmVxdWVzdCgiZ2V0Iix7fSxlLHQpKTpjb25zb2xlLmxvZygnRVJST1I6IFlvdSBuZWVkIHRvIHByb3ZpZGUgdXJsIGFyZ3VtZW50IHdoZW4gY2FsbGluZyAubG9hZCgpIG1ldGhvZCBvZiAiJyt0aGlzLm5hbWUrJyIgb2JqZWN0LicpfSxyZWxvYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPSJvYmplY3QiIT10eXBlb2YgdGhpcy51cmw/dGhpcy51cmw6dGhpcy51cmwuZ2V0O3Quc2VsZWN0aW9uU2F2ZSgpLGk/dGhpcy5sb2FkKGksZnVuY3Rpb24oKXt0LnNlbGVjdGlvblJlc3RvcmUoKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmZSgpfSk6KHRoaXMucmVzZXQoITApLHRoaXMubG9jYWxTZWFyY2goKSx0aGlzLnNlbGVjdGlvblJlc3RvcmUoKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmZSh7c3RhdHVzOiJzdWNjZXNzIn0pKX0scmVxdWVzdDpmdW5jdGlvbihyLGUsdCxsKXtpZihudWxsPT1lJiYoZT17fSksIiIhPXQmJm51bGwhPXR8fCh0PXRoaXMudXJsKSwiIiE9dCYmbnVsbCE9dCl7dzJ1dGlscy5pc0ludCh0aGlzLm9mZnNldCl8fCh0aGlzLm9mZnNldD0wKSx3MnV0aWxzLmlzSW50KHRoaXMubGFzdC54aHJfb2Zmc2V0KXx8KHRoaXMubGFzdC54aHJfb2Zmc2V0PTApO3ZhciBpPXtsaW1pdDp0aGlzLmxpbWl0LG9mZnNldDpwYXJzZUludCh0aGlzLm9mZnNldCkrcGFyc2VJbnQodGhpcy5sYXN0Lnhocl9vZmZzZXQpLHNlYXJjaExvZ2ljOnRoaXMubGFzdC5sb2dpYyxzZWFyY2g6dGhpcy5zZWFyY2hEYXRhLm1hcChmdW5jdGlvbihlKXt2YXIgdD0kLmV4dGVuZCh7fSxlKTtyZXR1cm4gdGhpcy5zZWFyY2hNYXAmJnRoaXMuc2VhcmNoTWFwW3QuZmllbGRdJiYodC5maWVsZD10aGlzLnNlYXJjaE1hcFt0LmZpZWxkXSksdH0uYmluZCh0aGlzKSksc29ydDp0aGlzLnNvcnREYXRhLm1hcChmdW5jdGlvbihlKXt2YXIgdD0kLmV4dGVuZCh7fSxlKTtyZXR1cm4gdGhpcy5zb3J0TWFwJiZ0aGlzLnNvcnRNYXBbdC5maWVsZF0mJih0LmZpZWxkPXRoaXMuc29ydE1hcFt0LmZpZWxkXSksdH0uYmluZCh0aGlzKSl9O2lmKDA9PT10aGlzLnNlYXJjaERhdGEubGVuZ3RoJiYoZGVsZXRlIGkuc2VhcmNoLGRlbGV0ZSBpLnNlYXJjaExvZ2ljKSwwPT09dGhpcy5zb3J0RGF0YS5sZW5ndGgmJmRlbGV0ZSBpLnNvcnQsJC5leHRlbmQoaSx0aGlzLnBvc3REYXRhKSwkLmV4dGVuZChpLGUpLCJkZWxldGUiIT1yJiYic2F2ZSIhPXJ8fChkZWxldGUgaS5saW1pdCxkZWxldGUgaS5vZmZzZXQsImRlbGV0ZSI9PShpLmFjdGlvbj1yKSYmKGlbdGhpcy5yZWNpZHx8InJlY2lkIl09dGhpcy5nZXRTZWxlY3Rpb24oKSkpLCJnZXQiPT1yKXtpZighMD09PShzPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVxdWVzdCIsdGFyZ2V0OnRoaXMubmFtZSx1cmw6dCxwb3N0RGF0YTppLGh0dHBIZWFkZXJzOnRoaXMuaHR0cEhlYWRlcnN9KSkuaXNDYW5jZWxsZWQpcmV0dXJuIHZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIGwmJmwoe3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6IlJlcXVlc3QgYWJvcnRlZC4ifSkpfWVsc2UgdmFyIHM9e3VybDp0LHBvc3REYXRhOmksaHR0cEhlYWRlcnM6dGhpcy5odHRwSGVhZGVyc307dmFyIG89dGhpcztpZigwPT09dGhpcy5sYXN0Lnhocl9vZmZzZXQpby5sb2NrKHcydXRpbHMubGFuZyhvLm1zZ1JlZnJlc2gpLCEwKTtlbHNle3ZhciBuPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX21vcmUsICNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY19tb3JlIik7ITA9PT10aGlzLmF1dG9Mb2FkP24uc2hvdygpLmZpbmQoInRkIikuaHRtbCgnPGRpdj48ZGl2IHN0eWxlPSJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyIgY2xhc3M9IncydWktc3Bpbm5lciI+PC9kaXY+PC9kaXY+Jyk6bi5maW5kKCJ0ZCIpLmh0bWwoIjxkaXY+Iit3MnV0aWxzLmxhbmcoIkxvYWQiKSsiICIrby5saW1pdCsiICIrdzJ1dGlscy5sYW5nKCJNb3JlIikrIi4uLjwvZGl2PiIpfWlmKHRoaXMubGFzdC54aHIpdHJ5e3RoaXMubGFzdC54aHIuYWJvcnQoKX1jYXRjaChlKXt9aWYodD0ib2JqZWN0IiE9dHlwZW9mIHMudXJsP3MudXJsOnMudXJsLmdldCwic2F2ZSI9PXImJiJvYmplY3QiPT10eXBlb2Ygcy51cmwmJih0PXMudXJsLnNhdmUpLCJkZWxldGUiPT1yJiYib2JqZWN0Ij09dHlwZW9mIHMudXJsJiYodD1zLnVybC5yZW1vdmUpLCEkLmlzRW1wdHlPYmplY3Qoby5yb3V0ZURhdGEpKXt2YXIgYT13MnV0aWxzLnBhcnNlUm91dGUodCk7aWYoMDxhLmtleXMubGVuZ3RoKWZvcih2YXIgZD0wO2Q8YS5rZXlzLmxlbmd0aDtkKyspbnVsbCE9by5yb3V0ZURhdGFbYS5rZXlzW2RdLm5hbWVdJiYodD10LnJlcGxhY2UobmV3IFJlZ0V4cCgiOiIrYS5rZXlzW2RdLm5hbWUsImciKSxvLnJvdXRlRGF0YVthLmtleXNbZF0ubmFtZV0pKX12YXIgdT17dHlwZToiUE9TVCIsdXJsOnQsZGF0YTpzLnBvc3REYXRhLGhlYWRlcnM6cy5odHRwSGVhZGVycyxkYXRhVHlwZToidGV4dCJ9O3N3aXRjaCh0aGlzLmRhdGFUeXBlfHx3MnV0aWxzLnNldHRpbmdzLmRhdGFUeXBlKXtjYXNlIkhUVFAiOnUuZGF0YT0ib2JqZWN0Ij09dHlwZW9mIHUuZGF0YT9TdHJpbmcoJC5wYXJhbSh1LmRhdGEsITEpKS5yZXBsYWNlKC8lNUIvZywiWyIpLnJlcGxhY2UoLyU1RC9nLCJdIik6dS5kYXRhO2JyZWFrO2Nhc2UiSFRUUEpTT04iOnUuZGF0YT17cmVxdWVzdDpKU09OLnN0cmluZ2lmeSh1LmRhdGEpfTticmVhaztjYXNlIlJFU1RGVUxMIjp1LnR5cGU9IkdFVCIsInNhdmUiPT1yJiYodS50eXBlPSJQVVQiKSwiZGVsZXRlIj09ciYmKHUudHlwZT0iREVMRVRFIiksdS5kYXRhPSJvYmplY3QiPT10eXBlb2YgdS5kYXRhP1N0cmluZygkLnBhcmFtKHUuZGF0YSwhMSkpLnJlcGxhY2UoLyU1Qi9nLCJbIikucmVwbGFjZSgvJTVEL2csIl0iKTp1LmRhdGE7YnJlYWs7Y2FzZSJSRVNURlVMTEpTT04iOnUudHlwZT0iR0VUIiwic2F2ZSI9PXImJih1LnR5cGU9IlBVVCIpLCJkZWxldGUiPT1yJiYodS50eXBlPSJERUxFVEUiKSx1LmRhdGE9SlNPTi5zdHJpbmdpZnkodS5kYXRhKSx1LmNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi9qc29uIjticmVhaztjYXNlIkpTT04iOnUudHlwZT0iUE9TVCIsdS5kYXRhPUpTT04uc3RyaW5naWZ5KHUuZGF0YSksdS5jb250ZW50VHlwZT0iYXBwbGljYXRpb24vanNvbiJ9dGhpcy5tZXRob2QmJih1LnR5cGU9dGhpcy5tZXRob2QpLHRoaXMubGFzdC54aHJfY21kPXIsdGhpcy5sYXN0Lnhocl9zdGFydD0obmV3IERhdGUpLmdldFRpbWUoKSx0aGlzLmxhc3QueGhyPSQuYWpheCh1KS5kb25lKGZ1bmN0aW9uKGUsdCxpKXtvLnJlcXVlc3RDb21wbGV0ZSh0LHIsbCl9KS5mYWlsKGZ1bmN0aW9uKGUsdCxpKXt2YXIgcz17c3RhdHVzOnQsZXJyb3I6aSxyYXdSZXNwb25zZVRleHQ6ZS5yZXNwb25zZVRleHR9LG49by50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJlcnJvciIsZXJyb3I6cyx4aHI6ZX0pO2lmKCEwIT09bi5pc0NhbmNlbGxlZCl7aWYoImFib3J0IiE9dCl7dmFyIGE7dHJ5e2E9JC5wYXJzZUpTT04oZS5yZXNwb25zZVRleHQpfWNhdGNoKGUpe31jb25zb2xlLmxvZygiRVJST1I6IFNlcnZlciBjb21tdW5pY2F0aW9uIGZhaWxlZC4iLCJcbiAgIEVYUEVDVEVEOiIse3N0YXR1czoic3VjY2VzcyIsdG90YWw6NSxyZWNvcmRzOlt7cmVjaWQ6MSxmaWVsZDoidmFsdWUifV19LCJcbiAgICAgICAgIE9SOiIse3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6ImVycm9yIG1lc3NhZ2UifSwiXG4gICBSRUNFSVZFRDoiLCJvYmplY3QiPT10eXBlb2YgYT9hOmUucmVzcG9uc2VUZXh0KSxvLnJlcXVlc3RDb21wbGV0ZSgiZXJyb3IiLHIsbCl9by50cmlnZ2VyKCQuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSl9fSksImdldCI9PXImJnRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpfX0scmVxdWVzdENvbXBsZXRlOmZ1bmN0aW9uKHN0YXR1cyxjbWQsY2FsbEJhY2spe3ZhciBvYmo9dGhpczt0aGlzLnVubG9jaygpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtvYmouc2hvdy5zdGF0dXNSZXNwb25zZSYmb2JqLnN0YXR1cyh3MnV0aWxzLmxhbmcoIlNlcnZlciBSZXNwb25zZSIpKyIgIisoKG5ldyBEYXRlKS5nZXRUaW1lKCktb2JqLmxhc3QueGhyX3N0YXJ0KS8xZTMrIiAiK3cydXRpbHMubGFuZygic2VjIikpfSwxMCksdGhpcy5sYXN0LnB1bGxfbW9yZT0hMSx0aGlzLmxhc3QucHVsbF9yZWZyZXNoPSEwO3ZhciBldmVudF9uYW1lPSJsb2FkIjsic2F2ZSI9PXRoaXMubGFzdC54aHJfY21kJiYoZXZlbnRfbmFtZT0ic2F2ZSIpLCJkZWxldGUiPT10aGlzLmxhc3QueGhyX2NtZCYmKGV2ZW50X25hbWU9ImRlbGV0ZSIpO3ZhciBlZGF0YT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDp0aGlzLm5hbWUsdHlwZTpldmVudF9uYW1lLHhocjp0aGlzLmxhc3QueGhyLHN0YXR1czpzdGF0dXN9KTtpZighMCE9PWVkYXRhLmlzQ2FuY2VsbGVkKXt2YXIgZGF0YSxyZXNwb25zZVRleHQ9dGhpcy5sYXN0Lnhoci5yZXNwb25zZVRleHQ7aWYoImVycm9yIiE9c3RhdHVzKXtpZihudWxsIT1yZXNwb25zZVRleHQmJiIiIT1yZXNwb25zZVRleHQpe2lmKCJvYmplY3QiPT10eXBlb2YgcmVzcG9uc2VUZXh0KWRhdGE9cmVzcG9uc2VUZXh0O2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIG9iai5wYXJzZXIpZGF0YT1vYmoucGFyc2VyKHJlc3BvbnNlVGV4dCksIm9iamVjdCIhPXR5cGVvZiBkYXRhJiZjb25zb2xlLmxvZygiRVJST1I6IFlvdXIgcGFyc2VyIGRpZCBub3QgcmV0dXJuIHByb3BlciBvYmplY3QiKTtlbHNlIHRyeXtldmFsKCJkYXRhID0gIityZXNwb25zZVRleHQpfWNhdGNoKGUpe31pZihudWxsPT1kYXRhP2RhdGE9e3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6dzJ1dGlscy5sYW5nKHRoaXMubXNnTm90SlNPTikscmVzcG9uc2VUZXh0OnJlc3BvbnNlVGV4dH06QXJyYXkuaXNBcnJheShkYXRhKSYmKGRhdGE9e3N0YXR1czoic3VjY2VzcyIscmVjb3JkczpkYXRhLHRvdGFsOmRhdGEubGVuZ3RofSksb2JqLnJlY2lkJiZkYXRhLnJlY29yZHMpZm9yKHZhciBpPTA7aTxkYXRhLnJlY29yZHMubGVuZ3RoO2krKylkYXRhLnJlY29yZHNbaV0ucmVjaWQ9ZGF0YS5yZWNvcmRzW2ldW29iai5yZWNpZF07aWYoImVycm9yIj09ZGF0YS5zdGF0dXMpb2JqLmVycm9yKGRhdGEubWVzc2FnZSk7ZWxzZXtpZigiZ2V0Ij09Y21kKXtpZihudWxsPT1kYXRhLnRvdGFsJiYoZGF0YS50b3RhbD0tMSksbnVsbD09ZGF0YS5yZWNvcmRzJiYoZGF0YS5yZWNvcmRzPVtdKSxkYXRhLnJlY29yZHMubGVuZ3RoPT10aGlzLmxpbWl0P3RoaXMubGFzdC54aHJfaGFzTW9yZT0hMDoodGhpcy5sYXN0Lnhocl9oYXNNb3JlPSExLHRoaXMudG90YWw9dGhpcy5vZmZzZXQrdGhpcy5sYXN0Lnhocl9vZmZzZXQrZGF0YS5yZWNvcmRzLmxlbmd0aCksMD09PXRoaXMubGFzdC54aHJfb2Zmc2V0KXRoaXMucmVjb3Jkcz1bXSx0aGlzLnN1bW1hcnk9W10sdzJ1dGlscy5pc0ludChkYXRhLnRvdGFsKSYmKHRoaXMudG90YWw9cGFyc2VJbnQoZGF0YS50b3RhbCkpO2Vsc2UgaWYoLTEhPWRhdGEudG90YWwmJnBhcnNlSW50KGRhdGEudG90YWwpIT1wYXJzZUludCh0aGlzLnRvdGFsKSlyZXR1cm4gdm9pZCB0aGlzLm1lc3NhZ2UodzJ1dGlscy5sYW5nKHRoaXMubXNnTmVlZFJlbG9hZCksZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5sYXN0Lnhocl9vZmZzZXQsdGhpcy5yZWxvYWQoKX0uYmluZCh0aGlzKSk7aWYoZGF0YS5yZWNvcmRzKWZvcih2YXIgcj0wO3I8ZGF0YS5yZWNvcmRzLmxlbmd0aDtyKyspdGhpcy5yZWNvcmRzLnB1c2goZGF0YS5yZWNvcmRzW3JdKTtpZihkYXRhLnN1bW1hcnkpe3RoaXMuc3VtbWFyeT1bXTtmb3IodmFyIHI9MDtyPGRhdGEuc3VtbWFyeS5sZW5ndGg7cisrKXRoaXMuc3VtbWFyeS5wdXNoKGRhdGEuc3VtbWFyeVtyXSl9fWlmKCJkZWxldGUiPT1jbWQpcmV0dXJuIHRoaXMucmVzZXQoKSx2b2lkIHRoaXMucmVsb2FkKCl9fX1lbHNlIGRhdGE9e3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6dzJ1dGlscy5sYW5nKHRoaXMubXNnQUpBWGVycm9yKSxyZXNwb25zZVRleHQ6cmVzcG9uc2VUZXh0fSxvYmouZXJyb3IodzJ1dGlscy5sYW5nKHRoaXMubXNnQUpBWGVycm9yKSk7dmFyIHVybD0ib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldDt1cmx8fCh0aGlzLmxvY2FsU29ydCgpLHRoaXMubG9jYWxTZWFyY2goKSksdGhpcy50b3RhbD1wYXJzZUludCh0aGlzLnRvdGFsKSwwPT09dGhpcy5sYXN0Lnhocl9vZmZzZXQ/dGhpcy5yZWZyZXNoKCk6KHRoaXMuc2Nyb2xsKCksdGhpcy5yZXNpemUoKSksImZ1bmN0aW9uIj09dHlwZW9mIGNhbGxCYWNrJiZjYWxsQmFjayhkYXRhKSx0aGlzLnRyaWdnZXIoJC5leHRlbmQoZWRhdGEse3BoYXNlOiJhZnRlciJ9KSl9ZWxzZSJmdW5jdGlvbiI9PXR5cGVvZiBjYWxsQmFjayYmY2FsbEJhY2soe3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6IlJlcXVlc3QgYWJvcnRlZC4ifSl9LGVycm9yOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJpZ2dlcih7dGFyZ2V0OnRoaXMubmFtZSx0eXBlOiJlcnJvciIsbWVzc2FnZTplLHhocjp0aGlzLmxhc3QueGhyfSk7ITAhPT10LmlzQ2FuY2VsbGVkPyh0aGlzLm1lc3NhZ2UoZSksdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSkpOiJmdW5jdGlvbiI9PXR5cGVvZiBjYWxsQmFjayYmY2FsbEJhY2soe3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6IlJlcXVlc3QgYWJvcnRlZC4ifSl9LGdldENoYW5nZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9W107aWYodm9pZCAwPT09ZSllPXRoaXMucmVjb3Jkcztmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXTtpZihzLncydWkpe2lmKG51bGwhPXMudzJ1aS5jaGFuZ2VzKXt2YXIgbj17fTtuW3RoaXMucmVjaWR8fCJyZWNpZCJdPXMucmVjaWQsdC5wdXNoKCQuZXh0ZW5kKCEwLG4scy53MnVpLmNoYW5nZXMpKX0hMCE9PXMudzJ1aS5leHBhbmRlZCYmcy53MnVpLmNoaWxkcmVuJiZzLncydWkuY2hpbGRyZW4ubGVuZ3RoJiYkLm1lcmdlKHQsdGhpcy5nZXRDaGFuZ2VzKHMudzJ1aS5jaGlsZHJlbikpfX1yZXR1cm4gdH0sbWVyZ2VDaGFuZ2VzOmZ1bmN0aW9uKCl7Zm9yKHZhciBjaGFuZ2VzPXRoaXMuZ2V0Q2hhbmdlcygpLGM9MDtjPGNoYW5nZXMubGVuZ3RoO2MrKyl7dmFyIHJlY29yZD10aGlzLmdldChjaGFuZ2VzW2NdLnJlY2lkKTtmb3IodmFyIHMgaW4gY2hhbmdlc1tjXSlpZigicmVjaWQiIT1zKXsib2JqZWN0Ij09dHlwZW9mIGNoYW5nZXNbY11bc10mJihjaGFuZ2VzW2NdW3NdPWNoYW5nZXNbY11bc10udGV4dCk7dHJ5ey0xIT1zLmluZGV4T2YoIi4iKT9ldmFsKCJyZWNvcmRbJyIrcy5yZXBsYWNlKC9cLi9nLCInXVsnIikrIiddID0gY2hhbmdlc1tjXVtzXSIpOnJlY29yZFtzXT1jaGFuZ2VzW2NdW3NdfWNhdGNoKGUpe2NvbnNvbGUubG9nKCJFUlJPUjogQ2Fubm90IG1lcmdlLiAiLGUubWVzc2FnZXx8IiIsZSl9cmVjb3JkLncydWkmJmRlbGV0ZSByZWNvcmQudzJ1aS5jaGFuZ2VzfX10aGlzLnJlZnJlc2goKX0sc2F2ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGU9dGhpcy5nZXRDaGFuZ2VzKCkscz0ib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLnNhdmUsbj10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDp0aGlzLm5hbWUsdHlwZToic2F2ZSIsY2hhbmdlczplfSk7ITAhPT1uLmlzQ2FuY2VsbGVkP3M/dGhpcy5yZXF1ZXN0KCJzYXZlIix7Y2hhbmdlczpuLmNoYW5nZXN9LG51bGwsZnVuY3Rpb24oZSl7ImVycm9yIiE9PWUuc3RhdHVzJiZpLm1lcmdlQ2hhbmdlcygpLGkudHJpZ2dlcigkLmV4dGVuZChuLHtwaGFzZToiYWZ0ZXIifSkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0KGUpfSk6KHRoaXMubWVyZ2VDaGFuZ2VzKCksdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSkpOnMmJiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0KHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOiJSZXF1ZXN0IGFib3J0ZWQuIn0pfSxlZGl0RmllbGQ6ZnVuY3Rpb24oZCx1LGUsdCl7dmFyIGM9dGhpcztpZighMCE9PXRoaXMubGFzdC5pbkVkaXRNb2RlKXtiPWMuZ2V0KGQsITApO3ZhciBpPWMuZ2V0Q2VsbEVkaXRhYmxlKGIsdSk7aWYoaSl7dmFyIGg9Yy5yZWNvcmRzW2JdLHA9Yy5jb2x1bW5zW3VdLHM9ITA9PT1wLmZyb3plbj8iX2YiOiJfIjtpZigtMT09WyJlbnVtIiwiZmlsZSJdLmluZGV4T2YoaS50eXBlKSl7dmFyIG49Yy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJlZGl0RmllbGQiLHRhcmdldDpjLm5hbWUscmVjaWQ6ZCxjb2x1bW46dSx2YWx1ZTplLGluZGV4OmIsb3JpZ2luYWxFdmVudDp0fSk7aWYoITAhPT1uLmlzQ2FuY2VsbGVkJiYoZT1uLnZhbHVlLHRoaXMubGFzdC5pbkVkaXRNb2RlPSEwLHRoaXMubGFzdC5fZWRpdD17dmFsdWU6ZSxpbmRleDpiLGNvbHVtbjp1LHJlY2lkOmR9LHRoaXMuc2VsZWN0Tm9uZSgpLHRoaXMuc2VsZWN0KHtyZWNpZDpkLGNvbHVtbjp1fSksLTE9PVsiY2hlY2tib3giLCJjaGVjayJdLmluZGV4T2YoaS50eXBlKSkpe3ZhciBhPSQoIiNncmlkXyIrYy5uYW1lK3MrInJlY18iK3cydXRpbHMuZXNjYXBlSWQoZCkpLHI9YS5maW5kKCJbY29sPSIrdSsiXSA+IGRpdiIpOyQodGhpcy5ib3gpLmZpbmQoImRpdi53MnVpLWVkaXQtYm94IikucmVtb3ZlKCksInJvdyIhPXRoaXMuc2VsZWN0VHlwZSYmKCQoIiNncmlkXyIrdGhpcy5uYW1lK3MrInNlbGVjdGlvbiIpLmF0dHIoImlkIiwiZ3JpZF8iK3RoaXMubmFtZSsiX2VkaXRhYmxlIikucmVtb3ZlQ2xhc3MoIncydWktc2VsZWN0aW9uIikuYWRkQ2xhc3MoIncydWktZWRpdC1ib3giKS5wcmVwZW5kKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBib3R0b206IDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyI+PC9kaXY+JykuZmluZCgiLncydWktc2VsZWN0aW9uLXJlc2l6ZXIiKS5yZW1vdmUoKSxyPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZWRpdGFibGUgPmRpdjpmaXJzdC1jaGlsZCIpKSxudWxsPT1pLmluVGFnJiYoaS5pblRhZz0iIiksbnVsbD09aS5vdXRUYWcmJihpLm91dFRhZz0iIiksbnVsbD09aS5zdHlsZSYmKGkuc3R5bGU9IiIpLG51bGw9PWkuaXRlbXMmJihpLml0ZW1zPVtdKTt2YXIgbD1oLncydWkmJmgudzJ1aS5jaGFuZ2VzJiZudWxsIT1oLncydWkuY2hhbmdlc1twLmZpZWxkXT93MnV0aWxzLnN0cmlwVGFncyhoLncydWkuY2hhbmdlc1twLmZpZWxkXSk6dzJ1dGlscy5zdHJpcFRhZ3MoaFtwLmZpZWxkXSk7bnVsbD09bCYmKGw9IiIpO3ZhciBvPSJvYmplY3QiIT10eXBlb2YgbD9sOiIiO251bGwhPW4ub2xkX3ZhbHVlJiYobz1uLm9sZF92YWx1ZSksbnVsbCE9ZSYmKGw9ZSk7dmFyIGY9bnVsbCE9cC5zdHlsZT9wLnN0eWxlKyI7IjoiIjtzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBwLnJlbmRlciYmLTEhPVsibnVtYmVyIiwiaW50IiwiZmxvYXQiLCJtb25leSIsInBlcmNlbnQiLCJzaXplIl0uaW5kZXhPZihwLnJlbmRlci5zcGxpdCgiOiIpWzBdKSYmKGYrPSJ0ZXh0LWFsaWduOiByaWdodDsiKSwwPGkuaXRlbXMubGVuZ3RoJiYhJC5pc1BsYWluT2JqZWN0KGkuaXRlbXNbMF0pJiYoaS5pdGVtcz13Mm9iai5maWVsZC5wcm90b3R5cGUubm9ybU1lbnUoaS5pdGVtcykpLGkudHlwZSl7Y2FzZSJzZWxlY3QiOmZvcih2YXIgZz0iIixtPTA7bTxpLml0ZW1zLmxlbmd0aDttKyspZys9JzxvcHRpb24gdmFsdWU9IicraS5pdGVtc1ttXS5pZCsnIicrKGkuaXRlbXNbbV0uaWQ9PWw/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrIj4iK2kuaXRlbXNbbV0udGV4dCsiPC9vcHRpb24+IjtyLmFkZENsYXNzKCJ3MnVpLWVkaXRhYmxlIikuaHRtbCgnPHNlbGVjdCBpZD0iZ3JpZF8nK2MubmFtZSsiX2VkaXRfIitkKyJfIit1KyciIGNvbHVtbj0iJyt1KyciIGNsYXNzPSJ3MnVpLWlucHV0IiAgICBzdHlsZT0id2lkdGg6IDEwMCU7IHBvaW50ZXItZXZlbnRzOiBhdXRvOyBwYWRkaW5nOiAwIDAgMCAzcHg7IG1hcmdpbjogMHB4OyBib3JkZXItbGVmdDogMDsgYm9yZGVyLXJpZ2h0OiAwOyBib3JkZXItcmFkaXVzOiAwcHg7ICAgICAgICAgICAgb3V0bGluZTogbm9uZTsgZm9udC1mYW1pbHk6IGluaGVyaXQ7JytmK2kuc3R5bGUrJyIgICAgIGZpZWxkPSInK3AuZmllbGQrJyIgcmVjaWQ9IicrZCsnIiAgICAgJytpLmluVGFnKyI+IitnKyI8L3NlbGVjdD4iK2kub3V0VGFnKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5maW5kKCJzZWxlY3QiKS5vbigiY2hhbmdlIixmdW5jdGlvbihlKXtkZWxldGUgYy5sYXN0Lm1vdmV9KS5vbigiYmx1ciIsZnVuY3Rpb24oZSl7MSE9JCh0aGlzKS5kYXRhKCJrZWVwLW9wZW4iKSYmYy5lZGl0Q2hhbmdlLmNhbGwoYyx0aGlzLGIsdSxlKX0pfSwxMCk7YnJlYWs7Y2FzZSJkaXYiOnZhciB3PSJmb250LWZhbWlseTogIisoeT1hLmZpbmQoIltjb2w9Iit1KyJdID4gZGl2IikpLmNzcygiZm9udC1mYW1pbHkiKSsiOyBmb250LXNpemU6ICIreS5jc3MoImZvbnQtc2l6ZSIpKyI7IjtyLmFkZENsYXNzKCJ3MnVpLWVkaXRhYmxlIikuaHRtbCgnPGRpdiBpZD0iZ3JpZF8nK2MubmFtZSsiX2VkaXRfIitkKyJfIit1KyciIGNsYXNzPSJ3MnVpLWlucHV0IiAgICBjb250ZW50ZWRpdGFibGUgc3R5bGU9IicrdytmK2kuc3R5bGUrJyIgYXV0b2NvcnJlY3Q9Im9mZiIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIiAgICAgZmllbGQ9IicrcC5maWVsZCsnIiByZWNpZD0iJytkKyciIGNvbHVtbj0iJyt1KyciICcraS5pblRhZysiPjwvZGl2PiIraS5vdXRUYWcpLG51bGw9PWUmJnIuZmluZCgiZGl2LncydWktaW5wdXQiKS50ZXh0KCJvYmplY3QiIT10eXBlb2YgbD9sOiIiKTt2YXIgdj1yLmZpbmQoImRpdi53MnVpLWlucHV0IikuZ2V0KDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdD12OyQodCkub24oImJsdXIiLGZ1bmN0aW9uKGUpezEhPSQodGhpcykuZGF0YSgia2VlcC1vcGVuIikmJmMuZWRpdENoYW5nZS5jYWxsKGMsdCxiLHUsZSl9KX0sMTApLG51bGwhPWUmJiQodikudGV4dCgib2JqZWN0IiE9dHlwZW9mIGw/bDoiIik7YnJlYWs7ZGVmYXVsdDp2YXIgeTt3PSJmb250LWZhbWlseTogIisoeT1hLmZpbmQoIltjb2w9Iit1KyJdID4gZGl2IikpLmNzcygiZm9udC1mYW1pbHkiKSsiOyBmb250LXNpemU6ICIreS5jc3MoImZvbnQtc2l6ZSIpO3IuYWRkQ2xhc3MoIncydWktZWRpdGFibGUiKS5odG1sKCc8aW5wdXQgaWQ9ImdyaWRfJytjLm5hbWUrIl9lZGl0XyIrZCsiXyIrdSsnIiBhdXRvY29ycmVjdD0ib2ZmIiBhdXRvY29tcGxldGU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiIHR5cGU9InRleHQiICAgICBzdHlsZT0iJyt3KyI7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHBhZGRpbmc6IDNweDsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgb3V0bGluZTogbm9uZTsgYm9yZGVyLXJhZGl1czogMDsgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOyAiK2YraS5zdHlsZSsnIiAgICAgZmllbGQ9IicrcC5maWVsZCsnIiByZWNpZD0iJytkKyciIGNvbHVtbj0iJyt1KyciIGNsYXNzPSJ3MnVpLWlucHV0IicraS5pblRhZysiLz4iK2kub3V0VGFnKSwibnVtYmVyIj09aS50eXBlJiYobD13MnV0aWxzLmZvcm1hdE51bWJlcihsKSksImRhdGUiPT1pLnR5cGUmJihsPXcydXRpbHMuZm9ybWF0RGF0ZSh3MnV0aWxzLmlzRGF0ZShsLGkuZm9ybWF0LCEwKXx8bmV3IERhdGUsaS5mb3JtYXQpKSxudWxsPT1lJiZyLmZpbmQoImlucHV0IikudmFsKCJvYmplY3QiIT10eXBlb2YgbD9sOiIiKTt2PXIuZmluZCgiaW5wdXQiKS5nZXQoMCk7JCh2KS53MmZpZWxkKGkudHlwZSwkLmV4dGVuZChpLHtzZWxlY3RlZDpsfSkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT12OyJsaXN0Ij09aS50eXBlJiYoZT0kKCQodikuZGF0YSgidzJmaWVsZCIpLmhlbHBlcnMuZm9jdXMpLmZpbmQoImlucHV0IiksIm9iamVjdCIhPXR5cGVvZiBsJiYiIiE9bCYmZS52YWwobCkuY3NzKHtvcGFjaXR5OjF9KS5wcmV2KCkuY3NzKHtvcGFjaXR5OjF9KSxyLmZpbmQoImlucHV0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7Yy5lZGl0Q2hhbmdlLmNhbGwoYyx2LGIsdSxlKX0pKSwkKGUpLm9uKCJibHVyIixmdW5jdGlvbihlKXsxIT0kKHRoaXMpLmRhdGEoImtlZXAtb3BlbiIpJiZjLmVkaXRDaGFuZ2UuY2FsbChjLHYsYix1LGUpfSl9LDEwKSxudWxsIT1lJiYkKHYpLnZhbCgib2JqZWN0IiE9dHlwZW9mIGw/bDoiIil9cmV0dXJuIHZvaWQgc2V0VGltZW91dChmdW5jdGlvbigpe2MubGFzdC5pbkVkaXRNb2RlJiYoci5maW5kKCJpbnB1dCwgc2VsZWN0LCBkaXYudzJ1aS1pbnB1dCIpLmRhdGEoIm9sZF92YWx1ZSIsbykub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7ImRpdiI9PWkudHlwZT9rLmNhbGwoci5maW5kKCJkaXYudzJ1aS1pbnB1dCIpWzBdLG51bGwpOmsuY2FsbChyLmZpbmQoImlucHV0LCBzZWxlY3QiKVswXSxudWxsKX0pLm9uKCJwYXN0ZSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcmlnaW5hbEV2ZW50O2UucHJldmVudERlZmF1bHQoKTt2YXIgaT10LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpO2RvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRIVE1MIiwhMSxpKX0pLm9uKCJrZXlkb3duIixmdW5jdGlvbihsKXt2YXIgbz10aGlzLGU9IkRJViI9PW8udGFnTmFtZS50b1VwcGVyQ2FzZSgpPyQobykudGV4dCgpOiQobykudmFsKCk7c3dpdGNoKGwua2V5Q29kZSl7Y2FzZSA4OiJsaXN0IiE9aS50eXBlfHwkKHYpLmRhdGEoIncyZmllbGQiKXx8bC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgOTpjYXNlIDEzOmwucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDM3OjA9PT13MnV0aWxzLmdldEN1cnNvclBvc2l0aW9uKG8pJiZsLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzOTp3MnV0aWxzLmdldEN1cnNvclBvc2l0aW9uKG8pPT1lLmxlbmd0aCYmKHcydXRpbHMuc2V0Q3Vyc29yUG9zaXRpb24obyxlLmxlbmd0aCksbC5wcmV2ZW50RGVmYXVsdCgpKX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3dpdGNoKGwua2V5Q29kZSl7Y2FzZSA5OnZhciBlPWQsdD1sLnNoaWZ0S2V5P2MucHJldkNlbGwoYix1LCEwKTpjLm5leHRDZWxsKGIsdSwhMCk7aWYobnVsbD09dCl7dmFyIGk9bC5zaGlmdEtleT9jLnByZXZSb3coYix1KTpjLm5leHRSb3coYix1KTtpZihudWxsIT1pJiZpIT1iKXtlPWMucmVjb3Jkc1tpXS5yZWNpZDtmb3IodmFyIHM9MDtzPGMuY29sdW1ucy5sZW5ndGg7cysrKXt2YXIgbj1jLmdldENlbGxFZGl0YWJsZShiLHMpO2lmKG51bGwhPW4mJi0xPT1bImNoZWNrYm94IiwiY2hlY2siXS5pbmRleE9mKG4udHlwZSkmJih0PXBhcnNlSW50KHMpLCFsLnNoaWZ0S2V5KSlicmVha319fSExPT09ZSYmKGU9ZCksbnVsbD09dCYmKHQ9dSksby5ibHVyKCksc2V0VGltZW91dChmdW5jdGlvbigpeyJyb3ciIT1jLnNlbGVjdFR5cGU/KGMuc2VsZWN0Tm9uZSgpLGMuc2VsZWN0KHtyZWNpZDplLGNvbHVtbjp0fSkpOmMuZWRpdEZpZWxkKGUsdCxudWxsLGwpfSwxKSxsLnByZXZlbnREZWZhdWx0JiZsLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAxMzpvLmJsdXIoKTt2YXIgYT1sLnNoaWZ0S2V5P2MucHJldlJvdyhiLHUpOmMubmV4dFJvdyhiLHUpO251bGwhPWEmJmEhPWImJnNldFRpbWVvdXQoZnVuY3Rpb24oKXsicm93IiE9Yy5zZWxlY3RUeXBlPyhjLnNlbGVjdE5vbmUoKSxjLnNlbGVjdCh7cmVjaWQ6Yy5yZWNvcmRzW2FdLnJlY2lkLGNvbHVtbjp1fSkpOmMuZWRpdEZpZWxkKGMucmVjb3Jkc1thXS5yZWNpZCx1LG51bGwsbCl9LDEpLCJESVYiPT1vLnRhZ05hbWUudG9VcHBlckNhc2UoKSYmbC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMjc6dmFyIHI9Yy5wYXJzZUZpZWxkKGgscC5maWVsZCk7aC53MnVpJiZoLncydWkuY2hhbmdlcyYmbnVsbCE9aC53MnVpLmNoYW5nZXNbcC5maWVsZF0mJihyPWgudzJ1aS5jaGFuZ2VzW3AuZmllbGRdKSxudWxsIT0kKG8pLmRhdGEoIm9sZF92YWx1ZSIpJiYocj0kKG8pLmRhdGEoIm9sZF92YWx1ZSIpKSwiRElWIj09by50YWdOYW1lLnRvVXBwZXJDYXNlKCk/JChvKS50ZXh0KG51bGwhPXI/cjoiIik6by52YWx1ZT1udWxsIT1yP3I6IiIsby5ibHVyKCksc2V0VGltZW91dChmdW5jdGlvbigpe2Muc2VsZWN0KHtyZWNpZDpkLGNvbHVtbjp1fSl9LDEpfWsuY2FsbChvLGwpfSwxKX0pLm9uKCJrZXl1cCIsZnVuY3Rpb24oZSl7ay5jYWxsKHRoaXMsZSl9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoYy5sYXN0LmluRWRpdE1vZGUpe3ZhciBlPXIuZmluZCgiLncydWktaW5wdXQiKSx0PW51bGwhPSQoZSkudmFsKCk/JChlKS52YWwoKS5sZW5ndGg6MDsiZGl2Ij09aS50eXBlJiYodD0kKGUpLnRleHQoKS5sZW5ndGgpLDA8ZS5sZW5ndGgmJihlLmZvY3VzKCksY2xlYXJUaW1lb3V0KGMubGFzdC5rYmRfdGltZXIpLCJTRUxFQ1QiIT1lWzBdLnRhZ05hbWUudG9VcHBlckNhc2UoKSYmdzJ1dGlscy5zZXRDdXJzb3JQb3NpdGlvbihlWzBdLHQpLChlWzBdLnJlc2l6ZT1rKS5jYWxsKGVbMF0sbnVsbCkpfX0sNTApLGMudHJpZ2dlcigkLmV4dGVuZChuLHtwaGFzZToiYWZ0ZXIiLGlucHV0OnIuZmluZCgiaW5wdXQsIHNlbGVjdCwgZGl2LncydWktaW5wdXQiKX0pKSl9LDUpfX1lbHNlIGNvbnNvbGUubG9nKCdFUlJPUjogaW5wdXQgdHlwZXMgImVudW0iIGFuZCAiZmlsZSIgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gaW5saW5lIGVkaXRpbmcuJyl9fWVsc2UgaWYoMTM9PXQua2V5Q29kZSl7dmFyIGI9dGhpcy5sYXN0Ll9lZGl0LmluZGV4O3U9dGhpcy5sYXN0Ll9lZGl0LmNvbHVtbixkPXRoaXMubGFzdC5fZWRpdC5yZWNpZDt0aGlzLmVkaXRDaGFuZ2Uoe3R5cGU6ImN1c3RvbSIsdmFsdWU6dGhpcy5sYXN0Ll9lZGl0LnZhbHVlfSx0aGlzLmdldChkLCEwKSx1LHQpO3ZhciB4PXQuc2hpZnRLZXk/dGhpcy5wcmV2Um93KGIsdSk6dGhpcy5uZXh0Um93KGIsdSk7bnVsbCE9eCYmeCE9YiYmc2V0VGltZW91dChmdW5jdGlvbigpeyJyb3ciIT1jLnNlbGVjdFR5cGU/KGMuc2VsZWN0Tm9uZSgpLGMuc2VsZWN0KHtyZWNpZDpjLnJlY29yZHNbeF0ucmVjaWQsY29sdW1uOnV9KSk6Yy5lZGl0RmllbGQoYy5yZWNvcmRzW3hdLnJlY2lkLHUsbnVsbCx0KX0sMSksdGhpcy5sYXN0LmluRWRpdE1vZGU9ITF9ZWxzZXt2YXIgXz0kKHRoaXMuYm94KS5maW5kKCJkaXYudzJ1aS1lZGl0LWJveCAudzJ1aS1pbnB1dCIpOzA8Xy5sZW5ndGgmJiJESVYiPT1fWzBdLnRhZ05hbWUmJihfLnRleHQoXy50ZXh0KCkrZSksdzJ1dGlscy5zZXRDdXJzb3JQb3NpdGlvbihfWzBdLF8udGV4dCgpLmxlbmd0aCkpfWZ1bmN0aW9uIGsoZSl7dHJ5e3ZhciB0PSJESVYiPT10aGlzLnRhZ05hbWUudG9VcHBlckNhc2UoKT8kKHRoaXMpLnRleHQoKTp0aGlzLnZhbHVlLGk9JCgiI2dyaWRfIitjLm5hbWUrIl9lZGl0YWJsZSIpLHM9ImZvbnQtZmFtaWx5OiAiKyQodGhpcykuY3NzKCJmb250LWZhbWlseSIpKyI7IGZvbnQtc2l6ZTogIiskKHRoaXMpLmNzcygiZm9udC1zaXplIikrIjsgd2hpdGUtc3BhY2U6IHByZTsiLG49dzJ1dGlscy5nZXRTdHJXaWR0aCh0LHMpO24rMjA+aS53aWR0aCgpJiZpLndpZHRoKG4rMjApfWNhdGNoKGUpe319fSxlZGl0Q2hhbmdlOmZ1bmN0aW9uKGUsdCxpLHMpe3ZhciBuPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPSQobi5ib3gpLmZpbmQoIiNncmlkXyIrbi5uYW1lKyJfZm9jdXMiKTtlLmlzKCI6Zm9jdXMiKXx8ZS5mb2N1cygpfSwxMCk7dmFyIGE9dDwwO3Q9dDwwPy10LTE6dDt2YXIgcj0oYT90aGlzLnN1bW1hcnk6dGhpcy5yZWNvcmRzKVt0XSxsPXRoaXMuY29sdW1uc1tpXSxvPSQoIiNncmlkXyIrdGhpcy5uYW1lKyghMD09PWwuZnJvemVuPyJfZnJlY18iOiJfcmVjXyIpK3cydXRpbHMuZXNjYXBlSWQoci5yZWNpZCkpLGQ9ZS50YWdOYW1lJiYiRElWIj09ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCk/JChlKS50ZXh0KCk6ZS52YWx1ZSx1PXRoaXMucGFyc2VGaWVsZChyLGwuZmllbGQpLGM9JChlKS5kYXRhKCJ3MmZpZWxkIik7YyYmKCJsaXN0Ij09Yy50eXBlJiYoZD0kKGUpLmRhdGEoInNlbGVjdGVkIikpLCEkLmlzRW1wdHlPYmplY3QoZCkmJm51bGwhPWR8fChkPSIiKSwkLmlzUGxhaW5PYmplY3QoZCl8fChkPWMuY2xlYW4oZCkpKSwiY2hlY2tib3giPT1lLnR5cGUmJihyLncydWkmJiExPT09ci53MnVpLmVkaXRhYmxlJiYoZS5jaGVja2VkPSFlLmNoZWNrZWQpLGQ9ZS5jaGVja2VkKTt2YXIgaD17cGhhc2U6ImJlZm9yZSIsdHlwZToiY2hhbmdlIix0YXJnZXQ6dGhpcy5uYW1lLGlucHV0X2lkOmUuaWQscmVjaWQ6ci5yZWNpZCxpbmRleDp0LGNvbHVtbjppLG9yaWdpbmFsRXZlbnQ6cy5vcmlnaW5hbEV2ZW50P3Mub3JpZ2luYWxFdmVudDpzLHZhbHVlX25ldzpkLHZhbHVlX3ByZXZpb3VzOnIudzJ1aSYmci53MnVpLmNoYW5nZXMmJnIudzJ1aS5jaGFuZ2VzLmhhc093blByb3BlcnR5KGwuZmllbGQpP3IudzJ1aS5jaGFuZ2VzW2wuZmllbGRdOnUsdmFsdWVfb3JpZ2luYWw6dX07Zm9yKG51bGwhPSQocy50YXJnZXQpLmRhdGEoIm9sZF92YWx1ZSIpJiYoaC52YWx1ZV9wcmV2aW91cz0kKHMudGFyZ2V0KS5kYXRhKCJvbGRfdmFsdWUiKSk7Oyl7aWYoIm9iamVjdCIhPXR5cGVvZihkPWgudmFsdWVfbmV3KSYmU3RyaW5nKHUpIT1TdHJpbmcoZCl8fCJvYmplY3QiPT10eXBlb2YgZCYmZCYmZC5pZCE9dSYmKCJvYmplY3QiIT10eXBlb2YgdXx8bnVsbD09dXx8ZC5pZCE9dS5pZCkpe2lmKCEwIT09KGg9dGhpcy50cmlnZ2VyKCQuZXh0ZW5kKGgse3R5cGU6ImNoYW5nZSIscGhhc2U6ImJlZm9yZSJ9KSkpLmlzQ2FuY2VsbGVkKXtpZihkIT09aC52YWx1ZV9uZXcpY29udGludWU7ci53MnVpPXIudzJ1aXx8e30sci53MnVpLmNoYW5nZXM9ci53MnVpLmNoYW5nZXN8fHt9LHIudzJ1aS5jaGFuZ2VzW2wuZmllbGRdPWgudmFsdWVfbmV3LHRoaXMudHJpZ2dlcigkLmV4dGVuZChoLHtwaGFzZToiYWZ0ZXIifSkpfX1lbHNlIGlmKCEwIT09KGg9dGhpcy50cmlnZ2VyKCQuZXh0ZW5kKGgse3R5cGU6InJlc3RvcmUiLHBoYXNlOiJiZWZvcmUifSkpKS5pc0NhbmNlbGxlZCl7aWYoZCE9PWgudmFsdWVfbmV3KWNvbnRpbnVlO3IudzJ1aSYmci53MnVpLmNoYW5nZXMmJmRlbGV0ZSByLncydWkuY2hhbmdlc1tsLmZpZWxkXSxyLncydWkmJiQuaXNFbXB0eU9iamVjdChyLncydWkuY2hhbmdlcykmJmRlbGV0ZSByLncydWkuY2hhbmdlcyx0aGlzLnRyaWdnZXIoJC5leHRlbmQoaCx7cGhhc2U6ImFmdGVyIn0pKX1icmVha312YXIgcD0kKG8pLmZpbmQoIltjb2w9IitpKyJdIik7YXx8KHIudzJ1aSYmci53MnVpLmNoYW5nZXMmJm51bGwhPXIudzJ1aS5jaGFuZ2VzW2wuZmllbGRdP3AuYWRkQ2xhc3MoIncydWktY2hhbmdlZCIpOnAucmVtb3ZlQ2xhc3MoIncydWktY2hhbmdlZCIpLHAucmVwbGFjZVdpdGgodGhpcy5nZXRDZWxsSFRNTCh0LGksYSkpKSwkKHRoaXMuYm94KS5maW5kKCJkaXYudzJ1aS1lZGl0LWJveCIpLnJlbW92ZSgpLHRoaXMuc2hvdy50b29sYmFyU2F2ZSYmKDA8dGhpcy5nZXRDaGFuZ2VzKCkubGVuZ3RoP3RoaXMudG9vbGJhci5lbmFibGUoIncydWktc2F2ZSIpOnRoaXMudG9vbGJhci5kaXNhYmxlKCJ3MnVpLXNhdmUiKSksbi5sYXN0LmluRWRpdE1vZGU9ITF9LGRlbGV0ZTpmdW5jdGlvbihlKXsobmV3IERhdGUpLmdldFRpbWUoKTt2YXIgaT10aGlzLHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6dGhpcy5uYW1lLHR5cGU6ImRlbGV0ZSIsZm9yY2U6ZX0pO2lmKGUmJnRoaXMubWVzc2FnZSgpLCEwIT09dC5pc0NhbmNlbGxlZCl7ZT10LmZvcmNlLHNldFRpbWVvdXQoZnVuY3Rpb24oKXskKCkudzJ0YWcoKX0sMjApO3ZhciBzPXRoaXMuZ2V0U2VsZWN0aW9uKCk7aWYoMCE9PXMubGVuZ3RoKWlmKCIiPT10aGlzLm1zZ0RlbGV0ZXx8ZSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5yZW1vdmUpdGhpcy5yZXF1ZXN0KCJkZWxldGUiKTtlbHNlIGlmKCJvYmplY3QiIT10eXBlb2Ygc1swXSl0aGlzLnNlbGVjdE5vbmUoKSx0aGlzLnJlbW92ZS5hcHBseSh0aGlzLHMpO2Vsc2V7Zm9yKHZhciBuPTA7bjxzLmxlbmd0aDtuKyspe3ZhciBhPXRoaXMuY29sdW1uc1tzW25dLmNvbHVtbl0uZmllbGQscj10aGlzLmdldChzW25dLnJlY2lkLCEwKSxsPXRoaXMucmVjb3Jkc1tyXTtudWxsIT1yJiYicmVjaWQiIT1hJiYodGhpcy5yZWNvcmRzW3JdW2FdPSIiLGwudzJ1aSYmbC53MnVpLmNoYW5nZXMmJmRlbGV0ZSBsLncydWkuY2hhbmdlc1thXSl9dGhpcy51cGRhdGUoKX10aGlzLnRyaWdnZXIoJC5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKX1lbHNlIHRoaXMubWVzc2FnZSh7d2lkdGg6MzgwLGhlaWdodDoxNzAsYm9keTonPGRpdiBjbGFzcz0idzJ1aS1jZW50ZXJlZCI+Jyt3MnV0aWxzLmxhbmcoaS5tc2dEZWxldGUpLnJlcGxhY2UoIk5OIixzLmxlbmd0aCkucmVwbGFjZSgicmVjb3JkcyIsMT09cy5sZW5ndGg/InJlY29yZCI6InJlY29yZHMiKSsiPC9kaXY+IixidXR0b25zOncydXRpbHMuc2V0dGluZ3MubWFjQnV0dG9uT3JkZXI/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idzJ1aS1idG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10ubWVzc2FnZSgpXCI+Iit3MnV0aWxzLmxhbmcoIkNhbmNlbCIpKyc8L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IncydWktYnRuIiBvbmNsaWNrPSJ3MnVpW1wnJyt0aGlzLm5hbWUrIiddLmRlbGV0ZSh0cnVlKVwiPiIrdzJ1dGlscy5sYW5nKHRoaXMubXNnRGVsZXRlQnRuKSsiPC9idXR0b24+IjonPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3MnVpLWJ0biIgb25jbGljaz0idzJ1aVtcJycrdGhpcy5uYW1lKyInXS5kZWxldGUodHJ1ZSlcIj4iK3cydXRpbHMubGFuZyh0aGlzLm1zZ0RlbGV0ZUJ0bikrJzwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idzJ1aS1idG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10ubWVzc2FnZSgpXCI+Iit3MnV0aWxzLmxhbmcoIkNhbmNlbCIpKyI8L2J1dHRvbj4iLG9uT3BlbjpmdW5jdGlvbihlKXt2YXIgdD0kKHRoaXMuYm94KS5maW5kKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uIik7dC5vZmYoIi5tZXNzYWdlIikub24oImJsdXIubWVzc2FnZSIsZnVuY3Rpb24oZSl7dC5pbmRleChlLnRhcmdldCkrMT09PXQubGVuZ3RoJiYodC5nZXQoMCkuZm9jdXMoKSxlLnByZXZlbnREZWZhdWx0KCkpfSkub24oImtleWRvd24ubWVzc2FnZSIsZnVuY3Rpb24oZSl7Mjc9PWUua2V5Q29kZSYmaS5tZXNzYWdlKCl9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCh0aGlzLmJveCkuZmluZCgiLncydWktYnRuLmJ0bi1kZWZhdWx0IikuZm9jdXMoKSxjbGVhclRpbWVvdXQoaS5sYXN0LmtiZF90aW1lcil9LmJpbmQodGhpcyksNTApfX0pfX0sY2xpY2s6ZnVuY3Rpb24oZSx0KXt2YXIgaT0obmV3IERhdGUpLmdldFRpbWUoKSxzPW51bGw7aWYoISgxPT10aGlzLmxhc3QuY2FuY2VsQ2xpY2t8fHQmJnQuYWx0S2V5KSlpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYocz1lLmNvbHVtbixlPWUucmVjaWQpLG51bGw9PXQmJih0PXt9KSxpLXBhcnNlSW50KHRoaXMubGFzdC5jbGlja190aW1lKTwzNTAmJnRoaXMubGFzdC5jbGlja19yZWNpZD09ZSYmImNsaWNrIj09dC50eXBlKXRoaXMuZGJsQ2xpY2soZSx0KTtlbHNle3RoaXMubGFzdC5idWJibGVFbCYmKCQodGhpcy5sYXN0LmJ1YmJsZUVsKS53MnRhZygpLHRoaXMubGFzdC5idWJibGVFbD1udWxsKSx0aGlzLmxhc3QuY2xpY2tfdGltZT1pO3ZhciBuPXRoaXMubGFzdC5jbGlja19yZWNpZDtpZih0aGlzLmxhc3QuY2xpY2tfcmVjaWQ9ZSxudWxsPT1zJiZ0LnRhcmdldCkiVEQiIT0obT10LnRhcmdldCkudGFnTmFtZS50b1VwcGVyQ2FzZSgpJiYobT0kKG0pLnBhcmVudHMoInRkIilbMF0pLG51bGwhPSQobSkuYXR0cigiY29sIikmJihzPXBhcnNlSW50KCQobSkuYXR0cigiY29sIikpKTt2YXIgYT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDp0aGlzLm5hbWUsdHlwZToiY2xpY2siLHJlY2lkOmUsY29sdW1uOnMsb3JpZ2luYWxFdmVudDp0fSk7aWYoITAhPT1hLmlzQ2FuY2VsbGVkKXt2YXIgcj10aGlzLGw9dGhpcy5nZXRTZWxlY3Rpb24oKTskKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2NoZWNrX2FsbCIpLnByb3AoImNoZWNrZWQiLCExKTt2YXIgbz10aGlzLmdldChlLCEwKSxkPSh0aGlzLnJlY29yZHNbb10sW10pO2lmKHIubGFzdC5zZWxfaW5kPW8sci5sYXN0LnNlbF9jb2w9cyxyLmxhc3Quc2VsX3JlY2lkPWUsci5sYXN0LnNlbF90eXBlPSJjbGljayIsdC5zaGlmdEtleSYmMDxsLmxlbmd0aCYmci5tdWx0aVNlbGVjdCl7aWYobFswXS5yZWNpZCl7dmFyIHU9dGhpcy5nZXQobFswXS5yZWNpZCwhMCksYz10aGlzLmdldChlLCEwKTtpZihzPmxbMF0uY29sdW1uKXZhciBoPWxbMF0uY29sdW1uLHA9cztlbHNlIGg9cyxwPWxbMF0uY29sdW1uO2Zvcih2YXIgZj1oO2Y8PXA7ZisrKWQucHVzaChmKX1lbHNlIHU9dGhpcy5nZXQobiwhMCksYz10aGlzLmdldChlLCEwKTt2YXIgZz1bXTtpZihjPHUpe3ZhciBtPXU7dT1jLGM9bX1mb3IodmFyIHc9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQsdj11O3Y8PWM7disrKWlmKCEoMDx0aGlzLnNlYXJjaERhdGEubGVuZ3RoKXx8d3x8LTEhPSQuaW5BcnJheSh2LHRoaXMubGFzdC5zZWFyY2hJZHMpKWlmKCJyb3ciPT10aGlzLnNlbGVjdFR5cGUpZy5wdXNoKHRoaXMucmVjb3Jkc1t2XS5yZWNpZCk7ZWxzZSBmb3IodmFyIHk9MDt5PGQubGVuZ3RoO3krKylnLnB1c2goe3JlY2lkOnRoaXMucmVjb3Jkc1t2XS5yZWNpZCxjb2x1bW46ZFt5XX0pO3RoaXMuc2VsZWN0LmFwcGx5KHRoaXMsZyl9ZWxzZXt2YXIgYj10aGlzLmxhc3Quc2VsZWN0aW9uLHg9LTEhPWIuaW5kZXhlcy5pbmRleE9mKG8pLF89ITE7aWYoJCh0LnRhcmdldCkucGFyZW50cygidGQiKS5oYXNDbGFzcygidzJ1aS1jb2wtc2VsZWN0IikmJihfPSEwKSwodC5jdHJsS2V5fHx0LnNoaWZ0S2V5fHx0Lm1ldGFLZXl8fF8pJiZ0aGlzLm11bHRpU2VsZWN0fHx0aGlzLnNob3dTZWxlY3RDb2x1bW4pe3ZhciBrPSQodC50YXJnZXQpLnBhcmVudHMoInRyIikuZmluZCgiLncydWktZ3JpZC1zZWxlY3QtY2hlY2siKS5pcygiOmNoZWNrZWQiKTsicm93Ij09dGhpcy5zZWxlY3RUeXBlfHwtMSE9JC5pbkFycmF5KHMsYi5jb2x1bW5zW29dKXx8a3x8KHg9ITEpLCEwPT09eD90aGlzLnVuc2VsZWN0KHtyZWNpZDplLGNvbHVtbjpzfSk6dGhpcy5zZWxlY3Qoe3JlY2lkOmUsY29sdW1uOnN9KX1lbHNlInJvdyIhPXRoaXMuc2VsZWN0VHlwZSYmLTE9PSQuaW5BcnJheShzLGIuY29sdW1uc1tvXSkmJih4PSExKSwzMDA8bC5sZW5ndGg/dGhpcy5zZWxlY3ROb25lKCk6dGhpcy51bnNlbGVjdC5hcHBseSh0aGlzLGwpLCEwPT09eCYmMT09bC5sZW5ndGg/dGhpcy51bnNlbGVjdCh7cmVjaWQ6ZSxjb2x1bW46c30pOnRoaXMuc2VsZWN0KHtyZWNpZDplLGNvbHVtbjpzfSl9dGhpcy5zdGF0dXMoKSxyLmluaXRSZXNpemUoKSx0aGlzLnRyaWdnZXIoJC5leHRlbmQoYSx7cGhhc2U6ImFmdGVyIn0pKX19fSxjb2x1bW5DbGljazpmdW5jdGlvbihlLHQpe2lmKCEwIT09KGk9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2x1bW5DbGljayIsdGFyZ2V0OnRoaXMubmFtZSxmaWVsZDplLG9yaWdpbmFsRXZlbnQ6dH0pKS5pc0NhbmNlbGxlZCl7aWYoInJvdyI9PXRoaXMuc2VsZWN0VHlwZSl7KG49dGhpcy5nZXRDb2x1bW4oZSkpJiZuLnNvcnRhYmxlJiZ0aGlzLnNvcnQoZSxudWxsLCEoIXR8fCF0LmN0cmxLZXkmJiF0Lm1ldGFLZXkpKSwibGluZS1udW1iZXIiPT1pLmZpZWxkJiYodGhpcy5nZXRTZWxlY3Rpb24oKS5sZW5ndGg+PXRoaXMucmVjb3Jkcy5sZW5ndGg/dGhpcy5zZWxlY3ROb25lKCk6dGhpcy5zZWxlY3RBbGwoKSl9ZWxzZXtpZih0LmFsdEtleSkobj10aGlzLmdldENvbHVtbihlKSkmJm4uc29ydGFibGUmJnRoaXMuc29ydChlLG51bGwsISghdHx8IXQuY3RybEtleSYmIXQubWV0YUtleSkpO2lmKCJsaW5lLW51bWJlciI9PWkuZmllbGQpdGhpcy5nZXRTZWxlY3Rpb24oKS5sZW5ndGg+PXRoaXMucmVjb3Jkcy5sZW5ndGg/dGhpcy5zZWxlY3ROb25lKCk6dGhpcy5zZWxlY3RBbGwoKTtlbHNle3Quc2hpZnRLZXl8fHQubWV0YUtleXx8dC5jdHJsS2V5fHx0aGlzLnNlbGVjdE5vbmUoKTt2YXIgaSxzPXRoaXMuZ2V0U2VsZWN0aW9uKCksbj10aGlzLmdldENvbHVtbihpLmZpZWxkLCEwKSxhPVtdLHI9W107aWYoMCE9cy5sZW5ndGgmJnQuc2hpZnRLZXkpe3ZhciBsPW4sbz1zWzBdLmNvbHVtbjtvPGwmJihsPXNbMF0uY29sdW1uLG89bik7Zm9yKHZhciBkPWw7ZDw9bztkKyspci5wdXNoKGQpfWVsc2Ugci5wdXNoKG4pO2lmKCEwIT09KGk9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2x1bW5TZWxlY3QiLHRhcmdldDp0aGlzLm5hbWUsY29sdW1uczpyfSkpLmlzQ2FuY2VsbGVkKXtmb3IoZD0wO2Q8dGhpcy5yZWNvcmRzLmxlbmd0aDtkKyspYS5wdXNoKHtyZWNpZDp0aGlzLnJlY29yZHNbZF0ucmVjaWQsY29sdW1uOnJ9KTt0aGlzLnNlbGVjdC5hcHBseSh0aGlzLGEpfXRoaXMudHJpZ2dlcigkLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpfX10aGlzLnRyaWdnZXIoJC5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKX19LGNvbHVtbkRibENsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2x1bW5EYmxDbGljayIsdGFyZ2V0OnRoaXMubmFtZSxmaWVsZDplLG9yaWdpbmFsRXZlbnQ6dH0pOyEwIT09aS5pc0NhbmNlbGxlZCYmdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciJ9KSl9LGZvY3VzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImZvY3VzIix0YXJnZXQ6dGhpcy5uYW1lLG9yaWdpbmFsRXZlbnQ6ZX0pO2lmKCEwPT09aS5pc0NhbmNlbGxlZClyZXR1cm4hMTt0aGlzLmhhc0ZvY3VzPSEwLCQodGhpcy5ib3gpLnJlbW92ZUNsYXNzKCJ3MnVpLWluYWN0aXZlIikuZmluZCgiLncydWktaW5hY3RpdmUiKS5yZW1vdmVDbGFzcygidzJ1aS1pbmFjdGl2ZSIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT0kKHQuYm94KS5maW5kKCIjZ3JpZF8iK3QubmFtZSsiX2ZvY3VzIik7ZS5pcygiOmZvY3VzIil8fGUuZm9jdXMoKX0sMTApLHRoaXMudHJpZ2dlcigkLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpfSxibHVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiYmx1ciIsdGFyZ2V0OnRoaXMubmFtZSxvcmlnaW5hbEV2ZW50OmV9KTtpZighMD09PXQuaXNDYW5jZWxsZWQpcmV0dXJuITE7dGhpcy5oYXNGb2N1cz0hMSwkKHRoaXMuYm94KS5hZGRDbGFzcygidzJ1aS1pbmFjdGl2ZSIpLmZpbmQoIi53MnVpLXNlbGVjdGVkIikuYWRkQ2xhc3MoIncydWktaW5hY3RpdmUiKSwkKHRoaXMuYm94KS5maW5kKCIudzJ1aS1zZWxlY3Rpb24iKS5hZGRDbGFzcygidzJ1aS1pbmFjdGl2ZSIpLHRoaXMudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpfSxrZXlkb3duOmZ1bmN0aW9uKGkpe3ZhciBzPXRoaXMsZT0ib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldDtpZighMD09PXMua2V5Ym9hcmQpe3ZhciB0PXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToia2V5ZG93biIsdGFyZ2V0OnMubmFtZSxvcmlnaW5hbEV2ZW50Oml9KTtpZighMCE9PXQuaXNDYW5jZWxsZWQpaWYoMDwkKHRoaXMuYm94KS5maW5kKCI+LncydWktbWVzc2FnZSIpLmxlbmd0aCkyNz09aS5rZXlDb2RlJiZ0aGlzLm1lc3NhZ2UoKTtlbHNle3ZhciBuPSExLGE9JCgiI2dyaWRfIitzLm5hbWUrIl9yZWNvcmRzIikscj1zLmdldFNlbGVjdGlvbigpOzA9PT1yLmxlbmd0aCYmKG49ITApO3ZhciBsPXJbMF18fG51bGwsbz1bXSxkPXJbci5sZW5ndGgtMV07aWYoIm9iamVjdCI9PXR5cGVvZiBsJiZudWxsIT1sKXtsPXJbMF0ucmVjaWQsbz1bXTtmb3IodmFyIHU9MDtyW3VdJiZyW3VdLnJlY2lkPT1sOylvLnB1c2goclt1XS5jb2x1bW4pLHUrKztkPXJbci5sZW5ndGgtMV0ucmVjaWR9dmFyIGM9cy5nZXQobCwhMCksaD1zLmdldChkLCEwKSxwPShzLmdldChsKSwkKCIjZ3JpZF8iK3MubmFtZSsiX3JlY18iKyhudWxsIT1jP3cydXRpbHMuZXNjYXBlSWQocy5yZWNvcmRzW2NdLnJlY2lkKToibm9uZSIpKSksZj0hMSxnPWkua2V5Q29kZSxtPWkuc2hpZnRLZXk7c3dpdGNoKGcpe2Nhc2UgODpjYXNlIDQ2OnMuZGVsZXRlKCksZj0hMCxpLnN0b3BQcm9wYWdhdGlvbigpO2JyZWFrO2Nhc2UgMjc6cy5zZWxlY3ROb25lKCksZj0hMDticmVhaztjYXNlIDY1OmlmKCFpLm1ldGFLZXkmJiFpLmN0cmxLZXkpYnJlYWs7cy5zZWxlY3RBbGwoKSxmPSEwO2JyZWFrO2Nhc2UgMTM6aWYoInJvdyI9PXRoaXMuc2VsZWN0VHlwZSYmITA9PT1zLnNob3cuZXhwYW5kQ29sdW1uKXtpZihwLmxlbmd0aDw9MClicmVhaztzLnRvZ2dsZShsLGkpLGY9ITB9ZWxzZXtmb3IodmFyIHc9MDt3PHRoaXMuY29sdW1ucy5sZW5ndGg7dysrKXtpZih0aGlzLmdldENlbGxFZGl0YWJsZShjLHcpKXtvLnB1c2gocGFyc2VJbnQodykpO2JyZWFrfX0icm93Ij09dGhpcy5zZWxlY3RUeXBlJiZ0aGlzLmxhc3QuX2VkaXQmJnRoaXMubGFzdC5fZWRpdC5jb2x1bW4mJihvPVt0aGlzLmxhc3QuX2VkaXQuY29sdW1uXSksMDxvLmxlbmd0aCYmKHMuZWRpdEZpZWxkKGwsb1swXSxudWxsLGkpLGY9ITApfWJyZWFrO2Nhc2UgMzc6aWYobil7VCgpO2JyZWFrfWlmKCJyb3ciPT10aGlzLnNlbGVjdFR5cGUpe2lmKHAubGVuZ3RoPD0wKWJyZWFrOyEoeT10aGlzLnJlY29yZHNbY10udzJ1aXx8e30pfHxudWxsPT15LnBhcmVudF9yZWNpZHx8QXJyYXkuaXNBcnJheSh5LmNoaWxkcmVuKSYmMCE9PXkuY2hpbGRyZW4ubGVuZ3RoJiZ5LmV4cGFuZGVkP3MuY29sbGFwc2UobCxpKToocy51bnNlbGVjdChsKSxzLmNvbGxhcHNlKHkucGFyZW50X3JlY2lkLGkpLHMuc2VsZWN0KHkucGFyZW50X3JlY2lkKSl9ZWxzZXt2YXIgdj1zLnByZXZDZWxsKGMsb1swXSk7aWYobXx8bnVsbCE9dnx8KHRoaXMuc2VsZWN0Tm9uZSgpLHY9MCksbnVsbCE9dilpZihtJiZzLm11bHRpU2VsZWN0KXtpZihTKCkpcmV0dXJuO3ZhciB5PVtdLGI9W10seD1bXTtpZigwPT09by5pbmRleE9mKHRoaXMubGFzdC5zZWxfY29sKSYmMTxvLmxlbmd0aCl7Zm9yKHZhciBfPTA7XzxyLmxlbmd0aDtfKyspLTE9PXkuaW5kZXhPZihyW19dLnJlY2lkKSYmeS5wdXNoKHJbX10ucmVjaWQpLHgucHVzaCh7cmVjaWQ6cltfXS5yZWNpZCxjb2x1bW46b1tvLmxlbmd0aC0xXX0pO3MudW5zZWxlY3QuYXBwbHkocyx4KSxzLnNjcm9sbEludG9WaWV3KGMsb1tvLmxlbmd0aC0xXSwhMCl9ZWxzZXtmb3IoXz0wO188ci5sZW5ndGg7XysrKS0xPT15LmluZGV4T2YocltfXS5yZWNpZCkmJnkucHVzaChyW19dLnJlY2lkKSxiLnB1c2goe3JlY2lkOnJbX10ucmVjaWQsY29sdW1uOnZ9KTtzLnNlbGVjdC5hcHBseShzLGIpLHMuc2Nyb2xsSW50b1ZpZXcoYyx2LCEwKX19ZWxzZSBpLm1ldGFLZXk9ITEscy5jbGljayh7cmVjaWQ6bCxjb2x1bW46dn0saSkscy5zY3JvbGxJbnRvVmlldyhjLHYsITApO2Vsc2UgaWYoIW0paWYoMTxyLmxlbmd0aClzLnNlbGVjdE5vbmUoKTtlbHNlIGZvcih2YXIgaz0xO2s8ci5sZW5ndGg7aysrKXMudW5zZWxlY3QocltrXSl9Zj0hMDticmVhaztjYXNlIDM5OmlmKG4pe1QoKTticmVha31pZigicm93Ij09dGhpcy5zZWxlY3RUeXBlKXtpZihwLmxlbmd0aDw9MClicmVhaztzLmV4cGFuZChsLGkpfWVsc2V7dmFyIEM9cy5uZXh0Q2VsbChjLG9bby5sZW5ndGgtMV0pO2lmKG18fG51bGwhPUN8fCh0aGlzLnNlbGVjdE5vbmUoKSxDPXRoaXMuY29sdW1ucy5sZW5ndGgtMSksbnVsbCE9QylpZihtJiYzOT09ZyYmcy5tdWx0aVNlbGVjdCl7aWYoUygpKXJldHVybjt5PVtdLGI9W10seD1bXTtpZihvLmluZGV4T2YodGhpcy5sYXN0LnNlbF9jb2wpPT1vLmxlbmd0aC0xJiYxPG8ubGVuZ3RoKXtmb3IoXz0wO188ci5sZW5ndGg7XysrKS0xPT15LmluZGV4T2YocltfXS5yZWNpZCkmJnkucHVzaChyW19dLnJlY2lkKSx4LnB1c2goe3JlY2lkOnJbX10ucmVjaWQsY29sdW1uOm9bMF19KTtzLnVuc2VsZWN0LmFwcGx5KHMseCkscy5zY3JvbGxJbnRvVmlldyhjLG9bMF0sITApfWVsc2V7Zm9yKF89MDtfPHIubGVuZ3RoO18rKyktMT09eS5pbmRleE9mKHJbX10ucmVjaWQpJiZ5LnB1c2gocltfXS5yZWNpZCksYi5wdXNoKHtyZWNpZDpyW19dLnJlY2lkLGNvbHVtbjpDfSk7cy5zZWxlY3QuYXBwbHkocyxiKSxzLnNjcm9sbEludG9WaWV3KGMsQywhMCl9fWVsc2UgaS5tZXRhS2V5PSExLHMuY2xpY2soe3JlY2lkOmwsY29sdW1uOkN9LGkpLHMuc2Nyb2xsSW50b1ZpZXcoYyxDLCEwKTtlbHNlIGlmKCFtKWlmKDE8ci5sZW5ndGgpcy5zZWxlY3ROb25lKCk7ZWxzZSBmb3Ioaz0wO2s8ci5sZW5ndGgtMTtrKyspcy51bnNlbGVjdChyW2tdKX1mPSEwO2JyZWFrO2Nhc2UgMzg6aWYobiYmVCgpLHAubGVuZ3RoPD0wKWJyZWFrO3Y9cy5wcmV2Um93KGMsb1swXSk7aWYobXx8bnVsbCE9dnx8KHY9MD09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aHx8ZT8wOnRoaXMubGFzdC5zZWFyY2hJZHNbMF0pLG51bGwhPXYpe2lmKG0mJnMubXVsdGlTZWxlY3Qpe2lmKFMoKSlyZXR1cm47aWYoInJvdyI9PXMuc2VsZWN0VHlwZSlzLmxhc3Quc2VsX2luZD52JiZzLmxhc3Quc2VsX2luZCE9aD9zLnVuc2VsZWN0KHMucmVjb3Jkc1toXS5yZWNpZCk6cy5zZWxlY3Qocy5yZWNvcmRzW3ZdLnJlY2lkKTtlbHNlIGlmKHMubGFzdC5zZWxfaW5kPnYmJnMubGFzdC5zZWxfaW5kIT1oKXt2PWg7Zm9yKHk9W10sdz0wO3c8by5sZW5ndGg7dysrKXkucHVzaCh7cmVjaWQ6cy5yZWNvcmRzW3ZdLnJlY2lkLGNvbHVtbjpvW3ddfSk7cy51bnNlbGVjdC5hcHBseShzLHkpfWVsc2V7Zm9yKHk9W10sdz0wO3c8by5sZW5ndGg7dysrKXkucHVzaCh7cmVjaWQ6cy5yZWNvcmRzW3ZdLnJlY2lkLGNvbHVtbjpvW3ddfSk7cy5zZWxlY3QuYXBwbHkocyx5KX19ZWxzZSAzMDA8ci5sZW5ndGg/dGhpcy5zZWxlY3ROb25lKCk6dGhpcy51bnNlbGVjdC5hcHBseSh0aGlzLHIpLHMuY2xpY2soe3JlY2lkOnMucmVjb3Jkc1t2XS5yZWNpZCxjb2x1bW46b1swXX0saSk7cy5zY3JvbGxJbnRvVmlldyh2KSxpLnByZXZlbnREZWZhdWx0JiZpLnByZXZlbnREZWZhdWx0KCl9ZWxzZSBpZighbSlpZigxPHIubGVuZ3RoKXMuc2VsZWN0Tm9uZSgpO2Vsc2UgZm9yKGs9MTtrPHIubGVuZ3RoO2srKylzLnVuc2VsZWN0KHJba10pO2JyZWFrO2Nhc2UgNDA6aWYobiYmVCgpLHAubGVuZ3RoPD0wKWJyZWFrO0M9cy5uZXh0Um93KGgsb1swXSk7aWYobXx8bnVsbCE9Q3x8KEM9MD09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aHx8ZT90aGlzLnJlY29yZHMubGVuZ3RoLTE6dGhpcy5sYXN0LnNlYXJjaElkc1t0aGlzLmxhc3Quc2VhcmNoSWRzLmxlbmd0aC0xXSksbnVsbCE9Qyl7aWYobSYmcy5tdWx0aVNlbGVjdCl7aWYoUygpKXJldHVybjtpZigicm93Ij09cy5zZWxlY3RUeXBlKXRoaXMubGFzdC5zZWxfaW5kPEMmJnRoaXMubGFzdC5zZWxfaW5kIT1jP3MudW5zZWxlY3Qocy5yZWNvcmRzW2NdLnJlY2lkKTpzLnNlbGVjdChzLnJlY29yZHNbQ10ucmVjaWQpO2Vsc2UgaWYodGhpcy5sYXN0LnNlbF9pbmQ8QyYmdGhpcy5sYXN0LnNlbF9pbmQhPWMpe0M9Yztmb3IoeT1bXSx3PTA7dzxvLmxlbmd0aDt3KyspeS5wdXNoKHtyZWNpZDpzLnJlY29yZHNbQ10ucmVjaWQsY29sdW1uOm9bd119KTtzLnVuc2VsZWN0LmFwcGx5KHMseSl9ZWxzZXtmb3IoeT1bXSx3PTA7dzxvLmxlbmd0aDt3KyspeS5wdXNoKHtyZWNpZDpzLnJlY29yZHNbQ10ucmVjaWQsY29sdW1uOm9bd119KTtzLnNlbGVjdC5hcHBseShzLHkpfX1lbHNlIDMwMDxyLmxlbmd0aD90aGlzLnNlbGVjdE5vbmUoKTp0aGlzLnVuc2VsZWN0LmFwcGx5KHRoaXMscikscy5jbGljayh7cmVjaWQ6cy5yZWNvcmRzW0NdLnJlY2lkLGNvbHVtbjpvWzBdfSxpKTtzLnNjcm9sbEludG9WaWV3KEMpLGY9ITB9ZWxzZSBpZighbSlpZigxPHIubGVuZ3RoKXMuc2VsZWN0Tm9uZSgpO2Vsc2UgZm9yKGs9MDtrPHIubGVuZ3RoLTE7aysrKXMudW5zZWxlY3QocltrXSk7YnJlYWs7Y2FzZSAxNzpjYXNlIDkxOmlmKG4pYnJlYWs7cy5sYXN0LmlzU2FmYXJpJiYocy5sYXN0LmNvcHlfZXZlbnQ9cy5jb3B5KCExLGkpLCQoIiNncmlkXyIrcy5uYW1lKyJfZm9jdXMiKS52YWwocy5sYXN0LmNvcHlfZXZlbnQudGV4dCkuc2VsZWN0KCkpO2JyZWFrO2Nhc2UgNjc6KGkubWV0YUtleXx8aS5jdHJsS2V5KSYmKHMubGFzdC5pc1NhZmFyaXx8KHMubGFzdC5jb3B5X2V2ZW50PXMuY29weSghMSxpKSwkKCIjZ3JpZF8iK3MubmFtZSsiX2ZvY3VzIikudmFsKHMubGFzdC5jb3B5X2V2ZW50LnRleHQpLnNlbGVjdCgpKSxzLmNvcHkocy5sYXN0LmNvcHlfZXZlbnQsaSkpO2JyZWFrO2Nhc2UgODg6aWYobilicmVhazsoaS5jdHJsS2V5fHxpLm1ldGFLZXkpJiYocy5sYXN0LmlzU2FmYXJpfHwocy5sYXN0LmNvcHlfZXZlbnQ9cy5jb3B5KCExLGkpLCQoIiNncmlkXyIrcy5uYW1lKyJfZm9jdXMiKS52YWwocy5sYXN0LmNvcHlfZXZlbnQudGV4dCkuc2VsZWN0KCkpLHMuY29weShzLmxhc3QuY29weV9ldmVudCxpKSl9Zm9yKHk9WzMyLDE4NywxODksMTkyLDIxOSwyMjAsMjIxLDE4NiwyMjIsMTg4LDE5MCwxOTFdLF89NDg7Xzw9MTExO18rKyl5LnB1c2goXyk7LTE9PXkuaW5kZXhPZihnKXx8aS5jdHJsS2V5fHxpLm1ldGFLZXl8fGZ8fCgwPT09by5sZW5ndGgmJm8ucHVzaCgwKSxmPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT0kKCIjZ3JpZF8iK3MubmFtZSsiX2ZvY3VzIiksdD1lLnZhbCgpO2UudmFsKCIiKSxzLmVkaXRGaWVsZChsLG9bMF0sdCxpKX0sMSkpLGYmJmkucHJldmVudERlZmF1bHQmJmkucHJldmVudERlZmF1bHQoKSxzLnRyaWdnZXIoJC5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKX19ZnVuY3Rpb24gVCgpe3ZhciBlPU1hdGguZmxvb3IoYVswXS5zY3JvbGxUb3Avcy5yZWNvcmRIZWlnaHQpKzE7KCFzLnJlY29yZHNbZV18fGU8MikmJihlPTApLHMuc2VsZWN0KHtyZWNpZDpzLnJlY29yZHNbZV0ucmVjaWQsY29sdW1uOjB9KX1mdW5jdGlvbiBTKCl7aWYoImNsaWNrIiE9cy5sYXN0LnNlbF90eXBlKXJldHVybiExO2lmKCJyb3ciPT1zLnNlbGVjdFR5cGUpcmV0dXJuIHMubGFzdC5zZWxfdHlwZT0ia2V5IiwxPHIubGVuZ3RoJiYoci5zcGxpY2Uoci5pbmRleE9mKHMucmVjb3Jkc1tzLmxhc3Quc2VsX2luZF0ucmVjaWQpLDEpLHMudW5zZWxlY3QuYXBwbHkocyxyKSwhMCk7aWYocy5sYXN0LnNlbF90eXBlPSJrZXkiLDE8ci5sZW5ndGgpe2Zvcih2YXIgZT0wO2U8ci5sZW5ndGg7ZSsrKWlmKHJbZV0ucmVjaWQ9PXMubGFzdC5zZWxfcmVjaWQmJnJbZV0uY29sdW1uPT1zLmxhc3Quc2VsX2NvbCl7ci5zcGxpY2UoZSwxKTticmVha31yZXR1cm4gcy51bnNlbGVjdC5hcHBseShzLHIpLCEwfXJldHVybiExfX0sc2Nyb2xsSW50b1ZpZXc6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMucmVjb3Jkcy5sZW5ndGg7aWYoMD09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aHx8dGhpcy51cmx8fChzPXRoaXMubGFzdC5zZWFyY2hJZHMubGVuZ3RoKSwwIT09cyl7aWYobnVsbD09ZSl7dmFyIG49dGhpcy5nZXRTZWxlY3Rpb24oKTtpZigwPT09bi5sZW5ndGgpcmV0dXJuOyQuaXNQbGFpbk9iamVjdChuWzBdKT8oZT1uWzBdLmluZGV4LHQ9blswXS5jb2x1bW4pOmU9dGhpcy5nZXQoblswXSwhMCl9dmFyIGE9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNvcmRzIikscj10aGlzLmxhc3Quc2VhcmNoSWRzLmxlbmd0aDtpZigwPHImJihlPXRoaXMubGFzdC5zZWFyY2hJZHMuaW5kZXhPZihlKSksYS5oZWlnaHQoKTx0aGlzLnJlY29yZEhlaWdodCooMDxyP3I6cykmJjA8YS5sZW5ndGgpe3ZhciBsPU1hdGguZmxvb3IoYVswXS5zY3JvbGxUb3AvdGhpcy5yZWNvcmRIZWlnaHQpLG89bCtNYXRoLmZsb29yKGEuaGVpZ2h0KCkvdGhpcy5yZWNvcmRIZWlnaHQpO2U9PWwmJighMD09PWk/YS5wcm9wKHtzY3JvbGxUb3A6YS5zY3JvbGxUb3AoKS1hLmhlaWdodCgpLzEuM30pOihhLnN0b3AoKSxhLmFuaW1hdGUoe3Njcm9sbFRvcDphLnNjcm9sbFRvcCgpLWEuaGVpZ2h0KCkvMS4zfSwyNTAsImxpbmVhciIpKSksZT09byYmKCEwPT09aT9hLnByb3Aoe3Njcm9sbFRvcDphLnNjcm9sbFRvcCgpK2EuaGVpZ2h0KCkvMS4zfSk6KGEuc3RvcCgpLGEuYW5pbWF0ZSh7c2Nyb2xsVG9wOmEuc2Nyb2xsVG9wKCkrYS5oZWlnaHQoKS8xLjN9LDI1MCwibGluZWFyIikpKSwoZTxsfHxvPGUpJiYoITA9PT1pP2EucHJvcCh7c2Nyb2xsVG9wOihlLTEpKnRoaXMucmVjb3JkSGVpZ2h0fSk6KGEuc3RvcCgpLGEuYW5pbWF0ZSh7c2Nyb2xsVG9wOihlLTEpKnRoaXMucmVjb3JkSGVpZ2h0fSwyNTAsImxpbmVhciIpKSl9aWYobnVsbCE9dCl7Zm9yKHZhciBkPTAsdT0wLGM9dzJ1dGlscy5zY3JvbGxCYXJTaXplKCksaD0wO2g8PXQ7aCsrKXt2YXIgcD10aGlzLmNvbHVtbnNbaF07cC5mcm96ZW58fHAuaGlkZGVufHwoZD11LHUrPXBhcnNlSW50KHAuc2l6ZUNhbGN1bGF0ZWQpKX1hLndpZHRoKCk8dS1hLnNjcm9sbExlZnQoKT8hMD09PWk/YS5wcm9wKHtzY3JvbGxMZWZ0OmQtY30pOmEuYW5pbWF0ZSh7c2Nyb2xsTGVmdDpkLWN9LDI1MCwibGluZWFyIik6ZDxhLnNjcm9sbExlZnQoKSYmKCEwPT09aT9hLnByb3Aoe3Njcm9sbExlZnQ6dS1hLndpZHRoKCkrMipjfSk6YS5hbmltYXRlKHtzY3JvbGxMZWZ0OnUtYS53aWR0aCgpKzIqY30sMjUwLCJsaW5lYXIiKSl9fX0sZGJsQ2xpY2s6ZnVuY3Rpb24oZSx0KXt2YXIgaT1udWxsO2lmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihpPWUuY29sdW1uLGU9ZS5yZWNpZCksbnVsbD09dCYmKHQ9e30pLG51bGw9PWkmJnQudGFyZ2V0KXt2YXIgcz10LnRhcmdldDsiVEQiIT1zLnRhZ05hbWUudG9VcHBlckNhc2UoKSYmKHM9JChzKS5wYXJlbnRzKCJ0ZCIpWzBdKSxpPXBhcnNlSW50KCQocykuYXR0cigiY29sIikpfXZhciBuPXRoaXMuZ2V0KGUsITApLGE9dGhpcy5yZWNvcmRzW25dLHI9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6dGhpcy5uYW1lLHR5cGU6ImRibENsaWNrIixyZWNpZDplLGNvbHVtbjppLG9yaWdpbmFsRXZlbnQ6dH0pOyEwIT09ci5pc0NhbmNlbGxlZCYmKHRoaXMuc2VsZWN0Tm9uZSgpLHRoaXMuZ2V0Q2VsbEVkaXRhYmxlKG4saSk/dGhpcy5lZGl0RmllbGQoZSxpLG51bGwsdCk6KHRoaXMuc2VsZWN0KHtyZWNpZDplLGNvbHVtbjppfSksKHRoaXMuc2hvdy5leHBhbmRDb2x1bW58fGEudzJ1aSYmQXJyYXkuaXNBcnJheShhLncydWkuY2hpbGRyZW4pKSYmdGhpcy50b2dnbGUoZSkpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChyLHtwaGFzZToiYWZ0ZXIifSkpKX0sY29udGV4dE1lbnU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXM7aWYoInRleHQiIT1zLmxhc3QudXNlclNlbGVjdCl7bnVsbD09aSYmKGk9e29mZnNldFg6MCxvZmZzZXRZOjAsdGFyZ2V0OiQoIiNncmlkXyIrcy5uYW1lKyJfcmVjXyIrdClbMF19KSxudWxsPT1pLm9mZnNldFgmJihpLm9mZnNldFg9aS5sYXllclgtaS50YXJnZXQub2Zmc2V0TGVmdCxpLm9mZnNldFk9aS5sYXllclktaS50YXJnZXQub2Zmc2V0VG9wKSx3MnV0aWxzLmlzRmxvYXQodCkmJih0PXBhcnNlRmxvYXQodCkpO3ZhciBuPXRoaXMuZ2V0U2VsZWN0aW9uKCk7aWYoInJvdyI9PXRoaXMuc2VsZWN0VHlwZSktMT09bi5pbmRleE9mKHQpJiZzLmNsaWNrKHQpO2Vsc2V7dmFyIGE9JChpLnRhcmdldCk7IlREIiE9YVswXS50YWdOYW1lLnRvVXBwZXJDYXNlKCkmJihhPSQoaS50YXJnZXQpLnBhcmVudHMoInRkIikpO3ZhciByPSExO2U9YS5hdHRyKCJjb2wiKTtmb3IodmFyIGw9MDtsPG4ubGVuZ3RoO2wrKyluW2xdLnJlY2lkIT10JiZuW2xdLmNvbHVtbiE9ZXx8KHI9ITApO3J8fG51bGw9PXR8fHMuY2xpY2soe3JlY2lkOnQsY29sdW1uOmV9KSxyfHxudWxsPT1lfHxzLmNvbHVtbkNsaWNrKHRoaXMuY29sdW1uc1tlXS5maWVsZCxpKX12YXIgbz1zLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImNvbnRleHRNZW51Iix0YXJnZXQ6cy5uYW1lLG9yaWdpbmFsRXZlbnQ6aSxyZWNpZDp0LGNvbHVtbjplfSk7ITAhPT1vLmlzQ2FuY2VsbGVkJiYoMDxzLm1lbnUubGVuZ3RoJiYkKHMuYm94KS5maW5kKGkudGFyZ2V0KS53Mm1lbnUocy5tZW51LHtvcmlnaW5hbEV2ZW50OmksY29udGV4dE1lbnU6ITAsb25TZWxlY3Q6ZnVuY3Rpb24oZSl7cy5tZW51Q2xpY2sodCxwYXJzZUludChlLmluZGV4KSxlLm9yaWdpbmFsRXZlbnQpfX0pLGkucHJldmVudERlZmF1bHQmJmkucHJldmVudERlZmF1bHQoKSxzLnRyaWdnZXIoJC5leHRlbmQobyx7cGhhc2U6ImFmdGVyIn0pKSl9fSxtZW51Q2xpY2s6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToibWVudUNsaWNrIix0YXJnZXQ6dGhpcy5uYW1lLG9yaWdpbmFsRXZlbnQ6aSxyZWNpZDplLG1lbnVJbmRleDp0LG1lbnVJdGVtOnRoaXMubWVudVt0XX0pOyEwIT09cy5pc0NhbmNlbGxlZCYmdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSl9LHRvZ2dsZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldChlKTtyZXR1cm4gdC53MnVpPXQudzJ1aXx8e30sITA9PT10LncydWkuZXhwYW5kZWQ/dGhpcy5jb2xsYXBzZShlKTp0aGlzLmV4cGFuZChlKX0sZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0KGUsITApLGk9dGhpcy5yZWNvcmRzW3RdO2kudzJ1aT1pLncydWl8fHt9O3ZhciBzPXcydXRpbHMuZXNjYXBlSWQoZSksbj1pLncydWkuY2hpbGRyZW47aWYoQXJyYXkuaXNBcnJheShuKSl7aWYoITA9PT1pLncydWkuZXhwYW5kZWR8fDA9PT1uLmxlbmd0aClyZXR1cm4hMTtpZighMD09PShhPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZXhwYW5kIix0YXJnZXQ6dGhpcy5uYW1lLHJlY2lkOmV9KSkuaXNDYW5jZWxsZWQpcmV0dXJuITE7aS53MnVpLmV4cGFuZGVkPSEwLG4uZm9yRWFjaChmdW5jdGlvbihlKXtlLncydWk9ZS53MnVpfHx7fSxlLncydWkucGFyZW50X3JlY2lkPWkucmVjaWQsbnVsbD09ZS53MnVpLmNoaWxkcmVuJiYoZS53MnVpLmNoaWxkcmVuPVtdKX0pLHRoaXMucmVjb3Jkcy5zcGxpY2UuYXBwbHkodGhpcy5yZWNvcmRzLFt0KzEsMF0uY29uY2F0KG4pKSx0aGlzLnRvdGFsKz1uLmxlbmd0aCwoIm9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQpfHwodGhpcy5sb2NhbFNvcnQoITAsITApLDA8dGhpcy5zZWFyY2hEYXRhLmxlbmd0aCYmdGhpcy5sb2NhbFNlYXJjaCghMCkpLHRoaXMucmVmcmVzaCgpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChhLHtwaGFzZToiYWZ0ZXIifSkpfWVsc2V7aWYoMDwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3MrIl9leHBhbmRlZF9yb3ciKS5sZW5ndGh8fCEwIT09dGhpcy5zaG93LmV4cGFuZENvbHVtbilyZXR1cm4hMTtpZigibm9uZSI9PWkudzJ1aS5leHBhbmRlZClyZXR1cm4hMTt2YXIgYTtpZigkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3MpLmFmdGVyKCc8dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrIl9yZWNfIitlKydfZXhwYW5kZWRfcm93IiBjbGFzcz0idzJ1aS1leHBhbmRlZC1yb3ciPiAgICA8dGQgY29sc3Bhbj0iMTAwIiBjbGFzcz0idzJ1aS1leHBhbmRlZDIiPiAgICAgICAgPGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX3JlY18iK2UrJ19leHBhbmRlZCI+PC9kaXY+ICAgIDwvdGQ+ICAgIDx0ZCBjbGFzcz0idzJ1aS1ncmlkLWRhdGEtbGFzdCI+PC90ZD48L3RyPicpLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY18iK3MpLmFmdGVyKCc8dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrIl9mcmVjXyIrZSsnX2V4cGFuZGVkX3JvdyIgY2xhc3M9IncydWktZXhwYW5kZWQtcm93Ij4nKyh0aGlzLnNob3cubGluZU51bWJlcnM/Jzx0ZCBjbGFzcz0idzJ1aS1jb2wtbnVtYmVyIj48L3RkPic6IiIpKycgICAgPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YSB3MnVpLWV4cGFuZGVkMSIgY29sc3Bhbj0iMTAwIj4gICAgICAgPGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2ZyZWNfIitlKydfZXhwYW5kZWQiPjwvZGl2PiAgIDwvdGQ+PC90cj4nKSwhMD09PShhPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZXhwYW5kIix0YXJnZXQ6dGhpcy5uYW1lLHJlY2lkOmUsYm94X2lkOiJncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrZSsiX2V4cGFuZGVkIixmYm94X2lkOiJncmlkXyIrdGhpcy5uYW1lKyJfZnJlY18iK3MrIl9leHBhbmRlZCJ9KSkuaXNDYW5jZWxsZWQpcmV0dXJuICQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrcysiX2V4cGFuZGVkX3JvdyIpLnJlbW92ZSgpLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY18iK3MrIl9leHBhbmRlZF9yb3ciKS5yZW1vdmUoKSwhMTt2YXIgcj0kKHRoaXMuYm94KS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK2UrIl9leHBhbmRlZCIpLGw9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXyIrZSsiX2V4cGFuZGVkIiksbz1yLmZpbmQoIj4gZGl2OmZpcnN0LWNoaWxkIikuaGVpZ2h0KCk7ci5oZWlnaHQoKTxvJiZyLmNzcyh7aGVpZ2h0Om8rInB4In0pLGwuaGVpZ2h0KCk8byYmbC5jc3Moe2hlaWdodDpvKyJweCJ9KSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3MpLmF0dHIoImV4cGFuZGVkIiwieWVzIikuYWRkQ2xhc3MoIncydWktZXhwYW5kZWQiKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfIitzKS5hdHRyKCJleHBhbmRlZCIsInllcyIpLmFkZENsYXNzKCJ3MnVpLWV4cGFuZGVkIiksJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jZWxsXyIrdGhpcy5nZXQoZSwhMCkrIl9leHBhbmQgZGl2IikuaHRtbCgiLSIpLGkudzJ1aS5leHBhbmRlZD0hMCx0aGlzLnRyaWdnZXIoJC5leHRlbmQoYSx7cGhhc2U6ImFmdGVyIn0pKSx0aGlzLnJlc2l6ZVJlY29yZHMoKX1yZXR1cm4hMH0sY29sbGFwc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMuZ2V0KGUsITApLHM9dGhpcy5yZWNvcmRzW2ldO3MudzJ1aT1zLncydWl8fHt9O3ZhciBuPXcydXRpbHMuZXNjYXBlSWQoZSksYT1zLncydWkuY2hpbGRyZW47aWYoQXJyYXkuaXNBcnJheShhKSl7aWYoITAhPT1zLncydWkuZXhwYW5kZWQpcmV0dXJuITE7aWYoITA9PT0odT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImNvbGxhcHNlIix0YXJnZXQ6dGhpcy5uYW1lLHJlY2lkOmV9KSkuaXNDYW5jZWxsZWQpcmV0dXJuITE7IWZ1bmN0aW9uIGUodCl7dC53MnVpLmV4cGFuZGVkPSExO2Zvcih2YXIgaT0wO2k8dC53MnVpLmNoaWxkcmVuLmxlbmd0aDtpKyspe3ZhciBzPXQudzJ1aS5jaGlsZHJlbltpXTtzLncydWkuZXhwYW5kZWQmJmUocyl9fShzKTtmb3IodmFyIHI9W10sbD1zO251bGwhPWw7bD10aGlzLmdldChsLncydWkucGFyZW50X3JlY2lkKSlyLnB1c2gobC53MnVpLnBhcmVudF9yZWNpZCk7Zm9yKHZhciBvPWkrMSxkPW87ISh0aGlzLnJlY29yZHMubGVuZ3RoPD1kKzF8fG51bGw9PXRoaXMucmVjb3Jkc1tkKzFdLncydWl8fDA8PXIuaW5kZXhPZih0aGlzLnJlY29yZHNbZCsxXS53MnVpLnBhcmVudF9yZWNpZCkpOylkKys7dGhpcy5yZWNvcmRzLnNwbGljZShvLGQtbysxKSx0aGlzLnRvdGFsLT1kLW8rMSwoIm9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQpfHwwPHRoaXMuc2VhcmNoRGF0YS5sZW5ndGgmJnRoaXMubG9jYWxTZWFyY2goITApLHRoaXMucmVmcmVzaCgpLHQudHJpZ2dlcigkLmV4dGVuZCh1LHtwaGFzZToiYWZ0ZXIifSkpfWVsc2V7aWYoMD09PSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrbisiX2V4cGFuZGVkX3JvdyIpLmxlbmd0aHx8ITAhPT10aGlzLnNob3cuZXhwYW5kQ29sdW1uKXJldHVybiExO3ZhciB1O2lmKCEwPT09KHU9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2xsYXBzZSIsdGFyZ2V0OnRoaXMubmFtZSxyZWNpZDplLGJveF9pZDoiZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK24rIl9leHBhbmRlZCIsZmJveF9pZDoiZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfIituKyJfZXhwYW5kZWQifSkpLmlzQ2FuY2VsbGVkKXJldHVybiExOyQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrbikucmVtb3ZlQXR0cigiZXhwYW5kZWQiKS5yZW1vdmVDbGFzcygidzJ1aS1leHBhbmRlZCIpLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY18iK24pLnJlbW92ZUF0dHIoImV4cGFuZGVkIikucmVtb3ZlQ2xhc3MoIncydWktZXhwYW5kZWQiKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2NlbGxfIit0aGlzLmdldChlLCEwKSsiX2V4cGFuZCBkaXYiKS5odG1sKCIrIiksJCgiI2dyaWRfIit0Lm5hbWUrIl9yZWNfIituKyJfZXhwYW5kZWQiKS5jc3MoImhlaWdodCIsIjBweCIpLCQoIiNncmlkXyIrdC5uYW1lKyJfZnJlY18iK24rIl9leHBhbmRlZCIpLmNzcygiaGVpZ2h0IiwiMHB4Iiksc2V0VGltZW91dChmdW5jdGlvbigpeyQoIiNncmlkXyIrdC5uYW1lKyJfcmVjXyIrbisiX2V4cGFuZGVkX3JvdyIpLnJlbW92ZSgpLCQoIiNncmlkXyIrdC5uYW1lKyJfZnJlY18iK24rIl9leHBhbmRlZF9yb3ciKS5yZW1vdmUoKSxzLncydWkuZXhwYW5kZWQ9ITEsdC50cmlnZ2VyKCQuZXh0ZW5kKHUse3BoYXNlOiJhZnRlciJ9KSksdC5yZXNpemVSZWNvcmRzKCl9LDMwMCl9cmV0dXJuITB9LHNvcnQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToic29ydCIsdGFyZ2V0OnRoaXMubmFtZSxmaWVsZDplLGRpcmVjdGlvbjp0LG11bHRpRmllbGQ6aX0pO2lmKCEwIT09cy5pc0NhbmNlbGxlZCl7aWYobnVsbCE9ZSl7Zm9yKHZhciBuPXRoaXMuc29ydERhdGEubGVuZ3RoLGE9MDthPHRoaXMuc29ydERhdGEubGVuZ3RoO2ErKylpZih0aGlzLnNvcnREYXRhW2FdLmZpZWxkPT1lKXtuPWE7YnJlYWt9aWYobnVsbD09dClpZihudWxsPT10aGlzLnNvcnREYXRhW25dKXQ9ImFzYyI7ZWxzZSBzd2l0Y2gobnVsbD09dGhpcy5zb3J0RGF0YVtuXS5kaXJlY3Rpb24mJih0aGlzLnNvcnREYXRhW25dLmRpcmVjdGlvbj0iIiksdGhpcy5zb3J0RGF0YVtuXS5kaXJlY3Rpb24udG9Mb3dlckNhc2UoKSl7Y2FzZSJhc2MiOnQ9ImRlc2MiO2JyZWFrO2Nhc2UiZGVzYyI6ZGVmYXVsdDp0PSJhc2MifSExPT09dGhpcy5tdWx0aVNvcnQmJih0aGlzLnNvcnREYXRhPVtdLG49MCksMSE9aSYmKHRoaXMuc29ydERhdGE9W10sbj0wKSxudWxsPT10aGlzLnNvcnREYXRhW25dJiYodGhpcy5zb3J0RGF0YVtuXT17fSksdGhpcy5zb3J0RGF0YVtuXS5maWVsZD1lLHRoaXMuc29ydERhdGFbbl0uZGlyZWN0aW9uPXR9ZWxzZSB0aGlzLnNvcnREYXRhPVtdOygib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldCk/KHRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIiLGRpcmVjdGlvbjp0fSkpLHRoaXMubGFzdC54aHJfb2Zmc2V0PTAsdGhpcy5yZWxvYWQoKSk6KHRoaXMubG9jYWxTb3J0KCEwLCEwKSwwPHRoaXMuc2VhcmNoRGF0YS5sZW5ndGgmJnRoaXMubG9jYWxTZWFyY2goITApLHRoaXMubGFzdC5zY3JvbGxUb3A9MCwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY29yZHMiKS5wcm9wKCJzY3JvbGxUb3AiLDApLHRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIiLGRpcmVjdGlvbjp0fSkpLHRoaXMucmVmcmVzaCgpKX19LGNvcHk6ZnVuY3Rpb24oZSx0KXtpZigkLmlzUGxhaW5PYmplY3QoZSkpcmV0dXJuIHRoaXMudHJpZ2dlcigkLmV4dGVuZChlLHtwaGFzZToiYWZ0ZXIifSkpLGUudGV4dDt2YXIgaT10aGlzLmdldFNlbGVjdGlvbigpO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4iIjt2YXIgcyxuPSIiO2lmKCJvYmplY3QiPT10eXBlb2YgaVswXSl7Zm9yKHZhciBhPWlbMF0uY29sdW1uLHI9aVswXS5jb2x1bW4sbD1bXSxvPTA7bzxpLmxlbmd0aDtvKyspaVtvXS5jb2x1bW48YSYmKGE9aVtvXS5jb2x1bW4pLGlbb10uY29sdW1uPnImJihyPWlbb10uY29sdW1uKSwtMT09bC5pbmRleE9mKGlbb10uaW5kZXgpJiZsLnB1c2goaVtvXS5pbmRleCk7bC5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pO2Zvcih2YXIgZD0wO2Q8bC5sZW5ndGg7ZCsrKXtmb3IodmFyIHU9bFtkXSxjPWE7Yzw9cjtjKyspeyEwIT09KHA9dGhpcy5jb2x1bW5zW2NdKS5oaWRkZW4mJihuKz10aGlzLmdldENlbGxDb3B5KHUsYykrIlx0Iil9bj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpLG4rPSJcbiJ9fWVsc2V7Zm9yKGM9MDtjPHRoaXMuY29sdW1ucy5sZW5ndGg7YysrKXtpZighMCE9PShwPXRoaXMuY29sdW1uc1tjXSkuaGlkZGVuKXt2YXIgaD1wLnRleHQ/cC50ZXh0OnAuZmllbGQ7cC50ZXh0JiZwLnRleHQubGVuZ3RoPDMmJnAudG9vbHRpcCYmKGg9cC50b29sdGlwKSxuKz0nIicrdzJ1dGlscy5zdHJpcFRhZ3MoaCkrJyJcdCd9fW49bi5zdWJzdHIoMCxuLmxlbmd0aC0xKSxuKz0iXG4iO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspe2Zvcih1PXRoaXMuZ2V0KGlbb10sITApLGM9MDtjPHRoaXMuY29sdW1ucy5sZW5ndGg7YysrKXt2YXIgcDshMCE9PShwPXRoaXMuY29sdW1uc1tjXSkuaGlkZGVuJiYobis9JyInK3RoaXMuZ2V0Q2VsbENvcHkodSxjKSsnIlx0Jyl9bj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpLG4rPSJcbiJ9fXJldHVybiBuPW4uc3Vic3RyKDAsbi5sZW5ndGgtMSksbnVsbD09ZT8hMD09PShzPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiY29weSIsdGFyZ2V0OnRoaXMubmFtZSx0ZXh0Om4sY3V0Ojg4PT10LmtleUNvZGUsb3JpZ2luYWxFdmVudDp0fSkpLmlzQ2FuY2VsbGVkPyIiOihuPXMudGV4dCx0aGlzLnRyaWdnZXIoJC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKSxuKTohMT09PWU/ITA9PT0ocz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImNvcHkiLHRhcmdldDp0aGlzLm5hbWUsdGV4dDpuLGN1dDo4OD09dC5rZXlDb2RlLG9yaWdpbmFsRXZlbnQ6dH0pKS5pc0NhbmNlbGxlZD8iIjoobj1zLnRleHQscyk6dm9pZCAwfSxnZXRDZWxsQ29weTpmdW5jdGlvbihlLHQpe3JldHVybiB3MnV0aWxzLnN0cmlwVGFncyh0aGlzLmdldENlbGxIVE1MKGUsdCkpfSxwYXN0ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFNlbGVjdGlvbigpLGk9dGhpcy5nZXQodFswXS5yZWNpZCwhMCkscz10WzBdLmNvbHVtbixuPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicGFzdGUiLHRhcmdldDp0aGlzLm5hbWUsdGV4dDplLGluZGV4OmksY29sdW1uOnN9KTtpZighMCE9PW4uaXNDYW5jZWxsZWQpe2lmKGU9bi50ZXh0LCJyb3ciPT10aGlzLnNlbGVjdFR5cGV8fDA9PT10Lmxlbmd0aClyZXR1cm4gY29uc29sZS5sb2coIkVSUk9SOiBZb3UgY2FuIHBhc3RlIG9ubHkgaWYgZ3JpZC5zZWxlY3RUeXBlID0gJ2NlbGwnIGFuZCB3aGVuIGF0IGxlYXN0IG9uZSBjZWxsIHNlbGVjdGVkLiIpLHZvaWQgdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSk7Zm9yKHZhciBhPVtdLHI9KGU9ZS5zcGxpdCgiXG4iKSwwKTtyPGUubGVuZ3RoO3IrKyl7dmFyIGw9ZVtyXS5zcGxpdCgiXHQiKSxvPTAsZD10aGlzLnJlY29yZHNbaV0sdT1bXTtpZihudWxsIT1kKXtmb3IodmFyIGM9MDtjPGwubGVuZ3RoO2MrKyl0aGlzLmNvbHVtbnNbcytvXSYmKHRoaXMuc2V0Q2VsbFBhc3RlKGQscytvLGxbY10pLHUucHVzaChzK28pLG8rKyk7Zm9yKHZhciBoPTA7aDx1Lmxlbmd0aDtoKyspYS5wdXNoKHtyZWNpZDpkLnJlY2lkLGNvbHVtbjp1W2hdfSk7aSsrfX10aGlzLnNlbGVjdE5vbmUoKSx0aGlzLnNlbGVjdC5hcHBseSh0aGlzLGEpLHRoaXMucmVmcmVzaCgpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChuLHtwaGFzZToiYWZ0ZXIifSkpfX0sc2V0Q2VsbFBhc3RlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzLmNvbHVtbnNbdF0uZmllbGQ7ZS53MnVpPWUudzJ1aXx8e30sZS53MnVpLmNoYW5nZXM9ZS53MnVpLmNoYW5nZXN8fHt9LGUudzJ1aS5jaGFuZ2VzW3NdPWl9LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD0obmV3IERhdGUpLmdldFRpbWUoKTtpZih0aGlzLmJveCYmJCh0aGlzLmJveCkuYXR0cigibmFtZSIpPT10aGlzLm5hbWUpeyQodGhpcy5ib3gpLmZpbmQoIj4gZGl2LncydWktZ3JpZC1ib3giKS5jc3MoIndpZHRoIiwkKHRoaXMuYm94KS53aWR0aCgpKS5jc3MoImhlaWdodCIsJCh0aGlzLmJveCkuaGVpZ2h0KCkpO3ZhciBpPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVzaXplIix0YXJnZXQ6dGhpcy5uYW1lfSk7aWYoITAhPT1pLmlzQ2FuY2VsbGVkKXJldHVybiBlLnJlc2l6ZUJveGVzKCksZS5yZXNpemVSZWNvcmRzKCksZS50b29sYmFyJiZlLnRvb2xiYXIucmVzaXplJiZlLnRvb2xiYXIucmVzaXplKCksdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciJ9KSksKG5ldyBEYXRlKS5nZXRUaW1lKCktdH19LHVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKTtpZihudWxsPT10aGlzLmJveClyZXR1cm4gMDtpZihudWxsPT1lKXtmb3IodmFyIGk9dGhpcy5sYXN0LnJhbmdlX3N0YXJ0LTE7aTw9dGhpcy5sYXN0LnJhbmdlX2VuZC0xO2krKylpZighKGk8MCkpeyhyPXRoaXMucmVjb3Jkc1tpXXx8e30pLncydWl8fChyLncydWk9e30pO2Zvcih2YXIgcz0wO3M8dGhpcy5jb2x1bW5zLmxlbmd0aDtzKyspe3ZhciBuPSQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChyLnJlY2lkKSk7KGw9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIraSsiXyIrcykpLnJlcGxhY2VXaXRoKHRoaXMuZ2V0Q2VsbEhUTUwoaSxzLCExKSksbD0kKHRoaXMuYm94KS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2RhdGFfIitpKyJfIitzKSxudWxsPT1yLncydWkuc3R5bGV8fCQuaXNFbXB0eU9iamVjdChyLncydWkuc3R5bGUpP2wuYXR0cigic3R5bGUiLCIiKTooInN0cmluZyI9PXR5cGVvZiByLncydWkuc3R5bGUmJm4uYXR0cigic3R5bGUiLHIudzJ1aS5zdHlsZSksJC5pc1BsYWluT2JqZWN0KHIudzJ1aS5zdHlsZSkmJiJzdHJpbmciPT10eXBlb2Ygci53MnVpLnN0eWxlW3NdJiZsLmF0dHIoInN0eWxlIixyLncydWkuc3R5bGVbc10pKSxudWxsPT1yLncydWkuY2xhc3N8fCQuaXNFbXB0eU9iamVjdChyLncydWkuY2xhc3MpfHwoInN0cmluZyI9PXR5cGVvZiByLncydWkuY2xhc3MmJm4uYWRkQ2xhc3Moci53MnVpLmNsYXNzKSwkLmlzUGxhaW5PYmplY3Qoci53MnVpLmNsYXNzKSYmInN0cmluZyI9PXR5cGVvZiByLncydWkuY2xhc3Nbc10mJmwuYWRkQ2xhc3Moci53MnVpLmNsYXNzW3NdKSl9fX1lbHNlIGZvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXtpPWVbYV0uaW5kZXgscz1lW2FdLmNvbHVtbjtpZighKGk8MCkpaWYobnVsbCE9aSYmbnVsbCE9cyl7dmFyIHI9dGhpcy5yZWNvcmRzW2ldfHx7fSxsPShuPSQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChyLnJlY2lkKSksJCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIraSsiXyIrcykpO3IudzJ1aXx8KHIudzJ1aT17fSksbC5yZXBsYWNlV2l0aCh0aGlzLmdldENlbGxIVE1MKGkscywhMSkpLGw9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIraSsiXyIrcyksbnVsbD09ci53MnVpLnN0eWxlfHwkLmlzRW1wdHlPYmplY3Qoci53MnVpLnN0eWxlKT9sLmF0dHIoInN0eWxlIiwiIik6KCJzdHJpbmciPT10eXBlb2Ygci53MnVpLnN0eWxlJiZuLmF0dHIoInN0eWxlIixyLncydWkuc3R5bGUpLCQuaXNQbGFpbk9iamVjdChyLncydWkuc3R5bGUpJiYic3RyaW5nIj09dHlwZW9mIHIudzJ1aS5zdHlsZVtzXSYmbC5hdHRyKCJzdHlsZSIsci53MnVpLnN0eWxlW3NdKSksbnVsbD09ci53MnVpLmNsYXNzfHwkLmlzRW1wdHlPYmplY3Qoci53MnVpLmNsYXNzKXx8KCJzdHJpbmciPT10eXBlb2Ygci53MnVpLmNsYXNzJiZuLmFkZENsYXNzKHIudzJ1aS5jbGFzcyksJC5pc1BsYWluT2JqZWN0KHIudzJ1aS5jbGFzcykmJiJzdHJpbmciPT10eXBlb2Ygci53MnVpLmNsYXNzW3NdJiZsLmFkZENsYXNzKHIudzJ1aS5jbGFzc1tzXSkpfWVsc2UgY29uc29sZS5sb2coIkVSUk9SOiBXcm9uZyBhcmd1bWVudCBmb3IgZ3JpZC51cGRhdGUoY2VsbHMpLCBjZWxscyBzaG91bGQgYmUgW3sgaW5kZXg6IFgsIGNvbHVtbjogWSB9LCAuLi5dIil9cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCktdH0scmVmcmVzaENlbGw6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldChlLCEwKSxzPSF0aGlzLnJlY29yZHNbaV18fHRoaXMucmVjb3Jkc1tpXS5yZWNpZCE9ZSxuPXRoaXMuZ2V0Q29sdW1uKHQsITApLGE9cz90aGlzLnN1bW1hcnlbaV06dGhpcy5yZWNvcmRzW2ldLHI9dGhpcy5jb2x1bW5zW25dLGw9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIraSsiXyIrbik7aWYobnVsbD09YSlyZXR1cm4hMTtsLnJlcGxhY2VXaXRoKHRoaXMuZ2V0Q2VsbEhUTUwoaSxuLHMpKSxsPSQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZGF0YV8iK2krIl8iK24pLGEudzJ1aSYmYS53MnVpLmNoYW5nZXMmJm51bGwhPWEudzJ1aS5jaGFuZ2VzW3IuZmllbGRdP2wuYWRkQ2xhc3MoIncydWktY2hhbmdlZCIpOmwucmVtb3ZlQ2xhc3MoIncydWktY2hhbmdlZCIpLGEudzJ1aSYmbnVsbCE9YS53MnVpLnN0eWxlJiYhJC5pc0VtcHR5T2JqZWN0KGEudzJ1aS5zdHlsZSk/KCJzdHJpbmciPT10eXBlb2YgYS53MnVpLnN0eWxlJiYkKHRoaXMuYm94KS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY18iK3cydXRpbHMuZXNjYXBlSWQoYS5yZWNpZCkpLmF0dHIoInN0eWxlIixhLncydWkuc3R5bGUpLCQuaXNQbGFpbk9iamVjdChhLncydWkuc3R5bGUpJiYic3RyaW5nIj09dHlwZW9mIGEudzJ1aS5zdHlsZVtuXSYmbC5hdHRyKCJzdHlsZSIsYS53MnVpLnN0eWxlW25dKSk6bC5hdHRyKCJzdHlsZSIsIiIpLGEudzJ1aSYmbnVsbCE9YS53MnVpLmNsYXNzJiYhJC5pc0VtcHR5T2JqZWN0KGEudzJ1aS5jbGFzcykmJigic3RyaW5nIj09dHlwZW9mIGEudzJ1aS5jbGFzcyYmJCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfIit3MnV0aWxzLmVzY2FwZUlkKGEucmVjaWQpKS5hZGRDbGFzcyhhLncydWkuY2xhc3MpLCQuaXNQbGFpbk9iamVjdChhLncydWkuY2xhc3MpJiYic3RyaW5nIj09dHlwZW9mIGEudzJ1aS5jbGFzc1tuXSYmbC5hZGRDbGFzcyhhLncydWkuY2xhc3Nbbl0pKX0scmVmcmVzaFJvdzpmdW5jdGlvbihlLHQpe3ZhciBpPSQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY18iK3cydXRpbHMuZXNjYXBlSWQoZSkpLHM9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfIit3MnV0aWxzLmVzY2FwZUlkKGUpKTtpZigwPGkubGVuZ3RoKXtudWxsPT10JiYodD10aGlzLmdldChlLCEwKSk7dmFyIG49aS5hdHRyKCJsaW5lIiksYT0hdGhpcy5yZWNvcmRzW3RdfHx0aGlzLnJlY29yZHNbdF0ucmVjaWQhPWUscj0ib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldDtpZigwPHRoaXMuc2VhcmNoRGF0YS5sZW5ndGgmJiFyKWZvcih2YXIgbD0wO2w8dGhpcy5sYXN0LnNlYXJjaElkcy5sZW5ndGg7bCsrKXRoaXMubGFzdC5zZWFyY2hJZHNbbF09PXQmJih0PWwpO3ZhciBvPXRoaXMuZ2V0UmVjb3JkSFRNTCh0LG4sYSk7JChpKS5yZXBsYWNlV2l0aChvWzBdKSwkKHMpLnJlcGxhY2VXaXRoKG9bMV0pO3ZhciBkPXRoaXMucmVjb3Jkc1t0XS53MnVpP3RoaXMucmVjb3Jkc1t0XS53MnVpLnN0eWxlOiIiO2lmKCJzdHJpbmciPT10eXBlb2YgZCl7aT0kKHRoaXMuYm94KS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfIit3MnV0aWxzLmVzY2FwZUlkKGUpKSxzPSQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXyIrdzJ1dGlscy5lc2NhcGVJZChlKSk7aS5hdHRyKCJjdXN0b21fc3R5bGUiLGQpLHMuYXR0cigiY3VzdG9tX3N0eWxlIixkKSxpLmhhc0NsYXNzKCJ3MnVpLXNlbGVjdGVkIikmJihkPWQucmVwbGFjZSgiYmFja2dyb3VuZC1jb2xvciIsIm5vbmUiKSksaVswXS5zdHlsZS5jc3NUZXh0PSJoZWlnaHQ6ICIrdGhpcy5yZWNvcmRIZWlnaHQrInB4OyIrZCxzWzBdLnN0eWxlLmNzc1RleHQ9ImhlaWdodDogIit0aGlzLnJlY29yZEhlaWdodCsicHg7IitkfWEmJnRoaXMucmVzaXplKCl9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxlPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHQ9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQ7aWYodGhpcy50b3RhbDw9MCYmIXQmJjA9PT10aGlzLnNlYXJjaERhdGEubGVuZ3RoJiYodGhpcy50b3RhbD10aGlzLnJlY29yZHMubGVuZ3RoKSx0aGlzLnRvb2xiYXIuZGlzYWJsZSgidzJ1aS1lZGl0IiwidzJ1aS1kZWxldGUiKSx0aGlzLmJveCl7dmFyIGk9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6dGhpcy5uYW1lLHR5cGU6InJlZnJlc2gifSk7aWYoITAhPT1pLmlzQ2FuY2VsbGVkKXtpZih0aGlzLnNob3cuaGVhZGVyPyQoIiNncmlkXyIrdGhpcy5uYW1lKyJfaGVhZGVyIikuaHRtbCh0aGlzLmhlYWRlcisiJiMxNjA7Iikuc2hvdygpOiQoIiNncmlkXyIrdGhpcy5uYW1lKyJfaGVhZGVyIikuaGlkZSgpLHRoaXMuc2hvdy50b29sYmFyKXtpZih0aGlzLnRvb2xiYXImJnRoaXMudG9vbGJhci5nZXQoIncydWktY29sdW1uLW9uLW9mZiIpJiZ0aGlzLnRvb2xiYXIuZ2V0KCJ3MnVpLWNvbHVtbi1vbi1vZmYiKS5jaGVja2VkKTtlbHNlIGlmKCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfdG9vbGJhciIpLnNob3coKSwib2JqZWN0Ij09dHlwZW9mIHRoaXMudG9vbGJhcilmb3IodmFyIHM9dGhpcy50b29sYmFyLml0ZW1zLG49MDtuPHMubGVuZ3RoO24rKykidzJ1aS1zZWFyY2giIT1zW25dLmlkJiYiYnJlYWsiIT1zW25dLnR5cGUmJnRoaXMudG9vbGJhci5yZWZyZXNoKHNbbl0uaWQpfWVsc2UgJCgiI2dyaWRfIit0aGlzLm5hbWUrIl90b29sYmFyIikuaGlkZSgpO3RoaXMuc2VhcmNoQ2xvc2UoKTt2YXIgcj0kKCIjZ3JpZF8iK2EubmFtZSsiX3NlYXJjaF9hbGwiKTshdGhpcy5tdWx0aVNlYXJjaCYmImFsbCI9PXRoaXMubGFzdC5maWVsZCYmMDx0aGlzLnNlYXJjaGVzLmxlbmd0aCYmKHRoaXMubGFzdC5maWVsZD10aGlzLnNlYXJjaGVzWzBdLmZpZWxkLHRoaXMubGFzdC5sYWJlbD10aGlzLnNlYXJjaGVzWzBdLmxhYmVsKTtmb3IodmFyIGw9MDtsPHRoaXMuc2VhcmNoZXMubGVuZ3RoO2wrKyl0aGlzLnNlYXJjaGVzW2xdLmZpZWxkPT10aGlzLmxhc3QuZmllbGQmJih0aGlzLmxhc3QubGFiZWw9dGhpcy5zZWFyY2hlc1tsXS5sYWJlbCk7aWYodGhpcy5sYXN0Lm11bHRpPyhyLmF0dHIoInBsYWNlaG9sZGVyIiwiWyIrdzJ1dGlscy5sYW5nKCJNdWx0aXBsZSBGaWVsZHMiKSsiXSIpLHIudzJmaWVsZCgiY2xlYXIiKSk6ci5hdHRyKCJwbGFjZWhvbGRlciIsdzJ1dGlscy5sYW5nKHRoaXMubGFzdC5sYWJlbCkpLHIudmFsKCkhPXRoaXMubGFzdC5zZWFyY2gpe3ZhciBvPXRoaXMubGFzdC5zZWFyY2g7KHM9ci5kYXRhKCJ3MmZpZWxkIikpJiYobz1zLmZvcm1hdChvKSksci52YWwobyl9YS5yZWZyZXNoQm9keSgpLHRoaXMuc2hvdy5mb290ZXI/JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mb290ZXIiKS5odG1sKHRoaXMuZ2V0Rm9vdGVySFRNTCgpKS5zaG93KCk6JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mb290ZXIiKS5oaWRlKCk7dmFyIGQ9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9zZWFyY2hDbGVhciIpO2QuaGlkZSgpLHRoaXMuc2VhcmNoRGF0YS5zb21lKGZ1bmN0aW9uKGUpe3ZhciB0PWEuZ2V0U2VhcmNoKGUuZmllbGQpO2lmKGEubGFzdC5tdWx0aXx8dCYmIXQuaGlkZGVuJiYtMT09WyJsaXN0IiwiZW51bSJdLmluZGV4T2YodC50eXBlKSlyZXR1cm4gZC5zaG93KCksITB9KTt2YXIgdT10aGlzLmxhc3Quc2VsZWN0aW9uLGM9MDx0aGlzLnJlY29yZHMubGVuZ3RoJiZ1LmluZGV4ZXMubGVuZ3RoPT10aGlzLnJlY29yZHMubGVuZ3RoLGg9MDx1LmluZGV4ZXMubGVuZ3RoJiYwIT09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aCYmdS5pbmRleGVzLmxlbmd0aD09dGhpcy5sYXN0LnNlYXJjaElkcy5sZW5ndGg7Y3x8aD8kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2NoZWNrX2FsbCIpLnByb3AoImNoZWNrZWQiLCEwKTokKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2NoZWNrX2FsbCIpLnByb3AoImNoZWNrZWQiLCExKSx0aGlzLnN0YXR1cygpO2Zvcih2YXIgcD1hLmZpbmQoeyJ3MnVpLmV4cGFuZGVkIjohMH0sITApLGY9MDtmPHAubGVuZ3RoO2YrKyl7KHM9YS5yZWNvcmRzW3BbZl1dLncydWkpJiYhQXJyYXkuaXNBcnJheShzLmNoaWxkcmVuKSYmKHMuZXhwYW5kZWQ9ITEpfXJldHVybiBhLm1hcmtTZWFyY2gmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YS5zZWFyY2hEYXRhLmxlbmd0aDt0Kyspe3ZhciBpPWEuc2VhcmNoRGF0YVt0XSxzPWEuZ2V0U2VhcmNoKGkuZmllbGQpO2lmKHMmJiFzLmhpZGRlbil7dmFyIG49YS5nZXRDb2x1bW4oaS5maWVsZCwhMCk7ZS5wdXNoKHtmaWVsZDppLmZpZWxkLHNlYXJjaDppLnZhbHVlLGNvbDpufSl9fTA8ZS5sZW5ndGgmJmUuZm9yRWFjaChmdW5jdGlvbihlKXskKGEuYm94KS5maW5kKCd0ZFtjb2w9IicrZS5jb2wrJyJdJykubm90KCIudzJ1aS1oZWFkIikudzJtYXJrZXIoZS5zZWFyY2gpfSl9LDUwKSx0aGlzLnNob3cudG9vbGJhclNhdmUmJigwPHRoaXMuZ2V0Q2hhbmdlcygpLmxlbmd0aD90aGlzLnRvb2xiYXIuZW5hYmxlKCJ3MnVpLXNhdmUiKTp0aGlzLnRvb2xiYXIuZGlzYWJsZSgidzJ1aS1zYXZlIikpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpLGEucmVzaXplKCksYS5hZGRSYW5nZSgic2VsZWN0aW9uIiksc2V0VGltZW91dChmdW5jdGlvbigpe2EucmVzaXplKCksYS5zY3JvbGwoKX0sMSksYS5yZW9yZGVyQ29sdW1ucyYmIWEubGFzdC5jb2x1bW5EcmFnP2EubGFzdC5jb2x1bW5EcmFnPWEuaW5pdENvbHVtbkRyYWcoKTohYS5yZW9yZGVyQ29sdW1ucyYmYS5sYXN0LmNvbHVtbkRyYWcmJmEubGFzdC5jb2x1bW5EcmFnLnJlbW92ZSgpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLWV9fX0scmVmcmVzaEJvZHk6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLGU9dGhpcy5maW5kKHsidzJ1aS5zdW1tYXJ5IjohMH0sITApO2lmKDA8ZS5sZW5ndGgpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuc3VtbWFyeS5wdXNoKHRoaXMucmVjb3Jkc1tlW3RdXSk7Zm9yKHQ9ZS5sZW5ndGgtMTswPD10O3QtLSl0aGlzLnJlY29yZHMuc3BsaWNlKGVbdF0sMSl9dGhpcy5zY3JvbGwoKTt2YXIgaT10aGlzLmdldFJlY29yZHNIVE1MKCkscz10aGlzLmdldENvbHVtbnNIVE1MKCksbj0nPGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX2ZyZWNvcmRzIiBjbGFzcz0idzJ1aS1ncmlkLWZyZWNvcmRzIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogJysodzJ1dGlscy5zY3JvbGxCYXJTaXplKCktMSkrJ3B4OyI+JytpWzBdKyc8L2Rpdj48ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfcmVjb3JkcyIgY2xhc3M9IncydWktZ3JpZC1yZWNvcmRzIiBvbnNjcm9sbD0idzJ1aVtcJycrdGhpcy5uYW1lKyInXS5zY3JvbGwoZXZlbnQpO1wiPiIraVsxXSsnPC9kaXY+PGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX3Njcm9sbDEiIGNsYXNzPSJ3MnVpLWdyaWQtc2Nyb2xsMSIgc3R5bGU9ImhlaWdodDogJyt3MnV0aWxzLnNjcm9sbEJhclNpemUoKSsncHgiPjwvZGl2PjxkaXYgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ19mY29sdW1ucyIgY2xhc3M9IncydWktZ3JpZC1mY29sdW1ucyI+ICAgIDx0YWJsZT48dGJvZHk+JytzWzBdKyc8L3Rib2R5PjwvdGFibGU+PC9kaXY+PGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX2NvbHVtbnMiIGNsYXNzPSJ3MnVpLWdyaWQtY29sdW1ucyI+ICAgIDx0YWJsZT48dGJvZHk+JytzWzFdKyI8L3Rib2R5PjwvdGFibGU+PC9kaXY+IixsPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfYm9keSIsci5ib3gpLmh0bWwobiksbz0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY29yZHMiLHIuYm94KTtpZihsLmRhdGEoInNjcm9sbGRhdGEiLHtsYXN0VGltZTowLGxhc3REZWx0YTowLHRpbWU6MH0pLmZpbmQoIi53MnVpLWdyaWQtZnJlY29yZHMiKS5vbigibW91c2V3aGVlbCBET01Nb3VzZVNjcm9sbCAiLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD1lLm9yaWdpbmFsRXZlbnQsaT1sLmRhdGEoInNjcm9sbGRhdGEiKSxzPSQodGhpcykuc2libGluZ3MoIi53MnVpLWdyaWQtcmVjb3JkcyIpLmFkZEJhY2soKS5maWx0ZXIoIi53MnVpLWdyaWQtcmVjb3JkcyIpLG49bnVsbCE9dHlwZW9mIHQud2hlZWxEZWx0YT8tMSp0LndoZWVsRGVsdGEvMTIwOih0LmRldGFpbHx8dC5kZWx0YVkpLzMsYT1zLnNjcm9sbFRvcCgpO2kudGltZT0rbmV3IERhdGUsaS5sYXN0VGltZTxpLnRpbWUtMTUwJiYoaS5sYXN0RGVsdGE9MCksaS5sYXN0VGltZT1pLnRpbWUsaS5sYXN0RGVsdGErPW4sbj1NYXRoLmFicyhpLmxhc3REZWx0YSk8MT8wOk1hdGgucm91bmQoaS5sYXN0RGVsdGEpLGwuZGF0YSgic2Nyb2xsZGF0YSIsaSksbio9KE1hdGgucm91bmQoby5oZWlnaHQoKS9yLnJlY29yZEhlaWdodCktMSkqci5yZWNvcmRIZWlnaHQvNCxzLnN0b3AoKS5hbmltYXRlKHtzY3JvbGxUb3A6YStufSwyNTAsImxpbmVhciIpfSksMD09PXRoaXMucmVjb3Jkcy5sZW5ndGgmJnRoaXMubXNnRW1wdHk/JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9ib2R5IikuYXBwZW5kKCc8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfZW1wdHlfbXNnIiBjbGFzcz0idzJ1aS1ncmlkLWVtcHR5LW1zZyI+PGRpdj4nK3RoaXMubXNnRW1wdHkrIjwvZGl2PjwvZGl2PiIpOjA8JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9lbXB0eV9tc2ciKS5sZW5ndGgmJiQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZW1wdHlfbXNnIikucmVtb3ZlKCksMDx0aGlzLnN1bW1hcnkubGVuZ3RoKXt2YXIgYT10aGlzLmdldFN1bW1hcnlIVE1MKCk7JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mc3VtbWFyeSIpLmh0bWwoYVswXSkuc2hvdygpLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfc3VtbWFyeSIpLmh0bWwoYVsxXSkuc2hvdygpfWVsc2UgJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mc3VtbWFyeSIpLmhpZGUoKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3N1bW1hcnkiKS5oaWRlKCl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgQz10aGlzLHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYobnVsbCE9ZSYmKDA8JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9ib2R5IikubGVuZ3RoJiYkKHRoaXMuYm94KS5yZW1vdmVBdHRyKCJuYW1lIikucmVtb3ZlQ2xhc3MoIncydWktcmVzZXQgdzJ1aS1ncmlkIHcydWktaW5hY3RpdmUiKS5odG1sKCIiKSx0aGlzLmJveD1lKSx0aGlzLmJveCl7dmFyIGk9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQscz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDp0aGlzLm5hbWUsdHlwZToicmVuZGVyIixib3g6ZX0pO2lmKCEwIT09cy5pc0NhbmNlbGxlZCl7aWYodGhpcy5yZXNldCghMCksIXRoaXMubGFzdC5maWVsZClpZih0aGlzLm11bHRpU2VhcmNoJiZ0aGlzLnNob3cuc2VhcmNoQWxsKXRoaXMubGFzdC5maWVsZD0iYWxsIix0aGlzLmxhc3QubGFiZWw9dzJ1dGlscy5sYW5nKCJBbGwgRmllbGRzIik7ZWxzZXtmb3IodmFyIG49MDtuPHRoaXMuc2VhcmNoZXMubGVuZ3RoJiYodGhpcy5zZWFyY2hlc1tuXS5oaWRkZW58fCExPT09dGhpcy5zZWFyY2hlc1tuXS5zaW1wbGUpOyluKys7bj49dGhpcy5zZWFyY2hlcy5sZW5ndGg/KHRoaXMubGFzdC5maWVsZD0iIix0aGlzLmxhc3QubGFiZWw9IiIpOih0aGlzLmxhc3QuZmllbGQ9dGhpcy5zZWFyY2hlc1tuXS5maWVsZCx0aGlzLmxhc3QubGFiZWw9dGhpcy5zZWFyY2hlc1tuXS5sYWJlbCl9aWYoJCh0aGlzLmJveCkuYXR0cigibmFtZSIsdGhpcy5uYW1lKS5hZGRDbGFzcygidzJ1aS1yZXNldCB3MnVpLWdyaWQgdzJ1aS1pbmFjdGl2ZSIpLmh0bWwoJzxkaXYgY2xhc3M9IncydWktZ3JpZC1ib3giPiAgICA8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfaGVhZGVyIiBjbGFzcz0idzJ1aS1ncmlkLWhlYWRlciI+PC9kaXY+ICAgIDxkaXYgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ190b29sYmFyIiBjbGFzcz0idzJ1aS1ncmlkLXRvb2xiYXIiPjwvZGl2PiAgICA8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfYm9keSIgY2xhc3M9IncydWktZ3JpZC1ib2R5Ij48L2Rpdj4gICAgPGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX2ZzdW1tYXJ5IiBjbGFzcz0idzJ1aS1ncmlkLWJvZHkgdzJ1aS1ncmlkLXN1bW1hcnkiPjwvZGl2PiAgICA8ZGl2IGlkPSJncmlkXycrdGhpcy5uYW1lKydfc3VtbWFyeSIgY2xhc3M9IncydWktZ3JpZC1ib2R5IHcydWktZ3JpZC1zdW1tYXJ5Ij48L2Rpdj4gICAgPGRpdiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX2Zvb3RlciIgY2xhc3M9IncydWktZ3JpZC1mb290ZXIiPjwvZGl2PiAgICA8dGV4dGFyZWEgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ19mb2N1cyIgY2xhc3M9IncydWktZ3JpZC1mb2N1cy1pbnB1dCIgJysodzJ1dGlscy5pc0lPUz8icmVhZG9ubHkiOiIiKSsiPjwvdGV4dGFyZWE+PC9kaXY+IiksInJvdyIhPXRoaXMuc2VsZWN0VHlwZSYmJCh0aGlzLmJveCkuYWRkQ2xhc3MoIncydWktc3MiKSwwPCQodGhpcy5ib3gpLmxlbmd0aCYmKCQodGhpcy5ib3gpWzBdLnN0eWxlLmNzc1RleHQrPXRoaXMuc3R5bGUpLHRoaXMuaW5pdFRvb2xiYXIoKSxudWxsIT10aGlzLnRvb2xiYXImJnRoaXMudG9vbGJhci5yZW5kZXIoJCgiI2dyaWRfIit0aGlzLm5hbWUrIl90b29sYmFyIilbMF0pLHRoaXMubGFzdC5maWVsZCYmImFsbCIhPXRoaXMubGFzdC5maWVsZCl7dmFyIGE9dGhpcy5zZWFyY2hEYXRhO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtDLmluaXRBbGxGaWVsZChDLmxhc3QuZmllbGQsMT09YS5sZW5ndGg/YVswXS52YWx1ZTpudWxsKX0sMSl9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mb290ZXIiKS5odG1sKHRoaXMuZ2V0Rm9vdGVySFRNTCgpKSx0aGlzLmxhc3Quc3RhdGV8fCh0aGlzLmxhc3Quc3RhdGU9dGhpcy5zdGF0ZVNhdmUoITApKSx0aGlzLnN0YXRlUmVzdG9yZSgpLGkmJih0aGlzLmNsZWFyKCksdGhpcy5yZWZyZXNoKCkpO2Zvcih2YXIgVCxyPSExLGw9MDtsPHRoaXMuc2VhcmNoZXMubGVuZ3RoO2wrKylpZih0aGlzLnNlYXJjaGVzW2xdLmhpZGRlbil7cj0hMDticmVha31yZXR1cm4gcj8odGhpcy5zZWFyY2hSZXNldCghMSksaXx8c2V0VGltZW91dChmdW5jdGlvbigpe0Muc2VhcmNoUmVzZXQoKX0sMSkpOnRoaXMucmVsb2FkKCksJCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mb2N1cyIpLm9uKCJmb2N1cyIsZnVuY3Rpb24oZSl7Y2xlYXJUaW1lb3V0KEMubGFzdC5rYmRfdGltZXIpLEMuaGFzRm9jdXN8fEMuZm9jdXMoKX0pLm9uKCJibHVyIixmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoQy5sYXN0LmtiZF90aW1lciksQy5sYXN0LmtiZF90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qy5oYXNGb2N1cyYmQy5ibHVyKCl9LDEwMCl9KS5vbigicGFzdGUiLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe3cydWlbQy5uYW1lXS5wYXN0ZSh0LnZhbHVlKSx0LnZhbHVlPSIifSwxKX0pLm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXt3MnVpW0MubmFtZV0ua2V5ZG93bi5jYWxsKHcydWlbQy5uYW1lXSxlKX0pLCQodGhpcy5ib3gpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe2lmKDEhPWUud2hpY2gpcmV0dXJuOyJ0ZXh0Ij09Qy5sYXN0LnVzZXJTZWxlY3QmJihkZWxldGUgQy5sYXN0LnVzZXJTZWxlY3QsJChDLmJveCkuZmluZCgiLncydWktZ3JpZC1ib2R5IikuY3NzKHcydXRpbHMuY3NzUHJlZml4KCJ1c2VyLXNlbGVjdCIsIm5vbmUiKSkpO2lmKCJyb3ciPT1DLnNlbGVjdFR5cGUmJigkKGUudGFyZ2V0KS5wYXJlbnRzKCkuaGFzQ2xhc3MoIncydWktaGVhZCIpfHwkKGUudGFyZ2V0KS5oYXNDbGFzcygidzJ1aS1oZWFkIikpKXJldHVybjtpZihDLmxhc3QubW92ZSYmImV4cGFuZCI9PUMubGFzdC5tb3ZlLnR5cGUpcmV0dXJuO2lmKGUuYWx0S2V5KSQoQy5ib3gpLmZpbmQoIi53MnVpLWdyaWQtYm9keSIpLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCgidXNlci1zZWxlY3QiLCJ0ZXh0IikpLEMuc2VsZWN0Tm9uZSgpLEMubGFzdC5tb3ZlPXt0eXBlOiJ0ZXh0LXNlbGVjdCJ9LEMubGFzdC51c2VyU2VsZWN0PSJ0ZXh0IjtlbHNle2Zvcih2YXIgdD1lLnRhcmdldCxpPXt4OmUub2Zmc2V0WC0xMCx5OmUub2Zmc2V0WS0xMH0scz0hMTt0JiYoIXQuY2xhc3NMaXN0fHwhdC5jbGFzc0xpc3QuY29udGFpbnMoIncydWktZ3JpZCIpKTspdC50YWdOYW1lJiYiVEQiPT10LnRhZ05hbWUudG9VcHBlckNhc2UoKSYmKHM9ITApLHQudGFnTmFtZSYmIlRSIiE9dC50YWdOYW1lLnRvVXBwZXJDYXNlKCkmJjE9PXMmJihpLngrPXQub2Zmc2V0TGVmdCxpLnkrPXQub2Zmc2V0VG9wKSx0PXQucGFyZW50Tm9kZTtDLmxhc3QubW92ZT17eDplLnNjcmVlblgseTplLnNjcmVlblksZGl2WDowLGRpdlk6MCxmb2N1c1g6aS54LGZvY3VzWTppLnkscmVjaWQ6JChlLnRhcmdldCkucGFyZW50cygidHIiKS5hdHRyKCJyZWNpZCIpLGNvbHVtbjpwYXJzZUludCgiVEQiPT1lLnRhcmdldC50YWdOYW1lLnRvVXBwZXJDYXNlKCk/JChlLnRhcmdldCkuYXR0cigiY29sIik6JChlLnRhcmdldCkucGFyZW50cygidGQiKS5hdHRyKCJjb2wiKSksdHlwZToic2VsZWN0IixnaG9zdDohMSxzdGFydDohMH0sbnVsbD09Qy5sYXN0Lm1vdmUucmVjaWQmJihDLmxhc3QubW92ZS50eXBlPSJzZWxlY3QtY29sdW1uIik7dmFyIG49ZS50YXJnZXQsYT0kKEMuYm94KS5maW5kKCIjZ3JpZF8iK0MubmFtZSsiX2ZvY3VzIik7aWYoQy5sYXN0Lm1vdmUpe3ZhciByPUMubGFzdC5tb3ZlLmZvY3VzWCxsPUMubGFzdC5tb3ZlLmZvY3VzWSxvPSQobikucGFyZW50cygidGFibGUiKS5wYXJlbnQoKTsoby5oYXNDbGFzcygidzJ1aS1ncmlkLXJlY29yZHMiKXx8by5oYXNDbGFzcygidzJ1aS1ncmlkLWZyZWNvcmRzIil8fG8uaGFzQ2xhc3MoIncydWktZ3JpZC1jb2x1bW5zIil8fG8uaGFzQ2xhc3MoIncydWktZ3JpZC1mY29sdW1ucyIpfHxvLmhhc0NsYXNzKCJ3MnVpLWdyaWQtc3VtbWFyeSIpKSYmKHI9Qy5sYXN0Lm1vdmUuZm9jdXNYLSQoQy5ib3gpLmZpbmQoIiNncmlkXyIrQy5uYW1lKyJfcmVjb3JkcyIpLnNjcm9sbExlZnQoKSxsPUMubGFzdC5tb3ZlLmZvY3VzWS0kKEMuYm94KS5maW5kKCIjZ3JpZF8iK0MubmFtZSsiX3JlY29yZHMiKS5zY3JvbGxUb3AoKSksKCQobikuaGFzQ2xhc3MoIncydWktZ3JpZC1mb290ZXIiKXx8MDwkKG4pLnBhcmVudHMoImRpdi53MnVpLWdyaWQtZm9vdGVyIikubGVuZ3RoKSYmKGw9JChDLmJveCkuZmluZCgiI2dyaWRfIitDLm5hbWUrIl9mb290ZXIiKS5wb3NpdGlvbigpLnRvcCksby5oYXNDbGFzcygidzJ1aS1zY3JvbGwtd3JhcHBlciIpJiZvLnBhcmVudCgpLmhhc0NsYXNzKCJ3MnVpLXRvb2xiYXIiKSYmKHI9Qy5sYXN0Lm1vdmUuZm9jdXNYLW8uc2Nyb2xsTGVmdCgpKSxhLmNzcyh7bGVmdDpyLTEwLHRvcDpsfSl9c2V0VGltZW91dChmdW5jdGlvbigpey0xIT1bIklOUFVUIiwiVEVYVEFSRUEiLCJTRUxFQ1QiXS5pbmRleE9mKG4udGFnTmFtZS50b1VwcGVyQ2FzZSgpKT8kKG4pLmZvY3VzKCk6YS5pcygiOmZvY3VzIil8fGEuZm9jdXMoKX0sNTApLEMubXVsdGlTZWxlY3R8fEMucmVvcmRlclJvd3N8fCJkcmFnIiE9Qy5sYXN0Lm1vdmUudHlwZXx8ZGVsZXRlIEMubGFzdC5tb3ZlfWlmKDE9PUMucmVvcmRlclJvd3Mpe3ZhciBkPWUudGFyZ2V0O2lmKCJURCIhPWQudGFnTmFtZS50b1VwcGVyQ2FzZSgpJiYoZD0kKGQpLnBhcmVudHMoInRkIilbMF0pLCQoZCkuaGFzQ2xhc3MoIncydWktY29sLW51bWJlciIpfHwkKGQpLmhhc0NsYXNzKCJ3MnVpLWNvbC1vcmRlciIpKXtDLnNlbGVjdE5vbmUoKSxDLmxhc3QubW92ZS5yZW9yZGVyPSEwO3ZhciB1PSQoQy5ib3gpLmZpbmQoIi53MnVpLWV2ZW4udzJ1aS1lbXB0eS1yZWNvcmQiKS5jc3MoImJhY2tncm91bmQtY29sb3IiKSxjPSQoQy5ib3gpLmZpbmQoIi53MnVpLW9kZC53MnVpLWVtcHR5LXJlY29yZCIpLmNzcygiYmFja2dyb3VuZC1jb2xvciIpOyQoQy5ib3gpLmZpbmQoIi53MnVpLWV2ZW4gdGQiKS5ub3QoIi53MnVpLWNvbC1udW1iZXIiKS5jc3MoImJhY2tncm91bmQtY29sb3IiLHUpLCQoQy5ib3gpLmZpbmQoIi53MnVpLW9kZCB0ZCIpLm5vdCgiLncydWktY29sLW51bWJlciIpLmNzcygiYmFja2dyb3VuZC1jb2xvciIsYyk7dmFyIGg9Qy5sYXN0Lm1vdmU7aWYoIWguZ2hvc3Qpe3ZhciBwPSQoIiNncmlkXyIrQy5uYW1lKyJfcmVjXyIraC5yZWNpZCk7dD1wLnBhcmVudHMoInRhYmxlIikuZmluZCgidHI6Zmlyc3QtY2hpbGQiKS5jbG9uZSgpO2gub2Zmc2V0WT1lLm9mZnNldFksaC5mcm9tPWgucmVjaWQsaC5wb3M9cC5wb3NpdGlvbigpLGguZ2hvc3Q9JChwKS5jbG9uZSghMCksaC5naG9zdC5yZW1vdmVBdHRyKCJpZCIpLHAuZmluZCgidGQiKS5yZW1vdmUoKSxwLmFwcGVuZCgnPHRkIGNvbHNwYW49IjEwMDAiPjxkaXYgc3R5bGU9ImhlaWdodDogJytDLnJlY29yZEhlaWdodCsncHg7IGJhY2tncm91bmQtY29sb3I6ICNlZWU7IGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2FhYTsgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYWFhOyI+PC9kaXY+PC90ZD4nKSwoZz0kKEMuYm94KS5maW5kKCIudzJ1aS1ncmlkLXJlY29yZHMiKSkuYXBwZW5kKCc8ZGl2IGlkPSJncmlkXycrQy5uYW1lKydfZ2hvc3RfbGluZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogOTk5OTk5OyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2lkdGg6IDEwMCU7Ij48L2Rpdj4nKSxnLmFwcGVuZCgnPHRhYmxlIGlkPSJncmlkXycrQy5uYW1lKydfZ2hvc3QiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDk5OTk5ODsgb3BhY2l0eTogMC45OyBwb2ludGVyLWV2ZW50czogbm9uZTsiPjwvdGFibGU+JyksJCgiI2dyaWRfIitDLm5hbWUrIl9naG9zdCIpLmFwcGVuZCh0KS5hcHBlbmQoaC5naG9zdCl9dmFyIGY9JCgiI2dyaWRfIitDLm5hbWUrIl9naG9zdCIpLGc9JChDLmJveCkuZmluZCgiLncydWktZ3JpZC1yZWNvcmRzIik7Zi5jc3Moe3RvcDpoLnBvcy50b3ArZy5zY3JvbGxUb3AoKSxsZWZ0OmgucG9zLmxlZnQsImJvcmRlci10b3AiOiIxcHggc29saWQgI2FhYSIsImJvcmRlci1ib3R0b20iOiIxcHggc29saWQgI2FhYSJ9KX1lbHNlIEMubGFzdC5tb3ZlLnJlb3JkZXI9ITF9JChkb2N1bWVudCkub24oIm1vdXNlbW92ZS53MnVpLSIrQy5uYW1lLG0pLm9uKCJtb3VzZXVwLncydWktIitDLm5hbWUsdyksZS5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMudXBkYXRlVG9vbGJhcigpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLDA9PT0kKCIudzJ1aS1sYXlvdXQiKS5sZW5ndGgmJiQod2luZG93KS5vZmYoInJlc2l6ZS53MnVpLSIrQy5uYW1lKS5vbigicmVzaXplLncydWktIitDLm5hbWUsZnVuY3Rpb24oZSl7bnVsbD09dzJ1aVtDLm5hbWVdPyQod2luZG93KS5vZmYoInJlc2l6ZS53MnVpLSIrQy5uYW1lKTp3MnVpW0MubmFtZV0ucmVzaXplKCl9KSwobmV3IERhdGUpLmdldFRpbWUoKS10fX1mdW5jdGlvbiBtKGUpe3ZhciB0PUMubGFzdC5tb3ZlO2lmKHQmJi0xIT1bInNlbGVjdCIsInNlbGVjdC1jb2x1bW4iXS5pbmRleE9mKHQudHlwZSkmJih0LmRpdlg9ZS5zY3JlZW5YLXQueCx0LmRpdlk9ZS5zY3JlZW5ZLXQueSwhKE1hdGguYWJzKHQuZGl2WCk8PTEmJk1hdGguYWJzKHQuZGl2WSk8PTEpKSlpZihDLmxhc3QuY2FuY2VsQ2xpY2s9ITAsMT09Qy5yZW9yZGVyUm93cyYmQy5sYXN0Lm1vdmUucmVvcmRlcil7dmFyIGk9JChDLmJveCkuZmluZCgiLncydWktZ3JpZC1yZWNvcmRzIik7aWYoIi1ub25lLSI9PShyPShjPSQoZS50YXJnZXQpLnBhcmVudHMoInRyIikpLmF0dHIoInJlY2lkIikpJiYocj0iYm90dG9tIiksciE9dC5mcm9tKXskKCIjZ3JpZF8iK0MubmFtZSsiX3JlY18iK3QucmVjaWQpO3ZhciBzPSQoIiNncmlkXyIrQy5uYW1lKyJfcmVjXyIrcik7JChDLmJveCkuZmluZCgiLmluc2VydC1iZWZvcmUiKSxzLmFkZENsYXNzKCJpbnNlcnQtYmVmb3JlIiksdC5sYXN0WT1lLnNjcmVlblksdC50bz1yO3ZhciBuPXMucG9zaXRpb24oKSxhPSQoIiNncmlkXyIrQy5uYW1lKyJfZ2hvc3RfbGluZSIpO24/YS5jc3Moe3RvcDpuLnRvcCtpLnNjcm9sbFRvcCgpLGxlZnQ6dC5wb3MubGVmdCwiYm9yZGVyLXRvcCI6IjJweCBzb2xpZCAjNzY5RUZDIn0pOmEuY3NzKHsiYm9yZGVyLXRvcCI6IjJweCBzb2xpZCB0cmFuc3BhcmVudCJ9KX0kKCIjZ3JpZF8iK0MubmFtZSsiX2dob3N0IikuY3NzKHt0b3A6dC5wb3MudG9wK3QuZGl2WStpLnNjcm9sbFRvcCgpLGxlZnQ6dC5wb3MubGVmdH0pfWVsc2V7dC5zdGFydCYmdC5yZWNpZCYmKEMuc2VsZWN0Tm9uZSgpLHQuc3RhcnQ9ITEpO3ZhciByLGw9W107aWYobnVsbD09KHI9IlRSIj09ZS50YXJnZXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpPyQoZS50YXJnZXQpLmF0dHIoInJlY2lkIik6JChlLnRhcmdldCkucGFyZW50cygidHIiKS5hdHRyKCJyZWNpZCIpKSl7aWYoInJvdyI9PUMuc2VsZWN0VHlwZSlyZXR1cm47aWYoQy5sYXN0Lm1vdmUmJiJzZWxlY3QiPT1DLmxhc3QubW92ZS50eXBlKXJldHVybjt2YXIgbz1wYXJzZUludCgkKGUudGFyZ2V0KS5wYXJlbnRzKCJ0ZCIpLmF0dHIoImNvbCIpKTtpZihpc05hTihvKSlDLnJlbW92ZVJhbmdlKCJjb2x1bW4tc2VsZWN0aW9uIiksJChDLmJveCkuZmluZCgiLncydWktZ3JpZC1jb2x1bW5zIC53MnVpLWNvbC1oZWFkZXIsIC53MnVpLWdyaWQtZmNvbHVtbnMgLncydWktY29sLWhlYWRlciIpLnJlbW92ZUNsYXNzKCJ3MnVpLWNvbC1zZWxlY3RlZCIpLCQoQy5ib3gpLmZpbmQoIi53MnVpLWNvbC1udW1iZXIiKS5yZW1vdmVDbGFzcygidzJ1aS1yb3ctc2VsZWN0ZWQiKSxkZWxldGUgdC5jb2xSYW5nZTtlbHNle3ZhciBkPW8rIi0iK287dC5jb2x1bW48byYmKGQ9dC5jb2x1bW4rIi0iK28pLHQuY29sdW1uPm8mJihkPW8rIi0iK3QuY29sdW1uKTtmb3IodmFyIHU9W10sYz1kLnNwbGl0KCItIiksaD1wYXJzZUludChjWzBdKTtoPD1wYXJzZUludChjWzFdKTtoKyspdS5wdXNoKGgpO2lmKHQuY29sUmFuZ2UhPWQmJiEwIT09KFQ9Qy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2x1bW5TZWxlY3QiLHRhcmdldDpDLm5hbWUsY29sdW1uczp1LGlzQ2FuY2VsbGVkOiExfSkpLmlzQ2FuY2VsbGVkKXtudWxsPT10LmNvbFJhbmdlJiZDLnNlbGVjdE5vbmUoKTtjPWQuc3BsaXQoIi0iKTskKEMuYm94KS5maW5kKCIudzJ1aS1ncmlkLWNvbHVtbnMgLncydWktY29sLWhlYWRlciwgLncydWktZ3JpZC1mY29sdW1ucyAudzJ1aS1jb2wtaGVhZGVyIikucmVtb3ZlQ2xhc3MoIncydWktY29sLXNlbGVjdGVkIik7Zm9yKHZhciBwPXBhcnNlSW50KGNbMF0pO3A8PXBhcnNlSW50KGNbMV0pO3ArKykkKEMuYm94KS5maW5kKCIjZ3JpZF8iK0MubmFtZSsiX2NvbHVtbl8iK3ArIiAudzJ1aS1jb2wtaGVhZGVyIikuYWRkQ2xhc3MoIncydWktY29sLXNlbGVjdGVkIik7JChDLmJveCkuZmluZCgiLncydWktY29sLW51bWJlciIpLm5vdCgiLncydWktaGVhZCIpLmFkZENsYXNzKCJ3MnVpLXJvdy1zZWxlY3RlZCIpLHQuY29sUmFuZ2U9ZCxDLnJlbW92ZVJhbmdlKCJjb2x1bW4tc2VsZWN0aW9uIiksQy5hZGRSYW5nZSh7bmFtZToiY29sdW1uLXNlbGVjdGlvbiIscmFuZ2U6W3tyZWNpZDpDLnJlY29yZHNbMF0ucmVjaWQsY29sdW1uOmNbMF19LHtyZWNpZDpDLnJlY29yZHNbQy5yZWNvcmRzLmxlbmd0aC0xXS5yZWNpZCxjb2x1bW46Y1sxXX1dLHN0eWxlOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDkwLCAxNDUsIDIzNCwgMC4xKSJ9KX19fWVsc2V7dmFyIGY9Qy5nZXQodC5yZWNpZCwhMCk7aWYobnVsbD09Znx8Qy5yZWNvcmRzW2ZdJiZDLnJlY29yZHNbZl0ucmVjaWQhPXQucmVjaWQpcmV0dXJuO3ZhciBnPUMuZ2V0KHIsITApO2lmKG51bGw9PWcpcmV0dXJuO3ZhciBtPXBhcnNlSW50KHQuY29sdW1uKSx3PXBhcnNlSW50KCJURCI9PWUudGFyZ2V0LnRhZ05hbWUudG9VcHBlckNhc2UoKT8kKGUudGFyZ2V0KS5hdHRyKCJjb2wiKTokKGUudGFyZ2V0KS5wYXJlbnRzKCJ0ZCIpLmF0dHIoImNvbCIpKTtpZihpc05hTihtKSYmaXNOYU4odykmJihtPTAsdz1DLmNvbHVtbnMubGVuZ3RoLTEpLGc8Zil7Yz1mO2Y9ZyxnPWN9Yz0iaW5kMToiK2YrIixpbmQyOyIrZysiLGNvbDE6IittKyIsY29sMjoiK3c7aWYodC5yYW5nZT09YylyZXR1cm47dC5yYW5nZT1jO2Zvcih2YXIgdj1mO3Y8PWc7disrKWlmKCEoMDxDLmxhc3Quc2VhcmNoSWRzLmxlbmd0aCYmLTE9PUMubGFzdC5zZWFyY2hJZHMuaW5kZXhPZih2KSkpaWYoInJvdyIhPUMuc2VsZWN0VHlwZSl7aWYodzxtKXtjPW07bT13LHc9Y31jPVtdO2Zvcih2YXIgeT1tO3k8PXc7eSsrKUMuY29sdW1uc1t5XS5oaWRkZW58fGwucHVzaCh7cmVjaWQ6Qy5yZWNvcmRzW3ZdLnJlY2lkLGNvbHVtbjpwYXJzZUludCh5KX0pfWVsc2UgbC5wdXNoKEMucmVjb3Jkc1t2XS5yZWNpZCk7aWYoInJvdyIhPUMuc2VsZWN0VHlwZSl7Zm9yKHZhciBiPUMuZ2V0U2VsZWN0aW9uKCkseD0oYz1bXSwwKTt4PGwubGVuZ3RoO3grKyl7Zm9yKHZhciBfPSExLGs9MDtrPGIubGVuZ3RoO2srKylsW3hdLnJlY2lkPT1iW2tdLnJlY2lkJiZsW3hdLmNvbHVtbj09YltrXS5jb2x1bW4mJihfPSEwKTtffHxjLnB1c2goe3JlY2lkOmxbeF0ucmVjaWQsY29sdW1uOmxbeF0uY29sdW1ufSl9Qy5zZWxlY3QuYXBwbHkoQyxjKTtmb3IoYz1bXSxrPTA7azxiLmxlbmd0aDtrKyspe2ZvcihfPSExLHg9MDt4PGwubGVuZ3RoO3grKylsW3hdLnJlY2lkPT1iW2tdLnJlY2lkJiZsW3hdLmNvbHVtbj09YltrXS5jb2x1bW4mJihfPSEwKTtffHxjLnB1c2goe3JlY2lkOmJba10ucmVjaWQsY29sdW1uOmJba10uY29sdW1ufSl9Qy51bnNlbGVjdC5hcHBseShDLGMpfWVsc2UgaWYoQy5tdWx0aVNlbGVjdCl7Zm9yKGI9Qy5nZXRTZWxlY3Rpb24oKSx4PTA7eDxsLmxlbmd0aDt4KyspLTE9PWIuaW5kZXhPZihsW3hdKSYmQy5zZWxlY3QobFt4XSk7Zm9yKGs9MDtrPGIubGVuZ3RoO2srKyktMT09bC5pbmRleE9mKGJba10pJiZDLnVuc2VsZWN0KGJba10pfX19fWZ1bmN0aW9uIHcoZSl7dmFyIHQ9Qy5sYXN0Lm1vdmU7aWYoc2V0VGltZW91dChmdW5jdGlvbigpe2RlbGV0ZSBDLmxhc3QuY2FuY2VsQ2xpY2t9LDEpLCEkKGUudGFyZ2V0KS5wYXJlbnRzKCkuaGFzQ2xhc3MoIi53MnVpLWhlYWQiKSYmISQoZS50YXJnZXQpLmhhc0NsYXNzKCIudzJ1aS1oZWFkIikpe2lmKHQmJi0xIT1bInNlbGVjdCIsInNlbGVjdC1jb2x1bW4iXS5pbmRleE9mKHQudHlwZSkpe2lmKG51bGwhPXQuY29sUmFuZ2UmJiEwIT09VC5pc0NhbmNlbGxlZCl7Zm9yKHZhciBpPXQuY29sUmFuZ2Uuc3BsaXQoIi0iKSxzPVtdLG49MDtuPEMucmVjb3Jkcy5sZW5ndGg7bisrKXtmb3IodmFyIGE9W10scj1wYXJzZUludChpWzBdKTtyPD1wYXJzZUludChpWzFdKTtyKyspYS5wdXNoKHIpO3MucHVzaCh7cmVjaWQ6Qy5yZWNvcmRzW25dLnJlY2lkLGNvbHVtbjphfSl9Qy5yZW1vdmVSYW5nZSgiY29sdW1uLXNlbGVjdGlvbiIpLEMudHJpZ2dlcigkLmV4dGVuZChULHtwaGFzZToiYWZ0ZXIifSkpLEMuc2VsZWN0LmFwcGx5KEMscyl9aWYoMT09Qy5yZW9yZGVyUm93cyYmQy5sYXN0Lm1vdmUucmVvcmRlcil7dmFyIGw9Qy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6Qy5uYW1lLHR5cGU6InJlb3JkZXJSb3ciLHJlY2lkOnQuZnJvbSxtb3ZlQWZ0ZXI6dC50b30pO2lmKCEwPT09bC5pc0NhbmNlbGxlZClyZXR1cm4gJCgiI2dyaWRfIitDLm5hbWUrIl9naG9zdCIpLnJlbW92ZSgpLCQoIiNncmlkXyIrQy5uYW1lKyJfZ2hvc3RfbGluZSIpLnJlbW92ZSgpLEMucmVmcmVzaCgpLHZvaWQgZGVsZXRlIEMubGFzdC5tb3ZlO3ZhciBvPUMuZ2V0KHQuZnJvbSwhMCksZD1DLmdldCh0LnRvLCEwKTsiYm90dG9tIj09dC50byYmKGQ9Qy5yZWNvcmRzLmxlbmd0aCk7aT1DLnJlY29yZHNbb107bnVsbCE9byYmbnVsbCE9ZCYmKEMucmVjb3Jkcy5zcGxpY2UobywxKSxkPG8/Qy5yZWNvcmRzLnNwbGljZShkLDAsaSk6Qy5yZWNvcmRzLnNwbGljZShkLTEsMCxpKSksJCgiI2dyaWRfIitDLm5hbWUrIl9naG9zdCIpLnJlbW92ZSgpLCQoIiNncmlkXyIrQy5uYW1lKyJfZ2hvc3RfbGluZSIpLnJlbW92ZSgpLEMucmVmcmVzaCgpLEMudHJpZ2dlcigkLmV4dGVuZChsLHtwaGFzZToiYWZ0ZXIifSkpfX1kZWxldGUgQy5sYXN0Lm1vdmUsJChkb2N1bWVudCkub2ZmKCIudzJ1aS0iK0MubmFtZSl9fX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdGFyZ2V0OnRoaXMubmFtZSx0eXBlOiJkZXN0cm95In0pOyEwIT09ZS5pc0NhbmNlbGxlZCYmKCQodGhpcy5ib3gpLm9mZigpLCJvYmplY3QiPT10eXBlb2YgdGhpcy50b29sYmFyJiZ0aGlzLnRvb2xiYXIuZGVzdHJveSYmdGhpcy50b29sYmFyLmRlc3Ryb3koKSwwPCQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfYm9keSIpLmxlbmd0aCYmJCh0aGlzLmJveCkucmVtb3ZlQXR0cigibmFtZSIpLnJlbW92ZUNsYXNzKCJ3MnVpLXJlc2V0IHcydWktZ3JpZCB3MnVpLWluYWN0aXZlIikuaHRtbCgiIiksZGVsZXRlIHcydWlbdGhpcy5uYW1lXSx0aGlzLnRyaWdnZXIoJC5leHRlbmQoZSx7cGhhc2U6ImFmdGVyIn0pKSl9LGluaXRDb2x1bW5Pbk9mZjpmdW5jdGlvbigpe2lmKHRoaXMuc2hvdy50b29sYmFyQ29sdW1ucyl7Zm9yKHZhciBlPXRoaXMsdD0nPGRpdiBjbGFzcz0idzJ1aS1jb2wtb24tb2ZmIj48dGFibGU+PHRib2R5Pjx0ciBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX2NvbHVtbl9sbl9jaGVjayIgb25jbGljaz0idzJ1aVtcJycrZS5uYW1lKydcJ10uY29sdW1uT25PZmYoZXZlbnQsIFwnbGluZS1udW1iZXJzXCcpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiPiAgIDx0ZCBzdHlsZT0id2lkdGg6IDMwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZy1yaWdodDogM3B4OyBjb2xvcjogIzg4ODsiPiAgICAgIDxzcGFuIGNsYXNzPSJ3MnVpLWNvbHVtbi1jaGVjayB3MnVpLWljb24tJysoZS5zaG93LmxpbmVOdW1iZXJzPyJjaGVjayI6ImVtcHR5IikrJyI+PC9zcGFuPiAgIDwvdGQ+ICAgPHRkPiAgICAgIDxsYWJlbD4nK3cydXRpbHMubGFuZygiTGluZSAjIikrIjwvbGFiZWw+ICAgPC90ZD48L3RyPiIsaT0wO2k8dGhpcy5jb2x1bW5zLmxlbmd0aDtpKyspe3ZhciBzPXRoaXMuY29sdW1uc1tpXSxuPXRoaXMuY29sdW1uc1tpXS50ZXh0OyExIT09cy5oaWRlYWJsZSYmKCFuJiZ0aGlzLmNvbHVtbnNbaV0udG9vbHRpcCYmKG49dGhpcy5jb2x1bW5zW2ldLnRvb2x0aXApLG49bnx8Ii0gY29sdW1uICIrKHBhcnNlSW50KGkpKzEpKyIgLSIsdCs9Jzx0ciBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2NvbHVtbl8iK2krJ19jaGVjayIgICAgICAgIG9uY2xpY2s9IncydWlbXCcnK2UubmFtZSsiJ10uY29sdW1uT25PZmYoZXZlbnQsICciK3MuZmllbGQrJ1wnKTsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ij4gICA8dGQgc3R5bGU9IndpZHRoOiAzMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmctcmlnaHQ6IDNweDsgY29sb3I6ICM4ODg7Ij4gICAgICA8c3BhbiBjbGFzcz0idzJ1aS1jb2x1bW4tY2hlY2sgdzJ1aS1pY29uLScrKHMuaGlkZGVuPyJlbXB0eSI6ImNoZWNrIikrJyI+PC9zcGFuPiAgIDwvdGQ+ICAgPHRkPiAgICAgICA8bGFiZWw+Jyt3MnV0aWxzLnN0cmlwVGFncyhuKSsiPC9sYWJlbD4gICA8L3RkPjwvdHI+Iil9dmFyIGE9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQ7KGEmJmUuc2hvdy5za2lwUmVjb3Jkc3x8ZS5zaG93LnNhdmVSZXN0b3JlU3RhdGUpJiYodCs9Jzx0ciBzdHlsZT0icG9pbnRlci1ldmVudHM6IG5vbmUiPjx0ZCBjb2xzcGFuPSIyIj48ZGl2IHN0eWxlPSJib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsiPjwvZGl2PjwvdGQ+PC90cj4nKSxhJiZlLnNob3cuc2tpcFJlY29yZHMmJih0Kz0nPHRyPjx0ZCBjb2xzcGFuPSIyIiBzdHlsZT0icGFkZGluZzogMHB4Ij4gICAgPGRpdiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAycHggOHB4OyBjdXJzb3I6IGRlZmF1bHQiPicrdzJ1dGlscy5sYW5nKCJTa2lwIikrJyAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDogNjBweCIgdmFsdWU9IicrdGhpcy5vZmZzZXQrJyIgICAgICAgICAgICAgb25rZXlkb3duPSJpZiAoWzQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDEzLDgsNDYsMzcsMzldLmluZGV4T2YoZXZlbnQua2V5Q29kZSkgPT0gLTEpIHsgZXZlbnQucHJldmVudERlZmF1bHQoKSB9IiAgICAgICAgICAgIG9ua2V5cHJlc3M9ImlmIChldmVudC5rZXlDb2RlID09IDEzKSB7ICAgICAgICAgICAgICAgIHcydWlbXCcnK2UubmFtZSsiJ10uc2tpcCh0aGlzLnZhbHVlKTsgICAgICAgICAgICAgICAgalF1ZXJ5KCcudzJ1aS1vdmVybGF5JylbMF0uaGlkZSgpOyAgICAgICAgICAgICB9XCIvPiAiK3cydXRpbHMubGFuZygiUmVjb3JkcyIpKyIgICAgPC9kaXY+PC90ZD48L3RyPiIpLGUuc2hvdy5zYXZlUmVzdG9yZVN0YXRlJiYodCs9Jzx0cj48dGQgY29sc3Bhbj0iMiIgb25jbGljaz0idmFyIG9iaiA9IHcydWlbXCcnK2UubmFtZSsiJ107IG9iai50b29sYmFyLnVuY2hlY2soJ3cydWktY29sdW1uLW9uLW9mZicpOyBvYmouc3RhdGVTYXZlKCk7XCI+ICAgIDxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IHBhZGRpbmc6IDRweCA4cHg7IGN1cnNvcjogZGVmYXVsdFwiPiIrdzJ1dGlscy5sYW5nKCJTYXZlIEdyaWQgU3RhdGUiKSsnPC9kaXY+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0iMiIgb25jbGljaz0idmFyIG9iaiA9IHcydWlbXCcnK2UubmFtZSsiJ107IG9iai50b29sYmFyLnVuY2hlY2soJ3cydWktY29sdW1uLW9uLW9mZicpOyBvYmouc3RhdGVSZXNldCgpO1wiPiAgICA8ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiA0cHggOHB4OyBjdXJzb3I6IGRlZmF1bHRcIj4iK3cydXRpbHMubGFuZygiUmVzdG9yZSBEZWZhdWx0IFN0YXRlIikrIjwvZGl2PjwvdGQ+PC90cj4iKSx0Kz0iPC90Ym9keT48L3RhYmxlPjwvZGl2PiIsdGhpcy50b29sYmFyLmdldCgidzJ1aS1jb2x1bW4tb24tb2ZmIikuaHRtbD10fX0saW5pdENvbHVtbkRyYWc6ZnVuY3Rpb24oZSl7aWYodGhpcy5jb2x1bW5Hcm91cHMmJnRoaXMuY29sdW1uR3JvdXBzLmxlbmd0aCl0aHJvdyJEcmFnZ2FibGUgY29sdW1ucyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgd2l0aCBjb2x1bW4gZ3JvdXBzLiI7dmFyIHU9dGhpcyxjPXt9O2Z1bmN0aW9uIHQoKXtjLnByZXNzZWQ9ITEsY2xlYXJUaW1lb3V0KGMudGltZW91dCl9ZnVuY3Rpb24gaShvKXtjLnRpbWVvdXQmJmNsZWFyVGltZW91dChjLnRpbWVvdXQpO3ZhciBkPXRoaXM7Yy5wcmVzc2VkPSEwLGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoYy5wcmVzc2VkJiYwIT09Yy5udW1iZXJQcmVDb2x1bW5zUHJlc2VudCl7dmFyIGUsdCxpLHMsbixhPVsidzJ1aS1jb2wtbnVtYmVyIiwidzJ1aS1jb2wtZXhwYW5kIiwidzJ1aS1jb2wtc2VsZWN0Il0uY29uY2F0KFsidzJ1aS1oZWFkLWxhc3QiXSk7aWYoJChvLm9yaWdpbmFsRXZlbnQudGFyZ2V0KS5wYXJlbnRzKCkuaGFzQ2xhc3MoIncydWktaGVhZCIpKXtmb3IodmFyIHI9MCxsPWEubGVuZ3RoO3I8bDtyKyspaWYoJChvLm9yaWdpbmFsRXZlbnQudGFyZ2V0KS5wYXJlbnRzKCkuaGFzQ2xhc3MoYVtyXSkpcmV0dXJuO2lmKGMubnVtYmVyUHJlQ29sdW1uc1ByZXNlbnQ9JCh1LmJveCkuZmluZCgiLncydWktaGVhZC53MnVpLWNvbC1udW1iZXIsIC53MnVpLWhlYWQudzJ1aS1jb2wtZXhwYW5kLCAudzJ1aS1oZWFkLncydWktY29sLXNlbGVjdCIpLmxlbmd0aCxjLmNvbHVtbkhlYWQ9cz0kKG8ub3JpZ2luYWxFdmVudC50YXJnZXQpLnBhcmVudHMoIi53MnVpLWhlYWQiKSxjLm9yaWdpbmFsUG9zPW49cGFyc2VJbnQocy5hdHRyKCJjb2wiKSwxMCksITA9PT0oZT11LnRyaWdnZXIoe3R5cGU6ImNvbHVtbkRyYWdTdGFydCIscGhhc2U6ImJlZm9yZSIsb3JpZ2luYWxFdmVudDpvLG9yaWdDb2x1bW5OdW1iZXI6bix0YXJnZXQ6c1swXX0pKS5pc0NhbmNlbGxlZClyZXR1cm4hMTt0PWMuY29sdW1ucz0kKHUuYm94KS5maW5kKCIudzJ1aS1oZWFkOm5vdCgudzJ1aS1oZWFkLWxhc3QpIiksJChkb2N1bWVudCkub24oIm1vdXNldXAiLHApLCQoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLGgpLGMuZ2hvc3Q9JChkKS5jbG9uZSghMCksJChjLmdob3N0KS5maW5kKCdbY29sXTpub3QoW2NvbD0iJytjLm9yaWdpbmFsUG9zKyciXSksIC53MnVpLXRvb2xiYXIsIC53MnVpLWdyaWQtaGVhZGVyJykucmVtb3ZlKCksJChjLmdob3N0KS5maW5kKCIudzJ1aS1jb2wtbnVtYmVyLCAudzJ1aS1jb2wtZXhwYW5kLCAudzJ1aS1jb2wtc2VsZWN0IikucmVtb3ZlKCksJChjLmdob3N0KS5maW5kKCIudzJ1aS1ncmlkLWJvZHkiKS5jc3Moe3RvcDowfSksaT0kKGMuZ2hvc3QpLmZpbmQoJ1tjb2w9IicrYy5vcmlnaW5hbFBvcysnIl0nKSwkKGRvY3VtZW50LmJvZHkpLmFwcGVuZChjLmdob3N0KSwkKGMuZ2hvc3QpLmNzcyh7d2lkdGg6MCxoZWlnaHQ6MCxtYXJnaW46MCxwb3NpdGlvbjoiZml4ZWQiLHpJbmRleDo5OTk5OTksb3BhY2l0eTowfSkuYWRkQ2xhc3MoIi53MnVpLWdyaWQtZ2hvc3QiKS5hbmltYXRlKHt3aWR0aDppLndpZHRoKCksaGVpZ2h0OiQodS5ib3gpLmZpbmQoIi53MnVpLWdyaWQtYm9keTpmaXJzdCIpLmhlaWdodCgpLGxlZnQ6by5wYWdlWCx0b3A6by5wYWdlWSxvcGFjaXR5Oi44fSwwKSxjLm9mZnNldHM9W107Zm9yKHI9MCxsPXQubGVuZ3RoO3I8bDtyKyspYy5vZmZzZXRzLnB1c2goJCh0W3JdKS5vZmZzZXQoKS5sZWZ0KTt1LnRyaWdnZXIoJC5leHRlbmQoZSx7cGhhc2U6ImFmdGVyIn0pKX19fSwxNTApfWZ1bmN0aW9uIGgoZSl7aWYoYy5wcmVzc2VkKXt2YXIgdD1lLm9yaWdpbmFsRXZlbnQucGFnZVgsaT1lLm9yaWdpbmFsRXZlbnQucGFnZVkscz1jLm9mZnNldHMsbj0kKCIudzJ1aS1oZWFkOm5vdCgudzJ1aS1oZWFkLWxhc3QpIikud2lkdGgoKTtjLnRhcmdldEludD1NYXRoLm1heChjLm51bWJlclByZUNvbHVtbnNQcmVzZW50LGZ1bmN0aW9uKGUsdCxpKXt7aWYoZTw9dFswXSlyZXR1cm4gMDtpZihlPj10W3QubGVuZ3RoLTFdK2kpcmV0dXJuIHQubGVuZ3RoO2Zvcih2YXIgcz0wLG49dC5sZW5ndGg7czxuO3MrKyl7dmFyIGE9dFtzXSxyPXRbcysxXXx8dFtzXStpLGw9KHItdFtzXSkvMit0W3NdO2lmKGE8ZSYmZTw9bClyZXR1cm4gcztpZihsPGUmJmU8PXIpcmV0dXJuIHMrMX1yZXR1cm4gaW50ZXJzZWN0aW9ufX0odCxzLG4pKSxmdW5jdGlvbihlKXtjLm1hcmtlcnx8Yy5tYXJrZXJMZWZ0fHwoYy5tYXJrZXI9JCgnPGRpdiBjbGFzcz0iY29sLWludGVyc2VjdGlvbi1tYXJrZXIiPjxkaXYgY2xhc3M9InRvcC1tYXJrZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImJvdHRvbS1tYXJrZXIiPjwvZGl2PjwvZGl2PicpLGMubWFya2VyTGVmdD0kKCc8ZGl2IGNsYXNzPSJjb2wtaW50ZXJzZWN0aW9uLW1hcmtlciI+PGRpdiBjbGFzcz0idG9wLW1hcmtlciI+PC9kaXY+PGRpdiBjbGFzcz0iYm90dG9tLW1hcmtlciI+PC9kaXY+PC9kaXY+JykpO2MubGFzdEludCYmYy5sYXN0SW50PT09ZXx8KGMubGFzdEludD1lLGMubWFya2VyLnJlbW92ZSgpLGMubWFya2VyTGVmdC5yZW1vdmUoKSwkKCIudzJ1aS1oZWFkIikucmVtb3ZlQ2xhc3MoIncydWktY29sLWludGVyc2VjdGlvbiIpLGU+PWMuY29sdW1ucy5sZW5ndGg/KCQoYy5jb2x1bW5zW2MuY29sdW1ucy5sZW5ndGgtMV0pLmNoaWxkcmVuKCJkaXY6bGFzdCIpLmFwcGVuZChjLm1hcmtlci5hZGRDbGFzcygicmlnaHQiKS5yZW1vdmVDbGFzcygibGVmdCIpKSwkKGMuY29sdW1uc1tjLmNvbHVtbnMubGVuZ3RoLTFdKS5hZGRDbGFzcygidzJ1aS1jb2wtaW50ZXJzZWN0aW9uIikpOmU8PWMubnVtYmVyUHJlQ29sdW1uc1ByZXNlbnQ/KCQoYy5jb2x1bW5zW2MubnVtYmVyUHJlQ29sdW1uc1ByZXNlbnRdKS5wcmVwZW5kKGMubWFya2VyLmFkZENsYXNzKCJsZWZ0IikucmVtb3ZlQ2xhc3MoInJpZ2h0IikpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLCQoYy5jb2x1bW5zW2MubnVtYmVyUHJlQ29sdW1uc1ByZXNlbnRdKS5wcmV2KCkuYWRkQ2xhc3MoIncydWktY29sLWludGVyc2VjdGlvbiIpKTooJChjLmNvbHVtbnNbZV0pLmNoaWxkcmVuKCJkaXY6bGFzdCIpLnByZXBlbmQoYy5tYXJrZXIuYWRkQ2xhc3MoImxlZnQiKS5yZW1vdmVDbGFzcygicmlnaHQiKSksJChjLmNvbHVtbnNbZV0pLnByZXYoKS5jaGlsZHJlbigiZGl2Omxhc3QiKS5hcHBlbmQoYy5tYXJrZXJMZWZ0LmFkZENsYXNzKCJyaWdodCIpLnJlbW92ZUNsYXNzKCJsZWZ0IikpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLCQoYy5jb2x1bW5zW2UtMV0pLmFkZENsYXNzKCJ3MnVpLWNvbC1pbnRlcnNlY3Rpb24iKSkpfShjLnRhcmdldEludCksZnVuY3Rpb24oZSx0KXskKGMuZ2hvc3QpLmNzcyh7bGVmdDplLTEwLHRvcDp0LTEwfSl9KHQsaSl9fWZ1bmN0aW9uIHAoZSl7Yy5wcmVzc2VkPSExO3ZhciB0LGkscyxuLGEscj0kKCIudzJ1aS1ncmlkLWdob3N0Iik7aWYoITA9PT0odD11LnRyaWdnZXIoe3R5cGU6ImNvbHVtbkRyYWdFbmQiLHBoYXNlOiJiZWZvcmUiLG9yaWdpbmFsRXZlbnQ6ZSx0YXJnZXQ6Yy5jb2x1bW5IZWFkWzBdfSkpLmlzQ2FuY2VsbGVkKXJldHVybiExO3M9dS5jb2x1bW5zW2Mub3JpZ2luYWxQb3NdLG49dS5jb2x1bW5zLGE9JChjLmNvbHVtbnNbTWF0aC5taW4oYy5sYXN0SW50LGMuY29sdW1ucy5sZW5ndGgtMSldKSwoaT1jLmxhc3RJbnQ8Yy5jb2x1bW5zLmxlbmd0aD9wYXJzZUludChhLmF0dHIoImNvbCIpKTpuLmxlbmd0aCkhPT1jLm9yaWdpbmFsUG9zKzEmJmkhPT1jLm9yaWdpbmFsUG9zJiZhJiZhLmxlbmd0aD8oJChjLmdob3N0KS5hbmltYXRlKHt0b3A6JCh1LmJveCkub2Zmc2V0KCkudG9wLGxlZnQ6YS5vZmZzZXQoKS5sZWZ0LHdpZHRoOjAsaGVpZ2h0OjAsb3BhY2l0eTouMn0sMzAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKSxyLnJlbW92ZSgpfSksbi5zcGxpY2UoaSwwLCQuZXh0ZW5kKHt9LHMpKSxuLnNwbGljZShuLmluZGV4T2YocyksMSkpOigkKGMuZ2hvc3QpLnJlbW92ZSgpLHIucmVtb3ZlKCkpLCQoZG9jdW1lbnQpLm9mZigibW91c2V1cCIscCksJChkb2N1bWVudCkub2ZmKCJtb3VzZW1vdmUiLGgpLGMubWFya2VyJiZjLm1hcmtlci5yZW1vdmUoKSxjPXt9LHUucmVmcmVzaCgpLHUudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIiLHRhcmdldENvbHVtbk51bWJlcjppLTF9KSl9cmV0dXJuIGMubGFzdEludD1udWxsLGMucHJlc3NlZD0hMSxjLnRpbWVvdXQ9bnVsbCxjLmNvbHVtbkhlYWQ9bnVsbCwkKHUuYm94KS5vbigibW91c2Vkb3duIixpKSwkKHUuYm94KS5vbigibW91c2V1cCIsdCkse3JlbW92ZTpmdW5jdGlvbigpeyQodS5ib3gpLm9mZigibW91c2Vkb3duIixpKSwkKHUuYm94KS5vZmYoIm1vdXNldXAiLHQpLCQodS5ib3gpLmZpbmQoIi53MnVpLWhlYWQiKS5yZW1vdmVBdHRyKCJkcmFnZ2FibGUiKSx1Lmxhc3QuY29sdW1uRHJhZz0hMX19fSxjb2x1bW5Pbk9mZjpmdW5jdGlvbihlLHQpe3ZhciBpPSQoZS50YXJnZXQpLnBhcmVudHMoInRyIikuZmluZCgiLncydWktY29sdW1uLWNoZWNrIikscz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDp0aGlzLm5hbWUsdHlwZToiY29sdW1uT25PZmYiLGZpZWxkOnQsb3JpZ2luYWxFdmVudDplfSk7aWYoITAhPT1zLmlzQ2FuY2VsbGVkKXtmb3IodmFyIG49dGhpcyxhPSEoZS5zaGlmdEtleXx8ZS5tZXRhS2V5fHxlLmN0cmxLZXl8fCQoZS50YXJnZXQpLmhhc0NsYXNzKCJ3MnVpLWNvbHVtbi1jaGVjayIpKSxyPW4uZmluZCh7IncydWkuZXhwYW5kZWQiOiEwfSwhMCksbD0wO2w8ci5sZW5ndGg7bCsrKXt2YXIgbz10aGlzLnJlY29yZHNbbF0udzJ1aTtvJiYhQXJyYXkuaXNBcnJheShvLmNoaWxkcmVuKSYmKHRoaXMucmVjb3Jkc1tsXS53MnVpLmV4cGFuZGVkPSExKX1pZigibGluZS1udW1iZXJzIj09dCl0aGlzLnNob3cubGluZU51bWJlcnM9IXRoaXMuc2hvdy5saW5lTnVtYmVycyx0aGlzLnNob3cubGluZU51bWJlcnM/aS5hZGRDbGFzcygidzJ1aS1pY29uLWNoZWNrIikucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1lbXB0eSIpOmkuYWRkQ2xhc3MoIncydWktaWNvbi1lbXB0eSIpLnJlbW92ZUNsYXNzKCJ3MnVpLWljb24tY2hlY2siKSx0aGlzLnJlZnJlc2hCb2R5KCksdGhpcy5yZXNpemVSZWNvcmRzKCk7ZWxzZXt2YXIgZD10aGlzLmdldENvbHVtbih0KTtkLmhpZGRlbj8oaS5hZGRDbGFzcygidzJ1aS1pY29uLWNoZWNrIikucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1lbXB0eSIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnNob3dDb2x1bW4oZC5maWVsZCl9LGE/MDo1MCkpOihpLmFkZENsYXNzKCJ3MnVpLWljb24tZW1wdHkiKS5yZW1vdmVDbGFzcygidzJ1aS1pY29uLWNoZWNrIiksc2V0VGltZW91dChmdW5jdGlvbigpe24uaGlkZUNvbHVtbihkLmZpZWxkKX0sYT8wOjUwKSl9YSYmc2V0VGltZW91dChmdW5jdGlvbigpeyQoKS53Mm92ZXJsYXkoe25hbWU6bi5uYW1lKyJfdG9vbGJhciJ9KX0sNDApLHRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpfX0sc2Nyb2xsVG9Db2x1bW46ZnVuY3Rpb24oZSl7aWYobnVsbCE9ZSl7Zm9yKHZhciB0PTAsaT0hMSxzPTA7czx0aGlzLmNvbHVtbnMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5jb2x1bW5zW3NdO2lmKG4uZmllbGQ9PWUpe2k9ITA7YnJlYWt9aWYoIW4uZnJvemVuJiYhbi5oaWRkZW4pdCs9cGFyc2VJbnQobi5zaXplQ2FsY3VsYXRlZD9uLnNpemVDYWxjdWxhdGVkOm4uc2l6ZSl9aSYmKHRoaXMubGFzdC5zY3JvbGxMZWZ0PXQrMSx0aGlzLnNjcm9sbCgpKX19LGluaXRUb29sYmFyOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcztpZihudWxsPT10aGlzLnRvb2xiYXIucmVuZGVyKXt2YXIgZT10aGlzLnRvb2xiYXIuaXRlbXN8fFtdO2lmKHRoaXMudG9vbGJhci5pdGVtcz1bXSx0aGlzLnRvb2xiYXI9JCgpLncydG9vbGJhcigkLmV4dGVuZCghMCx7fSx0aGlzLnRvb2xiYXIse25hbWU6dGhpcy5uYW1lKyJfdG9vbGJhciIsb3duZXI6dGhpc30pKSx0aGlzLnNob3cudG9vbGJhclJlbG9hZCYmdGhpcy50b29sYmFyLml0ZW1zLnB1c2goJC5leHRlbmQoITAse30sdGhpcy5idXR0b25zLnJlbG9hZCkpLHRoaXMuc2hvdy50b29sYmFyQ29sdW1ucyYmdGhpcy50b29sYmFyLml0ZW1zLnB1c2goJC5leHRlbmQoITAse30sdGhpcy5idXR0b25zLmNvbHVtbnMpKSwodGhpcy5zaG93LnRvb2xiYXJSZWxvYWR8fHRoaXMuc2hvdy50b29sYmFyQ29sdW1ucykmJnRoaXMudG9vbGJhci5pdGVtcy5wdXNoKHt0eXBlOiJicmVhayIsaWQ6IncydWktYnJlYWswIn0pLHRoaXMuc2hvdy50b29sYmFySW5wdXQpe3ZhciB0PSc8ZGl2IGNsYXNzPSJ3MnVpLXRvb2xiYXItc2VhcmNoIj48dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dGJvZHk+PHRyPiAgICA8dGQ+Jyt0aGlzLmJ1dHRvbnMuc2VhcmNoLmh0bWwrJzwvdGQ+ICAgIDx0ZD4gICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsnX3NlYXJjaF9hbGwiIGNsYXNzPSJ3MnVpLXNlYXJjaC1hbGwiIHRhYmluZGV4PSItMSIgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIgYXV0b2NvbXBsZXRlPSJvZmYiIGF1dG9jb3JyZWN0PSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSInK3cydXRpbHMubGFuZyh0aGlzLmxhc3QubGFiZWwpKyciIHZhbHVlPSInK3RoaXMubGFzdC5zZWFyY2grJyIgICAgICAgICAgICBvbmZvY3VzPSJ2YXIgZ3JpZCA9IHcydWlbXCcnK3RoaXMubmFtZSsnXCddOyBjbGVhclRpbWVvdXQoZ3JpZC5sYXN0LmtiZF90aW1lcik7IGdyaWQuc2VhcmNoU2hvd0ZpZWxkcyh0cnVlKTsgZ3JpZC5zZWFyY2hDbG9zZSgpIiAgICAgICAgICAgIG9ua2V5ZG93bj0iaWYgKGV2ZW50LmtleUNvZGUgPT0gMTMgJmFtcDsmYW1wOyB3MnV0aWxzLmlzSUUpIHRoaXMub25jaGFuZ2UoKTsiICAgICAgICAgICAgb25jaGFuZ2U9IiAgICAgICAgICAgICAgICB2YXIgZ3JpZCA9IHcydWlbXCcnK3RoaXMubmFtZSsiJ107ICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy52YWx1ZTsgICAgICAgICAgICAgICAgIHZhciBzZWwgPSBqUXVlcnkodGhpcykuZGF0YSgnc2VsZWN0ZWQnKTsgICAgICAgICAgICAgICAgdmFyIGZsZCA9IGpRdWVyeSh0aGlzKS5kYXRhKCd3MmZpZWxkJyk7ICAgICAgICAgICAgICAgICBpZiAoZmxkKSB2YWwgPSBmbGQuY2xlYW4odmFsKTsgICAgICAgICAgICAgICAgaWYgKGZsZCAmYW1wOyZhbXA7IGZsZC50eXBlID09ICdsaXN0JyAmYW1wOyZhbXA7IHNlbCAmYW1wOyZhbXA7IHR5cGVvZiBzZWwuaWQgPT0gJ3VuZGVmaW5lZCcpIHsgICAgICAgICAgICAgICAgICAgZ3JpZC5zZWFyY2hSZXNldCgpOyAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICBncmlkLnNlYXJjaChncmlkLmxhc3QuZmllbGQsIHZhbCk7ICAgICAgICAgICAgICAgIH0gICAgICAgICAgICBcIi8+ICAgIDwvdGQ+ICAgIDx0ZD4gICAgICAgIDxkaXYgY2xhc3M9XCJ3MnVpLXNlYXJjaC1jbGVhclwiIGlkPVwiZ3JpZF8iK3RoaXMubmFtZSsnX3NlYXJjaENsZWFyIiAgICAgICAgICAgICAgIG9uY2xpY2s9InZhciBvYmogPSB3MnVpW1wnJyt0aGlzLm5hbWUrJ1wnXTsgb2JqLnNlYXJjaFJlc2V0KCk7IiBzdHlsZT0iZGlzcGxheTogbm9uZSIgICAgICAgID4mIzE2MDsmIzE2MDs8L2Rpdj4gICAgPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj4nO3RoaXMudG9vbGJhci5pdGVtcy5wdXNoKHt0eXBlOiJodG1sIixpZDoidzJ1aS1zZWFyY2giLGh0bWw6dH0pfWlmKHRoaXMuc2hvdy50b29sYmFyU2VhcmNoJiZ0aGlzLm11bHRpU2VhcmNoJiYwPHRoaXMuc2VhcmNoZXMubGVuZ3RoJiZ0aGlzLnRvb2xiYXIuaXRlbXMucHVzaCgkLmV4dGVuZCghMCx7fSx0aGlzLmJ1dHRvbnNbInNlYXJjaC1nbyJdKSksKHRoaXMuc2hvdy50b29sYmFyU2VhcmNofHx0aGlzLnNob3cudG9vbGJhcklucHV0KSYmKHRoaXMuc2hvdy50b29sYmFyQWRkfHx0aGlzLnNob3cudG9vbGJhckVkaXR8fHRoaXMuc2hvdy50b29sYmFyRGVsZXRlfHx0aGlzLnNob3cudG9vbGJhclNhdmUpJiZ0aGlzLnRvb2xiYXIuaXRlbXMucHVzaCh7dHlwZToiYnJlYWsiLGlkOiJ3MnVpLWJyZWFrMSJ9KSx0aGlzLnNob3cudG9vbGJhckFkZCYmQXJyYXkuaXNBcnJheShlKSYmLTE9PWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkfSkuaW5kZXhPZih0aGlzLmJ1dHRvbnMuYWRkLmlkKSYmdGhpcy50b29sYmFyLml0ZW1zLnB1c2goJC5leHRlbmQoITAse30sdGhpcy5idXR0b25zLmFkZCkpLHRoaXMuc2hvdy50b29sYmFyRWRpdCYmQXJyYXkuaXNBcnJheShlKSYmLTE9PWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkfSkuaW5kZXhPZih0aGlzLmJ1dHRvbnMuZWRpdC5pZCkmJnRoaXMudG9vbGJhci5pdGVtcy5wdXNoKCQuZXh0ZW5kKCEwLHt9LHRoaXMuYnV0dG9ucy5lZGl0KSksdGhpcy5zaG93LnRvb2xiYXJEZWxldGUmJkFycmF5LmlzQXJyYXkoZSkmJi0xPT1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZH0pLmluZGV4T2YodGhpcy5idXR0b25zLmRlbGV0ZS5pZCkmJnRoaXMudG9vbGJhci5pdGVtcy5wdXNoKCQuZXh0ZW5kKCEwLHt9LHRoaXMuYnV0dG9ucy5kZWxldGUpKSx0aGlzLnNob3cudG9vbGJhclNhdmUmJkFycmF5LmlzQXJyYXkoZSkmJi0xPT1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZH0pLmluZGV4T2YodGhpcy5idXR0b25zLnNhdmUuaWQpJiYoKHRoaXMuc2hvdy50b29sYmFyQWRkfHx0aGlzLnNob3cudG9vbGJhckRlbGV0ZXx8dGhpcy5zaG93LnRvb2xiYXJFZGl0KSYmdGhpcy50b29sYmFyLml0ZW1zLnB1c2goe3R5cGU6ImJyZWFrIixpZDoidzJ1aS1icmVhazIifSksdGhpcy50b29sYmFyLml0ZW1zLnB1c2goJC5leHRlbmQoITAse30sdGhpcy5idXR0b25zLnNhdmUpKSksZSlmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLnRvb2xiYXIuaXRlbXMucHVzaChlW2ldKTtyPXRoaXM7dGhpcy50b29sYmFyLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dmFyIHQ9ci50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJ0b29sYmFyIix0YXJnZXQ6ZS50YXJnZXQsb3JpZ2luYWxFdmVudDplfSk7aWYoITAhPT10LmlzQ2FuY2VsbGVkKXt2YXIgaT1lLnRhcmdldDtzd2l0Y2goaSl7Y2FzZSJ3MnVpLXJlbG9hZCI6aWYoITA9PT0ocz1yLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlbG9hZCIsdGFyZ2V0OnIubmFtZX0pKS5pc0NhbmNlbGxlZClyZXR1cm4hMTtyLnJlbG9hZCgpLHIudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpO2JyZWFrO2Nhc2UidzJ1aS1jb2x1bW4tb24tb2ZmIjpyLmluaXRDb2x1bW5Pbk9mZigpLHIuaW5pdFJlc2l6ZSgpLHIucmVzaXplKCk7YnJlYWs7Y2FzZSJ3MnVpLXNlYXJjaC1hZHZhbmNlZCI6dGhpcy5nZXQoaSkuY2hlY2tlZD9yLnNlYXJjaENsb3NlKCk6ci5zZWFyY2hPcGVuKCksci50b29sYmFyLnRvb2x0aXBIaWRlKCJ3MnVpLXNlYXJjaC1hZHZhbmNlZCIpLGUucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIncydWktYWRkIjppZighMD09PShzPXIudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdGFyZ2V0OnIubmFtZSx0eXBlOiJhZGQiLHJlY2lkOm51bGx9KSkuaXNDYW5jZWxsZWQpcmV0dXJuITE7ci50cmlnZ2VyKCQuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSksc2V0VGltZW91dChmdW5jdGlvbigpeyQoKS53MnRhZygpfSwyMCk7YnJlYWs7Y2FzZSJ3MnVpLWVkaXQiOnZhciBzLG49ci5nZXRTZWxlY3Rpb24oKSxhPW51bGw7aWYoMT09bi5sZW5ndGgmJihhPW5bMF0pLCEwPT09KHM9ci50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6ci5uYW1lLHR5cGU6ImVkaXQiLHJlY2lkOmF9KSkuaXNDYW5jZWxsZWQpcmV0dXJuITE7ci50cmlnZ2VyKCQuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSksc2V0VGltZW91dChmdW5jdGlvbigpeyQoKS53MnRhZygpfSwyMCk7YnJlYWs7Y2FzZSJ3MnVpLWRlbGV0ZSI6ci5kZWxldGUoKTticmVhaztjYXNlIncydWktc2F2ZSI6ci5zYXZlKCl9ci50cmlnZ2VyKCQuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSl9fSksdGhpcy50b29sYmFyLm9uKCJyZWZyZXNoIixmdW5jdGlvbihlKXtpZigidzJ1aS1zZWFyY2giPT1lLnRhcmdldCl7dmFyIHQ9ci5zZWFyY2hEYXRhO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyLmluaXRBbGxGaWVsZChyLmxhc3QuZmllbGQsMT09dC5sZW5ndGg/dFswXS52YWx1ZTpudWxsKX0sMSl9fSl9fSxpbml0UmVzaXplOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczskKHRoaXMuYm94KS5maW5kKCIudzJ1aS1yZXNpemVyIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKTplLmNhbmNlbEJ1YmJsZT0hMCxlLnByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCl9KS5vZmYoIm1vdXNlZG93biIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe2U9ZXx8d2luZG93LmV2ZW50LGEucmVzaXppbmc9ITAsYS5sYXN0LnRtcD17eDplLnNjcmVlblgseTplLnNjcmVlblksZ3g6ZS5zY3JlZW5YLGd5OmUuc2NyZWVuWSxjb2w6cGFyc2VJbnQoJCh0aGlzKS5hdHRyKCJuYW1lIikpfSxlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwLGUucHJldmVudERlZmF1bHQmJmUucHJldmVudERlZmF1bHQoKTtmb3IodmFyIHQ9MDt0PGEuY29sdW1ucy5sZW5ndGg7dCsrKWEuY29sdW1uc1t0XS5oaWRkZW58fChudWxsPT1hLmNvbHVtbnNbdF0uc2l6ZU9yaWdpbmFsJiYoYS5jb2x1bW5zW3RdLnNpemVPcmlnaW5hbD1hLmNvbHVtbnNbdF0uc2l6ZSksYS5jb2x1bW5zW3RdLnNpemU9YS5jb2x1bW5zW3RdLnNpemVDYWxjdWxhdGVkKTt2YXIgaT17cGhhc2U6ImJlZm9yZSIsdHlwZToiY29sdW1uUmVzaXplIix0YXJnZXQ6YS5uYW1lLGNvbHVtbjphLmxhc3QudG1wLmNvbCxmaWVsZDphLmNvbHVtbnNbYS5sYXN0LnRtcC5jb2xdLmZpZWxkfTtpPWEudHJpZ2dlcigkLmV4dGVuZChpLHtyZXNpemVCeTowLG9yaWdpbmFsRXZlbnQ6ZX0pKTskKGRvY3VtZW50KS5vbigibW91c2Vtb3ZlIiwiYm9keSIsZnVuY3Rpb24oZSl7MT09YS5yZXNpemluZyYmKGU9ZXx8d2luZG93LmV2ZW50LCEwIT09KGk9YS50cmlnZ2VyKCQuZXh0ZW5kKGkse3Jlc2l6ZUJ5OmUuc2NyZWVuWC1hLmxhc3QudG1wLmd4LG9yaWdpbmFsRXZlbnQ6ZX0pKSkuaXNDYW5jZWxsZWQ/KGEubGFzdC50bXAueD1lLnNjcmVlblgtYS5sYXN0LnRtcC54LGEubGFzdC50bXAueT1lLnNjcmVlblktYS5sYXN0LnRtcC55LGEuY29sdW1uc1thLmxhc3QudG1wLmNvbF0uc2l6ZT1wYXJzZUludChhLmNvbHVtbnNbYS5sYXN0LnRtcC5jb2xdLnNpemUpK2EubGFzdC50bXAueCsicHgiLGEucmVzaXplUmVjb3JkcygpLGEuc2Nyb2xsKCksYS5sYXN0LnRtcC54PWUuc2NyZWVuWCxhLmxhc3QudG1wLnk9ZS5zY3JlZW5ZKTppLmlzQ2FuY2VsbGVkPSExKX0pLCQoZG9jdW1lbnQpLm9uKCJtb3VzZXVwIiwiYm9keSIsZnVuY3Rpb24oZSl7ZGVsZXRlIGEucmVzaXppbmcsJChkb2N1bWVudCkub2ZmKCJtb3VzZW1vdmUiLCJib2R5IiksJChkb2N1bWVudCkub2ZmKCJtb3VzZXVwIiwiYm9keSIpLGEucmVzaXplUmVjb3JkcygpLGEuc2Nyb2xsKCksYS50cmlnZ2VyKCQuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciIsb3JpZ2luYWxFdmVudDplfSkpfSl9KS5vZmYoImRibGNsaWNrIikub24oImRibGNsaWNrIixmdW5jdGlvbihlKXt2YXIgdD1wYXJzZUludCgkKHRoaXMpLmF0dHIoIm5hbWUiKSksaT1hLmNvbHVtbnNbdF0scz0wO2lmKCExPT09aS5hdXRvUmVzaXplKXJldHVybiEwO2Uuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6ZS5jYW5jZWxCdWJibGU9ITAsZS5wcmV2ZW50RGVmYXVsdCYmZS5wcmV2ZW50RGVmYXVsdCgpLCQoJy53MnVpLWdyaWQtcmVjb3JkcyB0ZFtjb2w9IicrdCsnIl0gPiBkaXYnLGEuYm94KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRXaWR0aC10aGlzLnNjcm9sbFdpZHRoO2U8cyYmKHM9ZS0zKX0pO3ZhciBuPXtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2x1bW5BdXRvUmVzaXplIix0YXJnZXQ6YS5uYW1lLGNvbHVtbjppLGZpZWxkOmkuZmllbGR9OyEwIT09KG49YS50cmlnZ2VyKCQuZXh0ZW5kKG4se3Jlc2l6ZUJ5Ok1hdGguYWJzKHMpLG9yaWdpbmFsRXZlbnQ6ZX0pKSkuaXNDYW5jZWxsZWQ/KHM8MCYmKGkuc2l6ZT1NYXRoLm1pbihwYXJzZUludChpLnNpemUpK01hdGguYWJzKHMpLGkubWF4fHwxLzApKyJweCIsYS5yZXNpemVSZWNvcmRzKCksYS5yZXNpemVSZWNvcmRzKCksYS5zY3JvbGwoKSksYS50cmlnZ2VyKCQuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciIsb3JpZ2luYWxFdmVudDplfSkpKTpuLmlzQ2FuY2VsbGVkPSExfSkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBpPSQodCkucGFyZW50KCk7JCh0KS5jc3Moe2hlaWdodDppLmhlaWdodCgpLCJtYXJnaW4tbGVmdCI6aS53aWR0aCgpLTMrInB4In0pfSl9LHJlc2l6ZUJveGVzOmZ1bmN0aW9uKCl7dmFyIGU9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9oZWFkZXIiKSx0PSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfdG9vbGJhciIpLGk9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mc3VtbWFyeSIpLHM9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9zdW1tYXJ5Iiksbj0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2Zvb3RlciIpLGE9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9ib2R5Iik7dGhpcy5zaG93LmhlYWRlciYmZS5jc3Moe3RvcDoiMHB4IixsZWZ0OiIwcHgiLHJpZ2h0OiIwcHgifSksdGhpcy5zaG93LnRvb2xiYXImJnQuY3NzKHt0b3A6MCsodGhpcy5zaG93LmhlYWRlcj93MnV0aWxzLmdldFNpemUoZSwiaGVpZ2h0Iik6MCkrInB4IixsZWZ0OiIwcHgiLHJpZ2h0OiIwcHgifSksMDx0aGlzLnN1bW1hcnkubGVuZ3RoJiYoaS5jc3Moe2JvdHRvbTowKyh0aGlzLnNob3cuZm9vdGVyP3cydXRpbHMuZ2V0U2l6ZShuLCJoZWlnaHQiKTowKSsicHgifSkscy5jc3Moe2JvdHRvbTowKyh0aGlzLnNob3cuZm9vdGVyP3cydXRpbHMuZ2V0U2l6ZShuLCJoZWlnaHQiKTowKSsicHgiLHJpZ2h0OiIwcHgifSkpLHRoaXMuc2hvdy5mb290ZXImJm4uY3NzKHtib3R0b206IjBweCIsbGVmdDoiMHB4IixyaWdodDoiMHB4In0pLGEuY3NzKHt0b3A6MCsodGhpcy5zaG93LmhlYWRlcj93MnV0aWxzLmdldFNpemUoZSwiaGVpZ2h0Iik6MCkrKHRoaXMuc2hvdy50b29sYmFyP3cydXRpbHMuZ2V0U2l6ZSh0LCJoZWlnaHQiKTowKSsicHgiLGJvdHRvbTowKyh0aGlzLnNob3cuZm9vdGVyP3cydXRpbHMuZ2V0U2l6ZShuLCJoZWlnaHQiKTowKSsoMDx0aGlzLnN1bW1hcnkubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShzLCJoZWlnaHQiKTowKSsicHgiLGxlZnQ6IjBweCIscmlnaHQ6IjBweCJ9KX0scmVzaXplUmVjb3JkczpmdW5jdGlvbigpe3ZhciBhPXRoaXM7JCh0aGlzLmJveCkuZmluZCgiLncydWktZW1wdHktcmVjb3JkIikucmVtb3ZlKCk7dmFyIGU9JCh0aGlzLmJveCksdD0kKHRoaXMuYm94KS5maW5kKCI+IGRpdi53MnVpLWdyaWQtYm94IiksaT0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2hlYWRlciIpLHM9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl90b29sYmFyIiksbj0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3N1bW1hcnkiKSxyPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnN1bW1hcnkiKSxsPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZm9vdGVyIiksbz0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2JvZHkiKSxkPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfY29sdW1ucyIpLHU9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mY29sdW1ucyIpLGM9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNvcmRzIiksaD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNvcmRzIikscD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3Njcm9sbDEiKSxmPTgqU3RyaW5nKHRoaXMudG90YWwpLmxlbmd0aCsxMDtmPDM0JiYoZj0zNCksbnVsbCE9dGhpcy5saW5lTnVtYmVyV2lkdGgmJihmPXRoaXMubGluZU51bWJlcldpZHRoKTtmb3IodmFyIGc9ITEsbT0hMSx3PTAsdj0wO3Y8YS5jb2x1bW5zLmxlbmd0aDt2Kyspe2lmKCFhLmNvbHVtbnNbdl0uZnJvemVuJiYhYS5jb2x1bW5zW3ZdLmhpZGRlbil3Kz1wYXJzZUludChhLmNvbHVtbnNbdl0uc2l6ZUNhbGN1bGF0ZWQ/YS5jb2x1bW5zW3ZdLnNpemVDYWxjdWxhdGVkOmEuY29sdW1uc1t2XS5zaXplKX1pZihjLndpZHRoKCk8dyYmKGc9ITApLG8uaGVpZ2h0KCktZC5oZWlnaHQoKTwkKGMpLmZpbmQoIj50YWJsZSIpLmhlaWdodCgpKyhnP3cydXRpbHMuc2Nyb2xsQmFyU2l6ZSgpOjApJiYobT0hMCksdGhpcy5maXhlZEJvZHkpe3k9dC5oZWlnaHQoKS0odGhpcy5zaG93LmhlYWRlcj93MnV0aWxzLmdldFNpemUoaSwiaGVpZ2h0Iik6MCktKHRoaXMuc2hvdy50b29sYmFyP3cydXRpbHMuZ2V0U2l6ZShzLCJoZWlnaHQiKTowKS0oIm5vbmUiIT1uLmNzcygiZGlzcGxheSIpP3cydXRpbHMuZ2V0U2l6ZShuLCJoZWlnaHQiKTowKS0odGhpcy5zaG93LmZvb3Rlcj93MnV0aWxzLmdldFNpemUobCwiaGVpZ2h0Iik6MCk7by5jc3MoImhlaWdodCIseSl9ZWxzZXt2YXIgeT13MnV0aWxzLmdldFNpemUoZCwiaGVpZ2h0IikrdzJ1dGlscy5nZXRTaXplKCQoIiNncmlkXyIrYS5uYW1lKyJfcmVjb3JkcyB0YWJsZSIpLCJoZWlnaHQiKSsoZz93MnV0aWxzLnNjcm9sbEJhclNpemUoKTowKTthLmhlaWdodD15K3cydXRpbHMuZ2V0U2l6ZSh0LCIraGVpZ2h0IikrKGEuc2hvdy5oZWFkZXI/dzJ1dGlscy5nZXRTaXplKGksImhlaWdodCIpOjApKyhhLnNob3cudG9vbGJhcj93MnV0aWxzLmdldFNpemUocywiaGVpZ2h0Iik6MCkrKCJub25lIiE9bi5jc3MoImRpc3BsYXkiKT93MnV0aWxzLmdldFNpemUobiwiaGVpZ2h0Iik6MCkrKGEuc2hvdy5mb290ZXI/dzJ1dGlscy5nZXRTaXplKGwsImhlaWdodCIpOjApLHQuY3NzKCJoZWlnaHQiLGEuaGVpZ2h0KSxvLmNzcygiaGVpZ2h0Iix5KSxlLmNzcygiaGVpZ2h0Iix3MnV0aWxzLmdldFNpemUodCwiaGVpZ2h0IikrdzJ1dGlscy5nZXRTaXplKGUsIitoZWlnaHQiKSl9dmFyIGI9dGhpcy5yZWNvcmRzLmxlbmd0aCx4PSJvYmplY3QiIT10eXBlb2YgdGhpcy51cmw/dGhpcy51cmw6dGhpcy51cmwuZ2V0O2lmKDA9PXRoaXMuc2VhcmNoRGF0YS5sZW5ndGh8fHh8fChiPXRoaXMubGFzdC5zZWFyY2hJZHMubGVuZ3RoKSx0aGlzLmZpeGVkQm9keXx8KG09ITEpLGd8fG0/KGQuZmluZCgiPiB0YWJsZSA+IHRib2R5ID4gdHI6bnRoLWNoaWxkKDEpIHRkLncydWktaGVhZC1sYXN0IikuY3NzKCJ3aWR0aCIsdzJ1dGlscy5zY3JvbGxCYXJTaXplKCkpLnNob3coKSxjLmNzcyh7dG9wOigwPHRoaXMuY29sdW1uR3JvdXBzLmxlbmd0aCYmdGhpcy5zaG93LmNvbHVtbnM/MTowKSt3MnV0aWxzLmdldFNpemUoZCwiaGVpZ2h0IikrInB4IiwiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmciOiJ0b3VjaCIsIm92ZXJmbG93LXgiOmc/ImF1dG8iOiJoaWRkZW4iLCJvdmVyZmxvdy15IjptPyJhdXRvIjoiaGlkZGVuIn0pKTooZC5maW5kKCI+IHRhYmxlID4gdGJvZHkgPiB0cjpudGgtY2hpbGQoMSkgdGQudzJ1aS1oZWFkLWxhc3QiKS5oaWRlKCksYy5jc3Moe3RvcDooMDx0aGlzLmNvbHVtbkdyb3Vwcy5sZW5ndGgmJnRoaXMuc2hvdy5jb2x1bW5zPzE6MCkrdzJ1dGlscy5nZXRTaXplKGQsImhlaWdodCIpKyJweCIsb3ZlcmZsb3c6ImhpZGRlbiJ9KSwwPGMubGVuZ3RoJiYodGhpcy5sYXN0LnNjcm9sbFRvcD0wLHRoaXMubGFzdC5zY3JvbGxMZWZ0PTApKSxnPyhoLmNzcygibWFyZ2luLWJvdHRvbSIsdzJ1dGlscy5zY3JvbGxCYXJTaXplKCkpLHAuc2hvdygpKTooaC5jc3MoIm1hcmdpbi1ib3R0b20iLDApLHAuaGlkZSgpKSxoLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiIsdG9wOmMuY3NzKCJ0b3AiKX0pLHRoaXMuc2hvdy5lbXB0eVJlY29yZHMmJiFtKXt2YXIgXz1NYXRoLmZsb29yKGMuaGVpZ2h0KCkvdGhpcy5yZWNvcmRIZWlnaHQpLTEsaz0wO2lmKGNbMF0mJihrPWNbMF0uc2Nyb2xsSGVpZ2h0LV8qdGhpcy5yZWNvcmRIZWlnaHQpLGs+PXRoaXMucmVjb3JkSGVpZ2h0JiYoay09dGhpcy5yZWNvcmRIZWlnaHQsXysrKSx0aGlzLmZpeGVkQm9keSl7Zm9yKHZhciBDPWI7QzxfO0MrKylUKEMsdGhpcy5yZWNvcmRIZWlnaHQsdGhpcyk7VChfLGssdGhpcyl9fWZ1bmN0aW9uIFQoZSx0LGkpe3ZhciBzPSIiLG49IiIsYT0iIjtzKz0nPHRyIGNsYXNzPSInKyhlJTI/IncydWktZXZlbiI6IncydWktb2RkIikrJyB3MnVpLWVtcHR5LXJlY29yZCIgcmVjaWQ9Ii1ub25lLSIgc3R5bGU9ImhlaWdodDogJyt0KydweCI+JyxuKz0nPHRyIGNsYXNzPSInKyhlJTI/IncydWktZXZlbiI6IncydWktb2RkIikrJyB3MnVpLWVtcHR5LXJlY29yZCIgcmVjaWQ9Ii1ub25lLSIgc3R5bGU9ImhlaWdodDogJyt0KydweCI+JyxpLnNob3cubGluZU51bWJlcnMmJihzKz0nPHRkIGNsYXNzPSJ3MnVpLWNvbC1udW1iZXIiPjwvdGQ+JyksaS5zaG93LnNlbGVjdENvbHVtbiYmKHMrPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhIHcydWktY29sLXNlbGVjdCI+PC90ZD4nKSxpLnNob3cuZXhwYW5kQ29sdW1uJiYocys9Jzx0ZCBjbGFzcz0idzJ1aS1ncmlkLWRhdGEgdzJ1aS1jb2wtZXhwYW5kIj48L3RkPicpLG4rPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhLXNwYWNlciIgY29sPSJzdGFydCIgc3R5bGU9ImJvcmRlci1yaWdodDogMCI+PC90ZD4nLGkuc2hvdy5vcmRlckNvbHVtbiYmKG4rPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhIHcydWktY29sLW9yZGVyIiBjb2w9Im9yZGVyIj48L3RkPicpO2Zvcih2YXIgcj0wO3I8aS5jb2x1bW5zLmxlbmd0aDtyKyspe3ZhciBsPWkuY29sdW1uc1tyXTsobC5oaWRkZW58fHI8aS5sYXN0LmNvbFN0YXJ0fHxyPmkubGFzdC5jb2xFbmQpJiYhbC5mcm96ZW58fChhPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhIiAnKyhudWxsIT1sLmF0dHI/bC5hdHRyOiIiKSsnIGNvbD0iJytyKyciPjwvdGQ+JyxsLmZyb3plbj9zKz1hOm4rPWEpfXMrPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhLWxhc3QiPjwvdGQ+IDwvdHI+JyxuKz0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YS1sYXN0IiBjb2w9ImVuZCI+PC90ZD4gPC90cj4nLCQoIiNncmlkXyIraS5uYW1lKyJfZnJlY29yZHMgPiB0YWJsZSIpLmFwcGVuZChzKSwkKCIjZ3JpZF8iK2kubmFtZSsiX3JlY29yZHMgPiB0YWJsZSIpLmFwcGVuZChuKX1pZigwPG8ubGVuZ3RoKXt2YXIgUz1wYXJzZUludChvLndpZHRoKCkpLShtP3cydXRpbHMuc2Nyb2xsQmFyU2l6ZSgpOjApLSh0aGlzLnNob3cubGluZU51bWJlcnM/ZjowKS0odGhpcy5zaG93LnNlbGVjdENvbHVtbj8yNjowKS0odGhpcy5zaG93LmV4cGFuZENvbHVtbj8yNjowKS0xLE89UyxEPTAsej0hMTtmb3Iodj0wO3Y8dGhpcy5jb2x1bW5zLmxlbmd0aDt2KyspezA8KEU9dGhpcy5jb2x1bW5zW3ZdKS5ncmlkTWluV2lkdGgmJihFLmdyaWRNaW5XaWR0aD5PJiYhMCE9PUUuaGlkZGVuJiYoej1FLmhpZGRlbj0hMCksRS5ncmlkTWluV2lkdGg8TyYmITA9PT1FLmhpZGRlbiYmKHo9IShFLmhpZGRlbj0hMSkpKX1pZighMD09PXopcmV0dXJuIHZvaWQgdGhpcy5yZWZyZXNoKCk7Zm9yKHY9MDt2PHRoaXMuY29sdW1ucy5sZW5ndGg7disrKXsoRT10aGlzLmNvbHVtbnNbdl0pLmhpZGRlbnx8KCJweCI9PVN0cmluZyhFLnNpemUpLnN1YnN0cihTdHJpbmcoRS5zaXplKS5sZW5ndGgtMikudG9Mb3dlckNhc2UoKT8oUy09cGFyc2VGbG9hdChFLnNpemUpLHRoaXMuY29sdW1uc1t2XS5zaXplQ2FsY3VsYXRlZD1FLnNpemUsdGhpcy5jb2x1bW5zW3ZdLnNpemVUeXBlPSJweCIpOihEKz1wYXJzZUZsb2F0KEUuc2l6ZSksdGhpcy5jb2x1bW5zW3ZdLnNpemVUeXBlPSIlIixkZWxldGUgRS5zaXplQ29ycmVjdGVkKSl9aWYoMTAwIT1EJiYwPEQpZm9yKHY9MDt2PHRoaXMuY29sdW1ucy5sZW5ndGg7disrKXsoRT10aGlzLmNvbHVtbnNbdl0pLmhpZGRlbnx8IiUiPT1FLnNpemVUeXBlJiYoRS5zaXplQ29ycmVjdGVkPU1hdGgucm91bmQoMTAwKnBhcnNlRmxvYXQoRS5zaXplKSoxMDAvRCkvMTAwKyIlIil9Zm9yKHY9MDt2PHRoaXMuY29sdW1ucy5sZW5ndGg7disrKXsoRT10aGlzLmNvbHVtbnNbdl0pLmhpZGRlbnx8IiUiPT1FLnNpemVUeXBlJiYobnVsbCE9dGhpcy5jb2x1bW5zW3ZdLnNpemVDb3JyZWN0ZWQ/dGhpcy5jb2x1bW5zW3ZdLnNpemVDYWxjdWxhdGVkPU1hdGguZmxvb3IoUypwYXJzZUZsb2F0KEUuc2l6ZUNvcnJlY3RlZCkvMTAwKS0xKyJweCI6dGhpcy5jb2x1bW5zW3ZdLnNpemVDYWxjdWxhdGVkPU1hdGguZmxvb3IoUypwYXJzZUZsb2F0KEUuc2l6ZSkvMTAwKS0xKyJweCIpfX12YXIgST0wO2Zvcih2PTA7djx0aGlzLmNvbHVtbnMubGVuZ3RoO3YrKyl7KEU9dGhpcy5jb2x1bW5zW3ZdKS5oaWRkZW58fChudWxsPT1FLm1pbiYmKEUubWluPTIwKSxwYXJzZUludChFLnNpemVDYWxjdWxhdGVkKTxwYXJzZUludChFLm1pbikmJihFLnNpemVDYWxjdWxhdGVkPUUubWluKyJweCIpLHBhcnNlSW50KEUuc2l6ZUNhbGN1bGF0ZWQpPnBhcnNlSW50KEUubWF4KSYmKEUuc2l6ZUNhbGN1bGF0ZWQ9RS5tYXgrInB4IiksSSs9cGFyc2VJbnQoRS5zaXplQ2FsY3VsYXRlZCkpfXZhciBqPXBhcnNlSW50KE8pLXBhcnNlSW50KEkpO2lmKDA8aiYmMDxEKWZvcih2PTA7Oyl7dmFyIEU7aWYobnVsbCE9KEU9dGhpcy5jb2x1bW5zW3ZdKSlpZihFLmhpZGRlbnx8InB4Ij09RS5zaXplVHlwZSl2Kys7ZWxzZXtpZihFLnNpemVDYWxjdWxhdGVkPXBhcnNlSW50KEUuc2l6ZUNhbGN1bGF0ZWQpKzErInB4IiwwPT09LS1qKWJyZWFrO3YrK31lbHNlIHY9MH1lbHNlIDA8aiYmZC5maW5kKCI+IHRhYmxlID4gdGJvZHkgPiB0cjpudGgtY2hpbGQoMSkgdGQudzJ1aS1oZWFkLWxhc3QiKS5jc3MoIndpZHRoIix3MnV0aWxzLnNjcm9sbEJhclNpemUoKSkuc2hvdygpO3ZhciBSPTE7dGhpcy5zaG93LmxpbmVOdW1iZXJzJiYoUis9ZiksdGhpcy5zaG93LnNlbGVjdENvbHVtbiYmKFIrPTI2KSx0aGlzLnNob3cuZXhwYW5kQ29sdW1uJiYoUis9MjYpO2Zvcih2PTA7djx0aGlzLmNvbHVtbnMubGVuZ3RoO3YrKyl0aGlzLmNvbHVtbnNbdl0uaGlkZGVufHx0aGlzLmNvbHVtbnNbdl0uZnJvemVuJiYoUis9cGFyc2VJbnQodGhpcy5jb2x1bW5zW3ZdLnNpemVDYWxjdWxhdGVkKSk7dS5jc3MoIndpZHRoIixSKSxoLmNzcygid2lkdGgiLFIpLHIuY3NzKCJ3aWR0aCIsUikscC5jc3MoIndpZHRoIixSKSxkLmNzcygibGVmdCIsUiksYy5jc3MoImxlZnQiLFIpLG4uY3NzKCJsZWZ0IixSKSxkLmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyOm50aC1jaGlsZCgxKSB0ZCIpLmFkZCh1LmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyOm50aC1jaGlsZCgxKSB0ZCIpKS5lYWNoKGZ1bmN0aW9uKGUsdCl7JCh0KS5oYXNDbGFzcygidzJ1aS1jb2wtbnVtYmVyIikmJiQodCkuY3NzKCJ3aWR0aCIsZik7dmFyIGk9JCh0KS5hdHRyKCJjb2wiKTtpZihudWxsIT1pKXtpZigic3RhcnQiPT1pKXtmb3IodmFyIHM9MCxuPTA7bjxhLmxhc3QuY29sU3RhcnQ7bisrKSFhLmNvbHVtbnNbbl18fGEuY29sdW1uc1tuXS5mcm96ZW58fGEuY29sdW1uc1tuXS5oaWRkZW58fChzKz1wYXJzZUludChhLmNvbHVtbnNbbl0uc2l6ZUNhbGN1bGF0ZWQpKTskKHQpLmNzcygid2lkdGgiLHMrInB4Iil9YS5jb2x1bW5zW2ldJiYkKHQpLmNzcygid2lkdGgiLGEuY29sdW1uc1tpXS5zaXplQ2FsY3VsYXRlZCl9aWYoJCh0KS5oYXNDbGFzcygidzJ1aS1oZWFkLWxhc3QiKSlpZihhLmxhc3QuY29sRW5kKzE8YS5jb2x1bW5zLmxlbmd0aCl7Zm9yKHM9MCxuPWEubGFzdC5jb2xFbmQrMTtuPGEuY29sdW1ucy5sZW5ndGg7bisrKSFhLmNvbHVtbnNbbl18fGEuY29sdW1uc1tuXS5mcm96ZW58fGEuY29sdW1uc1tuXS5oaWRkZW58fChzKz1wYXJzZUludChhLmNvbHVtbnNbbl0uc2l6ZUNhbGN1bGF0ZWQpKTskKHQpLmNzcygid2lkdGgiLHMrInB4Iil9ZWxzZSAkKHQpLmNzcygid2lkdGgiLHcydXRpbHMuc2Nyb2xsQmFyU2l6ZSgpKygwPGomJjA9PT1EP2o6MCkrInB4Iil9KSwzPT1kLmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyIikubGVuZ3RoJiZkLmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyOm50aC1jaGlsZCgxKSB0ZCIpLmFkZCh1LmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyOm50aC1jaGlsZCgxKSB0ZCIpKS5odG1sKCIiKS5jc3Moe2hlaWdodDoiMHB4Iixib3JkZXI6IjBweCIscGFkZGluZzoiMHB4IixtYXJnaW46IjBweCJ9KSxjLmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyOm50aC1jaGlsZCgxKSB0ZCIpLmFkZChoLmZpbmQoIj4gdGFibGUgPiB0Ym9keSA+IHRyOm50aC1jaGlsZCgxKSB0ZCIpKS5lYWNoKGZ1bmN0aW9uKGUsdCl7JCh0KS5oYXNDbGFzcygidzJ1aS1jb2wtbnVtYmVyIikmJiQodCkuY3NzKCJ3aWR0aCIsZik7dmFyIGk9JCh0KS5hdHRyKCJjb2wiKTtpZihudWxsIT1pKXtpZigic3RhcnQiPT1pKXtmb3IodmFyIHM9MCxuPTA7bjxhLmxhc3QuY29sU3RhcnQ7bisrKSFhLmNvbHVtbnNbbl18fGEuY29sdW1uc1tuXS5mcm96ZW58fGEuY29sdW1uc1tuXS5oaWRkZW58fChzKz1wYXJzZUludChhLmNvbHVtbnNbbl0uc2l6ZUNhbGN1bGF0ZWQpKTskKHQpLmNzcygid2lkdGgiLHMrInB4Iil9YS5jb2x1bW5zW2ldJiYkKHQpLmNzcygid2lkdGgiLGEuY29sdW1uc1tpXS5zaXplQ2FsY3VsYXRlZCl9aWYoJCh0KS5oYXNDbGFzcygidzJ1aS1ncmlkLWRhdGEtbGFzdCIpJiYwPT09JCh0KS5wYXJlbnRzKCIudzJ1aS1ncmlkLWZyZWNvcmRzIikubGVuZ3RoKWlmKGEubGFzdC5jb2xFbmQrMTxhLmNvbHVtbnMubGVuZ3RoKXtmb3Iocz0wLG49YS5sYXN0LmNvbEVuZCsxO248YS5jb2x1bW5zLmxlbmd0aDtuKyspIWEuY29sdW1uc1tuXXx8YS5jb2x1bW5zW25dLmZyb3plbnx8YS5jb2x1bW5zW25dLmhpZGRlbnx8KHMrPXBhcnNlSW50KGEuY29sdW1uc1tuXS5zaXplQ2FsY3VsYXRlZCkpOyQodCkuY3NzKCJ3aWR0aCIscysicHgiKX1lbHNlICQodCkuY3NzKCJ3aWR0aCIsKDA8aiYmMD09PUQ/ajowKSsicHgiKX0pLG4uZmluZCgiPiB0YWJsZSA+IHRib2R5ID4gdHI6bnRoLWNoaWxkKDEpIHRkIikuYWRkKHIuZmluZCgiPiB0YWJsZSA+IHRib2R5ID4gdHI6bnRoLWNoaWxkKDEpIHRkIikpLmVhY2goZnVuY3Rpb24oZSx0KXskKHQpLmhhc0NsYXNzKCJ3MnVpLWNvbC1udW1iZXIiKSYmJCh0KS5jc3MoIndpZHRoIixmKTt2YXIgaT0kKHQpLmF0dHIoImNvbCIpO2lmKG51bGwhPWkpe2lmKCJzdGFydCI9PWkpe2Zvcih2YXIgcz0wLG49MDtuPGEubGFzdC5jb2xTdGFydDtuKyspIWEuY29sdW1uc1tuXXx8YS5jb2x1bW5zW25dLmZyb3plbnx8YS5jb2x1bW5zW25dLmhpZGRlbnx8KHMrPXBhcnNlSW50KGEuY29sdW1uc1tuXS5zaXplQ2FsY3VsYXRlZCkpOyQodCkuY3NzKCJ3aWR0aCIscysicHgiKX1hLmNvbHVtbnNbaV0mJiQodCkuY3NzKCJ3aWR0aCIsYS5jb2x1bW5zW2ldLnNpemVDYWxjdWxhdGVkKX0kKHQpLmhhc0NsYXNzKCJ3MnVpLWdyaWQtZGF0YS1sYXN0IikmJjA9PT0kKHQpLnBhcmVudHMoIi53MnVpLWdyaWQtZnJlY29yZHMiKS5sZW5ndGgmJiQodCkuY3NzKCJ3aWR0aCIsdzJ1dGlscy5zY3JvbGxCYXJTaXplKCkrKDA8aiYmMD09PUQ/ajowKSsicHgiKX0pLHRoaXMuaW5pdFJlc2l6ZSgpLHRoaXMucmVmcmVzaFJhbmdlcygpLCh0aGlzLmxhc3Quc2Nyb2xsVG9wfHx0aGlzLmxhc3Quc2Nyb2xsTGVmdCkmJjA8Yy5sZW5ndGgmJihkLnByb3AoInNjcm9sbExlZnQiLHRoaXMubGFzdC5zY3JvbGxMZWZ0KSxjLnByb3AoInNjcm9sbFRvcCIsdGhpcy5sYXN0LnNjcm9sbFRvcCksYy5wcm9wKCJzY3JvbGxMZWZ0Iix0aGlzLmxhc3Quc2Nyb2xsTGVmdCkpfSxnZXRTZWFyY2hlc0hUTUw6ZnVuY3Rpb24oKXtmb3IodmFyIGw9dGhpcyxlPSc8dGFibGUgY2VsbHNwYWNpbmc9IjAiPjx0Ym9keT4nLHQ9ITEsaT0wO2k8dGhpcy5zZWFyY2hlcy5sZW5ndGg7aSsrKXt2YXIgcz10aGlzLnNlYXJjaGVzW2ldO2lmKHMudHlwZT1TdHJpbmcocy50eXBlKS50b0xvd2VyQ2FzZSgpLCFzLmhpZGRlbil7dmFyIG49IiI7MD09dCYmKG49JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idzJ1aS1idG4gY2xvc2UtYnRuIiBvbmNsaWNrPSJvYmogPSB3MnVpW1wnJyt0aGlzLm5hbWUrIiddOyBpZiAob2JqKSBvYmouc2VhcmNoQ2xvc2UoKVwiPlg8L2J1dHRvbj4iLHQ9ITApLG51bGw9PXMuaW5UYWcmJihzLmluVGFnPSIiKSxudWxsPT1zLm91dFRhZyYmKHMub3V0VGFnPSIiKSxudWxsPT1zLnN0eWxlJiYocy5zdHlsZT0iIiksbnVsbD09cy50eXBlJiYocy50eXBlPSJ0ZXh0IiksbnVsbD09cy5sYWJlbCYmbnVsbCE9cy5jYXB0aW9uJiYoY29uc29sZS5sb2coIk5PVElDRTogZ3JpZCBzZWFyY2guY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHNlYXJjaC5sYWJlbC4gU2VhcmNoIC0+IixzKSxzLmxhYmVsPXMuY2FwdGlvbik7dmFyIGE9JzxzZWxlY3QgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrIl9vcGVyYXRvcl8iK2krJyIgY2xhc3M9IncydWktaW5wdXQiICAgIG9uY2hhbmdlPSJ3MnVpW1wnJyt0aGlzLm5hbWUrIiddLmluaXRPcGVyYXRvcih0aGlzLCAiK2krJykiPicrbyhzLnR5cGUscy5vcGVyYXRvcnMpKyI8L3NlbGVjdD4iO3N3aXRjaChlKz0nPHRyPiAgICA8dGQgY2xhc3M9ImNsb3NlLWJ0biI+JytuKyc8L3RkPiAgICA8dGQgY2xhc3M9ImNhcHRpb24iPicrKHMubGFiZWx8fCIiKSsnPC90ZD4gICAgPHRkIGNsYXNzPSJvcGVyYXRvciI+JythKyc8L3RkPiAgICA8dGQgY2xhc3M9InZhbHVlIj4nLHMudHlwZSl7Y2FzZSJ0ZXh0IjpjYXNlImFscGhhbnVtZXJpYyI6Y2FzZSJoZXgiOmNhc2UiY29sb3IiOmNhc2UibGlzdCI6Y2FzZSJjb21ibyI6Y2FzZSJlbnVtIjp2YXIgcj0id2lkdGg6IDI1MHB4OyI7LTEhPVsiaGV4IiwiY29sb3IiXS5pbmRleE9mKHMudHlwZSkmJihyPSJ3aWR0aDogOTBweDsiKSxlKz0nPGlucHV0IHJlbD0ic2VhcmNoIiB0eXBlPSJ0ZXh0IiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2ZpZWxkXyIraSsnIiBuYW1lPSInK3MuZmllbGQrJyIgICAgY2xhc3M9IncydWktaW5wdXQiIHN0eWxlPSInK3Ircy5zdHlsZSsnIiAnK3MuaW5UYWcrIi8+IjticmVhaztjYXNlImludCI6Y2FzZSJmbG9hdCI6Y2FzZSJtb25leSI6Y2FzZSJjdXJyZW5jeSI6Y2FzZSJwZXJjZW50IjpjYXNlImRhdGUiOmNhc2UidGltZSI6Y2FzZSJkYXRldGltZSI6cj0id2lkdGg6IDkwcHgiOyJkYXRldGltZSI9PXMudHlwZSYmKHI9IndpZHRoOiAxNDBweDsiKSxlKz0nPGlucHV0IHJlbD0ic2VhcmNoIiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzJ1aS1pbnB1dCIgc3R5bGU9IicrcitzLnN0eWxlKyciIGlkPSJncmlkXycrdGhpcy5uYW1lKyJfZmllbGRfIitpKyciIG5hbWU9Iicrcy5maWVsZCsnIiAnK3MuaW5UYWcrJy8+PHNwYW4gaWQ9ImdyaWRfJyt0aGlzLm5hbWUrIl9yYW5nZV8iK2krJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPiYjMTYwOy0mIzE2MDsmIzE2MDs8aW5wdXQgcmVsPSJzZWFyY2giIHR5cGU9InRleHQiIGNsYXNzPSJ3MnVpLWlucHV0IiBzdHlsZT0iJytyK3Muc3R5bGUrJyIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrIl9maWVsZDJfIitpKyciIG5hbWU9Iicrcy5maWVsZCsnIiAnK3MuaW5UYWcrIi8+PC9zcGFuPiI7YnJlYWs7Y2FzZSJzZWxlY3QiOmUrPSc8c2VsZWN0IHJlbD0ic2VhcmNoIiBjbGFzcz0idzJ1aS1pbnB1dCIgc3R5bGU9Iicrcy5zdHlsZSsnIiBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2ZpZWxkXyIraSsnIiAgbmFtZT0iJytzLmZpZWxkKyciICcrcy5pblRhZysiPjwvc2VsZWN0PiJ9ZSs9cy5vdXRUYWcrIiAgICA8L3RkPjwvdHI+In19cmV0dXJuIGUrPSc8dHI+ICAgIDx0ZCBjb2xzcGFuPSI0IiBjbGFzcz0iYWN0aW9ucyI+ICAgICAgICA8ZGl2PiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3MnVpLWJ0biIgb25jbGljaz0ib2JqID0gdzJ1aVtcJycrdGhpcy5uYW1lKyInXTsgaWYgKG9iaikgeyBvYmouc2VhcmNoUmVzZXQoKTsgfVwiPiIrdzJ1dGlscy5sYW5nKCJSZXNldCIpKyc8L2J1dHRvbj4gICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idzJ1aS1idG4gdzJ1aS1idG4tYmx1ZSIgb25jbGljaz0ib2JqID0gdzJ1aVtcJycrdGhpcy5uYW1lKyInXTsgaWYgKG9iaikgeyBvYmouc2VhcmNoKCk7IH1cIj4iK3cydXRpbHMubGFuZygiU2VhcmNoIikrIjwvYnV0dG9uPiAgICAgICAgPC9kaXY+ICAgIDwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+IjtmdW5jdGlvbiBvKGUsdCl7dmFyIGk9IiIscz1sLm9wZXJhdG9yc1tsLm9wZXJhdG9yc01hcFtlXV07bnVsbCE9dCYmKHM9dCk7Zm9yKHZhciBuPTA7bjxzLmxlbmd0aDtuKyspe3ZhciBhPXNbbl0scj1hO0FycmF5LmlzQXJyYXkoYSk/KHI9YVsxXSxhPWFbMF0sbnVsbD09ciYmKHI9YSkpOiQuaXNQbGFpbk9iamVjdChhKSYmKHI9YS50ZXh0LGE9YS5vcGVyKSxpKz0nPG9wdGlvbiB2YWx1ZT0iJythKyciPicrdzJ1dGlscy5sYW5nKHIpKyI8L29wdGlvbj5cbiJ9cmV0dXJuIGl9fSxpbml0T3BlcmF0b3I6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnNlYXJjaGVzW3RdLHM9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yYW5nZV8iK3QpLG49JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9maWVsZF8iK3QpLGE9bi5wYXJlbnQoKS5maW5kKCJzcGFuIGlucHV0Iik7c3dpdGNoKG4uc2hvdygpLHMuaGlkZSgpLCQoZSkudmFsKCkpe2Nhc2UiYmV0d2VlbiI6cy5zaG93KCksYS53MmZpZWxkKGkudHlwZSxpLm9wdGlvbnMpO2JyZWFrO2Nhc2Uibm90IG51bGwiOmNhc2UibnVsbCI6bi5oaWRlKCksbi52YWwoIjEiKSxuLmNoYW5nZSgpfX0saW5pdFNlYXJjaGVzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT0wO2U8dGhpcy5zZWFyY2hlcy5sZW5ndGg7ZSsrKXt2YXIgaT10aGlzLnNlYXJjaGVzW2VdLHM9dGhpcy5nZXRTZWFyY2hEYXRhKGkuZmllbGQpO2kudHlwZT1TdHJpbmcoaS50eXBlKS50b0xvd2VyQ2FzZSgpO3ZhciBuPXQub3BlcmF0b3JzW3Qub3BlcmF0b3JzTWFwW2kudHlwZV1dO2kub3BlcmF0b3JzJiYobj1pLm9wZXJhdG9ycyk7dmFyIGE9blswXTskLmlzUGxhaW5PYmplY3QoYSkmJihhPWEub3BlciksIm9iamVjdCIhPXR5cGVvZiBpLm9wdGlvbnMmJihpLm9wdGlvbnM9e30pLCJ0ZXh0Ij09aS50eXBlJiYoYT10aGlzLnRleHRTZWFyY2gpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbD1uW3JdO2lmKCQuaXNQbGFpbk9iamVjdChsKSYmKGw9bC5vcGVyKSxpLm9wZXJhdG9yPT1sKXthPWkub3BlcmF0b3I7YnJlYWt9fXN3aXRjaChpLnR5cGUpe2Nhc2UidGV4dCI6Y2FzZSJhbHBoYW51bWVyaWMiOiQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZmllbGRfIitlKS53MmZpZWxkKGkudHlwZSxpLm9wdGlvbnMpO2JyZWFrO2Nhc2UiaW50IjpjYXNlImZsb2F0IjpjYXNlImhleCI6Y2FzZSJjb2xvciI6Y2FzZSJtb25leSI6Y2FzZSJjdXJyZW5jeSI6Y2FzZSJwZXJjZW50IjpjYXNlImRhdGUiOmNhc2UidGltZSI6Y2FzZSJkYXRldGltZSI6JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9maWVsZF8iK2UpLncyZmllbGQoaS50eXBlLGkub3B0aW9ucyksJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9maWVsZDJfIitlKS53MmZpZWxkKGkudHlwZSxpLm9wdGlvbnMpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIjZ3JpZF8iK3QubmFtZSsiX2ZpZWxkXyIrZSkua2V5ZG93bigpLCQoIiNncmlkXyIrdC5uYW1lKyJfZmllbGQyXyIrZSkua2V5ZG93bigpfSwxKTticmVhaztjYXNlImxpc3QiOmNhc2UiY29tYm8iOmNhc2UiZW51bSI6dmFyIG89aS5vcHRpb25zOyJsaXN0Ij09aS50eXBlJiYoby5zZWxlY3RlZD17fSksImVudW0iPT1pLnR5cGUmJihvLnNlbGVjdGVkPVtdKSxzJiYoby5zZWxlY3RlZD1zLnZhbHVlKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZpZWxkXyIrZSkudzJmaWVsZChpLnR5cGUsJC5leHRlbmQoe29wZW5PbkZvY3VzOiEwfSxvKSkscyYmbnVsbCE9cy50ZXh0JiYkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZpZWxkXyIrZSkuZGF0YSgic2VsZWN0ZWQiLHtpZDpzLnZhbHVlLHRleHQ6cy50ZXh0fSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmZvcihvPSc8b3B0aW9uIHZhbHVlPSIiPi0tPC9vcHRpb24+JyxyPTA7cjxpLm9wdGlvbnMuaXRlbXMubGVuZ3RoO3IrKyl7dmFyIGQ9aS5vcHRpb25zLml0ZW1zW3JdO2lmKCQuaXNQbGFpbk9iamVjdChpLm9wdGlvbnMuaXRlbXNbcl0pKXt2YXIgdT1kLmlkLGM9ZC50ZXh0O251bGw9PXUmJm51bGwhPWQudmFsdWUmJih1PWQudmFsdWUpLG51bGw9PWMmJm51bGwhPWQudGV4dCYmKGM9ZC50ZXh0KSxudWxsPT11JiYodT0iIiksbys9JzxvcHRpb24gdmFsdWU9IicrdSsnIj4nK2MrIjwvb3B0aW9uPiJ9ZWxzZSBvKz0nPG9wdGlvbiB2YWx1ZT0iJytkKyciPicrZCsiPC9vcHRpb24+In0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZpZWxkXyIrZSkuaHRtbChvKX1udWxsIT1zPygiaW50Ij09cy50eXBlJiYtMSE9WyJpbiIsIm5vdCBpbiJdLmluZGV4T2Yocy5vcGVyYXRvcikmJiQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZmllbGRfIitlKS53MmZpZWxkKCJjbGVhciIpLnZhbChzLnZhbHVlKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX29wZXJhdG9yXyIrZSkudmFsKHMub3BlcmF0b3IpLnRyaWdnZXIoImNoYW5nZSIpLCQuaXNBcnJheShzLnZhbHVlKT8tMSE9WyJpbiIsIm5vdCBpbiJdLmluZGV4T2Yocy5vcGVyYXRvcik/JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9maWVsZF8iK2UpLnZhbChzLnZhbHVlKS50cmlnZ2VyKCJjaGFuZ2UiKTooJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9maWVsZF8iK2UpLnZhbChzLnZhbHVlWzBdKS50cmlnZ2VyKCJjaGFuZ2UiKSwkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZpZWxkMl8iK2UpLnZhbChzLnZhbHVlWzFdKS50cmlnZ2VyKCJjaGFuZ2UiKSk6bnVsbCE9cy52YWx1ZSYmJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9maWVsZF8iK2UpLnZhbChzLnZhbHVlKS50cmlnZ2VyKCJjaGFuZ2UiKSk6JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9vcGVyYXRvcl8iK2UpLnZhbChhKS50cmlnZ2VyKCJjaGFuZ2UiKX0kKCIjdzJ1aS1vdmVybGF5LSIrdGhpcy5uYW1lKyItc2VhcmNoT3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzICpbcmVsPXNlYXJjaF0iKS5vbigia2V5cHJlc3MiLGZ1bmN0aW9uKGUpezEzPT1lLmtleUNvZGUmJih0LnNlYXJjaCgpLCQoKS53Mm92ZXJsYXkoe25hbWU6dC5uYW1lKyItc2VhcmNoT3ZlcmxheSJ9KSl9KX0sZ2V0Q29sdW1uc0hUTUw6ZnVuY3Rpb24oKXt2YXIgcD10aGlzLGU9IiIsdD0iIjtpZih0aGlzLnNob3cuY29sdW1uSGVhZGVycylpZigwPHRoaXMuY29sdW1uR3JvdXBzLmxlbmd0aCl7dmFyIGk9cighMCkscz1mdW5jdGlvbigpe3ZhciBlPSI8dHI+Iix0PSI8dHI+IixpPSIiLHM9cC5jb2x1bW5Hcm91cHMubGVuZ3RoLTE7bnVsbD09cC5jb2x1bW5Hcm91cHNbc10udGV4dCYmbnVsbCE9cC5jb2x1bW5Hcm91cHNbc10uY2FwdGlvbiYmKGNvbnNvbGUubG9nKCJOT1RJQ0U6IGdyaWQgY29sdW1uR3JvdXAuY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGNvbHVtbkdyb3VwLnRleHQuIEdyb3VwIC0+ICIscC5jb2x1bW5Hcm91cHNbc10pLHAuY29sdW1uR3JvdXBzW3NdLnRleHQ9cC5jb2x1bW5Hcm91cHNbc10uY2FwdGlvbik7IiIhPXAuY29sdW1uR3JvdXBzW3AuY29sdW1uR3JvdXBzLmxlbmd0aC0xXS50ZXh0JiZwLmNvbHVtbkdyb3Vwcy5wdXNoKHt0ZXh0OiIifSk7cC5zaG93LmxpbmVOdW1iZXJzJiYoZSs9Jzx0ZCBjbGFzcz0idzJ1aS1oZWFkIHcydWktY29sLW51bWJlciI+ICAgIDxkaXYgc3R5bGU9ImhlaWdodDogJysocC5yZWNvcmRIZWlnaHQrMSkrJ3B4Ij4mIzE2MDs8L2Rpdj48L3RkPicpO3Auc2hvdy5zZWxlY3RDb2x1bW4mJihlKz0nPHRkIGNsYXNzPSJ3MnVpLWhlYWQgdzJ1aS1jb2wtc2VsZWN0Ij4gICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAyNXB4Ij4mIzE2MDs8L2Rpdj48L3RkPicpO3Auc2hvdy5leHBhbmRDb2x1bW4mJihlKz0nPHRkIGNsYXNzPSJ3MnVpLWhlYWQgdzJ1aS1jb2wtZXhwYW5kIj4gICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAyNXB4Ij4mIzE2MDs8L2Rpdj48L3RkPicpO3ZhciBuPTA7dCs9Jzx0ZCBpZD0iZ3JpZF8nK3AubmFtZSsnX2NvbHVtbl9zdGFydCIgY2xhc3M9IncydWktaGVhZCIgY29sPSJzdGFydCIgc3R5bGU9ImJvcmRlci1yaWdodDogMCI+PC90ZD4nLHAuc2hvdy5vcmRlckNvbHVtbiYmKHQrPSc8dGQgY2xhc3M9IncydWktaGVhZCB3MnVpLWNvbC1vcmRlciIgY29sPSJvcmRlciI+ICAgIDxkaXYgc3R5bGU9ImhlaWdodDogMjVweCI+JiMxNjA7PC9kaXY+PC90ZD4nKTtmb3IodmFyIGE9MDthPHAuY29sdW1uR3JvdXBzLmxlbmd0aDthKyspe3ZhciByPXAuY29sdW1uR3JvdXBzW2FdLGw9cC5jb2x1bW5zW25dO251bGwhPXIuY29sc3BhbiYmKHIuc3Bhbj1yLmNvbHNwYW4pLG51bGwhPXIuc3BhbiYmci5zcGFuPT1wYXJzZUludChyLnNwYW4pfHwoci5zcGFuPTEpLG51bGw9PWwudGV4dCYmbnVsbCE9bC5jYXB0aW9uJiYoY29uc29sZS5sb2coIk5PVElDRTogZ3JpZCBjb2x1bW4uY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGNvbHVtbi50ZXh0LiBDb2x1bW4gLT4iLGwpLGwudGV4dD1sLmNhcHRpb24pO2Zvcih2YXIgbz0wLGQ9bjtkPG4rci5zcGFuO2QrKylwLmNvbHVtbnNbZF0mJiFwLmNvbHVtbnNbZF0uaGlkZGVuJiZvKys7aWYoYT09cC5jb2x1bW5Hcm91cHMubGVuZ3RoLTEmJm8rKyxvPD0wKTtlbHNlIGlmKCEwPT09ci5tYXN0ZXIpe2Zvcih2YXIgdT0iIixjPTA7YzxwLnNvcnREYXRhLmxlbmd0aDtjKyspcC5zb3J0RGF0YVtjXS5maWVsZD09bC5maWVsZCYmKCJhc2MiPT09KHAuc29ydERhdGFbY10uZGlyZWN0aW9ufHwiIikudG9Mb3dlckNhc2UoKSYmKHU9IncydWktc29ydC11cCIpLCJkZXNjIj09PShwLnNvcnREYXRhW2NdLmRpcmVjdGlvbnx8IiIpLnRvTG93ZXJDYXNlKCkmJih1PSJ3MnVpLXNvcnQtZG93biIpKTt2YXIgaD0iIjshMSE9PWwucmVzaXphYmxlJiYoaD0nPGRpdiBjbGFzcz0idzJ1aS1yZXNpemVyIiBuYW1lPSInK24rJyI+PC9kaXY+JyksaT0nPHRkIGlkPSJncmlkXycrcC5uYW1lKyJfY29sdW1uXyIrbisnIiBjbGFzcz0idzJ1aS1oZWFkICcrdSsnIiBjb2w9IicrbisnIiAgICAgcm93c3Bhbj0iMiIgY29sc3Bhbj0iJytvKyciICAgICBvbmNvbnRleHRtZW51ID0gIncydWlbXCcnK3AubmFtZSsiJ10uY29udGV4dE1lbnUobnVsbCwgIituKycsIGV2ZW50KTsiICAgIG9uY2xpY2s9IncydWlbXCcnK3AubmFtZSsiJ10uY29sdW1uQ2xpY2soJyIrbC5maWVsZCsiJywgZXZlbnQpO1wiICAgIG9uZGJsY2xpY2s9XCJ3MnVpWyciK3AubmFtZSsiJ10uY29sdW1uRGJsQ2xpY2soJyIrbC5maWVsZCsiJywgZXZlbnQpO1wiPiIraCsnICAgIDxkaXYgY2xhc3M9IncydWktY29sLWdyb3VwIHcydWktY29sLWhlYWRlciAnKyh1PyJ3MnVpLWNvbC1zb3J0ZWQiOiIiKSsnIj4gICAgICAgIDxkaXYgY2xhc3M9IicrdSsnIj48L2Rpdj4nKyhsLnRleHQ/bC50ZXh0OiImIzE2MDsiKSsiICAgIDwvZGl2PjwvdGQ+IixsJiZsLmZyb3plbj9lKz1pOnQrPWl9ZWxzZSBpPSc8dGQgaWQ9ImdyaWRfJytwLm5hbWUrIl9jb2x1bW5fIituKyciIGNsYXNzPSJ3MnVpLWhlYWQiIGNvbD0iJytuKyciICAgICAgICAgY29sc3Bhbj0iJytvKyciPiAgICA8ZGl2IGNsYXNzPSJ3MnVpLWNvbC1ncm91cCI+Jysoci50ZXh0P3IudGV4dDoiJiMxNjA7IikrIiAgICA8L2Rpdj48L3RkPiIsbCYmbC5mcm96ZW4/ZSs9aTp0Kz1pO24rPXIuc3Bhbn1yZXR1cm4gZSs9Ijx0ZD48L3RkPjwvdHI+Iix0Kz0nPHRkIGlkPSJncmlkXycrcC5uYW1lKydfY29sdW1uX2VuZCIgY2xhc3M9IncydWktaGVhZCIgY29sPSJlbmQiPjwvdGQ+PC90cj4nLFtlLHRdfSgpLG49cighMSk7ZT1pWzBdK3NbMF0rblswXSx0PWlbMV0rc1sxXStuWzFdfWVsc2V7dmFyIGE9cighMCk7ZT1hWzBdLHQ9YVsxXX1yZXR1cm5bZSx0XTtmdW5jdGlvbiByKGUpe3ZhciB0PSI8dHI+IixpPSI8dHI+IjtwLnNob3cubGluZU51bWJlcnMmJih0Kz0nPHRkIGNsYXNzPSJ3MnVpLWhlYWQgdzJ1aS1jb2wtbnVtYmVyIiAgICAgICAgb25jbGljaz0idzJ1aVtcJycrcC5uYW1lKyInXS5jb2x1bW5DbGljaygnbGluZS1udW1iZXInLCBldmVudCk7XCIgICAgICAgb25kYmxjbGljaz1cIncydWlbJyIrcC5uYW1lKyInXS5jb2x1bW5EYmxDbGljaygnbGluZS1udW1iZXInLCBldmVudCk7XCI+ICAgIDxkaXY+IzwvZGl2PjwvdGQ+IikscC5zaG93LnNlbGVjdENvbHVtbiYmKHQrPSc8dGQgY2xhc3M9IncydWktaGVhZCB3MnVpLWNvbC1zZWxlY3QiICAgICAgIG9uY2xpY2s9ImlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBlbHNlIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7Ij4gICAgPGRpdj4gICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImdyaWRfJytwLm5hbWUrJ19jaGVja19hbGwiIHRhYmluZGV4PSItMSIgICAgICAgICAgICBzdHlsZT0iJysoMD09cC5tdWx0aVNlbGVjdD8iZGlzcGxheTogbm9uZTsiOiIiKSsnIiAgICAgICAgICAgIG9ubW91c2Vkb3duPSJpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZWxzZSBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyIgICAgICAgICAgICBvbmNsaWNrPSJ2YXIgZ3JpZCA9IHcydWlbXCcnK3AubmFtZSsiJ107ICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tlZCkgZ3JpZC5zZWxlY3RBbGwoKTsgZWxzZSBncmlkLnNlbGVjdE5vbmUoKTsgICAgICAgICAgICAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZWxzZSBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChncmlkLmxhc3Qua2JkX3RpbWVyKTsgLyoga2VlcCBmb2N1cyAqLyAgICAgICAgICAgIFwiLz4gICAgPC9kaXY+PC90ZD4iKSxwLnNob3cuZXhwYW5kQ29sdW1uJiYodCs9Jzx0ZCBjbGFzcz0idzJ1aS1oZWFkIHcydWktY29sLWV4cGFuZCI+ICAgIDxkaXY+JiMxNjA7PC9kaXY+PC90ZD4nKTt2YXIgcyxuPTAsYT0wO2krPSc8dGQgaWQ9ImdyaWRfJytwLm5hbWUrJ19jb2x1bW5fc3RhcnQiIGNsYXNzPSJ3MnVpLWhlYWQiIGNvbD0ic3RhcnQiIHN0eWxlPSJib3JkZXItcmlnaHQ6IDAiPjwvdGQ+JyxwLnNob3cub3JkZXJDb2x1bW4mJihpKz0nPHRkIGNsYXNzPSJ3MnVpLWhlYWQgdzJ1aS1jb2wtb3JkZXIiIGNvbD0ib3JkZXIiPiAgICA8ZGl2PiYjMTYwOzwvZGl2PjwvdGQ+Jyk7Zm9yKHZhciByPTA7cjxwLmNvbHVtbnMubGVuZ3RoO3IrKyl7dmFyIGw9cC5jb2x1bW5zW3JdO2lmKG51bGw9PWwudGV4dCYmbnVsbCE9bC5jYXB0aW9uJiYoY29uc29sZS5sb2coIk5PVElDRTogZ3JpZCBjb2x1bW4uY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGNvbHVtbi50ZXh0LiBDb2x1bW4gLT4gIixsKSxsLnRleHQ9bC5jYXB0aW9uKSxudWxsPT1sLnNpemUmJihsLnNpemU9IjEwMCUiKSxyPT1hJiYoYSs9KHM9cC5jb2x1bW5Hcm91cHNbbisrXXx8e30pLnNwYW4pLCghKHI8cC5sYXN0LmNvbFN0YXJ0fHxyPnAubGFzdC5jb2xFbmQpfHxsLmZyb3plbikmJiFsLmhpZGRlbiYmKCEwIT09cy5tYXN0ZXJ8fGUpKXt2YXIgbz1wLmdldENvbHVtbkNlbGxIVE1MKHIpO2wmJmwuZnJvemVuP3QrPW86aSs9b319cmV0dXJuIHQrPSc8dGQgY2xhc3M9IncydWktaGVhZCB3MnVpLWhlYWQtbGFzdCI+PGRpdj4mIzE2MDs8L2Rpdj48L3RkPicsaSs9Jzx0ZCBjbGFzcz0idzJ1aS1oZWFkIHcydWktaGVhZC1sYXN0IiBjb2w9ImVuZCI+PGRpdj4mIzE2MDs8L2Rpdj48L3RkPicsW3QrPSI8L3RyPiIsaSs9IjwvdHI+Il19fSxnZXRDb2x1bW5DZWxsSFRNTDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbHVtbnNbZV07aWYobnVsbD09dClyZXR1cm4iIjtmb3IodmFyIGk9IXRoaXMucmVvcmRlckNvbHVtbnN8fHRoaXMuY29sdW1uR3JvdXBzJiZ0aGlzLmNvbHVtbkdyb3Vwcy5sZW5ndGg/IiI6IiB3MnVpLXJlb3JkZXItY29scy1oZWFkICIscz0iIixuPTA7bjx0aGlzLnNvcnREYXRhLmxlbmd0aDtuKyspdGhpcy5zb3J0RGF0YVtuXS5maWVsZD09dC5maWVsZCYmKCJhc2MiPT09KHRoaXMuc29ydERhdGFbbl0uZGlyZWN0aW9ufHwiIikudG9Mb3dlckNhc2UoKSYmKHM9IncydWktc29ydC11cCIpLCJkZXNjIj09PSh0aGlzLnNvcnREYXRhW25dLmRpcmVjdGlvbnx8IiIpLnRvTG93ZXJDYXNlKCkmJihzPSJ3MnVpLXNvcnQtZG93biIpKTt2YXIgYT10aGlzLmxhc3Quc2VsZWN0aW9uLmNvbHVtbnMscj0hMTtmb3IodmFyIGwgaW4gYSlmb3Iobj0wO248YVtsXS5sZW5ndGg7bisrKWFbbF1bbl09PWUmJihyPSEwKTtyZXR1cm4nPHRkIGlkPSJncmlkXycrdGhpcy5uYW1lKyJfY29sdW1uXyIrZSsnIiBjb2w9IicrZSsnIiBjbGFzcz0idzJ1aS1oZWFkICcrcytpKyciICcrKCJub3JtYWwiPT10aGlzLmNvbHVtblRvb2x0aXAmJnQudG9vbHRpcD8ndGl0bGU9IicrdC50b29sdGlwKyciICc6IiIpKyIgICAgb25tb3VzZW92ZXIgPSBcIncydWlbJyIrdGhpcy5uYW1lKyInXS5jb2x1bW5Ub29sdGlwU2hvdygnIitlKyInLCBldmVudCk7XCIgICAgb25tb3VzZW91dCAgPSBcIncydWlbJyIrdGhpcy5uYW1lKyInXS5jb2x1bW5Ub29sdGlwSGlkZSgnIitlKyInLCBldmVudCk7XCIgICAgb25jb250ZXh0bWVudSA9IFwidzJ1aVsnIit0aGlzLm5hbWUrIiddLmNvbnRleHRNZW51KG51bGwsICIrZSsnLCBldmVudCk7IiAgICBvbmNsaWNrPSJ3MnVpW1wnJyt0aGlzLm5hbWUrIiddLmNvbHVtbkNsaWNrKCciK3QuZmllbGQrIicsIGV2ZW50KTtcIiAgICBvbmRibGNsaWNrPVwidzJ1aVsnIit0aGlzLm5hbWUrIiddLmNvbHVtbkRibENsaWNrKCciK3QuZmllbGQrIicsIGV2ZW50KTtcIj4iKyghMSE9PXQucmVzaXphYmxlPyc8ZGl2IGNsYXNzPSJ3MnVpLXJlc2l6ZXIiIG5hbWU9IicrZSsnIj48L2Rpdj4nOiIiKSsnICAgIDxkaXYgY2xhc3M9IncydWktY29sLWhlYWRlciAnKyhzPyJ3MnVpLWNvbC1zb3J0ZWQiOiIiKSsiICIrKHI/IncydWktY29sLXNlbGVjdGVkIjoiIikrJyI+ICAgICAgICA8ZGl2IGNsYXNzPSInK3MrJyI+PC9kaXY+JysodC50ZXh0P3QudGV4dDoiJiMxNjA7IikrIiAgICA8L2Rpdj48L3RkPiJ9LGNvbHVtblRvb2x0aXBTaG93OmZ1bmN0aW9uKGUpe2lmKCJub3JtYWwiIT10aGlzLmNvbHVtblRvb2x0aXApe3ZhciB0PSQodGhpcy5ib3gpLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfY29sdW1uXyIrZSksaT10aGlzLmNvbHVtbnNbZV0scz10aGlzLmNvbHVtblRvb2x0aXA7dC5wcm9wKCJfbW91c2Vfb3ZlciIsITApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXshMD09PXQucHJvcCgiX21vdXNlX292ZXIiKSYmITAhPT10LnByb3AoIl9tb3VzZV90b29sdGlwIikmJih0LnByb3AoIl9tb3VzZV90b29sdGlwIiwhMCksdC53MnRhZyhpLnRvb2x0aXAse3Bvc2l0aW9uOnN9KSl9LDEpfX0sY29sdW1uVG9vbHRpcEhpZGU6ZnVuY3Rpb24oZSl7aWYoIm5vcm1hbCIhPXRoaXMuY29sdW1uVG9vbHRpcCl7dmFyIHQ9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9jb2x1bW5fIitlKTt0aGlzLmNvbHVtbnNbZV07dC5yZW1vdmVQcm9wKCJfbW91c2Vfb3ZlciIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXshMCE9PXQucHJvcCgiX21vdXNlX292ZXIiKSYmITA9PT10LnByb3AoIl9tb3VzZV90b29sdGlwIikmJih0LnJlbW92ZVByb3AoIl9tb3VzZV90b29sdGlwIiksdC53MnRhZygpKX0sMSl9fSxnZXRSZWNvcmRzSFRNTDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucmVjb3Jkcy5sZW5ndGgsdD0ib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldDswPT10aGlzLnNlYXJjaERhdGEubGVuZ3RofHx0fHwoZT10aGlzLmxhc3Quc2VhcmNoSWRzLmxlbmd0aCksZT50aGlzLnZzX3N0YXJ0P3RoaXMubGFzdC5zaG93X2V4dHJhPXRoaXMudnNfZXh0cmE6dGhpcy5sYXN0LnNob3dfZXh0cmE9dGhpcy52c19zdGFydDt2YXIgaT0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY29yZHMiKSxzPU1hdGguZmxvb3IoKGkuaGVpZ2h0KCl8fDApL3RoaXMucmVjb3JkSGVpZ2h0KSt0aGlzLmxhc3Quc2hvd19leHRyYSsxOyghdGhpcy5maXhlZEJvZHl8fGU8cykmJihzPWUpO3ZhciBuPXRoaXMuZ2V0UmVjb3JkSFRNTCgtMSwwKSxhPSI8dGFibGU+PHRib2R5PiIrblswXSxyPSI8dGFibGU+PHRib2R5PiIrblsxXTthKz0nPHRyIGlkPSJncmlkXycrdGhpcy5uYW1lKydfZnJlY190b3AiIGxpbmU9InRvcCIgc3R5bGU9ImhlaWdodDogMHB4Ij4gICAgPHRkIGNvbHNwYW49IjIwMDAiPjwvdGQ+PC90cj4nLHIrPSc8dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ19yZWNfdG9wIiBsaW5lPSJ0b3AiIHN0eWxlPSJoZWlnaHQ6IDBweCI+ICAgIDx0ZCBjb2xzcGFuPSIyMDAwIj48L3RkPjwvdHI+Jztmb3IodmFyIGw9MDtsPHM7bCsrKWErPShuPXRoaXMuZ2V0UmVjb3JkSFRNTChsLGwrMSkpWzBdLHIrPW5bMV07dmFyIG89KE1hdGgubWF4KGUsdGhpcy50b3RhbCktcykqdGhpcy5yZWNvcmRIZWlnaHQ7cmV0dXJuIGErPSc8dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ19mcmVjX2JvdHRvbSIgcmVjPSJib3R0b20iIGxpbmU9ImJvdHRvbSIgc3R5bGU9ImhlaWdodDogJytvKydweCI+ICAgIDx0ZCBjb2xzcGFuPSIyMDAwIiBzdHlsZT0iYm9yZGVyOiAwIj48L3RkPjwvdHI+PHRyIGlkPSJncmlkXycrdGhpcy5uYW1lKydfZnJlY19tb3JlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgdmlzaWJpbGl0eTogaGlkZGVuIj4gICAgPHRkIGNvbHNwYW49IjIwMDAiIGNsYXNzPSJ3MnVpLWxvYWQtbW9yZSI+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4nLHIrPSc8dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ19yZWNfYm90dG9tIiByZWM9ImJvdHRvbSIgbGluZT0iYm90dG9tIiBzdHlsZT0iaGVpZ2h0OiAnK28rJ3B4Ij4gICAgPHRkIGNvbHNwYW49IjIwMDAiIHN0eWxlPSJib3JkZXI6IDAiPjwvdGQ+PC90cj48dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrJ19yZWNfbW9yZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPiAgICA8dGQgY29sc3Bhbj0iMjAwMCIgY2xhc3M9IncydWktbG9hZC1tb3JlIj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPicsdGhpcy5sYXN0LnJhbmdlX3N0YXJ0PTAsdGhpcy5sYXN0LnJhbmdlX2VuZD1zLFthLHJdfSxnZXRTdW1tYXJ5SFRNTDpmdW5jdGlvbigpe2lmKDAhPT10aGlzLnN1bW1hcnkubGVuZ3RoKXtmb3IodmFyIGU9dGhpcy5nZXRSZWNvcmRIVE1MKC0xLDApLHQ9Ijx0YWJsZT48dGJvZHk+IitlWzBdLGk9Ijx0YWJsZT48dGJvZHk+IitlWzFdLHM9MDtzPHRoaXMuc3VtbWFyeS5sZW5ndGg7cysrKXQrPShlPXRoaXMuZ2V0UmVjb3JkSFRNTChzLHMrMSwhMCkpWzBdLGkrPWVbMV07cmV0dXJuW3QrPSI8L3Rib2R5PjwvdGFibGU+IixpKz0iPC90Ym9keT48L3RhYmxlPiJdfX0sc2Nyb2xsOmZ1bmN0aW9uKGUpeyhuZXcgRGF0ZSkuZ2V0VGltZSgpO3ZhciBhPXRoaXMsdD0ib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldCxpPSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjb3JkcyIpLHM9JCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjb3JkcyIpO2lmKGUpe3ZhciBuPWUudGFyZ2V0LnNjcm9sbFRvcCxyPWUudGFyZ2V0LnNjcm9sbExlZnQ7YS5sYXN0LnNjcm9sbFRvcD1uLGEubGFzdC5zY3JvbGxMZWZ0PXIsJCgiI2dyaWRfIithLm5hbWUrIl9jb2x1bW5zIilbMF0uc2Nyb2xsTGVmdD1yLCQoIiNncmlkXyIrYS5uYW1lKyJfc3VtbWFyeSIpWzBdLnNjcm9sbExlZnQ9cixzWzBdLnNjcm9sbFRvcD1ufXRoaXMubGFzdC5idWJibGVFbCYmKCQodGhpcy5sYXN0LmJ1YmJsZUVsKS53MnRhZygpLHRoaXMubGFzdC5idWJibGVFbD1udWxsKTt2YXIgbD1udWxsLG89bnVsbDtpZihhLmRpc2FibGVDVlN8fDA8YS5jb2x1bW5Hcm91cHMubGVuZ3RoKWw9MCxvPWEuY29sdW1ucy5sZW5ndGgtMTtlbHNle2Zvcih2YXIgZD1pLndpZHRoKCksdT0wLGM9MDtjPGEuY29sdW1ucy5sZW5ndGg7YysrKWlmKCFhLmNvbHVtbnNbY10uZnJvemVuJiYhYS5jb2x1bW5zW2NdLmhpZGRlbil7dmFyIGg9cGFyc2VJbnQoYS5jb2x1bW5zW2NdLnNpemVDYWxjdWxhdGVkP2EuY29sdW1uc1tjXS5zaXplQ2FsY3VsYXRlZDphLmNvbHVtbnNbY10uc2l6ZSk7dStoKzMwPmEubGFzdC5zY3JvbGxMZWZ0JiZudWxsPT1sJiYobD1jKSx1K2gtMzA+YS5sYXN0LnNjcm9sbExlZnQrZCYmbnVsbD09byYmKG89YyksdSs9aH1udWxsPT1vJiYobz1hLmNvbHVtbnMubGVuZ3RoLTEpfWlmKG51bGwhPWwmJihsPDAmJihsPTApLG88MCYmKG89MCksbD09byYmKDA8bD9sLS06bysrKSxsIT1hLmxhc3QuY29sU3RhcnR8fG8hPWEubGFzdC5jb2xFbmQpKXt2YXIgcD0kKGEuYm94KSxmPU1hdGguYWJzKGwtYS5sYXN0LmNvbFN0YXJ0KSxnPU1hdGguYWJzKG8tYS5sYXN0LmNvbEVuZCk7aWYoZjw1JiZnPDUpe3ZhciBtPXAuZmluZCgiLncydWktZ3JpZC1jb2x1bW5zICNncmlkXyIrYS5uYW1lKyJfY29sdW1uX3N0YXJ0Iiksdz1wLmZpbmQoIi53MnVpLWdyaWQtY29sdW1ucyAudzJ1aS1oZWFkLWxhc3QiKSx2PXAuZmluZCgiI2dyaWRfIithLm5hbWUrIl9yZWNvcmRzIC53MnVpLWdyaWQtZGF0YS1zcGFjZXIiKSx5PXAuZmluZCgiI2dyaWRfIithLm5hbWUrIl9yZWNvcmRzIC53MnVpLWdyaWQtZGF0YS1sYXN0IiksYj1wLmZpbmQoIiNncmlkXyIrYS5uYW1lKyJfc3VtbWFyeSAudzJ1aS1ncmlkLWRhdGEtc3BhY2VyIikseD1wLmZpbmQoIiNncmlkXyIrYS5uYW1lKyJfc3VtbWFyeSAudzJ1aS1ncmlkLWRhdGEtbGFzdCIpO2lmKGw+YS5sYXN0LmNvbFN0YXJ0KWZvcihjPWEubGFzdC5jb2xTdGFydDtjPGw7YysrKXAuZmluZCgiI2dyaWRfIithLm5hbWUrIl9jb2x1bW5zICNncmlkXyIrYS5uYW1lKyJfY29sdW1uXyIrYykucmVtb3ZlKCkscC5maW5kKCIjZ3JpZF8iK2EubmFtZSsnX3JlY29yZHMgdGRbY29sPSInK2MrJyJdJykucmVtb3ZlKCkscC5maW5kKCIjZ3JpZF8iK2EubmFtZSsnX3N1bW1hcnkgdGRbY29sPSInK2MrJyJdJykucmVtb3ZlKCk7aWYobzxhLmxhc3QuY29sRW5kKWZvcihjPWEubGFzdC5jb2xFbmQ7bzxjO2MtLSlwLmZpbmQoIiNncmlkXyIrYS5uYW1lKyJfY29sdW1ucyAjZ3JpZF8iK2EubmFtZSsiX2NvbHVtbl8iK2MpLnJlbW92ZSgpLHAuZmluZCgiI2dyaWRfIithLm5hbWUrJ19yZWNvcmRzIHRkW2NvbD0iJytjKyciXScpLnJlbW92ZSgpLHAuZmluZCgiI2dyaWRfIithLm5hbWUrJ19zdW1tYXJ5IHRkW2NvbD0iJytjKyciXScpLnJlbW92ZSgpO2lmKGw8YS5sYXN0LmNvbFN0YXJ0KWZvcihjPWEubGFzdC5jb2xTdGFydC0xO2w8PWM7Yy0tKWEuY29sdW1uc1tjXSYmKGEuY29sdW1uc1tjXS5mcm96ZW58fGEuY29sdW1uc1tjXS5oaWRkZW4pfHwobS5hZnRlcihhLmdldENvbHVtbkNlbGxIVE1MKGMpKSx2LmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgaT0kKHQpLnBhcmVudCgpLmF0dHIoImluZGV4Iikscz0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YSIgY29sPSInK2MrJyIgc3R5bGU9ImhlaWdodDogMHB4Ij48L3RkPic7bnVsbCE9aSYmKHM9YS5nZXRDZWxsSFRNTChwYXJzZUludChpKSxjLCExKSksJCh0KS5hZnRlcihzKX0pLGIuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBpPSQodCkucGFyZW50KCkuYXR0cigiaW5kZXgiKSxzPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhIiBjb2w9IicrYysnIiBzdHlsZT0iaGVpZ2h0OiAwcHgiPjwvdGQ+JztudWxsIT1pJiYocz1hLmdldENlbGxIVE1MKHBhcnNlSW50KGkpLGMsITApKSwkKHQpLmFmdGVyKHMpfSkpO2lmKG8+YS5sYXN0LmNvbEVuZClmb3IoYz1hLmxhc3QuY29sRW5kKzE7Yzw9bztjKyspYS5jb2x1bW5zW2NdJiYoYS5jb2x1bW5zW2NdLmZyb3plbnx8YS5jb2x1bW5zW2NdLmhpZGRlbil8fCh3LmJlZm9yZShhLmdldENvbHVtbkNlbGxIVE1MKGMpKSx5LmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgaT0kKHQpLnBhcmVudCgpLmF0dHIoImluZGV4Iikscz0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YSIgY29sPSInK2MrJyIgc3R5bGU9ImhlaWdodDogMHB4Ij48L3RkPic7bnVsbCE9aSYmKHM9YS5nZXRDZWxsSFRNTChwYXJzZUludChpKSxjLCExKSksJCh0KS5iZWZvcmUocyl9KSx4LmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgaT0kKHQpLnBhcmVudCgpLmF0dHIoImluZGV4Iil8fC0xLHM9YS5nZXRDZWxsSFRNTChwYXJzZUludChpKSxjLCEwKTskKHQpLmJlZm9yZShzKX0pKTthLmxhc3QuY29sU3RhcnQ9bCxhLmxhc3QuY29sRW5kPW8sYS5yZXNpemVSZWNvcmRzKCl9ZWxzZXthLmxhc3QuY29sU3RhcnQ9bCxhLmxhc3QuY29sRW5kPW87dmFyIF89dGhpcy5nZXRDb2x1bW5zSFRNTCgpLGs9dGhpcy5nZXRSZWNvcmRzSFRNTCgpLEM9dGhpcy5nZXRTdW1tYXJ5SFRNTCgpLFQ9cC5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2NvbHVtbnMiKSxTPXAuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNvcmRzIiksTz1wLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZnJlY29yZHMiKSxEPXAuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9zdW1tYXJ5Iik7VC5maW5kKCJ0Ym9keSIpLmh0bWwoX1sxXSksTy5odG1sKGtbMF0pLFMucHJlcGVuZChrWzFdKSxudWxsIT1DJiZELmh0bWwoQ1sxXSksc2V0VGltZW91dChmdW5jdGlvbigpe1MuZmluZCgiPiB0YWJsZSIpLm5vdCgidGFibGU6Zmlyc3QtY2hpbGQiKS5yZW1vdmUoKSxEWzBdJiYoRFswXS5zY3JvbGxMZWZ0PWEubGFzdC5zY3JvbGxMZWZ0KX0sMSksYS5yZXNpemVSZWNvcmRzKCl9fXZhciB6PXRoaXMucmVjb3Jkcy5sZW5ndGg7aWYoMD09dGhpcy5zZWFyY2hEYXRhLmxlbmd0aHx8dHx8KHo9dGhpcy5sYXN0LnNlYXJjaElkcy5sZW5ndGgpLDAhPT16JiYwIT09aS5sZW5ndGgmJjAhPT1pLmhlaWdodCgpJiYoej50aGlzLnZzX3N0YXJ0P3RoaXMubGFzdC5zaG93X2V4dHJhPXRoaXMudnNfZXh0cmE6dGhpcy5sYXN0LnNob3dfZXh0cmE9dGhpcy52c19zdGFydCwhKGkuaGVpZ2h0KCk8eip0aGlzLnJlY29yZEhlaWdodCYmImhpZGRlbiI9PWkuY3NzKCJvdmVyZmxvdy15IikpKSl7dmFyIEk9TWF0aC5yb3VuZChpWzBdLnNjcm9sbFRvcC90aGlzLnJlY29yZEhlaWdodCsxKSxqPUkrKE1hdGgucm91bmQoaS5oZWlnaHQoKS90aGlzLnJlY29yZEhlaWdodCktMSk7aWYoejxJJiYoST16KSx6LTE8PWomJihqPXopLCQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZm9vdGVyIC53MnVpLWZvb3Rlci1yaWdodCIpLmh0bWwoKGEuc2hvdy5zdGF0dXNSYW5nZT93MnV0aWxzLmZvcm1hdE51bWJlcih0aGlzLm9mZnNldCtJKSsiLSIrdzJ1dGlscy5mb3JtYXROdW1iZXIodGhpcy5vZmZzZXQraikrKC0xIT10aGlzLnRvdGFsPyIgIit3MnV0aWxzLmxhbmcoIm9mIikrIiAiK3cydXRpbHMuZm9ybWF0TnVtYmVyKHRoaXMudG90YWwpOiIiKToiIikrKHQmJmEuc2hvdy5zdGF0dXNCdWZmZXJlZD8iICgiK3cydXRpbHMubGFuZygiYnVmZmVyZWQiKSsiICIrdzJ1dGlscy5mb3JtYXROdW1iZXIoeikrKDA8dGhpcy5vZmZzZXQ/Iiwgc2tpcCAiK3cydXRpbHMuZm9ybWF0TnVtYmVyKHRoaXMub2Zmc2V0KToiIikrIikiOiIiKSksdHx8dGhpcy5maXhlZEJvZHkmJiEoLTEhPXRoaXMudG90YWwmJnRoaXMudG90YWw8PXRoaXMudnNfc3RhcnQpKXt2YXIgRT1NYXRoLmZsb29yKGlbMF0uc2Nyb2xsVG9wL3RoaXMucmVjb3JkSGVpZ2h0KS10aGlzLmxhc3Quc2hvd19leHRyYSxSPUUrTWF0aC5mbG9vcihpLmhlaWdodCgpL3RoaXMucmVjb3JkSGVpZ2h0KSsyKnRoaXMubGFzdC5zaG93X2V4dHJhKzE7RTwxJiYoRT0xKSxSPnRoaXMudG90YWwmJi0xIT10aGlzLnRvdGFsJiYoUj10aGlzLnRvdGFsKTt2YXIgRj1pLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX3RvcCIpLEE9aS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY19ib3R0b20iKSxNPXMuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjX3RvcCIpLE49cy5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfYm90dG9tIik7LTEhPVN0cmluZyhGLm5leHQoKS5wcm9wKCJpZCIpKS5pbmRleE9mKCJfZXhwYW5kZWRfcm93IikmJihGLm5leHQoKS5yZW1vdmUoKSxNLm5leHQoKS5yZW1vdmUoKSksdGhpcy50b3RhbD5SJiYtMSE9U3RyaW5nKEEucHJldigpLnByb3AoImlkIikpLmluZGV4T2YoIl9leHBhbmRlZF9yb3ciKSYmKEEucHJldigpLnJlbW92ZSgpLE4ucHJldigpLnJlbW92ZSgpKTt2YXIgUD1wYXJzZUludChGLm5leHQoKS5hdHRyKCJsaW5lIikpLEw9cGFyc2VJbnQoQS5wcmV2KCkuYXR0cigibGluZSIpKTtpZihQPEV8fDE9PVB8fHRoaXMubGFzdC5wdWxsX3JlZnJlc2gpe2lmKFI8PUwrdGhpcy5sYXN0LnNob3dfZXh0cmEtMiYmUiE9dGhpcy50b3RhbClyZXR1cm47Zm9yKHRoaXMubGFzdC5wdWxsX3JlZnJlc2g9ITE7Oyl7dmFyIEg9cy5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfdG9wIikubmV4dCgpO2lmKCJib3R0b20iPT0oVz1pLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX3RvcCIpLm5leHQoKSkuYXR0cigibGluZSIpKWJyZWFrO2lmKCEocGFyc2VJbnQoVy5hdHRyKCJsaW5lIikpPEUpKWJyZWFrO0gucmVtb3ZlKCksVy5yZW1vdmUoKX0idG9wIj09KFk9aS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY19ib3R0b20iKS5wcmV2KCkuYXR0cigibGluZSIpKSYmKFk9RSk7Zm9yKGM9cGFyc2VJbnQoWSkrMTtjPD1SO2MrKylpZih0aGlzLnJlY29yZHNbYy0xXSl7KFc9dGhpcy5yZWNvcmRzW2MtMV0udzJ1aSkmJiFBcnJheS5pc0FycmF5KFcuY2hpbGRyZW4pJiYoVy5leHBhbmRlZD0hMSk7dmFyIEI9dGhpcy5nZXRSZWNvcmRIVE1MKGMtMSxjKTtBLmJlZm9yZShCWzFdKSxOLmJlZm9yZShCWzBdKX1WKCksc2V0VGltZW91dChmdW5jdGlvbigpe2EucmVmcmVzaFJhbmdlcygpfSwwKX1lbHNle2lmKEU+PVAtdGhpcy5sYXN0LnNob3dfZXh0cmErMiYmMTxFKXJldHVybjtmb3IoOzspe0g9cy5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfYm90dG9tIikucHJldigpO2lmKCJ0b3AiPT0oVz1pLmZpbmQoIiNncmlkXyIrdGhpcy5uYW1lKyJfcmVjX2JvdHRvbSIpLnByZXYoKSkuYXR0cigibGluZSIpKWJyZWFrO2lmKCEocGFyc2VJbnQoVy5hdHRyKCJsaW5lIikpPlIpKWJyZWFrO0gucmVtb3ZlKCksVy5yZW1vdmUoKX12YXIgWTsiYm90dG9tIj09KFk9aS5maW5kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY190b3AiKS5uZXh0KCkuYXR0cigibGluZSIpKSYmKFk9Uik7Zm9yKGM9cGFyc2VJbnQoWSktMTtFPD1jO2MtLSlpZih0aGlzLnJlY29yZHNbYy0xXSl7dmFyIFc7KFc9dGhpcy5yZWNvcmRzW2MtMV0udzJ1aSkmJiFBcnJheS5pc0FycmF5KFcuY2hpbGRyZW4pJiYoVy5leHBhbmRlZD0hMSk7Qj10aGlzLmdldFJlY29yZEhUTUwoYy0xLGMpO0YuYWZ0ZXIoQlsxXSksTS5hZnRlcihCWzBdKX1WKCksc2V0VGltZW91dChmdW5jdGlvbigpe2EucmVmcmVzaFJhbmdlcygpfSwwKX12YXIgSz0oRS0xKSphLnJlY29yZEhlaWdodCxVPShNYXRoLm1heCh6LHRoaXMudG90YWwpLVIpKnRoaXMucmVjb3JkSGVpZ2h0O2lmKFU8MCYmKFU9MCksRi5jc3MoImhlaWdodCIsSysicHgiKSxNLmNzcygiaGVpZ2h0IixLKyJweCIpLEEuY3NzKCJoZWlnaHQiLFUrInB4IiksTi5jc3MoImhlaWdodCIsVSsicHgiKSxhLmxhc3QucmFuZ2Vfc3RhcnQ9RSxhLmxhc3QucmFuZ2VfZW5kPVIsejxNYXRoLmZsb29yKGlbMF0uc2Nyb2xsVG9wL3RoaXMucmVjb3JkSGVpZ2h0KStNYXRoLmZsb29yKGkuaGVpZ2h0KCkvdGhpcy5yZWNvcmRIZWlnaHQpKzEwJiYhMCE9PXRoaXMubGFzdC5wdWxsX21vcmUmJih6PHRoaXMudG90YWwtdGhpcy5vZmZzZXR8fC0xPT10aGlzLnRvdGFsJiZ0aGlzLmxhc3QueGhyX2hhc01vcmUpKWlmKCEwPT09dGhpcy5hdXRvTG9hZCl0aGlzLmxhc3QucHVsbF9tb3JlPSEwLHRoaXMubGFzdC54aHJfb2Zmc2V0Kz10aGlzLmxpbWl0LHRoaXMucmVxdWVzdCgiZ2V0Iik7ZWxzZXt2YXIgWD0kKCIjZ3JpZF8iK3RoaXMubmFtZSsiX3JlY19tb3JlLCAjZ3JpZF8iK3RoaXMubmFtZSsiX2ZyZWNfbW9yZSIpOyJub25lIj09WC5jc3MoImRpc3BsYXkiKSYmWC5zaG93KCkub24oImNsaWNrIixmdW5jdGlvbigpe2EubGFzdC5wdWxsX21vcmU9ITAsYS5sYXN0Lnhocl9vZmZzZXQrPWEubGltaXQsYS5yZXF1ZXN0KCJnZXQiKSwkKHRoaXMpLmZpbmQoInRkIikuaHRtbCgnPGRpdj48ZGl2IHN0eWxlPSJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyIgY2xhc3M9IncydWktc3Bpbm5lciI+PC9kaXY+PC9kaXY+Jyl9KSwoMDxYLmZpbmQoInRkIC53MnVpLXNwaW5uZXIiKS5sZW5ndGh8fC0xPT1YLmZpbmQoInRkIikudGV4dCgpLmluZGV4T2YoIkxvYWQiKSkmJlguZmluZCgidGQiKS5odG1sKCI8ZGl2PiIrdzJ1dGlscy5sYW5nKCJMb2FkIikrIiAiK2EubGltaXQrIiAiK3cydXRpbHMubGFuZygiTW9yZSIpKyIuLi48L2Rpdj4iKX16Pj10aGlzLnRvdGFsLXRoaXMub2Zmc2V0JiYtMSE9dGhpcy50b3RhbCYmJCgiI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfbW9yZSwgI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjX21vcmUiKS5oaWRlKCl9fWZ1bmN0aW9uIFYoKXthLm1hcmtTZWFyY2gmJihjbGVhclRpbWVvdXQoYS5sYXN0Lm1hcmtlcl90aW1lciksYS5sYXN0Lm1hcmtlcl90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGEuc2VhcmNoRGF0YS5sZW5ndGg7dCsrKXt2YXIgaT1hLnNlYXJjaERhdGFbdF0scz1hLmdldFNlYXJjaChpLmZpZWxkKTtpZihzJiYhcy5oaWRkZW4pe3ZhciBuPWEuZ2V0Q29sdW1uKGkuZmllbGQsITApO2UucHVzaCh7ZmllbGQ6aS5maWVsZCxzZWFyY2g6aS52YWx1ZSxjb2w6bn0pfX0wPGUubGVuZ3RoJiZlLmZvckVhY2goZnVuY3Rpb24oZSl7JChhLmJveCkuZmluZCgndGRbY29sPSInK2UuY29sKyciXScpLm5vdCgiLncydWktaGVhZCIpLncybWFya2VyKGUuc2VhcmNoKX0pfSw1MCkpfX0sZ2V0UmVjb3JkSFRNTDpmdW5jdGlvbihlLHQsaSl7dmFyIHMsbj0iIixhPSIiLHI9IiIsbD10aGlzLmxhc3Quc2VsZWN0aW9uO2lmKC0xPT1lKXthKz0nPHRyIGxpbmU9IjAiPicscis9Jzx0ciBsaW5lPSIwIj4nLHRoaXMuc2hvdy5saW5lTnVtYmVycyYmKGErPSc8dGQgY2xhc3M9IncydWktY29sLW51bWJlciIgc3R5bGU9ImhlaWdodDogMHB4OyI+PC90ZD4nKSx0aGlzLnNob3cuc2VsZWN0Q29sdW1uJiYoYSs9Jzx0ZCBjbGFzcz0idzJ1aS1jb2wtc2VsZWN0IiBzdHlsZT0iaGVpZ2h0OiAwcHg7Ij48L3RkPicpLHRoaXMuc2hvdy5leHBhbmRDb2x1bW4mJihhKz0nPHRkIGNsYXNzPSJ3MnVpLWNvbC1leHBhbmQiIHN0eWxlPSJoZWlnaHQ6IDBweDsiPjwvdGQ+Jykscis9Jzx0ZCBjbGFzcz0idzJ1aS1ncmlkLWRhdGEgdzJ1aS1ncmlkLWRhdGEtc3BhY2VyIiBjb2w9InN0YXJ0IiBzdHlsZT0iaGVpZ2h0OiAwcHg7IHdpZHRoOiAwcHg7Ij48L3RkPicsdGhpcy5zaG93Lm9yZGVyQ29sdW1uJiYocis9Jzx0ZCBjbGFzcz0idzJ1aS1jb2wtb3JkZXIiIHN0eWxlPSJoZWlnaHQ6IDBweDsiIGNvbD0ib3JkZXIiPjwvdGQ+Jyk7Zm9yKHZhciBvPTA7bzx0aGlzLmNvbHVtbnMubGVuZ3RoO28rKyl7aWYobj0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YSIgY29sPSInK28rJyIgc3R5bGU9ImhlaWdodDogMHB4OyI+PC90ZD4nLCh3PXRoaXMuY29sdW1uc1tvXSkuZnJvemVuJiYhdy5oaWRkZW4pYSs9bjtlbHNle2lmKHcuaGlkZGVufHxvPHRoaXMubGFzdC5jb2xTdGFydHx8bz50aGlzLmxhc3QuY29sRW5kKWNvbnRpbnVlO3IrPW59fXJldHVybiBhKz0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YS1sYXN0IiBzdHlsZT0iaGVpZ2h0OiAwcHgiPjwvdGQ+JyxyKz0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YS1sYXN0IiBjb2w9ImVuZCIgc3R5bGU9ImhlaWdodDogMHB4Ij48L3RkPicsW2ErPSI8L3RyPiIscis9IjwvdHI+Il19dmFyIGQ9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQ7aWYoITAhPT1pKWlmKDA8dGhpcy5zZWFyY2hEYXRhLmxlbmd0aCYmIWQpe2lmKGU+PXRoaXMubGFzdC5zZWFyY2hJZHMubGVuZ3RoKXJldHVybiIiO2U9dGhpcy5sYXN0LnNlYXJjaElkc1tlXSxzPXRoaXMucmVjb3Jkc1tlXX1lbHNle2lmKGU+PXRoaXMucmVjb3Jkcy5sZW5ndGgpcmV0dXJuIiI7cz10aGlzLnJlY29yZHNbZV19ZWxzZXtpZihlPj10aGlzLnN1bW1hcnkubGVuZ3RoKXJldHVybiIiO3M9dGhpcy5zdW1tYXJ5W2VdfWlmKCFzKXJldHVybiIiO2lmKG51bGw9PXMucmVjaWQmJm51bGwhPXRoaXMucmVjaWQpe3ZhciB1PXRoaXMucGFyc2VGaWVsZChzLHRoaXMucmVjaWQpO251bGwhPXUmJihzLnJlY2lkPXUpfXcydXRpbHMuZXNjYXBlSWQocy5yZWNpZCk7dmFyIGM9ITE7LTEhPWwuaW5kZXhlcy5pbmRleE9mKGUpJiYoYz0hMCk7dmFyIGg9cy53MnVpP3MudzJ1aS5zdHlsZToiIjtudWxsIT1oJiYic3RyaW5nIj09dHlwZW9mIGh8fChoPSIiKTt2YXIgcD1zLncydWk/cy53MnVpLmNsYXNzOiIiO2lmKG51bGwhPXAmJiJzdHJpbmciPT10eXBlb2YgcHx8KHA9IiIpLGErPSc8dHIgaWQ9ImdyaWRfJyt0aGlzLm5hbWUrIl9mcmVjXyIrcy5yZWNpZCsnIiByZWNpZD0iJytzLnJlY2lkKyciIGxpbmU9IicrdCsnIiBpbmRleD0iJytlKyciICBjbGFzcz0iJysodCUyPT0wPyJ3MnVpLWV2ZW4iOiJ3MnVpLW9kZCIpKyIgdzJ1aS1yZWNvcmQgIitwKyhjJiYicm93Ij09dGhpcy5zZWxlY3RUeXBlPyIgdzJ1aS1zZWxlY3RlZCI6IiIpKyhzLncydWkmJiExPT09cy53MnVpLmVkaXRhYmxlPyIgdzJ1aS1uby1lZGl0IjoiIikrKHMudzJ1aSYmITA9PT1zLncydWkuZXhwYW5kZWQ/IiB3MnVpLWV4cGFuZGVkIjoiIikrJyIgJysoITAhPT1pP3cydXRpbHMuaXNJT1M/IiAgICBvbmNsaWNrICA9IFwidzJ1aVsnIit0aGlzLm5hbWUrIiddLmRibENsaWNrKGpRdWVyeSh0aGlzKS5hdHRyKCdyZWNpZCcpLCBldmVudCk7XCIiOiIgICAgb25jbGljayAgPSBcIncydWlbJyIrdGhpcy5uYW1lKyInXS5jbGljayhqUXVlcnkodGhpcykuYXR0cigncmVjaWQnKSwgZXZlbnQpO1wiICAgIG9uY29udGV4dG1lbnUgPSBcIncydWlbJyIrdGhpcy5uYW1lKyInXS5jb250ZXh0TWVudShqUXVlcnkodGhpcykuYXR0cigncmVjaWQnKSwgbnVsbCwgZXZlbnQpO1wiIjoiIikrKCJyb3ciPT10aGlzLnNlbGVjdFR5cGU/IiBvbm1vdXNlb3Zlcj1cImpRdWVyeSgnI2dyaWRfIit0aGlzLm5hbWUrIl9yZWNfJysgdzJ1dGlscy5lc2NhcGVJZChqUXVlcnkodGhpcykuYXR0cigncmVjaWQnKSkpLmFkZENsYXNzKCd3MnVpLXJlY29yZC1ob3ZlcicpXCIgb25tb3VzZW91dCA9XCJqUXVlcnkoJyNncmlkXyIrdGhpcy5uYW1lKyJfcmVjXycrIHcydXRpbHMuZXNjYXBlSWQoalF1ZXJ5KHRoaXMpLmF0dHIoJ3JlY2lkJykpKS5yZW1vdmVDbGFzcygndzJ1aS1yZWNvcmQtaG92ZXInKVwiIjoiIikrJyBzdHlsZT0iaGVpZ2h0OiAnK3RoaXMucmVjb3JkSGVpZ2h0KyJweDsgIisoY3x8IiI9PWg/aC5yZXBsYWNlKCJiYWNrZ3JvdW5kLWNvbG9yIiwibm9uZSIpOmgpKyciICcrKCIiIT1oPydjdXN0b21fc3R5bGU9IicraCsnIic6IiIpKyI+IixyKz0nPHRyIGlkPSJncmlkXycrdGhpcy5uYW1lKyJfcmVjXyIrcy5yZWNpZCsnIiByZWNpZD0iJytzLnJlY2lkKyciIGxpbmU9IicrdCsnIiBpbmRleD0iJytlKyciICBjbGFzcz0iJysodCUyPT0wPyJ3MnVpLWV2ZW4iOiJ3MnVpLW9kZCIpKyIgdzJ1aS1yZWNvcmQgIitwKyhjJiYicm93Ij09dGhpcy5zZWxlY3RUeXBlPyIgdzJ1aS1zZWxlY3RlZCI6IiIpKyhzLncydWkmJiExPT09cy53MnVpLmVkaXRhYmxlPyIgdzJ1aS1uby1lZGl0IjoiIikrKHMudzJ1aSYmITA9PT1zLncydWkuZXhwYW5kZWQ/IiB3MnVpLWV4cGFuZGVkIjoiIikrJyIgJysoITAhPT1pP3cydXRpbHMuaXNJT1M/IiAgICBvbmNsaWNrICA9IFwidmFyIG9iaiA9IHcydWlbJyIrdGhpcy5uYW1lKyInXTsgb2JqLmRibENsaWNrKGpRdWVyeSh0aGlzKS5hdHRyKCdyZWNpZCcpLCBldmVudCk7XCIiOiIgICAgb25jbGljayAgPSBcInZhciBvYmogPSB3MnVpWyciK3RoaXMubmFtZSsiJ107IG9iai5jbGljayhqUXVlcnkodGhpcykuYXR0cigncmVjaWQnKSwgZXZlbnQpO1wiICAgIG9uY29udGV4dG1lbnUgPSBcInZhciBvYmogPSB3MnVpWyciK3RoaXMubmFtZSsiJ107IG9iai5jb250ZXh0TWVudShqUXVlcnkodGhpcykuYXR0cigncmVjaWQnKSwgbnVsbCwgZXZlbnQpO1wiIjoiIikrKCJyb3ciPT10aGlzLnNlbGVjdFR5cGU/IiBvbm1vdXNlb3Zlcj1cImpRdWVyeSgnI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXycgKyB3MnV0aWxzLmVzY2FwZUlkKGpRdWVyeSh0aGlzKS5hdHRyKCdyZWNpZCcpKSkuYWRkQ2xhc3MoJ3cydWktcmVjb3JkLWhvdmVyJylcIiBvbm1vdXNlb3V0ID1cImpRdWVyeSgnI2dyaWRfIit0aGlzLm5hbWUrIl9mcmVjXycgKyB3MnV0aWxzLmVzY2FwZUlkKGpRdWVyeSh0aGlzKS5hdHRyKCdyZWNpZCcpKSkucmVtb3ZlQ2xhc3MoJ3cydWktcmVjb3JkLWhvdmVyJylcIiI6IiIpKycgc3R5bGU9ImhlaWdodDogJyt0aGlzLnJlY29yZEhlaWdodCsicHg7ICIrKGN8fCIiPT1oP2gucmVwbGFjZSgiYmFja2dyb3VuZC1jb2xvciIsIm5vbmUiKTpoKSsnIiAnKygiIiE9aD8nY3VzdG9tX3N0eWxlPSInK2grJyInOiIiKSsiPiIsdGhpcy5zaG93LmxpbmVOdW1iZXJzJiYoYSs9Jzx0ZCBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2NlbGxfIitlKyJfbnVtYmVyIisoaT8iX3MiOiIiKSsnIiAgICBjbGFzcz0idzJ1aS1jb2wtbnVtYmVyICcrKGM/IiB3MnVpLXJvdy1zZWxlY3RlZCI6IiIpKyciJysodGhpcy5yZW9yZGVyUm93cz8nIHN0eWxlPSJjdXJzb3I6IG1vdmUiJzoiIikrIj4iKyghMCE9PWk/dGhpcy5nZXRMaW5lSFRNTCh0LHMpOiIiKSsiPC90ZD4iKSx0aGlzLnNob3cuc2VsZWN0Q29sdW1uKXtzJiZzLncydWkmJiEwPT09cy53MnVpLmhpZGVDaGVja0JveCYmITAsYSs9Jzx0ZCBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2NlbGxfIitlKyJfc2VsZWN0IisoaT8iX3MiOiIiKSsnIiBjbGFzcz0idzJ1aS1ncmlkLWRhdGEgdzJ1aS1jb2wtc2VsZWN0Ij4nKyghMD09PWl8fHMudzJ1aSYmITA9PT1zLncydWkuaGlkZUNoZWNrQm94PyIiOicgICAgPGRpdj4gICAgICAgIDxpbnB1dCBjbGFzcz0idzJ1aS1ncmlkLXNlbGVjdC1jaGVjayIgdHlwZT0iY2hlY2tib3giIHRhYmluZGV4PSItMSIgJysoYz8nY2hlY2tlZD0iY2hlY2tlZCInOiIiKSsnIHN0eWxlPSJwb2ludGVyLWV2ZW50czogbm9uZSIvPiAgICA8L2Rpdj4nKSsiPC90ZD4ifWlmKHRoaXMuc2hvdy5leHBhbmRDb2x1bW4pe3ZhciBmPSIiO2Y9cy53MnVpJiYhMD09PXMudzJ1aS5leHBhbmRlZD8iLSI6IisiLHMudzJ1aSYmIm5vbmUiPT1zLncydWkuZXhwYW5kZWQmJihmPSIiKSxzLncydWkmJiJzcGlubmVyIj09cy53MnVpLmV4cGFuZGVkJiYoZj0nPGRpdiBjbGFzcz0idzJ1aS1zcGlubmVyIiBzdHlsZT0id2lkdGg6IDE2cHg7IG1hcmdpbjogLTJweCAycHg7Ij48L2Rpdj4nKSxhKz0nPHRkIGlkPSJncmlkXycrdGhpcy5uYW1lKyJfY2VsbF8iK2UrIl9leHBhbmQiKyhpPyJfcyI6IiIpKyciIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YSB3MnVpLWNvbC1leHBhbmQiPicrKCEwIT09aT8nICAgIDxkaXYgb25kYmxjbGljaz0iaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGVsc2UgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsiICAgICAgICAgICAgIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10udG9nZ2xlKGpRdWVyeSh0aGlzKS5wYXJlbnRzKCd0cicpLmF0dHIoJ3JlY2lkJykpOyAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGVsc2UgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcIj4gICAgICAgICIrZisiIDwvZGl2PiI6IiIpKyI8L3RkPiJ9cis9Jzx0ZCBjbGFzcz0idzJ1aS1ncmlkLWRhdGEtc3BhY2VyIiBjb2w9InN0YXJ0IiBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAwIj48L3RkPicsdGhpcy5zaG93Lm9yZGVyQ29sdW1uJiYocis9Jzx0ZCBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2NlbGxfIitlKyJfb3JkZXIiKyhpPyJfcyI6IiIpKyciIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YSB3MnVpLWNvbC1vcmRlciIgY29sPSJvcmRlciI+JysoITAhPT1pPyc8ZGl2IHRpdGxlPSJEcmFnIHRvIHJlb3JkZXIiPiZuYnNwOzwvZGl2Pic6IiIpKyI8L3RkPiIpO2Zvcih2YXIgZz0wLG09MDs7KXt2YXIgdyx2PTE7aWYobnVsbD09KHc9dGhpcy5jb2x1bW5zW2ddKSlicmVhaztpZih3LmhpZGRlbilnKyssMDxtJiZtLS07ZWxzZSBpZigwPG0pe2lmKGcrKyxudWxsPT10aGlzLmNvbHVtbnNbZ10pYnJlYWs7cy53MnVpLmNvbHNwYW5bdGhpcy5jb2x1bW5zW2ctMV0uZmllbGRdPTAsbS0tfWVsc2V7aWYocy53MnVpKXt2YXIgeT1zLncydWkuY29sc3BhbixiPXRoaXMuY29sdW1uc1tnXS5maWVsZDt5JiYwPT09eVtiXSYmZGVsZXRlIHlbYl19aWYoIShnPHRoaXMubGFzdC5jb2xTdGFydHx8Zz50aGlzLmxhc3QuY29sRW5kKXx8dy5mcm96ZW4pe2lmKHMudzJ1aSYmIm9iamVjdCI9PXR5cGVvZiBzLncydWkuY29sc3Bhbil7dmFyIHg9cGFyc2VJbnQocy53MnVpLmNvbHNwYW5bdy5maWVsZF0pfHxudWxsO2lmKDE8eCl7dmFyIF89MDtmb3Iobz1nO288Zyt4JiYhKG8+PXRoaXMuY29sdW1ucy5sZW5ndGgpO28rKyl0aGlzLmNvbHVtbnNbb10uaGlkZGVuJiZfKys7dj14LV8sbT14LTF9fXZhciBrPXRoaXMuZ2V0Q2VsbEhUTUwoZSxnLGksdik7dy5mcm96ZW4/YSs9azpyKz1rLGcrK31lbHNlIGcrK319cmV0dXJuIGErPSc8dGQgY2xhc3M9IncydWktZ3JpZC1kYXRhLWxhc3QiPjwvdGQ+JyxyKz0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YS1sYXN0IiBjb2w9ImVuZCI+PC90ZD4nLFthKz0iPC90cj4iLHIrPSI8L3RyPiJdfSxnZXRMaW5lSFRNTDpmdW5jdGlvbihlKXtyZXR1cm4iPGRpdj4iK2UrIjwvZGl2PiJ9LGdldENlbGxIVE1MOmZ1bmN0aW9uKGUsdCxpLHMpe3ZhciBuPXRoaXMuY29sdW1uc1t0XTtpZihudWxsPT1uKXJldHVybiIiO3ZhciBhPSEwIT09aT90aGlzLnJlY29yZHNbZV06dGhpcy5zdW1tYXJ5W2VdLHI9LTEhPT1lP3RoaXMuZ2V0Q2VsbFZhbHVlKGUsdCxpKToiIixsPS0xIT09ZT90aGlzLmdldENlbGxFZGl0YWJsZShlLHQpOiIiLG89Im1heC1oZWlnaHQ6ICIrcGFyc2VJbnQodGhpcy5yZWNvcmRIZWlnaHQpKyJweDsiLGQ9IWkmJmEmJmEudzJ1aSYmYS53MnVpLmNoYW5nZXMmJm51bGwhPWEudzJ1aS5jaGFuZ2VzW24uZmllbGRdLHU9IiIsYz0iIixoPXRoaXMubGFzdC5zZWxlY3Rpb24scD0hMSxmPSIiO2lmKC0xIT1oLmluZGV4ZXMuaW5kZXhPZihlKSYmKHA9ITApLG51bGw9PXMmJihzPWEmJmEudzJ1aSYmYS53MnVpLmNvbHNwYW4mJmEudzJ1aS5jb2xzcGFuW24uZmllbGRdP2EudzJ1aS5jb2xzcGFuW24uZmllbGRdOjEpLDA9PT10JiZhJiZhLncydWkmJkFycmF5LmlzQXJyYXkoYS53MnVpLmNoaWxkcmVuKSl7Zm9yKHZhciBnPTAsbT10aGlzLmdldChhLncydWkucGFyZW50X3JlY2lkLCEwKTtudWxsIT1tOyl7aWYoZysrLG51bGw9PShrPXRoaXMucmVjb3Jkc1ttXS53MnVpKXx8bnVsbD09ay5wYXJlbnRfcmVjaWQpYnJlYWs7bT10aGlzLmdldChrLnBhcmVudF9yZWNpZCwhMCl9aWYoYS53MnVpLnBhcmVudF9yZWNpZClmb3IodmFyIHc9MDt3PGc7dysrKWYrPSc8c3BhbiBjbGFzcz0idzJ1aS1zaG93LWNoaWxkcmVuIHcydWktaWNvbi1lbXB0eSI+PC9zcGFuPic7Zis9JzxzcGFuIGNsYXNzPSJ3MnVpLXNob3ctY2hpbGRyZW4gJysoMDxhLncydWkuY2hpbGRyZW4ubGVuZ3RoP2EudzJ1aS5leHBhbmRlZD8idzJ1aS1pY29uLWNvbGxhcHNlIjoidzJ1aS1pY29uLWV4cGFuZCI6IncydWktaWNvbi1lbXB0eSIpKyciICBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdzJ1aVtcJycrdGhpcy5uYW1lKyInXS50b2dnbGUoalF1ZXJ5KHRoaXMpLnBhcmVudHMoJ3RyJykuYXR0cigncmVjaWQnKSlcIj48L3NwYW4+In1pZighMD09PW4uaW5mbyYmKG4uaW5mbz17fSksbnVsbCE9bi5pbmZvKXt2YXIgdj0idzJ1aS1pY29uLWluZm8iOyJmdW5jdGlvbiI9PXR5cGVvZiBuLmluZm8uaWNvbj92PW4uaW5mby5pY29uKGEpOiJvYmplY3QiPT10eXBlb2Ygbi5pbmZvLmljb24/dj1uLmluZm8uaWNvblt0aGlzLnBhcnNlRmllbGQoYSxuLmZpZWxkKV18fCIiOiJzdHJpbmciPT10eXBlb2Ygbi5pbmZvLmljb24mJih2PW4uaW5mby5pY29uKTt2YXIgeT1uLmluZm8uc3R5bGV8fCIiOyJmdW5jdGlvbiI9PXR5cGVvZiBuLmluZm8uc3R5bGU/eT1uLmluZm8uc3R5bGUoYSk6Im9iamVjdCI9PXR5cGVvZiBuLmluZm8uc3R5bGU/eT1uLmluZm8uc3R5bGVbdGhpcy5wYXJzZUZpZWxkKGEsbi5maWVsZCldfHwiIjoic3RyaW5nIj09dHlwZW9mIG4uaW5mby5zdHlsZSYmKHk9bi5pbmZvLnN0eWxlKSxmKz0nPHNwYW4gY2xhc3M9IncydWktaW5mbyAnK3YrJyIgc3R5bGU9IicreSsnIiAnKyhudWxsIT1uLmluZm8uc2hvd09uPyJvbiIrbi5pbmZvLnNob3dPbjoiY2xpY2siKSsiPVwiZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHcydWlbJyIrdGhpcy5uYW1lKyInXS5zaG93QnViYmxlKCIrZSsiLCAiK3QrJykiJysobnVsbCE9bi5pbmZvLmhpZGVPbj8ib24iK24uaW5mby5oaWRlT246IiIpKyI9XCJ2YXIgZ3JpZCA9IHcydWlbJyIrdGhpcy5uYW1lKyInXTsgaWYgKGdyaWQubGFzdC5idWJibGVFbCkgeyAkKGdyaWQubGFzdC5idWJibGVFbCkudzJ0YWcoKSB9IGdyaWQubGFzdC5idWJibGVFbCA9IG51bGw7XCI+PC9zcGFuPiJ9aWYobnVsbCE9bi5yZW5kZXImJi0xIT09ZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4ucmVuZGVyKXt2YXIgYj1uLnJlbmRlci5jYWxsKHRoaXMsYSxlLHQscik7bnVsbCE9YiYmIm9iamVjdCI9PXR5cGVvZiBiPyhyPSQudHJpbShiLmh0bWx8fCIiKSxjPWIuY2xhc3N8fCIiLHU9Yi5zdHlsZXx8IiIpOnI9JC50cmltKGIpLChyLmxlbmd0aDw0fHwiPGRpdiIhPXIuc3Vic3RyKDAsNCkudG9Mb3dlckNhc2UoKSkmJihyPSc8ZGl2IHN0eWxlPSInK28rJyI+JytmK1N0cmluZyhyKSsiPC9kaXY+Iil9aWYoIm9iamVjdCI9PXR5cGVvZiBuLnJlbmRlcil7dmFyIHg9bi5yZW5kZXJbcl07bnVsbCE9eCYmIiIhPT14fHwoeD1yKSxyPSc8ZGl2IHN0eWxlPSInK28rJyI+JytmK3grIjwvZGl2PiJ9aWYoInN0cmluZyI9PXR5cGVvZiBuLnJlbmRlcil7dmFyIF89bi5yZW5kZXIudG9Mb3dlckNhc2UoKS5pbmRleE9mKCI6Iiksaz1bXTstMT09Xz8oa1swXT1uLnJlbmRlci50b0xvd2VyQ2FzZSgpLGtbMV09IiIpOihrWzBdPW4ucmVuZGVyLnRvTG93ZXJDYXNlKCkuc3Vic3RyKDAsXyksa1sxXT1uLnJlbmRlci50b0xvd2VyQ2FzZSgpLnN1YnN0cihfKzEpKTt2YXIgQz13MnV0aWxzLmZvcm1hdHRlcnNba1swXV07cj0nPGRpdiBzdHlsZT0iJytvKyciPicrZisoImZ1bmN0aW9uIj09dHlwZW9mIEM/QyhyLGtbMV0pOiIiKSsiPC9kaXY+In19ZWxzZXtpZihsJiYtMSE9WyJjaGVja2JveCIsImNoZWNrIl0uaW5kZXhPZihsLnR5cGUpKXt2YXIgVD1pPy0oZSsxKTplO28rPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IixyPSc8aW5wdXQgdGFiaW5kZXg9Ii0xIiB0eXBlPSJjaGVja2JveCIgJysocj8nY2hlY2tlZD0iY2hlY2tlZCInOiIiKSsiIG9uY2xpY2s9XCIgICAgdmFyIG9iaiA9IHcydWlbJyIrdGhpcy5uYW1lKyInXTsgICAgIG9iai5lZGl0Q2hhbmdlLmNhbGwob2JqLCB0aGlzLCAiK1QrIiwgIit0KycsIGV2ZW50KTsgIi8+JyxmPSIifWlmKHRoaXMuc2hvdy5yZWNvcmRUaXRsZXMpe3ZhciBTPXcydXRpbHMuc3RyaXBUYWdzKFN0cmluZyhyKS5yZXBsYWNlKC8iL2csIicnIikpO251bGwhPW4udGl0bGUmJigiZnVuY3Rpb24iPT10eXBlb2Ygbi50aXRsZSYmKFM9bi50aXRsZS5jYWxsKHRoaXMsYSxlLHQpKSwic3RyaW5nIj09dHlwZW9mIG4udGl0bGUmJihTPW4udGl0bGUpKX1yPSc8ZGl2IHN0eWxlPSInK28rJyIgdGl0bGU9IicrKFN8fCIiKSsnIj4nK2YrU3RyaW5nKHIpKyI8L2Rpdj4ifWlmKG51bGw9PXImJihyPSIiKSwic3RyaW5nIj09dHlwZW9mIG4ucmVuZGVyKXtrPW4ucmVuZGVyLnRvTG93ZXJDYXNlKCkuc3BsaXQoIjoiKTstMSE9WyJudW1iZXIiLCJpbnQiLCJmbG9hdCIsIm1vbmV5IiwiY3VycmVuY3kiLCJwZXJjZW50Iiwic2l6ZSJdLmluZGV4T2Yoa1swXSkmJih1Kz0idGV4dC1hbGlnbjogcmlnaHQ7Iil9YSYmYS53MnVpJiYoIm9iamVjdCI9PXR5cGVvZiBhLncydWkuc3R5bGUmJigic3RyaW5nIj09dHlwZW9mIGEudzJ1aS5zdHlsZVt0XSYmKHUrPWEudzJ1aS5zdHlsZVt0XSsiOyIpLCJzdHJpbmciPT10eXBlb2YgYS53MnVpLnN0eWxlW24uZmllbGRdJiYodSs9YS53MnVpLnN0eWxlW24uZmllbGRdKyI7IikpLCJvYmplY3QiPT10eXBlb2YgYS53MnVpLmNsYXNzJiYoInN0cmluZyI9PXR5cGVvZiBhLncydWkuY2xhc3NbdF0mJihjKz1hLncydWkuY2xhc3NbdF0rIiAiKSwic3RyaW5nIj09dHlwZW9mIGEudzJ1aS5jbGFzc1tuLmZpZWxkXSYmKGMrPWEudzJ1aS5jbGFzc1tuLmZpZWxkXSsiICIpKSk7dmFyIE89ITE7cmV0dXJuIHAmJi0xIT0kLmluQXJyYXkodCxoLmNvbHVtbnNbZV0pJiYoTz0hMCkscj0nPHRkIGNsYXNzPSJ3MnVpLWdyaWQtZGF0YScrKE8/IiB3MnVpLXNlbGVjdGVkIjoiIikrIiAiK2MrKGQ/IiB3MnVpLWNoYW5nZWQiOiIiKSsnIiAgICBpZD0iZ3JpZF8nK3RoaXMubmFtZSsiX2RhdGFfIitlKyJfIit0KyciIGNvbD0iJyt0KyciICAgIHN0eWxlPSInK3UrKG51bGwhPW4uc3R5bGU/bi5zdHlsZToiIikrJyIgJysobnVsbCE9bi5hdHRyP24uYXR0cjoiIikrKDE8cz8nY29sc3Bhbj0iJytzKyciJzoiIikrIj4iK3IrIjwvdGQ+IiwtMT09PWUmJiEwPT09aSYmKHI9Jzx0ZCBjbGFzcz0idzJ1aS1ncmlkLWRhdGEiIGNvbD0iJyt0KyciIHN0eWxlPSJoZWlnaHQ6IDBweDsgJyt1KyciICcrKDE8cz8nY29sc3Bhbj0iJytzKyciJzoiIikrIj48L3RkPiIpLHJ9LHNob3dCdWJibGU6ZnVuY3Rpb24oZSx0KXt2YXIgaT0iIixzPXRoaXMuY29sdW1uc1t0XS5pbmZvLG49dGhpcy5yZWNvcmRzW2VdLGE9JCh0aGlzLmJveCkuZmluZCgiI2dyaWRfIit0aGlzLm5hbWUrIl9kYXRhXyIrZSsiXyIrdCsiIC53MnVpLWluZm8iKTtpZih0aGlzLmxhc3QuYnViYmxlRWwmJiQodGhpcy5sYXN0LmJ1YmJsZUVsKS53MnRhZygpLHRoaXMubGFzdC5idWJibGVFbD1hLG51bGw9PXMuZmllbGRzKXtzLmZpZWxkcz1bXTtmb3IodmFyIHI9MDtyPHRoaXMuY29sdW1ucy5sZW5ndGg7cisrKXt2YXIgbD10aGlzLmNvbHVtbnNbcl07cy5maWVsZHMucHVzaChsLmZpZWxkKygic3RyaW5nIj09dHlwZW9mIGwucmVuZGVyPyI6IitsLnJlbmRlcjoiIikpfX12YXIgbz1zLmZpZWxkcztpZigiZnVuY3Rpb24iPT10eXBlb2YgbyYmKG89byhuLGUsdCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBzLnJlbmRlcilpPXMucmVuZGVyKG4sZSx0KTtlbHNlIGlmKCQuaXNBcnJheShvKSl7aT0nPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Jztmb3Iocj0wO3I8by5sZW5ndGg7cisrKXtpZigiIiE9KGg9U3RyaW5nKG9bcl0pLnNwbGl0KCI6IikpWzBdJiYiLSIhPWhbMF0mJiItLSIhPWhbMF0mJiItLS0iIT1oWzBdKXtudWxsPT0obD10aGlzLmdldENvbHVtbihoWzBdKSkmJihsPXtmaWVsZDpoWzBdLGNhcHRpb246aFswXX0pO3ZhciBkPWw/dGhpcy5wYXJzZUZpZWxkKG4sbC5maWVsZCk6IiI7MTxoLmxlbmd0aCYmKHcydXRpbHMuZm9ybWF0dGVyc1toWzFdXT9kPXcydXRpbHMuZm9ybWF0dGVyc1toWzFdXShkLGhbMl18fG51bGwpOmNvbnNvbGUubG9nKCdFUlJPUjogdzJ1dGlscy5mb3JtYXR0ZXJzWyInK2hbMV0rJyJdIGRvZXMgbm90IGV4aXN0cy4nKSksKCEwPT09cy5zaG93RW1wdHl8fG51bGwhPWQmJiIiIT1kKSYmKG51bGwhPXMubWF4TGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGQmJmQubGVuZ3RoPnMubWF4TGVuZ3RoJiYoZD1kLnN1YnN0cigwLHMubWF4TGVuZ3RoKSsiLi4uIiksaSs9Ijx0cj48dGQ+IitsLnRleHQrIjwvdGQ+PHRkPiIrKCgwPT09ZD8iMCI6ZCl8fCIiKSsiPC90ZD48L3RyPiIpfWVsc2UgaSs9Jzx0cj48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9ImJvcmRlci10b3A6ICcrKCIiPT1oWzBdPyIwIjoiMSIpKydweCBzb2xpZCAjQzFCRUJFOyBtYXJnaW46IDZweCAwcHg7Ij48L2Rpdj48L3RkPjwvdHI+J31pKz0iPC90YWJsZT4ifWVsc2UgaWYoJC5pc1BsYWluT2JqZWN0KG8pKXtmb3IodmFyIHUgaW4gaT0nPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+JyxvKXt2YXIgYz1vW3VdO2lmKCIiIT1jJiYiLSIhPWMmJiItLSIhPWMmJiItLS0iIT1jKXt2YXIgaD1TdHJpbmcoYykuc3BsaXQoIjoiKTtudWxsPT0obD10aGlzLmdldENvbHVtbihoWzBdKSkmJihsPXtmaWVsZDpoWzBdLGNhcHRpb246aFswXX0pO2Q9bD90aGlzLnBhcnNlRmllbGQobixsLmZpZWxkKToiIjsxPGgubGVuZ3RoJiYodzJ1dGlscy5mb3JtYXR0ZXJzW2hbMV1dP2Q9dzJ1dGlscy5mb3JtYXR0ZXJzW2hbMV1dKGQsaFsyXXx8bnVsbCk6Y29uc29sZS5sb2coJ0VSUk9SOiB3MnV0aWxzLmZvcm1hdHRlcnNbIicraFsxXSsnIl0gZG9lcyBub3QgZXhpc3RzLicpKSwiZnVuY3Rpb24iPT10eXBlb2YgYyYmKGQ9YyhuLGUsdCkpLCghMD09PXMuc2hvd0VtcHR5fHxudWxsIT1kJiYiIiE9ZCkmJihudWxsIT1zLm1heExlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBkJiZkLmxlbmd0aD5zLm1heExlbmd0aCYmKGQ9ZC5zdWJzdHIoMCxzLm1heExlbmd0aCkrIi4uLiIpLGkrPSI8dHI+PHRkPiIrdSsiPC90ZD48dGQ+IisoZHx8IiIpKyI8L3RkPjwvdHI+Iil9ZWxzZSBpKz0nPHRyPjx0ZCBjb2xzcGFuPTI+PGRpdiBzdHlsZT0iYm9yZGVyLXRvcDogJysoIiI9PWM/IjAiOiIxIikrJ3B4IHNvbGlkICNDMUJFQkU7IG1hcmdpbjogNnB4IDBweDsiPjwvZGl2PjwvdGQ+PC90cj4nfWkrPSI8L3RhYmxlPiJ9JChhKS53MnRhZygkLmV4dGVuZCh7aHRtbDppLGxlZnQ6LTQscG9zaXRpb246ImJvdHRvbXx0b3AiLGNsYXNzTmFtZToidzJ1aS1pbmZvLWJ1YmJsZSIsc3R5bGU6IiIsaGlkZU9uQ2xpY2s6ITB9LHMub3B0aW9uc3x8e30pKX0sZ2V0Q2VsbEVkaXRhYmxlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5jb2x1bW5zW3RdLHM9dGhpcy5yZWNvcmRzW2VdO2lmKCFzfHwhaSlyZXR1cm4gbnVsbDt2YXIgbj1zLncydWk/cy53MnVpLmVkaXRhYmxlOm51bGw7aWYoITE9PT1uKXJldHVybiBudWxsO2lmKChudWxsPT1ufHwhMD09PW4pJiYiZnVuY3Rpb24iPT10eXBlb2Yobj1pP2kuZWRpdGFibGU6bnVsbCkpe3ZhciBhPXRoaXMuZ2V0Q2VsbFZhbHVlKGUsdCwhMSk7bj1uLmNhbGwodGhpcyxzLGUsdCxhKX1yZXR1cm4gbn0sZ2V0Q2VsbFZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzLmNvbHVtbnNbdF0sbj0hMCE9PWk/dGhpcy5yZWNvcmRzW2VdOnRoaXMuc3VtbWFyeVtlXSxhPXRoaXMucGFyc2VGaWVsZChuLHMuZmllbGQpO3JldHVybiBuJiZuLncydWkmJm4udzJ1aS5jaGFuZ2VzJiZudWxsIT1uLncydWkuY2hhbmdlc1tzLmZpZWxkXSYmKGE9bi53MnVpLmNoYW5nZXNbcy5maWVsZF0pLCQuaXNQbGFpbk9iamVjdChhKSYmKHMub3B0aW9ucyYmcy5vcHRpb25zLml0ZW1zPyh2YWw9cy5vcHRpb25zLml0ZW1zLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PWEuaWR9KSxhPXZhbD92YWwudGV4dDphLmlkKToobnVsbCE9YS50ZXh0JiYoYT1hLnRleHQpLG51bGwhPWEuaWQmJihhPWEuaWQpKSksbnVsbD09YSYmKGE9IiIpLGF9LGdldEZvb3RlckhUTUw6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdj4gICAgPGRpdiBjbGFzcz0idzJ1aS1mb290ZXItbGVmdCI+PC9kaXY+ICAgIDxkaXYgY2xhc3M9IncydWktZm9vdGVyLXJpZ2h0Ij48L2Rpdj4gICAgPGRpdiBjbGFzcz0idzJ1aS1mb290ZXItY2VudGVyIj48L2Rpdj48L2Rpdj4nfSxzdGF0dXM6ZnVuY3Rpb24oZSl7aWYobnVsbCE9ZSkkKCIjZ3JpZF8iK3RoaXMubmFtZSsiX2Zvb3RlciIpLmZpbmQoIi53MnVpLWZvb3Rlci1sZWZ0IikuaHRtbChlKTtlbHNle3ZhciB0PSIiLGk9dGhpcy5nZXRTZWxlY3Rpb24oKTtpZigwPGkubGVuZ3RoJiYodGhpcy5zaG93LnN0YXR1c1NlbGVjdGlvbiYmMTxpLmxlbmd0aCYmKHQ9U3RyaW5nKGkubGVuZ3RoKS5yZXBsYWNlKC8oXGQpKD89KFxkXGRcZCkrKD8hXGQpKS9nLCIkMSwiKSsiICIrdzJ1dGlscy5sYW5nKCJzZWxlY3RlZCIpKSx0aGlzLnNob3cuc3RhdHVzUmVjb3JkSUQmJjE9PWkubGVuZ3RoKSl7dmFyIHM9aVswXTsib2JqZWN0Ij09dHlwZW9mIHMmJihzPXMucmVjaWQrIiwgIit3MnV0aWxzLmxhbmcoIkNvbHVtbiIpKyI6ICIrcy5jb2x1bW4pLHQ9dzJ1dGlscy5sYW5nKCJSZWNvcmQgSUQiKSsiOiAiK3MrIiAifSQoIiNncmlkXyIrdGhpcy5uYW1lKyJfZm9vdGVyIC53MnVpLWZvb3Rlci1sZWZ0IikuaHRtbCh0KSwxPT1pLmxlbmd0aD90aGlzLnRvb2xiYXIuZW5hYmxlKCJ3MnVpLWVkaXQiKTp0aGlzLnRvb2xiYXIuZGlzYWJsZSgidzJ1aS1lZGl0IiksMTw9aS5sZW5ndGg/dGhpcy50b29sYmFyLmVuYWJsZSgidzJ1aS1kZWxldGUiKTp0aGlzLnRvb2xiYXIuZGlzYWJsZSgidzJ1aS1kZWxldGUiKX19LGxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3MudW5zaGlmdCh0aGlzLmJveCksc2V0VGltZW91dChmdW5jdGlvbigpeyQoaS5ib3gpLmZpbmQoIiNncmlkXyIraS5uYW1lKyJfZW1wdHlfbXNnIikucmVtb3ZlKCksdzJ1dGlscy5sb2NrLmFwcGx5KHdpbmRvdyxzKX0sMTApfSx1bmxvY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ib3g7c2V0VGltZW91dChmdW5jdGlvbigpezA8JCh0KS5maW5kKCIudzJ1aS1tZXNzYWdlIikubm90KCIudzJ1aS1jbG9zaW5nIikubGVuZ3RofHx3MnV0aWxzLnVubG9jayh0LGUpfSwyNSl9LHN0YXRlU2F2ZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzO2lmKCF3MnV0aWxzLmhhc0xvY2FsU3RvcmFnZSlyZXR1cm4gbnVsbDtmb3IodmFyIHMsdD17Y29sdW1uczpbXSxzaG93OiQuZXh0ZW5kKHt9LHRoaXMuc2hvdyksbGFzdDp7c2VhcmNoOnRoaXMubGFzdC5zZWFyY2gsbXVsdGk6dGhpcy5sYXN0Lm11bHRpLGxvZ2ljOnRoaXMubGFzdC5sb2dpYyxsYWJlbDp0aGlzLmxhc3QubGFiZWwsZmllbGQ6dGhpcy5sYXN0LmZpZWxkLHNjcm9sbFRvcDp0aGlzLmxhc3Quc2Nyb2xsVG9wLHNjcm9sbExlZnQ6dGhpcy5sYXN0LnNjcm9sbExlZnR9LHNvcnREYXRhOltdLHNlYXJjaERhdGE6W119LG49MDtuPHRoaXMuY29sdW1ucy5sZW5ndGg7bisrKXt2YXIgYT1pLmNvbHVtbnNbbl0scj17fTtPYmplY3Qua2V5cyhpLnN0YXRlQ29sUHJvcHMpLmZvckVhY2goZnVuY3Rpb24oZSx0KXtpLnN0YXRlQ29sUHJvcHNbZV0mJihzPXZvaWQgMCE9PWFbZV0/YVtlXTppLnN0YXRlQ29sRGVmYXVsdHNbZV18fG51bGwscltlXT1zKX0pLHQuY29sdW1ucy5wdXNoKHIpfWZvcihuPTA7bjx0aGlzLnNvcnREYXRhLmxlbmd0aDtuKyspdC5zb3J0RGF0YS5wdXNoKCQuZXh0ZW5kKHt9LHRoaXMuc29ydERhdGFbbl0pKTtmb3Iobj0wO248dGhpcy5zZWFyY2hEYXRhLmxlbmd0aDtuKyspdC5zZWFyY2hEYXRhLnB1c2goJC5leHRlbmQoe30sdGhpcy5zZWFyY2hEYXRhW25dKSk7aWYoITAhPT1lKXt2YXIgbD10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InN0YXRlU2F2ZSIsdGFyZ2V0OnRoaXMubmFtZSxzdGF0ZTp0fSk7aWYoITA9PT1sLmlzQ2FuY2VsbGVkKXJldHVybiB2b2lkKCJmdW5jdGlvbiI9PXR5cGVvZiBjYWxsQmFjayYmY2FsbEJhY2soe3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6IlJlcXVlc3QgYWJvcnRlZC4ifSkpO3RyeXt2YXIgbz0kLnBhcnNlSlNPTihsb2NhbFN0b3JhZ2UudzJ1aXx8Int9Iik7KG89b3x8e30pLnN0YXRlc3x8KG8uc3RhdGVzPXt9KSxvLnN0YXRlc1t0aGlzLnN0YXRlSWR8fHRoaXMubmFtZV09dCxsb2NhbFN0b3JhZ2UudzJ1aT1KU09OLnN0cmluZ2lmeShvKX1jYXRjaChlKXtyZXR1cm4gZGVsZXRlIGxvY2FsU3RvcmFnZS53MnVpLG51bGx9dGhpcy50cmlnZ2VyKCQuZXh0ZW5kKGwse3BoYXNlOiJhZnRlciJ9KSl9cmV0dXJuIHR9LHN0YXRlUmVzdG9yZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9Im9iamVjdCIhPXR5cGVvZiB0aGlzLnVybD90aGlzLnVybDp0aGlzLnVybC5nZXQ7aWYoIWUpdHJ5e2lmKCF3MnV0aWxzLmhhc0xvY2FsU3RvcmFnZSlyZXR1cm4hMTsobD0obD0kLnBhcnNlSlNPTihsb2NhbFN0b3JhZ2UudzJ1aXx8Int9IikpfHx7fSkuc3RhdGVzfHwobC5zdGF0ZXM9e30pLGU9bC5zdGF0ZXNbdGhpcy5zdGF0ZUlkfHx0aGlzLm5hbWVdfWNhdGNoKGUpe3JldHVybiBkZWxldGUgbG9jYWxTdG9yYWdlLncydWksbnVsbH12YXIgcz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InN0YXRlUmVzdG9yZSIsdGFyZ2V0OnRoaXMubmFtZSxzdGF0ZTplfSk7aWYoITAhPT1zLmlzQ2FuY2VsbGVkKXtpZigkLmlzUGxhaW5PYmplY3QoZSkpeyQuZXh0ZW5kKHRoaXMuc2hvdyxlLnNob3cpLCQuZXh0ZW5kKHRoaXMubGFzdCxlLmxhc3QpO2Zvcih2YXIgbj10aGlzLmxhc3Quc2Nyb2xsVG9wLGE9dGhpcy5sYXN0LnNjcm9sbExlZnQscj0wO3I8ZS5jb2x1bW5zLmxlbmd0aDtyKyspe3ZhciBsPWUuY29sdW1uc1tyXSxvPXRoaXMuZ2V0Q29sdW1uKGwuZmllbGQsITApO251bGwhPT1vJiYoJC5leHRlbmQodGhpcy5jb2x1bW5zW29dLGwpLHIhPT1vJiZ0aGlzLmNvbHVtbnMuc3BsaWNlKHIsMCx0aGlzLmNvbHVtbnMuc3BsaWNlKG8sMSlbMF0pKX10aGlzLnNvcnREYXRhLnNwbGljZSgwLHRoaXMuc29ydERhdGEubGVuZ3RoKTtmb3Iocj0wO3I8ZS5zb3J0RGF0YS5sZW5ndGg7cisrKXRoaXMuc29ydERhdGEucHVzaChlLnNvcnREYXRhW3JdKTt0aGlzLnNlYXJjaERhdGEuc3BsaWNlKDAsdGhpcy5zZWFyY2hEYXRhLmxlbmd0aCk7Zm9yKHI9MDtyPGUuc2VhcmNoRGF0YS5sZW5ndGg7cisrKXRoaXMuc2VhcmNoRGF0YS5wdXNoKGUuc2VhcmNoRGF0YVtyXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2l8fCgwPHQuc29ydERhdGEubGVuZ3RoJiZ0LmxvY2FsU29ydCgpLDA8dC5zZWFyY2hEYXRhLmxlbmd0aCYmdC5sb2NhbFNlYXJjaCgpKSx0Lmxhc3Quc2Nyb2xsVG9wPW4sdC5sYXN0LnNjcm9sbExlZnQ9YSx0LnJlZnJlc2goKX0sMSl9cmV0dXJuIHRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLCEwfSJmdW5jdGlvbiI9PXR5cGVvZiBjYWxsQmFjayYmY2FsbEJhY2soe3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6IlJlcXVlc3QgYWJvcnRlZC4ifSl9LHN0YXRlUmVzZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLnN0YXRlUmVzdG9yZSh0aGlzLmxhc3Quc3RhdGUpLHcydXRpbHMuaGFzTG9jYWxTdG9yYWdlKXRyeXt2YXIgZT0kLnBhcnNlSlNPTihsb2NhbFN0b3JhZ2UudzJ1aXx8Int9Iik7ZS5zdGF0ZXMmJmUuc3RhdGVzW3RoaXMuc3RhdGVJZHx8dGhpcy5uYW1lXSYmZGVsZXRlIGUuc3RhdGVzW3RoaXMuc3RhdGVJZHx8dGhpcy5uYW1lXSxsb2NhbFN0b3JhZ2UudzJ1aT1KU09OLnN0cmluZ2lmeShlKX1jYXRjaChlKXtyZXR1cm4gZGVsZXRlIGxvY2FsU3RvcmFnZS53MnVpLG51bGx9fSxwYXJzZUZpZWxkOmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5uZXN0ZWRGaWVsZHMpe3ZhciBpPSIiO3RyeXtpPWU7Zm9yKHZhciBzPVN0cmluZyh0KS5zcGxpdCgiLiIpLG49MDtuPHMubGVuZ3RoO24rKylpPWlbc1tuXV19Y2F0Y2goZSl7aT0iIn1yZXR1cm4gaX1yZXR1cm4gZT9lW3RdOiIifSxwcmVwYXJlRGF0YTpmdW5jdGlvbigpe2Zvcih2YXIgcj10aGlzLGU9MDtlPHRoaXMucmVjb3Jkcy5sZW5ndGg7ZSsrKXtsKHRoaXMucmVjb3Jkc1tlXSl9ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQ9MDt0PHIuY29sdW1ucy5sZW5ndGg7dCsrKXt2YXIgaT1yLmNvbHVtbnNbdF07aWYobnVsbCE9ZVtpLmZpZWxkXSYmInN0cmluZyI9PXR5cGVvZiBpLnJlbmRlcil7aWYoLTEhPVsibnVtYmVyIiwiaW50IiwiZmxvYXQiLCJtb25leSIsImN1cnJlbmN5IiwicGVyY2VudCJdLmluZGV4T2YoaS5yZW5kZXIuc3BsaXQoIjoiKVswXSkmJiJudW1iZXIiIT10eXBlb2YgZVtpLmZpZWxkXSYmKGVbaS5maWVsZF09cGFyc2VGbG9hdChlW2kuZmllbGRdKSksLTEhPVsiZGF0ZSIsImFnZSJdLmluZGV4T2YoaS5yZW5kZXIuc3BsaXQoIjoiKVswXSkmJiFlW2kuZmllbGQrIl8iXSl7dmFyIHM9ZVtpLmZpZWxkXTt3MnV0aWxzLmlzSW50KHMpJiYocz1wYXJzZUludChzKSksZVtpLmZpZWxkKyJfIl09bmV3IERhdGUocyl9aWYoLTEhPVsidGltZSJdLmluZGV4T2YoaS5yZW5kZXIpKWlmKHcydXRpbHMuaXNUaW1lKGVbaS5maWVsZF0pKXt2YXIgbj13MnV0aWxzLmlzVGltZShlW2kuZmllbGRdLCEwKTsocz1uZXcgRGF0ZSkuc2V0SG91cnMobi5ob3VycyxuLm1pbnV0ZXMsbi5zZWNvbmRzP24uc2Vjb25kczowLDApLGVbaS5maWVsZCsiXyJdfHwoZVtpLmZpZWxkKyJfIl09cyl9ZWxzZXtuPWVbaS5maWVsZF07dzJ1dGlscy5pc0ludChuKSYmKG49cGFyc2VJbnQobikpO249bnVsbCE9bj9uZXcgRGF0ZShuKTpuZXcgRGF0ZTsocz1uZXcgRGF0ZSkuc2V0SG91cnMobi5nZXRIb3VycygpLG4uZ2V0TWludXRlcygpLG4uZ2V0U2Vjb25kcygpLDApLGVbaS5maWVsZCsiXyJdfHwoZVtpLmZpZWxkKyJfIl09cyl9fX1pZihlLncydWkmJmUudzJ1aS5jaGlsZHJlbiYmITAhPT1lLncydWkuZXhwYW5kZWQpZm9yKHZhciBhPTA7YTxlLncydWkuY2hpbGRyZW4ubGVuZ3RoO2ErKyl7bChlLncydWkuY2hpbGRyZW5bYV0pfX19LG5leHRDZWxsOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10KzE7aWYocz49dGhpcy5jb2x1bW5zLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbj10aGlzLnJlY29yZHNbZV0udzJ1aSxhPSh0aGlzLmNvbHVtbnNbdF0sdGhpcy5jb2x1bW5zW3NdKSxyPW4mJm4uY29sc3BhbiYmIWlzTmFOKG4uY29sc3BhblthLmZpZWxkXSk/cGFyc2VJbnQobi5jb2xzcGFuW2EuZmllbGRdKToxO2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoYSYmYS5oaWRkZW58fDA9PT1yKXJldHVybiB0aGlzLm5leHRDZWxsKGUscyxpKTtpZihpKXt2YXIgbD10aGlzLmdldENlbGxFZGl0YWJsZShlLHQpO2lmKG51bGw9PWx8fC0xIT1bImNoZWNrYm94IiwiY2hlY2siXS5pbmRleE9mKGwudHlwZSkpcmV0dXJuIHRoaXMubmV4dENlbGwoZSxzLGkpfXJldHVybiBzfSxwcmV2Q2VsbDpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dC0xO2lmKHM8MClyZXR1cm4gbnVsbDt2YXIgbj10aGlzLnJlY29yZHNbZV0udzJ1aSxhPXRoaXMuY29sdW1uc1tzXSxyPW4mJm4uY29sc3BhbiYmIWlzTmFOKG4uY29sc3BhblthLmZpZWxkXSk/cGFyc2VJbnQobi5jb2xzcGFuW2EuZmllbGRdKToxO2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoYSYmYS5oaWRkZW58fDA9PT1yKXJldHVybiB0aGlzLnByZXZDZWxsKGUscyxpKTtpZihpKXt2YXIgbD10aGlzLmdldENlbGxFZGl0YWJsZShlLHQpO2lmKG51bGw9PWx8fC0xIT1bImNoZWNrYm94IiwiY2hlY2siXS5pbmRleE9mKGwudHlwZSkpcmV0dXJuIHRoaXMucHJldkNlbGwoZSxzLGkpfXJldHVybiBzfSxuZXh0Um93OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5sYXN0LnNlYXJjaElkcyxzPW51bGw7aWYoZSsxPHRoaXMucmVjb3Jkcy5sZW5ndGgmJjA9PT1pLmxlbmd0aHx8MDxpLmxlbmd0aCYmZTxpW2kubGVuZ3RoLTFdKXtpZihlKyssMDxpLmxlbmd0aClmb3IoOyEoLTEhPSQuaW5BcnJheShlLGkpfHxlPnRoaXMucmVjb3Jkcy5sZW5ndGgpOyllKys7dmFyIG49dGhpcy5yZWNvcmRzW2VdLncydWksYT10aGlzLmNvbHVtbnNbdF07cz0wPT09KG4mJm4uY29sc3BhbiYmbnVsbCE9YSYmIWlzTmFOKG4uY29sc3BhblthLmZpZWxkXSk/cGFyc2VJbnQobi5jb2xzcGFuW2EuZmllbGRdKToxKT90aGlzLm5leHRSb3coZSx0KTplfXJldHVybiBzfSxwcmV2Um93OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5sYXN0LnNlYXJjaElkcyxzPW51bGw7aWYoMDxlJiYwPT09aS5sZW5ndGh8fDA8aS5sZW5ndGgmJmU+aVswXSl7aWYoZS0tLDA8aS5sZW5ndGgpZm9yKDshKC0xIT0kLmluQXJyYXkoZSxpKXx8ZTwwKTspZS0tO3ZhciBuPXRoaXMucmVjb3Jkc1tlXS53MnVpLGE9dGhpcy5jb2x1bW5zW3RdO3M9MD09PShuJiZuLmNvbHNwYW4mJm51bGwhPWEmJiFpc05hTihuLmNvbHNwYW5bYS5maWVsZF0pP3BhcnNlSW50KG4uY29sc3BhblthLmZpZWxkXSk6MSk/dGhpcy5wcmV2Um93KGUsdCk6ZX1yZXR1cm4gc30sc2VsZWN0aW9uU2F2ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxhc3QuX3NlbGVjdGlvbj10aGlzLmdldFNlbGVjdGlvbigpLHRoaXMubGFzdC5fc2VsZWN0aW9ufSxzZWxlY3Rpb25SZXN0b3JlOmZ1bmN0aW9uKGUpe3ZhciB0PShuZXcgRGF0ZSkuZ2V0VGltZSgpO3RoaXMubGFzdC5zZWxlY3Rpb249e2luZGV4ZXM6W10sY29sdW1uczp7fX07dmFyIGk9dGhpcy5sYXN0LnNlbGVjdGlvbixzPXRoaXMubGFzdC5fc2VsZWN0aW9uO2lmKHMpZm9yKHZhciBuPTA7bjxzLmxlbmd0aDtuKyspe3ZhciBhO2lmKCQuaXNQbGFpbk9iamVjdChzW25dKSludWxsIT0oYT10aGlzLmdldChzW25dLnJlY2lkLCEwKSkmJigtMT09aS5pbmRleGVzLmluZGV4T2YoYSkmJmkuaW5kZXhlcy5wdXNoKGEpLGkuY29sdW1uc1thXXx8KGkuY29sdW1uc1thXT1bXSksaS5jb2x1bW5zW2FdLnB1c2goc1tuXS5jb2x1bW4pKTtlbHNlIG51bGwhPShhPXRoaXMuZ2V0KHNbbl0sITApKSYmaS5pbmRleGVzLnB1c2goYSl9cmV0dXJuIGRlbGV0ZSB0aGlzLmxhc3QuX3NlbGVjdGlvbiwhMCE9PWUmJnRoaXMucmVmcmVzaCgpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLXR9LG1lc3NhZ2U6ZnVuY3Rpb24oZSx0KXsic3RyaW5nIj09dHlwZW9mIGUmJihlPXt3aWR0aDplLmxlbmd0aDwzMDA/MzUwOjU1MCxoZWlnaHQ6ZS5sZW5ndGg8MzAwPzE3MDoyNTAsYm9keTonPGRpdiBjbGFzcz0idzJ1aS1jZW50ZXJlZCI+JytlKyI8L2Rpdj4iLGJ1dHRvbnM6JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idzJ1aS1idG4iIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10ubWVzc2FnZSgpXCI+T2s8L2J1dHRvbj4iLG9uT3BlbjpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCh0aGlzLmJveCkuZmluZCgiLncydWktYnRuIikuZm9jdXMoKX0sMjUpfSxvbkNsb3NlOmZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0KCl9fSksdzJ1dGlscy5tZXNzYWdlLmNhbGwodGhpcyx7Ym94OnRoaXMuYm94LHBhdGg6IncydWkuIit0aGlzLm5hbWUsdGl0bGU6Ii53MnVpLWdyaWQtaGVhZGVyOnZpc2libGUiLGJvZHk6Ii53MnVpLWdyaWQtYm94In0sZSl9fSwkLmV4dGVuZCh3MmdyaWQucHJvdG90eXBlLHcydXRpbHMuZXZlbnQpLHcyb2JqLmdyaWQ9dzJncmlkfShqUXVlcnkpLGZ1bmN0aW9uKEQpe2Z1bmN0aW9uIGQoZSl7dGhpcy5ib3g9bnVsbCx0aGlzLm5hbWU9bnVsbCx0aGlzLnBhbmVscz1bXSx0aGlzLnRtcD17fSx0aGlzLnBhZGRpbmc9MSx0aGlzLnJlc2l6ZXI9NCx0aGlzLnN0eWxlPSIiLEQuZXh0ZW5kKCEwLHRoaXMsdzJvYmoubGF5b3V0LGUpfXZhciB6PVsidG9wIiwibGVmdCIsIm1haW4iLCJwcmV2aWV3IiwicmlnaHQiLCJib3R0b20iXTtELmZuLncybGF5b3V0PWZ1bmN0aW9uKGUpe2lmKEQuaXNQbGFpbk9iamVjdChlKSl7aWYoIXcydXRpbHMuY2hlY2tOYW1lKGUsIncybGF5b3V0IikpcmV0dXJuO3ZhciB0PWUucGFuZWxzfHxbXSxpPW5ldyBkKGUpO0QuZXh0ZW5kKGkse2hhbmRsZXJzOltdLHBhbmVsczpbXX0pO2Zvcih2YXIgcz0wLG49dC5sZW5ndGg7czxuO3MrKylpLnBhbmVsc1tzXT1ELmV4dGVuZCghMCx7fSxkLnByb3RvdHlwZS5wYW5lbCx0W3NdKSwoRC5pc1BsYWluT2JqZWN0KGkucGFuZWxzW3NdLnRhYnMpfHxELmlzQXJyYXkoaS5wYW5lbHNbc10udGFicykpJiZsKGksdFtzXS50eXBlKSwoRC5pc1BsYWluT2JqZWN0KGkucGFuZWxzW3NdLnRvb2xiYXIpfHxELmlzQXJyYXkoaS5wYW5lbHNbc10udG9vbGJhcikpJiZvKGksdFtzXS50eXBlKTtmb3IodmFyIGE9MDthPHoubGVuZ3RoO2ErKyludWxsPT1pLmdldCh6W2FdKSYmaS5wYW5lbHMucHVzaChELmV4dGVuZCghMCx7fSxkLnByb3RvdHlwZS5wYW5lbCx7dHlwZTp6W2FdLGhpZGRlbjoibWFpbiIhPT16W2FdLHNpemU6NTB9KSk7cmV0dXJuIDA8RCh0aGlzKS5sZW5ndGgmJmkucmVuZGVyKEQodGhpcylbMF0pLHcydWlbaS5uYW1lXT1pfXZhciByPXcydWlbRCh0aGlzKS5hdHRyKCJuYW1lIildO3JldHVybiByPzA8YXJndW1lbnRzLmxlbmd0aD8ocltlXSYmcltlXS5hcHBseShyLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksdGhpcyk6cjpudWxsO2Z1bmN0aW9uIGwoZSx0LGkpe3ZhciBzPWUuZ2V0KHQpO3JldHVybiBudWxsIT1zJiZudWxsPT1pJiYoaT1zLnRhYnMpLG51bGwhPXMmJm51bGwhPWkmJihELmlzQXJyYXkoaSkmJihpPXt0YWJzOml9KSxEKCkudzJkZXN0cm95KGUubmFtZSsiXyIrdCsiX3RhYnMiKSxzLnRhYnM9RCgpLncydGFicyhELmV4dGVuZCh7fSxpLHtvd25lcjplLG5hbWU6ZS5uYW1lKyJfIit0KyJfdGFicyJ9KSkscy5zaG93LnRhYnM9ITApfWZ1bmN0aW9uIG8oZSx0LGkpe3ZhciBzPWUuZ2V0KHQpO3JldHVybiBudWxsIT1zJiZudWxsPT1pJiYoaT1zLnRvb2xiYXIpLG51bGwhPXMmJm51bGwhPWkmJihELmlzQXJyYXkoaSkmJihpPXtpdGVtczppfSksRCgpLncyZGVzdHJveShlLm5hbWUrIl8iK3QrIl90b29sYmFyIikscy50b29sYmFyPUQoKS53MnRvb2xiYXIoRC5leHRlbmQoe30saSx7b3duZXI6ZSxuYW1lOmUubmFtZSsiXyIrdCsiX3Rvb2xiYXIifSkpLHMuc2hvdy50b29sYmFyPSEwKX19LGQucHJvdG90eXBlPXtvblNob3c6bnVsbCxvbkhpZGU6bnVsbCxvblJlc2l6aW5nOm51bGwsb25SZXNpemVyQ2xpY2s6bnVsbCxvblJlbmRlcjpudWxsLG9uUmVmcmVzaDpudWxsLG9uQ29udGVudDpudWxsLG9uUmVzaXplOm51bGwsb25EZXN0cm95Om51bGwscGFuZWw6e3R5cGU6bnVsbCx0aXRsZToiIixzaXplOjEwMCxtaW5TaXplOjIwLG1heFNpemU6ITEsaGlkZGVuOiExLHJlc2l6YWJsZTohMSxvdmVyZmxvdzoiYXV0byIsc3R5bGU6IiIsY29udGVudDoiIix0YWJzOm51bGwsdG9vbGJhcjpudWxsLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsc2hvdzp7dG9vbGJhcjohMSx0YWJzOiExfSxjYWxsQmFjazpudWxsLG9uUmVmcmVzaDpudWxsLG9uU2hvdzpudWxsLG9uSGlkZTpudWxsfSxjb250ZW50OmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gY29uc29sZS5sb2coIk5PVElDRTogbGF5b3V0LmNvbnRlbnQgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgbGF5b3V0Lmh0bWwoKSBpbnN0ZWFkIiksdGhpcy5odG1sKGUsdCxpKX0saHRtbDpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyxuPXRoaXMuZ2V0KGUpLGE9e3BhbmVsOmUsaHRtbDpuLmNvbnRlbnQsZXJyb3I6ITEsY2FuY2VsbGVkOiExLHJlbW92ZWQ6ZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihuLmNhbGxCYWNrPWUpfX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4uY2FsbEJhY2smJihuLmNhbGxCYWNrKHtwYW5lbDplLGNvbnRlbnQ6bi5jb250ZW50LG5ld19jb250ZW50OnQsdHJhbnNpdGlvbjppfHwibm9uZSJ9KSxuLmNhbGxCYWNrPW51bGwpLCJjc3MiPT1lKXJldHVybiBEKCIjbGF5b3V0XyIrcy5uYW1lKyJfcGFuZWxfY3NzIikuaHRtbCgiPHN0eWxlPiIrdCsiPC9zdHlsZT4iKSxhLnN0YXR1cz0hMCxhO2lmKG51bGw9PW4pcmV0dXJuIGNvbnNvbGUubG9nKCJFUlJPUjogaW5jb3JyZWN0IHBhbmVsIG5hbWUuIFBhbmVsIG5hbWUgY2FuIGJlIG1haW4sIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgcHJldmlldyBvciBjc3MiKSxhLmVycm9yPSEwLGE7aWYobnVsbD09dClyZXR1cm4gYTt2YXIgcj10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImNvbnRlbnQiLHRhcmdldDplLG9iamVjdDpuLGNvbnRlbnQ6dCx0cmFuc2l0aW9uOml9KTtpZighMD09PXIuaXNDYW5jZWxsZWQpcmV0dXJuIGEuY2FuY2VsbGVkPSEwLGE7aWYodCBpbnN0YW5jZW9mIGpRdWVyeSlyZXR1cm4gY29uc29sZS5sb2coIkVSUk9SOiBZb3UgY2FuIG5vdCBwYXNzIGpRdWVyeSBvYmplY3QgdG8gdzJsYXlvdXQuY29udGVudCgpIG1ldGhvZCIpLGE7dmFyIGw9IiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF8iK24udHlwZSxvPUQobCsiPiAudzJ1aS1wYW5lbC1jb250ZW50IiksZD0wO2lmKDA8by5sZW5ndGgmJihEKGwpLnNjcm9sbFRvcCgwKSxkPUQobykucG9zaXRpb24oKS50b3ApLCIiPT09bi5jb250ZW50KW4uY29udGVudD10LHRoaXMucmVmcmVzaChlKTtlbHNle2lmKG4uY29udGVudD10LCFuLmhpZGRlbiYmbnVsbCE9aSYmIiIhPT1pKXt2YXIgdT1EKGwrIj4gLncydWktcGFuZWwtY29udGVudCIpO3UuYWZ0ZXIoJzxkaXYgY2xhc3M9IncydWktcGFuZWwtY29udGVudCBuZXctcGFuZWwiIHN0eWxlPSInK3VbMF0uc3R5bGUuY3NzVGV4dCsnIj48L2Rpdj4nKTt2YXIgYz1EKGwrIj4gLncydWktcGFuZWwtY29udGVudC5uZXctcGFuZWwiKTt1LmNzcygidG9wIixkKSxjLmNzcygidG9wIixkKSwib2JqZWN0Ij09dHlwZW9mIHQ/KHQuYm94PWNbMF0sdC5yZW5kZXIoKSk6Yy5odG1sKHQpLHcydXRpbHMudHJhbnNpdGlvbih1WzBdLGNbMF0saSxmdW5jdGlvbigpe3UucmVtb3ZlKCksYy5yZW1vdmVDbGFzcygibmV3LXBhbmVsIiksYy5jc3MoIm92ZXJmbG93IixuLm92ZXJmbG93KSxzLnJlc2l6ZSgpLC0xIT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzLnJlc2l6ZSgpfSwxMDApfSl9dGhpcy5yZWZyZXNoKGUpfXJldHVybiBzLnRyaWdnZXIoRC5leHRlbmQocix7cGhhc2U6ImFmdGVyIn0pKSxzLnJlc2l6ZSgpLC0xIT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzLnJlc2l6ZSgpfSwxMDApLGF9LG1lc3NhZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzOyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3dpZHRoOnQubGVuZ3RoPDMwMD8zNTA6NTUwLGhlaWdodDp0Lmxlbmd0aDwzMDA/MTcwOjI1MCxib2R5Oic8ZGl2IGNsYXNzPSJ3MnVpLWNlbnRlcmVkIj4nK3QrIjwvZGl2PiIsYnV0dG9uczonPGJ1dHRvbiBjbGFzcz0idzJ1aS1idG4iIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10ubWVzc2FnZSgnIitlKyInKVwiPk9rPC9idXR0b24+Iixvbk9wZW46ZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe0QodGhpcy5ib3gpLmZpbmQoIi53MnVpLWJ0biIpLmZvY3VzKCl9LDI1KX19KTt2YXIgcyxuPXRoaXMuZ2V0KGUpLGE9RCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3BhbmVsXyIrbi50eXBlKS5jc3MoIm92ZXJmbG93Iik7dCYmKHQub25DbG9zZSYmKHM9dC5vbkNsb3NlKSx0Lm9uQ2xvc2U9ZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIHMmJnMoZSksZS5kb25lKGZ1bmN0aW9uKCl7RCgiI2xheW91dF8iK2kubmFtZSsiX3BhbmVsXyIrbi50eXBlKS5jc3MoIm92ZXJmbG93IixhKX0pfSksRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3BhbmVsXyIrbi50eXBlKS5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIiksdzJ1dGlscy5tZXNzYWdlLmNhbGwodGhpcyx7Ym94OkQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF8iK24udHlwZSkscGFyYW06ZSxwYXRoOiJ3MnVpLiIrdGhpcy5uYW1lLHRpdGxlOiIudzJ1aS1wYW5lbC10aXRsZTp2aXNpYmxlIixib2R5OiIudzJ1aS1wYW5lbC1jb250ZW50In0sdCl9LGxvYWQ6ZnVuY3Rpb24ocyxlLG4sYSl7dmFyIHI9dGhpcztyZXR1cm4iY3NzIj09cz8oRC5nZXQoZSxmdW5jdGlvbihlLHQsaSl7ci5jb250ZW50KHMsaS5yZXNwb25zZVRleHQpLGEmJmEoKX0pLCEwKTpudWxsIT10aGlzLmdldChzKSYmKEQuZ2V0KGUsZnVuY3Rpb24oZSx0LGkpe3IuY29udGVudChzLGkucmVzcG9uc2VUZXh0LG4pLGEmJmEoKSxyLnJlc2l6ZSgpLC0xIT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyLnJlc2l6ZSgpfSwxMDApfSksITApfSxzaXplVG86ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXM7cmV0dXJuIG51bGwhPXMuZ2V0KGUpJiYoRChzLmJveCkuZmluZCgiID4gZGl2ID4gLncydWktcGFuZWwiKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLCEwIT09aT8iLjJzIjoiMHMiKSksc2V0VGltZW91dChmdW5jdGlvbigpe3Muc2V0KGUse3NpemU6dH0pfSwxKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RChzLmJveCkuZmluZCgiID4gZGl2ID4gLncydWktcGFuZWwiKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLCIwcyIpKSxzLnJlc2l6ZSgpfSw1MDApLCEwKX0sc2hvdzpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMscz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InNob3ciLHRhcmdldDplLG9iamVjdDp0aGlzLmdldChlKSxpbW1lZGlhdGU6dH0pO2lmKCEwIT09cy5pc0NhbmNlbGxlZCl7dmFyIG49aS5nZXQoZSk7cmV0dXJuIG51bGwhPW4mJighKG4uaGlkZGVuPSExKT09PXQ/KEQoIiNsYXlvdXRfIitpLm5hbWUrIl9wYW5lbF8iK2UpLmNzcyh7b3BhY2l0eToiMSJ9KSxpLnRyaWdnZXIoRC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKSxpLnJlc2l6ZSgpKTooRCgiI2xheW91dF8iK2kubmFtZSsiX3BhbmVsXyIrZSkuY3NzKHtvcGFjaXR5OiIwIn0pLEQoaS5ib3gpLmZpbmQoIiA+IGRpdiA+IC53MnVpLXBhbmVsIikuY3NzKHcydXRpbHMuY3NzUHJlZml4KCJ0cmFuc2l0aW9uIiwiLjJzIikpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnJlc2l6ZSgpfSwxKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RCgiI2xheW91dF8iK2kubmFtZSsiX3BhbmVsXyIrZSkuY3NzKHtvcGFjaXR5OiIxIn0pfSwyNTApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtEKGkuYm94KS5maW5kKCIgPiBkaXYgPiAudzJ1aS1wYW5lbCIpLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCgidHJhbnNpdGlvbiIsIjBzIikpLGkudHJpZ2dlcihELmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLGkucmVzaXplKCl9LDUwMCkpLCEwKX19LGhpZGU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLHM9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJoaWRlIix0YXJnZXQ6ZSxvYmplY3Q6dGhpcy5nZXQoZSksaW1tZWRpYXRlOnR9KTtpZighMCE9PXMuaXNDYW5jZWxsZWQpe3ZhciBuPWkuZ2V0KGUpO3JldHVybiBudWxsIT1uJiYoKG4uaGlkZGVuPSEwKT09PXQ/KEQoIiNsYXlvdXRfIitpLm5hbWUrIl9wYW5lbF8iK2UpLmNzcyh7b3BhY2l0eToiMCJ9KSxpLnRyaWdnZXIoRC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKSxpLnJlc2l6ZSgpKTooRChpLmJveCkuZmluZCgiID4gZGl2ID4gLncydWktcGFuZWwiKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLCIuMnMiKSksRCgiI2xheW91dF8iK2kubmFtZSsiX3BhbmVsXyIrZSkuY3NzKHtvcGFjaXR5OiIwIn0pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnJlc2l6ZSgpfSwxKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RChpLmJveCkuZmluZCgiID4gZGl2ID4gLncydWktcGFuZWwiKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLCIwcyIpKSxpLnRyaWdnZXIoRC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKSxpLnJlc2l6ZSgpfSw1MDApKSwhMCl9fSx0b2dnbGU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldChlKTtyZXR1cm4gbnVsbCE9aSYmKGkuaGlkZGVuP3RoaXMuc2hvdyhlLHQpOnRoaXMuaGlkZShlLHQpKX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXQoZSwhMCk7cmV0dXJuIG51bGwhPWkmJihELmV4dGVuZCh0aGlzLnBhbmVsc1tpXSx0KSxudWxsPT10LmNvbnRlbnQmJm51bGw9PXQucmVzaXphYmxlfHx0aGlzLnJlZnJlc2goZSksdGhpcy5yZXNpemUoKSwhMCl9LGdldDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaT0wO2k8dGhpcy5wYW5lbHMubGVuZ3RoO2krKylpZih0aGlzLnBhbmVsc1tpXS50eXBlPT1lKXJldHVybiEwPT09dD9pOnRoaXMucGFuZWxzW2ldO3JldHVybiBudWxsfSxlbDpmdW5jdGlvbihlKXt2YXIgdD1EKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfIitlKyI+IC53MnVpLXBhbmVsLWNvbnRlbnQiKTtyZXR1cm4gMSE9dC5sZW5ndGg/bnVsbDp0WzBdfSxoaWRlVG9vbGJhcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldChlKTt0JiYodC5zaG93LnRvb2xiYXI9ITEsRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3BhbmVsXyIrZSsiPiAudzJ1aS1wYW5lbC10b29sYmFyIikuaGlkZSgpLHRoaXMucmVzaXplKCkpfSxzaG93VG9vbGJhcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldChlKTt0JiYodC5zaG93LnRvb2xiYXI9ITAsRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3BhbmVsXyIrZSsiPiAudzJ1aS1wYW5lbC10b29sYmFyIikuc2hvdygpLHRoaXMucmVzaXplKCkpfSx0b2dnbGVUb29sYmFyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0KGUpO3QmJih0LnNob3cudG9vbGJhcj90aGlzLmhpZGVUb29sYmFyKGUpOnRoaXMuc2hvd1Rvb2xiYXIoZSkpfSxhc3NpZ25Ub29sYmFyOmZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiB0JiZudWxsIT13MnVpW3RdJiYodD13MnVpW3RdKTt2YXIgaT10aGlzLmdldChlKTtpLnRvb2xiYXI9dDt2YXIgcz1EKHRoaXMuYm94KS5maW5kKGUrIj4gLncydWktcGFuZWwtdG9vbGJhciIpO251bGwhPWkudG9vbGJhcj8oMD09PXMuZmluZCgiW25hbWU9IitpLnRvb2xiYXIubmFtZSsiXSIpLmxlbmd0aD9zLncycmVuZGVyKGkudG9vbGJhcik6bnVsbCE9aS50b29sYmFyJiZpLnRvb2xiYXIucmVmcmVzaCgpLCh0Lm93bmVyPXRoaXMpLnNob3dUb29sYmFyKGUpLHRoaXMucmVmcmVzaChlKSk6KHMuaHRtbCgiIiksdGhpcy5oaWRlVG9vbGJhcihlKSl9LGhpZGVUYWJzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0KGUpO3QmJih0LnNob3cudGFicz0hMSxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfIitlKyI+IC53MnVpLXBhbmVsLXRhYnMiKS5oaWRlKCksdGhpcy5yZXNpemUoKSl9LHNob3dUYWJzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0KGUpO3QmJih0LnNob3cudGFicz0hMCxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfIitlKyI+IC53MnVpLXBhbmVsLXRhYnMiKS5zaG93KCksdGhpcy5yZXNpemUoKSl9LHRvZ2dsZVRhYnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQoZSk7dCYmKHQuc2hvdy50YWJzP3RoaXMuaGlkZVRhYnMoZSk6dGhpcy5zaG93VGFicyhlKSl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgYz10aGlzLHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksaT1jLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlbmRlciIsdGFyZ2V0OmMubmFtZSxib3g6ZX0pO2lmKCEwIT09aS5pc0NhbmNlbGxlZCl7aWYobnVsbCE9ZSYmKDA8RChjLmJveCkuZmluZCgiI2xheW91dF8iK2MubmFtZSsiX3BhbmVsX21haW4iKS5sZW5ndGgmJkQoYy5ib3gpLnJlbW92ZUF0dHIoIm5hbWUiKS5yZW1vdmVDbGFzcygidzJ1aS1sYXlvdXQiKS5odG1sKCIiKSxjLmJveD1lKSwhYy5ib3gpcmV0dXJuITE7RChjLmJveCkuYXR0cigibmFtZSIsYy5uYW1lKS5hZGRDbGFzcygidzJ1aS1sYXlvdXQiKS5odG1sKCI8ZGl2PjwvZGl2PiIpLDA8RChjLmJveCkubGVuZ3RoJiYoRChjLmJveClbMF0uc3R5bGUuY3NzVGV4dCs9Yy5zdHlsZSk7Zm9yKHZhciBzPTA7czx6Lmxlbmd0aDtzKyspe2MuZ2V0KHpbc10pO3ZhciBuPSc8ZGl2IGlkPSJsYXlvdXRfJytjLm5hbWUrIl9wYW5lbF8iK3pbc10rJyIgY2xhc3M9IncydWktcGFuZWwiPiAgICA8ZGl2IGNsYXNzPSJ3MnVpLXBhbmVsLXRpdGxlIj48L2Rpdj4gICAgPGRpdiBjbGFzcz0idzJ1aS1wYW5lbC10YWJzIj48L2Rpdj4gICAgPGRpdiBjbGFzcz0idzJ1aS1wYW5lbC10b29sYmFyIj48L2Rpdj4gICAgPGRpdiBjbGFzcz0idzJ1aS1wYW5lbC1jb250ZW50Ij48L2Rpdj48L2Rpdj48ZGl2IGlkPSJsYXlvdXRfJytjLm5hbWUrIl9yZXNpemVyXyIreltzXSsnIiBjbGFzcz0idzJ1aS1yZXNpemVyIj48L2Rpdj4nO0QoYy5ib3gpLmZpbmQoIiA+IGRpdiIpLmFwcGVuZChuKX1yZXR1cm4gRChjLmJveCkuZmluZCgiID4gZGl2IikuYXBwZW5kKCc8ZGl2IGlkPSJsYXlvdXRfJytjLm5hbWUrJ19wYW5lbF9jc3MiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwMDBweDsiPjwvZGl2PicpLGMucmVmcmVzaCgpLGMudHJpZ2dlcihELmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnRtcC5ldmVudHM9e3Jlc2l6ZTpmdW5jdGlvbihlKXtudWxsPT13MnVpW2MubmFtZV0/RCh3aW5kb3cpLm9mZigicmVzaXplLncydWktIitjLm5hbWUpOncydWlbYy5uYW1lXS5yZXNpemUoKX0scmVzaXplU3RhcnQ6YSxtb3VzZU1vdmU6bCxtb3VzZVVwOnJ9LEQod2luZG93KS5vbigicmVzaXplLncydWktIitjLm5hbWUsYy50bXAuZXZlbnRzLnJlc2l6ZSksYy5yZXNpemUoKX0sMCksKG5ldyBEYXRlKS5nZXRUaW1lKCktdH1mdW5jdGlvbiBhKGUsdCl7aWYoYy5ib3gpe3Q9dHx8d2luZG93LmV2ZW50LEQoZG9jdW1lbnQpLm9mZigibW91c2Vtb3ZlIixjLnRtcC5ldmVudHMubW91c2VNb3ZlKS5vbigibW91c2Vtb3ZlIixjLnRtcC5ldmVudHMubW91c2VNb3ZlKSxEKGRvY3VtZW50KS5vZmYoIm1vdXNldXAiLGMudG1wLmV2ZW50cy5tb3VzZVVwKS5vbigibW91c2V1cCIsYy50bXAuZXZlbnRzLm1vdXNlVXApLGMudG1wLnJlc2l6ZT17dHlwZTplLHg6dC5zY3JlZW5YLHk6dC5zY3JlZW5ZLGRpZmZfeDowLGRpZmZfeTowLHZhbHVlOjB9O2Zvcih2YXIgaT0wO2k8ei5sZW5ndGg7aSsrKXt2YXIgcz1EKGMuZWwoeltpXSkpLnBhcmVudCgpLmZpbmQoIi53MnVpLWxvY2siKTswPHMubGVuZ3RoP3MuYXR0cigibG9ja2VkIiwicHJldmlvdXMiKTpjLmxvY2soeltpXSx7b3BhY2l0eTowfSl9ImxlZnQiIT1lJiYicmlnaHQiIT1lfHwoYy50bXAucmVzaXplLnZhbHVlPXBhcnNlSW50KEQoIiNsYXlvdXRfIitjLm5hbWUrIl9yZXNpemVyXyIrZSlbMF0uc3R5bGUubGVmdCkpLCJ0b3AiIT1lJiYicHJldmlldyIhPWUmJiJib3R0b20iIT1lfHwoYy50bXAucmVzaXplLnZhbHVlPXBhcnNlSW50KEQoIiNsYXlvdXRfIitjLm5hbWUrIl9yZXNpemVyXyIrZSlbMF0uc3R5bGUudG9wKSl9fWZ1bmN0aW9uIHIoZSl7aWYoYy5ib3gmJihlPWV8fHdpbmRvdy5ldmVudCxEKGRvY3VtZW50KS5vZmYoIm1vdXNlbW92ZSIsYy50bXAuZXZlbnRzLm1vdXNlTW92ZSksRChkb2N1bWVudCkub2ZmKCJtb3VzZXVwIixjLnRtcC5ldmVudHMubW91c2VVcCksbnVsbCE9Yy50bXAucmVzaXplKSl7Zm9yKHZhciB0PTA7dDx6Lmxlbmd0aDt0Kyspe3ZhciBpPUQoYy5lbCh6W3RdKSkucGFyZW50KCkuZmluZCgiLncydWktbG9jayIpOyJwcmV2aW91cyI9PWkuYXR0cigibG9ja2VkIik/aS5yZW1vdmVBdHRyKCJsb2NrZWQiKTpjLnVubG9jayh6W3RdKX1pZigwIT09Yy50bXAuZGlmZl94fHwwIT09Yy50bXAucmVzaXplLmRpZmZfeSl7dmFyIHMsbixhPWMuZ2V0KCJ0b3AiKSxyPWMuZ2V0KCJib3R0b20iKSxsPWMuZ2V0KGMudG1wLnJlc2l6ZS50eXBlKSxvPXBhcnNlSW50KEQoYy5ib3gpLmhlaWdodCgpKSxkPXBhcnNlSW50KEQoYy5ib3gpLndpZHRoKCkpLHU9U3RyaW5nKGwuc2l6ZSk7c3dpdGNoKGMudG1wLnJlc2l6ZS50eXBlKXtjYXNlInRvcCI6cz1wYXJzZUludChsLnNpemVDYWxjdWxhdGVkKStjLnRtcC5yZXNpemUuZGlmZl95LG49MDticmVhaztjYXNlImJvdHRvbSI6cz1wYXJzZUludChsLnNpemVDYWxjdWxhdGVkKS1jLnRtcC5yZXNpemUuZGlmZl95LG49MDticmVhaztjYXNlInByZXZpZXciOnM9cGFyc2VJbnQobC5zaXplQ2FsY3VsYXRlZCktYy50bXAucmVzaXplLmRpZmZfeSxuPShhJiYhYS5oaWRkZW4/YS5zaXplQ2FsY3VsYXRlZDowKSsociYmIXIuaGlkZGVuP3Iuc2l6ZUNhbGN1bGF0ZWQ6MCk7YnJlYWs7Y2FzZSJsZWZ0IjpzPXBhcnNlSW50KGwuc2l6ZUNhbGN1bGF0ZWQpK2MudG1wLnJlc2l6ZS5kaWZmX3gsbj0wO2JyZWFrO2Nhc2UicmlnaHQiOnM9cGFyc2VJbnQobC5zaXplQ2FsY3VsYXRlZCktYy50bXAucmVzaXplLmRpZmZfeCxuPTB9IiUiPT11LnN1YnN0cih1Lmxlbmd0aC0xKT9sLnNpemU9TWF0aC5mbG9vcigxMDAqcy8oImxlZnQiPT1sLnR5cGV8fCJyaWdodCI9PWwudHlwZT9kOm8tbikqMTAwKS8xMDArIiUiOiItIj09U3RyaW5nKGwuc2l6ZSkuc3Vic3RyKDAsMSk/bC5zaXplPXBhcnNlSW50KGwuc2l6ZSktbC5zaXplQ2FsY3VsYXRlZCtzOmwuc2l6ZT1zLGMucmVzaXplKCl9RCgiI2xheW91dF8iK2MubmFtZSsiX3Jlc2l6ZXJfIitjLnRtcC5yZXNpemUudHlwZSkucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGRlbGV0ZSBjLnRtcC5yZXNpemV9fWZ1bmN0aW9uIGwoZSl7aWYoYy5ib3gmJihlPWV8fHdpbmRvdy5ldmVudCxudWxsIT1jLnRtcC5yZXNpemUpKXt2YXIgdD1jLmdldChjLnRtcC5yZXNpemUudHlwZSksaT1jLnRtcC5yZXNpemUscz1jLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlc2l6aW5nIix0YXJnZXQ6Yy5uYW1lLG9iamVjdDp0LG9yaWdpbmFsRXZlbnQ6ZSxwYW5lbDppP2kudHlwZToiYWxsIixkaWZmX3g6aT9pLmRpZmZfeDowLGRpZmZfeTppP2kuZGlmZl95OjB9KTtpZighMCE9PXMuaXNDYW5jZWxsZWQpe3ZhciBuPUQoIiNsYXlvdXRfIitjLm5hbWUrIl9yZXNpemVyXyIraS50eXBlKSxhPWUuc2NyZWVuWC1pLngscj1lLnNjcmVlblktaS55LGw9Yy5nZXQoIm1haW4iKTtzd2l0Y2gobi5oYXNDbGFzcygiYWN0aXZlIil8fG4uYWRkQ2xhc3MoImFjdGl2ZSIpLGkudHlwZSl7Y2FzZSJsZWZ0Ijp0Lm1pblNpemUtYT50LndpZHRoJiYoYT10Lm1pblNpemUtdC53aWR0aCksdC5tYXhTaXplJiZ0LndpZHRoK2E+dC5tYXhTaXplJiYoYT10Lm1heFNpemUtdC53aWR0aCksbC5taW5TaXplK2E+bC53aWR0aCYmKGE9bC53aWR0aC1sLm1pblNpemUpO2JyZWFrO2Nhc2UicmlnaHQiOnQubWluU2l6ZSthPnQud2lkdGgmJihhPXQud2lkdGgtdC5taW5TaXplKSx0Lm1heFNpemUmJnQud2lkdGgtYT50Lm1heFNpemUmJihhPXQud2lkdGgtdC5tYXhTaXplKSxsLm1pblNpemUtYT5sLndpZHRoJiYoYT1sLm1pblNpemUtbC53aWR0aCk7YnJlYWs7Y2FzZSJ0b3AiOnQubWluU2l6ZS1yPnQuaGVpZ2h0JiYocj10Lm1pblNpemUtdC5oZWlnaHQpLHQubWF4U2l6ZSYmdC5oZWlnaHQrcj50Lm1heFNpemUmJihyPXQubWF4U2l6ZS10LmhlaWdodCksbC5taW5TaXplK3I+bC5oZWlnaHQmJihyPWwuaGVpZ2h0LWwubWluU2l6ZSk7YnJlYWs7Y2FzZSJwcmV2aWV3IjpjYXNlImJvdHRvbSI6dC5taW5TaXplK3I+dC5oZWlnaHQmJihyPXQuaGVpZ2h0LXQubWluU2l6ZSksdC5tYXhTaXplJiZ0LmhlaWdodC1yPnQubWF4U2l6ZSYmKHI9dC5oZWlnaHQtdC5tYXhTaXplKSxsLm1pblNpemUtcj5sLmhlaWdodCYmKHI9bC5taW5TaXplLWwuaGVpZ2h0KX1zd2l0Y2goaS5kaWZmX3g9YSxpLmRpZmZfeT1yLGkudHlwZSl7Y2FzZSJ0b3AiOmNhc2UicHJldmlldyI6Y2FzZSJib3R0b20iOihpLmRpZmZfeD0wKTxuLmxlbmd0aCYmKG5bMF0uc3R5bGUudG9wPWkudmFsdWUraS5kaWZmX3krInB4Iik7YnJlYWs7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjooaS5kaWZmX3k9MCk8bi5sZW5ndGgmJihuWzBdLnN0eWxlLmxlZnQ9aS52YWx1ZStpLmRpZmZfeCsicHgiKX1jLnRyaWdnZXIoRC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKX19fX0scmVmcmVzaDpmdW5jdGlvbihlKXt2YXIgdD10aGlzO251bGw9PWUmJihlPW51bGwpO3ZhciBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHM9dC50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZWZyZXNoIix0YXJnZXQ6bnVsbCE9ZT9lOnQubmFtZSxvYmplY3Q6dC5nZXQoZSl9KTtpZighMCE9PXMuaXNDYW5jZWxsZWQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIG49dC5nZXQoZSk7aWYobnVsbD09bilyZXR1cm47dmFyIGE9IiNsYXlvdXRfIit0Lm5hbWUrIl9wYW5lbF8iK24udHlwZSxyPSIjbGF5b3V0XyIrdC5uYW1lKyJfcmVzaXplcl8iK24udHlwZTtEKGEpLmNzcyh7ZGlzcGxheTpuLmhpZGRlbj8ibm9uZSI6ImJsb2NrIn0pLG4ucmVzaXphYmxlP0Qocikuc2hvdygpOkQocikuaGlkZSgpLCJvYmplY3QiPT10eXBlb2Ygbi5jb250ZW50JiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jb250ZW50LnJlbmRlcj8obi5jb250ZW50LmJveD1EKGErIj4gLncydWktcGFuZWwtY29udGVudCIpWzBdLHNldFRpbWVvdXQoZnVuY3Rpb24oKXswPEQoYSsiPiAudzJ1aS1wYW5lbC1jb250ZW50IikubGVuZ3RoJiYoRChhKyI+IC53MnVpLXBhbmVsLWNvbnRlbnQiKS5yZW1vdmVDbGFzcygpLnJlbW92ZUF0dHIoIm5hbWUiKS5hZGRDbGFzcygidzJ1aS1wYW5lbC1jb250ZW50IikuY3NzKCJvdmVyZmxvdyIsbi5vdmVyZmxvdylbMF0uc3R5bGUuY3NzVGV4dCs9IjsiK24uc3R5bGUpLG4uY29udGVudCYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29udGVudC5yZW5kZXImJm4uY29udGVudC5yZW5kZXIoKX0sMSkpOjA8RChhKyI+IC53MnVpLXBhbmVsLWNvbnRlbnQiKS5sZW5ndGgmJihEKGErIj4gLncydWktcGFuZWwtY29udGVudCIpLnJlbW92ZUNsYXNzKCkucmVtb3ZlQXR0cigibmFtZSIpLmFkZENsYXNzKCJ3MnVpLXBhbmVsLWNvbnRlbnQiKS5odG1sKG4uY29udGVudCkuY3NzKCJvdmVyZmxvdyIsbi5vdmVyZmxvdylbMF0uc3R5bGUuY3NzVGV4dCs9IjsiK24uc3R5bGUpO3ZhciBsPUQodC5ib3gpLmZpbmQoYSsiPiAudzJ1aS1wYW5lbC10YWJzIik7bi5zaG93LnRhYnM/MD09PWwuZmluZCgiW25hbWU9IituLnRhYnMubmFtZSsiXSIpLmxlbmd0aCYmbnVsbCE9bi50YWJzP2wudzJyZW5kZXIobi50YWJzKTpuLnRhYnMucmVmcmVzaCgpOmwuaHRtbCgiIikucmVtb3ZlQ2xhc3MoIncydWktdGFicyIpLmhpZGUoKSxsPUQodC5ib3gpLmZpbmQoYSsiPiAudzJ1aS1wYW5lbC10b29sYmFyIiksbi5zaG93LnRvb2xiYXI/MD09PWwuZmluZCgiW25hbWU9IituLnRvb2xiYXIubmFtZSsiXSIpLmxlbmd0aCYmbnVsbCE9bi50b29sYmFyP2wudzJyZW5kZXIobi50b29sYmFyKTpuLnRvb2xiYXIucmVmcmVzaCgpOmwuaHRtbCgiIikucmVtb3ZlQ2xhc3MoIncydWktdG9vbGJhciIpLmhpZGUoKSxsPUQodC5ib3gpLmZpbmQoYSsiPiAudzJ1aS1wYW5lbC10aXRsZSIpLG4udGl0bGU/bC5odG1sKG4udGl0bGUpLnNob3coKTpsLmh0bWwoIiIpLmhpZGUoKX1lbHNle2lmKDA9PT1EKCIjbGF5b3V0XyIrdC5uYW1lKyJfcGFuZWxfbWFpbiIpLmxlbmd0aClyZXR1cm4gdm9pZCB0LnJlbmRlcigpO3QucmVzaXplKCk7Zm9yKHZhciBvPTA7bzx0aGlzLnBhbmVscy5sZW5ndGg7bysrKXQucmVmcmVzaCh0aGlzLnBhbmVsc1tvXS50eXBlKX1yZXR1cm4gdC50cmlnZ2VyKEQuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSksKG5ldyBEYXRlKS5nZXRUaW1lKCktaX19LHJlc2l6ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmJveClyZXR1cm4hMTt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKSx0PXRoaXMudG1wLnJlc2l6ZSxpPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVzaXplIix0YXJnZXQ6dGhpcy5uYW1lLHBhbmVsOnQ/dC50eXBlOiJhbGwiLGRpZmZfeDp0P3QuZGlmZl94OjAsZGlmZl95OnQ/dC5kaWZmX3k6MH0pO2lmKCEwIT09aS5pc0NhbmNlbGxlZCl7dGhpcy5wYWRkaW5nPDAmJih0aGlzLnBhZGRpbmc9MCk7dmFyIHM9cGFyc2VJbnQoRCh0aGlzLmJveCkud2lkdGgoKSksbj1wYXJzZUludChEKHRoaXMuYm94KS5oZWlnaHQoKSk7RCh0aGlzLmJveCkuZmluZCgiID4gZGl2IikuY3NzKHt3aWR0aDpzKyJweCIsaGVpZ2h0Om4rInB4In0pO2Zvcih2YXIgYSxyLGwsbyxkLHU9dGhpcyxjPXRoaXMuZ2V0KCJtYWluIiksaD10aGlzLmdldCgicHJldmlldyIpLHA9dGhpcy5nZXQoImxlZnQiKSxmPXRoaXMuZ2V0KCJyaWdodCIpLGc9dGhpcy5nZXQoInRvcCIpLG09dGhpcy5nZXQoImJvdHRvbSIpLHc9bnVsbCE9aCYmITAhPT1oLmhpZGRlbix2PW51bGwhPXAmJiEwIT09cC5oaWRkZW4seT1udWxsIT1mJiYhMCE9PWYuaGlkZGVuLGI9bnVsbCE9ZyYmITAhPT1nLmhpZGRlbix4PW51bGwhPW0mJiEwIT09bS5oaWRkZW4sXz0wO188ei5sZW5ndGg7XysrKWlmKCJtYWluIiE9PXpbX10mJih0PXRoaXMuZ2V0KHpbX10pKSl7dmFyIGs9U3RyaW5nKHQuc2l6ZXx8MCk7aWYoIiUiPT1rLnN1YnN0cihrLmxlbmd0aC0xKSl7dmFyIEM9bjsicHJldmlldyI9PXQudHlwZSYmKEM9Qy0oZyYmIWcuaGlkZGVuP2cuc2l6ZUNhbGN1bGF0ZWQ6MCktKG0mJiFtLmhpZGRlbj9tLnNpemVDYWxjdWxhdGVkOjApKSx0LnNpemVDYWxjdWxhdGVkPXBhcnNlSW50KCgibGVmdCI9PXQudHlwZXx8InJpZ2h0Ij09dC50eXBlP3M6QykqcGFyc2VGbG9hdCh0LnNpemUpLzEwMCl9ZWxzZSB0LnNpemVDYWxjdWxhdGVkPXBhcnNlSW50KHQuc2l6ZSk7dC5zaXplQ2FsY3VsYXRlZD1NYXRoLm1heCh0LnNpemVDYWxjdWxhdGVkLHBhcnNlSW50KHQubWluU2l6ZSkpfSItIj09U3RyaW5nKGYuc2l6ZSkuc3Vic3RyKDAsMSkmJih2JiYiLSI9PVN0cmluZyhwLnNpemUpLnN1YnN0cigwLDEpP2NvbnNvbGUubG9nKCJFUlJPUjogeW91IGNhbm5vdCBoYXZlIGJvdGggbGVmdCBwYW5lbC5zaXplIGFuZCByaWdodCBwYW5lbC5zaXplIGJlIG5lZ2F0aXZlLiIpOmYuc2l6ZUNhbGN1bGF0ZWQ9cy0odj9wLnNpemVDYWxjdWxhdGVkOjApK3BhcnNlSW50KGYuc2l6ZSkpLCItIj09U3RyaW5nKHAuc2l6ZSkuc3Vic3RyKDAsMSkmJih5JiYiLSI9PWYuc2l6ZS5zdWJzdHIoMCwxKT9jb25zb2xlLmxvZygiRVJST1I6IHlvdSBjYW5ub3QgaGF2ZSBib3RoIGxlZnQgcGFuZWwuc2l6ZSBhbmQgcmlnaHQgcGFuZWwuc2l6ZSBiZSBuZWdhdGl2ZS4iKTpwLnNpemVDYWxjdWxhdGVkPXMtKHk/Zi5zaXplQ2FsY3VsYXRlZDowKStwYXJzZUludChwLnNpemUpKSxudWxsIT1nJiYhMCE9PWcuaGlkZGVuPyhyPWE9MCxsPXMsbz1nLnNpemVDYWxjdWxhdGVkLEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF90b3AiKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIixsZWZ0OmErInB4Iix0b3A6cisicHgiLHdpZHRoOmwrInB4IixoZWlnaHQ6bysicHgifSkuc2hvdygpLGcud2lkdGg9bCxnLmhlaWdodD1vLGcucmVzaXphYmxlJiYocj1nLnNpemVDYWxjdWxhdGVkLSgwPT09dGhpcy5wYWRkaW5nP3RoaXMucmVzaXplcjowKSxvPXRoaXMucmVzaXplcj50aGlzLnBhZGRpbmc/dGhpcy5yZXNpemVyOnRoaXMucGFkZGluZyxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcmVzaXplcl90b3AiKS5zaG93KCkuY3NzKHtkaXNwbGF5OiJibG9jayIsbGVmdDphKyJweCIsdG9wOnIrInB4Iix3aWR0aDpsKyJweCIsaGVpZ2h0Om8rInB4IixjdXJzb3I6Im5zLXJlc2l6ZSJ9KS5vZmYoIm1vdXNlZG93biIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0PXUudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVzaXplckNsaWNrIix0YXJnZXQ6InRvcCIsb3JpZ2luYWxFdmVudDplfSk7aWYoITAhPT10LmlzQ2FuY2VsbGVkKXJldHVybiB3MnVpW3UubmFtZV0udG1wLmV2ZW50cy5yZXNpemVTdGFydCgidG9wIixlKSx1LnRyaWdnZXIoRC5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKSwhMX0pKSk6KEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF90b3AiKS5oaWRlKCksRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3Jlc2l6ZXJfdG9wIikuaGlkZSgpKSxudWxsIT1wJiYhMCE9PXAuaGlkZGVuPyhyPShhPTApKyhiP2cuc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLGw9cC5zaXplQ2FsY3VsYXRlZCxvPW4tKGI/Zy5zaXplQ2FsY3VsYXRlZCt0aGlzLnBhZGRpbmc6MCktKHg/bS5zaXplQ2FsY3VsYXRlZCt0aGlzLnBhZGRpbmc6MCksZD1EKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfbGVmdCIpLC0xIT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikmJjA8ZC5sZW5ndGgmJmRbMF0uY2xpZW50SGVpZ2h0PGRbMF0uc2Nyb2xsSGVpZ2h0JiYobCs9MTcpLGQuY3NzKHtkaXNwbGF5OiJibG9jayIsbGVmdDphKyJweCIsdG9wOnIrInB4Iix3aWR0aDpsKyJweCIsaGVpZ2h0Om8rInB4In0pLnNob3coKSxwLndpZHRoPWwscC5oZWlnaHQ9byxwLnJlc2l6YWJsZSYmKGE9cC5zaXplQ2FsY3VsYXRlZC0oMD09PXRoaXMucGFkZGluZz90aGlzLnJlc2l6ZXI6MCksbD10aGlzLnJlc2l6ZXI+dGhpcy5wYWRkaW5nP3RoaXMucmVzaXplcjp0aGlzLnBhZGRpbmcsRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3Jlc2l6ZXJfbGVmdCIpLnNob3coKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIixsZWZ0OmErInB4Iix0b3A6cisicHgiLHdpZHRoOmwrInB4IixoZWlnaHQ6bysicHgiLGN1cnNvcjoiZXctcmVzaXplIn0pLm9mZigibW91c2Vkb3duIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7dmFyIHQ9dS50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZXNpemVyQ2xpY2siLHRhcmdldDoibGVmdCIsb3JpZ2luYWxFdmVudDplfSk7aWYoITAhPT10LmlzQ2FuY2VsbGVkKXJldHVybiB3MnVpW3UubmFtZV0udG1wLmV2ZW50cy5yZXNpemVTdGFydCgibGVmdCIsZSksdS50cmlnZ2VyKEQuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSksITF9KSkpOihEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfbGVmdCIpLmhpZGUoKSxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcmVzaXplcl9sZWZ0IikuaGlkZSgpKSxudWxsIT1mJiYhMCE9PWYuaGlkZGVuPyhhPXMtZi5zaXplQ2FsY3VsYXRlZCxyPTArKGI/Zy5zaXplQ2FsY3VsYXRlZCt0aGlzLnBhZGRpbmc6MCksbD1mLnNpemVDYWxjdWxhdGVkLG89bi0oYj9nLnNpemVDYWxjdWxhdGVkK3RoaXMucGFkZGluZzowKS0oeD9tLnNpemVDYWxjdWxhdGVkK3RoaXMucGFkZGluZzowKSxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfcmlnaHQiKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIixsZWZ0OmErInB4Iix0b3A6cisicHgiLHdpZHRoOmwrInB4IixoZWlnaHQ6bysicHgifSkuc2hvdygpLGYud2lkdGg9bCxmLmhlaWdodD1vLGYucmVzaXphYmxlJiYoYS09dGhpcy5wYWRkaW5nLGw9dGhpcy5yZXNpemVyPnRoaXMucGFkZGluZz90aGlzLnJlc2l6ZXI6dGhpcy5wYWRkaW5nLEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9yZXNpemVyX3JpZ2h0Iikuc2hvdygpLmNzcyh7ZGlzcGxheToiYmxvY2siLGxlZnQ6YSsicHgiLHRvcDpyKyJweCIsd2lkdGg6bCsicHgiLGhlaWdodDpvKyJweCIsY3Vyc29yOiJldy1yZXNpemUifSkub2ZmKCJtb3VzZWRvd24iKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihlKXt2YXIgdD11LnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlc2l6ZXJDbGljayIsdGFyZ2V0OiJyaWdodCIsb3JpZ2luYWxFdmVudDplfSk7aWYoITAhPT10LmlzQ2FuY2VsbGVkKXJldHVybiB3MnVpW3UubmFtZV0udG1wLmV2ZW50cy5yZXNpemVTdGFydCgicmlnaHQiLGUpLHUudHJpZ2dlcihELmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpLCExfSkpKTooRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3BhbmVsX3JpZ2h0IikuaGlkZSgpLEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9yZXNpemVyX3JpZ2h0IikuaGlkZSgpKSxudWxsIT1tJiYhMCE9PW0uaGlkZGVuPyhhPTAscj1uLW0uc2l6ZUNhbGN1bGF0ZWQsbD1zLG89bS5zaXplQ2FsY3VsYXRlZCxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfYm90dG9tIikuY3NzKHtkaXNwbGF5OiJibG9jayIsbGVmdDphKyJweCIsdG9wOnIrInB4Iix3aWR0aDpsKyJweCIsaGVpZ2h0Om8rInB4In0pLnNob3coKSxtLndpZHRoPWwsbS5oZWlnaHQ9byxtLnJlc2l6YWJsZSYmKHItPTA9PT10aGlzLnBhZGRpbmc/MDp0aGlzLnBhZGRpbmcsbz10aGlzLnJlc2l6ZXI+dGhpcy5wYWRkaW5nP3RoaXMucmVzaXplcjp0aGlzLnBhZGRpbmcsRCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3Jlc2l6ZXJfYm90dG9tIikuc2hvdygpLmNzcyh7ZGlzcGxheToiYmxvY2siLGxlZnQ6YSsicHgiLHRvcDpyKyJweCIsd2lkdGg6bCsicHgiLGhlaWdodDpvKyJweCIsY3Vyc29yOiJucy1yZXNpemUifSkub2ZmKCJtb3VzZWRvd24iKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihlKXt2YXIgdD11LnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlc2l6ZXJDbGljayIsdGFyZ2V0OiJib3R0b20iLG9yaWdpbmFsRXZlbnQ6ZX0pO2lmKCEwIT09dC5pc0NhbmNlbGxlZClyZXR1cm4gdzJ1aVt1Lm5hbWVdLnRtcC5ldmVudHMucmVzaXplU3RhcnQoImJvdHRvbSIsZSksdS50cmlnZ2VyKEQuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSksITF9KSkpOihEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfYm90dG9tIikuaGlkZSgpLEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9yZXNpemVyX2JvdHRvbSIpLmhpZGUoKSksYT0wKyh2P3Auc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLHI9MCsoYj9nLnNpemVDYWxjdWxhdGVkK3RoaXMucGFkZGluZzowKSxsPXMtKHY/cC5zaXplQ2FsY3VsYXRlZCt0aGlzLnBhZGRpbmc6MCktKHk/Zi5zaXplQ2FsY3VsYXRlZCt0aGlzLnBhZGRpbmc6MCksbz1uLShiP2cuc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLSh4P20uc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLSh3P2guc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLGQ9RCgiI2xheW91dF8iK3RoaXMubmFtZSsiX3BhbmVsX21haW4iKSwtMSE9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpJiYwPGQubGVuZ3RoJiZkWzBdLmNsaWVudEhlaWdodDxkWzBdLnNjcm9sbEhlaWdodCYmKGwrPTE3KSxkLmNzcyh7ZGlzcGxheToiYmxvY2siLGxlZnQ6YSsicHgiLHRvcDpyKyJweCIsd2lkdGg6bCsicHgiLGhlaWdodDpvKyJweCJ9KSxjLndpZHRoPWwsYy5oZWlnaHQ9byxudWxsIT1oJiYhMCE9PWguaGlkZGVuPyhhPTArKHY/cC5zaXplQ2FsY3VsYXRlZCt0aGlzLnBhZGRpbmc6MCkscj1uLSh4P20uc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLWguc2l6ZUNhbGN1bGF0ZWQsbD1zLSh2P3Auc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLSh5P2Yuc2l6ZUNhbGN1bGF0ZWQrdGhpcy5wYWRkaW5nOjApLG89aC5zaXplQ2FsY3VsYXRlZCxkPUQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF9wcmV2aWV3IiksLTEhPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSYmMDxkLmxlbmd0aCYmZFswXS5jbGllbnRIZWlnaHQ8ZFswXS5zY3JvbGxIZWlnaHQmJihsKz0xNyksZC5jc3Moe2Rpc3BsYXk6ImJsb2NrIixsZWZ0OmErInB4Iix0b3A6cisicHgiLHdpZHRoOmwrInB4IixoZWlnaHQ6bysicHgifSkuc2hvdygpLGgud2lkdGg9bCxoLmhlaWdodD1vLGgucmVzaXphYmxlJiYoci09MD09PXRoaXMucGFkZGluZz8wOnRoaXMucGFkZGluZyxvPXRoaXMucmVzaXplcj50aGlzLnBhZGRpbmc/dGhpcy5yZXNpemVyOnRoaXMucGFkZGluZyxEKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcmVzaXplcl9wcmV2aWV3Iikuc2hvdygpLmNzcyh7ZGlzcGxheToiYmxvY2siLGxlZnQ6YSsicHgiLHRvcDpyKyJweCIsd2lkdGg6bCsicHgiLGhlaWdodDpvKyJweCIsY3Vyc29yOiJucy1yZXNpemUifSkub2ZmKCJtb3VzZWRvd24iKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihlKXt2YXIgdD11LnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlc2l6ZXJDbGljayIsdGFyZ2V0OiJwcmV2aWV3IixvcmlnaW5hbEV2ZW50OmV9KTtpZighMCE9PXQuaXNDYW5jZWxsZWQpcmV0dXJuIHcydWlbdS5uYW1lXS50bXAuZXZlbnRzLnJlc2l6ZVN0YXJ0KCJwcmV2aWV3IixlKSx1LnRyaWdnZXIoRC5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKSwhMX0pKSk6KEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF9wcmV2aWV3IikuaGlkZSgpLEQoIiNsYXlvdXRfIit0aGlzLm5hbWUrIl9yZXNpemVyX3ByZXZpZXciKS5oaWRlKCkpO2Zvcih2YXIgVD0wO1Q8ei5sZW5ndGg7VCsrKXt2YXIgJD10aGlzLmdldCh6W1RdKSxTPSIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfIit6W1RdKyIgPiAudzJ1aS1wYW5lbC0iLE89MDskJiYoJC50aXRsZSYmKE8rPXcydXRpbHMuZ2V0U2l6ZShEKFMrInRpdGxlIikuY3NzKHt0b3A6TysicHgiLGRpc3BsYXk6ImJsb2NrIn0pLCJoZWlnaHQiKSksJC5zaG93LnRhYnMmJihudWxsIT0kLnRhYnMmJncydWlbdGhpcy5uYW1lKyJfIit6W1RdKyJfdGFicyJdJiZ3MnVpW3RoaXMubmFtZSsiXyIreltUXSsiX3RhYnMiXS5yZXNpemUoKSxPKz13MnV0aWxzLmdldFNpemUoRChTKyJ0YWJzIikuY3NzKHt0b3A6TysicHgiLGRpc3BsYXk6ImJsb2NrIn0pLCJoZWlnaHQiKSksJC5zaG93LnRvb2xiYXImJihudWxsIT0kLnRvb2xiYXImJncydWlbdGhpcy5uYW1lKyJfIit6W1RdKyJfdG9vbGJhciJdJiZ3MnVpW3RoaXMubmFtZSsiXyIreltUXSsiX3Rvb2xiYXIiXS5yZXNpemUoKSxPKz13MnV0aWxzLmdldFNpemUoRChTKyJ0b29sYmFyIikuY3NzKHt0b3A6TysicHgiLGRpc3BsYXk6ImJsb2NrIn0pLCJoZWlnaHQiKSkpLEQoUysiY29udGVudCIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSkuY3NzKHt0b3A6TysicHgifSl9cmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVfdGltZXIpLHRoaXMuX3Jlc2l6ZV90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHcydWkpaWYoImZ1bmN0aW9uIj09dHlwZW9mIHcydWlbZV0ucmVzaXplKXtudWxsPT13MnVpW2VdLnBhbmVscyYmdzJ1aVtlXS5yZXNpemUoKTt2YXIgdD1EKHcydWlbZV0uYm94KS5wYXJlbnRzKCIudzJ1aS1sYXlvdXQiKTswPHQubGVuZ3RoJiZ0LmF0dHIoIm5hbWUiKT09dS5uYW1lJiZ3MnVpW2VdLnJlc2l6ZSgpfX0sMTAwKSx0aGlzLnRyaWdnZXIoRC5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKSwobmV3IERhdGUpLmdldFRpbWUoKS1lfX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZGVzdHJveSIsdGFyZ2V0OnRoaXMubmFtZX0pO2lmKCEwIT09ZS5pc0NhbmNlbGxlZClyZXR1cm4gbnVsbCE9dzJ1aVt0aGlzLm5hbWVdJiYoMDxEKHRoaXMuYm94KS5maW5kKCIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfbWFpbiIpLmxlbmd0aCYmRCh0aGlzLmJveCkucmVtb3ZlQXR0cigibmFtZSIpLnJlbW92ZUNsYXNzKCJ3MnVpLWxheW91dCIpLmh0bWwoIiIpLGRlbGV0ZSB3MnVpW3RoaXMubmFtZV0sdGhpcy50cmlnZ2VyKEQuZXh0ZW5kKGUse3BoYXNlOiJhZnRlciJ9KSksdGhpcy50bXAuZXZlbnRzJiZ0aGlzLnRtcC5ldmVudHMucmVzaXplJiZEKHdpbmRvdykub2ZmKCJyZXNpemUiLHRoaXMudG1wLmV2ZW50cy5yZXNpemUpLCEwKX0sbG9jazpmdW5jdGlvbihlLHQsaSl7aWYoLTEhPXouaW5kZXhPZihlKSl7dmFyIHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3NbMF09IiNsYXlvdXRfIit0aGlzLm5hbWUrIl9wYW5lbF8iK2UsdzJ1dGlscy5sb2NrLmFwcGx5KHdpbmRvdyxzKX1lbHNlIGNvbnNvbGUubG9nKCJFUlJPUjogRmlyc3QgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIHRoZSBhIHZhbGlkIHBhbmVsIG5hbWUuIil9LHVubG9jazpmdW5jdGlvbihlLHQpe2lmKC0xIT16LmluZGV4T2YoZSkpe3ZhciBpPSIjbGF5b3V0XyIrdGhpcy5uYW1lKyJfcGFuZWxfIitlO3cydXRpbHMudW5sb2NrKGksdCl9ZWxzZSBjb25zb2xlLmxvZygiRVJST1I6IEZpcnN0IHBhcmFtZXRlciBuZWVkcyB0byBiZSB0aGUgYSB2YWxpZCBwYW5lbCBuYW1lLiIpfX0sRC5leHRlbmQoZC5wcm90b3R5cGUsdzJ1dGlscy5ldmVudCksdzJvYmoubGF5b3V0PWR9KGpRdWVyeSk7dmFyIHcycG9wdXA9e307IWZ1bmN0aW9uKGcpe3cycG9wdXA9e2RlZmF1bHRzOnt0aXRsZToiIixib2R5OiIiLGJ1dHRvbnM6IiIsc3R5bGU6IiIsY29sb3I6IiMwMDAiLG9wYWNpdHk6LjQsc3BlZWQ6LjMsbW9kYWw6IShnLmZuLncycG9wdXA9ZnVuY3Rpb24oZSx0KXtudWxsPT1lJiYodD17fSxlPSJvcGVuIiksZy5pc1BsYWluT2JqZWN0KGUpJiYodD1lLGU9Im9wZW4iKSwibG9hZCI9PT0oZT1lLnRvTG93ZXJDYXNlKCkpJiYic3RyaW5nIj09dHlwZW9mIHQmJih0PWcuZXh0ZW5kKHt1cmw6dH0sMjxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1syXTp7fSkpLCJvcGVuIj09PWUmJm51bGwhPXQudXJsJiYoZT0ibG9hZCIpLHQ9dHx8e307dmFyIGk9e307aWYoMDxnKHRoaXMpLmxlbmd0aCYmIm9wZW4iPT1lKXtpZigwPGcodGhpcykuZmluZCgiZGl2W3JlbD10aXRsZV0sIGRpdltyZWw9Ym9keV0sIGRpdltyZWw9YnV0dG9uc10iKS5sZW5ndGgpe2lmKDA8ZygiI3cydWktcG9wdXAiKS5sZW5ndGgpe3ZhciBzPWcoIiN3MnVpLXBvcHVwIikuZGF0YSgib3B0aW9ucyIpO3cycG9wdXAuX3ByZXY9e3RlbXBsYXRlOncycG9wdXAuX3RlbXBsYXRlLHRpdGxlOnMudGl0bGUsYm9keTpzLmJvZHksYnV0dG9uczpzLmJ1dHRvbnN9fXcycG9wdXAuX3RlbXBsYXRlPXRoaXMsMDxnKHRoaXMpLmZpbmQoImRpdltyZWw9dGl0bGVdIikubGVuZ3RoJiYoaS50aXRsZT1nKHRoaXMpLmZpbmQoImRpdltyZWw9dGl0bGVdIikpLDA8Zyh0aGlzKS5maW5kKCJkaXZbcmVsPWJvZHldIikubGVuZ3RoJiYoaS5ib2R5PWcodGhpcykuZmluZCgiZGl2W3JlbD1ib2R5XSIpLGkuc3R5bGU9Zyh0aGlzKS5maW5kKCJkaXZbcmVsPWJvZHldIilbMF0uc3R5bGUuY3NzVGV4dCksMDxnKHRoaXMpLmZpbmQoImRpdltyZWw9YnV0dG9uc10iKS5sZW5ndGgmJihpLmJ1dHRvbnM9Zyh0aGlzKS5maW5kKCJkaXZbcmVsPWJ1dHRvbnNdIikpfWVsc2UgaS50aXRsZT0iJiMxNjA7IixpLmJvZHk9Zyh0aGlzKS5odG1sKCk7MCE9PXBhcnNlSW50KGcodGhpcykuY3NzKCJ3aWR0aCIpKSYmKGkud2lkdGg9cGFyc2VJbnQoZyh0aGlzKS5jc3MoIndpZHRoIikpKTt2YXIgbj10LnRpdGxlfHx0LnNob3dDbG9zZXx8dm9pZCAwPT09dC5zaG93Q2xvc2V8fHQuc2hvd01heHx8dm9pZCAwPT09dC5zaG93TWF4OzAhPT1wYXJzZUludChnKHRoaXMpLmNzcygiaGVpZ2h0IikpJiYoaS5oZWlnaHQ9cGFyc2VJbnQoZyh0aGlzKS5jc3MoImhlaWdodCIpKSsobj8zMjowKSl9cmV0dXJuIHcycG9wdXBbZV0oZy5leHRlbmQoe30saSx0KSl9KSxtYXhpbWl6ZWQ6ITEsa2V5Ym9hcmQ6ITAsd2lkdGg6NTAwLGhlaWdodDozMDAsc2hvd0Nsb3NlOiEwLHNob3dNYXg6ITEsdHJhbnNpdGlvbjpudWxsfSxzdGF0dXM6ImNsb3NlZCIsaGFuZGxlcnM6W10sb25PcGVuOm51bGwsb25DbG9zZTpudWxsLG9uTWF4Om51bGwsb25NaW46bnVsbCxvblRvZ2dsZTpudWxsLG9uS2V5ZG93bjpudWxsLG9wZW46ZnVuY3Rpb24oaSl7dmFyIHQ9dGhpcztpZigiY2xvc2luZyIhPXcycG9wdXAuc3RhdHVzKXt2YXIgZSxzLG49ZygiI3cydWktcG9wdXAiKS5kYXRhKCJvcHRpb25zIik7aT1nLmV4dGVuZCh7fSx0aGlzLmRlZmF1bHRzLG4se3RpdGxlOiIiLGJvZHk6IiIsYnV0dG9uczoiIn0saSx7bWF4aW1pemVkOiExfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2coIiN3MnVpLXBvcHVwIikuZGF0YSgib3B0aW9ucyIsaSl9LDEwMCksMD09PWcoIiN3MnVpLXBvcHVwIikubGVuZ3RoJiYodzJwb3B1cC5vbk1heD1udWxsLHcycG9wdXAub25NaW49bnVsbCx3MnBvcHVwLm9uVG9nZ2xlPW51bGwsdzJwb3B1cC5vbk9wZW49bnVsbCx3MnBvcHVwLm9uQ2xvc2U9bnVsbCx3MnBvcHVwLm9uS2V5ZG93bj1udWxsLHcycG9wdXAub25BY3Rpb249bnVsbCksaS5vbk9wZW4mJih3MnBvcHVwLm9uT3Blbj1pLm9uT3BlbiksaS5vbkNsb3NlJiYodzJwb3B1cC5vbkNsb3NlPWkub25DbG9zZSksaS5vbk1heCYmKHcycG9wdXAub25NYXg9aS5vbk1heCksaS5vbk1pbiYmKHcycG9wdXAub25NaW49aS5vbk1pbiksaS5vblRvZ2dsZSYmKHcycG9wdXAub25Ub2dnbGU9aS5vblRvZ2dsZSksaS5vbktleWRvd24mJih3MnBvcHVwLm9uS2V5ZG93bj1pLm9uS2V5ZG93biksaS5vbkFjdGlvbiYmKHcycG9wdXAub25BY3Rpb249aS5vbkFjdGlvbiksaS53aWR0aD1wYXJzZUludChpLndpZHRoKSxpLmhlaWdodD1wYXJzZUludChpLmhlaWdodCksbnVsbD09d2luZG93LmlubmVySGVpZ2h0PyhlPXBhcnNlSW50KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCkscz1wYXJzZUludChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0KSwiSUU3Ij09PXcydXRpbHMuZW5naW5lJiYoZSs9MjEscys9NCkpOihlPXBhcnNlSW50KHdpbmRvdy5pbm5lcldpZHRoKSxzPXBhcnNlSW50KHdpbmRvdy5pbm5lckhlaWdodCkpLGUtMTA8aS53aWR0aCYmKGkud2lkdGg9ZS0xMCkscy0xMDxpLmhlaWdodCYmKGkuaGVpZ2h0PXMtMTApO3ZhciBhPShzLWkuaGVpZ2h0KS8yKi42LHI9KGUtaS53aWR0aCkvMjtpZihudWxsIT1pLmFjdGlvbnMmJihpLmJ1dHRvbnM9IiIsT2JqZWN0LmtleXMoaS5hY3Rpb25zKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWkuYWN0aW9uc1tlXTsiZnVuY3Rpb24iPT10eXBlb2YgdCYmKGkuYnV0dG9ucys9JzxidXR0b24gY2xhc3M9IncydWktYnRuIiBvbmNsaWNrPSJ3MnBvcHVwLmFjdGlvbihcJycrZSsiJylcIj4iK2UrIjwvYnV0dG9uPiIpLCJvYmplY3QiPT10eXBlb2YgdCYmKGkuYnV0dG9ucys9JzxidXR0b24gY2xhc3M9IncydWktYnRuICcrKHQuY2xhc3N8fCIiKSsnIiBzdHlsZT0iJysodC5zdHlsZXx8IiIpKycib25jbGljaz0idzJwb3B1cC5hY3Rpb24oXCcnK2UrIicpXCI+IisodC50ZXh0fHxlKSsiPC9idXR0b24+IiksInN0cmluZyI9PXR5cGVvZiB0JiYoaS5idXR0b25zKz10KX0pKSwwPT09ZygiI3cydWktcG9wdXAiKS5sZW5ndGgpe2lmKCEwPT09KHU9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJvcGVuIix0YXJnZXQ6InBvcHVwIixvcHRpb25zOmkscHJlc2VudDohMX0pKS5pc0NhbmNlbGxlZClyZXR1cm47dzJwb3B1cC5zdGF0dXM9Im9wZW5pbmciLHcycG9wdXAubG9ja1NjcmVlbihpKTt2YXIgbD0iIjtpLnNob3dDbG9zZSYmKGwrPSc8ZGl2IGNsYXNzPSJ3MnVpLXBvcHVwLWJ1dHRvbiB3MnVpLXBvcHVwLWNsb3NlIiBvbm1vdXNlZG93bj0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiIG9uY2xpY2s9IncycG9wdXAuY2xvc2UoKSI+Q2xvc2U8L2Rpdj4nKSxpLnNob3dNYXgmJihsKz0nPGRpdiBjbGFzcz0idzJ1aS1wb3B1cC1idXR0b24gdzJ1aS1wb3B1cC1tYXgiIG9ubW91c2Vkb3duPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKSIgb25jbGljaz0idzJwb3B1cC50b2dnbGUoKSI+TWF4PC9kaXY+Jyk7dmFyIG89JzxkaXYgaWQ9IncydWktcG9wdXAiIGNsYXNzPSJ3MnVpLXBvcHVwIiBzdHlsZT0ib3BhY2l0eTogMDsgbGVmdDogJytyKyJweDsgdG9wOiAiK2ErInB4OyAgICAgd2lkdGg6ICIrcGFyc2VJbnQoaS53aWR0aCkrInB4OyBoZWlnaHQ6ICIrcGFyc2VJbnQoaS5oZWlnaHQpKyJweDsgIit3MnV0aWxzLmNzc1ByZWZpeCgidHJhbnNmb3JtIiwic2NhbGUoMC44KSIsITApKyciPjwvZGl2Pic7ZygiYm9keSIpLmFwcGVuZChvKTt2YXIgZD1nKCIjdzJ1aS1wb3B1cCIpO2lmKDA8ZC5maW5kKCJkaXZbcmVsPXRpdGxlXSwgZGl2W3JlbD1ib2R5XSwgZGl2W3JlbD1idXR0b25zXSIpLmxlbmd0aCkwPChmPWQuZmluZCgiZGl2W3JlbD10aXRsZV0iKSkubGVuZ3RoJiYoaS50aXRsZT1mLmh0bWwoKSxmLnJlbW92ZSgpKSwwPChmPWQuZmluZCgiZGl2W3JlbD1idXR0b25zXSIpKS5sZW5ndGgmJihpLmJ1dHRvbnM9Zi5odG1sKCksZi5yZW1vdmUoKSksMDwoZj1kLmZpbmQoImRpdltyZWw9Ym9keV0iKSkubGVuZ3RoP2kuYm9keT1mLmh0bWwoKTppLmJvZHk9ZC5odG1sKCk7bz0nPGRpdiBjbGFzcz0idzJ1aS1wb3B1cC10aXRsZSIgc3R5bGU9IicrKGkudGl0bGU/IiI6ImRpc3BsYXk6IG5vbmUiKSsnIj4nK2wrJzwvZGl2PjxkaXYgY2xhc3M9IncydWktYm94IiBzdHlsZT0iJysoaS50aXRsZT8iIjoidG9wOiAwcHggIWltcG9ydGFudDsiKSsoaS5idXR0b25zPyIiOiJib3R0b206IDBweCAhaW1wb3J0YW50OyIpKyciPiAgICA8ZGl2IGNsYXNzPSJ3MnVpLXBvcHVwLWJvZHknKygiIiE9PSFpLnRpdGxlPyIgdzJ1aS1wb3B1cC1uby10aXRsZSI6IiIpKyhpLmJ1dHRvbnM/IiI6IiB3MnVpLXBvcHVwLW5vLWJ1dHRvbnMiKSsnIiBzdHlsZT0iJytpLnN0eWxlKyciPiAgICA8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ3MnVpLXBvcHVwLWJ1dHRvbnMiIHN0eWxlPSInKyhpLmJ1dHRvbnM/IiI6ImRpc3BsYXk6IG5vbmUiKSsnIj48L2Rpdj48aW5wdXQgY2xhc3M9IncydWktcG9wdXAtaGlkZGVuIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0xMDBweCIvPic7ZygiI3cydWktcG9wdXAiKS5odG1sKG8pLGkudGl0bGUmJmcoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLXRpdGxlIikuYXBwZW5kKGkudGl0bGUpLGkuYnV0dG9ucyYmZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnV0dG9ucyIpLmFwcGVuZChpLmJ1dHRvbnMpLGkuYm9keSYmZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYm9keSIpLmFwcGVuZChpLmJvZHkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtnKCIjdzJ1aS1wb3B1cCIpLmNzcygib3BhY2l0eSIsIjEiKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoe3RyYW5zaXRpb246aS5zcGVlZCsicyBvcGFjaXR5LCAiK2kuc3BlZWQrInMgLXdlYmtpdC10cmFuc2Zvcm0iLHRyYW5zZm9ybToic2NhbGUoMSkifSkpLHQuZm9jdXMoKX0sMSksc2V0VGltZW91dChmdW5jdGlvbigpe2coIiN3MnVpLXBvcHVwIikuY3NzKHcydXRpbHMuY3NzUHJlZml4KCJ0cmFuc2Zvcm0iLCIiKSl9LDFlMyppLnNwZWVkKSx3MnBvcHVwLnN0YXR1cz0ib3BlbiIsdC50cmlnZ2VyKGcuZXh0ZW5kKHUse3BoYXNlOiJhZnRlciJ9KSl9ZWxzZXt2YXIgdTtpZihudWxsPT13MnBvcHVwLl9wcmV2JiZudWxsIT13MnBvcHVwLl90ZW1wbGF0ZSYmdC5yZXN0b3JlVGVtcGxhdGUoKSwhMD09PSh1PXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToib3BlbiIsdGFyZ2V0OiJwb3B1cCIsb3B0aW9uczppLHByZXNlbnQ6ITB9KSkuaXNDYW5jZWxsZWQpcmV0dXJuO3cycG9wdXAuc3RhdHVzPSJvcGVuaW5nIixudWxsIT1uJiYobi5tYXhpbWl6ZWR8fG4ud2lkdGg9PWkud2lkdGgmJm4uaGVpZ2h0PT1pLmhlaWdodHx8dzJwb3B1cC5yZXNpemUoaS53aWR0aCxpLmhlaWdodCksaS5wcmV2U2l6ZT1pLndpZHRoKyJweDoiK2kuaGVpZ2h0KyJweCIsaS5tYXhpbWl6ZWQ9bi5tYXhpbWl6ZWQpO3ZhciBjPWcoIiN3MnVpLXBvcHVwIC53MnVpLWJveCIpLmNsb25lKCk7aWYoYy5yZW1vdmVDbGFzcygidzJ1aS1ib3giKS5hZGRDbGFzcygidzJ1aS1ib3gtdGVtcCIpLmZpbmQoIi53MnVpLXBvcHVwLWJvZHkiKS5lbXB0eSgpLmFwcGVuZChpLmJvZHkpLCJzdHJpbmciPT10eXBlb2YgaS5ib2R5JiYwPGMuZmluZCgiZGl2W3JlbD10aXRsZV0sIGRpdltyZWw9Ym9keV0sIGRpdltyZWw9YnV0dG9uc10iKS5sZW5ndGgpMDwoZj1jLmZpbmQoImRpdltyZWw9dGl0bGVdIikpLmxlbmd0aCYmKGkudGl0bGU9Zi5odG1sKCksZi5yZW1vdmUoKSksMDwoZj1jLmZpbmQoImRpdltyZWw9YnV0dG9uc10iKSkubGVuZ3RoJiYoaS5idXR0b25zPWYuaHRtbCgpLGYucmVtb3ZlKCkpLDA8KGY9Yy5maW5kKCJkaXZbcmVsPWJvZHldIikpLmxlbmd0aD9pLmJvZHk9Zi5odG1sKCk6aS5ib2R5PWMuaHRtbCgpLGMuaHRtbChpLmJvZHkpO2coIiN3MnVpLXBvcHVwIC53MnVpLWJveCIpLmFmdGVyKGMpLGkuYnV0dG9ucz8oZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnV0dG9ucyIpLnNob3coKS5odG1sKCIiKS5hcHBlbmQoaS5idXR0b25zKSxnKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1ib2R5IikucmVtb3ZlQ2xhc3MoIncydWktcG9wdXAtbm8tYnV0dG9ucyIpLGcoIiN3MnVpLXBvcHVwIC53MnVpLWJveCwgI3cydWktcG9wdXAgLncydWktYm94LXRlbXAiKS5jc3MoImJvdHRvbSIsIiIpKTooZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnV0dG9ucyIpLmhpZGUoKS5odG1sKCIiKSxnKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1ib2R5IikuYWRkQ2xhc3MoIncydWktcG9wdXAtbm8tYnV0dG9ucyIpLGcoIiN3MnVpLXBvcHVwIC53MnVpLWJveCwgI3cydWktcG9wdXAgLncydWktYm94LXRlbXAiKS5jc3MoImJvdHRvbSIsIjBweCIpKSxpLnRpdGxlPyhnKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC10aXRsZSIpLnNob3coKS5odG1sKChpLnNob3dDbG9zZT8nPGRpdiBjbGFzcz0idzJ1aS1wb3B1cC1idXR0b24gdzJ1aS1wb3B1cC1jbG9zZSIgb25tb3VzZWRvd249ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIiBvbmNsaWNrPSJ3MnBvcHVwLmNsb3NlKCkiPkNsb3NlPC9kaXY+JzoiIikrKGkuc2hvd01heD8nPGRpdiBjbGFzcz0idzJ1aS1wb3B1cC1idXR0b24gdzJ1aS1wb3B1cC1tYXgiIG9ubW91c2Vkb3duPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKSIgb25jbGljaz0idzJwb3B1cC50b2dnbGUoKSI+TWF4PC9kaXY+JzoiIikpLmFwcGVuZChpLnRpdGxlKSxnKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1ib2R5IikucmVtb3ZlQ2xhc3MoIncydWktcG9wdXAtbm8tdGl0bGUiKSxnKCIjdzJ1aS1wb3B1cCAudzJ1aS1ib3gsICN3MnVpLXBvcHVwIC53MnVpLWJveC10ZW1wIikuY3NzKCJ0b3AiLCIiKSk6KGcoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLXRpdGxlIikuaGlkZSgpLmh0bWwoIiIpLGcoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLWJvZHkiKS5hZGRDbGFzcygidzJ1aS1wb3B1cC1uby10aXRsZSIpLGcoIiN3MnVpLXBvcHVwIC53MnVpLWJveCwgI3cydWktcG9wdXAgLncydWktYm94LXRlbXAiKS5jc3MoInRvcCIsIjBweCIpKTt2YXIgaD1nKCIjdzJ1aS1wb3B1cCAudzJ1aS1ib3giKVswXSxwPWcoIiN3MnVpLXBvcHVwIC53MnVpLWJveC10ZW1wIilbMF07dzJ1dGlscy50cmFuc2l0aW9uKGgscCxpLnRyYW5zaXRpb24sZnVuY3Rpb24oKXt0LnJlc3RvcmVUZW1wbGF0ZSgpLGcoaCkucmVtb3ZlKCksZyhwKS5yZW1vdmVDbGFzcygidzJ1aS1ib3gtdGVtcCIpLmFkZENsYXNzKCJ3MnVpLWJveCIpO3ZhciBlPWcocCkuZmluZCgiLncydWktcG9wdXAtYm9keSIpOzE9PWUubGVuZ3RoJiYoZVswXS5zdHlsZS5jc3NUZXh0PWkuc3R5bGUpLGcoIiN3MnVpLXBvcHVwIikuZGF0YSgicHJldi1zaXplIixudWxsKSx0LmZvY3VzKCl9KSx3MnBvcHVwLnN0YXR1cz0ib3BlbiIsdC50cmlnZ2VyKGcuZXh0ZW5kKHUse3BoYXNlOiJhZnRlciJ9KSl9aS5fbGFzdF9mb2N1cz1nKCI6Zm9jdXMiKSxpLmtleWJvYXJkJiZnKGRvY3VtZW50KS5vbigia2V5ZG93biIsdGhpcy5rZXlkb3duKTt2YXIgZj17cmVzaXppbmc6ITEsbXZNb3ZlOmZ1bmN0aW9uKGUpe2lmKDEhPWYucmVzaXppbmcpcmV0dXJuO2U9ZXx8d2luZG93LmV2ZW50O2YuZGl2X3g9ZS5zY3JlZW5YLWYueCxmLmRpdl95PWUuc2NyZWVuWS1mLnk7dmFyIHQ9dzJwb3B1cC50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJtb3ZlIix0YXJnZXQ6InBvcHVwIixkaXZfeDpmLmRpdl94LGRpdl95OmYuZGl2X3l9KTtpZighMD09PXQuaXNDYW5jZWxsZWQpcmV0dXJuO2coIiN3MnVpLXBvcHVwIikuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOiJub25lIix0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKCIrZi5kaXZfeCsicHgsICIrZi5kaXZfeSsicHgsIDBweCkifSkpLHcycG9wdXAudHJpZ2dlcihnLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpfSxtdlN0b3A6ZnVuY3Rpb24oZSl7aWYoMSE9Zi5yZXNpemluZylyZXR1cm47ZT1lfHx3aW5kb3cuZXZlbnQ7dzJwb3B1cC5zdGF0dXM9Im9wZW4iLGYuZGl2X3g9ZS5zY3JlZW5YLWYueCxmLmRpdl95PWUuc2NyZWVuWS1mLnksZygiI3cydWktcG9wdXAiKS5jc3Moe2xlZnQ6Zi5wb3NfeCtmLmRpdl94KyJweCIsdG9wOmYucG9zX3krZi5kaXZfeSsicHgifSkuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOiJub25lIix0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpIn0pKSxmLnJlc2l6aW5nPSExLGcoZG9jdW1lbnQpLm9mZigibW91c2Vtb3ZlIixmLm12TW92ZSksZyhkb2N1bWVudCkub2ZmKCJtb3VzZXVwIixmLm12U3RvcCksZi5pc0xvY2tlZHx8dzJwb3B1cC51bmxvY2soKX19O3JldHVybiBnKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC10aXRsZSIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe3cycG9wdXAuZ2V0KCkubWF4aW1pemVkfHxmdW5jdGlvbihlKXtlPWV8fHdpbmRvdy5ldmVudDt3MnBvcHVwLnN0YXR1cz0ibW92aW5nIixmLnJlc2l6aW5nPSEwLGYuaXNMb2NrZWQ9MT09ZygiI3cydWktcG9wdXAgPiAudzJ1aS1sb2NrIikubGVuZ3RoLGYueD1lLnNjcmVlblgsZi55PWUuc2NyZWVuWSxmLnBvc194PWcoIiN3MnVpLXBvcHVwIikucG9zaXRpb24oKS5sZWZ0LGYucG9zX3k9ZygiI3cydWktcG9wdXAiKS5wb3NpdGlvbigpLnRvcCxmLmlzTG9ja2VkfHx3MnBvcHVwLmxvY2soe29wYWNpdHk6MH0pO2coZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLGYubXZNb3ZlKSxnKGRvY3VtZW50KS5vbigibW91c2V1cCIsZi5tdlN0b3ApLGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6ZS5jYW5jZWxCdWJibGU9ITA7e2lmKCFlLnByZXZlbnREZWZhdWx0KXJldHVybjtlLnByZXZlbnREZWZhdWx0KCl9fShlKX0pLHRoaXN9c2V0VGltZW91dChmdW5jdGlvbigpe3Qub3Blbi5jYWxsKHQsaSl9LDEwMCl9LGFjdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKS5hY3Rpb25zW2VdO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJmdW5jdGlvbiI6dChlKTticmVhaztjYXNlIm9iamVjdCI6ImZ1bmN0aW9uIj09dHlwZW9mIHQub25DbGljayYmdC5vbkNsaWNrKGUpfX0sa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgdD1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKTtpZighdHx8dC5rZXlib2FyZCl7dmFyIGk9dzJwb3B1cC50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJrZXlkb3duIix0YXJnZXQ6InBvcHVwIixvcHRpb25zOnQsb3JpZ2luYWxFdmVudDplfSk7aWYoITAhPT1pLmlzQ2FuY2VsbGVkKXtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDI3OmUucHJldmVudERlZmF1bHQoKSwwPGcoIiN3MnVpLXBvcHVwIC53MnVpLW1lc3NhZ2UiKS5sZW5ndGg/dzJwb3B1cC5tZXNzYWdlKCk6dzJwb3B1cC5jbG9zZSgpfXcycG9wdXAudHJpZ2dlcihnLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpfX19LGNsb3NlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZT1nLmV4dGVuZCh7fSxnKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKSxlKTtpZigwIT09ZygiI3cydWktcG9wdXAiKS5sZW5ndGgmJiJjbG9zZWQiIT10aGlzLnN0YXR1cylpZigib3BlbmluZyIhPXRoaXMuc3RhdHVzKXt2YXIgaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImNsb3NlIix0YXJnZXQ6InBvcHVwIixvcHRpb25zOmV9KTshMCE9PWkuaXNDYW5jZWxsZWQmJih3MnBvcHVwLnN0YXR1cz0iY2xvc2luZyIsZygiI3cydWktcG9wdXAiKS5jc3MoIm9wYWNpdHkiLCIwIikuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOmUuc3BlZWQrInMgb3BhY2l0eSwgIitlLnNwZWVkKyJzIC13ZWJraXQtdHJhbnNmb3JtIix0cmFuc2Zvcm06InNjYWxlKDAuOSkifSkpLHcycG9wdXAudW5sb2NrU2NyZWVuKGUpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnJlc3RvcmVUZW1wbGF0ZSgpLGcoIiN3MnVpLXBvcHVwIikucmVtb3ZlKCksdzJwb3B1cC5zdGF0dXM9ImNsb3NlZCIsZS5fbGFzdF9mb2N1cyYmMDxlLl9sYXN0X2ZvY3VzLmxlbmd0aCYmZS5fbGFzdF9mb2N1cy5mb2N1cygpLHQudHJpZ2dlcihnLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpfSwxZTMqZS5zcGVlZCksZS5rZXlib2FyZCYmZyhkb2N1bWVudCkub2ZmKCJrZXlkb3duIix0aGlzLmtleWRvd24pKX1lbHNlIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt3MnBvcHVwLmNsb3NlKCl9LDEwMCl9LHRvZ2dsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKSxpPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToidG9nZ2xlIix0YXJnZXQ6InBvcHVwIixvcHRpb25zOnR9KTshMCE9PWkuaXNDYW5jZWxsZWQmJighMD09PXQubWF4aW1pemVkP3cycG9wdXAubWluKCk6dzJwb3B1cC5tYXgoKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS50cmlnZ2VyKGcuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciJ9KSl9LDFlMyp0LnNwZWVkKzUwKSl9LG1heDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKTtpZighMCE9PXQubWF4aW1pemVkKXt2YXIgaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im1heCIsdGFyZ2V0OiJwb3B1cCIsb3B0aW9uczp0fSk7ITAhPT1pLmlzQ2FuY2VsbGVkJiYodzJwb3B1cC5zdGF0dXM9InJlc2l6aW5nIix0LnByZXZTaXplPWcoIiN3MnVpLXBvcHVwIikuY3NzKCJ3aWR0aCIpKyI6IitnKCIjdzJ1aS1wb3B1cCIpLmNzcygiaGVpZ2h0IiksdzJwb3B1cC5yZXNpemUoMWU0LDFlNCxmdW5jdGlvbigpe3cycG9wdXAuc3RhdHVzPSJvcGVuIix0Lm1heGltaXplZD0hMCxlLnRyaWdnZXIoZy5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKSxnKCIjdzJ1aS1wb3B1cCAudzJ1aS1ncmlkLCAjdzJ1aS1wb3B1cCAudzJ1aS1mb3JtLCAjdzJ1aS1wb3B1cCAudzJ1aS1sYXlvdXQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Zyh0aGlzKS5hdHRyKCJuYW1lIik7dzJ1aVtlXSYmdzJ1aVtlXS5yZXNpemUmJncydWlbZV0ucmVzaXplKCl9KX0pKX19LG1pbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKTtpZighMD09PXQubWF4aW1pemVkKXt2YXIgaT10LnByZXZTaXplLnNwbGl0KCI6Iikscz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im1pbiIsdGFyZ2V0OiJwb3B1cCIsb3B0aW9uczp0fSk7ITAhPT1zLmlzQ2FuY2VsbGVkJiYodzJwb3B1cC5zdGF0dXM9InJlc2l6aW5nIix3MnBvcHVwLnJlc2l6ZShwYXJzZUludChpWzBdKSxwYXJzZUludChpWzFdKSxmdW5jdGlvbigpe3cycG9wdXAuc3RhdHVzPSJvcGVuIix0Lm1heGltaXplZD0hMSx0LnByZXZTaXplPW51bGwsZS50cmlnZ2VyKGcuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSksZygiI3cydWktcG9wdXAgLncydWktZ3JpZCwgI3cydWktcG9wdXAgLncydWktZm9ybSwgI3cydWktcG9wdXAgLncydWktbGF5b3V0IikuZWFjaChmdW5jdGlvbigpe3ZhciBlPWcodGhpcykuYXR0cigibmFtZSIpO3cydWlbZV0mJncydWlbZV0ucmVzaXplJiZ3MnVpW2VdLnJlc2l6ZSgpfSl9KSl9fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZygiI3cydWktcG9wdXAiKS5kYXRhKCJvcHRpb25zIil9LHNldDpmdW5jdGlvbihlKXt3MnBvcHVwLm9wZW4oZSl9LGNsZWFyOmZ1bmN0aW9uKCl7ZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtdGl0bGUiKS5odG1sKCIiKSxnKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1ib2R5IikuaHRtbCgiIiksZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnV0dG9ucyIpLmh0bWwoIiIpfSxyZXNldDpmdW5jdGlvbigpe3cycG9wdXAub3Blbih3MnBvcHVwLmRlZmF1bHRzKX0sbG9hZDpmdW5jdGlvbihzKXtpZih3MnBvcHVwLnN0YXR1cz0ibG9hZGluZyIsbnVsbCE9cy51cmwpe3ZhciBlPVN0cmluZyhzLnVybCkuc3BsaXQoIiMiKSxuPWVbMF0sYT1lWzFdO251bGw9PXMmJihzPXt9KTt2YXIgdD1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEobik7bnVsbCE9dD9yKHQsYSk6Zy5nZXQobixmdW5jdGlvbihlLHQsaSl7cihpLnJlc3BvbnNlVGV4dCxhKSxnKCIjdzJ1aS1wb3B1cCIpLmRhdGEobixpLnJlc3BvbnNlVGV4dCl9KX1lbHNlIGNvbnNvbGUubG9nKCJFUlJPUjogVGhlIHVybCBwYXJhbWV0ZXIgaXMgZW1wdHkuIik7ZnVuY3Rpb24gcihlLHQpe2lmKGRlbGV0ZSBzLnVybCxnKCJib2R5IikuYXBwZW5kKCc8ZGl2IGlkPSJ3MnVpLXRtcCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPicrZSsiPC9kaXY+IiksbnVsbCE9dCYmMDxnKCIjdzJ1aS10bXAgIyIrdCkubGVuZ3RoP2coIiN3MnVpLXRtcCAjIit0KS53MnBvcHVwKHMpOmcoIiN3MnVpLXRtcCA+IGRpdiIpLncycG9wdXAocyksMDxnKCIjdzJ1aS10bXAgPiBzdHlsZSIpLmxlbmd0aCl7dmFyIGk9ZygiPGRpdj4iKS5hcHBlbmQoZygiI3cydWktdG1wID4gc3R5bGUiKS5jbG9uZSgpKS5odG1sKCk7MD09PWcoIiN3MnVpLXBvcHVwICNkaXYtc3R5bGUiKS5sZW5ndGgmJmcoIiN3MnVpLXBvcHVwIikuYXBwZW5kKCc8ZGl2IGlkPSJkaXYtc3R5bGUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC0xMDA7IHdpZHRoOiAxcHgiPjwvZGl2PicpLGcoIiN3MnVpLXBvcHVwICNkaXYtc3R5bGUiKS5odG1sKGkpfWcoIiN3MnVpLXRtcCIpLnJlbW92ZSgpfX0sbWVzc2FnZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzO2coKS53MnRhZygpLHQ9dHx8e3dpZHRoOjIwMCxoZWlnaHQ6MTAwfTt2YXIgZT1wYXJzZUludChnKCIjdzJ1aS1wb3B1cCIpLndpZHRoKCkpLHM9cGFyc2VJbnQoZygiI3cydWktcG9wdXAiKS5oZWlnaHQoKSk7dC5vcmlnaW5hbFdpZHRoPXQud2lkdGgsdC5vcmlnaW5hbEhlaWdodD10LmhlaWdodCxwYXJzZUludCh0LndpZHRoKTwxMCYmKHQud2lkdGg9MTApLHBhcnNlSW50KHQuaGVpZ2h0KTwxMCYmKHQuaGVpZ2h0PTEwKSxudWxsPT10LmhpZGVPbkNsaWNrJiYodC5oaWRlT25DbGljaz0hMSk7dmFyIG49ZygiI3cydWktcG9wdXAiKS5kYXRhKCJvcHRpb25zIil8fHt9LGE9cGFyc2VJbnQoZygiI3cydWktcG9wdXAgPiAudzJ1aS1wb3B1cC10aXRsZSIpLmNzcygiaGVpZ2h0IikpOyhudWxsPT10LndpZHRofHx0LndpZHRoPm4ud2lkdGgtMTApJiYodC53aWR0aD1uLndpZHRoLTEwKSwobnVsbD09dC5oZWlnaHR8fHQuaGVpZ2h0Pm4uaGVpZ2h0LWEtNSkmJih0LmhlaWdodD1uLmhlaWdodC1hLTUpLHQub3JpZ2luYWxIZWlnaHQ8MCYmKHQuaGVpZ2h0PXMrdC5vcmlnaW5hbEhlaWdodC1hKSx0Lm9yaWdpbmFsV2lkdGg8MCYmKHQud2lkdGg9ZSsyKnQub3JpZ2luYWxXaWR0aCk7dmFyIHI9ZygiI3cydWktcG9wdXAgLncydWktcG9wdXAtdGl0bGUiKSxsPWcoIiN3MnVpLXBvcHVwIC53MnVpLW1lc3NhZ2UiKS5sZW5ndGg7aWYoIiI9PT1nLnRyaW0odC5odG1sKSYmIiI9PT1nLnRyaW0odC5ib2R5KSYmIiI9PT1nLnRyaW0odC5idXR0b25zKSl7dmFyIG89ZygiI3cydWktcG9wdXAgI3cydWktbWVzc2FnZSIrKGwtMSkpO3Q9by5kYXRhKCJvcHRpb25zIil8fHt9O28uY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOiIwLjE1cyIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0iK3QuaGVpZ2h0KyJweCkifSkpLDE9PWw/dzJwb3B1cC51bmxvY2soMTUwKTpnKCIjdzJ1aS1wb3B1cCAjdzJ1aS1tZXNzYWdlIisobC0yKSkuY3NzKCJ6LWluZGV4IiwxNTAwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9by5kYXRhKCJwcmV2X2ZvY3VzIik7by5yZW1vdmUoKSxlJiYwPGUubGVuZ3RoP2UuZm9jdXMoKTppLmZvY3VzKCksImZ1bmN0aW9uIj09dHlwZW9mIHQub25DbG9zZSYmdC5vbkNsb3NlKCl9LDE1MCl9ZWxzZXsiIj09PWcudHJpbSh0LmJvZHkpJiYiIj09PWcudHJpbSh0LmJ1dHRvbnMpfHwodC5odG1sPSc8ZGl2IGNsYXNzPSJ3MnVpLW1lc3NhZ2UtYm9keSI+Jyt0LmJvZHkrJzwvZGl2PjxkaXYgY2xhc3M9IncydWktbWVzc2FnZS1idXR0b25zIj4nK3QuYnV0dG9ucysiPC9kaXY+IiksZygiI3cydWktcG9wdXAgLncydWktbWVzc2FnZSIpLmNzcygiei1pbmRleCIsMTM5MCksci5jc3MoInotaW5kZXgiLDE1MDEpLGcoIiN3MnVpLXBvcHVwIC53MnVpLWJveCIpLmJlZm9yZSgnPGRpdiBpZD0idzJ1aS1tZXNzYWdlJytsKyciIGNsYXNzPSJ3MnVpLW1lc3NhZ2UiIHN0eWxlPSJkaXNwbGF5OiBub25lOyB6LWluZGV4OiAxNTAwOyAnKygwPT09ci5sZW5ndGg/InRvcDogMHB4OyI6InRvcDogIit3MnV0aWxzLmdldFNpemUociwiaGVpZ2h0IikrInB4OyIpKyhudWxsIT10LndpZHRoPyJ3aWR0aDogIit0LndpZHRoKyJweDsgbGVmdDogIisoZS10LndpZHRoKS8yKyJweDsiOiJsZWZ0OiAxMHB4OyByaWdodDogMTBweDsiKSsobnVsbCE9dC5oZWlnaHQ/ImhlaWdodDogIit0LmhlaWdodCsicHg7IjoiYm90dG9tOiA2cHg7IikrdzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLCIwcyIsITApKyciJysoITA9PT10LmhpZGVPbkNsaWNrPydvbmNsaWNrPSJ3MnBvcHVwLm1lc3NhZ2UoKTsiJzoiIikrIj48L2Rpdj4iKSxnKCIjdzJ1aS1wb3B1cCAjdzJ1aS1tZXNzYWdlIitsKS5kYXRhKCJvcHRpb25zIix0KS5kYXRhKCJwcmV2X2ZvY3VzIixnKCI6Zm9jdXMiKSk7dmFyIGQ9ZygiI3cydWktcG9wdXAgI3cydWktbWVzc2FnZSIrbCkuY3NzKCJkaXNwbGF5Iik7ZygiI3cydWktcG9wdXAgI3cydWktbWVzc2FnZSIrbCkuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2Zvcm06Im5vbmUiPT1kPyJ0cmFuc2xhdGVZKC0iK3QuaGVpZ2h0KyJweCkiOiJ0cmFuc2xhdGVZKDBweCkifSkpLCJub25lIj09ZCYmKGcoIiN3MnVpLXBvcHVwICN3MnVpLW1lc3NhZ2UiK2wpLnNob3coKS5odG1sKHQuaHRtbCksc2V0VGltZW91dChmdW5jdGlvbigpe2coIiN3MnVpLXBvcHVwICN3MnVpLW1lc3NhZ2UiK2wpLmNzcyhnLmV4dGVuZCh3MnV0aWxzLmNzc1ByZWZpeCgidHJhbnNpdGlvbiIsIi4zcyIsITEpLHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2Zvcm06Im5vbmUiPT1kPyJ0cmFuc2xhdGVZKDBweCkiOiJ0cmFuc2xhdGVZKC0iK3QuaGVpZ2h0KyJweCkifSkpKX0sMSksMD09PWwmJncycG9wdXAubG9jaygpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLmZvY3VzKCksZygiI3cydWktcG9wdXAgI3cydWktbWVzc2FnZSIrbCkuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOiIwcyJ9KSksImZ1bmN0aW9uIj09dHlwZW9mIHQub25PcGVuJiZ0Lm9uT3BlbigpfSwzNTApKX19LGZvY3VzOmZ1bmN0aW9uKCl7dmFyIGk9bnVsbCxlPWcoIiN3MnVpLXBvcHVwIikscz0iaW5wdXQ6dmlzaWJsZSwgYnV0dG9uOnZpc2libGUsIHNlbGVjdDp2aXNpYmxlLCB0ZXh0YXJlYTp2aXNpYmxlLCBbY29udGVudEVkaXRhYmxlXSI7ZyhlKS5maW5kKHMpLm9mZigiLmtlZXAtZm9jdXMiKTt2YXIgdD1nKCIjdzJ1aS1wb3B1cCAudzJ1aS1tZXNzYWdlIikubGVuZ3RoLTEsbj1nKCIjdzJ1aS1wb3B1cCAjdzJ1aS1tZXNzYWdlIit0KTtpZigwPG4ubGVuZ3RoKTA8KGE9ZyhuW24ubGVuZ3RoLTFdKS5maW5kKCJidXR0b24iKSkubGVuZ3RoJiZhWzBdLmZvY3VzKCksaT1uO2Vsc2UgaWYoMDxlLmxlbmd0aCl7dmFyIGE7MDwoYT1lLmZpbmQoIi53MnVpLXBvcHVwLWJ1dHRvbnMgYnV0dG9uIikpLmxlbmd0aCYmYVswXS5mb2N1cygpLGk9ZX1nKGkpLmZpbmQocykub24oImJsdXIua2VlcC1mb2N1cyIsZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPWcoIjpmb2N1cyIpO2lmKDA8ZS5sZW5ndGgmJiFnKGkpLmZpbmQocykuaXMoZSl8fGUuaGFzQ2xhc3MoIncydWktcG9wdXAtaGlkZGVuIikpe3ZhciB0PWcoaSkuZmluZChzKTswPHQubGVuZ3RoJiZ0WzBdLmZvY3VzKCl9fSwxKX0pfSxsb2NrOmZ1bmN0aW9uKGUsdCl7dmFyIGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO2kudW5zaGlmdChnKCIjdzJ1aS1wb3B1cCIpKSx3MnV0aWxzLmxvY2suYXBwbHkod2luZG93LGkpfSx1bmxvY2s6ZnVuY3Rpb24oZSl7dzJ1dGlscy51bmxvY2soZygiI3cydWktcG9wdXAiKSxlKX0sbG9ja1NjcmVlbjpmdW5jdGlvbihlKXtyZXR1cm4hKDA8ZygiI3cydWktbG9jayIpLmxlbmd0aCkmJihudWxsPT1lJiYoZT1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKSksbnVsbD09ZSYmKGU9e30pLGU9Zy5leHRlbmQoe30sdzJwb3B1cC5kZWZhdWx0cyxlKSxnKCJib2R5IikuYXBwZW5kKCc8ZGl2IGlkPSJ3MnVpLWxvY2siICAgICBvbm1vdXNld2hlZWw9ImlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBlbHNlIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7IGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkgZXZlbnQucHJldmVudERlZmF1bHQoKTsgZWxzZSByZXR1cm4gZmFsc2U7IiAgICBzdHlsZT0icG9zaXRpb246ICcrKCJJRTUiPT13MnV0aWxzLmVuZ2luZT8iYWJzb2x1dGUiOiJmaXhlZCIpKyI7IHotSW5kZXg6IDExOTk7IGxlZnQ6IDBweDsgdG9wOiAwcHg7ICAgICAgICAgICAgcGFkZGluZzogMHB4OyBtYXJnaW46IDBweDsgYmFja2dyb3VuZC1jb2xvcjogIitlLmNvbG9yKyc7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG9wYWNpdHk6IDA7Ij48L2Rpdj4nKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZygiI3cydWktbG9jayIpLmNzcygib3BhY2l0eSIsZS5vcGFjaXR5KS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLGUuc3BlZWQrInMgb3BhY2l0eSIpKX0sMSksMT09ZS5tb2RhbD8oZygiI3cydWktbG9jayIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7ZygiI3cydWktbG9jayIpLmNzcygib3BhY2l0eSIsIjAuNiIpLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCgidHJhbnNpdGlvbiIsIi4xcyIpKX0pLGcoIiN3MnVpLWxvY2siKS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZygiI3cydWktbG9jayIpLmNzcygib3BhY2l0eSIsZS5vcGFjaXR5KS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLCIuMXMiKSl9LDEwMCl9KSk6ZygiI3cydWktbG9jayIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7dzJwb3B1cC5jbG9zZSgpfSksITApfSx1bmxvY2tTY3JlZW46ZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT1nKCIjdzJ1aS1sb2NrIikubGVuZ3RoJiYobnVsbD09ZSYmKGU9ZygiI3cydWktcG9wdXAiKS5kYXRhKCJvcHRpb25zIikpLG51bGw9PWUmJihlPXt9KSxlPWcuZXh0ZW5kKHt9LHcycG9wdXAuZGVmYXVsdHMsZSksZygiI3cydWktbG9jayIpLmNzcygib3BhY2l0eSIsIjAiKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoInRyYW5zaXRpb24iLGUuc3BlZWQrInMgb3BhY2l0eSIpKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZygiI3cydWktbG9jayIpLnJlbW92ZSgpfSwxZTMqZS5zcGVlZCksITApfSxyZXNpemVNZXNzYWdlczpmdW5jdGlvbigpe2coIiN3MnVpLXBvcHVwIikuZGF0YSgib3B0aW9ucyIpO2coIiN3MnVpLXBvcHVwIC53MnVpLW1lc3NhZ2UiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Zyh0aGlzKS5kYXRhKCJvcHRpb25zIiksdD1nKCIjdzJ1aS1wb3B1cCIpO3BhcnNlSW50KGUud2lkdGgpPDEwJiYoZS53aWR0aD0xMCkscGFyc2VJbnQoZS5oZWlnaHQpPDEwJiYoZS5oZWlnaHQ9MTApO3ZhciBpPXBhcnNlSW50KHQuZmluZCgiPiAudzJ1aS1wb3B1cC10aXRsZSIpLmNzcygiaGVpZ2h0IikpLHM9cGFyc2VJbnQodC53aWR0aCgpKSxuPXBhcnNlSW50KHQuaGVpZ2h0KCkpO2Uud2lkdGg9ZS5vcmlnaW5hbFdpZHRoLGUud2lkdGg+cy0xMCYmKGUud2lkdGg9cy0xMCksZS5oZWlnaHQ9ZS5vcmlnaW5hbEhlaWdodCxlLmhlaWdodD5uLWktNSYmKGUuaGVpZ2h0PW4taS01KSxlLm9yaWdpbmFsSGVpZ2h0PDAmJihlLmhlaWdodD1uK2Uub3JpZ2luYWxIZWlnaHQtaSksZS5vcmlnaW5hbFdpZHRoPDAmJihlLndpZHRoPXMrMiplLm9yaWdpbmFsV2lkdGgpLGcodGhpcykuY3NzKHtsZWZ0OihzLWUud2lkdGgpLzIrInB4Iix3aWR0aDplLndpZHRoKyJweCIsaGVpZ2h0OmUuaGVpZ2h0KyJweCJ9KX0pfSxyZXNpemU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzLG4sYT10aGlzLHI9ZygiI3cydWktcG9wdXAiKS5kYXRhKCJvcHRpb25zIil8fHt9O251bGw9PXIuc3BlZWQmJihyLnNwZWVkPTApLGU9cGFyc2VJbnQoZSksdD1wYXJzZUludCh0KSxudWxsPT13aW5kb3cuaW5uZXJIZWlnaHQ/KHM9cGFyc2VJbnQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoKSxuPXBhcnNlSW50KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQpLCJJRTciPT09dzJ1dGlscy5lbmdpbmUmJihzKz0yMSxuKz00KSk6KHM9cGFyc2VJbnQod2luZG93LmlubmVyV2lkdGgpLG49cGFyc2VJbnQod2luZG93LmlubmVySGVpZ2h0KSkscy0xMDxlJiYoZT1zLTEwKSxuLTEwPHQmJih0PW4tMTApO3ZhciBsPShuLXQpLzIqLjYsbz0ocy1lKS8yO2coIiN3MnVpLXBvcHVwIikuY3NzKHcydXRpbHMuY3NzUHJlZml4KHt0cmFuc2l0aW9uOnIuc3BlZWQrInMgd2lkdGgsICIrci5zcGVlZCsicyBoZWlnaHQsICIrci5zcGVlZCsicyBsZWZ0LCAiK3Iuc3BlZWQrInMgdG9wIn0pKS5jc3Moe3RvcDpsLGxlZnQ6byx3aWR0aDplLGhlaWdodDp0fSk7dmFyIGQ9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXthLnJlc2l6ZU1lc3NhZ2VzKCl9LDEwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChkKSxyLndpZHRoPWUsci5oZWlnaHQ9dCxhLnJlc2l6ZU1lc3NhZ2VzKCksImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKX0sMWUzKnIuc3BlZWQrNTApfSxyZXN0b3JlVGVtcGxhdGU6ZnVuY3Rpb24oKXt2YXIgZT1nKCIjdzJ1aS1wb3B1cCIpLmRhdGEoIm9wdGlvbnMiKTtpZihudWxsIT1lKXt2YXIgdD13MnBvcHVwLl90ZW1wbGF0ZSxpPWUudGl0bGUscz1lLmJvZHksbj1lLmJ1dHRvbnM7aWYodzJwb3B1cC5fcHJldj8odD13MnBvcHVwLl9wcmV2LnRlbXBsYXRlLGk9dzJwb3B1cC5fcHJldi50aXRsZSxzPXcycG9wdXAuX3ByZXYuYm9keSxuPXcycG9wdXAuX3ByZXYuYnV0dG9ucyxkZWxldGUgdzJwb3B1cC5fcHJldik6ZGVsZXRlIHcycG9wdXAuX3RlbXBsYXRlLG51bGwhPXQpe3ZhciBhPWcodCk7aWYoMD09PWEubGVuZ3RoKXJldHVybjsiYm9keSI9PWcocykuYXR0cigicmVsIik/KGkmJmEuYXBwZW5kKGkpLHMmJmEuYXBwZW5kKHMpLG4mJmEuYXBwZW5kKG4pKTphLmFwcGVuZChzKX19fX0sZy5leHRlbmQodzJwb3B1cCx3MnV0aWxzLmV2ZW50KX0oalF1ZXJ5KTt2YXIgdzJhbGVydD1mdW5jdGlvbihlLHQsaSl7dmFyIHM9alF1ZXJ5O3JldHVybiBudWxsPT10JiYodD13MnV0aWxzLmxhbmcoIk5vdGlmaWNhdGlvbiIpKSwwPHMoIiN3MnVpLXBvcHVwIikubGVuZ3RoJiYiY2xvc2luZyIhPXcycG9wdXAuc3RhdHVzP3cycG9wdXAubWVzc2FnZSh7d2lkdGg6NDAwLGhlaWdodDoxNzAsYm9keTonPGRpdiBjbGFzcz0idzJ1aS1jZW50ZXJlZCB3MnVpLWFsZXJ0LW1zZyIgc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsiPicrZSsiPC9kaXY+IixidXR0b25zOic8YnV0dG9uIG9uY2xpY2s9IncycG9wdXAubWVzc2FnZSgpOyIgY2xhc3M9IncydWktcG9wdXAtYnRuIHcydWktYnRuIj4nK3cydXRpbHMubGFuZygiT2siKSsiPC9idXR0b24+Iixvbk9wZW46ZnVuY3Rpb24oKXtzKCIjdzJ1aS1wb3B1cCAudzJ1aS1tZXNzYWdlIC53MnVpLXBvcHVwLWJ0biIpLmZvY3VzKCl9LG9uQ2xvc2U6ZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpfX0pOncycG9wdXAub3Blbih7d2lkdGg6NDUwLGhlaWdodDoyMjAsc2hvd01heDohMSxzaG93Q2xvc2U6ITEsdGl0bGU6dCxib2R5Oic8ZGl2IGNsYXNzPSJ3MnVpLWNlbnRlcmVkIHcydWktYWxlcnQtbXNnIiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyI+JytlKyI8L2Rpdj4iLGJ1dHRvbnM6JzxidXR0b24gb25jbGljaz0idzJwb3B1cC5jbG9zZSgpOyIgY2xhc3M9IncydWktcG9wdXAtYnRuIHcydWktYnRuIj4nK3cydXRpbHMubGFuZygiT2siKSsiPC9idXR0b24+Iixvbk9wZW46ZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3MoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLWJ0biIpLmZvY3VzKCl9LDEpfSxvbktleWRvd246ZnVuY3Rpb24oZSl7cygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnRuIikuZm9jdXMoKS5hZGRDbGFzcygiY2xpY2tlZCIpfSxvbkNsb3NlOmZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKX19KSx7b2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGk9ZSx0aGlzfSxkb25lOmZ1bmN0aW9uKGUpe3JldHVybiBpPWUsdGhpc319fSx3MmNvbmZpcm09ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPWpRdWVyeSxuPXt9LGE9e21zZzoiIix0aXRsZTp3MnV0aWxzLmxhbmcoIkNvbmZpcm1hdGlvbiIpLHdpZHRoOjA8cygiI3cydWktcG9wdXAiKS5sZW5ndGg/NDAwOjQ1MCxoZWlnaHQ6MDxzKCIjdzJ1aS1wb3B1cCIpLmxlbmd0aD8xNzA6MjIwLHllc190ZXh0OiJZZXMiLHllc19jbGFzczoiIix5ZXNfc3R5bGU6IiIseWVzX2NhbGxCYWNrOm51bGwsbm9fdGV4dDoiTm8iLG5vX2NsYXNzOiIiLG5vX3N0eWxlOiIiLG5vX2NhbGxCYWNrOm51bGwsZm9jdXNfdG9fbm86ITEsY2FsbEJhY2s6bnVsbH07cmV0dXJuIDE9PWFyZ3VtZW50cy5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgZT9zLmV4dGVuZChuLGEsZSk6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/cy5leHRlbmQobixhLHttc2c6ZSxjYWxsQmFjazp0fSk6cy5leHRlbmQobixhLHttc2c6ZSx0aXRsZTp0LGNhbGxCYWNrOml9KSwib2JqZWN0Ij09dHlwZW9mIG4uYnRuX3llcyYmKG4ueWVzX3RleHQ9bi5idG5feWVzLnRleHR8fG4ueWVzX3RleHQsbi55ZXNfY2xhc3M9bi5idG5feWVzLmNsYXNzfHxuLnllc19jbGFzcyxuLnllc19zdHlsZT1uLmJ0bl95ZXMuc3R5bGV8fG4ueWVzX3N0eWxlLG4ueWVzX2NhbGxCYWNrPW4uYnRuX3llcy5jYWxsQmFja3x8bi55ZXNfY2FsbEJhY2spLCJvYmplY3QiPT10eXBlb2Ygbi5idG5fbm8mJihuLm5vX3RleHQ9bi5idG5fbm8udGV4dHx8bi5ub190ZXh0LG4ubm9fY2xhc3M9bi5idG5fbm8uY2xhc3N8fG4ubm9fY2xhc3Msbi5ub19zdHlsZT1uLmJ0bl9uby5zdHlsZXx8bi5ub19zdHlsZSxuLm5vX2NhbGxCYWNrPW4uYnRuX25vLmNhbGxCYWNrfHxuLm5vX2NhbGxCYWNrKSwwPHMoIiN3MnVpLXBvcHVwIikubGVuZ3RoJiYiY2xvc2luZyIhPXcycG9wdXAuc3RhdHVzJiZ3MnBvcHVwLmdldCgpPyhuLndpZHRoPncycG9wdXAuZ2V0KCkud2lkdGgmJihuLndpZHRoPXcycG9wdXAuZ2V0KCkud2lkdGgpLG4uaGVpZ2h0PncycG9wdXAuZ2V0KCkuaGVpZ2h0LTUwJiYobi5oZWlnaHQ9dzJwb3B1cC5nZXQoKS5oZWlnaHQtNTApLHcycG9wdXAubWVzc2FnZSh7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsYm9keTonPGRpdiBjbGFzcz0idzJ1aS1jZW50ZXJlZCB3MnVpLWNvbmZpcm0tbXNnIiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyI+JytuLm1zZysiPC9kaXY+IixidXR0b25zOncydXRpbHMuc2V0dGluZ3MubWFjQnV0dG9uT3JkZXI/JzxidXR0b24gaWQ9Ik5vIiBjbGFzcz0idzJ1aS1wb3B1cC1idG4gdzJ1aS1idG4gJytuLm5vX2NsYXNzKyciIHN0eWxlPSInK24ubm9fc3R5bGUrJyI+Jyt3MnV0aWxzLmxhbmcobi5ub190ZXh0KSsnPC9idXR0b24+PGJ1dHRvbiBpZD0iWWVzIiBjbGFzcz0idzJ1aS1wb3B1cC1idG4gdzJ1aS1idG4gJytuLnllc19jbGFzcysnIiBzdHlsZT0iJytuLnllc19zdHlsZSsnIj4nK3cydXRpbHMubGFuZyhuLnllc190ZXh0KSsiPC9idXR0b24+IjonPGJ1dHRvbiBpZD0iWWVzIiBjbGFzcz0idzJ1aS1wb3B1cC1idG4gdzJ1aS1idG4gJytuLnllc19jbGFzcysnIiBzdHlsZT0iJytuLnllc19zdHlsZSsnIj4nK3cydXRpbHMubGFuZyhuLnllc190ZXh0KSsnPC9idXR0b24+PGJ1dHRvbiBpZD0iTm8iIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24ubm9fY2xhc3MrJyIgc3R5bGU9Iicrbi5ub19zdHlsZSsnIj4nK3cydXRpbHMubGFuZyhuLm5vX3RleHQpKyI8L2J1dHRvbj4iLG9uT3BlbjpmdW5jdGlvbihlKXtzKCIjdzJ1aS1wb3B1cCAudzJ1aS1tZXNzYWdlIC53MnVpLWJ0biIpLm9uKCJjbGljay53MmNvbmZpcm0iLGZ1bmN0aW9uKGUpe3cycG9wdXAuX2NvbmZpcm1fYnRuPWUudGFyZ2V0LmlkLHcycG9wdXAubWVzc2FnZSgpfSksImZ1bmN0aW9uIj09dHlwZW9mIG4ub25PcGVuJiZuLm9uT3BlbigpfSxvbkNsb3NlOmZ1bmN0aW9uKGUpe3MoIiN3MnVpLXBvcHVwIC53MnVpLW1lc3NhZ2UgLncydWktYnRuIikub2ZmKCJjbGljay53MmNvbmZpcm0iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIG4uY2FsbEJhY2smJm4uY2FsbEJhY2sodzJwb3B1cC5fY29uZmlybV9idG4pLCJZZXMiPT13MnBvcHVwLl9jb25maXJtX2J0biYmImZ1bmN0aW9uIj09dHlwZW9mIG4ueWVzX2NhbGxCYWNrJiZuLnllc19jYWxsQmFjaygpLCJObyI9PXcycG9wdXAuX2NvbmZpcm1fYnRuJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5ub19jYWxsQmFjayYmbi5ub19jYWxsQmFjaygpfSwzMDApLCJmdW5jdGlvbiI9PXR5cGVvZiBuLm9uQ2xvc2UmJm4ub25DbG9zZSgpfX0pKToodzJ1dGlscy5pc0ludChuLmhlaWdodCl8fChuLmhlaWdodD1uLmhlaWdodCs1MCksdzJwb3B1cC5vcGVuKHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCx0aXRsZTpuLnRpdGxlLG1vZGFsOiEwLHNob3dDbG9zZTohMSxib2R5Oic8ZGl2IGNsYXNzPSJ3MnVpLWNlbnRlcmVkIHcydWktY29uZmlybS1tc2ciIHN0eWxlPSJmb250LXNpemU6IDEzcHg7Ij4nK24ubXNnKyI8L2Rpdj4iLGJ1dHRvbnM6dzJ1dGlscy5zZXR0aW5ncy5tYWNCdXR0b25PcmRlcj8nPGJ1dHRvbiBpZD0iTm8iIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24ubm9fY2xhc3MrJyIgc3R5bGU9Iicrbi5ub19zdHlsZSsnIj4nK3cydXRpbHMubGFuZyhuLm5vX3RleHQpKyc8L2J1dHRvbj48YnV0dG9uIGlkPSJZZXMiIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24ueWVzX2NsYXNzKyciIHN0eWxlPSInK24ueWVzX3N0eWxlKyciPicrdzJ1dGlscy5sYW5nKG4ueWVzX3RleHQpKyI8L2J1dHRvbj4iOic8YnV0dG9uIGlkPSJZZXMiIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24ueWVzX2NsYXNzKyciIHN0eWxlPSInK24ueWVzX3N0eWxlKyciPicrdzJ1dGlscy5sYW5nKG4ueWVzX3RleHQpKyc8L2J1dHRvbj48YnV0dG9uIGlkPSJObyIgY2xhc3M9IncydWktcG9wdXAtYnRuIHcydWktYnRuICcrbi5ub19jbGFzcysnIiBzdHlsZT0iJytuLm5vX3N0eWxlKyciPicrdzJ1dGlscy5sYW5nKG4ubm9fdGV4dCkrIjwvYnV0dG9uPiIsb25PcGVuOmZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3cycG9wdXAuY2xvc2UoKSwiZnVuY3Rpb24iPT10eXBlb2Ygbi5jYWxsQmFjayYmbi5jYWxsQmFjayhlLnRhcmdldC5pZCksIlllcyI9PWUudGFyZ2V0LmlkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi55ZXNfY2FsbEJhY2smJm4ueWVzX2NhbGxCYWNrKCksIk5vIj09ZS50YXJnZXQuaWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm5vX2NhbGxCYWNrJiZuLm5vX2NhbGxCYWNrKCl9KSxuLmZvY3VzX3RvX25vP3MoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLWJ0biNObyIpLmZvY3VzKCk6cygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnRuI1llcyIpLmZvY3VzKCksImZ1bmN0aW9uIj09dHlwZW9mIG4ub25PcGVuJiZuLm9uT3BlbigpfSwxKX0sb25DbG9zZTpmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbkNsb3NlJiZuLm9uQ2xvc2UoKX0sb25LZXlkb3duOmZ1bmN0aW9uKGUpe2lmKDA9PT1zKCIjdzJ1aS1wb3B1cCAudzJ1aS1tZXNzYWdlIikubGVuZ3RoKXN3aXRjaChlLm9yaWdpbmFsRXZlbnQua2V5Q29kZSl7Y2FzZSAxMzpzKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1idG4jWWVzIikuZm9jdXMoKS5hZGRDbGFzcygiY2xpY2tlZCIpLHcycG9wdXAuY2xvc2UoKTticmVhaztjYXNlIDI3OnMoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLWJ0biNObyIpLmZvY3VzKCkuY2xpY2soKSx3MnBvcHVwLmNsb3NlKCl9fX0pKSx7eWVzOmZ1bmN0aW9uKGUpe3JldHVybiBuLnllc19jYWxsQmFjaz1lLHRoaXN9LG5vOmZ1bmN0aW9uKGUpe3JldHVybiBuLm5vX2NhbGxCYWNrPWUsdGhpc319fSx3MnByb21wdD1mdW5jdGlvbihlLHQsaSl7dmFyIHM9alF1ZXJ5LG49e30sYT17bGFiZWw6IiIsdmFsdWU6IiIsYXR0cnM6IiIsdGV4dGFyZWE6ITEsdGl0bGU6dzJ1dGlscy5sYW5nKCJOb3RpZmljYXRpb24iKSxva190ZXh0OncydXRpbHMubGFuZygiT2siKSxjYW5jZWxfdGV4dDp3MnV0aWxzLmxhbmcoIkNhbmNlbCIpLHdpZHRoOjA8cygiI3cydWktcG9wdXAiKS5sZW5ndGg/NDAwOjQ1MCxoZWlnaHQ6MDxzKCIjdzJ1aS1wb3B1cCIpLmxlbmd0aD8xNzA6MjIwLGNhbGxCYWNrOm51bGx9O3JldHVybiAxPT1hcmd1bWVudHMubGVuZ3RoJiYib2JqZWN0Ij09dHlwZW9mIGU/cy5leHRlbmQobixhLGUpOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3MuZXh0ZW5kKG4sYSx7bGFiZWw6ZSxjYWxsQmFjazp0fSk6cy5leHRlbmQobixhLHtsYWJlbDplLHRpdGxlOnQsY2FsbEJhY2s6aX0pLDA8cygiI3cydWktcG9wdXAiKS5sZW5ndGgmJiJjbG9zaW5nIiE9dzJwb3B1cC5zdGF0dXMmJncycG9wdXAuZ2V0KCk/KG4ud2lkdGg+dzJwb3B1cC5nZXQoKS53aWR0aCYmKG4ud2lkdGg9dzJwb3B1cC5nZXQoKS53aWR0aCksbi5oZWlnaHQ+dzJwb3B1cC5nZXQoKS5oZWlnaHQtNTAmJihuLmhlaWdodD13MnBvcHVwLmdldCgpLmhlaWdodC01MCksdzJwb3B1cC5tZXNzYWdlKHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCxib2R5Om4udGV4dGFyZWE/JzxkaXYgY2xhc3M9IncydWktcHJvbXB0IiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBwYWRkaW5nOiAxNXB4IDEwcHggMCAxMHB4OyI+ICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbTogNXB4Ij4nK24ubGFiZWwrJzwvZGl2PiAgPHRleHRhcmVhIGlkPSJ3MnByb21wdCIgJytuLmF0dHJzKyI+PC90ZXh0YXJlYT48L2Rpdj4iOic8ZGl2IGNsYXNzPSJ3MnVpLXByb21wdCB3MnVpLWNlbnRlcmVkIiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyI+ICA8bGFiZWwgc3R5bGU9Im1hcmdpbi1yaWdodDogMTBweDsiPicrbi5sYWJlbCsnPC9sYWJlbD4gIDxpbnB1dCBpZD0idzJwcm9tcHQiICcrbi5hdHRycysiPjwvZGl2PiIsYnV0dG9uczp3MnV0aWxzLnNldHRpbmdzLm1hY0J1dHRvbk9yZGVyPyc8YnV0dG9uIGlkPSJDYW5jZWwiIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24uY2FuY2VsX2NsYXNzKyciPicrbi5jYW5jZWxfdGV4dCsnPC9idXR0b24+PGJ1dHRvbiBpZD0iT2siIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24ub2tfY2xhc3MrJyI+JytuLm9rX3RleHQrIjwvYnV0dG9uPiI6JzxidXR0b24gaWQ9Ik9rIiBjbGFzcz0idzJ1aS1wb3B1cC1idG4gdzJ1aS1idG4gJytuLm9rX2NsYXNzKyciPicrbi5va190ZXh0Kyc8L2J1dHRvbj48YnV0dG9uIGlkPSJDYW5jZWwiIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biAnK24uY2FuY2VsX2NsYXNzKyciPicrbi5jYW5jZWxfdGV4dCsiPC9idXR0b24+Iixvbk9wZW46ZnVuY3Rpb24oKXtzKCIjdzJwcm9tcHQiKS52YWwobi52YWx1ZSkscygiI3cydWktcG9wdXAgLncydWktbWVzc2FnZSAudzJ1aS1idG4jT2siKS5vbigiY2xpY2sudzJwcm9tcHQiLGZ1bmN0aW9uKGUpe3cycG9wdXAuX3Byb21wdF92YWx1ZT1zKCIjdzJwcm9tcHQiKS52YWwoKSx3MnBvcHVwLm1lc3NhZ2UoKX0pLHMoIiN3MnVpLXBvcHVwIC53MnVpLW1lc3NhZ2UgLncydWktYnRuI0NhbmNlbCIpLm9uKCJjbGljay53MnByb21wdCIsZnVuY3Rpb24oZSl7dzJwb3B1cC5fcHJvbXB0X3ZhbHVlPW51bGwsdzJwb3B1cC5tZXNzYWdlKCl9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cygiI3cycHJvbXB0IikuZm9jdXMoKX0sMTAwKSwiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbk9wZW4mJm4ub25PcGVuKCl9LG9uQ2xvc2U6ZnVuY3Rpb24oKXtzKCIjdzJ1aS1wb3B1cCAudzJ1aS1tZXNzYWdlIC53MnVpLWJ0biIpLm9mZigiY2xpY2sudzJwcm9tcHQiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIG4uY2FsbEJhY2smJm51bGwhPXcycG9wdXAuX3Byb21wdF92YWx1ZSYmbi5jYWxsQmFjayh3MnBvcHVwLl9wcm9tcHRfdmFsdWUpfSwzMDApLCJmdW5jdGlvbiI9PXR5cGVvZiBuLm9uQ2xvc2UmJm4ub25DbG9zZSgpfX0pKToodzJ1dGlscy5pc0ludChuLmhlaWdodCl8fChuLmhlaWdodD1uLmhlaWdodCs1MCksdzJwb3B1cC5vcGVuKHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCx0aXRsZTpuLnRpdGxlLG1vZGFsOiEwLHNob3dDbG9zZTohMSxib2R5Om4udGV4dGFyZWE/JzxkaXYgY2xhc3M9IncydWktcHJvbXB0IiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBwYWRkaW5nOiAxNXB4IDEwcHggMCAxMHB4OyI+ICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbTogNXB4Ij4nK24ubGFiZWwrJzwvZGl2PiAgPHRleHRhcmVhIGlkPSJ3MnByb21wdCIgJytuLmF0dHJzKyI+PC90ZXh0YXJlYT48L2Rpdj4iOic8ZGl2IGNsYXNzPSJ3MnVpLXByb21wdCB3MnVpLWNlbnRlcmVkIiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyI+ICA8bGFiZWwgc3R5bGU9Im1hcmdpbi1yaWdodDogMTBweDsiPicrbi5sYWJlbCsnPC9sYWJlbD4gIDxpbnB1dCBpZD0idzJwcm9tcHQiICcrbi5hdHRycysiPjwvZGl2PiIsYnV0dG9uczp3MnV0aWxzLnNldHRpbmdzLm1hY0J1dHRvbk9yZGVyPyc8YnV0dG9uIGlkPSJDYW5jZWwiIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biI+JytuLmNhbmNlbF90ZXh0Kyc8L2J1dHRvbj48YnV0dG9uIGlkPSJPayIgY2xhc3M9IncydWktcG9wdXAtYnRuIHcydWktYnRuIj4nK24ub2tfdGV4dCsiPC9idXR0b24+IjonPGJ1dHRvbiBpZD0iT2siIGNsYXNzPSJ3MnVpLXBvcHVwLWJ0biB3MnVpLWJ0biI+JytuLm9rX3RleHQrJzwvYnV0dG9uPjxidXR0b24gaWQ9IkNhbmNlbCIgY2xhc3M9IncydWktcG9wdXAtYnRuIHcydWktYnRuIj4nK24uY2FuY2VsX3RleHQrIjwvYnV0dG9uPiIsb25PcGVuOmZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzKCIjdzJwcm9tcHQiKS52YWwobi52YWx1ZSkscygiI3cycHJvbXB0IikudzJmaWVsZCgidGV4dCIpLHMoIiN3MnVpLXBvcHVwIC53MnVpLXBvcHVwLWJ0biNPayIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dzJwb3B1cC5fcHJvbXB0X3ZhbHVlPXMoIiN3MnByb21wdCIpLnZhbCgpLHcycG9wdXAuY2xvc2UoKSwiZnVuY3Rpb24iPT10eXBlb2Ygbi5jYWxsQmFjayYmbi5jYWxsQmFjayh3MnBvcHVwLl9wcm9tcHRfdmFsdWUpfSkscygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnRuI0NhbmNlbCIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dzJwb3B1cC5fcHJvbXB0X3ZhbHVlPW51bGwsdzJwb3B1cC5jbG9zZSgpfSkscygiI3cydWktcG9wdXAgLncydWktcG9wdXAtYnRuI09rIiksc2V0VGltZW91dChmdW5jdGlvbigpe3MoIiN3MnByb21wdCIpLmZvY3VzKCl9LDEwMCksImZ1bmN0aW9uIj09dHlwZW9mIG4ub25PcGVuJiZuLm9uT3BlbigpfSwxKX0sb25DbG9zZTpmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbkNsb3NlJiZuLm9uQ2xvc2UoKX0sb25LZXlkb3duOmZ1bmN0aW9uKGUpe2lmKDA9PT1zKCIjdzJ1aS1wb3B1cCAudzJ1aS1tZXNzYWdlIikubGVuZ3RoKXN3aXRjaChlLm9yaWdpbmFsRXZlbnQua2V5Q29kZSl7Y2FzZSAxMzpzKCIjdzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1idG4jT2siKS5mb2N1cygpLmFkZENsYXNzKCJjbGlja2VkIiksdzJwb3B1cC5jbG9zZSgpO2JyZWFrO2Nhc2UgMjc6dzJwb3B1cC5jbG9zZSgpfX19KSkse2NoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gcygiI3cycHJvbXB0Iikub24oImtleXVwIixlKS5rZXl1cCgpLHRoaXN9LG9rOmZ1bmN0aW9uKGUpe3JldHVybiBuLmNhbGxCYWNrPWUsdGhpc319fTshZnVuY3Rpb24oYyl7ZnVuY3Rpb24gYShlKXt0aGlzLmJveD1udWxsLHRoaXMubmFtZT1udWxsLHRoaXMuYWN0aXZlPW51bGwsdGhpcy5mbG93PSJkb3duIix0aGlzLnRvb2x0aXA9InRvcHxsZWZ0Iix0aGlzLnRhYnM9W10sdGhpcy5yb3V0ZURhdGE9e30sdGhpcy5yaWdodD0iIix0aGlzLnN0eWxlPSIiLGMuZXh0ZW5kKHRoaXMse2hhbmRsZXJzOltdfSksYy5leHRlbmQoITAsdGhpcyx3Mm9iai50YWJzLGUpfWMuZm4udzJ0YWJzPWZ1bmN0aW9uKGUpe2lmKGMuaXNQbGFpbk9iamVjdChlKSl7aWYoIXcydXRpbHMuY2hlY2tOYW1lKGUsIncydGFicyIpKXJldHVybjtmb3IodmFyIHQ9ZS50YWJzfHxbXSxpPW5ldyBhKGUpLHM9MDtzPHQubGVuZ3RoO3MrKylpLnRhYnNbc109Yy5leHRlbmQoe30sYS5wcm90b3R5cGUudGFiLHRbc10pO3JldHVybiAwIT09Yyh0aGlzKS5sZW5ndGgmJmkucmVuZGVyKGModGhpcylbMF0pLHcydWlbaS5uYW1lXT1pfXZhciBuPXcydWlbYyh0aGlzKS5hdHRyKCJuYW1lIildO3JldHVybiBuPzA8YXJndW1lbnRzLmxlbmd0aD8obltlXSYmbltlXS5hcHBseShuLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksdGhpcyk6bjpudWxsfSxhLnByb3RvdHlwZT17b25DbGljazpudWxsLG9uQ2xvc2U6bnVsbCxvblJlbmRlcjpudWxsLG9uUmVmcmVzaDpudWxsLG9uUmVzaXplOm51bGwsb25EZXN0cm95Om51bGwsdGFiOntpZDpudWxsLHRleHQ6bnVsbCxyb3V0ZTpudWxsLGhpZGRlbjohMSxkaXNhYmxlZDohMSxjbG9zYWJsZTohMSx0b29sdGlwOm51bGwsc3R5bGU6IiIsb25DbGljazpudWxsLG9uUmVmcmVzaDpudWxsLG9uQ2xvc2U6bnVsbH0sYWRkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmluc2VydChudWxsLGUpfSxpbnNlcnQ6ZnVuY3Rpb24oZSx0KXtjLmlzQXJyYXkodCl8fCh0PVt0XSk7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe2lmKG51bGw9PXRbaV0uaWQpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coJ0VSUk9SOiBUaGUgcGFyYW1ldGVyICJpZCIgaXMgcmVxdWlyZWQgYnV0IG5vdCBzdXBwbGllZC4gKG9iajogJyt0aGlzLm5hbWUrIikiKTtpZighdzJ1dGlscy5jaGVja1VuaXF1ZUlkKHRbaV0uaWQsdGhpcy50YWJzLCJ0YWJzIix0aGlzLm5hbWUpKXJldHVybjt2YXIgcz1jLmV4dGVuZCh7fSxhLnByb3RvdHlwZS50YWIsdFtpXSk7aWYobnVsbD09ZSl0aGlzLnRhYnMucHVzaChzKTtlbHNle3ZhciBuPXRoaXMuZ2V0KGUsITApO3RoaXMudGFicz10aGlzLnRhYnMuc2xpY2UoMCxuKS5jb25jYXQoW3NdLHRoaXMudGFicy5zbGljZShuKSl9dGhpcy5yZWZyZXNoKHRbaV0uaWQpLHRoaXMucmVzaXplKCl9fSxyZW1vdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5nZXQoYXJndW1lbnRzW3RdKTtpZighaSlyZXR1cm4hMTtlKyssdGhpcy50YWJzLnNwbGljZSh0aGlzLmdldChpLmlkLCEwKSwxKSxjKHRoaXMuYm94KS5maW5kKCIjdGFic18iK3RoaXMubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQoaS5pZCkpLnJlbW92ZSgpfXJldHVybiB0aGlzLnJlc2l6ZSgpLGV9LHNlbGVjdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hY3RpdmUhPWUmJm51bGwhPXRoaXMuZ2V0KGUpJiYodGhpcy5hY3RpdmU9ZSx0aGlzLnJlZnJlc2goKSwhMCl9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZ2V0KGUsITApO3JldHVybiBudWxsIT1pJiYoYy5leHRlbmQodGhpcy50YWJzW2ldLHQpLHRoaXMucmVmcmVzaChlKSwhMCl9LGdldDpmdW5jdGlvbihlLHQpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGk9W10scz0wO3M8dGhpcy50YWJzLmxlbmd0aDtzKyspbnVsbCE9dGhpcy50YWJzW3NdLmlkJiZpLnB1c2godGhpcy50YWJzW3NdLmlkKTtyZXR1cm4gaX1mb3IodmFyIG49MDtuPHRoaXMudGFicy5sZW5ndGg7bisrKWlmKHRoaXMudGFic1tuXS5pZD09ZSlyZXR1cm4hMD09PXQ/bjp0aGlzLnRhYnNbbl07cmV0dXJuIG51bGx9LHNob3c6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPTAsaT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5nZXQoYXJndW1lbnRzW3NdKTtuJiYhMSE9PW4uaGlkZGVuJiYoZSsrLG4uaGlkZGVuPSExLGkucHVzaChuLmlkKSl9cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGkubGVuZ3RoO2UrKyl0LnJlZnJlc2goaVtlXSk7dC5yZXNpemUoKX0sMTUpLGV9LGhpZGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPTAsaT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5nZXQoYXJndW1lbnRzW3NdKTtuJiYhMCE9PW4uaGlkZGVuJiYoZSsrLG4uaGlkZGVuPSEwLGkucHVzaChuLmlkKSl9cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGkubGVuZ3RoO2UrKyl0LnJlZnJlc2goaVtlXSk7dC5yZXNpemUoKX0sMTUpLGV9LGVuYWJsZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9MCxpPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXt2YXIgbj10aGlzLmdldChhcmd1bWVudHNbc10pO24mJiExIT09bi5kaXNhYmxlZCYmKGUrKyxuLmRpc2FibGVkPSExLGkucHVzaChuLmlkKSl9cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGkubGVuZ3RoO2UrKyl0LnJlZnJlc2goaVtlXSl9LDE1KSxlfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT0wLGk9W10scz0wO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspe3ZhciBuPXRoaXMuZ2V0KGFyZ3VtZW50c1tzXSk7biYmITAhPT1uLmRpc2FibGVkJiYoZSsrLG4uZGlzYWJsZWQ9ITAsaS5wdXNoKG4uaWQpKX1yZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8aS5sZW5ndGg7ZSsrKXQucmVmcmVzaChpW2VdKX0sMTUpLGV9LHRvb2x0aXBTaG93OmZ1bmN0aW9uKGUsdCxpKXtpZihudWxsIT10aGlzLnRvb2x0aXApe3ZhciBzPWModGhpcy5ib3gpLmZpbmQoIiN0YWJzXyIrdGhpcy5uYW1lKyJfdGFiXyIrdzJ1dGlscy5lc2NhcGVJZChlKSksbj10aGlzLmdldChlKSxhPXRoaXMudG9vbHRpcCxyPW4udG9vbHRpcDsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHI9ci5jYWxsKHRoaXMsbikpLHMucHJvcCgiX21vdXNlX292ZXIiLCEwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ITA9PT1zLnByb3AoIl9tb3VzZV9vdmVyIikmJiEwIT09cy5wcm9wKCJfbW91c2VfdG9vbHRpcCIpJiYocy5wcm9wKCJfbW91c2VfdG9vbHRpcCIsITApLHMudzJ0YWcodzJ1dGlscy5sYW5nKHIpLHtwb3NpdGlvbjphfSkpLDE9PWkmJnMudzJ0YWcodzJ1dGlscy5sYW5nKHIpLHtwb3NpdGlvbjphfSl9LDEpfX0sdG9vbHRpcEhpZGU6ZnVuY3Rpb24oZSl7aWYobnVsbCE9dGhpcy50b29sdGlwKXt2YXIgdD1jKHRoaXMuYm94KS5maW5kKCIjdGFic18iK3RoaXMubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQoZSkpO3RoaXMuZ2V0KGUpO3QucmVtb3ZlUHJvcCgiX21vdXNlX292ZXIiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ITAhPT10LnByb3AoIl9tb3VzZV9vdmVyIikmJiEwPT09dC5wcm9wKCJfbW91c2VfdG9vbHRpcCIpJiYodC5yZW1vdmVQcm9wKCJfbW91c2VfdG9vbHRpcCIpLHQudzJ0YWcoKSl9LDEpfX0scmVmcmVzaDpmdW5jdGlvbihlKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKTsidXAiPT10aGlzLmZsb3c/Yyh0aGlzLmJveCkuYWRkQ2xhc3MoIncydWktdGFicy11cCIpOmModGhpcy5ib3gpLnJlbW92ZUNsYXNzKCJ3MnVpLXRhYnMtdXAiKTt2YXIgaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlZnJlc2giLHRhcmdldDpudWxsIT1lP2U6dGhpcy5uYW1lLG9iamVjdDp0aGlzLmdldChlKX0pO2lmKCEwIT09aS5pc0NhbmNlbGxlZCl7aWYobnVsbD09ZSlmb3IodmFyIHM9MDtzPHRoaXMudGFicy5sZW5ndGg7cysrKXRoaXMucmVmcmVzaCh0aGlzLnRhYnNbc10uaWQpO2Vsc2V7dmFyIG49dGhpcy5nZXQoZSk7aWYobnVsbD09bilyZXR1cm4hMTtudWxsPT1uLnRleHQmJm51bGwhPW4uY2FwdGlvbiYmKG4udGV4dD1uLmNhcHRpb24pLG51bGw9PW4udG9vbHRpcCYmbnVsbCE9bi5oaW50JiYobi50b29sdGlwPW4uaGludCksbnVsbCE9bi5jYXB0aW9uJiZjb25zb2xlLmxvZygiTk9USUNFOiB0YWJzIHRhYi5jYXB0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgdGFiLnRleHQuIFRhYiAtPiAiLG4pLG51bGwhPW4uaGludCYmY29uc29sZS5sb2coIk5PVElDRTogdGFicyB0YWIuaGludCBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHRhYi50b29sdGlwLiBUYWIgLT4gIixuKTt2YXIgYT1uLnRleHQ7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJihhPWEuY2FsbCh0aGlzLG4pKSxudWxsPT1hJiYoYT0iIik7dmFyIHI9Yyh0aGlzLmJveCkuZmluZCgiI3RhYnNfIit0aGlzLm5hbWUrIl90YWJfIit3MnV0aWxzLmVzY2FwZUlkKG4uaWQpKSxsPSIiO24uY2xvc2FibGUmJiFuLmRpc2FibGVkJiYobD0nPGRpdiBjbGFzcz0idzJ1aS10YWItY2xvc2UiICAgICBvbm1vdXNlb3ZlciA9ICJ3MnVpW1wnJyt0aGlzLm5hbWUrIiddLnRvb2x0aXBTaG93KCciK24uaWQrIicsIGV2ZW50KTtcIiAgICBvbm1vdXNlb3V0ICA9IFwidzJ1aVsnIit0aGlzLm5hbWUrIiddLnRvb2x0aXBIaWRlKCciK24uaWQrIicsIGV2ZW50KTtcIiAgICBvbmNsaWNrPVwidzJ1aVsnIit0aGlzLm5hbWUrIiddLmFuaW1hdGVDbG9zZSgnIituLmlkKyInLCBldmVudCk7XCI+PC9kaXY+Iik7dmFyIG89bCsnICAgIDxkaXYgY2xhc3M9IncydWktdGFiJysodGhpcy5hY3RpdmU9PT1uLmlkPyIgYWN0aXZlIjoiIikrKG4uY2xvc2FibGU/IiBjbG9zYWJsZSI6IiIpKyhuLmNsYXNzPyIgIituLmNsYXNzOiIiKSsnIiBzdHlsZT0iJytuLnN0eWxlKyciICAgICAgICAgb25tb3VzZW92ZXIgPSAiJysobi5kaXNhYmxlZD8iIjoidzJ1aVsnIit0aGlzLm5hbWUrIiddLnRvb2x0aXBTaG93KCciK24uaWQrIicsIGV2ZW50KTsiKSsnIiAgICAgICAgb25tb3VzZW91dCAgPSAiJysobi5kaXNhYmxlZD8iIjoidzJ1aVsnIit0aGlzLm5hbWUrIiddLnRvb2x0aXBIaWRlKCciK24uaWQrIicsIGV2ZW50KTsiKSsnIiAgICAgICAgb25jbGljaz0idzJ1aVtcJycrdGhpcy5uYW1lKyInXS5jbGljaygnIituLmlkKyInLCBldmVudCk7XCI+Iit3MnV0aWxzLmxhbmcoYSkrIjwvZGl2PiI7aWYoMD09PXIubGVuZ3RoKXt2YXIgZD0iIjtuLmhpZGRlbiYmKGQrPSJkaXNwbGF5OiBub25lOyIpLG4uZGlzYWJsZWQmJihkKz0ib3BhY2l0eTogMC4yOyIpO3ZhciB1PSc8dGQgaWQ9InRhYnNfJyt0aGlzLm5hbWUrIl90YWJfIituLmlkKyciIHN0eWxlPSInK2QrJyIgdmFsaWduPSJtaWRkbGUiPicrbysiPC90ZD4iO3RoaXMuZ2V0KGUsITApIT09dGhpcy50YWJzLmxlbmd0aC0xJiYwPGModGhpcy5ib3gpLmZpbmQoIiN0YWJzXyIrdGhpcy5uYW1lKyJfdGFiXyIrdzJ1dGlscy5lc2NhcGVJZCh0aGlzLnRhYnNbcGFyc2VJbnQodGhpcy5nZXQoZSwhMCkpKzFdLmlkKSkubGVuZ3RoP2ModGhpcy5ib3gpLmZpbmQoIiN0YWJzXyIrdGhpcy5uYW1lKyJfdGFiXyIrdzJ1dGlscy5lc2NhcGVJZCh0aGlzLnRhYnNbcGFyc2VJbnQodGhpcy5nZXQoZSwhMCkpKzFdLmlkKSkuYmVmb3JlKHUpOmModGhpcy5ib3gpLmZpbmQoIiN0YWJzXyIrdGhpcy5uYW1lKyJfcmlnaHQiKS5iZWZvcmUodSl9ZWxzZSByLmh0bWwobyksbi5oaWRkZW4/ci5jc3MoImRpc3BsYXkiLCJub25lIik6ci5jc3MoImRpc3BsYXkiLCIiKSxuLmRpc2FibGVkP3IuY3NzKHtvcGFjaXR5OiIwLjIifSk6ci5jc3Moe29wYWNpdHk6IjEifSl9cmV0dXJuIGMoIiN0YWJzXyIrdGhpcy5uYW1lKyJfcmlnaHQiKS5odG1sKHRoaXMucmlnaHQpLHRoaXMudHJpZ2dlcihjLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLXR9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlbmRlciIsdGFyZ2V0OnRoaXMubmFtZSxib3g6ZX0pO2lmKCEwIT09aS5pc0NhbmNlbGxlZCl7aWYobnVsbCE9ZSYmKDA8Yyh0aGlzLmJveCkuZmluZCgiPiB0YWJsZSAjdGFic18iK3RoaXMubmFtZSsiX3JpZ2h0IikubGVuZ3RoJiZjKHRoaXMuYm94KS5yZW1vdmVBdHRyKCJuYW1lIikucmVtb3ZlQ2xhc3MoIncydWktcmVzZXQgdzJ1aS10YWJzIikuaHRtbCgiIiksdGhpcy5ib3g9ZSksIXRoaXMuYm94KXJldHVybiExO3ZhciBzPSc8ZGl2IGNsYXNzPSJ3MnVpLXNjcm9sbC13cmFwcGVyIiBvbm1vdXNlZG93bj0idmFyIGVsPXcydWlbXCcnK3RoaXMubmFtZSsnXCddOyBpZiAoZWwpIGVsLnJlc2l6ZSgpOyI+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSIgd2lkdGg9IjEwMCUiPjx0Ym9keT4gICAgPHRyPjx0ZCB3aWR0aD0iMTAwJSIgaWQ9InRhYnNfJyt0aGlzLm5hbWUrJ19yaWdodCIgYWxpZ249InJpZ2h0Ij4nK3RoaXMucmlnaHQrJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0idzJ1aS1zY3JvbGwtbGVmdCIgb25jbGljaz0idmFyIGVsPXcydWlbXCcnK3RoaXMubmFtZSsiJ107IGlmIChlbCkgZWwuc2Nyb2xsKCdsZWZ0Jyk7XCI+PC9kaXY+PGRpdiBjbGFzcz1cIncydWktc2Nyb2xsLXJpZ2h0XCIgb25jbGljaz1cInZhciBlbD13MnVpWyciK3RoaXMubmFtZSsiJ107IGlmIChlbCkgZWwuc2Nyb2xsKCdyaWdodCcpO1wiPjwvZGl2PiI7cmV0dXJuIGModGhpcy5ib3gpLmF0dHIoIm5hbWUiLHRoaXMubmFtZSkuYWRkQ2xhc3MoIncydWktcmVzZXQgdzJ1aS10YWJzIikuaHRtbChzKSwwPGModGhpcy5ib3gpLmxlbmd0aCYmKGModGhpcy5ib3gpWzBdLnN0eWxlLmNzc1RleHQrPXRoaXMuc3R5bGUpLHRoaXMudHJpZ2dlcihjLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpLHRoaXMucmVmcmVzaCgpLHRoaXMucmVzaXplKCksKG5ldyBEYXRlKS5nZXRUaW1lKCktdH19LHNjcm9sbDpmdW5jdGlvbihlKXt2YXIgdCxpLHMsbj1jKHRoaXMuYm94KSxhPXRoaXMscj1uLmZpbmQoIi53MnVpLXNjcm9sbC13cmFwcGVyIiksbD1yLnNjcm9sbExlZnQoKTtzd2l0Y2goZSl7Y2FzZSJsZWZ0Ijp0PXIub3V0ZXJXaWR0aCgpLGk9ci5maW5kKCI6Zmlyc3QiKS5vdXRlcldpZHRoKCksKHM9bC10KzUwKTw9MCYmKHM9MCksci5hbmltYXRlKHtzY3JvbGxMZWZ0OnN9LDMwMCk7YnJlYWs7Y2FzZSJyaWdodCI6dD1yLm91dGVyV2lkdGgoKSwoaT1yLmZpbmQoIjpmaXJzdCIpLm91dGVyV2lkdGgoKSktdDw9KHM9bCt0LTUwKSYmKHM9aS10KSxyLmFuaW1hdGUoe3Njcm9sbExlZnQ6c30sMzAwKX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5yZXNpemUoKX0sMzUwKX0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIGU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdD10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlc2l6ZSIsdGFyZ2V0OnRoaXMubmFtZX0pO2lmKCEwIT09dC5pc0NhbmNlbGxlZCl7dmFyIGk9Yyh0aGlzLmJveCk7aS5maW5kKCIudzJ1aS1zY3JvbGwtbGVmdCwgLncydWktc2Nyb2xsLXJpZ2h0IikuaGlkZSgpO3ZhciBzPWkuZmluZCgiLncydWktc2Nyb2xsLXdyYXBwZXIiKTtyZXR1cm4gcy5maW5kKCI6Zmlyc3QiKS5vdXRlcldpZHRoKCk+cy5vdXRlcldpZHRoKCkmJigwPHMuc2Nyb2xsTGVmdCgpJiZpLmZpbmQoIi53MnVpLXNjcm9sbC1sZWZ0Iikuc2hvdygpLHMuc2Nyb2xsTGVmdCgpPHMuZmluZCgiOmZpcnN0Iikub3V0ZXJXaWR0aCgpLXMub3V0ZXJXaWR0aCgpJiZpLmZpbmQoIi53MnVpLXNjcm9sbC1yaWdodCIpLnNob3coKSksdGhpcy50cmlnZ2VyKGMuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSksKG5ldyBEYXRlKS5nZXRUaW1lKCktZX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImRlc3Ryb3kiLHRhcmdldDp0aGlzLm5hbWV9KTshMCE9PWUuaXNDYW5jZWxsZWQmJigwPGModGhpcy5ib3gpLmZpbmQoIj4gdGFibGUgI3RhYnNfIit0aGlzLm5hbWUrIl9yaWdodCIpLmxlbmd0aCYmYyh0aGlzLmJveCkucmVtb3ZlQXR0cigibmFtZSIpLnJlbW92ZUNsYXNzKCJ3MnVpLXJlc2V0IHcydWktdGFicyIpLmh0bWwoIiIpLGRlbGV0ZSB3MnVpW3RoaXMubmFtZV0sdGhpcy50cmlnZ2VyKGMuZXh0ZW5kKGUse3BoYXNlOiJhZnRlciJ9KSkpfSxjbGljazpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZ2V0KGUpO2lmKG51bGw9PWl8fGkuZGlzYWJsZWQpcmV0dXJuITE7dmFyIHM9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjbGljayIsdGFyZ2V0OmUsdGFiOmksb2JqZWN0Omksb3JpZ2luYWxFdmVudDp0fSk7aWYoITAhPT1zLmlzQ2FuY2VsbGVkKXtpZihjKHRoaXMuYm94KS5maW5kKCIjdGFic18iK3RoaXMubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQodGhpcy5hY3RpdmUpKyIgLncydWktdGFiIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMuYWN0aXZlPWkuaWQsInN0cmluZyI9PXR5cGVvZiBpLnJvdXRlKXt2YXIgbj0iIiE9PWkucm91dGU/U3RyaW5nKCIvIitpLnJvdXRlKS5yZXBsYWNlKC9cL3syLH0vZywiLyIpOiIiLGE9dzJ1dGlscy5wYXJzZVJvdXRlKG4pO2lmKDA8YS5rZXlzLmxlbmd0aClmb3IodmFyIHI9MDtyPGEua2V5cy5sZW5ndGg7cisrKW51bGwhPXRoaXMucm91dGVEYXRhW2Eua2V5c1tyXS5uYW1lXSYmKG49bi5yZXBsYWNlKG5ldyBSZWdFeHAoIjoiK2Eua2V5c1tyXS5uYW1lLCJnIiksdGhpcy5yb3V0ZURhdGFbYS5rZXlzW3JdLm5hbWVdKSk7c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5oYXNoPW59LDEpfXRoaXMudHJpZ2dlcihjLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLHRoaXMucmVmcmVzaChlKX19LGFuaW1hdGVDbG9zZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZ2V0KGUpO2lmKG51bGw9PWl8fGkuZGlzYWJsZWQpcmV0dXJuITE7dmFyIHM9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjbG9zZSIsdGFyZ2V0OmUsb2JqZWN0OnRoaXMuZ2V0KGUpLG9yaWdpbmFsRXZlbnQ6dH0pO2lmKCEwIT09cy5pc0NhbmNlbGxlZCl7dmFyIG49dGhpcztjKHRoaXMuYm94KS5maW5kKCIjdGFic18iK3RoaXMubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQoaS5pZCkpLmNzcyh3MnV0aWxzLmNzc1ByZWZpeCgidHJhbnNpdGlvbiIsIi4ycyIpKS5jc3MoIm9wYWNpdHkiLCIwIiksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPWMobi5ib3gpLmZpbmQoIiN0YWJzXyIrbi5uYW1lKyJfdGFiXyIrdzJ1dGlscy5lc2NhcGVJZChpLmlkKSkud2lkdGgoKTtjKG4uYm94KS5maW5kKCIjdGFic18iK24ubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQoaS5pZCkpLmh0bWwoJzxkaXYgc3R5bGU9IndpZHRoOiAnK2UrInB4OyAiK3cydXRpbHMuY3NzUHJlZml4KCJ0cmFuc2l0aW9uIiwiLjJzIiwhMCkrJyI+PC9kaXY+Jyksc2V0VGltZW91dChmdW5jdGlvbigpe2Mobi5ib3gpLmZpbmQoIiN0YWJzXyIrbi5uYW1lKyJfdGFiXyIrdzJ1dGlscy5lc2NhcGVJZChpLmlkKSkuZmluZCgiOmZpcnN0LWNoaWxkIikuY3NzKHt3aWR0aDoiMHB4In0pfSw1MCl9LDIwMCksc2V0VGltZW91dChmdW5jdGlvbigpe24ucmVtb3ZlKGUpfSw0NTApLHRoaXMudHJpZ2dlcihjLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLHRoaXMucmVmcmVzaCgpfX0sYW5pbWF0ZUluc2VydDpmdW5jdGlvbihlLHQpe2lmKG51bGwhPXRoaXMuZ2V0KGUpJiYoYy5pc1BsYWluT2JqZWN0KHQpJiZ3MnV0aWxzLmNoZWNrVW5pcXVlSWQodC5pZCx0aGlzLnRhYnMsInRhYnMiLHRoaXMubmFtZSkmJjA9PT1jKHRoaXMuYm94KS5maW5kKCIjdGFic18iK3RoaXMubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQodC5pZCkpLmxlbmd0aCkpe251bGw9PXQudGV4dCYmbnVsbCE9dC5jYXB0aW9uJiYodC50ZXh0PXQuY2FwdGlvbik7dmFyIGk9JzxkaXYgaWQ9Il90bXBfdGFicyIgY2xhc3M9IncydWktcmVzZXQgdzJ1aS10YWJzIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0xMDAwcHg7Ij48dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxIiB3aWR0aD0iMTAwJSI+PHRib2R5Pjx0cj48dGQgaWQ9Il90bXBfc2ltcGxlX3RhYiIgc3R5bGU9IiIgdmFsaWduPSJtaWRkbGUiPicrKHQuY2xvc2FibGU/JzxkaXYgY2xhc3M9IncydWktdGFiLWNsb3NlIj48L2Rpdj4nOiIiKSsnICAgIDxkaXYgY2xhc3M9IncydWktdGFiICcrKHRoaXMuYWN0aXZlPT09dC5pZD8iYWN0aXZlIjoiIikrJyI+Jyt0LnRleHQrIjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+IjtjKCJib2R5IikuYXBwZW5kKGkpO3ZhciBzPSc8ZGl2IHN0eWxlPSJ3aWR0aDogMXB4OyAnK3cydXRpbHMuY3NzUHJlZml4KCJ0cmFuc2l0aW9uIiwiLjJzIiwhMCkrJyI+JiMxNjA7PC9kaXY+JyxuPSIiO3QuaGlkZGVuJiYobis9ImRpc3BsYXk6IG5vbmU7IiksdC5kaXNhYmxlZCYmKG4rPSJvcGFjaXR5OiAwLjI7Iik7dmFyIGE9Jzx0ZCBpZD0idGFic18nK3RoaXMubmFtZSsiX3RhYl8iK3QuaWQrJyIgc3R5bGU9IicrbisnIiB2YWxpZ249Im1pZGRsZSI+JytzKyI8L3RkPiI7dGhpcy5nZXQoZSwhMCkhPT10aGlzLnRhYnMubGVuZ3RoJiYwPGModGhpcy5ib3gpLmZpbmQoIiN0YWJzXyIrdGhpcy5uYW1lKyJfdGFiXyIrdzJ1dGlscy5lc2NhcGVJZCh0aGlzLnRhYnNbcGFyc2VJbnQodGhpcy5nZXQoZSwhMCkpXS5pZCkpLmxlbmd0aD9jKHRoaXMuYm94KS5maW5kKCIjdGFic18iK3RoaXMubmFtZSsiX3RhYl8iK3cydXRpbHMuZXNjYXBlSWQodGhpcy50YWJzW3BhcnNlSW50KHRoaXMuZ2V0KGUsITApKV0uaWQpKS5iZWZvcmUoYSk6Yyh0aGlzLmJveCkuZmluZCgiI3RhYnNfIit0aGlzLm5hbWUrIl9yaWdodCIpLmJlZm9yZShhKTt2YXIgcj10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT1jKCIjX3RtcF9zaW1wbGVfdGFiIikud2lkdGgoKTtjKCIjX3RtcF90YWJzIikucmVtb3ZlKCksYygiI3RhYnNfIityLm5hbWUrIl90YWJfIit3MnV0aWxzLmVzY2FwZUlkKHQuaWQpKyIgPiBkaXYiKS5jc3MoIndpZHRoIixlKyJweCIpfSwxKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5pbnNlcnQoZSx0KX0sMjAwKX19fSxjLmV4dGVuZChhLnByb3RvdHlwZSx3MnV0aWxzLmV2ZW50KSx3Mm9iai50YWJzPWF9KGpRdWVyeSksZnVuY3Rpb24oZil7ZnVuY3Rpb24gbyhlKXt0aGlzLmJveD1udWxsLHRoaXMubmFtZT1udWxsLHRoaXMucm91dGVEYXRhPXt9LHRoaXMuaXRlbXM9W10sdGhpcy5yaWdodD0iIix0aGlzLnRvb2x0aXA9InRvcHxsZWZ0IixmLmV4dGVuZCghMCx0aGlzLHcyb2JqLnRvb2xiYXIsZSl9Zi5mbi53MnRvb2xiYXI9ZnVuY3Rpb24oZSl7aWYoZi5pc1BsYWluT2JqZWN0KGUpKXtpZighdzJ1dGlscy5jaGVja05hbWUoZSwidzJ0b29sYmFyIikpcmV0dXJuO3ZhciB0PWUuaXRlbXN8fFtdLGk9bmV3IG8oZSk7Zi5leHRlbmQoaSx7aXRlbXM6W10saGFuZGxlcnM6W119KTtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKylpZihpLml0ZW1zW3NdPWYuZXh0ZW5kKHt9LG8ucHJvdG90eXBlLml0ZW0sdFtzXSksIm1lbnUtY2hlY2siPT1pLml0ZW1zW3NdLnR5cGUpe3ZhciBuPWkuaXRlbXNbc107aWYoQXJyYXkuaXNBcnJheShuLnNlbGVjdGVkKXx8KG4uc2VsZWN0ZWQ9W10pLEFycmF5LmlzQXJyYXkobi5pdGVtcykpZm9yKHZhciBhPTA7YTxuLml0ZW1zLmxlbmd0aDthKyspeyhyPW4uaXRlbXNbYV0pLmNoZWNrZWQmJi0xPT1uLnNlbGVjdGVkLmluZGV4T2Yoci5pZCkmJm4uc2VsZWN0ZWQucHVzaChyLmlkKSxyLmNoZWNrZWR8fC0xPT1uLnNlbGVjdGVkLmluZGV4T2Yoci5pZCl8fChyLmNoZWNrZWQ9ITApLG51bGw9PXIuY2hlY2tlZCYmKHIuY2hlY2tlZD0hMSl9fWVsc2UgaWYoIm1lbnUtcmFkaW8iPT1pLml0ZW1zW3NdLnR5cGUpe249aS5pdGVtc1tzXTtpZihBcnJheS5pc0FycmF5KG4uaXRlbXMpKWZvcihhPTA7YTxuLml0ZW1zLmxlbmd0aDthKyspe3ZhciByOyhyPW4uaXRlbXNbYV0pLmNoZWNrZWQmJm51bGw9PW4uc2VsZWN0ZWQ/bi5zZWxlY3RlZD1yLmlkOnIuY2hlY2tlZD0hMSxyLmNoZWNrZWR8fG4uc2VsZWN0ZWQhPXIuaWR8fChyLmNoZWNrZWQ9ITApLG51bGw9PXIuY2hlY2tlZCYmKHIuY2hlY2tlZD0hMSl9fXJldHVybiAwIT09Zih0aGlzKS5sZW5ndGgmJmkucmVuZGVyKGYodGhpcylbMF0pLHcydWlbaS5uYW1lXT1pfXZhciBsPXcydWlbZih0aGlzKS5hdHRyKCJuYW1lIildO3JldHVybiBsPzA8YXJndW1lbnRzLmxlbmd0aD8obFtlXSYmbFtlXS5hcHBseShsLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksdGhpcyk6bDpudWxsfSxvLnByb3RvdHlwZT17b25DbGljazpudWxsLG9uUmVuZGVyOm51bGwsb25SZWZyZXNoOm51bGwsb25SZXNpemU6bnVsbCxvbkRlc3Ryb3k6bnVsbCxpdGVtOntpZDpudWxsLHR5cGU6ImJ1dHRvbiIsdGV4dDpudWxsLGh0bWw6IiIsdG9vbHRpcDpudWxsLGNvdW50Om51bGwsaGlkZGVuOiExLGRpc2FibGVkOiExLGNoZWNrZWQ6ITEsaW1nOm51bGwsaWNvbjpudWxsLHJvdXRlOm51bGwsYXJyb3c6ITAsc3R5bGU6bnVsbCxncm91cDpudWxsLGl0ZW1zOm51bGwsc2VsZWN0ZWQ6bnVsbCxvdmVybGF5Ont9LGNvbG9yOm51bGwsb3B0aW9uczp7YWR2YW5jZWQ6ITEsdHJhbnNwYXJlbnQ6ITAsaHRtbDoiIn0sb25DbGljazpudWxsLG9uUmVmcmVzaDpudWxsfSxhZGQ6ZnVuY3Rpb24oZSl7dGhpcy5pbnNlcnQobnVsbCxlKX0saW5zZXJ0OmZ1bmN0aW9uKGUsdCl7Zi5pc0FycmF5KHQpfHwodD1bdF0pO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXtpZihudWxsPT10W2ldLnR5cGUpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coJ0VSUk9SOiBUaGUgcGFyYW1ldGVyICJ0eXBlIiBpcyByZXF1aXJlZCBidXQgbm90IHN1cHBsaWVkIGluIHcydG9vbGJhci5hZGQoKSBtZXRob2QuJyk7aWYoLTE9PWYuaW5BcnJheShTdHJpbmcodFtpXS50eXBlKSxbImJ1dHRvbiIsImNoZWNrIiwicmFkaW8iLCJkcm9wIiwibWVudSIsIm1lbnUtcmFkaW8iLCJtZW51LWNoZWNrIiwiY29sb3IiLCJ0ZXh0LWNvbG9yIiwiYnJlYWsiLCJodG1sIiwic3BhY2VyIl0pKXJldHVybiB2b2lkIGNvbnNvbGUubG9nKCdFUlJPUjogVGhlIHBhcmFtZXRlciAidHlwZSIgc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIFtidXR0b24sIGNoZWNrLCByYWRpbywgZHJvcCwgbWVudSwgYnJlYWssIGh0bWwsIHNwYWNlcl0gaW4gdzJ0b29sYmFyLmFkZCgpIG1ldGhvZC4nKTtpZihudWxsPT10W2ldLmlkJiYiYnJlYWsiIT10W2ldLnR5cGUmJiJzcGFjZXIiIT10W2ldLnR5cGUpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coJ0VSUk9SOiBUaGUgcGFyYW1ldGVyICJpZCIgaXMgcmVxdWlyZWQgYnV0IG5vdCBzdXBwbGllZCBpbiB3MnRvb2xiYXIuYWRkKCkgbWV0aG9kLicpO2lmKCF3MnV0aWxzLmNoZWNrVW5pcXVlSWQodFtpXS5pZCx0aGlzLml0ZW1zLCJ0b29sYmFyIGl0ZW1zIix0aGlzLm5hbWUpKXJldHVybjt2YXIgcz1mLmV4dGVuZCh7fSxvLnByb3RvdHlwZS5pdGVtLHRbaV0pO2lmKG51bGw9PWUpdGhpcy5pdGVtcy5wdXNoKHMpO2Vsc2V7dmFyIG49dGhpcy5nZXQoZSwhMCk7dGhpcy5pdGVtcz10aGlzLml0ZW1zLnNsaWNlKDAsbikuY29uY2F0KFtzXSx0aGlzLml0ZW1zLnNsaWNlKG4pKX10aGlzLnJlZnJlc2gocy5pZCksdGhpcy5yZXNpemUoKX19LHJlbW92ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLmdldChhcmd1bWVudHNbdF0pO2lmKGkmJi0xPT1TdHJpbmcoYXJndW1lbnRzW3RdKS5pbmRleE9mKCI6Iikpe2UrKyxmKHRoaXMuYm94KS5maW5kKCIjdGJfIit0aGlzLm5hbWUrIl9pdGVtXyIrdzJ1dGlscy5lc2NhcGVJZChpLmlkKSkucmVtb3ZlKCk7dmFyIHM9dGhpcy5nZXQoaS5pZCwhMCk7bnVsbCE9cyYmdGhpcy5pdGVtcy5zcGxpY2UocywxKX19cmV0dXJuIHRoaXMucmVzaXplKCksZX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXQoZSk7cmV0dXJuIG51bGwhPWkmJihmLmV4dGVuZChpLHQpLHRoaXMucmVmcmVzaChTdHJpbmcoZSkuc3BsaXQoIjoiKVswXSksITApfSxnZXQ6ZnVuY3Rpb24oZSx0KXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBpPVtdLHM9MDtzPHRoaXMuaXRlbXMubGVuZ3RoO3MrKyludWxsIT10aGlzLml0ZW1zW3NdLmlkJiZpLnB1c2godGhpcy5pdGVtc1tzXS5pZCk7cmV0dXJuIGl9Zm9yKHZhciBuPVN0cmluZyhlKS5zcGxpdCgiOiIpLGE9MDthPHRoaXMuaXRlbXMubGVuZ3RoO2ErKyl7dmFyIHI9dGhpcy5pdGVtc1thXTtpZigtMSE9WyJtZW51IiwibWVudS1yYWRpbyIsIm1lbnUtY2hlY2siXS5pbmRleE9mKHIudHlwZSkmJjI9PW4ubGVuZ3RoJiZyLmlkPT1uWzBdKWZvcih2YXIgbD0wO2w8ci5pdGVtcy5sZW5ndGg7bCsrKXt2YXIgbz1yLml0ZW1zW2xdO2lmKG8uaWQ9PW5bMV18fG51bGw9PW8uaWQmJm8udGV4dD09blsxXSlyZXR1cm4gMT09dD9sOm99ZWxzZSBpZihyLmlkPT1uWzBdKXJldHVybiAxPT10P2E6cn1yZXR1cm4gbnVsbH0sc2hvdzpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9MCxpPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXt2YXIgbj10aGlzLmdldChhcmd1bWVudHNbc10pO24mJihlKyssbi5oaWRkZW49ITEsaS5wdXNoKFN0cmluZyhhcmd1bWVudHNbc10pLnNwbGl0KCI6IilbMF0pKX1yZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8aS5sZW5ndGg7ZSsrKXQucmVmcmVzaChpW2VdKTt0LnJlc2l6ZSgpfSwxNSksZX0saGlkZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9MCxpPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXt2YXIgbj10aGlzLmdldChhcmd1bWVudHNbc10pO24mJihlKyssbi5oaWRkZW49ITAsaS5wdXNoKFN0cmluZyhhcmd1bWVudHNbc10pLnNwbGl0KCI6IilbMF0pKX1yZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8aS5sZW5ndGg7ZSsrKXQucmVmcmVzaChpW2VdKSx0LnRvb2x0aXBIaWRlKGlbZV0pO3QucmVzaXplKCl9LDE1KSxlfSxlbmFibGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPTAsaT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5nZXQoYXJndW1lbnRzW3NdKTtuJiYoZSsrLG4uZGlzYWJsZWQ9ITEsaS5wdXNoKFN0cmluZyhhcmd1bWVudHNbc10pLnNwbGl0KCI6IilbMF0pKX1yZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8aS5sZW5ndGg7ZSsrKXQucmVmcmVzaChpW2VdKX0sMTUpLGV9LGRpc2FibGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPTAsaT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5nZXQoYXJndW1lbnRzW3NdKTtuJiYoZSsrLG4uZGlzYWJsZWQ9ITAsaS5wdXNoKFN0cmluZyhhcmd1bWVudHNbc10pLnNwbGl0KCI6IilbMF0pKX1yZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8aS5sZW5ndGg7ZSsrKXQucmVmcmVzaChpW2VdKSx0LnRvb2x0aXBIaWRlKGlbZV0pfSwxNSksZX0sY2hlY2s6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPTAsaT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7dmFyIG49dGhpcy5nZXQoYXJndW1lbnRzW3NdKTtuJiYtMT09U3RyaW5nKGFyZ3VtZW50c1tzXSkuaW5kZXhPZigiOiIpJiYoZSsrLG4uY2hlY2tlZD0hMCxpLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tzXSkuc3BsaXQoIjoiKVswXSkpfXJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxpLmxlbmd0aDtlKyspdC5yZWZyZXNoKGlbZV0pfSwxNSksZX0sdW5jaGVjazpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9MCxpPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXt2YXIgbj10aGlzLmdldChhcmd1bWVudHNbc10pO24mJi0xPT1TdHJpbmcoYXJndW1lbnRzW3NdKS5pbmRleE9mKCI6IikmJigtMSE9WyJtZW51IiwibWVudS1yYWRpbyIsIm1lbnUtY2hlY2siLCJkcm9wIiwiY29sb3IiLCJ0ZXh0LWNvbG9yIl0uaW5kZXhPZihuLnR5cGUpJiZuLmNoZWNrZWQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtmKCIjdGJfIit0Lm5hbWUrIl9pdGVtXyIrdzJ1dGlscy5lc2NhcGVJZChuLmlkKSkudzJvdmVybGF5KHtuYW1lOnQubmFtZX0pfSwxKSxlKyssbi5jaGVja2VkPSExLGkucHVzaChTdHJpbmcoYXJndW1lbnRzW3NdKS5zcGxpdCgiOiIpWzBdKSl9cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGkubGVuZ3RoO2UrKyl0LnJlZnJlc2goaVtlXSl9LDE1KSxlfSxjbGljazpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsaT1TdHJpbmcoZSkuc3BsaXQoIjoiKSxhPXRoaXMuZ2V0KGlbMF0pLHI9YSYmYS5pdGVtcz93Mm9iai5maWVsZC5wcm90b3R5cGUubm9ybU1lbnUuY2FsbCh0aGlzLGEuaXRlbXMsYSk6W107aWYoMTxpLmxlbmd0aCl7dmFyIHM9dGhpcy5nZXQoZSk7cyYmIXMuZGlzYWJsZWQmJm4ubWVudUNsaWNrKHtuYW1lOm4ubmFtZSxpdGVtOmEsc3ViSXRlbTpzLG9yaWdpbmFsRXZlbnQ6dH0pfWVsc2UgaWYoYSYmIWEuZGlzYWJsZWQpe3ZhciBsPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiY2xpY2siLHRhcmdldDpudWxsIT1lP2U6dGhpcy5uYW1lLGl0ZW06YSxvYmplY3Q6YSxvcmlnaW5hbEV2ZW50OnR9KTtpZighMD09PWwuaXNDYW5jZWxsZWQpcmV0dXJuO3ZhciBvPSIjdGJfIit0aGlzLm5hbWUrIl9pdGVtXyIrdzJ1dGlscy5lc2NhcGVJZChhLmlkKSsiIHRhYmxlLncydWktYnV0dG9uIjtpZihmKG8pLnJlbW92ZUNsYXNzKCJkb3duIiksInJhZGlvIj09YS50eXBlKXtmb3IodmFyIGQ9MDtkPHRoaXMuaXRlbXMubGVuZ3RoO2QrKyl7dmFyIHU9dGhpcy5pdGVtc1tkXTtudWxsIT11JiZ1LmlkIT1hLmlkJiYicmFkaW8iPT09dS50eXBlJiZ1Lmdyb3VwPT1hLmdyb3VwJiZ1LmNoZWNrZWQmJih1LmNoZWNrZWQ9ITEsdGhpcy5yZWZyZXNoKHUuaWQpKX1hLmNoZWNrZWQ9ITAsZihvKS5hZGRDbGFzcygiY2hlY2tlZCIpfWlmKC0xIT1bIm1lbnUiLCJtZW51LXJhZGlvIiwibWVudS1jaGVjayIsImRyb3AiLCJjb2xvciIsInRleHQtY29sb3IiXS5pbmRleE9mKGEudHlwZSkmJihuLnRvb2x0aXBIaWRlKGUpLGEuY2hlY2tlZD9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZigiI3RiXyIrbi5uYW1lKyJfaXRlbV8iK3cydXRpbHMuZXNjYXBlSWQoYS5pZCkpLncyb3ZlcmxheSh7bmFtZTpuLm5hbWV9KSxhLmNoZWNrZWQ9ITEsbi5yZWZyZXNoKGEuaWQpfSwxKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9ZigiI3RiXyIrbi5uYW1lKyJfaXRlbV8iK3cydXRpbHMuZXNjYXBlSWQoYS5pZCkpO2YuaXNQbGFpbk9iamVjdChhLm92ZXJsYXkpfHwoYS5vdmVybGF5PXt9KTt2YXIgdD0oZS53aWR0aCgpLTUwKS8yO2lmKDE5PHQmJih0PTE5KSwiZHJvcCI9PWEudHlwZSYmZS53Mm92ZXJsYXkoYS5odG1sLGYuZXh0ZW5kKHtuYW1lOm4ubmFtZSxsZWZ0OnQsdG9wOjN9LGEub3ZlcmxheSx7b25IaWRlOmZ1bmN0aW9uKGUpe3MoKX19KSksLTEhPVsibWVudSIsIm1lbnUtcmFkaW8iLCJtZW51LWNoZWNrIl0uaW5kZXhPZihhLnR5cGUpKXt2YXIgaT0ibm9ybWFsIjsibWVudS1yYWRpbyI9PWEudHlwZSYmKGk9InJhZGlvIixyLmZvckVhY2goZnVuY3Rpb24oZSl7YS5zZWxlY3RlZD09ZS5pZD9lLmNoZWNrZWQ9ITA6ZS5jaGVja2VkPSExfSkpLCJtZW51LWNoZWNrIj09YS50eXBlJiYoaT0iY2hlY2siLHIuZm9yRWFjaChmdW5jdGlvbihlKXtmLmlzQXJyYXkoYS5zZWxlY3RlZCkmJi0xIT1hLnNlbGVjdGVkLmluZGV4T2YoZS5pZCk/ZS5jaGVja2VkPSEwOmUuY2hlY2tlZD0hMX0pKSxlLncybWVudShmLmV4dGVuZCh7bmFtZTpuLm5hbWUsaXRlbXM6cixsZWZ0OnQsdG9wOjN9LGEub3ZlcmxheSx7dHlwZTppLHJlbW92ZTpmdW5jdGlvbihlKXtuLm1lbnVDbGljayh7bmFtZTpuLm5hbWUscmVtb3ZlOiEwLGl0ZW06YSxzdWJJdGVtOmUuaXRlbSxvcmlnaW5hbEV2ZW50OmUub3JpZ2luYWxFdmVudCxrZWVwT3BlbjplLmtlZXBPcGVufSl9LHNlbGVjdDpmdW5jdGlvbihlKXtuLm1lbnVDbGljayh7bmFtZTpuLm5hbWUsaXRlbTphLHN1Ykl0ZW06ZS5pdGVtLG9yaWdpbmFsRXZlbnQ6ZS5vcmlnaW5hbEV2ZW50LGtlZXBPcGVuOmUua2VlcE9wZW59KX0sb25IaWRlOmZ1bmN0aW9uKGUpe3MoKX19KSl9ZnVuY3Rpb24gcygpe2EuY2hlY2tlZD0hMSxmKG8pLnJlbW92ZUNsYXNzKCJjaGVja2VkIil9LTEhPVsiY29sb3IiLCJ0ZXh0LWNvbG9yIl0uaW5kZXhPZihhLnR5cGUpJiZmKGUpLncyY29sb3IoZi5leHRlbmQoe2NvbG9yOmEuY29sb3Isb25IaWRlOmZ1bmN0aW9uKGUpe3MoKSxuLl90bXBDb2xvciYmbi5jb2xvckNsaWNrKHtuYW1lOm4ubmFtZSxpdGVtOmEsY29sb3I6bi5fdG1wQ29sb3IsZmluYWw6ITB9KSxkZWxldGUgbi5fdG1wQ29sb3J9LG9uU2VsZWN0OmZ1bmN0aW9uKGUpe251bGwhPWUmJihuLmNvbG9yQ2xpY2soe25hbWU6bi5uYW1lLGl0ZW06YSxjb2xvcjplfSksbi5fdG1wQ29sb3I9ZSl9fSxhLm9wdGlvbnMpKX0sMSkpLC0xIT1bImNoZWNrIiwibWVudSIsIm1lbnUtcmFkaW8iLCJtZW51LWNoZWNrIiwiZHJvcCIsImNvbG9yIiwidGV4dC1jb2xvciJdLmluZGV4T2YoYS50eXBlKSYmKGEuY2hlY2tlZD0hYS5jaGVja2VkLGEuY2hlY2tlZD9mKG8pLmFkZENsYXNzKCJjaGVja2VkIik6ZihvKS5yZW1vdmVDbGFzcygiY2hlY2tlZCIpKSxhLnJvdXRlKXt2YXIgYz1TdHJpbmcoIi8iK2Eucm91dGUpLnJlcGxhY2UoL1wvezIsfS9nLCIvIiksaD13MnV0aWxzLnBhcnNlUm91dGUoYyk7aWYoMDxoLmtleXMubGVuZ3RoKWZvcih2YXIgcD0wO3A8aC5rZXlzLmxlbmd0aDtwKyspYz1jLnJlcGxhY2UobmV3IFJlZ0V4cCgiOiIraC5rZXlzW3BdLm5hbWUsImciKSx0aGlzLnJvdXRlRGF0YVtoLmtleXNbcF0ubmFtZV0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaGFzaD1jfSwxKX10JiYtMSE9WyJidXR0b24iLCJjaGVjayIsInJhZGlvIl0uaW5kZXhPZihhLnR5cGUpJiZ0aGlzLnRvb2x0aXBTaG93KGUsdCwhMCksdGhpcy50cmlnZ2VyKGYuZXh0ZW5kKGwse3BoYXNlOiJhZnRlciJ9KSl9fSxzY3JvbGw6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG49Zih0aGlzLmJveCksYT10aGlzLHI9bi5maW5kKCIudzJ1aS1zY3JvbGwtd3JhcHBlciIpLGw9ci5zY3JvbGxMZWZ0KCk7c3dpdGNoKGUpe2Nhc2UibGVmdCI6dD1yLm91dGVyV2lkdGgoKSxpPXIuZmluZCgiOmZpcnN0Iikub3V0ZXJXaWR0aCgpLChzPWwtdCs1MCk8PTAmJihzPTApLHIuYW5pbWF0ZSh7c2Nyb2xsTGVmdDpzfSwzMDApO2JyZWFrO2Nhc2UicmlnaHQiOnQ9ci5vdXRlcldpZHRoKCksKGk9ci5maW5kKCI6Zmlyc3QiKS5vdXRlcldpZHRoKCkpLXQ8PShzPWwrdC01MCkmJihzPWktdCksci5hbmltYXRlKHtzY3JvbGxMZWZ0OnN9LDMwMCl9c2V0VGltZW91dChmdW5jdGlvbigpe2EucmVzaXplKCl9LDM1MCl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKSxpPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVuZGVyIix0YXJnZXQ6dGhpcy5uYW1lLGJveDplfSk7aWYoITAhPT1pLmlzQ2FuY2VsbGVkJiYobnVsbCE9ZSYmKDA8Zih0aGlzLmJveCkuZmluZCgiPiB0YWJsZSAjdGJfIit0aGlzLm5hbWUrIl9yaWdodCIpLmxlbmd0aCYmZih0aGlzLmJveCkucmVtb3ZlQXR0cigibmFtZSIpLnJlbW92ZUNsYXNzKCJ3MnVpLXJlc2V0IHcydWktdG9vbGJhciIpLmh0bWwoIiIpLHRoaXMuYm94PWUpLHRoaXMuYm94KSl7Zm9yKHZhciBzPSc8ZGl2IGNsYXNzPSJ3MnVpLXNjcm9sbC13cmFwcGVyIiBvbm1vdXNlZG93bj0idmFyIGVsPXcydWlbXCcnK3RoaXMubmFtZSsnXCddOyBpZiAoZWwpIGVsLnJlc2l6ZSgpOyI+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPjx0Ym9keT48dHI+JyxuPTA7bjx0aGlzLml0ZW1zLmxlbmd0aDtuKyspe3ZhciBhPXRoaXMuaXRlbXNbbl07bnVsbCE9YSYmKG51bGw9PWEuaWQmJihhLmlkPSJpdGVtXyIrbiksbnVsbCE9YS5jYXB0aW9uJiZjb25zb2xlLmxvZygiTk9USUNFOiB0b29sYmFyIGl0ZW0uY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGl0ZW0udGV4dC4gSXRlbSAtPiAiLGEpLG51bGwhPWEuaGludCYmY29uc29sZS5sb2coIk5PVElDRTogdG9vbGJhciBpdGVtLmhpbnQgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBpdGVtLnRvb2x0aXAuIEl0ZW0gLT4gIixhKSwic3BhY2VyIj09YS50eXBlP3MrPSc8dGQgd2lkdGg9IjEwMCUiIGlkPSJ0Yl8nK3RoaXMubmFtZSsiX2l0ZW1fIithLmlkKyciIGFsaWduPSJyaWdodCI+PC90ZD4nOnMrPSc8dGQgaWQ9InRiXycrdGhpcy5uYW1lKyJfaXRlbV8iK2EuaWQrJyIgc3R5bGU9IicrKGEuaGlkZGVuPyJkaXNwbGF5OiBub25lIjoiIikrJyIgICAgIGNsYXNzPSInKyhhLmRpc2FibGVkPyJkaXNhYmxlZCI6IiIpKyciIHZhbGlnbj0ibWlkZGxlIj48L3RkPicpfXJldHVybiBzKz0nPHRkIHdpZHRoPSIxMDAlIiBpZD0idGJfJyt0aGlzLm5hbWUrJ19yaWdodCIgYWxpZ249InJpZ2h0Ij4nK3RoaXMucmlnaHQrIjwvdGQ+IixzKz0nPC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0idzJ1aS1zY3JvbGwtbGVmdCIgb25jbGljaz0idmFyIGVsPXcydWlbXCcnK3RoaXMubmFtZSsiJ107IGlmIChlbCkgZWwuc2Nyb2xsKCdsZWZ0Jyk7XCI+PC9kaXY+PGRpdiBjbGFzcz1cIncydWktc2Nyb2xsLXJpZ2h0XCIgb25jbGljaz1cInZhciBlbD13MnVpWyciK3RoaXMubmFtZSsiJ107IGlmIChlbCkgZWwuc2Nyb2xsKCdyaWdodCcpO1wiPjwvZGl2PiIsZih0aGlzLmJveCkuYXR0cigibmFtZSIsdGhpcy5uYW1lKS5hZGRDbGFzcygidzJ1aS1yZXNldCB3MnVpLXRvb2xiYXIiKS5odG1sKHMpLDA8Zih0aGlzLmJveCkubGVuZ3RoJiYoZih0aGlzLmJveClbMF0uc3R5bGUuY3NzVGV4dCs9dGhpcy5zdHlsZSksdGhpcy5yZWZyZXNoKCksdGhpcy5yZXNpemUoKSx0aGlzLnRyaWdnZXIoZi5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKSwobmV3IERhdGUpLmdldFRpbWUoKS10fX0scmVmcmVzaDpmdW5jdGlvbihlKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKSxpPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVmcmVzaCIsdGFyZ2V0Om51bGwhPWU/ZTp0aGlzLm5hbWUsaXRlbTp0aGlzLmdldChlKX0pO2lmKCEwIT09aS5pc0NhbmNlbGxlZCl7aWYobnVsbCE9ZSl7dmFyIHM9dGhpcy5nZXQoZSk7aWYobnVsbD09cylyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcy5vblJlZnJlc2gpe3ZhciBuPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVmcmVzaCIsdGFyZ2V0OmUsaXRlbTpzLG9iamVjdDpzfSk7aWYoITA9PT1uLmlzQ2FuY2VsbGVkKXJldHVybn12YXIgYT1mKHRoaXMuYm94KS5maW5kKCIjdGJfIit0aGlzLm5hbWUrIl9pdGVtXyIrdzJ1dGlscy5lc2NhcGVJZChzLmlkKSkscj10aGlzLmdldEl0ZW1IVE1MKHMpO3JldHVybiB0aGlzLnRvb2x0aXBIaWRlKGUse30pLDA9PT1hLmxlbmd0aD8ocj0ic3BhY2VyIj09cy50eXBlPyc8dGQgd2lkdGg9IjEwMCUiIGlkPSJ0Yl8nK3RoaXMubmFtZSsiX2l0ZW1fIitzLmlkKyciIGFsaWduPSJyaWdodCI+PC90ZD4nOic8dGQgaWQ9InRiXycrdGhpcy5uYW1lKyJfaXRlbV8iK3MuaWQrJyIgc3R5bGU9IicrKHMuaGlkZGVuPyJkaXNwbGF5OiBub25lIjoiIikrJyIgICAgIGNsYXNzPSInKyhzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiIpKyciIHZhbGlnbj0ibWlkZGxlIj4nK3IrIjwvdGQ+Iix0aGlzLmdldChlLCEwKT09dGhpcy5pdGVtcy5sZW5ndGgtMT9mKHRoaXMuYm94KS5maW5kKCIjdGJfIit0aGlzLm5hbWUrIl9yaWdodCIpLmJlZm9yZShyKTpmKHRoaXMuYm94KS5maW5kKCIjdGJfIit0aGlzLm5hbWUrIl9pdGVtXyIrdzJ1dGlscy5lc2NhcGVJZCh0aGlzLml0ZW1zW3BhcnNlSW50KHRoaXMuZ2V0KGUsITApKSsxXS5pZCkpLmJlZm9yZShyKSk6KC0xIT1bIm1lbnUiLCJtZW51LXJhZGlvIiwibWVudS1jaGVjayIsImRyb3AiLCJjb2xvciIsInRleHQtY29sb3IiXS5pbmRleE9mKHMudHlwZSkmJjA9PXMuY2hlY2tlZCYmMDxmKCIjdzJ1aS1vdmVybGF5LSIrdGhpcy5uYW1lKS5sZW5ndGgmJmYoIiN3MnVpLW92ZXJsYXktIit0aGlzLm5hbWUpWzBdLmhpZGUoKSxhLmh0bWwocikscy5oaWRkZW4/YS5jc3MoImRpc3BsYXkiLCJub25lIik6YS5jc3MoImRpc3BsYXkiLCIiKSxzLmRpc2FibGVkP2EuYWRkQ2xhc3MoImRpc2FibGVkIik6YS5yZW1vdmVDbGFzcygiZGlzYWJsZWQiKSksImZ1bmN0aW9uIj09dHlwZW9mIHMub25SZWZyZXNoJiZ0aGlzLnRyaWdnZXIoZi5leHRlbmQobix7cGhhc2U6ImFmdGVyIn0pKSx0aGlzLnRyaWdnZXIoZi5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKSwobmV3IERhdGUpLmdldFRpbWUoKS10fWZvcih2YXIgbD0wO2w8dGhpcy5pdGVtcy5sZW5ndGg7bCsrKXt2YXIgbz10aGlzLml0ZW1zW2xdO251bGw9PW8uaWQmJihvLmlkPSJpdGVtXyIrbCksdGhpcy5yZWZyZXNoKG8uaWQpfX19LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZXNpemUiLHRhcmdldDp0aGlzLm5hbWV9KTtpZighMCE9PXQuaXNDYW5jZWxsZWQpe3ZhciBpPWYodGhpcy5ib3gpO2kuZmluZCgiLncydWktc2Nyb2xsLWxlZnQsIC53MnVpLXNjcm9sbC1yaWdodCIpLmhpZGUoKTt2YXIgcz1pLmZpbmQoIi53MnVpLXNjcm9sbC13cmFwcGVyIik7cmV0dXJuIHMuZmluZCgiOmZpcnN0Iikub3V0ZXJXaWR0aCgpPnMub3V0ZXJXaWR0aCgpJiYoMDxzLnNjcm9sbExlZnQoKSYmaS5maW5kKCIudzJ1aS1zY3JvbGwtbGVmdCIpLnNob3coKSxzLnNjcm9sbExlZnQoKTxzLmZpbmQoIjpmaXJzdCIpLm91dGVyV2lkdGgoKS1zLm91dGVyV2lkdGgoKSYmaS5maW5kKCIudzJ1aS1zY3JvbGwtcmlnaHQiKS5zaG93KCkpLHRoaXMudHJpZ2dlcihmLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLWV9fSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJkZXN0cm95Iix0YXJnZXQ6dGhpcy5uYW1lfSk7ITAhPT1lLmlzQ2FuY2VsbGVkJiYoMDxmKHRoaXMuYm94KS5maW5kKCI+IHRhYmxlICN0Yl8iK3RoaXMubmFtZSsiX3JpZ2h0IikubGVuZ3RoJiZmKHRoaXMuYm94KS5yZW1vdmVBdHRyKCJuYW1lIikucmVtb3ZlQ2xhc3MoIncydWktcmVzZXQgdzJ1aS10b29sYmFyIikuaHRtbCgiIiksZih0aGlzLmJveCkuaHRtbCgiIiksZGVsZXRlIHcydWlbdGhpcy5uYW1lXSx0aGlzLnRyaWdnZXIoZi5leHRlbmQoZSx7cGhhc2U6ImFmdGVyIn0pKSl9LGdldEl0ZW1IVE1MOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO251bGwhPWUuY2FwdGlvbiYmbnVsbD09ZS50ZXh0JiYoZS50ZXh0PWUuY2FwdGlvbiksbnVsbD09ZS50ZXh0JiYoZS50ZXh0PSIiKSxudWxsPT1lLnRvb2x0aXAmJm51bGwhPWUuaGludCYmKGUudG9vbHRpcD1lLmhpbnQpLG51bGw9PWUudG9vbHRpcCYmKGUudG9vbHRpcD0iIiksImZ1bmN0aW9uIiE9dHlwZW9mIGUuZ2V0JiZBcnJheS5pc0FycmF5KGUuaXRlbXMpJiYoZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuaXRlbXMuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09dH0pfSk7dmFyIGk9Ijx0ZD4mIzE2MDs8L3RkPiIscz0iZnVuY3Rpb24iPT10eXBlb2YgZS50ZXh0P2UudGV4dC5jYWxsKHRoaXMsZSk6ZS50ZXh0O2lmKGUuaW1nJiYoaT0nPHRkPjxkaXYgY2xhc3M9IncydWktdGItaW1hZ2UgdzJ1aS1pY29uICcrZS5pbWcrJyI+PC9kaXY+PC90ZD4nKSxlLmljb24mJihpPSc8dGQ+PGRpdiBjbGFzcz0idzJ1aS10Yi1pbWFnZSI+PHNwYW4gY2xhc3M9IicrKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmljb24/ZS5pY29uLmNhbGwodGhpcyxlKTplLmljb24pKyciPjwvc3Bhbj48L2Rpdj48L3RkPicpLCIiPT09dClzd2l0Y2goZS50eXBlKXtjYXNlImNvbG9yIjpjYXNlInRleHQtY29sb3IiOiJzdHJpbmciPT10eXBlb2YgZS5jb2xvciYmKCIjIj09ZS5jb2xvci5zdWJzdHIoMCwxKSYmKGUuY29sb3I9ZS5jb2xvci5zdWJzdHIoMSkpLDMhPWUuY29sb3IubGVuZ3RoJiY2IT1lLmNvbG9yLmxlbmd0aHx8KGUuY29sb3I9IiMiK2UuY29sb3IpKSwiY29sb3IiPT1lLnR5cGUmJihzPSc8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEycHg7IHdpZHRoOiAxMnB4OyBtYXJnaW4tdG9wOiAxcHg7IGJvcmRlcjogMXB4IHNvbGlkICM4QThBOEE7IGJvcmRlci1yYWRpdXM6IDFweDsgYm94LXNoYWRvdzogMHB4IDBweCAxcHggI2ZmZjsgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAnKyhudWxsIT1lLmNvbG9yP2UuY29sb3I6IiNmZmYiKSsnOyBmbG9hdDogbGVmdDsiPjwvZGl2PicrKGUudGV4dD8nPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDE3cHg7Ij4nK3cydXRpbHMubGFuZyhlLnRleHQpKyI8L2Rpdj4iOiIiKSksInRleHQtY29sb3IiPT1lLnR5cGUmJihzPSc8ZGl2IHN0eWxlPSJjb2xvcjogJysobnVsbCE9ZS5jb2xvcj9lLmNvbG9yOiIjNDQ0IikrJzsiPicrKGUudGV4dD93MnV0aWxzLmxhbmcoZS50ZXh0KToiPGI+QWE8L2I+IikrIjwvZGl2PiIpO2Nhc2UibWVudSI6Y2FzZSJtZW51LWNoZWNrIjpjYXNlIm1lbnUtcmFkaW8iOmNhc2UiYnV0dG9uIjpjYXNlImNoZWNrIjpjYXNlInJhZGlvIjpjYXNlImRyb3AiOnQrPSc8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiAgICAgICAgY2xhc3M9IncydWktYnV0dG9uICcrKGUuY2hlY2tlZD8iY2hlY2tlZCI6IiIpKyciICAgICAgICBvbmNsaWNrICAgICA9ICJ2YXIgZWw9dzJ1aVtcJycrdGhpcy5uYW1lKyInXTsgaWYgKGVsKSBlbC5jbGljaygnIitlLmlkKydcJywgZXZlbnQpOyIgICAgICAgIG9ubW91c2VlbnRlciA9ICInKyhlLmRpc2FibGVkPyIiOiJqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ292ZXInKTsgdzJ1aVsnIit0aGlzLm5hbWUrIiddLnRvb2x0aXBTaG93KCciK2UuaWQrIicsIGV2ZW50KTsiKSsnIiAgICAgICBvbm1vdXNlbGVhdmUgPSAiJysoZS5kaXNhYmxlZD8iIjoialF1ZXJ5KHRoaXMpLnJlbW92ZUNsYXNzKCdvdmVyJykucmVtb3ZlQ2xhc3MoJ2Rvd24nKTsgdzJ1aVsnIit0aGlzLm5hbWUrIiddLnRvb2x0aXBIaWRlKCciK2UuaWQrIicsIGV2ZW50KTsiKSsnIiAgICAgICBvbm1vdXNlZG93biA9ICInKyhlLmRpc2FibGVkPyIiOiJqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ2Rvd24nKTsiKSsnIiAgICAgICBvbm1vdXNldXAgICA9ICInKyhlLmRpc2FibGVkPyIiOiJqUXVlcnkodGhpcykucmVtb3ZlQ2xhc3MoJ2Rvd24nKTsiKSsnIj48dGJvZHk+PHRyPjx0ZD4gIDx0YWJsZSBjZWxscGFkZGluZz0iMSIgY2VsbHNwYWNpbmc9IjAiPjx0Ym9keT4gIDx0cj4nK2krKCIiIT09cz8nPHRkIGNsYXNzPSJ3MnVpLXRiLXRleHQgdzJ1aS10Yi1jYXB0aW9uIiBub3dyYXA9Im5vd3JhcCIgc3R5bGU9IicrKGUuc3R5bGU/ZS5zdHlsZToiIikrJyI+Jyt3MnV0aWxzLmxhbmcocykrIjwvdGQ+IjoiIikrKG51bGwhPWUuY291bnQ/Jzx0ZCBjbGFzcz0idzJ1aS10Yi1jb3VudCIgbm93cmFwPSJub3dyYXAiPjxzcGFuPicrZS5jb3VudCsiPC9zcGFuPjwvdGQ+IjoiIikrKC0xIT1bIm1lbnUiLCJtZW51LXJhZGlvIiwibWVudS1jaGVjayIsImRyb3AiLCJjb2xvciIsInRleHQtY29sb3IiXS5pbmRleE9mKGUudHlwZSkmJiExIT09ZS5hcnJvdz8nPHRkIGNsYXNzPSJ3MnVpLXRiLWRvd24iIG5vd3JhcD0ibm93cmFwIj48ZGl2PjwvZGl2PjwvdGQ+JzoiIikrIiAgPC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4iO2JyZWFrO2Nhc2UiYnJlYWsiOnQrPSc8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dGJvZHk+PHRyPiAgICA8dGQ+PGRpdiBjbGFzcz0idzJ1aS1icmVhayI+JiMxNjA7PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4nO2JyZWFrO2Nhc2UiaHRtbCI6dCs9Jzx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPjx0Ym9keT48dHI+ICAgIDx0ZCBub3dyYXA9Im5vd3JhcCI+JysoImZ1bmN0aW9uIj09dHlwZW9mIGUuaHRtbD9lLmh0bWwuY2FsbCh0aGlzLGUpOmUuaHRtbCkrIjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+In1yZXR1cm4iPGRpdj4iK3QrIjwvZGl2PiJ9LHRvb2x0aXBTaG93OmZ1bmN0aW9uKGUsdCxpKXtpZihudWxsIT10aGlzLnRvb2x0aXApe3ZhciBzPWYodGhpcy5ib3gpLmZpbmQoIiN0Yl8iK3RoaXMubmFtZSsiX2l0ZW1fIit3MnV0aWxzLmVzY2FwZUlkKGUpKSxuPXRoaXMuZ2V0KGUpLGE9dGhpcy50b29sdGlwLHI9bi50b29sdGlwOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYocj1yLmNhbGwodGhpcyxuKSksY2xlYXJUaW1lb3V0KHRoaXMuX3Rvb2x0aXBUaW1lciksdGhpcy5fdG9vbHRpcFRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZighMCE9PXMucHJvcCgiX21vdXNlX3Rvb2x0aXAiKSl7aWYocy5wcm9wKCJfbW91c2VfdG9vbHRpcCIsITApLC0xIT1bIm1lbnUiLCJtZW51LXJhZGlvIiwibWVudS1jaGVjayIsImRyb3AiLCJjb2xvciIsInRleHQtY29sb3IiXS5pbmRleE9mKG4udHlwZSkmJjE9PW4uY2hlY2tlZClyZXR1cm47cy53MnRhZyh3MnV0aWxzLmxhbmcocikse3Bvc2l0aW9uOmF9KX19LDApLHMucHJvcCgiX21vdXNlX3Rvb2x0aXAiKSYmMT09aSYmcy53MnRhZyh3MnV0aWxzLmxhbmcocikse3Bvc2l0aW9uOmF9KX19LHRvb2x0aXBIaWRlOmZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dGhpcy50b29sdGlwKXt2YXIgaT1mKHRoaXMuYm94KS5maW5kKCIjdGJfIit0aGlzLm5hbWUrIl9pdGVtXyIrdzJ1dGlscy5lc2NhcGVJZChlKSk7dGhpcy5nZXQoZSk7Y2xlYXJUaW1lb3V0KHRoaXMuX3Rvb2x0aXBUaW1lciksc2V0VGltZW91dChmdW5jdGlvbigpeyEwPT09aS5wcm9wKCJfbW91c2VfdG9vbHRpcCIpJiYoaS5yZW1vdmVQcm9wKCJfbW91c2VfdG9vbHRpcCIpLGkudzJ0YWcoKSl9LDEpfX0sbWVudUNsaWNrOmZ1bmN0aW9uKGUpe2lmKGUuaXRlbSYmIWUuaXRlbS5kaXNhYmxlZCl7dmFyIHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiEwIT09ZS5yZW1vdmU/ImNsaWNrIjoicmVtb3ZlIix0YXJnZXQ6ZS5pdGVtLmlkKyI6IitlLnN1Ykl0ZW0uaWQsaXRlbTplLml0ZW0sc3ViSXRlbTplLnN1Ykl0ZW0sb3JpZ2luYWxFdmVudDplLm9yaWdpbmFsRXZlbnR9KTtpZighMD09PXQuaXNDYW5jZWxsZWQpcmV0dXJuO3ZhciBzPWUuc3ViSXRlbSxuPXRoaXMuZ2V0KGUuaXRlbS5pZCksaT1uLml0ZW1zO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiYoaT1uLml0ZW1zKCkpLCJtZW51LXJhZGlvIj09bi50eXBlJiYobi5zZWxlY3RlZD1zLmlkLEFycmF5LmlzQXJyYXkoaSkmJmkuZm9yRWFjaChmdW5jdGlvbihlKXshMD09PWUuY2hlY2tlZCYmZGVsZXRlIGUuY2hlY2tlZCxBcnJheS5pc0FycmF5KGUuaXRlbXMpJiZlLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7ITA9PT1lLmNoZWNrZWQmJmRlbGV0ZSBlLmNoZWNrZWR9KX0pLHMuY2hlY2tlZD0hMCksIm1lbnUtY2hlY2siPT1uLnR5cGUpaWYoZi5pc0FycmF5KG4uc2VsZWN0ZWQpfHwobi5zZWxlY3RlZD1bXSksbnVsbD09cy5ncm91cCl7LTE9PShhPW4uc2VsZWN0ZWQuaW5kZXhPZihzLmlkKSk/KG4uc2VsZWN0ZWQucHVzaChzLmlkKSxzLmNoZWNrZWQ9ITApOihuLnNlbGVjdGVkLnNwbGljZShhLDEpLHMuY2hlY2tlZD0hMSl9ZWxzZXt2YXIgYSxyPVtdOyFmdW5jdGlvbiBpKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmdyb3VwPT09cy5ncm91cCl7dmFyIHQ9bi5zZWxlY3RlZC5pbmRleE9mKGUuaWQpOy0xIT10JiYoZS5pZCE9cy5pZCYmci5wdXNoKGUuaWQpLG4uc2VsZWN0ZWQuc3BsaWNlKHQsMSkpfUFycmF5LmlzQXJyYXkoZS5pdGVtcykmJmkoZS5pdGVtcyl9KX0oaSksLTE9PShhPW4uc2VsZWN0ZWQuaW5kZXhPZihzLmlkKSkmJihuLnNlbGVjdGVkLnB1c2gocy5pZCkscy5jaGVja2VkPSEwKX1pZigic3RyaW5nIj09dHlwZW9mIHMucm91dGUpe3ZhciBsPSIiIT09cy5yb3V0ZT9TdHJpbmcoIi8iK3Mucm91dGUpLnJlcGxhY2UoL1wvezIsfS9nLCIvIik6IiIsbz13MnV0aWxzLnBhcnNlUm91dGUobCk7aWYoMDxvLmtleXMubGVuZ3RoKWZvcih2YXIgZD0wO2Q8by5rZXlzLmxlbmd0aDtkKyspbnVsbCE9dGhpcy5yb3V0ZURhdGFbby5rZXlzW2RdLm5hbWVdJiYobD1sLnJlcGxhY2UobmV3IFJlZ0V4cCgiOiIrby5rZXlzW2RdLm5hbWUsImciKSx0aGlzLnJvdXRlRGF0YVtvLmtleXNbZF0ubmFtZV0pKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhhc2g9bH0sMSl9dGhpcy5yZWZyZXNoKGUuaXRlbS5pZCksdGhpcy50cmlnZ2VyKGYuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSl9fSxjb2xvckNsaWNrOmZ1bmN0aW9uKGUpe2lmKGUuaXRlbSYmIWUuaXRlbS5kaXNhYmxlZCl7dmFyIHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjbGljayIsdGFyZ2V0OmUuaXRlbS5pZCxpdGVtOmUuaXRlbSxjb2xvcjplLmNvbG9yLGZpbmFsOmUuZmluYWwsb3JpZ2luYWxFdmVudDplLm9yaWdpbmFsRXZlbnR9KTtpZighMD09PXQuaXNDYW5jZWxsZWQpcmV0dXJuO2UuaXRlbS5jb2xvcj1lLmNvbG9yLHRoaXMucmVmcmVzaChlLml0ZW0uaWQpLHRoaXMudHJpZ2dlcihmLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpfX19LGYuZXh0ZW5kKG8ucHJvdG90eXBlLHcydXRpbHMuZXZlbnQpLHcyb2JqLnRvb2xiYXI9b30oalF1ZXJ5KSxmdW5jdGlvbihwKXtmdW5jdGlvbiBkKGUpe3RoaXMubmFtZT1udWxsLHRoaXMuYm94PW51bGwsdGhpcy5zaWRlYmFyPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLm5vZGVzPVtdLHRoaXMubWVudT1bXSx0aGlzLnJvdXRlRGF0YT17fSx0aGlzLnNlbGVjdGVkPW51bGwsdGhpcy5pbWc9bnVsbCx0aGlzLmljb249bnVsbCx0aGlzLnN0eWxlPSIiLHRoaXMudG9wSFRNTD0iIix0aGlzLmJvdHRvbUhUTUw9IiIsdGhpcy5mbGF0QnV0dG9uPSExLHRoaXMua2V5Ym9hcmQ9ITAsdGhpcy5mbGF0PSExLHRoaXMuaGFzRm9jdXM9ITEscC5leHRlbmQoITAsdGhpcyx3Mm9iai5zaWRlYmFyLGUpfXAuZm4udzJzaWRlYmFyPWZ1bmN0aW9uKGUpe2lmKHAuaXNQbGFpbk9iamVjdChlKSl7aWYoIXcydXRpbHMuY2hlY2tOYW1lKGUsIncyc2lkZWJhciIpKXJldHVybjt2YXIgdD1lLm5vZGVzLGk9bmV3IGQoZSk7cmV0dXJuIHAuZXh0ZW5kKGkse2hhbmRsZXJzOltdLG5vZGVzOltdfSksbnVsbCE9dCYmaS5hZGQoaSx0KSwwIT09cCh0aGlzKS5sZW5ndGgmJmkucmVuZGVyKHAodGhpcylbMF0pLGkuc2lkZWJhcj1pLHcydWlbaS5uYW1lXT1pfXZhciBzPXcydWlbcCh0aGlzKS5hdHRyKCJuYW1lIildO3JldHVybiBzPzA8YXJndW1lbnRzLmxlbmd0aD8oc1tlXSYmc1tlXS5hcHBseShzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksdGhpcyk6czpudWxsfSxkLnByb3RvdHlwZT17b25DbGljazpudWxsLG9uRGJsQ2xpY2s6bnVsbCxvbkNvbnRleHRNZW51Om51bGwsb25NZW51Q2xpY2s6bnVsbCxvbkV4cGFuZDpudWxsLG9uQ29sbGFwc2U6bnVsbCxvbktleWRvd246bnVsbCxvblJlbmRlcjpudWxsLG9uUmVmcmVzaDpudWxsLG9uUmVzaXplOm51bGwsb25EZXN0cm95Om51bGwsb25Gb2N1czpudWxsLG9uQmx1cjpudWxsLG9uRmxhdDpudWxsLG5vZGU6e2lkOm51bGwsdGV4dDoiIixjb3VudDpudWxsLGltZzpudWxsLGljb246bnVsbCxub2RlczpbXSxzdHlsZToiIixyb3V0ZTpudWxsLHNlbGVjdGVkOiExLGV4cGFuZGVkOiExLGhpZGRlbjohMSxkaXNhYmxlZDohMSxncm91cDohMSxncm91cFNob3dIaWRlOiEwLGNvbGxhcHNpYmxlOiExLHBsdXM6ITEsb25DbGljazpudWxsLG9uRGJsQ2xpY2s6bnVsbCxvbkNvbnRleHRNZW51Om51bGwsb25FeHBhbmQ6bnVsbCxvbkNvbGxhcHNlOm51bGwscGFyZW50Om51bGwsc2lkZWJhcjpudWxsfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aCYmKHQ9ZSxlPXRoaXMpLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9dGhpcy5nZXQoZSkpLHRoaXMuaW5zZXJ0KGUsbnVsbCx0KX0saW5zZXJ0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuLGEscixsO2lmKDI9PWFyZ3VtZW50cy5sZW5ndGgpaWYoaT10LG51bGwhPSh0PWUpKXtpZihudWxsPT0obj10aGlzLmdldCh0KSkpcmV0dXJuIHAuaXNBcnJheShpKXx8KGk9W2ldKSxudWxsIT1pWzBdLmNhcHRpb24mJm51bGw9PWlbMF0udGV4dCYmKGNvbnNvbGUubG9nKCJOT1RJQ0U6IHNpZGViYXIgbm9kZS5jYXB0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugbm9kZS50ZXh0LiBOb2RlIC0+ICIsaVswXSksaVswXS50ZXh0PWlbMF0uY2FwdGlvbikscz1pWzBdLnRleHQsY29uc29sZS5sb2coJ0VSUk9SOiBDYW5ub3QgaW5zZXJ0IG5vZGUgIicrcysnIiBiZWNhdXNlIGNhbm5vdCBmaW5kIG5vZGUgIicrdCsnIiB0byBpbnNlcnQgYmVmb3JlLicpLG51bGw7ZT10aGlzLmdldCh0KS5wYXJlbnR9ZWxzZSBlPXRoaXM7InN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLmdldChlKSkscC5pc0FycmF5KGkpfHwoaT1baV0pO2Zvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKWlmKG51bGwhPXR5cGVvZihyPWlbb10pLmlkKWlmKG51bGw9PXRoaXMuZ2V0KHRoaXMsci5pZCkpe2lmKChhPXAuZXh0ZW5kKHt9LGQucHJvdG90eXBlLm5vZGUscikpLnNpZGViYXI9dGhpcyxhLnBhcmVudD1lLGw9YS5ub2Rlc3x8W10sYS5ub2Rlcz1bXSxudWxsPT10KWUubm9kZXMucHVzaChhKTtlbHNle2lmKG51bGw9PShuPXRoaXMuZ2V0KGUsdCwhMCkpKXJldHVybiBjb25zb2xlLmxvZygnRVJST1I6IENhbm5vdCBpbnNlcnQgbm9kZSAiJytyLnRleHQrJyIgYmVjYXVzZSBjYW5ub3QgZmluZCBub2RlICInK3QrJyIgdG8gaW5zZXJ0IGJlZm9yZS4nKSxudWxsO2Uubm9kZXMuc3BsaWNlKG4sMCxhKX0wPGwubGVuZ3RoJiZ0aGlzLmluc2VydChhLG51bGwsbCl9ZWxzZSBjb25zb2xlLmxvZygiRVJST1I6IENhbm5vdCBpbnNlcnQgbm9kZSB3aXRoIGlkPSIrci5pZCsiICh0ZXh0OiAiK3IudGV4dCsiKSBiZWNhdXNlIGFub3RoZXIgbm9kZSB3aXRoIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RzLiIpO2Vsc2UgbnVsbCE9ci5jYXB0aW9uJiZudWxsPT1yLnRleHQmJihjb25zb2xlLmxvZygiTk9USUNFOiBzaWRlYmFyIG5vZGUuY2FwdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIG5vZGUudGV4dCIpLHIudGV4dD1yLmNhcHRpb24pLHM9ci50ZXh0LGNvbnNvbGUubG9nKCdFUlJPUjogQ2Fubm90IGluc2VydCBub2RlICInK3MrJyIgYmVjYXVzZSBpdCBoYXMgbm8gaWQuJyk7cmV0dXJuIHRoaXMucmVmcmVzaChlLmlkKSxhfSxyZW1vdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wLGk9MDtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKWlmKG51bGwhPShlPXRoaXMuZ2V0KGFyZ3VtZW50c1tpXSkpKXtudWxsIT10aGlzLnNlbGVjdGVkJiZ0aGlzLnNlbGVjdGVkPT09ZS5pZCYmKHRoaXMuc2VsZWN0ZWQ9bnVsbCk7dmFyIHM9dGhpcy5nZXQoZS5wYXJlbnQsYXJndW1lbnRzW2ldLCEwKTtudWxsIT1zJiYoZS5wYXJlbnQubm9kZXNbc10uc2VsZWN0ZWQmJmUuc2lkZWJhci51bnNlbGVjdChlLmlkKSxlLnBhcmVudC5ub2Rlcy5zcGxpY2UocywxKSx0KyspfXJldHVybiAwPHQmJjE9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5yZWZyZXNoKGUucGFyZW50LmlkKTp0aGlzLnJlZnJlc2goKSx0fSxzZXQ6ZnVuY3Rpb24oZSx0LGkpe2lmKDI9PWFyZ3VtZW50cy5sZW5ndGgmJihpPXQsdD1lLGU9dGhpcyksInN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLmdldChlKSksbnVsbD09ZS5ub2RlcylyZXR1cm4gbnVsbDtmb3IodmFyIHM9MDtzPGUubm9kZXMubGVuZ3RoO3MrKyl7aWYoZS5ub2Rlc1tzXS5pZD09PXQpe3ZhciBuPWkubm9kZXM7cmV0dXJuIHAuZXh0ZW5kKGUubm9kZXNbc10saSx7bm9kZXM6W119KSxudWxsIT1uJiZ0aGlzLmFkZChlLm5vZGVzW3NdLG4pLHRoaXMucmVmcmVzaCh0KSwhMH1pZih0aGlzLnNldChlLm5vZGVzW3NdLHQsaSkpcmV0dXJuITB9cmV0dXJuITF9LGdldDpmdW5jdGlvbihlLHQsaSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgcz1bXSxuPXRoaXMuZmluZCh7fSksYT0wO2E8bi5sZW5ndGg7YSsrKW51bGwhPW5bYV0uaWQmJnMucHVzaChuW2FdLmlkKTtyZXR1cm4gc31pZigoMT09YXJndW1lbnRzLmxlbmd0aHx8Mj09YXJndW1lbnRzLmxlbmd0aCYmITA9PT10KSYmKGk9dCx0PWUsZT10aGlzKSwic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuZ2V0KGUpKSxudWxsPT1lLm5vZGVzKXJldHVybiBudWxsO2Zvcih2YXIgcj0wO3I8ZS5ub2Rlcy5sZW5ndGg7cisrKXtpZihlLm5vZGVzW3JdLmlkPT10KXJldHVybiEwPT09aT9yOmUubm9kZXNbcl07dmFyIGw9dGhpcy5nZXQoZS5ub2Rlc1tyXSx0LGkpO2lmKGx8fDA9PT1sKXJldHVybiBsfXJldHVybiBudWxsfSxmaW5kOmZ1bmN0aW9uKGUsdCxpKXtpZigxPT1hcmd1bWVudHMubGVuZ3RoJiYodD1lLGU9dGhpcyksaT1pfHxbXSwic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuZ2V0KGUpKSxudWxsPT1lLm5vZGVzKXJldHVybiBpO2Zvcih2YXIgcz0wO3M8ZS5ub2Rlcy5sZW5ndGg7cysrKXt2YXIgbj0hMDtmb3IodmFyIGEgaW4gdCllLm5vZGVzW3NdW2FdIT10W2FdJiYobj0hMSk7biYmaS5wdXNoKGUubm9kZXNbc10pLDA8ZS5ub2Rlc1tzXS5ub2Rlcy5sZW5ndGgmJihpPXRoaXMuZmluZChlLm5vZGVzW3NdLHQsaSkpfXJldHVybiBpfSxoaWRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBpPXRoaXMuZ2V0KGFyZ3VtZW50c1t0XSk7bnVsbCE9aSYmKGkuaGlkZGVuPSEwLGUrKyl9cmV0dXJuIDE9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5yZWZyZXNoKGFyZ3VtZW50c1swXSk6dGhpcy5yZWZyZXNoKCksZX0sc2hvdzpmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLmdldChhcmd1bWVudHNbdF0pO251bGwhPWkmJihpLmhpZGRlbj0hMSxlKyspfXJldHVybiAxPT1hcmd1bWVudHMubGVuZ3RoP3RoaXMucmVmcmVzaChhcmd1bWVudHNbMF0pOnRoaXMucmVmcmVzaCgpLGV9LGRpc2FibGU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5nZXQoYXJndW1lbnRzW3RdKTtudWxsIT1pJiYoaS5kaXNhYmxlZD0hMCxpLnNlbGVjdGVkJiZ0aGlzLnVuc2VsZWN0KGkuaWQpLGUrKyl9cmV0dXJuIDE9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5yZWZyZXNoKGFyZ3VtZW50c1swXSk6dGhpcy5yZWZyZXNoKCksZX0sZW5hYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBpPXRoaXMuZ2V0KGFyZ3VtZW50c1t0XSk7bnVsbCE9aSYmKGkuZGlzYWJsZWQ9ITEsZSsrKX1yZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aD90aGlzLnJlZnJlc2goYXJndW1lbnRzWzBdKTp0aGlzLnJlZnJlc2goKSxlfSxzZWxlY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQoZSk7cmV0dXJuISF0JiYoKHRoaXMuc2VsZWN0ZWQhPWV8fCF0LnNlbGVjdGVkKSYmKHRoaXMudW5zZWxlY3QodGhpcy5zZWxlY3RlZCkscCh0aGlzLmJveCkuZmluZCgiI25vZGVfIit3MnV0aWxzLmVzY2FwZUlkKGUpKS5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmZpbmQoIi53MnVpLWljb24iKS5hZGRDbGFzcygidzJ1aS1pY29uLXNlbGVjdGVkIiksdC5zZWxlY3RlZD0hMCx0aGlzLnNlbGVjdGVkPWUsITApKX0sdW5zZWxlY3Q6ZnVuY3Rpb24oZSl7MD09PWFyZ3VtZW50cy5sZW5ndGgmJihlPXRoaXMuc2VsZWN0ZWQpO3ZhciB0PXRoaXMuZ2V0KGUpO3JldHVybiEhdCYmKHQuc2VsZWN0ZWQ9ITEscCh0aGlzLmJveCkuZmluZCgiI25vZGVfIit3MnV0aWxzLmVzY2FwZUlkKGUpKS5yZW1vdmVDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmZpbmQoIi53MnVpLWljb24iKS5yZW1vdmVDbGFzcygidzJ1aS1pY29uLXNlbGVjdGVkIiksdGhpcy5zZWxlY3RlZD09ZSYmKHRoaXMuc2VsZWN0ZWQ9bnVsbCksITApfSx0b2dnbGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQoZSk7cmV0dXJuIG51bGwhPXQmJih0LnBsdXM/KHRoaXMuc2V0KGUse3BsdXM6ITF9KSx0aGlzLmV4cGFuZChlKSx2b2lkIHRoaXMucmVmcmVzaChlKSk6MCE9PXQubm9kZXMubGVuZ3RoJiYoISF0LmNvbGxhcHNpYmxlJiYodGhpcy5nZXQoZSkuZXhwYW5kZWQ/dGhpcy5jb2xsYXBzZShlKTp0aGlzLmV4cGFuZChlKSkpKX0sY29sbGFwc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMuZ2V0KGUpLHM9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJjb2xsYXBzZSIsdGFyZ2V0OmUsb2JqZWN0Oml9KTtpZighMCE9PXMuaXNDYW5jZWxsZWQpcmV0dXJuIHAodGhpcy5ib3gpLmZpbmQoIiNub2RlXyIrdzJ1dGlscy5lc2NhcGVJZChlKSsiX3N1YiIpLnNsaWRlVXAoMjAwKSxwKHRoaXMuYm94KS5maW5kKCIjbm9kZV8iK3cydXRpbHMuZXNjYXBlSWQoZSkrIiAudzJ1aS1leHBhbmRlZCIpLnJlbW92ZUNsYXNzKCJ3MnVpLWV4cGFuZGVkIikuYWRkQ2xhc3MoIncydWktY29sbGFwc2VkIiksaS5leHBhbmRlZD0hMSx0aGlzLnRyaWdnZXIocC5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5yZWZyZXNoKGUpfSwyMDApLCEwfSxjb2xsYXBzZUFsbDpmdW5jdGlvbihlKXtpZihudWxsPT1lJiYoZT10aGlzKSwic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuZ2V0KGUpKSxudWxsPT1lLm5vZGVzKXJldHVybiExO2Zvcih2YXIgdD0wO3Q8ZS5ub2Rlcy5sZW5ndGg7dCsrKSEwPT09ZS5ub2Rlc1t0XS5leHBhbmRlZCYmKGUubm9kZXNbdF0uZXhwYW5kZWQ9ITEpLGUubm9kZXNbdF0ubm9kZXMmJjA8ZS5ub2Rlc1t0XS5ub2Rlcy5sZW5ndGgmJnRoaXMuY29sbGFwc2VBbGwoZS5ub2Rlc1t0XSk7cmV0dXJuIHRoaXMucmVmcmVzaChlLmlkKSwhMH0sZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLmdldChlKSxzPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZXhwYW5kIix0YXJnZXQ6ZSxvYmplY3Q6aX0pO2lmKCEwIT09cy5pc0NhbmNlbGxlZClyZXR1cm4gcCh0aGlzLmJveCkuZmluZCgiI25vZGVfIit3MnV0aWxzLmVzY2FwZUlkKGUpKyJfc3ViIikuc2xpZGVEb3duKDIwMCkscCh0aGlzLmJveCkuZmluZCgiI25vZGVfIit3MnV0aWxzLmVzY2FwZUlkKGUpKyIgLncydWktY29sbGFwc2VkIikucmVtb3ZlQ2xhc3MoIncydWktY29sbGFwc2VkIikuYWRkQ2xhc3MoIncydWktZXhwYW5kZWQiKSxpLmV4cGFuZGVkPSEwLHRoaXMudHJpZ2dlcihwLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnJlZnJlc2goZSl9LDIwMCksITB9LGV4cGFuZEFsbDpmdW5jdGlvbihlKXtpZihudWxsPT1lJiYoZT10aGlzKSwic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuZ2V0KGUpKSxudWxsPT1lLm5vZGVzKXJldHVybiExO2Zvcih2YXIgdD0wO3Q8ZS5ub2Rlcy5sZW5ndGg7dCsrKSExPT09ZS5ub2Rlc1t0XS5leHBhbmRlZCYmKGUubm9kZXNbdF0uZXhwYW5kZWQ9ITApLGUubm9kZXNbdF0ubm9kZXMmJjA8ZS5ub2Rlc1t0XS5ub2Rlcy5sZW5ndGgmJnRoaXMuZXhwYW5kQWxsKGUubm9kZXNbdF0pO3RoaXMucmVmcmVzaChlLmlkKX0sZXhwYW5kUGFyZW50czpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldChlKTtyZXR1cm4gbnVsbCE9dCYmKHQucGFyZW50JiYodC5wYXJlbnQuZXhwYW5kZWR8fCh0LnBhcmVudC5leHBhbmRlZD0hMCx0aGlzLnJlZnJlc2godC5wYXJlbnQuaWQpKSx0aGlzLmV4cGFuZFBhcmVudHModC5wYXJlbnQuaWQpKSwhMCl9LGNsaWNrOmZ1bmN0aW9uKG4sYSl7dmFyIHI9dGhpcyxsPXRoaXMuZ2V0KG4pO2lmKG51bGwhPWwmJiFsLmRpc2FibGVkJiYhbC5ncm91cCl7cChyLmJveCkuZmluZCgiLncydWktbm9kZS53MnVpLXNlbGVjdGVkIikuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBpPXAodCkuYXR0cigiaWQiKS5yZXBsYWNlKCJub2RlXyIsIiIpLHM9ci5nZXQoaSk7bnVsbCE9cyYmKHMuc2VsZWN0ZWQ9ITEpLHAodCkucmVtb3ZlQ2xhc3MoIncydWktc2VsZWN0ZWQiKS5maW5kKCIudzJ1aS1pY29uIikucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1zZWxlY3RlZCIpfSk7dmFyIG89cChyLmJveCkuZmluZCgiI25vZGVfIit3MnV0aWxzLmVzY2FwZUlkKG4pKSxkPXAoci5ib3gpLmZpbmQoIiNub2RlXyIrdzJ1dGlscy5lc2NhcGVJZChyLnNlbGVjdGVkKSk7by5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmZpbmQoIi53MnVpLWljb24iKS5hZGRDbGFzcygidzJ1aS1pY29uLXNlbGVjdGVkIiksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPXIudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiY2xpY2siLHRhcmdldDpuLG9yaWdpbmFsRXZlbnQ6YSxub2RlOmwsb2JqZWN0Omx9KTtpZighMD09PWUuaXNDYW5jZWxsZWQpcmV0dXJuIG8ucmVtb3ZlQ2xhc3MoIncydWktc2VsZWN0ZWQiKS5maW5kKCIudzJ1aS1pY29uIikucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1zZWxlY3RlZCIpLHZvaWQgZC5hZGRDbGFzcygidzJ1aS1zZWxlY3RlZCIpLmZpbmQoIi53MnVpLWljb24iKS5hZGRDbGFzcygidzJ1aS1pY29uLXNlbGVjdGVkIik7aWYobnVsbCE9ZCYmKGQuc2VsZWN0ZWQ9ITEpLHIuZ2V0KG4pLnNlbGVjdGVkPSEwLHIuc2VsZWN0ZWQ9biwic3RyaW5nIj09dHlwZW9mIGwucm91dGUpe3ZhciB0PSIiIT09bC5yb3V0ZT9TdHJpbmcoIi8iK2wucm91dGUpLnJlcGxhY2UoL1wvezIsfS9nLCIvIik6IiIsaT13MnV0aWxzLnBhcnNlUm91dGUodCk7aWYoMDxpLmtleXMubGVuZ3RoKWZvcih2YXIgcz0wO3M8aS5rZXlzLmxlbmd0aDtzKyspbnVsbCE9ci5yb3V0ZURhdGFbaS5rZXlzW3NdLm5hbWVdJiYodD10LnJlcGxhY2UobmV3IFJlZ0V4cCgiOiIraS5rZXlzW3NdLm5hbWUsImciKSxyLnJvdXRlRGF0YVtpLmtleXNbc10ubmFtZV0pKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhhc2g9dH0sMSl9ci50cmlnZ2VyKHAuZXh0ZW5kKGUse3BoYXNlOiJhZnRlciJ9KSl9LDEpfX0sZm9jdXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZm9jdXMiLHRhcmdldDp0aGlzLm5hbWUsb3JpZ2luYWxFdmVudDplfSk7aWYoITA9PT1pLmlzQ2FuY2VsbGVkKXJldHVybiExO3RoaXMuaGFzRm9jdXM9ITAscCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci1ib2R5IikuYWRkQ2xhc3MoIncydWktZm9jdXMiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9cCh0LmJveCkuZmluZCgiI3NpZGViYXJfIit0Lm5hbWUrIl9mb2N1cyIpO2UuaXMoIjpmb2N1cyIpfHxlLmZvY3VzKCl9LDEwKSx0aGlzLnRyaWdnZXIocC5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKX0sYmx1cjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6ImJsdXIiLHRhcmdldDp0aGlzLm5hbWUsb3JpZ2luYWxFdmVudDplfSk7aWYoITA9PT10LmlzQ2FuY2VsbGVkKXJldHVybiExO3RoaXMuaGFzRm9jdXM9ITEscCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci1ib2R5IikucmVtb3ZlQ2xhc3MoIncydWktZm9jdXMiKSx0aGlzLnRyaWdnZXIocC5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKX0sa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgbD10aGlzLHQ9bC5nZXQobC5zZWxlY3RlZCk7aWYoITA9PT1sLmtleWJvYXJkKXt0PXR8fGwubm9kZXNbMF07dmFyIGk9bC50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJrZXlkb3duIix0YXJnZXQ6bC5uYW1lLG9yaWdpbmFsRXZlbnQ6ZX0pOyEwIT09aS5pc0NhbmNlbGxlZCYmKDEzIT1lLmtleUNvZGUmJjMyIT1lLmtleUNvZGV8fDA8dC5ub2Rlcy5sZW5ndGgmJmwudG9nZ2xlKGwuc2VsZWN0ZWQpLDM3PT1lLmtleUNvZGUmJigwPHQubm9kZXMubGVuZ3RoJiZ0LmV4cGFuZGVkP2wuY29sbGFwc2UobC5zZWxlY3RlZCk6KHModC5wYXJlbnQpLHQucGFyZW50Lmdyb3VwfHxsLmNvbGxhcHNlKHQucGFyZW50LmlkKSkpLDM5PT1lLmtleUNvZGUmJigwPHQubm9kZXMubGVuZ3RofHx0LnBsdXMpJiYhdC5leHBhbmRlZCYmbC5leHBhbmQobC5zZWxlY3RlZCksMzg9PWUua2V5Q29kZSYmKG51bGw9PWwuZ2V0KGwuc2VsZWN0ZWQpP3ModGhpcy5ub2Rlc1swXXx8bnVsbCk6cyhuKHQsYSkpKSw0MD09ZS5rZXlDb2RlJiYobnVsbD09bC5nZXQobC5zZWxlY3RlZCk/cyh0aGlzLm5vZGVzWzBdfHxudWxsKTpzKG4odCxmdW5jdGlvbiBlKHQsaSl7aWYobnVsbD09dClyZXR1cm4gbnVsbDt2YXIgcz10LnBhcmVudDt2YXIgbj1sLmdldCh0LmlkLCEwKTt2YXIgYT1udWxsO2lmKHQuZXhwYW5kZWQmJjA8dC5ub2Rlcy5sZW5ndGgmJiEwIT09aSl7dmFyIHI9dC5ub2Rlc1swXTthPXIuaGlkZGVufHxyLmRpc2FibGVkfHxyLmdyb3VwP2Uocik6cn1lbHNlIGE9cyYmbisxPHMubm9kZXMubGVuZ3RoP3Mubm9kZXNbbisxXTplKHMsITApO251bGwhPWEmJihhLmhpZGRlbnx8YS5kaXNhYmxlZHx8YS5ncm91cCkmJihhPWUoYSkpO3JldHVybiBhfSkpKSwtMSE9cC5pbkFycmF5KGUua2V5Q29kZSxbMTMsMzIsMzcsMzgsMzksNDBdKSYmKGUucHJldmVudERlZmF1bHQmJmUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSksbC50cmlnZ2VyKHAuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciJ9KSkpfWZ1bmN0aW9uIHMoZSx0KXtudWxsPT1lfHxlLmhpZGRlbnx8ZS5kaXNhYmxlZHx8ZS5ncm91cHx8KGwuY2xpY2soZS5pZCx0KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5zY3JvbGxJbnRvVmlldygpfSw1MCkpfWZ1bmN0aW9uIG4oZSx0KXtmb3IoZT10KGUpO251bGwhPWUmJihlLmhpZGRlbnx8ZS5kaXNhYmxlZCkmJiFlLmdyb3VwOyllPXQoZSk7cmV0dXJuIGV9ZnVuY3Rpb24gYShlKXtpZihudWxsPT1lKXJldHVybiBudWxsO3ZhciB0PWUucGFyZW50LGk9bC5nZXQoZS5pZCwhMCkscz0wPGk/ZnVuY3Rpb24gZSh0KXtpZih0LmV4cGFuZGVkJiYwPHQubm9kZXMubGVuZ3RoKXt2YXIgaT10Lm5vZGVzW3Qubm9kZXMubGVuZ3RoLTFdO3JldHVybiBpLmhpZGRlbnx8aS5kaXNhYmxlZHx8aS5ncm91cD9hKGkpOmUoaSl9cmV0dXJuIHR9KHQubm9kZXNbaS0xXSk6dDtyZXR1cm4gbnVsbCE9cyYmKHMuaGlkZGVufHxzLmRpc2FibGVkfHxzLmdyb3VwKSYmKHM9YShzKSksc319LHNjcm9sbEludG9WaWV3OmZ1bmN0aW9uKGUpe2lmKG51bGw9PWUmJihlPXRoaXMuc2VsZWN0ZWQpLG51bGwhPXRoaXMuZ2V0KGUpKXt2YXIgdD1wKHRoaXMuYm94KS5maW5kKCIudzJ1aS1zaWRlYmFyLWJvZHkiKSxpPXAodGhpcy5ib3gpLmZpbmQoIiNub2RlXyIrdzJ1dGlscy5lc2NhcGVJZChlKSkscz1pLm9mZnNldCgpLnRvcC10Lm9mZnNldCgpLnRvcDsocytpLmhlaWdodCgpPnQuaGVpZ2h0KCl8fHM8PTApJiZ0LmFuaW1hdGUoe3Njcm9sbFRvcDp0LnNjcm9sbFRvcCgpK3MtdC5oZWlnaHQoKS8yK2kuaGVpZ2h0KCl9LDI1MCwibGluZWFyIil9fSxkYmxDbGljazpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZ2V0KGUpLHM9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJkYmxDbGljayIsdGFyZ2V0OmUsb3JpZ2luYWxFdmVudDp0LG9iamVjdDppfSk7ITAhPT1zLmlzQ2FuY2VsbGVkJiYodGhpcy50b2dnbGUoZSksdGhpcy50cmlnZ2VyKHAuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSkpfSxjb250ZXh0TWVudTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscz1pLmdldCh0KTt0IT1pLnNlbGVjdGVkJiZpLmNsaWNrKHQpO3ZhciBuPWkudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiY29udGV4dE1lbnUiLHRhcmdldDp0LG9yaWdpbmFsRXZlbnQ6ZSxvYmplY3Q6cyxhbGxvd09uRGlzYWJsZWQ6ITF9KTshMCE9PW4uaXNDYW5jZWxsZWQmJihzLmRpc2FibGVkJiYhbi5hbGxvd09uRGlzYWJsZWR8fCgwPGkubWVudS5sZW5ndGgmJnAoaS5ib3gpLmZpbmQoIiNub2RlXyIrdzJ1dGlscy5lc2NhcGVJZCh0KSkudzJtZW51KHtpdGVtczppLm1lbnUsY29udGV4dE1lbnU6ITAsb3JpZ2luYWxFdmVudDplLG9uU2VsZWN0OmZ1bmN0aW9uKGUpe2kubWVudUNsaWNrKHQscGFyc2VJbnQoZS5pbmRleCksZS5vcmlnaW5hbEV2ZW50KX19KSxlLnByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCksaS50cmlnZ2VyKHAuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSkpKX0sbWVudUNsaWNrOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im1lbnVDbGljayIsdGFyZ2V0OmUsb3JpZ2luYWxFdmVudDppLG1lbnVJbmRleDp0LG1lbnVJdGVtOnRoaXMubWVudVt0XX0pOyEwIT09cy5pc0NhbmNlbGxlZCYmdGhpcy50cmlnZ2VyKHAuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSl9LGdvRmxhdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZmxhdCIsZ29GbGF0OiF0aGlzLmZsYXR9KTshMCE9PWUuaXNDYW5jZWxsZWQmJih0aGlzLmZsYXQ9IXRoaXMuZmxhdCx0aGlzLnJlZnJlc2goKSx0aGlzLnRyaWdnZXIocC5leHRlbmQoZSx7cGhhc2U6ImFmdGVyIn0pKSl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKSxzPXRoaXMsaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlbmRlciIsdGFyZ2V0OnRoaXMubmFtZSxib3g6ZX0pO2lmKCEwIT09aS5pc0NhbmNlbGxlZCYmKG51bGwhPWUmJigwPHAodGhpcy5ib3gpLmZpbmQoIj4gZGl2ID4gZGl2LncydWktc2lkZWJhci1ib2R5IikubGVuZ3RoJiZwKHRoaXMuYm94KS5yZW1vdmVBdHRyKCJuYW1lIikucmVtb3ZlQ2xhc3MoIncydWktcmVzZXQgdzJ1aS1zaWRlYmFyIikuaHRtbCgiIiksdGhpcy5ib3g9ZSksdGhpcy5ib3gpKXtwKHRoaXMuYm94KS5hdHRyKCJuYW1lIix0aGlzLm5hbWUpLmFkZENsYXNzKCJ3MnVpLXJlc2V0IHcydWktc2lkZWJhciIpLmh0bWwoJzxkaXY+PGlucHV0IGlkPSJzaWRlYmFyXycrdGhpcy5uYW1lKydfZm9jdXMiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IHdpZHRoOiAxcHg7IHotaW5kZXg6IC0xOyBvcGFjaXR5OiAwIiAnKyh3MnV0aWxzLmlzSU9TPyJyZWFkb25seSI6IiIpKycvPjxkaXYgY2xhc3M9IncydWktc2lkZWJhci10b3AiPjwvZGl2PjxkaXYgY2xhc3M9IncydWktc2lkZWJhci1ib2R5Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3MnVpLXNpZGViYXItYm90dG9tIj48L2Rpdj48L2Rpdj4nKSxwKHRoaXMuYm94KS5maW5kKCI+IGRpdiIpLmNzcyh7d2lkdGg6cCh0aGlzLmJveCkud2lkdGgoKSsicHgiLGhlaWdodDpwKHRoaXMuYm94KS5oZWlnaHQoKSsicHgifSksMDxwKHRoaXMuYm94KS5sZW5ndGgmJihwKHRoaXMuYm94KVswXS5zdHlsZS5jc3NUZXh0Kz10aGlzLnN0eWxlKTt2YXIgbixhPSIiO3JldHVybiAxPT10aGlzLmZsYXRCdXR0b24mJihhPSc8ZGl2IGNsYXNzPSJ3MnVpLWZsYXQtJysodGhpcy5mbGF0PyJyaWdodCI6ImxlZnQiKSsnIiBvbmNsaWNrPSJ3MnVpW1wnJyt0aGlzLm5hbWUrIiddLmdvRmxhdCgpXCI+PC9kaXY+IiksIiI9PT10aGlzLnRvcEhUTUwmJiIiPT09YXx8KHAodGhpcy5ib3gpLmZpbmQoIi53MnVpLXNpZGViYXItdG9wIikuaHRtbCh0aGlzLnRvcEhUTUwrYSkscCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci1ib2R5IikuY3NzKCJ0b3AiLHAodGhpcy5ib3gpLmZpbmQoIi53MnVpLXNpZGViYXItdG9wIikuaGVpZ2h0KCkrInB4IikpLCIiIT09dGhpcy5ib3R0b21IVE1MJiYocCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci1ib3R0b20iKS5odG1sKHRoaXMuYm90dG9tSFRNTCkscCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci1ib2R5IikuY3NzKCJib3R0b20iLHAodGhpcy5ib3gpLmZpbmQoIi53MnVpLXNpZGViYXItYm90dG9tIikuaGVpZ2h0KCkrInB4IikpLHAodGhpcy5ib3gpLmZpbmQoIiNzaWRlYmFyXyIrdGhpcy5uYW1lKyJfZm9jdXMiKS5vbigiZm9jdXMiLGZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChuKSxzLmhhc0ZvY3VzfHxzLmZvY3VzKGUpfSkub24oImJsdXIiLGZ1bmN0aW9uKGUpe249c2V0VGltZW91dChmdW5jdGlvbigpe3MuaGFzRm9jdXMmJnMuYmx1cihlKX0sMTAwKX0pLm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXs5IT1lLmtleUNvZGUmJncydWlbcy5uYW1lXS5rZXlkb3duLmNhbGwodzJ1aVtzLm5hbWVdLGUpfSkscCh0aGlzLmJveCkub2ZmKCJtb3VzZWRvd24iKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihpKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoLTE9PVsiSU5QVVQiLCJURVhUQVJFQSIsIlNFTEVDVCJdLmluZGV4T2YoaS50YXJnZXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpKSl7dmFyIGU9cChzLmJveCkuZmluZCgiI3NpZGViYXJfIitzLm5hbWUrIl9mb2N1cyIpO2lmKCFlLmlzKCI6Zm9jdXMiKSl7aWYocChpLnRhcmdldCkuaGFzQ2xhc3MoIncydWktbm9kZSIpKXt2YXIgdD1wKGkudGFyZ2V0KS5wb3NpdGlvbigpLnRvcCtwKHMuYm94KS5maW5kKCIudzJ1aS1zaWRlYmFyLXRvcCIpLmhlaWdodCgpK2kub2Zmc2V0WTtlLmNzcyh7dG9wOnQrInB4IixsZWZ0OiIwcHgifSl9ZS5mb2N1cygpfX19LDEpfSksdGhpcy50cmlnZ2VyKHAuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciJ9KSksdGhpcy5yZWZyZXNoKCksKG5ldyBEYXRlKS5nZXRUaW1lKCktdH19LHJlZnJlc2g6ZnVuY3Rpb24oZSl7dmFyIHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InJlZnJlc2giLHRhcmdldDpudWxsIT1lP2U6dGhpcy5uYW1lLGZ1bGxSZWZyZXNoOm51bGw9PWV9KTtpZighMCE9PWkuaXNDYW5jZWxsZWQpe3ZhciBzPSIiO2lmKDE9PXRoaXMuZmxhdEJ1dHRvbiYmKHM9JzxkaXYgY2xhc3M9IncydWktZmxhdC0nKyh0aGlzLmZsYXQ/InJpZ2h0IjoibGVmdCIpKyciIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10uZ29GbGF0KClcIj48L2Rpdj4iKSwiIj09PXRoaXMudG9wSFRNTCYmIiI9PT1zfHwocCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci10b3AiKS5odG1sKHRoaXMudG9wSFRNTCtzKSxwKHRoaXMuYm94KS5maW5kKCIudzJ1aS1zaWRlYmFyLWJvZHkiKS5jc3MoInRvcCIscCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci10b3AiKS5oZWlnaHQoKSsicHgiKSksIiIhPT10aGlzLmJvdHRvbUhUTUwmJihwKHRoaXMuYm94KS5maW5kKCIudzJ1aS1zaWRlYmFyLWJvdHRvbSIpLmh0bWwodGhpcy5ib3R0b21IVE1MKSxwKHRoaXMuYm94KS5maW5kKCIudzJ1aS1zaWRlYmFyLWJvZHkiKS5jc3MoImJvdHRvbSIscCh0aGlzLmJveCkuZmluZCgiLncydWktc2lkZWJhci1ib3R0b20iKS5oZWlnaHQoKSsicHgiKSkscCh0aGlzLmJveCkuZmluZCgiPiBkaXYiKS5yZW1vdmVDbGFzcygidzJ1aS1zaWRlYmFyLWZsYXQiKS5hZGRDbGFzcyh0aGlzLmZsYXQ/IncydWktc2lkZWJhci1mbGF0IjoiIikuY3NzKHt3aWR0aDpwKHRoaXMuYm94KS53aWR0aCgpKyJweCIsaGVpZ2h0OnAodGhpcy5ib3gpLmhlaWdodCgpKyJweCJ9KSwwPHRoaXMubm9kZXMubGVuZ3RoJiZudWxsPT10aGlzLm5vZGVzWzBdLnBhcmVudCl7dmFyIG49dGhpcy5ub2Rlczt0aGlzLm5vZGVzPVtdLHRoaXMuYWRkKHRoaXMsbil9dmFyIGEscixsLG8sZD10aGlzO2lmKG51bGw9PWUpYT10aGlzLGw9Ii53MnVpLXNpZGViYXItYm9keSI7ZWxzZXtpZihudWxsPT0oYT10aGlzLmdldChlKSkpcmV0dXJuO2w9IiNub2RlXyIrdzJ1dGlscy5lc2NhcGVJZChhLmlkKSsiX3N1YiJ9aWYoYSE9PXRoaXMpe249IiNub2RlXyIrdzJ1dGlscy5lc2NhcGVJZChhLmlkKTtvPWgoYSkscCh0aGlzLmJveCkuZmluZChuKS5iZWZvcmUoJzxkaXYgaWQ9InNpZGViYXJfJyt0aGlzLm5hbWUrJ190bXAiPjwvZGl2PicpLHAodGhpcy5ib3gpLmZpbmQobikucmVtb3ZlKCkscCh0aGlzLmJveCkuZmluZChsKS5yZW1vdmUoKSxwKCIjc2lkZWJhcl8iK3RoaXMubmFtZSsiX3RtcCIpLmJlZm9yZShvKSxwKCIjc2lkZWJhcl8iK3RoaXMubmFtZSsiX3RtcCIpLnJlbW92ZSgpfXAodGhpcy5ib3gpLmZpbmQobCkuaHRtbCgiIik7Zm9yKHZhciB1PTA7dTxhLm5vZGVzLmxlbmd0aDt1KyspaWYobz1oKHI9YS5ub2Rlc1t1XSkscCh0aGlzLmJveCkuZmluZChsKS5hcHBlbmQobyksMCE9PXIubm9kZXMubGVuZ3RoKXRoaXMucmVmcmVzaChyLmlkKTtlbHNle3ZhciBjPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVmcmVzaCIsdGFyZ2V0OnIuaWR9KTtpZighMD09PWMuaXNDYW5jZWxsZWQpcmV0dXJuO3RoaXMudHJpZ2dlcihwLmV4dGVuZChjLHtwaGFzZToiYWZ0ZXIifSkpfXJldHVybiB0aGlzLnRyaWdnZXIocC5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKSwobmV3IERhdGUpLmdldFRpbWUoKS10fWZ1bmN0aW9uIGgoZSl7dmFyIHQ9IiIsaT1lLmltZyxzPWUuaWNvbjtudWxsPT1zJiZudWxsPT1pJiYobnVsbD09cyYmKHM9ZC5pY29uKSxudWxsPT1pJiYoaT1kLmltZykpO2Zvcih2YXIgbj1lLnBhcmVudCxhPTA7biYmbnVsbCE9bi5wYXJlbnQ7KW49bi5wYXJlbnQsYSsrO2lmKG51bGwhPWUuY2FwdGlvbiYmbnVsbD09ZS50ZXh0JiYoZS50ZXh0PWUuY2FwdGlvbiksbnVsbCE9ZS5jYXB0aW9uJiYoY29uc29sZS5sb2coIk5PVElDRTogc2lkZWJhciBub2RlLmNhcHRpb24gcHJvcGVydHkgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBub2RlLnRleHQuIE5vZGUgLT4gIixlKSxlLnRleHQ9ZS5jYXB0aW9uKSxBcnJheS5pc0FycmF5KGUubm9kZXMpJiYwPGUubm9kZXMubGVuZ3RoJiYoZS5jb2xsYXBzaWJsZT0hMCksZS5ncm91cCl0PSc8ZGl2IGNsYXNzPSJ3MnVpLW5vZGUtZ3JvdXAgdzJ1aS1sZXZlbC0nK2ErKGUuY2xhc3M/IiAiK2UuY2xhc3M6IiIpKyciIGlkPSJub2RlXycrZS5pZCsnIiAgIHN0eWxlPSInKyhlLmhpZGRlbj8iZGlzcGxheTogbm9uZSI6IiIpKyciIG9uY2xpY2s9IncydWlbXCcnK2QubmFtZSsiJ10udG9nZ2xlKCciK2UuaWQrIicpXCIgICBvbmNvbnRleHRtZW51PVwidzJ1aVsnIitkLm5hbWUrIiddLmNvbnRleHRNZW51KCciK2UuaWQrIicsIGV2ZW50KTtcIiAgIG9ubW91c2VvdXQ9XCJqUXVlcnkodGhpcykuZmluZCgnc3BhbjpudGgtY2hpbGQoMSknKS5jc3MoJ2NvbG9yJywgJ3RyYW5zcGFyZW50JylcIiAgICBvbm1vdXNlb3Zlcj1cImpRdWVyeSh0aGlzKS5maW5kKCdzcGFuOm50aC1jaGlsZCgxKScpLmNzcygnY29sb3InLCAnaW5oZXJpdCcpXCI+IisoZS5ncm91cFNob3dIaWRlJiZlLmNvbGxhcHNpYmxlPyI8c3Bhbj4iKyghZS5oaWRkZW4mJmUuZXhwYW5kZWQ/dzJ1dGlscy5sYW5nKCJIaWRlIik6dzJ1dGlscy5sYW5nKCJTaG93IikpKyI8L3NwYW4+IjoiPHNwYW4+PC9zcGFuPiIpKygiZnVuY3Rpb24iPT10eXBlb2YgZS50ZXh0P2UudGV4dC5jYWxsKGQsZSk6IjxzcGFuPiIrZS50ZXh0KyI8L3NwYW4+IikrJzwvZGl2PjxkaXYgY2xhc3M9IncydWktbm9kZS1zdWIiIGlkPSJub2RlXycrZS5pZCsnX3N1YiIgc3R5bGU9IicrZS5zdHlsZSsiOyIrKCFlLmhpZGRlbiYmZS5leHBhbmRlZD8iIjoiZGlzcGxheTogbm9uZTsiKSsnIj48L2Rpdj4nLGQuZmxhdCYmKHQ9JzxkaXYgY2xhc3M9IncydWktbm9kZS1ncm91cCIgaWQ9Im5vZGVfJytlLmlkKyciPjxzcGFuPiYjMTYwOzwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJub2RlXycrZS5pZCsnX3N1YiIgc3R5bGU9IicrZS5zdHlsZSsiOyIrKCFlLmhpZGRlbiYmZS5leHBhbmRlZD8iIjoiZGlzcGxheTogbm9uZTsiKSsnIj48L2Rpdj4nKTtlbHNle2Uuc2VsZWN0ZWQmJiFlLmRpc2FibGVkJiYoZC5zZWxlY3RlZD1lLmlkKSxuPSIiLGkmJihuPSc8ZGl2IGNsYXNzPSJ3MnVpLW5vZGUtaW1hZ2UgdzJ1aS1pY29uICcraSsoZS5zZWxlY3RlZCYmIWUuZGlzYWJsZWQ/IiB3MnVpLWljb24tc2VsZWN0ZWQiOiIiKSsnIj48L2Rpdj4nKSxzJiYobj0nPGRpdiBjbGFzcz0idzJ1aS1ub2RlLWltYWdlIj48c3BhbiBjbGFzcz0iJysoImZ1bmN0aW9uIj09dHlwZW9mIHM/cy5jYWxsKGQsZSk6cykrJyI+PC9zcGFuPjwvZGl2PicpO3ZhciByPWUudGV4dCxsPW51bGwhPWUuY291bnQ/JzxkaXYgY2xhc3M9IncydWktbm9kZS1jb3VudCI+JytlLmNvdW50KyI8L2Rpdj4iOiIiOyEwPT09ZS5jb2xsYXBzaWJsZSYmKGw9JzxkaXYgY2xhc3M9IncydWktJysoZS5leHBhbmRlZD8iZXhwYW5kZWQiOiJjb2xsYXBzZWQiKSsnIj48c3Bhbj48L3NwYW4+PC9kaXY+JyksY29uc29sZS5sb2coZSxsKSwiZnVuY3Rpb24iPT10eXBlb2YgZS50ZXh0JiYocj1lLnRleHQuY2FsbChkLGUpKSx0PSc8ZGl2IGNsYXNzPSJ3MnVpLW5vZGUgdzJ1aS1sZXZlbC0nK2ErKGUuc2VsZWN0ZWQ/IiB3MnVpLXNlbGVjdGVkIjoiIikrKGUuZGlzYWJsZWQ/IiB3MnVpLWRpc2FibGVkIjoiIikrKGUuY2xhc3M/IiAiK2UuY2xhc3M6IiIpKyciIGlkPSJub2RlXycrZS5pZCsnIiBzdHlsZT0iJysoZS5oaWRkZW4/ImRpc3BsYXk6IG5vbmU7IjoiIikrJyIgICAgb25kYmxjbGljaz0idzJ1aVtcJycrZC5uYW1lKyInXS5kYmxDbGljaygnIitlLmlkKyInLCBldmVudCk7XCIgICAgb25jb250ZXh0bWVudT1cIncydWlbJyIrZC5uYW1lKyInXS5jb250ZXh0TWVudSgnIitlLmlkKyInLCBldmVudCk7XCIgICAgb25DbGljaz1cIncydWlbJyIrZC5uYW1lKyInXS5jbGljaygnIitlLmlkKydcJywgZXZlbnQpOyAiPiAgIDxkaXYgY2xhc3M9IncydWktbm9kZS1kYXRhIiBzdHlsZT0ibWFyZ2luLWxlZnQ6JysxMiphKydweCI+JytuK2wrJzxkaXYgY2xhc3M9IncydWktbm9kZS10ZXh0IHcydWktbm9kZS1jYXB0aW9uIj4nK3IrJzwvZGl2PiAgIDwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IncydWktbm9kZS1zdWIiIGlkPSJub2RlXycrZS5pZCsnX3N1YiIgc3R5bGU9IicrZS5zdHlsZSsiOyIrKCFlLmhpZGRlbiYmZS5leHBhbmRlZD8iIjoiZGlzcGxheTogbm9uZTsiKSsnIj48L2Rpdj4nLGQuZmxhdCYmKHQ9JzxkaXYgY2xhc3M9IncydWktbm9kZSB3MnVpLWxldmVsLScrYSsiICIrKGUuc2VsZWN0ZWQ/IncydWktc2VsZWN0ZWQiOiIiKSsiICIrKGUuZGlzYWJsZWQ/IncydWktZGlzYWJsZWQiOiIiKSsoZS5jbGFzcz8iICIrZS5jbGFzczoiIikrJyIgaWQ9Im5vZGVfJytlLmlkKyciIHN0eWxlPSInKyhlLmhpZGRlbj8iZGlzcGxheTogbm9uZTsiOiIiKSsiXCIgICAgb25tb3VzZW92ZXI9XCJqUXVlcnkodGhpcykuZmluZCgnLncydWktbm9kZS1kYXRhJykudzJ0YWcodzJ1dGlscy5iYXNlNjRkZWNvZGUoJyIrdzJ1dGlscy5iYXNlNjRlbmNvZGUocisoZS5jb3VudHx8MD09PWUuY291bnQ/JyAtIDxzcGFuIGNsYXNzPSJ3MnVpLW5vZGUtY291bnQiPicrZS5jb3VudCsiPC9zcGFuPiI6IiIpKSsiJyksICAgICAgICAgICAgICAgIHsgaWQ6ICciK2UuaWQrIicsIGxlZnQ6IC01IH0pXCIgICAgb25tb3VzZW91dD1cImpRdWVyeSh0aGlzKS5maW5kKCcudzJ1aS1ub2RlLWRhdGEnKS53MnRhZyhudWxsLCB7IGlkOiAnIitlLmlkKyInIH0pXCIgICAgb25kYmxjbGljaz1cIncydWlbJyIrZC5uYW1lKyInXS5kYmxDbGljaygnIitlLmlkKyInLCBldmVudCk7XCIgICAgb25jb250ZXh0bWVudT1cIncydWlbJyIrZC5uYW1lKyInXS5jb250ZXh0TWVudSgnIitlLmlkKyInLCBldmVudCk7XCIgICAgb25DbGljaz1cIncydWlbJyIrZC5uYW1lKyInXS5jbGljaygnIitlLmlkKydcJywgZXZlbnQpOyAiPjxkaXYgY2xhc3M9IncydWktbm9kZS1kYXRhIHcydWktbm9kZS1mbGF0Ij4nK24rJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IncydWktbm9kZS1zdWIiIGlkPSJub2RlXycrZS5pZCsnX3N1YiIgc3R5bGU9IicrZS5zdHlsZSsiOyIrKCFlLmhpZGRlbiYmZS5leHBhbmRlZD8iIjoiZGlzcGxheTogbm9uZTsiKSsnIj48L2Rpdj4nKX1yZXR1cm4gdH19LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZXNpemUiLHRhcmdldDp0aGlzLm5hbWV9KTtpZighMCE9PXQuaXNDYW5jZWxsZWQpcmV0dXJuIHAodGhpcy5ib3gpLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKSxwKHRoaXMuYm94KS5maW5kKCI+IGRpdiIpLmNzcyh7d2lkdGg6cCh0aGlzLmJveCkud2lkdGgoKSsicHgiLGhlaWdodDpwKHRoaXMuYm94KS5oZWlnaHQoKSsicHgifSksdGhpcy50cmlnZ2VyKHAuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSksKG5ldyBEYXRlKS5nZXRUaW1lKCktZX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZGVzdHJveSIsdGFyZ2V0OnRoaXMubmFtZX0pOyEwIT09ZS5pc0NhbmNlbGxlZCYmKDA8cCh0aGlzLmJveCkuZmluZCgiPiBkaXYgPiBkaXYudzJ1aS1zaWRlYmFyLWJvZHkiKS5sZW5ndGgmJnAodGhpcy5ib3gpLnJlbW92ZUF0dHIoIm5hbWUiKS5yZW1vdmVDbGFzcygidzJ1aS1yZXNldCB3MnVpLXNpZGViYXIiKS5odG1sKCIiKSxkZWxldGUgdzJ1aVt0aGlzLm5hbWVdLHRoaXMudHJpZ2dlcihwLmV4dGVuZChlLHtwaGFzZToiYWZ0ZXIifSkpKX0sbG9jazpmdW5jdGlvbihlLHQpe3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtpLnVuc2hpZnQodGhpcy5ib3gpLHcydXRpbHMubG9jay5hcHBseSh3aW5kb3csaSl9LHVubG9jazpmdW5jdGlvbihlKXt3MnV0aWxzLnVubG9jayh0aGlzLmJveCxlKX19LHAuZXh0ZW5kKGQucHJvdG90eXBlLHcydXRpbHMuZXZlbnQpLHcyb2JqLnNpZGViYXI9ZH0oalF1ZXJ5KSxmdW5jdGlvbihiKXtmdW5jdGlvbiBuKGUpe3RoaXMuZWw9bnVsbCx0aGlzLmhlbHBlcnM9e30sdGhpcy50eXBlPWUudHlwZXx8InRleHQiLHRoaXMub3B0aW9ucz1iLmV4dGVuZCghMCx7fSxlKSx0aGlzLm9uU2VhcmNoPWUub25TZWFyY2h8fG51bGwsdGhpcy5vblJlcXVlc3Q9ZS5vblJlcXVlc3R8fG51bGwsdGhpcy5vbkxvYWQ9ZS5vbkxvYWR8fG51bGwsdGhpcy5vbkVycm9yPWUub25FcnJvcnx8bnVsbCx0aGlzLm9uQ2xpY2s9ZS5vbkNsaWNrfHxudWxsLHRoaXMub25BZGQ9ZS5vbkFkZHx8bnVsbCx0aGlzLm9uTmV3PWUub25OZXd8fG51bGwsdGhpcy5vblJlbW92ZT1lLm9uUmVtb3ZlfHxudWxsLHRoaXMub25Nb3VzZU92ZXI9ZS5vbk1vdXNlT3Zlcnx8bnVsbCx0aGlzLm9uTW91c2VPdXQ9ZS5vbk1vdXNlT3V0fHxudWxsLHRoaXMub25JY29uQ2xpY2s9ZS5vbkljb25DbGlja3x8bnVsbCx0aGlzLm9uU2Nyb2xsPWUub25TY3JvbGx8fG51bGwsdGhpcy50bXA9e30sZGVsZXRlIHRoaXMub3B0aW9ucy50eXBlLGRlbGV0ZSB0aGlzLm9wdGlvbnMub25TZWFyY2gsZGVsZXRlIHRoaXMub3B0aW9ucy5vblJlcXVlc3QsZGVsZXRlIHRoaXMub3B0aW9ucy5vbkxvYWQsZGVsZXRlIHRoaXMub3B0aW9ucy5vbkVycm9yLGRlbGV0ZSB0aGlzLm9wdGlvbnMub25DbGljayxkZWxldGUgdGhpcy5vcHRpb25zLm9uTW91c2VPdmVyLGRlbGV0ZSB0aGlzLm9wdGlvbnMub25Nb3VzZU91dCxkZWxldGUgdGhpcy5vcHRpb25zLm9uSWNvbkNsaWNrLGRlbGV0ZSB0aGlzLm9wdGlvbnMub25TY3JvbGwsYi5leHRlbmQoITAsdGhpcyx3Mm9iai5maWVsZCl9Yi5mbi53MmZpZWxkPWZ1bmN0aW9uKHMsZSl7aWYoMCE9PXRoaXMubGVuZ3RoKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD9iKHRoaXMpLmRhdGEoIncyZmllbGQiKTooInN0cmluZyI9PXR5cGVvZiBzJiYib2JqZWN0Ij09dHlwZW9mIGUmJihzPWIuZXh0ZW5kKCEwLHt9LGUse3R5cGU6c30pKSwic3RyaW5nIj09dHlwZW9mIHMmJm51bGw9PWUmJihzPXt0eXBlOnN9KSxzJiYocy50eXBlPVN0cmluZyhzLnR5cGUpLnRvTG93ZXJDYXNlKCkpLHRoaXMuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBpPWIodCkuZGF0YSgidzJmaWVsZCIpO3JldHVybiBudWxsPT1pPyhpPW5ldyBuKHMpLGIuZXh0ZW5kKGkse2hhbmRsZXJzOltdfSksdCYmKGkuZWw9Yih0KVswXSksaS5pbml0KCksYih0KS5kYXRhKCJ3MmZpZWxkIixpKSxpKTooaS5jbGVhcigpLCJjbGVhciIhPT1zLnR5cGU/KGk9bmV3IG4ocyksYi5leHRlbmQoaSx7aGFuZGxlcnM6W119KSx0JiYoaS5lbD1iKHQpWzBdKSxpLmluaXQoKSxiKHQpLmRhdGEoIncyZmllbGQiLGkpLGkpOnZvaWQgMCl9KSk7dmFyIHQ9bi5wcm90b3R5cGU7cmV0dXJuIHRbc10/dFtzXS5hcHBseSh0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk6dm9pZCAwfSxuLnByb3RvdHlwZT17Y3VzdG9tOnt9LGFkZFR5cGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1TdHJpbmcoZSkudG9Mb3dlckNhc2UoKSx0aGlzLmN1c3RvbVtlXT10LCEwfSxyZW1vdmVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBlPVN0cmluZyhlKS50b0xvd2VyQ2FzZSgpLCEhdGhpcy5jdXN0b21bZV0mJihkZWxldGUgdGhpcy5jdXN0b21bZV0sITApfSxpbml0OmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dGhpcy5vcHRpb25zO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLmN1c3RvbVt0aGlzLnR5cGVdKWlmKC0xIT1bIklOUFVUIiwiVEVYVEFSRUEiXS5pbmRleE9mKHRoaXMuZWwudGFnTmFtZS50b1VwcGVyQ2FzZSgpKSl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJ0ZXh0IjpjYXNlImludCI6Y2FzZSJmbG9hdCI6Y2FzZSJtb25leSI6Y2FzZSJjdXJyZW5jeSI6Y2FzZSJwZXJjZW50IjpjYXNlImFscGhhbnVtZXJpYyI6Y2FzZSJiaW4iOmNhc2UiaGV4IjplPXttaW46bnVsbCxtYXg6bnVsbCxzdGVwOjEsYXV0b0Zvcm1hdDohMCxjdXJyZW5jeVByZWZpeDp3MnV0aWxzLnNldHRpbmdzLmN1cnJlbmN5UHJlZml4LGN1cnJlbmN5U3VmZml4OncydXRpbHMuc2V0dGluZ3MuY3VycmVuY3lTdWZmaXgsY3VycmVuY3lQcmVjaXNpb246dzJ1dGlscy5zZXR0aW5ncy5jdXJyZW5jeVByZWNpc2lvbixkZWNpbWFsU3ltYm9sOncydXRpbHMuc2V0dGluZ3MuZGVjaW1hbFN5bWJvbCxncm91cFN5bWJvbDp3MnV0aWxzLnNldHRpbmdzLmdyb3VwU3ltYm9sLGFycm93czohMSxrZXlib2FyZDohMCxwcmVjaXNpb246bnVsbCxzaWxlbnQ6ITAscHJlZml4OiIiLHN1ZmZpeDoiIn0sdGhpcy5vcHRpb25zPWIuZXh0ZW5kKCEwLHt9LGUsaSksKGk9dGhpcy5vcHRpb25zKS5udW1iZXJSRT1uZXcgUmVnRXhwKCJbIitpLmdyb3VwU3ltYm9sKyJdIiwiZyIpLGkubW9uZXlSRT1uZXcgUmVnRXhwKCJbIitpLmN1cnJlbmN5UHJlZml4K2kuY3VycmVuY3lTdWZmaXgraS5ncm91cFN5bWJvbCsiXSIsImciKSxpLnBlcmNlbnRSRT1uZXcgUmVnRXhwKCJbIitpLmdyb3VwU3ltYm9sKyIlXSIsImciKSwtMSE9PVsidGV4dCIsImFscGhhbnVtZXJpYyIsImhleCIsImJpbiJdLmluZGV4T2YodGhpcy50eXBlKSYmKGkuYXJyb3dzPSExLGkua2V5Ym9hcmQ9ITEpLHRoaXMuYWRkUHJlZml4KCksdGhpcy5hZGRTdWZmaXgoKTticmVhaztjYXNlImNvbG9yIjplPXtwcmVmaXg6IiIsc3VmZml4Oic8ZGl2IHN0eWxlPSJ3aWR0aDogJysocGFyc2VJbnQoYih0aGlzLmVsKS5jc3MoImZvbnQtc2l6ZSIpKXx8MTIpKydweCI+JiMxNjA7PC9kaXY+JyxhcnJvd3M6ITEsa2V5Ym9hcmQ6ITEsYWR2YW5jZWQ6bnVsbCx0cmFuc3BhcmVudDohMH0sYi5leHRlbmQoaSxlKSx0aGlzLmFkZFByZWZpeCgpLHRoaXMuYWRkU3VmZml4KCksIiIhPT1iKHRoaXMuZWwpLnZhbCgpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5jaGFuZ2UoKX0sMSk7YnJlYWs7Y2FzZSJkYXRlIjplPXtmb3JtYXQ6dzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0LGtleWJvYXJkOiEwLHNpbGVudDohMCxzdGFydDoiIixlbmQ6IiIsYmxvY2tlZDp7fSxjb2xvcmVkOnt9LGJsb2NrV2Vla0RheXM6bnVsbH0sdGhpcy5vcHRpb25zPWIuZXh0ZW5kKCEwLHt9LGUsaSksaT10aGlzLm9wdGlvbnMsbnVsbD09Yih0aGlzLmVsKS5hdHRyKCJwbGFjZWhvbGRlciIpJiZiKHRoaXMuZWwpLmF0dHIoInBsYWNlaG9sZGVyIixpLmZvcm1hdCk7YnJlYWs7Y2FzZSJ0aW1lIjplPXtmb3JtYXQ6dzJ1dGlscy5zZXR0aW5ncy50aW1lRm9ybWF0LGtleWJvYXJkOiEwLHNpbGVudDohMCxzdGFydDoiIixlbmQ6IiIsbm9NaW51dGVzOiExfSx0aGlzLm9wdGlvbnM9Yi5leHRlbmQoITAse30sZSxpKSxpPXRoaXMub3B0aW9ucyxudWxsPT1iKHRoaXMuZWwpLmF0dHIoInBsYWNlaG9sZGVyIikmJmIodGhpcy5lbCkuYXR0cigicGxhY2Vob2xkZXIiLGkuZm9ybWF0KTticmVhaztjYXNlImRhdGV0aW1lIjplPXtmb3JtYXQ6dzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0KyIgfCAiK3cydXRpbHMuc2V0dGluZ3MudGltZUZvcm1hdCxrZXlib2FyZDohMCxzaWxlbnQ6ITAsc3RhcnQ6IiIsZW5kOiIiLGJsb2NrZWQ6W10sY29sb3JlZDp7fSxwbGFjZWhvbGRlcjpudWxsLGJ0bl9ub3c6ITAsbm9NaW51dGVzOiExfSx0aGlzLm9wdGlvbnM9Yi5leHRlbmQoITAse30sZSxpKSxpPXRoaXMub3B0aW9ucyxudWxsPT1iKHRoaXMuZWwpLmF0dHIoInBsYWNlaG9sZGVyIikmJmIodGhpcy5lbCkuYXR0cigicGxhY2Vob2xkZXIiLGkucGxhY2Vob2xkZXJ8fGkuZm9ybWF0KTticmVhaztjYXNlImxpc3QiOmNhc2UiY29tYm8iOmlmKGU9e2l0ZW1zOltdLHNlbGVjdGVkOnt9LHVybDpudWxsLHJlY0lkOm51bGwscmVjVGV4dDpudWxsLG1ldGhvZDpudWxsLGludGVydmFsOjM1MCxwb3N0RGF0YTp7fSxtaW5MZW5ndGg6MSxjYWNoZU1heDoyNTAsbWF4RHJvcEhlaWdodDozNTAsbWF4RHJvcFdpZHRoOm51bGwsbWF0Y2g6ImJlZ2lucyIsc2lsZW50OiEwLGljb246bnVsbCxpY29uU3R5bGU6IiIsYWxpZ246ImJvdGgiLGFsdFJvd3M6ITAsb25TZWFyY2g6bnVsbCxvblJlcXVlc3Q6bnVsbCxvbkxvYWQ6bnVsbCxvbkVycm9yOm51bGwsb25JY29uQ2xpY2s6bnVsbCxyZW5kZXJEcm9wOm51bGwsY29tcGFyZTpudWxsLGZpbHRlcjohMCxwcmVmaXg6IiIsc3VmZml4OiIiLG9wZW5PbkZvY3VzOiExLG1hcmtTZWFyY2g6ITF9LCJmdW5jdGlvbiI9PXR5cGVvZiBpLml0ZW1zJiYoaS5faXRlbXNfZnVuPWkuaXRlbXMpLGkuaXRlbXM9dzJvYmouZmllbGQucHJvdG90eXBlLm5vcm1NZW51LmNhbGwodGhpcyxpLml0ZW1zKSwibGlzdCI9PT10aGlzLnR5cGUpe2lmKGUub3Blbk9uRm9jdXM9ITAsYih0aGlzLmVsKS5hZGRDbGFzcygidzJ1aS1zZWxlY3QiKSwhYi5pc1BsYWluT2JqZWN0KGkuc2VsZWN0ZWQpJiZBcnJheS5pc0FycmF5KGkuaXRlbXMpKWZvcih2YXIgcz0wO3M8aS5pdGVtcy5sZW5ndGg7cysrKXt2YXIgbj1pLml0ZW1zW3NdO2lmKG4mJm4uaWQ9PT1pLnNlbGVjdGVkKXtpLnNlbGVjdGVkPWIuZXh0ZW5kKCEwLHt9LG4pO2JyZWFrfX10aGlzLndhdGNoU2l6ZSgpfWk9Yi5leHRlbmQoe30sZSxpKSx0aGlzLm9wdGlvbnM9aSxiLmlzUGxhaW5PYmplY3QoaS5zZWxlY3RlZCl8fChpLnNlbGVjdGVkPXt9KSxiKHRoaXMuZWwpLmRhdGEoInNlbGVjdGVkIixpLnNlbGVjdGVkKSxpLnVybCYmKGkuaXRlbXM9W10sdGhpcy5yZXF1ZXN0KDApKSwibGlzdCI9PT10aGlzLnR5cGUmJnRoaXMuYWRkRm9jdXMoKSx0aGlzLmFkZFByZWZpeCgpLHRoaXMuYWRkU3VmZml4KCksc2V0VGltZW91dChmdW5jdGlvbigpe3QucmVmcmVzaCgpfSwxMCksYih0aGlzLmVsKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKSxudWxsIT1pLnNlbGVjdGVkLnRleHQmJmIodGhpcy5lbCkudmFsKGkuc2VsZWN0ZWQudGV4dCk7YnJlYWs7Y2FzZSJlbnVtIjplPXtpdGVtczpbXSxzZWxlY3RlZDpbXSxtYXg6MCx1cmw6bnVsbCxyZWNJZDpudWxsLHJlY1RleHQ6bnVsbCxpbnRlcnZhbDozNTAsbWV0aG9kOm51bGwscG9zdERhdGE6e30sbWluTGVuZ3RoOjEsY2FjaGVNYXg6MjUwLG1heFdpZHRoOjI1MCxtYXhIZWlnaHQ6MzUwLG1heERyb3BIZWlnaHQ6MzUwLG1heERyb3BXaWR0aDpudWxsLG1hdGNoOiJjb250YWlucyIsc2lsZW50OiEwLGFsaWduOiJib3RoIixhbHRSb3dzOiEwLG9wZW5PbkZvY3VzOiExLG1hcmtTZWFyY2g6ITAscmVuZGVyRHJvcDpudWxsLHJlbmRlckl0ZW06bnVsbCxjb21wYXJlOm51bGwsZmlsdGVyOiEwLHN0eWxlOiIiLG9uU2VhcmNoOm51bGwsb25SZXF1ZXN0Om51bGwsb25Mb2FkOm51bGwsb25FcnJvcjpudWxsLG9uQ2xpY2s6bnVsbCxvbkFkZDpudWxsLG9uTmV3Om51bGwsb25SZW1vdmU6bnVsbCxvbk1vdXNlT3ZlcjpudWxsLG9uTW91c2VPdXQ6bnVsbCxvblNjcm9sbDpudWxsfSwiZnVuY3Rpb24iPT10eXBlb2YoaT1iLmV4dGVuZCh7fSxlLGkse3N1ZmZpeDoiIn0pKS5pdGVtcyYmKGkuX2l0ZW1zX2Z1bj1pLml0ZW1zKSxpLml0ZW1zPXcyb2JqLmZpZWxkLnByb3RvdHlwZS5ub3JtTWVudS5jYWxsKHRoaXMsaS5pdGVtcyksaS5zZWxlY3RlZD13Mm9iai5maWVsZC5wcm90b3R5cGUubm9ybU1lbnUuY2FsbCh0aGlzLGkuc2VsZWN0ZWQpLHRoaXMub3B0aW9ucz1pLGIuaXNBcnJheShpLnNlbGVjdGVkKXx8KGkuc2VsZWN0ZWQ9W10pLGIodGhpcy5lbCkuZGF0YSgic2VsZWN0ZWQiLGkuc2VsZWN0ZWQpLGkudXJsJiYoaS5pdGVtcz1bXSx0aGlzLnJlcXVlc3QoMCkpLHRoaXMuYWRkU3VmZml4KCksdGhpcy5hZGRNdWx0aSgpLHRoaXMud2F0Y2hTaXplKCk7YnJlYWs7Y2FzZSJmaWxlIjplPXtzZWxlY3RlZDpbXSxtYXg6MCxtYXhTaXplOjAsbWF4RmlsZVNpemU6MCxtYXhXaWR0aDoyNTAsbWF4SGVpZ2h0OjM1MCxtYXhEcm9wSGVpZ2h0OjM1MCxtYXhEcm9wV2lkdGg6bnVsbCxyZWFkQ29udGVudDohMCxzaWxlbnQ6ITAsYWxpZ246ImJvdGgiLGFsdFJvd3M6ITAscmVuZGVySXRlbTpudWxsLHN0eWxlOiIiLG9uQ2xpY2s6bnVsbCxvbkFkZDpudWxsLG9uUmVtb3ZlOm51bGwsb25Nb3VzZU92ZXI6bnVsbCxvbk1vdXNlT3V0Om51bGx9LGk9Yi5leHRlbmQoe30sZSxpKSx0aGlzLm9wdGlvbnM9aSxiLmlzQXJyYXkoaS5zZWxlY3RlZCl8fChpLnNlbGVjdGVkPVtdKSxiKHRoaXMuZWwpLmRhdGEoInNlbGVjdGVkIixpLnNlbGVjdGVkKSxudWxsPT1iKHRoaXMuZWwpLmF0dHIoInBsYWNlaG9sZGVyIikmJmIodGhpcy5lbCkuYXR0cigicGxhY2Vob2xkZXIiLHcydXRpbHMubGFuZygiQXR0YWNoIGZpbGVzIGJ5IGRyYWdnaW5nIGFuZCBkcm9wcGluZyBvciBDbGljayB0byBTZWxlY3QiKSksdGhpcy5hZGRNdWx0aSgpLHRoaXMud2F0Y2hTaXplKCl9dGhpcy50bXA9e29uQ2hhbmdlOmZ1bmN0aW9uKGUpe3QuY2hhbmdlLmNhbGwodCxlKX0sb25DbGljazpmdW5jdGlvbihlKXt0LmNsaWNrLmNhbGwodCxlKX0sb25Gb2N1czpmdW5jdGlvbihlKXt0LmZvY3VzLmNhbGwodCxlKX0sb25CbHVyOmZ1bmN0aW9uKGUpe3QuYmx1ci5jYWxsKHQsZSl9LG9uS2V5ZG93bjpmdW5jdGlvbihlKXt0LmtleURvd24uY2FsbCh0LGUpfSxvbktleXVwOmZ1bmN0aW9uKGUpe3Qua2V5VXAuY2FsbCh0LGUpfSxvbktleXByZXNzOmZ1bmN0aW9uKGUpe3Qua2V5UHJlc3MuY2FsbCh0LGUpfX0sYih0aGlzLmVsKS5hZGRDbGFzcygidzJmaWVsZCB3MnVpLWlucHV0IikuZGF0YSgidzJmaWVsZCIsdGhpcykub24oImNoYW5nZS53MmZpZWxkIix0aGlzLnRtcC5vbkNoYW5nZSkub24oImNsaWNrLncyZmllbGQiLHRoaXMudG1wLm9uQ2xpY2spLm9uKCJmb2N1cy53MmZpZWxkIix0aGlzLnRtcC5vbkZvY3VzKS5vbigiYmx1ci53MmZpZWxkIix0aGlzLnRtcC5vbkJsdXIpLm9uKCJrZXlkb3duLncyZmllbGQiLHRoaXMudG1wLm9uS2V5ZG93bikub24oImtleXVwLncyZmllbGQiLHRoaXMudG1wLm9uS2V5dXApLm9uKCJrZXlwcmVzcy53MmZpZWxkIix0aGlzLnRtcC5vbktleXByZXNzKS5jc3ModzJ1dGlscy5jc3NQcmVmaXgoImJveC1zaXppbmciLCJib3JkZXItYm94IikpLHRoaXMuY2hhbmdlKGIuRXZlbnQoImNoYW5nZSIpKX1lbHNlIGNvbnNvbGUubG9nKCJFUlJPUjogdzJmaWVsZCBjb3VsZCBvbmx5IGJlIGFwcGxpZWQgdG8gSU5QVVQgb3IgVEVYVEFSRUEuIix0aGlzLmVsKTtlbHNlIHRoaXMuY3VzdG9tW3RoaXMudHlwZV0uY2FsbCh0aGlzLGkpfSx3YXRjaFNpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YihlLmVsKS5kYXRhKCJ0bXAiKXx8e307dC5zaXplVGltZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXswPGIoZS5lbCkucGFyZW50cygiYm9keSIpLmxlbmd0aD9lLnJlc2l6ZSgpOmNsZWFySW50ZXJ2YWwodC5zaXplVGltZXIpfSwyMDApLGIoZS5lbCkuZGF0YSgidG1wIix0KX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuLTEhPT1bImxpc3QiLCJlbnVtIiwiZmlsZSJdLmluZGV4T2YodGhpcy50eXBlKT9iKHRoaXMuZWwpLmRhdGEoInNlbGVjdGVkIik6Yih0aGlzLmVsKS52YWwoKX0sc2V0OmZ1bmN0aW9uKGUsdCl7aWYoLTEhPT1bImxpc3QiLCJlbnVtIiwiZmlsZSJdLmluZGV4T2YodGhpcy50eXBlKSl7aWYoImxpc3QiIT09dGhpcy50eXBlJiZ0KW51bGw9PWIodGhpcy5lbCkuZGF0YSgic2VsZWN0ZWQiKSYmYih0aGlzLmVsKS5kYXRhKCJzZWxlY3RlZCIsW10pLGIodGhpcy5lbCkuZGF0YSgic2VsZWN0ZWQiKS5wdXNoKGUpLGIodGhpcy5lbCkuY2hhbmdlKCk7ZWxzZXt2YXIgaT0iZW51bSI9PT10aGlzLnR5cGU/W2VdOmU7Yih0aGlzLmVsKS5kYXRhKCJzZWxlY3RlZCIsaSkuY2hhbmdlKCl9dGhpcy5yZWZyZXNoKCl9ZWxzZSBiKHRoaXMuZWwpLnZhbChlKX0sc2V0SW5kZXg6ZnVuY3Rpb24oZSx0KXtpZigtMSE9PVsibGlzdCIsImVudW0iXS5pbmRleE9mKHRoaXMudHlwZSkpe3ZhciBpPXRoaXMub3B0aW9ucy5pdGVtcztpZihpJiZpW2VdKXtpZigibGlzdCIhPT10aGlzLnR5cGUmJnQpbnVsbD09Yih0aGlzLmVsKS5kYXRhKCJzZWxlY3RlZCIpJiZiKHRoaXMuZWwpLmRhdGEoInNlbGVjdGVkIixbXSksYih0aGlzLmVsKS5kYXRhKCJzZWxlY3RlZCIpLnB1c2goaVtlXSksYih0aGlzLmVsKS5jaGFuZ2UoKTtlbHNle3ZhciBzPSJlbnVtIj09PXRoaXMudHlwZT9baVtlXV06aVtlXTtiKHRoaXMuZWwpLmRhdGEoInNlbGVjdGVkIixzKS5jaGFuZ2UoKX1yZXR1cm4gdGhpcy5yZWZyZXNoKCksITB9fXJldHVybiExfSxjbGVhcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9uczstMSE9PVsibW9uZXkiLCJjdXJyZW5jeSJdLmluZGV4T2YodGhpcy50eXBlKSYmYih0aGlzLmVsKS52YWwoYih0aGlzLmVsKS52YWwoKS5yZXBsYWNlKGUubW9uZXlSRSwiIikpLCJwZXJjZW50Ij09PXRoaXMudHlwZSYmYih0aGlzLmVsKS52YWwoYih0aGlzLmVsKS52YWwoKS5yZXBsYWNlKC8lL2csIiIpKSwibGlzdCI9PT10aGlzLnR5cGUmJmIodGhpcy5lbCkucmVtb3ZlQ2xhc3MoIncydWktc2VsZWN0IiksdGhpcy50eXBlPSJjbGVhciI7dmFyIHQ9Yih0aGlzLmVsKS5kYXRhKCJ0bXAiKTtpZih0aGlzLnRtcCl7Zm9yKHZhciBpIGluIG51bGwhPXQmJihiKHRoaXMuZWwpLmhlaWdodCgiYXV0byIpLHQmJnRbIm9sZC1wYWRkaW5nLWxlZnQiXSYmYih0aGlzLmVsKS5jc3MoInBhZGRpbmctbGVmdCIsdFsib2xkLXBhZGRpbmctbGVmdCJdKSx0JiZ0WyJvbGQtcGFkZGluZy1yaWdodCJdJiZiKHRoaXMuZWwpLmNzcygicGFkZGluZy1yaWdodCIsdFsib2xkLXBhZGRpbmctcmlnaHQiXSksdCYmdFsib2xkLWJhY2tncm91bmQtY29sb3IiXSYmYih0aGlzLmVsKS5jc3MoImJhY2tncm91bmQtY29sb3IiLHRbIm9sZC1iYWNrZ3JvdW5kLWNvbG9yIl0pLHQmJnRbIm9sZC1ib3JkZXItY29sb3IiXSYmYih0aGlzLmVsKS5jc3MoImJvcmRlci1jb2xvciIsdFsib2xkLWJvcmRlci1jb2xvciJdKSxjbGVhckludGVydmFsKHQuc2l6ZVRpbWVyKSksYih0aGlzLmVsKS52YWwodGhpcy5jbGVhbihiKHRoaXMuZWwpLnZhbCgpKSkucmVtb3ZlQ2xhc3MoIncyZmllbGQiKS5yZW1vdmVEYXRhKCkub2ZmKCIudzJmaWVsZCIpLHRoaXMuaGVscGVycyliKHRoaXMuaGVscGVyc1tpXSkucmVtb3ZlKCk7dGhpcy5oZWxwZXJzPXt9fX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBsPXRoaXMsaT10aGlzLm9wdGlvbnMsbz1iKHRoaXMuZWwpLmRhdGEoInNlbGVjdGVkIiksZT0obmV3IERhdGUpLmdldFRpbWUoKTtpZigtMSE9PVsibGlzdCJdLmluZGV4T2YodGhpcy50eXBlKSYmKGIobC5lbCkucGFyZW50KCkuY3NzKCJ3aGl0ZS1zcGFjZSIsIm5vd3JhcCIpLGwuaGVscGVycy5wcmVmaXgmJmwuaGVscGVycy5wcmVmaXguaGlkZSgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihsLmhlbHBlcnMuZm9jdXMpeyFiLmlzRW1wdHlPYmplY3QobykmJmkuaWNvbj9pLnByZWZpeD0nPHNwYW4gY2xhc3M9IncydWktaWNvbiAnK2kuaWNvbisnInN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tdG9wOiAtMXB4OyBjb2xvcjogIzdGOThBRDsnK2kuaWNvblN0eWxlKyciPjwvc3Bhbj4nOmkucHJlZml4PSIiLGwuYWRkUHJlZml4KCk7dmFyIHQ9bC5oZWxwZXJzLmZvY3VzLmZpbmQoImlucHV0Iik7IiI9PT1iKHQpLnZhbCgpPyhiKHQpLmNzcygidGV4dC1pbmRlbnQiLCItOTk5OWVtIikucHJldigpLmNzcygib3BhY2l0eSIsMCksYihsLmVsKS52YWwobyYmbnVsbCE9by50ZXh0P3cydXRpbHMubGFuZyhvLnRleHQpOiIiKSk6KGIodCkuY3NzKCJ0ZXh0LWluZGVudCIsMCkucHJldigpLmNzcygib3BhY2l0eSIsMSksYihsLmVsKS52YWwoIiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLmhlbHBlcnMucHJlZml4JiZsLmhlbHBlcnMucHJlZml4LmhpZGUoKTt2YXIgZT0icG9zaXRpb246IGFic29sdXRlOyBvcGFjaXR5OiAwOyBtYXJnaW46IDRweCAwcHggMHB4IDJweDsgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCAhaW1wb3J0YW50OyI7aS5pY29uPyhiKHQpLmNzcygibWFyZ2luLWxlZnQiLCIxN3B4IiksYihsLmhlbHBlcnMuZm9jdXMpLmZpbmQoIi5pY29uLXNlYXJjaCIpLmF0dHIoInN0eWxlIixlKyJ3aWR0aDogMTFweCAhaW1wb3J0YW50OyBvcGFjaXR5OiAxOyBkaXNwbGF5OiBibG9jayIpKTooYih0KS5jc3MoIm1hcmdpbi1sZWZ0IiwiMHB4IiksYihsLmhlbHBlcnMuZm9jdXMpLmZpbmQoIi5pY29uLXNlYXJjaCIpLmF0dHIoInN0eWxlIixlKyJ3aWR0aDogMHB4ICFpbXBvcnRhbnQ7IG9wYWNpdHk6IDA7IGRpc3BsYXk6IG5vbmUiKSl9LDEpKSxiKGwuZWwpLnByb3AoInJlYWRvbmx5Iil8fGIobC5lbCkucHJvcCgiZGlzYWJsZWQiKT9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihsLmhlbHBlcnMucHJlZml4KS5jc3MoIm9wYWNpdHkiLCIwLjYiKSxiKGwuaGVscGVycy5zdWZmaXgpLmNzcygib3BhY2l0eSIsIjAuNiIpfSwxKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihsLmhlbHBlcnMucHJlZml4KS5jc3MoIm9wYWNpdHkiLCIxIiksYihsLmhlbHBlcnMuc3VmZml4KS5jc3MoIm9wYWNpdHkiLCIxIil9LDEpfX0sMSkpLC0xIT09WyJlbnVtIiwiZmlsZSJdLmluZGV4T2YodGhpcy50eXBlKSl7dmFyIHQ9IiI7aWYobylmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIG49b1tzXSxhPSIiO2E9ImZ1bmN0aW9uIj09dHlwZW9mIGkucmVuZGVySXRlbT9pLnJlbmRlckl0ZW0obixzLCc8ZGl2IGNsYXNzPSJ3MnVpLWxpc3QtcmVtb3ZlIiB0aXRsZT0iJyt3MnV0aWxzLmxhbmcoIlJlbW92ZSIpKyciIGluZGV4PSInK3MrJyI+JiMxNjA7JiMxNjA7PC9kaXY+Jyk6JzxkaXYgY2xhc3M9IncydWktbGlzdC1yZW1vdmUiIHRpdGxlPSInK3cydXRpbHMubGFuZygiUmVtb3ZlIikrJyIgaW5kZXg9IicrcysnIj4mIzE2MDsmIzE2MDs8L2Rpdj4nKygiZW51bSI9PT1sLnR5cGU/bi50ZXh0Om4ubmFtZSsnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+IC0gJyt3MnV0aWxzLmZvcm1hdFNpemUobi5zaXplKSsiPC9zcGFuPiIpLHQrPSc8bGkgaW5kZXg9IicrcysnIiBzdHlsZT0ibWF4LXdpZHRoOiAnK3BhcnNlSW50KGkubWF4V2lkdGgpKyJweDsgIisobi5zdHlsZT9uLnN0eWxlOiIiKSsnIj4nK2ErIjwvbGk+In12YXIgcj1sLmhlbHBlcnMubXVsdGksZD1yLmZpbmQoInVsIik7aWYoci5hdHRyKCJzdHlsZSIsci5hdHRyKCJzdHlsZSIpKyI7IitpLnN0eWxlKSxiKGwuZWwpLmNzcygiei1pbmRleCIsIi0xIiksYihsLmVsKS5wcm9wKCJyZWFkb25seSIpfHxiKGwuZWwpLnByb3AoImRpc2FibGVkIik/c2V0VGltZW91dChmdW5jdGlvbigpe3JbMF0uc2Nyb2xsVG9wPTAsci5hZGRDbGFzcygidzJ1aS1yZWFkb25seSIpLmZpbmQoImxpIikuY3NzKCJvcGFjaXR5IiwiMC45IikucGFyZW50KCkuZmluZCgibGkubm9tb3VzZSIpLmhpZGUoKS5maW5kKCJpbnB1dCIpLnByb3AoInJlYWRvbmx5IiwhMCkucGFyZW50cygidWwiKS5maW5kKCIudzJ1aS1saXN0LXJlbW92ZSIpLmhpZGUoKX0sMSk6c2V0VGltZW91dChmdW5jdGlvbigpe3IucmVtb3ZlQ2xhc3MoIncydWktcmVhZG9ubHkiKS5maW5kKCJsaSIpLmNzcygib3BhY2l0eSIsIjEiKS5wYXJlbnQoKS5maW5kKCJsaS5ub21vdXNlIikuc2hvdygpLmZpbmQoImlucHV0IikucHJvcCgicmVhZG9ubHkiLCExKS5wYXJlbnRzKCJ1bCIpLmZpbmQoIi53MnVpLWxpc3QtcmVtb3ZlIikuc2hvdygpfSwxKSxyLmZpbmQoIi53MnVpLWVudW0tcGxhY2Vob2xkZXIiKS5yZW1vdmUoKSxkLmZpbmQoImxpIikubm90KCJsaS5ub21vdXNlIikucmVtb3ZlKCksIiIhPT10KWQucHJlcGVuZCh0KTtlbHNlIGlmKG51bGwhPWIobC5lbCkuYXR0cigicGxhY2Vob2xkZXIiKSYmIiI9PT1yLmZpbmQoImlucHV0IikudmFsKCkpe3ZhciB1PSJwYWRkaW5nLXRvcDogIitiKHRoaXMuZWwpLmNzcygicGFkZGluZy10b3AiKSsiO3BhZGRpbmctbGVmdDogIitiKHRoaXMuZWwpLmNzcygicGFkZGluZy1sZWZ0IikrIjsgYm94LXNpemluZzogIitiKHRoaXMuZWwpLmNzcygiYm94LXNpemluZyIpKyI7IGxpbmUtaGVpZ2h0OiAiK2IodGhpcy5lbCkuY3NzKCJsaW5lLWhlaWdodCIpKyI7IGZvbnQtc2l6ZTogIitiKHRoaXMuZWwpLmNzcygiZm9udC1zaXplIikrIjsgZm9udC1mYW1pbHk6ICIrYih0aGlzLmVsKS5jc3MoImZvbnQtZmFtaWx5IikrIjsgIjtyLnByZXBlbmQoJzxkaXYgY2xhc3M9IncydWktZW51bS1wbGFjZWhvbGRlciIgc3R5bGU9IicrdSsnIj4nK2IobC5lbCkuYXR0cigicGxhY2Vob2xkZXIiKSsiPC9kaXY+Iil9ci5vZmYoInNjcm9sbC53MmZpZWxkIikub24oInNjcm9sbC53MmZpZWxkIixmdW5jdGlvbihlKXt2YXIgdD1sLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InNjcm9sbCIsdGFyZ2V0OmwuZWwsb3JpZ2luYWxFdmVudDplfSk7ITAhPT10LmlzQ2FuY2VsbGVkJiZsLnRyaWdnZXIoYi5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKX0pLmZpbmQoImxpIikuZGF0YSgibW91c2UiLCJvdXQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciB0PSJMSSI9PT1lLnRhcmdldC50YWdOYW1lLnRvVXBwZXJDYXNlKCk/ZS50YXJnZXQ6YihlLnRhcmdldCkucGFyZW50cygiTEkiKSxpPW9bYih0KS5hdHRyKCJpbmRleCIpXTtpZighYih0KS5oYXNDbGFzcygibm9tb3VzZSIpKWlmKGUuc3RvcFByb3BhZ2F0aW9uKCksYihlLnRhcmdldCkuaGFzQ2xhc3MoIncydWktbGlzdC1yZW1vdmUiKSl7aWYoYihsLmVsKS5wcm9wKCJyZWFkb25seSIpfHxiKGwuZWwpLnByb3AoImRpc2FibGVkIikpcmV0dXJuO2lmKCEwPT09KHM9bC50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZW1vdmUiLHRhcmdldDpsLmVsLG9yaWdpbmFsRXZlbnQ6ZS5vcmlnaW5hbEV2ZW50LGl0ZW06aX0pKS5pc0NhbmNlbGxlZClyZXR1cm47YigpLncyb3ZlcmxheSgpLG8uc3BsaWNlKGIoZS50YXJnZXQpLmF0dHIoImluZGV4IiksMSksYihsLmVsKS50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpLGIoZS50YXJnZXQpLnBhcmVudCgpLmZhZGVPdXQoImZhc3QiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5yZWZyZXNoKCksbC50cmlnZ2VyKGIuZXh0ZW5kKHMse3BoYXNlOiJhZnRlciJ9KSl9LDMwMCl9ZWxzZXt2YXIgcztpZighMD09PShzPWwudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiY2xpY2siLHRhcmdldDpsLmVsLG9yaWdpbmFsRXZlbnQ6ZS5vcmlnaW5hbEV2ZW50LGl0ZW06aX0pKS5pc0NhbmNlbGxlZClyZXR1cm47aWYoImZpbGUiPT09bC50eXBlKXt2YXIgbj0iIjsvaW1hZ2UvaS50ZXN0KGkudHlwZSkmJihuPSc8ZGl2IHN0eWxlPSJwYWRkaW5nOiAzcHg7Ij4gICAgPGltZyBzcmM9IicrKGkuY29udGVudD8iZGF0YToiK2kudHlwZSsiO2Jhc2U2NCwiK2kuY29udGVudDoiIikrJyIgc3R5bGU9Im1heC13aWR0aDogMzAwcHg7IiAgICAgICAgIG9ubG9hZD0idmFyIHcgPSBqUXVlcnkodGhpcykud2lkdGgoKTsgdmFyIGggPSBqUXVlcnkodGhpcykuaGVpZ2h0KCk7ICAgICAgICAgICAgIGlmICh3IDwgMzAwICYgaCA8IDMwMCkgcmV0dXJuOyAgICAgICAgICAgICBpZiAodyA+PSBoICYmIHcgPiAzMDApIGpRdWVyeSh0aGlzKS53aWR0aCgzMDApOyAgICAgICAgICAgIGlmICh3IDwgaCAmJiBoID4gMzAwKSBqUXVlcnkodGhpcykuaGVpZ2h0KDMwMCk7IiAgICAgICAgb25lcnJvcj0idGhpcy5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCciICAgID48L2Rpdj4nKTt2YXIgYT0nc3R5bGU9InBhZGRpbmc6IDNweDsgdGV4dC1hbGlnbjogcmlnaHQ7IGNvbG9yOiAjNzc3OyInLHI9J3N0eWxlPSJwYWRkaW5nOiAzcHgiJztuKz0nPGRpdiBzdHlsZT0icGFkZGluZzogOHB4OyI+ICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMiI+PHRib2R5PiAgICA8dHI+PHRkICcrYSsiPiIrdzJ1dGlscy5sYW5nKCJOYW1lIikrIjo8L3RkPjx0ZCAiK3IrIj4iK2kubmFtZSsiPC90ZD48L3RyPiAgICA8dHI+PHRkICIrYSsiPiIrdzJ1dGlscy5sYW5nKCJTaXplIikrIjo8L3RkPjx0ZCAiK3IrIj4iK3cydXRpbHMuZm9ybWF0U2l6ZShpLnNpemUpKyI8L3RkPjwvdHI+ICAgIDx0cj48dGQgIithKyI+Iit3MnV0aWxzLmxhbmcoIlR5cGUiKSsiOjwvdGQ+PHRkICIrcisnPiAgICAgICAgPHNwYW4gc3R5bGU9IndpZHRoOiAyMDBweDsgZGlzcGxheTogYmxvY2staW5saW5lOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgd2hpdGUtc3BhY2U6IG5vd3JhcD0ibm93cmFwIjsiPicraS50eXBlKyI8L3NwYW4+ICAgIDwvdGQ+PC90cj4gICAgPHRyPjx0ZCAiK2ErIj4iK3cydXRpbHMubGFuZygiTW9kaWZpZWQiKSsiOjwvdGQ+PHRkICIrcisiPiIrdzJ1dGlscy5kYXRlKGkubW9kaWZpZWQpKyI8L3RkPjwvdHI+ICAgIDwvdGJvZHk+PC90YWJsZT48L2Rpdj4iLGIoIiN3MnVpLW92ZXJsYXkiKS5yZW1vdmUoKSxiKHQpLncyb3ZlcmxheShuKX1sLnRyaWdnZXIoYi5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKX19KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlKXt2YXIgdD0iTEkiPT09ZS50YXJnZXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpP2UudGFyZ2V0OmIoZS50YXJnZXQpLnBhcmVudHMoIkxJIik7aWYoIWIodCkuaGFzQ2xhc3MoIm5vbW91c2UiKSl7aWYoIm91dCI9PT1iKHQpLmRhdGEoIm1vdXNlIikpe3ZhciBpPW9bYihlLnRhcmdldCkuYXR0cigiaW5kZXgiKV0scz1sLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im1vdXNlT3ZlciIsdGFyZ2V0OmwuZWwsb3JpZ2luYWxFdmVudDplLm9yaWdpbmFsRXZlbnQsaXRlbTppfSk7aWYoITA9PT1zLmlzQ2FuY2VsbGVkKXJldHVybjtsLnRyaWdnZXIoYi5leHRlbmQocyx7cGhhc2U6ImFmdGVyIn0pKX1iKHQpLmRhdGEoIm1vdXNlIiwib3ZlciIpfX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oaSl7dmFyIHM9IkxJIj09PWkudGFyZ2V0LnRhZ05hbWUudG9VcHBlckNhc2UoKT9pLnRhcmdldDpiKGkudGFyZ2V0KS5wYXJlbnRzKCJMSSIpO2IocykuaGFzQ2xhc3MoIm5vbW91c2UiKXx8KGIocykuZGF0YSgibW91c2UiLCJsZWF2aW5nIiksc2V0VGltZW91dChmdW5jdGlvbigpe2lmKCJsZWF2aW5nIj09PWIocykuZGF0YSgibW91c2UiKSl7YihzKS5kYXRhKCJtb3VzZSIsIm91dCIpO3ZhciBlPW9bYihpLnRhcmdldCkuYXR0cigiaW5kZXgiKV0sdD1sLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Im1vdXNlT3V0Iix0YXJnZXQ6bC5lbCxvcmlnaW5hbEV2ZW50Omkub3JpZ2luYWxFdmVudCxpdGVtOmV9KTtpZighMD09PXQuaXNDYW5jZWxsZWQpcmV0dXJuO2wudHJpZ2dlcihiLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpfX0sMCkpfSksYih0aGlzLmVsKS5oZWlnaHQoImF1dG8iKTt2YXIgYz1iKHIpLmZpbmQoIj4gZGl2LncydWktbXVsdGktaXRlbXMiKS5oZWlnaHQoKSsyKncydXRpbHMuZ2V0U2l6ZShyLCIraGVpZ2h0Iik7YzwyNiYmKGM9MjYpLGM+aS5tYXhIZWlnaHQmJihjPWkubWF4SGVpZ2h0KSwwPHIubGVuZ3RoJiYoclswXS5zY3JvbGxUb3A9MWUzKTt2YXIgaD13MnV0aWxzLmdldFNpemUoYih0aGlzLmVsKSwiaGVpZ2h0IiktMjtpZihjPGgmJihjPWgpLGIocikuY3NzKHtoZWlnaHQ6YysicHgiLG92ZXJmbG93OmM9PWkubWF4SGVpZ2h0PyJhdXRvIjoiaGlkZGVuIn0pLGM8aS5tYXhIZWlnaHQmJmIocikucHJvcCgic2Nyb2xsVG9wIiwwKSxiKHRoaXMuZWwpLmNzcyh7aGVpZ2h0OmMrMCsicHgifSksImVudW0iPT09bC50eXBlKXt2YXIgcD1sLmhlbHBlcnMubXVsdGkuZmluZCgiaW5wdXQiKTtwLndpZHRoKDgqKHAudmFsKCkubGVuZ3RoKzIpKyJweCIpfX1yZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKS1lfSxyZXNldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudHlwZTt0aGlzLmNsZWFyKCksdGhpcy50eXBlPWUsdGhpcy5pbml0KCl9LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1iKGUuZWwpLndpZHRoKCksaT1iKGUuZWwpLmhlaWdodCgpO2lmKCEoZS50bXAuY3VycmVudF93aWR0aD09dCYmMDxpKSl7dmFyIHM9dGhpcy5oZWxwZXJzLmZvY3VzLG49dGhpcy5oZWxwZXJzLm11bHRpLGE9dGhpcy5oZWxwZXJzLnN1ZmZpeCxyPXRoaXMuaGVscGVycy5wcmVmaXg7aWYocyYmcy53aWR0aChiKGUuZWwpLndpZHRoKCkpLG4pe3ZhciBsPXcydXRpbHMuZ2V0U2l6ZShlLmVsLCJ3aWR0aCIpLXBhcnNlSW50KGIoZS5lbCkuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKS1wYXJzZUludChiKGUuZWwpLmNzcygibWFyZ2luLXJpZ2h0IiksMTApO2Iobikud2lkdGgobCl9YSYmKGUub3B0aW9ucy5zdWZmaXg9JzxkaXYgY2xhc3M9ImFycm93LWRvd24iIHN0eWxlPSJtYXJnaW4tdG9wOiAnKyhwYXJzZUludChiKGUuZWwpLmhlaWdodCgpKS02KS8yKydweDsiPjwvZGl2PicsZS5hZGRTdWZmaXgoKSksciYmZS5hZGRQcmVmaXgoKSxlLnRtcC5jdXJyZW50X3dpZHRoPXR9fSxjbGVhbjpmdW5jdGlvbihlKXtpZigibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybiBlPVN0cmluZyhlKS50cmltKCksLTEhPT1bImludCIsImZsb2F0IiwibW9uZXkiLCJjdXJyZW5jeSIsInBlcmNlbnQiXS5pbmRleE9mKHRoaXMudHlwZSkmJigic3RyaW5nIj09dHlwZW9mIGUmJih0LmF1dG9Gb3JtYXQmJi0xIT09WyJtb25leSIsImN1cnJlbmN5Il0uaW5kZXhPZih0aGlzLnR5cGUpJiYoZT1TdHJpbmcoZSkucmVwbGFjZSh0Lm1vbmV5UkUsIiIpKSx0LmF1dG9Gb3JtYXQmJiJwZXJjZW50Ij09PXRoaXMudHlwZSYmKGU9U3RyaW5nKGUpLnJlcGxhY2UodC5wZXJjZW50UkUsIiIpKSx0LmF1dG9Gb3JtYXQmJi0xIT09WyJpbnQiLCJmbG9hdCJdLmluZGV4T2YodGhpcy50eXBlKSYmKGU9U3RyaW5nKGUpLnJlcGxhY2UodC5udW1iZXJSRSwiIikpLGU9ZS5yZXBsYWNlKC9ccysvZywiIikucmVwbGFjZSh3MnV0aWxzLnNldHRpbmdzLmdyb3VwU3ltYm9sLCIiKS5yZXBsYWNlKHcydXRpbHMuc2V0dGluZ3MuZGVjaW1hbFN5bWJvbCwiLiIpKSxwYXJzZUZsb2F0KGUpPT1lJiYobnVsbCE9dC5taW4mJmU8dC5taW4mJihlPXQubWluLGIodGhpcy5lbCkudmFsKHQubWluKSksbnVsbCE9dC5tYXgmJmU+dC5tYXgmJihlPXQubWF4LGIodGhpcy5lbCkudmFsKHQubWF4KSkpLGU9IiIhPT1lJiZ3MnV0aWxzLmlzRmxvYXQoZSk/TnVtYmVyKGUpOiIiKSxlfSxmb3JtYXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zO2lmKHQuYXV0b0Zvcm1hdCYmIiIhPT1lKXN3aXRjaCh0aGlzLnR5cGUpe2Nhc2UibW9uZXkiOmNhc2UiY3VycmVuY3kiOiIiIT09KGU9dzJ1dGlscy5mb3JtYXROdW1iZXIoZSx0LmN1cnJlbmN5UHJlY2lzaW9uLHQuZ3JvdXBTeW1ib2wpKSYmKGU9dC5jdXJyZW5jeVByZWZpeCtlK3QuY3VycmVuY3lTdWZmaXgpO2JyZWFrO2Nhc2UicGVyY2VudCI6IiIhPT0oZT13MnV0aWxzLmZvcm1hdE51bWJlcihlLHQucHJlY2lzaW9uLHQuZ3JvdXBTeW1ib2wpKSYmKGUrPSIlIik7YnJlYWs7Y2FzZSJmbG9hdCI6ZT13MnV0aWxzLmZvcm1hdE51bWJlcihlLHQucHJlY2lzaW9uLHQuZ3JvdXBTeW1ib2wpO2JyZWFrO2Nhc2UiaW50IjplPXcydXRpbHMuZm9ybWF0TnVtYmVyKGUsMCx0Lmdyb3VwU3ltYm9sKX1yZXR1cm4gZX0sY2hhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnM7aWYoLTEhPT1bImludCIsImZsb2F0IiwibW9uZXkiLCJjdXJyZW5jeSIsInBlcmNlbnQiXS5pbmRleE9mKHRoaXMudHlwZSkpe3ZhciBzPWIodGhpcy5lbCkudmFsKCksbj10aGlzLmZvcm1hdCh0aGlzLmNsZWFuKGIodGhpcy5lbCkudmFsKCkpKTtpZigiIiE9PXMmJnMhPW4pcmV0dXJuIGIodGhpcy5lbCkudmFsKG4pLmNoYW5nZSgpLGUuc3RvcFByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLCExfWlmKCJjb2xvciI9PT10aGlzLnR5cGUpe3ZhciBhPWIodGhpcy5lbCkudmFsKCk7InJnYiIhPT1hLnN1YnN0cigwLDMpLnRvTG93ZXJDYXNlKCkmJihhPSIjIithLDYhPT1iKHRoaXMuZWwpLnZhbCgpLmxlbmd0aCYmMyE9PWIodGhpcy5lbCkudmFsKCkubGVuZ3RoJiYoYT0iIikpLGIodGhpcy5lbCkubmV4dCgpLmZpbmQoImRpdiIpLmNzcygiYmFja2dyb3VuZC1jb2xvciIsYSksYih0aGlzLmVsKS5pcygiOmZvY3VzIikmJiEwIT09Yih0aGlzLmVsKS5kYXRhKCJza2lwSW5pdCIpJiZ0aGlzLnVwZGF0ZU92ZXJsYXkoKX1pZigtMSE9PVsibGlzdCIsImVudW0iLCJmaWxlIl0uaW5kZXhPZih0aGlzLnR5cGUpJiYodC5yZWZyZXNoKCksc2V0VGltZW91dChmdW5jdGlvbigpe3QucmVmcmVzaCgpfSw1KSksLTEhPT1bImRhdGUiLCJ0aW1lIiwiZGF0ZXRpbWUiXS5pbmRleE9mKHRoaXMudHlwZSkpe3ZhciByPXBhcnNlSW50KHQuZWwudmFsdWUpO3cydXRpbHMuaXNJbnQodC5lbC52YWx1ZSkmJjNlMzxyJiYoInRpbWUiPT09dGhpcy50eXBlJiZiKHQuZWwpLnZhbCh3MnV0aWxzLmZvcm1hdFRpbWUobmV3IERhdGUociksaS5mb3JtYXQpKS5jaGFuZ2UoKSwiZGF0ZSI9PT10aGlzLnR5cGUmJmIodC5lbCkudmFsKHcydXRpbHMuZm9ybWF0RGF0ZShuZXcgRGF0ZShyKSxpLmZvcm1hdCkpLmNoYW5nZSgpLCJkYXRldGltZSI9PT10aGlzLnR5cGUmJmIodC5lbCkudmFsKHcydXRpbHMuZm9ybWF0RGF0ZVRpbWUobmV3IERhdGUociksaS5mb3JtYXQpKS5jaGFuZ2UoKSl9fSxjbGljazpmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpLC0xIT09WyJsaXN0IiwiY29tYm8iLCJlbnVtIl0uaW5kZXhPZih0aGlzLnR5cGUpJiYoYih0aGlzLmVsKS5pcygiOmZvY3VzIil8fHRoaXMuZm9jdXMoZSkpLC0xIT09WyJkYXRlIiwidGltZSIsImNvbG9yIiwiZGF0ZXRpbWUiXS5pbmRleE9mKHRoaXMudHlwZSkmJnRoaXMudXBkYXRlT3ZlcmxheSgpfSxmb2N1czpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKC0xIT09WyJjb2xvciIsImRhdGUiLCJ0aW1lIiwiZGF0ZXRpbWUiXS5pbmRleE9mKHQudHlwZSkpe2lmKGIodC5lbCkucHJvcCgicmVhZG9ubHkiKXx8Yih0LmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjswPGIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJmIoIiN3MnVpLW92ZXJsYXkiKVswXS5oaWRlKCksc2V0VGltZW91dChmdW5jdGlvbigpe3QudXBkYXRlT3ZlcmxheSgpfSwxNTApfWlmKC0xIT09WyJsaXN0IiwiY29tYm8iLCJlbnVtIl0uaW5kZXhPZih0LnR5cGUpKXtpZihiKHQuZWwpLnByb3AoInJlYWRvbmx5Iil8fGIodC5lbCkucHJvcCgiZGlzYWJsZWQiKSlyZXR1cm47MDxiKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKCIjdzJ1aS1vdmVybGF5IilbMF0uaGlkZSgpLHQucmVzaXplKCksc2V0VGltZW91dChmdW5jdGlvbigpeyJsaXN0Ij09PXQudHlwZSYmYih0LmVsKS5pcygiOmZvY3VzIik/Yih0LmhlbHBlcnMuZm9jdXMpLmZpbmQoImlucHV0IikuZm9jdXMoKToodC5zZWFyY2goKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC51cGRhdGVPdmVybGF5KCl9LDEpKX0sMSksImZ1bmN0aW9uIj09dHlwZW9mIHQub3B0aW9ucy5faXRlbXNfZnVuJiYodC5vcHRpb25zLml0ZW1zPXcyb2JqLmZpZWxkLnByb3RvdHlwZS5ub3JtTWVudS5jYWxsKHRoaXMsdC5vcHRpb25zLl9pdGVtc19mdW4pKX0iZmlsZSI9PT10LnR5cGUmJmIodC5oZWxwZXJzLm11bHRpKS5jc3Moe291dGxpbmU6ImF1dG8gNXB4ICM3REI0RjMiLCJvdXRsaW5lLW9mZnNldCI6Ii0ycHgifSl9LGJsdXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQub3B0aW9ucyxzPWIodC5lbCkudmFsKCkudHJpbSgpLG49YigiI3cydWktb3ZlcmxheSIpO2lmKC0xIT09WyJjb2xvciIsImRhdGUiLCJ0aW1lIiwibGlzdCIsImNvbWJvIiwiZW51bSIsImRhdGV0aW1lIl0uaW5kZXhPZih0LnR5cGUpKXt2YXIgYT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpeyEwIT09bi5kYXRhKCJrZWVwT3BlbiIpJiZuLmhpZGUoKX0sMCk7YigiLm1lbnUiLG4pLm9uZSgiZm9jdXMiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEpLGIodGhpcykub25lKCJmb2N1c291dCIsZnVuY3Rpb24oZSl7bi5oaWRlKCl9KX0pfS0xIT09WyJpbnQiLCJmbG9hdCIsIm1vbmV5IiwiY3VycmVuY3kiLCJwZXJjZW50Il0uaW5kZXhPZih0LnR5cGUpJiYoIiI9PT1zfHx0LmNoZWNrVHlwZShzKXx8KGIodC5lbCkudmFsKCIiKS5jaGFuZ2UoKSwhMT09PWkuc2lsZW50JiYoYih0LmVsKS53MnRhZygiTm90IGEgdmFsaWQgbnVtYmVyIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IodC5lbCkudzJ0YWcoIiIpfSwzZTMpKSkpLC0xIT09WyJkYXRlIiwidGltZSIsImRhdGV0aW1lIl0uaW5kZXhPZih0LnR5cGUpJiYoIiI9PT1zfHx0LmluUmFuZ2UodC5lbC52YWx1ZSk/ImRhdGUiIT09dC50eXBlfHwiIj09PXN8fHcydXRpbHMuaXNEYXRlKHQuZWwudmFsdWUsaS5mb3JtYXQpPyJ0aW1lIiE9PXQudHlwZXx8IiI9PT1zfHx3MnV0aWxzLmlzVGltZSh0LmVsLnZhbHVlKT8iZGF0ZXRpbWUiIT09dC50eXBlfHwiIj09PXN8fHcydXRpbHMuaXNEYXRlVGltZSh0LmVsLnZhbHVlLGkuZm9ybWF0KXx8KGIodC5lbCkudmFsKCIiKS5yZW1vdmVEYXRhKCJzZWxlY3RlZCIpLmNoYW5nZSgpLCExPT09aS5zaWxlbnQmJihiKHQuZWwpLncydGFnKCJOb3QgYSB2YWxpZCBkYXRlIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IodC5lbCkudzJ0YWcoIiIpfSwzZTMpKSk6KGIodC5lbCkudmFsKCIiKS5yZW1vdmVEYXRhKCJzZWxlY3RlZCIpLmNoYW5nZSgpLCExPT09aS5zaWxlbnQmJihiKHQuZWwpLncydGFnKCJOb3QgYSB2YWxpZCB0aW1lIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IodC5lbCkudzJ0YWcoIiIpfSwzZTMpKSk6KGIodC5lbCkudmFsKCIiKS5yZW1vdmVEYXRhKCJzZWxlY3RlZCIpLmNoYW5nZSgpLCExPT09aS5zaWxlbnQmJihiKHQuZWwpLncydGFnKCJOb3QgYSB2YWxpZCBkYXRlIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IodC5lbCkudzJ0YWcoIiIpfSwzZTMpKSk6KGIodC5lbCkudmFsKCIiKS5yZW1vdmVEYXRhKCJzZWxlY3RlZCIpLmNoYW5nZSgpLCExPT09aS5zaWxlbnQmJihiKHQuZWwpLncydGFnKCJOb3QgaW4gcmFuZ2UiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yih0LmVsKS53MnRhZygiIil9LDNlMykpKSksImVudW0iPT09dC50eXBlJiZiKHQuaGVscGVycy5tdWx0aSkuZmluZCgiaW5wdXQiKS52YWwoIiIpLndpZHRoKDIwKSwiZmlsZSI9PT10LnR5cGUmJmIodC5oZWxwZXJzLm11bHRpKS5jc3Moe291dGxpbmU6Im5vbmUifSl9LGtleVByZXNzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dC5vcHRpb25zO2lmKC0xIT09WyJpbnQiLCJmbG9hdCIsIm1vbmV5IiwiY3VycmVuY3kiLCJwZXJjZW50IiwiaGV4IiwiYmluIiwiY29sb3IiLCJhbHBoYW51bWVyaWMiXS5pbmRleE9mKHQudHlwZSkpe2lmKGUubWV0YUtleXx8ZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5jaGFyQ29kZSE9ZS5rZXlDb2RlJiYwPGUua2V5Q29kZSlyZXR1cm47dmFyIGk9U3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlKTtpZighdC5jaGVja1R5cGUoaSwhMCkmJjEzIT1lLmtleUNvZGUpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwLCExfS0xIT09WyJkYXRlIiwidGltZSIsImRhdGV0aW1lIl0uaW5kZXhPZih0LnR5cGUpJiY5IT09ZS5rZXlDb2RlJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC51cGRhdGVPdmVybGF5KCl9LDEpfSxrZXlEb3duOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxzPWkub3B0aW9ucyxuPWUua2V5Q29kZXx8dCYmdC5rZXlDb2RlLGE9ITE7aWYoLTEhPT1bImludCIsImZsb2F0IiwibW9uZXkiLCJjdXJyZW5jeSIsInBlcmNlbnQiXS5pbmRleE9mKGkudHlwZSkpe2lmKCFzLmtleWJvYXJkfHxiKGkuZWwpLnByb3AoInJlYWRvbmx5Iil8fGIoaS5lbCkucHJvcCgiZGlzYWJsZWQiKSlyZXR1cm47dmFyIHI9cGFyc2VGbG9hdChiKGkuZWwpLnZhbCgpLnJlcGxhY2Uocy5tb25leVJFLCIiKSl8fDAsbD1zLnN0ZXA7c3dpdGNoKChlLmN0cmxLZXl8fGUubWV0YUtleSkmJihsPTEwKSxuKXtjYXNlIDM4OmlmKGUuc2hpZnRLZXkpYnJlYWs7YihpLmVsKS52YWwocitsPD1zLm1heHx8bnVsbD09cy5tYXg/TnVtYmVyKChyK2wpLnRvRml4ZWQoMTIpKTpzLm1heCkuY2hhbmdlKCksYT0hMDticmVhaztjYXNlIDQwOmlmKGUuc2hpZnRLZXkpYnJlYWs7YihpLmVsKS52YWwoci1sPj1zLm1pbnx8bnVsbD09cy5taW4/TnVtYmVyKChyLWwpLnRvRml4ZWQoMTIpKTpzLm1pbikuY2hhbmdlKCksYT0hMH1hJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLmVsLnNldFNlbGVjdGlvblJhbmdlKGkuZWwudmFsdWUubGVuZ3RoLGkuZWwudmFsdWUubGVuZ3RoKX0sMCkpfWlmKCJkYXRlIj09PWkudHlwZSl7aWYoIXMua2V5Ym9hcmR8fGIoaS5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihpLmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjt2YXIgbz04NjRlNTtsPTE7c3dpdGNoKChlLmN0cmxLZXl8fGUubWV0YUtleSkmJihsPTEwKSwoYz13MnV0aWxzLmlzRGF0ZShiKGkuZWwpLnZhbCgpLHMuZm9ybWF0LCEwKSl8fChjPW5ldyBEYXRlLG89MCksbil7Y2FzZSAzODppZihlLnNoaWZ0S2V5KWJyZWFrO3ZhciBkPXcydXRpbHMuZm9ybWF0RGF0ZShjLmdldFRpbWUoKStvLHMuZm9ybWF0KTsxMD09bCYmKGQ9dzJ1dGlscy5mb3JtYXREYXRlKG5ldyBEYXRlKGMuZ2V0RnVsbFllYXIoKSxjLmdldE1vbnRoKCkrMSxjLmdldERhdGUoKSkscy5mb3JtYXQpKSxiKGkuZWwpLnZhbChkKS50cmlnZ2VyKCJpbnB1dCIpLmNoYW5nZSgpLGE9ITA7YnJlYWs7Y2FzZSA0MDppZihlLnNoaWZ0S2V5KWJyZWFrO2Q9dzJ1dGlscy5mb3JtYXREYXRlKGMuZ2V0VGltZSgpLW8scy5mb3JtYXQpOzEwPT1sJiYoZD13MnV0aWxzLmZvcm1hdERhdGUobmV3IERhdGUoYy5nZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKS0xLGMuZ2V0RGF0ZSgpKSxzLmZvcm1hdCkpLGIoaS5lbCkudmFsKGQpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCksYT0hMH1hJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLmVsLnNldFNlbGVjdGlvblJhbmdlKGkuZWwudmFsdWUubGVuZ3RoLGkuZWwudmFsdWUubGVuZ3RoKSxpLnVwZGF0ZU92ZXJsYXkoKX0sMCkpfWlmKCJ0aW1lIj09PWkudHlwZSl7aWYoIXMua2V5Ym9hcmR8fGIoaS5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihpLmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjtsPWUuY3RybEtleXx8ZS5tZXRhS2V5PzYwOjEscj1iKGkuZWwpLnZhbCgpO3ZhciB1PWkudG9NaW4ocil8fGkudG9NaW4oKG5ldyBEYXRlKS5nZXRIb3VycygpKyI6IisoKG5ldyBEYXRlKS5nZXRNaW51dGVzKCktMSkpO3N3aXRjaChuKXtjYXNlIDM4OmlmKGUuc2hpZnRLZXkpYnJlYWs7dSs9bCxhPSEwO2JyZWFrO2Nhc2UgNDA6aWYoZS5zaGlmdEtleSlicmVhazt1LT1sLGE9ITB9YSYmKGIoaS5lbCkudmFsKGkuZnJvbU1pbih1KSkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKSxlLnByZXZlbnREZWZhdWx0KCksc2V0VGltZW91dChmdW5jdGlvbigpe2kuZWwuc2V0U2VsZWN0aW9uUmFuZ2UoaS5lbC52YWx1ZS5sZW5ndGgsaS5lbC52YWx1ZS5sZW5ndGgpfSwwKSl9aWYoImRhdGV0aW1lIj09PWkudHlwZSl7aWYoIXMua2V5Ym9hcmR8fGIoaS5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihpLmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjtvPTg2NGU1LGw9MTsoZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiYobD0xMCk7dmFyIGMsaD1iKGkuZWwpLnZhbCgpO3N3aXRjaCgoYz13MnV0aWxzLmlzRGF0ZVRpbWUoaCx0aGlzLm9wdGlvbnMuZm9ybWF0LCEwKSl8fChjPW5ldyBEYXRlLG89MCksbil7Y2FzZSAzODppZihlLnNoaWZ0S2V5KWJyZWFrO2Q9dzJ1dGlscy5mb3JtYXREYXRlVGltZShjLmdldFRpbWUoKStvLHMuZm9ybWF0KTsxMD09bCYmKGQ9dzJ1dGlscy5mb3JtYXREYXRlVGltZShuZXcgRGF0ZShjLmdldEZ1bGxZZWFyKCksYy5nZXRNb250aCgpKzEsYy5nZXREYXRlKCkpLHMuZm9ybWF0KSksYihpLmVsKS52YWwoZCkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKSxhPSEwO2JyZWFrO2Nhc2UgNDA6aWYoZS5zaGlmdEtleSlicmVhaztkPXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUoYy5nZXRUaW1lKCktbyxzLmZvcm1hdCk7MTA9PWwmJihkPXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUobmV3IERhdGUoYy5nZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKS0xLGMuZ2V0RGF0ZSgpKSxzLmZvcm1hdCkpLGIoaS5lbCkudmFsKGQpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCksYT0hMH1hJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLmVsLnNldFNlbGVjdGlvblJhbmdlKGkuZWwudmFsdWUubGVuZ3RoLGkuZWwudmFsdWUubGVuZ3RoKSxpLnVwZGF0ZU92ZXJsYXkoKX0sMCkpfWlmKCJjb2xvciI9PT1pLnR5cGUpe2lmKGIoaS5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihpLmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjtpZigoZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiYhZS5zaGlmdEtleSl7dmFyIHA9bnVsbCxmPW51bGw7c3dpdGNoKG4pe2Nhc2UgMzg6cD0idXAiO2JyZWFrO2Nhc2UgNDA6cD0iZG93biI7YnJlYWs7Y2FzZSAzOTpwPSJyaWdodCI7YnJlYWs7Y2FzZSAzNzpwPSJsZWZ0In1pLmVsLm5hdiYmbnVsbCE9cCYmKGY9aS5lbC5uYXYocCksYihpLmVsKS52YWwoZikuY2hhbmdlKCksZS5wcmV2ZW50RGVmYXVsdCgpKX19aWYoLTEhPT1bImxpc3QiLCJjb21ibyIsImVudW0iXS5pbmRleE9mKGkudHlwZSkpe2lmKGIoaS5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihpLmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjt2YXIgZz1iKGkuZWwpLmRhdGEoInNlbGVjdGVkIiksbT1iKGkuZWwpLHc9ITE7c3dpdGNoKC0xIT09WyJsaXN0IiwiZW51bSJdLmluZGV4T2YoaS50eXBlKSYmKCJsaXN0Ij09PWkudHlwZSYmKG09YihpLmhlbHBlcnMuZm9jdXMpLmZpbmQoImlucHV0IikpLCJlbnVtIj09PWkudHlwZSYmKG09YihpLmhlbHBlcnMubXVsdGkpLmZpbmQoImlucHV0IikpLC0xPT1bMzcsMzgsMzksNDBdLmluZGV4T2YobikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnJlZnJlc2goKX0sMSksODY9PWUua2V5Q29kZSYmKGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmc2V0VGltZW91dChmdW5jdGlvbigpe2kucmVmcmVzaCgpLGkuc2VhcmNoKCksaS5yZXF1ZXN0KCl9LDUwKSksbil7Y2FzZSAyNzoibGlzdCI9PT1pLnR5cGUmJigiIiE9PW0udmFsKCkmJm0udmFsKCIiKSxlLnN0b3BQcm9wYWdhdGlvbigpKTticmVhaztjYXNlIDM3OmNhc2UgMzk6YnJlYWs7Y2FzZSAxMzppZigwPT09YigiI3cydWktb3ZlcmxheSIpLmxlbmd0aClicmVhazt2YXIgdj1zLml0ZW1zW3MuaW5kZXhdO2lmKCJlbnVtIj09PWkudHlwZSlpZihudWxsIT12KXtpZighMD09PSh5PWkudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiYWRkIix0YXJnZXQ6aS5lbCxvcmlnaW5hbEV2ZW50OmUub3JpZ2luYWxFdmVudCxpdGVtOnZ9KSkuaXNDYW5jZWxsZWQpcmV0dXJuO3Y9eS5pdGVtLGcubGVuZ3RoPj1zLm1heCYmMDxzLm1heCYmZy5wb3AoKSxkZWxldGUgdi5oaWRkZW4sZGVsZXRlIGkudG1wLmZvcmNlX29wZW4sZy5wdXNoKHYpLGIoaS5lbCkuY2hhbmdlKCksbS52YWwoIiIpLndpZHRoKDIwKSxpLnJlZnJlc2goKSxpLnRyaWdnZXIoYi5leHRlbmQoeSx7cGhhc2U6ImFmdGVyIn0pKX1lbHNle2lmKHY9e2lkOm0udmFsKCksdGV4dDptLnZhbCgpfSwhMD09PSh5PWkudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToibmV3Iix0YXJnZXQ6aS5lbCxvcmlnaW5hbEV2ZW50OmUub3JpZ2luYWxFdmVudCxpdGVtOnZ9KSkuaXNDYW5jZWxsZWQpcmV0dXJuO3Y9eS5pdGVtLCJmdW5jdGlvbiI9PXR5cGVvZiBpLm9uTmV3JiYoZy5sZW5ndGg+PXMubWF4JiYwPHMubWF4JiZnLnBvcCgpLGRlbGV0ZSBpLnRtcC5mb3JjZV9vcGVuLGcucHVzaCh2KSxiKGkuZWwpLmNoYW5nZSgpLG0udmFsKCIiKS53aWR0aCgyMCksaS5yZWZyZXNoKCkpLGkudHJpZ2dlcihiLmV4dGVuZCh5LHtwaGFzZToiYWZ0ZXIifSkpfWVsc2UgdiYmYihpLmVsKS5kYXRhKCJzZWxlY3RlZCIsdikudmFsKHYudGV4dCkuY2hhbmdlKCksIiI9PT1iKGkuZWwpLnZhbCgpJiZiKGkuZWwpLmRhdGEoInNlbGVjdGVkIikmJmIoaS5lbCkucmVtb3ZlRGF0YSgic2VsZWN0ZWQiKS52YWwoIiIpLmNoYW5nZSgpLCJsaXN0Ij09PWkudHlwZSYmKG0udmFsKCIiKSxpLnJlZnJlc2goKSksaS50bXAuZm9yY2VfaGlkZT0hMDticmVhaztjYXNlIDg6Y2FzZSA0NjppZigiZW51bSI9PT1pLnR5cGUmJjg9PT1uJiYiIj09PW0udmFsKCkmJjA8Zy5sZW5ndGgpe3ZhciB5O3Y9Z1tnLmxlbmd0aC0xXTtpZighMD09PSh5PWkudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToicmVtb3ZlIix0YXJnZXQ6aS5lbCxvcmlnaW5hbEV2ZW50OmUub3JpZ2luYWxFdmVudCxpdGVtOnZ9KSkuaXNDYW5jZWxsZWQpcmV0dXJuO2cucG9wKCksYihpLmVsKS50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpLGkucmVmcmVzaCgpLGkudHJpZ2dlcihiLmV4dGVuZCh5LHtwaGFzZToiYWZ0ZXIifSkpfSJsaXN0Ij09PWkudHlwZSYmIiI9PT1tLnZhbCgpJiYoYihpLmVsKS5kYXRhKCJzZWxlY3RlZCIse30pLmNoYW5nZSgpLGkucmVmcmVzaCgpKTticmVhaztjYXNlIDM4OmZvcihzLmluZGV4PXcydXRpbHMuaXNJbnQocy5pbmRleCk/cGFyc2VJbnQocy5pbmRleCk6MCxzLmluZGV4LS07MDxzLmluZGV4JiZzLml0ZW1zW3MuaW5kZXhdLmhpZGRlbjspcy5pbmRleC0tO2lmKDA9PT1zLmluZGV4JiZzLml0ZW1zW3MuaW5kZXhdLmhpZGRlbilmb3IoO3MuaXRlbXNbcy5pbmRleF0mJnMuaXRlbXNbcy5pbmRleF0uaGlkZGVuOylzLmluZGV4Kys7dz0hMDticmVhaztjYXNlIDQwOmZvcihzLmluZGV4PXcydXRpbHMuaXNJbnQocy5pbmRleCk/cGFyc2VJbnQocy5pbmRleCk6LTEscy5pbmRleCsrO3MuaW5kZXg8cy5pdGVtcy5sZW5ndGgtMSYmcy5pdGVtc1tzLmluZGV4XS5oaWRkZW47KXMuaW5kZXgrKztpZihzLmluZGV4PT1zLml0ZW1zLmxlbmd0aC0xJiZzLml0ZW1zW3MuaW5kZXhdLmhpZGRlbilmb3IoO3MuaXRlbXNbcy5pbmRleF0mJnMuaXRlbXNbcy5pbmRleF0uaGlkZGVuOylzLmluZGV4LS07IiI9PT1tLnZhbCgpJiYwPT09YigiI3cydWktb3ZlcmxheSIpLmxlbmd0aD9pLnRtcC5mb3JjZV9vcGVuPSEwOnc9ITB9aWYodylyZXR1cm4gcy5pbmRleDwwJiYocy5pbmRleD0wKSxzLmluZGV4Pj1zLml0ZW1zLmxlbmd0aCYmKHMuaW5kZXg9cy5pdGVtcy5sZW5ndGgtMSksaS51cGRhdGVPdmVybGF5KHcpLGUucHJldmVudERlZmF1bHQoKSx2b2lkIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZigiZW51bSI9PT1pLnR5cGUpKGU9bS5nZXQoMCkpLnNldFNlbGVjdGlvblJhbmdlKGUudmFsdWUubGVuZ3RoLGUudmFsdWUubGVuZ3RoKTtlbHNlIGlmKCJsaXN0Ij09PWkudHlwZSl7dmFyIGU7KGU9bS5nZXQoMCkpLnNldFNlbGVjdGlvblJhbmdlKGUudmFsdWUubGVuZ3RoLGUudmFsdWUubGVuZ3RoKX1lbHNlIGkuZWwuc2V0U2VsZWN0aW9uUmFuZ2UoaS5lbC52YWx1ZS5sZW5ndGgsaS5lbC52YWx1ZS5sZW5ndGgpfSwwKTsiZW51bSI9PT1pLnR5cGUmJm0ud2lkdGgoOCoobS52YWwoKS5sZW5ndGgrMikrInB4Iil9fSxrZXlVcDpmdW5jdGlvbihlKXtpZigtMSE9PVsibGlzdCIsImNvbWJvIiwiZW51bSJdLmluZGV4T2YodGhpcy50eXBlKSl7aWYoYih0aGlzLmVsKS5wcm9wKCJyZWFkb25seSIpfHxiKHRoaXMuZWwpLnByb3AoImRpc2FibGVkIikpcmV0dXJuO2lmKC0xPT1bMTYsMTcsMTgsMjAsMzcsMzksOTFdLmluZGV4T2YoZS5rZXlDb2RlKSl7dmFyIHQ9Yih0aGlzLmhlbHBlcnMuZm9jdXMpLmZpbmQoImlucHV0Iik7MD09PXQubGVuZ3RoJiYodD1iKHRoaXMuZWwpKTt2YXIgaT10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InNlYXJjaCIsb3JpZ2luYWxFdmVudDplLHRhcmdldDp0LHNlYXJjaDp0LnZhbCgpfSk7aWYoITA9PT1pLmlzQ2FuY2VsbGVkKXJldHVybjt0aGlzLnRtcC5mb3JjZV9oaWRlfHx0aGlzLnJlcXVlc3QoKSwxPT10LnZhbCgpLmxlbmd0aCYmdGhpcy5yZWZyZXNoKCksMCE9PWIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJi0xIT1bMzgsNDBdLmluZGV4T2YoZS5rZXlDb2RlKXx8dGhpcy5zZWFyY2goKSx0aGlzLnRyaWdnZXIoYi5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKX19fSxjbGVhckNhY2hlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLml0ZW1zPVtdLHRoaXMudG1wLnhocl9sb2FkaW5nPSExLHRoaXMudG1wLnhocl9zZWFyY2g9IiIsdGhpcy50bXAueGhyX3RvdGFsPS0xfSxyZXF1ZXN0OmZ1bmN0aW9uKGUpe3ZhciBsPXRoaXMsbz10aGlzLm9wdGlvbnMsZD1iKGwuZWwpLnZhbCgpfHwiIjtpZihvLnVybCl7aWYoImVudW0iPT09bC50eXBlKXt2YXIgdD1iKGwuaGVscGVycy5tdWx0aSkuZmluZCgiaW5wdXQiKTtkPTA9PT10Lmxlbmd0aD8iIjp0LnZhbCgpfWlmKCJsaXN0Ij09PWwudHlwZSl7dD1iKGwuaGVscGVycy5mb2N1cykuZmluZCgiaW5wdXQiKTtkPTA9PT10Lmxlbmd0aD8iIjp0LnZhbCgpfWlmKDAhPT1vLm1pbkxlbmd0aCYmZC5sZW5ndGg8by5taW5MZW5ndGgpcmV0dXJuIG8uaXRlbXM9W10sdm9pZCB0aGlzLnVwZGF0ZU92ZXJsYXkoKTtudWxsPT1lJiYoZT1vLmludGVydmFsKSxudWxsPT1sLnRtcC54aHJfc2VhcmNoJiYobC50bXAueGhyX3NlYXJjaD0iIiksbnVsbD09bC50bXAueGhyX3RvdGFsJiYobC50bXAueGhyX3RvdGFsPS0xKSxvLnVybCYmKDA9PT1vLml0ZW1zLmxlbmd0aCYmMCE9PWwudG1wLnhocl90b3RhbHx8bC50bXAueGhyX3RvdGFsPT1vLmNhY2hlTWF4JiZkLmxlbmd0aD5sLnRtcC54aHJfc2VhcmNoLmxlbmd0aHx8ZC5sZW5ndGg+PWwudG1wLnhocl9zZWFyY2gubGVuZ3RoJiZkLnN1YnN0cigwLGwudG1wLnhocl9zZWFyY2gubGVuZ3RoKSE9PWwudG1wLnhocl9zZWFyY2h8fGQubGVuZ3RoPGwudG1wLnhocl9zZWFyY2gubGVuZ3RoKSYmKGwudG1wLnhociYmbC50bXAueGhyLmFib3J0KCksbC50bXAueGhyX2xvYWRpbmc9ITAsbC5zZWFyY2goKSxjbGVhclRpbWVvdXQobC50bXAudGltZW91dCksbC50bXAudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9by51cmwscj17c2VhcmNoOmQsbWF4Om8uY2FjaGVNYXh9O2IuZXh0ZW5kKHIsby5wb3N0RGF0YSk7dmFyIHQ9bC50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZXF1ZXN0IixzZWFyY2g6ZCx0YXJnZXQ6bC5lbCx1cmw6ZSxwb3N0RGF0YTpyfSk7aWYoITAhPT10LmlzQ2FuY2VsbGVkKXt2YXIgaT17dHlwZToiR0VUIix1cmw6ZT10LnVybCxkYXRhOnI9dC5wb3N0RGF0YSxkYXRhVHlwZToiSlNPTiJ9O28ubWV0aG9kJiYoaS50eXBlPW8ubWV0aG9kKSwiSlNPTiI9PT13MnV0aWxzLnNldHRpbmdzLmRhdGFUeXBlJiYoaS50eXBlPSJQT1NUIixpLmRhdGE9SlNPTi5zdHJpbmdpZnkoaS5kYXRhKSxpLmNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi9qc29uIiksIkhUVFBKU09OIj09PXcydXRpbHMuc2V0dGluZ3MuZGF0YVR5cGUmJihpLmRhdGE9e3JlcXVlc3Q6SlNPTi5zdHJpbmdpZnkoaS5kYXRhKX0pLG51bGwhPW8ubWV0aG9kJiYoaS50eXBlPW8ubWV0aG9kKSxsLnRtcC54aHI9Yi5hamF4KGkpLmRvbmUoZnVuY3Rpb24oZSx0LGkpe3ZhciBzPWwudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToibG9hZCIsdGFyZ2V0OmwuZWwsc2VhcmNoOnIuc2VhcmNoLGRhdGE6ZSx4aHI6aX0pO2lmKCEwIT09cy5pc0NhbmNlbGxlZClpZigic3RyaW5nIj09dHlwZW9mKGU9cy5kYXRhKSYmKGU9SlNPTi5wYXJzZShlKSksbnVsbD09ZS5yZWNvcmRzJiZudWxsIT1lLml0ZW1zJiYoZS5yZWNvcmRzPWUuaXRlbXMsZGVsZXRlIGUuaXRlbXMpLCJzdWNjZXNzIj09PWUuc3RhdHVzJiZudWxsPT1lLnJlY29yZHMmJihlLnJlY29yZHM9W10pLCJzdWNjZXNzIj09PWUuc3RhdHVzJiZBcnJheS5pc0FycmF5KGUucmVjb3Jkcykpe2UucmVjb3Jkcy5sZW5ndGg+by5jYWNoZU1heCYmZS5yZWNvcmRzLnNwbGljZShvLmNhY2hlTWF4LDFlNSksbnVsbD09by5yZWNJZCYmbnVsbCE9by5yZWNpZCYmKG8ucmVjSWQ9by5yZWNpZCksKG8ucmVjSWR8fG8ucmVjVGV4dCkmJmUucmVjb3Jkcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2Ygby5yZWNJZCYmKGUuaWQ9ZVtvLnJlY0lkXSksImZ1bmN0aW9uIj09dHlwZW9mIG8ucmVjSWQmJihlLmlkPW8ucmVjSWQoZSkpLCJzdHJpbmciPT10eXBlb2Ygby5yZWNUZXh0JiYoZS50ZXh0PWVbby5yZWNUZXh0XSksImZ1bmN0aW9uIj09dHlwZW9mIG8ucmVjVGV4dCYmKGUudGV4dD1vLnJlY1RleHQoZSkpfSksbC50bXAueGhyX2xvYWRpbmc9ITEsbC50bXAueGhyX3NlYXJjaD1kLGwudG1wLnhocl90b3RhbD1lLnJlY29yZHMubGVuZ3RoLGwudG1wLmxhc3RFcnJvcj0iIixvLml0ZW1zPWwubm9ybU1lbnUoZS5yZWNvcmRzKSwiIj09PWQmJjA9PT1lLnJlY29yZHMubGVuZ3RoP2wudG1wLmVtcHR5U2V0PSEwOmwudG1wLmVtcHR5U2V0PSExO3ZhciBuLGE9YihsLmVsKS5kYXRhKCJmaW5kX3NlbGVjdGVkIik7aWYoYSlBcnJheS5pc0FycmF5KGEpPyhuPVtdLGEuZm9yRWFjaChmdW5jdGlvbih0KXtvLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5pZD09dCYmbi5wdXNoKGIuZXh0ZW5kKCEwLHt9LGUpKX0pfSkpOm8uaXRlbXMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmlkPT1hJiYobj1lKX0pLGIobC5lbCkuZGF0YSgic2VsZWN0ZWQiLG4pLnJlbW92ZURhdGEoImZpbmRfc2VsZWN0ZWQiKS5jaGFuZ2UoKTtsLnNlYXJjaCgpLGwudHJpZ2dlcihiLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpfWVsc2UgY29uc29sZS5sb2coIkVSUk9SOiBzZXJ2ZXIgZGlkIG5vdCByZXR1cm4gcHJvcGVyIHN0cnVjdHVyZS4gSXQgc2hvdWxkIHJldHVybiIse3N0YXR1czoic3VjY2VzcyIscmVjb3Jkczpbe2lkOjEsdGV4dDoiaXRlbSJ9XX0pfSkuZmFpbChmdW5jdGlvbihlLHQsaSl7dmFyIHM9e3N0YXR1czp0LGVycm9yOmkscmF3UmVzcG9uc2VUZXh0OmUucmVzcG9uc2VUZXh0fSxuPWwudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZXJyb3IiLHRhcmdldDpsLmVsLHNlYXJjaDpkLGVycm9yOnMseGhyOmV9KTtpZighMCE9PW4uaXNDYW5jZWxsZWQpe2lmKCJhYm9ydCIhPT10KXt2YXIgYTt0cnl7YT1iLnBhcnNlSlNPTihlLnJlc3BvbnNlVGV4dCl9Y2F0Y2goZSl7fWNvbnNvbGUubG9nKCJFUlJPUjogU2VydmVyIGNvbW11bmljYXRpb24gZmFpbGVkLiIsIlxuICAgRVhQRUNURUQ6Iix7c3RhdHVzOiJzdWNjZXNzIixyZWNvcmRzOlt7aWQ6MSx0ZXh0OiJpdGVtIn1dfSwiXG4gICAgICAgICBPUjoiLHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOiJlcnJvciBtZXNzYWdlIn0sIlxuICAgUkVDRUlWRUQ6Iiwib2JqZWN0Ij09dHlwZW9mIGE/YTplLnJlc3BvbnNlVGV4dCl9bC50bXAueGhyX2xvYWRpbmc9ITEsbC50bXAueGhyX3NlYXJjaD1kLGwudG1wLnhocl90b3RhbD0wLGwudG1wLmVtcHR5U2V0PSEwLGwudG1wLmxhc3RFcnJvcj1uLmVycm9yfHwiU2VydmVyIGNvbW11bmljYXRpb24gZmFpbGVkIixvLml0ZW1zPVtdLGwuY2xlYXJDYWNoZSgpLGwuc2VhcmNoKCksbC51cGRhdGVPdmVybGF5KCExKSxsLnRyaWdnZXIoYi5leHRlbmQobix7cGhhc2U6ImFmdGVyIn0pKX19KSxsLnRyaWdnZXIoYi5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKX19LGUpKX19LHNlYXJjaDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLm9wdGlvbnMsaT1iKGUuZWwpLnZhbCgpLHM9ZS5lbCxuPVtdLGE9YihlLmVsKS5kYXRhKCJzZWxlY3RlZCIpO2lmKCJlbnVtIj09PWUudHlwZSlmb3IodmFyIHIgaW4gcz1iKGUuaGVscGVycy5tdWx0aSkuZmluZCgiaW5wdXQiKSxpPXMudmFsKCksYSlhW3JdJiZuLnB1c2goYVtyXS5pZCk7ZWxzZSBpZigibGlzdCI9PT1lLnR5cGUpZm9yKHZhciByIGluIHM9YihlLmhlbHBlcnMuZm9jdXMpLmZpbmQoImlucHV0IiksaT1zLnZhbCgpLGEpYVtyXSYmbi5wdXNoKGFbcl0uaWQpO3ZhciBsPXQuaXRlbXM7aWYoITAhPT1lLnRtcC54aHJfbG9hZGluZyl7Zm9yKHZhciBvPTAsZD0wO2Q8bC5sZW5ndGg7ZCsrKXt2YXIgdT1sW2RdO2lmKG51bGwhPXQuY29tcGFyZSkiZnVuY3Rpb24iPT10eXBlb2YgdC5jb21wYXJlJiYodS5oaWRkZW49ITE9PT10LmNvbXBhcmUuY2FsbCh0aGlzLHUsaSkpO2Vsc2V7dmFyIGM9IiIsaD0iIjstMSE9PVsiaXMiLCJiZWdpbnMiXS5pbmRleE9mKHQubWF0Y2gpJiYoYz0iXiIpLC0xIT09WyJpcyIsImVuZHMiXS5pbmRleE9mKHQubWF0Y2gpJiYoaD0iJCIpO3RyeXtuZXcgUmVnRXhwKGMraStoLCJpIikudGVzdCh1LnRleHQpfHwiLi4uIj09PXUudGV4dD91LmhpZGRlbj0hMTp1LmhpZGRlbj0hMH1jYXRjaChlKXt9fSExPT09dC5maWx0ZXImJih1LmhpZGRlbj0hMSksImVudW0iPT09ZS50eXBlJiYtMSE9PWIuaW5BcnJheSh1LmlkLG4pJiYodS5oaWRkZW49ITApLCEwIT09dS5oaWRkZW4mJihvKyssZGVsZXRlIHUuaGlkZGVuKX1mb3IodC5pbmRleD0tMTtsW3QuaW5kZXhdJiZsW3QuaW5kZXhdLmhpZGRlbjspdC5pbmRleCsrO288PTAmJih0LmluZGV4PS0xKSx0LnNwaW5uZXI9ITEsZS51cGRhdGVPdmVybGF5KCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPWIoIiN3MnVpLW92ZXJsYXkiKS5odG1sKCl8fCIiO3QubWFya1NlYXJjaCYmLTEhPT1lLmluZGV4T2YoIiQuZm4udzJtZW51SGFuZGxlciIpJiZiKCIjdzJ1aS1vdmVybGF5IikudzJtYXJrZXIoaSl9LDEpfWVsc2UgbC5zcGxpY2UoMCx0LmNhY2hlTWF4KSx0LnNwaW5uZXI9ITAsZS51cGRhdGVPdmVybGF5KCl9LHVwZGF0ZU92ZXJsYXk6ZnVuY3Rpb24oZSl7dmFyIHM9dGhpcyxuPXRoaXMub3B0aW9ucztpZigiY29sb3IiPT09dGhpcy50eXBlKXtpZihiKHMuZWwpLnByb3AoInJlYWRvbmx5Iil8fGIocy5lbCkucHJvcCgiZGlzYWJsZWQiKSlyZXR1cm47Yih0aGlzLmVsKS53MmNvbG9yKHtjb2xvcjpiKHRoaXMuZWwpLnZhbCgpLHRyYW5zcGFyZW50Om4udHJhbnNwYXJlbnQsYWR2YW5jZWQ6bi5hZHZhbmNlZH0sZnVuY3Rpb24oZSl7bnVsbCE9ZSYmYihzLmVsKS52YWwoZSkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKX0pfWlmKCJkYXRlIj09PXRoaXMudHlwZSl7aWYoYihzLmVsKS5wcm9wKCJyZWFkb25seSIpfHxiKHMuZWwpLnByb3AoImRpc2FibGVkIikpcmV0dXJuOzA9PT1iKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKHMuZWwpLncyb3ZlcmxheSgnPGRpdiBjbGFzcz0idzJ1aS1yZXNldCB3MnVpLWNhbGVuZGFyIj48L2Rpdj4nLHtjc3M6eyJiYWNrZ3JvdW5kLWNvbG9yIjoiI2Y1ZjVmNSJ9LG9uU2hvdzpmdW5jdGlvbihlKXt3MnV0aWxzLmlzSUUmJihjb25zb2xlLmxvZygiSUUiKSxiKCIudzJ1aS1jYWxlbmRhciIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0PWIoZS50YXJnZXQpOzE9PT10Lmxlbmd0aCYmIncydWktanVtcC15ZWFyIj09PXRbMF0uaWQmJmIoIiN3MnVpLW92ZXJsYXkiKS5kYXRhKCJrZWVwT3BlbiIsITApfSkpfX0pLChyPXcydXRpbHMuaXNEYXRlKGIocy5lbCkudmFsKCkscy5vcHRpb25zLmZvcm1hdCwhMCkpJiYodD1yLmdldE1vbnRoKCkrMSxhPXIuZ2V0RnVsbFllYXIoKSksZnVuY3Rpb24gaShlLHQpe2IoIiN3MnVpLW92ZXJsYXkgPiBkaXYgPiBkaXYiKS5odG1sKHMuZ2V0TW9udGhIVE1MKGUsdCxiKHMuZWwpLnZhbCgpKSksYigiI3cydWktb3ZlcmxheSAudzJ1aS1jYWxlbmRhci10aXRsZSIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7dmFyIGUsdDtiKHRoaXMpLm5leHQoKS5oYXNDbGFzcygidzJ1aS1jYWxlbmRhci1qdW1wIik/Yih0aGlzKS5uZXh0KCkucmVtb3ZlKCk6KGIodGhpcykuYWZ0ZXIoJzxkaXYgY2xhc3M9IncydWktY2FsZW5kYXItanVtcCIgc3R5bGU9IiI+PC9kaXY+JyksYih0aGlzKS5uZXh0KCkuaGlkZSgpLmh0bWwocy5nZXRZZWFySFRNTCgpKS5mYWRlSW4oMjAwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YigiI3cydWktb3ZlcmxheSAudzJ1aS1jYWxlbmRhci1qdW1wIikuZmluZCgiLncydWktanVtcC1tb250aCwgLncydWktanVtcC15ZWFyIikub24oImNsaWNrIixmdW5jdGlvbigpe2IodGhpcykuaGFzQ2xhc3MoIncydWktanVtcC1tb250aCIpJiYoYih0aGlzKS5wYXJlbnQoKS5maW5kKCIudzJ1aS1qdW1wLW1vbnRoIikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIiksYih0aGlzKS5hZGRDbGFzcygic2VsZWN0ZWQiKSx0PWIodGhpcykuYXR0cigibmFtZSIpKSxiKHRoaXMpLmhhc0NsYXNzKCJ3MnVpLWp1bXAteWVhciIpJiYoYih0aGlzKS5wYXJlbnQoKS5maW5kKCIudzJ1aS1qdW1wLXllYXIiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSxiKHRoaXMpLmFkZENsYXNzKCJzZWxlY3RlZCIpLGU9Yih0aGlzKS5hdHRyKCJuYW1lIikpLG51bGwhPWUmJm51bGwhPXQmJihiKCIjdzJ1aS1vdmVybGF5IC53MnVpLWNhbGVuZGFyLWp1bXAiKS5mYWRlT3V0KDEwMCksc2V0VGltZW91dChmdW5jdGlvbigpe2kocGFyc2VJbnQodCkrMSxlKX0sMTAwKSl9KSxiKCIjdzJ1aS1vdmVybGF5IC53MnVpLWNhbGVuZGFyLWp1bXAgPjpsYXN0LWNoaWxkIikucHJvcCgic2Nyb2xsVG9wIiwyZTMpfSwxKSl9KSxiKCIjdzJ1aS1vdmVybGF5IC53MnVpLWRhdGUiKS5vbigibW91c2Vkb3duIixmdW5jdGlvbigpe3ZhciBlPWIodGhpcykuYXR0cigiZGF0ZSIpO2Iocy5lbCkudmFsKGUpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCksYih0aGlzKS5jc3MoeyJiYWNrZ3JvdW5kLWNvbG9yIjoiI0I2RDVGQiIsImJvcmRlci1jb2xvciI6IiNhYWEifSl9KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MDxiKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKCIjdzJ1aS1vdmVybGF5IikucmVtb3ZlRGF0YSgia2VlcE9wZW4iKVswXS5oaWRlKCl9LDEwKX0pLGIoIiN3MnVpLW92ZXJsYXkgLnByZXZpb3VzIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXt2YXIgZT1zLm9wdGlvbnMuY3VycmVudC5zcGxpdCgiLyIpO2VbMF09cGFyc2VJbnQoZVswXSktMSxpKGVbMF0sZVsxXSl9KSxiKCIjdzJ1aS1vdmVybGF5IC5uZXh0Iikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXt2YXIgZT1zLm9wdGlvbnMuY3VycmVudC5zcGxpdCgiLyIpO2VbMF09cGFyc2VJbnQoZVswXSkrMSxpKGVbMF0sZVsxXSl9KX0odCxhKX1pZigidGltZSI9PT10aGlzLnR5cGUpe2lmKGIocy5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihzLmVsKS5wcm9wKCJkaXNhYmxlZCIpKXJldHVybjswPT09YigiI3cydWktb3ZlcmxheSIpLmxlbmd0aCYmYihzLmVsKS53Mm92ZXJsYXkoJzxkaXYgY2xhc3M9IncydWktcmVzZXQgdzJ1aS1jYWxlbmRhci10aW1lIiBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiPjwvZGl2Picse2Nzczp7ImJhY2tncm91bmQtY29sb3IiOiIjZmZmIn19KTt2YXIgaT0iaDI0Ij09PXRoaXMub3B0aW9ucy5mb3JtYXQ7YigiI3cydWktb3ZlcmxheSA+IGRpdiIpLmh0bWwocy5nZXRIb3VySFRNTCgpKSxiKCIjdzJ1aS1vdmVybGF5IC53MnVpLXRpbWUiKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihlKXtiKHRoaXMpLmNzcyh7ImJhY2tncm91bmQtY29sb3IiOiIjQjZENUZCIiwiYm9yZGVyLWNvbG9yIjoiI2FhYSJ9KTt2YXIgdD1iKHRoaXMpLmF0dHIoImhvdXIiKTtiKHMuZWwpLnZhbCgoMTI8dCYmIWk/dC0xMjp0KSsiOjAwIisoaT8iIjp0PDEyPyIgYW0iOiIgcG0iKSkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKX0pLG51bGw9PXRoaXMub3B0aW9ucy5ub01pbnV0ZXN8fCExPT09dGhpcy5vcHRpb25zLm5vTWludXRlcz9iKCIjdzJ1aS1vdmVybGF5IC53MnVpLXRpbWUiKS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXt2YXIgdD1iKHRoaXMpLmF0dHIoImhvdXIiKTswPGIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJmIoIiN3MnVpLW92ZXJsYXkiKVswXS5oaWRlKCksYihzLmVsKS53Mm92ZXJsYXkoJzxkaXYgY2xhc3M9IncydWktcmVzZXQgdzJ1aS1jYWxlbmRhci10aW1lIj48L2Rpdj4nLHtjc3M6eyJiYWNrZ3JvdW5kLWNvbG9yIjoiI2ZmZiJ9fSksYigiI3cydWktb3ZlcmxheSA+IGRpdiIpLmh0bWwocy5nZXRNaW5IVE1MKHQpKSxiKCIjdzJ1aS1vdmVybGF5IC53MnVpLXRpbWUiKS5vbigibW91c2Vkb3duIixmdW5jdGlvbigpe2IodGhpcykuY3NzKHsiYmFja2dyb3VuZC1jb2xvciI6IiNCNkQ1RkIiLCJib3JkZXItY29sb3IiOiIjYWFhIn0pO3ZhciBlPWIodGhpcykuYXR0cigibWluIik7YihzLmVsKS52YWwoKDEyPHQmJiFpP3QtMTI6dCkrIjoiKyhlPDEwPzA6IiIpK2UrKGk/IiI6dDwxMj8iIGFtIjoiIHBtIikpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCl9KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MDxiKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKCIjdzJ1aS1vdmVybGF5IikucmVtb3ZlRGF0YSgia2VlcE9wZW4iKVswXS5oaWRlKCl9LDEwKX0pfSk6YigiI3cydWktb3ZlcmxheSAudzJ1aS10aW1lIikub24oIm1vdXNldXAiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpezA8YigiI3cydWktb3ZlcmxheSIpLmxlbmd0aCYmYigiI3cydWktb3ZlcmxheSIpLnJlbW92ZURhdGEoImtlZXBPcGVuIilbMF0uaGlkZSgpfSwxMCl9KX1pZigiZGF0ZXRpbWUiPT09dGhpcy50eXBlKXtpZihiKHMuZWwpLnByb3AoInJlYWRvbmx5Iil8fGIocy5lbCkucHJvcCgiZGlzYWJsZWQiKSlyZXR1cm47dmFyIHQsYSxyOzA8YigiI3cydWktb3ZlcmxheSAudzJ1aS10aW1lIikubGVuZ3RoJiZiKCIjdzJ1aS1vdmVybGF5IilbMF0uaGlkZSgpLDA9PT1iKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKHMuZWwpLncyb3ZlcmxheSgnPGRpdiBjbGFzcz0idzJ1aS1yZXNldCB3MnVpLWNhbGVuZGFyIiBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiPjwvZGl2Picse2Nzczp7ImJhY2tncm91bmQtY29sb3IiOiIjZjVmNWY1In0sb25TaG93OmZ1bmN0aW9uKGUpe3cydXRpbHMuaXNJRSYmKGNvbnNvbGUubG9nKCJJRSIpLGIoIi53MnVpLWNhbGVuZGFyIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7dmFyIHQ9YihlLnRhcmdldCk7MT09PXQubGVuZ3RoJiYidzJ1aS1qdW1wLXllYXIiPT09dFswXS5pZCYmYigiI3cydWktb3ZlcmxheSIpLmRhdGEoImtlZXBPcGVuIiwhMCl9KSl9fSksKHI9dzJ1dGlscy5pc0RhdGVUaW1lKGIocy5lbCkudmFsKCkscy5vcHRpb25zLmZvcm1hdCwhMCkpJiYodD1yLmdldE1vbnRoKCkrMSxhPXIuZ2V0RnVsbFllYXIoKSk7dmFyIGw9bnVsbDshZnVuY3Rpb24gaShlLHQpe2IoIiN3MnVpLW92ZXJsYXkgPiBkaXYgPiBkaXYiKS5odG1sKHMuZ2V0TW9udGhIVE1MKGUsdCxiKHMuZWwpLnZhbCgpKSsobi5idG5fbm93Pyc8ZGl2IGNsYXNzPSJ3MnVpLWNhbGVuZGFyLW5vdyBub3ciPicrdzJ1dGlscy5sYW5nKCJDdXJyZW50IERhdGUgJiBUaW1lIikrIjwvZGl2PiI6IiIpKSxiKCIjdzJ1aS1vdmVybGF5IC53MnVpLWNhbGVuZGFyLXRpdGxlIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXt2YXIgZSx0O2IodGhpcykubmV4dCgpLmhhc0NsYXNzKCJ3MnVpLWNhbGVuZGFyLWp1bXAiKT9iKHRoaXMpLm5leHQoKS5yZW1vdmUoKTooYih0aGlzKS5hZnRlcignPGRpdiBjbGFzcz0idzJ1aS1jYWxlbmRhci1qdW1wIiBzdHlsZT0iIj48L2Rpdj4nKSxiKHRoaXMpLm5leHQoKS5oaWRlKCkuaHRtbChzLmdldFllYXJIVE1MKCkpLmZhZGVJbigyMDApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKCIjdzJ1aS1vdmVybGF5IC53MnVpLWNhbGVuZGFyLWp1bXAiKS5maW5kKCIudzJ1aS1qdW1wLW1vbnRoLCAudzJ1aS1qdW1wLXllYXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yih0aGlzKS5oYXNDbGFzcygidzJ1aS1qdW1wLW1vbnRoIikmJihiKHRoaXMpLnBhcmVudCgpLmZpbmQoIi53MnVpLWp1bXAtbW9udGgiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSxiKHRoaXMpLmFkZENsYXNzKCJzZWxlY3RlZCIpLHQ9Yih0aGlzKS5hdHRyKCJuYW1lIikpLGIodGhpcykuaGFzQ2xhc3MoIncydWktanVtcC15ZWFyIikmJihiKHRoaXMpLnBhcmVudCgpLmZpbmQoIi53MnVpLWp1bXAteWVhciIpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpLGIodGhpcykuYWRkQ2xhc3MoInNlbGVjdGVkIiksZT1iKHRoaXMpLmF0dHIoIm5hbWUiKSksbnVsbCE9ZSYmbnVsbCE9dCYmKGIoIiN3MnVpLW92ZXJsYXkgLncydWktY2FsZW5kYXItanVtcCIpLmZhZGVPdXQoMTAwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aShwYXJzZUludCh0KSsxLGUpfSwxMDApKX0pLGIoIiN3MnVpLW92ZXJsYXkgLncydWktY2FsZW5kYXItanVtcCA+Omxhc3QtY2hpbGQiKS5wcm9wKCJzY3JvbGxUb3AiLDJlMyl9LDEpKX0pLGIoIiN3MnVpLW92ZXJsYXkgLncydWktZGF0ZSIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7dmFyIGU9Yih0aGlzKS5hdHRyKCJkYXRlIik7YihzLmVsKS52YWwoZSkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKSxiKHRoaXMpLmNzcyh7ImJhY2tncm91bmQtY29sb3IiOiIjQjZENUZCIiwiYm9yZGVyLWNvbG9yIjoiI2FhYSJ9KSxsPW5ldyBEYXRlKGIodGhpcykuYXR0cigiZGF0YS1kYXRlIikpfSkub24oIm1vdXNldXAiLGZ1bmN0aW9uKCl7dmFyIGksdDswPGIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJmIoIiN3MnVpLW92ZXJsYXkiKVswXS5oaWRlKCksYihzLmVsKS53Mm92ZXJsYXkoJzxkaXYgY2xhc3M9IncydWktcmVzZXQgdzJ1aS1jYWxlbmRhci10aW1lIj48L2Rpdj4nLHtjc3M6eyJiYWNrZ3JvdW5kLWNvbG9yIjoiI2ZmZiJ9fSk7cy5vcHRpb25zLmZvcm1hdDtiKCIjdzJ1aS1vdmVybGF5ID4gZGl2IikuaHRtbChzLmdldEhvdXJIVE1MKCkpLGIoIiN3MnVpLW92ZXJsYXkgLncydWktdGltZSIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe2IodGhpcykuY3NzKHsiYmFja2dyb3VuZC1jb2xvciI6IiNCNkQ1RkIiLCJib3JkZXItY29sb3IiOiIjYWFhIn0pLGk9Yih0aGlzKS5hdHRyKCJob3VyIiksbC5zZXRIb3VycyhpKTt2YXIgdD13MnV0aWxzLmZvcm1hdERhdGVUaW1lKGwscy5vcHRpb25zLmZvcm1hdCk7YihzLmVsKS52YWwodCkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKX0pLG51bGw9PXMub3B0aW9ucy5ub01pbnV0ZXN8fCExPT09cy5vcHRpb25zLm5vTWludXRlcz9iKCIjdzJ1aS1vdmVybGF5IC53MnVpLXRpbWUiKS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXt2YXIgZT1iKHRoaXMpLmF0dHIoImhvdXIiKTswPGIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJmIoIiN3MnVpLW92ZXJsYXkiKVswXS5oaWRlKCksYihzLmVsKS53Mm92ZXJsYXkoJzxkaXYgY2xhc3M9IncydWktcmVzZXQgdzJ1aS1jYWxlbmRhci10aW1lIj48L2Rpdj4nLHtjc3M6eyJiYWNrZ3JvdW5kLWNvbG9yIjoiI2ZmZiJ9fSksYigiI3cydWktb3ZlcmxheSA+IGRpdiIpLmh0bWwocy5nZXRNaW5IVE1MKGUpKSxiKCIjdzJ1aS1vdmVybGF5IC53MnVpLXRpbWUiKS5vbigibW91c2Vkb3duIixmdW5jdGlvbigpe2IodGhpcykuY3NzKHsiYmFja2dyb3VuZC1jb2xvciI6IiNCNkQ1RkIiLCJib3JkZXItY29sb3IiOiIjYWFhIn0pLHQ9Yih0aGlzKS5hdHRyKCJtaW4iKSxsLnNldEhvdXJzKGksdCk7dmFyIGU9dzJ1dGlscy5mb3JtYXREYXRlVGltZShsLHMub3B0aW9ucy5mb3JtYXQpO2Iocy5lbCkudmFsKGUpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCl9KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MDxiKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKCIjdzJ1aS1vdmVybGF5IikucmVtb3ZlRGF0YSgia2VlcE9wZW4iKVswXS5oaWRlKCl9LDEwKX0pfSk6YigiI3cydWktb3ZlcmxheSAudzJ1aS10aW1lIikub24oIm1vdXNldXAiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpezA8YigiI3cydWktb3ZlcmxheSIpLmxlbmd0aCYmYigiI3cydWktb3ZlcmxheSIpLnJlbW92ZURhdGEoImtlZXBPcGVuIilbMF0uaGlkZSgpfSwxMCl9KX0pLGIoIiN3MnVpLW92ZXJsYXkgLnByZXZpb3VzIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXt2YXIgZT1zLm9wdGlvbnMuY3VycmVudC5zcGxpdCgiLyIpO2VbMF09cGFyc2VJbnQoZVswXSktMSxpKGVbMF0sZVsxXSl9KSxiKCIjdzJ1aS1vdmVybGF5IC5uZXh0Iikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXt2YXIgZT1zLm9wdGlvbnMuY3VycmVudC5zcGxpdCgiLyIpO2VbMF09cGFyc2VJbnQoZVswXSkrMSxpKGVbMF0sZVsxXSl9KSxiKCIjdzJ1aS1vdmVybGF5IC5ub3ciKS5vbigibW91c2Vkb3duIixmdW5jdGlvbigpe3ZhciBlPXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUobmV3IERhdGUscy5vcHRpb25zLmZvcm1hdCk7cmV0dXJuIGIocy5lbCkudmFsKGUpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCksITF9KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MDxiKCIjdzJ1aS1vdmVybGF5IikubGVuZ3RoJiZiKCIjdzJ1aS1vdmVybGF5IikucmVtb3ZlRGF0YSgia2VlcE9wZW4iKVswXS5oaWRlKCl9LDEwKX0pfSh0LGEpfWlmKC0xIT09WyJsaXN0IiwiY29tYm8iLCJlbnVtIl0uaW5kZXhPZih0aGlzLnR5cGUpKXt2YXIgbz10aGlzLmVsLGQ9dGhpcy5lbDtpZigiZW51bSI9PT10aGlzLnR5cGUmJihvPWIodGhpcy5oZWxwZXJzLm11bHRpKSxkPWIobykuZmluZCgiaW5wdXQiKSksImxpc3QiPT09dGhpcy50eXBlKXt2YXIgdT1iKGQpLmRhdGEoInNlbGVjdGVkIik7Yi5pc1BsYWluT2JqZWN0KHUpJiYhYi5pc0VtcHR5T2JqZWN0KHUpJiYtMT09bi5pbmRleCYmbi5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5pZD09PXUuaWQmJihuLmluZGV4PXQpfSksZD1iKHRoaXMuaGVscGVycy5mb2N1cykuZmluZCgiaW5wdXQiKX1pZihiKGQpLmlzKCI6Zm9jdXMiKSl7aWYoITE9PT1uLm9wZW5PbkZvY3VzJiYiIj09PWIoZCkudmFsKCkmJiEwIT09cy50bXAuZm9yY2Vfb3BlbilyZXR1cm4gdm9pZCBiKCkudzJvdmVybGF5KCk7aWYocy50bXAuZm9yY2VfaGlkZSlyZXR1cm4gYigpLncyb3ZlcmxheSgpLHZvaWQgc2V0VGltZW91dChmdW5jdGlvbigpe2RlbGV0ZSBzLnRtcC5mb3JjZV9oaWRlfSwxKTsiIiE9PWIoZCkudmFsKCkmJmRlbGV0ZSBzLnRtcC5mb3JjZV9vcGVuO3ZhciBjPXcydXRpbHMubGFuZygiTm8gbWF0Y2hlcyIpO251bGwhPW4udXJsJiZiKGQpLnZhbCgpLmxlbmd0aDxuLm1pbkxlbmd0aCYmITAhPT1zLnRtcC5lbXB0eVNldCYmKGM9bi5taW5MZW5ndGgrIiAiK3cydXRpbHMubGFuZygibGV0dGVycyBvciBtb3JlLi4uIikpLG51bGwhPW4udXJsJiYiIj09PWIoZCkudmFsKCkmJiEwIT09cy50bXAuZW1wdHlTZXQmJihjPXcydXRpbHMubGFuZyhuLm1zZ1NlYXJjaHx8IlR5cGUgdG8gc2VhcmNoLi4uIikpLG51bGw9PW4udXJsJiYwPT09bi5pdGVtcy5sZW5ndGgmJihjPXcydXRpbHMubGFuZygiRW1wdHkgbGlzdCIpKSxudWxsIT1uLm1zZ05vSXRlbXMmJihjPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2Mobik6bi5tc2dOb0l0ZW1zKSxzLnRtcC5sYXN0RXJyb3ImJihjPXMudG1wLmxhc3RFcnJvciksYz0nPGRpdiBzdHlsZT0id2hpdGUtc3BhY2U6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDEuMyI+JytjKyI8L2Rpdj4iO3ZhciBoPWIuZXh0ZW5kKCEwLHt9LG4se3NlYXJjaDohMSxyZW5kZXI6bi5yZW5kZXJEcm9wLG1heEhlaWdodDpuLm1heERyb3BIZWlnaHQsbWF4V2lkdGg6bi5tYXhEcm9wV2lkdGgsbXNnTm9JdGVtczpjLG9uU2VsZWN0OmZ1bmN0aW9uKGUpe2lmKCJlbnVtIj09PXMudHlwZSl7dmFyIHQ9YihzLmVsKS5kYXRhKCJzZWxlY3RlZCIpO2lmKGUuaXRlbSl7dmFyIGk9cy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJhZGQiLHRhcmdldDpzLmVsLG9yaWdpbmFsRXZlbnQ6ZS5vcmlnaW5hbEV2ZW50LGl0ZW06ZS5pdGVtfSk7aWYoITA9PT1pLmlzQ2FuY2VsbGVkKXJldHVybjt0Lmxlbmd0aD49bi5tYXgmJjA8bi5tYXgmJnQucG9wKCksZGVsZXRlIGUuaXRlbS5oaWRkZW4sdC5wdXNoKGUuaXRlbSksYihzLmVsKS5kYXRhKCJzZWxlY3RlZCIsdCkudHJpZ2dlcigiaW5wdXQiKS5jaGFuZ2UoKSxiKHMuaGVscGVycy5tdWx0aSkuZmluZCgiaW5wdXQiKS52YWwoIiIpLndpZHRoKDIwKSxzLnJlZnJlc2goKSwwPGIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJmIoIiN3MnVpLW92ZXJsYXkiKVswXS5oaWRlKCkscy50cmlnZ2VyKGIuZXh0ZW5kKGkse3BoYXNlOiJhZnRlciJ9KSl9fWVsc2UgYihzLmVsKS5kYXRhKCJzZWxlY3RlZCIsZS5pdGVtKS52YWwoZS5pdGVtLnRleHQpLnRyaWdnZXIoImlucHV0IikuY2hhbmdlKCkscy5oZWxwZXJzLmZvY3VzJiZzLmhlbHBlcnMuZm9jdXMuZmluZCgiaW5wdXQiKS52YWwoIiIpfX0pO2IobykudzJtZW51KGU/InJlZnJlc2gtaW5kZXgiOiJyZWZyZXNoIixoKX19fSxpblJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9ITE7aWYoImRhdGUiPT09dGhpcy50eXBlKXtpZihwPXcydXRpbHMuaXNEYXRlKGUsdGhpcy5vcHRpb25zLmZvcm1hdCwhMCkpe2lmKHRoaXMub3B0aW9ucy5zdGFydHx8dGhpcy5vcHRpb25zLmVuZCl7dmFyIHM9InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc3RhcnQ/dGhpcy5vcHRpb25zLnN0YXJ0OmIodGhpcy5vcHRpb25zLnN0YXJ0KS52YWwoKSxuPSJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLmVuZD90aGlzLm9wdGlvbnMuZW5kOmIodGhpcy5vcHRpb25zLmVuZCkudmFsKCksYT13MnV0aWxzLmlzRGF0ZShzLHRoaXMub3B0aW9ucy5mb3JtYXQsITApLHI9dzJ1dGlscy5pc0RhdGUobix0aGlzLm9wdGlvbnMuZm9ybWF0LCEwKSxsPW5ldyBEYXRlKHApO3I9cnx8bCwoYT1hfHxsKTw9bCYmbDw9ciYmKGk9ITApfWVsc2UgaT0hMDtpZih0aGlzLm9wdGlvbnMuYmxvY2tlZCYmLTEhPT1iLmluQXJyYXkoZSx0aGlzLm9wdGlvbnMuYmxvY2tlZCkmJihpPSExKSxudWxsIT09dGhpcy5vcHRpb25zLmJsb2NrV2Vla0RheXMmJnZvaWQgMCE9PXRoaXMub3B0aW9ucy5ibG9ja1dlZWtEYXlzJiZudWxsIT10aGlzLm9wdGlvbnMuYmxvY2tXZWVrRGF5cy5sZW5ndGgpZm9yKHZhciBvPXRoaXMub3B0aW9ucy5ibG9ja1dlZWtEYXlzLmxlbmd0aCxkPTA7ZDxvO2QrKylwLmdldERheSgpPT10aGlzLm9wdGlvbnMuYmxvY2tXZWVrRGF5c1tkXSYmKGk9ITEpfX1lbHNlIGlmKCJ0aW1lIj09PXRoaXMudHlwZSlpZih0aGlzLm9wdGlvbnMuc3RhcnR8fHRoaXMub3B0aW9ucy5lbmQpe3ZhciB1PXRoaXMudG9NaW4oZSksYz10aGlzLnRvTWluKHRoaXMub3B0aW9ucy5zdGFydCksaD10aGlzLnRvTWluKHRoaXMub3B0aW9ucy5lbmQpO2g9aHx8dSwoYz1jfHx1KTw9dSYmdTw9aCYmKGk9ITApfWVsc2UgaT0hMDtlbHNlIGlmKCJkYXRldGltZSI9PT10aGlzLnR5cGUpe3ZhciBwO2lmKHA9dzJ1dGlscy5pc0RhdGVUaW1lKGUsdGhpcy5vcHRpb25zLmZvcm1hdCwhMCkpe2lmKHRoaXMub3B0aW9ucy5zdGFydHx8dGhpcy5vcHRpb25zLmVuZCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc3RhcnQmJnRoaXMub3B0aW9ucy5zdGFydCBpbnN0YW5jZW9mIERhdGUpYT10aGlzLm9wdGlvbnMuc3RhcnQ7ZWxzZSBhPSIiIT09KHM9InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc3RhcnQ/dGhpcy5vcHRpb25zLnN0YXJ0OmIodGhpcy5vcHRpb25zLnN0YXJ0KS52YWwoKSkudHJpbSgpP3cydXRpbHMuaXNEYXRlVGltZShzLHRoaXMub3B0aW9ucy5mb3JtYXQsITApOiIiO2lmKCJvYmplY3QiPT10eXBlb2YgdGhpcy5vcHRpb25zLmVuZCYmdGhpcy5vcHRpb25zLmVuZCBpbnN0YW5jZW9mIERhdGUpcj10aGlzLm9wdGlvbnMuZW5kO2Vsc2Ugcj0iIiE9PShuPSJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLmVuZD90aGlzLm9wdGlvbnMuZW5kOmIodGhpcy5vcHRpb25zLmVuZCkudmFsKCkpLnRyaW0oKT93MnV0aWxzLmlzRGF0ZVRpbWUobix0aGlzLm9wdGlvbnMuZm9ybWF0LCEwKToiIjtsPXA7YT1hfHxsLHI9cnx8bCx0JiZhIGluc3RhbmNlb2YgRGF0ZSYmKGEuc2V0SG91cnMoMCksYS5zZXRNaW51dGVzKDApLGEuc2V0U2Vjb25kcygwKSksYTw9bCYmbDw9ciYmKGk9ITApfWVsc2UgaT0hMDtpZihpJiZ0aGlzLm9wdGlvbnMuYmxvY2tlZClmb3IoZD0wO2Q8dGhpcy5vcHRpb25zLmJsb2NrZWQubGVuZ3RoO2QrKyl7dmFyIGY9dGhpcy5vcHRpb25zLmJsb2NrZWRbZF07aWYoInN0cmluZyI9PXR5cGVvZiBmJiYoZj13MnV0aWxzLmlzRGF0ZVRpbWUoZix0aGlzLm9wdGlvbnMuZm9ybWF0LCEwKSksIm9iamVjdCI9PXR5cGVvZiBmJiZmIGluc3RhbmNlb2YgRGF0ZSYmZi5nZXRGdWxsWWVhcigpPT1wLmdldEZ1bGxZZWFyKCkmJmYuZ2V0TW9udGgoKT09cC5nZXRNb250aCgpJiZmLmdldERhdGUoKT09cC5nZXREYXRlKCkpe2k9ITE7YnJlYWt9fX19cmV0dXJuIGl9LGNoZWNrVHlwZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7c3dpdGNoKGkudHlwZSl7Y2FzZSJpbnQiOnJldHVybiEoIXR8fC0xPT09WyItIixpLm9wdGlvbnMuZ3JvdXBTeW1ib2xdLmluZGV4T2YoZSkpfHx3MnV0aWxzLmlzSW50KGUucmVwbGFjZShpLm9wdGlvbnMubnVtYmVyUkUsIiIpKTtjYXNlInBlcmNlbnQiOmU9ZS5yZXBsYWNlKC8lL2csIiIpO2Nhc2UiZmxvYXQiOnJldHVybiEoIXR8fC0xPT09WyItIix3MnV0aWxzLnNldHRpbmdzLmRlY2ltYWxTeW1ib2wsaS5vcHRpb25zLmdyb3VwU3ltYm9sXS5pbmRleE9mKGUpKXx8dzJ1dGlscy5pc0Zsb2F0KGUucmVwbGFjZShpLm9wdGlvbnMubnVtYmVyUkUsIiIpKTtjYXNlIm1vbmV5IjpjYXNlImN1cnJlbmN5IjpyZXR1cm4hKCF0fHwtMT09PVsiLSIsaS5vcHRpb25zLmRlY2ltYWxTeW1ib2wsaS5vcHRpb25zLmdyb3VwU3ltYm9sLGkub3B0aW9ucy5jdXJyZW5jeVByZWZpeCxpLm9wdGlvbnMuY3VycmVuY3lTdWZmaXhdLmluZGV4T2YoZSkpfHx3MnV0aWxzLmlzRmxvYXQoZS5yZXBsYWNlKGkub3B0aW9ucy5tb25leVJFLCIiKSk7Y2FzZSJiaW4iOnJldHVybiB3MnV0aWxzLmlzQmluKGUpO2Nhc2UiaGV4IjpyZXR1cm4gdzJ1dGlscy5pc0hleChlKTtjYXNlImFscGhhbnVtZXJpYyI6cmV0dXJuIHcydXRpbHMuaXNBbHBoYU51bWVyaWMoZSl9cmV0dXJuITB9LGFkZFByZWZpeDpmdW5jdGlvbigpe3ZhciBpPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKCJjbGVhciIhPT1pLnR5cGUpe3ZhciBlLHQ9YihpLmVsKS5kYXRhKCJ0bXAiKXx8e307dFsib2xkLXBhZGRpbmctbGVmdCJdJiZiKGkuZWwpLmNzcygicGFkZGluZy1sZWZ0Iix0WyJvbGQtcGFkZGluZy1sZWZ0Il0pLHRbIm9sZC1wYWRkaW5nLWxlZnQiXT1iKGkuZWwpLmNzcygicGFkZGluZy1sZWZ0IiksYihpLmVsKS5kYXRhKCJ0bXAiLHQpLGkuaGVscGVycy5wcmVmaXgmJmIoaS5oZWxwZXJzLnByZWZpeCkucmVtb3ZlKCksIiIhPT1pLm9wdGlvbnMucHJlZml4JiYoYihpLmVsKS5iZWZvcmUoJzxkaXYgY2xhc3M9IncydWktZmllbGQtaGVscGVyIj4nK2kub3B0aW9ucy5wcmVmaXgrIjwvZGl2PiIpLChlPWIoaS5lbCkucHJldigpKS5jc3Moe2NvbG9yOmIoaS5lbCkuY3NzKCJjb2xvciIpLCJmb250LWZhbWlseSI6YihpLmVsKS5jc3MoImZvbnQtZmFtaWx5IiksImZvbnQtc2l6ZSI6YihpLmVsKS5jc3MoImZvbnQtc2l6ZSIpLCJwYWRkaW5nLXRvcCI6YihpLmVsKS5jc3MoInBhZGRpbmctdG9wIiksInBhZGRpbmctYm90dG9tIjpiKGkuZWwpLmNzcygicGFkZGluZy1ib3R0b20iKSwicGFkZGluZy1sZWZ0IjpiKGkuZWwpLmNzcygicGFkZGluZy1sZWZ0IiksInBhZGRpbmctcmlnaHQiOjAsIm1hcmdpbi10b3AiOnBhcnNlSW50KGIoaS5lbCkuY3NzKCJtYXJnaW4tdG9wIiksMTApKzIrInB4IiwibWFyZ2luLWJvdHRvbSI6cGFyc2VJbnQoYihpLmVsKS5jc3MoIm1hcmdpbi1ib3R0b20iKSwxMCkrMSsicHgiLCJtYXJnaW4tbGVmdCI6YihpLmVsKS5jc3MoIm1hcmdpbi1sZWZ0IiksIm1hcmdpbi1yaWdodCI6MH0pLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7aWYoaS5vcHRpb25zLmljb24mJiJmdW5jdGlvbiI9PXR5cGVvZiBpLm9uSWNvbkNsaWNrKXt2YXIgdD1pLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6Imljb25DbGljayIsdGFyZ2V0OmkuZWwsZWw6Yih0aGlzKS5maW5kKCJzcGFuLncydWktaWNvbiIpWzBdfSk7aWYoITA9PT10LmlzQ2FuY2VsbGVkKXJldHVybjtpLnRyaWdnZXIoYi5leHRlbmQodCx7cGhhc2U6ImFmdGVyIn0pKX1lbHNlImxpc3QiPT09aS50eXBlP2IoaS5oZWxwZXJzLmZvY3VzKS5maW5kKCJpbnB1dCIpLmZvY3VzKCk6YihpLmVsKS5mb2N1cygpfSksYihpLmVsKS5jc3MoInBhZGRpbmctbGVmdCIsZS53aWR0aCgpK3BhcnNlSW50KGIoaS5lbCkuY3NzKCJwYWRkaW5nLWxlZnQiKSwxMCkrInB4IiksaS5oZWxwZXJzLnByZWZpeD1lKX19LDEpfSxhZGRTdWZmaXg6ZnVuY3Rpb24oKXt2YXIgdCxpLG49dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoImNsZWFyIiE9PW4udHlwZSl7dmFyIGU9YihuLmVsKS5kYXRhKCJ0bXAiKXx8e307ZVsib2xkLXBhZGRpbmctcmlnaHQiXSYmYihuLmVsKS5jc3MoInBhZGRpbmctcmlnaHQiLGVbIm9sZC1wYWRkaW5nLXJpZ2h0Il0pLGVbIm9sZC1wYWRkaW5nLXJpZ2h0Il09YihuLmVsKS5jc3MoInBhZGRpbmctcmlnaHQiKSxiKG4uZWwpLmRhdGEoInRtcCIsZSksaT1wYXJzZUludChiKG4uZWwpLmNzcygicGFkZGluZy1yaWdodCIpLDEwKSxuLm9wdGlvbnMuYXJyb3dzJiYobi5oZWxwZXJzLmFycm93cyYmYihuLmhlbHBlcnMuYXJyb3dzKS5yZW1vdmUoKSxiKG4uZWwpLmFmdGVyKCc8ZGl2IGNsYXNzPSJ3MnVpLWZpZWxkLWhlbHBlciIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Ij4mIzE2MDsgICAgPGRpdiBjbGFzcz0idzJ1aS1maWVsZC11cCIgdHlwZT0idXAiPiAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3ctdXAiIHR5cGU9InVwIj48L2Rpdj4gICAgPC9kaXY+ICAgIDxkaXYgY2xhc3M9IncydWktZmllbGQtZG93biIgdHlwZT0iZG93biI+ICAgICAgICA8ZGl2IGNsYXNzPSJhcnJvdy1kb3duIiB0eXBlPSJkb3duIj48L2Rpdj4gICAgPC9kaXY+PC9kaXY+JyksKHQ9YihuLmVsKS5uZXh0KCkpLmNzcyh7Y29sb3I6YihuLmVsKS5jc3MoImNvbG9yIiksImZvbnQtZmFtaWx5IjpiKG4uZWwpLmNzcygiZm9udC1mYW1pbHkiKSwiZm9udC1zaXplIjpiKG4uZWwpLmNzcygiZm9udC1zaXplIiksaGVpZ2h0OmIobi5lbCkuaGVpZ2h0KCkrcGFyc2VJbnQoYihuLmVsKS5jc3MoInBhZGRpbmctdG9wIiksMTApK3BhcnNlSW50KGIobi5lbCkuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLDEwKSsicHgiLHBhZGRpbmc6MCwibWFyZ2luLXRvcCI6cGFyc2VJbnQoYihuLmVsKS5jc3MoIm1hcmdpbi10b3AiKSwxMCkrMSsicHgiLCJtYXJnaW4tYm90dG9tIjowLCJib3JkZXItbGVmdCI6IjFweCBzb2xpZCBzaWx2ZXIifSkuY3NzKCJtYXJnaW4tbGVmdCIsIi0iKyh0LndpZHRoKCkrcGFyc2VJbnQoYihuLmVsKS5jc3MoIm1hcmdpbi1yaWdodCIpLDEwKSsxMikrInB4Iikub24oIm1vdXNlZG93biIsZnVuY3Rpb24odCl7dmFyIGk9YigiYm9keSIpO2Z1bmN0aW9uIHMoZSl7YihuLmVsKS5mb2N1cygpLG4ua2V5RG93bihiLkV2ZW50KCJrZXlkb3duIikse2tleUNvZGU6InVwIj09PWIodC50YXJnZXQpLmF0dHIoInR5cGUiKT8zODo0MH0pLCExIT09ZSYmYigiYm9keSIpLmRhdGEoIl9maWVsZF91cGRhdGVfdGltZXIiLHNldFRpbWVvdXQocyw2MCkpfWkub24oIm1vdXNldXAiLGZ1bmN0aW9uIGUoKXtjbGVhclRpbWVvdXQoaS5kYXRhKCJfZmllbGRfdXBkYXRlX3RpbWVyIikpO2kub2ZmKCJtb3VzZXVwIixlKX0pLGkuZGF0YSgiX2ZpZWxkX3VwZGF0ZV90aW1lciIsc2V0VGltZW91dChzLDcwMCkpLHMoITEpfSksaSs9dC53aWR0aCgpKzEyLGIobi5lbCkuY3NzKCJwYWRkaW5nLXJpZ2h0IixpKyJweCIpLG4uaGVscGVycy5hcnJvd3M9dCksIiIhPT1uLm9wdGlvbnMuc3VmZml4JiYobi5oZWxwZXJzLnN1ZmZpeCYmYihuLmhlbHBlcnMuc3VmZml4KS5yZW1vdmUoKSxiKG4uZWwpLmFmdGVyKCc8ZGl2IGNsYXNzPSJ3MnVpLWZpZWxkLWhlbHBlciI+JytuLm9wdGlvbnMuc3VmZml4KyI8L2Rpdj4iKSwodD1iKG4uZWwpLm5leHQoKSkuY3NzKHtjb2xvcjpiKG4uZWwpLmNzcygiY29sb3IiKSwiZm9udC1mYW1pbHkiOmIobi5lbCkuY3NzKCJmb250LWZhbWlseSIpLCJmb250LXNpemUiOmIobi5lbCkuY3NzKCJmb250LXNpemUiKSwicGFkZGluZy10b3AiOmIobi5lbCkuY3NzKCJwYWRkaW5nLXRvcCIpLCJwYWRkaW5nLWJvdHRvbSI6YihuLmVsKS5jc3MoInBhZGRpbmctYm90dG9tIiksInBhZGRpbmctbGVmdCI6IjNweCIsInBhZGRpbmctcmlnaHQiOmIobi5lbCkuY3NzKCJwYWRkaW5nLXJpZ2h0IiksIm1hcmdpbi10b3AiOnBhcnNlSW50KGIobi5lbCkuY3NzKCJtYXJnaW4tdG9wIiksMTApKzIrInB4IiwibWFyZ2luLWJvdHRvbSI6cGFyc2VJbnQoYihuLmVsKS5jc3MoIm1hcmdpbi1ib3R0b20iKSwxMCkrMSsicHgifSkub24oImNsaWNrIixmdW5jdGlvbihlKXsibGlzdCI9PT1uLnR5cGU/YihuLmhlbHBlcnMuZm9jdXMpLmZpbmQoImlucHV0IikuZm9jdXMoKTpiKG4uZWwpLmZvY3VzKCl9KSx0LmNzcygibWFyZ2luLWxlZnQiLCItIisodzJ1dGlscy5nZXRTaXplKHQsIndpZHRoIikrcGFyc2VJbnQoYihuLmVsKS5jc3MoIm1hcmdpbi1yaWdodCIpLDEwKSsyKSsicHgiKSxpKz10LndpZHRoKCkrMyxiKG4uZWwpLmNzcygicGFkZGluZy1yaWdodCIsaSsicHgiKSxuLmhlbHBlcnMuc3VmZml4PXQpfX0sMSl9LGFkZEZvY3VzOmZ1bmN0aW9uKCl7dmFyIGkscz10aGlzO3RoaXMub3B0aW9ucztiKHMuaGVscGVycy5mb2N1cykucmVtb3ZlKCk7dmFyIGU9cGFyc2VJbnQoYihzLmVsKS5hdHRyKCJ0YWJJbmRleCIpKTtpc05hTihlKXx8LTE9PT1lfHwocy5lbC5fdGFiSW5kZXg9ZSkscy5lbC5fdGFiSW5kZXgmJihlPXMuZWwuX3RhYkluZGV4KSxudWxsPT1lJiYoZT0tMSk7dmFyIHQ9JzxkaXYgY2xhc3M9IncydWktZmllbGQtaGVscGVyIj4gICAgPGRpdiBjbGFzcz0idzJ1aS1pY29uIGljb24tc2VhcmNoIiBzdHlsZT0ib3BhY2l0eTogMDsgZGlzcGxheTogbm9uZSI+PC9kaXY+ICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgdGFiSW5kZXg9IicrZSsnIi8+PC9kaXY+JztiKHMuZWwpLmF0dHIoInRhYmluZGV4IiwtMSkuYmVmb3JlKHQpO3ZhciBuPWIocy5lbCkucHJldigpOyhzLmhlbHBlcnMuZm9jdXM9bikuY3NzKHt3aWR0aDpiKHMuZWwpLndpZHRoKCksIm1hcmdpbi10b3AiOmIocy5lbCkuY3NzKCJtYXJnaW4tdG9wIiksIm1hcmdpbi1sZWZ0IjpwYXJzZUludChiKHMuZWwpLmNzcygibWFyZ2luLWxlZnQiKSkrcGFyc2VJbnQoYihzLmVsKS5jc3MoInBhZGRpbmctbGVmdCIpKSsicHgiLCJtYXJnaW4tYm90dG9tIjpiKHMuZWwpLmNzcygibWFyZ2luLWJvdHRvbSIpLCJtYXJnaW4tcmlnaHQiOmIocy5lbCkuY3NzKCJtYXJnaW4tcmlnaHQiKX0pLmZpbmQoImlucHV0IikuY3NzKHtjdXJzb3I6ImRlZmF1bHQiLHdpZHRoOiIxMDAlIixvdXRsaW5lOiJub25lIixvcGFjaXR5OjEsbWFyZ2luOjAsYm9yZGVyOiIxcHggc29saWQgdHJhbnNwYXJlbnQiLHBhZGRpbmc6YihzLmVsKS5jc3MoInBhZGRpbmctdG9wIiksInBhZGRpbmctbGVmdCI6MCwibWFyZ2luLWxlZnQiOjAsImJhY2tncm91bmQtY29sb3IiOiJ0cmFuc3BhcmVudCJ9KSxuLmZpbmQoImlucHV0Iikub24oImNsaWNrIixmdW5jdGlvbihlKXswPT09YigiI3cydWktb3ZlcmxheSIpLmxlbmd0aCYmcy5mb2N1cyhlKSxlLnN0b3BQcm9wYWdhdGlvbigpfSkub24oImZvY3VzIixmdW5jdGlvbihlKXtpPWIocy5lbCkuYXR0cigicGxhY2Vob2xkZXIiKSxiKHMuZWwpLmNzcyh7b3V0bGluZToiYXV0byA1cHggIzdEQjRGMyIsIm91dGxpbmUtb2Zmc2V0IjoiLTJweCJ9KSxiKHRoaXMpLnZhbCgiIiksYihzLmVsKS50cmlnZ2VySGFuZGxlcigiZm9jdXMiKSxlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwfSkub24oImJsdXIiLGZ1bmN0aW9uKGUpe2Iocy5lbCkuY3NzKCJvdXRsaW5lIiwibm9uZSIpLGIodGhpcykudmFsKCIiKSxzLnJlZnJlc2goKSxiKHMuZWwpLnRyaWdnZXJIYW5kbGVyKCJibHVyIiksZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKTplLmNhbmNlbEJ1YmJsZT0hMCxudWxsIT1pJiZiKHMuZWwpLmF0dHIoInBsYWNlaG9sZGVyIixpKX0pLm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdD10aGlzO3Mua2V5RG93bihlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IiI9PT10LnZhbHVlP2Iocy5lbCkuYXR0cigicGxhY2Vob2xkZXIiLGkpOmIocy5lbCkuYXR0cigicGxhY2Vob2xkZXIiLCIiKX0sMTApfSkub24oImtleXVwIixmdW5jdGlvbihlKXtzLmtleVVwKGUpfSkub24oImtleXByZXNzIixmdW5jdGlvbihlKXtzLmtleVByZXNzKGUpfSksbi5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2IodGhpcykuZmluZCgiaW5wdXQiKS5mb2N1cygpfSkscy5yZWZyZXNoKCl9LGFkZE11bHRpOmZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLm9wdGlvbnM7YihuLmhlbHBlcnMubXVsdGkpLnJlbW92ZSgpO3ZhciBlPSIiLHQ9Im1hcmdpbi10b3AgICAgIDogMHB4OyBtYXJnaW4tYm90dG9tICA6IDBweDsgbWFyZ2luLWxlZnQgICAgOiAiK2Iobi5lbCkuY3NzKCJtYXJnaW4tbGVmdCIpKyI7IG1hcmdpbi1yaWdodCAgIDogIitiKG4uZWwpLmNzcygibWFyZ2luLXJpZ2h0IikrIjsgd2lkdGggICAgICAgICAgOiAiKyh3MnV0aWxzLmdldFNpemUobi5lbCwid2lkdGgiKS1wYXJzZUludChiKG4uZWwpLmNzcygibWFyZ2luLWxlZnQiKSwxMCktcGFyc2VJbnQoYihuLmVsKS5jc3MoIm1hcmdpbi1yaWdodCIpLDEwKSkrInB4OyI7aWYoImVudW0iPT09bi50eXBlKXt2YXIgaT1iKG4uZWwpLmF0dHIoInRhYkluZGV4Iik7aSYmLTEhPT1pJiYobi5lbC5fdGFiSW5kZXg9aSksbi5lbC5fdGFiSW5kZXgmJihpPW4uZWwuX3RhYkluZGV4KSxudWxsPT1pJiYoaT0tMSksZT0nPGRpdiBjbGFzcz0idzJ1aS1maWVsZC1oZWxwZXIgdzJ1aS1saXN0IiBzdHlsZT0iJyt0Kyc7IGJveC1zaXppbmc6IGJvcmRlci1ib3giPiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwcHg7IG1hcmdpbjogMHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2siIGNsYXNzPSJ3MnVpLW11bHRpLWl0ZW1zIj4gICAgPHVsPiAgICAgICAgPGxpIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDBweDsgcGFkZGluZy1yaWdodDogMHB4IiBjbGFzcz0ibm9tb3VzZSI+ICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDogMjBweDsgbWFyZ2luOiAtM3B4IDAgMDsgcGFkZGluZzogMnB4IDA7IGJvcmRlci1jb2xvcjogd2hpdGUiIGF1dG9jb21wbGV0ZT0ib2ZmIicrKGIobi5lbCkucHJvcCgicmVhZG9ubHkiKT8nIHJlYWRvbmx5PSJyZWFkb25seSInOiIiKSsoYihuLmVsKS5wcm9wKCJkaXNhYmxlZCIpPycgZGlzYWJsZWQ9ImRpc2FibGVkIic6IiIpKycgdGFiaW5kZXg9IicraSsnIi8+ICAgICAgICA8L2xpPiAgICA8L3VsPiAgICA8L2Rpdj48L2Rpdj4nfSJmaWxlIj09PW4udHlwZSYmKGU9JzxkaXYgY2xhc3M9IncydWktZmllbGQtaGVscGVyIHcydWktbGlzdCIgc3R5bGU9IicrdCsnOyBib3gtc2l6aW5nOiBib3JkZXItYm94Ij4gICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgdG9wOiAwcHg7IGJvdHRvbTogMHB4OyI+ICAgICAgIDxpbnB1dCBjbGFzcz0iZmlsZS1pbnB1dCIgdHlwZT0iZmlsZSIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG9wYWNpdHk6IDA7IiBuYW1lPSJhdHRhY2htZW50IiB0YWJpbmRleD0iLTEiJysoMSE9PW4ub3B0aW9ucy5tYXg/JyBtdWx0aXBsZT0ibXVsdGlwbGUiJzoiIikrKGIobi5lbCkucHJvcCgicmVhZG9ubHkiKT8nIHJlYWRvbmx5PSJyZWFkb25seSInOiIiKSsoYihuLmVsKS5wcm9wKCJkaXNhYmxlZCIpPycgZGlzYWJsZWQ9ImRpc2FibGVkIic6IiIpKyhiKG4uZWwpLmF0dHIoImFjY2VwdCIpPycgYWNjZXB0PSInK2Iobi5lbCkuYXR0cigiYWNjZXB0IikrJyInOiIiKSsnLz4gICA8L2Rpdj4gICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBwYWRkaW5nOiAwcHg7IG1hcmdpbjogMHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2siIGNsYXNzPSJ3MnVpLW11bHRpLWl0ZW1zIj4gICAgICAgIDx1bD48bGkgc3R5bGU9InBhZGRpbmctbGVmdDogMHB4OyBwYWRkaW5nLXJpZ2h0OiAwcHgiIGNsYXNzPSJub21vdXNlIj48L2xpPjwvdWw+ICAgIDwvZGl2PjwvZGl2PicpO3ZhciBzPWIobi5lbCkuZGF0YSgidG1wIil8fHt9O3NbIm9sZC1iYWNrZ3JvdW5kLWNvbG9yIl09YihuLmVsKS5jc3MoImJhY2tncm91bmQtY29sb3IiKSxzWyJvbGQtYm9yZGVyLWNvbG9yIl09YihuLmVsKS5jc3MoImJvcmRlci1jb2xvciIpLGIobi5lbCkuZGF0YSgidG1wIixzKSxiKG4uZWwpLmJlZm9yZShlKS5jc3MoeyJiYWNrZ3JvdW5kLWNvbG9yIjoidHJhbnNwYXJlbnQiLCJib3JkZXItY29sb3IiOiJ0cmFuc3BhcmVudCJ9KTt2YXIgYT1iKG4uZWwpLnByZXYoKTtuLmhlbHBlcnMubXVsdGk9YSwiZW51bSI9PT1uLnR5cGUmJihiKG4uZWwpLmF0dHIoInRhYmluZGV4IiwtMSksYS5maW5kKCJpbnB1dCIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7MD09PWIoIiN3MnVpLW92ZXJsYXkiKS5sZW5ndGgmJm4uZm9jdXMoZSksYihuLmVsKS50cmlnZ2VySGFuZGxlcigiY2xpY2siKX0pLm9uKCJmb2N1cyIsZnVuY3Rpb24oZSl7YihhKS5jc3Moe291dGxpbmU6ImF1dG8gNXB4ICM3REI0RjMiLCJvdXRsaW5lLW9mZnNldCI6Ii0ycHgifSksYihuLmVsKS50cmlnZ2VySGFuZGxlcigiZm9jdXMiKSxlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwfSkub24oImJsdXIiLGZ1bmN0aW9uKGUpe2IoYSkuY3NzKCJvdXRsaW5lIiwibm9uZSIpLGIobi5lbCkudHJpZ2dlckhhbmRsZXIoImJsdXIiKSxlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwfSkub24oImtleXVwIixmdW5jdGlvbihlKXtuLmtleVVwKGUpfSkub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe24ua2V5RG93bihlKX0pLm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24oZSl7bi5rZXlQcmVzcyhlKX0pLGEub24oImNsaWNrIixmdW5jdGlvbihlKXtiKHRoaXMpLmZpbmQoImlucHV0IikuZm9jdXMoKX0pKSwiZmlsZSI9PT1uLnR5cGUmJihiKG4uZWwpLmNzcygib3V0bGluZSIsIm5vbmUiKSxhLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7YihuLmVsKS5mb2N1cygpLGIobi5lbCkucHJvcCgicmVhZG9ubHkiKXx8YihuLmVsKS5wcm9wKCJkaXNhYmxlZCIpfHwobi5ibHVyKGUpLG4ucmVzaXplKCksc2V0VGltZW91dChmdW5jdGlvbigpe2EuZmluZCgiaW5wdXQiKS5jbGljaygpfSwxMCkpfSkub24oImRyYWdlbnRlciIsZnVuY3Rpb24oZSl7YihuLmVsKS5wcm9wKCJyZWFkb25seSIpfHxiKG4uZWwpLnByb3AoImRpc2FibGVkIil8fGIoYSkuYWRkQ2xhc3MoIncydWktZmlsZS1kcmFnb3ZlciIpfSkub24oImRyYWdsZWF2ZSIsZnVuY3Rpb24oZSl7YihuLmVsKS5wcm9wKCJyZWFkb25seSIpfHxiKG4uZWwpLnByb3AoImRpc2FibGVkIil8fDA9PT1iKGUudGFyZ2V0KS5wYXJlbnRzKCIudzJ1aS1maWVsZC1oZWxwZXIiKS5sZW5ndGgmJmIoYSkucmVtb3ZlQ2xhc3MoIncydWktZmlsZS1kcmFnb3ZlciIpfSkub24oImRyb3AiLGZ1bmN0aW9uKGUpe2lmKCFiKG4uZWwpLnByb3AoInJlYWRvbmx5IikmJiFiKG4uZWwpLnByb3AoImRpc2FibGVkIikpe2IoYSkucmVtb3ZlQ2xhc3MoIncydWktZmlsZS1kcmFnb3ZlciIpO2Zvcih2YXIgdD1lLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLGk9MCxzPXQubGVuZ3RoO2k8cztpKyspbi5hZGRGaWxlLmNhbGwobix0W2ldKTtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKX19KS5vbigiZHJhZ292ZXIiLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpfSksYS5maW5kKCJpbnB1dCIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcy5maWxlcylmb3IodmFyIGU9MCx0PXRoaXMuZmlsZXMubGVuZ3RoO2U8dDtlKyspbi5hZGRGaWxlLmNhbGwobix0aGlzLmZpbGVzW2VdKX0pKSxuLnJlZnJlc2goKX0sYWRkRmlsZTpmdW5jdGlvbihlKXt2YXIgdCxzPXRoaXMsaT10aGlzLm9wdGlvbnMsbj1iKHMuZWwpLmRhdGEoInNlbGVjdGVkIiksYT17bmFtZTplLm5hbWUsdHlwZTplLnR5cGUsbW9kaWZpZWQ6ZS5sYXN0TW9kaWZpZWREYXRlLHNpemU6ZS5zaXplLGNvbnRlbnQ6bnVsbCxmaWxlOmV9LHI9MCxsPTA7aWYobilmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7aWYobltvXS5uYW1lPT1lLm5hbWUmJm5bb10uc2l6ZT09ZS5zaXplKXJldHVybjtyKz1uW29dLnNpemUsbCsrfXZhciBkPXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiYWRkIix0YXJnZXQ6cy5lbCxmaWxlOmEsdG90YWw6bCx0b3RhbFNpemU6cn0pO2lmKCEwIT09ZC5pc0NhbmNlbGxlZCl7aWYoMCE9PWkubWF4RmlsZVNpemUmJmEuc2l6ZT5pLm1heEZpbGVTaXplKXJldHVybiB0PSJNYXhpbXVtIGZpbGUgc2l6ZSBpcyAiK3cydXRpbHMuZm9ybWF0U2l6ZShpLm1heEZpbGVTaXplKSwhMT09PWkuc2lsZW50JiZiKHMuZWwpLncydGFnKHQpLHZvaWQgY29uc29sZS5sb2coIkVSUk9SOiAiK3QpO2lmKDAhPT1pLm1heFNpemUmJnIrYS5zaXplPmkubWF4U2l6ZSlyZXR1cm4gdD13MnV0aWxzLmxhbmcoIk1heGltdW0gdG90YWwgc2l6ZSBpcyIpKyIgIit3MnV0aWxzLmZvcm1hdFNpemUoaS5tYXhTaXplKSx2b2lkKCExPT09aS5zaWxlbnQ/YihzLmVsKS53MnRhZyh0KTpjb25zb2xlLmxvZygiRVJST1I6ICIrdCkpO2lmKDAhPT1pLm1heCYmbD49aS5tYXgpcmV0dXJuIHQ9dzJ1dGlscy5sYW5nKCJNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBpcyIpKyIgIitpLm1heCx2b2lkKCExPT09aS5zaWxlbnQ/YihzLmVsKS53MnRhZyh0KTpjb25zb2xlLmxvZygiRVJST1I6ICIrdCkpO2lmKG4ucHVzaChhKSwidW5kZWZpbmVkIiE9dHlwZW9mIEZpbGVSZWFkZXImJiEwPT09aS5yZWFkQ29udGVudCl7dmFyIHU9bmV3IEZpbGVSZWFkZXI7dS5vbmxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQucmVzdWx0LGk9dC5pbmRleE9mKCIsIik7YS5jb250ZW50PXQuc3Vic3RyKGkrMSkscy5yZWZyZXNoKCksYihzLmVsKS50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpLHMudHJpZ2dlcihiLmV4dGVuZChkLHtwaGFzZToiYWZ0ZXIifSkpfSx1LnJlYWRBc0RhdGFVUkwoZSl9ZWxzZSBzLnJlZnJlc2goKSxiKHMuZWwpLnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIikscy50cmlnZ2VyKGIuZXh0ZW5kKGQse3BoYXNlOiJhZnRlciJ9KSl9fSxub3JtTWVudTpmdW5jdGlvbihlLHQpe2lmKGIuaXNBcnJheShlKSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspInN0cmluZyI9PXR5cGVvZiBlW2ldP2VbaV09e2lkOmVbaV0sdGV4dDplW2ldfTpudWxsIT1lW2ldPyhudWxsIT1lW2ldLnRleHQmJm51bGw9PWVbaV0uaWQmJihlW2ldLmlkPWVbaV0udGV4dCksbnVsbD09ZVtpXS50ZXh0JiZudWxsIT1lW2ldLmlkJiYoZVtpXS50ZXh0PWVbaV0uaWQpLG51bGwhPWVbaV0uY2FwdGlvbiYmKGVbaV0udGV4dD1lW2ldLmNhcHRpb24pKTplW2ldPXtpZDpudWxsLHRleHQ6Im51bGwifTtyZXR1cm4gZX1pZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gdzJvYmouZmllbGQucHJvdG90eXBlLm5vcm1NZW51LmNhbGwodGhpcyxlLmNhbGwodGhpcyx0KSk7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgcz1bXTtmb3IodmFyIGkgaW4gZSlzLnB1c2goe2lkOmksdGV4dDplW2ldfSk7cmV0dXJuIHN9fSxnZXRNb250aEhUTUw6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPW5ldyBEYXRlLG49dzJ1dGlscy5zZXR0aW5ncy5mdWxsbW9udGhzLGE9WyIzMSIsIjI4IiwiMzEiLCIzMCIsIjMxIiwiMzAiLCIzMSIsIjMxIiwiMzAiLCIzMSIsIjMwIiwiMzEiXSxyPXMuZ2V0RnVsbFllYXIoKSsiLyIrKE51bWJlcihzLmdldE1vbnRoKCkpKzEpKyIvIitzLmdldERhdGUoKSxsPXcydXRpbHMuc2V0dGluZ3MuZnVsbGRheXMuc2xpY2UoKSxvPXcydXRpbHMuc2V0dGluZ3Muc2hvcnRkYXlzLnNsaWNlKCk7Ik0iIT09dzJ1dGlscy5zZXR0aW5ncy53ZWVrU3RhcnRzJiYobC51bnNoaWZ0KGwucG9wKCkpLG8udW5zaGlmdChvLnBvcCgpKSk7dmFyIGQ9dGhpcy5vcHRpb25zO251bGw9PWQmJihkPXt9KSx0PXcydXRpbHMuaXNJbnQodCk/cGFyc2VJbnQodCk6cy5nZXRGdWxsWWVhcigpLDEyPChlPXcydXRpbHMuaXNJbnQoZSk/cGFyc2VJbnQoZSk6cy5nZXRNb250aCgpKzEpJiYoZS09MTIsdCsrKSwoZTwxfHwwPT09ZSkmJihlKz0xMix0LS0pLHQvND09TWF0aC5mbG9vcih0LzQpP2FbMV09IjI5IjphWzFdPSIyOCIsZC5jdXJyZW50PWUrIi8iK3Q7Zm9yKHZhciB1PShzPW5ldyBEYXRlKHQsZS0xLDEpKS5nZXREYXkoKSxjPSIiLGg9MDtoPG8ubGVuZ3RoO2grKyljKz0nPHRkIHRpdGxlPSInK2xbaF0rJyI+JytvW2hdKyI8L3RkPiI7dmFyIHA9JzxkaXYgY2xhc3M9IncydWktY2FsZW5kYXItdGl0bGUgdGl0bGUiPiAgICA8ZGl2IGNsYXNzPSJ3MnVpLWNhbGVuZGFyLXByZXZpb3VzIHByZXZpb3VzIj4gPGRpdj48L2Rpdj4gPC9kaXY+ICAgIDxkaXYgY2xhc3M9IncydWktY2FsZW5kYXItbmV4dCBuZXh0Ij4gPGRpdj48L2Rpdj4gPC9kaXY+ICcrbltlLTFdKyIsICIrdCsnPC9kaXY+PHRhYmxlIGNsYXNzPSJ3MnVpLWNhbGVuZGFyLWRheXMiIGNlbGxzcGFjaW5nPSIwIj48dGJvZHk+ICAgIDx0ciBjbGFzcz0idzJ1aS1kYXktdGl0bGUiPicrYysiPC90cj4gICAgPHRyPiIsZj0xO2lmKCJNIiE9PXcydXRpbHMuc2V0dGluZ3Mud2Vla1N0YXJ0cyYmdSsrLCJkYXRldGltZSI9PT10aGlzLnR5cGUpe3ZhciBnPXcydXRpbHMuaXNEYXRlVGltZShpLGQuZm9ybWF0LCEwKTtpPXcydXRpbHMuZm9ybWF0RGF0ZShnLHcydXRpbHMuc2V0dGluZ3MuZGF0ZUZvcm1hdCl9Zm9yKHZhciBtPTE7bTw0MzttKyspe2lmKDA9PT11JiYxPT1tKXtmb3IodmFyIHc9MDt3PDY7dysrKXArPSc8dGQgY2xhc3M9IncydWktZGF5LWVtcHR5Ij4mIzE2MDs8L3RkPic7bSs9Nn1lbHNlIGlmKG08dXx8Zj5hW2UtMV0pe3ArPSc8dGQgY2xhc3M9IncydWktZGF5LWVtcHR5Ij4mIzE2MDs8L3RkPicsbSU3PT0wJiYocCs9IjwvdHI+PHRyPiIpO2NvbnRpbnVlfXZhciB2PXQrIi8iK2UrIi8iK2YseT1uZXcgRGF0ZSh2KSxiPSIiOzY9PT15LmdldERheSgpJiYoYj0iIHcydWktc2F0dXJkYXkiKSwwPT09eS5nZXREYXkoKSYmKGI9IiB3MnVpLXN1bmRheSIpLHY9PXImJihiKz0iIHcydWktdG9kYXkiKTt2YXIgeCxfLGs9ZixDPSIiLFQ9IiI7aWYoXz0iZGF0ZXRpbWUiPT09dGhpcy50eXBlPyh4PXcydXRpbHMuZm9ybWF0RGF0ZVRpbWUodixkLmZvcm1hdCksdzJ1dGlscy5mb3JtYXREYXRlKHYsdzJ1dGlscy5zZXR0aW5ncy5kYXRlRm9ybWF0KSk6eD13MnV0aWxzLmZvcm1hdERhdGUodixkLmZvcm1hdCksZC5jb2xvcmVkJiZ2b2lkIDAhPT1kLmNvbG9yZWRbX10pe3ZhciAkPWQuY29sb3JlZFtfXS5zcGxpdCgiOiIpO1Q9ImJhY2tncm91bmQtY29sb3I6ICIrJFswXSsiOyIsQz0iY29sb3I6ICIrJFsxXSsiOyJ9cCs9Jzx0ZCBjbGFzcz0iJysodGhpcy5pblJhbmdlKHgsITApPyJ3MnVpLWRhdGUgIisoXz09aT8idzJ1aS1kYXRlLXNlbGVjdGVkIjoiIik6IncydWktYmxvY2tlZCIpK2IrJyIgICAgc3R5bGU9IicrQytUKyciIGRhdGU9IicreCsnIiBkYXRhLWRhdGU9IicreSsnIj4nK2srIjwvdGQ+IiwobSU3PT0wfHwwPT09dSYmMT09bSkmJihwKz0iPC90cj48dHI+IiksZisrfXJldHVybiBwKz0iPC90cj48L3Rib2R5PjwvdGFibGU+In0sZ2V0WWVhckhUTUw6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dzJ1dGlscy5zZXR0aW5ncy5zaG9ydG1vbnRocyx0PXcydXRpbHMuc2V0dGluZ3MuZGF0ZVN0YXJ0WWVhcixpPXcydXRpbHMuc2V0dGluZ3MuZGF0ZUVuZFllYXIscz0iIixuPSIiLGE9MDthPGUubGVuZ3RoO2ErKylzKz0nPGRpdiBjbGFzcz0idzJ1aS1qdW1wLW1vbnRoIiBuYW1lPSInK2ErJyI+JytlW2FdKyI8L2Rpdj4iO2Zvcih2YXIgcj10O3I8PWk7cisrKW4rPSc8ZGl2IGNsYXNzPSJ3MnVpLWp1bXAteWVhciIgbmFtZT0iJytyKyciPicrcisiPC9kaXY+IjtyZXR1cm4nPGRpdiBpZD0idzJ1aS1qdW1wLW1vbnRoIj4nK3MrJzwvZGl2PjxkaXYgaWQ9IncydWktanVtcC15ZWFyIj4nK24rIjwvZGl2PiJ9LGdldEhvdXJIVE1MOmZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLm9wdGlvbnM7bnVsbD09dCYmKHQ9e2Zvcm1hdDp3MnV0aWxzLnNldHRpbmdzLnRpbWVGb3JtYXR9KTtmb3IodmFyIGk9LTE8dC5mb3JtYXQuaW5kZXhPZigiaDI0Iikscz0wO3M8MjQ7cysrKXt2YXIgbj0oMTI8PXMmJiFpP3MtMTI6cykrIjowMCIrKGk/IiI6czwxMj8iIGFtIjoiIHBtIik7MTIhPXN8fGl8fChuPSIxMjowMCBwbSIpLGVbTWF0aC5mbG9vcihzLzgpXXx8KGVbTWF0aC5mbG9vcihzLzgpXT0iIik7dmFyIGE9dGhpcy5mcm9tTWluKHRoaXMudG9NaW4obikpLHI9dGhpcy5mcm9tTWluKHRoaXMudG9NaW4obikrNTkpO2lmKCJkYXRldGltZSI9PT10aGlzLnR5cGUpe3ZhciBsPXcydXRpbHMuaXNEYXRlVGltZSh0aGlzLmVsLnZhbHVlLHQuZm9ybWF0LCEwKSxvPXQuZm9ybWF0LnNwbGl0KCJ8IilbMF0udHJpbSgpO2E9dzJ1dGlscy5mb3JtYXREYXRlKGwsbykrIiAiK2Escj13MnV0aWxzLmZvcm1hdERhdGUobCxvKSsiICIrcn1lW01hdGguZmxvb3Iocy84KV0rPSc8ZGl2IGNsYXNzPSInKyh0aGlzLmluUmFuZ2UoYSl8fHRoaXMuaW5SYW5nZShyKT8idzJ1aS10aW1lICI6IncydWktYmxvY2tlZCIpKyciIGhvdXI9IicrcysnIj4nK24rIjwvZGl2PiJ9cmV0dXJuJzxkaXYgY2xhc3M9IncydWktY2FsZW5kYXIiPiAgIDxkaXYgY2xhc3M9IncydWktY2FsZW5kYXItdGl0bGUiPicrdzJ1dGlscy5sYW5nKCJTZWxlY3QgSG91ciIpKyc8L2Rpdj4gICA8ZGl2IGNsYXNzPSJ3MnVpLWNhbGVuZGFyLXRpbWUiPjx0YWJsZT48dGJvZHk+PHRyPiAgICAgICA8dGQ+JytlWzBdKyI8L3RkPiAgICAgICA8dGQ+IitlWzFdKyI8L3RkPiAgICAgICA8dGQ+IitlWzJdKyI8L3RkPiAgIDwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PiJ9LGdldE1pbkhUTUw6ZnVuY3Rpb24oZSl7bnVsbD09ZSYmKGU9MCk7dmFyIHQ9dGhpcy5vcHRpb25zO251bGw9PXQmJih0PXtmb3JtYXQ6dzJ1dGlscy5zZXR0aW5ncy50aW1lRm9ybWF0fSk7Zm9yKHZhciBpPS0xPHQuZm9ybWF0LmluZGV4T2YoImgyNCIpLHM9W10sbj0wO248NjA7bis9NSl7dmFyIGE9KDEyPGUmJiFpP2UtMTI6ZSkrIjoiKyhuPDEwPzA6IiIpK24rIiAiKyhpPyIiOmU8MTI/ImFtIjoicG0iKSxyPWEsbD1uPDIwPzA6bjw0MD8xOjI7aWYoc1tsXXx8KHNbbF09IiIpLCJkYXRldGltZSI9PT10aGlzLnR5cGUpe3ZhciBvPXcydXRpbHMuaXNEYXRlVGltZSh0aGlzLmVsLnZhbHVlLHQuZm9ybWF0LCEwKSxkPXQuZm9ybWF0LnNwbGl0KCJ8IilbMF0udHJpbSgpO3I9dzJ1dGlscy5mb3JtYXREYXRlKG8sZCkrIiAiK3J9c1tsXSs9JzxkaXYgY2xhc3M9IicrKHRoaXMuaW5SYW5nZShyKT8idzJ1aS10aW1lICI6IncydWktYmxvY2tlZCIpKyciIG1pbj0iJytuKyciPicrYSsiPC9kaXY+In1yZXR1cm4nPGRpdiBjbGFzcz0idzJ1aS1jYWxlbmRhciI+ICAgPGRpdiBjbGFzcz0idzJ1aS1jYWxlbmRhci10aXRsZSI+Jyt3MnV0aWxzLmxhbmcoIlNlbGVjdCBNaW51dGUiKSsnPC9kaXY+ICAgPGRpdiBjbGFzcz0idzJ1aS1jYWxlbmRhci10aW1lIj48dGFibGU+PHRib2R5Pjx0cj4gICAgICAgPHRkPicrc1swXSsiPC90ZD4gICAgICAgPHRkPiIrc1sxXSsiPC90ZD4gICAgICAgPHRkPiIrc1syXSsiPC90ZD4gICA8L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj4ifSx0b01pbjpmdW5jdGlvbihlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dmFyIHQ9ZS5zcGxpdCgiOiIpO3JldHVybiAyIT09dC5sZW5ndGg/bnVsbDoodFswXT1wYXJzZUludCh0WzBdKSx0WzFdPXBhcnNlSW50KHRbMV0pLC0xIT09ZS5pbmRleE9mKCJwbSIpJiYxMiE9PXRbMF0mJih0WzBdKz0xMiksNjAqdFswXSt0WzFdKX0sZnJvbU1pbjpmdW5jdGlvbihlKXsxNDQwPD1lJiYoZSU9MTQ0MCksZTwwJiYoZT0xNDQwK2UpO3ZhciB0PU1hdGguZmxvb3IoZS82MCksaT0oZSU2MDwxMD8iMCI6IiIpK2UlNjAscz10aGlzLm9wdGlvbnM7cmV0dXJuIG51bGw9PXMmJihzPXtmb3JtYXQ6dzJ1dGlscy5zZXR0aW5ncy50aW1lRm9ybWF0fSksLTEhPT1zLmZvcm1hdC5pbmRleE9mKCJoMjQiKT90KyI6IitpOih0PD0xMj90OnQtMTIpKyI6IitpKyIgIisoMTI8PXQ/InBtIjoiYW0iKX19LGIuZXh0ZW5kKG4ucHJvdG90eXBlLHcydXRpbHMuZXZlbnQpLHcyb2JqLmZpZWxkPW59KGpRdWVyeSksZnVuY3Rpb24oJCl7dmFyIHcyZm9ybT1mdW5jdGlvbihlKXt0aGlzLm5hbWU9bnVsbCx0aGlzLmhlYWRlcj0iIix0aGlzLmJveD1udWxsLHRoaXMudXJsPSIiLHRoaXMucm91dGVEYXRhPXt9LHRoaXMuZm9ybVVSTD0iIix0aGlzLmZvcm1IVE1MPSIiLHRoaXMucGFnZT0wLHRoaXMucmVjaWQ9MCx0aGlzLmZpZWxkcz1bXSx0aGlzLmFjdGlvbnM9e30sdGhpcy5yZWNvcmQ9e30sdGhpcy5vcmlnaW5hbD1udWxsLHRoaXMucG9zdERhdGE9e30sdGhpcy5odHRwSGVhZGVycz17fSx0aGlzLm1ldGhvZD1udWxsLHRoaXMudG9vbGJhcj17fSx0aGlzLnRhYnM9e30sdGhpcy5zdHlsZT0iIix0aGlzLmZvY3VzPTAsdGhpcy5hdXRvc2l6ZT0hMCx0aGlzLm5lc3RlZEZpZWxkcz0hMCx0aGlzLm11bHRpcGFydD0hMSx0aGlzLnRhYmluZGV4QmFzZT0wLHRoaXMuaXNHZW5lcmF0ZWQ9ITEsdGhpcy5sYXN0PXt4aHI6bnVsbCxlcnJvcnM6W119LCQuZXh0ZW5kKCEwLHRoaXMsdzJvYmouZm9ybSxlKX07JC5mbi53MmZvcm09ZnVuY3Rpb24oZSl7aWYoJC5pc1BsYWluT2JqZWN0KGUpKXt2YXIgdD10aGlzO2lmKCF3MnV0aWxzLmNoZWNrTmFtZShlLCJ3MmZvcm0iKSlyZXR1cm47dmFyIGk9ZS5yZWNvcmQscz1lLm9yaWdpbmFsLG49ZS5maWVsZHMsYT1lLnRvb2xiYXIscj1lLnRhYnMsbD1uZXcgdzJmb3JtKGUpO2lmKCQuZXh0ZW5kKGwse3JlY29yZDp7fSxvcmlnaW5hbDpudWxsLGZpZWxkczpbXSx0YWJzOnt9LHRvb2xiYXI6e30saGFuZGxlcnM6W119KSwkLmlzQXJyYXkocikpeyQuZXh0ZW5kKCEwLGwudGFicyx7dGFiczpbXX0pO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXt2YXIgZD1yW29dOyJvYmplY3QiPT10eXBlb2YgZD8obC50YWJzLnRhYnMucHVzaChkKSwhMD09PWQuYWN0aXZlJiYobC50YWJzLmFjdGl2ZT1kLmlkKSk6bC50YWJzLnRhYnMucHVzaCh7aWQ6ZCx0ZXh0OmR9KX19ZWxzZSAkLmV4dGVuZCghMCxsLnRhYnMscik7aWYoJC5leHRlbmQoITAsbC50b29sYmFyLGEpLG4pZm9yKHZhciB1PTA7dTxuLmxlbmd0aDt1Kyspe3ZhciBjPSQuZXh0ZW5kKCEwLHt9LG5bdV0pO251bGw9PWMuZmllbGQmJm51bGwhPWMubmFtZSYmKGNvbnNvbGUubG9nKCJOT1RJQ0U6IGZvcm0gZmllbGQubmFtZSBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGZpZWxkLmZpZWxkLiBGaWVsZCAtPiIsYyksYy5maWVsZD1jLm5hbWUpLGwuZmllbGRzW3VdPWN9Zm9yKHZhciB1IGluIGkpJC5pc1BsYWluT2JqZWN0KGlbdV0pP2wucmVjb3JkW3VdPSQuZXh0ZW5kKCEwLHt9LGlbdV0pOmwucmVjb3JkW3VdPWlbdV07Zm9yKHZhciB1IGluIHMpJC5pc1BsYWluT2JqZWN0KHNbdV0pP2wub3JpZ2luYWxbdV09JC5leHRlbmQoITAse30sc1t1XSk6bC5vcmlnaW5hbFt1XT1zW3VdO3JldHVybiAwPHQubGVuZ3RoJiYobC5ib3g9dFswXSksIiIhPT1sLmZvcm1VUkw/JC5nZXQobC5mb3JtVVJMLGZ1bmN0aW9uKGUpe2wuZm9ybUhUTUw9ZSxsLmlzR2VuZXJhdGVkPSEwLDA9PT0kKGwuYm94KS5sZW5ndGgmJjA9PT1lLmxlbmd0aHx8KCQobC5ib3gpLmh0bWwoZSksbC5yZW5kZXIobC5ib3gpKX0pOiIiIT09bC5mb3JtSFRNTHx8KDAhPT0kKHRoaXMpLmxlbmd0aCYmIiIhPT0kLnRyaW0oJCh0aGlzKS5odG1sKCkpP2wuZm9ybUhUTUw9JCh0aGlzKS5odG1sKCk6bC5mb3JtSFRNTD1sLmdlbmVyYXRlSFRNTCgpKSwiIj09PSh3MnVpW2wubmFtZV09bCkuZm9ybVVSTCYmKC0xPT09U3RyaW5nKGwuZm9ybUhUTUwpLmluZGV4T2YoIncydWktcGFnZSIpJiYobC5mb3JtSFRNTD0nPGRpdiBjbGFzcz0idzJ1aS1wYWdlIHBhZ2UtMCIgc3R5bGU9IicrKGwucGFnZVN0eWxlfHwiIikrJyI+JytsLmZvcm1IVE1MKyI8L2Rpdj4iKSwkKGwuYm94KS5odG1sKGwuZm9ybUhUTUwpLGwuaXNHZW5lcmF0ZWQ9ITAsbC5yZW5kZXIobC5ib3gpKSxsfXJldHVybih0PXcydWlbJCh0aGlzKS5hdHRyKCJuYW1lIildKT8wPGFyZ3VtZW50cy5sZW5ndGg/KHRbZV0mJnRbZV0uYXBwbHkodCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpLHRoaXMpOnQ6bnVsbH0sdzJmb3JtLnByb3RvdHlwZT17b25SZXF1ZXN0Om51bGwsb25Mb2FkOm51bGwsb25WYWxpZGF0ZTpudWxsLG9uU3VibWl0Om51bGwsb25Qcm9ncmVzczpudWxsLG9uU2F2ZTpudWxsLG9uQ2hhbmdlOm51bGwsb25JbnB1dDpudWxsLG9uUmVuZGVyOm51bGwsb25SZWZyZXNoOm51bGwsb25SZXNpemU6bnVsbCxvbkRlc3Ryb3k6bnVsbCxvbkFjdGlvbjpudWxsLG9uVG9vbGJhcjpudWxsLG9uRXJyb3I6bnVsbCxtc2dOb3RKU09OOiJSZXR1cm5lZCBkYXRhIGlzIG5vdCBpbiB2YWxpZCBKU09OIGZvcm1hdC4iLG1zZ0FKQVhlcnJvcjoiQUpBWCBlcnJvci4gU2VlIGNvbnNvbGUgZm9yIG1vcmUgZGV0YWlscy4iLG1zZ1JlZnJlc2g6IkxvYWRpbmcuLi4iLG1zZ1NhdmluZzoiU2F2aW5nLi4uIixnZXQ6ZnVuY3Rpb24oZSx0KXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBpPVtdLHM9MDtzPHRoaXMuZmllbGRzLmxlbmd0aDtzKyspbnVsbCE9dGhpcy5maWVsZHNbc10uZmllbGQmJmkucHVzaCh0aGlzLmZpZWxkc1tzXS5maWVsZCk7cmV0dXJuIGl9Zm9yKHZhciBuPTA7bjx0aGlzLmZpZWxkcy5sZW5ndGg7bisrKWlmKHRoaXMuZmllbGRzW25dLmZpZWxkPT1lKXJldHVybiEwPT09dD9uOnRoaXMuZmllbGRzW25dO3JldHVybiBudWxsfSxzZXQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9MDtpPHRoaXMuZmllbGRzLmxlbmd0aDtpKyspaWYodGhpcy5maWVsZHNbaV0uZmllbGQ9PWUpcmV0dXJuICQuZXh0ZW5kKHRoaXMuZmllbGRzW2ldLHQpLHRoaXMucmVmcmVzaChlKSwhMDtyZXR1cm4hMX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5uZXN0ZWRGaWVsZHMpe3ZhciB0PXZvaWQgMDt0cnl7dmFyIGk9dGhpcy5yZWNvcmQ7dD1TdHJpbmcoZSkuc3BsaXQoIi4iKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XX0saSl9Y2F0Y2goZSl7fXJldHVybiB0fXJldHVybiB0aGlzLnJlY29yZFtlXX0sc2V0VmFsdWU6ZnVuY3Rpb24oZSxzKXtpZighdGhpcy5uZXN0ZWRGaWVsZHMpcmV0dXJuIHRoaXMucmVjb3JkW2VdPXMsITA7dHJ5e3ZhciBuPXRoaXMucmVjb3JkO3JldHVybiBTdHJpbmcoZSkuc3BsaXQoIi4iKS5tYXAoZnVuY3Rpb24oZSx0LGkpe2kubGVuZ3RoLTEhPT10P249KG5bZV18fChuW2VdPXt9KSxuW2VdKTpuW2VdPXN9KSwhMH1jYXRjaChlKXtyZXR1cm4hMX19LHNob3c6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBpPXRoaXMuZ2V0KGFyZ3VtZW50c1t0XSk7aSYmaS5oaWRkZW4mJihpLmhpZGRlbj0hMSxlLnB1c2goaS5maWVsZCkpfXJldHVybiAwPGUubGVuZ3RoJiZ0aGlzLnJlZnJlc2guYXBwbHkodGhpcyxlKSxlLmxlbmd0aH0saGlkZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5nZXQoYXJndW1lbnRzW3RdKTtpJiYhaS5oaWRkZW4mJihpLmhpZGRlbj0hMCxlLnB1c2goaS5maWVsZCkpfXJldHVybiAwPGUubGVuZ3RoJiZ0aGlzLnJlZnJlc2guYXBwbHkodGhpcyxlKSxlLmxlbmd0aH0sZW5hYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLmdldChhcmd1bWVudHNbdF0pO2kmJmkuZGlzYWJsZWQmJihpLmRpc2FibGVkPSExLGUucHVzaChpLmZpZWxkKSl9cmV0dXJuIDA8ZS5sZW5ndGgmJnRoaXMucmVmcmVzaC5hcHBseSh0aGlzLGUpLGUubGVuZ3RofSxkaXNhYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLmdldChhcmd1bWVudHNbdF0pO2kmJiFpLmRpc2FibGVkJiYoaS5kaXNhYmxlZD0hMCxlLnB1c2goaS5maWVsZCkpfXJldHVybiAwPGUubGVuZ3RoJiZ0aGlzLnJlZnJlc2guYXBwbHkodGhpcyxlKSxlLmxlbmd0aH0sY2hhbmdlOmZ1bmN0aW9uKCl7QXJyYXkuZnJvbShhcmd1bWVudHMpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQoZSk7dC4kZWwmJnQuJGVsLmNoYW5nZSgpfS5iaW5kKHRoaXMpKX0scmVsb2FkOmZ1bmN0aW9uKGUpeygib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsP3RoaXMudXJsOnRoaXMudXJsLmdldCkmJjAhPT10aGlzLnJlY2lkJiZudWxsIT10aGlzLnJlY2lkP3RoaXMucmVxdWVzdChlKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZSgpfSxjbGVhcjpmdW5jdGlvbigpezAhPWFyZ3VtZW50cy5sZW5ndGg/QXJyYXkuZnJvbShhcmd1bWVudHMpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9dGhpcy5yZWNvcmQ7U3RyaW5nKGUpLnNwbGl0KCIuIikubWFwKGZ1bmN0aW9uKGUsdCxpKXtpLmxlbmd0aC0xIT09dD9zPXNbZV06ZGVsZXRlIHNbZV19KSx0aGlzLnJlZnJlc2goZSl9LmJpbmQodGhpcykpOih0aGlzLnJlY2lkPTAsdGhpcy5yZWNvcmQ9e30sdGhpcy5vcmlnaW5hbD1udWxsLHRoaXMucmVmcmVzaCgpKSwkKCkudzJ0YWcoKX0sZXJyb3I6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudHJpZ2dlcih7dGFyZ2V0OnRoaXMubmFtZSx0eXBlOiJlcnJvciIsbWVzc2FnZTplLHhocjp0aGlzLmxhc3QueGhyfSk7ITAhPT1pLmlzQ2FuY2VsbGVkPyhzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5tZXNzYWdlKGUpfSwxKSx0aGlzLnRyaWdnZXIoJC5leHRlbmQoaSx7cGhhc2U6ImFmdGVyIn0pKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGNhbGxCYWNrJiZjYWxsQmFjaygpfSxtZXNzYWdlOmZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9e3dpZHRoOmUubGVuZ3RoPDMwMD8zNTA6NTUwLGhlaWdodDplLmxlbmd0aDwzMDA/MTcwOjI1MCxib2R5Oic8ZGl2IGNsYXNzPSJ3MnVpLWNlbnRlcmVkIj4nK2UrIjwvZGl2PiIsYnV0dG9uczonPGJ1dHRvbiBjbGFzcz0idzJ1aS1idG4iIG9uY2xpY2s9IncydWlbXCcnK3RoaXMubmFtZSsiJ10ubWVzc2FnZSgpXCI+T2s8L2J1dHRvbj4iLG9uT3BlbjpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JChlLmJveCkuZmluZCgiLncydWktYnRuIikuZm9jdXMoKX0sMjUpfX0pLHcydXRpbHMubWVzc2FnZS5jYWxsKHRoaXMse2JveDp0aGlzLmJveCxwYXRoOiJ3MnVpLiIrdGhpcy5uYW1lLHRpdGxlOiIudzJ1aS1mb3JtLWhlYWRlcjp2aXNpYmxlIixib2R5OiIudzJ1aS1mb3JtLWJveCJ9LGUpfSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtudWxsPT1lJiYoZT0hMCksJCgpLncydGFnKCk7Zm9yKHZhciB0PVtdLGk9MDtpPHRoaXMuZmllbGRzLmxlbmd0aDtpKyspe3ZhciBzPXRoaXMuZmllbGRzW2ldO3N3aXRjaChudWxsPT10aGlzLmdldFZhbHVlKHMuZmllbGQpJiZ0aGlzLnNldFZhbHVlKHMuZmllbGQsIiIpLHMudHlwZSl7Y2FzZSJpbnQiOnRoaXMuZ2V0VmFsdWUocy5maWVsZCkmJiF3MnV0aWxzLmlzSW50KHRoaXMuZ2V0VmFsdWUocy5maWVsZCkpJiZ0LnB1c2goe2ZpZWxkOnMsZXJyb3I6dzJ1dGlscy5sYW5nKCJOb3QgYW4gaW50ZWdlciIpfSk7YnJlYWs7Y2FzZSJmbG9hdCI6dGhpcy5nZXRWYWx1ZShzLmZpZWxkKSYmIXcydXRpbHMuaXNGbG9hdCh0aGlzLmdldFZhbHVlKHMuZmllbGQpKSYmdC5wdXNoKHtmaWVsZDpzLGVycm9yOncydXRpbHMubGFuZygiTm90IGEgZmxvYXQiKX0pO2JyZWFrO2Nhc2UibW9uZXkiOnRoaXMuZ2V0VmFsdWUocy5maWVsZCkmJiF3MnV0aWxzLmlzTW9uZXkodGhpcy5nZXRWYWx1ZShzLmZpZWxkKSkmJnQucHVzaCh7ZmllbGQ6cyxlcnJvcjp3MnV0aWxzLmxhbmcoIk5vdCBpbiBtb25leSBmb3JtYXQiKX0pO2JyZWFrO2Nhc2UiY29sb3IiOmNhc2UiaGV4Ijp0aGlzLmdldFZhbHVlKHMuZmllbGQpJiYhdzJ1dGlscy5pc0hleCh0aGlzLmdldFZhbHVlKHMuZmllbGQpKSYmdC5wdXNoKHtmaWVsZDpzLGVycm9yOncydXRpbHMubGFuZygiTm90IGEgaGV4IG51bWJlciIpfSk7YnJlYWs7Y2FzZSJlbWFpbCI6dGhpcy5nZXRWYWx1ZShzLmZpZWxkKSYmIXcydXRpbHMuaXNFbWFpbCh0aGlzLmdldFZhbHVlKHMuZmllbGQpKSYmdC5wdXNoKHtmaWVsZDpzLGVycm9yOncydXRpbHMubGFuZygiTm90IGEgdmFsaWQgZW1haWwiKX0pO2JyZWFrO2Nhc2UiY2hlY2tib3giOjE9PXRoaXMuZ2V0VmFsdWUocy5maWVsZCk/dGhpcy5zZXRWYWx1ZShzLmZpZWxkLDEpOnRoaXMuc2V0VmFsdWUocy5maWVsZCwwKTticmVhaztjYXNlImRhdGUiOnMub3B0aW9ucy5mb3JtYXR8fChzLm9wdGlvbnMuZm9ybWF0PXcydXRpbHMuc2V0dGluZ3MuZGF0ZUZvcm1hdCksdGhpcy5nZXRWYWx1ZShzLmZpZWxkKSYmIXcydXRpbHMuaXNEYXRlKHRoaXMuZ2V0VmFsdWUocy5maWVsZCkscy5vcHRpb25zLmZvcm1hdCkmJnQucHVzaCh7ZmllbGQ6cyxlcnJvcjp3MnV0aWxzLmxhbmcoIk5vdCBhIHZhbGlkIGRhdGUiKSsiOiAiK3Mub3B0aW9ucy5mb3JtYXR9KX12YXIgbj10aGlzLmdldFZhbHVlKHMuZmllbGQpO3MucmVxdWlyZWQmJiEwIT09cy5oaWRkZW4mJi0xPT1bImRpdiIsImN1c3RvbSIsImh0bWwiLCJlbXB0eSJdLmluZGV4T2Yocy50eXBlKSYmKCIiPT09bnx8JC5pc0FycmF5KG4pJiYwPT09bi5sZW5ndGh8fCQuaXNQbGFpbk9iamVjdChuKSYmJC5pc0VtcHR5T2JqZWN0KG4pKSYmdC5wdXNoKHtmaWVsZDpzLGVycm9yOncydXRpbHMubGFuZygiUmVxdWlyZWQgZmllbGQiKX0pLHMub3B0aW9ucyYmITAhPT1zLmhpZGRlbiYmMDxzLm9wdGlvbnMubWluTGVuZ3RoJiYtMT09WyJlbnVtIiwibGlzdCIsImNvbWJvIl0uaW5kZXhPZihzLnR5cGUpJiZ0aGlzLmdldFZhbHVlKHMuZmllbGQpLmxlbmd0aDxzLm9wdGlvbnMubWluTGVuZ3RoJiZ0LnB1c2goe2ZpZWxkOnMsZXJyb3I6dzJ1dGlscy5sYW5nKCJGaWVsZCBzaG91bGQgYmUgYXQgbGVhc3QgIitzLm9wdGlvbnMubWluTGVuZ3RoKyIgY2hhcmFjdGVycy4iKX0pfXZhciBhPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdGFyZ2V0OnRoaXMubmFtZSx0eXBlOiJ2YWxpZGF0ZSIsZXJyb3JzOnR9KTtpZighMCE9PWEuaXNDYW5jZWxsZWQpcmV0dXJuIHRoaXMubGFzdC5lcnJvcnM9dCxlJiZ0aGlzLnNob3dFcnJvcnMoKSx0aGlzLnRyaWdnZXIoJC5leHRlbmQoYSx7cGhhc2U6ImFmdGVyIn0pKSx0fSxzaG93RXJyb3JzOmZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5sYXN0LmVycm9ycztpZigwPHMubGVuZ3RoKXt2YXIgZT1zWzBdO3RoaXMuZ290byhzWzBdLmZpZWxkLnBhZ2UpLCQoZS5maWVsZC4kZWwpLnBhcmVudHMoIi53MnVpLWZpZWxkIilbMF0uc2Nyb2xsSW50b1ZpZXcoITApO2Zvcih2YXIgdD0wO3Q8cy5sZW5ndGg7dCsrKXtlPXNbdF07dmFyIGk9JC5leHRlbmQoe2NsYXNzOiJ3MnVpLWVycm9yIixoaWRlT25Gb2N1czohMH0sZS5vcHRpb25zKTtudWxsIT1lLmZpZWxkJiYoInJhZGlvIj09PWUuZmllbGQudHlwZT8kKCQoZS5maWVsZC5lbCkuY2xvc2VzdCgiZGl2IilbMF0pLncydGFnKGUuZXJyb3IsaSk6LTEhPT1bImVudW0iLCJmaWxlIl0uaW5kZXhPZihlLmZpZWxkLnR5cGUpP2Z1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT0kKHQuZmllbGQuZWwpLmRhdGEoIncyZmllbGQiKS5oZWxwZXJzLm11bHRpOyQodC5maWVsZC5lbCkudzJ0YWcodC5lcnJvcix0Lm9wdGlvbnMpLCQoZSkuYWRkQ2xhc3MoIncydWktZXJyb3IiKX0sMSl9KGUpOiQoZS5maWVsZC5lbCkudzJ0YWcoZS5lcnJvcixpKSl9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBpPXNbMF07JChpLmZpZWxkLiRlbCkucGFyZW50cygiLncydWktcGFnZSIpLm9mZigiLmhpZGVFcnJvcnMiKS5vbigic2Nyb2xsLmhpZGVFcnJvcnMiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8cy5sZW5ndGg7dCsrKWk9c1t0XSwkKGkuZmllbGQuZWwpLncydGFnKCk7JChpLmZpZWxkLiRlbCkucGFyZW50cygiLncydWktcGFnZSIpLm9mZigiLmhpZGVFcnJvcnMiKX0pfSwzMDApfX0sZ2V0Q2hhbmdlczpmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBudWxsPT10aGlzLm9yaWdpbmFsfHwib2JqZWN0IiE9dHlwZW9mIHRoaXMub3JpZ2luYWx8fCQuaXNFbXB0eU9iamVjdCh0aGlzLnJlY29yZCl8fChlPWZ1bmN0aW9uIGUodCxpLHMpe2Zvcih2YXIgbiBpbiB0KSJvYmplY3QiPT10eXBlb2YgdFtuXT8oc1tuXT1lKHRbbl0saVtuXXx8e30se30pLHNbbl0mJiEkLmlzRW1wdHlPYmplY3Qoc1tuXSl8fGRlbGV0ZSBzW25dKTp0W25dIT1pW25dJiYoc1tuXT10W25dKTtyZXR1cm4gc30odGhpcy5yZWNvcmQsdGhpcy5vcmlnaW5hbCx7fSkpLGV9LGdldENsZWFuUmVjb3JkOmZ1bmN0aW9uKGUpe3ZhciBzPSQuZXh0ZW5kKCEwLHt9LHRoaXMucmVjb3JkKTtyZXR1cm4gdGhpcy5maWVsZHMuZm9yRWFjaChmdW5jdGlvbihlKXtpZigtMSE9WyJsaXN0IiwiY29tYm8iLCJlbnVtIl0uaW5kZXhPZihlLnR5cGUpKXt2YXIgdD17bmVzdGVkRmllbGRzOiEwLHJlY29yZDpzfSxpPXRoaXMuZ2V0VmFsdWUuY2FsbCh0LGUuZmllbGQpOyQuaXNQbGFpbk9iamVjdChpKSYmaS5pZCYmdGhpcy5zZXRWYWx1ZS5jYWxsKHQsZS5maWVsZCxpLmlkKSxBcnJheS5pc0FycmF5KGkpJiZpLmZvckVhY2goZnVuY3Rpb24oZSx0KXskLmlzUGxhaW5PYmplY3QoZSkmJmUuaWQmJihpW3RdPWUuaWQpfSl9aWYoIm1hcCI9PWUudHlwZSl7dD17bmVzdGVkRmllbGRzOiEwLHJlY29yZDpzfTsoaT10aGlzLmdldFZhbHVlLmNhbGwodCxlLmZpZWxkKSkuX29yZGVyJiZkZWxldGUgaS5fb3JkZXJ9fS5iaW5kKHRoaXMpKSwhMD09PWUmJk9iamVjdC5rZXlzKHMpLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5nZXQoZSl8fGRlbGV0ZSBzW2VdfS5iaW5kKHRoaXMpKSxzfSxyZXF1ZXN0OmZ1bmN0aW9uKHBvc3REYXRhLGNhbGxCYWNrKXt2YXIgb2JqPXRoaXM7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHBvc3REYXRhJiYoY2FsbEJhY2s9cG9zdERhdGEscG9zdERhdGE9bnVsbCksbnVsbD09cG9zdERhdGEmJihwb3N0RGF0YT17fSksdGhpcy51cmwmJigib2JqZWN0IiE9dHlwZW9mIHRoaXMudXJsfHx0aGlzLnVybC5nZXQpKXtudWxsPT10aGlzLnJlY2lkJiYodGhpcy5yZWNpZD0wKTt2YXIgcGFyYW1zPXtjbWQ6ImdldCJ9O3BhcmFtcy5yZWNpZD10aGlzLnJlY2lkLHBhcmFtcy5uYW1lPXRoaXMubmFtZSwkLmV4dGVuZChwYXJhbXMsdGhpcy5wb3N0RGF0YSksJC5leHRlbmQocGFyYW1zLHBvc3REYXRhKTt2YXIgZWRhdGE9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJyZXF1ZXN0Iix0YXJnZXQ6dGhpcy5uYW1lLHVybDp0aGlzLnVybCxwb3N0RGF0YTpwYXJhbXMsaHR0cEhlYWRlcnM6dGhpcy5odHRwSGVhZGVyc30pO2lmKCEwIT09ZWRhdGEuaXNDYW5jZWxsZWQpe3RoaXMucmVjb3JkPXt9LHRoaXMub3JpZ2luYWw9bnVsbCx0aGlzLmxvY2sodzJ1dGlscy5sYW5nKHRoaXMubXNnUmVmcmVzaCkpO3ZhciB1cmw9ZWRhdGEudXJsO2lmKCJvYmplY3QiPT10eXBlb2YgZWRhdGEudXJsJiZlZGF0YS51cmwuZ2V0JiYodXJsPWVkYXRhLnVybC5nZXQpLHRoaXMubGFzdC54aHIpdHJ5e3RoaXMubGFzdC54aHIuYWJvcnQoKX1jYXRjaChlKXt9aWYoISQuaXNFbXB0eU9iamVjdChvYmoucm91dGVEYXRhKSl7dmFyIGluZm89dzJ1dGlscy5wYXJzZVJvdXRlKHVybCk7aWYoMDxpbmZvLmtleXMubGVuZ3RoKWZvcih2YXIgaz0wO2s8aW5mby5rZXlzLmxlbmd0aDtrKyspbnVsbCE9b2JqLnJvdXRlRGF0YVtpbmZvLmtleXNba10ubmFtZV0mJih1cmw9dXJsLnJlcGxhY2UobmV3IFJlZ0V4cCgiOiIraW5mby5rZXlzW2tdLm5hbWUsImciKSxvYmoucm91dGVEYXRhW2luZm8ua2V5c1trXS5uYW1lXSkpfXZhciBhamF4T3B0aW9ucz17dHlwZToiUE9TVCIsdXJsOnVybCxkYXRhOmVkYXRhLnBvc3REYXRhLGhlYWRlcnM6ZWRhdGEuaHR0cEhlYWRlcnMsZGF0YVR5cGU6InRleHQifSxkYXRhVHlwZT1vYmouZGF0YVR5cGV8fHcydXRpbHMuc2V0dGluZ3MuZGF0YVR5cGU7c3dpdGNoKGVkYXRhLmRhdGFUeXBlJiYoZGF0YVR5cGU9ZWRhdGEuZGF0YVR5cGUpLGRhdGFUeXBlKXtjYXNlIkhUVFAiOmFqYXhPcHRpb25zLmRhdGE9U3RyaW5nKCQucGFyYW0oYWpheE9wdGlvbnMuZGF0YSwhMSkpLnJlcGxhY2UoLyU1Qi9nLCJbIikucmVwbGFjZSgvJTVEL2csIl0iKTticmVhaztjYXNlIkhUVFBKU09OIjphamF4T3B0aW9ucy5kYXRhPXtyZXF1ZXN0OkpTT04uc3RyaW5naWZ5KGFqYXhPcHRpb25zLmRhdGEpfTticmVhaztjYXNlIlJFU1RGVUxMIjphamF4T3B0aW9ucy50eXBlPSJHRVQiLGFqYXhPcHRpb25zLmRhdGE9U3RyaW5nKCQucGFyYW0oYWpheE9wdGlvbnMuZGF0YSwhMSkpLnJlcGxhY2UoLyU1Qi9nLCJbIikucmVwbGFjZSgvJTVEL2csIl0iKTticmVhaztjYXNlIlJFU1RGVUxMSlNPTiI6YWpheE9wdGlvbnMudHlwZT0iR0VUIixhamF4T3B0aW9ucy5kYXRhPUpTT04uc3RyaW5naWZ5KGFqYXhPcHRpb25zLmRhdGEpLGFqYXhPcHRpb25zLmNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi9qc29uIjticmVhaztjYXNlIkpTT04iOmFqYXhPcHRpb25zLnR5cGU9IlBPU1QiLGFqYXhPcHRpb25zLmRhdGE9SlNPTi5zdHJpbmdpZnkoYWpheE9wdGlvbnMuZGF0YSksYWpheE9wdGlvbnMuY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL2pzb24ifXRoaXMubWV0aG9kJiYoYWpheE9wdGlvbnMudHlwZT10aGlzLm1ldGhvZCksZWRhdGEubWV0aG9kJiYoYWpheE9wdGlvbnMudHlwZT1lZGF0YS5tZXRob2QpLHRoaXMubGFzdC54aHI9JC5hamF4KGFqYXhPcHRpb25zKS5kb25lKGZ1bmN0aW9uKGRhdGEsc3RhdHVzLHhocil7dmFyIGRhdGE7b2JqLnVubG9jaygpO3ZhciByZXNwb25zZVRleHQ9eGhyLnJlc3BvbnNlVGV4dDtpZigiZXJyb3IiIT09c3RhdHVzJiZudWxsIT1yZXNwb25zZVRleHQmJiIiIT09cmVzcG9uc2VUZXh0KXtpZigib2JqZWN0Ij09dHlwZW9mIHJlc3BvbnNlVGV4dClkYXRhPXJlc3BvbnNlVGV4dDtlbHNlIHRyeXtldmFsKCJkYXRhID0gIityZXNwb25zZVRleHQpfWNhdGNoKGUpe31udWxsPT1kYXRhJiYoZGF0YT17c3RhdHVzOiJlcnJvciIsbWVzc2FnZTp3MnV0aWxzLmxhbmcob2JqLm1zZ05vdEpTT04pLHJlc3BvbnNlVGV4dDpyZXNwb25zZVRleHR9KX12YXIgZWRhdGE9b2JqLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDpvYmoubmFtZSx0eXBlOiJsb2FkIixkYXRhOmRhdGEseGhyOnhocn0pOyEwIT09ZWRhdGEuaXNDYW5jZWxsZWQ/KCJlcnJvciIhPT1zdGF0dXM/ImVycm9yIj09PWVkYXRhLmRhdGEuc3RhdHVzP29iai5lcnJvcih3MnV0aWxzLmxhbmcoZWRhdGEuZGF0YS5tZXNzYWdlKSk6b2JqLnJlY29yZD0kLmV4dGVuZCh7fSxlZGF0YS5kYXRhLnJlY29yZCk6KG9iai5lcnJvcigiQUpBWCBFcnJvciAiK3hoci5zdGF0dXMrIjogIit4aHIuc3RhdHVzVGV4dCksZWRhdGEuZGF0YT17c3RhdHVzOiJlcnJvciIsbWVzc2FnZTp3MnV0aWxzLmxhbmcob2JqLm1zZ0FKQVhlcnJvcikscmVzcG9uc2VUZXh0OnJlc3BvbnNlVGV4dH0pLG9iai50cmlnZ2VyKCQuZXh0ZW5kKGVkYXRhLHtwaGFzZToiYWZ0ZXIifSkpLG9iai5yZWZyZXNoKCksb2JqLmFwcGx5Rm9jdXMoKSwiZnVuY3Rpb24iPT10eXBlb2YgY2FsbEJhY2smJmNhbGxCYWNrKGVkYXRhLmRhdGEpKToiZnVuY3Rpb24iPT10eXBlb2YgY2FsbEJhY2smJmNhbGxCYWNrKHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOiJSZXF1ZXN0IGFib3J0ZWQuIn0pfSkuZmFpbChmdW5jdGlvbihlLHQsaSl7dmFyIHM9e3N0YXR1czp0LGVycm9yOmkscmF3UmVzcG9uc2VUZXh0OmUucmVzcG9uc2VUZXh0fSxuPW9iai50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJlcnJvciIsZXJyb3I6cyx4aHI6ZX0pO2lmKCEwIT09bi5pc0NhbmNlbGxlZCl7aWYoImFib3J0IiE9PXQpe3ZhciBhO3RyeXthPSQucGFyc2VKU09OKGUucmVzcG9uc2VUZXh0KX1jYXRjaChlKXt9Y29uc29sZS5sb2coIkVSUk9SOiBTZXJ2ZXIgY29tbXVuaWNhdGlvbiBmYWlsZWQuIiwiXG4gICBFWFBFQ1RFRDoiLHtzdGF0dXM6InN1Y2Nlc3MiLGl0ZW1zOlt7aWQ6MSx0ZXh0OiJpdGVtIn1dfSwiXG4gICAgICAgICBPUjoiLHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOiJlcnJvciBtZXNzYWdlIn0sIlxuICAgUkVDRUlWRUQ6Iiwib2JqZWN0Ij09dHlwZW9mIGE/YTplLnJlc3BvbnNlVGV4dCksb2JqLnVubG9jaygpfW9iai50cmlnZ2VyKCQuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSl9fSksdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKGVkYXRhLHtwaGFzZToiYWZ0ZXIifSkpfWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgY2FsbEJhY2smJmNhbGxCYWNrKHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOiJSZXF1ZXN0IGFib3J0ZWQuIn0pfX0sc3VibWl0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc2F2ZShlLHQpfSxzYXZlOmZ1bmN0aW9uKHBvc3REYXRhLGNhbGxCYWNrKXt2YXIgb2JqPXRoaXM7JCh0aGlzLmJveCkuZmluZCgiOmZvY3VzIikuY2hhbmdlKCksImZ1bmN0aW9uIj09dHlwZW9mIHBvc3REYXRhJiYoY2FsbEJhY2s9cG9zdERhdGEscG9zdERhdGE9bnVsbCk7dmFyIGVycm9ycz1vYmoudmFsaWRhdGUoITApOzA9PT1lcnJvcnMubGVuZ3RoJiYobnVsbD09cG9zdERhdGEmJihwb3N0RGF0YT17fSksb2JqLnVybCYmKCJvYmplY3QiIT10eXBlb2Ygb2JqLnVybHx8b2JqLnVybC5zYXZlKT8ob2JqLmxvY2sodzJ1dGlscy5sYW5nKG9iai5tc2dTYXZpbmcpKycgPHNwYW4gaWQ9Iicrb2JqLm5hbWUrJ19wcm9ncmVzcyI+PC9zcGFuPicpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgcGFyYW1zPXtjbWQ6InNhdmUifTtwYXJhbXMucmVjaWQ9b2JqLnJlY2lkLHBhcmFtcy5uYW1lPW9iai5uYW1lLCQuZXh0ZW5kKHBhcmFtcyxvYmoucG9zdERhdGEpLCQuZXh0ZW5kKHBhcmFtcyxwb3N0RGF0YSksb2JqLm11bHRpcGFydHx8b2JqLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyJmaWxlIj09PWUudHlwZSYmQXJyYXkuaXNBcnJheShvYmouZ2V0VmFsdWUoZS5maWVsZCkpJiZvYmouZ2V0VmFsdWUoZS5maWVsZCkuZm9yRWFjaChmdW5jdGlvbihlKXtkZWxldGUgZS5maWxlfSl9KSxwYXJhbXMucmVjb3JkPSQuZXh0ZW5kKCEwLHt9LG9iai5yZWNvcmQpO3ZhciBlZGF0YT1vYmoudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToic3VibWl0Iix0YXJnZXQ6b2JqLm5hbWUsdXJsOm9iai51cmwscG9zdERhdGE6cGFyYW1zLGh0dHBIZWFkZXJzOm9iai5odHRwSGVhZGVyc30pO2lmKCEwIT09ZWRhdGEuaXNDYW5jZWxsZWQpe3ZhciB1cmw9ZWRhdGEudXJsO2lmKCJvYmplY3QiPT10eXBlb2YgZWRhdGEudXJsJiZlZGF0YS51cmwuc2F2ZSYmKHVybD1lZGF0YS51cmwuc2F2ZSksb2JqLmxhc3QueGhyKXRyeXtvYmoubGFzdC54aHIuYWJvcnQoKX1jYXRjaChlKXt9aWYoISQuaXNFbXB0eU9iamVjdChvYmoucm91dGVEYXRhKSl7dmFyIGluZm89dzJ1dGlscy5wYXJzZVJvdXRlKHVybCk7aWYoMDxpbmZvLmtleXMubGVuZ3RoKWZvcih2YXIgaz0wO2s8aW5mby5rZXlzLmxlbmd0aDtrKyspbnVsbCE9b2JqLnJvdXRlRGF0YVtpbmZvLmtleXNba10ubmFtZV0mJih1cmw9dXJsLnJlcGxhY2UobmV3IFJlZ0V4cCgiOiIraW5mby5rZXlzW2tdLm5hbWUsImciKSxvYmoucm91dGVEYXRhW2luZm8ua2V5c1trXS5uYW1lXSkpfXZhciBhamF4T3B0aW9ucz17dHlwZToiUE9TVCIsdXJsOnVybCxkYXRhOmVkYXRhLnBvc3REYXRhLGhlYWRlcnM6ZWRhdGEuaHR0cEhlYWRlcnMsZGF0YVR5cGU6InRleHQiLHhocjpmdW5jdGlvbigpe3ZhciBlPW5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIGUudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbihlKXtpZihlLmxlbmd0aENvbXB1dGFibGUpe3ZhciB0PW9iai50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0eXBlOiJwcm9ncmVzcyIsdG90YWw6ZS50b3RhbCxsb2FkZWQ6ZS5sb2FkZWQsb3JpZ2luYWxFdmVudDplfSk7aWYoITA9PT10LmlzQ2FuY2VsbGVkKXJldHVybjt2YXIgaT1NYXRoLnJvdW5kKGUubG9hZGVkL2UudG90YWwqMTAwKTsoaSYmMTAwIT1pfHwiIiE9JCgiIyIrb2JqLm5hbWUrIl9wcm9ncmVzcyIpLnRleHQoKSkmJiQoIiMiK29iai5uYW1lKyJfcHJvZ3Jlc3MiKS50ZXh0KGkrIiUiKSxvYmoudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpfX0sITEpLGV9fSxkYXRhVHlwZT1vYmouZGF0YVR5cGV8fHcydXRpbHMuc2V0dGluZ3MuZGF0YVR5cGU7c3dpdGNoKGVkYXRhLmRhdGFUeXBlJiYoZGF0YVR5cGU9ZWRhdGEuZGF0YVR5cGUpLGRhdGFUeXBlKXtjYXNlIkhUVFAiOmFqYXhPcHRpb25zLmRhdGE9U3RyaW5nKCQucGFyYW0oYWpheE9wdGlvbnMuZGF0YSwhMSkpLnJlcGxhY2UoLyU1Qi9nLCJbIikucmVwbGFjZSgvJTVEL2csIl0iKTticmVhaztjYXNlIkhUVFBKU09OIjphamF4T3B0aW9ucy5kYXRhPXtyZXF1ZXN0OkpTT04uc3RyaW5naWZ5KGFqYXhPcHRpb25zLmRhdGEpfTticmVhaztjYXNlIlJFU1RGVUxMIjowIT09b2JqLnJlY2lkJiZudWxsIT1vYmoucmVjaWQmJihhamF4T3B0aW9ucy50eXBlPSJQVVQiKSxhamF4T3B0aW9ucy5kYXRhPVN0cmluZygkLnBhcmFtKGFqYXhPcHRpb25zLmRhdGEsITEpKS5yZXBsYWNlKC8lNUIvZywiWyIpLnJlcGxhY2UoLyU1RC9nLCJdIik7YnJlYWs7Y2FzZSJSRVNURlVMTEpTT04iOjAhPT1vYmoucmVjaWQmJm51bGwhPW9iai5yZWNpZCYmKGFqYXhPcHRpb25zLnR5cGU9IlBVVCIpLGFqYXhPcHRpb25zLmRhdGE9SlNPTi5zdHJpbmdpZnkoYWpheE9wdGlvbnMuZGF0YSksYWpheE9wdGlvbnMuY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL2pzb24iO2JyZWFrO2Nhc2UiSlNPTiI6aWYoYWpheE9wdGlvbnMudHlwZT0iUE9TVCIsYWpheE9wdGlvbnMuY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL2pzb24iLG9iai5tdWx0aXBhcnQpe2Z1bmN0aW9uIGFwZW5kKGEsZSx0LGkpe2Z1bmN0aW9uIHIoZSx0LGkpe2lmKCJvYmplY3QiPT10eXBlb2YgZSYmZSBpbnN0YW5jZW9mIEZpbGUmJmEuYXBwZW5kKGksZSksIm9iamVjdCI9PXR5cGVvZiBlKWlmKGUmJmUuY29uc3RydWN0b3I9PT1BcnJheSlmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIG49dD90W3NdOnQ7cihlW3NdLG4saSsiWyIrcysiXSIpfWVsc2UgYXBlbmQoYSxlLHQsaSl9Zm9yKHZhciBzIGluIG51bGw9PWkmJihpPSIiKSxlKXt2YXIgbj0iIj09aT9zOiIke3B9WyR7cHJvcH1dIixsPXQ/dFtzXTp0O3IoZVtzXSxsLG4pfX12YXIgZmRhdGE9bmV3IEZvcm1EYXRhO2ZkYXRhLmFwcGVuZCgiX19ib2R5IixKU09OLnN0cmluZ2lmeShhamF4T3B0aW9ucy5kYXRhKSksYXBlbmQoZmRhdGEsYWpheE9wdGlvbnMuZGF0YSksYWpheE9wdGlvbnMuZGF0YT1mZGF0YSxhamF4T3B0aW9ucy5jb250ZW50VHlwZT0hMSxhamF4T3B0aW9ucy5wcm9jZXNzRGF0YT0hMX1lbHNlIGFqYXhPcHRpb25zLmRhdGE9SlNPTi5zdHJpbmdpZnkoYWpheE9wdGlvbnMuZGF0YSl9dGhpcy5tZXRob2QmJihhamF4T3B0aW9ucy50eXBlPXRoaXMubWV0aG9kKSxlZGF0YS5tZXRob2QmJihhamF4T3B0aW9ucy50eXBlPWVkYXRhLm1ldGhvZCksb2JqLmxhc3QueGhyPSQuYWpheChhamF4T3B0aW9ucykuZG9uZShmdW5jdGlvbihkYXRhLHN0YXR1cyx4aHIpe29iai51bmxvY2soKTt2YXIgZWRhdGE9b2JqLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDpvYmoubmFtZSx0eXBlOiJzYXZlIix4aHI6eGhyLHN0YXR1czpzdGF0dXMsZGF0YTpkYXRhfSk7aWYoITAhPT1lZGF0YS5pc0NhbmNlbGxlZCl7dmFyIGRhdGEscmVzcG9uc2VUZXh0PXhoci5yZXNwb25zZVRleHQ7aWYoImVycm9yIiE9PXN0YXR1cyl7aWYobnVsbCE9cmVzcG9uc2VUZXh0JiYiIiE9PXJlc3BvbnNlVGV4dCl7aWYoIm9iamVjdCI9PXR5cGVvZiByZXNwb25zZVRleHQpZGF0YT1yZXNwb25zZVRleHQ7ZWxzZSB0cnl7ZXZhbCgiZGF0YSA9ICIrcmVzcG9uc2VUZXh0KX1jYXRjaChlKXt9bnVsbD09ZGF0YSYmKGRhdGE9e3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6dzJ1dGlscy5sYW5nKG9iai5tc2dOb3RKU09OKSxyZXNwb25zZVRleHQ6cmVzcG9uc2VUZXh0fSksImVycm9yIj09PWRhdGEuc3RhdHVzP29iai5lcnJvcih3MnV0aWxzLmxhbmcoZGF0YS5tZXNzYWdlKSk6b2JqLm9yaWdpbmFsPW51bGx9fWVsc2Ugb2JqLmVycm9yKCJBSkFYIEVycm9yICIreGhyLnN0YXR1cysiOiAiK3hoci5zdGF0dXNUZXh0KSxkYXRhPXtzdGF0dXM6ImVycm9yIixtZXNzYWdlOncydXRpbHMubGFuZyhvYmoubXNnQUpBWGVycm9yKSxyZXNwb25zZVRleHQ6cmVzcG9uc2VUZXh0fTtvYmoudHJpZ2dlcigkLmV4dGVuZChlZGF0YSx7cGhhc2U6ImFmdGVyIn0pKSxvYmoucmVmcmVzaCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBjYWxsQmFjayYmY2FsbEJhY2soZGF0YSx4aHIpfX0pLmZhaWwoZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXtzdGF0dXM6dCxlcnJvcjppLHJhd1Jlc3BvbnNlVGV4dDplLnJlc3BvbnNlVGV4dH0sbj1vYmoudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdHlwZToiZXJyb3IiLGVycm9yOnMseGhyOmV9KTshMCE9PW4uaXNDYW5jZWxsZWQmJihjb25zb2xlLmxvZygiRVJST1I6IHNlcnZlciBjb21tdW5pY2F0aW9uIGZhaWxlZC4gVGhlIHNlcnZlciBzaG91bGQgcmV0dXJuIix7c3RhdHVzOiJzdWNjZXNzIn0sIk9SIix7c3RhdHVzOiJlcnJvciIsbWVzc2FnZToiZXJyb3IgbWVzc2FnZSJ9LCIsIGluc3RlYWQgdGhlIEFKQVggcmVxdWVzdCBwcm9kdWNlZCB0aGlzOiAiLHMpLG9iai51bmxvY2soKSxvYmoudHJpZ2dlcigkLmV4dGVuZChuLHtwaGFzZToiYWZ0ZXIifSkpKX0pLG9iai50cmlnZ2VyKCQuZXh0ZW5kKGVkYXRhLHtwaGFzZToiYWZ0ZXIifSkpfX0sNTApKTpjb25zb2xlLmxvZygiRVJST1I6IEZvcm0gY2Fubm90IGJlIHNhdmVkIGJlY2F1c2Ugbm8gdXJsIGlzIGRlZmluZWQuIikpfSxsb2NrOmZ1bmN0aW9uKGUsdCl7dmFyIGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO2kudW5zaGlmdCh0aGlzLmJveCksc2V0VGltZW91dChmdW5jdGlvbigpe3cydXRpbHMubG9jay5hcHBseSh3aW5kb3csaSl9LDEwKX0sdW5sb2NrOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYm94O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3MnV0aWxzLnVubG9jayh0LGUpfSwyNSl9LGxvY2tQYWdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9JCh0aGlzLmJveCkuZmluZCgiLnBhZ2UtIitlKTtyZXR1cm4hIWkubGVuZ3RoJiYodzJ1dGlscy5sb2NrKGksdCksITApfSx1bmxvY2tQYWdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9JCh0aGlzLmJveCkuZmluZCgiLnBhZ2UtIitlKTtyZXR1cm4hIWkubGVuZ3RoJiYodzJ1dGlscy51bmxvY2soaSx0KSwhMCl9LGdvdG86ZnVuY3Rpb24oZSl7dGhpcy5wYWdlIT09ZSYmKG51bGwhPWUmJih0aGlzLnBhZ2U9ZSksITA9PT0kKHRoaXMuYm94KS5kYXRhKCJhdXRvLXNpemUiKSYmJCh0aGlzLmJveCkuaGVpZ2h0KDApLHRoaXMucmVmcmVzaCgpKX0sZ2VuZXJhdGVIVE1MOmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsaSxzLG4sYT1bXSxyPSIiLGw9MDtsPHRoaXMuZmllbGRzLmxlbmd0aDtsKyspe2k9IiIsbj0nIHRhYmluZGV4PSInKyhzPXRoaXMudGFiaW5kZXhCYXNlK2wrMSkrJyInO3ZhciBvPXRoaXMuZmllbGRzW2xdO251bGw9PW8uaHRtbCYmKG8uaHRtbD17fSksbnVsbD09by5vcHRpb25zJiYoby5vcHRpb25zPXt9KSxudWxsIT1vLmh0bWwuY2FwdGlvbiYmbnVsbD09by5odG1sLmxhYmVsJiYoY29uc29sZS5sb2coIk5PVElDRTogZm9ybSBmaWVsZC5odG1sLmNhcHRpb24gcHJvcGVydHkgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBmaWVsZC5odG1sLmxhYmVsLiBGaWVsZCAtPiIsbyksby5odG1sLmxhYmVsPW8uaHRtbC5jYXB0aW9uKSxudWxsPT1vLmh0bWwubGFiZWwmJihvLmh0bWwubGFiZWw9by5maWVsZCksby5odG1sPSQuZXh0ZW5kKCEwLHtsYWJlbDoiIixzcGFuOjYsYXR0cjoiIix0ZXh0OiIiLHN0eWxlOiIiLHBhZ2U6MCxjb2x1bW46MH0sby5odG1sKSxudWxsPT1lJiYoZT1vLmh0bWwucGFnZSksbnVsbD09dCYmKHQ9by5odG1sLmNvbHVtbik7dmFyIGQ9JzxpbnB1dCBpZD0iJytvLmZpZWxkKyciIG5hbWU9Iicrby5maWVsZCsnIiBjbGFzcz0idzJ1aS1pbnB1dCIgdHlwZT0idGV4dCIgJytvLmh0bWwuYXR0cituKyI+Ijtzd2l0Y2goby50eXBlKXtjYXNlInBhc3MiOmNhc2UicGFzc3dvcmQiOmQ9JzxpbnB1dCBpZD0iJytvLmZpZWxkKyciIG5hbWU9Iicrby5maWVsZCsnIiBjbGFzcz0idzJ1aS1pbnB1dCIgdHlwZSA9ICJwYXNzd29yZCIgJytvLmh0bWwuYXR0cituKyI+IjticmVhaztjYXNlImNoZWNrYm94IjpkPSc8bGFiZWw+ICAgPGlucHV0IGlkPSInK28uZmllbGQrJyIgbmFtZT0iJytvLmZpZWxkKyciIHN0eWxlPSJmbG9hdDogbGVmdCIgY2xhc3M9IncydWktaW5wdXQiIHR5cGU9ImNoZWNrYm94IiAnK28uaHRtbC5hdHRyK24rJz4gICA8ZGl2IHN0eWxlPSJtYXJnaW46IDZweCAwIDAgMjBweDsgdXNlci1zZWxlY3Q6IG5vbmU7Ij4nK28uaHRtbC5sYWJlbCsiPC9kaXY+PC9sYWJlbD4iO2JyZWFrO2Nhc2UicmFkaW8iOmQ9IiI7dmFyIHU9by5vcHRpb25zLml0ZW1zP28ub3B0aW9ucy5pdGVtczpvLmh0bWwuaXRlbXM7JC5pc0FycmF5KHUpfHwodT1bXSksMDx1Lmxlbmd0aCYmKHU9dzJvYmouZmllbGQucHJvdG90eXBlLm5vcm1NZW51LmNhbGwodGhpcyx1LG8pKTtmb3IodmFyIGM9MDtjPHUubGVuZ3RoO2MrKylkKz0nPGxhYmVsIHN0eWxlPSJ1c2VyLXNlbGVjdDogbm9uZSI+ICA8aW5wdXQgaWQ9Iicrby5maWVsZCsnIiBuYW1lPSInK28uZmllbGQrJyIgY2xhc3M9IncydWktaW5wdXQiIHR5cGUgPSAicmFkaW8iICcrby5odG1sLmF0dHIrKDA9PT1jP246IiIpKycgdmFsdWU9IicrdVtjXS5pZCsnIj4mIzE2MDsnK3VbY10udGV4dCsiPC9sYWJlbD48YnI+IjticmVhaztjYXNlInNlbGVjdCI6ZD0nPHNlbGVjdCBpZD0iJytvLmZpZWxkKyciIG5hbWU9Iicrby5maWVsZCsnIiBjbGFzcz0idzJ1aS1pbnB1dCIgJytvLmh0bWwuYXR0cituKyI+Ijt1PW8ub3B0aW9ucy5pdGVtcz9vLm9wdGlvbnMuaXRlbXM6by5odG1sLml0ZW1zOyQuaXNBcnJheSh1KXx8KHU9W10pLDA8dS5sZW5ndGgmJih1PXcyb2JqLmZpZWxkLnByb3RvdHlwZS5ub3JtTWVudS5jYWxsKHRoaXMsdSxvKSk7Zm9yKGM9MDtjPHUubGVuZ3RoO2MrKylkKz0nPG9wdGlvbiB2YWx1ZT0iJyt1W2NdLmlkKyciPicrdVtjXS50ZXh0KyI8L29wdGlvbj4iO2QrPSI8L3NlbGVjdD4iO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmQ9Jzx0ZXh0YXJlYSBpZD0iJytvLmZpZWxkKyciIG5hbWU9Iicrby5maWVsZCsnIiBjbGFzcz0idzJ1aS1pbnB1dCIgJytvLmh0bWwuYXR0cituKyI+PC90ZXh0YXJlYT4iO2JyZWFrO2Nhc2UidG9nZ2xlIjpkPSc8aW5wdXQgaWQ9Iicrby5maWVsZCsnIiBuYW1lPSInK28uZmllbGQrJyIgdHlwZT0iY2hlY2tib3giICcrby5odG1sLmF0dHIrbisnIGNsYXNzPSJ3MnVpLWlucHV0IHcydWktdG9nZ2xlIj48ZGl2PjxkaXY+PC9kaXY+PC9kaXY+JzticmVhaztjYXNlIm1hcCI6Y2FzZSJhcnJheSI6by5odG1sLmtleT1vLmh0bWwua2V5fHx7fSxvLmh0bWwudmFsdWU9by5odG1sLnZhbHVlfHx7fSxvLmh0bWwudGFiaW5kZXhfc3RyPW4sZD0nPHNwYW4gc3R5bGU9ImZsb2F0OiByaWdodCI+Jysoby5odG1sLnRleHR8fCIiKSsnPC9zcGFuPjxpbnB1dCBpZD0iJytvLmZpZWxkKyciIG5hbWU9Iicrby5maWVsZCsnIiB0eXBlPSJoaWRkZW4iICcrby5odG1sLmF0dHIrbisnPjxkaXYgY2xhc3M9IncydWktbWFwLWNvbnRhaW5lciI+PC9kaXY+JzticmVhaztjYXNlImh0bWwiOmNhc2UiZGl2IjpjYXNlImN1c3RvbSI6ZD0nPGRpdiBpZD0iJytvLmZpZWxkKyciIG5hbWU9Iicrby5maWVsZCsnIiAnK28uaHRtbC5hdHRyK24rIj4iKyhvJiZvLmh0bWwmJm8uaHRtbC5odG1sP28uaHRtbC5odG1sOiIiKSsiPC9kaXY+In1pZigiIiE9PXImJihlIT1vLmh0bWwucGFnZXx8dCE9by5odG1sLmNvbHVtbnx8by5odG1sLmdyb3VwJiZyIT1vLmh0bWwuZ3JvdXApJiYoYVtlXVt0XSs9IlxuICAgPC9kaXY+IixyPSIiKSxvLmh0bWwuZ3JvdXAmJnIhPW8uaHRtbC5ncm91cCl7dmFyIGg9IiI7by5odG1sLmdyb3VwQ29sbGFwc2FibGUmJihoPSc8c3BhbiBjbGFzcz0idzJ1aS1pY29uLWNvbGxhcHNlIiBzdHlsZT0id2lkdGg6IDE1cHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IC0ycHg7Ij48L3NwYW4+JyksaSs9J1xuICAgPGRpdiBjbGFzcz0idzJ1aS1ncm91cC10aXRsZSIgJysoIiIhPWg/J2RhdGEtZ3JvdXA9IicrdzJ1dGlscy5iYXNlNjRlbmNvZGUoby5odG1sLmdyb3VwKSsnIic6IiIpKygiIiE9aD8nc3R5bGU9ImN1cnNvcjogcG9pbnRlciInOiIiKSsoIiIhPWg/Im9uY2xpY2s9XCJ3MnVpWyciK3RoaXMubmFtZSsiJ10udG9nZ2xlR3JvdXAoJyIrby5odG1sLmdyb3VwKyInKVwiIjoiIikrIj4iK2grby5odG1sLmdyb3VwKyc8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9IncydWktZ3JvdXAiIHN0eWxlPSInKyhvLmh0bWwuZ3JvdXBTdHlsZXx8IiIpKyciPicscj1vLmh0bWwuZ3JvdXB9aWYobnVsbD09by5odG1sLmFuY2hvcil7dmFyIHA9bnVsbCE9by5odG1sLnNwYW4/IncydWktc3BhbiIrby5odG1sLnNwYW46IiI7LTE9PW8uaHRtbC5zcGFuJiYocD0idzJ1aS1zcGFuLW5vbmUiKSxpKz0nXG4gICAgICA8ZGl2IGNsYXNzPSJ3MnVpLWZpZWxkICcrcCsnIiBzdHlsZT0iJysoby5oaWRkZW4/ImRpc3BsYXk6IG5vbmU7IjoiIikrby5odG1sLnN0eWxlKyciPlxuICAgICAgICAgPGxhYmVsJysoIm5vbmUiPT1wPycgc3R5bGU9ImRpc3BsYXk6IG5vbmUiJzoiIikrIj4iK3cydXRpbHMubGFuZygiY2hlY2tib3giIT1vLnR5cGU/by5odG1sLmxhYmVsOm8uaHRtbC50ZXh0KSsiPC9sYWJlbD4iKygiZW1wdHkiPT09by50eXBlPyIiOiJcbiAgICAgICAgIDxkaXY+IitkKygiYXJyYXkiIT1vLnR5cGUmJiJtYXAiIT1vLnR5cGU/dzJ1dGlscy5sYW5nKCJjaGVja2JveCIhPW8udHlwZT9vLmh0bWwudGV4dDoiIik6IiIpKyI8L2Rpdj4iKSsiXG4gICAgICA8L2Rpdj4ifWVsc2UgYVtvLmh0bWwucGFnZV0uYW5jaG9ycz1hW28uaHRtbC5wYWdlXS5hbmNob3JzfHx7fSxhW28uaHRtbC5wYWdlXS5hbmNob3JzW28uaHRtbC5hbmNob3JdPSc8ZGl2IGNsYXNzPSJ3MnVpLWZpZWxkIHcydWktZmllbGQtaW5saW5lIiBzdHlsZT0iJysoby5oaWRkZW4/ImRpc3BsYXk6IG5vbmU7IjoiIikrby5odG1sLnN0eWxlKyciPicrKCJlbXB0eSI9PT1vLnR5cGU/IiI6IjxkaXY+Iit3MnV0aWxzLmxhbmcoImNoZWNrYm94IiE9by50eXBlP28uaHRtbC5sYWJlbDpvLmh0bWwudGV4dCkrZCt3MnV0aWxzLmxhbmcoImNoZWNrYm94IiE9by50eXBlP28uaHRtbC50ZXh0OiIiKSsiPC9kaXY+IikrIjwvZGl2PiI7bnVsbD09YVtvLmh0bWwucGFnZV0mJihhW28uaHRtbC5wYWdlXT17fSksbnVsbD09YVtvLmh0bWwucGFnZV1bby5odG1sLmNvbHVtbl0mJihhW28uaHRtbC5wYWdlXVtvLmh0bWwuY29sdW1uXT0iIiksYVtvLmh0bWwucGFnZV1bby5odG1sLmNvbHVtbl0rPWksZT1vLmh0bWwucGFnZSx0PW8uaHRtbC5jb2x1bW59aWYoIiIhPT1yJiYoYVtlXVt0XSs9IlxuICAgPC9kaXY+IiksdGhpcy50YWJzLnRhYnMpZm9yKGM9MDtjPHRoaXMudGFicy50YWJzLmxlbmd0aDtjKyspbnVsbD09YVtjXSYmKGFbY109W10pO3ZhciBmPSIiO2lmKCEkLmlzRW1wdHlPYmplY3QodGhpcy5hY3Rpb25zKSl7Zm9yKHZhciBnIGluIGYrPSdcbjxkaXYgY2xhc3M9IncydWktYnV0dG9ucyI+JyxzPXRoaXMudGFiaW5kZXhCYXNlK3RoaXMuZmllbGRzLmxlbmd0aCsxLHRoaXMuYWN0aW9ucyl7dmFyIG09dGhpcy5hY3Rpb25zW2ddLHc9e3RleHQ6IiIsc3R5bGU6IiIsY2xhc3M6IiJ9OyQuaXNQbGFpbk9iamVjdChtKT8obnVsbD09bS50ZXh0JiZudWxsIT1tLmNhcHRpb24mJihjb25zb2xlLmxvZygiTk9USUNFOiBmb3JtIGFjdGlvbi5jYXB0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgYWN0aW9uLnRleHQuIEFjdGlvbiAtPiIsbSksbS50ZXh0PW0uY2FwdGlvbiksbS50ZXh0JiYody50ZXh0PW0udGV4dCksbS5zdHlsZSYmKHcuc3R5bGU9bS5zdHlsZSksbS5jbGFzcyYmKHcuY2xhc3M9bS5jbGFzcykpOih3LnRleHQ9ZywtMSE9PVsic2F2ZSIsInVwZGF0ZSIsImNyZWF0ZSJdLmluZGV4T2YoZy50b0xvd2VyQ2FzZSgpKT93LmNsYXNzPSJ3MnVpLWJ0bi1ibHVlIjp3LmNsYXNzPSIiKSxmKz0nXG4gICAgPGJ1dHRvbiBuYW1lPSInK2crJyIgY2xhc3M9IncydWktYnRuICcrdy5jbGFzcysnIiBzdHlsZT0iJyt3LnN0eWxlKyciIHRhYmluZGV4PSInK3MrJyI+Jyt3MnV0aWxzLmxhbmcody50ZXh0KSsiPC9idXR0b24+IixzKyt9Zis9IlxuPC9kaXY+In1pPSIiO2Zvcih2YXIgdj0wO3Y8YS5sZW5ndGg7disrKWkrPSc8ZGl2IGNsYXNzPSJ3MnVpLXBhZ2UgcGFnZS0nK3YrJyIgc3R5bGU9IicrKDAhPT12PyJkaXNwbGF5OiBub25lOyI6IiIpK3RoaXMucGFnZVN0eWxlKyciPicsYVt2XS5iZWZvcmUmJihpKz1hW3ZdLmJlZm9yZSksaSs9JzxkaXYgY2xhc3M9IncydWktY29sdW1uLWNvbnRhaW5lciI+JyxPYmplY3Qua2V5cyhhW3ZdKS5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbihlLHQpe2U9PXBhcnNlSW50KGUpJiYoaSs9JzxkaXYgY2xhc3M9IncydWktY29sdW1uIGNvbC0nK2UrJyI+JysoYVt2XVtlXXx8IiIpKyJcbjwvZGl2PiIpfSksaSs9IlxuPC9kaXY+IixhW3ZdLmFmdGVyJiYoaSs9YVt2XS5hZnRlciksaSs9IlxuPC9kaXY+IixhW3ZdLmFuY2hvcnMmJk9iamVjdC5rZXlzKGFbdl0uYW5jaG9ycykuZm9yRWFjaChmdW5jdGlvbihlLHQpe2k9aS5yZXBsYWNlKGUsYVt2XS5hbmNob3JzW2VdKX0pO3JldHVybiBpKz1mfSx0b2dnbGVHcm91cDpmdW5jdGlvbihlLHQpe3ZhciBpPSQodGhpcy5ib3gpLmZpbmQoJy53MnVpLWdyb3VwLXRpdGxlW2RhdGEtZ3JvdXA9IicrdzJ1dGlscy5iYXNlNjRlbmNvZGUoZSkrJyJdJyk7aWYoIm5vbmUiPT1pLm5leHQoKS5jc3MoImRpc3BsYXkiKSYmITAhPT10KWkubmV4dCgpLnNsaWRlRG93bigzMDApLGkubmV4dCgpLm5leHQoKS5yZW1vdmUoKSxpLmZpbmQoInNwYW4iKS5hZGRDbGFzcygidzJ1aS1pY29uLWNvbGxhcHNlIikucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1leHBhbmQiKTtlbHNle2kubmV4dCgpLnNsaWRlVXAoMzAwKTt2YXIgcz0id2lkdGg6ICIraS5uZXh0KCkuY3NzKCJ3aWR0aCIpKyI7cGFkZGluZy1sZWZ0OiAiK2kubmV4dCgpLmNzcygicGFkZGluZy1sZWZ0IikrIjtwYWRkaW5nLXJpZ2h0OiAiK2kubmV4dCgpLmNzcygicGFkZGluZy1yaWdodCIpKyI7bWFyZ2luLWxlZnQ6ICIraS5uZXh0KCkuY3NzKCJtYXJnaW4tbGVmdCIpKyI7bWFyZ2luLXJpZ2h0OiAiK2kubmV4dCgpLmNzcygibWFyZ2luLXJpZ2h0IikrIjsiO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpLm5leHQoKS5hZnRlcignPGRpdiBzdHlsZT0iaGVpZ2h0OiA1cHg7JytzKyciPjwvZGl2PicpfSwxMDApLGkuZmluZCgic3BhbiIpLmFkZENsYXNzKCJ3MnVpLWljb24tZXhwYW5kIikucmVtb3ZlQ2xhc3MoIncydWktaWNvbi1jb2xsYXBzZSIpfX0sYWN0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5hY3Rpb25zW2VdLHM9aTskLmlzUGxhaW5PYmplY3QoaSkmJmkub25DbGljayYmKHM9aS5vbkNsaWNrKTt2YXIgbj10aGlzLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDplLHR5cGU6ImFjdGlvbiIsY2xpY2s6cyxvcmlnaW5hbEV2ZW50OnR9KTshMCE9PW4uaXNDYW5jZWxsZWQmJigiZnVuY3Rpb24iPT10eXBlb2YgcyYmcy5jYWxsKHRoaXMsdCksdGhpcy50cmlnZ2VyKCQuZXh0ZW5kKG4se3BoYXNlOiJhZnRlciJ9KSkpfSxyZXNpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6dGhpcy5uYW1lLHR5cGU6InJlc2l6ZSJ9KTtpZighMCE9PXQuaXNDYW5jZWxsZWQpe3ZhciBpPSQodGhpcy5ib3gpLmZpbmQoIj4gZGl2LncydWktZm9ybS1ib3giKSxzPSQodGhpcy5ib3gpLmZpbmQoIj4gZGl2IC53MnVpLWZvcm0taGVhZGVyIiksbj0kKHRoaXMuYm94KS5maW5kKCI+IGRpdiAudzJ1aS1mb3JtLXRvb2xiYXIiKSxhPSQodGhpcy5ib3gpLmZpbmQoIj4gZGl2IC53MnVpLWZvcm0tdGFicyIpLHI9JCh0aGlzLmJveCkuZmluZCgiPiBkaXYgLncydWktcGFnZSIpLGw9JCh0aGlzLmJveCkuZmluZCgiPiBkaXYgLncydWktcGFnZS5wYWdlLSIrdGhpcy5wYWdlKSxvPSQodGhpcy5ib3gpLmZpbmQoIj4gZGl2IC53MnVpLXBhZ2UucGFnZS0iK3RoaXMucGFnZSsiID4gZGl2IiksZD0kKHRoaXMuYm94KS5maW5kKCI+IGRpdiAudzJ1aS1idXR0b25zIik7dSgpLHRoaXMuYXV0b3NpemUmJigwIT09cGFyc2VJbnQoJCh0aGlzLmJveCkuaGVpZ2h0KCkpJiYhMCE9PSQodGhpcy5ib3gpLmRhdGEoImF1dG8tc2l6ZSIpfHwoJCh0aGlzLmJveCkuaGVpZ2h0KCgwPHMubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShzLCJoZWlnaHQiKTowKSsoIm9iamVjdCI9PXR5cGVvZiB0aGlzLnRhYnMmJiQuaXNBcnJheSh0aGlzLnRhYnMudGFicykmJjA8dGhpcy50YWJzLnRhYnMubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShhLCJoZWlnaHQiKTowKSsoIm9iamVjdCI9PXR5cGVvZiB0aGlzLnRvb2xiYXImJiQuaXNBcnJheSh0aGlzLnRvb2xiYXIuaXRlbXMpJiYwPHRoaXMudG9vbGJhci5pdGVtcy5sZW5ndGg/dzJ1dGlscy5nZXRTaXplKG4sImhlaWdodCIpOjApKygwPHIubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShvLCJoZWlnaHQiKSt3MnV0aWxzLmdldFNpemUobCwiK2hlaWdodCIpKzEyOjApKygwPGQubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShkLCJoZWlnaHQiKTowKSksJCh0aGlzLmJveCkuZGF0YSgiYXV0by1zaXplIiwhMCkpLHUoKSksdGhpcy50b29sYmFyJiZ0aGlzLnRvb2xiYXIucmVzaXplJiZ0aGlzLnRvb2xiYXIucmVzaXplKCksdGhpcy50YWJzJiZ0aGlzLnRhYnMucmVzaXplJiZ0aGlzLnRhYnMucmVzaXplKCksZS50cmlnZ2VyKCQuZXh0ZW5kKHQse3BoYXNlOiJhZnRlciJ9KSl9ZnVuY3Rpb24gdSgpe2kud2lkdGgoJChlLmJveCkud2lkdGgoKSkuaGVpZ2h0KCQoZS5ib3gpLmhlaWdodCgpKSxuLmNzcygidG9wIiwiIiE9PWUuaGVhZGVyP3cydXRpbHMuZ2V0U2l6ZShzLCJoZWlnaHQiKTowKSxhLmNzcygidG9wIiwoIiIhPT1lLmhlYWRlcj93MnV0aWxzLmdldFNpemUocywiaGVpZ2h0Iik6MCkrKCJvYmplY3QiPT10eXBlb2YgZS50b29sYmFyJiYkLmlzQXJyYXkoZS50b29sYmFyLml0ZW1zKSYmMDxlLnRvb2xiYXIuaXRlbXMubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShuLCJoZWlnaHQiKTowKSksci5jc3MoInRvcCIsKCIiIT09ZS5oZWFkZXI/dzJ1dGlscy5nZXRTaXplKHMsImhlaWdodCIpOjApKygib2JqZWN0Ij09dHlwZW9mIGUudG9vbGJhciYmJC5pc0FycmF5KGUudG9vbGJhci5pdGVtcykmJjA8ZS50b29sYmFyLml0ZW1zLmxlbmd0aD93MnV0aWxzLmdldFNpemUobiwiaGVpZ2h0IikrNTowKSsoIm9iamVjdCI9PXR5cGVvZiBlLnRhYnMmJiQuaXNBcnJheShlLnRhYnMudGFicykmJjA8ZS50YWJzLnRhYnMubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShhLCJoZWlnaHQiKSs1OjApKSxyLmNzcygiYm90dG9tIiwwPGQubGVuZ3RoP3cydXRpbHMuZ2V0U2l6ZShkLCJoZWlnaHQiKTowKX19LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKSx1PXRoaXM7aWYodGhpcy5ib3gmJnRoaXMuaXNHZW5lcmF0ZWQmJm51bGwhPSQodGhpcy5ib3gpLmh0bWwoKSl7dmFyIHQ9dGhpcy50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6dGhpcy5uYW1lLHR5cGU6InJlZnJlc2giLHBhZ2U6dGhpcy5wYWdlLGZpZWxkOmEsZmllbGRzOmFyZ3VtZW50c30pO2lmKCEwIT09dC5pc0NhbmNlbGxlZCl7dmFyIGk9QXJyYXkuZnJvbSh0aGlzLmZpZWxkcy5rZXlzKCkpOzA8YXJndW1lbnRzLmxlbmd0aD9pPUFycmF5LmZyb20oYXJndW1lbnRzKS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJmNvbnNvbGUubG9nKCJFUlJPUjogQXJndW1lbnRzIGluIHJlZnJlc2ggZnVuY3Rpb25zIHNob3VsZCBiZSBmaWVsZCBuYW1lcyIpLHRoaXMuZ2V0KGUsITApfS5iaW5kKHRoaXMpKS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZX0pOigkKHRoaXMuYm94KS5maW5kKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCIpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgaT1udWxsIT0kKHQpLmF0dHIoIm5hbWUiKT8kKHQpLmF0dHIoIm5hbWUiKTokKHQpLmF0dHIoImlkIikscz11LmdldChpKTtpZihzKXt2YXIgbj0kKHQpLmNsb3Nlc3QoIi53MnVpLXBhZ2UiKTtpZigwPG4ubGVuZ3RoKWZvcih2YXIgYT0wO2E8MTAwO2ErKylpZihuLmhhc0NsYXNzKCJwYWdlLSIrYSkpe3MucGFnZT1hO2JyZWFrfX19KSwkKHRoaXMuYm94KS5maW5kKCIudzJ1aS1wYWdlIikuaGlkZSgpLCQodGhpcy5ib3gpLmZpbmQoIi53MnVpLXBhZ2UucGFnZS0iK3RoaXMucGFnZSkuc2hvdygpLCQodGhpcy5ib3gpLmZpbmQoIi53MnVpLWZvcm0taGVhZGVyIikuaHRtbCh0aGlzLmhlYWRlciksIm9iamVjdCI9PXR5cGVvZiB0aGlzLnRhYnMmJiQuaXNBcnJheSh0aGlzLnRhYnMudGFicykmJjA8dGhpcy50YWJzLnRhYnMubGVuZ3RoPygkKCIjZm9ybV8iK3RoaXMubmFtZSsiX3RhYnMiKS5zaG93KCksdGhpcy50YWJzLmFjdGl2ZT10aGlzLnRhYnMudGFic1t0aGlzLnBhZ2VdLmlkLHRoaXMudGFicy5yZWZyZXNoKCkpOiQoIiNmb3JtXyIrdGhpcy5uYW1lKyJfdGFicyIpLmhpZGUoKSwib2JqZWN0Ij09dHlwZW9mIHRoaXMudG9vbGJhciYmJC5pc0FycmF5KHRoaXMudG9vbGJhci5pdGVtcykmJjA8dGhpcy50b29sYmFyLml0ZW1zLmxlbmd0aD8oJCgiI2Zvcm1fIit0aGlzLm5hbWUrIl90b29sYmFyIikuc2hvdygpLHRoaXMudG9vbGJhci5yZWZyZXNoKCkpOiQoIiNmb3JtXyIrdGhpcy5uYW1lKyJfdG9vbGJhciIpLmhpZGUoKSk7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspe2lmKG51bGw9PShhPXRoaXMuZmllbGRzW2lbc11dKS5uYW1lJiZudWxsIT1hLmZpZWxkJiYoYS5uYW1lPWEuZmllbGQpLG51bGw9PWEuZmllbGQmJm51bGwhPWEubmFtZSYmKGEuZmllbGQ9YS5uYW1lKSxhLiRlbD0kKHRoaXMuYm94KS5maW5kKCdbbmFtZT0iJytTdHJpbmcoYS5uYW1lKS5yZXBsYWNlKC9cXC9nLCJcXFxcIikrJyJdJyksYS5lbD1hLiRlbFswXSxhLmVsJiYoYS5lbC5pZD1hLm5hbWUpLChtPSQoYSkuZGF0YSgidzJmaWVsZCIpKSYmbS5jbGVhcigpLCQoYS4kZWwpLm9mZigiLncyZm9ybSIpLm9uKCJjaGFuZ2UudzJmb3JtIixmdW5jdGlvbihlKXt2YXIgdD10aGlzLnZhbHVlLGk9bnVsbCE9dS5nZXRWYWx1ZSh0aGlzLm5hbWUpP3UuZ2V0VmFsdWUodGhpcy5uYW1lKToiIixzPXUuZ2V0KHRoaXMubmFtZSk7aWYobnVsbCE9cyl7aWYoLTEhPT1bImxpc3QiLCJlbnVtIiwiZmlsZSJdLmluZGV4T2Yocy50eXBlKSYmJCh0aGlzKS5kYXRhKCJzZWxlY3RlZCIpKXt2YXIgbj0kKHRoaXMpLmRhdGEoInNlbGVjdGVkIiksYT11LmdldFZhbHVlKHRoaXMubmFtZSk7aWYoJC5pc0FycmF5KG4pKXt0PVtdO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXRbcl09JC5leHRlbmQoITAse30sbltyXSl9aWYoJC5pc1BsYWluT2JqZWN0KG4pJiYodD0kLmV4dGVuZCghMCx7fSxuKSksJC5pc0FycmF5KGEpKXtpPVtdO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspaVtyXT0kLmV4dGVuZCghMCx7fSxhW3JdKX0kLmlzUGxhaW5PYmplY3QoYSkmJihpPSQuZXh0ZW5kKCEwLHt9LGEpKX1pZigtMSE9PVsidG9nZ2xlIiwiY2hlY2tib3giXS5pbmRleE9mKHMudHlwZSkmJih0PSEhJCh0aGlzKS5wcm9wKCJjaGVja2VkIikmJigib24iPT09JCh0aGlzKS5wcm9wKCJ2YWx1ZSIpfHwkKHRoaXMpLnByb3AoInZhbHVlIikpKSwtMSE9PVsiaW50IiwiZmxvYXQiLCJwZXJjZW50IiwibW9uZXkiLCJjdXJyZW5jeSJdLmluZGV4T2Yocy50eXBlKSYmKHQ9JCh0aGlzKS5kYXRhKCJ3MmZpZWxkIikuY2xlYW4odCkpLHQhPT1pKXt2YXIgbD11LnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDp0aGlzLm5hbWUsdHlwZToiY2hhbmdlIix2YWx1ZV9uZXc6dCx2YWx1ZV9wcmV2aW91czppLG9yaWdpbmFsRXZlbnQ6ZX0pO2lmKCEwIT09bC5pc0NhbmNlbGxlZCl7dmFyIG89dGhpcy52YWx1ZTtpZigic2VsZWN0Ij09PXRoaXMudHlwZSYmKG89dGhpcy52YWx1ZSksImNoZWNrYm94Ij09PXRoaXMudHlwZSYmKG89ISF0aGlzLmNoZWNrZWQpLCJyYWRpbyI9PT10aGlzLnR5cGUmJnMuJGVsLmVhY2goZnVuY3Rpb24oZSx0KXt0LmNoZWNrZWQmJihvPXQudmFsdWUpfSksLTEhPT1bImludCIsImZsb2F0IiwicGVyY2VudCIsIm1vbmV5IiwiY3VycmVuY3kiLCJsaXN0IiwiY29tYm8iLCJlbnVtIiwiZmlsZSIsInRvZ2dsZSJdLmluZGV4T2Yocy50eXBlKSYmKG89dCksLTEhPT1bImVudW0iLCJmaWxlIl0uaW5kZXhPZihzLnR5cGUpJiYwPG8ubGVuZ3RoKXt2YXIgZD0kKHMuZWwpLmRhdGEoIncyZmllbGQiKS5oZWxwZXJzLm11bHRpOyQoZCkucmVtb3ZlQ2xhc3MoIncydWktZXJyb3IiKX0oIiI9PT1vfHxudWxsPT1vfHwkLmlzQXJyYXkobykmJjA9PT1vLmxlbmd0aHx8JC5pc1BsYWluT2JqZWN0KG8pJiYkLmlzRW1wdHlPYmplY3QobykpJiYobz1udWxsKSx1LnNldFZhbHVlKHRoaXMubmFtZSxvKSx1LnRyaWdnZXIoJC5leHRlbmQobCx7cGhhc2U6ImFmdGVyIn0pKX1lbHNlICQodGhpcykudmFsKHUuZ2V0VmFsdWUodGhpcy5uYW1lKSl9fX0pLm9uKCJpbnB1dC53MmZvcm0iLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudmFsdWU7ImNoZWNrYm94Ij09ZS50YXJnZXQudHlwZSYmKHQ9ZS50YXJnZXQuY2hlY2tlZCksbnVsbD09dS5vcmlnaW5hbCYmKCQuaXNFbXB0eU9iamVjdCh1LnJlY29yZCk/dS5vcmlnaW5hbD17fTp1Lm9yaWdpbmFsPSQuZXh0ZW5kKCEwLHt9LHUucmVjb3JkKSk7dmFyIGk9dS50cmlnZ2VyKHtwaGFzZToiYmVmb3JlIix0YXJnZXQ6dGhpcy5uYW1lLHR5cGU6ImlucHV0Iix2YWx1ZV9uZXc6dCxvcmlnaW5hbEV2ZW50OmV9KTshMCE9PWkuaXNDYW5jZWxsZWQmJnUudHJpZ2dlcigkLmV4dGVuZChpLHtwaGFzZToiYWZ0ZXIifSkpfSksYS5yZXF1aXJlZD8kKGEuZWwpLnBhcmVudCgpLnBhcmVudCgpLmFkZENsYXNzKCJ3MnVpLXJlcXVpcmVkIik6JChhLmVsKS5wYXJlbnQoKS5wYXJlbnQoKS5yZW1vdmVDbGFzcygidzJ1aS1yZXF1aXJlZCIpLG51bGwhPWEuZGlzYWJsZWQpe3ZhciBuPSQoYS5lbCk7YS5kaXNhYmxlZD8obnVsbD09bi5kYXRhKCJ3MnVpLXRhYkluZGV4IikmJm4uZGF0YSgidzJ1aS10YWJJbmRleCIsbi5wcm9wKCJ0YWJJbmRleCIpKSwkKGEuZWwpLnByb3AoInJlYWRvbmx5IiwhMCkucHJvcCgidGFiaW5kZXgiLC0xKS5jbG9zZXN0KCIudzJ1aS1maWVsZCIpLmFkZENsYXNzKCJ3MnVpLWRpc2FibGVkIikpOiQoYS5lbCkucHJvcCgicmVhZG9ubHkiLCExKS5wcm9wKCJ0YWJJbmRleCIsbi5kYXRhKCJ3MnVpLXRhYkluZGV4IikpLmNsb3Nlc3QoIi53MnVpLWZpZWxkIikucmVtb3ZlQ2xhc3MoIncydWktZGlzYWJsZWQiKX1tPShtPWEuZWwpfHwkKHRoaXMuYm94KS5maW5kKCIjIithLmZpZWxkKSxhLmhpZGRlbj8kKG0pLmNsb3Nlc3QoIi53MnVpLWZpZWxkIikuaGlkZSgpOiQobSkuY2xvc2VzdCgiLncydWktZmllbGQiKS5zaG93KCl9JCh0aGlzLmJveCkuZmluZCgiYnV0dG9uLCBpbnB1dFt0eXBlPWJ1dHRvbl0iKS5lYWNoKGZ1bmN0aW9uKGUsdCl7JCh0KS5vZmYoImNsaWNrIikub24oImNsaWNrIixmdW5jdGlvbihlKXt2YXIgdD10aGlzLnZhbHVlO3RoaXMuaWQmJih0PXRoaXMuaWQpLHRoaXMubmFtZSYmKHQ9dGhpcy5uYW1lKSx1LmFjdGlvbih0LGUpfSl9KTtmb3Iocz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYT10aGlzLmZpZWxkc1tpW3NdXSxyPW51bGwhPXRoaXMuZ2V0VmFsdWUoYS5uYW1lKT90aGlzLmdldFZhbHVlKGEubmFtZSk6IiI7aWYoYS5lbClzd2l0Y2goJChhLmVsKS5oYXNDbGFzcygidzJ1aS1pbnB1dCIpfHwkKGEuZWwpLmFkZENsYXNzKCJ3MnVpLWlucHV0IiksYS50eXBlPVN0cmluZyhhLnR5cGUpLnRvTG93ZXJDYXNlKCksYS5vcHRpb25zfHwoYS5vcHRpb25zPXt9KSxhLnR5cGUpe2Nhc2UidGV4dCI6Y2FzZSJ0ZXh0YXJlYSI6Y2FzZSJlbWFpbCI6Y2FzZSJwYXNzIjpjYXNlInBhc3N3b3JkIjphLmVsLnZhbHVlPXI7YnJlYWs7Y2FzZSJpbnQiOmNhc2UiZmxvYXQiOmNhc2UibW9uZXkiOmNhc2UiY3VycmVuY3kiOmNhc2UicGVyY2VudCI6YS5lbC52YWx1ZT1yLCQoYS5lbCkudzJmaWVsZCgkLmV4dGVuZCh7fSxhLm9wdGlvbnMse3R5cGU6YS50eXBlfSkpO2JyZWFrO2Nhc2UiaGV4IjpjYXNlImFscGhhbnVtZXJpYyI6Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlInRpbWUiOmEuZWwudmFsdWU9ciwkKGEuZWwpLncyZmllbGQoJC5leHRlbmQoe30sYS5vcHRpb25zLHt0eXBlOmEudHlwZX0pKTticmVhaztjYXNlInRvZ2dsZSI6dzJ1dGlscy5pc0Zsb2F0KHIpJiYocj1wYXJzZUZsb2F0KHIpKSwkKGEuZWwpLnByb3AoImNoZWNrZWQiLCEhciksdGhpcy5zZXRWYWx1ZShhLm5hbWUscnx8ITEpO2JyZWFrO2Nhc2UibGlzdCI6Y2FzZSJjb21ibyI6aWYoImxpc3QiPT09YS50eXBlKXt2YXIgbD0kLmlzUGxhaW5PYmplY3Qocik/ci5pZDokLmlzUGxhaW5PYmplY3QoYS5vcHRpb25zLnNlbGVjdGVkKT9hLm9wdGlvbnMuc2VsZWN0ZWQuaWQ6cjthLm9wdGlvbnMuaXRlbXN8fChhLm9wdGlvbnMuaXRlbXM9W10pLCJmdW5jdGlvbiI9PXR5cGVvZihmPWEub3B0aW9ucy5pdGVtcykmJihmPWYoKSk7dmFyIG89ITE7aWYoQXJyYXkuaXNBcnJheShmKSlmb3IodmFyIGQ9MDtkPGYubGVuZ3RoO2QrKyl7dmFyIGM9ZltkXTtpZihjLmlkPT1sKXtyPSQuZXh0ZW5kKCEwLHt9LGMpLHUuc2V0VmFsdWUoYS5uYW1lLHIpLG89ITA7YnJlYWt9fW98fG51bGw9PXJ8fCIiPT09cnx8YS4kZWwuZGF0YSgiZmluZF9zZWxlY3RlZCIscil9ZWxzZSJjb21ibyIhPT1hLnR5cGV8fCQuaXNQbGFpbk9iamVjdChyKT8kLmlzUGxhaW5PYmplY3QocikmJm51bGwhPXIudGV4dD9hLmVsLnZhbHVlPXIudGV4dDphLmVsLnZhbHVlPSIiOmEuZWwudmFsdWU9cjskLmlzUGxhaW5PYmplY3Qocil8fChyPXt9KSwkKGEuZWwpLncyZmllbGQoJC5leHRlbmQoe30sYS5vcHRpb25zLHt0eXBlOmEudHlwZSxzZWxlY3RlZDpyfSkpO2JyZWFrO2Nhc2UiZW51bSI6Y2FzZSJmaWxlIjp2YXIgaD1bXTtvPSExOyQuaXNBcnJheShyKXx8KHI9W10pLCJmdW5jdGlvbiIhPXR5cGVvZiBhLm9wdGlvbnMuaXRlbXMmJigkLmlzQXJyYXkoYS5vcHRpb25zLml0ZW1zKXx8KGEub3B0aW9ucy5pdGVtcz1bXSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Eub3B0aW9ucy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UmJihlLmlkPT10fHwkLmlzUGxhaW5PYmplY3QodCkmJmUuaWQ9PXQuaWQpJiYoaC5wdXNoKCQuaXNQbGFpbk9iamVjdChlKT8kLmV4dGVuZCghMCx7fSxlKTplKSxvPSEwKX0pfSkpLG98fG51bGw9PXJ8fDA9PT1yLmxlbmd0aHx8KGEuJGVsLmRhdGEoImZpbmRfc2VsZWN0ZWQiLHIpLGg9cik7dmFyIHA9JC5leHRlbmQoe30sYS5vcHRpb25zLHt0eXBlOmEudHlwZSxzZWxlY3RlZDpofSk7T2JqZWN0LmtleXMoYS5vcHRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBhLm9wdGlvbnNbZV0mJihwW2VdPWEub3B0aW9uc1tlXSl9KSwkKGEuZWwpLncyZmllbGQocCk7YnJlYWs7Y2FzZSJzZWxlY3QiOnZhciBmO2lmKG51bGwhPShmPWEub3B0aW9ucy5pdGVtcykmJjA8Zi5sZW5ndGgpe2Y9dzJvYmouZmllbGQucHJvdG90eXBlLm5vcm1NZW51LmNhbGwodGhpcyxmLGEpLCQoYS5lbCkuaHRtbCgiIik7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspJChhLmVsKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrZltnXS5pZCsnIj4nK2ZbZ10udGV4dCsiPC9vcHRpb24iKX0kKGEuZWwpLnZhbChyKTticmVhaztjYXNlIm1hcCI6Y2FzZSJhcnJheSI6Im1hcCIhPWEudHlwZXx8bnVsbCE9ciYmJC5pc1BsYWluT2JqZWN0KHIpfHwodGhpcy5zZXRWYWx1ZShhLmZpZWxkLHt9KSxyPXRoaXMuZ2V0VmFsdWUoYS5maWVsZCkpLCJhcnJheSIhPWEudHlwZXx8bnVsbCE9ciYmQXJyYXkuaXNBcnJheShyKXx8KHRoaXMuc2V0VmFsdWUoYS5maWVsZCxbXSkscj10aGlzLmdldFZhbHVlKGEuZmllbGQpKSxmdW5jdGlvbihmLGcpe2cuZWwubWFwQWRkPWZ1bmN0aW9uKGUsdCxpKXt2YXIgcz0oZS5kaXNhYmxlZD8iIHJlYWRPbmx5ICI6IiIpKyhlLmh0bWwudGFiaW5kZXhfc3RyfHwiIiksbj0nPGRpdiBjbGFzcz0idzJ1aS1tYXAtZmllbGQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiA1cHgiPjxpbnB1dCBpZD0iJytlLmZpZWxkKyJfa2V5XyIraSsnIiBkYXRhLWNudD0iJytpKyciIHR5cGU9InRleHQiICcrZS5odG1sLmtleS5hdHRyK3MrJyBjbGFzcz0idzJ1aS1pbnB1dCB3MnVpLW1hcCBrZXkiPicrKGUuaHRtbC5rZXkudGV4dHx8IiIpKyc8aW5wdXQgaWQ9IicrZS5maWVsZCsiX3ZhbHVlXyIraSsnIiBkYXRhLWNudD0iJytpKyciIHR5cGU9InRleHQiICcrZS5odG1sLnZhbHVlLmF0dHIrcysnIGNsYXNzPSJ3MnVpLWlucHV0IHcydWktbWFwIHZhbHVlIj4nKyhlLmh0bWwudmFsdWUudGV4dHx8IiIpKyI8L2Rpdj4iO3QuYXBwZW5kKG4pfSxnLmVsLm1hcFJlZnJlc2g9ZnVuY3Rpb24oaCxwKXt2YXIgZSxzLG4sYT0xOyJtYXAiPT1nLnR5cGUmJigkLmlzUGxhaW5PYmplY3QoaCl8fChoPXt9KSxudWxsPT1oLl9vcmRlciYmKGguX29yZGVyPU9iamVjdC5rZXlzKGgpKSxlPWguX29yZGVyKSwiYXJyYXkiPT1nLnR5cGUmJihBcnJheS5pc0FycmF5KGgpfHwoaD1bXSksZT1oLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3M9cC5maW5kKCIjIit3MnV0aWxzLmVzY2FwZUlkKGcubmFtZSkrIl9rZXlfIithKSxuPXAuZmluZCgiIyIrdzJ1dGlscy5lc2NhcGVJZChnLm5hbWUpKyJfdmFsdWVfIithKSwwIT1zLmxlbmd0aCYmMCE9bi5sZW5ndGh8fChnLmVsLm1hcEFkZChnLHAsYSkscz1wLmZpbmQoIiMiK3cydXRpbHMuZXNjYXBlSWQoZy5uYW1lKSsiX2tleV8iK2EpLG49cC5maW5kKCIjIit3MnV0aWxzLmVzY2FwZUlkKGcubmFtZSkrIl92YWx1ZV8iK2EpKTt2YXIgZT1oW3RdO2lmKCJhcnJheSI9PWcudHlwZSl7dmFyIGk9aC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5PT10fSk7MDxpLmxlbmd0aCYmKGU9aVswXS52YWx1ZSl9cy52YWwodCksbi52YWwoZSksITAhPT1nLmRpc2FibGVkJiYhMSE9PWcuZGlzYWJsZWR8fChzLnByb3AoInJlYWRPbmx5IiwhIWcuZGlzYWJsZWQpLG4ucHJvcCgicmVhZE9ubHkiLCEhZy5kaXNhYmxlZCkpLHMucGFyZW50cygiLncydWktbWFwLWZpZWxkIikuYXR0cigiZGF0YS1rZXkiLHQpLGErK30pO3ZhciB0PXAuZmluZCgiIyIrdzJ1dGlscy5lc2NhcGVJZChnLm5hbWUpKyJfa2V5XyIrYSkucGFyZW50KCksaT1wLmZpbmQoIiMiK3cydXRpbHMuZXNjYXBlSWQoZy5uYW1lKSsiX2tleV8iKyhhKzEpKS5wYXJlbnQoKTswIT09dC5sZW5ndGh8fHMmJighMD09PXMucHJvcCgicmVhZE9ubHkiKXx8ITA9PT1zLnByb3AoImRpc2FibGVkIikpfHxnLmVsLm1hcEFkZChnLHAsYSksMT09dC5sZW5ndGgmJjE9PWkubGVuZ3RoJiYodC5yZW1vdmVBdHRyKCJkYXRhLWtleSIpLHQuZmluZCgiLmtleSIpLnZhbChpLmZpbmQoIi5rZXkiKS52YWwoKSksdC5maW5kKCIudmFsdWUiKS52YWwoaS5maW5kKCIudmFsdWUiKS52YWwoKSksaS5yZW1vdmUoKSksITAhPT1nLmRpc2FibGVkJiYhMSE9PWcuZGlzYWJsZWR8fCh0LmZpbmQoIi5rZXkiKS5wcm9wKCJyZWFkT25seSIsISFnLmRpc2FibGVkKSx0LmZpbmQoIi52YWx1ZSIpLnByb3AoInJlYWRPbmx5IiwhIWcuZGlzYWJsZWQpKSwkKGcuZWwpLm5leHQoKS5maW5kKCJpbnB1dC53MnVpLW1hcCIpLm9mZigiLm1hcENoYW5nZSIpLm9uKCJrZXl1cC5tYXBDaGFuZ2UiLGZ1bmN0aW9uKGUpe3ZhciB0PSQoZS50YXJnZXQpLnBhcmVudHMoIi53MnVpLW1hcC1maWVsZCIpOzEzPT1lLmtleUNvZGUmJnQubmV4dCgpLmZpbmQoImlucHV0LmtleSIpLmZvY3VzKCl9KS5vbigiY2hhbmdlLm1hcENoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZT0kKGV2ZW50LnRhcmdldCkucGFyZW50cygiLncydWktbWFwLWZpZWxkIiksaT1lLmF0dHIoImRhdGEta2V5IiksdD1lLmZpbmQoIi5rZXkiKS52YWwoKSxzPWUuZmluZCgiLnZhbHVlIikudmFsKCksbj17fSxhPXt9LHI9bnVsbCxsPW51bGw7blt0XT1zLCJhcnJheSI9PWcudHlwZSYmKGguZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uua2V5PT1pJiYobD10KX0pLHI9aFtsXSksbnVsbCE9aSYmIm1hcCI9PWcudHlwZSYmKGFbaV09aFtpXSksbnVsbCE9aSYmImFycmF5Ij09Zy50eXBlJiYoYVtpXT1yLnZhbHVlKTt2YXIgbz1mLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHRhcmdldDpnLmZpZWxkLHR5cGU6ImNoYW5nZSIsb3JpZ2luYWxFdmVudDpldmVudCx2YWx1ZV9uZXc6bix2YWx1ZV9wcmV2aW91czphfSk7aWYoITAhPT1vLmlzQ2FuY2VsbGVkKXtpZigibWFwIj09Zy50eXBlKXtkZWxldGUgaFtpXTt2YXIgZD1oLl9vcmRlci5pbmRleE9mKGkpO2lmKCIiIT10KXtpZihudWxsIT1oW3RdKXtmb3IodmFyIHUsYz0wO3U9dCsgKytjLG51bGwhPWhbdV07KTt0PXUsZS5maW5kKCIua2V5IikudmFsKHUpfWhbdF09cyxlLmF0dHIoImRhdGEta2V5Iix0KSwtMSE9ZD9oLl9vcmRlcltkXT10OmguX29yZGVyLnB1c2godCl9ZWxzZSBoLl9vcmRlci5zcGxpY2UoZCwxKSxlLmZpbmQoIi52YWx1ZSIpLnZhbCgiIil9ZWxzZSJhcnJheSI9PWcudHlwZSYmKCIiIT10P251bGw9PXI/aC5wdXNoKHtrZXk6dCx2YWx1ZTpzfSk6KHIua2V5PXQsci52YWx1ZT1zKTpoLnNwbGljZShsLDEpKTtmLnNldFZhbHVlKGcuZmllbGQsaCksZy5lbC5tYXBSZWZyZXNoKGgscCksZi50cmlnZ2VyKCQuZXh0ZW5kKG8se3BoYXNlOiJhZnRlciJ9KSl9fSl9LGcuZWwubWFwUmVmcmVzaChyLCQoZy5lbCkucGFyZW50KCkuZmluZCgiLncydWktbWFwLWNvbnRhaW5lciIpKX0odGhpcyxhKTticmVhaztjYXNlInJhZGlvIjokKGEuJGVsKS5wcm9wKCJjaGVja2VkIiwhMSkuZWFjaChmdW5jdGlvbihlLHQpeyQodCkudmFsKCk9PXImJiQodCkucHJvcCgiY2hlY2tlZCIsITApfSk7YnJlYWs7Y2FzZSJjaGVja2JveCI6JChhLmVsKS5wcm9wKCJjaGVja2VkIiwhIXIpLCEwIT09YS5kaXNhYmxlZCYmITEhPT1hLmRpc2FibGVkfHwkKGEuZWwpLnByb3AoImRpc2FibGVkIiwhIWEuZGlzYWJsZWQpO2JyZWFrO2Nhc2UiZGl2IjpjYXNlImN1c3RvbSI6JChhLmVsKS5odG1sKHIpO2JyZWFrO2Nhc2UiaHRtbCI6Y2FzZSJlbXB0eSI6YnJlYWs7ZGVmYXVsdDokKGEuZWwpLnZhbChyKSwkKGEuZWwpLncyZmllbGQoJC5leHRlbmQoe30sYS5vcHRpb25zLHt0eXBlOmEudHlwZX0pKX19dmFyIG09JCh0aGlzLmJveCkuZmluZCgiLncydWktcGFnZSIpO2ZvcihkPTA7ZDxtLmxlbmd0aDtkKyspMTwkKG1bZF0pLmZpbmQoIj4gKiIpLmxlbmd0aCYmJChtW2RdKS53cmFwSW5uZXIoIjxkaXY+PC9kaXY+Iik7cmV0dXJuIHRoaXMudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpLHRoaXMucmVzaXplKCksKG5ldyBEYXRlKS5nZXRUaW1lKCktZX19fSxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksaT10aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSYmKDA8JCh0aGlzLmJveCkuZmluZCgiI2Zvcm1fIit0aGlzLm5hbWUrIl90YWJzIikubGVuZ3RoJiYkKHRoaXMuYm94KS5yZW1vdmVBdHRyKCJuYW1lIikucmVtb3ZlQ2xhc3MoIncydWktcmVzZXQgdzJ1aS1mb3JtIikuaHRtbCgiIiksdGhpcy5ib3g9ZSksdGhpcy5pc0dlbmVyYXRlZCYmdGhpcy5ib3gpe3ZhciBzPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdGFyZ2V0OnRoaXMubmFtZSx0eXBlOiJyZW5kZXIiLGJveDpudWxsIT1lP2U6dGhpcy5ib3h9KTtpZighMCE9PXMuaXNDYW5jZWxsZWQpe3ZhciBuPSc8ZGl2IGNsYXNzPSJ3MnVpLWZvcm0tYm94Ij4nKygiIiE9PXRoaXMuaGVhZGVyPyc8ZGl2IGNsYXNzPSJ3MnVpLWZvcm0taGVhZGVyIj4nK3RoaXMuaGVhZGVyKyI8L2Rpdj4iOiIiKSsnICAgIDxkaXYgaWQ9ImZvcm1fJyt0aGlzLm5hbWUrJ190b29sYmFyIiBjbGFzcz0idzJ1aS1mb3JtLXRvb2xiYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lIj48L2Rpdj4gICAgPGRpdiBpZD0iZm9ybV8nK3RoaXMubmFtZSsnX3RhYnMiIGNsYXNzPSJ3MnVpLWZvcm0tdGFicyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjwvZGl2PicrdGhpcy5mb3JtSFRNTCsiPC9kaXY+IjtyZXR1cm4gJCh0aGlzLmJveCkuYXR0cigibmFtZSIsdGhpcy5uYW1lKS5hZGRDbGFzcygidzJ1aS1yZXNldCB3MnVpLWZvcm0iKS5odG1sKG4pLDA8JCh0aGlzLmJveCkubGVuZ3RoJiYoJCh0aGlzLmJveClbMF0uc3R5bGUuY3NzVGV4dCs9dGhpcy5zdHlsZSksImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMudG9vbGJhci5yZW5kZXImJih0aGlzLnRvb2xiYXI9JCgpLncydG9vbGJhcigkLmV4dGVuZCh7fSx0aGlzLnRvb2xiYXIse25hbWU6dGhpcy5uYW1lKyJfdG9vbGJhciIsb3duZXI6dGhpc30pKSx0aGlzLnRvb2xiYXIub24oImNsaWNrIixmdW5jdGlvbihlKXt2YXIgdD1pLnRyaWdnZXIoe3BoYXNlOiJiZWZvcmUiLHR5cGU6InRvb2xiYXIiLHRhcmdldDplLnRhcmdldCxvcmlnaW5hbEV2ZW50OmV9KTshMCE9PXQuaXNDYW5jZWxsZWQmJmkudHJpZ2dlcigkLmV4dGVuZCh0LHtwaGFzZToiYWZ0ZXIifSkpfSkpLCJvYmplY3QiPT10eXBlb2YgdGhpcy50b29sYmFyJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy50b29sYmFyLnJlbmRlciYmdGhpcy50b29sYmFyLnJlbmRlcigkKCIjZm9ybV8iK3RoaXMubmFtZSsiX3Rvb2xiYXIiKVswXSksImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMudGFicy5yZW5kZXImJih0aGlzLnRhYnM9JCgpLncydGFicygkLmV4dGVuZCh7fSx0aGlzLnRhYnMse25hbWU6dGhpcy5uYW1lKyJfdGFicyIsb3duZXI6dGhpcyxhY3RpdmU6dGhpcy50YWJzLmFjdGl2ZX0pKSx0aGlzLnRhYnMub24oImNsaWNrIixmdW5jdGlvbihlKXtpLmdvdG8odGhpcy5nZXQoZS50YXJnZXQsITApKX0pKSwib2JqZWN0Ij09dHlwZW9mIHRoaXMudGFicyYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMudGFicy5yZW5kZXImJih0aGlzLnRhYnMucmVuZGVyKCQoIiNmb3JtXyIrdGhpcy5uYW1lKyJfdGFicyIpWzBdKSx0aGlzLnRhYnMuYWN0aXZlJiZ0aGlzLnRhYnMuY2xpY2sodGhpcy50YWJzLmFjdGl2ZSkpLHRoaXMudHJpZ2dlcigkLmV4dGVuZChzLHtwaGFzZToiYWZ0ZXIifSkpLHRoaXMucmVzaXplKCksKCJvYmplY3QiIT10eXBlb2YgdGhpcy51cmw/dGhpcy51cmw6dGhpcy51cmwuZ2V0KSYmMCE9PXRoaXMucmVjaWQmJm51bGwhPXRoaXMucmVjaWQ/dGhpcy5yZXF1ZXN0KCk6dGhpcy5yZWZyZXNoKCksMD09PSQoIi53MnVpLWxheW91dCIpLmxlbmd0aCYmKHRoaXMudG1wX3Jlc2l6ZT1mdW5jdGlvbihlKXtudWxsPT13MnVpW2kubmFtZV0/JCh3aW5kb3cpLm9mZigicmVzaXplLncydWlSZXNpemUiLGkudG1wX3Jlc2l6ZSk6dzJ1aVtpLm5hbWVdLnJlc2l6ZSgpfSwkKHdpbmRvdykub2ZmKCJyZXNpemUudzJ1aVJlc2l6ZSIpLm9uKCJyZXNpemUudzJ1aVJlc2l6ZSIsaS50bXBfcmVzaXplKSksLTEhPXRoaXMuZm9jdXMmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXswPT09JChpLmJveCkuZmluZCgiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEiKS5sZW5ndGg/c2V0VGltZW91dChmb2N1c0VsLDUwMCk6aS5hcHBseUZvY3VzKCl9LDUwKSwobmV3IERhdGUpLmdldFRpbWUoKS10fX19LGFwcGx5Rm9jdXM6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5mb2N1cyx0PSQodGhpcy5ib3gpLmZpbmQoImRpdjpub3QoLncydWktZmllbGQtaGVscGVyKSA+IGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBkaXYgPiBsYWJlbDpudGgtY2hpbGQoMSkgPiA6cmFkaW8iKS5ub3QoIi5maWxlLWlucHV0Iik7JCh0W2VdKS5pcygiOmhpZGRlbiIpJiZ0Lmxlbmd0aD49ZTspZSsrO3RbZV0mJnRbZV0uZm9jdXMoKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpZ2dlcih7cGhhc2U6ImJlZm9yZSIsdGFyZ2V0OnRoaXMubmFtZSx0eXBlOiJkZXN0cm95In0pOyEwIT09ZS5pc0NhbmNlbGxlZCYmKCJvYmplY3QiPT10eXBlb2YgdGhpcy50b29sYmFyJiZ0aGlzLnRvb2xiYXIuZGVzdHJveSYmdGhpcy50b29sYmFyLmRlc3Ryb3koKSwib2JqZWN0Ij09dHlwZW9mIHRoaXMudGFicyYmdGhpcy50YWJzLmRlc3Ryb3kmJnRoaXMudGFicy5kZXN0cm95KCksMDwkKHRoaXMuYm94KS5maW5kKCIjZm9ybV8iK3RoaXMubmFtZSsiX3RhYnMiKS5sZW5ndGgmJiQodGhpcy5ib3gpLnJlbW92ZUF0dHIoIm5hbWUiKS5yZW1vdmVDbGFzcygidzJ1aS1yZXNldCB3MnVpLWZvcm0iKS5odG1sKCIiKSxkZWxldGUgdzJ1aVt0aGlzLm5hbWVdLHRoaXMudHJpZ2dlcigkLmV4dGVuZChlLHtwaGFzZToiYWZ0ZXIifSkpLCQod2luZG93KS5vZmYoInJlc2l6ZSIsImJvZHkiKSl9fSwkLmV4dGVuZCh3MmZvcm0ucHJvdG90eXBlLHcydXRpbHMuZXZlbnQpLHcyb2JqLmZvcm09dzJmb3JtfShqUXVlcnkpLGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClyZXR1cm4gZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGV4cG9ydHMpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cylyZXR1cm4gZXhwb3J0cz1tb2R1bGUuZXhwb3J0cz10O2U9ZXhwb3J0c31mb3IodmFyIGkgaW4gdCllW2ldPXRbaV19KHRoaXMse3cydWk6dzJ1aSx3Mm9iajp3Mm9iaix3MnV0aWxzOncydXRpbHMsdzJwb3B1cDp3MnBvcHVwLHcyYWxlcnQ6dzJhbGVydCx3MmNvbmZpcm06dzJjb25maXJtLHcycHJvbXB0OncycHJvbXB0fSk7",
  48. {"status":false}
  49. ],
  50. [
  51. "w2ui.min.css_1.5",
  52. "LyogdzJ1aSAxLjUueCAobmlnaHRseSkgKGMpIGh0dHA6Ly93MnVpLmNvbSwgdml0bWFsaW5hQGdtYWlsLmNvbSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogIncydWktZm9udCI7CiAgc3JjOiB1cmwoImRhdGE6YXBwbGljYXRpb24veC1mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUFjVUFBb0FBQUFBQ29BQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJQVXk4eUFBQUE5QUFBQUVNQUFBQldRTHhNd21OdFlYQUFBQUU0QUFBQU9nQUFBVXJpSFJDMloyeDVaZ0FBQVhRQUFBTm9BQUFFdkZFU1IyWm9aV0ZrQUFBRTNBQUFBREFBQUFBMkNlcXQyR2hvWldFQUFBVU1BQUFBSUFBQUFDUUQ4d0hMYUcxMGVBQUFCU3dBQUFBV0FBQUFNQmJkQUFCc2IyTmhBQUFGUkFBQUFCb0FBQUFhQnJBRnNHMWhlSEFBQUFWZ0FBQUFId0FBQUNBQkhBQmdibUZ0WlFBQUJZQUFBQUV0QUFBQ0lzVFEvekp3YjNOMEFBQUdzQUFBQUdRQUFBQ0ZZSFJGMW5pY1kyQmtmTUU0Z1lHVmdZUFJoVEdOZ1lIQkhVcC9aWkJrYUdGZ1lHSmdaV2JBQ2dMU1hGTVlIRDR5ZnVSbVBQRC9BSU1lNHdFR1I2QXdJMGdPQU5ZSkRBSUFlSnhqWUdCZ1pvQmdHUVpHQmhCd0FmSVl3WHdXQmcwZ3pRYWtHUm1ZR0JnK2N2Ly9EMUx3a1JGRTh6TkExUU1CSXh2RGlBY0FlbEFHd2dBQWVKeUZWRStJNDJRVWYrOUxteTlKdTJsTDBtVCtiQ1p0MHlhV01oMXRtOFNaMlczbklySUgyYnBDeDZYdE1IaFoyQmxCR054bGtZVkJGbSt6aC9VcXk0Q0NnaDBSajRLNGUxbGh3SU1nZ25pcEp3K0t6c1dESXFrdjdWUkZCQVBmNzMxNXYvZVM5MzdmU3dBQkptY004QkNTQU1nOWJpSitmUFphOXhGdTRlSE14c3prSi93REg0QU1HbGl3Q2dHQTVvb1pGQTBidlpDcmFHUG8xZEZzdVk1WEVyblFRYzhsRTlOR0VHcUJLNmhZeHphdTRJdFNuaGM0azA1ZnViU204TVNyb3BIUVBsSlR6UlE5YlA5d1ZkR1Q3eVpGNWR5ZWlKckdGVjBUMGFVVVQ5YjVCOSs4bms5cXlpOC9yc21TUWpscUt2cjlxMldUVXFMSGlwWmNTSWd5ZGhROWVxS0lpcWJUQXJvRXF2ODMvQTRmMG81RGltcHY1cHo1cXZiN0gvYjdvMzRmSDBZRGZHKzJTSW80RWUvaEVaVEptb2FlbVlGWVdrTWVnOXVLbXlRSUd0UjgwREN4VzVQbDRWQ1dhL0tpTkJ6SWkvTGY5L0pnS0MzS2VLOUdPS01rYVRpVXBCbEY4UlE2R01neVFJSnEvWUswL2d3eXNBZ1ZlSWFxYmVNbU5nd0xkWkU3ZGZSTXgyLzZ0UEpOVXBXdm9ObkdzSTRDTWJTaFd4Vy94d3RLVnJrd0JkeTVhOXM3ZG52dlNCQ085bTdlRjRUN043Y1BHRHZZN3NXSVQ4M2pLT2Zyd281OUY2OVR4RHc2dWpRUDdHMGZ4Skl3cXU5Yi9BSGZwMHBKM0E3ek1uU3lYb2M1WEtpRWZnYWZiSnhhcDg4ckY0M1Y5WlBlU1E4TG81SHpsa1crWStPaThvWXpHa1ZqY3Arc3cxemp0L0VkY0FBcWVWMnM0UlJLN21WMFltZ0ZtK2pIRUhmZmJCajRJSnU2blUyRjZlenRWRGJlcHNOVXZQMlpQTGZTMld6NjF0d1RrL0h6SjcvaUovZ3BWT2s5cmxOU21iN0NtbzBnYk5QQUdqck5yVk9xczFhYmZJWVowanM0aHRWbkxkODFUZGUzaXB0NUpnbXV3T3plMDdYdWVxbTAzcTFWWDdDZVMzeEp3MjU2L3Fidm1TdExBZ29lbzk2cnprWjN1N3ZoMk5aVjZmcmV3bFNyeVdUeU9VTjhORDFKcUhndWI2TlBhczJPamVvUWJmb2tBcmZ5ajdQRHN6dDZ6bGhnKzlldTdUUENjbWNKY3pmVThqS0xIZ2RYRUs4RVUwemZ5T0ZTcHp5TElWd3djdnFkREZzdXZ6bVBJS1FhUk5KZ1ROLzNNWml3REUwSTRTcThSRFBsdDF3U1dyVFF5VGZ6dWtFU0I1ZXg2Q2Rwck13NVZjd1gvNkpvNGpoeC9ML1RpakUzVnBXdW91N3VUZzBXb3NPdG1TY2FZK0djMnQwNi9sZlFlSmYrTTVLaXFvcTBkVzdvZXZsL0hkVGFuN2FOMVhONG5HTmdaR0JnQUdJcFRjMmtlSDZicnd6Y1RBd2djQ1YxMnpvWS9mLy8vLzFNakl3SGdGd09CckEwQUMyQURFRjRuR05nWkdCZ1BQRC9BSU1lRXdNRHcvOS9URXdNUUJFVXdBTUFlNElFd0hpY1kySmdZR0JDd295VE1mbU0yeEY4QUNTckFmTUFBQUFBQUFBQUVnQnlBSXdBeUFESUFSZ0JQZ0Z1QWE0QjhBSmVBQUI0bkdOZ1pHQmc0R0VJWVdCakFBRW1JT1lDUWdhRy8yQStBd0FTVEFGOUFIaWNiWTlOYnNJd0VJVmZJRkFWcEFxMVVxWHVyQzY2cVFnL0N4WWNBUFlzMklmZ0JGQVNSNDVCNGdJOVFjL1FNL1FFWGZZTVBVcGZ3aWlMRmxzZWYvUG1qWDhBRFBBRkQ5WHdjRnZIYXJSd3crekNiZEpBMkNjL0NYZlF4N053bC9wUXVJZFh6SVQ3ZUVESUV6eS9PdTBlVHJpRk83d0p0Nm0vQy92a0QrRU9IdkVwM0tYK0xkekRHai9DZmJ4NHMzMWs4bUZzY3JmU3lURU5iWk0zc05hMjNKdGNUWUp4b3kxMXJtM285Rlp0enFvOEpWUG5ZaFZiazZrRnF6cE5qU3FzT2VqSUJUdm5pdmxvRklzZVJDYkRIaEVNY3Y0NnJuZUhGVFFTSEpIeXgvWksvYit5Wm9kRnlVcVZLMHdRWUh6RnQ2UXZyNzBoTTQwdHZSdWNHVXVjZU9lVXFxTmJjVm4yWktTRjlHcStKeVVyRkhYdFFDV2lIbUJYZHhXWVk4UVovL0VIOVN1eVgyNE9ZSElBQUFCNG5HM0ZRUktDTUF3RjBIeHNDaXFYWkdLRWpxWHBOR1hCN1hIR3JXL3phS0FmcHY5bUlneTRJWUFSTVdMQ0hRODhNYk5zS3A4b2xxMzUrTzNZaTdNMGMyZmRhejlES20rTFZZdWtIR28rUERiTnRyeWk2OUprbTF4N1QyVjFvZ3NhcmhyZCIpIGZvcm1hdCgid29mZiIpOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgZm9udC1zdHlsZTogbm9ybWFsOwp9CltjbGFzc149IncydWktaWNvbi0iXTpiZWZvcmUsCltjbGFzcyo9IiB3MnVpLWljb24tIl06YmVmb3JlIHsKICBmb250LWZhbWlseTogIncydWktZm9udCI7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgbGluZS1oZWlnaHQ6IDE7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgc3BlYWs6IG5vbmU7CiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0OwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKfQovKiBJY29ucyAqLwoudzJ1aS1pY29uLWNoZWNrOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTAxIjsKfQoudzJ1aS1pY29uLWNvbG9yczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwMiI7Cn0KLncydWktaWNvbi1jb2x1bW5zOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTAzIjsKfQoudzJ1aS1pY29uLWNyb3NzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTA0IjsKfQoudzJ1aS1pY29uLWVtcHR5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTA1IjsKfQoudzJ1aS1pY29uLWluZm86YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDYiOwp9Ci53MnVpLWljb24tcGVuY2lsOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTA3IjsKfQoudzJ1aS1pY29uLXBsdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDgiOwp9Ci53MnVpLWljb24tcmVsb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTA5IjsKfQoudzJ1aS1pY29uLXNlYXJjaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwYSI7Cn0KLncydWktaWNvbi1zZXR0aW5nczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwYiI7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAtLS0gUmVzZXQgKHVzZWQgZm9yIGFsbCB3MnVpIHdpZGdldHMpCiogLS0tIFRoZSByZXNldCBpcyBuZWVkZWQgdG8gY29leGlzdCB3aXRoIG90aGVyIENTUwoqIC0tLSBvbiB0aGUgc2FtZSBwYWdlIChmb3IgZXhhbXBsZSBib290c3RyYXApCiovCi53MnVpLXJlc2V0IHsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tcy1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxMXB4Owp9Ci53MnVpLXJlc2V0ICogewogIGNvbG9yOiBkZWZhdWx0OwogIGxpbmUtaGVpZ2h0OiAxMDAlOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIG1hcmdpbjogMHB4OwogIHBhZGRpbmc6IDBweDsKfQoudzJ1aS1yZXNldCB0YWJsZSB7CiAgbWF4LXdpZHRoOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgYm9yZGVyLXNwYWNpbmc6IDA7CiAgYm9yZGVyOiBub25lOwp9Ci53MnVpLXJlc2V0IHRhYmxlIHRyIHRoLAoudzJ1aS1yZXNldCB0YWJsZSB0ciB0ZCB7CiAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTogMTFweDsKfQoudzJ1aS1yZXNldCBpbnB1dDpub3QoW3R5cGU9YnV0dG9uXSk6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1yYWRpb10pLAoudzJ1aS1yZXNldCBzZWxlY3QsCi53MnVpLXJlc2V0IHRleHRhcmVhIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IGF1dG87CiAgaGVpZ2h0OiBhdXRvOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBwYWRkaW5nOiA0cHg7CiAgbWFyZ2luOiAwOwogIGZvbnQtc2l6ZTogMTFweDsKfQoudzJ1aS1yZXNldCBzZWxlY3QgewogIHBhZGRpbmc6IDFweDsKICBoZWlnaHQ6IDIzcHg7CiAgZm9udC1zaXplOiAxMXB4Owp9Ci53MnVpLWNlbnRlcmVkIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIG1heC1oZWlnaHQ6IDEwMCU7CiAgbWFyZ2luOiAwcHg7CiAgcGFkZGluZzogMHB4IDEwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci53MnVpLWRpc2FibGVkLAoudzJ1aS1yZWFkb25seSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMSAhaW1wb3J0YW50OwogIGNvbG9yOiAjNzc3ICFpbXBvcnRhbnQ7CiAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7Cn0KLncydWktbWVzc2FnZSB7CiAgZm9udC1zaXplOiAxMnB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAyNTA7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y5RjlGOTsKICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogIGJveC1zaGFkb3c6IDBweCAwcHggMTVweCAjYWFhOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJvcmRlci10b3A6IDBweDsKICBib3JkZXItcmFkaXVzOiAwcHggMHB4IDZweCA2cHg7CiAgb3ZlcmZsb3c6IGF1dG87Cn0KLncydWktbWVzc2FnZSAudzJ1aS1tZXNzYWdlLWJvZHkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBib3R0b206IDQ1cHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgb3ZlcmZsb3c6IGF1dG87CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBmb250LXNpemU6IDE0cHg7Cn0KLncydWktbWVzc2FnZSAudzJ1aS1tZXNzYWdlLWJvZHkgLncydWktY2VudGVyZWQgewogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLncydWktbWVzc2FnZSAudzJ1aS1tZXNzYWdlLWJ1dHRvbnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBoZWlnaHQ6IDQ1cHg7CiAgYm90dG9tOiAwcHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU1ZTU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBhZGRpbmc6IDhweDsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIC0tLS0gSW5wdXQgQ29udHJvbHMgLS0tLQoqLwpkaXYudzJ1aS1pbnB1dDpmb2N1cyB7CiAgb3V0bGluZS1jb2xvcjogIzcyQjJGRjsKfQppbnB1dDpub3QoW3R5cGU9YnV0dG9uXSk6bm90KFt0eXBlPXN1Ym1pdF0pLncydWktaW5wdXQsCnRleHRhcmVhLncydWktaW5wdXQgewogIHBhZGRpbmc6IDRweDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2FjYWNhOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBjb2xvcjogYmxhY2s7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQppbnB1dDpub3QoW3R5cGU9YnV0dG9uXSk6bm90KFt0eXBlPXN1Ym1pdF0pLncydWktaW5wdXQ6Zm9jdXMsCnRleHRhcmVhLncydWktaW5wdXQ6Zm9jdXMgewogIG91dGxpbmUtY29sb3I6ICM3MkIyRkY7Cn0KaW5wdXQ6bm90KFt0eXBlPWJ1dHRvbl0pOm5vdChbdHlwZT1zdWJtaXRdKS53MnVpLWlucHV0OmRpc2FibGVkLAp0ZXh0YXJlYS53MnVpLWlucHV0OmRpc2FibGVkLAppbnB1dDpub3QoW3R5cGU9YnV0dG9uXSk6bm90KFt0eXBlPXN1Ym1pdF0pLncydWktaW5wdXRbcmVhZG9ubHldLAp0ZXh0YXJlYS53MnVpLWlucHV0W3JlYWRvbmx5XSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKICBjb2xvcjogIzc3NzsKICBvdXRsaW5lOiBub25lIWltcG9ydGFudDsKfQovKiBJRTktMTEgc3BlY2lmaWMgY2xhc3NlcyAqLwovKiBuZWVkcyBkb2JsdWUgOjogKi8KaW5wdXQudzJ1aS1pbnB1dDo6LW1zLWNsZWFyIHsKICBkaXNwbGF5OiBub25lOwp9CmlucHV0LncydWktaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogI2FhYSAhaW1wb3J0YW50Owp9CnNlbGVjdC53MnVpLWlucHV0IHsKICBjb2xvcjogYmxhY2s7CiAgcGFkZGluZzogMHB4IDE1cHggMHB4IDdweDsKICBsaW5lLWhlaWdodDogMS44OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2FjYWNhOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBTENBUUFBQUNuendkK0FBQUFja2xFUVZSNEFjWE1zUUZCUVFERzRQOXRBZ0MwZ0pZUlFKWmdLUU13Q3FDa3U2dlZBQUFBK05KSFA0S0hPazBhVjJwUnc2MW40QkJteU94S1E4STRlaFpldWhkM0hUeDZEUUVHWjdzQmZyMk9PT09qM1lpNDNrTUtzOXNaa25vZk9leHFaOG5wTXlnd1daVFg1MUNpcFArWUExT2laSmJZWWc5bEFBQUFBRWxGVGtTdVFtQ0MnKSwgLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjRkZGIDIwJSwgI2Y2ZjZmNiA1MCUsICNFRUUgNTIlLCAjZjRmNGY0IDEwMCUpOwogIGJhY2tncm91bmQtc2l6ZTogMTdweCA2cHgsIDEwMCUgMTAwJTsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjZW50ZXIsIGxlZnQgdG9wOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIG5vLXJlcGVhdDsKfQoudzJ1aS1pY29uLWV4cGFuZDpiZWZvcmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDFweDsKICBsZWZ0OiAxcHg7CiAgY29udGVudDogJyAnOwogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA1cHg7CiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxNTAsIDE1MCwgMTUwLCAwLjgpOwogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLWxlZnQ6IDA7CiAgdHJhbnNmb3JtOiByb3RhdGVaKDQ1ZGVnKTsKfQoudzJ1aS1pY29uLWNvbGxhcHNlOmJlZm9yZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTFweDsKICBsZWZ0OiAzcHg7CiAgY29udGVudDogJyAnOwogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA1cHg7CiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxNTAsIDE1MCwgMTUwLCAwLjgpOwogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLWxlZnQ6IDA7CiAgdHJhbnNmb3JtOiByb3RhdGVaKDEzNWRlZyk7Cn0KLyogT24vT2ZmIHN3aXRjaCAqLwppbnB1dFt0eXBlPSJjaGVja2JveCJdLncydWktdG9nZ2xlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgb3BhY2l0eTogMDsKICB3aWR0aDogNDZweDsKICBoZWlnaHQ6IDIycHg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbjogMHB4OwogIG1hcmdpbi1sZWZ0OiAycHg7CiAgLyogS25vYiAqLwogIC8qIEdyZWVuICovCiAgLyogRGVmYXVsdCBCbHVlICovCn0KaW5wdXRbdHlwZT0iY2hlY2tib3giXS53MnVpLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMHB4IDBweCAxcHggMnB4ICNhOGNmZmY7Cn0KaW5wdXRbdHlwZT0iY2hlY2tib3giXS53MnVpLXRvZ2dsZSArIGRpdiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiA0NnB4OwogIGhlaWdodDogMjJweDsKICBib3JkZXI6IDFweCBzb2xpZCAjYmJiOwogIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7CiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3gtc2hhZG93OwogIC1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICBtYXJnaW4tbGVmdDogMnB4Owp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGUudzJ1aS1zbWFsbCArIGRpdiB7CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAxNnB4Owp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGU6Zm9jdXMgKyBkaXYgewogIGJveC1zaGFkb3c6IDBweCAwcHggM3B4IDJweCAjOTFiYWVkOwp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGU6ZGlzYWJsZWQgKyBkaXYgewogIG9wYWNpdHk6IDAuMzsKfQppbnB1dFt0eXBlPSJjaGVja2JveCJdLncydWktdG9nZ2xlICsgZGl2ID4gZGl2IHsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogMjJweDsKICBoZWlnaHQ6IDIycHg7CiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwogIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKICAtbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7CiAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGJhY2tncm91bmQtY29sb3I7CiAgYm94LXNoYWRvdzogMHB4IDBweCAxcHggIzMyMzIzMiwgMCAwIDAgMXB4IHJnYmEoMjAwLCAyMDAsIDIwMCwgMC42KTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBtYXJnaW4tdG9wOiAtMXB4OwogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGUudzJ1aS1zbWFsbCArIGRpdiA+IGRpdiB7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAxNnB4Owp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGU6Y2hlY2tlZCArIGRpdiA+IGRpdiB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDI0cHgsIDAsIDApOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyNHB4LCAwLCAwKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGUudzJ1aS1zbWFsbDpjaGVja2VkICsgZGl2ID4gZGl2IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTRweCwgMCwgMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDE0cHgsIDAsIDApOwp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGU6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KaW5wdXRbdHlwZT0iY2hlY2tib3giXS53MnVpLXRvZ2dsZTpjaGVja2VkICsgZGl2IHsKICBib3JkZXI6IDFweCBzb2xpZCAjMDBhMjNmOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDEycHggIzU0QjM1MDsKfQppbnB1dFt0eXBlPSJjaGVja2JveCJdLncydWktdG9nZ2xlOmNoZWNrZWQ6Zm9jdXMgKyBkaXYgewogIGJveC1zaGFkb3c6IDBweCAwcHggM3B4IDJweCAjOTFiYWVkLCBpbnNldCAwIDAgMCAxMnB4ICM1NEIzNTA7Cn0KaW5wdXRbdHlwZT0iY2hlY2tib3giXS53MnVpLXRvZ2dsZTpjaGVja2VkICsgZGl2ID4gZGl2IHsKICBib3gtc2hhZG93OiAwcHggMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMyksIDAgMCAwIDFweCAjMDBhMjNmOwp9CmlucHV0W3R5cGU9ImNoZWNrYm94Il0udzJ1aS10b2dnbGUuYmx1ZTpjaGVja2VkICsgZGl2IHsKICBib3JkZXI6IDFweCBzb2xpZCAjMjA2RkFEOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDEycHggIzM1QTZFQjsKfQppbnB1dFt0eXBlPSJjaGVja2JveCJdLncydWktdG9nZ2xlLmJsdWU6Y2hlY2tlZDpmb2N1cyArIGRpdiB7CiAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggMnB4ICM5MWJhZWQsIGluc2V0IDAgMCAwIDEycHggIzM1QTZFQjsKfQppbnB1dFt0eXBlPSJjaGVja2JveCJdLncydWktdG9nZ2xlLmJsdWU6Y2hlY2tlZCArIGRpdiA+IGRpdiB7CiAgYm94LXNoYWRvdzogMHB4IDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwcHggMHB4IDAgMXB4ICMyMDZGQUQ7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAtLS0tIE92ZXJsYXkgYW5kIEJ1YmJsZSAtLS0tCiovCi53MnVpLW92ZXJsYXkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tdG9wOiA0cHg7CiAgbWFyZ2luLWxlZnQ6IC0xN3B4OwogIGRpc3BsYXk6IG5vbmU7CiAgei1pbmRleDogMTMwMDsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRmJGYkZiOwogIGJvcmRlci1jb2xvcjogI0ZiRmJGYjsKICBib3gtc2hhZG93OiAwcHggMnB4IDEwcHggIzk5OTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudzJ1aS1vdmVybGF5ID4gZGl2IHsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlcjogM3B4IHNvbGlkICM3Nzc7Cn0KLncydWktb3ZlcmxheSB0YWJsZSB0ZCB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLncydWktb3ZlcmxheTpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3JkZXItY29sb3I6IGluaGVyaXQ7Cn0KLncydWktb3ZlcmxheTphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlci1jb2xvcjogaW5oZXJpdDsKICBib3R0b206IDEwMCU7CiAgbGVmdDogNHB4Owp9Ci53MnVpLW92ZXJsYXkudG9wLWFycm93OmJlZm9yZSB7CiAgYm9yZGVyLWJvdHRvbTogMTJweCBzb2xpZCAjNmY2ZjZmOwogIGJvcmRlci1yaWdodDogMTJweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogMTJweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3R0b206IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogLTNweDsKfQoudzJ1aS1vdmVybGF5LnRvcC1hcnJvdzphZnRlciB7CiAgYm9yZGVyLWJvdHRvbTogOHB4IHNvbGlkIGJsYWNrOwogIGJvcmRlci1ib3R0b20tY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyLXJpZ2h0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3R0b206IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogLTNweDsKfQoudzJ1aS1vdmVybGF5LmJvdHRvbS1hcnJvdzpiZWZvcmUgewogIGJvcmRlci10b3A6IDEycHggc29saWQgIzZmNmY2ZjsKICBib3JkZXItcmlnaHQ6IDEycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6IDEycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgdG9wOiAxMDAlOwogIG1hcmdpbi10b3A6IC0zcHg7Cn0KLncydWktb3ZlcmxheS5ib3R0b20tYXJyb3c6YWZ0ZXIgewogIGJvcmRlci10b3A6IDhweCBzb2xpZCBibGFjazsKICBib3JkZXItdG9wLWNvbG9yOiBpbmhlcml0OwogIGJvcmRlci1yaWdodDogOHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgdG9wOiAxMDAlOwogIG1hcmdpbi10b3A6IC0zcHg7Cn0KLncydWktb3ZlcmxheS53MnVpLW92ZXJsYXktcG9wdXAgewogIHotaW5kZXg6IDE3MDA7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzIHsKICBib3JkZXItdG9wOiAzcHggc29saWQgIzc3NyAhaW1wb3J0YW50Owp9Ci53MnVpLW92ZXJsYXkgLm5vLWNvbG9yIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZWVlOwogIGJhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FNQUFBQW9MUTlUQUFBQUJsQk1WRVgvLy8vL1RnQ0ZvSVVZQUFBQUdVbEVRVlI0MnVYSElRRUFBQUNEc05PL05KNEtuOXVDOHdzSmtBQVJVclhBandBQUFBQkpSVTVFcmtKZ2dnPT0nKTsKICBiYWNrZ3JvdW5kLXNpemU6IDE1cHggMTVweDsKfQoudzJ1aS10YWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxMzAwOwogIG9wYWNpdHk6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7CiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7CiAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOwp9Ci53MnVpLXRhZyAudzJ1aS10YWctYm9keSB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBwYWRkaW5nOiA2cHggMTBweDsKICBtYXJnaW4tbGVmdDogMTBweDsKICBtYXJnaW4tdG9wOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MCwgNjAsIDYwLCAwLjkpOwogIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTFweDsKICBmb250LWZhbWlseTogdmVyZGFuYTsKICB0ZXh0LXNoYWRvdzogMXB4IDFweCAzcHggIzAwMDsKICBsaW5lLWhlaWdodDogMS40OwogIGxldHRlci1zcGFjaW5nOiAwLjFweDsKfQoudzJ1aS10YWcgLncydWktdGFnLWJvZHkudzJ1aS10YWctcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci10b3A6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCByZ2JhKDYwLCA2MCwgNjAsIDAuOSk7CiAgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogIG1hcmdpbjogMHB4IDAgMCAtMTZweDsKfQoudzJ1aS10YWcgLncydWktdGFnLWJvZHkudzJ1aS10YWctbGVmdDphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNXB4OwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItdG9wOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2JhKDYwLCA2MCwgNjAsIDAuOSk7CiAgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogIG1hcmdpbjogMHB4IDAgMCAxMHB4Owp9Ci53MnVpLXRhZyAudzJ1aS10YWctYm9keS53MnVpLXRhZy1ib3R0b206YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiA2cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkIHJnYmEoNjAsIDYwLCA2MCwgMC45KTsKICBtYXJnaW46IC0xMnB4IDAgMCAycHg7Cn0KLncydWktdGFnIC53MnVpLXRhZy1ib2R5LncydWktdGFnLXRvcDphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDEycHg7CiAgYm90dG9tOiAtNnB4OwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3A6IDZweCBzb2xpZCByZ2JhKDYwLCA2MCwgNjAsIDAuOSk7Cn0KLncydWktdGFnLncydWktdGFnLXBvcHVwIHsKICB6LWluZGV4OiAxNzAwOwp9Ci8qCiogICAgRHJvcCBkb3duIG1lbnUKKi8KLncydWktbWVudSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGJvdHRvbTogMHB4Owp9Ci53MnVpLW1lbnUgdGFibGUgewogIGZvbnQtZmFtaWx5OiB2ZXJkYW5hOwogIGZvbnQtc2l6ZTogMTFweDsKICB3aWR0aDogMTAwJTsKICBjb2xvcjogYmxhY2s7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgcGFkZGluZzogNXB4IDBweDsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLncydWktbWVudSB0YWJsZSB0ZCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoudzJ1aS1tZW51IHRhYmxlLnN1Yi1tZW51IHsKICB0b3A6IDA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmRmZjsKICBib3JkZXItdG9wOiAxcHggZG90dGVkICNjY2NjY2M7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjY2NjY2NjOwp9Ci53MnVpLW1lbnUgdGFibGUuc3ViLW1lbnUgdGQ6Zmlyc3QtY2hpbGQgewogIHBhZGRpbmctbGVmdDogMTBweDsKfQoudzJ1aS1tZW51IHRhYmxlLnN1Yi1tZW51IHRkLm1lbnUtZGl2aWRlciB7CiAgcGFkZGluZy1sZWZ0OiAxNnB4Owp9Ci53MnVpLW1lbnUgdGFibGUgLncydWktaXRlbS1ldmVuIHsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9Ci53MnVpLW1lbnUgdGFibGUgLncydWktaXRlbS1vZGQgewogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNGM0Y2RkE7Cn0KLncydWktbWVudSB0YWJsZSAudzJ1aS1pdGVtLWdyb3VwIHsKICBjb2xvcjogIzQ0NDsKICBmb250LXdlaWdodDogYm9sZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUNFREYwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDNEMkQ0Owp9Ci53MnVpLW1lbnUgdGFibGUgdGQubWVudS1pY29uIHsKICBwYWRkaW5nOiAzcHggMHB4IDRweCA2cHg7CiAgd2lkdGg6IDIwcHg7Cn0KLncydWktbWVudSB0YWJsZSB0ZC5tZW51LWljb24gPiBzcGFuIHsKICBoZWlnaHQ6IDIwcHg7CiAgd2lkdGg6IDE4cHg7Cn0KLncydWktbWVudSB0YWJsZSB0ZC5tZW51LWRpdmlkZXIgewogIHBhZGRpbmc6IDZweDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoudzJ1aS1tZW51IHRhYmxlIHRkLm1lbnUtZGl2aWRlciBkaXYubGluZSB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHNpbHZlcjsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgaGVpZ2h0OiAwcHg7CiAgcGFkZGluZzogMHB4IDI1cHggMCAwcHg7Cn0KLncydWktbWVudSB0YWJsZSB0ZC5tZW51LWRpdmlkZXIuZGl2aWRlci10ZXh0IHsKICBwYWRkaW5nOiAxMnB4IDZweDsKfQoudzJ1aS1tZW51IHRhYmxlIHRkLm1lbnUtZGl2aWRlci5kaXZpZGVyLXRleHQgZGl2LnRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tdG9wOiAtNnB4OwogIG1hcmdpbi1sZWZ0OiA0NiU7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgcGFkZGluZzogMHB4IDNweDsKICBjb2xvcjogZGFya2dyZXk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwp9Ci53MnVpLW1lbnUgdGFibGUgdGQubWVudS10ZXh0IHsKICBwYWRkaW5nOiA4cHggMTBweCA4cHggNXB4OwogIHdpZHRoOiBhdXRvOwp9Ci53MnVpLW1lbnUgdGFibGUgdGQubWVudS1jb3VudCB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgcGFkZGluZy1yaWdodDogMXB4Owp9Ci53MnVpLW1lbnUgdGFibGUgdGQubWVudS1jb3VudCA+IHNwYW4gewogIGJvcmRlcjogMXB4IHNvbGlkICNGNkZDRjQ7CiAgYm9yZGVyLXJhZGl1czogMjBweDsKICB3aWR0aDogYXV0bzsKICBoZWlnaHQ6IDE4cHg7CiAgcGFkZGluZzogMnB4IDdweDsKICBtYXJnaW46IDNweCA1cHggMHB4IDVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjJGOEYwOwogIGNvbG9yOiAjNjY2OwogIGJveC1zaGFkb3c6IDBweCAwcHggMnB4ICM0NzQ1NDU7CiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMHB4ICNGRkY7Cn0KLncydWktbWVudSB0YWJsZSB0ZC5tZW51LWNvdW50ID4gc3Bhbi5ob3RrZXkgewogIGJvcmRlcjogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICBjb2xvcjogIzg4ODsKICBib3gtc2hhZG93OiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwp9Ci53MnVpLW1lbnUgdGFibGUgdGQubWVudS1jb3VudCA+IHNwYW4ucmVtb3ZlIHsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgcGFkZGluZzogMnB4IDVweDsKfQoudzJ1aS1tZW51IHRhYmxlIHRkLm1lbnUtY291bnQgPiBzcGFuLnJlbW92ZTpob3ZlciB7CiAgY29sb3I6ICM5ODI1MjU7CiAgYm9yZGVyLWNvbG9yOiAjZDI4ZDViOwogIGJhY2tncm91bmQtY29sb3I6ICNmOWU3ZTc7Cn0KLncydWktbWVudSB0YWJsZSB0ci5leHBhbmRlZCB0ZC5tZW51LWNvdW50ID4gc3BhbiwKLncydWktbWVudSB0YWJsZSB0ci5jb2xsYXBzZWQgdGQubWVudS1jb3VudCA+IHNwYW4gewogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogbm9uZTsKICBwYWRkaW5nOiAycHggNXB4OwogIGJvcmRlci1yYWRpdXM6IDBweDsKfQoudzJ1aS1tZW51IHRhYmxlIHRyLmV4cGFuZGVkIHRkLm1lbnUtY291bnQgPiBzcGFuOmFmdGVyLAoudzJ1aS1tZW51IHRhYmxlIHRyLmNvbGxhcHNlZCB0ZC5tZW51LWNvdW50ID4gc3BhbjphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzgwODA4MDsKICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHRyYW5zZm9ybTogcm90YXRlWigtOTBkZWcpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIG1hcmdpbi1sZWZ0OiAtMnB4Owp9Ci53MnVpLW1lbnUgdGFibGUgdHIuZXhwYW5kZWQgdGQubWVudS1jb3VudCA+IHNwYW46aG92ZXIsCi53MnVpLW1lbnUgdGFibGUgdHIuY29sbGFwc2VkIHRkLm1lbnUtY291bnQgPiBzcGFuOmhvdmVyIHsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci53MnVpLW1lbnUgdGFibGUgdHIuY29sbGFwc2VkIHRkLm1lbnUtY291bnQgc3BhbjphZnRlciB7CiAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTsKfQoudzJ1aS1tZW51IHRhYmxlIHRyOmhvdmVyIHsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTZGMEZGOwp9Ci53MnVpLW1lbnUgdGFibGUgdHIudzJ1aS1zZWxlY3RlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0I2RDVGQjsKfQoudzJ1aS1tZW51IHRhYmxlIHRyLncydWktc2VsZWN0ZWQgdGQgewogIGNvbG9yOiBpbmhlcml0Owp9Ci53MnVpLW1lbnUgdGFibGUgdHIudzJ1aS1kaXNhYmxlZCB7CiAgb3BhY2l0eTogMC40OwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLncydWktbWVudSB0YWJsZSAudzJ1aS1pY29uIHsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6ICM4RDk5QTc7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctdG9wOiA0cHg7Cn0KLncydWktbWVudS1pbmxpbmUgewogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Ci53MnVpLW1lbnUtaW5saW5lIC53MnVpLW1lbnUgewogIHBvc2l0aW9uOiBzdGF0aWM7Cn0KLncydWktbWVudS1pbmxpbmUgLncydWktbWVudSA+IHRhYmxlIHsKICBwYWRkaW5nOiAwcHg7Cn0KLncydWktbWVudS1pbmxpbmUgLncydWktbWVudSB0YWJsZSB0ZC5tZW51LWljb24sCi53MnVpLW1lbnUtaW5saW5lIC53MnVpLW1lbnUgdGFibGUgdGQubWVudS10ZXh0IHsKICBwYWRkaW5nOiAxcHggMXB4IDFweCA1cHg7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAtLS0tIENvbW1vbiBDbGFzc2VzIC0tLS0KKi8KLncydWktbWFya2VyIHsKICBjb2xvcjogIzQ0NDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1MiwgMjQ0LCAxNjEsIDAuNDgpOwp9Ci53MnVpLXNwaW5uZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoZ0FDQUFLSUFBUC8vLzkzZDNidTd1NW1abVFBQS93QUFBQUFBQUFBQUFDSC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFGQlFBRUFDd0NBQUlBZkFCOEFBQUQvMGk2M1A0d3lnWXFtRGpyemJ0Zmx2V05aR2xpWVhpdWJLdWxvaXZQTGx6UmVEN2FsKzcvRWg1d1NGUUlpOGhIWUJrd0hVbUQ2Q0Q1WVRKTHo0OVVTdVZZcmFSc1o3dnRhcjdYblExS2pwb3o2TFJIdkdsejM1TzRuRVBQMk85NEVucE5jMnNlZjFPQkdJT0ZNSWQvaW5CNmpTbVBkcEdTY1IxOUVvaVltWm9ibkJDSWlaOTVrNktHR3A2bmk0d3ZxeGlscnFCZnFvNnNrTFcyWUJtakRhMjhyNkVvc3AyN3c4Um92OGVreWNxb3FVSE9EclRSdlhzUXdBckMyTkxGMjlVTTE5L0x0eE81eUpkNEF1NENLN0RVTnhQZWJHNGU3KzhuOGl2MldtUTY2QnRvWXBvL2R2ZmFjQmpJa0lUQkU5REdsTXZBc09JSVpqSVVBaXhsaXY5aXhZWlZ0TFVvczVHandJOGd6YzNpQ0dnaHlwUXFyYkZzbWU4bHdaZ0xadEljWWZObVRKMzRXUFRVWnc1b1J4ZEQ5dzB6NmlPcE8xNU1nVGgxQlRUSlVLb3MzOWpFK28vS1M2NElGVm1zRmZZVDBhVTdjYXBkeTdhdDI3ZHc0OHFkUzdldTNidDQ4MEkwMnZVYlgyRi9KeFlOREltdzRHaUdFL1A5cWJoeFZwV09JL2VGS3RsTlpiV1h1emxtRzFtdjU4K2dRNHNlVGJxMDZkT29VNnZHUVpKeTBGTmxNY1YrY3poUTdTUW1ZZDhlTWhQczVCeFZkZmNHRXRWM2J1REJYUStmVVJ4eDhvTTZNVDlQK0ZoNmRPckgyemF2YzEzdTlKWFZKYjUyMFZwOGR2Qzc2d1hNdU41U2VwbS8xV3RrRVpIRGVmbnpSOVF2c2Q5Ky93aTgrZW4zWDBudFlWY1NkQUUrVU40enM3bG4yNENhTGFnZ2hJeEJhR0Y4a0ZHb0lZVitZYmdoaDg0MUdJeUk1SUNJRm9rbEpzaWdpaG1pbUpPTEViTFlJWXd4U2dpZ2laKzhsMktCK01sNG9vL3c4ZGlqamNyb3VDT1JLd0lwbkpJak1ua2trc2FsTmVSNGZ1QkltNVVFWUltaElsc0dDZVdOTkpwaHBKZFNUbGttbDFqV2VPWTZUbmFScHBwVWN0Y21GVzltR1NhWmNlWW9wSDl6a2pualVlNTlpUjVwZGFwV2FHcUhvcGJvYVl1YTFxaWplNjdHSjZDdUpBQUFJZmtFQlFVQUJBQXNDZ0FDQUZjQU1BQUFBLzlJdXR6K01MNUFnN3c0NnowcjVXQW9TcDQzbmloWFZtbnJkdXNyditzMzMyZHQ0VHlvOXlPQlVKRDZvUUJJUUdzNFJCbEh5U1NLeWN6VlR0SG9pZG9jUFVOWmFaQXI5RjVGWWJHSTNQV2RRV24xbWkzNmJ1TEtGSnZvanNIakxuc2hkaGw0TDRJcWJ4cUdoNGdhaEJKNGVZMWtpWDZMZ0RON2ZCbVFFSkk0amhpZUQ0eWhkSjJLa1prOG9pU3FFYWF0cUJla0RMS3p0QkcyQ3FCQUNxNHdKUmk0UFp1MXNBMit2OEM2RUpleHJCQUQxQU9CenNMRTBnL1YxVXZZUjlzTjNlUjZsVExpNCtUbFkxd3o2UXpyOHUxdDZGa1k4dk56WlR4YUdmbjZtQWtFR0ZEZ0w0THJEREpEeUU0aEVJYmRIQjZFU0UxaUQ0b1ZMZkxBcVBFVElzT09Ed21DREpsdjVNU0dKa2xhUzZraEFRQWgrUVFGQlFBRUFDd2ZBQUlBVndBd0FBQUQvMGk2M1A1TFNBR3J2VGpyTnVmK1lLaDFuV2llSXVtaGJGdXBraXZQQkV6UitHbm5mTGozb29Gd3dQcWRBc2hBYXpoRUdVWEpKSXJKMU1HT1VhbUoyalE5UVZsdGtDdjBYcUZoNUluY0JYMDFhZkdZbkRxRDQwdTJ6NzZKSy9OMGJueHdlQzVzUkI5dkYzNHpoNGdqZzR1TWpYb2JpaFdUbEpVWmx3OStmelNIbHBHWWhUbWluS1NlcHFlYkY1ME5tVHlvcjZxeHJMTzBMN1lMbjBBTHVoQ3dDckpBanJVcWtyakdyc0lrR01XL0JNRVBKY3BoTGdEYUFCalVLTkVoMjl2ZGdUTExJT0xwRjgwczV4cnA4T1JWT05naThQY1o4emxSSnZmNDB0TDgvUVBZUStCQWdqZ014a1BJUTZFNmhna2Rqb05JUStKRWlqTXNhc05ZMFJRaXg0Z0tQK1lJS1hLa3dKSUZGNkpNdWRGRUFnQWgrUVFGQlFBRUFDdzhBQUlBUWdCQ0FBQUQva2cwUFBvd3lrbXJuYTNkelh2Tm1TZU9GcWlSYUdveWFUdXVqaXR2OEd4LzY2MUh0U3Y4Z3Qyamx3SUNoWXRjMFhqY0VVbk1wdTRwaWtwdjFJNzFhc3R5dGtHaDl3SkdKazNRclhsY0thK1ZXamVTUFpIUDRSdHcrSTJPVzgxRGVCWjJmQ0IrVVlDQmZXUnFpUXAwQ25xT2o0SjFqWk9Ra3BPVUlZeC9tNG94ZzVjdUFhWUJPNFFvcDZjNnBLdXNyRGV2SXJHMnJrd3B0cnVwWEI2N3ZLQWJ3TUhDRmNURnhoTEl0OG9VekxIT0U5Q3kwaEhVcmRiWDJLamFFTnpleTlEaDA4amt6OFRueDgzcTY2YnQ4UEh5OC9UMTl2ZjQrZnI2QVAzKy93QURBalFtc0tEQmY2QU9LalM0YWFIRGdaTWVTZ1RRY0tMRGhCWVBFc3dvQTFCQkFnQWgrUVFGQlFBRUFDeE9BQW9BTUFCWEFBQUQ3RWk2dlBPanlVa3JoZERxZlhIbTRPWjlZU21OcEttaXFWcXlrYnV5c2d2WDVvMkhjTHh6dXA4b0tMUVFpeDBVY3FoY1ZvNU9SaSthSEZFbjAyc0RldVdxQkdDQmtiWUxoNS9ObW5sZHhhalg3TGJQQksrUEg3SzZuYXJmTy90K1NJQndmSU5tVVlhSGY0bGdoWXlPaGxxSldncURsQXVBbHd5Qm1wVm5uYUNob3FPa3BhYW5xS21xS2dHdHJxK3dzYkExc3JXMnJ5NjN1cmFzdTc2NEpyL0NBYjNEdTduR3Q3VEpzcXZPejlEUjB0UFUxVElBMkFDbDJkeWkzTi9hbmVEZjR1UGtsT2JqNk9uZ1d1enQ3dS9kOGZMWTlQWHI5ZUZYK3Z2OCtQbllsVXNYaXFDM2M2UG1VVWdBQUNINUJBVUZBQVFBTEU0QUh3QXdBRmNBQUFQcFNMcmMvbTdJQWF1OWJVN01POUdnSjBaZ09JNWxlb3FwdW1LdCsxYXhQSk8xZHRPNXZ1TTl5aThUbEF5QnZTTXhxRVMybW84Y0ZGS2I4a3pXcXpETDdYcS80TEI0VEM2YnoxeUJlczF1dTl1enQzek9YdEh2OHhOK0R4L3gvd0o2Z0h0MmczUnhobTlvaTR5TmpvK1FrWktUQ2dHV0FXYVhtbU9hblpoZ25wMmdvYUpkcEtHbXA1NWNxcXVzclp1dnNKYXlzNm16bjFtNHVSQUF2Z0F2dUJXL3Y4R3d2Y1RGeHFmSXljQTN6QS9PeXRDbDB0UFBPN0hEMkdMWXZ0N2RZZC9aWDk5ajUrUGk2dFBoNitidlh1VHV6dWp4WGVuczlmcjdZUG4rN2VnUkk5UFBIcmdwQ1FBQUlma0VCUVVBQkFBc1BBQThBRUlBUWdBQUEvbEl1dHorVUkxSnE3MDI2aDJ4L3hVbmNtRDVqZWhqcmxucVNtejh2ckU4dTdWNXovbTUvOENnY0Vnc0dvL0lwSExKYkRxZjBLaDBTaEJZQmRUWGRac2RiYi9ZcmdiOEZVZklZTE1EVFZZejJHMTNGVjZXeitsWCt4MGZkdlB6ZG45V2VvSkdBWWNCTjM5RWlJaUtlRU9OalR0MGtaS0hRR3lXbDRtWmRSRUFvUUFjbkpoQlhCcWlvcVNsVDZxcUc2V21USytyc2ExTnRhR3N1RXU2bzd5WHVib2pzclRFSXNhK3lNbTlTTDhvc3AzUHpNMmNTdERSeWtmWjJ0ZlV0Uy9iUmQzZXd0elY1cExvNGVMalF1VXA3MEh4OHQ5RTllcU81T2t1NS96dGRreGk5MHFQZzN4MkVNcFI2SWFoR29jUEN4cDhBR3RpZ3dRQUlma0VCUVVBQkFBc0h3Qk9BRmNBTUFBQUEvOUl1dHorTU1vMzZwZzQ2ODJKL1Ywb2pzMW5YbVNxU3FlNXZyRFh1bkVkenEydGEzaSsvNURlQ1VoMENHbkY1QkdVTEM0dFRlVVRGUVZPTllBczRDZm9Da1pQakZhcjgzckJ4OGw0WERPYlNVTDFPdHQyZDFVNHlad2NzNS94U0JCN2RCTUJoZ0VZZm5jclRCR0RXNFdIaG9tS1VZK1FFWktTRTRxTFJZOFltb2VVZmttWG9hS0luSjJmZ3htcHFxdWxRS0N2cVJxc1A3V29vcmlWTzd1OG1odTVOYWNhc01URk1NSENtOHF6ek0yUnZkRFJLOVBVd3h6TEtkbmF6OXkvS3Q4U3lSM2RJdVhtdHlIcEhNY2Q1K2p2V0s0aTgvVFhIZmY0N1NMalF2UUxrVStmRzI5clVoUTA2SWtFRzRYL1JyeXA0bXdVeFNnTEwvN0lxRkVUQjhlT05UNkNoQ0Z5NUl0cUpvbUVTNmtnQVFBaCtRUUZCUUFFQUN3S0FFNEFWd0F3QUFBRC8waTYzQTRRdUVtcnZUaTN5TFgvNE1lTlVtaWVJVG1pYkV1cHBDdTNzRHJmWUczalBLYkh2ZURrdHhJYUY4VE9jWm1NTEk5TnlCUGFuRktKcDRBMklCeDRCNWxrZHF2dGZiOCtIWXBNeHAzUGwxcUx2WFcvdldrbGkxNi8zZEZ4VGk1OFpSY0Nod0lZZjNoV0JJUmNob2lIaW90V2o1QVZrcElYaTR4TGp4aWFpSlIvVDVlaG9vbWNuWitFR2FtcXE2VkdvSytwR3F4Q3RhaWl1SlZCdTd5YUhyazRweHF3eE1VendjS2J5clBNelpHOTBOR0RyaC9KSDh0NzJkcTNJTjFqZkNIYjNML2U1ZWJoNHVrbXh5RG42TzhnMDhqdDd0ZjI2eWJ6K20vVzlHTlh6VVE5Zm0xUS9BUG9TV0FoaGZrTUFtcEViUmhGS3dzdkNzbW9zUklIeDQ0NFBvS2NJWEtraklJbWpUemprUUFBSWZrRUJRVUFCQUFzQWdBOEFFSUFRZ0FBQS9WSUJOeis4S2xKcTcyWXhzMWQvdURWalZ4b2dtUXFuYXlsdmtBclQ3QTYzL1Y0Ny9tMi84Q2djRWdzR28vSXBITEpiRHFmMEtoMFNqMEZyb0dxRE12Vm1yamdyRGNUQm84djVmQ1praTZ2Q1czM09xNCswODMyTy9hdDMrZjdmSUNCZHpzQ2hnSkdlb1dIaGtWMFA0eU1SRzFCa1llT2VFQ1dsNWhYUTV1TklBT2pBMUtnaUtLa28xQ25xQm1xcWsrbkliQ2tUcTIwdGFWTnM3bTF2S0FudXJ0THZiNndUTWJIc1VxNHdyckZ3U3pEemNyTHRrblcxNnRJMnR2RVJ0NnB2MGZpNDhqaDVoL1U2WnM3N0VYU04vQkU4alAwOVpGQStQbWhQL3h2SmdBTVNHQmdRSU52RUs1UmVJWmhRM1FFTVRCTEFBQWgrUVFGQlFBRUFDd0NBQjhBTUFCWEFBQUQ1MGk2REE0c3lrbHJlODdxVGJIbjRPYU5ZU21OcUttaXFWcXlyY3ZCc2F6UnBIM2ptQzd5RDk4T0NCRjJpRVhqQkttc0FKc1dIRFFLbXc1NzFsOG15KzE2ditDd2VFd3VtOCtoZ0hyTmJydmJ0cmQ4em5iUjczTVZmZzgzOGY4QmVvQjdkb04wY1ladmFJdU1qWTZQa0pHU2syZ0NsZ0ptbDVwam1wMllZSjZkWDZHZVhhU2hXYWVvVnFxbFU2MmlyN0NYcWJPV3JMYWZzck5jdGpJRHdBTVd2QzdCd1JXdE5zYkdGS2MreThmTnNUclEwZEszUXRYQVl0ckNZZDNlWU4zYzQ5L2E1TlZqNWVMbjV1M3M2ZTd4OE5EbzlmYkwrTXp5OS9UNSt0dlV6ZE4zWnArR0JBQWgrUVFKQlFBRUFDd0NBQUlBZkFCOEFBQUQvMGk2M1A0d3lrbXJ2VGpyemJ2L1lDaU9aR21lYUtxdWJPdStjQ3pQZEFyY1FLMlRPTDcvbmw0UFNNd0lmY1VrNVloVU9oM001bk5LaU9hb1dDdVdxdDFPdTE2bDlScE9nc3ZFTWRvY1hiT1o3blE3RGp6VGFlcTd6cTZQNWZzemZJQVNBWVVCSVlLRERvYUdJSW1LQzR5U0gzT1FFSktZSFpXV2k1aVpHMGVjRVo2ZUhFT2lvNlNmcUNhcXBheXRycE93SkxLenRDTzJqTGkxdW9XOElyNi93Q0hDeE1HMng3bXV5c3VremIyMzBNNkgwOWJYMk5uYTI5emQzdC9nNGNBQzVPWG01K2puM09uczdlYmE3dkh0MmZMMTZ0ajIrUUwwK3ZYdy9lN1dBVXducnFEQmd3Z1RLbHpJc0tIRGgyZ0dTQndBY2NIRWl4QXZhcVRZY0ZDalJvWWVOeW9NNlJFaHlaSUhUNG8wcVBJank1WVRUY0tVbUhJbXg1Y3dFODVjbUpQblNZY2tLNjZzU0FBajBhTklreXBkeXJTcDA2ZFFvMHFkU3JXcTFhdFlzMnJkeXJXcjE2OWd3eFpKQUFBNyk7Cn0KLyogY29tbW9uIGljb25zICovCi53MnVpLWljb24gewogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgaGVpZ2h0OiAxNnB4OwogIHdpZHRoOiAxNnB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgbWFyZ2luOiAycHggMnB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoudzJ1aS1pY29uLmljb24tc2VhcmNoLAoudzJ1aS1pY29uLmljb24tc2VhcmNoLWRvd24gewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNZQUFBQWdDQVlBQUFCK1pBcXpBQUFDdUVsRVFWUll3OVdYU1doVFFSakhSMFVLTHFoRmFWME9VaWg2OEdBT1dqeUpLeXBDcEFvVjhhSWlpb0lJQ2lLaUIxR010RTNNWW1yeTJtb1hEejFVRHg3c1VYSEJoUXBTYVJWeHJZcFdjTU85YXZ4LzhBSmgvQ2J6bkhreGRlQjNDZC84NTg5a3Z1VUprV2NkakNUSGdoVWdBaTZESitBVmVBcXVnU1FJZ2duaVh5d2NOQkpzQjcwZzQ0RUhZQmNZWFVoVE04RUZqNFprYm9LcVFwaXFBdjJHcHJLOG83L2Y3NXQ2cGpuME0zZ05QbXJpM3Z0eWN4QVpBNjRxRHZrSjJrRU5xQVFUUVFXb0JnNzRxdGgzQjR5M05iWkRJWDRmek5mc25RdHVLL1lmc2pGVkNoNHBNcTNDbzBZNXVNVm9VR2tweThhRlQ1eGFlU3pWRW80NWJYZEJ0NExlYUxxMWswUlhNWUpmZERmRm1BdUFENHpXbHR5NFVOeVpFa20xOU1VYjJ6TXc4U2ZwMXUrSVdTcmNJaW1MblRHOC9TaWpkVTZPTzVwb0RFU2R0Z0haVkJ6VUhtL2FtaFc3em9pdE1UUzJtTkhxQVNQazJGRENDY0xNWUs2cCtvYm11bHl4ZmlZTEE0YkdLRnZmU25yVXZrcTUrTHBrOHo0eVJIOHIzbC9YNFdpcUpGZnNwU1EwQ0dZWkdwc01ua3Q2TCtoMzFaNzZocE1kZU93UFE3SDBORm5zc1NUMEM4d3hORGFES2I2a1AwNjE1MGdzSGFoTk5sVnpZaGVaZDdISjBCaVg0VlJHaHBtSWhSaXhLeVppbE0yTTFtblRBcnRJVWJVMy9xVk8wSDBHdm1RNENZNEMzWW9wWVlsSGpYbGdnTkc0UjMzWXBpMnRWdHdhUGVUZE5Na3E5cFZRWlFkdkZQczMyemJ4NGFBanp4aERSZklBV0FlV2c3VmdyenNZNWh0L3pvTkp0dWJLd0EzTElUR2pTS1J5VzNOVHdhVUNtS09TTWQzV0hIMFpKUlFaWmtPUDF6RktaM0NCKys0K2FRNmtFZWtzV0FiMmEyTDdxRHY0OVMxUTZUNzJNT2dFWGE2UkdGaFAzd3BTL0I2Tk9XcFJzMFV4Rmc3ZXFURkhqWDFoc2N4dEF6L3ltRXVJWWkwY3ZnRjhZMHc1Um8zZFozTTFib0prVGFYRVVGbHVnNmZzZHNSUVd6VGowY2V5K04vWGIyc2o1bFRoMk02T0FBQUFBRWxGVGtTdVFtQ0MpIG5vLXJlcGVhdCBjZW50ZXIgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLXNpemU6IDE0cHggMTJweCAhaW1wb3J0YW50OwogIG9wYWNpdHk6IDAuOTsKfQoudzJ1aS1pY29uLmljb24tZm9sZGVyIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFHclNVUkJWRGpMeFpPN2loUkJGSWEvNnUwWlc3R0hCVVYwVVFRVFp6ZDNRZGhNUXhPZndNUlhFQU5CTU5RWDBNekF6RkF3RXpId0FSYk5GRGR3RWQzMU1qM1g3YTZ1T3I5QnR6TmpZaktCSjZuaWNQN3YzS3FjSkZheGhCVnRaVUFLOE9IbGxkMnN0N1hsM0RKUFZPTlArekVVVjRIcUw1VURZSHI1eHZ1UUFqZ2wvUXM3VHp2T09WQWp4amxDK2VQU3dlNkRmYlZlZ0xWdVQ0cjE0ZVRyNnp2QTh4U0FvQkx6eDZwdmo0bCtEWkllenVWa0c5ZlkySDdZUlFJTVpJQnd5Y216SDEvczNGOEFhcGZJUE5GM2tRazcra3c5UFdCeStJWk9kZzVVZzNta0FBVHkvdDB1c292ekdlQ1VXVGpDejBCK1NqMGVrZmR2a1ozYWJCditVNEdhQ3RKMWlFbTZBTlFKNmZFenJHL2VuZ2NLdy93WFF2RUt4U0VLUXhSR0tFN0l6dCtEU2l3QkpNVVNtNzFyZ3VNWWhRS3JCeWdPSVJTdGY0VGlGRlJCdmJSR0tpUUxXUDI5eVJTSEtCVHRmZEJtSHMwQlVwZ3Z0Z0Y0eVJGUitOVUtpMFhaY1lqQ2VDRzJzbWt6TEFIa2JSQm1QMC9VazI2TzVZblVBY3RCcDFHc0FJK1M1blJKSkphbDVLMWFBTXJxMGQ2VG05dUk2emp5Zjc1ZEFlNnR4L1NzV2VELy9vMi9BYjZJSDMvaDI1cE9BQUFBQUVsRlRrU3VRbUNDKSBuby1yZXBlYXQgY2VudGVyICFpbXBvcnRhbnQ7Cn0KLncydWktaWNvbi5pY29uLXBhZ2UgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlOU1VSQlZCZ1pCY0cvcjU1ekdBZmc2LzQrejN2YTAxTkhsWWd6RWZFN01kQ0lHSVNGZ1M0R2s4VmlZeU0yTWRsc2tvNEdTZjhEbzBGTFJDSWtnaGhZSkEzYVZCdEV6M25QODl3ZjExVkp2UERlcGRkMzkwKzhOc281bkVTQlFvcTBwZnZYbTlmeldmMTk0NTNMRjg1dkFTcUpsejc0OHZJbmI1MTdkSXc2RXlZQklJRzQ5dSt4aTkvYzlNZHZSLy85OU1QUFo3KzRjUDRJWmhoVFBid3pUMmQrdkdvYVZSUnAxclJsaVZ2SHErY2Z2TTNURDgyKzdtdW4wby9jZU83TlQrLzQvS09YandaVTFla2swODQwYkFaek1RMm1vb3FoMEE3MmQ1eC82c0I5RDV6WW5mZjNQb1lCb1dCZ0ZLUEtxREtxakNwaktyLy9kY3U5cDQ4OWRyYTg4Y3lkcHMzMEtzd0FDZk5FS2FuU2F4aGxudGpKOE12MTJQYWllK3ZaKzArb2VTd3dRMEl3MXhBUjFDaUZOSmtHTzR3dTNaTVkxQUF6QkkwcVNnbUNOSnNKVUVPdEpTTWFDVEJETHlRMENrbkFHT2d5VHlGRmlMSTJhd016ZEVjU1FnU0FBS1ZVbUFlTmt4dldKV0NHdFZsRG1nWVEwR0Z0Z2c0cE50T3diQmN3UXkvUmlmZS8yeXJSUlZJMHFZQ0VCbHk4WitQNHFNRU15N0phVnc3Mk41NjhlK2l3aHJYb0VDUWtmSDkxa1k3and3WE1zQngxTDkzWnJ1cXJLNnV1aUFJZFNuVElLS1BMUEZjdmF5OHd3L0hoK3VmZXpuVFh1NDl2OTVJTW9RRzM3ODRnWVhkVHF2Um1xbi9XcGEvQURGWDU4TVczTDcxU1ZVOUVUZ0VJUVFRSU9PenViK2ZoSXZ3UFJEZ2VWaldEYWhJQUFBQUFTVVZPUks1Q1lJST0pIG5vLXJlcGVhdCBjZW50ZXIgIWltcG9ydGFudDsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIC0tLS0gTG9ja2luZyBwb3J0aW9uIG9mIHRoZSBzY3JlZW4gKGluIGdyaWQsIGZvcm0sIGxheW91dCkKKi8KLncydWktbG9jayB7CiAgZGlzcGxheTogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogMTQwMDsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIG9wYWNpdHk6IDAuMTU7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTE1KTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwp9Ci53MnVpLWxvY2stbXNnIHsKICBkaXNwbGF5OiBub25lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxNDAwOwogIHRvcDogNDUlOwogIGxlZnQ6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiAyMDBweDsKICBoZWlnaHQ6IDgwcHg7CiAgcGFkZGluZzogMzBweCA4cHg7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBvdmVyZmxvdzogaGlkZGVuOwogIGZvbnQtc2l6ZTogMTNweDsKICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgb3BhY2l0eTogMC44OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTsKICBjb2xvcjogd2hpdGU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBib3JkZXI6IDJweCBzb2xpZCAjNDQ0Owp9Ci53MnVpLWxvY2stbXNnIC53MnVpLXNwaW5uZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMjRweDsKICBoZWlnaHQ6IDI0cHg7CiAgbWFyZ2luOiAtM3B4IDhweCAtN3B4IC0xMHB4Owp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBTY3JvbGwgY29udGV0LCB1c2VkIGluIHRvb2xiYXIgYW5kIHRhYnMgLS0tLQoqLwoudzJ1aS1zY3JvbGwtd3JhcHBlciB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudzJ1aS1zY3JvbGwtbGVmdCwKLncydWktc2Nyb2xsLXJpZ2h0IHsKICB0b3A6IDA7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxMDAlOwogIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwogIHotaW5kZXg6IDEwOwogIGRpc3BsYXk6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci53MnVpLXNjcm9sbC1sZWZ0OmhvdmVyLAoudzJ1aS1zY3JvbGwtcmlnaHQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7Cn0KLncydWktc2Nyb2xsLWxlZnQgewogIGxlZnQ6IDA7CiAgYm94LXNoYWRvdzogMHB4IDBweCA3cHggIzVGNUY1RjsKICBiYWNrZ3JvdW5kOiAjRjdGN0Y3IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FRQUFBRFpjN0ovQUFBQXprbEVRVlI0QWUyVEhSREVNQkNGenkxdWNhdGIzZUoydWhpM3VOVXRibkdyVzl6aTFyT2ROemR2ZGw3bkRwdll0LzkvcjcrLzUxbXlaWmYvelhrRDJpTUhIUlNiMHgzb3Nrd01pZUswNVB3RVhxUDRFeFNMMHdwMFJPYW8yT091TVBPTWRVTDZYVTEvb0dMY0ZXYitOcXlUZDJXL1AvMnFUcjloK25GWGhPa0hYUkhpTnlqcmdwL1UvVitXYVFjYU5ZMTN6WkkwQTFKdmNWcUFuckdEVGR0RHRaVUhqSElKaHh4VkxOMGlxWGdDUDFsLzdoOFU5a2M2YWJ5SjQvZU5XUHBHZEJ2K1hkVUswSzhjbnZjQmx5MnJEcjdDMUhRQUFBQUFTVVZPUks1Q1lJST0nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXNpemU6IDE1cHggMTJweDsKfQoudzJ1aS1zY3JvbGwtcmlnaHQgewogIHJpZ2h0OiAwOwogIGJveC1zaGFkb3c6IDBweCAwcHggN3B4ICM1RjVGNUY7CiAgYmFja2dyb3VuZDogI0Y3RjdGNyB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBUUFBQURaYzdKL0FBQUF6MGxFUVZSNEFlMlVHN1RHTUJDRXIxdmQ0bGEzdU1VdHVsaTN1dFd0Ym5HTFc5emk5bC9iRE16Skc3dTEyY2ZKZkx1bmYxK1VFQzlCdjB2VlF3SjhoalJDYVphZmZsYjFDOVJRZjRPRDBnU0RFK2krUGlKQWFiRmhRYzF5MUFZWXNKR0xZM2xneE0xN3VXUE81NnlQaUZEcVZQV2dSdHBJSFNkMXpQbndrQnNkSTU4T2xOd3g0ZlAyWDBUZ2ZNVE9vSFNkS09Ya3B5TnZFeVFoN3VsKzRzd3hKU1RRdXdORHh6NjhsL3VrVk5idTBOZWVuNVorS3Z6V3hCQXFIZHMzNDl1UEZKL2pWT3JQanhVcSsrT0xmKzIwcTUrbm9YbzBBQUFBQUVsRlRrU3VRbUNDJykgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1zaXplOiAxNXB4IDEzcHg7Cn0KYnV0dG9uLncydWktYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBtYXJnaW46IDBweCA1cHg7CiAgcGFkZGluZzogNnB4IDEycHg7CiAgY29sb3I6ICM2NjY7CiAgZm9udC1zaXplOiAxMnB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNCNkI2QjY7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI0ZGRiAwJSwgI0U3RTdFNyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCgjRkZGIDAlLCAjRTdFN0U3IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoI0ZGRiAwJSwgI0U3RTdFNyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoI0ZGRiAwJSwgI0U3RTdFNyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI0ZGRiAwJSwgI0U3RTdFNyAxMDAlKTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZlN2U3ZTcnLCBlbmRDb2xvcnN0cj0nI2ZmZmZmZmZmJywgR3JhZGllbnRUeXBlPTApOwogIG91dGxpbmU6IG5vbmU7CiAgYm94LXNoYWRvdzogMHB4IDFweCAwcHggd2hpdGU7CiAgY3Vyc29yOiBkZWZhdWx0OwogIG1pbi13aWR0aDogNzVweDsKICBsaW5lLWhlaWdodDogMTEwJTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIC1vLXVzZXItc2VsZWN0OiBub25lOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQpidXR0b24udzJ1aS1idG46aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCAjYmJiOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNGN0Y3RjcgMCUsICNEREREREQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoI0Y3RjdGNyAwJSwgI0RERERERCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCNGN0Y3RjcgMCUsICNEREREREQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNGN0Y3RjcgMCUsICNEREREREQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNGN0Y3RjcgMCUsICNEREREREQgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZGRkZGRkJywgZW5kQ29sb3JzdHI9JyNmZmY3ZjdmNycsIEdyYWRpZW50VHlwZT0wKTsKICBjb2xvcjogIzMzMzsKfQpidXR0b24udzJ1aS1idG46YWN0aXZlLApidXR0b24udzJ1aS1idG4uY2xpY2tlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjY2NjIDAlLCAjY2NjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCNjY2MgMCUsICNjY2MgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgjY2NjIDAlLCAjY2NjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjY2NjIDAlLCAjY2NjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjY2NjIDAlLCAjY2NjIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmNjY2NjYycsIGVuZENvbG9yc3RyPScjZmZjY2NjY2MnLCBHcmFkaWVudFR5cGU9MCk7CiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICNlZWU7Cn0KYnV0dG9uLncydWktYnRuOmRpc2FibGVkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjYmJiICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogI2Y3ZjdmNyAhaW1wb3J0YW50OwogIGNvbG9yOiAjYmRiY2JjICFpbXBvcnRhbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQpidXR0b24udzJ1aS1idG46Zm9jdXM6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBib3JkZXI6IDFweCBkYXNoZWQgI2FhYTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMnB4OwogIGJvdHRvbTogMnB4OwogIGxlZnQ6IDJweDsKICByaWdodDogMnB4OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CmJ1dHRvbi53MnVpLWJ0bjo6LW1vei1mb2N1cy1pbm5lciB7CiAgYm9yZGVyOiAwOwp9CmJ1dHRvbi53MnVpLWJ0bi1ibHVlIHsKICBjb2xvcjogd2hpdGU7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzgwQzBGNyAwJSwgIzI2OURGMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCgjODBDMEY3IDAlLCAjMjY5REYwIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoIzgwQzBGNyAwJSwgIzI2OURGMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoIzgwQzBGNyAwJSwgIzI2OURGMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoIzgwQzBGNyAwJSwgIzI2OURGMCAxMDAlKTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYyNjlkZjAnLCBlbmRDb2xvcnN0cj0nI2ZmODBjMGY3JywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlcjogMXB4IHNvbGlkICM1MzhBQjc7CiAgdGV4dC1zaGFkb3c6IDBweCAwcHggMXB4ICMxMTE7Cn0KYnV0dG9uLncydWktYnRuLWJsdWU6aG92ZXIgewogIGNvbG9yOiB3aGl0ZTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjNzNCNkYwIDAlLCAjMjM5MUREIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCM3M0I2RjAgMCUsICMyMzkxREQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgjNzNCNkYwIDAlLCAjMjM5MUREIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjNzNCNkYwIDAlLCAjMjM5MUREIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjNzNCNkYwIDAlLCAjMjM5MUREIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjIzOTFkZCcsIGVuZENvbG9yc3RyPScjZmY3M2I2ZjAnLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyOiAxcHggc29saWQgIzQ5N0JBMzsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxcHggIzExMTsKfQpidXR0b24udzJ1aS1idG4tYmx1ZTphY3RpdmUsCmJ1dHRvbi53MnVpLWJ0bi1ibHVlLmNsaWNrZWQgewogIGNvbG9yOiB3aGl0ZTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjMUU4M0M5IDAlLCAjMUU4M0M5IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCMxRTgzQzkgMCUsICMxRTgzQzkgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgjMUU4M0M5IDAlLCAjMUU4M0M5IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjMUU4M0M5IDAlLCAjMUU4M0M5IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjMUU4M0M5IDAlLCAjMUU4M0M5IDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjFlODNjOScsIGVuZENvbG9yc3RyPScjZmYxZTgzYzknLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyOiAxcHggc29saWQgIzEyNjhBNjsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxcHggIzExMTsKfQpidXR0b24udzJ1aS1idG4tYmx1ZTpmb2N1czpiZWZvcmUgewogIGJvcmRlcjogMXB4IGRhc2hlZCAjZThlOGU4Owp9CmJ1dHRvbi53MnVpLWJ0bi1ncmVlbiB7CiAgY29sb3I6IHdoaXRlOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCM4MUNGODEgMCUsICM1MkE0NTIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoIzgxQ0Y4MSAwJSwgIzUyQTQ1MiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCM4MUNGODEgMCUsICM1MkE0NTIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCM4MUNGODEgMCUsICM1MkE0NTIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCM4MUNGODEgMCUsICM1MkE0NTIgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNTJhNDUyJywgZW5kQ29sb3JzdHI9JyNmZjgxY2Y4MScsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXI6IDFweCBzb2xpZCAjNDc5MjQ3OwogIHRleHQtc2hhZG93OiAwcHggMHB4IDFweCAjMTExOwp9CmJ1dHRvbi53MnVpLWJ0bi1ncmVlbjpob3ZlciB7CiAgY29sb3I6IHdoaXRlOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCM2QUJFNjggMCUsICMzRjhGM0QgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoIzZBQkU2OCAwJSwgIzNGOEYzRCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCM2QUJFNjggMCUsICMzRjhGM0QgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCM2QUJFNjggMCUsICMzRjhGM0QgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCM2QUJFNjggMCUsICMzRjhGM0QgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmM2Y4ZjNkJywgZW5kQ29sb3JzdHI9JyNmZjZhYmU2OCcsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXI6IDFweCBzb2xpZCAjNDc5MjQ3OwogIHRleHQtc2hhZG93OiAwcHggMHB4IDFweCAjMTExOwp9CmJ1dHRvbi53MnVpLWJ0bi1ncmVlbjphY3RpdmUsCmJ1dHRvbi53MnVpLWJ0bi1ncmVlbi5jbGlja2VkIHsKICBjb2xvcjogd2hpdGU7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzM3N0QzNiAwJSwgIzM3N0QzNiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCgjMzc3RDM2IDAlLCAjMzc3RDM2IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoIzM3N0QzNiAwJSwgIzM3N0QzNiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoIzM3N0QzNiAwJSwgIzM3N0QzNiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoIzM3N0QzNiAwJSwgIzM3N0QzNiAxMDAlKTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYzNzdkMzYnLCBlbmRDb2xvcnN0cj0nI2ZmMzc3ZDM2JywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlcjogMXB4IHNvbGlkICM1NTUgIWltcG9ydGFudDsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxcHggIzExMTsKfQpidXR0b24udzJ1aS1idG4tZ3JlZW46Zm9jdXM6YmVmb3JlIHsKICBib3JkZXI6IDFweCBkYXNoZWQgI2U4ZThlODsKfQpidXR0b24udzJ1aS1idG4tb3JhbmdlIHsKICBjb2xvcjogd2hpdGU7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI0ZDQzI3MiAwJSwgI0ZCODgyMiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCgjRkNDMjcyIDAlLCAjRkI4ODIyIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoI0ZDQzI3MiAwJSwgI0ZCODgyMiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoI0ZDQzI3MiAwJSwgI0ZCODgyMiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI0ZDQzI3MiAwJSwgI0ZCODgyMiAxMDAlKTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmYjg4MjInLCBlbmRDb2xvcnN0cj0nI2ZmZmNjMjcyJywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlcjogMXB4IHNvbGlkICNCNjhCNEM7CiAgdGV4dC1zaGFkb3c6IDBweCAwcHggMXB4ICMxMTE7Cn0KYnV0dG9uLncydWktYnRuLW9yYW5nZTpob3ZlciB7CiAgY29sb3I6IHdoaXRlOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNGNEFENTkgMCUsICNGMTczMUYgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoI0Y0QUQ1OSAwJSwgI0YxNzMxRiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCNGNEFENTkgMCUsICNGMTczMUYgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNGNEFENTkgMCUsICNGMTczMUYgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNGNEFENTkgMCUsICNGMTczMUYgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZjE3MzFmJywgZW5kQ29sb3JzdHI9JyNmZmY0YWQ1OScsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXI6IDFweCBzb2xpZCAjQjY4QjRDOwogIHRleHQtc2hhZG93OiAwcHggMHB4IDFweCAjMTExOwp9CmJ1dHRvbi53MnVpLWJ0bi1vcmFuZ2U6YWN0aXZlLApidXR0b24udzJ1aS1idG4tb3JhbmdlLmNsaWNrZWQgewogIGNvbG9yOiB3aGl0ZTsKICBib3JkZXI6IDFweCBzb2xpZCAjNjY2OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNCOTg3NDcgMCUsICNCOTg3NDcgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoI0I5ODc0NyAwJSwgI0I5ODc0NyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCNCOTg3NDcgMCUsICNCOTg3NDcgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNCOTg3NDcgMCUsICNCOTg3NDcgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNCOTg3NDcgMCUsICNCOTg3NDcgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmYjk4NzQ3JywgZW5kQ29sb3JzdHI9JyNmZmI5ODc0NycsIEdyYWRpZW50VHlwZT0wKTsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxcHggIzExMTsKfQpidXR0b24udzJ1aS1idG4tb3JhbmdlOmZvY3VzOmJlZm9yZSB7CiAgYm9yZGVyOiAxcHggZGFzaGVkICNmOWY5Zjk7Cn0KYnV0dG9uLncydWktYnRuLXJlZCB7CiAgY29sb3I6IHdoaXRlOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNGRjZFNzAgMCUsICNDNzJEMkQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoI0ZGNkU3MCAwJSwgI0M3MkQyRCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCNGRjZFNzAgMCUsICNDNzJEMkQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNGRjZFNzAgMCUsICNDNzJEMkQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNGRjZFNzAgMCUsICNDNzJEMkQgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmYzcyZDJkJywgZW5kQ29sb3JzdHI9JyNmZmZmNmU3MCcsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXI6IDFweCBzb2xpZCAjQkIzQzNFOwogIHRleHQtc2hhZG93OiAwcHggMHB4IDFweCAjMTExOwp9CmJ1dHRvbi53MnVpLWJ0bi1yZWQ6aG92ZXIgewogIGNvbG9yOiB3aGl0ZTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjRUU2OTZDIDAlLCAjQUUyNTI3IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCNFRTY5NkMgMCUsICNBRTI1MjcgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgjRUU2OTZDIDAlLCAjQUUyNTI3IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjRUU2OTZDIDAlLCAjQUUyNTI3IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjRUU2OTZDIDAlLCAjQUUyNTI3IDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmFlMjUyNycsIGVuZENvbG9yc3RyPScjZmZlZTY5NmMnLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyOiAxcHggc29saWQgI0JCM0MzRTsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxcHggIzExMTsKfQpidXR0b24udzJ1aS1idG4tcmVkOmFjdGl2ZSwKYnV0dG9uLncydWktYnRuLXJlZC5jbGlja2VkIHsKICBjb2xvcjogd2hpdGU7CiAgYm9yZGVyOiAxcHggc29saWQgIzg2MUMxRTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjOUMyMTIzIDAlLCAjOUMyMTIzIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCM5QzIxMjMgMCUsICM5QzIxMjMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgjOUMyMTIzIDAlLCAjOUMyMTIzIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjOUMyMTIzIDAlLCAjOUMyMTIzIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjOUMyMTIzIDAlLCAjOUMyMTIzIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjljMjEyMycsIGVuZENvbG9yc3RyPScjZmY5YzIxMjMnLCBHcmFkaWVudFR5cGU9MCk7CiAgdGV4dC1zaGFkb3c6IDBweCAwcHggMXB4ICMxMTE7Cn0KYnV0dG9uLncydWktYnRuLXJlZDpmb2N1czpiZWZvcmUgewogIGJvcmRlcjogMXB4IGRhc2hlZCAjZGRkOwp9CmJ1dHRvbi53MnVpLWJ0bi1zbWFsbCB7CiAgcGFkZGluZzogNXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwcHg7CiAgbWluLXdpZHRoOiAwcHg7Cn0KYnV0dG9uLncydWktYnRuLXNtYWxsOmZvY3VzOmJlZm9yZSB7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIHRvcDogMnB4OwogIGJvdHRvbTogMnB4OwogIGxlZnQ6IDJweDsKICByaWdodDogMnB4Owp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBGb3JtcyAtLS0tCiovCi53MnVpLWZvcm0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBjb2xvcjogYmxhY2s7CiAgYmFja2dyb3VuZC1jb2xvcjogI0YyRjJGMjsKICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBwYWRkaW5nOiAwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci53MnVpLWZvcm0gPiBkaXYgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci53MnVpLWZvcm0gLncydWktZm9ybS1oZWFkZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTliYmU4ICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjb2xvcjogIzQ0NDsKICBmb250LXNpemU6IDEzcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBhZGRpbmc6IDhweDsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCNEQUU2RjMsICNDMkQ1RUQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI0RBRTZGMywgI0MyRDVFRCk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZGFlNmYzJywgZW5kQ29sb3JzdHI9JyNmZmMyZDVlZCcsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKfQoudzJ1aS1mb3JtIC53MnVpLWZvcm0tdG9vbGJhciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDBweDsKICByaWdodDogMHB4OwogIG1hcmdpbjogMHB4OwogIHBhZGRpbmc6IDVweCAzcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNWQ4ZDg7Cn0KLncydWktZm9ybSAudzJ1aS1mb3JtLXRhYnMgewogIG1hcmdpbjogMHB4OwogIHBhZGRpbmc6IDBweDsKfQoudzJ1aS1mb3JtIC53MnVpLXRhYnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OwogIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOwp9Ci53MnVpLWZvcm0gLncydWktdGFicyAudzJ1aS10YWIuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjJGMkYyOwp9Ci53MnVpLWZvcm0gLncydWktcGFnZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGF1dG87CiAgcGFkZGluZzogMTBweCA1cHggMCA1cHg7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBpbmhlcml0OwogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGluaGVyaXQ7CiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIHsKICBkaXNwbGF5OiBmbGV4OwogIHBhZGRpbmc6IDA7Cn0KLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbiB7CiAgd2lkdGg6IDEwMCU7Cn0KLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtMCwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtMSwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtMiwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtMywKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtNCwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtNSwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtNiwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtNywKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtOCwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtOSwKLncydWktZm9ybSAudzJ1aS1jb2x1bW4tY29udGFpbmVyIC53MnVpLWNvbHVtbi5jb2wtMTAgewogIG1hcmdpbjogMCA1cHg7Cn0KLncydWktZm9ybSAudzJ1aS1idXR0b25zIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDVkOGQ4OwogIGJvcmRlci1ib3R0b206IDBweCBzb2xpZCAjZDVkOGQ4OwogIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7CiAgcGFkZGluZzogMTVweCAwcHggIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKfQoudzJ1aS1mb3JtIC53MnVpLWJ1dHRvbnMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCi53MnVpLWZvcm0gLncydWktYnV0dG9ucyBidXR0b24gewogIG1pbi13aWR0aDogODBweDsKICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoudzJ1aS1mb3JtIGlucHV0W3R5cGU9Y2hlY2tib3hdLAoudzJ1aS1mb3JtIGlucHV0W3R5cGU9cmFkaW9dIHsKICBtYXJnaW4tdG9wOiA0cHg7CiAgbWFyZ2luLWJvdHRvbTogNHB4OwogIHdpZHRoOiAxNHB4OwogIGhlaWdodDogMTRweDsKfQoudzJ1aS1mb3JtIGlucHV0W3R5cGU9Y2hlY2tib3hdLncydWktdG9nZ2xlIHsKICBtYXJnaW46IDBweDsKICB3aWR0aDogNTBweDsKfQoudzJ1aS1ncm91cC10aXRsZSB7CiAgcGFkZGluZzogNXB4IDJweDsKICBjb2xvcjogIzhEOTZBMjsKICB0ZXh0LXNoYWRvdzogMXB4IDFweCAycHggI2ZkZmRmZDsKICBmb250LXNpemU6IDEyMCU7Cn0KLncydWktZ3JvdXAgewogIGJhY2tncm91bmQtY29sb3I6ICNGOUY5Rjk7CiAgbWFyZ2luOiA1cHggMHB4IDEwcHggMHB4OwogIHBhZGRpbmc6IDEwcHggNXB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRENEQ0RDOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRENEQ0RDOwp9Ci53MnVpLWZpZWxkID4gbGFiZWwgewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbi10b3A6IDdweDsKICBtYXJnaW4tYm90dG9tOiAzcHg7CiAgd2lkdGg6IDEyMHB4OwogIHBhZGRpbmc6IDBweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgbWluLWhlaWdodDogMjBweDsKICBjb2xvcjogIzY2NjsKfQoudzJ1aS1maWVsZCA+IGRpdiB7CiAgLyogZG8gbm90IGluY2x1ZGUgd2lkdGggKi8KICBtYXJnaW4tYm90dG9tOiAzcHg7CiAgbWFyZ2luLWxlZnQ6IDEyOHB4OwogIHBhZGRpbmc6IDNweDsKICBtaW4taGVpZ2h0OiAyOHB4OwogIGZsb2F0OiBub25lOwp9Ci53MnVpLWZpZWxkLncydWktcmVxdWlyZWQgPiBkaXYgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudzJ1aS1maWVsZC53MnVpLXJlcXVpcmVkOm5vdCgudzJ1aS1maWVsZC1pbmxpbmUpID4gZGl2OjpiZWZvcmUgewogIGNvbnRlbnQ6ICcqJzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1sZWZ0OiAtOXB4OwogIGNvbG9yOiByZWQ7Cn0KLncydWktZmllbGQudzJ1aS1yZXF1aXJlZC53MnVpLWZpZWxkLWlubGluZSA+IGRpdjo6YmVmb3JlIHsKICBjb250ZW50OiAnJyAhaW1wb3J0YW50Owp9Ci53MnVpLWZpZWxkLncydWktZGlzYWJsZWQgewogIG9wYWNpdHk6IDAuMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci53MnVpLWZpZWxkLncydWktc3Bhbi1ub25lID4gbGFiZWwgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiA1cHggMCAwIDRweDsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci53MnVpLWZpZWxkLncydWktc3Bhbi1ub25lID4gZGl2IHsKICBtYXJnaW4tbGVmdDogMDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW4wID4gbGFiZWwgewogIGRpc3BsYXk6IG5vbmU7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuMCA+IGRpdiB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuMSA+IGxhYmVsIHsKICB3aWR0aDogMjBweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW4xID4gZGl2IHsKICBtYXJnaW4tbGVmdDogMjhweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW4yID4gbGFiZWwgewogIHdpZHRoOiA0MHB4Owp9Ci53MnVpLWZpZWxkLncydWktc3BhbjIgPiBkaXYgewogIG1hcmdpbi1sZWZ0OiA0OHB4Owp9Ci53MnVpLWZpZWxkLncydWktc3BhbjMgPiBsYWJlbCB7CiAgd2lkdGg6IDYwcHg7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuMyA+IGRpdiB7CiAgbWFyZ2luLWxlZnQ6IDY4cHg7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuNCA+IGxhYmVsIHsKICB3aWR0aDogODBweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW40ID4gZGl2IHsKICBtYXJnaW4tbGVmdDogODhweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW41ID4gbGFiZWwgewogIHdpZHRoOiAxMDBweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW41ID4gZGl2IHsKICBtYXJnaW4tbGVmdDogMTA4cHg7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuNiA+IGxhYmVsIHsKICB3aWR0aDogMTIwcHg7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuNiA+IGRpdiB7CiAgbWFyZ2luLWxlZnQ6IDEyOHB4Owp9Ci53MnVpLWZpZWxkLncydWktc3BhbjcgPiBsYWJlbCB7CiAgd2lkdGg6IDE0MHB4Owp9Ci53MnVpLWZpZWxkLncydWktc3BhbjcgPiBkaXYgewogIG1hcmdpbi1sZWZ0OiAxNDhweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW44ID4gbGFiZWwgewogIHdpZHRoOiAxNjBweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW44ID4gZGl2IHsKICBtYXJnaW4tbGVmdDogMTY4cHg7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuOSA+IGxhYmVsIHsKICB3aWR0aDogMTgwcHg7Cn0KLncydWktZmllbGQudzJ1aS1zcGFuOSA+IGRpdiB7CiAgbWFyZ2luLWxlZnQ6IDE4OHB4Owp9Ci53MnVpLWZpZWxkLncydWktc3BhbjEwID4gbGFiZWwgewogIHdpZHRoOiAyMDBweDsKfQoudzJ1aS1maWVsZC53MnVpLXNwYW4xMCA+IGRpdiB7CiAgbWFyZ2luLWxlZnQ6IDIwOHB4Owp9Ci53MnVpLWZpZWxkLncydWktZmllbGQtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmU7Cn0KLncydWktZmllbGQudzJ1aS1maWVsZC1pbmxpbmUgPiBkaXYgewogIGRpc3BsYXk6IGlubGluZTsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQoudzJ1aS1lcnJvciB7CiAgYm9yZGVyOiAxcHggc29saWQgI0ZGQThBOCAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6ICNGRkY0RUIgIWltcG9ydGFudDsKfQoudzJmaWVsZCB7CiAgcGFkZGluZzogM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7Cn0KLncydWktZmllbGQtaGVscGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxMDAlOwogIC8qIHBvaW50ZXItZXZlbnRzOiBub25lOyAtIGRvIG5vdCB1c2UgYXMgSUUgZG9lcyBub3Qgc3VwcG9ydCBpdCAqLwogIHVzZXItc2VsZWN0OiBub25lOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW8tdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLncydWktZmllbGQtaGVscGVyIC53MnVpLWZpZWxkLXVwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgcGFkZGluZzogMnB4IDNweDsKfQoudzJ1aS1maWVsZC1oZWxwZXIgLncydWktZmllbGQtZG93biB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMHB4OwogIHBhZGRpbmc6IDJweCAzcHg7Cn0KLncydWktZmllbGQtaGVscGVyIC5hcnJvdy11cDpob3ZlciB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzgxQzZGRjsKfQoudzJ1aS1maWVsZC1oZWxwZXIgLmFycm93LWRvd246aG92ZXIgewogIGJvcmRlci10b3AtY29sb3I6ICM4MUM2RkY7Cn0KLyoKKiAgICBBUlJPV1MKKi8KLmFycm93LXVwIHsKICBiYWNrZ3JvdW5kOiBub25lOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIC8qIGxlZnQgYXJyb3cgc2xhbnQgKi8KICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAvKiByaWdodCBhcnJvdyBzbGFudCAqLwogIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCAjNzc3OwogIC8qIGJvdHRvbSwgYWRkIGJhY2tncm91bmQgY29sb3IgaGVyZSAqLwogIGZvbnQtc2l6ZTogMDsKICBsaW5lLWhlaWdodDogMDsKfQouYXJyb3ctZG93biB7CiAgYmFja2dyb3VuZDogbm9uZTsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wOiA1cHggc29saWQgIzc3NzsKICBmb250LXNpemU6IDA7CiAgbGluZS1oZWlnaHQ6IDA7Cn0KLmFycm93LWxlZnQgewogIGJhY2tncm91bmQ6IG5vbmU7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAvKiBsZWZ0IGFycm93IHNsYW50ICovCiAgYm9yZGVyLXRvcDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIC8qIHJpZ2h0IGFycm93IHNsYW50ICovCiAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgIzc3NzsKICAvKiBib3R0b20sIGFkZCBiYWNrZ3JvdW5kIGNvbG9yIGhlcmUgKi8KICBmb250LXNpemU6IDA7CiAgbGluZS1oZWlnaHQ6IDA7Cn0KLmFycm93LXJpZ2h0IHsKICBiYWNrZ3JvdW5kOiBub25lOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItYm90dG9tOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgLyogbGVmdCBhcnJvdyBzbGFudCAqLwogIGJvcmRlci10b3A6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAvKiByaWdodCBhcnJvdyBzbGFudCAqLwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzc3NzsKICAvKiBib3R0b20sIGFkZCBiYWNrZ3JvdW5kIGNvbG9yIGhlcmUgKi8KICBmb250LXNpemU6IDA7CiAgbGluZS1oZWlnaHQ6IDA7Cn0KLyoKKiAgICBDT0xPUiBvdmVybGF5CiovCi53MnVpLWNvbG9yIHsKICBwYWRkaW5nOiA4cHggNXB4IDBweCA1cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci53MnVpLWNvbG9yIGlucHV0OmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkICM5OTkgIWltcG9ydGFudDsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci1wYWxldHRlIHsKICB3aWR0aDogMjQycHg7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItcGFsZXR0ZSB0YWJsZSB7CiAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICB3aWR0aDogMTYwcHg7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItcGFsZXR0ZSB0YWJsZSB0ZCB7CiAgd2lkdGg6IDIwcHg7CiAgaGVpZ2h0OiAyMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci1wYWxldHRlIHRhYmxlIHRkIGRpdiB7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDE3cHg7CiAgcGFkZGluZzogMXB4IDRweDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBjb2xvcjogd2hpdGU7CiAgdGV4dC1zaGFkb3c6IDBweCAwcHggMnB4ICMwMDA7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItcGFsZXR0ZSB0YWJsZSB0ZCBkaXY6aG92ZXIgewogIG91dGxpbmU6IDFweCBzb2xpZCAjNjY2OwogIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItcGFsZXR0ZSB0YWJsZSB0ZCBkaXYubm8tY29sb3IgewogIGJvcmRlcjogMXB4IHNvbGlkICNlZmVmZWY7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgewogIGhlaWdodDogMTc2cHg7CiAgcGFkZGluZzogMXB4IDJweDsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci1hZHZhbmNlZCAucGFsZXR0ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxNTBweDsKICBoZWlnaHQ6IDEyNXB4OwogIG91dGxpbmU6IDFweCBzb2xpZCAjZDJkMmQyOwogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci53MnVpLWNvbG9yIC53MnVpLWNvbG9yLWFkdmFuY2VkIC5wYWxldHRlIC5wYWxldHRlLWJnIHsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDBkZWcsICMwMDAwMDAsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci53MnVpLWNvbG9yIC53MnVpLWNvbG9yLWFkdmFuY2VkIC5yYWluYm93IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDE1MHB4OwogIGhlaWdodDogMTJweDsKICBtYXJnaW46IDEwcHggMHB4IDBweCAwcHg7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZmYwMDAwIDAlLCAjZmZmZjAwIDE3JSwgIzAwZmYwMCAzMyUsICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3JSwgI2ZmMDBmZiA4MyUsICNmZjAwMDAgMTAwJSk7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgLmFscGhhIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDE1MHB4OwogIGhlaWdodDogMTJweDsKICBtYXJnaW46IDEwcHggMHB4IDBweCAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICNiYmIgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDc1JSwgI2JiYiA3NSUsICNiYmIpLCBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICNiYmIgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDc1JSwgI2JiYiA3NSUsICNiYmIpOwogIGJhY2tncm91bmQtc2l6ZTogMTJweCAxMnB4OwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgMCwgNnB4IDZweDsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci1hZHZhbmNlZCAuYWxwaGEgLmFscGhhLWJnIHsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDgwLCA4MCwgODAsIDApIDAlLCAjNTA1MDUwIDEwMCUpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci53MnVpLWNvbG9yIC53MnVpLWNvbG9yLWFkdmFuY2VkIC52YWx1ZTEgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDhweDsKICBoZWlnaHQ6IDhweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogMHB4IDBweCAxcHggd2hpdGU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xcHgpIHRyYW5zbGF0ZVkoLTFweCk7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgLnZhbHVlMiB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTJweDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDhweDsKICBoZWlnaHQ6IDE2cHg7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGJvcmRlcjogMXB4IHNvbGlkICM2OTY5Njk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICBib3gtc2hhZG93OiAwcHggMHB4IDFweCB3aGl0ZTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTFweCk7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgLmNvbG9yLWluZm8gewogIGZsb2F0OiByaWdodDsKICB3aWR0aDogODBweDsKICBtYXJnaW4tbGVmdDogMTU4cHg7CiAgbWFyZ2luLXRvcDogMHB4Owp9Ci53MnVpLWNvbG9yIC53MnVpLWNvbG9yLWFkdmFuY2VkIC5jb2xvci1pbmZvIC5jb2xvci1wcmV2aWV3LWJnIHsKICBib3gtc2hhZG93OiAwIDAgMXB4ICNjM2MzYzM7CiAgaGVpZ2h0OiA0MHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjYmJiIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA3NSUsICNiYmIgNzUlLCAjYmJiKSwgbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjYmJiIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA3NSUsICNiYmIgNzUlLCAjYmJiKTsKICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDAsIDhweCA4cHg7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci1hZHZhbmNlZCAuY29sb3ItaW5mbyAuY29sb3ItcHJldmlldywKLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgLmNvbG9yLWluZm8gLmNvbG9yLW9yaWdpbmFsIHsKICBoZWlnaHQ6IDQwcHg7CiAgd2lkdGg6IDQwcHg7CiAgZmxvYXQ6IGxlZnQ7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgLmNvbG9yLWluZm8gLmNvbG9yLXBhcnQgewogIHBhZGRpbmctdG9wOiA1cHg7Cn0KLncydWktY29sb3IgLncydWktY29sb3ItYWR2YW5jZWQgLmNvbG9yLWluZm8gLmNvbG9yLXBhcnQgc3BhbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiA3cHg7CiAgbWFyZ2luLWxlZnQ6IDFweDsKICBjb2xvcjogIzY2NjsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci1hZHZhbmNlZCAuY29sb3ItaW5mbyAuY29sb3ItcGFydCBpbnB1dCB7CiAgZm9udC1zaXplOiAxMHB4IWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICB3aWR0aDogMjZweCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDJweCAhaW1wb3J0YW50OwogIGNvbG9yOiAjMzMzOwp9Ci53MnVpLWNvbG9yIC53MnVpLWNvbG9yLXRhYnMgewogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgaGVpZ2h0OiAzMHB4OwogIG1hcmdpbjogMTBweCAtNXB4IDBweCAtNXB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDZkNmQ2Owp9Ci53MnVpLWNvbG9yIC53MnVpLWNvbG9yLXRhYnMgLncydWktY29sb3ItdGFiIHsKICBmbG9hdDogbGVmdDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDM0cHg7CiAgaGVpZ2h0OiAyNXB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDFweDsKICBtYXJnaW46IC0xcHggLTNweCAwcHggOHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LXNpemU6IDE1cHg7CiAgcGFkZGluZy10b3A6IDFweDsKICBjb2xvcjogIzdiN2I3YjsKfQoudzJ1aS1jb2xvciAudzJ1aS1jb2xvci10YWJzIC53MnVpLWNvbG9yLXRhYi5zZWxlY3RlZCB7CiAgY29sb3I6ICM1NTU7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Cn0KLyoKKiAgICBEQVRFIG92ZXJsYXkKKi8KLncydWktY2FsZW5kYXIgewogIG1hcmdpbjogMHB4OwogIHBhZGRpbmc6IDFweDsKICBsaW5lLWhlaWdodDogMTA4JTsKfQoudzJ1aS1jYWxlbmRhciAudzJ1aS1jYWxlbmRhci10aXRsZSB7CiAgbWFyZ2luOiAwcHggLTFweDsKICBwYWRkaW5nOiA3cHggMnB4OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNmNmY2ZjYsICNkOWQ5ZDkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCNmNmY2ZjYsICNkOWQ5ZDkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoI2Y2ZjZmNiwgI2Q5ZDlkOSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNmNmY2ZjYsICNkOWQ5ZDkpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjZjZmNmY2LCAjZDlkOWQ5KTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmNmY2ZjYnLCBlbmRDb2xvcnN0cj0nI2ZmZDlkOWQ5JywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmJiOwogIGNvbG9yOiAjNTU1OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggI2VlZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItanVtcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMjdweDsKICBsZWZ0OiAwcHg7CiAgcmlnaHQ6IDBweDsKICBib3R0b206IDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRmFGYUZhOwp9Ci53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLWp1bXAgPiA6Zmlyc3QtY2hpbGQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgYm90dG9tOiAwcHg7CiAgd2lkdGg6IDExMHB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZy10b3A6IDVweDsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBzaWx2ZXI7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItanVtcCA+IDpsYXN0LWNoaWxkIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgcmlnaHQ6IDBweDsKICBib3R0b206IDBweDsKICB3aWR0aDogODhweDsKICBvdmVyZmxvdy14OiBoaWRkZW47CiAgb3ZlcmZsb3cteTogYXV0bzsKICBwYWRkaW5nLXRvcDogNXB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudzJ1aS1jYWxlbmRhciAudzJ1aS1jYWxlbmRhci1qdW1wIC53MnVpLWp1bXAtbW9udGgsCi53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLWp1bXAgLncydWktanVtcC15ZWFyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogNXB4IDBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luOiAycHg7CiAgd2lkdGg6IDUwcHg7CiAgY3Vyc29yOiBkZWZhdWx0OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDJweDsKfQoudzJ1aS1jYWxlbmRhciAudzJ1aS1jYWxlbmRhci1qdW1wIC53MnVpLWp1bXAteWVhciB7CiAgZmxvYXQ6IG5vbmU7CiAgd2lkdGg6IDk1JTsKfQoudzJ1aS1jYWxlbmRhciAudzJ1aS1jYWxlbmRhci1qdW1wIC53MnVpLWp1bXAtbW9udGg6aG92ZXIsCi53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLWp1bXAgLncydWktanVtcC15ZWFyOmhvdmVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGNvbG9yOiBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWZlZmVmOwp9Ci53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLWp1bXAgLncydWktanVtcC1tb250aC5zZWxlY3RlZCwKLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItanVtcCAudzJ1aS1qdW1wLXllYXIuc2VsZWN0ZWQgewogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6ICNkYWRhZGE7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItcHJldmlvdXMsCi53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLW5leHQgewogIHdpZHRoOiAyNHB4OwogIGhlaWdodDogMjBweDsKICBjb2xvcjogIzY2NjsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgcGFkZGluZzogMnB4IDNweCAxcHggMnB4OwogIG1hcmdpbjogLTRweCAwcHggMHB4IDBweDsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItcHJldmlvdXM6aG92ZXIsCi53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLW5leHQ6aG92ZXIgewogIGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWZlZmVmOwp9Ci53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLXByZXZpb3VzID4gZGl2LAoudzJ1aS1jYWxlbmRhciAudzJ1aS1jYWxlbmRhci1uZXh0ID4gZGl2IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjODg4OwogIGJvcmRlci10b3A6IDRweCBzb2xpZCAjODg4OwogIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICB3aWR0aDogMHB4OwogIGhlaWdodDogMHB4OwogIHBhZGRpbmc6IDBweDsKICBtYXJnaW46IDNweCAwcHggMHB4IDBweDsKfQoudzJ1aS1jYWxlbmRhciAudzJ1aS1jYWxlbmRhci1wcmV2aW91cyB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItcHJldmlvdXMgPiBkaXYgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogIG1hcmdpbi1sZWZ0OiA2cHg7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItbmV4dCB7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci53MnVpLWNhbGVuZGFyIC53MnVpLWNhbGVuZGFyLW5leHQgPiBkaXYgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpOwogIG1hcmdpbi1sZWZ0OiAycHg7CiAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItbm93IHsKICBjdXJzb3I6IHBvaW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLncydWktY2FsZW5kYXIgLncydWktY2FsZW5kYXItbm93OmhvdmVyIHsKICBjb2xvcjogIzBBOTZERTsKfQoudzJ1aS1jYWxlbmRhciB0YWJsZS53MnVpLWNhbGVuZGFyLWRheXMgewogIHBhZGRpbmc6IDBweDsKfQoudzJ1aS1jYWxlbmRhciB0YWJsZS53MnVpLWNhbGVuZGFyLWRheXMgdGQgewogIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7CiAgcGFkZGluZzogNnB4OwogIGN1cnNvcjogZGVmYXVsdDsKICB0ZXh0LWFsaWduOiByaWdodDsKfQoudzJ1aS1jYWxlbmRhciB0YWJsZS53MnVpLWNhbGVuZGFyLWRheXMgdGQudzJ1aS1zYXR1cmRheSwKLncydWktY2FsZW5kYXIgdGFibGUudzJ1aS1jYWxlbmRhci1kYXlzIHRkLncydWktc3VuZGF5IHsKICBib3JkZXI6IDFweCBzb2xpZCAjZmZmOwogIGNvbG9yOiAjYzg0OTNiOwogIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7Cn0KLncydWktY2FsZW5kYXIgdGFibGUudzJ1aS1jYWxlbmRhci1kYXlzIHRkLncydWktc2F0dXJkYXk6aG92ZXIsCi53MnVpLWNhbGVuZGFyIHRhYmxlLncydWktY2FsZW5kYXItZGF5cyB0ZC53MnVpLXN1bmRheTpob3ZlciB7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBjb2xvcjogYmxhY2s7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTsKfQoudzJ1aS1jYWxlbmRhciB0YWJsZS53MnVpLWNhbGVuZGFyLWRheXMgdGQudzJ1aS1zYXR1cmRheS53MnVpLWJsb2NrZWQsCi53MnVpLWNhbGVuZGFyIHRhYmxlLncydWktY2FsZW5kYXItZGF5cyB0ZC53MnVpLXN1bmRheS53MnVpLWJsb2NrZWQgewogIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7CiAgY29sb3I6ICNjY2M7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoudzJ1aS1jYWxlbmRhciB0YWJsZS53MnVpLWNhbGVuZGFyLWRheXMgdGQudzJ1aS10b2RheSB7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6ICNlMmY3Y2Q7Cn0KLncydWktY2FsZW5kYXIgdGFibGUudzJ1aS1jYWxlbmRhci1kYXlzIHRkOmhvdmVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGNvbG9yOiBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5Owp9Ci53MnVpLWNhbGVuZGFyIHRhYmxlLncydWktY2FsZW5kYXItZGF5cyB0ZC53MnVpLWRhdGUtc2VsZWN0ZWQgewogIGJvcmRlcjogMXB4IHNvbGlkICM4Y2IwNjc7Cn0KLncydWktY2FsZW5kYXIgdGFibGUudzJ1aS1jYWxlbmRhci1kYXlzIHRkLncydWktYmxvY2tlZCB7CiAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICBjb2xvcjogI2NjYzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci53MnVpLWNhbGVuZGFyIHRhYmxlLncydWktY2FsZW5kYXItZGF5cyB0ZC53MnVpLWRheS1lbXB0eSB7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZkOwp9Ci53MnVpLWNhbGVuZGFyIHRhYmxlLncydWktY2FsZW5kYXItZGF5cyB0ci53MnVpLWRheS10aXRsZSB0ZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICBjb2xvcjogZ3JheTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBwYWRkaW5nOiA2cHg7Cn0KLyoKKiAgICBUaW1lCiovCi53MnVpLWNhbGVuZGFyLXRpbWUgewogIHBhZGRpbmc6IDVweDsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLncydWktY2FsZW5kYXItdGltZSB0ZCBkaXYgewogIHBhZGRpbmc6IDdweCAxMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci53MnVpLWNhbGVuZGFyLXRpbWUgdGQ6bnRoLWNoaWxkKGV2ZW4pIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmNmY2Owp9Ci53MnVpLWNhbGVuZGFyLXRpbWUgdGQgZGl2OmhvdmVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGNvbG9yOiBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5Owp9Ci53MnVpLWNhbGVuZGFyLXRpbWUgdGQgZGl2LncydWktYmxvY2tlZCB7CiAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICBjb2xvcjogI2NjYzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci53MnVpLXNlbGVjdCB7CiAgY3Vyc29yOiBkZWZhdWx0OwogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFMQ0FRQUFBQ256d2QrQUFBQWNrbEVRVlI0QWNYTXNRRkJRUURHNFA5dEFnQzBnSllSUUpaZ0tRTXdDcUNrdTZ2VkFBQUErTkpIUDRLSE9rMGFWMnBSdzYxbjRCQm15T3hLUThJNGVoWmV1aGQzSFR4NkRRRUdaN3NCZnIyT09PT2ozWWk0M2tNS3M5c1prbm9mT2V4cVo4bnBNeWd3V1pUWDUxQ2lwUCtZQTFPaVpKYllZZzlsQUFBQUFFbEZUa1N1UW1DQycpLCAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMjAlLCAjZjZmNmY2IDUwJSwgI0VFRSA1MiUsICNmNGY0ZjQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQUxDQVFBQUFDbnp3ZCtBQUFBY2tsRVFWUjRBY1hNc1FGQlFRREc0UDl0QWdDMGdKWVJRSlpnS1FNd0NxQ2t1NnZWQUFBQStOSkhQNEtIT2swYVYycFJ3NjFuNEJCbXlPeEtROEk0ZWhaZXVoZDNIVHg2RFFFR1o3c0JmcjJPT09PajNZaTQza01LczlzWmtub2ZPZXhxWjhucE15Z3dXWlRYNTFDaXBQK1lBMU9pWkpiWVlnOWxBQUFBQUVsRlRrU3VRbUNDJyksIC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZiAyMCUsICNmNmY2ZjYgNTAlLCAjRUVFIDUyJSwgI2Y0ZjRmNCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBTENBUUFBQUNuendkK0FBQUFja2xFUVZSNEFjWE1zUUZCUVFERzRQOXRBZ0MwZ0pZUlFKWmdLUU13Q3FDa3U2dlZBQUFBK05KSFA0S0hPazBhVjJwUnc2MW40QkJteU94S1E4STRlaFpldWhkM0hUeDZEUUVHWjdzQmZyMk9PT09qM1lpNDNrTUtzOXNaa25vZk9leHFaOG5wTXlnd1daVFg1MUNpcFArWUExT2laSmJZWWc5bEFBQUFBRWxGVGtTdVFtQ0MnKSwgLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMjAlLCAjZjZmNmY2IDUwJSwgI0VFRSA1MiUsICNmNGY0ZjQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQUxDQVFBQUFDbnp3ZCtBQUFBY2tsRVFWUjRBY1hNc1FGQlFRREc0UDl0QWdDMGdKWVJRSlpnS1FNd0NxQ2t1NnZWQUFBQStOSkhQNEtIT2swYVYycFJ3NjFuNEJCbXlPeEtROEk0ZWhaZXVoZDNIVHg2RFFFR1o3c0JmcjJPT09PajNZaTQza01LczlzWmtub2ZPZXhxWjhucE15Z3dXWlRYNTFDaXBQK1lBMU9pWkpiWVlnOWxBQUFBQUVsRlRrU3VRbUNDJyksIC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMjAlLCAjZjZmNmY2IDUwJSwgI0VFRSA1MiUsICNmNGY0ZjQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQUxDQVFBQUFDbnp3ZCtBQUFBY2tsRVFWUjRBY1hNc1FGQlFRREc0UDl0QWdDMGdKWVJRSlpnS1FNd0NxQ2t1NnZWQUFBQStOSkhQNEtIT2swYVYycFJ3NjFuNEJCbXlPeEtROEk0ZWhaZXVoZDNIVHg2RFFFR1o3c0JmcjJPT09PajNZaTQza01LczlzWmtub2ZPZXhxWjhucE15Z3dXWlRYNTFDaXBQK1lBMU9pWkpiWVlnOWxBQUFBQUVsRlRrU3VRbUNDJyksIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZmYgMjAlLCAjZjZmNmY2IDUwJSwgI0VFRSA1MiUsICNmNGY0ZjQgMTAwJSk7CiAgYmFja2dyb3VuZC1zaXplOiAxN3B4IDZweCwgMTAwJSAxMDAlOwogIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlciwgbGVmdCB0b3A7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdCwgbm8tcmVwZWF0Owp9Ci53MnVpLXNlbGVjdFtyZWFkb25seV0sCi53MnVpLXNlbGVjdFtkaXNhYmxlZF0gewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMSAhaW1wb3J0YW50OwogIGNvbG9yOiAjNzc3ICFpbXBvcnRhbnQ7CiAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7Cn0KLyoKKiAgICBFTlVNIGl0ZW1zCiovCi53MnVpLWxpc3QgewogIGNvbG9yOiBpbmhlcml0OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBwYWRkaW5nOiAwcHg7CiAgbWFyZ2luOiAwcHg7CiAgbWluLWhlaWdodDogMjVweDsKICBvdmVyZmxvdzogYXV0bzsKICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIGZvbnQtc2l6ZTogNnB4OwogIGxpbmUtaGVpZ2h0OiAxMDAlOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Ci53MnVpLWxpc3QgaW5wdXRbdHlwZT10ZXh0XSB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICAtbXMtYm94LXNoYWRvdzogbm9uZTsKICAtby1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLncydWktbGlzdCB1bCB7CiAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOwogIG1hcmdpbjogMHB4OwogIHBhZGRpbmc6IDBweDsKfQoudzJ1aS1saXN0IHVsIGxpIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW46IDJweCAxcHggMHB4IDJweDsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgd2lkdGg6IGF1dG87CiAgcGFkZGluZzogM3B4IDEwcHggMXB4IDdweDsKICBib3JkZXI6IDFweCBzb2xpZCAjODhCMEQ2OwogIGJhY2tncm91bmQtY29sb3I6ICNFRkYzRjU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgZm9udC1mYW1pbHk6IHZlcmRhbmE7CiAgZm9udC1zaXplOiAxMXB4OwogIGxpbmUtaGVpZ2h0OiAxMDAlOwogIGhlaWdodDogMjBweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci53MnVpLWxpc3QgdWwgbGk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkMGRiZTE7Cn0KLncydWktbGlzdCB1bCBsaTpsYXN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiAwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLncydWktbGlzdCB1bCBsaTpsYXN0LWNoaWxkIGlucHV0IHsKICBwYWRkaW5nOiAxcHg7CiAgcGFkZGluZy10b3A6IDBweDsKICBtYXJnaW46IDBweDsKICBib3JkZXI6IDBweDsKICBvdXRsaW5lOiBub25lOwogIGhlaWdodDogYXV0bzsKICBsaW5lLWhlaWdodDogMTAwJTsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLncydWktbGlzdCB1bCBsaSAudzJ1aS1saXN0LXJlbW92ZSB7CiAgZmxvYXQ6IHJpZ2h0OwogIHdpZHRoOiAxNXB4OwogIGhlaWdodDogMTRweDsKICBtYXJnaW46IC0xcHggLTlweCAwcHggM3B4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7Cn0KLncydWktbGlzdCB1bCBsaSAudzJ1aS1saXN0LXJlbW92ZTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Q3N0Y3RjsKICBjb2xvcjogd2hpdGU7Cn0KLncydWktbGlzdCB1bCBsaSAudzJ1aS1saXN0LXJlbW92ZTpiZWZvcmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDBweDsKICBwYWRkaW5nOiAwcHg7CiAgbWFyZ2luOiAwcHg7CiAgbGVmdDogNXB4OwogIGNvbG9yOiBpbmhlcml0OwogIG9wYWNpdHk6IDAuNzsKICB0ZXh0LXNoYWRvdzogaW5oZXJpdDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzOwogIGNvbnRlbnQ6ICd4JzsKICBsaW5lLWhlaWdodDogMTAwJTsKfQoudzJ1aS1saXN0IHVsIGxpID4gc3Bhbi5maWxlLXNpemUgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIGNvbG9yOiAjNzc3Owp9Ci53MnVpLWxpc3QudzJ1aS1yZWFkb25seSB1bCA+IGxpOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUZGM0Y1Owp9Ci53MnVpLWxpc3QgLncydWktZW51bS1wbGFjZWhvbGRlciB7CiAgZGlzcGxheTogaW5saW5lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBjb2xvcjogIzk5OTsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tcy1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudzJ1aS1saXN0LncydWktZmlsZS1kcmFnb3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U0RkZEQTsKICBib3JkZXI6IDFweCBzb2xpZCAjOTNFMDdEOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBMYXlvdXQgLS0tLQoqLwoudzJ1aS1sYXlvdXQgewogIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tcy1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudzJ1aS1sYXlvdXQgKiB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLncydWktbGF5b3V0ID4gZGl2IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBib3JkZXI6IDBweDsKICBtYXJnaW46IDBweDsKICBwYWRkaW5nOiAwcHg7CiAgb3V0bGluZTogMHB4OwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci53MnVpLWxheW91dCA+IGRpdiAudzJ1aS1wYW5lbCB7CiAgZGlzcGxheTogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogMTIwOwp9Ci53MnVpLWxheW91dCA+IGRpdiAudzJ1aS1wYW5lbCAudzJ1aS1wYW5lbC10aXRsZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDBweDsKICB0b3A6IDBweDsKICByaWdodDogMHB4OwogIHBhZGRpbmc6IDVweDsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KCNEQUU2RjMsICNDMkQ1RUQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI0RBRTZGMywgI0MyRDVFRCk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZGFlNmYzJywgZW5kQ29sb3JzdHI9JyNmZmMyZDVlZCcsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXI6IDFweCBzb2xpZCAjQjlDRUU5OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTliYmU4Owp9Ci53MnVpLWxheW91dCA+IGRpdiAudzJ1aS1wYW5lbCAudzJ1aS1wYW5lbC10YWJzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMHB4OwogIHRvcDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgei1pbmRleDogMjsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKICBwYWRkaW5nOiA0cHggMHB4Owp9Ci53MnVpLWxheW91dCA+IGRpdiAudzJ1aS1wYW5lbCAudzJ1aS1wYW5lbC10YWJzID4gLncydWktdGFiLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0YyRjJGMjsKfQoudzJ1aS1sYXlvdXQgPiBkaXYgLncydWktcGFuZWwgLncydWktcGFuZWwtdG9vbGJhciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDBweDsKICB0b3A6IDBweDsKICByaWdodDogMHB4OwogIHotaW5kZXg6IDI7CiAgZGlzcGxheTogbm9uZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHNpbHZlcjsKICBwYWRkaW5nOiA0cHg7Cn0KLncydWktbGF5b3V0ID4gZGl2IC53MnVpLXBhbmVsIC53MnVpLXBhbmVsLWNvbnRlbnQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwcHg7CiAgdG9wOiAwcHg7CiAgcmlnaHQ6IDBweDsKICBib3R0b206IDBweDsKICB6LWluZGV4OiAxOwogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNGMkYyRjI7Cn0KLncydWktbGF5b3V0ID4gZGl2IC53MnVpLXJlc2l6ZXIgewogIGRpc3BsYXk6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoudzJ1aS1sYXlvdXQgPiBkaXYgLncydWktcmVzaXplcjpob3ZlciwKLncydWktbGF5b3V0ID4gZGl2IC53MnVpLXJlc2l6ZXIuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQzhDQUQxOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBHcmlkIC0tLS0KKi8KLncydWktZ3JpZCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci53MnVpLWdyaWQgPiBkaXYgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1oZWFkZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzk5YmJlOCAhaW1wb3J0YW50OwogIGhlaWdodDogMjhweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNvbG9yOiAjNDQ0OwogIGZvbnQtc2l6ZTogMTNweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgcGFkZGluZzogN3B4OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNEQUU2RjMsICNDMkQ1RUQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCNEQUU2RjMsICNDMkQ1RUQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoI0RBRTZGMywgI0MyRDVFRCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNEQUU2RjMsICNDMkQ1RUQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjREFFNkYzLCAjQzJENUVEKTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZkYWU2ZjMnLCBlbmRDb2xvcnN0cj0nI2ZmYzJkNWVkJywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDJweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC10b29sYmFyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHNpbHZlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUFFQUVBOwogIGhlaWdodDogMzhweDsKICBwYWRkaW5nOiA2cHggMXB4IDRweCAxcHg7CiAgbWFyZ2luOiAwcHg7CiAgYm94LXNoYWRvdzogMHB4IDFweCAycHggI2RkZDsKfQoudzJ1aS1ncmlkIC53MnVpLXRvb2xiYXItc2VhcmNoIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDE2MHB4OwogIG1hcmdpbi1yaWdodDogM3B4Owp9Ci53MnVpLWdyaWQgLncydWktdG9vbGJhci1zZWFyY2ggLncydWktc2VhcmNoLWFsbCB7CiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsKICBoZWlnaHQ6IDIzcHggIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjQjlCOUI5ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDNweCAxOHB4IDNweCAyMXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwcHggIWltcG9ydGFudDsKICBtYXJnaW4tdG9wOiAxcHggIWltcG9ydGFudDsKfQoudzJ1aS1ncmlkIC53MnVpLXRvb2xiYXItc2VhcmNoIC53MnVpLXNlYXJjaC1kb3duIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbWFyZ2luLXRvcDogLTdweDsKICBtYXJnaW4tbGVmdDogNHB4Owp9Ci53MnVpLWdyaWQgLncydWktdG9vbGJhci1zZWFyY2ggLncydWktc2VhcmNoLWNsZWFyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAxNnB4OwogIG1hcmdpbi10b3A6IC04cHg7CiAgbWFyZ2luLWxlZnQ6IC0yMHB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgY3Vyc29yOiBkZWZhdWx0Owp9Ci53MnVpLWdyaWQgLncydWktdG9vbGJhci1zZWFyY2ggLncydWktc2VhcmNoLWNsZWFyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDc3RjdGOwogIGNvbG9yOiB3aGl0ZTsKfQoudzJ1aS1ncmlkIC53MnVpLXRvb2xiYXItc2VhcmNoIC53MnVpLXNlYXJjaC1jbGVhcjpiZWZvcmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDJweDsKICBsZWZ0OiA1cHg7CiAgb3BhY2l0eTogMC42OwogIGNvbG9yOiBpbmhlcml0OwogIHRleHQtc2hhZG93OiBpbmhlcml0OwogIGNvbnRlbnQ6ICd4JzsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBhZGRpbmc6IDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIC1vLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IGlucHV0LAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSBzZWxlY3QsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRleHRhcmVhIHsKICB1c2VyLXNlbGVjdDogdGV4dDsKICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OwogIC1tb3otdXNlci1zZWxlY3Q6IHRleHQ7CiAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0OwogIC1vLXVzZXItc2VsZWN0OiB0ZXh0Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IGRpdi53MnVpLWlucHV0IHsKICB1c2VyLXNlbGVjdDogdGV4OwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleDsKICAtbW96LXVzZXItc2VsZWN0OiB0ZXg7CiAgLW1zLXVzZXItc2VsZWN0OiB0ZXg7CiAgLW8tdXNlci1zZWxlY3Q6IHRleDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICBwYWRkaW5nOiA0cHggMnB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBwb2ludGVyLWV2ZW50czogYXV0bzsKICBvdXRsaW5lOiBub25lOwogIHdoaXRlLXNwYWNlOiBwcmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWNvbHVtbnMsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZmNvbHVtbnMgewogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDBweDsKICB0b3A6IDBweDsKICByaWdodDogMHB4OwogIGJveC1zaGFkb3c6IDBweCAxcHggNHB4ICNkZGQ7CiAgaGVpZ2h0OiBhdXRvOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtY29sdW1ucyB0YWJsZSwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mY29sdW1ucyB0YWJsZSB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtY29sdW1ucyAudzJ1aS1yZXNpemVyLAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZjb2x1bW5zIC53MnVpLXJlc2l6ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxMDAwOwogIGRpc3BsYXk6IGJsb2NrOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAvKiBuZWVkZWQgZm9yIElFICovCiAgcGFkZGluZzogMHB4OwogIG1hcmdpbjogMHB4OwogIHdpZHRoOiA2cHg7CiAgaGVpZ2h0OiAxMnB4OwogIGN1cnNvcjogY29sLXJlc2l6ZTsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwcHg7CiAgcmlnaHQ6IDBweDsKICB0b3A6IDBweDsKICBib3R0b206IDBweDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgdGFibGUgdHIudzJ1aS1vZGQsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgdGFibGUgdHIudzJ1aS1vZGQgewogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLW9kZDpob3ZlciwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ci53MnVpLW9kZDpob3ZlciwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIHRhYmxlIHRyLncydWktb2RkLncydWktcmVjb3JkLWhvdmVyLAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIHRhYmxlIHRyLncydWktb2RkLncydWktcmVjb3JkLWhvdmVyIHsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTZGMEZGOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLW9kZC53MnVpLWVtcHR5LXJlY29yZDpob3ZlciwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ci53MnVpLW9kZC53MnVpLWVtcHR5LXJlY29yZDpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIHRhYmxlIHRyLncydWktZXZlbiwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ci53MnVpLWV2ZW4gewogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNGM0Y2RkE7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIHRhYmxlIHRyLncydWktZXZlbjpob3ZlciwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ci53MnVpLWV2ZW46aG92ZXIsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLWV2ZW4udzJ1aS1yZWNvcmQtaG92ZXIsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgdGFibGUgdHIudzJ1aS1ldmVuLncydWktcmVjb3JkLWhvdmVyIHsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTZGMEZGOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLWV2ZW4udzJ1aS1lbXB0eS1yZWNvcmQ6aG92ZXIsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgdGFibGUgdHIudzJ1aS1ldmVuLncydWktZW1wdHktcmVjb3JkOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGNkZBOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLXNlbGVjdGVkLAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIHRhYmxlIHRyLncydWktc2VsZWN0ZWQsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ciB0ZC53MnVpLXNlbGVjdGVkLAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIHRhYmxlIHRyIHRkLncydWktc2VsZWN0ZWQgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6ICNCNkQ1RkYgIWltcG9ydGFudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgdGFibGUgdHIudzJ1aS1pbmFjdGl2ZSwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ci53MnVpLWluYWN0aXZlLAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgdGFibGUgdHIgdGQudzJ1aS1pbmFjdGl2ZSwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ciB0ZC53MnVpLWluYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDhERUU3ICFpbXBvcnRhbnQ7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIC53MnVpLWV4cGFuZGVkMSwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyAudzJ1aS1leHBhbmRlZDEgewogIGhlaWdodDogMHB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYjJiYWMwOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyAudzJ1aS1leHBhbmRlZDEgPiBkaXYsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgLncydWktZXhwYW5kZWQxID4gZGl2IHsKICBoZWlnaHQ6IDBweDsKICBib3JkZXI6IDBweDsKICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcywgb3BhY2l0eSAwLjNzOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyAudzJ1aS1leHBhbmRlZDIsCi53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgLncydWktZXhwYW5kZWQyIHsKICBoZWlnaHQ6IDBweDsKICBib3JkZXItcmFkaXVzOiAwcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiMmJhYzA7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIC53MnVpLWV4cGFuZGVkMiA+IGRpdiwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyAudzJ1aS1leHBhbmRlZDIgPiBkaXYgewogIGhlaWdodDogMHB4OwogIGJvcmRlcjogMHB4OwogIHRyYW5zaXRpb246IGhlaWdodCAwLjNzLCBvcGFjaXR5IDAuM3M7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIC53MnVpLWxvYWQtbW9yZSwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyAudzJ1aS1sb2FkLW1vcmUgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRDZENUQ3OwogIGN1cnNvcjogcG9pbnRlcjsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgLncydWktbG9hZC1tb3JlID4gZGl2LAoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIC53MnVpLWxvYWQtbW9yZSA+IGRpdiB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGNvbG9yOiAjNzc3OwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMzLCAyMzcsIDI0MywgMC41KTsKICBwYWRkaW5nOiAxMHB4IDBweCAxNXB4IDBweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgd2hpdGU7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1yZWNvcmRzIC53MnVpLWxvYWQtbW9yZSA+IGRpdjpob3ZlciwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyAudzJ1aS1sb2FkLW1vcmUgPiBkaXY6aG92ZXIgewogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNFNkYwRkY7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgewogIGJvcmRlci1zcGFjaW5nOiAwcHg7CiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwogIHdpZHRoOiAxcHg7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgLncydWktaGVhZCB7CiAgbWFyZ2luOiAwcHg7CiAgcGFkZGluZzogMHB4OwogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjNWM1YzU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjNWM1YzU7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNGOUY5RjksICNFNEU0RTQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KCNGOUY5RjksICNFNEU0RTQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoI0Y5RjlGOSwgI0U0RTRFNCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KCNGOUY5RjksICNFNEU0RTQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjRjlGOUY5LCAjRTRFNEU0KTsKICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmOWY5ZjknLCBlbmRDb2xvcnN0cj0nI2ZmZTRlNGU0JywgR3JhZGllbnRUeXBlPTApOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWhlYWQgPiBkaXYgewogIHBhZGRpbmc6IDdweCAzcHg7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1oZWFkLncydWktY29sLWludGVyc2VjdGlvbiB7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNzJCMkZGOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWhlYWQudzJ1aS1yZW9yZGVyLWNvbHMtaGVhZDpob3ZlciB7CiAgY3Vyc29yOiBtb3ZlOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWhlYWQgLmNvbC1pbnRlcnNlY3Rpb24tbWFya2VyIHsKICBwYWRkaW5nOiAwOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBoZWlnaHQ6IDEwMCU7CiAgdG9wOiAwOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWhlYWQgLmNvbC1pbnRlcnNlY3Rpb24tbWFya2VyLmxlZnQgewogIGxlZnQ6IDA7CiAgbWFyZ2luLWxlZnQ6IC01cHg7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgLncydWktaGVhZCAuY29sLWludGVyc2VjdGlvbi1tYXJrZXIucmlnaHQgewogIHJpZ2h0OiAwOwogIG1hcmdpbi1yaWdodDogLTVweDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1oZWFkIC5jb2wtaW50ZXJzZWN0aW9uLW1hcmtlciAudG9wLW1hcmtlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBoZWlnaHQ6IDA7CiAgd2lkdGg6IDA7CiAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICM3MkIyRkY7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1oZWFkIC5jb2wtaW50ZXJzZWN0aW9uLW1hcmtlciAuYm90dG9tLW1hcmtlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMDsKICBoZWlnaHQ6IDA7CiAgd2lkdGg6IDA7CiAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICM3MkIyRkY7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSB0ZCB7CiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0Q2RDVENzsKICBib3JkZXItYm90dG9tOiAwcHggc29saWQgI0Q2RDVENzsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSB0ZC53MnVpLXNvZnQtc3BhbiwKLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgdGQudzJ1aS1zb2Z0LWhpZGRlbiB7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSB0ZC53MnVpLWdyaWQtZGF0YSB7CiAgbWFyZ2luOiAwcHg7CiAgcGFkZGluZzogMHB4Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIHRkLncydWktZ3JpZC1kYXRhIC53MnVpLWluZm8gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDFweDsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6ICM4RDk5QTc7CiAgY3Vyc29yOiBwb2ludGVyOwogIHdpZHRoOiAxNnB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tcmlnaHQ6IDJweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgdGQudzJ1aS1ncmlkLWRhdGEgPiBkaXYgewogIHBhZGRpbmc6IDNweCAzcHggM3B4IDNweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgdGQudzJ1aS1ncmlkLWRhdGEgPiBkaXYuZmxleGlibGUtcmVjb3JkIHsKICBoZWlnaHQ6IGF1dG87CiAgb3ZlcmZsb3c6IHZpc2libGU7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSB0ZC53MnVpLWdyaWQtZGF0YSAudzJ1aS1zaG93LWNoaWxkcmVuIHsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDEwcHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IC0xcHg7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIHRkOmxhc3QtY2hpbGQgewogIGJvcmRlci1yaWdodDogMHB4Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWNvbC1udW1iZXIgewogIHdpZHRoOiAzNHB4OwogIGNvbG9yOiAjNzc3OwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMzLCAyMzcsIDI0MywgMC41KTsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1jb2wtbnVtYmVyIGRpdiB7CiAgcGFkZGluZzogMHB4IDdweCAwcHggM3B4OwogIHRleHQtYWxpZ246IHJpZ2h0Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWNvbC1udW1iZXIudzJ1aS1oZWFkIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgLncydWktY29sLXNlbGVjdCB7CiAgd2lkdGg6IDI2cHg7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgLncydWktY29sLXNlbGVjdCBkaXYgewogIHBhZGRpbmc6IDBweCAwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWJvZHkgdGFibGUgLncydWktY29sLXNlbGVjdCBkaXYgaW5wdXRbdHlwZT1jaGVja2JveF0gewogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWNvbC1leHBhbmQgewogIHdpZHRoOiAyNnB4Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWNvbC1leHBhbmQgZGl2IHsKICBwYWRkaW5nOiAwcHggMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LXdlaWdodDogYm9sZDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1jb2wtb3JkZXIgewogIHdpZHRoOiAyNnB4Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IHRhYmxlIC53MnVpLWNvbC1vcmRlci53MnVpLWdyaWQtZGF0YSBkaXYgewogIGN1cnNvcjogbW92ZTsKICBoZWlnaHQ6IDE4cHg7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lQZ29nSUR4eVpXTjBJSE4wZVd4bFBTSm1hV3hzT2lBallXRmhPeUlnZUQwaU1DSWdlVDBpTkNJZ2FHVnBaMmgwUFNJeklpQjNhV1IwYUQwaU1UWWlQand2Y21WamRENEtJQ0E4Y21WamRDQnpkSGxzWlQwaVptbHNiRG9nSTJGaFlUc2lJSGc5SWpBaUlIazlJamtpSUdobGFXZG9kRDBpTXlJZ2QybGtkR2c5SWpFMklqNDhMM0psWTNRK0Nqd3ZjM1puUGc9PSIpOwogIGJhY2tncm91bmQtcG9zaXRpb246IDVweCAycHg7CiAgYmFja2dyb3VuZC1zaXplOiAxNHB4IDEycHg7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1jb2wtc2VsZWN0ZWQgewogIGJhY2tncm91bmQtY29sb3I6ICNkMWQxZDEgIWltcG9ydGFudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSB0YWJsZSAudzJ1aS1yb3ctc2VsZWN0ZWQgewogIGJhY2tncm91bmQtY29sb3I6ICNkMWQxZDEgIWltcG9ydGFudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSBkaXYudzJ1aS1jb2wtaGVhZGVyIHsKICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBhZGRpbmctcmlnaHQ6IDEwcHggIWltcG9ydGFudDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtYm9keSBkaXYudzJ1aS1jb2wtaGVhZGVyID4gZGl2LncydWktc29ydC11cCB7CiAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICM4RDk5QTc7CiAgbWFyZ2luLXRvcDogLTJweDsKICBtYXJnaW4tcmlnaHQ6IC03cHg7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IGRpdi53MnVpLWNvbC1oZWFkZXIgPiBkaXYudzJ1aS1zb3J0LWRvd24gewogIGJvcmRlcjogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3A6IDVweCBzb2xpZCAjOEQ5OUE3OwogIG1hcmdpbi10b3A6IDJweDsKICBtYXJnaW4tcmlnaHQ6IC03cHg7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWNvbC1ncm91cCB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtc2Nyb2xsMSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDBweDsKICBib3R0b206IDBweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkOwogIGJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWVtcHR5LW1zZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMjdweDsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1lbXB0eS1tc2cgPiBkaXYgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIHRvcDogNDUlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDUlKTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxM3B4OwogIGNvbG9yOiAjNjY2Owp9Ci53MnVpLWdyaWQgLncydWktY2hhbmdlZCB7CiAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaENnQUtBSkVBQUxBQUJmLy8vd0FBQUFBQUFDSDVCQUVBQUFJQUxBQUFBQUFLQUFvQUFBSVBsSThIeThtYnhJc1NVbnVwM3JRQUFEcz0pIG5vLXJlcGVhdCB0b3AgcmlnaHQ7Cn0KLncydWktZ3JpZCAudzJ1aS1lZGl0LWJveCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEwMDE7CiAgYm9yZGVyOiAycHggc29saWQgIzYyOTlEQTsKICBwb2ludGVyLWV2ZW50czogYXV0bzsKfQoudzJ1aS1ncmlkIC53MnVpLWVkaXRhYmxlIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogIG1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7Cn0KLncydWktZ3JpZCAudzJ1aS1lZGl0YWJsZSBpbnB1dCB7CiAgYm9yZGVyOiAwcHg7CiAgYm9yZGVyLXJhZGl1czogMHB4OwogIG1hcmdpbjogMHB4OwogIHBhZGRpbmc6IDRweCAzcHg7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwp9Ci53MnVpLWdyaWQgLncydWktZWRpdGFibGUgaW5wdXQudzJ1aS1zZWxlY3QgewogIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiAjZmZmOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1zdW1tYXJ5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm94LXNoYWRvdzogMHB4IC0xcHggNHB4ICNhYWE7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLXN1bW1hcnkgdGFibGUgewogIGNvbG9yOiBpbmhlcml0Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1zdW1tYXJ5IHRhYmxlIC53MnVpLW9kZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjVFQjsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtc3VtbWFyeSB0YWJsZSAudzJ1aS1ldmVuIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhGRkY1Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1mb290ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW46IDBweDsKICBwYWRkaW5nOiAwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGhlaWdodDogMjRweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHVzZXItc2VsZWN0OiB0ZXh0OwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7CiAgLW1vei11c2VyLXNlbGVjdDogdGV4dDsKICAtbXMtdXNlci1zZWxlY3Q6IHRleHQ7CiAgLW8tdXNlci1zZWxlY3Q6IHRleHQ7CiAgYm94LXNoYWRvdzogMHB4IC0xcHggNHB4ICNlZWU7CiAgY29sb3I6ICM0NDQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjhGODsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtZm9vdGVyIC53MnVpLWZvb3Rlci1sZWZ0IHsKICBmbG9hdDogbGVmdDsKICBwYWRkaW5nLXRvcDogNXB4OwogIHBhZGRpbmctbGVmdDogNXB4Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1mb290ZXIgLncydWktZm9vdGVyLXJpZ2h0IHsKICBmbG9hdDogcmlnaHQ7CiAgcGFkZGluZy10b3A6IDVweDsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7Cn0KLncydWktZ3JpZCAudzJ1aS1ncmlkLWZvb3RlciAudzJ1aS1mb290ZXItY2VudGVyIHsKICBwYWRkaW5nOiAycHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1mb290ZXIgLncydWktZm9vdGVyLWNlbnRlciAudzJ1aS1mb290ZXItbmF2IHsKICB3aWR0aDogMTEwcHg7CiAgbWFyZ2luOiAwIGF1dG87CiAgcGFkZGluZzogMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtZm9vdGVyIC53MnVpLWZvb3Rlci1jZW50ZXIgLncydWktZm9vdGVyLW5hdiBpbnB1dFt0eXBlPXRleHRdIHsKICBwYWRkaW5nOiAxcHggMnB4IDJweCAycHg7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHdpZHRoOiA0MHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudzJ1aS1ncmlkIC53MnVpLWdyaWQtZm9vdGVyIC53MnVpLWZvb3Rlci1jZW50ZXIgLncydWktZm9vdGVyLW5hdiBhLncydWktZm9vdGVyLWJ0biB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udC1zaXplOiAxMXB4OwogIGxpbmUtaGVpZ2h0OiAxNnB4OwogIHBhZGRpbmc6IDFweCA1cHg7CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAxOHB4OwogIG1hcmdpbi10b3A6IC0xcHg7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1mb290ZXIgLncydWktZm9vdGVyLWNlbnRlciAudzJ1aS1mb290ZXItbmF2IGEudzJ1aS1mb290ZXItYnRuOmhvdmVyIHsKICBjb2xvcjogIzAwMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUVDOEZGOwp9Ci53MnVpLWdyaWQgLncydWktZ3JpZC1mb2N1cy1pbnB1dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICB6LWluZGV4OiAtMTsKICBvcGFjaXR5OiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbjogMHB4OwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcmVzaXplOiBub25lOwogIGJvcmRlcjogMHB4Owp9Ci8qIFNwZWFkU2hlZXQgKi8KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ciB0ZC53MnVpLXNlbGVjdGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGNEZFICFpbXBvcnRhbnQ7Cn0KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ciB0ZC53MnVpLWluYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNkY5ICFpbXBvcnRhbnQ7Cn0KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ZCB7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZmVmZWY7Cn0KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLW9kZCwKLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtcmVjb3JkcyB0YWJsZSB0ci53MnVpLWV2ZW4sCi53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgdGFibGUgdHIudzJ1aS1vZGQ6aG92ZXIsCi53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgdGFibGUgdHIudzJ1aS1ldmVuOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0Owp9Ci53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLXJlY29yZHMgdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQgewogIGJvcmRlci10b3A6IDBweDsKICBib3JkZXItYm90dG9tOiAwcHg7Cn0KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgdGFibGUgdHIgdGQudzJ1aS1zZWxlY3RlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjRGRSAhaW1wb3J0YW50Owp9Ci53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIHRhYmxlIHRyIHRkLncydWktaW5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNGNEY2RjkgIWltcG9ydGFudDsKfQoudzJ1aS1zcyAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0ZCB7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZmVmZWY7Cn0KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgdGFibGUgdHIudzJ1aS1vZGQsCi53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIHRhYmxlIHRyLncydWktZXZlbiwKLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLWdyaWQtZnJlY29yZHMgdGFibGUgdHIudzJ1aS1vZGQ6aG92ZXIsCi53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1ncmlkLWZyZWNvcmRzIHRhYmxlIHRyLncydWktZXZlbjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKfQoudzJ1aS1zcyAudzJ1aS1ncmlkLWJvZHkgLncydWktZ3JpZC1mcmVjb3JkcyB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZCB7CiAgYm9yZGVyLWJvdHRvbTogMHB4Owp9Ci53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1zZWxlY3Rpb24gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxMDAwOwogIGJvcmRlcjogMnB4IHNvbGlkICM2Mjk5REE7CiAgLyogIzQ1N0ZDMjsgKi8KICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoudzJ1aS1zcyAudzJ1aS1ncmlkLWJvZHkgLncydWktc2VsZWN0aW9uIC53MnVpLXNlbGVjdGlvbi1yZXNpemVyIHsKICBjdXJzb3I6IGNyb3NzaGFpcjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAwcHg7CiAgcmlnaHQ6IDBweDsKICB3aWR0aDogNnB4OwogIGhlaWdodDogNnB4OwogIG1hcmdpbi1yaWdodDogLTNweDsKICBtYXJnaW4tYm90dG9tOiAtM3B4OwogIGJhY2tncm91bmQtY29sb3I6ICM0NTdGQzI7CiAgYm9yZGVyOiAwLjVweCBzb2xpZCAjZmZmOwogIG91dGxpbmU6IDFweCBzb2xpZCB3aGl0ZTsKICBwb2ludGVyLWV2ZW50czogYXV0bzsKfQoudzJ1aS1zcyAudzJ1aS1ncmlkLWJvZHkgLncydWktc2VsZWN0aW9uLncydWktaW5hY3RpdmUgewogIGJvcmRlcjogMnB4IHNvbGlkICNDMEMyQzU7Cn0KLncydWktc3MgLncydWktZ3JpZC1ib2R5IC53MnVpLXNlbGVjdGlvbi53MnVpLWluYWN0aXZlIC53MnVpLXNlbGVjdGlvbi1yZXNpemVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQjBCMEIwOwp9Ci53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1zb2Z0LXJhbmdlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Ci53MnVpLXNzIC53MnVpLWdyaWQtYm9keSAudzJ1aS1jaGFuZ2VkIHsKICBiYWNrZ3JvdW5kOiBpbmhlcml0OwogIC8qIGRvIG5vdCBzaG93IGNoYW5nZWQgZm9yIHNwcmVhZHNoZWV0ICovCn0KLncydWktaW5mby1idWJibGUgdGFibGUgewogIGZvbnQtc2l6ZTogMTFweDsKICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgY29sb3I6IHdoaXRlOwogIHRleHQtc2hhZG93OiAxcHggMXB4IHNvbGlkICM5OTk7Cn0KLncydWktaW5mby1idWJibGUgdGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgcGFkZGluZzogMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgY29sb3I6ICNkZGQ7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoudzJ1aS1pbmZvLWJ1YmJsZSB0YWJsZSB0ciB0ZDpsYXN0LWNoaWxkIHsKICB3aGl0ZS1zcGFjZTogcHJlOwogIHBhZGRpbmc6IDJweDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLXNlbGVjdC1maWVsZCB7CiAgcGFkZGluZzogNHB4IDBweDsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1zZWxlY3QtZmllbGQgdGFibGUgewogIGZvbnQtc2l6ZTogMTFweDsKICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgYm9yZGVyLXNwYWNpbmc6IDBweDsKICBib3JkZXItY29sbGFwc2U6IGJvcmRlci1jb2xsYXBzZTsKfQoudzJ1aS1vdmVybGF5IC53MnVpLXNlbGVjdC1maWVsZCB0YWJsZSB0ciB7CiAgaGVpZ2h0OiAyN3B4Owp9Ci53MnVpLW92ZXJsYXkgLncydWktc2VsZWN0LWZpZWxkIHRhYmxlIHRyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQjZENUZGOwp9Ci53MnVpLW92ZXJsYXkgLncydWktc2VsZWN0LWZpZWxkIHRhYmxlIHRyIHRkOm50aC1jaGlsZCgxKSB7CiAgd2lkdGg6IDI2cHg7CiAgcGFkZGluZy1yaWdodDogNnB4OwogIHRleHQtYWxpZ246IHJpZ2h0OwogIGNvbG9yOiAjODg4Owp9Ci53MnVpLW92ZXJsYXkgLncydWktc2VsZWN0LWZpZWxkIHRhYmxlIHRyIHRkOm50aC1jaGlsZCgyKSB7CiAgcGFkZGluZzogM3B4IDIwcHggM3B4IDBweDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWNvbC1vbi1vZmYgewogIHBhZGRpbmc6IDRweCAwcHg7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1jb2wtb24tb2ZmIHRhYmxlIHsKICBib3JkZXItc3BhY2luZzogMHB4OwogIGJvcmRlci1jb2xsYXBzZTogYm9yZGVyLWNvbGxhcHNlOwp9Ci53MnVpLW92ZXJsYXkgLncydWktY29sLW9uLW9mZiB0YWJsZSB0cjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0I2RDVGRjsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWNvbC1vbi1vZmYgdGFibGUgdGQgaW5wdXRbdHlwZT1jaGVja2JveF0gewogIG1hcmdpbjogM3B4IDJweCAycHggMnB4Owp9Ci53MnVpLW92ZXJsYXkgLncydWktY29sLW9uLW9mZiB0YWJsZSB0ZCBsYWJlbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDBweDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4Owp9Ci53MnVpLW92ZXJsYXkgLncydWktY29sLW9uLW9mZiB0YWJsZSB0ZDpmaXJzdC1jaGlsZCB7CiAgcGFkZGluZzogNHB4IDBweCA0cHggNnB4Owp9Ci53MnVpLW92ZXJsYXkgLncydWktY29sLW9uLW9mZiB0YWJsZSB0ZDpsYXN0LWNoaWxkIHsKICBwYWRkaW5nOiA0cHggNnB4IDRweCAwcHg7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzIHsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IDBweDsKICBib3JkZXItdG9wOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjZmMDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgewogIHBhZGRpbmc6IDRweDsKICBwYWRkaW5nLXRvcDogMTJweDsKICBib3JkZXItY29sbGFwc2U6IGJvcmRlci1jb2xsYXBzZTsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQgewogIHBhZGRpbmc6IDRweDsKICAvKiBmb3IgSUUgKi8KfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQuY2xvc2UtYnRuIHsKICB3aWR0aDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9Ci53MnVpLW92ZXJsYXkgLncydWktZ3JpZC1zZWFyY2hlcyB0YWJsZSB0ZC5jbG9zZS1idG4gYnV0dG9uIHsKICBtaW4td2lkdGg6IDI0cHg7CiAgaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQuY2FwdGlvbiB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgcGFkZGluZy1yaWdodDogNXB4OwogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNFOEU4RTM7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzIHRhYmxlIHRkLm9wZXJhdG9yIHsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IDBweCAxMHB4OwogIHBhZGRpbmctcmlnaHQ6IDVweDsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjRThFOEUzOwogIGhlaWdodDogMzFweDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQub3BlcmF0b3Igc2VsZWN0IHsKICB3aWR0aDogMTAwJTsKICBjb2xvcjogYmxhY2s7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzIHRhYmxlIHRkLm9wZXJhdG9yIHNlbGVjdDo6LW1zLWV4cGFuZCB7CiAgZGlzcGxheTogbm9uZTsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQudmFsdWUgewogIHBhZGRpbmctcmlnaHQ6IDVweDsKICBwYWRkaW5nLWxlZnQ6IDVweDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQudmFsdWUgaW5wdXRbdHlwZT10ZXh0XSB7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHBhZGRpbmc6IDNweDsKICBtYXJnaW4tcmlnaHQ6IDNweDsKICBoZWlnaHQ6IDIzcHg7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzIHRhYmxlIHRkLnZhbHVlIHNlbGVjdCB7CiAgcGFkZGluZzogM3B4OwogIG1hcmdpbi1yaWdodDogM3B4OwogIGhlaWdodDogMjNweDsKfQoudzJ1aS1vdmVybGF5IC53MnVpLWdyaWQtc2VhcmNoZXMgdGFibGUgdGQuYWN0aW9ucyB7CiAgYm9yZGVyLXJpZ2h0OiAwcHg7Cn0KLncydWktb3ZlcmxheSAudzJ1aS1ncmlkLXNlYXJjaGVzIHRhYmxlIHRkLmFjdGlvbnMgPiBkaXYgewogIG1hcmdpbjogLTdweDsKICBtYXJnaW4tdG9wOiAxNXB4OwogIHBhZGRpbmc6IDEzcHggMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUZFRkU5OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRThFOEUzOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBQb3B1cCAtLS0tCiovCi53MnVpLXBvcHVwIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgei1pbmRleDogMTYwMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbjogMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICM3Nzc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggIzU1NTsKfQoudzJ1aS1wb3B1cCwKLncydWktcG9wdXAgKiB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLncydWktcG9wdXAgLncydWktcG9wdXAtdGl0bGUgewogIHBhZGRpbmc6IDZweDsKICBib3JkZXItcmFkaXVzOiA2cHggNnB4IDBweCAwcHg7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI0VDRUNFQywgI0RGREZERik7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoI0VDRUNFQywgI0RGREZERik7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgjRUNFQ0VDLCAjREZERkRGKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoI0VDRUNFQywgI0RGREZERik7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNFQ0VDRUMsICNERkRGREYpOwogIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmVjZWNlYycsIGVuZENvbG9yc3RyPScjZmZkZmRmZGYnLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNCRkJGQkY7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG92ZXJmbG93OiBoaWRkZW47CiAgaGVpZ2h0OiAzMnB4OwogIGxlZnQ6IDBweDsKICByaWdodDogMHB4OwogIHRvcDogMHB4OwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIC1vLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwogIGN1cnNvcjogbW92ZTsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6ICM1NTU7CiAgei1pbmRleDogMzAwOwp9Ci53MnVpLXBvcHVwIC53MnVpLXBvcHVwLWJ1dHRvbiB7CiAgZmxvYXQ6IHJpZ2h0OwogIHdpZHRoOiAxOHB4OwogIGhlaWdodDogMThweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiAwcHg7CiAgbWFyZ2luOiAwcHggM3B4IDBweCAwcHg7CiAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBUUNBWUFBQUJRcnZ5eEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUFqMUpSRUZVZU5yc2xyOXJGRkVReHovelppL3F4U2dXMmxzcWtpWW9Ca3U1Um8xbzRVRktFWWtnU2F4U0NMWXFkdjVJRVZQWUNNSkp3RVJXckswQ0tob1E4aGRvYlFUalhXN25qY1hsWW5MdW5RUXUwWURUTE95K056dmZtZTk4WjhUZDJja1cyT0dXZE12UnZZZlQvUkdmQlBvQkJWcExLMEFFUGdWa2RHTDA2dnQvQ29CNW5CYVJFOEFYWUtYTnNRSXdhQjRmQXdPdEgrODhtbjRtN2lmTjR2VVllYldCS2tGS3FqSVYzTjlOakkyVXV3NUFSSTQ1ZkJhbkgrRjc3aUZuTjhKSEVUbVM2OFA5TkhCUU5Ud0hMOGZvYVNONFNxb3lBL1NaeUw0dHFRQVFCVllDTE9GWWxOeG1xMFdvclZMcE45T2U1TEt0MUNzZ1JWV3BBT2ZCNjZwaEJ1aFRrZXBTZGZuS1ZqYXhOSk1TV24vaWF3bVR0cGVEcDZwV0JwYUJvcXJNcW9ZVTZBT3FJYkZoeEdhM1I0VjhuZk5OS0xVRVN6WEpob0N2UUMrd0YvZ1cxQzVJaUMrMlhVYkQ1akEzcmQ0QzI2TlIzOTQ1SUEyaVJ6cVJKZ2RFbEpKbFNRb2NBS3JBRDJBLzZFdjNjTGFqak41OU1EV0h5S2wydm9PSTF6S2J2M1hqMmxDSEpGb3orTFh1Qm9JQWpuVWtsRXZKckREVDVMd21kaEc4YmxreUJ4UmpYU3U0bG9FMFg0VkV6blhLVjNTbm9PRk1CN1lVb2xCY2JjS05keHVQWFVCUHU4cGJMWHNLMGdoZWJWakVYZ05vWW1YTHRHTHV4ZDZlUFUrQVEyMEFhSXJiNERwRnljbVN2ODEvN1lzaU1nQXN0QjFrUWdFNDdPNEx1UW1DTndHT0I3VnhDYi9VUnNSU1RiaGttVTRpZkdpWkhkMVo1bTdmbnhvSVFTYUJvMzlZSlJaajlMR2I0eVB6WFdtMS85dm9YN2FmQXdBQzV0YWNEVEEyWGdBQUFBQkpSVTVFcmtKZ2dnPT0pIG5vLXJlcGVhdCBjZW50ZXIgbGVmdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggMHB4OwogIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoudzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1jbG9zZSB7CiAgbWFyZ2luLXRvcDogMHB4OwogIGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IDBweDsKfQoudzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1jbG9zZTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsKICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwp9Ci53MnVpLXBvcHVwIC53MnVpLXBvcHVwLW1heCB7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggMHB4Owp9Ci53MnVpLXBvcHVwIC53MnVpLXBvcHVwLW1heDpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsKICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwp9Ci53MnVpLXBvcHVwIC53MnVpLWJveCwKLncydWktcG9wdXAgLncydWktYm94LXRlbXAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwcHg7CiAgcmlnaHQ6IDBweDsKICB0b3A6IDMycHg7CiAgYm90dG9tOiA1MnB4OwogIHotaW5kZXg6IDEwMDsKfQoudzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1ib2R5IHsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEzMCU7CiAgcGFkZGluZzogMHB4IDdweCA3cHggN3B4OwogIGNvbG9yOiAjMDAwOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG92ZXJmbG93OiBhdXRvOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKfQoudzJ1aS1wb3B1cCAudzJ1aS1wb3B1cC1idXR0b25zIHsKICBwYWRkaW5nOiAxMnB4OwogIGJvcmRlci1yYWRpdXM6IDBweCAwcHggNnB4IDZweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2Q1ZDhkODsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYxOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IDUycHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgYm90dG9tOiAwcHg7CiAgei1pbmRleDogMjAwOwp9Ci53MnVpLXBvcHVwIC53MnVpLXBvcHVwLW5vLXRpdGxlIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDZweDsKICB0b3A6IDBweCAhaW1wb3J0YW50Owp9Ci53MnVpLXBvcHVwIC53MnVpLXBvcHVwLW5vLWJ1dHRvbnMgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDZweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4OwogIGJvdHRvbTogMHB4ICFpbXBvcnRhbnQ7Cn0KLncydWktcG9wdXAgLncydWktYWxlcnQtbXNnLAoudzJ1aS1wb3B1cCAudzJ1aS1jb25maXJtLW1zZyB7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLncydWktcG9wdXAgLncydWktcHJvbXB0IHRleHRhcmVhIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDUwcHg7CiAgcmVzaXplOiBub25lOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBTaWRlYmFyIC0tLS0KKi8KLncydWktc2lkZWJhciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGN1cnNvcjogZGVmYXVsdDsKICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50OwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci53MnVpLXNpZGViYXIgKiB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLncydWktc2lkZWJhciA+IGRpdiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLXRvcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDI7CiAgdG9wOiAwcHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLXRvcCAudzJ1aS1mbGF0LWxlZnQsCi53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci10b3AgLncydWktZmxhdC1yaWdodCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAycHg7CiAgdG9wOiAycHg7CiAgaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmc6IDVweDsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgYmFja2dyb3VuZC1zaXplOiAxNnB4IDEycHg7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLXRvcCAudzJ1aS1mbGF0LWxlZnQ6aG92ZXIsCi53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci10b3AgLncydWktZmxhdC1yaWdodDpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItdG9wIC53MnVpLWZsYXQtbGVmdCB7CiAgbGVmdDogYXV0bzsKICB3aWR0aDogMjVweDsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBUUFBQURaYzdKL0FBQUF6a2xFUVZSNEFlMlRIUkRFTUJDRnp5MXVjYXRiM2VKMnVoaTN1TlV0Ym5Hclc5emkxck9kTnpkdmRsN25EcHZZdC85L3I3Ky81MW15WlpmL3pYa0QyaU1ISFJTYjB4M29za3dNaWVLMDVQd0VYcVA0RXhTTDB3cDBST2FvMk9PdU1QT01kVUw2WFUxL29HTGNGV2IrTnF5VGQyVy9QLzJxVHI5aCtuRlhoT2tIWFJIaU55anJncC9VL1YrV2FRY2FOWTEzelpJMEExSnZjVnFBbnJHRFRkdER0WlVIakhJSmh4eFZMTjBpcVhnQ1AxbC83aDhVOWtjNmFieUo0L2VOV1BwR2RCditYZFVLMEs4Y252Y0JseTJyRHI3QzFIUUFBQUFBU1VWT1JLNUNZSUk9Jyk7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLXRvcCAudzJ1aS1mbGF0LXJpZ2h0IHsKICBsZWZ0OiAycHg7CiAgd2lkdGg6IGF1dG87CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVFBQUFEWmM3Si9BQUFBejBsRVFWUjRBZTJVRzdUR01CQ0VyMXZkNGxhM3VNVXR1bGkzdXRXdGJuR0xXOXppOWwvYkRNekpHN3UxMmNmSmZMdW5mMStVRUM5QnYwdlZRd0o4aGpSQ2FaYWZmbGIxQzlSUWY0T0QwZ1NERStpK1BpSkFhYkZoUWMxeTFBWVlzSkdMWTNsZ3hNMTd1V1BPNTZ5UGlGRHFWUFdnUnRwSUhTZDF6UG53a0JzZEk1OE9sTnd4NGZQMlgwVGdmTVRPb0hTZEtPWGtweU52RXlRaDd1bCs0c3d4SlNUUXV3TkR4ejY4bC91a1ZOYnUwTmVlbjVaK0t2eld4QkFxSGRzMzQ5dVBGSi9qVk9yUGp4VXErK09MZisyMHE1K25vWG8wQUFBQUFFbEZUa1N1UW1DQycpOwp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib3R0b20gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAyOwogIGJvdHRvbTogMHB4OwogIGxlZnQ6IDBweDsKICByaWdodDogMHB4Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogMTsKICBvdmVyZmxvdzogYXV0bzsKICB0b3A6IDBweDsKICBib3R0b206IDBweDsKICBsZWZ0OiAwcHg7CiAgcmlnaHQ6IDBweDsKICBwYWRkaW5nOiAycHggMHB4OwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW8tdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIG1hcmdpbjogMHB4IDNweDsKICBwYWRkaW5nOiAxcHggMHB4Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUgLncydWktbm9kZS10ZXh0LAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlIC53MnVpLW5vZGUtaW1hZ2UsCi53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUgLncydWktbm9kZS1pbWFnZSA+IHNwYW4gewogIGNvbG9yOiBibGFjazsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAwcHggI2ZmZjsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlIC53MnVpLW5vZGUtdGV4dDpob3ZlciwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZSAudzJ1aS1ub2RlLWltYWdlOmhvdmVyLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlIC53MnVpLW5vZGUtaW1hZ2UgPiBzcGFuOmhvdmVyIHsKICBjb2xvcjogaW5oZXJpdDsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlOmhvdmVyIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2Y5ZjlmOTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y5ZjlmOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUgLncydWktbm9kZS1pbWFnZSB7CiAgd2lkdGg6IDIycHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUgLncydWktbm9kZS1pbWFnZSA+IHNwYW4gewogIGNvbG9yOiAjODg4ICFpbXBvcnRhbnQ7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZSBpbnB1dCwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZSBidXR0b24gewogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLXNlbGVjdGVkLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1zZWxlY3RlZDpob3ZlciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQtY29sb3I6ICNFOUU5RTk7CiAgYm9yZGVyOiAxcHggc29saWQgI2RmZGZkZjsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1zZWxlY3RlZCAudzJ1aS1ub2RlLXRleHQsCi53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLXNlbGVjdGVkOmhvdmVyIC53MnVpLW5vZGUtdGV4dCwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktc2VsZWN0ZWQgLncydWktbm9kZS1pbWFnZSwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktc2VsZWN0ZWQ6aG92ZXIgLncydWktbm9kZS1pbWFnZSwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktc2VsZWN0ZWQgLncydWktbm9kZS1pbWFnZSA+IHNwYW4sCi53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLXNlbGVjdGVkOmhvdmVyIC53MnVpLW5vZGUtaW1hZ2UgPiBzcGFuIHsKICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50OwogIHRleHQtc2hhZG93OiAwcHggMHB4IDBweCAjZmZmICFpbXBvcnRhbnQ7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktc2VsZWN0ZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBib3JkZXI6IDFweCBkYXNoZWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0xcHg7CiAgYm90dG9tOiAtMXB4OwogIGxlZnQ6IC0xcHg7CiAgcmlnaHQ6IC0xcHg7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkudzJ1aS1mb2N1cyAudzJ1aS1zZWxlY3RlZDpiZWZvcmUgewogIGJvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktZGlzYWJsZWQsCi53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLWRpc2FibGVkOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLWRpc2FibGVkIC53MnVpLW5vZGUtdGV4dCwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktZGlzYWJsZWQ6aG92ZXIgLncydWktbm9kZS10ZXh0LAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1kaXNhYmxlZCAudzJ1aS1ub2RlLWltYWdlLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1kaXNhYmxlZDpob3ZlciAudzJ1aS1ub2RlLWltYWdlLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1kaXNhYmxlZCAudzJ1aS1ub2RlLWltYWdlID4gc3BhbiwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktZGlzYWJsZWQ6aG92ZXIgLncydWktbm9kZS1pbWFnZSA+IHNwYW4gewogIG9wYWNpdHk6IDAuNDsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApOwogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OwogIHRleHQtc2hhZG93OiAwcHggMHB4IDBweCAjZmZmICFpbXBvcnRhbnQ7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZS10ZXh0IHsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHBhZGRpbmc6IDVweCAwcHggNXB4IDNweDsKICBtYXJnaW46IDFweCAwcHggMXB4IDIycHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgZm9udC1zaXplOiAxMnB4Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUtZ3JvdXAgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiAxMHB4IDBweCAxMHB4IDEwcHg7CiAgbWFyZ2luOiAwcHg7CiAgY3Vyc29yOiBkZWZhdWx0OwogIGNvbG9yOiAjOGZhYmNhOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUtZ3JvdXAgOm50aC1jaGlsZCgxKSB7CiAgLyogc2hvdyAvIGhpZGUgbGluayAqLwogIG1hcmdpbi1yaWdodDogMTBweDsKICBmbG9hdDogcmlnaHQ7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUtZ3JvdXAgOm50aC1jaGlsZCgyKSB7CiAgLyogdGl0bGUgdGV4dCAqLwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLXN1YiB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgewogIHBhZGRpbmc6IDJweDsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktbm9kZS1pbWFnZSB7CiAgcGFkZGluZzogM3B4IDBweCAwcHggMHB4OwogIGZsb2F0OiBsZWZ0Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUtZGF0YSAudzJ1aS1ub2RlLWltYWdlID4gc3BhbiB7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiBibGFjazsKICB0ZXh0LXNoYWRvdzogMHB4IDBweCAwcHggI2ZmZjsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktbm9kZS1pbWFnZS53MnVpLWljb24gewogIG1hcmdpbi10b3A6IDNweDsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktbm9kZS1jb3VudCB7CiAgZmxvYXQ6IHJpZ2h0OwogIGJvcmRlcjogMXB4IHNvbGlkICNGNkZDRjQ7CiAgYm9yZGVyLXJhZGl1czogMjBweDsKICB3aWR0aDogYXV0bzsKICBoZWlnaHQ6IDE4cHg7CiAgcGFkZGluZzogMnB4IDdweDsKICBtYXJnaW46IDNweCA0cHggLTJweCAwOwogIGJhY2tncm91bmQtY29sb3I6ICNGMkY4RjA7CiAgY29sb3I6ICM2NjY7CiAgYm94LXNoYWRvdzogMHB4IDBweCAycHggIzQ3NDU0NTsKICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI0ZGRjsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMjsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktY29sbGFwc2VkLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktZXhwYW5kZWQgewogIGZsb2F0OiByaWdodDsKICB3aWR0aDogYXV0bzsKICBoZWlnaHQ6IDE4cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDI7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZS1kYXRhIC53MnVpLWNvbGxhcHNlZCBzcGFuLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktZXhwYW5kZWQgc3BhbiB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3gtc2hhZG93OiBub25lOwogIHBhZGRpbmc6IDJweCA1cHg7CiAgYm9yZGVyLXJhZGl1czogMHB4Owp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUtZGF0YSAudzJ1aS1jb2xsYXBzZWQgc3BhbjphZnRlciwKLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZS1kYXRhIC53MnVpLWV4cGFuZGVkIHNwYW46YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM4MDgwODA7CiAgYm9yZGVyLXRvcDogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICB0cmFuc2Zvcm06IHJvdGF0ZVooLTkwZGVnKTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBtYXJnaW4tbGVmdDogLTRweDsKICBtYXJnaW4tdG9wOiA3cHg7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZS1kYXRhIC53MnVpLWNvbGxhcHNlZCBzcGFuOmhvdmVyLAoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktZXhwYW5kZWQgc3Bhbjpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWRhdGEgLncydWktY29sbGFwc2VkIHNwYW46YWZ0ZXIgewogIHRyYW5zZm9ybTogcm90YXRlWig5MGRlZyk7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZS1mbGF0IHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAycHggMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudzJ1aS1zaWRlYmFyIC53MnVpLXNpZGViYXItYm9keSAudzJ1aS1ub2RlLWZsYXQgLncydWktbm9kZS1pbWFnZSB7CiAgZmxvYXQ6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdpZHRoOiBhdXRvOwogIHBhZGRpbmc6IDFweCAwcHg7Cn0KLncydWktc2lkZWJhciAudzJ1aS1zaWRlYmFyLWJvZHkgLncydWktbm9kZS1mbGF0IC53MnVpLW5vZGUtaW1hZ2UgPiBzcGFuIHsKICBmb250LXNpemU6IDE2cHg7CiAgY29sb3I6IGJsYWNrOwogIHRleHQtc2hhZG93OiAwcHggMHB4IDBweCAjZmZmOwp9Ci53MnVpLXNpZGViYXIgLncydWktc2lkZWJhci1ib2R5IC53MnVpLW5vZGUtZmxhdCAudzJ1aS1ub2RlLWltYWdlLncydWktaWNvbiB7CiAgd2lkdGg6IDIxcHg7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAtLS0tIFRhYnMgLS0tLQoqLwoudzJ1aS10YWJzIHsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOwogIHBhZGRpbmc6IDNweCAwcHg7Cn0KLncydWktdGFiczpub3QoLncydWktdGFicy11cCkgewogIHBhZGRpbmctYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoudzJ1aS10YWJzLncydWktdGFicy11cCB7CiAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50Owp9Ci53MnVpLXRhYnMgdGFibGUgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBzaWx2ZXI7CiAgcGFkZGluZzogMHB4IDdweDsKfQoudzJ1aS10YWJzIC53MnVpLXRhYiB7CiAgcGFkZGluZzogNnB4IDIwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGNvbG9yOiBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHNpbHZlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIG1hcmdpbjogMXB4IDFweCAtMXB4IDBweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAtby11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQoudzJ1aS10YWJzIC53MnVpLXRhYi5hY3RpdmUgewogIGNvbG9yOiBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9Ci53MnVpLXRhYnMgLncydWktdGFiLmNsb3NhYmxlIHsKICBwYWRkaW5nOiA2cHggMjhweCA2cHggMjBweDsKfQoudzJ1aS10YWJzIC53MnVpLXRhYi1jbG9zZSB7CiAgY29sb3I6ICM1NTU7CiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICNiYmI7CiAgZmxvYXQ6IHJpZ2h0OwogIG1hcmdpbjogNnB4IDRweCAwcHggMHB4OwogIHBhZGRpbmc6IDBweCAwcHggMHB4IDVweDsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDE2cHg7CiAgb3BhY2l0eTogMC45OwogIGJvcmRlcjogMHB4OwogIGJvcmRlci10b3A6IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiA5cHg7Cn0KLncydWktdGFicyAudzJ1aS10YWItY2xvc2U6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNENzdGN0Y7CiAgY29sb3I6IHdoaXRlOwp9Ci53MnVpLXRhYnMgLncydWktdGFiLWNsb3NlOmJlZm9yZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTJweDsKICBsZWZ0OiAwcHg7CiAgb3BhY2l0eTogMC42OwogIGNvbG9yOiBpbmhlcml0OwogIHRleHQtc2hhZG93OiBpbmhlcml0OwogIGNvbnRlbnQ6ICd4JzsKfQoudzJ1aS10YWJzLncydWktdGFicy11cCB0YWJsZSB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjMGMwYzA7CiAgYm9yZGVyLWJvdHRvbTogMHB4Owp9Ci53MnVpLXRhYnMudzJ1aS10YWJzLXVwIC53MnVpLXRhYiB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNDMEMwQzA7CiAgbWFyZ2luOiAtMXB4IDFweCAwcHggMHB4OwogIGJvcmRlci1yYWRpdXM6IDBweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKfQoudzJ1aS10YWJzLncydWktdGFicy11cCAudzJ1aS10YWIuYWN0aXZlIHsKICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9Ci53MnVpLXRhYnMudzJ1aS10YWJzLXVwIC53MnVpLXRhYi1jbG9zZSB7CiAgbWFyZ2luLXRvcDogNHB4Owp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogLS0tLSBUb29sYmFyIC0tLS0KKi8KLncydWktdG9vbGJhciB7CiAgbWFyZ2luOiAwcHg7CiAgcGFkZGluZzogMnB4OwogIG91dGxpbmU6IDBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjsKICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAtby11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQoudzJ1aS10b29sYmFyIC5kaXNhYmxlZCB7CiAgb3BhY2l0eTogMC4zOwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT0zMCk7Cn0KLncydWktdG9vbGJhciB0YWJsZSB7CiAgdGFibGUtbGF5b3V0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KLncydWktdG9vbGJhciB0YWJsZSB0ZCB7CiAgYm9yZGVyOiAwcHggIWltcG9ydGFudDsKfQoudzJ1aS10b29sYmFyIHRhYmxlLncydWktYnV0dG9uIHsKICBtYXJnaW46IDAgMXB4IDAgMDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgaGVpZ2h0OiAyNHB4OwogIG1pbi13aWR0aDogMjRweDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoudzJ1aS10b29sYmFyIHRhYmxlLncydWktYnV0dG9uIC53MnVpLXRiLWltYWdlIHsKICB3aWR0aDogMjJweDsKICBoZWlnaHQ6IDE2cHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDVweCAxcHggM3B4IDFweCFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAwIWltcG9ydGFudDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbiAudzJ1aS10Yi1pbWFnZSA+IHNwYW4gewogIGZvbnQtc2l6ZTogMTVweDsKICBkaXNwbGF5OiBibG9jazsKICBjb2xvcjogIzhEOTlBNzsKfQoudzJ1aS10b29sYmFyIHRhYmxlLncydWktYnV0dG9uIC53MnVpLXRiLWltYWdlID4gc3BhbjpiZWZvcmUgewogIHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDsKfQoudzJ1aS10b29sYmFyIHRhYmxlLncydWktYnV0dG9uIC53MnVpLXRiLXRleHQgewogIGNvbG9yOiBibGFjazsKICBwYWRkaW5nOiAwcHggNHB4IDBweCAycHg7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbiAudzJ1aS10Yi1jb3VudCB7CiAgcGFkZGluZzogMHB4IDNweCAwcHggMXB4Owp9Ci53MnVpLXRvb2xiYXIgdGFibGUudzJ1aS1idXR0b24gLncydWktdGItY291bnQgPiBzcGFuIHsKICBib3JkZXI6IDFweCBzb2xpZCAjRjZGQ0Y0OwogIGJvcmRlci1yYWRpdXM6IDExcHg7CiAgd2lkdGg6IGF1dG87CiAgaGVpZ2h0OiAxOHB4OwogIHBhZGRpbmc6IDBweCA2cHggMXB4IDZweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjJGOEYwOwogIGNvbG9yOiAjNjY2OwogIGJveC1zaGFkb3c6IDBweCAwcHggMnB4ICM0NzQ1NDU7CiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMHB4ICNGRkY7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbiAudzJ1aS10Yi1kb3duIHsKICBwYWRkaW5nOiAxcHggM3B4IDFweCAxcHg7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbiAudzJ1aS10Yi1kb3duID4gZGl2IHsKICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wOiA1cHggc29saWQgIzhEOTlBNzsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbi5vdmVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbi5vdmVyIC53MnVpLXRiLXRleHQgewogIGNvbG9yOiBibGFjazsKfQoudzJ1aS10b29sYmFyIHRhYmxlLncydWktYnV0dG9uLmRvd24gewogIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoudzJ1aS10b29sYmFyIHRhYmxlLncydWktYnV0dG9uLmRvd24gLncydWktdGItdGV4dCB7CiAgY29sb3I6ICM2NjY7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbi5jaGVja2VkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Ci53MnVpLXRvb2xiYXIgdGFibGUudzJ1aS1idXR0b24uY2hlY2tlZCAudzJ1aS10Yi10ZXh0IHsKICBjb2xvcjogYmxhY2s7Cn0KLncydWktdG9vbGJhciB0YWJsZS53MnVpLWJ1dHRvbiB0YWJsZSB7CiAgaGVpZ2h0OiAxN3B4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLncydWktdG9vbGJhciAudzJ1aS1icmVhayB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDE1MywgMTUzLCAxNTMsIDAuMSkgMCUsICM5OTkgNDAlLCAjOTk5IDYwJSwgcmdiYSgxNTMsIDE1MywgMTUzLCAwLjEpIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxNTMsIDE1MywgMTUzLCAwLjEpIDAlLCAjOTk5IDQwJSwgIzk5OSA2MCUsIHJnYmEoMTUzLCAxNTMsIDE1MywgMC4xKSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxNTMsIDE1MywgMTUzLCAwLjEpIDAlLCAjOTk5IDQwJSwgIzk5OSA2MCUsIHJnYmEoMTUzLCAxNTMsIDE1MywgMC4xKSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDE1MywgMTUzLCAxNTMsIDAuMSkgMCUsICM5OTkgNDAlLCAjOTk5IDYwJSwgcmdiYSgxNTMsIDE1MywgMTUzLCAwLjEpIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTUzLCAxNTMsIDE1MywgMC4xKSAwJSwgIzk5OSA0MCUsICM5OTkgNjAlLCByZ2JhKDE1MywgMTUzLCAxNTMsIDAuMSkgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmOTk5OTk5JywgZW5kQ29sb3JzdHI9JyNmZjk5OTk5OScsIEdyYWRpZW50VHlwZT0wKTsKICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAyMnB4OwogIHBhZGRpbmc6IDBweDsKICBtYXJnaW46IDBweCA2cHg7Cn0KLncydWktbGlzdHZpZXcgewogIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tcy1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudzJ1aS1saXN0dmlldyAqIHsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tcy1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudzJ1aS1saXN0dmlldyA+IHVsIHsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIGN1cnNvcjogZGVmYXVsdDsKfQoudzJ1aS1saXN0dmlldyA+IHVsID4gbGkgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIG92ZXJmbG93OiBoaWRkZW47CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAtby11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLncydWktbGlzdHZpZXcgPiB1bCA+IGxpLncydWktZm9jdXNlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgIzI2NjFBNjsKfQoudzJ1aS1saXN0dmlldyA+IHVsID4gbGkudzJ1aS1zZWxlY3RlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgIzI2NjFBNjsKfQoudzJ1aS1saXN0dmlldyA+IHVsID4gbGkudzJ1aS1zZWxlY3RlZCwKLncydWktbGlzdHZpZXcgPiB1bCA+IGxpLncydWktc2VsZWN0ZWQuaG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNFOUU5RTk7Cn0KLncydWktbGlzdHZpZXcgPiB1bCA+IGxpLncydWktc2VsZWN0ZWQgPiBkaXYgPiBkaXYuY2FwdGlvbiwKLncydWktbGlzdHZpZXcgPiB1bCA+IGxpLncydWktc2VsZWN0ZWQuaG92ZXIgPiBkaXYgPiBkaXYuY2FwdGlvbiB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLncydWktbGlzdHZpZXcgPiB1bCA+IGxpLncydWktc2VsZWN0ZWQgPiBkaXYgPiBkaXYuZGVzY3JpcHRpb24sCi53MnVpLWxpc3R2aWV3ID4gdWwgPiBsaS53MnVpLXNlbGVjdGVkLmhvdmVyID4gZGl2ID4gZGl2LmRlc2NyaXB0aW9uIHsKICBjb2xvcjogI0RERERERDsKfQoudzJ1aS1saXN0dmlldyA+IHVsID4gbGkudzJ1aS1zZWxlY3RlZCA+IGRpdiA+IGRpdi5leHRyYSA+IGRpdiA+IGRpdiwKLncydWktbGlzdHZpZXcgPiB1bCA+IGxpLncydWktc2VsZWN0ZWQuaG92ZXIgPiBkaXYgPiBkaXYuZXh0cmEgPiBkaXYgPiBkaXYgewogIGNvbG9yOiAjREREREREOwp9Ci53MnVpLWxpc3R2aWV3ID4gdWwgPiBsaS5ob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKICBib3JkZXI6IDFweCBzb2xpZCAjMjY2MUE2Owp9Ci53MnVpLWxpc3R2aWV3ID4gdWwgPiBsaSBkaXYgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLncydWktbGlzdHZpZXcgPiB1bCA+IGxpID4gZGl2ID4gZGl2LmNhcHRpb24gewogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgbWF4LWhlaWdodDogNTBweDsKICBjb2xvcjogYmxhY2s7CiAgZm9udC1zaXplOiAxMnB4Owp9Ci53MnVpLWxpc3R2aWV3ID4gdWwgPiBsaSA+IGRpdiA+IGRpdi5kZXNjcmlwdGlvbiB7CiAgZGlzcGxheTogbm9uZTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGNvbG9yOiAjNzc3Nzc3OwogIGZvbnQtc2l6ZTogMTJweDsKfQoudzJ1aS1saXN0dmlldyA+IHVsID4gbGkgPiBkaXYgPiBkaXYuZXh0cmEgewogIGRpc3BsYXk6IG5vbmU7Cn0KLncydWktbGlzdHZpZXcgPiB1bCA+IGxpID4gZGl2ID4gZGl2LmV4dHJhID4gZGl2ID4gZGl2IHsKICBjb2xvcjogIzc3Nzc3NzsKfQoudzJ1aS1pY29uLXNtYWxsID4gdWwgewogIHBhZGRpbmc6IDFweCAwcHggMHB4IDFweDsKfQoudzJ1aS1pY29uLXNtYWxsID4gdWwgPiBsaSB7CiAgbWFyZ2luOiAwcHggMXB4IDFweCAwcHg7CiAgcGFkZGluZzogMnB4OwogIHdpZHRoOiAyNTBweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci53MnVpLWljb24tc21hbGwgPiB1bCA+IGxpID4gZGl2ID4gZGl2LncydWktbGlzdHZpZXctaW1nIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDI2cHg7CiAgaGVpZ2h0OiAyMnB4OwogIGZvbnQtc2l6ZTogMjFweDsKICBtYXJnaW4tcmlnaHQ6IDJweDsKfQoudzJ1aS1pY29uLXNtYWxsID4gdWwgPiBsaSA+IGRpdiA+IGRpdi5jYXB0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLncydWktaWNvbi1tZWRpdW0gPiB1bCB7CiAgcGFkZGluZzogNHB4IDBweCAwcHggNHB4Owp9Ci53MnVpLWljb24tbWVkaXVtID4gdWwgPiBsaSB7CiAgbWFyZ2luOiAwcHggNHB4IDRweCAwcHg7CiAgcGFkZGluZzogNHB4OwogIHdpZHRoOiAxMDBweDsKfQoudzJ1aS1pY29uLW1lZGl1bSA+IHVsID4gbGkgPiBkaXYgPiBkaXYudzJ1aS1saXN0dmlldy1pbWcgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiA5MnB4OwogIGhlaWdodDogNjBweDsKICBmb250LXNpemU6IDU3cHg7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKfQoudzJ1aS1pY29uLWxhcmdlID4gdWwgewogIHBhZGRpbmc6IDRweCAwcHggMHB4IDRweDsKfQoudzJ1aS1pY29uLWxhcmdlID4gdWwgPiBsaSB7CiAgbWFyZ2luOiAwcHggNHB4IDRweCAwcHg7CiAgcGFkZGluZzogNHB4OwogIHdpZHRoOiAxNjBweDsKfQoudzJ1aS1pY29uLWxhcmdlID4gdWwgPiBsaSA+IGRpdiA+IGRpdi53MnVpLWxpc3R2aWV3LWltZyB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDE1MnB4OwogIGhlaWdodDogMTIwcHg7CiAgZm9udC1zaXplOiAxMTRweDsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwp9Ci53MnVpLWljb24tdGlsZSA+IHVsIHsKICBwYWRkaW5nOiAxcHggMHB4IDBweCAxcHg7Cn0KLncydWktaWNvbi10aWxlID4gdWwgPiBsaSB7CiAgbWFyZ2luOiAwcHggMXB4IDFweCAwcHg7CiAgcGFkZGluZzogNHB4OwogIHdpZHRoOiAyNTBweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci53MnVpLWljb24tdGlsZSA+IHVsID4gbGkgPiBkaXYgPiBkaXYudzJ1aS1saXN0dmlldy1pbWcgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogNzJweDsKICBoZWlnaHQ6IDYwcHg7CiAgZm9udC1zaXplOiA1N3B4OwogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbi1yaWdodDogNHB4Owp9Ci53MnVpLWljb24tdGlsZSA+IHVsID4gbGkgPiBkaXYgPiBkaXYuY2FwdGlvbiB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudzJ1aS1pY29uLXRpbGUgPiB1bCA+IGxpID4gZGl2ID4gZGl2LmRlc2NyaXB0aW9uIHsKICBkaXNwbGF5OiBibG9jazsKfQoudzJ1aS10YWJsZSA+IHVsIHsKICBwYWRkaW5nOiAwOwp9Ci53MnVpLXRhYmxlID4gdWwgPiBsaSB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMnB4OwogIGJvcmRlci1yYWRpdXM6IDBweDsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIGxpZ2h0Z3JheTsKfQoudzJ1aS10YWJsZSA+IHVsID4gbGkgPiBkaXYgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci53MnVpLXRhYmxlID4gdWwgPiBsaSA+IGRpdiA+IGRpdi53MnVpLWxpc3R2aWV3LWltZyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAzOHB4OwogIGhlaWdodDogMzJweDsKICBmb250LXNpemU6IDMxcHg7CiAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KLncydWktdGFibGUgPiB1bCA+IGxpID4gZGl2ID4gZGl2LmNhcHRpb24gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoudzJ1aS10YWJsZSA+IHVsID4gbGkgPiBkaXYgPiBkaXYuZXh0cmEgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Ci53MnVpLXRhYmxlID4gdWwgPiBsaSA+IGRpdiA+IGRpdi5leHRyYSA+IGRpdjpiZWZvcmUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDA7CiAgY29udGVudDogJyc7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoudzJ1aS10YWJsZSA+IHVsID4gbGkgPiBkaXYgPiBkaXYuZXh0cmEgPiBkaXYgewogIGRpc3BsYXk6IGlubGluZTsKfQoudzJ1aS10YWJsZSA+IHVsID4gbGkgPiBkaXYgPiBkaXYuZXh0cmEgPiBkaXYgPiBkaXYgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEycHg7Cn0KLncydWktdGFibGUgPiB1bCA+IGxpLncydWktc2VsZWN0ZWQgZGl2LmV4dHJhLAoudzJ1aS10YWJsZSA+IHVsID4gbGkudzJ1aS1zZWxlY3RlZC5ob3ZlciBkaXYuZXh0cmEgewogIGJhY2tncm91bmQtY29sb3I6ICNFOUU5RTk7Cn0KLncydWktdGFibGUgPiB1bCA+IGxpLmhvdmVyIGRpdi5leHRyYSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKfQoudzJ1aS1saXN0dmlldyA+IHVsID4gbGkgZGl2Lmljb24tbm9uZSB7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDIsIDEwMiwgMTAyLCAwLjM1KTsKfQo=",
  53. {"status":false}
  54. ],
  55. [
  56. "w2ui_1.5",
  57. "ZnVuY3Rpb24gaW5zdGFsbFcyVUkoKQp7CiAgICB2YXIgY3NzID0gTU9ELm1vZHVsZSgidzJ1aS5taW4uY3NzXzEuNSIpLmNvZGU2NDsKICAgIHZhciBqcyA9IE1PRC5tb2R1bGUoIncydWkubWluLmpzXzEuNSIpLmNvZGU2NDsKCiAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CiAgICBzdHlsZS5pbm5lckhUTUwgPSBtdXJvbS5hdG9iKGNzcyk7CiAgICBldmFsKG11cm9tLmF0b2IoanMpKTsKfQoKaW5zdGFsbFcyVUkoKTs=",
  58. {"status":true}
  59. ],
  60. [
  61. "ModulesList_1.0.0",
  62. "Ly8g0KPQv9GA0LDQstC70LXQvdC40LUg0LzQvtC00YPQu9GP0LzQuCDQstC40LfRg9Cw0LvRjNC90L4KLy8gTWFuYWdlIG1vZHVsZXMgdmlzdWFsbHkKCmZ1bmN0aW9uIE1vZHVsZXNMaXN0KHBhcmVudCkKewogICAgdGhpcy5tb2QgPSBNT0Q7CiAgICB0aGlzLmNyZWF0ZVVJKHBhcmVudCk7CiAgICB0aGlzLnJlZnJlc2goKTsKICAgIHRoaXMudHJhY2tDaGFuZ2VzKCk7CiAgICB0aGlzLnRyYWNrQW5kUmVwb3J0U2VsZWN0aW9uKCk7Cn0KdmFyINCh0L/QuNGB0L7QutCc0L7QtNGD0LvQtdC5ID0gTW9kdWxlc0xpc3Q7CgovKgogKgogKiDQodC+0LfQtNCw0YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDQuNC90YLQtdGA0YTQtdC50YEKICogQ3JlYXRlIHVzZXIgaW50ZXJmYWNlCiAqCiAqLwpNb2R1bGVzTGlzdC5wcm90b3R5cGUuY3JlYXRlVUkgPSBmdW5jdGlvbihwYXJlbnQpCnsKICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICByb290LmlkID0gIk1vZHVsZXNMaXN0IgogICAgcGFyZW50LmFwcGVuZENoaWxkKHJvb3QpOwogICAgdmFyIGNzcyA9CmAKI01vZHVsZXNMaXN0CnsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CmA7CiAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwogICAgc3R5bGUuaW5uZXJIVE1MID0gY3NzOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CgogICAgCiAgICAkKCIjTW9kdWxlc0xpc3QiKS53MmdyaWQoeyAKICAgICAgICBuYW1lOiAiTW9kdWxlc0xpc3QiLAogICAgICAgIHNob3c6IHsKICAgICAgICAgICAgbGluZU51bWJlcnM6IHRydWUsCiAgICAgICAgfSwKICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsCiAgICAgICAgcmVvcmRlclJvd3M6IHRydWUsCiAgICAgICAgY29sdW1uczogWyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgeyBmaWVsZDogInN0YXR1cyIsIHRleHQ6ICLQmNGB0L/QvtC70L3Rj9GC0YwiLCBzaXplOiAiMTBlbSIsIHNvcnRhYmxlOiB0cnVlLCBlZGl0YWJsZTogeyB0eXBlOiAiY2hlY2tib3giLCBzdHlsZTogInRleHQtYWxpZ246IGNlbnRlciIgfSB9LAogICAgICAgICAgICB7IGZpZWxkOiAibmFtZSIsIHRleHQ6ICLQmNC80Y8iLCBzaXplOiAiMTAwJSIsIHNvcnRhYmxlOiB0cnVlLCBlZGl0YWJsZTogeyB0eXBlOiAidGV4dCIgfSB9LAogICAgICAgIF0KICAgIH0pOwogICAgdGhpcy5ncmlkID0gdzJ1aVsiTW9kdWxlc0xpc3QiXTsKfTsKCi8qCiAqCiAqINCe0LHQvdC+0LLQuNGC0Ywg0YHQv9C40YHQvtC6INC80L7QtNGD0LvQtdC5CiAqIFJlZnJlc2ggbW9kdWxlIGxpc3QKICoKICovCk1vZHVsZXNMaXN0LnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgcmVjb3JkcyA9IFtdOwogICAgZm9yICh2YXIgaSBpbiB0aGlzLm1vZC5tb2R1bGVzKQogICAgewogICAgICAgIHZhciBtID0gdGhpcy5tb2QubW9kdWxlc1tpXTsKICAgICAgICB2YXIgaWQgPSBtdXJvbS51dWlkKCk7CiAgICAgICAgcmVjb3Jkcy5wdXNoKAogICAgICAgICAgICB7IHJlY2lkOiBpZCwgc3RhdHVzOiBtLnN0YXR1cywgbmFtZTogbS5uYW1lIH0KICAgICAgICApOwogICAgfQogICAgdGhpcy5ncmlkLmNsZWFyKCk7CiAgICB0aGlzLmdyaWQuYWRkKHJlY29yZHMpOwp9OwpNb2R1bGVzTGlzdC5wcm90b3R5cGUu0L7QsdC90L7QstC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgdGhpcy5yZWZyZXNoKCk7Cn07CgovKgogKgogKiDQn9C10YDQtdCy0L7QtCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNCwINC30LDQv9C40YHQuCDRgdC10YLQutC4INCyINC/0L7RgNGP0LTQutC+0LLRi9C5INC90L7QvNC10YAKICogQ29udmVydCBncmlkIHJlY29yZCBpZCBpbnRvIG9yZGVyIG51bWJlcgogKgogKi8KTW9kdWxlc0xpc3QucHJvdG90eXBlLmlkVG9PcmRlciA9IGZ1bmN0aW9uKGlkKQp7CiAgICBmb3IgKHZhciBpIGluIHRoaXMuZ3JpZC5yZWNvcmRzKQogICAgewogICAgICAgIHZhciByID0gdGhpcy5ncmlkLnJlY29yZHNbaV07CiAgICAgICAgaWYgKHIucmVjaWQgPT0gaWQpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBudWxsOwp9OwpNb2R1bGVzTGlzdC5wcm90b3R5cGUu0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQktCd0L7QvNC10YAgPSBmdW5jdGlvbijQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCkKewogICAgcmV0dXJuIHRoaXMuaWRUb09yZGVyKNC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAKTsKfTsKCi8qCiAqCiAqINCg0LXQsNC60YbQuNGPINC90LAg0LjQt9C80LXQvdC10L3QuNC1INGB0LLQvtC50YHRgtCy0LAgKNC40LzRjywg0YHRgtCw0YLRg9GBKQogKiBSZWFjdGlvbiB0byBwcm9wZXJ0eSBjaGFuZ2UgKG5hbWUsIHN0YXR1cykKICoKICovCk1vZHVsZXNMaXN0LnByb3RvdHlwZS5yZWFjdFRvUHJvcGVydHlDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKewogICAgdmFyIG1vZHVsZSA9IHRoaXMubW9kLm1vZHVsZXNbZXZlbnQuaW5kZXhdOwogICAgLy8gU3RhdHVzLgogICAgaWYgKGV2ZW50LmNvbHVtbiA9PSAwKQogICAgewogICAgICAgIHZhciBzdGF0dXMgPSBldmVudC52YWx1ZV9uZXc7CiAgICAgICAgbW9kdWxlLnN0YXR1cyA9IHN0YXR1czsKICAgIH0KICAgIC8vIE5hbWUuCiAgICBlbHNlIGlmIChldmVudC5jb2x1bW4gPT0gMSkKICAgIHsKICAgICAgICB2YXIgbmFtZSA9IGV2ZW50LnZhbHVlX25ldzsKICAgICAgICBtb2R1bGUubmFtZSA9IG5hbWU7CiAgICB9Cn07CgovKgogKgogKiDQoNC10LDQutGG0LjRjyDQvdCwINC40LfQvNC10L3QtdC90LjQtSDQvdC+0LzQtdGA0LAKICogUmVhY3Rpb24gdG8gb3JkZXIgY2hhbmdlCiAqCiAqLwpNb2R1bGVzTGlzdC5wcm90b3R5cGUucmVhY3RUb09yZGVyQ2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpCnsKICAgIHZhciBpZFdhcyA9IGV2ZW50LnJlY2lkOwogICAgdmFyIGlkTm93ID0gZXZlbnQubW92ZUFmdGVyOwogICAgLy8gTm90aGluZyBjaGFuZ2VkLgogICAgaWYgKGlkTm93ID09IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIG9yZGVyV2FzID0gdGhpcy5pZFRvT3JkZXIoaWRXYXMpOwogICAgdmFyIG9yZGVyTm93ID0gbnVsbDsKICAgIGlmIChpZE5vdyAhPSAiYm90dG9tIikKICAgIHsKICAgICAgICBvcmRlck5vdyA9IHRoaXMuaWRUb09yZGVyKGlkTm93KTsKICAgIH0KICAgIHRoaXMubW9kLm1vdmUob3JkZXJXYXMsIG9yZGVyTm93KTsKfTsKCi8qCiAqCiAqINCh0LvQtdC00LjRgtGMINC30LAg0LjQt9C80LXQvdC10L3QuNGP0LzQuCAo0YHRgtCw0YLRg9GB0LAsINC40LzQtdC90LgsINC90L7QvNC10YDQsCkKICogVHJhY2sgY2hhbmdlcyAob2Ygc3RhdHVzLCBuYW1lLCBpZCkKICoKICovCk1vZHVsZXNMaXN0LnByb3RvdHlwZS50cmFja0NoYW5nZXMgPSBmdW5jdGlvbigpCnsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHRoaXMuZ3JpZC5vbigiY2hhbmdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBzZWxmLnJlYWN0VG9Qcm9wZXJ0eUNoYW5nZShldmVudCk7CiAgICB9KTsKICAgIHRoaXMuZ3JpZC5vbigicmVzdG9yZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgc2VsZi5yZWFjdFRvUHJvcGVydHlDaGFuZ2UoZXZlbnQpOwogICAgfSk7CiAgICB0aGlzLmdyaWQub24oInJlb3JkZXJSb3ciLCBmdW5jdGlvbihldmVudCkgewogICAgICAgIHNlbGYucmVhY3RUb09yZGVyQ2hhbmdlKGV2ZW50KTsKICAgIH0pOwp9OwoKLyoKICoKICog0JLRi9Cx0YDQsNGC0Ywg0LzQvtC00YPQu9GMINCyINGB0LXRgtC60LUKICogU2VsZWN0IGEgbW9kdWxlIGluIGdyaWQKICoKICovCk1vZHVsZXNMaXN0LnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbihpZCkKewogICAgdmFyIHJlY2lkID0gdGhpcy5ncmlkLnJlY29yZHNbaWRdLnJlY2lkOwogICAgdGhpcy5ncmlkLnNlbGVjdChyZWNpZCk7CiAgICB0aGlzLmdyaWQuc2Nyb2xsSW50b1ZpZXcoaWQsIG51bGwsIHRydWUpOwp9Ck1vZHVsZXNMaXN0LnByb3RvdHlwZS7QstGL0LHRgNCw0YLRjCA9IGZ1bmN0aW9uKNC90L7QvNC10YApCnsKICAgIHRoaXMuc2VsZWN0KNC90L7QvNC10YApOwp9CgovKgogKgogKiDQktGL0LHRgNCw0YLRjCDQv9C+0YHQu9C10LTQvdC40Lkg0LzQvtC00YPQu9GMINCyINGB0LXRgtC60LUKICogU2VsZWN0IHRoZSBsYXN0IG1vZHVsZSBpbiBncmlkCiAqCiAqLwpNb2R1bGVzTGlzdC5wcm90b3R5cGUuc2VsZWN0TGFzdCA9IGZ1bmN0aW9uKCkKewogICAgdmFyIGlkID0gdGhpcy5ncmlkLnJlY29yZHMubGVuZ3RoIC0gMTsKICAgIHRoaXMuc2VsZWN0KGlkKTsKfQpNb2R1bGVzTGlzdC5wcm90b3R5cGUu0LLRi9Cx0YDQsNGC0YzQn9C+0YHQu9C10LTQvdC40LkgPSBmdW5jdGlvbigpCnsKICAgIHRoaXMuc2VsZWN0TGFzdCgpOwp9CgovKgogKgogKiDQndC+0LzQtdGAINCy0YvQsdGA0LDQvdC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAKICogU2VsZWN0ZWQgaXRlbSBvcmRlcgogKgogKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KE1vZHVsZXNMaXN0LnByb3RvdHlwZSwgInNlbGVjdGVkT3JkZXIiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgcmVjaWQgPSB0aGlzLmdyaWQuZ2V0U2VsZWN0aW9uKClbMF07CiAgICAgICAgaWYgKHJlY2lkKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuaWRUb09yZGVyKHJlY2lkKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTW9kdWxlc0xpc3QucHJvdG90eXBlLCAi0LLRi9Cx0YDQsNC90L3Ri9C50J3QvtC80LXRgCIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkT3JkZXI7CiAgICB9Cn0pOwogCi8qCiAqCiAqINCh0LvQtdC00LjRgtGMINC30LAg0LLRi9Cx0L7RgNC+0Lwg0Lgg0YHQvtC+0LHRidCw0YLRjCDQviDQvdGR0LwKICogVHJhY2sgc2VsZWN0aW9uIGFuZCByZXBvcnQgaXQKICoKICovCk1vZHVsZXNMaXN0LnByb3RvdHlwZS50cmFja0FuZFJlcG9ydFNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkKewogICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkID0gbmV3IFJlcG9ydGVyKCk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgItC40LfQvNC10L3QuNC70LjQktGL0LHQvtGAIiwgewogICAgICAgIGdldDogZnVuY3Rpb24oKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZDsKICAgICAgICB9CiAgICB9KTsKICAgIAogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgZnVuY3Rpb24gcmVwb3J0KGV2ZW50KQogICAgewogICAgICAgIGV2ZW50Lm9uQ29tcGxldGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2VsZi5zZWxlY3Rpb25DaGFuZ2VkLnJlcG9ydCgpOwogICAgICAgIH07CiAgICB9CiAgICB0aGlzLmdyaWQub24oInNlbGVjdCIsIHJlcG9ydCk7CiAgICB0aGlzLmdyaWQub24oInVuc2VsZWN0IiwgcmVwb3J0KTsKfTs=",
  63. {"status":true}
  64. ],
  65. [
  66. "uikit.min.css_3.2.0",
  67. "LyohIFVJa2l0IDMuMi4wIHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTkgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqL2h0bWx7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sIkhlbHZldGljYSBOZXVlIixBcmlhbCwiTm90byBTYW5zIixzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzY2Nn1ib2R5e21hcmdpbjowfWE6YWN0aXZlLGE6aG92ZXJ7b3V0bGluZTowfS51ay1saW5rLGF7Y29sb3I6IzFlODdmMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0udWstbGluay10b2dnbGU6Zm9jdXMgLnVrLWxpbmssLnVrLWxpbmstdG9nZ2xlOmhvdmVyIC51ay1saW5rLC51ay1saW5rOmhvdmVyLGE6aG92ZXJ7Y29sb3I6IzBmNmVjZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWFiYnJbdGl0bGVde3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXN0eWxlOmRvdHRlZH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Om5vdChwcmUpPmNvZGUsOm5vdChwcmUpPmtiZCw6bm90KHByZSk+c2FtcHtmb250LWZhbWlseTpDb25zb2xhcyxtb25hY28sbW9ub3NwYWNlO2ZvbnQtc2l6ZTouODc1cmVtO2NvbG9yOiNmMDUwNmU7d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6MnB4IDZweDtiYWNrZ3JvdW5kOiNmOGY4Zjh9ZW17Y29sb3I6I2YwNTA2ZX1pbnN7YmFja2dyb3VuZDojZmZkO2NvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9bWFya3tiYWNrZ3JvdW5kOiNmZmQ7Y29sb3I6IzY2Nn1xe2ZvbnQtc3R5bGU6aXRhbGljfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vwe3RvcDotLjVlbX1zdWJ7Ym90dG9tOi0uMjVlbX1hdWRpbyxjYW52YXMsaWZyYW1lLGltZyxzdmcsdmlkZW97dmVydGljYWwtYWxpZ246bWlkZGxlfWNhbnZhcyxpbWcsdmlkZW97bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG87Ym94LXNpemluZzpib3JkZXItYm94fUBzdXBwb3J0cyAoZGlzcGxheTpibG9jayl7c3Zne21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveH19c3ZnOm5vdCg6cm9vdCl7b3ZlcmZsb3c6aGlkZGVufWltZzpub3QoW3NyY10pe21pbi13aWR0aDoxcHg7dmlzaWJpbGl0eTpoaWRkZW59aWZyYW1le2JvcmRlcjowfWFkZHJlc3MsZGwsZmllbGRzZXQsZmlndXJlLG9sLHAscHJlLHVse21hcmdpbjowIDAgMjBweCAwfSorYWRkcmVzcywqK2RsLCorZmllbGRzZXQsKitmaWd1cmUsKitvbCwqK3AsKitwcmUsKit1bHttYXJnaW4tdG9wOjIwcHh9LnVrLWgxLC51ay1oMiwudWstaDMsLnVrLWg0LC51ay1oNSwudWstaDYsLnVrLWhlYWRpbmctMnhsYXJnZSwudWstaGVhZGluZy1sYXJnZSwudWstaGVhZGluZy1tZWRpdW0sLnVrLWhlYWRpbmctc21hbGwsLnVrLWhlYWRpbmcteGxhcmdlLGgxLGgyLGgzLGg0LGg1LGg2e21hcmdpbjowIDAgMjBweCAwO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsIk5vdG8gU2FucyIsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiO2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojMzMzO3RleHQtdHJhbnNmb3JtOm5vbmV9KisudWstaDEsKisudWstaDIsKisudWstaDMsKisudWstaDQsKisudWstaDUsKisudWstaDYsKisudWstaGVhZGluZy0yeGxhcmdlLCorLnVrLWhlYWRpbmctbGFyZ2UsKisudWstaGVhZGluZy1tZWRpdW0sKisudWstaGVhZGluZy1zbWFsbCwqKy51ay1oZWFkaW5nLXhsYXJnZSwqK2gxLCoraDIsKitoMywqK2g0LCoraDUsKitoNnttYXJnaW4tdG9wOjQwcHh9LnVrLWgxLGgxe2ZvbnQtc2l6ZToyLjIzMTI1cmVtO2xpbmUtaGVpZ2h0OjEuMn0udWstaDIsaDJ7Zm9udC1zaXplOjEuN3JlbTtsaW5lLWhlaWdodDoxLjN9LnVrLWgzLGgze2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MS40fS51ay1oNCxoNHtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxLjR9LnVrLWg1LGg1e2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNH0udWstaDYsaDZ7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstaDEsaDF7Zm9udC1zaXplOjIuNjI1cmVtfS51ay1oMixoMntmb250LXNpemU6MnJlbX19b2wsdWx7cGFkZGluZy1sZWZ0OjMwcHh9b2w+bGk+b2wsb2w+bGk+dWwsdWw+bGk+b2wsdWw+bGk+dWx7bWFyZ2luOjB9ZHR7Zm9udC13ZWlnaHQ6NzAwfWRke21hcmdpbi1sZWZ0OjB9LnVrLWhyLGhye292ZXJmbG93OnZpc2libGU7dGV4dC1hbGlnbjppbmhlcml0O21hcmdpbjowIDAgMjBweCAwO2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9KisudWstaHIsKitocnttYXJnaW4tdG9wOjIwcHh9YWRkcmVzc3tmb250LXN0eWxlOm5vcm1hbH1ibG9ja3F1b3Rle21hcmdpbjowIDAgMjBweCAwO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNTtmb250LXN0eWxlOml0YWxpYztjb2xvcjojMzMzfSorYmxvY2txdW90ZXttYXJnaW4tdG9wOjIwcHh9YmxvY2txdW90ZSBwOmxhc3Qtb2YtdHlwZXttYXJnaW4tYm90dG9tOjB9YmxvY2txdW90ZSBmb290ZXJ7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojNjY2fWJsb2NrcXVvdGUgZm9vdGVyOjpiZWZvcmV7Y29udGVudDoi0YLQkNCkICJ9cHJle2ZvbnQ6Ljg3NXJlbS8xLjUgQ29uc29sYXMsbW9uYWNvLG1vbm9zcGFjZTtjb2xvcjojNjY2Oy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0O292ZXJmbG93OmF1dG87cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiNmZmZ9cHJlIGNvZGV7Zm9udC1mYW1pbHk6Q29uc29sYXMsbW9uYWNvLG1vbm9zcGFjZX06OnNlbGVjdGlvbntiYWNrZ3JvdW5kOiMzOWY7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzpub25lfWRldGFpbHMsbWFpbntkaXNwbGF5OmJsb2NrfXN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW19dGVtcGxhdGV7ZGlzcGxheTpub25lfS51ay1icmVha3BvaW50LXM6OmJlZm9yZXtjb250ZW50Oic2NDBweCd9LnVrLWJyZWFrcG9pbnQtbTo6YmVmb3Jle2NvbnRlbnQ6Jzk2MHB4J30udWstYnJlYWtwb2ludC1sOjpiZWZvcmV7Y29udGVudDonMTIwMHB4J30udWstYnJlYWtwb2ludC14bDo6YmVmb3Jle2NvbnRlbnQ6JzE2MDBweCd9OnJvb3R7LS11ay1icmVha3BvaW50LXM6NjQwcHg7LS11ay1icmVha3BvaW50LW06OTYwcHg7LS11ay1icmVha3BvaW50LWw6MTIwMHB4Oy0tdWstYnJlYWtwb2ludC14bDoxNjAwcHh9LnVrLWxpbmstbXV0ZWQgYSxhLnVrLWxpbmstbXV0ZWR7Y29sb3I6Izk5OX0udWstbGluay1tdXRlZCBhOmhvdmVyLC51ay1saW5rLXRvZ2dsZTpmb2N1cyAudWstbGluay1tdXRlZCwudWstbGluay10b2dnbGU6aG92ZXIgLnVrLWxpbmstbXV0ZWQsYS51ay1saW5rLW11dGVkOmhvdmVye2NvbG9yOiM2NjZ9LnVrLWxpbmstdGV4dCBhLGEudWstbGluay10ZXh0e2NvbG9yOmluaGVyaXR9LnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1saW5rLXRvZ2dsZTpmb2N1cyAudWstbGluay10ZXh0LC51ay1saW5rLXRvZ2dsZTpob3ZlciAudWstbGluay10ZXh0LGEudWstbGluay10ZXh0OmhvdmVye2NvbG9yOiM5OTl9LnVrLWxpbmstaGVhZGluZyBhLGEudWstbGluay1oZWFkaW5ne2NvbG9yOmluaGVyaXR9LnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1saW5rLXRvZ2dsZTpmb2N1cyAudWstbGluay1oZWFkaW5nLC51ay1saW5rLXRvZ2dsZTpob3ZlciAudWstbGluay1oZWFkaW5nLGEudWstbGluay1oZWFkaW5nOmhvdmVye2NvbG9yOiMxZTg3ZjA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVrLWxpbmstcmVzZXQgYSxhLnVrLWxpbmstcmVzZXR7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fS51ay1saW5rLXRvZ2dsZXtjb2xvcjppbmhlcml0IWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnR9LnVrLWxpbmstdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0udWstaGVhZGluZy1zbWFsbHtmb250LXNpemU6Mi42cmVtO2xpbmUtaGVpZ2h0OjEuMn0udWstaGVhZGluZy1tZWRpdW17Zm9udC1zaXplOjIuODg3NXJlbTtsaW5lLWhlaWdodDoxLjF9LnVrLWhlYWRpbmctbGFyZ2V7Zm9udC1zaXplOjMuNHJlbTtsaW5lLWhlaWdodDoxLjF9LnVrLWhlYWRpbmcteGxhcmdle2ZvbnQtc2l6ZTo0cmVtO2xpbmUtaGVpZ2h0OjF9LnVrLWhlYWRpbmctMnhsYXJnZXtmb250LXNpemU6NnJlbTtsaW5lLWhlaWdodDoxfUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstaGVhZGluZy1zbWFsbHtmb250LXNpemU6My4yNXJlbX0udWstaGVhZGluZy1tZWRpdW17Zm9udC1zaXplOjMuNXJlbX0udWstaGVhZGluZy1sYXJnZXtmb250LXNpemU6NHJlbX0udWstaGVhZGluZy14bGFyZ2V7Zm9udC1zaXplOjZyZW19LnVrLWhlYWRpbmctMnhsYXJnZXtmb250LXNpemU6OHJlbX19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstaGVhZGluZy1tZWRpdW17Zm9udC1zaXplOjRyZW19LnVrLWhlYWRpbmctbGFyZ2V7Zm9udC1zaXplOjZyZW19LnVrLWhlYWRpbmcteGxhcmdle2ZvbnQtc2l6ZTo4cmVtfS51ay1oZWFkaW5nLTJ4bGFyZ2V7Zm9udC1zaXplOjExcmVtfX0udWstaGVhZGluZy1kaXZpZGVye3BhZGRpbmctYm90dG9tOmNhbGMoNXB4ICsgLjFlbSk7Ym9yZGVyLWJvdHRvbTpjYWxjKC4ycHggKyAuMDVlbSkgc29saWQgI2U1ZTVlNX0udWstaGVhZGluZy1idWxsZXR7cG9zaXRpb246cmVsYXRpdmV9LnVrLWhlYWRpbmctYnVsbGV0OjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6Y2FsYygtLjEgKiAxZW0pO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6Y2FsYyg0cHggKyAuN2VtKTttYXJnaW4tcmlnaHQ6Y2FsYyg1cHggKyAuMmVtKTtib3JkZXItbGVmdDpjYWxjKDVweCArIC4xZW0pIHNvbGlkICNlNWU1ZTV9LnVrLWhlYWRpbmctbGluZXtvdmVyZmxvdzpoaWRkZW59LnVrLWhlYWRpbmctbGluZT4qe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1oZWFkaW5nLWxpbmU+OjphZnRlciwudWstaGVhZGluZy1saW5lPjo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gKCguMnB4ICsgLjA1ZW0pLyAyKSk7d2lkdGg6MjAwMHB4O2JvcmRlci1ib3R0b206Y2FsYyguMnB4ICsgLjA1ZW0pIHNvbGlkICNlNWU1ZTV9LnVrLWhlYWRpbmctbGluZT46OmJlZm9yZXtyaWdodDoxMDAlO21hcmdpbi1yaWdodDpjYWxjKDVweCArIC4zZW0pfS51ay1oZWFkaW5nLWxpbmU+OjphZnRlcntsZWZ0OjEwMCU7bWFyZ2luLWxlZnQ6Y2FsYyg1cHggKyAuM2VtKX1bY2xhc3MqPXVrLWRpdmlkZXJde2JvcmRlcjpub25lO21hcmdpbi1ib3R0b206MjBweH0qK1tjbGFzcyo9dWstZGl2aWRlcl17bWFyZ2luLXRvcDoyMHB4fS51ay1kaXZpZGVyLWljb257cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjIwcHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMjAlMjIlMjBoZWlnaHQlM0QlMjIyMCUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDIwJTIwMjAlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2NpcmNsZSUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzZTVlNWU1JTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyMGN4JTNEJTIyMTAlMjIlMjBjeSUzRCUyMjEwJTIyJTIwciUzRCUyMjclMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlfS51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1kaXZpZGVyLWljb246OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWF4LXdpZHRoOmNhbGMoNTAlIC0gKDUwcHggLyAyKSk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0udWstZGl2aWRlci1pY29uOjpiZWZvcmV7cmlnaHQ6Y2FsYyg1MCUgKyAoNTBweCAvIDIpKTt3aWR0aDoxMDAlfS51ay1kaXZpZGVyLWljb246OmFmdGVye2xlZnQ6Y2FsYyg1MCUgKyAoNTBweCAvIDIpKTt3aWR0aDoxMDAlfS51ay1kaXZpZGVyLXNtYWxse2xpbmUtaGVpZ2h0OjB9LnVrLWRpdmlkZXItc21hbGw6OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwcHg7bWF4LXdpZHRoOjEwMCU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnVrLWRpdmlkZXItdmVydGljYWx7d2lkdGg6MXB4O2hlaWdodDoxMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZTVlNWU1fS51ay1saXN0e3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnVrLWxpc3Q+bGk6OmFmdGVyLC51ay1saXN0PmxpOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1saXN0PmxpOjphZnRlcntjbGVhcjpib3RofS51ay1saXN0PmxpPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstbGlzdCB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MzBweDtsaXN0LXN0eWxlOm5vbmV9LnVrLWxpc3Q+bGk6bnRoLWNoaWxkKG4rMiksLnVrLWxpc3Q+bGk+dWx7bWFyZ2luLXRvcDoxMHB4fS51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMil7bWFyZ2luLXRvcDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0udWstbGlzdC1zdHJpcGVkPmxpe3BhZGRpbmc6MTBweCAxMHB4fS51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLW9mLXR5cGUob2RkKXtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9LnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpe2JhY2tncm91bmQ6I2Y4ZjhmOH0udWstbGlzdC1zdHJpcGVkPmxpOm50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6MH0udWstbGlzdC1idWxsZXQ+bGl7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OmNhbGMoMS41ZW0gKyAxMHB4KX0udWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxLjVlbTtoZWlnaHQ6MS41ZW07YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyNiUyMiUyMGhlaWdodCUzRCUyMjYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjA2JTIwNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwZmlsbCUzRCUyMiUyMzY2NiUyMiUyMGN4JTNEJTIyMyUyMiUyMGN5JTNEJTIyMyUyMiUyMHIlM0QlMjIzJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTAlIDUwJTtkaXNwbGF5OmJsb2NrfS51ay1saXN0LWxhcmdlPmxpOm50aC1jaGlsZChuKzIpLC51ay1saXN0LWxhcmdlPmxpPnVse21hcmdpbi10b3A6MjBweH0udWstbGlzdC1sYXJnZS51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMil7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjIwcHh9LnVrLWxpc3QtbGFyZ2UudWstbGlzdC1zdHJpcGVkPmxpe3BhZGRpbmc6MjBweCAxMHB4fS51ay1saXN0LWxhcmdlLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpe2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0udWstbGlzdC1sYXJnZS51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLWNoaWxkKG4rMil7bWFyZ2luLXRvcDowfS51ay1kZXNjcmlwdGlvbi1saXN0PmR0e2NvbG9yOiMzMzM7Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NDAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udWstZGVzY3JpcHRpb24tbGlzdD5kdDpudGgtY2hpbGQobisyKXttYXJnaW4tdG9wOjIwcHh9LnVrLWRlc2NyaXB0aW9uLWxpc3QtZGl2aWRlcj5kdDpudGgtY2hpbGQobisyKXttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MDt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MjBweH0qKy51ay10YWJsZXttYXJnaW4tdG9wOjIwcHh9LnVrLXRhYmxlIHRoe3BhZGRpbmc6MTZweCAxMnB4O3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM5OTk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS51ay10YWJsZSB0ZHtwYWRkaW5nOjE2cHggMTJweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnVrLXRhYmxlIHRkPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstdGFibGUgdGZvb3R7Zm9udC1zaXplOi44NzVyZW19LnVrLXRhYmxlIGNhcHRpb257Zm9udC1zaXplOi44NzVyZW07dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiM5OTl9LnVrLXRhYmxlLW1pZGRsZSwudWstdGFibGUtbWlkZGxlIHRke3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnR9LnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kOiNmOGY4Zjg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1fS51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciwudWstdGFibGUtaG92ZXI+dHI6aG92ZXJ7YmFja2dyb3VuZDojZmZkfS51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZXtiYWNrZ3JvdW5kOiNmZmR9LnVrLXRhYmxlLXNtYWxsIHRkLC51ay10YWJsZS1zbWFsbCB0aHtwYWRkaW5nOjEwcHggMTJweH0udWstdGFibGUtbGFyZ2UgdGQsLnVrLXRhYmxlLWxhcmdlIHRoe3BhZGRpbmc6MjJweCAxMnB4fS51ay10YWJsZS1qdXN0aWZ5IHRkOmZpcnN0LWNoaWxkLC51ay10YWJsZS1qdXN0aWZ5IHRoOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDowfS51ay10YWJsZS1qdXN0aWZ5IHRkOmxhc3QtY2hpbGQsLnVrLXRhYmxlLWp1c3RpZnkgdGg6bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjB9LnVrLXRhYmxlLXNocmlua3t3aWR0aDoxcHh9LnVrLXRhYmxlLWV4cGFuZHttaW4td2lkdGg6MTUwcHh9LnVrLXRhYmxlLWxpbmt7cGFkZGluZzowIWltcG9ydGFudH0udWstdGFibGUtbGluaz5he2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxNnB4IDEycHh9LnVrLXRhYmxlLXNtYWxsIC51ay10YWJsZS1saW5rPmF7cGFkZGluZzoxMHB4IDEycHh9QG1lZGlhIChtYXgtd2lkdGg6OTU5cHgpey51ay10YWJsZS1yZXNwb25zaXZlLC51ay10YWJsZS1yZXNwb25zaXZlIHRib2R5LC51ay10YWJsZS1yZXNwb25zaXZlIHRkLC51ay10YWJsZS1yZXNwb25zaXZlIHRoLC51ay10YWJsZS1yZXNwb25zaXZlIHRye2Rpc3BsYXk6YmxvY2t9LnVrLXRhYmxlLXJlc3BvbnNpdmUgdGhlYWR7ZGlzcGxheTpub25lfS51ay10YWJsZS1yZXNwb25zaXZlIHRkLC51ay10YWJsZS1yZXNwb25zaXZlIHRoe3dpZHRoOmF1dG8haW1wb3J0YW50O21heC13aWR0aDpub25lIWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm9ybWFsIWltcG9ydGFudH0udWstdGFibGUtcmVzcG9uc2l2ZSAudWstdGFibGUtbGluazpub3QoOmZpcnN0LWNoaWxkKT5hLC51ay10YWJsZS1yZXNwb25zaXZlIHRkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCgudWstdGFibGUtbGluayksLnVrLXRhYmxlLXJlc3BvbnNpdmUgdGg6bm90KDpmaXJzdC1jaGlsZCk6bm90KC51ay10YWJsZS1saW5rKXtwYWRkaW5nLXRvcDo1cHghaW1wb3J0YW50fS51ay10YWJsZS1yZXNwb25zaXZlIC51ay10YWJsZS1saW5rOm5vdCg6bGFzdC1jaGlsZCk+YSwudWstdGFibGUtcmVzcG9uc2l2ZSB0ZDpub3QoOmxhc3QtY2hpbGQpOm5vdCgudWstdGFibGUtbGluayksLnVrLXRhYmxlLXJlc3BvbnNpdmUgdGg6bm90KDpsYXN0LWNoaWxkKTpub3QoLnVrLXRhYmxlLWxpbmspe3BhZGRpbmctYm90dG9tOjVweCFpbXBvcnRhbnR9LnVrLXRhYmxlLWp1c3RpZnkudWstdGFibGUtcmVzcG9uc2l2ZSB0ZCwudWstdGFibGUtanVzdGlmeS51ay10YWJsZS1yZXNwb25zaXZlIHRoe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH19LnVrLXRhYmxlIHRib2R5IHRye3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXMgbGluZWFyfS51ay1pY29ue21hcmdpbjowO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdzp2aXNpYmxlO2ZvbnQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O3RleHQtdHJhbnNmb3JtOm5vbmU7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Y29sb3I7bGluZS1oZWlnaHQ6MH1idXR0b24udWstaWNvbjpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn0udWstaWNvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9LnVrLWljb246bm90KC51ay1wcmVzZXJ2ZSkgW2ZpbGwqPScjJ106bm90KC51ay1wcmVzZXJ2ZSl7ZmlsbDpjdXJyZW50Y29sb3J9LnVrLWljb246bm90KC51ay1wcmVzZXJ2ZSkgW3N0cm9rZSo9JyMnXTpub3QoLnVrLXByZXNlcnZlKXtzdHJva2U6Y3VycmVudGNvbG9yfS51ay1pY29uPip7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfS51ay1pY29uLWltYWdle3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVrLWljb24tbGlua3tjb2xvcjojOTk5fS51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWljb24tbGluazpob3Zlcntjb2xvcjojNjY2O291dGxpbmU6MH0udWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLWljb24tbGluazphY3RpdmV7Y29sb3I6IzU5NTk1OX0udWstaWNvbi1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyLXJhZGl1czo1MDBweDtiYWNrZ3JvdW5kOiNmOGY4Zjg7Y29sb3I6Izk5OTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt0cmFuc2l0aW9uOi4xcyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3J9LnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1pY29uLWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlYmViZWI7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLWFjdGl2ZT4udWstaWNvbi1idXR0b24sLnVrLWljb24tYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNkZmRmZGY7Y29sb3I6IzY2Nn0udWstcmFuZ2V7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6MCAwO3BhZGRpbmc6MH0udWstcmFuZ2U6Zm9jdXN7b3V0bGluZTowfS51ay1yYW5nZTo6LW1vei1mb2N1cy1vdXRlcntib3JkZXI6bm9uZX0udWstcmFuZ2U6Oi1tcy10cmFja3toZWlnaHQ6MTVweDtiYWNrZ3JvdW5kOjAgMDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dHJhbnNwYXJlbnR9LnVrLXJhbmdlOm5vdCg6ZGlzYWJsZWQpOjotd2Via2l0LXNsaWRlci10aHVtYntjdXJzb3I6cG9pbnRlcn0udWstcmFuZ2U6bm90KDpkaXNhYmxlZCk6Oi1tb3otcmFuZ2UtdGh1bWJ7Y3Vyc29yOnBvaW50ZXJ9LnVrLXJhbmdlOm5vdCg6ZGlzYWJsZWQpOjotbXMtdGh1bWJ7Y3Vyc29yOnBvaW50ZXJ9LnVrLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW4tdG9wOi03cHg7aGVpZ2h0OjE1cHg7d2lkdGg6MTVweDtib3JkZXItcmFkaXVzOjUwMHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2N9LnVrLXJhbmdlOjotbW96LXJhbmdlLXRodW1ie2JvcmRlcjpub25lO2hlaWdodDoxNXB4O3dpZHRoOjE1cHg7Ym9yZGVyLXJhZGl1czo1MDBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjfS51ay1yYW5nZTo6LW1zLXRodW1ie21hcmdpbi10b3A6MH0udWstcmFuZ2U6Oi1tcy10aHVtYntib3JkZXI6bm9uZTtoZWlnaHQ6MTVweDt3aWR0aDoxNXB4O2JvcmRlci1yYWRpdXM6NTAwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjY30udWstcmFuZ2U6Oi1tcy10b29sdGlwe2Rpc3BsYXk6bm9uZX0udWstcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNre2hlaWdodDozcHg7YmFja2dyb3VuZDojZWJlYmViO2JvcmRlci1yYWRpdXM6NTAwcHh9LnVrLXJhbmdlOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2ssLnVrLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja3tiYWNrZ3JvdW5kOiNkMmQyZDJ9LnVrLXJhbmdlOjotbW96LXJhbmdlLXRyYWNre2hlaWdodDozcHg7YmFja2dyb3VuZDojZWJlYmViO2JvcmRlci1yYWRpdXM6NTAwcHh9LnVrLXJhbmdlOmZvY3VzOjotbW96LXJhbmdlLXRyYWNre2JhY2tncm91bmQ6I2QyZDJkMn0udWstcmFuZ2U6Oi1tcy1maWxsLWxvd2VyLC51ay1yYW5nZTo6LW1zLWZpbGwtdXBwZXJ7aGVpZ2h0OjNweDtiYWNrZ3JvdW5kOiNlYmViZWI7Ym9yZGVyLXJhZGl1czo1MDBweH0udWstcmFuZ2U6Zm9jdXM6Oi1tcy1maWxsLWxvd2VyLC51ay1yYW5nZTpmb2N1czo6LW1zLWZpbGwtdXBwZXJ7YmFja2dyb3VuZDojZDJkMmQyfS51ay1jaGVja2JveCwudWstaW5wdXQsLnVrLXJhZGlvLC51ay1zZWxlY3QsLnVrLXRleHRhcmVhe2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MDtib3JkZXItcmFkaXVzOjA7Zm9udDppbmhlcml0fS51ay1pbnB1dHtvdmVyZmxvdzp2aXNpYmxlfS51ay1zZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX0udWstc2VsZWN0IG9wdGdyb3Vwe2ZvbnQ6aW5oZXJpdDtmb250LXdlaWdodDo3MDB9LnVrLXRleHRhcmVhe292ZXJmbG93OmF1dG99LnVrLWlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwudWstaW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS51ay1pbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLnVrLWlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b30udWstaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIsLnVrLXRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MX0udWstY2hlY2tib3g6bm90KDpkaXNhYmxlZCksLnVrLXJhZGlvOm5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS51ay1maWVsZHNldHtib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9LnVrLWlucHV0LC51ay10ZXh0YXJlYXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udWstaW5wdXQsLnVrLXNlbGVjdCwudWstdGV4dGFyZWF7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTtib3JkZXI6MCBub25lO3BhZGRpbmc6MCAxMHB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNjY2O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTt0cmFuc2l0aW9uOi4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyfS51ay1pbnB1dCwudWstc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKXtoZWlnaHQ6NDBweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnVrLWlucHV0Om5vdChpbnB1dCksLnVrLXNlbGVjdDpub3Qoc2VsZWN0KXtsaW5lLWhlaWdodDozOHB4fS51ay1zZWxlY3RbbXVsdGlwbGVdLC51ay1zZWxlY3Rbc2l6ZV0sLnVrLXRleHRhcmVhe3BhZGRpbmctdG9wOjRweDtwYWRkaW5nLWJvdHRvbTo0cHg7dmVydGljYWwtYWxpZ246dG9wfS51ay1pbnB1dDpmb2N1cywudWstc2VsZWN0OmZvY3VzLC51ay10ZXh0YXJlYTpmb2N1c3tvdXRsaW5lOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOiMxZTg3ZjB9LnVrLWlucHV0OmRpc2FibGVkLC51ay1zZWxlY3Q6ZGlzYWJsZWQsLnVrLXRleHRhcmVhOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtjb2xvcjojOTk5O2JvcmRlci1jb2xvcjojZTVlNWU1fS51ay1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTkhaW1wb3J0YW50fS51ay1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0udWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojOTk5IWltcG9ydGFudH0udWstdGV4dGFyZWE6OnBsYWNlaG9sZGVye2NvbG9yOiM5OTl9LnVrLWZvcm0tc21hbGx7Zm9udC1zaXplOi44NzVyZW19LnVrLWZvcm0tc21hbGw6bm90KHRleHRhcmVhKTpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSl7aGVpZ2h0OjMwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweH0udWstZm9ybS1zbWFsbDpub3Qoc2VsZWN0KTpub3QoaW5wdXQpOm5vdCh0ZXh0YXJlYSl7bGluZS1oZWlnaHQ6MjhweH0udWstZm9ybS1sYXJnZXtmb250LXNpemU6MS4yNXJlbX0udWstZm9ybS1sYXJnZTpub3QodGV4dGFyZWEpOm5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKXtoZWlnaHQ6NTVweDtwYWRkaW5nLWxlZnQ6MTJweDtwYWRkaW5nLXJpZ2h0OjEycHh9LnVrLWZvcm0tbGFyZ2U6bm90KHNlbGVjdCk6bm90KGlucHV0KTpub3QodGV4dGFyZWEpe2xpbmUtaGVpZ2h0OjUzcHh9LnVrLWZvcm0tZGFuZ2VyLC51ay1mb3JtLWRhbmdlcjpmb2N1c3tjb2xvcjojZjA1MDZlO2JvcmRlci1jb2xvcjojZjA1MDZlfS51ay1mb3JtLXN1Y2Nlc3MsLnVrLWZvcm0tc3VjY2Vzczpmb2N1c3tjb2xvcjojMzJkMjk2O2JvcmRlci1jb2xvcjojMzJkMjk2fS51ay1mb3JtLWJsYW5re2JhY2tncm91bmQ6MCAwO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0udWstZm9ybS1ibGFuazpmb2N1c3tib3JkZXItY29sb3I6I2U1ZTVlNTtib3JkZXItc3R5bGU6ZGFzaGVkfWlucHV0LnVrLWZvcm0td2lkdGgteHNtYWxse3dpZHRoOjUwcHh9c2VsZWN0LnVrLWZvcm0td2lkdGgteHNtYWxse3dpZHRoOjc1cHh9LnVrLWZvcm0td2lkdGgtc21hbGx7d2lkdGg6MTMwcHh9LnVrLWZvcm0td2lkdGgtbWVkaXVte3dpZHRoOjIwMHB4fS51ay1mb3JtLXdpZHRoLWxhcmdle3dpZHRoOjUwMHB4fS51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO3BhZGRpbmctcmlnaHQ6MjBweDtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIyNCUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjQlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2NjYlMjIlMjBwb2ludHMlM0QlMjIxMiUyMDElMjA5JTIwNiUyMDE1JTIwNiUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxMyUyMDklMjA4JTIwMTUlMjA4JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MTAwJSA1MCV9LnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSk6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfS51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pIG9wdGlvbntjb2xvcjojNDQ0fS51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pOmRpc2FibGVke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDE2JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk5OSUyMiUyMHBvaW50cyUzRCUyMjEyJTIwMSUyMDklMjA2JTIwMTUlMjA2JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5OTklMjIlMjBwb2ludHMlM0QlMjIxMiUyMDEzJTIwOSUyMDglMjAxNSUyMDglMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKX0udWstaW5wdXRbbGlzdF17cGFkZGluZy1yaWdodDoyMHB4O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgNTAlfS51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstaW5wdXRbbGlzdF06aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDI0JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxMiUyMDglMjA2JTIwMTYlMjA2JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWlucHV0W2xpc3RdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlzcGxheTpub25lfS51ay1jaGVja2JveCwudWstcmFkaW97ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLXRvcDotNHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3RyYW5zaXRpb246LjJzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcixib3JkZXJ9LnVrLXJhZGlve2JvcmRlci1yYWRpdXM6NTAlfS51ay1jaGVja2JveDpmb2N1cywudWstcmFkaW86Zm9jdXN7b3V0bGluZTowO2JvcmRlci1jb2xvcjojMWU4N2YwfS51ay1jaGVja2JveDpjaGVja2VkLC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1yYWRpbzpjaGVja2Vke2JhY2tncm91bmQtY29sb3I6IzFlODdmMDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLXJhZGlvOmNoZWNrZWQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojMGU2ZGNkfS51ay1yYWRpbzpjaGVja2Vke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjE2JTIyJTIwaGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxNiUyMDE2JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NjaXJjbGUlMjBmaWxsJTNEJTIyJTIzZmZmJTIyJTIwY3glM0QlMjI4JTIyJTIwY3klM0QlMjI4JTIyJTIwciUzRCUyMjIlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2hlY2tib3g6Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjExJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNmZmYlMjIlMjBwb2ludHMlM0QlMjIxMiUyMDElMjA1JTIwNy41JTIwMiUyMDUlMjAxJTIwNS41JTIwNSUyMDEwJTIwMTMlMjAxLjUlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKX0udWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNmZmYlMjIlMjB4JTNEJTIyMyUyMiUyMHklM0QlMjI4JTIyJTIwd2lkdGglM0QlMjIxMCUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2hlY2tib3g6ZGlzYWJsZWQsLnVrLXJhZGlvOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtib3JkZXItY29sb3I6I2U1ZTVlNX0udWstcmFkaW86ZGlzYWJsZWQ6Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwZmlsbCUzRCUyMiUyMzk5OSUyMiUyMGN4JTNEJTIyOCUyMiUyMGN5JTNEJTIyOCUyMiUyMHIlM0QlMjIyJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWNoZWNrYm94OmRpc2FibGVkOmNoZWNrZWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTQlMjIlMjBoZWlnaHQlM0QlMjIxMSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE0JTIwMTElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTk5JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxJTIwNSUyMDcuNSUyMDIlMjA1JTIwMSUyMDUuNSUyMDUlMjAxMCUyMDEzJTIwMS41JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWNoZWNrYm94OmRpc2FibGVkOmluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE2JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTk5JTIyJTIweCUzRCUyMjMlMjIlMjB5JTNEJTIyOCUyMiUyMHdpZHRoJTNEJTIyMTAlMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWxlZ2VuZHt3aWR0aDoxMDAlO2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MS40fS51ay1mb3JtLWN1c3RvbXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVrLWZvcm0tY3VzdG9tIGlucHV0W3R5cGU9ZmlsZV0sLnVrLWZvcm0tY3VzdG9tIHNlbGVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt6LWluZGV4OjE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtsZWZ0OjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7b3BhY2l0eTowO2N1cnNvcjpwb2ludGVyfS51ay1mb3JtLWN1c3RvbSBpbnB1dFt0eXBlPWZpbGVde2ZvbnQtc2l6ZTo1MDBweDtvdmVyZmxvdzpoaWRkZW59LnVrLWZvcm0tbGFiZWx7Y29sb3I6IzMzMztmb250LXNpemU6Ljg3NXJlbX0udWstZm9ybS1zdGFja2VkIC51ay1mb3JtLWxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo1cHh9QG1lZGlhIChtYXgtd2lkdGg6OTU5cHgpey51ay1mb3JtLWhvcml6b250YWwgLnVrLWZvcm0tbGFiZWx7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjVweH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1mb3JtLWhvcml6b250YWwgLnVrLWZvcm0tbGFiZWx7d2lkdGg6MjAwcHg7bWFyZ2luLXRvcDo3cHg7ZmxvYXQ6bGVmdH0udWstZm9ybS1ob3Jpem9udGFsIC51ay1mb3JtLWNvbnRyb2xze21hcmdpbi1sZWZ0OjIxNXB4fS51ay1mb3JtLWhvcml6b250YWwgLnVrLWZvcm0tY29udHJvbHMtdGV4dHtwYWRkaW5nLXRvcDo3cHh9fS51ay1mb3JtLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjQwcHg7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojOTk5fS51ay1mb3JtLWljb246aG92ZXJ7Y29sb3I6IzY2Nn0udWstZm9ybS1pY29uOm5vdChhKTpub3QoYnV0dG9uKTpub3QoaW5wdXQpe3BvaW50ZXItZXZlbnRzOm5vbmV9LnVrLWZvcm0taWNvbjpub3QoLnVrLWZvcm0taWNvbi1mbGlwKX4udWstaW5wdXR7cGFkZGluZy1sZWZ0OjQwcHghaW1wb3J0YW50fS51ay1mb3JtLWljb24tZmxpcHtyaWdodDowO2xlZnQ6YXV0b30udWstZm9ybS1pY29uLWZsaXB+LnVrLWlucHV0e3BhZGRpbmctcmlnaHQ6NDBweCFpbXBvcnRhbnR9LnVrLWJ1dHRvbnttYXJnaW46MDtib3JkZXI6bm9uZTtvdmVyZmxvdzp2aXNpYmxlO2ZvbnQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O3RleHQtdHJhbnNmb3JtOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MCAzMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXNpemU6Ljg3NXJlbTtsaW5lLWhlaWdodDozOHB4O3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0cmFuc2l0aW9uOi4xcyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yfS51ay1idXR0b246bm90KDpkaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9LnVrLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9LnVrLWJ1dHRvbjpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstYnV0dG9uOmZvY3Vze291dGxpbmU6MH0udWstYnV0dG9uLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzMzO2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNX0udWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzMzMztib3JkZXItY29sb3I6I2IyYjJiMn0udWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1idXR0b24tZGVmYXVsdDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzMzO2JvcmRlci1jb2xvcjojOTk5fS51ay1idXR0b24tcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMxZTg3ZjA7Y29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fS51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstYnV0dG9uLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMGY3YWU1O2NvbG9yOiNmZmZ9LnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstYnV0dG9uLXByaW1hcnk6YWN0aXZle2JhY2tncm91bmQtY29sb3I6IzBlNmRjZDtjb2xvcjojZmZmfS51ay1idXR0b24tc2Vjb25kYXJ5e2JhY2tncm91bmQtY29sb3I6IzIyMjtjb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9LnVrLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMsLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTUxNTE1O2NvbG9yOiNmZmZ9LnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDg7Y29sb3I6I2ZmZn0udWstYnV0dG9uLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMDUwNmU7Y29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fS51ay1idXR0b24tZGFuZ2VyOmZvY3VzLC51ay1idXR0b24tZGFuZ2VyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VlMzk1Yjtjb2xvcjojZmZmfS51ay1idXR0b24tZGFuZ2VyLnVrLWFjdGl2ZSwudWstYnV0dG9uLWRhbmdlcjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZWMyMTQ3O2NvbG9yOiNmZmZ9LnVrLWJ1dHRvbi1kYW5nZXI6ZGlzYWJsZWQsLnVrLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkLC51ay1idXR0b24tcHJpbWFyeTpkaXNhYmxlZCwudWstYnV0dG9uLXNlY29uZGFyeTpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiM5OTk7Ym9yZGVyLWNvbG9yOiNlNWU1ZTV9LnVrLWJ1dHRvbi1zbWFsbHtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDoyOHB4O2ZvbnQtc2l6ZTouODc1cmVtfS51ay1idXR0b24tbGFyZ2V7cGFkZGluZzowIDQwcHg7bGluZS1oZWlnaHQ6NTNweDtmb250LXNpemU6Ljg3NXJlbX0udWstYnV0dG9uLXRleHR7cGFkZGluZzowO2xpbmUtaGVpZ2h0OjEuNTtiYWNrZ3JvdW5kOjAgMDtjb2xvcjojMzMzO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1idXR0b24tdGV4dDo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjEwMCU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzMzMzt0cmFuc2l0aW9uOnJpZ2h0IC4zcyBlYXNlLW91dH0udWstYnV0dG9uLXRleHQ6Zm9jdXMsLnVrLWJ1dHRvbi10ZXh0OmhvdmVye2NvbG9yOiMzMzN9LnVrLWJ1dHRvbi10ZXh0OmZvY3VzOjpiZWZvcmUsLnVrLWJ1dHRvbi10ZXh0OmhvdmVyOjpiZWZvcmV7cmlnaHQ6MH0udWstYnV0dG9uLXRleHQ6ZGlzYWJsZWR7Y29sb3I6Izk5OX0udWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQ6OmJlZm9yZXtkaXNwbGF5Om5vbmV9LnVrLWJ1dHRvbi1saW5re3BhZGRpbmc6MDtsaW5lLWhlaWdodDoxLjU7YmFja2dyb3VuZDowIDA7Y29sb3I6IzFlODdmMH0udWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLWJ1dHRvbi1saW5rOmhvdmVye2NvbG9yOiMwZjZlY2Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udWstYnV0dG9uLWxpbms6ZGlzYWJsZWR7Y29sb3I6Izk5OTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstYnV0dG9uLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWZsZXg7dmVydGljYWwtYWxpZ246bWlkZGxlO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1idXR0b24tZ3JvdXA+LnVrLWJ1dHRvbjpudGgtY2hpbGQobisyKSwudWstYnV0dG9uLWdyb3VwPmRpdjpudGgtY2hpbGQobisyKSAudWstYnV0dG9ue21hcmdpbi1sZWZ0Oi0xcHh9LnVrLWJ1dHRvbi1ncm91cCAudWstYnV0dG9uLnVrLWFjdGl2ZSwudWstYnV0dG9uLWdyb3VwIC51ay1idXR0b246YWN0aXZlLC51ay1idXR0b24tZ3JvdXAgLnVrLWJ1dHRvbjpmb2N1cywudWstYnV0dG9uLWdyb3VwIC51ay1idXR0b246aG92ZXJ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS51ay1zZWN0aW9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDo0MHB4O3BhZGRpbmctYm90dG9tOjQwcHh9QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1zZWN0aW9ue3BhZGRpbmctdG9wOjcwcHg7cGFkZGluZy1ib3R0b206NzBweH19LnVrLXNlY3Rpb246OmFmdGVyLC51ay1zZWN0aW9uOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1zZWN0aW9uOjphZnRlcntjbGVhcjpib3RofS51ay1zZWN0aW9uPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstc2VjdGlvbi14c21hbGx7cGFkZGluZy10b3A6MjBweDtwYWRkaW5nLWJvdHRvbToyMHB4fS51ay1zZWN0aW9uLXNtYWxse3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1ib3R0b206NDBweH0udWstc2VjdGlvbi1sYXJnZXtwYWRkaW5nLXRvcDo3MHB4O3BhZGRpbmctYm90dG9tOjcwcHh9QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1zZWN0aW9uLWxhcmdle3BhZGRpbmctdG9wOjE0MHB4O3BhZGRpbmctYm90dG9tOjE0MHB4fX0udWstc2VjdGlvbi14bGFyZ2V7cGFkZGluZy10b3A6MTQwcHg7cGFkZGluZy1ib3R0b206MTQwcHh9QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1zZWN0aW9uLXhsYXJnZXtwYWRkaW5nLXRvcDoyMTBweDtwYWRkaW5nLWJvdHRvbToyMTBweH19LnVrLXNlY3Rpb24tZGVmYXVsdHtiYWNrZ3JvdW5kOiNmZmZ9LnVrLXNlY3Rpb24tbXV0ZWR7YmFja2dyb3VuZDojZjhmOGY4fS51ay1zZWN0aW9uLXByaW1hcnl7YmFja2dyb3VuZDojMWU4N2YwfS51ay1zZWN0aW9uLXNlY29uZGFyeXtiYWNrZ3JvdW5kOiMyMjJ9LnVrLWNvbnRhaW5lcntib3gtc2l6aW5nOmNvbnRlbnQtYm94O21heC13aWR0aDoxMjAwcHg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHh9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jb250YWluZXJ7cGFkZGluZy1sZWZ0OjMwcHg7cGFkZGluZy1yaWdodDozMHB4fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbnRhaW5lcntwYWRkaW5nLWxlZnQ6NDBweDtwYWRkaW5nLXJpZ2h0OjQwcHh9fS51ay1jb250YWluZXI6OmFmdGVyLC51ay1jb250YWluZXI6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLWNvbnRhaW5lcjo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstY29udGFpbmVyPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstY29udGFpbmVyIC51ay1jb250YWluZXJ7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS51ay1jb250YWluZXIteHNtYWxse21heC13aWR0aDo3NTBweH0udWstY29udGFpbmVyLXNtYWxse21heC13aWR0aDo5MDBweH0udWstY29udGFpbmVyLWxhcmdle21heC13aWR0aDoxNjAwcHh9LnVrLWNvbnRhaW5lci1leHBhbmR7bWF4LXdpZHRoOm5vbmV9LnVrLWNvbnRhaW5lci1leHBhbmQtbGVmdHttYXJnaW4tbGVmdDowfS51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0e21hcmdpbi1yaWdodDowfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstY29udGFpbmVyLWV4cGFuZC1sZWZ0LnVrLWNvbnRhaW5lci14c21hbGwsLnVrLWNvbnRhaW5lci1leHBhbmQtcmlnaHQudWstY29udGFpbmVyLXhzbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoNzUwcHggLyAyKSAtIDMwcHgpfS51ay1jb250YWluZXItZXhwYW5kLWxlZnQudWstY29udGFpbmVyLXNtYWxsLC51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0LnVrLWNvbnRhaW5lci1zbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoOTAwcHggLyAyKSAtIDMwcHgpfX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbnRhaW5lci1leHBhbmQtbGVmdCwudWstY29udGFpbmVyLWV4cGFuZC1yaWdodHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoMTIwMHB4IC8gMikgLSA0MHB4KX0udWstY29udGFpbmVyLWV4cGFuZC1sZWZ0LnVrLWNvbnRhaW5lci14c21hbGwsLnVrLWNvbnRhaW5lci1leHBhbmQtcmlnaHQudWstY29udGFpbmVyLXhzbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoNzUwcHggLyAyKSAtIDQwcHgpfS51ay1jb250YWluZXItZXhwYW5kLWxlZnQudWstY29udGFpbmVyLXNtYWxsLC51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0LnVrLWNvbnRhaW5lci1zbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoOTAwcHggLyAyKSAtIDQwcHgpfS51ay1jb250YWluZXItZXhwYW5kLWxlZnQudWstY29udGFpbmVyLWxhcmdlLC51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0LnVrLWNvbnRhaW5lci1sYXJnZXttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoMTYwMHB4IC8gMikgLSA0MHB4KX19LnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLWxlZnQsLnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLXJpZ2h0e3dpZHRoOmNhbGMoMTAwJSArIDE1cHgpfS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1sZWZ0e21hcmdpbi1sZWZ0Oi0xNXB4fS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1yaWdodHttYXJnaW4tcmlnaHQ6LTE1cHh9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1sZWZ0LC51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1yaWdodHt3aWR0aDpjYWxjKDEwMCUgKyAzMHB4KX0udWstY29udGFpbmVyLWl0ZW0tcGFkZGluZy1yZW1vdmUtbGVmdHttYXJnaW4tbGVmdDotMzBweH0udWstY29udGFpbmVyLWl0ZW0tcGFkZGluZy1yZW1vdmUtcmlnaHR7bWFyZ2luLXJpZ2h0Oi0zMHB4fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLWxlZnQsLnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLXJpZ2h0e3dpZHRoOmNhbGMoMTAwJSArIDQwcHgpfS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1sZWZ0e21hcmdpbi1sZWZ0Oi00MHB4fS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1yaWdodHttYXJnaW4tcmlnaHQ6LTQwcHh9fS51ay1ncmlke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1ncmlkPip7bWFyZ2luOjB9LnVrLWdyaWQ+Kj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWdyaWR7bWFyZ2luLWxlZnQ6LTMwcHh9LnVrLWdyaWQ+KntwYWRkaW5nLWxlZnQ6MzBweH0qKy51ay1ncmlkLW1hcmdpbiwudWstZ3JpZCsudWstZ3JpZCwudWstZ3JpZD4udWstZ3JpZC1tYXJnaW57bWFyZ2luLXRvcDozMHB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLWdyaWR7bWFyZ2luLWxlZnQ6LTQwcHh9LnVrLWdyaWQ+KntwYWRkaW5nLWxlZnQ6NDBweH0qKy51ay1ncmlkLW1hcmdpbiwudWstZ3JpZCsudWstZ3JpZCwudWstZ3JpZD4udWstZ3JpZC1tYXJnaW57bWFyZ2luLXRvcDo0MHB4fX0udWstZ3JpZC1jb2x1bW4tc21hbGwsLnVrLWdyaWQtc21hbGx7bWFyZ2luLWxlZnQ6LTE1cHh9LnVrLWdyaWQtY29sdW1uLXNtYWxsPiosLnVrLWdyaWQtc21hbGw+KntwYWRkaW5nLWxlZnQ6MTVweH0qKy51ay1ncmlkLW1hcmdpbi1zbWFsbCwudWstZ3JpZCsudWstZ3JpZC1yb3ctc21hbGwsLnVrLWdyaWQrLnVrLWdyaWQtc21hbGwsLnVrLWdyaWQtcm93LXNtYWxsPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1zbWFsbD4udWstZ3JpZC1tYXJnaW57bWFyZ2luLXRvcDoxNXB4fS51ay1ncmlkLWNvbHVtbi1tZWRpdW0sLnVrLWdyaWQtbWVkaXVte21hcmdpbi1sZWZ0Oi0zMHB4fS51ay1ncmlkLWNvbHVtbi1tZWRpdW0+KiwudWstZ3JpZC1tZWRpdW0+KntwYWRkaW5nLWxlZnQ6MzBweH0qKy51ay1ncmlkLW1hcmdpbi1tZWRpdW0sLnVrLWdyaWQrLnVrLWdyaWQtbWVkaXVtLC51ay1ncmlkKy51ay1ncmlkLXJvdy1tZWRpdW0sLnVrLWdyaWQtbWVkaXVtPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1yb3ctbWVkaXVtPi51ay1ncmlkLW1hcmdpbnttYXJnaW4tdG9wOjMwcHh9LnVrLWdyaWQtY29sdW1uLWxhcmdlLC51ay1ncmlkLWxhcmdle21hcmdpbi1sZWZ0Oi00MHB4fS51ay1ncmlkLWNvbHVtbi1sYXJnZT4qLC51ay1ncmlkLWxhcmdlPip7cGFkZGluZy1sZWZ0OjQwcHh9KisudWstZ3JpZC1tYXJnaW4tbGFyZ2UsLnVrLWdyaWQrLnVrLWdyaWQtbGFyZ2UsLnVrLWdyaWQrLnVrLWdyaWQtcm93LWxhcmdlLC51ay1ncmlkLWxhcmdlPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1yb3ctbGFyZ2U+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6NDBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1ncmlkLWNvbHVtbi1sYXJnZSwudWstZ3JpZC1sYXJnZXttYXJnaW4tbGVmdDotNzBweH0udWstZ3JpZC1jb2x1bW4tbGFyZ2U+KiwudWstZ3JpZC1sYXJnZT4qe3BhZGRpbmctbGVmdDo3MHB4fSorLnVrLWdyaWQtbWFyZ2luLWxhcmdlLC51ay1ncmlkKy51ay1ncmlkLWxhcmdlLC51ay1ncmlkKy51ay1ncmlkLXJvdy1sYXJnZSwudWstZ3JpZC1sYXJnZT4udWstZ3JpZC1tYXJnaW4sLnVrLWdyaWQtcm93LWxhcmdlPi51ay1ncmlkLW1hcmdpbnttYXJnaW4tdG9wOjcwcHh9fS51ay1ncmlkLWNvbGxhcHNlLC51ay1ncmlkLWNvbHVtbi1jb2xsYXBzZXttYXJnaW4tbGVmdDowfS51ay1ncmlkLWNvbGxhcHNlPiosLnVrLWdyaWQtY29sdW1uLWNvbGxhcHNlPip7cGFkZGluZy1sZWZ0OjB9LnVrLWdyaWQrLnVrLWdyaWQtY29sbGFwc2UsLnVrLWdyaWQrLnVrLWdyaWQtcm93LWNvbGxhcHNlLC51ay1ncmlkLWNvbGxhcHNlPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1yb3ctY29sbGFwc2U+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6MH0udWstZ3JpZC1kaXZpZGVyPip7cG9zaXRpb246cmVsYXRpdmV9LnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtib3JkZXItbGVmdDoxcHggc29saWQgI2U1ZTVlNX0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1ncmlkLWRpdmlkZXJ7bWFyZ2luLWxlZnQ6LTYwcHh9LnVrLWdyaWQtZGl2aWRlcj4qe3BhZGRpbmctbGVmdDo2MHB4fS51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2xlZnQ6MzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6NjBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7dG9wOi0zMHB4O2xlZnQ6NjBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1ncmlkLWRpdmlkZXJ7bWFyZ2luLWxlZnQ6LTgwcHh9LnVrLWdyaWQtZGl2aWRlcj4qe3BhZGRpbmctbGVmdDo4MHB4fS51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2xlZnQ6NDBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6ODBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7dG9wOi00MHB4O2xlZnQ6ODBweH19LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1zbWFsbCwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc21hbGx7bWFyZ2luLWxlZnQ6LTMwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1zbWFsbD4qLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zbWFsbD4qe3BhZGRpbmctbGVmdDozMHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tc21hbGw+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zbWFsbD46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7bGVmdDoxNXB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1yb3ctc21hbGwudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW4sLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXNtYWxsLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6MzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc21hbGwudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTE1cHg7bGVmdDozMHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1yb3ctc21hbGwudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTE1cHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1zbWFsbC51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2xlZnQ6MzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtY29sdW1uLW1lZGl1bSwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbWVkaXVte21hcmdpbi1sZWZ0Oi02MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbWVkaXVtPiosLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLW1lZGl1bT4qe3BhZGRpbmctbGVmdDo2MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbWVkaXVtPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbWVkaXVtPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZXtsZWZ0OjMwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLW1lZGl1bS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtcm93LW1lZGl1bS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbnttYXJnaW4tdG9wOjYwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLW1lZGl1bS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle3RvcDotMzBweDtsZWZ0OjYwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXJvdy1tZWRpdW0udWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTMwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1tZWRpdW0udWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXtsZWZ0OjYwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1sYXJnZSwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbGFyZ2V7bWFyZ2luLWxlZnQ6LTgwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1sYXJnZT4qLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZT4qe3BhZGRpbmctbGVmdDo4MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbGFyZ2U+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZT46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7bGVmdDo0MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtcm93LWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6ODBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbGFyZ2UudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTQwcHg7bGVmdDo4MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1yb3ctbGFyZ2UudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTQwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2xlZnQ6ODBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbGFyZ2UsLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWxhcmdle21hcmdpbi1sZWZ0Oi0xNDBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtY29sdW1uLWxhcmdlPiosLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWxhcmdlPip7cGFkZGluZy1sZWZ0OjE0MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbGFyZ2U+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZT46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7bGVmdDo3MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtcm93LWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6MTQwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7dG9wOi03MHB4O2xlZnQ6MTQwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXJvdy1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle3RvcDotNzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtY29sdW1uLWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7bGVmdDoxNDBweH19LnVrLWdyaWQtaXRlbS1tYXRjaCwudWstZ3JpZC1tYXRjaD4qe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcH0udWstZ3JpZC1pdGVtLW1hdGNoPjpub3QoW2NsYXNzKj11ay13aWR0aF0pLC51ay1ncmlkLW1hdGNoPio+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7ZmxleDphdXRvfS51ay10aWxle3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy10b3A6NDBweDtwYWRkaW5nLWJvdHRvbTo0MHB4fUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstdGlsZXtwYWRkaW5nLWxlZnQ6MzBweDtwYWRkaW5nLXJpZ2h0OjMwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstdGlsZXtwYWRkaW5nLWxlZnQ6NDBweDtwYWRkaW5nLXJpZ2h0OjQwcHg7cGFkZGluZy10b3A6NzBweDtwYWRkaW5nLWJvdHRvbTo3MHB4fX0udWstdGlsZTo6YWZ0ZXIsLnVrLXRpbGU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLXRpbGU6OmFmdGVye2NsZWFyOmJvdGh9LnVrLXRpbGU+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay10aWxlLXhzbWFsbHtwYWRkaW5nLXRvcDoyMHB4O3BhZGRpbmctYm90dG9tOjIwcHh9LnVrLXRpbGUtc21hbGx7cGFkZGluZy10b3A6NDBweDtwYWRkaW5nLWJvdHRvbTo0MHB4fS51ay10aWxlLWxhcmdle3BhZGRpbmctdG9wOjcwcHg7cGFkZGluZy1ib3R0b206NzBweH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLXRpbGUtbGFyZ2V7cGFkZGluZy10b3A6MTQwcHg7cGFkZGluZy1ib3R0b206MTQwcHh9fS51ay10aWxlLXhsYXJnZXtwYWRkaW5nLXRvcDoxNDBweDtwYWRkaW5nLWJvdHRvbToxNDBweH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLXRpbGUteGxhcmdle3BhZGRpbmctdG9wOjIxMHB4O3BhZGRpbmctYm90dG9tOjIxMHB4fX0udWstdGlsZS1kZWZhdWx0e2JhY2tncm91bmQ6I2ZmZn0udWstdGlsZS1tdXRlZHtiYWNrZ3JvdW5kOiNmOGY4Zjh9LnVrLXRpbGUtcHJpbWFyeXtiYWNrZ3JvdW5kOiMxZTg3ZjB9LnVrLXRpbGUtc2Vjb25kYXJ5e2JhY2tncm91bmQ6IzIyMn0udWstY2FyZHtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4xcyBlYXNlLWluLW91dH0udWstY2FyZC1ib2R5e3BhZGRpbmc6MzBweCAzMHB4fS51ay1jYXJkLWhlYWRlcntwYWRkaW5nOjE1cHggMzBweH0udWstY2FyZC1mb290ZXJ7cGFkZGluZzoxNXB4IDMwcHh9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstY2FyZC1ib2R5e3BhZGRpbmc6NDBweCA0MHB4fS51ay1jYXJkLWhlYWRlcntwYWRkaW5nOjIwcHggNDBweH0udWstY2FyZC1mb290ZXJ7cGFkZGluZzoyMHB4IDQwcHh9fS51ay1jYXJkLWJvZHk6OmFmdGVyLC51ay1jYXJkLWJvZHk6OmJlZm9yZSwudWstY2FyZC1mb290ZXI6OmFmdGVyLC51ay1jYXJkLWZvb3Rlcjo6YmVmb3JlLC51ay1jYXJkLWhlYWRlcjo6YWZ0ZXIsLnVrLWNhcmQtaGVhZGVyOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1jYXJkLWJvZHk6OmFmdGVyLC51ay1jYXJkLWZvb3Rlcjo6YWZ0ZXIsLnVrLWNhcmQtaGVhZGVyOjphZnRlcntjbGVhcjpib3RofS51ay1jYXJkLWJvZHk+Omxhc3QtY2hpbGQsLnVrLWNhcmQtZm9vdGVyPjpsYXN0LWNoaWxkLC51ay1jYXJkLWhlYWRlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWNhcmQtdGl0bGV7Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoxLjR9LnVrLWNhcmQtYmFkZ2V7cG9zaXRpb246YWJzb2x1dGU7dG9wOjMwcHg7cmlnaHQ6MzBweDt6LWluZGV4OjF9LnVrLWNhcmQtYmFkZ2U6Zmlyc3QtY2hpbGQrKnttYXJnaW4tdG9wOjB9LnVrLWNhcmQtaG92ZXI6bm90KC51ay1jYXJkLWRlZmF1bHQpOm5vdCgudWstY2FyZC1wcmltYXJ5KTpub3QoLnVrLWNhcmQtc2Vjb25kYXJ5KTpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWNhcmQtZGVmYXVsdHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzY2Njtib3gtc2hhZG93OjAgNXB4IDE1cHggcmdiYSgwLDAsMCwuMDgpfS51ay1jYXJkLWRlZmF1bHQgLnVrLWNhcmQtdGl0bGV7Y29sb3I6IzMzM30udWstY2FyZC1kZWZhdWx0LnVrLWNhcmQtaG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCAxNHB4IDI1cHggcmdiYSgwLDAsMCwuMTYpfS51ay1jYXJkLWRlZmF1bHQgLnVrLWNhcmQtaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9LnVrLWNhcmQtZGVmYXVsdCAudWstY2FyZC1mb290ZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0udWstY2FyZC1wcmltYXJ5e2JhY2tncm91bmQ6IzFlODdmMDtjb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWNhcmQtcHJpbWFyeSAudWstY2FyZC10aXRsZXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ob3Zlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMxZTg3ZjA7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWNhcmQtc2Vjb25kYXJ5e2JhY2tncm91bmQ6IzIyMjtjb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWNhcmQtc2Vjb25kYXJ5IC51ay1jYXJkLXRpdGxle2NvbG9yOiNmZmZ9LnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtaG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMjIyO2JveC1zaGFkb3c6MCAxNHB4IDI1cHggcmdiYSgwLDAsMCwuMTYpfS51ay1jYXJkLXNtYWxsIC51ay1jYXJkLWJvZHksLnVrLWNhcmQtc21hbGwudWstY2FyZC1ib2R5e3BhZGRpbmc6MjBweCAyMHB4fS51ay1jYXJkLXNtYWxsIC51ay1jYXJkLWhlYWRlcntwYWRkaW5nOjEzcHggMjBweH0udWstY2FyZC1zbWFsbCAudWstY2FyZC1mb290ZXJ7cGFkZGluZzoxM3B4IDIwcHh9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstY2FyZC1sYXJnZSAudWstY2FyZC1ib2R5LC51ay1jYXJkLWxhcmdlLnVrLWNhcmQtYm9keXtwYWRkaW5nOjcwcHggNzBweH0udWstY2FyZC1sYXJnZSAudWstY2FyZC1oZWFkZXJ7cGFkZGluZzozNXB4IDcwcHh9LnVrLWNhcmQtbGFyZ2UgLnVrLWNhcmQtZm9vdGVye3BhZGRpbmc6MzVweCA3MHB4fX0udWstY2FyZC1ib2R5Pi51ay1uYXYtZGVmYXVsdHttYXJnaW4tbGVmdDotMzBweDttYXJnaW4tcmlnaHQ6LTMwcHh9LnVrLWNhcmQtYm9keT4udWstbmF2LWRlZmF1bHQ6b25seS1jaGlsZHttYXJnaW4tdG9wOi0xNXB4O21hcmdpbi1ib3R0b206LTE1cHh9LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVyLC51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVyLC51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0PmxpPmF7cGFkZGluZy1sZWZ0OjMwcHg7cGFkZGluZy1yaWdodDozMHB4fS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3Vie3BhZGRpbmctbGVmdDo0NXB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLWNhcmQtYm9keT4udWstbmF2LWRlZmF1bHR7bWFyZ2luLWxlZnQ6LTQwcHg7bWFyZ2luLXJpZ2h0Oi00MHB4fS51ay1jYXJkLWJvZHk+LnVrLW5hdi1kZWZhdWx0Om9ubHktY2hpbGR7bWFyZ2luLXRvcDotMjVweDttYXJnaW4tYm90dG9tOi0yNXB4fS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5he3BhZGRpbmctbGVmdDo0MHB4O3BhZGRpbmctcmlnaHQ6NDBweH0udWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YntwYWRkaW5nLWxlZnQ6NTVweH19LnVrLWNhcmQtc21hbGw+LnVrLW5hdi1kZWZhdWx0e21hcmdpbi1sZWZ0Oi0yMHB4O21hcmdpbi1yaWdodDotMjBweH0udWstY2FyZC1zbWFsbD4udWstbmF2LWRlZmF1bHQ6b25seS1jaGlsZHttYXJnaW4tdG9wOi01cHg7bWFyZ2luLWJvdHRvbTotNXB4fS51ay1jYXJkLXNtYWxsIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLWNhcmQtc21hbGwgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVyLC51ay1jYXJkLXNtYWxsIC51ay1uYXYtZGVmYXVsdD5saT5he3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweH0udWstY2FyZC1zbWFsbCAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWJ7cGFkZGluZy1sZWZ0OjM1cHh9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstY2FyZC1sYXJnZT4udWstbmF2LWRlZmF1bHR7bWFyZ2luOjB9LnVrLWNhcmQtbGFyZ2U+LnVrLW5hdi1kZWZhdWx0Om9ubHktY2hpbGR7bWFyZ2luOjB9LnVrLWNhcmQtbGFyZ2UgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1sYXJnZSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLWNhcmQtbGFyZ2UgLnVrLW5hdi1kZWZhdWx0PmxpPmF7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS51ay1jYXJkLWxhcmdlIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YntwYWRkaW5nLWxlZnQ6MTVweH19LnVrLWNsb3Nle2NvbG9yOiM5OTk7dHJhbnNpdGlvbjouMXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixvcGFjaXR5fS51ay1jbG9zZTpmb2N1cywudWstY2xvc2U6aG92ZXJ7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLXNwaW5uZXI+KnthbmltYXRpb246dWstc3Bpbm5lci1yb3RhdGUgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyB1ay1zcGlubmVyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfX0udWstc3Bpbm5lcj4qPip7c3Ryb2tlLWRhc2hhcnJheTo4OHB4O3N0cm9rZS1kYXNob2Zmc2V0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7YW5pbWF0aW9uOnVrLXNwaW5uZXItZGFzaCAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOnJvdW5kfUBrZXlmcmFtZXMgdWstc3Bpbm5lci1kYXNoezAle3N0cm9rZS1kYXNob2Zmc2V0Ojg4cHh9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjIycHg7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6ODhweDt0cmFuc2Zvcm06cm90YXRlKDQ1MGRlZyl9fS51ay10b3RvcHtwYWRkaW5nOjVweDtjb2xvcjojOTk5O3RyYW5zaXRpb246Y29sb3IgLjFzIGVhc2UtaW4tb3V0fS51ay10b3RvcDpmb2N1cywudWstdG90b3A6aG92ZXJ7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLXRvdG9wOmFjdGl2ZXtjb2xvcjojMzMzfS51ay1tYXJrZXJ7cGFkZGluZzo1cHg7YmFja2dyb3VuZDojMjIyO2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czo1MDBweH0udWstbWFya2VyOmZvY3VzLC51ay1tYXJrZXI6aG92ZXJ7Y29sb3I6I2ZmZjtvdXRsaW5lOjB9LnVrLWFsZXJ0e3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1ib3R0b206MjBweDtwYWRkaW5nOjE1cHggMjlweCAxNXB4IDE1cHg7YmFja2dyb3VuZDojZjhmOGY4O2NvbG9yOiM2NjZ9KisudWstYWxlcnR7bWFyZ2luLXRvcDoyMHB4fS51ay1hbGVydD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWFsZXJ0LWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyMHB4O3JpZ2h0OjE1cHg7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi40fS51ay1hbGVydC1jbG9zZTpmaXJzdC1jaGlsZCsqe21hcmdpbi10b3A6MH0udWstYWxlcnQtY2xvc2U6Zm9jdXMsLnVrLWFsZXJ0LWNsb3NlOmhvdmVye2NvbG9yOmluaGVyaXQ7b3BhY2l0eTouOH0udWstYWxlcnQtcHJpbWFyeXtiYWNrZ3JvdW5kOiNkOGVhZmM7Y29sb3I6IzFlODdmMH0udWstYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOiNlZGZiZjY7Y29sb3I6IzMyZDI5Nn0udWstYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiNmZmY2ZWU7Y29sb3I6I2ZhYTA1YX0udWstYWxlcnQtZGFuZ2Vye2JhY2tncm91bmQ6I2ZlZjRmNjtjb2xvcjojZjA1MDZlfS51ay1hbGVydCBoMSwudWstYWxlcnQgaDIsLnVrLWFsZXJ0IGgzLC51ay1hbGVydCBoNCwudWstYWxlcnQgaDUsLnVrLWFsZXJ0IGg2e2NvbG9yOmluaGVyaXR9LnVrLWFsZXJ0IGE6bm90KFtjbGFzc10pe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udWstYWxlcnQgYTpub3QoW2NsYXNzXSk6aG92ZXJ7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS51ay1iYWRnZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLXdpZHRoOjIycHg7aGVpZ2h0OjIycHg7cGFkZGluZzowIDVweDtib3JkZXItcmFkaXVzOjUwMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kOiMxZTg3ZjA7Y29sb3I6I2ZmZjtmb250LXNpemU6Ljg3NXJlbTtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS51ay1iYWRnZTpmb2N1cywudWstYmFkZ2U6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtvdXRsaW5lOjB9LnVrLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCAxMHB4O2JhY2tncm91bmQ6IzFlODdmMDtsaW5lLWhlaWdodDoxLjU7Zm9udC1zaXplOi44NzVyZW07Y29sb3I6I2ZmZjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci1yYWRpdXM6MnB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udWstbGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiMzMmQyOTY7Y29sb3I6I2ZmZn0udWstbGFiZWwtd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmYWEwNWE7Y29sb3I6I2ZmZn0udWstbGFiZWwtZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2YwNTA2ZTtjb2xvcjojZmZmfS51ay1vdmVybGF5e3BhZGRpbmc6MzBweCAzMHB4fS51ay1vdmVybGF5PjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstb3ZlcmxheS1kZWZhdWx0e2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOCl9LnVrLW92ZXJsYXktcHJpbWFyeXtiYWNrZ3JvdW5kOnJnYmEoMzQsMzQsMzQsLjgpfS51ay1hcnRpY2xlOjphZnRlciwudWstYXJ0aWNsZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZX0udWstYXJ0aWNsZTo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstYXJ0aWNsZT46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWFydGljbGUrLnVrLWFydGljbGV7bWFyZ2luLXRvcDo3MHB4fS51ay1hcnRpY2xlLXRpdGxle2ZvbnQtc2l6ZToyLjIzMTI1cmVtO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWFydGljbGUtdGl0bGV7Zm9udC1zaXplOjIuNjI1cmVtfX0udWstYXJ0aWNsZS1tZXRhe2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNDtjb2xvcjojOTk5fS51ay1hcnRpY2xlLW1ldGEgYXtjb2xvcjojOTk5fS51ay1hcnRpY2xlLW1ldGEgYTpob3Zlcntjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lfS51ay1jb21tZW50LWJvZHl7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS51ay1jb21tZW50LWhlYWRlcnttYXJnaW4tYm90dG9tOjIwcHh9LnVrLWNvbW1lbnQtYm9keTo6YWZ0ZXIsLnVrLWNvbW1lbnQtYm9keTo6YmVmb3JlLC51ay1jb21tZW50LWhlYWRlcjo6YWZ0ZXIsLnVrLWNvbW1lbnQtaGVhZGVyOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1jb21tZW50LWJvZHk6OmFmdGVyLC51ay1jb21tZW50LWhlYWRlcjo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstY29tbWVudC1ib2R5PjpsYXN0LWNoaWxkLC51ay1jb21tZW50LWhlYWRlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWNvbW1lbnQtdGl0bGV7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS40fS51ay1jb21tZW50LW1ldGF7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40O2NvbG9yOiM5OTl9LnVrLWNvbW1lbnQtbGlzdHtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1jb21tZW50LWxpc3Q+Om50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6NzBweH0udWstY29tbWVudC1saXN0IC51ay1jb21tZW50fnVse21hcmdpbjo3MHB4IDAgMCAwO3BhZGRpbmctbGVmdDozMHB4O2xpc3Qtc3R5bGU6bm9uZX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbW1lbnQtbGlzdCAudWstY29tbWVudH51bHtwYWRkaW5nLWxlZnQ6MTAwcHh9fS51ay1jb21tZW50LWxpc3QgLnVrLWNvbW1lbnR+dWw+Om50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6NzBweH0udWstY29tbWVudC1wcmltYXJ5e3BhZGRpbmc6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjh9LnVrLXNlYXJjaHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTttYXJnaW46MH0udWstc2VhcmNoLWlucHV0Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC51ay1zZWFyY2gtaW5wdXQ6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnVrLXNlYXJjaC1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjF9LnVrLXNlYXJjaC1pbnB1dHtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7Ym9yZGVyLXJhZGl1czowO2ZvbnQ6aW5oZXJpdDtvdmVyZmxvdzp2aXNpYmxlOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoxMDAlO2JvcmRlcjpub25lO2NvbG9yOiM2NjZ9LnVrLXNlYXJjaC1pbnB1dDpmb2N1c3tvdXRsaW5lOjB9LnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OSFpbXBvcnRhbnR9LnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0udWstc2VhcmNoLWljb246Zm9jdXN7b3V0bGluZTowfS51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiM5OTl9LnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXJ7Y29sb3I6Izk5OX0udWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbjpub3QoYSk6bm90KGJ1dHRvbik6bm90KGlucHV0KXtwb2ludGVyLWV2ZW50czpub25lfS51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLWZsaXB7cmlnaHQ6MDtsZWZ0OmF1dG99LnVrLXNlYXJjaC1kZWZhdWx0e3dpZHRoOjE4MHB4fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0e2hlaWdodDo0MHB4O3BhZGRpbmctbGVmdDo2cHg7cGFkZGluZy1yaWdodDo2cHg7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3Vze2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaWNvbnt3aWR0aDo0MHB4fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWljb246bm90KC51ay1zZWFyY2gtaWNvbi1mbGlwKX4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctbGVmdDo0MHB4fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWljb24tZmxpcH4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctcmlnaHQ6NDBweH0udWstc2VhcmNoLW5hdmJhcnt3aWR0aDo0MDBweH0udWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0e2hlaWdodDo0MHB4O2JhY2tncm91bmQ6MCAwO2ZvbnQtc2l6ZToxLjVyZW19LnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pY29ue3dpZHRoOjQwcHh9LnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pY29uOm5vdCgudWstc2VhcmNoLWljb24tZmxpcCl+LnVrLXNlYXJjaC1pbnB1dHtwYWRkaW5nLWxlZnQ6NDBweH0udWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWljb24tZmxpcH4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctcmlnaHQ6NDBweH0udWstc2VhcmNoLWxhcmdle3dpZHRoOjUwMHB4fS51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dHtoZWlnaHQ6ODBweDtiYWNrZ3JvdW5kOjAgMDtmb250LXNpemU6Mi42MjVyZW19LnVrLXNlYXJjaC1sYXJnZSAudWstc2VhcmNoLWljb257d2lkdGg6ODBweH0udWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaWNvbjpub3QoLnVrLXNlYXJjaC1pY29uLWZsaXApfi51ay1zZWFyY2gtaW5wdXR7cGFkZGluZy1sZWZ0OjgwcHh9LnVrLXNlYXJjaC1sYXJnZSAudWstc2VhcmNoLWljb24tZmxpcH4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctcmlnaHQ6ODBweH0udWstc2VhcmNoLXRvZ2dsZXtjb2xvcjojOTk5fS51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1zZWFyY2gtdG9nZ2xlOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdiwudWstbmF2IHVse21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnVrLW5hdiBsaT5he2Rpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVrLW5hdiBsaT5hOmZvY3Vze291dGxpbmU6MH0udWstbmF2PmxpPmF7cGFkZGluZzo1cHggMH11bC51ay1uYXYtc3Vie3BhZGRpbmc6NXB4IDAgNXB4IDE1cHh9LnVrLW5hdi1zdWIgdWx7cGFkZGluZy1sZWZ0OjE1cHh9LnVrLW5hdi1zdWIgYXtwYWRkaW5nOjJweCAwfS51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudD5hOjphZnRlcntjb250ZW50OiIiO3dpZHRoOjEuNWVtO2hlaWdodDoxLjVlbTtmbG9hdDpyaWdodDtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWxpbmUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMiUyMzY2NiUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjEuMSUyMiUyMHBvaW50cyUzRCUyMjEwJTIwMSUyMDQlMjA3JTIwMTAlMjAxMyUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSIpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCV9LnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTQlMjIlMjBoZWlnaHQlM0QlMjIxNCUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE0JTIwMTQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlsaW5lJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjM2NjYlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxLjElMjIlMjBwb2ludHMlM0QlMjIxJTIwNCUyMDclMjAxMCUyMDEzJTIwNCUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSIpfS51ay1uYXYtaGVhZGVye3BhZGRpbmc6NXB4IDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtc2l6ZTouODc1cmVtfS51ay1uYXYtaGVhZGVyOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi10b3A6MjBweH0udWstbmF2LWRpdmlkZXJ7bWFyZ2luOjVweCAwfS51ay1uYXYtZGVmYXVsdHtmb250LXNpemU6Ljg3NXJlbX0udWstbmF2LWRlZmF1bHQ+bGk+YXtjb2xvcjojOTk5fS51ay1uYXYtZGVmYXVsdD5saT5hOmZvY3VzLC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5he2NvbG9yOiMzMzN9LnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVye2NvbG9yOiMzMzN9LnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhe2NvbG9yOiM5OTl9LnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstbmF2LXByaW1hcnk+bGk+YXtmb250LXNpemU6MS41cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojOTk5fS51ay1uYXYtcHJpbWFyeT5saT5hOmZvY3VzLC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5he2NvbG9yOiMzMzN9LnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtaGVhZGVye2NvbG9yOiMzMzN9LnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhe2NvbG9yOiM5OTl9LnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstbmF2LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udWstbmF2LWNlbnRlciAudWstbmF2LXN1YiwudWstbmF2LWNlbnRlciAudWstbmF2LXN1YiB1bHtwYWRkaW5nLWxlZnQ6MH0udWstbmF2LWNlbnRlci51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudD5hOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZX0udWstbmF2YmFye2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX0udWstbmF2YmFyLWNvbnRhaW5lcjpub3QoLnVrLW5hdmJhci10cmFuc3BhcmVudCl7YmFja2dyb3VuZDojZjhmOGY4fS51ay1uYXZiYXItY29udGFpbmVyPjo6YWZ0ZXIsLnVrLW5hdmJhci1jb250YWluZXI+OjpiZWZvcmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0udWstbmF2YmFyLWNlbnRlciwudWstbmF2YmFyLWNlbnRlci1sZWZ0PiosLnVrLW5hdmJhci1jZW50ZXItcmlnaHQ+KiwudWstbmF2YmFyLWxlZnQsLnVrLW5hdmJhci1yaWdodHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS51ay1uYXZiYXItcmlnaHR7bWFyZ2luLWxlZnQ6YXV0b30udWstbmF2YmFyLWNlbnRlcjpvbmx5LWNoaWxke21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LnVrLW5hdmJhci1jZW50ZXI6bm90KDpvbmx5LWNoaWxkKXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDptYXgtY29udGVudDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDo5OTB9LnVrLW5hdmJhci1jZW50ZXItbGVmdCwudWstbmF2YmFyLWNlbnRlci1yaWdodHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0udWstbmF2YmFyLWNlbnRlci1sZWZ0e3JpZ2h0OjEwMCV9LnVrLW5hdmJhci1jZW50ZXItcmlnaHR7bGVmdDoxMDAlfVtjbGFzcyo9dWstbmF2YmFyLWNlbnRlci1de3dpZHRoOm1heC1jb250ZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udWstbmF2YmFyLW5hdntkaXNwbGF5OmZsZXg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udWstbmF2YmFyLWNlbnRlcjpvbmx5LWNoaWxkLC51ay1uYXZiYXItbGVmdCwudWstbmF2YmFyLXJpZ2h0e2ZsZXgtd3JhcDp3cmFwfS51ay1uYXZiYXItaXRlbSwudWstbmF2YmFyLW5hdj5saT5hLC51ay1uYXZiYXItdG9nZ2xle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDo4MHB4O3BhZGRpbmc6MCAxNXB4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsIk5vdG8gU2FucyIsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiO3RleHQtZGVjb3JhdGlvbjpub25lfS51ay1uYXZiYXItbmF2PmxpPmF7Y29sb3I6Izk5OTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dHJhbnNpdGlvbjouMXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLW5hdmJhci1uYXY+bGk+YS51ay1vcGVuLC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXN7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmV7Y29sb3I6IzMzM30udWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YXtjb2xvcjojMzMzfS51ay1uYXZiYXItaXRlbXtjb2xvcjojNjY2fS51ay1uYXZiYXItdG9nZ2xle2NvbG9yOiM5OTl9LnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstbmF2YmFyLXRvZ2dsZTpob3Zlcntjb2xvcjojNjY2O291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstbmF2YmFyLXN1YnRpdGxle2ZvbnQtc2l6ZTouODc1cmVtfS51ay1uYXZiYXItZHJvcGRvd257ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAyMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjAwcHg7cGFkZGluZzoyNXB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNjY2O2JveC1zaGFkb3c6MCA1cHggMTJweCByZ2JhKDAsMCwwLC4xNSl9LnVrLW5hdmJhci1kcm9wZG93bi51ay1vcGVue2Rpc3BsYXk6YmxvY2t9W2NsYXNzKj11ay1uYXZiYXItZHJvcGRvd24tdG9wXXttYXJnaW4tdG9wOi0xNXB4fVtjbGFzcyo9dWstbmF2YmFyLWRyb3Bkb3duLWJvdHRvbV17bWFyZ2luLXRvcDoxNXB4fVtjbGFzcyo9dWstbmF2YmFyLWRyb3Bkb3duLWxlZnRde21hcmdpbi1sZWZ0Oi0xNXB4fVtjbGFzcyo9dWstbmF2YmFyLWRyb3Bkb3duLXJpZ2h0XXttYXJnaW4tbGVmdDoxNXB4fS51ay1uYXZiYXItZHJvcGRvd24tZ3JpZHttYXJnaW4tbGVmdDotNTBweH0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+KntwYWRkaW5nLWxlZnQ6NTBweH0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6NTBweH0udWstbmF2YmFyLWRyb3Bkb3duLXN0YWNrIC51ay1uYXZiYXItZHJvcGRvd24tZ3JpZD4qe3dpZHRoOjEwMCUhaW1wb3J0YW50fS51ay1uYXZiYXItZHJvcGRvd24td2lkdGgtMjpub3QoLnVrLW5hdmJhci1kcm9wZG93bi1zdGFjayl7d2lkdGg6NDAwcHh9LnVrLW5hdmJhci1kcm9wZG93bi13aWR0aC0zOm5vdCgudWstbmF2YmFyLWRyb3Bkb3duLXN0YWNrKXt3aWR0aDo2MDBweH0udWstbmF2YmFyLWRyb3Bkb3duLXdpZHRoLTQ6bm90KC51ay1uYXZiYXItZHJvcGRvd24tc3RhY2spe3dpZHRoOjgwMHB4fS51ay1uYXZiYXItZHJvcGRvd24td2lkdGgtNTpub3QoLnVrLW5hdmJhci1kcm9wZG93bi1zdGFjayl7d2lkdGg6MTAwMHB4fS51ay1uYXZiYXItZHJvcGRvd24tZHJvcGJhcnttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JveC1zaGFkb3c6bm9uZX0udWstbmF2YmFyLWRyb3Bkb3duLW5hdntmb250LXNpemU6Ljg3NXJlbX0udWstbmF2YmFyLWRyb3Bkb3duLW5hdj5saT5he2NvbG9yOiM5OTl9LnVrLW5hdmJhci1kcm9wZG93bi1uYXY+bGk+YTpmb2N1cywudWstbmF2YmFyLWRyb3Bkb3duLW5hdj5saT5hOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdmJhci1kcm9wZG93bi1uYXY+bGkudWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstbmF2YmFyLWRyb3Bkb3duLW5hdiAudWstbmF2LWhlYWRlcntjb2xvcjojMzMzfS51ay1uYXZiYXItZHJvcGRvd24tbmF2IC51ay1uYXYtZGl2aWRlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXZiYXItZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGF7Y29sb3I6Izk5OX0udWstbmF2YmFyLWRyb3Bkb3duLW5hdiAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1uYXZiYXItZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstbmF2YmFyLWRyb3Bkb3duLW5hdiAudWstbmF2LXN1YiBsaS51ay1hY3RpdmU+YXtjb2xvcjojMzMzfS51ay1uYXZiYXItZHJvcGJhcntiYWNrZ3JvdW5kOiNmZmZ9LnVrLW5hdmJhci1kcm9wYmFyLXNsaWRle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTgwO2xlZnQ6MDtyaWdodDowO2JveC1zaGFkb3c6MCA1cHggN3B4IHJnYmEoMCwwLDAsLjA1KX0udWstbmF2YmFyLWNvbnRhaW5lcj4udWstY29udGFpbmVyIC51ay1uYXZiYXItbGVmdHttYXJnaW4tbGVmdDotMTVweDttYXJnaW4tcmlnaHQ6LTE1cHh9LnVrLW5hdmJhci1jb250YWluZXI+LnVrLWNvbnRhaW5lciAudWstbmF2YmFyLXJpZ2h0e21hcmdpbi1yaWdodDotMTVweH0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+Kntwb3NpdGlvbjpyZWxhdGl2ZX0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDoyNXB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXZiYXItZHJvcGRvd24tZ3JpZC51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0yNXB4O2xlZnQ6NTBweDtyaWdodDowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9LnVrLXN1Ym5hdntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWxlZnQ6LTIwcHg7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udWstc3VibmF2Pip7ZmxleDpub25lO3BhZGRpbmctbGVmdDoyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGR7ZGlzcGxheTpibG9jaztjb2xvcjojOTk5O2ZvbnQtc2l6ZTouODc1cmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0cmFuc2l0aW9uOi4xcyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3J9LnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLXN1Ym5hdj4qPmE6aG92ZXJ7Y29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZTtvdXRsaW5lOjB9LnVrLXN1Ym5hdj4udWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstc3VibmF2LWRpdmlkZXI+KntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7Y29udGVudDoiIjtoZWlnaHQ6MS41ZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MjBweDtib3JkZXItbGVmdDoxcHggc29saWQgI2U1ZTVlNX0udWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGR7cGFkZGluZzo1cHggMTBweDtiYWNrZ3JvdW5kOjAgMDtjb2xvcjojOTk5fS51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Y29sb3I6IzY2Nn0udWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Y29sb3I6IzY2Nn0udWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5he2JhY2tncm91bmQtY29sb3I6IzFlODdmMDtjb2xvcjojZmZmfS51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmF7Y29sb3I6Izk5OX0udWstYnJlYWRjcnVtYntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udWstYnJlYWRjcnVtYj4qe2ZsZXg6bm9uZX0udWstYnJlYWRjcnVtYj4qPip7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOi44NzVyZW07Y29sb3I6Izk5OX0udWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstYnJlYWRjcnVtYj4qPjpob3Zlcntjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lfS51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPip7Y29sb3I6IzY2Nn0udWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7Y29udGVudDoiLyI7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjAgMjBweDtjb2xvcjojOTk5fS51ay1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tbGVmdDotMjBweDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1wYWdpbmF0aW9uPip7ZmxleDpub25lO3BhZGRpbmctbGVmdDoyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1wYWdpbmF0aW9uPio+KntkaXNwbGF5OmJsb2NrO2NvbG9yOiM5OTk7dHJhbnNpdGlvbjpjb2xvciAuMXMgZWFzZS1pbi1vdXR9LnVrLXBhZ2luYXRpb24+Kj46Zm9jdXMsLnVrLXBhZ2luYXRpb24+Kj46aG92ZXJ7Y29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstcGFnaW5hdGlvbj4udWstYWN0aXZlPip7Y29sb3I6IzY2Nn0udWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+Kntjb2xvcjojOTk5fS51ay10YWJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1sZWZ0Oi0yMHB4O3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246cmVsYXRpdmV9LnVrLXRhYjo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDoyMHB4O3JpZ2h0OjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0udWstdGFiPip7ZmxleDpub25lO3BhZGRpbmctbGVmdDoyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51ay10YWI+Kj5he2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo1cHggMTBweDtjb2xvcjojOTk5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50O2ZvbnQtc2l6ZTouODc1cmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0cmFuc2l0aW9uOmNvbG9yIC4xcyBlYXNlLWluLW91dH0udWstdGFiPio+YTpmb2N1cywudWstdGFiPio+YTpob3Zlcntjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lfS51ay10YWI+LnVrLWFjdGl2ZT5he2NvbG9yOiMzMzM7Ym9yZGVyLWNvbG9yOiMxZTg3ZjB9LnVrLXRhYj4udWstZGlzYWJsZWQ+YXtjb2xvcjojOTk5fS51ay10YWItYm90dG9tOjpiZWZvcmV7dG9wOjA7Ym90dG9tOmF1dG99LnVrLXRhYi1ib3R0b20+Kj5he2JvcmRlci10b3A6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206bm9uZX0udWstdGFiLWxlZnQsLnVrLXRhYi1yaWdodHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLWxlZnQ6MH0udWstdGFiLWxlZnQ+KiwudWstdGFiLXJpZ2h0Pip7cGFkZGluZy1sZWZ0OjB9LnVrLXRhYi1sZWZ0OjpiZWZvcmV7dG9wOjA7Ym90dG9tOjA7bGVmdDphdXRvO3JpZ2h0OjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlNWU1ZTU7Ym9yZGVyLWJvdHRvbTpub25lfS51ay10YWItcmlnaHQ6OmJlZm9yZXt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6YXV0bztib3JkZXItbGVmdDoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItYm90dG9tOm5vbmV9LnVrLXRhYi1sZWZ0Pio+YXt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOm5vbmV9LnVrLXRhYi1yaWdodD4qPmF7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1sZWZ0OjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOm5vbmV9LnVrLXRhYiAudWstZHJvcGRvd257bWFyZ2luLWxlZnQ6MzBweH0udWstc2xpZGVuYXZ7cGFkZGluZzo1cHggMTBweDtjb2xvcjpyZ2JhKDEwMiwxMDIsMTAyLC41KTt0cmFuc2l0aW9uOmNvbG9yIC4xcyBlYXNlLWluLW91dH0udWstc2xpZGVuYXY6Zm9jdXMsLnVrLXNsaWRlbmF2OmhvdmVye2NvbG9yOnJnYmEoMTAyLDEwMiwxMDIsLjkpO291dGxpbmU6MH0udWstc2xpZGVuYXY6YWN0aXZle2NvbG9yOnJnYmEoMTAyLDEwMiwxMDIsLjUpfS51ay1zbGlkZW5hdi1sYXJnZXtwYWRkaW5nOjEwcHggMTBweH0udWstc2xpZGVuYXYtY29udGFpbmVye2Rpc3BsYXk6ZmxleH0udWstZG90bmF2e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO21hcmdpbi1sZWZ0Oi0xMnB4fS51ay1kb3RuYXY+KntmbGV4Om5vbmU7cGFkZGluZy1sZWZ0OjEycHh9LnVrLWRvdG5hdj4qPip7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOjAgMDt0ZXh0LWluZGVudDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEwMiwxMDIsMTAyLC40KTt0cmFuc2l0aW9uOi4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yfS51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWRvdG5hdj4qPjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTAyLDEwMiwxMDIsLjYpO291dGxpbmU6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWRvdG5hdj4qPjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMiwxMDIsMTAyLC4yKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWRvdG5hdj4udWstYWN0aXZlPip7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMiwxMDIsMTAyLC42KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWRvdG5hdi12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOi0xMnB4fS51ay1kb3RuYXYtdmVydGljYWw+KntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXRvcDoxMnB4fS51ay10aHVtYm5hdntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tbGVmdDotMTVweH0udWstdGh1bWJuYXY+KntwYWRkaW5nLWxlZnQ6MTVweH0udWstdGh1bWJuYXY+Kj4qe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay10aHVtYm5hdj4qPjo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjQpO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1pbi1vdXR9LnVrLXRodW1ibmF2Pio+OmZvY3VzLC51ay10aHVtYm5hdj4qPjpob3ZlcntvdXRsaW5lOjB9LnVrLXRodW1ibmF2Pio+OmZvY3VzOjphZnRlciwudWstdGh1bWJuYXY+Kj46aG92ZXI6OmFmdGVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXRodW1ibmF2Pi51ay1hY3RpdmU+OjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS51ay10aHVtYm5hdi12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOi0xNXB4fS51ay10aHVtYm5hdi12ZXJ0aWNhbD4qe3BhZGRpbmctbGVmdDowO3BhZGRpbmctdG9wOjE1cHh9LnVrLWFjY29yZGlvbntwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1hY2NvcmRpb24+Om50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6MjBweH0udWstYWNjb3JkaW9uLXRpdGxle2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS40O2NvbG9yOiMzMzM7b3ZlcmZsb3c6aGlkZGVufS51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjEuNGVtO2hlaWdodDoxLjRlbTttYXJnaW4tbGVmdDoxMHB4O2Zsb2F0OnJpZ2h0O2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMyUyMDEzJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzY2NiUyMiUyMHdpZHRoJTNEJTIyMTMlMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyNiUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwd2lkdGglM0QlMjIxJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB4JTNEJTIyNiUyMiUyMHklM0QlMjIwJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTAlIDUwJX0udWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTMlMjIlMjBoZWlnaHQlM0QlMjIxMyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEzJTIwMTMlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwd2lkdGglM0QlMjIxMyUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjI2JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVye2NvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTowfS51ay1hY2NvcmRpb24tY29udGVudHttYXJnaW4tdG9wOjIwcHh9LnVrLWFjY29yZGlvbi1jb250ZW50OjphZnRlciwudWstYWNjb3JkaW9uLWNvbnRlbnQ6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLWFjY29yZGlvbi1jb250ZW50OjphZnRlcntjbGVhcjpib3RofS51ay1hY2NvcmRpb24tY29udGVudD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWRyb3B7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAyMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MzAwcHh9LnVrLWRyb3AudWstb3BlbntkaXNwbGF5OmJsb2NrfVtjbGFzcyo9dWstZHJvcC10b3Bde21hcmdpbi10b3A6LTIwcHh9W2NsYXNzKj11ay1kcm9wLWJvdHRvbV17bWFyZ2luLXRvcDoyMHB4fVtjbGFzcyo9dWstZHJvcC1sZWZ0XXttYXJnaW4tbGVmdDotMjBweH1bY2xhc3MqPXVrLWRyb3AtcmlnaHRde21hcmdpbi1sZWZ0OjIwcHh9LnVrLWRyb3Atc3RhY2sgLnVrLWRyb3AtZ3JpZD4qe3dpZHRoOjEwMCUhaW1wb3J0YW50fS51ay1kcm9wZG93bntkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDIwO2JveC1zaXppbmc6Ym9yZGVyLWJveDttaW4td2lkdGg6MjAwcHg7cGFkZGluZzoyNXB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNjY2O2JveC1zaGFkb3c6MCA1cHggMTJweCByZ2JhKDAsMCwwLC4xNSl9LnVrLWRyb3Bkb3duLnVrLW9wZW57ZGlzcGxheTpibG9ja30udWstZHJvcGRvd24tbmF2e3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6Ljg3NXJlbX0udWstZHJvcGRvd24tbmF2PmxpPmF7Y29sb3I6Izk5OX0udWstZHJvcGRvd24tbmF2PmxpLnVrLWFjdGl2ZT5hLC51ay1kcm9wZG93bi1uYXY+bGk+YTpmb2N1cywudWstZHJvcGRvd24tbmF2PmxpPmE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstZHJvcGRvd24tbmF2IC51ay1uYXYtaGVhZGVye2NvbG9yOiMzMzN9LnVrLWRyb3Bkb3duLW5hdiAudWstbmF2LWRpdmlkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0udWstZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGF7Y29sb3I6Izk5OX0udWstZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWRyb3Bkb3duLW5hdiAudWstbmF2LXN1YiBhOmhvdmVyLC51ay1kcm9wZG93bi1uYXYgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmF7Y29sb3I6IzY2Nn1bY2xhc3MqPXVrLWRyb3Bkb3duLXRvcF17bWFyZ2luLXRvcDotMTBweH1bY2xhc3MqPXVrLWRyb3Bkb3duLWJvdHRvbV17bWFyZ2luLXRvcDoxMHB4fVtjbGFzcyo9dWstZHJvcGRvd24tbGVmdF17bWFyZ2luLWxlZnQ6LTEwcHh9W2NsYXNzKj11ay1kcm9wZG93bi1yaWdodF17bWFyZ2luLWxlZnQ6MTBweH0udWstZHJvcGRvd24tc3RhY2sgLnVrLWRyb3Bkb3duLWdyaWQ+Knt3aWR0aDoxMDAlIWltcG9ydGFudH0udWstbW9kYWx7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTAxMDtvdmVyZmxvdy15OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZzoxNXB4IDE1cHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC42KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstbW9kYWx7cGFkZGluZzo1MHB4IDMwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstbW9kYWx7cGFkZGluZy1sZWZ0OjQwcHg7cGFkZGluZy1yaWdodDo0MHB4fX0udWstbW9kYWwudWstb3BlbntvcGFjaXR5OjF9LnVrLW1vZGFsLXBhZ2V7b3ZlcmZsb3c6aGlkZGVufS51ay1tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowIGF1dG87d2lkdGg6NjAwcHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIC4wMXB4KSFpbXBvcnRhbnQ7YmFja2dyb3VuZDojZmZmO29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwcHgpO3RyYW5zaXRpb246LjNzIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtfS51ay1vcGVuPi51ay1tb2RhbC1kaWFsb2d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfS51ay1tb2RhbC1jb250YWluZXIgLnVrLW1vZGFsLWRpYWxvZ3t3aWR0aDoxMjAwcHh9LnVrLW1vZGFsLWZ1bGx7cGFkZGluZzowO2JhY2tncm91bmQ6MCAwfS51ay1tb2RhbC1mdWxsIC51ay1tb2RhbC1kaWFsb2d7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX0udWstbW9kYWwtYm9keXtwYWRkaW5nOjMwcHggMzBweH0udWstbW9kYWwtaGVhZGVye3BhZGRpbmc6MTVweCAzMHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1fS51ay1tb2RhbC1mb290ZXJ7cGFkZGluZzoxNXB4IDMwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9LnVrLW1vZGFsLWJvZHk6OmFmdGVyLC51ay1tb2RhbC1ib2R5OjpiZWZvcmUsLnVrLW1vZGFsLWZvb3Rlcjo6YWZ0ZXIsLnVrLW1vZGFsLWZvb3Rlcjo6YmVmb3JlLC51ay1tb2RhbC1oZWFkZXI6OmFmdGVyLC51ay1tb2RhbC1oZWFkZXI6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLW1vZGFsLWJvZHk6OmFmdGVyLC51ay1tb2RhbC1mb290ZXI6OmFmdGVyLC51ay1tb2RhbC1oZWFkZXI6OmFmdGVye2NsZWFyOmJvdGh9LnVrLW1vZGFsLWJvZHk+Omxhc3QtY2hpbGQsLnVrLW1vZGFsLWZvb3Rlcj46bGFzdC1jaGlsZCwudWstbW9kYWwtaGVhZGVyPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstbW9kYWwtdGl0bGV7Zm9udC1zaXplOjJyZW07bGluZS1oZWlnaHQ6MS4zfVtjbGFzcyo9dWstbW9kYWwtY2xvc2UtXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMTA7dG9wOjEwcHg7cmlnaHQ6MTBweDtwYWRkaW5nOjVweH1bY2xhc3MqPXVrLW1vZGFsLWNsb3NlLV06Zmlyc3QtY2hpbGQrKnttYXJnaW4tdG9wOjB9LnVrLW1vZGFsLWNsb3NlLW91dHNpZGV7dG9wOjA7cmlnaHQ6LTVweDt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTEwMCUpO2NvbG9yOiNmZmZ9LnVrLW1vZGFsLWNsb3NlLW91dHNpZGU6aG92ZXJ7Y29sb3I6I2ZmZn1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLW1vZGFsLWNsb3NlLW91dHNpZGV7cmlnaHQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsLTEwMCUpfX0udWstbW9kYWwtY2xvc2UtZnVsbHt0b3A6MDtyaWdodDowO3BhZGRpbmc6MjBweDtiYWNrZ3JvdW5kOiNmZmZ9LnVrLWxpZ2h0Ym94e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwMTA7YmFja2dyb3VuZDojMDAwO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXJ9LnVrLWxpZ2h0Ym94LnVrLW9wZW57ZGlzcGxheTpibG9jaztvcGFjaXR5OjF9LnVrLWxpZ2h0Ym94LXBhZ2V7b3ZlcmZsb3c6aGlkZGVufS51ay1saWdodGJveC1pdGVtcz4qe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sb3BhY2l0eX0udWstbGlnaHRib3gtaXRlbXM+Kj4qe21heC13aWR0aDoxMDB2dzttYXgtaGVpZ2h0OjEwMHZofS51ay1saWdodGJveC1pdGVtcz46Zm9jdXN7b3V0bGluZTowfS51ay1saWdodGJveC1pdGVtcz4qPjpub3QoaWZyYW1lKXt3aWR0aDphdXRvO2hlaWdodDphdXRvfS51ay1saWdodGJveC1pdGVtcz4udWstYWN0aXZle2Rpc3BsYXk6ZmxleH0udWstbGlnaHRib3gtdG9vbGJhcntwYWRkaW5nOjEwcHggMTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1saWdodGJveC10b29sYmFyPip7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWxpZ2h0Ym94LXRvb2xiYXItaWNvbntwYWRkaW5nOjVweDtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstbGlnaHRib3gtdG9vbGJhci1pY29uOmhvdmVye2NvbG9yOiNmZmZ9LnVrLWxpZ2h0Ym94LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LnVrLWxpZ2h0Ym94LWJ1dHRvbjpob3Zlcntjb2xvcjojZmZmfS51ay1saWdodGJveC1pZnJhbWV7d2lkdGg6ODAlO2hlaWdodDo4MCV9LnVrLXNsaWRlc2hvd3std2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXNsaWRlc2hvdy1pdGVtc3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjA7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmV9LnVrLXNsaWRlc2hvdy1pdGVtcz4qe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO292ZXJmbG93OmhpZGRlbjt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sb3BhY2l0eTt0b3VjaC1hY3Rpb246cGFuLXl9LnVrLXNsaWRlc2hvdy1pdGVtcz46Zm9jdXN7b3V0bGluZTowfS51ay1zbGlkZXNob3ctaXRlbXM+Om5vdCgudWstYWN0aXZlKXtkaXNwbGF5Om5vbmV9LnVrLXNsaWRlcnstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXNsaWRlci1jb250YWluZXJ7b3ZlcmZsb3c6aGlkZGVufS51ay1zbGlkZXItaXRlbXN7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1zbGlkZXItaXRlbXM6bm90KC51ay1ncmlkKXtkaXNwbGF5OmZsZXg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZX0udWstc2xpZGVyLWl0ZW1zLnVrLWdyaWR7ZmxleC13cmFwOm5vd3JhcH0udWstc2xpZGVyLWl0ZW1zPip7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3RvdWNoLWFjdGlvbjpwYW4teX0udWstc2xpZGVyLWl0ZW1zPjpmb2N1c3tvdXRsaW5lOjB9LnVrLXN0aWNreS1maXhlZHt6LWluZGV4Ojk4MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjAhaW1wb3J0YW50Oy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59LnVrLXN0aWNreVtjbGFzcyo9dWstYW5pbWF0aW9uLV17YW5pbWF0aW9uLWR1cmF0aW9uOi4yc30udWstc3RpY2t5LnVrLWFuaW1hdGlvbi1yZXZlcnNle2FuaW1hdGlvbi1kdXJhdGlvbjouMnN9LnVrLW9mZmNhbnZhc3tkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTAwMH0udWstb2ZmY2FudmFzLWZsaXAgLnVrLW9mZmNhbnZhc3tyaWdodDowO2xlZnQ6YXV0b30udWstb2ZmY2FudmFzLWJhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0Oi0yNzBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjcwcHg7cGFkZGluZzoyMHB4IDIwcHg7YmFja2dyb3VuZDojMjIyO292ZXJmbG93LXk6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLW9mZmNhbnZhcy1iYXJ7bGVmdDotMzUwcHg7d2lkdGg6MzUwcHg7cGFkZGluZzo0MHB4IDQwcHh9fS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLWJhcntsZWZ0OmF1dG87cmlnaHQ6LTI3MHB4fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstb2ZmY2FudmFzLWZsaXAgLnVrLW9mZmNhbnZhcy1iYXJ7cmlnaHQ6LTM1MHB4fX0udWstb3Blbj4udWstb2ZmY2FudmFzLWJhcntsZWZ0OjB9LnVrLW9mZmNhbnZhcy1mbGlwIC51ay1vcGVuPi51ay1vZmZjYW52YXMtYmFye2xlZnQ6YXV0bztyaWdodDowfS51ay1vZmZjYW52YXMtYmFyLWFuaW1hdGlvbnt0cmFuc2l0aW9uOmxlZnQgLjNzIGVhc2Utb3V0fS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLWJhci1hbmltYXRpb257dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0udWstb2ZmY2FudmFzLXJldmVhbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6MDtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjp3aWR0aCAuM3MgZWFzZS1vdXR9LnVrLW9mZmNhbnZhcy1yZXZlYWwgLnVrLW9mZmNhbnZhcy1iYXJ7bGVmdDowfS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLXJldmVhbCAudWstb2ZmY2FudmFzLWJhcntsZWZ0OmF1dG87cmlnaHQ6MH0udWstb3Blbj4udWstb2ZmY2FudmFzLXJldmVhbHt3aWR0aDoyNzBweH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLW9wZW4+LnVrLW9mZmNhbnZhcy1yZXZlYWx7d2lkdGg6MzUwcHh9fS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLXJldmVhbHtyaWdodDowO2xlZnQ6YXV0b30udWstb2ZmY2FudmFzLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDt0b3A6MjBweDtyaWdodDoyMHB4O3BhZGRpbmc6NXB4fS51ay1vZmZjYW52YXMtb3ZlcmxheXt3aWR0aDoxMDB2dzt0b3VjaC1hY3Rpb246bm9uZX0udWstb2ZmY2FudmFzLW92ZXJsYXk6OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMSk7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0udWstb2ZmY2FudmFzLW92ZXJsYXkudWstb3Blbjo6YmVmb3Jle29wYWNpdHk6MX0udWstb2ZmY2FudmFzLWNvbnRhaW5lciwudWstb2ZmY2FudmFzLXBhZ2V7b3ZlcmZsb3cteDpoaWRkZW59LnVrLW9mZmNhbnZhcy1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowO3RyYW5zaXRpb246bGVmdCAuM3MgZWFzZS1vdXQ7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9Om5vdCgudWstb2ZmY2FudmFzLWZsaXApLnVrLW9mZmNhbnZhcy1jb250YWluZXItYW5pbWF0aW9ue2xlZnQ6MjcwcHh9LnVrLW9mZmNhbnZhcy1mbGlwLnVrLW9mZmNhbnZhcy1jb250YWluZXItYW5pbWF0aW9ue2xlZnQ6LTI3MHB4fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXs6bm90KC51ay1vZmZjYW52YXMtZmxpcCkudWstb2ZmY2FudmFzLWNvbnRhaW5lci1hbmltYXRpb257bGVmdDozNTBweH0udWstb2ZmY2FudmFzLWZsaXAudWstb2ZmY2FudmFzLWNvbnRhaW5lci1hbmltYXRpb257bGVmdDotMzUwcHh9fS51ay1zd2l0Y2hlcnttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1zd2l0Y2hlcj46bm90KC51ay1hY3RpdmUpe2Rpc3BsYXk6bm9uZX0udWstc3dpdGNoZXI+Kj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWxlYWRlcntvdmVyZmxvdzpoaWRkZW59LnVrLWxlYWRlci1maWxsOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDoxNXB4O3dpZHRoOjA7Y29udGVudDphdHRyKGRhdGEtZmlsbCk7d2hpdGUtc3BhY2U6bm93cmFwfS51ay1sZWFkZXItZmlsbC51ay1sZWFkZXItaGlkZTo6YWZ0ZXJ7ZGlzcGxheTpub25lfS51ay1sZWFkZXItZmlsbC1jb250ZW50OjpiZWZvcmV7Y29udGVudDonLid9OnJvb3R7LS11ay1sZWFkZXItZmlsbC1jb250ZW50Oi59LnVrLWljb25uYXZ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luLWxlZnQ6LTEwcHh9LnVrLWljb25uYXY+KntwYWRkaW5nLWxlZnQ6MTBweH0udWstaWNvbm5hdj4qPmF7ZGlzcGxheTpibG9jaztjb2xvcjojOTk5fS51ay1pY29ubmF2Pio+YTpmb2N1cywudWstaWNvbm5hdj4qPmE6aG92ZXJ7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLWljb25uYXY+LnVrLWFjdGl2ZT5he2NvbG9yOiM2NjZ9LnVrLWljb25uYXYtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXRvcDotMTBweH0udWstaWNvbm5hdi12ZXJ0aWNhbD4qe3BhZGRpbmctbGVmdDowO3BhZGRpbmctdG9wOjEwcHh9LnVrLW5vdGlmaWNhdGlvbntwb3NpdGlvbjpmaXhlZDt0b3A6MTBweDtsZWZ0OjEwcHg7ei1pbmRleDoxMDQwO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDozNTBweH0udWstbm90aWZpY2F0aW9uLWJvdHRvbS1yaWdodCwudWstbm90aWZpY2F0aW9uLXRvcC1yaWdodHtsZWZ0OmF1dG87cmlnaHQ6MTBweH0udWstbm90aWZpY2F0aW9uLWJvdHRvbS1jZW50ZXIsLnVrLW5vdGlmaWNhdGlvbi10b3AtY2VudGVye2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xNzVweH0udWstbm90aWZpY2F0aW9uLWJvdHRvbS1jZW50ZXIsLnVrLW5vdGlmaWNhdGlvbi1ib3R0b20tbGVmdCwudWstbm90aWZpY2F0aW9uLWJvdHRvbS1yaWdodHt0b3A6YXV0bztib3R0b206MTBweH1AbWVkaWEgKG1heC13aWR0aDo2MzlweCl7LnVrLW5vdGlmaWNhdGlvbntsZWZ0OjEwcHg7cmlnaHQ6MTBweDt3aWR0aDphdXRvO21hcmdpbjowfX0udWstbm90aWZpY2F0aW9uLW1lc3NhZ2V7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoxNXB4O2JhY2tncm91bmQ6I2Y4ZjhmODtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNDtjdXJzb3I6cG9pbnRlcn0qKy51ay1ub3RpZmljYXRpb24tbWVzc2FnZXttYXJnaW4tdG9wOjEwcHh9LnVrLW5vdGlmaWNhdGlvbi1jbG9zZXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7cmlnaHQ6MTVweH0udWstbm90aWZpY2F0aW9uLW1lc3NhZ2U6aG92ZXIgLnVrLW5vdGlmaWNhdGlvbi1jbG9zZXtkaXNwbGF5OmJsb2NrfS51ay1ub3RpZmljYXRpb24tbWVzc2FnZS1wcmltYXJ5e2NvbG9yOiMxZTg3ZjB9LnVrLW5vdGlmaWNhdGlvbi1tZXNzYWdlLXN1Y2Nlc3N7Y29sb3I6IzMyZDI5Nn0udWstbm90aWZpY2F0aW9uLW1lc3NhZ2Utd2FybmluZ3tjb2xvcjojZmFhMDVhfS51ay1ub3RpZmljYXRpb24tbWVzc2FnZS1kYW5nZXJ7Y29sb3I6I2YwNTA2ZX0udWstdG9vbHRpcHtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDMwO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXgtd2lkdGg6MjAwcHg7cGFkZGluZzozcHggNnB4O2JhY2tncm91bmQ6IzY2Njtib3JkZXItcmFkaXVzOjJweDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4fS51ay10b29sdGlwLnVrLWFjdGl2ZXtkaXNwbGF5OmJsb2NrfVtjbGFzcyo9dWstdG9vbHRpcC10b3Bde21hcmdpbi10b3A6LTEwcHh9W2NsYXNzKj11ay10b29sdGlwLWJvdHRvbV17bWFyZ2luLXRvcDoxMHB4fVtjbGFzcyo9dWstdG9vbHRpcC1sZWZ0XXttYXJnaW4tbGVmdDotMTBweH1bY2xhc3MqPXVrLXRvb2x0aXAtcmlnaHRde21hcmdpbi1sZWZ0OjEwcHh9LnVrLXBsYWNlaG9sZGVye21hcmdpbi1ib3R0b206MjBweDtwYWRkaW5nOjMwcHggMzBweDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MXB4IGRhc2hlZCAjZTVlNWU1fSorLnVrLXBsYWNlaG9sZGVye21hcmdpbi10b3A6MjBweH0udWstcGxhY2Vob2xkZXI+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7Ym9yZGVyOjA7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4O21hcmdpbi1ib3R0b206MjBweDtoZWlnaHQ6MTVweDtib3JkZXItcmFkaXVzOjUwMHB4O292ZXJmbG93OmhpZGRlbn0qKy51ay1wcm9ncmVzc3ttYXJnaW4tdG9wOjIwcHh9LnVrLXByb2dyZXNzOmluZGV0ZXJtaW5hdGV7Y29sb3I6dHJhbnNwYXJlbnR9LnVrLXByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Ym9yZGVyLXJhZGl1czo1MDBweDtvdmVyZmxvdzpoaWRkZW59LnVrLXByb2dyZXNzOmluZGV0ZXJtaW5hdGU6Oi1tb3otcHJvZ3Jlc3MtYmFye3dpZHRoOjB9LnVrLXByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6IzFlODdmMDt0cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlfS51ay1wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojMWU4N2YwfS51ay1wcm9ncmVzczo6LW1zLWZpbGx7YmFja2dyb3VuZC1jb2xvcjojMWU4N2YwO3RyYW5zaXRpb246d2lkdGggLjZzIGVhc2U7Ym9yZGVyOjB9LnVrLXNvcnRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1zb3J0YWJsZSBzdmd7cG9pbnRlci1ldmVudHM6bm9uZX0udWstc29ydGFibGU+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay1zb3J0YWJsZS1kcmFne3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt6LWluZGV4OjEwNTAhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVrLXNvcnRhYmxlLXBsYWNlaG9sZGVye29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lfS51ay1zb3J0YWJsZS1lbXB0eXttaW4taGVpZ2h0OjUwcHh9LnVrLXNvcnRhYmxlLWhhbmRsZTpob3ZlcntjdXJzb3I6bW92ZX0udWstY291bnRkb3duLW51bWJlciwudWstY291bnRkb3duLXNlcGFyYXRvcntsaW5lLWhlaWdodDouOH0udWstY291bnRkb3duLW51bWJlcntmb250LXNpemU6MnJlbX1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLWNvdW50ZG93bi1udW1iZXJ7Zm9udC1zaXplOjRyZW19fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstY291bnRkb3duLW51bWJlcntmb250LXNpemU6NnJlbX19LnVrLWNvdW50ZG93bi1zZXBhcmF0b3J7Zm9udC1zaXplOjFyZW19QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jb3VudGRvd24tc2VwYXJhdG9ye2ZvbnQtc2l6ZToycmVtfX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvdW50ZG93bi1zZXBhcmF0b3J7Zm9udC1zaXplOjNyZW19fVtjbGFzcyo9dWstYW5pbWF0aW9uLV17YW5pbWF0aW9uLWR1cmF0aW9uOi41czthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O2FuaW1hdGlvbi1maWxsLW1vZGU6Ym90aH0udWstYW5pbWF0aW9uLWZhZGV7YW5pbWF0aW9uLW5hbWU6dWstZmFkZTthbmltYXRpb24tZHVyYXRpb246LjhzO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfS51ay1hbmltYXRpb24tc2NhbGUtdXB7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1zY2FsZS0wMn0udWstYW5pbWF0aW9uLXNjYWxlLWRvd257YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1zY2FsZS0xOH0udWstYW5pbWF0aW9uLXNsaWRlLXRvcHthbmltYXRpb24tbmFtZTp1ay1mYWRlLXRvcH0udWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbXthbmltYXRpb24tbmFtZTp1ay1mYWRlLWJvdHRvbX0udWstYW5pbWF0aW9uLXNsaWRlLWxlZnR7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1sZWZ0fS51ay1hbmltYXRpb24tc2xpZGUtcmlnaHR7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1yaWdodH0udWstYW5pbWF0aW9uLXNsaWRlLXRvcC1zbWFsbHthbmltYXRpb24tbmFtZTp1ay1mYWRlLXRvcC1zbWFsbH0udWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbS1zbWFsbHthbmltYXRpb24tbmFtZTp1ay1mYWRlLWJvdHRvbS1zbWFsbH0udWstYW5pbWF0aW9uLXNsaWRlLWxlZnQtc21hbGx7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1sZWZ0LXNtYWxsfS51ay1hbmltYXRpb24tc2xpZGUtcmlnaHQtc21hbGx7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1yaWdodC1zbWFsbH0udWstYW5pbWF0aW9uLXNsaWRlLXRvcC1tZWRpdW17YW5pbWF0aW9uLW5hbWU6dWstZmFkZS10b3AtbWVkaXVtfS51ay1hbmltYXRpb24tc2xpZGUtYm90dG9tLW1lZGl1bXthbmltYXRpb24tbmFtZTp1ay1mYWRlLWJvdHRvbS1tZWRpdW19LnVrLWFuaW1hdGlvbi1zbGlkZS1sZWZ0LW1lZGl1bXthbmltYXRpb24tbmFtZTp1ay1mYWRlLWxlZnQtbWVkaXVtfS51ay1hbmltYXRpb24tc2xpZGUtcmlnaHQtbWVkaXVte2FuaW1hdGlvbi1uYW1lOnVrLWZhZGUtcmlnaHQtbWVkaXVtfS51ay1hbmltYXRpb24ta2VuYnVybnN7YW5pbWF0aW9uLW5hbWU6dWstc2NhbGUta2VuYnVybnM7YW5pbWF0aW9uLWR1cmF0aW9uOjE1c30udWstYW5pbWF0aW9uLXNoYWtle2FuaW1hdGlvbi1uYW1lOnVrLXNoYWtlfS51ay1hbmltYXRpb24tc3Ryb2tle2FuaW1hdGlvbi1uYW1lOnVrLXN0cm9rZTtzdHJva2UtZGFzaGFycmF5OnZhcigtLXVrLWFuaW1hdGlvbi1zdHJva2UpO2FuaW1hdGlvbi1kdXJhdGlvbjoyc30udWstYW5pbWF0aW9uLXJldmVyc2V7YW5pbWF0aW9uLWRpcmVjdGlvbjpyZXZlcnNlO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbn0udWstYW5pbWF0aW9uLWZhc3R7YW5pbWF0aW9uLWR1cmF0aW9uOi4xc30udWstYW5pbWF0aW9uLXRvZ2dsZTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKSBbY2xhc3MqPXVrLWFuaW1hdGlvbi1de2FuaW1hdGlvbi1uYW1lOm5vbmV9LnVrLWFuaW1hdGlvbi10b2dnbGV7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS51ay1hbmltYXRpb24tdG9nZ2xlOmZvY3Vze291dGxpbmU6MH1Aa2V5ZnJhbWVzIHVrLWZhZGV7MCV7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtdG9wezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgdWstZmFkZS1ib3R0b217MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtbGVmdHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtcmlnaHR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtdG9wLXNtYWxsezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTBweCl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgdWstZmFkZS1ib3R0b20tc21hbGx7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtbGVmdC1zbWFsbHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtcmlnaHQtc21hbGx7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtdG9wLW1lZGl1bXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtYm90dG9tLW1lZGl1bXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTBweCl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgdWstZmFkZS1sZWZ0LW1lZGl1bXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtcmlnaHQtbWVkaXVtezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCg1MHB4KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyB1ay1mYWRlLXNjYWxlLTAyezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjIpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX19QGtleWZyYW1lcyB1ay1mYWRlLXNjYWxlLTE4ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoMS44KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgdWstc2NhbGUta2VuYnVybnN7MCV7dHJhbnNmb3JtOnNjYWxlKDEpfTEwMCV7dHJhbnNmb3JtOnNjYWxlKDEuMil9fUBrZXlmcmFtZXMgdWstc2hha2V7MCUsMTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX0xMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTlweCl9MjAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCl9MzAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC03cHgpfTQwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCg2cHgpfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNXB4KX02MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTNweCl9ODAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDJweCl9OTAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xcHgpfX1Aa2V5ZnJhbWVzIHVrLXN0cm9rZXswJXtzdHJva2UtZGFzaG9mZnNldDp2YXIoLS11ay1hbmltYXRpb24tc3Ryb2tlKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjB9fVtjbGFzcyo9dWstY2hpbGQtd2lkdGhdPip7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9LnVrLWNoaWxkLXdpZHRoLTEtMj4qe3dpZHRoOjUwJX0udWstY2hpbGQtd2lkdGgtMS0zPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00Pip7d2lkdGg6MjUlfS51ay1jaGlsZC13aWR0aC0xLTU+Knt3aWR0aDoyMCV9LnVrLWNoaWxkLXdpZHRoLTEtNj4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG8+Knt3aWR0aDphdXRvfS51ay1jaGlsZC13aWR0aC1leHBhbmQ+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7ZmxleDoxO21pbi13aWR0aDoxcHh9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jaGlsZC13aWR0aC0xLTFcQHM+Knt3aWR0aDoxMDAlfS51ay1jaGlsZC13aWR0aC0xLTJcQHM+Knt3aWR0aDo1MCV9LnVrLWNoaWxkLXdpZHRoLTEtM1xAcz4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyAzLjAwMSl9LnVrLWNoaWxkLXdpZHRoLTEtNFxAcz4qe3dpZHRoOjI1JX0udWstY2hpbGQtd2lkdGgtMS01XEBzPip7d2lkdGg6MjAlfS51ay1jaGlsZC13aWR0aC0xLTZcQHM+Knt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gNi4wMDEpfS51ay1jaGlsZC13aWR0aC1hdXRvXEBzPip7d2lkdGg6YXV0b30udWstY2hpbGQtd2lkdGgtZXhwYW5kXEBzPjpub3QoW2NsYXNzKj11ay13aWR0aF0pe2ZsZXg6MTttaW4td2lkdGg6MXB4fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNoaWxkLXdpZHRoLTEtMVxAbT4qe3dpZHRoOjEwMCV9LnVrLWNoaWxkLXdpZHRoLTEtMlxAbT4qe3dpZHRoOjUwJX0udWstY2hpbGQtd2lkdGgtMS0zXEBtPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00XEBtPip7d2lkdGg6MjUlfS51ay1jaGlsZC13aWR0aC0xLTVcQG0+Knt3aWR0aDoyMCV9LnVrLWNoaWxkLXdpZHRoLTEtNlxAbT4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG9cQG0+Knt3aWR0aDphdXRvfS51ay1jaGlsZC13aWR0aC1leHBhbmRcQG0+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7ZmxleDoxO21pbi13aWR0aDoxcHh9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLWNoaWxkLXdpZHRoLTEtMVxAbD4qe3dpZHRoOjEwMCV9LnVrLWNoaWxkLXdpZHRoLTEtMlxAbD4qe3dpZHRoOjUwJX0udWstY2hpbGQtd2lkdGgtMS0zXEBsPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00XEBsPip7d2lkdGg6MjUlfS51ay1jaGlsZC13aWR0aC0xLTVcQGw+Knt3aWR0aDoyMCV9LnVrLWNoaWxkLXdpZHRoLTEtNlxAbD4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG9cQGw+Knt3aWR0aDphdXRvfS51ay1jaGlsZC13aWR0aC1leHBhbmRcQGw+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7ZmxleDoxO21pbi13aWR0aDoxcHh9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWNoaWxkLXdpZHRoLTEtMVxAeGw+Knt3aWR0aDoxMDAlfS51ay1jaGlsZC13aWR0aC0xLTJcQHhsPip7d2lkdGg6NTAlfS51ay1jaGlsZC13aWR0aC0xLTNcQHhsPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00XEB4bD4qe3dpZHRoOjI1JX0udWstY2hpbGQtd2lkdGgtMS01XEB4bD4qe3dpZHRoOjIwJX0udWstY2hpbGQtd2lkdGgtMS02XEB4bD4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG9cQHhsPip7d2lkdGg6YXV0b30udWstY2hpbGQtd2lkdGgtZXhwYW5kXEB4bD46bm90KFtjbGFzcyo9dWstd2lkdGhdKXtmbGV4OjE7bWluLXdpZHRoOjFweH19W2NsYXNzKj11ay13aWR0aF17Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LnVrLXdpZHRoLTEtMnt3aWR0aDo1MCV9LnVrLXdpZHRoLTEtM3t3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTN7d2lkdGg6Y2FsYygxMDAlICogMiAvIDMuMDAxKX0udWstd2lkdGgtMS00e3dpZHRoOjI1JX0udWstd2lkdGgtMy00e3dpZHRoOjc1JX0udWstd2lkdGgtMS01e3dpZHRoOjIwJX0udWstd2lkdGgtMi01e3dpZHRoOjQwJX0udWstd2lkdGgtMy01e3dpZHRoOjYwJX0udWstd2lkdGgtNC01e3dpZHRoOjgwJX0udWstd2lkdGgtMS02e3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLXdpZHRoLTUtNnt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbHt3aWR0aDoxNTBweH0udWstd2lkdGgtbWVkaXVte3dpZHRoOjMwMHB4fS51ay13aWR0aC1sYXJnZXt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdle3dpZHRoOjYwMHB4fS51ay13aWR0aC14eGxhcmdle3dpZHRoOjc1MHB4fS51ay13aWR0aC1hdXRve3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZHtmbGV4OjE7bWluLXdpZHRoOjFweH1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLXdpZHRoLTEtMVxAc3t3aWR0aDoxMDAlfS51ay13aWR0aC0xLTJcQHN7d2lkdGg6NTAlfS51ay13aWR0aC0xLTNcQHN7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstd2lkdGgtMi0zXEBze3dpZHRoOmNhbGMoMTAwJSAqIDIgLyAzLjAwMSl9LnVrLXdpZHRoLTEtNFxAc3t3aWR0aDoyNSV9LnVrLXdpZHRoLTMtNFxAc3t3aWR0aDo3NSV9LnVrLXdpZHRoLTEtNVxAc3t3aWR0aDoyMCV9LnVrLXdpZHRoLTItNVxAc3t3aWR0aDo0MCV9LnVrLXdpZHRoLTMtNVxAc3t3aWR0aDo2MCV9LnVrLXdpZHRoLTQtNVxAc3t3aWR0aDo4MCV9LnVrLXdpZHRoLTEtNlxAc3t3aWR0aDpjYWxjKDEwMCUgKiAxIC8gNi4wMDEpfS51ay13aWR0aC01LTZcQHN7d2lkdGg6Y2FsYygxMDAlICogNSAvIDYuMDAxKX0udWstd2lkdGgtc21hbGxcQHN7d2lkdGg6MTUwcHh9LnVrLXdpZHRoLW1lZGl1bVxAc3t3aWR0aDozMDBweH0udWstd2lkdGgtbGFyZ2VcQHN7d2lkdGg6NDUwcHh9LnVrLXdpZHRoLXhsYXJnZVxAc3t3aWR0aDo2MDBweH0udWstd2lkdGgteHhsYXJnZVxAc3t3aWR0aDo3NTBweH0udWstd2lkdGgtYXV0b1xAc3t3aWR0aDphdXRvfS51ay13aWR0aC1leHBhbmRcQHN7ZmxleDoxO21pbi13aWR0aDoxcHh9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstd2lkdGgtMS0xXEBte3dpZHRoOjEwMCV9LnVrLXdpZHRoLTEtMlxAbXt3aWR0aDo1MCV9LnVrLXdpZHRoLTEtM1xAbXt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTNcQG17d2lkdGg6Y2FsYygxMDAlICogMiAvIDMuMDAxKX0udWstd2lkdGgtMS00XEBte3dpZHRoOjI1JX0udWstd2lkdGgtMy00XEBte3dpZHRoOjc1JX0udWstd2lkdGgtMS01XEBte3dpZHRoOjIwJX0udWstd2lkdGgtMi01XEBte3dpZHRoOjQwJX0udWstd2lkdGgtMy01XEBte3dpZHRoOjYwJX0udWstd2lkdGgtNC01XEBte3dpZHRoOjgwJX0udWstd2lkdGgtMS02XEBte3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLXdpZHRoLTUtNlxAbXt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbFxAbXt3aWR0aDoxNTBweH0udWstd2lkdGgtbWVkaXVtXEBte3dpZHRoOjMwMHB4fS51ay13aWR0aC1sYXJnZVxAbXt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdlXEBte3dpZHRoOjYwMHB4fS51ay13aWR0aC14eGxhcmdlXEBte3dpZHRoOjc1MHB4fS51ay13aWR0aC1hdXRvXEBte3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZFxAbXtmbGV4OjE7bWluLXdpZHRoOjFweH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstd2lkdGgtMS0xXEBse3dpZHRoOjEwMCV9LnVrLXdpZHRoLTEtMlxAbHt3aWR0aDo1MCV9LnVrLXdpZHRoLTEtM1xAbHt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTNcQGx7d2lkdGg6Y2FsYygxMDAlICogMiAvIDMuMDAxKX0udWstd2lkdGgtMS00XEBse3dpZHRoOjI1JX0udWstd2lkdGgtMy00XEBse3dpZHRoOjc1JX0udWstd2lkdGgtMS01XEBse3dpZHRoOjIwJX0udWstd2lkdGgtMi01XEBse3dpZHRoOjQwJX0udWstd2lkdGgtMy01XEBse3dpZHRoOjYwJX0udWstd2lkdGgtNC01XEBse3dpZHRoOjgwJX0udWstd2lkdGgtMS02XEBse3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLXdpZHRoLTUtNlxAbHt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbFxAbHt3aWR0aDoxNTBweH0udWstd2lkdGgtbWVkaXVtXEBse3dpZHRoOjMwMHB4fS51ay13aWR0aC1sYXJnZVxAbHt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdlXEBse3dpZHRoOjYwMHB4fS51ay13aWR0aC14eGxhcmdlXEBse3dpZHRoOjc1MHB4fS51ay13aWR0aC1hdXRvXEBse3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZFxAbHtmbGV4OjE7bWluLXdpZHRoOjFweH19QG1lZGlhIChtaW4td2lkdGg6MTYwMHB4KXsudWstd2lkdGgtMS0xXEB4bHt3aWR0aDoxMDAlfS51ay13aWR0aC0xLTJcQHhse3dpZHRoOjUwJX0udWstd2lkdGgtMS0zXEB4bHt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTNcQHhse3dpZHRoOmNhbGMoMTAwJSAqIDIgLyAzLjAwMSl9LnVrLXdpZHRoLTEtNFxAeGx7d2lkdGg6MjUlfS51ay13aWR0aC0zLTRcQHhse3dpZHRoOjc1JX0udWstd2lkdGgtMS01XEB4bHt3aWR0aDoyMCV9LnVrLXdpZHRoLTItNVxAeGx7d2lkdGg6NDAlfS51ay13aWR0aC0zLTVcQHhse3dpZHRoOjYwJX0udWstd2lkdGgtNC01XEB4bHt3aWR0aDo4MCV9LnVrLXdpZHRoLTEtNlxAeGx7d2lkdGg6Y2FsYygxMDAlICogMSAvIDYuMDAxKX0udWstd2lkdGgtNS02XEB4bHt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbFxAeGx7d2lkdGg6MTUwcHh9LnVrLXdpZHRoLW1lZGl1bVxAeGx7d2lkdGg6MzAwcHh9LnVrLXdpZHRoLWxhcmdlXEB4bHt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdlXEB4bHt3aWR0aDo2MDBweH0udWstd2lkdGgteHhsYXJnZVxAeGx7d2lkdGg6NzUwcHh9LnVrLXdpZHRoLWF1dG9cQHhse3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZFxAeGx7ZmxleDoxO21pbi13aWR0aDoxcHh9fVtjbGFzcyo9dWstaGVpZ2h0XXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnVrLWhlaWdodC0xLTF7aGVpZ2h0OjEwMCV9LnVrLWhlaWdodC12aWV3cG9ydHttaW4taGVpZ2h0OjEwMHZofS51ay1oZWlnaHQtc21hbGx7aGVpZ2h0OjE1MHB4fS51ay1oZWlnaHQtbWVkaXVte2hlaWdodDozMDBweH0udWstaGVpZ2h0LWxhcmdle2hlaWdodDo0NTBweH0udWstaGVpZ2h0LW1heC1zbWFsbHttYXgtaGVpZ2h0OjE1MHB4fS51ay1oZWlnaHQtbWF4LW1lZGl1bXttYXgtaGVpZ2h0OjMwMHB4fS51ay1oZWlnaHQtbWF4LWxhcmdle21heC1oZWlnaHQ6NDUwcHh9LnVrLXRleHQtbGVhZHtmb250LXNpemU6MS41cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojMzMzfS51ay10ZXh0LW1ldGF7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40O2NvbG9yOiM5OTl9LnVrLXRleHQtbWV0YSBhe2NvbG9yOiM5OTl9LnVrLXRleHQtbWV0YSBhOmhvdmVye2NvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVrLXRleHQtc21hbGx7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS41fS51ay10ZXh0LWxhcmdle2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MS41fS51ay10ZXh0LWxpZ2h0e2ZvbnQtd2VpZ2h0OjMwMH0udWstdGV4dC1ub3JtYWx7Zm9udC13ZWlnaHQ6NDAwfS51ay10ZXh0LWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS51ay10ZXh0LWxpZ2h0ZXJ7Zm9udC13ZWlnaHQ6bGlnaHRlcn0udWstdGV4dC1ib2xkZXJ7Zm9udC13ZWlnaHQ6Ym9sZGVyfS51ay10ZXh0LWl0YWxpY3tmb250LXN0eWxlOml0YWxpY30udWstdGV4dC1jYXBpdGFsaXple3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemUhaW1wb3J0YW50fS51ay10ZXh0LXVwcGVyY2FzZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UhaW1wb3J0YW50fS51ay10ZXh0LWxvd2VyY2FzZXt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2UhaW1wb3J0YW50fS51ay10ZXh0LW11dGVke2NvbG9yOiM5OTkhaW1wb3J0YW50fS51ay10ZXh0LWVtcGhhc2lze2NvbG9yOiMzMzMhaW1wb3J0YW50fS51ay10ZXh0LXByaW1hcnl7Y29sb3I6IzFlODdmMCFpbXBvcnRhbnR9LnVrLXRleHQtc2Vjb25kYXJ5e2NvbG9yOiMyMjIhaW1wb3J0YW50fS51ay10ZXh0LXN1Y2Nlc3N7Y29sb3I6IzMyZDI5NiFpbXBvcnRhbnR9LnVrLXRleHQtd2FybmluZ3tjb2xvcjojZmFhMDVhIWltcG9ydGFudH0udWstdGV4dC1kYW5nZXJ7Y29sb3I6I2YwNTA2ZSFpbXBvcnRhbnR9LnVrLXRleHQtYmFja2dyb3VuZHstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOiMxZTg3ZjAhaW1wb3J0YW50fUBzdXBwb3J0cyAoLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dCl7LnVrLXRleHQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiMxZTg3ZjB9fS51ay10ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0udWstdGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udWstdGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fS51ay10ZXh0LWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLXRleHQtbGVmdFxAc3t0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS51ay10ZXh0LXJpZ2h0XEBze3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fS51ay10ZXh0LWNlbnRlclxAc3t0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstdGV4dC1sZWZ0XEBte3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnVrLXRleHQtcmlnaHRcQG17dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnVrLXRleHQtY2VudGVyXEBte3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstdGV4dC1sZWZ0XEBse3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnVrLXRleHQtcmlnaHRcQGx7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnVrLXRleHQtY2VudGVyXEBse3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTYwMHB4KXsudWstdGV4dC1sZWZ0XEB4bHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS51ay10ZXh0LXJpZ2h0XEB4bHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udWstdGV4dC1jZW50ZXJcQHhse3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19LnVrLXRleHQtdG9we3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnR9LnVrLXRleHQtbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnR9LnVrLXRleHQtYm90dG9te3ZlcnRpY2FsLWFsaWduOmJvdHRvbSFpbXBvcnRhbnR9LnVrLXRleHQtYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50fS51ay10ZXh0LW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnVrLXRleHQtdHJ1bmNhdGV7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfXRkLnVrLXRleHQtdHJ1bmNhdGUsdGgudWstdGV4dC10cnVuY2F0ZXttYXgtd2lkdGg6MH0udWstdGV4dC1icmVha3tvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9dGQudWstdGV4dC1icmVhayx0aC51ay10ZXh0LWJyZWFre3dvcmQtYnJlYWs6YnJlYWstYWxsfVtjbGFzcyo9dWstY29sdW1uLV17Y29sdW1uLWdhcDozMHB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2NsYXNzKj11ay1jb2x1bW4tXXtjb2x1bW4tZ2FwOjQwcHh9fVtjbGFzcyo9dWstY29sdW1uLV0gaW1ne3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9LnVrLWNvbHVtbi1kaXZpZGVye2NvbHVtbi1ydWxlOjFweCBzb2xpZCAjZTVlNWU1O2NvbHVtbi1nYXA6NjBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1jb2x1bW4tZGl2aWRlcntjb2x1bW4tZ2FwOjgwcHh9fS51ay1jb2x1bW4tMS0ye2NvbHVtbi1jb3VudDoyfS51ay1jb2x1bW4tMS0ze2NvbHVtbi1jb3VudDozfS51ay1jb2x1bW4tMS00e2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01e2NvbHVtbi1jb3VudDo1fS51ay1jb2x1bW4tMS02e2NvbHVtbi1jb3VudDo2fUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstY29sdW1uLTEtMlxAc3tjb2x1bW4tY291bnQ6Mn0udWstY29sdW1uLTEtM1xAc3tjb2x1bW4tY291bnQ6M30udWstY29sdW1uLTEtNFxAc3tjb2x1bW4tY291bnQ6NH0udWstY29sdW1uLTEtNVxAc3tjb2x1bW4tY291bnQ6NX0udWstY29sdW1uLTEtNlxAc3tjb2x1bW4tY291bnQ6Nn19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1jb2x1bW4tMS0yXEBte2NvbHVtbi1jb3VudDoyfS51ay1jb2x1bW4tMS0zXEBte2NvbHVtbi1jb3VudDozfS51ay1jb2x1bW4tMS00XEBte2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01XEBte2NvbHVtbi1jb3VudDo1fS51ay1jb2x1bW4tMS02XEBte2NvbHVtbi1jb3VudDo2fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1jb2x1bW4tMS0yXEBse2NvbHVtbi1jb3VudDoyfS51ay1jb2x1bW4tMS0zXEBse2NvbHVtbi1jb3VudDozfS51ay1jb2x1bW4tMS00XEBse2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01XEBse2NvbHVtbi1jb3VudDo1fS51ay1jb2x1bW4tMS02XEBse2NvbHVtbi1jb3VudDo2fX1AbWVkaWEgKG1pbi13aWR0aDoxNjAwcHgpey51ay1jb2x1bW4tMS0yXEB4bHtjb2x1bW4tY291bnQ6Mn0udWstY29sdW1uLTEtM1xAeGx7Y29sdW1uLWNvdW50OjN9LnVrLWNvbHVtbi0xLTRcQHhse2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01XEB4bHtjb2x1bW4tY291bnQ6NX0udWstY29sdW1uLTEtNlxAeGx7Y29sdW1uLWNvdW50OjZ9fS51ay1jb2x1bW4tc3Bhbntjb2x1bW4tc3BhbjphbGx9LnVrLWNvdmVye21heC13aWR0aDpub25lO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfWlmcmFtZS51ay1jb3Zlcntwb2ludGVyLWV2ZW50czpub25lfS51ay1jb3Zlci1jb250YWluZXJ7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1iYWNrZ3JvdW5kLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjojZmZmfS51ay1iYWNrZ3JvdW5kLW11dGVke2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmOH0udWstYmFja2dyb3VuZC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzFlODdmMH0udWstYmFja2dyb3VuZC1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojMjIyfS51ay1iYWNrZ3JvdW5kLWNvbnRhaW4sLnVrLWJhY2tncm91bmQtY292ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWstYmFja2dyb3VuZC1jb3ZlcntiYWNrZ3JvdW5kLXNpemU6Y292ZXJ9LnVrLWJhY2tncm91bmQtY29udGFpbntiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn0udWstYmFja2dyb3VuZC10b3AtbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWstYmFja2dyb3VuZC10b3AtY2VudGVye2JhY2tncm91bmQtcG9zaXRpb246NTAlIDB9LnVrLWJhY2tncm91bmQtdG9wLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246MTAwJSAwfS51ay1iYWNrZ3JvdW5kLWNlbnRlci1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246MCA1MCV9LnVrLWJhY2tncm91bmQtY2VudGVyLWNlbnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCV9LnVrLWJhY2tncm91bmQtY2VudGVyLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246MTAwJSA1MCV9LnVrLWJhY2tncm91bmQtYm90dG9tLWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIDEwMCV9LnVrLWJhY2tncm91bmQtYm90dG9tLWNlbnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSAxMDAlfS51ay1iYWNrZ3JvdW5kLWJvdHRvbS1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgMTAwJX0udWstYmFja2dyb3VuZC1ub3JlcGVhdHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnVrLWJhY2tncm91bmQtZml4ZWR7YmFja2dyb3VuZC1hdHRhY2htZW50OmZpeGVkO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufUBtZWRpYSAocG9pbnRlcjpjb2Fyc2Upey51ay1iYWNrZ3JvdW5kLWZpeGVke2JhY2tncm91bmQtYXR0YWNobWVudDpzY3JvbGx9fUBtZWRpYSAobWF4LXdpZHRoOjYzOXB4KXsudWstYmFja2dyb3VuZC1pbWFnZVxAc3tiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo5NTlweCl7LnVrLWJhY2tncm91bmQtaW1hZ2VcQG17YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6MTE5OXB4KXsudWstYmFja2dyb3VuZC1pbWFnZVxAbHtiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDoxNTk5cHgpey51ay1iYWNrZ3JvdW5kLWltYWdlXEB4bHtiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fX0udWstYmFja2dyb3VuZC1ibGVuZC1tdWx0aXBseXtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6bXVsdGlwbHl9LnVrLWJhY2tncm91bmQtYmxlbmQtc2NyZWVue2JhY2tncm91bmQtYmxlbmQtbW9kZTpzY3JlZW59LnVrLWJhY2tncm91bmQtYmxlbmQtb3ZlcmxheXtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6b3ZlcmxheX0udWstYmFja2dyb3VuZC1ibGVuZC1kYXJrZW57YmFja2dyb3VuZC1ibGVuZC1tb2RlOmRhcmtlbn0udWstYmFja2dyb3VuZC1ibGVuZC1saWdodGVue2JhY2tncm91bmQtYmxlbmQtbW9kZTpsaWdodGVufS51ay1iYWNrZ3JvdW5kLWJsZW5kLWNvbG9yLWRvZGdle2JhY2tncm91bmQtYmxlbmQtbW9kZTpjb2xvci1kb2RnZX0udWstYmFja2dyb3VuZC1ibGVuZC1jb2xvci1idXJue2JhY2tncm91bmQtYmxlbmQtbW9kZTpjb2xvci1idXJufS51ay1iYWNrZ3JvdW5kLWJsZW5kLWhhcmQtbGlnaHR7YmFja2dyb3VuZC1ibGVuZC1tb2RlOmhhcmQtbGlnaHR9LnVrLWJhY2tncm91bmQtYmxlbmQtc29mdC1saWdodHtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6c29mdC1saWdodH0udWstYmFja2dyb3VuZC1ibGVuZC1kaWZmZXJlbmNle2JhY2tncm91bmQtYmxlbmQtbW9kZTpkaWZmZXJlbmNlfS51ay1iYWNrZ3JvdW5kLWJsZW5kLWV4Y2x1c2lvbntiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6ZXhjbHVzaW9ufS51ay1iYWNrZ3JvdW5kLWJsZW5kLWh1ZXtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6aHVlfS51ay1iYWNrZ3JvdW5kLWJsZW5kLXNhdHVyYXRpb257YmFja2dyb3VuZC1ibGVuZC1tb2RlOnNhdHVyYXRpb259LnVrLWJhY2tncm91bmQtYmxlbmQtY29sb3J7YmFja2dyb3VuZC1ibGVuZC1tb2RlOmNvbG9yfS51ay1iYWNrZ3JvdW5kLWJsZW5kLWx1bWlub3NpdHl7YmFja2dyb3VuZC1ibGVuZC1tb2RlOmx1bWlub3NpdHl9W2NsYXNzKj11ay1hbGlnbl17ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjMwcHh9KitbY2xhc3MqPXVrLWFsaWduXXttYXJnaW4tdG9wOjMwcHh9LnVrLWFsaWduLWNlbnRlcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS51ay1hbGlnbi1sZWZ0e21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6MzBweDtmbG9hdDpsZWZ0fS51ay1hbGlnbi1yaWdodHttYXJnaW4tdG9wOjA7bWFyZ2luLWxlZnQ6MzBweDtmbG9hdDpyaWdodH1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLWFsaWduLWxlZnRcQHN7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDozMHB4O2Zsb2F0OmxlZnR9LnVrLWFsaWduLXJpZ2h0XEBze21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDozMHB4O2Zsb2F0OnJpZ2h0fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWFsaWduLWxlZnRcQG17bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDozMHB4O2Zsb2F0OmxlZnR9LnVrLWFsaWduLXJpZ2h0XEBte21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDozMHB4O2Zsb2F0OnJpZ2h0fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1hbGlnbi1sZWZ0XEBse21hcmdpbi10b3A6MDtmbG9hdDpsZWZ0fS51ay1hbGlnbi1yaWdodFxAbHttYXJnaW4tdG9wOjA7ZmxvYXQ6cmlnaHR9LnVrLWFsaWduLWxlZnQsLnVrLWFsaWduLWxlZnRcQGwsLnVrLWFsaWduLWxlZnRcQG0sLnVrLWFsaWduLWxlZnRcQHN7bWFyZ2luLXJpZ2h0OjQwcHh9LnVrLWFsaWduLXJpZ2h0LC51ay1hbGlnbi1yaWdodFxAbCwudWstYWxpZ24tcmlnaHRcQG0sLnVrLWFsaWduLXJpZ2h0XEBze21hcmdpbi1sZWZ0OjQwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWFsaWduLWxlZnRcQHhse21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6NDBweDtmbG9hdDpsZWZ0fS51ay1hbGlnbi1yaWdodFxAeGx7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjQwcHg7ZmxvYXQ6cmlnaHR9fS51ay1zdmcsLnVrLXN2Zzpub3QoLnVrLXByZXNlcnZlKSBbZmlsbCo9JyMnXTpub3QoLnVrLXByZXNlcnZlKXtmaWxsOmN1cnJlbnRjb2xvcn0udWstc3ZnOm5vdCgudWstcHJlc2VydmUpIFtzdHJva2UqPScjJ106bm90KC51ay1wcmVzZXJ2ZSl7c3Ryb2tlOmN1cnJlbnRjb2xvcn0udWstc3Zne3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0udWstcGFuZWx7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94fS51ay1wYW5lbDo6YWZ0ZXIsLnVrLXBhbmVsOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1wYW5lbDo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstcGFuZWw+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay1wYW5lbC1zY3JvbGxhYmxle2hlaWdodDoxNzBweDtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cmVzaXplOmJvdGh9LnVrLWNsZWFyZml4OjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlLWNlbGx9LnVrLWNsZWFyZml4OjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0udWstZmxvYXQtbGVmdHtmbG9hdDpsZWZ0fS51ay1mbG9hdC1yaWdodHtmbG9hdDpyaWdodH1bY2xhc3MqPXVrLWZsb2F0LV17bWF4LXdpZHRoOjEwMCV9LnVrLW92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59LnVrLW92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0udWstb3ZlcmZsb3ctYXV0bz46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLXJlc2l6ZXtyZXNpemU6Ym90aH0udWstcmVzaXplLXZlcnRpY2Fse3Jlc2l6ZTp2ZXJ0aWNhbH0udWstZGlzcGxheS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0udWstZGlzcGxheS1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS51ay1kaXNwbGF5LWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9W2NsYXNzKj11ay1pbmxpbmVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS51ay1pbmxpbmUtY2xpcHtvdmVyZmxvdzpoaWRkZW59LnVrLXByZXNlcnZlLXdpZHRoLC51ay1wcmVzZXJ2ZS13aWR0aCBjYW52YXMsLnVrLXByZXNlcnZlLXdpZHRoIGltZywudWstcHJlc2VydmUtd2lkdGggc3ZnLC51ay1wcmVzZXJ2ZS13aWR0aCB2aWRlb3ttYXgtd2lkdGg6bm9uZX0udWstcmVzcG9uc2l2ZS1oZWlnaHQsLnVrLXJlc3BvbnNpdmUtd2lkdGh7Ym94LXNpemluZzpib3JkZXItYm94fS51ay1yZXNwb25zaXZlLXdpZHRoe21heC13aWR0aDoxMDAlIWltcG9ydGFudDtoZWlnaHQ6YXV0b30udWstcmVzcG9uc2l2ZS1oZWlnaHR7bWF4LWhlaWdodDoxMDAlO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LnVrLWJvcmRlci1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCV9LnVrLWJvcmRlci1waWxse2JvcmRlci1yYWRpdXM6NTAwcHh9LnVrLWJvcmRlci1yb3VuZGVke2JvcmRlci1yYWRpdXM6NXB4fS51ay1pbmxpbmUtY2xpcFtjbGFzcyo9dWstYm9yZGVyLV17LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0udWstYm94LXNoYWRvdy1zbWFsbHtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctbWVkaXVte2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctbGFyZ2V7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWJveC1zaGFkb3cteGxhcmdle2JveC1zaGFkb3c6MCAyOHB4IDUwcHggcmdiYSgwLDAsMCwuMTYpfVtjbGFzcyo9dWstYm94LXNoYWRvdy1ob3Zlcl17dHJhbnNpdGlvbjpib3gtc2hhZG93IC4xcyBlYXNlLWluLW91dH0udWstYm94LXNoYWRvdy1ob3Zlci1zbWFsbDpob3Zlcntib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctaG92ZXItbWVkaXVtOmhvdmVye2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctaG92ZXItbGFyZ2U6aG92ZXJ7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWJveC1zaGFkb3ctaG92ZXIteGxhcmdlOmhvdmVye2JveC1zaGFkb3c6MCAyOHB4IDUwcHggcmdiYSgwLDAsMCwuMTYpfUBzdXBwb3J0cyAoZmlsdGVyOmJsdXIoMCkpey51ay1ib3gtc2hhZG93LWJvdHRvbXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVrLWJveC1zaGFkb3ctYm90dG9tOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTMwcHg7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czoxMDAlO2JhY2tncm91bmQ6IzQ0NDtmaWx0ZXI6Ymx1cigyMHB4KX0udWstYm94LXNoYWRvdy1ib3R0b20+Kntwb3NpdGlvbjpyZWxhdGl2ZX19LnVrLWRyb3BjYXA6OmZpcnN0LWxldHRlciwudWstZHJvcGNhcD5wOmZpcnN0LW9mLXR5cGU6OmZpcnN0LWxldHRlcntkaXNwbGF5OmJsb2NrO21hcmdpbi1yaWdodDoxMHB4O2Zsb2F0OmxlZnQ7Zm9udC1zaXplOjQuNWVtO2xpbmUtaGVpZ2h0OjE7bWFyZ2luLWJvdHRvbTotMnB4fUAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKXsudWstZHJvcGNhcDo6Zmlyc3QtbGV0dGVyLC51ay1kcm9wY2FwPnA6Zmlyc3Qtb2YtdHlwZTo6Zmlyc3QtbGV0dGVye21hcmdpbi10b3A6MS4xJX19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey51ay1kcm9wY2FwPnA6Zmlyc3Qtb2YtdHlwZTo6Zmlyc3QtbGV0dGVye2ZvbnQtc2l6ZToxZW19fS51ay1sb2dve2ZvbnQtc2l6ZToxLjVyZW07Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sIkhlbHZldGljYSBOZXVlIixBcmlhbCwiTm90byBTYW5zIixzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7Y29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstbG9nbzpmb2N1cywudWstbG9nbzpob3Zlcntjb2xvcjojNjY2O291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstbG9nby1pbnZlcnNle2Rpc3BsYXk6bm9uZX0udWstZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0udWstZHJhZywudWstZHJhZyAqe2N1cnNvcjptb3ZlfS51ay1kcmFnIGlmcmFtZXtwb2ludGVyLWV2ZW50czpub25lfS51ay1kcmFnb3Zlcntib3gtc2hhZG93OjAgMCAyMHB4IHJnYmEoMTAwLDEwMCwxMDAsLjMpfS51ay1ibGVuZC1tdWx0aXBseXttaXgtYmxlbmQtbW9kZTptdWx0aXBseX0udWstYmxlbmQtc2NyZWVue21peC1ibGVuZC1tb2RlOnNjcmVlbn0udWstYmxlbmQtb3ZlcmxheXttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS51ay1ibGVuZC1kYXJrZW57bWl4LWJsZW5kLW1vZGU6ZGFya2VufS51ay1ibGVuZC1saWdodGVue21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnVrLWJsZW5kLWNvbG9yLWRvZGdle21peC1ibGVuZC1tb2RlOmNvbG9yLWRvZGdlfS51ay1ibGVuZC1jb2xvci1idXJue21peC1ibGVuZC1tb2RlOmNvbG9yLWJ1cm59LnVrLWJsZW5kLWhhcmQtbGlnaHR7bWl4LWJsZW5kLW1vZGU6aGFyZC1saWdodH0udWstYmxlbmQtc29mdC1saWdodHttaXgtYmxlbmQtbW9kZTpzb2Z0LWxpZ2h0fS51ay1ibGVuZC1kaWZmZXJlbmNle21peC1ibGVuZC1tb2RlOmRpZmZlcmVuY2V9LnVrLWJsZW5kLWV4Y2x1c2lvbnttaXgtYmxlbmQtbW9kZTpleGNsdXNpb259LnVrLWJsZW5kLWh1ZXttaXgtYmxlbmQtbW9kZTpodWV9LnVrLWJsZW5kLXNhdHVyYXRpb257bWl4LWJsZW5kLW1vZGU6c2F0dXJhdGlvbn0udWstYmxlbmQtY29sb3J7bWl4LWJsZW5kLW1vZGU6Y29sb3J9LnVrLWJsZW5kLWx1bWlub3NpdHl7bWl4LWJsZW5kLW1vZGU6bHVtaW5vc2l0eX0udWstdHJhbnNmb3JtLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9LnVrLXRyYW5zZm9ybS1vcmlnaW4tdG9wLWxlZnR7dHJhbnNmb3JtLW9yaWdpbjowIDB9LnVrLXRyYW5zZm9ybS1vcmlnaW4tdG9wLWNlbnRlcnt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAwfS51ay10cmFuc2Zvcm0tb3JpZ2luLXRvcC1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH0udWstdHJhbnNmb3JtLW9yaWdpbi1jZW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlfS51ay10cmFuc2Zvcm0tb3JpZ2luLWNlbnRlci1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgNTAlfS51ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1sZWZ0e3RyYW5zZm9ybS1vcmlnaW46MCAxMDAlfS51ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1jZW50ZXJ7dHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJX0udWstdHJhbnNmb3JtLW9yaWdpbi1ib3R0b20tcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9LnVrLWZsZXh7ZGlzcGxheTpmbGV4fS51ay1mbGV4LWlubGluZXtkaXNwbGF5OmlubGluZS1mbGV4fS51ay1mbGV4LWlubGluZTo6YWZ0ZXIsLnVrLWZsZXgtaW5saW5lOjpiZWZvcmUsLnVrLWZsZXg6OmFmdGVyLC51ay1mbGV4OjpiZWZvcmV7ZGlzcGxheTpub25lfS51ay1mbGV4LWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS51ay1mbGV4LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1mbGV4LWxlZnRcQHN7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVyXEBze2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtcmlnaHRcQHN7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS51ay1mbGV4LWJldHdlZW5cQHN7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5kXEBze2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstZmxleC1sZWZ0XEBte2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS51ay1mbGV4LWNlbnRlclxAbXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS51ay1mbGV4LXJpZ2h0XEBte2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0udWstZmxleC1iZXR3ZWVuXEBte2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS51ay1mbGV4LWFyb3VuZFxAbXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1mbGV4LWxlZnRcQGx7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVyXEBse2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtcmlnaHRcQGx7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS51ay1mbGV4LWJldHdlZW5cQGx7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5kXEBse2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWZsZXgtbGVmdFxAeGx7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVyXEB4bHtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS51ay1mbGV4LXJpZ2h0XEB4bHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnVrLWZsZXgtYmV0d2VlblxAeGx7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5kXEB4bHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfX0udWstZmxleC1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnVrLWZsZXgtdG9we2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LnVrLWZsZXgtbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0udWstZmxleC1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9LnVrLWZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30udWstZmxleC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0udWstZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS51ay1mbGV4LWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS51ay1mbGV4LW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwfS51ay1mbGV4LXdyYXB7ZmxleC13cmFwOndyYXB9LnVrLWZsZXgtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2V9LnVrLWZsZXgtd3JhcC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaH0udWstZmxleC13cmFwLXRvcHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtd3JhcC1taWRkbGV7YWxpZ24tY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtd3JhcC1ib3R0b217YWxpZ24tY29udGVudDpmbGV4LWVuZH0udWstZmxleC13cmFwLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVufS51ay1mbGV4LXdyYXAtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS51ay1mbGV4LWZpcnN0e29yZGVyOi0xfS51ay1mbGV4LWxhc3R7b3JkZXI6OTl9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1mbGV4LWZpcnN0XEBze29yZGVyOi0xfS51ay1mbGV4LWxhc3RcQHN7b3JkZXI6OTl9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstZmxleC1maXJzdFxAbXtvcmRlcjotMX0udWstZmxleC1sYXN0XEBte29yZGVyOjk5fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1mbGV4LWZpcnN0XEBse29yZGVyOi0xfS51ay1mbGV4LWxhc3RcQGx7b3JkZXI6OTl9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWZsZXgtZmlyc3RcQHhse29yZGVyOi0xfS51ay1mbGV4LWxhc3RcQHhse29yZGVyOjk5fX0udWstZmxleC1ub25le2ZsZXg6bm9uZX0udWstZmxleC1hdXRve2ZsZXg6YXV0b30udWstZmxleC0xe2ZsZXg6MX0udWstbWFyZ2lue21hcmdpbi1ib3R0b206MjBweH0qKy51ay1tYXJnaW57bWFyZ2luLXRvcDoyMHB4IWltcG9ydGFudH0udWstbWFyZ2luLXRvcHttYXJnaW4tdG9wOjIwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tYm90dG9te21hcmdpbi1ib3R0b206MjBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1sZWZ0e21hcmdpbi1sZWZ0OjIwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tcmlnaHR7bWFyZ2luLXJpZ2h0OjIwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tc21hbGx7bWFyZ2luLWJvdHRvbToxMHB4fSorLnVrLW1hcmdpbi1zbWFsbHttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tc21hbGwtdG9we21hcmdpbi10b3A6MTBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1zbWFsbC1ib3R0b217bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudH0udWstbWFyZ2luLXNtYWxsLWxlZnR7bWFyZ2luLWxlZnQ6MTBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1zbWFsbC1yaWdodHttYXJnaW4tcmlnaHQ6MTBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1tZWRpdW17bWFyZ2luLWJvdHRvbTo0MHB4fSorLnVrLW1hcmdpbi1tZWRpdW17bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLW1lZGl1bS10b3B7bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLW1lZGl1bS1ib3R0b217bWFyZ2luLWJvdHRvbTo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLW1lZGl1bS1sZWZ0e21hcmdpbi1sZWZ0OjQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbWVkaXVtLXJpZ2h0e21hcmdpbi1yaWdodDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdle21hcmdpbi1ib3R0b206NDBweH0qKy51ay1tYXJnaW4tbGFyZ2V7bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdlLXRvcHttYXJnaW4tdG9wOjQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbGFyZ2UtYm90dG9te21hcmdpbi1ib3R0b206NDBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1sYXJnZS1sZWZ0e21hcmdpbi1sZWZ0OjQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbGFyZ2UtcmlnaHR7bWFyZ2luLXJpZ2h0OjQwcHghaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLW1hcmdpbi1sYXJnZXttYXJnaW4tYm90dG9tOjcwcHh9KisudWstbWFyZ2luLWxhcmdle21hcmdpbi10b3A6NzBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1sYXJnZS10b3B7bWFyZ2luLXRvcDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdlLWJvdHRvbXttYXJnaW4tYm90dG9tOjcwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbGFyZ2UtbGVmdHttYXJnaW4tbGVmdDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdlLXJpZ2h0e21hcmdpbi1yaWdodDo3MHB4IWltcG9ydGFudH19LnVrLW1hcmdpbi14bGFyZ2V7bWFyZ2luLWJvdHRvbTo3MHB4fSorLnVrLW1hcmdpbi14bGFyZ2V7bWFyZ2luLXRvcDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS10b3B7bWFyZ2luLXRvcDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS1ib3R0b217bWFyZ2luLWJvdHRvbTo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS1sZWZ0e21hcmdpbi1sZWZ0OjcwcHghaW1wb3J0YW50fS51ay1tYXJnaW4teGxhcmdlLXJpZ2h0e21hcmdpbi1yaWdodDo3MHB4IWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1tYXJnaW4teGxhcmdle21hcmdpbi1ib3R0b206MTQwcHh9KisudWstbWFyZ2luLXhsYXJnZXttYXJnaW4tdG9wOjE0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS10b3B7bWFyZ2luLXRvcDoxNDBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi14bGFyZ2UtYm90dG9te21hcmdpbi1ib3R0b206MTQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4teGxhcmdlLWxlZnR7bWFyZ2luLWxlZnQ6MTQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4teGxhcmdlLXJpZ2h0e21hcmdpbi1yaWdodDoxNDBweCFpbXBvcnRhbnR9fS51ay1tYXJnaW4tYXV0b3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLXRvcHttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1ib3R0b217bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0udWstbWFyZ2luLWF1dG8tbGVmdHttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH0udWstbWFyZ2luLWF1dG8tcmlnaHR7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by12ZXJ0aWNhbHttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1tYXJnaW4tYXV0b1xAc3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLWxlZnRcQHN7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLXJpZ2h0XEBze21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1tYXJnaW4tYXV0b1xAbXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLWxlZnRcQG17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLXJpZ2h0XEBte21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstbWFyZ2luLWF1dG9cQGx7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1sZWZ0XEBse21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1yaWdodFxAbHttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLW1hcmdpbi1hdXRvXEB4bHttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLWxlZnRcQHhse21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1yaWdodFxAeGx7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX0udWstbWFyZ2luLXJlbW92ZXttYXJnaW46MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtdG9we21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtYm90dG9te21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtbGVmdHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0udWstbWFyZ2luLXJlbW92ZS1yaWdodHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtdmVydGljYWx7bWFyZ2luLXRvcDowIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS51ay1tYXJnaW4tcmVtb3ZlLWFkamFjZW50KyosLnVrLW1hcmdpbi1yZW1vdmUtZmlyc3QtY2hpbGQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtbGFzdC1jaGlsZD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstbWFyZ2luLXJlbW92ZS1sZWZ0XEBze21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS51ay1tYXJnaW4tcmVtb3ZlLXJpZ2h0XEBze21hcmdpbi1yaWdodDowIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1tYXJnaW4tcmVtb3ZlLWxlZnRcQG17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtcmlnaHRcQG17bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1tYXJnaW4tcmVtb3ZlLWxlZnRcQGx7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtcmlnaHRcQGx7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxNjAwcHgpey51ay1tYXJnaW4tcmVtb3ZlLWxlZnRcQHhse21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS51ay1tYXJnaW4tcmVtb3ZlLXJpZ2h0XEB4bHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9fS51ay1wYWRkaW5ne3BhZGRpbmc6MzBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1wYWRkaW5ne3BhZGRpbmc6NDBweH19LnVrLXBhZGRpbmctc21hbGx7cGFkZGluZzoxNXB4fS51ay1wYWRkaW5nLWxhcmdle3BhZGRpbmc6MzBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1wYWRkaW5nLWxhcmdle3BhZGRpbmc6NzBweH19LnVrLXBhZGRpbmctcmVtb3Zle3BhZGRpbmc6MCFpbXBvcnRhbnR9LnVrLXBhZGRpbmctcmVtb3ZlLXRvcHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0udWstcGFkZGluZy1yZW1vdmUtYm90dG9te3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS51ay1wYWRkaW5nLXJlbW92ZS1sZWZ0e3BhZGRpbmctbGVmdDowIWltcG9ydGFudH0udWstcGFkZGluZy1yZW1vdmUtcmlnaHR7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH0udWstcGFkZGluZy1yZW1vdmUtdmVydGljYWx7cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnVrLXBhZGRpbmctcmVtb3ZlLWhvcml6b250YWx7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2NsYXNzKj11ay1wb3NpdGlvbi1ib3R0b21dLFtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyXSxbY2xhc3MqPXVrLXBvc2l0aW9uLWxlZnRdLFtjbGFzcyo9dWstcG9zaXRpb24tcmlnaHRdLFtjbGFzcyo9dWstcG9zaXRpb24tdG9wXXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnR9LnVrLXBvc2l0aW9uLXRvcHt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0udWstcG9zaXRpb24tYm90dG9te2JvdHRvbTowO2xlZnQ6MDtyaWdodDowfS51ay1wb3NpdGlvbi1sZWZ0e3RvcDowO2JvdHRvbTowO2xlZnQ6MH0udWstcG9zaXRpb24tcmlnaHR7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MH0udWstcG9zaXRpb24tdG9wLWxlZnR7dG9wOjA7bGVmdDowfS51ay1wb3NpdGlvbi10b3AtcmlnaHR7dG9wOjA7cmlnaHQ6MH0udWstcG9zaXRpb24tYm90dG9tLWxlZnR7Ym90dG9tOjA7bGVmdDowfS51ay1wb3NpdGlvbi1ib3R0b20tcmlnaHR7Ym90dG9tOjA7cmlnaHQ6MH0udWstcG9zaXRpb24tY2VudGVye3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3dpZHRoOm1heC1jb250ZW50O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH1bY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0XSxbY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1yaWdodF17dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udWstcG9zaXRpb24tY2VudGVyLWxlZnR7bGVmdDowfS51ay1wb3NpdGlvbi1jZW50ZXItcmlnaHR7cmlnaHQ6MH0udWstcG9zaXRpb24tY2VudGVyLWxlZnQtb3V0e3JpZ2h0OjEwMCU7d2lkdGg6bWF4LWNvbnRlbnR9LnVrLXBvc2l0aW9uLWNlbnRlci1yaWdodC1vdXR7bGVmdDoxMDAlO3dpZHRoOm1heC1jb250ZW50fS51ay1wb3NpdGlvbi1ib3R0b20tY2VudGVyLC51ay1wb3NpdGlvbi10b3AtY2VudGVye2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3dpZHRoOm1heC1jb250ZW50O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0udWstcG9zaXRpb24tdG9wLWNlbnRlcnt0b3A6MH0udWstcG9zaXRpb24tYm90dG9tLWNlbnRlcntib3R0b206MH0udWstcG9zaXRpb24tY292ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjB9LnVrLXBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudH0udWstcG9zaXRpb24tYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50fS51ay1wb3NpdGlvbi1maXhlZHtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnR9LnVrLXBvc2l0aW9uLXotaW5kZXh7ei1pbmRleDoxfS51ay1wb3NpdGlvbi1zbWFsbHttYXgtd2lkdGg6Y2FsYygxMDAlIC0gKDE1cHggKiAyKSk7bWFyZ2luOjE1cHh9LnVrLXBvc2l0aW9uLXNtYWxsLnVrLXBvc2l0aW9uLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgdHJhbnNsYXRlKC0xNXB4LC0xNXB4KX0udWstcG9zaXRpb24tc21hbGxbY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0XSwudWstcG9zaXRpb24tc21hbGxbY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1yaWdodF17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWSgtMTVweCl9LnVrLXBvc2l0aW9uLXNtYWxsLnVrLXBvc2l0aW9uLWJvdHRvbS1jZW50ZXIsLnVrLXBvc2l0aW9uLXNtYWxsLnVrLXBvc2l0aW9uLXRvcC1jZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWCgtMTVweCl9LnVrLXBvc2l0aW9uLW1lZGl1bXttYXgtd2lkdGg6Y2FsYygxMDAlIC0gKDMwcHggKiAyKSk7bWFyZ2luOjMwcHh9LnVrLXBvc2l0aW9uLW1lZGl1bS51ay1wb3NpdGlvbi1jZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHRyYW5zbGF0ZSgtMzBweCwtMzBweCl9LnVrLXBvc2l0aW9uLW1lZGl1bVtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyLWxlZnRdLC51ay1wb3NpdGlvbi1tZWRpdW1bY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1yaWdodF17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWSgtMzBweCl9LnVrLXBvc2l0aW9uLW1lZGl1bS51ay1wb3NpdGlvbi1ib3R0b20tY2VudGVyLC51ay1wb3NpdGlvbi1tZWRpdW0udWstcG9zaXRpb24tdG9wLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVYKC0zMHB4KX0udWstcG9zaXRpb24tbGFyZ2V7bWF4LXdpZHRoOmNhbGMoMTAwJSAtICgzMHB4ICogMikpO21hcmdpbjozMHB4fS51ay1wb3NpdGlvbi1sYXJnZS51ay1wb3NpdGlvbi1jZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHRyYW5zbGF0ZSgtMzBweCwtMzBweCl9LnVrLXBvc2l0aW9uLWxhcmdlW2NsYXNzKj11ay1wb3NpdGlvbi1jZW50ZXItbGVmdF0sLnVrLXBvc2l0aW9uLWxhcmdlW2NsYXNzKj11ay1wb3NpdGlvbi1jZW50ZXItcmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVkoLTMwcHgpfS51ay1wb3NpdGlvbi1sYXJnZS51ay1wb3NpdGlvbi1ib3R0b20tY2VudGVyLC51ay1wb3NpdGlvbi1sYXJnZS51ay1wb3NpdGlvbi10b3AtY2VudGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVgoLTMwcHgpfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLXBvc2l0aW9uLWxhcmdle21heC13aWR0aDpjYWxjKDEwMCUgLSAoNTBweCAqIDIpKTttYXJnaW46NTBweH0udWstcG9zaXRpb24tbGFyZ2UudWstcG9zaXRpb24tY2VudGVye3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSB0cmFuc2xhdGUoLTUwcHgsLTUwcHgpfS51ay1wb3NpdGlvbi1sYXJnZVtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyLWxlZnRdLC51ay1wb3NpdGlvbi1sYXJnZVtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyLXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVZKC01MHB4KX0udWstcG9zaXRpb24tbGFyZ2UudWstcG9zaXRpb24tYm90dG9tLWNlbnRlciwudWstcG9zaXRpb24tbGFyZ2UudWstcG9zaXRpb24tdG9wLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVYKC01MHB4KX19LnVrLXRyYW5zaXRpb24tdG9nZ2xley13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0udWstdHJhbnNpdGlvbi10b2dnbGU6Zm9jdXN7b3V0bGluZTowfS51ay10cmFuc2l0aW9uLWZhZGUsW2NsYXNzKj11ay10cmFuc2l0aW9uLXNjYWxlXSxbY2xhc3MqPXVrLXRyYW5zaXRpb24tc2xpZGVde3RyYW5zaXRpb246LjNzIGVhc2Utb3V0O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx0cmFuc2Zvcm0sZmlsdGVyO29wYWNpdHk6MH0udWstdHJhbnNpdGlvbi1hY3RpdmUudWstYWN0aXZlIC51ay10cmFuc2l0aW9uLWZhZGUsLnVrLXRyYW5zaXRpb24tdG9nZ2xlOmZvY3VzIC51ay10cmFuc2l0aW9uLWZhZGUsLnVrLXRyYW5zaXRpb24tdG9nZ2xlOmhvdmVyIC51ay10cmFuc2l0aW9uLWZhZGV7b3BhY2l0eToxfS51ay10cmFuc2l0aW9uLXNjYWxlLXVwe3RyYW5zZm9ybTpzY2FsZSgxLDEpfS51ay10cmFuc2l0aW9uLXNjYWxlLWRvd257dHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpfS51ay10cmFuc2l0aW9uLWFjdGl2ZS51ay1hY3RpdmUgLnVrLXRyYW5zaXRpb24tc2NhbGUtdXAsLnVrLXRyYW5zaXRpb24tdG9nZ2xlOmZvY3VzIC51ay10cmFuc2l0aW9uLXNjYWxlLXVwLC51ay10cmFuc2l0aW9uLXRvZ2dsZTpob3ZlciAudWstdHJhbnNpdGlvbi1zY2FsZS11cHtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpfS51ay10cmFuc2l0aW9uLWFjdGl2ZS51ay1hY3RpdmUgLnVrLXRyYW5zaXRpb24tc2NhbGUtZG93biwudWstdHJhbnNpdGlvbi10b2dnbGU6Zm9jdXMgLnVrLXRyYW5zaXRpb24tc2NhbGUtZG93biwudWstdHJhbnNpdGlvbi10b2dnbGU6aG92ZXIgLnVrLXRyYW5zaXRpb24tc2NhbGUtZG93bntvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEsMSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtdG9we3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0udWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b217dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtbGVmdHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtcmlnaHR7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtdG9wLXNtYWxse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX0udWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b20tc21hbGx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtbGVmdC1zbWFsbHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtcmlnaHQtc21hbGx7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtdG9wLW1lZGl1bXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tLW1lZGl1bXt0cmFuc2Zvcm06dHJhbnNsYXRlWSg1MHB4KX0udWstdHJhbnNpdGlvbi1zbGlkZS1sZWZ0LW1lZGl1bXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtcmlnaHQtbWVkaXVte3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfS51ay10cmFuc2l0aW9uLWFjdGl2ZS51ay1hY3RpdmUgW2NsYXNzKj11ay10cmFuc2l0aW9uLXNsaWRlXSwudWstdHJhbnNpdGlvbi10b2dnbGU6Zm9jdXMgW2NsYXNzKj11ay10cmFuc2l0aW9uLXNsaWRlXSwudWstdHJhbnNpdGlvbi10b2dnbGU6aG92ZXIgW2NsYXNzKj11ay10cmFuc2l0aW9uLXNsaWRlXXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfS51ay10cmFuc2l0aW9uLW9wYXF1ZXtvcGFjaXR5OjF9LnVrLXRyYW5zaXRpb24tc2xvd3t0cmFuc2l0aW9uLWR1cmF0aW9uOi43c30udWstaGlkZGVuLFtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1oaWRkZW5cQHN7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1oaWRkZW5cQG17ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstaGlkZGVuXEBse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWhpZGRlblxAeGx7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6NjM5cHgpey51ay12aXNpYmxlXEBze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjk1OXB4KXsudWstdmlzaWJsZVxAbXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDoxMTk5cHgpey51ay12aXNpYmxlXEBse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjE1OTlweCl7LnVrLXZpc2libGVcQHhse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS51ay1pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS51ay12aXNpYmxlLXRvZ2dsZTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKSAudWstaGlkZGVuLWhvdmVyOm5vdCg6Zm9jdXMtd2l0aGluKXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7d2lkdGg6MCFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9LnVrLXZpc2libGUtdG9nZ2xlOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpIC51ay1pbnZpc2libGUtaG92ZXI6bm90KDpmb2N1cy13aXRoaW4pe29wYWNpdHk6MCFpbXBvcnRhbnR9LnVrLXZpc2libGUtdG9nZ2xley13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0udWstdmlzaWJsZS10b2dnbGU6Zm9jdXN7b3V0bGluZTowfUBtZWRpYSAocG9pbnRlcjpjb2Fyc2Upey51ay1oaWRkZW4tdG91Y2h7ZGlzcGxheTpub25lIWltcG9ydGFudH19LnVrLWhpZGRlbi1ub3RvdWNoe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChwb2ludGVyOmNvYXJzZSl7LnVrLWhpZGRlbi1ub3RvdWNoe2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSwudWstbGlnaHQsLnVrLW9mZmNhbnZhcy1iYXIsLnVrLW92ZXJsYXktcHJpbWFyeSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluaywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBhLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluaywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgYSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgYSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluaywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBhLC51ay1saWdodCAudWstbGluaywudWstbGlnaHQgYSwudWstb2ZmY2FudmFzLWJhciAudWstbGluaywudWstb2ZmY2FudmFzLWJhciBhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmssLnVrLW92ZXJsYXktcHJpbWFyeSBhLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmssLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBhLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluaywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmssLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGF7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluazpob3ZlciwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBhOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluazpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluazpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBhOmhvdmVyLC51ay1saWdodCAudWstbGluazpob3ZlciwudWstbGlnaHQgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbGluazpob3ZlciwudWstb2ZmY2FudmFzLWJhciBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbms6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSBhOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbms6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBhOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluazpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbms6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGE6aG92ZXJ7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+a2JkLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IDpub3QocHJlKT5zYW1wLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgOm5vdChwcmUpPmtiZCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgOm5vdChwcmUpPnNhbXAsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IDpub3QocHJlKT5rYmQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+c2FtcCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSA6bm90KHByZSk+a2JkLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIDpub3QocHJlKT5zYW1wLC51ay1saWdodCA6bm90KHByZSk+Y29kZSwudWstbGlnaHQgOm5vdChwcmUpPmtiZCwudWstbGlnaHQgOm5vdChwcmUpPnNhbXAsLnVrLW9mZmNhbnZhcy1iYXIgOm5vdChwcmUpPmNvZGUsLnVrLW9mZmNhbnZhcy1iYXIgOm5vdChwcmUpPmtiZCwudWstb2ZmY2FudmFzLWJhciA6bm90KHByZSk+c2FtcCwudWstb3ZlcmxheS1wcmltYXJ5IDpub3QocHJlKT5jb2RlLC51ay1vdmVybGF5LXByaW1hcnkgOm5vdChwcmUpPmtiZCwudWstb3ZlcmxheS1wcmltYXJ5IDpub3QocHJlKT5zYW1wLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPmNvZGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+a2JkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPnNhbXAsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIDpub3QocHJlKT5jb2RlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+a2JkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+c2FtcCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIDpub3QocHJlKT5jb2RlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPmtiZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIDpub3QocHJlKT5zYW1wLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+Y29kZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPmtiZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPnNhbXB7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBlbSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgZW0sLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBlbSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBlbSwudWstbGlnaHQgZW0sLnVrLW9mZmNhbnZhcy1iYXIgZW0sLnVrLW92ZXJsYXktcHJpbWFyeSBlbSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGVtLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBlbSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGVtLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBlbXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oMSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaDIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWgzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oNCwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaDUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWg2LC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWhlYWRpbmctbWVkaXVtLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLXNtYWxsLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLXhsYXJnZSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoMSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoMiwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoMywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoNCwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoNSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoNiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWgxLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oMywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWg0LC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oNiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctMnhsYXJnZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLW1lZGl1bSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctc21hbGwsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLXhsYXJnZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaDEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIGgyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaDQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIGg1LC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oMSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oMiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oMywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oNCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oNSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oNiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1sYXJnZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLW1lZGl1bSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLXNtYWxsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWhlYWRpbmcteGxhcmdlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgaDEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBoMiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IGgzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgaDQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBoNSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IGg2LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oMSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWgzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oNCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWg2LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctbWVkaXVtLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLXNtYWxsLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLXhsYXJnZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNiwudWstbGlnaHQgLnVrLWgxLC51ay1saWdodCAudWstaDIsLnVrLWxpZ2h0IC51ay1oMywudWstbGlnaHQgLnVrLWg0LC51ay1saWdodCAudWstaDUsLnVrLWxpZ2h0IC51ay1oNiwudWstbGlnaHQgLnVrLWhlYWRpbmctMnhsYXJnZSwudWstbGlnaHQgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLW1lZGl1bSwudWstbGlnaHQgLnVrLWhlYWRpbmctc21hbGwsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLXhsYXJnZSwudWstbGlnaHQgaDEsLnVrLWxpZ2h0IGgyLC51ay1saWdodCBoMywudWstbGlnaHQgaDQsLnVrLWxpZ2h0IGg1LC51ay1saWdodCBoNiwudWstb2ZmY2FudmFzLWJhciAudWstaDEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWgyLC51ay1vZmZjYW52YXMtYmFyIC51ay1oMywudWstb2ZmY2FudmFzLWJhciAudWstaDQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWg1LC51ay1vZmZjYW52YXMtYmFyIC51ay1oNiwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy0yeGxhcmdlLC51ay1vZmZjYW52YXMtYmFyIC51ay1oZWFkaW5nLWxhcmdlLC51ay1vZmZjYW52YXMtYmFyIC51ay1oZWFkaW5nLW1lZGl1bSwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy1zbWFsbCwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy14bGFyZ2UsLnVrLW9mZmNhbnZhcy1iYXIgaDEsLnVrLW9mZmNhbnZhcy1iYXIgaDIsLnVrLW9mZmNhbnZhcy1iYXIgaDMsLnVrLW9mZmNhbnZhcy1iYXIgaDQsLnVrLW9mZmNhbnZhcy1iYXIgaDUsLnVrLW9mZmNhbnZhcy1iYXIgaDYsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDYsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy0yeGxhcmdlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1tZWRpdW0sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1zbWFsbCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1oZWFkaW5nLXhsYXJnZSwudWstb3ZlcmxheS1wcmltYXJ5IGgxLC51ay1vdmVybGF5LXByaW1hcnkgaDIsLnVrLW92ZXJsYXktcHJpbWFyeSBoMywudWstb3ZlcmxheS1wcmltYXJ5IGg0LC51ay1vdmVybGF5LXByaW1hcnkgaDUsLnVrLW92ZXJsYXktcHJpbWFyeSBoNiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1sYXJnZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLW1lZGl1bSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLXNtYWxsLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmcteGxhcmdlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg2LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg2LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy0yeGxhcmdlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1sYXJnZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbWVkaXVtLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1zbWFsbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmcteGxhcmdlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg2LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgxLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg1LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg2LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctMnhsYXJnZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWxhcmdlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbWVkaXVtLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctc21hbGwsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy14bGFyZ2UsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg1LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDYsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg1LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDYsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWxhcmdlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1tZWRpdW0sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLXNtYWxsLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy14bGFyZ2UsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgxLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg0LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDZ7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBibG9ja3F1b3RlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBibG9ja3F1b3RlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgYmxvY2txdW90ZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBibG9ja3F1b3RlLC51ay1saWdodCBibG9ja3F1b3RlLC51ay1vZmZjYW52YXMtYmFyIGJsb2NrcXVvdGUsLnVrLW92ZXJsYXktcHJpbWFyeSBibG9ja3F1b3RlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYmxvY2txdW90ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYmxvY2txdW90ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGV7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBibG9ja3F1b3RlIGZvb3RlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgYmxvY2txdW90ZSBmb290ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBibG9ja3F1b3RlIGZvb3RlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBibG9ja3F1b3RlIGZvb3RlciwudWstbGlnaHQgYmxvY2txdW90ZSBmb290ZXIsLnVrLW9mZmNhbnZhcy1iYXIgYmxvY2txdW90ZSBmb290ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSBibG9ja3F1b3RlIGZvb3RlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGUgZm9vdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBibG9ja3F1b3RlIGZvb3RlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGUgZm9vdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBibG9ja3F1b3RlIGZvb3Rlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaHIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgaHIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1ociwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaHIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaHIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBociwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaHIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaHIsLnVrLWxpZ2h0IC51ay1ociwudWstbGlnaHQgaHIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWhyLC51ay1vZmZjYW52YXMtYmFyIGhyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWhyLC51ay1vdmVybGF5LXByaW1hcnkgaHIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaHIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBociwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBociwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ociwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGhyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaHIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGhye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQgYSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkIGEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbGluay1tdXRlZCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rLW11dGVkIGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQgYSwudWstbGlnaHQgLnVrLWxpbmstbXV0ZWQsLnVrLWxpZ2h0IC51ay1saW5rLW11dGVkIGEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpbmstbXV0ZWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpbmstbXV0ZWQgYSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1saW5rLW11dGVkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstbXV0ZWQgYSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQgYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkIGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkIGEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCBhe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rLW11dGVkOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLWxpZ2h0IC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWxpZ2h0IC51ay1saW5rLW11dGVkOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbGluay1tdXRlZCBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCBhOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCBhOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZDpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluay10ZXh0IGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay10ZXh0OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay10ZXh0IGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstbGlnaHQgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1saWdodCAudWstbGluay10ZXh0OmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbGluay10ZXh0OmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQ6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstdGV4dDpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQ6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstdGV4dDpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluay1oZWFkaW5nIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay1oZWFkaW5nOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay1oZWFkaW5nIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstbGlnaHQgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1saWdodCAudWstbGluay1oZWFkaW5nOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbGluay1oZWFkaW5nOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmc6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmc6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstaGVhZGluZzpob3Zlcntjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1kaXZpZGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWhlYWRpbmctZGl2aWRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1kaXZpZGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1kaXZpZGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctZGl2aWRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctZGl2aWRlcntib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaGVhZGluZy1idWxsZXQ6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1saWdodCAudWstaGVhZGluZy1idWxsZXQ6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy1idWxsZXQ6OmJlZm9yZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctYnVsbGV0OjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctYnVsbGV0OjpiZWZvcmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWxpbmU+OjphZnRlciwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWxpbmU+OjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWxpbmU+OjphZnRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1saWdodCAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLWxpbmU+OjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1oZWFkaW5nLWxpbmU+OjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmJlZm9yZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1saW5lPjo6YmVmb3Jle2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItaWNvbiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItaWNvbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb24sLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItaWNvbiwudWstbGlnaHQgLnVrLWRpdmlkZXItaWNvbiwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1pY29uLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRpdmlkZXItaWNvbiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb24sLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb24sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjIwJTIyJTIwaGVpZ2h0JTNEJTIyMjAlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyMCUyMDIwJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NjaXJjbGUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjIlMjklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIyJTIyJTIwY3glM0QlMjIxMCUyMiUyMGN5JTNEJTIyMTAlMjIlMjByJTNEJTIyNyUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItaWNvbjo6YWZ0ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItaWNvbjo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstbGlnaHQgLnVrLWRpdmlkZXItaWNvbjo6YWZ0ZXIsLnVrLWxpZ2h0IC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1pY29uOjphZnRlciwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1pY29uOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZGl2aWRlci1pY29uOjphZnRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItaWNvbjo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uOjphZnRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItaWNvbjo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItaWNvbjo6YWZ0ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uOjpiZWZvcmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uOjpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLWxpZ2h0IC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItc21hbGw6OmFmdGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLXZlcnRpY2FsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLWxpZ2h0IC51ay1kaXZpZGVyLXZlcnRpY2FsLC51ay1vZmZjYW52YXMtYmFyIC51ay1kaXZpZGVyLXZlcnRpY2FsLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci12ZXJ0aWNhbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci12ZXJ0aWNhbCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItdmVydGljYWx7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMiksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstbGlnaHQgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstb2ZmY2FudmFzLWJhciAudWstbGlzdC1kaXZpZGVyPmxpOm50aC1jaGlsZChuKzIpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMiksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMiksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1kaXZpZGVyPmxpOm50aC1jaGlsZChuKzIpLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1kaXZpZGVyPmxpOm50aC1jaGlsZChuKzIpe2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLW9mLXR5cGUob2RkKXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpO2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1saWdodCAudWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3QtYnVsbGV0PmxpOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3QtYnVsbGV0PmxpOjpiZWZvcmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjYlMjIlMjBoZWlnaHQlM0QlMjI2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNiUyMDYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2NpcmNsZSUyMGZpbGwlM0QlMjJyZ2JhJTI4MjU1LCUyMDI1NSwlMjAyNTUsJTIwMC43JTI5JTIyJTIwY3glM0QlMjIzJTIyJTIwY3klM0QlMjIzJTIyJTIwciUzRCUyMjMlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUgdGgsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZSB0aCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSB0aCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUgdGgsLnVrLWxpZ2h0IC51ay10YWJsZSB0aCwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUgdGgsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUgdGgsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUgdGgsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0aCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0aCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIHRoe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSBjYXB0aW9uLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUgY2FwdGlvbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSBjYXB0aW9uLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZSBjYXB0aW9uLC51ay1saWdodCAudWstdGFibGUgY2FwdGlvbiwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUgY2FwdGlvbiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10YWJsZSBjYXB0aW9uLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIGNhcHRpb24sLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSBjYXB0aW9uLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIGNhcHRpb24sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSBjYXB0aW9ue2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGU+dHIudWstYWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUgdGJvZHkgdHIudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWJsZT50ci51ay1hY3RpdmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUgdGJvZHkgdHIudWstYWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGU+dHIudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUgdGJvZHkgdHIudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGU+dHIudWstYWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZT50ci51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZT50ci51ay1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+Om5vdCg6Zmlyc3QtY2hpbGQpPnRyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstbGlnaHQgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1saWdodCAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLWxpZ2h0IC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWJsZS1kaXZpZGVyPjpmaXJzdC1jaGlsZD50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYmxlLWRpdmlkZXI+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtZGl2aWRlcj46Zmlyc3QtY2hpbGQ+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPjpmaXJzdC1jaGlsZD50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46Zmlyc3QtY2hpbGQ+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWRpdmlkZXI+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46Zmlyc3QtY2hpbGQ+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1zdHJpcGVkPnRyOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstdGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1zdHJpcGVkPnRyOm50aC1vZi10eXBlKG9kZCksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1zdHJpcGVkPnRyOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1saWdodCAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWxpZ2h0IC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtaG92ZXI+dHI6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tbGluaywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluaywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbmssLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluaywudWstbGlnaHQgLnVrLWljb24tbGluaywudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1saW5rLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWljb24tbGluaywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbmssLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbmssLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5re2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tbGluazpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluazpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluazpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluazpob3ZlciwudWstbGlnaHQgLnVrLWljb24tbGluazpmb2N1cywudWstbGlnaHQgLnVrLWljb24tbGluazpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1saW5rOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1pY29uLWxpbms6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbi1saW5rOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWljb24tbGluazpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tbGluazpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tbGluazphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1saWdodCAudWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLWxpZ2h0IC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1hY3RpdmU+LnVrLWljb24tbGluaywudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1saW5rOmFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1hY3RpdmU+LnVrLWljb24tbGluaywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tbGluazphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY3RpdmU+LnVrLWljb24tbGluaywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tbGluazphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmFjdGl2ZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1idXR0b24sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWJ1dHRvbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWJ1dHRvbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbi1idXR0b24sLnVrLWxpZ2h0IC51ay1pY29uLWJ1dHRvbiwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1idXR0b24sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbi1idXR0b24sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b24sLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tYnV0dG9ue2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1idXR0b246Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstbGlnaHQgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1saWdodCAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pY29uLWJ1dHRvbjpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tYnV0dG9uOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDIsMjQyLDI0MiwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWJ1dHRvbjphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstbGlnaHQgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1idXR0b246YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246YWN0aXZlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzAsMjMwLDIzMCwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0LC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3QsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHRhcmVhLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3QsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0YXJlYSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3QsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dGFyZWEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3QsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRleHRhcmVhLC51ay1saWdodCAudWstaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWxlY3QsLnVrLWxpZ2h0IC51ay10ZXh0YXJlYSwudWstb2ZmY2FudmFzLWJhciAudWstaW5wdXQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlbGVjdCwudWstb2ZmY2FudmFzLWJhciAudWstdGV4dGFyZWEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaW5wdXQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VsZWN0LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRleHRhcmVhLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0LC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dGFyZWEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWxlY3QsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHRhcmVhOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0YXJlYTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dDpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dGFyZWE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRleHRhcmVhOmZvY3VzLC51ay1saWdodCAudWstaW5wdXQ6Zm9jdXMsLnVrLWxpZ2h0IC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWxpZ2h0IC51ay10ZXh0YXJlYTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstaW5wdXQ6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlbGVjdDpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstdGV4dGFyZWE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaW5wdXQ6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VsZWN0OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRleHRhcmVhOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0OmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdDpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dGFyZWE6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0OmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWxlY3Q6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstbGlnaHQgLnVrLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KSFpbXBvcnRhbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstbGlnaHQgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstb2ZmY2FudmFzLWJhciAudWstaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1saWdodCAudWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstb2ZmY2FudmFzLWJhciAudWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpIWltcG9ydGFudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHRhcmVhOjpwbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1saWdodCAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay10ZXh0YXJlYTo6cGxhY2Vob2xkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjpwbGFjZWhvbGRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjpwbGFjZWhvbGRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6cGxhY2Vob2xkZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLWxpZ2h0IC51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSl7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDI0JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIycmdiYSUyODI1NSwlMjAyNTUsJTIwMjU1LCUyMDAuNyUyOSUyMiUyMHBvaW50cyUzRCUyMjEyJTIwMSUyMDklMjA2JTIwMTUlMjA2JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjJyZ2JhJTI4MjU1LCUyMDI1NSwlMjAyNTUsJTIwMC43JTI5JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxMyUyMDklMjA4JTIwMTUlMjA4JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXRbbGlzdF06Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstbGlnaHQgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1saWdodCAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXRbbGlzdF06Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0W2xpc3RdOmhvdmVye2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDE2JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjBwb2ludHMlM0QlMjIxMiUyMDEyJTIwOCUyMDYlMjAxNiUyMDYlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3gsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXJhZGlvLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3gsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3gsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXJhZGlvLC51ay1saWdodCAudWstY2hlY2tib3gsLnVrLWxpZ2h0IC51ay1yYWRpbywudWstb2ZmY2FudmFzLWJhciAudWstY2hlY2tib3gsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXJhZGlvLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXJhZGlvLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94LC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXJhZGlvLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3gsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW97YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0MiwyNDIsMjQyLC4xKTtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbzpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbzpmb2N1cywudWstbGlnaHQgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1saWdodCAudWstcmFkaW86Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1yYWRpbzpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1jaGVja2JveDpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1yYWRpbzpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXJhZGlvOmZvY3Vze2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveDpjaGVja2VkLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Y2hlY2tlZCwudWstbGlnaHQgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWxpZ2h0IC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1saWdodCAudWstcmFkaW86Y2hlY2tlZCwudWstb2ZmY2FudmFzLWJhciAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstb2ZmY2FudmFzLWJhciAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstb2ZmY2FudmFzLWJhciAudWstcmFkaW86Y2hlY2tlZCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1jaGVja2JveDpjaGVja2VkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstcmFkaW86Y2hlY2tlZCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpjaGVja2VkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpjaGVja2VkLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveDpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveDppbmRldGVybWluYXRlOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDppbmRldGVybWluYXRlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1saWdodCAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstbGlnaHQgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLWxpZ2h0IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDpjaGVja2VkOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDppbmRldGVybWluYXRlOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXJhZGlvOmNoZWNrZWQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Y2hlY2tlZCwudWstbGlnaHQgLnVrLXJhZGlvOmNoZWNrZWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXJhZGlvOmNoZWNrZWQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstcmFkaW86Y2hlY2tlZCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwZmlsbCUzRCUyMiUyMzY2NiUyMiUyMGN4JTNEJTIyOCUyMiUyMGN5JTNEJTIyOCUyMiUyMHIlM0QlMjIyJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDpjaGVja2VkLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWxpZ2h0IC51ay1jaGVja2JveDpjaGVja2VkLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDpjaGVja2VkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTQlMjIlMjBoZWlnaHQlM0QlMjIxMSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE0JTIwMTElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxJTIwNSUyMDcuNSUyMDIlMjA1JTIwMSUyMDUuNSUyMDUlMjAxMCUyMDEzJTIwMS41JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWxpZ2h0IC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE2JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIweCUzRCUyMjMlMjIlMjB5JTNEJTIyOCUyMiUyMHdpZHRoJTNEJTIyMTAlMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0tbGFiZWwsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1mb3JtLWxhYmVsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0tbGFiZWwsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWZvcm0tbGFiZWwsLnVrLWxpZ2h0IC51ay1mb3JtLWxhYmVsLC51ay1vZmZjYW52YXMtYmFyIC51ay1mb3JtLWxhYmVsLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWZvcm0tbGFiZWwsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1sYWJlbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0tbGFiZWwsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1sYWJlbCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0tbGFiZWx7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZm9ybS1pY29uLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZm9ybS1pY29uLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0taWNvbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZm9ybS1pY29uLC51ay1saWdodCAudWstZm9ybS1pY29uLC51ay1vZmZjYW52YXMtYmFyIC51ay1mb3JtLWljb24sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZm9ybS1pY29uLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0taWNvbiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0taWNvbiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb24sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb257Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1mb3JtLWljb246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstbGlnaHQgLnVrLWZvcm0taWNvbjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstZm9ybS1pY29uOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb246aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb246aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1pY29uOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1pY29uOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tZGVmYXVsdCwudWstbGlnaHQgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tZGVmYXVsdCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tZGVmYXVsdCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdDpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1saWdodCAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWxpZ2h0IC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1kZWZhdWx0OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0OmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0OmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0LnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWRlZmF1bHQ6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1kZWZhdWx0LnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tZGVmYXVsdDphY3RpdmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6YWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6YWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0LnVrLWFjdGl2ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tcHJpbWFyeSwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tcHJpbWFyeSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tcHJpbWFyeSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXByaW1hcnk6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1saWdodCAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2YyZjJmMjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLXByaW1hcnkudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tcHJpbWFyeTphY3RpdmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLXByaW1hcnkudWstYWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnkudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tc2Vjb25kYXJ5LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLWxpZ2h0IC51ay1idXR0b24tc2Vjb25kYXJ5LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tc2Vjb25kYXJ5LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXNlY29uZGFyeTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLWxpZ2h0IC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1saWdodCAudWstYnV0dG9uLXNlY29uZGFyeTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLXNlY29uZGFyeTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5OmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXNlY29uZGFyeS51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1saWdodCAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tc2Vjb25kYXJ5LnVrLWFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5LnVrLWFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeS51ay1hY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5LnVrLWFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6YWN0aXZle2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tdGV4dCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi10ZXh0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tdGV4dCwudWstbGlnaHQgLnVrLWJ1dHRvbi10ZXh0LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tdGV4dCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tdGV4dCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHR7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstbGlnaHQgLnVrLWJ1dHRvbi10ZXh0OjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi10ZXh0OjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDo6YmVmb3JlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZXtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tdGV4dDpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tdGV4dDpob3ZlciwudWstbGlnaHQgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1saWdodCAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tdGV4dDpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tdGV4dDpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tdGV4dDpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0OmhvdmVye2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1saWdodCAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpkaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWxpbmssLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tbGluaywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tbGluaywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWxpbmssLnVrLWxpZ2h0IC51ay1idXR0b24tbGluaywudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWxpbmssLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWxpbmssLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbmssLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluaywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluaywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5re2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tbGluazpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tbGluazpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1saW5rOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tbGluazpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLWxpZ2h0IC51ay1idXR0b24tbGluazpmb2N1cywudWstbGlnaHQgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tbGluazpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluazpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5rOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluazpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstbGlnaHQgLnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNsb3NlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2xvc2UsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstY2xvc2UsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNsb3NlLC51ay1saWdodCAudWstY2xvc2UsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWNsb3NlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNsb3NlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2UsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2UsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2xvc2U6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNsb3NlOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2xvc2U6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jbG9zZTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jbG9zZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jbG9zZTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2xvc2U6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNsb3NlOmhvdmVyLC51ay1saWdodCAudWstY2xvc2U6Zm9jdXMsLnVrLWxpZ2h0IC51ay1jbG9zZTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstY2xvc2U6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWNsb3NlOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNsb3NlOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNsb3NlOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2U6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2U6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRvdG9wLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdG90b3AsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdG90b3AsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wLC51ay1saWdodCAudWstdG90b3AsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRvdG9wLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3AsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3AsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdG90b3A6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRvdG9wOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdG90b3A6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10b3RvcDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10b3RvcDpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10b3RvcDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdG90b3A6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wOmhvdmVyLC51ay1saWdodCAudWstdG90b3A6Zm9jdXMsLnVrLWxpZ2h0IC51ay10b3RvcDpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstdG90b3A6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRvdG9wOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRvdG9wOmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wOmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10b3RvcDphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wOmFjdGl2ZSwudWstbGlnaHQgLnVrLXRvdG9wOmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstdG90b3A6YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wOmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6YWN0aXZlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6YWN0aXZle2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW1hcmtlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1tYXJrZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlciwudWstbGlnaHQgLnVrLW1hcmtlciwudWstb2ZmY2FudmFzLWJhciAudWstbWFya2VyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW1hcmtlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2Vye2JhY2tncm91bmQ6I2Y4ZjhmODtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1tYXJrZXI6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW1hcmtlcjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlcjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlcjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1tYXJrZXI6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbWFya2VyOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1tYXJrZXI6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlcjpob3ZlciwudWstbGlnaHQgLnVrLW1hcmtlcjpmb2N1cywudWstbGlnaHQgLnVrLW1hcmtlcjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbWFya2VyOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1tYXJrZXI6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbWFya2VyOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW1hcmtlcjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW1hcmtlcjpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6aG92ZXJ7Y29sb3I6IzY2Nn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYmFkZ2UsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1iYWRnZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1iYWRnZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYmFkZ2UsLnVrLWxpZ2h0IC51ay1iYWRnZSwudWstb2ZmY2FudmFzLWJhciAudWstYmFkZ2UsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYmFkZ2UsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2UsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdle2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1iYWRnZTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYmFkZ2U6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1iYWRnZTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJhZGdlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJhZGdlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJhZGdlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1iYWRnZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYmFkZ2U6aG92ZXIsLnVrLWxpZ2h0IC51ay1iYWRnZTpmb2N1cywudWstbGlnaHQgLnVrLWJhZGdlOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1iYWRnZTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstYmFkZ2U6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYmFkZ2U6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYmFkZ2U6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2U6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2U6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdlOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdlOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdlOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2U6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZTpob3Zlcntjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1sYWJlbCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxhYmVsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxhYmVsLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sYWJlbCwudWstbGlnaHQgLnVrLWxhYmVsLC51ay1vZmZjYW52YXMtYmFyIC51ay1sYWJlbCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1sYWJlbCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1sYWJlbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxhYmVsLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxhYmVsLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFydGljbGUtbWV0YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFydGljbGUtbWV0YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hcnRpY2xlLW1ldGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFydGljbGUtbWV0YSwudWstbGlnaHQgLnVrLWFydGljbGUtbWV0YSwudWstb2ZmY2FudmFzLWJhciAudWstYXJ0aWNsZS1tZXRhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWFydGljbGUtbWV0YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hcnRpY2xlLW1ldGEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hcnRpY2xlLW1ldGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYXJ0aWNsZS1tZXRhLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYXJ0aWNsZS1tZXRhe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWFyY2gtaW5wdXQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstbGlnaHQgLnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KSFpbXBvcnRhbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWxpZ2h0IC51ay1zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLWxpZ2h0IC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb257Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLWxpZ2h0IC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbjpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbjpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0LC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLWxpZ2h0IC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dDpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1saWdodCAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtbmF2YmFyIC51ay1zZWFyY2gtaW5wdXQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbmF2YmFyIC51ay1zZWFyY2gtaW5wdXQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbmF2YmFyIC51ay1zZWFyY2gtaW5wdXR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstb2ZmY2FudmFzLWJhciAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1sYXJnZSAudWstc2VhcmNoLWlucHV0e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtdG9nZ2xlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLWxpZ2h0IC51ay1zZWFyY2gtdG9nZ2xlLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtdG9nZ2xlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGU6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLXRvZ2dsZTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC10b2dnbGU6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLWxpZ2h0IC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1saWdodCAudWstc2VhcmNoLXRvZ2dsZTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstc2VhcmNoLXRvZ2dsZTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtdG9nZ2xlOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtdG9nZ2xlOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1saWdodCAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudD5hOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWxpbmUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxLjElMjIlMjBwb2ludHMlM0QlMjIxMCUyMDElMjA0JTIwNyUyMDEwJTIwMTMlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstbGlnaHQgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudC51ay1vcGVuPmE6OmFmdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudC51ay1vcGVuPmE6OmFmdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWxpbmUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxLjElMjIlMjBwb2ludHMlM0QlMjIxJTIwNCUyMDclMjAxMCUyMDEzJTIwNCUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQ+bGk+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQ+bGk+YSwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQ+bGk+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0PmxpPmE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saT5hOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstbGlnaHQgLnVrLW5hdi1kZWZhdWx0PmxpPmE6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1kZWZhdWx0PmxpPmE6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQ+bGk+YTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQ+bGk+YTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQ+bGkudWstYWN0aXZlPmF7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLWxpZ2h0IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVye2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstbGlnaHQgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLWxpZ2h0IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGF7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWxpZ2h0IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBsaS51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnk+bGk+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1saWdodCAudWstbmF2LXByaW1hcnk+bGk+YSwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnk+bGk+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5PmxpPmE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saT5hOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1saWdodCAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstbGlnaHQgLnVrLW5hdi1wcmltYXJ5PmxpPmE6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wcmltYXJ5PmxpPmE6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnk+bGk+YTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnk+bGk+YTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnk+bGkudWstYWN0aXZlPmF7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLWxpZ2h0IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtaGVhZGVye2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWRpdmlkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstbGlnaHQgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1kaXZpZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWRpdmlkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWRpdmlkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1kaXZpZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLWxpZ2h0IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGF7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWxpZ2h0IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1saWdodCAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1saWdodCAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBsaS51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLWxpZ2h0IC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGk+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YS51ay1vcGVuLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay1saWdodCAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1saWdodCAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLWxpZ2h0IC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGk6aG92ZXI+YSwudWstb2ZmY2FudmFzLWJhciAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGk+YTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk6aG92ZXI+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXN7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmE6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLWxpZ2h0IC51ay1uYXZiYXItbmF2PmxpPmE6YWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItbmF2PmxpPmE6YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hOmFjdGl2ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hOmFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmV7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci1uYXY+bGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLW5hdmJhci1uYXY+bGkudWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGkudWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItaXRlbSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci1pdGVtLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1pdGVtLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItaXRlbSwudWstbGlnaHQgLnVrLW5hdmJhci1pdGVtLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItaXRlbSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXZiYXItaXRlbSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItaXRlbSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1pdGVtLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1pdGVtLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLWl0ZW17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItdG9nZ2xlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGUsLnVrLWxpZ2h0IC51ay1uYXZiYXItdG9nZ2xlLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItdG9nZ2xlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdmJhci10b2dnbGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItdG9nZ2xlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGU6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstbGlnaHQgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstbGlnaHQgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLWxpZ2h0IC51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItdG9nZ2xlLnVrLW9wZW4sLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci10b2dnbGU6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLXRvZ2dsZS51ay1vcGVuLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItdG9nZ2xlLnVrLW9wZW4sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZS51ay1vcGVuLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGU6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZS51ay1vcGVuLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItdG9nZ2xlOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+OmZpcnN0LWNoaWxkLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLWxpZ2h0IC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdj4qPjpmaXJzdC1jaGlsZCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+OmZpcnN0LWNoaWxkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+OmZpcnN0LWNoaWxkLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPjpmaXJzdC1jaGlsZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPjpmaXJzdC1jaGlsZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+YTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+YTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2Pio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2Pio+YTpob3ZlciwudWstbGlnaHQgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLWxpZ2h0IC51ay1zdWJuYXY+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1zdWJuYXY+Kj5hOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2Pio+YTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+YTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPmE6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+YTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdj4udWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLXN1Ym5hdj4udWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdj4udWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+LnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+LnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2LWRpdmlkZXI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdi1kaXZpZGVyPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LWRpdmlkZXI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LWRpdmlkZXI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1kaXZpZGVyPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1kaXZpZGVyPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLWxpZ2h0IC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstb2ZmY2FudmFzLWJhciAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+OmZpcnN0LWNoaWxke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPmE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1saWdodCAudWstc3VibmF2LXBpbGw+Kj5hOmZvY3VzLC51ay1saWdodCAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1saWdodCAudWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4udWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstb2ZmY2FudmFzLWJhciAudWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5hLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4udWstYWN0aXZlPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4udWstYWN0aXZlPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5he2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pi51ay1kaXNhYmxlZD5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLWxpZ2h0IC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdj4udWstZGlzYWJsZWQ+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1kaXNhYmxlZD5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1kaXNhYmxlZD5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4udWstZGlzYWJsZWQ+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4udWstZGlzYWJsZWQ+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj4qPiosLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPio+KiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+KiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnJlYWRjcnVtYj4qPiosLnVrLWxpZ2h0IC51ay1icmVhZGNydW1iPio+KiwudWstb2ZmY2FudmFzLWJhciAudWstYnJlYWRjcnVtYj4qPiosLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnJlYWRjcnVtYj4qPiosLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj4qPiosLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+KiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+KiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj4qe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJyZWFkY3J1bWI+Kj46aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPio+OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1saWdodCAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstbGlnaHQgLnVrLWJyZWFkY3J1bWI+Kj46aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJyZWFkY3J1bWI+Kj46aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj4qPjpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj4qPjpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+OmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj46bGFzdC1jaGlsZD4qLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLWxpZ2h0IC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJyZWFkY3J1bWI+Omxhc3QtY2hpbGQ+KiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj46bGFzdC1jaGlsZD4qLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj46bGFzdC1jaGlsZD4qLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Omxhc3QtY2hpbGQ+KiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Omxhc3QtY2hpbGQ+Kntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1wYWdpbmF0aW9uPio+KiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1wYWdpbmF0aW9uPio+KiwudWstbGlnaHQgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay1vZmZjYW52YXMtYmFyIC51ay1wYWdpbmF0aW9uPio+KiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1wYWdpbmF0aW9uPio+KiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPio+KiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPip7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj46Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcGFnaW5hdGlvbj4qPjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+Kj46Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLWxpZ2h0IC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1saWdodCAudWstcGFnaW5hdGlvbj4qPjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstcGFnaW5hdGlvbj4qPjpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPio+OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPio+OmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1saWdodCAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPi51ay1hY3RpdmU+Kntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+LnVrLWRpc2FibGVkPiosLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstbGlnaHQgLnVrLXBhZ2luYXRpb24+LnVrLWRpc2FibGVkPiosLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXBhZ2luYXRpb24+LnVrLWRpc2FibGVkPiosLnVrLW92ZXJsYXktcHJpbWFyeSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPi51ay1kaXNhYmxlZD4qLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPi51ay1kaXNhYmxlZD4qLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+Kntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWI6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay10YWI6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstdGFiOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYjo6YmVmb3Jle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYj4qPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPio+YSwudWstbGlnaHQgLnVrLXRhYj4qPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYj4qPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiPio+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPio+YTpob3ZlciwudWstbGlnaHQgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLWxpZ2h0IC51ay10YWI+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWI+Kj5hOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWI+Kj5hOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiPio+YTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4qPmE6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYj4udWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLXRhYj4udWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYj4udWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+LnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+LnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1hY3RpdmU+YXtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPi51ay1kaXNhYmxlZD5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLWxpZ2h0IC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYj4udWstZGlzYWJsZWQ+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1kaXNhYmxlZD5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1kaXNhYmxlZD5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4udWstZGlzYWJsZWQ+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4udWstZGlzYWJsZWQ+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2xpZGVuYXYsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zbGlkZW5hdiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zbGlkZW5hdiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2xpZGVuYXYsLnVrLWxpZ2h0IC51ay1zbGlkZW5hdiwudWstb2ZmY2FudmFzLWJhciAudWstc2xpZGVuYXYsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2xpZGVuYXYsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXYsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zbGlkZW5hdjpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zbGlkZW5hdjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNsaWRlbmF2OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zbGlkZW5hdjpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLWxpZ2h0IC51ay1zbGlkZW5hdjpmb2N1cywudWstbGlnaHQgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zbGlkZW5hdjpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstc2xpZGVuYXY6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2xpZGVuYXY6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2OmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45NSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zbGlkZW5hdjphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstbGlnaHQgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstc2xpZGVuYXY6YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6YWN0aXZlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6YWN0aXZle2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj4qLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZG90bmF2Pio+KiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj4qLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+Kj4qLC51ay1saWdodCAudWstZG90bmF2Pio+KiwudWstb2ZmY2FudmFzLWJhciAudWstZG90bmF2Pio+KiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1kb3RuYXY+Kj4qLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPiosLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj4qLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPiosLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj4qe2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstZG90bmF2Pio+OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstbGlnaHQgLnVrLWRvdG5hdj4qPjpmb2N1cywudWstbGlnaHQgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstZG90bmF2Pio+OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1kb3RuYXY+Kj46aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZG90bmF2Pio+OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPjpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+Kj46YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLWxpZ2h0IC51ay1kb3RuYXY+Kj46YWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1kb3RuYXY+Kj46YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmFjdGl2ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+LnVrLWFjdGl2ZT4qLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLWxpZ2h0IC51ay1kb3RuYXY+LnVrLWFjdGl2ZT4qLC51ay1vZmZjYW52YXMtYmFyIC51ay1kb3RuYXY+LnVrLWFjdGl2ZT4qLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pi51ay1hY3RpdmU+KiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pi51ay1hY3RpdmU+KiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4udWstYWN0aXZlPip7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hY2NvcmRpb24tdGl0bGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstbGlnaHQgLnVrLWFjY29yZGlvbi10aXRsZSwudWstb2ZmY2FudmFzLWJhciAudWstYWNjb3JkaW9uLXRpdGxlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxle2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hY2NvcmRpb24tdGl0bGU6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1saWdodCAudWstYWNjb3JkaW9uLXRpdGxlOmZvY3VzLC51ay1saWdodCAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1hY2NvcmRpb24tdGl0bGU6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWFjY29yZGlvbi10aXRsZTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1hY2NvcmRpb24tdGl0bGU6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxlOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbm5hdj4qPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pio+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29ubmF2Pio+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbm5hdj4qPmEsLnVrLWxpZ2h0IC51ay1pY29ubmF2Pio+YSwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbm5hdj4qPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4qPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWljb25uYXY+Kj5hOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLWxpZ2h0IC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstbGlnaHQgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmE6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmE6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLWxpZ2h0IC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+LnVrLWFjdGl2ZT5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LWxlYWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LWxlYWQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1sZWFkLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LWxlYWQsLnVrLWxpZ2h0IC51ay10ZXh0LWxlYWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRleHQtbGVhZCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0LWxlYWQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1sZWFkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1sZWFkLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbGVhZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbGVhZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1tZXRhLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1tZXRhLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHQtbWV0YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1tZXRhLC51ay1saWdodCAudWstdGV4dC1tZXRhLC51ay1vZmZjYW52YXMtYmFyIC51ay10ZXh0LW1ldGEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGV4dC1tZXRhLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbWV0YSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbWV0YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LW1ldGEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LW1ldGF7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHQtbXV0ZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LW11dGVkLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHQtbXV0ZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRleHQtbXV0ZWQsLnVrLWxpZ2h0IC51ay10ZXh0LW11dGVkLC51ay1vZmZjYW52YXMtYmFyIC51ay10ZXh0LW11dGVkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRleHQtbXV0ZWQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1tdXRlZCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbXV0ZWQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1tdXRlZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbXV0ZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSkhaW1wb3J0YW50fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LWVtcGhhc2lzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1lbXBoYXNpcywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LWVtcGhhc2lzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LWVtcGhhc2lzLC51ay1saWdodCAudWstdGV4dC1lbXBoYXNpcywudWstb2ZmY2FudmFzLWJhciAudWstdGV4dC1lbXBoYXNpcywudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0LWVtcGhhc2lzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtZW1waGFzaXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LWVtcGhhc2lzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtZW1waGFzaXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LWVtcGhhc2lze2NvbG9yOiNmZmYhaW1wb3J0YW50fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LXByaW1hcnksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LXByaW1hcnksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1wcmltYXJ5LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LXByaW1hcnksLnVrLWxpZ2h0IC51ay10ZXh0LXByaW1hcnksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRleHQtcHJpbWFyeSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0LXByaW1hcnksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1wcmltYXJ5LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1wcmltYXJ5LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtcHJpbWFyeSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtcHJpbWFyeXtjb2xvcjojZmZmIWltcG9ydGFudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1zZWNvbmRhcnksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LXNlY29uZGFyeSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LXNlY29uZGFyeSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1zZWNvbmRhcnksLnVrLWxpZ2h0IC51ay10ZXh0LXNlY29uZGFyeSwudWstb2ZmY2FudmFzLWJhciAudWstdGV4dC1zZWNvbmRhcnksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGV4dC1zZWNvbmRhcnksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1zZWNvbmRhcnksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LXNlY29uZGFyeSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LXNlY29uZGFyeSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtc2Vjb25kYXJ5e2NvbG9yOiNmZmYhaW1wb3J0YW50fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1jb2x1bW4tZGl2aWRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jb2x1bW4tZGl2aWRlciwudWstbGlnaHQgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1jb2x1bW4tZGl2aWRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1jb2x1bW4tZGl2aWRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jb2x1bW4tZGl2aWRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY29sdW1uLWRpdmlkZXJ7Y29sdW1uLXJ1bGUtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28sLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ28sLnVrLWxpZ2h0IC51ay1sb2dvLC51ay1vZmZjYW52YXMtYmFyIC51ay1sb2dvLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxvZ28sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ297Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ286Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ286aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbG9nbzpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1sb2dvOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ286aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ286Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ286aG92ZXIsLnVrLWxpZ2h0IC51ay1sb2dvOmZvY3VzLC51ay1saWdodCAudWstbG9nbzpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbG9nbzpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstbG9nbzpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1sb2dvOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxvZ286aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1sb2dvOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ286aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1sb2dvOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ286aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvPjpub3QoLnVrLWxvZ28taW52ZXJzZSk6bm90KDpvbmx5LW9mLXR5cGUpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLWxpZ2h0IC51ay1sb2dvPjpub3QoLnVrLWxvZ28taW52ZXJzZSk6bm90KDpvbmx5LW9mLXR5cGUpLC51ay1vZmZjYW52YXMtYmFyIC51ay1sb2dvPjpub3QoLnVrLWxvZ28taW52ZXJzZSk6bm90KDpvbmx5LW9mLXR5cGUpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbz46bm90KC51ay1sb2dvLWludmVyc2UpOm5vdCg6b25seS1vZi10eXBlKSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbz46bm90KC51ay1sb2dvLWludmVyc2UpOm5vdCg6b25seS1vZi10eXBlKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSl7ZGlzcGxheTpub25lfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1sb2dvLWludmVyc2UsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvLWludmVyc2UsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbG9nby1pbnZlcnNlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvLWludmVyc2UsLnVrLWxpZ2h0IC51ay1sb2dvLWludmVyc2UsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxvZ28taW52ZXJzZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1sb2dvLWludmVyc2UsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nby1pbnZlcnNlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nby1pbnZlcnNlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28taW52ZXJzZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28taW52ZXJzZXtkaXNwbGF5OmlubGluZX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMyUyMDEzJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjYlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxMyUyMiUyMHglM0QlMjI2JTIyJTIweSUzRCUyMjAlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW9wZW4+LnVrLWFjY29yZGlvbi10aXRsZTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMyUyMDEzJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjYlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX1AbWVkaWEgcHJpbnR7Kiw6OmFmdGVyLDo6YmVmb3Jle2JhY2tncm91bmQ6MCAwIWltcG9ydGFudDtjb2xvcjojMDAwIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O3RleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50fWEsYTp2aXNpdGVke3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YmxvY2txdW90ZSxwcmV7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfXRoZWFke2Rpc3BsYXk6dGFibGUtaGVhZGVyLWdyb3VwfWltZyx0cntwYWdlLWJyZWFrLWluc2lkZTphdm9pZH1pbWd7bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50fUBwYWdle21hcmdpbjouNWNtfWgyLGgzLHB7b3JwaGFuczozO3dpZG93czozfWgyLGgze3BhZ2UtYnJlYWstYWZ0ZXI6YXZvaWR9fQ==",
  68. {"status":false}
  69. ],
  70. [
  71. "uikit.min.js_3.2.0",
  72. "LyohIFVJa2l0IDMuMi4wIHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTkgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqLwoKIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInVpa2l0IixlKToodD10fHxzZWxmKS5VSWtpdD1lKCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9T2JqZWN0LnByb3RvdHlwZSxuPWUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBuLmNhbGwodCxlKX12YXIgaT17fSxyPS8oW2EtelxkXSkoW0EtWl0pL2c7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdCBpbiBpfHwoaVt0XT10LnJlcGxhY2UociwiJDEtJDIiKS50b0xvd2VyQ2FzZSgpKSxpW3RdfXZhciBvPS8tKFx3KS9nO2Z1bmN0aW9uIGYodCl7cmV0dXJuIHQucmVwbGFjZShvLHMpfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gZT9lLnRvVXBwZXJDYXNlKCk6IiJ9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdC5sZW5ndGg/cygwLHQuY2hhckF0KDApKSt0LnNsaWNlKDEpOiIifXZhciB0PVN0cmluZy5wcm90b3R5cGUsYT10LnN0YXJ0c1dpdGh8fGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5sYXN0SW5kZXhPZih0LDApfTtmdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGEuY2FsbCh0LGUpfXZhciBoPXQuZW5kc1dpdGh8fGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN1YnN0cigtdC5sZW5ndGgpPT09dH07ZnVuY3Rpb24gdSh0LGUpe3JldHVybiBoLmNhbGwodCxlKX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJufnRoaXMuaW5kZXhPZih0LGUpfXZhciBtPUFycmF5LnByb3RvdHlwZSxnPXQuaW5jbHVkZXN8fGwsdj1tLmluY2x1ZGVzfHxsO2Z1bmN0aW9uIGIodCxlKXtyZXR1cm4gdCYmKE8odCk/Zzp2KS5jYWxsKHQsZSl9dmFyIHk9bS5maW5kSW5kZXh8fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMsbj0wO248dGhpcy5sZW5ndGg7bisrKWlmKHQuY2FsbChlWzFdLHRoaXNbbl0sbix0aGlzKSlyZXR1cm4gbjtyZXR1cm4tMX07ZnVuY3Rpb24geCh0LGUpe3JldHVybiB5LmNhbGwodCxlKX12YXIgaz1BcnJheS5pc0FycmF5O2Z1bmN0aW9uICQodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gSSh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiBTKHQpe3JldHVybiBJKHQpJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1lfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEkodCkmJnQ9PT10LndpbmRvd31mdW5jdGlvbiBFKHQpe3JldHVybiBJKHQpJiY5PT09dC5ub2RlVHlwZX1mdW5jdGlvbiBDKHQpe3JldHVybiBJKHQpJiYhIXQuanF1ZXJ5fWZ1bmN0aW9uIEEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBOb2RlfHxJKHQpJiYxPD10Lm5vZGVUeXBlfXZhciBfPWUudG9TdHJpbmc7ZnVuY3Rpb24gTih0KXtyZXR1cm4gXy5jYWxsKHQpLm1hdGNoKC9eXFtvYmplY3QgKE5vZGVMaXN0fEhUTUxDb2xsZWN0aW9uKVxdJC8pfWZ1bmN0aW9uIE0odCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdH1mdW5jdGlvbiBPKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdH1mdW5jdGlvbiBEKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdH1mdW5jdGlvbiB6KHQpe3JldHVybiBEKHQpfHxPKHQpJiYhaXNOYU4odC1wYXJzZUZsb2F0KHQpKX1mdW5jdGlvbiBCKHQpe3JldHVybiEoayh0KT90Lmxlbmd0aDpJKHQpJiZPYmplY3Qua2V5cyh0KS5sZW5ndGgpfWZ1bmN0aW9uIFAodCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24gSCh0KXtyZXR1cm4gTSh0KT90OiJ0cnVlIj09PXR8fCIxIj09PXR8fCIiPT09dHx8ImZhbHNlIiE9PXQmJiIwIiE9PXQmJnR9ZnVuY3Rpb24gTCh0KXt2YXIgZT1OdW1iZXIodCk7cmV0dXJuIWlzTmFOKGUpJiZlfWZ1bmN0aW9uIEYodCl7cmV0dXJuIHBhcnNlRmxvYXQodCl8fDB9ZnVuY3Rpb24gaih0KXtyZXR1cm4gQSh0KXx8VCh0KXx8RSh0KT90Ok4odCl8fEModCk/dFswXTprKHQpP2oodFswXSk6bnVsbH1mdW5jdGlvbiBXKHQpe3JldHVybiBBKHQpP1t0XTpOKHQpP20uc2xpY2UuY2FsbCh0KTprKHQpP3QubWFwKGopLmZpbHRlcihCb29sZWFuKTpDKHQpP3QudG9BcnJheSgpOltdfWZ1bmN0aW9uIFYodCl7cmV0dXJuIGsodCk/dDpPKHQpP3Quc3BsaXQoLywoPyFbXihdKlwpKS8pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4geih0KT9MKHQpOkgodC50cmltKCkpfSk6W3RdfWZ1bmN0aW9uIFIodCl7cmV0dXJuIHQ/dSh0LCJtcyIpP0YodCk6MWUzKkYodCk6MH1mdW5jdGlvbiBZKHQsbil7cmV0dXJuIHQ9PT1ufHxJKHQpJiZJKG4pJiZPYmplY3Qua2V5cyh0KS5sZW5ndGg9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgmJksodCxmdW5jdGlvbih0LGUpe3JldHVybiB0PT09bltlXX0pfWZ1bmN0aW9uIHEodCxlLG4pe3JldHVybiB0LnJlcGxhY2UobmV3IFJlZ0V4cChlKyJ8IituLCJtZyIpLGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZT9uOmV9KX12YXIgVT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj1hcmd1bWVudHMubGVuZ3RoLTE7MDxuLS07KWVbbl09YXJndW1lbnRzW24rMV07dD1PYmplY3QodCk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciByPWVbaV07aWYobnVsbCE9PXIpZm9yKHZhciBvIGluIHIpYyhyLG8pJiYodFtvXT1yW29dKX1yZXR1cm4gdH07ZnVuY3Rpb24gWCh0KXtyZXR1cm4gdFt0Lmxlbmd0aC0xXX1mdW5jdGlvbiBLKHQsZSl7Zm9yKHZhciBuIGluIHQpaWYoITE9PT1lKHRbbl0sbikpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gRyh0LHIpe3JldHVybiB0LnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgbj10W3JdO3ZvaWQgMD09PW4mJihuPTApO3ZhciBpPWVbcl07cmV0dXJuIHZvaWQgMD09PWkmJihpPTApLGk8bj8xOm48aT8tMTowfSl9ZnVuY3Rpb24gSih0LG4pe3ZhciBpPW5ldyBTZXQ7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBlPXRbbl07cmV0dXJuIWkuaGFzKGUpJiYoaS5hZGQoZSl8fCEwKX0pfWZ1bmN0aW9uIFoodCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj0xKSxNYXRoLm1pbihNYXRoLm1heChMKHQpfHwwLGUpLG4pfWZ1bmN0aW9uIFEoKXt9ZnVuY3Rpb24gdHQodCxlKXtyZXR1cm4gdC5sZWZ0PGUucmlnaHQmJnQucmlnaHQ+ZS5sZWZ0JiZ0LnRvcDxlLmJvdHRvbSYmdC5ib3R0b20+ZS50b3B9ZnVuY3Rpb24gZXQodCxlKXtyZXR1cm4gdC54PD1lLnJpZ2h0JiZ0Lng+PWUubGVmdCYmdC55PD1lLmJvdHRvbSYmdC55Pj1lLnRvcH12YXIgbnQ9e3JhdGlvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyPSJ3aWR0aCI9PT1lPyJoZWlnaHQiOiJ3aWR0aCI7cmV0dXJuKGk9e30pW3JdPXRbZV0/TWF0aC5yb3VuZChuKnRbcl0vdFtlXSk6dFtyXSxpW2VdPW4saX0sY29udGFpbjpmdW5jdGlvbihuLGkpe3ZhciByPXRoaXM7cmV0dXJuIEsobj1VKHt9LG4pLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG49bltlXT5pW2VdP3IucmF0aW8obixlLGlbZV0pOm59KSxufSxjb3ZlcjpmdW5jdGlvbihuLGkpe3ZhciByPXRoaXM7cmV0dXJuIEsobj10aGlzLmNvbnRhaW4obixpKSxmdW5jdGlvbih0LGUpe3JldHVybiBuPW5bZV08aVtlXT9yLnJhdGlvKG4sZSxpW2VdKTpufSksbn19O2Z1bmN0aW9uIGl0KHQsZSxuKXtpZihJKGUpKWZvcih2YXIgaSBpbiBlKWl0KHQsaSxlW2ldKTtlbHNle2lmKFAobikpcmV0dXJuKHQ9aih0KSkmJnQuZ2V0QXR0cmlidXRlKGUpO1codCkuZm9yRWFjaChmdW5jdGlvbih0KXskKG4pJiYobj1uLmNhbGwodCxpdCh0LGUpKSksbnVsbD09PW4/b3QodCxlKTp0LnNldEF0dHJpYnV0ZShlLG4pfSl9fWZ1bmN0aW9uIHJ0KHQsZSl7cmV0dXJuIFcodCkuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoZSl9KX1mdW5jdGlvbiBvdCh0LGUpe3Q9Vyh0KSxlLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZShlKSYmdC5yZW1vdmVBdHRyaWJ1dGUoZSl9KX0pfWZ1bmN0aW9uIHN0KHQsZSl7Zm9yKHZhciBuPTAsaT1bZSwiZGF0YS0iK2VdO248aS5sZW5ndGg7bisrKWlmKHJ0KHQsaVtuXSkpcmV0dXJuIGl0KHQsaVtuXSl9dmFyIGF0PS9tc2llfHRyaWRlbnQvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSxodD0icnRsIj09PWl0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwiZGlyIiksY3Q9Im9udG91Y2hzdGFydCJpbiB3aW5kb3csdXQ9d2luZG93LlBvaW50ZXJFdmVudCxsdD1jdHx8d2luZG93LkRvY3VtZW50VG91Y2gmJmRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaHx8bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLGR0PXV0PyJwb2ludGVyZG93biI6Y3Q/InRvdWNoc3RhcnQiOiJtb3VzZWRvd24iLGZ0PXV0PyJwb2ludGVybW92ZSI6Y3Q/InRvdWNobW92ZSI6Im1vdXNlbW92ZSIscHQ9dXQ/InBvaW50ZXJ1cCI6Y3Q/InRvdWNoZW5kIjoibW91c2V1cCIsbXQ9dXQ/InBvaW50ZXJlbnRlciI6Y3Q/IiI6Im1vdXNlZW50ZXIiLGd0PXV0PyJwb2ludGVybGVhdmUiOmN0PyIiOiJtb3VzZWxlYXZlIix2dD11dD8icG9pbnRlcmNhbmNlbCI6InRvdWNoY2FuY2VsIjtmdW5jdGlvbiB3dCh0LGUpe3JldHVybiBqKHQpfHx4dCh0LHl0KHQsZSkpfWZ1bmN0aW9uIGJ0KHQsZSl7dmFyIG49Vyh0KTtyZXR1cm4gbi5sZW5ndGgmJm58fGt0KHQseXQodCxlKSl9ZnVuY3Rpb24geXQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZG9jdW1lbnQpLFR0KHQpfHxFKGUpP2U6ZS5vd25lckRvY3VtZW50fWZ1bmN0aW9uIHh0KHQsZSl7cmV0dXJuIGooJHQodCxlLCJxdWVyeVNlbGVjdG9yIikpfWZ1bmN0aW9uIGt0KHQsZSl7cmV0dXJuIFcoJHQodCxlLCJxdWVyeVNlbGVjdG9yQWxsIikpfWZ1bmN0aW9uICR0KHQscyxlKXtpZih2b2lkIDA9PT1zJiYocz1kb2N1bWVudCksIXR8fCFPKHQpKXJldHVybiBudWxsO3ZhciBhO1R0KHQ9dC5yZXBsYWNlKFN0LCIkMSAqIikpJiYoYT1bXSx0PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKEV0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvLCQvLCIiKS50cmltKCl9KX0odCkubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIG49cztpZigiISI9PT10WzBdKXt2YXIgaT10LnN1YnN0cigxKS50cmltKCkuc3BsaXQoIiAiKTtuPU10KHMucGFyZW50Tm9kZSxpWzBdKSx0PWkuc2xpY2UoMSkuam9pbigiICIpLnRyaW0oKX1pZigiLSI9PT10WzBdKXt2YXIgcj10LnN1YnN0cigxKS50cmltKCkuc3BsaXQoIiAiKSxvPShufHxzKS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO249X3Qobyx0LnN1YnN0cigxKSk/bzpudWxsLHQ9ci5zbGljZSgxKS5qb2luKCIgIil9cmV0dXJuIG4/KG4uaWR8fChuLmlkPSJ1ay0iK0RhdGUubm93KCkrZSxhLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gb3QobiwiaWQiKX0pKSwiIyIrenQobi5pZCkrIiAiK3QpOm51bGx9KS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCIpLHM9ZG9jdW1lbnQpO3RyeXtyZXR1cm4gc1tlXSh0KX1jYXRjaCh0KXtyZXR1cm4gbnVsbH1maW5hbGx5e2EmJmEuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSl9fXZhciBJdD0vKF58W15cXF0sKVxzKlshPit+LV0vLFN0PS8oWyE+K34tXSkoPz1ccytbIT4rfi1dfFxzKiQpL2c7ZnVuY3Rpb24gVHQodCl7cmV0dXJuIE8odCkmJnQubWF0Y2goSXQpfXZhciBFdD0vLio/W15cXF0oPzosfCQpL2c7dmFyIEN0PUVsZW1lbnQucHJvdG90eXBlLEF0PUN0Lm1hdGNoZXN8fEN0LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8Q3QubXNNYXRjaGVzU2VsZWN0b3I7ZnVuY3Rpb24gX3QodCxlKXtyZXR1cm4gVyh0KS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBBdC5jYWxsKHQsZSl9KX12YXIgTnQ9Q3QuY2xvc2VzdHx8ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztkb3tpZihfdChlLHQpKXJldHVybiBlO2U9ZS5wYXJlbnROb2RlfXdoaWxlKGUmJjE9PT1lLm5vZGVUeXBlKX07ZnVuY3Rpb24gTXQodCxlKXtyZXR1cm4gdyhlLCI+IikmJihlPWUuc2xpY2UoMSkpLEEodCk/TnQuY2FsbCh0LGUpOlcodCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBNdCh0LGUpfSkuZmlsdGVyKEJvb2xlYW4pfWZ1bmN0aW9uIE90KHQsZSl7dmFyIG49W107Zm9yKHQ9aih0KTsodD10LnBhcmVudE5vZGUpJiYxPT09dC5ub2RlVHlwZTspX3QodCxlKSYmbi5wdXNoKHQpO3JldHVybiBufXZhciBEdD13aW5kb3cuQ1NTJiZDU1MuZXNjYXBlfHxmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC8oW15ceDdmLVx1RkZGRlx3LV0pL2csZnVuY3Rpb24odCl7cmV0dXJuIlxcIit0fSl9O2Z1bmN0aW9uIHp0KHQpe3JldHVybiBPKHQpP0R0LmNhbGwobnVsbCx0KToiIn12YXIgQnQ9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1lbnVpdGVtOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07ZnVuY3Rpb24gUHQodCl7cmV0dXJuIFcodCkuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gQnRbdC50YWdOYW1lLnRvTG93ZXJDYXNlKCldfSl9ZnVuY3Rpb24gSHQodCl7cmV0dXJuIFcodCkuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5vZmZzZXRXaWR0aHx8dC5vZmZzZXRIZWlnaHR8fHQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGh9KX12YXIgTHQ9ImlucHV0LHNlbGVjdCx0ZXh0YXJlYSxidXR0b24iO2Z1bmN0aW9uIEZ0KHQpe3JldHVybiBXKHQpLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIF90KHQsTHQpfSl9ZnVuY3Rpb24ganQodCxlKXtyZXR1cm4gVyh0KS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIF90KHQsZSl9KX1mdW5jdGlvbiBXdCh0LGUpe3JldHVybiBPKGUpP190KHQsZSl8fE10KHQsZSk6dD09PWV8fChFKGUpP2UuZG9jdW1lbnRFbGVtZW50OmooZSkpLmNvbnRhaW5zKGoodCkpfWZ1bmN0aW9uIFZ0KCl7Zm9yKHZhciB0PVtdLGU9YXJndW1lbnRzLmxlbmd0aDtlLS07KXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVh0KHQpLGk9blswXSxyPW5bMV0sbz1uWzJdLHM9blszXSxhPW5bNF07cmV0dXJuIGk9WnQoaSksMTxzLmxlbmd0aCYmKHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBrKHQuZGV0YWlsKT9lLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KHQuZGV0YWlsKSk6ZSh0KX19KHMpKSxvJiYocz1mdW5jdGlvbih0LGkscil7dmFyIG89dGhpcztyZXR1cm4gZnVuY3Rpb24obil7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPSI+Ij09PWlbMF0/a3QoaSx0KS5yZXZlcnNlKCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBXdChuLnRhcmdldCx0KX0pWzBdOk10KG4udGFyZ2V0LGkpO2UmJihuLmRlbGVnYXRlPXQsbi5jdXJyZW50PWUsci5jYWxsKG8sbikpfSl9fShpLG8scykpLGEmJmEuc2VsZiYmKHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHQudGFyZ2V0PT09dC5jdXJyZW50VGFyZ2V0fHx0LnRhcmdldD09PXQuY3VycmVudClyZXR1cm4gZS5jYWxsKG51bGwsdCl9fShzKSksYT1LdChhKSxyLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLGEpfSl9KSxmdW5jdGlvbigpe3JldHVybiBSdChpLHIscyxhKX19ZnVuY3Rpb24gUnQodCxlLG4saSl7dm9pZCAwPT09aSYmKGk9ITEpLGk9S3QoaSksdD1adCh0KSxlLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuLGkpfSl9KX1mdW5jdGlvbiBZdCgpe2Zvcih2YXIgdD1bXSxlPWFyZ3VtZW50cy5sZW5ndGg7ZS0tOyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1YdCh0KSxpPW5bMF0scj1uWzFdLG89blsyXSxzPW5bM10sYT1uWzRdLGg9bls1XSxjPVZ0KGkscixvLGZ1bmN0aW9uKHQpe3ZhciBlPSFofHxoKHQpO2UmJihjKCkscyh0LGUpKX0sYSk7cmV0dXJuIGN9ZnVuY3Rpb24gcXQodCxuLGkpe3JldHVybiBadCh0KS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmZS5kaXNwYXRjaEV2ZW50KFV0KG4sITAsITAsaSkpfSwhMCl9ZnVuY3Rpb24gVXQodCxlLG4saSl7aWYodm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PW4mJihuPSExKSxPKHQpKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtyLmluaXRDdXN0b21FdmVudCh0LGUsbixpKSx0PXJ9cmV0dXJuIHR9ZnVuY3Rpb24gWHQodCl7cmV0dXJuICQodFsyXSkmJnQuc3BsaWNlKDIsMCwhMSksdH1mdW5jdGlvbiBLdCh0KXtyZXR1cm4gdCYmYXQmJiFNKHQpPyEhdC5jYXB0dXJlOnR9ZnVuY3Rpb24gR3QodCl7cmV0dXJuIHQmJiJhZGRFdmVudExpc3RlbmVyImluIHR9ZnVuY3Rpb24gSnQodCl7cmV0dXJuIEd0KHQpP3Q6aih0KX1mdW5jdGlvbiBadCh0KXtyZXR1cm4gayh0KT90Lm1hcChKdCkuZmlsdGVyKEJvb2xlYW4pOk8odCk/a3QodCk6R3QodCk/W3RdOlcodCl9ZnVuY3Rpb24gUXQodCl7cmV0dXJuInRvdWNoIj09PXQucG9pbnRlclR5cGV8fCEhdC50b3VjaGVzfWZ1bmN0aW9uIHRlKHQsZSl7dm9pZCAwPT09ZSYmKGU9ImNsaWVudCIpO3ZhciBuPXQudG91Y2hlcyxpPXQuY2hhbmdlZFRvdWNoZXMscj1uJiZuWzBdfHxpJiZpWzBdfHx0O3JldHVybnt4OnJbZSsiWCJdLHk6cltlKyJZIl19fWZ1bmN0aW9uIGVlKCl7dmFyIG49dGhpczt0aGlzLnByb21pc2U9bmV3IG5lKGZ1bmN0aW9uKHQsZSl7bi5yZWplY3Q9ZSxuLnJlc29sdmU9dH0pfXZhciBuZT0iUHJvbWlzZSJpbiB3aW5kb3c/d2luZG93LlByb21pc2U6b2UsaWU9MixyZT0ic2V0SW1tZWRpYXRlImluIHdpbmRvdz9zZXRJbW1lZGlhdGU6c2V0VGltZW91dDtmdW5jdGlvbiBvZSh0KXt0aGlzLnN0YXRlPWllLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuZGVmZXJyZWQ9W107dmFyIGU9dGhpczt0cnl7dChmdW5jdGlvbih0KXtlLnJlc29sdmUodCl9LGZ1bmN0aW9uKHQpe2UucmVqZWN0KHQpfSl9Y2F0Y2godCl7ZS5yZWplY3QodCl9fW9lLnJlamVjdD1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IG9lKGZ1bmN0aW9uKHQsZSl7ZShuKX0pfSxvZS5yZXNvbHZlPWZ1bmN0aW9uKG4pe3JldHVybiBuZXcgb2UoZnVuY3Rpb24odCxlKXt0KG4pfSl9LG9lLmFsbD1mdW5jdGlvbihzKXtyZXR1cm4gbmV3IG9lKGZ1bmN0aW9uKG4sdCl7dmFyIGk9W10scj0wO2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lbZV09dCwocis9MSk9PT1zLmxlbmd0aCYmbihpKX19MD09PXMubGVuZ3RoJiZuKGkpO2Zvcih2YXIgbz0wO288cy5sZW5ndGg7bys9MSlvZS5yZXNvbHZlKHNbb10pLnRoZW4oZShvKSx0KX0pfSxvZS5yYWNlPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcgb2UoZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPGkubGVuZ3RoO24rPTEpb2UucmVzb2x2ZShpW25dKS50aGVuKHQsZSl9KX07dmFyIHNlPW9lLnByb3RvdHlwZTtmdW5jdGlvbiBhZShzLGEpe3JldHVybiBuZXcgbmUoZnVuY3Rpb24odCxlKXt2YXIgbj1VKHtkYXRhOm51bGwsbWV0aG9kOiJHRVQiLGhlYWRlcnM6e30seGhyOm5ldyBYTUxIdHRwUmVxdWVzdCxiZWZvcmVTZW5kOlEscmVzcG9uc2VUeXBlOiIifSxhKTtuLmJlZm9yZVNlbmQobik7dmFyIGk9bi54aHI7Zm9yKHZhciByIGluIG4paWYociBpbiBpKXRyeXtpW3JdPW5bcl19Y2F0Y2godCl7fWZvcih2YXIgbyBpbiBpLm9wZW4obi5tZXRob2QudG9VcHBlckNhc2UoKSxzKSxuLmhlYWRlcnMpaS5zZXRSZXF1ZXN0SGVhZGVyKG8sbi5oZWFkZXJzW29dKTtWdChpLCJsb2FkIixmdW5jdGlvbigpezA9PT1pLnN0YXR1c3x8MjAwPD1pLnN0YXR1cyYmaS5zdGF0dXM8MzAwfHwzMDQ9PT1pLnN0YXR1cz90KGkpOmUoVShFcnJvcihpLnN0YXR1c1RleHQpLHt4aHI6aSxzdGF0dXM6aS5zdGF0dXN9KSl9KSxWdChpLCJlcnJvciIsZnVuY3Rpb24oKXtyZXR1cm4gZShVKEVycm9yKCJOZXR3b3JrIEVycm9yIikse3hocjppfSkpfSksVnQoaSwidGltZW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gZShVKEVycm9yKCJOZXR3b3JrIFRpbWVvdXQiKSx7eGhyOml9KSl9KSxpLnNlbmQobi5kYXRhKX0pfWZ1bmN0aW9uIGhlKGkscixvKXtyZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKHQsZSl7dmFyIG49bmV3IEltYWdlO24ub25lcnJvcj1lLG4ub25sb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIHQobil9LG8mJihuLnNpemVzPW8pLHImJihuLnNyY3NldD1yKSxuLnNyYz1pfSl9ZnVuY3Rpb24gY2UodCl7aWYoImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl2YXIgZT1WdChkb2N1bWVudCwiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXtlKCksdCgpfSk7ZWxzZSB0KCl9ZnVuY3Rpb24gdWUodCxlKXtyZXR1cm4gZT9XKHQpLmluZGV4T2YoaihlKSk6VygodD1qKHQpKSYmdC5wYXJlbnROb2RlLmNoaWxkcmVuKS5pbmRleE9mKHQpfWZ1bmN0aW9uIGxlKHQsZSxuLGkpe3ZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWkmJihpPSExKTt2YXIgcj0oZT1XKGUpKS5sZW5ndGg7cmV0dXJuIHQ9eih0KT9MKHQpOiJuZXh0Ij09PXQ/bisxOiJwcmV2aW91cyI9PT10P24tMTp1ZShlLHQpLGk/Wih0LDAsci0xKToodCU9cik8MD90K3I6dH1mdW5jdGlvbiBkZSh0KXtyZXR1cm4odD1UZSh0KSkuaW5uZXJIVE1MPSIiLHR9ZnVuY3Rpb24gZmUodCxlKXtyZXR1cm4gdD1UZSh0KSxQKGUpP3QuaW5uZXJIVE1MOnBlKHQuaGFzQ2hpbGROb2RlcygpP2RlKHQpOnQsZSl9ZnVuY3Rpb24gcGUoZSx0KXtyZXR1cm4gZT1UZShlKSx2ZSh0LGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGVuZENoaWxkKHQpfSl9ZnVuY3Rpb24gbWUoZSx0KXtyZXR1cm4gZT1UZShlKSx2ZSh0LGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsZSl9KX1mdW5jdGlvbiBnZShlLHQpe3JldHVybiBlPVRlKGUpLHZlKHQsZnVuY3Rpb24odCl7cmV0dXJuIGUubmV4dFNpYmxpbmc/bWUoZS5uZXh0U2libGluZyx0KTpwZShlLnBhcmVudE5vZGUsdCl9KX1mdW5jdGlvbiB2ZSh0LGUpe3JldHVybih0PU8odCk/SWUodCk6dCk/Imxlbmd0aCJpbiB0P1codCkubWFwKGUpOmUodCk6bnVsbH1mdW5jdGlvbiB3ZSh0KXtXKHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9KX1mdW5jdGlvbiBiZSh0LGUpe2ZvcihlPWoobWUodCxlKSk7ZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gcGUoZSx0KSxlfWZ1bmN0aW9uIHllKHQsZSl7cmV0dXJuIFcoVyh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGFzQ2hpbGROb2Rlcz9iZShXKHQuY2hpbGROb2RlcyksZSk6cGUodCxlKX0pKX1mdW5jdGlvbiB4ZSh0KXtXKHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSkuZmlsdGVyKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5pbmRleE9mKHQpPT09ZX0pLmZvckVhY2goZnVuY3Rpb24odCl7bWUodCx0LmNoaWxkTm9kZXMpLHdlKHQpfSl9c2UucmVzb2x2ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKGUuc3RhdGU9PT1pZSl7aWYodD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLiIpO3ZhciBuPSExO3RyeXt2YXIgaT10JiZ0LnRoZW47aWYobnVsbCE9PXQmJkkodCkmJiQoaSkpcmV0dXJuIHZvaWQgaS5jYWxsKHQsZnVuY3Rpb24odCl7bnx8ZS5yZXNvbHZlKHQpLG49ITB9LGZ1bmN0aW9uKHQpe258fGUucmVqZWN0KHQpLG49ITB9KX1jYXRjaCh0KXtyZXR1cm4gdm9pZChufHxlLnJlamVjdCh0KSl9ZS5zdGF0ZT0wLGUudmFsdWU9dCxlLm5vdGlmeSgpfX0sc2UucmVqZWN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoZS5zdGF0ZT09PWllKXtpZih0PT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlIHNldHRsZWQgd2l0aCBpdHNlbGYuIik7ZS5zdGF0ZT0xLGUudmFsdWU9dCxlLm5vdGlmeSgpfX0sc2Uubm90aWZ5PWZ1bmN0aW9uKCl7dmFyIG89dGhpcztyZShmdW5jdGlvbigpe2lmKG8uc3RhdGUhPT1pZSlmb3IoO28uZGVmZXJyZWQubGVuZ3RoOyl7dmFyIHQ9by5kZWZlcnJlZC5zaGlmdCgpLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXTt0cnl7MD09PW8uc3RhdGU/JChlKT9pKGUuY2FsbCh2b2lkIDAsby52YWx1ZSkpOmkoby52YWx1ZSk6MT09PW8uc3RhdGUmJigkKG4pP2kobi5jYWxsKHZvaWQgMCxvLnZhbHVlKSk6cihvLnZhbHVlKSl9Y2F0Y2godCl7cih0KX19fSl9LHNlLnRoZW49ZnVuY3Rpb24obixpKXt2YXIgcj10aGlzO3JldHVybiBuZXcgb2UoZnVuY3Rpb24odCxlKXtyLmRlZmVycmVkLnB1c2goW24saSx0LGVdKSxyLm5vdGlmeSgpfSl9LHNlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHQpfTt2YXIga2U9L15ccyo8KFx3K3whKVtePl0qPi8sJGU9L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLztmdW5jdGlvbiBJZSh0KXt2YXIgZT0kZS5leGVjKHQpO2lmKGUpcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZVsxXSk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGtlLnRlc3QodCk/bi5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsdC50cmltKCkpOm4udGV4dENvbnRlbnQ9dCwxPG4uY2hpbGROb2Rlcy5sZW5ndGg/VyhuLmNoaWxkTm9kZXMpOm4uZmlyc3RDaGlsZH1mdW5jdGlvbiBTZSh0LGUpe2lmKHQmJjE9PT10Lm5vZGVUeXBlKWZvcihlKHQpLHQ9dC5maXJzdEVsZW1lbnRDaGlsZDt0OylTZSh0LGUpLHQ9dC5uZXh0RWxlbWVudFNpYmxpbmd9ZnVuY3Rpb24gVGUodCxlKXtyZXR1cm4gTyh0KT9DZSh0KT9qKEllKHQpKTp4dCh0LGUpOmoodCl9ZnVuY3Rpb24gRWUodCxlKXtyZXR1cm4gTyh0KT9DZSh0KT9XKEllKHQpKTprdCh0LGUpOlcodCl9ZnVuY3Rpb24gQ2UodCl7cmV0dXJuIjwiPT09dFswXXx8dC5tYXRjaCgvXlxzKjwvKX1mdW5jdGlvbiBBZSh0KXtmb3IodmFyIGU9W10sbj1hcmd1bWVudHMubGVuZ3RoLTE7MDxuLS07KWVbbl09YXJndW1lbnRzW24rMV07emUodCxlLCJhZGQiKX1mdW5jdGlvbiBfZSh0KXtmb3IodmFyIGU9W10sbj1hcmd1bWVudHMubGVuZ3RoLTE7MDxuLS07KWVbbl09YXJndW1lbnRzW24rMV07emUodCxlLCJyZW1vdmUiKX1mdW5jdGlvbiBOZSh0LGUpe2l0KHQsImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4odHx8IiIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiXFxiIitlKyJcXGIiLCJnIiksIiIpfSl9ZnVuY3Rpb24gTWUodCl7Zm9yKHZhciBlPVtdLG49YXJndW1lbnRzLmxlbmd0aC0xOzA8bi0tOyllW25dPWFyZ3VtZW50c1tuKzFdO2VbMF0mJl9lKHQsZVswXSksZVsxXSYmQWUodCxlWzFdKX1mdW5jdGlvbiBPZSh0LGUpe3JldHVybiBlJiZXKHQpLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGUuc3BsaXQoIiAiKVswXSl9KX1mdW5jdGlvbiBEZSh0KXtmb3IodmFyIGk9W10sZT1hcmd1bWVudHMubGVuZ3RoLTE7MDxlLS07KWlbZV09YXJndW1lbnRzW2UrMV07aWYoaS5sZW5ndGgpe3ZhciByPU8oWChpPUJlKGkpKSk/W106aS5wb3AoKTtpPWkuZmlsdGVyKEJvb2xlYW4pLFcodCkuZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jbGFzc0xpc3Qsbj0wO248aS5sZW5ndGg7bisrKVBlLkZvcmNlP2UudG9nZ2xlLmFwcGx5KGUsW2lbbl1dLmNvbmNhdChyKSk6ZVsoUChyKT8hZS5jb250YWlucyhpW25dKTpyKT8iYWRkIjoicmVtb3ZlIl0oaVtuXSl9KX19ZnVuY3Rpb24gemUodCxuLGkpeyhuPUJlKG4pLmZpbHRlcihCb29sZWFuKSkubGVuZ3RoJiZXKHQpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC5jbGFzc0xpc3Q7UGUuTXVsdGlwbGU/ZVtpXS5hcHBseShlLG4pOm4uZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZVtpXSh0KX0pfSl9ZnVuY3Rpb24gQmUodCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0LmNhbGwodCxPKGUpJiZiKGUsIiAiKT9lLnRyaW0oKS5zcGxpdCgiICIpOmUpfSxbXSl9dmFyIFBlPXtnZXQgTXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5nZXQoIl9tdWx0aXBsZSIpfSxnZXQgRm9yY2UoKXtyZXR1cm4gdGhpcy5nZXQoIl9mb3JjZSIpfSxnZXQ6ZnVuY3Rpb24odCl7aWYoIWModGhpcyx0KSl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiXyIpLmNsYXNzTGlzdDtlLmFkZCgiYSIsImIiKSxlLnRvZ2dsZSgiYyIsITEpLHRoaXMuX211bHRpcGxlPWUuY29udGFpbnMoImIiKSx0aGlzLl9mb3JjZT0hZS5jb250YWlucygiYyIpfXJldHVybiB0aGlzW3RdfX0sSGU9eyJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50IjohMCwiY29sdW1uLWNvdW50IjohMCwiZmlsbC1vcGFjaXR5IjohMCwiZmxleC1ncm93IjohMCwiZmxleC1zaHJpbmsiOiEwLCJmb250LXdlaWdodCI6ITAsImxpbmUtaGVpZ2h0IjohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsInN0cm9rZS1kYXNoYXJyYXkiOiEwLCJzdHJva2UtZGFzaG9mZnNldCI6ITAsd2lkb3dzOiEwLCJ6LWluZGV4IjohMCx6b29tOiEwfTtmdW5jdGlvbiBMZSh0LGUscil7cmV0dXJuIFcodCkubWFwKGZ1bmN0aW9uKG4pe2lmKE8oZSkpe2lmKGU9WWUoZSksUChyKSlyZXR1cm4gamUobixlKTtyfHxEKHIpP24uc3R5bGVbZV09eihyKSYmIUhlW2VdP3IrInB4IjpyOm4uc3R5bGUucmVtb3ZlUHJvcGVydHkoZSl9ZWxzZXtpZihrKGUpKXt2YXIgaT1GZShuKTtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT1pW1llKGUpXSx0fSx7fSl9SShlKSYmSyhlLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIExlKG4sZSx0KX0pfXJldHVybiBufSlbMF19ZnVuY3Rpb24gRmUodCxlKXtyZXR1cm4odD1qKHQpKS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodCxlKX1mdW5jdGlvbiBqZSh0LGUsbil7cmV0dXJuIEZlKHQsbilbZV19dmFyIFdlPXt9O2Z1bmN0aW9uIFZlKHQpe3ZhciBlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighYXQpcmV0dXJuIEZlKGUpLmdldFByb3BlcnR5VmFsdWUoIi0tdWstIit0KTtpZighKHQgaW4gV2UpKXt2YXIgbj1wZShlLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtBZShuLCJ1ay0iK3QpLFdlW3RdPWplKG4sImNvbnRlbnQiLCI6YmVmb3JlIikucmVwbGFjZSgvXlsiJ10oLiopWyInXSQvLCIkMSIpLHdlKG4pfXJldHVybiBXZVt0XX12YXIgUmU9e307ZnVuY3Rpb24gWWUodCl7dmFyIGU9UmVbdF07cmV0dXJuIGU9ZXx8KFJlW3RdPWZ1bmN0aW9uKHQpe3Q9ZCh0KTt2YXIgZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGU7aWYodCBpbiBlKXJldHVybiB0O3ZhciBuLGk9cWUubGVuZ3RoO2Zvcig7aS0tOylpZigobj0iLSIrcWVbaV0rIi0iK3QpaW4gZSlyZXR1cm4gbn0odCl8fHQpfXZhciBxZT1bIndlYmtpdCIsIm1veiIsIm1zIl07ZnVuY3Rpb24gVWUodCxzLGEsaCl7cmV0dXJuIHZvaWQgMD09PWEmJihhPTQwMCksdm9pZCAwPT09aCYmKGg9ImxpbmVhciIpLG5lLmFsbChXKHQpLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKG4saSl7Zm9yKHZhciB0IGluIHMpe3ZhciBlPUxlKG8sdCk7IiI9PT1lJiZMZShvLHQsZSl9dmFyIHI9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBxdChvLCJ0cmFuc2l0aW9uZW5kIil9LGEpO1l0KG8sInRyYW5zaXRpb25lbmQgdHJhbnNpdGlvbmNhbmNlbGVkIixmdW5jdGlvbih0KXt2YXIgZT10LnR5cGU7Y2xlYXJUaW1lb3V0KHIpLF9lKG8sInVrLXRyYW5zaXRpb24iKSxMZShvLHsidHJhbnNpdGlvbi1wcm9wZXJ0eSI6IiIsInRyYW5zaXRpb24tZHVyYXRpb24iOiIiLCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiI6IiJ9KSwidHJhbnNpdGlvbmNhbmNlbGVkIj09PWU/aSgpOm4oKX0se3NlbGY6ITB9KSxBZShvLCJ1ay10cmFuc2l0aW9uIiksTGUobyxVKHsidHJhbnNpdGlvbi1wcm9wZXJ0eSI6T2JqZWN0LmtleXMocykubWFwKFllKS5qb2luKCIsIiksInRyYW5zaXRpb24tZHVyYXRpb24iOmErIm1zIiwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOmh9LHMpKX0pfSkpfXZhciBYZT17c3RhcnQ6VWUsc3RvcDpmdW5jdGlvbih0KXtyZXR1cm4gcXQodCwidHJhbnNpdGlvbmVuZCIpLG5lLnJlc29sdmUoKX0sY2FuY2VsOmZ1bmN0aW9uKHQpe3F0KHQsInRyYW5zaXRpb25jYW5jZWxlZCIpfSxpblByb2dyZXNzOmZ1bmN0aW9uKHQpe3JldHVybiBPZSh0LCJ1ay10cmFuc2l0aW9uIil9fSxLZT0idWstYW5pbWF0aW9uLSIsR2U9InVrLWNhbmNlbC1hbmltYXRpb24iO2Z1bmN0aW9uIEplKHQsZSxuLGEsaCl7dmFyIGM9YXJndW1lbnRzO3JldHVybiB2b2lkIDA9PT1uJiYobj0yMDApLG5lLmFsbChXKHQpLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKGkscil7aWYoT2UocyxHZSkpcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIG5lLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIEplLmFwcGx5KHZvaWQgMCxjKS50aGVuKGkscil9KX0pO2Vsc2V7dmFyIHQ9ZSsiICIrS2UrKGg/ImxlYXZlIjoiZW50ZXIiKTt3KGUsS2UpJiYoYSYmKHQrPSIgdWstdHJhbnNmb3JtLW9yaWdpbi0iK2EpLGgmJih0Kz0iICIrS2UrInJldmVyc2UiKSksbygpLFl0KHMsImFuaW1hdGlvbmVuZCBhbmltYXRpb25jYW5jZWwiLGZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxuPSExOyJhbmltYXRpb25jYW5jZWwiPT09ZT8ocigpLG8oKSk6KGkoKSxuZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe249ITAsbygpfSkpLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe258fChBZShzLEdlKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXR1cm4gX2UocyxHZSl9KSl9KX0se3NlbGY6ITB9KSxMZShzLCJhbmltYXRpb25EdXJhdGlvbiIsbisibXMiKSxBZShzLHQpfWZ1bmN0aW9uIG8oKXtMZShzLCJhbmltYXRpb25EdXJhdGlvbiIsIiIpLE5lKHMsS2UrIlxcUyoiKX19KX0pKX12YXIgWmU9bmV3IFJlZ0V4cChLZSsiKGVudGVyfGxlYXZlKSIpLFFlPXtpbjpmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gSmUodCxlLG4saSwhMSl9LG91dDpmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gSmUodCxlLG4saSwhMCl9LGluUHJvZ3Jlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIFplLnRlc3QoaXQodCwiY2xhc3MiKSl9LGNhbmNlbDpmdW5jdGlvbih0KXtxdCh0LCJhbmltYXRpb25jYW5jZWwiKX19LHRuPXt3aWR0aDpbIngiLCJsZWZ0IiwicmlnaHQiXSxoZWlnaHQ6WyJ5IiwidG9wIiwiYm90dG9tIl19O2Z1bmN0aW9uIGVuKHQsZSx1LGwsZCxuLGkscil7dT1sbih1KSxsPWxuKGwpO3ZhciBmPXtlbGVtZW50OnUsdGFyZ2V0Omx9O2lmKCF0fHwhZSlyZXR1cm4gZjt2YXIgcD1ybih0KSxtPXJuKGUpLGc9bTtpZih1bihnLHUscCwtMSksdW4oZyxsLG0sMSksZD1kbihkLHAud2lkdGgscC5oZWlnaHQpLG49ZG4obixtLndpZHRoLG0uaGVpZ2h0KSxkLngrPW4ueCxkLnkrPW4ueSxnLmxlZnQrPWQueCxnLnRvcCs9ZC55LGkpe3ZhciBvPVtybih5bih0KSldO3ImJm8udW5zaGlmdChybihyKSksSyh0bixmdW5jdGlvbih0LHMpe3ZhciBhPXRbMF0saD10WzFdLGM9dFsyXTshMCE9PWkmJiFiKGksYSl8fG8uc29tZShmdW5jdGlvbihpKXt2YXIgdD11W2FdPT09aD8tcFtzXTp1W2FdPT09Yz9wW3NdOjAsZT1sW2FdPT09aD9tW3NdOmxbYV09PT1jPy1tW3NdOjA7aWYoZ1toXTxpW2hdfHxnW2hdK3Bbc10+aVtjXSl7dmFyIG49cFtzXS8yLHI9ImNlbnRlciI9PT1sW2FdPy1tW3NdLzI6MDtyZXR1cm4iY2VudGVyIj09PXVbYV0mJihvKG4scil8fG8oLW4sLXIpKXx8byh0LGUpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1nW2hdK2UrdC0yKmRbYV07aWYobj49aVtoXSYmbitwW3NdPD1pW2NdKXJldHVybiBnW2hdPW4sWyJlbGVtZW50IiwidGFyZ2V0Il0uZm9yRWFjaChmdW5jdGlvbih0KXtmW3RdW2FdPWU/Zlt0XVthXT09PXRuW3NdWzFdP3RuW3NdWzJdOnRuW3NdWzFdOmZbdF1bYV19KSwhMH19KX0pfXJldHVybiBubih0LGcpLGZ9ZnVuY3Rpb24gbm4obixpKXtpZihuPWoobiksIWkpcmV0dXJuIHJuKG4pO3ZhciByPW5uKG4pLG89TGUobiwicG9zaXRpb24iKTtbImxlZnQiLCJ0b3AiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQgaW4gaSl7dmFyIGU9TGUobix0KTtMZShuLHQsaVt0XS1yW3RdK0YoImFic29sdXRlIj09PW8mJiJhdXRvIj09PWU/b24obilbdF06ZSkpfX0pfWZ1bmN0aW9uIHJuKHQpe2lmKCEodD1qKHQpKSlyZXR1cm57fTt2YXIgZSxuLGk9eW4odCkscj1pLnBhZ2VZT2Zmc2V0LG89aS5wYWdlWE9mZnNldDtpZihUKHQpKXt2YXIgcz10LmlubmVySGVpZ2h0LGE9dC5pbm5lcldpZHRoO3JldHVybnt0b3A6cixsZWZ0Om8saGVpZ2h0OnMsd2lkdGg6YSxib3R0b206citzLHJpZ2h0Om8rYX19SHQodCl8fCJub25lIiE9PUxlKHQsImRpc3BsYXkiKXx8KGU9aXQodCwic3R5bGUiKSxuPWl0KHQsImhpZGRlbiIpLGl0KHQse3N0eWxlOihlfHwiIikrIjtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7IixoaWRkZW46bnVsbH0pKTt2YXIgaD10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBQKGUpfHxpdCh0LHtzdHlsZTplLGhpZGRlbjpufSkse2hlaWdodDpoLmhlaWdodCx3aWR0aDpoLndpZHRoLHRvcDpoLnRvcCtyLGxlZnQ6aC5sZWZ0K28sYm90dG9tOmguYm90dG9tK3IscmlnaHQ6aC5yaWdodCtvfX1mdW5jdGlvbiBvbihpKXt2YXIgcj0oaT1qKGkpKS5vZmZzZXRQYXJlbnR8fGZ1bmN0aW9uKHQpe3JldHVybiB4bih0KS5kb2N1bWVudEVsZW1lbnR9KGkpLG89bm4ociksdD1bInRvcCIsImxlZnQiXS5yZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgbj1wKGUpO3JldHVybiB0W2VdLT1vW2VdK0YoTGUoaSwibWFyZ2luIituKSkrRihMZShyLCJib3JkZXIiK24rIldpZHRoIikpLHR9LG5uKGkpKTtyZXR1cm57dG9wOnQudG9wLGxlZnQ6dC5sZWZ0fX12YXIgc249aG4oImhlaWdodCIpLGFuPWhuKCJ3aWR0aCIpO2Z1bmN0aW9uIGhuKGkpe3ZhciByPXAoaSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYodD1qKHQpLFAoZSkpe2lmKFQodCkpcmV0dXJuIHRbImlubmVyIityXTtpZihFKHQpKXt2YXIgbj10LmRvY3VtZW50RWxlbWVudDtyZXR1cm4gTWF0aC5tYXgoblsib2Zmc2V0IityXSxuWyJzY3JvbGwiK3JdKX1yZXR1cm4oZT0iYXV0byI9PT0oZT1MZSh0LGkpKT90WyJvZmZzZXQiK3JdOkYoZSl8fDApLWNuKGksdCl9TGUodCxpLGV8fDA9PT1lPytlK2NuKGksdCkrInB4IjoiIil9fWZ1bmN0aW9uIGNuKHQsbixlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ImJvcmRlci1ib3giKSxMZShuLCJib3hTaXppbmciKT09PWU/dG5bdF0uc2xpY2UoMSkubWFwKHApLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0K0YoTGUobiwicGFkZGluZyIrZSkpK0YoTGUobiwiYm9yZGVyIitlKyJXaWR0aCIpKX0sMCk6MH1mdW5jdGlvbiB1bihvLHMsYSxoKXtLKHRuLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXSxpPXRbMV0scj10WzJdO3Nbbl09PT1yP29baV0rPWFbZV0qaDoiY2VudGVyIj09PXNbbl0mJihvW2ldKz1hW2VdKmgvMil9KX1mdW5jdGlvbiBsbih0KXt2YXIgZT0vbGVmdHxjZW50ZXJ8cmlnaHQvLG49L3RvcHxjZW50ZXJ8Ym90dG9tLztyZXR1cm4gMT09PSh0PSh0fHwiIikuc3BsaXQoIiAiKSkubGVuZ3RoJiYodD1lLnRlc3QodFswXSk/dC5jb25jYXQoWyJjZW50ZXIiXSk6bi50ZXN0KHRbMF0pP1siY2VudGVyIl0uY29uY2F0KHQpOlsiY2VudGVyIiwiY2VudGVyIl0pLHt4OmUudGVzdCh0WzBdKT90WzBdOiJjZW50ZXIiLHk6bi50ZXN0KHRbMV0pP3RbMV06ImNlbnRlciJ9fWZ1bmN0aW9uIGRuKHQsZSxuKXt2YXIgaT0odHx8IiIpLnNwbGl0KCIgIikscj1pWzBdLG89aVsxXTtyZXR1cm57eDpyP0YocikqKHUociwiJSIpP2UvMTAwOjEpOjAseTpvP0YobykqKHUobywiJSIpP24vMTAwOjEpOjB9fWZ1bmN0aW9uIGZuKHQpe3N3aXRjaCh0KXtjYXNlImxlZnQiOnJldHVybiJyaWdodCI7Y2FzZSJyaWdodCI6cmV0dXJuImxlZnQiO2Nhc2UidG9wIjpyZXR1cm4iYm90dG9tIjtjYXNlImJvdHRvbSI6cmV0dXJuInRvcCI7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gcG4odCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTApLCFIdCh0KSlyZXR1cm4hMTt2YXIgaT15bih0PWoodCkpLHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXt0b3A6LWUsbGVmdDotbixib3R0b206ZStzbihpKSxyaWdodDpuK2FuKGkpfTtyZXR1cm4gdHQocixvKXx8ZXQoe3g6ci5sZWZ0LHk6ci50b3B9LG8pfWZ1bmN0aW9uIG1uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9MCksIUh0KHQpKXJldHVybiAwO3ZhciBuPXluKHQ9aih0KSksaT14bih0KSxyPXQub2Zmc2V0SGVpZ2h0K2Usbz12bih0KVswXSxzPXNuKG4pLGE9cytNYXRoLm1pbigwLG8tcyksaD1NYXRoLm1heCgwLHMtKHNuKGkpK2UtKG8rcikpKTtyZXR1cm4gWigoYStuLnBhZ2VZT2Zmc2V0LW8pLygoYSsoci0oaDxzP2g6MCkpKS8xMDApLzEwMCl9ZnVuY3Rpb24gZ24odCxlKXtpZihUKHQ9aih0KSl8fEUodCkpe3ZhciBuPXluKHQpOygwLG4uc2Nyb2xsVG8pKG4ucGFnZVhPZmZzZXQsZSl9ZWxzZSB0LnNjcm9sbFRvcD1lfWZ1bmN0aW9uIHZuKHQpe3ZhciBlPVswLDBdO2Rve2lmKGVbMF0rPXQub2Zmc2V0VG9wLGVbMV0rPXQub2Zmc2V0TGVmdCwiZml4ZWQiPT09TGUodCwicG9zaXRpb24iKSl7dmFyIG49eW4odCk7cmV0dXJuIGVbMF0rPW4ucGFnZVlPZmZzZXQsZVsxXSs9bi5wYWdlWE9mZnNldCxlfX13aGlsZSh0PXQub2Zmc2V0UGFyZW50KTtyZXR1cm4gZX1mdW5jdGlvbiB3bih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPSJ3aWR0aCIpLHZvaWQgMD09PW4mJihuPXdpbmRvdykseih0KT8rdDp1KHQsInZoIik/Ym4oc24oeW4obikpLHQpOnUodCwidnciKT9ibihhbih5bihuKSksdCk6dSh0LCIlIik/Ym4ocm4obilbZV0sdCk6Rih0KX1mdW5jdGlvbiBibih0LGUpe3JldHVybiB0KkYoZSkvMTAwfWZ1bmN0aW9uIHluKHQpe3JldHVybiBUKHQpP3Q6eG4odCkuZGVmYXVsdFZpZXd9ZnVuY3Rpb24geG4odCl7cmV0dXJuIGoodCkub3duZXJEb2N1bWVudH12YXIga249e3JlYWRzOltdLHdyaXRlczpbXSxyZWFkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlYWRzLnB1c2godCksSW4oKSx0fSx3cml0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53cml0ZXMucHVzaCh0KSxJbigpLHR9LGNsZWFyOmZ1bmN0aW9uKHQpe3JldHVybiBUbih0aGlzLnJlYWRzLHQpfHxUbih0aGlzLndyaXRlcyx0KX0sZmx1c2g6JG59O2Z1bmN0aW9uICRuKCl7U24oa24ucmVhZHMpLFNuKGtuLndyaXRlcy5zcGxpY2UoMCxrbi53cml0ZXMubGVuZ3RoKSksa24uc2NoZWR1bGVkPSExLChrbi5yZWFkcy5sZW5ndGh8fGtuLndyaXRlcy5sZW5ndGgpJiZJbighMCl9ZnVuY3Rpb24gSW4odCl7dm9pZCAwPT09dCYmKHQ9ITEpLGtuLnNjaGVkdWxlZHx8KGtuLnNjaGVkdWxlZD0hMCx0P25lLnJlc29sdmUoKS50aGVuKCRuKTpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoJG4pKX1mdW5jdGlvbiBTbih0KXtmb3IodmFyIGU7ZT10LnNoaWZ0KCk7KWUoKX1mdW5jdGlvbiBUbih0LGUpe3ZhciBuPXQuaW5kZXhPZihlKTtyZXR1cm4hIX5uJiYhIXQuc3BsaWNlKG4sMSl9ZnVuY3Rpb24gRW4oKXt9ZnVuY3Rpb24gQ24odCxlKXtyZXR1cm4oZS55LXQueSkvKGUueC10LngpfUVuLnByb3RvdHlwZT17cG9zaXRpb25zOltdLHBvc2l0aW9uOm51bGwsaW5pdDpmdW5jdGlvbigpe3ZhciBpPXRoaXM7dGhpcy5wb3NpdGlvbnM9W10sdGhpcy5wb3NpdGlvbj1udWxsO3ZhciByPSExO3RoaXMudW5iaW5kPVZ0KGRvY3VtZW50LCJtb3VzZW1vdmUiLGZ1bmN0aW9uKG4pe3J8fChzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHQ9RGF0ZS5ub3coKSxlPWkucG9zaXRpb25zLmxlbmd0aDtlJiYxMDA8dC1pLnBvc2l0aW9uc1tlLTFdLnRpbWUmJmkucG9zaXRpb25zLnNwbGljZSgwLGUpLGkucG9zaXRpb25zLnB1c2goe3RpbWU6dCx4Om4ucGFnZVgseTpuLnBhZ2VZfSksNTxpLnBvc2l0aW9ucy5sZW5ndGgmJmkucG9zaXRpb25zLnNoaWZ0KCkscj0hMX0sNSkscj0hMCl9KX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy51bmJpbmQmJnRoaXMudW5iaW5kKCl9LG1vdmVzVG86ZnVuY3Rpb24odCl7aWYodGhpcy5wb3NpdGlvbnMubGVuZ3RoPDIpcmV0dXJuITE7dmFyIGU9bm4odCksbj1YKHRoaXMucG9zaXRpb25zKSxpPXRoaXMucG9zaXRpb25zWzBdO2lmKGUubGVmdDw9bi54JiZuLng8PWUucmlnaHQmJmUudG9wPD1uLnkmJm4ueTw9ZS5ib3R0b20pcmV0dXJuITE7dmFyIHI9W1t7eDplLmxlZnQseTplLnRvcH0se3g6ZS5yaWdodCx5OmUuYm90dG9tfV0sW3t4OmUucmlnaHQseTplLnRvcH0se3g6ZS5sZWZ0LHk6ZS5ib3R0b219XV07cmV0dXJuIGUucmlnaHQ8PW4ueHx8KGUubGVmdD49bi54PyhyWzBdLnJldmVyc2UoKSxyWzFdLnJldmVyc2UoKSk6ZS5ib3R0b208PW4ueT9yWzBdLnJldmVyc2UoKTplLnRvcD49bi55JiZyWzFdLnJldmVyc2UoKSksISFyLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0KyhDbihpLGVbMF0pPENuKG4sZVswXSkmJkNuKGksZVsxXSk+Q24obixlWzFdKSl9LDApfX07dmFyIEFuPXt9O2Z1bmN0aW9uIF9uKHQsZSxuKXtyZXR1cm4gQW4uY29tcHV0ZWQoJCh0KT90LmNhbGwobixuKTp0LCQoZSk/ZS5jYWxsKG4sbik6ZSl9ZnVuY3Rpb24gTm4odCxlKXtyZXR1cm4gdD10JiYhayh0KT9bdF06dCxlP3Q/dC5jb25jYXQoZSk6ayhlKT9lOltlXTp0fWZ1bmN0aW9uIE1uKGUsbixpKXt2YXIgcj17fTtpZigkKG4pJiYobj1uLm9wdGlvbnMpLG4uZXh0ZW5kcyYmKGU9TW4oZSxuLmV4dGVuZHMsaSkpLG4ubWl4aW5zKWZvcih2YXIgdD0wLG89bi5taXhpbnMubGVuZ3RoO3Q8bzt0KyspZT1NbihlLG4ubWl4aW5zW3RdLGkpO2Zvcih2YXIgcyBpbiBlKWgocyk7Zm9yKHZhciBhIGluIG4pYyhlLGEpfHxoKGEpO2Z1bmN0aW9uIGgodCl7clt0XT0oQW5bdF18fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFAoZSk/dDplfSkoZVt0XSxuW3RdLGkpfXJldHVybiByfWZ1bmN0aW9uIE9uKHQsZSl7dmFyIG47dm9pZCAwPT09ZSYmKGU9W10pO3RyeXtyZXR1cm4gdD93KHQsInsiKT9KU09OLnBhcnNlKHQpOmUubGVuZ3RoJiYhYih0LCI6Iik/KChuPXt9KVtlWzBdXT10LG4pOnQuc3BsaXQoIjsiKS5yZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgbj1lLnNwbGl0KC86KC4qKS8pLGk9blswXSxyPW5bMV07cmV0dXJuIGkmJiFQKHIpJiYodFtpLnRyaW0oKV09ci50cmltKCkpLHR9LHt9KTp7fX1jYXRjaCh0KXtyZXR1cm57fX19QW4uZXZlbnRzPUFuLmNyZWF0ZWQ9QW4uYmVmb3JlQ29ubmVjdD1Bbi5jb25uZWN0ZWQ9QW4uYmVmb3JlRGlzY29ubmVjdD1Bbi5kaXNjb25uZWN0ZWQ9QW4uZGVzdHJveT1ObixBbi5hcmdzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuITEhPT1lJiZObihlfHx0KX0sQW4udXBkYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEcoTm4odCwkKGUpP3tyZWFkOmV9OmUpLCJvcmRlciIpfSxBbi5wcm9wcz1mdW5jdGlvbih0LGUpe3JldHVybiBrKGUpJiYoZT1lLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0W2VdPVN0cmluZyx0fSx7fSkpLEFuLm1ldGhvZHModCxlKX0sQW4uY29tcHV0ZWQ9QW4ubWV0aG9kcz1mdW5jdGlvbih0LGUpe3JldHVybiBlP3Q/VSh7fSx0LGUpOmU6dH0sQW4uZGF0YT1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIHQ/X24oZSxuLHQpOm4/ZT9mdW5jdGlvbih0KXtyZXR1cm4gX24oZSxuLHQpfTpuOmV9O2Z1bmN0aW9uIERuKHQpe3RoaXMuaWQ9Kyt6bix0aGlzLmVsPWoodCl9dmFyIHpuPTA7ZnVuY3Rpb24gQm4odCxlKXt0cnl7dC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KFUoe2V2ZW50OiJjb21tYW5kIn0sZSkpLCIqIil9Y2F0Y2godCl7fX1Ebi5wcm90b3R5cGUuaXNWaWRlbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWW91dHViZSgpfHx0aGlzLmlzVmltZW8oKXx8dGhpcy5pc0hUTUw1KCl9LERuLnByb3RvdHlwZS5pc0hUTUw1PWZ1bmN0aW9uKCl7cmV0dXJuIlZJREVPIj09PXRoaXMuZWwudGFnTmFtZX0sRG4ucHJvdG90eXBlLmlzSUZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIklGUkFNRSI9PT10aGlzLmVsLnRhZ05hbWV9LERuLnByb3RvdHlwZS5pc1lvdXR1YmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0lGcmFtZSgpJiYhIXRoaXMuZWwuc3JjLm1hdGNoKC9cL1wvLio/eW91dHViZSgtbm9jb29raWUpP1wuW2Etel0rXC8od2F0Y2hcP3Y9W14mXHNdK3xlbWJlZCl8eW91dHVcLmJlXC8uKi8pfSxEbi5wcm90b3R5cGUuaXNWaW1lbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSUZyYW1lKCkmJiEhdGhpcy5lbC5zcmMubWF0Y2goL3ZpbWVvXC5jb21cL3ZpZGVvXC8uKi8pfSxEbi5wcm90b3R5cGUuZW5hYmxlQXBpPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLnJlYWR5KXJldHVybiB0aGlzLnJlYWR5O3ZhciBuLGk9dGhpcy5pc1lvdXR1YmUoKSxyPXRoaXMuaXNWaW1lbygpO3JldHVybiBpfHxyP3RoaXMucmVhZHk9bmV3IG5lKGZ1bmN0aW9uKHQpe1l0KGUuZWwsImxvYWQiLGZ1bmN0aW9uKCl7aWYoaSl7dmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gQm4oZS5lbCx7ZXZlbnQ6Imxpc3RlbmluZyIsaWQ6ZS5pZH0pfTtuPXNldEludGVydmFsKHQsMTAwKSx0KCl9fSksZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyBuZShmdW5jdGlvbihuKXtZdCh3aW5kb3csIm1lc3NhZ2UiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oZSl9LCExLGZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0YTtpZihlJiZPKGUpKXt0cnl7ZT1KU09OLnBhcnNlKGUpfWNhdGNoKHQpe3JldHVybn1yZXR1cm4gZSYmaShlKX19KX0pfShmdW5jdGlvbih0KXtyZXR1cm4gaSYmdC5pZD09PWUuaWQmJiJvblJlYWR5Ij09PXQuZXZlbnR8fHImJk51bWJlcih0LnBsYXllcl9pZCk9PT1lLmlkfSkudGhlbihmdW5jdGlvbigpe3QoKSxuJiZjbGVhckludGVydmFsKG4pfSksaXQoZS5lbCwic3JjIixlLmVsLnNyYysoYihlLmVsLnNyYywiPyIpPyImIjoiPyIpKyhpPyJlbmFibGVqc2FwaT0xIjoiYXBpPTEmcGxheWVyX2lkPSIrZS5pZCkpfSk6bmUucmVzb2x2ZSgpfSxEbi5wcm90b3R5cGUucGxheT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy5pc1ZpZGVvKCkpaWYodGhpcy5pc0lGcmFtZSgpKXRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBCbih0LmVsLHtmdW5jOiJwbGF5VmlkZW8iLG1ldGhvZDoicGxheSJ9KX0pO2Vsc2UgaWYodGhpcy5pc0hUTUw1KCkpdHJ5e3ZhciBlPXRoaXMuZWwucGxheSgpO2UmJmUuY2F0Y2goUSl9Y2F0Y2godCl7fX0sRG4ucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmlzVmlkZW8oKSYmKHRoaXMuaXNJRnJhbWUoKT90aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gQm4odC5lbCx7ZnVuYzoicGF1c2VWaWRlbyIsbWV0aG9kOiJwYXVzZSJ9KX0pOnRoaXMuaXNIVE1MNSgpJiZ0aGlzLmVsLnBhdXNlKCkpfSxEbi5wcm90b3R5cGUubXV0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pc1ZpZGVvKCkmJih0aGlzLmlzSUZyYW1lKCk/dGhpcy5lbmFibGVBcGkoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIEJuKHQuZWwse2Z1bmM6Im11dGUiLG1ldGhvZDoic2V0Vm9sdW1lIix2YWx1ZTowfSl9KTp0aGlzLmlzSFRNTDUoKSYmKHRoaXMuZWwubXV0ZWQ9ITAsaXQodGhpcy5lbCwibXV0ZWQiLCIiKSkpfTt2YXIgUG49IkludGVyc2VjdGlvbk9ic2VydmVyImluIHdpbmRvdz93aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsdCl7dmFyIG49dGhpczt2b2lkIDA9PT10JiYodD17fSk7dmFyIGk9dC5yb290TWFyZ2luO3ZvaWQgMD09PWkmJihpPSIwIDAiKSx0aGlzLnRhcmdldHM9W107dmFyIHIsbz0oaXx8IjAgMCIpLnNwbGl0KCIgIikubWFwKEYpLHM9b1swXSxhPW9bMV07dGhpcy5vZmZzZXRUb3A9cyx0aGlzLm9mZnNldExlZnQ9YSx0aGlzLmFwcGx5PWZ1bmN0aW9uKCl7cj1yfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PW4udGFrZVJlY29yZHMoKTt0Lmxlbmd0aCYmZSh0LG4pLHI9ITF9KX0pfSx0aGlzLm9mZj1WdCh3aW5kb3csInNjcm9sbCByZXNpemUgbG9hZCIsdGhpcy5hcHBseSx7cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSl9cmV0dXJuIHQucHJvdG90eXBlLnRha2VSZWNvcmRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy50YXJnZXRzLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT1wbih0LnRhcmdldCxuLm9mZnNldFRvcCxuLm9mZnNldExlZnQpO2lmKG51bGw9PT10LmlzSW50ZXJzZWN0aW5nfHxlXnQuaXNJbnRlcnNlY3RpbmcpcmV0dXJuIHQuaXNJbnRlcnNlY3Rpbmc9ZSwhMH0pfSx0LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHQpe3RoaXMudGFyZ2V0cy5wdXNoKHt0YXJnZXQ6dCxpc0ludGVyc2VjdGluZzpudWxsfSksdGhpcy5hcHBseSgpfSx0LnByb3RvdHlwZS5kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy50YXJnZXRzPVtdLHRoaXMub2ZmKCl9LHR9KCk7ZnVuY3Rpb24gSG4odCl7cmV0dXJuISghdyh0LCJ1ay0iKSYmIXcodCwiZGF0YS11ay0iKSkmJmYodC5yZXBsYWNlKCJkYXRhLXVrLSIsIiIpLnJlcGxhY2UoInVrLSIsIiIpKX1mdW5jdGlvbiBMbih0KXt0aGlzLl9pbml0KHQpfXZhciBGbixqbixXbixWbixSbixZbixxbixVbixYbjtmdW5jdGlvbiBLbih0LGUpe2lmKHQpZm9yKHZhciBuIGluIHQpdFtuXS5fY29ubmVjdGVkJiZ0W25dLl9jYWxsVXBkYXRlKGUpfWZ1bmN0aW9uIEduKHQsZSl7dmFyIG49e30saT10LmFyZ3M7dm9pZCAwPT09aSYmKGk9W10pO3ZhciByPXQucHJvcHM7dm9pZCAwPT09ciYmKHI9e30pO3ZhciBvPXQuZWw7aWYoIXIpcmV0dXJuIG47Zm9yKHZhciBzIGluIHIpe3ZhciBhPWQocyksaD1zdChvLGEpO2lmKCFQKGgpKXtpZihoPXJbc109PT1Cb29sZWFuJiYiIj09PWh8fHRpKHJbc10saCksInRhcmdldCI9PT1hJiYoIWh8fHcoaCwiXyIpKSljb250aW51ZTtuW3NdPWh9fXZhciBjPU9uKHN0KG8sZSksaSk7Zm9yKHZhciB1IGluIGMpe3ZhciBsPWYodSk7dm9pZCAwIT09cltsXSYmKG5bbF09dGkocltsXSxjW3VdKSl9cmV0dXJuIG59ZnVuY3Rpb24gSm4oaSxyLG8pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9aS5fY29tcHV0ZWRzLGU9aS4kcHJvcHMsbj1pLiRlbDtyZXR1cm4gYyh0LHIpfHwodFtyXT0oby5nZXR8fG8pLmNhbGwoaSxlLG4pKSx0W3JdfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9aS5fY29tcHV0ZWRzO2Vbcl09by5zZXQ/by5zZXQuY2FsbChpLHQpOnQsUChlW3JdKSYmZGVsZXRlIGVbcl19fSl9ZnVuY3Rpb24gWm4oZSxuLGkpe1Mobil8fChuPXtuYW1lOmksaGFuZGxlcjpufSk7dmFyIHQ9bi5uYW1lLHI9bi5lbCxvPW4uaGFuZGxlcixzPW4uY2FwdHVyZSxhPW4ucGFzc2l2ZSxoPW4uZGVsZWdhdGUsYz1uLmZpbHRlcix1PW4uc2VsZjtyPSQocik/ci5jYWxsKGUpOnJ8fGUuJGVsLGsocik/ci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBabihlLFUoe30sbix7ZWw6dH0pLGkpfSk6IXJ8fGMmJiFjLmNhbGwoZSl8fGUuX2V2ZW50cy5wdXNoKFZ0KHIsdCxoP08oaCk/aDpoLmNhbGwoZSk6bnVsbCxPKG8pP2Vbb106by5iaW5kKGUpLHtwYXNzaXZlOmEsY2FwdHVyZTpzLHNlbGY6dX0pKX1mdW5jdGlvbiBRbih0LGUpe3JldHVybiB0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiF0fHwhYyh0LGUpfSl9ZnVuY3Rpb24gdGkodCxlKXtyZXR1cm4gdD09PUJvb2xlYW4/SChlKTp0PT09TnVtYmVyP0woZSk6Imxpc3QiPT09dD9WKGUpOnQ/dChlKTplfUxuLnV0aWw9T2JqZWN0LmZyZWV6ZSh7YWpheDphZSxnZXRJbWFnZTpoZSx0cmFuc2l0aW9uOlVlLFRyYW5zaXRpb246WGUsYW5pbWF0ZTpKZSxBbmltYXRpb246UWUsYXR0cjppdCxoYXNBdHRyOnJ0LHJlbW92ZUF0dHI6b3QsZGF0YTpzdCxhZGRDbGFzczpBZSxyZW1vdmVDbGFzczpfZSxyZW1vdmVDbGFzc2VzOk5lLHJlcGxhY2VDbGFzczpNZSxoYXNDbGFzczpPZSx0b2dnbGVDbGFzczpEZSxwb3NpdGlvbkF0OmVuLG9mZnNldDpubixwb3NpdGlvbjpvbixoZWlnaHQ6c24sd2lkdGg6YW4sYm94TW9kZWxBZGp1c3Q6Y24sZmxpcFBvc2l0aW9uOmZuLGlzSW5WaWV3OnBuLHNjcm9sbGVkT3ZlcjptbixzY3JvbGxUb3A6Z24sb2Zmc2V0UG9zaXRpb246dm4sdG9QeDp3bixyZWFkeTpjZSxpbmRleDp1ZSxnZXRJbmRleDpsZSxlbXB0eTpkZSxodG1sOmZlLHByZXBlbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZT1UZShlKSkuaGFzQ2hpbGROb2RlcygpP3ZlKHQsZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5zZXJ0QmVmb3JlKHQsZS5maXJzdENoaWxkKX0pOnBlKGUsdCl9LGFwcGVuZDpwZSxiZWZvcmU6bWUsYWZ0ZXI6Z2UscmVtb3ZlOndlLHdyYXBBbGw6YmUsd3JhcElubmVyOnllLHVud3JhcDp4ZSxmcmFnbWVudDpJZSxhcHBseTpTZSwkOlRlLCQkOkVlLGlzSUU6YXQsaXNSdGw6aHQsaGFzVG91Y2g6bHQscG9pbnRlckRvd246ZHQscG9pbnRlck1vdmU6ZnQscG9pbnRlclVwOnB0LHBvaW50ZXJFbnRlcjptdCxwb2ludGVyTGVhdmU6Z3QscG9pbnRlckNhbmNlbDp2dCxvbjpWdCxvZmY6UnQsb25jZTpZdCx0cmlnZ2VyOnF0LGNyZWF0ZUV2ZW50OlV0LHRvRXZlbnRUYXJnZXRzOlp0LGlzVG91Y2g6UXQsZ2V0RXZlbnRQb3M6dGUsZmFzdGRvbTprbixpc1ZvaWRFbGVtZW50OlB0LGlzVmlzaWJsZTpIdCxzZWxJbnB1dDpMdCxpc0lucHV0OkZ0LGZpbHRlcjpqdCx3aXRoaW46V3QsaGFzT3duOmMsaHlwaGVuYXRlOmQsY2FtZWxpemU6Zix1Y2ZpcnN0OnAsc3RhcnRzV2l0aDp3LGVuZHNXaXRoOnUsaW5jbHVkZXM6YixmaW5kSW5kZXg6eCxpc0FycmF5OmssaXNGdW5jdGlvbjokLGlzT2JqZWN0OkksaXNQbGFpbk9iamVjdDpTLGlzV2luZG93OlQsaXNEb2N1bWVudDpFLGlzSlF1ZXJ5OkMsaXNOb2RlOkEsaXNOb2RlQ29sbGVjdGlvbjpOLGlzQm9vbGVhbjpNLGlzU3RyaW5nOk8saXNOdW1iZXI6RCxpc051bWVyaWM6eixpc0VtcHR5OkIsaXNVbmRlZmluZWQ6UCx0b0Jvb2xlYW46SCx0b051bWJlcjpMLHRvRmxvYXQ6Rix0b05vZGU6aix0b05vZGVzOlcsdG9MaXN0OlYsdG9NczpSLGlzRXF1YWw6WSxzd2FwOnEsYXNzaWduOlUsbGFzdDpYLGVhY2g6Syxzb3J0Qnk6Ryx1bmlxdWVCeTpKLGNsYW1wOlosbm9vcDpRLGludGVyc2VjdFJlY3Q6dHQscG9pbnRJblJlY3Q6ZXQsRGltZW5zaW9uczpudCxNb3VzZVRyYWNrZXI6RW4sbWVyZ2VPcHRpb25zOk1uLHBhcnNlT3B0aW9uczpPbixQbGF5ZXI6RG4sUHJvbWlzZTpuZSxEZWZlcnJlZDplZSxJbnRlcnNlY3Rpb25PYnNlcnZlcjpQbixxdWVyeTp3dCxxdWVyeUFsbDpidCxmaW5kOnh0LGZpbmRBbGw6a3QsbWF0Y2hlczpfdCxjbG9zZXN0Ok10LHBhcmVudHM6T3QsZXNjYXBlOnp0LGNzczpMZSxnZXRTdHlsZXM6RmUsZ2V0U3R5bGU6amUsZ2V0Q3NzVmFyOlZlLHByb3BOYW1lOlllfSksTG4uZGF0YT0iX191aWtpdF9fIixMbi5wcmVmaXg9InVrLSIsTG4ub3B0aW9ucz17fSxXbj0oRm49TG4pLmRhdGEsRm4udXNlPWZ1bmN0aW9uKHQpe2lmKCF0Lmluc3RhbGxlZClyZXR1cm4gdC5jYWxsKG51bGwsdGhpcyksdC5pbnN0YWxsZWQ9ITAsdGhpc30sRm4ubWl4aW49ZnVuY3Rpb24odCxlKXsoZT0oTyhlKT9Gbi5jb21wb25lbnQoZSk6ZSl8fHRoaXMpLm9wdGlvbnM9TW4oZS5vcHRpb25zLHQpfSxGbi5leHRlbmQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt0aGlzLl9pbml0KHQpfXJldHVybiB0PXR8fHt9LCgoZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWUpLm9wdGlvbnM9TW4odGhpcy5vcHRpb25zLHQpLGUuc3VwZXI9dGhpcyxlLmV4dGVuZD10aGlzLmV4dGVuZCxlfSxGbi51cGRhdGU9ZnVuY3Rpb24odCxlKXsoZnVuY3Rpb24gdChlLG4pe2UmJmUhPT1kb2N1bWVudC5ib2R5JiZlLnBhcmVudE5vZGUmJih0KGUucGFyZW50Tm9kZSxuKSxuKGUucGFyZW50Tm9kZSkpfSkodD10P2oodCk6ZG9jdW1lbnQuYm9keSxmdW5jdGlvbih0KXtyZXR1cm4gS24odFtXbl0sZSl9KSxTZSh0LGZ1bmN0aW9uKHQpe3JldHVybiBLbih0W1duXSxlKX0pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRm4sImNvbnRhaW5lciIse2dldDpmdW5jdGlvbigpe3JldHVybiBqbnx8ZG9jdW1lbnQuYm9keX0sc2V0OmZ1bmN0aW9uKHQpe2puPVRlKHQpfX0pLChWbj1MbikucHJvdG90eXBlLl9jYWxsSG9vaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy4kb3B0aW9uc1t0XTtuJiZuLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuY2FsbChlKX0pfSxWbi5wcm90b3R5cGUuX2NhbGxDb25uZWN0ZWQ9ZnVuY3Rpb24oKXt0aGlzLl9jb25uZWN0ZWR8fCh0aGlzLl9kYXRhPXt9LHRoaXMuX2NvbXB1dGVkcz17fSx0aGlzLl9pbml0UHJvcHMoKSx0aGlzLl9jYWxsSG9vaygiYmVmb3JlQ29ubmVjdCIpLHRoaXMuX2Nvbm5lY3RlZD0hMCx0aGlzLl9pbml0RXZlbnRzKCksdGhpcy5faW5pdE9ic2VydmVyKCksdGhpcy5fY2FsbEhvb2soImNvbm5lY3RlZCIpLHRoaXMuX2NhbGxVcGRhdGUoKSl9LFZuLnByb3RvdHlwZS5fY2FsbERpc2Nvbm5lY3RlZD1mdW5jdGlvbigpe3RoaXMuX2Nvbm5lY3RlZCYmKHRoaXMuX2NhbGxIb29rKCJiZWZvcmVEaXNjb25uZWN0IiksdGhpcy5fb2JzZXJ2ZXImJih0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5fb2JzZXJ2ZXI9bnVsbCksdGhpcy5fdW5iaW5kRXZlbnRzKCksdGhpcy5fY2FsbEhvb2soImRpc2Nvbm5lY3RlZCIpLHRoaXMuX2Nvbm5lY3RlZD0hMSl9LFZuLnByb3RvdHlwZS5fY2FsbFVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgbz10aGlzO3ZvaWQgMD09PXQmJih0PSJ1cGRhdGUiKTt2YXIgcz10LnR5cGV8fHQ7YihbInVwZGF0ZSIsInJlc2l6ZSJdLHMpJiZ0aGlzLl9jYWxsV2F0Y2hlcygpO3ZhciBlPXRoaXMuJG9wdGlvbnMudXBkYXRlLG49dGhpcy5fZnJhbWVzLGE9bi5yZWFkcyxoPW4ud3JpdGVzO2UmJmUuZm9yRWFjaChmdW5jdGlvbih0LGUpe3ZhciBuPXQucmVhZCxpPXQud3JpdGUscj10LmV2ZW50czsidXBkYXRlIiE9PXMmJiFiKHIscyl8fChuJiYhYihrbi5yZWFkcyxhW2VdKSYmKGFbZV09a24ucmVhZChmdW5jdGlvbigpe3ZhciB0PW8uX2Nvbm5lY3RlZCYmbi5jYWxsKG8sby5fZGF0YSxzKTshMT09PXQmJmk/a24uY2xlYXIoaFtlXSk6Uyh0KSYmVShvLl9kYXRhLHQpfSkpLGkmJiFiKGtuLndyaXRlcyxoW2VdKSYmKGhbZV09a24ud3JpdGUoZnVuY3Rpb24oKXtyZXR1cm4gby5fY29ubmVjdGVkJiZpLmNhbGwobyxvLl9kYXRhLHMpfSkpKX0pfSxZbj0wLChSbj1MbikucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQpeyh0PXR8fHt9KS5kYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5kYXRhLGk9KHQuZWwsZS5hcmdzKSxyPWUucHJvcHM7aWYodm9pZCAwPT09ciYmKHI9e30pLG49ayhuKT9CKGkpP3ZvaWQgMDpuLnNsaWNlKDAsaS5sZW5ndGgpLnJlZHVjZShmdW5jdGlvbih0LGUsbil7cmV0dXJuIFMoZSk/VSh0LGUpOnRbaVtuXV09ZSx0fSx7fSk6bilmb3IodmFyIG8gaW4gbilQKG5bb10pP2RlbGV0ZSBuW29dOm5bb109cltvXT90aShyW29dLG5bb10pOm5bb107cmV0dXJuIG59KHQsdGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zKSx0aGlzLiRvcHRpb25zPU1uKHRoaXMuY29uc3RydWN0b3Iub3B0aW9ucyx0LHRoaXMpLHRoaXMuJGVsPW51bGwsdGhpcy4kcHJvcHM9e30sdGhpcy5fZnJhbWVzPXtyZWFkczp7fSx3cml0ZXM6e319LHRoaXMuX2V2ZW50cz1bXSx0aGlzLl91aWQ9WW4rKyx0aGlzLl9pbml0RGF0YSgpLHRoaXMuX2luaXRNZXRob2RzKCksdGhpcy5faW5pdENvbXB1dGVkcygpLHRoaXMuX2NhbGxIb29rKCJjcmVhdGVkIiksdC5lbCYmdGhpcy4kbW91bnQodC5lbCl9LFJuLnByb3RvdHlwZS5faW5pdERhdGE9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRvcHRpb25zLmRhdGE7Zm9yKHZhciBlIGluIHZvaWQgMD09PXQmJih0PXt9KSx0KXRoaXMuJHByb3BzW2VdPXRoaXNbZV09dFtlXX0sUm4ucHJvdG90eXBlLl9pbml0TWV0aG9kcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuJG9wdGlvbnMubWV0aG9kcztpZih0KWZvcih2YXIgZSBpbiB0KXRoaXNbZV09dFtlXS5iaW5kKHRoaXMpfSxSbi5wcm90b3R5cGUuX2luaXRDb21wdXRlZHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRvcHRpb25zLmNvbXB1dGVkO2lmKHRoaXMuX2NvbXB1dGVkcz17fSx0KWZvcih2YXIgZSBpbiB0KUpuKHRoaXMsZSx0W2VdKX0sUm4ucHJvdG90eXBlLl9jYWxsV2F0Y2hlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuJG9wdGlvbnMuY29tcHV0ZWQsZT10aGlzLl9jb21wdXRlZHM7Zm9yKHZhciBuIGluIGUpe3ZhciBpPWVbbl07ZGVsZXRlIGVbbl0sdFtuXS53YXRjaCYmIVkoaSx0aGlzW25dKSYmdFtuXS53YXRjaC5jYWxsKHRoaXMsdGhpc1tuXSxpKX19LFJuLnByb3RvdHlwZS5faW5pdFByb3BzPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlIGluIHQ9dHx8R24odGhpcy4kb3B0aW9ucyx0aGlzLiRuYW1lKSlQKHRbZV0pfHwodGhpcy4kcHJvcHNbZV09dFtlXSk7dmFyIG49W3RoaXMuJG9wdGlvbnMuY29tcHV0ZWQsdGhpcy4kb3B0aW9ucy5tZXRob2RzXTtmb3IoZSBpbiB0aGlzLiRwcm9wcyllIGluIHQmJlFuKG4sZSkmJih0aGlzW2VdPXRoaXMuJHByb3BzW2VdKX0sUm4ucHJvdG90eXBlLl9pbml0RXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcyx0PXRoaXMuJG9wdGlvbnMuZXZlbnRzO3QmJnQuZm9yRWFjaChmdW5jdGlvbih0KXtpZihjKHQsImhhbmRsZXIiKSlabihuLHQpO2Vsc2UgZm9yKHZhciBlIGluIHQpWm4obix0W2VdLGUpfSl9LFJuLnByb3RvdHlwZS5fdW5iaW5kRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLHRoaXMuX2V2ZW50cz1bXX0sUm4ucHJvdG90eXBlLl9pbml0T2JzZXJ2ZXI9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLHQ9dGhpcy4kb3B0aW9ucyxpPXQuYXR0cnMsZT10LnByb3BzLHI9dC5lbDtpZighdGhpcy5fb2JzZXJ2ZXImJmUmJiExIT09aSl7aT1rKGkpP2k6T2JqZWN0LmtleXMoZSksdGhpcy5fb2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt2YXIgZT1HbihuLiRvcHRpb25zLG4uJG5hbWUpO2kuc29tZShmdW5jdGlvbih0KXtyZXR1cm4hUChlW3RdKSYmZVt0XSE9PW4uJHByb3BzW3RdfSkmJm4uJHJlc2V0KCl9KTt2YXIgbz1pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZCh0KX0pLmNvbmNhdCh0aGlzLiRuYW1lKTt0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHIse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOm8uY29uY2F0KG8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJkYXRhLSIrdH0pKX0pfX0sVW49KHFuPUxuKS5kYXRhLFhuPXt9LHFuLmNvbXBvbmVudD1mdW5jdGlvbihzLHQpe2lmKCF0KXJldHVybiBTKFhuW3NdKSYmKFhuW3NdPXFuLmV4dGVuZChYbltzXSkpLFhuW3NdO3FuW3NdPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsaT1BcnJheShlKTtlLS07KWlbZV09YXJndW1lbnRzW2VdO3ZhciByPXFuLmNvbXBvbmVudChzKTtyZXR1cm4gUyh0KT9uZXcgcih7ZGF0YTp0fSk6ci5vcHRpb25zLmZ1bmN0aW9uYWw/bmV3IHIoe2RhdGE6W10uY29uY2F0KGkpfSk6dCYmdC5ub2RlVHlwZT9vKHQpOkVlKHQpLm1hcChvKVswXTtmdW5jdGlvbiBvKHQpe3ZhciBlPXFuLmdldENvbXBvbmVudCh0LHMpO2lmKGUpe2lmKCFuKXJldHVybiBlO2UuJGRlc3Ryb3koKX1yZXR1cm4gbmV3IHIoe2VsOnQsZGF0YTpufSl9fTt2YXIgZT1TKHQpP1Uoe30sdCk6dC5vcHRpb25zO2lmKGUubmFtZT1zLGUuaW5zdGFsbCYmZS5pbnN0YWxsKHFuLGUscykscW4uX2luaXRpYWxpemVkJiYhZS5mdW5jdGlvbmFsKXt2YXIgbj1kKHMpO2tuLnJlYWQoZnVuY3Rpb24oKXtyZXR1cm4gcW5bc10oIlt1ay0iK24rIl0sW2RhdGEtdWstIituKyJdIil9KX1yZXR1cm4gWG5bc109Uyh0KT9lOnR9LHFuLmdldENvbXBvbmVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnRbVW5dfHx7fX0scW4uZ2V0Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHFuLmdldENvbXBvbmVudHModClbZV19LHFuLmNvbm5lY3Q9ZnVuY3Rpb24odCl7aWYodFtVbl0pZm9yKHZhciBlIGluIHRbVW5dKXRbVW5dW2VdLl9jYWxsQ29ubmVjdGVkKCk7Zm9yKHZhciBuPTA7bjx0LmF0dHJpYnV0ZXMubGVuZ3RoO24rKyl7dmFyIGk9SG4odC5hdHRyaWJ1dGVzW25dLm5hbWUpO2kmJmkgaW4gWG4mJnFuW2ldKHQpfX0scW4uZGlzY29ubmVjdD1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdFtVbl0pdFtVbl1bZV0uX2NhbGxEaXNjb25uZWN0ZWQoKX0sZnVuY3Rpb24oaSl7dmFyIHI9aS5kYXRhO2kucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLiRvcHRpb25zLm5hbWU7dFtyXXx8KHRbcl09e30pLHRbcl1bZV18fCgodFtyXVtlXT10aGlzKS4kZWw9dGhpcy4kb3B0aW9ucy5lbD10aGlzLiRvcHRpb25zLmVsfHx0LFd0KHQsZG9jdW1lbnQpJiZ0aGlzLl9jYWxsQ29ubmVjdGVkKCkpfSxpLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt0aGlzLl9jYWxsVXBkYXRlKHQpfSxpLnByb3RvdHlwZS4kcmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsRGlzY29ubmVjdGVkKCksdGhpcy5fY2FsbENvbm5lY3RlZCgpfSxpLnByb3RvdHlwZS4kZGVzdHJveT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy4kb3B0aW9ucyxuPWUuZWwsaT1lLm5hbWU7biYmdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpLHRoaXMuX2NhbGxIb29rKCJkZXN0cm95IiksbiYmbltyXSYmKGRlbGV0ZSBuW3JdW2ldLEIobltyXSl8fGRlbGV0ZSBuW3JdLHQmJndlKHRoaXMuJGVsKSl9LGkucHJvdG90eXBlLiRjcmVhdGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpW3RdKGUsbil9LGkucHJvdG90eXBlLiR1cGRhdGU9aS51cGRhdGUsaS5wcm90b3R5cGUuJGdldENvbXBvbmVudD1pLmdldENvbXBvbmVudDt2YXIgZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLnByb3RvdHlwZSx7JGNvbnRhaW5lcjpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksImNvbnRhaW5lciIpLCRuYW1lOntnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRvcHRpb25zLm5hbWU7cmV0dXJuIGVbdF18fChlW3RdPWkucHJlZml4K2QodCkpLGVbdF19fX0pfShMbik7dmFyIGVpPXtjb25uZWN0ZWQ6ZnVuY3Rpb24oKXtPZSh0aGlzLiRlbCx0aGlzLiRuYW1lKXx8QWUodGhpcy4kZWwsdGhpcy4kbmFtZSl9fSxuaT17cHJvcHM6e2NsczpCb29sZWFuLGFuaW1hdGlvbjoibGlzdCIsZHVyYXRpb246TnVtYmVyLG9yaWdpbjpTdHJpbmcsdHJhbnNpdGlvbjpTdHJpbmcscXVldWVkOkJvb2xlYW59LGRhdGE6e2NsczohMSxhbmltYXRpb246WyExXSxkdXJhdGlvbjoyMDAsb3JpZ2luOiExLHRyYW5zaXRpb246ImxpbmVhciIscXVldWVkOiExLGluaXRQcm9wczp7b3ZlcmZsb3c6IiIsaGVpZ2h0OiIiLHBhZGRpbmdUb3A6IiIscGFkZGluZ0JvdHRvbToiIixtYXJnaW5Ub3A6IiIsbWFyZ2luQm90dG9tOiIifSxoaWRlUHJvcHM6e292ZXJmbG93OiJoaWRkZW4iLGhlaWdodDowLHBhZGRpbmdUb3A6MCxwYWRkaW5nQm90dG9tOjAsbWFyZ2luVG9wOjAsbWFyZ2luQm90dG9tOjB9fSxjb21wdXRlZDp7aGFzQW5pbWF0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiEhdC5hbmltYXRpb25bMF19LGhhc1RyYW5zaXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dC5hbmltYXRpb247cmV0dXJuIHRoaXMuaGFzQW5pbWF0aW9uJiYhMD09PWVbMF19fSxtZXRob2RzOnt0b2dnbGVFbGVtZW50OmZ1bmN0aW9uKGMsdSxsKXt2YXIgZD10aGlzO3JldHVybiBuZXcgbmUoZnVuY3Rpb24odCl7Yz1XKGMpO2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5lLmFsbCh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZC5fdG9nZ2xlRWxlbWVudCh0LHUsbCl9KSl9dmFyIG4saT1jLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gZC5pc1RvZ2dsZWQodCl9KSxyPWMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiFiKGksdCl9KTtpZihkLnF1ZXVlZCYmUChsKSYmUCh1KSYmZC5oYXNBbmltYXRpb24mJiEoYy5sZW5ndGg8Mikpe3ZhciBvPWRvY3VtZW50LmJvZHkscz1vLnNjcm9sbFRvcCxhPWlbMF0saD1RZS5pblByb2dyZXNzKGEpJiZPZShhLCJ1ay1hbmltYXRpb24tbGVhdmUiKXx8WGUuaW5Qcm9ncmVzcyhhKSYmIjBweCI9PT1hLnN0eWxlLmhlaWdodDtuPWUoaSksaHx8KG49bi50aGVuKGZ1bmN0aW9uKCl7dmFyIHQ9ZShyKTtyZXR1cm4gby5zY3JvbGxUb3A9cyx0fSkpfWVsc2Ugbj1lKHIuY29uY2F0KGkpKTtuLnRoZW4odCxRKX0pfSx0b2dnbGVOb3c6ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzO3JldHVybiBuZXcgbmUoZnVuY3Rpb24odCl7cmV0dXJuIG5lLmFsbChXKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gaS5fdG9nZ2xlRWxlbWVudCh0LG4sITEpfSkpLnRoZW4odCxRKX0pfSxpc1RvZ2dsZWQ6ZnVuY3Rpb24odCl7dmFyIGU9Vyh0fHx0aGlzLiRlbCk7cmV0dXJuIHRoaXMuY2xzP09lKGUsdGhpcy5jbHMuc3BsaXQoIiAiKVswXSk6IXJ0KGUsImhpZGRlbiIpfSx1cGRhdGVBcmlhOmZ1bmN0aW9uKHQpeyExPT09dGhpcy5jbHMmJml0KHQsImFyaWEtaGlkZGVuIiwhdGhpcy5pc1RvZ2dsZWQodCkpfSxfdG9nZ2xlRWxlbWVudDpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcztpZihlPU0oZSk/ZTpRZS5pblByb2dyZXNzKHQpP09lKHQsInVrLWFuaW1hdGlvbi1sZWF2ZSIpOlhlLmluUHJvZ3Jlc3ModCk/IjBweCI9PT10LnN0eWxlLmhlaWdodDohdGhpcy5pc1RvZ2dsZWQodCksIXF0KHQsImJlZm9yZSIrKGU/InNob3ciOiJoaWRlIiksW3RoaXNdKSlyZXR1cm4gbmUucmVqZWN0KCk7dmFyIHI9KCQobik/bjohMSE9PW4mJnRoaXMuaGFzQW5pbWF0aW9uP3RoaXMuaGFzVHJhbnNpdGlvbj9mdW5jdGlvbih0KXt2YXIgcz10LmlzVG9nZ2xlZCxhPXQuZHVyYXRpb24saD10LmluaXRQcm9wcyxjPXQuaGlkZVByb3BzLHU9dC50cmFuc2l0aW9uLGw9dC5fdG9nZ2xlO3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPVhlLmluUHJvZ3Jlc3ModCksaT10Lmhhc0NoaWxkTm9kZXM/RihMZSh0LmZpcnN0RWxlbWVudENoaWxkLCJtYXJnaW5Ub3AiKSkrRihMZSh0Lmxhc3RFbGVtZW50Q2hpbGQsIm1hcmdpbkJvdHRvbSIpKTowLHI9SHQodCk/c24odCkrKG4/MDppKTowO1hlLmNhbmNlbCh0KSxzKHQpfHxsKHQsITApLHNuKHQsIiIpLGtuLmZsdXNoKCk7dmFyIG89c24odCkrKG4/MDppKTtyZXR1cm4gc24odCxyKSwoZT9YZS5zdGFydCh0LFUoe30saCx7b3ZlcmZsb3c6ImhpZGRlbiIsaGVpZ2h0Om99KSxNYXRoLnJvdW5kKGEqKDEtci9vKSksdSk6WGUuc3RhcnQodCxjLE1hdGgucm91bmQoYSooci9vKSksdSkudGhlbihmdW5jdGlvbigpe3JldHVybiBsKHQsITEpfSkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gTGUodCxoKX0pfX0odGhpcyk6ZnVuY3Rpb24odCl7dmFyIG49dC5hbmltYXRpb24saT10LmR1cmF0aW9uLHI9dC5vcmlnaW4sbz10Ll90b2dnbGU7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFFlLmNhbmNlbCh0KSxlPyhvKHQsITApLFFlLmluKHQsblswXSxpLHIpKTpRZS5vdXQodCxuWzFdfHxuWzBdLGkscikudGhlbihmdW5jdGlvbigpe3JldHVybiBvKHQsITEpfSl9fSh0aGlzKTp0aGlzLl90b2dnbGUpKHQsZSk7cXQodCxlPyJzaG93IjoiaGlkZSIsW3RoaXNdKTtmdW5jdGlvbiBvKCl7cXQodCxlPyJzaG93biI6ImhpZGRlbiIsW2ldKSxpLiR1cGRhdGUodCl9cmV0dXJuIHI/ci50aGVuKG8pOm5lLnJlc29sdmUobygpKX0sX3RvZ2dsZTpmdW5jdGlvbih0LGUpe3ZhciBuO3QmJihlPUJvb2xlYW4oZSksdGhpcy5jbHM/KG49Yih0aGlzLmNscywiICIpfHxlIT09T2UodCx0aGlzLmNscykpJiZEZSh0LHRoaXMuY2xzLGIodGhpcy5jbHMsIiAiKT92b2lkIDA6ZSk6KG49ZT09PXJ0KHQsImhpZGRlbiIpKSYmaXQodCwiaGlkZGVuIixlP251bGw6IiIpLEVlKCJbYXV0b2ZvY3VzXSIsdCkuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gSHQodCk/dC5mb2N1cygpfHwhMDp0LmJsdXIoKX0pLHRoaXMudXBkYXRlQXJpYSh0KSxuJiZ0aGlzLiR1cGRhdGUodCkpfX19O3ZhciBpaT17bWl4aW5zOltlaSxuaV0scHJvcHM6e3RhcmdldHM6U3RyaW5nLGFjdGl2ZTpudWxsLGNvbGxhcHNpYmxlOkJvb2xlYW4sbXVsdGlwbGU6Qm9vbGVhbix0b2dnbGU6U3RyaW5nLGNvbnRlbnQ6U3RyaW5nLHRyYW5zaXRpb246U3RyaW5nfSxkYXRhOnt0YXJnZXRzOiI+ICoiLGFjdGl2ZTohMSxhbmltYXRpb246WyEwXSxjb2xsYXBzaWJsZTohMCxtdWx0aXBsZTohMSxjbHNPcGVuOiJ1ay1vcGVuIix0b2dnbGU6Ij4gLnVrLWFjY29yZGlvbi10aXRsZSIsY29udGVudDoiPiAudWstYWNjb3JkaW9uLWNvbnRlbnQiLHRyYW5zaXRpb246ImVhc2UifSxjb21wdXRlZDp7aXRlbXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gRWUodC50YXJnZXRzLGUpfX0sZXZlbnRzOlt7bmFtZToiY2xpY2siLGRlbGVnYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFyZ2V0cysiICIrdGhpcy4kcHJvcHMudG9nZ2xlfSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLnRvZ2dsZSh1ZShFZSh0aGlzLnRhcmdldHMrIiAiK3RoaXMuJHByb3BzLnRvZ2dsZSx0aGlzLiRlbCksdC5jdXJyZW50KSl9fV0sY29ubmVjdGVkOmZ1bmN0aW9uKCl7aWYoITEhPT10aGlzLmFjdGl2ZSl7dmFyIHQ9dGhpcy5pdGVtc1tOdW1iZXIodGhpcy5hY3RpdmUpXTt0JiYhT2UodCx0aGlzLmNsc09wZW4pJiZ0aGlzLnRvZ2dsZSh0LCExKX19LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl90b2dnbGUoVGUoZS5jb250ZW50LHQpLE9lKHQsZS5jbHNPcGVuKSl9KTt2YXIgdD0hdGhpcy5jb2xsYXBzaWJsZSYmIU9lKHRoaXMuaXRlbXMsdGhpcy5jbHNPcGVuKSYmdGhpcy5pdGVtc1swXTt0JiZ0aGlzLnRvZ2dsZSh0LCExKX0sbWV0aG9kczp7dG9nZ2xlOmZ1bmN0aW9uKHIsbyl7dmFyIHM9dGhpcyx0PWxlKHIsdGhpcy5pdGVtcyksYT1qdCh0aGlzLml0ZW1zLCIuIit0aGlzLmNsc09wZW4pOyhyPXRoaXMuaXRlbXNbdF0pJiZbcl0uY29uY2F0KCF0aGlzLm11bHRpcGxlJiYhYihhLHIpJiZhfHxbXSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10PT09cixuPWUmJiFPZSh0LHMuY2xzT3Blbik7aWYobnx8IWV8fHMuY29sbGFwc2libGV8fCEoYS5sZW5ndGg8Mikpe0RlKHQscy5jbHNPcGVuLG4pO3ZhciBpPXQuX3dyYXBwZXI/dC5fd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZDpUZShzLmNvbnRlbnQsdCk7dC5fd3JhcHBlcnx8KHQuX3dyYXBwZXI9YmUoaSwiPGRpdj4iKSxpdCh0Ll93cmFwcGVyLCJoaWRkZW4iLG4/IiI6bnVsbCkpLHMuX3RvZ2dsZShpLCEwKSxzLnRvZ2dsZUVsZW1lbnQodC5fd3JhcHBlcixuLG8pLnRoZW4oZnVuY3Rpb24oKXtPZSh0LHMuY2xzT3Blbik9PT1uJiYobnx8cy5fdG9nZ2xlKGksITEpLHQuX3dyYXBwZXI9bnVsbCx4ZShpKSl9KX19KX19fSxyaT17bWl4aW5zOltlaSxuaV0sYXJnczoiYW5pbWF0aW9uIixwcm9wczp7Y2xvc2U6U3RyaW5nfSxkYXRhOnthbmltYXRpb246WyEwXSxzZWxDbG9zZToiLnVrLWFsZXJ0LWNsb3NlIixkdXJhdGlvbjoxNTAsaGlkZVByb3BzOlUoe29wYWNpdHk6MH0sbmkuZGF0YS5oaWRlUHJvcHMpfSxldmVudHM6W3tuYW1lOiJjbGljayIsZGVsZWdhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxDbG9zZX0saGFuZGxlcjpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZSgpfX1dLG1ldGhvZHM6e2Nsb3NlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC4kZGVzdHJveSghMCl9KX19fTtmdW5jdGlvbiBvaShyKXtjZShmdW5jdGlvbigpe3ZhciBuO3IudXBkYXRlKCksVnQod2luZG93LCJsb2FkIHJlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gci51cGRhdGUobnVsbCwicmVzaXplIil9KSxWdChkb2N1bWVudCwibG9hZGVkbWV0YWRhdGEgbG9hZCIsZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQ7cmV0dXJuIHIudXBkYXRlKGUsInJlc2l6ZSIpfSwhMCksVnQod2luZG93LCJzY3JvbGwiLGZ1bmN0aW9uKHQpe2lmKCFuKXtuPSEwLGtuLndyaXRlKGZ1bmN0aW9uKCl7cmV0dXJuIG49ITF9KTt2YXIgZT10LnRhcmdldDtyLnVwZGF0ZSgxIT09ZS5ub2RlVHlwZT9kb2N1bWVudC5ib2R5OmUsdC50eXBlKX19LHtwYXNzaXZlOiEwLGNhcHR1cmU6ITB9KTt2YXIgZSxpPTA7VnQoZG9jdW1lbnQsImFuaW1hdGlvbnN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldDsoTGUoZSwiYW5pbWF0aW9uTmFtZSIpfHwiIikubWF0Y2goL151ay0uKihsZWZ0fHJpZ2h0KS8pJiYoaSsrLExlKGRvY3VtZW50LmJvZHksIm92ZXJmbG93WCIsImhpZGRlbiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXstLWl8fExlKGRvY3VtZW50LmJvZHksIm92ZXJmbG93WCIsIiIpfSxSKExlKGUsImFuaW1hdGlvbkR1cmF0aW9uIikpKzEwMCkpfSwhMCksVnQoZG9jdW1lbnQsZHQsZnVuY3Rpb24odCl7aWYoZSYmZSgpLFF0KHQpKXt2YXIgcj10ZSh0KSxvPSJ0YWdOYW1lImluIHQudGFyZ2V0P3QudGFyZ2V0OnQudGFyZ2V0LnBhcmVudE5vZGU7ZT1ZdChkb2N1bWVudCxwdCsiICIrdnQsZnVuY3Rpb24odCl7dmFyIGU9dGUodCksbj1lLngsaT1lLnk7KG8mJm4mJjEwMDxNYXRoLmFicyhyLngtbil8fGkmJjEwMDxNYXRoLmFicyhyLnktaSkpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cXQobywic3dpcGUiKSxxdChvLCJzd2lwZSIrZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIE1hdGguYWJzKHQtbik+PU1hdGguYWJzKGUtaSk/MDx0LW4/IkxlZnQiOiJSaWdodCI6MDxlLWk/IlVwIjoiRG93biJ9KHIueCxyLnksbixpKSl9KX0pLCJ0b3VjaHN0YXJ0Ij09PWR0JiYoTGUoZG9jdW1lbnQuYm9keSwiY3Vyc29yIiwicG9pbnRlciIpLFl0KGRvY3VtZW50LHB0KyIgIit2dCxmdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIExlKGRvY3VtZW50LmJvZHksImN1cnNvciIsIiIpfSw1MCl9KSl9fSx7cGFzc2l2ZTohMH0pfSl9dmFyIHNpLGFpPXthcmdzOiJhdXRvcGxheSIscHJvcHM6e2F1dG9tdXRlOkJvb2xlYW4sYXV0b3BsYXk6Qm9vbGVhbn0sZGF0YTp7YXV0b211dGU6ITEsYXV0b3BsYXk6ITB9LGNvbXB1dGVkOntpblZpZXc6ZnVuY3Rpb24odCl7cmV0dXJuImludmlldyI9PT10LmF1dG9wbGF5fX0sY29ubmVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5pblZpZXcmJiFydCh0aGlzLiRlbCwicHJlbG9hZCIpJiYodGhpcy4kZWwucHJlbG9hZD0ibm9uZSIpLHRoaXMucGxheWVyPW5ldyBEbih0aGlzLiRlbCksdGhpcy5hdXRvbXV0ZSYmdGhpcy5wbGF5ZXIubXV0ZSgpfSx1cGRhdGU6e3JlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucGxheWVyJiZ7dmlzaWJsZTpIdCh0aGlzLiRlbCkmJiJoaWRkZW4iIT09TGUodGhpcy4kZWwsInZpc2liaWxpdHkiKSxpblZpZXc6dGhpcy5pblZpZXcmJnBuKHRoaXMuJGVsKX19LHdyaXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudmlzaWJsZSxuPXQuaW5WaWV3OyFlfHx0aGlzLmluVmlldyYmIW4/dGhpcy5wbGF5ZXIucGF1c2UoKTooITA9PT10aGlzLmF1dG9wbGF5fHx0aGlzLmluVmlldyYmbikmJnRoaXMucGxheWVyLnBsYXkoKX0sZXZlbnRzOlsicmVzaXplIiwic2Nyb2xsIl19fSxoaT17bWl4aW5zOltlaSxhaV0scHJvcHM6e3dpZHRoOk51bWJlcixoZWlnaHQ6TnVtYmVyfSxkYXRhOnthdXRvbXV0ZTohMH0sdXBkYXRlOntyZWFkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kZWwsZT10LnBhcmVudE5vZGUsbj1lLm9mZnNldEhlaWdodCxpPWUub2Zmc2V0V2lkdGgscj1udC5jb3Zlcih7d2lkdGg6dGhpcy53aWR0aHx8dC5uYXR1cmFsV2lkdGh8fHQudmlkZW9XaWR0aHx8dC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHR8fHQubmF0dXJhbEhlaWdodHx8dC52aWRlb0hlaWdodHx8dC5jbGllbnRIZWlnaHR9LHt3aWR0aDppKyhpJTI/MTowKSxoZWlnaHQ6bisobiUyPzE6MCl9KTtyZXR1cm4hKCFyLndpZHRofHwhci5oZWlnaHQpJiZyfSx3cml0ZTpmdW5jdGlvbih0KXt2YXIgZT10LmhlaWdodCxuPXQud2lkdGg7TGUodGhpcy4kZWwse2hlaWdodDplLHdpZHRoOm59KX0sZXZlbnRzOlsicmVzaXplIl19fSxjaT17cHJvcHM6e3BvczpTdHJpbmcsb2Zmc2V0Om51bGwsZmxpcDpCb29sZWFuLGNsc1BvczpTdHJpbmd9LGRhdGE6e3BvczoiYm90dG9tLSIrKGh0PyJyaWdodCI6ImxlZnQiKSxmbGlwOiEwLG9mZnNldDohMSxjbHNQb3M6IiJ9LGNvbXB1dGVkOntwb3M6ZnVuY3Rpb24odCl7dmFyIGU9dC5wb3M7cmV0dXJuKGUrKGIoZSwiLSIpPyIiOiItY2VudGVyIikpLnNwbGl0KCItIil9LGRpcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc1swXX0sYWxpZ246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NbMV19fSxtZXRob2RzOntwb3NpdGlvbkF0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtOZSh0LHRoaXMuY2xzUG9zKyItKHRvcHxib3R0b218bGVmdHxyaWdodCkoLVthLXpdKyk/IiksTGUodCx7dG9wOiIiLGxlZnQ6IiJ9KTt2YXIgcj10aGlzLm9mZnNldCxvPXRoaXMuZ2V0QXhpcygpO3oocil8fChyPShpPVRlKHIpKT9ubihpKVsieCI9PT1vPyJsZWZ0IjoidG9wIl0tbm4oZSlbIngiPT09bz8icmlnaHQiOiJib3R0b20iXTowKTt2YXIgcz1lbih0LGUsIngiPT09bz9mbih0aGlzLmRpcikrIiAiK3RoaXMuYWxpZ246dGhpcy5hbGlnbisiICIrZm4odGhpcy5kaXIpLCJ4Ij09PW8/dGhpcy5kaXIrIiAiK3RoaXMuYWxpZ246dGhpcy5hbGlnbisiICIrdGhpcy5kaXIsIngiPT09bz8iIisoImxlZnQiPT09dGhpcy5kaXI/LXI6cik6IiAiKygidG9wIj09PXRoaXMuZGlyPy1yOnIpLG51bGwsdGhpcy5mbGlwLG4pLnRhcmdldCxhPXMueCxoPXMueTt0aGlzLmRpcj0ieCI9PT1vP2E6aCx0aGlzLmFsaWduPSJ4Ij09PW8/aDphLERlKHQsdGhpcy5jbHNQb3MrIi0iK3RoaXMuZGlyKyItIit0aGlzLmFsaWduLCExPT09dGhpcy5vZmZzZXQpfSxnZXRBeGlzOmZ1bmN0aW9uKCl7cmV0dXJuInRvcCI9PT10aGlzLmRpcnx8ImJvdHRvbSI9PT10aGlzLmRpcj8ieSI6IngifX19LHVpPXttaXhpbnM6W2NpLG5pXSxhcmdzOiJwb3MiLHByb3BzOnttb2RlOiJsaXN0Iix0b2dnbGU6Qm9vbGVhbixib3VuZGFyeTpCb29sZWFuLGJvdW5kYXJ5QWxpZ246Qm9vbGVhbixkZWxheVNob3c6TnVtYmVyLGRlbGF5SGlkZTpOdW1iZXIsY2xzRHJvcDpTdHJpbmd9LGRhdGE6e21vZGU6WyJjbGljayIsImhvdmVyIl0sdG9nZ2xlOiItICoiLGJvdW5kYXJ5OndpbmRvdyxib3VuZGFyeUFsaWduOiExLGRlbGF5U2hvdzowLGRlbGF5SGlkZTo4MDAsY2xzRHJvcDohMSxob3ZlcklkbGU6MjAwLGFuaW1hdGlvbjpbInVrLWFuaW1hdGlvbi1mYWRlIl0sY2xzOiJ1ay1vcGVuIn0sY29tcHV0ZWQ6e2JvdW5kYXJ5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHd0KHQuYm91bmRhcnksZSl9LGNsc0Ryb3A6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xzRHJvcHx8InVrLSIrdGhpcy4kb3B0aW9ucy5uYW1lfSxjbHNQb3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbHNEcm9wfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMudHJhY2tlcj1uZXcgRW59LGNvbm5lY3RlZDpmdW5jdGlvbigpe0FlKHRoaXMuJGVsLHRoaXMuY2xzRHJvcCk7dmFyIHQ9dGhpcy4kcHJvcHMudG9nZ2xlO3RoaXMudG9nZ2xlPXQmJnRoaXMuJGNyZWF0ZSgidG9nZ2xlIix3dCh0LHRoaXMuJGVsKSx7dGFyZ2V0OnRoaXMuJGVsLG1vZGU6dGhpcy5tb2RlfSksdGhpcy50b2dnbGV8fHF0KHRoaXMuJGVsLCJ1cGRhdGVhcmlhIil9LGV2ZW50czpbe25hbWU6ImNsaWNrIixkZWxlZ2F0ZTpmdW5jdGlvbigpe3JldHVybiIuIit0aGlzLmNsc0Ryb3ArIi1jbG9zZSJ9LGhhbmRsZXI6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGlkZSghMSl9fSx7bmFtZToiY2xpY2siLGRlbGVnYXRlOmZ1bmN0aW9uKCl7cmV0dXJuJ2FbaHJlZl49IiMiXSd9LGhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9dC5kZWZhdWx0UHJldmVudGVkLG49dC5jdXJyZW50Lmhhc2g7ZXx8IW58fFd0KG4sdGhpcy4kZWwpfHx0aGlzLmhpZGUoITEpfX0se25hbWU6ImJlZm9yZXNjcm9sbCIsaGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuaGlkZSghMSl9fSx7bmFtZToidG9nZ2xlIixzZWxmOiEwLGhhbmRsZXI6ZnVuY3Rpb24odCxlKXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5pc1RvZ2dsZWQoKT90aGlzLmhpZGUoITEpOnRoaXMuc2hvdyhlLCExKX19LHtuYW1lOm10LGZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBiKHRoaXMubW9kZSwiaG92ZXIiKX0saGFuZGxlcjpmdW5jdGlvbih0KXtRdCh0KXx8KHNpJiZzaSE9PXRoaXMmJnNpLnRvZ2dsZSYmYihzaS50b2dnbGUubW9kZSwiaG92ZXIiKSYmIVd0KHQudGFyZ2V0LHNpLnRvZ2dsZS4kZWwpJiYhZXQoe3g6dC5wYWdlWCx5OnQucGFnZVl9LG5uKHNpLiRlbCkpJiZzaS5oaWRlKCExKSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zaG93KHRoaXMudG9nZ2xlKSl9fSx7bmFtZToidG9nZ2xlc2hvdyIsaGFuZGxlcjpmdW5jdGlvbih0LGUpe2UmJiFiKGUudGFyZ2V0LHRoaXMuJGVsKXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLnNob3coZXx8dGhpcy50b2dnbGUpKX19LHtuYW1lOiJ0b2dnbGVoaWRlICIrZ3QsaGFuZGxlcjpmdW5jdGlvbih0LGUpe1F0KHQpfHxlJiYhYihlLnRhcmdldCx0aGlzLiRlbCl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGUmJmIodGhpcy50b2dnbGUubW9kZSwiaG92ZXIiKSYmdGhpcy5oaWRlKCkpfX0se25hbWU6ImJlZm9yZXNob3ciLHNlbGY6ITAsaGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuY2xlYXJUaW1lcnMoKSxRZS5jYW5jZWwodGhpcy4kZWwpLHRoaXMucG9zaXRpb24oKX19LHtuYW1lOiJzaG93IixzZWxmOiEwLGhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgaT10aGlzO3RoaXMudHJhY2tlci5pbml0KCkscXQodGhpcy4kZWwsInVwZGF0ZWFyaWEiKTt2YXIgdD1saShkb2N1bWVudCwiY2xpY2siLGZ1bmN0aW9uKHQpe3ZhciBlPXQuZGVmYXVsdFByZXZlbnRlZCxuPXQudGFyZ2V0O2V8fFd0KG4saS4kZWwpfHxpLnRvZ2dsZSYmV3QobixpLnRvZ2dsZS4kZWwpfHxpLmhpZGUoITEpfSk7WXQodGhpcy4kZWwsImhpZGUiLHQse3NlbGY6ITB9KX19LHtuYW1lOiJiZWZvcmVoaWRlIixzZWxmOiEwLGhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyVGltZXJzKCl9fSx7bmFtZToiaGlkZSIsaGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldDt0aGlzLiRlbD09PWU/KHNpPXRoaXMuaXNBY3RpdmUoKT9udWxsOnNpLHF0KHRoaXMuJGVsLCJ1cGRhdGVhcmlhIiksdGhpcy50cmFja2VyLmNhbmNlbCgpKTpzaT1udWxsPT09c2kmJld0KGUsdGhpcy4kZWwpJiZ0aGlzLmlzVG9nZ2xlZCgpP3RoaXM6c2l9fSx7bmFtZToidXBkYXRlYXJpYSIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKHQsZSl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudXBkYXRlQXJpYSh0aGlzLiRlbCksKGV8fHRoaXMudG9nZ2xlKSYmKGl0KChlfHx0aGlzLnRvZ2dsZSkuJGVsLCJhcmlhLWV4cGFuZGVkIix0aGlzLmlzVG9nZ2xlZCgpKSxEZSh0aGlzLnRvZ2dsZS4kZWwsdGhpcy5jbHMsdGhpcy5pc1RvZ2dsZWQoKSkpfX1dLHVwZGF0ZTp7d3JpdGU6ZnVuY3Rpb24oKXt0aGlzLmlzVG9nZ2xlZCgpJiYhUWUuaW5Qcm9ncmVzcyh0aGlzLiRlbCkmJnRoaXMucG9zaXRpb24oKX0sZXZlbnRzOlsicmVzaXplIl19LG1ldGhvZHM6e3Nob3c6ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzO3ZvaWQgMD09PW4mJihuPSEwKTtmdW5jdGlvbiByKCl7cmV0dXJuIWkuaXNUb2dnbGVkKCkmJmkudG9nZ2xlRWxlbWVudChpLiRlbCwhMCl9ZnVuY3Rpb24gdCgpe2lmKGkudG9nZ2xlPWV8fGkudG9nZ2xlLGkuY2xlYXJUaW1lcnMoKSwhaS5pc0FjdGl2ZSgpKWlmKG4mJnNpJiZzaSE9PWkmJnNpLmlzRGVsYXlpbmcpaS5zaG93VGltZXI9c2V0VGltZW91dChpLnNob3csMTApO2Vsc2V7aWYoaS5pc1BhcmVudE9mKHNpKSl7aWYoIXNpLmhpZGVUaW1lcilyZXR1cm47c2kuaGlkZSghMSl9ZWxzZSBpZihpLmlzQ2hpbGRPZihzaSkpc2kuY2xlYXJUaW1lcnMoKTtlbHNlIGlmKHNpJiYhaS5pc0NoaWxkT2Yoc2kpJiYhaS5pc1BhcmVudE9mKHNpKSlmb3IodmFyIHQ7c2kmJnNpIT09dCYmIWkuaXNDaGlsZE9mKHNpKTspKHQ9c2kpLmhpZGUoITEpO24mJmkuZGVsYXlTaG93P2kuc2hvd1RpbWVyPXNldFRpbWVvdXQocixpLmRlbGF5U2hvdyk6cigpLHNpPWl9fWUmJnRoaXMudG9nZ2xlJiZlLiRlbCE9PXRoaXMudG9nZ2xlLiRlbD8oWXQodGhpcy4kZWwsImhpZGUiLHQpLHRoaXMuaGlkZSghMSkpOnQoKX0saGlkZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PSEwKTtmdW5jdGlvbiBuKCl7cmV0dXJuIGUudG9nZ2xlTm93KGUuJGVsLCExKX10aGlzLmNsZWFyVGltZXJzKCksdGhpcy5pc0RlbGF5aW5nPXRoaXMudHJhY2tlci5tb3Zlc1RvKHRoaXMuJGVsKSx0JiZ0aGlzLmlzRGVsYXlpbmc/dGhpcy5oaWRlVGltZXI9c2V0VGltZW91dCh0aGlzLmhpZGUsdGhpcy5ob3ZlcklkbGUpOnQmJnRoaXMuZGVsYXlIaWRlP3RoaXMuaGlkZVRpbWVyPXNldFRpbWVvdXQobix0aGlzLmRlbGF5SGlkZSk6bigpfSxjbGVhclRpbWVyczpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lciksY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKSx0aGlzLnNob3dUaW1lcj1udWxsLHRoaXMuaGlkZVRpbWVyPW51bGwsdGhpcy5pc0RlbGF5aW5nPSExfSxpc0FjdGl2ZTpmdW5jdGlvbigpe3JldHVybiBzaT09PXRoaXN9LGlzQ2hpbGRPZjpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdCE9PXRoaXMmJld0KHRoaXMuJGVsLHQuJGVsKX0saXNQYXJlbnRPZjpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdCE9PXRoaXMmJld0KHQuJGVsLHRoaXMuJGVsKX0scG9zaXRpb246ZnVuY3Rpb24oKXtOZSh0aGlzLiRlbCx0aGlzLmNsc0Ryb3ArIi0oc3RhY2t8Ym91bmRhcnkpIiksTGUodGhpcy4kZWwse3RvcDoiIixsZWZ0OiIiLGRpc3BsYXk6ImJsb2NrIn0pLERlKHRoaXMuJGVsLHRoaXMuY2xzRHJvcCsiLWJvdW5kYXJ5Iix0aGlzLmJvdW5kYXJ5QWxpZ24pO3ZhciB0PW5uKHRoaXMuYm91bmRhcnkpLGU9dGhpcy5ib3VuZGFyeUFsaWduP3Q6bm4odGhpcy50b2dnbGUuJGVsKTtpZigianVzdGlmeSI9PT10aGlzLmFsaWduKXt2YXIgbj0ieSI9PT10aGlzLmdldEF4aXMoKT8id2lkdGgiOiJoZWlnaHQiO0xlKHRoaXMuJGVsLG4sZVtuXSl9ZWxzZSB0aGlzLiRlbC5vZmZzZXRXaWR0aD5NYXRoLm1heCh0LnJpZ2h0LWUubGVmdCxlLnJpZ2h0LXQubGVmdCkmJkFlKHRoaXMuJGVsLHRoaXMuY2xzRHJvcCsiLXN0YWNrIik7dGhpcy5wb3NpdGlvbkF0KHRoaXMuJGVsLHRoaXMuYm91bmRhcnlBbGlnbj90aGlzLmJvdW5kYXJ5OnRoaXMudG9nZ2xlLiRlbCx0aGlzLmJvdW5kYXJ5KSxMZSh0aGlzLiRlbCwiZGlzcGxheSIsIiIpfX19O2Z1bmN0aW9uIGxpKHQsZSxuKXt2YXIgaT1ZdCh0LGUsZnVuY3Rpb24oKXtyZXR1cm4gaT1WdCh0LGUsbil9LCEwKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaSgpfX12YXIgZGk9e2V4dGVuZHM6dWl9LGZpPXttaXhpbnM6W2VpXSxhcmdzOiJ0YXJnZXQiLHByb3BzOnt0YXJnZXQ6Qm9vbGVhbn0sZGF0YTp7dGFyZ2V0OiExfSxjb21wdXRlZDp7aW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gVGUoTHQsZSl9LHN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nfSx0YXJnZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10LnRhcmdldDtyZXR1cm4gbiYmKCEwPT09biYmdGhpcy5pbnB1dC5wYXJlbnROb2RlPT09ZSYmdGhpcy5pbnB1dC5uZXh0RWxlbWVudFNpYmxpbmd8fHd0KG4sZSkpfX0sdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50YXJnZXQsZT10aGlzLmlucHV0O2lmKHQpe3ZhciBuLGk9RnQodCk/InZhbHVlIjoidGV4dENvbnRlbnQiLHI9dFtpXSxvPWUuZmlsZXMmJmUuZmlsZXNbMF0/ZS5maWxlc1swXS5uYW1lOl90KGUsInNlbGVjdCIpJiYobj1FZSgib3B0aW9uIixlKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2VsZWN0ZWR9KVswXSk/bi50ZXh0Q29udGVudDplLnZhbHVlO3IhPT1vJiYodFtpXT1vKX19LGV2ZW50czpbe25hbWU6ImNoYW5nZSIsaGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuJGVtaXQoKX19LHtuYW1lOiJyZXNldCIsZWw6ZnVuY3Rpb24oKXtyZXR1cm4gTXQodGhpcy4kZWwsImZvcm0iKX0saGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuJGVtaXQoKX19XX0scGk9e3VwZGF0ZTp7cmVhZDpmdW5jdGlvbih0KXt2YXIgZT1wbih0aGlzLiRlbCk7aWYoIWV8fHQuaXNJblZpZXc9PT1lKXJldHVybiExO3QuaXNJblZpZXc9ZX0sd3JpdGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5zcmM9dGhpcy4kZWwuc3JjfSxldmVudHM6WyJzY3JvbGwiLCJyZXNpemUiXX19LG1pPXtwcm9wczp7bWFyZ2luOlN0cmluZyxmaXJzdENvbHVtbjpCb29sZWFufSxkYXRhOnttYXJnaW46InVrLW1hcmdpbi1zbWFsbC10b3AiLGZpcnN0Q29sdW1uOiJ1ay1maXJzdC1jb2x1bW4ifSx1cGRhdGU6e3JlYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kZWwuY2hpbGRyZW47aWYoIWUubGVuZ3RofHwhSHQodGhpcy4kZWwpKXJldHVybiB0LnJvd3M9W1tdXTt0LnJvd3M9Z2koZSksdC5zdGFja3M9IXQucm93cy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiAxPHQubGVuZ3RofSl9LHdyaXRlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7dC5yb3dzLmZvckVhY2goZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7RGUodCxpLm1hcmdpbiwwIT09biksRGUodCxpLmZpcnN0Q29sdW1uLDA9PT1lKX0pfSl9LGV2ZW50czpbInJlc2l6ZSJdfX07ZnVuY3Rpb24gZ2kodCl7Zm9yKHZhciBlPVtbXV0sbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dLHI9dmkoaSk7aWYoci5oZWlnaHQpZm9yKHZhciBvPWUubGVuZ3RoLTE7MDw9bztvLS0pe3ZhciBzPWVbb107aWYoIXNbMF0pe3MucHVzaChpKTticmVha312YXIgYT12b2lkIDA7aWYoYT1zWzBdLm9mZnNldFBhcmVudD09PWkub2Zmc2V0UGFyZW50P3ZpKHNbMF0pOihyPXZpKGksITApLHZpKHNbMF0sITApKSxyLnRvcD49YS5ib3R0b20tMSYmci50b3AhPT1hLnRvcCl7ZS5wdXNoKFtpXSk7YnJlYWt9aWYoci5ib3R0b20+YS50b3Ape2lmKHIubGVmdDxhLmxlZnQmJiFodCl7cy51bnNoaWZ0KGkpO2JyZWFrfXMucHVzaChpKTticmVha31pZigwPT09byl7ZS51bnNoaWZ0KFtpXSk7YnJlYWt9fX1yZXR1cm4gZX1mdW5jdGlvbiB2aSh0LGUpe3ZhciBuO3ZvaWQgMD09PWUmJihlPSExKTt2YXIgaT10Lm9mZnNldFRvcCxyPXQub2Zmc2V0TGVmdCxvPXQub2Zmc2V0SGVpZ2h0O3JldHVybiBlJiYoaT0obj12bih0KSlbMF0scj1uWzFdKSx7dG9wOmksbGVmdDpyLGhlaWdodDpvLGJvdHRvbTppK299fXZhciB3aT17ZXh0ZW5kczptaSxtaXhpbnM6W2VpXSxuYW1lOiJncmlkIixwcm9wczp7bWFzb25yeTpCb29sZWFuLHBhcmFsbGF4Ok51bWJlcn0sZGF0YTp7bWFyZ2luOiJ1ay1ncmlkLW1hcmdpbiIsY2xzU3RhY2s6InVrLWdyaWQtc3RhY2siLG1hc29ucnk6ITEscGFyYWxsYXg6MH0sY29tcHV0ZWQ6e2xlbmd0aDpmdW5jdGlvbih0LGUpe3JldHVybiBlLmNoaWxkcmVuLmxlbmd0aH0scGFyYWxsYXg6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJhbGxheDtyZXR1cm4gZSYmdGhpcy5sZW5ndGg/TWF0aC5hYnMoZSk6IiJ9fSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm1hc29ucnkmJkFlKHRoaXMuJGVsLCJ1ay1mbGV4LXRvcCB1ay1mbGV4LXdyYXAtdG9wIil9LHVwZGF0ZTpbe3JlYWQ6ZnVuY3Rpb24odCl7dmFyIHI9dC5yb3dzOyh0aGlzLm1hc29ucnl8fHRoaXMucGFyYWxsYXgpJiYocj1yLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gRyh0LCJvZmZzZXRMZWZ0Iil9KSxodCYmci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmV2ZXJzZSgpfSkpO3ZhciBlPXIuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5zb21lKFhlLmluUHJvZ3Jlc3MpfSksbj0hMSxpPSIiO2lmKHRoaXMubWFzb25yeSYmdGhpcy5sZW5ndGgpe3ZhciBvPTA7bj1yLnJlZHVjZShmdW5jdGlvbihuLHQsaSl7cmV0dXJuIG5baV09dC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWk/MDpGKG5baS0xXVtlXSkrKG8tRihyW2ktMV1bZV0mJnJbaS0xXVtlXS5vZmZzZXRIZWlnaHQpKX0pLG89dC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5tYXgodCxlLm9mZnNldEhlaWdodCl9LDApLG59LFtdKSxpPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heC5hcHBseShNYXRoLHQucmVkdWNlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LGUpe3JldHVybiBuW2VdPShuW2VdfHwwKSt0Lm9mZnNldEhlaWdodH0pLG59LFtdKSl9KHIpK2Z1bmN0aW9uKHQsZSl7dmFyIG49Vyh0LmNoaWxkcmVuKSxpPW4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPZSh0LGUpfSlbMF07cmV0dXJuIEYoaT9MZShpLCJtYXJnaW5Ub3AiKTpMZShuWzBdLCJwYWRkaW5nTGVmdCIpKX0odGhpcy4kZWwsdGhpcy5tYXJnaW4pKihyLmxlbmd0aC0xKX1yZXR1cm57cGFkZGluZzp0aGlzLnBhcmFsbGF4JiZmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPTAscj0wLG89MCxzPWUubGVuZ3RoLTE7MDw9cztzLS0pZm9yKHZhciBhPWk7YTxlW3NdLmxlbmd0aDthKyspe3ZhciBoPWVbc11bYV0sYz1oLm9mZnNldFRvcCtzbihoKSsobiYmLW5bc11bYV0pO3I9TWF0aC5tYXgocixjKSxvPU1hdGgubWF4KG8sYysoYSUyP3Q6dC84KSksaSsrfXJldHVybiBvLXJ9KHRoaXMucGFyYWxsYXgscixuKSxyb3dzOnIsdHJhbnNsYXRlczpuLGhlaWdodDohZSYmaX19LHdyaXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhY2tzLG49dC5oZWlnaHQsaT10LnBhZGRpbmc7RGUodGhpcy4kZWwsdGhpcy5jbHNTdGFjayxlKSxMZSh0aGlzLiRlbCwicGFkZGluZ0JvdHRvbSIsaSksITEhPT1uJiZMZSh0aGlzLiRlbCwiaGVpZ2h0IixuKX0sZXZlbnRzOlsicmVzaXplIl19LHtyZWFkOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaGVpZ2h0O3JldHVybntzY3JvbGxlZDohIXRoaXMucGFyYWxsYXgmJm1uKHRoaXMuJGVsLGU/ZS1zbih0aGlzLiRlbCk6MCkqdGhpcy5wYXJhbGxheH19LHdyaXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucm93cyxpPXQuc2Nyb2xsZWQscj10LnRyYW5zbGF0ZXM7ITE9PT1pJiYhcnx8ZS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LGUpe3JldHVybiBMZSh0LCJ0cmFuc2Zvcm0iLGl8fHI/InRyYW5zbGF0ZVkoIisoKHImJi1yW25dW2VdKSsoaT9lJTI/aTppLzg6MCkpKyJweCkiOiIiKX0pfSl9LGV2ZW50czpbInNjcm9sbCIsInJlc2l6ZSJdfV19O3ZhciBiaT1hdD97cHJvcHM6e3NlbE1pbkhlaWdodDpTdHJpbmd9LGRhdGE6e3NlbE1pbkhlaWdodDohMSxmb3JjZUhlaWdodDohMX0sY29tcHV0ZWQ6e2VsZW1lbnRzOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zZWxNaW5IZWlnaHQ7cmV0dXJuIG4/RWUobixlKTpbZV19fSx1cGRhdGU6W3tyZWFkOmZ1bmN0aW9uKCl7TGUodGhpcy5lbGVtZW50cywiaGVpZ2h0IiwiIil9LG9yZGVyOi01LGV2ZW50czpbInJlc2l6ZSJdfSx7d3JpdGU6ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1GKExlKHQsIm1pbkhlaWdodCIpKTtlJiYobi5mb3JjZUhlaWdodHx8TWF0aC5yb3VuZChlK2NuKCJoZWlnaHQiLHQsImNvbnRlbnQtYm94IikpPj10Lm9mZnNldEhlaWdodCkmJkxlKHQsImhlaWdodCIsZSl9KX0sb3JkZXI6NSxldmVudHM6WyJyZXNpemUiXX1dfTp7fSx5aT17bWl4aW5zOltiaV0sYXJnczoidGFyZ2V0Iixwcm9wczp7dGFyZ2V0OlN0cmluZyxyb3c6Qm9vbGVhbn0sZGF0YTp7dGFyZ2V0OiI+ICoiLHJvdzohMCxmb3JjZUhlaWdodDohMH0sY29tcHV0ZWQ6e2VsZW1lbnRzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEVlKHQudGFyZ2V0LGUpfX0sdXBkYXRlOntyZWFkOmZ1bmN0aW9uKCl7cmV0dXJue3Jvd3M6KHRoaXMucm93P2dpKHRoaXMuZWxlbWVudHMpOlt0aGlzLmVsZW1lbnRzXSkubWFwKHhpKX19LHdyaXRlOmZ1bmN0aW9uKHQpe3Qucm93cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuaGVpZ2h0cztyZXR1cm4gdC5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIExlKHQsIm1pbkhlaWdodCIsbltlXSl9KX0pfSxldmVudHM6WyJyZXNpemUiXX19O2Z1bmN0aW9uIHhpKHQpe3ZhciBlO2lmKHQubGVuZ3RoPDIpcmV0dXJue2hlaWdodHM6WyIiXSxlbGVtZW50czp0fTt2YXIgbj1raSh0KSxpPW4uaGVpZ2h0cyxyPW4ubWF4LG89dC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0eWxlLm1pbkhlaWdodH0pLHM9dC5zb21lKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXQuc3R5bGUubWluSGVpZ2h0JiZpW2VdPHJ9KTtyZXR1cm4gbyYmcyYmKExlKHQsIm1pbkhlaWdodCIsIiIpLGU9a2kodCksaT1lLmhlaWdodHMscj1lLm1heCkse2hlaWdodHM6aT10Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBpW2VdPT09ciYmRih0LnN0eWxlLm1pbkhlaWdodCkudG9GaXhlZCgyKSE9PXIudG9GaXhlZCgyKT8iIjpyfSksZWxlbWVudHM6dH19ZnVuY3Rpb24ga2kodCl7dmFyIGU9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG5uKHQpLmhlaWdodC1jbigiaGVpZ2h0Iix0LCJjb250ZW50LWJveCIpfSk7cmV0dXJue2hlaWdodHM6ZSxtYXg6TWF0aC5tYXguYXBwbHkobnVsbCxlKX19dmFyICRpPXttaXhpbnM6W2JpXSxwcm9wczp7ZXhwYW5kOkJvb2xlYW4sb2Zmc2V0VG9wOkJvb2xlYW4sb2Zmc2V0Qm90dG9tOkJvb2xlYW4sbWluSGVpZ2h0Ok51bWJlcn0sZGF0YTp7ZXhwYW5kOiExLG9mZnNldFRvcDohMSxvZmZzZXRCb3R0b206ITEsbWluSGVpZ2h0OjB9LHVwZGF0ZTp7cmVhZDpmdW5jdGlvbih0KXt2YXIgZT10Lm1pbkhlaWdodDtpZighSHQodGhpcy4kZWwpKXJldHVybiExO3ZhciBuPSIiLGk9Y24oImhlaWdodCIsdGhpcy4kZWwsImNvbnRlbnQtYm94Iik7aWYodGhpcy5leHBhbmQpe2lmKHRoaXMuJGVsLmRhdGFzZXQuaGVpZ2h0RXhwYW5kPSIiLFRlKCJbZGF0YS1oZWlnaHQtZXhwYW5kXSIpIT09dGhpcy4kZWwpcmV0dXJuITE7bj1zbih3aW5kb3cpLShJaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLUlpKHRoaXMuJGVsKSktaXx8IiJ9ZWxzZXtpZihuPSJjYWxjKDEwMHZoIix0aGlzLm9mZnNldFRvcCl7dmFyIHI9bm4odGhpcy4kZWwpLnRvcDtuKz0wPHImJnI8c24od2luZG93KS8yPyIgLSAiK3IrInB4IjoiIn0hMD09PXRoaXMub2Zmc2V0Qm90dG9tP24rPSIgLSAiK0lpKHRoaXMuJGVsLm5leHRFbGVtZW50U2libGluZykrInB4Ijp6KHRoaXMub2Zmc2V0Qm90dG9tKT9uKz0iIC0gIit0aGlzLm9mZnNldEJvdHRvbSsidmgiOnRoaXMub2Zmc2V0Qm90dG9tJiZ1KHRoaXMub2Zmc2V0Qm90dG9tLCJweCIpP24rPSIgLSAiK0YodGhpcy5vZmZzZXRCb3R0b20pKyJweCI6Tyh0aGlzLm9mZnNldEJvdHRvbSkmJihuKz0iIC0gIitJaSh3dCh0aGlzLm9mZnNldEJvdHRvbSx0aGlzLiRlbCkpKyJweCIpLG4rPShpPyIgLSAiK2krInB4IjoiIikrIikifXJldHVybnttaW5IZWlnaHQ6bixwcmV2OmV9fSx3cml0ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1pbkhlaWdodCxuPXQucHJldjtMZSh0aGlzLiRlbCx7bWluSGVpZ2h0OmV9KSxlIT09biYmdGhpcy4kdXBkYXRlKHRoaXMuJGVsLCJyZXNpemUiKSx0aGlzLm1pbkhlaWdodCYmRihMZSh0aGlzLiRlbCwibWluSGVpZ2h0IikpPHRoaXMubWluSGVpZ2h0JiZMZSh0aGlzLiRlbCwibWluSGVpZ2h0Iix0aGlzLm1pbkhlaWdodCl9LGV2ZW50czpbInJlc2l6ZSJdfX07ZnVuY3Rpb24gSWkodCl7cmV0dXJuIHQmJm5uKHQpLmhlaWdodHx8MH12YXIgU2k9e2FyZ3M6InNyYyIscHJvcHM6e2lkOkJvb2xlYW4saWNvbjpTdHJpbmcsc3JjOlN0cmluZyxzdHlsZTpTdHJpbmcsd2lkdGg6TnVtYmVyLGhlaWdodDpOdW1iZXIscmF0aW86TnVtYmVyLGNsYXNzOlN0cmluZyxzdHJva2VBbmltYXRpb246Qm9vbGVhbixmb2N1c2FibGU6Qm9vbGVhbixhdHRyaWJ1dGVzOiJsaXN0In0sZGF0YTp7cmF0aW86MSxpbmNsdWRlOlsic3R5bGUiLCJjbGFzcyIsImZvY3VzYWJsZSJdLGNsYXNzOiIiLHN0cm9rZUFuaW1hdGlvbjohMX0sYmVmb3JlQ29ubmVjdDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcztpZih0aGlzLmNsYXNzKz0iIHVrLXN2ZyIsIXRoaXMuaWNvbiYmYih0aGlzLnNyYywiIyIpKXt2YXIgbj10aGlzLnNyYy5zcGxpdCgiIyIpOzE8bi5sZW5ndGgmJih0PW4sdGhpcy5zcmM9dFswXSx0aGlzLmljb249dFsxXSl9dGhpcy5zdmc9dGhpcy5nZXRTdmcoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5QXR0cmlidXRlcyh0KSxlLnN2Z0VsPWZ1bmN0aW9uKHQsZSl7e2lmKFB0KGUpfHwiQ0FOVkFTIj09PWUudGFnTmFtZSl7aXQoZSwiaGlkZGVuIiwhMCk7dmFyIG49ZS5uZXh0RWxlbWVudFNpYmxpbmc7cmV0dXJuIF9pKHQsbik/bjpnZShlLHQpfXZhciBpPWUubGFzdEVsZW1lbnRDaGlsZDtyZXR1cm4gX2kodCxpKT9pOnBlKGUsdCl9fSh0LGUuJGVsKX0sUSl9LGRpc2Nvbm5lY3RlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7UHQodGhpcy4kZWwpJiZpdCh0aGlzLiRlbCwiaGlkZGVuIixudWxsKSx0aGlzLnN2ZyYmdGhpcy5zdmcudGhlbihmdW5jdGlvbih0KXtyZXR1cm4oIWUuX2Nvbm5lY3RlZHx8dCE9PWUuc3ZnRWwpJiZ3ZSh0KX0sUSksdGhpcy5zdmc9dGhpcy5zdmdFbD1udWxsfSx1cGRhdGU6e3JlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLnN0cm9rZUFuaW1hdGlvbiYmdGhpcy5zdmdFbCYmSHQodGhpcy5zdmdFbCkpfSx3cml0ZTpmdW5jdGlvbigpeyFmdW5jdGlvbih0KXt2YXIgZT1BaSh0KTtlJiZ0LnN0eWxlLnNldFByb3BlcnR5KCItLXVrLWFuaW1hdGlvbi1zdHJva2UiLGUpfSh0aGlzLnN2Z0VsKX0sdHlwZTpbInJlc2l6ZSJdfSxtZXRob2RzOntnZXRTdmc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBmdW5jdGlvbihuKXtpZihUaVtuXSlyZXR1cm4gVGlbbl07cmV0dXJuIFRpW25dPW5ldyBuZShmdW5jdGlvbihlLHQpe24/dyhuLCJkYXRhOiIpP2UoZGVjb2RlVVJJQ29tcG9uZW50KG4uc3BsaXQoIiwiKVsxXSkpOmFlKG4pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUodC5yZXNwb25zZSl9LGZ1bmN0aW9uKCl7cmV0dXJuIHQoIlNWRyBub3QgZm91bmQuIil9KTp0KCl9KX0odGhpcy5zcmMpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7ZSYmYih0LCI8c3ltYm9sIikmJih0PWZ1bmN0aW9uKHQsZSl7aWYoIUNpW3RdKXt2YXIgbjtmb3IoQ2lbdF09e307bj1FaS5leGVjKHQpOylDaVt0XVtuWzNdXT0nPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJytuWzFdKyJzdmc+IjtFaS5sYXN0SW5kZXg9MH1yZXR1cm4gQ2lbdF1bZV19KHQsZSl8fHQpO3JldHVybih0PVRlKHQuc3Vic3RyKHQuaW5kZXhPZigiPHN2ZyIpKSkpJiZ0Lmhhc0NoaWxkTm9kZXMoKSYmdH0odCxlLmljb24pfHxuZS5yZWplY3QoIlNWRyBub3QgZm91bmQuIil9KX0sYXBwbHlBdHRyaWJ1dGVzOmZ1bmN0aW9uKG4pe3ZhciBpPXRoaXM7Zm9yKHZhciB0IGluIHRoaXMuJG9wdGlvbnMucHJvcHMpdGhpc1t0XSYmYih0aGlzLmluY2x1ZGUsdCkmJml0KG4sdCx0aGlzW3RdKTtmb3IodmFyIGUgaW4gdGhpcy5hdHRyaWJ1dGVzKXt2YXIgcj10aGlzLmF0dHJpYnV0ZXNbZV0uc3BsaXQoIjoiLDIpLG89clswXSxzPXJbMV07aXQobixvLHMpfXRoaXMuaWR8fG90KG4sImlkIik7dmFyIGE9WyJ3aWR0aCIsImhlaWdodCJdLGg9W3RoaXMud2lkdGgsdGhpcy5oZWlnaHRdO2guc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdH0pfHwoaD1hLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gaXQobix0KX0pKTt2YXIgYz1pdChuLCJ2aWV3Qm94Iik7YyYmIWguc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdH0pJiYoaD1jLnNwbGl0KCIgIikuc2xpY2UoMikpLGguZm9yRWFjaChmdW5jdGlvbih0LGUpeyh0PSgwfHQpKmkucmF0aW8pJiZpdChuLGFbZV0sdCksdCYmIWhbMV5lXSYmb3QobixhWzFeZV0pfSksaXQobiwiZGF0YS1zdmciLHRoaXMuaWNvbnx8dGhpcy5zcmMpfX19LFRpPXt9O3ZhciBFaT0vPHN5bWJvbCguKj9pZD0oWyciXSkoLio/KVwyW15dKj88XC8pc3ltYm9sPi9nLENpPXt9O2Z1bmN0aW9uIEFpKHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5tYXguYXBwbHkoTWF0aCxFZSgiW3N0cm9rZV0iLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRUb3RhbExlbmd0aCYmdC5nZXRUb3RhbExlbmd0aCgpfHwwfSkuY29uY2F0KFswXSkpKX1mdW5jdGlvbiBfaSh0LGUpe3JldHVybiBpdCh0LCJkYXRhLXN2ZyIpPT09aXQoZSwiZGF0YS1zdmciKX12YXIgTmk9e30sTWk9e3NwaW5uZXI6Jzxzdmcgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSIxNSIgY3k9IjE1IiByPSIxNCIvPjwvc3ZnPicsdG90b3A6Jzxzdmcgd2lkdGg9IjE4IiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMTggMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHBvaW50cz0iMSA5IDkgMSAxNyA5ICIvPjwvc3ZnPicsbWFya2VyOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHg9IjkiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjExIi8+PHJlY3QgeD0iNCIgeT0iOSIgd2lkdGg9IjExIiBoZWlnaHQ9IjEiLz48L3N2Zz4nLCJjbG9zZS1pY29uIjonPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiB4MT0iMSIgeTE9IjEiIHgyPSIxMyIgeTI9IjEzIi8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgeDE9IjEzIiB5MT0iMSIgeDI9IjEiIHkyPSIxMyIvPjwvc3ZnPicsImNsb3NlLWxhcmdlIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS40IiB4MT0iMSIgeTE9IjEiIHgyPSIxOSIgeTI9IjE5Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuNCIgeDE9IjE5IiB5MT0iMSIgeDI9IjEiIHkyPSIxOSIvPjwvc3ZnPicsIm5hdmJhci10b2dnbGUtaWNvbiI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeT0iOSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIiLz48cmVjdCB5PSIzIiB3aWR0aD0iMjAiIGhlaWdodD0iMiIvPjxyZWN0IHk9IjE1IiB3aWR0aD0iMjAiIGhlaWdodD0iMiIvPjwvc3ZnPicsIm92ZXJsYXktaWNvbiI6Jzxzdmcgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgNDAgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeD0iMTkiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjQwIi8+PHJlY3QgeD0iMCIgeT0iMTkiIHdpZHRoPSI0MCIgaGVpZ2h0PSIxIi8+PC9zdmc+JywicGFnaW5hdGlvbi1uZXh0IjonPHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDcgMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHBvaW50cz0iMSAxIDYgNiAxIDExIi8+PC9zdmc+JywicGFnaW5hdGlvbi1wcmV2aW91cyI6Jzxzdmcgd2lkdGg9IjciIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCA3IDEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4yIiBwb2ludHM9IjYgMSAxIDYgNiAxMSIvPjwvc3ZnPicsInNlYXJjaC1pY29uIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGN4PSI5IiBjeT0iOSIgcj0iNyIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik0xNCwxNCBMMTgsMTggTDE0LDE0IFoiLz48L3N2Zz4nLCJzZWFyY2gtbGFyZ2UiOic8c3ZnIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDQwIDQwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuOCIgY3g9IjE3LjUiIGN5PSIxNy41IiByPSIxNi41Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuOCIgeDE9IjM4IiB5MT0iMzkiIHgyPSIyOSIgeTI9IjMwIi8+PC9zdmc+Jywic2VhcmNoLW5hdmJhciI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iMTAuNSIgY3k9IjEwLjUiIHI9IjkuNSIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIHgxPSIyMyIgeTE9IjIzIiB4Mj0iMTciIHkyPSIxNyIvPjwvc3ZnPicsInNsaWRlbmF2LW5leHQiOic8c3ZnIHdpZHRoPSIxNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAxNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuNCIgcG9pbnRzPSIxLjIyNSwyMyAxMi43NzUsMTIgMS4yMjUsMSAiLz48L3N2Zz4nLCJzbGlkZW5hdi1uZXh0LWxhcmdlIjonPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgMjUgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIyIiBwb2ludHM9IjQuMDAyLDM4LjU0NyAyMi41MjcsMjAuMDI0IDQsMS41ICIvPjwvc3ZnPicsInNsaWRlbmF2LXByZXZpb3VzIjonPHN2ZyB3aWR0aD0iMTRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMTQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIHBvaW50cz0iMTIuNzc1LDEgMS4yMjUsMTIgMTIuNzc1LDIzICIvPjwvc3ZnPicsInNsaWRlbmF2LXByZXZpb3VzLWxhcmdlIjonPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgMjUgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIyIiBwb2ludHM9IjIwLjUyNywxLjUgMiwyMC4wMjQgMjAuNTI1LDM4LjU0NyAiLz48L3N2Zz4nfSxPaT17aW5zdGFsbDpmdW5jdGlvbihyKXtyLmljb24uYWRkPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1PKHQpPygobj17fSlbdF09ZSxuKTp0O0soaSxmdW5jdGlvbih0LGUpe01pW2VdPXQsZGVsZXRlIE5pW2VdfSksci5faW5pdGlhbGl6ZWQmJlNlKGRvY3VtZW50LmJvZHksZnVuY3Rpb24odCl7cmV0dXJuIEsoci5nZXRDb21wb25lbnRzKHQpLGZ1bmN0aW9uKHQpe3QuJG9wdGlvbnMuaXNJY29uJiZ0Lmljb24gaW4gaSYmdC4kcmVzZXQoKX0pfSl9fSxleHRlbmRzOlNpLGFyZ3M6Imljb24iLHByb3BzOlsiaWNvbiJdLGRhdGE6e2luY2x1ZGU6WyJmb2N1c2FibGUiXX0saXNJY29uOiEwLGJlZm9yZUNvbm5lY3Q6ZnVuY3Rpb24oKXtBZSh0aGlzLiRlbCwidWstaWNvbiIpfSxtZXRob2RzOntnZXRTdmc6ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0KXtpZighTWlbdF0pcmV0dXJuIG51bGw7TmlbdF18fChOaVt0XT1UZShNaVt0XS50cmltKCkpKTtyZXR1cm4gTmlbdF0uY2xvbmVOb2RlKCEwKX0oZnVuY3Rpb24odCl7cmV0dXJuIGh0P3EocSh0LCJsZWZ0IiwicmlnaHQiKSwicHJldmlvdXMiLCJuZXh0Iik6dH0odGhpcy5pY29uKSk7cmV0dXJuIHQ/bmUucmVzb2x2ZSh0KTpuZS5yZWplY3QoIkljb24gbm90IGZvdW5kLiIpfX19LERpPXthcmdzOiExLGV4dGVuZHM6T2ksZGF0YTpmdW5jdGlvbih0KXtyZXR1cm57aWNvbjpkKHQuY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKX19LGJlZm9yZUNvbm5lY3Q6ZnVuY3Rpb24oKXtBZSh0aGlzLiRlbCx0aGlzLiRuYW1lKX19LHppPXtleHRlbmRzOkRpLGJlZm9yZUNvbm5lY3Q6ZnVuY3Rpb24oKXtBZSh0aGlzLiRlbCwidWstc2xpZGVuYXYiKX0sY29tcHV0ZWQ6e2ljb246ZnVuY3Rpb24odCxlKXt2YXIgbj10Lmljb247cmV0dXJuIE9lKGUsInVrLXNsaWRlbmF2LWxhcmdlIik/bisiLWxhcmdlIjpufX19LEJpPXtleHRlbmRzOkRpLGNvbXB1dGVkOntpY29uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5pY29uO3JldHVybiBPZShlLCJ1ay1zZWFyY2gtaWNvbiIpJiZPdChlLCIudWstc2VhcmNoLWxhcmdlIikubGVuZ3RoPyJzZWFyY2gtbGFyZ2UiOk90KGUsIi51ay1zZWFyY2gtbmF2YmFyIikubGVuZ3RoPyJzZWFyY2gtbmF2YmFyIjpufX19LFBpPXtleHRlbmRzOkRpLGNvbXB1dGVkOntpY29uOmZ1bmN0aW9uKCl7cmV0dXJuImNsb3NlLSIrKE9lKHRoaXMuJGVsLCJ1ay1jbG9zZS1sYXJnZSIpPyJsYXJnZSI6Imljb24iKX19fSxIaT17ZXh0ZW5kczpEaSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuc3ZnLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIDEhPT1lLnJhdGlvJiZMZShUZSgiY2lyY2xlIix0KSwic3Ryb2tlV2lkdGgiLDEvZS5yYXRpbyl9LFEpfX07dmFyIExpPXthcmdzOiJkYXRhU3JjIixwcm9wczp7ZGF0YVNyYzpTdHJpbmcsZGF0YVNyY3NldDpCb29sZWFuLHNpemVzOlN0cmluZyx3aWR0aDpOdW1iZXIsaGVpZ2h0Ok51bWJlcixvZmZzZXRUb3A6U3RyaW5nLG9mZnNldExlZnQ6U3RyaW5nLHRhcmdldDpTdHJpbmd9LGRhdGE6e2RhdGFTcmM6IiIsZGF0YVNyY3NldDohMSxzaXplczohMSx3aWR0aDohMSxoZWlnaHQ6ITEsb2Zmc2V0VG9wOiI1MHZoIixvZmZzZXRMZWZ0OjAsdGFyZ2V0OiExfSxjb21wdXRlZDp7Y2FjaGVLZXk6ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRhU3JjO3JldHVybiB0aGlzLiRuYW1lKyIuIitlfSx3aWR0aDpmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLG49dC5kYXRhV2lkdGg7cmV0dXJuIGV8fG59LGhlaWdodDpmdW5jdGlvbih0KXt2YXIgZT10LmhlaWdodCxuPXQuZGF0YUhlaWdodDtyZXR1cm4gZXx8bn0sc2l6ZXM6ZnVuY3Rpb24odCl7dmFyIGU9dC5zaXplcyxuPXQuZGF0YVNpemVzO3JldHVybiBlfHxufSxpc0ltZzpmdW5jdGlvbih0LGUpe3JldHVybiBxaShlKX0sdGFyZ2V0OntnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQ7cmV0dXJuW3RoaXMuJGVsXS5jb25jYXQoYnQoZSx0aGlzLiRlbCkpfSx3YXRjaDpmdW5jdGlvbigpe3RoaXMub2JzZXJ2ZSgpfX0sb2Zmc2V0VG9wOmZ1bmN0aW9uKHQpe3JldHVybiB3bih0Lm9mZnNldFRvcCwiaGVpZ2h0Iil9LG9mZnNldExlZnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHduKHQub2Zmc2V0TGVmdCwid2lkdGgiKX19LGNvbm5lY3RlZDpmdW5jdGlvbigpe1hpW3RoaXMuY2FjaGVLZXldP0ZpKHRoaXMuJGVsLFhpW3RoaXMuY2FjaGVLZXldfHx0aGlzLmRhdGFTcmMsdGhpcy5kYXRhU3Jjc2V0LHRoaXMuc2l6ZXMpOnRoaXMuaXNJbWcmJnRoaXMud2lkdGgmJnRoaXMuaGVpZ2h0JiZGaSh0aGlzLiRlbCxmdW5jdGlvbih0LGUsbil7dmFyIGk7biYmKGk9bnQucmF0aW8oe3dpZHRoOnQsaGVpZ2h0OmV9LCJ3aWR0aCIsd24oV2kobikpKSx0PWkud2lkdGgsZT1pLmhlaWdodCk7cmV0dXJuJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iJyt0KyciIGhlaWdodD0iJytlKyciPjwvc3ZnPid9KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsdGhpcy5zaXplcykpLHRoaXMub2JzZXJ2ZXI9bmV3IFBuKHRoaXMubG9hZCx7cm9vdE1hcmdpbjp0aGlzLm9mZnNldFRvcCsicHggIit0aGlzLm9mZnNldExlZnQrInB4In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLm9ic2VydmUpfSxkaXNjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKX0sdXBkYXRlOntyZWFkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LmltYWdlO2lmKG58fCJjb21wbGV0ZSIhPT1kb2N1bWVudC5yZWFkeVN0YXRlfHx0aGlzLmxvYWQodGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpKSx0aGlzLmlzSW1nKXJldHVybiExO24mJm4udGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdCYmIiIhPT10LmN1cnJlbnRTcmMmJkZpKGUuJGVsLFVpKHQpKX0pfSx3cml0ZTpmdW5jdGlvbih0KXtpZih0aGlzLmRhdGFTcmNzZXQmJjEhPT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyl7dmFyIGU9TGUodGhpcy4kZWwsImJhY2tncm91bmRTaXplIik7IWUubWF0Y2goL14oYXV0b1xzPykrJC8pJiZGKGUpIT09dC5iZ1NpemV8fCh0LmJnU2l6ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXduKFdpKGUpKSxpPSh0Lm1hdGNoKFlpKXx8W10pLm1hcChGKS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pO3JldHVybiBpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gbjw9dH0pWzBdfHxpLnBvcCgpfHwiIn0odGhpcy5kYXRhU3Jjc2V0LHRoaXMuc2l6ZXMpLExlKHRoaXMuJGVsLCJiYWNrZ3JvdW5kU2l6ZSIsdC5iZ1NpemUrInB4IikpfX0sZXZlbnRzOlsicmVzaXplIl19LG1ldGhvZHM6e2xvYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIFAodC5pc0ludGVyc2VjdGluZyl8fHQuaXNJbnRlcnNlY3Rpbmd9KSYmKHRoaXMuX2RhdGEuaW1hZ2U9aGUodGhpcy5kYXRhU3JjLHRoaXMuZGF0YVNyY3NldCx0aGlzLnNpemVzKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBGaShlLiRlbCxVaSh0KSx0LnNyY3NldCx0LnNpemVzKSxYaVtlLmNhY2hlS2V5XT1VaSh0KSx0fSxRKSx0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSl9LG9ic2VydmU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzOyF0aGlzLl9kYXRhLmltYWdlJiZ0aGlzLl9jb25uZWN0ZWQmJnRoaXMudGFyZ2V0LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUub2JzZXJ2ZXIub2JzZXJ2ZSh0KX0pfX19O2Z1bmN0aW9uIEZpKHQsZSxuLGkpe2lmKHFpKHQpKWkmJih0LnNpemVzPWkpLG4mJih0LnNyY3NldD1uKSxlJiYodC5zcmM9ZSk7ZWxzZSBpZihlKXshYih0LnN0eWxlLmJhY2tncm91bmRJbWFnZSxlKSYmKExlKHQsImJhY2tncm91bmRJbWFnZSIsInVybCgiK3p0KGUpKyIpIikscXQodCxVdCgibG9hZCIsITEpKSl9fXZhciBqaT0vXHMqKC4qPylccyooXHcrfGNhbGNcKC4qP1wpKVxzKig/Oix8JCkvZztmdW5jdGlvbiBXaSh0KXt2YXIgZSxuO2ZvcihqaS5sYXN0SW5kZXg9MDtlPWppLmV4ZWModCk7KWlmKCFlWzFdfHx3aW5kb3cubWF0Y2hNZWRpYShlWzFdKS5tYXRjaGVzKXtlPXcobj1lWzJdLCJjYWxjIik/bi5zdWJzdHJpbmcoNSxuLmxlbmd0aC0xKS5yZXBsYWNlKFZpLGZ1bmN0aW9uKHQpe3JldHVybiB3bih0KX0pLnJlcGxhY2UoLyAvZywiIikubWF0Y2goUmkpLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0KyArZX0sMCk6bjticmVha31yZXR1cm4gZXx8IjEwMHZ3In12YXIgVmk9L1xkKyg/Olx3K3wlKS9nLFJpPS9bKy1dPyhcZCspL2c7dmFyIFlpPS9ccytcZCt3XHMqKD86LHwkKS9nO2Z1bmN0aW9uIHFpKHQpe3JldHVybiJJTUciPT09dC50YWdOYW1lfWZ1bmN0aW9uIFVpKHQpe3JldHVybiB0LmN1cnJlbnRTcmN8fHQuc3JjfXZhciBYaSxLaT0iX190ZXN0X18iO3RyeXsoWGk9d2luZG93LnNlc3Npb25TdG9yYWdlfHx7fSlbS2ldPTEsZGVsZXRlIFhpW0tpXX1jYXRjaCh0KXtYaT17fX12YXIgR2k9e3Byb3BzOnttZWRpYTpCb29sZWFufSxkYXRhOnttZWRpYTohMX0sY29tcHV0ZWQ6e21hdGNoTWVkaWE6ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0KXtpZihPKHQpKXtpZigiQCI9PT10WzBdKXQ9RihWZSgiYnJlYWtwb2ludC0iK3Quc3Vic3RyKDEpKSk7ZWxzZSBpZihpc05hTih0KSlyZXR1cm4gdH1yZXR1cm4hKCF0fHxpc05hTih0KSkmJiIobWluLXdpZHRoOiAiK3QrInB4KSJ9KHRoaXMubWVkaWEpO3JldHVybiF0fHx3aW5kb3cubWF0Y2hNZWRpYSh0KS5tYXRjaGVzfX19O3ZhciBKaT17bWl4aW5zOltlaSxHaV0scHJvcHM6e2ZpbGw6U3RyaW5nfSxkYXRhOntmaWxsOiIiLGNsc1dyYXBwZXI6InVrLWxlYWRlci1maWxsIixjbHNIaWRlOiJ1ay1sZWFkZXItaGlkZSIsYXR0ckZpbGw6ImRhdGEtZmlsbCJ9LGNvbXB1dGVkOntmaWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbGx8fFZlKCJsZWFkZXItZmlsbC1jb250ZW50Iil9fSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgdDt0PXllKHRoaXMuJGVsLCc8c3BhbiBjbGFzcz0iJyt0aGlzLmNsc1dyYXBwZXIrJyI+JyksdGhpcy53cmFwcGVyPXRbMF19LGRpc2Nvbm5lY3RlZDpmdW5jdGlvbigpe3hlKHRoaXMud3JhcHBlci5jaGlsZE5vZGVzKX0sdXBkYXRlOntyZWFkOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hhbmdlZCxuPXQud2lkdGgsaT1uO3JldHVybnt3aWR0aDpuPU1hdGguZmxvb3IodGhpcy4kZWwub2Zmc2V0V2lkdGgvMiksZmlsbDp0aGlzLmZpbGwsY2hhbmdlZDplfHxpIT09bixoaWRlOiF0aGlzLm1hdGNoTWVkaWF9fSx3cml0ZTpmdW5jdGlvbih0KXtEZSh0aGlzLndyYXBwZXIsdGhpcy5jbHNIaWRlLHQuaGlkZSksdC5jaGFuZ2VkJiYodC5jaGFuZ2VkPSExLGl0KHRoaXMud3JhcHBlcix0aGlzLmF0dHJGaWxsLG5ldyBBcnJheSh0LndpZHRoKS5qb2luKHQuZmlsbCkpKX0sZXZlbnRzOlsicmVzaXplIl19fSxaaT17cHJvcHM6e2NvbnRhaW5lcjpCb29sZWFufSxkYXRhOntjb250YWluZXI6ITB9LGNvbXB1dGVkOntjb250YWluZXI6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250YWluZXI7cmV0dXJuITA9PT1lJiZ0aGlzLiRjb250YWluZXJ8fGUmJlRlKGUpfX19LFFpPVtdLHRyPXttaXhpbnM6W2VpLFppLG5pXSxwcm9wczp7c2VsUGFuZWw6U3RyaW5nLHNlbENsb3NlOlN0cmluZyxlc2NDbG9zZTpCb29sZWFuLGJnQ2xvc2U6Qm9vbGVhbixzdGFjazpCb29sZWFufSxkYXRhOntjbHM6InVrLW9wZW4iLGVzY0Nsb3NlOiEwLGJnQ2xvc2U6ITAsb3ZlcmxheTohMCxzdGFjazohMX0sY29tcHV0ZWQ6e3BhbmVsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFRlKHQuc2VsUGFuZWwsZSl9LHRyYW5zaXRpb25FbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFuZWx9LGJnQ2xvc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYmdDbG9zZSYmdGhpcy5wYW5lbH19LGJlZm9yZURpc2Nvbm5lY3Q6ZnVuY3Rpb24oKXt0aGlzLmlzVG9nZ2xlZCgpJiZ0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwhMSl9LGV2ZW50czpbe25hbWU6ImNsaWNrIixkZWxlZ2F0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbENsb3NlfSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLmhpZGUoKX19LHtuYW1lOiJ0b2dnbGUiLHNlbGY6ITAsaGFuZGxlcjpmdW5jdGlvbih0KXt0LmRlZmF1bHRQcmV2ZW50ZWR8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGUoKSl9fSx7bmFtZToiYmVmb3Jlc2hvdyIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKHQpe2lmKGIoUWksdGhpcykpcmV0dXJuITE7IXRoaXMuc3RhY2smJlFpLmxlbmd0aD8obmUuYWxsKFFpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5oaWRlKCl9KSkudGhlbih0aGlzLnNob3cpLHQucHJldmVudERlZmF1bHQoKSk6UWkucHVzaCh0aGlzKX19LHtuYW1lOiJzaG93IixzZWxmOiEwLGhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgcj10aGlzO2FuKHdpbmRvdyktYW4oZG9jdW1lbnQpJiZ0aGlzLm92ZXJsYXkmJkxlKGRvY3VtZW50LmJvZHksIm92ZXJmbG93WSIsInNjcm9sbCIpLEFlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLmNsc1BhZ2UpLHRoaXMuYmdDbG9zZSYmWXQodGhpcy4kZWwsImhpZGUiLGxpKGRvY3VtZW50LCJjbGljayIsZnVuY3Rpb24odCl7dmFyIGU9dC5kZWZhdWx0UHJldmVudGVkLG49dC50YXJnZXQsaT1YKFFpKTtlfHxpIT09cnx8aS5vdmVybGF5JiYhV3QobixpLiRlbCl8fFd0KG4saS5wYW5lbCl8fGkuaGlkZSgpfSkse3NlbGY6ITB9KSx0aGlzLmVzY0Nsb3NlJiZZdCh0aGlzLiRlbCwiaGlkZSIsVnQoZG9jdW1lbnQsImtleWRvd24iLGZ1bmN0aW9uKHQpe3ZhciBlPVgoUWkpOzI3PT09dC5rZXlDb2RlJiZlPT09ciYmKHQucHJldmVudERlZmF1bHQoKSxlLmhpZGUoKSl9KSx7c2VsZjohMH0pfX0se25hbWU6ImhpZGRlbiIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztRaS5zcGxpY2UoUWkuaW5kZXhPZih0aGlzKSwxKSxRaS5sZW5ndGh8fExlKGRvY3VtZW50LmJvZHksIm92ZXJmbG93WSIsIiIpLFFpLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xzUGFnZT09PWUuY2xzUGFnZX0pfHxfZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy5jbHNQYWdlKX19XSxtZXRob2RzOnt0b2dnbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX0sc2hvdzpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuY29udGFpbmVyJiZ0aGlzLiRlbC5wYXJlbnROb2RlIT09dGhpcy5jb250YWluZXI/KHBlKHRoaXMuY29udGFpbmVyLHRoaXMuJGVsKSxuZXcgbmUoZnVuY3Rpb24odCl7cmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JldHVybiBlLnNob3coKS50aGVuKHQpfSl9KSk6dGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsLCEwLGVyKHRoaXMpKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwsITEsZXIodGhpcykpfX19O2Z1bmN0aW9uIGVyKHQpe3ZhciBzPXQudHJhbnNpdGlvbkVsZW1lbnQsYT10Ll90b2dnbGU7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7cmV0dXJuIG5ldyBuZShmdW5jdGlvbihuLGkpe3JldHVybiBZdChyLCJzaG93IGhpZGUiLGZ1bmN0aW9uKCl7ci5fcmVqZWN0JiZyLl9yZWplY3QoKSxyLl9yZWplY3Q9aSxhKHIsbyk7dmFyIHQ9WXQocywidHJhbnNpdGlvbnN0YXJ0IixmdW5jdGlvbigpe1l0KHMsInRyYW5zaXRpb25lbmQgdHJhbnNpdGlvbmNhbmNlbCIsbix7c2VsZjohMH0pLGNsZWFyVGltZW91dChlKX0se3NlbGY6ITB9KSxlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0KCksbigpfSxSKExlKHMsInRyYW5zaXRpb25EdXJhdGlvbiIpKSl9KX0pfX12YXIgbnI9e2luc3RhbGw6ZnVuY3Rpb24oYSl7YS5tb2RhbC5kaWFsb2c9ZnVuY3Rpb24odCxlKXt2YXIgbj1hLm1vZGFsKCcgPGRpdiBjbGFzcz0idWstbW9kYWwiPiA8ZGl2IGNsYXNzPSJ1ay1tb2RhbC1kaWFsb2ciPicrdCsiPC9kaXY+IDwvZGl2PiAiLGUpO3JldHVybiBuLnNob3coKSxWdChuLiRlbCwiaGlkZGVuIixmdW5jdGlvbigpe3JldHVybiBuZS5yZXNvbHZlKGZ1bmN0aW9uKCl7cmV0dXJuIG4uJGRlc3Ryb3koITApfSl9LHtzZWxmOiEwfSksbn0sYS5tb2RhbC5hbGVydD1mdW5jdGlvbihlLG4pe3JldHVybiBuPVUoe2JnQ2xvc2U6ITEsZXNjQ2xvc2U6ITEsbGFiZWxzOmEubW9kYWwubGFiZWxzfSxuKSxuZXcgbmUoZnVuY3Rpb24odCl7cmV0dXJuIFZ0KGEubW9kYWwuZGlhbG9nKCcgPGRpdiBjbGFzcz0idWstbW9kYWwtYm9keSI+JysoTyhlKT9lOmZlKGUpKSsnPC9kaXY+IDxkaXYgY2xhc3M9InVrLW1vZGFsLWZvb3RlciB1ay10ZXh0LXJpZ2h0Ij4gPGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLW1vZGFsLWNsb3NlIiBhdXRvZm9jdXM+JytuLmxhYmVscy5vaysiPC9idXR0b24+IDwvZGl2PiAiLG4pLiRlbCwiaGlkZSIsdCl9KX0sYS5tb2RhbC5jb25maXJtPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIG89VSh7YmdDbG9zZTohMSxlc2NDbG9zZTohMCxsYWJlbHM6YS5tb2RhbC5sYWJlbHN9LG8pLG5ldyBuZShmdW5jdGlvbihlLHQpe3ZhciBuPWEubW9kYWwuZGlhbG9nKCcgPGZvcm0+IDxkaXYgY2xhc3M9InVrLW1vZGFsLWJvZHkiPicrKE8ocik/cjpmZShyKSkrJzwvZGl2PiA8ZGl2IGNsYXNzPSJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodCI+IDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1tb2RhbC1jbG9zZSIgdHlwZT0iYnV0dG9uIj4nK28ubGFiZWxzLmNhbmNlbCsnPC9idXR0b24+IDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSIgYXV0b2ZvY3VzPicrby5sYWJlbHMub2srIjwvYnV0dG9uPiA8L2Rpdj4gPC9mb3JtPiAiLG8pLGk9ITE7VnQobi4kZWwsInN1Ym1pdCIsImZvcm0iLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxlKCksaT0hMCxuLmhpZGUoKX0pLFZ0KG4uJGVsLCJoaWRlIixmdW5jdGlvbigpe2l8fHQoKX0pfSl9LGEubW9kYWwucHJvbXB0PWZ1bmN0aW9uKHQsbyxzKXtyZXR1cm4gcz1VKHtiZ0Nsb3NlOiExLGVzY0Nsb3NlOiEwLGxhYmVsczphLm1vZGFsLmxhYmVsc30scyksbmV3IG5lKGZ1bmN0aW9uKGUpe3ZhciBuPWEubW9kYWwuZGlhbG9nKCcgPGZvcm0gY2xhc3M9InVrLWZvcm0tc3RhY2tlZCI+IDxkaXYgY2xhc3M9InVrLW1vZGFsLWJvZHkiPiA8bGFiZWw+JysoTyh0KT90OmZlKHQpKSsnPC9sYWJlbD4gPGlucHV0IGNsYXNzPSJ1ay1pbnB1dCIgYXV0b2ZvY3VzPiA8L2Rpdj4gPGRpdiBjbGFzcz0idWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHQiPiA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2UiIHR5cGU9ImJ1dHRvbiI+JytzLmxhYmVscy5jYW5jZWwrJzwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnkiPicrcy5sYWJlbHMub2srIjwvYnV0dG9uPiA8L2Rpdj4gPC9mb3JtPiAiLHMpLGk9VGUoImlucHV0IixuLiRlbCk7aS52YWx1ZT1vO3ZhciByPSExO1Z0KG4uJGVsLCJzdWJtaXQiLCJmb3JtIixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksZShpLnZhbHVlKSxyPSEwLG4uaGlkZSgpfSksVnQobi4kZWwsImhpZGUiLGZ1bmN0aW9uKCl7cnx8ZShudWxsKX0pfSl9LGEubW9kYWwubGFiZWxzPXtvazoiT2siLGNhbmNlbDoiQ2FuY2VsIn19LG1peGluczpbdHJdLGRhdGE6e2Nsc1BhZ2U6InVrLW1vZGFsLXBhZ2UiLHNlbFBhbmVsOiIudWstbW9kYWwtZGlhbG9nIixzZWxDbG9zZToiLnVrLW1vZGFsLWNsb3NlLCAudWstbW9kYWwtY2xvc2UtZGVmYXVsdCwgLnVrLW1vZGFsLWNsb3NlLW91dHNpZGUsIC51ay1tb2RhbC1jbG9zZS1mdWxsIn0sZXZlbnRzOlt7bmFtZToic2hvdyIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7T2UodGhpcy5wYW5lbCwidWstbWFyZ2luLWF1dG8tdmVydGljYWwiKT9BZSh0aGlzLiRlbCwidWstZmxleCIpOkxlKHRoaXMuJGVsLCJkaXNwbGF5IiwiYmxvY2siKSxzbih0aGlzLiRlbCl9fSx7bmFtZToiaGlkZGVuIixzZWxmOiEwLGhhbmRsZXI6ZnVuY3Rpb24oKXtMZSh0aGlzLiRlbCwiZGlzcGxheSIsIiIpLF9lKHRoaXMuJGVsLCJ1ay1mbGV4Iil9fV19O3ZhciBpcj17ZXh0ZW5kczppaSxkYXRhOnt0YXJnZXRzOiI+IC51ay1wYXJlbnQiLHRvZ2dsZToiPiBhIixjb250ZW50OiI+IHVsIn19LHJyPXttaXhpbnM6W2VpLGJpXSxwcm9wczp7ZHJvcGRvd246U3RyaW5nLG1vZGU6Imxpc3QiLGFsaWduOlN0cmluZyxvZmZzZXQ6TnVtYmVyLGJvdW5kYXJ5OkJvb2xlYW4sYm91bmRhcnlBbGlnbjpCb29sZWFuLGNsc0Ryb3A6U3RyaW5nLGRlbGF5U2hvdzpOdW1iZXIsZGVsYXlIaWRlOk51bWJlcixkcm9wYmFyOkJvb2xlYW4sZHJvcGJhck1vZGU6U3RyaW5nLGRyb3BiYXJBbmNob3I6Qm9vbGVhbixkdXJhdGlvbjpOdW1iZXJ9LGRhdGE6e2Ryb3Bkb3duOiIudWstbmF2YmFyLW5hdiA+IGxpIixhbGlnbjpodD8icmlnaHQiOiJsZWZ0IixjbHNEcm9wOiJ1ay1uYXZiYXItZHJvcGRvd24iLG1vZGU6dm9pZCAwLG9mZnNldDp2b2lkIDAsZGVsYXlTaG93OnZvaWQgMCxkZWxheUhpZGU6dm9pZCAwLGJvdW5kYXJ5QWxpZ246dm9pZCAwLGZsaXA6IngiLGJvdW5kYXJ5OiEwLGRyb3BiYXI6ITEsZHJvcGJhck1vZGU6InNsaWRlIixkcm9wYmFyQW5jaG9yOiExLGR1cmF0aW9uOjIwMCxmb3JjZUhlaWdodDohMCxzZWxNaW5IZWlnaHQ6Ii51ay1uYXZiYXItbmF2ID4gbGkgPiBhLCAudWstbmF2YmFyLWl0ZW0sIC51ay1uYXZiYXItdG9nZ2xlIn0sY29tcHV0ZWQ6e2JvdW5kYXJ5OmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5ib3VuZGFyeSxpPXQuYm91bmRhcnlBbGlnbjtyZXR1cm4hMD09PW58fGk/ZTpufSxkcm9wYmFyQW5jaG9yOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHd0KHQuZHJvcGJhckFuY2hvcixlKX0scG9zOmZ1bmN0aW9uKHQpe3JldHVybiJib3R0b20tIit0LmFsaWdufSxkcm9wZG93bnM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gRWUodC5kcm9wZG93bisiIC4iK3QuY2xzRHJvcCxlKX19LGJlZm9yZUNvbm5lY3Q6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRwcm9wcy5kcm9wYmFyO3RoaXMuZHJvcGJhcj10JiYod3QodCx0aGlzLiRlbCl8fFRlKCIrIC51ay1uYXZiYXItZHJvcGJhciIsdGhpcy4kZWwpfHxUZSgiPGRpdj48L2Rpdj4iKSksdGhpcy5kcm9wYmFyJiYoQWUodGhpcy5kcm9wYmFyLCJ1ay1uYXZiYXItZHJvcGJhciIpLCJzbGlkZSI9PT10aGlzLmRyb3BiYXJNb2RlJiZBZSh0aGlzLmRyb3BiYXIsInVrLW5hdmJhci1kcm9wYmFyLXNsaWRlIikpfSxkaXNjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmRyb3BiYXImJndlKHRoaXMuZHJvcGJhcil9LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kY3JlYXRlKCJkcm9wIix0aGlzLmRyb3Bkb3ducy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIWUuZ2V0RHJvcGRvd24odCl9KSxVKHt9LHRoaXMuJHByb3BzLHtib3VuZGFyeTp0aGlzLmJvdW5kYXJ5LHBvczp0aGlzLnBvcyxvZmZzZXQ6dGhpcy5kcm9wYmFyfHx0aGlzLm9mZnNldH0pKX0sZXZlbnRzOlt7bmFtZToibW91c2VvdmVyIixkZWxlZ2F0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyb3Bkb3dufSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY3VycmVudCxuPXRoaXMuZ2V0QWN0aXZlKCk7biYmbi50b2dnbGUmJiFXdChuLnRvZ2dsZS4kZWwsZSkmJiFuLnRyYWNrZXIubW92ZXNUbyhuLiRlbCkmJm4uaGlkZSghMSl9fSx7bmFtZToibW91c2VsZWF2ZSIsZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kcm9wYmFyfSxoYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRBY3RpdmUoKTt0JiYhdGhpcy5kcm9wZG93bnMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gX3QodCwiOmhvdmVyIil9KSYmdC5oaWRlKCl9fSx7bmFtZToiYmVmb3Jlc2hvdyIsY2FwdHVyZTohMCxmaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kcm9wYmFyfSxoYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5kcm9wYmFyLnBhcmVudE5vZGV8fGdlKHRoaXMuZHJvcGJhckFuY2hvcnx8dGhpcy4kZWwsdGhpcy5kcm9wYmFyKX19LHtuYW1lOiJzaG93IixjYXB0dXJlOiEwLGZpbHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyb3BiYXJ9LGhhbmRsZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLiRlbCxpPWUuZGlyO3RoaXMuY2xzRHJvcCYmQWUobix0aGlzLmNsc0Ryb3ArIi1kcm9wYmFyIiksImJvdHRvbSI9PT1pJiZ0aGlzLnRyYW5zaXRpb25UbyhuLm9mZnNldEhlaWdodCtGKExlKG4sIm1hcmdpblRvcCIpKStGKExlKG4sIm1hcmdpbkJvdHRvbSIpKSxuKX19LHtuYW1lOiJiZWZvcmVoaWRlIixmaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kcm9wYmFyfSxoYW5kbGVyOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS4kZWwsaT10aGlzLmdldEFjdGl2ZSgpO190KHRoaXMuZHJvcGJhciwiOmhvdmVyIikmJmkmJmkuJGVsPT09biYmdC5wcmV2ZW50RGVmYXVsdCgpfX0se25hbWU6ImhpZGUiLGZpbHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyb3BiYXJ9LGhhbmRsZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLiRlbCxpPXRoaXMuZ2V0QWN0aXZlKCk7KCFpfHxpJiZpLiRlbD09PW4pJiZ0aGlzLnRyYW5zaXRpb25UbygwKX19XSxtZXRob2RzOntnZXRBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRyb3Bkb3ducy5tYXAodGhpcy5nZXREcm9wZG93bikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmlzQWN0aXZlKCl9KVswXTtyZXR1cm4gdCYmYih0Lm1vZGUsImhvdmVyIikmJld0KHQudG9nZ2xlLiRlbCx0aGlzLiRlbCkmJnR9LHRyYW5zaXRpb25UbzpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLmRyb3BiYXIscj1IdChpKT9zbihpKTowO3JldHVybiBMZShlPXI8dCYmZSwiY2xpcCIsInJlY3QoMCwiK2Uub2Zmc2V0V2lkdGgrInB4LCIrcisicHgsMCkiKSxzbihpLHIpLFhlLmNhbmNlbChbZSxpXSksbmUuYWxsKFtYZS5zdGFydChpLHtoZWlnaHQ6dH0sdGhpcy5kdXJhdGlvbiksWGUuc3RhcnQoZSx7Y2xpcDoicmVjdCgwLCIrZS5vZmZzZXRXaWR0aCsicHgsIit0KyJweCwwKSJ9LHRoaXMuZHVyYXRpb24pXSkuY2F0Y2goUSkudGhlbihmdW5jdGlvbigpe0xlKGUse2NsaXA6IiJ9KSxuLiR1cGRhdGUoaSl9KX0sZ2V0RHJvcGRvd246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuJGdldENvbXBvbmVudCh0LCJkcm9wIil8fHRoaXMuJGdldENvbXBvbmVudCh0LCJkcm9wZG93biIpfX19LG9yPXttaXhpbnM6W3RyXSxhcmdzOiJtb2RlIixwcm9wczp7bW9kZTpTdHJpbmcsZmxpcDpCb29sZWFuLG92ZXJsYXk6Qm9vbGVhbn0sZGF0YTp7bW9kZToic2xpZGUiLGZsaXA6ITEsb3ZlcmxheTohMSxjbHNQYWdlOiJ1ay1vZmZjYW52YXMtcGFnZSIsY2xzQ29udGFpbmVyOiJ1ay1vZmZjYW52YXMtY29udGFpbmVyIixzZWxQYW5lbDoiLnVrLW9mZmNhbnZhcy1iYXIiLGNsc0ZsaXA6InVrLW9mZmNhbnZhcy1mbGlwIixjbHNDb250YWluZXJBbmltYXRpb246InVrLW9mZmNhbnZhcy1jb250YWluZXItYW5pbWF0aW9uIixjbHNTaWRlYmFyQW5pbWF0aW9uOiJ1ay1vZmZjYW52YXMtYmFyLWFuaW1hdGlvbiIsY2xzTW9kZToidWstb2ZmY2FudmFzIixjbHNPdmVybGF5OiJ1ay1vZmZjYW52YXMtb3ZlcmxheSIsc2VsQ2xvc2U6Ii51ay1vZmZjYW52YXMtY2xvc2UiLGNvbnRhaW5lcjohMX0sY29tcHV0ZWQ6e2Nsc0ZsaXA6ZnVuY3Rpb24odCl7dmFyIGU9dC5mbGlwLG49dC5jbHNGbGlwO3JldHVybiBlP246IiJ9LGNsc092ZXJsYXk6ZnVuY3Rpb24odCl7dmFyIGU9dC5vdmVybGF5LG49dC5jbHNPdmVybGF5O3JldHVybiBlP246IiJ9LGNsc01vZGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tb2RlO3JldHVybiB0LmNsc01vZGUrIi0iK2V9LGNsc1NpZGViYXJBbmltYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dC5tb2RlLG49dC5jbHNTaWRlYmFyQW5pbWF0aW9uO3JldHVybiJub25lIj09PWV8fCJyZXZlYWwiPT09ZT8iIjpufSxjbHNDb250YWluZXJBbmltYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dC5tb2RlLG49dC5jbHNDb250YWluZXJBbmltYXRpb247cmV0dXJuInB1c2giIT09ZSYmInJldmVhbCIhPT1lPyIiOm59LHRyYW5zaXRpb25FbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiJyZXZlYWwiPT09dC5tb2RlP3RoaXMucGFuZWwucGFyZW50Tm9kZTp0aGlzLnBhbmVsfX0sZXZlbnRzOlt7bmFtZToiY2xpY2siLGRlbGVnYXRlOmZ1bmN0aW9uKCl7cmV0dXJuJ2FbaHJlZl49IiMiXSd9LGhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9dC5jdXJyZW50Lmhhc2g7IXQuZGVmYXVsdFByZXZlbnRlZCYmZSYmVGUoZSxkb2N1bWVudC5ib2R5KSYmdGhpcy5oaWRlKCl9fSx7bmFtZToidG91Y2hzdGFydCIscGFzc2l2ZTohMCxlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbmVsfSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0VG91Y2hlczsxPT09ZS5sZW5ndGgmJih0aGlzLmNsaWVudFk9ZVswXS5jbGllbnRZKX19LHtuYW1lOiJ0b3VjaG1vdmUiLHNlbGY6ITAscGFzc2l2ZTohMSxmaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vdmVybGF5fSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3QuY2FuY2VsYWJsZSYmdC5wcmV2ZW50RGVmYXVsdCgpfX0se25hbWU6InRvdWNobW92ZSIscGFzc2l2ZTohMSxlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbmVsfSxoYW5kbGVyOmZ1bmN0aW9uKHQpe2lmKDE9PT10LnRhcmdldFRvdWNoZXMubGVuZ3RoKXt2YXIgZT1ldmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFktdGhpcy5jbGllbnRZLG49dGhpcy5wYW5lbCxpPW4uc2Nyb2xsVG9wLHI9bi5zY3JvbGxIZWlnaHQsbz1uLmNsaWVudEhlaWdodDsocjw9b3x8MD09PWkmJjA8ZXx8ci1pPD1vJiZlPDApJiZ0LmNhbmNlbGFibGUmJnQucHJldmVudERlZmF1bHQoKX19fSx7bmFtZToic2hvdyIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7InJldmVhbCIhPT10aGlzLm1vZGV8fE9lKHRoaXMucGFuZWwucGFyZW50Tm9kZSx0aGlzLmNsc01vZGUpfHwoYmUodGhpcy5wYW5lbCwiPGRpdj4iKSxBZSh0aGlzLnBhbmVsLnBhcmVudE5vZGUsdGhpcy5jbHNNb2RlKSksTGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJvdmVyZmxvd1kiLHRoaXMub3ZlcmxheT8iaGlkZGVuIjoiIiksQWUoZG9jdW1lbnQuYm9keSx0aGlzLmNsc0NvbnRhaW5lcix0aGlzLmNsc0ZsaXApLExlKGRvY3VtZW50LmJvZHksInRvdWNoLWFjdGlvbiIsInBhbi15IHBpbmNoLXpvb20iKSxMZSh0aGlzLiRlbCwiZGlzcGxheSIsImJsb2NrIiksQWUodGhpcy4kZWwsdGhpcy5jbHNPdmVybGF5KSxBZSh0aGlzLnBhbmVsLHRoaXMuY2xzU2lkZWJhckFuaW1hdGlvbiwicmV2ZWFsIiE9PXRoaXMubW9kZT90aGlzLmNsc01vZGU6IiIpLHNuKGRvY3VtZW50LmJvZHkpLEFlKGRvY3VtZW50LmJvZHksdGhpcy5jbHNDb250YWluZXJBbmltYXRpb24pLHRoaXMuY2xzQ29udGFpbmVyQW5pbWF0aW9uJiYoc3IoKS5jb250ZW50Kz0iLHVzZXItc2NhbGFibGU9MCIpfX0se25hbWU6ImhpZGUiLHNlbGY6ITAsaGFuZGxlcjpmdW5jdGlvbigpe19lKGRvY3VtZW50LmJvZHksdGhpcy5jbHNDb250YWluZXJBbmltYXRpb24pLExlKGRvY3VtZW50LmJvZHksInRvdWNoLWFjdGlvbiIsIiIpfX0se25hbWU6ImhpZGRlbiIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5jbHNDb250YWluZXJBbmltYXRpb24mJmZ1bmN0aW9uKCl7dmFyIHQ9c3IoKTt0LmNvbnRlbnQ9dC5jb250ZW50LnJlcGxhY2UoLyx1c2VyLXNjYWxhYmxlPTAkLywiIil9KCksInJldmVhbCI9PT10aGlzLm1vZGUmJnhlKHRoaXMucGFuZWwpLF9lKHRoaXMucGFuZWwsdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLHRoaXMuY2xzTW9kZSksX2UodGhpcy4kZWwsdGhpcy5jbHNPdmVybGF5KSxMZSh0aGlzLiRlbCwiZGlzcGxheSIsIiIpLF9lKGRvY3VtZW50LmJvZHksdGhpcy5jbHNDb250YWluZXIsdGhpcy5jbHNGbGlwKSxMZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIm92ZXJmbG93WSIsIiIpfX0se25hbWU6InN3aXBlTGVmdCBzd2lwZVJpZ2h0IixoYW5kbGVyOmZ1bmN0aW9uKHQpe3RoaXMuaXNUb2dnbGVkKCkmJnUodC50eXBlLCJMZWZ0IiledGhpcy5mbGlwJiZ0aGlzLmhpZGUoKX19XX07ZnVuY3Rpb24gc3IoKXtyZXR1cm4gVGUoJ21ldGFbbmFtZT0idmlld3BvcnQiXScsZG9jdW1lbnQuaGVhZCl8fHBlKGRvY3VtZW50LmhlYWQsJzxtZXRhIG5hbWU9InZpZXdwb3J0Ij4nKX12YXIgYXI9e21peGluczpbZWldLHByb3BzOntzZWxDb250YWluZXI6U3RyaW5nLHNlbENvbnRlbnQ6U3RyaW5nfSxkYXRhOntzZWxDb250YWluZXI6Ii51ay1tb2RhbCIsc2VsQ29udGVudDoiLnVrLW1vZGFsLWRpYWxvZyJ9LGNvbXB1dGVkOntjb250YWluZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTXQoZSx0LnNlbENvbnRhaW5lcil9LGNvbnRlbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTXQoZSx0LnNlbENvbnRlbnQpfX0sY29ubmVjdGVkOmZ1bmN0aW9uKCl7TGUodGhpcy4kZWwsIm1pbkhlaWdodCIsMTUwKX0sdXBkYXRlOntyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5jb250ZW50fHwhdGhpcy5jb250YWluZXIpJiZ7Y3VycmVudDpGKExlKHRoaXMuJGVsLCJtYXhIZWlnaHQiKSksbWF4Ok1hdGgubWF4KDE1MCxzbih0aGlzLmNvbnRhaW5lciktKG5uKHRoaXMuY29udGVudCkuaGVpZ2h0LXNuKHRoaXMuJGVsKSkpfX0sd3JpdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jdXJyZW50LG49dC5tYXg7TGUodGhpcy4kZWwsIm1heEhlaWdodCIsbiksTWF0aC5yb3VuZChlKSE9PU1hdGgucm91bmQobikmJnF0KHRoaXMuJGVsLCJyZXNpemUiKX0sZXZlbnRzOlsicmVzaXplIl19fSxocj17cHJvcHM6WyJ3aWR0aCIsImhlaWdodCJdLGNvbm5lY3RlZDpmdW5jdGlvbigpe0FlKHRoaXMuJGVsLCJ1ay1yZXNwb25zaXZlLXdpZHRoIil9LHVwZGF0ZTp7cmVhZDpmdW5jdGlvbigpe3JldHVybiEhKEh0KHRoaXMuJGVsKSYmdGhpcy53aWR0aCYmdGhpcy5oZWlnaHQpJiZ7d2lkdGg6YW4odGhpcy4kZWwucGFyZW50Tm9kZSksaGVpZ2h0OnRoaXMuaGVpZ2h0fX0sd3JpdGU6ZnVuY3Rpb24odCl7c24odGhpcy4kZWwsbnQuY29udGFpbih7aGVpZ2h0OnRoaXMuaGVpZ2h0LHdpZHRoOnRoaXMud2lkdGh9LHQpLmhlaWdodCl9LGV2ZW50czpbInJlc2l6ZSJdfX0sY3I9e3Byb3BzOntkdXJhdGlvbjpOdW1iZXIsb2Zmc2V0Ok51bWJlcn0sZGF0YTp7ZHVyYXRpb246MWUzLG9mZnNldDowfSxtZXRob2RzOntzY3JvbGxUbzpmdW5jdGlvbihlKXt2YXIgbj10aGlzO2U9ZSYmVGUoZSl8fGRvY3VtZW50LmJvZHk7dmFyIHQ9c24oZG9jdW1lbnQpLGk9c24od2luZG93KSxyPW5uKGUpLnRvcC10aGlzLm9mZnNldDtpZih0PHIraSYmKHI9dC1pKSxxdCh0aGlzLiRlbCwiYmVmb3Jlc2Nyb2xsIixbdGhpcyxlXSkpe3ZhciBvPURhdGUubm93KCkscz13aW5kb3cucGFnZVlPZmZzZXQsYT1mdW5jdGlvbigpe3ZhciB0PXMrKHItcykqZnVuY3Rpb24odCl7cmV0dXJuLjUqKDEtTWF0aC5jb3MoTWF0aC5QSSp0KSl9KFooKERhdGUubm93KCktbykvbi5kdXJhdGlvbikpO2duKHdpbmRvdyx0KSx0IT09cj9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSk6cXQobi4kZWwsInNjcm9sbGVkIixbbixlXSl9O2EoKX19fSxldmVudHM6e2NsaWNrOmZ1bmN0aW9uKHQpe3QuZGVmYXVsdFByZXZlbnRlZHx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLnNjcm9sbFRvKHp0KGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLiRlbC5oYXNoKSkuc3Vic3RyKDEpKSl9fX07dmFyIHVyPXthcmdzOiJjbHMiLHByb3BzOntjbHM6U3RyaW5nLHRhcmdldDpTdHJpbmcsaGlkZGVuOkJvb2xlYW4sb2Zmc2V0VG9wOk51bWJlcixvZmZzZXRMZWZ0Ok51bWJlcixyZXBlYXQ6Qm9vbGVhbixkZWxheTpOdW1iZXJ9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y2xzOiExLHRhcmdldDohMSxoaWRkZW46ITAsb2Zmc2V0VG9wOjAsb2Zmc2V0TGVmdDowLHJlcGVhdDohMSxkZWxheTowLGluVmlld0NsYXNzOiJ1ay1zY3JvbGxzcHktaW52aWV3In19LGNvbXB1dGVkOntlbGVtZW50czpmdW5jdGlvbih0LGUpe3ZhciBuPXQudGFyZ2V0O3JldHVybiBuP0VlKG4sZSk6W2VdfX0sdXBkYXRlOlt7d3JpdGU6ZnVuY3Rpb24oKXt0aGlzLmhpZGRlbiYmTGUoanQodGhpcy5lbGVtZW50cywiOm5vdCguIit0aGlzLmluVmlld0NsYXNzKyIpIiksInZpc2liaWxpdHkiLCJoaWRkZW4iKX19LHtyZWFkOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7dC51cGRhdGUmJnRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10Ll91a1Njcm9sbHNweVN0YXRlOyhlPWV8fHtjbHM6c3QodCwidWstc2Nyb2xsc3B5LWNsYXNzIil8fG4uY2xzfSkuc2hvdz1wbih0LG4ub2Zmc2V0VG9wLG4ub2Zmc2V0TGVmdCksdC5fdWtTY3JvbGxzcHlTdGF0ZT1lfSl9LHdyaXRlOmZ1bmN0aW9uKHIpe3ZhciBvPXRoaXM7aWYoIXIudXBkYXRlKXJldHVybiB0aGlzLiRlbWl0KCksci51cGRhdGU9ITA7dGhpcy5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuX3VrU2Nyb2xsc3B5U3RhdGUsZT1uLmNscztpZighbi5zaG93fHxuLmludmlld3x8bi5xdWV1ZWQpe2lmKCFuLnNob3cmJihuLmludmlld3x8bi5xdWV1ZWQpJiZvLnJlcGVhdCl7aWYobi5hYm9ydCYmbi5hYm9ydCgpLCFuLmludmlldylyZXR1cm47TGUodCwidmlzaWJpbGl0eSIsby5oaWRkZW4/ImhpZGRlbiI6IiIpLF9lKHQsby5pblZpZXdDbGFzcyksRGUodCxlKSxxdCh0LCJvdXR2aWV3Iiksby4kdXBkYXRlKHQpLG4uaW52aWV3PSExfX1lbHNle3ZhciBpPWZ1bmN0aW9uKCl7TGUodCwidmlzaWJpbGl0eSIsIiIpLEFlKHQsby5pblZpZXdDbGFzcyksRGUodCxlKSxxdCh0LCJpbnZpZXciKSxvLiR1cGRhdGUodCksbi5pbnZpZXc9ITAsbi5hYm9ydCYmbi5hYm9ydCgpfTtvLmRlbGF5PyhuLnF1ZXVlZD0hMCxyLnByb21pc2U9KHIucHJvbWlzZXx8bmUucmVzb2x2ZSgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIW4uaW52aWV3JiZuZXcgbmUoZnVuY3Rpb24odCl7dmFyIGU9c2V0VGltZW91dChmdW5jdGlvbigpe2koKSx0KCl9LHIucHJvbWlzZXx8MT09PW8uZWxlbWVudHMubGVuZ3RoP28uZGVsYXk6MCk7bi5hYm9ydD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChlKSx0KCksbi5xdWV1ZWQ9ITF9fSl9KSk6aSgpfX0pfSxldmVudHM6WyJzY3JvbGwiLCJyZXNpemUiXX1dfSxscj17cHJvcHM6e2NsczpTdHJpbmcsY2xvc2VzdDpTdHJpbmcsc2Nyb2xsOkJvb2xlYW4sb3ZlcmZsb3c6Qm9vbGVhbixvZmZzZXQ6TnVtYmVyfSxkYXRhOntjbHM6InVrLWFjdGl2ZSIsY2xvc2VzdDohMSxzY3JvbGw6ITEsb3ZlcmZsb3c6ITAsb2Zmc2V0OjB9LGNvbXB1dGVkOntsaW5rczpmdW5jdGlvbih0LGUpe3JldHVybiBFZSgnYVtocmVmXj0iIyJdJyxlKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGFzaH0pfSxlbGVtZW50czpmdW5jdGlvbih0KXt2YXIgZT10LmNsb3Nlc3Q7cmV0dXJuIE10KHRoaXMubGlua3MsZXx8IioiKX0sdGFyZ2V0czpmdW5jdGlvbigpe3JldHVybiBFZSh0aGlzLmxpbmtzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4genQodC5oYXNoKS5zdWJzdHIoMSl9KS5qb2luKCIsIikpfX0sdXBkYXRlOlt7cmVhZDpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsJiZ0aGlzLiRjcmVhdGUoInNjcm9sbCIsdGhpcy5saW5rcyx7b2Zmc2V0OnRoaXMub2Zmc2V0fHwwfSl9fSx7cmVhZDpmdW5jdGlvbihvKXt2YXIgcz10aGlzLGE9d2luZG93LnBhZ2VZT2Zmc2V0K3RoaXMub2Zmc2V0KzEsaD1zbihkb2N1bWVudCktc24od2luZG93KSt0aGlzLm9mZnNldDtvLmFjdGl2ZT0hMSx0aGlzLnRhcmdldHMuZXZlcnkoZnVuY3Rpb24odCxlKXt2YXIgbj1ubih0KS50b3AsaT1lKzE9PT1zLnRhcmdldHMubGVuZ3RoO2lmKCFzLm92ZXJmbG93JiYoMD09PWUmJmE8bnx8aSYmbit0Lm9mZnNldFRvcDxhKSlyZXR1cm4hMTtpZighaSYmbm4ocy50YXJnZXRzW2UrMV0pLnRvcDw9YSlyZXR1cm4hMDtpZihoPD1hKWZvcih2YXIgcj1zLnRhcmdldHMubGVuZ3RoLTE7ZTxyO3ItLSlpZihwbihzLnRhcmdldHNbcl0pKXt0PXMudGFyZ2V0c1tyXTticmVha31yZXR1cm4hKG8uYWN0aXZlPVRlKGp0KHMubGlua3MsJ1tocmVmPSIjJyt0LmlkKyciXScpKSl9KX0sd3JpdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5hY3RpdmU7dGhpcy5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJsdXIoKX0pLF9lKHRoaXMuZWxlbWVudHMsdGhpcy5jbHMpLGUmJnF0KHRoaXMuJGVsLCJhY3RpdmUiLFtlLEFlKHRoaXMuY2xvc2VzdD9NdChlLHRoaXMuY2xvc2VzdCk6ZSx0aGlzLmNscyldKX0sZXZlbnRzOlsic2Nyb2xsIiwicmVzaXplIl19XX0sZHI9e21peGluczpbZWksR2ldLHByb3BzOnt0b3A6bnVsbCxib3R0b206Qm9vbGVhbixvZmZzZXQ6U3RyaW5nLGFuaW1hdGlvbjpTdHJpbmcsY2xzQWN0aXZlOlN0cmluZyxjbHNJbmFjdGl2ZTpTdHJpbmcsY2xzRml4ZWQ6U3RyaW5nLGNsc0JlbG93OlN0cmluZyxzZWxUYXJnZXQ6U3RyaW5nLHdpZHRoRWxlbWVudDpCb29sZWFuLHNob3dPblVwOkJvb2xlYW4sdGFyZ2V0T2Zmc2V0Ok51bWJlcn0sZGF0YTp7dG9wOjAsYm90dG9tOiExLG9mZnNldDowLGFuaW1hdGlvbjoiIixjbHNBY3RpdmU6InVrLWFjdGl2ZSIsY2xzSW5hY3RpdmU6IiIsY2xzRml4ZWQ6InVrLXN0aWNreS1maXhlZCIsY2xzQmVsb3c6InVrLXN0aWNreS1iZWxvdyIsc2VsVGFyZ2V0OiIiLHdpZHRoRWxlbWVudDohMSxzaG93T25VcDohMSx0YXJnZXRPZmZzZXQ6ITF9LGNvbXB1dGVkOntvZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHduKHQub2Zmc2V0KX0sc2VsVGFyZ2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zZWxUYXJnZXQ7cmV0dXJuIG4mJlRlKG4sZSl8fGV9LHdpZHRoRWxlbWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB3dCh0LndpZHRoRWxlbWVudCxlKXx8dGhpcy5wbGFjZWhvbGRlcn0saXNBY3RpdmU6e2dldDpmdW5jdGlvbigpe3JldHVybiBPZSh0aGlzLnNlbFRhcmdldCx0aGlzLmNsc0FjdGl2ZSl9LHNldDpmdW5jdGlvbih0KXt0JiYhdGhpcy5pc0FjdGl2ZT8oTWUodGhpcy5zZWxUYXJnZXQsdGhpcy5jbHNJbmFjdGl2ZSx0aGlzLmNsc0FjdGl2ZSkscXQodGhpcy4kZWwsImFjdGl2ZSIpKTp0fHxPZSh0aGlzLnNlbFRhcmdldCx0aGlzLmNsc0luYWN0aXZlKXx8KE1lKHRoaXMuc2VsVGFyZ2V0LHRoaXMuY2xzQWN0aXZlLHRoaXMuY2xzSW5hY3RpdmUpLHF0KHRoaXMuJGVsLCJpbmFjdGl2ZSIpKX19fSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnBsYWNlaG9sZGVyPVRlKCIrIC51ay1zdGlja3ktcGxhY2Vob2xkZXIiLHRoaXMuJGVsKXx8VGUoJzxkaXYgY2xhc3M9InVrLXN0aWNreS1wbGFjZWhvbGRlciI+PC9kaXY+JyksdGhpcy5pc0ZpeGVkPSExLHRoaXMuaXNBY3RpdmU9ITF9LGRpc2Nvbm5lY3RlZDpmdW5jdGlvbigpe3RoaXMuaXNGaXhlZCYmKHRoaXMuaGlkZSgpLF9lKHRoaXMuc2VsVGFyZ2V0LHRoaXMuY2xzSW5hY3RpdmUpKSx3ZSh0aGlzLnBsYWNlaG9sZGVyKSx0aGlzLnBsYWNlaG9sZGVyPW51bGwsdGhpcy53aWR0aEVsZW1lbnQ9bnVsbH0sZXZlbnRzOlt7bmFtZToibG9hZCBoYXNoY2hhbmdlIHBvcHN0YXRlIixlbDp3aW5kb3csaGFuZGxlcjpmdW5jdGlvbigpe3ZhciBpPXRoaXM7aWYoITEhPT10aGlzLnRhcmdldE9mZnNldCYmbG9jYXRpb24uaGFzaCYmMDx3aW5kb3cucGFnZVlPZmZzZXQpe3ZhciByPVRlKGxvY2F0aW9uLmhhc2gpO3ImJmtuLnJlYWQoZnVuY3Rpb24oKXt2YXIgdD1ubihyKS50b3AsZT1ubihpLiRlbCkudG9wLG49aS4kZWwub2Zmc2V0SGVpZ2h0O2kuaXNGaXhlZCYmdDw9ZStuJiZlPD10K3Iub2Zmc2V0SGVpZ2h0JiZnbih3aW5kb3csdC1uLSh6KGkudGFyZ2V0T2Zmc2V0KT9pLnRhcmdldE9mZnNldDowKS1pLm9mZnNldCl9KX19fV0sdXBkYXRlOlt7cmVhZDpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaGVpZ2h0O3RoaXMuaXNBY3RpdmUmJiJ1cGRhdGUiIT09ZSYmKHRoaXMuaGlkZSgpLG49dGhpcy4kZWwub2Zmc2V0SGVpZ2h0LHRoaXMuc2hvdygpKSxuPXRoaXMuaXNBY3RpdmU/bjp0aGlzLiRlbC5vZmZzZXRIZWlnaHQsdGhpcy50b3BPZmZzZXQ9bm4odGhpcy5pc0ZpeGVkP3RoaXMucGxhY2Vob2xkZXI6dGhpcy4kZWwpLnRvcCx0aGlzLmJvdHRvbU9mZnNldD10aGlzLnRvcE9mZnNldCtuO3ZhciBpPWZyKCJib3R0b20iLHRoaXMpO3JldHVybiB0aGlzLnRvcD1NYXRoLm1heChGKGZyKCJ0b3AiLHRoaXMpKSx0aGlzLnRvcE9mZnNldCktdGhpcy5vZmZzZXQsdGhpcy5ib3R0b209aSYmaS1uLHRoaXMuaW5hY3RpdmU9IXRoaXMubWF0Y2hNZWRpYSx7bGFzdFNjcm9sbDohMSxoZWlnaHQ6bixtYXJnaW5zOkxlKHRoaXMuJGVsLFsibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0pfX0sd3JpdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5oZWlnaHQsbj10Lm1hcmdpbnMsaT10aGlzLnBsYWNlaG9sZGVyO0xlKGksVSh7aGVpZ2h0OmV9LG4pKSxXdChpLGRvY3VtZW50KXx8KGdlKHRoaXMuJGVsLGkpLGl0KGksImhpZGRlbiIsIiIpKSx0aGlzLmlzQWN0aXZlPXRoaXMuaXNBY3RpdmV9LGV2ZW50czpbInJlc2l6ZSJdfSx7cmVhZDpmdW5jdGlvbih0KXt2YXIgZT10LnNjcm9sbDtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdGhpcy53aWR0aD0oSHQodGhpcy53aWR0aEVsZW1lbnQpP3RoaXMud2lkdGhFbGVtZW50OnRoaXMuJGVsKS5vZmZzZXRXaWR0aCx0aGlzLnNjcm9sbD13aW5kb3cucGFnZVlPZmZzZXQse2RpcjplPD10aGlzLnNjcm9sbD8iZG93biI6InVwIixzY3JvbGw6dGhpcy5zY3JvbGwsdmlzaWJsZTpIdCh0aGlzLiRlbCksdG9wOnZuKHRoaXMucGxhY2Vob2xkZXIpWzBdfX0sd3JpdGU6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9dC5pbml0VGltZXN0YW1wO3ZvaWQgMD09PWkmJihpPTApO3ZhciByPXQuZGlyLG89dC5sYXN0RGlyLHM9dC5sYXN0U2Nyb2xsLGE9dC5zY3JvbGwsaD10LnRvcCxjPXQudmlzaWJsZSx1PXBlcmZvcm1hbmNlLm5vdygpO2lmKCEoKHQubGFzdFNjcm9sbD1hKTwwfHxhPT09c3x8IWN8fHRoaXMuZGlzYWJsZWR8fHRoaXMuc2hvd09uVXAmJiJzY3JvbGwiIT09ZXx8KCgzMDA8dS1pfHxyIT09bykmJih0LmluaXRTY3JvbGw9YSx0LmluaXRUaW1lc3RhbXA9dSksdC5sYXN0RGlyPXIsdGhpcy5zaG93T25VcCYmTWF0aC5hYnModC5pbml0U2Nyb2xsLWEpPD0zMCYmTWF0aC5hYnMocy1hKTw9MTApKSlpZih0aGlzLmluYWN0aXZlfHxhPHRoaXMudG9wfHx0aGlzLnNob3dPblVwJiYoYTw9dGhpcy50b3B8fCJkb3duIj09PXJ8fCJ1cCI9PT1yJiYhdGhpcy5pc0ZpeGVkJiZhPD10aGlzLmJvdHRvbU9mZnNldCkpe2lmKCF0aGlzLmlzRml4ZWQpcmV0dXJuIHZvaWQoUWUuaW5Qcm9ncmVzcyh0aGlzLiRlbCkmJmE8aCYmKFFlLmNhbmNlbCh0aGlzLiRlbCksdGhpcy5oaWRlKCkpKTt0aGlzLmlzRml4ZWQ9ITEsdGhpcy5hbmltYXRpb24mJmE+dGhpcy50b3BPZmZzZXQ/KFFlLmNhbmNlbCh0aGlzLiRlbCksUWUub3V0KHRoaXMuJGVsLHRoaXMuYW5pbWF0aW9uKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG4uaGlkZSgpfSxRKSk6dGhpcy5oaWRlKCl9ZWxzZSB0aGlzLmlzRml4ZWQ/dGhpcy51cGRhdGUoKTp0aGlzLmFuaW1hdGlvbj8oUWUuY2FuY2VsKHRoaXMuJGVsKSx0aGlzLnNob3coKSxRZS5pbih0aGlzLiRlbCx0aGlzLmFuaW1hdGlvbikuY2F0Y2goUSkpOnRoaXMuc2hvdygpfSxldmVudHM6WyJyZXNpemUiLCJzY3JvbGwiXX1dLG1ldGhvZHM6e3Nob3c6ZnVuY3Rpb24oKXt0aGlzLmlzRml4ZWQ9ITAsdGhpcy51cGRhdGUoKSxpdCh0aGlzLnBsYWNlaG9sZGVyLCJoaWRkZW4iLG51bGwpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5pc0FjdGl2ZT0hMSxfZSh0aGlzLiRlbCx0aGlzLmNsc0ZpeGVkLHRoaXMuY2xzQmVsb3cpLExlKHRoaXMuJGVsLHtwb3NpdGlvbjoiIix0b3A6IiIsd2lkdGg6IiJ9KSxpdCh0aGlzLnBsYWNlaG9sZGVyLCJoaWRkZW4iLCIiKX0sdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9MCE9PXRoaXMudG9wfHx0aGlzLnNjcm9sbD50aGlzLnRvcCxlPU1hdGgubWF4KDAsdGhpcy5vZmZzZXQpO3RoaXMuYm90dG9tJiZ0aGlzLnNjcm9sbD50aGlzLmJvdHRvbS10aGlzLm9mZnNldCYmKGU9dGhpcy5ib3R0b20tdGhpcy5zY3JvbGwpLExlKHRoaXMuJGVsLHtwb3NpdGlvbjoiZml4ZWQiLHRvcDplKyJweCIsd2lkdGg6dGhpcy53aWR0aH0pLHRoaXMuaXNBY3RpdmU9dCxEZSh0aGlzLiRlbCx0aGlzLmNsc0JlbG93LHRoaXMuc2Nyb2xsPnRoaXMuYm90dG9tT2Zmc2V0KSxBZSh0aGlzLiRlbCx0aGlzLmNsc0ZpeGVkKX19fTtmdW5jdGlvbiBmcih0LGUpe3ZhciBuPWUuJHByb3BzLGk9ZS4kZWwscj1lW3QrIk9mZnNldCJdLG89blt0XTtpZihvKXJldHVybiB6KG8pJiZPKG8pJiZvLm1hdGNoKC9eLT9cZC8pP3Ird24obyk6bm4oITA9PT1vP2kucGFyZW50Tm9kZTp3dChvLGkpKS5ib3R0b219dmFyIHByLG1yPXttaXhpbnM6W25pXSxhcmdzOiJjb25uZWN0Iixwcm9wczp7Y29ubmVjdDpTdHJpbmcsdG9nZ2xlOlN0cmluZyxhY3RpdmU6TnVtYmVyLHN3aXBpbmc6Qm9vbGVhbn0sZGF0YTp7Y29ubmVjdDoifi51ay1zd2l0Y2hlciIsdG9nZ2xlOiI+ICogPiA6Zmlyc3QtY2hpbGQiLGFjdGl2ZTowLHN3aXBpbmc6ITAsY2xzOiJ1ay1hY3RpdmUiLGNsc0NvbnRhaW5lcjoidWstc3dpdGNoZXIiLGF0dHJJdGVtOiJ1ay1zd2l0Y2hlci1pdGVtIixxdWV1ZWQ6ITB9LGNvbXB1dGVkOntjb25uZWN0czpmdW5jdGlvbih0LGUpe3JldHVybiBidCh0LmNvbm5lY3QsZSl9LHRvZ2dsZXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gRWUodC50b2dnbGUsZSl9fSxldmVudHM6W3tuYW1lOiJjbGljayIsZGVsZWdhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2dnbGUrIjpub3QoLnVrLWRpc2FibGVkKSJ9LGhhbmRsZXI6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2hvdyhXKHRoaXMuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIFd0KGUuY3VycmVudCx0KX0pWzBdKX19LHtuYW1lOiJjbGljayIsZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25uZWN0c30sZGVsZWdhdGU6ZnVuY3Rpb24oKXtyZXR1cm4iWyIrdGhpcy5hdHRySXRlbSsiXSxbZGF0YS0iK3RoaXMuYXR0ckl0ZW0rIl0ifSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLnNob3coc3QodC5jdXJyZW50LHRoaXMuYXR0ckl0ZW0pKX19LHtuYW1lOiJzd2lwZVJpZ2h0IHN3aXBlTGVmdCIsZmlsdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3dpcGluZ30sZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25uZWN0c30saGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGU7dGhpcy5zaG93KHUoZSwiTGVmdCIpPyJuZXh0IjoicHJldmlvdXMiKX19XSx1cGRhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuY29ubmVjdHMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS51cGRhdGVBcmlhKHQuY2hpbGRyZW4pfSk7dmFyIHQ9dGhpcy4kZWwuY2hpbGRyZW47dGhpcy5zaG93KGp0KHQsIi4iK3RoaXMuY2xzKVswXXx8dFt0aGlzLmFjdGl2ZV18fHRbMF0pLHRoaXMuc3dpcGluZyYmTGUodGhpcy5jb25uZWN0cywidG91Y2gtYWN0aW9uIiwicGFuLXkgcGluY2gtem9vbSIpfSxtZXRob2RzOntpbmRleDpmdW5jdGlvbigpe3JldHVybiFCKHRoaXMuY29ubmVjdHMpJiZ1ZShqdCh0aGlzLmNvbm5lY3RzWzBdLmNoaWxkcmVuLCIuIit0aGlzLmNscylbMF0pfSxzaG93OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLGk9dGhpcyxyPXRoaXMuJGVsLmNoaWxkcmVuLG89ci5sZW5ndGgscz10aGlzLmluZGV4KCksYT0wPD1zLGg9InByZXZpb3VzIj09PXQ/LTE6MSxjPWxlKHQscixzKSx1PTA7dTxvO3UrKyxjPShjK2grbyklbylpZighX3QodGhpcy50b2dnbGVzW2NdLCIudWstZGlzYWJsZWQgKiwgLnVrLWRpc2FibGVkLCBbZGlzYWJsZWRdIikpe2U9dGhpcy50b2dnbGVzW2NdLG49cltjXTticmVha30hbnx8MDw9cyYmT2Uobix0aGlzLmNscyl8fHM9PT1jfHwoX2Uocix0aGlzLmNscyksQWUobix0aGlzLmNscyksaXQodGhpcy50b2dnbGVzLCJhcmlhLWV4cGFuZGVkIiwhMSksaXQoZSwiYXJpYS1leHBhbmRlZCIsITApLHRoaXMuY29ubmVjdHMuZm9yRWFjaChmdW5jdGlvbih0KXthP2kudG9nZ2xlRWxlbWVudChbdC5jaGlsZHJlbltzXSx0LmNoaWxkcmVuW2NdXSk6aS50b2dnbGVOb3codC5jaGlsZHJlbltjXSl9KSl9fX0sZ3I9e21peGluczpbZWldLGV4dGVuZHM6bXIscHJvcHM6e21lZGlhOkJvb2xlYW59LGRhdGE6e21lZGlhOjk2MCxhdHRySXRlbToidWstdGFiLWl0ZW0ifSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgdD1PZSh0aGlzLiRlbCwidWstdGFiLWxlZnQiKT8idWstdGFiLWxlZnQiOiEhT2UodGhpcy4kZWwsInVrLXRhYi1yaWdodCIpJiYidWstdGFiLXJpZ2h0Ijt0JiZ0aGlzLiRjcmVhdGUoInRvZ2dsZSIsdGhpcy4kZWwse2Nsczp0LG1vZGU6Im1lZGlhIixtZWRpYTp0aGlzLm1lZGlhfSl9fSx2cj17bWl4aW5zOltHaSxuaV0sYXJnczoidGFyZ2V0Iixwcm9wczp7aHJlZjpTdHJpbmcsdGFyZ2V0Om51bGwsbW9kZToibGlzdCJ9LGRhdGE6e2hyZWY6ITEsdGFyZ2V0OiExLG1vZGU6ImNsaWNrIixxdWV1ZWQ6ITB9LGNvbXB1dGVkOnt0YXJnZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmhyZWYsaT10LnRhcmdldDtyZXR1cm4oaT1idChpfHxuLGUpKS5sZW5ndGgmJml8fFtlXX19LGNvbm5lY3RlZDpmdW5jdGlvbigpe3F0KHRoaXMudGFyZ2V0LCJ1cGRhdGVhcmlhIixbdGhpc10pfSxldmVudHM6W3tuYW1lOm10KyIgIitndCxmaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gYih0aGlzLm1vZGUsImhvdmVyIil9LGhhbmRsZXI6ZnVuY3Rpb24odCl7UXQodCl8fHRoaXMudG9nZ2xlKCJ0b2dnbGUiKyh0LnR5cGU9PT1tdD8ic2hvdyI6ImhpZGUiKSl9fSx7bmFtZToiY2xpY2siLGZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBiKHRoaXMubW9kZSwiY2xpY2siKXx8bHQmJmIodGhpcy5tb2RlLCJob3ZlciIpfSxoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlOyhNdCh0LnRhcmdldCwnYVtocmVmPSIjIl0sIGFbaHJlZj0iIl0nKXx8KGU9TXQodC50YXJnZXQsImFbaHJlZl0iKSkmJih0aGlzLmNsc3x8IUh0KHRoaXMudGFyZ2V0KXx8ZS5oYXNoJiZfdCh0aGlzLnRhcmdldCxlLmhhc2gpKSkmJnQucHJldmVudERlZmF1bHQoKSx0aGlzLnRvZ2dsZSgpfX1dLHVwZGF0ZTp7cmVhZDpmdW5jdGlvbigpe3JldHVybiEoIWIodGhpcy5tb2RlLCJtZWRpYSIpfHwhdGhpcy5tZWRpYSkmJnttYXRjaDp0aGlzLm1hdGNoTWVkaWF9fSx3cml0ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoLG49dGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpOyhlPyFuOm4pJiZ0aGlzLnRvZ2dsZSgpfSxldmVudHM6WyJyZXNpemUiXX0sbWV0aG9kczp7dG9nZ2xlOmZ1bmN0aW9uKHQpe3F0KHRoaXMudGFyZ2V0LHR8fCJ0b2dnbGUiLFt0aGlzXSkmJnRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLnRhcmdldCl9fX07TG4udmVyc2lvbj0iMy4yLjAiLChwcj1MbikuY29tcG9uZW50KCJhY2NvcmRpb24iLGlpKSxwci5jb21wb25lbnQoImFsZXJ0IixyaSkscHIuY29tcG9uZW50KCJjb3ZlciIsaGkpLHByLmNvbXBvbmVudCgiZHJvcCIsdWkpLHByLmNvbXBvbmVudCgiZHJvcGRvd24iLGRpKSxwci5jb21wb25lbnQoImZvcm1DdXN0b20iLGZpKSxwci5jb21wb25lbnQoImdpZiIscGkpLHByLmNvbXBvbmVudCgiZ3JpZCIsd2kpLHByLmNvbXBvbmVudCgiaGVpZ2h0TWF0Y2giLHlpKSxwci5jb21wb25lbnQoImhlaWdodFZpZXdwb3J0IiwkaSkscHIuY29tcG9uZW50KCJpY29uIixPaSkscHIuY29tcG9uZW50KCJpbWciLExpKSxwci5jb21wb25lbnQoImxlYWRlciIsSmkpLHByLmNvbXBvbmVudCgibWFyZ2luIixtaSkscHIuY29tcG9uZW50KCJtb2RhbCIsbnIpLHByLmNvbXBvbmVudCgibmF2IixpcikscHIuY29tcG9uZW50KCJuYXZiYXIiLHJyKSxwci5jb21wb25lbnQoIm9mZmNhbnZhcyIsb3IpLHByLmNvbXBvbmVudCgib3ZlcmZsb3dBdXRvIixhcikscHIuY29tcG9uZW50KCJyZXNwb25zaXZlIixocikscHIuY29tcG9uZW50KCJzY3JvbGwiLGNyKSxwci5jb21wb25lbnQoInNjcm9sbHNweSIsdXIpLHByLmNvbXBvbmVudCgic2Nyb2xsc3B5TmF2IixscikscHIuY29tcG9uZW50KCJzdGlja3kiLGRyKSxwci5jb21wb25lbnQoInN2ZyIsU2kpLHByLmNvbXBvbmVudCgic3dpdGNoZXIiLG1yKSxwci5jb21wb25lbnQoInRhYiIsZ3IpLHByLmNvbXBvbmVudCgidG9nZ2xlIix2cikscHIuY29tcG9uZW50KCJ2aWRlbyIsYWkpLHByLmNvbXBvbmVudCgiY2xvc2UiLFBpKSxwci5jb21wb25lbnQoIm1hcmtlciIsRGkpLHByLmNvbXBvbmVudCgibmF2YmFyVG9nZ2xlSWNvbiIsRGkpLHByLmNvbXBvbmVudCgib3ZlcmxheUljb24iLERpKSxwci5jb21wb25lbnQoInBhZ2luYXRpb25OZXh0IixEaSkscHIuY29tcG9uZW50KCJwYWdpbmF0aW9uUHJldmlvdXMiLERpKSxwci5jb21wb25lbnQoInNlYXJjaEljb24iLEJpKSxwci5jb21wb25lbnQoInNsaWRlbmF2TmV4dCIsemkpLHByLmNvbXBvbmVudCgic2xpZGVuYXZQcmV2aW91cyIsemkpLHByLmNvbXBvbmVudCgic3Bpbm5lciIsSGkpLHByLmNvbXBvbmVudCgidG90b3AiLERpKSxwci51c2Uob2kpO3ZhciB3cj17bWl4aW5zOltlaV0scHJvcHM6e2RhdGU6U3RyaW5nLGNsc1dyYXBwZXI6U3RyaW5nfSxkYXRhOntkYXRlOiIiLGNsc1dyYXBwZXI6Ii51ay1jb3VudGRvd24tJXVuaXQlIn0sY29tcHV0ZWQ6e2RhdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRlO3JldHVybiBEYXRlLnBhcnNlKGUpfSxkYXlzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFRlKHQuY2xzV3JhcHBlci5yZXBsYWNlKCIldW5pdCUiLCJkYXlzIiksZSl9LGhvdXJzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFRlKHQuY2xzV3JhcHBlci5yZXBsYWNlKCIldW5pdCUiLCJob3VycyIpLGUpfSxtaW51dGVzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFRlKHQuY2xzV3JhcHBlci5yZXBsYWNlKCIldW5pdCUiLCJtaW51dGVzIiksZSl9LHNlY29uZHM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gVGUodC5jbHNXcmFwcGVyLnJlcGxhY2UoIiV1bml0JSIsInNlY29uZHMiKSxlKX0sdW5pdHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVyblsiZGF5cyIsImhvdXJzIiwibWludXRlcyIsInNlY29uZHMiXS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KX19LGNvbm5lY3RlZDpmdW5jdGlvbigpe3RoaXMuc3RhcnQoKX0sZGlzY29ubmVjdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnN0b3AoKSx0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGRlKGVbdF0pfSl9LGV2ZW50czpbe25hbWU6InZpc2liaWxpdHljaGFuZ2UiLGVsOmRvY3VtZW50LGhhbmRsZXI6ZnVuY3Rpb24oKXtkb2N1bWVudC5oaWRkZW4/dGhpcy5zdG9wKCk6dGhpcy5zdGFydCgpfX1dLHVwZGF0ZTp7d3JpdGU6ZnVuY3Rpb24oKXt2YXIgaT10aGlzLHI9ZnVuY3Rpb24odCl7dmFyIGU9dC1EYXRlLm5vdygpO3JldHVybnt0b3RhbDplLHNlY29uZHM6ZS8xZTMlNjAsbWludXRlczplLzFlMy82MCU2MCxob3VyczplLzFlMy82MC82MCUyNCxkYXlzOmUvMWUzLzYwLzYwLzI0fX0odGhpcy5kYXRlKTtyLnRvdGFsPD0wJiYodGhpcy5zdG9wKCksci5kYXlzPXIuaG91cnM9ci5taW51dGVzPXIuc2Vjb25kcz0wKSx0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKE1hdGguZmxvb3Ioclt0XSkpO2U9ZS5sZW5ndGg8Mj8iMCIrZTplO3ZhciBuPWlbdF07bi50ZXh0Q29udGVudCE9PWUmJigoZT1lLnNwbGl0KCIiKSkubGVuZ3RoIT09bi5jaGlsZHJlbi5sZW5ndGgmJmZlKG4sZS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4iPHNwYW4+PC9zcGFuPiJ9KS5qb2luKCIiKSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2hpbGRyZW5bZV0udGV4dENvbnRlbnQ9dH0pKX0pfX0sbWV0aG9kczp7c3RhcnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuc3RvcCgpLHRoaXMuZGF0ZSYmdGhpcy51bml0cy5sZW5ndGgmJih0aGlzLiRlbWl0KCksdGhpcy50aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3JldHVybiB0LiRlbWl0KCl9LDFlMykpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy50aW1lciYmKGNsZWFySW50ZXJ2YWwodGhpcy50aW1lciksdGhpcy50aW1lcj1udWxsKX19fTt2YXIgYnIseXI9InVrLWFuaW1hdGlvbi10YXJnZXQiLHhyPXtwcm9wczp7YW5pbWF0aW9uOk51bWJlcn0sZGF0YTp7YW5pbWF0aW9uOjE1MH0sY29tcHV0ZWQ6e3RhcmdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbH19LG1ldGhvZHM6e2FuaW1hdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpczshZnVuY3Rpb24oKXtpZihicilyZXR1cm47KGJyPXBlKGRvY3VtZW50LmhlYWQsIjxzdHlsZT4iKS5zaGVldCkuaW5zZXJ0UnVsZSgiLiIreXIrIiA+ICoge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH0iLDApfSgpO3ZhciByPVcodGhpcy50YXJnZXQuY2hpbGRyZW4pLG89ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGtyKHQsITApfSksZT1zbih0aGlzLnRhcmdldCksbj13aW5kb3cucGFnZVlPZmZzZXQ7dCgpLFhlLmNhbmNlbCh0aGlzLnRhcmdldCksci5mb3JFYWNoKFhlLmNhbmNlbCksJHIodGhpcy50YXJnZXQpLHRoaXMuJHVwZGF0ZSh0aGlzLnRhcmdldCksa24uZmx1c2goKTt2YXIgcz1zbih0aGlzLnRhcmdldCksYT0ocj1yLmNvbmNhdChXKHRoaXMudGFyZ2V0LmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIWIocix0KX0pKSkubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuISEodC5wYXJlbnROb2RlJiZlIGluIG8pJiYob1tlXT9IdCh0KT9Jcih0KTp7b3BhY2l0eTowfTp7b3BhY2l0eTpIdCh0KT8xOjB9KX0pO3JldHVybiBvPWEubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIG49cltlXS5wYXJlbnROb2RlPT09aS50YXJnZXQmJihvW2VdfHxrcihyW2VdKSk7aWYobilpZih0KXtpZighKCJvcGFjaXR5ImluIHQpKXtuLm9wYWNpdHklMT90Lm9wYWNpdHk9MTpkZWxldGUgbi5vcGFjaXR5fX1lbHNlIGRlbGV0ZSBuLm9wYWNpdHk7cmV0dXJuIG59KSxBZSh0aGlzLnRhcmdldCx5ciksci5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZV0mJkxlKHQsb1tlXSl9KSxMZSh0aGlzLnRhcmdldCwiaGVpZ2h0IixlKSxnbih3aW5kb3csbiksbmUuYWxsKHIubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZV0mJmFbZV0/WGUuc3RhcnQodCxhW2VdLGkuYW5pbWF0aW9uLCJlYXNlIik6bmUucmVzb2x2ZSgpfSkuY29uY2F0KFhlLnN0YXJ0KHRoaXMudGFyZ2V0LHtoZWlnaHQ6c30sdGhpcy5hbmltYXRpb24sImVhc2UiKSkpLnRoZW4oZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24odCxlKXtyZXR1cm4gTGUodCx7ZGlzcGxheTowPT09YVtlXS5vcGFjaXR5PyJub25lIjoiIix6SW5kZXg6IiJ9KX0pLCRyKGkudGFyZ2V0KSxpLiR1cGRhdGUoaS50YXJnZXQpLGtuLmZsdXNoKCl9LFEpfX19O2Z1bmN0aW9uIGtyKHQsZSl7dmFyIG49TGUodCwiekluZGV4Iik7cmV0dXJuISFIdCh0KSYmVSh7ZGlzcGxheToiIixvcGFjaXR5OmU/TGUodCwib3BhY2l0eSIpOiIwIixwb2ludGVyRXZlbnRzOiJub25lIixwb3NpdGlvbjoiYWJzb2x1dGUiLHpJbmRleDoiYXV0byI9PT1uP3VlKHQpOm59LElyKHQpKX1mdW5jdGlvbiAkcih0KXtMZSh0LmNoaWxkcmVuLHtoZWlnaHQ6IiIsbGVmdDoiIixvcGFjaXR5OiIiLHBvaW50ZXJFdmVudHM6IiIscG9zaXRpb246IiIsdG9wOiIiLHdpZHRoOiIifSksX2UodCx5ciksTGUodCwiaGVpZ2h0IiwiIil9ZnVuY3Rpb24gSXIodCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWUuaGVpZ2h0LGk9ZS53aWR0aCxyPW9uKHQpLG89ci50b3Ascz1yLmxlZnQ7cmV0dXJue3RvcDpvKz1GKExlKHQsIm1hcmdpblRvcCIpKSxsZWZ0OnMsaGVpZ2h0Om4sd2lkdGg6aX19dmFyIFNyPXttaXhpbnM6W3hyXSxhcmdzOiJ0YXJnZXQiLHByb3BzOnt0YXJnZXQ6Qm9vbGVhbixzZWxBY3RpdmU6Qm9vbGVhbn0sZGF0YTp7dGFyZ2V0Om51bGwsc2VsQWN0aXZlOiExLGF0dHJJdGVtOiJ1ay1maWx0ZXItY29udHJvbCIsY2xzOiJ1ay1hY3RpdmUiLGFuaW1hdGlvbjoyNTB9LGNvbXB1dGVkOnt0b2dnbGVzOntnZXQ6ZnVuY3Rpb24odCxlKXt0LmF0dHJJdGVtO3JldHVybiBFZSgiWyIrdGhpcy5hdHRySXRlbSsiXSxbZGF0YS0iK3RoaXMuYXR0ckl0ZW0rIl0iLGUpfSx3YXRjaDpmdW5jdGlvbigpe3RoaXMudXBkYXRlU3RhdGUoKX19LHRhcmdldDpmdW5jdGlvbih0LGUpe3JldHVybiBUZSh0LnRhcmdldCxlKX0sY2hpbGRyZW46e2dldDpmdW5jdGlvbigpe3JldHVybiBXKHRoaXMudGFyZ2V0JiZ0aGlzLnRhcmdldC5jaGlsZHJlbil9LHdhdGNoOmZ1bmN0aW9uKHQsZSl7IWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPT09ZS5sZW5ndGgmJnQuZXZlcnkoZnVuY3Rpb24odCl7cmV0dXJufmUuaW5kZXhPZih0KX0pfSh0LGUpJiZ0aGlzLnVwZGF0ZVN0YXRlKCl9fX0sZXZlbnRzOlt7bmFtZToiY2xpY2siLGRlbGVnYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIlsiK3RoaXMuYXR0ckl0ZW0rIl0sW2RhdGEtIit0aGlzLmF0dHJJdGVtKyJdIn0saGFuZGxlcjpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5hcHBseSh0LmN1cnJlbnQpfX1dLGNvbm5lY3RlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy51cGRhdGVTdGF0ZSgpLCExIT09dGhpcy5zZWxBY3RpdmUpe3ZhciBuPUVlKHRoaXMuc2VsQWN0aXZlLHRoaXMuJGVsKTt0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gRGUodCxlLmNscyxiKG4sdCkpfSl9fSxtZXRob2RzOnthcHBseTpmdW5jdGlvbih0KXt0aGlzLnNldFN0YXRlKEVyKHQsdGhpcy5hdHRySXRlbSx0aGlzLmdldFN0YXRlKCkpKX0sZ2V0U3RhdGU6ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLnRvZ2dsZXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPZSh0LG4uY2xzKX0pLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBFcihlLG4uYXR0ckl0ZW0sdCl9LHtmaWx0ZXI6eyIiOiIifSxzb3J0OltdfSl9LHNldFN0YXRlOmZ1bmN0aW9uKG8sdCl7dmFyIHM9dGhpczt2b2lkIDA9PT10JiYodD0hMCksbz1VKHtmaWx0ZXI6eyIiOiIifSxzb3J0OltdfSxvKSxxdCh0aGlzLiRlbCwiYmVmb3JlRmlsdGVyIixbdGhpcyxvXSk7dmFyIGE9dGhpcy5jaGlsZHJlbjt0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gRGUodCxzLmNscywhIWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uLmZpbHRlcjt2b2lkIDA9PT1pJiYoaT17IiI6IiJ9KTt2YXIgcj1uLnNvcnQsbz1yWzBdLHM9clsxXSxhPVRyKHQsZSksaD1hLmZpbHRlcjt2b2lkIDA9PT1oJiYoaD0iIik7dmFyIGM9YS5ncm91cDt2b2lkIDA9PT1jJiYoYz0iIik7dmFyIHU9YS5zb3J0LGw9YS5vcmRlcjt2b2lkIDA9PT1sJiYobD0iYXNjIik7cmV0dXJuIFAodSk/YyBpbiBpJiZoPT09aVtjXXx8IWgmJmMmJiEoYyBpbiBpKSYmIWlbIiJdOm89PT11JiZzPT09bH0odCxzLmF0dHJJdGVtLG8pKX0pO2Z1bmN0aW9uIGUoKXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT10LmZpbHRlcixuPSIiO3JldHVybiBLKGUsZnVuY3Rpb24odCl7cmV0dXJuIG4rPXR8fCIifSksbn0obyk7YS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBMZSh0LCJkaXNwbGF5IixlJiYhX3QodCxlKT8ibm9uZSI6IiIpfSk7dmFyIHQ9by5zb3J0LG49dFswXSxpPXRbMV07aWYobil7dmFyIHI9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBVKFtdLHQpLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gc3QodCxuKS5sb2NhbGVDb21wYXJlKHN0KGUsbiksdm9pZCAwLHtudW1lcmljOiEwfSkqKCJhc2MiPT09aXx8LTEpfSl9KGEsbixpKTtZKHIsYSl8fHIuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gcGUocy50YXJnZXQsdCl9KX19dD90aGlzLmFuaW1hdGUoZSkudGhlbihmdW5jdGlvbigpe3JldHVybiBxdChzLiRlbCwiYWZ0ZXJGaWx0ZXIiLFtzXSl9KTooZSgpLHF0KHRoaXMuJGVsLCJhZnRlckZpbHRlciIsW3RoaXNdKSl9LHVwZGF0ZVN0YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztrbi53cml0ZShmdW5jdGlvbigpe3JldHVybiB0LnNldFN0YXRlKHQuZ2V0U3RhdGUoKSwhMSl9KX19fTtmdW5jdGlvbiBUcih0LGUpe3JldHVybiBPbihzdCh0LGUpLFsiZmlsdGVyIl0pfWZ1bmN0aW9uIEVyKHQsZSxuKXt2YXIgaT1Ucih0LGUpLHI9aS5maWx0ZXIsbz1pLmdyb3VwLHM9aS5zb3J0LGE9aS5vcmRlcjtyZXR1cm4gdm9pZCAwPT09YSYmKGE9ImFzYyIpLChyfHxQKHMpKSYmKG8/cj8oZGVsZXRlIG4uZmlsdGVyWyIiXSxuLmZpbHRlcltvXT1yKTooZGVsZXRlIG4uZmlsdGVyW29dLChCKG4uZmlsdGVyKXx8IiJpbiBuLmZpbHRlcikmJihuLmZpbHRlcj17IiI6cnx8IiJ9KSk6bi5maWx0ZXI9eyIiOnJ8fCIifSksUChzKXx8KG4uc29ydD1bcyxhXSksbn12YXIgQ3I9e3NsaWRlOntzaG93OmZ1bmN0aW9uKHQpe3JldHVyblt7dHJhbnNmb3JtOl9yKC0xMDAqdCl9LHt0cmFuc2Zvcm06X3IoKX1dfSxwZXJjZW50OmZ1bmN0aW9uKHQpe3JldHVybiBBcih0KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3t0cmFuc2Zvcm06X3IoLTEwMCplKnQpfSx7dHJhbnNmb3JtOl9yKDEwMCplKigxLXQpKX1dfX19O2Z1bmN0aW9uIEFyKHQpe3JldHVybiBNYXRoLmFicyhMZSh0LCJ0cmFuc2Zvcm0iKS5zcGxpdCgiLCIpWzRdL3Qub2Zmc2V0V2lkdGgpfHwwfWZ1bmN0aW9uIF9yKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PWUmJihlPSIlIiksdCs9dD9lOiIiLGF0PyJ0cmFuc2xhdGVYKCIrdCsiKSI6InRyYW5zbGF0ZTNkKCIrdCsiLCAwLCAwKSJ9ZnVuY3Rpb24gTnIodCl7cmV0dXJuInNjYWxlM2QoIit0KyIsICIrdCsiLCAxKSJ9dmFyIE1yPVUoe30sQ3Ise2ZhZGU6e3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm5be29wYWNpdHk6MH0se29wYWNpdHk6MX1dfSxwZXJjZW50OmZ1bmN0aW9uKHQpe3JldHVybiAxLUxlKHQsIm9wYWNpdHkiKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQpe3JldHVyblt7b3BhY2l0eToxLXR9LHtvcGFjaXR5OnR9XX19LHNjYWxlOntzaG93OmZ1bmN0aW9uKCl7cmV0dXJuW3tvcGFjaXR5OjAsdHJhbnNmb3JtOk5yKC44KX0se29wYWNpdHk6MSx0cmFuc2Zvcm06TnIoMSl9XX0scGVyY2VudDpmdW5jdGlvbih0KXtyZXR1cm4gMS1MZSh0LCJvcGFjaXR5Iil9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXtyZXR1cm5be29wYWNpdHk6MS10LHRyYW5zZm9ybTpOcigxLS4yKnQpfSx7b3BhY2l0eTp0LHRyYW5zZm9ybTpOciguOCsuMip0KX1dfX19KTtmdW5jdGlvbiBPcih0LGUsbil7cXQodCxVdChlLCExLCExLG4pKX12YXIgRHI9e21peGluczpbe3Byb3BzOnthdXRvcGxheTpCb29sZWFuLGF1dG9wbGF5SW50ZXJ2YWw6TnVtYmVyLHBhdXNlT25Ib3ZlcjpCb29sZWFufSxkYXRhOnthdXRvcGxheTohMSxhdXRvcGxheUludGVydmFsOjdlMyxwYXVzZU9uSG92ZXI6ITB9LGNvbm5lY3RlZDpmdW5jdGlvbigpe3RoaXMuYXV0b3BsYXkmJnRoaXMuc3RhcnRBdXRvcGxheSgpfSxkaXNjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0b3BBdXRvcGxheSgpfSx1cGRhdGU6ZnVuY3Rpb24oKXtpdCh0aGlzLnNsaWRlcywidGFiaW5kZXgiLCItMSIpfSxldmVudHM6W3tuYW1lOiJ2aXNpYmlsaXR5Y2hhbmdlIixlbDpkb2N1bWVudCxmaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdXRvcGxheX0saGFuZGxlcjpmdW5jdGlvbigpe2RvY3VtZW50LmhpZGRlbj90aGlzLnN0b3BBdXRvcGxheSgpOnRoaXMuc3RhcnRBdXRvcGxheSgpfX1dLG1ldGhvZHM6e3N0YXJ0QXV0b3BsYXk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuc3RvcEF1dG9wbGF5KCksdGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3JldHVybighdC5kcmFnZ2FibGV8fCFUZSgiOmZvY3VzIix0LiRlbCkpJiYoIXQucGF1c2VPbkhvdmVyfHwhX3QodC4kZWwsIjpob3ZlciIpKSYmIXQuc3RhY2subGVuZ3RoJiZ0LnNob3coIm5leHQiKX0sdGhpcy5hdXRvcGxheUludGVydmFsKX0sc3RvcEF1dG9wbGF5OmZ1bmN0aW9uKCl7dGhpcy5pbnRlcnZhbCYmY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKX19fSx7cHJvcHM6e2RyYWdnYWJsZTpCb29sZWFufSxkYXRhOntkcmFnZ2FibGU6ITAsdGhyZXNob2xkOjEwfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGk9dGhpcztbInN0YXJ0IiwibW92ZSIsImVuZCJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49aVt0XTtpW3RdPWZ1bmN0aW9uKHQpe3ZhciBlPXRlKHQpLngqKGh0Py0xOjEpO2kucHJldlBvcz1lIT09aS5wb3M/aS5wb3M6aS5wcmV2UG9zLGkucG9zPWUsbih0KX19KX0sZXZlbnRzOlt7bmFtZTpkdCxkZWxlZ2F0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbFNsaWRlc30saGFuZGxlcjpmdW5jdGlvbih0KXshdGhpcy5kcmFnZ2FibGV8fCFRdCh0KSYmZnVuY3Rpb24odCl7cmV0dXJuIXQuY2hpbGRyZW4ubGVuZ3RoJiZ0LmNoaWxkTm9kZXMubGVuZ3RofSh0LnRhcmdldCl8fDA8dC5idXR0b258fHRoaXMubGVuZ3RoPDJ8fHRoaXMuc3RhcnQodCl9fSx7bmFtZToidG91Y2htb3ZlIixwYXNzaXZlOiExLGhhbmRsZXI6Im1vdmUiLGRlbGVnYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsU2xpZGVzfX0se25hbWU6ImRyYWdzdGFydCIsaGFuZGxlcjpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fV0sbWV0aG9kczp7c3RhcnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZHJhZz10aGlzLnBvcyx0aGlzLl90cmFuc2l0aW9uZXI/KHRoaXMucGVyY2VudD10aGlzLl90cmFuc2l0aW9uZXIucGVyY2VudCgpLHRoaXMuZHJhZys9dGhpcy5fdHJhbnNpdGlvbmVyLmdldERpc3RhbmNlKCkqdGhpcy5wZXJjZW50KnRoaXMuZGlyLHRoaXMuX3RyYW5zaXRpb25lci5jYW5jZWwoKSx0aGlzLl90cmFuc2l0aW9uZXIudHJhbnNsYXRlKHRoaXMucGVyY2VudCksdGhpcy5kcmFnZ2luZz0hMCx0aGlzLnN0YWNrPVtdKTp0aGlzLnByZXZJbmRleD10aGlzLmluZGV4O3ZhciBlPSJ0b3VjaG1vdmUiIT1mdD9WdChkb2N1bWVudCxmdCx0aGlzLm1vdmUse3Bhc3NpdmU6ITF9KTpRO3RoaXMudW5iaW5kTW92ZT1mdW5jdGlvbigpe2UoKSx0LnVuYmluZE1vdmU9bnVsbH0sVnQod2luZG93LCJzY3JvbGwiLHRoaXMudW5iaW5kTW92ZSksVnQoZG9jdW1lbnQscHQsdGhpcy5lbmQsITApLExlKHRoaXMubGlzdCwidXNlclNlbGVjdCIsIm5vbmUiKX0sbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMudW5iaW5kTW92ZSl7dmFyIG49dGhpcy5wb3MtdGhpcy5kcmFnO2lmKCEoMD09bnx8dGhpcy5wcmV2UG9zPT09dGhpcy5wb3N8fCF0aGlzLmRyYWdnaW5nJiZNYXRoLmFicyhuKTx0aGlzLnRocmVzaG9sZCkpe0xlKHRoaXMubGlzdCwicG9pbnRlckV2ZW50cyIsIm5vbmUiKSx0LmNhbmNlbGFibGUmJnQucHJldmVudERlZmF1bHQoKSx0aGlzLmRyYWdnaW5nPSEwLHRoaXMuZGlyPW48MD8xOi0xO2Zvcih2YXIgaT10aGlzLnNsaWRlcyxyPXRoaXMucHJldkluZGV4LG89TWF0aC5hYnMobikscz10aGlzLmdldEluZGV4KHIrdGhpcy5kaXIsciksYT10aGlzLl9nZXREaXN0YW5jZShyLHMpfHxpW3JdLm9mZnNldFdpZHRoO3MhPT1yJiZhPG87KXRoaXMuZHJhZy09YSp0aGlzLmRpcixyPXMsby09YSxzPXRoaXMuZ2V0SW5kZXgocit0aGlzLmRpcixyKSxhPXRoaXMuX2dldERpc3RhbmNlKHIscyl8fGlbcl0ub2Zmc2V0V2lkdGg7dGhpcy5wZXJjZW50PW8vYTt2YXIgaCxjPWlbcl0sdT1pW3NdLGw9dGhpcy5pbmRleCE9PXMsZD1yPT09cztbdGhpcy5pbmRleCx0aGlzLnByZXZJbmRleF0uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiFiKFtzLHJdLHQpfSkuZm9yRWFjaChmdW5jdGlvbih0KXtxdChpW3RdLCJpdGVtaGlkZGVuIixbZV0pLGQmJihoPSEwLGUucHJldkluZGV4PXIpfSksKHRoaXMuaW5kZXg9PT1yJiZ0aGlzLnByZXZJbmRleCE9PXJ8fGgpJiZxdChpW3RoaXMuaW5kZXhdLCJpdGVtc2hvd24iLFt0aGlzXSksbCYmKHRoaXMucHJldkluZGV4PXIsdGhpcy5pbmRleD1zLGR8fHF0KGMsImJlZm9yZWl0ZW1oaWRlIixbdGhpc10pLHF0KHUsImJlZm9yZWl0ZW1zaG93IixbdGhpc10pKSx0aGlzLl90cmFuc2l0aW9uZXI9dGhpcy5fdHJhbnNsYXRlKE1hdGguYWJzKHRoaXMucGVyY2VudCksYywhZCYmdSksbCYmKGR8fHF0KGMsIml0ZW1oaWRlIixbdGhpc10pLHF0KHUsIml0ZW1zaG93IixbdGhpc10pKX19fSxlbmQ6ZnVuY3Rpb24oKXtpZihSdCh3aW5kb3csInNjcm9sbCIsdGhpcy51bmJpbmRNb3ZlKSx0aGlzLnVuYmluZE1vdmUmJnRoaXMudW5iaW5kTW92ZSgpLFJ0KGRvY3VtZW50LHB0LHRoaXMuZW5kLCEwKSx0aGlzLmRyYWdnaW5nKWlmKHRoaXMuZHJhZ2dpbmc9bnVsbCx0aGlzLmluZGV4PT09dGhpcy5wcmV2SW5kZXgpdGhpcy5wZXJjZW50PTEtdGhpcy5wZXJjZW50LHRoaXMuZGlyKj0tMSx0aGlzLl9zaG93KCExLHRoaXMuaW5kZXgsITApLHRoaXMuX3RyYW5zaXRpb25lcj1udWxsO2Vsc2V7dmFyIHQ9KGh0P3RoaXMuZGlyKihodD8xOi0xKTp0aGlzLmRpcik8MD09dGhpcy5wcmV2UG9zPnRoaXMucG9zO3RoaXMuaW5kZXg9dD90aGlzLmluZGV4OnRoaXMucHJldkluZGV4LHQmJih0aGlzLnBlcmNlbnQ9MS10aGlzLnBlcmNlbnQpLHRoaXMuc2hvdygwPHRoaXMuZGlyJiYhdHx8dGhpcy5kaXI8MCYmdD8ibmV4dCI6InByZXZpb3VzIiwhMCl9TGUodGhpcy5saXN0LHt1c2VyU2VsZWN0OiIiLHBvaW50ZXJFdmVudHM6IiJ9KSx0aGlzLmRyYWc9dGhpcy5wZXJjZW50PW51bGx9fX0se2RhdGE6e3NlbE5hdjohMX0sY29tcHV0ZWQ6e25hdjpmdW5jdGlvbih0LGUpe3JldHVybiBUZSh0LnNlbE5hdixlKX0sc2VsTmF2SXRlbTpmdW5jdGlvbih0KXt2YXIgZT10LmF0dHJJdGVtO3JldHVybiJbIitlKyJdLFtkYXRhLSIrZSsiXSJ9LG5hdkl0ZW1zOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEVlKHRoaXMuc2VsTmF2SXRlbSxlKX19LHVwZGF0ZTp7d3JpdGU6ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMubmF2JiZ0aGlzLmxlbmd0aCE9PXRoaXMubmF2LmNoaWxkcmVuLmxlbmd0aCYmZmUodGhpcy5uYXYsdGhpcy5zbGlkZXMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIjxsaSAiK24uYXR0ckl0ZW0rJz0iJytlKyciPjxhIGhyZWY9IiMiPjwvYT48L2xpPid9KS5qb2luKCIiKSksRGUoRWUodGhpcy5zZWxOYXZJdGVtLHRoaXMuJGVsKS5jb25jYXQodGhpcy5uYXYpLCJ1ay1oaWRkZW4iLCF0aGlzLm1heEluZGV4KSx0aGlzLnVwZGF0ZU5hdigpfSxldmVudHM6WyJyZXNpemUiXX0sZXZlbnRzOlt7bmFtZToiY2xpY2siLGRlbGVnYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsTmF2SXRlbX0saGFuZGxlcjpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zaG93KHN0KHQuY3VycmVudCx0aGlzLmF0dHJJdGVtKSl9fSx7bmFtZToiaXRlbXNob3ciLGhhbmRsZXI6InVwZGF0ZU5hdiJ9XSxtZXRob2RzOnt1cGRhdGVOYXY6ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dGhpcy5nZXRWYWxpZEluZGV4KCk7dGhpcy5uYXZJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXN0KHQsbi5hdHRySXRlbSk7RGUodCxuLmNsc0FjdGl2ZSxMKGUpPT09aSksRGUodCwidWstaW52aXNpYmxlIixuLmZpbml0ZSYmKCJwcmV2aW91cyI9PT1lJiYwPT09aXx8Im5leHQiPT09ZSYmaT49bi5tYXhJbmRleCkpfSl9fX1dLHByb3BzOntjbHNBY3RpdmF0ZWQ6Qm9vbGVhbixlYXNpbmc6U3RyaW5nLGluZGV4Ok51bWJlcixmaW5pdGU6Qm9vbGVhbix2ZWxvY2l0eTpOdW1iZXJ9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57ZWFzaW5nOiJlYXNlIixmaW5pdGU6ITEsdmVsb2NpdHk6MSxpbmRleDowLHByZXZJbmRleDotMSxzdGFjazpbXSxwZXJjZW50OjAsY2xzQWN0aXZlOiJ1ay1hY3RpdmUiLGNsc0FjdGl2YXRlZDohMSxUcmFuc2l0aW9uZXI6ITEsdHJhbnNpdGlvbk9wdGlvbnM6e319fSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnByZXZJbmRleD0tMSx0aGlzLmluZGV4PXRoaXMuZ2V0VmFsaWRJbmRleCh0aGlzLmluZGV4KSx0aGlzLnN0YWNrPVtdfSxkaXNjb25uZWN0ZWQ6ZnVuY3Rpb24oKXtfZSh0aGlzLnNsaWRlcyx0aGlzLmNsc0FjdGl2ZSl9LGNvbXB1dGVkOntkdXJhdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXQudmVsb2NpdHk7cmV0dXJuIHpyKGUub2Zmc2V0V2lkdGgvbil9LGxpc3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gVGUodC5zZWxMaXN0LGUpfSxtYXhJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aC0xfSxzZWxTbGlkZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2VsTGlzdCsiID4gKiJ9LHNsaWRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcy5saXN0LmNoaWxkcmVuKX0sd2F0Y2g6ZnVuY3Rpb24oKXt0aGlzLiRyZXNldCgpfX0sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGVzLmxlbmd0aH19LGV2ZW50czp7aXRlbXNob3duOmZ1bmN0aW9uKCl7dGhpcy4kdXBkYXRlKHRoaXMubGlzdCl9fSxtZXRob2RzOntzaG93OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZih2b2lkIDA9PT1lJiYoZT0hMSksIXRoaXMuZHJhZ2dpbmcmJnRoaXMubGVuZ3RoKXt2YXIgaT10aGlzLnN0YWNrLHI9ZT8wOmkubGVuZ3RoLG89ZnVuY3Rpb24oKXtpLnNwbGljZShyLDEpLGkubGVuZ3RoJiZuLnNob3coaS5zaGlmdCgpLCEwKX07aWYoaVtlPyJ1bnNoaWZ0IjoicHVzaCJdKHQpLCFlJiYxPGkubGVuZ3RoKTI9PT1pLmxlbmd0aCYmdGhpcy5fdHJhbnNpdGlvbmVyLmZvcndhcmQoTWF0aC5taW4odGhpcy5kdXJhdGlvbiwyMDApKTtlbHNle3ZhciBzPXRoaXMuaW5kZXgsYT1PZSh0aGlzLnNsaWRlcyx0aGlzLmNsc0FjdGl2ZSkmJnRoaXMuc2xpZGVzW3NdLGg9dGhpcy5nZXRJbmRleCh0LHRoaXMuaW5kZXgpLGM9dGhpcy5zbGlkZXNbaF07aWYoYSE9PWMpe2lmKHRoaXMuZGlyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIm5leHQiPT09dD8xOiJwcmV2aW91cyI9PT10Py0xOnQ8ZT8tMToxfSh0LHMpLHRoaXMucHJldkluZGV4PXMsdGhpcy5pbmRleD1oLGEmJnF0KGEsImJlZm9yZWl0ZW1oaWRlIixbdGhpc10pLCFxdChjLCJiZWZvcmVpdGVtc2hvdyIsW3RoaXMsYV0pKXJldHVybiB0aGlzLmluZGV4PXRoaXMucHJldkluZGV4LHZvaWQgbygpO3ZhciB1PXRoaXMuX3Nob3coYSxjLGUpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYSYmcXQoYSwiaXRlbWhpZGRlbiIsW25dKSxxdChjLCJpdGVtc2hvd24iLFtuXSksbmV3IG5lKGZ1bmN0aW9uKHQpe2tuLndyaXRlKGZ1bmN0aW9uKCl7aS5zaGlmdCgpLGkubGVuZ3RoP24uc2hvdyhpLnNoaWZ0KCksITApOm4uX3RyYW5zaXRpb25lcj1udWxsLHQoKX0pfSl9KTtyZXR1cm4gYSYmcXQoYSwiaXRlbWhpZGUiLFt0aGlzXSkscXQoYywiaXRlbXNob3ciLFt0aGlzXSksdX1vKCl9fX0sZ2V0SW5kZXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dGhpcy5pbmRleCksdm9pZCAwPT09ZSYmKGU9dGhpcy5pbmRleCksWihsZSh0LHRoaXMuc2xpZGVzLGUsdGhpcy5maW5pdGUpLDAsdGhpcy5tYXhJbmRleCl9LGdldFZhbGlkSW5kZXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dGhpcy5pbmRleCksdm9pZCAwPT09ZSYmKGU9dGhpcy5wcmV2SW5kZXgpLHRoaXMuZ2V0SW5kZXgodCxlKX0sX3Nob3c6ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX3RyYW5zaXRpb25lcj10aGlzLl9nZXRUcmFuc2l0aW9uZXIodCxlLHRoaXMuZGlyLFUoe2Vhc2luZzpuP2Uub2Zmc2V0V2lkdGg8NjAwPyJjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkiOiJjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpIjp0aGlzLmVhc2luZ30sdGhpcy50cmFuc2l0aW9uT3B0aW9ucykpLCFuJiYhdClyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSgxKSxuZS5yZXNvbHZlKCk7dmFyIGk9dGhpcy5zdGFjay5sZW5ndGg7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25lclsxPGk/ImZvcndhcmQiOiJzaG93Il0oMTxpP01hdGgubWluKHRoaXMuZHVyYXRpb24sNzUrNzUvKGktMSkpOnRoaXMuZHVyYXRpb24sdGhpcy5wZXJjZW50KX0sX2dldERpc3RhbmNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2dldFRyYW5zaXRpb25lcih0LHQhPT1lJiZlKS5nZXREaXN0YW5jZSgpfSxfdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT10aGlzLnByZXZJbmRleCksdm9pZCAwPT09biYmKG49dGhpcy5pbmRleCk7dmFyIGk9dGhpcy5fZ2V0VHJhbnNpdGlvbmVyKGUhPT1uJiZlLG4pO3JldHVybiBpLnRyYW5zbGF0ZSh0KSxpfSxfZ2V0VHJhbnNpdGlvbmVyOmZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB2b2lkIDA9PT10JiYodD10aGlzLnByZXZJbmRleCksdm9pZCAwPT09ZSYmKGU9dGhpcy5pbmRleCksdm9pZCAwPT09biYmKG49dGhpcy5kaXJ8fDEpLHZvaWQgMD09PWkmJihpPXRoaXMudHJhbnNpdGlvbk9wdGlvbnMpLG5ldyB0aGlzLlRyYW5zaXRpb25lcihEKHQpP3RoaXMuc2xpZGVzW3RdOnQsRChlKT90aGlzLnNsaWRlc1tlXTplLG4qKGh0Py0xOjEpLGkpfX19O2Z1bmN0aW9uIHpyKHQpe3JldHVybi41KnQrMzAwfXZhciBCcj17bWl4aW5zOltEcl0scHJvcHM6e2FuaW1hdGlvbjpTdHJpbmd9LGRhdGE6e2FuaW1hdGlvbjoic2xpZGUiLGNsc0FjdGl2YXRlZDoidWstdHJhbnNpdGlvbi1hY3RpdmUiLEFuaW1hdGlvbnM6Q3IsVHJhbnNpdGlvbmVyOmZ1bmN0aW9uKG8scyxhLHQpe3ZhciBlPXQuYW5pbWF0aW9uLGg9dC5lYXNpbmcsbj1lLnBlcmNlbnQsaT1lLnRyYW5zbGF0ZSxyPWUuc2hvdzt2b2lkIDA9PT1yJiYocj1RKTt2YXIgYz1yKGEpLHU9bmV3IGVlO3JldHVybntkaXI6YSxzaG93OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzO3ZvaWQgMD09PWUmJihlPTApO3ZhciByPW4/ImxpbmVhciI6aDtyZXR1cm4gdC09TWF0aC5yb3VuZCh0KlooZSwtMSwxKSksdGhpcy50cmFuc2xhdGUoZSksT3IocywiaXRlbWluIix7cGVyY2VudDplLGR1cmF0aW9uOnQsdGltaW5nOnIsZGlyOmF9KSxPcihvLCJpdGVtb3V0Iix7cGVyY2VudDoxLWUsZHVyYXRpb246dCx0aW1pbmc6cixkaXI6YX0pLG5lLmFsbChbWGUuc3RhcnQocyxjWzFdLHQsciksWGUuc3RhcnQobyxjWzBdLHQscildKS50aGVuKGZ1bmN0aW9uKCl7aS5yZXNldCgpLHUucmVzb2x2ZSgpfSxRKSx1LnByb21pc2V9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gWGUuc3RvcChbcyxvXSl9LGNhbmNlbDpmdW5jdGlvbigpe1hlLmNhbmNlbChbcyxvXSl9LHJlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIGNbMF0pTGUoW3Msb10sdCwiIil9LGZvcndhcmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5wZXJjZW50KCkpLFhlLmNhbmNlbChbcyxvXSksdGhpcy5zaG93KHQsZSwhMCl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXt0aGlzLnJlc2V0KCk7dmFyIGU9aSh0LGEpO0xlKHMsZVsxXSksTGUobyxlWzBdKSxPcihzLCJpdGVtdHJhbnNsYXRlaW4iLHtwZXJjZW50OnQsZGlyOmF9KSxPcihvLCJpdGVtdHJhbnNsYXRlb3V0Iix7cGVyY2VudDoxLXQsZGlyOmF9KX0scGVyY2VudDpmdW5jdGlvbigpe3JldHVybiBuKG98fHMscyxhKX0sZ2V0RGlzdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbyYmby5vZmZzZXRXaWR0aH19fX0sY29tcHV0ZWQ6e2FuaW1hdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10LmFuaW1hdGlvbixuPXQuQW5pbWF0aW9ucztyZXR1cm4gVShlIGluIG4/bltlXTpuLnNsaWRlLHtuYW1lOmV9KX0sdHJhbnNpdGlvbk9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57YW5pbWF0aW9uOnRoaXMuYW5pbWF0aW9ufX19LGV2ZW50czp7Iml0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuIjpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldDt0aGlzLiR1cGRhdGUoZSl9LGJlZm9yZWl0ZW1zaG93OmZ1bmN0aW9uKHQpe0FlKHQudGFyZ2V0LHRoaXMuY2xzQWN0aXZlKX0saXRlbXNob3duOmZ1bmN0aW9uKHQpe0FlKHQudGFyZ2V0LHRoaXMuY2xzQWN0aXZhdGVkKX0saXRlbWhpZGRlbjpmdW5jdGlvbih0KXtfZSh0LnRhcmdldCx0aGlzLmNsc0FjdGl2ZSx0aGlzLmNsc0FjdGl2YXRlZCl9fX0sUHI9e21peGluczpbWmksdHIsbmksQnJdLGZ1bmN0aW9uYWw6ITAscHJvcHM6e2RlbGF5Q29udHJvbHM6TnVtYmVyLHByZWxvYWQ6TnVtYmVyLHZpZGVvQXV0b3BsYXk6Qm9vbGVhbix0ZW1wbGF0ZTpTdHJpbmd9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cHJlbG9hZDoxLHZpZGVvQXV0b3BsYXk6ITEsZGVsYXlDb250cm9sczozZTMsaXRlbXM6W10sY2xzOiJ1ay1vcGVuIixjbHNQYWdlOiJ1ay1saWdodGJveC1wYWdlIixzZWxMaXN0OiIudWstbGlnaHRib3gtaXRlbXMiLGF0dHJJdGVtOiJ1ay1saWdodGJveC1pdGVtIixzZWxDbG9zZToiLnVrLWNsb3NlLWxhcmdlIixzZWxDYXB0aW9uOiIudWstbGlnaHRib3gtY2FwdGlvbiIscGF1c2VPbkhvdmVyOiExLHZlbG9jaXR5OjIsQW5pbWF0aW9uczpNcix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0idWstbGlnaHRib3ggdWstb3ZlcmZsb3ctaGlkZGVuIj4gPHVsIGNsYXNzPSJ1ay1saWdodGJveC1pdGVtcyI+PC91bD4gPGRpdiBjbGFzcz0idWstbGlnaHRib3gtdG9vbGJhciB1ay1wb3NpdGlvbi10b3AgdWstdGV4dC1yaWdodCB1ay10cmFuc2l0aW9uLXNsaWRlLXRvcCB1ay10cmFuc2l0aW9uLW9wYXF1ZSI+IDxidXR0b24gY2xhc3M9InVrLWxpZ2h0Ym94LXRvb2xiYXItaWNvbiB1ay1jbG9zZS1sYXJnZSIgdHlwZT0iYnV0dG9uIiB1ay1jbG9zZT48L2J1dHRvbj4gPC9kaXY+IDxhIGNsYXNzPSJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLWxlZnQgdWstcG9zaXRpb24tbWVkaXVtIHVrLXRyYW5zaXRpb24tZmFkZSIgaHJlZj0iIyIgdWstc2xpZGVuYXYtcHJldmlvdXMgdWstbGlnaHRib3gtaXRlbT0icHJldmlvdXMiPjwvYT4gPGEgY2xhc3M9InVrLWxpZ2h0Ym94LWJ1dHRvbiB1ay1wb3NpdGlvbi1jZW50ZXItcmlnaHQgdWstcG9zaXRpb24tbWVkaXVtIHVrLXRyYW5zaXRpb24tZmFkZSIgaHJlZj0iIyIgdWstc2xpZGVuYXYtbmV4dCB1ay1saWdodGJveC1pdGVtPSJuZXh0Ij48L2E+IDxkaXYgY2xhc3M9InVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstbGlnaHRib3gtY2FwdGlvbiB1ay1wb3NpdGlvbi1ib3R0b20gdWstdGV4dC1jZW50ZXIgdWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b20gdWstdHJhbnNpdGlvbi1vcGFxdWUiPjwvZGl2PiA8L2Rpdj4nfX0sY3JlYXRlZDpmdW5jdGlvbigpe3ZhciB0PVRlKHRoaXMudGVtcGxhdGUpLGU9VGUodGhpcy5zZWxMaXN0LHQpO3RoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbigpe3JldHVybiBwZShlLCI8bGk+PC9saT4iKX0pLHRoaXMuJG1vdW50KHBlKHRoaXMuY29udGFpbmVyLHQpKX0sY29tcHV0ZWQ6e2NhcHRpb246ZnVuY3Rpb24odCxlKXt0LnNlbENhcHRpb247cmV0dXJuIFRlKCIudWstbGlnaHRib3gtY2FwdGlvbiIsZSl9fSxldmVudHM6W3tuYW1lOmZ0KyIgIitkdCsiIGtleWRvd24iLGhhbmRsZXI6InNob3dDb250cm9scyJ9LHtuYW1lOiJjbGljayIsc2VsZjohMCxkZWxlZ2F0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbFNsaWRlc30saGFuZGxlcjpmdW5jdGlvbih0KXt0LmRlZmF1bHRQcmV2ZW50ZWR8fHRoaXMuaGlkZSgpfX0se25hbWU6InNob3duIixzZWxmOiEwLGhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLnNob3dDb250cm9scygpfX0se25hbWU6ImhpZGUiLHNlbGY6ITAsaGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuaGlkZUNvbnRyb2xzKCksX2UodGhpcy5zbGlkZXMsdGhpcy5jbHNBY3RpdmUpLFhlLnN0b3AodGhpcy5zbGlkZXMpfX0se25hbWU6ImhpZGRlbiIsc2VsZjohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy4kZGVzdHJveSghMCl9fSx7bmFtZToia2V5dXAiLGVsOmRvY3VtZW50LGhhbmRsZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpKXN3aXRjaCh0LmtleUNvZGUpe2Nhc2UgMzc6dGhpcy5zaG93KCJwcmV2aW91cyIpO2JyZWFrO2Nhc2UgMzk6dGhpcy5zaG93KCJuZXh0Iil9fX0se25hbWU6ImJlZm9yZWl0ZW1zaG93IixoYW5kbGVyOmZ1bmN0aW9uKHQpe3RoaXMuaXNUb2dnbGVkKCl8fCh0aGlzLmRyYWdnYWJsZT0hMSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVOb3codGhpcy4kZWwsITApLHRoaXMuYW5pbWF0aW9uPU1yLnNjYWxlLF9lKHQudGFyZ2V0LHRoaXMuY2xzQWN0aXZlKSx0aGlzLnN0YWNrLnNwbGljZSgxLDAsdGhpcy5pbmRleCkpfX0se25hbWU6Iml0ZW1zaG93IixoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXVlKHQudGFyZ2V0KSxuPXRoaXMuZ2V0SXRlbShlKS5jYXB0aW9uO0xlKHRoaXMuY2FwdGlvbiwiZGlzcGxheSIsbj8iIjoibm9uZSIpLGZlKHRoaXMuY2FwdGlvbixuKTtmb3IodmFyIGk9MDtpPD10aGlzLnByZWxvYWQ7aSsrKXRoaXMubG9hZEl0ZW0odGhpcy5nZXRJbmRleChlK2kpKSx0aGlzLmxvYWRJdGVtKHRoaXMuZ2V0SW5kZXgoZS1pKSl9fSx7bmFtZToiaXRlbXNob3duIixoYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5kcmFnZ2FibGU9dGhpcy4kcHJvcHMuZHJhZ2dhYmxlfX0se25hbWU6Iml0ZW1sb2FkIixoYW5kbGVyOmZ1bmN0aW9uKHQscil7dmFyIG8scz10aGlzLGU9ci5zb3VyY2Usbj1yLnR5cGUsaT1yLmFsdDtpZih0aGlzLnNldEl0ZW0ociwiPHNwYW4gdWstc3Bpbm5lcj48L3NwYW4+IiksZSlpZigiaW1hZ2UiPT09bnx8ZS5tYXRjaCgvXC4oanAoZSk/Z3xwbmd8Z2lmfHN2Z3x3ZWJwKSgkfFw/KS9pKSloZShlKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBzLnNldEl0ZW0ociwnPGltZyB3aWR0aD0iJyt0LndpZHRoKyciIGhlaWdodD0iJyt0LmhlaWdodCsnIiBzcmM9IicrZSsnIiBhbHQ9IicrKGl8fCIiKSsnIj4nKX0sZnVuY3Rpb24oKXtyZXR1cm4gcy5zZXRFcnJvcihyKX0pO2Vsc2UgaWYoInZpZGVvIj09PW58fGUubWF0Y2goL1wuKG1wNHx3ZWJtfG9ndikoJHxcPykvaSkpe3ZhciBhPVRlKCI8dmlkZW8gY29udHJvbHMgcGxheXNpbmxpbmUiKyhyLnBvc3Rlcj8nIHBvc3Rlcj0iJytyLnBvc3RlcisnIic6IiIpKycgdWstdmlkZW89IicrdGhpcy52aWRlb0F1dG9wbGF5KyciPjwvdmlkZW8+Jyk7aXQoYSwic3JjIixlKSxZdChhLCJlcnJvciBsb2FkZWRtZXRhZGF0YSIsZnVuY3Rpb24odCl7ImVycm9yIj09PXQ/cy5zZXRFcnJvcihyKTooaXQoYSx7d2lkdGg6YS52aWRlb1dpZHRoLGhlaWdodDphLnZpZGVvSGVpZ2h0fSkscy5zZXRJdGVtKHIsYSkpfSl9ZWxzZSBpZigiaWZyYW1lIj09PW58fGUubWF0Y2goL1wuKGh0bWx8cGhwKSgkfFw/KS9pKSl0aGlzLnNldEl0ZW0ociwnPGlmcmFtZSBjbGFzcz0idWstbGlnaHRib3gtaWZyYW1lIiBzcmM9IicrZSsnIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPicpO2Vsc2UgaWYobz1lLm1hdGNoKC9cL1wvLio/eW91dHViZSgtbm9jb29raWUpP1wuW2Etel0rXC93YXRjaFw/dj0oW14mXHNdKykvKXx8ZS5tYXRjaCgvKCl5b3V0dVwuYmVcLyguKikvKSl7dmFyIGg9b1syXSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTY0MCksdm9pZCAwPT09ZSYmKGU9NDUwKSxzLnNldEl0ZW0ocixIcigiaHR0cHM6Ly93d3cueW91dHViZSIrKG9bMV18fCIiKSsiLmNvbS9lbWJlZC8iK2gsdCxlLHMudmlkZW9BdXRvcGxheSkpfTtoZSgiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvIitoKyIvbWF4cmVzZGVmYXVsdC5qcGciKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBlPXQud2lkdGgsbj10LmhlaWdodDsxMjA9PT1lJiY5MD09PW4/aGUoImh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpLyIraCsiLzAuanBnIikudGhlbihmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLG49dC5oZWlnaHQ7cmV0dXJuIGMoZSxuKX0sYyk6YyhlLG4pfSxjKX1lbHNlKG89ZS5tYXRjaCgvKFwvXC8uKj8pdmltZW9cLlthLXpdK1wvKFswLTldKykuKj8vKSkmJmFlKCJodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLmpzb24/bWF4d2lkdGg9MTkyMCZ1cmw9IitlbmNvZGVVUkkoZSkse3Jlc3BvbnNlVHlwZToianNvbiIsd2l0aENyZWRlbnRpYWxzOiExfSkudGhlbihmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNlLG49ZS5oZWlnaHQsaT1lLndpZHRoO3JldHVybiBzLnNldEl0ZW0ocixIcigiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLyIrb1syXSxpLG4scy52aWRlb0F1dG9wbGF5KSl9LGZ1bmN0aW9uKCl7cmV0dXJuIHMuc2V0RXJyb3Iocil9KX19XSxtZXRob2RzOntsb2FkSXRlbTpmdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD10aGlzLmluZGV4KTt2YXIgZT10aGlzLmdldEl0ZW0odCk7ZS5jb250ZW50fHxxdCh0aGlzLiRlbCwiaXRlbWxvYWQiLFtlXSl9LGdldEl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXRoaXMuaW5kZXgpLHRoaXMuaXRlbXNbdF18fHt9fSxzZXRJdGVtOmZ1bmN0aW9uKHQsZSl7VSh0LHtjb250ZW50OmV9KTt2YXIgbj1mZSh0aGlzLnNsaWRlc1t0aGlzLml0ZW1zLmluZGV4T2YodCldLGUpO3F0KHRoaXMuJGVsLCJpdGVtbG9hZGVkIixbdGhpcyxuXSksdGhpcy4kdXBkYXRlKG4pfSxzZXRFcnJvcjpmdW5jdGlvbih0KXt0aGlzLnNldEl0ZW0odCwnPHNwYW4gdWstaWNvbj0iaWNvbjogYm9sdDsgcmF0aW86IDIiPjwvc3Bhbj4nKX0sc2hvd0NvbnRyb2xzOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuY29udHJvbHNUaW1lciksdGhpcy5jb250cm9sc1RpbWVyPXNldFRpbWVvdXQodGhpcy5oaWRlQ29udHJvbHMsdGhpcy5kZWxheUNvbnRyb2xzKSxBZSh0aGlzLiRlbCwidWstYWN0aXZlIiwidWstdHJhbnNpdGlvbi1hY3RpdmUiKX0saGlkZUNvbnRyb2xzOmZ1bmN0aW9uKCl7X2UodGhpcy4kZWwsInVrLWFjdGl2ZSIsInVrLXRyYW5zaXRpb24tYWN0aXZlIil9fX07ZnVuY3Rpb24gSHIodCxlLG4saSl7cmV0dXJuJzxpZnJhbWUgc3JjPSInK3QrJyIgd2lkdGg9IicrZSsnIiBoZWlnaHQ9IicrbisnIiBzdHlsZT0ibWF4LXdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyIgZnJhbWVib3JkZXI9IjAiIGFsbG93ZnVsbHNjcmVlbiB1ay12aWRlbz0iYXV0b3BsYXk6ICcraSsnIiB1ay1yZXNwb25zaXZlPjwvaWZyYW1lPid9dmFyIExyLEZyPXtpbnN0YWxsOmZ1bmN0aW9uKHQsZSl7dC5saWdodGJveFBhbmVsfHx0LmNvbXBvbmVudCgibGlnaHRib3hQYW5lbCIsUHIpO1UoZS5wcm9wcyx0LmNvbXBvbmVudCgibGlnaHRib3hQYW5lbCIpLm9wdGlvbnMucHJvcHMpfSxwcm9wczp7dG9nZ2xlOlN0cmluZ30sZGF0YTp7dG9nZ2xlOiJhIn0sY29tcHV0ZWQ6e3RvZ2dsZXM6e2dldDpmdW5jdGlvbih0LGUpe3JldHVybiBFZSh0LnRvZ2dsZSxlKX0sd2F0Y2g6ZnVuY3Rpb24oKXt0aGlzLmhpZGUoKX19LGl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIEoodGhpcy50b2dnbGVzLm1hcChqciksInNvdXJjZSIpfX0sZGlzY29ubmVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5oaWRlKCl9LGV2ZW50czpbe25hbWU6ImNsaWNrIixkZWxlZ2F0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZ2dsZSsiOm5vdCgudWstZGlzYWJsZWQpIn0saGFuZGxlcjpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIGU9c3QodC5jdXJyZW50LCJocmVmIik7dGhpcy5zaG93KHgodGhpcy5pdGVtcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3VyY2U9PT1lfSkpfX1dLG1ldGhvZHM6e3Nob3c6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5wYW5lbD10aGlzLnBhbmVsfHx0aGlzLiRjcmVhdGUoImxpZ2h0Ym94UGFuZWwiLFUoe30sdGhpcy4kcHJvcHMse2l0ZW1zOnRoaXMuaXRlbXN9KSksVnQodGhpcy5wYW5lbC4kZWwsImhpZGRlbiIsZnVuY3Rpb24oKXtyZXR1cm4gZS5wYW5lbD0hMX0pLHRoaXMucGFuZWwuc2hvdyh0KX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbmVsJiZ0aGlzLnBhbmVsLmhpZGUoKX19fTtmdW5jdGlvbiBqcihuKXtyZXR1cm5bImhyZWYiLCJjYXB0aW9uIiwidHlwZSIsInBvc3RlciIsImFsdCJdLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0WyJocmVmIj09PWU/InNvdXJjZSI6ZV09c3QobixlKSx0fSx7fSl9dmFyIFdyPXt9LFZyPXtmdW5jdGlvbmFsOiEwLGFyZ3M6WyJtZXNzYWdlIiwic3RhdHVzIl0sZGF0YTp7bWVzc2FnZToiIixzdGF0dXM6IiIsdGltZW91dDo1ZTMsZ3JvdXA6bnVsbCxwb3M6InRvcC1jZW50ZXIiLGNsc0Nsb3NlOiJ1ay1ub3RpZmljYXRpb24tY2xvc2UiLGNsc01zZzoidWstbm90aWZpY2F0aW9uLW1lc3NhZ2UifSxpbnN0YWxsOmZ1bmN0aW9uKHIpe3Iubm90aWZpY2F0aW9uLmNsb3NlQWxsPWZ1bmN0aW9uKG4saSl7U2UoZG9jdW1lbnQuYm9keSxmdW5jdGlvbih0KXt2YXIgZT1yLmdldENvbXBvbmVudCh0LCJub3RpZmljYXRpb24iKTshZXx8biYmbiE9PWUuZ3JvdXB8fGUuY2xvc2UoaSl9KX19LGNvbXB1dGVkOnttYXJnaW5Qcm9wOmZ1bmN0aW9uKHQpe3JldHVybiJtYXJnaW4iKyh3KHQucG9zLCJ0b3AiKT8iVG9wIjoiQm90dG9tIil9LHN0YXJ0UHJvcHM6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD17b3BhY2l0eTowfSlbdGhpcy5tYXJnaW5Qcm9wXT0tdGhpcy4kZWwub2Zmc2V0SGVpZ2h0LHR9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7V3JbdGhpcy5wb3NdfHwoV3JbdGhpcy5wb3NdPXBlKHRoaXMuJGNvbnRhaW5lciwnPGRpdiBjbGFzcz0idWstbm90aWZpY2F0aW9uIHVrLW5vdGlmaWNhdGlvbi0nK3RoaXMucG9zKyciPjwvZGl2PicpKTt2YXIgdD1MZShXclt0aGlzLnBvc10sImRpc3BsYXkiLCJibG9jayIpO3RoaXMuJG1vdW50KHBlKHQsJzxkaXYgY2xhc3M9IicrdGhpcy5jbHNNc2crKHRoaXMuc3RhdHVzPyIgIit0aGlzLmNsc01zZysiLSIrdGhpcy5zdGF0dXM6IiIpKyciPiA8YSBocmVmPSIjIiBjbGFzcz0iJyt0aGlzLmNsc0Nsb3NlKyciIGRhdGEtdWstY2xvc2U+PC9hPiA8ZGl2PicrdGhpcy5tZXNzYWdlKyI8L2Rpdj4gPC9kaXY+IikpfSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsbj1GKExlKHRoaXMuJGVsLHRoaXMubWFyZ2luUHJvcCkpO1hlLnN0YXJ0KExlKHRoaXMuJGVsLHRoaXMuc3RhcnRQcm9wcyksKCh0PXtvcGFjaXR5OjF9KVt0aGlzLm1hcmdpblByb3BdPW4sdCkpLnRoZW4oZnVuY3Rpb24oKXtlLnRpbWVvdXQmJihlLnRpbWVyPXNldFRpbWVvdXQoZS5jbG9zZSxlLnRpbWVvdXQpKX0pfSxldmVudHM6KExyPXtjbGljazpmdW5jdGlvbih0KXtNdCh0LnRhcmdldCwnYVtocmVmPSIjIl0sYVtocmVmPSIiXScpJiZ0LnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZSgpfX0sTHJbbXRdPWZ1bmN0aW9uKCl7dGhpcy50aW1lciYmY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpfSxMcltndF09ZnVuY3Rpb24oKXt0aGlzLnRpbWVvdXQmJih0aGlzLnRpbWVyPXNldFRpbWVvdXQodGhpcy5jbG9zZSx0aGlzLnRpbWVvdXQpKX0sTHIpLG1ldGhvZHM6e2Nsb3NlOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtxdChuLiRlbCwiY2xvc2UiLFtuXSksd2Uobi4kZWwpLFdyW24ucG9zXS5jaGlsZHJlbi5sZW5ndGh8fExlKFdyW24ucG9zXSwiZGlzcGxheSIsIm5vbmUiKX12YXIgbj10aGlzO3RoaXMudGltZXImJmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0P2UoKTpYZS5zdGFydCh0aGlzLiRlbCx0aGlzLnN0YXJ0UHJvcHMpLnRoZW4oZSl9fX07dmFyIFJyPVsieCIsInkiLCJiZ3giLCJiZ3kiLCJyb3RhdGUiLCJzY2FsZSIsImNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQ29sb3IiLCJvcGFjaXR5IiwiYmx1ciIsImh1ZSIsImdyYXlzY2FsZSIsImludmVydCIsInNhdHVyYXRlIiwic2VwaWEiLCJmb3BhY2l0eSIsInN0cm9rZSJdLFlyPXttaXhpbnM6W0dpXSxwcm9wczpSci5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT0ibGlzdCIsdH0se30pLGRhdGE6UnIucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV09dm9pZCAwLHR9LHt9KSxjb21wdXRlZDp7cHJvcHM6ZnVuY3Rpb24obSxnKXt2YXIgdj10aGlzO3JldHVybiBSci5yZWR1Y2UoZnVuY3Rpb24odCxlKXtpZihQKG1bZV0pKXJldHVybiB0O3ZhciBuLGkscixvPWUubWF0Y2goL2NvbG9yL2kpLHM9b3x8Im9wYWNpdHkiPT09ZSxhPW1bZV0uc2xpY2UoMCk7cyYmTGUoZyxlLCIiKSxhLmxlbmd0aDwyJiZhLnVuc2hpZnQoKCJzY2FsZSI9PT1lPzE6cz9MZShnLGUpOjApfHwwKTt2YXIgaD1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gTyhlKSYmZS5yZXBsYWNlKC8tfFxkL2csIiIpLnRyaW0oKXx8dH0sIiIpfShhKTtpZihvKXt2YXIgYz1nLnN0eWxlLmNvbG9yO2E9YS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIExlKExlKHQsImNvbG9yIixlKSwiY29sb3IiKS5zcGxpdCgvWygpLF0vZykuc2xpY2UoMSwtMSkuY29uY2F0KDEpLnNsaWNlKDAsNCkubWFwKEYpfShnLHQpfSksZy5zdHlsZS5jb2xvcj1jfWVsc2UgaWYodyhlLCJiZyIpKXt2YXIgdT0iYmd5Ij09PWU/ImhlaWdodCI6IndpZHRoIjtpZihhPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB3bih0LHUsdi4kZWwpfSksTGUoZywiYmFja2dyb3VuZC1wb3NpdGlvbi0iK2VbMl0sIiIpLGk9TGUoZywiYmFja2dyb3VuZFBvc2l0aW9uIikuc3BsaXQoIiAiKVsieCI9PT1lWzJdPzA6MV0sdi5jb3ZlcnMpe3ZhciBsPU1hdGgubWluLmFwcGx5KE1hdGgsYSksZD1NYXRoLm1heC5hcHBseShNYXRoLGEpLGY9YS5pbmRleE9mKGwpPGEuaW5kZXhPZihkKTtyPWQtbCxhPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LShmP2w6ZCl9KSxuPShmPy1yOjApKyJweCJ9ZWxzZSBuPWl9ZWxzZSBhPWEubWFwKEYpO2lmKCJzdHJva2UiPT09ZSl7aWYoIWEuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdH0pKXJldHVybiB0O3ZhciBwPUFpKHYuJGVsKTtMZShnLCJzdHJva2VEYXNoYXJyYXkiLHApLCIlIj09PWgmJihhPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0KnAvMTAwfSkpLGE9YS5yZXZlcnNlKCksZT0ic3Ryb2tlRGFzaG9mZnNldCJ9cmV0dXJuIHRbZV09e3N0ZXBzOmEsdW5pdDpoLHBvczpuLGJnUG9zOmksZGlmZjpyfSx0fSx7fSl9LGJnUHJvcHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVyblsiYmd4IiwiYmd5Il0uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluIGUucHJvcHN9KX0sY292ZXJzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXQuc3R5bGUuYmFja2dyb3VuZFNpemUsbj0iY292ZXIiPT09TGUoTGUodCwiYmFja2dyb3VuZFNpemUiLCIiKSwiYmFja2dyb3VuZFNpemUiKTtyZXR1cm4gdC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZT1lLG59KGUpfX0sZGlzY29ubmVjdGVkOmZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuX2ltYWdlfSx1cGRhdGU6e3JlYWQ6ZnVuY3Rpb24odCl7dmFyIGg9dGhpcztpZih0LmFjdGl2ZT10aGlzLm1hdGNoTWVkaWEsdC5hY3RpdmUpe2lmKCF0LmltYWdlJiZ0aGlzLmNvdmVycyYmdGhpcy5iZ1Byb3BzLmxlbmd0aCl7dmFyIGU9TGUodGhpcy4kZWwsImJhY2tncm91bmRJbWFnZSIpLnJlcGxhY2UoL15ub25lfHVybFwoWyInXT8oLis/KVsiJ10/XCkkLywiJDEiKTtpZihlKXt2YXIgbj1uZXcgSW1hZ2U7bi5zcmM9ZSwodC5pbWFnZT1uKS5uYXR1cmFsV2lkdGh8fChuLm9ubG9hZD1mdW5jdGlvbigpe3JldHVybiBoLiRlbWl0KCl9KX19dmFyIGk9dC5pbWFnZTtpZihpJiZpLm5hdHVyYWxXaWR0aCl7dmFyIGM9e3dpZHRoOnRoaXMuJGVsLm9mZnNldFdpZHRoLGhlaWdodDp0aGlzLiRlbC5vZmZzZXRIZWlnaHR9LHU9e3dpZHRoOmkubmF0dXJhbFdpZHRoLGhlaWdodDppLm5hdHVyYWxIZWlnaHR9LGw9bnQuY292ZXIodSxjKTt0aGlzLmJnUHJvcHMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1oLnByb3BzW3RdLG49ZS5kaWZmLGk9ZS5iZ1BvcyxyPWUuc3RlcHMsbz0iYmd5Ij09PXQ/ImhlaWdodCI6IndpZHRoIixzPWxbb10tY1tvXTtpZihzPG4pY1tvXT1sW29dK24tcztlbHNlIGlmKG48cyl7dmFyIGE9Y1tvXS93bihpLG8saC4kZWwpO2EmJihoLnByb3BzW3RdLnN0ZXBzPXIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LShzLW4pL2F9KSl9bD1udC5jb3Zlcih1LGMpfSksdC5kaW09bH19fSx3cml0ZTpmdW5jdGlvbih0KXt2YXIgZT10LmRpbTt0LmFjdGl2ZT9lJiZMZSh0aGlzLiRlbCx7YmFja2dyb3VuZFNpemU6ZS53aWR0aCsicHggIitlLmhlaWdodCsicHgiLGJhY2tncm91bmRSZXBlYXQ6Im5vLXJlcGVhdCJ9KTpMZSh0aGlzLiRlbCx7YmFja2dyb3VuZFNpemU6IiIsYmFja2dyb3VuZFJlcGVhdDoiIn0pfSxldmVudHM6WyJyZXNpemUiXX0sbWV0aG9kczp7cmVzZXQ6ZnVuY3Rpb24oKXt2YXIgbj10aGlzO0sodGhpcy5nZXRDc3MoMCksZnVuY3Rpb24odCxlKXtyZXR1cm4gTGUobi4kZWwsZSwiIil9KX0sZ2V0Q3NzOmZ1bmN0aW9uKGwpe3ZhciBkPXRoaXMucHJvcHM7cmV0dXJuIE9iamVjdC5rZXlzKGQpLnJlZHVjZShmdW5jdGlvbih0LGUpe3ZhciBuPWRbZV0saT1uLnN0ZXBzLHI9bi51bml0LG89bi5wb3Mscz1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49Mik7dmFyIGk9cXIodCxlKSxyPWlbMF0sbz1pWzFdLHM9aVsyXTtyZXR1cm4oRChyKT9yK01hdGguYWJzKHItbykqcyoocjxvPzE6LTEpOitvKS50b0ZpeGVkKG4pfShpLGwpO3N3aXRjaChlKXtjYXNlIngiOmNhc2UieSI6cj1yfHwicHgiLHQudHJhbnNmb3JtKz0iIHRyYW5zbGF0ZSIrcChlKSsiKCIrRihzKS50b0ZpeGVkKCJweCI9PT1yPzA6MikrcisiKSI7YnJlYWs7Y2FzZSJyb3RhdGUiOnI9cnx8ImRlZyIsdC50cmFuc2Zvcm0rPSIgcm90YXRlKCIrKHMrcikrIikiO2JyZWFrO2Nhc2Uic2NhbGUiOnQudHJhbnNmb3JtKz0iIHNjYWxlKCIrcysiKSI7YnJlYWs7Y2FzZSJiZ3kiOmNhc2UiYmd4Ijp0WyJiYWNrZ3JvdW5kLXBvc2l0aW9uLSIrZVsyXV09ImNhbGMoIitvKyIgKyAiK3MrInB4KSI7YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJiYWNrZ3JvdW5kQ29sb3IiOmNhc2UiYm9yZGVyQ29sb3IiOnZhciBhPXFyKGksbCksaD1hWzBdLGM9YVsxXSx1PWFbMl07dFtlXT0icmdiYSgiK2gubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrPXUqKGNbZV0tdCksMz09PWU/Rih0KTpwYXJzZUludCh0LDEwKX0pLmpvaW4oIiwiKSsiKSI7YnJlYWs7Y2FzZSJibHVyIjpyPXJ8fCJweCIsdC5maWx0ZXIrPSIgYmx1cigiKyhzK3IpKyIpIjticmVhaztjYXNlImh1ZSI6cj1yfHwiZGVnIix0LmZpbHRlcis9IiBodWUtcm90YXRlKCIrKHMrcikrIikiO2JyZWFrO2Nhc2UiZm9wYWNpdHkiOnI9cnx8IiUiLHQuZmlsdGVyKz0iIG9wYWNpdHkoIisocytyKSsiKSI7YnJlYWs7Y2FzZSJncmF5c2NhbGUiOmNhc2UiaW52ZXJ0IjpjYXNlInNhdHVyYXRlIjpjYXNlInNlcGlhIjpyPXJ8fCIlIix0LmZpbHRlcis9IiAiK2UrIigiKyhzK3IpKyIpIjticmVhaztkZWZhdWx0OnRbZV09c31yZXR1cm4gdH0se3RyYW5zZm9ybToiIixmaWx0ZXI6IiJ9KX19fTtmdW5jdGlvbiBxcih0LGUpe3ZhciBuPXQubGVuZ3RoLTEsaT1NYXRoLm1pbihNYXRoLmZsb29yKG4qZSksbi0xKSxyPXQuc2xpY2UoaSxpKzIpO3JldHVybiByLnB1c2goMT09PWU/MTplJSgxL24pKm4pLHJ9dmFyIFVyPXttaXhpbnM6W1lyXSxwcm9wczp7dGFyZ2V0OlN0cmluZyx2aWV3cG9ydDpOdW1iZXIsZWFzaW5nOk51bWJlcn0sZGF0YTp7dGFyZ2V0OiExLHZpZXdwb3J0OjEsZWFzaW5nOjF9LGNvbXB1dGVkOnt0YXJnZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10LnRhcmdldDtyZXR1cm4gZnVuY3Rpb24gdChlKXtyZXR1cm4gZT8ib2Zmc2V0VG9wImluIGU/ZTp0KGUucGFyZW50Tm9kZSk6ZG9jdW1lbnQuYm9keX0obiYmd3QobixlKXx8ZSl9fSx1cGRhdGU6e3JlYWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10LnBlcmNlbnQ7aWYoInNjcm9sbCIhPT1lJiYobj0hMSksdC5hY3RpdmUpe3ZhciBpPW47cmV0dXJue3BlcmNlbnQ6bj1mdW5jdGlvbih0LGUpe3JldHVybiBaKHQqKDEtKGUtZSp0KSkpfShtbih0aGlzLnRhcmdldCkvKHRoaXMudmlld3BvcnR8fDEpLHRoaXMuZWFzaW5nKSxzdHlsZTppIT09biYmdGhpcy5nZXRDc3Mobil9fX0sd3JpdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdHlsZTt0LmFjdGl2ZT9lJiZMZSh0aGlzLiRlbCxlKTp0aGlzLnJlc2V0KCl9LGV2ZW50czpbInNjcm9sbCIsInJlc2l6ZSJdfX07dmFyIFhyPXt1cGRhdGU6e3dyaXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RhY2subGVuZ3RoJiYhdGhpcy5kcmFnZ2luZyl7dmFyIHQ9dGhpcy5nZXRWYWxpZEluZGV4KHRoaXMuaW5kZXgpO350aGlzLnByZXZJbmRleCYmdGhpcy5pbmRleD09PXR8fHRoaXMuc2hvdyh0KX19LGV2ZW50czpbInJlc2l6ZSJdfX07ZnVuY3Rpb24gS3IodCxlLG4pe3ZhciBpPVpyKHQsZSk7cmV0dXJuIG4/aS1mdW5jdGlvbih0LGUpe3JldHVybiBRcihlKS53aWR0aC8yLVFyKHQpLndpZHRoLzJ9KHQsZSk6TWF0aC5taW4oaSxHcihlKSl9ZnVuY3Rpb24gR3IodCl7cmV0dXJuIE1hdGgubWF4KDAsSnIodCktUXIodCkud2lkdGgpfWZ1bmN0aW9uIEpyKHQpe3JldHVybiBlbyh0KS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gUXIoZSkud2lkdGgrdH0sMCl9ZnVuY3Rpb24gWnIodCxlKXtyZXR1cm4ob24odCkubGVmdCsoaHQ/UXIodCkud2lkdGgtUXIoZSkud2lkdGg6MCkpKihodD8tMToxKX1mdW5jdGlvbiBRcih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlvbiB0byh0LGUsbil7cXQodCxVdChlLCExLCExLG4pKX1mdW5jdGlvbiBlbyh0KXtyZXR1cm4gVyh0LmNoaWxkcmVuKX12YXIgbm89e21peGluczpbZWksRHIsWHJdLHByb3BzOntjZW50ZXI6Qm9vbGVhbixzZXRzOkJvb2xlYW59LGRhdGE6e2NlbnRlcjohMSxzZXRzOiExLGF0dHJJdGVtOiJ1ay1zbGlkZXItaXRlbSIsc2VsTGlzdDoiLnVrLXNsaWRlci1pdGVtcyIsc2VsTmF2OiIudWstc2xpZGVyLW5hdiIsY2xzQ29udGFpbmVyOiJ1ay1zbGlkZXItY29udGFpbmVyIixUcmFuc2l0aW9uZXI6ZnVuY3Rpb24ocixpLG8sdCl7dmFyIGU9dC5jZW50ZXIscz10LmVhc2luZyxhPXQubGlzdCxoPW5ldyBlZSxuPXI/S3IocixhLGUpOktyKGksYSxlKStRcihpKS53aWR0aCpvLGM9aT9LcihpLGEsZSk6bitRcihyKS53aWR0aCpvKihodD8tMToxKTtyZXR1cm57ZGlyOm8sc2hvdzpmdW5jdGlvbih0LGUsbil7dm9pZCAwPT09ZSYmKGU9MCk7dmFyIGk9bj8ibGluZWFyIjpzO3JldHVybiB0LT1NYXRoLnJvdW5kKHQqWihlLC0xLDEpKSx0aGlzLnRyYW5zbGF0ZShlKSxyJiZ0aGlzLnVwZGF0ZVRyYW5zbGF0ZXMoKSxlPXI/ZTpaKGUsMCwxKSx0byh0aGlzLmdldEl0ZW1JbigpLCJpdGVtaW4iLHtwZXJjZW50OmUsZHVyYXRpb246dCx0aW1pbmc6aSxkaXI6b30pLHImJnRvKHRoaXMuZ2V0SXRlbUluKCEwKSwiaXRlbW91dCIse3BlcmNlbnQ6MS1lLGR1cmF0aW9uOnQsdGltaW5nOmksZGlyOm99KSxYZS5zdGFydChhLHt0cmFuc2Zvcm06X3IoLWMqKGh0Py0xOjEpLCJweCIpfSx0LGkpLnRoZW4oaC5yZXNvbHZlLFEpLGgucHJvbWlzZX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBYZS5zdG9wKGEpfSxjYW5jZWw6ZnVuY3Rpb24oKXtYZS5jYW5jZWwoYSl9LHJlc2V0OmZ1bmN0aW9uKCl7TGUoYSwidHJhbnNmb3JtIiwiIil9LGZvcndhcmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5wZXJjZW50KCkpLFhlLmNhbmNlbChhKSx0aGlzLnNob3codCxlLCEwKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0RGlzdGFuY2UoKSpvKihodD8tMToxKTtMZShhLCJ0cmFuc2Zvcm0iLF9yKFooZS1lKnQtYywtSnIoYSksUXIoYSkud2lkdGgpKihodD8tMToxKSwicHgiKSksdGhpcy51cGRhdGVUcmFuc2xhdGVzKCksciYmKHQ9Wih0LC0xLDEpLHRvKHRoaXMuZ2V0SXRlbUluKCksIml0ZW10cmFuc2xhdGVpbiIse3BlcmNlbnQ6dCxkaXI6b30pLHRvKHRoaXMuZ2V0SXRlbUluKCEwKSwiaXRlbXRyYW5zbGF0ZW91dCIse3BlcmNlbnQ6MS10LGRpcjpvfSkpfSxwZXJjZW50OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguYWJzKChMZShhLCJ0cmFuc2Zvcm0iKS5zcGxpdCgiLCIpWzRdKihodD8tMToxKStuKS8oYy1uKSl9LGdldERpc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguYWJzKGMtbil9LGdldEl0ZW1JbjpmdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5nZXRBY3RpdmVzKCksbj1HKGVvKGEpLCJvZmZzZXRMZWZ0IiksaT11ZShuLGVbMDxvKih0Py0xOjEpP2UubGVuZ3RoLTE6MF0pO3JldHVybn5pJiZuW2krKHImJiF0P286MCldfSxnZXRBY3RpdmVzOmZ1bmN0aW9uKCl7dmFyIG49S3Iocnx8aSxhLGUpO3JldHVybiBHKGVvKGEpLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT1acih0LGEpO3JldHVybiBuPD1lJiZlK1FyKHQpLndpZHRoPD1RcihhKS53aWR0aCtufSksIm9mZnNldExlZnQiKX0sdXBkYXRlVHJhbnNsYXRlczpmdW5jdGlvbigpe3ZhciBuPXRoaXMuZ2V0QWN0aXZlcygpO2VvKGEpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9YihuLHQpO3RvKHQsIml0ZW10cmFuc2xhdGUiKyhlPyJpbiI6Im91dCIpLHtwZXJjZW50OmU/MTowLGRpcjp0Lm9mZnNldExlZnQ8PWkub2Zmc2V0TGVmdD8xOi0xfSl9KX19fX0sY29tcHV0ZWQ6e2F2Z1dpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIEpyKHRoaXMubGlzdCkvdGhpcy5sZW5ndGh9LGZpbml0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5maW5pdGV8fEpyKHRoaXMubGlzdCk8UXIodGhpcy5saXN0KS53aWR0aCtmdW5jdGlvbih0KXtyZXR1cm4gZW8odCkucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsUXIoZSkud2lkdGgpfSwwKX0odGhpcy5saXN0KSt0aGlzLmNlbnRlcn0sbWF4SW5kZXg6ZnVuY3Rpb24oKXtpZighdGhpcy5maW5pdGV8fHRoaXMuY2VudGVyJiYhdGhpcy5zZXRzKXJldHVybiB0aGlzLmxlbmd0aC0xO2lmKHRoaXMuY2VudGVyKXJldHVybiBYKHRoaXMuc2V0cyk7TGUodGhpcy5zbGlkZXMsIm9yZGVyIiwiIik7Zm9yKHZhciB0PUdyKHRoaXMubGlzdCksZT10aGlzLmxlbmd0aDtlLS07KWlmKFpyKHRoaXMubGlzdC5jaGlsZHJlbltlXSx0aGlzLmxpc3QpPHQpcmV0dXJuIE1hdGgubWluKGUrMSx0aGlzLmxlbmd0aC0xKTtyZXR1cm4gMH0sc2V0czpmdW5jdGlvbih0KXt2YXIgbz10aGlzLGU9dC5zZXRzLHM9UXIodGhpcy5saXN0KS53aWR0aC8odGhpcy5jZW50ZXI/MjoxKSxhPTAsaD1zLGM9MDtyZXR1cm4hQihlPWUmJnRoaXMuc2xpZGVzLnJlZHVjZShmdW5jdGlvbih0LGUsbil7dmFyIGk9UXIoZSkud2lkdGg7aWYoYTxjK2kmJighby5jZW50ZXImJm4+by5tYXhJbmRleCYmKG49by5tYXhJbmRleCksIWIodCxuKSkpe3ZhciByPW8uc2xpZGVzW24rMV07by5jZW50ZXImJnImJmk8aC1RcihyKS53aWR0aC8yP2gtPWk6KGg9cyx0LnB1c2gobiksYT1jK3MrKG8uY2VudGVyP2kvMjowKSl9cmV0dXJuIGMrPWksdH0sW10pKSYmZX0sdHJhbnNpdGlvbk9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57Y2VudGVyOnRoaXMuY2VudGVyLGxpc3Q6dGhpcy5saXN0fX19LGNvbm5lY3RlZDpmdW5jdGlvbigpe0RlKHRoaXMuJGVsLHRoaXMuY2xzQ29udGFpbmVyLCFUZSgiLiIrdGhpcy5jbHNDb250YWluZXIsdGhpcy4kZWwpKX0sdXBkYXRlOnt3cml0ZTpmdW5jdGlvbigpe3ZhciBuPXRoaXM7RWUoIlsiK3RoaXMuYXR0ckl0ZW0rIl0sW2RhdGEtIit0aGlzLmF0dHJJdGVtKyJdIix0aGlzLiRlbCkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1zdCh0LG4uYXR0ckl0ZW0pO24ubWF4SW5kZXgmJkRlKHQsInVrLWhpZGRlbiIseihlKSYmKG4uc2V0cyYmIWIobi5zZXRzLEYoZSkpfHxlPm4ubWF4SW5kZXgpKX0pLHRoaXMuZHJhZ2dpbmd8fHRoaXMuc3RhY2subGVuZ3RofHx0aGlzLl9nZXRUcmFuc2l0aW9uZXIoKS50cmFuc2xhdGUoMSl9LGV2ZW50czpbInJlc2l6ZSJdfSxldmVudHM6e2JlZm9yZWl0ZW1zaG93OmZ1bmN0aW9uKHQpeyF0aGlzLmRyYWdnaW5nJiZ0aGlzLnNldHMmJnRoaXMuc3RhY2subGVuZ3RoPDImJiFiKHRoaXMuc2V0cyx0aGlzLmluZGV4KSYmKHRoaXMuaW5kZXg9dGhpcy5nZXRWYWxpZEluZGV4KCkpO3ZhciBlPU1hdGguYWJzKHRoaXMuaW5kZXgtdGhpcy5wcmV2SW5kZXgrKDA8dGhpcy5kaXImJnRoaXMuaW5kZXg8dGhpcy5wcmV2SW5kZXh8fHRoaXMuZGlyPDAmJnRoaXMuaW5kZXg+dGhpcy5wcmV2SW5kZXg/KHRoaXMubWF4SW5kZXgrMSkqdGhpcy5kaXI6MCkpO2lmKCF0aGlzLmRyYWdnaW5nJiYxPGUpe2Zvcih2YXIgbj0wO248ZTtuKyspdGhpcy5zdGFjay5zcGxpY2UoMSwwLDA8dGhpcy5kaXI/Im5leHQiOiJwcmV2aW91cyIpO3QucHJldmVudERlZmF1bHQoKX1lbHNlIHRoaXMuZHVyYXRpb249enIodGhpcy5hdmdXaWR0aC90aGlzLnZlbG9jaXR5KSooUXIodGhpcy5kaXI8MHx8IXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XT90aGlzLnNsaWRlc1t0aGlzLmluZGV4XTp0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF0pLndpZHRoL3RoaXMuYXZnV2lkdGgpLHRoaXMucmVvcmRlcigpfSxpdGVtc2hvdzpmdW5jdGlvbigpe1AodGhpcy5wcmV2SW5kZXgpfHxBZSh0aGlzLl9nZXRUcmFuc2l0aW9uZXIoKS5nZXRJdGVtSW4oKSx0aGlzLmNsc0FjdGl2ZSl9LGl0ZW1zaG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRUcmFuc2l0aW9uZXIodGhpcy5pbmRleCkuZ2V0QWN0aXZlcygpO3RoaXMuc2xpZGVzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIERlKHQsZS5jbHNBY3RpdmUsYihuLHQpKX0pLHRoaXMuc2V0cyYmIWIodGhpcy5zZXRzLEYodGhpcy5pbmRleCkpfHx0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBEZSh0LGUuY2xzQWN0aXZhdGVkLGIobix0KSl9KX19LG1ldGhvZHM6e3Jlb3JkZXI6ZnVuY3Rpb24oKXt2YXIgbj10aGlzO2lmKExlKHRoaXMuc2xpZGVzLCJvcmRlciIsIiIpLCF0aGlzLmZpbml0ZSl7dmFyIGk9MDx0aGlzLmRpciYmdGhpcy5zbGlkZXNbdGhpcy5wcmV2SW5kZXhdP3RoaXMucHJldkluZGV4OnRoaXMuaW5kZXg7aWYodGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbih0LGUpe3JldHVybiBMZSh0LCJvcmRlciIsMDxuLmRpciYmZTxpPzE6bi5kaXI8MCYmZT49bi5pbmRleD8tMToiIil9KSx0aGlzLmNlbnRlcilmb3IodmFyIHQ9dGhpcy5zbGlkZXNbaV0sZT1Rcih0aGlzLmxpc3QpLndpZHRoLzItUXIodCkud2lkdGgvMixyPTA7MDxlOyl7dmFyIG89dGhpcy5nZXRJbmRleCgtLXIraSxpKSxzPXRoaXMuc2xpZGVzW29dO0xlKHMsIm9yZGVyIixpPG8/LTI6LTEpLGUtPVFyKHMpLndpZHRofX19LGdldFZhbGlkSW5kZXg6ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT10JiYodD10aGlzLmluZGV4KSx2b2lkIDA9PT1lJiYoZT10aGlzLnByZXZJbmRleCksdD10aGlzLmdldEluZGV4KHQsZSksIXRoaXMuc2V0cylyZXR1cm4gdDt2YXIgbjtkb3tpZihiKHRoaXMuc2V0cyx0KSlyZXR1cm4gdDtuPXQsdD10aGlzLmdldEluZGV4KHQrdGhpcy5kaXIsZSl9d2hpbGUodCE9PW4pO3JldHVybiB0fX19LGlvPXttaXhpbnM6W1lyXSxkYXRhOntzZWxJdGVtOiIhbGkifSxjb21wdXRlZDp7aXRlbTpmdW5jdGlvbih0LGUpe3JldHVybiB3dCh0LnNlbEl0ZW0sZSl9fSxldmVudHM6W3tuYW1lOiJpdGVtc2hvd24iLHNlbGY6ITAsZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtfSxoYW5kbGVyOmZ1bmN0aW9uKCl7TGUodGhpcy4kZWwsdGhpcy5nZXRDc3MoLjUpKX19LHtuYW1lOiJpdGVtaW4gaXRlbW91dCIsc2VsZjohMCxlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW19LGhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLG49dC5kZXRhaWwsaT1uLnBlcmNlbnQscj1uLmR1cmF0aW9uLG89bi50aW1pbmcscz1uLmRpcjtYZS5jYW5jZWwodGhpcy4kZWwpLExlKHRoaXMuJGVsLHRoaXMuZ2V0Q3NzKG9vKGUscyxpKSkpLFhlLnN0YXJ0KHRoaXMuJGVsLHRoaXMuZ2V0Q3NzKHJvKGUpPy41OjA8cz8xOjApLHIsbykuY2F0Y2goUSl9fSx7bmFtZToidHJhbnNpdGlvbmNhbmNlbGVkIHRyYW5zaXRpb25lbmQiLHNlbGY6ITAsZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtfSxoYW5kbGVyOmZ1bmN0aW9uKCl7WGUuY2FuY2VsKHRoaXMuJGVsKX19LHtuYW1lOiJpdGVtdHJhbnNsYXRlaW4gaXRlbXRyYW5zbGF0ZW91dCIsc2VsZjohMCxlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW19LGhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLG49dC5kZXRhaWwsaT1uLnBlcmNlbnQscj1uLmRpcjtYZS5jYW5jZWwodGhpcy4kZWwpLExlKHRoaXMuJGVsLHRoaXMuZ2V0Q3NzKG9vKGUscixpKSkpfX1dfTtmdW5jdGlvbiBybyh0KXtyZXR1cm4gdSh0LCJpbiIpfWZ1bmN0aW9uIG9vKHQsZSxuKXtyZXR1cm4gbi89Mixybyh0KT9lPDA/MS1uOm46ZTwwP246MS1ufXZhciBzbyxhbz1VKHt9LENyLHtmYWRlOntzaG93OmZ1bmN0aW9uKCl7cmV0dXJuW3tvcGFjaXR5OjAsekluZGV4OjB9LHt6SW5kZXg6LTF9XX0scGVyY2VudDpmdW5jdGlvbih0KXtyZXR1cm4gMS1MZSh0LCJvcGFjaXR5Iil9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXtyZXR1cm5be29wYWNpdHk6MS10LHpJbmRleDowfSx7ekluZGV4Oi0xfV19fSxzY2FsZTp7c2hvdzpmdW5jdGlvbigpe3JldHVyblt7b3BhY2l0eTowLHRyYW5zZm9ybTpOcigxLjUpLHpJbmRleDowfSx7ekluZGV4Oi0xfV19LHBlcmNlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIDEtTGUodCwib3BhY2l0eSIpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCl7cmV0dXJuW3tvcGFjaXR5OjEtdCx0cmFuc2Zvcm06TnIoMSsuNSp0KSx6SW5kZXg6MH0se3pJbmRleDotMX1dfX0scHVsbDp7c2hvdzpmdW5jdGlvbih0KXtyZXR1cm4gdDwwP1t7dHJhbnNmb3JtOl9yKDMwKSx6SW5kZXg6LTF9LHt0cmFuc2Zvcm06X3IoKSx6SW5kZXg6MH1dOlt7dHJhbnNmb3JtOl9yKC0xMDApLHpJbmRleDowfSx7dHJhbnNmb3JtOl9yKCksekluZGV4Oi0xfV19LHBlcmNlbnQ6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuPDA/MS1BcihlKTpBcih0KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU8MD9be3RyYW5zZm9ybTpfcigzMCp0KSx6SW5kZXg6LTF9LHt0cmFuc2Zvcm06X3IoLTEwMCooMS10KSksekluZGV4OjB9XTpbe3RyYW5zZm9ybTpfcigxMDAqLXQpLHpJbmRleDowfSx7dHJhbnNmb3JtOl9yKDMwKigxLXQpKSx6SW5kZXg6LTF9XX19LHB1c2g6e3Nob3c6ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD9be3RyYW5zZm9ybTpfcigxMDApLHpJbmRleDowfSx7dHJhbnNmb3JtOl9yKCksekluZGV4Oi0xfV06W3t0cmFuc2Zvcm06X3IoLTMwKSx6SW5kZXg6LTF9LHt0cmFuc2Zvcm06X3IoKSx6SW5kZXg6MH1dfSxwZXJjZW50OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gMDxuPzEtQXIoZSk6QXIodCl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBlPDA/W3t0cmFuc2Zvcm06X3IoMTAwKnQpLHpJbmRleDowfSx7dHJhbnNmb3JtOl9yKC0zMCooMS10KSksekluZGV4Oi0xfV06W3t0cmFuc2Zvcm06X3IoLTMwKnQpLHpJbmRleDotMX0se3RyYW5zZm9ybTpfcigxMDAqKDEtdCkpLHpJbmRleDowfV19fX0pLGhvPXttaXhpbnM6W2VpLEJyLFhyXSxwcm9wczp7cmF0aW86U3RyaW5nLG1pbkhlaWdodDpOdW1iZXIsbWF4SGVpZ2h0Ok51bWJlcn0sZGF0YTp7cmF0aW86IjE2OjkiLG1pbkhlaWdodDohMSxtYXhIZWlnaHQ6ITEsc2VsTGlzdDoiLnVrLXNsaWRlc2hvdy1pdGVtcyIsYXR0ckl0ZW06InVrLXNsaWRlc2hvdy1pdGVtIixzZWxOYXY6Ii51ay1zbGlkZXNob3ctbmF2IixBbmltYXRpb25zOmFvfSx1cGRhdGU6e3JlYWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJhdGlvLnNwbGl0KCI6IikubWFwKE51bWJlciksZT10WzBdLG49dFsxXTtyZXR1cm4gbj1uKnRoaXMubGlzdC5vZmZzZXRXaWR0aC9lfHwwLHRoaXMubWluSGVpZ2h0JiYobj1NYXRoLm1heCh0aGlzLm1pbkhlaWdodCxuKSksdGhpcy5tYXhIZWlnaHQmJihuPU1hdGgubWluKHRoaXMubWF4SGVpZ2h0LG4pKSx7aGVpZ2h0Om4tY24odGhpcy5saXN0LCJjb250ZW50LWJveCIpfX0sd3JpdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5oZWlnaHQ7MDxlJiZMZSh0aGlzLmxpc3QsIm1pbkhlaWdodCIsZSl9LGV2ZW50czpbInJlc2l6ZSJdfX0sY289e21peGluczpbZWkseHJdLHByb3BzOntncm91cDpTdHJpbmcsdGhyZXNob2xkOk51bWJlcixjbHNJdGVtOlN0cmluZyxjbHNQbGFjZWhvbGRlcjpTdHJpbmcsY2xzRHJhZzpTdHJpbmcsY2xzRHJhZ1N0YXRlOlN0cmluZyxjbHNCYXNlOlN0cmluZyxjbHNOb0RyYWc6U3RyaW5nLGNsc0VtcHR5OlN0cmluZyxjbHNDdXN0b206U3RyaW5nLGhhbmRsZTpTdHJpbmd9LGRhdGE6e2dyb3VwOiExLHRocmVzaG9sZDo1LGNsc0l0ZW06InVrLXNvcnRhYmxlLWl0ZW0iLGNsc1BsYWNlaG9sZGVyOiJ1ay1zb3J0YWJsZS1wbGFjZWhvbGRlciIsY2xzRHJhZzoidWstc29ydGFibGUtZHJhZyIsY2xzRHJhZ1N0YXRlOiJ1ay1kcmFnIixjbHNCYXNlOiJ1ay1zb3J0YWJsZSIsY2xzTm9EcmFnOiJ1ay1zb3J0YWJsZS1ub2RyYWciLGNsc0VtcHR5OiJ1ay1zb3J0YWJsZS1lbXB0eSIsY2xzQ3VzdG9tOiIiLGhhbmRsZTohMX0sY3JlYXRlZDpmdW5jdGlvbigpe3ZhciBvPXRoaXM7WyJpbml0Iiwic3RhcnQiLCJtb3ZlIiwiZW5kIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj1vW3RdO29bdF09ZnVuY3Rpb24odCl7by5zY3JvbGxZPXdpbmRvdy5wYWdlWU9mZnNldDt2YXIgZT10ZSh0LCJwYWdlIiksbj1lLngsaT1lLnk7by5wb3M9e3g6bix5Oml9LHIodCl9fSl9LGV2ZW50czp7bmFtZTpkdCxwYXNzaXZlOiExLGhhbmRsZXI6ImluaXQifSx1cGRhdGU6e3dyaXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5jbHNFbXB0eSYmRGUodGhpcy4kZWwsdGhpcy5jbHNFbXB0eSxCKHRoaXMuJGVsLmNoaWxkcmVuKSksTGUodGhpcy5oYW5kbGU/RWUodGhpcy5oYW5kbGUsdGhpcy4kZWwpOnRoaXMuJGVsLmNoaWxkcmVuLHt0b3VjaEFjdGlvbjoibm9uZSIsdXNlclNlbGVjdDoibm9uZSJ9KSx0aGlzLmRyYWcpe3ZhciB0PW5uKHdpbmRvdyksZT10LnJpZ2h0LG49dC5ib3R0b207bm4odGhpcy5kcmFnLHt0b3A6Wih0aGlzLnBvcy55K3RoaXMub3JpZ2luLnRvcCwwLG4tdGhpcy5kcmFnLm9mZnNldEhlaWdodCksbGVmdDpaKHRoaXMucG9zLngrdGhpcy5vcmlnaW4ubGVmdCwwLGUtdGhpcy5kcmFnLm9mZnNldFdpZHRoKX0pLGZ1bmN0aW9uIHModCl7dmFyIGE9dC54O3ZhciBoPXQueTtjbGVhclRpbWVvdXQoc28pOyhlPWRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYS13aW5kb3cucGFnZVhPZmZzZXQsaC13aW5kb3cucGFnZVlPZmZzZXQpLG49Zm8oKSxmdW5jdGlvbih0LGUpe3ZhciBuPVtdO2Zvcig7ZSh0KSYmbi51bnNoaWZ0KHQpLHQ9dCYmdC5wYXJlbnRFbGVtZW50Oyk7cmV0dXJuIG59KGUsZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1ufHxsby50ZXN0KExlKHQsIm92ZXJmbG93IikpfSkpLnNvbWUoZnVuY3Rpb24odCl7dmFyIGU9dC5zY3JvbGxUb3Asbj10LnNjcm9sbEhlaWdodDtmbygpPT09dCYmKHQ9d2luZG93LG4tPXdpbmRvdy5pbm5lckhlaWdodCk7dmFyIGk9bm4odCkscj1pLnRvcCxvPWkuYm90dG9tO2lmKHI8aCYmaDxyKzMwP2UtPTU6aDxvJiZvLTIwPGgmJihlKz01KSwwPGUmJmU8bilyZXR1cm4gc289c2V0VGltZW91dChmdW5jdGlvbigpe2duKHQsZSkscyh7eDphLHk6aH0pfSwxMCl9KTt2YXIgZSxufSh0aGlzLnBvcyl9fX0sbWV0aG9kczp7aW5pdDpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldCxuPXQuYnV0dG9uLGk9dC5kZWZhdWx0UHJldmVudGVkLHI9Vyh0aGlzLiRlbC5jaGlsZHJlbikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBXdChlLHQpfSlbMF07IXJ8fGl8fDA8bnx8RnQoZSl8fFd0KGUsIi4iK3RoaXMuY2xzTm9EcmFnKXx8dGhpcy5oYW5kbGUmJiFXdChlLHRoaXMuaGFuZGxlKXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLnRvdWNoZWQ9W3RoaXNdLHRoaXMucGxhY2Vob2xkZXI9cix0aGlzLm9yaWdpbj1VKHt0YXJnZXQ6ZSxpbmRleDp1ZShyKX0sdGhpcy5wb3MpLFZ0KGRvY3VtZW50LGZ0LHRoaXMubW92ZSksVnQoZG9jdW1lbnQscHQsdGhpcy5lbmQpLFZ0KHdpbmRvdywic2Nyb2xsIix0aGlzLnNjcm9sbCksdGhpcy50aHJlc2hvbGR8fHRoaXMuc3RhcnQodCkpfSxzdGFydDpmdW5jdGlvbih0KXt0aGlzLmRyYWc9cGUodGhpcy4kY29udGFpbmVyLHRoaXMucGxhY2Vob2xkZXIub3V0ZXJIVE1MLnJlcGxhY2UoL148bGkvaSwiPGRpdiIpLnJlcGxhY2UoL2xpPiQvaSwiZGl2PiIpKSxMZSh0aGlzLmRyYWcsVSh7Ym94U2l6aW5nOiJib3JkZXItYm94Iix3aWR0aDp0aGlzLnBsYWNlaG9sZGVyLm9mZnNldFdpZHRoLGhlaWdodDp0aGlzLnBsYWNlaG9sZGVyLm9mZnNldEhlaWdodCxvdmVyZmxvdzoiaGlkZGVuIn0sTGUodGhpcy5wbGFjZWhvbGRlcixbInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSkpKSxpdCh0aGlzLmRyYWcsInVrLW5vLWJvb3QiLCIiKSxBZSh0aGlzLmRyYWcsdGhpcy5jbHNEcmFnLHRoaXMuY2xzQ3VzdG9tKSxzbih0aGlzLmRyYWcuZmlyc3RFbGVtZW50Q2hpbGQsc24odGhpcy5wbGFjZWhvbGRlci5maXJzdEVsZW1lbnRDaGlsZCkpO3ZhciBlPW5uKHRoaXMucGxhY2Vob2xkZXIpLG49ZS5sZWZ0LGk9ZS50b3A7VSh0aGlzLm9yaWdpbix7bGVmdDpuLXRoaXMucG9zLngsdG9wOmktdGhpcy5wb3MueX0pLEFlKHRoaXMucGxhY2Vob2xkZXIsdGhpcy5jbHNQbGFjZWhvbGRlciksQWUodGhpcy4kZWwuY2hpbGRyZW4sdGhpcy5jbHNJdGVtKSxBZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy5jbHNEcmFnU3RhdGUpLHF0KHRoaXMuJGVsLCJzdGFydCIsW3RoaXMsdGhpcy5wbGFjZWhvbGRlcl0pLHRoaXMubW92ZSh0KX0sbW92ZTpmdW5jdGlvbih0KXtpZih0aGlzLmRyYWcpe3RoaXMuJGVtaXQoKTt2YXIgZT0ibW91c2Vtb3ZlIj09PXQudHlwZT90LnRhcmdldDpkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRoaXMucG9zLngtd2luZG93LnBhZ2VYT2Zmc2V0LHRoaXMucG9zLnktd2luZG93LnBhZ2VZT2Zmc2V0KSxuPXRoaXMuZ2V0U29ydGFibGUoZSksaT10aGlzLmdldFNvcnRhYmxlKHRoaXMucGxhY2Vob2xkZXIpLHI9biE9PWk7aWYobiYmIVd0KGUsdGhpcy5wbGFjZWhvbGRlcikmJighcnx8bi5ncm91cCYmbi5ncm91cD09PWkuZ3JvdXApKXtpZihlPW4uJGVsPT09ZS5wYXJlbnROb2RlJiZlfHxXKG4uJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIFd0KGUsdCl9KVswXSxyKWkucmVtb3ZlKHRoaXMucGxhY2Vob2xkZXIpO2Vsc2UgaWYoIWUpcmV0dXJuO24uaW5zZXJ0KHRoaXMucGxhY2Vob2xkZXIsZSksYih0aGlzLnRvdWNoZWQsbil8fHRoaXMudG91Y2hlZC5wdXNoKG4pfX1lbHNlKE1hdGguYWJzKHRoaXMucG9zLngtdGhpcy5vcmlnaW4ueCk+dGhpcy50aHJlc2hvbGR8fE1hdGguYWJzKHRoaXMucG9zLnktdGhpcy5vcmlnaW4ueSk+dGhpcy50aHJlc2hvbGQpJiZ0aGlzLnN0YXJ0KHQpfSxlbmQ6ZnVuY3Rpb24odCl7aWYoUnQoZG9jdW1lbnQsZnQsdGhpcy5tb3ZlKSxSdChkb2N1bWVudCxwdCx0aGlzLmVuZCksUnQod2luZG93LCJzY3JvbGwiLHRoaXMuc2Nyb2xsKSx0aGlzLmRyYWcpe2NsZWFyVGltZW91dChzbyk7dmFyIGU9dGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTt0aGlzPT09ZT90aGlzLm9yaWdpbi5pbmRleCE9PXVlKHRoaXMucGxhY2Vob2xkZXIpJiZxdCh0aGlzLiRlbCwibW92ZWQiLFt0aGlzLHRoaXMucGxhY2Vob2xkZXJdKToocXQoZS4kZWwsImFkZGVkIixbZSx0aGlzLnBsYWNlaG9sZGVyXSkscXQodGhpcy4kZWwsInJlbW92ZWQiLFt0aGlzLHRoaXMucGxhY2Vob2xkZXJdKSkscXQodGhpcy4kZWwsInN0b3AiLFt0aGlzLHRoaXMucGxhY2Vob2xkZXJdKSx3ZSh0aGlzLmRyYWcpLHRoaXMuZHJhZz1udWxsO3ZhciBuPXRoaXMudG91Y2hlZC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xzUGxhY2Vob2xkZXIrIiAiK3QuY2xzSXRlbX0pLmpvaW4oIiAiKTt0aGlzLnRvdWNoZWQuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gX2UodC4kZWwuY2hpbGRyZW4sbil9KSxfZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy5jbHNEcmFnU3RhdGUpfWVsc2UidG91Y2hlbmQiPT09dC50eXBlJiZ0LnRhcmdldC5jbGljaygpfSxzY3JvbGw6ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cucGFnZVlPZmZzZXQ7dCE9PXRoaXMuc2Nyb2xsWSYmKHRoaXMucG9zLnkrPXQtdGhpcy5zY3JvbGxZLHRoaXMuc2Nyb2xsWT10LHRoaXMuJGVtaXQoKSl9LGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7QWUodGhpcy4kZWwuY2hpbGRyZW4sdGhpcy5jbHNJdGVtKTtmdW5jdGlvbiBpKCl7ZT8hV3QodCxuLiRlbCl8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucGFyZW50Tm9kZT09PWUucGFyZW50Tm9kZSYmdWUodCk+dWUoZSl9KHQsZSk/bWUoZSx0KTpnZShlLHQpOnBlKG4uJGVsLHQpfXRoaXMuYW5pbWF0aW9uP3RoaXMuYW5pbWF0ZShpKTppKCl9LHJlbW92ZTpmdW5jdGlvbih0KXtXdCh0LHRoaXMuJGVsKSYmKExlKHRoaXMuaGFuZGxlP0VlKHRoaXMuaGFuZGxlLHQpOnQse3RvdWNoQWN0aW9uOiIiLHVzZXJTZWxlY3Q6IiJ9KSx0aGlzLmFuaW1hdGlvbj90aGlzLmFuaW1hdGUoZnVuY3Rpb24oKXtyZXR1cm4gd2UodCl9KTp3ZSh0KSl9LGdldFNvcnRhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiYodGhpcy4kZ2V0Q29tcG9uZW50KHQsInNvcnRhYmxlIil8fHRoaXMuZ2V0U29ydGFibGUodC5wYXJlbnROb2RlKSl9fX07dmFyIHVvLGxvPS9hdXRvfHNjcm9sbC87ZnVuY3Rpb24gZm8oKXtyZXR1cm4gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fXZhciBwbyxtbyxnbyx2bz1bXSx3bz17bWl4aW5zOltaaSxuaSxjaV0sYXJnczoidGl0bGUiLHByb3BzOntkZWxheTpOdW1iZXIsdGl0bGU6U3RyaW5nfSxkYXRhOntwb3M6InRvcCIsdGl0bGU6IiIsZGVsYXk6MCxhbmltYXRpb246WyJ1ay1hbmltYXRpb24tc2NhbGUtdXAiXSxkdXJhdGlvbjoxMDAsY2xzOiJ1ay1hY3RpdmUiLGNsc1BvczoidWstdG9vbHRpcCJ9LGJlZm9yZUNvbm5lY3Q6ZnVuY3Rpb24oKXt0aGlzLl9oYXNUaXRsZT1ydCh0aGlzLiRlbCwidGl0bGUiKSxpdCh0aGlzLiRlbCx7dGl0bGU6IiIsImFyaWEtZXhwYW5kZWQiOiExfSl9LGRpc2Nvbm5lY3RlZDpmdW5jdGlvbigpe3RoaXMuaGlkZSgpLGl0KHRoaXMuJGVsLHt0aXRsZTp0aGlzLl9oYXNUaXRsZT90aGlzLnRpdGxlOm51bGwsImFyaWEtZXhwYW5kZWQiOm51bGx9KX0sbWV0aG9kczp7c2hvdzpmdW5jdGlvbigpe3ZhciBlPXRoaXM7IXRoaXMuaXNBY3RpdmUoKSYmdGhpcy50aXRsZSYmKHZvLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuaGlkZSgpfSksdm8ucHVzaCh0aGlzKSx0aGlzLl91bmJpbmQ9VnQoZG9jdW1lbnQscHQsZnVuY3Rpb24odCl7cmV0dXJuIVd0KHQudGFyZ2V0LGUuJGVsKSYmZS5oaWRlKCl9KSxjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpLHRoaXMuc2hvd1RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLl9zaG93KCksZS5oaWRlVGltZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtIdChlLiRlbCl8fGUuaGlkZSgpfSwxNTApfSx0aGlzLmRlbGF5KSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmlzQWN0aXZlKCkmJiFfdCh0aGlzLiRlbCwiaW5wdXQ6Zm9jdXMiKSYmKHZvLnNwbGljZSh2by5pbmRleE9mKHRoaXMpLDEpLGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lciksY2xlYXJJbnRlcnZhbCh0aGlzLmhpZGVUaW1lciksaXQodGhpcy4kZWwsImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50b29sdGlwLCExKSx0aGlzLnRvb2x0aXAmJndlKHRoaXMudG9vbHRpcCksdGhpcy50b29sdGlwPSExLHRoaXMuX3VuYmluZCgpKX0sX3Nob3c6ZnVuY3Rpb24oKXt0aGlzLnRvb2x0aXA9cGUodGhpcy5jb250YWluZXIsJzxkaXYgY2xhc3M9IicrdGhpcy5jbHNQb3MrJyIgYXJpYS1leHBhbmRlZD0idHJ1ZSIgYXJpYS1oaWRkZW4+IDxkaXYgY2xhc3M9IicrdGhpcy5jbHNQb3MrJy1pbm5lciI+Jyt0aGlzLnRpdGxlKyI8L2Rpdj4gPC9kaXY+IiksdGhpcy5wb3NpdGlvbkF0KHRoaXMudG9vbHRpcCx0aGlzLiRlbCksdGhpcy5vcmlnaW49InkiPT09dGhpcy5nZXRBeGlzKCk/Zm4odGhpcy5kaXIpKyItIit0aGlzLmFsaWduOnRoaXMuYWxpZ24rIi0iK2ZuKHRoaXMuZGlyKSx0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50b29sdGlwLCEwKX0saXNBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gYih2byx0aGlzKX19LGV2ZW50czoodW89e2ZvY3VzOiJzaG93IixibHVyOiJoaWRlIn0sdW9bbXQrIiAiK2d0XT1mdW5jdGlvbih0KXtRdCh0KXx8KHQudHlwZT09PW10P3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpKX0sdW9bZHRdPWZ1bmN0aW9uKHQpe1F0KHQpJiYodGhpcy5pc0FjdGl2ZSgpP3RoaXMuaGlkZSgpOnRoaXMuc2hvdygpKX0sdW8pfSxibz17cHJvcHM6e2FsbG93OlN0cmluZyxjbHNEcmFnb3ZlcjpTdHJpbmcsY29uY3VycmVudDpOdW1iZXIsbWF4U2l6ZTpOdW1iZXIsbWV0aG9kOlN0cmluZyxtaW1lOlN0cmluZyxtc2dJbnZhbGlkTWltZTpTdHJpbmcsbXNnSW52YWxpZE5hbWU6U3RyaW5nLG1zZ0ludmFsaWRTaXplOlN0cmluZyxtdWx0aXBsZTpCb29sZWFuLG5hbWU6U3RyaW5nLHBhcmFtczpPYmplY3QsdHlwZTpTdHJpbmcsdXJsOlN0cmluZ30sZGF0YTp7YWxsb3c6ITEsY2xzRHJhZ292ZXI6InVrLWRyYWdvdmVyIixjb25jdXJyZW50OjEsbWF4U2l6ZTowLG1ldGhvZDoiUE9TVCIsbWltZTohMSxtc2dJbnZhbGlkTWltZToiSW52YWxpZCBGaWxlIFR5cGU6ICVzIixtc2dJbnZhbGlkTmFtZToiSW52YWxpZCBGaWxlIE5hbWU6ICVzIixtc2dJbnZhbGlkU2l6ZToiSW52YWxpZCBGaWxlIFNpemU6ICVzIEtpbG9ieXRlcyBNYXgiLG11bHRpcGxlOiExLG5hbWU6ImZpbGVzW10iLHBhcmFtczp7fSx0eXBlOiIiLHVybDoiIixhYm9ydDpRLGJlZm9yZUFsbDpRLGJlZm9yZVNlbmQ6USxjb21wbGV0ZTpRLGNvbXBsZXRlQWxsOlEsZXJyb3I6USxmYWlsOlEsbG9hZDpRLGxvYWRFbmQ6USxsb2FkU3RhcnQ6USxwcm9ncmVzczpRfSxldmVudHM6e2NoYW5nZTpmdW5jdGlvbih0KXtfdCh0LnRhcmdldCwnaW5wdXRbdHlwZT0iZmlsZSJdJykmJih0LnByZXZlbnREZWZhdWx0KCksdC50YXJnZXQuZmlsZXMmJnRoaXMudXBsb2FkKHQudGFyZ2V0LmZpbGVzKSx0LnRhcmdldC52YWx1ZT0iIil9LGRyb3A6ZnVuY3Rpb24odCl7eG8odCk7dmFyIGU9dC5kYXRhVHJhbnNmZXI7ZSYmZS5maWxlcyYmKF9lKHRoaXMuJGVsLHRoaXMuY2xzRHJhZ292ZXIpLHRoaXMudXBsb2FkKGUuZmlsZXMpKX0sZHJhZ2VudGVyOmZ1bmN0aW9uKHQpe3hvKHQpfSxkcmFnb3ZlcjpmdW5jdGlvbih0KXt4byh0KSxBZSh0aGlzLiRlbCx0aGlzLmNsc0RyYWdvdmVyKX0sZHJhZ2xlYXZlOmZ1bmN0aW9uKHQpe3hvKHQpLF9lKHRoaXMuJGVsLHRoaXMuY2xzRHJhZ292ZXIpfX0sbWV0aG9kczp7dXBsb2FkOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7aWYodC5sZW5ndGgpe3F0KHRoaXMuJGVsLCJ1cGxvYWQiLFt0XSk7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe2lmKHRoaXMubWF4U2l6ZSYmMWUzKnRoaXMubWF4U2l6ZTx0W2VdLnNpemUpcmV0dXJuIHZvaWQgdGhpcy5mYWlsKHRoaXMubXNnSW52YWxpZFNpemUucmVwbGFjZSgiJXMiLHRoaXMubWF4U2l6ZSkpO2lmKHRoaXMuYWxsb3cmJiF5byh0aGlzLmFsbG93LHRbZV0ubmFtZSkpcmV0dXJuIHZvaWQgdGhpcy5mYWlsKHRoaXMubXNnSW52YWxpZE5hbWUucmVwbGFjZSgiJXMiLHRoaXMuYWxsb3cpKTtpZih0aGlzLm1pbWUmJiF5byh0aGlzLm1pbWUsdFtlXS50eXBlKSlyZXR1cm4gdm9pZCB0aGlzLmZhaWwodGhpcy5tc2dJbnZhbGlkTWltZS5yZXBsYWNlKCIlcyIsdGhpcy5taW1lKSl9dGhpcy5tdWx0aXBsZXx8KHQ9W3RbMF1dKSx0aGlzLmJlZm9yZUFsbCh0aGlzLHQpO3ZhciByPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLGk9MDtpPHQubGVuZ3RoO2krPWUpe2Zvcih2YXIgcj1bXSxvPTA7bzxlO28rKylyLnB1c2godFtpK29dKTtuLnB1c2gocil9cmV0dXJuIG59KHQsdGhpcy5jb25jdXJyZW50KSxvPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBGb3JtRGF0YTtmb3IodmFyIG4gaW4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGVuZChpLm5hbWUsdCl9KSxpLnBhcmFtcyllLmFwcGVuZChuLGkucGFyYW1zW25dKTthZShpLnVybCx7ZGF0YTplLG1ldGhvZDppLm1ldGhvZCxyZXNwb25zZVR5cGU6aS50eXBlLGJlZm9yZVNlbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dC54aHI7ZS51cGxvYWQmJlZ0KGUudXBsb2FkLCJwcm9ncmVzcyIsaS5wcm9ncmVzcyksWyJsb2FkU3RhcnQiLCJsb2FkIiwibG9hZEVuZCIsImFib3J0Il0uZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gVnQoZSx0LnRvTG93ZXJDYXNlKCksaVt0XSl9KSxpLmJlZm9yZVNlbmQodCl9fSkudGhlbihmdW5jdGlvbih0KXtpLmNvbXBsZXRlKHQpLHIubGVuZ3RoP28oci5zaGlmdCgpKTppLmNvbXBsZXRlQWxsKHQpfSxmdW5jdGlvbih0KXtyZXR1cm4gaS5lcnJvcih0KX0pfTtvKHIuc2hpZnQoKSl9fX19O2Z1bmN0aW9uIHlvKHQsZSl7cmV0dXJuIGUubWF0Y2gobmV3IFJlZ0V4cCgiXiIrdC5yZXBsYWNlKC9cLy9nLCJcXC8iKS5yZXBsYWNlKC9cKlwqL2csIihcXC9bXlxcL10rKSoiKS5yZXBsYWNlKC9cKi9nLCJbXlxcL10rIikucmVwbGFjZSgvKCg/IVxcKSlcPy9nLCIkMS4iKSsiJCIsImkiKSl9ZnVuY3Rpb24geG8odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24ga28oKXtJbyhkb2N1bWVudC5ib2R5LG1vKSxrbi5mbHVzaCgpLG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZvckVhY2goJG8pfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITAsY2hhcmFjdGVyRGF0YTohMCxhdHRyaWJ1dGVzOiEwfSkscG8uX2luaXRpYWxpemVkPSEwfWZ1bmN0aW9uICRvKHQpe3ZhciBlPXQudGFyZ2V0OygiYXR0cmlidXRlcyIhPT10LnR5cGU/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuYWRkZWROb2RlcyxuPXQucmVtb3ZlZE5vZGVzLGk9MDtpPGUubGVuZ3RoO2krKylJbyhlW2ldLG1vKTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKylJbyhuW3JdLGdvKTtyZXR1cm4hMH0odCk6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQsbj10LmF0dHJpYnV0ZU5hbWU7aWYoImhyZWYiPT09bilyZXR1cm4hMDt2YXIgaT1IbihuKTtpZighKGkmJmkgaW4gcG8pKXJldHVybjtpZihydChlLG4pKXJldHVybiBwb1tpXShlKSwhMDt2YXIgcj1wby5nZXRDb21wb25lbnQoZSxpKTtpZihyKXJldHVybiByLiRkZXN0cm95KCksITB9KHQpKSYmcG8udXBkYXRlKGUpfWZ1bmN0aW9uIElvKHQsZSl7aWYoMT09PXQubm9kZVR5cGUmJiFydCh0LCJ1ay1uby1ib290IikpZm9yKGUodCksdD10LmZpcnN0RWxlbWVudENoaWxkO3Q7KXt2YXIgbj10Lm5leHRFbGVtZW50U2libGluZztJbyh0LGUpLHQ9bn19cmV0dXJuIExuLmNvbXBvbmVudCgiY291bnRkb3duIix3ciksTG4uY29tcG9uZW50KCJmaWx0ZXIiLFNyKSxMbi5jb21wb25lbnQoImxpZ2h0Ym94IixGciksTG4uY29tcG9uZW50KCJsaWdodGJveFBhbmVsIixQciksTG4uY29tcG9uZW50KCJub3RpZmljYXRpb24iLFZyKSxMbi5jb21wb25lbnQoInBhcmFsbGF4IixVciksTG4uY29tcG9uZW50KCJzbGlkZXIiLG5vKSxMbi5jb21wb25lbnQoInNsaWRlclBhcmFsbGF4IixpbyksTG4uY29tcG9uZW50KCJzbGlkZXNob3ciLGhvKSxMbi5jb21wb25lbnQoInNsaWRlc2hvd1BhcmFsbGF4IixpbyksTG4uY29tcG9uZW50KCJzb3J0YWJsZSIsY28pLExuLmNvbXBvbmVudCgidG9vbHRpcCIsd28pLExuLmNvbXBvbmVudCgidXBsb2FkIixibyksbW89KHBvPUxuKS5jb25uZWN0LGdvPXBvLmRpc2Nvbm5lY3QsIk11dGF0aW9uT2JzZXJ2ZXIiaW4gd2luZG93JiYoZG9jdW1lbnQuYm9keT9rbi5yZWFkKGtvKTpuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkmJih0aGlzLmRpc2Nvbm5lY3QoKSxrbygpKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSkpLExufSk7",
  73. {"status":false}
  74. ],
  75. [
  76. "uikit-icons.min.js_3.2.0",
  77. "LyohIFVJa2l0IDMuMi4wIHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTkgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqLwoKIWZ1bmN0aW9uKHQsaSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1pKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInVpa2l0aWNvbnMiLGkpOih0PXR8fHNlbGYpLlVJa2l0SWNvbnM9aSgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7aS5pbnN0YWxsZWR8fHQuaWNvbi5hZGQoeyI1MDBweCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuNjI0LDExLjg2NmMtMC4xNDEsMC4xMzIsMC40NzksMC42NTgsMC42NjIsMC40MThjMC4wNTEtMC4wNDYsMC42MDctMC42MSwwLjY2Mi0wLjY2NGMwLDAsMC43MzgsMC43MTksMC44MTQsMC43MTkgYzAuMSwwLDAuMjA3LTAuMDU1LDAuMzIyLTAuMTdjMC4yNy0wLjI2OSwwLjEzNS0wLjQxNiwwLjA2Ni0wLjQ5NWwtMC42MzEtMC42MTZsMC42NTgtMC42NjhjMC4xNDYtMC4xNTYsMC4wMjEtMC4zMTQtMC4xLTAuNDQ5IGMtMC4xODItMC4xOC0wLjM1OS0wLjIyNi0wLjQ3MS0wLjEyNWwtMC42NTYsMC42NTRsLTAuNjU0LTAuNjU0Yy0wLjAzMy0wLjAzNC0wLjA4LTAuMDQ1LTAuMTI0LTAuMDQ1IGMtMC4wNzksMC0wLjE5MSwwLjA2OC0wLjMwNywwLjE4MWMtMC4yMDIsMC4yMDItMC4yNDcsMC4zNTEtMC4xMzMsMC40NjJsMC42NjUsMC42NjVMOS42MjQsMTEuODY2eiIvPjxwYXRoIGQ9Ik0xMS4wNjYsMi44ODRjLTEuMDYxLDAtMi4xODUsMC4yNDgtMy4wMTEsMC42MDRjLTAuMDg3LDAuMDM0LTAuMTQxLDAuMTA2LTAuMTUsMC4yMDVDNy44OTMsMy43ODQsNy45MTksMy45MDksNy45ODIsNC4wNjYgYzAuMDUsMC4xMzYsMC4xODcsMC40NzQsMC40NTIsMC4zNzJjMC44NDQtMC4zMjYsMS43NzktMC41MDcsMi42MzMtMC41MDdjMC45NjMsMCwxLjksMC4xOTEsMi43ODEsMC41NjQgYzAuNjk1LDAuMjkyLDEuMzU3LDAuNzE5LDIuMDc4LDEuMzRjMC4wNTEsMC4wNDQsMC4xMDUsMC4wNjgsMC4xNjQsMC4wNjhjMC4xNDMsMCwwLjI3My0wLjEzNywwLjM4OS0wLjI3MSBjMC4xOTEtMC4yMTQsMC4zMjQtMC4zOTUsMC4xMzUtMC41NzVjLTAuNjg2LTAuNjU0LTEuNDM2LTEuMTM4LTIuMzYzLTEuNTMzQzEzLjI0LDMuMDk3LDEyLjE2OCwyLjg4NCwxMS4wNjYsMi44ODR6Ii8+PHBhdGggZD0iTTE2LjQzLDE1Ljc0N2MtMC4wOTItMC4wMjgtMC4yNDIsMC4wNS0wLjMwOSwwLjExOWwwLDBjLTAuNjUyLDAuNjUyLTEuNDIsMS4xNjktMi4yNjgsMS41MjEgYy0wLjg3NywwLjM3MS0xLjgxNCwwLjU1MS0yLjc3OSwwLjU1MWMtMC45NjEsMC0xLjg5Ni0wLjE4OS0yLjc3NS0wLjU2NGMtMC44NDgtMC4zNi0xLjYxMi0wLjg3OS0yLjI2OC0xLjUzIGMtMC42ODItMC42ODgtMS4xOTYtMS40NTUtMS41MjktMi4yNjhjLTAuMzI1LTAuNzk5LTAuNDcxLTEuNjQzLTAuNDcxLTEuNjQzYy0wLjA0NS0wLjI0LTAuMjU4LTAuMjQ5LTAuNTY3LTAuMjAzIGMtMC4xMjgsMC4wMjEtMC41MTksMC4wNzktMC40ODMsMC4zNnYwLjAxYzAuMTA1LDAuNjQ0LDAuMjg5LDEuMjg0LDAuNTQ1LDEuODk1YzAuNDE3LDAuOTY5LDEuMDAyLDEuODQ5LDEuNzU2LDIuNjA0IGMwLjc1NywwLjc1NCwxLjYzNiwxLjM0LDIuNjA0LDEuNzU3QzguOTAxLDE4Ljc4NSw5Ljk3LDE5LDExLjA4OCwxOWMxLjEwNCwwLDIuMTg2LTAuMjE1LDMuMTg4LTAuNjQ1IGMxLjgzOC0wLjg5NiwyLjYwNC0xLjc1NywyLjYwNC0xLjc1N2MwLjE4Mi0wLjIwNCwwLjIyNy0wLjMxNy0wLjEtMC42NDNDMTYuNzc5LDE1Ljk1NiwxNi41MjUsMTUuNzc0LDE2LjQzLDE1Ljc0N3oiLz48cGF0aCBkPSJNNS42MzMsMTMuMjg3YzAuMjkzLDAuNzEsMC43MjMsMS4zNDEsMS4yNjIsMS44ODJjMC41NCwwLjU0LDEuMTcyLDAuOTcxLDEuODgyLDEuMjY0YzAuNzMxLDAuMzAzLDEuNTA5LDAuNDYxLDIuMjk4LDAuNDYxIGMwLjgwMSwwLDEuNTc4LTAuMTU4LDIuMjk3LTAuNDYxYzAuNzExLTAuMjkzLDEuMzQ0LTAuNzI0LDEuODgzLTEuMjY0YzAuNTQzLTAuNTQxLDAuOTcxLTEuMTcyLDEuMjY0LTEuODgyIGMwLjMxNC0wLjcyMSwwLjQ2My0xLjUsMC40NjMtMi4yOThjMC0wLjc5LTAuMTQ4LTEuNTY5LTAuNDYzLTIuMjg5Yy0wLjI5My0wLjY5OS0wLjcyMS0xLjMyOS0xLjI2NC0xLjg4MSBjLTAuNTM5LTAuNTQxLTEuMTcyLTAuOTU5LTEuODY3LTEuMjYzYy0wLjcyMS0wLjMwMy0xLjUtMC40NjEtMi4yOTktMC40NjFjLTAuODAyLDAtMS42MTMsMC4xNTktMi4zMjIsMC40NjEgYy0wLjU3NywwLjI1LTEuNTQ0LDAuODY3LTIuMTE5LDEuNDU0djAuMDEyVjIuMTA4aDguMTZDMTUuMSwyLjEwNCwxNS4xLDEuNjksMTUuMSwxLjU1MkMxNS4xLDEuNDE3LDE1LjEsMSwxNC44MDksMUg1LjkxNSBDNS42NzYsMSw1LjUyNywxLjE5Miw1LjUyNywxLjM4NHY2Ljg0YzAsMC4yMTQsMC4yNzMsMC4zNzIsMC41MjksMC40MjhjMC41LDAuMTA1LDAuNjE0LTAuMDU2LDAuNzM3LTAuMjI0bDAsMCBjMC4xOC0wLjI3MywwLjc3Ni0wLjg4NCwwLjc4Ny0wLjg5NGMwLjkwMS0wLjkwNSwyLjExNy0xLjQwOCwzLjQxNi0xLjQwOGMxLjI4NSwwLDIuNSwwLjUwMSwzLjQxMiwxLjQwOCBjMC45MTQsMC45MTQsMS40MDgsMi4xMjIsMS40MDgsMy40MDVjMCwxLjI4OC0wLjUwOCwyLjQ5Ni0xLjQwOCwzLjQwNWMtMC45LDAuODk2LTIuMTUyLDEuNDA2LTMuNDM4LDEuNDA2IGMtMC44NzcsMC0xLjcxMS0wLjIyOS0yLjQzMy0wLjY3MXYtNC4xNThjMC0wLjU1MywwLjIzNy0xLjE1MSwwLjY0My0xLjYxNGMwLjQ2Mi0wLjUxOSwxLjA5NC0wLjc5OSwxLjc4Mi0wLjc5OSBjMC42NjQsMCwxLjI5MywwLjI1MywxLjc1OCwwLjcxNWMwLjQ1OSwwLjQ1OSwwLjcwOSwxLjA3MSwwLjcwOSwxLjcyM2MwLDEuMzg1LTEuMDk0LDIuNDY4LTIuNDg4LDIuNDY4IGMtMC4yNzMsMC0wLjc2OS0wLjEyMS0wLjc4MS0wLjEyNWMtMC4yODEtMC4wODctMC40MDUsMC4zMDYtMC40MzgsMC40MzZjLTAuMTU5LDAuNDk2LDAuMDc5LDAuNTg1LDAuMTIzLDAuNjA3IGMwLjQ1MiwwLjEzNywwLjc0MywwLjE1NywxLjEyOSwwLjE1N2MxLjk3MywwLDMuNTcyLTEuNiwzLjU3Mi0zLjU3YzAtMS45NjQtMS42LTMuNTUyLTMuNTcyLTMuNTUyYy0wLjk3LDAtMS44NzIsMC4zNi0yLjU0NiwxLjAzOCBjLTAuNjU2LDAuNjMxLTEuMDI3LDEuNDg3LTEuMDI3LDIuMzIydjMuNDM4di0wLjAxMWMtMC4zNzItMC40Mi0wLjczMi0xLjA0MS0wLjk4MS0xLjY4MmMtMC4xMDItMC4yNDgtMC4zMTUtMC4yMDItMC42MDctMC4xMTMgYy0wLjEzNSwwLjAzNS0wLjUxOSwwLjE1Ny0wLjQ0LDAuNDM5QzUuMzcyLDEyLjc5OSw1LjU3NywxMy4xNjQsNS42MzMsMTMuMjg3eiIvPjwvc3ZnPicsYWxidW06Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeD0iNSIgeT0iMiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIzIiB5PSI0IiB3aWR0aD0iMTQiIGhlaWdodD0iMSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMS41IiB5PSI2LjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMSIvPjwvc3ZnPicsImFycm93LWRvd24iOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIHBvaW50cz0iMTAuNSwxNi4wOCA1LjYzLDEwLjY2IDYuMzcsMTAgMTAuNSwxNC41OCAxNC42MywxMCAxNS4zNywxMC42NiIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeDE9IjEwLjUiIHkxPSI0IiB4Mj0iMTAuNSIgeTI9IjE1Ii8+PC9zdmc+JywiYXJyb3ctbGVmdCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSIxMCAxNCA1IDkuNSAxMCA1Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iMTYiIHkxPSI5LjUiIHgyPSI1IiB5Mj0iOS41MiIvPjwvc3ZnPicsImFycm93LXJpZ2h0IjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjEwIDUgMTUgOS41IDEwIDE0Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iNCIgeTE9IjkuNSIgeDI9IjE1IiB5Mj0iOS41Ii8+PC9zdmc+JywiYXJyb3ctdXAiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIHBvaW50cz0iMTAuNSw0IDE1LjM3LDkuNCAxNC42MywxMC4wOCAxMC41LDUuNDkgNi4zNywxMC4wOCA1LjYzLDkuNCIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeDE9IjEwLjUiIHkxPSIxNiIgeDI9IjEwLjUiIHkyPSI1Ii8+PC9zdmc+JyxiYW46Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iMTAiIGN5PSIxMCIgcj0iOSIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIHgxPSI0IiB5MT0iMy41IiB4Mj0iMTYiIHkyPSIxNi41Ii8+PC9zdmc+JyxiZWhhbmNlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05LjUsMTAuNmMtMC40LTAuNS0wLjktMC45LTEuNi0xLjFjMS43LTEsMi4yLTMuMiwwLjctNC43QzcuOCw0LDYuMyw0LDUuMiw0QzMuNSw0LDEuNyw0LDAsNHYxMmMxLjcsMCwzLjQsMCw1LjIsMCBjMSwwLDIuMSwwLDMuMS0wLjVDMTAuMiwxNC42LDEwLjUsMTIuMyw5LjUsMTAuNkw5LjUsMTAuNnogTTUuNiw2LjFjMS44LDAsMS44LDIuNy0wLjEsMi43Yy0xLDAtMiwwLTIuOSwwVjYuMUg1LjZ6IE0yLjYsMTMuOHYtMy4xIGMxLjEsMCwyLjEsMCwzLjIsMGMyLjEsMCwyLjEsMy4yLDAuMSwzLjJMMi42LDEzLjh6Ii8+PHBhdGggZD0iTTE5LjksMTAuOUMxOS43LDkuMiwxOC43LDcuNiwxNyw3Yy00LjItMS4zLTcuMywzLjQtNS4zLDcuMWMwLjksMS43LDIuOCwyLjMsNC43LDIuMWMxLjctMC4yLDIuOS0xLjMsMy40LTIuOWgtMi4yIGMtMC40LDEuMy0yLjQsMS41LTMuNSwwLjZjLTAuNC0wLjQtMC42LTEuMS0wLjYtMS43SDIwQzIwLDExLjcsMTkuOSwxMC45LDE5LjksMTAuOXogTTEzLjUsMTAuNmMwLTEuNiwyLjMtMi43LDMuNS0xLjQgYzAuNCwwLjQsMC41LDAuOSwwLjYsMS40SDEzLjVMMTMuNSwxMC42eiIvPjxyZWN0IHg9IjEzIiB5PSI0IiB3aWR0aD0iNSIgaGVpZ2h0PSIxLjQiLz48L3N2Zz4nLGJlbGw6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTE3LDE1LjUgTDMsMTUuNSBDMi45OSwxNC42MSAzLjc5LDEzLjM0IDQuMSwxMi41MSBDNC41OCwxMS4zIDQuNzIsMTAuMzUgNS4xOSw3LjAxIEM1LjU0LDQuNTMgNS44OSwzLjIgNy4yOCwyLjE2IEM4LjEzLDEuNTYgOS4zNywxLjUgOS44MSwxLjUgTDkuOTYsMS41IEM5Ljk2LDEuNSAxMS42MiwxLjQxIDEyLjY3LDIuMTcgQzE0LjA4LDMuMiAxNC40Miw0LjU0IDE0Ljc3LDcuMDIgQzE1LjI2LDEwLjM1IDE1LjQsMTEuMzEgMTUuODcsMTIuNTIgQzE2LjIsMTMuMzQgMTcuMDEsMTQuNjEgMTcsMTUuNSBMMTcsMTUuNSBaIi8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMTIuMzksMTYgQzEyLjM5LDE3LjM3IDExLjM1LDE4LjQzIDkuOTEsMTguNDMgQzguNDgsMTguNDMgNy40MiwxNy4zNyA3LjQyLDE2Ii8+PC9zdmc+Jyxib2xkOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik01LDE1LjMgQzUuNjYsMTUuMyA1LjksMTUgNS45LDE0LjUzIEw1LjksNS41IEM1LjksNC45MiA1LjU2LDQuNyA1LDQuNyBMNSw0IEw4Ljk1LDQgQzEyLjYsNCAxMy43LDUuMzcgMTMuNyw2LjkgQzEzLjcsNy44NyAxMy4xNCw5LjE3IDEwLjg2LDkuNTkgTDEwLjg2LDkuNyBDMTMuMjUsOS44NiAxNC4yOSwxMS4yOCAxNC4zLDEyLjU0IEMxNC4zLDE0LjQ3IDEyLjk0LDE2IDksMTYgTDUsMTYgTDUsMTUuMyBaIE05LDkuMyBDMTEuMTksOS4zIDExLjgsOC41IDExLjg1LDcgQzExLjg1LDUuNjUgMTEuMyw0LjggOSw0LjggTDcuNjcsNC44IEw3LjY3LDkuMyBMOSw5LjMgWiBNOS4xODUsMTUuMjIgQzExLjk3LDE1IDEyLjM5LDE0IDEyLjQsMTIuNTggQzEyLjQsMTEuMTUgMTEuMzksMTAgOSwxMCBMNy42NywxMCBMNy42NywxNSBMOS4xOCwxNSBaIi8+PC9zdmc+Jyxib2x0Oic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00Ljc0LDIwIEw3LjczLDEyIEwzLDEyIEwxNS40MywxIEwxMi4zMiw5IEwxNy4wMiw5IEw0Ljc0LDIwIEw0Ljc0LDIwIEw0Ljc0LDIwIFogTTkuMTgsMTEgTDcuMSwxNi4zOSBMMTQuNDcsMTAgTDEwLjg2LDEwIEwxMi45OSw0LjY3IEw1LjYxLDExIEw5LjE4LDExIEw5LjE4LDExIEw5LjE4LDExIFoiLz48L3N2Zz4nLGJvb2ttYXJrOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSI1LjUgMS41IDE1LjUgMS41IDE1LjUgMTcuNSAxMC41IDEyLjUgNS41IDE3LjUiLz48L3N2Zz4nLGNhbGVuZGFyOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0gMiwzIDIsMTcgMTgsMTcgMTgsMyAyLDMgWiBNIDE3LDE2IDMsMTYgMyw4IDE3LDggMTcsMTYgWiBNIDE3LDcgMyw3IDMsNCAxNyw0IDE3LDcgWiIvPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjMiIHg9IjYiIHk9IjIiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIzIiB4PSIxMyIgeT0iMiIvPjwvc3ZnPicsY2FtZXJhOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjEwIiBjeT0iMTAuOCIgcj0iMy44Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMSw0LjUgQzAuNyw0LjUgMC41LDQuNyAwLjUsNSBMMC41LDE3IEMwLjUsMTcuMyAwLjcsMTcuNSAxLDE3LjUgTDE5LDE3LjUgQzE5LjMsMTcuNSAxOS41LDE3LjMgMTkuNSwxNyBMMTkuNSw1IEMxOS41LDQuNyAxOS4zLDQuNSAxOSw0LjUgTDEzLjUsNC41IEwxMy41LDIuOSBDMTMuNSwyLjYgMTMuMywyLjUgMTMsMi41IEw3LDIuNSBDNi43LDIuNSA2LjUsMi42IDYuNSwyLjkgTDYuNSw0LjUgTDEsNC41IEwxLDQuNSBaIi8+PC9zdmc+JyxjYXJ0Oic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjcuMyIgY3k9IjE3LjMiIHI9IjEuNCIvPjxjaXJjbGUgY3g9IjEzLjMiIGN5PSIxNy4zIiByPSIxLjQiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjAgMiAzLjIgNCA1LjMgMTIuNSAxNiAxMi41IDE4IDYuNSA4IDYuNSIvPjwvc3ZnPicsY2hlY2s6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIHBvaW50cz0iNCwxMCA4LDE1IDE3LDQiLz48L3N2Zz4nLCJjaGV2cm9uLWRvdWJsZS1sZWZ0IjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMDMiIHBvaW50cz0iMTAgMTQgNiAxMCAxMCA2Ii8+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjAzIiBwb2ludHM9IjE0IDE0IDEwIDEwIDE0IDYiLz48L3N2Zz4nLCJjaGV2cm9uLWRvdWJsZS1yaWdodCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjAzIiBwb2ludHM9IjEwIDYgMTQgMTAgMTAgMTQiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMDMiIHBvaW50cz0iNiA2IDEwIDEwIDYgMTQiLz48L3N2Zz4nLCJjaGV2cm9uLWRvd24iOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMyIgcG9pbnRzPSIxNiA3IDEwIDEzIDQgNyIvPjwvc3ZnPicsImNoZXZyb24tbGVmdCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjAzIiBwb2ludHM9IjEzIDE2IDcgMTAgMTMgNCIvPjwvc3ZnPicsImNoZXZyb24tcmlnaHQiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMyIgcG9pbnRzPSI3IDQgMTMgMTAgNyAxNiIvPjwvc3ZnPicsImNoZXZyb24tdXAiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMyIgcG9pbnRzPSI0IDEzIDEwIDcgMTYgMTMiLz48L3N2Zz4nLGNsb2NrOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjEwIiBjeT0iMTAiIHI9IjkiLz48cmVjdCB4PSI5IiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSI3Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTEzLjAxOCwxNC4xOTcgTDkuNDQ1LDEwLjYyNSIvPjwvc3ZnPicsY2xvc2U6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMDYiIGQ9Ik0xNiwxNiBMNCw0Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMDYiIGQ9Ik0xNiw0IEw0LDE2Ii8+PC9zdmc+JywiY2xvdWQtZG93bmxvYWQiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik02LjUsMTQuNjEgTDMuNzUsMTQuNjEgQzEuOTYsMTQuNjEgMC41LDEzLjE3IDAuNSwxMS4zOSBDMC41LDkuNzYgMS43Miw4LjQxIDMuMyw4LjIgQzMuMzgsNS4zMSA1Ljc1LDMgOC42OCwzIEMxMS4xOSwzIDEzLjMxLDQuNzEgMTMuODksNy4wMiBDMTQuMzksNi44IDE0LjkzLDYuNjggMTUuNSw2LjY4IEMxNy43MSw2LjY4IDE5LjUsOC40NSAxOS41LDEwLjY0IEMxOS41LDEyLjgzIDE3LjcxLDE0LjYgMTUuNSwxNC42IEwxMi41LDE0LjYiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjExLjc1IDE2IDkuNSAxOC4yNSA3LjI1IDE2Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNOS41LDE4IEw5LjUsOS41Ii8+PC9zdmc+JywiY2xvdWQtdXBsb2FkIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNNi41LDE0LjYxIEwzLjc1LDE0LjYxIEMxLjk2LDE0LjYxIDAuNSwxMy4xNyAwLjUsMTEuMzkgQzAuNSw5Ljc2IDEuNzIsOC40MSAzLjMxLDguMiBDMy4zOCw1LjMxIDUuNzUsMyA4LjY4LDMgQzExLjE5LDMgMTMuMzEsNC43MSAxMy44OSw3LjAyIEMxNC4zOSw2LjggMTQuOTMsNi42OCAxNS41LDYuNjggQzE3LjcxLDYuNjggMTkuNSw4LjQ1IDE5LjUsMTAuNjQgQzE5LjUsMTIuODMgMTcuNzEsMTQuNiAxNS41LDE0LjYgTDEyLjUsMTQuNiIvPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHBvaW50cz0iNy4yNSAxMS43NSA5LjUgOS41IDExLjc1IDExLjc1Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNOS41LDE4IEw5LjUsOS41Ii8+PC9zdmc+Jyxjb2RlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMSIgcG9pbnRzPSIxMyw0IDE5LDEwIDEzLDE2Ii8+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjAxIiBwb2ludHM9IjcsNCAxLDEwIDcsMTYiLz48L3N2Zz4nLGNvZzonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjkuOTk3IiBjeT0iMTAiIHI9IjMuMzEiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGQ9Ik0xOC40ODgsMTIuMjg1IEwxNi4yMDUsMTYuMjM3IEMxNS4zMjIsMTUuNDk2IDE0LjE4NSwxNS4yODEgMTMuMzAzLDE1Ljc5MSBDMTIuNDI4LDE2LjI4OSAxMi4wNDcsMTcuMzczIDEyLjI0NiwxOC41IEw3LjczNSwxOC41IEM3LjkzOCwxNy4zNzQgNy41NTMsMTYuMjk5IDYuNjg0LDE1Ljc5MSBDNS44MDEsMTUuMjcgNC42NTUsMTUuNDkyIDMuNzczLDE2LjIzNyBMMS41LDEyLjI4NSBDMi41NzMsMTEuODcxIDMuMzE3LDEwLjk5OSAzLjMxNyw5Ljk5MSBDMy4zMDUsOC45OCAyLjU3Myw4LjEyMSAxLjUsNy43MTYgTDMuNzY1LDMuNzg0IEM0LjY0NSw0LjUxNiA1Ljc5NCw0LjczOCA2LjY4Nyw0LjIzMiBDNy41NTUsMy43MjIgNy45MzksMi42MzcgNy43MzUsMS41IEwxMi4yNjMsMS41IEMxMi4wNzIsMi42MzcgMTIuNDQxLDMuNzEgMTMuMzE0LDQuMjIgQzE0LjIwNiw0LjczIDE1LjM0Myw0LjUxNiAxNi4yMjUsMy43OTQgTDE4LjQ4Nyw3LjcxNCBDMTcuNDA0LDguMTE3IDE2LjY2MSw4Ljk4OCAxNi42NywxMC4wMDkgQzE2LjY3MiwxMS4wMTggMTcuNDE1LDExLjg4IDE4LjQ4OCwxMi4yODUgTDE4LjQ4OCwxMi4yODUgWiIvPjwvc3ZnPicsY29tbWVudDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNiwxOC43MSBMNiwxNCBMMSwxNCBMMSwxIEwxOSwxIEwxOSwxNCBMMTAuNzEsMTQgTDYsMTguNzEgTDYsMTguNzEgWiBNMiwxMyBMNywxMyBMNywxNi4yOSBMMTAuMjksMTMgTDE4LDEzIEwxOCwyIEwyLDIgTDIsMTMgTDIsMTMgWiIvPjwvc3ZnPicsY29tbWVudGluZzonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHBvaW50cz0iMS41LDEuNSAxOC41LDEuNSAxOC41LDEzLjUgMTAuNSwxMy41IDYuNSwxNy41IDYuNSwxMy41IDEuNSwxMy41Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSI4IiByPSIxIi8+PGNpcmNsZSBjeD0iNiIgY3k9IjgiIHI9IjEiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjEiLz48L3N2Zz4nLGNvbW1lbnRzOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHBvaW50cz0iMiAwLjUgMTkuNSAwLjUgMTkuNSAxMyIvPjxwYXRoIGQ9Ik01LDE5LjcxIEw1LDE1IEwwLDE1IEwwLDIgTDE4LDIgTDE4LDE1IEw5LjcxLDE1IEw1LDE5LjcxIEw1LDE5LjcxIEw1LDE5LjcxIFogTTEsMTQgTDYsMTQgTDYsMTcuMjkgTDkuMjksMTQgTDE3LDE0IEwxNywzIEwxLDMgTDEsMTQgTDEsMTQgTDEsMTQgWiIvPjwvc3ZnPicsY29weTonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHg9IjMuNSIgeT0iMi41IiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjUgMC41IDE3LjUgMC41IDE3LjUgMTciLz48L3N2Zz4nLCJjcmVkaXQtY2FyZCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4PSIxLjUiIHk9IjQuNSIgd2lkdGg9IjE3IiBoZWlnaHQ9IjEyIi8+PHJlY3QgeD0iMSIgeT0iNyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjMiLz48L3N2Zz4nLGRhdGFiYXNlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjEwIiBjeT0iNC42NCIgcng9IjcuNSIgcnk9IjMuMTQiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGQ9Ik0xNy41LDguMTEgQzE3LjUsOS44NSAxNC4xNCwxMS4yNSAxMCwxMS4yNSBDNS44NiwxMS4yNSAyLjUsOS44NCAyLjUsOC4xMSIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgZD0iTTE3LjUsMTEuMjUgQzE3LjUsMTIuOTkgMTQuMTQsMTQuMzkgMTAsMTQuMzkgQzUuODYsMTQuMzkgMi41LDEyLjk4IDIuNSwxMS4yNSIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgZD0iTTE3LjQ5LDQuNjQgTDE3LjUsMTQuMzYgQzE3LjUsMTYuMSAxNC4xNCwxNy41IDEwLDE3LjUgQzUuODYsMTcuNSAyLjUsMTYuMDkgMi41LDE0LjM2IEwyLjUsNC42NCIvPjwvc3ZnPicsZGVza3RvcDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSI4IiB5PSIxNSIgd2lkdGg9IjEiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjExIiB5PSIxNSIgd2lkdGg9IjEiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjUiIHk9IjE2IiB3aWR0aD0iMTAiIGhlaWdodD0iMSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMS41IiB5PSIzLjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMSIvPjwvc3ZnPicsZG93bmxvYWQ6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSIxNCwxMCA5LjUsMTQuNSA1LDEwIi8+PHJlY3QgeD0iMyIgeT0iMTciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxIi8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iOS41IiB5MT0iMTMuOTEiIHgyPSI5LjUiIHkyPSIzIi8+PC9zdmc+JyxkcmliYmJsZTonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS40IiBkPSJNMS4zLDguOWMwLDAsNSwwLjEsOC42LTFjMS40LTAuNCwyLjYtMC45LDQtMS45IGMxLjQtMS4xLDIuNS0yLjUsMi41LTIuNSIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik0zLjksMTYuNmMwLDAsMS43LTIuOCwzLjUtNC4yIGMxLjgtMS4zLDQtMiw1LjctMi4yQzE2LDEwLDE5LDEwLjYsMTksMTAuNiIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik02LjksMS42YzAsMCwzLjMsNC42LDQuMiw2LjggYzAuNCwwLjksMS4zLDMuMSwxLjksNS4yYzAuNiwyLDAuOSw0LjQsMC45LDQuNCIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuNCIgY3g9IjEwIiBjeT0iMTAiIHI9IjkiLz48L3N2Zz4nLGV0c3k6JzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTgsNC4yNkM4LDQuMDcsOCw0LDguMzEsNGg0LjQ2Yy43OSwwLDEuMjIuNjcsMS41MywxLjkxbC4yNSwxaC43NmMuMTQtMi44Mi4yNi00LC4yNi00UzEzLjY1LDMsMTIuNTIsM0g2LjgxTDMuNzUsMi45MnYuODRsMSwuMmMuNzMuMTEuOS4yNywxLDEsMCwwLC4wNiwyLC4wNiw1LjE3cy0uMDYsNS4xNC0uMDYsNS4xNGMwLC41OS0uMjMuODEtMSwuOTRsLTEsLjJ2Ljg0bDMuMDYtLjFoNS4xMWMxLjE1LDAsMy44Mi4xLDMuODIuMSwwLS43LjQ1LTMuODguNTEtNC4yMmgtLjczbC0uNzYsMS42OWEyLjI1LDIuMjUsMCwwLDEtMi40NSwxLjQ3SDkuNGMtMSwwLTEuNDQtLjQtMS40NC0xLjI0VjEwLjQ0czIuMTYsMCwyLjg2LjA2Yy41NSwwLC44NS4xOSwxLjA2LDFsLjIzLDFIMTNMMTIuOSw5Ljk0LDEzLDcuNDFoLS44NWwtLjI4LDEuMTNjLS4xNi43NC0uMjguODQtMSwxLTEsLjEtMi44OS4wOS0yLjg5LjA5WiIvPjwvc3ZnPicsZXhwYW5kOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIHBvaW50cz0iMTMgMiAxOCAyIDE4IDcgMTcgNyAxNyAzIDEzIDMiLz48cG9seWdvbiBwb2ludHM9IjIgMTMgMyAxMyAzIDE3IDcgMTcgNyAxOCAyIDE4Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTExLDkgTDE3LDMiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNMywxNyBMOSwxMSIvPjwvc3ZnPicsZmFjZWJvb2s6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTExLDEwaDIuNmwwLjQtM0gxMVY1LjNjMC0wLjksMC4yLTEuNSwxLjUtMS41SDE0VjEuMWMtMC4zLDAtMS0wLjEtMi4xLTAuMUM5LjYsMSw4LDIuNCw4LDV2Mkg1LjV2M0g4djhoM1YxMHoiLz48L3N2Zz4nLCJmaWxlLWVkaXQiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgZD0iTTE4LjY1LDEuNjggQzE4LjQxLDEuNDUgMTguMTA5LDEuMzMgMTcuODEsMS4zMyBDMTcuNDk5LDEuMzMgMTcuMjA5LDEuNDUgMTYuOTgsMS42OCBMOC45Miw5Ljc2IEw4LDEyLjMzIEwxMC41NSwxMS40MSBMMTguNjUxLDMuMzQgQzE5LjEyLDIuODcgMTkuMTIsMi4xNSAxOC42NSwxLjY4IEwxOC42NSwxLjY4IEwxOC42NSwxLjY4IFoiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjE2LjUgOC40ODIgMTYuNSAxOC41IDMuNSAxOC41IDMuNSAxLjUgMTQuMjExIDEuNSIvPjwvc3ZnPicsImZpbGUtcGRmIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxNyIgeD0iMy41IiB5PSIxLjUiLz48cGF0aCBkPSJNMTQuNjUgMTEuNjdjLS40OC4zLTEuMzctLjE5LTEuNzktLjM3YTQuNjUgNC42NSAwIDAgMSAxLjQ5LjA2Yy4zNS4xLjM2LjI4LjMuMzF6bS02LjMuMDZsLjQzLS43OWExNC43IDE0LjcgMCAwIDAgLjc1LTEuNjQgNS40OCA1LjQ4IDAgMCAwIDEuMjUgMS41NWwuMi4xNWExNi4zNiAxNi4zNiAwIDAgMC0yLjYzLjczek05LjUgNS4zMmMuMiAwIC4zMi41LjMyLjk3YTEuOTkgMS45OSAwIDAgMS0uMjMgMS4wNCA1LjA1IDUuMDUgMCAwIDEtLjE3LTEuM3MwLS43MS4wOC0uNzF6bS0zLjkgOWE0LjM1IDQuMzUgMCAwIDEgMS4yMS0xLjQ2bC4yNC0uMjJhNC4zNSA0LjM1IDAgMCAxLTEuNDYgMS42OHptOS4yMy0zLjNhMi4wNSAyLjA1IDAgMCAwLTEuMzItLjMgMTEuMDcgMTEuMDcgMCAwIDAtMS41OC4xMSA0LjA5IDQuMDkgMCAwIDEtLjc0LS41IDUuMzkgNS4zOSAwIDAgMS0xLjMyLTIuMDYgMTAuMzcgMTAuMzcgMCAwIDAgLjI4LTIuNjIgMS44MyAxLjgzIDAgMCAwLS4wNy0uMjUuNTcuNTcgMCAwIDAtLjUyLS40SDkuNGEuNTkuNTkgMCAwIDAtLjYuMzggNi45NSA2Ljk1IDAgMCAwIC4zNyAzLjE0Yy0uMjYuNjMtMSAyLjEyLTEgMi4xMi0uMy41OC0uNTcgMS4wOC0uODIgMS41bC0uOC40NEEzLjExIDMuMTEgMCAwIDAgNSAxNC4xNmEuMzkuMzkgMCAwIDAgLjE1LjQybC4yNC4xM2MxLjE1LjU2IDIuMjgtMS43NCAyLjY2LTIuNDJhMjMuMSAyMy4xIDAgMCAxIDMuNTktLjg1IDQuNTYgNC41NiAwIDAgMCAyLjkxLjguNS41IDAgMCAwIC4zLS4yMSAxLjEgMS4xIDAgMCAwIC4xMi0uNzUuODQuODQgMCAwIDAtLjE0LS4yNXoiLz48L3N2Zz4nLCJmaWxlLXRleHQiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgd2lkdGg9IjEzIiBoZWlnaHQ9IjE3IiB4PSIzLjUiIHk9IjEuNSIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeDE9IjYiIHgyPSIxMiIgeTE9IjEyLjUiIHkyPSIxMi41Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iNiIgeDI9IjE0IiB5MT0iOC41IiB5Mj0iOC41Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iNiIgeDI9IjE0IiB5MT0iNi41IiB5Mj0iNi41Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iNiIgeDI9IjE0IiB5MT0iMTAuNSIgeTI9IjEwLjUiLz48L3N2Zz4nLGZpbGU6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4PSIzLjUiIHk9IjEuNSIgd2lkdGg9IjEzIiBoZWlnaHQ9IjE3Ii8+PC9zdmc+JyxmbGlja3I6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iNS41IiBjeT0iOS41IiByPSIzLjUiLz48Y2lyY2xlIGN4PSIxNC41IiBjeT0iOS41IiByPSIzLjUiLz48L3N2Zz4nLGZvbGRlcjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHBvaW50cz0iOS41IDUuNSA4LjUgMy41IDEuNSAzLjUgMS41IDE2LjUgMTguNSAxNi41IDE4LjUgNS41Ii8+PC9zdmc+Jyxmb3J3YXJkOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0yLjQ3LDEzLjExIEM0LjAyLDEwLjAyIDYuMjcsNy44NSA5LjA0LDYuNjEgQzkuNDgsNi40MSAxMC4yNyw2LjEzIDExLDUuOTEgTDExLDIgTDE4Ljg5LDkgTDExLDE2IEwxMSwxMi4xMyBDOS4yNSwxMi40NyA3LjU4LDEzLjE5IDYuMDIsMTQuMjUgQzMuMDMsMTYuMjggMS42MywxOC41NCAxLjYzLDE4LjU0IEMxLjYzLDE4LjU0IDEuMzgsMTUuMjggMi40NywxMy4xMSBMMi40NywxMy4xMSBaIE01LjMsMTMuNTMgQzYuOTIsMTIuNCA5LjA0LDExLjQgMTIsMTAuOTIgTDEyLDEzLjYzIEwxNy4zNiw5IEwxMiw0LjI1IEwxMiw2LjggQzExLjcxLDYuODYgMTAuODYsNy4wMiA5LjY3LDcuNDkgQzYuNzksOC42NSA0LjU4LDEwLjk2IDMuNDksMTMuMDggQzMuMTgsMTMuNyAyLjY4LDE0Ljg3IDIuNDksMTYgQzMuMjgsMTUuMDUgNC40LDE0LjE1IDUuMywxMy41MyBMNS4zLDEzLjUzIFoiLz48L3N2Zz4nLGZvdXJzcXVhcmU6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjIzLDIgQzE1Ljk2LDIgMTYuNCwyLjQxIDE2LjUsMi44NiBDMTYuNTcsMy4xNSAxNi41NiwzLjQ0IDE2LjUxLDMuNzMgQzE2LjQ2LDQuMDQgMTQuODYsMTEuNzIgMTQuNzUsMTIuMDMgQzE0LjU2LDEyLjU2IDE0LjE2LDEyLjgyIDEzLjYxLDEyLjgzIEMxMy4wMywxMi44NCAxMS4wOSwxMi41MSAxMC42OSwxMyBDMTAuMzgsMTMuMzggNy43OSwxNi4zOSA2LjgxLDE3LjUzIEM2LjYxLDE3Ljc2IDYuNCwxNy45NiA2LjA4LDE3Ljk5IEM1LjY4LDE4LjA0IDUuMjksMTcuODcgNS4xNywxNy40NSBDNS4xMiwxNy4yOCA1LjEsMTcuMDkgNS4xLDE2LjkxIEM1LjEsMTIuNCA0Ljg2LDcuODEgNS4xMSwzLjMxIEM1LjE3LDIuNSA1LjgxLDIuMTIgNi41MywyIEwxNS4yMywyIEwxNS4yMywyIFogTTkuNzYsMTEuNDIgQzkuOTQsMTEuMTkgMTAuMTcsMTEuMSAxMC40NSwxMS4xIEwxMi44NiwxMS4xIEMxMy4xMiwxMS4xIDEzLjMxLDEwLjk0IDEzLjM2LDEwLjY5IEMxMy4zNywxMC42NCAxMy42Miw5LjQxIDEzLjc0LDguODMgQzEzLjgxLDguNTIgMTMuNTMsOC4yOCAxMy4yNyw4LjI4IEMxMi4zNSw4LjI5IDExLjQyLDguMjggMTAuNSw4LjI4IEM5Ljg0LDguMjggOS44Myw3LjY5IDkuODIsNy4yMSBDOS44LDYuODUgMTAuMTMsNi41NSAxMC41LDYuNTUgQzExLjU5LDYuNTYgMTIuNjcsNi41NSAxMy43Niw2LjU1IEMxNC4wMyw2LjU1IDE0LjIzLDYuNCAxNC4yOCw2LjE0IEMxNC4zNCw1Ljg3IDE0LjY3LDQuMjkgMTQuNjcsNC4yOSBDMTQuNjcsNC4yOSAxNC44MiwzLjc0IDE0LjE5LDMuNzQgTDcuMzQsMy43NCBDNywzLjc1IDYuODQsNC4wMiA2Ljg0LDQuMzMgQzYuODQsNy41OCA2Ljg1LDE0Ljk1IDYuODUsMTQuOTkgQzYuODcsMTUgOC44OSwxMi41MSA5Ljc2LDExLjQyIEw5Ljc2LDExLjQyIFoiLz48L3N2Zz4nLGZ1dHVyZTonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgcG9pbnRzPSIxOSAyIDE4IDIgMTggNiAxNCA2IDE0IDcgMTkgNyAxOSAyIi8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTE4LDYuNTQ4IEMxNi43MDksMy4yOSAxMy4zNTQsMSA5LjYsMSBDNC42LDEgMC42LDUgMC42LDEwIEMwLjYsMTUgNC42LDE5IDkuNiwxOSBDMTQuNiwxOSAxOC42LDE1IDE4LjYsMTAiLz48cmVjdCB4PSI5IiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSI3Ii8+PHBhdGggZD0iTTEzLjAxOCwxNC4xOTcgTDkuNDQ1LDEwLjYyNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIvPjwvc3ZnPicsImdpdC1icmFuY2giOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMiIgY3g9IjciIGN5PSIzIiByPSIyIi8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4yIiBjeD0iMTQiIGN5PSI2IiByPSIyIi8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4yIiBjeD0iNyIgY3k9IjE3IiByPSIyIi8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0xNCw4IEMxNCwxMC40MSAxMi40MywxMC44NyAxMC41NiwxMS4yNSBDOS4wOSwxMS41NCA3LDEyLjA2IDcsMTUgTDcsNSIvPjwvc3ZnPicsImdpdC1mb3JrIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIiIGN4PSI1Ljc5IiBjeT0iMi43OSIgcj0iMS43OSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMiIgY3g9IjE0LjE5IiBjeT0iMi43OSIgcj0iMS43OSIvPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIiIGN4PSIxMC4wMyIgY3k9IjE2Ljc5IiByeD0iMS43OSIgcnk9IjEuNzkiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTUuNzksNC41NyBMNS43OSw2LjU2IEM1Ljc5LDkuMTkgMTAuMDMsMTAuMjIgMTAuMDMsMTMuMzEgQzEwLjAzLDE0Ljg2IDEwLjA0LDE0LjU1IDEwLjA0LDE0LjU1IEMxMC4wNCwxNC4zNyAxMC4wNCwxNC44NiAxMC4wNCwxMy4zMSBDMTAuMDQsMTAuMjIgMTQuMiw5LjE5IDE0LjIsNi41NiBMMTQuMiw0LjU3Ii8+PC9zdmc+JywiZ2l0aHViLWFsdCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwLDAuNSBDNC43NSwwLjUgMC41LDQuNzYgMC41LDEwLjAxIEMwLjUsMTUuMjYgNC43NSwxOS41MSAxMCwxOS41MSBDMTUuMjQsMTkuNTEgMTkuNSwxNS4yNiAxOS41LDEwLjAxIEMxOS41LDQuNzYgMTUuMjUsMC41IDEwLDAuNSBMMTAsMC41IFogTTEyLjgxLDE3LjY5IEMxMi44MSwxNy42OSAxMi44MSwxNy43IDEyLjc5LDE3LjY5IEMxMi40NywxNy43NSAxMi4zNSwxNy41OSAxMi4zNSwxNy4zNiBMMTIuMzUsMTYuMTcgQzEyLjM1LDE1LjQ1IDEyLjA5LDE0LjkyIDExLjU4LDE0LjU2IEMxMi4yLDE0LjUxIDEyLjc3LDE0LjM5IDEzLjI2LDE0LjIxIEMxMy44NywxMy45OCAxNC4zNiwxMy42OSAxNC43NCwxMy4yOSBDMTUuNDIsMTIuNTkgMTUuNzYsMTEuNTUgMTUuNzYsMTAuMTcgQzE1Ljc2LDkuMjUgMTUuNDUsOC40NiAxNC44Myw3LjggQzE1LjEsNy4wOCAxNS4wNyw2LjI5IDE0Ljc1LDUuNDQgTDE0LjUxLDUuNDIgQzE0LjM0LDUuNCAxNC4wNiw1LjQ2IDEzLjY3LDUuNjEgQzEzLjI1LDUuNzggMTIuNzksNi4wMyAxMi4zMSw2LjM1IEMxMS41NSw2LjE2IDEwLjgxLDYuMDUgMTAuMDksNi4wNSBDOS4zNiw2LjA1IDguNjEsNi4xNSA3Ljg4LDYuMzUgQzcuMjgsNS45NiA2Ljc1LDUuNjggNi4yNiw1LjU0IEM2LjA3LDUuNDcgNS45LDUuNDQgNS43OCw1LjQ0IEw1LjQyLDUuNDQgQzUuMDYsNi4yOSA1LjA0LDcuMDggNS4zMiw3LjggQzQuNyw4LjQ2IDQuNCw5LjI1IDQuNCwxMC4xNyBDNC40LDExLjk0IDQuOTYsMTMuMTYgNi4wOCwxMy44NCBDNi41MywxNC4xMyA3LjA1LDE0LjMyIDcuNjksMTQuNDMgQzguMDMsMTQuNSA4LjMyLDE0LjU0IDguNTUsMTQuNTUgQzguMDcsMTQuODkgNy44MiwxNS40MiA3LjgyLDE2LjE2IEw3LjgyLDE3LjUxIEM3LjgsMTcuNjkgNy43LDE3LjggNy41MSwxNy44IEM0LjIxLDE2Ljc0IDEuODIsMTMuNjUgMS44MiwxMC4wMSBDMS44Miw1LjUgNS40OSwxLjgzIDEwLDEuODMgQzE0LjUsMS44MyAxOC4xNyw1LjUgMTguMTcsMTAuMDEgQzE4LjE4LDEzLjUzIDE1Ljk0LDE2LjU0IDEyLjgxLDE3LjY5IEwxMi44MSwxNy42OSBaIi8+PC9zdmc+JyxnaXRodWI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwLDEgQzUuMDMsMSAxLDUuMDMgMSwxMCBDMSwxMy45OCAzLjU4LDE3LjM1IDcuMTYsMTguNTQgQzcuNjEsMTguNjIgNy43NywxOC4zNCA3Ljc3LDE4LjExIEM3Ljc3LDE3LjkgNy43NiwxNy4zMyA3Ljc2LDE2LjU4IEM1LjI2LDE3LjEyIDQuNzMsMTUuMzcgNC43MywxNS4zNyBDNC4zMiwxNC4zMyAzLjczLDE0LjA1IDMuNzMsMTQuMDUgQzIuOTEsMTMuNSAzLjc5LDEzLjUgMy43OSwxMy41IEM0LjY5LDEzLjU2IDUuMTcsMTQuNDMgNS4xNywxNC40MyBDNS45NywxNS44IDcuMjgsMTUuNDEgNy43OSwxNS4xOCBDNy44NywxNC42IDguMSwxNC4yIDguMzYsMTMuOTggQzYuMzYsMTMuNzUgNC4yNiwxMi45OCA0LjI2LDkuNTMgQzQuMjYsOC41NSA0LjYxLDcuNzQgNS4xOSw3LjExIEM1LjEsNi44OCA0Ljc5LDUuOTcgNS4yOCw0LjczIEM1LjI4LDQuNzMgNi4wNCw0LjQ5IDcuNzUsNS42NSBDOC40Nyw1LjQ1IDkuMjQsNS4zNSAxMCw1LjM1IEMxMC43Niw1LjM1IDExLjUzLDUuNDUgMTIuMjUsNS42NSBDMTMuOTcsNC40OCAxNC43Miw0LjczIDE0LjcyLDQuNzMgQzE1LjIxLDUuOTcgMTQuOSw2Ljg4IDE0LjgxLDcuMTEgQzE1LjM5LDcuNzQgMTUuNzMsOC41NCAxNS43Myw5LjUzIEMxNS43MywxMi45OSAxMy42MywxMy43NSAxMS42MiwxMy45NyBDMTEuOTQsMTQuMjUgMTIuMjMsMTQuOCAxMi4yMywxNS42NCBDMTIuMjMsMTYuODQgMTIuMjIsMTcuODEgMTIuMjIsMTguMTEgQzEyLjIyLDE4LjM1IDEyLjM4LDE4LjYzIDEyLjg0LDE4LjU0IEMxNi40MiwxNy4zNSAxOSwxMy45OCAxOSwxMCBDMTksNS4wMyAxNC45NywxIDEwLDEgTDEwLDEgWiIvPjwvc3ZnPicsZ2l0dGVyOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHg9IjMuNSIgeT0iMSIgd2lkdGg9IjEuNTMxIiBoZWlnaHQ9IjExLjQ3MSIvPjxyZWN0IHg9IjcuMzI0IiB5PSI0LjA1OSIgd2lkdGg9IjEuNTI5IiBoZWlnaHQ9IjE1LjI5NCIvPjxyZWN0IHg9IjExLjE0OCIgeT0iNC4wNTkiIHdpZHRoPSIxLjUyNyIgaGVpZ2h0PSIxNS4yOTQiLz48cmVjdCB4PSIxNC45NzEiIHk9IjQuMDU5IiB3aWR0aD0iMS41MjkiIGhlaWdodD0iOC40MTIiLz48L3N2Zz4nLCJnb29nbGUtcGx1cyI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyLjksOWMwLDIuNy0wLjYsNS0zLjIsNi4zYy0zLjcsMS44LTguMSwwLjItOS40LTMuNkMtMS4xLDcuNiwxLjksMy4zLDYuMSwzYzEuNy0wLjEsMy4yLDAuMyw0LjYsMS4zIGMwLjEsMC4xLDAuMywwLjIsMC40LDAuNGMtMC41LDAuNS0xLjIsMS0xLjcsMS42Yy0xLTAuOC0yLjEtMS4xLTMuNS0wLjlDNSw1LjYsNC4yLDYsMy42LDYuN2MtMS4zLDEuMy0xLjUsMy40LTAuNSw1IGMxLDEuNywyLjYsMi4zLDQuNiwxLjljMS40LTAuMywyLjQtMS4yLDIuNi0yLjZINi45VjlIMTIuOXoiLz48cG9seWdvbiBwb2ludHM9IjIwLDkgMjAsMTEgMTgsMTEgMTgsMTMgMTYsMTMgMTYsMTEgMTQsMTEgMTQsOSAxNiw5IDE2LDcgMTgsNyAxOCw5Ii8+PC9zdmc+Jyxnb29nbGU6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE3Ljg2LDkuMDkgQzE4LjQ2LDEyLjEyIDE3LjE0LDE2LjA1IDEzLjgxLDE3LjU2IEM5LjQ1LDE5LjUzIDQuMTMsMTcuNjggMi40NywxMi44NyBDMC42OCw3LjY4IDQuMjIsMi40MiA5LjUsMi4wMyBDMTEuNTcsMS44OCAxMy40MiwyLjM3IDE1LjA1LDMuNjUgQzE1LjIyLDMuNzggMTUuMzcsMy45MyAxNS42MSw0LjE0IEMxNC45LDQuODEgMTQuMjMsNS40NSAxMy41LDYuMTQgQzEyLjI3LDUuMDggMTAuODQsNC43MiA5LjI4LDQuOTggQzguMTIsNS4xNyA3LjE2LDUuNzYgNi4zNyw2LjYzIEM0Ljg4LDguMjcgNC42MiwxMC44NiA1Ljc2LDEyLjgyIEM2Ljk1LDE0Ljg3IDkuMTcsMTUuOCAxMS41NywxNS4yNSBDMTMuMjcsMTQuODcgMTQuNzYsMTMuMzMgMTQuODksMTEuNzUgTDEwLjUxLDExLjc1IEwxMC41MSw5LjA5IEwxNy44Niw5LjA5IEwxNy44Niw5LjA5IFoiLz48L3N2Zz4nLGdyaWQ6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjMiIGhlaWdodD0iMyIvPjxyZWN0IHg9IjgiIHk9IjIiIHdpZHRoPSIzIiBoZWlnaHQ9IjMiLz48cmVjdCB4PSIxNCIgeT0iMiIgd2lkdGg9IjMiIGhlaWdodD0iMyIvPjxyZWN0IHg9IjIiIHk9IjgiIHdpZHRoPSIzIiBoZWlnaHQ9IjMiLz48cmVjdCB4PSI4IiB5PSI4IiB3aWR0aD0iMyIgaGVpZ2h0PSIzIi8+PHJlY3QgeD0iMTQiIHk9IjgiIHdpZHRoPSIzIiBoZWlnaHQ9IjMiLz48cmVjdCB4PSIyIiB5PSIxNCIgd2lkdGg9IjMiIGhlaWdodD0iMyIvPjxyZWN0IHg9IjgiIHk9IjE0IiB3aWR0aD0iMyIgaGVpZ2h0PSIzIi8+PHJlY3QgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMyIgaGVpZ2h0PSIzIi8+PC9zdmc+JyxoYXBweTonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIxMyIgY3k9IjciIHI9IjEiLz48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iMSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iMTAiIGN5PSIxMCIgcj0iOC41Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMTQuNiwxMS40IEMxMy45LDEzLjMgMTIuMSwxNC41IDEwLDE0LjUgQzcuOSwxNC41IDYuMSwxMy4zIDUuNCwxMS40Ii8+PC9zdmc+JyxoYXNodGFnOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNS40MzEsOCBMMTUuNjYxLDcgTDEyLjkxMSw3IEwxMy44MzEsMyBMMTIuOTAxLDMgTDExLjk4LDcgTDkuMjksNyBMMTAuMjEsMyBMOS4yODEsMyBMOC4zNjEsNyBMNS4yMyw3IEw1LDggTDguMTMsOCBMNy4yMSwxMiBMNC4yMywxMiBMNCwxMyBMNi45OCwxMyBMNi4wNjEsMTcgTDYuOTkxLDE3IEw3LjkxMSwxMyBMMTAuNjAxLDEzIEw5LjY4MSwxNyBMMTAuNjExLDE3IEwxMS41MzEsMTMgTDE0LjQzMSwxMyBMMTQuNjYxLDEyIEwxMS43NiwxMiBMMTIuNjgxLDggTDE1LjQzMSw4IFogTTEwLjgzMSwxMiBMOC4xNDEsMTIgTDkuMDYxLDggTDExLjc1LDggTDEwLjgzMSwxMiBaIi8+PC9zdmc+JyxoZWFydDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMyIgZD0iTTEwLDQgQzEwLDQgOC4xLDIgNS43NCwyIEMzLjM4LDIgMSwzLjU1IDEsNi43MyBDMSw4Ljg0IDIuNjcsMTAuNDQgMi42NywxMC40NCBMMTAsMTggTDE3LjMzLDEwLjQ0IEMxNy4zMywxMC40NCAxOSw4Ljg0IDE5LDYuNzMgQzE5LDMuNTUgMTYuNjIsMiAxNC4yNiwyIEMxMS45LDIgMTAsNCAxMCw0IEwxMCw0IFoiLz48L3N2Zz4nLGhpc3Rvcnk6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9IiMwMDAiIHBvaW50cz0iMSAyIDIgMiAyIDYgNiA2IDYgNyAxIDcgMSAyIi8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTIuMSw2LjU0OCBDMy4zOTEsMy4yOSA2Ljc0NiwxIDEwLjUsMSBDMTUuNSwxIDE5LjUsNSAxOS41LDEwIEMxOS41LDE1IDE1LjUsMTkgMTAuNSwxOSBDNS41LDE5IDEuNSwxNSAxLjUsMTAiLz48cmVjdCB4PSI5IiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSI3Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTEzLjAxOCwxNC4xOTcgTDkuNDQ1LDEwLjYyNSIvPjwvc3ZnPicsaG9tZTonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjE4LjY1IDExLjM1IDEwIDIuNzEgMS4zNSAxMS4zNSAwLjY1IDEwLjY1IDEwIDEuMjkgMTkuMzUgMTAuNjUiLz48cG9seWdvbiBwb2ludHM9IjE1IDQgMTggNCAxOCA3IDE3IDcgMTcgNSAxNSA1Ii8+PHBvbHlnb24gcG9pbnRzPSIzIDExIDQgMTEgNCAxOCA3IDE4IDcgMTIgMTIgMTIgMTIgMTggMTYgMTggMTYgMTEgMTcgMTEgMTcgMTkgMTEgMTkgMTEgMTMgOCAxMyA4IDE5IDMgMTkiLz48L3N2Zz4nLGltYWdlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjE2LjEiIGN5PSI2LjEiIHI9IjEuMSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iLjUiIHk9IjIuNSIgd2lkdGg9IjE5IiBoZWlnaHQ9IjE1Ii8+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjAxIiBwb2ludHM9IjQsMTMgOCw5IDEzLDE0Ii8+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjAxIiBwb2ludHM9IjExLDEyIDEyLjUsMTAuNSAxNiwxNCIvPjwvc3ZnPicsaW5mbzonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIuMTMsMTEuNTkgQzExLjk3LDEyLjg0IDEwLjM1LDE0LjEyIDkuMSwxNC4xNiBDNi4xNywxNC4yIDkuODksOS40NiA4Ljc0LDguMzcgQzkuMyw4LjE2IDEwLjYyLDcuODMgMTAuNjIsOC44MSBDMTAuNjIsOS42MyAxMC4xMiwxMC41NSA5Ljg4LDExLjMyIEM4LjY2LDE1LjE2IDEyLjEzLDExLjE1IDEyLjE0LDExLjE4IEMxMi4xNiwxMS4yMSAxMi4xNiwxMS4zNSAxMi4xMywxMS41OSBDMTIuMDgsMTEuOTUgMTIuMTYsMTEuMzUgMTIuMTMsMTEuNTkgTDEyLjEzLDExLjU5IFogTTExLjU2LDUuNjcgQzExLjU2LDYuNjcgOS4zNiw3LjE1IDkuMzYsNi4wMyBDOS4zNiw1IDExLjU2LDQuNTQgMTEuNTYsNS42NyBMMTEuNTYsNS42NyBaIi8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iMTAiIGN5PSIxMCIgcj0iOSIvPjwvc3ZnPicsaW5zdGFncmFtOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMy41NSwxSDYuNDZDMy40NSwxLDEsMy40NCwxLDYuNDR2Ny4xMmMwLDMsMi40NSw1LjQ0LDUuNDYsNS40NGg3LjA4YzMuMDIsMCw1LjQ2LTIuNDQsNS40Ni01LjQ0VjYuNDQgQzE5LjAxLDMuNDQsMTYuNTYsMSwxMy41NSwxeiBNMTcuNSwxNGMwLDEuOTMtMS41NywzLjUtMy41LDMuNUg2Yy0xLjkzLDAtMy41LTEuNTctMy41LTMuNVY2YzAtMS45MywxLjU3LTMuNSwzLjUtMy41aDggYzEuOTMsMCwzLjUsMS41NywzLjUsMy41VjE0eiIvPjxjaXJjbGUgY3g9IjE0Ljg3IiBjeT0iNS4yNiIgcj0iMS4wOSIvPjxwYXRoIGQ9Ik0xMC4wMyw1LjQ1Yy0yLjU1LDAtNC42MywyLjA2LTQuNjMsNC42YzAsMi41NSwyLjA3LDQuNjEsNC42Myw0LjYxYzIuNTYsMCw0LjYzLTIuMDYxLDQuNjMtNC42MSBDMTQuNjUsNy41MSwxMi41OCw1LjQ1LDEwLjAzLDUuNDVMMTAuMDMsNS40NUwxMC4wMyw1LjQ1eiBNMTAuMDgsMTNjLTEuNjYsMC0zLTEuMzQtMy0yLjk5YzAtMS42NSwxLjM0LTIuOTksMy0yLjk5czMsMS4zNCwzLDIuOTkgQzEzLjA4LDExLjY2LDExLjc0LDEzLDEwLjA4LDEzTDEwLjA4LDEzTDEwLjA4LDEzeiIvPjwvc3ZnPicsaXRhbGljOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMi42Myw1LjQ4IEwxMC4xNSwxNC41MiBDMTAsMTUuMDggMTAuMzcsMTUuMjUgMTEuOTIsMTUuMyBMMTEuNzIsMTYgTDYsMTYgTDYuMiwxNS4zMSBDNy43OCwxNS4yNiA4LjE5LDE1LjA5IDguMzQsMTQuNTMgTDEwLjgyLDUuNDkgQzEwLjk3LDQuOTIgMTAuNjMsNC43NiA5LjA5LDQuNzEgTDkuMjgsNCBMMTUsNCBMMTQuODEsNC42OSBDMTMuMjMsNC43NSAxMi43OCw0LjkxIDEyLjYzLDUuNDggTDEyLjYzLDUuNDggWiIvPjwvc3ZnPicsam9vbWxhOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik03LjgsMTMuNGwxLjctMS43TDUuOSw4Yy0wLjYtMC41LTAuNi0xLjUsMC0yYzAuNi0wLjYsMS40LTAuNiwyLDBsMS43LTEuN2MtMS0xLTIuMy0xLjMtMy42LTFDNS44LDIuMiw0LjgsMS40LDMuNywxLjQgYy0xLjMsMC0yLjMsMS0yLjMsMi4zYzAsMS4xLDAuOCwyLDEuOCwyLjNjLTAuNCwxLjMtMC4xLDIuOCwxLDMuOEw3LjgsMTMuNEw3LjgsMTMuNHoiLz48cGF0aCBkPSJNMTAuMiw0LjNjMS0xLDIuNS0xLjQsMy44LTFjMC4yLTEuMSwxLjEtMiwyLjMtMmMxLjMsMCwyLjMsMSwyLjMsMi4zYzAsMS4yLTAuOSwyLjItMiwyLjNjMC40LDEuMywwLDIuOC0xLDMuOEwxMy45LDggYzAuNi0wLjUsMC42LTEuNSwwLTJjLTAuNS0wLjYtMS41LTAuNi0yLDBMOC4yLDkuN0w2LjUsOCIvPjxwYXRoIGQ9Ik0xNC4xLDE2LjhjLTEuMywwLjQtMi44LDAuMS0zLjgtMWwxLjctMS43YzAuNiwwLjYsMS41LDAuNiwyLDBjMC41LTAuNiwwLjYtMS41LDAtMmwtMy43LTMuN0wxMiw2LjdsMy43LDMuNyBjMSwxLDEuMywyLjQsMSwzLjZjMS4xLDAuMiwyLDEuMSwyLDIuM2MwLDEuMy0xLDIuMy0yLjMsMi4zQzE1LjIsMTguNiwxNC4zLDE3LjgsMTQuMSwxNi44Ii8+PHBhdGggZD0iTTEzLjIsMTIuMmwtMy43LDMuN2MtMSwxLTIuNCwxLjMtMy42LDFjLTAuMiwxLTEuMiwxLjgtMi4yLDEuOGMtMS4zLDAtMi4zLTEtMi4zLTIuM2MwLTEuMSwwLjgtMiwxLjgtMi4zIGMtMC4zLTEuMywwLTIuNywxLTMuN2wxLjcsMS43Yy0wLjYsMC42LTAuNiwxLjUsMCwyYzAuNiwwLjYsMS40LDAuNiwyLDBsMy43LTMuNyIvPjwvc3ZnPicsbGFwdG9wOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHk9IjE2IiB3aWR0aD0iMjAiIGhlaWdodD0iMSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMi41IiB5PSI0LjUiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxMCIvPjwvc3ZnPicsbGlmZXNhdmVyOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMCwwLjUgQzQuNzYsMC41IDAuNSw0Ljc2IDAuNSwxMCBDMC41LDE1LjI0IDQuNzYsMTkuNSAxMCwxOS41IEMxNS4yNCwxOS41IDE5LjUsMTUuMjQgMTkuNSwxMCBDMTkuNSw0Ljc2IDE1LjI0LDAuNSAxMCwwLjUgTDEwLDAuNSBaIE0xMCwxLjUgQzExLjQ5LDEuNSAxMi44OSwxLjg4IDE0LjExLDIuNTYgTDExLjg1LDQuODIgQzExLjI3LDQuNjEgMTAuNjUsNC41IDEwLDQuNSBDOS4yMSw0LjUgOC40Nyw0LjY3IDcuNzksNC45NiBMNS41OCwyLjc1IEM2Ljg3LDEuOTUgOC4zOCwxLjUgMTAsMS41IEwxMCwxLjUgWiBNNC45Niw3LjggQzQuNjcsOC40OCA0LjUsOS4yMSA0LjUsMTAgQzQuNSwxMC42NSA0LjYxLDExLjI3IDQuODMsMTEuODUgTDIuNTYsMTQuMTEgQzEuODgsMTIuODkgMS41LDExLjQ5IDEuNSwxMCBDMS41LDguMzggMS45NSw2Ljg3IDIuNzUsNS41OCBMNC45Niw3Ljc5IEw0Ljk2LDcuOCBMNC45Niw3LjggWiBNMTAsMTguNSBDOC4yNSwxOC41IDYuNjIsMTcuOTcgNS4yNywxNy4wNiBMNy40NiwxNC44NyBDOC4yMiwxNS4yNyA5LjA4LDE1LjUgMTAsMTUuNSBDMTAuNzksMTUuNSAxMS41MywxNS4zMyAxMi4yMSwxNS4wNCBMMTQuNDIsMTcuMjUgQzEzLjEzLDE4LjA1IDExLjYyLDE4LjUgMTAsMTguNSBMMTAsMTguNSBaIE0xMCwxNC41IEM3LjUyLDE0LjUgNS41LDEyLjQ4IDUuNSwxMCBDNS41LDcuNTIgNy41Miw1LjUgMTAsNS41IEMxMi40OCw1LjUgMTQuNSw3LjUyIDE0LjUsMTAgQzE0LjUsMTIuNDggMTIuNDgsMTQuNSAxMCwxNC41IEwxMCwxNC41IFogTTE1LjA0LDEyLjIxIEMxNS4zMywxMS41MyAxNS41LDEwLjc5IDE1LjUsMTAgQzE1LjUsOS4wOCAxNS4yNyw4LjIyIDE0Ljg3LDcuNDYgTDE3LjA2LDUuMjcgQzE3Ljk3LDYuNjIgMTguNSw4LjI1IDE4LjUsMTAgQzE4LjUsMTEuNjIgMTguMDUsMTMuMTMgMTcuMjUsMTQuNDIgTDE1LjA0LDEyLjIxIEwxNS4wNCwxMi4yMSBaIi8+PC9zdmc+JyxsaW5rOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik0xMC42MjUsMTIuMzc1IEw3LjUyNSwxNS40NzUgQzYuODI1LDE2LjE3NSA1LjkyNSwxNi4xNzUgNS4yMjUsMTUuNDc1IEw0LjUyNSwxNC43NzUgQzMuODI1LDE0LjA3NCAzLjgyNSwxMy4xNzUgNC41MjUsMTIuNDc1IEw3LjYyNSw5LjM3NSIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik05LjMyNSw3LjM3NSBMMTIuNDI1LDQuMjc1IEMxMy4xMjUsMy41NzUgMTQuMDI1LDMuNTc1IDE0LjcyNCw0LjI3NSBMMTUuNDI1LDQuOTc1IEMxNi4xMjUsNS42NzUgMTYuMTI1LDYuNTc1IDE1LjQyNSw3LjI3NSBMMTIuMzI1LDEwLjM3NSIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik03LjkyNSwxMS44NzUgTDExLjkyNSw3Ljk3NSIvPjwvc3ZnPicsbGlua2VkaW46Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUuNzcsMTcuODkgTDUuNzcsNy4xNyBMMi4yMSw3LjE3IEwyLjIxLDE3Ljg5IEw1Ljc3LDE3Ljg5IEw1Ljc3LDE3Ljg5IFogTTMuOTksNS43MSBDNS4yMyw1LjcxIDYuMDEsNC44OSA2LjAxLDMuODYgQzUuOTksMi44IDUuMjQsMiA0LjAyLDIgQzIuOCwyIDIsMi44IDIsMy44NSBDMiw0Ljg4IDIuNzcsNS43IDMuOTcsNS43IEwzLjk5LDUuNyBMMy45OSw1LjcxIEwzLjk5LDUuNzEgWiIvPjxwYXRoIGQ9Ik03Ljc1LDE3Ljg5IEwxMS4zMSwxNy44OSBMMTEuMzEsMTEuOSBDMTEuMzEsMTEuNTggMTEuMzMsMTEuMjYgMTEuNDMsMTEuMDMgQzExLjY5LDEwLjM5IDEyLjI3LDkuNzMgMTMuMjYsOS43MyBDMTQuNTUsOS43MyAxNS4wNiwxMC43MSAxNS4wNiwxMi4xNSBMMTUuMDYsMTcuODkgTDE4LjYyLDE3Ljg5IEwxOC42MiwxMS43NCBDMTguNjIsOC40NSAxNi44Niw2LjkyIDE0LjUyLDYuOTIgQzEyLjYsNi45MiAxMS43NSw3Ljk5IDExLjI4LDguNzMgTDExLjMsOC43MyBMMTEuMyw3LjE3IEw3Ljc1LDcuMTcgQzcuNzksOC4xNyA3Ljc1LDE3Ljg5IDcuNzUsMTcuODkgTDcuNzUsMTcuODkgTDcuNzUsMTcuODkgWiIvPjwvc3ZnPicsbGlzdDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSI2IiB5PSI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjYiIHk9IjkiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iNiIgeT0iMTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjIiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIyIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMSIvPjwvc3ZnPicsbG9jYXRpb246Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMDEiIGQ9Ik0xMCwwLjUgQzYuNDEsMC41IDMuNSwzLjM5IDMuNSw2Ljk4IEMzLjUsMTEuODMgMTAsMTkgMTAsMTkgQzEwLDE5IDE2LjUsMTEuODMgMTYuNSw2Ljk4IEMxNi41LDMuMzkgMTMuNTksMC41IDEwLDAuNSBMMTAsMC41IFoiLz48Y2lyY2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjEwIiBjeT0iNi44IiByPSIyLjMiLz48L3N2Zz4nLGxvY2s6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBoZWlnaHQ9IjEwIiB3aWR0aD0iMTMiIHk9IjguNSIgeD0iMy41Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNNi41LDggTDYuNSw0Ljg4IEM2LjUsMy4wMSA4LjA3LDEuNSAxMCwxLjUgQzExLjkzLDEuNSAxMy41LDMuMDEgMTMuNSw0Ljg4IEwxMy41LDgiLz48L3N2Zz4nLG1haWw6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSIxLjQsNi41IDEwLDExIDE4LjYsNi41Ii8+PHBhdGggZD0iTSAxLDQgMSwxNiAxOSwxNiAxOSw0IDEsNCBaIE0gMTgsMTUgMiwxNSAyLDUgMTgsNSAxOCwxNSBaIi8+PC9zdmc+JyxtZW51Oic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMiIgeT0iOSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIyIiB5PSIxNCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEiLz48L3N2Zz4nLG1pY3JvcGhvbmU6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iMTAiIHgyPSIxMCIgeTE9IjE2LjQ0IiB5Mj0iMTguNSIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeDE9IjciIHgyPSIxMyIgeTE9IjE4LjUiIHkyPSIxOC41Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTEzLjUgNC44OXY1Ljg3YTMuNSAzLjUgMCAwIDEtNyAwVjQuODlhMy41IDMuNSAwIDAgMSA3IDB6Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTE1LjUgMTAuMzZWMTFhNS41IDUuNSAwIDAgMS0xMSAwdi0uNiIvPjwvc3ZnPicsIm1pbnVzLWNpcmNsZSI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iOS41IiBjeT0iOS41IiByPSI5Ii8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iNSIgeTE9IjkuNSIgeDI9IjE0IiB5Mj0iOS41Ii8+PC9zdmc+JyxtaW51czonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIxOCIgeT0iOSIgeD0iMSIvPjwvc3ZnPicsIm1vcmUtdmVydGljYWwiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjEwIiBjeT0iMyIgcj0iMiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjIiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjE3IiByPSIyIi8+PC9zdmc+Jyxtb3JlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjMiIGN5PSIxMCIgcj0iMiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjIiLz48Y2lyY2xlIGN4PSIxNyIgY3k9IjEwIiByPSIyIi8+PC9zdmc+Jyxtb3ZlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIHBvaW50cz0iNCw1IDEsNSAxLDkgMiw5IDIsNiA0LDYiLz48cG9seWdvbiBwb2ludHM9IjEsMTYgMiwxNiAyLDE4IDQsMTggNCwxOSAxLDE5Ii8+PHBvbHlnb24gcG9pbnRzPSIxNCwxNiAxNCwxOSAxMSwxOSAxMSwxOCAxMywxOCAxMywxNiIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iNS41IiB5PSIxLjUiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIvPjxyZWN0IHg9IjEiIHk9IjExIiB3aWR0aD0iMSIgaGVpZ2h0PSIzIi8+PHJlY3QgeD0iNiIgeT0iMTgiIHdpZHRoPSIzIiBoZWlnaHQ9IjEiLz48L3N2Zz4nLG51dDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHBvaW50cz0iMi41LDUuNyAxMCwxLjMgMTcuNSw1LjcgMTcuNSwxNC4zIDEwLDE4LjcgMi41LDE0LjMiLz48Y2lyY2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjEwIiBjeT0iMTAiIHI9IjMuNSIvPjwvc3ZnPicscGFnZWtpdDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjMsMSAxNywxIDE3LDE2IDEwLDE2IDEwLDEzIDE0LDEzIDE0LDQgNiw0IDYsMTYgMTAsMTYgMTAsMTkgMywxOSIvPjwvc3ZnPicsInBhaW50LWJ1Y2tldCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwLjIxLDEgTDAsMTEuMjEgTDguMSwxOS4zMSBMMTguMzEsOS4xIEwxMC4yMSwxIEwxMC4yMSwxIFogTTE2Ljg5LDkuMSBMMTUsMTEgTDEuNywxMSBMMTAuMjEsMi40MiBMMTYuODksOS4xIFoiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNNi40MiwyLjMzIEwxMS43LDcuNjEiLz48cGF0aCBkPSJNMTguNDksMTIgQzE4LjQ5LDEyIDIwLDE0LjA2IDIwLDE1LjM2IEMyMCwxNi4yOCAxOS4yNCwxNyAxOC40OSwxNyBMMTguNDksMTcgQzE3Ljc0LDE3IDE3LDE2LjI4IDE3LDE1LjM2IEMxNywxNC4wNiAxOC40OSwxMiAxOC40OSwxMiBMMTguNDksMTIgWiIvPjwvc3ZnPicscGVuY2lsOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgZD0iTTE3LjI1LDYuMDEgTDcuMTIsMTYuMSBMMy44MiwxNy4yIEw1LjAyLDEzLjkgTDE1LjEyLDMuODggQzE1LjcxLDMuMjkgMTYuNjYsMy4yOSAxNy4yNSwzLjg4IEMxNy44Myw0LjQ3IDE3LjgzLDUuNDIgMTcuMjUsNi4wMSBMMTcuMjUsNi4wMSBaIi8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMTUuOTgsNy4yNjggTDEzLjg1MSw1LjE0OCIvPjwvc3ZnPicsInBob25lLWxhbmRzY2FwZSI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMTcsNS41IEMxNy44LDUuNSAxOC41LDYuMiAxOC41LDcgTDE4LjUsMTQgQzE4LjUsMTQuOCAxNy44LDE1LjUgMTcsMTUuNSBMMywxNS41IEMyLjIsMTUuNSAxLjUsMTQuOCAxLjUsMTQgTDEuNSw3IEMxLjUsNi4yIDIuMiw1LjUgMyw1LjUgTDE3LDUuNSBMMTcsNS41IEwxNyw1LjUgWiIvPjxjaXJjbGUgY3g9IjMuOCIgY3k9IjEwLjUiIHI9Ii44Ii8+PC9zdmc+JyxwaG9uZTonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGQ9Ik0xNS41LDE3IEMxNS41LDE3LjggMTQuOCwxOC41IDE0LDE4LjUgTDcsMTguNSBDNi4yLDE4LjUgNS41LDE3LjggNS41LDE3IEw1LjUsMyBDNS41LDIuMiA2LjIsMS41IDcsMS41IEwxNCwxLjUgQzE0LjgsMS41IDE1LjUsMi4yIDE1LjUsMyBMMTUuNSwxNyBMMTUuNSwxNyBMMTUuNSwxNyBaIi8+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjE2LjUiIHI9Ii44Ii8+PC9zdmc+JyxwaW50ZXJlc3Q6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwLjIxLDEgQzUuNSwxIDMsNC4xNiAzLDcuNjEgQzMsOS4yMSAzLjg1LDExLjIgNS4yMiwxMS44NCBDNS40MywxMS45NCA1LjU0LDExLjg5IDUuNTgsMTEuNjkgQzUuNjIsMTEuNTQgNS44LDEwLjggNS44OCwxMC40NSBDNS45MSwxMC4zNCA1Ljg5LDEwLjI0IDUuOCwxMC4xNCBDNS4zNiw5LjU5IDUsOC41OCA1LDcuNjUgQzUsNS4yNCA2LjgyLDIuOTEgOS45MywyLjkxIEMxMi42MSwyLjkxIDE0LjQ5LDQuNzQgMTQuNDksNy4zNSBDMTQuNDksMTAuMyAxMywxMi4zNSAxMS4wNiwxMi4zNSBDOS45OSwxMi4zNSA5LjE5LDExLjQ3IDkuNDQsMTAuMzggQzkuNzUsOS4wOCAxMC4zNSw3LjY4IDEwLjM1LDYuNzUgQzEwLjM1LDUuOTEgOS45LDUuMjEgOC45Nyw1LjIxIEM3Ljg3LDUuMjEgNi45OSw2LjM0IDYuOTksNy44NiBDNi45OSw4LjgzIDcuMzIsOS40OCA3LjMyLDkuNDggQzcuMzIsOS40OCA2LjI0LDE0LjA2IDYuMDQsMTQuOTEgQzUuNywxNi4zNSA2LjA4LDE4LjcgNi4xMiwxOC45IEM2LjE0LDE5LjAxIDYuMjYsMTkuMDUgNi4zMywxOC45NSBDNi40NCwxOC44MSA3Ljc0LDE2Ljg1IDguMTEsMTUuNDQgQzguMjQsMTQuOTMgOC43OSwxMi44NCA4Ljc5LDEyLjg0IEM5LjE1LDEzLjUyIDEwLjE5LDE0LjA5IDExLjI5LDE0LjA5IEMxNC41OCwxNC4wOSAxNi45NiwxMS4wNiAxNi45Niw3LjMgQzE2Ljk0LDMuNyAxNCwxIDEwLjIxLDEiLz48L3N2Zz4nLCJwbGF5LWNpcmNsZSI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgcG9pbnRzPSI4LjUgNyAxMy41IDEwIDguNSAxMyIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjEwIiBjeT0iMTAiIHI9IjkiLz48L3N2Zz4nLHBsYXk6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjYuNSw1IDE0LjUsMTAgNi41LDE1Ii8+PC9zdmc+JywicGx1cy1jaXJjbGUiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjkuNSIgY3k9IjkuNSIgcj0iOSIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeDE9IjkuNSIgeTE9IjUiIHgyPSI5LjUiIHkyPSIxNCIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeDE9IjUiIHkxPSI5LjUiIHgyPSIxNCIgeTI9IjkuNSIvPjwvc3ZnPicscGx1czonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSI5IiB5PSIxIiB3aWR0aD0iMSIgaGVpZ2h0PSIxNyIvPjxyZWN0IHg9IjEiIHk9IjkiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxIi8+PC9zdmc+JyxwcmludDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjQuNSAxMy41IDEuNSAxMy41IDEuNSA2LjUgMTguNSA2LjUgMTguNSAxMy41IDE1LjUgMTMuNSIvPjxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHBvaW50cz0iMTUuNSA2LjUgMTUuNSAyLjUgNC41IDIuNSA0LjUgNi41Ii8+PHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB3aWR0aD0iMTEiIGhlaWdodD0iNiIgeD0iNC41IiB5PSIxMS41Ii8+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iMSIgeD0iNiIgeT0iMTMiLz48cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSIxIiB4PSI2IiB5PSIxNSIvPjwvc3ZnPicscHVsbDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjYuODUsOCA5LjUsMTAuNiAxMi4xNSw4IDEyLjg1LDguNyA5LjUsMTIgNi4xNSw4LjciLz48bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHgxPSI5LjUiIHkxPSIxMSIgeDI9IjkuNSIgeTI9IjIiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjYsNS41IDMuNSw1LjUgMy41LDE4LjUgMTUuNSwxOC41IDE1LjUsNS41IDEzLDUuNSIvPjwvc3ZnPicscHVzaDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjEyLjE1LDQgOS41LDEuNCA2Ljg1LDQgNi4xNSwzLjMgOS41LDAgMTIuODUsMy4zIi8+PGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4MT0iOS41IiB5MT0iMTAiIHgyPSI5LjUiIHkyPSIxIi8+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSI2IDUuNSAzLjUgNS41IDMuNSAxOC41IDE1LjUgMTguNSAxNS41IDUuNSAxMyA1LjUiLz48L3N2Zz4nLHF1ZXN0aW9uOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjEwIiBjeT0iMTAiIHI9IjkiLz48Y2lyY2xlIGN4PSIxMC40NCIgY3k9IjE0LjQyIiByPSIxLjA1Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMiIgZD0iTTguMTcsNy43OSBDOC4xNyw0Ljc1IDEyLjcyLDQuNzMgMTIuNzIsNy43MiBDMTIuNzIsOC42NyAxMS44MSw5LjE1IDExLjIzLDkuNzUgQzEwLjc1LDEwLjI0IDEwLjUxLDEwLjczIDEwLjQ1LDExLjQgQzEwLjQ0LDExLjUzIDEwLjQzLDExLjY0IDEwLjQzLDExLjc1Ii8+PC9zdmc+JywicXVvdGUtcmlnaHQiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNy4yNyw3Ljc5IEMxNy4yNyw5LjQ1IDE2Ljk3LDEwLjQzIDE1Ljk5LDEyLjAyIEMxNC45OCwxMy42NCAxMywxNS4yMyAxMS41NiwxNS45NyBMMTEuMSwxNS4wOCBDMTIuMzQsMTQuMiAxMy4xNCwxMy41MSAxNC4wMiwxMS44MiBDMTQuMjcsMTEuMzQgMTQuNDEsMTAuOTIgMTQuNDksMTAuNTQgQzE0LjMsMTAuNTggMTQuMDksMTAuNiAxMy44OCwxMC42IEMxMi4wNiwxMC42IDEwLjU5LDkuMTIgMTAuNTksNy4zIEMxMC41OSw1LjQ4IDEyLjA2LDQgMTMuODgsNCBDMTUuMzksNCAxNi42Nyw1LjAyIDE3LjA1LDYuNDIgQzE3LjE5LDYuODIgMTcuMjcsNy4yNyAxNy4yNyw3Ljc5IEwxNy4yNyw3Ljc5IFoiLz48cGF0aCBkPSJNOC42OCw3Ljc5IEM4LjY4LDkuNDUgOC4zOCwxMC40MyA3LjQsMTIuMDIgQzYuMzksMTMuNjQgNC40MSwxNS4yMyAyLjk3LDE1Ljk3IEwyLjUxLDE1LjA4IEMzLjc1LDE0LjIgNC41NSwxMy41MSA1LjQzLDExLjgyIEM1LjY4LDExLjM0IDUuODIsMTAuOTIgNS45LDEwLjU0IEM1LjcxLDEwLjU4IDUuNSwxMC42IDUuMjksMTAuNiBDMy40NywxMC42IDIsOS4xMiAyLDcuMyBDMiw1LjQ4IDMuNDcsNCA1LjI5LDQgQzYuOCw0IDguMDgsNS4wMiA4LjQ2LDYuNDIgQzguNiw2LjgyIDguNjgsNy4yNyA4LjY4LDcuNzkgTDguNjgsNy43OSBaIi8+PC9zdmc+JyxyZWNlaXZlcjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMSIgZD0iTTYuMTg5LDEzLjYxMUM4LjEzNCwxNS41MjUgMTEuMDk3LDE4LjIzOSAxMy44NjcsMTguMjU3QzE2LjQ3LDE4LjI3NSAxOC4yLDE2LjI0MSAxOC4yLDE2LjI0MUwxNC41MDksMTIuNTUxTDExLjUzOSwxMy42MzlMNi4xODksOC4yOUw3LjMxMyw1LjM1NUwzLjc2LDEuOEMzLjc2LDEuOCAxLjczMiwzLjUzNyAxLjcsNi4wOTJDMS42NjcsOC44MDkgNC4zNDcsMTEuNzM4IDYuMTg5LDEzLjYxMSIvPjwvc3ZnPicscmVkZGl0Oic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xOSA5LjA1YTIuNTYgMi41NiAwIDAgMC0yLjU2LTIuNTYgMi41OSAyLjU5IDAgMCAwLTEuODguODIgMTAuNjMgMTAuNjMgMCAwIDAtNC4xNC0xdi0uMDhjLjU4LTEuNjIgMS41OC0zLjg5IDIuNy00LjEuMzgtLjA4Ljc3LjEyIDEuMTkuNTdhMS4xNSAxLjE1IDAgMCAwLS4wNi4zNyAxLjQ4IDEuNDggMCAxIDAgMS41MS0xLjQ1IDEuNDMgMS40MyAwIDAgMC0uNzYuMTlBMi4yOSAyLjI5IDAgMCAwIDEyLjkxIDFjLTIuMTEuNDMtMy4zOSA0LjM4LTMuNjMgNS4xOSAwIDAgMCAuMTEtLjA2LjExYTEwLjY1IDEwLjY1IDAgMCAwLTMuNzUgMUEyLjU2IDIuNTYgMCAwIDAgMSA5LjA1YTIuNDIgMi40MiAwIDAgMCAuNzIgMS43NkE1LjE4IDUuMTggMCAwIDAgMS4yNCAxM2MwIDMuNjYgMy45MiA2LjY0IDguNzMgNi42NHM4Ljc0LTMgOC43NC02LjY0YTUuMjMgNS4yMyAwIDAgMC0uNDYtMi4xM0EyLjU4IDIuNTggMCAwIDAgMTkgOS4wNXptLTE2Ljg4IDBhMS40NCAxLjQ0IDAgMCAxIDIuMjctMS4xOSA3LjY4IDcuNjggMCAwIDAtMi4wNyAxLjkxIDEuMzMgMS4zMyAwIDAgMS0uMi0uNzJ6TTEwIDE4LjRjLTQuMTcgMC03LjU1LTIuNC03LjU1LTUuNFM1LjgzIDcuNTMgMTAgNy41MyAxNy41IDEwIDE3LjUgMTNzLTMuMzggNS40LTcuNSA1LjR6bTcuNjktOC42MWE3LjYyIDcuNjIgMCAwIDAtMi4wOS0xLjkxIDEuNDEgMS40MSAwIDAgMSAuODQtLjI4IDEuNDcgMS40NyAwIDAgMSAxLjQ0IDEuNDUgMS4zNCAxLjM0IDAgMCAxLS4yMS43MnoiLz48cGF0aCBkPSJNNi42OSAxMi41OGExLjM5IDEuMzkgMCAxIDEgMS4zOS0xLjM5IDEuMzggMS4zOCAwIDAgMS0xLjM4IDEuMzl6Ii8+PHBhdGggZD0iTTE0LjI2IDExLjJhMS4zOSAxLjM5IDAgMSAxLTEuMzktMS4zOSAxLjM5IDEuMzkgMCAwIDEgMS4zOSAxLjM5eiIvPjxwYXRoIGQ9Ik0xMy4wOSAxNC44OGEuNTQuNTQgMCAwIDEtLjA5Ljc3IDUuMyA1LjMgMCAwIDEtMy4yNiAxLjE5IDUuNjEgNS42MSAwIDAgMS0zLjQtMS4yMi41NS41NSAwIDEgMSAuNzMtLjgzIDQuMDkgNC4wOSAwIDAgMCA1LjI1IDAgLjU2LjU2IDAgMCAxIC43Ny4wOXoiLz48L3N2Zz4nLHJlZnJlc2g6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTE3LjA4LDExLjE1IEMxNy4wOSwxMS4zMSAxNy4xLDExLjQ3IDE3LjEsMTEuNjQgQzE3LjEsMTUuNTMgMTMuOTQsMTguNjkgMTAuMDUsMTguNjkgQzYuMTYsMTguNjggMywxNS41MyAzLDExLjYzIEMzLDcuNzQgNi4xNiw0LjU4IDEwLjA1LDQuNTggQzEwLjksNC41OCAxMS43MSw0LjczIDEyLjQ2LDUiLz48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjkuOSAyIDEyLjc5IDQuODkgOS43OSA3LjkiLz48L3N2Zz4nLHJlcGx5Oic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNy43LDEzLjExIEMxNi4xMiwxMC4wMiAxMy44NCw3Ljg1IDExLjAyLDYuNjEgQzEwLjU3LDYuNDEgOS43NSw2LjEzIDksNS45MSBMOSwyIEwxLDkgTDksMTYgTDksMTIuMTMgQzEwLjc4LDEyLjQ3IDEyLjUsMTMuMTkgMTQuMDksMTQuMjUgQzE3LjEzLDE2LjI4IDE4LjU2LDE4LjU0IDE4LjU2LDE4LjU0IEMxOC41NiwxOC41NCAxOC44MSwxNS4yOCAxNy43LDEzLjExIEwxNy43LDEzLjExIFogTTE0LjgyLDEzLjUzIEMxMy4xNywxMi40IDExLjAxLDExLjQgOCwxMC45MiBMOCwxMy42MyBMMi41NSw5IEw4LDQuMjUgTDgsNi44IEM4LjMsNi44NiA5LjE2LDcuMDIgMTAuMzcsNy40OSBDMTMuMyw4LjY1IDE1LjU0LDEwLjk2IDE2LjY1LDEzLjA4IEMxNi45NywxMy43IDE3LjQ4LDE0Ljg2IDE3LjY4LDE2IEMxNi44NywxNS4wNSAxNS43MywxNC4xNSAxNC44MiwxMy41MyBMMTQuODIsMTMuNTMgWiIvPjwvc3ZnPicscnNzOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjMuMTIiIGN5PSIxNi44IiByPSIxLjg1Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTEuNSw4LjIgQzEuNzgsOC4xOCAyLjA2LDguMTYgMi4zNSw4LjE2IEM3LjU3LDguMTYgMTEuODEsMTIuMzcgMTEuODEsMTcuNTcgQzExLjgxLDE3Ljg5IDExLjc5LDE4LjE5IDExLjc2LDE4LjUiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNMS41LDIuNTIgQzEuNzgsMi41MSAyLjA2LDIuNSAyLjM1LDIuNSBDMTAuNzIsMi41IDE3LjUsOS4yNCAxNy41LDE3LjU3IEMxNy41LDE3Ljg5IDE3LjQ5LDE4LjE5IDE3LjQ3LDE4LjUiLz48L3N2Zz4nLHNlYXJjaDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGN4PSI5IiBjeT0iOSIgcj0iNyIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik0xNCwxNCBMMTgsMTggTDE0LDE0IFoiLz48L3N2Zz4nLHNlcnZlcjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iMSIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iNSIgeT0iMyIgd2lkdGg9IjEiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIxIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNiIgeT0iMyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjE2IiB5PSIxMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iOS45IiBjeT0iMTcuNCIgcj0iMS40Ii8+PHJlY3QgeD0iMyIgeT0iMTAiIHdpZHRoPSIxIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI1IiB5PSIxMCIgd2lkdGg9IjEiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjkuNSIgeT0iMTQiIHdpZHRoPSIxIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIzIiB5PSIxNyIgd2lkdGg9IjYiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjExIiB5PSIxNyIgd2lkdGg9IjYiIGhlaWdodD0iMSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMS41IiB5PSIxLjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSI1Ii8+PHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiB4PSIxLjUiIHk9IjguNSIgd2lkdGg9IjE3IiBoZWlnaHQ9IjUiLz48L3N2Zz4nLHNldHRpbmdzOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjYuMTEiIGN5PSIzLjU1IiByeD0iMi4xMSIgcnk9IjIuMTUiLz48ZWxsaXBzZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSI2LjExIiBjeT0iMTUuNTUiIHJ4PSIyLjExIiByeT0iMi4xNSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iMTMuMTUiIGN5PSI5LjU1IiByPSIyLjE1Ii8+PHJlY3QgeD0iMSIgeT0iMyIgd2lkdGg9IjMiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjEwIiB5PSIzIiB3aWR0aD0iOCIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMSIgeT0iOSIgd2lkdGg9IjgiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjE1IiB5PSI5IiB3aWR0aD0iMyIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMSIgeT0iMTUiIHdpZHRoPSIzIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIxMCIgeT0iMTUiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz48L3N2Zz4nLHNocmluazonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjExIDQgMTIgNCAxMiA4IDE2IDggMTYgOSAxMSA5Ii8+PHBvbHlnb24gcG9pbnRzPSI0IDExIDkgMTEgOSAxNiA4IDE2IDggMTIgNCAxMiIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIGQ9Ik0xMiw4IEwxOCwyIi8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTIsMTggTDgsMTIiLz48L3N2Zz4nLCJzaWduLWluIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjcgMiAxNyAyIDE3IDE3IDcgMTcgNyAxNiAxNiAxNiAxNiAzIDcgMyIvPjxwb2x5Z29uIHBvaW50cz0iOS4xIDEzLjQgOC41IDEyLjggMTEuMjggMTAgNCAxMCA0IDkgMTEuMjggOSA4LjUgNi4yIDkuMSA1LjYyIDEzIDkuNSIvPjwvc3ZnPicsInNpZ24tb3V0IjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjEzLjEgMTMuNCAxMi41IDEyLjggMTUuMjggMTAgOCAxMCA4IDkgMTUuMjggOSAxMi41IDYuMiAxMy4xIDUuNjIgMTcgOS41Ii8+PHBvbHlnb24gcG9pbnRzPSIxMyAyIDMgMiAzIDE3IDEzIDE3IDEzIDE2IDQgMTYgNCAzIDEzIDMiLz48L3N2Zz4nLHNvY2lhbDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiB4MT0iMTMuNCIgeTE9IjE0IiB4Mj0iNi4zIiB5Mj0iMTAuNyIvPjxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjEiIHgxPSIxMy41IiB5MT0iNS41IiB4Mj0iNi41IiB5Mj0iOC44Ii8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iMTUuNSIgY3k9IjQuNiIgcj0iMi4zIi8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iMTUuNSIgY3k9IjE0LjgiIHI9IjIuMyIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjQuNSIgY3k9IjkuOCIgcj0iMi4zIi8+PC9zdmc+Jyxzb3VuZGNsb3VkOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNy4yLDkuNGMtMC40LDAtMC44LDAuMS0xLjEwMSwwLjJjLTAuMTk5LTIuNS0yLjM5OS00LjUtNS00LjVjLTAuNiwwLTEuMiwwLjEtMS43LDAuM0M5LjIsNS41LDkuMSw1LjYsOS4xLDUuNlYxNWg4IGMxLjYwMSwwLDIuODAxLTEuMiwyLjgwMS0yLjhDMjAsMTAuNywxOC43LDkuNCwxNy4yLDkuNEwxNy4yLDkuNHoiLz48cmVjdCB4PSI2IiB5PSI2LjUiIHdpZHRoPSIxLjUiIGhlaWdodD0iOC41Ii8+PHJlY3QgeD0iMyIgeT0iOCIgd2lkdGg9IjEuNSIgaGVpZ2h0PSI3Ii8+PHJlY3QgeT0iMTAiIHdpZHRoPSIxLjUiIGhlaWdodD0iNSIvPjwvc3ZnPicsc3RhcjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4wMSIgcG9pbnRzPSIxMCAyIDEyLjYzIDcuMjcgMTguNSA4LjEyIDE0LjI1IDEyLjIyIDE1LjI1IDE4IDEwIDE1LjI3IDQuNzUgMTggNS43NSAxMi4yMiAxLjUgOC4xMiA3LjM3IDcuMjciLz48L3N2Zz4nLHN0cmlrZXRocm91Z2g6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYsMTMuMDIgTDYuNjUsMTMuMDIgQzcuNjQsMTUuMTYgOC44NiwxNi4xMiAxMC40MSwxNi4xMiBDMTIuMjIsMTYuMTIgMTIuOTIsMTQuOTMgMTIuOTIsMTMuODkgQzEyLjkyLDEyLjU1IDExLjk5LDEyLjAzIDkuNzQsMTEuMjMgQzguMDUsMTAuNjQgNi4yMywxMC4xMSA2LjIzLDcuODMgQzYuMjMsNS41IDguMDksNC4wOSAxMC40LDQuMDkgQzExLjQ0LDQuMDkgMTIuMTMsNC4zMSAxMi43Miw0LjU0IEwxMy4zMyw0IEwxMy44MSw0IEwxMy44MSw3LjU5IEwxMy4xNiw3LjU5IEMxMi41NSw1Ljg4IDExLjUyLDQuODkgMTAuMDcsNC44OSBDOC44NCw0Ljg5IDcuODksNS42OSA3Ljg5LDcuMDMgQzcuODksOC4yOSA4Ljg5LDguNzggMTAuODgsOS40NSBDMTIuNTcsMTAuMDMgMTQuMzgsMTAuNiAxNC4zOCwxMi45MSBDMTQuMzgsMTQuNzUgMTMuMjcsMTYuOTMgMTAuMTgsMTYuOTMgQzkuMTgsMTYuOTMgOC4xNywxNi42OSA3LjQ2LDE2LjM5IEw2LjUyLDE3IEw2LDE3IEw2LDEzLjAyIEw2LDEzLjAyIFoiLz48cmVjdCB4PSIzIiB5PSIxMCIgd2lkdGg9IjE1IiBoZWlnaHQ9IjEiLz48L3N2Zz4nLHRhYmxlOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHg9IjEiIHk9IjMiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMSIgeT0iNyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIxIiB5PSIxMSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIxIiB5PSIxNSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEiLz48L3N2Zz4nLCJ0YWJsZXQtbGFuZHNjYXBlIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGQ9Ik0xLjUsNSBDMS41LDQuMiAyLjIsMy41IDMsMy41IEwxNywzLjUgQzE3LjgsMy41IDE4LjUsNC4yIDE4LjUsNSBMMTguNSwxNiBDMTguNSwxNi44IDE3LjgsMTcuNSAxNywxNy41IEwzLDE3LjUgQzIuMiwxNy41IDEuNSwxNi44IDEuNSwxNiBMMS41LDUgTDEuNSw1IEwxLjUsNSBaIi8+PGNpcmNsZSBjeD0iMy43IiBjeT0iMTAuNSIgcj0iLjgiLz48L3N2Zz4nLHRhYmxldDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGQ9Ik01LDE4LjUgQzQuMiwxOC41IDMuNSwxNy44IDMuNSwxNyBMMy41LDMgQzMuNSwyLjIgNC4yLDEuNSA1LDEuNSBMMTYsMS41IEMxNi44LDEuNSAxNy41LDIuMiAxNy41LDMgTDE3LjUsMTcgQzE3LjUsMTcuOCAxNi44LDE4LjUgMTYsMTguNSBMNSwxOC41IEw1LDE4LjUgTDUsMTguNSBaIi8+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjE2LjMiIHI9Ii44Ii8+PC9zdmc+Jyx0YWc6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgZD0iTTE3LjUsMy43MSBMMTcuNSw3LjcyIEMxNy41LDcuOTYgMTcuNCw4LjIgMTcuMjEsOC4zOSBMOC4zOSwxNy4yIEM3Ljk5LDE3LjYgNy4zMywxNy42IDYuOTMsMTcuMiBMMi44LDEzLjA3IEMyLjQsMTIuNjcgMi40LDEyLjAxIDIuOCwxMS42MSBMMTEuNjEsMi44IEMxMS44MSwyLjYgMTIuMDgsMi41IDEyLjM0LDIuNSBMMTYuMTksMi41IEMxNi41MiwyLjUgMTYuODYsMi42MyAxNy4xMSwyLjg4IEMxNy4zNSwzLjExIDE3LjQ4LDMuNCAxNy41LDMuNzEgTDE3LjUsMy43MSBaIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI2IiByPSIxIi8+PC9zdmc+Jyx0aHVtYm5haWxzOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMy41IiB5PSIzLjUiIHdpZHRoPSI1IiBoZWlnaHQ9IjUiLz48cmVjdCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHg9IjExLjUiIHk9IjMuNSIgd2lkdGg9IjUiIGhlaWdodD0iNSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMTEuNSIgeT0iMTEuNSIgd2lkdGg9IjUiIGhlaWdodD0iNSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMy41IiB5PSIxMS41IiB3aWR0aD0iNSIgaGVpZ2h0PSI1Ii8+PC9zdmc+Jyx0cmFzaDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjYuNSAzIDYuNSAxLjUgMTMuNSAxLjUgMTMuNSAzIi8+PHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSI0LjUgNCA0LjUgMTguNSAxNS41IDE4LjUgMTUuNSA0Ii8+PHJlY3QgeD0iOCIgeT0iNyIgd2lkdGg9IjEiIGhlaWdodD0iOSIvPjxyZWN0IHg9IjExIiB5PSI3IiB3aWR0aD0iMSIgaGVpZ2h0PSI5Ii8+PHJlY3QgeD0iMiIgeT0iMyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEiLz48L3N2Zz4nLCJ0cmlhbmdsZS1kb3duIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjUgNyAxNSA3IDEwIDEyIi8+PC9zdmc+JywidHJpYW5nbGUtbGVmdCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlnb24gcG9pbnRzPSIxMiA1IDcgMTAgMTIgMTUiLz48L3N2Zz4nLCJ0cmlhbmdsZS1yaWdodCI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlnb24gcG9pbnRzPSI4IDUgMTMgMTAgOCAxNSIvPjwvc3ZnPicsInRyaWFuZ2xlLXVwIjonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjUgMTMgMTAgOCAxNSAxMyIvPjwvc3ZnPicsdHJpcGFkdmlzb3I6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE5LjAyMSw3Ljg2NkMxOS4yNTYsNi44NjIsMjAsNS44NTQsMjAsNS44NTRoLTMuMzQ2QzE0Ljc4MSw0LjY0MSwxMi41MDQsNCw5Ljk4LDRDNy4zNjMsNCw0Ljk5OSw0LjY1MSwzLjEzNSw1Ljg3NkgwXHRjMCwwLDAuNzM4LDAuOTg3LDAuOTc2LDEuOTg4Yy0wLjYxMSwwLjgzNy0wLjk3MywxLjg1Mi0wLjk3MywyLjk2NGMwLDIuNzYzLDIuMjQ5LDUuMDA5LDUuMDExLDUuMDA5XHRjMS41NzYsMCwyLjk3Ni0wLjczNywzLjkwMS0xLjg3OWwxLjA2MywxLjU5OWwxLjA3NS0xLjYxNWMwLjQ3NSwwLjYxMSwxLjEsMS4xMTEsMS44MzgsMS40NTFjMS4yMTMsMC41NDcsMi41NzQsMC42MTIsMy44MjUsMC4xNVx0YzIuNTg5LTAuOTYzLDMuOTEzLTMuODUyLDIuOTY0LTYuNDM5Yy0wLjE3NS0wLjQ2My0wLjQtMC44NzYtMC42NzUtMS4yMzhIMTkuMDIxeiBNMTYuMzgsMTQuNTk0XHRjLTEuMDAyLDAuMzcxLTIuMDg4LDAuMzI4LTMuMDYtMC4xMTljLTAuNjg4LTAuMzE3LTEuMjUyLTAuODE3LTEuNjU3LTEuNDM4Yy0wLjE2NC0wLjI1LTAuMzEzLTAuNTItMC40MTctMC44MTFcdGMtMC4xMjQtMC4zMjgtMC4xODYtMC42NjgtMC4yMTctMS4wMTRjLTAuMDYzLTAuNjg5LDAuMDM3LTEuMzk2LDAuMzM5LTIuMDQzYzAuNDQ4LTAuOTcxLDEuMjUxLTEuNzEsMi4yNS0yLjA3OVx0YzIuMDc1LTAuNzY1LDQuMzc1LDAuMyw1LjE0LDIuMzY2YzAuNzYyLDIuMDY2LTAuMzAxLDQuMzctMi4zNjMsNS4xMzRMMTYuMzgsMTQuNTk0TDE2LjM4LDE0LjU5NHogTTguMzIyLDEzLjA2Nlx0Yy0wLjcyLDEuMDU5LTEuOTM1LDEuNzYtMy4zMDksMS43NmMtMi4yMDcsMC00LjAwMS0xLjc5Ny00LjAwMS0zLjk5NmMwLTIuMjAzLDEuNzk1LTQuMDAyLDQuMDAxLTQuMDAyXHRjMi4yMDQsMCwzLjk5OSwxLjgsMy45OTksNC4wMDJjMCwwLjEzNy0wLjAyNCwwLjI2MS0wLjA0LDAuMzk2Yy0wLjA2NywwLjY3OC0wLjI4NCwxLjMxMy0wLjY0OCwxLjg1M3YtMC4wMTNIOC4zMjJ6IE0yLjQ3MiwxMC43NzVcdGMwLDEuMzY3LDEuMTEyLDIuNDc5LDIuNDc2LDIuNDc5YzEuMzYzLDAsMi40NzItMS4xMSwyLjQ3Mi0yLjQ3OWMwLTEuMzU5LTEuMTEtMi40NjgtMi40NzItMi40NjhcdEMzLjU4NCw4LjMwNiwyLjQ3Myw5LjQxNiwyLjQ3MiwxMC43NzVMMi40NzIsMTAuNzc1eiBNMTIuNTE0LDEwLjc3NWMwLDEuMzY3LDEuMTA0LDIuNDc5LDIuNDcxLDIuNDc5XHRjMS4zNjMsMCwyLjQ3NC0xLjEwOCwyLjQ3NC0yLjQ3OWMwLTEuMzU5LTEuMTEtMi40NjgtMi40NzQtMi40NjhjLTEuMzY0LDAtMi40NzcsMS4xMDktMi40NzcsMi40NjhIMTIuNTE0eiBNMy4zMjQsMTAuNzc1XHRjMC0wLjg5MywwLjcyNi0xLjYxOCwxLjYxNC0xLjYxOGMwLjg4OSwwLDEuNjI1LDAuNzI3LDEuNjI1LDEuNjE4YzAsMC44OTgtMC43MjUsMS42MjctMS42MjUsMS42MjdcdGMtMC45MDEsMC0xLjYyNS0wLjcyOS0xLjYyNS0xLjYyN0gzLjMyNHogTTEzLjM1NCwxMC43NzVjMC0wLjg5MywwLjcyNi0xLjYxOCwxLjYyNy0xLjYxOGMwLjg4NiwwLDEuNjEsMC43MjcsMS42MSwxLjYxOFx0YzAsMC44OTgtMC43MjYsMS42MjctMS42MjYsMS42MjdzLTEuNjI1LTAuNzI5LTEuNjI1LTEuNjI3SDEzLjM1NHogTTkuOTc3LDQuODc1YzEuNzk4LDAsMy40MjUsMC4zMjQsNC44NDksMC45NjhcdGMtMC41MzUsMC4wMTUtMS4wNjEsMC4xMDgtMS41ODYsMC4zYy0xLjI2NCwwLjQ2My0yLjI2NCwxLjM4OC0yLjgxNSwyLjYwNGMtMC4yNjIsMC41NTEtMC4zOTgsMS4xMzMtMC40NDgsMS43Mlx0QzkuNzksNy45MDUsNy42NzcsNS44NzMsNS4wNzYsNS44MkM2LjUwMSw1LjIwOCw4LjE1Myw0Ljg3NSw5Ljk0LDQuODc1SDkuOTc3eiIvPjwvc3ZnPicsdHVtYmxyOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02Ljg4NSw4LjU5OGMwLDAsMCwzLjM5MywwLDQuOTk2YzAsMC4yODIsMCwwLjY2LDAuMDk0LDAuOTQyYzAuMzc3LDEuNTA5LDEuMTMxLDIuNTQ1LDIuNTQ1LDMuMTEgYzEuMzE5LDAuNDcyLDIuMzU2LDAuNDcyLDMuNjc2LDBjMC41NjUtMC4xODgsMS4xMzItMC42NTksMS4xMzItMC42NTlsLTAuODQ5LTIuMjYzYzAsMC0xLjAzNiwwLjM3OC0xLjYwMywwLjI4MyBjLTAuNTY1LTAuMDk0LTEuMjI2LTAuNjYtMS4yMjYtMS41MDhjMC0xLjYwMywwLTQuOTAyLDAtNC45MDJoMi44MjhWNS43NzFoLTIuODI4VjJIOC4yMDVjMCwwLTAuMDk0LDAuNjYtMC4xODgsMC45NDIgQzcuODI4LDMuNzkxLDcuMjYyLDQuNzMzLDYuNjAzLDUuMzk0QzUuODQ4LDYuMTQ3LDUsNi40Myw1LDYuNDN2Mi4xNjhINi44ODV6Ii8+PC9zdmc+Jyx0djonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSI3IiB5PSIxNiIgd2lkdGg9IjYiIGhlaWdodD0iMSIvPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iLjUiIHk9IjMuNSIgd2lkdGg9IjE5IiBoZWlnaHQ9IjExIi8+PC9zdmc+Jyx0d2l0dGVyOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xOSw0Ljc0IEMxOC4zMzksNS4wMjkgMTcuNjI2LDUuMjI5IDE2Ljg4MSw1LjMyIEMxNy42NDQsNC44NiAxOC4yMjcsNC4xMzkgMTguNTAzLDMuMjggQzE3Ljc5LDMuNyAxNy4wMDEsNC4wMDkgMTYuMTU5LDQuMTcgQzE1LjQ4NSwzLjQ1IDE0LjUyNiwzIDEzLjQ2NCwzIEMxMS40MjMsMyA5Ljc3MSw0LjY2IDkuNzcxLDYuNyBDOS43NzEsNi45OSA5LjgwNCw3LjI2OSA5Ljg2OCw3LjUzOSBDNi43OTUsNy4zOCA0LjA3Niw1LjkxOSAyLjI1NCwzLjY3OSBDMS45MzYsNC4yMTkgMS43NTQsNC44NiAxLjc1NCw1LjUzOSBDMS43NTQsNi44MiAyLjQwNSw3Ljk1IDMuMzk3LDguNjEgQzIuNzksOC41ODkgMi4yMiw4LjQyOSAxLjcyMyw4LjE0OSBMMS43MjMsOC4xODkgQzEuNzIzLDkuOTc4IDIuOTk3LDExLjQ3OCA0LjY4NiwxMS44MiBDNC4zNzYsMTEuODk5IDQuMDQ5LDExLjkzOSAzLjcxMywxMS45MzkgQzMuNDc1LDExLjkzOSAzLjI0NSwxMS45MTkgMy4wMTgsMTEuODggQzMuNDksMTMuMzQ5IDQuODUyLDE0LjQxOSA2LjQ2OSwxNC40NDkgQzUuMjA1LDE1LjQyOSAzLjYxMiwxNi4wMTkgMS44ODIsMTYuMDE5IEMxLjU4MywxNi4wMTkgMS4yOSwxNi4wMDkgMSwxNS45NjkgQzIuNjM1LDE3LjAxOSA0LjU3NiwxNy42MjkgNi42NjIsMTcuNjI5IEMxMy40NTQsMTcuNjI5IDE3LjE3LDEyIDE3LjE3LDcuMTI5IEMxNy4xNyw2Ljk2OSAxNy4xNjYsNi44MDkgMTcuMTU3LDYuNjQ5IEMxNy44NzksNi4xMjkgMTguNTA0LDUuNDc4IDE5LDQuNzQiLz48L3N2Zz4nLHVpa2l0Oic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIHBvaW50cz0iMTQuNCwzLjEgMTEuMyw1LjEgMTUsNy4zIDE1LDEyLjkgMTAsMTUuNyA1LDEyLjkgNSw4LjUgMiw2LjggMiwxNC44IDkuOSwxOS41IDE4LDE0LjggMTgsNS4zIi8+PHBvbHlnb24gcG9pbnRzPSI5LjgsNC4yIDYuNywyLjQgOS44LDAuNCAxMi45LDIuMyIvPjwvc3ZnPicsdW5sb2NrOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgeD0iMy41IiB5PSI4LjUiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMCIvPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgZD0iTTYuNSw4LjUgTDYuNSw0LjkgQzYuNSwzIDguMSwxLjUgMTAsMS41IEMxMS45LDEuNSAxMy41LDMgMTMuNSw0LjkiLz48L3N2Zz4nLHVwbG9hZDonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBwb2ludHM9IjUgOCA5LjUgMy41IDE0IDgiLz48cmVjdCB4PSIzIiB5PSIxNyIgd2lkdGg9IjEzIiBoZWlnaHQ9IjEiLz48bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHgxPSI5LjUiIHkxPSIxNSIgeDI9IjkuNSIgeTI9IjQiLz48L3N2Zz4nLHVzZXI6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iOS45IiBjeT0iNi40IiByPSI0LjQiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNMS41LDE5IEMyLjMsMTQuNSA1LjgsMTEuMiAxMCwxMS4yIEMxNC4yLDExLjIgMTcuNywxNC42IDE4LjUsMTkuMiIvPjwvc3ZnPicsdXNlcnM6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBjeD0iNy43IiBjeT0iOC42IiByPSIzLjUiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNMSwxOC4xIEMxLjcsMTQuNiA0LjQsMTIuMSA3LjYsMTIuMSBDMTAuOSwxMi4xIDEzLjcsMTQuOCAxNC4zLDE4LjMiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNMTEuNCw0IEMxMi44LDIuNCAxNS40LDIuOCAxNi4zLDQuNyBDMTcuMiw2LjYgMTUuNyw4LjkgMTMuNiw4LjkgQzE2LjUsOC45IDE4LjgsMTEuMyAxOS4yLDE0LjEiLz48L3N2Zz4nLCJ2aWRlby1jYW1lcmEiOic8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgcG9pbnRzPSIxNy41IDYuOSAxNy41IDEzLjEgMTMuNSAxMC40IDEzLjUgMTQuNSAyLjUgMTQuNSAyLjUgNS41IDEzLjUgNS41IDEzLjUgOS42IDE3LjUgNi45Ii8+PC9zdmc+Jyx2aW1lbzonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMi4wNjUsNy41OUMxLjg0LDcuMzY3LDEuNjU0LDcuMDgyLDEuNDY4LDYuODM4Yy0wLjMzMi0wLjQyLTAuMTM3LTAuNDExLDAuMjc0LTAuNzcyYzEuMDI2LTAuOTEsMi4wMDQtMS44OTYsMy4xMjctMi42ODggYzEuMDE3LTAuNzEzLDIuMzY1LTEuMTczLDMuMjg2LTAuMDM5YzAuODQ5LDEuMDQ1LDAuODY5LDIuNjI5LDEuMDg0LDMuODkxYzAuMjE1LDEuMzA5LDAuNDIxLDIuNjQ4LDAuODgsMy45MDEgYzAuMTI3LDAuMzUyLDAuMzcsMS4wMTgsMC44MSwxLjA3NGMwLjU2NywwLjA3OCwxLjE0NS0wLjkxNywxLjQwOC0xLjI4OWMwLjY4NC0wLjk4NywxLjYxMS0yLjMxNywxLjQ5NC0zLjU4NyBjLTAuMTE1LTEuMzQ5LTEuNTcyLTEuMDk1LTIuNDgyLTAuNzczYzAuMTQ2LTEuNTE0LDEuNTU1LTMuMjE2LDIuOTEyLTMuNzkyYzEuNDM5LTAuNTk3LDMuNTc5LTAuNTg3LDQuMzAyLDEuMDM2IGMwLjc3MiwxLjc1OSwwLjA3OCwzLjgwMi0wLjc2Myw1LjM5NmMtMC45MTgsMS43MzEtMi4xLDMuMzMzLTMuMzYzLDQuODI5Yy0xLjExNCwxLjMyOS0yLjQzMiwyLjc4Ny00LjA5MywzLjQyMiBjLTEuODk3LDAuNzIzLTMuMDIxLTAuNjg2LTMuNjY3LTIuMzE4Yy0wLjcwNS0xLjc3Ny0xLjA1Ni0zLjc3MS0xLjU2NS01LjYyMUM0Ljg5OCw4LjcyNiw0LjY0NCw3LjgzNiw0LjEzNiw3LjE5MSBDMy40NzMsNi4zNTgsMi43Miw3LjE0MSwyLjA2NSw3LjU5QzEuOTc3LDcuNTAyLDIuMTE1LDcuNTUxLDIuMDY1LDcuNTlMMi4wNjUsNy41OXoiLz48L3N2Zz4nLHdhcm5pbmc6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxNCIgcj0iMSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuMSIgY3g9IjEwIiBjeT0iMTAiIHI9IjkiLz48cGF0aCBkPSJNMTAuOTcsNy43MiBDMTAuODUsOS41NCAxMC41NiwxMS4yOSAxMC41NiwxMS4yOSBDMTAuNTEsMTEuODcgMTAuMjcsMTIgOS45OSwxMiBDOS42OSwxMiA5LjQ5LDExLjg3IDkuNDMsMTEuMjkgQzkuNDMsMTEuMjkgOS4xNiw5LjU0IDkuMDMsNy43MiBDOC45Niw2LjU0IDkuMDMsNiA5LjAzLDYgQzkuMDMsNS40NSA5LjQ2LDUuMDIgOS45OSw1IEMxMC41Myw1LjAxIDEwLjk3LDUuNDQgMTAuOTcsNiBDMTAuOTcsNiAxMS4wNCw2LjU0IDEwLjk3LDcuNzIgTDEwLjk3LDcuNzIgWiIvPjwvc3ZnPicsd2hhdHNhcHA6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE2LjcsMy4zYy0xLjgtMS44LTQuMS0yLjgtNi43LTIuOGMtNS4yLDAtOS40LDQuMi05LjQsOS40YzAsMS43LDAuNCwzLjMsMS4zLDQuN2wtMS4zLDQuOWw1LTEuM2MxLjQsMC44LDIuOSwxLjIsNC41LDEuMiBsMCwwbDAsMGM1LjIsMCw5LjQtNC4yLDkuNC05LjRDMTkuNSw3LjQsMTguNSw1LDE2LjcsMy4zIE0xMC4xLDE3LjdMMTAuMSwxNy43Yy0xLjQsMC0yLjgtMC40LTQtMS4xbC0wLjMtMC4ybC0zLDAuOGwwLjgtMi45IGwtMC4yLTAuM2MtMC44LTEuMi0xLjItMi43LTEuMi00LjJjMC00LjMsMy41LTcuOCw3LjgtNy44YzIuMSwwLDQuMSwwLjgsNS41LDIuM2MxLjUsMS41LDIuMywzLjQsMi4zLDUuNSBDMTcuOSwxNC4yLDE0LjQsMTcuNywxMC4xLDE3LjcgTTE0LjQsMTEuOWMtMC4yLTAuMS0xLjQtMC43LTEuNi0wLjhjLTAuMi0wLjEtMC40LTAuMS0wLjUsMC4xYy0wLjIsMC4yLTAuNiwwLjgtMC44LDAuOSBjLTAuMSwwLjItMC4zLDAuMi0wLjUsMC4xYy0wLjItMC4xLTEtMC40LTEuOS0xLjJjLTAuNy0wLjYtMS4yLTEuNC0xLjMtMS42Yy0wLjEtMC4yLDAtMC40LDAuMS0wLjVDOCw4LjgsOC4xLDguNyw4LjIsOC41IGMwLjEtMC4xLDAuMi0wLjIsMC4yLTAuNGMwLjEtMC4yLDAtMC4zLDAtMC40QzguNCw3LjYsNy45LDYuNSw3LjcsNkM3LjUsNS41LDcuMyw1LjYsNy4yLDUuNmMtMC4xLDAtMC4zLDAtMC40LDAgYy0wLjIsMC0wLjQsMC4xLTAuNiwwLjNjLTAuMiwwLjItMC44LDAuOC0wLjgsMmMwLDEuMiwwLjgsMi4zLDEsMi40YzAuMSwwLjIsMS43LDIuNSw0LDMuNWMwLjYsMC4yLDEsMC40LDEuMywwLjUgYzAuNiwwLjIsMS4xLDAuMiwxLjUsMC4xYzAuNS0wLjEsMS40LTAuNiwxLjYtMS4xYzAuMi0wLjUsMC4yLTEsMC4xLTEuMUMxNC44LDEyLjEsMTQuNiwxMiwxNC40LDExLjkiLz48L3N2Zz4nLHdvcmRwcmVzczonPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAsMC41Yy01LjIsMC05LjUsNC4zLTkuNSw5LjVzNC4zLDkuNSw5LjUsOS41YzUuMiwwLDkuNS00LjMsOS41LTkuNVMxNS4yLDAuNSwxMCwwLjVMMTAsMC41TDEwLDAuNXogTTE1LjYsMy45aC0wLjEgYy0wLjgsMC0xLjQsMC43LTEuNCwxLjVjMCwwLjcsMC40LDEuMywwLjgsMS45YzAuMywwLjYsMC43LDEuMywwLjcsMi4zYzAsMC43LTAuMywxLjUtMC42LDIuN0wxNC4xLDE1bC0zLTguOSBjMC41LDAsMC45LTAuMSwwLjktMC4xQzEyLjUsNiwxMi41LDUuMywxMiw1LjRjMCwwLTEuMywwLjEtMi4yLDAuMUM5LDUuNSw3LjcsNS40LDcuNyw1LjRDNy4yLDUuMyw3LjIsNiw3LjYsNmMwLDAsMC40LDAuMSwwLjksMC4xIGwxLjMsMy41TDgsMTVMNSw2LjFDNS41LDYuMSw1LjksNiw1LjksNkM2LjQsNiw2LjMsNS4zLDUuOSw1LjRjMCwwLTEuMywwLjEtMi4yLDAuMWMtMC4yLDAtMC4zLDAtMC41LDBjMS41LTIuMiw0LTMuNyw2LjktMy43IEMxMi4yLDEuNywxNC4xLDIuNiwxNS42LDMuOUwxNS42LDMuOUwxNS42LDMuOXogTTIuNSw2LjZsMy45LDEwLjhjLTIuNy0xLjMtNC42LTQuMi00LjYtNy40QzEuOCw4LjgsMiw3LjYsMi41LDYuNkwyLjUsNi42TDIuNSw2LjYgeiBNMTAuMiwxMC43bDIuNSw2LjljMCwwLDAsMC4xLDAuMSwwLjFDMTEuOSwxOCwxMSwxOC4yLDEwLDE4LjJjLTAuOCwwLTEuNi0wLjEtMi4zLTAuM0wxMC4yLDEwLjdMMTAuMiwxMC43TDEwLjIsMTAuN3ogTTE0LjIsMTcuMSBsMi41LTcuM2MwLjUtMS4yLDAuNi0yLjEsMC42LTIuOWMwLTAuMywwLTAuNi0wLjEtMC44YzAuNiwxLjIsMSwyLjUsMSw0QzE4LjMsMTMsMTYuNiwxNS43LDE0LjIsMTcuMUwxNC4yLDE3LjFMMTQuMiwxNy4xeiIvPjwvc3ZnPicsd29ybGQ6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMSwxMC41IEwxOSwxMC41Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMi4zNSwxNS41IEwxNy42NSwxNS41Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBkPSJNMi4zNSw1LjUgTDE3LjUyMyw1LjUiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGQ9Ik0xMCwxOS40NiBMOS45OCwxOS40NiBDNy4zMSwxNy4zMyA1LjYxLDE0LjE0MSA1LjYxLDEwLjU4IEM1LjYxLDcuMDIgNy4zMywzLjgzIDEwLDEuNyBDMTAuMDEsMS43IDkuOTksMS43IDEwLDEuNyBMMTAsMS43IEMxMi42NywzLjgzIDE0LjQsNy4wMiAxNC40LDEwLjU4IEMxNC40LDE0LjE0MSAxMi42NywxNy4zMyAxMCwxOS40NiBMMTAsMTkuNDYgTDEwLDE5LjQ2IEwxMCwxOS40NiBaIi8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSIxMCIgY3k9IjEwLjUiIHI9IjkiLz48L3N2Zz4nLHhpbmc6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNCw0LjU2IEM0LjI0LDQuNTYgNC4xMSw0LjYxIDQuMDUsNC43MiBDMy45OCw0LjgzIDMuOTksNC45NyA0LjA3LDUuMTIgTDUuODIsOC4xNiBMNS44Miw4LjE3IEwzLjA2LDEzLjA0IEMyLjk5LDEzLjE4IDIuOTksMTMuMzMgMy4wNiwxMy40NCBDMy4xMiwxMy41NSAzLjI0LDEzLjYyIDMuNCwxMy42MiBMNiwxMy42MiBDNi4zOSwxMy42MiA2LjU3LDEzLjM2IDYuNzEsMTMuMTIgQzYuNzEsMTMuMTIgOS40MSw4LjM1IDkuNTEsOC4xNiBDOS40OSw4LjE0IDcuNzIsNS4wNCA3LjcyLDUuMDQgQzcuNTgsNC44MSA3LjM5LDQuNTYgNi45OSw0LjU2IEw0LjQsNC41NiBMNC40LDQuNTYgWiIvPjxwYXRoIGQ9Ik0xNS4zLDEgQzE0LjkxLDEgMTQuNzQsMS4yNSAxNC42LDEuNSBDMTQuNiwxLjUgOS4wMSwxMS40MiA4LjgyLDExLjc0IEM4LjgzLDExLjc2IDEyLjUxLDE4LjUxIDEyLjUxLDE4LjUxIEMxMi42NCwxOC43NCAxMi44NCwxOSAxMy4yMywxOSBMMTUuODIsMTkgQzE1Ljk4LDE5IDE2LjEsMTguOTQgMTYuMTYsMTguODMgQzE2LjIzLDE4LjcyIDE2LjIzLDE4LjU3IDE2LjE2LDE4LjQzIEwxMi41LDExLjc0IEwxMi41LDExLjcyIEwxOC4yNSwxLjU2IEMxOC4zMiwxLjQyIDE4LjMyLDEuMjcgMTguMjUsMS4xNiBDMTguMjEsMS4wNiAxOC4wOCwxIDE3LjkzLDEgTDE1LjMsMSBMMTUuMywxIFoiLz48L3N2Zz4nLHllbHA6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE3LjE3NSwxNC45NzFjLTAuMTEyLDAuNzctMS42ODYsMi43NjctMi40MDYsMy4wNTRjLTAuMjQ2LDAuMS0wLjQ4NywwLjA3Ni0wLjY3NS0wLjA2OVx0Yy0wLjEyMi0wLjA5Ni0yLjQ0Ni0zLjg1OS0yLjQ0Ni0zLjg1OWMtMC4xOTQtMC4yOTMtMC4xNTctMC42ODIsMC4wODMtMC45NzhjMC4yMzQtMC4yODQsMC41ODEtMC4zOTMsMC44ODEtMC4yNzZcdGMwLjAxNiwwLjAxLDQuMjEsMS4zOTQsNC4zMzIsMS40ODJjMC4xNzgsMC4xNDgsMC4yNjMsMC4zNzksMC4yMjUsMC42NDZMMTcuMTc1LDE0Ljk3MUwxNy4xNzUsMTQuOTcxeiBNMTEuNDY0LDEwLjc4OVx0Yy0wLjIwMy0wLjMwNy0wLjE5OS0wLjY2NiwwLjAwOS0wLjkxNmMwLDAsMi42MjUtMy41NzQsMi43NDUtMy42NTdjMC4yMDMtMC4xMzUsMC40NTItMC4xNDEsMC42OS0wLjAyNVx0YzAuNjkxLDAuMzM1LDIuMDg1LDIuNDA1LDIuMTY3LDMuMTk5djAuMDI3YzAuMDI0LDAuMjcxLTAuMDgyLDAuNDkxLTAuMjczLDAuNjIzYy0wLjEzMiwwLjA4My00LjQzLDEuMTU1LTQuNDMsMS4xNTVcdGMtMC4zMjIsMC4wOTYtMC42OC0wLjA2LTAuODgyLTAuMzgxTDExLjQ2NCwxMC43ODl6IE05LjQ3NSw5LjU2M0M5LjMyLDkuNjA5LDguODQ4LDkuNzU3LDguMjY5LDguODE3YzAsMC0zLjkxNi02LjE2LTQuMDA3LTYuMzUxXHRjLTAuMDU3LTAuMjEyLDAuMDExLTAuNDU1LDAuMjAyLTAuNjVDNS4wNDcsMS4yMTEsOC4yMSwwLjMyNyw5LjAzNywwLjUyOWMwLjI3LDAuMDY5LDAuNDU3LDAuMjM4LDAuNTIyLDAuNDc5XHRjMC4wNDcsMC4yNjYsMC40MzMsNS45ODIsMC40ODgsNy4yNjRDMTAuMDk4LDkuMzY4LDkuNjI5LDkuNTE3LDkuNDc1LDkuNTYzeiBNOS45MjcsMTkuMDY2Yy0wLjA4MywwLjIyNS0wLjI3MywwLjM3My0wLjU0LDAuNDIxXHRjLTAuNzYyLDAuMTMtMy4xNS0wLjc1MS0zLjY0Ny0xLjM0MmMtMC4wOTYtMC4xMzEtMC4xNTUtMC4yNjItMC4xNjctMC4zOTRjLTAuMDExLTAuMDk1LDAtMC4xODksMC4wMzYtMC4yNzJcdGMwLjA2MS0wLjE1NSwyLjkxNy0zLjUzOCwyLjkxNy0zLjUzOGMwLjIxNC0wLjI3MiwwLjU5NS0wLjM1NSwwLjk1Mi0wLjIxM2MwLjM0NSwwLjEzLDAuNTYsMC40MjgsMC41MzYsMC43NDlcdEMxMC4wMTQsMTQuNDc5LDkuOTc3LDE4LjkyMyw5LjkyNywxOS4wNjZ6IE0zLjQ5NSwxMy45MTJjLTAuMjM1LTAuMDA5LTAuNDQ0LTAuMTQ4LTAuNTY4LTAuMzgyYy0wLjA4OS0wLjE3LTAuMTUxLTAuNDUzLTAuMTktMC43OTRcdEMyLjYzLDExLjcwMSwyLjc2MSwxMC4xNDQsMy4wNyw5LjY0OGMwLjE0NS0wLjIyNiwwLjM1Ny0wLjM0NSwwLjU5Mi0wLjMzNmMwLjE1NCwwLDQuMjU1LDEuNjY3LDQuMjU1LDEuNjY3XHRjMC4zMjEsMC4xMTgsMC41MjEsMC40NTMsMC41LDAuODMzYy0wLjAyMywwLjM3LTAuMjM2LDAuNjU1LTAuNTUxLDAuNzM4TDMuNDk1LDEzLjkxMnoiLz48L3N2Zz4nLHlvdXR1YmU6Jzxzdmcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LDQuMWMxLDAuMSwyLjMsMCwzLDAuOGMwLjgsMC44LDAuOSwyLjEsMC45LDMuMUMxOSw5LjIsMTksMTAuOSwxOSwxMmMtMC4xLDEuMSwwLDIuNC0wLjUsMy40Yy0wLjUsMS4xLTEuNCwxLjUtMi41LDEuNiBjLTEuMiwwLjEtOC42LDAuMS0xMSwwYy0xLjEtMC4xLTIuNC0wLjEtMy4yLTFjLTAuNy0wLjgtMC43LTItMC44LTNDMSwxMS44LDEsMTAuMSwxLDguOWMwLTEuMSwwLTIuNCwwLjUtMy40QzIsNC41LDMsNC4zLDQuMSw0LjIgQzUuMyw0LjEsMTIuNiw0LDE1LDQuMXogTTgsNy41djZsNS41LTNMOCw3LjV6Ii8+PC9zdmc+J30pfXJldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuVUlraXQmJndpbmRvdy5VSWtpdC51c2UoaSksaX0pOw==",
  78. {"status":false}
  79. ],
  80. [
  81. "uikit_3.2.0",
  82. "ZnVuY3Rpb24gaW5zdGFsbFVJS2l0KCkKewogICAgdmFyIGNzcyA9IE1PRC5tb2R1bGUoInVpa2l0Lm1pbi5jc3NfMy4yLjAiKS5jb2RlNjQ7CiAgICB2YXIganMgPSBNT0QubW9kdWxlKCJ1aWtpdC5taW4uanNfMy4yLjAiKS5jb2RlNjQ7CiAgICB2YXIgaWNvbnNKUyA9IE1PRC5tb2R1bGUoInVpa2l0LWljb25zLm1pbi5qc18zLjIuMCIpLmNvZGU2NDsKCiAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CiAgICBzdHlsZS5pbm5lckhUTUwgPSBtdXJvbS5hdG9iKGNzcyk7CiAgICBsb2FkU2NyaXB0KG11cm9tLmF0b2IoanMpKTsKICAgIGxvYWRTY3JpcHQobXVyb20uYXRvYihpY29uc0pTKSk7Cn0KCmluc3RhbGxVSUtpdCgpOw==",
  83. {"status":true}
  84. ],
  85. [
  86. "среда_1.1.0",
  87. "ZnVuY3Rpb24g0KHRgNC10LTQsCgpCnsKICAgIHRoaXMu0YPRgdGC0LDQvdC+0LLQuNGC0YzQntCx0LvQsNGB0YLQuCgpOwogICAgdGhpcy7Rg9GB0YLQsNC90L7QstC40YLRjNCg0LXQtNCw0LrRgtC+0YAoKTsKICAgIHRoaXMu0YPRgdGC0LDQvdC+0LLQuNGC0YzQnNC+0LTRg9C70LgoKTsKICAgIHRoaXMu0YHQu9C10LTQuNGC0YzQl9Cw0JLRi9Cx0L7RgNC+0LwoKTsKICAgIHRoaXMu0L3QsNGB0YLRgNC+0LjRgtGM0KHQvtGF0YDQsNC90LXQvdC40LXQodC60LDRh9C40LLQsNC90LjQtSgpOwp9CgrQodGA0LXQtNCwLnByb3RvdHlwZS7Rg9GB0YLQsNC90L7QstC40YLRjNCe0LHQu9Cw0YHRgtC4ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgaHRtbCA9CmAKPGRpdiBpZD0i0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qu9C10LLQsNGPIj4KICAgIDxkaXYgaWQ9ItGA0LXQtNCw0LrRgtC+0YAiIGhpZGRlbj48L2Rpdj4KPC9kaXY+CjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwIj7QktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjDwvZGl2PgoKPGRpdiBpZD0i0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFIj4KPC9kaXY+Cgo8ZGl2IGlkPSLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdGG0LXQvdGC0YDQsNC70YzQvdCw0Y8t0L3QuNC3Ij4KICAgIDxhIGlkPSLRgdGA0LXQtNCwLdGB0L7RhdGA0LDQvdC40YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImRhdGFiYXNlIiB1ay10b29sdGlwPSJ0aXRsZTog0KHQvtGF0YDQsNC90LjRgtGMINC40LfQvNC10L3QtdC90LjRjyDQsiDRjdGC0L7QvCDQsdGA0LDRg9C30LXRgNC1OyBkZWxheTogNTAwIj48L2E+CiAgICA8YSBpZD0i0YHRgNC10LTQsC3RgdC60LDRh9Cw0YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImRvd25sb2FkIiB1ay10b29sdGlwPSJ0aXRsZTog0KHQutCw0YfQsNGC0Ywg0YTQsNC50Lsg0YEg0YHQvtGF0YDQsNC90ZHQvdC90YvQvNC4INC40LfQvNC10L3QtdC90LjRj9C80Lg7IGRlbGF5OiA1MDAiIj48L2E+CiAgICA8YSBpZD0i0YHRgNC10LTQsC3QtNC+0LHQsNCy0LjRgtGMIiBjbGFzcz0idWstaWNvbi1idXR0b24gdWstbWFyZ2luLWxhcmdlLXRvcCIgdWstaWNvbj0icGx1cyIgdWstdG9vbHRpcD0idGl0bGU6INCU0L7QsdCw0LLQuNGC0Ywg0L3QvtCy0YvQuSDQvNC+0LTRg9C70Yw7IGRlbGF5OiA1MDAiIj48L2E+CiAgICA8YSBpZD0i0YHRgNC10LTQsC3Rg9C00LDQu9C40YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249Im1pbnVzIiB1ay10b29sdGlwPSJ0aXRsZTog0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INC80L7QtNGD0LvRjDsgZGVsYXk6IDUwMCIiPjwvYT4KPC9kaXY+Cgo8ZGl2IGlkPSLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdC/0YDQsNCy0LDRjy3QstC10YDRhSI+CiAgICA8aWZyYW1lIGlkPSLQstGB0YLRgNC+0LnQutCwIj4KICAgICAgICA8cD7QntCo0JjQkdCa0JAg0JLQsNGIINCy0LXQsS3QsdGA0LDRg9C30LXRgCDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiBpZnJhbWU8L3A+CiAgICAgICAgPHA+RVJST1IgWW91ciB3ZWIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGlmcmFtZXM8L3A+CiAgICA8L2lmcmFtZT4KPC9kaXY+Cgo8ZGl2IGlkPSLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdC/0YDQsNCy0LDRjy3QvdC40LciPgo8L2Rpdj4KYDsKICAgIHZhciBjc3MgPQpgCiPRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdC70LXQstCw0Y8KewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiBjYWxjKDUwJSAtIDJlbSk7Cn0KCiPRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdC70LXQstCw0Y8t0LfQsNCz0LvRg9GI0LrQsAp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDI1JTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjUlKSB0cmFuc2xhdGVZKC01MCUpOwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cn0KCiPRgNC10LTQsNC60YLQvtGACnsKICAgIGhlaWdodDogMTAwJTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0YbQtdC90YLRgNCw0LvRjNC90LDRjy3QstC10YDRhQp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBoZWlnaHQ6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHdpZHRoOiA0ZW07CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTJlbSk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkOwogICAgcGFkZGluZy10b3A6IDFlbTsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0YbQtdC90YLRgNCw0LvRjNC90LDRjy3QvdC40LcKewogICAgcG9zaXRpb246IGZpeGVkOwogICAgYm90dG9tOiAwOwogICAgaGVpZ2h0OiA1MCU7CiAgICBsZWZ0OiA1MCU7CiAgICB3aWR0aDogNGVtOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yZW0pOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RkZDsKICAgIHBhZGRpbmctdG9wOiAxZW07Cn0KCiPRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdC/0YDQsNCy0LDRjy3QstC10YDRhQp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBoZWlnaHQ6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IGNhbGMoNTAlIC0gMmVtIC0gMXB4KTsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdC90LjQtwp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBib3R0b206IDA7CiAgICBoZWlnaHQ6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IGNhbGMoNTAlIC0gMmVtIC0gMXB4KTsKfQoKI9Cy0YHRgtGA0L7QudC60LAKewogICAgYm9yZGVyOiAwIG5vbmU7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0gLSAxcHgpOwogICAgaGVpZ2h0OiA1MCU7CiAgICBwb3NpdGlvbjogZml4ZWQ7Cn0KYDsKCiAgICB2YXIg0Y3QutGA0LDQvSA9INGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvSgi0YHRgNC10LTQsCIpOwogICAg0Y3QutGA0LDQvS5pbm5lckhUTUwgPSBodG1sOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCjRjdC60YDQsNC9KTsKICAgIHZhciDQstC40LQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwogICAg0LLQuNC0LmlubmVySFRNTCA9IGNzczsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo0LLQuNC0KTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGD0YHRgtCw0L3QvtCy0LjRgtGM0KDQtdC00LDQutGC0L7RgCA9IGZ1bmN0aW9uKCkKewogICAg0LzRg9GA0L7QvC7Qt9Cw0LPRgNGD0LfQuNGC0YxBQ0UoKTsKICAgINC80YPRgNC+0Lwu0LfQsNCz0YDRg9C30LjRgtGM0KDQtdC20LjQvEFDRUpTKCk7CiAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAgPSB3aW5kb3cuYWNlLmVkaXQoItGA0LXQtNCw0LrRgtC+0YAiKTsKICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgC5zZXNzaW9uLnNldE1vZGUoImFjZS9tb2RlL2phdmFzY3JpcHQiKTsKICAgIAogICAgdGhpcy7RgNC10LTQsNC60YLQvtGAID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGA0LXQtNCw0LrRgtC+0YAiKTsKICAgIHRoaXMu0LfQsNCz0LvRg9GI0LrQsNCg0LXQtNCw0LrRgtC+0YDQsCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdC70LXQstCw0Y8t0LfQsNCz0LvRg9GI0LrQsCIpOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YHQtNC10LvQsNGC0YzQoNC10LTQsNC60YLQvtGA0JLQuNC00LjQvNGL0LwgPSBmdW5jdGlvbijRgdC+0YHRgtC+0Y/QvdC40LUpCnsKICAgIHRoaXMu0YDQtdC00LDQutGC0L7RgC5oaWRkZW4gPSAh0YHQvtGB0YLQvtGP0L3QuNC1OwogICAgdGhpcy7Qt9Cw0LPQu9GD0YjQutCw0KDQtdC00LDQutGC0L7RgNCwLmhpZGRlbiA9ICF0aGlzLtGA0LXQtNCw0LrRgtC+0YAuaGlkZGVuOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0LTQvtCx0LDQstC40YLRjNCd0L7QstGL0LnQnNC+0LTRg9C70YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC+0LzQtdGAID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcigxMDAwKSk7CiAgICB2YXIg0LjQvNGPID0gItC80L7QtNGD0LvRjC0iICsg0L3QvtC80LXRgDsKICAgINCc0J7QlC7QtNC+0LHQsNCy0LjRgtGMKNC40LzRjywgIiIpOwogICAgCiAgICB0aGlzLtGB0L/QuNGB0L7Qui7QvtCx0L3QvtCy0LjRgtGMKCk7CiAgICB2YXIg0L/QvtC30LjRhtC40Y8gPSDQnNCe0JQu0LzQvtC00YPQu9C4Lmxlbmd0aCAtIDE7CiAgICB0aGlzLtGB0L/QuNGB0L7Qui7QstGL0LHRgNCw0YLRjCjQv9C+0LfQuNGG0LjRjyk7Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7Qv9C+0LTRgtCy0LXRgNC00LjRgtGM0KPQtNCw0LvQtdC90LjQtdCc0L7QtNGD0LvRjyA9IGZ1bmN0aW9uKNC+0YLQutC70LjQuikKewogICAgdmFyINC90L7QvNC10YAgPSB0aGlzLtGB0L/QuNGB0L7Qui7QstGL0LHRgNCw0L3QvdGL0LnQndC+0LzQtdGAOwogICAgaWYgKNC90L7QvNC10YApCiAgICB7CiAgICAgICAgdzJjb25maXJtKHsKICAgICAgICAgICAgdGl0bGU6ICLQn9C+0LTRgtCy0LXRgNC20LTQtdC90LjQtSIsCiAgICAgICAgICAgIG1zZzogItCj0LTQsNC70LjRgtGMINCy0YvQsdGA0LDQvdC90YvQuSDQvNC+0LTRg9C70Yw/IiwKICAgICAgICAgICAgeWVzX3RleHQ6ICLQo9C00LDQu9C40YLRjCIsCiAgICAgICAgICAgIG5vX3RleHQ6ICLQntGC0LzQtdC90LAiLAogICAgICAgICAgICB5ZXNfY2FsbEJhY2s6INC+0YLQutC70LjQuiwKICAgICAgICB9KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB3MmFsZXJ0KCLQktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjCIsICLQn9C+0Y/RgdC90LXQvdC40LUiKTsKICAgIH0KfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGD0LTQsNC70LjRgtGM0JzQvtC00YPQu9GMID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICDQnNCe0JQu0YPQtNCw0LvQuNGC0Ywo0L3QvtC80LXRgCk7CiAgICB0aGlzLtGB0L/QuNGB0L7Qui7QvtCx0L3QvtCy0LjRgtGMKCk7CiAgICB0aGlzLtGB0L/QuNGB0L7Qui7QstGL0LHRgNCw0YLRjCjQvdC+0LzQtdGAIC0gMSk7Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7Rg9GB0YLQsNC90L7QstC40YLRjNCc0L7QtNGD0LvQuCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC+0LHQu9Cw0YHRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdC90LjQtyIpOwogICAgdGhpcy7RgdC/0LjRgdC+0LogPSBuZXcg0KHQv9C40YHQvtC60JzQvtC00YPQu9C10Lko0L7QsdC70LDRgdGC0YwpOwogICAgCiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAKICAgIHRoaXMu0LTQvtCx0LDQstC40YLRjCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdC00L7QsdCw0LLQuNGC0YwiKTsKICAgIHRoaXMu0LTQvtCx0LDQstC40YLRjC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgc2VsZi7QtNC+0LHQsNCy0LjRgtGM0J3QvtCy0YvQudCc0L7QtNGD0LvRjCgpOwogICAgfTsKICAgIAogICAgdGhpcy7Rg9C00LDQu9C40YLRjCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdGD0LTQsNC70LjRgtGMIik7CiAgICB0aGlzLtGD0LTQsNC70LjRgtGMLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtC/0L7QtNGC0LLQtdGA0LTQuNGC0YzQo9C00LDQu9C10L3QuNC10JzQvtC00YPQu9GPKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWxmLtGD0LTQsNC70LjRgtGM0JzQvtC00YPQu9GMKCk7CiAgICAgICAgfSk7CiAgICB9Owp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0L7RgtC+0LHRgNCw0LfQuNGC0YzQmtC+0LTQktGL0LHRgNCw0L3QvdC+0LPQvtCc0L7QtNGD0LvRjyA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC90L7QvNC10YAgPSB0aGlzLtGB0L/QuNGB0L7Qui7QstGL0LHRgNCw0L3QvdGL0LnQndC+0LzQtdGAOwogICAgdGhpcy7RgdC00LXQu9Cw0YLRjNCg0LXQtNCw0LrRgtC+0YDQktC40LTQuNC80YvQvCjQvdC+0LzQtdGAICE9IG51bGwpOwogICAgaWYgKNC90L7QvNC10YApCiAgICB7CiAgICAgICAgdmFyINC60L7QtDY0ID0g0JzQntCULtC80L7QtNGD0LvQuFvQvdC+0LzQtdGAXS5jb2RlNjQ7CiAgICAgICAg0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uc2V0VmFsdWUo0LzRg9GA0L7QvC5hdG9iKNC60L7QtDY0KSk7CiAgICB9Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7RgdC70LXQtNC40YLRjNCX0LDQktGL0LHQvtGA0L7QvCA9IGZ1bmN0aW9uKCkKewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAg0LrQvtCz0LTQsCh0aGlzLtGB0L/QuNGB0L7Qui7QuNC30LzQtdC90LjQu9C40JLRi9Cx0L7RgCwgZnVuY3Rpb24oKSB7CiAgICAgICAgc2VsZi7QvtGC0L7QsdGA0LDQt9C40YLRjNCa0L7QtNCS0YvQsdGA0LDQvdC90L7Qs9C+0JzQvtC00YPQu9GPKCk7CiAgICB9KTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGB0L7RhdGA0LDQvdC40YLRjNCS0YvQsdGA0LDQvdC90YvQudCc0L7QtNGD0LvRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC90L7QvNC10YAgPSB0aGlzLtGB0L/QuNGB0L7Qui7QstGL0LHRgNCw0L3QvdGL0LnQndC+0LzQtdGAOwogICAgaWYgKNC90L7QvNC10YApCiAgICB7CiAgICAgICAgdmFyINC60L7QtCA9INC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgC5zZXNzaW9uLmdldFZhbHVlKCk7CiAgICAgICAg0JzQntCULtC80L7QtNGD0LvQuFvQvdC+0LzQtdGAXS5jb2RlNjQgPSDQvNGD0YDQvtC8LmJ0b2Eo0LrQvtC0KTsKICAgIH0KfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGB0L7RhdGA0LDQvdC40YLRjNCS0YHRkSA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC80L7QtNGD0LvQuCA9INCc0J7QlC7RgdC10YDQuNCw0LvQuNC30L7QstCw0L3QvdGL0LXQnNC+0LTRg9C70Lg7CiAgICBsb2NhbGZvcmFnZS5zZXRJdGVtKCJtb2R1bGVzIiwg0LzQvtC00YPQu9C4LCBmdW5jdGlvbijQvtGI0LjQsdC60LAsINC30L3QsNGH0LXQvdC40LUpIHsKICAgICAgICBpZiAo0L7RiNC40LHQutCwKQogICAgICAgIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcigi0J3QtSDRg9C00LDQu9C+0YHRjCDRgdC+0YXRgNCw0L3QuNGC0Ywg0LzQvtC00YPQu9C4OiAnIiArINC+0YjQuNCx0LrQsCArICInIik7CiAgICAgICAgfQogICAgfSk7Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7RgdC60LDRh9Cw0YLRjNCk0LDQudC7ID0gZnVuY3Rpb24oKQp7CiAgICAvLyBIb3cgdG8gY3JlYXRlIGEgZmlsZSBpbiBtZW1vcnkgZm9yIHVzZXIgdG8gZG93bmxvYWQsIGJ1dCBub3QgdGhyb3VnaCBzZXJ2ZXI/CiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTgxOTczNDEKICAgIHZhciDRgdC+0LTQtdGA0LbQuNC80L7QtSA9INC80YPRgNC+0Lwu0YTQsNC50Lsu0L3QsNGH0LDQu9C+OwogICAgdmFyINC80L7QtNGD0LvQuCA9INCc0J7QlC7RgdC10YDQuNCw0LvQuNC30L7QstCw0L3QvdGL0LXQnNC+0LTRg9C70Lg7CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINC80L7QtNGD0LvQuCkKICAgIHsKICAgICAgICB2YXIg0LwgPSDQvNC+0LTRg9C70Lhb0L3QvtC80LXRgF07CiAgICAgICAg0YHQvtC00LXRgNC20LjQvNC+0LUgKz0KYAoKWwoiYCArINC8WzBdICsgYCIsCiJgICsg0LxbMV0gKyBgIiwKYAorCkpTT04uc3RyaW5naWZ5KNC8WzJdKQorCmAKXSwKYDsKICAgIH0KICAgINGB0L7QtNC10YDQttC40LzQvtC1ICs9INC80YPRgNC+0Lwu0YTQsNC50Lsu0LrQvtC90LXRhjsKICAgINGB0L7QtNC10YDQttC40LzQvtC1ID0g0LzRg9GA0L7QvC5idG9hKNGB0L7QtNC10YDQttC40LzQvtC1KTsKCiAgICB2YXIg0YHRgdGL0LvRjCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgINGB0YHRi9C70Ywuc2V0QXR0cmlidXRlKCJocmVmIiwgImRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCIgKyDRgdC+0LTQtdGA0LbQuNC80L7QtSk7CiAgICB2YXIg0LjQvNGPID0g0LjQvNGP0KTQsNC50LvQsCgpOwogICAg0YHRgdGL0LvRjC5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIiwg0LjQvNGPKTsKICAgINGB0YHRi9C70Ywuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0YHRgdGL0LvRjCk7CiAgICDRgdGB0YvQu9GMLmNsaWNrKCk7CiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKNGB0YHRi9C70YwpOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0L3QsNGB0YLRgNC+0LjRgtGM0KHQvtGF0YDQsNC90LXQvdC40LXQodC60LDRh9C40LLQsNC90LjQtSA9IGZ1bmN0aW9uKCkKewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgCiAgICB0aGlzLtGB0L7RhdGA0LDQvdC40YLRjCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdGB0L7RhdGA0LDQvdC40YLRjCIpOwogICAgdGhpcy7RgdC+0YXRgNCw0L3QuNGC0Ywub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHNlbGYu0YHQvtGF0YDQsNC90LjRgtGM0JLRi9Cx0YDQsNC90L3Ri9C50JzQvtC00YPQu9GMKCk7CiAgICAgICAgc2VsZi7RgdC+0YXRgNCw0L3QuNGC0YzQktGB0ZEoKTsKICAgIH07CiAgICAKICAgIHRoaXMu0YHQutCw0YfQsNGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3RgdC60LDRh9Cw0YLRjCIpOwogICAgdGhpcy7RgdC60LDRh9Cw0YLRjC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgc2VsZi7RgdC60LDRh9Cw0YLRjNCk0LDQudC7KCk7CiAgICB9Owp9OwoKLy8g0KPRgdGC0LDQvdC+0LLQutCwCi8vIEluc3RhbGxhdGlvbgppZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiPzAiKQp7CiAgICBuZXcg0KHRgNC10LTQsCgpOwp9",
  88. {"status":true}
  89. ],
  90. [
  91. "муром.редактор.шрифт-22",
  92. "ZnVuY3Rpb24g0LfQsNC00LDRgtGM0KDQsNC30LzQtdGA0KjRgNC40YTRgtCw0KDQtdC00LDQutGC0L7RgNGDKCkKewogICAgaWYgKNC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCkKICAgIHsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2V0Rm9udFNpemUoIjIycHgiKTsKICAgIH0KfQoK0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC/0YPRgdC6LCDQt9Cw0LTQsNGC0YzQoNCw0LfQvNC10YDQqNGA0LjRhNGC0LDQoNC10LTQsNC60YLQvtGA0YMpOw==",
  93. {"status":true}
  94. ],
  95. [
  96. "three.min.js",
  97. "Ly8gcjExMAovLyB0aHJlZWpzLm9yZy9saWNlbnNlCihmdW5jdGlvbihrLEFhKXsib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2R1bGU/QWEoZXhwb3J0cyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLEFhKTooaz1rfHxzZWxmLEFhKGsuVEhSRUU9e30pKX0pKHRoaXMsZnVuY3Rpb24oayl7ZnVuY3Rpb24gQWEoKXt9ZnVuY3Rpb24gQihhLGIpe3RoaXMueD1hfHwwO3RoaXMueT1ifHwwfWZ1bmN0aW9uIHdhKGEsYixjLGQpe3RoaXMuX3g9YXx8MDt0aGlzLl95PWJ8fDA7dGhpcy5fej1jfHwwO3RoaXMuX3c9dm9pZCAwIT09ZD9kOjF9ZnVuY3Rpb24gbihhLGIsYyl7dGhpcy54PWF8fDA7dGhpcy55PWJ8fDA7dGhpcy56PWN8fDB9ZnVuY3Rpb24gWigpe3RoaXMuZWxlbWVudHM9WzEsMCwwLDAsMSwwLDAsMCwxXTswPGFyZ3VtZW50cy5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9CmZ1bmN0aW9uIFkoYSxiLGMsZCxlLGYsZyxoLGwsbSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6U2krK30pO3RoaXMudXVpZD1QLmdlbmVyYXRlVVVJRCgpO3RoaXMubmFtZT0iIjt0aGlzLmltYWdlPXZvaWQgMCE9PWE/YTpZLkRFRkFVTFRfSU1BR0U7dGhpcy5taXBtYXBzPVtdO3RoaXMubWFwcGluZz12b2lkIDAhPT1iP2I6WS5ERUZBVUxUX01BUFBJTkc7dGhpcy53cmFwUz12b2lkIDAhPT1jP2M6MTAwMTt0aGlzLndyYXBUPXZvaWQgMCE9PWQ/ZDoxMDAxO3RoaXMubWFnRmlsdGVyPXZvaWQgMCE9PWU/ZToxMDA2O3RoaXMubWluRmlsdGVyPXZvaWQgMCE9PWY/ZjoxMDA4O3RoaXMuYW5pc290cm9weT12b2lkIDAhPT1sP2w6MTt0aGlzLmZvcm1hdD12b2lkIDAhPT1nP2c6MTAyMzt0aGlzLnR5cGU9dm9pZCAwIT09aD9oOjEwMDk7dGhpcy5vZmZzZXQ9bmV3IEIoMCwwKTt0aGlzLnJlcGVhdD1uZXcgQigxLDEpO3RoaXMuY2VudGVyPW5ldyBCKDAsMCk7dGhpcy5yb3RhdGlvbj0KMDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITA7dGhpcy5tYXRyaXg9bmV3IFo7dGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITA7dGhpcy5wcmVtdWx0aXBseUFscGhhPSExO3RoaXMuZmxpcFk9ITA7dGhpcy51bnBhY2tBbGlnbm1lbnQ9NDt0aGlzLmVuY29kaW5nPXZvaWQgMCE9PW0/bTozRTM7dGhpcy52ZXJzaW9uPTA7dGhpcy5vblVwZGF0ZT1udWxsfWZ1bmN0aW9uIGRhKGEsYixjLGQpe3RoaXMueD1hfHwwO3RoaXMueT1ifHwwO3RoaXMuej1jfHwwO3RoaXMudz12b2lkIDAhPT1kP2Q6MX1mdW5jdGlvbiBCYShhLGIsYyl7dGhpcy53aWR0aD1hO3RoaXMuaGVpZ2h0PWI7dGhpcy5zY2lzc29yPW5ldyBkYSgwLDAsYSxiKTt0aGlzLnNjaXNzb3JUZXN0PSExO3RoaXMudmlld3BvcnQ9bmV3IGRhKDAsMCxhLGIpO2M9Y3x8e307dGhpcy50ZXh0dXJlPW5ldyBZKHZvaWQgMCx2b2lkIDAsYy53cmFwUyxjLndyYXBULGMubWFnRmlsdGVyLGMubWluRmlsdGVyLGMuZm9ybWF0LGMudHlwZSxjLmFuaXNvdHJvcHksCmMuZW5jb2RpbmcpO3RoaXMudGV4dHVyZS5pbWFnZT17fTt0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9YTt0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWI7dGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1jLmdlbmVyYXRlTWlwbWFwcz9jLmdlbmVyYXRlTWlwbWFwczohMTt0aGlzLnRleHR1cmUubWluRmlsdGVyPXZvaWQgMCE9PWMubWluRmlsdGVyP2MubWluRmlsdGVyOjEwMDY7dGhpcy5kZXB0aEJ1ZmZlcj12b2lkIDAhPT1jLmRlcHRoQnVmZmVyP2MuZGVwdGhCdWZmZXI6ITA7dGhpcy5zdGVuY2lsQnVmZmVyPXZvaWQgMCE9PWMuc3RlbmNpbEJ1ZmZlcj9jLnN0ZW5jaWxCdWZmZXI6ITA7dGhpcy5kZXB0aFRleHR1cmU9dm9pZCAwIT09Yy5kZXB0aFRleHR1cmU/Yy5kZXB0aFRleHR1cmU6bnVsbH1mdW5jdGlvbiBTZihhLGIsYyl7QmEuY2FsbCh0aGlzLGEsYixjKTt0aGlzLnNhbXBsZXM9NH1mdW5jdGlvbiBRKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLAoxLDAsMCwwLDAsMSwwLDAsMCwwLDFdOzA8YXJndW1lbnRzLmxlbmd0aCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1mdW5jdGlvbiBQYihhLGIsYyxkKXt0aGlzLl94PWF8fDA7dGhpcy5feT1ifHwwO3RoaXMuX3o9Y3x8MDt0aGlzLl9vcmRlcj1kfHxQYi5EZWZhdWx0T3JkZXJ9ZnVuY3Rpb24gVGYoKXt0aGlzLm1hc2s9MX1mdW5jdGlvbiBFKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6VGkrK30pO3RoaXMudXVpZD1QLmdlbmVyYXRlVVVJRCgpO3RoaXMubmFtZT0iIjt0aGlzLnR5cGU9Ik9iamVjdDNEIjt0aGlzLnBhcmVudD1udWxsO3RoaXMuY2hpbGRyZW49W107dGhpcy51cD1FLkRlZmF1bHRVcC5jbG9uZSgpO3ZhciBhPW5ldyBuLGI9bmV3IFBiLGM9bmV3IHdhLGQ9bmV3IG4oMSwxLDEpO2IuX29uQ2hhbmdlKGZ1bmN0aW9uKCl7Yy5zZXRGcm9tRXVsZXIoYiwKITEpfSk7Yy5fb25DaGFuZ2UoZnVuY3Rpb24oKXtiLnNldEZyb21RdWF0ZXJuaW9uKGMsdm9pZCAwLCExKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3Bvc2l0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTphfSxyb3RhdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6Yn0scXVhdGVybmlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6Y30sc2NhbGU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmR9LG1vZGVsVmlld01hdHJpeDp7dmFsdWU6bmV3IFF9LG5vcm1hbE1hdHJpeDp7dmFsdWU6bmV3IFp9fSk7dGhpcy5tYXRyaXg9bmV3IFE7dGhpcy5tYXRyaXhXb3JsZD1uZXcgUTt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9RS5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZTt0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITE7dGhpcy5sYXllcnM9bmV3IFRmO3RoaXMudmlzaWJsZT0hMDsKdGhpcy5yZWNlaXZlU2hhZG93PXRoaXMuY2FzdFNoYWRvdz0hMTt0aGlzLmZydXN0dW1DdWxsZWQ9ITA7dGhpcy5yZW5kZXJPcmRlcj0wO3RoaXMudXNlckRhdGE9e319ZnVuY3Rpb24gdmQoKXtFLmNhbGwodGhpcyk7dGhpcy50eXBlPSJTY2VuZSI7dGhpcy5vdmVycmlkZU1hdGVyaWFsPXRoaXMuZm9nPXRoaXMuYmFja2dyb3VuZD1udWxsO3RoaXMuYXV0b1VwZGF0ZT0hMDsidW5kZWZpbmVkIiE9PXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfWZ1bmN0aW9uIGFiKGEsYil7dGhpcy5taW49dm9pZCAwIT09YT9hOm5ldyBuKEluZmluaXR5LEluZmluaXR5LEluZmluaXR5KTt0aGlzLm1heD12b2lkIDAhPT1iP2I6bmV3IG4oLUluZmluaXR5LC1JbmZpbml0eSwtSW5maW5pdHkpfWZ1bmN0aW9uIFVmKGEsYixjLGQsZSl7dmFyIGY7dmFyIGc9MDtmb3IoZj0KYS5sZW5ndGgtMztnPD1mO2crPTMpe1FiLmZyb21BcnJheShhLGcpO3ZhciBoPWUueCpNYXRoLmFicyhRYi54KStlLnkqTWF0aC5hYnMoUWIueSkrZS56Kk1hdGguYWJzKFFiLnopLGw9Yi5kb3QoUWIpLG09Yy5kb3QoUWIpLHI9ZC5kb3QoUWIpO2lmKE1hdGgubWF4KC1NYXRoLm1heChsLG0sciksTWF0aC5taW4obCxtLHIpKT5oKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIG1iKGEsYil7dGhpcy5jZW50ZXI9dm9pZCAwIT09YT9hOm5ldyBuO3RoaXMucmFkaXVzPXZvaWQgMCE9PWI/YjowfWZ1bmN0aW9uIFJiKGEsYil7dGhpcy5vcmlnaW49dm9pZCAwIT09YT9hOm5ldyBuO3RoaXMuZGlyZWN0aW9uPXZvaWQgMCE9PWI/YjpuZXcgbn1mdW5jdGlvbiBPYShhLGIpe3RoaXMubm9ybWFsPXZvaWQgMCE9PWE/YTpuZXcgbigxLDAsMCk7dGhpcy5jb25zdGFudD12b2lkIDAhPT1iP2I6MH1mdW5jdGlvbiBiYShhLGIsYyl7dGhpcy5hPXZvaWQgMCE9PWE/YTpuZXcgbjt0aGlzLmI9dm9pZCAwIT09CmI/YjpuZXcgbjt0aGlzLmM9dm9pZCAwIT09Yz9jOm5ldyBufWZ1bmN0aW9uIEooYSxiLGMpe3JldHVybiB2b2lkIDA9PT1iJiZ2b2lkIDA9PT1jP3RoaXMuc2V0KGEpOnRoaXMuc2V0UkdCKGEsYixjKX1mdW5jdGlvbiBWZihhLGIsYyl7MD5jJiYoYys9MSk7MTxjJiYtLWM7cmV0dXJuIGM8MS82P2ErNiooYi1hKSpjOi41PmM/YjpjPDIvMz9hKzYqKGItYSkqKDIvMy1jKTphfWZ1bmN0aW9uIFdmKGEpe3JldHVybi4wNDA0NT5hPy4wNzczOTkzODA4KmE6TWF0aC5wb3coLjk0Nzg2NzI5ODYqYSsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIFhmKGEpe3JldHVybi4wMDMxMzA4PmE/MTIuOTIqYToxLjA1NSpNYXRoLnBvdyhhLC40MTY2NiktLjA1NX1mdW5jdGlvbiB4YyhhLGIsYyxkLGUsZil7dGhpcy5hPWE7dGhpcy5iPWI7dGhpcy5jPWM7dGhpcy5ub3JtYWw9ZCYmZC5pc1ZlY3RvcjM/ZDpuZXcgbjt0aGlzLnZlcnRleE5vcm1hbHM9QXJyYXkuaXNBcnJheShkKT9kOltdO3RoaXMuY29sb3I9CmUmJmUuaXNDb2xvcj9lOm5ldyBKO3RoaXMudmVydGV4Q29sb3JzPUFycmF5LmlzQXJyYXkoZSk/ZTpbXTt0aGlzLm1hdGVyaWFsSW5kZXg9dm9pZCAwIT09Zj9mOjB9ZnVuY3Rpb24gTygpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlVpKyt9KTt0aGlzLnV1aWQ9UC5nZW5lcmF0ZVVVSUQoKTt0aGlzLm5hbWU9IiI7dGhpcy50eXBlPSJNYXRlcmlhbCI7dGhpcy5mb2c9ITA7dGhpcy5ibGVuZGluZz0xO3RoaXMuc2lkZT0wO3RoaXMudmVydGV4VGFuZ2VudHM9dGhpcy5mbGF0U2hhZGluZz0hMTt0aGlzLnZlcnRleENvbG9ycz0wO3RoaXMub3BhY2l0eT0xO3RoaXMudHJhbnNwYXJlbnQ9ITE7dGhpcy5ibGVuZFNyYz0yMDQ7dGhpcy5ibGVuZERzdD0yMDU7dGhpcy5ibGVuZEVxdWF0aW9uPTEwMDt0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT10aGlzLmJsZW5kRHN0QWxwaGE9dGhpcy5ibGVuZFNyY0FscGhhPW51bGw7dGhpcy5kZXB0aEZ1bmM9Mzt0aGlzLmRlcHRoV3JpdGU9CnRoaXMuZGVwdGhUZXN0PSEwO3RoaXMuc3RlbmNpbFdyaXRlTWFzaz0yNTU7dGhpcy5zdGVuY2lsRnVuYz01MTk7dGhpcy5zdGVuY2lsUmVmPTA7dGhpcy5zdGVuY2lsRnVuY01hc2s9MjU1O3RoaXMuc3RlbmNpbFpQYXNzPXRoaXMuc3RlbmNpbFpGYWlsPXRoaXMuc3RlbmNpbEZhaWw9NzY4MDt0aGlzLnN0ZW5jaWxXcml0ZT0hMTt0aGlzLmNsaXBwaW5nUGxhbmVzPW51bGw7dGhpcy5jbGlwU2hhZG93cz10aGlzLmNsaXBJbnRlcnNlY3Rpb249ITE7dGhpcy5zaGFkb3dTaWRlPW51bGw7dGhpcy5jb2xvcldyaXRlPSEwO3RoaXMucHJlY2lzaW9uPW51bGw7dGhpcy5wb2x5Z29uT2Zmc2V0PSExO3RoaXMucG9seWdvbk9mZnNldFVuaXRzPXRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wO3RoaXMuZGl0aGVyaW5nPSExO3RoaXMuYWxwaGFUZXN0PTA7dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9ITE7dGhpcy50b25lTWFwcGVkPXRoaXMudmlzaWJsZT0hMDt0aGlzLnVzZXJEYXRhPXt9O3RoaXMubmVlZHNVcGRhdGU9CiEwfWZ1bmN0aW9uIEdhKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik1lc2hCYXNpY01hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBKKDE2Nzc3MjE1KTt0aGlzLmxpZ2h0TWFwPXRoaXMubWFwPW51bGw7dGhpcy5saWdodE1hcEludGVuc2l0eT0xO3RoaXMuYW9NYXA9bnVsbDt0aGlzLmFvTWFwSW50ZW5zaXR5PTE7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLnNwZWN1bGFyTWFwPW51bGw7dGhpcy5jb21iaW5lPTA7dGhpcy5yZWZsZWN0aXZpdHk9MTt0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTg7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiO3RoaXMubW9ycGhUYXJnZXRzPXRoaXMuc2tpbm5pbmc9ITE7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gTihhLGIsYyl7aWYoQXJyYXkuaXNBcnJheShhKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IGFycmF5IHNob3VsZCBiZSBhIFR5cGVkIEFycmF5LiIpOwp0aGlzLm5hbWU9IiI7dGhpcy5hcnJheT1hO3RoaXMuaXRlbVNpemU9Yjt0aGlzLmNvdW50PXZvaWQgMCE9PWE/YS5sZW5ndGgvYjowO3RoaXMubm9ybWFsaXplZD0hMD09PWM7dGhpcy51c2FnZT0zNTA0NDt0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX07dGhpcy52ZXJzaW9uPTB9ZnVuY3Rpb24gd2QoYSxiLGMpe04uY2FsbCh0aGlzLG5ldyBJbnQ4QXJyYXkoYSksYixjKX1mdW5jdGlvbiB4ZChhLGIsYyl7Ti5jYWxsKHRoaXMsbmV3IFVpbnQ4QXJyYXkoYSksYixjKX1mdW5jdGlvbiB5ZChhLGIsYyl7Ti5jYWxsKHRoaXMsbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGEpLGIsYyl9ZnVuY3Rpb24gemQoYSxiLGMpe04uY2FsbCh0aGlzLG5ldyBJbnQxNkFycmF5KGEpLGIsYyl9ZnVuY3Rpb24gU2IoYSxiLGMpe04uY2FsbCh0aGlzLG5ldyBVaW50MTZBcnJheShhKSxiLGMpfWZ1bmN0aW9uIEFkKGEsYixjKXtOLmNhbGwodGhpcyxuZXcgSW50MzJBcnJheShhKSxiLGMpfWZ1bmN0aW9uIFRiKGEsCmIsYyl7Ti5jYWxsKHRoaXMsbmV3IFVpbnQzMkFycmF5KGEpLGIsYyl9ZnVuY3Rpb24gQShhLGIsYyl7Ti5jYWxsKHRoaXMsbmV3IEZsb2F0MzJBcnJheShhKSxiLGMpfWZ1bmN0aW9uIEJkKGEsYixjKXtOLmNhbGwodGhpcyxuZXcgRmxvYXQ2NEFycmF5KGEpLGIsYyl9ZnVuY3Rpb24gaWgoKXt0aGlzLnZlcnRpY2VzPVtdO3RoaXMubm9ybWFscz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLnV2cz1bXTt0aGlzLnV2czI9W107dGhpcy5ncm91cHM9W107dGhpcy5tb3JwaFRhcmdldHM9e307dGhpcy5za2luV2VpZ2h0cz1bXTt0aGlzLnNraW5JbmRpY2VzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMuZ3JvdXBzTmVlZFVwZGF0ZT10aGlzLnV2c05lZWRVcGRhdGU9dGhpcy5jb2xvcnNOZWVkVXBkYXRlPXRoaXMubm9ybWFsc05lZWRVcGRhdGU9dGhpcy52ZXJ0aWNlc05lZWRVcGRhdGU9ITF9ZnVuY3Rpb24gamgoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybi1JbmZpbml0eTsKZm9yKHZhciBiPWFbMF0sYz0xLGQ9YS5sZW5ndGg7YzxkOysrYylhW2NdPmImJihiPWFbY10pO3JldHVybiBifWZ1bmN0aW9uIEQoKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpWaSs9Mn0pO3RoaXMudXVpZD1QLmdlbmVyYXRlVVVJRCgpO3RoaXMubmFtZT0iIjt0aGlzLnR5cGU9IkJ1ZmZlckdlb21ldHJ5Ijt0aGlzLmluZGV4PW51bGw7dGhpcy5hdHRyaWJ1dGVzPXt9O3RoaXMubW9ycGhBdHRyaWJ1dGVzPXt9O3RoaXMuZ3JvdXBzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMuZHJhd1JhbmdlPXtzdGFydDowLGNvdW50OkluZmluaXR5fTt0aGlzLnVzZXJEYXRhPXt9fWZ1bmN0aW9uIGVhKGEsYil7RS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iTWVzaCI7dGhpcy5nZW9tZXRyeT12b2lkIDAhPT1hP2E6bmV3IEQ7dGhpcy5tYXRlcmlhbD12b2lkIDAhPT1iP2I6bmV3IEdhKHtjb2xvcjoxNjc3NzIxNSpNYXRoLnJhbmRvbSgpfSk7CnRoaXMuZHJhd01vZGU9MDt0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWZ1bmN0aW9uIGtoKGEsYixjLGQsZSxmLGcsaCl7aWYobnVsbD09PSgxPT09Yi5zaWRlP2QuaW50ZXJzZWN0VHJpYW5nbGUoZyxmLGUsITAsaCk6ZC5pbnRlcnNlY3RUcmlhbmdsZShlLGYsZywyIT09Yi5zaWRlLGgpKSlyZXR1cm4gbnVsbDtFZS5jb3B5KGgpO0VlLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKTtiPWMucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEVlKTtyZXR1cm4gYjxjLm5lYXJ8fGI+Yy5mYXI/bnVsbDp7ZGlzdGFuY2U6Yixwb2ludDpFZS5jbG9uZSgpLG9iamVjdDphfX1mdW5jdGlvbiBGZShhLGIsYyxkLGUsZixnLGgsbCxtLHIpe1ViLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxsKTtWYi5mcm9tQnVmZmVyQXR0cmlidXRlKGUsbSk7V2IuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHIpO2U9YS5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYoYi5tb3JwaFRhcmdldHMmJmYmJmUpe1lmLnNldCgwLDAsMCk7ClpmLnNldCgwLDAsMCk7JGYuc2V0KDAsMCwwKTtmb3IodmFyIHE9MCx1PWYubGVuZ3RoO3E8dTtxKyspe3ZhciBwPWVbcV0saz1mW3FdOzAhPT1wJiYobGguZnJvbUJ1ZmZlckF0dHJpYnV0ZShrLGwpLG1oLmZyb21CdWZmZXJBdHRyaWJ1dGUoayxtKSxuaC5mcm9tQnVmZmVyQXR0cmlidXRlKGssciksWWYuYWRkU2NhbGVkVmVjdG9yKGxoLnN1YihVYikscCksWmYuYWRkU2NhbGVkVmVjdG9yKG1oLnN1YihWYikscCksJGYuYWRkU2NhbGVkVmVjdG9yKG5oLnN1YihXYikscCkpfVViLmFkZChZZik7VmIuYWRkKFpmKTtXYi5hZGQoJGYpfWlmKGE9a2goYSxiLGMsZCxVYixWYixXYixDZCkpZyYmKHljLmZyb21CdWZmZXJBdHRyaWJ1dGUoZyxsKSx6Yy5mcm9tQnVmZmVyQXR0cmlidXRlKGcsbSksQWMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShnLHIpLGEudXY9YmEuZ2V0VVYoQ2QsVWIsVmIsV2IseWMsemMsQWMsbmV3IEIpKSxoJiYoeWMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShoLGwpLHpjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaCwKbSksQWMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShoLHIpLGEudXYyPWJhLmdldFVWKENkLFViLFZiLFdiLHljLHpjLEFjLG5ldyBCKSksZz1uZXcgeGMobCxtLHIpLGJhLmdldE5vcm1hbChVYixWYixXYixnLm5vcm1hbCksYS5mYWNlPWc7cmV0dXJuIGF9ZnVuY3Rpb24gRygpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOldpKz0yfSk7dGhpcy51dWlkPVAuZ2VuZXJhdGVVVUlEKCk7dGhpcy5uYW1lPSIiO3RoaXMudHlwZT0iR2VvbWV0cnkiO3RoaXMudmVydGljZXM9W107dGhpcy5jb2xvcnM9W107dGhpcy5mYWNlcz1bXTt0aGlzLmZhY2VWZXJ0ZXhVdnM9W1tdXTt0aGlzLm1vcnBoVGFyZ2V0cz1bXTt0aGlzLm1vcnBoTm9ybWFscz1bXTt0aGlzLnNraW5XZWlnaHRzPVtdO3RoaXMuc2tpbkluZGljZXM9W107dGhpcy5saW5lRGlzdGFuY2VzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMuZ3JvdXBzTmVlZFVwZGF0ZT10aGlzLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlPQp0aGlzLmNvbG9yc05lZWRVcGRhdGU9dGhpcy5ub3JtYWxzTmVlZFVwZGF0ZT10aGlzLnV2c05lZWRVcGRhdGU9dGhpcy52ZXJ0aWNlc05lZWRVcGRhdGU9dGhpcy5lbGVtZW50c05lZWRVcGRhdGU9ITF9ZnVuY3Rpb24gWGIoYSl7dmFyIGI9e30sYztmb3IoYyBpbiBhKXtiW2NdPXt9O2Zvcih2YXIgZCBpbiBhW2NdKXt2YXIgZT1hW2NdW2RdO2UmJihlLmlzQ29sb3J8fGUuaXNNYXRyaXgzfHxlLmlzTWF0cml4NHx8ZS5pc1ZlY3RvcjJ8fGUuaXNWZWN0b3IzfHxlLmlzVmVjdG9yNHx8ZS5pc1RleHR1cmUpP2JbY11bZF09ZS5jbG9uZSgpOkFycmF5LmlzQXJyYXkoZSk/YltjXVtkXT1lLnNsaWNlKCk6YltjXVtkXT1lfX1yZXR1cm4gYn1mdW5jdGlvbiB1YShhKXtmb3IodmFyIGI9e30sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1YYihhW2NdKSxlO2ZvcihlIGluIGQpYltlXT1kW2VdfXJldHVybiBifWZ1bmN0aW9uIHZhKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlNoYWRlck1hdGVyaWFsIjsKdGhpcy5kZWZpbmVzPXt9O3RoaXMudW5pZm9ybXM9e307dGhpcy52ZXJ0ZXhTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSI7dGhpcy5mcmFnbWVudFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAxLjAsIDAuMCwgMC4wLCAxLjAgKTtcbn0iO3RoaXMubGluZXdpZHRoPTE7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLm1vcnBoTm9ybWFscz10aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPXRoaXMuY2xpcHBpbmc9dGhpcy5saWdodHM9dGhpcy5mb2c9ITE7dGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX07dGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLAoxXSx1djpbMCwwXSx1djI6WzAsMF19O3RoaXMuaW5kZXgwQXR0cmlidXRlTmFtZT12b2lkIDA7dGhpcy51bmlmb3Jtc05lZWRVcGRhdGU9ITE7dm9pZCAwIT09YSYmKHZvaWQgMCE9PWEuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXMoYSkpfWZ1bmN0aW9uIGJiKCl7RS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQ2FtZXJhIjt0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgUTt0aGlzLnByb2plY3Rpb25NYXRyaXg9bmV3IFE7dGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZT1uZXcgUX1mdW5jdGlvbiBVKGEsYixjLGQpe2JiLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQZXJzcGVjdGl2ZUNhbWVyYSI7dGhpcy5mb3Y9dm9pZCAwIT09YT9hOjUwO3RoaXMuem9vbT0xO3RoaXMubmVhcj12b2lkIDAhPT0KYz9jOi4xO3RoaXMuZmFyPXZvaWQgMCE9PWQ/ZDoyRTM7dGhpcy5mb2N1cz0xMDt0aGlzLmFzcGVjdD12b2lkIDAhPT1iP2I6MTt0aGlzLnZpZXc9bnVsbDt0aGlzLmZpbG1HYXVnZT0zNTt0aGlzLmZpbG1PZmZzZXQ9MDt0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1mdW5jdGlvbiBCYyhhLGIsYyxkKXtFLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDdWJlQ2FtZXJhIjt2YXIgZT1uZXcgVSg5MCwxLGEsYik7ZS51cC5zZXQoMCwtMSwwKTtlLmxvb2tBdChuZXcgbigxLDAsMCkpO3RoaXMuYWRkKGUpO3ZhciBmPW5ldyBVKDkwLDEsYSxiKTtmLnVwLnNldCgwLC0xLDApO2YubG9va0F0KG5ldyBuKC0xLDAsMCkpO3RoaXMuYWRkKGYpO3ZhciBnPW5ldyBVKDkwLDEsYSxiKTtnLnVwLnNldCgwLDAsMSk7Zy5sb29rQXQobmV3IG4oMCwxLDApKTt0aGlzLmFkZChnKTt2YXIgaD1uZXcgVSg5MCwxLGEsYik7aC51cC5zZXQoMCwwLC0xKTtoLmxvb2tBdChuZXcgbigwLC0xLDApKTt0aGlzLmFkZChoKTsKdmFyIGw9bmV3IFUoOTAsMSxhLGIpO2wudXAuc2V0KDAsLTEsMCk7bC5sb29rQXQobmV3IG4oMCwwLDEpKTt0aGlzLmFkZChsKTt2YXIgbT1uZXcgVSg5MCwxLGEsYik7bS51cC5zZXQoMCwtMSwwKTttLmxvb2tBdChuZXcgbigwLDAsLTEpKTt0aGlzLmFkZChtKTtkPWR8fHtmb3JtYXQ6MTAyMixtYWdGaWx0ZXI6MTAwNixtaW5GaWx0ZXI6MTAwNn07dGhpcy5yZW5kZXJUYXJnZXQ9bmV3IEJiKGMsYyxkKTt0aGlzLnJlbmRlclRhcmdldC50ZXh0dXJlLm5hbWU9IkN1YmVDYW1lcmEiO3RoaXMudXBkYXRlPWZ1bmN0aW9uKGEsYil7bnVsbD09PXRoaXMucGFyZW50JiZ0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCk7dmFyIGM9YS5nZXRSZW5kZXJUYXJnZXQoKSxkPXRoaXMucmVuZGVyVGFyZ2V0LHI9ZC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztkLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExO2Euc2V0UmVuZGVyVGFyZ2V0KGQsMCk7YS5yZW5kZXIoYixlKTthLnNldFJlbmRlclRhcmdldChkLAoxKTthLnJlbmRlcihiLGYpO2Euc2V0UmVuZGVyVGFyZ2V0KGQsMik7YS5yZW5kZXIoYixnKTthLnNldFJlbmRlclRhcmdldChkLDMpO2EucmVuZGVyKGIsaCk7YS5zZXRSZW5kZXJUYXJnZXQoZCw0KTthLnJlbmRlcihiLGwpO2QudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9cjthLnNldFJlbmRlclRhcmdldChkLDUpO2EucmVuZGVyKGIsbSk7YS5zZXRSZW5kZXJUYXJnZXQoYyl9O3RoaXMuY2xlYXI9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPWEuZ2V0UmVuZGVyVGFyZ2V0KCksZj10aGlzLnJlbmRlclRhcmdldCxnPTA7Nj5nO2crKylhLnNldFJlbmRlclRhcmdldChmLGcpLGEuY2xlYXIoYixjLGQpO2Euc2V0UmVuZGVyVGFyZ2V0KGUpfX1mdW5jdGlvbiBCYihhLGIsYyl7QmEuY2FsbCh0aGlzLGEsYixjKX1mdW5jdGlvbiBZYihhLGIsYyxkLGUsZixnLGgsbCxtLHIscSl7WS5jYWxsKHRoaXMsbnVsbCxmLGcsaCxsLG0sZCxlLHIscSk7dGhpcy5pbWFnZT17ZGF0YTphfHxudWxsLAp3aWR0aDpifHwxLGhlaWdodDpjfHwxfTt0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1sP2w6MTAwMzt0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1tP206MTAwMzt0aGlzLmZsaXBZPXRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExO3RoaXMudW5wYWNrQWxpZ25tZW50PTE7dGhpcy5uZWVkc1VwZGF0ZT0hMH1mdW5jdGlvbiBEZChhLGIsYyxkLGUsZil7dGhpcy5wbGFuZXM9W3ZvaWQgMCE9PWE/YTpuZXcgT2Esdm9pZCAwIT09Yj9iOm5ldyBPYSx2b2lkIDAhPT1jP2M6bmV3IE9hLHZvaWQgMCE9PWQ/ZDpuZXcgT2Esdm9pZCAwIT09ZT9lOm5ldyBPYSx2b2lkIDAhPT1mP2Y6bmV3IE9hXX1mdW5jdGlvbiBhZygpe2Z1bmN0aW9uIGEoZSxmKXshMSE9PWMmJihkKGUsZiksYi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSkpfXZhciBiPW51bGwsYz0hMSxkPW51bGw7cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7ITAhPT1jJiZudWxsIT09ZCYmKGIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGEpLGM9ITApfSwKc3RvcDpmdW5jdGlvbigpe2M9ITF9LHNldEFuaW1hdGlvbkxvb3A6ZnVuY3Rpb24oYSl7ZD1hfSxzZXRDb250ZXh0OmZ1bmN0aW9uKGEpe2I9YX19fWZ1bmN0aW9uIFhpKGEpe2Z1bmN0aW9uIGIoYixjKXt2YXIgZD1iLmFycmF5LGU9Yi51c2FnZSxoPWEuY3JlYXRlQnVmZmVyKCk7YS5iaW5kQnVmZmVyKGMsaCk7YS5idWZmZXJEYXRhKGMsZCxlKTtiLm9uVXBsb2FkQ2FsbGJhY2soKTtjPTUxMjY7ZCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheT9jPTUxMjY6ZCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheT9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVW5zdXBwb3J0ZWQgZGF0YSBidWZmZXIgZm9ybWF0OiBGbG9hdDY0QXJyYXkuIik6ZCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5P2M9NTEyMzpkIGluc3RhbmNlb2YgSW50MTZBcnJheT9jPTUxMjI6ZCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5P2M9NTEyNTpkIGluc3RhbmNlb2YgSW50MzJBcnJheT9jPTUxMjQ6ZCBpbnN0YW5jZW9mCkludDhBcnJheT9jPTUxMjA6ZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihjPTUxMjEpO3JldHVybntidWZmZXI6aCx0eXBlOmMsYnl0ZXNQZXJFbGVtZW50OmQuQllURVNfUEVSX0VMRU1FTlQsdmVyc2lvbjpiLnZlcnNpb259fXZhciBjPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24oYSl7YS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoYT1hLmRhdGEpO3JldHVybiBjLmdldChhKX0scmVtb3ZlOmZ1bmN0aW9uKGIpe2IuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGI9Yi5kYXRhKTt2YXIgZD1jLmdldChiKTtkJiYoYS5kZWxldGVCdWZmZXIoZC5idWZmZXIpLGMuZGVsZXRlKGIpKX0sdXBkYXRlOmZ1bmN0aW9uKGQsZSl7ZC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoZD1kLmRhdGEpO3ZhciBmPWMuZ2V0KGQpO2lmKHZvaWQgMD09PWYpYy5zZXQoZCxiKGQsZSkpO2Vsc2UgaWYoZi52ZXJzaW9uPGQudmVyc2lvbil7dmFyIGc9ZC5hcnJheSwKaD1kLnVwZGF0ZVJhbmdlO2EuYmluZEJ1ZmZlcihlLGYuYnVmZmVyKTstMT09PWguY291bnQ/YS5idWZmZXJTdWJEYXRhKGUsMCxnKTooYS5idWZmZXJTdWJEYXRhKGUsaC5vZmZzZXQqZy5CWVRFU19QRVJfRUxFTUVOVCxnLnN1YmFycmF5KGgub2Zmc2V0LGgub2Zmc2V0K2guY291bnQpKSxoLmNvdW50PS0xKTtmLnZlcnNpb249ZC52ZXJzaW9ufX19fWZ1bmN0aW9uIEVkKGEsYixjLGQpe0cuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlBsYW5lR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17d2lkdGg6YSxoZWlnaHQ6Yix3aWR0aFNlZ21lbnRzOmMsaGVpZ2h0U2VnbWVudHM6ZH07dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IFpiKGEsYixjLGQpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBaYihhLGIsYyxkKXtELmNhbGwodGhpcyk7dGhpcy50eXBlPSJQbGFuZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOmEsaGVpZ2h0OmIsd2lkdGhTZWdtZW50czpjLApoZWlnaHRTZWdtZW50czpkfTthPWF8fDE7Yj1ifHwxO3ZhciBlPWEvMixmPWIvMjtjPU1hdGguZmxvb3IoYyl8fDE7ZD1NYXRoLmZsb29yKGQpfHwxO3ZhciBnPWMrMSxoPWQrMSxsPWEvYyxtPWIvZCxyPVtdLHE9W10sdT1bXSxwPVtdO2ZvcihhPTA7YTxoO2ErKyl7dmFyIGs9YSptLWY7Zm9yKGI9MDtiPGc7YisrKXEucHVzaChiKmwtZSwtaywwKSx1LnB1c2goMCwwLDEpLHAucHVzaChiL2MpLHAucHVzaCgxLWEvZCl9Zm9yKGE9MDthPGQ7YSsrKWZvcihiPTA7YjxjO2IrKyllPWIrZyooYSsxKSxmPWIrMStnKihhKzEpLGg9YisxK2cqYSxyLnB1c2goYitnKmEsZSxoKSxyLnB1c2goZSxmLGgpO3RoaXMuc2V0SW5kZXgocik7dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShxLDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgQSh1LDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBBKHAsMikpfWZ1bmN0aW9uIFlpKGEsYixjLGQpe2Z1bmN0aW9uIGUoYSwKYyl7Yi5idWZmZXJzLmNvbG9yLnNldENsZWFyKGEucixhLmcsYS5iLGMsZCl9dmFyIGY9bmV3IEooMCksZz0wLGgsbCxtPW51bGwscj0wO3JldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24oYSxiKXtmLnNldChhKTtnPXZvaWQgMCE9PWI/YjoxO2UoZixnKX0sZ2V0Q2xlYXJBbHBoYTpmdW5jdGlvbigpe3JldHVybiBnfSxzZXRDbGVhckFscGhhOmZ1bmN0aW9uKGEpe2c9YTtlKGYsZyl9LHJlbmRlcjpmdW5jdGlvbihiLGQscCxrKXtkPWQuYmFja2dyb3VuZDtwPWEudnI7KHA9cC5nZXRTZXNzaW9uJiZwLmdldFNlc3Npb24oKSkmJiJhZGRpdGl2ZSI9PT1wLmVudmlyb25tZW50QmxlbmRNb2RlJiYoZD1udWxsKTtudWxsPT09ZD8oZShmLGcpLG09bnVsbCxyPTApOmQmJmQuaXNDb2xvciYmKGUoZCwxKSxrPSEwLG09bnVsbCxyPTApOyhhLmF1dG9DbGVhcnx8aykmJmEuY2xlYXIoYS5hdXRvQ2xlYXJDb2xvcixhLmF1dG9DbGVhckRlcHRoLAphLmF1dG9DbGVhclN0ZW5jaWwpO2lmKGQmJihkLmlzQ3ViZVRleHR1cmV8fGQuaXNXZWJHTFJlbmRlclRhcmdldEN1YmUpKXt2b2lkIDA9PT1sJiYobD1uZXcgZWEobmV3IEZkKDEsMSwxKSxuZXcgdmEoe3R5cGU6IkJhY2tncm91bmRDdWJlTWF0ZXJpYWwiLHVuaWZvcm1zOlhiKGNiLmN1YmUudW5pZm9ybXMpLHZlcnRleFNoYWRlcjpjYi5jdWJlLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpjYi5jdWJlLmZyYWdtZW50U2hhZGVyLHNpZGU6MSxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSksbC5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLGwuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLGwub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe3RoaXMubWF0cml4V29ybGQuY29weVBvc2l0aW9uKGMubWF0cml4V29ybGQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudEN1YmUudmFsdWV9fSksCmMudXBkYXRlKGwpKTtrPWQuaXNXZWJHTFJlbmRlclRhcmdldEN1YmU/ZC50ZXh0dXJlOmQ7bC5tYXRlcmlhbC51bmlmb3Jtcy50Q3ViZS52YWx1ZT1rO2wubWF0ZXJpYWwudW5pZm9ybXMudEZsaXAudmFsdWU9ZC5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZT8xOi0xO2lmKG0hPT1kfHxyIT09ay52ZXJzaW9uKWwubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsbT1kLHI9ay52ZXJzaW9uO2IudW5zaGlmdChsLGwuZ2VvbWV0cnksbC5tYXRlcmlhbCwwLDAsbnVsbCl9ZWxzZSBpZihkJiZkLmlzVGV4dHVyZSl7dm9pZCAwPT09aCYmKGg9bmV3IGVhKG5ldyBaYigyLDIpLG5ldyB2YSh7dHlwZToiQmFja2dyb3VuZE1hdGVyaWFsIix1bmlmb3JtczpYYihjYi5iYWNrZ3JvdW5kLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6Y2IuYmFja2dyb3VuZC52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6Y2IuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsCmZvZzohMX0pKSxoLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnQyRC52YWx1ZX19KSxjLnVwZGF0ZShoKSk7aC5tYXRlcmlhbC51bmlmb3Jtcy50MkQudmFsdWU9ZDshMD09PWQubWF0cml4QXV0b1VwZGF0ZSYmZC51cGRhdGVNYXRyaXgoKTtoLm1hdGVyaWFsLnVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoZC5tYXRyaXgpO2lmKG0hPT1kfHxyIT09ZC52ZXJzaW9uKWgubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsbT1kLHI9ZC52ZXJzaW9uO2IudW5zaGlmdChoLGguZ2VvbWV0cnksaC5tYXRlcmlhbCwwLDAsbnVsbCl9fX19ZnVuY3Rpb24gWmkoYSxiLGMsZCl7dmFyIGU9ZC5pc1dlYkdMMixmO3RoaXMuc2V0TW9kZT1mdW5jdGlvbihhKXtmPWF9O3RoaXMucmVuZGVyPWZ1bmN0aW9uKGIsZCl7YS5kcmF3QXJyYXlzKGYsYiwKZCk7Yy51cGRhdGUoZCxmKX07dGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24oZCxoLGwsbSl7aWYoMCE9PW0pe2lmKGUpe2Q9YTt2YXIgZz0iZHJhd0FycmF5c0luc3RhbmNlZCJ9ZWxzZSBpZihkPWIuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiksZz0iZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIixudWxsPT09ZCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuIik7cmV0dXJufWRbZ10oZixoLGwsbSk7Yy51cGRhdGUobCxmLG0pfX19ZnVuY3Rpb24gJGkoYSxiLGMpe2Z1bmN0aW9uIGQoYil7aWYoImhpZ2hwIj09PWIpe2lmKDA8YS5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzgpLnByZWNpc2lvbiYmMDxhLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwKMzYzMzgpLnByZWNpc2lvbilyZXR1cm4iaGlnaHAiO2I9Im1lZGl1bXAifXJldHVybiJtZWRpdW1wIj09PWImJjA8YS5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbiYmMDxhLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPyJtZWRpdW1wIjoibG93cCJ9dmFyIGUsZj0idW5kZWZpbmVkIiE9PXR5cGVvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiZhIGluc3RhbmNlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dHx8InVuZGVmaW5lZCIhPT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJmEgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dCxnPXZvaWQgMCE9PWMucHJlY2lzaW9uP2MucHJlY2lzaW9uOiJoaWdocCIsaD1kKGcpO2ghPT1nJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiIsZywibm90IHN1cHBvcnRlZCwgdXNpbmciLGgsImluc3RlYWQuIiksCmc9aCk7Yz0hMD09PWMubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjtoPWEuZ2V0UGFyYW1ldGVyKDM0OTMwKTt2YXIgbD1hLmdldFBhcmFtZXRlcigzNTY2MCksbT1hLmdldFBhcmFtZXRlcigzMzc5KSxyPWEuZ2V0UGFyYW1ldGVyKDM0MDc2KSxxPWEuZ2V0UGFyYW1ldGVyKDM0OTIxKSxrPWEuZ2V0UGFyYW1ldGVyKDM2MzQ3KSxwPWEuZ2V0UGFyYW1ldGVyKDM2MzQ4KSx0PWEuZ2V0UGFyYW1ldGVyKDM2MzQ5KSx2PTA8bCx5PWZ8fCEhYi5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0Iiksbj12JiZ5LHg9Zj9hLmdldFBhcmFtZXRlcigzNjE4Myk6MDtyZXR1cm57aXNXZWJHTDI6ZixnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZSlyZXR1cm4gZTt2YXIgYz1iLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7cmV0dXJuIGU9bnVsbCE9PWM/YS5nZXRQYXJhbWV0ZXIoYy5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOjB9LGdldE1heFByZWNpc2lvbjpkLApwcmVjaXNpb246Zyxsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmMsbWF4VGV4dHVyZXM6aCxtYXhWZXJ0ZXhUZXh0dXJlczpsLG1heFRleHR1cmVTaXplOm0sbWF4Q3ViZW1hcFNpemU6cixtYXhBdHRyaWJ1dGVzOnEsbWF4VmVydGV4VW5pZm9ybXM6ayxtYXhWYXJ5aW5nczpwLG1heEZyYWdtZW50VW5pZm9ybXM6dCx2ZXJ0ZXhUZXh0dXJlczp2LGZsb2F0RnJhZ21lbnRUZXh0dXJlczp5LGZsb2F0VmVydGV4VGV4dHVyZXM6bixtYXhTYW1wbGVzOnh9fWZ1bmN0aW9uIGFqKCl7ZnVuY3Rpb24gYSgpe20udmFsdWUhPT1kJiYobS52YWx1ZT1kLG0ubmVlZHNVcGRhdGU9MDxlKTtjLm51bVBsYW5lcz1lO2MubnVtSW50ZXJzZWN0aW9uPTB9ZnVuY3Rpb24gYihhLGIsZCxlKXt2YXIgZj1udWxsIT09YT9hLmxlbmd0aDowLGc9bnVsbDtpZigwIT09Zil7Zz1tLnZhbHVlO2lmKCEwIT09ZXx8bnVsbD09PWcpe2U9ZCs0KmY7Yj1iLm1hdHJpeFdvcmxkSW52ZXJzZTtsLmdldE5vcm1hbE1hdHJpeChiKTsKaWYobnVsbD09PWd8fGcubGVuZ3RoPGUpZz1uZXcgRmxvYXQzMkFycmF5KGUpO2ZvcihlPTA7ZSE9PWY7KytlLGQrPTQpaC5jb3B5KGFbZV0pLmFwcGx5TWF0cml4NChiLGwpLGgubm9ybWFsLnRvQXJyYXkoZyxkKSxnW2QrM109aC5jb25zdGFudH1tLnZhbHVlPWc7bS5uZWVkc1VwZGF0ZT0hMH1jLm51bVBsYW5lcz1mO3JldHVybiBnfXZhciBjPXRoaXMsZD1udWxsLGU9MCxmPSExLGc9ITEsaD1uZXcgT2EsbD1uZXcgWixtPXt2YWx1ZTpudWxsLG5lZWRzVXBkYXRlOiExfTt0aGlzLnVuaWZvcm09bTt0aGlzLm51bUludGVyc2VjdGlvbj10aGlzLm51bVBsYW5lcz0wO3RoaXMuaW5pdD1mdW5jdGlvbihhLGMsZyl7dmFyIGg9MCE9PWEubGVuZ3RofHxjfHwwIT09ZXx8ZjtmPWM7ZD1iKGEsZywwKTtlPWEubGVuZ3RoO3JldHVybiBofTt0aGlzLmJlZ2luU2hhZG93cz1mdW5jdGlvbigpe2c9ITA7YihudWxsKX07dGhpcy5lbmRTaGFkb3dzPWZ1bmN0aW9uKCl7Zz0hMTthKCl9O3RoaXMuc2V0U3RhdGU9CmZ1bmN0aW9uKGMsaCxsLHAsayx2KXtpZighZnx8bnVsbD09PWN8fDA9PT1jLmxlbmd0aHx8ZyYmIWwpZz9iKG51bGwpOmEoKTtlbHNle2w9Zz8wOmU7dmFyIHI9NCpsLHE9ay5jbGlwcGluZ1N0YXRlfHxudWxsO20udmFsdWU9cTtxPWIoYyxwLHIsdik7Zm9yKGM9MDtjIT09cjsrK2MpcVtjXT1kW2NdO2suY2xpcHBpbmdTdGF0ZT1xO3RoaXMubnVtSW50ZXJzZWN0aW9uPWg/dGhpcy5udW1QbGFuZXM6MDt0aGlzLm51bVBsYW5lcys9bH19fWZ1bmN0aW9uIGJqKGEpe3ZhciBiPXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oYyl7aWYodm9pZCAwIT09YltjXSlyZXR1cm4gYltjXTtzd2l0Y2goYyl7Y2FzZSAiV0VCR0xfZGVwdGhfdGV4dHVyZSI6dmFyIGQ9YS5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8YS5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fGEuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrOwpjYXNlICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiOmQ9YS5nZXRFeHRlbnNpb24oIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHxhLmdldEV4dGVuc2lvbigiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHxhLmdldEV4dGVuc2lvbigiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2JyZWFrO2Nhc2UgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjpkPWEuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHxhLmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fGEuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiOmQ9YS5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfHxhLmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOwpicmVhaztkZWZhdWx0OmQ9YS5nZXRFeHRlbnNpb24oYyl9bnVsbD09PWQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIitjKyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIik7cmV0dXJuIGJbY109ZH19fWZ1bmN0aW9uIGNqKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBlPWEudGFyZ2V0O2E9Zi5nZXQoZSk7bnVsbCE9PWEuaW5kZXgmJmIucmVtb3ZlKGEuaW5kZXgpO2Zvcih2YXIgaCBpbiBhLmF0dHJpYnV0ZXMpYi5yZW1vdmUoYS5hdHRyaWJ1dGVzW2hdKTtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGQpO2YuZGVsZXRlKGUpO2lmKGg9Zy5nZXQoYSkpYi5yZW1vdmUoaCksZy5kZWxldGUoYSk7Yy5tZW1vcnkuZ2VvbWV0cmllcy0tfWZ1bmN0aW9uIGUoYSl7dmFyIGM9W10sZD1hLmluZGV4LGU9YS5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGwhPT1kKXt2YXIgZj1kLmFycmF5O2Q9ZC52ZXJzaW9uO2U9MDtmb3IodmFyIGg9Zi5sZW5ndGg7ZTwKaDtlKz0zKXt2YXIgaz1mW2UrMF0sdD1mW2UrMV0sdj1mW2UrMl07Yy5wdXNoKGssdCx0LHYsdixrKX19ZWxzZSBmb3IoZj1lLmFycmF5LGQ9ZS52ZXJzaW9uLGU9MCxoPWYubGVuZ3RoLzMtMTtlPGg7ZSs9MylrPWUrMCx0PWUrMSx2PWUrMixjLnB1c2goayx0LHQsdix2LGspO2M9bmV3ICg2NTUzNTxqaChjKT9UYjpTYikoYywxKTtjLnZlcnNpb249ZDtiLnVwZGF0ZShjLDM0OTYzKTsoZj1nLmdldChhKSkmJmIucmVtb3ZlKGYpO2cuc2V0KGEsYyl9dmFyIGY9bmV3IFdlYWtNYXAsZz1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uKGEsYil7dmFyIGU9Zi5nZXQoYik7aWYoZSlyZXR1cm4gZTtiLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGQpO2IuaXNCdWZmZXJHZW9tZXRyeT9lPWI6Yi5pc0dlb21ldHJ5JiYodm9pZCAwPT09Yi5fYnVmZmVyR2VvbWV0cnkmJihiLl9idWZmZXJHZW9tZXRyeT0obmV3IEQpLnNldEZyb21PYmplY3QoYSkpLGU9Yi5fYnVmZmVyR2VvbWV0cnkpOwpmLnNldChiLGUpO2MubWVtb3J5Lmdlb21ldHJpZXMrKztyZXR1cm4gZX0sdXBkYXRlOmZ1bmN0aW9uKGEpe3ZhciBjPWEuaW5kZXgsZD1hLmF0dHJpYnV0ZXM7bnVsbCE9PWMmJmIudXBkYXRlKGMsMzQ5NjMpO2Zvcih2YXIgZSBpbiBkKWIudXBkYXRlKGRbZV0sMzQ5NjIpO2E9YS5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGUgaW4gYSl7Yz1hW2VdO2Q9MDtmb3IodmFyIGY9Yy5sZW5ndGg7ZDxmO2QrKyliLnVwZGF0ZShjW2RdLDM0OTYyKX19LGdldFdpcmVmcmFtZUF0dHJpYnV0ZTpmdW5jdGlvbihhKXt2YXIgYj1nLmdldChhKTtpZihiKXt2YXIgYz1hLmluZGV4O251bGwhPT1jJiZiLnZlcnNpb248Yy52ZXJzaW9uJiZlKGEpfWVsc2UgZShhKTtyZXR1cm4gZy5nZXQoYSl9fX1mdW5jdGlvbiBkaihhLGIsYyxkKXt2YXIgZT1kLmlzV2ViR0wyLGYsZyxoO3RoaXMuc2V0TW9kZT1mdW5jdGlvbihhKXtmPWF9O3RoaXMuc2V0SW5kZXg9ZnVuY3Rpb24oYSl7Zz1hLnR5cGU7aD1hLmJ5dGVzUGVyRWxlbWVudH07CnRoaXMucmVuZGVyPWZ1bmN0aW9uKGIsZCl7YS5kcmF3RWxlbWVudHMoZixkLGcsYipoKTtjLnVwZGF0ZShkLGYpfTt0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbihkLG0scixxKXtpZigwIT09cSl7aWYoZSl7ZD1hO3ZhciBsPSJkcmF3RWxlbWVudHNJbnN0YW5jZWQifWVsc2UgaWYoZD1iLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLGw9ImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIixudWxsPT09ZCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3JldHVybn1kW2xdKGYscixnLG0qaCxxKTtjLnVwZGF0ZShyLGYscSl9fX1mdW5jdGlvbiBlaihhKXt2YXIgYj17ZnJhbWU6MCxjYWxsczowLHRyaWFuZ2xlczowLHBvaW50czowLGxpbmVzOjB9OwpyZXR1cm57bWVtb3J5OntnZW9tZXRyaWVzOjAsdGV4dHVyZXM6MH0scmVuZGVyOmIscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6ZnVuY3Rpb24oKXtiLmZyYW1lKys7Yi5jYWxscz0wO2IudHJpYW5nbGVzPTA7Yi5wb2ludHM9MDtiLmxpbmVzPTB9LHVwZGF0ZTpmdW5jdGlvbihhLGQsZSl7ZT1lfHwxO2IuY2FsbHMrKztzd2l0Y2goZCl7Y2FzZSA0OmIudHJpYW5nbGVzKz1hLzMqZTticmVhaztjYXNlIDU6Y2FzZSA2OmIudHJpYW5nbGVzKz1lKihhLTIpO2JyZWFrO2Nhc2UgMTpiLmxpbmVzKz1hLzIqZTticmVhaztjYXNlIDM6Yi5saW5lcys9ZSooYS0xKTticmVhaztjYXNlIDI6Yi5saW5lcys9ZSphO2JyZWFrO2Nhc2UgMDpiLnBvaW50cys9ZSphO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmZvOiBVbmtub3duIGRyYXcgbW9kZToiLGQpfX19fWZ1bmN0aW9uIGZqKGEsYil7cmV0dXJuIE1hdGguYWJzKGJbMV0pLU1hdGguYWJzKGFbMV0pfQpmdW5jdGlvbiBnaihhKXt2YXIgYj17fSxjPW5ldyBGbG9hdDMyQXJyYXkoOCk7cmV0dXJue3VwZGF0ZTpmdW5jdGlvbihkLGUsZixnKXt2YXIgaD1kLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyxsPWgubGVuZ3RoO2Q9YltlLmlkXTtpZih2b2lkIDA9PT1kKXtkPVtdO2Zvcih2YXIgbT0wO208bDttKyspZFttXT1bbSwwXTtiW2UuaWRdPWR9dmFyIHI9Zi5tb3JwaFRhcmdldHMmJmUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2Y9Zi5tb3JwaE5vcm1hbHMmJmUubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbDtmb3IobT0wO208bDttKyspe3ZhciBxPWRbbV07MCE9PXFbMV0mJihyJiZlLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK20pLGYmJmUuZGVsZXRlQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrbSkpfWZvcihtPTA7bTxsO20rKylxPWRbbV0scVswXT1tLHFbMV09aFttXTtkLnNvcnQoZmopO2ZvcihtPTA7OD5tO20rKyl7aWYocT1kW21dKWlmKGg9cVswXSxsPXFbMV0pe3ImJmUuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrCm0scltoXSk7ZiYmZS5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIittLGZbaF0pO2NbbV09bDtjb250aW51ZX1jW21dPTB9Zy5nZXRVbmlmb3JtcygpLnNldFZhbHVlKGEsIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsYyl9fX1mdW5jdGlvbiBoaihhLGIsYyxkKXt2YXIgZT17fTtyZXR1cm57dXBkYXRlOmZ1bmN0aW9uKGEpe3ZhciBmPWQucmVuZGVyLmZyYW1lLGg9YS5nZW9tZXRyeSxsPWIuZ2V0KGEsaCk7ZVtsLmlkXSE9PWYmJihoLmlzR2VvbWV0cnkmJmwudXBkYXRlRnJvbU9iamVjdChhKSxiLnVwZGF0ZShsKSxlW2wuaWRdPWYpO2EuaXNJbnN0YW5jZWRNZXNoJiZjLnVwZGF0ZShhLmluc3RhbmNlTWF0cml4LDM0OTYyKTtyZXR1cm4gbH0sZGlzcG9zZTpmdW5jdGlvbigpe2U9e319fX1mdW5jdGlvbiBuYihhLGIsYyxkLGUsZixnLGgsbCxtKXthPXZvaWQgMCE9PWE/YTpbXTtZLmNhbGwodGhpcyxhLHZvaWQgMCE9PWI/YjozMDEsYyxkLGUsZix2b2lkIDAhPT1nP2c6MTAyMixoLApsLG0pO3RoaXMuZmxpcFk9ITF9ZnVuY3Rpb24gQ2MoYSxiLGMsZCl7WS5jYWxsKHRoaXMsbnVsbCk7dGhpcy5pbWFnZT17ZGF0YTphfHxudWxsLHdpZHRoOmJ8fDEsaGVpZ2h0OmN8fDEsZGVwdGg6ZHx8MX07dGhpcy5taW5GaWx0ZXI9dGhpcy5tYWdGaWx0ZXI9MTAwMzt0aGlzLndyYXBSPTEwMDE7dGhpcy5mbGlwWT10aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTt0aGlzLm5lZWRzVXBkYXRlPSEwfWZ1bmN0aW9uIERjKGEsYixjLGQpe1kuY2FsbCh0aGlzLG51bGwpO3RoaXMuaW1hZ2U9e2RhdGE6YXx8bnVsbCx3aWR0aDpifHwxLGhlaWdodDpjfHwxLGRlcHRoOmR8fDF9O3RoaXMubWluRmlsdGVyPXRoaXMubWFnRmlsdGVyPTEwMDM7dGhpcy53cmFwUj0xMDAxO3RoaXMuZmxpcFk9dGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITE7dGhpcy5uZWVkc1VwZGF0ZT0hMH1mdW5jdGlvbiBFYyhhLGIsYyl7dmFyIGQ9YVswXTtpZigwPj1kfHwwPGQpcmV0dXJuIGE7dmFyIGU9YipjLGY9b2hbZV07dm9pZCAwPT09CmYmJihmPW5ldyBGbG9hdDMyQXJyYXkoZSksb2hbZV09Zik7aWYoMCE9PWIpZm9yKGQudG9BcnJheShmLDApLGQ9MSxlPTA7ZCE9PWI7KytkKWUrPWMsYVtkXS50b0FycmF5KGYsZSk7cmV0dXJuIGZ9ZnVuY3Rpb24gTGEoYSxiKXtpZihhLmxlbmd0aCE9PWIubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdIT09YltjXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBIYShhLGIpe2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylhW2NdPWJbY119ZnVuY3Rpb24gcGgoYSxiKXt2YXIgYz1xaFtiXTt2b2lkIDA9PT1jJiYoYz1uZXcgSW50MzJBcnJheShiKSxxaFtiXT1jKTtmb3IodmFyIGQ9MDtkIT09YjsrK2QpY1tkXT1hLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtyZXR1cm4gY31mdW5jdGlvbiBpaihhLGIpe3ZhciBjPXRoaXMuY2FjaGU7Y1swXSE9PWImJihhLnVuaWZvcm0xZih0aGlzLmFkZHIsYiksY1swXT1iKX1mdW5jdGlvbiBqaihhLApiKXt2YXIgYz10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWIueCl7aWYoY1swXSE9PWIueHx8Y1sxXSE9PWIueSlhLnVuaWZvcm0yZih0aGlzLmFkZHIsYi54LGIueSksY1swXT1iLngsY1sxXT1iLnl9ZWxzZSBMYShjLGIpfHwoYS51bmlmb3JtMmZ2KHRoaXMuYWRkcixiKSxIYShjLGIpKX1mdW5jdGlvbiBraihhLGIpe3ZhciBjPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09Yi54KXtpZihjWzBdIT09Yi54fHxjWzFdIT09Yi55fHxjWzJdIT09Yi56KWEudW5pZm9ybTNmKHRoaXMuYWRkcixiLngsYi55LGIueiksY1swXT1iLngsY1sxXT1iLnksY1syXT1iLnp9ZWxzZSBpZih2b2lkIDAhPT1iLnIpe2lmKGNbMF0hPT1iLnJ8fGNbMV0hPT1iLmd8fGNbMl0hPT1iLmIpYS51bmlmb3JtM2YodGhpcy5hZGRyLGIucixiLmcsYi5iKSxjWzBdPWIucixjWzFdPWIuZyxjWzJdPWIuYn1lbHNlIExhKGMsYil8fChhLnVuaWZvcm0zZnYodGhpcy5hZGRyLGIpLEhhKGMsYikpfWZ1bmN0aW9uIGxqKGEsYil7dmFyIGM9CnRoaXMuY2FjaGU7aWYodm9pZCAwIT09Yi54KXtpZihjWzBdIT09Yi54fHxjWzFdIT09Yi55fHxjWzJdIT09Yi56fHxjWzNdIT09Yi53KWEudW5pZm9ybTRmKHRoaXMuYWRkcixiLngsYi55LGIueixiLncpLGNbMF09Yi54LGNbMV09Yi55LGNbMl09Yi56LGNbM109Yi53fWVsc2UgTGEoYyxiKXx8KGEudW5pZm9ybTRmdih0aGlzLmFkZHIsYiksSGEoYyxiKSl9ZnVuY3Rpb24gbWooYSxiKXt2YXIgYz10aGlzLmNhY2hlLGQ9Yi5lbGVtZW50czt2b2lkIDA9PT1kP0xhKGMsYil8fChhLnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLGIpLEhhKGMsYikpOkxhKGMsZCl8fChyaC5zZXQoZCksYS51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxyaCksSGEoYyxkKSl9ZnVuY3Rpb24gbmooYSxiKXt2YXIgYz10aGlzLmNhY2hlLGQ9Yi5lbGVtZW50czt2b2lkIDA9PT1kP0xhKGMsYil8fChhLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLGIpLEhhKGMsYikpOkxhKGMsZCl8fAooc2guc2V0KGQpLGEudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsc2gpLEhhKGMsZCkpfWZ1bmN0aW9uIG9qKGEsYil7dmFyIGM9dGhpcy5jYWNoZSxkPWIuZWxlbWVudHM7dm9pZCAwPT09ZD9MYShjLGIpfHwoYS51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxiKSxIYShjLGIpKTpMYShjLGQpfHwodGguc2V0KGQpLGEudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsdGgpLEhhKGMsZCkpfWZ1bmN0aW9uIHBqKGEsYixjKXt2YXIgZD10aGlzLmNhY2hlLGU9Yy5hbGxvY2F0ZVRleHR1cmVVbml0KCk7ZFswXSE9PWUmJihhLnVuaWZvcm0xaSh0aGlzLmFkZHIsZSksZFswXT1lKTtjLnNhZmVTZXRUZXh0dXJlMkQoYnx8dWgsZSl9ZnVuY3Rpb24gcWooYSxiLGMpe3ZhciBkPXRoaXMuY2FjaGUsZT1jLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtkWzBdIT09ZSYmKGEudW5pZm9ybTFpKHRoaXMuYWRkcixlKSxkWzBdPWUpO2Muc2V0VGV4dHVyZTJEQXJyYXkoYnx8cmosZSl9CmZ1bmN0aW9uIHNqKGEsYixjKXt2YXIgZD10aGlzLmNhY2hlLGU9Yy5hbGxvY2F0ZVRleHR1cmVVbml0KCk7ZFswXSE9PWUmJihhLnVuaWZvcm0xaSh0aGlzLmFkZHIsZSksZFswXT1lKTtjLnNldFRleHR1cmUzRChifHx0aixlKX1mdW5jdGlvbiB1aihhLGIsYyl7dmFyIGQ9dGhpcy5jYWNoZSxlPWMuYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2RbMF0hPT1lJiYoYS51bmlmb3JtMWkodGhpcy5hZGRyLGUpLGRbMF09ZSk7Yy5zYWZlU2V0VGV4dHVyZUN1YmUoYnx8dmgsZSl9ZnVuY3Rpb24gdmooYSxiKXt2YXIgYz10aGlzLmNhY2hlO2NbMF0hPT1iJiYoYS51bmlmb3JtMWkodGhpcy5hZGRyLGIpLGNbMF09Yil9ZnVuY3Rpb24gd2ooYSxiKXt2YXIgYz10aGlzLmNhY2hlO0xhKGMsYil8fChhLnVuaWZvcm0yaXYodGhpcy5hZGRyLGIpLEhhKGMsYikpfWZ1bmN0aW9uIHhqKGEsYil7dmFyIGM9dGhpcy5jYWNoZTtMYShjLGIpfHwoYS51bmlmb3JtM2l2KHRoaXMuYWRkcixiKSxIYShjLGIpKX0KZnVuY3Rpb24geWooYSxiKXt2YXIgYz10aGlzLmNhY2hlO0xhKGMsYil8fChhLnVuaWZvcm00aXYodGhpcy5hZGRyLGIpLEhhKGMsYikpfWZ1bmN0aW9uIHpqKGEpe3N3aXRjaChhKXtjYXNlIDUxMjY6cmV0dXJuIGlqO2Nhc2UgMzU2NjQ6cmV0dXJuIGpqO2Nhc2UgMzU2NjU6cmV0dXJuIGtqO2Nhc2UgMzU2NjY6cmV0dXJuIGxqO2Nhc2UgMzU2NzQ6cmV0dXJuIG1qO2Nhc2UgMzU2NzU6cmV0dXJuIG5qO2Nhc2UgMzU2NzY6cmV0dXJuIG9qO2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpyZXR1cm4gcGo7Y2FzZSAzNTY3OTpyZXR1cm4gc2o7Y2FzZSAzNTY4MDpyZXR1cm4gdWo7Y2FzZSAzNjI4OTpyZXR1cm4gcWo7Y2FzZSA1MTI0OmNhc2UgMzU2NzA6cmV0dXJuIHZqO2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gd2o7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiB4ajtjYXNlIDM1NjY5OmNhc2UgMzU2NzM6cmV0dXJuIHlqfX1mdW5jdGlvbiBBaihhLGIpe2EudW5pZm9ybTFmdih0aGlzLmFkZHIsCmIpfWZ1bmN0aW9uIEJqKGEsYil7YS51bmlmb3JtMWl2KHRoaXMuYWRkcixiKX1mdW5jdGlvbiBDaihhLGIpe2EudW5pZm9ybTJpdih0aGlzLmFkZHIsYil9ZnVuY3Rpb24gRGooYSxiKXthLnVuaWZvcm0zaXYodGhpcy5hZGRyLGIpfWZ1bmN0aW9uIEVqKGEsYil7YS51bmlmb3JtNGl2KHRoaXMuYWRkcixiKX1mdW5jdGlvbiBGaihhLGIpe2I9RWMoYix0aGlzLnNpemUsMik7YS51bmlmb3JtMmZ2KHRoaXMuYWRkcixiKX1mdW5jdGlvbiBHaihhLGIpe2I9RWMoYix0aGlzLnNpemUsMyk7YS51bmlmb3JtM2Z2KHRoaXMuYWRkcixiKX1mdW5jdGlvbiBIaihhLGIpe2I9RWMoYix0aGlzLnNpemUsNCk7YS51bmlmb3JtNGZ2KHRoaXMuYWRkcixiKX1mdW5jdGlvbiBJaihhLGIpe2I9RWMoYix0aGlzLnNpemUsNCk7YS51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxiKX1mdW5jdGlvbiBKaihhLGIpe2I9RWMoYix0aGlzLnNpemUsOSk7YS51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwKITEsYil9ZnVuY3Rpb24gS2ooYSxiKXtiPUVjKGIsdGhpcy5zaXplLDE2KTthLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLGIpfWZ1bmN0aW9uIExqKGEsYixjKXt2YXIgZD1iLmxlbmd0aCxlPXBoKGMsZCk7YS51bmlmb3JtMWl2KHRoaXMuYWRkcixlKTtmb3IoYT0wO2EhPT1kOysrYSljLnNhZmVTZXRUZXh0dXJlMkQoYlthXXx8dWgsZVthXSl9ZnVuY3Rpb24gTWooYSxiLGMpe3ZhciBkPWIubGVuZ3RoLGU9cGgoYyxkKTthLnVuaWZvcm0xaXYodGhpcy5hZGRyLGUpO2ZvcihhPTA7YSE9PWQ7KythKWMuc2FmZVNldFRleHR1cmVDdWJlKGJbYV18fHZoLGVbYV0pfWZ1bmN0aW9uIE5qKGEpe3N3aXRjaChhKXtjYXNlIDUxMjY6cmV0dXJuIEFqO2Nhc2UgMzU2NjQ6cmV0dXJuIEZqO2Nhc2UgMzU2NjU6cmV0dXJuIEdqO2Nhc2UgMzU2NjY6cmV0dXJuIEhqO2Nhc2UgMzU2NzQ6cmV0dXJuIElqO2Nhc2UgMzU2NzU6cmV0dXJuIEpqO2Nhc2UgMzU2NzY6cmV0dXJuIEtqO2Nhc2UgMzU2Nzg6cmV0dXJuIExqOwpjYXNlIDM1NjgwOnJldHVybiBNajtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gQmo7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBDajtjYXNlIDM1NjY4OmNhc2UgMzU2NzI6cmV0dXJuIERqO2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gRWp9fWZ1bmN0aW9uIE9qKGEsYixjKXt0aGlzLmlkPWE7dGhpcy5hZGRyPWM7dGhpcy5jYWNoZT1bXTt0aGlzLnNldFZhbHVlPXpqKGIudHlwZSl9ZnVuY3Rpb24gd2goYSxiLGMpe3RoaXMuaWQ9YTt0aGlzLmFkZHI9Yzt0aGlzLmNhY2hlPVtdO3RoaXMuc2l6ZT1iLnNpemU7dGhpcy5zZXRWYWx1ZT1OaihiLnR5cGUpfWZ1bmN0aW9uIHhoKGEpe3RoaXMuaWQ9YTt0aGlzLnNlcT1bXTt0aGlzLm1hcD17fX1mdW5jdGlvbiBDYihhLGIpe3RoaXMuc2VxPVtdO3RoaXMubWFwPXt9O2Zvcih2YXIgYz1hLmdldFByb2dyYW1QYXJhbWV0ZXIoYiwzNTcxOCksZD0wO2Q8YzsrK2Qpe3ZhciBlPWEuZ2V0QWN0aXZlVW5pZm9ybShiLGQpLGY9CmEuZ2V0VW5pZm9ybUxvY2F0aW9uKGIsZS5uYW1lKSxnPXRoaXMsaD1lLm5hbWUsbD1oLmxlbmd0aDtmb3IoYmcubGFzdEluZGV4PTA7Oyl7dmFyIG09YmcuZXhlYyhoKSxyPWJnLmxhc3RJbmRleCxxPW1bMV0saz1tWzNdOyJdIj09PW1bMl0mJihxfD0wKTtpZih2b2lkIDA9PT1rfHwiWyI9PT1rJiZyKzI9PT1sKXtoPWc7ZT12b2lkIDA9PT1rP25ldyBPaihxLGUsZik6bmV3IHdoKHEsZSxmKTtoLnNlcS5wdXNoKGUpO2gubWFwW2UuaWRdPWU7YnJlYWt9ZWxzZSBrPWcubWFwW3FdLHZvaWQgMD09PWsmJihrPW5ldyB4aChxKSxxPWcsZz1rLHEuc2VxLnB1c2goZykscS5tYXBbZy5pZF09ZyksZz1rfX19ZnVuY3Rpb24geWgoYSxiLGMpe2I9YS5jcmVhdGVTaGFkZXIoYik7YS5zaGFkZXJTb3VyY2UoYixjKTthLmNvbXBpbGVTaGFkZXIoYik7cmV0dXJuIGJ9ZnVuY3Rpb24gemgoYSl7c3dpdGNoKGEpe2Nhc2UgM0UzOnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDAxOnJldHVyblsic1JHQiIsCiIoIHZhbHVlICkiXTtjYXNlIDMwMDI6cmV0dXJuWyJSR0JFIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDA0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDcuMCApIl07Y2FzZSAzMDA1OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgMzAwNjpyZXR1cm5bIlJHQkQiLCIoIHZhbHVlLCAyNTYuMCApIl07Y2FzZSAzMDA3OnJldHVyblsiR2FtbWEiLCIoIHZhbHVlLCBmbG9hdCggR0FNTUFfRkFDVE9SICkgKSJdO2Nhc2UgMzAwMzpyZXR1cm5bIkxvZ0x1diIsIiggdmFsdWUgKSJdO2RlZmF1bHQ6dGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGVuY29kaW5nOiAiK2EpO319ZnVuY3Rpb24gQWgoYSxiLGMpe3ZhciBkPWEuZ2V0U2hhZGVyUGFyYW1ldGVyKGIsMzU3MTMpLGU9YS5nZXRTaGFkZXJJbmZvTG9nKGIpLnRyaW0oKTtpZihkJiYiIj09PWUpcmV0dXJuIiI7YT1hLmdldFNoYWRlclNvdXJjZShiKS5zcGxpdCgiXG4iKTtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWFbYl09YisKMSsiOiAiK2FbYl07YT1hLmpvaW4oIlxuIik7cmV0dXJuIlRIUkVFLldlYkdMU2hhZGVyOiBnbC5nZXRTaGFkZXJJbmZvTG9nKCkgIitjKyJcbiIrZSthfWZ1bmN0aW9uIEdlKGEsYil7Yj16aChiKTtyZXR1cm4idmVjNCAiK2ErIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuICIrYlswXSsiVG9MaW5lYXIiK2JbMV0rIjsgfSJ9ZnVuY3Rpb24gUGooYSxiKXtiPXpoKGIpO3JldHVybiJ2ZWM0ICIrYSsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gTGluZWFyVG8iK2JbMF0rYlsxXSsiOyB9In1mdW5jdGlvbiBRaihhLGIpe3N3aXRjaChiKXtjYXNlIDE6Yj0iTGluZWFyIjticmVhaztjYXNlIDI6Yj0iUmVpbmhhcmQiO2JyZWFrO2Nhc2UgMzpiPSJVbmNoYXJ0ZWQyIjticmVhaztjYXNlIDQ6Yj0iT3B0aW1pemVkQ2luZW9uIjticmVhaztjYXNlIDU6Yj0iQUNFU0ZpbG1pYyI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigidW5zdXBwb3J0ZWQgdG9uZU1hcHBpbmc6ICIrYik7fXJldHVybiJ2ZWMzICIrCmErIiggdmVjMyBjb2xvciApIHsgcmV0dXJuICIrYisiVG9uZU1hcHBpbmcoIGNvbG9yICk7IH0ifWZ1bmN0aW9uIFJqKGEsYixjKXthPWF8fHt9O3JldHVyblthLmRlcml2YXRpdmVzfHxiLmVudk1hcEN1YmVVVnx8Yi5idW1wTWFwfHxiLnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8Yi5jbGVhcmNvYXROb3JtYWxNYXB8fGIuZmxhdFNoYWRpbmc/IiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlIjoiIiwoYS5mcmFnRGVwdGh8fGIubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcikmJmMuZ2V0KCJFWFRfZnJhZ19kZXB0aCIpPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIixhLmRyYXdCdWZmZXJzJiZjLmdldCgiV0VCR0xfZHJhd19idWZmZXJzIik/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLChhLnNoYWRlclRleHR1cmVMT0R8fGIuZW52TWFwKSYmYy5nZXQoIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKT8KIiNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZSI6IiJdLmZpbHRlcihHZCkuam9pbigiXG4iKX1mdW5jdGlvbiBTaihhKXt2YXIgYj1bXSxjO2ZvcihjIGluIGEpe3ZhciBkPWFbY107ITEhPT1kJiZiLnB1c2goIiNkZWZpbmUgIitjKyIgIitkKX1yZXR1cm4gYi5qb2luKCJcbiIpfWZ1bmN0aW9uIEdkKGEpe3JldHVybiIiIT09YX1mdW5jdGlvbiBCaChhLGIpe3JldHVybiBhLnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csYi5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLGIubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyxiLm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csYi5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csYi5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyxiLm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLApiLm51bVNwb3RMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVF9TSEFET1dTL2csYi5udW1Qb2ludExpZ2h0U2hhZG93cyl9ZnVuY3Rpb24gQ2goYSxiKXtyZXR1cm4gYS5yZXBsYWNlKC9OVU1fQ0xJUFBJTkdfUExBTkVTL2csYi5udW1DbGlwcGluZ1BsYW5lcykucmVwbGFjZSgvVU5JT05fQ0xJUFBJTkdfUExBTkVTL2csYi5udW1DbGlwcGluZ1BsYW5lcy1iLm51bUNsaXBJbnRlcnNlY3Rpb24pfWZ1bmN0aW9uIGNnKGEsYil7YT1TW2JdO2lmKHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoIkNhbiBub3QgcmVzb2x2ZSAjaW5jbHVkZSA8IitiKyI+Iik7cmV0dXJuIGEucmVwbGFjZShkZyxjZyl9ZnVuY3Rpb24gRGgoYSxiLGMsZCl7YT0iIjtmb3IoYj1wYXJzZUludChiKTtiPHBhcnNlSW50KGMpO2IrKylhKz1kLnJlcGxhY2UoL1xbIGkgXF0vZywiWyAiK2IrIiBdIikucmVwbGFjZSgvVU5ST0xMRURfTE9PUF9JTkRFWC9nLGIpO3JldHVybiBhfWZ1bmN0aW9uIEVoKGEpe3ZhciBiPQoicHJlY2lzaW9uICIrYS5wcmVjaXNpb24rIiBmbG9hdDtcbnByZWNpc2lvbiAiK2EucHJlY2lzaW9uKyIgaW50OyI7ImhpZ2hwIj09PWEucHJlY2lzaW9uP2IrPSJcbiNkZWZpbmUgSElHSF9QUkVDSVNJT04iOiJtZWRpdW1wIj09PWEucHJlY2lzaW9uP2IrPSJcbiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiI6Imxvd3AiPT09YS5wcmVjaXNpb24mJihiKz0iXG4jZGVmaW5lIExPV19QUkVDSVNJT04iKTtyZXR1cm4gYn1mdW5jdGlvbiBUaihhKXt2YXIgYj0iU0hBRE9XTUFQX1RZUEVfQkFTSUMiOzE9PT1hLnNoYWRvd01hcFR5cGU/Yj0iU0hBRE9XTUFQX1RZUEVfUENGIjoyPT09YS5zaGFkb3dNYXBUeXBlP2I9IlNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIjozPT09YS5zaGFkb3dNYXBUeXBlJiYoYj0iU0hBRE9XTUFQX1RZUEVfVlNNIik7cmV0dXJuIGJ9ZnVuY3Rpb24gVWooYSl7dmFyIGI9IkVOVk1BUF9UWVBFX0NVQkUiO2lmKGEuZW52TWFwKXN3aXRjaChhLmVudk1hcE1vZGUpe2Nhc2UgMzAxOmNhc2UgMzAyOmI9CiJFTlZNQVBfVFlQRV9DVUJFIjticmVhaztjYXNlIDMwNjpjYXNlIDMwNzpiPSJFTlZNQVBfVFlQRV9DVUJFX1VWIjticmVhaztjYXNlIDMwMzpjYXNlIDMwNDpiPSJFTlZNQVBfVFlQRV9FUVVJUkVDIjticmVhaztjYXNlIDMwNTpiPSJFTlZNQVBfVFlQRV9TUEhFUkUifXJldHVybiBifWZ1bmN0aW9uIFZqKGEpe3ZhciBiPSJFTlZNQVBfTU9ERV9SRUZMRUNUSU9OIjtpZihhLmVudk1hcClzd2l0Y2goYS5lbnZNYXBNb2RlKXtjYXNlIDMwMjpjYXNlIDMwNDpiPSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIn1yZXR1cm4gYn1mdW5jdGlvbiBXaihhKXt2YXIgYj0iRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZIjtpZihhLmVudk1hcClzd2l0Y2goYS5jb21iaW5lKXtjYXNlIDA6Yj0iRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZIjticmVhaztjYXNlIDE6Yj0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSAyOmI9IkVOVk1BUF9CTEVORElOR19BREQifXJldHVybiBifWZ1bmN0aW9uIFhqKGEsCmIsYyxkLGUsZil7dmFyIGc9YS5nZXRDb250ZXh0KCksaD1kLmRlZmluZXMsbD1lLnZlcnRleFNoYWRlcixtPWUuZnJhZ21lbnRTaGFkZXIscj1UaihmKSxxPVVqKGYpLGs9VmooZikscD1XaihmKSx0PTA8YS5nYW1tYUZhY3Rvcj9hLmdhbW1hRmFjdG9yOjEsdj1mLmlzV2ViR0wyPyIiOlJqKGQuZXh0ZW5zaW9ucyxmLGIpLG49U2ooaCksdz1nLmNyZWF0ZVByb2dyYW0oKSx4PWYubnVtTXVsdGl2aWV3Vmlld3M7ZC5pc1Jhd1NoYWRlck1hdGVyaWFsPyhoPVtuXS5maWx0ZXIoR2QpLmpvaW4oIlxuIiksMDxoLmxlbmd0aCYmKGgrPSJcbiIpLGI9W3Ysbl0uZmlsdGVyKEdkKS5qb2luKCJcbiIpLDA8Yi5sZW5ndGgmJihiKz0iXG4iKSk6KGg9W0VoKGYpLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrZS5uYW1lLG4sZi5pbnN0YW5jaW5nPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HIjoiIixmLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVkVSVEVYX1RFWFRVUkVTIjoiIiwiI2RlZmluZSBHQU1NQV9GQUNUT1IgIisKdCwiI2RlZmluZSBNQVhfQk9ORVMgIitmLm1heEJvbmVzLGYudXNlRm9nJiZmLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixmLnVzZUZvZyYmZi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixmLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixmLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixmLmVudk1hcD8iI2RlZmluZSAiK2s6IiIsZi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLGYuYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixmLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsZi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixmLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixmLm5vcm1hbE1hcCYmZi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLGYubm9ybWFsTWFwJiZmLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoKIiIsZi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLGYuZGlzcGxhY2VtZW50TWFwJiZmLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVVNFX0RJU1BMQUNFTUVOVE1BUCI6IiIsZi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLGYucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLGYubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLGYuYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixmLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixmLnZlcnRleENvbG9ycz8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLGYudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsZi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsZi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6CiIiLGYuc2tpbm5pbmc/IiNkZWZpbmUgVVNFX1NLSU5OSU5HIjoiIixmLnVzZVZlcnRleFRleHR1cmU/IiNkZWZpbmUgQk9ORV9URVhUVVJFIjoiIixmLm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIixmLm1vcnBoTm9ybWFscyYmITE9PT1mLmZsYXRTaGFkaW5nPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLGYuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixmLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixmLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsZi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrcjoiIixmLnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIixmLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixmLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJihmLmlzV2ViR0wyfHxiLmdldCgiRVhUX2ZyYWdfZGVwdGgiKSk/CiIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HIiwiIGF0dHJpYnV0ZSBtYXQ0IGluc3RhbmNlTWF0cml4OyIsIiNlbmRpZiIsImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uOyIsImF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDsiLCJhdHRyaWJ1dGUgdmVjMiB1djsiLCIjaWZkZWYgVVNFX1RBTkdFTlQiLCJcdGF0dHJpYnV0ZSB2ZWM0IHRhbmdlbnQ7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9DT0xPUiIsIlx0YXR0cmlidXRlIHZlYzMgY29sb3I7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFMiLAoiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiXHQjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDM7IiwiXHQjZWxzZSIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDQ7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDc7IiwiXHQjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luSW5kZXg7IiwKIlx0YXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsiLCIjZW5kaWYiLCJcbiJdLmZpbHRlcihHZCkuam9pbigiXG4iKSxiPVt2LEVoKGYpLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrZS5uYW1lLG4sZi5hbHBoYVRlc3Q/IiNkZWZpbmUgQUxQSEFURVNUICIrZi5hbHBoYVRlc3QrKGYuYWxwaGFUZXN0JTE/IiI6Ii4wIik6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrdCxmLnVzZUZvZyYmZi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsZi51c2VGb2cmJmYuZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsZi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsZi5tYXRjYXA/IiNkZWZpbmUgVVNFX01BVENBUCI6IiIsZi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsZi5lbnZNYXA/IiNkZWZpbmUgIitxOiIiLGYuZW52TWFwPyIjZGVmaW5lICIrazoiIixmLmVudk1hcD8iI2RlZmluZSAiK3A6IiIsZi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLGYuYW9NYXA/CiIjZGVmaW5lIFVTRV9BT01BUCI6IiIsZi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLGYuYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsZi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsZi5ub3JtYWxNYXAmJmYub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixmLm5vcm1hbE1hcCYmZi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsZi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLGYuc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixmLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixmLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixmLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6CiIiLGYuc2hlZW4/IiNkZWZpbmUgVVNFX1NIRUVOIjoiIixmLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixmLnZlcnRleENvbG9ycz8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLGYudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsZi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsZi5ncmFkaWVudE1hcD8iI2RlZmluZSBVU0VfR1JBRElFTlRNQVAiOiIiLGYuZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLGYuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixmLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixmLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsZi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrcjoiIixmLnByZW11bHRpcGxpZWRBbHBoYT8iI2RlZmluZSBQUkVNVUxUSVBMSUVEX0FMUEhBIjoiIixmLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPwoiI2RlZmluZSBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIjoiIixmLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixmLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJihmLmlzV2ViR0wyfHxiLmdldCgiRVhUX2ZyYWdfZGVwdGgiKSk/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsKGQuZXh0ZW5zaW9ucyYmZC5leHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0R8fGYuZW52TWFwKSYmKGYuaXNXZWJHTDJ8fGIuZ2V0KCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIikpPyIjZGVmaW5lIFRFWFRVUkVfTE9EX0VYVCI6IiIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwwIT09Zi50b25lTWFwcGluZz8iI2RlZmluZSBUT05FX01BUFBJTkciOiIiLDAhPT1mLnRvbmVNYXBwaW5nP1MudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoKIiIsMCE9PWYudG9uZU1hcHBpbmc/UWooInRvbmVNYXBwaW5nIixmLnRvbmVNYXBwaW5nKToiIixmLmRpdGhlcmluZz8iI2RlZmluZSBESVRIRVJJTkciOiIiLGYub3V0cHV0RW5jb2Rpbmd8fGYubWFwRW5jb2Rpbmd8fGYubWF0Y2FwRW5jb2Rpbmd8fGYuZW52TWFwRW5jb2Rpbmd8fGYuZW1pc3NpdmVNYXBFbmNvZGluZz9TLmVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiIiLGYubWFwRW5jb2Rpbmc/R2UoIm1hcFRleGVsVG9MaW5lYXIiLGYubWFwRW5jb2RpbmcpOiIiLGYubWF0Y2FwRW5jb2Rpbmc/R2UoIm1hdGNhcFRleGVsVG9MaW5lYXIiLGYubWF0Y2FwRW5jb2RpbmcpOiIiLGYuZW52TWFwRW5jb2Rpbmc/R2UoImVudk1hcFRleGVsVG9MaW5lYXIiLGYuZW52TWFwRW5jb2RpbmcpOiIiLGYuZW1pc3NpdmVNYXBFbmNvZGluZz9HZSgiZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyIixmLmVtaXNzaXZlTWFwRW5jb2RpbmcpOiIiLGYub3V0cHV0RW5jb2Rpbmc/UGooImxpbmVhclRvT3V0cHV0VGV4ZWwiLApmLm91dHB1dEVuY29kaW5nKToiIixmLmRlcHRoUGFja2luZz8iI2RlZmluZSBERVBUSF9QQUNLSU5HICIrZC5kZXB0aFBhY2tpbmc6IiIsIlxuIl0uZmlsdGVyKEdkKS5qb2luKCJcbiIpKTtsPWwucmVwbGFjZShkZyxjZyk7bD1CaChsLGYpO2w9Q2gobCxmKTttPW0ucmVwbGFjZShkZyxjZyk7bT1CaChtLGYpO209Q2gobSxmKTtsPWwucmVwbGFjZShGaCxEaCk7bT1tLnJlcGxhY2UoRmgsRGgpO2YuaXNXZWJHTDImJiFkLmlzUmF3U2hhZGVyTWF0ZXJpYWwmJihyPSExLHE9L15ccyojdmVyc2lvblxzKzMwMFxzK2VzXHMqXG4vLGQuaXNTaGFkZXJNYXRlcmlhbCYmbnVsbCE9PWwubWF0Y2gocSkmJm51bGwhPT1tLm1hdGNoKHEpJiYocj0hMCxsPWwucmVwbGFjZShxLCIiKSxtPW0ucmVwbGFjZShxLCIiKSksaD0iI3ZlcnNpb24gMzAwIGVzXG5cbiNkZWZpbmUgYXR0cmlidXRlIGluXG4jZGVmaW5lIHZhcnlpbmcgb3V0XG4jZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlXG4iK2gsYj1bIiN2ZXJzaW9uIDMwMCBlc1xuXG4jZGVmaW5lIHZhcnlpbmcgaW4iLApyPyIiOiJvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7IixyPyIiOiIjZGVmaW5lIGdsX0ZyYWdDb2xvciBwY19mcmFnQ29sb3IiLCIjZGVmaW5lIGdsX0ZyYWdEZXB0aEVYVCBnbF9GcmFnRGVwdGhcbiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmVcbiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZVxuI2RlZmluZSB0ZXh0dXJlMkRQcm9qIHRleHR1cmVQcm9qXG4jZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kXG4jZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2RcbiNkZWZpbmUgdGV4dHVyZUN1YmVMb2RFWFQgdGV4dHVyZUxvZFxuI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkXG4jZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZFxuI2RlZmluZSB0ZXh0dXJlQ3ViZUdyYWRFWFQgdGV4dHVyZUdyYWQiXS5qb2luKCJcbiIpKyJcbiIrYiwwPHgmJihoPWgucmVwbGFjZSgiI3ZlcnNpb24gMzAwIGVzXG4iLApbIiN2ZXJzaW9uIDMwMCBlc1xuXG4jZXh0ZW5zaW9uIEdMX09WUl9tdWx0aXZpZXcyIDogcmVxdWlyZSIsImxheW91dChudW1fdmlld3MgPSAiK3grIikgaW47IiwiI2RlZmluZSBWSUVXX0lEIGdsX1ZpZXdJRF9PVlIiXS5qb2luKCJcbiIpKSxoPWgucmVwbGFjZSgidW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xudW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7XG51bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OyIsWyJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cmljZXNbIit4KyJdOyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cmljZXNbIit4KyJdOyIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cmljZXNbIit4KyJdOyIsInVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaWNlc1siK3grIl07IiwiI2RlZmluZSBtb2RlbFZpZXdNYXRyaXggbW9kZWxWaWV3TWF0cmljZXNbVklFV19JRF1cbiNkZWZpbmUgcHJvamVjdGlvbk1hdHJpeCBwcm9qZWN0aW9uTWF0cmljZXNbVklFV19JRF1cbiNkZWZpbmUgdmlld01hdHJpeCB2aWV3TWF0cmljZXNbVklFV19JRF1cbiNkZWZpbmUgbm9ybWFsTWF0cml4IG5vcm1hbE1hdHJpY2VzW1ZJRVdfSURdIl0uam9pbigiXG4iKSksCmI9Yi5yZXBsYWNlKCIjdmVyc2lvbiAzMDAgZXNcbiIsIiN2ZXJzaW9uIDMwMCBlc1xuXG4jZXh0ZW5zaW9uIEdMX09WUl9tdWx0aXZpZXcyIDogcmVxdWlyZVxuI2RlZmluZSBWSUVXX0lEIGdsX1ZpZXdJRF9PVlIiKSxiPWIucmVwbGFjZSgidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IixbInVuaWZvcm0gbWF0NCB2aWV3TWF0cmljZXNbIit4KyJdOyIsIiNkZWZpbmUgdmlld01hdHJpeCB2aWV3TWF0cmljZXNbVklFV19JRF0iXS5qb2luKCJcbiIpKSkpO209YittO2w9eWgoZywzNTYzMyxoK2wpO209eWgoZywzNTYzMixtKTtnLmF0dGFjaFNoYWRlcih3LGwpO2cuYXR0YWNoU2hhZGVyKHcsbSk7dm9pZCAwIT09ZC5pbmRleDBBdHRyaWJ1dGVOYW1lP2cuYmluZEF0dHJpYkxvY2F0aW9uKHcsMCxkLmluZGV4MEF0dHJpYnV0ZU5hbWUpOiEwPT09Zi5tb3JwaFRhcmdldHMmJmcuYmluZEF0dHJpYkxvY2F0aW9uKHcsMCwicG9zaXRpb24iKTtnLmxpbmtQcm9ncmFtKHcpO2lmKGEuZGVidWcuY2hlY2tTaGFkZXJFcnJvcnMpe2E9CmcuZ2V0UHJvZ3JhbUluZm9Mb2codykudHJpbSgpO2Y9Zy5nZXRTaGFkZXJJbmZvTG9nKGwpLnRyaW0oKTtyPWcuZ2V0U2hhZGVySW5mb0xvZyhtKS50cmltKCk7az1xPSEwO2lmKCExPT09Zy5nZXRQcm9ncmFtUGFyYW1ldGVyKHcsMzU3MTQpKXE9ITEscD1BaChnLGwsInZlcnRleCIpLHQ9QWgoZyxtLCJmcmFnbWVudCIpLGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUHJvZ3JhbTogc2hhZGVyIGVycm9yOiAiLGcuZ2V0RXJyb3IoKSwiMzU3MTUiLGcuZ2V0UHJvZ3JhbVBhcmFtZXRlcih3LDM1NzE1KSwiZ2wuZ2V0UHJvZ3JhbUluZm9Mb2ciLGEscCx0KTtlbHNlIGlmKCIiIT09YSljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogZ2wuZ2V0UHJvZ3JhbUluZm9Mb2coKSIsYSk7ZWxzZSBpZigiIj09PWZ8fCIiPT09cilrPSExO2smJih0aGlzLmRpYWdub3N0aWNzPXtydW5uYWJsZTpxLG1hdGVyaWFsOmQscHJvZ3JhbUxvZzphLHZlcnRleFNoYWRlcjp7bG9nOmYscHJlZml4Omh9LApmcmFnbWVudFNoYWRlcjp7bG9nOnIscHJlZml4OmJ9fSl9Zy5kZWxldGVTaGFkZXIobCk7Zy5kZWxldGVTaGFkZXIobSk7dmFyIEY7dGhpcy5nZXRVbmlmb3Jtcz1mdW5jdGlvbigpe3ZvaWQgMD09PUYmJihGPW5ldyBDYihnLHcpKTtyZXR1cm4gRn07dmFyIEk7dGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09SSl7Zm9yKHZhciBhPXt9LGI9Zy5nZXRQcm9ncmFtUGFyYW1ldGVyKHcsMzU3MjEpLGM9MDtjPGI7YysrKXt2YXIgZD1nLmdldEFjdGl2ZUF0dHJpYih3LGMpLm5hbWU7YVtkXT1nLmdldEF0dHJpYkxvY2F0aW9uKHcsZCl9ST1hfXJldHVybiBJfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtnLmRlbGV0ZVByb2dyYW0odyk7dGhpcy5wcm9ncmFtPXZvaWQgMH07dGhpcy5uYW1lPWUubmFtZTt0aGlzLmlkPVlqKys7dGhpcy5jYWNoZUtleT1jO3RoaXMudXNlZFRpbWVzPTE7dGhpcy5wcm9ncmFtPXc7dGhpcy52ZXJ0ZXhTaGFkZXI9bDt0aGlzLmZyYWdtZW50U2hhZGVyPQptO3RoaXMubnVtTXVsdGl2aWV3Vmlld3M9eDtyZXR1cm4gdGhpc31mdW5jdGlvbiBaaihhLGIsYyl7ZnVuY3Rpb24gZChhLGIpe2lmKGEpYS5pc1RleHR1cmU/Yz1hLmVuY29kaW5nOmEuaXNXZWJHTFJlbmRlclRhcmdldCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtcy5nZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLGM9YS50ZXh0dXJlLmVuY29kaW5nKTtlbHNlIHZhciBjPTNFMzszRTM9PT1jJiZiJiYoYz0zMDA3KTtyZXR1cm4gY312YXIgZT1bXSxmPWMuaXNXZWJHTDIsZz1jLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsaD1jLmZsb2F0VmVydGV4VGV4dHVyZXMsbD1jLnByZWNpc2lvbixtPWMubWF4VmVydGV4VW5pZm9ybXMscj1jLnZlcnRleFRleHR1cmVzLHE9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsCk1lc2hOb3JtYWxNYXRlcmlhbDoibm9ybWFsIixNZXNoQmFzaWNNYXRlcmlhbDoiYmFzaWMiLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6ImxhbWJlcnQiLE1lc2hQaG9uZ01hdGVyaWFsOiJwaG9uZyIsTWVzaFRvb25NYXRlcmlhbDoicGhvbmciLE1lc2hTdGFuZGFyZE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoTWF0Y2FwTWF0ZXJpYWw6Im1hdGNhcCIsTGluZUJhc2ljTWF0ZXJpYWw6ImJhc2ljIixMaW5lRGFzaGVkTWF0ZXJpYWw6ImRhc2hlZCIsUG9pbnRzTWF0ZXJpYWw6InBvaW50cyIsU2hhZG93TWF0ZXJpYWw6InNoYWRvdyIsU3ByaXRlTWF0ZXJpYWw6InNwcml0ZSJ9LGs9InByZWNpc2lvbiBpc1dlYkdMMiBzdXBwb3J0c1ZlcnRleFRleHR1cmVzIG91dHB1dEVuY29kaW5nIGluc3RhbmNpbmcgbnVtTXVsdGl2aWV3Vmlld3MgbWFwIG1hcEVuY29kaW5nIG1hdGNhcCBtYXRjYXBFbmNvZGluZyBlbnZNYXAgZW52TWFwTW9kZSBlbnZNYXBFbmNvZGluZyBlbnZNYXBDdWJlVVYgbGlnaHRNYXAgYW9NYXAgZW1pc3NpdmVNYXAgZW1pc3NpdmVNYXBFbmNvZGluZyBidW1wTWFwIG5vcm1hbE1hcCBvYmplY3RTcGFjZU5vcm1hbE1hcCB0YW5nZW50U3BhY2VOb3JtYWxNYXAgY2xlYXJjb2F0Tm9ybWFsTWFwIGRpc3BsYWNlbWVudE1hcCBzcGVjdWxhck1hcCByb3VnaG5lc3NNYXAgbWV0YWxuZXNzTWFwIGdyYWRpZW50TWFwIGFscGhhTWFwIGNvbWJpbmUgdmVydGV4Q29sb3JzIHZlcnRleFRhbmdlbnRzIHZlcnRleFV2cyB1dnNWZXJ0ZXhPbmx5IGZvZyB1c2VGb2cgZm9nRXhwMiBmbGF0U2hhZGluZyBzaXplQXR0ZW51YXRpb24gbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciBza2lubmluZyBtYXhCb25lcyB1c2VWZXJ0ZXhUZXh0dXJlIG1vcnBoVGFyZ2V0cyBtb3JwaE5vcm1hbHMgbWF4TW9ycGhUYXJnZXRzIG1heE1vcnBoTm9ybWFscyBwcmVtdWx0aXBsaWVkQWxwaGEgbnVtRGlyTGlnaHRzIG51bVBvaW50TGlnaHRzIG51bVNwb3RMaWdodHMgbnVtSGVtaUxpZ2h0cyBudW1SZWN0QXJlYUxpZ2h0cyBudW1EaXJMaWdodFNoYWRvd3MgbnVtUG9pbnRMaWdodFNoYWRvd3MgbnVtU3BvdExpZ2h0U2hhZG93cyBzaGFkb3dNYXBFbmFibGVkIHNoYWRvd01hcFR5cGUgdG9uZU1hcHBpbmcgcGh5c2ljYWxseUNvcnJlY3RMaWdodHMgYWxwaGFUZXN0IGRvdWJsZVNpZGVkIGZsaXBTaWRlZCBudW1DbGlwcGluZ1BsYW5lcyBudW1DbGlwSW50ZXJzZWN0aW9uIGRlcHRoUGFja2luZyBkaXRoZXJpbmcgc2hlZW4iLnNwbGl0KCIgIik7CnRoaXMuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbihiLGUsayx1LG4seCxGKXt2YXIgdD1xW2IudHlwZV07aWYoRi5pc1NraW5uZWRNZXNoKXt2YXIgcD1GLnNrZWxldG9uLmJvbmVzO2lmKGgpcD0xMDI0O2Vsc2V7dmFyIHY9TWF0aC5taW4oTWF0aC5mbG9vcigobS0yMCkvNCkscC5sZW5ndGgpO3Y8cC5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrcC5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIit2KyIuIikscD0wKTpwPXZ9fWVsc2UgcD0wO251bGwhPT1iLnByZWNpc2lvbiYmKGw9Yy5nZXRNYXhQcmVjaXNpb24oYi5wcmVjaXNpb24pLGwhPT1iLnByZWNpc2lvbiYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW0uZ2V0UGFyYW1ldGVyczoiLGIucHJlY2lzaW9uLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIsbCwiaW5zdGVhZC4iKSk7dj1hLmdldFJlbmRlclRhcmdldCgpO3JldHVybntpc1dlYkdMMjpmLApzaGFkZXJJRDp0LHByZWNpc2lvbjpsLGluc3RhbmNpbmc6ITA9PT1GLmlzSW5zdGFuY2VkTWVzaCxzdXBwb3J0c1ZlcnRleFRleHR1cmVzOnIsbnVtTXVsdGl2aWV3Vmlld3M6diYmdi5pc1dlYkdMTXVsdGl2aWV3UmVuZGVyVGFyZ2V0P3YubnVtVmlld3M6MCxvdXRwdXRFbmNvZGluZzpkKHY/di50ZXh0dXJlOm51bGwsYS5nYW1tYU91dHB1dCksbWFwOiEhYi5tYXAsbWFwRW5jb2Rpbmc6ZChiLm1hcCxhLmdhbW1hSW5wdXQpLG1hdGNhcDohIWIubWF0Y2FwLG1hdGNhcEVuY29kaW5nOmQoYi5tYXRjYXAsYS5nYW1tYUlucHV0KSxlbnZNYXA6ISFiLmVudk1hcCxlbnZNYXBNb2RlOmIuZW52TWFwJiZiLmVudk1hcC5tYXBwaW5nLGVudk1hcEVuY29kaW5nOmQoYi5lbnZNYXAsYS5nYW1tYUlucHV0KSxlbnZNYXBDdWJlVVY6ISFiLmVudk1hcCYmKDMwNj09PWIuZW52TWFwLm1hcHBpbmd8fDMwNz09PWIuZW52TWFwLm1hcHBpbmcpLGxpZ2h0TWFwOiEhYi5saWdodE1hcCxhb01hcDohIWIuYW9NYXAsCmVtaXNzaXZlTWFwOiEhYi5lbWlzc2l2ZU1hcCxlbWlzc2l2ZU1hcEVuY29kaW5nOmQoYi5lbWlzc2l2ZU1hcCxhLmdhbW1hSW5wdXQpLGJ1bXBNYXA6ISFiLmJ1bXBNYXAsbm9ybWFsTWFwOiEhYi5ub3JtYWxNYXAsb2JqZWN0U3BhY2VOb3JtYWxNYXA6MT09PWIubm9ybWFsTWFwVHlwZSx0YW5nZW50U3BhY2VOb3JtYWxNYXA6MD09PWIubm9ybWFsTWFwVHlwZSxjbGVhcmNvYXROb3JtYWxNYXA6ISFiLmNsZWFyY29hdE5vcm1hbE1hcCxkaXNwbGFjZW1lbnRNYXA6ISFiLmRpc3BsYWNlbWVudE1hcCxyb3VnaG5lc3NNYXA6ISFiLnJvdWdobmVzc01hcCxtZXRhbG5lc3NNYXA6ISFiLm1ldGFsbmVzc01hcCxzcGVjdWxhck1hcDohIWIuc3BlY3VsYXJNYXAsYWxwaGFNYXA6ISFiLmFscGhhTWFwLGdyYWRpZW50TWFwOiEhYi5ncmFkaWVudE1hcCxzaGVlbjohIWIuc2hlZW4sY29tYmluZTpiLmNvbWJpbmUsdmVydGV4VGFuZ2VudHM6Yi5ub3JtYWxNYXAmJmIudmVydGV4VGFuZ2VudHMsdmVydGV4Q29sb3JzOmIudmVydGV4Q29sb3JzLAp2ZXJ0ZXhVdnM6ISFiLm1hcHx8ISFiLmJ1bXBNYXB8fCEhYi5ub3JtYWxNYXB8fCEhYi5zcGVjdWxhck1hcHx8ISFiLmFscGhhTWFwfHwhIWIuZW1pc3NpdmVNYXB8fCEhYi5yb3VnaG5lc3NNYXB8fCEhYi5tZXRhbG5lc3NNYXB8fCEhYi5jbGVhcmNvYXROb3JtYWxNYXB8fCEhYi5kaXNwbGFjZW1lbnRNYXAsdXZzVmVydGV4T25seTohKGIubWFwfHxiLmJ1bXBNYXB8fGIubm9ybWFsTWFwfHxiLnNwZWN1bGFyTWFwfHxiLmFscGhhTWFwfHxiLmVtaXNzaXZlTWFwfHxiLnJvdWdobmVzc01hcHx8Yi5tZXRhbG5lc3NNYXB8fGIuY2xlYXJjb2F0Tm9ybWFsTWFwKSYmISFiLmRpc3BsYWNlbWVudE1hcCxmb2c6ISF1LHVzZUZvZzpiLmZvZyxmb2dFeHAyOnUmJnUuaXNGb2dFeHAyLGZsYXRTaGFkaW5nOmIuZmxhdFNoYWRpbmcsc2l6ZUF0dGVudWF0aW9uOmIuc2l6ZUF0dGVudWF0aW9uLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6Zyxza2lubmluZzpiLnNraW5uaW5nJiYwPHAsbWF4Qm9uZXM6cCwKdXNlVmVydGV4VGV4dHVyZTpoLG1vcnBoVGFyZ2V0czpiLm1vcnBoVGFyZ2V0cyxtb3JwaE5vcm1hbHM6Yi5tb3JwaE5vcm1hbHMsbWF4TW9ycGhUYXJnZXRzOmEubWF4TW9ycGhUYXJnZXRzLG1heE1vcnBoTm9ybWFsczphLm1heE1vcnBoTm9ybWFscyxudW1EaXJMaWdodHM6ZS5kaXJlY3Rpb25hbC5sZW5ndGgsbnVtUG9pbnRMaWdodHM6ZS5wb2ludC5sZW5ndGgsbnVtU3BvdExpZ2h0czplLnNwb3QubGVuZ3RoLG51bVJlY3RBcmVhTGlnaHRzOmUucmVjdEFyZWEubGVuZ3RoLG51bUhlbWlMaWdodHM6ZS5oZW1pLmxlbmd0aCxudW1EaXJMaWdodFNoYWRvd3M6ZS5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGgsbnVtUG9pbnRMaWdodFNoYWRvd3M6ZS5wb2ludFNoYWRvd01hcC5sZW5ndGgsbnVtU3BvdExpZ2h0U2hhZG93czplLnNwb3RTaGFkb3dNYXAubGVuZ3RoLG51bUNsaXBwaW5nUGxhbmVzOm4sbnVtQ2xpcEludGVyc2VjdGlvbjp4LGRpdGhlcmluZzpiLmRpdGhlcmluZyxzaGFkb3dNYXBFbmFibGVkOmEuc2hhZG93TWFwLmVuYWJsZWQmJgowPGsubGVuZ3RoLHNoYWRvd01hcFR5cGU6YS5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzpiLnRvbmVNYXBwZWQ/YS50b25lTWFwcGluZzowLHBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzOmEucGh5c2ljYWxseUNvcnJlY3RMaWdodHMscHJlbXVsdGlwbGllZEFscGhhOmIucHJlbXVsdGlwbGllZEFscGhhLGFscGhhVGVzdDpiLmFscGhhVGVzdCxkb3VibGVTaWRlZDoyPT09Yi5zaWRlLGZsaXBTaWRlZDoxPT09Yi5zaWRlLGRlcHRoUGFja2luZzp2b2lkIDAhPT1iLmRlcHRoUGFja2luZz9iLmRlcHRoUGFja2luZzohMX19O3RoaXMuZ2V0UHJvZ3JhbUNhY2hlS2V5PWZ1bmN0aW9uKGIsYyl7dmFyIGQ9W107Yy5zaGFkZXJJRD9kLnB1c2goYy5zaGFkZXJJRCk6KGQucHVzaChiLmZyYWdtZW50U2hhZGVyKSxkLnB1c2goYi52ZXJ0ZXhTaGFkZXIpKTtpZih2b2lkIDAhPT1iLmRlZmluZXMpZm9yKHZhciBlIGluIGIuZGVmaW5lcylkLnB1c2goZSksZC5wdXNoKGIuZGVmaW5lc1tlXSk7Zm9yKGU9CjA7ZTxrLmxlbmd0aDtlKyspZC5wdXNoKGNba1tlXV0pO2QucHVzaChiLm9uQmVmb3JlQ29tcGlsZS50b1N0cmluZygpKTtkLnB1c2goYS5nYW1tYU91dHB1dCk7ZC5wdXNoKGEuZ2FtbWFGYWN0b3IpO3JldHVybiBkLmpvaW4oKX07dGhpcy5hY3F1aXJlUHJvZ3JhbT1mdW5jdGlvbihjLGQsZixnKXtmb3IodmFyIGgsbD0wLG09ZS5sZW5ndGg7bDxtO2wrKyl7dmFyIHI9ZVtsXTtpZihyLmNhY2hlS2V5PT09Zyl7aD1yOysraC51c2VkVGltZXM7YnJlYWt9fXZvaWQgMD09PWgmJihoPW5ldyBYaihhLGIsZyxjLGQsZiksZS5wdXNoKGgpKTtyZXR1cm4gaH07dGhpcy5yZWxlYXNlUHJvZ3JhbT1mdW5jdGlvbihhKXtpZigwPT09LS1hLnVzZWRUaW1lcyl7dmFyIGI9ZS5pbmRleE9mKGEpO2VbYl09ZVtlLmxlbmd0aC0xXTtlLnBvcCgpO2EuZGVzdHJveSgpfX07dGhpcy5wcm9ncmFtcz1lfWZ1bmN0aW9uIGFrKCl7dmFyIGE9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbihiKXt2YXIgYz0KYS5nZXQoYik7dm9pZCAwPT09YyYmKGM9e30sYS5zZXQoYixjKSk7cmV0dXJuIGN9LHJlbW92ZTpmdW5jdGlvbihiKXthLmRlbGV0ZShiKX0sdXBkYXRlOmZ1bmN0aW9uKGIsYyxkKXthLmdldChiKVtjXT1kfSxkaXNwb3NlOmZ1bmN0aW9uKCl7YT1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIGJrKGEsYil7cmV0dXJuIGEuZ3JvdXBPcmRlciE9PWIuZ3JvdXBPcmRlcj9hLmdyb3VwT3JkZXItYi5ncm91cE9yZGVyOmEucmVuZGVyT3JkZXIhPT1iLnJlbmRlck9yZGVyP2EucmVuZGVyT3JkZXItYi5yZW5kZXJPcmRlcjphLnByb2dyYW0hPT1iLnByb2dyYW0/YS5wcm9ncmFtLmlkLWIucHJvZ3JhbS5pZDphLm1hdGVyaWFsLmlkIT09Yi5tYXRlcmlhbC5pZD9hLm1hdGVyaWFsLmlkLWIubWF0ZXJpYWwuaWQ6YS56IT09Yi56P2Euei1iLno6YS5pZC1iLmlkfWZ1bmN0aW9uIGNrKGEsYil7cmV0dXJuIGEuZ3JvdXBPcmRlciE9PWIuZ3JvdXBPcmRlcj9hLmdyb3VwT3JkZXItYi5ncm91cE9yZGVyOgphLnJlbmRlck9yZGVyIT09Yi5yZW5kZXJPcmRlcj9hLnJlbmRlck9yZGVyLWIucmVuZGVyT3JkZXI6YS56IT09Yi56P2Iuei1hLno6YS5pZC1iLmlkfWZ1bmN0aW9uIEdoKCl7ZnVuY3Rpb24gYShhLGQsZSxtLHIscSl7dmFyIGc9YltjXTt2b2lkIDA9PT1nPyhnPXtpZDphLmlkLG9iamVjdDphLGdlb21ldHJ5OmQsbWF0ZXJpYWw6ZSxwcm9ncmFtOmUucHJvZ3JhbXx8Zixncm91cE9yZGVyOm0scmVuZGVyT3JkZXI6YS5yZW5kZXJPcmRlcix6OnIsZ3JvdXA6cX0sYltjXT1nKTooZy5pZD1hLmlkLGcub2JqZWN0PWEsZy5nZW9tZXRyeT1kLGcubWF0ZXJpYWw9ZSxnLnByb2dyYW09ZS5wcm9ncmFtfHxmLGcuZ3JvdXBPcmRlcj1tLGcucmVuZGVyT3JkZXI9YS5yZW5kZXJPcmRlcixnLno9cixnLmdyb3VwPXEpO2MrKztyZXR1cm4gZ312YXIgYj1bXSxjPTAsZD1bXSxlPVtdLGY9e2lkOi0xfTtyZXR1cm57b3BhcXVlOmQsdHJhbnNwYXJlbnQ6ZSxpbml0OmZ1bmN0aW9uKCl7Yz0wO2QubGVuZ3RoPQowO2UubGVuZ3RoPTB9LHB1c2g6ZnVuY3Rpb24oYixjLGYsbSxyLHEpe2I9YShiLGMsZixtLHIscSk7KCEwPT09Zi50cmFuc3BhcmVudD9lOmQpLnB1c2goYil9LHVuc2hpZnQ6ZnVuY3Rpb24oYixjLGYsbSxyLHEpe2I9YShiLGMsZixtLHIscSk7KCEwPT09Zi50cmFuc3BhcmVudD9lOmQpLnVuc2hpZnQoYil9LHNvcnQ6ZnVuY3Rpb24oKXsxPGQubGVuZ3RoJiZkLnNvcnQoYmspOzE8ZS5sZW5ndGgmJmUuc29ydChjayl9fX1mdW5jdGlvbiBkaygpe2Z1bmN0aW9uIGEoYyl7Yz1jLnRhcmdldDtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpO2IuZGVsZXRlKGMpfXZhciBiPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24oYyxkKXt2YXIgZT1iLmdldChjKTtpZih2b2lkIDA9PT1lKXt2YXIgZj1uZXcgR2g7Yi5zZXQoYyxuZXcgV2Vha01hcCk7Yi5nZXQoYykuc2V0KGQsZik7Yy5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixhKX1lbHNlIGY9ZS5nZXQoZCksdm9pZCAwPT09CmYmJihmPW5ldyBHaCxlLnNldChkLGYpKTtyZXR1cm4gZn0sZGlzcG9zZTpmdW5jdGlvbigpe2I9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBlaygpe3ZhciBhPXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oYil7aWYodm9pZCAwIT09YVtiLmlkXSlyZXR1cm4gYVtiLmlkXTtzd2l0Y2goYi50eXBlKXtjYXNlICJEaXJlY3Rpb25hbExpZ2h0Ijp2YXIgYz17ZGlyZWN0aW9uOm5ldyBuLGNvbG9yOm5ldyBKLHNoYWRvdzohMSxzaGFkb3dCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgQn07YnJlYWs7Y2FzZSAiU3BvdExpZ2h0IjpjPXtwb3NpdGlvbjpuZXcgbixkaXJlY3Rpb246bmV3IG4sY29sb3I6bmV3IEosZGlzdGFuY2U6MCxjb25lQ29zOjAscGVudW1icmFDb3M6MCxkZWNheTowLHNoYWRvdzohMSxzaGFkb3dCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgQn07YnJlYWs7Y2FzZSAiUG9pbnRMaWdodCI6Yz17cG9zaXRpb246bmV3IG4sY29sb3I6bmV3IEosCmRpc3RhbmNlOjAsZGVjYXk6MCxzaGFkb3c6ITEsc2hhZG93QmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEIsc2hhZG93Q2FtZXJhTmVhcjoxLHNoYWRvd0NhbWVyYUZhcjoxRTN9O2JyZWFrO2Nhc2UgIkhlbWlzcGhlcmVMaWdodCI6Yz17ZGlyZWN0aW9uOm5ldyBuLHNreUNvbG9yOm5ldyBKLGdyb3VuZENvbG9yOm5ldyBKfTticmVhaztjYXNlICJSZWN0QXJlYUxpZ2h0IjpjPXtjb2xvcjpuZXcgSixwb3NpdGlvbjpuZXcgbixoYWxmV2lkdGg6bmV3IG4saGFsZkhlaWdodDpuZXcgbn19cmV0dXJuIGFbYi5pZF09Y319fWZ1bmN0aW9uIGZrKGEsYil7cmV0dXJuKGIuY2FzdFNoYWRvdz8xOjApLShhLmNhc3RTaGFkb3c/MTowKX1mdW5jdGlvbiBnaygpe2Zvcih2YXIgYT1uZXcgZWssYj17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSwKbnVtRGlyZWN0aW9uYWxTaGFkb3dzOi0xLG51bVBvaW50U2hhZG93czotMSxudW1TcG90U2hhZG93czotMX0sYW1iaWVudDpbMCwwLDBdLHByb2JlOltdLGRpcmVjdGlvbmFsOltdLGRpcmVjdGlvbmFsU2hhZG93TWFwOltdLGRpcmVjdGlvbmFsU2hhZG93TWF0cml4OltdLHNwb3Q6W10sc3BvdFNoYWRvd01hcDpbXSxzcG90U2hhZG93TWF0cml4OltdLHJlY3RBcmVhOltdLHBvaW50OltdLHBvaW50U2hhZG93TWFwOltdLHBvaW50U2hhZG93TWF0cml4OltdLGhlbWk6W10sbnVtRGlyZWN0aW9uYWxTaGFkb3dzOi0xLG51bVBvaW50U2hhZG93czotMSxudW1TcG90U2hhZG93czotMX0sYz0wOzk+YztjKyspYi5wcm9iZS5wdXNoKG5ldyBuKTt2YXIgZD1uZXcgbixlPW5ldyBRLGY9bmV3IFE7cmV0dXJue3NldHVwOmZ1bmN0aW9uKGMsaCxsKXtmb3IodmFyIGc9MCxyPTAscT0wLGs9MDs5Pms7aysrKWIucHJvYmVba10uc2V0KDAsMCwwKTt2YXIgcD1oPTAsdD0wLHY9MCxuPTAsdz0wLHg9CjAsRj0wO2w9bC5tYXRyaXhXb3JsZEludmVyc2U7Yy5zb3J0KGZrKTtrPTA7Zm9yKHZhciBJPWMubGVuZ3RoO2s8STtrKyspe3ZhciB6PWNba10sQ2E9ei5jb2xvcixpYT16LmludGVuc2l0eSxCPXouZGlzdGFuY2UsbGE9ei5zaGFkb3cmJnouc2hhZG93Lm1hcD96LnNoYWRvdy5tYXAudGV4dHVyZTpudWxsO2lmKHouaXNBbWJpZW50TGlnaHQpZys9Q2EucippYSxyKz1DYS5nKmlhLHErPUNhLmIqaWE7ZWxzZSBpZih6LmlzTGlnaHRQcm9iZSlmb3IobGE9MDs5PmxhO2xhKyspYi5wcm9iZVtsYV0uYWRkU2NhbGVkVmVjdG9yKHouc2guY29lZmZpY2llbnRzW2xhXSxpYSk7ZWxzZSBpZih6LmlzRGlyZWN0aW9uYWxMaWdodCl7dmFyIEg9YS5nZXQoeik7SC5jb2xvci5jb3B5KHouY29sb3IpLm11bHRpcGx5U2NhbGFyKHouaW50ZW5zaXR5KTtILmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oei5tYXRyaXhXb3JsZCk7ZC5zZXRGcm9tTWF0cml4UG9zaXRpb24oei50YXJnZXQubWF0cml4V29ybGQpOwpILmRpcmVjdGlvbi5zdWIoZCk7SC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGwpO2lmKEguc2hhZG93PXouY2FzdFNoYWRvdylpYT16LnNoYWRvdyxILnNoYWRvd0JpYXM9aWEuYmlhcyxILnNoYWRvd1JhZGl1cz1pYS5yYWRpdXMsSC5zaGFkb3dNYXBTaXplPWlhLm1hcFNpemUsYi5kaXJlY3Rpb25hbFNoYWRvd01hcFtoXT1sYSxiLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4W2hdPXouc2hhZG93Lm1hdHJpeCx3Kys7Yi5kaXJlY3Rpb25hbFtoXT1IO2grK31lbHNlIGlmKHouaXNTcG90TGlnaHQpe0g9YS5nZXQoeik7SC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oei5tYXRyaXhXb3JsZCk7SC5wb3NpdGlvbi5hcHBseU1hdHJpeDQobCk7SC5jb2xvci5jb3B5KENhKS5tdWx0aXBseVNjYWxhcihpYSk7SC5kaXN0YW5jZT1CO0guZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbih6Lm1hdHJpeFdvcmxkKTtkLnNldEZyb21NYXRyaXhQb3NpdGlvbih6LnRhcmdldC5tYXRyaXhXb3JsZCk7CkguZGlyZWN0aW9uLnN1YihkKTtILmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24obCk7SC5jb25lQ29zPU1hdGguY29zKHouYW5nbGUpO0gucGVudW1icmFDb3M9TWF0aC5jb3Moei5hbmdsZSooMS16LnBlbnVtYnJhKSk7SC5kZWNheT16LmRlY2F5O2lmKEguc2hhZG93PXouY2FzdFNoYWRvdylpYT16LnNoYWRvdyxILnNoYWRvd0JpYXM9aWEuYmlhcyxILnNoYWRvd1JhZGl1cz1pYS5yYWRpdXMsSC5zaGFkb3dNYXBTaXplPWlhLm1hcFNpemUsYi5zcG90U2hhZG93TWFwW3RdPWxhLGIuc3BvdFNoYWRvd01hdHJpeFt0XT16LnNoYWRvdy5tYXRyaXgsRisrO2Iuc3BvdFt0XT1IO3QrK31lbHNlIGlmKHouaXNSZWN0QXJlYUxpZ2h0KUg9YS5nZXQoeiksSC5jb2xvci5jb3B5KENhKS5tdWx0aXBseVNjYWxhcihpYSksSC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oei5tYXRyaXhXb3JsZCksSC5wb3NpdGlvbi5hcHBseU1hdHJpeDQobCksZi5pZGVudGl0eSgpLGUuY29weSh6Lm1hdHJpeFdvcmxkKSwKZS5wcmVtdWx0aXBseShsKSxmLmV4dHJhY3RSb3RhdGlvbihlKSxILmhhbGZXaWR0aC5zZXQoLjUqei53aWR0aCwwLDApLEguaGFsZkhlaWdodC5zZXQoMCwuNSp6LmhlaWdodCwwKSxILmhhbGZXaWR0aC5hcHBseU1hdHJpeDQoZiksSC5oYWxmSGVpZ2h0LmFwcGx5TWF0cml4NChmKSxiLnJlY3RBcmVhW3ZdPUgsdisrO2Vsc2UgaWYoei5pc1BvaW50TGlnaHQpe0g9YS5nZXQoeik7SC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oei5tYXRyaXhXb3JsZCk7SC5wb3NpdGlvbi5hcHBseU1hdHJpeDQobCk7SC5jb2xvci5jb3B5KHouY29sb3IpLm11bHRpcGx5U2NhbGFyKHouaW50ZW5zaXR5KTtILmRpc3RhbmNlPXouZGlzdGFuY2U7SC5kZWNheT16LmRlY2F5O2lmKEguc2hhZG93PXouY2FzdFNoYWRvdylpYT16LnNoYWRvdyxILnNoYWRvd0JpYXM9aWEuYmlhcyxILnNoYWRvd1JhZGl1cz1pYS5yYWRpdXMsSC5zaGFkb3dNYXBTaXplPWlhLm1hcFNpemUsSC5zaGFkb3dDYW1lcmFOZWFyPQppYS5jYW1lcmEubmVhcixILnNoYWRvd0NhbWVyYUZhcj1pYS5jYW1lcmEuZmFyLGIucG9pbnRTaGFkb3dNYXBbcF09bGEsYi5wb2ludFNoYWRvd01hdHJpeFtwXT16LnNoYWRvdy5tYXRyaXgseCsrO2IucG9pbnRbcF09SDtwKyt9ZWxzZSB6LmlzSGVtaXNwaGVyZUxpZ2h0JiYoSD1hLmdldCh6KSxILmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oei5tYXRyaXhXb3JsZCksSC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGwpLEguZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLEguc2t5Q29sb3IuY29weSh6LmNvbG9yKS5tdWx0aXBseVNjYWxhcihpYSksSC5ncm91bmRDb2xvci5jb3B5KHouZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKGlhKSxiLmhlbWlbbl09SCxuKyspfWIuYW1iaWVudFswXT1nO2IuYW1iaWVudFsxXT1yO2IuYW1iaWVudFsyXT1xO2M9Yi5oYXNoO2lmKGMuZGlyZWN0aW9uYWxMZW5ndGghPT1ofHxjLnBvaW50TGVuZ3RoIT09cHx8Yy5zcG90TGVuZ3RoIT09CnR8fGMucmVjdEFyZWFMZW5ndGghPT12fHxjLmhlbWlMZW5ndGghPT1ufHxjLm51bURpcmVjdGlvbmFsU2hhZG93cyE9PXd8fGMubnVtUG9pbnRTaGFkb3dzIT09eHx8Yy5udW1TcG90U2hhZG93cyE9PUYpYi5kaXJlY3Rpb25hbC5sZW5ndGg9aCxiLnNwb3QubGVuZ3RoPXQsYi5yZWN0QXJlYS5sZW5ndGg9dixiLnBvaW50Lmxlbmd0aD1wLGIuaGVtaS5sZW5ndGg9bixiLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aD13LGIucG9pbnRTaGFkb3dNYXAubGVuZ3RoPXgsYi5zcG90U2hhZG93TWFwLmxlbmd0aD1GLGIuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPXcsYi5wb2ludFNoYWRvd01hdHJpeC5sZW5ndGg9eCxiLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPUYsYy5kaXJlY3Rpb25hbExlbmd0aD1oLGMucG9pbnRMZW5ndGg9cCxjLnNwb3RMZW5ndGg9dCxjLnJlY3RBcmVhTGVuZ3RoPXYsYy5oZW1pTGVuZ3RoPW4sYy5udW1EaXJlY3Rpb25hbFNoYWRvd3M9dyxjLm51bVBvaW50U2hhZG93cz0KeCxjLm51bVNwb3RTaGFkb3dzPUYsYi52ZXJzaW9uPWhrKyt9LHN0YXRlOmJ9fWZ1bmN0aW9uIEhoKCl7dmFyIGE9bmV3IGdrLGI9W10sYz1bXTtyZXR1cm57aW5pdDpmdW5jdGlvbigpe2IubGVuZ3RoPTA7Yy5sZW5ndGg9MH0sc3RhdGU6e2xpZ2h0c0FycmF5OmIsc2hhZG93c0FycmF5OmMsbGlnaHRzOmF9LHNldHVwTGlnaHRzOmZ1bmN0aW9uKGQpe2Euc2V0dXAoYixjLGQpfSxwdXNoTGlnaHQ6ZnVuY3Rpb24oYSl7Yi5wdXNoKGEpfSxwdXNoU2hhZG93OmZ1bmN0aW9uKGEpe2MucHVzaChhKX19fWZ1bmN0aW9uIGlrKCl7ZnVuY3Rpb24gYShjKXtjPWMudGFyZ2V0O2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSk7Yi5kZWxldGUoYyl9dmFyIGI9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbihjLGQpe2lmKCExPT09Yi5oYXMoYykpe3ZhciBlPW5ldyBIaDtiLnNldChjLG5ldyBXZWFrTWFwKTtiLmdldChjKS5zZXQoZCxlKTtjLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLAphKX1lbHNlITE9PT1iLmdldChjKS5oYXMoZCk/KGU9bmV3IEhoLGIuZ2V0KGMpLnNldChkLGUpKTplPWIuZ2V0KGMpLmdldChkKTtyZXR1cm4gZX0sZGlzcG9zZTpmdW5jdGlvbigpe2I9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBEYihhKXtPLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoRGVwdGhNYXRlcmlhbCI7dGhpcy5kZXB0aFBhY2tpbmc9MzIwMDt0aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPSExO3RoaXMuZGlzcGxhY2VtZW50TWFwPXRoaXMuYWxwaGFNYXA9dGhpcy5tYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLmZvZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBFYihhKXtPLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCI7dGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgbjt0aGlzLm5lYXJEaXN0YW5jZT0KMTt0aGlzLmZhckRpc3RhbmNlPTFFMzt0aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPSExO3RoaXMuZGlzcGxhY2VtZW50TWFwPXRoaXMuYWxwaGFNYXA9dGhpcy5tYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy5mb2c9ITE7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gSWgoYSxiLGMpe2Z1bmN0aW9uIGQoYSxiLGMpe2M9YTw8MHxiPDwxfGM8PDI7dmFyIGQ9cVtjXTt2b2lkIDA9PT1kJiYoZD1uZXcgRGIoe2RlcHRoUGFja2luZzozMjAxLG1vcnBoVGFyZ2V0czphLHNraW5uaW5nOmJ9KSxxW2NdPWQpO3JldHVybiBkfWZ1bmN0aW9uIGUoYSxiLGMpe2M9YTw8MHxiPDwxfGM8PDI7dmFyIGQ9a1tjXTt2b2lkIDA9PT1kJiYoZD1uZXcgRWIoe21vcnBoVGFyZ2V0czphLHNraW5uaW5nOmJ9KSxrW2NdPWQpO3JldHVybiBkfWZ1bmN0aW9uIGYoYixjLGYsZyxoLGwpe3ZhciBtPWIuZ2VvbWV0cnkscj1kLHE9Yi5jdXN0b21EZXB0aE1hdGVyaWFsOwohMD09PWYuaXNQb2ludExpZ2h0JiYocj1lLHE9Yi5jdXN0b21EaXN0YW5jZU1hdGVyaWFsKTt2b2lkIDA9PT1xPyhxPSExLCEwPT09Yy5tb3JwaFRhcmdldHMmJighMD09PW0uaXNCdWZmZXJHZW9tZXRyeT9xPW0ubW9ycGhBdHRyaWJ1dGVzJiZtLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiYmMDxtLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg6ITA9PT1tLmlzR2VvbWV0cnkmJihxPW0ubW9ycGhUYXJnZXRzJiYwPG0ubW9ycGhUYXJnZXRzLmxlbmd0aCkpLG09ITEsITA9PT1iLmlzU2tpbm5lZE1lc2gmJighMD09PWMuc2tpbm5pbmc/bT0hMDpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiBUSFJFRS5Ta2lubmVkTWVzaCB3aXRoIG1hdGVyaWFsLnNraW5uaW5nIHNldCB0byBmYWxzZToiLGIpKSxiPXIocSxtLCEwPT09Yi5pc0luc3RhbmNlZE1lc2gpKTpiPXE7YS5sb2NhbENsaXBwaW5nRW5hYmxlZCYmITA9PT1jLmNsaXBTaGFkb3dzJiYwIT09Yy5jbGlwcGluZ1BsYW5lcy5sZW5ndGgmJgoocT1iLnV1aWQscj1jLnV1aWQsbT1wW3FdLHZvaWQgMD09PW0mJihtPXt9LHBbcV09bSkscT1tW3JdLHZvaWQgMD09PXEmJihxPWIuY2xvbmUoKSxtW3JdPXEpLGI9cSk7Yi52aXNpYmxlPWMudmlzaWJsZTtiLndpcmVmcmFtZT1jLndpcmVmcmFtZTtiLnNpZGU9Mz09PWw/bnVsbCE9PWMuc2hhZG93U2lkZT9jLnNoYWRvd1NpZGU6Yy5zaWRlOm51bGwhPT1jLnNoYWRvd1NpZGU/Yy5zaGFkb3dTaWRlOnRbYy5zaWRlXTtiLmNsaXBTaGFkb3dzPWMuY2xpcFNoYWRvd3M7Yi5jbGlwcGluZ1BsYW5lcz1jLmNsaXBwaW5nUGxhbmVzO2IuY2xpcEludGVyc2VjdGlvbj1jLmNsaXBJbnRlcnNlY3Rpb247Yi53aXJlZnJhbWVMaW5ld2lkdGg9Yy53aXJlZnJhbWVMaW5ld2lkdGg7Yi5saW5ld2lkdGg9Yy5saW5ld2lkdGg7ITA9PT1mLmlzUG9pbnRMaWdodCYmITA9PT1iLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWwmJihiLnJlZmVyZW5jZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihmLm1hdHJpeFdvcmxkKSwKYi5uZWFyRGlzdGFuY2U9ZyxiLmZhckRpc3RhbmNlPWgpO3JldHVybiBifWZ1bmN0aW9uIGcoYyxkLGUsbCxtKXtpZighMSE9PWMudmlzaWJsZSl7aWYoYy5sYXllcnMudGVzdChkLmxheWVycykmJihjLmlzTWVzaHx8Yy5pc0xpbmV8fGMuaXNQb2ludHMpJiYoYy5jYXN0U2hhZG93fHxjLnJlY2VpdmVTaGFkb3cmJjM9PT1tKSYmKCFjLmZydXN0dW1DdWxsZWR8fGguaW50ZXJzZWN0c09iamVjdChjKSkpe2MubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoZS5tYXRyaXhXb3JsZEludmVyc2UsYy5tYXRyaXhXb3JsZCk7dmFyIHI9Yi51cGRhdGUoYykscT1jLm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkocSkpZm9yKHZhciBrPXIuZ3JvdXBzLHU9MCx0PWsubGVuZ3RoO3U8dDt1Kyspe3ZhciBwPWtbdV0sdj1xW3AubWF0ZXJpYWxJbmRleF07diYmdi52aXNpYmxlJiYodj1mKGMsdixsLGUubmVhcixlLmZhcixtKSxhLnJlbmRlckJ1ZmZlckRpcmVjdChlLG51bGwscix2LGMsCnApKX1lbHNlIHEudmlzaWJsZSYmKHY9ZihjLHEsbCxlLm5lYXIsZS5mYXIsbSksYS5yZW5kZXJCdWZmZXJEaXJlY3QoZSxudWxsLHIsdixjLG51bGwpKX1jPWMuY2hpbGRyZW47cj0wO2ZvcihxPWMubGVuZ3RoO3I8cTtyKyspZyhjW3JdLGQsZSxsLG0pfX12YXIgaD1uZXcgRGQsbD1uZXcgQixtPW5ldyBCLHI9bmV3IGRhLHE9W10saz1bXSxwPXt9LHQ9ezA6MSwxOjAsMjoyfSx2PW5ldyB2YSh7ZGVmaW5lczp7U0FNUExFX1JBVEU6LjI1LEhBTEZfU0FNUExFX1JBVEU6LjEyNX0sdW5pZm9ybXM6e3NoYWRvd19wYXNzOnt2YWx1ZTpudWxsfSxyZXNvbHV0aW9uOnt2YWx1ZTpuZXcgQn0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOiJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6InVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzO1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG51bmlmb3JtIGZsb2F0IHJhZGl1cztcbiNpbmNsdWRlIDxwYWNraW5nPlxudm9pZCBtYWluKCkge1xuICBmbG9hdCBtZWFuID0gMC4wO1xuICBmbG9hdCBzcXVhcmVkX21lYW4gPSAwLjA7XG4gIFxuXHRmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSAgKSAvIHJlc29sdXRpb24gKSApO1xuICBmb3IgKCBmbG9hdCBpID0gLTEuMDsgaSA8IDEuMCA7IGkgKz0gU0FNUExFX1JBVEUpIHtcbiAgICAjaWZkZWYgSE9SSVpPTkFMX1BBU1NcbiAgICAgIHZlYzIgZGlzdHJpYnV0aW9uID0gZGVjb2RlSGFsZlJHQkEgKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIGksIDAuMCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcbiAgICAgIG1lYW4gKz0gZGlzdHJpYnV0aW9uLng7XG4gICAgICBzcXVhcmVkX21lYW4gKz0gZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSArIGRpc3RyaWJ1dGlvbi54ICogZGlzdHJpYnV0aW9uLng7XG4gICAgI2Vsc2VcbiAgICAgIGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggMC4wLCAgaSApICAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7XG4gICAgICBtZWFuICs9IGRlcHRoO1xuICAgICAgc3F1YXJlZF9tZWFuICs9IGRlcHRoICogZGVwdGg7XG4gICAgI2VuZGlmXG4gIH1cbiAgbWVhbiA9IG1lYW4gKiBIQUxGX1NBTVBMRV9SQVRFO1xuICBzcXVhcmVkX21lYW4gPSBzcXVhcmVkX21lYW4gKiBIQUxGX1NBTVBMRV9SQVRFO1xuICBmbG9hdCBzdGRfZGV2ID0gcG93KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiwgMC41ICk7XG4gIGdsX0ZyYWdDb2xvciA9IGVuY29kZUhhbGZSR0JBKCB2ZWMyKCBtZWFuLCBzdGRfZGV2ICkgKTtcbn0ifSksCm49di5jbG9uZSgpO24uZGVmaW5lcy5IT1JJWk9OQUxfUEFTUz0xO3ZhciB3PW5ldyBEO3cuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IE4obmV3IEZsb2F0MzJBcnJheShbLTEsLTEsLjUsMywtMSwuNSwtMSwzLC41XSksMykpO3ZhciB4PW5ldyBlYSh3LHYpLEY9dGhpczt0aGlzLmVuYWJsZWQ9ITE7dGhpcy5hdXRvVXBkYXRlPSEwO3RoaXMubmVlZHNVcGRhdGU9ITE7dGhpcy50eXBlPTE7dGhpcy5yZW5kZXI9ZnVuY3Rpb24oZCxlLGYpe2lmKCExIT09Ri5lbmFibGVkJiYoITEhPT1GLmF1dG9VcGRhdGV8fCExIT09Ri5uZWVkc1VwZGF0ZSkmJjAhPT1kLmxlbmd0aCl7dmFyIHE9YS5nZXRSZW5kZXJUYXJnZXQoKSxrPWEuZ2V0QWN0aXZlQ3ViZUZhY2UoKSx1PWEuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSx0PWEuc3RhdGU7dC5zZXRCbGVuZGluZygwKTt0LmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoMSwxLDEsMSk7dC5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApO3Quc2V0U2Npc3NvclRlc3QoITEpOwpmb3IodmFyIHA9MCx5PWQubGVuZ3RoO3A8eTtwKyspe3ZhciB3PWRbcF0sej13LnNoYWRvdztpZih2b2lkIDA9PT16KWNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xTaGFkb3dNYXA6Iix3LCJoYXMgbm8gc2hhZG93LiIpO2Vsc2V7bC5jb3B5KHoubWFwU2l6ZSk7dmFyIEk9ei5nZXRGcmFtZUV4dGVudHMoKTtsLm11bHRpcGx5KEkpO20uY29weSh6Lm1hcFNpemUpO2lmKGwueD5jfHxsLnk+Yyljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiIsdywiaGFzIHNoYWRvdyBleGNlZWRpbmcgbWF4IHRleHR1cmUgc2l6ZSwgcmVkdWNpbmciKSxsLng+YyYmKG0ueD1NYXRoLmZsb29yKGMvSS54KSxsLng9bS54KkkueCx6Lm1hcFNpemUueD1tLngpLGwueT5jJiYobS55PU1hdGguZmxvb3IoYy9JLnkpLGwueT1tLnkqSS55LHoubWFwU2l6ZS55PW0ueSk7bnVsbCE9PXoubWFwfHx6LmlzUG9pbnRMaWdodFNoYWRvd3x8MyE9PXRoaXMudHlwZXx8KEk9e21pbkZpbHRlcjoxMDA2LG1hZ0ZpbHRlcjoxMDA2LApmb3JtYXQ6MTAyM30sei5tYXA9bmV3IEJhKGwueCxsLnksSSksei5tYXAudGV4dHVyZS5uYW1lPXcubmFtZSsiLnNoYWRvd01hcCIsei5tYXBQYXNzPW5ldyBCYShsLngsbC55LEkpLHouY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSk7bnVsbD09PXoubWFwJiYoST17bWluRmlsdGVyOjEwMDMsbWFnRmlsdGVyOjEwMDMsZm9ybWF0OjEwMjN9LHoubWFwPW5ldyBCYShsLngsbC55LEkpLHoubWFwLnRleHR1cmUubmFtZT13Lm5hbWUrIi5zaGFkb3dNYXAiLHouY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSk7YS5zZXRSZW5kZXJUYXJnZXQoei5tYXApO2EuY2xlYXIoKTtJPXouZ2V0Vmlld3BvcnRDb3VudCgpO2Zvcih2YXIgQ2E9MDtDYTxJO0NhKyspe3ZhciBCPXouZ2V0Vmlld3BvcnQoQ2EpO3Iuc2V0KG0ueCpCLngsbS55KkIueSxtLngqQi56LG0ueSpCLncpO3Qudmlld3BvcnQocik7ei51cGRhdGVNYXRyaWNlcyh3LENhKTtoPXouZ2V0RnJ1c3R1bSgpO2coZSwKZix6LmNhbWVyYSx3LHRoaXMudHlwZSl9ei5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fCh3PXosej1mLEk9Yi51cGRhdGUoeCksdi51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT13Lm1hcC50ZXh0dXJlLHYudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT13Lm1hcFNpemUsdi51bmlmb3Jtcy5yYWRpdXMudmFsdWU9dy5yYWRpdXMsYS5zZXRSZW5kZXJUYXJnZXQody5tYXBQYXNzKSxhLmNsZWFyKCksYS5yZW5kZXJCdWZmZXJEaXJlY3QoeixudWxsLEksdix4LG51bGwpLG4udW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9dy5tYXBQYXNzLnRleHR1cmUsbi51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPXcubWFwU2l6ZSxuLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT13LnJhZGl1cyxhLnNldFJlbmRlclRhcmdldCh3Lm1hcCksYS5jbGVhcigpLGEucmVuZGVyQnVmZmVyRGlyZWN0KHosbnVsbCxJLG4seCxudWxsKSl9fUYubmVlZHNVcGRhdGU9ITE7YS5zZXRSZW5kZXJUYXJnZXQocSwKayx1KX19fWZ1bmN0aW9uIGprKGEsYixjKXtmdW5jdGlvbiBkKGIsYyxkKXt2YXIgZT1uZXcgVWludDhBcnJheSg0KSxmPWEuY3JlYXRlVGV4dHVyZSgpO2EuYmluZFRleHR1cmUoYixmKTthLnRleFBhcmFtZXRlcmkoYiwxMDI0MSw5NzI4KTthLnRleFBhcmFtZXRlcmkoYiwxMDI0MCw5NzI4KTtmb3IoYj0wO2I8ZDtiKyspYS50ZXhJbWFnZTJEKGMrYiwwLDY0MDgsMSwxLDAsNjQwOCw1MTIxLGUpO3JldHVybiBmfWZ1bmN0aW9uIGUoYyxkKXtuW2NdPTE7MD09PXdbY10mJihhLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGMpLHdbY109MSk7eFtjXSE9PWQmJigoaz9hOmIuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW2s/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShjLGQpLHhbY109ZCl9ZnVuY3Rpb24gZihiKXshMCE9PUZbYl0mJihhLmVuYWJsZShiKSxGW2JdPSEwKX1mdW5jdGlvbiBnKGIpeyExIT09RltiXSYmKGEuZGlzYWJsZShiKSwKRltiXT0hMSl9ZnVuY3Rpb24gaChiLGMsZCxlLGgsbCxtLHIpe2lmKDA9PT1iKXomJihnKDMwNDIpLHo9ITEpO2Vsc2UgaWYoenx8KGYoMzA0Miksej0hMCksNSE9PWIpe2lmKGIhPT1DYXx8ciE9PUQpe2lmKDEwMCE9PUJ8fDEwMCE9PUgpYS5ibGVuZEVxdWF0aW9uKDMyNzc0KSxIPUI9MTAwO2lmKHIpc3dpdGNoKGIpe2Nhc2UgMTphLmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6YS5ibGVuZEZ1bmMoMSwxKTticmVhaztjYXNlIDM6YS5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDAsNzY5LDc3MSk7YnJlYWs7Y2FzZSA0OmEuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjgsMCw3NzApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixiKX1lbHNlIHN3aXRjaChiKXtjYXNlIDE6YS5ibGVuZEZ1bmNTZXBhcmF0ZSg3NzAsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6YS5ibGVuZEZ1bmMoNzcwLDEpOwpicmVhaztjYXNlIDM6YS5ibGVuZEZ1bmMoMCw3NjkpO2JyZWFrO2Nhc2UgNDphLmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGIpfUU9SGQ9bGE9QT1udWxsO0NhPWI7RD1yfX1lbHNle2g9aHx8YztsPWx8fGQ7bT1tfHxlO2lmKGMhPT1CfHxoIT09SClhLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShGY1tjXSxGY1toXSksQj1jLEg9aDtpZihkIT09QXx8ZSE9PWxhfHxsIT09SGR8fG0hPT1FKWEuYmxlbmRGdW5jU2VwYXJhdGUoTVtkXSxNW2VdLE1bbF0sTVttXSksQT1kLGxhPWUsSGQ9bCxFPW07Q2E9YjtEPW51bGx9fWZ1bmN0aW9uIGwoYil7SiE9PWImJihiP2EuZnJvbnRGYWNlKDIzMDQpOmEuZnJvbnRGYWNlKDIzMDUpLEo9Yil9ZnVuY3Rpb24gbShiKXswIT09Yj8oZigyODg0KSxiIT09TCYmKDE9PT1iP2EuY3VsbEZhY2UoMTAyOSk6Mj09PWI/YS5jdWxsRmFjZSgxMDI4KTphLmN1bGxGYWNlKDEwMzIpKSk6CmcoMjg4NCk7TD1ifWZ1bmN0aW9uIHIoYixjLGQpe2lmKGIpe2lmKGYoMzI4MjMpLEchPT1jfHxOIT09ZClhLnBvbHlnb25PZmZzZXQoYyxkKSxHPWMsTj1kfWVsc2UgZygzMjgyMyl9ZnVuY3Rpb24gcShiKXt2b2lkIDA9PT1iJiYoYj0zMzk4NCtoYS0xKTtQIT09YiYmKGEuYWN0aXZlVGV4dHVyZShiKSxQPWIpfXZhciBrPWMuaXNXZWJHTDIscD1uZXcgZnVuY3Rpb24oKXt2YXIgYj0hMSxjPW5ldyBkYSxkPW51bGwsZT1uZXcgZGEoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24oYyl7ZD09PWN8fGJ8fChhLmNvbG9yTWFzayhjLGMsYyxjKSxkPWMpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24oYSl7Yj1hfSxzZXRDbGVhcjpmdW5jdGlvbihiLGQsZixnLGgpeyEwPT09aCYmKGIqPWcsZCo9ZyxmKj1nKTtjLnNldChiLGQsZixnKTshMT09PWUuZXF1YWxzKGMpJiYoYS5jbGVhckNvbG9yKGIsZCxmLGcpLGUuY29weShjKSl9LHJlc2V0OmZ1bmN0aW9uKCl7Yj0hMTtkPW51bGw7ZS5zZXQoLTEsCjAsMCwwKX19fSx0PW5ldyBmdW5jdGlvbigpe3ZhciBiPSExLGM9bnVsbCxkPW51bGwsZT1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKGEpe2E/ZigyOTI5KTpnKDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKGQpe2M9PT1kfHxifHwoYS5kZXB0aE1hc2soZCksYz1kKX0sc2V0RnVuYzpmdW5jdGlvbihiKXtpZihkIT09Yil7aWYoYilzd2l0Y2goYil7Y2FzZSAwOmEuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSAxOmEuZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSAyOmEuZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSAzOmEuZGVwdGhGdW5jKDUxNSk7YnJlYWs7Y2FzZSA0OmEuZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSA1OmEuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSA2OmEuZGVwdGhGdW5jKDUxNik7YnJlYWs7Y2FzZSA3OmEuZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDphLmRlcHRoRnVuYyg1MTUpfWVsc2UgYS5kZXB0aEZ1bmMoNTE1KTtkPWJ9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24oYSl7Yj0KYX0sc2V0Q2xlYXI6ZnVuY3Rpb24oYil7ZSE9PWImJihhLmNsZWFyRGVwdGgoYiksZT1iKX0scmVzZXQ6ZnVuY3Rpb24oKXtiPSExO2U9ZD1jPW51bGx9fX0sdj1uZXcgZnVuY3Rpb24oKXt2YXIgYj0hMSxjPW51bGwsZD1udWxsLGU9bnVsbCxoPW51bGwsbD1udWxsLG09bnVsbCxyPW51bGwscT1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKGEpe2J8fChhP2YoMjk2MCk6ZygyOTYwKSl9LHNldE1hc2s6ZnVuY3Rpb24oZCl7Yz09PWR8fGJ8fChhLnN0ZW5jaWxNYXNrKGQpLGM9ZCl9LHNldEZ1bmM6ZnVuY3Rpb24oYixjLGYpe2lmKGQhPT1ifHxlIT09Y3x8aCE9PWYpYS5zdGVuY2lsRnVuYyhiLGMsZiksZD1iLGU9YyxoPWZ9LHNldE9wOmZ1bmN0aW9uKGIsYyxkKXtpZihsIT09Ynx8bSE9PWN8fHIhPT1kKWEuc3RlbmNpbE9wKGIsYyxkKSxsPWIsbT1jLHI9ZH0sc2V0TG9ja2VkOmZ1bmN0aW9uKGEpe2I9YX0sc2V0Q2xlYXI6ZnVuY3Rpb24oYil7cSE9PWImJihhLmNsZWFyU3RlbmNpbChiKSwKcT1iKX0scmVzZXQ6ZnVuY3Rpb24oKXtiPSExO3E9cj1tPWw9aD1lPWQ9Yz1udWxsfX19O2M9YS5nZXRQYXJhbWV0ZXIoMzQ5MjEpO3ZhciBuPW5ldyBVaW50OEFycmF5KGMpLHc9bmV3IFVpbnQ4QXJyYXkoYykseD1uZXcgVWludDhBcnJheShjKSxGPXt9LEk9bnVsbCx6PW51bGwsQ2E9bnVsbCxCPW51bGwsQT1udWxsLGxhPW51bGwsSD1udWxsLEhkPW51bGwsRT1udWxsLEQ9ITEsSj1udWxsLEw9bnVsbCxDPW51bGwsRz1udWxsLE49bnVsbCxoYT1hLmdldFBhcmFtZXRlcigzNTY2MSksTz0hMTtjPTA7Yz1hLmdldFBhcmFtZXRlcig3OTM4KTstMSE9PWMuaW5kZXhPZigiV2ViR0wiKT8oYz1wYXJzZUZsb2F0KC9eV2ViR0wgKFswLTldKS8uZXhlYyhjKVsxXSksTz0xPD1jKTotMSE9PWMuaW5kZXhPZigiT3BlbkdMIEVTIikmJihjPXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFswLTldKS8uZXhlYyhjKVsxXSksTz0yPD1jKTt2YXIgUD1udWxsLEtlPXt9LCRiPW5ldyBkYSxKaD1uZXcgZGEsCm9iPXt9O29iWzM1NTNdPWQoMzU1MywzNTUzLDEpO29iWzM0MDY3XT1kKDM0MDY3LDM0MDY5LDYpO3Auc2V0Q2xlYXIoMCwwLDAsMSk7dC5zZXRDbGVhcigxKTt2LnNldENsZWFyKDApO2YoMjkyOSk7dC5zZXRGdW5jKDMpO2woITEpO20oMSk7ZigyODg0KTtoKDApO3ZhciBGYz17MTAwOjMyNzc0LDEwMTozMjc3OCwxMDI6MzI3Nzl9O2s/KEZjWzEwM109MzI3NzUsRmNbMTA0XT0zMjc3Nik6KGM9Yi5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKSxudWxsIT09YyYmKEZjWzEwM109Yy5NSU5fRVhULEZjWzEwNF09Yy5NSU5fRVhUKSk7dmFyIE09ezIwMDowLDIwMToxLDIwMjo3NjgsMjA0Ojc3MCwyMTA6Nzc2LDIwODo3NzQsMjA2Ojc3MiwyMDM6NzY5LDIwNTo3NzEsMjA5Ojc3NSwyMDc6NzczfTtyZXR1cm57YnVmZmVyczp7Y29sb3I6cCxkZXB0aDp0LHN0ZW5jaWw6dn0saW5pdEF0dHJpYnV0ZXM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxiPW4ubGVuZ3RoO2E8YjthKyspblthXT0wfSxlbmFibGVBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7ZShhLAowKX0sZW5hYmxlQXR0cmlidXRlQW5kRGl2aXNvcjplLGRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPTAsYz13Lmxlbmd0aDtiIT09YzsrK2Ipd1tiXSE9PW5bYl0mJihhLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShiKSx3W2JdPTApfSxlbmFibGU6ZixkaXNhYmxlOmcsdXNlUHJvZ3JhbTpmdW5jdGlvbihiKXtyZXR1cm4gSSE9PWI/KGEudXNlUHJvZ3JhbShiKSxJPWIsITApOiExfSxzZXRCbGVuZGluZzpoLHNldE1hdGVyaWFsOmZ1bmN0aW9uKGEsYil7Mj09PWEuc2lkZT9nKDI4ODQpOmYoMjg4NCk7dmFyIGM9MT09PWEuc2lkZTtiJiYoYz0hYyk7bChjKTsxPT09YS5ibGVuZGluZyYmITE9PT1hLnRyYW5zcGFyZW50P2goMCk6aChhLmJsZW5kaW5nLGEuYmxlbmRFcXVhdGlvbixhLmJsZW5kU3JjLGEuYmxlbmREc3QsYS5ibGVuZEVxdWF0aW9uQWxwaGEsYS5ibGVuZFNyY0FscGhhLGEuYmxlbmREc3RBbHBoYSxhLnByZW11bHRpcGxpZWRBbHBoYSk7CnQuc2V0RnVuYyhhLmRlcHRoRnVuYyk7dC5zZXRUZXN0KGEuZGVwdGhUZXN0KTt0LnNldE1hc2soYS5kZXB0aFdyaXRlKTtwLnNldE1hc2soYS5jb2xvcldyaXRlKTtiPWEuc3RlbmNpbFdyaXRlO3Yuc2V0VGVzdChiKTtiJiYodi5zZXRNYXNrKGEuc3RlbmNpbFdyaXRlTWFzayksdi5zZXRGdW5jKGEuc3RlbmNpbEZ1bmMsYS5zdGVuY2lsUmVmLGEuc3RlbmNpbEZ1bmNNYXNrKSx2LnNldE9wKGEuc3RlbmNpbEZhaWwsYS5zdGVuY2lsWkZhaWwsYS5zdGVuY2lsWlBhc3MpKTtyKGEucG9seWdvbk9mZnNldCxhLnBvbHlnb25PZmZzZXRGYWN0b3IsYS5wb2x5Z29uT2Zmc2V0VW5pdHMpfSxzZXRGbGlwU2lkZWQ6bCxzZXRDdWxsRmFjZTptLHNldExpbmVXaWR0aDpmdW5jdGlvbihiKXtiIT09QyYmKE8mJmEubGluZVdpZHRoKGIpLEM9Yil9LHNldFBvbHlnb25PZmZzZXQ6cixzZXRTY2lzc29yVGVzdDpmdW5jdGlvbihhKXthP2YoMzA4OSk6ZygzMDg5KX0sYWN0aXZlVGV4dHVyZTpxLGJpbmRUZXh0dXJlOmZ1bmN0aW9uKGIsCmMpe251bGw9PT1QJiZxKCk7dmFyIGQ9S2VbUF07dm9pZCAwPT09ZCYmKGQ9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxLZVtQXT1kKTtpZihkLnR5cGUhPT1ifHxkLnRleHR1cmUhPT1jKWEuYmluZFRleHR1cmUoYixjfHxvYltiXSksZC50eXBlPWIsZC50ZXh0dXJlPWN9LHVuYmluZFRleHR1cmU6ZnVuY3Rpb24oKXt2YXIgYj1LZVtQXTt2b2lkIDAhPT1iJiZ2b2lkIDAhPT1iLnR5cGUmJihhLmJpbmRUZXh0dXJlKGIudHlwZSxudWxsKSxiLnR5cGU9dm9pZCAwLGIudGV4dHVyZT12b2lkIDApfSxjb21wcmVzc2VkVGV4SW1hZ2UyRDpmdW5jdGlvbigpe3RyeXthLmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KGEsYXJndW1lbnRzKX1jYXRjaChXKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsVyl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uKCl7dHJ5e2EudGV4SW1hZ2UyRC5hcHBseShhLGFyZ3VtZW50cyl9Y2F0Y2goVyl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLApXKX19LHRleEltYWdlM0Q6ZnVuY3Rpb24oKXt0cnl7YS50ZXhJbWFnZTNELmFwcGx5KGEsYXJndW1lbnRzKX1jYXRjaChXKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsVyl9fSxzY2lzc29yOmZ1bmN0aW9uKGIpeyExPT09JGIuZXF1YWxzKGIpJiYoYS5zY2lzc29yKGIueCxiLnksYi56LGIudyksJGIuY29weShiKSl9LHZpZXdwb3J0OmZ1bmN0aW9uKGIpeyExPT09SmguZXF1YWxzKGIpJiYoYS52aWV3cG9ydChiLngsYi55LGIueixiLncpLEpoLmNvcHkoYikpfSxyZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgYj0wO2I8dy5sZW5ndGg7YisrKTE9PT13W2JdJiYoYS5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoYiksd1tiXT0wKTtGPXt9O1A9bnVsbDtLZT17fTtMPUo9Q2E9ST1udWxsO3AucmVzZXQoKTt0LnJlc2V0KCk7di5yZXNldCgpfX19ZnVuY3Rpb24ga2soYSxiLGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChhLGIpe3JldHVybiBDP25ldyBPZmZzY3JlZW5DYW52YXMoYSwKYik6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIil9ZnVuY3Rpb24gbChhLGIsYyxkKXt2YXIgZT0xO2lmKGEud2lkdGg+ZHx8YS5oZWlnaHQ+ZCllPWQvTWF0aC5tYXgoYS53aWR0aCxhLmhlaWdodCk7aWYoMT5lfHwhMD09PWIpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJmEgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmYSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9PXR5cGVvZiBJbWFnZUJpdG1hcCYmYSBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXJldHVybiBkPWI/UC5mbG9vclBvd2VyT2ZUd286TWF0aC5mbG9vcixiPWQoZSphLndpZHRoKSxlPWQoZSphLmhlaWdodCksdm9pZCAwPT09TCYmKEw9aChiLGUpKSxjPWM/aChiLGUpOkwsYy53aWR0aD1iLGMuaGVpZ2h0PWUsCmMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoYSwwLDAsYixlKSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK2Eud2lkdGgrIngiK2EuaGVpZ2h0KyIpIHRvICgiK2IrIngiK2UrIikuIiksYzsiZGF0YSJpbiBhJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEltYWdlIGluIERhdGFUZXh0dXJlIGlzIHRvbyBiaWcgKCIrYS53aWR0aCsieCIrYS5oZWlnaHQrIikuIil9cmV0dXJuIGF9ZnVuY3Rpb24gbShhKXtyZXR1cm4gUC5pc1Bvd2VyT2ZUd28oYS53aWR0aCkmJlAuaXNQb3dlck9mVHdvKGEuaGVpZ2h0KX1mdW5jdGlvbiByKGEsYil7cmV0dXJuIGEuZ2VuZXJhdGVNaXBtYXBzJiZiJiYxMDAzIT09YS5taW5GaWx0ZXImJjEwMDYhPT1hLm1pbkZpbHRlcn1mdW5jdGlvbiBxKGIsYyxlLGYpe2EuZ2VuZXJhdGVNaXBtYXAoYik7ZC5nZXQoYykuX19tYXhNaXBMZXZlbD1NYXRoLmxvZyhNYXRoLm1heChlLApmKSkqTWF0aC5MT0cyRX1mdW5jdGlvbiBrKGEsYyl7aWYoITE9PT1sYSlyZXR1cm4gYTt2YXIgZD1hOzY0MDM9PT1hJiYoNTEyNj09PWMmJihkPTMzMzI2KSw1MTMxPT09YyYmKGQ9MzMzMjUpLDUxMjE9PT1jJiYoZD0zMzMyMSkpOzY0MDc9PT1hJiYoNTEyNj09PWMmJihkPTM0ODM3KSw1MTMxPT09YyYmKGQ9MzQ4NDMpLDUxMjE9PT1jJiYoZD0zMjg0OSkpOzY0MDg9PT1hJiYoNTEyNj09PWMmJihkPTM0ODM2KSw1MTMxPT09YyYmKGQ9MzQ4NDIpLDUxMjE9PT1jJiYoZD0zMjg1NikpOzMzMzI1PT09ZHx8MzMzMjY9PT1kfHwzNDg0Mj09PWR8fDM0ODM2PT09ZD9iLmdldCgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpOigzNDg0Mz09PWR8fDM0ODM3PT09ZCkmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgdGV4dHVyZXMgd2l0aCBSR0IgZm9ybWF0IG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSB1c2UgUkdCQSBpbnN0ZWFkLiIpO3JldHVybiBkfWZ1bmN0aW9uIHAoYSl7cmV0dXJuIDEwMDM9PT0KYXx8MTAwND09PWF8fDEwMDU9PT1hPzk3Mjg6OTcyOX1mdW5jdGlvbiB0KGIpe2I9Yi50YXJnZXQ7Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIix0KTt2YXIgYz1kLmdldChiKTt2b2lkIDAhPT1jLl9fd2ViZ2xJbml0JiYoYS5kZWxldGVUZXh0dXJlKGMuX193ZWJnbFRleHR1cmUpLGQucmVtb3ZlKGIpKTtiLmlzVmlkZW9UZXh0dXJlJiZKLmRlbGV0ZShiKTtnLm1lbW9yeS50ZXh0dXJlcy0tfWZ1bmN0aW9uIHYoYil7Yj1iLnRhcmdldDtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpO3ZhciBjPWQuZ2V0KGIpLGU9ZC5nZXQoYi50ZXh0dXJlKTtpZihiKXt2b2lkIDAhPT1lLl9fd2ViZ2xUZXh0dXJlJiZhLmRlbGV0ZVRleHR1cmUoZS5fX3dlYmdsVGV4dHVyZSk7Yi5kZXB0aFRleHR1cmUmJmIuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihiLmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlKWZvcihlPTA7Nj5lO2UrKylhLmRlbGV0ZUZyYW1lYnVmZmVyKGMuX193ZWJnbEZyYW1lYnVmZmVyW2VdKSwKYy5fX3dlYmdsRGVwdGhidWZmZXImJmEuZGVsZXRlUmVuZGVyYnVmZmVyKGMuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIGEuZGVsZXRlRnJhbWVidWZmZXIoYy5fX3dlYmdsRnJhbWVidWZmZXIpLGMuX193ZWJnbERlcHRoYnVmZmVyJiZhLmRlbGV0ZVJlbmRlcmJ1ZmZlcihjLl9fd2ViZ2xEZXB0aGJ1ZmZlcik7aWYoYi5pc1dlYkdMTXVsdGl2aWV3UmVuZGVyVGFyZ2V0KXthLmRlbGV0ZVRleHR1cmUoYy5fX3dlYmdsQ29sb3JUZXh0dXJlKTthLmRlbGV0ZVRleHR1cmUoYy5fX3dlYmdsRGVwdGhTdGVuY2lsVGV4dHVyZSk7Zy5tZW1vcnkudGV4dHVyZXMtPTI7ZT0wO2Zvcih2YXIgZj1jLl9fd2ViZ2xWaWV3RnJhbWVidWZmZXJzLmxlbmd0aDtlPGY7ZSsrKWEuZGVsZXRlRnJhbWVidWZmZXIoYy5fX3dlYmdsVmlld0ZyYW1lYnVmZmVyc1tlXSl9ZC5yZW1vdmUoYi50ZXh0dXJlKTtkLnJlbW92ZShiKX1nLm1lbW9yeS50ZXh0dXJlcy0tfWZ1bmN0aW9uIG4oYSxiKXt2YXIgZT1kLmdldChhKTsKaWYoYS5pc1ZpZGVvVGV4dHVyZSl7dmFyIGY9Zy5yZW5kZXIuZnJhbWU7Si5nZXQoYSkhPT1mJiYoSi5zZXQoYSxmKSxhLnVwZGF0ZSgpKX1pZigwPGEudmVyc2lvbiYmZS5fX3ZlcnNpb24hPT1hLnZlcnNpb24paWYoZj1hLmltYWdlLHZvaWQgMD09PWYpY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNlIGlmKCExPT09Zi5jb21wbGV0ZSljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKTtlbHNle3ooZSxhLGIpO3JldHVybn1jLmFjdGl2ZVRleHR1cmUoMzM5ODQrYik7Yy5iaW5kVGV4dHVyZSgzNTUzLGUuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIHcoYixlKXtpZig2PT09Yi5pbWFnZS5sZW5ndGgpe3ZhciBnPWQuZ2V0KGIpO2lmKDA8Yi52ZXJzaW9uJiZnLl9fdmVyc2lvbiE9PQpiLnZlcnNpb24pe0koZyxiKTtjLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSk7Yy5iaW5kVGV4dHVyZSgzNDA2NyxnLl9fd2ViZ2xUZXh0dXJlKTthLnBpeGVsU3RvcmVpKDM3NDQwLGIuZmxpcFkpO3ZhciBoPWImJmIuaXNDb21wcmVzc2VkVGV4dHVyZTtlPWIuaW1hZ2VbMF0mJmIuaW1hZ2VbMF0uaXNEYXRhVGV4dHVyZTtmb3IodmFyIHQ9W10sdT0wOzY+dTt1KyspdFt1XT1ofHxlP2U/Yi5pbWFnZVt1XS5pbWFnZTpiLmltYWdlW3VdOmwoYi5pbWFnZVt1XSwhMSwhMCxIZCk7dmFyIHA9dFswXSx2PW0ocCl8fGxhLG49Zi5jb252ZXJ0KGIuZm9ybWF0KSx5PWYuY29udmVydChiLnR5cGUpLHc9ayhuLHkpO0YoMzQwNjcsYix2KTtpZihoKXtmb3IodT0wOzY+dTt1Kyspe3ZhciB6PXRbdV0ubWlwbWFwcztmb3IoaD0wO2g8ei5sZW5ndGg7aCsrKXt2YXIgeD16W2hdOzEwMjMhPT1iLmZvcm1hdCYmMTAyMiE9PWIuZm9ybWF0P251bGwhPT1uP2MuY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrCnUsaCx3LHgud2lkdGgseC5oZWlnaHQsMCx4LmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTpjLnRleEltYWdlMkQoMzQwNjkrdSxoLHcseC53aWR0aCx4LmhlaWdodCwwLG4seSx4LmRhdGEpfX1nLl9fbWF4TWlwTGV2ZWw9ei5sZW5ndGgtMX1lbHNle3o9Yi5taXBtYXBzO2Zvcih1PTA7Nj51O3UrKylpZihlKWZvcihjLnRleEltYWdlMkQoMzQwNjkrdSwwLHcsdFt1XS53aWR0aCx0W3VdLmhlaWdodCwwLG4seSx0W3VdLmRhdGEpLGg9MDtoPHoubGVuZ3RoO2grKyl4PXpbaF0seD14LmltYWdlW3VdLmltYWdlLGMudGV4SW1hZ2UyRCgzNDA2OSt1LGgrMSx3LHgud2lkdGgseC5oZWlnaHQsMCxuLHkseC5kYXRhKTtlbHNlIGZvcihjLnRleEltYWdlMkQoMzQwNjkrdSwwLHcsbix5LHRbdV0pLGg9MDtoPHoubGVuZ3RoO2grKyl4PQp6W2hdLGMudGV4SW1hZ2UyRCgzNDA2OSt1LGgrMSx3LG4seSx4LmltYWdlW3VdKTtnLl9fbWF4TWlwTGV2ZWw9ei5sZW5ndGh9cihiLHYpJiZxKDM0MDY3LGIscC53aWR0aCxwLmhlaWdodCk7Zy5fX3ZlcnNpb249Yi52ZXJzaW9uO2lmKGIub25VcGRhdGUpYi5vblVwZGF0ZShiKX1lbHNlIGMuYWN0aXZlVGV4dHVyZSgzMzk4NCtlKSxjLmJpbmRUZXh0dXJlKDM0MDY3LGcuX193ZWJnbFRleHR1cmUpfX1mdW5jdGlvbiB4KGEsYil7Yy5hY3RpdmVUZXh0dXJlKDMzOTg0K2IpO2MuYmluZFRleHR1cmUoMzQwNjcsZC5nZXQoYSkuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIEYoYyxmLGcpe2c/KGEudGV4UGFyYW1ldGVyaShjLDEwMjQyLE5bZi53cmFwU10pLGEudGV4UGFyYW1ldGVyaShjLDEwMjQzLE5bZi53cmFwVF0pLDMyODc5IT09YyYmMzU4NjYhPT1jfHxhLnRleFBhcmFtZXRlcmkoYywzMjg4MixOW2Yud3JhcFJdKSxhLnRleFBhcmFtZXRlcmkoYywxMDI0MCxPW2YubWFnRmlsdGVyXSksCmEudGV4UGFyYW1ldGVyaShjLDEwMjQxLE9bZi5taW5GaWx0ZXJdKSk6KGEudGV4UGFyYW1ldGVyaShjLDEwMjQyLDMzMDcxKSxhLnRleFBhcmFtZXRlcmkoYywxMDI0MywzMzA3MSksMzI4NzkhPT1jJiYzNTg2NiE9PWN8fGEudGV4UGFyYW1ldGVyaShjLDMyODgyLDMzMDcxKSwxMDAxPT09Zi53cmFwUyYmMTAwMT09PWYud3JhcFR8fGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLndyYXBTIGFuZCBUZXh0dXJlLndyYXBUIHNob3VsZCBiZSBzZXQgdG8gVEhSRUUuQ2xhbXBUb0VkZ2VXcmFwcGluZy4iKSxhLnRleFBhcmFtZXRlcmkoYywxMDI0MCxwKGYubWFnRmlsdGVyKSksYS50ZXhQYXJhbWV0ZXJpKGMsMTAyNDEscChmLm1pbkZpbHRlcikpLDEwMDMhPT1mLm1pbkZpbHRlciYmMTAwNiE9PWYubWluRmlsdGVyJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSk7CiEoZz1iLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpfHwxMDE1PT09Zi50eXBlJiZudWxsPT09Yi5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpfHwxMDE2PT09Zi50eXBlJiZudWxsPT09KGxhfHxiLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSl8fCEoMTxmLmFuaXNvdHJvcHl8fGQuZ2V0KGYpLl9fY3VycmVudEFuaXNvdHJvcHkpfHwoYS50ZXhQYXJhbWV0ZXJmKGMsZy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihmLmFuaXNvdHJvcHksZS5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxkLmdldChmKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PWYuYW5pc290cm9weSl9ZnVuY3Rpb24gSShiLGMpe3ZvaWQgMD09PWIuX193ZWJnbEluaXQmJihiLl9fd2ViZ2xJbml0PSEwLGMuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsdCksYi5fX3dlYmdsVGV4dHVyZT1hLmNyZWF0ZVRleHR1cmUoKSxnLm1lbW9yeS50ZXh0dXJlcysrKX0KZnVuY3Rpb24geihiLGQsZSl7dmFyIGc9MzU1MztkLmlzRGF0YVRleHR1cmUyREFycmF5JiYoZz0zNTg2Nik7ZC5pc0RhdGFUZXh0dXJlM0QmJihnPTMyODc5KTtJKGIsZCk7Yy5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpO2MuYmluZFRleHR1cmUoZyxiLl9fd2ViZ2xUZXh0dXJlKTthLnBpeGVsU3RvcmVpKDM3NDQwLGQuZmxpcFkpO2EucGl4ZWxTdG9yZWkoMzc0NDEsZC5wcmVtdWx0aXBseUFscGhhKTthLnBpeGVsU3RvcmVpKDMzMTcsZC51bnBhY2tBbGlnbm1lbnQpO2U9bGE/ITE6MTAwMSE9PWQud3JhcFN8fDEwMDEhPT1kLndyYXBUfHwxMDAzIT09ZC5taW5GaWx0ZXImJjEwMDYhPT1kLm1pbkZpbHRlcjtlPWUmJiExPT09bShkLmltYWdlKTtlPWwoZC5pbWFnZSxlLCExLEUpO3ZhciBoPW0oZSl8fGxhLHU9Zi5jb252ZXJ0KGQuZm9ybWF0KSx0PWYuY29udmVydChkLnR5cGUpLHA9ayh1LHQpO0YoZyxkLGgpO3ZhciB2PWQubWlwbWFwcztpZihkLmlzRGVwdGhUZXh0dXJlKXtwPTY0MDI7CmlmKDEwMTU9PT1kLnR5cGUpe2lmKCExPT09bGEpdGhyb3cgRXJyb3IoIkZsb2F0IERlcHRoIFRleHR1cmUgb25seSBzdXBwb3J0ZWQgaW4gV2ViR0wyLjAiKTtwPTM2MDEyfWVsc2UgbGEmJihwPTMzMTg5KTsxMDI2PT09ZC5mb3JtYXQmJjY0MDI9PT1wJiYxMDEyIT09ZC50eXBlJiYxMDE0IT09ZC50eXBlJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRTaG9ydFR5cGUgb3IgVW5zaWduZWRJbnRUeXBlIGZvciBEZXB0aEZvcm1hdCBEZXB0aFRleHR1cmUuIiksZC50eXBlPTEwMTIsdD1mLmNvbnZlcnQoZC50eXBlKSk7MTAyNz09PWQuZm9ybWF0JiYocD0zNDA0MSwxMDIwIT09ZC50eXBlJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGQudHlwZT0xMDIwLHQ9Zi5jb252ZXJ0KGQudHlwZSkpKTtjLnRleEltYWdlMkQoMzU1MywKMCxwLGUud2lkdGgsZS5oZWlnaHQsMCx1LHQsbnVsbCl9ZWxzZSBpZihkLmlzRGF0YVRleHR1cmUpaWYoMDx2Lmxlbmd0aCYmaCl7Zm9yKHZhciBuPTAseT12Lmxlbmd0aDtuPHk7bisrKWc9dltuXSxjLnRleEltYWdlMkQoMzU1MyxuLHAsZy53aWR0aCxnLmhlaWdodCwwLHUsdCxnLmRhdGEpO2QuZ2VuZXJhdGVNaXBtYXBzPSExO2IuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2UgYy50ZXhJbWFnZTJEKDM1NTMsMCxwLGUud2lkdGgsZS5oZWlnaHQsMCx1LHQsZS5kYXRhKSxiLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKGQuaXNDb21wcmVzc2VkVGV4dHVyZSl7bj0wO2Zvcih5PXYubGVuZ3RoO248eTtuKyspZz12W25dLDEwMjMhPT1kLmZvcm1hdCYmMTAyMiE9PWQuZm9ybWF0P251bGwhPT11P2MuY29tcHJlc3NlZFRleEltYWdlMkQoMzU1MyxuLHAsZy53aWR0aCxnLmhlaWdodCwwLGcuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAudXBsb2FkVGV4dHVyZSgpIik6CmMudGV4SW1hZ2UyRCgzNTUzLG4scCxnLndpZHRoLGcuaGVpZ2h0LDAsdSx0LGcuZGF0YSk7Yi5fX21heE1pcExldmVsPXYubGVuZ3RoLTF9ZWxzZSBpZihkLmlzRGF0YVRleHR1cmUyREFycmF5KWMudGV4SW1hZ2UzRCgzNTg2NiwwLHAsZS53aWR0aCxlLmhlaWdodCxlLmRlcHRoLDAsdSx0LGUuZGF0YSksYi5fX21heE1pcExldmVsPTA7ZWxzZSBpZihkLmlzRGF0YVRleHR1cmUzRCljLnRleEltYWdlM0QoMzI4NzksMCxwLGUud2lkdGgsZS5oZWlnaHQsZS5kZXB0aCwwLHUsdCxlLmRhdGEpLGIuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoMDx2Lmxlbmd0aCYmaCl7bj0wO2Zvcih5PXYubGVuZ3RoO248eTtuKyspZz12W25dLGMudGV4SW1hZ2UyRCgzNTUzLG4scCx1LHQsZyk7ZC5nZW5lcmF0ZU1pcG1hcHM9ITE7Yi5fX21heE1pcExldmVsPXYubGVuZ3RoLTF9ZWxzZSBjLnRleEltYWdlMkQoMzU1MywwLHAsdSx0LGUpLGIuX19tYXhNaXBMZXZlbD0wO3IoZCxoKSYmcSgzNTUzLGQsZS53aWR0aCwKZS5oZWlnaHQpO2IuX192ZXJzaW9uPWQudmVyc2lvbjtpZihkLm9uVXBkYXRlKWQub25VcGRhdGUoZCl9ZnVuY3Rpb24gQihiLGUsZyxoKXt2YXIgbD1mLmNvbnZlcnQoZS50ZXh0dXJlLmZvcm1hdCksbT1mLmNvbnZlcnQoZS50ZXh0dXJlLnR5cGUpLHI9ayhsLG0pO2MudGV4SW1hZ2UyRChoLDAscixlLndpZHRoLGUuaGVpZ2h0LDAsbCxtLG51bGwpO2EuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGIpO2EuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsZyxoLGQuZ2V0KGUudGV4dHVyZSkuX193ZWJnbFRleHR1cmUsMCk7YS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gaWEoYixjLGQpe2EuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxiKTtpZihjLmRlcHRoQnVmZmVyJiYhYy5zdGVuY2lsQnVmZmVyKWQ/KGQ9QShjKSxhLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxkLDMzMTg5LGMud2lkdGgsYy5oZWlnaHQpKTphLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsCjMzMTg5LGMud2lkdGgsYy5oZWlnaHQpLGEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsYik7ZWxzZSBpZihjLmRlcHRoQnVmZmVyJiZjLnN0ZW5jaWxCdWZmZXIpZD8oZD1BKGMpLGEucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLGQsMzUwNTYsYy53aWR0aCxjLmhlaWdodCkpOmEucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSwzNDA0MSxjLndpZHRoLGMuaGVpZ2h0KSxhLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDMzMzA2LDM2MTYxLGIpO2Vsc2V7Yj1mLmNvbnZlcnQoYy50ZXh0dXJlLmZvcm1hdCk7dmFyIGU9Zi5jb252ZXJ0KGMudGV4dHVyZS50eXBlKTtiPWsoYixlKTtkPyhkPUEoYyksYS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZCxiLGMud2lkdGgsYy5oZWlnaHQpKTphLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsYixjLndpZHRoLGMuaGVpZ2h0KX1hLmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsCm51bGwpfWZ1bmN0aW9uIEEoYSl7cmV0dXJuIGxhJiZhLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD9NYXRoLm1pbihELGEuc2FtcGxlcyk6MH12YXIgbGE9ZS5pc1dlYkdMMixIPWUubWF4VGV4dHVyZXMsSGQ9ZS5tYXhDdWJlbWFwU2l6ZSxFPWUubWF4VGV4dHVyZVNpemUsRD1lLm1heFNhbXBsZXMsSj1uZXcgV2Vha01hcCxMLEM9InVuZGVmaW5lZCIhPT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzJiZudWxsIT09KG5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKSkuZ2V0Q29udGV4dCgiMmQiKSxHPTAsTj17MUUzOjEwNDk3LDEwMDE6MzMwNzEsMTAwMjozMzY0OH0sTz17MTAwMzo5NzI4LDEwMDQ6OTk4NCwxMDA1Ojk5ODYsMTAwNjo5NzI5LDEwMDc6OTk4NSwxMDA4Ojk5ODd9LFE9ITEsUz0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXt2YXIgYT1HO2E+PUgmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK2ErIiB0ZXh0dXJlIHVuaXRzIHdoaWxlIHRoaXMgR1BVIHN1cHBvcnRzIG9ubHkgIisKSCk7Rys9MTtyZXR1cm4gYX07dGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbigpe0c9MH07dGhpcy5zZXRUZXh0dXJlMkQ9bjt0aGlzLnNldFRleHR1cmUyREFycmF5PWZ1bmN0aW9uKGEsYil7dmFyIGU9ZC5nZXQoYSk7MDxhLnZlcnNpb24mJmUuX192ZXJzaW9uIT09YS52ZXJzaW9uP3ooZSxhLGIpOihjLmFjdGl2ZVRleHR1cmUoMzM5ODQrYiksYy5iaW5kVGV4dHVyZSgzNTg2NixlLl9fd2ViZ2xUZXh0dXJlKSl9O3RoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uKGEsYil7dmFyIGU9ZC5nZXQoYSk7MDxhLnZlcnNpb24mJmUuX192ZXJzaW9uIT09YS52ZXJzaW9uP3ooZSxhLGIpOihjLmFjdGl2ZVRleHR1cmUoMzM5ODQrYiksYy5iaW5kVGV4dHVyZSgzMjg3OSxlLl9fd2ViZ2xUZXh0dXJlKSl9O3RoaXMuc2V0VGV4dHVyZUN1YmU9dzt0aGlzLnNldFRleHR1cmVDdWJlRHluYW1pYz14O3RoaXMuc2V0dXBSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oZSl7dmFyIGg9ZC5nZXQoZSksCmw9ZC5nZXQoZS50ZXh0dXJlKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpO2wuX193ZWJnbFRleHR1cmU9YS5jcmVhdGVUZXh0dXJlKCk7Zy5tZW1vcnkudGV4dHVyZXMrKzt2YXIgdT0hMD09PWUuaXNXZWJHTFJlbmRlclRhcmdldEN1YmUsdD0hMD09PWUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0LHA9ITA9PT1lLmlzV2ViR0xNdWx0aXZpZXdSZW5kZXJUYXJnZXQseT1tKGUpfHxsYTtpZih1KXtoLl9fd2ViZ2xGcmFtZWJ1ZmZlcj1bXTtmb3IodmFyIHc9MDs2Pnc7dysrKWguX193ZWJnbEZyYW1lYnVmZmVyW3ddPWEuY3JlYXRlRnJhbWVidWZmZXIoKX1lbHNlIGlmKGguX193ZWJnbEZyYW1lYnVmZmVyPWEuY3JlYXRlRnJhbWVidWZmZXIoKSx0KWlmKGxhKXtoLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcj1hLmNyZWF0ZUZyYW1lYnVmZmVyKCk7aC5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXI9YS5jcmVhdGVSZW5kZXJidWZmZXIoKTthLmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsCmguX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKTt0PWYuY29udmVydChlLnRleHR1cmUuZm9ybWF0KTt2YXIgej1mLmNvbnZlcnQoZS50ZXh0dXJlLnR5cGUpO3Q9ayh0LHopO3o9QShlKTthLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSx6LHQsZS53aWR0aCxlLmhlaWdodCk7YS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaC5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpO2EuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwNjQsMzYxNjEsaC5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpO2EuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxudWxsKTtlLmRlcHRoQnVmZmVyJiYoaC5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXI9YS5jcmVhdGVSZW5kZXJidWZmZXIoKSxpYShoLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSk7YS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTsKZWxzZSBpZihwKXt3PWUud2lkdGg7dmFyIHg9ZS5oZWlnaHQ7dD1lLm51bVZpZXdzO2EuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGguX193ZWJnbEZyYW1lYnVmZmVyKTt2YXIgST1iLmdldCgiT1ZSX211bHRpdmlldzIiKTtnLm1lbW9yeS50ZXh0dXJlcys9Mjt6PWEuY3JlYXRlVGV4dHVyZSgpO2EuYmluZFRleHR1cmUoMzU4NjYseik7YS50ZXhQYXJhbWV0ZXJpKDM1ODY2LDEwMjQwLDk3MjgpO2EudGV4UGFyYW1ldGVyaSgzNTg2NiwxMDI0MSw5NzI4KTthLnRleEltYWdlM0QoMzU4NjYsMCwzMjg1Nix3LHgsdCwwLDY0MDgsNTEyMSxudWxsKTtJLmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUigzNjE2MCwzNjA2NCx6LDAsMCx0KTt2YXIgSD1hLmNyZWF0ZVRleHR1cmUoKTthLmJpbmRUZXh0dXJlKDM1ODY2LEgpO2EudGV4UGFyYW1ldGVyaSgzNTg2NiwxMDI0MCw5NzI4KTthLnRleFBhcmFtZXRlcmkoMzU4NjYsMTAyNDEsOTcyOCk7YS50ZXhJbWFnZTNEKDM1ODY2LDAsMzUwNTYsCncseCx0LDAsMzQwNDEsMzQwNDIsbnVsbCk7SS5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoMzYxNjAsMzMzMDYsSCwwLDAsdCk7eD1BcnJheSh0KTtmb3Iodz0wO3c8dDsrK3cpeFt3XT1hLmNyZWF0ZUZyYW1lYnVmZmVyKCksYS5iaW5kRnJhbWVidWZmZXIoMzYxNjAseFt3XSksYS5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigzNjE2MCwzNjA2NCx6LDAsdyk7aC5fX3dlYmdsQ29sb3JUZXh0dXJlPXo7aC5fX3dlYmdsRGVwdGhTdGVuY2lsVGV4dHVyZT1IO2guX193ZWJnbFZpZXdGcmFtZWJ1ZmZlcnM9eDthLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKTthLmJpbmRUZXh0dXJlKDM1ODY2LG51bGwpfWlmKHUpe2MuYmluZFRleHR1cmUoMzQwNjcsbC5fX3dlYmdsVGV4dHVyZSk7RigzNDA2NyxlLnRleHR1cmUseSk7Zm9yKHc9MDs2Pnc7dysrKUIoaC5fX3dlYmdsRnJhbWVidWZmZXJbd10sZSwzNjA2NCwzNDA2OSt3KTtyKGUudGV4dHVyZSx5KSYmcSgzNDA2NyxlLnRleHR1cmUsCmUud2lkdGgsZS5oZWlnaHQpO2MuYmluZFRleHR1cmUoMzQwNjcsbnVsbCl9ZWxzZSBwfHwoYy5iaW5kVGV4dHVyZSgzNTUzLGwuX193ZWJnbFRleHR1cmUpLEYoMzU1MyxlLnRleHR1cmUseSksQihoLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLDM2MDY0LDM1NTMpLHIoZS50ZXh0dXJlLHkpJiZxKDM1NTMsZS50ZXh0dXJlLGUud2lkdGgsZS5oZWlnaHQpLGMuYmluZFRleHR1cmUoMzU1MyxudWxsKSk7aWYoZS5kZXB0aEJ1ZmZlcil7aD1kLmdldChlKTtsPSEwPT09ZS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZTtpZihlLmRlcHRoVGV4dHVyZSl7aWYobCl0aHJvdyBFcnJvcigidGFyZ2V0LmRlcHRoVGV4dHVyZSBub3Qgc3VwcG9ydGVkIGluIEN1YmUgcmVuZGVyIHRhcmdldHMiKTtpZihlJiZlLmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlKXRocm93IEVycm9yKCJEZXB0aCBUZXh0dXJlIHdpdGggY3ViZSByZW5kZXIgdGFyZ2V0cyBpcyBub3Qgc3VwcG9ydGVkIik7YS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsCmguX193ZWJnbEZyYW1lYnVmZmVyKTtpZighZS5kZXB0aFRleHR1cmV8fCFlLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBFcnJvcigicmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFRIUkVFLkRlcHRoVGV4dHVyZSIpO2QuZ2V0KGUuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSYmZS5kZXB0aFRleHR1cmUuaW1hZ2Uud2lkdGg9PT1lLndpZHRoJiZlLmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQ9PT1lLmhlaWdodHx8KGUuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPWUud2lkdGgsZS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUuaGVpZ2h0LGUuZGVwdGhUZXh0dXJlLm5lZWRzVXBkYXRlPSEwKTtuKGUuZGVwdGhUZXh0dXJlLDApO2g9ZC5nZXQoZS5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlO2lmKDEwMjY9PT1lLmRlcHRoVGV4dHVyZS5mb3JtYXQpYS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwKMzU1MyxoLDApO2Vsc2UgaWYoMTAyNz09PWUuZGVwdGhUZXh0dXJlLmZvcm1hdClhLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsaCwwKTtlbHNlIHRocm93IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt9ZWxzZSBpZihsKWZvcihoLl9fd2ViZ2xEZXB0aGJ1ZmZlcj1bXSxsPTA7Nj5sO2wrKylhLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxoLl9fd2ViZ2xGcmFtZWJ1ZmZlcltsXSksaC5fX3dlYmdsRGVwdGhidWZmZXJbbF09YS5jcmVhdGVSZW5kZXJidWZmZXIoKSxpYShoLl9fd2ViZ2xEZXB0aGJ1ZmZlcltsXSxlKTtlbHNlIGEuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGguX193ZWJnbEZyYW1lYnVmZmVyKSxoLl9fd2ViZ2xEZXB0aGJ1ZmZlcj1hLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLGlhKGguX193ZWJnbERlcHRoYnVmZmVyLGUpO2EuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfX07dGhpcy51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXA9CmZ1bmN0aW9uKGEpe3ZhciBiPWEudGV4dHVyZSxlPW0oYSl8fGxhO2lmKHIoYixlKSl7ZT1hLmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlPzM0MDY3OjM1NTM7dmFyIGY9ZC5nZXQoYikuX193ZWJnbFRleHR1cmU7Yy5iaW5kVGV4dHVyZShlLGYpO3EoZSxiLGEud2lkdGgsYS5oZWlnaHQpO2MuYmluZFRleHR1cmUoZSxudWxsKX19O3RoaXMudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oYil7aWYoYi5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQpaWYobGEpe3ZhciBjPWQuZ2V0KGIpO2EuYmluZEZyYW1lYnVmZmVyKDM2MDA4LGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKTthLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxjLl9fd2ViZ2xGcmFtZWJ1ZmZlcik7Yz1iLndpZHRoO3ZhciBlPWIuaGVpZ2h0LGY9MTYzODQ7Yi5kZXB0aEJ1ZmZlciYmKGZ8PTI1Nik7Yi5zdGVuY2lsQnVmZmVyJiYoZnw9MTAyNCk7YS5ibGl0RnJhbWVidWZmZXIoMCwwLApjLGUsMCwwLGMsZSxmLDk3MjgpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9O3RoaXMuc2FmZVNldFRleHR1cmUyRD1mdW5jdGlvbihhLGIpe2EmJmEuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09USYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLFE9ITApLGE9YS50ZXh0dXJlKTtuKGEsYil9O3RoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uKGEsYil7YSYmYS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSYmKCExPT09UyYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZUN1YmU6IGRvbid0IHVzZSBjdWJlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSwKUz0hMCksYT1hLnRleHR1cmUpO2EmJmEuaXNDdWJlVGV4dHVyZXx8QXJyYXkuaXNBcnJheShhLmltYWdlKSYmNj09PWEuaW1hZ2UubGVuZ3RoP3coYSxiKTp4KGEsYil9fWZ1bmN0aW9uIEtoKGEsYixjKXt2YXIgZD1jLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uKGEpe2lmKDEwMDk9PT1hKXJldHVybiA1MTIxO2lmKDEwMTc9PT1hKXJldHVybiAzMjgxOTtpZigxMDE4PT09YSlyZXR1cm4gMzI4MjA7aWYoMTAxOT09PWEpcmV0dXJuIDMzNjM1O2lmKDEwMTA9PT1hKXJldHVybiA1MTIwO2lmKDEwMTE9PT1hKXJldHVybiA1MTIyO2lmKDEwMTI9PT1hKXJldHVybiA1MTIzO2lmKDEwMTM9PT1hKXJldHVybiA1MTI0O2lmKDEwMTQ9PT1hKXJldHVybiA1MTI1O2lmKDEwMTU9PT1hKXJldHVybiA1MTI2O2lmKDEwMTY9PT1hKXtpZihkKXJldHVybiA1MTMxO3ZhciBjPWIuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7cmV0dXJuIG51bGwhPT1jP2MuSEFMRl9GTE9BVF9PRVM6Cm51bGx9aWYoMTAyMT09PWEpcmV0dXJuIDY0MDY7aWYoMTAyMj09PWEpcmV0dXJuIDY0MDc7aWYoMTAyMz09PWEpcmV0dXJuIDY0MDg7aWYoMTAyND09PWEpcmV0dXJuIDY0MDk7aWYoMTAyNT09PWEpcmV0dXJuIDY0MTA7aWYoMTAyNj09PWEpcmV0dXJuIDY0MDI7aWYoMTAyNz09PWEpcmV0dXJuIDM0MDQxO2lmKDEwMjg9PT1hKXJldHVybiA2NDAzO2lmKDMzNzc2PT09YXx8MzM3Nzc9PT1hfHwzMzc3OD09PWF8fDMzNzc5PT09YSlpZihjPWIuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpLG51bGwhPT1jKXtpZigzMzc3Nj09PWEpcmV0dXJuIGMuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDtpZigzMzc3Nz09PWEpcmV0dXJuIGMuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYoMzM3Nzg9PT1hKXJldHVybiBjLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKDMzNzc5PT09YSlyZXR1cm4gYy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVH1lbHNlIHJldHVybiBudWxsOwppZigzNTg0MD09PWF8fDM1ODQxPT09YXx8MzU4NDI9PT1hfHwzNTg0Mz09PWEpaWYoYz1iLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiksbnVsbCE9PWMpe2lmKDM1ODQwPT09YSlyZXR1cm4gYy5DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HO2lmKDM1ODQxPT09YSlyZXR1cm4gYy5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO2lmKDM1ODQyPT09YSlyZXR1cm4gYy5DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRztpZigzNTg0Mz09PWEpcmV0dXJuIGMuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUd9ZWxzZSByZXR1cm4gbnVsbDtpZigzNjE5Nj09PWEpcmV0dXJuIGM9Yi5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiksbnVsbCE9PWM/Yy5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYoMzc4MDg9PT1hfHwzNzgwOT09PWF8fDM3ODEwPT09YXx8Mzc4MTE9PT1hfHwzNzgxMj09PWF8fDM3ODEzPT09CmF8fDM3ODE0PT09YXx8Mzc4MTU9PT1hfHwzNzgxNj09PWF8fDM3ODE3PT09YXx8Mzc4MTg9PT1hfHwzNzgxOT09PWF8fDM3ODIwPT09YXx8Mzc4MjE9PT1hKXJldHVybiBjPWIuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIpLG51bGwhPT1jP2E6bnVsbDtpZigxMDIwPT09YSl7aWYoZClyZXR1cm4gMzQwNDI7Yz1iLmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpO3JldHVybiBudWxsIT09Yz9jLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMOm51bGx9fX19ZnVuY3Rpb24gZmcoYSxiLGMsZCl7QmEuY2FsbCh0aGlzLGEsYixkKTt0aGlzLnN0ZW5jaWxCdWZmZXI9dGhpcy5kZXB0aEJ1ZmZlcj0hMTt0aGlzLm51bVZpZXdzPWN9ZnVuY3Rpb24gbGsoYSxiKXtmdW5jdGlvbiBjKGEpe2lmKGEuaXNBcnJheUNhbWVyYSlyZXR1cm4gYS5jYW1lcmFzO3JbMF09YTtyZXR1cm4gcn1mdW5jdGlvbiBkKGEpe2lmKHZvaWQgMD09PWEuaXNBcnJheUNhbWVyYSlyZXR1cm4hMDthPWEuY2FtZXJhczsKaWYoYS5sZW5ndGg+cClyZXR1cm4hMTtmb3IodmFyIGI9MSxjPWEubGVuZ3RoO2I8YztiKyspaWYoYVswXS52aWV3cG9ydC56IT09YVtiXS52aWV3cG9ydC56fHxhWzBdLnZpZXdwb3J0LnchPT1hW2JdLnZpZXdwb3J0LncpcmV0dXJuITE7cmV0dXJuITB9dmFyIGU9YS5leHRlbnNpb25zLGY9YS5wcm9wZXJ0aWVzLGcsaCxsLG0scixxLGsscD0wO3RoaXMuaXNBdmFpbGFibGU9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1rKXt2YXIgYT1lLmdldCgiT1ZSX211bHRpdmlldzIiKTtpZihrPW51bGwhPT1hJiYhMT09PWIuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMpZm9yKHA9Yi5nZXRQYXJhbWV0ZXIoYS5NQVhfVklFV1NfT1ZSKSxnPW5ldyBmZygwLDAsMikscT1uZXcgQixtPVtdLGw9W10scj1bXSxhPTA7YTxwO2ErKyltW2FdPW5ldyBRLGxbYV09bmV3IFp9cmV0dXJuIGt9O3RoaXMuYXR0YWNoQ2FtZXJhPWZ1bmN0aW9uKGIpe2lmKCExIT09ZChiKSl7KGg9YS5nZXRSZW5kZXJUYXJnZXQoKSk/CnEuc2V0KGgud2lkdGgsaC5oZWlnaHQpOmEuZ2V0RHJhd2luZ0J1ZmZlclNpemUocSk7aWYoYi5pc0FycmF5Q2FtZXJhKXt2YXIgYz1iLmNhbWVyYXNbMF0udmlld3BvcnQ7Zy5zZXRTaXplKGMueixjLncpO2cuc2V0TnVtVmlld3MoYi5jYW1lcmFzLmxlbmd0aCl9ZWxzZSBnLnNldFNpemUocS54LHEueSksZy5zZXROdW1WaWV3cygyKTthLnNldFJlbmRlclRhcmdldChnKX19O3RoaXMuZGV0YWNoQ2FtZXJhPWZ1bmN0aW9uKGMpe2lmKGc9PT1hLmdldFJlbmRlclRhcmdldCgpKXthLnNldFJlbmRlclRhcmdldChoKTt2YXIgZD1nLGU9ZC5udW1WaWV3cyxsPWYuZ2V0KGQpLl9fd2ViZ2xWaWV3RnJhbWVidWZmZXJzLG09ZC53aWR0aDtkPWQuaGVpZ2h0O2lmKGMuaXNBcnJheUNhbWVyYSlmb3IodmFyIHI9MDtyPGU7cisrKXt2YXIgaz1jLmNhbWVyYXNbcl0udmlld3BvcnQsdT1rLngscD1rLnksdD11K2suejtrPXAray53O2IuYmluZEZyYW1lYnVmZmVyKDM2MDA4LGxbcl0pO2IuYmxpdEZyYW1lYnVmZmVyKDAsCjAsbSxkLHUscCx0LGssMTYzODQsOTcyOCl9ZWxzZSBiLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxsWzBdKSxiLmJsaXRGcmFtZWJ1ZmZlcigwLDAsbSxkLDAsMCxxLngscS55LDE2Mzg0LDk3MjgpfX07dGhpcy51cGRhdGVDYW1lcmFQcm9qZWN0aW9uTWF0cmljZXNVbmlmb3JtPWZ1bmN0aW9uKGEsZCl7YT1jKGEpO2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKW1bZV0uY29weShhW2VdLnByb2plY3Rpb25NYXRyaXgpO2Quc2V0VmFsdWUoYiwicHJvamVjdGlvbk1hdHJpY2VzIixtKX07dGhpcy51cGRhdGVDYW1lcmFWaWV3TWF0cmljZXNVbmlmb3JtPWZ1bmN0aW9uKGEsZCl7YT1jKGEpO2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKW1bZV0uY29weShhW2VdLm1hdHJpeFdvcmxkSW52ZXJzZSk7ZC5zZXRWYWx1ZShiLCJ2aWV3TWF0cmljZXMiLG0pfTt0aGlzLnVwZGF0ZU9iamVjdE1hdHJpY2VzVW5pZm9ybXM9ZnVuY3Rpb24oYSxkLGUpe2Q9YyhkKTtmb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKyltW2ZdLm11bHRpcGx5TWF0cmljZXMoZFtmXS5tYXRyaXhXb3JsZEludmVyc2UsCmEubWF0cml4V29ybGQpLGxbZl0uZ2V0Tm9ybWFsTWF0cml4KG1bZl0pO2Uuc2V0VmFsdWUoYiwibW9kZWxWaWV3TWF0cmljZXMiLG0pO2Uuc2V0VmFsdWUoYiwibm9ybWFsTWF0cmljZXMiLGwpfX1mdW5jdGlvbiBHYygpe0UuY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ikdyb3VwIn1mdW5jdGlvbiBKZChhKXtVLmNhbGwodGhpcyk7dGhpcy5jYW1lcmFzPWF8fFtdfWZ1bmN0aW9uIExoKGEsYixjKXtNaC5zZXRGcm9tTWF0cml4UG9zaXRpb24oYi5tYXRyaXhXb3JsZCk7Tmguc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGMubWF0cml4V29ybGQpO3ZhciBkPU1oLmRpc3RhbmNlVG8oTmgpLGU9Yi5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLGY9Yy5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLGc9ZVsxNF0vKGVbMTBdLTEpO2M9ZVsxNF0vKGVbMTBdKzEpO3ZhciBoPShlWzldKzEpL2VbNV0sbD0oZVs5XS0xKS9lWzVdLG09KGVbOF0tMSkvZVswXSxyPShmWzhdKzEpL2ZbMF07ZT1nKm07Zj1nKgpyO3I9ZC8oLW0rcik7bT1yKi1tO2IubWF0cml4V29ybGQuZGVjb21wb3NlKGEucG9zaXRpb24sYS5xdWF0ZXJuaW9uLGEuc2NhbGUpO2EudHJhbnNsYXRlWChtKTthLnRyYW5zbGF0ZVoocik7YS5tYXRyaXhXb3JsZC5jb21wb3NlKGEucG9zaXRpb24sYS5xdWF0ZXJuaW9uLGEuc2NhbGUpO2EubWF0cml4V29ybGRJbnZlcnNlLmdldEludmVyc2UoYS5tYXRyaXhXb3JsZCk7Yj1nK3I7Zz1jK3I7YS5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShlLW0sZisoZC1tKSxoKmMvZypiLGwqYy9nKmIsYixnKX1mdW5jdGlvbiBnZyhhKXtmdW5jdGlvbiBiKCl7cmV0dXJuIG51bGwhPT1oJiYhMD09PWguaXNQcmVzZW50aW5nfWZ1bmN0aW9uIGMoKXtpZihiKCkpe3ZhciBjPWguZ2V0RXllUGFyYW1ldGVycygibGVmdCIpO2U9MipjLnJlbmRlcldpZHRoKnA7Zj1jLnJlbmRlckhlaWdodCpwO0NhPWEuZ2V0UGl4ZWxSYXRpbygpO2EuZ2V0U2l6ZSh6KTthLnNldERyYXdpbmdCdWZmZXJTaXplKGUsCmYsMSk7eC52aWV3cG9ydC5zZXQoMCwwLGUvMixmKTtGLnZpZXdwb3J0LnNldChlLzIsMCxlLzIsZik7QS5zdGFydCgpO2cuZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbnN0YXJ0In0pfWVsc2UgZy5lbmFibGVkJiZhLnNldERyYXdpbmdCdWZmZXJTaXplKHoud2lkdGgsei5oZWlnaHQsQ2EpLEEuc3RvcCgpLGcuZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbmVuZCJ9KX1mdW5jdGlvbiBkKGEsYil7bnVsbCE9PWImJjQ9PT1iLmxlbmd0aCYmYS5zZXQoYlswXSplLGJbMV0qZixiWzJdKmUsYlszXSpmKX12YXIgZSxmLGc9dGhpcyxoPW51bGwsbD1udWxsLG09bnVsbCxyPVtdLHE9bmV3IFEsaz1uZXcgUSxwPTEsdD0ibG9jYWwtZmxvb3IiOyJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyYmIlZSRnJhbWVEYXRhImluIHdpbmRvdyYmKGw9bmV3IHdpbmRvdy5WUkZyYW1lRGF0YSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidnJkaXNwbGF5cHJlc2VudGNoYW5nZSIsYywhMSkpOwp2YXIgdj1uZXcgUSx5PW5ldyB3YSx3PW5ldyBuLHg9bmV3IFU7eC52aWV3cG9ydD1uZXcgZGE7eC5sYXllcnMuZW5hYmxlKDEpO3ZhciBGPW5ldyBVO0Yudmlld3BvcnQ9bmV3IGRhO0YubGF5ZXJzLmVuYWJsZSgyKTt2YXIgST1uZXcgSmQoW3gsRl0pO0kubGF5ZXJzLmVuYWJsZSgxKTtJLmxheWVycy5lbmFibGUoMik7dmFyIHo9bmV3IEIsQ2EsaWE9W107dGhpcy5lbmFibGVkPSExO3RoaXMuZ2V0Q29udHJvbGxlcj1mdW5jdGlvbihhKXt2YXIgYj1yW2FdO3ZvaWQgMD09PWImJihiPW5ldyBHYyxiLm1hdHJpeEF1dG9VcGRhdGU9ITEsYi52aXNpYmxlPSExLHJbYV09Yik7cmV0dXJuIGJ9O3RoaXMuZ2V0RGV2aWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGh9O3RoaXMuc2V0RGV2aWNlPWZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEmJihoPWEpO0Euc2V0Q29udGV4dChhKX07dGhpcy5zZXRGcmFtZWJ1ZmZlclNjYWxlRmFjdG9yPWZ1bmN0aW9uKGEpe3A9YX07dGhpcy5zZXRSZWZlcmVuY2VTcGFjZVR5cGU9CmZ1bmN0aW9uKGEpe3Q9YX07dGhpcy5zZXRQb3NlVGFyZ2V0PWZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEmJihtPWEpfTt0aGlzLmdldENhbWVyYT1mdW5jdGlvbihhKXt2YXIgYz0ibG9jYWwtZmxvb3IiPT09dD8xLjY6MDtpZighMT09PWIoKSlyZXR1cm4gYS5wb3NpdGlvbi5zZXQoMCxjLDApLGEucm90YXRpb24uc2V0KDAsMCwwKSxhO2guZGVwdGhOZWFyPWEubmVhcjtoLmRlcHRoRmFyPWEuZmFyO2guZ2V0RnJhbWVEYXRhKGwpO2lmKCJsb2NhbC1mbG9vciI9PT10KXt2YXIgZT1oLnN0YWdlUGFyYW1ldGVycztlP3EuZnJvbUFycmF5KGUuc2l0dGluZ1RvU3RhbmRpbmdUcmFuc2Zvcm0pOnEubWFrZVRyYW5zbGF0aW9uKDAsYywwKX1jPWwucG9zZTtlPW51bGwhPT1tP206YTtlLm1hdHJpeC5jb3B5KHEpO2UubWF0cml4LmRlY29tcG9zZShlLnBvc2l0aW9uLGUucXVhdGVybmlvbixlLnNjYWxlKTtudWxsIT09Yy5vcmllbnRhdGlvbiYmKHkuZnJvbUFycmF5KGMub3JpZW50YXRpb24pLAplLnF1YXRlcm5pb24ubXVsdGlwbHkoeSkpO251bGwhPT1jLnBvc2l0aW9uJiYoeS5zZXRGcm9tUm90YXRpb25NYXRyaXgocSksdy5mcm9tQXJyYXkoYy5wb3NpdGlvbiksdy5hcHBseVF1YXRlcm5pb24oeSksZS5wb3NpdGlvbi5hZGQodykpO2UudXBkYXRlTWF0cml4V29ybGQoKTt4Lm5lYXI9YS5uZWFyO0YubmVhcj1hLm5lYXI7eC5mYXI9YS5mYXI7Ri5mYXI9YS5mYXI7eC5tYXRyaXhXb3JsZEludmVyc2UuZnJvbUFycmF5KGwubGVmdFZpZXdNYXRyaXgpO0YubWF0cml4V29ybGRJbnZlcnNlLmZyb21BcnJheShsLnJpZ2h0Vmlld01hdHJpeCk7ay5nZXRJbnZlcnNlKHEpOyJsb2NhbC1mbG9vciI9PT10JiYoeC5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkoayksRi5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkoaykpO2E9ZS5wYXJlbnQ7bnVsbCE9PWEmJih2LmdldEludmVyc2UoYS5tYXRyaXhXb3JsZCkseC5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkodiksRi5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkodikpOwp4Lm1hdHJpeFdvcmxkLmdldEludmVyc2UoeC5tYXRyaXhXb3JsZEludmVyc2UpO0YubWF0cml4V29ybGQuZ2V0SW52ZXJzZShGLm1hdHJpeFdvcmxkSW52ZXJzZSk7eC5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShsLmxlZnRQcm9qZWN0aW9uTWF0cml4KTtGLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KGwucmlnaHRQcm9qZWN0aW9uTWF0cml4KTtMaChJLHgsRik7YT1oLmdldExheWVycygpO2EubGVuZ3RoJiYoYT1hWzBdLGQoeC52aWV3cG9ydCxhLmxlZnRCb3VuZHMpLGQoRi52aWV3cG9ydCxhLnJpZ2h0Qm91bmRzKSk7YTpmb3IoYT0wO2E8ci5sZW5ndGg7YSsrKXtjPXJbYV07Yjp7ZT1hO2Zvcih2YXIgZj1uYXZpZ2F0b3IuZ2V0R2FtZXBhZHMmJm5hdmlnYXRvci5nZXRHYW1lcGFkcygpLGc9MCx1PWYubGVuZ3RoO2c8dTtnKyspe3ZhciBwPWZbZ107aWYocCYmKCJEYXlkcmVhbSBDb250cm9sbGVyIj09PXAuaWR8fCJHZWFyIFZSIENvbnRyb2xsZXIiPT09cC5pZHx8Ik9jdWx1cyBHbyBDb250cm9sbGVyIj09PQpwLmlkfHwiT3BlblZSIEdhbWVwYWQiPT09cC5pZHx8cC5pZC5zdGFydHNXaXRoKCJPY3VsdXMgVG91Y2giKXx8cC5pZC5zdGFydHNXaXRoKCJIVEMgVml2ZSBGb2N1cyIpfHxwLmlkLnN0YXJ0c1dpdGgoIlNwYXRpYWwgQ29udHJvbGxlciIpKSl7dmFyIG49cC5oYW5kO2lmKDA9PT1lJiYoIiI9PT1ufHwicmlnaHQiPT09bil8fDE9PT1lJiYibGVmdCI9PT1uKXtlPXA7YnJlYWsgYn19fWU9dm9pZCAwfWlmKHZvaWQgMCE9PWUmJnZvaWQgMCE9PWUucG9zZSl7aWYobnVsbD09PWUucG9zZSlicmVhayBhO2Y9ZS5wb3NlOyExPT09Zi5oYXNQb3NpdGlvbiYmYy5wb3NpdGlvbi5zZXQoLjIsLS42LC0uMDUpO251bGwhPT1mLnBvc2l0aW9uJiZjLnBvc2l0aW9uLmZyb21BcnJheShmLnBvc2l0aW9uKTtudWxsIT09Zi5vcmllbnRhdGlvbiYmYy5xdWF0ZXJuaW9uLmZyb21BcnJheShmLm9yaWVudGF0aW9uKTtjLm1hdHJpeC5jb21wb3NlKGMucG9zaXRpb24sYy5xdWF0ZXJuaW9uLGMuc2NhbGUpOwpjLm1hdHJpeC5wcmVtdWx0aXBseShxKTtjLm1hdHJpeC5kZWNvbXBvc2UoYy5wb3NpdGlvbixjLnF1YXRlcm5pb24sYy5zY2FsZSk7Yy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwO2MudmlzaWJsZT0hMDtmPSJEYXlkcmVhbSBDb250cm9sbGVyIj09PWUuaWQ/MDoxO3ZvaWQgMD09PWlhW2FdJiYoaWFbYV09ITEpO2lhW2FdIT09ZS5idXR0b25zW2ZdLnByZXNzZWQmJihpYVthXT1lLmJ1dHRvbnNbZl0ucHJlc3NlZCwhMD09PWlhW2FdP2MuZGlzcGF0Y2hFdmVudCh7dHlwZToic2VsZWN0c3RhcnQifSk6KGMuZGlzcGF0Y2hFdmVudCh7dHlwZToic2VsZWN0ZW5kIn0pLGMuZGlzcGF0Y2hFdmVudCh7dHlwZToic2VsZWN0In0pKSl9ZWxzZSBjLnZpc2libGU9ITF9cmV0dXJuIEl9O3RoaXMuZ2V0U3RhbmRpbmdNYXRyaXg9ZnVuY3Rpb24oKXtyZXR1cm4gcX07dGhpcy5pc1ByZXNlbnRpbmc9Yjt2YXIgQT1uZXcgYWc7dGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKGEpe0Euc2V0QW5pbWF0aW9uTG9vcChhKTsKYigpJiZBLnN0YXJ0KCl9O3RoaXMuc3VibWl0RnJhbWU9ZnVuY3Rpb24oKXtiKCkmJmguc3VibWl0RnJhbWUoKX07dGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidnJkaXNwbGF5cHJlc2VudGNoYW5nZSIsYyl9O3RoaXMuc2V0RnJhbWVPZlJlZmVyZW5jZVR5cGU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYlZSTWFuYWdlcjogc2V0RnJhbWVPZlJlZmVyZW5jZVR5cGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiIpfX1mdW5jdGlvbiBPaChhLGIpe2Z1bmN0aW9uIGMoKXtyZXR1cm4gbnVsbCE9PW0mJm51bGwhPT1yfWZ1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPTA7YjxwLmxlbmd0aDtiKyspdFtiXT09PWEuaW5wdXRTb3VyY2UmJnBbYl0uZGlzcGF0Y2hFdmVudCh7dHlwZTphLnR5cGV9KX1mdW5jdGlvbiBlKCl7YS5zZXRGcmFtZWJ1ZmZlcihudWxsKTthLnNldFJlbmRlclRhcmdldChhLmdldFJlbmRlclRhcmdldCgpKTsKRi5zdG9wKCk7bC5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfWZ1bmN0aW9uIGYoYSl7cj1hO0Yuc2V0Q29udGV4dChtKTtGLnN0YXJ0KCk7bC5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9ZnVuY3Rpb24gZygpe2Zvcih2YXIgYT0wO2E8cC5sZW5ndGg7YSsrKXt2YXIgYj1hO2E6e3ZhciBjPW0uaW5wdXRTb3VyY2VzO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLGY9ZS5oYW5kZWRuZXNzO2lmKDA9PT1hJiYoIm5vbmUiPT09Znx8InJpZ2h0Ij09PWYpKXtjPWU7YnJlYWsgYX1pZigxPT09YSYmImxlZnQiPT09Zil7Yz1lO2JyZWFrIGF9fWM9dm9pZCAwfXRbYl09Y319ZnVuY3Rpb24gaChhLGIpe251bGw9PT1iP2EubWF0cml4V29ybGQuY29weShhLm1hdHJpeCk6YS5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKGIubWF0cml4V29ybGQsYS5tYXRyaXgpO2EubWF0cml4V29ybGRJbnZlcnNlLmdldEludmVyc2UoYS5tYXRyaXhXb3JsZCl9CnZhciBsPXRoaXMsbT1udWxsLHI9bnVsbCxxPSJsb2NhbC1mbG9vciIsaz1udWxsLHA9W10sdD1bXSxuPW5ldyBVO24ubGF5ZXJzLmVuYWJsZSgxKTtuLnZpZXdwb3J0PW5ldyBkYTt2YXIgeT1uZXcgVTt5LmxheWVycy5lbmFibGUoMik7eS52aWV3cG9ydD1uZXcgZGE7dmFyIHc9bmV3IEpkKFtuLHldKTt3LmxheWVycy5lbmFibGUoMSk7dy5sYXllcnMuZW5hYmxlKDIpO3RoaXMuZW5hYmxlZD0hMTt0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24oYSl7dmFyIGI9cFthXTt2b2lkIDA9PT1iJiYoYj1uZXcgR2MsYi5tYXRyaXhBdXRvVXBkYXRlPSExLGIudmlzaWJsZT0hMSxwW2FdPWIpO3JldHVybiBifTt0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24oKXt9O3RoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKGEpe3E9YX07dGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG19O3RoaXMuc2V0U2Vzc2lvbj1mdW5jdGlvbihhKXttPWE7bnVsbCE9PQptJiYobS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3QiLGQpLG0uYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLGQpLG0uYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZW5kIixkKSxtLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsZSksbS51cGRhdGVSZW5kZXJTdGF0ZSh7YmFzZUxheWVyOm5ldyBYUldlYkdMTGF5ZXIobSxiKX0pLG0ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKHEpLnRoZW4oZiksbS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dHNvdXJjZXNjaGFuZ2UiLGcpLGcoKSl9O3RoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKGEpe2lmKGMoKSl7dmFyIGI9YS5wYXJlbnQsZD13LmNhbWVyYXM7aCh3LGIpO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKWgoZFtlXSxiKTthLm1hdHJpeFdvcmxkLmNvcHkody5tYXRyaXhXb3JsZCk7YT1hLmNoaWxkcmVuO2U9MDtmb3IoYj1hLmxlbmd0aDtlPGI7ZSsrKWFbZV0udXBkYXRlTWF0cml4V29ybGQoITApO0xoKHcsbix5KTtyZXR1cm4gd31yZXR1cm4gYX07CnRoaXMuaXNQcmVzZW50aW5nPWM7dmFyIHg9bnVsbCxGPW5ldyBhZztGLnNldEFuaW1hdGlvbkxvb3AoZnVuY3Rpb24oYixjKXtrPWMuZ2V0Vmlld2VyUG9zZShyKTtpZihudWxsIT09ayl7dmFyIGQ9ay52aWV3cyxlPW0ucmVuZGVyU3RhdGUuYmFzZUxheWVyO2Euc2V0RnJhbWVidWZmZXIoZS5mcmFtZWJ1ZmZlcik7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPWRbZl0saD1lLmdldFZpZXdwb3J0KGcpLGw9dy5jYW1lcmFzW2ZdO2wubWF0cml4LmZyb21BcnJheShnLnRyYW5zZm9ybS5pbnZlcnNlLm1hdHJpeCkuZ2V0SW52ZXJzZShsLm1hdHJpeCk7bC5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShnLnByb2plY3Rpb25NYXRyaXgpO2wudmlld3BvcnQuc2V0KGgueCxoLnksaC53aWR0aCxoLmhlaWdodCk7MD09PWYmJncubWF0cml4LmNvcHkobC5tYXRyaXgpfX1mb3IoZj0wO2Y8cC5sZW5ndGg7ZisrKXtkPXBbZl07aWYoZT10W2ZdKWlmKGU9Yy5nZXRQb3NlKGUudGFyZ2V0UmF5U3BhY2UsCnIpLG51bGwhPT1lKXtkLm1hdHJpeC5mcm9tQXJyYXkoZS50cmFuc2Zvcm0ubWF0cml4KTtkLm1hdHJpeC5kZWNvbXBvc2UoZC5wb3NpdGlvbixkLnJvdGF0aW9uLGQuc2NhbGUpO2QudmlzaWJsZT0hMDtjb250aW51ZX1kLnZpc2libGU9ITF9eCYmeChiKX0pO3RoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbihhKXt4PWF9O3RoaXMuZGlzcG9zZT1mdW5jdGlvbigpe307dGhpcy5nZXRTdGFuZGluZ01hdHJpeD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBnZXRTdGFuZGluZ01hdHJpeCgpIGlzIG5vIGxvbmdlciBuZWVkZWQuIik7cmV0dXJuIG5ldyBRfTt0aGlzLmdldERldmljZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBnZXREZXZpY2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiIpfTt0aGlzLnNldERldmljZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBzZXREZXZpY2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiIpfTsKdGhpcy5zZXRGcmFtZU9mUmVmZXJlbmNlVHlwZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBzZXRGcmFtZU9mUmVmZXJlbmNlVHlwZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIil9O3RoaXMuc3VibWl0RnJhbWU9ZnVuY3Rpb24oKXt9fWZ1bmN0aW9uIGhnKGEpe3ZhciBiO2Z1bmN0aW9uIGMoKXtxYT1uZXcgYmooSyk7RmE9bmV3ICRpKEsscWEsYSk7ITE9PT1GYS5pc1dlYkdMMiYmKHFhLmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLHFhLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKSxxYS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxxYS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikscWEuZ2V0KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSxxYS5nZXQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKSxxYS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSk7cWEuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKcGE9bmV3IEtoKEsscWEsRmEpO2FhPW5ldyBqayhLLHFhLEZhKTthYS5zY2lzc29yKG9iLmNvcHkoVSkubXVsdGlwbHlTY2FsYXIoZmEpLmZsb29yKCkpO2FhLnZpZXdwb3J0KFQuY29weShlYSkubXVsdGlwbHlTY2FsYXIoZmEpLmZsb29yKCkpO2NhPW5ldyBlaihLKTtaPW5ldyBhaztiYT1uZXcga2soSyxxYSxhYSxaLEZhLHBhLGNhKTtyYT1uZXcgWGkoSyk7eGE9bmV3IGNqKEsscmEsY2EpO3NhPW5ldyBoaihLLHhhLHJhLGNhKTt5YT1uZXcgZ2ooSyk7b2E9bmV3IFpqKEcscWEsRmEpO3dhPW5ldyBkazt2YT1uZXcgaWs7bWE9bmV3IFlpKEcsYWEsc2EsQSk7QWE9bmV3IFppKEsscWEsY2EsRmEpO0JhPW5ldyBkaihLLHFhLGNhLEZhKTtjYS5wcm9ncmFtcz1vYS5wcm9ncmFtcztHLmNhcGFiaWxpdGllcz1GYTtHLmV4dGVuc2lvbnM9cWE7Ry5wcm9wZXJ0aWVzPVo7Ry5yZW5kZXJMaXN0cz13YTtHLnN0YXRlPWFhO0cuaW5mbz1jYX1mdW5jdGlvbiBkKGEpe2EucHJldmVudERlZmF1bHQoKTsKY29uc29sZS5sb2coIlRIUkVFLldlYkdMUmVuZGVyZXI6IENvbnRleHQgTG9zdC4iKTtOPSEwfWZ1bmN0aW9uIGUoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKTtOPSExO2MoKX1mdW5jdGlvbiBmKGEpe2E9YS50YXJnZXQ7YS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixmKTtnKGEpO1oucmVtb3ZlKGEpfWZ1bmN0aW9uIGcoYSl7dmFyIGI9Wi5nZXQoYSkucHJvZ3JhbTthLnByb2dyYW09dm9pZCAwO3ZvaWQgMCE9PWImJm9hLnJlbGVhc2VQcm9ncmFtKGIpfWZ1bmN0aW9uIGgoYSxiKXthLnJlbmRlcihmdW5jdGlvbihhKXtHLnJlbmRlckJ1ZmZlckltbWVkaWF0ZShhLGIpfSl9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZighMSE9PWEudmlzaWJsZSl7aWYoYS5sYXllcnMudGVzdChiLmxheWVycykpaWYoYS5pc0dyb3VwKWM9YS5yZW5kZXJPcmRlcjtlbHNlIGlmKGEuaXNMT0QpITA9PT1hLmF1dG9VcGRhdGUmJmEudXBkYXRlKGIpOwplbHNlIGlmKGEuaXNMaWdodClDLnB1c2hMaWdodChhKSxhLmNhc3RTaGFkb3cmJkMucHVzaFNoYWRvdyhhKTtlbHNlIGlmKGEuaXNTcHJpdGUpe2lmKCFhLmZydXN0dW1DdWxsZWR8fGVnLmludGVyc2VjdHNTcHJpdGUoYSkpe2QmJkZiLnNldEZyb21NYXRyaXhQb3NpdGlvbihhLm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoSWQpO3ZhciBlPXNhLnVwZGF0ZShhKSxmPWEubWF0ZXJpYWw7Zi52aXNpYmxlJiZILnB1c2goYSxlLGYsYyxGYi56LG51bGwpfX1lbHNlIGlmKGEuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3QpZCYmRmIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGEubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChJZCksSC5wdXNoKGEsbnVsbCxhLm1hdGVyaWFsLGMsRmIueixudWxsKTtlbHNlIGlmKGEuaXNNZXNofHxhLmlzTGluZXx8YS5pc1BvaW50cylpZihhLmlzU2tpbm5lZE1lc2gmJmEuc2tlbGV0b24uZnJhbWUhPT1jYS5yZW5kZXIuZnJhbWUmJihhLnNrZWxldG9uLnVwZGF0ZSgpLAphLnNrZWxldG9uLmZyYW1lPWNhLnJlbmRlci5mcmFtZSksIWEuZnJ1c3R1bUN1bGxlZHx8ZWcuaW50ZXJzZWN0c09iamVjdChhKSlpZihkJiZGYi5zZXRGcm9tTWF0cml4UG9zaXRpb24oYS5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KElkKSxlPXNhLnVwZGF0ZShhKSxmPWEubWF0ZXJpYWwsQXJyYXkuaXNBcnJheShmKSlmb3IodmFyIGc9ZS5ncm91cHMsaD0wLG09Zy5sZW5ndGg7aDxtO2grKyl7dmFyIHI9Z1toXSxxPWZbci5tYXRlcmlhbEluZGV4XTtxJiZxLnZpc2libGUmJkgucHVzaChhLGUscSxjLEZiLnoscil9ZWxzZSBmLnZpc2libGUmJkgucHVzaChhLGUsZixjLEZiLnosbnVsbCk7YT1hLmNoaWxkcmVuO2g9MDtmb3IobT1hLmxlbmd0aDtoPG07aCsrKWwoYVtoXSxiLGMsZCl9fWZ1bmN0aW9uIG0oYSxiLGMsZCl7Zm9yKHZhciBlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKXt2YXIgZz1hW2VdLGg9Zy5vYmplY3QsbD1nLmdlb21ldHJ5LG09dm9pZCAwPT09ZD9nLm1hdGVyaWFsOgpkO2c9Zy5ncm91cDtpZihjLmlzQXJyYXlDYW1lcmEpaWYoJGI9YyxqYS5lbmFibGVkJiZ1YS5pc0F2YWlsYWJsZSgpKXIoaCxiLGMsbCxtLGcpO2Vsc2UgZm9yKHZhciBxPWMuY2FtZXJhcyxrPTAscD1xLmxlbmd0aDtrPHA7aysrKXt2YXIgdT1xW2tdO2gubGF5ZXJzLnRlc3QodS5sYXllcnMpJiYoYWEudmlld3BvcnQoVC5jb3B5KHUudmlld3BvcnQpKSxDLnNldHVwTGlnaHRzKHUpLHIoaCxiLHUsbCxtLGcpKX1lbHNlICRiPW51bGwscihoLGIsYyxsLG0sZyl9fWZ1bmN0aW9uIHIoYSxjLGQsZSxmLGcpe2Eub25CZWZvcmVSZW5kZXIoRyxjLGQsZSxmLGcpO0M9dmEuZ2V0KGMsJGJ8fGQpO2EubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoZC5tYXRyaXhXb3JsZEludmVyc2UsYS5tYXRyaXhXb3JsZCk7YS5ub3JtYWxNYXRyaXguZ2V0Tm9ybWFsTWF0cml4KGEubW9kZWxWaWV3TWF0cml4KTtpZihhLmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0KXthYS5zZXRNYXRlcmlhbChmKTsKdmFyIGw9ayhkLGMuZm9nLGYsYSk7SmU9Yj1udWxsO1k9ITE7aChhLGwpfWVsc2UgRy5yZW5kZXJCdWZmZXJEaXJlY3QoZCxjLmZvZyxlLGYsYSxnKTthLm9uQWZ0ZXJSZW5kZXIoRyxjLGQsZSxmLGcpO0M9dmEuZ2V0KGMsJGJ8fGQpfWZ1bmN0aW9uIHEoYSxiLGMpe3ZhciBkPVouZ2V0KGEpLGU9Qy5zdGF0ZS5saWdodHMsaD1lLnN0YXRlLnZlcnNpb247Yz1vYS5nZXRQYXJhbWV0ZXJzKGEsZS5zdGF0ZSxDLnN0YXRlLnNoYWRvd3NBcnJheSxiLFBhLm51bVBsYW5lcyxQYS5udW1JbnRlcnNlY3Rpb24sYyk7dmFyIGw9b2EuZ2V0UHJvZ3JhbUNhY2hlS2V5KGEsYyksbT1kLnByb2dyYW0scj0hMDtpZih2b2lkIDA9PT1tKWEuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsZik7ZWxzZSBpZihtLmNhY2hlS2V5IT09bClnKGEpO2Vsc2V7aWYoZC5saWdodHNTdGF0ZVZlcnNpb24hPT1oKWQubGlnaHRzU3RhdGVWZXJzaW9uPWg7ZWxzZSBpZih2b2lkIDAhPT1jLnNoYWRlcklEKXJldHVybjsKcj0hMX1yJiYoYy5zaGFkZXJJRD8obD1jYltjLnNoYWRlcklEXSxkLnNoYWRlcj17bmFtZTphLnR5cGUsdW5pZm9ybXM6WGIobC51bmlmb3JtcyksdmVydGV4U2hhZGVyOmwudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOmwuZnJhZ21lbnRTaGFkZXJ9KTpkLnNoYWRlcj17bmFtZTphLnR5cGUsdW5pZm9ybXM6YS51bmlmb3Jtcyx2ZXJ0ZXhTaGFkZXI6YS52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6YS5mcmFnbWVudFNoYWRlcn0sYS5vbkJlZm9yZUNvbXBpbGUoZC5zaGFkZXIsRyksbD1vYS5nZXRQcm9ncmFtQ2FjaGVLZXkoYSxjKSxtPW9hLmFjcXVpcmVQcm9ncmFtKGEsZC5zaGFkZXIsYyxsKSxkLnByb2dyYW09bSxhLnByb2dyYW09bSk7Yz1tLmdldEF0dHJpYnV0ZXMoKTtpZihhLm1vcnBoVGFyZ2V0cylmb3IobD1hLm51bVN1cHBvcnRlZE1vcnBoVGFyZ2V0cz0wO2w8Ry5tYXhNb3JwaFRhcmdldHM7bCsrKTA8PWNbIm1vcnBoVGFyZ2V0IitsXSYmYS5udW1TdXBwb3J0ZWRNb3JwaFRhcmdldHMrKzsKaWYoYS5tb3JwaE5vcm1hbHMpZm9yKGw9YS5udW1TdXBwb3J0ZWRNb3JwaE5vcm1hbHM9MDtsPEcubWF4TW9ycGhOb3JtYWxzO2wrKykwPD1jWyJtb3JwaE5vcm1hbCIrbF0mJmEubnVtU3VwcG9ydGVkTW9ycGhOb3JtYWxzKys7Yz1kLnNoYWRlci51bmlmb3JtcztpZighYS5pc1NoYWRlck1hdGVyaWFsJiYhYS5pc1Jhd1NoYWRlck1hdGVyaWFsfHwhMD09PWEuY2xpcHBpbmcpZC5udW1DbGlwcGluZ1BsYW5lcz1QYS5udW1QbGFuZXMsZC5udW1JbnRlcnNlY3Rpb249UGEubnVtSW50ZXJzZWN0aW9uLGMuY2xpcHBpbmdQbGFuZXM9UGEudW5pZm9ybTtkLmZvZz1iO2QubmVlZHNMaWdodHM9YS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fGEuaXNNZXNoUGhvbmdNYXRlcmlhbHx8YS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxhLmlzU2hhZG93TWF0ZXJpYWx8fGEuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1hLmxpZ2h0cztkLmxpZ2h0c1N0YXRlVmVyc2lvbj1oO2QubmVlZHNMaWdodHMmJihjLmFtYmllbnRMaWdodENvbG9yLnZhbHVlPQplLnN0YXRlLmFtYmllbnQsYy5saWdodFByb2JlLnZhbHVlPWUuc3RhdGUucHJvYmUsYy5kaXJlY3Rpb25hbExpZ2h0cy52YWx1ZT1lLnN0YXRlLmRpcmVjdGlvbmFsLGMuc3BvdExpZ2h0cy52YWx1ZT1lLnN0YXRlLnNwb3QsYy5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1lLnN0YXRlLnJlY3RBcmVhLGMucG9pbnRMaWdodHMudmFsdWU9ZS5zdGF0ZS5wb2ludCxjLmhlbWlzcGhlcmVMaWdodHMudmFsdWU9ZS5zdGF0ZS5oZW1pLGMuZGlyZWN0aW9uYWxTaGFkb3dNYXAudmFsdWU9ZS5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hcCxjLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LnZhbHVlPWUuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgsYy5zcG90U2hhZG93TWFwLnZhbHVlPWUuc3RhdGUuc3BvdFNoYWRvd01hcCxjLnNwb3RTaGFkb3dNYXRyaXgudmFsdWU9ZS5zdGF0ZS5zcG90U2hhZG93TWF0cml4LGMucG9pbnRTaGFkb3dNYXAudmFsdWU9ZS5zdGF0ZS5wb2ludFNoYWRvd01hcCwKYy5wb2ludFNoYWRvd01hdHJpeC52YWx1ZT1lLnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTthPWQucHJvZ3JhbS5nZXRVbmlmb3JtcygpO2E9Q2Iuc2VxV2l0aFZhbHVlKGEuc2VxLGMpO2QudW5pZm9ybXNMaXN0PWF9ZnVuY3Rpb24gayhhLGIsYyxkKXtiYS5yZXNldFRleHR1cmVVbml0cygpO3ZhciBlPVouZ2V0KGMpLGY9Qy5zdGF0ZS5saWdodHM7SGUmJih0YXx8YSE9PVgpJiZQYS5zZXRTdGF0ZShjLmNsaXBwaW5nUGxhbmVzLGMuY2xpcEludGVyc2VjdGlvbixjLmNsaXBTaGFkb3dzLGEsZSxhPT09WCYmYy5pZD09PWhhKTshMT09PWMubmVlZHNVcGRhdGUmJih2b2lkIDA9PT1lLnByb2dyYW0/Yy5uZWVkc1VwZGF0ZT0hMDpjLmZvZyYmZS5mb2chPT1iP2MubmVlZHNVcGRhdGU9ITA6ZS5uZWVkc0xpZ2h0cyYmZS5saWdodHNTdGF0ZVZlcnNpb24hPT1mLnN0YXRlLnZlcnNpb24/Yy5uZWVkc1VwZGF0ZT0hMDp2b2lkIDA9PT1lLm51bUNsaXBwaW5nUGxhbmVzfHxlLm51bUNsaXBwaW5nUGxhbmVzPT09ClBhLm51bVBsYW5lcyYmZS5udW1JbnRlcnNlY3Rpb249PT1QYS5udW1JbnRlcnNlY3Rpb258fChjLm5lZWRzVXBkYXRlPSEwKSk7Yy5uZWVkc1VwZGF0ZSYmKHEoYyxiLGQpLGMubmVlZHNVcGRhdGU9ITEpO3ZhciBnPSExLGg9ITEsbD0hMTtmPWUucHJvZ3JhbTt2YXIgbT1mLmdldFVuaWZvcm1zKCkscj1lLnNoYWRlci51bmlmb3JtczthYS51c2VQcm9ncmFtKGYucHJvZ3JhbSkmJihsPWg9Zz0hMCk7Yy5pZCE9PWhhJiYoaGE9Yy5pZCxoPSEwKTtpZihnfHxYIT09YSl7MDxmLm51bU11bHRpdmlld1ZpZXdzP3VhLnVwZGF0ZUNhbWVyYVByb2plY3Rpb25NYXRyaWNlc1VuaWZvcm0oYSxtKTptLnNldFZhbHVlKEssInByb2plY3Rpb25NYXRyaXgiLGEucHJvamVjdGlvbk1hdHJpeCk7RmEubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmbS5zZXRWYWx1ZShLLCJsb2dEZXB0aEJ1ZkZDIiwyLyhNYXRoLmxvZyhhLmZhcisxKS9NYXRoLkxOMikpO1ghPT1hJiYoWD1hLGw9aD0hMCk7aWYoYy5pc1NoYWRlck1hdGVyaWFsfHwKYy5pc01lc2hQaG9uZ01hdGVyaWFsfHxjLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGMuZW52TWFwKWc9bS5tYXAuY2FtZXJhUG9zaXRpb24sdm9pZCAwIT09ZyYmZy5zZXRWYWx1ZShLLEZiLnNldEZyb21NYXRyaXhQb3NpdGlvbihhLm1hdHJpeFdvcmxkKSk7KGMuaXNNZXNoUGhvbmdNYXRlcmlhbHx8Yy5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fGMuaXNNZXNoQmFzaWNNYXRlcmlhbHx8Yy5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxjLmlzU2hhZGVyTWF0ZXJpYWwpJiZtLnNldFZhbHVlKEssImlzT3J0aG9ncmFwaGljIiwhMD09PWEuaXNPcnRob2dyYXBoaWNDYW1lcmEpO2lmKGMuaXNNZXNoUGhvbmdNYXRlcmlhbHx8Yy5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fGMuaXNNZXNoQmFzaWNNYXRlcmlhbHx8Yy5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxjLmlzU2hhZGVyTWF0ZXJpYWx8fGMuc2tpbm5pbmcpMDxmLm51bU11bHRpdmlld1ZpZXdzP3VhLnVwZGF0ZUNhbWVyYVZpZXdNYXRyaWNlc1VuaWZvcm0oYSwKbSk6bS5zZXRWYWx1ZShLLCJ2aWV3TWF0cml4IixhLm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYoYy5za2lubmluZyYmKG0uc2V0T3B0aW9uYWwoSyxkLCJiaW5kTWF0cml4IiksbS5zZXRPcHRpb25hbChLLGQsImJpbmRNYXRyaXhJbnZlcnNlIiksZz1kLnNrZWxldG9uKSl7dmFyIGs9Zy5ib25lcztpZihGYS5mbG9hdFZlcnRleFRleHR1cmVzKXtpZih2b2lkIDA9PT1nLmJvbmVUZXh0dXJlKXtrPU1hdGguc3FydCg0KmsubGVuZ3RoKTtrPVAuY2VpbFBvd2VyT2ZUd28oayk7az1NYXRoLm1heChrLDQpO3ZhciB1PW5ldyBGbG9hdDMyQXJyYXkoayprKjQpO3Uuc2V0KGcuYm9uZU1hdHJpY2VzKTt2YXIgbj1uZXcgWWIodSxrLGssMTAyMywxMDE1KTtnLmJvbmVNYXRyaWNlcz11O2cuYm9uZVRleHR1cmU9bjtnLmJvbmVUZXh0dXJlU2l6ZT1rfW0uc2V0VmFsdWUoSywiYm9uZVRleHR1cmUiLGcuYm9uZVRleHR1cmUsYmEpO20uc2V0VmFsdWUoSywiYm9uZVRleHR1cmVTaXplIixnLmJvbmVUZXh0dXJlU2l6ZSl9ZWxzZSBtLnNldE9wdGlvbmFsKEssCmcsImJvbmVNYXRyaWNlcyIpfWlmKGh8fGUucmVjZWl2ZVNoYWRvdyE9PWQucmVjZWl2ZVNoYWRvdyllLnJlY2VpdmVTaGFkb3c9ZC5yZWNlaXZlU2hhZG93LG0uc2V0VmFsdWUoSywicmVjZWl2ZVNoYWRvdyIsZC5yZWNlaXZlU2hhZG93KTtpZihoKXttLnNldFZhbHVlKEssInRvbmVNYXBwaW5nRXhwb3N1cmUiLEcudG9uZU1hcHBpbmdFeHBvc3VyZSk7bS5zZXRWYWx1ZShLLCJ0b25lTWFwcGluZ1doaXRlUG9pbnQiLEcudG9uZU1hcHBpbmdXaGl0ZVBvaW50KTtlLm5lZWRzTGlnaHRzJiYoaD1sLHIuYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9aCxyLmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9aCxyLmRpcmVjdGlvbmFsTGlnaHRzLm5lZWRzVXBkYXRlPWgsci5wb2ludExpZ2h0cy5uZWVkc1VwZGF0ZT1oLHIuc3BvdExpZ2h0cy5uZWVkc1VwZGF0ZT1oLHIucmVjdEFyZWFMaWdodHMubmVlZHNVcGRhdGU9aCxyLmhlbWlzcGhlcmVMaWdodHMubmVlZHNVcGRhdGU9aCk7YiYmYy5mb2cmJgooci5mb2dDb2xvci52YWx1ZS5jb3B5KGIuY29sb3IpLGIuaXNGb2c/KHIuZm9nTmVhci52YWx1ZT1iLm5lYXIsci5mb2dGYXIudmFsdWU9Yi5mYXIpOmIuaXNGb2dFeHAyJiYoci5mb2dEZW5zaXR5LnZhbHVlPWIuZGVuc2l0eSkpO2lmKGMuaXNNZXNoQmFzaWNNYXRlcmlhbClwKHIsYyk7ZWxzZSBpZihjLmlzTWVzaExhbWJlcnRNYXRlcmlhbClwKHIsYyksYy5lbWlzc2l2ZU1hcCYmKHIuZW1pc3NpdmVNYXAudmFsdWU9Yy5lbWlzc2l2ZU1hcCk7ZWxzZSBpZihjLmlzTWVzaFBob25nTWF0ZXJpYWwpcChyLGMpLGMuaXNNZXNoVG9vbk1hdGVyaWFsPyh0KHIsYyksYy5ncmFkaWVudE1hcCYmKHIuZ3JhZGllbnRNYXAudmFsdWU9Yy5ncmFkaWVudE1hcCkpOnQocixjKTtlbHNlIGlmKGMuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbClwKHIsYyksYy5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPyh2KHIsYyksci5yZWZsZWN0aXZpdHkudmFsdWU9Yy5yZWZsZWN0aXZpdHksci5jbGVhcmNvYXQudmFsdWU9CmMuY2xlYXJjb2F0LHIuY2xlYXJjb2F0Um91Z2huZXNzLnZhbHVlPWMuY2xlYXJjb2F0Um91Z2huZXNzLGMuc2hlZW4mJnIuc2hlZW4udmFsdWUuY29weShjLnNoZWVuKSxjLmNsZWFyY29hdE5vcm1hbE1hcCYmKHIuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUuY29weShjLmNsZWFyY29hdE5vcm1hbFNjYWxlKSxyLmNsZWFyY29hdE5vcm1hbE1hcC52YWx1ZT1jLmNsZWFyY29hdE5vcm1hbE1hcCwxPT09Yy5zaWRlJiZyLmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxyLnRyYW5zcGFyZW5jeS52YWx1ZT1jLnRyYW5zcGFyZW5jeSk6dihyLGMpO2Vsc2UgaWYoYy5pc01lc2hNYXRjYXBNYXRlcmlhbClwKHIsYyksYy5tYXRjYXAmJihyLm1hdGNhcC52YWx1ZT1jLm1hdGNhcCksYy5idW1wTWFwJiYoci5idW1wTWFwLnZhbHVlPWMuYnVtcE1hcCxyLmJ1bXBTY2FsZS52YWx1ZT1jLmJ1bXBTY2FsZSwxPT09Yy5zaWRlJiYoci5idW1wU2NhbGUudmFsdWUqPS0xKSksYy5ub3JtYWxNYXAmJgooci5ub3JtYWxNYXAudmFsdWU9Yy5ub3JtYWxNYXAsci5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGMubm9ybWFsU2NhbGUpLDE9PT1jLnNpZGUmJnIubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLGMuZGlzcGxhY2VtZW50TWFwJiYoci5kaXNwbGFjZW1lbnRNYXAudmFsdWU9Yy5kaXNwbGFjZW1lbnRNYXAsci5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1jLmRpc3BsYWNlbWVudFNjYWxlLHIuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1jLmRpc3BsYWNlbWVudEJpYXMpO2Vsc2UgaWYoYy5pc01lc2hEZXB0aE1hdGVyaWFsKXAocixjKSxjLmRpc3BsYWNlbWVudE1hcCYmKHIuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWMuZGlzcGxhY2VtZW50TWFwLHIuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9Yy5kaXNwbGFjZW1lbnRTY2FsZSxyLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9Yy5kaXNwbGFjZW1lbnRCaWFzKTtlbHNlIGlmKGMuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbClwKHIsYyksYy5kaXNwbGFjZW1lbnRNYXAmJgooci5kaXNwbGFjZW1lbnRNYXAudmFsdWU9Yy5kaXNwbGFjZW1lbnRNYXAsci5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1jLmRpc3BsYWNlbWVudFNjYWxlLHIuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1jLmRpc3BsYWNlbWVudEJpYXMpLHIucmVmZXJlbmNlUG9zaXRpb24udmFsdWUuY29weShjLnJlZmVyZW5jZVBvc2l0aW9uKSxyLm5lYXJEaXN0YW5jZS52YWx1ZT1jLm5lYXJEaXN0YW5jZSxyLmZhckRpc3RhbmNlLnZhbHVlPWMuZmFyRGlzdGFuY2U7ZWxzZSBpZihjLmlzTWVzaE5vcm1hbE1hdGVyaWFsKXAocixjKSxjLmJ1bXBNYXAmJihyLmJ1bXBNYXAudmFsdWU9Yy5idW1wTWFwLHIuYnVtcFNjYWxlLnZhbHVlPWMuYnVtcFNjYWxlLDE9PT1jLnNpZGUmJihyLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxjLm5vcm1hbE1hcCYmKHIubm9ybWFsTWFwLnZhbHVlPWMubm9ybWFsTWFwLHIubm9ybWFsU2NhbGUudmFsdWUuY29weShjLm5vcm1hbFNjYWxlKSwxPT09Yy5zaWRlJiZyLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSwKYy5kaXNwbGFjZW1lbnRNYXAmJihyLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1jLmRpc3BsYWNlbWVudE1hcCxyLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWMuZGlzcGxhY2VtZW50U2NhbGUsci5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWMuZGlzcGxhY2VtZW50Qmlhcyk7ZWxzZSBpZihjLmlzTGluZUJhc2ljTWF0ZXJpYWwpci5kaWZmdXNlLnZhbHVlLmNvcHkoYy5jb2xvciksci5vcGFjaXR5LnZhbHVlPWMub3BhY2l0eSxjLmlzTGluZURhc2hlZE1hdGVyaWFsJiYoci5kYXNoU2l6ZS52YWx1ZT1jLmRhc2hTaXplLHIudG90YWxTaXplLnZhbHVlPWMuZGFzaFNpemUrYy5nYXBTaXplLHIuc2NhbGUudmFsdWU9Yy5zY2FsZSk7ZWxzZSBpZihjLmlzUG9pbnRzTWF0ZXJpYWwpe3IuZGlmZnVzZS52YWx1ZS5jb3B5KGMuY29sb3IpO3Iub3BhY2l0eS52YWx1ZT1jLm9wYWNpdHk7ci5zaXplLnZhbHVlPWMuc2l6ZSpmYTtyLnNjYWxlLnZhbHVlPS41Klc7Yy5tYXAmJihyLm1hcC52YWx1ZT1jLm1hcCk7CmMuYWxwaGFNYXAmJihyLmFscGhhTWFwLnZhbHVlPWMuYWxwaGFNYXApO2lmKGMubWFwKXZhciB5PWMubWFwO2Vsc2UgYy5hbHBoYU1hcCYmKHk9Yy5hbHBoYU1hcCk7dm9pZCAwIT09eSYmKCEwPT09eS5tYXRyaXhBdXRvVXBkYXRlJiZ5LnVwZGF0ZU1hdHJpeCgpLHIudXZUcmFuc2Zvcm0udmFsdWUuY29weSh5Lm1hdHJpeCkpfWVsc2UgaWYoYy5pc1Nwcml0ZU1hdGVyaWFsKXtyLmRpZmZ1c2UudmFsdWUuY29weShjLmNvbG9yKTtyLm9wYWNpdHkudmFsdWU9Yy5vcGFjaXR5O3Iucm90YXRpb24udmFsdWU9Yy5yb3RhdGlvbjtjLm1hcCYmKHIubWFwLnZhbHVlPWMubWFwKTtjLmFscGhhTWFwJiYoci5hbHBoYU1hcC52YWx1ZT1jLmFscGhhTWFwKTtpZihjLm1hcCl2YXIgdz1jLm1hcDtlbHNlIGMuYWxwaGFNYXAmJih3PWMuYWxwaGFNYXApO3ZvaWQgMCE9PXcmJighMD09PXcubWF0cml4QXV0b1VwZGF0ZSYmdy51cGRhdGVNYXRyaXgoKSxyLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkody5tYXRyaXgpKX1lbHNlIGMuaXNTaGFkb3dNYXRlcmlhbCYmCihyLmNvbG9yLnZhbHVlLmNvcHkoYy5jb2xvciksci5vcGFjaXR5LnZhbHVlPWMub3BhY2l0eSk7dm9pZCAwIT09ci5sdGNfMSYmKHIubHRjXzEudmFsdWU9TC5MVENfMSk7dm9pZCAwIT09ci5sdGNfMiYmKHIubHRjXzIudmFsdWU9TC5MVENfMik7Q2IudXBsb2FkKEssZS51bmlmb3Jtc0xpc3QscixiYSk7Yy5pc1NoYWRlck1hdGVyaWFsJiYoYy51bmlmb3Jtc05lZWRVcGRhdGU9ITEpfWMuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1jLnVuaWZvcm1zTmVlZFVwZGF0ZSYmKENiLnVwbG9hZChLLGUudW5pZm9ybXNMaXN0LHIsYmEpLGMudW5pZm9ybXNOZWVkVXBkYXRlPSExKTtjLmlzU3ByaXRlTWF0ZXJpYWwmJm0uc2V0VmFsdWUoSywiY2VudGVyIixkLmNlbnRlcik7MDxmLm51bU11bHRpdmlld1ZpZXdzP3VhLnVwZGF0ZU9iamVjdE1hdHJpY2VzVW5pZm9ybXMoZCxhLG0pOihtLnNldFZhbHVlKEssIm1vZGVsVmlld01hdHJpeCIsZC5tb2RlbFZpZXdNYXRyaXgpLG0uc2V0VmFsdWUoSywKIm5vcm1hbE1hdHJpeCIsZC5ub3JtYWxNYXRyaXgpKTttLnNldFZhbHVlKEssIm1vZGVsTWF0cml4IixkLm1hdHJpeFdvcmxkKTtyZXR1cm4gZn1mdW5jdGlvbiBwKGEsYil7YS5vcGFjaXR5LnZhbHVlPWIub3BhY2l0eTtiLmNvbG9yJiZhLmRpZmZ1c2UudmFsdWUuY29weShiLmNvbG9yKTtiLmVtaXNzaXZlJiZhLmVtaXNzaXZlLnZhbHVlLmNvcHkoYi5lbWlzc2l2ZSkubXVsdGlwbHlTY2FsYXIoYi5lbWlzc2l2ZUludGVuc2l0eSk7Yi5tYXAmJihhLm1hcC52YWx1ZT1iLm1hcCk7Yi5hbHBoYU1hcCYmKGEuYWxwaGFNYXAudmFsdWU9Yi5hbHBoYU1hcCk7Yi5zcGVjdWxhck1hcCYmKGEuc3BlY3VsYXJNYXAudmFsdWU9Yi5zcGVjdWxhck1hcCk7Yi5lbnZNYXAmJihhLmVudk1hcC52YWx1ZT1iLmVudk1hcCxhLmZsaXBFbnZNYXAudmFsdWU9Yi5lbnZNYXAuaXNDdWJlVGV4dHVyZT8tMToxLGEucmVmbGVjdGl2aXR5LnZhbHVlPWIucmVmbGVjdGl2aXR5LGEucmVmcmFjdGlvblJhdGlvLnZhbHVlPQpiLnJlZnJhY3Rpb25SYXRpbyxhLm1heE1pcExldmVsLnZhbHVlPVouZ2V0KGIuZW52TWFwKS5fX21heE1pcExldmVsKTtiLmxpZ2h0TWFwJiYoYS5saWdodE1hcC52YWx1ZT1iLmxpZ2h0TWFwLGEubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9Yi5saWdodE1hcEludGVuc2l0eSk7Yi5hb01hcCYmKGEuYW9NYXAudmFsdWU9Yi5hb01hcCxhLmFvTWFwSW50ZW5zaXR5LnZhbHVlPWIuYW9NYXBJbnRlbnNpdHkpO2lmKGIubWFwKXZhciBjPWIubWFwO2Vsc2UgYi5zcGVjdWxhck1hcD9jPWIuc3BlY3VsYXJNYXA6Yi5kaXNwbGFjZW1lbnRNYXA/Yz1iLmRpc3BsYWNlbWVudE1hcDpiLm5vcm1hbE1hcD9jPWIubm9ybWFsTWFwOmIuYnVtcE1hcD9jPWIuYnVtcE1hcDpiLnJvdWdobmVzc01hcD9jPWIucm91Z2huZXNzTWFwOmIubWV0YWxuZXNzTWFwP2M9Yi5tZXRhbG5lc3NNYXA6Yi5hbHBoYU1hcD9jPWIuYWxwaGFNYXA6Yi5lbWlzc2l2ZU1hcCYmKGM9Yi5lbWlzc2l2ZU1hcCk7dm9pZCAwIT09CmMmJihjLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihjPWMudGV4dHVyZSksITA9PT1jLm1hdHJpeEF1dG9VcGRhdGUmJmMudXBkYXRlTWF0cml4KCksYS51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KGMubWF0cml4KSl9ZnVuY3Rpb24gdChhLGIpe2Euc3BlY3VsYXIudmFsdWUuY29weShiLnNwZWN1bGFyKTthLnNoaW5pbmVzcy52YWx1ZT1NYXRoLm1heChiLnNoaW5pbmVzcywxRS00KTtiLmVtaXNzaXZlTWFwJiYoYS5lbWlzc2l2ZU1hcC52YWx1ZT1iLmVtaXNzaXZlTWFwKTtiLmJ1bXBNYXAmJihhLmJ1bXBNYXAudmFsdWU9Yi5idW1wTWFwLGEuYnVtcFNjYWxlLnZhbHVlPWIuYnVtcFNjYWxlLDE9PT1iLnNpZGUmJihhLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtiLm5vcm1hbE1hcCYmKGEubm9ybWFsTWFwLnZhbHVlPWIubm9ybWFsTWFwLGEubm9ybWFsU2NhbGUudmFsdWUuY29weShiLm5vcm1hbFNjYWxlKSwxPT09Yi5zaWRlJiZhLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtiLmRpc3BsYWNlbWVudE1hcCYmCihhLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1iLmRpc3BsYWNlbWVudE1hcCxhLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWIuZGlzcGxhY2VtZW50U2NhbGUsYS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWIuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gdihhLGIpe2Eucm91Z2huZXNzLnZhbHVlPWIucm91Z2huZXNzO2EubWV0YWxuZXNzLnZhbHVlPWIubWV0YWxuZXNzO2Iucm91Z2huZXNzTWFwJiYoYS5yb3VnaG5lc3NNYXAudmFsdWU9Yi5yb3VnaG5lc3NNYXApO2IubWV0YWxuZXNzTWFwJiYoYS5tZXRhbG5lc3NNYXAudmFsdWU9Yi5tZXRhbG5lc3NNYXApO2IuZW1pc3NpdmVNYXAmJihhLmVtaXNzaXZlTWFwLnZhbHVlPWIuZW1pc3NpdmVNYXApO2IuYnVtcE1hcCYmKGEuYnVtcE1hcC52YWx1ZT1iLmJ1bXBNYXAsYS5idW1wU2NhbGUudmFsdWU9Yi5idW1wU2NhbGUsMT09PWIuc2lkZSYmKGEuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Iubm9ybWFsTWFwJiYoYS5ub3JtYWxNYXAudmFsdWU9CmIubm9ybWFsTWFwLGEubm9ybWFsU2NhbGUudmFsdWUuY29weShiLm5vcm1hbFNjYWxlKSwxPT09Yi5zaWRlJiZhLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtiLmRpc3BsYWNlbWVudE1hcCYmKGEuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWIuZGlzcGxhY2VtZW50TWFwLGEuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9Yi5kaXNwbGFjZW1lbnRTY2FsZSxhLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9Yi5kaXNwbGFjZW1lbnRCaWFzKTtiLmVudk1hcCYmKGEuZW52TWFwSW50ZW5zaXR5LnZhbHVlPWIuZW52TWFwSW50ZW5zaXR5KX1hPWF8fHt9O3ZhciB5PXZvaWQgMCE9PWEuY2FudmFzP2EuY2FudmFzOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpLHc9dm9pZCAwIT09YS5jb250ZXh0P2EuY29udGV4dDpudWxsLHg9dm9pZCAwIT09YS5hbHBoYT9hLmFscGhhOiExLEY9dm9pZCAwIT09YS5kZXB0aD9hLmRlcHRoOgohMCxJPXZvaWQgMCE9PWEuc3RlbmNpbD9hLnN0ZW5jaWw6ITAsej12b2lkIDAhPT1hLmFudGlhbGlhcz9hLmFudGlhbGlhczohMSxBPXZvaWQgMCE9PWEucHJlbXVsdGlwbGllZEFscGhhP2EucHJlbXVsdGlwbGllZEFscGhhOiEwLEU9dm9pZCAwIT09YS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI/YS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITEsRD12b2lkIDAhPT1hLnBvd2VyUHJlZmVyZW5jZT9hLnBvd2VyUHJlZmVyZW5jZToiZGVmYXVsdCIsSj12b2lkIDAhPT1hLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ/YS5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiExLEg9bnVsbCxDPW51bGw7dGhpcy5kb21FbGVtZW50PXk7dGhpcy5kZWJ1Zz17Y2hlY2tTaGFkZXJFcnJvcnM6ITB9O3RoaXMuc29ydE9iamVjdHM9dGhpcy5hdXRvQ2xlYXJTdGVuY2lsPXRoaXMuYXV0b0NsZWFyRGVwdGg9dGhpcy5hdXRvQ2xlYXJDb2xvcj10aGlzLmF1dG9DbGVhcj0hMDt0aGlzLmNsaXBwaW5nUGxhbmVzPQpbXTt0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExO3RoaXMuZ2FtbWFGYWN0b3I9Mjt0aGlzLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPXRoaXMuZ2FtbWFPdXRwdXQ9dGhpcy5nYW1tYUlucHV0PSExO3RoaXMudG9uZU1hcHBpbmdXaGl0ZVBvaW50PXRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT10aGlzLnRvbmVNYXBwaW5nPTE7dGhpcy5tYXhNb3JwaFRhcmdldHM9ODt0aGlzLm1heE1vcnBoTm9ybWFscz00O3ZhciBHPXRoaXMsTj0hMSxPPW51bGwsUz0wLFY9MCxSPW51bGwsSWU9bnVsbCxoYT0tMTt2YXIgSmU9Yj1udWxsO3ZhciBZPSExO3ZhciBYPW51bGwsJGI9bnVsbCxUPW5ldyBkYSxvYj1uZXcgZGEsa2E9bnVsbCxNPXkud2lkdGgsVz15LmhlaWdodCxmYT0xLGVhPW5ldyBkYSgwLDAsTSxXKSxVPW5ldyBkYSgwLDAsTSxXKSxuYT0hMSxlZz1uZXcgRGQsUGE9bmV3IGFqLEhlPSExLHRhPSExLElkPW5ldyBRLEZiPW5ldyBuO3RyeXt4PXthbHBoYTp4LGRlcHRoOkYsc3RlbmNpbDpJLAphbnRpYWxpYXM6eixwcmVtdWx0aXBsaWVkQWxwaGE6QSxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6RSxwb3dlclByZWZlcmVuY2U6RCxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OkoseHJDb21wYXRpYmxlOiEwfTt5LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGQsITEpO3kuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLGUsITEpO3ZhciBLPXd8fHkuZ2V0Q29udGV4dCgid2ViZ2wiLHgpfHx5LmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIseCk7aWYobnVsbD09PUspe2lmKG51bGwhPT15LmdldENvbnRleHQoIndlYmdsIikpdGhyb3cgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQgd2l0aCB5b3VyIHNlbGVjdGVkIGF0dHJpYnV0ZXMuIik7dGhyb3cgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIik7fXZvaWQgMD09PUsuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYoSy5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9CmZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaChQaCl7dGhyb3cgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIitQaC5tZXNzYWdlKSxQaDt9dmFyIHFhLEZhLGFhLGNhLFosYmEscmEseGEsc2Esb2Esd2EsdmEsbWEseWEsQWEsQmEscGE7YygpO3ZhciBqYT0idW5kZWZpbmVkIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJiJ4ciJpbiBuYXZpZ2F0b3ImJiJpc1Nlc3Npb25TdXBwb3J0ZWQiaW4gbmF2aWdhdG9yLnhyP25ldyBPaChHLEspOm5ldyBnZyhHKTt0aGlzLnZyPWphO3ZhciB1YT1uZXcgbGsoRyxLKSxFYT1uZXcgSWgoRyxzYSxGYS5tYXhUZXh0dXJlU2l6ZSk7dGhpcy5zaGFkb3dNYXA9RWE7dGhpcy5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIEt9O3RoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gSy5nZXRDb250ZXh0QXR0cmlidXRlcygpfTt0aGlzLmZvcmNlQ29udGV4dExvc3M9CmZ1bmN0aW9uKCl7dmFyIGE9cWEuZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTthJiZhLmxvc2VDb250ZXh0KCl9O3RoaXMuZm9yY2VDb250ZXh0UmVzdG9yZT1mdW5jdGlvbigpe3ZhciBhPXFhLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7YSYmYS5yZXN0b3JlQ29udGV4dCgpfTt0aGlzLmdldFBpeGVsUmF0aW89ZnVuY3Rpb24oKXtyZXR1cm4gZmF9O3RoaXMuc2V0UGl4ZWxSYXRpbz1mdW5jdGlvbihhKXt2b2lkIDAhPT1hJiYoZmE9YSx0aGlzLnNldFNpemUoTSxXLCExKSl9O3RoaXMuZ2V0U2l6ZT1mdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJXZWJHTFJlbmRlcmVyOiAuZ2V0c2l6ZSgpIG5vdyByZXF1aXJlcyBhIFZlY3RvcjIgYXMgYW4gYXJndW1lbnQiKSxhPW5ldyBCKTtyZXR1cm4gYS5zZXQoTSxXKX07dGhpcy5zZXRTaXplPWZ1bmN0aW9uKGEsYixjKXtqYS5pc1ByZXNlbnRpbmcoKT9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpOgooTT1hLFc9Yix5LndpZHRoPU1hdGguZmxvb3IoYSpmYSkseS5oZWlnaHQ9TWF0aC5mbG9vcihiKmZhKSwhMSE9PWMmJih5LnN0eWxlLndpZHRoPWErInB4Iix5LnN0eWxlLmhlaWdodD1iKyJweCIpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLGEsYikpfTt0aGlzLmdldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIldlYkdMUmVuZGVyZXI6IC5nZXRkcmF3aW5nQnVmZmVyU2l6ZSgpIG5vdyByZXF1aXJlcyBhIFZlY3RvcjIgYXMgYW4gYXJndW1lbnQiKSxhPW5ldyBCKTtyZXR1cm4gYS5zZXQoTSpmYSxXKmZhKS5mbG9vcigpfTt0aGlzLnNldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKGEsYixjKXtNPWE7Vz1iO2ZhPWM7eS53aWR0aD1NYXRoLmZsb29yKGEqYyk7eS5oZWlnaHQ9TWF0aC5mbG9vcihiKmMpO3RoaXMuc2V0Vmlld3BvcnQoMCwwLGEsYil9O3RoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKGEpe3ZvaWQgMD09PQphJiYoY29uc29sZS53YXJuKCJXZWJHTFJlbmRlcmVyOiAuZ2V0Q3VycmVudFZpZXdwb3J0KCkgbm93IHJlcXVpcmVzIGEgVmVjdG9yNCBhcyBhbiBhcmd1bWVudCIpLGE9bmV3IGRhKTtyZXR1cm4gYS5jb3B5KFQpfTt0aGlzLmdldFZpZXdwb3J0PWZ1bmN0aW9uKGEpe3JldHVybiBhLmNvcHkoZWEpfTt0aGlzLnNldFZpZXdwb3J0PWZ1bmN0aW9uKGEsYixjLGQpe2EuaXNWZWN0b3I0P2VhLnNldChhLngsYS55LGEueixhLncpOmVhLnNldChhLGIsYyxkKTthYS52aWV3cG9ydChULmNvcHkoZWEpLm11bHRpcGx5U2NhbGFyKGZhKS5mbG9vcigpKX07dGhpcy5nZXRTY2lzc29yPWZ1bmN0aW9uKGEpe3JldHVybiBhLmNvcHkoVSl9O3RoaXMuc2V0U2Npc3Nvcj1mdW5jdGlvbihhLGIsYyxkKXthLmlzVmVjdG9yND9VLnNldChhLngsYS55LGEueixhLncpOlUuc2V0KGEsYixjLGQpO2FhLnNjaXNzb3Iob2IuY29weShVKS5tdWx0aXBseVNjYWxhcihmYSkuZmxvb3IoKSl9O3RoaXMuZ2V0U2Npc3NvclRlc3Q9CmZ1bmN0aW9uKCl7cmV0dXJuIG5hfTt0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKGEpe2FhLnNldFNjaXNzb3JUZXN0KG5hPWEpfTt0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gbWEuZ2V0Q2xlYXJDb2xvcigpfTt0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXttYS5zZXRDbGVhckNvbG9yLmFwcGx5KG1hLGFyZ3VtZW50cyl9O3RoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBtYS5nZXRDbGVhckFscGhhKCl9O3RoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe21hLnNldENsZWFyQWxwaGEuYXBwbHkobWEsYXJndW1lbnRzKX07dGhpcy5jbGVhcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9MDtpZih2b2lkIDA9PT1hfHxhKWR8PTE2Mzg0O2lmKHZvaWQgMD09PWJ8fGIpZHw9MjU2O2lmKHZvaWQgMD09PWN8fGMpZHw9MTAyNDtLLmNsZWFyKGQpfTt0aGlzLmNsZWFyQ29sb3I9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCEwLCExLCExKX07dGhpcy5jbGVhckRlcHRoPQpmdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfTt0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfTt0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGQsITEpO3kucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLGUsITEpO3dhLmRpc3Bvc2UoKTt2YS5kaXNwb3NlKCk7Wi5kaXNwb3NlKCk7c2EuZGlzcG9zZSgpO2phLmRpc3Bvc2UoKTt6YS5zdG9wKCl9O3RoaXMucmVuZGVyQnVmZmVySW1tZWRpYXRlPWZ1bmN0aW9uKGEsYil7YWEuaW5pdEF0dHJpYnV0ZXMoKTt2YXIgYz1aLmdldChhKTthLmhhc1Bvc2l0aW9ucyYmIWMucG9zaXRpb24mJihjLnBvc2l0aW9uPUsuY3JlYXRlQnVmZmVyKCkpO2EuaGFzTm9ybWFscyYmIWMubm9ybWFsJiYoYy5ub3JtYWw9Sy5jcmVhdGVCdWZmZXIoKSk7YS5oYXNVdnMmJiFjLnV2JiYoYy51dj1LLmNyZWF0ZUJ1ZmZlcigpKTsKYS5oYXNDb2xvcnMmJiFjLmNvbG9yJiYoYy5jb2xvcj1LLmNyZWF0ZUJ1ZmZlcigpKTtiPWIuZ2V0QXR0cmlidXRlcygpO2EuaGFzUG9zaXRpb25zJiYoSy5iaW5kQnVmZmVyKDM0OTYyLGMucG9zaXRpb24pLEsuYnVmZmVyRGF0YSgzNDk2MixhLnBvc2l0aW9uQXJyYXksMzUwNDgpLGFhLmVuYWJsZUF0dHJpYnV0ZShiLnBvc2l0aW9uKSxLLnZlcnRleEF0dHJpYlBvaW50ZXIoYi5wb3NpdGlvbiwzLDUxMjYsITEsMCwwKSk7YS5oYXNOb3JtYWxzJiYoSy5iaW5kQnVmZmVyKDM0OTYyLGMubm9ybWFsKSxLLmJ1ZmZlckRhdGEoMzQ5NjIsYS5ub3JtYWxBcnJheSwzNTA0OCksYWEuZW5hYmxlQXR0cmlidXRlKGIubm9ybWFsKSxLLnZlcnRleEF0dHJpYlBvaW50ZXIoYi5ub3JtYWwsMyw1MTI2LCExLDAsMCkpO2EuaGFzVXZzJiYoSy5iaW5kQnVmZmVyKDM0OTYyLGMudXYpLEsuYnVmZmVyRGF0YSgzNDk2MixhLnV2QXJyYXksMzUwNDgpLGFhLmVuYWJsZUF0dHJpYnV0ZShiLnV2KSxLLnZlcnRleEF0dHJpYlBvaW50ZXIoYi51diwKMiw1MTI2LCExLDAsMCkpO2EuaGFzQ29sb3JzJiYoSy5iaW5kQnVmZmVyKDM0OTYyLGMuY29sb3IpLEsuYnVmZmVyRGF0YSgzNDk2MixhLmNvbG9yQXJyYXksMzUwNDgpLGFhLmVuYWJsZUF0dHJpYnV0ZShiLmNvbG9yKSxLLnZlcnRleEF0dHJpYlBvaW50ZXIoYi5jb2xvciwzLDUxMjYsITEsMCwwKSk7YWEuZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXMoKTtLLmRyYXdBcnJheXMoNCwwLGEuY291bnQpO2EuY291bnQ9MH07dGhpcy5yZW5kZXJCdWZmZXJEaXJlY3Q9ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoPWYuaXNNZXNoJiYwPmYubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTthYS5zZXRNYXRlcmlhbChlLGgpO3ZhciBsPWsoYSxjLGUsZiksbT0hMTtpZihiIT09ZC5pZHx8SmUhPT1sLmlkfHxZIT09KCEwPT09ZS53aXJlZnJhbWUpKWI9ZC5pZCxKZT1sLmlkLFk9ITA9PT1lLndpcmVmcmFtZSxtPSEwO2YubW9ycGhUYXJnZXRJbmZsdWVuY2VzJiYoeWEudXBkYXRlKGYsZCxlLGwpLAptPSEwKTtoPWQuaW5kZXg7dmFyIHI9ZC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2M9MTshMD09PWUud2lyZWZyYW1lJiYoaD14YS5nZXRXaXJlZnJhbWVBdHRyaWJ1dGUoZCksYz0yKTthPUFhO2lmKG51bGwhPT1oKXt2YXIgcT1yYS5nZXQoaCk7YT1CYTthLnNldEluZGV4KHEpfWlmKG0pe2lmKCExIT09RmEuaXNXZWJHTDJ8fCFmLmlzSW5zdGFuY2VkTWVzaCYmIWQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeXx8bnVsbCE9PXFhLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKXthYS5pbml0QXR0cmlidXRlcygpO209ZC5hdHRyaWJ1dGVzO2w9bC5nZXRBdHRyaWJ1dGVzKCk7dmFyIHU9ZS5kZWZhdWx0QXR0cmlidXRlVmFsdWVzO2ZvcihJIGluIGwpe3ZhciBwPWxbSV07aWYoMDw9cCl7dmFyIHQ9bVtJXTtpZih2b2lkIDAhPT10KXt2YXIgbj10Lm5vcm1hbGl6ZWQsdj10Lml0ZW1TaXplLHk9cmEuZ2V0KHQpO2lmKHZvaWQgMCE9PXkpe3ZhciB3PXkuYnVmZmVyLHg9eS50eXBlO3k9CnkuYnl0ZXNQZXJFbGVtZW50O2lmKHQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7dmFyIHo9dC5kYXRhLEY9ei5zdHJpZGU7dD10Lm9mZnNldDt6JiZ6LmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI/KGFhLmVuYWJsZUF0dHJpYnV0ZUFuZERpdmlzb3IocCx6Lm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PWQubWF4SW5zdGFuY2VkQ291bnQmJihkLm1heEluc3RhbmNlZENvdW50PXoubWVzaFBlckF0dHJpYnV0ZSp6LmNvdW50KSk6YWEuZW5hYmxlQXR0cmlidXRlKHApO0suYmluZEJ1ZmZlcigzNDk2Mix3KTtLLnZlcnRleEF0dHJpYlBvaW50ZXIocCx2LHgsbixGKnksdCp5KX1lbHNlIHQuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU/KGFhLmVuYWJsZUF0dHJpYnV0ZUFuZERpdmlzb3IocCx0Lm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PWQubWF4SW5zdGFuY2VkQ291bnQmJihkLm1heEluc3RhbmNlZENvdW50PXQubWVzaFBlckF0dHJpYnV0ZSp0LmNvdW50KSk6CmFhLmVuYWJsZUF0dHJpYnV0ZShwKSxLLmJpbmRCdWZmZXIoMzQ5NjIsdyksSy52ZXJ0ZXhBdHRyaWJQb2ludGVyKHAsdix4LG4sMCwwKX19ZWxzZSBpZigiaW5zdGFuY2VNYXRyaXgiPT09SSl5PXJhLmdldChmLmluc3RhbmNlTWF0cml4KSx2b2lkIDAhPT15JiYodz15LmJ1ZmZlcix4PXkudHlwZSxhYS5lbmFibGVBdHRyaWJ1dGVBbmREaXZpc29yKHArMCwxKSxhYS5lbmFibGVBdHRyaWJ1dGVBbmREaXZpc29yKHArMSwxKSxhYS5lbmFibGVBdHRyaWJ1dGVBbmREaXZpc29yKHArMiwxKSxhYS5lbmFibGVBdHRyaWJ1dGVBbmREaXZpc29yKHArMywxKSxLLmJpbmRCdWZmZXIoMzQ5NjIsdyksSy52ZXJ0ZXhBdHRyaWJQb2ludGVyKHArMCw0LHgsITEsNjQsMCksSy52ZXJ0ZXhBdHRyaWJQb2ludGVyKHArMSw0LHgsITEsNjQsMTYpLEsudmVydGV4QXR0cmliUG9pbnRlcihwKzIsNCx4LCExLDY0LDMyKSxLLnZlcnRleEF0dHJpYlBvaW50ZXIocCszLDQseCwhMSw2NCw0OCkpO2Vsc2UgaWYodm9pZCAwIT09CnUmJihuPXVbSV0sdm9pZCAwIT09bikpc3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDI6Sy52ZXJ0ZXhBdHRyaWIyZnYocCxuKTticmVhaztjYXNlIDM6Sy52ZXJ0ZXhBdHRyaWIzZnYocCxuKTticmVhaztjYXNlIDQ6Sy52ZXJ0ZXhBdHRyaWI0ZnYocCxuKTticmVhaztkZWZhdWx0OksudmVydGV4QXR0cmliMWZ2KHAsbil9fX1hYS5kaXNhYmxlVW51c2VkQXR0cmlidXRlcygpfW51bGwhPT1oJiZLLmJpbmRCdWZmZXIoMzQ5NjMscS5idWZmZXIpfXE9SW5maW5pdHk7bnVsbCE9PWg/cT1oLmNvdW50OnZvaWQgMCE9PXImJihxPXIuY291bnQpO2g9ZC5kcmF3UmFuZ2Uuc3RhcnQqYztyPW51bGwhPT1nP2cuc3RhcnQqYzowO3ZhciBJPU1hdGgubWF4KGgscik7Zz1NYXRoLm1heCgwLE1hdGgubWluKHEsaCtkLmRyYXdSYW5nZS5jb3VudCpjLHIrKG51bGwhPT1nP2cuY291bnQqYzpJbmZpbml0eSkpLTEtSSsxKTtpZigwIT09Zyl7aWYoZi5pc01lc2gpaWYoITA9PT1lLndpcmVmcmFtZSlhYS5zZXRMaW5lV2lkdGgoZS53aXJlZnJhbWVMaW5ld2lkdGgqCihudWxsPT09Uj9mYToxKSksYS5zZXRNb2RlKDEpO2Vsc2Ugc3dpdGNoKGYuZHJhd01vZGUpe2Nhc2UgMDphLnNldE1vZGUoNCk7YnJlYWs7Y2FzZSAxOmEuc2V0TW9kZSg1KTticmVhaztjYXNlIDI6YS5zZXRNb2RlKDYpfWVsc2UgZi5pc0xpbmU/KGU9ZS5saW5ld2lkdGgsdm9pZCAwPT09ZSYmKGU9MSksYWEuc2V0TGluZVdpZHRoKGUqKG51bGw9PT1SP2ZhOjEpKSxmLmlzTGluZVNlZ21lbnRzP2Euc2V0TW9kZSgxKTpmLmlzTGluZUxvb3A/YS5zZXRNb2RlKDIpOmEuc2V0TW9kZSgzKSk6Zi5pc1BvaW50cz9hLnNldE1vZGUoMCk6Zi5pc1Nwcml0ZSYmYS5zZXRNb2RlKDQpO2YuaXNJbnN0YW5jZWRNZXNoP2EucmVuZGVySW5zdGFuY2VzKGQsSSxnLGYuY291bnQpOmQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT9hLnJlbmRlckluc3RhbmNlcyhkLEksZyxkLm1heEluc3RhbmNlZENvdW50KTphLnJlbmRlcihJLGcpfX07dGhpcy5jb21waWxlPWZ1bmN0aW9uKGEsYil7Qz12YS5nZXQoYSwKYik7Qy5pbml0KCk7YS50cmF2ZXJzZShmdW5jdGlvbihhKXthLmlzTGlnaHQmJihDLnB1c2hMaWdodChhKSxhLmNhc3RTaGFkb3cmJkMucHVzaFNoYWRvdyhhKSl9KTtDLnNldHVwTGlnaHRzKGIpO2EudHJhdmVyc2UoZnVuY3Rpb24oYil7aWYoYi5tYXRlcmlhbClpZihBcnJheS5pc0FycmF5KGIubWF0ZXJpYWwpKWZvcih2YXIgYz0wO2M8Yi5tYXRlcmlhbC5sZW5ndGg7YysrKXEoYi5tYXRlcmlhbFtjXSxhLmZvZyxiKTtlbHNlIHEoYi5tYXRlcmlhbCxhLmZvZyxiKX0pfTt2YXIgRGE9bnVsbCx6YT1uZXcgYWc7emEuc2V0QW5pbWF0aW9uTG9vcChmdW5jdGlvbihhKXtqYS5pc1ByZXNlbnRpbmcoKXx8RGEmJkRhKGEpfSk7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ6YS5zZXRDb250ZXh0KHdpbmRvdyk7dGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKGEpe0RhPWE7amEuc2V0QW5pbWF0aW9uTG9vcChhKTt6YS5zdGFydCgpfTt0aGlzLnJlbmRlcj1mdW5jdGlvbihhLApjLGQsZSl7aWYodm9pZCAwIT09ZCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcigpOiB0aGUgcmVuZGVyVGFyZ2V0IGFyZ3VtZW50IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc2V0UmVuZGVyVGFyZ2V0KCkgaW5zdGVhZC4iKTt2YXIgZj1kfWlmKHZvaWQgMCE9PWUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXIoKTogdGhlIGZvcmNlQ2xlYXIgYXJndW1lbnQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5jbGVhcigpIGluc3RlYWQuIik7dmFyIGc9ZX1jJiZjLmlzQ2FtZXJhP058fChKZT1iPW51bGwsWT0hMSxoYT0tMSxYPW51bGwsITA9PT1hLmF1dG9VcGRhdGUmJmEudXBkYXRlTWF0cml4V29ybGQoKSxudWxsPT09Yy5wYXJlbnQmJmMudXBkYXRlTWF0cml4V29ybGQoKSxqYS5lbmFibGVkJiYoYz1qYS5nZXRDYW1lcmEoYykpLEM9dmEuZ2V0KGEsYyksQy5pbml0KCksYS5vbkJlZm9yZVJlbmRlcihHLGEsYyxmfHxSKSxJZC5tdWx0aXBseU1hdHJpY2VzKGMucHJvamVjdGlvbk1hdHJpeCwKYy5tYXRyaXhXb3JsZEludmVyc2UpLGVnLnNldEZyb21NYXRyaXgoSWQpLHRhPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsSGU9UGEuaW5pdCh0aGlzLmNsaXBwaW5nUGxhbmVzLHRhLGMpLEg9d2EuZ2V0KGEsYyksSC5pbml0KCksbChhLGMsMCxHLnNvcnRPYmplY3RzKSwhMD09PUcuc29ydE9iamVjdHMmJkguc29ydCgpLEhlJiZQYS5iZWdpblNoYWRvd3MoKSxFYS5yZW5kZXIoQy5zdGF0ZS5zaGFkb3dzQXJyYXksYSxjKSxDLnNldHVwTGlnaHRzKGMpLEhlJiZQYS5lbmRTaGFkb3dzKCksdGhpcy5pbmZvLmF1dG9SZXNldCYmdGhpcy5pbmZvLnJlc2V0KCksdm9pZCAwIT09ZiYmdGhpcy5zZXRSZW5kZXJUYXJnZXQoZiksamEuZW5hYmxlZCYmdWEuaXNBdmFpbGFibGUoKSYmdWEuYXR0YWNoQ2FtZXJhKGMpLG1hLnJlbmRlcihILGEsYyxnKSxkPUgub3BhcXVlLGU9SC50cmFuc3BhcmVudCxhLm92ZXJyaWRlTWF0ZXJpYWw/KGY9YS5vdmVycmlkZU1hdGVyaWFsLGQubGVuZ3RoJiZtKGQsCmEsYyxmKSxlLmxlbmd0aCYmbShlLGEsYyxmKSk6KGQubGVuZ3RoJiZtKGQsYSxjKSxlLmxlbmd0aCYmbShlLGEsYykpLGEub25BZnRlclJlbmRlcihHLGEsYyksbnVsbCE9PVImJihiYS51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXAoUiksYmEudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQoUikpLGFhLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksYWEuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCEwKSxhYS5idWZmZXJzLmNvbG9yLnNldE1hc2soITApLGFhLnNldFBvbHlnb25PZmZzZXQoITEpLGphLmVuYWJsZWQmJih1YS5pc0F2YWlsYWJsZSgpJiZ1YS5kZXRhY2hDYW1lcmEoYyksamEuc3VibWl0RnJhbWUoKSksQz1IPW51bGwpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyOiBjYW1lcmEgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkNhbWVyYS4iKX07dGhpcy5zZXRGcmFtZWJ1ZmZlcj1mdW5jdGlvbihhKXtPIT09YSYmbnVsbD09PVImJksuYmluZEZyYW1lYnVmZmVyKDM2MTYwLAphKTtPPWF9O3RoaXMuZ2V0QWN0aXZlQ3ViZUZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gU307dGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiBWfTt0aGlzLmdldFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBSfTt0aGlzLnNldFJlbmRlclRhcmdldD1mdW5jdGlvbihhLGIsYyl7Uj1hO1M9YjtWPWM7YSYmdm9pZCAwPT09Wi5nZXQoYSkuX193ZWJnbEZyYW1lYnVmZmVyJiZiYS5zZXR1cFJlbmRlclRhcmdldChhKTt2YXIgZD1PLGU9ITE7YT8oZD1aLmdldChhKS5fX3dlYmdsRnJhbWVidWZmZXIsYS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZT8oZD1kW2J8fDBdLGU9ITApOmQ9YS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ/Wi5nZXQoYSkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyOmQsVC5jb3B5KGEudmlld3BvcnQpLG9iLmNvcHkoYS5zY2lzc29yKSxrYT1hLnNjaXNzb3JUZXN0KTooVC5jb3B5KGVhKS5tdWx0aXBseVNjYWxhcihmYSkuZmxvb3IoKSwKb2IuY29weShVKS5tdWx0aXBseVNjYWxhcihmYSkuZmxvb3IoKSxrYT1uYSk7SWUhPT1kJiYoSy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZCksSWU9ZCk7YWEudmlld3BvcnQoVCk7YWEuc2Npc3NvcihvYik7YWEuc2V0U2Npc3NvclRlc3Qoa2EpO2UmJihhPVouZ2V0KGEudGV4dHVyZSksSy5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNDA2OSsoYnx8MCksYS5fX3dlYmdsVGV4dHVyZSxjfHwwKSl9O3RoaXMucmVhZFJlbmRlclRhcmdldFBpeGVscz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtpZihhJiZhLmlzV2ViR0xSZW5kZXJUYXJnZXQpe3ZhciBoPVouZ2V0KGEpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjthLmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlJiZ2b2lkIDAhPT1nJiYoaD1oW2ddKTtpZihoKXtnPSExO2ghPT1JZSYmKEsuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGgpLGc9ITApO3RyeXt2YXIgbD1hLnRleHR1cmUsbT1sLmZvcm1hdCxyPWwudHlwZTsxMDIzIT09bSYmCnBhLmNvbnZlcnQobSkhPT1LLmdldFBhcmFtZXRlcigzNTczOSk/Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuIik6MTAwOT09PXJ8fHBhLmNvbnZlcnQocik9PT1LLmdldFBhcmFtZXRlcigzNTczOCl8fDEwMTU9PT1yJiYoRmEuaXNXZWJHTDJ8fHFhLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKXx8cWEuZ2V0KCJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiKSl8fDEwMTY9PT1yJiYoRmEuaXNXZWJHTDI/cWEuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6cWEuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSk/MzYwNTM9PT1LLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoMzYxNjApPzA8PWImJmI8PWEud2lkdGgtZCYmMDw9YyYmYzw9YS5oZWlnaHQtZSYmSy5yZWFkUGl4ZWxzKGIsYyxkLGUscGEuY29udmVydChtKSwKcGEuY29udmVydChyKSxmKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlYWRQaXhlbHMgZnJvbSByZW5kZXJUYXJnZXQgZmFpbGVkLiBGcmFtZWJ1ZmZlciBub3QgY29tcGxldGUuIik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLiIpfWZpbmFsbHl7ZyYmSy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsSWUpfX19ZWxzZSBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQuIil9O3RoaXMuY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlPWZ1bmN0aW9uKGEsYixjKXt2b2lkIDA9PT1jJiYoYz0wKTt2YXIgZD1NYXRoLnBvdygyLAotYyksZT1NYXRoLmZsb29yKGIuaW1hZ2Uud2lkdGgqZCk7ZD1NYXRoLmZsb29yKGIuaW1hZ2UuaGVpZ2h0KmQpO3ZhciBmPXBhLmNvbnZlcnQoYi5mb3JtYXQpO2JhLnNldFRleHR1cmUyRChiLDApO0suY29weVRleEltYWdlMkQoMzU1MyxjLGYsYS54LGEueSxlLGQsMCk7YWEudW5iaW5kVGV4dHVyZSgpfTt0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIuaW1hZ2Uud2lkdGgsZj1iLmltYWdlLmhlaWdodCxnPXBhLmNvbnZlcnQoYy5mb3JtYXQpLGg9cGEuY29udmVydChjLnR5cGUpO2JhLnNldFRleHR1cmUyRChjLDApO2IuaXNEYXRhVGV4dHVyZT9LLnRleFN1YkltYWdlMkQoMzU1MyxkfHwwLGEueCxhLnksZSxmLGcsaCxiLmltYWdlLmRhdGEpOksudGV4U3ViSW1hZ2UyRCgzNTUzLGR8fDAsYS54LGEueSxnLGgsYi5pbWFnZSk7YWEudW5iaW5kVGV4dHVyZSgpfTt0aGlzLmluaXRUZXh0dXJlPWZ1bmN0aW9uKGEpe2JhLnNldFRleHR1cmUyRChhLAowKTthYS51bmJpbmRUZXh0dXJlKCl9OyJ1bmRlZmluZWQiIT09dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9ZnVuY3Rpb24gTGUoYSxiKXt0aGlzLm5hbWU9IiI7dGhpcy5jb2xvcj1uZXcgSihhKTt0aGlzLmRlbnNpdHk9dm9pZCAwIT09Yj9iOjIuNUUtNH1mdW5jdGlvbiBNZShhLGIsYyl7dGhpcy5uYW1lPSIiO3RoaXMuY29sb3I9bmV3IEooYSk7dGhpcy5uZWFyPXZvaWQgMCE9PWI/YjoxO3RoaXMuZmFyPXZvaWQgMCE9PWM/YzoxRTN9ZnVuY3Rpb24gcGIoYSxiKXt0aGlzLmFycmF5PWE7dGhpcy5zdHJpZGU9Yjt0aGlzLmNvdW50PXZvaWQgMCE9PWE/YS5sZW5ndGgvYjowO3RoaXMudXNhZ2U9MzUwNDQ7dGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9O3RoaXMudmVyc2lvbj0wfWZ1bmN0aW9uIEtkKGEsYixjLGQpe3RoaXMuZGF0YT0KYTt0aGlzLml0ZW1TaXplPWI7dGhpcy5vZmZzZXQ9Yzt0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1kfWZ1bmN0aW9uIEdiKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBKKDE2Nzc3MjE1KTt0aGlzLmFscGhhTWFwPXRoaXMubWFwPW51bGw7dGhpcy5yb3RhdGlvbj0wO3RoaXMudHJhbnNwYXJlbnQ9dGhpcy5zaXplQXR0ZW51YXRpb249ITA7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gTGQoYSl7RS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3ByaXRlIjtpZih2b2lkIDA9PT1IYyl7SGM9bmV3IEQ7dmFyIGI9bmV3IEZsb2F0MzJBcnJheShbLS41LC0uNSwwLDAsMCwuNSwtLjUsMCwxLDAsLjUsLjUsMCwxLDEsLS41LC41LDAsMCwxXSk7Yj1uZXcgcGIoYiw1KTtIYy5zZXRJbmRleChbMCwxLDIsMCwyLDNdKTtIYy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgS2QoYiwzLDAsITEpKTtIYy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgS2QoYiwKMiwzLCExKSl9dGhpcy5nZW9tZXRyeT1IYzt0aGlzLm1hdGVyaWFsPXZvaWQgMCE9PWE/YTpuZXcgR2I7dGhpcy5jZW50ZXI9bmV3IEIoLjUsLjUpfWZ1bmN0aW9uIE5lKGEsYixjLGQsZSxmKXtJYy5zdWJWZWN0b3JzKGEsYykuYWRkU2NhbGFyKC41KS5tdWx0aXBseShkKTt2b2lkIDAhPT1lPyhNZC54PWYqSWMueC1lKkljLnksTWQueT1lKkljLngrZipJYy55KTpNZC5jb3B5KEljKTthLmNvcHkoYik7YS54Kz1NZC54O2EueSs9TWQueTthLmFwcGx5TWF0cml4NChRaCl9ZnVuY3Rpb24gTmQoKXtFLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMT0QiO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse2xldmVsczp7ZW51bWVyYWJsZTohMCx2YWx1ZTpbXX19KTt0aGlzLmF1dG9VcGRhdGU9ITB9ZnVuY3Rpb24gT2QoYSxiKXthJiZhLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7CmVhLmNhbGwodGhpcyxhLGIpO3RoaXMudHlwZT0iU2tpbm5lZE1lc2giO3RoaXMuYmluZE1vZGU9ImF0dGFjaGVkIjt0aGlzLmJpbmRNYXRyaXg9bmV3IFE7dGhpcy5iaW5kTWF0cml4SW52ZXJzZT1uZXcgUX1mdW5jdGlvbiBPZShhLGIpe2E9YXx8W107dGhpcy5ib25lcz1hLnNsaWNlKDApO3RoaXMuYm9uZU1hdHJpY2VzPW5ldyBGbG9hdDMyQXJyYXkoMTYqdGhpcy5ib25lcy5sZW5ndGgpO3RoaXMuZnJhbWU9LTE7aWYodm9pZCAwPT09Yil0aGlzLmNhbGN1bGF0ZUludmVyc2VzKCk7ZWxzZSBpZih0aGlzLmJvbmVzLmxlbmd0aD09PWIubGVuZ3RoKXRoaXMuYm9uZUludmVyc2VzPWIuc2xpY2UoMCk7ZWxzZSBmb3IoY29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbiBib25lSW52ZXJzZXMgaXMgdGhlIHdyb25nIGxlbmd0aC4iKSx0aGlzLmJvbmVJbnZlcnNlcz1bXSxhPTAsYj10aGlzLmJvbmVzLmxlbmd0aDthPGI7YSsrKXRoaXMuYm9uZUludmVyc2VzLnB1c2gobmV3IFEpfWZ1bmN0aW9uIGlnKCl7RS5jYWxsKHRoaXMpOwp0aGlzLnR5cGU9IkJvbmUifWZ1bmN0aW9uIFBlKGEsYixjKXtlYS5jYWxsKHRoaXMsYSxiKTt0aGlzLmluc3RhbmNlTWF0cml4PW5ldyBOKG5ldyBGbG9hdDMyQXJyYXkoMTYqYyksMTYpO3RoaXMuY291bnQ9Y31mdW5jdGlvbiBSKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkxpbmVCYXNpY01hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBKKDE2Nzc3MjE1KTt0aGlzLmxpbmV3aWR0aD0xO3RoaXMubGluZWpvaW49dGhpcy5saW5lY2FwPSJyb3VuZCI7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gcmEoYSxiLGMpezE9PT1jJiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lOiBwYXJhbWV0ZXIgVEhSRUUuTGluZVBpZWNlcyBubyBsb25nZXIgc3VwcG9ydGVkLiBVc2UgVEhSRUUuTGluZVNlZ21lbnRzIGluc3RlYWQuIik7RS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iTGluZSI7dGhpcy5nZW9tZXRyeT12b2lkIDAhPT1hP2E6bmV3IEQ7dGhpcy5tYXRlcmlhbD12b2lkIDAhPT1iP2I6bmV3IFIoe2NvbG9yOjE2Nzc3MjE1KgpNYXRoLnJhbmRvbSgpfSl9ZnVuY3Rpb24gWChhLGIpe3JhLmNhbGwodGhpcyxhLGIpO3RoaXMudHlwZT0iTGluZVNlZ21lbnRzIn1mdW5jdGlvbiBRZShhLGIpe3JhLmNhbGwodGhpcyxhLGIpO3RoaXMudHlwZT0iTGluZUxvb3AifWZ1bmN0aW9uIFFhKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBKKDE2Nzc3MjE1KTt0aGlzLmFscGhhTWFwPXRoaXMubWFwPW51bGw7dGhpcy5zaXplPTE7dGhpcy5zaXplQXR0ZW51YXRpb249ITA7dGhpcy5tb3JwaFRhcmdldHM9ITE7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gSmMoYSxiKXtFLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQb2ludHMiO3RoaXMuZ2VvbWV0cnk9dm9pZCAwIT09YT9hOm5ldyBEO3RoaXMubWF0ZXJpYWw9dm9pZCAwIT09Yj9iOm5ldyBRYSh7Y29sb3I6MTY3NzcyMTUqTWF0aC5yYW5kb20oKX0pO3RoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9ZnVuY3Rpb24gamcoYSwKYixjLGQsZSxmLGcpe3ZhciBoPWtnLmRpc3RhbmNlU3FUb1BvaW50KGEpO2g8YyYmKGM9bmV3IG4sa2cuY2xvc2VzdFBvaW50VG9Qb2ludChhLGMpLGMuYXBwbHlNYXRyaXg0KGQpLGE9ZS5yYXkub3JpZ2luLmRpc3RhbmNlVG8oYyksYTxlLm5lYXJ8fGE+ZS5mYXJ8fGYucHVzaCh7ZGlzdGFuY2U6YSxkaXN0YW5jZVRvUmF5Ok1hdGguc3FydChoKSxwb2ludDpjLGluZGV4OmIsZmFjZTpudWxsLG9iamVjdDpnfSkpfWZ1bmN0aW9uIGxnKGEsYixjLGQsZSxmLGcsaCxsKXtZLmNhbGwodGhpcyxhLGIsYyxkLGUsZixnLGgsbCk7dGhpcy5mb3JtYXQ9dm9pZCAwIT09Zz9nOjEwMjI7dGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09Zj9mOjEwMDY7dGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09ZT9lOjEwMDY7dGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9ZnVuY3Rpb24gS2MoYSxiLGMsZCxlLGYsZyxoLGwsbSxyLHEpe1kuY2FsbCh0aGlzLG51bGwsZixnLGgsbCxtLGQsZSxyLHEpO3RoaXMuaW1hZ2U9Cnt3aWR0aDpiLGhlaWdodDpjfTt0aGlzLm1pcG1hcHM9YTt0aGlzLmdlbmVyYXRlTWlwbWFwcz10aGlzLmZsaXBZPSExfWZ1bmN0aW9uIFBkKGEsYixjLGQsZSxmLGcsaCxsKXtZLmNhbGwodGhpcyxhLGIsYyxkLGUsZixnLGgsbCk7dGhpcy5uZWVkc1VwZGF0ZT0hMH1mdW5jdGlvbiBRZChhLGIsYyxkLGUsZixnLGgsbCxtKXttPXZvaWQgMCE9PW0/bToxMDI2O2lmKDEwMjYhPT1tJiYxMDI3IT09bSl0aHJvdyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTt2b2lkIDA9PT1jJiYxMDI2PT09bSYmKGM9MTAxMik7dm9pZCAwPT09YyYmMTAyNz09PW0mJihjPTEwMjApO1kuY2FsbCh0aGlzLG51bGwsZCxlLGYsZyxoLG0sYyxsKTt0aGlzLmltYWdlPXt3aWR0aDphLGhlaWdodDpifTt0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1nP2c6MTAwMzt0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT0KaD9oOjEwMDM7dGhpcy5nZW5lcmF0ZU1pcG1hcHM9dGhpcy5mbGlwWT0hMX1mdW5jdGlvbiBMYyhhKXtELmNhbGwodGhpcyk7dGhpcy50eXBlPSJXaXJlZnJhbWVHZW9tZXRyeSI7dmFyIGI9W10sYyxkLGUsZj1bMCwwXSxnPXt9LGg9WyJhIiwiYiIsImMiXTtpZihhJiZhLmlzR2VvbWV0cnkpe3ZhciBsPWEuZmFjZXM7dmFyIG09MDtmb3IoZD1sLmxlbmd0aDttPGQ7bSsrKXt2YXIgcj1sW21dO2ZvcihjPTA7Mz5jO2MrKyl7dmFyIHE9cltoW2NdXTt2YXIgaz1yW2hbKGMrMSklM11dO2ZbMF09TWF0aC5taW4ocSxrKTtmWzFdPU1hdGgubWF4KHEsayk7cT1mWzBdKyIsIitmWzFdO3ZvaWQgMD09PWdbcV0mJihnW3FdPXtpbmRleDE6ZlswXSxpbmRleDI6ZlsxXX0pfX1mb3IocSBpbiBnKW09Z1txXSxoPWEudmVydGljZXNbbS5pbmRleDFdLGIucHVzaChoLngsaC55LGgueiksaD1hLnZlcnRpY2VzW20uaW5kZXgyXSxiLnB1c2goaC54LGgueSxoLnopfWVsc2UgaWYoYSYmYS5pc0J1ZmZlckdlb21ldHJ5KWlmKGg9Cm5ldyBuLG51bGwhPT1hLmluZGV4KXtsPWEuYXR0cmlidXRlcy5wb3NpdGlvbjtyPWEuaW5kZXg7dmFyIHA9YS5ncm91cHM7MD09PXAubGVuZ3RoJiYocD1be3N0YXJ0OjAsY291bnQ6ci5jb3VudCxtYXRlcmlhbEluZGV4OjB9XSk7YT0wO2ZvcihlPXAubGVuZ3RoO2E8ZTsrK2EpZm9yKG09cFthXSxjPW0uc3RhcnQsZD1tLmNvdW50LG09YyxkPWMrZDttPGQ7bSs9Mylmb3IoYz0wOzM+YztjKyspcT1yLmdldFgobStjKSxrPXIuZ2V0WChtKyhjKzEpJTMpLGZbMF09TWF0aC5taW4ocSxrKSxmWzFdPU1hdGgubWF4KHEsaykscT1mWzBdKyIsIitmWzFdLHZvaWQgMD09PWdbcV0mJihnW3FdPXtpbmRleDE6ZlswXSxpbmRleDI6ZlsxXX0pO2ZvcihxIGluIGcpbT1nW3FdLGguZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLG0uaW5kZXgxKSxiLnB1c2goaC54LGgueSxoLnopLGguZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLG0uaW5kZXgyKSxiLnB1c2goaC54LGgueSxoLnopfWVsc2UgZm9yKGw9YS5hdHRyaWJ1dGVzLnBvc2l0aW9uLAptPTAsZD1sLmNvdW50LzM7bTxkO20rKylmb3IoYz0wOzM+YztjKyspZz0zKm0rYyxoLmZyb21CdWZmZXJBdHRyaWJ1dGUobCxnKSxiLnB1c2goaC54LGgueSxoLnopLGc9MyptKyhjKzEpJTMsaC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsZyksYi5wdXNoKGgueCxoLnksaC56KTt0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKGIsMykpfWZ1bmN0aW9uIFJkKGEsYixjKXtHLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQYXJhbWV0cmljR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17ZnVuYzphLHNsaWNlczpiLHN0YWNrczpjfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgTWMoYSxiLGMpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBNYyhhLGIsYyl7RC5jYWxsKHRoaXMpO3RoaXMudHlwZT0iUGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e2Z1bmM6YSxzbGljZXM6YixzdGFja3M6Y307dmFyIGQ9W10sZT1bXSxmPVtdLGc9W10saD0KbmV3IG4sbD1uZXcgbixtPW5ldyBuLHI9bmV3IG4scT1uZXcgbixrLHA7Mz5hLmxlbmd0aCYmY29uc29sZS5lcnJvcigiVEhSRUUuUGFyYW1ldHJpY0dlb21ldHJ5OiBGdW5jdGlvbiBtdXN0IG5vdyBtb2RpZnkgYSBWZWN0b3IzIGFzIHRoaXJkIHBhcmFtZXRlci4iKTt2YXIgdD1iKzE7Zm9yKGs9MDtrPD1jO2srKyl7dmFyIHY9ay9jO2ZvcihwPTA7cDw9YjtwKyspe3ZhciB5PXAvYjthKHksdixsKTtlLnB1c2gobC54LGwueSxsLnopOzA8PXktMUUtNT8oYSh5LTFFLTUsdixtKSxyLnN1YlZlY3RvcnMobCxtKSk6KGEoeSsxRS01LHYsbSksci5zdWJWZWN0b3JzKG0sbCkpOzA8PXYtMUUtNT8oYSh5LHYtMUUtNSxtKSxxLnN1YlZlY3RvcnMobCxtKSk6KGEoeSx2KzFFLTUsbSkscS5zdWJWZWN0b3JzKG0sbCkpO2guY3Jvc3NWZWN0b3JzKHIscSkubm9ybWFsaXplKCk7Zi5wdXNoKGgueCxoLnksaC56KTtnLnB1c2goeSx2KX19Zm9yKGs9MDtrPGM7aysrKWZvcihwPTA7cDxiO3ArKylhPQprKnQrcCsxLGg9KGsrMSkqdCtwKzEsbD0oaysxKSp0K3AsZC5wdXNoKGsqdCtwLGEsbCksZC5wdXNoKGEsaCxsKTt0aGlzLnNldEluZGV4KGQpO3RoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoZSwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IEEoZiwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgQShnLDIpKX1mdW5jdGlvbiBTZChhLGIsYyxkKXtHLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQb2x5aGVkcm9uR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17dmVydGljZXM6YSxpbmRpY2VzOmIscmFkaXVzOmMsZGV0YWlsOmR9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBFYShhLGIsYyxkKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gRWEoYSxiLGMsZCl7ZnVuY3Rpb24gZShhKXtoLnB1c2goYS54LGEueSxhLnopfWZ1bmN0aW9uIGYoYixjKXtiKj0zO2MueD1hW2IrMF07Yy55PWFbYisxXTtjLno9YVtiKzJdfWZ1bmN0aW9uIGcoYSwKYixjLGQpezA+ZCYmMT09PWEueCYmKGxbYl09YS54LTEpOzA9PT1jLngmJjA9PT1jLnomJihsW2JdPWQvMi9NYXRoLlBJKy41KX1ELmNhbGwodGhpcyk7dGhpcy50eXBlPSJQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17dmVydGljZXM6YSxpbmRpY2VzOmIscmFkaXVzOmMsZGV0YWlsOmR9O2M9Y3x8MTtkPWR8fDA7dmFyIGg9W10sbD1bXTsoZnVuY3Rpb24oYSl7Zm9yKHZhciBjPW5ldyBuLGQ9bmV3IG4sZz1uZXcgbixoPTA7aDxiLmxlbmd0aDtoKz0zKXtmKGJbaCswXSxjKTtmKGJbaCsxXSxkKTtmKGJbaCsyXSxnKTt2YXIgbCxtLGs9Yyx3PWQseD1nLEY9TWF0aC5wb3coMixhKSxJPVtdO2ZvcihtPTA7bTw9RjttKyspe0lbbV09W107dmFyIHo9ay5jbG9uZSgpLmxlcnAoeCxtL0YpLEI9dy5jbG9uZSgpLmxlcnAoeCxtL0YpLEE9Ri1tO2ZvcihsPTA7bDw9QTtsKyspSVttXVtsXT0wPT09bCYmbT09PUY/ejp6LmNsb25lKCkubGVycChCLGwvQSl9Zm9yKG09CjA7bTxGO20rKylmb3IobD0wO2w8MiooRi1tKS0xO2wrKylrPU1hdGguZmxvb3IobC8yKSwwPT09bCUyPyhlKElbbV1baysxXSksZShJW20rMV1ba10pLGUoSVttXVtrXSkpOihlKElbbV1baysxXSksZShJW20rMV1baysxXSksZShJW20rMV1ba10pKX19KShkKTsoZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW5ldyBuLGM9MDtjPGgubGVuZ3RoO2MrPTMpYi54PWhbYyswXSxiLnk9aFtjKzFdLGIuej1oW2MrMl0sYi5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihhKSxoW2MrMF09Yi54LGhbYysxXT1iLnksaFtjKzJdPWIuen0pKGMpOyhmdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgbixiPTA7YjxoLmxlbmd0aDtiKz0zKWEueD1oW2IrMF0sYS55PWhbYisxXSxhLno9aFtiKzJdLGwucHVzaChNYXRoLmF0YW4yKGEueiwtYS54KS8yL01hdGguUEkrLjUsMS0oTWF0aC5hdGFuMigtYS55LE1hdGguc3FydChhLngqYS54K2EueiphLnopKS9NYXRoLlBJKy41KSk7YT1uZXcgbjtiPW5ldyBuO2Zvcih2YXIgYz0KbmV3IG4sZD1uZXcgbixlPW5ldyBCLGY9bmV3IEIsaz1uZXcgQix5PTAsdz0wO3k8aC5sZW5ndGg7eSs9OSx3Kz02KXthLnNldChoW3krMF0saFt5KzFdLGhbeSsyXSk7Yi5zZXQoaFt5KzNdLGhbeSs0XSxoW3krNV0pO2Muc2V0KGhbeSs2XSxoW3krN10saFt5KzhdKTtlLnNldChsW3crMF0sbFt3KzFdKTtmLnNldChsW3crMl0sbFt3KzNdKTtrLnNldChsW3crNF0sbFt3KzVdKTtkLmNvcHkoYSkuYWRkKGIpLmFkZChjKS5kaXZpZGVTY2FsYXIoMyk7dmFyIHg9TWF0aC5hdGFuMihkLnosLWQueCk7ZyhlLHcrMCxhLHgpO2coZix3KzIsYix4KTtnKGssdys0LGMseCl9Zm9yKGE9MDthPGwubGVuZ3RoO2ErPTYpYj1sW2ErMF0sYz1sW2ErMl0sZD1sW2ErNF0sZT1NYXRoLm1pbihiLGMsZCksLjk8TWF0aC5tYXgoYixjLGQpJiYuMT5lJiYoLjI+YiYmKGxbYSswXSs9MSksLjI+YyYmKGxbYSsyXSs9MSksLjI+ZCYmKGxbYSs0XSs9MSkpfSkoKTt0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLApuZXcgQShoLDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgQShoLnNsaWNlKCksMykpO3RoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEEobCwyKSk7MD09PWQ/dGhpcy5jb21wdXRlVmVydGV4Tm9ybWFscygpOnRoaXMubm9ybWFsaXplTm9ybWFscygpfWZ1bmN0aW9uIFRkKGEsYil7Ry5jYWxsKHRoaXMpO3RoaXMudHlwZT0iVGV0cmFoZWRyb25HZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Yn07dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IE5jKGEsYikpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIE5jKGEsYil7RWEuY2FsbCh0aGlzLFsxLDEsMSwtMSwtMSwxLC0xLDEsLTEsMSwtMSwtMV0sWzIsMSwwLDAsMywyLDEsMywwLDIsMywxXSxhLGIpO3RoaXMudHlwZT0iVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Yn19ZnVuY3Rpb24gVWQoYSxiKXtHLmNhbGwodGhpcyk7CnRoaXMudHlwZT0iT2N0YWhlZHJvbkdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLGRldGFpbDpifTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgYWMoYSxiKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gYWMoYSxiKXtFYS5jYWxsKHRoaXMsWzEsMCwwLC0xLDAsMCwwLDEsMCwwLC0xLDAsMCwwLDEsMCwwLC0xXSxbMCwyLDQsMCw0LDMsMCwzLDUsMCw1LDIsMSwyLDUsMSw1LDMsMSwzLDQsMSw0LDJdLGEsYik7dGhpcy50eXBlPSJPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsZGV0YWlsOmJ9fWZ1bmN0aW9uIFZkKGEsYil7Ry5jYWxsKHRoaXMpO3RoaXMudHlwZT0iSWNvc2FoZWRyb25HZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Yn07dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IE9jKGEsYikpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIE9jKGEsYil7dmFyIGM9CigxK01hdGguc3FydCg1KSkvMjtFYS5jYWxsKHRoaXMsWy0xLGMsMCwxLGMsMCwtMSwtYywwLDEsLWMsMCwwLC0xLGMsMCwxLGMsMCwtMSwtYywwLDEsLWMsYywwLC0xLGMsMCwxLC1jLDAsLTEsLWMsMCwxXSxbMCwxMSw1LDAsNSwxLDAsMSw3LDAsNywxMCwwLDEwLDExLDEsNSw5LDUsMTEsNCwxMSwxMCwyLDEwLDcsNiw3LDEsOCwzLDksNCwzLDQsMiwzLDIsNiwzLDYsOCwzLDgsOSw0LDksNSwyLDQsMTEsNiwyLDEwLDgsNiw3LDksOCwxXSxhLGIpO3RoaXMudHlwZT0iSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Yn19ZnVuY3Rpb24gV2QoYSxiKXtHLmNhbGwodGhpcyk7dGhpcy50eXBlPSJEb2RlY2FoZWRyb25HZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Yn07dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IFBjKGEsYikpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFBjKGEsYil7dmFyIGM9CigxK01hdGguc3FydCg1KSkvMixkPTEvYztFYS5jYWxsKHRoaXMsWy0xLC0xLC0xLC0xLC0xLDEsLTEsMSwtMSwtMSwxLDEsMSwtMSwtMSwxLC0xLDEsMSwxLC0xLDEsMSwxLDAsLWQsLWMsMCwtZCxjLDAsZCwtYywwLGQsYywtZCwtYywwLC1kLGMsMCxkLC1jLDAsZCxjLDAsLWMsMCwtZCxjLDAsLWQsLWMsMCxkLGMsMCxkXSxbMywxMSw3LDMsNywxNSwzLDE1LDEzLDcsMTksMTcsNywxNyw2LDcsNiwxNSwxNyw0LDgsMTcsOCwxMCwxNywxMCw2LDgsMCwxNiw4LDE2LDIsOCwyLDEwLDAsMTIsMSwwLDEsMTgsMCwxOCwxNiw2LDEwLDIsNiwyLDEzLDYsMTMsMTUsMiwxNiwxOCwyLDE4LDMsMiwzLDEzLDE4LDEsOSwxOCw5LDExLDE4LDExLDMsNCwxNCwxMiw0LDEyLDAsNCwwLDgsMTEsOSw1LDExLDUsMTksMTEsMTksNywxOSw1LDE0LDE5LDE0LDQsMTksNCwxNywxLDEyLDE0LDEsMTQsNSwxLDUsOV0sYSxiKTt0aGlzLnR5cGU9IkRvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9CntyYWRpdXM6YSxkZXRhaWw6Yn19ZnVuY3Rpb24gWGQoYSxiLGMsZCxlLGYpe0cuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlR1YmVHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtwYXRoOmEsdHVidWxhclNlZ21lbnRzOmIscmFkaXVzOmMscmFkaWFsU2VnbWVudHM6ZCxjbG9zZWQ6ZX07dm9pZCAwIT09ZiYmY29uc29sZS53YXJuKCJUSFJFRS5UdWJlR2VvbWV0cnk6IHRhcGVyIGhhcyBiZWVuIHJlbW92ZWQuIik7YT1uZXcgYmMoYSxiLGMsZCxlKTt0aGlzLnRhbmdlbnRzPWEudGFuZ2VudHM7dGhpcy5ub3JtYWxzPWEubm9ybWFsczt0aGlzLmJpbm9ybWFscz1hLmJpbm9ybWFsczt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShhKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBiYyhhLGIsYyxkLGUpe2Z1bmN0aW9uIGYoZSl7cj1hLmdldFBvaW50QXQoZS9iLHIpO3ZhciBmPWcubm9ybWFsc1tlXTtlPWcuYmlub3JtYWxzW2VdO2Zvcih1PTA7dTw9ZDt1Kyspe3ZhciBtPXUvZCpNYXRoLlBJKgoyLGs9TWF0aC5zaW4obSk7bT0tTWF0aC5jb3MobSk7bC54PW0qZi54K2sqZS54O2wueT1tKmYueStrKmUueTtsLno9bSpmLnorayplLno7bC5ub3JtYWxpemUoKTt0LnB1c2gobC54LGwueSxsLnopO2gueD1yLngrYypsLng7aC55PXIueStjKmwueTtoLno9ci56K2MqbC56O3AucHVzaChoLngsaC55LGgueil9fUQuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlR1YmVCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtwYXRoOmEsdHVidWxhclNlZ21lbnRzOmIscmFkaXVzOmMscmFkaWFsU2VnbWVudHM6ZCxjbG9zZWQ6ZX07Yj1ifHw2NDtjPWN8fDE7ZD1kfHw4O2U9ZXx8ITE7dmFyIGc9YS5jb21wdXRlRnJlbmV0RnJhbWVzKGIsZSk7dGhpcy50YW5nZW50cz1nLnRhbmdlbnRzO3RoaXMubm9ybWFscz1nLm5vcm1hbHM7dGhpcy5iaW5vcm1hbHM9Zy5iaW5vcm1hbHM7dmFyIGg9bmV3IG4sbD1uZXcgbixtPW5ldyBCLHI9bmV3IG4sayx1LHA9W10sdD1bXSx2PVtdLHk9W107Zm9yKGs9CjA7azxiO2srKylmKGspO2YoITE9PT1lP2I6MCk7Zm9yKGs9MDtrPD1iO2srKylmb3IodT0wO3U8PWQ7dSsrKW0ueD1rL2IsbS55PXUvZCx2LnB1c2gobS54LG0ueSk7KGZ1bmN0aW9uKCl7Zm9yKHU9MTt1PD1iO3UrKylmb3Ioaz0xO2s8PWQ7aysrKXt2YXIgYT0oZCsxKSp1KyhrLTEpLGM9KGQrMSkqdStrLGU9KGQrMSkqKHUtMSkrazt5LnB1c2goKGQrMSkqKHUtMSkrKGstMSksYSxlKTt5LnB1c2goYSxjLGUpfX0pKCk7dGhpcy5zZXRJbmRleCh5KTt0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKHAsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBBKHQsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEEodiwyKSl9ZnVuY3Rpb24gWWQoYSxiLGMsZCxlLGYsZyl7Ry5jYWxsKHRoaXMpO3RoaXMudHlwZT0iVG9ydXNLbm90R2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsdHViZTpiLHR1YnVsYXJTZWdtZW50czpjLHJhZGlhbFNlZ21lbnRzOmQsCnA6ZSxxOmZ9O3ZvaWQgMCE9PWcmJmNvbnNvbGUud2FybigiVEhSRUUuVG9ydXNLbm90R2VvbWV0cnk6IGhlaWdodFNjYWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2NhbGUoIHgsIHksIHogKSBpbnN0ZWFkLiIpO3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBRYyhhLGIsYyxkLGUsZikpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFFjKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGEsYixjLGQsZSl7dmFyIGY9TWF0aC5zaW4oYSk7Yj1jL2IqYTtjPU1hdGguY29zKGIpO2UueD1kKigyK2MpKi41Kk1hdGguY29zKGEpO2UueT1kKigyK2MpKmYqLjU7ZS56PWQqTWF0aC5zaW4oYikqLjV9RC5jYWxsKHRoaXMpO3RoaXMudHlwZT0iVG9ydXNLbm90QnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsdHViZTpiLHR1YnVsYXJTZWdtZW50czpjLHJhZGlhbFNlZ21lbnRzOmQscDplLHE6Zn07YT1hfHwxO2I9Ynx8LjQ7Yz1NYXRoLmZsb29yKGMpfHwKNjQ7ZD1NYXRoLmZsb29yKGQpfHw4O2U9ZXx8MjtmPWZ8fDM7dmFyIGg9W10sbD1bXSxtPVtdLHI9W10sayx1PW5ldyBuLHA9bmV3IG4sdD1uZXcgbix2PW5ldyBuLHk9bmV3IG4sdz1uZXcgbix4PW5ldyBuO2ZvcihrPTA7azw9YzsrK2spe3ZhciBGPWsvYyplKk1hdGguUEkqMjtnKEYsZSxmLGEsdCk7ZyhGKy4wMSxlLGYsYSx2KTt3LnN1YlZlY3RvcnModix0KTt4LmFkZFZlY3RvcnModix0KTt5LmNyb3NzVmVjdG9ycyh3LHgpO3guY3Jvc3NWZWN0b3JzKHksdyk7eS5ub3JtYWxpemUoKTt4Lm5vcm1hbGl6ZSgpO2ZvcihGPTA7Rjw9ZDsrK0Ype3ZhciBJPUYvZCpNYXRoLlBJKjIsej0tYipNYXRoLmNvcyhJKTtJPWIqTWF0aC5zaW4oSSk7dS54PXQueCsoeip4LngrSSp5LngpO3UueT10LnkrKHoqeC55K0kqeS55KTt1Lno9dC56Kyh6KngueitJKnkueik7bC5wdXNoKHUueCx1LnksdS56KTtwLnN1YlZlY3RvcnModSx0KS5ub3JtYWxpemUoKTttLnB1c2gocC54LHAueSxwLnopO3IucHVzaChrLwpjKTtyLnB1c2goRi9kKX19Zm9yKEY9MTtGPD1jO0YrKylmb3Ioaz0xO2s8PWQ7aysrKWE9KGQrMSkqRisoay0xKSxiPShkKzEpKkYrayxlPShkKzEpKihGLTEpK2ssaC5wdXNoKChkKzEpKihGLTEpKyhrLTEpLGEsZSksaC5wdXNoKGEsYixlKTt0aGlzLnNldEluZGV4KGgpO3RoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEobCwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IEEobSwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgQShyLDIpKX1mdW5jdGlvbiBaZChhLGIsYyxkLGUpe0cuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlRvcnVzR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsdHViZTpiLHJhZGlhbFNlZ21lbnRzOmMsdHVidWxhclNlZ21lbnRzOmQsYXJjOmV9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBSYyhhLGIsYyxkLGUpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBSYyhhLGIsYyxkLGUpe0QuY2FsbCh0aGlzKTsKdGhpcy50eXBlPSJUb3J1c0J1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLHR1YmU6YixyYWRpYWxTZWdtZW50czpjLHR1YnVsYXJTZWdtZW50czpkLGFyYzplfTthPWF8fDE7Yj1ifHwuNDtjPU1hdGguZmxvb3IoYyl8fDg7ZD1NYXRoLmZsb29yKGQpfHw2O2U9ZXx8MipNYXRoLlBJO3ZhciBmPVtdLGc9W10saD1bXSxsPVtdLG09bmV3IG4scj1uZXcgbixrPW5ldyBuLHUscDtmb3IodT0wO3U8PWM7dSsrKWZvcihwPTA7cDw9ZDtwKyspe3ZhciB0PXAvZCplLHY9dS9jKk1hdGguUEkqMjtyLng9KGErYipNYXRoLmNvcyh2KSkqTWF0aC5jb3ModCk7ci55PShhK2IqTWF0aC5jb3ModikpKk1hdGguc2luKHQpO3Iuej1iKk1hdGguc2luKHYpO2cucHVzaChyLngsci55LHIueik7bS54PWEqTWF0aC5jb3ModCk7bS55PWEqTWF0aC5zaW4odCk7ay5zdWJWZWN0b3JzKHIsbSkubm9ybWFsaXplKCk7aC5wdXNoKGsueCxrLnksay56KTtsLnB1c2gocC9kKTtsLnB1c2godS8KYyl9Zm9yKHU9MTt1PD1jO3UrKylmb3IocD0xO3A8PWQ7cCsrKWE9KGQrMSkqKHUtMSkrcC0xLGI9KGQrMSkqKHUtMSkrcCxlPShkKzEpKnUrcCxmLnB1c2goKGQrMSkqdStwLTEsYSxlKSxmLnB1c2goYSxiLGUpO3RoaXMuc2V0SW5kZXgoZik7dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShnLDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgQShoLDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBBKGwsMikpfWZ1bmN0aW9uIFJoKGEsYixjLGQsZSl7Zm9yKHZhciBmLGc9MCxoPWIsbD1jLWQ7aDxjO2grPWQpZys9KGFbbF0tYVtoXSkqKGFbaCsxXSthW2wrMV0pLGw9aDtpZihlPT09MDxnKWZvcihlPWI7ZTxjO2UrPWQpZj1TaChlLGFbZV0sYVtlKzFdLGYpO2Vsc2UgZm9yKGU9Yy1kO2U+PWI7ZS09ZClmPVNoKGUsYVtlXSxhW2UrMV0sZik7ZiYmY2MoZixmLm5leHQpJiYoJGQoZiksZj1mLm5leHQpO3JldHVybiBmfWZ1bmN0aW9uIGFlKGEsYil7aWYoIWEpcmV0dXJuIGE7CmJ8fChiPWEpO2Rve3ZhciBjPSExO2lmKGEuc3RlaW5lcnx8IWNjKGEsYS5uZXh0KSYmMCE9PXhhKGEucHJldixhLGEubmV4dCkpYT1hLm5leHQ7ZWxzZXskZChhKTthPWI9YS5wcmV2O2lmKGE9PT1hLm5leHQpYnJlYWs7Yz0hMH19d2hpbGUoY3x8YSE9PWIpO3JldHVybiBifWZ1bmN0aW9uIGJlKGEsYixjLGQsZSxmLGcpe2lmKGEpe2lmKCFnJiZmKXt2YXIgaD1hLGw9aDtkbyBudWxsPT09bC56JiYobC56PW1nKGwueCxsLnksZCxlLGYpKSxsLnByZXZaPWwucHJldixsPWwubmV4dFo9bC5uZXh0O3doaWxlKGwhPT1oKTtsLnByZXZaLm5leHRaPW51bGw7bC5wcmV2Wj1udWxsO2g9bDt2YXIgbSxyLGssdSxwPTE7ZG97bD1oO3ZhciB0PWg9bnVsbDtmb3Iocj0wO2w7KXtyKys7dmFyIG49bDtmb3IobT1rPTA7bTxwJiYoaysrLG49bi5uZXh0WixuKTttKyspO2Zvcih1PXA7MDxrfHwwPHUmJm47KTAhPT1rJiYoMD09PXV8fCFufHxsLno8PW4ueik/KG09bCxsPWwubmV4dFosay0tKToobT0KbixuPW4ubmV4dFosdS0tKSx0P3QubmV4dFo9bTpoPW0sbS5wcmV2Wj10LHQ9bTtsPW59dC5uZXh0Wj1udWxsO3AqPTJ9d2hpbGUoMTxyKX1mb3IoaD1hO2EucHJldiE9PWEubmV4dDspe2w9YS5wcmV2O249YS5uZXh0O2lmKGYpdD1tayhhLGQsZSxmKTtlbHNlIGE6aWYodD1hLHI9dC5wcmV2LGs9dCxwPXQubmV4dCwwPD14YShyLGsscCkpdD0hMTtlbHNle2ZvcihtPXQubmV4dC5uZXh0O20hPT10LnByZXY7KXtpZihTYyhyLngsci55LGsueCxrLnkscC54LHAueSxtLngsbS55KSYmMDw9eGEobS5wcmV2LG0sbS5uZXh0KSl7dD0hMTticmVhayBhfW09bS5uZXh0fXQ9ITB9aWYodCliLnB1c2gobC5pL2MpLGIucHVzaChhLmkvYyksYi5wdXNoKG4uaS9jKSwkZChhKSxoPWE9bi5uZXh0O2Vsc2UgaWYoYT1uLGE9PT1oKXtpZighZyliZShhZShhKSxiLGMsZCxlLGYsMSk7ZWxzZSBpZigxPT09Zyl7Zz1iO2g9YztsPWE7ZG8gbj1sLnByZXYsdD1sLm5leHQubmV4dCwhY2Mobix0KSYmVGgobiwKbCxsLm5leHQsdCkmJmNlKG4sdCkmJmNlKHQsbikmJihnLnB1c2gobi5pL2gpLGcucHVzaChsLmkvaCksZy5wdXNoKHQuaS9oKSwkZChsKSwkZChsLm5leHQpLGw9YT10KSxsPWwubmV4dDt3aGlsZShsIT09YSk7YT1sO2JlKGEsYixjLGQsZSxmLDIpfWVsc2UgaWYoMj09PWcpYTp7Zz1hO2Rve2ZvcihoPWcubmV4dC5uZXh0O2ghPT1nLnByZXY7KXtpZihsPWcuaSE9PWguaSl7bD1nO249aDtpZih0PWwubmV4dC5pIT09bi5pJiZsLnByZXYuaSE9PW4uaSl7Yjp7dD1sO2Rve2lmKHQuaSE9PWwuaSYmdC5uZXh0LmkhPT1sLmkmJnQuaSE9PW4uaSYmdC5uZXh0LmkhPT1uLmkmJlRoKHQsdC5uZXh0LGwsbikpe3Q9ITA7YnJlYWsgYn10PXQubmV4dH13aGlsZSh0IT09bCk7dD0hMX10PSF0fWlmKHQ9dCYmY2UobCxuKSYmY2UobixsKSl7dD1sO3I9ITE7az0obC54K24ueCkvMjtuPShsLnkrbi55KS8yO2RvIHQueT5uIT09dC5uZXh0Lnk+biYmdC5uZXh0LnkhPT10LnkmJms8KHQubmV4dC54LQp0LngpKihuLXQueSkvKHQubmV4dC55LXQueSkrdC54JiYocj0hciksdD10Lm5leHQ7d2hpbGUodCE9PWwpO3Q9cn1sPXR9aWYobCl7YT1VaChnLGgpO2c9YWUoZyxnLm5leHQpO2E9YWUoYSxhLm5leHQpO2JlKGcsYixjLGQsZSxmKTtiZShhLGIsYyxkLGUsZik7YnJlYWsgYX1oPWgubmV4dH1nPWcubmV4dH13aGlsZShnIT09YSl9YnJlYWt9fX19ZnVuY3Rpb24gbWsoYSxiLGMsZCl7dmFyIGU9YS5wcmV2LGY9YS5uZXh0O2lmKDA8PXhhKGUsYSxmKSlyZXR1cm4hMTt2YXIgZz1lLng+YS54P2UueD5mLng/ZS54OmYueDphLng+Zi54P2EueDpmLngsaD1lLnk+YS55P2UueT5mLnk/ZS55OmYueTphLnk+Zi55P2EueTpmLnksbD1tZyhlLng8YS54P2UueDxmLng/ZS54OmYueDphLng8Zi54P2EueDpmLngsZS55PGEueT9lLnk8Zi55P2UueTpmLnk6YS55PGYueT9hLnk6Zi55LGIsYyxkKTtiPW1nKGcsaCxiLGMsZCk7Yz1hLnByZXZaO2ZvcihkPWEubmV4dFo7YyYmYy56Pj1sJiZkJiZkLno8PQpiOyl7aWYoYyE9PWEucHJldiYmYyE9PWEubmV4dCYmU2MoZS54LGUueSxhLngsYS55LGYueCxmLnksYy54LGMueSkmJjA8PXhhKGMucHJldixjLGMubmV4dCkpcmV0dXJuITE7Yz1jLnByZXZaO2lmKGQhPT1hLnByZXYmJmQhPT1hLm5leHQmJlNjKGUueCxlLnksYS54LGEueSxmLngsZi55LGQueCxkLnkpJiYwPD14YShkLnByZXYsZCxkLm5leHQpKXJldHVybiExO2Q9ZC5uZXh0Wn1mb3IoO2MmJmMuej49bDspe2lmKGMhPT1hLnByZXYmJmMhPT1hLm5leHQmJlNjKGUueCxlLnksYS54LGEueSxmLngsZi55LGMueCxjLnkpJiYwPD14YShjLnByZXYsYyxjLm5leHQpKXJldHVybiExO2M9Yy5wcmV2Wn1mb3IoO2QmJmQuejw9Yjspe2lmKGQhPT1hLnByZXYmJmQhPT1hLm5leHQmJlNjKGUueCxlLnksYS54LGEueSxmLngsZi55LGQueCxkLnkpJiYwPD14YShkLnByZXYsZCxkLm5leHQpKXJldHVybiExO2Q9ZC5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBuayhhLGIpe3JldHVybiBhLngtYi54fQpmdW5jdGlvbiBvayhhLGIpe3ZhciBjPWIsZD1hLngsZT1hLnksZj0tSW5maW5pdHk7ZG97aWYoZTw9Yy55JiZlPj1jLm5leHQueSYmYy5uZXh0LnkhPT1jLnkpe3ZhciBnPWMueCsoZS1jLnkpKihjLm5leHQueC1jLngpLyhjLm5leHQueS1jLnkpO2lmKGc8PWQmJmc+Zil7Zj1nO2lmKGc9PT1kKXtpZihlPT09Yy55KXJldHVybiBjO2lmKGU9PT1jLm5leHQueSlyZXR1cm4gYy5uZXh0fXZhciBoPWMueDxjLm5leHQueD9jOmMubmV4dH19Yz1jLm5leHR9d2hpbGUoYyE9PWIpO2lmKCFoKXJldHVybiBudWxsO2lmKGQ9PT1mKXJldHVybiBoLnByZXY7Yj1oO2c9aC54O3ZhciBsPWgueSxtPUluZmluaXR5O2ZvcihjPWgubmV4dDtjIT09Yjspe2lmKGQ+PWMueCYmYy54Pj1nJiZkIT09Yy54JiZTYyhlPGw/ZDpmLGUsZyxsLGU8bD9mOmQsZSxjLngsYy55KSl7dmFyIHI9TWF0aC5hYnMoZS1jLnkpLyhkLWMueCk7KHI8bXx8cj09PW0mJmMueD5oLngpJiZjZShjLGEpJiYoaD1jLG09cil9Yz0KYy5uZXh0fXJldHVybiBofWZ1bmN0aW9uIG1nKGEsYixjLGQsZSl7YT0zMjc2NyooYS1jKSplO2I9MzI3NjcqKGItZCkqZTthPShhfGE8PDgpJjE2NzExOTM1O2E9KGF8YTw8NCkmMjUyNjQ1MTM1O2E9KGF8YTw8MikmODU4OTkzNDU5O2I9KGJ8Yjw8OCkmMTY3MTE5MzU7Yj0oYnxiPDw0KSYyNTI2NDUxMzU7Yj0oYnxiPDwyKSY4NTg5OTM0NTk7cmV0dXJuKGF8YTw8MSkmMTQzMTY1NTc2NXwoKGJ8Yjw8MSkmMTQzMTY1NTc2NSk8PDF9ZnVuY3Rpb24gcGsoYSl7dmFyIGI9YSxjPWE7ZG97aWYoYi54PGMueHx8Yi54PT09Yy54JiZiLnk8Yy55KWM9YjtiPWIubmV4dH13aGlsZShiIT09YSk7cmV0dXJuIGN9ZnVuY3Rpb24gU2MoYSxiLGMsZCxlLGYsZyxoKXtyZXR1cm4gMDw9KGUtZykqKGItaCktKGEtZykqKGYtaCkmJjA8PShhLWcpKihkLWgpLShjLWcpKihiLWgpJiYwPD0oYy1nKSooZi1oKS0oZS1nKSooZC1oKX1mdW5jdGlvbiB4YShhLGIsYyl7cmV0dXJuKGIueS1hLnkpKihjLngtCmIueCktKGIueC1hLngpKihjLnktYi55KX1mdW5jdGlvbiBjYyhhLGIpe3JldHVybiBhLng9PT1iLngmJmEueT09PWIueX1mdW5jdGlvbiBUaChhLGIsYyxkKXtyZXR1cm4gY2MoYSxjKSYmY2MoYixkKXx8Y2MoYSxkKSYmY2MoYyxiKT8hMDowPHhhKGEsYixjKSE9PTA8eGEoYSxiLGQpJiYwPHhhKGMsZCxhKSE9PTA8eGEoYyxkLGIpfWZ1bmN0aW9uIGNlKGEsYil7cmV0dXJuIDA+eGEoYS5wcmV2LGEsYS5uZXh0KT8wPD14YShhLGIsYS5uZXh0KSYmMDw9eGEoYSxhLnByZXYsYik6MD54YShhLGIsYS5wcmV2KXx8MD54YShhLGEubmV4dCxiKX1mdW5jdGlvbiBVaChhLGIpe3ZhciBjPW5ldyBuZyhhLmksYS54LGEueSksZD1uZXcgbmcoYi5pLGIueCxiLnkpLGU9YS5uZXh0LGY9Yi5wcmV2O2EubmV4dD1iO2IucHJldj1hO2MubmV4dD1lO2UucHJldj1jO2QubmV4dD1jO2MucHJldj1kO2YubmV4dD1kO2QucHJldj1mO3JldHVybiBkfWZ1bmN0aW9uIFNoKGEsYixjLGQpe2E9bmV3IG5nKGEsCmIsYyk7ZD8oYS5uZXh0PWQubmV4dCxhLnByZXY9ZCxkLm5leHQucHJldj1hLGQubmV4dD1hKTooYS5wcmV2PWEsYS5uZXh0PWEpO3JldHVybiBhfWZ1bmN0aW9uICRkKGEpe2EubmV4dC5wcmV2PWEucHJldjthLnByZXYubmV4dD1hLm5leHQ7YS5wcmV2WiYmKGEucHJldloubmV4dFo9YS5uZXh0Wik7YS5uZXh0WiYmKGEubmV4dFoucHJldlo9YS5wcmV2Wil9ZnVuY3Rpb24gbmcoYSxiLGMpe3RoaXMuaT1hO3RoaXMueD1iO3RoaXMueT1jO3RoaXMubmV4dFo9dGhpcy5wcmV2Wj10aGlzLno9dGhpcy5uZXh0PXRoaXMucHJldj1udWxsO3RoaXMuc3RlaW5lcj0hMX1mdW5jdGlvbiBWaChhKXt2YXIgYj1hLmxlbmd0aDsyPGImJmFbYi0xXS5lcXVhbHMoYVswXSkmJmEucG9wKCl9ZnVuY3Rpb24gV2goYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylhLnB1c2goYltjXS54KSxhLnB1c2goYltjXS55KX1mdW5jdGlvbiBkYyhhLGIpe0cuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSI7CnRoaXMucGFyYW1ldGVycz17c2hhcGVzOmEsb3B0aW9uczpifTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgZGIoYSxiKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gZGIoYSxiKXtmdW5jdGlvbiBjKGEpe2Z1bmN0aW9uIGMoYSxiLGMpe2J8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogdmVjIGRvZXMgbm90IGV4aXN0Iik7cmV0dXJuIGIuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihjKS5hZGQoYSl9ZnVuY3Rpb24gZyhhLGIsYyl7dmFyIGQ9YS54LWIueDt2YXIgZT1hLnktYi55O3ZhciBmPWMueC1hLng7dmFyIGc9Yy55LWEueSxoPWQqZCtlKmU7aWYoTWF0aC5hYnMoZCpnLWUqZik+TnVtYmVyLkVQU0lMT04pe3ZhciBsPU1hdGguc3FydChoKSxtPU1hdGguc3FydChmKmYrZypnKTtoPWIueC1lL2w7Yj1iLnkrZC9sO2c9KChjLngtZy9tLWgpKmctKGMueStmL20tYikqZikvKGQqZy1lKmYpO2Y9aCtkKmctYS54O2Q9YitlKmctYS55O2U9ZipmKwpkKmQ7aWYoMj49ZSlyZXR1cm4gbmV3IEIoZixkKTtlPU1hdGguc3FydChlLzIpfWVsc2UgYT0hMSxkPk51bWJlci5FUFNJTE9OP2Y+TnVtYmVyLkVQU0lMT04mJihhPSEwKTpkPC1OdW1iZXIuRVBTSUxPTj9mPC1OdW1iZXIuRVBTSUxPTiYmKGE9ITApOk1hdGguc2lnbihlKT09PU1hdGguc2lnbihnKSYmKGE9ITApLGE/KGY9LWUsZT1NYXRoLnNxcnQoaCkpOihmPWQsZD1lLGU9TWF0aC5zcXJ0KGgvMikpO3JldHVybiBuZXcgQihmL2UsZC9lKX1mdW5jdGlvbiBoKGEsYil7Zm9yKE09YS5sZW5ndGg7MDw9LS1NOyl7dmFyIGM9TTt2YXIgZj1NLTE7MD5mJiYoZj1hLmxlbmd0aC0xKTt2YXIgZyxoPXgrMipFO2ZvcihnPTA7ZzxoO2crKyl7dmFyIGw9WSpnLG09WSooZysxKSxyPWIrZitsLGs9YitmK207bT1iK2MrbTt0KGIrYytsKTt0KHIpO3QobSk7dChyKTt0KGspO3QobSk7bD1lLmxlbmd0aC8zO2w9SC5nZW5lcmF0ZVNpZGVXYWxsVVYoZCxlLGwtNixsLTMsbC0yLGwtMSk7dihsWzBdKTsKdihsWzFdKTt2KGxbM10pO3YobFsxXSk7dihsWzJdKTt2KGxbM10pfX19ZnVuY3Rpb24gbChhLGIsYyl7eS5wdXNoKGEpO3kucHVzaChiKTt5LnB1c2goYyl9ZnVuY3Rpb24gayhhLGIsYyl7dChhKTt0KGIpO3QoYyk7YT1lLmxlbmd0aC8zO2E9SC5nZW5lcmF0ZVRvcFVWKGQsZSxhLTMsYS0yLGEtMSk7dihhWzBdKTt2KGFbMV0pO3YoYVsyXSl9ZnVuY3Rpb24gdChhKXtlLnB1c2goeVszKmFdKTtlLnB1c2goeVszKmErMV0pO2UucHVzaCh5WzMqYSsyXSl9ZnVuY3Rpb24gdihhKXtmLnB1c2goYS54KTtmLnB1c2goYS55KX12YXIgeT1bXSx3PXZvaWQgMCE9PWIuY3VydmVTZWdtZW50cz9iLmN1cnZlU2VnbWVudHM6MTIseD12b2lkIDAhPT1iLnN0ZXBzP2Iuc3RlcHM6MSxGPXZvaWQgMCE9PWIuZGVwdGg/Yi5kZXB0aDoxMDAsST12b2lkIDAhPT1iLmJldmVsRW5hYmxlZD9iLmJldmVsRW5hYmxlZDohMCx6PXZvaWQgMCE9PWIuYmV2ZWxUaGlja25lc3M/Yi5iZXZlbFRoaWNrbmVzczo2LApBPXZvaWQgMCE9PWIuYmV2ZWxTaXplP2IuYmV2ZWxTaXplOnotMixHPXZvaWQgMCE9PWIuYmV2ZWxPZmZzZXQ/Yi5iZXZlbE9mZnNldDowLEU9dm9pZCAwIT09Yi5iZXZlbFNlZ21lbnRzP2IuYmV2ZWxTZWdtZW50czozLEM9Yi5leHRydWRlUGF0aCxIPXZvaWQgMCE9PWIuVVZHZW5lcmF0b3I/Yi5VVkdlbmVyYXRvcjpxazt2b2lkIDAhPT1iLmFtb3VudCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSxGPWIuYW1vdW50KTt2YXIgRD0hMTtpZihDKXt2YXIgSj1DLmdldFNwYWNlZFBvaW50cyh4KTtEPSEwO0k9ITE7dmFyIEw9Qy5jb21wdXRlRnJlbmV0RnJhbWVzKHgsITEpO3ZhciBOPW5ldyBuO3ZhciBPPW5ldyBuO3ZhciBQPW5ldyBufUl8fChHPUE9ej1FPTApO3ZhciBRO3c9YS5leHRyYWN0UG9pbnRzKHcpO2E9dy5zaGFwZTt2YXIgUz13LmhvbGVzO2lmKCFxYi5pc0Nsb2NrV2lzZShhKSl7YT0KYS5yZXZlcnNlKCk7dmFyIGhhPTA7Zm9yKFE9Uy5sZW5ndGg7aGE8UTtoYSsrKXt2YXIgUj1TW2hhXTtxYi5pc0Nsb2NrV2lzZShSKSYmKFNbaGFdPVIucmV2ZXJzZSgpKX19dmFyIFo9cWIudHJpYW5ndWxhdGVTaGFwZShhLFMpLFg9YTtoYT0wO2ZvcihRPVMubGVuZ3RoO2hhPFE7aGErKylSPVNbaGFdLGE9YS5jb25jYXQoUik7dmFyIFQsWT1hLmxlbmd0aCxWLGNhPVoubGVuZ3RoO3c9W107dmFyIE09MDt2YXIgVz1YLmxlbmd0aDt2YXIgZmE9Vy0xO2ZvcihUPU0rMTtNPFc7TSsrLGZhKyssVCsrKWZhPT09VyYmKGZhPTApLFQ9PT1XJiYoVD0wKSx3W01dPWcoWFtNXSxYW2ZhXSxYW1RdKTtDPVtdO3ZhciBkYT13LmNvbmNhdCgpO2hhPTA7Zm9yKFE9Uy5sZW5ndGg7aGE8UTtoYSsrKXtSPVNbaGFdO3ZhciBiYT1bXTtNPTA7Vz1SLmxlbmd0aDtmYT1XLTE7Zm9yKFQ9TSsxO008VztNKyssZmErKyxUKyspZmE9PT1XJiYoZmE9MCksVD09PVcmJihUPTApLGJhW01dPWcoUltNXSxSW2ZhXSwKUltUXSk7Qy5wdXNoKGJhKTtkYT1kYS5jb25jYXQoYmEpfWZvcihmYT0wO2ZhPEU7ZmErKyl7Vz1mYS9FO3ZhciBlYT16Kk1hdGguY29zKFcqTWF0aC5QSS8yKTtUPUEqTWF0aC5zaW4oVypNYXRoLlBJLzIpK0c7TT0wO2ZvcihXPVgubGVuZ3RoO008VztNKyspe3ZhciBVPWMoWFtNXSx3W01dLFQpO2woVS54LFUueSwtZWEpfWhhPTA7Zm9yKFE9Uy5sZW5ndGg7aGE8UTtoYSsrKWZvcihSPVNbaGFdLGJhPUNbaGFdLE09MCxXPVIubGVuZ3RoO008VztNKyspVT1jKFJbTV0sYmFbTV0sVCksbChVLngsVS55LC1lYSl9VD1BK0c7Zm9yKE09MDtNPFk7TSsrKVU9ST9jKGFbTV0sZGFbTV0sVCk6YVtNXSxEPyhPLmNvcHkoTC5ub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihVLngpLE4uY29weShMLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoVS55KSxQLmNvcHkoSlswXSkuYWRkKE8pLmFkZChOKSxsKFAueCxQLnksUC56KSk6bChVLngsVS55LDApO2ZvcihXPTE7Vzw9eDtXKyspZm9yKE09CjA7TTxZO00rKylVPUk/YyhhW01dLGRhW01dLFQpOmFbTV0sRD8oTy5jb3B5KEwubm9ybWFsc1tXXSkubXVsdGlwbHlTY2FsYXIoVS54KSxOLmNvcHkoTC5iaW5vcm1hbHNbV10pLm11bHRpcGx5U2NhbGFyKFUueSksUC5jb3B5KEpbV10pLmFkZChPKS5hZGQoTiksbChQLngsUC55LFAueikpOmwoVS54LFUueSxGL3gqVyk7Zm9yKGZhPUUtMTswPD1mYTtmYS0tKXtXPWZhL0U7ZWE9eipNYXRoLmNvcyhXKk1hdGguUEkvMik7VD1BKk1hdGguc2luKFcqTWF0aC5QSS8yKStHO009MDtmb3IoVz1YLmxlbmd0aDtNPFc7TSsrKVU9YyhYW01dLHdbTV0sVCksbChVLngsVS55LEYrZWEpO2hhPTA7Zm9yKFE9Uy5sZW5ndGg7aGE8UTtoYSsrKWZvcihSPVNbaGFdLGJhPUNbaGFdLE09MCxXPVIubGVuZ3RoO008VztNKyspVT1jKFJbTV0sYmFbTV0sVCksRD9sKFUueCxVLnkrSlt4LTFdLnksSlt4LTFdLngrZWEpOmwoVS54LFUueSxGK2VhKX0oZnVuY3Rpb24oKXt2YXIgYT1lLmxlbmd0aC8zO2lmKEkpe3ZhciBiPQowKlk7Zm9yKE09MDtNPGNhO00rKylWPVpbTV0sayhWWzJdK2IsVlsxXStiLFZbMF0rYik7Yj1ZKih4KzIqRSk7Zm9yKE09MDtNPGNhO00rKylWPVpbTV0sayhWWzBdK2IsVlsxXStiLFZbMl0rYil9ZWxzZXtmb3IoTT0wO008Y2E7TSsrKVY9WltNXSxrKFZbMl0sVlsxXSxWWzBdKTtmb3IoTT0wO008Y2E7TSsrKVY9WltNXSxrKFZbMF0rWSp4LFZbMV0rWSp4LFZbMl0rWSp4KX1kLmFkZEdyb3VwKGEsZS5sZW5ndGgvMy1hLDApfSkoKTsoZnVuY3Rpb24oKXt2YXIgYT1lLmxlbmd0aC8zLGI9MDtoKFgsYik7Yis9WC5sZW5ndGg7aGE9MDtmb3IoUT1TLmxlbmd0aDtoYTxRO2hhKyspUj1TW2hhXSxoKFIsYiksYis9Ui5sZW5ndGg7ZC5hZGRHcm91cChhLGUubGVuZ3RoLzMtYSwxKX0pKCl9RC5jYWxsKHRoaXMpO3RoaXMudHlwZT0iRXh0cnVkZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczphLG9wdGlvbnM6Yn07YT1BcnJheS5pc0FycmF5KGEpP2E6W2FdO2Zvcih2YXIgZD0KdGhpcyxlPVtdLGY9W10sZz0wLGg9YS5sZW5ndGg7ZzxoO2crKyljKGFbZ10pO3RoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoZSwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgQShmLDIpKTt0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl9ZnVuY3Rpb24gWGgoYSxiLGMpe2Muc2hhcGVzPVtdO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWMuc2hhcGVzLnB1c2goYVtkXS51dWlkKTtlbHNlIGMuc2hhcGVzLnB1c2goYS51dWlkKTt2b2lkIDAhPT1iLmV4dHJ1ZGVQYXRoJiYoYy5vcHRpb25zLmV4dHJ1ZGVQYXRoPWIuZXh0cnVkZVBhdGgudG9KU09OKCkpO3JldHVybiBjfWZ1bmN0aW9uIGRlKGEsYil7Ry5jYWxsKHRoaXMpO3RoaXMudHlwZT0iVGV4dEdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3RleHQ6YSxwYXJhbWV0ZXJzOmJ9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBUYyhhLGIpKTt0aGlzLm1lcmdlVmVydGljZXMoKX0KZnVuY3Rpb24gVGMoYSxiKXtiPWJ8fHt9O3ZhciBjPWIuZm9udDtpZighY3x8IWMuaXNGb250KXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5UZXh0R2VvbWV0cnk6IGZvbnQgcGFyYW1ldGVyIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5Gb250LiIpLG5ldyBHO2E9Yy5nZW5lcmF0ZVNoYXBlcyhhLGIuc2l6ZSk7Yi5kZXB0aD12b2lkIDAhPT1iLmhlaWdodD9iLmhlaWdodDo1MDt2b2lkIDA9PT1iLmJldmVsVGhpY2tuZXNzJiYoYi5iZXZlbFRoaWNrbmVzcz0xMCk7dm9pZCAwPT09Yi5iZXZlbFNpemUmJihiLmJldmVsU2l6ZT04KTt2b2lkIDA9PT1iLmJldmVsRW5hYmxlZCYmKGIuYmV2ZWxFbmFibGVkPSExKTtkYi5jYWxsKHRoaXMsYSxiKTt0aGlzLnR5cGU9IlRleHRCdWZmZXJHZW9tZXRyeSJ9ZnVuY3Rpb24gZWUoYSxiLGMsZCxlLGYsZyl7Ry5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3BoZXJlR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsd2lkdGhTZWdtZW50czpiLApoZWlnaHRTZWdtZW50czpjLHBoaVN0YXJ0OmQscGhpTGVuZ3RoOmUsdGhldGFTdGFydDpmLHRoZXRhTGVuZ3RoOmd9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBIYihhLGIsYyxkLGUsZixnKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gSGIoYSxiLGMsZCxlLGYsZyl7RC5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3BoZXJlQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsd2lkdGhTZWdtZW50czpiLGhlaWdodFNlZ21lbnRzOmMscGhpU3RhcnQ6ZCxwaGlMZW5ndGg6ZSx0aGV0YVN0YXJ0OmYsdGhldGFMZW5ndGg6Z307YT1hfHwxO2I9TWF0aC5tYXgoMyxNYXRoLmZsb29yKGIpfHw4KTtjPU1hdGgubWF4KDIsTWF0aC5mbG9vcihjKXx8Nik7ZD12b2lkIDAhPT1kP2Q6MDtlPXZvaWQgMCE9PWU/ZToyKk1hdGguUEk7Zj12b2lkIDAhPT1mP2Y6MDtnPXZvaWQgMCE9PWc/ZzpNYXRoLlBJO3ZhciBoPU1hdGgubWluKGYrZyxNYXRoLlBJKSxsLG0sCnI9MCxrPVtdLHU9bmV3IG4scD1uZXcgbix0PVtdLHY9W10seT1bXSx3PVtdO2ZvcihtPTA7bTw9YzttKyspe3ZhciB4PVtdLEY9bS9jLEk9MDswPT1tJiYwPT1mP0k9LjUvYjptPT1jJiZoPT1NYXRoLlBJJiYoST0tLjUvYik7Zm9yKGw9MDtsPD1iO2wrKyl7dmFyIHo9bC9iO3UueD0tYSpNYXRoLmNvcyhkK3oqZSkqTWF0aC5zaW4oZitGKmcpO3UueT1hKk1hdGguY29zKGYrRipnKTt1Lno9YSpNYXRoLnNpbihkK3oqZSkqTWF0aC5zaW4oZitGKmcpO3YucHVzaCh1LngsdS55LHUueik7cC5jb3B5KHUpLm5vcm1hbGl6ZSgpO3kucHVzaChwLngscC55LHAueik7dy5wdXNoKHorSSwxLUYpO3gucHVzaChyKyspfWsucHVzaCh4KX1mb3IobT0wO208YzttKyspZm9yKGw9MDtsPGI7bCsrKWE9a1ttXVtsKzFdLGQ9a1ttXVtsXSxlPWtbbSsxXVtsXSxnPWtbbSsxXVtsKzFdLCgwIT09bXx8MDxmKSYmdC5wdXNoKGEsZCxnKSwobSE9PWMtMXx8aDxNYXRoLlBJKSYmdC5wdXNoKGQsZSxnKTt0aGlzLnNldEluZGV4KHQpOwp0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKHYsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBBKHksMykpO3RoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEEodywyKSl9ZnVuY3Rpb24gZmUoYSxiLGMsZCxlLGYpe0cuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlJpbmdHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtpbm5lclJhZGl1czphLG91dGVyUmFkaXVzOmIsdGhldGFTZWdtZW50czpjLHBoaVNlZ21lbnRzOmQsdGhldGFTdGFydDplLHRoZXRhTGVuZ3RoOmZ9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBVYyhhLGIsYyxkLGUsZikpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFVjKGEsYixjLGQsZSxmKXtELmNhbGwodGhpcyk7dGhpcy50eXBlPSJSaW5nQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17aW5uZXJSYWRpdXM6YSxvdXRlclJhZGl1czpiLHRoZXRhU2VnbWVudHM6YyxwaGlTZWdtZW50czpkLHRoZXRhU3RhcnQ6ZSwKdGhldGFMZW5ndGg6Zn07YT1hfHwuNTtiPWJ8fDE7ZT12b2lkIDAhPT1lP2U6MDtmPXZvaWQgMCE9PWY/ZjoyKk1hdGguUEk7Yz12b2lkIDAhPT1jP01hdGgubWF4KDMsYyk6ODtkPXZvaWQgMCE9PWQ/TWF0aC5tYXgoMSxkKToxO3ZhciBnPVtdLGg9W10sbD1bXSxtPVtdLHI9YSxrPShiLWEpL2QsdT1uZXcgbixwPW5ldyBCLHQsdjtmb3IodD0wO3Q8PWQ7dCsrKXtmb3Iodj0wO3Y8PWM7disrKWE9ZSt2L2MqZix1Lng9cipNYXRoLmNvcyhhKSx1Lnk9cipNYXRoLnNpbihhKSxoLnB1c2godS54LHUueSx1LnopLGwucHVzaCgwLDAsMSkscC54PSh1LngvYisxKS8yLHAueT0odS55L2IrMSkvMixtLnB1c2gocC54LHAueSk7cis9a31mb3IodD0wO3Q8ZDt0KyspZm9yKGI9dCooYysxKSx2PTA7djxjO3YrKylhPXYrYixlPWErYysxLGY9YStjKzIscj1hKzEsZy5wdXNoKGEsZSxyKSxnLnB1c2goZSxmLHIpO3RoaXMuc2V0SW5kZXgoZyk7dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShoLAozKSk7dGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IEEobCwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgQShtLDIpKX1mdW5jdGlvbiBnZShhLGIsYyxkKXtHLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMYXRoZUdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3BvaW50czphLHNlZ21lbnRzOmIscGhpU3RhcnQ6YyxwaGlMZW5ndGg6ZH07dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IFZjKGEsYixjLGQpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBWYyhhLGIsYyxkKXtELmNhbGwodGhpcyk7dGhpcy50eXBlPSJMYXRoZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3BvaW50czphLHNlZ21lbnRzOmIscGhpU3RhcnQ6YyxwaGlMZW5ndGg6ZH07Yj1NYXRoLmZsb29yKGIpfHwxMjtjPWN8fDA7ZD1kfHwyKk1hdGguUEk7ZD1QLmNsYW1wKGQsMCwyKk1hdGguUEkpO3ZhciBlPVtdLGY9W10sZz1bXSxoPTEvYixsPW5ldyBuLG09bmV3IEIscjtmb3Iocj0KMDtyPD1iO3IrKyl7dmFyIGs9YytyKmgqZDt2YXIgdT1NYXRoLnNpbihrKSxwPU1hdGguY29zKGspO2ZvcihrPTA7azw9YS5sZW5ndGgtMTtrKyspbC54PWFba10ueCp1LGwueT1hW2tdLnksbC56PWFba10ueCpwLGYucHVzaChsLngsbC55LGwueiksbS54PXIvYixtLnk9ay8oYS5sZW5ndGgtMSksZy5wdXNoKG0ueCxtLnkpfWZvcihyPTA7cjxiO3IrKylmb3Ioaz0wO2s8YS5sZW5ndGgtMTtrKyspYz1rK3IqYS5sZW5ndGgsaD1jK2EubGVuZ3RoLGw9YythLmxlbmd0aCsxLG09YysxLGUucHVzaChjLGgsbSksZS5wdXNoKGgsbCxtKTt0aGlzLnNldEluZGV4KGUpO3RoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoZiwzKSk7dGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgQShnLDIpKTt0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7aWYoZD09PTIqTWF0aC5QSSlmb3IoZD10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLmFycmF5LGU9bmV3IG4sZj1uZXcgbixnPW5ldyBuLGM9CmIqYS5sZW5ndGgqMyxrPXI9MDtyPGEubGVuZ3RoO3IrKyxrKz0zKWUueD1kW2srMF0sZS55PWRbaysxXSxlLno9ZFtrKzJdLGYueD1kW2MrayswXSxmLnk9ZFtjK2srMV0sZi56PWRbYytrKzJdLGcuYWRkVmVjdG9ycyhlLGYpLm5vcm1hbGl6ZSgpLGRbayswXT1kW2MrayswXT1nLngsZFtrKzFdPWRbYytrKzFdPWcueSxkW2srMl09ZFtjK2srMl09Zy56fWZ1bmN0aW9uIGVjKGEsYil7Ry5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU2hhcGVHZW9tZXRyeSI7Im9iamVjdCI9PT10eXBlb2YgYiYmKGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGVHZW9tZXRyeTogT3B0aW9ucyBwYXJhbWV0ZXIgaGFzIGJlZW4gcmVtb3ZlZC4iKSxiPWIuY3VydmVTZWdtZW50cyk7dGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6YSxjdXJ2ZVNlZ21lbnRzOmJ9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBmYyhhLGIpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBmYyhhLGIpe2Z1bmN0aW9uIGMoYSl7dmFyIGMsCmg9ZS5sZW5ndGgvMzthPWEuZXh0cmFjdFBvaW50cyhiKTt2YXIgbT1hLnNoYXBlLGs9YS5ob2xlczshMT09PXFiLmlzQ2xvY2tXaXNlKG0pJiYobT1tLnJldmVyc2UoKSk7YT0wO2ZvcihjPWsubGVuZ3RoO2E8YzthKyspe3ZhciByPWtbYV07ITA9PT1xYi5pc0Nsb2NrV2lzZShyKSYmKGtbYV09ci5yZXZlcnNlKCkpfXZhciBuPXFiLnRyaWFuZ3VsYXRlU2hhcGUobSxrKTthPTA7Zm9yKGM9ay5sZW5ndGg7YTxjO2ErKylyPWtbYV0sbT1tLmNvbmNhdChyKTthPTA7Zm9yKGM9bS5sZW5ndGg7YTxjO2ErKylyPW1bYV0sZS5wdXNoKHIueCxyLnksMCksZi5wdXNoKDAsMCwxKSxnLnB1c2goci54LHIueSk7YT0wO2ZvcihjPW4ubGVuZ3RoO2E8YzthKyspbT1uW2FdLGQucHVzaChtWzBdK2gsbVsxXStoLG1bMl0raCksbCs9M31ELmNhbGwodGhpcyk7dGhpcy50eXBlPSJTaGFwZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczphLGN1cnZlU2VnbWVudHM6Yn07Yj1ifHwKMTI7dmFyIGQ9W10sZT1bXSxmPVtdLGc9W10saD0wLGw9MDtpZighMT09PUFycmF5LmlzQXJyYXkoYSkpYyhhKTtlbHNlIGZvcih2YXIgbT0wO208YS5sZW5ndGg7bSsrKWMoYVttXSksdGhpcy5hZGRHcm91cChoLGwsbSksaCs9bCxsPTA7dGhpcy5zZXRJbmRleChkKTt0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKGUsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBBKGYsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEEoZywyKSl9ZnVuY3Rpb24gWWgoYSxiKXtiLnNoYXBlcz1bXTtpZihBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliLnNoYXBlcy5wdXNoKGFbY10udXVpZCk7ZWxzZSBiLnNoYXBlcy5wdXNoKGEudXVpZCk7cmV0dXJuIGJ9ZnVuY3Rpb24gV2MoYSxiKXtELmNhbGwodGhpcyk7dGhpcy50eXBlPSJFZGdlc0dlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3RocmVzaG9sZEFuZ2xlOmJ9O3ZhciBjPQpbXTtiPU1hdGguY29zKFAuREVHMlJBRCoodm9pZCAwIT09Yj9iOjEpKTt2YXIgZD1bMCwwXSxlPXt9LGY9WyJhIiwiYiIsImMiXTtpZihhLmlzQnVmZmVyR2VvbWV0cnkpe3ZhciBnPW5ldyBHO2cuZnJvbUJ1ZmZlckdlb21ldHJ5KGEpfWVsc2UgZz1hLmNsb25lKCk7Zy5tZXJnZVZlcnRpY2VzKCk7Zy5jb21wdXRlRmFjZU5vcm1hbHMoKTthPWcudmVydGljZXM7Zz1nLmZhY2VzO2Zvcih2YXIgaD0wLGw9Zy5sZW5ndGg7aDxsO2grKylmb3IodmFyIG09Z1toXSxrPTA7Mz5rO2srKyl7dmFyIHE9bVtmW2tdXTt2YXIgbj1tW2ZbKGsrMSklM11dO2RbMF09TWF0aC5taW4ocSxuKTtkWzFdPU1hdGgubWF4KHEsbik7cT1kWzBdKyIsIitkWzFdO3ZvaWQgMD09PWVbcV0/ZVtxXT17aW5kZXgxOmRbMF0saW5kZXgyOmRbMV0sZmFjZTE6aCxmYWNlMjp2b2lkIDB9OmVbcV0uZmFjZTI9aH1mb3IocSBpbiBlKWlmKGQ9ZVtxXSx2b2lkIDA9PT1kLmZhY2UyfHxnW2QuZmFjZTFdLm5vcm1hbC5kb3QoZ1tkLmZhY2UyXS5ub3JtYWwpPD0KYilmPWFbZC5pbmRleDFdLGMucHVzaChmLngsZi55LGYueiksZj1hW2QuaW5kZXgyXSxjLnB1c2goZi54LGYueSxmLnopO3RoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoYywzKSl9ZnVuY3Rpb24gZ2MoYSxiLGMsZCxlLGYsZyxoKXtHLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDeWxpbmRlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1c1RvcDphLHJhZGl1c0JvdHRvbTpiLGhlaWdodDpjLHJhZGlhbFNlZ21lbnRzOmQsaGVpZ2h0U2VnbWVudHM6ZSxvcGVuRW5kZWQ6Zix0aGV0YVN0YXJ0OmcsdGhldGFMZW5ndGg6aH07dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IHJiKGEsYixjLGQsZSxmLGcsaCkpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIHJiKGEsYixjLGQsZSxmLGcsaCl7ZnVuY3Rpb24gbChjKXt2YXIgZSxmPW5ldyBCLGw9bmV3IG4scj0wLHY9ITA9PT1jP2E6Yix4PSEwPT09Yz8xOi0xO3ZhciBBPXQ7Zm9yKGU9MTtlPD1kO2UrKylxLnB1c2goMCwKeSp4LDApLHUucHVzaCgwLHgsMCkscC5wdXNoKC41LC41KSx0Kys7dmFyIEg9dDtmb3IoZT0wO2U8PWQ7ZSsrKXt2YXIgRT1lL2QqaCtnLEM9TWF0aC5jb3MoRSk7RT1NYXRoLnNpbihFKTtsLng9dipFO2wueT15Kng7bC56PXYqQztxLnB1c2gobC54LGwueSxsLnopO3UucHVzaCgwLHgsMCk7Zi54PS41KkMrLjU7Zi55PS41KkUqeCsuNTtwLnB1c2goZi54LGYueSk7dCsrfWZvcihlPTA7ZTxkO2UrKylmPUErZSxsPUgrZSwhMD09PWM/ay5wdXNoKGwsbCsxLGYpOmsucHVzaChsKzEsbCxmKSxyKz0zO20uYWRkR3JvdXAodyxyLCEwPT09Yz8xOjIpO3crPXJ9RC5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXNUb3A6YSxyYWRpdXNCb3R0b206YixoZWlnaHQ6YyxyYWRpYWxTZWdtZW50czpkLGhlaWdodFNlZ21lbnRzOmUsb3BlbkVuZGVkOmYsdGhldGFTdGFydDpnLHRoZXRhTGVuZ3RoOmh9O3ZhciBtPXRoaXM7CmE9dm9pZCAwIT09YT9hOjE7Yj12b2lkIDAhPT1iP2I6MTtjPWN8fDE7ZD1NYXRoLmZsb29yKGQpfHw4O2U9TWF0aC5mbG9vcihlKXx8MTtmPXZvaWQgMCE9PWY/ZjohMTtnPXZvaWQgMCE9PWc/ZzowO2g9dm9pZCAwIT09aD9oOjIqTWF0aC5QSTt2YXIgaz1bXSxxPVtdLHU9W10scD1bXSx0PTAsdj1bXSx5PWMvMix3PTA7KGZ1bmN0aW9uKCl7dmFyIGYsbCxyPW5ldyBuLHo9bmV3IG4sQj0wLEE9KGItYSkvYztmb3IobD0wO2w8PWU7bCsrKXt2YXIgRT1bXSxDPWwvZSxIPUMqKGItYSkrYTtmb3IoZj0wO2Y8PWQ7ZisrKXt2YXIgRz1mL2QsRD1HKmgrZyxKPU1hdGguc2luKEQpO0Q9TWF0aC5jb3MoRCk7ei54PUgqSjt6Lnk9LUMqYyt5O3ouej1IKkQ7cS5wdXNoKHoueCx6Lnksei56KTtyLnNldChKLEEsRCkubm9ybWFsaXplKCk7dS5wdXNoKHIueCxyLnksci56KTtwLnB1c2goRywxLUMpO0UucHVzaCh0KyspfXYucHVzaChFKX1mb3IoZj0wO2Y8ZDtmKyspZm9yKGw9MDtsPGU7bCsrKXI9CnZbbCsxXVtmXSx6PXZbbCsxXVtmKzFdLEE9dltsXVtmKzFdLGsucHVzaCh2W2xdW2ZdLHIsQSksay5wdXNoKHIseixBKSxCKz02O20uYWRkR3JvdXAodyxCLDApO3crPUJ9KSgpOyExPT09ZiYmKDA8YSYmbCghMCksMDxiJiZsKCExKSk7dGhpcy5zZXRJbmRleChrKTt0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKHEsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBBKHUsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEEocCwyKSl9ZnVuY3Rpb24gaGUoYSxiLGMsZCxlLGYsZyl7Z2MuY2FsbCh0aGlzLDAsYSxiLGMsZCxlLGYsZyk7dGhpcy50eXBlPSJDb25lR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsaGVpZ2h0OmIscmFkaWFsU2VnbWVudHM6YyxoZWlnaHRTZWdtZW50czpkLG9wZW5FbmRlZDplLHRoZXRhU3RhcnQ6Zix0aGV0YUxlbmd0aDpnfX1mdW5jdGlvbiBpZShhLGIsYyxkLGUsZixnKXtyYi5jYWxsKHRoaXMsMCxhLApiLGMsZCxlLGYsZyk7dGhpcy50eXBlPSJDb25lQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsaGVpZ2h0OmIscmFkaWFsU2VnbWVudHM6YyxoZWlnaHRTZWdtZW50czpkLG9wZW5FbmRlZDplLHRoZXRhU3RhcnQ6Zix0aGV0YUxlbmd0aDpnfX1mdW5jdGlvbiBqZShhLGIsYyxkKXtHLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDaXJjbGVHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxzZWdtZW50czpiLHRoZXRhU3RhcnQ6Yyx0aGV0YUxlbmd0aDpkfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgWGMoYSxiLGMsZCkpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFhjKGEsYixjLGQpe0QuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkNpcmNsZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLHNlZ21lbnRzOmIsdGhldGFTdGFydDpjLHRoZXRhTGVuZ3RoOmR9O2E9YXx8MTtiPXZvaWQgMCE9PWI/TWF0aC5tYXgoMywKYik6ODtjPXZvaWQgMCE9PWM/YzowO2Q9dm9pZCAwIT09ZD9kOjIqTWF0aC5QSTt2YXIgZT1bXSxmPVtdLGc9W10saD1bXSxsLG09bmV3IG4saz1uZXcgQjtmLnB1c2goMCwwLDApO2cucHVzaCgwLDAsMSk7aC5wdXNoKC41LC41KTt2YXIgcT0wO2ZvcihsPTM7cTw9YjtxKyssbCs9Myl7dmFyIHU9YytxL2IqZDttLng9YSpNYXRoLmNvcyh1KTttLnk9YSpNYXRoLnNpbih1KTtmLnB1c2gobS54LG0ueSxtLnopO2cucHVzaCgwLDAsMSk7ay54PShmW2xdL2ErMSkvMjtrLnk9KGZbbCsxXS9hKzEpLzI7aC5wdXNoKGsueCxrLnkpfWZvcihsPTE7bDw9YjtsKyspZS5wdXNoKGwsbCsxLDApO3RoaXMuc2V0SW5kZXgoZSk7dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShmLDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgQShnLDMpKTt0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBBKGgsMikpfWZ1bmN0aW9uIGhjKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9CiJTaGFkb3dNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSigwKTt0aGlzLnRyYW5zcGFyZW50PSEwO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uIFljKGEpe3ZhLmNhbGwodGhpcyxhKTt0aGlzLnR5cGU9IlJhd1NoYWRlck1hdGVyaWFsIn1mdW5jdGlvbiBlYihhKXtPLmNhbGwodGhpcyk7dGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn07dGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSigxNjc3NzIxNSk7dGhpcy5tZXRhbG5lc3M9dGhpcy5yb3VnaG5lc3M9LjU7dGhpcy5saWdodE1hcD10aGlzLm1hcD1udWxsO3RoaXMubGlnaHRNYXBJbnRlbnNpdHk9MTt0aGlzLmFvTWFwPW51bGw7dGhpcy5hb01hcEludGVuc2l0eT0xO3RoaXMuZW1pc3NpdmU9bmV3IEooMCk7dGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xO3RoaXMuYnVtcE1hcD10aGlzLmVtaXNzaXZlTWFwPW51bGw7dGhpcy5idW1wU2NhbGU9MTt0aGlzLm5vcm1hbE1hcD1udWxsO3RoaXMubm9ybWFsTWFwVHlwZT0KMDt0aGlzLm5vcm1hbFNjYWxlPW5ldyBCKDEsMSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLm1ldGFsbmVzc01hcD10aGlzLnJvdWdobmVzc01hcD1udWxsO3RoaXMuZW52TWFwSW50ZW5zaXR5PTE7dGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4O3RoaXMud2lyZWZyYW1lPSExO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPTE7dGhpcy53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIjt0aGlzLm1vcnBoTm9ybWFscz10aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPSExO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uIGljKGEpe2ViLmNhbGwodGhpcyk7dGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn07dGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCI7dGhpcy5yZWZsZWN0aXZpdHk9Ci41O3RoaXMuY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0PTA7dGhpcy5zaGVlbj1udWxsO3RoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IEIoMSwxKTt0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1udWxsO3RoaXMudHJhbnNwYXJlbmN5PTA7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gUmEoYSl7Ty5jYWxsKHRoaXMpO3RoaXMudHlwZT0iTWVzaFBob25nTWF0ZXJpYWwiO3RoaXMuY29sb3I9bmV3IEooMTY3NzcyMTUpO3RoaXMuc3BlY3VsYXI9bmV3IEooMTExODQ4MSk7dGhpcy5zaGluaW5lc3M9MzA7dGhpcy5saWdodE1hcD10aGlzLm1hcD1udWxsO3RoaXMubGlnaHRNYXBJbnRlbnNpdHk9MTt0aGlzLmFvTWFwPW51bGw7dGhpcy5hb01hcEludGVuc2l0eT0xO3RoaXMuZW1pc3NpdmU9bmV3IEooMCk7dGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xO3RoaXMuYnVtcE1hcD10aGlzLmVtaXNzaXZlTWFwPW51bGw7dGhpcy5idW1wU2NhbGU9MTt0aGlzLm5vcm1hbE1hcD0KbnVsbDt0aGlzLm5vcm1hbE1hcFR5cGU9MDt0aGlzLm5vcm1hbFNjYWxlPW5ldyBCKDEsMSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLnNwZWN1bGFyTWFwPW51bGw7dGhpcy5jb21iaW5lPTA7dGhpcy5yZWZsZWN0aXZpdHk9MTt0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTg7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiO3RoaXMubW9ycGhOb3JtYWxzPXRoaXMubW9ycGhUYXJnZXRzPXRoaXMuc2tpbm5pbmc9ITE7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gamMoYSl7UmEuY2FsbCh0aGlzKTt0aGlzLmRlZmluZXM9e1RPT046IiJ9O3RoaXMudHlwZT0iTWVzaFRvb25NYXRlcmlhbCI7dGhpcy5ncmFkaWVudE1hcD0KbnVsbDt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBrYyhhKXtPLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiO3RoaXMuYnVtcE1hcD1udWxsO3RoaXMuYnVtcFNjYWxlPTE7dGhpcy5ub3JtYWxNYXA9bnVsbDt0aGlzLm5vcm1hbE1hcFR5cGU9MDt0aGlzLm5vcm1hbFNjYWxlPW5ldyBCKDEsMSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLm1vcnBoTm9ybWFscz10aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPXRoaXMuZm9nPSExO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uIGxjKGEpe08uY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik1lc2hMYW1iZXJ0TWF0ZXJpYWwiO3RoaXMuY29sb3I9bmV3IEooMTY3NzcyMTUpO3RoaXMubGlnaHRNYXA9dGhpcy5tYXA9bnVsbDt0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PQoxO3RoaXMuYW9NYXA9bnVsbDt0aGlzLmFvTWFwSW50ZW5zaXR5PTE7dGhpcy5lbWlzc2l2ZT1uZXcgSigwKTt0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTE7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLnNwZWN1bGFyTWFwPXRoaXMuZW1pc3NpdmVNYXA9bnVsbDt0aGlzLmNvbWJpbmU9MDt0aGlzLnJlZmxlY3Rpdml0eT0xO3RoaXMucmVmcmFjdGlvblJhdGlvPS45ODt0aGlzLndpcmVmcmFtZT0hMTt0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xO3RoaXMud2lyZWZyYW1lTGluZWpvaW49dGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCI7dGhpcy5tb3JwaE5vcm1hbHM9dGhpcy5tb3JwaFRhcmdldHM9dGhpcy5za2lubmluZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBtYyhhKXtPLmNhbGwodGhpcyk7dGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9O3RoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBKKDE2Nzc3MjE1KTt0aGlzLmJ1bXBNYXA9CnRoaXMubWFwPXRoaXMubWF0Y2FwPW51bGw7dGhpcy5idW1wU2NhbGU9MTt0aGlzLm5vcm1hbE1hcD1udWxsO3RoaXMubm9ybWFsTWFwVHlwZT0wO3RoaXMubm9ybWFsU2NhbGU9bmV3IEIoMSwxKTt0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9MTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9MDt0aGlzLmFscGhhTWFwPW51bGw7dGhpcy5tb3JwaE5vcm1hbHM9dGhpcy5tb3JwaFRhcmdldHM9dGhpcy5za2lubmluZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBuYyhhKXtSLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMaW5lRGFzaGVkTWF0ZXJpYWwiO3RoaXMuc2NhbGU9MTt0aGlzLmRhc2hTaXplPTM7dGhpcy5nYXBTaXplPTE7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gSWEoYSxiLGMsZCl7dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM9YTt0aGlzLl9jYWNoZWRJbmRleD0wO3RoaXMucmVzdWx0QnVmZmVyPXZvaWQgMCE9PWQ/ZDpuZXcgYi5jb25zdHJ1Y3RvcihjKTsKdGhpcy5zYW1wbGVWYWx1ZXM9Yjt0aGlzLnZhbHVlU2l6ZT1jfWZ1bmN0aW9uIFJlKGEsYixjLGQpe0lhLmNhbGwodGhpcyxhLGIsYyxkKTt0aGlzLl9vZmZzZXROZXh0PXRoaXMuX3dlaWdodE5leHQ9dGhpcy5fb2Zmc2V0UHJldj10aGlzLl93ZWlnaHRQcmV2PS0wfWZ1bmN0aW9uIGtlKGEsYixjLGQpe0lhLmNhbGwodGhpcyxhLGIsYyxkKX1mdW5jdGlvbiBTZShhLGIsYyxkKXtJYS5jYWxsKHRoaXMsYSxiLGMsZCl9ZnVuY3Rpb24gc2EoYSxiLGMsZCl7aWYodm9pZCAwPT09YSl0aHJvdyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgbmFtZSBpcyB1bmRlZmluZWQiKTtpZih2b2lkIDA9PT1ifHwwPT09Yi5sZW5ndGgpdGhyb3cgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IG5vIGtleWZyYW1lcyBpbiB0cmFjayBuYW1lZCAiK2EpO3RoaXMubmFtZT1hO3RoaXMudGltZXM9dGEuY29udmVydEFycmF5KGIsdGhpcy5UaW1lQnVmZmVyVHlwZSk7dGhpcy52YWx1ZXM9CnRhLmNvbnZlcnRBcnJheShjLHRoaXMuVmFsdWVCdWZmZXJUeXBlKTt0aGlzLnNldEludGVycG9sYXRpb24oZHx8dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9ZnVuY3Rpb24gVGUoYSxiLGMpe3NhLmNhbGwodGhpcyxhLGIsYyl9ZnVuY3Rpb24gVWUoYSxiLGMsZCl7c2EuY2FsbCh0aGlzLGEsYixjLGQpfWZ1bmN0aW9uIFpjKGEsYixjLGQpe3NhLmNhbGwodGhpcyxhLGIsYyxkKX1mdW5jdGlvbiBWZShhLGIsYyxkKXtJYS5jYWxsKHRoaXMsYSxiLGMsZCl9ZnVuY3Rpb24gbGUoYSxiLGMsZCl7c2EuY2FsbCh0aGlzLGEsYixjLGQpfWZ1bmN0aW9uIFdlKGEsYixjLGQpe3NhLmNhbGwodGhpcyxhLGIsYyxkKX1mdW5jdGlvbiAkYyhhLGIsYyxkKXtzYS5jYWxsKHRoaXMsYSxiLGMsZCl9ZnVuY3Rpb24gTWEoYSxiLGMpe3RoaXMubmFtZT1hO3RoaXMudHJhY2tzPWM7dGhpcy5kdXJhdGlvbj12b2lkIDAhPT1iP2I6LTE7dGhpcy51dWlkPVAuZ2VuZXJhdGVVVUlEKCk7MD50aGlzLmR1cmF0aW9uJiYKdGhpcy5yZXNldER1cmF0aW9uKCl9ZnVuY3Rpb24gcmsoYSl7c3dpdGNoKGEudG9Mb3dlckNhc2UoKSl7Y2FzZSAic2NhbGFyIjpjYXNlICJkb3VibGUiOmNhc2UgImZsb2F0IjpjYXNlICJudW1iZXIiOmNhc2UgImludGVnZXIiOnJldHVybiBaYztjYXNlICJ2ZWN0b3IiOmNhc2UgInZlY3RvcjIiOmNhc2UgInZlY3RvcjMiOmNhc2UgInZlY3RvcjQiOnJldHVybiAkYztjYXNlICJjb2xvciI6cmV0dXJuIFVlO2Nhc2UgInF1YXRlcm5pb24iOnJldHVybiBsZTtjYXNlICJib29sIjpjYXNlICJib29sZWFuIjpyZXR1cm4gVGU7Y2FzZSAic3RyaW5nIjpyZXR1cm4gV2V9dGhyb3cgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFVuc3VwcG9ydGVkIHR5cGVOYW1lOiAiK2EpO31mdW5jdGlvbiBzayhhKXtpZih2b2lkIDA9PT1hLnR5cGUpdGhyb3cgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7dmFyIGI9cmsoYS50eXBlKTsKaWYodm9pZCAwPT09YS50aW1lcyl7dmFyIGM9W10sZD1bXTt0YS5mbGF0dGVuSlNPTihhLmtleXMsYyxkLCJ2YWx1ZSIpO2EudGltZXM9YzthLnZhbHVlcz1kfXJldHVybiB2b2lkIDAhPT1iLnBhcnNlP2IucGFyc2UoYSk6bmV3IGIoYS5uYW1lLGEudGltZXMsYS52YWx1ZXMsYS5pbnRlcnBvbGF0aW9uKX1mdW5jdGlvbiBvZyhhLGIsYyl7dmFyIGQ9dGhpcyxlPSExLGY9MCxnPTAsaD12b2lkIDAsbD1bXTt0aGlzLm9uU3RhcnQ9dm9pZCAwO3RoaXMub25Mb2FkPWE7dGhpcy5vblByb2dyZXNzPWI7dGhpcy5vbkVycm9yPWM7dGhpcy5pdGVtU3RhcnQ9ZnVuY3Rpb24oYSl7ZysrO2lmKCExPT09ZSYmdm9pZCAwIT09ZC5vblN0YXJ0KWQub25TdGFydChhLGYsZyk7ZT0hMH07dGhpcy5pdGVtRW5kPWZ1bmN0aW9uKGEpe2YrKztpZih2b2lkIDAhPT1kLm9uUHJvZ3Jlc3MpZC5vblByb2dyZXNzKGEsZixnKTtpZihmPT09ZyYmKGU9ITEsdm9pZCAwIT09ZC5vbkxvYWQpKWQub25Mb2FkKCl9Owp0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbihhKXtpZih2b2lkIDAhPT1kLm9uRXJyb3IpZC5vbkVycm9yKGEpfTt0aGlzLnJlc29sdmVVUkw9ZnVuY3Rpb24oYSl7cmV0dXJuIGg/aChhKTphfTt0aGlzLnNldFVSTE1vZGlmaWVyPWZ1bmN0aW9uKGEpe2g9YTtyZXR1cm4gdGhpc307dGhpcy5hZGRIYW5kbGVyPWZ1bmN0aW9uKGEsYil7bC5wdXNoKGEsYik7cmV0dXJuIHRoaXN9O3RoaXMucmVtb3ZlSGFuZGxlcj1mdW5jdGlvbihhKXthPWwuaW5kZXhPZihhKTstMSE9PWEmJmwuc3BsaWNlKGEsMik7cmV0dXJuIHRoaXN9O3RoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPWwubGVuZ3RoO2I8YztiKz0yKXt2YXIgZD1sW2IrMV07aWYobFtiXS50ZXN0KGEpKXJldHVybiBkfXJldHVybiBudWxsfX1mdW5jdGlvbiBWKGEpe3RoaXMubWFuYWdlcj12b2lkIDAhPT1hP2E6Wmg7dGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIjt0aGlzLnJlc291cmNlUGF0aD10aGlzLnBhdGg9CiIifWZ1bmN0aW9uIE5hKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIHBnKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIHFnKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIFhlKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIGFkKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIFllKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIFplKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIEMoKXt0aGlzLnR5cGU9IkN1cnZlIjt0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz0yMDB9ZnVuY3Rpb24gSmEoYSxiLGMsZCxlLGYsZyxoKXtDLmNhbGwodGhpcyk7dGhpcy50eXBlPSJFbGxpcHNlQ3VydmUiO3RoaXMuYVg9YXx8MDt0aGlzLmFZPWJ8fDA7dGhpcy54UmFkaXVzPWN8fDE7dGhpcy55UmFkaXVzPWR8fDE7dGhpcy5hU3RhcnRBbmdsZT1lfHwwO3RoaXMuYUVuZEFuZ2xlPWZ8fDIqTWF0aC5QSTt0aGlzLmFDbG9ja3dpc2U9Z3x8ITE7dGhpcy5hUm90YXRpb249aHx8MH1mdW5jdGlvbiBiZChhLApiLGMsZCxlLGYpe0phLmNhbGwodGhpcyxhLGIsYyxjLGQsZSxmKTt0aGlzLnR5cGU9IkFyY0N1cnZlIn1mdW5jdGlvbiByZygpe3ZhciBhPTAsYj0wLGM9MCxkPTA7cmV0dXJue2luaXRDYXRtdWxsUm9tOmZ1bmN0aW9uKGUsZixnLGgsbCl7ZT1sKihnLWUpO2g9bCooaC1mKTthPWY7Yj1lO2M9LTMqZiszKmctMiplLWg7ZD0yKmYtMipnK2UraH0saW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tOmZ1bmN0aW9uKGUsZixnLGgsbCxtLGspe2U9KChmLWUpL2wtKGctZSkvKGwrbSkrKGctZikvbSkqbTtoPSgoZy1mKS9tLShoLWYpLyhtK2spKyhoLWcpL2spKm07YT1mO2I9ZTtjPS0zKmYrMypnLTIqZS1oO2Q9MipmLTIqZytlK2h9LGNhbGM6ZnVuY3Rpb24oZSl7dmFyIGY9ZSplO3JldHVybiBhK2IqZStjKmYrZCpmKmV9fX1mdW5jdGlvbiBtYShhLGIsYyxkKXtDLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDYXRtdWxsUm9tQ3VydmUzIjt0aGlzLnBvaW50cz1hfHxbXTt0aGlzLmNsb3NlZD1ifHwKITE7dGhpcy5jdXJ2ZVR5cGU9Y3x8ImNlbnRyaXBldGFsIjt0aGlzLnRlbnNpb249ZHx8LjV9ZnVuY3Rpb24gJGgoYSxiLGMsZCxlKXtiPS41KihkLWIpO2U9LjUqKGUtYyk7dmFyIGY9YSphO3JldHVybigyKmMtMipkK2IrZSkqYSpmKygtMypjKzMqZC0yKmItZSkqZitiKmErY31mdW5jdGlvbiBtZShhLGIsYyxkKXt2YXIgZT0xLWE7cmV0dXJuIGUqZSpiKzIqKDEtYSkqYSpjK2EqYSpkfWZ1bmN0aW9uIG5lKGEsYixjLGQsZSl7dmFyIGY9MS1hLGc9MS1hO3JldHVybiBmKmYqZipiKzMqZypnKmEqYyszKigxLWEpKmEqYSpkK2EqYSphKmV9ZnVuY3Rpb24gU2EoYSxiLGMsZCl7Qy5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZSI7dGhpcy52MD1hfHxuZXcgQjt0aGlzLnYxPWJ8fG5ldyBCO3RoaXMudjI9Y3x8bmV3IEI7dGhpcy52Mz1kfHxuZXcgQn1mdW5jdGlvbiBmYihhLGIsYyxkKXtDLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlMyI7CnRoaXMudjA9YXx8bmV3IG47dGhpcy52MT1ifHxuZXcgbjt0aGlzLnYyPWN8fG5ldyBuO3RoaXMudjM9ZHx8bmV3IG59ZnVuY3Rpb24gRGEoYSxiKXtDLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMaW5lQ3VydmUiO3RoaXMudjE9YXx8bmV3IEI7dGhpcy52Mj1ifHxuZXcgQn1mdW5jdGlvbiBUYShhLGIpe0MuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkxpbmVDdXJ2ZTMiO3RoaXMudjE9YXx8bmV3IG47dGhpcy52Mj1ifHxuZXcgbn1mdW5jdGlvbiBVYShhLGIsYyl7Qy5jYWxsKHRoaXMpO3RoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUiO3RoaXMudjA9YXx8bmV3IEI7dGhpcy52MT1ifHxuZXcgQjt0aGlzLnYyPWN8fG5ldyBCfWZ1bmN0aW9uIGdiKGEsYixjKXtDLmNhbGwodGhpcyk7dGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZTMiO3RoaXMudjA9YXx8bmV3IG47dGhpcy52MT1ifHxuZXcgbjt0aGlzLnYyPWN8fG5ldyBufWZ1bmN0aW9uIFZhKGEpe0MuY2FsbCh0aGlzKTsKdGhpcy50eXBlPSJTcGxpbmVDdXJ2ZSI7dGhpcy5wb2ludHM9YXx8W119ZnVuY3Rpb24gc2IoKXtDLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDdXJ2ZVBhdGgiO3RoaXMuY3VydmVzPVtdO3RoaXMuYXV0b0Nsb3NlPSExfWZ1bmN0aW9uIFdhKGEpe3NiLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQYXRoIjt0aGlzLmN1cnJlbnRQb2ludD1uZXcgQjthJiZ0aGlzLnNldEZyb21Qb2ludHMoYSl9ZnVuY3Rpb24gSWIoYSl7V2EuY2FsbCh0aGlzLGEpO3RoaXMudXVpZD1QLmdlbmVyYXRlVVVJRCgpO3RoaXMudHlwZT0iU2hhcGUiO3RoaXMuaG9sZXM9W119ZnVuY3Rpb24gVChhLGIpe0UuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkxpZ2h0Ijt0aGlzLmNvbG9yPW5ldyBKKGEpO3RoaXMuaW50ZW5zaXR5PXZvaWQgMCE9PWI/YjoxO3RoaXMucmVjZWl2ZVNoYWRvdz12b2lkIDB9ZnVuY3Rpb24gJGUoYSxiLGMpe1QuY2FsbCh0aGlzLGEsYyk7dGhpcy50eXBlPSJIZW1pc3BoZXJlTGlnaHQiO3RoaXMuY2FzdFNoYWRvdz0Kdm9pZCAwO3RoaXMucG9zaXRpb24uY29weShFLkRlZmF1bHRVcCk7dGhpcy51cGRhdGVNYXRyaXgoKTt0aGlzLmdyb3VuZENvbG9yPW5ldyBKKGIpfWZ1bmN0aW9uIGhiKGEpe3RoaXMuY2FtZXJhPWE7dGhpcy5iaWFzPTA7dGhpcy5yYWRpdXM9MTt0aGlzLm1hcFNpemU9bmV3IEIoNTEyLDUxMik7dGhpcy5tYXBQYXNzPXRoaXMubWFwPW51bGw7dGhpcy5tYXRyaXg9bmV3IFE7dGhpcy5fZnJ1c3R1bT1uZXcgRGQ7dGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBCKDEsMSk7dGhpcy5fdmlld3BvcnRDb3VudD0xO3RoaXMuX3ZpZXdwb3J0cz1bbmV3IGRhKDAsMCwxLDEpXX1mdW5jdGlvbiBhZigpe2hiLmNhbGwodGhpcyxuZXcgVSg1MCwxLC41LDUwMCkpfWZ1bmN0aW9uIGJmKGEsYixjLGQsZSxmKXtULmNhbGwodGhpcyxhLGIpO3RoaXMudHlwZT0iU3BvdExpZ2h0Ijt0aGlzLnBvc2l0aW9uLmNvcHkoRS5EZWZhdWx0VXApO3RoaXMudXBkYXRlTWF0cml4KCk7dGhpcy50YXJnZXQ9bmV3IEU7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwb3dlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVuc2l0eSpNYXRoLlBJfSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5pbnRlbnNpdHk9YS9NYXRoLlBJfX0pO3RoaXMuZGlzdGFuY2U9dm9pZCAwIT09Yz9jOjA7dGhpcy5hbmdsZT12b2lkIDAhPT1kP2Q6TWF0aC5QSS8zO3RoaXMucGVudW1icmE9dm9pZCAwIT09ZT9lOjA7dGhpcy5kZWNheT12b2lkIDAhPT1mP2Y6MTt0aGlzLnNoYWRvdz1uZXcgYWZ9ZnVuY3Rpb24gc2coKXtoYi5jYWxsKHRoaXMsbmV3IFUoOTAsMSwuNSw1MDApKTt0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEIoNCwyKTt0aGlzLl92aWV3cG9ydENvdW50PTY7dGhpcy5fdmlld3BvcnRzPVtuZXcgZGEoMiwxLDEsMSksbmV3IGRhKDAsMSwxLDEpLG5ldyBkYSgzLDEsMSwxKSxuZXcgZGEoMSwxLDEsMSksbmV3IGRhKDMsMCwxLDEpLG5ldyBkYSgxLDAsMSwxKV07dGhpcy5fY3ViZURpcmVjdGlvbnM9W25ldyBuKDEsCjAsMCksbmV3IG4oLTEsMCwwKSxuZXcgbigwLDAsMSksbmV3IG4oMCwwLC0xKSxuZXcgbigwLDEsMCksbmV3IG4oMCwtMSwwKV07dGhpcy5fY3ViZVVwcz1bbmV3IG4oMCwxLDApLG5ldyBuKDAsMSwwKSxuZXcgbigwLDEsMCksbmV3IG4oMCwxLDApLG5ldyBuKDAsMCwxKSxuZXcgbigwLDAsLTEpXX1mdW5jdGlvbiBjZihhLGIsYyxkKXtULmNhbGwodGhpcyxhLGIpO3RoaXMudHlwZT0iUG9pbnRMaWdodCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBvd2VyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDQqdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuaW50ZW5zaXR5PWEvKDQqTWF0aC5QSSl9fSk7dGhpcy5kaXN0YW5jZT12b2lkIDAhPT1jP2M6MDt0aGlzLmRlY2F5PXZvaWQgMCE9PWQ/ZDoxO3RoaXMuc2hhZG93PW5ldyBzZ31mdW5jdGlvbiBvZShhLGIsYyxkLGUsZil7YmIuY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik9ydGhvZ3JhcGhpY0NhbWVyYSI7CnRoaXMuem9vbT0xO3RoaXMudmlldz1udWxsO3RoaXMubGVmdD12b2lkIDAhPT1hP2E6LTE7dGhpcy5yaWdodD12b2lkIDAhPT1iP2I6MTt0aGlzLnRvcD12b2lkIDAhPT1jP2M6MTt0aGlzLmJvdHRvbT12b2lkIDAhPT1kP2Q6LTE7dGhpcy5uZWFyPXZvaWQgMCE9PWU/ZTouMTt0aGlzLmZhcj12b2lkIDAhPT1mP2Y6MkUzO3RoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWZ1bmN0aW9uIGRmKCl7aGIuY2FsbCh0aGlzLG5ldyBvZSgtNSw1LDUsLTUsLjUsNTAwKSl9ZnVuY3Rpb24gZWYoYSxiKXtULmNhbGwodGhpcyxhLGIpO3RoaXMudHlwZT0iRGlyZWN0aW9uYWxMaWdodCI7dGhpcy5wb3NpdGlvbi5jb3B5KEUuRGVmYXVsdFVwKTt0aGlzLnVwZGF0ZU1hdHJpeCgpO3RoaXMudGFyZ2V0PW5ldyBFO3RoaXMuc2hhZG93PW5ldyBkZn1mdW5jdGlvbiBmZihhLGIpe1QuY2FsbCh0aGlzLGEsYik7dGhpcy50eXBlPSJBbWJpZW50TGlnaHQiO3RoaXMuY2FzdFNoYWRvdz12b2lkIDB9ZnVuY3Rpb24gZ2YoYSwKYixjLGQpe1QuY2FsbCh0aGlzLGEsYik7dGhpcy50eXBlPSJSZWN0QXJlYUxpZ2h0Ijt0aGlzLndpZHRoPXZvaWQgMCE9PWM/YzoxMDt0aGlzLmhlaWdodD12b2lkIDAhPT1kP2Q6MTB9ZnVuY3Rpb24gaGYoYSl7Vi5jYWxsKHRoaXMsYSk7dGhpcy50ZXh0dXJlcz17fX1mdW5jdGlvbiBqZigpe0QuY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ikluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5Ijt0aGlzLm1heEluc3RhbmNlZENvdW50PXZvaWQgMH1mdW5jdGlvbiBrZihhLGIsYyxkKXsibnVtYmVyIj09PXR5cGVvZiBjJiYoZD1jLGM9ITEsY29uc29sZS5lcnJvcigiVEhSRUUuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgbm9ybWFsaXplZCBhcyB0aGUgdGhpcmQgYXJndW1lbnQuIikpO04uY2FsbCh0aGlzLGEsYixjKTt0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9ZHx8MX1mdW5jdGlvbiBsZihhKXtWLmNhbGwodGhpcyxhKX1mdW5jdGlvbiBtZihhKXtWLmNhbGwodGhpcywKYSl9ZnVuY3Rpb24gdGcoYSl7InVuZGVmaW5lZCI9PT10eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXAmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGNyZWF0ZUltYWdlQml0bWFwKCkgbm90IHN1cHBvcnRlZC4iKTsidW5kZWZpbmVkIj09PXR5cGVvZiBmZXRjaCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpO1YuY2FsbCh0aGlzLGEpO3RoaXMub3B0aW9ucz12b2lkIDB9ZnVuY3Rpb24gdWcoKXt0aGlzLnR5cGU9IlNoYXBlUGF0aCI7dGhpcy5jb2xvcj1uZXcgSjt0aGlzLnN1YlBhdGhzPVtdO3RoaXMuY3VycmVudFBhdGg9bnVsbH1mdW5jdGlvbiB2ZyhhKXt0aGlzLnR5cGU9IkZvbnQiO3RoaXMuZGF0YT1hfWZ1bmN0aW9uIHdnKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIG5mKGEpe1YuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIG9mKCl7dGhpcy5jb2VmZmljaWVudHM9W107Zm9yKHZhciBhPQowOzk+YTthKyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgbil9ZnVuY3Rpb24gWGEoYSxiKXtULmNhbGwodGhpcyx2b2lkIDAsYik7dGhpcy5zaD12b2lkIDAhPT1hP2E6bmV3IG9mfWZ1bmN0aW9uIHhnKGEsYixjKXtYYS5jYWxsKHRoaXMsdm9pZCAwLGMpO2E9KG5ldyBKKS5zZXQoYSk7Yz0obmV3IEopLnNldChiKTtiPW5ldyBuKGEucixhLmcsYS5iKTthPW5ldyBuKGMucixjLmcsYy5iKTtjPU1hdGguc3FydChNYXRoLlBJKTt2YXIgZD1jKk1hdGguc3FydCguNzUpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLmNvcHkoYikuYWRkKGEpLm11bHRpcGx5U2NhbGFyKGMpO3RoaXMuc2guY29lZmZpY2llbnRzWzFdLmNvcHkoYikuc3ViKGEpLm11bHRpcGx5U2NhbGFyKGQpfWZ1bmN0aW9uIHlnKGEsYil7WGEuY2FsbCh0aGlzLHZvaWQgMCxiKTthPShuZXcgSikuc2V0KGEpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLnNldChhLnIsYS5nLGEuYikubXVsdGlwbHlTY2FsYXIoMipNYXRoLnNxcnQoTWF0aC5QSSkpfQpmdW5jdGlvbiBhaSgpe3RoaXMudHlwZT0iU3RlcmVvQ2FtZXJhIjt0aGlzLmFzcGVjdD0xO3RoaXMuZXllU2VwPS4wNjQ7dGhpcy5jYW1lcmFMPW5ldyBVO3RoaXMuY2FtZXJhTC5sYXllcnMuZW5hYmxlKDEpO3RoaXMuY2FtZXJhTC5tYXRyaXhBdXRvVXBkYXRlPSExO3RoaXMuY2FtZXJhUj1uZXcgVTt0aGlzLmNhbWVyYVIubGF5ZXJzLmVuYWJsZSgyKTt0aGlzLmNhbWVyYVIubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLl9jYWNoZT17Zm9jdXM6bnVsbCxmb3Y6bnVsbCxhc3BlY3Q6bnVsbCxuZWFyOm51bGwsZmFyOm51bGwsem9vbTpudWxsLGV5ZVNlcDpudWxsfX1mdW5jdGlvbiB6ZyhhKXt0aGlzLmF1dG9TdGFydD12b2lkIDAhPT1hP2E6ITA7dGhpcy5lbGFwc2VkVGltZT10aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWU9MDt0aGlzLnJ1bm5pbmc9ITF9ZnVuY3Rpb24gQWcoKXtFLmNhbGwodGhpcyk7dGhpcy50eXBlPSJBdWRpb0xpc3RlbmVyIjt0aGlzLmNvbnRleHQ9QmcuZ2V0Q29udGV4dCgpOwp0aGlzLmdhaW49dGhpcy5jb250ZXh0LmNyZWF0ZUdhaW4oKTt0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pO3RoaXMuZmlsdGVyPW51bGw7dGhpcy50aW1lRGVsdGE9MDt0aGlzLl9jbG9jaz1uZXcgemd9ZnVuY3Rpb24gY2QoYSl7RS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQXVkaW8iO3RoaXMubGlzdGVuZXI9YTt0aGlzLmNvbnRleHQ9YS5jb250ZXh0O3RoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpO3RoaXMuZ2Fpbi5jb25uZWN0KGEuZ2V0SW5wdXQoKSk7dGhpcy5hdXRvcGxheT0hMTt0aGlzLmJ1ZmZlcj1udWxsO3RoaXMuZGV0dW5lPTA7dGhpcy5sb29wPSExO3RoaXMub2Zmc2V0PXRoaXMubG9vcEVuZD10aGlzLmxvb3BTdGFydD0wO3RoaXMuZHVyYXRpb249dm9pZCAwO3RoaXMucGxheWJhY2tSYXRlPTE7dGhpcy5pc1BsYXlpbmc9ITE7dGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITA7dGhpcy5zb3VyY2VUeXBlPSJlbXB0eSI7dGhpcy5fcGF1c2VkQXQ9CnRoaXMuX3N0YXJ0ZWRBdD0wO3RoaXMuZmlsdGVycz1bXX1mdW5jdGlvbiBDZyhhKXtjZC5jYWxsKHRoaXMsYSk7dGhpcy5wYW5uZXI9dGhpcy5jb250ZXh0LmNyZWF0ZVBhbm5lcigpO3RoaXMucGFubmVyLnBhbm5pbmdNb2RlbD0iSFJURiI7dGhpcy5wYW5uZXIuY29ubmVjdCh0aGlzLmdhaW4pfWZ1bmN0aW9uIERnKGEsYil7dGhpcy5hbmFseXNlcj1hLmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTt0aGlzLmFuYWx5c2VyLmZmdFNpemU9dm9pZCAwIT09Yj9iOjIwNDg7dGhpcy5kYXRhPW5ldyBVaW50OEFycmF5KHRoaXMuYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQpO2EuZ2V0T3V0cHV0KCkuY29ubmVjdCh0aGlzLmFuYWx5c2VyKX1mdW5jdGlvbiBFZyhhLGIsYyl7dGhpcy5iaW5kaW5nPWE7dGhpcy52YWx1ZVNpemU9YzthPUZsb2F0NjRBcnJheTtzd2l0Y2goYil7Y2FzZSAicXVhdGVybmlvbiI6Yj10aGlzLl9zbGVycDticmVhaztjYXNlICJzdHJpbmciOmNhc2UgImJvb2wiOmE9CkFycmF5O2I9dGhpcy5fc2VsZWN0O2JyZWFrO2RlZmF1bHQ6Yj10aGlzLl9sZXJwfXRoaXMuYnVmZmVyPW5ldyBhKDQqYyk7dGhpcy5fbWl4QnVmZmVyUmVnaW9uPWI7dGhpcy5yZWZlcmVuY2VDb3VudD10aGlzLnVzZUNvdW50PXRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wfWZ1bmN0aW9uIGJpKGEsYixjKXtjPWN8fHlhLnBhcnNlVHJhY2tOYW1lKGIpO3RoaXMuX3RhcmdldEdyb3VwPWE7dGhpcy5fYmluZGluZ3M9YS5zdWJzY3JpYmVfKGIsYyl9ZnVuY3Rpb24geWEoYSxiLGMpe3RoaXMucGF0aD1iO3RoaXMucGFyc2VkUGF0aD1jfHx5YS5wYXJzZVRyYWNrTmFtZShiKTt0aGlzLm5vZGU9eWEuZmluZE5vZGUoYSx0aGlzLnBhcnNlZFBhdGgubm9kZU5hbWUpfHxhO3RoaXMucm9vdE5vZGU9YX1mdW5jdGlvbiBjaSgpe3RoaXMudXVpZD1QLmdlbmVyYXRlVVVJRCgpO3RoaXMuX29iamVjdHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTt0aGlzLm5DYWNoZWRPYmplY3RzXz0KMDt2YXIgYT17fTt0aGlzLl9pbmRpY2VzQnlVVUlEPWE7Zm9yKHZhciBiPTAsYz1hcmd1bWVudHMubGVuZ3RoO2IhPT1jOysrYilhW2FyZ3VtZW50c1tiXS51dWlkXT1iO3RoaXMuX3BhdGhzPVtdO3RoaXMuX3BhcnNlZFBhdGhzPVtdO3RoaXMuX2JpbmRpbmdzPVtdO3RoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTt2YXIgZD10aGlzO3RoaXMuc3RhdHM9e29iamVjdHM6e2dldCB0b3RhbCgpe3JldHVybiBkLl9vYmplY3RzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHRoaXMudG90YWwtZC5uQ2FjaGVkT2JqZWN0c199fSxnZXQgYmluZGluZ3NQZXJPYmplY3QoKXtyZXR1cm4gZC5fYmluZGluZ3MubGVuZ3RofX19ZnVuY3Rpb24gZGkoYSxiLGMpe3RoaXMuX21peGVyPWE7dGhpcy5fY2xpcD1iO3RoaXMuX2xvY2FsUm9vdD1jfHxudWxsO2E9Yi50cmFja3M7Yj1hLmxlbmd0aDtjPUFycmF5KGIpO2Zvcih2YXIgZD17ZW5kaW5nU3RhcnQ6MjQwMCxlbmRpbmdFbmQ6MjQwMH0sCmU9MDtlIT09YjsrK2Upe3ZhciBmPWFbZV0uY3JlYXRlSW50ZXJwb2xhbnQobnVsbCk7Y1tlXT1mO2Yuc2V0dGluZ3M9ZH10aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzPWQ7dGhpcy5faW50ZXJwb2xhbnRzPWM7dGhpcy5fcHJvcGVydHlCaW5kaW5ncz1BcnJheShiKTt0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD10aGlzLl9ieUNsaXBDYWNoZUluZGV4PXRoaXMuX2NhY2hlSW5kZXg9bnVsbDt0aGlzLmxvb3A9MjIwMTt0aGlzLl9sb29wQ291bnQ9LTE7dGhpcy5fc3RhcnRUaW1lPW51bGw7dGhpcy50aW1lPTA7dGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMud2VpZ2h0PXRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnRpbWVTY2FsZT0xO3RoaXMucmVwZXRpdGlvbnM9SW5maW5pdHk7dGhpcy5wYXVzZWQ9ITE7dGhpcy5lbmFibGVkPSEwO3RoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITE7dGhpcy56ZXJvU2xvcGVBdEVuZD10aGlzLnplcm9TbG9wZUF0U3RhcnQ9CiEwfWZ1bmN0aW9uIEZnKGEpe3RoaXMuX3Jvb3Q9YTt0aGlzLl9pbml0TWVtb3J5TWFuYWdlcigpO3RoaXMudGltZT10aGlzLl9hY2N1SW5kZXg9MDt0aGlzLnRpbWVTY2FsZT0xfWZ1bmN0aW9uIHBmKGEsYil7InN0cmluZyI9PT10eXBlb2YgYSYmKGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogVHlwZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIG5lZWRlZC4iKSxhPWIpO3RoaXMudmFsdWU9YX1mdW5jdGlvbiBHZyhhLGIsYyl7cGIuY2FsbCh0aGlzLGEsYik7dGhpcy5tZXNoUGVyQXR0cmlidXRlPWN8fDF9ZnVuY3Rpb24gZWkoYSxiLGMsZCl7dGhpcy5yYXk9bmV3IFJiKGEsYik7dGhpcy5uZWFyPWN8fDA7dGhpcy5mYXI9ZHx8SW5maW5pdHk7dGhpcy5jYW1lcmE9bnVsbDt0aGlzLnBhcmFtcz17TWVzaDp7fSxMaW5lOnt9LExPRDp7fSxQb2ludHM6e3RocmVzaG9sZDoxfSxTcHJpdGU6e319O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMucGFyYW1zLHtQb2ludENsb3VkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlJheWNhc3RlcjogcGFyYW1zLlBvaW50Q2xvdWQgaGFzIGJlZW4gcmVuYW1lZCB0byBwYXJhbXMuUG9pbnRzLiIpOwpyZXR1cm4gdGhpcy5Qb2ludHN9fX0pfWZ1bmN0aW9uIGZpKGEsYil7cmV0dXJuIGEuZGlzdGFuY2UtYi5kaXN0YW5jZX1mdW5jdGlvbiBIZyhhLGIsYyxkKXtpZighMSE9PWEudmlzaWJsZSYmKGEucmF5Y2FzdChiLGMpLCEwPT09ZCkpe2E9YS5jaGlsZHJlbjtkPTA7Zm9yKHZhciBlPWEubGVuZ3RoO2Q8ZTtkKyspSGcoYVtkXSxiLGMsITApfX1mdW5jdGlvbiBnaShhLGIsYyl7dGhpcy5yYWRpdXM9dm9pZCAwIT09YT9hOjE7dGhpcy5waGk9dm9pZCAwIT09Yj9iOjA7dGhpcy50aGV0YT12b2lkIDAhPT1jP2M6MDtyZXR1cm4gdGhpc31mdW5jdGlvbiBoaShhLGIsYyl7dGhpcy5yYWRpdXM9dm9pZCAwIT09YT9hOjE7dGhpcy50aGV0YT12b2lkIDAhPT1iP2I6MDt0aGlzLnk9dm9pZCAwIT09Yz9jOjA7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gSWcoYSxiKXt0aGlzLm1pbj12b2lkIDAhPT1hP2E6bmV3IEIoSW5maW5pdHksSW5maW5pdHkpO3RoaXMubWF4PXZvaWQgMCE9PWI/YjpuZXcgQigtSW5maW5pdHksCi1JbmZpbml0eSl9ZnVuY3Rpb24gSmcoYSxiKXt0aGlzLnN0YXJ0PXZvaWQgMCE9PWE/YTpuZXcgbjt0aGlzLmVuZD12b2lkIDAhPT1iP2I6bmV3IG59ZnVuY3Rpb24gcGUoYSl7RS5jYWxsKHRoaXMpO3RoaXMubWF0ZXJpYWw9YTt0aGlzLnJlbmRlcj1mdW5jdGlvbigpe319ZnVuY3Rpb24gcWUoYSxiLGMsZCl7dGhpcy5vYmplY3Q9YTt0aGlzLnNpemU9dm9pZCAwIT09Yj9iOjE7YT12b2lkIDAhPT1jP2M6MTY3MTE2ODA7ZD12b2lkIDAhPT1kP2Q6MTtiPTA7KGM9dGhpcy5vYmplY3QuZ2VvbWV0cnkpJiZjLmlzR2VvbWV0cnk/Yj0zKmMuZmFjZXMubGVuZ3RoOmMmJmMuaXNCdWZmZXJHZW9tZXRyeSYmKGI9Yy5hdHRyaWJ1dGVzLm5vcm1hbC5jb3VudCk7Yz1uZXcgRDtiPW5ldyBBKDYqYiwzKTtjLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLGIpO1guY2FsbCh0aGlzLGMsbmV3IFIoe2NvbG9yOmEsbGluZXdpZHRoOmR9KSk7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExO3RoaXMudXBkYXRlKCl9CmZ1bmN0aW9uIGRkKGEsYil7RS5jYWxsKHRoaXMpO3RoaXMubGlnaHQ9YTt0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCk7dGhpcy5tYXRyaXg9YS5tYXRyaXhXb3JsZDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5jb2xvcj1iO2E9bmV3IEQ7Yj1bMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDEsMCwwLDAsLTEsMCwxLDAsMCwwLDAsMSwxLDAsMCwwLDAsLTEsMV07Zm9yKHZhciBjPTAsZD0xOzMyPmM7YysrLGQrKyl7dmFyIGU9Yy8zMipNYXRoLlBJKjIsZj1kLzMyKk1hdGguUEkqMjtiLnB1c2goTWF0aC5jb3MoZSksTWF0aC5zaW4oZSksMSxNYXRoLmNvcyhmKSxNYXRoLnNpbihmKSwxKX1hLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKGIsMykpO2I9bmV3IFIoe2ZvZzohMX0pO3RoaXMuY29uZT1uZXcgWChhLGIpO3RoaXMuYWRkKHRoaXMuY29uZSk7dGhpcy51cGRhdGUoKX1mdW5jdGlvbiBpaShhKXt2YXIgYj1bXTthJiZhLmlzQm9uZSYmYi5wdXNoKGEpO2Zvcih2YXIgYz0KMDtjPGEuY2hpbGRyZW4ubGVuZ3RoO2MrKyliLnB1c2guYXBwbHkoYixpaShhLmNoaWxkcmVuW2NdKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gZWQoYSl7Zm9yKHZhciBiPWlpKGEpLGM9bmV3IEQsZD1bXSxlPVtdLGY9bmV3IEooMCwwLDEpLGc9bmV3IEooMCwxLDApLGg9MDtoPGIubGVuZ3RoO2grKyl7dmFyIGw9YltoXTtsLnBhcmVudCYmbC5wYXJlbnQuaXNCb25lJiYoZC5wdXNoKDAsMCwwKSxkLnB1c2goMCwwLDApLGUucHVzaChmLnIsZi5nLGYuYiksZS5wdXNoKGcucixnLmcsZy5iKSl9Yy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShkLDMpKTtjLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBBKGUsMykpO2Q9bmV3IFIoe3ZlcnRleENvbG9yczoyLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRyYW5zcGFyZW50OiEwfSk7WC5jYWxsKHRoaXMsYyxkKTt0aGlzLnJvb3Q9YTt0aGlzLmJvbmVzPWI7dGhpcy5tYXRyaXg9YS5tYXRyaXhXb3JsZDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9CiExfWZ1bmN0aW9uIGZkKGEsYixjKXt0aGlzLmxpZ2h0PWE7dGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpO3RoaXMuY29sb3I9YzthPW5ldyBIYihiLDQsMik7Yj1uZXcgR2Eoe3dpcmVmcmFtZTohMCxmb2c6ITF9KTtlYS5jYWxsKHRoaXMsYSxiKTt0aGlzLm1hdHJpeD10aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGdkKGEsYil7dGhpcy50eXBlPSJSZWN0QXJlYUxpZ2h0SGVscGVyIjt0aGlzLmxpZ2h0PWE7dGhpcy5jb2xvcj1iO2E9bmV3IEQ7YS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShbMSwxLDAsLTEsMSwwLC0xLC0xLDAsMSwtMSwwLDEsMSwwXSwzKSk7YS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtiPW5ldyBSKHtmb2c6ITF9KTtyYS5jYWxsKHRoaXMsYSxiKTthPW5ldyBEO2Euc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoWzEsMSwwLC0xLDEsMCwtMSwtMSwwLDEsMSwKMCwtMSwtMSwwLDEsLTEsMF0sMykpO2EuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7dGhpcy5hZGQobmV3IGVhKGEsbmV3IEdhKHtzaWRlOjEsZm9nOiExfSkpKTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGhkKGEsYixjKXtFLmNhbGwodGhpcyk7dGhpcy5saWdodD1hO3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTt0aGlzLm1hdHJpeD1hLm1hdHJpeFdvcmxkO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLmNvbG9yPWM7YT1uZXcgYWMoYik7YS5yb3RhdGVZKC41Kk1hdGguUEkpO3RoaXMubWF0ZXJpYWw9bmV3IEdhKHt3aXJlZnJhbWU6ITAsZm9nOiExfSk7dm9pZCAwPT09dGhpcy5jb2xvciYmKHRoaXMubWF0ZXJpYWwudmVydGV4Q29sb3JzPTIpO2I9YS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7Yj1uZXcgRmxvYXQzMkFycmF5KDMqYi5jb3VudCk7YS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgTihiLDMpKTt0aGlzLmFkZChuZXcgZWEoYSx0aGlzLm1hdGVyaWFsKSk7CnRoaXMudXBkYXRlKCl9ZnVuY3Rpb24gaWQoYSxiKXt0aGlzLmxpZ2h0UHJvYmU9YTt0aGlzLnNpemU9YjthPW5ldyB2YSh7ZGVmaW5lczp7R0FNTUFfT1VUUFVUOiIifSx1bmlmb3Jtczp7c2g6e3ZhbHVlOnRoaXMubGlnaHRQcm9iZS5zaC5jb2VmZmljaWVudHN9LGludGVuc2l0eTp7dmFsdWU6dGhpcy5saWdodFByb2JlLmludGVuc2l0eX19LHZlcnRleFNoYWRlcjoidmFyeWluZyB2ZWMzIHZOb3JtYWw7XG52b2lkIG1haW4oKSB7XG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59IixmcmFnbWVudFNoYWRlcjoiI2RlZmluZSBSRUNJUFJPQ0FMX1BJIDAuMzE4MzA5ODg2XG52ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgbm9ybWFsLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0Ly8gbWF0cml4IGlzIGFzc3VtZWQgdG8gYmUgb3J0aG9nb25hbFxuXHRyZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIG5vcm1hbCwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbn1cbnZlYzMgbGluZWFyVG9PdXRwdXQoIGluIHZlYzMgYSApIHtcblx0I2lmZGVmIEdBTU1BX09VVFBVVFxuXHRcdHJldHVybiBwb3coIGEsIHZlYzMoIDEuMCAvIGZsb2F0KCBHQU1NQV9GQUNUT1IgKSApICk7XG5cdCNlbHNlXG5cdFx0cmV0dXJuIGE7XG5cdCNlbmRpZlxufVxuLy8gc291cmNlOiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9wYXBlcnMvZW52bWFwL2Vudm1hcC5wZGZcbnZlYzMgc2hHZXRJcnJhZGlhbmNlQXQoIGluIHZlYzMgbm9ybWFsLCBpbiB2ZWMzIHNoQ29lZmZpY2llbnRzWyA5IF0gKSB7XG5cdC8vIG5vcm1hbCBpcyBhc3N1bWVkIHRvIGhhdmUgdW5pdCBsZW5ndGhcblx0ZmxvYXQgeCA9IG5vcm1hbC54LCB5ID0gbm9ybWFsLnksIHogPSBub3JtYWwuejtcblx0Ly8gYmFuZCAwXG5cdHZlYzMgcmVzdWx0ID0gc2hDb2VmZmljaWVudHNbIDAgXSAqIDAuODg2MjI3O1xuXHQvLyBiYW5kIDFcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDtcblx0Ly8gYmFuZCAyXG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNCBdICogMi4wICogMC40MjkwNDMgKiB4ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA1IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHkgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDYgXSAqICggMC43NDMxMjUgKiB6ICogeiAtIDAuMjQ3NzA4ICk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNyBdICogMi4wICogMC40MjkwNDMgKiB4ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA4IF0gKiAwLjQyOTA0MyAqICggeCAqIHggLSB5ICogeSApO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxudW5pZm9ybSB2ZWMzIHNoWyA5IF07IC8vIHNoIGNvZWZmaWNpZW50c1xudW5pZm9ybSBmbG9hdCBpbnRlbnNpdHk7IC8vIGxpZ2h0IHByb2JlIGludGVuc2l0eVxudmFyeWluZyB2ZWMzIHZOb3JtYWw7XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCB2Tm9ybWFsICk7XG5cdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gc2hHZXRJcnJhZGlhbmNlQXQoIHdvcmxkTm9ybWFsLCBzaCApO1xuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSBSRUNJUFJPQ0FMX1BJICogaXJyYWRpYW5jZSAqIGludGVuc2l0eTtcblx0b3V0Z29pbmdMaWdodCA9IGxpbmVhclRvT3V0cHV0KCBvdXRnb2luZ0xpZ2h0ICk7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIDEuMCApO1xufSJ9KTsKYj1uZXcgSGIoMSwzMiwxNik7ZWEuY2FsbCh0aGlzLGIsYSk7dGhpcy5vbkJlZm9yZVJlbmRlcigpfWZ1bmN0aW9uIHFmKGEsYixjLGQpe2E9YXx8MTA7Yj1ifHwxMDtjPW5ldyBKKHZvaWQgMCE9PWM/Yzo0NDczOTI0KTtkPW5ldyBKKHZvaWQgMCE9PWQ/ZDo4OTQ3ODQ4KTt2YXIgZT1iLzIsZj1hL2IsZz1hLzI7YT1bXTtmb3IodmFyIGg9W10sbD0wLG09MCxrPS1nO2w8PWI7bCsrLGsrPWYpe2EucHVzaCgtZywwLGssZywwLGspO2EucHVzaChrLDAsLWcsaywwLGcpO3ZhciBxPWw9PT1lP2M6ZDtxLnRvQXJyYXkoaCxtKTttKz0zO3EudG9BcnJheShoLG0pO20rPTM7cS50b0FycmF5KGgsbSk7bSs9MztxLnRvQXJyYXkoaCxtKTttKz0zfWI9bmV3IEQ7Yi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShhLDMpKTtiLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBBKGgsMykpO2M9bmV3IFIoe3ZlcnRleENvbG9yczoyfSk7WC5jYWxsKHRoaXMsYixjKX1mdW5jdGlvbiByZihhLGIsCmMsZCxlLGYpe2E9YXx8MTA7Yj1ifHwxNjtjPWN8fDg7ZD1kfHw2NDtlPW5ldyBKKHZvaWQgMCE9PWU/ZTo0NDczOTI0KTtmPW5ldyBKKHZvaWQgMCE9PWY/Zjo4OTQ3ODQ4KTt2YXIgZz1bXSxoPVtdLGw7Zm9yKGw9MDtsPD1iO2wrKyl7dmFyIG09bC9iKjIqTWF0aC5QSTt2YXIgaz1NYXRoLnNpbihtKSphO209TWF0aC5jb3MobSkqYTtnLnB1c2goMCwwLDApO2cucHVzaChrLDAsbSk7dmFyIHE9bCYxP2U6ZjtoLnB1c2gocS5yLHEuZyxxLmIpO2gucHVzaChxLnIscS5nLHEuYil9Zm9yKGw9MDtsPD1jO2wrKyl7cT1sJjE/ZTpmO3ZhciBuPWEtYS9jKmw7Zm9yKGI9MDtiPGQ7YisrKW09Yi9kKjIqTWF0aC5QSSxrPU1hdGguc2luKG0pKm4sbT1NYXRoLmNvcyhtKSpuLGcucHVzaChrLDAsbSksaC5wdXNoKHEucixxLmcscS5iKSxtPShiKzEpL2QqMipNYXRoLlBJLGs9TWF0aC5zaW4obSkqbixtPU1hdGguY29zKG0pKm4sZy5wdXNoKGssMCxtKSxoLnB1c2gocS5yLHEuZyxxLmIpfWE9bmV3IEQ7CmEuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoZywzKSk7YS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgQShoLDMpKTtnPW5ldyBSKHt2ZXJ0ZXhDb2xvcnM6Mn0pO1guY2FsbCh0aGlzLGEsZyl9ZnVuY3Rpb24gamQoYSxiLGMsZCl7dGhpcy5hdWRpbz1hO3RoaXMucmFuZ2U9Ynx8MTt0aGlzLmRpdmlzaW9uc0lubmVyQW5nbGU9Y3x8MTY7dGhpcy5kaXZpc2lvbnNPdXRlckFuZ2xlPWR8fDI7YT1uZXcgRDtiPW5ldyBGbG9hdDMyQXJyYXkoMyooMyoodGhpcy5kaXZpc2lvbnNJbm5lckFuZ2xlKzIqdGhpcy5kaXZpc2lvbnNPdXRlckFuZ2xlKSszKSk7YS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgTihiLDMpKTtiPW5ldyBSKHtjb2xvcjo2NTI4MH0pO2M9bmV3IFIoe2NvbG9yOjE2Nzc2OTYwfSk7cmEuY2FsbCh0aGlzLGEsW2MsYl0pO3RoaXMudXBkYXRlKCl9ZnVuY3Rpb24gcmUoYSxiLGMsZCl7dGhpcy5vYmplY3Q9YTt0aGlzLnNpemU9dm9pZCAwIT09Yj9iOjE7YT0Kdm9pZCAwIT09Yz9jOjE2Nzc2OTYwO2Q9dm9pZCAwIT09ZD9kOjE7Yj0wOyhjPXRoaXMub2JqZWN0Lmdlb21ldHJ5KSYmYy5pc0dlb21ldHJ5P2I9Yy5mYWNlcy5sZW5ndGg6Y29uc29sZS53YXJuKCJUSFJFRS5GYWNlTm9ybWFsc0hlbHBlcjogb25seSBUSFJFRS5HZW9tZXRyeSBpcyBzdXBwb3J0ZWQuIFVzZSBUSFJFRS5WZXJ0ZXhOb3JtYWxzSGVscGVyLCBpbnN0ZWFkLiIpO2M9bmV3IEQ7Yj1uZXcgQSg2KmIsMyk7Yy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixiKTtYLmNhbGwodGhpcyxjLG5ldyBSKHtjb2xvcjphLGxpbmV3aWR0aDpkfSkpO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGtkKGEsYixjKXtFLmNhbGwodGhpcyk7dGhpcy5saWdodD1hO3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTt0aGlzLm1hdHJpeD1hLm1hdHJpeFdvcmxkO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLmNvbG9yPWM7dm9pZCAwPT09YiYmCihiPTEpO2E9bmV3IEQ7YS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShbLWIsYiwwLGIsYiwwLGIsLWIsMCwtYiwtYiwwLC1iLGIsMF0sMykpO2I9bmV3IFIoe2ZvZzohMX0pO3RoaXMubGlnaHRQbGFuZT1uZXcgcmEoYSxiKTt0aGlzLmFkZCh0aGlzLmxpZ2h0UGxhbmUpO2E9bmV3IEQ7YS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShbMCwwLDAsMCwwLDFdLDMpKTt0aGlzLnRhcmdldExpbmU9bmV3IHJhKGEsYik7dGhpcy5hZGQodGhpcy50YXJnZXRMaW5lKTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIHNlKGEpe2Z1bmN0aW9uIGIoYSxiLGQpe2MoYSxkKTtjKGIsZCl9ZnVuY3Rpb24gYyhhLGIpe2YucHVzaCgwLDAsMCk7Zy5wdXNoKGIucixiLmcsYi5iKTt2b2lkIDA9PT1oW2FdJiYoaFthXT1bXSk7aFthXS5wdXNoKGYubGVuZ3RoLzMtMSl9dmFyIGQ9bmV3IEQsZT1uZXcgUih7Y29sb3I6MTY3NzcyMTUsdmVydGV4Q29sb3JzOjF9KSxmPVtdLGc9W10saD17fSxsPQpuZXcgSigxNjc1NTIwMCksbT1uZXcgSigxNjcxMTY4MCksaz1uZXcgSig0Mzc3NSkscT1uZXcgSigxNjc3NzIxNSksbj1uZXcgSigzMzU1NDQzKTtiKCJuMSIsIm4yIixsKTtiKCJuMiIsIm40IixsKTtiKCJuNCIsIm4zIixsKTtiKCJuMyIsIm4xIixsKTtiKCJmMSIsImYyIixsKTtiKCJmMiIsImY0IixsKTtiKCJmNCIsImYzIixsKTtiKCJmMyIsImYxIixsKTtiKCJuMSIsImYxIixsKTtiKCJuMiIsImYyIixsKTtiKCJuMyIsImYzIixsKTtiKCJuNCIsImY0IixsKTtiKCJwIiwibjEiLG0pO2IoInAiLCJuMiIsbSk7YigicCIsIm4zIixtKTtiKCJwIiwibjQiLG0pO2IoInUxIiwidTIiLGspO2IoInUyIiwidTMiLGspO2IoInUzIiwidTEiLGspO2IoImMiLCJ0IixxKTtiKCJwIiwiYyIsbik7YigiY24xIiwiY24yIixuKTtiKCJjbjMiLCJjbjQiLG4pO2IoImNmMSIsImNmMiIsbik7YigiY2YzIiwiY2Y0IixuKTtkLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKGYsMykpO2Quc2V0QXR0cmlidXRlKCJjb2xvciIsCm5ldyBBKGcsMykpO1guY2FsbCh0aGlzLGQsZSk7dGhpcy5jYW1lcmE9YTt0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4JiZ0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7dGhpcy5tYXRyaXg9YS5tYXRyaXhXb3JsZDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5wb2ludE1hcD1oO3RoaXMudXBkYXRlKCl9ZnVuY3Rpb24gbmEoYSxiLGMsZCxlLGYsZyl7c2Yuc2V0KGUsZixnKS51bnByb2plY3QoZCk7YT1iW2FdO2lmKHZvaWQgMCE9PWEpZm9yKGM9Yy5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiksYj0wLGQ9YS5sZW5ndGg7YjxkO2IrKyljLnNldFhZWihhW2JdLHNmLngsc2YueSxzZi56KX1mdW5jdGlvbiB0YihhLGIpe3RoaXMub2JqZWN0PWE7dm9pZCAwPT09YiYmKGI9MTY3NzY5NjApO2E9bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNyw0LDAsNCwxLDUsMiw2LDMsN10pO3ZhciBjPW5ldyBGbG9hdDMyQXJyYXkoMjQpLApkPW5ldyBEO2Quc2V0SW5kZXgobmV3IE4oYSwxKSk7ZC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgTihjLDMpKTtYLmNhbGwodGhpcyxkLG5ldyBSKHtjb2xvcjpifSkpO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIHRlKGEsYil7dGhpcy50eXBlPSJCb3gzSGVscGVyIjt0aGlzLmJveD1hO2I9Ynx8MTY3NzY5NjA7YT1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSk7dmFyIGM9bmV3IEQ7Yy5zZXRJbmRleChuZXcgTihhLDEpKTtjLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKFsxLDEsMSwtMSwxLDEsLTEsLTEsMSwxLC0xLDEsMSwxLC0xLC0xLDEsLTEsLTEsLTEsLTEsMSwtMSwtMV0sMykpO1guY2FsbCh0aGlzLGMsbmV3IFIoe2NvbG9yOmJ9KSk7dGhpcy5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX1mdW5jdGlvbiB1ZShhLGIsYyl7dGhpcy50eXBlPQoiUGxhbmVIZWxwZXIiO3RoaXMucGxhbmU9YTt0aGlzLnNpemU9dm9pZCAwPT09Yj8xOmI7YT12b2lkIDAhPT1jP2M6MTY3NzY5NjA7Yj1uZXcgRDtiLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSk7Yi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtyYS5jYWxsKHRoaXMsYixuZXcgUih7Y29sb3I6YX0pKTtiPW5ldyBEO2Iuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoWzEsMSwxLC0xLDEsMSwtMSwtMSwxLDEsMSwxLC0xLC0xLDEsMSwtMSwxXSwzKSk7Yi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTt0aGlzLmFkZChuZXcgZWEoYixuZXcgR2Eoe2NvbG9yOmEsb3BhY2l0eTouMix0cmFuc3BhcmVudDohMCxkZXB0aFdyaXRlOiExfSkpKX1mdW5jdGlvbiB1YihhLGIsYyxkLGUsZil7RS5jYWxsKHRoaXMpO3ZvaWQgMD09PWEmJihhPW5ldyBuKDAsCjAsMSkpO3ZvaWQgMD09PWImJihiPW5ldyBuKDAsMCwwKSk7dm9pZCAwPT09YyYmKGM9MSk7dm9pZCAwPT09ZCYmKGQ9MTY3NzY5NjApO3ZvaWQgMD09PWUmJihlPS4yKmMpO3ZvaWQgMD09PWYmJihmPS4yKmUpO3ZvaWQgMD09PXRmJiYodGY9bmV3IEQsdGYuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEEoWzAsMCwwLDAsMSwwXSwzKSksS2c9bmV3IHJiKDAsLjUsMSw1LDEpLEtnLnRyYW5zbGF0ZSgwLC0uNSwwKSk7dGhpcy5wb3NpdGlvbi5jb3B5KGIpO3RoaXMubGluZT1uZXcgcmEodGYsbmV3IFIoe2NvbG9yOmR9KSk7dGhpcy5saW5lLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5hZGQodGhpcy5saW5lKTt0aGlzLmNvbmU9bmV3IGVhKEtnLG5ldyBHYSh7Y29sb3I6ZH0pKTt0aGlzLmNvbmUubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLmFkZCh0aGlzLmNvbmUpO3RoaXMuc2V0RGlyZWN0aW9uKGEpO3RoaXMuc2V0TGVuZ3RoKGMsZSxmKX1mdW5jdGlvbiB2ZShhKXthPWF8fAoxO3ZhciBiPVswLDAsMCxhLDAsMCwwLDAsMCwwLGEsMCwwLDAsMCwwLDAsYV07YT1uZXcgRDthLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKGIsMykpO2Euc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IEEoWzEsMCwwLDEsLjYsMCwwLDEsMCwuNiwxLDAsMCwwLDEsMCwuNiwxXSwzKSk7Yj1uZXcgUih7dmVydGV4Q29sb3JzOjJ9KTtYLmNhbGwodGhpcyxhLGIpfWZ1bmN0aW9uIGppKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQ2xvc2VkU3BsaW5lQ3VydmUzIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DYXRtdWxsUm9tQ3VydmUzIGluc3RlYWQuIik7bWEuY2FsbCh0aGlzLGEpO3RoaXMudHlwZT0iY2F0bXVsbHJvbSI7dGhpcy5jbG9zZWQ9ITB9ZnVuY3Rpb24ga2koYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TcGxpbmVDdXJ2ZTMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4iKTttYS5jYWxsKHRoaXMsYSk7dGhpcy50eXBlPQoiY2F0bXVsbHJvbSJ9ZnVuY3Rpb24gTGcoYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TcGxpbmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4iKTttYS5jYWxsKHRoaXMsYSk7dGhpcy50eXBlPSJjYXRtdWxscm9tIn12b2lkIDA9PT1OdW1iZXIuRVBTSUxPTiYmKE51bWJlci5FUFNJTE9OPU1hdGgucG93KDIsLTUyKSk7dm9pZCAwPT09TnVtYmVyLmlzSW50ZWdlciYmKE51bWJlci5pc0ludGVnZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgYSYmaXNGaW5pdGUoYSkmJk1hdGguZmxvb3IoYSk9PT1hfSk7dm9pZCAwPT09TWF0aC5zaWduJiYoTWF0aC5zaWduPWZ1bmN0aW9uKGEpe3JldHVybiAwPmE/LTE6MDxhPzE6K2F9KTshMT09PSJuYW1lImluIEZ1bmN0aW9uLnByb3RvdHlwZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvblxzKihbXlwoXHNdKikvKVsxXX19KTsKdm9pZCAwPT09T2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24oYSl7aWYodm9pZCAwPT09YXx8bnVsbD09PWEpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7Zm9yKHZhciBiPU9iamVjdChhKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKHZvaWQgMCE9PWQmJm51bGwhPT1kKWZvcih2YXIgZSBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGUpJiYoYltlXT1kW2VdKX1yZXR1cm4gYn0pO09iamVjdC5hc3NpZ24oQWEucHJvdG90eXBlLHthZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXt9KTt2YXIgYz10aGlzLl9saXN0ZW5lcnM7dm9pZCAwPT09Y1thXSYmKGNbYV09W10pOy0xPT09Y1thXS5pbmRleE9mKGIpJiZjW2FdLnB1c2goYil9LApoYXNFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybiExO3ZhciBjPXRoaXMuX2xpc3RlbmVycztyZXR1cm4gdm9pZCAwIT09Y1thXSYmLTEhPT1jW2FdLmluZGV4T2YoYil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXt2b2lkIDAhPT10aGlzLl9saXN0ZW5lcnMmJihhPXRoaXMuX2xpc3RlbmVyc1thXSx2b2lkIDAhPT1hJiYoYj1hLmluZGV4T2YoYiksLTEhPT1iJiZhLnNwbGljZShiLDEpKSl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oYSl7aWYodm9pZCAwIT09dGhpcy5fbGlzdGVuZXJzKXt2YXIgYj10aGlzLl9saXN0ZW5lcnNbYS50eXBlXTtpZih2b2lkIDAhPT1iKXthLnRhcmdldD10aGlzO2I9Yi5zbGljZSgwKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYltjXS5jYWxsKHRoaXMsYSl9fX19KTtmb3IodmFyIG9hPVtdLHdlPTA7MjU2PndlO3dlKyspb2Fbd2VdPSgxNj53ZT8iMCI6IiIpKwp3ZS50b1N0cmluZygxNik7dmFyIFA9e0RFRzJSQUQ6TWF0aC5QSS8xODAsUkFEMkRFRzoxODAvTWF0aC5QSSxnZW5lcmF0ZVVVSUQ6ZnVuY3Rpb24oKXt2YXIgYT00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxiPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGM9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsZD00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MDtyZXR1cm4ob2FbYSYyNTVdK29hW2E+PjgmMjU1XStvYVthPj4xNiYyNTVdK29hW2E+PjI0JjI1NV0rIi0iK29hW2ImMjU1XStvYVtiPj44JjI1NV0rIi0iK29hW2I+PjE2JjE1fDY0XStvYVtiPj4yNCYyNTVdKyItIitvYVtjJjYzfDEyOF0rb2FbYz4+OCYyNTVdKyItIitvYVtjPj4xNiYyNTVdK29hW2M+PjI0JjI1NV0rb2FbZCYyNTVdK29hW2Q+PjgmMjU1XStvYVtkPj4xNiYyNTVdK29hW2Q+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9LGNsYW1wOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTWF0aC5tYXgoYixNYXRoLm1pbihjLAphKSl9LGV1Y2xpZGVhbk1vZHVsbzpmdW5jdGlvbihhLGIpe3JldHVybihhJWIrYiklYn0sbWFwTGluZWFyOmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGQrKGEtYikqKGUtZCkvKGMtYil9LGxlcnA6ZnVuY3Rpb24oYSxiLGMpe3JldHVybigxLWMpKmErYypifSxzbW9vdGhzdGVwOmZ1bmN0aW9uKGEsYixjKXtpZihhPD1iKXJldHVybiAwO2lmKGE+PWMpcmV0dXJuIDE7YT0oYS1iKS8oYy1iKTtyZXR1cm4gYSphKigzLTIqYSl9LHNtb290aGVyc3RlcDpmdW5jdGlvbihhLGIsYyl7aWYoYTw9YilyZXR1cm4gMDtpZihhPj1jKXJldHVybiAxO2E9KGEtYikvKGMtYik7cmV0dXJuIGEqYSphKihhKig2KmEtMTUpKzEwKX0scmFuZEludDpmdW5jdGlvbihhLGIpe3JldHVybiBhK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooYi1hKzEpKX0scmFuZEZsb2F0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGErTWF0aC5yYW5kb20oKSooYi1hKX0scmFuZEZsb2F0U3ByZWFkOmZ1bmN0aW9uKGEpe3JldHVybiBhKgooLjUtTWF0aC5yYW5kb20oKSl9LGRlZ1RvUmFkOmZ1bmN0aW9uKGEpe3JldHVybiBhKlAuREVHMlJBRH0scmFkVG9EZWc6ZnVuY3Rpb24oYSl7cmV0dXJuIGEqUC5SQUQyREVHfSxpc1Bvd2VyT2ZUd286ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT0oYSZhLTEpJiYwIT09YX0sY2VpbFBvd2VyT2ZUd286ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5jZWlsKE1hdGgubG9nKGEpL01hdGguTE4yKSl9LGZsb29yUG93ZXJPZlR3bzpmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmZsb29yKE1hdGgubG9nKGEpL01hdGguTE4yKSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhCLnByb3RvdHlwZSx7d2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnh9LHNldDpmdW5jdGlvbihhKXt0aGlzLng9YX19LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueX0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMueT1hfX19KTtPYmplY3QuYXNzaWduKEIucHJvdG90eXBlLAp7aXNWZWN0b3IyOiEwLHNldDpmdW5jdGlvbihhLGIpe3RoaXMueD1hO3RoaXMueT1iO3JldHVybiB0aGlzfSxzZXRTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy55PXRoaXMueD1hO3JldHVybiB0aGlzfSxzZXRYOmZ1bmN0aW9uKGEpe3RoaXMueD1hO3JldHVybiB0aGlzfSxzZXRZOmZ1bmN0aW9uKGEpe3RoaXMueT1hO3JldHVybiB0aGlzfSxzZXRDb21wb25lbnQ6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMueD1iO2JyZWFrO2Nhc2UgMTp0aGlzLnk9YjticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrYSk7fXJldHVybiB0aGlzfSxnZXRDb21wb25lbnQ6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2RlZmF1bHQ6dGhyb3cgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIithKTt9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsCnRoaXMueSl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy54PWEueDt0aGlzLnk9YS55O3JldHVybiB0aGlzfSxhZGQ6ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDAhPT1iKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnMoYSxiKTt0aGlzLngrPWEueDt0aGlzLnkrPWEueTtyZXR1cm4gdGhpc30sYWRkU2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueCs9YTt0aGlzLnkrPWE7cmV0dXJuIHRoaXN9LGFkZFZlY3RvcnM6ZnVuY3Rpb24oYSxiKXt0aGlzLng9YS54K2IueDt0aGlzLnk9YS55K2IueTtyZXR1cm4gdGhpc30sYWRkU2NhbGVkVmVjdG9yOmZ1bmN0aW9uKGEsYil7dGhpcy54Kz1hLngqYjt0aGlzLnkrPWEueSpiO3JldHVybiB0aGlzfSxzdWI6ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDAhPT1iKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSwKdGhpcy5zdWJWZWN0b3JzKGEsYik7dGhpcy54LT1hLng7dGhpcy55LT1hLnk7cmV0dXJuIHRoaXN9LHN1YlNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLngtPWE7dGhpcy55LT1hO3JldHVybiB0aGlzfSxzdWJWZWN0b3JzOmZ1bmN0aW9uKGEsYil7dGhpcy54PWEueC1iLng7dGhpcy55PWEueS1iLnk7cmV0dXJuIHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKGEpe3RoaXMueCo9YS54O3RoaXMueSo9YS55O3JldHVybiB0aGlzfSxtdWx0aXBseVNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLngqPWE7dGhpcy55Kj1hO3JldHVybiB0aGlzfSxkaXZpZGU6ZnVuY3Rpb24oYSl7dGhpcy54Lz1hLng7dGhpcy55Lz1hLnk7cmV0dXJuIHRoaXN9LGRpdmlkZVNjYWxhcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL2EpfSxhcHBseU1hdHJpeDM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy54LGM9dGhpcy55O2E9YS5lbGVtZW50czt0aGlzLng9YVswXSpiK2FbM10qYythWzZdO3RoaXMueT0KYVsxXSpiK2FbNF0qYythWzddO3JldHVybiB0aGlzfSxtaW46ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWluKHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1pbih0aGlzLnksYS55KTtyZXR1cm4gdGhpc30sbWF4OmZ1bmN0aW9uKGEpe3RoaXMueD1NYXRoLm1heCh0aGlzLngsYS54KTt0aGlzLnk9TWF0aC5tYXgodGhpcy55LGEueSk7cmV0dXJuIHRoaXN9LGNsYW1wOmZ1bmN0aW9uKGEsYil7dGhpcy54PU1hdGgubWF4KGEueCxNYXRoLm1pbihiLngsdGhpcy54KSk7dGhpcy55PU1hdGgubWF4KGEueSxNYXRoLm1pbihiLnksdGhpcy55KSk7cmV0dXJuIHRoaXN9LGNsYW1wU2NhbGFyOmZ1bmN0aW9uKGEsYil7dGhpcy54PU1hdGgubWF4KGEsTWF0aC5taW4oYix0aGlzLngpKTt0aGlzLnk9TWF0aC5tYXgoYSxNYXRoLm1pbihiLHRoaXMueSkpO3JldHVybiB0aGlzfSxjbGFtcExlbmd0aDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKGN8fAoxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heChhLE1hdGgubWluKGIsYykpKX0sZmxvb3I6ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpO3RoaXMueT1NYXRoLmZsb29yKHRoaXMueSk7cmV0dXJuIHRoaXN9LGNlaWw6ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3JldHVybiB0aGlzfSxyb3VuZDpmdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTtyZXR1cm4gdGhpc30scm91bmRUb1plcm86ZnVuY3Rpb24oKXt0aGlzLng9MD50aGlzLng/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpO3RoaXMueT0wPnRoaXMueT9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSk7cmV0dXJuIHRoaXN9LG5lZ2F0ZTpmdW5jdGlvbigpe3RoaXMueD0tdGhpcy54O3RoaXMueT0tdGhpcy55O3JldHVybiB0aGlzfSxkb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueCoKYS54K3RoaXMueSphLnl9LGNyb3NzOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLngqYS55LXRoaXMueSphLnh9LGxlbmd0aFNxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueX0sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfSxtYW5oYXR0YW5MZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpfSxub3JtYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9LGFuZ2xlOmZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5hdGFuMih0aGlzLnksdGhpcy54KTswPmEmJihhKz0yKk1hdGguUEkpO3JldHVybiBhfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZChhKSl9LGRpc3RhbmNlVG9TcXVhcmVkOmZ1bmN0aW9uKGEpe3ZhciBiPQp0aGlzLngtYS54O2E9dGhpcy55LWEueTtyZXR1cm4gYipiK2EqYX0sbWFuaGF0dGFuRGlzdGFuY2VUbzpmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5hYnModGhpcy54LWEueCkrTWF0aC5hYnModGhpcy55LWEueSl9LHNldExlbmd0aDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihhKX0sbGVycDpmdW5jdGlvbihhLGIpe3RoaXMueCs9KGEueC10aGlzLngpKmI7dGhpcy55Kz0oYS55LXRoaXMueSkqYjtyZXR1cm4gdGhpc30sbGVycFZlY3RvcnM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLnN1YlZlY3RvcnMoYixhKS5tdWx0aXBseVNjYWxhcihjKS5hZGQoYSl9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS54PT09dGhpcy54JiZhLnk9PT10aGlzLnl9LGZyb21BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTApO3RoaXMueD1hW2JdO3RoaXMueT1hW2IrMV07cmV0dXJuIHRoaXN9LHRvQXJyYXk6ZnVuY3Rpb24oYSwKYil7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWImJihiPTApO2FbYl09dGhpcy54O2FbYisxXT10aGlzLnk7cmV0dXJuIGF9LGZyb21CdWZmZXJBdHRyaWJ1dGU6ZnVuY3Rpb24oYSxiLGMpe3ZvaWQgMCE9PWMmJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpO3RoaXMueD1hLmdldFgoYik7dGhpcy55PWEuZ2V0WShiKTtyZXR1cm4gdGhpc30scm90YXRlQXJvdW5kOmZ1bmN0aW9uKGEsYil7dmFyIGM9TWF0aC5jb3MoYik7Yj1NYXRoLnNpbihiKTt2YXIgZD10aGlzLngtYS54LGU9dGhpcy55LWEueTt0aGlzLng9ZCpjLWUqYithLng7dGhpcy55PWQqYitlKmMrYS55O3JldHVybiB0aGlzfX0pO09iamVjdC5hc3NpZ24od2Ese3NsZXJwOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjLmNvcHkoYSkuc2xlcnAoYixkKX0sc2xlcnBGbGF0OmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPQpjW2QrMF0sbD1jW2QrMV0sbT1jW2QrMl07Yz1jW2QrM107ZD1lW2YrMF07dmFyIGs9ZVtmKzFdLHE9ZVtmKzJdO2U9ZVtmKzNdO2lmKGMhPT1lfHxoIT09ZHx8bCE9PWt8fG0hPT1xKXtmPTEtZzt2YXIgbj1oKmQrbCprK20qcStjKmUscD0wPD1uPzE6LTEsdD0xLW4qbjt0Pk51bWJlci5FUFNJTE9OJiYodD1NYXRoLnNxcnQodCksbj1NYXRoLmF0YW4yKHQsbipwKSxmPU1hdGguc2luKGYqbikvdCxnPU1hdGguc2luKGcqbikvdCk7cCo9ZztoPWgqZitkKnA7bD1sKmYraypwO209bSpmK3EqcDtjPWMqZitlKnA7Zj09PTEtZyYmKGc9MS9NYXRoLnNxcnQoaCpoK2wqbCttKm0rYypjKSxoKj1nLGwqPWcsbSo9ZyxjKj1nKX1hW2JdPWg7YVtiKzFdPWw7YVtiKzJdPW07YVtiKzNdPWN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMod2EucHJvdG90eXBlLHt4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feH0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuX3g9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fSwKeTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3l9LHNldDpmdW5jdGlvbihhKXt0aGlzLl95PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX0sejp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3p9LHNldDpmdW5jdGlvbihhKXt0aGlzLl96PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX0sdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3d9LHNldDpmdW5jdGlvbihhKXt0aGlzLl93PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX19KTtPYmplY3QuYXNzaWduKHdhLnByb3RvdHlwZSx7aXNRdWF0ZXJuaW9uOiEwLHNldDpmdW5jdGlvbihhLGIsYyxkKXt0aGlzLl94PWE7dGhpcy5feT1iO3RoaXMuX3o9Yzt0aGlzLl93PWQ7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX0sY29weTpmdW5jdGlvbihhKXt0aGlzLl94PQphLng7dGhpcy5feT1hLnk7dGhpcy5fej1hLno7dGhpcy5fdz1hLnc7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxzZXRGcm9tRXVsZXI6ZnVuY3Rpb24oYSxiKXtpZighYXx8IWEuaXNFdWxlcil0aHJvdyBFcnJvcigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7dmFyIGM9YS5feCxkPWEuX3ksZT1hLl96O2E9YS5vcmRlcjt2YXIgZj1NYXRoLmNvcyxnPU1hdGguc2luLGg9ZihjLzIpLGw9ZihkLzIpO2Y9ZihlLzIpO2M9ZyhjLzIpO2Q9ZyhkLzIpO2U9ZyhlLzIpOyJYWVoiPT09YT8odGhpcy5feD1jKmwqZitoKmQqZSx0aGlzLl95PWgqZCpmLWMqbCplLHRoaXMuX3o9aCpsKmUrYypkKmYsdGhpcy5fdz1oKmwqZi1jKmQqZSk6IllYWiI9PT1hPyh0aGlzLl94PWMqbCpmK2gqZCplLHRoaXMuX3k9aCpkKmYtYypsKmUsdGhpcy5fej0KaCpsKmUtYypkKmYsdGhpcy5fdz1oKmwqZitjKmQqZSk6IlpYWSI9PT1hPyh0aGlzLl94PWMqbCpmLWgqZCplLHRoaXMuX3k9aCpkKmYrYypsKmUsdGhpcy5fej1oKmwqZStjKmQqZix0aGlzLl93PWgqbCpmLWMqZCplKToiWllYIj09PWE/KHRoaXMuX3g9YypsKmYtaCpkKmUsdGhpcy5feT1oKmQqZitjKmwqZSx0aGlzLl96PWgqbCplLWMqZCpmLHRoaXMuX3c9aCpsKmYrYypkKmUpOiJZWlgiPT09YT8odGhpcy5feD1jKmwqZitoKmQqZSx0aGlzLl95PWgqZCpmK2MqbCplLHRoaXMuX3o9aCpsKmUtYypkKmYsdGhpcy5fdz1oKmwqZi1jKmQqZSk6IlhaWSI9PT1hJiYodGhpcy5feD1jKmwqZi1oKmQqZSx0aGlzLl95PWgqZCpmLWMqbCplLHRoaXMuX3o9aCpsKmUrYypkKmYsdGhpcy5fdz1oKmwqZitjKmQqZSk7ITEhPT1iJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LHNldEZyb21BeGlzQW5nbGU6ZnVuY3Rpb24oYSxiKXtiLz0yO3ZhciBjPU1hdGguc2luKGIpOwp0aGlzLl94PWEueCpjO3RoaXMuX3k9YS55KmM7dGhpcy5fej1hLnoqYzt0aGlzLl93PU1hdGguY29zKGIpO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sc2V0RnJvbVJvdGF0aW9uTWF0cml4OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZWxlbWVudHMsYz1iWzBdO2E9Yls0XTt2YXIgZD1iWzhdLGU9YlsxXSxmPWJbNV0sZz1iWzldLGg9YlsyXSxsPWJbNl07Yj1iWzEwXTt2YXIgbT1jK2YrYjswPG0/KGM9LjUvTWF0aC5zcXJ0KG0rMSksdGhpcy5fdz0uMjUvYyx0aGlzLl94PShsLWcpKmMsdGhpcy5feT0oZC1oKSpjLHRoaXMuX3o9KGUtYSkqYyk6Yz5mJiZjPmI/KGM9MipNYXRoLnNxcnQoMStjLWYtYiksdGhpcy5fdz0obC1nKS9jLHRoaXMuX3g9LjI1KmMsdGhpcy5feT0oYStlKS9jLHRoaXMuX3o9KGQraCkvYyk6Zj5iPyhjPTIqTWF0aC5zcXJ0KDErZi1jLWIpLHRoaXMuX3c9KGQtaCkvYyx0aGlzLl94PShhK2UpL2MsdGhpcy5feT0uMjUqYyx0aGlzLl96PShnK2wpLwpjKTooYz0yKk1hdGguc3FydCgxK2ItYy1mKSx0aGlzLl93PShlLWEpL2MsdGhpcy5feD0oZCtoKS9jLHRoaXMuX3k9KGcrbCkvYyx0aGlzLl96PS4yNSpjKTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LHNldEZyb21Vbml0VmVjdG9yczpmdW5jdGlvbihhLGIpe3ZhciBjPWEuZG90KGIpKzE7MUUtNj5jPyhjPTAsTWF0aC5hYnMoYS54KT5NYXRoLmFicyhhLnopPyh0aGlzLl94PS1hLnksdGhpcy5feT1hLngsdGhpcy5fej0wKToodGhpcy5feD0wLHRoaXMuX3k9LWEueix0aGlzLl96PWEueSkpOih0aGlzLl94PWEueSpiLnotYS56KmIueSx0aGlzLl95PWEueipiLngtYS54KmIueix0aGlzLl96PWEueCpiLnktYS55KmIueCk7dGhpcy5fdz1jO3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpfSxhbmdsZVRvOmZ1bmN0aW9uKGEpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhQLmNsYW1wKHRoaXMuZG90KGEpLC0xLDEpKSl9LHJvdGF0ZVRvd2FyZHM6ZnVuY3Rpb24oYSwKYil7dmFyIGM9dGhpcy5hbmdsZVRvKGEpO2lmKDA9PT1jKXJldHVybiB0aGlzO3RoaXMuc2xlcnAoYSxNYXRoLm1pbigxLGIvYykpO3JldHVybiB0aGlzfSxpbnZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uanVnYXRlKCl9LGNvbmp1Z2F0ZTpmdW5jdGlvbigpe3RoaXMuX3gqPS0xO3RoaXMuX3kqPS0xO3RoaXMuX3oqPS0xO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sZG90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl94KmEuX3grdGhpcy5feSphLl95K3RoaXMuX3oqYS5feit0aGlzLl93KmEuX3d9LGxlbmd0aFNxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fd30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3cpfSxub3JtYWxpemU6ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5sZW5ndGgoKTswPT09YT8odGhpcy5fej10aGlzLl95PXRoaXMuX3g9MCx0aGlzLl93PTEpOihhPTEvYSx0aGlzLl94Kj1hLHRoaXMuX3kqPWEsdGhpcy5feio9YSx0aGlzLl93Kj1hKTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMCE9PWI/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKGEsYikpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLGEpfSxwcmVtdWx0aXBseTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKGEsdGhpcyl9LG11bHRpcGx5UXVhdGVybmlvbnM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl94LGQ9YS5feSxlPWEuX3o7YT1hLl93Owp2YXIgZj1iLl94LGc9Yi5feSxoPWIuX3o7Yj1iLl93O3RoaXMuX3g9YypiK2EqZitkKmgtZSpnO3RoaXMuX3k9ZCpiK2EqZytlKmYtYypoO3RoaXMuX3o9ZSpiK2EqaCtjKmctZCpmO3RoaXMuX3c9YSpiLWMqZi1kKmctZSpoO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sc2xlcnA6ZnVuY3Rpb24oYSxiKXtpZigwPT09YilyZXR1cm4gdGhpcztpZigxPT09YilyZXR1cm4gdGhpcy5jb3B5KGEpO3ZhciBjPXRoaXMuX3gsZD10aGlzLl95LGU9dGhpcy5feixmPXRoaXMuX3csZz1mKmEuX3crYyphLl94K2QqYS5feStlKmEuX3o7MD5nPyh0aGlzLl93PS1hLl93LHRoaXMuX3g9LWEuX3gsdGhpcy5feT0tYS5feSx0aGlzLl96PS1hLl96LGc9LWcpOnRoaXMuY29weShhKTtpZigxPD1nKXJldHVybiB0aGlzLl93PWYsdGhpcy5feD1jLHRoaXMuX3k9ZCx0aGlzLl96PWUsdGhpczthPTEtZypnO2lmKGE8PU51bWJlci5FUFNJTE9OKXJldHVybiBnPTEtYix0aGlzLl93PWcqCmYrYip0aGlzLl93LHRoaXMuX3g9ZypjK2IqdGhpcy5feCx0aGlzLl95PWcqZCtiKnRoaXMuX3ksdGhpcy5fej1nKmUrYip0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXM7YT1NYXRoLnNxcnQoYSk7dmFyIGg9TWF0aC5hdGFuMihhLGcpO2c9TWF0aC5zaW4oKDEtYikqaCkvYTtiPU1hdGguc2luKGIqaCkvYTt0aGlzLl93PWYqZyt0aGlzLl93KmI7dGhpcy5feD1jKmcrdGhpcy5feCpiO3RoaXMuX3k9ZCpnK3RoaXMuX3kqYjt0aGlzLl96PWUqZyt0aGlzLl96KmI7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX3g9PT10aGlzLl94JiZhLl95PT09dGhpcy5feSYmYS5fej09PXRoaXMuX3omJmEuX3c9PT10aGlzLl93fSxmcm9tQXJyYXk6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTt0aGlzLl94PWFbYl07dGhpcy5feT1hW2IrMV07dGhpcy5fej1hW2IrMl07CnRoaXMuX3c9YVtiKzNdO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sdG9BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWEmJihhPVtdKTt2b2lkIDA9PT1iJiYoYj0wKTthW2JdPXRoaXMuX3g7YVtiKzFdPXRoaXMuX3k7YVtiKzJdPXRoaXMuX3o7YVtiKzNdPXRoaXMuX3c7cmV0dXJuIGF9LF9vbkNoYW5nZTpmdW5jdGlvbihhKXt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPWE7cmV0dXJuIHRoaXN9LF9vbkNoYW5nZUNhbGxiYWNrOmZ1bmN0aW9uKCl7fX0pO3ZhciBNZz1uZXcgbixsaT1uZXcgd2E7T2JqZWN0LmFzc2lnbihuLnByb3RvdHlwZSx7aXNWZWN0b3IzOiEwLHNldDpmdW5jdGlvbihhLGIsYyl7dGhpcy54PWE7dGhpcy55PWI7dGhpcy56PWM7cmV0dXJuIHRoaXN9LHNldFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLno9dGhpcy55PXRoaXMueD1hO3JldHVybiB0aGlzfSxzZXRYOmZ1bmN0aW9uKGEpe3RoaXMueD1hO3JldHVybiB0aGlzfSxzZXRZOmZ1bmN0aW9uKGEpe3RoaXMueT0KYTtyZXR1cm4gdGhpc30sc2V0WjpmdW5jdGlvbihhKXt0aGlzLno9YTtyZXR1cm4gdGhpc30sc2V0Q29tcG9uZW50OmZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDp0aGlzLng9YjticmVhaztjYXNlIDE6dGhpcy55PWI7YnJlYWs7Y2FzZSAyOnRoaXMuej1iO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIithKTt9cmV0dXJuIHRoaXN9LGdldENvbXBvbmVudDpmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK2EpO319LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56KX0sY29weTpmdW5jdGlvbihhKXt0aGlzLng9YS54O3RoaXMueT1hLnk7dGhpcy56PWEuejtyZXR1cm4gdGhpc30sCmFkZDpmdW5jdGlvbihhLGIpe2lmKHZvaWQgMCE9PWIpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyhhLGIpO3RoaXMueCs9YS54O3RoaXMueSs9YS55O3RoaXMueis9YS56O3JldHVybiB0aGlzfSxhZGRTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy54Kz1hO3RoaXMueSs9YTt0aGlzLnorPWE7cmV0dXJuIHRoaXN9LGFkZFZlY3RvcnM6ZnVuY3Rpb24oYSxiKXt0aGlzLng9YS54K2IueDt0aGlzLnk9YS55K2IueTt0aGlzLno9YS56K2IuejtyZXR1cm4gdGhpc30sYWRkU2NhbGVkVmVjdG9yOmZ1bmN0aW9uKGEsYil7dGhpcy54Kz1hLngqYjt0aGlzLnkrPWEueSpiO3RoaXMueis9YS56KmI7cmV0dXJuIHRoaXN9LHN1YjpmdW5jdGlvbihhLGIpe2lmKHZvaWQgMCE9PWIpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLAp0aGlzLnN1YlZlY3RvcnMoYSxiKTt0aGlzLngtPWEueDt0aGlzLnktPWEueTt0aGlzLnotPWEuejtyZXR1cm4gdGhpc30sc3ViU2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueC09YTt0aGlzLnktPWE7dGhpcy56LT1hO3JldHVybiB0aGlzfSxzdWJWZWN0b3JzOmZ1bmN0aW9uKGEsYil7dGhpcy54PWEueC1iLng7dGhpcy55PWEueS1iLnk7dGhpcy56PWEuei1iLno7cmV0dXJuIHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKGEsYil7aWYodm9pZCAwIT09YilyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlWZWN0b3JzKGEsYik7dGhpcy54Kj1hLng7dGhpcy55Kj1hLnk7dGhpcy56Kj1hLno7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueCo9YTt0aGlzLnkqPWE7dGhpcy56Kj0KYTtyZXR1cm4gdGhpc30sbXVsdGlwbHlWZWN0b3JzOmZ1bmN0aW9uKGEsYil7dGhpcy54PWEueCpiLng7dGhpcy55PWEueSpiLnk7dGhpcy56PWEueipiLno7cmV0dXJuIHRoaXN9LGFwcGx5RXVsZXI6ZnVuY3Rpb24oYSl7YSYmYS5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlFdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKGxpLnNldEZyb21FdWxlcihhKSl9LGFwcGx5QXhpc0FuZ2xlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKGxpLnNldEZyb21BeGlzQW5nbGUoYSxiKSl9LGFwcGx5TWF0cml4MzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLngsYz10aGlzLnksZD10aGlzLno7YT1hLmVsZW1lbnRzO3RoaXMueD1hWzBdKmIrYVszXSpjK2FbNl0qZDt0aGlzLnk9YVsxXSpiK2FbNF0qYythWzddKgpkO3RoaXMuej1hWzJdKmIrYVs1XSpjK2FbOF0qZDtyZXR1cm4gdGhpc30sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMueCxjPXRoaXMueSxkPXRoaXMuejthPWEuZWxlbWVudHM7dmFyIGU9MS8oYVszXSpiK2FbN10qYythWzExXSpkK2FbMTVdKTt0aGlzLng9KGFbMF0qYithWzRdKmMrYVs4XSpkK2FbMTJdKSplO3RoaXMueT0oYVsxXSpiK2FbNV0qYythWzldKmQrYVsxM10pKmU7dGhpcy56PShhWzJdKmIrYVs2XSpjK2FbMTBdKmQrYVsxNF0pKmU7cmV0dXJuIHRoaXN9LGFwcGx5UXVhdGVybmlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLngsYz10aGlzLnksZD10aGlzLnosZT1hLngsZj1hLnksZz1hLno7YT1hLnc7dmFyIGg9YSpiK2YqZC1nKmMsbD1hKmMrZypiLWUqZCxtPWEqZCtlKmMtZipiO2I9LWUqYi1mKmMtZypkO3RoaXMueD1oKmErYiotZStsKi1nLW0qLWY7dGhpcy55PWwqYStiKi1mK20qLWUtaCotZzt0aGlzLno9bSphK2IqLWcraCotZi1sKi1lO3JldHVybiB0aGlzfSwKcHJvamVjdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQoYS5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NChhLnByb2plY3Rpb25NYXRyaXgpfSx1bnByb2plY3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KGEucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKX0sdHJhbnNmb3JtRGlyZWN0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMueCxjPXRoaXMueSxkPXRoaXMuejthPWEuZWxlbWVudHM7dGhpcy54PWFbMF0qYithWzRdKmMrYVs4XSpkO3RoaXMueT1hWzFdKmIrYVs1XSpjK2FbOV0qZDt0aGlzLno9YVsyXSpiK2FbNl0qYythWzEwXSpkO3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpfSxkaXZpZGU6ZnVuY3Rpb24oYSl7dGhpcy54Lz1hLng7dGhpcy55Lz1hLnk7dGhpcy56Lz1hLno7cmV0dXJuIHRoaXN9LGRpdmlkZVNjYWxhcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxLwphKX0sbWluOmZ1bmN0aW9uKGEpe3RoaXMueD1NYXRoLm1pbih0aGlzLngsYS54KTt0aGlzLnk9TWF0aC5taW4odGhpcy55LGEueSk7dGhpcy56PU1hdGgubWluKHRoaXMueixhLnopO3JldHVybiB0aGlzfSxtYXg6ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWF4KHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1heCh0aGlzLnksYS55KTt0aGlzLno9TWF0aC5tYXgodGhpcy56LGEueik7cmV0dXJuIHRoaXN9LGNsYW1wOmZ1bmN0aW9uKGEsYil7dGhpcy54PU1hdGgubWF4KGEueCxNYXRoLm1pbihiLngsdGhpcy54KSk7dGhpcy55PU1hdGgubWF4KGEueSxNYXRoLm1pbihiLnksdGhpcy55KSk7dGhpcy56PU1hdGgubWF4KGEueixNYXRoLm1pbihiLnosdGhpcy56KSk7cmV0dXJuIHRoaXN9LGNsYW1wU2NhbGFyOmZ1bmN0aW9uKGEsYil7dGhpcy54PU1hdGgubWF4KGEsTWF0aC5taW4oYix0aGlzLngpKTt0aGlzLnk9TWF0aC5tYXgoYSxNYXRoLm1pbihiLHRoaXMueSkpO3RoaXMuej1NYXRoLm1heChhLApNYXRoLm1pbihiLHRoaXMueikpO3JldHVybiB0aGlzfSxjbGFtcExlbmd0aDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKGN8fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KGEsTWF0aC5taW4oYixjKSkpfSxmbG9vcjpmdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTt0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopO3JldHVybiB0aGlzfSxjZWlsOmZ1bmN0aW9uKCl7dGhpcy54PU1hdGguY2VpbCh0aGlzLngpO3RoaXMueT1NYXRoLmNlaWwodGhpcy55KTt0aGlzLno9TWF0aC5jZWlsKHRoaXMueik7cmV0dXJuIHRoaXN9LHJvdW5kOmZ1bmN0aW9uKCl7dGhpcy54PU1hdGgucm91bmQodGhpcy54KTt0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpO3RoaXMuej1NYXRoLnJvdW5kKHRoaXMueik7cmV0dXJuIHRoaXN9LHJvdW5kVG9aZXJvOmZ1bmN0aW9uKCl7dGhpcy54PQowPnRoaXMueD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PTA+dGhpcy55P01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KTt0aGlzLno9MD50aGlzLno/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopO3JldHVybiB0aGlzfSxuZWdhdGU6ZnVuY3Rpb24oKXt0aGlzLng9LXRoaXMueDt0aGlzLnk9LXRoaXMueTt0aGlzLno9LXRoaXMuejtyZXR1cm4gdGhpc30sZG90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLngqYS54K3RoaXMueSphLnkrdGhpcy56KmEuen0sbGVuZ3RoU3E6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfSxtYW5oYXR0YW5MZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpKwpNYXRoLmFicyh0aGlzLnopfSxub3JtYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9LHNldExlbmd0aDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihhKX0sbGVycDpmdW5jdGlvbihhLGIpe3RoaXMueCs9KGEueC10aGlzLngpKmI7dGhpcy55Kz0oYS55LXRoaXMueSkqYjt0aGlzLnorPShhLnotdGhpcy56KSpiO3JldHVybiB0aGlzfSxsZXJwVmVjdG9yczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuc3ViVmVjdG9ycyhiLGEpLm11bHRpcGx5U2NhbGFyKGMpLmFkZChhKX0sY3Jvc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwIT09Yj8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuY3Jvc3MoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5jcm9zc1ZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuY3Jvc3NWZWN0b3JzKGEsYikpOnRoaXMuY3Jvc3NWZWN0b3JzKHRoaXMsCmEpfSxjcm9zc1ZlY3RvcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLngsZD1hLnk7YT1hLno7dmFyIGU9Yi54LGY9Yi55O2I9Yi56O3RoaXMueD1kKmItYSpmO3RoaXMueT1hKmUtYypiO3RoaXMuej1jKmYtZCplO3JldHVybiB0aGlzfSxwcm9qZWN0T25WZWN0b3I6ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb3QodGhpcykvYS5sZW5ndGhTcSgpO3JldHVybiB0aGlzLmNvcHkoYSkubXVsdGlwbHlTY2FsYXIoYil9LHByb2plY3RPblBsYW5lOmZ1bmN0aW9uKGEpe01nLmNvcHkodGhpcykucHJvamVjdE9uVmVjdG9yKGEpO3JldHVybiB0aGlzLnN1YihNZyl9LHJlZmxlY3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3ViKE1nLmNvcHkoYSkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdChhKSkpfSxhbmdsZVRvOmZ1bmN0aW9uKGEpe3ZhciBiPU1hdGguc3FydCh0aGlzLmxlbmd0aFNxKCkqYS5sZW5ndGhTcSgpKTswPT09YiYmY29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogYW5nbGVUbygpIGNhbid0IGhhbmRsZSB6ZXJvIGxlbmd0aCB2ZWN0b3JzLiIpOwphPXRoaXMuZG90KGEpL2I7cmV0dXJuIE1hdGguYWNvcyhQLmNsYW1wKGEsLTEsMSkpfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZChhKSl9LGRpc3RhbmNlVG9TcXVhcmVkOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMueC1hLngsYz10aGlzLnktYS55O2E9dGhpcy56LWEuejtyZXR1cm4gYipiK2MqYythKmF9LG1hbmhhdHRhbkRpc3RhbmNlVG86ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC1hLngpK01hdGguYWJzKHRoaXMueS1hLnkpK01hdGguYWJzKHRoaXMuei1hLnopfSxzZXRGcm9tU3BoZXJpY2FsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNldEZyb21TcGhlcmljYWxDb29yZHMoYS5yYWRpdXMsYS5waGksYS50aGV0YSl9LHNldEZyb21TcGhlcmljYWxDb29yZHM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguc2luKGIpKmE7dGhpcy54PWQqTWF0aC5zaW4oYyk7dGhpcy55PU1hdGguY29zKGIpKgphO3RoaXMuej1kKk1hdGguY29zKGMpO3JldHVybiB0aGlzfSxzZXRGcm9tQ3lsaW5kcmljYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKGEucmFkaXVzLGEudGhldGEsYS55KX0sc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzOmZ1bmN0aW9uKGEsYixjKXt0aGlzLng9YSpNYXRoLnNpbihiKTt0aGlzLnk9Yzt0aGlzLno9YSpNYXRoLmNvcyhiKTtyZXR1cm4gdGhpc30sc2V0RnJvbU1hdHJpeFBvc2l0aW9uOmZ1bmN0aW9uKGEpe2E9YS5lbGVtZW50czt0aGlzLng9YVsxMl07dGhpcy55PWFbMTNdO3RoaXMuej1hWzE0XTtyZXR1cm4gdGhpc30sc2V0RnJvbU1hdHJpeFNjYWxlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbihhLDApLmxlbmd0aCgpLGM9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGEsMSkubGVuZ3RoKCk7YT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oYSwyKS5sZW5ndGgoKTt0aGlzLng9Yjt0aGlzLnk9CmM7dGhpcy56PWE7cmV0dXJuIHRoaXN9LHNldEZyb21NYXRyaXhDb2x1bW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkoYS5lbGVtZW50cyw0KmIpfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEueD09PXRoaXMueCYmYS55PT09dGhpcy55JiZhLno9PT10aGlzLnp9LGZyb21BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTApO3RoaXMueD1hW2JdO3RoaXMueT1hW2IrMV07dGhpcy56PWFbYisyXTtyZXR1cm4gdGhpc30sdG9BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWEmJihhPVtdKTt2b2lkIDA9PT1iJiYoYj0wKTthW2JdPXRoaXMueDthW2IrMV09dGhpcy55O2FbYisyXT10aGlzLno7cmV0dXJuIGF9LGZyb21CdWZmZXJBdHRyaWJ1dGU6ZnVuY3Rpb24oYSxiLGMpe3ZvaWQgMCE9PWMmJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpOwp0aGlzLng9YS5nZXRYKGIpO3RoaXMueT1hLmdldFkoYik7dGhpcy56PWEuZ2V0WihiKTtyZXR1cm4gdGhpc319KTt2YXIgb2M9bmV3IG47T2JqZWN0LmFzc2lnbihaLnByb3RvdHlwZSx7aXNNYXRyaXgzOiEwLHNldDpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsbCl7dmFyIG09dGhpcy5lbGVtZW50czttWzBdPWE7bVsxXT1kO21bMl09ZzttWzNdPWI7bVs0XT1lO21bNV09aDttWzZdPWM7bVs3XT1mO21bOF09bDtyZXR1cm4gdGhpc30saWRlbnRpdHk6ZnVuY3Rpb24oKXt0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9LGNvcHk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbGVtZW50czthPWEuZWxlbWVudHM7YlswXT1hWzBdO2JbMV09YVsxXTtiWzJdPWFbMl07YlszXT1hWzNdO2JbNF09YVs0XTtiWzVdPWFbNV07Yls2XT1hWzZdO2JbN109CmFbN107Yls4XT1hWzhdO3JldHVybiB0aGlzfSxzZXRGcm9tTWF0cml4NDpmdW5jdGlvbihhKXthPWEuZWxlbWVudHM7dGhpcy5zZXQoYVswXSxhWzRdLGFbOF0sYVsxXSxhWzVdLGFbOV0sYVsyXSxhWzZdLGFbMTBdKTtyZXR1cm4gdGhpc30sYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPWEuY291bnQ7YjxjO2IrKylvYy54PWEuZ2V0WChiKSxvYy55PWEuZ2V0WShiKSxvYy56PWEuZ2V0WihiKSxvYy5hcHBseU1hdHJpeDModGhpcyksYS5zZXRYWVooYixvYy54LG9jLnksb2Mueik7cmV0dXJuIGF9LG11bHRpcGx5OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyxhKX0scHJlbXVsdGlwbHk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyhhLHRoaXMpfSxtdWx0aXBseU1hdHJpY2VzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5lbGVtZW50cyxkPWIuZWxlbWVudHM7Yj10aGlzLmVsZW1lbnRzOwphPWNbMF07dmFyIGU9Y1szXSxmPWNbNl0sZz1jWzFdLGg9Y1s0XSxsPWNbN10sbT1jWzJdLGs9Y1s1XTtjPWNbOF07dmFyIHE9ZFswXSxuPWRbM10scD1kWzZdLHQ9ZFsxXSx2PWRbNF0seT1kWzddLHc9ZFsyXSx4PWRbNV07ZD1kWzhdO2JbMF09YSpxK2UqdCtmKnc7YlszXT1hKm4rZSp2K2YqeDtiWzZdPWEqcCtlKnkrZipkO2JbMV09ZypxK2gqdCtsKnc7Yls0XT1nKm4raCp2K2wqeDtiWzddPWcqcCtoKnkrbCpkO2JbMl09bSpxK2sqdCtjKnc7Yls1XT1tKm4rayp2K2MqeDtiWzhdPW0qcCtrKnkrYypkO3JldHVybiB0aGlzfSxtdWx0aXBseVNjYWxhcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsZW1lbnRzO2JbMF0qPWE7YlszXSo9YTtiWzZdKj1hO2JbMV0qPWE7Yls0XSo9YTtiWzddKj1hO2JbMl0qPWE7Yls1XSo9YTtiWzhdKj1hO3JldHVybiB0aGlzfSxkZXRlcm1pbmFudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZWxlbWVudHMsYj1hWzBdLGM9YVsxXSxkPWFbMl0sZT1hWzNdLApmPWFbNF0sZz1hWzVdLGg9YVs2XSxsPWFbN107YT1hWzhdO3JldHVybiBiKmYqYS1iKmcqbC1jKmUqYStjKmcqaCtkKmUqbC1kKmYqaH0sZ2V0SW52ZXJzZTpmdW5jdGlvbihhLGIpe2EmJmEuaXNNYXRyaXg0JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAuZ2V0SW52ZXJzZSgpIG5vIGxvbmdlciB0YWtlcyBhIE1hdHJpeDQgYXJndW1lbnQuIik7dmFyIGM9YS5lbGVtZW50czthPXRoaXMuZWxlbWVudHM7dmFyIGQ9Y1swXSxlPWNbMV0sZj1jWzJdLGc9Y1szXSxoPWNbNF0sbD1jWzVdLG09Y1s2XSxrPWNbN107Yz1jWzhdO3ZhciBxPWMqaC1sKmssbj1sKm0tYypnLHA9aypnLWgqbSx0PWQqcStlKm4rZipwO2lmKDA9PT10KXtpZighMD09PWIpdGhyb3cgRXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgY2FuJ3QgaW52ZXJ0IG1hdHJpeCwgZGV0ZXJtaW5hbnQgaXMgMCIpO2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBjYW4ndCBpbnZlcnQgbWF0cml4LCBkZXRlcm1pbmFudCBpcyAwIik7CnJldHVybiB0aGlzLmlkZW50aXR5KCl9Yj0xL3Q7YVswXT1xKmI7YVsxXT0oZiprLWMqZSkqYjthWzJdPShsKmUtZipoKSpiO2FbM109bipiO2FbNF09KGMqZC1mKm0pKmI7YVs1XT0oZipnLWwqZCkqYjthWzZdPXAqYjthWzddPShlKm0taypkKSpiO2FbOF09KGgqZC1lKmcpKmI7cmV0dXJuIHRoaXN9LHRyYW5zcG9zZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZWxlbWVudHM7dmFyIGI9YVsxXTthWzFdPWFbM107YVszXT1iO2I9YVsyXTthWzJdPWFbNl07YVs2XT1iO2I9YVs1XTthWzVdPWFbN107YVs3XT1iO3JldHVybiB0aGlzfSxnZXROb3JtYWxNYXRyaXg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0RnJvbU1hdHJpeDQoYSkuZ2V0SW52ZXJzZSh0aGlzKS50cmFuc3Bvc2UoKX0sdHJhbnNwb3NlSW50b0FycmF5OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZWxlbWVudHM7YVswXT1iWzBdO2FbMV09YlszXTthWzJdPWJbNl07YVszXT1iWzFdO2FbNF09Yls0XTthWzVdPWJbN107YVs2XT0KYlsyXTthWzddPWJbNV07YVs4XT1iWzhdO3JldHVybiB0aGlzfSxzZXRVdlRyYW5zZm9ybTpmdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD1NYXRoLmNvcyhlKTtlPU1hdGguc2luKGUpO3RoaXMuc2V0KGMqaCxjKmUsLWMqKGgqZitlKmcpK2YrYSwtZCplLGQqaCwtZCooLWUqZitoKmcpK2crYiwwLDAsMSl9LHNjYWxlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5lbGVtZW50cztjWzBdKj1hO2NbM10qPWE7Y1s2XSo9YTtjWzFdKj1iO2NbNF0qPWI7Y1s3XSo9YjtyZXR1cm4gdGhpc30scm90YXRlOmZ1bmN0aW9uKGEpe3ZhciBiPU1hdGguY29zKGEpO2E9TWF0aC5zaW4oYSk7dmFyIGM9dGhpcy5lbGVtZW50cyxkPWNbMF0sZT1jWzNdLGY9Y1s2XSxnPWNbMV0saD1jWzRdLGw9Y1s3XTtjWzBdPWIqZCthKmc7Y1szXT1iKmUrYSpoO2NbNl09YipmK2EqbDtjWzFdPS1hKmQrYipnO2NbNF09LWEqZStiKmg7Y1s3XT0tYSpmK2IqbDtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsCmIpe3ZhciBjPXRoaXMuZWxlbWVudHM7Y1swXSs9YSpjWzJdO2NbM10rPWEqY1s1XTtjWzZdKz1hKmNbOF07Y1sxXSs9YipjWzJdO2NbNF0rPWIqY1s1XTtjWzddKz1iKmNbOF07cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsZW1lbnRzO2E9YS5lbGVtZW50cztmb3IodmFyIGM9MDs5PmM7YysrKWlmKGJbY10hPT1hW2NdKXJldHVybiExO3JldHVybiEwfSxmcm9tQXJyYXk6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTtmb3IodmFyIGM9MDs5PmM7YysrKXRoaXMuZWxlbWVudHNbY109YVtjK2JdO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWImJihiPTApO3ZhciBjPXRoaXMuZWxlbWVudHM7YVtiXT1jWzBdO2FbYisxXT1jWzFdO2FbYisyXT1jWzJdO2FbYiszXT1jWzNdO2FbYis0XT1jWzRdO2FbYis1XT1jWzVdO2FbYis2XT1jWzZdO2FbYis3XT1jWzddO2FbYis4XT1jWzhdOwpyZXR1cm4gYX19KTt2YXIgbGQsSmI9e2dldERhdGFVUkw6ZnVuY3Rpb24oYSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudClyZXR1cm4gYS5zcmM7aWYoIShhIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpKXt2b2lkIDA9PT1sZCYmKGxkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpKTtsZC53aWR0aD1hLndpZHRoO2xkLmhlaWdodD1hLmhlaWdodDt2YXIgYj1sZC5nZXRDb250ZXh0KCIyZCIpO2EgaW5zdGFuY2VvZiBJbWFnZURhdGE/Yi5wdXRJbWFnZURhdGEoYSwwLDApOmIuZHJhd0ltYWdlKGEsMCwwLGEud2lkdGgsYS5oZWlnaHQpO2E9bGR9cmV0dXJuIDIwNDg8YS53aWR0aHx8MjA0ODxhLmhlaWdodD9hLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpOmEudG9EYXRhVVJMKCJpbWFnZS9wbmciKX19LFNpPTA7WS5ERUZBVUxUX0lNQUdFPXZvaWQgMDtZLkRFRkFVTFRfTUFQUElORz0KMzAwO1kucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShBYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpZLGlzVGV4dHVyZTohMCx1cGRhdGVNYXRyaXg6ZnVuY3Rpb24oKXt0aGlzLm1hdHJpeC5zZXRVdlRyYW5zZm9ybSh0aGlzLm9mZnNldC54LHRoaXMub2Zmc2V0LnksdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55LHRoaXMucm90YXRpb24sdGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55KX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPWEubmFtZTt0aGlzLmltYWdlPWEuaW1hZ2U7dGhpcy5taXBtYXBzPWEubWlwbWFwcy5zbGljZSgwKTt0aGlzLm1hcHBpbmc9YS5tYXBwaW5nO3RoaXMud3JhcFM9YS53cmFwUzt0aGlzLndyYXBUPWEud3JhcFQ7dGhpcy5tYWdGaWx0ZXI9YS5tYWdGaWx0ZXI7dGhpcy5taW5GaWx0ZXI9YS5taW5GaWx0ZXI7dGhpcy5hbmlzb3Ryb3B5PQphLmFuaXNvdHJvcHk7dGhpcy5mb3JtYXQ9YS5mb3JtYXQ7dGhpcy50eXBlPWEudHlwZTt0aGlzLm9mZnNldC5jb3B5KGEub2Zmc2V0KTt0aGlzLnJlcGVhdC5jb3B5KGEucmVwZWF0KTt0aGlzLmNlbnRlci5jb3B5KGEuY2VudGVyKTt0aGlzLnJvdGF0aW9uPWEucm90YXRpb247dGhpcy5tYXRyaXhBdXRvVXBkYXRlPWEubWF0cml4QXV0b1VwZGF0ZTt0aGlzLm1hdHJpeC5jb3B5KGEubWF0cml4KTt0aGlzLmdlbmVyYXRlTWlwbWFwcz1hLmdlbmVyYXRlTWlwbWFwczt0aGlzLnByZW11bHRpcGx5QWxwaGE9YS5wcmVtdWx0aXBseUFscGhhO3RoaXMuZmxpcFk9YS5mbGlwWTt0aGlzLnVucGFja0FsaWdubWVudD1hLnVucGFja0FsaWdubWVudDt0aGlzLmVuY29kaW5nPWEuZW5jb2Rpbmc7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1hfHwic3RyaW5nIj09PXR5cGVvZiBhO2lmKCFiJiZ2b2lkIDAhPT1hLnRleHR1cmVzW3RoaXMudXVpZF0pcmV0dXJuIGEudGV4dHVyZXNbdGhpcy51dWlkXTsKdmFyIGM9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9OwppZih2b2lkIDAhPT10aGlzLmltYWdlKXt2YXIgZD10aGlzLmltYWdlO3ZvaWQgMD09PWQudXVpZCYmKGQudXVpZD1QLmdlbmVyYXRlVVVJRCgpKTtpZighYiYmdm9pZCAwPT09YS5pbWFnZXNbZC51dWlkXSl7aWYoQXJyYXkuaXNBcnJheShkKSl7dmFyIGU9W107Zm9yKHZhciBmPTAsZz1kLmxlbmd0aDtmPGc7ZisrKWUucHVzaChKYi5nZXREYXRhVVJMKGRbZl0pKX1lbHNlIGU9SmIuZ2V0RGF0YVVSTChkKTthLmltYWdlc1tkLnV1aWRdPXt1dWlkOmQudXVpZCx1cmw6ZX19Yy5pbWFnZT1kLnV1aWR9Ynx8KGEudGV4dHVyZXNbdGhpcy51dWlkXT1jKTtyZXR1cm4gY30sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX0sdHJhbnNmb3JtVXY6ZnVuY3Rpb24oYSl7aWYoMzAwIT09dGhpcy5tYXBwaW5nKXJldHVybiBhO2EuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KTtpZigwPmEueHx8MTxhLngpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgMUUzOmEueC09Ck1hdGguZmxvb3IoYS54KTticmVhaztjYXNlIDEwMDE6YS54PTA+YS54PzA6MTticmVhaztjYXNlIDEwMDI6YS54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKGEueCklMik/TWF0aC5jZWlsKGEueCktYS54OmEueC1NYXRoLmZsb29yKGEueCl9aWYoMD5hLnl8fDE8YS55KXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIDFFMzphLnktPU1hdGguZmxvb3IoYS55KTticmVhaztjYXNlIDEwMDE6YS55PTA+YS55PzA6MTticmVhaztjYXNlIDEwMDI6YS55PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKGEueSklMik/TWF0aC5jZWlsKGEueSktYS55OmEueS1NYXRoLmZsb29yKGEueSl9dGhpcy5mbGlwWSYmKGEueT0xLWEueSk7cmV0dXJuIGF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbihhKXshMD09PWEmJnRoaXMudmVyc2lvbisrfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRhLnByb3RvdHlwZSx7d2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnp9LApzZXQ6ZnVuY3Rpb24oYSl7dGhpcy56PWF9fSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd9LHNldDpmdW5jdGlvbihhKXt0aGlzLnc9YX19fSk7T2JqZWN0LmFzc2lnbihkYS5wcm90b3R5cGUse2lzVmVjdG9yNDohMCxzZXQ6ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy54PWE7dGhpcy55PWI7dGhpcy56PWM7dGhpcy53PWQ7cmV0dXJuIHRoaXN9LHNldFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLnc9dGhpcy56PXRoaXMueT10aGlzLng9YTtyZXR1cm4gdGhpc30sc2V0WDpmdW5jdGlvbihhKXt0aGlzLng9YTtyZXR1cm4gdGhpc30sc2V0WTpmdW5jdGlvbihhKXt0aGlzLnk9YTtyZXR1cm4gdGhpc30sc2V0WjpmdW5jdGlvbihhKXt0aGlzLno9YTtyZXR1cm4gdGhpc30sc2V0VzpmdW5jdGlvbihhKXt0aGlzLnc9YTtyZXR1cm4gdGhpc30sc2V0Q29tcG9uZW50OmZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDp0aGlzLng9YjticmVhaztjYXNlIDE6dGhpcy55PWI7CmJyZWFrO2Nhc2UgMjp0aGlzLno9YjticmVhaztjYXNlIDM6dGhpcy53PWI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK2EpO31yZXR1cm4gdGhpc30sZ2V0Q29tcG9uZW50OmZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtjYXNlIDM6cmV0dXJuIHRoaXMudztkZWZhdWx0OnRocm93IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrYSk7fX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX0sY29weTpmdW5jdGlvbihhKXt0aGlzLng9YS54O3RoaXMueT1hLnk7dGhpcy56PWEuejt0aGlzLnc9dm9pZCAwIT09YS53P2EudzoxO3JldHVybiB0aGlzfSxhZGQ6ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDAhPT1iKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSwKdGhpcy5hZGRWZWN0b3JzKGEsYik7dGhpcy54Kz1hLng7dGhpcy55Kz1hLnk7dGhpcy56Kz1hLno7dGhpcy53Kz1hLnc7cmV0dXJuIHRoaXN9LGFkZFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLngrPWE7dGhpcy55Kz1hO3RoaXMueis9YTt0aGlzLncrPWE7cmV0dXJuIHRoaXN9LGFkZFZlY3RvcnM6ZnVuY3Rpb24oYSxiKXt0aGlzLng9YS54K2IueDt0aGlzLnk9YS55K2IueTt0aGlzLno9YS56K2Iuejt0aGlzLnc9YS53K2IudztyZXR1cm4gdGhpc30sYWRkU2NhbGVkVmVjdG9yOmZ1bmN0aW9uKGEsYil7dGhpcy54Kz1hLngqYjt0aGlzLnkrPWEueSpiO3RoaXMueis9YS56KmI7dGhpcy53Kz1hLncqYjtyZXR1cm4gdGhpc30sc3ViOmZ1bmN0aW9uKGEsYil7aWYodm9pZCAwIT09YilyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKGEsCmIpO3RoaXMueC09YS54O3RoaXMueS09YS55O3RoaXMuei09YS56O3RoaXMudy09YS53O3JldHVybiB0aGlzfSxzdWJTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy54LT1hO3RoaXMueS09YTt0aGlzLnotPWE7dGhpcy53LT1hO3JldHVybiB0aGlzfSxzdWJWZWN0b3JzOmZ1bmN0aW9uKGEsYil7dGhpcy54PWEueC1iLng7dGhpcy55PWEueS1iLnk7dGhpcy56PWEuei1iLno7dGhpcy53PWEudy1iLnc7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueCo9YTt0aGlzLnkqPWE7dGhpcy56Kj1hO3RoaXMudyo9YTtyZXR1cm4gdGhpc30sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMueCxjPXRoaXMueSxkPXRoaXMueixlPXRoaXMudzthPWEuZWxlbWVudHM7dGhpcy54PWFbMF0qYithWzRdKmMrYVs4XSpkK2FbMTJdKmU7dGhpcy55PWFbMV0qYithWzVdKmMrYVs5XSpkK2FbMTNdKmU7dGhpcy56PWFbMl0qYithWzZdKmMrYVsxMF0qZCthWzE0XSoKZTt0aGlzLnc9YVszXSpiK2FbN10qYythWzExXSpkK2FbMTVdKmU7cmV0dXJuIHRoaXN9LGRpdmlkZVNjYWxhcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL2EpfSxzZXRBeGlzQW5nbGVGcm9tUXVhdGVybmlvbjpmdW5jdGlvbihhKXt0aGlzLnc9MipNYXRoLmFjb3MoYS53KTt2YXIgYj1NYXRoLnNxcnQoMS1hLncqYS53KTsxRS00PmI/KHRoaXMueD0xLHRoaXMuej10aGlzLnk9MCk6KHRoaXMueD1hLngvYix0aGlzLnk9YS55L2IsdGhpcy56PWEuei9iKTtyZXR1cm4gdGhpc30sc2V0QXhpc0FuZ2xlRnJvbVJvdGF0aW9uTWF0cml4OmZ1bmN0aW9uKGEpe2E9YS5lbGVtZW50czt2YXIgYj1hWzBdO3ZhciBjPWFbNF07dmFyIGQ9YVs4XSxlPWFbMV0sZj1hWzVdLGc9YVs5XTt2YXIgaD1hWzJdO3ZhciBsPWFbNl07dmFyIG09YVsxMF07aWYoLjAxPk1hdGguYWJzKGMtZSkmJi4wMT5NYXRoLmFicyhkLWgpJiYuMDE+TWF0aC5hYnMoZy1sKSl7aWYoLjE+TWF0aC5hYnMoYysKZSkmJi4xPk1hdGguYWJzKGQraCkmJi4xPk1hdGguYWJzKGcrbCkmJi4xPk1hdGguYWJzKGIrZittLTMpKXJldHVybiB0aGlzLnNldCgxLDAsMCwwKSx0aGlzO2E9TWF0aC5QSTtiPShiKzEpLzI7Zj0oZisxKS8yO209KG0rMSkvMjtjPShjK2UpLzQ7ZD0oZCtoKS80O2c9KGcrbCkvNDtiPmYmJmI+bT8uMDE+Yj8obD0wLGM9aD0uNzA3MTA2NzgxKToobD1NYXRoLnNxcnQoYiksaD1jL2wsYz1kL2wpOmY+bT8uMDE+Zj8obD0uNzA3MTA2NzgxLGg9MCxjPS43MDcxMDY3ODEpOihoPU1hdGguc3FydChmKSxsPWMvaCxjPWcvaCk6LjAxPm0/KGg9bD0uNzA3MTA2NzgxLGM9MCk6KGM9TWF0aC5zcXJ0KG0pLGw9ZC9jLGg9Zy9jKTt0aGlzLnNldChsLGgsYyxhKTtyZXR1cm4gdGhpc31hPU1hdGguc3FydCgobC1nKSoobC1nKSsoZC1oKSooZC1oKSsoZS1jKSooZS1jKSk7LjAwMT5NYXRoLmFicyhhKSYmKGE9MSk7dGhpcy54PShsLWcpL2E7dGhpcy55PShkLWgpL2E7dGhpcy56PShlLWMpL2E7CnRoaXMudz1NYXRoLmFjb3MoKGIrZittLTEpLzIpO3JldHVybiB0aGlzfSxtaW46ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWluKHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1pbih0aGlzLnksYS55KTt0aGlzLno9TWF0aC5taW4odGhpcy56LGEueik7dGhpcy53PU1hdGgubWluKHRoaXMudyxhLncpO3JldHVybiB0aGlzfSxtYXg6ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWF4KHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1heCh0aGlzLnksYS55KTt0aGlzLno9TWF0aC5tYXgodGhpcy56LGEueik7dGhpcy53PU1hdGgubWF4KHRoaXMudyxhLncpO3JldHVybiB0aGlzfSxjbGFtcDpmdW5jdGlvbihhLGIpe3RoaXMueD1NYXRoLm1heChhLngsTWF0aC5taW4oYi54LHRoaXMueCkpO3RoaXMueT1NYXRoLm1heChhLnksTWF0aC5taW4oYi55LHRoaXMueSkpO3RoaXMuej1NYXRoLm1heChhLnosTWF0aC5taW4oYi56LHRoaXMueikpO3RoaXMudz1NYXRoLm1heChhLncsTWF0aC5taW4oYi53LAp0aGlzLncpKTtyZXR1cm4gdGhpc30sY2xhbXBTY2FsYXI6ZnVuY3Rpb24oYSxiKXt0aGlzLng9TWF0aC5tYXgoYSxNYXRoLm1pbihiLHRoaXMueCkpO3RoaXMueT1NYXRoLm1heChhLE1hdGgubWluKGIsdGhpcy55KSk7dGhpcy56PU1hdGgubWF4KGEsTWF0aC5taW4oYix0aGlzLnopKTt0aGlzLnc9TWF0aC5tYXgoYSxNYXRoLm1pbihiLHRoaXMudykpO3JldHVybiB0aGlzfSxjbGFtcExlbmd0aDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKGN8fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KGEsTWF0aC5taW4oYixjKSkpfSxmbG9vcjpmdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTt0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopO3RoaXMudz1NYXRoLmZsb29yKHRoaXMudyk7cmV0dXJuIHRoaXN9LGNlaWw6ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7CnRoaXMueT1NYXRoLmNlaWwodGhpcy55KTt0aGlzLno9TWF0aC5jZWlsKHRoaXMueik7dGhpcy53PU1hdGguY2VpbCh0aGlzLncpO3JldHVybiB0aGlzfSxyb3VuZDpmdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTt0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopO3RoaXMudz1NYXRoLnJvdW5kKHRoaXMudyk7cmV0dXJuIHRoaXN9LHJvdW5kVG9aZXJvOmZ1bmN0aW9uKCl7dGhpcy54PTA+dGhpcy54P01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9MD50aGlzLnk/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpO3RoaXMuej0wPnRoaXMuej9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueik7dGhpcy53PTA+dGhpcy53P01hdGguY2VpbCh0aGlzLncpOk1hdGguZmxvb3IodGhpcy53KTtyZXR1cm4gdGhpc30sbmVnYXRlOmZ1bmN0aW9uKCl7dGhpcy54PS10aGlzLng7CnRoaXMueT0tdGhpcy55O3RoaXMuej0tdGhpcy56O3RoaXMudz0tdGhpcy53O3JldHVybiB0aGlzfSxkb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueCphLngrdGhpcy55KmEueSt0aGlzLnoqYS56K3RoaXMudyphLnd9LGxlbmd0aFNxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLnd9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMudyl9LG1hbmhhdHRhbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfSxub3JtYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9LHNldExlbmd0aDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihhKX0sCmxlcnA6ZnVuY3Rpb24oYSxiKXt0aGlzLngrPShhLngtdGhpcy54KSpiO3RoaXMueSs9KGEueS10aGlzLnkpKmI7dGhpcy56Kz0oYS56LXRoaXMueikqYjt0aGlzLncrPShhLnctdGhpcy53KSpiO3JldHVybiB0aGlzfSxsZXJwVmVjdG9yczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuc3ViVmVjdG9ycyhiLGEpLm11bHRpcGx5U2NhbGFyKGMpLmFkZChhKX0sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLng9PT10aGlzLngmJmEueT09PXRoaXMueSYmYS56PT09dGhpcy56JiZhLnc9PT10aGlzLnd9LGZyb21BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTApO3RoaXMueD1hW2JdO3RoaXMueT1hW2IrMV07dGhpcy56PWFbYisyXTt0aGlzLnc9YVtiKzNdO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWImJihiPTApO2FbYl09dGhpcy54O2FbYisxXT10aGlzLnk7YVtiKzJdPXRoaXMuejthW2IrM109CnRoaXMudztyZXR1cm4gYX0sZnJvbUJ1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbihhLGIsYyl7dm9pZCAwIT09YyYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIik7dGhpcy54PWEuZ2V0WChiKTt0aGlzLnk9YS5nZXRZKGIpO3RoaXMuej1hLmdldFooYik7dGhpcy53PWEuZ2V0VyhiKTtyZXR1cm4gdGhpc319KTtCYS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEFhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkJhLGlzV2ViR0xSZW5kZXJUYXJnZXQ6ITAsc2V0U2l6ZTpmdW5jdGlvbihhLGIpe2lmKHRoaXMud2lkdGghPT1hfHx0aGlzLmhlaWdodCE9PWIpdGhpcy53aWR0aD1hLHRoaXMuaGVpZ2h0PWIsdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPWEsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1iLHRoaXMuZGlzcG9zZSgpO3RoaXMudmlld3BvcnQuc2V0KDAsMCwKYSxiKTt0aGlzLnNjaXNzb3Iuc2V0KDAsMCxhLGIpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLndpZHRoPWEud2lkdGg7dGhpcy5oZWlnaHQ9YS5oZWlnaHQ7dGhpcy52aWV3cG9ydC5jb3B5KGEudmlld3BvcnQpO3RoaXMudGV4dHVyZT1hLnRleHR1cmUuY2xvbmUoKTt0aGlzLmRlcHRoQnVmZmVyPWEuZGVwdGhCdWZmZXI7dGhpcy5zdGVuY2lsQnVmZmVyPWEuc3RlbmNpbEJ1ZmZlcjt0aGlzLmRlcHRoVGV4dHVyZT1hLmRlcHRoVGV4dHVyZTtyZXR1cm4gdGhpc30sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19KTtTZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlNmLGlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldDohMCxjb3B5OmZ1bmN0aW9uKGEpe0JhLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcywKYSk7dGhpcy5zYW1wbGVzPWEuc2FtcGxlcztyZXR1cm4gdGhpc319KTt2YXIgS2E9bmV3IG4sY2E9bmV3IFEsdGs9bmV3IG4oMCwwLDApLHVrPW5ldyBuKDEsMSwxKSxLYj1uZXcgbix1Zj1uZXcgbixwYT1uZXcgbjtPYmplY3QuYXNzaWduKFEucHJvdG90eXBlLHtpc01hdHJpeDQ6ITAsc2V0OmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxsLG0sayxxLG4scCx0LHYpe3ZhciByPXRoaXMuZWxlbWVudHM7clswXT1hO3JbNF09YjtyWzhdPWM7clsxMl09ZDtyWzFdPWU7cls1XT1mO3JbOV09ZztyWzEzXT1oO3JbMl09bDtyWzZdPW07clsxMF09aztyWzE0XT1xO3JbM109bjtyWzddPXA7clsxMV09dDtyWzE1XT12O3JldHVybiB0aGlzfSxpZGVudGl0eTpmdW5jdGlvbigpe3RoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgUSkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfSxjb3B5OmZ1bmN0aW9uKGEpe3ZhciBiPQp0aGlzLmVsZW1lbnRzO2E9YS5lbGVtZW50cztiWzBdPWFbMF07YlsxXT1hWzFdO2JbMl09YVsyXTtiWzNdPWFbM107Yls0XT1hWzRdO2JbNV09YVs1XTtiWzZdPWFbNl07Yls3XT1hWzddO2JbOF09YVs4XTtiWzldPWFbOV07YlsxMF09YVsxMF07YlsxMV09YVsxMV07YlsxMl09YVsxMl07YlsxM109YVsxM107YlsxNF09YVsxNF07YlsxNV09YVsxNV07cmV0dXJuIHRoaXN9LGNvcHlQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsZW1lbnRzO2E9YS5lbGVtZW50cztiWzEyXT1hWzEyXTtiWzEzXT1hWzEzXTtiWzE0XT1hWzE0XTtyZXR1cm4gdGhpc30sZXh0cmFjdEJhc2lzOmZ1bmN0aW9uKGEsYixjKXthLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywwKTtiLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywxKTtjLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywyKTtyZXR1cm4gdGhpc30sbWFrZUJhc2lzOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnNldChhLngsYi54LGMueCwwLGEueSwKYi55LGMueSwwLGEueixiLnosYy56LDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LGV4dHJhY3RSb3RhdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsZW1lbnRzLGM9YS5lbGVtZW50cyxkPTEvS2Euc2V0RnJvbU1hdHJpeENvbHVtbihhLDApLmxlbmd0aCgpLGU9MS9LYS5zZXRGcm9tTWF0cml4Q29sdW1uKGEsMSkubGVuZ3RoKCk7YT0xL0thLnNldEZyb21NYXRyaXhDb2x1bW4oYSwyKS5sZW5ndGgoKTtiWzBdPWNbMF0qZDtiWzFdPWNbMV0qZDtiWzJdPWNbMl0qZDtiWzNdPTA7Yls0XT1jWzRdKmU7Yls1XT1jWzVdKmU7Yls2XT1jWzZdKmU7Yls3XT0wO2JbOF09Y1s4XSphO2JbOV09Y1s5XSphO2JbMTBdPWNbMTBdKmE7YlsxMV09MDtiWzEyXT0wO2JbMTNdPTA7YlsxNF09MDtiWzE1XT0xO3JldHVybiB0aGlzfSxtYWtlUm90YXRpb25Gcm9tRXVsZXI6ZnVuY3Rpb24oYSl7YSYmYS5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubWFrZVJvdGF0aW9uRnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYSBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpOwp2YXIgYj10aGlzLmVsZW1lbnRzLGM9YS54LGQ9YS55LGU9YS56LGY9TWF0aC5jb3MoYyk7Yz1NYXRoLnNpbihjKTt2YXIgZz1NYXRoLmNvcyhkKTtkPU1hdGguc2luKGQpO3ZhciBoPU1hdGguY29zKGUpO2U9TWF0aC5zaW4oZSk7aWYoIlhZWiI9PT1hLm9yZGVyKXthPWYqaDt2YXIgbD1mKmUsbT1jKmgsaz1jKmU7YlswXT1nKmg7Yls0XT0tZyplO2JbOF09ZDtiWzFdPWwrbSpkO2JbNV09YS1rKmQ7Yls5XT0tYypnO2JbMl09ay1hKmQ7Yls2XT1tK2wqZDtiWzEwXT1mKmd9ZWxzZSJZWFoiPT09YS5vcmRlcj8oYT1nKmgsbD1nKmUsbT1kKmgsaz1kKmUsYlswXT1hK2sqYyxiWzRdPW0qYy1sLGJbOF09ZipkLGJbMV09ZiplLGJbNV09ZipoLGJbOV09LWMsYlsyXT1sKmMtbSxiWzZdPWsrYSpjLGJbMTBdPWYqZyk6IlpYWSI9PT1hLm9yZGVyPyhhPWcqaCxsPWcqZSxtPWQqaCxrPWQqZSxiWzBdPWEtaypjLGJbNF09LWYqZSxiWzhdPW0rbCpjLGJbMV09bCttKmMsYls1XT1mKmgsYls5XT0Kay1hKmMsYlsyXT0tZipkLGJbNl09YyxiWzEwXT1mKmcpOiJaWVgiPT09YS5vcmRlcj8oYT1mKmgsbD1mKmUsbT1jKmgsaz1jKmUsYlswXT1nKmgsYls0XT1tKmQtbCxiWzhdPWEqZCtrLGJbMV09ZyplLGJbNV09aypkK2EsYls5XT1sKmQtbSxiWzJdPS1kLGJbNl09YypnLGJbMTBdPWYqZyk6IllaWCI9PT1hLm9yZGVyPyhhPWYqZyxsPWYqZCxtPWMqZyxrPWMqZCxiWzBdPWcqaCxiWzRdPWstYSplLGJbOF09bSplK2wsYlsxXT1lLGJbNV09ZipoLGJbOV09LWMqaCxiWzJdPS1kKmgsYls2XT1sKmUrbSxiWzEwXT1hLWsqZSk6IlhaWSI9PT1hLm9yZGVyJiYoYT1mKmcsbD1mKmQsbT1jKmcsaz1jKmQsYlswXT1nKmgsYls0XT0tZSxiWzhdPWQqaCxiWzFdPWEqZStrLGJbNV09ZipoLGJbOV09bCplLW0sYlsyXT1tKmUtbCxiWzZdPWMqaCxiWzEwXT1rKmUrYSk7YlszXT0wO2JbN109MDtiWzExXT0wO2JbMTJdPTA7YlsxM109MDtiWzE0XT0wO2JbMTVdPTE7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbXBvc2UodGssCmEsdWspfSxsb29rQXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuZWxlbWVudHM7cGEuc3ViVmVjdG9ycyhhLGIpOzA9PT1wYS5sZW5ndGhTcSgpJiYocGEuej0xKTtwYS5ub3JtYWxpemUoKTtLYi5jcm9zc1ZlY3RvcnMoYyxwYSk7MD09PUtiLmxlbmd0aFNxKCkmJigxPT09TWF0aC5hYnMoYy56KT9wYS54Kz0xRS00OnBhLnorPTFFLTQscGEubm9ybWFsaXplKCksS2IuY3Jvc3NWZWN0b3JzKGMscGEpKTtLYi5ub3JtYWxpemUoKTt1Zi5jcm9zc1ZlY3RvcnMocGEsS2IpO2RbMF09S2IueDtkWzRdPXVmLng7ZFs4XT1wYS54O2RbMV09S2IueTtkWzVdPXVmLnk7ZFs5XT1wYS55O2RbMl09S2IuejtkWzZdPXVmLno7ZFsxMF09cGEuejtyZXR1cm4gdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwIT09Yj8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSwKdGhpcy5tdWx0aXBseU1hdHJpY2VzKGEsYikpOnRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLGEpfSxwcmVtdWx0aXBseTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKGEsdGhpcyl9LG11bHRpcGx5TWF0cmljZXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmVsZW1lbnRzLGQ9Yi5lbGVtZW50cztiPXRoaXMuZWxlbWVudHM7YT1jWzBdO3ZhciBlPWNbNF0sZj1jWzhdLGc9Y1sxMl0saD1jWzFdLGw9Y1s1XSxtPWNbOV0saz1jWzEzXSxxPWNbMl0sbj1jWzZdLHA9Y1sxMF0sdD1jWzE0XSx2PWNbM10seT1jWzddLHc9Y1sxMV07Yz1jWzE1XTt2YXIgeD1kWzBdLEI9ZFs0XSxJPWRbOF0sej1kWzEyXSxBPWRbMV0sRT1kWzVdLEM9ZFs5XSxEPWRbMTNdLEg9ZFsyXSxHPWRbNl0sSj1kWzEwXSxMPWRbMTRdLE49ZFszXSxPPWRbN10sUD1kWzExXTtkPWRbMTVdO2JbMF09YSp4K2UqQStmKkgrZypOO2JbNF09YSpCK2UqRStmKkcrZypPO2JbOF09YSpJK2UqQytmKkorCmcqUDtiWzEyXT1hKnorZSpEK2YqTCtnKmQ7YlsxXT1oKngrbCpBK20qSCtrKk47Yls1XT1oKkIrbCpFK20qRytrKk87Yls5XT1oKkkrbCpDK20qSitrKlA7YlsxM109aCp6K2wqRCttKkwraypkO2JbMl09cSp4K24qQStwKkgrdCpOO2JbNl09cSpCK24qRStwKkcrdCpPO2JbMTBdPXEqSStuKkMrcCpKK3QqUDtiWzE0XT1xKnorbipEK3AqTCt0KmQ7YlszXT12KngreSpBK3cqSCtjKk47Yls3XT12KkIreSpFK3cqRytjKk87YlsxMV09dipJK3kqQyt3KkorYypQO2JbMTVdPXYqeit5KkQrdypMK2MqZDtyZXR1cm4gdGhpc30sbXVsdGlwbHlTY2FsYXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbGVtZW50cztiWzBdKj1hO2JbNF0qPWE7Yls4XSo9YTtiWzEyXSo9YTtiWzFdKj1hO2JbNV0qPWE7Yls5XSo9YTtiWzEzXSo9YTtiWzJdKj1hO2JbNl0qPWE7YlsxMF0qPWE7YlsxNF0qPWE7YlszXSo9YTtiWzddKj1hO2JbMTFdKj1hO2JbMTVdKj1hO3JldHVybiB0aGlzfSxhcHBseVRvQnVmZmVyQXR0cmlidXRlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0KMCxjPWEuY291bnQ7YjxjO2IrKylLYS54PWEuZ2V0WChiKSxLYS55PWEuZ2V0WShiKSxLYS56PWEuZ2V0WihiKSxLYS5hcHBseU1hdHJpeDQodGhpcyksYS5zZXRYWVooYixLYS54LEthLnksS2Eueik7cmV0dXJuIGF9LGRldGVybWluYW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50cyxiPWFbMF0sYz1hWzRdLGQ9YVs4XSxlPWFbMTJdLGY9YVsxXSxnPWFbNV0saD1hWzldLGw9YVsxM10sbT1hWzJdLGs9YVs2XSxxPWFbMTBdLG49YVsxNF07cmV0dXJuIGFbM10qKCtlKmgqay1kKmwqay1lKmcqcStjKmwqcStkKmcqbi1jKmgqbikrYVs3XSooK2IqaCpuLWIqbCpxK2UqZipxLWQqZipuK2QqbCptLWUqaCptKSthWzExXSooK2IqbCprLWIqZypuLWUqZiprK2MqZipuK2UqZyptLWMqbCptKSthWzE1XSooLWQqZyptLWIqaCprK2IqZypxK2QqZiprLWMqZipxK2MqaCptKX0sdHJhbnNwb3NlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50czt2YXIgYj1hWzFdO2FbMV09YVs0XTsKYVs0XT1iO2I9YVsyXTthWzJdPWFbOF07YVs4XT1iO2I9YVs2XTthWzZdPWFbOV07YVs5XT1iO2I9YVszXTthWzNdPWFbMTJdO2FbMTJdPWI7Yj1hWzddO2FbN109YVsxM107YVsxM109YjtiPWFbMTFdO2FbMTFdPWFbMTRdO2FbMTRdPWI7cmV0dXJuIHRoaXN9LHNldFBvc2l0aW9uOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmVsZW1lbnRzO2EuaXNWZWN0b3IzPyhkWzEyXT1hLngsZFsxM109YS55LGRbMTRdPWEueik6KGRbMTJdPWEsZFsxM109YixkWzE0XT1jKTtyZXR1cm4gdGhpc30sZ2V0SW52ZXJzZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZWxlbWVudHMsZD1hLmVsZW1lbnRzO2E9ZFswXTt2YXIgZT1kWzFdLGY9ZFsyXSxnPWRbM10saD1kWzRdLGw9ZFs1XSxtPWRbNl0saz1kWzddLHE9ZFs4XSxuPWRbOV0scD1kWzEwXSx0PWRbMTFdLHY9ZFsxMl0seT1kWzEzXSx3PWRbMTRdO2Q9ZFsxNV07dmFyIHg9bip3KmsteSpwKmsreSptKnQtbCp3KnQtbiptKmQrbCpwKmQsCkI9dipwKmstcSp3KmstdiptKnQraCp3KnQrcSptKmQtaCpwKmQsST1xKnkqay12Km4qayt2KmwqdC1oKnkqdC1xKmwqZCtoKm4qZCx6PXYqbiptLXEqeSptLXYqbCpwK2gqeSpwK3EqbCp3LWgqbip3LEE9YSp4K2UqQitmKkkrZyp6O2lmKDA9PT1BKXtpZighMD09PWIpdGhyb3cgRXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5nZXRJbnZlcnNlKCkgY2FuJ3QgaW52ZXJ0IG1hdHJpeCwgZGV0ZXJtaW5hbnQgaXMgMCIpO2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldEludmVyc2UoKSBjYW4ndCBpbnZlcnQgbWF0cml4LCBkZXRlcm1pbmFudCBpcyAwIik7cmV0dXJuIHRoaXMuaWRlbnRpdHkoKX1iPTEvQTtjWzBdPXgqYjtjWzFdPSh5KnAqZy1uKncqZy15KmYqdCtlKncqdCtuKmYqZC1lKnAqZCkqYjtjWzJdPShsKncqZy15Km0qZyt5KmYqay1lKncqay1sKmYqZCtlKm0qZCkqYjtjWzNdPShuKm0qZy1sKnAqZy1uKmYqaytlKnAqaytsKmYqdC1lKm0qdCkqYjtjWzRdPUIqYjtjWzVdPQoocSp3KmctdipwKmcrdipmKnQtYSp3KnQtcSpmKmQrYSpwKmQpKmI7Y1s2XT0odiptKmctaCp3KmctdipmKmsrYSp3KmsraCpmKmQtYSptKmQpKmI7Y1s3XT0oaCpwKmctcSptKmcrcSpmKmstYSpwKmstaCpmKnQrYSptKnQpKmI7Y1s4XT1JKmI7Y1s5XT0odipuKmctcSp5KmctdiplKnQrYSp5KnQrcSplKmQtYSpuKmQpKmI7Y1sxMF09KGgqeSpnLXYqbCpnK3YqZSprLWEqeSprLWgqZSpkK2EqbCpkKSpiO2NbMTFdPShxKmwqZy1oKm4qZy1xKmUqaythKm4qaytoKmUqdC1hKmwqdCkqYjtjWzEyXT16KmI7Y1sxM109KHEqeSpmLXYqbipmK3YqZSpwLWEqeSpwLXEqZSp3K2Eqbip3KSpiO2NbMTRdPSh2KmwqZi1oKnkqZi12KmUqbSthKnkqbStoKmUqdy1hKmwqdykqYjtjWzE1XT0oaCpuKmYtcSpsKmYrcSplKm0tYSpuKm0taCplKnArYSpsKnApKmI7cmV0dXJuIHRoaXN9LHNjYWxlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZWxlbWVudHMsYz1hLngsZD1hLnk7YT1hLno7YlswXSo9YzsKYls0XSo9ZDtiWzhdKj1hO2JbMV0qPWM7Yls1XSo9ZDtiWzldKj1hO2JbMl0qPWM7Yls2XSo9ZDtiWzEwXSo9YTtiWzNdKj1jO2JbN10qPWQ7YlsxMV0qPWE7cmV0dXJuIHRoaXN9LGdldE1heFNjYWxlT25BeGlzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50cztyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KGFbMF0qYVswXSthWzFdKmFbMV0rYVsyXSphWzJdLGFbNF0qYVs0XSthWzVdKmFbNV0rYVs2XSphWzZdLGFbOF0qYVs4XSthWzldKmFbOV0rYVsxMF0qYVsxMF0pKX0sbWFrZVRyYW5zbGF0aW9uOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnNldCgxLDAsMCxhLDAsMSwwLGIsMCwwLDEsYywwLDAsMCwxKTtyZXR1cm4gdGhpc30sbWFrZVJvdGF0aW9uWDpmdW5jdGlvbihhKXt2YXIgYj1NYXRoLmNvcyhhKTthPU1hdGguc2luKGEpO3RoaXMuc2V0KDEsMCwwLDAsMCxiLC1hLDAsMCxhLGIsMCwwLDAsMCwxKTtyZXR1cm4gdGhpc30sbWFrZVJvdGF0aW9uWTpmdW5jdGlvbihhKXt2YXIgYj0KTWF0aC5jb3MoYSk7YT1NYXRoLnNpbihhKTt0aGlzLnNldChiLDAsYSwwLDAsMSwwLDAsLWEsMCxiLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvblo6ZnVuY3Rpb24oYSl7dmFyIGI9TWF0aC5jb3MoYSk7YT1NYXRoLnNpbihhKTt0aGlzLnNldChiLC1hLDAsMCxhLGIsMCwwLDAsMCwxLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvbkF4aXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1NYXRoLmNvcyhiKTtiPU1hdGguc2luKGIpO3ZhciBkPTEtYyxlPWEueCxmPWEueTthPWEuejt2YXIgZz1kKmUsaD1kKmY7dGhpcy5zZXQoZyplK2MsZypmLWIqYSxnKmErYipmLDAsZypmK2IqYSxoKmYrYyxoKmEtYiplLDAsZyphLWIqZixoKmErYiplLGQqYSphK2MsMCwwLDAsMCwxKTtyZXR1cm4gdGhpc30sbWFrZVNjYWxlOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnNldChhLDAsMCwwLDAsYiwwLDAsMCwwLGMsMCwwLDAsMCwxKTtyZXR1cm4gdGhpc30sbWFrZVNoZWFyOmZ1bmN0aW9uKGEsCmIsYyl7dGhpcy5zZXQoMSxiLGMsMCxhLDEsYywwLGEsYiwxLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LGNvbXBvc2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuZWxlbWVudHMsZT1iLl94LGY9Yi5feSxnPWIuX3osaD1iLl93LGw9ZStlLG09ZitmLGs9ZytnO2I9ZSpsO3ZhciBuPWUqbTtlKj1rO3ZhciB1PWYqbTtmKj1rO2cqPWs7bCo9aDttKj1oO2gqPWs7az1jLng7dmFyIHA9Yy55O2M9Yy56O2RbMF09KDEtKHUrZykpKms7ZFsxXT0obitoKSprO2RbMl09KGUtbSkqaztkWzNdPTA7ZFs0XT0obi1oKSpwO2RbNV09KDEtKGIrZykpKnA7ZFs2XT0oZitsKSpwO2RbN109MDtkWzhdPShlK20pKmM7ZFs5XT0oZi1sKSpjO2RbMTBdPSgxLShiK3UpKSpjO2RbMTFdPTA7ZFsxMl09YS54O2RbMTNdPWEueTtkWzE0XT1hLno7ZFsxNV09MTtyZXR1cm4gdGhpc30sZGVjb21wb3NlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmVsZW1lbnRzLGU9S2Euc2V0KGRbMF0sZFsxXSxkWzJdKS5sZW5ndGgoKSwKZj1LYS5zZXQoZFs0XSxkWzVdLGRbNl0pLmxlbmd0aCgpLGc9S2Euc2V0KGRbOF0sZFs5XSxkWzEwXSkubGVuZ3RoKCk7MD50aGlzLmRldGVybWluYW50KCkmJihlPS1lKTthLng9ZFsxMl07YS55PWRbMTNdO2Euej1kWzE0XTtjYS5jb3B5KHRoaXMpO2E9MS9lO2Q9MS9mO3ZhciBoPTEvZztjYS5lbGVtZW50c1swXSo9YTtjYS5lbGVtZW50c1sxXSo9YTtjYS5lbGVtZW50c1syXSo9YTtjYS5lbGVtZW50c1s0XSo9ZDtjYS5lbGVtZW50c1s1XSo9ZDtjYS5lbGVtZW50c1s2XSo9ZDtjYS5lbGVtZW50c1s4XSo9aDtjYS5lbGVtZW50c1s5XSo9aDtjYS5lbGVtZW50c1sxMF0qPWg7Yi5zZXRGcm9tUm90YXRpb25NYXRyaXgoY2EpO2MueD1lO2MueT1mO2Muej1nO3JldHVybiB0aGlzfSxtYWtlUGVyc3BlY3RpdmU6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZvaWQgMD09PWYmJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpOwp2YXIgZz10aGlzLmVsZW1lbnRzO2dbMF09MiplLyhiLWEpO2dbNF09MDtnWzhdPShiK2EpLyhiLWEpO2dbMTJdPTA7Z1sxXT0wO2dbNV09MiplLyhjLWQpO2dbOV09KGMrZCkvKGMtZCk7Z1sxM109MDtnWzJdPTA7Z1s2XT0wO2dbMTBdPS0oZitlKS8oZi1lKTtnWzE0XT0tMipmKmUvKGYtZSk7Z1szXT0wO2dbN109MDtnWzExXT0tMTtnWzE1XT0wO3JldHVybiB0aGlzfSxtYWtlT3J0aG9ncmFwaGljOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz10aGlzLmVsZW1lbnRzLGg9MS8oYi1hKSxsPTEvKGMtZCksbT0xLyhmLWUpO2dbMF09MipoO2dbNF09MDtnWzhdPTA7Z1sxMl09LSgoYithKSpoKTtnWzFdPTA7Z1s1XT0yKmw7Z1s5XT0wO2dbMTNdPS0oKGMrZCkqbCk7Z1syXT0wO2dbNl09MDtnWzEwXT0tMiptO2dbMTRdPS0oKGYrZSkqbSk7Z1szXT0wO2dbN109MDtnWzExXT0wO2dbMTVdPTE7cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsZW1lbnRzOwphPWEuZWxlbWVudHM7Zm9yKHZhciBjPTA7MTY+YztjKyspaWYoYltjXSE9PWFbY10pcmV0dXJuITE7cmV0dXJuITB9LGZyb21BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTApO2Zvcih2YXIgYz0wOzE2PmM7YysrKXRoaXMuZWxlbWVudHNbY109YVtjK2JdO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWImJihiPTApO3ZhciBjPXRoaXMuZWxlbWVudHM7YVtiXT1jWzBdO2FbYisxXT1jWzFdO2FbYisyXT1jWzJdO2FbYiszXT1jWzNdO2FbYis0XT1jWzRdO2FbYis1XT1jWzVdO2FbYis2XT1jWzZdO2FbYis3XT1jWzddO2FbYis4XT1jWzhdO2FbYis5XT1jWzldO2FbYisxMF09Y1sxMF07YVtiKzExXT1jWzExXTthW2IrMTJdPWNbMTJdO2FbYisxM109Y1sxM107YVtiKzE0XT1jWzE0XTthW2IrMTVdPWNbMTVdO3JldHVybiBhfX0pO3ZhciBtaT1uZXcgUSxuaT1uZXcgd2E7UGIuUm90YXRpb25PcmRlcnM9CiJYWVogWVpYIFpYWSBYWlkgWVhaIFpZWCIuc3BsaXQoIiAiKTtQYi5EZWZhdWx0T3JkZXI9IlhZWiI7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUGIucHJvdG90eXBlLHt4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feH0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuX3g9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fSx5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feX0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuX3k9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fSx6OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fen0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuX3o9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fSxvcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yZGVyfSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5fb3JkZXI9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fX0pO09iamVjdC5hc3NpZ24oUGIucHJvdG90eXBlLHtpc0V1bGVyOiEwLHNldDpmdW5jdGlvbihhLApiLGMsZCl7dGhpcy5feD1hO3RoaXMuX3k9Yjt0aGlzLl96PWM7dGhpcy5fb3JkZXI9ZHx8dGhpcy5fb3JkZXI7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl9vcmRlcil9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5feD1hLl94O3RoaXMuX3k9YS5feTt0aGlzLl96PWEuX3o7dGhpcy5fb3JkZXI9YS5fb3JkZXI7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxzZXRGcm9tUm90YXRpb25NYXRyaXg6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVAuY2xhbXAsZT1hLmVsZW1lbnRzO2E9ZVswXTt2YXIgZj1lWzRdLGc9ZVs4XSxoPWVbMV0sbD1lWzVdLG09ZVs5XSxrPWVbMl0sbj1lWzZdO2U9ZVsxMF07Yj1ifHx0aGlzLl9vcmRlcjsiWFlaIj09PWI/KHRoaXMuX3k9TWF0aC5hc2luKGQoZywtMSwxKSksLjk5OTk5OTk+TWF0aC5hYnMoZyk/Cih0aGlzLl94PU1hdGguYXRhbjIoLW0sZSksdGhpcy5fej1NYXRoLmF0YW4yKC1mLGEpKToodGhpcy5feD1NYXRoLmF0YW4yKG4sbCksdGhpcy5fej0wKSk6IllYWiI9PT1iPyh0aGlzLl94PU1hdGguYXNpbigtZChtLC0xLDEpKSwuOTk5OTk5OT5NYXRoLmFicyhtKT8odGhpcy5feT1NYXRoLmF0YW4yKGcsZSksdGhpcy5fej1NYXRoLmF0YW4yKGgsbCkpOih0aGlzLl95PU1hdGguYXRhbjIoLWssYSksdGhpcy5fej0wKSk6IlpYWSI9PT1iPyh0aGlzLl94PU1hdGguYXNpbihkKG4sLTEsMSkpLC45OTk5OTk5Pk1hdGguYWJzKG4pPyh0aGlzLl95PU1hdGguYXRhbjIoLWssZSksdGhpcy5fej1NYXRoLmF0YW4yKC1mLGwpKToodGhpcy5feT0wLHRoaXMuX3o9TWF0aC5hdGFuMihoLGEpKSk6IlpZWCI9PT1iPyh0aGlzLl95PU1hdGguYXNpbigtZChrLC0xLDEpKSwuOTk5OTk5OT5NYXRoLmFicyhrKT8odGhpcy5feD1NYXRoLmF0YW4yKG4sZSksdGhpcy5fej1NYXRoLmF0YW4yKGgsYSkpOgoodGhpcy5feD0wLHRoaXMuX3o9TWF0aC5hdGFuMigtZixsKSkpOiJZWlgiPT09Yj8odGhpcy5fej1NYXRoLmFzaW4oZChoLC0xLDEpKSwuOTk5OTk5OT5NYXRoLmFicyhoKT8odGhpcy5feD1NYXRoLmF0YW4yKC1tLGwpLHRoaXMuX3k9TWF0aC5hdGFuMigtayxhKSk6KHRoaXMuX3g9MCx0aGlzLl95PU1hdGguYXRhbjIoZyxlKSkpOiJYWlkiPT09Yj8odGhpcy5fej1NYXRoLmFzaW4oLWQoZiwtMSwxKSksLjk5OTk5OTk+TWF0aC5hYnMoZik/KHRoaXMuX3g9TWF0aC5hdGFuMihuLGwpLHRoaXMuX3k9TWF0aC5hdGFuMihnLGEpKToodGhpcy5feD1NYXRoLmF0YW4yKC1tLGUpLHRoaXMuX3k9MCkpOmNvbnNvbGUud2FybigiVEhSRUUuRXVsZXI6IC5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBnaXZlbiB1bnN1cHBvcnRlZCBvcmRlcjogIitiKTt0aGlzLl9vcmRlcj1iOyExIT09YyYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxzZXRGcm9tUXVhdGVybmlvbjpmdW5jdGlvbihhLApiLGMpe21pLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKGEpO3JldHVybiB0aGlzLnNldEZyb21Sb3RhdGlvbk1hdHJpeChtaSxiLGMpfSxzZXRGcm9tVmVjdG9yMzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnNldChhLngsYS55LGEueixifHx0aGlzLl9vcmRlcil9LHJlb3JkZXI6ZnVuY3Rpb24oYSl7bmkuc2V0RnJvbUV1bGVyKHRoaXMpO3JldHVybiB0aGlzLnNldEZyb21RdWF0ZXJuaW9uKG5pLGEpfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX3g9PT10aGlzLl94JiZhLl95PT09dGhpcy5feSYmYS5fej09PXRoaXMuX3omJmEuX29yZGVyPT09dGhpcy5fb3JkZXJ9LGZyb21BcnJheTpmdW5jdGlvbihhKXt0aGlzLl94PWFbMF07dGhpcy5feT1hWzFdO3RoaXMuX3o9YVsyXTt2b2lkIDAhPT1hWzNdJiYodGhpcy5fb3JkZXI9YVszXSk7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YSYmKGE9CltdKTt2b2lkIDA9PT1iJiYoYj0wKTthW2JdPXRoaXMuX3g7YVtiKzFdPXRoaXMuX3k7YVtiKzJdPXRoaXMuX3o7YVtiKzNdPXRoaXMuX29yZGVyO3JldHVybiBhfSx0b1ZlY3RvcjM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5zZXQodGhpcy5feCx0aGlzLl95LHRoaXMuX3opOm5ldyBuKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX0sX29uQ2hhbmdlOmZ1bmN0aW9uKGEpe3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9YTtyZXR1cm4gdGhpc30sX29uQ2hhbmdlQ2FsbGJhY2s6ZnVuY3Rpb24oKXt9fSk7T2JqZWN0LmFzc2lnbihUZi5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhKXt0aGlzLm1hc2s9MTw8YXwwfSxlbmFibGU6ZnVuY3Rpb24oYSl7dGhpcy5tYXNrPXRoaXMubWFza3wxPDxhfDB9LGVuYWJsZUFsbDpmdW5jdGlvbigpe3RoaXMubWFzaz0tMX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3RoaXMubWFza149MTw8YXwwfSxkaXNhYmxlOmZ1bmN0aW9uKGEpe3RoaXMubWFzayY9figxPDxhfAowKX0sZGlzYWJsZUFsbDpmdW5jdGlvbigpe3RoaXMubWFzaz0wfSx0ZXN0OmZ1bmN0aW9uKGEpe3JldHVybiAwIT09KHRoaXMubWFzayZhLm1hc2spfX0pO3ZhciBUaT0wLG9pPW5ldyBuLG1kPW5ldyB3YSx2Yj1uZXcgUSx2Zj1uZXcgbix4ZT1uZXcgbix2az1uZXcgbix3az1uZXcgd2EscGk9bmV3IG4oMSwwLDApLHFpPW5ldyBuKDAsMSwwKSxyaT1uZXcgbigwLDAsMSkseGs9e3R5cGU6ImFkZGVkIn0seWs9e3R5cGU6InJlbW92ZWQifTtFLkRlZmF1bHRVcD1uZXcgbigwLDEsMCk7RS5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZT0hMDtFLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQWEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6RSxpc09iamVjdDNEOiEwLG9uQmVmb3JlUmVuZGVyOmZ1bmN0aW9uKCl7fSxvbkFmdGVyUmVuZGVyOmZ1bmN0aW9uKCl7fSxhcHBseU1hdHJpeDpmdW5jdGlvbihhKXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCk7CnRoaXMubWF0cml4LnByZW11bHRpcGx5KGEpO3RoaXMubWF0cml4LmRlY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKX0sYXBwbHlRdWF0ZXJuaW9uOmZ1bmN0aW9uKGEpe3RoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShhKTtyZXR1cm4gdGhpc30sc2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlOmZ1bmN0aW9uKGEsYil7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoYSxiKX0sc2V0Um90YXRpb25Gcm9tRXVsZXI6ZnVuY3Rpb24oYSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcihhLCEwKX0sc2V0Um90YXRpb25Gcm9tTWF0cml4OmZ1bmN0aW9uKGEpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgoYSl9LHNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb246ZnVuY3Rpb24oYSl7dGhpcy5xdWF0ZXJuaW9uLmNvcHkoYSl9LHJvdGF0ZU9uQXhpczpmdW5jdGlvbihhLGIpe21kLnNldEZyb21BeGlzQW5nbGUoYSxiKTsKdGhpcy5xdWF0ZXJuaW9uLm11bHRpcGx5KG1kKTtyZXR1cm4gdGhpc30scm90YXRlT25Xb3JsZEF4aXM6ZnVuY3Rpb24oYSxiKXttZC5zZXRGcm9tQXhpc0FuZ2xlKGEsYik7dGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KG1kKTtyZXR1cm4gdGhpc30scm90YXRlWDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMocGksYSl9LHJvdGF0ZVk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKHFpLGEpfSxyb3RhdGVaOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhyaSxhKX0sdHJhbnNsYXRlT25BeGlzOmZ1bmN0aW9uKGEsYil7b2kuY29weShhKS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKTt0aGlzLnBvc2l0aW9uLmFkZChvaS5tdWx0aXBseVNjYWxhcihiKSk7cmV0dXJuIHRoaXN9LHRyYW5zbGF0ZVg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKHBpLGEpfSx0cmFuc2xhdGVZOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhxaSwKYSl9LHRyYW5zbGF0ZVo6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKHJpLGEpfSxsb2NhbFRvV29ybGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpfSx3b3JsZFRvTG9jYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwbHlNYXRyaXg0KHZiLmdldEludmVyc2UodGhpcy5tYXRyaXhXb3JsZCkpfSxsb29rQXQ6ZnVuY3Rpb24oYSxiLGMpe2EuaXNWZWN0b3IzP3ZmLmNvcHkoYSk6dmYuc2V0KGEsYixjKTthPXRoaXMucGFyZW50O3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO3hlLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTt0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/dmIubG9va0F0KHhlLHZmLHRoaXMudXApOnZiLmxvb2tBdCh2Zix4ZSx0aGlzLnVwKTt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHZiKTthJiYodmIuZXh0cmFjdFJvdGF0aW9uKGEubWF0cml4V29ybGQpLAptZC5zZXRGcm9tUm90YXRpb25NYXRyaXgodmIpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShtZC5pbnZlcnNlKCkpKX0sYWRkOmZ1bmN0aW9uKGEpe2lmKDE8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKyl0aGlzLmFkZChhcmd1bWVudHNbYl0pO3JldHVybiB0aGlzfWlmKGE9PT10aGlzKXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBjYW4ndCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIGl0c2VsZi4iLGEpLHRoaXM7YSYmYS5pc09iamVjdDNEPyhudWxsIT09YS5wYXJlbnQmJmEucGFyZW50LnJlbW92ZShhKSxhLnBhcmVudD10aGlzLHRoaXMuY2hpbGRyZW4ucHVzaChhKSxhLmRpc3BhdGNoRXZlbnQoeGspKTpjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuT2JqZWN0M0QuIixhKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKGEpe2lmKDE8CmFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW2JdKTtyZXR1cm4gdGhpc31iPXRoaXMuY2hpbGRyZW4uaW5kZXhPZihhKTstMSE9PWImJihhLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW4uc3BsaWNlKGIsMSksYS5kaXNwYXRjaEV2ZW50KHlrKSk7cmV0dXJuIHRoaXN9LGF0dGFjaDpmdW5jdGlvbihhKXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTt2Yi5nZXRJbnZlcnNlKHRoaXMubWF0cml4V29ybGQpO251bGwhPT1hLnBhcmVudCYmKGEucGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx2Yi5tdWx0aXBseShhLnBhcmVudC5tYXRyaXhXb3JsZCkpO2EuYXBwbHlNYXRyaXgodmIpO2EudXBkYXRlV29ybGRNYXRyaXgoITEsITEpO3RoaXMuYWRkKGEpO3JldHVybiB0aGlzfSxnZXRPYmplY3RCeUlkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoImlkIiwKYSl9LGdldE9iamVjdEJ5TmFtZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJuYW1lIixhKX0sZ2V0T2JqZWN0QnlQcm9wZXJ0eTpmdW5jdGlvbihhLGIpe2lmKHRoaXNbYV09PT1iKXJldHVybiB0aGlzO2Zvcih2YXIgYz0wLGQ9dGhpcy5jaGlsZHJlbi5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9dGhpcy5jaGlsZHJlbltjXS5nZXRPYmplY3RCeVByb3BlcnR5KGEsYik7aWYodm9pZCAwIT09ZSlyZXR1cm4gZX19LGdldFdvcmxkUG9zaXRpb246ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFBvc2l0aW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IG4pO3RoaXMudXBkYXRlTWF0cml4V29ybGQoITApO3JldHVybiBhLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKX0sZ2V0V29ybGRRdWF0ZXJuaW9uOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRRdWF0ZXJuaW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLAphPW5ldyB3YSk7dGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCk7dGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoeGUsYSx2ayk7cmV0dXJuIGF9LGdldFdvcmxkU2NhbGU6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFNjYWxlKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IG4pO3RoaXMudXBkYXRlTWF0cml4V29ybGQoITApO3RoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKHhlLHdrLGEpO3JldHVybiBhfSxnZXRXb3JsZERpcmVjdGlvbjpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkRGlyZWN0aW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IG4pO3RoaXMudXBkYXRlTWF0cml4V29ybGQoITApO3ZhciBiPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIGEuc2V0KGJbOF0sYls5XSxiWzEwXSkubm9ybWFsaXplKCl9LApyYXljYXN0OmZ1bmN0aW9uKCl7fSx0cmF2ZXJzZTpmdW5jdGlvbihhKXthKHRoaXMpO2Zvcih2YXIgYj10aGlzLmNoaWxkcmVuLGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYltjXS50cmF2ZXJzZShhKX0sdHJhdmVyc2VWaXNpYmxlOmZ1bmN0aW9uKGEpe2lmKCExIT09dGhpcy52aXNpYmxlKXthKHRoaXMpO2Zvcih2YXIgYj10aGlzLmNoaWxkcmVuLGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYltjXS50cmF2ZXJzZVZpc2libGUoYSl9fSx0cmF2ZXJzZUFuY2VzdG9yczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnBhcmVudDtudWxsIT09YiYmKGEoYiksYi50cmF2ZXJzZUFuY2VzdG9ycyhhKSl9LHVwZGF0ZU1hdHJpeDpmdW5jdGlvbigpe3RoaXMubWF0cml4LmNvbXBvc2UodGhpcy5wb3NpdGlvbix0aGlzLnF1YXRlcm5pb24sdGhpcy5zY2FsZSk7dGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfSx1cGRhdGVNYXRyaXhXb3JsZDpmdW5jdGlvbihhKXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJgp0aGlzLnVwZGF0ZU1hdHJpeCgpO2lmKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8YSludWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSxhPSEwO2Zvcih2YXIgYj10aGlzLmNoaWxkcmVuLGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYltjXS51cGRhdGVNYXRyaXhXb3JsZChhKX0sdXBkYXRlV29ybGRNYXRyaXg6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnBhcmVudDshMD09PWEmJm51bGwhPT1jJiZjLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCk7bnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLAp0aGlzLm1hdHJpeCk7aWYoITA9PT1iKWZvcihhPXRoaXMuY2hpbGRyZW4sYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylhW2JdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX0sdG9KU09OOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYixjKXt2b2lkIDA9PT1iW2MudXVpZF0mJihiW2MudXVpZF09Yy50b0pTT04oYSkpO3JldHVybiBjLnV1aWR9ZnVuY3Rpb24gYyhhKXt2YXIgYj1bXSxjO2ZvcihjIGluIGEpe3ZhciBkPWFbY107ZGVsZXRlIGQubWV0YWRhdGE7Yi5wdXNoKGQpfXJldHVybiBifXZhciBkPXZvaWQgMD09PWF8fCJzdHJpbmciPT09dHlwZW9mIGEsZT17fTtkJiYoYT17Z2VvbWV0cmllczp7fSxtYXRlcmlhbHM6e30sdGV4dHVyZXM6e30saW1hZ2VzOnt9LHNoYXBlczp7fX0sZS5tZXRhZGF0YT17dmVyc2lvbjo0LjUsdHlwZToiT2JqZWN0IixnZW5lcmF0b3I6Ik9iamVjdDNELnRvSlNPTiJ9KTt2YXIgZj17fTtmLnV1aWQ9dGhpcy51dWlkO2YudHlwZT10aGlzLnR5cGU7IiIhPT0KdGhpcy5uYW1lJiYoZi5uYW1lPXRoaXMubmFtZSk7ITA9PT10aGlzLmNhc3RTaGFkb3cmJihmLmNhc3RTaGFkb3c9ITApOyEwPT09dGhpcy5yZWNlaXZlU2hhZG93JiYoZi5yZWNlaXZlU2hhZG93PSEwKTshMT09PXRoaXMudmlzaWJsZSYmKGYudmlzaWJsZT0hMSk7ITE9PT10aGlzLmZydXN0dW1DdWxsZWQmJihmLmZydXN0dW1DdWxsZWQ9ITEpOzAhPT10aGlzLnJlbmRlck9yZGVyJiYoZi5yZW5kZXJPcmRlcj10aGlzLnJlbmRlck9yZGVyKTsie30iIT09SlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkmJihmLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpO2YubGF5ZXJzPXRoaXMubGF5ZXJzLm1hc2s7Zi5tYXRyaXg9dGhpcy5tYXRyaXgudG9BcnJheSgpOyExPT09dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiYoZi5tYXRyaXhBdXRvVXBkYXRlPSExKTt0aGlzLmlzTWVzaCYmMCE9PXRoaXMuZHJhd01vZGUmJihmLmRyYXdNb2RlPXRoaXMuZHJhd01vZGUpO3RoaXMuaXNJbnN0YW5jZWRNZXNoJiYKKGYudHlwZT0iSW5zdGFuY2VkTWVzaCIsZi5jb3VudD10aGlzLmNvdW50LGYuaW5zdGFuY2VNYXRyaXg9dGhpcy5pbnN0YW5jZU1hdHJpeC50b0pTT04oKSk7aWYodGhpcy5pc01lc2h8fHRoaXMuaXNMaW5lfHx0aGlzLmlzUG9pbnRzKXtmLmdlb21ldHJ5PWIoYS5nZW9tZXRyaWVzLHRoaXMuZ2VvbWV0cnkpO3ZhciBnPXRoaXMuZ2VvbWV0cnkucGFyYW1ldGVycztpZih2b2lkIDAhPT1nJiZ2b2lkIDAhPT1nLnNoYXBlcylpZihnPWcuc2hhcGVzLEFycmF5LmlzQXJyYXkoZykpZm9yKHZhciBoPTAsbD1nLmxlbmd0aDtoPGw7aCsrKWIoYS5zaGFwZXMsZ1toXSk7ZWxzZSBiKGEuc2hhcGVzLGcpfWlmKHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7Zz1bXTtoPTA7Zm9yKGw9dGhpcy5tYXRlcmlhbC5sZW5ndGg7aDxsO2grKylnLnB1c2goYihhLm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsW2hdKSk7Zi5tYXRlcmlhbD1nfWVsc2UgZi5tYXRlcmlhbD0KYihhLm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsKTtpZigwPHRoaXMuY2hpbGRyZW4ubGVuZ3RoKWZvcihmLmNoaWxkcmVuPVtdLGg9MDtoPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2grKylmLmNoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltoXS50b0pTT04oYSkub2JqZWN0KTtpZihkKXtkPWMoYS5nZW9tZXRyaWVzKTtoPWMoYS5tYXRlcmlhbHMpO2w9YyhhLnRleHR1cmVzKTt2YXIgbT1jKGEuaW1hZ2VzKTtnPWMoYS5zaGFwZXMpOzA8ZC5sZW5ndGgmJihlLmdlb21ldHJpZXM9ZCk7MDxoLmxlbmd0aCYmKGUubWF0ZXJpYWxzPWgpOzA8bC5sZW5ndGgmJihlLnRleHR1cmVzPWwpOzA8bS5sZW5ndGgmJihlLmltYWdlcz1tKTswPGcubGVuZ3RoJiYoZS5zaGFwZXM9Zyl9ZS5vYmplY3Q9ZjtyZXR1cm4gZX0sY2xvbmU6ZnVuY3Rpb24oYSl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMsYSl9LGNvcHk6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0hMCk7dGhpcy5uYW1lPQphLm5hbWU7dGhpcy51cC5jb3B5KGEudXApO3RoaXMucG9zaXRpb24uY29weShhLnBvc2l0aW9uKTt0aGlzLnF1YXRlcm5pb24uY29weShhLnF1YXRlcm5pb24pO3RoaXMuc2NhbGUuY29weShhLnNjYWxlKTt0aGlzLm1hdHJpeC5jb3B5KGEubWF0cml4KTt0aGlzLm1hdHJpeFdvcmxkLmNvcHkoYS5tYXRyaXhXb3JsZCk7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPWEubWF0cml4QXV0b1VwZGF0ZTt0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9YS5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlO3RoaXMubGF5ZXJzLm1hc2s9YS5sYXllcnMubWFzazt0aGlzLnZpc2libGU9YS52aXNpYmxlO3RoaXMuY2FzdFNoYWRvdz1hLmNhc3RTaGFkb3c7dGhpcy5yZWNlaXZlU2hhZG93PWEucmVjZWl2ZVNoYWRvdzt0aGlzLmZydXN0dW1DdWxsZWQ9YS5mcnVzdHVtQ3VsbGVkO3RoaXMucmVuZGVyT3JkZXI9YS5yZW5kZXJPcmRlcjt0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYS51c2VyRGF0YSkpOwppZighMD09PWIpZm9yKGI9MDtiPGEuY2hpbGRyZW4ubGVuZ3RoO2IrKyl0aGlzLmFkZChhLmNoaWxkcmVuW2JdLmNsb25lKCkpO3JldHVybiB0aGlzfX0pO3ZkLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp2ZCxpc1NjZW5lOiEwLGNvcHk6ZnVuY3Rpb24oYSxiKXtFLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhLGIpO251bGwhPT1hLmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQ9YS5iYWNrZ3JvdW5kLmNsb25lKCkpO251bGwhPT1hLmZvZyYmKHRoaXMuZm9nPWEuZm9nLmNsb25lKCkpO251bGwhPT1hLm92ZXJyaWRlTWF0ZXJpYWwmJih0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9YS5vdmVycmlkZU1hdGVyaWFsLmNsb25lKCkpO3RoaXMuYXV0b1VwZGF0ZT1hLmF1dG9VcGRhdGU7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPWEubWF0cml4QXV0b1VwZGF0ZTtyZXR1cm4gdGhpc30sdG9KU09OOmZ1bmN0aW9uKGEpe3ZhciBiPQpFLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLGEpO251bGwhPT10aGlzLmJhY2tncm91bmQmJihiLm9iamVjdC5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04oYSkpO251bGwhPT10aGlzLmZvZyYmKGIub2JqZWN0LmZvZz10aGlzLmZvZy50b0pTT04oKSk7cmV0dXJuIGJ9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSk7dmFyIHdiPVtuZXcgbixuZXcgbixuZXcgbixuZXcgbixuZXcgbixuZXcgbixuZXcgbixuZXcgbl0saWI9bmV3IG4sbmQ9bmV3IG4sb2Q9bmV3IG4scGQ9bmV3IG4sTGI9bmV3IG4sTWI9bmV3IG4scGM9bmV3IG4seWU9bmV3IG4sd2Y9bmV3IG4seGY9bmV3IG4sUWI9bmV3IG47T2JqZWN0LmFzc2lnbihhYi5wcm90b3R5cGUse2lzQm94MzohMCxzZXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLm1pbi5jb3B5KGEpO3RoaXMubWF4LmNvcHkoYik7cmV0dXJuIHRoaXN9LHNldEZyb21BcnJheTpmdW5jdGlvbihhKXtmb3IodmFyIGI9CkluZmluaXR5LGM9SW5maW5pdHksZD1JbmZpbml0eSxlPS1JbmZpbml0eSxmPS1JbmZpbml0eSxnPS1JbmZpbml0eSxoPTAsbD1hLmxlbmd0aDtoPGw7aCs9Myl7dmFyIG09YVtoXSxrPWFbaCsxXSxuPWFbaCsyXTttPGImJihiPW0pO2s8YyYmKGM9ayk7bjxkJiYoZD1uKTttPmUmJihlPW0pO2s+ZiYmKGY9ayk7bj5nJiYoZz1uKX10aGlzLm1pbi5zZXQoYixjLGQpO3RoaXMubWF4LnNldChlLGYsZyk7cmV0dXJuIHRoaXN9LHNldEZyb21CdWZmZXJBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPUluZmluaXR5LGM9SW5maW5pdHksZD1JbmZpbml0eSxlPS1JbmZpbml0eSxmPS1JbmZpbml0eSxnPS1JbmZpbml0eSxoPTAsbD1hLmNvdW50O2g8bDtoKyspe3ZhciBtPWEuZ2V0WChoKSxrPWEuZ2V0WShoKSxuPWEuZ2V0WihoKTttPGImJihiPW0pO2s8YyYmKGM9ayk7bjxkJiYoZD1uKTttPmUmJihlPW0pO2s+ZiYmKGY9ayk7bj5nJiYoZz1uKX10aGlzLm1pbi5zZXQoYixjLGQpOwp0aGlzLm1heC5zZXQoZSxmLGcpO3JldHVybiB0aGlzfSxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKGEpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXRoaXMuZXhwYW5kQnlQb2ludChhW2JdKTtyZXR1cm4gdGhpc30sc2V0RnJvbUNlbnRlckFuZFNpemU6ZnVuY3Rpb24oYSxiKXtiPWliLmNvcHkoYikubXVsdGlwbHlTY2FsYXIoLjUpO3RoaXMubWluLmNvcHkoYSkuc3ViKGIpO3RoaXMubWF4LmNvcHkoYSkuYWRkKGIpO3JldHVybiB0aGlzfSxzZXRGcm9tT2JqZWN0OmZ1bmN0aW9uKGEpe3RoaXMubWFrZUVtcHR5KCk7cmV0dXJuIHRoaXMuZXhwYW5kQnlPYmplY3QoYSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMubWluLmNvcHkoYS5taW4pO3RoaXMubWF4LmNvcHkoYS5tYXgpO3JldHVybiB0aGlzfSxtYWtlRW1wdHk6ZnVuY3Rpb24oKXt0aGlzLm1pbi54PQp0aGlzLm1pbi55PXRoaXMubWluLno9SW5maW5pdHk7dGhpcy5tYXgueD10aGlzLm1heC55PXRoaXMubWF4Lno9LUluZmluaXR5O3JldHVybiB0aGlzfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fHx0aGlzLm1heC56PHRoaXMubWluLnp9LGdldENlbnRlcjpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZ2V0Q2VudGVyKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IG4pO3JldHVybiB0aGlzLmlzRW1wdHkoKT9hLnNldCgwLDAsMCk6YS5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9LGdldFNpemU6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmdldFNpemUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgbik7cmV0dXJuIHRoaXMuaXNFbXB0eSgpPwphLnNldCgwLDAsMCk6YS5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX0sZXhwYW5kQnlQb2ludDpmdW5jdGlvbihhKXt0aGlzLm1pbi5taW4oYSk7dGhpcy5tYXgubWF4KGEpO3JldHVybiB0aGlzfSxleHBhbmRCeVZlY3RvcjpmdW5jdGlvbihhKXt0aGlzLm1pbi5zdWIoYSk7dGhpcy5tYXguYWRkKGEpO3JldHVybiB0aGlzfSxleHBhbmRCeVNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLm1pbi5hZGRTY2FsYXIoLWEpO3RoaXMubWF4LmFkZFNjYWxhcihhKTtyZXR1cm4gdGhpc30sZXhwYW5kQnlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7YS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7dmFyIGM9YS5nZW9tZXRyeTtpZih2b2lkIDAhPT1jKWlmKGMuaXNHZW9tZXRyeSl7dmFyIGQ9Yy52ZXJ0aWNlcztjPTA7Zm9yKGI9ZC5sZW5ndGg7YzxiO2MrKylpYi5jb3B5KGRbY10pLGliLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKSx0aGlzLmV4cGFuZEJ5UG9pbnQoaWIpfWVsc2UgaWYoYy5pc0J1ZmZlckdlb21ldHJ5JiYKKGQ9Yy5hdHRyaWJ1dGVzLnBvc2l0aW9uLHZvaWQgMCE9PWQpKWZvcihjPTAsYj1kLmNvdW50O2M8YjtjKyspaWIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShkLGMpLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKSx0aGlzLmV4cGFuZEJ5UG9pbnQoaWIpO2E9YS5jaGlsZHJlbjtjPTA7Zm9yKGI9YS5sZW5ndGg7YzxiO2MrKyl0aGlzLmV4cGFuZEJ5T2JqZWN0KGFbY10pO3JldHVybiB0aGlzfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBhLng8dGhpcy5taW4ueHx8YS54PnRoaXMubWF4Lnh8fGEueTx0aGlzLm1pbi55fHxhLnk+dGhpcy5tYXgueXx8YS56PHRoaXMubWluLnp8fGEuej50aGlzLm1heC56PyExOiEwfSxjb250YWluc0JveDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5taW4ueDw9YS5taW4ueCYmYS5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9YS5taW4ueSYmYS5tYXgueTw9dGhpcy5tYXgueSYmdGhpcy5taW4uejw9YS5taW4ueiYmYS5tYXguejw9CnRoaXMubWF4Lnp9LGdldFBhcmFtZXRlcjpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5nZXRQYXJhbWV0ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYj1uZXcgbik7cmV0dXJuIGIuc2V0KChhLngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKGEueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSwoYS56LXRoaXMubWluLnopLyh0aGlzLm1heC56LXRoaXMubWluLnopKX0saW50ZXJzZWN0c0JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXgueDx0aGlzLm1pbi54fHxhLm1pbi54PnRoaXMubWF4Lnh8fGEubWF4Lnk8dGhpcy5taW4ueXx8YS5taW4ueT50aGlzLm1heC55fHxhLm1heC56PHRoaXMubWluLnp8fGEubWluLno+dGhpcy5tYXguej8hMTohMH0saW50ZXJzZWN0c1NwaGVyZTpmdW5jdGlvbihhKXt0aGlzLmNsYW1wUG9pbnQoYS5jZW50ZXIsaWIpO3JldHVybiBpYi5kaXN0YW5jZVRvU3F1YXJlZChhLmNlbnRlcik8PQphLnJhZGl1cyphLnJhZGl1c30saW50ZXJzZWN0c1BsYW5lOmZ1bmN0aW9uKGEpe2lmKDA8YS5ub3JtYWwueCl7dmFyIGI9YS5ub3JtYWwueCp0aGlzLm1pbi54O3ZhciBjPWEubm9ybWFsLngqdGhpcy5tYXgueH1lbHNlIGI9YS5ub3JtYWwueCp0aGlzLm1heC54LGM9YS5ub3JtYWwueCp0aGlzLm1pbi54OzA8YS5ub3JtYWwueT8oYis9YS5ub3JtYWwueSp0aGlzLm1pbi55LGMrPWEubm9ybWFsLnkqdGhpcy5tYXgueSk6KGIrPWEubm9ybWFsLnkqdGhpcy5tYXgueSxjKz1hLm5vcm1hbC55KnRoaXMubWluLnkpOzA8YS5ub3JtYWwuej8oYis9YS5ub3JtYWwueip0aGlzLm1pbi56LGMrPWEubm9ybWFsLnoqdGhpcy5tYXgueik6KGIrPWEubm9ybWFsLnoqdGhpcy5tYXgueixjKz1hLm5vcm1hbC56KnRoaXMubWluLnopO3JldHVybiBiPD0tYS5jb25zdGFudCYmYz49LWEuY29uc3RhbnR9LGludGVyc2VjdHNUcmlhbmdsZTpmdW5jdGlvbihhKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4hMTsKdGhpcy5nZXRDZW50ZXIoeWUpO3dmLnN1YlZlY3RvcnModGhpcy5tYXgseWUpO25kLnN1YlZlY3RvcnMoYS5hLHllKTtvZC5zdWJWZWN0b3JzKGEuYix5ZSk7cGQuc3ViVmVjdG9ycyhhLmMseWUpO0xiLnN1YlZlY3RvcnMob2QsbmQpO01iLnN1YlZlY3RvcnMocGQsb2QpO3BjLnN1YlZlY3RvcnMobmQscGQpO2E9WzAsLUxiLnosTGIueSwwLC1NYi56LE1iLnksMCwtcGMueixwYy55LExiLnosMCwtTGIueCxNYi56LDAsLU1iLngscGMueiwwLC1wYy54LC1MYi55LExiLngsMCwtTWIueSxNYi54LDAsLXBjLnkscGMueCwwXTtpZighVWYoYSxuZCxvZCxwZCx3ZikpcmV0dXJuITE7YT1bMSwwLDAsMCwxLDAsMCwwLDFdO2lmKCFVZihhLG5kLG9kLHBkLHdmKSlyZXR1cm4hMTt4Zi5jcm9zc1ZlY3RvcnMoTGIsTWIpO2E9W3hmLngseGYueSx4Zi56XTtyZXR1cm4gVWYoYSxuZCxvZCxwZCx3Zil9LGNsYW1wUG9pbnQ6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSwKYj1uZXcgbik7cmV0dXJuIGIuY29weShhKS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9LGRpc3RhbmNlVG9Qb2ludDpmdW5jdGlvbihhKXtyZXR1cm4gaWIuY29weShhKS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKGEpLmxlbmd0aCgpfSxnZXRCb3VuZGluZ1NwaGVyZTpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiZjb25zb2xlLmVycm9yKCJUSFJFRS5Cb3gzOiAuZ2V0Qm91bmRpbmdTcGhlcmUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIik7dGhpcy5nZXRDZW50ZXIoYS5jZW50ZXIpO2EucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShpYikubGVuZ3RoKCk7cmV0dXJuIGF9LGludGVyc2VjdDpmdW5jdGlvbihhKXt0aGlzLm1pbi5tYXgoYS5taW4pO3RoaXMubWF4Lm1pbihhLm1heCk7dGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCk7cmV0dXJuIHRoaXN9LHVuaW9uOmZ1bmN0aW9uKGEpe3RoaXMubWluLm1pbihhLm1pbik7dGhpcy5tYXgubWF4KGEubWF4KTtyZXR1cm4gdGhpc30sCmFwcGx5TWF0cml4NDpmdW5jdGlvbihhKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gdGhpczt3YlswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NChhKTt3YlsxXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NChhKTt3YlsyXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NChhKTt3YlszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NChhKTt3Yls0XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NChhKTt3Yls1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NChhKTt3Yls2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NChhKTt3Yls3XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LAp0aGlzLm1heC56KS5hcHBseU1hdHJpeDQoYSk7dGhpcy5zZXRGcm9tUG9pbnRzKHdiKTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEpe3RoaXMubWluLmFkZChhKTt0aGlzLm1heC5hZGQoYSk7cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5taW4uZXF1YWxzKHRoaXMubWluKSYmYS5tYXguZXF1YWxzKHRoaXMubWF4KX19KTt2YXIgems9bmV3IGFiO09iamVjdC5hc3NpZ24obWIucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLmNlbnRlci5jb3B5KGEpO3RoaXMucmFkaXVzPWI7cmV0dXJuIHRoaXN9LHNldEZyb21Qb2ludHM6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNlbnRlcjt2b2lkIDAhPT1iP2MuY29weShiKTp6ay5zZXRGcm9tUG9pbnRzKGEpLmdldENlbnRlcihjKTtmb3IodmFyIGQ9Yj0wLGU9YS5sZW5ndGg7ZDxlO2QrKyliPU1hdGgubWF4KGIsYy5kaXN0YW5jZVRvU3F1YXJlZChhW2RdKSk7dGhpcy5yYWRpdXM9TWF0aC5zcXJ0KGIpOwpyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5jZW50ZXIuY29weShhLmNlbnRlcik7dGhpcy5yYWRpdXM9YS5yYWRpdXM7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIDA+PXRoaXMucmFkaXVzfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXN9LGRpc3RhbmNlVG9Qb2ludDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXN0YW5jZVRvKHRoaXMuY2VudGVyKS10aGlzLnJhZGl1c30saW50ZXJzZWN0c1NwaGVyZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnJhZGl1cythLnJhZGl1cztyZXR1cm4gYS5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD1iKmJ9LGludGVyc2VjdHNCb3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW50ZXJzZWN0c1NwaGVyZSh0aGlzKX0sCmludGVyc2VjdHNQbGFuZTpmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5hYnMoYS5kaXN0YW5jZVRvUG9pbnQodGhpcy5jZW50ZXIpKTw9dGhpcy5yYWRpdXN9LGNsYW1wUG9pbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZChhKTt2b2lkIDA9PT1iJiYoY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5jbGFtcFBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGI9bmV3IG4pO2IuY29weShhKTtjPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzJiYoYi5zdWIodGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLGIubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpLmFkZCh0aGlzLmNlbnRlcikpO3JldHVybiBifSxnZXRCb3VuZGluZ0JveDpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5nZXRCb3VuZGluZ0JveCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxhPW5ldyBhYik7YS5zZXQodGhpcy5jZW50ZXIsCnRoaXMuY2VudGVyKTthLmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKTtyZXR1cm4gYX0sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKGEpe3RoaXMuY2VudGVyLmFwcGx5TWF0cml4NChhKTt0aGlzLnJhZGl1cyo9YS5nZXRNYXhTY2FsZU9uQXhpcygpO3JldHVybiB0aGlzfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSl7dGhpcy5jZW50ZXIuYWRkKGEpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJmEucmFkaXVzPT09dGhpcy5yYWRpdXN9fSk7dmFyIHhiPW5ldyBuLE5nPW5ldyBuLHlmPW5ldyBuLE5iPW5ldyBuLE9nPW5ldyBuLHpmPW5ldyBuLFBnPW5ldyBuO09iamVjdC5hc3NpZ24oUmIucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLm9yaWdpbi5jb3B5KGEpO3RoaXMuZGlyZWN0aW9uLmNvcHkoYik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSwKY29weTpmdW5jdGlvbihhKXt0aGlzLm9yaWdpbi5jb3B5KGEub3JpZ2luKTt0aGlzLmRpcmVjdGlvbi5jb3B5KGEuZGlyZWN0aW9uKTtyZXR1cm4gdGhpc30sYXQ6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5hdCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxiPW5ldyBuKTtyZXR1cm4gYi5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihhKS5hZGQodGhpcy5vcmlnaW4pfSxsb29rQXQ6ZnVuY3Rpb24oYSl7dGhpcy5kaXJlY3Rpb24uY29weShhKS5zdWIodGhpcy5vcmlnaW4pLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzfSxyZWNhc3Q6ZnVuY3Rpb24oYSl7dGhpcy5vcmlnaW4uY29weSh0aGlzLmF0KGEseGIpKTtyZXR1cm4gdGhpc30sY2xvc2VzdFBvaW50VG9Qb2ludDpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmNsb3Nlc3RQb2ludFRvUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksCmI9bmV3IG4pO2Iuc3ViVmVjdG9ycyhhLHRoaXMub3JpZ2luKTthPWIuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gMD5hP2IuY29weSh0aGlzLm9yaWdpbik6Yi5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihhKS5hZGQodGhpcy5vcmlnaW4pfSxkaXN0YW5jZVRvUG9pbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlU3FUb1BvaW50KGEpKX0sZGlzdGFuY2VTcVRvUG9pbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9eGIuc3ViVmVjdG9ycyhhLHRoaXMub3JpZ2luKS5kb3QodGhpcy5kaXJlY3Rpb24pO2lmKDA+YilyZXR1cm4gdGhpcy5vcmlnaW4uZGlzdGFuY2VUb1NxdWFyZWQoYSk7eGIuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoYikuYWRkKHRoaXMub3JpZ2luKTtyZXR1cm4geGIuZGlzdGFuY2VUb1NxdWFyZWQoYSl9LGRpc3RhbmNlU3FUb1NlZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7TmcuY29weShhKS5hZGQoYikubXVsdGlwbHlTY2FsYXIoLjUpOwp5Zi5jb3B5KGIpLnN1YihhKS5ub3JtYWxpemUoKTtOYi5jb3B5KHRoaXMub3JpZ2luKS5zdWIoTmcpO3ZhciBlPS41KmEuZGlzdGFuY2VUbyhiKSxmPS10aGlzLmRpcmVjdGlvbi5kb3QoeWYpLGc9TmIuZG90KHRoaXMuZGlyZWN0aW9uKSxoPS1OYi5kb3QoeWYpLGw9TmIubGVuZ3RoU3EoKSxtPU1hdGguYWJzKDEtZipmKTtpZigwPG0pe2E9ZipoLWc7Yj1mKmctaDt2YXIgaz1lKm07MDw9YT9iPj0taz9iPD1rPyhlPTEvbSxhKj1lLGIqPWUsZj1hKihhK2YqYisyKmcpK2IqKGYqYStiKzIqaCkrbCk6KGI9ZSxhPU1hdGgubWF4KDAsLShmKmIrZykpLGY9LWEqYStiKihiKzIqaCkrbCk6KGI9LWUsYT1NYXRoLm1heCgwLC0oZipiK2cpKSxmPS1hKmErYiooYisyKmgpK2wpOmI8PS1rPyhhPU1hdGgubWF4KDAsLSgtZiplK2cpKSxiPTA8YT8tZTpNYXRoLm1pbihNYXRoLm1heCgtZSwtaCksZSksZj0tYSphK2IqKGIrMipoKStsKTpiPD1rPyhhPTAsYj1NYXRoLm1pbihNYXRoLm1heCgtZSwKLWgpLGUpLGY9YiooYisyKmgpK2wpOihhPU1hdGgubWF4KDAsLShmKmUrZykpLGI9MDxhP2U6TWF0aC5taW4oTWF0aC5tYXgoLWUsLWgpLGUpLGY9LWEqYStiKihiKzIqaCkrbCl9ZWxzZSBiPTA8Zj8tZTplLGE9TWF0aC5tYXgoMCwtKGYqYitnKSksZj0tYSphK2IqKGIrMipoKStsO2MmJmMuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoYSkuYWRkKHRoaXMub3JpZ2luKTtkJiZkLmNvcHkoeWYpLm11bHRpcGx5U2NhbGFyKGIpLmFkZChOZyk7cmV0dXJuIGZ9LGludGVyc2VjdFNwaGVyZTpmdW5jdGlvbihhLGIpe3hiLnN1YlZlY3RvcnMoYS5jZW50ZXIsdGhpcy5vcmlnaW4pO3ZhciBjPXhiLmRvdCh0aGlzLmRpcmVjdGlvbiksZD14Yi5kb3QoeGIpLWMqYzthPWEucmFkaXVzKmEucmFkaXVzO2lmKGQ+YSlyZXR1cm4gbnVsbDthPU1hdGguc3FydChhLWQpO2Q9Yy1hO2MrPWE7cmV0dXJuIDA+ZCYmMD5jP251bGw6MD5kP3RoaXMuYXQoYyxiKTp0aGlzLmF0KGQsYil9LAppbnRlcnNlY3RzU3BoZXJlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KGEuY2VudGVyKTw9YS5yYWRpdXMqYS5yYWRpdXN9LGRpc3RhbmNlVG9QbGFuZTpmdW5jdGlvbihhKXt2YXIgYj1hLm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pO2lmKDA9PT1iKXJldHVybiAwPT09YS5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pPzA6bnVsbDthPS0odGhpcy5vcmlnaW4uZG90KGEubm9ybWFsKSthLmNvbnN0YW50KS9iO3JldHVybiAwPD1hP2E6bnVsbH0saW50ZXJzZWN0UGxhbmU6ZnVuY3Rpb24oYSxiKXthPXRoaXMuZGlzdGFuY2VUb1BsYW5lKGEpO3JldHVybiBudWxsPT09YT9udWxsOnRoaXMuYXQoYSxiKX0saW50ZXJzZWN0c1BsYW5lOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKTtyZXR1cm4gMD09PWJ8fDA+YS5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKSpiPyEwOiExfSxpbnRlcnNlY3RCb3g6ZnVuY3Rpb24oYSwKYil7dmFyIGM9MS90aGlzLmRpcmVjdGlvbi54O3ZhciBkPTEvdGhpcy5kaXJlY3Rpb24ueTt2YXIgZT0xL3RoaXMuZGlyZWN0aW9uLnosZj10aGlzLm9yaWdpbjtpZigwPD1jKXt2YXIgZz0oYS5taW4ueC1mLngpKmM7Yyo9YS5tYXgueC1mLnh9ZWxzZSBnPShhLm1heC54LWYueCkqYyxjKj1hLm1pbi54LWYueDtpZigwPD1kKXt2YXIgaD0oYS5taW4ueS1mLnkpKmQ7ZCo9YS5tYXgueS1mLnl9ZWxzZSBoPShhLm1heC55LWYueSkqZCxkKj1hLm1pbi55LWYueTtpZihnPmR8fGg+YylyZXR1cm4gbnVsbDtpZihoPmd8fGchPT1nKWc9aDtpZihkPGN8fGMhPT1jKWM9ZDswPD1lPyhoPShhLm1pbi56LWYueikqZSxhPShhLm1heC56LWYueikqZSk6KGg9KGEubWF4LnotZi56KSplLGE9KGEubWluLnotZi56KSplKTtpZihnPmF8fGg+YylyZXR1cm4gbnVsbDtpZihoPmd8fGchPT1nKWc9aDtpZihhPGN8fGMhPT1jKWM9YTtyZXR1cm4gMD5jP251bGw6dGhpcy5hdCgwPD1nP2c6YyxiKX0saW50ZXJzZWN0c0JveDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9PQp0aGlzLmludGVyc2VjdEJveChhLHhiKX0saW50ZXJzZWN0VHJpYW5nbGU6ZnVuY3Rpb24oYSxiLGMsZCxlKXtPZy5zdWJWZWN0b3JzKGIsYSk7emYuc3ViVmVjdG9ycyhjLGEpO1BnLmNyb3NzVmVjdG9ycyhPZyx6Zik7Yj10aGlzLmRpcmVjdGlvbi5kb3QoUGcpO2lmKDA8Yil7aWYoZClyZXR1cm4gbnVsbDtkPTF9ZWxzZSBpZigwPmIpZD0tMSxiPS1iO2Vsc2UgcmV0dXJuIG51bGw7TmIuc3ViVmVjdG9ycyh0aGlzLm9yaWdpbixhKTthPWQqdGhpcy5kaXJlY3Rpb24uZG90KHpmLmNyb3NzVmVjdG9ycyhOYix6ZikpO2lmKDA+YSlyZXR1cm4gbnVsbDtjPWQqdGhpcy5kaXJlY3Rpb24uZG90KE9nLmNyb3NzKE5iKSk7aWYoMD5jfHxhK2M+YilyZXR1cm4gbnVsbDthPS1kKk5iLmRvdChQZyk7cmV0dXJuIDA+YT9udWxsOnRoaXMuYXQoYS9iLGUpfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24oYSl7dGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KGEpO3RoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihhKTsKcmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmYS5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX19KTt2YXIgUWc9bmV3IG4sQWs9bmV3IG4sQms9bmV3IFo7T2JqZWN0LmFzc2lnbihPYS5wcm90b3R5cGUse2lzUGxhbmU6ITAsc2V0OmZ1bmN0aW9uKGEsYil7dGhpcy5ub3JtYWwuY29weShhKTt0aGlzLmNvbnN0YW50PWI7cmV0dXJuIHRoaXN9LHNldENvbXBvbmVudHM6ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5ub3JtYWwuc2V0KGEsYixjKTt0aGlzLmNvbnN0YW50PWQ7cmV0dXJuIHRoaXN9LHNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50OmZ1bmN0aW9uKGEsYil7dGhpcy5ub3JtYWwuY29weShhKTt0aGlzLmNvbnN0YW50PS1iLmRvdCh0aGlzLm5vcm1hbCk7cmV0dXJuIHRoaXN9LHNldEZyb21Db3BsYW5hclBvaW50czpmdW5jdGlvbihhLGIsYyl7Yj1RZy5zdWJWZWN0b3JzKGMsYikuY3Jvc3MoQWsuc3ViVmVjdG9ycyhhLApiKSkubm9ybWFsaXplKCk7dGhpcy5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludChiLGEpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLm5vcm1hbC5jb3B5KGEubm9ybWFsKTt0aGlzLmNvbnN0YW50PWEuY29uc3RhbnQ7cmV0dXJuIHRoaXN9LG5vcm1hbGl6ZTpmdW5jdGlvbigpe3ZhciBhPTEvdGhpcy5ub3JtYWwubGVuZ3RoKCk7dGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIoYSk7dGhpcy5jb25zdGFudCo9YTtyZXR1cm4gdGhpc30sbmVnYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdGFudCo9LTE7dGhpcy5ub3JtYWwubmVnYXRlKCk7cmV0dXJuIHRoaXN9LGRpc3RhbmNlVG9Qb2ludDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KGEpK3RoaXMuY29uc3RhbnR9LGRpc3RhbmNlVG9TcGhlcmU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGlzdGFuY2VUb1BvaW50KGEuY2VudGVyKS0KYS5yYWRpdXN9LHByb2plY3RQb2ludDpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAucHJvamVjdFBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGI9bmV3IG4pO3JldHVybiBiLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludChhKSkuYWRkKGEpfSxpbnRlcnNlY3RMaW5lOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5pbnRlcnNlY3RMaW5lKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGI9bmV3IG4pO3ZhciBjPWEuZGVsdGEoUWcpLGQ9dGhpcy5ub3JtYWwuZG90KGMpO2lmKDA9PT1kKXtpZigwPT09dGhpcy5kaXN0YW5jZVRvUG9pbnQoYS5zdGFydCkpcmV0dXJuIGIuY29weShhLnN0YXJ0KX1lbHNlIGlmKGQ9LShhLnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvZCwhKDA+ZHx8MTxkKSlyZXR1cm4gYi5jb3B5KGMpLm11bHRpcGx5U2NhbGFyKGQpLmFkZChhLnN0YXJ0KX0sCmludGVyc2VjdHNMaW5lOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZGlzdGFuY2VUb1BvaW50KGEuc3RhcnQpO2E9dGhpcy5kaXN0YW5jZVRvUG9pbnQoYS5lbmQpO3JldHVybiAwPmImJjA8YXx8MD5hJiYwPGJ9LGludGVyc2VjdHNCb3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfSxpbnRlcnNlY3RzU3BoZXJlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmludGVyc2VjdHNQbGFuZSh0aGlzKX0sY29wbGFuYXJQb2ludDpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmNvcGxhbmFyUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgbik7cmV0dXJuIGEuY29weSh0aGlzLm5vcm1hbCkubXVsdGlwbHlTY2FsYXIoLXRoaXMuY29uc3RhbnQpfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24oYSxiKXtiPWJ8fEJrLmdldE5vcm1hbE1hdHJpeChhKTthPXRoaXMuY29wbGFuYXJQb2ludChRZykuYXBwbHlNYXRyaXg0KGEpOwpiPXRoaXMubm9ybWFsLmFwcGx5TWF0cml4MyhiKS5ub3JtYWxpemUoKTt0aGlzLmNvbnN0YW50PS1hLmRvdChiKTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEpe3RoaXMuY29uc3RhbnQtPWEuZG90KHRoaXMubm9ybWFsKTtyZXR1cm4gdGhpc30sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZhLmNvbnN0YW50PT09dGhpcy5jb25zdGFudH19KTt2YXIgWWE9bmV3IG4seWI9bmV3IG4sUmc9bmV3IG4semI9bmV3IG4scWQ9bmV3IG4scmQ9bmV3IG4sc2k9bmV3IG4sU2c9bmV3IG4sVGc9bmV3IG4sVWc9bmV3IG47T2JqZWN0LmFzc2lnbihiYSx7Z2V0Tm9ybWFsOmZ1bmN0aW9uKGEsYixjLGQpe3ZvaWQgMD09PWQmJihjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuZ2V0Tm9ybWFsKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGQ9bmV3IG4pO2Quc3ViVmVjdG9ycyhjLGIpO1lhLnN1YlZlY3RvcnMoYSxiKTsKZC5jcm9zcyhZYSk7YT1kLmxlbmd0aFNxKCk7cmV0dXJuIDA8YT9kLm11bHRpcGx5U2NhbGFyKDEvTWF0aC5zcXJ0KGEpKTpkLnNldCgwLDAsMCl9LGdldEJhcnljb29yZDpmdW5jdGlvbihhLGIsYyxkLGUpe1lhLnN1YlZlY3RvcnMoZCxiKTt5Yi5zdWJWZWN0b3JzKGMsYik7Umcuc3ViVmVjdG9ycyhhLGIpO2E9WWEuZG90KFlhKTtiPVlhLmRvdCh5Yik7Yz1ZYS5kb3QoUmcpO3ZhciBmPXliLmRvdCh5Yik7ZD15Yi5kb3QoUmcpO3ZhciBnPWEqZi1iKmI7dm9pZCAwPT09ZSYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRCYXJ5Y29vcmQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksZT1uZXcgbik7aWYoMD09PWcpcmV0dXJuIGUuc2V0KC0yLC0xLC0xKTtnPTEvZztmPShmKmMtYipkKSpnO2E9KGEqZC1iKmMpKmc7cmV0dXJuIGUuc2V0KDEtZi1hLGEsZil9LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7YmEuZ2V0QmFyeWNvb3JkKGEsYixjLGQsemIpOwpyZXR1cm4gMDw9emIueCYmMDw9emIueSYmMT49emIueCt6Yi55fSxnZXRVVjpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe3RoaXMuZ2V0QmFyeWNvb3JkKGEsYixjLGQsemIpO2guc2V0KDAsMCk7aC5hZGRTY2FsZWRWZWN0b3IoZSx6Yi54KTtoLmFkZFNjYWxlZFZlY3RvcihmLHpiLnkpO2guYWRkU2NhbGVkVmVjdG9yKGcsemIueik7cmV0dXJuIGh9LGlzRnJvbnRGYWNpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7WWEuc3ViVmVjdG9ycyhjLGIpO3liLnN1YlZlY3RvcnMoYSxiKTtyZXR1cm4gMD5ZYS5jcm9zcyh5YikuZG90KGQpPyEwOiExfX0pO09iamVjdC5hc3NpZ24oYmEucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYS5jb3B5KGEpO3RoaXMuYi5jb3B5KGIpO3RoaXMuYy5jb3B5KGMpO3JldHVybiB0aGlzfSxzZXRGcm9tUG9pbnRzQW5kSW5kaWNlczpmdW5jdGlvbihhLGIsYyxkKXt0aGlzLmEuY29weShhW2JdKTt0aGlzLmIuY29weShhW2NdKTt0aGlzLmMuY29weShhW2RdKTsKcmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMuYS5jb3B5KGEuYSk7dGhpcy5iLmNvcHkoYS5iKTt0aGlzLmMuY29weShhLmMpO3JldHVybiB0aGlzfSxnZXRBcmVhOmZ1bmN0aW9uKCl7WWEuc3ViVmVjdG9ycyh0aGlzLmMsdGhpcy5iKTt5Yi5zdWJWZWN0b3JzKHRoaXMuYSx0aGlzLmIpO3JldHVybi41KllhLmNyb3NzKHliKS5sZW5ndGgoKX0sZ2V0TWlkcG9pbnQ6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRNaWRwb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxhPW5ldyBuKTtyZXR1cm4gYS5hZGRWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLmFkZCh0aGlzLmMpLm11bHRpcGx5U2NhbGFyKDEvMyl9LGdldE5vcm1hbDpmdW5jdGlvbihhKXtyZXR1cm4gYmEuZ2V0Tm9ybWFsKHRoaXMuYSx0aGlzLmIsCnRoaXMuYyxhKX0sZ2V0UGxhbmU6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRQbGFuZSgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxhPW5ldyBPYSk7cmV0dXJuIGEuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX0sZ2V0QmFyeWNvb3JkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGJhLmdldEJhcnljb29yZChhLHRoaXMuYSx0aGlzLmIsdGhpcy5jLGIpfSxnZXRVVjpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBiYS5nZXRVVihhLHRoaXMuYSx0aGlzLmIsdGhpcy5jLGIsYyxkLGUpfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBiYS5jb250YWluc1BvaW50KGEsdGhpcy5hLHRoaXMuYix0aGlzLmMpfSxpc0Zyb250RmFjaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBiYS5pc0Zyb250RmFjaW5nKHRoaXMuYSx0aGlzLmIsdGhpcy5jLGEpfSxpbnRlcnNlY3RzQm94OmZ1bmN0aW9uKGEpe3JldHVybiBhLmludGVyc2VjdHNUcmlhbmdsZSh0aGlzKX0sCmNsb3Nlc3RQb2ludFRvUG9pbnQ6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmNsb3Nlc3RQb2ludFRvUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYj1uZXcgbik7dmFyIGM9dGhpcy5hLGQ9dGhpcy5iLGU9dGhpcy5jO3FkLnN1YlZlY3RvcnMoZCxjKTtyZC5zdWJWZWN0b3JzKGUsYyk7U2cuc3ViVmVjdG9ycyhhLGMpO3ZhciBmPXFkLmRvdChTZyksZz1yZC5kb3QoU2cpO2lmKDA+PWYmJjA+PWcpcmV0dXJuIGIuY29weShjKTtUZy5zdWJWZWN0b3JzKGEsZCk7dmFyIGg9cWQuZG90KFRnKSxsPXJkLmRvdChUZyk7aWYoMDw9aCYmbDw9aClyZXR1cm4gYi5jb3B5KGQpO3ZhciBtPWYqbC1oKmc7aWYoMD49bSYmMDw9ZiYmMD49aClyZXR1cm4gZD1mLyhmLWgpLGIuY29weShjKS5hZGRTY2FsZWRWZWN0b3IocWQsZCk7VWcuc3ViVmVjdG9ycyhhLGUpO2E9cWQuZG90KFVnKTt2YXIgaz1yZC5kb3QoVWcpO2lmKDA8PQprJiZhPD1rKXJldHVybiBiLmNvcHkoZSk7Zj1hKmctZiprO2lmKDA+PWYmJjA8PWcmJjA+PWspcmV0dXJuIG09Zy8oZy1rKSxiLmNvcHkoYykuYWRkU2NhbGVkVmVjdG9yKHJkLG0pO2c9aCprLWEqbDtpZigwPj1nJiYwPD1sLWgmJjA8PWEtaylyZXR1cm4gc2kuc3ViVmVjdG9ycyhlLGQpLG09KGwtaCkvKGwtaCsoYS1rKSksYi5jb3B5KGQpLmFkZFNjYWxlZFZlY3RvcihzaSxtKTtlPTEvKGcrZittKTtkPWYqZTttKj1lO3JldHVybiBiLmNvcHkoYykuYWRkU2NhbGVkVmVjdG9yKHFkLGQpLmFkZFNjYWxlZFZlY3RvcihyZCxtKX0sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLmEuZXF1YWxzKHRoaXMuYSkmJmEuYi5lcXVhbHModGhpcy5iKSYmYS5jLmVxdWFscyh0aGlzLmMpfX0pO3ZhciB0aT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsCmJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsCmRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsCmxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsCm1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLApwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9LAp6YT17aDowLHM6MCxsOjB9LEFmPXtoOjAsczowLGw6MH07T2JqZWN0LmFzc2lnbihKLnByb3RvdHlwZSx7aXNDb2xvcjohMCxyOjEsZzoxLGI6MSxzZXQ6ZnVuY3Rpb24oYSl7YSYmYS5pc0NvbG9yP3RoaXMuY29weShhKToibnVtYmVyIj09PXR5cGVvZiBhP3RoaXMuc2V0SGV4KGEpOiJzdHJpbmciPT09dHlwZW9mIGEmJnRoaXMuc2V0U3R5bGUoYSk7cmV0dXJuIHRoaXN9LHNldFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLmI9dGhpcy5nPXRoaXMucj1hO3JldHVybiB0aGlzfSxzZXRIZXg6ZnVuY3Rpb24oYSl7YT1NYXRoLmZsb29yKGEpO3RoaXMucj0oYT4+MTYmMjU1KS8yNTU7dGhpcy5nPShhPj44JjI1NSkvMjU1O3RoaXMuYj0oYSYyNTUpLzI1NTtyZXR1cm4gdGhpc30sc2V0UkdCOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnI9YTt0aGlzLmc9Yjt0aGlzLmI9YztyZXR1cm4gdGhpc30sc2V0SFNMOmZ1bmN0aW9uKGEsYixjKXthPVAuZXVjbGlkZWFuTW9kdWxvKGEsMSk7Yj1QLmNsYW1wKGIsCjAsMSk7Yz1QLmNsYW1wKGMsMCwxKTswPT09Yj90aGlzLnI9dGhpcy5nPXRoaXMuYj1jOihiPS41Pj1jP2MqKDErYik6YytiLWMqYixjPTIqYy1iLHRoaXMucj1WZihjLGIsYSsxLzMpLHRoaXMuZz1WZihjLGIsYSksdGhpcy5iPVZmKGMsYixhLTEvMykpO3JldHVybiB0aGlzfSxzZXRTdHlsZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZvaWQgMCE9PWImJjE+cGFyc2VGbG9hdChiKSYmY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogQWxwaGEgY29tcG9uZW50IG9mICIrYSsiIHdpbGwgYmUgaWdub3JlZC4iKX12YXIgYztpZihjPS9eKCg/OnJnYnxoc2wpYT8pXChccyooW15cKV0qKVwpLy5leGVjKGEpKXt2YXIgZD1jWzJdO3N3aXRjaChjWzFdKXtjYXNlICJyZ2IiOmNhc2UgInJnYmEiOmlmKGM9L14oXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKigsXHMqKFswLTldKlwuP1swLTldKylccyopPyQvLmV4ZWMoZCkpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigyNTUscGFyc2VJbnQoY1sxXSwKMTApKS8yNTUsdGhpcy5nPU1hdGgubWluKDI1NSxwYXJzZUludChjWzJdLDEwKSkvMjU1LHRoaXMuYj1NYXRoLm1pbigyNTUscGFyc2VJbnQoY1szXSwxMCkpLzI1NSxiKGNbNV0pLHRoaXM7aWYoYz0vXihcZCspJVxzKixccyooXGQrKSVccyosXHMqKFxkKyklXHMqKCxccyooWzAtOV0qXC4/WzAtOV0rKVxzKik/JC8uZXhlYyhkKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDEwMCxwYXJzZUludChjWzFdLDEwKSkvMTAwLHRoaXMuZz1NYXRoLm1pbigxMDAscGFyc2VJbnQoY1syXSwxMCkpLzEwMCx0aGlzLmI9TWF0aC5taW4oMTAwLHBhcnNlSW50KGNbM10sMTApKS8xMDAsYihjWzVdKSx0aGlzO2JyZWFrO2Nhc2UgImhzbCI6Y2FzZSAiaHNsYSI6aWYoYz0vXihbMC05XSpcLj9bMC05XSspXHMqLFxzKihcZCspJVxzKixccyooXGQrKSVccyooLFxzKihbMC05XSpcLj9bMC05XSspXHMqKT8kLy5leGVjKGQpKXtkPXBhcnNlRmxvYXQoY1sxXSkvMzYwO3ZhciBlPXBhcnNlSW50KGNbMl0sCjEwKS8xMDAsZj1wYXJzZUludChjWzNdLDEwKS8xMDA7YihjWzVdKTtyZXR1cm4gdGhpcy5zZXRIU0woZCxlLGYpfX19ZWxzZSBpZihjPS9eIyhbQS1GYS1mMC05XSspJC8uZXhlYyhhKSl7Yz1jWzFdO2Q9Yy5sZW5ndGg7aWYoMz09PWQpcmV0dXJuIHRoaXMucj1wYXJzZUludChjLmNoYXJBdCgwKStjLmNoYXJBdCgwKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludChjLmNoYXJBdCgxKStjLmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludChjLmNoYXJBdCgyKStjLmNoYXJBdCgyKSwxNikvMjU1LHRoaXM7aWYoNj09PWQpcmV0dXJuIHRoaXMucj1wYXJzZUludChjLmNoYXJBdCgwKStjLmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludChjLmNoYXJBdCgyKStjLmNoYXJBdCgzKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludChjLmNoYXJBdCg0KStjLmNoYXJBdCg1KSwxNikvMjU1LHRoaXN9cmV0dXJuIGEmJjA8YS5sZW5ndGg/dGhpcy5zZXRDb2xvck5hbWUoYSk6dGhpc30sCnNldENvbG9yTmFtZTpmdW5jdGlvbihhKXt2YXIgYj10aVthXTt2b2lkIDAhPT1iP3RoaXMuc2V0SGV4KGIpOmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IFVua25vd24gY29sb3IgIithKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMucj1hLnI7dGhpcy5nPWEuZzt0aGlzLmI9YS5iO3JldHVybiB0aGlzfSxjb3B5R2FtbWFUb0xpbmVhcjpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTIpO3RoaXMucj1NYXRoLnBvdyhhLnIsYik7dGhpcy5nPU1hdGgucG93KGEuZyxiKTt0aGlzLmI9TWF0aC5wb3coYS5iLGIpO3JldHVybiB0aGlzfSxjb3B5TGluZWFyVG9HYW1tYTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTIpO2I9MDxiPzEvYjoxO3RoaXMucj1NYXRoLnBvdyhhLnIsYik7dGhpcy5nPU1hdGgucG93KGEuZyxiKTt0aGlzLmI9TWF0aC5wb3coYS5iLApiKTtyZXR1cm4gdGhpc30sY29udmVydEdhbW1hVG9MaW5lYXI6ZnVuY3Rpb24oYSl7dGhpcy5jb3B5R2FtbWFUb0xpbmVhcih0aGlzLGEpO3JldHVybiB0aGlzfSxjb252ZXJ0TGluZWFyVG9HYW1tYTpmdW5jdGlvbihhKXt0aGlzLmNvcHlMaW5lYXJUb0dhbW1hKHRoaXMsYSk7cmV0dXJuIHRoaXN9LGNvcHlTUkdCVG9MaW5lYXI6ZnVuY3Rpb24oYSl7dGhpcy5yPVdmKGEucik7dGhpcy5nPVdmKGEuZyk7dGhpcy5iPVdmKGEuYik7cmV0dXJuIHRoaXN9LGNvcHlMaW5lYXJUb1NSR0I6ZnVuY3Rpb24oYSl7dGhpcy5yPVhmKGEucik7dGhpcy5nPVhmKGEuZyk7dGhpcy5iPVhmKGEuYik7cmV0dXJuIHRoaXN9LGNvbnZlcnRTUkdCVG9MaW5lYXI6ZnVuY3Rpb24oKXt0aGlzLmNvcHlTUkdCVG9MaW5lYXIodGhpcyk7cmV0dXJuIHRoaXN9LGNvbnZlcnRMaW5lYXJUb1NSR0I6ZnVuY3Rpb24oKXt0aGlzLmNvcHlMaW5lYXJUb1NSR0IodGhpcyk7cmV0dXJuIHRoaXN9LGdldEhleDpmdW5jdGlvbigpe3JldHVybiAyNTUqCnRoaXMucjw8MTZeMjU1KnRoaXMuZzw8OF4yNTUqdGhpcy5iPDwwfSxnZXRIZXhTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oIjAwMDAwMCIrdGhpcy5nZXRIZXgoKS50b1N0cmluZygxNikpLnNsaWNlKC02KX0sZ2V0SFNMOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiAuZ2V0SFNMKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9e2g6MCxzOjAsbDowfSk7dmFyIGI9dGhpcy5yLGM9dGhpcy5nLGQ9dGhpcy5iLGU9TWF0aC5tYXgoYixjLGQpLGY9TWF0aC5taW4oYixjLGQpLGcsaD0oZitlKS8yO2lmKGY9PT1lKWY9Zz0wO2Vsc2V7dmFyIGw9ZS1mO2Y9LjU+PWg/bC8oZStmKTpsLygyLWUtZik7c3dpdGNoKGUpe2Nhc2UgYjpnPShjLWQpL2wrKGM8ZD82OjApO2JyZWFrO2Nhc2UgYzpnPShkLWIpL2wrMjticmVhaztjYXNlIGQ6Zz0oYi1jKS9sKzR9Zy89Nn1hLmg9ZzthLnM9ZjthLmw9aDtyZXR1cm4gYX0sZ2V0U3R5bGU6ZnVuY3Rpb24oKXtyZXR1cm4icmdiKCIrCigyNTUqdGhpcy5yfDApKyIsIisoMjU1KnRoaXMuZ3wwKSsiLCIrKDI1NSp0aGlzLmJ8MCkrIikifSxvZmZzZXRIU0w6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZ2V0SFNMKHphKTt6YS5oKz1hO3phLnMrPWI7emEubCs9Yzt0aGlzLnNldEhTTCh6YS5oLHphLnMsemEubCk7cmV0dXJuIHRoaXN9LGFkZDpmdW5jdGlvbihhKXt0aGlzLnIrPWEucjt0aGlzLmcrPWEuZzt0aGlzLmIrPWEuYjtyZXR1cm4gdGhpc30sYWRkQ29sb3JzOmZ1bmN0aW9uKGEsYil7dGhpcy5yPWEucitiLnI7dGhpcy5nPWEuZytiLmc7dGhpcy5iPWEuYitiLmI7cmV0dXJuIHRoaXN9LGFkZFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLnIrPWE7dGhpcy5nKz1hO3RoaXMuYis9YTtyZXR1cm4gdGhpc30sc3ViOmZ1bmN0aW9uKGEpe3RoaXMucj1NYXRoLm1heCgwLHRoaXMuci1hLnIpO3RoaXMuZz1NYXRoLm1heCgwLHRoaXMuZy1hLmcpO3RoaXMuYj1NYXRoLm1heCgwLHRoaXMuYi1hLmIpO3JldHVybiB0aGlzfSxtdWx0aXBseTpmdW5jdGlvbihhKXt0aGlzLnIqPQphLnI7dGhpcy5nKj1hLmc7dGhpcy5iKj1hLmI7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMucio9YTt0aGlzLmcqPWE7dGhpcy5iKj1hO3JldHVybiB0aGlzfSxsZXJwOmZ1bmN0aW9uKGEsYil7dGhpcy5yKz0oYS5yLXRoaXMucikqYjt0aGlzLmcrPShhLmctdGhpcy5nKSpiO3RoaXMuYis9KGEuYi10aGlzLmIpKmI7cmV0dXJuIHRoaXN9LGxlcnBIU0w6ZnVuY3Rpb24oYSxiKXt0aGlzLmdldEhTTCh6YSk7YS5nZXRIU0woQWYpO2E9UC5sZXJwKHphLmgsQWYuaCxiKTt2YXIgYz1QLmxlcnAoemEucyxBZi5zLGIpO2I9UC5sZXJwKHphLmwsQWYubCxiKTt0aGlzLnNldEhTTChhLGMsYik7cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5yPT09dGhpcy5yJiZhLmc9PT10aGlzLmcmJmEuYj09PXRoaXMuYn0sZnJvbUFycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9MCk7dGhpcy5yPWFbYl07dGhpcy5nPWFbYisxXTsKdGhpcy5iPWFbYisyXTtyZXR1cm4gdGhpc30sdG9BcnJheTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWEmJihhPVtdKTt2b2lkIDA9PT1iJiYoYj0wKTthW2JdPXRoaXMucjthW2IrMV09dGhpcy5nO2FbYisyXT10aGlzLmI7cmV0dXJuIGF9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEhleCgpfX0pO0ouTkFNRVM9dGk7T2JqZWN0LmFzc2lnbih4Yy5wcm90b3R5cGUse2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMuYT1hLmE7dGhpcy5iPWEuYjt0aGlzLmM9YS5jO3RoaXMubm9ybWFsLmNvcHkoYS5ub3JtYWwpO3RoaXMuY29sb3IuY29weShhLmNvbG9yKTt0aGlzLm1hdGVyaWFsSW5kZXg9YS5tYXRlcmlhbEluZGV4O2Zvcih2YXIgYj0wLGM9YS52ZXJ0ZXhOb3JtYWxzLmxlbmd0aDtiPGM7YisrKXRoaXMudmVydGV4Tm9ybWFsc1tiXT1hLnZlcnRleE5vcm1hbHNbYl0uY2xvbmUoKTsKYj0wO2ZvcihjPWEudmVydGV4Q29sb3JzLmxlbmd0aDtiPGM7YisrKXRoaXMudmVydGV4Q29sb3JzW2JdPWEudmVydGV4Q29sb3JzW2JdLmNsb25lKCk7cmV0dXJuIHRoaXN9fSk7dmFyIFVpPTA7Ty5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEFhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOk8saXNNYXRlcmlhbDohMCxvbkJlZm9yZUNvbXBpbGU6ZnVuY3Rpb24oKXt9LHNldFZhbHVlczpmdW5jdGlvbihhKXtpZih2b2lkIDAhPT1hKWZvcih2YXIgYiBpbiBhKXt2YXIgYz1hW2JdO2lmKHZvaWQgMD09PWMpY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogJyIrYisiJyBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkLiIpO2Vsc2UgaWYoInNoYWRpbmciPT09Yiljb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPQoxPT09Yz8hMDohMTtlbHNle3ZhciBkPXRoaXNbYl07dm9pZCAwPT09ZD9jb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6ICciK2IrIicgaXMgbm90IGEgcHJvcGVydHkgb2YgdGhpcyBtYXRlcmlhbC4iKTpkJiZkLmlzQ29sb3I/ZC5zZXQoYyk6ZCYmZC5pc1ZlY3RvcjMmJmMmJmMuaXNWZWN0b3IzP2QuY29weShjKTp0aGlzW2JdPWN9fX0sdG9KU09OOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dmFyIGI9W10sYztmb3IoYyBpbiBhKXt2YXIgZD1hW2NdO2RlbGV0ZSBkLm1ldGFkYXRhO2IucHVzaChkKX1yZXR1cm4gYn12YXIgYz12b2lkIDA9PT1hfHwic3RyaW5nIj09PXR5cGVvZiBhO2MmJihhPXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTt2YXIgZD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtkLnV1aWQ9dGhpcy51dWlkO2QudHlwZT10aGlzLnR5cGU7IiIhPT10aGlzLm5hbWUmJihkLm5hbWU9CnRoaXMubmFtZSk7dGhpcy5jb2xvciYmdGhpcy5jb2xvci5pc0NvbG9yJiYoZC5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpKTt2b2lkIDAhPT10aGlzLnJvdWdobmVzcyYmKGQucm91Z2huZXNzPXRoaXMucm91Z2huZXNzKTt2b2lkIDAhPT10aGlzLm1ldGFsbmVzcyYmKGQubWV0YWxuZXNzPXRoaXMubWV0YWxuZXNzKTt0aGlzLnNoZWVuJiZ0aGlzLnNoZWVuLmlzQ29sb3ImJihkLnNoZWVuPXRoaXMuc2hlZW4uZ2V0SGV4KCkpO3RoaXMuZW1pc3NpdmUmJnRoaXMuZW1pc3NpdmUuaXNDb2xvciYmKGQuZW1pc3NpdmU9dGhpcy5lbWlzc2l2ZS5nZXRIZXgoKSk7dGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmMSE9PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJihkLmVtaXNzaXZlSW50ZW5zaXR5PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkpO3RoaXMuc3BlY3VsYXImJnRoaXMuc3BlY3VsYXIuaXNDb2xvciYmKGQuc3BlY3VsYXI9dGhpcy5zcGVjdWxhci5nZXRIZXgoKSk7dm9pZCAwIT09dGhpcy5zaGluaW5lc3MmJgooZC5zaGluaW5lc3M9dGhpcy5zaGluaW5lc3MpO3ZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0JiYoZC5jbGVhcmNvYXQ9dGhpcy5jbGVhcmNvYXQpO3ZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzJiYoZC5jbGVhcmNvYXRSb3VnaG5lc3M9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MpO3RoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwJiZ0aGlzLmNsZWFyY29hdE5vcm1hbE1hcC5pc1RleHR1cmUmJihkLmNsZWFyY29hdE5vcm1hbE1hcD10aGlzLmNsZWFyY29hdE5vcm1hbE1hcC50b0pTT04oYSkudXVpZCxkLmNsZWFyY29hdE5vcm1hbFNjYWxlPXRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudG9BcnJheSgpKTt0aGlzLm1hcCYmdGhpcy5tYXAuaXNUZXh0dXJlJiYoZC5tYXA9dGhpcy5tYXAudG9KU09OKGEpLnV1aWQpO3RoaXMubWF0Y2FwJiZ0aGlzLm1hdGNhcC5pc1RleHR1cmUmJihkLm1hdGNhcD10aGlzLm1hdGNhcC50b0pTT04oYSkudXVpZCk7dGhpcy5hbHBoYU1hcCYmdGhpcy5hbHBoYU1hcC5pc1RleHR1cmUmJgooZC5hbHBoYU1hcD10aGlzLmFscGhhTWFwLnRvSlNPTihhKS51dWlkKTt0aGlzLmxpZ2h0TWFwJiZ0aGlzLmxpZ2h0TWFwLmlzVGV4dHVyZSYmKGQubGlnaHRNYXA9dGhpcy5saWdodE1hcC50b0pTT04oYSkudXVpZCk7dGhpcy5hb01hcCYmdGhpcy5hb01hcC5pc1RleHR1cmUmJihkLmFvTWFwPXRoaXMuYW9NYXAudG9KU09OKGEpLnV1aWQsZC5hb01hcEludGVuc2l0eT10aGlzLmFvTWFwSW50ZW5zaXR5KTt0aGlzLmJ1bXBNYXAmJnRoaXMuYnVtcE1hcC5pc1RleHR1cmUmJihkLmJ1bXBNYXA9dGhpcy5idW1wTWFwLnRvSlNPTihhKS51dWlkLGQuYnVtcFNjYWxlPXRoaXMuYnVtcFNjYWxlKTt0aGlzLm5vcm1hbE1hcCYmdGhpcy5ub3JtYWxNYXAuaXNUZXh0dXJlJiYoZC5ub3JtYWxNYXA9dGhpcy5ub3JtYWxNYXAudG9KU09OKGEpLnV1aWQsZC5ub3JtYWxNYXBUeXBlPXRoaXMubm9ybWFsTWFwVHlwZSxkLm5vcm1hbFNjYWxlPXRoaXMubm9ybWFsU2NhbGUudG9BcnJheSgpKTt0aGlzLmRpc3BsYWNlbWVudE1hcCYmCnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKGQuZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTihhKS51dWlkLGQuZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxkLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKTt0aGlzLnJvdWdobmVzc01hcCYmdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYoZC5yb3VnaG5lc3NNYXA9dGhpcy5yb3VnaG5lc3NNYXAudG9KU09OKGEpLnV1aWQpO3RoaXMubWV0YWxuZXNzTWFwJiZ0aGlzLm1ldGFsbmVzc01hcC5pc1RleHR1cmUmJihkLm1ldGFsbmVzc01hcD10aGlzLm1ldGFsbmVzc01hcC50b0pTT04oYSkudXVpZCk7dGhpcy5lbWlzc2l2ZU1hcCYmdGhpcy5lbWlzc2l2ZU1hcC5pc1RleHR1cmUmJihkLmVtaXNzaXZlTWFwPXRoaXMuZW1pc3NpdmVNYXAudG9KU09OKGEpLnV1aWQpO3RoaXMuc3BlY3VsYXJNYXAmJnRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlJiYKKGQuc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04oYSkudXVpZCk7dGhpcy5lbnZNYXAmJnRoaXMuZW52TWFwLmlzVGV4dHVyZSYmKGQuZW52TWFwPXRoaXMuZW52TWFwLnRvSlNPTihhKS51dWlkLGQucmVmbGVjdGl2aXR5PXRoaXMucmVmbGVjdGl2aXR5LGQucmVmcmFjdGlvblJhdGlvPXRoaXMucmVmcmFjdGlvblJhdGlvLHZvaWQgMCE9PXRoaXMuY29tYmluZSYmKGQuY29tYmluZT10aGlzLmNvbWJpbmUpLHZvaWQgMCE9PXRoaXMuZW52TWFwSW50ZW5zaXR5JiYoZC5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpKTt0aGlzLmdyYWRpZW50TWFwJiZ0aGlzLmdyYWRpZW50TWFwLmlzVGV4dHVyZSYmKGQuZ3JhZGllbnRNYXA9dGhpcy5ncmFkaWVudE1hcC50b0pTT04oYSkudXVpZCk7dm9pZCAwIT09dGhpcy5zaXplJiYoZC5zaXplPXRoaXMuc2l6ZSk7dm9pZCAwIT09dGhpcy5zaXplQXR0ZW51YXRpb24mJihkLnNpemVBdHRlbnVhdGlvbj10aGlzLnNpemVBdHRlbnVhdGlvbik7CjEhPT10aGlzLmJsZW5kaW5nJiYoZC5ibGVuZGluZz10aGlzLmJsZW5kaW5nKTshMD09PXRoaXMuZmxhdFNoYWRpbmcmJihkLmZsYXRTaGFkaW5nPXRoaXMuZmxhdFNoYWRpbmcpOzAhPT10aGlzLnNpZGUmJihkLnNpZGU9dGhpcy5zaWRlKTswIT09dGhpcy52ZXJ0ZXhDb2xvcnMmJihkLnZlcnRleENvbG9ycz10aGlzLnZlcnRleENvbG9ycyk7MT50aGlzLm9wYWNpdHkmJihkLm9wYWNpdHk9dGhpcy5vcGFjaXR5KTshMD09PXRoaXMudHJhbnNwYXJlbnQmJihkLnRyYW5zcGFyZW50PXRoaXMudHJhbnNwYXJlbnQpO2QuZGVwdGhGdW5jPXRoaXMuZGVwdGhGdW5jO2QuZGVwdGhUZXN0PXRoaXMuZGVwdGhUZXN0O2QuZGVwdGhXcml0ZT10aGlzLmRlcHRoV3JpdGU7ZC5zdGVuY2lsV3JpdGU9dGhpcy5zdGVuY2lsV3JpdGU7ZC5zdGVuY2lsV3JpdGVNYXNrPXRoaXMuc3RlbmNpbFdyaXRlTWFzaztkLnN0ZW5jaWxGdW5jPXRoaXMuc3RlbmNpbEZ1bmM7ZC5zdGVuY2lsUmVmPXRoaXMuc3RlbmNpbFJlZjsKZC5zdGVuY2lsRnVuY01hc2s9dGhpcy5zdGVuY2lsRnVuY01hc2s7ZC5zdGVuY2lsRmFpbD10aGlzLnN0ZW5jaWxGYWlsO2Quc3RlbmNpbFpGYWlsPXRoaXMuc3RlbmNpbFpGYWlsO2Quc3RlbmNpbFpQYXNzPXRoaXMuc3RlbmNpbFpQYXNzO3RoaXMucm90YXRpb24mJjAhPT10aGlzLnJvdGF0aW9uJiYoZC5yb3RhdGlvbj10aGlzLnJvdGF0aW9uKTshMD09PXRoaXMucG9seWdvbk9mZnNldCYmKGQucG9seWdvbk9mZnNldD0hMCk7MCE9PXRoaXMucG9seWdvbk9mZnNldEZhY3RvciYmKGQucG9seWdvbk9mZnNldEZhY3Rvcj10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IpOzAhPT10aGlzLnBvbHlnb25PZmZzZXRVbml0cyYmKGQucG9seWdvbk9mZnNldFVuaXRzPXRoaXMucG9seWdvbk9mZnNldFVuaXRzKTt0aGlzLmxpbmV3aWR0aCYmMSE9PXRoaXMubGluZXdpZHRoJiYoZC5saW5ld2lkdGg9dGhpcy5saW5ld2lkdGgpO3ZvaWQgMCE9PXRoaXMuZGFzaFNpemUmJihkLmRhc2hTaXplPXRoaXMuZGFzaFNpemUpOwp2b2lkIDAhPT10aGlzLmdhcFNpemUmJihkLmdhcFNpemU9dGhpcy5nYXBTaXplKTt2b2lkIDAhPT10aGlzLnNjYWxlJiYoZC5zY2FsZT10aGlzLnNjYWxlKTshMD09PXRoaXMuZGl0aGVyaW5nJiYoZC5kaXRoZXJpbmc9ITApOzA8dGhpcy5hbHBoYVRlc3QmJihkLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCk7ITA9PT10aGlzLnByZW11bHRpcGxpZWRBbHBoYSYmKGQucHJlbXVsdGlwbGllZEFscGhhPXRoaXMucHJlbXVsdGlwbGllZEFscGhhKTshMD09PXRoaXMud2lyZWZyYW1lJiYoZC53aXJlZnJhbWU9dGhpcy53aXJlZnJhbWUpOzE8dGhpcy53aXJlZnJhbWVMaW5ld2lkdGgmJihkLndpcmVmcmFtZUxpbmV3aWR0aD10aGlzLndpcmVmcmFtZUxpbmV3aWR0aCk7InJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWNhcCYmKGQud2lyZWZyYW1lTGluZWNhcD10aGlzLndpcmVmcmFtZUxpbmVjYXApOyJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVqb2luJiYoZC53aXJlZnJhbWVMaW5lam9pbj0KdGhpcy53aXJlZnJhbWVMaW5lam9pbik7ITA9PT10aGlzLm1vcnBoVGFyZ2V0cyYmKGQubW9ycGhUYXJnZXRzPSEwKTshMD09PXRoaXMubW9ycGhOb3JtYWxzJiYoZC5tb3JwaE5vcm1hbHM9ITApOyEwPT09dGhpcy5za2lubmluZyYmKGQuc2tpbm5pbmc9ITApOyExPT09dGhpcy52aXNpYmxlJiYoZC52aXNpYmxlPSExKTshMT09PXRoaXMudG9uZU1hcHBlZCYmKGQudG9uZU1hcHBlZD0hMSk7Int9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYoZC51c2VyRGF0YT10aGlzLnVzZXJEYXRhKTtjJiYoYz1iKGEudGV4dHVyZXMpLGE9YihhLmltYWdlcyksMDxjLmxlbmd0aCYmKGQudGV4dHVyZXM9YyksMDxhLmxlbmd0aCYmKGQuaW1hZ2VzPWEpKTtyZXR1cm4gZH0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPWEubmFtZTt0aGlzLmZvZz1hLmZvZzt0aGlzLmJsZW5kaW5nPQphLmJsZW5kaW5nO3RoaXMuc2lkZT1hLnNpZGU7dGhpcy5mbGF0U2hhZGluZz1hLmZsYXRTaGFkaW5nO3RoaXMudmVydGV4VGFuZ2VudHM9YS52ZXJ0ZXhUYW5nZW50czt0aGlzLnZlcnRleENvbG9ycz1hLnZlcnRleENvbG9yczt0aGlzLm9wYWNpdHk9YS5vcGFjaXR5O3RoaXMudHJhbnNwYXJlbnQ9YS50cmFuc3BhcmVudDt0aGlzLmJsZW5kU3JjPWEuYmxlbmRTcmM7dGhpcy5ibGVuZERzdD1hLmJsZW5kRHN0O3RoaXMuYmxlbmRFcXVhdGlvbj1hLmJsZW5kRXF1YXRpb247dGhpcy5ibGVuZFNyY0FscGhhPWEuYmxlbmRTcmNBbHBoYTt0aGlzLmJsZW5kRHN0QWxwaGE9YS5ibGVuZERzdEFscGhhO3RoaXMuYmxlbmRFcXVhdGlvbkFscGhhPWEuYmxlbmRFcXVhdGlvbkFscGhhO3RoaXMuZGVwdGhGdW5jPWEuZGVwdGhGdW5jO3RoaXMuZGVwdGhUZXN0PWEuZGVwdGhUZXN0O3RoaXMuZGVwdGhXcml0ZT1hLmRlcHRoV3JpdGU7dGhpcy5zdGVuY2lsV3JpdGVNYXNrPWEuc3RlbmNpbFdyaXRlTWFzazsKdGhpcy5zdGVuY2lsRnVuYz1hLnN0ZW5jaWxGdW5jO3RoaXMuc3RlbmNpbFJlZj1hLnN0ZW5jaWxSZWY7dGhpcy5zdGVuY2lsRnVuY01hc2s9YS5zdGVuY2lsRnVuY01hc2s7dGhpcy5zdGVuY2lsRmFpbD1hLnN0ZW5jaWxGYWlsO3RoaXMuc3RlbmNpbFpGYWlsPWEuc3RlbmNpbFpGYWlsO3RoaXMuc3RlbmNpbFpQYXNzPWEuc3RlbmNpbFpQYXNzO3RoaXMuc3RlbmNpbFdyaXRlPWEuc3RlbmNpbFdyaXRlO3ZhciBiPWEuY2xpcHBpbmdQbGFuZXMsYz1udWxsO2lmKG51bGwhPT1iKXt2YXIgZD1iLmxlbmd0aDtjPUFycmF5KGQpO2Zvcih2YXIgZT0wO2UhPT1kOysrZSljW2VdPWJbZV0uY2xvbmUoKX10aGlzLmNsaXBwaW5nUGxhbmVzPWM7dGhpcy5jbGlwSW50ZXJzZWN0aW9uPWEuY2xpcEludGVyc2VjdGlvbjt0aGlzLmNsaXBTaGFkb3dzPWEuY2xpcFNoYWRvd3M7dGhpcy5zaGFkb3dTaWRlPWEuc2hhZG93U2lkZTt0aGlzLmNvbG9yV3JpdGU9YS5jb2xvcldyaXRlO3RoaXMucHJlY2lzaW9uPQphLnByZWNpc2lvbjt0aGlzLnBvbHlnb25PZmZzZXQ9YS5wb2x5Z29uT2Zmc2V0O3RoaXMucG9seWdvbk9mZnNldEZhY3Rvcj1hLnBvbHlnb25PZmZzZXRGYWN0b3I7dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9YS5wb2x5Z29uT2Zmc2V0VW5pdHM7dGhpcy5kaXRoZXJpbmc9YS5kaXRoZXJpbmc7dGhpcy5hbHBoYVRlc3Q9YS5hbHBoYVRlc3Q7dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9YS5wcmVtdWx0aXBsaWVkQWxwaGE7dGhpcy52aXNpYmxlPWEudmlzaWJsZTt0aGlzLnRvbmVNYXBwZWQ9YS50b25lTWFwcGVkO3RoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhLnVzZXJEYXRhKSk7cmV0dXJuIHRoaXN9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSk7R2EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO0dhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1HYTtHYS5wcm90b3R5cGUuaXNNZXNoQmFzaWNNYXRlcmlhbD0KITA7R2EucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Ty5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jb2xvci5jb3B5KGEuY29sb3IpO3RoaXMubWFwPWEubWFwO3RoaXMubGlnaHRNYXA9YS5saWdodE1hcDt0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PWEubGlnaHRNYXBJbnRlbnNpdHk7dGhpcy5hb01hcD1hLmFvTWFwO3RoaXMuYW9NYXBJbnRlbnNpdHk9YS5hb01hcEludGVuc2l0eTt0aGlzLnNwZWN1bGFyTWFwPWEuc3BlY3VsYXJNYXA7dGhpcy5hbHBoYU1hcD1hLmFscGhhTWFwO3RoaXMuZW52TWFwPWEuZW52TWFwO3RoaXMuY29tYmluZT1hLmNvbWJpbmU7dGhpcy5yZWZsZWN0aXZpdHk9YS5yZWZsZWN0aXZpdHk7dGhpcy5yZWZyYWN0aW9uUmF0aW89YS5yZWZyYWN0aW9uUmF0aW87dGhpcy53aXJlZnJhbWU9YS53aXJlZnJhbWU7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGg7dGhpcy53aXJlZnJhbWVMaW5lY2FwPWEud2lyZWZyYW1lTGluZWNhcDsKdGhpcy53aXJlZnJhbWVMaW5lam9pbj1hLndpcmVmcmFtZUxpbmVqb2luO3RoaXMuc2tpbm5pbmc9YS5za2lubmluZzt0aGlzLm1vcnBoVGFyZ2V0cz1hLm1vcnBoVGFyZ2V0cztyZXR1cm4gdGhpc307T2JqZWN0LmRlZmluZVByb3BlcnR5KE4ucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbihhKXshMD09PWEmJnRoaXMudmVyc2lvbisrfX0pO09iamVjdC5hc3NpZ24oTi5wcm90b3R5cGUse2lzQnVmZmVyQXR0cmlidXRlOiEwLG9uVXBsb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oKXt9LHNldFVzYWdlOmZ1bmN0aW9uKGEpe3RoaXMudXNhZ2U9YTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbihhKXt0aGlzLm5hbWU9YS5uYW1lO3RoaXMuYXJyYXk9bmV3IGEuYXJyYXkuY29uc3RydWN0b3IoYS5hcnJheSk7dGhpcy5pdGVtU2l6ZT1hLml0ZW1TaXplO3RoaXMuY291bnQ9YS5jb3VudDt0aGlzLm5vcm1hbGl6ZWQ9YS5ub3JtYWxpemVkO3RoaXMudXNhZ2U9YS51c2FnZTtyZXR1cm4gdGhpc30sCmNvcHlBdDpmdW5jdGlvbihhLGIsYyl7YSo9dGhpcy5pdGVtU2l6ZTtjKj1iLml0ZW1TaXplO2Zvcih2YXIgZD0wLGU9dGhpcy5pdGVtU2l6ZTtkPGU7ZCsrKXRoaXMuYXJyYXlbYStkXT1iLmFycmF5W2MrZF07cmV0dXJuIHRoaXN9LGNvcHlBcnJheTpmdW5jdGlvbihhKXt0aGlzLmFycmF5LnNldChhKTtyZXR1cm4gdGhpc30sY29weUNvbG9yc0FycmF5OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLmFycmF5LGM9MCxkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKXt2YXIgZj1hW2RdO3ZvaWQgMD09PWYmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixkKSxmPW5ldyBKKTtiW2MrK109Zi5yO2JbYysrXT1mLmc7YltjKytdPWYuYn1yZXR1cm4gdGhpc30sY29weVZlY3RvcjJzQXJyYXk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMuYXJyYXksYz0wLGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspe3ZhciBmPQphW2RdO3ZvaWQgMD09PWYmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yMnNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixkKSxmPW5ldyBCKTtiW2MrK109Zi54O2JbYysrXT1mLnl9cmV0dXJuIHRoaXN9LGNvcHlWZWN0b3Izc0FycmF5OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLmFycmF5LGM9MCxkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKXt2YXIgZj1hW2RdO3ZvaWQgMD09PWYmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixkKSxmPW5ldyBuKTtiW2MrK109Zi54O2JbYysrXT1mLnk7YltjKytdPWYuen1yZXR1cm4gdGhpc30sY29weVZlY3RvcjRzQXJyYXk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMuYXJyYXksYz0wLGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspe3ZhciBmPWFbZF07dm9pZCAwPT09ZiYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3I0c0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLApkKSxmPW5ldyBkYSk7YltjKytdPWYueDtiW2MrK109Zi55O2JbYysrXT1mLno7YltjKytdPWYud31yZXR1cm4gdGhpc30sc2V0OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9MCk7dGhpcy5hcnJheS5zZXQoYSxiKTtyZXR1cm4gdGhpc30sZ2V0WDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcnJheVthKnRoaXMuaXRlbVNpemVdfSxzZXRYOmZ1bmN0aW9uKGEsYil7dGhpcy5hcnJheVthKnRoaXMuaXRlbVNpemVdPWI7cmV0dXJuIHRoaXN9LGdldFk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXJyYXlbYSp0aGlzLml0ZW1TaXplKzFdfSxzZXRZOmZ1bmN0aW9uKGEsYil7dGhpcy5hcnJheVthKnRoaXMuaXRlbVNpemUrMV09YjtyZXR1cm4gdGhpc30sZ2V0WjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcnJheVthKnRoaXMuaXRlbVNpemUrMl19LHNldFo6ZnVuY3Rpb24oYSxiKXt0aGlzLmFycmF5W2EqdGhpcy5pdGVtU2l6ZSsyXT1iO3JldHVybiB0aGlzfSxnZXRXOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFycmF5W2EqCnRoaXMuaXRlbVNpemUrM119LHNldFc6ZnVuY3Rpb24oYSxiKXt0aGlzLmFycmF5W2EqdGhpcy5pdGVtU2l6ZSszXT1iO3JldHVybiB0aGlzfSxzZXRYWTpmdW5jdGlvbihhLGIsYyl7YSo9dGhpcy5pdGVtU2l6ZTt0aGlzLmFycmF5W2ErMF09Yjt0aGlzLmFycmF5W2ErMV09YztyZXR1cm4gdGhpc30sc2V0WFlaOmZ1bmN0aW9uKGEsYixjLGQpe2EqPXRoaXMuaXRlbVNpemU7dGhpcy5hcnJheVthKzBdPWI7dGhpcy5hcnJheVthKzFdPWM7dGhpcy5hcnJheVthKzJdPWQ7cmV0dXJuIHRoaXN9LHNldFhZWlc6ZnVuY3Rpb24oYSxiLGMsZCxlKXthKj10aGlzLml0ZW1TaXplO3RoaXMuYXJyYXlbYSswXT1iO3RoaXMuYXJyYXlbYSsxXT1jO3RoaXMuYXJyYXlbYSsyXT1kO3RoaXMuYXJyYXlbYSszXT1lO3JldHVybiB0aGlzfSxvblVwbG9hZDpmdW5jdGlvbihhKXt0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9YTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hcnJheSwKdGhpcy5pdGVtU2l6ZSkpLmNvcHkodGhpcyl9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYXJyYXkpLG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfX19KTt3ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShOLnByb3RvdHlwZSk7d2QucHJvdG90eXBlLmNvbnN0cnVjdG9yPXdkO3hkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE4ucHJvdG90eXBlKTt4ZC5wcm90b3R5cGUuY29uc3RydWN0b3I9eGQ7eWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTi5wcm90b3R5cGUpO3lkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj15ZDt6ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShOLnByb3RvdHlwZSk7emQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXpkO1NiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE4ucHJvdG90eXBlKTtTYi5wcm90b3R5cGUuY29uc3RydWN0b3I9ClNiO0FkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE4ucHJvdG90eXBlKTtBZC5wcm90b3R5cGUuY29uc3RydWN0b3I9QWQ7VGIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTi5wcm90b3R5cGUpO1RiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1UYjtBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE4ucHJvdG90eXBlKTtBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BO0JkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE4ucHJvdG90eXBlKTtCZC5wcm90b3R5cGUuY29uc3RydWN0b3I9QmQ7T2JqZWN0LmFzc2lnbihpaC5wcm90b3R5cGUse2NvbXB1dGVHcm91cHM6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz12b2lkIDA7YT1hLmZhY2VzO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdO2lmKGUubWF0ZXJpYWxJbmRleCE9PWMpe2M9ZS5tYXRlcmlhbEluZGV4O3ZvaWQgMCE9PWYmJihmLmNvdW50PTMqZC1mLnN0YXJ0LGIucHVzaChmKSk7dmFyIGY9e3N0YXJ0OjMqZCxtYXRlcmlhbEluZGV4OmN9fX12b2lkIDAhPT0KZiYmKGYuY291bnQ9MypkLWYuc3RhcnQsYi5wdXNoKGYpKTt0aGlzLmdyb3Vwcz1ifSxmcm9tR2VvbWV0cnk6ZnVuY3Rpb24oYSl7dmFyIGI9YS5mYWNlcyxjPWEudmVydGljZXMsZD1hLmZhY2VWZXJ0ZXhVdnMsZT1kWzBdJiYwPGRbMF0ubGVuZ3RoLGY9ZFsxXSYmMDxkWzFdLmxlbmd0aCxnPWEubW9ycGhUYXJnZXRzLGg9Zy5sZW5ndGg7aWYoMDxoKXt2YXIgbD1bXTtmb3IodmFyIG09MDttPGg7bSsrKWxbbV09e25hbWU6Z1ttXS5uYW1lLGRhdGE6W119O3RoaXMubW9ycGhUYXJnZXRzLnBvc2l0aW9uPWx9dmFyIGs9YS5tb3JwaE5vcm1hbHMsbj1rLmxlbmd0aDtpZigwPG4pe3ZhciB1PVtdO2ZvcihtPTA7bTxuO20rKyl1W21dPXtuYW1lOmtbbV0ubmFtZSxkYXRhOltdfTt0aGlzLm1vcnBoVGFyZ2V0cy5ub3JtYWw9dX12YXIgcD1hLnNraW5JbmRpY2VzLHQ9YS5za2luV2VpZ2h0cyx2PXAubGVuZ3RoPT09Yy5sZW5ndGgseT10Lmxlbmd0aD09PWMubGVuZ3RoOzA8Yy5sZW5ndGgmJgowPT09Yi5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkRpcmVjdEdlb21ldHJ5OiBGYWNlbGVzcyBnZW9tZXRyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiIpO2ZvcihtPTA7bTxiLmxlbmd0aDttKyspe3ZhciB3PWJbbV07dGhpcy52ZXJ0aWNlcy5wdXNoKGNbdy5hXSxjW3cuYl0sY1t3LmNdKTt2YXIgeD13LnZlcnRleE5vcm1hbHM7Mz09PXgubGVuZ3RoP3RoaXMubm9ybWFscy5wdXNoKHhbMF0seFsxXSx4WzJdKTooeD13Lm5vcm1hbCx0aGlzLm5vcm1hbHMucHVzaCh4LHgseCkpO3g9dy52ZXJ0ZXhDb2xvcnM7Mz09PXgubGVuZ3RoP3RoaXMuY29sb3JzLnB1c2goeFswXSx4WzFdLHhbMl0pOih4PXcuY29sb3IsdGhpcy5jb2xvcnMucHVzaCh4LHgseCkpOyEwPT09ZSYmKHg9ZFswXVttXSx2b2lkIDAhPT14P3RoaXMudXZzLnB1c2goeFswXSx4WzFdLHhbMl0pOihjb25zb2xlLndhcm4oIlRIUkVFLkRpcmVjdEdlb21ldHJ5LmZyb21HZW9tZXRyeSgpOiBVbmRlZmluZWQgdmVydGV4VXYgIiwKbSksdGhpcy51dnMucHVzaChuZXcgQixuZXcgQixuZXcgQikpKTshMD09PWYmJih4PWRbMV1bbV0sdm9pZCAwIT09eD90aGlzLnV2czIucHVzaCh4WzBdLHhbMV0seFsyXSk6KGNvbnNvbGUud2FybigiVEhSRUUuRGlyZWN0R2VvbWV0cnkuZnJvbUdlb21ldHJ5KCk6IFVuZGVmaW5lZCB2ZXJ0ZXhVdjIgIixtKSx0aGlzLnV2czIucHVzaChuZXcgQixuZXcgQixuZXcgQikpKTtmb3IoeD0wO3g8aDt4Kyspe3ZhciBBPWdbeF0udmVydGljZXM7bFt4XS5kYXRhLnB1c2goQVt3LmFdLEFbdy5iXSxBW3cuY10pfWZvcih4PTA7eDxuO3grKylBPWtbeF0udmVydGV4Tm9ybWFsc1ttXSx1W3hdLmRhdGEucHVzaChBLmEsQS5iLEEuYyk7diYmdGhpcy5za2luSW5kaWNlcy5wdXNoKHBbdy5hXSxwW3cuYl0scFt3LmNdKTt5JiZ0aGlzLnNraW5XZWlnaHRzLnB1c2godFt3LmFdLHRbdy5iXSx0W3cuY10pfXRoaXMuY29tcHV0ZUdyb3VwcyhhKTt0aGlzLnZlcnRpY2VzTmVlZFVwZGF0ZT1hLnZlcnRpY2VzTmVlZFVwZGF0ZTsKdGhpcy5ub3JtYWxzTmVlZFVwZGF0ZT1hLm5vcm1hbHNOZWVkVXBkYXRlO3RoaXMuY29sb3JzTmVlZFVwZGF0ZT1hLmNvbG9yc05lZWRVcGRhdGU7dGhpcy51dnNOZWVkVXBkYXRlPWEudXZzTmVlZFVwZGF0ZTt0aGlzLmdyb3Vwc05lZWRVcGRhdGU9YS5ncm91cHNOZWVkVXBkYXRlO251bGwhPT1hLmJvdW5kaW5nU3BoZXJlJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1hLmJvdW5kaW5nU3BoZXJlLmNsb25lKCkpO251bGwhPT1hLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1hLmJvdW5kaW5nQm94LmNsb25lKCkpO3JldHVybiB0aGlzfX0pO3ZhciBWaT0xLGpiPW5ldyBRLFZnPW5ldyBFLEJmPW5ldyBuLHFjPW5ldyBhYixXZz1uZXcgYWIsWmE9bmV3IG47RC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEFhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkQsaXNCdWZmZXJHZW9tZXRyeTohMCxnZXRJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluZGV4fSwKc2V0SW5kZXg6ZnVuY3Rpb24oYSl7QXJyYXkuaXNBcnJheShhKT90aGlzLmluZGV4PW5ldyAoNjU1MzU8amgoYSk/VGI6U2IpKGEsMSk6dGhpcy5pbmRleD1hfSxnZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1thXX0sc2V0QXR0cmlidXRlOmZ1bmN0aW9uKGEsYil7dGhpcy5hdHRyaWJ1dGVzW2FdPWI7cmV0dXJuIHRoaXN9LGRlbGV0ZUF0dHJpYnV0ZTpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5hdHRyaWJ1dGVzW2FdO3JldHVybiB0aGlzfSxhZGRHcm91cDpmdW5jdGlvbihhLGIsYyl7dGhpcy5ncm91cHMucHVzaCh7c3RhcnQ6YSxjb3VudDpiLG1hdGVyaWFsSW5kZXg6dm9pZCAwIT09Yz9jOjB9KX0sY2xlYXJHcm91cHM6ZnVuY3Rpb24oKXt0aGlzLmdyb3Vwcz1bXX0sc2V0RHJhd1JhbmdlOmZ1bmN0aW9uKGEsYil7dGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9YTt0aGlzLmRyYXdSYW5nZS5jb3VudD1ifSxhcHBseU1hdHJpeDpmdW5jdGlvbihhKXt2YXIgYj0KdGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO3ZvaWQgMCE9PWImJihhLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoYiksYi5uZWVkc1VwZGF0ZT0hMCk7dmFyIGM9dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDt2b2lkIDAhPT1jJiYoYj0obmV3IFopLmdldE5vcm1hbE1hdHJpeChhKSxiLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoYyksYy5uZWVkc1VwZGF0ZT0hMCk7Yz10aGlzLmF0dHJpYnV0ZXMudGFuZ2VudDt2b2lkIDAhPT1jJiYoYj0obmV3IFopLmdldE5vcm1hbE1hdHJpeChhKSxiLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoYyksYy5uZWVkc1VwZGF0ZT0hMCk7bnVsbCE9PXRoaXMuYm91bmRpbmdCb3gmJnRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCk7bnVsbCE9PXRoaXMuYm91bmRpbmdTcGhlcmUmJnRoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7cmV0dXJuIHRoaXN9LHJvdGF0ZVg6ZnVuY3Rpb24oYSl7amIubWFrZVJvdGF0aW9uWChhKTt0aGlzLmFwcGx5TWF0cml4KGpiKTtyZXR1cm4gdGhpc30sCnJvdGF0ZVk6ZnVuY3Rpb24oYSl7amIubWFrZVJvdGF0aW9uWShhKTt0aGlzLmFwcGx5TWF0cml4KGpiKTtyZXR1cm4gdGhpc30scm90YXRlWjpmdW5jdGlvbihhKXtqYi5tYWtlUm90YXRpb25aKGEpO3RoaXMuYXBwbHlNYXRyaXgoamIpO3JldHVybiB0aGlzfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGMpe2piLm1ha2VUcmFuc2xhdGlvbihhLGIsYyk7dGhpcy5hcHBseU1hdHJpeChqYik7cmV0dXJuIHRoaXN9LHNjYWxlOmZ1bmN0aW9uKGEsYixjKXtqYi5tYWtlU2NhbGUoYSxiLGMpO3RoaXMuYXBwbHlNYXRyaXgoamIpO3JldHVybiB0aGlzfSxsb29rQXQ6ZnVuY3Rpb24oYSl7VmcubG9va0F0KGEpO1ZnLnVwZGF0ZU1hdHJpeCgpO3RoaXMuYXBwbHlNYXRyaXgoVmcubWF0cml4KTtyZXR1cm4gdGhpc30sY2VudGVyOmZ1bmN0aW9uKCl7dGhpcy5jb21wdXRlQm91bmRpbmdCb3goKTt0aGlzLmJvdW5kaW5nQm94LmdldENlbnRlcihCZikubmVnYXRlKCk7dGhpcy50cmFuc2xhdGUoQmYueCwKQmYueSxCZi56KTtyZXR1cm4gdGhpc30sc2V0RnJvbU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYj1hLmdlb21ldHJ5O2lmKGEuaXNQb2ludHN8fGEuaXNMaW5lKXthPW5ldyBBKDMqYi52ZXJ0aWNlcy5sZW5ndGgsMyk7dmFyIGM9bmV3IEEoMypiLmNvbG9ycy5sZW5ndGgsMyk7dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixhLmNvcHlWZWN0b3Izc0FycmF5KGIudmVydGljZXMpKTt0aGlzLnNldEF0dHJpYnV0ZSgiY29sb3IiLGMuY29weUNvbG9yc0FycmF5KGIuY29sb3JzKSk7Yi5saW5lRGlzdGFuY2VzJiZiLmxpbmVEaXN0YW5jZXMubGVuZ3RoPT09Yi52ZXJ0aWNlcy5sZW5ndGgmJihhPW5ldyBBKGIubGluZURpc3RhbmNlcy5sZW5ndGgsMSksdGhpcy5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsYS5jb3B5QXJyYXkoYi5saW5lRGlzdGFuY2VzKSkpO251bGwhPT1iLmJvdW5kaW5nU3BoZXJlJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1iLmJvdW5kaW5nU3BoZXJlLmNsb25lKCkpOwpudWxsIT09Yi5ib3VuZGluZ0JveCYmKHRoaXMuYm91bmRpbmdCb3g9Yi5ib3VuZGluZ0JveC5jbG9uZSgpKX1lbHNlIGEuaXNNZXNoJiZiJiZiLmlzR2VvbWV0cnkmJnRoaXMuZnJvbUdlb21ldHJ5KGIpO3JldHVybiB0aGlzfSxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKXt2YXIgZT1hW2NdO2IucHVzaChlLngsZS55LGUuenx8MCl9dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgQShiLDMpKTtyZXR1cm4gdGhpc30sdXBkYXRlRnJvbU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYj1hLmdlb21ldHJ5O2lmKGEuaXNNZXNoKXt2YXIgYz1iLl9fZGlyZWN0R2VvbWV0cnk7ITA9PT1iLmVsZW1lbnRzTmVlZFVwZGF0ZSYmKGM9dm9pZCAwLGIuZWxlbWVudHNOZWVkVXBkYXRlPSExKTtpZih2b2lkIDA9PT1jKXJldHVybiB0aGlzLmZyb21HZW9tZXRyeShiKTtjLnZlcnRpY2VzTmVlZFVwZGF0ZT1iLnZlcnRpY2VzTmVlZFVwZGF0ZTsKYy5ub3JtYWxzTmVlZFVwZGF0ZT1iLm5vcm1hbHNOZWVkVXBkYXRlO2MuY29sb3JzTmVlZFVwZGF0ZT1iLmNvbG9yc05lZWRVcGRhdGU7Yy51dnNOZWVkVXBkYXRlPWIudXZzTmVlZFVwZGF0ZTtjLmdyb3Vwc05lZWRVcGRhdGU9Yi5ncm91cHNOZWVkVXBkYXRlO2IudmVydGljZXNOZWVkVXBkYXRlPSExO2Iubm9ybWFsc05lZWRVcGRhdGU9ITE7Yi5jb2xvcnNOZWVkVXBkYXRlPSExO2IudXZzTmVlZFVwZGF0ZT0hMTtiLmdyb3Vwc05lZWRVcGRhdGU9ITE7Yj1jfSEwPT09Yi52ZXJ0aWNlc05lZWRVcGRhdGUmJihjPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbix2b2lkIDAhPT1jJiYoYy5jb3B5VmVjdG9yM3NBcnJheShiLnZlcnRpY2VzKSxjLm5lZWRzVXBkYXRlPSEwKSxiLnZlcnRpY2VzTmVlZFVwZGF0ZT0hMSk7ITA9PT1iLm5vcm1hbHNOZWVkVXBkYXRlJiYoYz10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLHZvaWQgMCE9PWMmJihjLmNvcHlWZWN0b3Izc0FycmF5KGIubm9ybWFscyksCmMubmVlZHNVcGRhdGU9ITApLGIubm9ybWFsc05lZWRVcGRhdGU9ITEpOyEwPT09Yi5jb2xvcnNOZWVkVXBkYXRlJiYoYz10aGlzLmF0dHJpYnV0ZXMuY29sb3Isdm9pZCAwIT09YyYmKGMuY29weUNvbG9yc0FycmF5KGIuY29sb3JzKSxjLm5lZWRzVXBkYXRlPSEwKSxiLmNvbG9yc05lZWRVcGRhdGU9ITEpO2IudXZzTmVlZFVwZGF0ZSYmKGM9dGhpcy5hdHRyaWJ1dGVzLnV2LHZvaWQgMCE9PWMmJihjLmNvcHlWZWN0b3Iyc0FycmF5KGIudXZzKSxjLm5lZWRzVXBkYXRlPSEwKSxiLnV2c05lZWRVcGRhdGU9ITEpO2IubGluZURpc3RhbmNlc05lZWRVcGRhdGUmJihjPXRoaXMuYXR0cmlidXRlcy5saW5lRGlzdGFuY2Usdm9pZCAwIT09YyYmKGMuY29weUFycmF5KGIubGluZURpc3RhbmNlcyksYy5uZWVkc1VwZGF0ZT0hMCksYi5saW5lRGlzdGFuY2VzTmVlZFVwZGF0ZT0hMSk7Yi5ncm91cHNOZWVkVXBkYXRlJiYoYi5jb21wdXRlR3JvdXBzKGEuZ2VvbWV0cnkpLHRoaXMuZ3JvdXBzPQpiLmdyb3VwcyxiLmdyb3Vwc05lZWRVcGRhdGU9ITEpO3JldHVybiB0aGlzfSxmcm9tR2VvbWV0cnk6ZnVuY3Rpb24oYSl7YS5fX2RpcmVjdEdlb21ldHJ5PShuZXcgaWgpLmZyb21HZW9tZXRyeShhKTtyZXR1cm4gdGhpcy5mcm9tRGlyZWN0R2VvbWV0cnkoYS5fX2RpcmVjdEdlb21ldHJ5KX0sZnJvbURpcmVjdEdlb21ldHJ5OmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBGbG9hdDMyQXJyYXkoMyphLnZlcnRpY2VzLmxlbmd0aCk7dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiwobmV3IE4oYiwzKSkuY29weVZlY3RvcjNzQXJyYXkoYS52ZXJ0aWNlcykpOzA8YS5ub3JtYWxzLmxlbmd0aCYmKGI9bmV3IEZsb2F0MzJBcnJheSgzKmEubm9ybWFscy5sZW5ndGgpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLChuZXcgTihiLDMpKS5jb3B5VmVjdG9yM3NBcnJheShhLm5vcm1hbHMpKSk7MDxhLmNvbG9ycy5sZW5ndGgmJihiPW5ldyBGbG9hdDMyQXJyYXkoMyphLmNvbG9ycy5sZW5ndGgpLAp0aGlzLnNldEF0dHJpYnV0ZSgiY29sb3IiLChuZXcgTihiLDMpKS5jb3B5Q29sb3JzQXJyYXkoYS5jb2xvcnMpKSk7MDxhLnV2cy5sZW5ndGgmJihiPW5ldyBGbG9hdDMyQXJyYXkoMiphLnV2cy5sZW5ndGgpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsKG5ldyBOKGIsMikpLmNvcHlWZWN0b3Iyc0FycmF5KGEudXZzKSkpOzA8YS51dnMyLmxlbmd0aCYmKGI9bmV3IEZsb2F0MzJBcnJheSgyKmEudXZzMi5sZW5ndGgpLHRoaXMuc2V0QXR0cmlidXRlKCJ1djIiLChuZXcgTihiLDIpKS5jb3B5VmVjdG9yMnNBcnJheShhLnV2czIpKSk7dGhpcy5ncm91cHM9YS5ncm91cHM7Zm9yKHZhciBjIGluIGEubW9ycGhUYXJnZXRzKXtiPVtdO2Zvcih2YXIgZD1hLm1vcnBoVGFyZ2V0c1tjXSxlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKXt2YXIgZz1kW2VdLGg9bmV3IEEoMypnLmRhdGEubGVuZ3RoLDMpO2gubmFtZT1nLm5hbWU7Yi5wdXNoKGguY29weVZlY3RvcjNzQXJyYXkoZy5kYXRhKSl9dGhpcy5tb3JwaEF0dHJpYnV0ZXNbY109CmJ9MDxhLnNraW5JbmRpY2VzLmxlbmd0aCYmKGM9bmV3IEEoNCphLnNraW5JbmRpY2VzLmxlbmd0aCw0KSx0aGlzLnNldEF0dHJpYnV0ZSgic2tpbkluZGV4IixjLmNvcHlWZWN0b3I0c0FycmF5KGEuc2tpbkluZGljZXMpKSk7MDxhLnNraW5XZWlnaHRzLmxlbmd0aCYmKGM9bmV3IEEoNCphLnNraW5XZWlnaHRzLmxlbmd0aCw0KSx0aGlzLnNldEF0dHJpYnV0ZSgic2tpbldlaWdodCIsYy5jb3B5VmVjdG9yNHNBcnJheShhLnNraW5XZWlnaHRzKSkpO251bGwhPT1hLmJvdW5kaW5nU3BoZXJlJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1hLmJvdW5kaW5nU3BoZXJlLmNsb25lKCkpO251bGwhPT1hLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1hLmJvdW5kaW5nQm94LmNsb25lKCkpO3JldHVybiB0aGlzfSxjb21wdXRlQm91bmRpbmdCb3g6ZnVuY3Rpb24oKXtudWxsPT09dGhpcy5ib3VuZGluZ0JveCYmKHRoaXMuYm91bmRpbmdCb3g9bmV3IGFiKTt2YXIgYT10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sCmI9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodm9pZCAwIT09YSl7aWYodGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGEpLGIpe2E9MDtmb3IodmFyIGM9Yi5sZW5ndGg7YTxjO2ErKylxYy5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGJbYV0pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChxYy5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChxYy5tYXgpfX1lbHNlIHRoaXMuYm91bmRpbmdCb3gubWFrZUVtcHR5KCk7KGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLngpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi55KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueikpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3g6IENvbXB1dGVkIG1pbi9tYXggaGF2ZSBOYU4gdmFsdWVzLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLAp0aGlzKX0sY29tcHV0ZUJvdW5kaW5nU3BoZXJlOmZ1bmN0aW9uKCl7bnVsbD09PXRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBtYik7dmFyIGE9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGI9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYoYSl7dmFyIGM9dGhpcy5ib3VuZGluZ1NwaGVyZS5jZW50ZXI7cWMuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShhKTtpZihiKWZvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZDxlO2QrKyl7dmFyIGY9YltkXTtXZy5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGYpO3FjLmV4cGFuZEJ5UG9pbnQoV2cubWluKTtxYy5leHBhbmRCeVBvaW50KFdnLm1heCl9cWMuZ2V0Q2VudGVyKGMpO3ZhciBnPTA7ZD0wO2ZvcihlPWEuY291bnQ7ZDxlO2QrKylaYS5mcm9tQnVmZmVyQXR0cmlidXRlKGEsZCksZz1NYXRoLm1heChnLGMuZGlzdGFuY2VUb1NxdWFyZWQoWmEpKTtpZihiKWZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKXtmPQpiW2RdO2E9MDtmb3IodmFyIGg9Zi5jb3VudDthPGg7YSsrKVphLmZyb21CdWZmZXJBdHRyaWJ1dGUoZixhKSxnPU1hdGgubWF4KGcsYy5kaXN0YW5jZVRvU3F1YXJlZChaYSkpfXRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzPU1hdGguc3FydChnKTtpc05hTih0aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cykmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBDb21wdXRlZCByYWRpdXMgaXMgTmFOLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfX0sY29tcHV0ZUZhY2VOb3JtYWxzOmZ1bmN0aW9uKCl7fSxjb21wdXRlVmVydGV4Tm9ybWFsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5kZXgsYj10aGlzLmF0dHJpYnV0ZXM7aWYoYi5wb3NpdGlvbil7dmFyIGM9Yi5wb3NpdGlvbi5hcnJheTtpZih2b2lkIDA9PT1iLm5vcm1hbCl0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIiwKbmV3IE4obmV3IEZsb2F0MzJBcnJheShjLmxlbmd0aCksMykpO2Vsc2UgZm9yKHZhciBkPWIubm9ybWFsLmFycmF5LGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXT0wO2Q9Yi5ub3JtYWwuYXJyYXk7dmFyIGc9bmV3IG4saD1uZXcgbixsPW5ldyBuLG09bmV3IG4saz1uZXcgbjtpZihhKXt2YXIgcT1hLmFycmF5O2U9MDtmb3IoZj1hLmNvdW50O2U8ZjtlKz0zKXthPTMqcVtlKzBdO3ZhciB1PTMqcVtlKzFdO3ZhciBwPTMqcVtlKzJdO2cuZnJvbUFycmF5KGMsYSk7aC5mcm9tQXJyYXkoYyx1KTtsLmZyb21BcnJheShjLHApO20uc3ViVmVjdG9ycyhsLGgpO2suc3ViVmVjdG9ycyhnLGgpO20uY3Jvc3Moayk7ZFthXSs9bS54O2RbYSsxXSs9bS55O2RbYSsyXSs9bS56O2RbdV0rPW0ueDtkW3UrMV0rPW0ueTtkW3UrMl0rPW0uejtkW3BdKz1tLng7ZFtwKzFdKz1tLnk7ZFtwKzJdKz1tLnp9fWVsc2UgZm9yKGU9MCxmPWMubGVuZ3RoO2U8ZjtlKz05KWcuZnJvbUFycmF5KGMsZSksaC5mcm9tQXJyYXkoYywKZSszKSxsLmZyb21BcnJheShjLGUrNiksbS5zdWJWZWN0b3JzKGwsaCksay5zdWJWZWN0b3JzKGcsaCksbS5jcm9zcyhrKSxkW2VdPW0ueCxkW2UrMV09bS55LGRbZSsyXT1tLnosZFtlKzNdPW0ueCxkW2UrNF09bS55LGRbZSs1XT1tLnosZFtlKzZdPW0ueCxkW2UrN109bS55LGRbZSs4XT1tLno7dGhpcy5ub3JtYWxpemVOb3JtYWxzKCk7Yi5ub3JtYWwubmVlZHNVcGRhdGU9ITB9fSxtZXJnZTpmdW5jdGlvbihhLGIpe2lmKGEmJmEuaXNCdWZmZXJHZW9tZXRyeSl7dm9pZCAwPT09YiYmKGI9MCxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IE92ZXJ3cml0aW5nIG9yaWdpbmFsIGdlb21ldHJ5LCBzdGFydGluZyBhdCBvZmZzZXQ9MC4gVXNlIEJ1ZmZlckdlb21ldHJ5VXRpbHMubWVyZ2VCdWZmZXJHZW9tZXRyaWVzKCkgZm9yIGxvc3NsZXNzIG1lcmdlLiIpKTt2YXIgYz10aGlzLmF0dHJpYnV0ZXMsZDtmb3IoZCBpbiBjKWlmKHZvaWQgMCE9PWEuYXR0cmlidXRlc1tkXSl7dmFyIGU9CmNbZF0uYXJyYXksZj1hLmF0dHJpYnV0ZXNbZF0sZz1mLmFycmF5LGg9Zi5pdGVtU2l6ZSpiO2Y9TWF0aC5taW4oZy5sZW5ndGgsZS5sZW5ndGgtaCk7Zm9yKHZhciBsPTA7bDxmO2wrKyxoKyspZVtoXT1nW2xdfXJldHVybiB0aGlzfWNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLGEpfSxub3JtYWxpemVOb3JtYWxzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuYXR0cmlidXRlcy5ub3JtYWwsYj0wLGM9YS5jb3VudDtiPGM7YisrKVphLng9YS5nZXRYKGIpLFphLnk9YS5nZXRZKGIpLFphLno9YS5nZXRaKGIpLFphLm5vcm1hbGl6ZSgpLGEuc2V0WFlaKGIsWmEueCxaYS55LFphLnopfSx0b05vbkluZGV4ZWQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7dmFyIGM9YS5hcnJheTthPWEuaXRlbVNpemU7Zm9yKHZhciBkPW5ldyBjLmNvbnN0cnVjdG9yKGIubGVuZ3RoKgphKSxlLGY9MCxnPTAsaD1iLmxlbmd0aDtnPGg7ZysrKXtlPWJbZ10qYTtmb3IodmFyIGw9MDtsPGE7bCsrKWRbZisrXT1jW2UrK119cmV0dXJuIG5ldyBOKGQsYSl9aWYobnVsbD09PXRoaXMuaW5kZXgpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkudG9Ob25JbmRleGVkKCk6IEdlb21ldHJ5IGlzIGFscmVhZHkgbm9uLWluZGV4ZWQuIiksdGhpczt2YXIgYj1uZXcgRCxjPXRoaXMuaW5kZXguYXJyYXksZD10aGlzLmF0dHJpYnV0ZXMsZTtmb3IoZSBpbiBkKXt2YXIgZj1kW2VdO2Y9YShmLGMpO2Iuc2V0QXR0cmlidXRlKGUsZil9dmFyIGc9dGhpcy5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGUgaW4gZyl7dmFyIGg9W10sbD1nW2VdO2Q9MDtmb3IodmFyIG09bC5sZW5ndGg7ZDxtO2QrKylmPWxbZF0sZj1hKGYsYyksaC5wdXNoKGYpO2IubW9ycGhBdHRyaWJ1dGVzW2VdPWh9Yz10aGlzLmdyb3VwcztkPTA7Zm9yKGU9Yy5sZW5ndGg7ZDxlO2QrKylmPWNbZF0sYi5hZGRHcm91cChmLnN0YXJ0LApmLmNvdW50LGYubWF0ZXJpYWxJbmRleCk7cmV0dXJuIGJ9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBhPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2EudXVpZD10aGlzLnV1aWQ7YS50eXBlPXRoaXMudHlwZTsiIiE9PXRoaXMubmFtZSYmKGEubmFtZT10aGlzLm5hbWUpOzA8T2JqZWN0LmtleXModGhpcy51c2VyRGF0YSkubGVuZ3RoJiYoYS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKTtpZih2b2lkIDAhPT10aGlzLnBhcmFtZXRlcnMpe3ZhciBiPXRoaXMucGFyYW1ldGVycztmb3IobSBpbiBiKXZvaWQgMCE9PWJbbV0mJihhW21dPWJbbV0pO3JldHVybiBhfWEuZGF0YT17YXR0cmlidXRlczp7fX07Yj10aGlzLmluZGV4O251bGwhPT1iJiYoYS5kYXRhLmluZGV4PXt0eXBlOmIuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiLmFycmF5KX0pOwp2YXIgYz10aGlzLmF0dHJpYnV0ZXM7Zm9yKG0gaW4gYyl7Yj1jW21dO3ZhciBkPWIudG9KU09OKCk7IiIhPT1iLm5hbWUmJihkLm5hbWU9Yi5uYW1lKTthLmRhdGEuYXR0cmlidXRlc1ttXT1kfWM9e307dmFyIGU9ITE7Zm9yKG0gaW4gdGhpcy5tb3JwaEF0dHJpYnV0ZXMpe2Zvcih2YXIgZj10aGlzLm1vcnBoQXR0cmlidXRlc1ttXSxnPVtdLGg9MCxsPWYubGVuZ3RoO2g8bDtoKyspYj1mW2hdLGQ9Yi50b0pTT04oKSwiIiE9PWIubmFtZSYmKGQubmFtZT1iLm5hbWUpLGcucHVzaChkKTswPGcubGVuZ3RoJiYoY1ttXT1nLGU9ITApfWUmJihhLmRhdGEubW9ycGhBdHRyaWJ1dGVzPWMpO3ZhciBtPXRoaXMuZ3JvdXBzOzA8bS5sZW5ndGgmJihhLmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobSkpKTttPXRoaXMuYm91bmRpbmdTcGhlcmU7bnVsbCE9PW0mJihhLmRhdGEuYm91bmRpbmdTcGhlcmU9e2NlbnRlcjptLmNlbnRlci50b0FycmF5KCkscmFkaXVzOm0ucmFkaXVzfSk7CnJldHVybiBhfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgRCkuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt2YXIgYjt0aGlzLmluZGV4PW51bGw7dGhpcy5hdHRyaWJ1dGVzPXt9O3RoaXMubW9ycGhBdHRyaWJ1dGVzPXt9O3RoaXMuZ3JvdXBzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMubmFtZT1hLm5hbWU7dmFyIGM9YS5pbmRleDtudWxsIT09YyYmdGhpcy5zZXRJbmRleChjLmNsb25lKCkpO2M9YS5hdHRyaWJ1dGVzO2ZvcihnIGluIGMpdGhpcy5zZXRBdHRyaWJ1dGUoZyxjW2ddLmNsb25lKCkpO3ZhciBkPWEubW9ycGhBdHRyaWJ1dGVzO2ZvcihnIGluIGQpe3ZhciBlPVtdLGY9ZFtnXTtjPTA7Zm9yKGI9Zi5sZW5ndGg7YzxiO2MrKyllLnB1c2goZltjXS5jbG9uZSgpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1tnXT1lfXZhciBnPWEuZ3JvdXBzO2M9MDtmb3IoYj1nLmxlbmd0aDtjPGI7YysrKWQ9Z1tjXSx0aGlzLmFkZEdyb3VwKGQuc3RhcnQsCmQuY291bnQsZC5tYXRlcmlhbEluZGV4KTtnPWEuYm91bmRpbmdCb3g7bnVsbCE9PWcmJih0aGlzLmJvdW5kaW5nQm94PWcuY2xvbmUoKSk7Zz1hLmJvdW5kaW5nU3BoZXJlO251bGwhPT1nJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1nLmNsb25lKCkpO3RoaXMuZHJhd1JhbmdlLnN0YXJ0PWEuZHJhd1JhbmdlLnN0YXJ0O3RoaXMuZHJhd1JhbmdlLmNvdW50PWEuZHJhd1JhbmdlLmNvdW50O3RoaXMudXNlckRhdGE9YS51c2VyRGF0YTtyZXR1cm4gdGhpc30sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19KTt2YXIgdWk9bmV3IFEscmM9bmV3IFJiLFhnPW5ldyBtYixVYj1uZXcgbixWYj1uZXcgbixXYj1uZXcgbixsaD1uZXcgbixtaD1uZXcgbixuaD1uZXcgbixZZj1uZXcgbixaZj1uZXcgbiwkZj1uZXcgbix5Yz1uZXcgQix6Yz1uZXcgQixBYz1uZXcgQixDZD1uZXcgbixFZT1uZXcgbjtlYS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOmVhLGlzTWVzaDohMCxzZXREcmF3TW9kZTpmdW5jdGlvbihhKXt0aGlzLmRyYXdNb2RlPWF9LGNvcHk6ZnVuY3Rpb24oYSl7RS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5kcmF3TW9kZT1hLmRyYXdNb2RlO3ZvaWQgMCE9PWEubW9ycGhUYXJnZXRJbmZsdWVuY2VzJiYodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9YS5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKSk7dm9pZCAwIT09YS5tb3JwaFRhcmdldERpY3Rpb25hcnkmJih0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT1PYmplY3QuYXNzaWduKHt9LGEubW9ycGhUYXJnZXREaWN0aW9uYXJ5KSk7cmV0dXJuIHRoaXN9LHVwZGF0ZU1vcnBoVGFyZ2V0czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2VvbWV0cnk7aWYoYS5pc0J1ZmZlckdlb21ldHJ5KXthPWEubW9ycGhBdHRyaWJ1dGVzO3ZhciBiPU9iamVjdC5rZXlzKGEpO2lmKDA8Yi5sZW5ndGgpe3ZhciBjPWFbYlswXV07aWYodm9pZCAwIT09CmMpZm9yKHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9LGE9MCxiPWMubGVuZ3RoO2E8YjthKyspe3ZhciBkPWNbYV0ubmFtZXx8U3RyaW5nKGEpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCk7dGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbZF09YX19fWVsc2UgYT1hLm1vcnBoVGFyZ2V0cyx2b2lkIDAhPT1hJiYwPGEubGVuZ3RoJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9LHJheWNhc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmdlb21ldHJ5LGQ9dGhpcy5tYXRlcmlhbCxlPXRoaXMubWF0cml4V29ybGQ7aWYodm9pZCAwIT09ZCYmKG51bGw9PT1jLmJvdW5kaW5nU3BoZXJlJiZjLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLFhnLmNvcHkoYy5ib3VuZGluZ1NwaGVyZSksClhnLmFwcGx5TWF0cml4NChlKSwhMSE9PWEucmF5LmludGVyc2VjdHNTcGhlcmUoWGcpJiYodWkuZ2V0SW52ZXJzZShlKSxyYy5jb3B5KGEucmF5KS5hcHBseU1hdHJpeDQodWkpLG51bGw9PT1jLmJvdW5kaW5nQm94fHwhMSE9PXJjLmludGVyc2VjdHNCb3goYy5ib3VuZGluZ0JveCkpKSlpZigwIT09dGhpcy5kcmF3TW9kZSljb25zb2xlLndhcm4oIlRIUkVFLk1lc2g6IFRyaWFuZ2xlU3RyaXBEcmF3TW9kZSBhbmQgVHJpYW5nbGVGYW5EcmF3TW9kZSBhcmUgbm90IHN1cHBvcnRlZCBieSAucmF5Y2FzdCgpLiIpO2Vsc2UgaWYoYy5pc0J1ZmZlckdlb21ldHJ5KXt2YXIgZj1jLmluZGV4O2U9Yy5hdHRyaWJ1dGVzLnBvc2l0aW9uO3ZhciBnPWMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLGg9Yy5hdHRyaWJ1dGVzLnV2LGw9Yy5hdHRyaWJ1dGVzLnV2MixtPWMuZ3JvdXBzLGs9Yy5kcmF3UmFuZ2Usbix1O2lmKG51bGwhPT1mKWlmKEFycmF5LmlzQXJyYXkoZCkpe3ZhciBwPTA7Zm9yKG49Cm0ubGVuZ3RoO3A8bjtwKyspe3ZhciB0PW1bcF07dmFyIHY9ZFt0Lm1hdGVyaWFsSW5kZXhdO3ZhciB5PU1hdGgubWF4KHQuc3RhcnQsay5zdGFydCk7Zm9yKHU9Yz1NYXRoLm1pbih0LnN0YXJ0K3QuY291bnQsay5zdGFydCtrLmNvdW50KTt5PHU7eSs9Myl7Yz1mLmdldFgoeSk7dmFyIHc9Zi5nZXRYKHkrMSk7dmFyIHg9Zi5nZXRYKHkrMik7aWYoYz1GZSh0aGlzLHYsYSxyYyxlLGcsaCxsLGMsdyx4KSljLmZhY2VJbmRleD1NYXRoLmZsb29yKHkvMyksYy5mYWNlLm1hdGVyaWFsSW5kZXg9dC5tYXRlcmlhbEluZGV4LGIucHVzaChjKX19fWVsc2UgZm9yKHk9TWF0aC5tYXgoMCxrLnN0YXJ0KSxjPU1hdGgubWluKGYuY291bnQsay5zdGFydCtrLmNvdW50KSxwPXksbj1jO3A8bjtwKz0zKXtpZihjPWYuZ2V0WChwKSx3PWYuZ2V0WChwKzEpLHg9Zi5nZXRYKHArMiksYz1GZSh0aGlzLGQsYSxyYyxlLGcsaCxsLGMsdyx4KSljLmZhY2VJbmRleD1NYXRoLmZsb29yKHAvMyksYi5wdXNoKGMpfWVsc2UgaWYodm9pZCAwIT09CmUpaWYoQXJyYXkuaXNBcnJheShkKSlmb3IocD0wLG49bS5sZW5ndGg7cDxuO3ArKylmb3IodD1tW3BdLHY9ZFt0Lm1hdGVyaWFsSW5kZXhdLHk9TWF0aC5tYXgodC5zdGFydCxrLnN0YXJ0KSx1PWM9TWF0aC5taW4odC5zdGFydCt0LmNvdW50LGsuc3RhcnQray5jb3VudCk7eTx1O3krPTMpe2lmKGM9eSx3PXkrMSx4PXkrMixjPUZlKHRoaXMsdixhLHJjLGUsZyxoLGwsYyx3LHgpKWMuZmFjZUluZGV4PU1hdGguZmxvb3IoeS8zKSxjLmZhY2UubWF0ZXJpYWxJbmRleD10Lm1hdGVyaWFsSW5kZXgsYi5wdXNoKGMpfWVsc2UgZm9yKHk9TWF0aC5tYXgoMCxrLnN0YXJ0KSxjPU1hdGgubWluKGUuY291bnQsay5zdGFydCtrLmNvdW50KSxwPXksbj1jO3A8bjtwKz0zKWlmKGM9cCx3PXArMSx4PXArMixjPUZlKHRoaXMsZCxhLHJjLGUsZyxoLGwsYyx3LHgpKWMuZmFjZUluZGV4PU1hdGguZmxvb3IocC8zKSxiLnB1c2goYyl9ZWxzZSBpZihjLmlzR2VvbWV0cnkpZm9yKGU9QXJyYXkuaXNBcnJheShkKSwKZz1jLnZlcnRpY2VzLGg9Yy5mYWNlcyxjPWMuZmFjZVZlcnRleFV2c1swXSwwPGMubGVuZ3RoJiYoZj1jKSxwPTAsbj1oLmxlbmd0aDtwPG47cCsrKWlmKHQ9aFtwXSxjPWU/ZFt0Lm1hdGVyaWFsSW5kZXhdOmQsdm9pZCAwIT09YyYmKGw9Z1t0LmFdLG09Z1t0LmJdLGs9Z1t0LmNdLGM9a2godGhpcyxjLGEscmMsbCxtLGssQ2QpKSlmJiZmW3BdJiYodj1mW3BdLHljLmNvcHkodlswXSksemMuY29weSh2WzFdKSxBYy5jb3B5KHZbMl0pLGMudXY9YmEuZ2V0VVYoQ2QsbCxtLGsseWMsemMsQWMsbmV3IEIpKSxjLmZhY2U9dCxjLmZhY2VJbmRleD1wLGIucHVzaChjKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5nZW9tZXRyeSx0aGlzLm1hdGVyaWFsKSkuY29weSh0aGlzKX19KTt2YXIgV2k9MCxrYj1uZXcgUSxZZz1uZXcgRSxDZj1uZXcgbjtHLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQWEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6RywKaXNHZW9tZXRyeTohMCxhcHBseU1hdHJpeDpmdW5jdGlvbihhKXtmb3IodmFyIGI9KG5ldyBaKS5nZXROb3JtYWxNYXRyaXgoYSksYz0wLGQ9dGhpcy52ZXJ0aWNlcy5sZW5ndGg7YzxkO2MrKyl0aGlzLnZlcnRpY2VzW2NdLmFwcGx5TWF0cml4NChhKTtjPTA7Zm9yKGQ9dGhpcy5mYWNlcy5sZW5ndGg7YzxkO2MrKyl7YT10aGlzLmZhY2VzW2NdO2Eubm9ybWFsLmFwcGx5TWF0cml4MyhiKS5ub3JtYWxpemUoKTtmb3IodmFyIGU9MCxmPWEudmVydGV4Tm9ybWFscy5sZW5ndGg7ZTxmO2UrKylhLnZlcnRleE5vcm1hbHNbZV0uYXBwbHlNYXRyaXgzKGIpLm5vcm1hbGl6ZSgpfW51bGwhPT10aGlzLmJvdW5kaW5nQm94JiZ0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpO251bGwhPT10aGlzLmJvdW5kaW5nU3BoZXJlJiZ0aGlzLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO3RoaXMubm9ybWFsc05lZWRVcGRhdGU9dGhpcy52ZXJ0aWNlc05lZWRVcGRhdGU9ITA7cmV0dXJuIHRoaXN9LHJvdGF0ZVg6ZnVuY3Rpb24oYSl7a2IubWFrZVJvdGF0aW9uWChhKTsKdGhpcy5hcHBseU1hdHJpeChrYik7cmV0dXJuIHRoaXN9LHJvdGF0ZVk6ZnVuY3Rpb24oYSl7a2IubWFrZVJvdGF0aW9uWShhKTt0aGlzLmFwcGx5TWF0cml4KGtiKTtyZXR1cm4gdGhpc30scm90YXRlWjpmdW5jdGlvbihhKXtrYi5tYWtlUm90YXRpb25aKGEpO3RoaXMuYXBwbHlNYXRyaXgoa2IpO3JldHVybiB0aGlzfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGMpe2tiLm1ha2VUcmFuc2xhdGlvbihhLGIsYyk7dGhpcy5hcHBseU1hdHJpeChrYik7cmV0dXJuIHRoaXN9LHNjYWxlOmZ1bmN0aW9uKGEsYixjKXtrYi5tYWtlU2NhbGUoYSxiLGMpO3RoaXMuYXBwbHlNYXRyaXgoa2IpO3JldHVybiB0aGlzfSxsb29rQXQ6ZnVuY3Rpb24oYSl7WWcubG9va0F0KGEpO1lnLnVwZGF0ZU1hdHJpeCgpO3RoaXMuYXBwbHlNYXRyaXgoWWcubWF0cml4KTtyZXR1cm4gdGhpc30sZnJvbUJ1ZmZlckdlb21ldHJ5OmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGQsZSl7dmFyIGY9dm9pZCAwPT09Cmg/W106W2MuY29sb3JzW2FdLmNsb25lKCksYy5jb2xvcnNbYl0uY2xvbmUoKSxjLmNvbG9yc1tkXS5jbG9uZSgpXSxrPXZvaWQgMD09PWc/W106WyhuZXcgbikuZnJvbUFycmF5KGcsMyphKSwobmV3IG4pLmZyb21BcnJheShnLDMqYiksKG5ldyBuKS5mcm9tQXJyYXkoZywzKmQpXTtlPW5ldyB4YyhhLGIsZCxrLGYsZSk7Yy5mYWNlcy5wdXNoKGUpO3ZvaWQgMCE9PWwmJmMuZmFjZVZlcnRleFV2c1swXS5wdXNoKFsobmV3IEIpLmZyb21BcnJheShsLDIqYSksKG5ldyBCKS5mcm9tQXJyYXkobCwyKmIpLChuZXcgQikuZnJvbUFycmF5KGwsMipkKV0pO3ZvaWQgMCE9PW0mJmMuZmFjZVZlcnRleFV2c1sxXS5wdXNoKFsobmV3IEIpLmZyb21BcnJheShtLDIqYSksKG5ldyBCKS5mcm9tQXJyYXkobSwyKmIpLChuZXcgQikuZnJvbUFycmF5KG0sMipkKV0pfXZhciBjPXRoaXMsZD1udWxsIT09YS5pbmRleD9hLmluZGV4LmFycmF5OnZvaWQgMCxlPWEuYXR0cmlidXRlcztpZih2b2lkIDA9PT0KZS5wb3NpdGlvbilyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuR2VvbWV0cnkuZnJvbUJ1ZmZlckdlb21ldHJ5KCk6IFBvc2l0aW9uIGF0dHJpYnV0ZSByZXF1aXJlZCBmb3IgY29udmVyc2lvbi4iKSx0aGlzO3ZhciBmPWUucG9zaXRpb24uYXJyYXksZz12b2lkIDAhPT1lLm5vcm1hbD9lLm5vcm1hbC5hcnJheTp2b2lkIDAsaD12b2lkIDAhPT1lLmNvbG9yP2UuY29sb3IuYXJyYXk6dm9pZCAwLGw9dm9pZCAwIT09ZS51dj9lLnV2LmFycmF5OnZvaWQgMCxtPXZvaWQgMCE9PWUudXYyP2UudXYyLmFycmF5OnZvaWQgMDt2b2lkIDAhPT1tJiYodGhpcy5mYWNlVmVydGV4VXZzWzFdPVtdKTtmb3IoZT0wO2U8Zi5sZW5ndGg7ZSs9MyljLnZlcnRpY2VzLnB1c2goKG5ldyBuKS5mcm9tQXJyYXkoZixlKSksdm9pZCAwIT09aCYmYy5jb2xvcnMucHVzaCgobmV3IEopLmZyb21BcnJheShoLGUpKTt2YXIgaz1hLmdyb3VwcztpZigwPGsubGVuZ3RoKWZvcihlPTA7ZTxrLmxlbmd0aDtlKyspe2Y9CmtbZV07dmFyIHE9Zi5zdGFydCx1PXE7Zm9yKHErPWYuY291bnQ7dTxxO3UrPTMpdm9pZCAwIT09ZD9iKGRbdV0sZFt1KzFdLGRbdSsyXSxmLm1hdGVyaWFsSW5kZXgpOmIodSx1KzEsdSsyLGYubWF0ZXJpYWxJbmRleCl9ZWxzZSBpZih2b2lkIDAhPT1kKWZvcihlPTA7ZTxkLmxlbmd0aDtlKz0zKWIoZFtlXSxkW2UrMV0sZFtlKzJdKTtlbHNlIGZvcihlPTA7ZTxmLmxlbmd0aC8zO2UrPTMpYihlLGUrMSxlKzIpO3RoaXMuY29tcHV0ZUZhY2VOb3JtYWxzKCk7bnVsbCE9PWEuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PWEuYm91bmRpbmdCb3guY2xvbmUoKSk7bnVsbCE9PWEuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPWEuYm91bmRpbmdTcGhlcmUuY2xvbmUoKSk7cmV0dXJuIHRoaXN9LGNlbnRlcjpmdW5jdGlvbigpe3RoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCk7dGhpcy5ib3VuZGluZ0JveC5nZXRDZW50ZXIoQ2YpLm5lZ2F0ZSgpO3RoaXMudHJhbnNsYXRlKENmLngsCkNmLnksQ2Yueik7cmV0dXJuIHRoaXN9LG5vcm1hbGl6ZTpmdW5jdGlvbigpe3RoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7dmFyIGE9dGhpcy5ib3VuZGluZ1NwaGVyZS5jZW50ZXIsYj10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cztiPTA9PT1iPzE6MS9iO3ZhciBjPW5ldyBRO2Muc2V0KGIsMCwwLC1iKmEueCwwLGIsMCwtYiphLnksMCwwLGIsLWIqYS56LDAsMCwwLDEpO3RoaXMuYXBwbHlNYXRyaXgoYyk7cmV0dXJuIHRoaXN9LGNvbXB1dGVGYWNlTm9ybWFsczpmdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgbixiPW5ldyBuLGM9MCxkPXRoaXMuZmFjZXMubGVuZ3RoO2M8ZDtjKyspe3ZhciBlPXRoaXMuZmFjZXNbY10sZj10aGlzLnZlcnRpY2VzW2UuYV0sZz10aGlzLnZlcnRpY2VzW2UuYl07YS5zdWJWZWN0b3JzKHRoaXMudmVydGljZXNbZS5jXSxnKTtiLnN1YlZlY3RvcnMoZixnKTthLmNyb3NzKGIpO2Eubm9ybWFsaXplKCk7ZS5ub3JtYWwuY29weShhKX19LGNvbXB1dGVWZXJ0ZXhOb3JtYWxzOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PQphJiYoYT0hMCk7dmFyIGI7dmFyIGM9QXJyYXkodGhpcy52ZXJ0aWNlcy5sZW5ndGgpO3ZhciBkPTA7Zm9yKGI9dGhpcy52ZXJ0aWNlcy5sZW5ndGg7ZDxiO2QrKyljW2RdPW5ldyBuO2lmKGEpe3ZhciBlPW5ldyBuLGY9bmV3IG47YT0wO2ZvcihkPXRoaXMuZmFjZXMubGVuZ3RoO2E8ZDthKyspe2I9dGhpcy5mYWNlc1thXTt2YXIgZz10aGlzLnZlcnRpY2VzW2IuYV07dmFyIGg9dGhpcy52ZXJ0aWNlc1tiLmJdO3ZhciBsPXRoaXMudmVydGljZXNbYi5jXTtlLnN1YlZlY3RvcnMobCxoKTtmLnN1YlZlY3RvcnMoZyxoKTtlLmNyb3NzKGYpO2NbYi5hXS5hZGQoZSk7Y1tiLmJdLmFkZChlKTtjW2IuY10uYWRkKGUpfX1lbHNlIGZvcih0aGlzLmNvbXB1dGVGYWNlTm9ybWFscygpLGE9MCxkPXRoaXMuZmFjZXMubGVuZ3RoO2E8ZDthKyspYj10aGlzLmZhY2VzW2FdLGNbYi5hXS5hZGQoYi5ub3JtYWwpLGNbYi5iXS5hZGQoYi5ub3JtYWwpLGNbYi5jXS5hZGQoYi5ub3JtYWwpO2Q9MDtmb3IoYj0KdGhpcy52ZXJ0aWNlcy5sZW5ndGg7ZDxiO2QrKyljW2RdLm5vcm1hbGl6ZSgpO2E9MDtmb3IoZD10aGlzLmZhY2VzLmxlbmd0aDthPGQ7YSsrKWI9dGhpcy5mYWNlc1thXSxnPWIudmVydGV4Tm9ybWFscywzPT09Zy5sZW5ndGg/KGdbMF0uY29weShjW2IuYV0pLGdbMV0uY29weShjW2IuYl0pLGdbMl0uY29weShjW2IuY10pKTooZ1swXT1jW2IuYV0uY2xvbmUoKSxnWzFdPWNbYi5iXS5jbG9uZSgpLGdbMl09Y1tiLmNdLmNsb25lKCkpOzA8dGhpcy5mYWNlcy5sZW5ndGgmJih0aGlzLm5vcm1hbHNOZWVkVXBkYXRlPSEwKX0sY29tcHV0ZUZsYXRWZXJ0ZXhOb3JtYWxzOmZ1bmN0aW9uKCl7dmFyIGE7dGhpcy5jb21wdXRlRmFjZU5vcm1hbHMoKTt2YXIgYj0wO2ZvcihhPXRoaXMuZmFjZXMubGVuZ3RoO2I8YTtiKyspe3ZhciBjPXRoaXMuZmFjZXNbYl07dmFyIGQ9Yy52ZXJ0ZXhOb3JtYWxzOzM9PT1kLmxlbmd0aD8oZFswXS5jb3B5KGMubm9ybWFsKSxkWzFdLmNvcHkoYy5ub3JtYWwpLApkWzJdLmNvcHkoYy5ub3JtYWwpKTooZFswXT1jLm5vcm1hbC5jbG9uZSgpLGRbMV09Yy5ub3JtYWwuY2xvbmUoKSxkWzJdPWMubm9ybWFsLmNsb25lKCkpfTA8dGhpcy5mYWNlcy5sZW5ndGgmJih0aGlzLm5vcm1hbHNOZWVkVXBkYXRlPSEwKX0sY29tcHV0ZU1vcnBoTm9ybWFsczpmdW5jdGlvbigpe3ZhciBhLGI7dmFyIGM9MDtmb3IoYj10aGlzLmZhY2VzLmxlbmd0aDtjPGI7YysrKXt2YXIgZD10aGlzLmZhY2VzW2NdO2QuX19vcmlnaW5hbEZhY2VOb3JtYWw/ZC5fX29yaWdpbmFsRmFjZU5vcm1hbC5jb3B5KGQubm9ybWFsKTpkLl9fb3JpZ2luYWxGYWNlTm9ybWFsPWQubm9ybWFsLmNsb25lKCk7ZC5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc3x8KGQuX19vcmlnaW5hbFZlcnRleE5vcm1hbHM9W10pO3ZhciBlPTA7Zm9yKGE9ZC52ZXJ0ZXhOb3JtYWxzLmxlbmd0aDtlPGE7ZSsrKWQuX19vcmlnaW5hbFZlcnRleE5vcm1hbHNbZV0/ZC5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc1tlXS5jb3B5KGQudmVydGV4Tm9ybWFsc1tlXSk6CmQuX19vcmlnaW5hbFZlcnRleE5vcm1hbHNbZV09ZC52ZXJ0ZXhOb3JtYWxzW2VdLmNsb25lKCl9dmFyIGY9bmV3IEc7Zi5mYWNlcz10aGlzLmZhY2VzO2U9MDtmb3IoYT10aGlzLm1vcnBoVGFyZ2V0cy5sZW5ndGg7ZTxhO2UrKyl7aWYoIXRoaXMubW9ycGhOb3JtYWxzW2VdKXt0aGlzLm1vcnBoTm9ybWFsc1tlXT17fTt0aGlzLm1vcnBoTm9ybWFsc1tlXS5mYWNlTm9ybWFscz1bXTt0aGlzLm1vcnBoTm9ybWFsc1tlXS52ZXJ0ZXhOb3JtYWxzPVtdO2Q9dGhpcy5tb3JwaE5vcm1hbHNbZV0uZmFjZU5vcm1hbHM7dmFyIGc9dGhpcy5tb3JwaE5vcm1hbHNbZV0udmVydGV4Tm9ybWFscztjPTA7Zm9yKGI9dGhpcy5mYWNlcy5sZW5ndGg7YzxiO2MrKyl7dmFyIGg9bmV3IG47dmFyIGw9e2E6bmV3IG4sYjpuZXcgbixjOm5ldyBufTtkLnB1c2goaCk7Zy5wdXNoKGwpfX1nPXRoaXMubW9ycGhOb3JtYWxzW2VdO2YudmVydGljZXM9dGhpcy5tb3JwaFRhcmdldHNbZV0udmVydGljZXM7Zi5jb21wdXRlRmFjZU5vcm1hbHMoKTsKZi5jb21wdXRlVmVydGV4Tm9ybWFscygpO2M9MDtmb3IoYj10aGlzLmZhY2VzLmxlbmd0aDtjPGI7YysrKWQ9dGhpcy5mYWNlc1tjXSxoPWcuZmFjZU5vcm1hbHNbY10sbD1nLnZlcnRleE5vcm1hbHNbY10saC5jb3B5KGQubm9ybWFsKSxsLmEuY29weShkLnZlcnRleE5vcm1hbHNbMF0pLGwuYi5jb3B5KGQudmVydGV4Tm9ybWFsc1sxXSksbC5jLmNvcHkoZC52ZXJ0ZXhOb3JtYWxzWzJdKX1jPTA7Zm9yKGI9dGhpcy5mYWNlcy5sZW5ndGg7YzxiO2MrKylkPXRoaXMuZmFjZXNbY10sZC5ub3JtYWw9ZC5fX29yaWdpbmFsRmFjZU5vcm1hbCxkLnZlcnRleE5vcm1hbHM9ZC5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc30sY29tcHV0ZUJvdW5kaW5nQm94OmZ1bmN0aW9uKCl7bnVsbD09PXRoaXMuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PW5ldyBhYik7dGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tUG9pbnRzKHRoaXMudmVydGljZXMpfSxjb21wdXRlQm91bmRpbmdTcGhlcmU6ZnVuY3Rpb24oKXtudWxsPT09CnRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBtYik7dGhpcy5ib3VuZGluZ1NwaGVyZS5zZXRGcm9tUG9pbnRzKHRoaXMudmVydGljZXMpfSxtZXJnZTpmdW5jdGlvbihhLGIsYyl7aWYoYSYmYS5pc0dlb21ldHJ5KXt2YXIgZCxlPXRoaXMudmVydGljZXMubGVuZ3RoLGY9dGhpcy52ZXJ0aWNlcyxnPWEudmVydGljZXMsaD10aGlzLmZhY2VzLGw9YS5mYWNlcyxtPXRoaXMuY29sb3JzLGs9YS5jb2xvcnM7dm9pZCAwPT09YyYmKGM9MCk7dm9pZCAwIT09YiYmKGQ9KG5ldyBaKS5nZXROb3JtYWxNYXRyaXgoYikpO2Zvcih2YXIgbj0wLHU9Zy5sZW5ndGg7bjx1O24rKyl7dmFyIHA9Z1tuXS5jbG9uZSgpO3ZvaWQgMCE9PWImJnAuYXBwbHlNYXRyaXg0KGIpO2YucHVzaChwKX1uPTA7Zm9yKHU9ay5sZW5ndGg7bjx1O24rKyltLnB1c2goa1tuXS5jbG9uZSgpKTtuPTA7Zm9yKHU9bC5sZW5ndGg7bjx1O24rKyl7Zz1sW25dO3ZhciB0PWcudmVydGV4Tm9ybWFsczsKaz1nLnZlcnRleENvbG9yczttPW5ldyB4YyhnLmErZSxnLmIrZSxnLmMrZSk7bS5ub3JtYWwuY29weShnLm5vcm1hbCk7dm9pZCAwIT09ZCYmbS5ub3JtYWwuYXBwbHlNYXRyaXgzKGQpLm5vcm1hbGl6ZSgpO2I9MDtmb3IoZj10Lmxlbmd0aDtiPGY7YisrKXA9dFtiXS5jbG9uZSgpLHZvaWQgMCE9PWQmJnAuYXBwbHlNYXRyaXgzKGQpLm5vcm1hbGl6ZSgpLG0udmVydGV4Tm9ybWFscy5wdXNoKHApO20uY29sb3IuY29weShnLmNvbG9yKTtiPTA7Zm9yKGY9ay5sZW5ndGg7YjxmO2IrKylwPWtbYl0sbS52ZXJ0ZXhDb2xvcnMucHVzaChwLmNsb25lKCkpO20ubWF0ZXJpYWxJbmRleD1nLm1hdGVyaWFsSW5kZXgrYztoLnB1c2gobSl9bj0wO2Zvcih1PWEuZmFjZVZlcnRleFV2cy5sZW5ndGg7bjx1O24rKylmb3IoYz1hLmZhY2VWZXJ0ZXhVdnNbbl0sdm9pZCAwPT09dGhpcy5mYWNlVmVydGV4VXZzW25dJiYodGhpcy5mYWNlVmVydGV4VXZzW25dPVtdKSxiPTAsZj1jLmxlbmd0aDtiPGY7YisrKXtkPQpjW2JdO2U9W107aD0wO2ZvcihsPWQubGVuZ3RoO2g8bDtoKyspZS5wdXNoKGRbaF0uY2xvbmUoKSk7dGhpcy5mYWNlVmVydGV4VXZzW25dLnB1c2goZSl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuR2VvbWV0cnkubWVyZ2UoKTogZ2VvbWV0cnkgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkdlb21ldHJ5LiIsYSl9LG1lcmdlTWVzaDpmdW5jdGlvbihhKXthJiZhLmlzTWVzaD8oYS5tYXRyaXhBdXRvVXBkYXRlJiZhLnVwZGF0ZU1hdHJpeCgpLHRoaXMubWVyZ2UoYS5nZW9tZXRyeSxhLm1hdHJpeCkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLkdlb21ldHJ5Lm1lcmdlTWVzaCgpOiBtZXNoIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5NZXNoLiIsYSl9LG1lcmdlVmVydGljZXM6ZnVuY3Rpb24oKXt2YXIgYT17fSxiPVtdLGM9W10sZD1NYXRoLnBvdygxMCw0KSxlO3ZhciBmPTA7Zm9yKGU9dGhpcy52ZXJ0aWNlcy5sZW5ndGg7ZjxlO2YrKyl7dmFyIGc9dGhpcy52ZXJ0aWNlc1tmXTsKZz1NYXRoLnJvdW5kKGcueCpkKSsiXyIrTWF0aC5yb3VuZChnLnkqZCkrIl8iK01hdGgucm91bmQoZy56KmQpO3ZvaWQgMD09PWFbZ10/KGFbZ109ZixiLnB1c2godGhpcy52ZXJ0aWNlc1tmXSksY1tmXT1iLmxlbmd0aC0xKTpjW2ZdPWNbYVtnXV19YT1bXTtmPTA7Zm9yKGU9dGhpcy5mYWNlcy5sZW5ndGg7ZjxlO2YrKylmb3IoZD10aGlzLmZhY2VzW2ZdLGQuYT1jW2QuYV0sZC5iPWNbZC5iXSxkLmM9Y1tkLmNdLGQ9W2QuYSxkLmIsZC5jXSxnPTA7Mz5nO2crKylpZihkW2ddPT09ZFsoZysxKSUzXSl7YS5wdXNoKGYpO2JyZWFrfWZvcihmPWEubGVuZ3RoLTE7MDw9ZjtmLS0pZm9yKGQ9YVtmXSx0aGlzLmZhY2VzLnNwbGljZShkLDEpLGM9MCxlPXRoaXMuZmFjZVZlcnRleFV2cy5sZW5ndGg7YzxlO2MrKyl0aGlzLmZhY2VWZXJ0ZXhVdnNbY10uc3BsaWNlKGQsMSk7Zj10aGlzLnZlcnRpY2VzLmxlbmd0aC1iLmxlbmd0aDt0aGlzLnZlcnRpY2VzPWI7cmV0dXJuIGZ9LHNldEZyb21Qb2ludHM6ZnVuY3Rpb24oYSl7dGhpcy52ZXJ0aWNlcz0KW107Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXt2YXIgZD1hW2JdO3RoaXMudmVydGljZXMucHVzaChuZXcgbihkLngsZC55LGQuenx8MCkpfXJldHVybiB0aGlzfSxzb3J0RmFjZXNCeU1hdGVyaWFsSW5kZXg6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5mYWNlcyxiPWEubGVuZ3RoLGM9MDtjPGI7YysrKWFbY10uX2lkPWM7YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubWF0ZXJpYWxJbmRleC1iLm1hdGVyaWFsSW5kZXh9KTt2YXIgZD10aGlzLmZhY2VWZXJ0ZXhVdnNbMF0sZT10aGlzLmZhY2VWZXJ0ZXhVdnNbMV0sZixnO2QmJmQubGVuZ3RoPT09YiYmKGY9W10pO2UmJmUubGVuZ3RoPT09YiYmKGc9W10pO2ZvcihjPTA7YzxiO2MrKyl7dmFyIGg9YVtjXS5faWQ7ZiYmZi5wdXNoKGRbaF0pO2cmJmcucHVzaChlW2hdKX1mJiYodGhpcy5mYWNlVmVydGV4VXZzWzBdPWYpO2cmJih0aGlzLmZhY2VWZXJ0ZXhVdnNbMV09Zyl9LHRvSlNPTjpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSwKYixjKXtyZXR1cm4gYz9hfDE8PGI6YSZ+KDE8PGIpfWZ1bmN0aW9uIGIoYSl7dmFyIGI9YS54LnRvU3RyaW5nKCkrYS55LnRvU3RyaW5nKCkrYS56LnRvU3RyaW5nKCk7aWYodm9pZCAwIT09bVtiXSlyZXR1cm4gbVtiXTttW2JdPWwubGVuZ3RoLzM7bC5wdXNoKGEueCxhLnksYS56KTtyZXR1cm4gbVtiXX1mdW5jdGlvbiBjKGEpe3ZhciBiPWEuci50b1N0cmluZygpK2EuZy50b1N0cmluZygpK2EuYi50b1N0cmluZygpO2lmKHZvaWQgMCE9PW5bYl0pcmV0dXJuIG5bYl07bltiXT1rLmxlbmd0aDtrLnB1c2goYS5nZXRIZXgoKSk7cmV0dXJuIG5bYl19ZnVuY3Rpb24gZChhKXt2YXIgYj1hLngudG9TdHJpbmcoKSthLnkudG9TdHJpbmcoKTtpZih2b2lkIDAhPT1wW2JdKXJldHVybiBwW2JdO3BbYl09dS5sZW5ndGgvMjt1LnB1c2goYS54LGEueSk7cmV0dXJuIHBbYl19dmFyIGU9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJHZW9tZXRyeSIsZ2VuZXJhdG9yOiJHZW9tZXRyeS50b0pTT04ifX07CmUudXVpZD10aGlzLnV1aWQ7ZS50eXBlPXRoaXMudHlwZTsiIiE9PXRoaXMubmFtZSYmKGUubmFtZT10aGlzLm5hbWUpO2lmKHZvaWQgMCE9PXRoaXMucGFyYW1ldGVycyl7dmFyIGY9dGhpcy5wYXJhbWV0ZXJzLGc7Zm9yKGcgaW4gZil2b2lkIDAhPT1mW2ddJiYoZVtnXT1mW2ddKTtyZXR1cm4gZX1mPVtdO2ZvcihnPTA7Zzx0aGlzLnZlcnRpY2VzLmxlbmd0aDtnKyspe3ZhciBoPXRoaXMudmVydGljZXNbZ107Zi5wdXNoKGgueCxoLnksaC56KX1oPVtdO3ZhciBsPVtdLG09e30saz1bXSxuPXt9LHU9W10scD17fTtmb3IoZz0wO2c8dGhpcy5mYWNlcy5sZW5ndGg7ZysrKXt2YXIgdD10aGlzLmZhY2VzW2ddLHY9dm9pZCAwIT09dGhpcy5mYWNlVmVydGV4VXZzWzBdW2ddLHk9MDx0Lm5vcm1hbC5sZW5ndGgoKSx3PTA8dC52ZXJ0ZXhOb3JtYWxzLmxlbmd0aCx4PTEhPT10LmNvbG9yLnJ8fDEhPT10LmNvbG9yLmd8fDEhPT10LmNvbG9yLmIsQj0wPHQudmVydGV4Q29sb3JzLmxlbmd0aCwKQT0wO0E9YShBLDAsMCk7QT1hKEEsMSwhMCk7QT1hKEEsMiwhMSk7QT1hKEEsMyx2KTtBPWEoQSw0LHkpO0E9YShBLDUsdyk7QT1hKEEsNix4KTtBPWEoQSw3LEIpO2gucHVzaChBKTtoLnB1c2godC5hLHQuYix0LmMpO2gucHVzaCh0Lm1hdGVyaWFsSW5kZXgpO3YmJih2PXRoaXMuZmFjZVZlcnRleFV2c1swXVtnXSxoLnB1c2goZCh2WzBdKSxkKHZbMV0pLGQodlsyXSkpKTt5JiZoLnB1c2goYih0Lm5vcm1hbCkpO3cmJih5PXQudmVydGV4Tm9ybWFscyxoLnB1c2goYih5WzBdKSxiKHlbMV0pLGIoeVsyXSkpKTt4JiZoLnB1c2goYyh0LmNvbG9yKSk7QiYmKHQ9dC52ZXJ0ZXhDb2xvcnMsaC5wdXNoKGModFswXSksYyh0WzFdKSxjKHRbMl0pKSl9ZS5kYXRhPXt9O2UuZGF0YS52ZXJ0aWNlcz1mO2UuZGF0YS5ub3JtYWxzPWw7MDxrLmxlbmd0aCYmKGUuZGF0YS5jb2xvcnM9ayk7MDx1Lmxlbmd0aCYmKGUuZGF0YS51dnM9W3VdKTtlLmRhdGEuZmFjZXM9aDtyZXR1cm4gZX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IEcpLmNvcHkodGhpcyl9LApjb3B5OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZDt0aGlzLnZlcnRpY2VzPVtdO3RoaXMuY29sb3JzPVtdO3RoaXMuZmFjZXM9W107dGhpcy5mYWNlVmVydGV4VXZzPVtbXV07dGhpcy5tb3JwaFRhcmdldHM9W107dGhpcy5tb3JwaE5vcm1hbHM9W107dGhpcy5za2luV2VpZ2h0cz1bXTt0aGlzLnNraW5JbmRpY2VzPVtdO3RoaXMubGluZURpc3RhbmNlcz1bXTt0aGlzLmJvdW5kaW5nU3BoZXJlPXRoaXMuYm91bmRpbmdCb3g9bnVsbDt0aGlzLm5hbWU9YS5uYW1lO3ZhciBlPWEudmVydGljZXM7dmFyIGY9MDtmb3IoYj1lLmxlbmd0aDtmPGI7ZisrKXRoaXMudmVydGljZXMucHVzaChlW2ZdLmNsb25lKCkpO2U9YS5jb2xvcnM7Zj0wO2ZvcihiPWUubGVuZ3RoO2Y8YjtmKyspdGhpcy5jb2xvcnMucHVzaChlW2ZdLmNsb25lKCkpO2U9YS5mYWNlcztmPTA7Zm9yKGI9ZS5sZW5ndGg7ZjxiO2YrKyl0aGlzLmZhY2VzLnB1c2goZVtmXS5jbG9uZSgpKTtmPTA7Zm9yKGI9YS5mYWNlVmVydGV4VXZzLmxlbmd0aDtmPApiO2YrKyl7dmFyIGc9YS5mYWNlVmVydGV4VXZzW2ZdO3ZvaWQgMD09PXRoaXMuZmFjZVZlcnRleFV2c1tmXSYmKHRoaXMuZmFjZVZlcnRleFV2c1tmXT1bXSk7ZT0wO2ZvcihjPWcubGVuZ3RoO2U8YztlKyspe3ZhciBoPWdbZV0sbD1bXTt2YXIgbT0wO2ZvcihkPWgubGVuZ3RoO208ZDttKyspbC5wdXNoKGhbbV0uY2xvbmUoKSk7dGhpcy5mYWNlVmVydGV4VXZzW2ZdLnB1c2gobCl9fW09YS5tb3JwaFRhcmdldHM7Zj0wO2ZvcihiPW0ubGVuZ3RoO2Y8YjtmKyspe2Q9e307ZC5uYW1lPW1bZl0ubmFtZTtpZih2b2lkIDAhPT1tW2ZdLnZlcnRpY2VzKWZvcihkLnZlcnRpY2VzPVtdLGU9MCxjPW1bZl0udmVydGljZXMubGVuZ3RoO2U8YztlKyspZC52ZXJ0aWNlcy5wdXNoKG1bZl0udmVydGljZXNbZV0uY2xvbmUoKSk7aWYodm9pZCAwIT09bVtmXS5ub3JtYWxzKWZvcihkLm5vcm1hbHM9W10sZT0wLGM9bVtmXS5ub3JtYWxzLmxlbmd0aDtlPGM7ZSsrKWQubm9ybWFscy5wdXNoKG1bZl0ubm9ybWFsc1tlXS5jbG9uZSgpKTsKdGhpcy5tb3JwaFRhcmdldHMucHVzaChkKX1tPWEubW9ycGhOb3JtYWxzO2Y9MDtmb3IoYj1tLmxlbmd0aDtmPGI7ZisrKXtkPXt9O2lmKHZvaWQgMCE9PW1bZl0udmVydGV4Tm9ybWFscylmb3IoZC52ZXJ0ZXhOb3JtYWxzPVtdLGU9MCxjPW1bZl0udmVydGV4Tm9ybWFscy5sZW5ndGg7ZTxjO2UrKylnPW1bZl0udmVydGV4Tm9ybWFsc1tlXSxoPXt9LGguYT1nLmEuY2xvbmUoKSxoLmI9Zy5iLmNsb25lKCksaC5jPWcuYy5jbG9uZSgpLGQudmVydGV4Tm9ybWFscy5wdXNoKGgpO2lmKHZvaWQgMCE9PW1bZl0uZmFjZU5vcm1hbHMpZm9yKGQuZmFjZU5vcm1hbHM9W10sZT0wLGM9bVtmXS5mYWNlTm9ybWFscy5sZW5ndGg7ZTxjO2UrKylkLmZhY2VOb3JtYWxzLnB1c2gobVtmXS5mYWNlTm9ybWFsc1tlXS5jbG9uZSgpKTt0aGlzLm1vcnBoTm9ybWFscy5wdXNoKGQpfWU9YS5za2luV2VpZ2h0cztmPTA7Zm9yKGI9ZS5sZW5ndGg7ZjxiO2YrKyl0aGlzLnNraW5XZWlnaHRzLnB1c2goZVtmXS5jbG9uZSgpKTsKZT1hLnNraW5JbmRpY2VzO2Y9MDtmb3IoYj1lLmxlbmd0aDtmPGI7ZisrKXRoaXMuc2tpbkluZGljZXMucHVzaChlW2ZdLmNsb25lKCkpO2U9YS5saW5lRGlzdGFuY2VzO2Y9MDtmb3IoYj1lLmxlbmd0aDtmPGI7ZisrKXRoaXMubGluZURpc3RhbmNlcy5wdXNoKGVbZl0pO2Y9YS5ib3VuZGluZ0JveDtudWxsIT09ZiYmKHRoaXMuYm91bmRpbmdCb3g9Zi5jbG9uZSgpKTtmPWEuYm91bmRpbmdTcGhlcmU7bnVsbCE9PWYmJih0aGlzLmJvdW5kaW5nU3BoZXJlPWYuY2xvbmUoKSk7dGhpcy5lbGVtZW50c05lZWRVcGRhdGU9YS5lbGVtZW50c05lZWRVcGRhdGU7dGhpcy52ZXJ0aWNlc05lZWRVcGRhdGU9YS52ZXJ0aWNlc05lZWRVcGRhdGU7dGhpcy51dnNOZWVkVXBkYXRlPWEudXZzTmVlZFVwZGF0ZTt0aGlzLm5vcm1hbHNOZWVkVXBkYXRlPWEubm9ybWFsc05lZWRVcGRhdGU7dGhpcy5jb2xvcnNOZWVkVXBkYXRlPWEuY29sb3JzTmVlZFVwZGF0ZTt0aGlzLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlPQphLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlO3RoaXMuZ3JvdXBzTmVlZFVwZGF0ZT1hLmdyb3Vwc05lZWRVcGRhdGU7cmV0dXJuIHRoaXN9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSk7dmFyIFpnPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYixkLGUsZixnLGgpe2EuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkJveEdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOmIsaGVpZ2h0OmQsZGVwdGg6ZSx3aWR0aFNlZ21lbnRzOmYsaGVpZ2h0U2VnbWVudHM6ZyxkZXB0aFNlZ21lbnRzOmh9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBGZChiLGQsZSxmLGcsaCkpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWEmJihiLl9fcHJvdG9fXz1hKTtiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGEmJmEucHJvdG90eXBlKTtyZXR1cm4gYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn0oRyksRmQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiLApkLGUsZixnLGgpe2Z1bmN0aW9uIGMoYSxiLGMsZCxlLGYsZyxoLGwscixBKXt2YXIgdz1mL2wseT1nL3IseD1mLzIsej1nLzIsQj1oLzI7Zz1sKzE7dmFyIEU9cisxLEk9Zj0wLEMsRixEPW5ldyBuO2ZvcihGPTA7RjxFO0YrKyl7dmFyIEc9Rip5LXo7Zm9yKEM9MDtDPGc7QysrKURbYV09KEMqdy14KSpkLERbYl09RyplLERbY109QixxLnB1c2goRC54LEQueSxELnopLERbYV09MCxEW2JdPTAsRFtjXT0wPGg/MTotMSx1LnB1c2goRC54LEQueSxELnopLHAucHVzaChDL2wpLHAucHVzaCgxLUYvciksZis9MX1mb3IoRj0wO0Y8cjtGKyspZm9yKEM9MDtDPGw7QysrKWE9dCtDK2cqKEYrMSksYj10KyhDKzEpK2cqKEYrMSksYz10KyhDKzEpK2cqRixrLnB1c2godCtDK2cqRixhLGMpLGsucHVzaChhLGIsYyksSSs9NjttLmFkZEdyb3VwKHYsSSxBKTt2Kz1JO3QrPWZ9YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQm94QnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17d2lkdGg6YiwKaGVpZ2h0OmQsZGVwdGg6ZSx3aWR0aFNlZ21lbnRzOmYsaGVpZ2h0U2VnbWVudHM6ZyxkZXB0aFNlZ21lbnRzOmh9O3ZhciBtPXRoaXM7Yj1ifHwxO2Q9ZHx8MTtlPWV8fDE7Zj1NYXRoLmZsb29yKGYpfHwxO2c9TWF0aC5mbG9vcihnKXx8MTtoPU1hdGguZmxvb3IoaCl8fDE7dmFyIGs9W10scT1bXSx1PVtdLHA9W10sdD0wLHY9MDtjKCJ6IiwieSIsIngiLC0xLC0xLGUsZCxiLGgsZywwKTtjKCJ6IiwieSIsIngiLDEsLTEsZSxkLC1iLGgsZywxKTtjKCJ4IiwieiIsInkiLDEsMSxiLGUsZCxmLGgsMik7YygieCIsInoiLCJ5IiwxLC0xLGIsZSwtZCxmLGgsMyk7YygieCIsInkiLCJ6IiwxLC0xLGIsZCxlLGYsZyw0KTtjKCJ4IiwieSIsInoiLC0xLC0xLGIsZCwtZSxmLGcsNSk7dGhpcy5zZXRJbmRleChrKTt0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBBKHEsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBBKHUsMykpO3RoaXMuc2V0QXR0cmlidXRlKCJ1diIsCm5ldyBBKHAsMikpfWEmJihiLl9fcHJvdG9fXz1hKTtiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGEmJmEucHJvdG90eXBlKTtyZXR1cm4gYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn0oRCksQ2s9e2Nsb25lOlhiLG1lcmdlOnVhfTt2YS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShPLnByb3RvdHlwZSk7dmEucHJvdG90eXBlLmNvbnN0cnVjdG9yPXZhO3ZhLnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwO3ZhLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe08ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZnJhZ21lbnRTaGFkZXI9YS5mcmFnbWVudFNoYWRlcjt0aGlzLnZlcnRleFNoYWRlcj1hLnZlcnRleFNoYWRlcjt0aGlzLnVuaWZvcm1zPVhiKGEudW5pZm9ybXMpO3RoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LGEuZGVmaW5lcyk7dGhpcy53aXJlZnJhbWU9YS53aXJlZnJhbWU7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGg7CnRoaXMubGlnaHRzPWEubGlnaHRzO3RoaXMuY2xpcHBpbmc9YS5jbGlwcGluZzt0aGlzLnNraW5uaW5nPWEuc2tpbm5pbmc7dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7dGhpcy5tb3JwaE5vcm1hbHM9YS5tb3JwaE5vcm1hbHM7dGhpcy5leHRlbnNpb25zPWEuZXh0ZW5zaW9ucztyZXR1cm4gdGhpc307dmEucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihhKXt2YXIgYj1PLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLGEpO2IudW5pZm9ybXM9e307Zm9yKHZhciBjIGluIHRoaXMudW5pZm9ybXMpe3ZhciBkPXRoaXMudW5pZm9ybXNbY10udmFsdWU7Yi51bmlmb3Jtc1tjXT1kJiZkLmlzVGV4dHVyZT97dHlwZToidCIsdmFsdWU6ZC50b0pTT04oYSkudXVpZH06ZCYmZC5pc0NvbG9yP3t0eXBlOiJjIix2YWx1ZTpkLmdldEhleCgpfTpkJiZkLmlzVmVjdG9yMj97dHlwZToidjIiLHZhbHVlOmQudG9BcnJheSgpfTpkJiZkLmlzVmVjdG9yMz97dHlwZToidjMiLHZhbHVlOmQudG9BcnJheSgpfToKZCYmZC5pc1ZlY3RvcjQ/e3R5cGU6InY0Iix2YWx1ZTpkLnRvQXJyYXkoKX06ZCYmZC5pc01hdHJpeDM/e3R5cGU6Im0zIix2YWx1ZTpkLnRvQXJyYXkoKX06ZCYmZC5pc01hdHJpeDQ/e3R5cGU6Im00Iix2YWx1ZTpkLnRvQXJyYXkoKX06e3ZhbHVlOmR9fTA8T2JqZWN0LmtleXModGhpcy5kZWZpbmVzKS5sZW5ndGgmJihiLmRlZmluZXM9dGhpcy5kZWZpbmVzKTtiLnZlcnRleFNoYWRlcj10aGlzLnZlcnRleFNoYWRlcjtiLmZyYWdtZW50U2hhZGVyPXRoaXMuZnJhZ21lbnRTaGFkZXI7YT17fTtmb3IodmFyIGUgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09dGhpcy5leHRlbnNpb25zW2VdJiYoYVtlXT0hMCk7MDxPYmplY3Qua2V5cyhhKS5sZW5ndGgmJihiLmV4dGVuc2lvbnM9YSk7cmV0dXJuIGJ9O2JiLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpiYixpc0NhbWVyYTohMCxjb3B5OmZ1bmN0aW9uKGEsYil7RS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsCmEsYik7dGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weShhLm1hdHJpeFdvcmxkSW52ZXJzZSk7dGhpcy5wcm9qZWN0aW9uTWF0cml4LmNvcHkoYS5wcm9qZWN0aW9uTWF0cml4KTt0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkoYS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSk7cmV0dXJuIHRoaXN9LGdldFdvcmxkRGlyZWN0aW9uOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkNhbWVyYTogLmdldFdvcmxkRGlyZWN0aW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IG4pO3RoaXMudXBkYXRlTWF0cml4V29ybGQoITApO3ZhciBiPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIGEuc2V0KC1iWzhdLC1iWzldLC1iWzEwXSkubm9ybWFsaXplKCl9LHVwZGF0ZU1hdHJpeFdvcmxkOmZ1bmN0aW9uKGEpe0UucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkLmNhbGwodGhpcyxhKTt0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5nZXRJbnZlcnNlKHRoaXMubWF0cml4V29ybGQpfSwKY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fSk7VS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGJiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlUsaXNQZXJzcGVjdGl2ZUNhbWVyYTohMCxjb3B5OmZ1bmN0aW9uKGEsYil7YmIucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEsYik7dGhpcy5mb3Y9YS5mb3Y7dGhpcy56b29tPWEuem9vbTt0aGlzLm5lYXI9YS5uZWFyO3RoaXMuZmFyPWEuZmFyO3RoaXMuZm9jdXM9YS5mb2N1czt0aGlzLmFzcGVjdD1hLmFzcGVjdDt0aGlzLnZpZXc9bnVsbD09PWEudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sYS52aWV3KTt0aGlzLmZpbG1HYXVnZT1hLmZpbG1HYXVnZTt0aGlzLmZpbG1PZmZzZXQ9YS5maWxtT2Zmc2V0O3JldHVybiB0aGlzfSxzZXRGb2NhbExlbmd0aDpmdW5jdGlvbihhKXthPS41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL2E7dGhpcy5mb3Y9MipQLlJBRDJERUcqCk1hdGguYXRhbihhKTt0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sZ2V0Rm9jYWxMZW5ndGg6ZnVuY3Rpb24oKXt2YXIgYT1NYXRoLnRhbiguNSpQLkRFRzJSQUQqdGhpcy5mb3YpO3JldHVybi41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL2F9LGdldEVmZmVjdGl2ZUZPVjpmdW5jdGlvbigpe3JldHVybiAyKlAuUkFEMkRFRypNYXRoLmF0YW4oTWF0aC50YW4oLjUqUC5ERUcyUkFEKnRoaXMuZm92KS90aGlzLnpvb20pfSxnZXRGaWxtV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UqTWF0aC5taW4odGhpcy5hc3BlY3QsMSl9LGdldEZpbG1IZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UvTWF0aC5tYXgodGhpcy5hc3BlY3QsMSl9LHNldFZpZXdPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuYXNwZWN0PWEvYjtudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSwKb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSk7dGhpcy52aWV3LmVuYWJsZWQ9ITA7dGhpcy52aWV3LmZ1bGxXaWR0aD1hO3RoaXMudmlldy5mdWxsSGVpZ2h0PWI7dGhpcy52aWV3Lm9mZnNldFg9Yzt0aGlzLnZpZXcub2Zmc2V0WT1kO3RoaXMudmlldy53aWR0aD1lO3RoaXMudmlldy5oZWlnaHQ9Zjt0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sY2xlYXJWaWV3T2Zmc2V0OmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKTt0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sdXBkYXRlUHJvamVjdGlvbk1hdHJpeDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmVhcixiPWEqTWF0aC50YW4oLjUqUC5ERUcyUkFEKnRoaXMuZm92KS90aGlzLnpvb20sYz0yKmIsZD10aGlzLmFzcGVjdCpjLGU9LS41KmQsZj10aGlzLnZpZXc7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe3ZhciBnPWYuZnVsbFdpZHRoLApoPWYuZnVsbEhlaWdodDtlKz1mLm9mZnNldFgqZC9nO2ItPWYub2Zmc2V0WSpjL2g7ZCo9Zi53aWR0aC9nO2MqPWYuaGVpZ2h0L2h9Zj10aGlzLmZpbG1PZmZzZXQ7MCE9PWYmJihlKz1hKmYvdGhpcy5nZXRGaWxtV2lkdGgoKSk7dGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShlLGUrZCxiLGItYyxhLHRoaXMuZmFyKTt0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmdldEludmVyc2UodGhpcy5wcm9qZWN0aW9uTWF0cml4KX0sdG9KU09OOmZ1bmN0aW9uKGEpe2E9RS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyxhKTthLm9iamVjdC5mb3Y9dGhpcy5mb3Y7YS5vYmplY3Quem9vbT10aGlzLnpvb207YS5vYmplY3QubmVhcj10aGlzLm5lYXI7YS5vYmplY3QuZmFyPXRoaXMuZmFyO2Eub2JqZWN0LmZvY3VzPXRoaXMuZm9jdXM7YS5vYmplY3QuYXNwZWN0PXRoaXMuYXNwZWN0O251bGwhPT10aGlzLnZpZXcmJihhLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sCnRoaXMudmlldykpO2Eub2JqZWN0LmZpbG1HYXVnZT10aGlzLmZpbG1HYXVnZTthLm9iamVjdC5maWxtT2Zmc2V0PXRoaXMuZmlsbU9mZnNldDtyZXR1cm4gYX19KTtCYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSk7QmMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUJjO0JiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEJhLnByb3RvdHlwZSk7QmIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUJiO0JiLnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZT0hMDtCYi5wcm90b3R5cGUuZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmU9ZnVuY3Rpb24oYSxiKXt0aGlzLnRleHR1cmUudHlwZT1iLnR5cGU7dGhpcy50ZXh0dXJlLmZvcm1hdD1iLmZvcm1hdDt0aGlzLnRleHR1cmUuZW5jb2Rpbmc9Yi5lbmNvZGluZzt2YXIgYz1uZXcgdmQsZD1uZXcgdmEoe3R5cGU6IkN1YmVtYXBGcm9tRXF1aXJlY3QiLHVuaWZvcm1zOlhiKHt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSksdmVydGV4U2hhZGVyOiJ2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG59XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLApmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTRcbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWO1xuXHRzYW1wbGVVVi55ID0gYXNpbiggY2xhbXAoIGRpcmVjdGlvbi55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XG5cdHNhbXBsZVVWLnggPSBhdGFuKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xuXHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcbn0iLHNpZGU6MSxibGVuZGluZzowfSk7ZC51bmlmb3Jtcy50RXF1aXJlY3QudmFsdWU9YjtiPW5ldyBlYShuZXcgRmQoNSwKNSw1KSxkKTtjLmFkZChiKTtkPW5ldyBCYygxLDEwLDEpO2QucmVuZGVyVGFyZ2V0PXRoaXM7ZC5yZW5kZXJUYXJnZXQudGV4dHVyZS5uYW1lPSJDdWJlQ2FtZXJhVGV4dHVyZSI7ZC51cGRhdGUoYSxjKTtiLmdlb21ldHJ5LmRpc3Bvc2UoKTtiLm1hdGVyaWFsLmRpc3Bvc2UoKTtyZXR1cm4gdGhpc307WWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWS5wcm90b3R5cGUpO1liLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ZYjtZYi5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDt2YXIgc2Q9bmV3IG1iLERmPW5ldyBuO09iamVjdC5hc3NpZ24oRGQucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXRoaXMucGxhbmVzO2dbMF0uY29weShhKTtnWzFdLmNvcHkoYik7Z1syXS5jb3B5KGMpO2dbM10uY29weShkKTtnWzRdLmNvcHkoZSk7Z1s1XS5jb3B5KGYpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sCmNvcHk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMucGxhbmVzLGM9MDs2PmM7YysrKWJbY10uY29weShhLnBsYW5lc1tjXSk7cmV0dXJuIHRoaXN9LHNldEZyb21NYXRyaXg6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wbGFuZXMsYz1hLmVsZW1lbnRzO2E9Y1swXTt2YXIgZD1jWzFdLGU9Y1syXSxmPWNbM10sZz1jWzRdLGg9Y1s1XSxsPWNbNl0sbT1jWzddLGs9Y1s4XSxuPWNbOV0sdT1jWzEwXSxwPWNbMTFdLHQ9Y1sxMl0sdj1jWzEzXSx5PWNbMTRdO2M9Y1sxNV07YlswXS5zZXRDb21wb25lbnRzKGYtYSxtLWcscC1rLGMtdCkubm9ybWFsaXplKCk7YlsxXS5zZXRDb21wb25lbnRzKGYrYSxtK2cscCtrLGMrdCkubm9ybWFsaXplKCk7YlsyXS5zZXRDb21wb25lbnRzKGYrZCxtK2gscCtuLGMrdikubm9ybWFsaXplKCk7YlszXS5zZXRDb21wb25lbnRzKGYtZCxtLWgscC1uLGMtdikubm9ybWFsaXplKCk7Yls0XS5zZXRDb21wb25lbnRzKGYtZSxtLWwscC11LGMteSkubm9ybWFsaXplKCk7CmJbNV0uc2V0Q29tcG9uZW50cyhmK2UsbStsLHArdSxjK3kpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzfSxpbnRlcnNlY3RzT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2VvbWV0cnk7bnVsbD09PWIuYm91bmRpbmdTcGhlcmUmJmIuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7c2QuY29weShiLmJvdW5kaW5nU3BoZXJlKS5hcHBseU1hdHJpeDQoYS5tYXRyaXhXb3JsZCk7cmV0dXJuIHRoaXMuaW50ZXJzZWN0c1NwaGVyZShzZCl9LGludGVyc2VjdHNTcHJpdGU6ZnVuY3Rpb24oYSl7c2QuY2VudGVyLnNldCgwLDAsMCk7c2QucmFkaXVzPS43MDcxMDY3ODExODY1NDc2O3NkLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHNkKX0saW50ZXJzZWN0c1NwaGVyZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnBsYW5lcyxjPWEuY2VudGVyO2E9LWEucmFkaXVzO2Zvcih2YXIgZD0wOzY+ZDtkKyspaWYoYltkXS5kaXN0YW5jZVRvUG9pbnQoYyk8CmEpcmV0dXJuITE7cmV0dXJuITB9LGludGVyc2VjdHNCb3g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMucGxhbmVzLGM9MDs2PmM7YysrKXt2YXIgZD1iW2NdO0RmLng9MDxkLm5vcm1hbC54P2EubWF4Lng6YS5taW4ueDtEZi55PTA8ZC5ub3JtYWwueT9hLm1heC55OmEubWluLnk7RGYuej0wPGQubm9ybWFsLno/YS5tYXguejphLm1pbi56O2lmKDA+ZC5kaXN0YW5jZVRvUG9pbnQoRGYpKXJldHVybiExfXJldHVybiEwfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLnBsYW5lcyxjPTA7Nj5jO2MrKylpZigwPmJbY10uZGlzdGFuY2VUb1BvaW50KGEpKXJldHVybiExO3JldHVybiEwfX0pO3ZhciBTPXthbHBoYW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB2VXYgKS5nO1xuI2VuZGlmIixhbHBoYW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIiwKYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgPCBBTFBIQVRFU1QgKSBkaXNjYXJkO1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsCmFvbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYW9NYXA7XG5cdHVuaWZvcm0gZmxvYXQgYW9NYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGJlZ2luX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICk7IixiZWdpbm5vcm1hbF92ZXJ0ZXg6InZlYzMgb2JqZWN0Tm9ybWFsID0gdmVjMyggbm9ybWFsICk7XG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyBvYmplY3RUYW5nZW50ID0gdmVjMyggdGFuZ2VudC54eXogKTtcbiNlbmRpZiIsYnNkZnM6InZlYzIgaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCB2ZWM0IGMwID0gdmVjNCggLSAxLCAtIDAuMDI3NSwgLSAwLjU3MiwgMC4wMjIgKTtcblx0Y29uc3QgdmVjNCBjMSA9IHZlYzQoIDEsIDAuMDQyNSwgMS4wNCwgLSAwLjA0ICk7XG5cdHZlYzQgciA9IHJvdWdobmVzcyAqIGMwICsgYzE7XG5cdGZsb2F0IGEwMDQgPSBtaW4oIHIueCAqIHIueCwgZXhwMiggLSA5LjI4ICogZG90TlYgKSApICogci54ICsgci55O1xuXHRyZXR1cm4gdmVjMiggLTEuMDQsIDEuMDQgKSAqIGEwMDQgKyByLnp3O1xufVxuZmxvYXQgcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggY29uc3QgaW4gZmxvYXQgbGlnaHREaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgY3V0b2ZmRGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGRlY2F5RXhwb25lbnQgKSB7XG4jaWYgZGVmaW5lZCAoIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMgKVxuXHRmbG9hdCBkaXN0YW5jZUZhbGxvZmYgPSAxLjAgLyBtYXgoIHBvdyggbGlnaHREaXN0YW5jZSwgZGVjYXlFeHBvbmVudCApLCAwLjAxICk7XG5cdGlmKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCApIHtcblx0XHRkaXN0YW5jZUZhbGxvZmYgKj0gcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTtcblx0fVxuXHRyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmO1xuI2Vsc2Vcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICYmIGRlY2F5RXhwb25lbnQgPiAwLjAgKSB7XG5cdFx0cmV0dXJuIHBvdyggc2F0dXJhdGUoIC1saWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKyAxLjAgKSwgZGVjYXlFeHBvbmVudCApO1xuXHR9XG5cdHJldHVybiAxLjA7XG4jZW5kaWZcbn1cbnZlYzMgQlJERl9EaWZmdXNlX0xhbWJlcnQoIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjtcbn1cbnZlYzMgRl9TY2hsaWNrKCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IGRvdExIICkge1xuXHRmbG9hdCBmcmVzbmVsID0gZXhwMiggKCAtNS41NTQ3MyAqIGRvdExIIC0gNi45ODMxNiApICogZG90TEggKTtcblx0cmV0dXJuICggMS4wIC0gc3BlY3VsYXJDb2xvciApICogZnJlc25lbCArIHNwZWN1bGFyQ29sb3I7XG59XG52ZWMzIEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIGNvbnN0IGluIHZlYzMgRjAsIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90TlYgLSA2Ljk4MzE2ICkgKiBkb3ROViApO1xuXHR2ZWMzIEZyID0gbWF4KCB2ZWMzKCAxLjAgLSByb3VnaG5lc3MgKSwgRjAgKSAtIEYwO1xuXHRyZXR1cm4gRnIgKiBmcmVzbmVsICsgRjA7XG59XG5mbG9hdCBHX0dHWF9TbWl0aCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBnbCA9IGRvdE5MICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdGZsb2F0IGd2ID0gZG90TlYgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0cmV0dXJuIDEuMCAvICggZ2wgKiBndiApO1xufVxuZmxvYXQgR19HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGd2ID0gZG90TkwgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7XG59XG5mbG9hdCBEX0dHWCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGRlbm9tID0gcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBhMiAvIHBvdzIoIGRlbm9tICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBhbHBoYSA9IHBvdzIoIHJvdWdobmVzcyApO1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgdmlld0RpciApO1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgZG90TEggKTtcblx0ZmxvYXQgRyA9IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggYWxwaGEsIGRvdE5MLCBkb3ROViApO1xuXHRmbG9hdCBEID0gRF9HR1goIGFscGhhLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbnZlYzIgTFRDX1V2KCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCBmbG9hdCBMVVRfU0laRSAgPSA2NC4wO1xuXHRjb25zdCBmbG9hdCBMVVRfU0NBTEUgPSAoIExVVF9TSVpFIC0gMS4wICkgLyBMVVRfU0laRTtcblx0Y29uc3QgZmxvYXQgTFVUX0JJQVMgID0gMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCA9IGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgPSBhYnMoIHggKTtcblx0ZmxvYXQgYSA9IDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiA9IGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICggeCA+IDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGJyZGYueCArIGJyZGYueTtcbn1cbnZvaWQgQlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIHNwZWN1bGFyQ29sb3IsIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzMgRnNzRXNzID0gRiAqIGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRXNzID0gYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFbXMgPSAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgKz0gRm1zICogRW1zO1xufVxuZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHtcblx0cmV0dXJuIDAuMjU7XG59XG5mbG9hdCBEX0JsaW5uUGhvbmcoIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyBnZW9tZXRyeS52aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgZG90TEggKTtcblx0ZmxvYXQgRyA9IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKTtcblx0ZmxvYXQgRCA9IERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbmZsb2F0IEdHWFJvdWdobmVzc1RvQmxpbm5FeHBvbmVudCggY29uc3QgaW4gZmxvYXQgZ2d4Um91Z2huZXNzICkge1xuXHRyZXR1cm4gKCAyLjAgLyBwb3cyKCBnZ3hSb3VnaG5lc3MgKyAwLjAwMDEgKSAtIDIuMCApO1xufVxuZmxvYXQgQmxpbm5FeHBvbmVudFRvR0dYUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCBibGlubkV4cG9uZW50ICkge1xuXHRyZXR1cm4gc3FydCggMi4wIC8gKCBibGlubkV4cG9uZW50ICsgMi4wICkgKTtcbn1cbiNpZiBkZWZpbmVkKCBVU0VfU0hFRU4gKVxuZmxvYXQgRF9DaGFybGllKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgTm9IKSB7XG5cdGZsb2F0IGludkFscGhhICA9IDEuMCAvIHJvdWdobmVzcztcblx0ZmxvYXQgY29zMmggPSBOb0ggKiBOb0g7XG5cdGZsb2F0IHNpbjJoID0gbWF4KDEuMCAtIGNvczJoLCAwLjAwNzgxMjUpO1x0cmV0dXJuICgyLjAgKyBpbnZBbHBoYSkgKiBwb3coc2luMmgsIGludkFscGhhICogMC41KSAvICgyLjAgKiBQSSk7XG59XG5mbG9hdCBWX05ldWJlbHQoZmxvYXQgTm9WLCBmbG9hdCBOb0wpIHtcblx0cmV0dXJuIHNhdHVyYXRlKDEuMCAvICg0LjAgKiAoTm9MICsgTm9WIC0gTm9MICogTm9WKSkpO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX1NoZWVuKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgTCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgdmVjMyBzcGVjdWxhckNvbG9yICkge1xuXHR2ZWMzIE4gPSBnZW9tZXRyeS5ub3JtYWw7XG5cdHZlYzMgViA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdHZlYzMgSCA9IG5vcm1hbGl6ZSggViArIEwgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBOLCBIICkgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBEX0NoYXJsaWUoIHJvdWdobmVzcywgZG90TkggKSAqIFZfTmV1YmVsdCggZG90KE4sIFYpLCBkb3QoTiwgTCkgKTtcbn1cbiNlbmRpZiIsCmJ1bXBtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9CVU1QTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XG5cdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xuXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcblx0XHR2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7XG5cdFx0dmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApO1xuXHRcdGZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcblx0XHRmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcblx0XHRmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcblx0XHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcblx0fVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5ICkge1xuXHRcdHZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2TiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7XG5cdFx0dmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApO1xuXHRcdGZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICk7XG5cdFx0ZkRldCAqPSAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLApjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2ZWM0IHBsYW5lO1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpID0gMDsgaSA8IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0aWYgKCBkb3QoIHZWaWV3UG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApIGRpc2NhcmQ7XG5cdH1cblx0I2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyA8IE5VTV9DTElQUElOR19QTEFORVNcblx0XHRib29sIGNsaXBwZWQgPSB0cnVlO1xuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0XHRmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0XHRjbGlwcGVkID0gKCBkb3QoIHZWaWV3UG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApICYmIGNsaXBwZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xpcHBlZCApIGRpc2NhcmQ7XG5cdCNlbmRpZlxuI2VuZGlmIiwKY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHQjaWYgISBkZWZpbmVkKCBTVEFOREFSRCApICYmICEgZGVmaW5lZCggUEhPTkcgKSAmJiAhIGRlZmluZWQoIE1BVENBUCApXG5cdFx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG5cdCNlbmRpZlxuXHR1bmlmb3JtIHZlYzQgY2xpcHBpbmdQbGFuZXNbIE5VTV9DTElQUElOR19QTEFORVMgXTtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDAgJiYgISBkZWZpbmVkKCBTVEFOREFSRCApICYmICEgZGVmaW5lZCggUEhPTkcgKSAmJiAhIGRlZmluZWQoIE1BVENBUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDAgJiYgISBkZWZpbmVkKCBTVEFOREFSRCApICYmICEgZGVmaW5lZCggUEhPTkcgKSAmJiAhIGRlZmluZWQoIE1BVENBUCApXG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmIiwKY29sb3JfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ09MT1Jcblx0ZGlmZnVzZUNvbG9yLnJnYiAqPSB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ09MT1Jcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfQ09MT1Jcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvci54eXogPSBjb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU5XG4jZGVmaW5lIFBJMiA2LjI4MzE4NTMwNzE4XG4jZGVmaW5lIFBJX0hBTEYgMS41NzA3OTYzMjY3OTQ5XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxOFxuI2RlZmluZSBSRUNJUFJPQ0FMX1BJMiAwLjE1OTE1NDk0XG4jZGVmaW5lIExPRzIgMS40NDI2OTVcbiNkZWZpbmUgRVBTSUxPTiAxZS02XG4jaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZW5kaWZcbiNkZWZpbmUgd2hpdGVDb21wbGVtZW50KGEpICggMS4wIC0gc2F0dXJhdGUoIGEgKSApXG5mbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9XG5mbG9hdCBwb3czKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4Kng7IH1cbmZsb2F0IHBvdzQoIGNvbnN0IGluIGZsb2F0IHggKSB7IGZsb2F0IHgyID0geCp4OyByZXR1cm4geDIqeDI7IH1cbmZsb2F0IGF2ZXJhZ2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7IHJldHVybiBkb3QoIGNvbG9yLCB2ZWMzKCAwLjMzMzMgKSApOyB9XG5oaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkge1xuXHRjb25zdCBoaWdocCBmbG9hdCBhID0gMTIuOTg5OCwgYiA9IDc4LjIzMywgYyA9IDQzNzU4LjU0NTM7XG5cdGhpZ2hwIGZsb2F0IGR0ID0gZG90KCB1di54eSwgdmVjMiggYSxiICkgKSwgc24gPSBtb2QoIGR0LCBQSSApO1xuXHRyZXR1cm4gZnJhY3Qoc2luKHNuKSAqIGMpO1xufVxuI2lmZGVmIEhJR0hfUFJFQ0lTSU9OXG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHsgcmV0dXJuIGxlbmd0aCggdiApOyB9XG4jZWxzZVxuXHRmbG9hdCBtYXgzKCB2ZWMzIHYgKSB7IHJldHVybiBtYXgoIG1heCggdi54LCB2LnkgKSwgdi56ICk7IH1cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkge1xuXHRcdGZsb2F0IG1heENvbXBvbmVudCA9IG1heDMoIGFicyggdiApICk7XG5cdFx0cmV0dXJuIGxlbmd0aCggdiAvIG1heENvbXBvbmVudCApICogbWF4Q29tcG9uZW50O1xuXHR9XG4jZW5kaWZcbnN0cnVjdCBJbmNpZGVudExpZ2h0IHtcblx0dmVjMyBjb2xvcjtcblx0dmVjMyBkaXJlY3Rpb247XG5cdGJvb2wgdmlzaWJsZTtcbn07XG5zdHJ1Y3QgUmVmbGVjdGVkTGlnaHQge1xuXHR2ZWMzIGRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgZGlyZWN0U3BlY3VsYXI7XG5cdHZlYzMgaW5kaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGluZGlyZWN0U3BlY3VsYXI7XG59O1xuc3RydWN0IEdlb21ldHJpY0NvbnRleHQge1xuXHR2ZWMzIHBvc2l0aW9uO1xuXHR2ZWMzIG5vcm1hbDtcblx0dmVjMyB2aWV3RGlyO1xuI2lmZGVmIENMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxufTtcbnZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xufVxudmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApO1xufVxudmVjMyBwcm9qZWN0T25QbGFuZShpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0ZmxvYXQgZGlzdGFuY2UgPSBkb3QoIHBsYW5lTm9ybWFsLCBwb2ludCAtIHBvaW50T25QbGFuZSApO1xuXHRyZXR1cm4gLSBkaXN0YW5jZSAqIHBsYW5lTm9ybWFsICsgcG9pbnQ7XG59XG5mbG9hdCBzaWRlT2ZQbGFuZSggaW4gdmVjMyBwb2ludCwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdHJldHVybiBzaWduKCBkb3QoIHBvaW50IC0gcG9pbnRPblBsYW5lLCBwbGFuZU5vcm1hbCApICk7XG59XG52ZWMzIGxpbmVQbGFuZUludGVyc2VjdCggaW4gdmVjMyBwb2ludE9uTGluZSwgaW4gdmVjMyBsaW5lRGlyZWN0aW9uLCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIGxpbmVEaXJlY3Rpb24gKiAoIGRvdCggcGxhbmVOb3JtYWwsIHBvaW50T25QbGFuZSAtIHBvaW50T25MaW5lICkgLyBkb3QoIHBsYW5lTm9ybWFsLCBsaW5lRGlyZWN0aW9uICkgKSArIHBvaW50T25MaW5lO1xufVxubWF0MyB0cmFuc3Bvc2VNYXQzKCBjb25zdCBpbiBtYXQzIG0gKSB7XG5cdG1hdDMgdG1wO1xuXHR0bXBbIDAgXSA9IHZlYzMoIG1bIDAgXS54LCBtWyAxIF0ueCwgbVsgMiBdLnggKTtcblx0dG1wWyAxIF0gPSB2ZWMzKCBtWyAwIF0ueSwgbVsgMSBdLnksIG1bIDIgXS55ICk7XG5cdHRtcFsgMiBdID0gdmVjMyggbVsgMCBdLnosIG1bIDEgXS56LCBtWyAyIF0ueiApO1xuXHRyZXR1cm4gdG1wO1xufVxuZmxvYXQgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHtcblx0dmVjMyB3ZWlnaHRzID0gdmVjMyggMC4yMTI2LCAwLjcxNTIsIDAuMDcyMiApO1xuXHRyZXR1cm4gZG90KCB3ZWlnaHRzLCBjb2xvci5yZ2IgKTtcbn1cbmJvb2wgaXNQZXJzcGVjdGl2ZU1hdHJpeCggbWF0NCBtICkge1xuICByZXR1cm4gbVsgMiBdWyAzIF0gPT0gLSAxLjA7XG59IiwKY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50OiIjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuI2RlZmluZSBjdWJlVVZfdGV4dHVyZVNpemUgKDEwMjQuMClcbmludCBnZXRGYWNlRnJvbURpcmVjdGlvbih2ZWMzIGRpcmVjdGlvbikge1xuXHR2ZWMzIGFic0RpcmVjdGlvbiA9IGFicyhkaXJlY3Rpb24pO1xuXHRpbnQgZmFjZSA9IC0xO1xuXHRpZiggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueiApIHtcblx0XHRpZihhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueCA+IDAuMCA/IDAgOiAzO1xuXHRcdGVsc2Vcblx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEgOiA0O1xuXHR9XG5cdGVsc2Uge1xuXHRcdGlmKGFic0RpcmVjdGlvbi56ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi56ID4gMC4wID8gMiA6IDU7XG5cdFx0ZWxzZVxuXHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMSA6IDQ7XG5cdH1cblx0cmV0dXJuIGZhY2U7XG59XG4jZGVmaW5lIGN1YmVVVl9tYXhMb2RzMSAgKGxvZzIoY3ViZVVWX3RleHR1cmVTaXplKjAuMjUpIC0gMS4wKVxuI2RlZmluZSBjdWJlVVZfcmFuZ2VDbGFtcCAoZXhwMigoNi4wIC0gMS4wKSAqIDIuMCkpXG52ZWMyIE1pcExldmVsSW5mbyggdmVjMyB2ZWMsIGZsb2F0IHJvdWdobmVzc0xldmVsLCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IHNjYWxlID0gZXhwMihjdWJlVVZfbWF4TG9kczEgLSByb3VnaG5lc3NMZXZlbCk7XG5cdGZsb2F0IGR4Um91Z2huZXNzID0gZEZkeChyb3VnaG5lc3MpO1xuXHRmbG9hdCBkeVJvdWdobmVzcyA9IGRGZHkocm91Z2huZXNzKTtcblx0dmVjMyBkeCA9IGRGZHgoIHZlYyAqIHNjYWxlICogZHhSb3VnaG5lc3MgKTtcblx0dmVjMyBkeSA9IGRGZHkoIHZlYyAqIHNjYWxlICogZHlSb3VnaG5lc3MgKTtcblx0ZmxvYXQgZCA9IG1heCggZG90KCBkeCwgZHggKSwgZG90KCBkeSwgZHkgKSApO1xuXHRkID0gY2xhbXAoZCwgMS4wLCBjdWJlVVZfcmFuZ2VDbGFtcCk7XG5cdGZsb2F0IG1pcExldmVsID0gMC41ICogbG9nMihkKTtcblx0cmV0dXJuIHZlYzIoZmxvb3IobWlwTGV2ZWwpLCBmcmFjdChtaXBMZXZlbCkpO1xufVxuI2RlZmluZSBjdWJlVVZfbWF4TG9kczIgKGxvZzIoY3ViZVVWX3RleHR1cmVTaXplKjAuMjUpIC0gMi4wKVxuI2RlZmluZSBjdWJlVVZfcmNwVGV4dHVyZVNpemUgKDEuMCAvIGN1YmVVVl90ZXh0dXJlU2l6ZSlcbnZlYzIgZ2V0Q3ViZVVWKHZlYzMgZGlyZWN0aW9uLCBmbG9hdCByb3VnaG5lc3NMZXZlbCwgZmxvYXQgbWlwTGV2ZWwpIHtcblx0bWlwTGV2ZWwgPSByb3VnaG5lc3NMZXZlbCA+IGN1YmVVVl9tYXhMb2RzMiAtIDMuMCA/IDAuMCA6IG1pcExldmVsO1xuXHRmbG9hdCBhID0gMTYuMCAqIGN1YmVVVl9yY3BUZXh0dXJlU2l6ZTtcblx0dmVjMiBleHAyX3BhY2tlZCA9IGV4cDIoIHZlYzIoIHJvdWdobmVzc0xldmVsLCBtaXBMZXZlbCApICk7XG5cdHZlYzIgcmNwX2V4cDJfcGFja2VkID0gdmVjMiggMS4wICkgLyBleHAyX3BhY2tlZDtcblx0ZmxvYXQgcG93U2NhbGUgPSBleHAyX3BhY2tlZC54ICogZXhwMl9wYWNrZWQueTtcblx0ZmxvYXQgc2NhbGUgPSByY3BfZXhwMl9wYWNrZWQueCAqIHJjcF9leHAyX3BhY2tlZC55ICogMC4yNTtcblx0ZmxvYXQgbWlwT2Zmc2V0ID0gMC43NSooMS4wIC0gcmNwX2V4cDJfcGFja2VkLnkpICogcmNwX2V4cDJfcGFja2VkLng7XG5cdGJvb2wgYlJlcyA9IG1pcExldmVsID09IDAuMDtcblx0c2NhbGUgPSAgYlJlcyAmJiAoc2NhbGUgPCBhKSA/IGEgOiBzY2FsZTtcblx0dmVjMyByO1xuXHR2ZWMyIG9mZnNldDtcblx0aW50IGZhY2UgPSBnZXRGYWNlRnJvbURpcmVjdGlvbihkaXJlY3Rpb24pO1xuXHRmbG9hdCByY3BQb3dTY2FsZSA9IDEuMCAvIHBvd1NjYWxlO1xuXHRpZiggZmFjZSA9PSAwKSB7XG5cdFx0ciA9IHZlYzMoZGlyZWN0aW9uLngsIC1kaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkpO1xuXHRcdG9mZnNldCA9IHZlYzIoMC4wK21pcE9mZnNldCwwLjc1ICogcmNwUG93U2NhbGUpO1xuXHRcdG9mZnNldC55ID0gYlJlcyAmJiAob2Zmc2V0LnkgPCAyLjAqYSkgPyBhIDogb2Zmc2V0Lnk7XG5cdH1cblx0ZWxzZSBpZiggZmFjZSA9PSAxKSB7XG5cdFx0ciA9IHZlYzMoZGlyZWN0aW9uLnksIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueik7XG5cdFx0b2Zmc2V0ID0gdmVjMihzY2FsZSttaXBPZmZzZXQsIDAuNzUgKiByY3BQb3dTY2FsZSk7XG5cdFx0b2Zmc2V0LnkgPSBiUmVzICYmIChvZmZzZXQueSA8IDIuMCphKSA/IGEgOiBvZmZzZXQueTtcblx0fVxuXHRlbHNlIGlmKCBmYWNlID09IDIpIHtcblx0XHRyID0gdmVjMyhkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55KTtcblx0XHRvZmZzZXQgPSB2ZWMyKDIuMCpzY2FsZSttaXBPZmZzZXQsIDAuNzUgKiByY3BQb3dTY2FsZSk7XG5cdFx0b2Zmc2V0LnkgPSBiUmVzICYmIChvZmZzZXQueSA8IDIuMCphKSA/IGEgOiBvZmZzZXQueTtcblx0fVxuXHRlbHNlIGlmKCBmYWNlID09IDMpIHtcblx0XHRyID0gdmVjMyhkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55KTtcblx0XHRvZmZzZXQgPSB2ZWMyKDAuMCttaXBPZmZzZXQsMC41ICogcmNwUG93U2NhbGUpO1xuXHRcdG9mZnNldC55ID0gYlJlcyAmJiAob2Zmc2V0LnkgPCAyLjAqYSkgPyAwLjAgOiBvZmZzZXQueTtcblx0fVxuXHRlbHNlIGlmKCBmYWNlID09IDQpIHtcblx0XHRyID0gdmVjMyhkaXJlY3Rpb24ueSwgZGlyZWN0aW9uLngsIC1kaXJlY3Rpb24ueik7XG5cdFx0b2Zmc2V0ID0gdmVjMihzY2FsZSttaXBPZmZzZXQsIDAuNSAqIHJjcFBvd1NjYWxlKTtcblx0XHRvZmZzZXQueSA9IGJSZXMgJiYgKG9mZnNldC55IDwgMi4wKmEpID8gMC4wIDogb2Zmc2V0Lnk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0ciA9IHZlYzMoZGlyZWN0aW9uLnosIC1kaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkpO1xuXHRcdG9mZnNldCA9IHZlYzIoMi4wKnNjYWxlK21pcE9mZnNldCwgMC41ICogcmNwUG93U2NhbGUpO1xuXHRcdG9mZnNldC55ID0gYlJlcyAmJiAob2Zmc2V0LnkgPCAyLjAqYSkgPyAwLjAgOiBvZmZzZXQueTtcblx0fVxuXHRyID0gbm9ybWFsaXplKHIpO1xuXHRmbG9hdCB0ZXhlbE9mZnNldCA9IDAuNSAqIGN1YmVVVl9yY3BUZXh0dXJlU2l6ZTtcblx0dmVjMiBzID0gKCByLnl6IC8gYWJzKCByLnggKSArIHZlYzIoIDEuMCApICkgKiAwLjU7XG5cdHZlYzIgYmFzZSA9IG9mZnNldCArIHZlYzIoIHRleGVsT2Zmc2V0ICk7XG5cdHJldHVybiBiYXNlICsgcyAqICggc2NhbGUgLSAyLjAgKiB0ZXhlbE9mZnNldCApO1xufVxuI2RlZmluZSBjdWJlVVZfbWF4TG9kczMgKGxvZzIoY3ViZVVWX3RleHR1cmVTaXplKjAuMjUpIC0gMy4wKVxudmVjNCB0ZXh0dXJlQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHJlZmxlY3RlZERpcmVjdGlvbiwgZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCByb3VnaG5lc3NWYWwgPSByb3VnaG5lc3MqIGN1YmVVVl9tYXhMb2RzMztcblx0ZmxvYXQgcjEgPSBmbG9vcihyb3VnaG5lc3NWYWwpO1xuXHRmbG9hdCByMiA9IHIxICsgMS4wO1xuXHRmbG9hdCB0ID0gZnJhY3Qocm91Z2huZXNzVmFsKTtcblx0dmVjMiBtaXBJbmZvID0gTWlwTGV2ZWxJbmZvKHJlZmxlY3RlZERpcmVjdGlvbiwgcjEsIHJvdWdobmVzcyk7XG5cdGZsb2F0IHMgPSBtaXBJbmZvLnk7XG5cdGZsb2F0IGxldmVsMCA9IG1pcEluZm8ueDtcblx0ZmxvYXQgbGV2ZWwxID0gbGV2ZWwwICsgMS4wO1xuXHRsZXZlbDEgPSBsZXZlbDEgPiA1LjAgPyA1LjAgOiBsZXZlbDE7XG5cdGxldmVsMCArPSBtaW4oIGZsb29yKCBzICsgMC41ICksIDUuMCApO1xuXHR2ZWMyIHV2XzEwID0gZ2V0Q3ViZVVWKHJlZmxlY3RlZERpcmVjdGlvbiwgcjEsIGxldmVsMCk7XG5cdHZlYzQgY29sb3IxMCA9IGVudk1hcFRleGVsVG9MaW5lYXIodGV4dHVyZTJEKGVudk1hcCwgdXZfMTApKTtcblx0dmVjMiB1dl8yMCA9IGdldEN1YmVVVihyZWZsZWN0ZWREaXJlY3Rpb24sIHIyLCBsZXZlbDApO1xuXHR2ZWM0IGNvbG9yMjAgPSBlbnZNYXBUZXhlbFRvTGluZWFyKHRleHR1cmUyRChlbnZNYXAsIHV2XzIwKSk7XG5cdHZlYzQgcmVzdWx0ID0gbWl4KGNvbG9yMTAsIGNvbG9yMjAsIHQpO1xuXHRyZXR1cm4gdmVjNChyZXN1bHQucmdiLCAxLjApO1xufVxuI2VuZGlmIiwKZGVmYXVsdG5vcm1hbF92ZXJ0ZXg6InZlYzMgdHJhbnNmb3JtZWROb3JtYWwgPSBvYmplY3ROb3JtYWw7XG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0dHJhbnNmb3JtZWROb3JtYWwgPSBtYXQzKCBpbnN0YW5jZU1hdHJpeCApICogdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCA9IG5vcm1hbE1hdHJpeCAqIG9iamVjdFRhbmdlbnQ7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIiwKZGlzcGxhY2VtZW50bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0dHJhbnNmb3JtZWQgKz0gbm9ybWFsaXplKCBvYmplY3ROb3JtYWwgKSAqICggdGV4dHVyZTJEKCBkaXNwbGFjZW1lbnRNYXAsIHZVdiApLnggKiBkaXNwbGFjZW1lbnRTY2FsZSArIGRpc3BsYWNlbWVudEJpYXMgKTtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dmVjNCBlbWlzc2l2ZUNvbG9yID0gdGV4dHVyZTJEKCBlbWlzc2l2ZU1hcCwgdlV2ICk7XG5cdGVtaXNzaXZlQ29sb3IucmdiID0gZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyKCBlbWlzc2l2ZUNvbG9yICkucmdiO1xuXHR0b3RhbEVtaXNzaXZlUmFkaWFuY2UgKj0gZW1pc3NpdmVDb2xvci5yZ2I7XG4jZW5kaWYiLGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZW1pc3NpdmVNYXA7XG4jZW5kaWYiLAplbmNvZGluZ3NfZnJhZ21lbnQ6ImdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApOyIsZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ6IlxudmVjNCBMaW5lYXJUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZhbHVlO1xufVxudmVjNCBHYW1tYVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBnYW1tYUZhY3RvciApIHtcblx0cmV0dXJuIHZlYzQoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCBnYW1tYUZhY3RvciApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9HYW1tYSggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMS4wIC8gZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IHNSR0JUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgdmFsdWUucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDQwNDUgKSApICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBMaW5lYXJUb3NSR0IoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAwLjQxNjY2ICkgKSAqIDEuMDU1IC0gdmVjMyggMC4wNTUgKSwgdmFsdWUucmdiICogMTIuOTIsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wMDMxMzA4ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgUkdCRVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogZXhwMiggdmFsdWUuYSAqIDI1NS4wIC0gMTI4LjAgKSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCRSggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4KCBtYXgoIHZhbHVlLnIsIHZhbHVlLmcgKSwgdmFsdWUuYiApO1xuXHRmbG9hdCBmRXhwID0gY2xhbXAoIGNlaWwoIGxvZzIoIG1heENvbXBvbmVudCApICksIC0xMjguMCwgMTI3LjAgKTtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvIGV4cDIoIGZFeHAgKSwgKCBmRXhwICsgMTI4LjAgKSAvIDI1NS4wICk7XG59XG52ZWM0IFJHQk1Ub0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiB2YWx1ZS5hICogbWF4UmFuZ2UsIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQk0oIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IE0gPSBjbGFtcCggbWF4UkdCIC8gbWF4UmFuZ2UsIDAuMCwgMS4wICk7XG5cdE0gPSBjZWlsKCBNICogMjU1LjAgKSAvIDI1NS4wO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiIC8gKCBNICogbWF4UmFuZ2UgKSwgTSApO1xufVxudmVjNCBSR0JEVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogKCAoIG1heFJhbmdlIC8gMjU1LjAgKSAvIHZhbHVlLmEgKSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCRCggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdGZsb2F0IG1heFJHQiA9IG1heCggdmFsdWUuciwgbWF4KCB2YWx1ZS5nLCB2YWx1ZS5iICkgKTtcblx0ZmxvYXQgRCA9IG1heCggbWF4UmFuZ2UgLyBtYXhSR0IsIDEuMCApO1xuXHREID0gbWluKCBmbG9vciggRCApIC8gMjU1LjAsIDEuMCApO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogKCBEICogKCAyNTUuMCAvIG1heFJhbmdlICkgKSwgRCApO1xufVxuY29uc3QgbWF0MyBjTG9nTHV2TSA9IG1hdDMoIDAuMjIwOSwgMC4zMzkwLCAwLjQxODQsIDAuMTEzOCwgMC42NzgwLCAwLjczMTksIDAuMDEwMiwgMC4xMTMwLCAwLjI5NjkgKTtcbnZlYzQgTGluZWFyVG9Mb2dMdXYoIGluIHZlYzQgdmFsdWUgKSAge1xuXHR2ZWMzIFhwX1lfWFlacCA9IGNMb2dMdXZNICogdmFsdWUucmdiO1xuXHRYcF9ZX1hZWnAgPSBtYXgoIFhwX1lfWFlacCwgdmVjMyggMWUtNiwgMWUtNiwgMWUtNiApICk7XG5cdHZlYzQgdlJlc3VsdDtcblx0dlJlc3VsdC54eSA9IFhwX1lfWFlacC54eSAvIFhwX1lfWFlacC56O1xuXHRmbG9hdCBMZSA9IDIuMCAqIGxvZzIoWHBfWV9YWVpwLnkpICsgMTI3LjA7XG5cdHZSZXN1bHQudyA9IGZyYWN0KCBMZSApO1xuXHR2UmVzdWx0LnogPSAoIExlIC0gKCBmbG9vciggdlJlc3VsdC53ICogMjU1LjAgKSApIC8gMjU1LjAgKSAvIDI1NS4wO1xuXHRyZXR1cm4gdlJlc3VsdDtcbn1cbmNvbnN0IG1hdDMgY0xvZ0x1dkludmVyc2VNID0gbWF0MyggNi4wMDE0LCAtMi43MDA4LCAtMS43OTk2LCAtMS4zMzIwLCAzLjEwMjksIC01Ljc3MjEsIDAuMzAwOCwgLTEuMDg4MiwgNS42MjY4ICk7XG52ZWM0IExvZ0x1dlRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRmbG9hdCBMZSA9IHZhbHVlLnogKiAyNTUuMCArIHZhbHVlLnc7XG5cdHZlYzMgWHBfWV9YWVpwO1xuXHRYcF9ZX1hZWnAueSA9IGV4cDIoICggTGUgLSAxMjcuMCApIC8gMi4wICk7XG5cdFhwX1lfWFlacC56ID0gWHBfWV9YWVpwLnkgLyB2YWx1ZS55O1xuXHRYcF9ZX1hZWnAueCA9IHZhbHVlLnggKiBYcF9ZX1hZWnAuejtcblx0dmVjMyB2UkdCID0gY0xvZ0x1dkludmVyc2VNICogWHBfWV9YWVpwLnJnYjtcblx0cmV0dXJuIHZlYzQoIG1heCggdlJHQiwgMC4wICksIDEuMCApO1xufSIsCmVudm1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZlYzMgY2FtZXJhVG9GcmFnO1xuXHRcdFxuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gIGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZyYWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2Vsc2Vcblx0XHR2ZWMzIHJlZmxlY3RWZWMgPSB2UmVmbGVjdDtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9FUVVJUkVDIClcblx0XHR2ZWMyIHNhbXBsZVVWO1xuXHRcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIHJlZmxlY3RWZWMgKTtcblx0XHRzYW1wbGVVVi55ID0gYXNpbiggY2xhbXAoIHJlZmxlY3RWZWMueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRcdHNhbXBsZVVWLnggPSBhdGFuKCByZWZsZWN0VmVjLnosIHJlZmxlY3RWZWMueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmUyRCggZW52TWFwLCBzYW1wbGVVViApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9TUEhFUkUgKVxuXHRcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIHJlZmxlY3RWZWMgKTtcblx0XHR2ZWMzIHJlZmxlY3RWaWV3ID0gbm9ybWFsaXplKCAoIHZpZXdNYXRyaXggKiB2ZWM0KCByZWZsZWN0VmVjLCAwLjAgKSApLnh5eiArIHZlYzMoIDAuMCwgMC4wLCAxLjAgKSApO1xuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlMkQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7XG5cdCNlbmRpZlxuXHRlbnZDb2xvciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudkNvbG9yICk7XG5cdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcblx0XHRvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XG5cdCNlbmRpZlxuI2VuZGlmIiwKZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IGVudk1hcEludGVuc2l0eTtcblx0dW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwO1xuXHR1bmlmb3JtIGludCBtYXhNaXBMZXZlbDtcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdCNlbmRpZlxuXHRcbiNlbmRpZiIsZW52bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0I2VuZGlmXG4jZW5kaWYiLAplbnZtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fGRlZmluZWQoIFBIT05HIClcblx0XHQjZGVmaW5lIEVOVl9XT1JMRFBPU1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdFxuXHRcdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKVxuXHQjaWZkZWYgRU5WTUFQX01PREVfUkVGUkFDVElPTlxuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWMzIHF1ZXJ5VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCBxdWVyeVZlYywgMS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gUEkgKiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdH1cblx0ZmxvYXQgZ2V0U3BlY3VsYXJNSVBMZXZlbCggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0ZmxvYXQgbWF4TUlQTGV2ZWxTY2FsYXIgPSBmbG9hdCggbWF4TUlQTGV2ZWwgKTtcblx0XHRmbG9hdCBzaWdtYSA9IFBJICogcm91Z2huZXNzICogcm91Z2huZXNzIC8gKCAxLjAgKyByb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBkZXNpcmVkTUlQTGV2ZWwgPSBtYXhNSVBMZXZlbFNjYWxhciArIGxvZzIoIHNpZ21hICk7XG5cdFx0cmV0dXJuIGNsYW1wKCBkZXNpcmVkTUlQTGV2ZWwsIDAuMCwgbWF4TUlQTGV2ZWxTY2FsYXIgKTtcblx0fVxuXHR2ZWMzIGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdCAgdmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggLXZpZXdEaXIsIG5vcm1hbCApO1xuXHRcdCAgcmVmbGVjdFZlYyA9IG5vcm1hbGl6ZSggbWl4KCByZWZsZWN0VmVjLCBub3JtYWwsIHJvdWdobmVzcyAqIHJvdWdobmVzcykgKTtcblx0XHQjZWxzZVxuXHRcdCAgdmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggLXZpZXdEaXIsIG5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdFx0cmVmbGVjdFZlYyA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTtcblx0XHRmbG9hdCBzcGVjdWxhck1JUExldmVsID0gZ2V0U3BlY3VsYXJNSVBMZXZlbCggcm91Z2huZXNzLCBtYXhNSVBMZXZlbCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5UmVmbGVjdFZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlTG9kRVhUKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzMgcXVlcnlSZWZsZWN0VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApO1xuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9FUVVJUkVDIClcblx0XHRcdHZlYzIgc2FtcGxlVVY7XG5cdFx0XHRzYW1wbGVVVi55ID0gYXNpbiggY2xhbXAoIHJlZmxlY3RWZWMueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRcdFx0c2FtcGxlVVYueCA9IGF0YW4oIHJlZmxlY3RWZWMueiwgcmVmbGVjdFZlYy54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmUyRExvZEVYVCggZW52TWFwLCBzYW1wbGVVViwgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmUyRCggZW52TWFwLCBzYW1wbGVVViwgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9TUEhFUkUgKVxuXHRcdFx0dmVjMyByZWZsZWN0VmlldyA9IG5vcm1hbGl6ZSggKCB2aWV3TWF0cml4ICogdmVjNCggcmVmbGVjdFZlYywgMC4wICkgKS54eXogKyB2ZWMzKCAwLjAsMC4wLDEuMCApICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlMkRMb2RFWFQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlMkQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0fVxuI2VuZGlmIiwKZW52bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG5cdCNlbHNlXG5cdFx0dmVjMyBjYW1lcmFUb1ZlcnRleDtcblx0XHRpZiAoIGlzT3J0aG9ncmFwaGljICkgeyBcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLApmb2dfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHRmb2dEZXB0aCA9IC1tdlBvc2l0aW9uLno7XG4jZW5kaWYiLGZvZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcbiNlbmRpZiIsZm9nX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiBmb2dEZXB0aCAqIGZvZ0RlcHRoICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gc21vb3Roc3RlcCggZm9nTmVhciwgZm9nRmFyLCBmb2dEZXB0aCApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApO1xuI2VuZGlmIixmb2dfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xuXHQjZW5kaWZcbiNlbmRpZiIsCmdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBUT09OXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGdyYWRpZW50TWFwO1xuXHR2ZWMzIGdldEdyYWRpZW50SXJyYWRpYW5jZSggdmVjMyBub3JtYWwsIHZlYzMgbGlnaHREaXJlY3Rpb24gKSB7XG5cdFx0ZmxvYXQgZG90TkwgPSBkb3QoIG5vcm1hbCwgbGlnaHREaXJlY3Rpb24gKTtcblx0XHR2ZWMyIGNvb3JkID0gdmVjMiggZG90TkwgKiAwLjUgKyAwLjUsIDAuMCApO1xuXHRcdCNpZmRlZiBVU0VfR1JBRElFTlRNQVBcblx0XHRcdHJldHVybiB0ZXh0dXJlMkQoIGdyYWRpZW50TWFwLCBjb29yZCApLnJnYjtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuICggY29vcmQueCA8IDAuNyApID8gdmVjMyggMC43ICkgOiB2ZWMzKCAxLjAgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIixsaWdodG1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gUEkgKiB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICkueHl6ICogbGlnaHRNYXBJbnRlbnNpdHk7XG4jZW5kaWYiLApsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGxpZ2h0TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodHNfbGFtYmVydF92ZXJ0ZXg6InZlYzMgZGlmZnVzZSA9IHZlYzMoIDEuMCApO1xuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTtcbkdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5O1xuYmFja0dlb21ldHJ5LnBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5iYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDtcbmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjtcbnZMaWdodEZyb250ID0gdmVjMyggMC4wICk7XG52SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XG5cdHZJbmRpcmVjdEJhY2sgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbmZsb2F0IGRvdE5MO1xudmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG4jaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmXG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0dkluZGlyZWN0RnJvbnQgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZJbmRpcmVjdEJhY2sgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBiYWNrR2VvbWV0cnkgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIiwKbGlnaHRzX3BhcnNfYmVnaW46InVuaWZvcm0gYm9vbCByZWNlaXZlU2hhZG93O1xudW5pZm9ybSB2ZWMzIGFtYmllbnRMaWdodENvbG9yO1xudW5pZm9ybSB2ZWMzIGxpZ2h0UHJvYmVbIDkgXTtcbnZlYzMgc2hHZXRJcnJhZGlhbmNlQXQoIGluIHZlYzMgbm9ybWFsLCBpbiB2ZWMzIHNoQ29lZmZpY2llbnRzWyA5IF0gKSB7XG5cdGZsb2F0IHggPSBub3JtYWwueCwgeSA9IG5vcm1hbC55LCB6ID0gbm9ybWFsLno7XG5cdHZlYzMgcmVzdWx0ID0gc2hDb2VmZmljaWVudHNbIDAgXSAqIDAuODg2MjI3O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDEgXSAqIDIuMCAqIDAuNTExNjY0ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAyIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMyBdICogMi4wICogMC41MTE2NjQgKiB4O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDQgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNSBdICogMi4wICogMC40MjkwNDMgKiB5ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA2IF0gKiAoIDAuNzQzMTI1ICogeiAqIHogLSAwLjI0NzcwOCApO1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDcgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgOCBdICogMC40MjkwNDMgKiAoIHggKiB4IC0geSAqIHkgKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cbnZlYzMgZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbGlnaHRQcm9iZVsgOSBdLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5ICkge1xuXHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggZ2VvbWV0cnkubm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IHNoR2V0SXJyYWRpYW5jZUF0KCB3b3JsZE5vcm1hbCwgbGlnaHRQcm9iZSApO1xuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbnZlYzMgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBhbWJpZW50TGlnaHRDb2xvciApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gYW1iaWVudExpZ2h0Q29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0aW50IHNoYWRvdztcblx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdH07XG5cdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0c1sgTlVNX0RJUl9MSUdIVFMgXTtcblx0dm9pZCBnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHRkaXJlY3RMaWdodC5jb2xvciA9IGRpcmVjdGlvbmFsTGlnaHQuY29sb3I7XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uYWxMaWdodC5kaXJlY3Rpb247XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IHRydWU7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBQb2ludExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdFx0aW50IHNoYWRvdztcblx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdH07XG5cdHVuaWZvcm0gUG9pbnRMaWdodCBwb2ludExpZ2h0c1sgTlVNX1BPSU5UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBQb2ludExpZ2h0IHBvaW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdHZlYzMgbFZlY3RvciA9IHBvaW50TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBwb2ludExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHBvaW50TGlnaHQuZGlzdGFuY2UsIHBvaW50TGlnaHQuZGVjYXkgKTtcblx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gKCBkaXJlY3RMaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBTcG90TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0XHRmbG9hdCBjb25lQ29zO1xuXHRcdGZsb2F0IHBlbnVtYnJhQ29zO1xuXHRcdGludCBzaGFkb3c7XG5cdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHR9O1xuXHR1bmlmb3JtIFNwb3RMaWdodCBzcG90TGlnaHRzWyBOVU1fU1BPVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBTcG90TGlnaHQgc3BvdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCAgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGZsb2F0IGFuZ2xlQ29zID0gZG90KCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRpZiAoIGFuZ2xlQ29zID4gc3BvdExpZ2h0LmNvbmVDb3MgKSB7XG5cdFx0XHRmbG9hdCBzcG90RWZmZWN0ID0gc21vb3Roc3RlcCggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gc3BvdEVmZmVjdCAqIHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XG5cdFx0dmVjMyBjb2xvcjtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodDtcblx0fTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7XHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjtcblx0dW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdO1xuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHRzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIHNreUNvbG9yO1xuXHRcdHZlYzMgZ3JvdW5kQ29sb3I7XG5cdH07XG5cdHVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdO1xuXHR2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdFx0ZmxvYXQgZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGVtaUxpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGhlbWlEaWZmdXNlV2VpZ2h0ID0gMC41ICogZG90TkwgKyAwLjU7XG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gbWl4KCBoZW1pTGlnaHQuZ3JvdW5kQ29sb3IsIGhlbWlMaWdodC5za3lDb2xvciwgaGVtaURpZmZ1c2VXZWlnaHQgKTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGlycmFkaWFuY2U7XG5cdH1cbiNlbmRpZiIsCmxpZ2h0c19waG9uZ19mcmFnbWVudDoiQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjtcbm1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBzcGVjdWxhcjtcbm1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzID0gc2hpbmluZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aCA9IHNwZWN1bGFyU3RyZW5ndGg7IixsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG5zdHJ1Y3QgQmxpbm5QaG9uZ01hdGVyaWFsIHtcblx0dmVjM1x0ZGlmZnVzZUNvbG9yO1xuXHR2ZWMzXHRzcGVjdWxhckNvbG9yO1xuXHRmbG9hdFx0c3BlY3VsYXJTaGluaW5lc3M7XG5cdGZsb2F0XHRzcGVjdWxhclN0cmVuZ3RoO1xufTtcbnZvaWQgUkVfRGlyZWN0X0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdCNpZmRlZiBUT09OXG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2VuZGlmXG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9CbGlublBob25nXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZ1xuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLApsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ6IlBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiICogKCAxLjAgLSBtZXRhbG5lc3NGYWN0b3IgKTtcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gY2xhbXAoIHJvdWdobmVzc0ZhY3RvciwgMC4wNCwgMS4wICk7XG4jaWZkZWYgUkVGTEVDVElWSVRZXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIHZlYzMoIE1BWElNVU1fU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKiBwb3cyKCByZWZsZWN0aXZpdHkgKSApLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcbiNlbHNlXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG4jZW5kaWZcbiNpZmRlZiBDTEVBUkNPQVRcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gc2F0dXJhdGUoIGNsZWFyY29hdCApO1x0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gY2xhbXAoIGNsZWFyY29hdFJvdWdobmVzcywgMC4wNCwgMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0bWF0ZXJpYWwuc2hlZW5Db2xvciA9IHNoZWVuO1xuI2VuZGlmIiwKbGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6InN0cnVjdCBQaHlzaWNhbE1hdGVyaWFsIHtcblx0dmVjM1x0ZGlmZnVzZUNvbG9yO1xuXHRmbG9hdFx0c3BlY3VsYXJSb3VnaG5lc3M7XG5cdHZlYzNcdHNwZWN1bGFyQ29sb3I7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGZsb2F0IGNsZWFyY29hdDtcblx0ZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHZlYzMgc2hlZW5Db2xvcjtcbiNlbmRpZlxufTtcbiNkZWZpbmUgTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjE2XG4jZGVmaW5lIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4wNFxuZmxvYXQgY2xlYXJjb2F0REhSQXBwcm94KCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5MICkge1xuXHRyZXR1cm4gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCArICggMS4wIC0gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApICogKCBwb3coIDEuMCAtIGRvdE5MLCA1LjAgKSAqIHBvdyggMS4wIC0gcm91Z2huZXNzLCAyLjAgKSApO1xufVxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHR2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0XHR2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0XHR2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHRcdHZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHR2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDtcblx0XHR2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yO1xuXHRcdGZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzO1xuXHRcdHZlYzMgcmVjdENvb3Jkc1sgNCBdO1xuXHRcdHJlY3RDb29yZHNbIDAgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcdFx0cmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0dmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0XHR2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTtcblx0XHR2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTtcblx0XHRtYXQzIG1JbnYgPSBtYXQzKFxuXHRcdFx0dmVjMyggdDEueCwgMCwgdDEueSApLFxuXHRcdFx0dmVjMyggICAgMCwgMSwgICAgMCApLFxuXHRcdFx0dmVjMyggdDEueiwgMCwgdDEudyApXG5cdFx0KTtcblx0XHR2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTtcblx0fVxuI2VuZGlmXG52b2lkIFJFX0RpcmVjdF9QaHlzaWNhbCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBjY0lycmFkaWFuY2UgPSBjY0RvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRjY0lycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSAwLjA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX1NoZWVuKFxuXHRcdFx0bWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsXG5cdFx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24sXG5cdFx0XHRnZW9tZXRyeSxcblx0XHRcdG1hdGVyaWFsLnNoZWVuQ29sb3Jcblx0XHQpO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9HR1goIGRpcmVjdExpZ2h0LCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzKTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBjbGVhcmNvYXRSYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQpIHtcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gY2xlYXJjb2F0UmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHRcdGZsb2F0IGNjRG90TkwgPSBjY0RvdE5WO1xuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IG1hdGVyaWFsLmNsZWFyY29hdCAqIGNsZWFyY29hdERIUkFwcHJveCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBjY0RvdE5MICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gMC4wO1xuXHQjZW5kaWZcblx0ZmxvYXQgY2xlYXJjb2F0SW52ID0gMS4wIC0gY2xlYXJjb2F0REhSO1xuXHR2ZWMzIHNpbmdsZVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBtdWx0aVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2UgPSBpcnJhZGlhbmNlICogUkVDSVBST0NBTF9QSTtcblx0QlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgc2luZ2xlU2NhdHRlcmluZywgbXVsdGlTY2F0dGVyaW5nICk7XG5cdHZlYzMgZGlmZnVzZSA9IG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqICggMS4wIC0gKCBzaW5nbGVTY2F0dGVyaW5nICsgbXVsdGlTY2F0dGVyaW5nICkgKTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBjbGVhcmNvYXRJbnYgKiByYWRpYW5jZSAqIHNpbmdsZVNjYXR0ZXJpbmc7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gbXVsdGlTY2F0dGVyaW5nICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gZGlmZnVzZSAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfUGh5c2ljYWxcbiNkZWZpbmUgUkVfRGlyZWN0X1JlY3RBcmVhXHRcdFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0U3BlY3VsYXJcdFx0UkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbFxuZmxvYXQgY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgYW1iaWVudE9jY2x1c2lvbiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApO1xufSIsCmxpZ2h0c19mcmFnbWVudF9iZWdpbjoiXG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSAtIHZWaWV3UG9zaXRpb247XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzMoIHBvaW50TGlnaHQuc2hhZG93LCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cbiNlbmRpZlxuI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFNwb3RMaWdodCBzcG90TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyApXG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMyggc3BvdExpZ2h0LnNoYWRvdywgZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodC5zaGFkb3dCaWFzLCBzcG90TGlnaHQuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cbiNlbmRpZlxuI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0RGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdO1xuXHRcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUyApXG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMyggZGlyZWN0aW9uYWxMaWdodC5zaGFkb3csIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cbiNlbmRpZlxuI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcblx0UmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkge1xuXHRcdHJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdO1xuXHRcdFJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHR2ZWMzIGlibElycmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0aXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcblx0I2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApXG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHRcdGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0dmVjMyByYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7XG4jZW5kaWYiLApsaWdodHNfZnJhZ21lbnRfbWFwczoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHR2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKS54eXogKiBsaWdodE1hcEludGVuc2l0eTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRpcnJhZGlhbmNlICs9IGxpZ2h0TWFwSXJyYWRpYW5jZTtcblx0I2VuZGlmXG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKSAmJiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRpYmxJcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdElycmFkaWFuY2UoIGdlb21ldHJ5LCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0cmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRjbGVhcmNvYXRSYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNlbmRpZlxuI2VuZGlmIiwKbGlnaHRzX2ZyYWdtZW50X2VuZDoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdFJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdFJFX0luZGlyZWN0U3BlY3VsYXIoIHJhZGlhbmNlLCBpYmxJcnJhZGlhbmNlLCBjbGVhcmNvYXRSYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHRnbF9GcmFnRGVwdGhFWFQgPSB2SXNQZXJzcGVjdGl2ZSA9PSAwLjAgPyBnbF9GcmFnQ29vcmQueiA6IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG4jZW5kaWYiLApsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0XHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0I2VuZGlmXG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZGcmFnRGVwdGggPSAxLjAgKyBnbF9Qb3NpdGlvbi53O1xuXHRcdHZJc1BlcnNwZWN0aXZlID0gZmxvYXQoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApO1xuXHQjZWxzZVxuXHRcdGlmICggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICkge1xuXHRcdFx0Z2xfUG9zaXRpb24ueiA9IGxvZzIoIG1heCggRVBTSUxPTiwgZ2xfUG9zaXRpb24udyArIDEuMCApICkgKiBsb2dEZXB0aEJ1ZkZDIC0gMS4wO1xuXHRcdFx0Z2xfUG9zaXRpb24ueiAqPSBnbF9Qb3NpdGlvbi53O1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLAptYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgdGV4ZWxDb2xvciA9IHRleHR1cmUyRCggbWFwLCB2VXYgKTtcblx0dGV4ZWxDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleGVsQ29sb3IgKTtcblx0ZGlmZnVzZUNvbG9yICo9IHRleGVsQ29sb3I7XG4jZW5kaWYiLG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR2ZWMyIHV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIGdsX1BvaW50Q29vcmQueCwgMS4wIC0gZ2xfUG9pbnRDb29yZC55LCAxICkgKS54eTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dmVjNCBtYXBUZXhlbCA9IHRleHR1cmUyRCggbWFwLCB1diApO1xuXHRkaWZmdXNlQ29sb3IgKj0gbWFwVGV4ZWxUb0xpbmVhciggbWFwVGV4ZWwgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB1diApLmc7XG4jZW5kaWYiLAptYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCBtZXRhbG5lc3NGYWN0b3IgPSBtZXRhbG5lc3M7XG4jaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR2ZWM0IHRleGVsTWV0YWxuZXNzID0gdGV4dHVyZTJEKCBtZXRhbG5lc3NNYXAsIHZVdiApO1xuXHRtZXRhbG5lc3NGYWN0b3IgKj0gdGV4ZWxNZXRhbG5lc3MuYjtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDtcbiNlbmRpZiIsCm1vcnBobm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0b2JqZWN0Tm9ybWFsICs9ICggbW9ycGhOb3JtYWwwIC0gbm9ybWFsICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0b2JqZWN0Tm9ybWFsICs9ICggbW9ycGhOb3JtYWwxIC0gbm9ybWFsICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0b2JqZWN0Tm9ybWFsICs9ICggbW9ycGhOb3JtYWwyIC0gbm9ybWFsICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0b2JqZWN0Tm9ybWFsICs9ICggbW9ycGhOb3JtYWwzIC0gbm9ybWFsICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcbiNlbmRpZiIsbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgOCBdO1xuXHQjZWxzZVxuXHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsCm1vcnBodGFyZ2V0X3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFNcblx0dHJhbnNmb3JtZWQgKz0gKCBtb3JwaFRhcmdldDAgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdHRyYW5zZm9ybWVkICs9ICggbW9ycGhUYXJnZXQxIC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHR0cmFuc2Zvcm1lZCArPSAoIG1vcnBoVGFyZ2V0MiAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0dHJhbnNmb3JtZWQgKz0gKCBtb3JwaFRhcmdldDMgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHR0cmFuc2Zvcm1lZCArPSAoIG1vcnBoVGFyZ2V0NCAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0dHJhbnNmb3JtZWQgKz0gKCBtb3JwaFRhcmdldDUgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07XG5cdHRyYW5zZm9ybWVkICs9ICggbW9ycGhUYXJnZXQ2IC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdO1xuXHR0cmFuc2Zvcm1lZCArPSAoIG1vcnBoVGFyZ2V0NyAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTtcblx0I2VuZGlmXG4jZW5kaWYiLApub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBGTEFUX1NIQURFRFxuXHR2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xuI2Vsc2Vcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZlYzMgdGFuZ2VudCA9IG5vcm1hbGl6ZSggdlRhbmdlbnQgKTtcblx0XHR2ZWMzIGJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggdkJpdGFuZ2VudCApO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHRhbmdlbnQgPSB0YW5nZW50ICogKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdFx0Yml0YW5nZW50ID0gYml0YW5nZW50ICogKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZlxudmVjMyBnZW9tZXRyeU5vcm1hbCA9IG5vcm1hbDsiLApub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHRub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdG5vcm1hbCA9IC0gbm9ybWFsO1xuXHQjZW5kaWZcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0I2VuZGlmXG5cdG5vcm1hbCA9IG5vcm1hbGl6ZSggbm9ybWFsTWF0cml4ICogbm9ybWFsICk7XG4jZWxpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTtcblx0XHR2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRcdG1hcE4ueHkgPSBub3JtYWxTY2FsZSAqIG1hcE4ueHk7XG5cdFx0bm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogbWFwTiApO1xuXHQjZWxzZVxuXHRcdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBub3JtYWxTY2FsZSwgbm9ybWFsTWFwICk7XG5cdCNlbmRpZlxuI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKVxuXHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBkSGR4eV9md2QoKSApO1xuI2VuZGlmIiwKbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlO1xuI2VuZGlmXG4jaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7XG4jZW5kaWZcbiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApXG5cdHZlYzMgcGVydHVyYk5vcm1hbDJBcmIoIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgbm9ybWFsU2NhbGUsIGluIHNhbXBsZXIyRCBub3JtYWxNYXAgKSB7XG5cdFx0dmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7XG5cdFx0dmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTtcblx0XHRmbG9hdCBzY2FsZSA9IHNpZ24oIHN0MS50ICogc3QwLnMgLSBzdDAudCAqIHN0MS5zICk7XG5cdFx0dmVjMyBTID0gbm9ybWFsaXplKCAoIHEwICogc3QxLnQgLSBxMSAqIHN0MC50ICkgKiBzY2FsZSApO1xuXHRcdHZlYzMgVCA9IG5vcm1hbGl6ZSggKCAtIHEwICogc3QxLnMgKyBxMSAqIHN0MC5zICkgKiBzY2FsZSApO1xuXHRcdHZlYzMgTiA9IG5vcm1hbGl6ZSggc3VyZl9ub3JtICk7XG5cdFx0dmVjMyBtYXBOID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0XHRtYXBOLnh5ICo9IG5vcm1hbFNjYWxlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdGJvb2wgZnJvbnRGYWNpbmcgPSBkb3QoIGNyb3NzKCBTLCBUICksIE4gKSA+IDAuMDtcblx0XHRcdG1hcE4ueHkgKj0gKCBmbG9hdCggZnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHRtYXBOLnh5ICo9ICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0XHQjZW5kaWZcblx0XHRtYXQzIHRzbiA9IG1hdDMoIFMsIFQsIE4gKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKCB0c24gKiBtYXBOICk7XG5cdH1cbiNlbmRpZiIsCmNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWwgPSBnZW9tZXRyeU5vcm1hbDtcbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBjbGVhcmNvYXROb3JtYWwgKTtcblx0XHR2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRcdG1hcE4ueHkgPSBjbGVhcmNvYXROb3JtYWxTY2FsZSAqIG1hcE4ueHk7XG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogbWFwTiApO1xuXHQjZWxzZVxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtIHZWaWV3UG9zaXRpb24sIGNsZWFyY29hdE5vcm1hbCwgY2xlYXJjb2F0Tm9ybWFsU2NhbGUsIGNsZWFyY29hdE5vcm1hbE1hcCApO1xuXHQjZW5kaWZcbiNlbmRpZiIsCmNsZWFyY29hdF9ub3JtYWxtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuI2VuZGlmIixwYWNraW5nOiJ2ZWMzIHBhY2tOb3JtYWxUb1JHQiggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdHJldHVybiBub3JtYWxpemUoIG5vcm1hbCApICogMC41ICsgMC41O1xufVxudmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7XG5cdHJldHVybiAyLjAgKiByZ2IueHl6IC0gMS4wO1xufVxuY29uc3QgZmxvYXQgUGFja1Vwc2NhbGUgPSAyNTYuIC8gMjU1Ljtjb25zdCBmbG9hdCBVbnBhY2tEb3duc2NhbGUgPSAyNTUuIC8gMjU2LjtcbmNvbnN0IHZlYzMgUGFja0ZhY3RvcnMgPSB2ZWMzKCAyNTYuICogMjU2LiAqIDI1Ni4sIDI1Ni4gKiAyNTYuLCAgMjU2LiApO1xuY29uc3QgdmVjNCBVbnBhY2tGYWN0b3JzID0gVW5wYWNrRG93bnNjYWxlIC8gdmVjNCggUGFja0ZhY3RvcnMsIDEuICk7XG5jb25zdCBmbG9hdCBTaGlmdFJpZ2h0OCA9IDEuIC8gMjU2LjtcbnZlYzQgcGFja0RlcHRoVG9SR0JBKCBjb25zdCBpbiBmbG9hdCB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCBmcmFjdCggdiAqIFBhY2tGYWN0b3JzICksIHYgKTtcblx0ci55encgLT0gci54eXogKiBTaGlmdFJpZ2h0ODtcdHJldHVybiByICogUGFja1Vwc2NhbGU7XG59XG5mbG9hdCB1bnBhY2tSR0JBVG9EZXB0aCggY29uc3QgaW4gdmVjNCB2ICkge1xuXHRyZXR1cm4gZG90KCB2LCBVbnBhY2tGYWN0b3JzICk7XG59XG52ZWM0IGVuY29kZUhhbGZSR0JBICggdmVjMiB2ICkge1xuXHR2ZWM0IGVuY29kZWQgPSB2ZWM0KCAwLjAgKTtcblx0Y29uc3QgdmVjMiBvZmZzZXQgPSB2ZWMyKCAxLjAgLyAyNTUuMCwgMC4wICk7XG5cdGVuY29kZWQueHkgPSB2ZWMyKCB2LngsIGZyYWN0KCB2LnggKiAyNTUuMCApICk7XG5cdGVuY29kZWQueHkgPSBlbmNvZGVkLnh5IC0gKCBlbmNvZGVkLnl5ICogb2Zmc2V0ICk7XG5cdGVuY29kZWQuencgPSB2ZWMyKCB2LnksIGZyYWN0KCB2LnkgKiAyNTUuMCApICk7XG5cdGVuY29kZWQuencgPSBlbmNvZGVkLnp3IC0gKCBlbmNvZGVkLnd3ICogb2Zmc2V0ICk7XG5cdHJldHVybiBlbmNvZGVkO1xufVxudmVjMiBkZWNvZGVIYWxmUkdCQSggdmVjNCB2ICkge1xuXHRyZXR1cm4gdmVjMiggdi54ICsgKCB2LnkgLyAyNTUuMCApLCB2LnogKyAoIHYudyAvIDI1NS4wICkgKTtcbn1cbmZsb2F0IHZpZXdaVG9PcnRob2dyYXBoaWNEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggdmlld1ogKyBuZWFyICkgLyAoIG5lYXIgLSBmYXIgKTtcbn1cbmZsb2F0IG9ydGhvZ3JhcGhpY0RlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgbGluZWFyQ2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuIGxpbmVhckNsaXBaICogKCBuZWFyIC0gZmFyICkgLSBuZWFyO1xufVxuZmxvYXQgdmlld1pUb1BlcnNwZWN0aXZlRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoKCBuZWFyICsgdmlld1ogKSAqIGZhciApIC8gKCggZmFyIC0gbmVhciApICogdmlld1ogKTtcbn1cbmZsb2F0IHBlcnNwZWN0aXZlRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBpbnZDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCBuZWFyICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogaW52Q2xpcFogLSBmYXIgKTtcbn0iLApwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50OiIjaWZkZWYgUFJFTVVMVElQTElFRF9BTFBIQVxuXHRnbF9GcmFnQ29sb3IucmdiICo9IGdsX0ZyYWdDb2xvci5hO1xuI2VuZGlmIixwcm9qZWN0X3ZlcnRleDoidmVjNCBtdlBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG12UG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIG12UG9zaXRpb247XG4jZW5kaWZcbm12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiBtdlBvc2l0aW9uO1xuZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjsiLGRpdGhlcmluZ19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHRnbF9GcmFnQ29sb3IucmdiID0gZGl0aGVyaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdHZlYzMgZGl0aGVyaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRcdGZsb2F0IGdyaWRfcG9zaXRpb24gPSByYW5kKCBnbF9GcmFnQ29vcmQueHkgKTtcblx0XHR2ZWMzIGRpdGhlcl9zaGlmdF9SR0IgPSB2ZWMzKCAwLjI1IC8gMjU1LjAsIC0wLjI1IC8gMjU1LjAsIDAuMjUgLyAyNTUuMCApO1xuXHRcdGRpdGhlcl9zaGlmdF9SR0IgPSBtaXgoIDIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIC0yLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCBncmlkX3Bvc2l0aW9uICk7XG5cdFx0cmV0dXJuIGNvbG9yICsgZGl0aGVyX3NoaWZ0X1JHQjtcblx0fVxuI2VuZGlmIiwKcm91Z2huZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCByb3VnaG5lc3NGYWN0b3IgPSByb3VnaG5lc3M7XG4jaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR2ZWM0IHRleGVsUm91Z2huZXNzID0gdGV4dHVyZTJEKCByb3VnaG5lc3NNYXAsIHZVdiApO1xuXHRyb3VnaG5lc3NGYWN0b3IgKj0gdGV4ZWxSb3VnaG5lc3MuZztcbiNlbmRpZiIscm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHJvdWdobmVzc01hcDtcbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgZGlyZWN0aW9uYWxTaGFkb3dNYXBbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcG90U2hhZG93TWFwWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBwb2ludFNoYWRvd01hcFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHRmbG9hdCB0ZXh0dXJlMkRDb21wYXJlKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xuXHRcdHJldHVybiBzdGVwKCBjb21wYXJlLCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBkZXB0aHMsIHV2ICkgKSApO1xuXHR9XG5cdHZlYzIgdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2ICkge1xuXHRcdHJldHVybiBkZWNvZGVIYWxmUkdCQSggdGV4dHVyZTJEKCBzaGFkb3csIHV2ICkgKTtcblx0fVxuXHRmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXtcblx0XHRmbG9hdCBvY2NsdXNpb24gPSAxLjA7XG5cdFx0dmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTtcblx0XHRmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApO1xuXHRcdGlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7XG5cdFx0XHRmbG9hdCBkaXN0YW5jZSA9IGNvbXBhcmUgLSBkaXN0cmlidXRpb24ueCA7XG5cdFx0XHRmbG9hdCB2YXJpYW5jZSA9IG1heCggMC4wMDAwMCwgZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSApO1xuXHRcdFx0ZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTtcdFx0XHRzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTtcdFx0XHRvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9jY2x1c2lvbjtcblx0fVxuXHRmbG9hdCB0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHNpemUsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7XG5cdFx0Y29uc3QgdmVjMiBvZmZzZXQgPSB2ZWMyKCAwLjAsIDEuMCApO1xuXHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaXplO1xuXHRcdHZlYzIgY2VudHJvaWRVViA9ICggZmxvb3IoIHV2ICogc2l6ZSAtIDAuNSApICsgMC41ICkgKiB0ZXhlbFNpemU7XG5cdFx0ZmxvYXQgbGIgPSB0ZXh0dXJlMkRDb21wYXJlKCBkZXB0aHMsIGNlbnRyb2lkVVYgKyB0ZXhlbFNpemUgKiBvZmZzZXQueHgsIGNvbXBhcmUgKTtcblx0XHRmbG9hdCBsdCA9IHRleHR1cmUyRENvbXBhcmUoIGRlcHRocywgY2VudHJvaWRVViArIHRleGVsU2l6ZSAqIG9mZnNldC54eSwgY29tcGFyZSApO1xuXHRcdGZsb2F0IHJiID0gdGV4dHVyZTJEQ29tcGFyZSggZGVwdGhzLCBjZW50cm9pZFVWICsgdGV4ZWxTaXplICogb2Zmc2V0Lnl4LCBjb21wYXJlICk7XG5cdFx0ZmxvYXQgcnQgPSB0ZXh0dXJlMkRDb21wYXJlKCBkZXB0aHMsIGNlbnRyb2lkVVYgKyB0ZXhlbFNpemUgKiBvZmZzZXQueXksIGNvbXBhcmUgKTtcblx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgKiBzaXplICsgMC41ICk7XG5cdFx0ZmxvYXQgYSA9IG1peCggbGIsIGx0LCBmLnkgKTtcblx0XHRmbG9hdCBiID0gbWl4KCByYiwgcnQsIGYueSApO1xuXHRcdGZsb2F0IGMgPSBtaXgoIGEsIGIsIGYueCApO1xuXHRcdHJldHVybiBjO1xuXHR9XG5cdGZsb2F0IGdldFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQgKSB7XG5cdFx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHRcdHNoYWRvd0Nvb3JkLnh5eiAvPSBzaGFkb3dDb29yZC53O1xuXHRcdHNoYWRvd0Nvb3JkLnogKz0gc2hhZG93Qmlhcztcblx0XHRidmVjNCBpbkZydXN0dW1WZWMgPSBidmVjNCAoIHNoYWRvd0Nvb3JkLnggPj0gMC4wLCBzaGFkb3dDb29yZC54IDw9IDEuMCwgc2hhZG93Q29vcmQueSA+PSAwLjAsIHNoYWRvd0Nvb3JkLnkgPD0gMS4wICk7XG5cdFx0Ym9vbCBpbkZydXN0dW0gPSBhbGwoIGluRnJ1c3R1bVZlYyApO1xuXHRcdGJ2ZWMyIGZydXN0dW1UZXN0VmVjID0gYnZlYzIoIGluRnJ1c3R1bSwgc2hhZG93Q29vcmQueiA8PSAxLjAgKTtcblx0XHRib29sIGZydXN0dW1UZXN0ID0gYWxsKCBmcnVzdHVtVGVzdFZlYyApO1xuXHRcdGlmICggZnJ1c3R1bVRlc3QgKSB7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4MCA9IC0gdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgxID0gKyB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MSA9ICsgdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDIgPSBkeDAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTIgPSBkeTAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeDMgPSBkeDEgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTMgPSBkeTEgLyAyLjA7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MSApLCBzaGFkb3dDb29yZC56IClcblx0XHRcdCkgKiAoIDEuMCAvIDE3LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4MCA9IC0gdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgxID0gKyB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MSA9ICsgdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0c2hhZG93ID0gVlNNU2hhZG93KCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZW5kaWZcblx0XHR9XG5cdFx0cmV0dXJuIHNoYWRvdztcblx0fVxuXHR2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7XG5cdFx0dmVjMyBhYnNWID0gYWJzKCB2ICk7XG5cdFx0ZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7XG5cdFx0YWJzViAqPSBzY2FsZVRvQ3ViZTtcblx0XHR2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7XG5cdFx0dmVjMiBwbGFuYXIgPSB2Lnh5O1xuXHRcdGZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7XG5cdFx0ZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsO1xuXHRcdGlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGlmICggdi56ID4gMC4wIClcblx0XHRcdFx0cGxhbmFyLnggPSA0LjAgLSB2Lng7XG5cdFx0fSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25YID0gc2lnbiggdi54ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7XG5cdFx0fSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueCArIDIuMCAqIHNpZ25ZICsgMi4wO1xuXHRcdFx0cGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDtcblx0XHR9XG5cdFx0cmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApO1xuXHR9XG5cdGZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkge1xuXHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7XG5cdFx0dmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7XG5cdFx0ZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTtcdFx0ZHAgKz0gc2hhZG93Qmlhcztcblx0XHR2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApO1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHR2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWYiLApzaGFkb3dtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBwb2ludFNoYWRvd01hdHJpeFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuI2VuZGlmIiwKc2hhZG93bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0dkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSA9IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBpIF0gKiB3b3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHdvcmxkUG9zaXRpb247XG5cdH1cblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHR2UG9pbnRTaGFkb3dDb29yZFsgaSBdID0gcG9pbnRTaGFkb3dNYXRyaXhbIGkgXSAqIHdvcmxkUG9zaXRpb247XG5cdH1cblx0I2VuZGlmXG4jZW5kaWYiLApzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6ImZsb2F0IGdldFNoYWRvd01hc2soKSB7XG5cdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0I2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTtcblx0XHRzaGFkb3cgKj0gYWxsKCBidmVjMiggZGlyZWN0aW9uYWxMaWdodC5zaGFkb3csIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodCBzcG90TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRzWyBpIF07XG5cdFx0c2hhZG93ICo9IGFsbCggYnZlYzIoIHNwb3RMaWdodC5zaGFkb3csIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSBhbGwoIGJ2ZWMyKCBwb2ludExpZ2h0LnNoYWRvdywgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdH1cblx0I2VuZGlmXG5cdCNlbmRpZlxuXHRyZXR1cm4gc2hhZG93O1xufSIsCnNraW5iYXNlX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IGJvbmVNYXRYID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnggKTtcblx0bWF0NCBib25lTWF0WSA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC55ICk7XG5cdG1hdDQgYm9uZU1hdFogPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueiApO1xuXHRtYXQ0IGJvbmVNYXRXID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LncgKTtcbiNlbmRpZiIsc2tpbm5pbmdfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTtcblx0I2lmZGVmIEJPTkVfVEVYVFVSRVxuXHRcdHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIGJvbmVUZXh0dXJlO1xuXHRcdHVuaWZvcm0gaW50IGJvbmVUZXh0dXJlU2l6ZTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRmbG9hdCBqID0gaSAqIDQuMDtcblx0XHRcdGZsb2F0IHggPSBtb2QoIGosIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgeSA9IGZsb29yKCBqIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdGZsb2F0IGR5ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0eSA9IGR5ICogKCB5ICsgMC41ICk7XG5cdFx0XHR2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYyID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAxLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYzID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAyLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7XG5cdFx0XHRtYXQ0IGJvbmUgPSBtYXQ0KCB2MSwgdjIsIHYzLCB2NCApO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZWxzZVxuXHRcdHVuaWZvcm0gbWF0NCBib25lTWF0cmljZXNbIE1BWF9CT05FUyBdO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdG1hdDQgYm9uZSA9IGJvbmVNYXRyaWNlc1sgaW50KGkpIF07XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIiwKc2tpbm5pbmdfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHZlYzQgc2tpblZlcnRleCA9IGJpbmRNYXRyaXggKiB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG5cdHZlYzQgc2tpbm5lZCA9IHZlYzQoIDAuMCApO1xuXHRza2lubmVkICs9IGJvbmVNYXRYICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueDtcblx0c2tpbm5lZCArPSBib25lTWF0WSAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFogKiBza2luVmVydGV4ICogc2tpbldlaWdodC56O1xuXHRza2lubmVkICs9IGJvbmVNYXRXICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQudztcblx0dHJhbnNmb3JtZWQgPSAoIGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbm5lZCApLnh5ejtcbiNlbmRpZiIsc2tpbm5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBza2luTWF0cml4ID0gbWF0NCggMC4wICk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC54ICogYm9uZU1hdFg7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC55ICogYm9uZU1hdFk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC56ICogYm9uZU1hdFo7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC53ICogYm9uZU1hdFc7XG5cdHNraW5NYXRyaXggID0gYmluZE1hdHJpeEludmVyc2UgKiBza2luTWF0cml4ICogYmluZE1hdHJpeDtcblx0b2JqZWN0Tm9ybWFsID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdE5vcm1hbCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG9iamVjdFRhbmdlbnQgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNlbmRpZlxuI2VuZGlmIiwKc3BlY3VsYXJtYXBfZnJhZ21lbnQ6ImZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG4jaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHZlYzQgdGV4ZWxTcGVjdWxhciA9IHRleHR1cmUyRCggc3BlY3VsYXJNYXAsIHZVdiApO1xuXHRzcGVjdWxhclN0cmVuZ3RoID0gdGV4ZWxTcGVjdWxhci5yO1xuI2Vsc2Vcblx0c3BlY3VsYXJTdHJlbmd0aCA9IDEuMDtcbiNlbmRpZiIsc3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBUT05FX01BUFBJTkcgKVxuXHRnbF9GcmFnQ29sb3IucmdiID0gdG9uZU1hcHBpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nV2hpdGVQb2ludDtcbnZlYzMgTGluZWFyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdHJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7XG59XG52ZWMzIFJlaW5oYXJkVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApO1xufVxuI2RlZmluZSBVbmNoYXJ0ZWQySGVscGVyKCB4ICkgbWF4KCAoICggeCAqICggMC4xNSAqIHggKyAwLjEwICogMC41MCApICsgMC4yMCAqIDAuMDIgKSAvICggeCAqICggMC4xNSAqIHggKyAwLjUwICkgKyAwLjIwICogMC4zMCApICkgLSAwLjAyIC8gMC4zMCwgdmVjMyggMC4wICkgKVxudmVjMyBVbmNoYXJ0ZWQyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggVW5jaGFydGVkMkhlbHBlciggY29sb3IgKSAvIFVuY2hhcnRlZDJIZWxwZXIoIHZlYzMoIHRvbmVNYXBwaW5nV2hpdGVQb2ludCApICkgKTtcbn1cbnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdGNvbG9yID0gbWF4KCB2ZWMzKCAwLjAgKSwgY29sb3IgLSAwLjAwNCApO1xuXHRyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApO1xufVxudmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggKCBjb2xvciAqICggMi41MSAqIGNvbG9yICsgMC4wMyApICkgLyAoIGNvbG9yICogKCAyLjQzICogY29sb3IgKyAwLjU5ICkgKyAwLjE0ICkgKTtcbn0iLAp1dl9wYXJzX2ZyYWdtZW50OiIjaWYgKCBkZWZpbmVkKCBVU0VfVVYgKSAmJiAhIGRlZmluZWQoIFVWU19WRVJURVhfT05MWSApIClcblx0dmFyeWluZyB2ZWMyIHZVdjtcbiNlbmRpZiIsdXZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxuXHRcdHZlYzIgdlV2O1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMiB2VXY7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWYiLHV2X3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuI2VuZGlmIix1djJfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuI2VuZGlmIix1djJfcGFyc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHRhdHRyaWJ1dGUgdmVjMiB1djI7XG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuI2VuZGlmIiwKdXYyX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZVdjIgPSB1djI7XG4jZW5kaWYiLHdvcmxkcG9zX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkKCBESVNUQU5DRSApIHx8IGRlZmluZWQgKCBVU0VfU0hBRE9XTUFQIClcblx0dmVjNCB3b3JsZFBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHQjaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0XHR3b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0d29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiNlbmRpZiIsYmFja2dyb3VuZF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0MkQ7XG52YXJ5aW5nIHZlYzIgdlV2O1xudm9pZCBtYWluKCkge1xuXHR2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKCB0MkQsIHZVdiApO1xuXHRnbF9GcmFnQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IiwKYmFja2dyb3VuZF92ZXJ0OiJ2YXJ5aW5nIHZlYzIgdlV2O1xudW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xudm9pZCBtYWluKCkge1xuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApO1xufSIsY3ViZV9mcmFnOiJ1bmlmb3JtIHNhbXBsZXJDdWJlIHRDdWJlO1xudW5pZm9ybSBmbG9hdCB0RmxpcDtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG52b2lkIG1haW4oKSB7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlQ3ViZSggdEN1YmUsIHZlYzMoIHRGbGlwICogdldvcmxkRGlyZWN0aW9uLngsIHZXb3JsZERpcmVjdGlvbi55eiApICk7XG5cdGdsX0ZyYWdDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleENvbG9yICk7XG5cdGdsX0ZyYWdDb2xvci5hICo9IG9wYWNpdHk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLApjdWJlX3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53O1xufSIsZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggMS4wIC0gZ2xfRnJhZ0Nvb3JkLnogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGdsX0ZyYWdDb29yZC56ICk7XG5cdCNlbmRpZlxufSIsCmRlcHRoX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG59IiwKZGlzdGFuY2VSR0JBX2ZyYWc6IiNkZWZpbmUgRElTVEFOQ0VcbnVuaWZvcm0gdmVjMyByZWZlcmVuY2VQb3NpdGlvbjtcbnVuaWZvcm0gZmxvYXQgbmVhckRpc3RhbmNlO1xudW5pZm9ybSBmbG9hdCBmYXJEaXN0YW5jZTtcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4gKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdGZsb2F0IGRpc3QgPSBsZW5ndGgoIHZXb3JsZFBvc2l0aW9uIC0gcmVmZXJlbmNlUG9zaXRpb24gKTtcblx0ZGlzdCA9ICggZGlzdCAtIG5lYXJEaXN0YW5jZSApIC8gKCBmYXJEaXN0YW5jZSAtIG5lYXJEaXN0YW5jZSApO1xuXHRkaXN0ID0gc2F0dXJhdGUoIGRpc3QgKTtcblx0Z2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBkaXN0ICk7XG59IiwKZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG59IiwKZXF1aXJlY3RfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblx0dmVjMiBzYW1wbGVVVjtcblx0c2FtcGxlVVYueSA9IGFzaW4oIGNsYW1wKCBkaXJlY3Rpb24ueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRzYW1wbGVVVi54ID0gYXRhbiggZGlyZWN0aW9uLnosIGRpcmVjdGlvbi54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXHRnbF9GcmFnQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IiwKZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLGxpbmVkYXNoZWRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLApsaW5lZGFzaGVkX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2NhbGU7XG5hdHRyaWJ1dGUgZmxvYXQgbGluZURpc3RhbmNlO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHR2TGluZURpc3RhbmNlID0gc2NhbGUgKiBsaW5lRGlzdGFuY2U7XG5cdHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsCm1lc2hiYXNpY19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApLnh5eiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLAptZXNoYmFzaWNfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLAptZXNobGFtYmVydF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxpZ2h0bWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2TGlnaHRGcm9udCA6IHZMaWdodEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9IHZMaWdodEZyb250O1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IiwKbWVzaGxhbWJlcnRfdmVydDoiI2RlZmluZSBMQU1CRVJUXG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2xhbWJlcnRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IiwKbWVzaG1hdGNhcF9mcmFnOiIjZGVmaW5lIE1BVENBUFxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIHNhbXBsZXIyRCBtYXRjYXA7XG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0dmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG5cdHZlYzMgeCA9IG5vcm1hbGl6ZSggdmVjMyggdmlld0Rpci56LCAwLjAsIC0gdmlld0Rpci54ICkgKTtcblx0dmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTtcblx0dmVjMiB1diA9IHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41O1xuXHQjaWZkZWYgVVNFX01BVENBUFxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB0ZXh0dXJlMkQoIG1hdGNhcCwgdXYgKTtcblx0XHRtYXRjYXBDb2xvciA9IG1hdGNhcFRleGVsVG9MaW5lYXIoIG1hdGNhcENvbG9yICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjZW5kaWZcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYiAqIG1hdGNhcENvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLAptZXNobWF0Y2FwX3ZlcnQ6IiNkZWZpbmUgTUFUQ0FQXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaWZuZGVmIEZMQVRfU0hBREVEXG5cdFx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG59IiwKbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLAptZXNocGhvbmdfdmVydDoiI2RlZmluZSBQSE9OR1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsCm1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBSRUZMRUNUSVZJVFlcblx0I2RlZmluZSBDTEVBUkNPQVRcblx0I2RlZmluZSBUUkFOU1BBUkVOQ1lcbiNlbmRpZlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmZGVmIFRSQU5TUEFSRU5DWVxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zcGFyZW5jeTtcbiNlbmRpZlxuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuO1xuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8cm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaWZkZWYgVFJBTlNQQVJFTkNZXG5cdFx0ZGlmZnVzZUNvbG9yLmEgKj0gc2F0dXJhdGUoIDEuIC0gdHJhbnNwYXJlbmN5ICsgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICkgKTtcblx0I2VuZGlmXG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IiwKbWVzaHBoeXNpY2FsX3ZlcnQ6IiNkZWZpbmUgU1RBTkRBUkRcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLApub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsCm5vcm1hbF92ZXJ0OiIjZGVmaW5lIE5PUk1BTFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmXG59IiwKcG9pbnRzX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX3BhcnRpY2xlX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsCnBvaW50c192ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNpemU7XG51bmlmb3JtIGZsb2F0IHNjYWxlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1BvaW50U2l6ZSA9IHNpemU7XG5cdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIGdsX1BvaW50U2l6ZSAqPSAoIHNjYWxlIC8gLSBtdlBvc2l0aW9uLnogKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLApzaGFkb3dfZnJhZzoidW5pZm9ybSB2ZWMzIGNvbG9yO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IixzaGFkb3dfdmVydDoiI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsCnNwcml0ZV9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IiwKc3ByaXRlX3ZlcnQ6InVuaWZvcm0gZmxvYXQgcm90YXRpb247XG51bmlmb3JtIHZlYzIgY2VudGVyO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHR2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0dmVjMiBzY2FsZTtcblx0c2NhbGUueCA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDAgXS54LCBtb2RlbE1hdHJpeFsgMCBdLnksIG1vZGVsTWF0cml4WyAwIF0ueiApICk7XG5cdHNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueCwgbW9kZWxNYXRyaXhbIDEgXS55LCBtb2RlbE1hdHJpeFsgMSBdLnogKSApO1xuXHQjaWZuZGVmIFVTRV9TSVpFQVRURU5VQVRJT05cblx0XHRib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7XG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlICkgc2NhbGUgKj0gLSBtdlBvc2l0aW9uLno7XG5cdCNlbmRpZlxuXHR2ZWMyIGFsaWduZWRQb3NpdGlvbiA9ICggcG9zaXRpb24ueHkgLSAoIGNlbnRlciAtIHZlYzIoIDAuNSApICkgKSAqIHNjYWxlO1xuXHR2ZWMyIHJvdGF0ZWRQb3NpdGlvbjtcblx0cm90YXRlZFBvc2l0aW9uLnggPSBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRyb3RhdGVkUG9zaXRpb24ueSA9IHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54ICsgY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdG12UG9zaXRpb24ueHkgKz0gcm90YXRlZFBvc2l0aW9uO1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59In0sCkw9e2NvbW1vbjp7ZGlmZnVzZTp7dmFsdWU6bmV3IEooMTU2NTg3MzQpfSxvcGFjaXR5Ont2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgWn0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9fSxzcGVjdWxhcm1hcDp7c3BlY3VsYXJNYXA6e3ZhbHVlOm51bGx9fSxlbnZtYXA6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9LHJlZmxlY3Rpdml0eTp7dmFsdWU6MX0scmVmcmFjdGlvblJhdGlvOnt2YWx1ZTouOTh9LG1heE1pcExldmVsOnt2YWx1ZTowfX0sYW9tYXA6e2FvTWFwOnt2YWx1ZTpudWxsfSxhb01hcEludGVuc2l0eTp7dmFsdWU6MX19LGxpZ2h0bWFwOntsaWdodE1hcDp7dmFsdWU6bnVsbH0sbGlnaHRNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxlbWlzc2l2ZW1hcDp7ZW1pc3NpdmVNYXA6e3ZhbHVlOm51bGx9fSxidW1wbWFwOntidW1wTWFwOnt2YWx1ZTpudWxsfSxidW1wU2NhbGU6e3ZhbHVlOjF9fSxub3JtYWxtYXA6e25vcm1hbE1hcDp7dmFsdWU6bnVsbH0sCm5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgQigxLDEpfX0sZGlzcGxhY2VtZW50bWFwOntkaXNwbGFjZW1lbnRNYXA6e3ZhbHVlOm51bGx9LGRpc3BsYWNlbWVudFNjYWxlOnt2YWx1ZToxfSxkaXNwbGFjZW1lbnRCaWFzOnt2YWx1ZTowfX0scm91Z2huZXNzbWFwOntyb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxtZXRhbG5lc3NtYXA6e21ldGFsbmVzc01hcDp7dmFsdWU6bnVsbH19LGdyYWRpZW50bWFwOntncmFkaWVudE1hcDp7dmFsdWU6bnVsbH19LGZvZzp7Zm9nRGVuc2l0eTp7dmFsdWU6Mi41RS00fSxmb2dOZWFyOnt2YWx1ZToxfSxmb2dGYXI6e3ZhbHVlOjJFM30sZm9nQ29sb3I6e3ZhbHVlOm5ldyBKKDE2Nzc3MjE1KX19LGxpZ2h0czp7YW1iaWVudExpZ2h0Q29sb3I6e3ZhbHVlOltdfSxsaWdodFByb2JlOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxjb2xvcjp7fSxzaGFkb3c6e30sc2hhZG93Qmlhczp7fSwKc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxkaXJlY3Rpb25hbFNoYWRvd01hcDp7dmFsdWU6W119LGRpcmVjdGlvbmFsU2hhZG93TWF0cml4Ont2YWx1ZTpbXX0sc3BvdExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGlyZWN0aW9uOnt9LGRpc3RhbmNlOnt9LGNvbmVDb3M6e30scGVudW1icmFDb3M6e30sZGVjYXk6e30sc2hhZG93Ont9LHNoYWRvd0JpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxzcG90U2hhZG93TWFwOnt2YWx1ZTpbXX0sc3BvdFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHBvaW50TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkZWNheTp7fSxkaXN0YW5jZTp7fSxzaGFkb3c6e30sc2hhZG93Qmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fSxzaGFkb3dDYW1lcmFOZWFyOnt9LHNoYWRvd0NhbWVyYUZhcjp7fX19LApwb2ludFNoYWRvd01hcDp7dmFsdWU6W119LHBvaW50U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0saGVtaXNwaGVyZUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LHNreUNvbG9yOnt9LGdyb3VuZENvbG9yOnt9fX0scmVjdEFyZWFMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LHdpZHRoOnt9LGhlaWdodDp7fX19fSxwb2ludHM6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBKKDE1NjU4NzM0KX0sb3BhY2l0eTp7dmFsdWU6MX0sc2l6ZTp7dmFsdWU6MX0sc2NhbGU6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgWn19LHNwcml0ZTp7ZGlmZnVzZTp7dmFsdWU6bmV3IEooMTU2NTg3MzQpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBCKC41LC41KX0scm90YXRpb246e3ZhbHVlOjB9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LAp1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IFp9fX0sY2I9e2Jhc2ljOnt1bmlmb3Jtczp1YShbTC5jb21tb24sTC5zcGVjdWxhcm1hcCxMLmVudm1hcCxMLmFvbWFwLEwubGlnaHRtYXAsTC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6Uy5tZXNoYmFzaWNfdmVydCxmcmFnbWVudFNoYWRlcjpTLm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3Jtczp1YShbTC5jb21tb24sTC5zcGVjdWxhcm1hcCxMLmVudm1hcCxMLmFvbWFwLEwubGlnaHRtYXAsTC5lbWlzc2l2ZW1hcCxMLmZvZyxMLmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBKKDApfX1dKSx2ZXJ0ZXhTaGFkZXI6Uy5tZXNobGFtYmVydF92ZXJ0LGZyYWdtZW50U2hhZGVyOlMubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOnVhKFtMLmNvbW1vbixMLnNwZWN1bGFybWFwLEwuZW52bWFwLEwuYW9tYXAsTC5saWdodG1hcCxMLmVtaXNzaXZlbWFwLEwuYnVtcG1hcCxMLm5vcm1hbG1hcCxMLmRpc3BsYWNlbWVudG1hcCxMLmdyYWRpZW50bWFwLApMLmZvZyxMLmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBKKDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IEooMTExODQ4MSl9LHNoaW5pbmVzczp7dmFsdWU6MzB9fV0pLHZlcnRleFNoYWRlcjpTLm1lc2hwaG9uZ192ZXJ0LGZyYWdtZW50U2hhZGVyOlMubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3Jtczp1YShbTC5jb21tb24sTC5lbnZtYXAsTC5hb21hcCxMLmxpZ2h0bWFwLEwuZW1pc3NpdmVtYXAsTC5idW1wbWFwLEwubm9ybWFsbWFwLEwuZGlzcGxhY2VtZW50bWFwLEwucm91Z2huZXNzbWFwLEwubWV0YWxuZXNzbWFwLEwuZm9nLEwubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IEooMCl9LHJvdWdobmVzczp7dmFsdWU6LjV9LG1ldGFsbmVzczp7dmFsdWU6LjV9LGVudk1hcEludGVuc2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOlMubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5tZXNocGh5c2ljYWxfZnJhZ30sbWF0Y2FwOnt1bmlmb3Jtczp1YShbTC5jb21tb24sCkwuYnVtcG1hcCxMLm5vcm1hbG1hcCxMLmRpc3BsYWNlbWVudG1hcCxMLmZvZyx7bWF0Y2FwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6Uy5tZXNobWF0Y2FwX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6dWEoW0wucG9pbnRzLEwuZm9nXSksdmVydGV4U2hhZGVyOlMucG9pbnRzX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3Jtczp1YShbTC5jb21tb24sTC5mb2cse3NjYWxlOnt2YWx1ZToxfSxkYXNoU2l6ZTp7dmFsdWU6MX0sdG90YWxTaXplOnt2YWx1ZToyfX1dKSx2ZXJ0ZXhTaGFkZXI6Uy5saW5lZGFzaGVkX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3Jtczp1YShbTC5jb21tb24sTC5kaXNwbGFjZW1lbnRtYXBdKSx2ZXJ0ZXhTaGFkZXI6Uy5kZXB0aF92ZXJ0LGZyYWdtZW50U2hhZGVyOlMuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3Jtczp1YShbTC5jb21tb24sCkwuYnVtcG1hcCxMLm5vcm1hbG1hcCxMLmRpc3BsYWNlbWVudG1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOlMubm9ybWFsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5ub3JtYWxfZnJhZ30sc3ByaXRlOnt1bmlmb3Jtczp1YShbTC5zcHJpdGUsTC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6Uy5zcHJpdGVfdmVydCxmcmFnbWVudFNoYWRlcjpTLnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBafSx0MkQ6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6Uy5iYWNrZ3JvdW5kX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOnt0Q3ViZTp7dmFsdWU6bnVsbH0sdEZsaXA6e3ZhbHVlOi0xfSxvcGFjaXR5Ont2YWx1ZToxfX0sdmVydGV4U2hhZGVyOlMuY3ViZV92ZXJ0LGZyYWdtZW50U2hhZGVyOlMuY3ViZV9mcmFnfSxlcXVpcmVjdDp7dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LAp2ZXJ0ZXhTaGFkZXI6Uy5lcXVpcmVjdF92ZXJ0LGZyYWdtZW50U2hhZGVyOlMuZXF1aXJlY3RfZnJhZ30sZGlzdGFuY2VSR0JBOnt1bmlmb3Jtczp1YShbTC5jb21tb24sTC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgbn0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MUUzfX1dKSx2ZXJ0ZXhTaGFkZXI6Uy5kaXN0YW5jZVJHQkFfdmVydCxmcmFnbWVudFNoYWRlcjpTLmRpc3RhbmNlUkdCQV9mcmFnfSxzaGFkb3c6e3VuaWZvcm1zOnVhKFtMLmxpZ2h0cyxMLmZvZyx7Y29sb3I6e3ZhbHVlOm5ldyBKKDApfSxvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6Uy5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpTLnNoYWRvd19mcmFnfX07Y2IucGh5c2ljYWw9e3VuaWZvcm1zOnVhKFtjYi5zdGFuZGFyZC51bmlmb3Jtcyx7dHJhbnNwYXJlbmN5Ont2YWx1ZTowfSxjbGVhcmNvYXQ6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzczp7dmFsdWU6MH0sCnNoZWVuOnt2YWx1ZTpuZXcgSigwKX0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBCKDEsMSl9LGNsZWFyY29hdE5vcm1hbE1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOlMubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6Uy5tZXNocGh5c2ljYWxfZnJhZ307RWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRy5wcm90b3R5cGUpO0VkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FZDtaYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShELnByb3RvdHlwZSk7WmIucHJvdG90eXBlLmNvbnN0cnVjdG9yPVpiO25iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFkucHJvdG90eXBlKTtuYi5wcm90b3R5cGUuY29uc3RydWN0b3I9bmI7bmIucHJvdG90eXBlLmlzQ3ViZVRleHR1cmU9ITA7T2JqZWN0LmRlZmluZVByb3BlcnR5KG5iLnByb3RvdHlwZSwiaW1hZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW1hZ2V9LHNldDpmdW5jdGlvbihhKXt0aGlzLmltYWdlPQphfX0pO0NjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFkucHJvdG90eXBlKTtDYy5wcm90b3R5cGUuY29uc3RydWN0b3I9Q2M7Q2MucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO0RjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFkucHJvdG90eXBlKTtEYy5wcm90b3R5cGUuY29uc3RydWN0b3I9RGM7RGMucHJvdG90eXBlLmlzRGF0YVRleHR1cmUzRD0hMDt2YXIgdWg9bmV3IFkscmo9bmV3IENjLHRqPW5ldyBEYyx2aD1uZXcgbmIsb2g9W10scWg9W10sdGg9bmV3IEZsb2F0MzJBcnJheSgxNiksc2g9bmV3IEZsb2F0MzJBcnJheSg5KSxyaD1uZXcgRmxvYXQzMkFycmF5KDQpO3doLnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmNhY2hlO2EgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkmJmIubGVuZ3RoIT09YS5sZW5ndGgmJih0aGlzLmNhY2hlPW5ldyBGbG9hdDMyQXJyYXkoYS5sZW5ndGgpKTtIYShiLGEpfTt4aC5wcm90b3R5cGUuc2V0VmFsdWU9CmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9dGhpcy5zZXEsZT0wLGY9ZC5sZW5ndGg7ZSE9PWY7KytlKXt2YXIgZz1kW2VdO2cuc2V0VmFsdWUoYSxiW2cuaWRdLGMpfX07dmFyIGJnPS8oW1x3XGRfXSspKFxdKT8oXFt8XC4pPy9nO0NiLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihhLGIsYyxkKXtiPXRoaXMubWFwW2JdO3ZvaWQgMCE9PWImJmIuc2V0VmFsdWUoYSxjLGQpfTtDYi5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24oYSxiLGMpe2I9YltjXTt2b2lkIDAhPT1iJiZ0aGlzLnNldFZhbHVlKGEsYyxiKX07Q2IudXBsb2FkPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT0wLGY9Yi5sZW5ndGg7ZSE9PWY7KytlKXt2YXIgZz1iW2VdLGg9Y1tnLmlkXTshMSE9PWgubmVlZHNVcGRhdGUmJmcuc2V0VmFsdWUoYSxoLnZhbHVlLGQpfX07Q2Iuc2VxV2l0aFZhbHVlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MCxlPWEubGVuZ3RoO2QhPT1lOysrZCl7dmFyIGY9CmFbZF07Zi5pZCBpbiBiJiZjLnB1c2goZil9cmV0dXJuIGN9O3ZhciBZaj0wLGRnPS9eWyBcdF0qI2luY2x1ZGUgKzwoW1x3XGQuL10rKT4vZ20sRmg9LyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgPSAoXGQrKTsgaSA8IChcZCspOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxoaz0wO0RiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE8ucHJvdG90eXBlKTtEYi5wcm90b3R5cGUuY29uc3RydWN0b3I9RGI7RGIucHJvdG90eXBlLmlzTWVzaERlcHRoTWF0ZXJpYWw9ITA7RGIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Ty5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5kZXB0aFBhY2tpbmc9YS5kZXB0aFBhY2tpbmc7dGhpcy5za2lubmluZz1hLnNraW5uaW5nO3RoaXMubW9ycGhUYXJnZXRzPWEubW9ycGhUYXJnZXRzO3RoaXMubWFwPWEubWFwO3RoaXMuYWxwaGFNYXA9YS5hbHBoYU1hcDt0aGlzLmRpc3BsYWNlbWVudE1hcD1hLmRpc3BsYWNlbWVudE1hcDsKdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT1hLmRpc3BsYWNlbWVudFNjYWxlO3RoaXMuZGlzcGxhY2VtZW50Qmlhcz1hLmRpc3BsYWNlbWVudEJpYXM7dGhpcy53aXJlZnJhbWU9YS53aXJlZnJhbWU7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGg7cmV0dXJuIHRoaXN9O0ViLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE8ucHJvdG90eXBlKTtFYi5wcm90b3R5cGUuY29uc3RydWN0b3I9RWI7RWIucHJvdG90eXBlLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw9ITA7RWIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Ty5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KGEucmVmZXJlbmNlUG9zaXRpb24pO3RoaXMubmVhckRpc3RhbmNlPWEubmVhckRpc3RhbmNlO3RoaXMuZmFyRGlzdGFuY2U9YS5mYXJEaXN0YW5jZTt0aGlzLnNraW5uaW5nPWEuc2tpbm5pbmc7dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7CnRoaXMubWFwPWEubWFwO3RoaXMuYWxwaGFNYXA9YS5hbHBoYU1hcDt0aGlzLmRpc3BsYWNlbWVudE1hcD1hLmRpc3BsYWNlbWVudE1hcDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPWEuZGlzcGxhY2VtZW50U2NhbGU7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPWEuZGlzcGxhY2VtZW50QmlhcztyZXR1cm4gdGhpc307ZmcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpmZyxpc1dlYkdMTXVsdGl2aWV3UmVuZGVyVGFyZ2V0OiEwLGNvcHk6ZnVuY3Rpb24oYSl7QmEucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMubnVtVmlld3M9YS5udW1WaWV3cztyZXR1cm4gdGhpc30sc2V0TnVtVmlld3M6ZnVuY3Rpb24oYSl7dGhpcy5udW1WaWV3cyE9PWEmJih0aGlzLm51bVZpZXdzPWEsdGhpcy5kaXNwb3NlKCkpO3JldHVybiB0aGlzfX0pO0djLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLAp7Y29uc3RydWN0b3I6R2MsaXNHcm91cDohMH0pO0pkLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpKZCxpc0FycmF5Q2FtZXJhOiEwfSk7dmFyIE1oPW5ldyBuLE5oPW5ldyBuO09iamVjdC5hc3NpZ24oZ2cucHJvdG90eXBlLEFhLnByb3RvdHlwZSk7T2JqZWN0LmFzc2lnbihPaC5wcm90b3R5cGUsQWEucHJvdG90eXBlKTtPYmplY3QuYXNzaWduKExlLnByb3RvdHlwZSx7aXNGb2dFeHAyOiEwLGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBMZSh0aGlzLmNvbG9yLHRoaXMuZGVuc2l0eSl9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybnt0eXBlOiJGb2dFeHAyIixjb2xvcjp0aGlzLmNvbG9yLmdldEhleCgpLGRlbnNpdHk6dGhpcy5kZW5zaXR5fX19KTtPYmplY3QuYXNzaWduKE1lLnByb3RvdHlwZSx7aXNGb2c6ITAsY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1lKHRoaXMuY29sb3IsdGhpcy5uZWFyLHRoaXMuZmFyKX0sCnRvSlNPTjpmdW5jdGlvbigpe3JldHVybnt0eXBlOiJGb2ciLGNvbG9yOnRoaXMuY29sb3IuZ2V0SGV4KCksbmVhcjp0aGlzLm5lYXIsZmFyOnRoaXMuZmFyfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkocGIucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbihhKXshMD09PWEmJnRoaXMudmVyc2lvbisrfX0pO09iamVjdC5hc3NpZ24ocGIucHJvdG90eXBlLHtpc0ludGVybGVhdmVkQnVmZmVyOiEwLG9uVXBsb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oKXt9LHNldFVzYWdlOmZ1bmN0aW9uKGEpe3RoaXMudXNhZ2U9YTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbihhKXt0aGlzLmFycmF5PW5ldyBhLmFycmF5LmNvbnN0cnVjdG9yKGEuYXJyYXkpO3RoaXMuY291bnQ9YS5jb3VudDt0aGlzLnN0cmlkZT1hLnN0cmlkZTt0aGlzLnVzYWdlPWEudXNhZ2U7cmV0dXJuIHRoaXN9LGNvcHlBdDpmdW5jdGlvbihhLGIsYyl7YSo9dGhpcy5zdHJpZGU7Yyo9Yi5zdHJpZGU7Zm9yKHZhciBkPQowLGU9dGhpcy5zdHJpZGU7ZDxlO2QrKyl0aGlzLmFycmF5W2ErZF09Yi5hcnJheVtjK2RdO3JldHVybiB0aGlzfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTt0aGlzLmFycmF5LnNldChhLGIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sb25VcGxvYWQ6ZnVuY3Rpb24oYSl7dGhpcy5vblVwbG9hZENhbGxiYWNrPWE7cmV0dXJuIHRoaXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoS2QucHJvdG90eXBlLHtjb3VudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH19LGFycmF5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fX19KTtPYmplY3QuYXNzaWduKEtkLnByb3RvdHlwZSx7aXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTohMCxzZXRYOmZ1bmN0aW9uKGEsYil7dGhpcy5kYXRhLmFycmF5W2EqdGhpcy5kYXRhLnN0cmlkZSsKdGhpcy5vZmZzZXRdPWI7cmV0dXJuIHRoaXN9LHNldFk6ZnVuY3Rpb24oYSxiKXt0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdPWI7cmV0dXJuIHRoaXN9LHNldFo6ZnVuY3Rpb24oYSxiKXt0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdPWI7cmV0dXJuIHRoaXN9LHNldFc6ZnVuY3Rpb24oYSxiKXt0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWI7cmV0dXJuIHRoaXN9LGdldFg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVthKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdfSxnZXRZOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfSxnZXRaOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdfSwKZ2V0VzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W2EqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX0sc2V0WFk6ZnVuY3Rpb24oYSxiLGMpe2E9YSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O3RoaXMuZGF0YS5hcnJheVthKzBdPWI7dGhpcy5kYXRhLmFycmF5W2ErMV09YztyZXR1cm4gdGhpc30sc2V0WFlaOmZ1bmN0aW9uKGEsYixjLGQpe2E9YSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O3RoaXMuZGF0YS5hcnJheVthKzBdPWI7dGhpcy5kYXRhLmFycmF5W2ErMV09Yzt0aGlzLmRhdGEuYXJyYXlbYSsyXT1kO3JldHVybiB0aGlzfSxzZXRYWVpXOmZ1bmN0aW9uKGEsYixjLGQsZSl7YT1hKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7dGhpcy5kYXRhLmFycmF5W2ErMF09Yjt0aGlzLmRhdGEuYXJyYXlbYSsxXT1jO3RoaXMuZGF0YS5hcnJheVthKzJdPWQ7dGhpcy5kYXRhLmFycmF5W2ErM109ZTtyZXR1cm4gdGhpc319KTtHYi5wcm90b3R5cGU9Ck9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO0diLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1HYjtHYi5wcm90b3R5cGUuaXNTcHJpdGVNYXRlcmlhbD0hMDtHYi5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtPLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5tYXA9YS5tYXA7dGhpcy5hbHBoYU1hcD1hLmFscGhhTWFwO3RoaXMucm90YXRpb249YS5yb3RhdGlvbjt0aGlzLnNpemVBdHRlbnVhdGlvbj1hLnNpemVBdHRlbnVhdGlvbjtyZXR1cm4gdGhpc307dmFyIEhjLHplPW5ldyBuLHRkPW5ldyBuLHVkPW5ldyBuLEljPW5ldyBCLE1kPW5ldyBCLFFoPW5ldyBRLEVmPW5ldyBuLEFlPW5ldyBuLEZmPW5ldyBuLHZpPW5ldyBCLCRnPW5ldyBCLHdpPW5ldyBCO0xkLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpMZCxpc1Nwcml0ZTohMCxyYXljYXN0OmZ1bmN0aW9uKGEsCmIpe251bGw9PT1hLmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpO3RkLnNldEZyb21NYXRyaXhTY2FsZSh0aGlzLm1hdHJpeFdvcmxkKTtRaC5jb3B5KGEuY2FtZXJhLm1hdHJpeFdvcmxkKTt0aGlzLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKGEuY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSx0aGlzLm1hdHJpeFdvcmxkKTt1ZC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpO2EuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJnRkLm11bHRpcGx5U2NhbGFyKC11ZC56KTt2YXIgYz10aGlzLm1hdGVyaWFsLnJvdGF0aW9uO2lmKDAhPT1jKXt2YXIgZD1NYXRoLmNvcyhjKTt2YXIgZT1NYXRoLnNpbihjKX1jPXRoaXMuY2VudGVyOwpOZShFZi5zZXQoLS41LC0uNSwwKSx1ZCxjLHRkLGUsZCk7TmUoQWUuc2V0KC41LC0uNSwwKSx1ZCxjLHRkLGUsZCk7TmUoRmYuc2V0KC41LC41LDApLHVkLGMsdGQsZSxkKTt2aS5zZXQoMCwwKTskZy5zZXQoMSwwKTt3aS5zZXQoMSwxKTt2YXIgZj1hLnJheS5pbnRlcnNlY3RUcmlhbmdsZShFZixBZSxGZiwhMSx6ZSk7aWYobnVsbD09PWYmJihOZShBZS5zZXQoLS41LC41LDApLHVkLGMsdGQsZSxkKSwkZy5zZXQoMCwxKSxmPWEucmF5LmludGVyc2VjdFRyaWFuZ2xlKEVmLEZmLEFlLCExLHplKSxudWxsPT09ZikpcmV0dXJuO2U9YS5yYXkub3JpZ2luLmRpc3RhbmNlVG8oemUpO2U8YS5uZWFyfHxlPmEuZmFyfHxiLnB1c2goe2Rpc3RhbmNlOmUscG9pbnQ6emUuY2xvbmUoKSx1djpiYS5nZXRVVih6ZSxFZixBZSxGZix2aSwkZyx3aSxuZXcgQiksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubWF0ZXJpYWwpKS5jb3B5KHRoaXMpfSwKY29weTpmdW5jdGlvbihhKXtFLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt2b2lkIDAhPT1hLmNlbnRlciYmdGhpcy5jZW50ZXIuY29weShhLmNlbnRlcik7cmV0dXJuIHRoaXN9fSk7dmFyIEdmPW5ldyBuLHhpPW5ldyBuO05kLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpOZCxpc0xPRDohMCxjb3B5OmZ1bmN0aW9uKGEpe0UucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEsITEpO2E9YS5sZXZlbHM7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXt2YXIgZD1hW2JdO3RoaXMuYWRkTGV2ZWwoZC5vYmplY3QuY2xvbmUoKSxkLmRpc3RhbmNlKX1yZXR1cm4gdGhpc30sYWRkTGV2ZWw6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTtiPU1hdGguYWJzKGIpO2Zvcih2YXIgYz10aGlzLmxldmVscyxkPTA7ZDxjLmxlbmd0aCYmIShiPGNbZF0uZGlzdGFuY2UpO2QrKyk7Yy5zcGxpY2UoZCwwLHtkaXN0YW5jZTpiLApvYmplY3Q6YX0pO3RoaXMuYWRkKGEpO3JldHVybiB0aGlzfSxnZXRPYmplY3RGb3JEaXN0YW5jZTpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcy5sZXZlbHMsYz0xLGQ9Yi5sZW5ndGg7YzxkJiYhKGE8YltjXS5kaXN0YW5jZSk7YysrKTtyZXR1cm4gYltjLTFdLm9iamVjdH0scmF5Y2FzdDpmdW5jdGlvbihhLGIpe0dmLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTt2YXIgYz1hLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhHZik7dGhpcy5nZXRPYmplY3RGb3JEaXN0YW5jZShjKS5yYXljYXN0KGEsYil9LHVwZGF0ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxldmVscztpZigxPGIubGVuZ3RoKXtHZi5zZXRGcm9tTWF0cml4UG9zaXRpb24oYS5tYXRyaXhXb3JsZCk7eGkuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpO2E9R2YuZGlzdGFuY2VUbyh4aSk7YlswXS5vYmplY3QudmlzaWJsZT0hMDtmb3IodmFyIGM9MSxkPWIubGVuZ3RoO2M8CmQ7YysrKWlmKGE+PWJbY10uZGlzdGFuY2UpYltjLTFdLm9iamVjdC52aXNpYmxlPSExLGJbY10ub2JqZWN0LnZpc2libGU9ITA7ZWxzZSBicmVhaztmb3IoO2M8ZDtjKyspYltjXS5vYmplY3QudmlzaWJsZT0hMX19LHRvSlNPTjpmdW5jdGlvbihhKXthPUUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSk7YS5vYmplY3QubGV2ZWxzPVtdO2Zvcih2YXIgYj10aGlzLmxldmVscyxjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKXt2YXIgZT1iW2NdO2Eub2JqZWN0LmxldmVscy5wdXNoKHtvYmplY3Q6ZS5vYmplY3QudXVpZCxkaXN0YW5jZTplLmRpc3RhbmNlfSl9cmV0dXJuIGF9fSk7T2QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShlYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpPZCxpc1NraW5uZWRNZXNoOiEwLGJpbmQ6ZnVuY3Rpb24oYSxiKXt0aGlzLnNrZWxldG9uPWE7dm9pZCAwPT09YiYmKHRoaXMudXBkYXRlTWF0cml4V29ybGQoITApLHRoaXMuc2tlbGV0b24uY2FsY3VsYXRlSW52ZXJzZXMoKSwKYj10aGlzLm1hdHJpeFdvcmxkKTt0aGlzLmJpbmRNYXRyaXguY29weShiKTt0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmdldEludmVyc2UoYil9LHBvc2U6ZnVuY3Rpb24oKXt0aGlzLnNrZWxldG9uLnBvc2UoKX0sbm9ybWFsaXplU2tpbldlaWdodHM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9bmV3IGRhLGI9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQsYz0wLGQ9Yi5jb3VudDtjPGQ7YysrKXthLng9Yi5nZXRYKGMpO2EueT1iLmdldFkoYyk7YS56PWIuZ2V0WihjKTthLnc9Yi5nZXRXKGMpO3ZhciBlPTEvYS5tYW5oYXR0YW5MZW5ndGgoKTtJbmZpbml0eSE9PWU/YS5tdWx0aXBseVNjYWxhcihlKTphLnNldCgxLDAsMCwwKTtiLnNldFhZWlcoYyxhLngsYS55LGEueixhLncpfX0sdXBkYXRlTWF0cml4V29ybGQ6ZnVuY3Rpb24oYSl7ZWEucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkLmNhbGwodGhpcyxhKTsiYXR0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmdldEludmVyc2UodGhpcy5tYXRyaXhXb3JsZCk6CiJkZXRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuZ2V0SW52ZXJzZSh0aGlzLmJpbmRNYXRyaXgpOmNvbnNvbGUud2FybigiVEhSRUUuU2tpbm5lZE1lc2g6IFVucmVjb2duaXplZCBiaW5kTW9kZTogIit0aGlzLmJpbmRNb2RlKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5nZW9tZXRyeSx0aGlzLm1hdGVyaWFsKSkuY29weSh0aGlzKX19KTt2YXIgeWk9bmV3IFEsRGs9bmV3IFE7T2JqZWN0LmFzc2lnbihPZS5wcm90b3R5cGUse2NhbGN1bGF0ZUludmVyc2VzOmZ1bmN0aW9uKCl7dGhpcy5ib25lSW52ZXJzZXM9W107Zm9yKHZhciBhPTAsYj10aGlzLmJvbmVzLmxlbmd0aDthPGI7YSsrKXt2YXIgYz1uZXcgUTt0aGlzLmJvbmVzW2FdJiZjLmdldEludmVyc2UodGhpcy5ib25lc1thXS5tYXRyaXhXb3JsZCk7dGhpcy5ib25lSW52ZXJzZXMucHVzaChjKX19LHBvc2U6ZnVuY3Rpb24oKXt2YXIgYSxiOwp2YXIgYz0wO2ZvcihiPXRoaXMuYm9uZXMubGVuZ3RoO2M8YjtjKyspKGE9dGhpcy5ib25lc1tjXSkmJmEubWF0cml4V29ybGQuZ2V0SW52ZXJzZSh0aGlzLmJvbmVJbnZlcnNlc1tjXSk7Yz0wO2ZvcihiPXRoaXMuYm9uZXMubGVuZ3RoO2M8YjtjKyspaWYoYT10aGlzLmJvbmVzW2NdKWEucGFyZW50JiZhLnBhcmVudC5pc0JvbmU/KGEubWF0cml4LmdldEludmVyc2UoYS5wYXJlbnQubWF0cml4V29ybGQpLGEubWF0cml4Lm11bHRpcGx5KGEubWF0cml4V29ybGQpKTphLm1hdHJpeC5jb3B5KGEubWF0cml4V29ybGQpLGEubWF0cml4LmRlY29tcG9zZShhLnBvc2l0aW9uLGEucXVhdGVybmlvbixhLnNjYWxlKX0sdXBkYXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuYm9uZXMsYj10aGlzLmJvbmVJbnZlcnNlcyxjPXRoaXMuYm9uZU1hdHJpY2VzLGQ9dGhpcy5ib25lVGV4dHVyZSxlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKXlpLm11bHRpcGx5TWF0cmljZXMoYVtlXT9hW2VdLm1hdHJpeFdvcmxkOgpEayxiW2VdKSx5aS50b0FycmF5KGMsMTYqZSk7dm9pZCAwIT09ZCYmKGQubmVlZHNVcGRhdGU9ITApfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgT2UodGhpcy5ib25lcyx0aGlzLmJvbmVJbnZlcnNlcyl9LGdldEJvbmVCeU5hbWU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLmJvbmVzLmxlbmd0aDtiPGM7YisrKXt2YXIgZD10aGlzLmJvbmVzW2JdO2lmKGQubmFtZT09PWEpcmV0dXJuIGR9fX0pO2lnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjppZyxpc0JvbmU6ITB9KTtQZS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGVhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlBlLGlzSW5zdGFuY2VkTWVzaDohMCxyYXljYXN0OmZ1bmN0aW9uKCl7fSxzZXRNYXRyaXhBdDpmdW5jdGlvbihhLGIpe2IudG9BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KmEpfSx1cGRhdGVNb3JwaFRhcmdldHM6ZnVuY3Rpb24oKXt9fSk7ClIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO1IucHJvdG90eXBlLmNvbnN0cnVjdG9yPVI7Ui5wcm90b3R5cGUuaXNMaW5lQmFzaWNNYXRlcmlhbD0hMDtSLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe08ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuY29sb3IuY29weShhLmNvbG9yKTt0aGlzLmxpbmV3aWR0aD1hLmxpbmV3aWR0aDt0aGlzLmxpbmVjYXA9YS5saW5lY2FwO3RoaXMubGluZWpvaW49YS5saW5lam9pbjtyZXR1cm4gdGhpc307dmFyIHppPW5ldyBuLEFpPW5ldyBuLEJpPW5ldyBRLEhmPW5ldyBSYixCZT1uZXcgbWI7cmEucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnJhLGlzTGluZTohMCxjb21wdXRlTGluZURpc3RhbmNlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2VvbWV0cnk7aWYoYS5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT1hLmluZGV4KXtmb3IodmFyIGI9CmEuYXR0cmlidXRlcy5wb3NpdGlvbixjPVswXSxkPTEsZT1iLmNvdW50O2Q8ZTtkKyspemkuZnJvbUJ1ZmZlckF0dHJpYnV0ZShiLGQtMSksQWkuZnJvbUJ1ZmZlckF0dHJpYnV0ZShiLGQpLGNbZF09Y1tkLTFdLGNbZF0rPXppLmRpc3RhbmNlVG8oQWkpO2Euc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBBKGMsMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIGlmKGEuaXNHZW9tZXRyeSlmb3IoYj1hLnZlcnRpY2VzLGM9YS5saW5lRGlzdGFuY2VzLGNbMF09MCxkPTEsZT1iLmxlbmd0aDtkPGU7ZCsrKWNbZF09Y1tkLTFdLGNbZF0rPWJbZC0xXS5kaXN0YW5jZVRvKGJbZF0pO3JldHVybiB0aGlzfSxyYXljYXN0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5saW5lUHJlY2lzaW9uLGQ9dGhpcy5nZW9tZXRyeSwKZT10aGlzLm1hdHJpeFdvcmxkO251bGw9PT1kLmJvdW5kaW5nU3BoZXJlJiZkLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO0JlLmNvcHkoZC5ib3VuZGluZ1NwaGVyZSk7QmUuYXBwbHlNYXRyaXg0KGUpO0JlLnJhZGl1cys9YztpZighMSE9PWEucmF5LmludGVyc2VjdHNTcGhlcmUoQmUpKXtCaS5nZXRJbnZlcnNlKGUpO0hmLmNvcHkoYS5yYXkpLmFwcGx5TWF0cml4NChCaSk7Yy89KHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zO2MqPWM7dmFyIGY9bmV3IG4sZz1uZXcgbjtlPW5ldyBuO3ZhciBoPW5ldyBuLGw9dGhpcyYmdGhpcy5pc0xpbmVTZWdtZW50cz8yOjE7aWYoZC5pc0J1ZmZlckdlb21ldHJ5KXt2YXIgbT1kLmluZGV4LGs9ZC5hdHRyaWJ1dGVzLnBvc2l0aW9uLmFycmF5O2lmKG51bGwhPT1tKXttPW0uYXJyYXk7ZD0wO2Zvcih2YXIgcT1tLmxlbmd0aC0xO2Q8cTtkKz1sKXt2YXIgdT1tW2QrMV07Zi5mcm9tQXJyYXkoaywzKm1bZF0pO2cuZnJvbUFycmF5KGssCjMqdSk7dT1IZi5kaXN0YW5jZVNxVG9TZWdtZW50KGYsZyxoLGUpO3U+Y3x8KGguYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLHU9YS5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCksdTxhLm5lYXJ8fHU+YS5mYXJ8fGIucHVzaCh7ZGlzdGFuY2U6dSxwb2ludDplLmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4OmQsZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSkpfX1lbHNlIGZvcihkPTAscT1rLmxlbmd0aC8zLTE7ZDxxO2QrPWwpZi5mcm9tQXJyYXkoaywzKmQpLGcuZnJvbUFycmF5KGssMypkKzMpLHU9SGYuZGlzdGFuY2VTcVRvU2VnbWVudChmLGcsaCxlKSx1PmN8fChoLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSx1PWEucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKGgpLHU8YS5uZWFyfHx1PmEuZmFyfHxiLnB1c2goe2Rpc3RhbmNlOnUscG9pbnQ6ZS5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSwKaW5kZXg6ZCxmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KSl9ZWxzZSBpZihkLmlzR2VvbWV0cnkpZm9yKGY9ZC52ZXJ0aWNlcyxnPWYubGVuZ3RoLGQ9MDtkPGctMTtkKz1sKXU9SGYuZGlzdGFuY2VTcVRvU2VnbWVudChmW2RdLGZbZCsxXSxoLGUpLHU+Y3x8KGguYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLHU9YS5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCksdTxhLm5lYXJ8fHU+YS5mYXJ8fGIucHVzaCh7ZGlzdGFuY2U6dSxwb2ludDplLmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4OmQsZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSkpfX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5nZW9tZXRyeSx0aGlzLm1hdGVyaWFsKSkuY29weSh0aGlzKX19KTt2YXIgSWY9bmV3IG4sSmY9bmV3IG47WC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHJhLnByb3RvdHlwZSksCntjb25zdHJ1Y3RvcjpYLGlzTGluZVNlZ21lbnRzOiEwLGNvbXB1dGVMaW5lRGlzdGFuY2VzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZW9tZXRyeTtpZihhLmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PWEuaW5kZXgpe2Zvcih2YXIgYj1hLmF0dHJpYnV0ZXMucG9zaXRpb24sYz1bXSxkPTAsZT1iLmNvdW50O2Q8ZTtkKz0yKUlmLmZyb21CdWZmZXJBdHRyaWJ1dGUoYixkKSxKZi5mcm9tQnVmZmVyQXR0cmlidXRlKGIsZCsxKSxjW2RdPTA9PT1kPzA6Y1tkLTFdLGNbZCsxXT1jW2RdK0lmLmRpc3RhbmNlVG8oSmYpO2Euc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBBKGMsMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgaWYoYS5pc0dlb21ldHJ5KWZvcihiPWEudmVydGljZXMsYz1hLmxpbmVEaXN0YW5jZXMsCmQ9MCxlPWIubGVuZ3RoO2Q8ZTtkKz0yKUlmLmNvcHkoYltkXSksSmYuY29weShiW2QrMV0pLGNbZF09MD09PWQ/MDpjW2QtMV0sY1tkKzFdPWNbZF0rSWYuZGlzdGFuY2VUbyhKZik7cmV0dXJuIHRoaXN9fSk7UWUucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShyYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpRZSxpc0xpbmVMb29wOiEwfSk7UWEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO1FhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RYTtRYS5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtRYS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtPLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5tYXA9YS5tYXA7dGhpcy5hbHBoYU1hcD1hLmFscGhhTWFwO3RoaXMuc2l6ZT1hLnNpemU7dGhpcy5zaXplQXR0ZW51YXRpb249YS5zaXplQXR0ZW51YXRpb247dGhpcy5tb3JwaFRhcmdldHM9CmEubW9ycGhUYXJnZXRzO3JldHVybiB0aGlzfTt2YXIgQ2k9bmV3IFEsa2c9bmV3IFJiLENlPW5ldyBtYixLZj1uZXcgbjtKYy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6SmMsaXNQb2ludHM6ITAscmF5Y2FzdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2VvbWV0cnksZD10aGlzLm1hdHJpeFdvcmxkLGU9YS5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZDtudWxsPT09Yy5ib3VuZGluZ1NwaGVyZSYmYy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtDZS5jb3B5KGMuYm91bmRpbmdTcGhlcmUpO0NlLmFwcGx5TWF0cml4NChkKTtDZS5yYWRpdXMrPWU7aWYoITEhPT1hLnJheS5pbnRlcnNlY3RzU3BoZXJlKENlKSlpZihDaS5nZXRJbnZlcnNlKGQpLGtnLmNvcHkoYS5yYXkpLmFwcGx5TWF0cml4NChDaSksZS89KHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zLGUqPWUsYy5pc0J1ZmZlckdlb21ldHJ5KXt2YXIgZj0KYy5pbmRleDtjPWMuYXR0cmlidXRlcy5wb3NpdGlvbi5hcnJheTtpZihudWxsIT09Zil7dmFyIGc9Zi5hcnJheTtmPTA7Zm9yKHZhciBoPWcubGVuZ3RoO2Y8aDtmKyspe3ZhciBsPWdbZl07S2YuZnJvbUFycmF5KGMsMypsKTtqZyhLZixsLGUsZCxhLGIsdGhpcyl9fWVsc2UgZm9yKGY9MCxnPWMubGVuZ3RoLzM7ZjxnO2YrKylLZi5mcm9tQXJyYXkoYywzKmYpLGpnKEtmLGYsZSxkLGEsYix0aGlzKX1lbHNlIGZvcihjPWMudmVydGljZXMsZj0wLGc9Yy5sZW5ndGg7ZjxnO2YrKylqZyhjW2ZdLGYsZSxkLGEsYix0aGlzKX0sdXBkYXRlTW9ycGhUYXJnZXRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZW9tZXRyeTtpZihhLmlzQnVmZmVyR2VvbWV0cnkpe2E9YS5tb3JwaEF0dHJpYnV0ZXM7dmFyIGI9T2JqZWN0LmtleXMoYSk7aWYoMDxiLmxlbmd0aCl7dmFyIGM9YVtiWzBdXTtpZih2b2lkIDAhPT1jKWZvcih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT0Ke30sYT0wLGI9Yy5sZW5ndGg7YTxiO2ErKyl7dmFyIGQ9Y1thXS5uYW1lfHxTdHJpbmcoYSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKTt0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtkXT1hfX19ZWxzZSBhPWEubW9ycGhUYXJnZXRzLHZvaWQgMCE9PWEmJjA8YS5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlBvaW50cy51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5nZW9tZXRyeSx0aGlzLm1hdGVyaWFsKSkuY29weSh0aGlzKX19KTtsZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFkucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6bGcsaXNWaWRlb1RleHR1cmU6ITAsdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5pbWFnZTthLnJlYWR5U3RhdGU+PQphLkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fSk7S2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWS5wcm90b3R5cGUpO0tjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1LYztLYy5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDtQZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShZLnByb3RvdHlwZSk7UGQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVBkO1BkLnByb3RvdHlwZS5pc0NhbnZhc1RleHR1cmU9ITA7UWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWS5wcm90b3R5cGUpO1FkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RZDtRZC5wcm90b3R5cGUuaXNEZXB0aFRleHR1cmU9ITA7TGMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRC5wcm90b3R5cGUpO0xjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MYztSZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7UmQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVJkO01jLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKTsKTWMucHJvdG90eXBlLmNvbnN0cnVjdG9yPU1jO1NkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtTZC5wcm90b3R5cGUuY29uc3RydWN0b3I9U2Q7RWEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRC5wcm90b3R5cGUpO0VhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FYTtUZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7VGQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVRkO05jLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVhLnByb3RvdHlwZSk7TmMucHJvdG90eXBlLmNvbnN0cnVjdG9yPU5jO1VkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtVZC5wcm90b3R5cGUuY29uc3RydWN0b3I9VWQ7YWMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRWEucHJvdG90eXBlKTthYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YWM7VmQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRy5wcm90b3R5cGUpO1ZkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KVmQ7T2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRWEucHJvdG90eXBlKTtPYy5wcm90b3R5cGUuY29uc3RydWN0b3I9T2M7V2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRy5wcm90b3R5cGUpO1dkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XZDtQYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFYS5wcm90b3R5cGUpO1BjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1QYztYZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7WGQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVhkO2JjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKTtiYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YmM7YmMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPUQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EucGF0aD10aGlzLnBhcmFtZXRlcnMucGF0aC50b0pTT04oKTtyZXR1cm4gYX07WWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRy5wcm90b3R5cGUpO1lkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KWWQ7UWMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRC5wcm90b3R5cGUpO1FjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RYztaZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7WmQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVpkO1JjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKTtSYy5wcm90b3R5cGUuY29uc3RydWN0b3I9UmM7dmFyIEVrPXt0cmlhbmd1bGF0ZTpmdW5jdGlvbihhLGIsYyl7Yz1jfHwyO3ZhciBkPWImJmIubGVuZ3RoLGU9ZD9iWzBdKmM6YS5sZW5ndGgsZj1SaChhLDAsZSxjLCEwKSxnPVtdO2lmKCFmfHxmLm5leHQ9PT1mLnByZXYpcmV0dXJuIGc7dmFyIGg7aWYoZCl7dmFyIGw9YztkPVtdO3ZhciBtO3ZhciBrPTA7Zm9yKG09Yi5sZW5ndGg7azxtO2srKyl7dmFyIG49YltrXSpsO3ZhciB1PWs8bS0xP2JbaysxXSpsOmEubGVuZ3RoO249UmgoYSxuLHUsbCwhMSk7bj09PW4ubmV4dCYmKG4uc3RlaW5lcj0hMCk7ZC5wdXNoKHBrKG4pKX1kLnNvcnQobmspOwpmb3Ioaz0wO2s8ZC5sZW5ndGg7aysrKXtiPWRba107bD1mO2lmKGw9b2soYixsKSliPVVoKGwsYiksYWUoYixiLm5leHQpO2Y9YWUoZixmLm5leHQpfX1pZihhLmxlbmd0aD44MCpjKXt2YXIgcD1oPWFbMF07dmFyIHQ9ZD1hWzFdO2ZvcihsPWM7bDxlO2wrPWMpaz1hW2xdLGI9YVtsKzFdLGs8cCYmKHA9ayksYjx0JiYodD1iKSxrPmgmJihoPWspLGI+ZCYmKGQ9Yik7aD1NYXRoLm1heChoLXAsZC10KTtoPTAhPT1oPzEvaDowfWJlKGYsZyxjLHAsdCxoKTtyZXR1cm4gZ319LHFiPXthcmVhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmxlbmd0aCxjPTAsZD1iLTEsZT0wO2U8YjtkPWUrKyljKz1hW2RdLngqYVtlXS55LWFbZV0ueCphW2RdLnk7cmV0dXJuLjUqY30saXNDbG9ja1dpc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIDA+cWIuYXJlYShhKX0sdHJpYW5ndWxhdGVTaGFwZTpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9W10sZT1bXTtWaChhKTtXaChjLGEpO3ZhciBmPWEubGVuZ3RoO2IuZm9yRWFjaChWaCk7CmZvcihhPTA7YTxiLmxlbmd0aDthKyspZC5wdXNoKGYpLGYrPWJbYV0ubGVuZ3RoLFdoKGMsYlthXSk7Yj1Fay50cmlhbmd1bGF0ZShjLGQpO2ZvcihhPTA7YTxiLmxlbmd0aDthKz0zKWUucHVzaChiLnNsaWNlKGEsYSszKSk7cmV0dXJuIGV9fTtkYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7ZGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWRjO2RjLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1HLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gWGgodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0aGlzLnBhcmFtZXRlcnMub3B0aW9ucyxhKX07ZGIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRC5wcm90b3R5cGUpO2RiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kYjtkYi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9RC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIFhoKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsCnRoaXMucGFyYW1ldGVycy5vcHRpb25zLGEpfTt2YXIgcWs9e2dlbmVyYXRlVG9wVVY6ZnVuY3Rpb24oYSxiLGMsZCxlKXthPWJbMypkXTtkPWJbMypkKzFdO3ZhciBmPWJbMyplXTtlPWJbMyplKzFdO3JldHVybltuZXcgQihiWzMqY10sYlszKmMrMV0pLG5ldyBCKGEsZCksbmV3IEIoZixlKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbihhLGIsYyxkLGUsZil7YT1iWzMqY107dmFyIGc9YlszKmMrMV07Yz1iWzMqYysyXTt2YXIgaD1iWzMqZF0sbD1iWzMqZCsxXTtkPWJbMypkKzJdO3ZhciBrPWJbMyplXSxuPWJbMyplKzFdO2U9YlszKmUrMl07dmFyIHE9YlszKmZdLHU9YlszKmYrMV07Yj1iWzMqZisyXTtyZXR1cm4uMDE+TWF0aC5hYnMoZy1sKT9bbmV3IEIoYSwxLWMpLG5ldyBCKGgsMS1kKSxuZXcgQihrLDEtZSksbmV3IEIocSwxLWIpXTpbbmV3IEIoZywxLWMpLG5ldyBCKGwsMS1kKSxuZXcgQihuLDEtZSksbmV3IEIodSwxLWIpXX19O2RlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTsKZGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWRlO1RjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGRiLnByb3RvdHlwZSk7VGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPVRjO2VlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtlZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZWU7SGIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRC5wcm90b3R5cGUpO0hiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IYjtmZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7ZmUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWZlO1VjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKTtVYy5wcm90b3R5cGUuY29uc3RydWN0b3I9VWM7Z2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRy5wcm90b3R5cGUpO2dlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nZTtWYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShELnByb3RvdHlwZSk7VmMucHJvdG90eXBlLmNvbnN0cnVjdG9yPQpWYztlYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7ZWMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWVjO2VjLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1HLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gWWgodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyxhKX07ZmMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRC5wcm90b3R5cGUpO2ZjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1mYztmYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9RC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIFloKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsYSl9O1djLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKTtXYy5wcm90b3R5cGUuY29uc3RydWN0b3I9V2M7Z2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRy5wcm90b3R5cGUpO2djLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nYztyYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShELnByb3RvdHlwZSk7CnJiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yYjtoZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnYy5wcm90b3R5cGUpO2hlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1oZTtpZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyYi5wcm90b3R5cGUpO2llLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1pZTtqZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7amUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWplO1hjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKTtYYy5wcm90b3R5cGUuY29uc3RydWN0b3I9WGM7dmFyIGphPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLFdpcmVmcmFtZUdlb21ldHJ5OkxjLFBhcmFtZXRyaWNHZW9tZXRyeTpSZCxQYXJhbWV0cmljQnVmZmVyR2VvbWV0cnk6TWMsVGV0cmFoZWRyb25HZW9tZXRyeTpUZCxUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5Ok5jLE9jdGFoZWRyb25HZW9tZXRyeTpVZCxPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnk6YWMsCkljb3NhaGVkcm9uR2VvbWV0cnk6VmQsSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTpPYyxEb2RlY2FoZWRyb25HZW9tZXRyeTpXZCxEb2RlY2FoZWRyb25CdWZmZXJHZW9tZXRyeTpQYyxQb2x5aGVkcm9uR2VvbWV0cnk6U2QsUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OkVhLFR1YmVHZW9tZXRyeTpYZCxUdWJlQnVmZmVyR2VvbWV0cnk6YmMsVG9ydXNLbm90R2VvbWV0cnk6WWQsVG9ydXNLbm90QnVmZmVyR2VvbWV0cnk6UWMsVG9ydXNHZW9tZXRyeTpaZCxUb3J1c0J1ZmZlckdlb21ldHJ5OlJjLFRleHRHZW9tZXRyeTpkZSxUZXh0QnVmZmVyR2VvbWV0cnk6VGMsU3BoZXJlR2VvbWV0cnk6ZWUsU3BoZXJlQnVmZmVyR2VvbWV0cnk6SGIsUmluZ0dlb21ldHJ5OmZlLFJpbmdCdWZmZXJHZW9tZXRyeTpVYyxQbGFuZUdlb21ldHJ5OkVkLFBsYW5lQnVmZmVyR2VvbWV0cnk6WmIsTGF0aGVHZW9tZXRyeTpnZSxMYXRoZUJ1ZmZlckdlb21ldHJ5OlZjLFNoYXBlR2VvbWV0cnk6ZWMsU2hhcGVCdWZmZXJHZW9tZXRyeTpmYywKRXh0cnVkZUdlb21ldHJ5OmRjLEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpkYixFZGdlc0dlb21ldHJ5OldjLENvbmVHZW9tZXRyeTpoZSxDb25lQnVmZmVyR2VvbWV0cnk6aWUsQ3lsaW5kZXJHZW9tZXRyeTpnYyxDeWxpbmRlckJ1ZmZlckdlb21ldHJ5OnJiLENpcmNsZUdlb21ldHJ5OmplLENpcmNsZUJ1ZmZlckdlb21ldHJ5OlhjLEJveEdlb21ldHJ5OlpnLEJveEJ1ZmZlckdlb21ldHJ5OkZkfSk7aGMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO2hjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1oYztoYy5wcm90b3R5cGUuaXNTaGFkb3dNYXRlcmlhbD0hMDtoYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtPLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7cmV0dXJuIHRoaXN9O1ljLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7WWMucHJvdG90eXBlLmNvbnN0cnVjdG9yPVljO1ljLnByb3RvdHlwZS5pc1Jhd1NoYWRlck1hdGVyaWFsPQohMDtlYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShPLnByb3RvdHlwZSk7ZWIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWViO2ViLnByb3RvdHlwZS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPSEwO2ViLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe08ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9O3RoaXMuY29sb3IuY29weShhLmNvbG9yKTt0aGlzLnJvdWdobmVzcz1hLnJvdWdobmVzczt0aGlzLm1ldGFsbmVzcz1hLm1ldGFsbmVzczt0aGlzLm1hcD1hLm1hcDt0aGlzLmxpZ2h0TWFwPWEubGlnaHRNYXA7dGhpcy5saWdodE1hcEludGVuc2l0eT1hLmxpZ2h0TWFwSW50ZW5zaXR5O3RoaXMuYW9NYXA9YS5hb01hcDt0aGlzLmFvTWFwSW50ZW5zaXR5PWEuYW9NYXBJbnRlbnNpdHk7dGhpcy5lbWlzc2l2ZS5jb3B5KGEuZW1pc3NpdmUpO3RoaXMuZW1pc3NpdmVNYXA9YS5lbWlzc2l2ZU1hcDt0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PWEuZW1pc3NpdmVJbnRlbnNpdHk7CnRoaXMuYnVtcE1hcD1hLmJ1bXBNYXA7dGhpcy5idW1wU2NhbGU9YS5idW1wU2NhbGU7dGhpcy5ub3JtYWxNYXA9YS5ub3JtYWxNYXA7dGhpcy5ub3JtYWxNYXBUeXBlPWEubm9ybWFsTWFwVHlwZTt0aGlzLm5vcm1hbFNjYWxlLmNvcHkoYS5ub3JtYWxTY2FsZSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9YS5kaXNwbGFjZW1lbnRNYXA7dGhpcy5kaXNwbGFjZW1lbnRTY2FsZT1hLmRpc3BsYWNlbWVudFNjYWxlO3RoaXMuZGlzcGxhY2VtZW50Qmlhcz1hLmRpc3BsYWNlbWVudEJpYXM7dGhpcy5yb3VnaG5lc3NNYXA9YS5yb3VnaG5lc3NNYXA7dGhpcy5tZXRhbG5lc3NNYXA9YS5tZXRhbG5lc3NNYXA7dGhpcy5hbHBoYU1hcD1hLmFscGhhTWFwO3RoaXMuZW52TWFwPWEuZW52TWFwO3RoaXMuZW52TWFwSW50ZW5zaXR5PWEuZW52TWFwSW50ZW5zaXR5O3RoaXMucmVmcmFjdGlvblJhdGlvPWEucmVmcmFjdGlvblJhdGlvO3RoaXMud2lyZWZyYW1lPWEud2lyZWZyYW1lO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPQphLndpcmVmcmFtZUxpbmV3aWR0aDt0aGlzLndpcmVmcmFtZUxpbmVjYXA9YS53aXJlZnJhbWVMaW5lY2FwO3RoaXMud2lyZWZyYW1lTGluZWpvaW49YS53aXJlZnJhbWVMaW5lam9pbjt0aGlzLnNraW5uaW5nPWEuc2tpbm5pbmc7dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7dGhpcy5tb3JwaE5vcm1hbHM9YS5tb3JwaE5vcm1hbHM7cmV0dXJuIHRoaXN9O2ljLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGViLnByb3RvdHlwZSk7aWMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWljO2ljLnByb3RvdHlwZS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPSEwO2ljLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe2ViLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifTt0aGlzLnJlZmxlY3Rpdml0eT1hLnJlZmxlY3Rpdml0eTt0aGlzLmNsZWFyY29hdD1hLmNsZWFyY29hdDt0aGlzLmNsZWFyY29hdFJvdWdobmVzcz0KYS5jbGVhcmNvYXRSb3VnaG5lc3M7dGhpcy5zaGVlbj1hLnNoZWVuPyh0aGlzLnNoZWVufHxuZXcgSikuY29weShhLnNoZWVuKTpudWxsO3RoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPWEuY2xlYXJjb2F0Tm9ybWFsTWFwO3RoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUuY29weShhLmNsZWFyY29hdE5vcm1hbFNjYWxlKTt0aGlzLnRyYW5zcGFyZW5jeT1hLnRyYW5zcGFyZW5jeTtyZXR1cm4gdGhpc307UmEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO1JhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1SYTtSYS5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMDtSYS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtPLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5zcGVjdWxhci5jb3B5KGEuc3BlY3VsYXIpO3RoaXMuc2hpbmluZXNzPWEuc2hpbmluZXNzO3RoaXMubWFwPWEubWFwO3RoaXMubGlnaHRNYXA9CmEubGlnaHRNYXA7dGhpcy5saWdodE1hcEludGVuc2l0eT1hLmxpZ2h0TWFwSW50ZW5zaXR5O3RoaXMuYW9NYXA9YS5hb01hcDt0aGlzLmFvTWFwSW50ZW5zaXR5PWEuYW9NYXBJbnRlbnNpdHk7dGhpcy5lbWlzc2l2ZS5jb3B5KGEuZW1pc3NpdmUpO3RoaXMuZW1pc3NpdmVNYXA9YS5lbWlzc2l2ZU1hcDt0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PWEuZW1pc3NpdmVJbnRlbnNpdHk7dGhpcy5idW1wTWFwPWEuYnVtcE1hcDt0aGlzLmJ1bXBTY2FsZT1hLmJ1bXBTY2FsZTt0aGlzLm5vcm1hbE1hcD1hLm5vcm1hbE1hcDt0aGlzLm5vcm1hbE1hcFR5cGU9YS5ub3JtYWxNYXBUeXBlO3RoaXMubm9ybWFsU2NhbGUuY29weShhLm5vcm1hbFNjYWxlKTt0aGlzLmRpc3BsYWNlbWVudE1hcD1hLmRpc3BsYWNlbWVudE1hcDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPWEuZGlzcGxhY2VtZW50U2NhbGU7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPWEuZGlzcGxhY2VtZW50Qmlhczt0aGlzLnNwZWN1bGFyTWFwPQphLnNwZWN1bGFyTWFwO3RoaXMuYWxwaGFNYXA9YS5hbHBoYU1hcDt0aGlzLmVudk1hcD1hLmVudk1hcDt0aGlzLmNvbWJpbmU9YS5jb21iaW5lO3RoaXMucmVmbGVjdGl2aXR5PWEucmVmbGVjdGl2aXR5O3RoaXMucmVmcmFjdGlvblJhdGlvPWEucmVmcmFjdGlvblJhdGlvO3RoaXMud2lyZWZyYW1lPWEud2lyZWZyYW1lO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPWEud2lyZWZyYW1lTGluZXdpZHRoO3RoaXMud2lyZWZyYW1lTGluZWNhcD1hLndpcmVmcmFtZUxpbmVjYXA7dGhpcy53aXJlZnJhbWVMaW5lam9pbj1hLndpcmVmcmFtZUxpbmVqb2luO3RoaXMuc2tpbm5pbmc9YS5za2lubmluZzt0aGlzLm1vcnBoVGFyZ2V0cz1hLm1vcnBoVGFyZ2V0czt0aGlzLm1vcnBoTm9ybWFscz1hLm1vcnBoTm9ybWFscztyZXR1cm4gdGhpc307amMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUmEucHJvdG90eXBlKTtqYy5wcm90b3R5cGUuY29uc3RydWN0b3I9amM7amMucHJvdG90eXBlLmlzTWVzaFRvb25NYXRlcmlhbD0KITA7amMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7UmEucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZ3JhZGllbnRNYXA9YS5ncmFkaWVudE1hcDtyZXR1cm4gdGhpc307a2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTy5wcm90b3R5cGUpO2tjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rYztrYy5wcm90b3R5cGUuaXNNZXNoTm9ybWFsTWF0ZXJpYWw9ITA7a2MucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Ty5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5idW1wTWFwPWEuYnVtcE1hcDt0aGlzLmJ1bXBTY2FsZT1hLmJ1bXBTY2FsZTt0aGlzLm5vcm1hbE1hcD1hLm5vcm1hbE1hcDt0aGlzLm5vcm1hbE1hcFR5cGU9YS5ub3JtYWxNYXBUeXBlO3RoaXMubm9ybWFsU2NhbGUuY29weShhLm5vcm1hbFNjYWxlKTt0aGlzLmRpc3BsYWNlbWVudE1hcD1hLmRpc3BsYWNlbWVudE1hcDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPWEuZGlzcGxhY2VtZW50U2NhbGU7CnRoaXMuZGlzcGxhY2VtZW50Qmlhcz1hLmRpc3BsYWNlbWVudEJpYXM7dGhpcy53aXJlZnJhbWU9YS53aXJlZnJhbWU7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGg7dGhpcy5za2lubmluZz1hLnNraW5uaW5nO3RoaXMubW9ycGhUYXJnZXRzPWEubW9ycGhUYXJnZXRzO3RoaXMubW9ycGhOb3JtYWxzPWEubW9ycGhOb3JtYWxzO3JldHVybiB0aGlzfTtsYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShPLnByb3RvdHlwZSk7bGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWxjO2xjLnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITA7bGMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Ty5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jb2xvci5jb3B5KGEuY29sb3IpO3RoaXMubWFwPWEubWFwO3RoaXMubGlnaHRNYXA9YS5saWdodE1hcDt0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PWEubGlnaHRNYXBJbnRlbnNpdHk7dGhpcy5hb01hcD0KYS5hb01hcDt0aGlzLmFvTWFwSW50ZW5zaXR5PWEuYW9NYXBJbnRlbnNpdHk7dGhpcy5lbWlzc2l2ZS5jb3B5KGEuZW1pc3NpdmUpO3RoaXMuZW1pc3NpdmVNYXA9YS5lbWlzc2l2ZU1hcDt0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PWEuZW1pc3NpdmVJbnRlbnNpdHk7dGhpcy5zcGVjdWxhck1hcD1hLnNwZWN1bGFyTWFwO3RoaXMuYWxwaGFNYXA9YS5hbHBoYU1hcDt0aGlzLmVudk1hcD1hLmVudk1hcDt0aGlzLmNvbWJpbmU9YS5jb21iaW5lO3RoaXMucmVmbGVjdGl2aXR5PWEucmVmbGVjdGl2aXR5O3RoaXMucmVmcmFjdGlvblJhdGlvPWEucmVmcmFjdGlvblJhdGlvO3RoaXMud2lyZWZyYW1lPWEud2lyZWZyYW1lO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPWEud2lyZWZyYW1lTGluZXdpZHRoO3RoaXMud2lyZWZyYW1lTGluZWNhcD1hLndpcmVmcmFtZUxpbmVjYXA7dGhpcy53aXJlZnJhbWVMaW5lam9pbj1hLndpcmVmcmFtZUxpbmVqb2luO3RoaXMuc2tpbm5pbmc9YS5za2lubmluZzsKdGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7dGhpcy5tb3JwaE5vcm1hbHM9YS5tb3JwaE5vcm1hbHM7cmV0dXJuIHRoaXN9O21jLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE8ucHJvdG90eXBlKTttYy5wcm90b3R5cGUuY29uc3RydWN0b3I9bWM7bWMucHJvdG90eXBlLmlzTWVzaE1hdGNhcE1hdGVyaWFsPSEwO21jLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe08ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZGVmaW5lcz17TUFUQ0FQOiIifTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5tYXRjYXA9YS5tYXRjYXA7dGhpcy5tYXA9YS5tYXA7dGhpcy5idW1wTWFwPWEuYnVtcE1hcDt0aGlzLmJ1bXBTY2FsZT1hLmJ1bXBTY2FsZTt0aGlzLm5vcm1hbE1hcD1hLm5vcm1hbE1hcDt0aGlzLm5vcm1hbE1hcFR5cGU9YS5ub3JtYWxNYXBUeXBlO3RoaXMubm9ybWFsU2NhbGUuY29weShhLm5vcm1hbFNjYWxlKTt0aGlzLmRpc3BsYWNlbWVudE1hcD1hLmRpc3BsYWNlbWVudE1hcDsKdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT1hLmRpc3BsYWNlbWVudFNjYWxlO3RoaXMuZGlzcGxhY2VtZW50Qmlhcz1hLmRpc3BsYWNlbWVudEJpYXM7dGhpcy5hbHBoYU1hcD1hLmFscGhhTWFwO3RoaXMuc2tpbm5pbmc9YS5za2lubmluZzt0aGlzLm1vcnBoVGFyZ2V0cz1hLm1vcnBoVGFyZ2V0czt0aGlzLm1vcnBoTm9ybWFscz1hLm1vcnBoTm9ybWFscztyZXR1cm4gdGhpc307bmMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUi5wcm90b3R5cGUpO25jLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uYztuYy5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7bmMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Ui5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5zY2FsZT1hLnNjYWxlO3RoaXMuZGFzaFNpemU9YS5kYXNoU2l6ZTt0aGlzLmdhcFNpemU9YS5nYXBTaXplO3JldHVybiB0aGlzfTt2YXIgRms9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsU2hhZG93TWF0ZXJpYWw6aGMsClNwcml0ZU1hdGVyaWFsOkdiLFJhd1NoYWRlck1hdGVyaWFsOlljLFNoYWRlck1hdGVyaWFsOnZhLFBvaW50c01hdGVyaWFsOlFhLE1lc2hQaHlzaWNhbE1hdGVyaWFsOmljLE1lc2hTdGFuZGFyZE1hdGVyaWFsOmViLE1lc2hQaG9uZ01hdGVyaWFsOlJhLE1lc2hUb29uTWF0ZXJpYWw6amMsTWVzaE5vcm1hbE1hdGVyaWFsOmtjLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6bGMsTWVzaERlcHRoTWF0ZXJpYWw6RGIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6RWIsTWVzaEJhc2ljTWF0ZXJpYWw6R2EsTWVzaE1hdGNhcE1hdGVyaWFsOm1jLExpbmVEYXNoZWRNYXRlcmlhbDpuYyxMaW5lQmFzaWNNYXRlcmlhbDpSLE1hdGVyaWFsOk99KSx0YT17YXJyYXlTbGljZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRhLmlzVHlwZWRBcnJheShhKT9uZXcgYS5jb25zdHJ1Y3RvcihhLnN1YmFycmF5KGIsdm9pZCAwIT09Yz9jOmEubGVuZ3RoKSk6YS5zbGljZShiLGMpfSxjb252ZXJ0QXJyYXk6ZnVuY3Rpb24oYSwKYixjKXtyZXR1cm4hYXx8IWMmJmEuY29uc3RydWN0b3I9PT1iP2E6Im51bWJlciI9PT10eXBlb2YgYi5CWVRFU19QRVJfRUxFTUVOVD9uZXcgYihhKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhKX0saXNUeXBlZEFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoYSkmJiEoYSBpbnN0YW5jZW9mIERhdGFWaWV3KX0sZ2V0S2V5ZnJhbWVPcmRlcjpmdW5jdGlvbihhKXtmb3IodmFyIGI9YS5sZW5ndGgsYz1BcnJheShiKSxkPTA7ZCE9PWI7KytkKWNbZF09ZDtjLnNvcnQoZnVuY3Rpb24oYixjKXtyZXR1cm4gYVtiXS1hW2NdfSk7cmV0dXJuIGN9LHNvcnRlZEFycmF5OmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT1uZXcgYS5jb25zdHJ1Y3RvcihkKSxmPTAsZz0wO2chPT1kOysrZilmb3IodmFyIGg9Y1tmXSpiLGw9MDtsIT09YjsrK2wpZVtnKytdPWFbaCtsXTtyZXR1cm4gZX0sZmxhdHRlbkpTT046ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPQoxLGY9YVswXTt2b2lkIDAhPT1mJiZ2b2lkIDA9PT1mW2RdOylmPWFbZSsrXTtpZih2b2lkIDAhPT1mKXt2YXIgZz1mW2RdO2lmKHZvaWQgMCE9PWcpaWYoQXJyYXkuaXNBcnJheShnKSl7ZG8gZz1mW2RdLHZvaWQgMCE9PWcmJihiLnB1c2goZi50aW1lKSxjLnB1c2guYXBwbHkoYyxnKSksZj1hW2UrK107d2hpbGUodm9pZCAwIT09Zil9ZWxzZSBpZih2b2lkIDAhPT1nLnRvQXJyYXkpe2RvIGc9ZltkXSx2b2lkIDAhPT1nJiYoYi5wdXNoKGYudGltZSksZy50b0FycmF5KGMsYy5sZW5ndGgpKSxmPWFbZSsrXTt3aGlsZSh2b2lkIDAhPT1mKX1lbHNle2RvIGc9ZltkXSx2b2lkIDAhPT1nJiYoYi5wdXNoKGYudGltZSksYy5wdXNoKGcpKSxmPWFbZSsrXTt3aGlsZSh2b2lkIDAhPT1mKX19fSxzdWJjbGlwOmZ1bmN0aW9uKGEsYixjLGQsZSl7ZT1lfHwzMDthPWEuY2xvbmUoKTthLm5hbWU9Yjt2YXIgZj1bXTtmb3IoYj0wO2I8YS50cmFja3MubGVuZ3RoOysrYil7Zm9yKHZhciBnPWEudHJhY2tzW2JdLApoPWcuZ2V0VmFsdWVTaXplKCksbD1bXSxrPVtdLG49MDtuPGcudGltZXMubGVuZ3RoOysrbil7dmFyIHE9Zy50aW1lc1tuXSplO2lmKCEocTxjfHxxPj1kKSlmb3IobC5wdXNoKGcudGltZXNbbl0pLHE9MDtxPGg7KytxKWsucHVzaChnLnZhbHVlc1tuKmgrcV0pfTAhPT1sLmxlbmd0aCYmKGcudGltZXM9dGEuY29udmVydEFycmF5KGwsZy50aW1lcy5jb25zdHJ1Y3RvciksZy52YWx1ZXM9dGEuY29udmVydEFycmF5KGssZy52YWx1ZXMuY29uc3RydWN0b3IpLGYucHVzaChnKSl9YS50cmFja3M9ZjtjPUluZmluaXR5O2ZvcihiPTA7YjxhLnRyYWNrcy5sZW5ndGg7KytiKWM+YS50cmFja3NbYl0udGltZXNbMF0mJihjPWEudHJhY2tzW2JdLnRpbWVzWzBdKTtmb3IoYj0wO2I8YS50cmFja3MubGVuZ3RoOysrYilhLnRyYWNrc1tiXS5zaGlmdCgtMSpjKTthLnJlc2V0RHVyYXRpb24oKTtyZXR1cm4gYX19O09iamVjdC5hc3NpZ24oSWEucHJvdG90eXBlLHtldmFsdWF0ZTpmdW5jdGlvbihhKXt2YXIgYj0KdGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMsYz10aGlzLl9jYWNoZWRJbmRleCxkPWJbY10sZT1iW2MtMV07YTp7Yjp7Yzp7ZDppZighKGE8ZCkpe2Zvcih2YXIgZj1jKzI7Oyl7aWYodm9pZCAwPT09ZCl7aWYoYTxlKWJyZWFrIGQ7dGhpcy5fY2FjaGVkSW5kZXg9Yz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5hZnRlckVuZF8oYy0xLGEsZSl9aWYoYz09PWYpYnJlYWs7ZT1kO2Q9YlsrK2NdO2lmKGE8ZClicmVhayBifWQ9Yi5sZW5ndGg7YnJlYWsgY31pZihhPj1lKWJyZWFrIGE7ZWxzZXtmPWJbMV07YTxmJiYoYz0yLGU9Zik7Zm9yKGY9Yy0yOzspe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCxhLGQpO2lmKGM9PT1mKWJyZWFrO2Q9ZTtlPWJbLS1jLTFdO2lmKGE+PWUpYnJlYWsgYn1kPWM7Yz0wfX1mb3IoO2M8ZDspZT1jK2Q+Pj4xLGE8YltlXT9kPWU6Yz1lKzE7ZD1iW2NdO2U9YltjLTFdO2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PQowLHRoaXMuYmVmb3JlU3RhcnRfKDAsYSxkKTtpZih2b2lkIDA9PT1kKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD1jPWIubGVuZ3RoLHRoaXMuYWZ0ZXJFbmRfKGMtMSxlLGEpfXRoaXMuX2NhY2hlZEluZGV4PWM7dGhpcy5pbnRlcnZhbENoYW5nZWRfKGMsZSxkKX1yZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZV8oYyxlLGEsZCl9LHNldHRpbmdzOm51bGwsRGVmYXVsdFNldHRpbmdzXzp7fSxnZXRTZXR0aW5nc186ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc3x8dGhpcy5EZWZhdWx0U2V0dGluZ3NffSxjb3B5U2FtcGxlVmFsdWVfOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmVzdWx0QnVmZmVyLGM9dGhpcy5zYW1wbGVWYWx1ZXMsZD10aGlzLnZhbHVlU2l6ZTthKj1kO2Zvcih2YXIgZT0wO2UhPT1kOysrZSliW2VdPWNbYStlXTtyZXR1cm4gYn0saW50ZXJwb2xhdGVfOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIik7fSxpbnRlcnZhbENoYW5nZWRfOmZ1bmN0aW9uKCl7fX0pOwpPYmplY3QuYXNzaWduKElhLnByb3RvdHlwZSx7YmVmb3JlU3RhcnRfOklhLnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfLGFmdGVyRW5kXzpJYS5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlX30pO1JlLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoSWEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6UmUsRGVmYXVsdFNldHRpbmdzXzp7ZW5kaW5nU3RhcnQ6MjQwMCxlbmRpbmdFbmQ6MjQwMH0saW50ZXJ2YWxDaGFuZ2VkXzpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMsZT1hLTIsZj1hKzEsZz1kW2VdLGg9ZFtmXTtpZih2b2lkIDA9PT1nKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIDI0MDE6ZT1hO2c9MipiLWM7YnJlYWs7Y2FzZSAyNDAyOmU9ZC5sZW5ndGgtMjtnPWIrZFtlXS1kW2UrMV07YnJlYWs7ZGVmYXVsdDplPWEsZz1jfWlmKHZvaWQgMD09PWgpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nRW5kKXtjYXNlIDI0MDE6Zj0KYTtoPTIqYy1iO2JyZWFrO2Nhc2UgMjQwMjpmPTE7aD1jK2RbMV0tZFswXTticmVhaztkZWZhdWx0OmY9YS0xLGg9Yn1hPS41KihjLWIpO2Q9dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1hLyhiLWcpO3RoaXMuX3dlaWdodE5leHQ9YS8oaC1jKTt0aGlzLl9vZmZzZXRQcmV2PWUqZDt0aGlzLl9vZmZzZXROZXh0PWYqZH0saW50ZXJwb2xhdGVfOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMucmVzdWx0QnVmZmVyLGY9dGhpcy5zYW1wbGVWYWx1ZXMsZz10aGlzLnZhbHVlU2l6ZTthKj1nO3ZhciBoPWEtZyxsPXRoaXMuX29mZnNldFByZXYsaz10aGlzLl9vZmZzZXROZXh0LG49dGhpcy5fd2VpZ2h0UHJldixxPXRoaXMuX3dlaWdodE5leHQsdT0oYy1iKS8oZC1iKTtjPXUqdTtkPWMqdTtiPS1uKmQrMipuKmMtbip1O249KDErbikqZCsoLTEuNS0yKm4pKmMrKC0uNStuKSp1KzE7dT0oLTEtcSkqZCsoMS41K3EpKmMrLjUqdTtxPXEqZC1xKmM7Zm9yKGM9MDtjIT09ZzsrK2MpZVtjXT0KYipmW2wrY10rbipmW2grY10rdSpmW2ErY10rcSpmW2srY107cmV0dXJuIGV9fSk7a2UucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShJYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjprZSxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5yZXN1bHRCdWZmZXIsZj10aGlzLnNhbXBsZVZhbHVlcyxnPXRoaXMudmFsdWVTaXplO2EqPWc7dmFyIGg9YS1nO2I9KGMtYikvKGQtYik7Yz0xLWI7Zm9yKGQ9MDtkIT09ZzsrK2QpZVtkXT1mW2grZF0qYytmW2ErZF0qYjtyZXR1cm4gZX19KTtTZS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKElhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlNlLGludGVycG9sYXRlXzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb3B5U2FtcGxlVmFsdWVfKGEtMSl9fSk7T2JqZWN0LmFzc2lnbihzYSx7dG9KU09OOmZ1bmN0aW9uKGEpe3ZhciBiPWEuY29uc3RydWN0b3I7aWYodm9pZCAwIT09CmIudG9KU09OKWI9Yi50b0pTT04oYSk7ZWxzZXtiPXtuYW1lOmEubmFtZSx0aW1lczp0YS5jb252ZXJ0QXJyYXkoYS50aW1lcyxBcnJheSksdmFsdWVzOnRhLmNvbnZlcnRBcnJheShhLnZhbHVlcyxBcnJheSl9O3ZhciBjPWEuZ2V0SW50ZXJwb2xhdGlvbigpO2MhPT1hLkRlZmF1bHRJbnRlcnBvbGF0aW9uJiYoYi5pbnRlcnBvbGF0aW9uPWMpfWIudHlwZT1hLlZhbHVlVHlwZU5hbWU7cmV0dXJuIGJ9fSk7T2JqZWN0LmFzc2lnbihzYS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnNhLFRpbWVCdWZmZXJUeXBlOkZsb2F0MzJBcnJheSxWYWx1ZUJ1ZmZlclR5cGU6RmxvYXQzMkFycmF5LERlZmF1bHRJbnRlcnBvbGF0aW9uOjIzMDEsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBTZSh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksYSl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IGtlKHRoaXMudGltZXMsCnRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksYSl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFJlKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSxhKX0sc2V0SW50ZXJwb2xhdGlvbjpmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAyMzAwOnZhciBiPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU7YnJlYWs7Y2FzZSAyMzAxOmI9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI7YnJlYWs7Y2FzZSAyMzAyOmI9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09Yil7Yj0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KWlmKGEhPT10aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKXRoaXMuc2V0SW50ZXJwb2xhdGlvbih0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKTsKZWxzZSB0aHJvdyBFcnJvcihiKTtjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixiKTtyZXR1cm4gdGhpc310aGlzLmNyZWF0ZUludGVycG9sYW50PWI7cmV0dXJuIHRoaXN9LGdldEludGVycG9sYXRpb246ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOnJldHVybiAyMzAwO2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6cmV0dXJuIDIzMDE7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gMjMwMn19LGdldFZhbHVlU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGgvdGhpcy50aW1lcy5sZW5ndGh9LHNoaWZ0OmZ1bmN0aW9uKGEpe2lmKDAhPT1hKWZvcih2YXIgYj10aGlzLnRpbWVzLGM9MCxkPWIubGVuZ3RoO2MhPT1kOysrYyliW2NdKz1hO3JldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbihhKXtpZigxIT09CmEpZm9yKHZhciBiPXRoaXMudGltZXMsYz0wLGQ9Yi5sZW5ndGg7YyE9PWQ7KytjKWJbY10qPWE7cmV0dXJuIHRoaXN9LHRyaW06ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy50aW1lcyxkPWMubGVuZ3RoLGU9MCxmPWQtMTtlIT09ZCYmY1tlXTxhOykrK2U7Zm9yKDstMSE9PWYmJmNbZl0+YjspLS1mOysrZjtpZigwIT09ZXx8ZiE9PWQpZT49ZiYmKGY9TWF0aC5tYXgoZiwxKSxlPWYtMSksYT10aGlzLmdldFZhbHVlU2l6ZSgpLHRoaXMudGltZXM9dGEuYXJyYXlTbGljZShjLGUsZiksdGhpcy52YWx1ZXM9dGEuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyxlKmEsZiphKTtyZXR1cm4gdGhpc30sdmFsaWRhdGU6ZnVuY3Rpb24oKXt2YXIgYT0hMCxiPXRoaXMuZ2V0VmFsdWVTaXplKCk7MCE9PWItTWF0aC5mbG9vcihiKSYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLGE9ITEpO3ZhciBjPXRoaXMudGltZXM7CmI9dGhpcy52YWx1ZXM7dmFyIGQ9Yy5sZW5ndGg7MD09PWQmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLGE9ITEpO2Zvcih2YXIgZT1udWxsLGY9MDtmIT09ZDtmKyspe3ZhciBnPWNbZl07aWYoIm51bWJlciI9PT10eXBlb2YgZyYmaXNOYU4oZykpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRpbWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxmLGcpO2E9ITE7YnJlYWt9aWYobnVsbCE9PWUmJmU+Zyl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogT3V0IG9mIG9yZGVyIGtleXMuIix0aGlzLGYsZyxlKTthPSExO2JyZWFrfWU9Z31pZih2b2lkIDAhPT1iJiZ0YS5pc1R5cGVkQXJyYXkoYikpZm9yKGY9MCxjPWIubGVuZ3RoO2YhPT1jOysrZilpZihkPWJbZl0saXNOYU4oZCkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFZhbHVlIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLAp0aGlzLGYsZCk7YT0hMTticmVha31yZXR1cm4gYX0sb3B0aW1pemU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy50aW1lcyxiPXRoaXMudmFsdWVzLGM9dGhpcy5nZXRWYWx1ZVNpemUoKSxkPTIzMDI9PT10aGlzLmdldEludGVycG9sYXRpb24oKSxlPTEsZj1hLmxlbmd0aC0xLGc9MTtnPGY7KytnKXt2YXIgaD0hMSxsPWFbZ107aWYobCE9PWFbZysxXSYmKDEhPT1nfHxsIT09bFswXSkpaWYoZCloPSEwO2Vsc2V7dmFyIGs9ZypjLG49ay1jLHE9aytjO2ZvcihsPTA7bCE9PWM7KytsKXt2YXIgdT1iW2srbF07aWYodSE9PWJbbitsXXx8dSE9PWJbcStsXSl7aD0hMDticmVha319fWlmKGgpe2lmKGchPT1lKWZvcihhW2VdPWFbZ10saD1nKmMsaz1lKmMsbD0wO2whPT1jOysrbCliW2srbF09YltoK2xdOysrZX19aWYoMDxmKXthW2VdPWFbZl07aD1mKmM7az1lKmM7Zm9yKGw9MDtsIT09YzsrK2wpYltrK2xdPWJbaCtsXTsrK2V9ZSE9PWEubGVuZ3RoJiYodGhpcy50aW1lcz10YS5hcnJheVNsaWNlKGEsCjAsZSksdGhpcy52YWx1ZXM9dGEuYXJyYXlTbGljZShiLDAsZSpjKSk7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGE9dGEuYXJyYXlTbGljZSh0aGlzLnRpbWVzLDApLGI9dGEuYXJyYXlTbGljZSh0aGlzLnZhbHVlcywwKTthPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSxhLGIpO2EuY3JlYXRlSW50ZXJwb2xhbnQ9dGhpcy5jcmVhdGVJbnRlcnBvbGFudDtyZXR1cm4gYX19KTtUZS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHNhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlRlLFZhbHVlVHlwZU5hbWU6ImJvb2wiLFZhbHVlQnVmZmVyVHlwZTpBcnJheSxEZWZhdWx0SW50ZXJwb2xhdGlvbjoyMzAwLEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjp2b2lkIDAsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnZvaWQgMH0pO1VlLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoc2EucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOlVlLFZhbHVlVHlwZU5hbWU6ImNvbG9yIn0pO1pjLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoc2EucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WmMsVmFsdWVUeXBlTmFtZToibnVtYmVyIn0pO1ZlLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoSWEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6VmUsaW50ZXJwb2xhdGVfOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMucmVzdWx0QnVmZmVyLGY9dGhpcy5zYW1wbGVWYWx1ZXMsZz10aGlzLnZhbHVlU2l6ZTthKj1nO2I9KGMtYikvKGQtYik7Zm9yKGM9YStnO2EhPT1jO2ErPTQpd2Euc2xlcnBGbGF0KGUsMCxmLGEtZyxmLGEsYik7cmV0dXJuIGV9fSk7bGUucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShzYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpsZSxWYWx1ZVR5cGVOYW1lOiJxdWF0ZXJuaW9uIixEZWZhdWx0SW50ZXJwb2xhdGlvbjoyMzAxLApJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBWZSh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksYSl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDp2b2lkIDB9KTtXZS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHNhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOldlLFZhbHVlVHlwZU5hbWU6InN0cmluZyIsVmFsdWVCdWZmZXJUeXBlOkFycmF5LERlZmF1bHRJbnRlcnBvbGF0aW9uOjIzMDAsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnZvaWQgMCxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6dm9pZCAwfSk7JGMucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShzYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjokYyxWYWx1ZVR5cGVOYW1lOiJ2ZWN0b3IifSk7T2JqZWN0LmFzc2lnbihNYSx7cGFyc2U6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPQpbXSxjPWEudHJhY2tzLGQ9MS8oYS5mcHN8fDEpLGU9MCxmPWMubGVuZ3RoO2UhPT1mOysrZSliLnB1c2goc2soY1tlXSkuc2NhbGUoZCkpO3JldHVybiBuZXcgTWEoYS5uYW1lLGEuZHVyYXRpb24sYil9LHRvSlNPTjpmdW5jdGlvbihhKXt2YXIgYj1bXSxjPWEudHJhY2tzO2E9e25hbWU6YS5uYW1lLGR1cmF0aW9uOmEuZHVyYXRpb24sdHJhY2tzOmIsdXVpZDphLnV1aWR9O2Zvcih2YXIgZD0wLGU9Yy5sZW5ndGg7ZCE9PWU7KytkKWIucHVzaChzYS50b0pTT04oY1tkXSkpO3JldHVybiBhfSxDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZTpmdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGU9Yi5sZW5ndGgsZj1bXSxnPTA7ZzxlO2crKyl7dmFyIGg9W10sbD1bXTtoLnB1c2goKGcrZS0xKSVlLGcsKGcrMSklZSk7bC5wdXNoKDAsMSwwKTt2YXIgaz10YS5nZXRLZXlmcmFtZU9yZGVyKGgpO2g9dGEuc29ydGVkQXJyYXkoaCwxLGspO2w9dGEuc29ydGVkQXJyYXkobCwxLGspO2R8fDAhPT0KaFswXXx8KGgucHVzaChlKSxsLnB1c2gobFswXSkpO2YucHVzaCgobmV3IFpjKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrYltnXS5uYW1lKyJdIixoLGwpKS5zY2FsZSgxL2MpKX1yZXR1cm4gbmV3IE1hKGEsLTEsZil9LGZpbmRCeU5hbWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hO0FycmF5LmlzQXJyYXkoYSl8fChjPWEuZ2VvbWV0cnkmJmEuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8YS5hbmltYXRpb25zKTtmb3IoYT0wO2E8Yy5sZW5ndGg7YSsrKWlmKGNbYV0ubmFtZT09PWIpcmV0dXJuIGNbYV07cmV0dXJuIG51bGx9LENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9e30sZT0vXihbXHctXSo/KShbXGRdKykkLyxmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKXt2YXIgaD1hW2ZdLGw9aC5uYW1lLm1hdGNoKGUpO2lmKGwmJjE8bC5sZW5ndGgpe3ZhciBrPWxbMV07KGw9ZFtrXSl8fChkW2tdPWw9W10pO2wucHVzaChoKX19YT1bXTsKZm9yKGsgaW4gZClhLnB1c2goTWEuQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UoayxkW2tdLGIsYykpO3JldHVybiBhfSxwYXJzZUFuaW1hdGlvbjpmdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5BbmltYXRpb25DbGlwOiBObyBhbmltYXRpb24gaW4gSlNPTkxvYWRlciBkYXRhLiIpLG51bGw7dmFyIGM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZigwIT09Yy5sZW5ndGgpe3ZhciBmPVtdLGc9W107dGEuZmxhdHRlbkpTT04oYyxmLGcsZCk7MCE9PWYubGVuZ3RoJiZlLnB1c2gobmV3IGEoYixmLGcpKX19LGQ9W10sZT1hLm5hbWV8fCJkZWZhdWx0IixmPWEubGVuZ3RofHwtMSxnPWEuZnBzfHwzMDthPWEuaGllcmFyY2h5fHxbXTtmb3IodmFyIGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGw9YVtoXS5rZXlzO2lmKGwmJjAhPT1sLmxlbmd0aClpZihsWzBdLm1vcnBoVGFyZ2V0cyl7Zj17fTtmb3IodmFyIGs9MDtrPGwubGVuZ3RoO2srKylpZihsW2tdLm1vcnBoVGFyZ2V0cylmb3IodmFyIG49CjA7bjxsW2tdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7bisrKWZbbFtrXS5tb3JwaFRhcmdldHNbbl1dPS0xO2Zvcih2YXIgcSBpbiBmKXt2YXIgdT1bXSxwPVtdO2ZvcihuPTA7biE9PWxba10ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK24pe3ZhciB0PWxba107dS5wdXNoKHQudGltZSk7cC5wdXNoKHQubW9ycGhUYXJnZXQ9PT1xPzE6MCl9ZC5wdXNoKG5ldyBaYygiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIrcSsiXSIsdSxwKSl9Zj1mLmxlbmd0aCooZ3x8MSl9ZWxzZSBrPSIuYm9uZXNbIitiW2hdLm5hbWUrIl0iLGMoJGMsaysiLnBvc2l0aW9uIixsLCJwb3MiLGQpLGMobGUsaysiLnF1YXRlcm5pb24iLGwsInJvdCIsZCksYygkYyxrKyIuc2NhbGUiLGwsInNjbCIsZCl9cmV0dXJuIDA9PT1kLmxlbmd0aD9udWxsOm5ldyBNYShlLGYsZCl9fSk7T2JqZWN0LmFzc2lnbihNYS5wcm90b3R5cGUse3Jlc2V0RHVyYXRpb246ZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxiPTAsYz10aGlzLnRyYWNrcy5sZW5ndGg7YiE9PQpjOysrYil7dmFyIGQ9dGhpcy50cmFja3NbYl07YT1NYXRoLm1heChhLGQudGltZXNbZC50aW1lcy5sZW5ndGgtMV0pfXRoaXMuZHVyYXRpb249YTtyZXR1cm4gdGhpc30sdHJpbTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy50cmFja3MubGVuZ3RoO2ErKyl0aGlzLnRyYWNrc1thXS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPSEwLGI9MDtiPHRoaXMudHJhY2tzLmxlbmd0aDtiKyspYT1hJiZ0aGlzLnRyYWNrc1tiXS52YWxpZGF0ZSgpO3JldHVybiBhfSxvcHRpbWl6ZTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy50cmFja3MubGVuZ3RoO2ErKyl0aGlzLnRyYWNrc1thXS5vcHRpbWl6ZSgpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgYT1bXSxiPTA7Yjx0aGlzLnRyYWNrcy5sZW5ndGg7YisrKWEucHVzaCh0aGlzLnRyYWNrc1tiXS5jbG9uZSgpKTtyZXR1cm4gbmV3IE1hKHRoaXMubmFtZSwKdGhpcy5kdXJhdGlvbixhKX19KTt2YXIgc2M9e2VuYWJsZWQ6ITEsZmlsZXM6e30sYWRkOmZ1bmN0aW9uKGEsYil7ITEhPT10aGlzLmVuYWJsZWQmJih0aGlzLmZpbGVzW2FdPWIpfSxnZXQ6ZnVuY3Rpb24oYSl7aWYoITEhPT10aGlzLmVuYWJsZWQpcmV0dXJuIHRoaXMuZmlsZXNbYV19LHJlbW92ZTpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5maWxlc1thXX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmZpbGVzPXt9fX0sWmg9bmV3IG9nO09iamVjdC5hc3NpZ24oVi5wcm90b3R5cGUse2xvYWQ6ZnVuY3Rpb24oKXt9LHBhcnNlOmZ1bmN0aW9uKCl7fSxzZXRDcm9zc09yaWdpbjpmdW5jdGlvbihhKXt0aGlzLmNyb3NzT3JpZ2luPWE7cmV0dXJuIHRoaXN9LHNldFBhdGg6ZnVuY3Rpb24oYSl7dGhpcy5wYXRoPWE7cmV0dXJuIHRoaXN9LHNldFJlc291cmNlUGF0aDpmdW5jdGlvbihhKXt0aGlzLnJlc291cmNlUGF0aD1hO3JldHVybiB0aGlzfX0pO3ZhciAkYT17fTtOYS5wcm90b3R5cGU9Ck9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOk5hLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dm9pZCAwPT09YSYmKGE9IiIpO3ZvaWQgMCE9PXRoaXMucGF0aCYmKGE9dGhpcy5wYXRoK2EpO2E9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwoYSk7dmFyIGU9dGhpcyxmPXNjLmdldChhKTtpZih2b2lkIDAhPT1mKXJldHVybiBlLm1hbmFnZXIuaXRlbVN0YXJ0KGEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiJiZiKGYpO2UubWFuYWdlci5pdGVtRW5kKGEpfSwwKSxmO2lmKHZvaWQgMCE9PSRhW2FdKSRhW2FdLnB1c2goe29uTG9hZDpiLG9uUHJvZ3Jlc3M6YyxvbkVycm9yOmR9KTtlbHNle3ZhciBnPWEubWF0Y2goL15kYXRhOiguKj8pKDtiYXNlNjQpPywoLiopJC8pO2lmKGcpe2M9Z1sxXTt2YXIgaD0hIWdbMl07Zz1nWzNdO2c9ZGVjb2RlVVJJQ29tcG9uZW50KGcpO2gmJihnPWF0b2IoZykpO3RyeXt2YXIgbD0odGhpcy5yZXNwb25zZVR5cGV8fAoiIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gobCl7Y2FzZSAiYXJyYXlidWZmZXIiOmNhc2UgImJsb2IiOnZhciBrPW5ldyBVaW50OEFycmF5KGcubGVuZ3RoKTtmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKWtbaF09Zy5jaGFyQ29kZUF0KGgpO3ZhciBuPSJibG9iIj09PWw/bmV3IEJsb2IoW2suYnVmZmVyXSx7dHlwZTpjfSk6ay5idWZmZXI7YnJlYWs7Y2FzZSAiZG9jdW1lbnQiOm49KG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhnLGMpO2JyZWFrO2Nhc2UgImpzb24iOm49SlNPTi5wYXJzZShnKTticmVhaztkZWZhdWx0Om49Z31zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YiYmYihuKTtlLm1hbmFnZXIuaXRlbUVuZChhKX0sMCl9Y2F0Y2godSl7c2V0VGltZW91dChmdW5jdGlvbigpe2QmJmQodSk7ZS5tYW5hZ2VyLml0ZW1FcnJvcihhKTtlLm1hbmFnZXIuaXRlbUVuZChhKX0sMCl9fWVsc2V7JGFbYV09W107JGFbYV0ucHVzaCh7b25Mb2FkOmIsb25Qcm9ncmVzczpjLG9uRXJyb3I6ZH0pOwp2YXIgcT1uZXcgWE1MSHR0cFJlcXVlc3Q7cS5vcGVuKCJHRVQiLGEsITApO3EuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5yZXNwb25zZSxkPSRhW2FdO2RlbGV0ZSAkYVthXTtpZigyMDA9PT10aGlzLnN0YXR1c3x8MD09PXRoaXMuc3RhdHVzKXswPT09dGhpcy5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKTtzYy5hZGQoYSxjKTtmb3IodmFyIGY9MCxnPWQubGVuZ3RoO2Y8ZztmKyspe3ZhciBoPWRbZl07aWYoaC5vbkxvYWQpaC5vbkxvYWQoYyl9fWVsc2V7Zj0wO2ZvcihnPWQubGVuZ3RoO2Y8ZztmKyspaWYoaD1kW2ZdLGgub25FcnJvciloLm9uRXJyb3IoYik7ZS5tYW5hZ2VyLml0ZW1FcnJvcihhKX1lLm1hbmFnZXIuaXRlbUVuZChhKX0sITEpO3EuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGZ1bmN0aW9uKGIpe2Zvcih2YXIgYz0kYVthXSxkPTAsZT1jLmxlbmd0aDtkPAplO2QrKyl7dmFyIGY9Y1tkXTtpZihmLm9uUHJvZ3Jlc3MpZi5vblByb2dyZXNzKGIpfX0sITEpO3EuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKGIpe3ZhciBjPSRhW2FdO2RlbGV0ZSAkYVthXTtmb3IodmFyIGQ9MCxmPWMubGVuZ3RoO2Q8ZjtkKyspe3ZhciBnPWNbZF07aWYoZy5vbkVycm9yKWcub25FcnJvcihiKX1lLm1hbmFnZXIuaXRlbUVycm9yKGEpO2UubWFuYWdlci5pdGVtRW5kKGEpfSwhMSk7cS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZnVuY3Rpb24oYil7dmFyIGM9JGFbYV07ZGVsZXRlICRhW2FdO2Zvcih2YXIgZD0wLGY9Yy5sZW5ndGg7ZDxmO2QrKyl7dmFyIGc9Y1tkXTtpZihnLm9uRXJyb3IpZy5vbkVycm9yKGIpfWUubWFuYWdlci5pdGVtRXJyb3IoYSk7ZS5tYW5hZ2VyLml0ZW1FbmQoYSl9LCExKTt2b2lkIDAhPT10aGlzLnJlc3BvbnNlVHlwZSYmKHEucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUeXBlKTt2b2lkIDAhPT10aGlzLndpdGhDcmVkZW50aWFscyYmCihxLndpdGhDcmVkZW50aWFscz10aGlzLndpdGhDcmVkZW50aWFscyk7cS5vdmVycmlkZU1pbWVUeXBlJiZxLm92ZXJyaWRlTWltZVR5cGUodm9pZCAwIT09dGhpcy5taW1lVHlwZT90aGlzLm1pbWVUeXBlOiJ0ZXh0L3BsYWluIik7Zm9yKGggaW4gdGhpcy5yZXF1ZXN0SGVhZGVyKXEuc2V0UmVxdWVzdEhlYWRlcihoLHRoaXMucmVxdWVzdEhlYWRlcltoXSk7cS5zZW5kKG51bGwpfWUubWFuYWdlci5pdGVtU3RhcnQoYSk7cmV0dXJuIHF9fSxzZXRSZXNwb25zZVR5cGU6ZnVuY3Rpb24oYSl7dGhpcy5yZXNwb25zZVR5cGU9YTtyZXR1cm4gdGhpc30sc2V0V2l0aENyZWRlbnRpYWxzOmZ1bmN0aW9uKGEpe3RoaXMud2l0aENyZWRlbnRpYWxzPWE7cmV0dXJuIHRoaXN9LHNldE1pbWVUeXBlOmZ1bmN0aW9uKGEpe3RoaXMubWltZVR5cGU9YTtyZXR1cm4gdGhpc30sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhKXt0aGlzLnJlcXVlc3RIZWFkZXI9YTtyZXR1cm4gdGhpc319KTtwZy5wcm90b3R5cGU9Ck9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnBnLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcyxmPW5ldyBOYShlLm1hbmFnZXIpO2Yuc2V0UGF0aChlLnBhdGgpO2YubG9hZChhLGZ1bmN0aW9uKGEpe2IoZS5wYXJzZShKU09OLnBhcnNlKGEpKSl9LGMsZCl9LHBhcnNlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPU1hLnBhcnNlKGFbY10pO2IucHVzaChkKX1yZXR1cm4gYn19KTtxZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFYucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6cWcsbG9hZDpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBlKGUpe2wubG9hZChhW2VdLGZ1bmN0aW9uKGEpe2E9Zi5wYXJzZShhLCEwKTtnW2VdPXt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodCxmb3JtYXQ6YS5mb3JtYXQsbWlwbWFwczphLm1pcG1hcHN9O2srPTE7Nj09PQprJiYoMT09PWEubWlwbWFwQ291bnQmJihoLm1pbkZpbHRlcj0xMDA2KSxoLmZvcm1hdD1hLmZvcm1hdCxoLm5lZWRzVXBkYXRlPSEwLGImJmIoaCkpfSxjLGQpfXZhciBmPXRoaXMsZz1bXSxoPW5ldyBLYztoLmltYWdlPWc7dmFyIGw9bmV3IE5hKHRoaXMubWFuYWdlcik7bC5zZXRQYXRoKHRoaXMucGF0aCk7bC5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGs9MCxuPTAscT1hLmxlbmd0aDtuPHE7KytuKWUobik7ZWxzZSBsLmxvYWQoYSxmdW5jdGlvbihhKXthPWYucGFyc2UoYSwhMCk7aWYoYS5pc0N1YmVtYXApZm9yKHZhciBjPWEubWlwbWFwcy5sZW5ndGgvYS5taXBtYXBDb3VudCxkPTA7ZDxjO2QrKyl7Z1tkXT17bWlwbWFwczpbXX07Zm9yKHZhciBlPTA7ZTxhLm1pcG1hcENvdW50O2UrKylnW2RdLm1pcG1hcHMucHVzaChhLm1pcG1hcHNbZCphLm1pcG1hcENvdW50K2VdKSxnW2RdLmZvcm1hdD1hLmZvcm1hdCxnW2RdLndpZHRoPQphLndpZHRoLGdbZF0uaGVpZ2h0PWEuaGVpZ2h0fWVsc2UgaC5pbWFnZS53aWR0aD1hLndpZHRoLGguaW1hZ2UuaGVpZ2h0PWEuaGVpZ2h0LGgubWlwbWFwcz1hLm1pcG1hcHM7MT09PWEubWlwbWFwQ291bnQmJihoLm1pbkZpbHRlcj0xMDA2KTtoLmZvcm1hdD1hLmZvcm1hdDtoLm5lZWRzVXBkYXRlPSEwO2ImJmIoaCl9LGMsZCk7cmV0dXJuIGh9fSk7WGUucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlhlLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcyxmPW5ldyBZYixnPW5ldyBOYSh0aGlzLm1hbmFnZXIpO2cuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpO2cuc2V0UGF0aCh0aGlzLnBhdGgpO2cubG9hZChhLGZ1bmN0aW9uKGEpe2lmKGE9ZS5wYXJzZShhKSl2b2lkIDAhPT1hLmltYWdlP2YuaW1hZ2U9YS5pbWFnZTp2b2lkIDAhPT1hLmRhdGEmJihmLmltYWdlLndpZHRoPWEud2lkdGgsZi5pbWFnZS5oZWlnaHQ9CmEuaGVpZ2h0LGYuaW1hZ2UuZGF0YT1hLmRhdGEpLGYud3JhcFM9dm9pZCAwIT09YS53cmFwUz9hLndyYXBTOjEwMDEsZi53cmFwVD12b2lkIDAhPT1hLndyYXBUP2Eud3JhcFQ6MTAwMSxmLm1hZ0ZpbHRlcj12b2lkIDAhPT1hLm1hZ0ZpbHRlcj9hLm1hZ0ZpbHRlcjoxMDA2LGYubWluRmlsdGVyPXZvaWQgMCE9PWEubWluRmlsdGVyP2EubWluRmlsdGVyOjEwMDYsZi5hbmlzb3Ryb3B5PXZvaWQgMCE9PWEuYW5pc290cm9weT9hLmFuaXNvdHJvcHk6MSx2b2lkIDAhPT1hLmZvcm1hdCYmKGYuZm9ybWF0PWEuZm9ybWF0KSx2b2lkIDAhPT1hLnR5cGUmJihmLnR5cGU9YS50eXBlKSx2b2lkIDAhPT1hLm1pcG1hcHMmJihmLm1pcG1hcHM9YS5taXBtYXBzLGYubWluRmlsdGVyPTEwMDgpLDE9PT1hLm1pcG1hcENvdW50JiYoZi5taW5GaWx0ZXI9MTAwNiksZi5uZWVkc1VwZGF0ZT0hMCxiJiZiKGYsYSl9LGMsZCk7cmV0dXJuIGZ9fSk7YWQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSksCntjb25zdHJ1Y3RvcjphZCxsb2FkOmZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGUoKXtsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGUsITEpO2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGYsITEpO3NjLmFkZChhLHRoaXMpO2ImJmIodGhpcyk7Zy5tYW5hZ2VyLml0ZW1FbmQoYSl9ZnVuY3Rpb24gZihiKXtsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGUsITEpO2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGYsITEpO2QmJmQoYik7Zy5tYW5hZ2VyLml0ZW1FcnJvcihhKTtnLm1hbmFnZXIuaXRlbUVuZChhKX12b2lkIDAhPT10aGlzLnBhdGgmJihhPXRoaXMucGF0aCthKTthPXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKGEpO3ZhciBnPXRoaXMsaD1zYy5nZXQoYSk7aWYodm9pZCAwIT09aClyZXR1cm4gZy5tYW5hZ2VyLml0ZW1TdGFydChhKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YiYmYihoKTtnLm1hbmFnZXIuaXRlbUVuZChhKX0sMCksaDt2YXIgbD0KZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiaW1nIik7bC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKTtsLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmLCExKTsiZGF0YToiIT09YS5zdWJzdHIoMCw1KSYmdm9pZCAwIT09dGhpcy5jcm9zc09yaWdpbiYmKGwuY3Jvc3NPcmlnaW49dGhpcy5jcm9zc09yaWdpbik7Zy5tYW5hZ2VyLml0ZW1TdGFydChhKTtsLnNyYz1hO3JldHVybiBsfX0pO1llLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpZZSxsb2FkOmZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGUoYyl7Zy5sb2FkKGFbY10sZnVuY3Rpb24oYSl7Zi5pbWFnZXNbY109YTtoKys7Nj09PWgmJihmLm5lZWRzVXBkYXRlPSEwLGImJmIoZikpfSx2b2lkIDAsZCl9dmFyIGY9bmV3IG5iLGc9bmV3IGFkKHRoaXMubWFuYWdlcik7Zy5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTsKZy5zZXRQYXRoKHRoaXMucGF0aCk7dmFyIGg9MDtmb3IoYz0wO2M8YS5sZW5ndGg7KytjKWUoYyk7cmV0dXJuIGZ9fSk7WmUucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlplLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bmV3IFksZj1uZXcgYWQodGhpcy5tYW5hZ2VyKTtmLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2Yuc2V0UGF0aCh0aGlzLnBhdGgpO2YubG9hZChhLGZ1bmN0aW9uKGMpe2UuaW1hZ2U9YztjPTA8YS5zZWFyY2goL1wuanBlP2coJHxcPykvaSl8fDA9PT1hLnNlYXJjaCgvXmRhdGE6aW1hZ2VcL2pwZWcvKTtlLmZvcm1hdD1jPzEwMjI6MTAyMztlLm5lZWRzVXBkYXRlPSEwO3ZvaWQgMCE9PWImJmIoZSl9LGMsZCk7cmV0dXJuIGV9fSk7T2JqZWN0LmFzc2lnbihDLnByb3RvdHlwZSx7Z2V0UG9pbnQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIik7CnJldHVybiBudWxsfSxnZXRQb2ludEF0OmZ1bmN0aW9uKGEsYil7YT10aGlzLmdldFV0b1RtYXBwaW5nKGEpO3JldHVybiB0aGlzLmdldFBvaW50KGEsYil9LGdldFBvaW50czpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT01KTtmb3IodmFyIGI9W10sYz0wO2M8PWE7YysrKWIucHVzaCh0aGlzLmdldFBvaW50KGMvYSkpO3JldHVybiBifSxnZXRTcGFjZWRQb2ludHM6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGE9NSk7Zm9yKHZhciBiPVtdLGM9MDtjPD1hO2MrKyliLnB1c2godGhpcy5nZXRQb2ludEF0KGMvYSkpO3JldHVybiBifSxnZXRMZW5ndGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gYVthLmxlbmd0aC0xXX0sZ2V0TGVuZ3RoczpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyk7aWYodGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PWErMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzOwp0aGlzLm5lZWRzVXBkYXRlPSExO3ZhciBiPVtdLGM9dGhpcy5nZXRQb2ludCgwKSxkLGU9MDtiLnB1c2goMCk7Zm9yKGQ9MTtkPD1hO2QrKyl7dmFyIGY9dGhpcy5nZXRQb2ludChkL2EpO2UrPWYuZGlzdGFuY2VUbyhjKTtiLnB1c2goZSk7Yz1mfXJldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Rocz1ifSx1cGRhdGVBcmNMZW5ndGhzOmZ1bmN0aW9uKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMDt0aGlzLmdldExlbmd0aHMoKX0sZ2V0VXRvVG1hcHBpbmc6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmdldExlbmd0aHMoKSxkPWMubGVuZ3RoO2I9Yj9iOmEqY1tkLTFdO2Zvcih2YXIgZT0wLGY9ZC0xLGc7ZTw9ZjspaWYoYT1NYXRoLmZsb29yKGUrKGYtZSkvMiksZz1jW2FdLWIsMD5nKWU9YSsxO2Vsc2UgaWYoMDxnKWY9YS0xO2Vsc2V7Zj1hO2JyZWFrfWE9ZjtpZihjW2FdPT09YilyZXR1cm4gYS8oZC0xKTtlPWNbYV07cmV0dXJuKGErKGItZSkvKGNbYSsxXS1lKSkvKGQtMSl9LGdldFRhbmdlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9CmEtMUUtNDthKz0xRS00OzA+YiYmKGI9MCk7MTxhJiYoYT0xKTtiPXRoaXMuZ2V0UG9pbnQoYik7cmV0dXJuIHRoaXMuZ2V0UG9pbnQoYSkuY2xvbmUoKS5zdWIoYikubm9ybWFsaXplKCl9LGdldFRhbmdlbnRBdDpmdW5jdGlvbihhKXthPXRoaXMuZ2V0VXRvVG1hcHBpbmcoYSk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChhKX0sY29tcHV0ZUZyZW5ldEZyYW1lczpmdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBuLGQ9W10sZT1bXSxmPVtdLGc9bmV3IG4saD1uZXcgUSxsO2ZvcihsPTA7bDw9YTtsKyspe3ZhciBrPWwvYTtkW2xdPXRoaXMuZ2V0VGFuZ2VudEF0KGspO2RbbF0ubm9ybWFsaXplKCl9ZVswXT1uZXcgbjtmWzBdPW5ldyBuO2w9TnVtYmVyLk1BWF9WQUxVRTtrPU1hdGguYWJzKGRbMF0ueCk7dmFyIHI9TWF0aC5hYnMoZFswXS55KSxxPU1hdGguYWJzKGRbMF0ueik7azw9bCYmKGw9ayxjLnNldCgxLDAsMCkpO3I8PWwmJihsPXIsYy5zZXQoMCwxLDApKTtxPD1sJiZjLnNldCgwLAowLDEpO2cuY3Jvc3NWZWN0b3JzKGRbMF0sYykubm9ybWFsaXplKCk7ZVswXS5jcm9zc1ZlY3RvcnMoZFswXSxnKTtmWzBdLmNyb3NzVmVjdG9ycyhkWzBdLGVbMF0pO2ZvcihsPTE7bDw9YTtsKyspZVtsXT1lW2wtMV0uY2xvbmUoKSxmW2xdPWZbbC0xXS5jbG9uZSgpLGcuY3Jvc3NWZWN0b3JzKGRbbC0xXSxkW2xdKSxnLmxlbmd0aCgpPk51bWJlci5FUFNJTE9OJiYoZy5ub3JtYWxpemUoKSxjPU1hdGguYWNvcyhQLmNsYW1wKGRbbC0xXS5kb3QoZFtsXSksLTEsMSkpLGVbbF0uYXBwbHlNYXRyaXg0KGgubWFrZVJvdGF0aW9uQXhpcyhnLGMpKSksZltsXS5jcm9zc1ZlY3RvcnMoZFtsXSxlW2xdKTtpZighMD09PWIpZm9yKGM9TWF0aC5hY29zKFAuY2xhbXAoZVswXS5kb3QoZVthXSksLTEsMSkpLGMvPWEsMDxkWzBdLmRvdChnLmNyb3NzVmVjdG9ycyhlWzBdLGVbYV0pKSYmKGM9LWMpLGw9MTtsPD1hO2wrKyllW2xdLmFwcGx5TWF0cml4NChoLm1ha2VSb3RhdGlvbkF4aXMoZFtsXSwKYypsKSksZltsXS5jcm9zc1ZlY3RvcnMoZFtsXSxlW2xdKTtyZXR1cm57dGFuZ2VudHM6ZCxub3JtYWxzOmUsYmlub3JtYWxzOmZ9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz1hLmFyY0xlbmd0aERpdmlzaW9ucztyZXR1cm4gdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7dmFyIGE9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJDdXJ2ZSIsZ2VuZXJhdG9yOiJDdXJ2ZS50b0pTT04ifX07YS5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM7YS50eXBlPXRoaXMudHlwZTtyZXR1cm4gYX0sZnJvbUpTT046ZnVuY3Rpb24oYSl7dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9YS5hcmNMZW5ndGhEaXZpc2lvbnM7cmV0dXJuIHRoaXN9fSk7SmEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQy5wcm90b3R5cGUpO0phLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KSmE7SmEucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO0phLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhLGIpe2I9Ynx8bmV3IEI7Zm9yKHZhciBjPTIqTWF0aC5QSSxkPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGUsZT1NYXRoLmFicyhkKTxOdW1iZXIuRVBTSUxPTjswPmQ7KWQrPWM7Zm9yKDtkPmM7KWQtPWM7ZDxOdW1iZXIuRVBTSUxPTiYmKGQ9ZT8wOmMpOyEwIT09dGhpcy5hQ2xvY2t3aXNlfHxlfHwoZD1kPT09Yz8tYzpkLWMpO2M9dGhpcy5hU3RhcnRBbmdsZSthKmQ7YT10aGlzLmFYK3RoaXMueFJhZGl1cypNYXRoLmNvcyhjKTt2YXIgZj10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihjKTswIT09dGhpcy5hUm90YXRpb24mJihjPU1hdGguY29zKHRoaXMuYVJvdGF0aW9uKSxkPU1hdGguc2luKHRoaXMuYVJvdGF0aW9uKSxlPWEtdGhpcy5hWCxmLT10aGlzLmFZLGE9ZSpjLWYqZCt0aGlzLmFYLGY9ZSpkK2YqYyt0aGlzLmFZKTtyZXR1cm4gYi5zZXQoYSwKZil9O0phLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe0MucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuYVg9YS5hWDt0aGlzLmFZPWEuYVk7dGhpcy54UmFkaXVzPWEueFJhZGl1czt0aGlzLnlSYWRpdXM9YS55UmFkaXVzO3RoaXMuYVN0YXJ0QW5nbGU9YS5hU3RhcnRBbmdsZTt0aGlzLmFFbmRBbmdsZT1hLmFFbmRBbmdsZTt0aGlzLmFDbG9ja3dpc2U9YS5hQ2xvY2t3aXNlO3RoaXMuYVJvdGF0aW9uPWEuYVJvdGF0aW9uO3JldHVybiB0aGlzfTtKYS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9Qy5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7YS5hWD10aGlzLmFYO2EuYVk9dGhpcy5hWTthLnhSYWRpdXM9dGhpcy54UmFkaXVzO2EueVJhZGl1cz10aGlzLnlSYWRpdXM7YS5hU3RhcnRBbmdsZT10aGlzLmFTdGFydEFuZ2xlO2EuYUVuZEFuZ2xlPXRoaXMuYUVuZEFuZ2xlO2EuYUNsb2Nrd2lzZT10aGlzLmFDbG9ja3dpc2U7YS5hUm90YXRpb249CnRoaXMuYVJvdGF0aW9uO3JldHVybiBhfTtKYS5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLGEpO3RoaXMuYVg9YS5hWDt0aGlzLmFZPWEuYVk7dGhpcy54UmFkaXVzPWEueFJhZGl1czt0aGlzLnlSYWRpdXM9YS55UmFkaXVzO3RoaXMuYVN0YXJ0QW5nbGU9YS5hU3RhcnRBbmdsZTt0aGlzLmFFbmRBbmdsZT1hLmFFbmRBbmdsZTt0aGlzLmFDbG9ja3dpc2U9YS5hQ2xvY2t3aXNlO3RoaXMuYVJvdGF0aW9uPWEuYVJvdGF0aW9uO3JldHVybiB0aGlzfTtiZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShKYS5wcm90b3R5cGUpO2JkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iZDtiZC5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDt2YXIgTGY9bmV3IG4sYWg9bmV3IHJnLGJoPW5ldyByZyxjaD1uZXcgcmc7bWEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQy5wcm90b3R5cGUpO21hLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1tYTttYS5wcm90b3R5cGUuaXNDYXRtdWxsUm9tQ3VydmUzPQohMDttYS5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24oYSxiKXtiPWJ8fG5ldyBuO3ZhciBjPXRoaXMucG9pbnRzLGQ9Yy5sZW5ndGg7YSo9ZC0odGhpcy5jbG9zZWQ/MDoxKTt2YXIgZT1NYXRoLmZsb29yKGEpO2EtPWU7dGhpcy5jbG9zZWQ/ZSs9MDxlPzA6KE1hdGguZmxvb3IoTWF0aC5hYnMoZSkvZCkrMSkqZDowPT09YSYmZT09PWQtMSYmKGU9ZC0yLGE9MSk7aWYodGhpcy5jbG9zZWR8fDA8ZSl2YXIgZj1jWyhlLTEpJWRdO2Vsc2UgTGYuc3ViVmVjdG9ycyhjWzBdLGNbMV0pLmFkZChjWzBdKSxmPUxmO3ZhciBnPWNbZSVkXTt2YXIgaD1jWyhlKzEpJWRdO3RoaXMuY2xvc2VkfHxlKzI8ZD9jPWNbKGUrMiklZF06KExmLnN1YlZlY3RvcnMoY1tkLTFdLGNbZC0yXSkuYWRkKGNbZC0xXSksYz1MZik7aWYoImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7dmFyIGw9ImNob3JkYWwiPT09dGhpcy5jdXJ2ZVR5cGU/LjU6LjI1OwpkPU1hdGgucG93KGYuZGlzdGFuY2VUb1NxdWFyZWQoZyksbCk7ZT1NYXRoLnBvdyhnLmRpc3RhbmNlVG9TcXVhcmVkKGgpLGwpO2w9TWF0aC5wb3coaC5kaXN0YW5jZVRvU3F1YXJlZChjKSxsKTsxRS00PmUmJihlPTEpOzFFLTQ+ZCYmKGQ9ZSk7MUUtND5sJiYobD1lKTthaC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oZi54LGcueCxoLngsYy54LGQsZSxsKTtiaC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oZi55LGcueSxoLnksYy55LGQsZSxsKTtjaC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oZi56LGcueixoLnosYy56LGQsZSxsKX1lbHNlImNhdG11bGxyb20iPT09dGhpcy5jdXJ2ZVR5cGUmJihhaC5pbml0Q2F0bXVsbFJvbShmLngsZy54LGgueCxjLngsdGhpcy50ZW5zaW9uKSxiaC5pbml0Q2F0bXVsbFJvbShmLnksZy55LGgueSxjLnksdGhpcy50ZW5zaW9uKSxjaC5pbml0Q2F0bXVsbFJvbShmLnosZy56LGgueixjLnosdGhpcy50ZW5zaW9uKSk7Yi5zZXQoYWguY2FsYyhhKSwKYmguY2FsYyhhKSxjaC5jYWxjKGEpKTtyZXR1cm4gYn07bWEucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5wb2ludHM9W107Zm9yKHZhciBiPTAsYz1hLnBvaW50cy5sZW5ndGg7YjxjO2IrKyl0aGlzLnBvaW50cy5wdXNoKGEucG9pbnRzW2JdLmNsb25lKCkpO3RoaXMuY2xvc2VkPWEuY2xvc2VkO3RoaXMuY3VydmVUeXBlPWEuY3VydmVUeXBlO3RoaXMudGVuc2lvbj1hLnRlbnNpb247cmV0dXJuIHRoaXN9O21hLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1DLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnBvaW50cz1bXTtmb3IodmFyIGI9MCxjPXRoaXMucG9pbnRzLmxlbmd0aDtiPGM7YisrKWEucG9pbnRzLnB1c2godGhpcy5wb2ludHNbYl0udG9BcnJheSgpKTthLmNsb3NlZD10aGlzLmNsb3NlZDthLmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZTthLnRlbnNpb249dGhpcy50ZW5zaW9uO3JldHVybiBhfTsKbWEucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe0MucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnBvaW50cz1bXTtmb3IodmFyIGI9MCxjPWEucG9pbnRzLmxlbmd0aDtiPGM7YisrKXt2YXIgZD1hLnBvaW50c1tiXTt0aGlzLnBvaW50cy5wdXNoKChuZXcgbikuZnJvbUFycmF5KGQpKX10aGlzLmNsb3NlZD1hLmNsb3NlZDt0aGlzLmN1cnZlVHlwZT1hLmN1cnZlVHlwZTt0aGlzLnRlbnNpb249YS50ZW5zaW9uO3JldHVybiB0aGlzfTtTYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDLnByb3RvdHlwZSk7U2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPVNhO1NhLnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmU9ITA7U2EucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYil7Yj1ifHxuZXcgQjt2YXIgYz10aGlzLnYwLGQ9dGhpcy52MSxlPXRoaXMudjIsZj10aGlzLnYzO2Iuc2V0KG5lKGEsYy54LGQueCxlLngsZi54KSxuZShhLGMueSxkLnksZS55LApmLnkpKTtyZXR1cm4gYn07U2EucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MC5jb3B5KGEudjApO3RoaXMudjEuY29weShhLnYxKTt0aGlzLnYyLmNvcHkoYS52Mik7dGhpcy52My5jb3B5KGEudjMpO3JldHVybiB0aGlzfTtTYS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9Qy5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7YS52MD10aGlzLnYwLnRvQXJyYXkoKTthLnYxPXRoaXMudjEudG9BcnJheSgpO2EudjI9dGhpcy52Mi50b0FycmF5KCk7YS52Mz10aGlzLnYzLnRvQXJyYXkoKTtyZXR1cm4gYX07U2EucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe0MucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnYwLmZyb21BcnJheShhLnYwKTt0aGlzLnYxLmZyb21BcnJheShhLnYxKTt0aGlzLnYyLmZyb21BcnJheShhLnYyKTt0aGlzLnYzLmZyb21BcnJheShhLnYzKTtyZXR1cm4gdGhpc307CmZiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMucHJvdG90eXBlKTtmYi5wcm90b3R5cGUuY29uc3RydWN0b3I9ZmI7ZmIucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZTM9ITA7ZmIucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYil7Yj1ifHxuZXcgbjt2YXIgYz10aGlzLnYwLGQ9dGhpcy52MSxlPXRoaXMudjIsZj10aGlzLnYzO2Iuc2V0KG5lKGEsYy54LGQueCxlLngsZi54KSxuZShhLGMueSxkLnksZS55LGYueSksbmUoYSxjLnosZC56LGUueixmLnopKTtyZXR1cm4gYn07ZmIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MC5jb3B5KGEudjApO3RoaXMudjEuY29weShhLnYxKTt0aGlzLnYyLmNvcHkoYS52Mik7dGhpcy52My5jb3B5KGEudjMpO3JldHVybiB0aGlzfTtmYi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9Qy5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7YS52MD10aGlzLnYwLnRvQXJyYXkoKTsKYS52MT10aGlzLnYxLnRvQXJyYXkoKTthLnYyPXRoaXMudjIudG9BcnJheSgpO2EudjM9dGhpcy52My50b0FycmF5KCk7cmV0dXJuIGF9O2ZiLnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbihhKXtDLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy52MC5mcm9tQXJyYXkoYS52MCk7dGhpcy52MS5mcm9tQXJyYXkoYS52MSk7dGhpcy52Mi5mcm9tQXJyYXkoYS52Mik7dGhpcy52My5mcm9tQXJyYXkoYS52Myk7cmV0dXJuIHRoaXN9O0RhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMucHJvdG90eXBlKTtEYS5wcm90b3R5cGUuY29uc3RydWN0b3I9RGE7RGEucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwO0RhLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhLGIpe2I9Ynx8bmV3IEI7MT09PWE/Yi5jb3B5KHRoaXMudjIpOihiLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLGIubXVsdGlwbHlTY2FsYXIoYSkuYWRkKHRoaXMudjEpKTtyZXR1cm4gYn07RGEucHJvdG90eXBlLmdldFBvaW50QXQ9CmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZ2V0UG9pbnQoYSxiKX07RGEucHJvdG90eXBlLmdldFRhbmdlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52Mi5jbG9uZSgpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKX07RGEucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MS5jb3B5KGEudjEpO3RoaXMudjIuY29weShhLnYyKTtyZXR1cm4gdGhpc307RGEucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPUMucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EudjE9dGhpcy52MS50b0FycmF5KCk7YS52Mj10aGlzLnYyLnRvQXJyYXkoKTtyZXR1cm4gYX07RGEucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe0MucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnYxLmZyb21BcnJheShhLnYxKTt0aGlzLnYyLmZyb21BcnJheShhLnYyKTtyZXR1cm4gdGhpc307VGEucHJvdG90eXBlPQpPYmplY3QuY3JlYXRlKEMucHJvdG90eXBlKTtUYS5wcm90b3R5cGUuY29uc3RydWN0b3I9VGE7VGEucHJvdG90eXBlLmlzTGluZUN1cnZlMz0hMDtUYS5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24oYSxiKXtiPWJ8fG5ldyBuOzE9PT1hP2IuY29weSh0aGlzLnYyKTooYi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxiLm11bHRpcGx5U2NhbGFyKGEpLmFkZCh0aGlzLnYxKSk7cmV0dXJuIGJ9O1RhLnByb3RvdHlwZS5nZXRQb2ludEF0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZ2V0UG9pbnQoYSxiKX07VGEucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MS5jb3B5KGEudjEpO3RoaXMudjIuY29weShhLnYyKTtyZXR1cm4gdGhpc307VGEucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPUMucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EudjE9dGhpcy52MS50b0FycmF5KCk7YS52Mj10aGlzLnYyLnRvQXJyYXkoKTsKcmV0dXJuIGF9O1RhLnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbihhKXtDLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy52MS5mcm9tQXJyYXkoYS52MSk7dGhpcy52Mi5mcm9tQXJyYXkoYS52Mik7cmV0dXJuIHRoaXN9O1VhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMucHJvdG90eXBlKTtVYS5wcm90b3R5cGUuY29uc3RydWN0b3I9VWE7VWEucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7VWEucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYil7Yj1ifHxuZXcgQjt2YXIgYz10aGlzLnYwLGQ9dGhpcy52MSxlPXRoaXMudjI7Yi5zZXQobWUoYSxjLngsZC54LGUueCksbWUoYSxjLnksZC55LGUueSkpO3JldHVybiBifTtVYS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtDLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLnYwLmNvcHkoYS52MCk7dGhpcy52MS5jb3B5KGEudjEpO3RoaXMudjIuY29weShhLnYyKTtyZXR1cm4gdGhpc307ClVhLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1DLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnYwPXRoaXMudjAudG9BcnJheSgpO2EudjE9dGhpcy52MS50b0FycmF5KCk7YS52Mj10aGlzLnYyLnRvQXJyYXkoKTtyZXR1cm4gYX07VWEucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe0MucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnYwLmZyb21BcnJheShhLnYwKTt0aGlzLnYxLmZyb21BcnJheShhLnYxKTt0aGlzLnYyLmZyb21BcnJheShhLnYyKTtyZXR1cm4gdGhpc307Z2IucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQy5wcm90b3R5cGUpO2diLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nYjtnYi5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZTM9ITA7Z2IucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYil7Yj1ifHxuZXcgbjt2YXIgYz10aGlzLnYwLGQ9dGhpcy52MSxlPXRoaXMudjI7Yi5zZXQobWUoYSxjLngsCmQueCxlLngpLG1lKGEsYy55LGQueSxlLnkpLG1lKGEsYy56LGQueixlLnopKTtyZXR1cm4gYn07Z2IucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MC5jb3B5KGEudjApO3RoaXMudjEuY29weShhLnYxKTt0aGlzLnYyLmNvcHkoYS52Mik7cmV0dXJuIHRoaXN9O2diLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1DLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnYwPXRoaXMudjAudG9BcnJheSgpO2EudjE9dGhpcy52MS50b0FycmF5KCk7YS52Mj10aGlzLnYyLnRvQXJyYXkoKTtyZXR1cm4gYX07Z2IucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe0MucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnYwLmZyb21BcnJheShhLnYwKTt0aGlzLnYxLmZyb21BcnJheShhLnYxKTt0aGlzLnYyLmZyb21BcnJheShhLnYyKTtyZXR1cm4gdGhpc307VmEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQy5wcm90b3R5cGUpOwpWYS5wcm90b3R5cGUuY29uc3RydWN0b3I9VmE7VmEucHJvdG90eXBlLmlzU3BsaW5lQ3VydmU9ITA7VmEucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYil7Yj1ifHxuZXcgQjt2YXIgYz10aGlzLnBvaW50cyxkPShjLmxlbmd0aC0xKSphO2E9TWF0aC5mbG9vcihkKTtkLT1hO3ZhciBlPWNbMD09PWE/YTphLTFdLGY9Y1thXSxnPWNbYT5jLmxlbmd0aC0yP2MubGVuZ3RoLTE6YSsxXTtjPWNbYT5jLmxlbmd0aC0zP2MubGVuZ3RoLTE6YSsyXTtiLnNldCgkaChkLGUueCxmLngsZy54LGMueCksJGgoZCxlLnksZi55LGcueSxjLnkpKTtyZXR1cm4gYn07VmEucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5wb2ludHM9W107Zm9yKHZhciBiPTAsYz1hLnBvaW50cy5sZW5ndGg7YjxjO2IrKyl0aGlzLnBvaW50cy5wdXNoKGEucG9pbnRzW2JdLmNsb25lKCkpO3JldHVybiB0aGlzfTtWYS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9CkMucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EucG9pbnRzPVtdO2Zvcih2YXIgYj0wLGM9dGhpcy5wb2ludHMubGVuZ3RoO2I8YztiKyspYS5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tiXS50b0FycmF5KCkpO3JldHVybiBhfTtWYS5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24oYSl7Qy5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLGEpO3RoaXMucG9pbnRzPVtdO2Zvcih2YXIgYj0wLGM9YS5wb2ludHMubGVuZ3RoO2I8YztiKyspe3ZhciBkPWEucG9pbnRzW2JdO3RoaXMucG9pbnRzLnB1c2goKG5ldyBCKS5mcm9tQXJyYXkoZCkpfXJldHVybiB0aGlzfTt2YXIgZGg9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6YmQsQ2F0bXVsbFJvbUN1cnZlMzptYSxDdWJpY0JlemllckN1cnZlOlNhLEN1YmljQmV6aWVyQ3VydmUzOmZiLEVsbGlwc2VDdXJ2ZTpKYSxMaW5lQ3VydmU6RGEsTGluZUN1cnZlMzpUYSxRdWFkcmF0aWNCZXppZXJDdXJ2ZTpVYSwKUXVhZHJhdGljQmV6aWVyQ3VydmUzOmdiLFNwbGluZUN1cnZlOlZhfSk7c2IucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShDLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnNiLGFkZDpmdW5jdGlvbihhKXt0aGlzLmN1cnZlcy5wdXNoKGEpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxiPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTthLmVxdWFscyhiKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcgRGEoYixhKSl9LGdldFBvaW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEqdGhpcy5nZXRMZW5ndGgoKSxjPXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7Zm9yKGE9MDthPGMubGVuZ3RoOyl7aWYoY1thXT49YilyZXR1cm4gYj1jW2FdLWIsYT10aGlzLmN1cnZlc1thXSxjPWEuZ2V0TGVuZ3RoKCksYS5nZXRQb2ludEF0KDA9PT1jPzA6MS1iL2MpO2ErK31yZXR1cm4gbnVsbH0sZ2V0TGVuZ3RoOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7cmV0dXJuIGFbYS5sZW5ndGgtMV19LHVwZGF0ZUFyY0xlbmd0aHM6ZnVuY3Rpb24oKXt0aGlzLm5lZWRzVXBkYXRlPSEwO3RoaXMuY2FjaGVMZW5ndGhzPW51bGw7dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKX0sZ2V0Q3VydmVMZW5ndGhzOmZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZUxlbmd0aHMmJnRoaXMuY2FjaGVMZW5ndGhzLmxlbmd0aD09PXRoaXMuY3VydmVzLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM7Zm9yKHZhciBhPVtdLGI9MCxjPTAsZD10aGlzLmN1cnZlcy5sZW5ndGg7YzxkO2MrKyliKz10aGlzLmN1cnZlc1tjXS5nZXRMZW5ndGgoKSxhLnB1c2goYik7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPWF9LGdldFNwYWNlZFBvaW50czpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT00MCk7Zm9yKHZhciBiPVtdLGM9MDtjPD1hO2MrKyliLnB1c2godGhpcy5nZXRQb2ludChjL2EpKTt0aGlzLmF1dG9DbG9zZSYmYi5wdXNoKGJbMF0pOwpyZXR1cm4gYn0sZ2V0UG9pbnRzOmZ1bmN0aW9uKGEpe2E9YXx8MTI7Zm9yKHZhciBiPVtdLGMsZD0wLGU9dGhpcy5jdXJ2ZXM7ZDxlLmxlbmd0aDtkKyspe3ZhciBmPWVbZF07Zj1mLmdldFBvaW50cyhmJiZmLmlzRWxsaXBzZUN1cnZlPzIqYTpmJiYoZi5pc0xpbmVDdXJ2ZXx8Zi5pc0xpbmVDdXJ2ZTMpPzE6ZiYmZi5pc1NwbGluZUN1cnZlP2EqZi5wb2ludHMubGVuZ3RoOmEpO2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgaD1mW2ddO2MmJmMuZXF1YWxzKGgpfHwoYi5wdXNoKGgpLGM9aCl9fXRoaXMuYXV0b0Nsb3NlJiYxPGIubGVuZ3RoJiYhYltiLmxlbmd0aC0xXS5lcXVhbHMoYlswXSkmJmIucHVzaChiWzBdKTtyZXR1cm4gYn0sY29weTpmdW5jdGlvbihhKXtDLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmN1cnZlcz1bXTtmb3IodmFyIGI9MCxjPWEuY3VydmVzLmxlbmd0aDtiPGM7YisrKXRoaXMuY3VydmVzLnB1c2goYS5jdXJ2ZXNbYl0uY2xvbmUoKSk7CnRoaXMuYXV0b0Nsb3NlPWEuYXV0b0Nsb3NlO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT1DLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLmF1dG9DbG9zZT10aGlzLmF1dG9DbG9zZTthLmN1cnZlcz1bXTtmb3IodmFyIGI9MCxjPXRoaXMuY3VydmVzLmxlbmd0aDtiPGM7YisrKWEuY3VydmVzLnB1c2godGhpcy5jdXJ2ZXNbYl0udG9KU09OKCkpO3JldHVybiBhfSxmcm9tSlNPTjpmdW5jdGlvbihhKXtDLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy5hdXRvQ2xvc2U9YS5hdXRvQ2xvc2U7dGhpcy5jdXJ2ZXM9W107Zm9yKHZhciBiPTAsYz1hLmN1cnZlcy5sZW5ndGg7YjxjO2IrKyl7dmFyIGQ9YS5jdXJ2ZXNbYl07dGhpcy5jdXJ2ZXMucHVzaCgobmV3IGRoW2QudHlwZV0pLmZyb21KU09OKGQpKX1yZXR1cm4gdGhpc319KTtXYS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHNiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOldhLApzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKGEpe3RoaXMubW92ZVRvKGFbMF0ueCxhWzBdLnkpO2Zvcih2YXIgYj0xLGM9YS5sZW5ndGg7YjxjO2IrKyl0aGlzLmxpbmVUbyhhW2JdLngsYVtiXS55KTtyZXR1cm4gdGhpc30sbW92ZVRvOmZ1bmN0aW9uKGEsYil7dGhpcy5jdXJyZW50UG9pbnQuc2V0KGEsYik7cmV0dXJuIHRoaXN9LGxpbmVUbzpmdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBEYSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBCKGEsYikpO3RoaXMuY3VydmVzLnB1c2goYyk7dGhpcy5jdXJyZW50UG9pbnQuc2V0KGEsYik7cmV0dXJuIHRoaXN9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24oYSxiLGMsZCl7YT1uZXcgVWEodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgQihhLGIpLG5ldyBCKGMsZCkpO3RoaXMuY3VydmVzLnB1c2goYSk7dGhpcy5jdXJyZW50UG9pbnQuc2V0KGMsZCk7cmV0dXJuIHRoaXN9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oYSxiLGMsZCwKZSxmKXthPW5ldyBTYSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBCKGEsYiksbmV3IEIoYyxkKSxuZXcgQihlLGYpKTt0aGlzLmN1cnZlcy5wdXNoKGEpO3RoaXMuY3VycmVudFBvaW50LnNldChlLGYpO3JldHVybiB0aGlzfSxzcGxpbmVUaHJ1OmZ1bmN0aW9uKGEpe3ZhciBiPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQoYSk7Yj1uZXcgVmEoYik7dGhpcy5jdXJ2ZXMucHVzaChiKTt0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGFbYS5sZW5ndGgtMV0pO3JldHVybiB0aGlzfSxhcmM6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuYWJzYXJjKGErdGhpcy5jdXJyZW50UG9pbnQueCxiK3RoaXMuY3VycmVudFBvaW50LnksYyxkLGUsZik7cmV0dXJuIHRoaXN9LGFic2FyYzpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5hYnNlbGxpcHNlKGEsYixjLGMsZCxlLGYpO3JldHVybiB0aGlzfSxlbGxpcHNlOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dGhpcy5hYnNlbGxpcHNlKGErCnRoaXMuY3VycmVudFBvaW50LngsYit0aGlzLmN1cnJlbnRQb2ludC55LGMsZCxlLGYsZyxoKTtyZXR1cm4gdGhpc30sYWJzZWxsaXBzZTpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2E9bmV3IEphKGEsYixjLGQsZSxmLGcsaCk7MDx0aGlzLmN1cnZlcy5sZW5ndGgmJihiPWEuZ2V0UG9pbnQoMCksYi5lcXVhbHModGhpcy5jdXJyZW50UG9pbnQpfHx0aGlzLmxpbmVUbyhiLngsYi55KSk7dGhpcy5jdXJ2ZXMucHVzaChhKTthPWEuZ2V0UG9pbnQoMSk7dGhpcy5jdXJyZW50UG9pbnQuY29weShhKTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbihhKXtzYi5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jdXJyZW50UG9pbnQuY29weShhLmN1cnJlbnRQb2ludCk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBhPXNiLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCk7cmV0dXJuIGF9LApmcm9tSlNPTjpmdW5jdGlvbihhKXtzYi5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLGEpO3RoaXMuY3VycmVudFBvaW50LmZyb21BcnJheShhLmN1cnJlbnRQb2ludCk7cmV0dXJuIHRoaXN9fSk7SWIucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShXYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpJYixnZXRQb2ludHNIb2xlczpmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wLGQ9dGhpcy5ob2xlcy5sZW5ndGg7YzxkO2MrKyliW2NdPXRoaXMuaG9sZXNbY10uZ2V0UG9pbnRzKGEpO3JldHVybiBifSxleHRyYWN0UG9pbnRzOmZ1bmN0aW9uKGEpe3JldHVybntzaGFwZTp0aGlzLmdldFBvaW50cyhhKSxob2xlczp0aGlzLmdldFBvaW50c0hvbGVzKGEpfX0sY29weTpmdW5jdGlvbihhKXtXYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5ob2xlcz1bXTtmb3IodmFyIGI9MCxjPWEuaG9sZXMubGVuZ3RoO2I8YztiKyspdGhpcy5ob2xlcy5wdXNoKGEuaG9sZXNbYl0uY2xvbmUoKSk7CnJldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT1XYS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7YS51dWlkPXRoaXMudXVpZDthLmhvbGVzPVtdO2Zvcih2YXIgYj0wLGM9dGhpcy5ob2xlcy5sZW5ndGg7YjxjO2IrKylhLmhvbGVzLnB1c2godGhpcy5ob2xlc1tiXS50b0pTT04oKSk7cmV0dXJuIGF9LGZyb21KU09OOmZ1bmN0aW9uKGEpe1dhLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy51dWlkPWEudXVpZDt0aGlzLmhvbGVzPVtdO2Zvcih2YXIgYj0wLGM9YS5ob2xlcy5sZW5ndGg7YjxjO2IrKyl7dmFyIGQ9YS5ob2xlc1tiXTt0aGlzLmhvbGVzLnB1c2goKG5ldyBXYSkuZnJvbUpTT04oZCkpfXJldHVybiB0aGlzfX0pO1QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlQsaXNMaWdodDohMCxjb3B5OmZ1bmN0aW9uKGEpe0UucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLAphKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5pbnRlbnNpdHk9YS5pbnRlbnNpdHk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbihhKXthPUUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSk7YS5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKTthLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHk7dm9pZCAwIT09dGhpcy5ncm91bmRDb2xvciYmKGEub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpO3ZvaWQgMCE9PXRoaXMuZGlzdGFuY2UmJihhLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKTt2b2lkIDAhPT10aGlzLmFuZ2xlJiYoYS5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSk7dm9pZCAwIT09dGhpcy5kZWNheSYmKGEub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpO3ZvaWQgMCE9PXRoaXMucGVudW1icmEmJihhLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKTt2b2lkIDAhPT10aGlzLnNoYWRvdyYmCihhLm9iamVjdC5zaGFkb3c9dGhpcy5zaGFkb3cudG9KU09OKCkpO3JldHVybiBhfX0pOyRlLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjokZSxpc0hlbWlzcGhlcmVMaWdodDohMCxjb3B5OmZ1bmN0aW9uKGEpe1QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZ3JvdW5kQ29sb3IuY29weShhLmdyb3VuZENvbG9yKTtyZXR1cm4gdGhpc319KTtPYmplY3QuYXNzaWduKGhiLnByb3RvdHlwZSx7X3Byb2pTY3JlZW5NYXRyaXg6bmV3IFEsX2xpZ2h0UG9zaXRpb25Xb3JsZDpuZXcgbixfbG9va1RhcmdldDpuZXcgbixnZXRWaWV3cG9ydENvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0Q291bnR9LGdldEZydXN0dW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX0sdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jYW1lcmEsYz10aGlzLm1hdHJpeCxkPXRoaXMuX3Byb2pTY3JlZW5NYXRyaXgsCmU9dGhpcy5fbG9va1RhcmdldCxmPXRoaXMuX2xpZ2h0UG9zaXRpb25Xb3JsZDtmLnNldEZyb21NYXRyaXhQb3NpdGlvbihhLm1hdHJpeFdvcmxkKTtiLnBvc2l0aW9uLmNvcHkoZik7ZS5zZXRGcm9tTWF0cml4UG9zaXRpb24oYS50YXJnZXQubWF0cml4V29ybGQpO2IubG9va0F0KGUpO2IudXBkYXRlTWF0cml4V29ybGQoKTtkLm11bHRpcGx5TWF0cmljZXMoYi5wcm9qZWN0aW9uTWF0cml4LGIubWF0cml4V29ybGRJbnZlcnNlKTt0aGlzLl9mcnVzdHVtLnNldEZyb21NYXRyaXgoZCk7Yy5zZXQoLjUsMCwwLC41LDAsLjUsMCwuNSwwLDAsLjUsLjUsMCwwLDAsMSk7Yy5tdWx0aXBseShiLnByb2plY3Rpb25NYXRyaXgpO2MubXVsdGlwbHkoYi5tYXRyaXhXb3JsZEludmVyc2UpfSxnZXRWaWV3cG9ydDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW2FdfSxnZXRGcmFtZUV4dGVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnJhbWVFeHRlbnRzfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMuY2FtZXJhPQphLmNhbWVyYS5jbG9uZSgpO3RoaXMuYmlhcz1hLmJpYXM7dGhpcy5yYWRpdXM9YS5yYWRpdXM7dGhpcy5tYXBTaXplLmNvcHkoYS5tYXBTaXplKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBhPXt9OzAhPT10aGlzLmJpYXMmJihhLmJpYXM9dGhpcy5iaWFzKTsxIT09dGhpcy5yYWRpdXMmJihhLnJhZGl1cz10aGlzLnJhZGl1cyk7aWYoNTEyIT09dGhpcy5tYXBTaXplLnh8fDUxMiE9PXRoaXMubWFwU2l6ZS55KWEubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpO2EuY2FtZXJhPXRoaXMuY2FtZXJhLnRvSlNPTighMSkub2JqZWN0O2RlbGV0ZSBhLmNhbWVyYS5tYXRyaXg7cmV0dXJuIGF9fSk7YWYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShoYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjphZixpc1Nwb3RMaWdodFNoYWRvdzohMCwKdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jYW1lcmEsYz0yKlAuUkFEMkRFRyphLmFuZ2xlLGQ9dGhpcy5tYXBTaXplLndpZHRoL3RoaXMubWFwU2l6ZS5oZWlnaHQsZT1hLmRpc3RhbmNlfHxiLmZhcjtpZihjIT09Yi5mb3Z8fGQhPT1iLmFzcGVjdHx8ZSE9PWIuZmFyKWIuZm92PWMsYi5hc3BlY3Q9ZCxiLmZhcj1lLGIudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO2hiLnByb3RvdHlwZS51cGRhdGVNYXRyaWNlcy5jYWxsKHRoaXMsYSl9fSk7YmYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShULnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmJmLGlzU3BvdExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24oYSl7VC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5kaXN0YW5jZT1hLmRpc3RhbmNlO3RoaXMuYW5nbGU9YS5hbmdsZTt0aGlzLnBlbnVtYnJhPWEucGVudW1icmE7dGhpcy5kZWNheT1hLmRlY2F5O3RoaXMudGFyZ2V0PWEudGFyZ2V0LmNsb25lKCk7CnRoaXMuc2hhZG93PWEuc2hhZG93LmNsb25lKCk7cmV0dXJuIHRoaXN9fSk7c2cucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShoYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpzZyxpc1BvaW50TGlnaHRTaGFkb3c6ITAsdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTt2YXIgYz10aGlzLmNhbWVyYSxkPXRoaXMubWF0cml4LGU9dGhpcy5fbGlnaHRQb3NpdGlvbldvcmxkLGY9dGhpcy5fbG9va1RhcmdldCxnPXRoaXMuX3Byb2pTY3JlZW5NYXRyaXg7ZS5zZXRGcm9tTWF0cml4UG9zaXRpb24oYS5tYXRyaXhXb3JsZCk7Yy5wb3NpdGlvbi5jb3B5KGUpO2YuY29weShjLnBvc2l0aW9uKTtmLmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tiXSk7Yy51cC5jb3B5KHRoaXMuX2N1YmVVcHNbYl0pO2MubG9va0F0KGYpO2MudXBkYXRlTWF0cml4V29ybGQoKTtkLm1ha2VUcmFuc2xhdGlvbigtZS54LC1lLnksLWUueik7Zy5tdWx0aXBseU1hdHJpY2VzKGMucHJvamVjdGlvbk1hdHJpeCwKYy5tYXRyaXhXb3JsZEludmVyc2UpO3RoaXMuX2ZydXN0dW0uc2V0RnJvbU1hdHJpeChnKX19KTtjZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6Y2YsaXNQb2ludExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24oYSl7VC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5kaXN0YW5jZT1hLmRpc3RhbmNlO3RoaXMuZGVjYXk9YS5kZWNheTt0aGlzLnNoYWRvdz1hLnNoYWRvdy5jbG9uZSgpO3JldHVybiB0aGlzfX0pO29lLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoYmIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6b2UsaXNPcnRob2dyYXBoaWNDYW1lcmE6ITAsY29weTpmdW5jdGlvbihhLGIpe2JiLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhLGIpO3RoaXMubGVmdD1hLmxlZnQ7dGhpcy5yaWdodD1hLnJpZ2h0O3RoaXMudG9wPWEudG9wO3RoaXMuYm90dG9tPWEuYm90dG9tO3RoaXMubmVhcj0KYS5uZWFyO3RoaXMuZmFyPWEuZmFyO3RoaXMuem9vbT1hLnpvb207dGhpcy52aWV3PW51bGw9PT1hLnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LGEudmlldyk7cmV0dXJuIHRoaXN9LHNldFZpZXdPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe251bGw9PT10aGlzLnZpZXcmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pO3RoaXMudmlldy5lbmFibGVkPSEwO3RoaXMudmlldy5mdWxsV2lkdGg9YTt0aGlzLnZpZXcuZnVsbEhlaWdodD1iO3RoaXMudmlldy5vZmZzZXRYPWM7dGhpcy52aWV3Lm9mZnNldFk9ZDt0aGlzLnZpZXcud2lkdGg9ZTt0aGlzLnZpZXcuaGVpZ2h0PWY7dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9LGNsZWFyVmlld09mZnNldDpmdW5jdGlvbigpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSk7dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9LAp1cGRhdGVQcm9qZWN0aW9uTWF0cml4OmZ1bmN0aW9uKCl7dmFyIGE9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS8oMip0aGlzLnpvb20pLGI9KHRoaXMudG9wLXRoaXMuYm90dG9tKS8oMip0aGlzLnpvb20pLGM9KHRoaXMucmlnaHQrdGhpcy5sZWZ0KS8yLGQ9KHRoaXMudG9wK3RoaXMuYm90dG9tKS8yLGU9Yy1hO2MrPWE7YT1kK2I7Yj1kLWI7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2M9dGhpcy56b29tLyh0aGlzLnZpZXcud2lkdGgvdGhpcy52aWV3LmZ1bGxXaWR0aCk7Yj10aGlzLnpvb20vKHRoaXMudmlldy5oZWlnaHQvdGhpcy52aWV3LmZ1bGxIZWlnaHQpO3ZhciBmPSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvdGhpcy52aWV3LndpZHRoO2Q9KHRoaXMudG9wLXRoaXMuYm90dG9tKS90aGlzLnZpZXcuaGVpZ2h0O2UrPXRoaXMudmlldy5vZmZzZXRYL2MqZjtjPWUrdGhpcy52aWV3LndpZHRoL2MqZjthLT10aGlzLnZpZXcub2Zmc2V0WS9iKmQ7Yj1hLXRoaXMudmlldy5oZWlnaHQvCmIqZH10aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhlLGMsYSxiLHRoaXMubmVhcix0aGlzLmZhcik7dGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5nZXRJbnZlcnNlKHRoaXMucHJvamVjdGlvbk1hdHJpeCl9LHRvSlNPTjpmdW5jdGlvbihhKXthPUUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSk7YS5vYmplY3Quem9vbT10aGlzLnpvb207YS5vYmplY3QubGVmdD10aGlzLmxlZnQ7YS5vYmplY3QucmlnaHQ9dGhpcy5yaWdodDthLm9iamVjdC50b3A9dGhpcy50b3A7YS5vYmplY3QuYm90dG9tPXRoaXMuYm90dG9tO2Eub2JqZWN0Lm5lYXI9dGhpcy5uZWFyO2Eub2JqZWN0LmZhcj10aGlzLmZhcjtudWxsIT09dGhpcy52aWV3JiYoYS5vYmplY3Qudmlldz1PYmplY3QuYXNzaWduKHt9LHRoaXMudmlldykpO3JldHVybiBhfX0pO2RmLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoaGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6ZGYsCmlzRGlyZWN0aW9uYWxMaWdodFNoYWRvdzohMCx1cGRhdGVNYXRyaWNlczpmdW5jdGlvbihhKXtoYi5wcm90b3R5cGUudXBkYXRlTWF0cmljZXMuY2FsbCh0aGlzLGEpfX0pO2VmLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjplZixpc0RpcmVjdGlvbmFsTGlnaHQ6ITAsY29weTpmdW5jdGlvbihhKXtULnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLnRhcmdldD1hLnRhcmdldC5jbG9uZSgpO3RoaXMuc2hhZG93PWEuc2hhZG93LmNsb25lKCk7cmV0dXJuIHRoaXN9fSk7ZmYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShULnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmZmLGlzQW1iaWVudExpZ2h0OiEwfSk7Z2YucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShULnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmdmLGlzUmVjdEFyZWFMaWdodDohMCxjb3B5OmZ1bmN0aW9uKGEpe1QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLAphKTt0aGlzLndpZHRoPWEud2lkdGg7dGhpcy5oZWlnaHQ9YS5oZWlnaHQ7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbihhKXthPVQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSk7YS5vYmplY3Qud2lkdGg9dGhpcy53aWR0aDthLm9iamVjdC5oZWlnaHQ9dGhpcy5oZWlnaHQ7cmV0dXJuIGF9fSk7aGYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmhmLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcyxmPW5ldyBOYShlLm1hbmFnZXIpO2Yuc2V0UGF0aChlLnBhdGgpO2YubG9hZChhLGZ1bmN0aW9uKGEpe2IoZS5wYXJzZShKU09OLnBhcnNlKGEpKSl9LGMsZCl9LHBhcnNlOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dm9pZCAwPT09Y1thXSYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbExvYWRlcjogVW5kZWZpbmVkIHRleHR1cmUiLGEpO3JldHVybiBjW2FdfXZhciBjPXRoaXMudGV4dHVyZXMsCmQ9bmV3IEZrW2EudHlwZV07dm9pZCAwIT09YS51dWlkJiYoZC51dWlkPWEudXVpZCk7dm9pZCAwIT09YS5uYW1lJiYoZC5uYW1lPWEubmFtZSk7dm9pZCAwIT09YS5jb2xvciYmZC5jb2xvci5zZXRIZXgoYS5jb2xvcik7dm9pZCAwIT09YS5yb3VnaG5lc3MmJihkLnJvdWdobmVzcz1hLnJvdWdobmVzcyk7dm9pZCAwIT09YS5tZXRhbG5lc3MmJihkLm1ldGFsbmVzcz1hLm1ldGFsbmVzcyk7dm9pZCAwIT09YS5zaGVlbiYmKGQuc2hlZW49KG5ldyBKKS5zZXRIZXgoYS5zaGVlbikpO3ZvaWQgMCE9PWEuZW1pc3NpdmUmJmQuZW1pc3NpdmUuc2V0SGV4KGEuZW1pc3NpdmUpO3ZvaWQgMCE9PWEuc3BlY3VsYXImJmQuc3BlY3VsYXIuc2V0SGV4KGEuc3BlY3VsYXIpO3ZvaWQgMCE9PWEuc2hpbmluZXNzJiYoZC5zaGluaW5lc3M9YS5zaGluaW5lc3MpO3ZvaWQgMCE9PWEuY2xlYXJjb2F0JiYoZC5jbGVhcmNvYXQ9YS5jbGVhcmNvYXQpO3ZvaWQgMCE9PWEuY2xlYXJjb2F0Um91Z2huZXNzJiYKKGQuY2xlYXJjb2F0Um91Z2huZXNzPWEuY2xlYXJjb2F0Um91Z2huZXNzKTt2b2lkIDAhPT1hLnZlcnRleENvbG9ycyYmKGQudmVydGV4Q29sb3JzPWEudmVydGV4Q29sb3JzKTt2b2lkIDAhPT1hLmZvZyYmKGQuZm9nPWEuZm9nKTt2b2lkIDAhPT1hLmZsYXRTaGFkaW5nJiYoZC5mbGF0U2hhZGluZz1hLmZsYXRTaGFkaW5nKTt2b2lkIDAhPT1hLmJsZW5kaW5nJiYoZC5ibGVuZGluZz1hLmJsZW5kaW5nKTt2b2lkIDAhPT1hLmNvbWJpbmUmJihkLmNvbWJpbmU9YS5jb21iaW5lKTt2b2lkIDAhPT1hLnNpZGUmJihkLnNpZGU9YS5zaWRlKTt2b2lkIDAhPT1hLm9wYWNpdHkmJihkLm9wYWNpdHk9YS5vcGFjaXR5KTt2b2lkIDAhPT1hLnRyYW5zcGFyZW50JiYoZC50cmFuc3BhcmVudD1hLnRyYW5zcGFyZW50KTt2b2lkIDAhPT1hLmFscGhhVGVzdCYmKGQuYWxwaGFUZXN0PWEuYWxwaGFUZXN0KTt2b2lkIDAhPT1hLmRlcHRoVGVzdCYmKGQuZGVwdGhUZXN0PWEuZGVwdGhUZXN0KTt2b2lkIDAhPT0KYS5kZXB0aFdyaXRlJiYoZC5kZXB0aFdyaXRlPWEuZGVwdGhXcml0ZSk7dm9pZCAwIT09YS5jb2xvcldyaXRlJiYoZC5jb2xvcldyaXRlPWEuY29sb3JXcml0ZSk7dm9pZCAwIT09YS5zdGVuY2lsV3JpdGUmJihkLnN0ZW5jaWxXcml0ZT1hLnN0ZW5jaWxXcml0ZSk7dm9pZCAwIT09YS5zdGVuY2lsV3JpdGVNYXNrJiYoZC5zdGVuY2lsV3JpdGVNYXNrPWEuc3RlbmNpbFdyaXRlTWFzayk7dm9pZCAwIT09YS5zdGVuY2lsRnVuYyYmKGQuc3RlbmNpbEZ1bmM9YS5zdGVuY2lsRnVuYyk7dm9pZCAwIT09YS5zdGVuY2lsUmVmJiYoZC5zdGVuY2lsUmVmPWEuc3RlbmNpbFJlZik7dm9pZCAwIT09YS5zdGVuY2lsRnVuY01hc2smJihkLnN0ZW5jaWxGdW5jTWFzaz1hLnN0ZW5jaWxGdW5jTWFzayk7dm9pZCAwIT09YS5zdGVuY2lsRmFpbCYmKGQuc3RlbmNpbEZhaWw9YS5zdGVuY2lsRmFpbCk7dm9pZCAwIT09YS5zdGVuY2lsWkZhaWwmJihkLnN0ZW5jaWxaRmFpbD1hLnN0ZW5jaWxaRmFpbCk7CnZvaWQgMCE9PWEuc3RlbmNpbFpQYXNzJiYoZC5zdGVuY2lsWlBhc3M9YS5zdGVuY2lsWlBhc3MpO3ZvaWQgMCE9PWEud2lyZWZyYW1lJiYoZC53aXJlZnJhbWU9YS53aXJlZnJhbWUpO3ZvaWQgMCE9PWEud2lyZWZyYW1lTGluZXdpZHRoJiYoZC53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGgpO3ZvaWQgMCE9PWEud2lyZWZyYW1lTGluZWNhcCYmKGQud2lyZWZyYW1lTGluZWNhcD1hLndpcmVmcmFtZUxpbmVjYXApO3ZvaWQgMCE9PWEud2lyZWZyYW1lTGluZWpvaW4mJihkLndpcmVmcmFtZUxpbmVqb2luPWEud2lyZWZyYW1lTGluZWpvaW4pO3ZvaWQgMCE9PWEucm90YXRpb24mJihkLnJvdGF0aW9uPWEucm90YXRpb24pOzEhPT1hLmxpbmV3aWR0aCYmKGQubGluZXdpZHRoPWEubGluZXdpZHRoKTt2b2lkIDAhPT1hLmRhc2hTaXplJiYoZC5kYXNoU2l6ZT1hLmRhc2hTaXplKTt2b2lkIDAhPT1hLmdhcFNpemUmJihkLmdhcFNpemU9YS5nYXBTaXplKTt2b2lkIDAhPT0KYS5zY2FsZSYmKGQuc2NhbGU9YS5zY2FsZSk7dm9pZCAwIT09YS5wb2x5Z29uT2Zmc2V0JiYoZC5wb2x5Z29uT2Zmc2V0PWEucG9seWdvbk9mZnNldCk7dm9pZCAwIT09YS5wb2x5Z29uT2Zmc2V0RmFjdG9yJiYoZC5wb2x5Z29uT2Zmc2V0RmFjdG9yPWEucG9seWdvbk9mZnNldEZhY3Rvcik7dm9pZCAwIT09YS5wb2x5Z29uT2Zmc2V0VW5pdHMmJihkLnBvbHlnb25PZmZzZXRVbml0cz1hLnBvbHlnb25PZmZzZXRVbml0cyk7dm9pZCAwIT09YS5za2lubmluZyYmKGQuc2tpbm5pbmc9YS5za2lubmluZyk7dm9pZCAwIT09YS5tb3JwaFRhcmdldHMmJihkLm1vcnBoVGFyZ2V0cz1hLm1vcnBoVGFyZ2V0cyk7dm9pZCAwIT09YS5tb3JwaE5vcm1hbHMmJihkLm1vcnBoTm9ybWFscz1hLm1vcnBoTm9ybWFscyk7dm9pZCAwIT09YS5kaXRoZXJpbmcmJihkLmRpdGhlcmluZz1hLmRpdGhlcmluZyk7dm9pZCAwIT09YS52aXNpYmxlJiYoZC52aXNpYmxlPWEudmlzaWJsZSk7dm9pZCAwIT09YS50b25lTWFwcGVkJiYKKGQudG9uZU1hcHBlZD1hLnRvbmVNYXBwZWQpO3ZvaWQgMCE9PWEudXNlckRhdGEmJihkLnVzZXJEYXRhPWEudXNlckRhdGEpO2lmKHZvaWQgMCE9PWEudW5pZm9ybXMpZm9yKHZhciBlIGluIGEudW5pZm9ybXMpe3ZhciBmPWEudW5pZm9ybXNbZV07ZC51bmlmb3Jtc1tlXT17fTtzd2l0Y2goZi50eXBlKXtjYXNlICJ0IjpkLnVuaWZvcm1zW2VdLnZhbHVlPWIoZi52YWx1ZSk7YnJlYWs7Y2FzZSAiYyI6ZC51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IEopLnNldEhleChmLnZhbHVlKTticmVhaztjYXNlICJ2MiI6ZC51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IEIpLmZyb21BcnJheShmLnZhbHVlKTticmVhaztjYXNlICJ2MyI6ZC51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IG4pLmZyb21BcnJheShmLnZhbHVlKTticmVhaztjYXNlICJ2NCI6ZC51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IGRhKS5mcm9tQXJyYXkoZi52YWx1ZSk7YnJlYWs7Y2FzZSAibTMiOmQudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBaKS5mcm9tQXJyYXkoZi52YWx1ZSk7CmNhc2UgIm00IjpkLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgUSkuZnJvbUFycmF5KGYudmFsdWUpO2JyZWFrO2RlZmF1bHQ6ZC51bmlmb3Jtc1tlXS52YWx1ZT1mLnZhbHVlfX12b2lkIDAhPT1hLmRlZmluZXMmJihkLmRlZmluZXM9YS5kZWZpbmVzKTt2b2lkIDAhPT1hLnZlcnRleFNoYWRlciYmKGQudmVydGV4U2hhZGVyPWEudmVydGV4U2hhZGVyKTt2b2lkIDAhPT1hLmZyYWdtZW50U2hhZGVyJiYoZC5mcmFnbWVudFNoYWRlcj1hLmZyYWdtZW50U2hhZGVyKTtpZih2b2lkIDAhPT1hLmV4dGVuc2lvbnMpZm9yKHZhciBnIGluIGEuZXh0ZW5zaW9ucylkLmV4dGVuc2lvbnNbZ109YS5leHRlbnNpb25zW2ddO3ZvaWQgMCE9PWEuc2hhZGluZyYmKGQuZmxhdFNoYWRpbmc9MT09PWEuc2hhZGluZyk7dm9pZCAwIT09YS5zaXplJiYoZC5zaXplPWEuc2l6ZSk7dm9pZCAwIT09YS5zaXplQXR0ZW51YXRpb24mJihkLnNpemVBdHRlbnVhdGlvbj1hLnNpemVBdHRlbnVhdGlvbik7dm9pZCAwIT09CmEubWFwJiYoZC5tYXA9YihhLm1hcCkpO3ZvaWQgMCE9PWEubWF0Y2FwJiYoZC5tYXRjYXA9YihhLm1hdGNhcCkpO3ZvaWQgMCE9PWEuYWxwaGFNYXAmJihkLmFscGhhTWFwPWIoYS5hbHBoYU1hcCksZC50cmFuc3BhcmVudD0hMCk7dm9pZCAwIT09YS5idW1wTWFwJiYoZC5idW1wTWFwPWIoYS5idW1wTWFwKSk7dm9pZCAwIT09YS5idW1wU2NhbGUmJihkLmJ1bXBTY2FsZT1hLmJ1bXBTY2FsZSk7dm9pZCAwIT09YS5ub3JtYWxNYXAmJihkLm5vcm1hbE1hcD1iKGEubm9ybWFsTWFwKSk7dm9pZCAwIT09YS5ub3JtYWxNYXBUeXBlJiYoZC5ub3JtYWxNYXBUeXBlPWEubm9ybWFsTWFwVHlwZSk7dm9pZCAwIT09YS5ub3JtYWxTY2FsZSYmKGU9YS5ub3JtYWxTY2FsZSwhMT09PUFycmF5LmlzQXJyYXkoZSkmJihlPVtlLGVdKSxkLm5vcm1hbFNjYWxlPShuZXcgQikuZnJvbUFycmF5KGUpKTt2b2lkIDAhPT1hLmRpc3BsYWNlbWVudE1hcCYmKGQuZGlzcGxhY2VtZW50TWFwPWIoYS5kaXNwbGFjZW1lbnRNYXApKTsKdm9pZCAwIT09YS5kaXNwbGFjZW1lbnRTY2FsZSYmKGQuZGlzcGxhY2VtZW50U2NhbGU9YS5kaXNwbGFjZW1lbnRTY2FsZSk7dm9pZCAwIT09YS5kaXNwbGFjZW1lbnRCaWFzJiYoZC5kaXNwbGFjZW1lbnRCaWFzPWEuZGlzcGxhY2VtZW50Qmlhcyk7dm9pZCAwIT09YS5yb3VnaG5lc3NNYXAmJihkLnJvdWdobmVzc01hcD1iKGEucm91Z2huZXNzTWFwKSk7dm9pZCAwIT09YS5tZXRhbG5lc3NNYXAmJihkLm1ldGFsbmVzc01hcD1iKGEubWV0YWxuZXNzTWFwKSk7dm9pZCAwIT09YS5lbWlzc2l2ZU1hcCYmKGQuZW1pc3NpdmVNYXA9YihhLmVtaXNzaXZlTWFwKSk7dm9pZCAwIT09YS5lbWlzc2l2ZUludGVuc2l0eSYmKGQuZW1pc3NpdmVJbnRlbnNpdHk9YS5lbWlzc2l2ZUludGVuc2l0eSk7dm9pZCAwIT09YS5zcGVjdWxhck1hcCYmKGQuc3BlY3VsYXJNYXA9YihhLnNwZWN1bGFyTWFwKSk7dm9pZCAwIT09YS5lbnZNYXAmJihkLmVudk1hcD1iKGEuZW52TWFwKSk7dm9pZCAwIT09YS5lbnZNYXBJbnRlbnNpdHkmJgooZC5lbnZNYXBJbnRlbnNpdHk9YS5lbnZNYXBJbnRlbnNpdHkpO3ZvaWQgMCE9PWEucmVmbGVjdGl2aXR5JiYoZC5yZWZsZWN0aXZpdHk9YS5yZWZsZWN0aXZpdHkpO3ZvaWQgMCE9PWEucmVmcmFjdGlvblJhdGlvJiYoZC5yZWZyYWN0aW9uUmF0aW89YS5yZWZyYWN0aW9uUmF0aW8pO3ZvaWQgMCE9PWEubGlnaHRNYXAmJihkLmxpZ2h0TWFwPWIoYS5saWdodE1hcCkpO3ZvaWQgMCE9PWEubGlnaHRNYXBJbnRlbnNpdHkmJihkLmxpZ2h0TWFwSW50ZW5zaXR5PWEubGlnaHRNYXBJbnRlbnNpdHkpO3ZvaWQgMCE9PWEuYW9NYXAmJihkLmFvTWFwPWIoYS5hb01hcCkpO3ZvaWQgMCE9PWEuYW9NYXBJbnRlbnNpdHkmJihkLmFvTWFwSW50ZW5zaXR5PWEuYW9NYXBJbnRlbnNpdHkpO3ZvaWQgMCE9PWEuZ3JhZGllbnRNYXAmJihkLmdyYWRpZW50TWFwPWIoYS5ncmFkaWVudE1hcCkpO3ZvaWQgMCE9PWEuY2xlYXJjb2F0Tm9ybWFsTWFwJiYoZC5jbGVhcmNvYXROb3JtYWxNYXA9YihhLmNsZWFyY29hdE5vcm1hbE1hcCkpOwp2b2lkIDAhPT1hLmNsZWFyY29hdE5vcm1hbFNjYWxlJiYoZC5jbGVhcmNvYXROb3JtYWxTY2FsZT0obmV3IEIpLmZyb21BcnJheShhLmNsZWFyY29hdE5vcm1hbFNjYWxlKSk7cmV0dXJuIGR9LHNldFRleHR1cmVzOmZ1bmN0aW9uKGEpe3RoaXMudGV4dHVyZXM9YTtyZXR1cm4gdGhpc319KTt2YXIgZWg9e2RlY29kZVRleHQ6ZnVuY3Rpb24oYSl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgVGV4dERlY29kZXIpcmV0dXJuKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKGEpO2Zvcih2YXIgYj0iIixjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWIrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtjXSk7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGIpKX1jYXRjaChlKXtyZXR1cm4gYn19LGV4dHJhY3RVcmxCYXNlOmZ1bmN0aW9uKGEpe3ZhciBiPWEubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PWI/Ii4vIjphLnN1YnN0cigwLGIrMSl9fTtqZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEQucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOmpmLGlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk6ITAsY29weTpmdW5jdGlvbihhKXtELnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLm1heEluc3RhbmNlZENvdW50PWEubWF4SW5zdGFuY2VkQ291bnQ7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT1ELnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLm1heEluc3RhbmNlZENvdW50PXRoaXMubWF4SW5zdGFuY2VkQ291bnQ7YS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwO3JldHVybiBhfX0pO2tmLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoTi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjprZixpc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTohMCxjb3B5OmZ1bmN0aW9uKGEpe04ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMubWVzaFBlckF0dHJpYnV0ZT0KYS5tZXNoUGVyQXR0cmlidXRlO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT1OLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlO2EuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITA7cmV0dXJuIGF9fSk7bGYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmxmLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcyxmPW5ldyBOYShlLm1hbmFnZXIpO2Yuc2V0UGF0aChlLnBhdGgpO2YubG9hZChhLGZ1bmN0aW9uKGEpe2IoZS5wYXJzZShKU09OLnBhcnNlKGEpKSl9LGMsZCl9LHBhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiPWEuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT9uZXcgamY6bmV3IEQsYz1hLmRhdGEuaW5kZXg7aWYodm9pZCAwIT09Yyl7dmFyIGQ9bmV3IGZoW2MudHlwZV0oYy5hcnJheSk7Yi5zZXRJbmRleChuZXcgTihkLAoxKSl9Yz1hLmRhdGEuYXR0cmlidXRlcztmb3IodmFyIGUgaW4gYyl7dmFyIGY9Y1tlXTtkPW5ldyBmaFtmLnR5cGVdKGYuYXJyYXkpO2Q9bmV3IChmLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlP2tmOk4pKGQsZi5pdGVtU2l6ZSxmLm5vcm1hbGl6ZWQpO3ZvaWQgMCE9PWYubmFtZSYmKGQubmFtZT1mLm5hbWUpO2Iuc2V0QXR0cmlidXRlKGUsZCl9dmFyIGc9YS5kYXRhLm1vcnBoQXR0cmlidXRlcztpZihnKWZvcihlIGluIGcpe3ZhciBoPWdbZV0sbD1bXTtjPTA7Zm9yKHZhciBrPWgubGVuZ3RoO2M8aztjKyspZj1oW2NdLGQ9bmV3IGZoW2YudHlwZV0oZi5hcnJheSksZD1uZXcgTihkLGYuaXRlbVNpemUsZi5ub3JtYWxpemVkKSx2b2lkIDAhPT1mLm5hbWUmJihkLm5hbWU9Zi5uYW1lKSxsLnB1c2goZCk7Yi5tb3JwaEF0dHJpYnV0ZXNbZV09bH1lPWEuZGF0YS5ncm91cHN8fGEuZGF0YS5kcmF3Y2FsbHN8fGEuZGF0YS5vZmZzZXRzO2lmKHZvaWQgMCE9PWUpZm9yKGM9MCxmPWUubGVuZ3RoO2MhPT0KZjsrK2MpZD1lW2NdLGIuYWRkR3JvdXAoZC5zdGFydCxkLmNvdW50LGQubWF0ZXJpYWxJbmRleCk7Yz1hLmRhdGEuYm91bmRpbmdTcGhlcmU7dm9pZCAwIT09YyYmKGU9bmV3IG4sdm9pZCAwIT09Yy5jZW50ZXImJmUuZnJvbUFycmF5KGMuY2VudGVyKSxiLmJvdW5kaW5nU3BoZXJlPW5ldyBtYihlLGMucmFkaXVzKSk7YS5uYW1lJiYoYi5uYW1lPWEubmFtZSk7YS51c2VyRGF0YSYmKGIudXNlckRhdGE9YS51c2VyRGF0YSk7cmV0dXJuIGJ9fSk7dmFyIGZoPXtJbnQ4QXJyYXk6SW50OEFycmF5LFVpbnQ4QXJyYXk6VWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheToidW5kZWZpbmVkIiE9PXR5cGVvZiBVaW50OENsYW1wZWRBcnJheT9VaW50OENsYW1wZWRBcnJheTpVaW50OEFycmF5LEludDE2QXJyYXk6SW50MTZBcnJheSxVaW50MTZBcnJheTpVaW50MTZBcnJheSxJbnQzMkFycmF5OkludDMyQXJyYXksVWludDMyQXJyYXk6VWludDMyQXJyYXksRmxvYXQzMkFycmF5OkZsb2F0MzJBcnJheSwKRmxvYXQ2NEFycmF5OkZsb2F0NjRBcnJheX07bWYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOm1mLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcyxmPSIiPT09dGhpcy5wYXRoP2VoLmV4dHJhY3RVcmxCYXNlKGEpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8ZjtmPW5ldyBOYShlLm1hbmFnZXIpO2Yuc2V0UGF0aCh0aGlzLnBhdGgpO2YubG9hZChhLGZ1bmN0aW9uKGMpe3ZhciBmPW51bGw7dHJ5e2Y9SlNPTi5wYXJzZShjKX1jYXRjaChsKXt2b2lkIDAhPT1kJiZkKGwpO2NvbnNvbGUuZXJyb3IoIlRIUkVFOk9iamVjdExvYWRlcjogQ2FuJ3QgcGFyc2UgIithKyIuIixsLm1lc3NhZ2UpO3JldHVybn1jPWYubWV0YWRhdGE7dm9pZCAwPT09Y3x8dm9pZCAwPT09Yy50eXBlfHwiZ2VvbWV0cnkiPT09Yy50eXBlLnRvTG93ZXJDYXNlKCk/Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW4ndCBsb2FkICIrCmEpOmUucGFyc2UoZixiKX0sYyxkKX0scGFyc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnBhcnNlU2hhcGUoYS5zaGFwZXMpO2M9dGhpcy5wYXJzZUdlb21ldHJpZXMoYS5nZW9tZXRyaWVzLGMpO3ZhciBkPXRoaXMucGFyc2VJbWFnZXMoYS5pbWFnZXMsZnVuY3Rpb24oKXt2b2lkIDAhPT1iJiZiKGUpfSk7ZD10aGlzLnBhcnNlVGV4dHVyZXMoYS50ZXh0dXJlcyxkKTtkPXRoaXMucGFyc2VNYXRlcmlhbHMoYS5tYXRlcmlhbHMsZCk7dmFyIGU9dGhpcy5wYXJzZU9iamVjdChhLm9iamVjdCxjLGQpO2EuYW5pbWF0aW9ucyYmKGUuYW5pbWF0aW9ucz10aGlzLnBhcnNlQW5pbWF0aW9ucyhhLmFuaW1hdGlvbnMpKTt2b2lkIDAhPT1hLmltYWdlcyYmMCE9PWEuaW1hZ2VzLmxlbmd0aHx8dm9pZCAwPT09Ynx8YihlKTtyZXR1cm4gZX0scGFyc2VTaGFwZTpmdW5jdGlvbihhKXt2YXIgYj17fTtpZih2b2lkIDAhPT1hKWZvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9KG5ldyBJYikuZnJvbUpTT04oYVtjXSk7CmJbZS51dWlkXT1lfXJldHVybiBifSxwYXJzZUdlb21ldHJpZXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtpZih2b2lkIDAhPT1hKWZvcih2YXIgZD1uZXcgbGYsZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKyl7dmFyIGc9YVtlXTtzd2l0Y2goZy50eXBlKXtjYXNlICJQbGFuZUdlb21ldHJ5IjpjYXNlICJQbGFuZUJ1ZmZlckdlb21ldHJ5Ijp2YXIgaD1uZXcgamFbZy50eXBlXShnLndpZHRoLGcuaGVpZ2h0LGcud2lkdGhTZWdtZW50cyxnLmhlaWdodFNlZ21lbnRzKTticmVhaztjYXNlICJCb3hHZW9tZXRyeSI6Y2FzZSAiQm94QnVmZmVyR2VvbWV0cnkiOmNhc2UgIkN1YmVHZW9tZXRyeSI6aD1uZXcgamFbZy50eXBlXShnLndpZHRoLGcuaGVpZ2h0LGcuZGVwdGgsZy53aWR0aFNlZ21lbnRzLGcuaGVpZ2h0U2VnbWVudHMsZy5kZXB0aFNlZ21lbnRzKTticmVhaztjYXNlICJDaXJjbGVHZW9tZXRyeSI6Y2FzZSAiQ2lyY2xlQnVmZmVyR2VvbWV0cnkiOmg9bmV3IGphW2cudHlwZV0oZy5yYWRpdXMsCmcuc2VnbWVudHMsZy50aGV0YVN0YXJ0LGcudGhldGFMZW5ndGgpO2JyZWFrO2Nhc2UgIkN5bGluZGVyR2VvbWV0cnkiOmNhc2UgIkN5bGluZGVyQnVmZmVyR2VvbWV0cnkiOmg9bmV3IGphW2cudHlwZV0oZy5yYWRpdXNUb3AsZy5yYWRpdXNCb3R0b20sZy5oZWlnaHQsZy5yYWRpYWxTZWdtZW50cyxnLmhlaWdodFNlZ21lbnRzLGcub3BlbkVuZGVkLGcudGhldGFTdGFydCxnLnRoZXRhTGVuZ3RoKTticmVhaztjYXNlICJDb25lR2VvbWV0cnkiOmNhc2UgIkNvbmVCdWZmZXJHZW9tZXRyeSI6aD1uZXcgamFbZy50eXBlXShnLnJhZGl1cyxnLmhlaWdodCxnLnJhZGlhbFNlZ21lbnRzLGcuaGVpZ2h0U2VnbWVudHMsZy5vcGVuRW5kZWQsZy50aGV0YVN0YXJ0LGcudGhldGFMZW5ndGgpO2JyZWFrO2Nhc2UgIlNwaGVyZUdlb21ldHJ5IjpjYXNlICJTcGhlcmVCdWZmZXJHZW9tZXRyeSI6aD1uZXcgamFbZy50eXBlXShnLnJhZGl1cyxnLndpZHRoU2VnbWVudHMsZy5oZWlnaHRTZWdtZW50cywKZy5waGlTdGFydCxnLnBoaUxlbmd0aCxnLnRoZXRhU3RhcnQsZy50aGV0YUxlbmd0aCk7YnJlYWs7Y2FzZSAiRG9kZWNhaGVkcm9uR2VvbWV0cnkiOmNhc2UgIkRvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5IjpjYXNlICJJY29zYWhlZHJvbkdlb21ldHJ5IjpjYXNlICJJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5IjpjYXNlICJPY3RhaGVkcm9uR2VvbWV0cnkiOmNhc2UgIk9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeSI6Y2FzZSAiVGV0cmFoZWRyb25HZW9tZXRyeSI6Y2FzZSAiVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeSI6aD1uZXcgamFbZy50eXBlXShnLnJhZGl1cyxnLmRldGFpbCk7YnJlYWs7Y2FzZSAiUmluZ0dlb21ldHJ5IjpjYXNlICJSaW5nQnVmZmVyR2VvbWV0cnkiOmg9bmV3IGphW2cudHlwZV0oZy5pbm5lclJhZGl1cyxnLm91dGVyUmFkaXVzLGcudGhldGFTZWdtZW50cyxnLnBoaVNlZ21lbnRzLGcudGhldGFTdGFydCxnLnRoZXRhTGVuZ3RoKTticmVhaztjYXNlICJUb3J1c0dlb21ldHJ5IjpjYXNlICJUb3J1c0J1ZmZlckdlb21ldHJ5IjpoPQpuZXcgamFbZy50eXBlXShnLnJhZGl1cyxnLnR1YmUsZy5yYWRpYWxTZWdtZW50cyxnLnR1YnVsYXJTZWdtZW50cyxnLmFyYyk7YnJlYWs7Y2FzZSAiVG9ydXNLbm90R2VvbWV0cnkiOmNhc2UgIlRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5IjpoPW5ldyBqYVtnLnR5cGVdKGcucmFkaXVzLGcudHViZSxnLnR1YnVsYXJTZWdtZW50cyxnLnJhZGlhbFNlZ21lbnRzLGcucCxnLnEpO2JyZWFrO2Nhc2UgIlR1YmVHZW9tZXRyeSI6Y2FzZSAiVHViZUJ1ZmZlckdlb21ldHJ5IjpoPW5ldyBqYVtnLnR5cGVdKChuZXcgZGhbZy5wYXRoLnR5cGVdKS5mcm9tSlNPTihnLnBhdGgpLGcudHVidWxhclNlZ21lbnRzLGcucmFkaXVzLGcucmFkaWFsU2VnbWVudHMsZy5jbG9zZWQpO2JyZWFrO2Nhc2UgIkxhdGhlR2VvbWV0cnkiOmNhc2UgIkxhdGhlQnVmZmVyR2VvbWV0cnkiOmg9bmV3IGphW2cudHlwZV0oZy5wb2ludHMsZy5zZWdtZW50cyxnLnBoaVN0YXJ0LGcucGhpTGVuZ3RoKTticmVhaztjYXNlICJQb2x5aGVkcm9uR2VvbWV0cnkiOmNhc2UgIlBvbHloZWRyb25CdWZmZXJHZW9tZXRyeSI6aD0KbmV3IGphW2cudHlwZV0oZy52ZXJ0aWNlcyxnLmluZGljZXMsZy5yYWRpdXMsZy5kZXRhaWxzKTticmVhaztjYXNlICJTaGFwZUdlb21ldHJ5IjpjYXNlICJTaGFwZUJ1ZmZlckdlb21ldHJ5IjpoPVtdO2Zvcih2YXIgbD0wLGs9Zy5zaGFwZXMubGVuZ3RoO2w8aztsKyspe3ZhciBuPWJbZy5zaGFwZXNbbF1dO2gucHVzaChuKX1oPW5ldyBqYVtnLnR5cGVdKGgsZy5jdXJ2ZVNlZ21lbnRzKTticmVhaztjYXNlICJFeHRydWRlR2VvbWV0cnkiOmNhc2UgIkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeSI6aD1bXTtsPTA7Zm9yKGs9Zy5zaGFwZXMubGVuZ3RoO2w8aztsKyspbj1iW2cuc2hhcGVzW2xdXSxoLnB1c2gobik7bD1nLm9wdGlvbnMuZXh0cnVkZVBhdGg7dm9pZCAwIT09bCYmKGcub3B0aW9ucy5leHRydWRlUGF0aD0obmV3IGRoW2wudHlwZV0pLmZyb21KU09OKGwpKTtoPW5ldyBqYVtnLnR5cGVdKGgsZy5vcHRpb25zKTticmVhaztjYXNlICJCdWZmZXJHZW9tZXRyeSI6Y2FzZSAiSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkiOmg9CmQucGFyc2UoZyk7YnJlYWs7Y2FzZSAiR2VvbWV0cnkiOiJUSFJFRSJpbiB3aW5kb3cmJiJMZWdhY3lKU09OTG9hZGVyImluIFRIUkVFP2g9KG5ldyBUSFJFRS5MZWdhY3lKU09OTG9hZGVyKS5wYXJzZShnLHRoaXMucmVzb3VyY2VQYXRoKS5nZW9tZXRyeTpjb25zb2xlLmVycm9yKCdUSFJFRS5PYmplY3RMb2FkZXI6IFlvdSBoYXZlIHRvIGltcG9ydCBMZWdhY3lKU09OTG9hZGVyIGluIG9yZGVyIGxvYWQgZ2VvbWV0cnkgZGF0YSBvZiB0eXBlICJHZW9tZXRyeSIuJyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJytnLnR5cGUrJyInKTtjb250aW51ZX1oLnV1aWQ9Zy51dWlkO3ZvaWQgMCE9PWcubmFtZSYmKGgubmFtZT1nLm5hbWUpOyEwPT09aC5pc0J1ZmZlckdlb21ldHJ5JiZ2b2lkIDAhPT1nLnVzZXJEYXRhJiYoaC51c2VyRGF0YT1nLnVzZXJEYXRhKTtjW2cudXVpZF09aH1yZXR1cm4gY30sCnBhcnNlTWF0ZXJpYWxzOmZ1bmN0aW9uKGEsYil7dmFyIGM9e30sZD17fTtpZih2b2lkIDAhPT1hKXt2YXIgZT1uZXcgaGY7ZS5zZXRUZXh0dXJlcyhiKTtiPTA7Zm9yKHZhciBmPWEubGVuZ3RoO2I8ZjtiKyspe3ZhciBnPWFbYl07aWYoIk11bHRpTWF0ZXJpYWwiPT09Zy50eXBlKXtmb3IodmFyIGg9W10sbD0wO2w8Zy5tYXRlcmlhbHMubGVuZ3RoO2wrKyl7dmFyIGs9Zy5tYXRlcmlhbHNbbF07dm9pZCAwPT09Y1trLnV1aWRdJiYoY1trLnV1aWRdPWUucGFyc2UoaykpO2gucHVzaChjW2sudXVpZF0pfWRbZy51dWlkXT1ofWVsc2Ugdm9pZCAwPT09Y1tnLnV1aWRdJiYoY1tnLnV1aWRdPWUucGFyc2UoZykpLGRbZy51dWlkXT1jW2cudXVpZF19fXJldHVybiBkfSxwYXJzZUFuaW1hdGlvbnM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPU1hLnBhcnNlKGQpO3ZvaWQgMCE9PWQudXVpZCYmKGUudXVpZD1kLnV1aWQpO2IucHVzaChlKX1yZXR1cm4gYn0sCnBhcnNlSW1hZ2VzOmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtkLm1hbmFnZXIuaXRlbVN0YXJ0KGEpO3JldHVybiBmLmxvYWQoYSxmdW5jdGlvbigpe2QubWFuYWdlci5pdGVtRW5kKGEpfSx2b2lkIDAsZnVuY3Rpb24oKXtkLm1hbmFnZXIuaXRlbUVycm9yKGEpO2QubWFuYWdlci5pdGVtRW5kKGEpfSl9dmFyIGQ9dGhpcyxlPXt9O2lmKHZvaWQgMCE9PWEmJjA8YS5sZW5ndGgpe2I9bmV3IG9nKGIpO3ZhciBmPW5ldyBhZChiKTtmLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2I9MDtmb3IodmFyIGc9YS5sZW5ndGg7YjxnO2IrKyl7dmFyIGg9YVtiXSxsPWgudXJsO2lmKEFycmF5LmlzQXJyYXkobCkpe2VbaC51dWlkXT1bXTtmb3IodmFyIGs9MCxuPWwubGVuZ3RoO2s8bjtrKyspe3ZhciBxPWxba107cT0vXihcL1wvKXwoW2Etel0rOihcL1wvKT8pL2kudGVzdChxKT9xOmQucmVzb3VyY2VQYXRoK3E7ZVtoLnV1aWRdLnB1c2goYyhxKSl9fWVsc2UgcT0vXihcL1wvKXwoW2Etel0rOihcL1wvKT8pL2kudGVzdChoLnVybCk/CmgudXJsOmQucmVzb3VyY2VQYXRoK2gudXJsLGVbaC51dWlkXT1jKHEpfX1yZXR1cm4gZX0scGFyc2VUZXh0dXJlczpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtpZigibnVtYmVyIj09PXR5cGVvZiBhKXJldHVybiBhO2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlVGV4dHVyZTogQ29uc3RhbnQgc2hvdWxkIGJlIGluIG51bWVyaWMgZm9ybS4iLGEpO3JldHVybiBiW2FdfXZhciBkPXt9O2lmKHZvaWQgMCE9PWEpZm9yKHZhciBlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKXt2YXIgZz1hW2VdO3ZvaWQgMD09PWcuaW1hZ2UmJmNvbnNvbGUud2FybignVEhSRUUuT2JqZWN0TG9hZGVyOiBObyAiaW1hZ2UiIHNwZWNpZmllZCBmb3InLGcudXVpZCk7dm9pZCAwPT09YltnLmltYWdlXSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBpbWFnZSIsZy5pbWFnZSk7dmFyIGg9QXJyYXkuaXNBcnJheShiW2cuaW1hZ2VdKT9uZXcgbmIoYltnLmltYWdlXSk6Cm5ldyBZKGJbZy5pbWFnZV0pO2gubmVlZHNVcGRhdGU9ITA7aC51dWlkPWcudXVpZDt2b2lkIDAhPT1nLm5hbWUmJihoLm5hbWU9Zy5uYW1lKTt2b2lkIDAhPT1nLm1hcHBpbmcmJihoLm1hcHBpbmc9YyhnLm1hcHBpbmcsR2spKTt2b2lkIDAhPT1nLm9mZnNldCYmaC5vZmZzZXQuZnJvbUFycmF5KGcub2Zmc2V0KTt2b2lkIDAhPT1nLnJlcGVhdCYmaC5yZXBlYXQuZnJvbUFycmF5KGcucmVwZWF0KTt2b2lkIDAhPT1nLmNlbnRlciYmaC5jZW50ZXIuZnJvbUFycmF5KGcuY2VudGVyKTt2b2lkIDAhPT1nLnJvdGF0aW9uJiYoaC5yb3RhdGlvbj1nLnJvdGF0aW9uKTt2b2lkIDAhPT1nLndyYXAmJihoLndyYXBTPWMoZy53cmFwWzBdLERpKSxoLndyYXBUPWMoZy53cmFwWzFdLERpKSk7dm9pZCAwIT09Zy5mb3JtYXQmJihoLmZvcm1hdD1nLmZvcm1hdCk7dm9pZCAwIT09Zy50eXBlJiYoaC50eXBlPWcudHlwZSk7dm9pZCAwIT09Zy5lbmNvZGluZyYmKGguZW5jb2Rpbmc9Zy5lbmNvZGluZyk7CnZvaWQgMCE9PWcubWluRmlsdGVyJiYoaC5taW5GaWx0ZXI9YyhnLm1pbkZpbHRlcixFaSkpO3ZvaWQgMCE9PWcubWFnRmlsdGVyJiYoaC5tYWdGaWx0ZXI9YyhnLm1hZ0ZpbHRlcixFaSkpO3ZvaWQgMCE9PWcuYW5pc290cm9weSYmKGguYW5pc290cm9weT1nLmFuaXNvdHJvcHkpO3ZvaWQgMCE9PWcuZmxpcFkmJihoLmZsaXBZPWcuZmxpcFkpO3ZvaWQgMCE9PWcucHJlbXVsdGlwbHlBbHBoYSYmKGgucHJlbXVsdGlwbHlBbHBoYT1nLnByZW11bHRpcGx5QWxwaGEpO3ZvaWQgMCE9PWcudW5wYWNrQWxpZ25tZW50JiYoaC51bnBhY2tBbGlnbm1lbnQ9Zy51bnBhY2tBbGlnbm1lbnQpO2RbZy51dWlkXT1ofXJldHVybiBkfSxwYXJzZU9iamVjdDpmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXt2b2lkIDA9PT1iW2FdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIGdlb21ldHJ5IixhKTtyZXR1cm4gYlthXX1mdW5jdGlvbiBlKGEpe2lmKHZvaWQgMCE9PQphKXtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IodmFyIGI9W10sZD0wLGU9YS5sZW5ndGg7ZDxlO2QrKyl7dmFyIGY9YVtkXTt2b2lkIDA9PT1jW2ZdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIixmKTtiLnB1c2goY1tmXSl9cmV0dXJuIGJ9dm9pZCAwPT09Y1thXSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBtYXRlcmlhbCIsYSk7cmV0dXJuIGNbYV19fXN3aXRjaChhLnR5cGUpe2Nhc2UgIlNjZW5lIjp2YXIgZj1uZXcgdmQ7dm9pZCAwIT09YS5iYWNrZ3JvdW5kJiZOdW1iZXIuaXNJbnRlZ2VyKGEuYmFja2dyb3VuZCkmJihmLmJhY2tncm91bmQ9bmV3IEooYS5iYWNrZ3JvdW5kKSk7dm9pZCAwIT09YS5mb2cmJigiRm9nIj09PWEuZm9nLnR5cGU/Zi5mb2c9bmV3IE1lKGEuZm9nLmNvbG9yLGEuZm9nLm5lYXIsYS5mb2cuZmFyKToiRm9nRXhwMiI9PT1hLmZvZy50eXBlJiYoZi5mb2c9bmV3IExlKGEuZm9nLmNvbG9yLAphLmZvZy5kZW5zaXR5KSkpO2JyZWFrO2Nhc2UgIlBlcnNwZWN0aXZlQ2FtZXJhIjpmPW5ldyBVKGEuZm92LGEuYXNwZWN0LGEubmVhcixhLmZhcik7dm9pZCAwIT09YS5mb2N1cyYmKGYuZm9jdXM9YS5mb2N1cyk7dm9pZCAwIT09YS56b29tJiYoZi56b29tPWEuem9vbSk7dm9pZCAwIT09YS5maWxtR2F1Z2UmJihmLmZpbG1HYXVnZT1hLmZpbG1HYXVnZSk7dm9pZCAwIT09YS5maWxtT2Zmc2V0JiYoZi5maWxtT2Zmc2V0PWEuZmlsbU9mZnNldCk7dm9pZCAwIT09YS52aWV3JiYoZi52aWV3PU9iamVjdC5hc3NpZ24oe30sYS52aWV3KSk7YnJlYWs7Y2FzZSAiT3J0aG9ncmFwaGljQ2FtZXJhIjpmPW5ldyBvZShhLmxlZnQsYS5yaWdodCxhLnRvcCxhLmJvdHRvbSxhLm5lYXIsYS5mYXIpO3ZvaWQgMCE9PWEuem9vbSYmKGYuem9vbT1hLnpvb20pO3ZvaWQgMCE9PWEudmlldyYmKGYudmlldz1PYmplY3QuYXNzaWduKHt9LGEudmlldykpO2JyZWFrO2Nhc2UgIkFtYmllbnRMaWdodCI6Zj0KbmV3IGZmKGEuY29sb3IsYS5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UgIkRpcmVjdGlvbmFsTGlnaHQiOmY9bmV3IGVmKGEuY29sb3IsYS5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UgIlBvaW50TGlnaHQiOmY9bmV3IGNmKGEuY29sb3IsYS5pbnRlbnNpdHksYS5kaXN0YW5jZSxhLmRlY2F5KTticmVhaztjYXNlICJSZWN0QXJlYUxpZ2h0IjpmPW5ldyBnZihhLmNvbG9yLGEuaW50ZW5zaXR5LGEud2lkdGgsYS5oZWlnaHQpO2JyZWFrO2Nhc2UgIlNwb3RMaWdodCI6Zj1uZXcgYmYoYS5jb2xvcixhLmludGVuc2l0eSxhLmRpc3RhbmNlLGEuYW5nbGUsYS5wZW51bWJyYSxhLmRlY2F5KTticmVhaztjYXNlICJIZW1pc3BoZXJlTGlnaHQiOmY9bmV3ICRlKGEuY29sb3IsYS5ncm91bmRDb2xvcixhLmludGVuc2l0eSk7YnJlYWs7Y2FzZSAiU2tpbm5lZE1lc2giOmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlT2JqZWN0KCkgZG9lcyBub3Qgc3VwcG9ydCBTa2lubmVkTWVzaCB5ZXQuIik7CmNhc2UgIk1lc2giOmY9ZChhLmdlb21ldHJ5KTt2YXIgZz1lKGEubWF0ZXJpYWwpO2Y9Zi5ib25lcyYmMDxmLmJvbmVzLmxlbmd0aD9uZXcgT2QoZixnKTpuZXcgZWEoZixnKTticmVhaztjYXNlICJJbnN0YW5jZWRNZXNoIjpmPWQoYS5nZW9tZXRyeSk7Zz1lKGEubWF0ZXJpYWwpO3ZhciBoPWEuaW5zdGFuY2VNYXRyaXg7Zj1uZXcgUGUoZixnLGEuY291bnQpO2YuaW5zdGFuY2VNYXRyaXg9bmV3IE4obmV3IEZsb2F0MzJBcnJheShoLmFycmF5KSwxNik7YnJlYWs7Y2FzZSAiTE9EIjpmPW5ldyBOZDticmVhaztjYXNlICJMaW5lIjpmPW5ldyByYShkKGEuZ2VvbWV0cnkpLGUoYS5tYXRlcmlhbCksYS5tb2RlKTticmVhaztjYXNlICJMaW5lTG9vcCI6Zj1uZXcgUWUoZChhLmdlb21ldHJ5KSxlKGEubWF0ZXJpYWwpKTticmVhaztjYXNlICJMaW5lU2VnbWVudHMiOmY9bmV3IFgoZChhLmdlb21ldHJ5KSxlKGEubWF0ZXJpYWwpKTticmVhaztjYXNlICJQb2ludENsb3VkIjpjYXNlICJQb2ludHMiOmY9Cm5ldyBKYyhkKGEuZ2VvbWV0cnkpLGUoYS5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UgIlNwcml0ZSI6Zj1uZXcgTGQoZShhLm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSAiR3JvdXAiOmY9bmV3IEdjO2JyZWFrO2RlZmF1bHQ6Zj1uZXcgRX1mLnV1aWQ9YS51dWlkO3ZvaWQgMCE9PWEubmFtZSYmKGYubmFtZT1hLm5hbWUpO3ZvaWQgMCE9PWEubWF0cml4PyhmLm1hdHJpeC5mcm9tQXJyYXkoYS5tYXRyaXgpLHZvaWQgMCE9PWEubWF0cml4QXV0b1VwZGF0ZSYmKGYubWF0cml4QXV0b1VwZGF0ZT1hLm1hdHJpeEF1dG9VcGRhdGUpLGYubWF0cml4QXV0b1VwZGF0ZSYmZi5tYXRyaXguZGVjb21wb3NlKGYucG9zaXRpb24sZi5xdWF0ZXJuaW9uLGYuc2NhbGUpKToodm9pZCAwIT09YS5wb3NpdGlvbiYmZi5wb3NpdGlvbi5mcm9tQXJyYXkoYS5wb3NpdGlvbiksdm9pZCAwIT09YS5yb3RhdGlvbiYmZi5yb3RhdGlvbi5mcm9tQXJyYXkoYS5yb3RhdGlvbiksdm9pZCAwIT09YS5xdWF0ZXJuaW9uJiZmLnF1YXRlcm5pb24uZnJvbUFycmF5KGEucXVhdGVybmlvbiksCnZvaWQgMCE9PWEuc2NhbGUmJmYuc2NhbGUuZnJvbUFycmF5KGEuc2NhbGUpKTt2b2lkIDAhPT1hLmNhc3RTaGFkb3cmJihmLmNhc3RTaGFkb3c9YS5jYXN0U2hhZG93KTt2b2lkIDAhPT1hLnJlY2VpdmVTaGFkb3cmJihmLnJlY2VpdmVTaGFkb3c9YS5yZWNlaXZlU2hhZG93KTthLnNoYWRvdyYmKHZvaWQgMCE9PWEuc2hhZG93LmJpYXMmJihmLnNoYWRvdy5iaWFzPWEuc2hhZG93LmJpYXMpLHZvaWQgMCE9PWEuc2hhZG93LnJhZGl1cyYmKGYuc2hhZG93LnJhZGl1cz1hLnNoYWRvdy5yYWRpdXMpLHZvaWQgMCE9PWEuc2hhZG93Lm1hcFNpemUmJmYuc2hhZG93Lm1hcFNpemUuZnJvbUFycmF5KGEuc2hhZG93Lm1hcFNpemUpLHZvaWQgMCE9PWEuc2hhZG93LmNhbWVyYSYmKGYuc2hhZG93LmNhbWVyYT10aGlzLnBhcnNlT2JqZWN0KGEuc2hhZG93LmNhbWVyYSkpKTt2b2lkIDAhPT1hLnZpc2libGUmJihmLnZpc2libGU9YS52aXNpYmxlKTt2b2lkIDAhPT1hLmZydXN0dW1DdWxsZWQmJgooZi5mcnVzdHVtQ3VsbGVkPWEuZnJ1c3R1bUN1bGxlZCk7dm9pZCAwIT09YS5yZW5kZXJPcmRlciYmKGYucmVuZGVyT3JkZXI9YS5yZW5kZXJPcmRlcik7dm9pZCAwIT09YS51c2VyRGF0YSYmKGYudXNlckRhdGE9YS51c2VyRGF0YSk7dm9pZCAwIT09YS5sYXllcnMmJihmLmxheWVycy5tYXNrPWEubGF5ZXJzKTt2b2lkIDAhPT1hLmRyYXdNb2RlJiZmLnNldERyYXdNb2RlKGEuZHJhd01vZGUpO2lmKHZvaWQgMCE9PWEuY2hpbGRyZW4pZm9yKGg9YS5jaGlsZHJlbixnPTA7ZzxoLmxlbmd0aDtnKyspZi5hZGQodGhpcy5wYXJzZU9iamVjdChoW2ddLGIsYykpO2lmKCJMT0QiPT09YS50eXBlKWZvcihhPWEubGV2ZWxzLGg9MDtoPGEubGVuZ3RoO2grKyl7Zz1hW2hdO3ZhciBsPWYuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgidXVpZCIsZy5vYmplY3QpO3ZvaWQgMCE9PWwmJmYuYWRkTGV2ZWwobCxnLmRpc3RhbmNlKX1yZXR1cm4gZn19KTt2YXIgR2s9e1VWTWFwcGluZzozMDAsQ3ViZVJlZmxlY3Rpb25NYXBwaW5nOjMwMSwKQ3ViZVJlZnJhY3Rpb25NYXBwaW5nOjMwMixFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZzozMDMsRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6MzA0LFNwaGVyaWNhbFJlZmxlY3Rpb25NYXBwaW5nOjMwNSxDdWJlVVZSZWZsZWN0aW9uTWFwcGluZzozMDYsQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmc6MzA3fSxEaT17UmVwZWF0V3JhcHBpbmc6MUUzLENsYW1wVG9FZGdlV3JhcHBpbmc6MTAwMSxNaXJyb3JlZFJlcGVhdFdyYXBwaW5nOjEwMDJ9LEVpPXtOZWFyZXN0RmlsdGVyOjEwMDMsTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI6MTAwNCxOZWFyZXN0TWlwbWFwTGluZWFyRmlsdGVyOjEwMDUsTGluZWFyRmlsdGVyOjEwMDYsTGluZWFyTWlwbWFwTmVhcmVzdEZpbHRlcjoxMDA3LExpbmVhck1pcG1hcExpbmVhckZpbHRlcjoxMDA4fTt0Zy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFYucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6dGcsCnNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPWE7cmV0dXJuIHRoaXN9LGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dm9pZCAwPT09YSYmKGE9IiIpO3ZvaWQgMCE9PXRoaXMucGF0aCYmKGE9dGhpcy5wYXRoK2EpO2E9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwoYSk7dmFyIGU9dGhpcyxmPXNjLmdldChhKTtpZih2b2lkIDAhPT1mKXJldHVybiBlLm1hbmFnZXIuaXRlbVN0YXJ0KGEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiJiZiKGYpO2UubWFuYWdlci5pdGVtRW5kKGEpfSwwKSxmO2ZldGNoKGEpLnRoZW4oZnVuY3Rpb24oYSl7cmV0dXJuIGEuYmxvYigpfSkudGhlbihmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09ZS5vcHRpb25zP2NyZWF0ZUltYWdlQml0bWFwKGEpOmNyZWF0ZUltYWdlQml0bWFwKGEsZS5vcHRpb25zKX0pLnRoZW4oZnVuY3Rpb24oYyl7c2MuYWRkKGEsYyk7YiYmYihjKTtlLm1hbmFnZXIuaXRlbUVuZChhKX0pLmNhdGNoKGZ1bmN0aW9uKGIpe2QmJgpkKGIpO2UubWFuYWdlci5pdGVtRXJyb3IoYSk7ZS5tYW5hZ2VyLml0ZW1FbmQoYSl9KTtlLm1hbmFnZXIuaXRlbVN0YXJ0KGEpfX0pO09iamVjdC5hc3NpZ24odWcucHJvdG90eXBlLHttb3ZlVG86ZnVuY3Rpb24oYSxiKXt0aGlzLmN1cnJlbnRQYXRoPW5ldyBXYTt0aGlzLnN1YlBhdGhzLnB1c2godGhpcy5jdXJyZW50UGF0aCk7dGhpcy5jdXJyZW50UGF0aC5tb3ZlVG8oYSxiKTtyZXR1cm4gdGhpc30sbGluZVRvOmZ1bmN0aW9uKGEsYil7dGhpcy5jdXJyZW50UGF0aC5saW5lVG8oYSxiKTtyZXR1cm4gdGhpc30scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbihhLGIsYyxkKXt0aGlzLmN1cnJlbnRQYXRoLnF1YWRyYXRpY0N1cnZlVG8oYSxiLGMsZCk7cmV0dXJuIHRoaXN9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuY3VycmVudFBhdGguYmV6aWVyQ3VydmVUbyhhLGIsYyxkLGUsZik7cmV0dXJuIHRoaXN9LHNwbGluZVRocnU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KGEpOwpyZXR1cm4gdGhpc30sdG9TaGFwZXM6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKXt2YXIgZT1hW2NdLGY9bmV3IEliO2YuY3VydmVzPWUuY3VydmVzO2IucHVzaChmKX1yZXR1cm4gYn1mdW5jdGlvbiBkKGEsYil7Zm9yKHZhciBjPWIubGVuZ3RoLGQ9ITEsZT1jLTEsZj0wO2Y8YztlPWYrKyl7dmFyIGc9YltlXSxoPWJbZl0sbD1oLngtZy54LGs9aC55LWcueTtpZihNYXRoLmFicyhrKT5OdW1iZXIuRVBTSUxPTil7aWYoMD5rJiYoZz1iW2ZdLGw9LWwsaD1iW2VdLGs9LWspLCEoYS55PGcueXx8YS55PmgueSkpaWYoYS55PT09Zy55KXtpZihhLng9PT1nLngpcmV0dXJuITB9ZWxzZXtlPWsqKGEueC1nLngpLWwqKGEueS1nLnkpO2lmKDA9PT1lKXJldHVybiEwOzA+ZXx8KGQ9IWQpfX1lbHNlIGlmKGEueT09PWcueSYmKGgueDw9YS54JiZhLng8PWcueHx8Zy54PD1hLngmJmEueDw9aC54KSlyZXR1cm4hMH1yZXR1cm4gZH0KdmFyIGU9cWIuaXNDbG9ja1dpc2UsZj10aGlzLnN1YlBhdGhzO2lmKDA9PT1mLmxlbmd0aClyZXR1cm5bXTtpZighMD09PWIpcmV0dXJuIGMoZik7Yj1bXTtpZigxPT09Zi5sZW5ndGgpe3ZhciBnPWZbMF07dmFyIGg9bmV3IEliO2guY3VydmVzPWcuY3VydmVzO2IucHVzaChoKTtyZXR1cm4gYn12YXIgbD0hZShmWzBdLmdldFBvaW50cygpKTtsPWE/IWw6bDtoPVtdO3ZhciBrPVtdLG49W10scT0wO2tbcV09dm9pZCAwO25bcV09W107Zm9yKHZhciB1PTAscD1mLmxlbmd0aDt1PHA7dSsrKXtnPWZbdV07dmFyIHQ9Zy5nZXRQb2ludHMoKTt2YXIgdj1lKHQpOyh2PWE/IXY6dik/KCFsJiZrW3FdJiZxKyssa1txXT17czpuZXcgSWIscDp0fSxrW3FdLnMuY3VydmVzPWcuY3VydmVzLGwmJnErKyxuW3FdPVtdKTpuW3FdLnB1c2goe2g6ZyxwOnRbMF19KX1pZigha1swXSlyZXR1cm4gYyhmKTtpZigxPGsubGVuZ3RoKXt1PSExO2E9W107ZT0wO2ZvcihmPWsubGVuZ3RoO2U8ZjtlKyspaFtlXT0KW107ZT0wO2ZvcihmPWsubGVuZ3RoO2U8ZjtlKyspZm9yKGc9bltlXSx2PTA7djxnLmxlbmd0aDt2Kyspe2w9Z1t2XTtxPSEwO2Zvcih0PTA7dDxrLmxlbmd0aDt0KyspZChsLnAsa1t0XS5wKSYmKGUhPT10JiZhLnB1c2goe2Zyb21zOmUsdG9zOnQsaG9sZTp2fSkscT8ocT0hMSxoW3RdLnB1c2gobCkpOnU9ITApO3EmJmhbZV0ucHVzaChsKX0wPGEubGVuZ3RoJiYodXx8KG49aCkpfXU9MDtmb3IoZT1rLmxlbmd0aDt1PGU7dSsrKWZvcihoPWtbdV0ucyxiLnB1c2goaCksYT1uW3VdLGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspaC5ob2xlcy5wdXNoKGFbZl0uaCk7cmV0dXJuIGJ9fSk7T2JqZWN0LmFzc2lnbih2Zy5wcm90b3R5cGUse2lzRm9udDohMCxnZW5lcmF0ZVNoYXBlczpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTEwMCk7dmFyIGM9W10sZD1iO2I9dGhpcy5kYXRhO3ZhciBlPUFycmF5LmZyb20/QXJyYXkuZnJvbShhKTpTdHJpbmcoYSkuc3BsaXQoIiIpO2QvPWIucmVzb2x1dGlvbjsKdmFyIGY9KGIuYm91bmRpbmdCb3gueU1heC1iLmJvdW5kaW5nQm94LnlNaW4rYi51bmRlcmxpbmVUaGlja25lc3MpKmQ7YT1bXTtmb3IodmFyIGc9MCxoPTAsbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgaz1lW2xdO2lmKCJcbiI9PT1rKWc9MCxoLT1mO2Vsc2V7dmFyIG49aztrPWQ7dmFyIHE9Zyx1PWgscD1iLHQ9cC5nbHlwaHNbbl18fHAuZ2x5cGhzWyI/Il07aWYodCl7bj1uZXcgdWc7aWYodC5vKXtwPXQuX2NhY2hlZE91dGxpbmV8fCh0Ll9jYWNoZWRPdXRsaW5lPXQuby5zcGxpdCgiICIpKTtmb3IodmFyIHY9MCx5PXAubGVuZ3RoO3Y8eTspc3dpdGNoKHBbdisrXSl7Y2FzZSAibSI6dmFyIHc9cFt2KytdKmsrcTt2YXIgeD1wW3YrK10qayt1O24ubW92ZVRvKHcseCk7YnJlYWs7Y2FzZSAibCI6dz1wW3YrK10qaytxO3g9cFt2KytdKmsrdTtuLmxpbmVUbyh3LHgpO2JyZWFrO2Nhc2UgInEiOnZhciBBPXBbdisrXSprK3E7dmFyIEI9cFt2KytdKmsrdTt2YXIgej1wW3YrK10qaytxOwp2YXIgQz1wW3YrK10qayt1O24ucXVhZHJhdGljQ3VydmVUbyh6LEMsQSxCKTticmVhaztjYXNlICJiIjpBPXBbdisrXSprK3EsQj1wW3YrK10qayt1LHo9cFt2KytdKmsrcSxDPXBbdisrXSprK3Usdz1wW3YrK10qaytxLHg9cFt2KytdKmsrdSxuLmJlemllckN1cnZlVG8oeixDLHcseCxBLEIpfX1rPXtvZmZzZXRYOnQuaGEqayxwYXRoOm59fWVsc2UgY29uc29sZS5lcnJvcignVEhSRUUuRm9udDogY2hhcmFjdGVyICInK24rJyIgZG9lcyBub3QgZXhpc3RzIGluIGZvbnQgZmFtaWx5ICcrcC5mYW1pbHlOYW1lKyIuIiksaz12b2lkIDA7Zys9ay5vZmZzZXRYO2EucHVzaChrLnBhdGgpfX1iPTA7Zm9yKGU9YS5sZW5ndGg7YjxlO2IrKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShjLGFbYl0udG9TaGFwZXMoKSk7cmV0dXJuIGN9fSk7d2cucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOndnLGxvYWQ6ZnVuY3Rpb24oYSwKYixjLGQpe3ZhciBlPXRoaXMsZj1uZXcgTmEodGhpcy5tYW5hZ2VyKTtmLnNldFBhdGgodGhpcy5wYXRoKTtmLmxvYWQoYSxmdW5jdGlvbihhKXt0cnl7dmFyIGM9SlNPTi5wYXJzZShhKX1jYXRjaChsKXtjb25zb2xlLndhcm4oIlRIUkVFLkZvbnRMb2FkZXI6IHR5cGVmYWNlLmpzIHN1cHBvcnQgaXMgYmVpbmcgZGVwcmVjYXRlZC4gVXNlIHR5cGVmYWNlLmpzb24gaW5zdGVhZC4iKSxjPUpTT04ucGFyc2UoYS5zdWJzdHJpbmcoNjUsYS5sZW5ndGgtMikpfWE9ZS5wYXJzZShjKTtiJiZiKGEpfSxjLGQpfSxwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IHZnKGEpfX0pO3ZhciBNZixCZz17Z2V0Q29udGV4dDpmdW5jdGlvbigpe3ZvaWQgMD09PU1mJiYoTWY9bmV3ICh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSk7cmV0dXJuIE1mfSxzZXRDb250ZXh0OmZ1bmN0aW9uKGEpe01mPWF9fTtuZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFYucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOm5mLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bmV3IE5hKHRoaXMubWFuYWdlcik7ZS5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIik7ZS5zZXRQYXRoKHRoaXMucGF0aCk7ZS5sb2FkKGEsZnVuY3Rpb24oYSl7YT1hLnNsaWNlKDApO0JnLmdldENvbnRleHQoKS5kZWNvZGVBdWRpb0RhdGEoYSxmdW5jdGlvbihhKXtiKGEpfSl9LGMsZCl9fSk7T2JqZWN0LmFzc2lnbihvZi5wcm90b3R5cGUse2lzU3BoZXJpY2FsSGFybW9uaWNzMzohMCxzZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7OT5iO2IrKyl0aGlzLmNvZWZmaWNpZW50c1tiXS5jb3B5KGFbYl0pO3JldHVybiB0aGlzfSx6ZXJvOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTA7OT5hO2ErKyl0aGlzLmNvZWZmaWNpZW50c1thXS5zZXQoMCwwLDApO3JldHVybiB0aGlzfSxnZXRBdDpmdW5jdGlvbihhLGIpe3ZhciBjPWEueCxkPWEueTthPWEuejt2YXIgZT10aGlzLmNvZWZmaWNpZW50cztiLmNvcHkoZVswXSkubXVsdGlwbHlTY2FsYXIoLjI4MjA5NSk7CmIuYWRkU2NhbGUoZVsxXSwuNDg4NjAzKmQpO2IuYWRkU2NhbGUoZVsyXSwuNDg4NjAzKmEpO2IuYWRkU2NhbGUoZVszXSwuNDg4NjAzKmMpO2IuYWRkU2NhbGUoZVs0XSwxLjA5MjU0OCpjKmQpO2IuYWRkU2NhbGUoZVs1XSwxLjA5MjU0OCpkKmEpO2IuYWRkU2NhbGUoZVs2XSwuMzE1MzkyKigzKmEqYS0xKSk7Yi5hZGRTY2FsZShlWzddLDEuMDkyNTQ4KmMqYSk7Yi5hZGRTY2FsZShlWzhdLC41NDYyNzQqKGMqYy1kKmQpKTtyZXR1cm4gYn0sZ2V0SXJyYWRpYW5jZUF0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS54LGQ9YS55O2E9YS56O3ZhciBlPXRoaXMuY29lZmZpY2llbnRzO2IuY29weShlWzBdKS5tdWx0aXBseVNjYWxhciguODg2MjI3KTtiLmFkZFNjYWxlKGVbMV0sMS4wMjMzMjgqZCk7Yi5hZGRTY2FsZShlWzJdLDEuMDIzMzI4KmEpO2IuYWRkU2NhbGUoZVszXSwxLjAyMzMyOCpjKTtiLmFkZFNjYWxlKGVbNF0sLjg1ODA4NipjKmQpO2IuYWRkU2NhbGUoZVs1XSwuODU4MDg2KgpkKmEpO2IuYWRkU2NhbGUoZVs2XSwuNzQzMTI1KmEqYS0uMjQ3NzA4KTtiLmFkZFNjYWxlKGVbN10sLjg1ODA4NipjKmEpO2IuYWRkU2NhbGUoZVs4XSwuNDI5MDQzKihjKmMtZCpkKSk7cmV0dXJuIGJ9LGFkZDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MDs5PmI7YisrKXRoaXMuY29lZmZpY2llbnRzW2JdLmFkZChhLmNvZWZmaWNpZW50c1tiXSk7cmV0dXJuIHRoaXN9LHNjYWxlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wOzk+YjtiKyspdGhpcy5jb2VmZmljaWVudHNbYl0ubXVsdGlwbHlTY2FsYXIoYSk7cmV0dXJuIHRoaXN9LGxlcnA6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDs5PmM7YysrKXRoaXMuY29lZmZpY2llbnRzW2NdLmxlcnAoYS5jb2VmZmljaWVudHNbY10sYik7cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXtmb3IodmFyIGI9MDs5PmI7YisrKWlmKCF0aGlzLmNvZWZmaWNpZW50c1tiXS5lcXVhbHMoYS5jb2VmZmljaWVudHNbYl0pKXJldHVybiExO3JldHVybiEwfSwKY29weTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zZXQoYS5jb2VmZmljaWVudHMpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sZnJvbUFycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9MCk7Zm9yKHZhciBjPXRoaXMuY29lZmZpY2llbnRzLGQ9MDs5PmQ7ZCsrKWNbZF0uZnJvbUFycmF5KGEsYiszKmQpO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWImJihiPTApO2Zvcih2YXIgYz10aGlzLmNvZWZmaWNpZW50cyxkPTA7OT5kO2QrKyljW2RdLnRvQXJyYXkoYSxiKzMqZCk7cmV0dXJuIGF9fSk7T2JqZWN0LmFzc2lnbihvZix7Z2V0QmFzaXNBdDpmdW5jdGlvbihhLGIpe3ZhciBjPWEueCxkPWEueTthPWEuejtiWzBdPS4yODIwOTU7YlsxXT0uNDg4NjAzKmQ7YlsyXT0uNDg4NjAzKmE7YlszXT0uNDg4NjAzKmM7Yls0XT0xLjA5MjU0OCpjKmQ7CmJbNV09MS4wOTI1NDgqZCphO2JbNl09LjMxNTM5MiooMyphKmEtMSk7Yls3XT0xLjA5MjU0OCpjKmE7Yls4XT0uNTQ2Mjc0KihjKmMtZCpkKX19KTtYYS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WGEsaXNMaWdodFByb2JlOiEwLGNvcHk6ZnVuY3Rpb24oYSl7VC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5zaC5jb3B5KGEuc2gpO3RoaXMuaW50ZW5zaXR5PWEuaW50ZW5zaXR5O3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oYSl7cmV0dXJuIFQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSl9fSk7eGcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShYYS5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp4Zyxpc0hlbWlzcGhlcmVMaWdodFByb2JlOiEwLGNvcHk6ZnVuY3Rpb24oYSl7WGEucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oYSl7cmV0dXJuIFhhLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLAphKX19KTt5Zy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFhhLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnlnLGlzQW1iaWVudExpZ2h0UHJvYmU6ITAsY29weTpmdW5jdGlvbihhKXtYYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbihhKXtyZXR1cm4gWGEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSl9fSk7dmFyIEZpPW5ldyBRLEdpPW5ldyBRO09iamVjdC5hc3NpZ24oYWkucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fY2FjaGU7aWYoYi5mb2N1cyE9PWEuZm9jdXN8fGIuZm92IT09YS5mb3Z8fGIuYXNwZWN0IT09YS5hc3BlY3QqdGhpcy5hc3BlY3R8fGIubmVhciE9PWEubmVhcnx8Yi5mYXIhPT1hLmZhcnx8Yi56b29tIT09YS56b29tfHxiLmV5ZVNlcCE9PXRoaXMuZXllU2VwKXtiLmZvY3VzPWEuZm9jdXM7Yi5mb3Y9YS5mb3Y7Yi5hc3BlY3Q9YS5hc3BlY3QqdGhpcy5hc3BlY3Q7CmIubmVhcj1hLm5lYXI7Yi5mYXI9YS5mYXI7Yi56b29tPWEuem9vbTtiLmV5ZVNlcD10aGlzLmV5ZVNlcDt2YXIgYz1hLnByb2plY3Rpb25NYXRyaXguY2xvbmUoKSxkPWIuZXllU2VwLzIsZT1kKmIubmVhci9iLmZvY3VzLGY9Yi5uZWFyKk1hdGgudGFuKFAuREVHMlJBRCpiLmZvdiouNSkvYi56b29tO0dpLmVsZW1lbnRzWzEyXT0tZDtGaS5lbGVtZW50c1sxMl09ZDtkPS1mKmIuYXNwZWN0K2U7dmFyIGc9ZipiLmFzcGVjdCtlO2MuZWxlbWVudHNbMF09MipiLm5lYXIvKGctZCk7Yy5lbGVtZW50c1s4XT0oZytkKS8oZy1kKTt0aGlzLmNhbWVyYUwucHJvamVjdGlvbk1hdHJpeC5jb3B5KGMpO2Q9LWYqYi5hc3BlY3QtZTtnPWYqYi5hc3BlY3QtZTtjLmVsZW1lbnRzWzBdPTIqYi5uZWFyLyhnLWQpO2MuZWxlbWVudHNbOF09KGcrZCkvKGctZCk7dGhpcy5jYW1lcmFSLnByb2plY3Rpb25NYXRyaXguY29weShjKX10aGlzLmNhbWVyYUwubWF0cml4V29ybGQuY29weShhLm1hdHJpeFdvcmxkKS5tdWx0aXBseShHaSk7CnRoaXMuY2FtZXJhUi5tYXRyaXhXb3JsZC5jb3B5KGEubWF0cml4V29ybGQpLm11bHRpcGx5KEZpKX19KTtPYmplY3QuYXNzaWduKHpnLnByb3RvdHlwZSx7c3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWU9KCJ1bmRlZmluZWQiPT09dHlwZW9mIHBlcmZvcm1hbmNlP0RhdGU6cGVyZm9ybWFuY2UpLm5vdygpO3RoaXMuZWxhcHNlZFRpbWU9MDt0aGlzLnJ1bm5pbmc9ITB9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmdldEVsYXBzZWRUaW1lKCk7dGhpcy5hdXRvU3RhcnQ9dGhpcy5ydW5uaW5nPSExfSxnZXRFbGFwc2VkVGltZTpmdW5jdGlvbigpe3RoaXMuZ2V0RGVsdGEoKTtyZXR1cm4gdGhpcy5lbGFwc2VkVGltZX0sZ2V0RGVsdGE6ZnVuY3Rpb24oKXt2YXIgYT0wO2lmKHRoaXMuYXV0b1N0YXJ0JiYhdGhpcy5ydW5uaW5nKXJldHVybiB0aGlzLnN0YXJ0KCksMDtpZih0aGlzLnJ1bm5pbmcpe3ZhciBiPSgidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZT8KRGF0ZTpwZXJmb3JtYW5jZSkubm93KCk7YT0oYi10aGlzLm9sZFRpbWUpLzFFMzt0aGlzLm9sZFRpbWU9Yjt0aGlzLmVsYXBzZWRUaW1lKz1hfXJldHVybiBhfX0pO3ZhciB0Yz1uZXcgbixIaT1uZXcgd2EsSGs9bmV3IG4sdWM9bmV3IG47QWcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkFnLGdldElucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2Fpbn0scmVtb3ZlRmlsdGVyOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuZmlsdGVyJiYodGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPW51bGwpO3JldHVybiB0aGlzfSxnZXRGaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXJ9LHNldEZpbHRlcjpmdW5jdGlvbihhKXtudWxsIT09CnRoaXMuZmlsdGVyPyh0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmZpbHRlciksdGhpcy5maWx0ZXIuZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pKTp0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pO3RoaXMuZmlsdGVyPWE7dGhpcy5nYWluLmNvbm5lY3QodGhpcy5maWx0ZXIpO3RoaXMuZmlsdGVyLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKTtyZXR1cm4gdGhpc30sZ2V0TWFzdGVyVm9sdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnZhbHVlfSxzZXRNYXN0ZXJWb2x1bWU6ZnVuY3Rpb24oYSl7dGhpcy5nYWluLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKGEsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSk7cmV0dXJuIHRoaXN9LHVwZGF0ZU1hdHJpeFdvcmxkOmZ1bmN0aW9uKGEpe0UucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkLmNhbGwodGhpcyxhKTthPXRoaXMuY29udGV4dC5saXN0ZW5lcjsKdmFyIGI9dGhpcy51cDt0aGlzLnRpbWVEZWx0YT10aGlzLl9jbG9jay5nZXREZWx0YSgpO3RoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKHRjLEhpLEhrKTt1Yy5zZXQoMCwwLC0xKS5hcHBseVF1YXRlcm5pb24oSGkpO2lmKGEucG9zaXRpb25YKXt2YXIgYz10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy50aW1lRGVsdGE7YS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodGMueCxjKTthLnBvc2l0aW9uWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh0Yy55LGMpO2EucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHRjLnosYyk7YS5mb3J3YXJkWC5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh1Yy54LGMpO2EuZm9yd2FyZFkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodWMueSxjKTthLmZvcndhcmRaLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHVjLnosYyk7YS51cFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoYi54LGMpO2EudXBZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGIueSwKYyk7YS51cFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoYi56LGMpfWVsc2UgYS5zZXRQb3NpdGlvbih0Yy54LHRjLnksdGMueiksYS5zZXRPcmllbnRhdGlvbih1Yy54LHVjLnksdWMueixiLngsYi55LGIueil9fSk7Y2QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmNkLGdldE91dHB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdhaW59LHNldE5vZGVTb3VyY2U6ZnVuY3Rpb24oYSl7dGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITE7dGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiO3RoaXMuc291cmNlPWE7dGhpcy5jb25uZWN0KCk7cmV0dXJuIHRoaXN9LHNldE1lZGlhRWxlbWVudFNvdXJjZTpmdW5jdGlvbihhKXt0aGlzLmhhc1BsYXliYWNrQ29udHJvbD0hMTt0aGlzLnNvdXJjZVR5cGU9Im1lZGlhTm9kZSI7dGhpcy5zb3VyY2U9dGhpcy5jb250ZXh0LmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShhKTt0aGlzLmNvbm5lY3QoKTsKcmV0dXJuIHRoaXN9LHNldE1lZGlhU3RyZWFtU291cmNlOmZ1bmN0aW9uKGEpe3RoaXMuaGFzUGxheWJhY2tDb250cm9sPSExO3RoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIjt0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoYSk7dGhpcy5jb25uZWN0KCk7cmV0dXJuIHRoaXN9LHNldEJ1ZmZlcjpmdW5jdGlvbihhKXt0aGlzLmJ1ZmZlcj1hO3RoaXMuc291cmNlVHlwZT0iYnVmZmVyIjt0aGlzLmF1dG9wbGF5JiZ0aGlzLnBsYXkoKTtyZXR1cm4gdGhpc30scGxheTpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT0wKTtpZighMD09PXRoaXMuaXNQbGF5aW5nKWNvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IEF1ZGlvIGlzIGFscmVhZHkgcGxheWluZy4iKTtlbHNlIGlmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTsKZWxzZSByZXR1cm4gdGhpcy5fc3RhcnRlZEF0PXRoaXMuY29udGV4dC5jdXJyZW50VGltZSthLGE9dGhpcy5jb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpLGEuYnVmZmVyPXRoaXMuYnVmZmVyLGEubG9vcD10aGlzLmxvb3AsYS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsYS5sb29wRW5kPXRoaXMubG9vcEVuZCxhLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksYS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcGF1c2VkQXQrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9YSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfSxwYXVzZTpmdW5jdGlvbigpe2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTsKZWxzZSByZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcGF1c2VkQXQ9KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQpKnRoaXMucGxheWJhY2tSYXRlLHRoaXMuc291cmNlLnN0b3AoKSx0aGlzLnNvdXJjZS5vbmVuZGVkPW51bGwsdGhpcy5pc1BsYXlpbmc9ITEpLHRoaXN9LHN0b3A6ZnVuY3Rpb24oKXtpZighMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKWNvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIik7ZWxzZSByZXR1cm4gdGhpcy5fcGF1c2VkQXQ9MCx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExLHRoaXN9LGNvbm5lY3Q6ZnVuY3Rpb24oKXtpZigwPHRoaXMuZmlsdGVycy5sZW5ndGgpe3RoaXMuc291cmNlLmNvbm5lY3QodGhpcy5maWx0ZXJzWzBdKTtmb3IodmFyIGE9MSxiPXRoaXMuZmlsdGVycy5sZW5ndGg7YTwKYjthKyspdGhpcy5maWx0ZXJzW2EtMV0uY29ubmVjdCh0aGlzLmZpbHRlcnNbYV0pO3RoaXMuZmlsdGVyc1t0aGlzLmZpbHRlcnMubGVuZ3RoLTFdLmNvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSl9ZWxzZSB0aGlzLnNvdXJjZS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpO3JldHVybiB0aGlzfSxkaXNjb25uZWN0OmZ1bmN0aW9uKCl7aWYoMDx0aGlzLmZpbHRlcnMubGVuZ3RoKXt0aGlzLnNvdXJjZS5kaXNjb25uZWN0KHRoaXMuZmlsdGVyc1swXSk7Zm9yKHZhciBhPTEsYj10aGlzLmZpbHRlcnMubGVuZ3RoO2E8YjthKyspdGhpcy5maWx0ZXJzW2EtMV0uZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbYV0pO3RoaXMuZmlsdGVyc1t0aGlzLmZpbHRlcnMubGVuZ3RoLTFdLmRpc2Nvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSl9ZWxzZSB0aGlzLnNvdXJjZS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpO3JldHVybiB0aGlzfSxnZXRGaWx0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyc30sCnNldEZpbHRlcnM6ZnVuY3Rpb24oYSl7YXx8KGE9W10pOyEwPT09dGhpcy5pc1BsYXlpbmc/KHRoaXMuZGlzY29ubmVjdCgpLHRoaXMuZmlsdGVycz1hLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9YTtyZXR1cm4gdGhpc30sc2V0RGV0dW5lOmZ1bmN0aW9uKGEpe3RoaXMuZGV0dW5lPWE7aWYodm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc30sZ2V0RGV0dW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGV0dW5lfSxnZXRGaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaWx0ZXJzKClbMF19LHNldEZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKGE/W2FdOltdKX0sc2V0UGxheWJhY2tSYXRlOmZ1bmN0aW9uKGEpe2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTsKZWxzZSByZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9YSwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9LGdldFBsYXliYWNrUmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBsYXliYWNrUmF0ZX0sb25FbmRlZDpmdW5jdGlvbigpe3RoaXMuaXNQbGF5aW5nPSExfSxnZXRMb29wOmZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLmhhc1BsYXliYWNrQ29udHJvbD8oY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKSwhMSk6dGhpcy5sb29wfSxzZXRMb29wOmZ1bmN0aW9uKGEpe2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtlbHNlIHJldHVybiB0aGlzLmxvb3A9CmEsITA9PT10aGlzLmlzUGxheWluZyYmKHRoaXMuc291cmNlLmxvb3A9dGhpcy5sb29wKSx0aGlzfSxzZXRMb29wU3RhcnQ6ZnVuY3Rpb24oYSl7dGhpcy5sb29wU3RhcnQ9YTtyZXR1cm4gdGhpc30sc2V0TG9vcEVuZDpmdW5jdGlvbihhKXt0aGlzLmxvb3BFbmQ9YTtyZXR1cm4gdGhpc30sZ2V0Vm9sdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnZhbHVlfSxzZXRWb2x1bWU6ZnVuY3Rpb24oYSl7dGhpcy5nYWluLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKGEsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSk7cmV0dXJuIHRoaXN9fSk7dmFyIHZjPW5ldyBuLElpPW5ldyB3YSxJaz1uZXcgbix3Yz1uZXcgbjtDZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGNkLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkNnLGdldE91dHB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbm5lcn0sZ2V0UmVmRGlzdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYW5uZXIucmVmRGlzdGFuY2V9LApzZXRSZWZEaXN0YW5jZTpmdW5jdGlvbihhKXt0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT1hO3JldHVybiB0aGlzfSxnZXRSb2xsb2ZmRmFjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3J9LHNldFJvbGxvZmZGYWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5wYW5uZXIucm9sbG9mZkZhY3Rvcj1hO3JldHVybiB0aGlzfSxnZXREaXN0YW5jZU1vZGVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFubmVyLmRpc3RhbmNlTW9kZWx9LHNldERpc3RhbmNlTW9kZWw6ZnVuY3Rpb24oYSl7dGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbD1hO3JldHVybiB0aGlzfSxnZXRNYXhEaXN0YW5jZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX0sc2V0TWF4RGlzdGFuY2U6ZnVuY3Rpb24oYSl7dGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9YTtyZXR1cm4gdGhpc30sc2V0RGlyZWN0aW9uYWxDb25lOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnBhbm5lci5jb25lSW5uZXJBbmdsZT0KYTt0aGlzLnBhbm5lci5jb25lT3V0ZXJBbmdsZT1iO3RoaXMucGFubmVyLmNvbmVPdXRlckdhaW49YztyZXR1cm4gdGhpc30sdXBkYXRlTWF0cml4V29ybGQ6ZnVuY3Rpb24oYSl7RS5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLGEpO2lmKCEwIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2x8fCExIT09dGhpcy5pc1BsYXlpbmcpaWYodGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodmMsSWksSWspLHdjLnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKElpKSxhPXRoaXMucGFubmVyLGEucG9zaXRpb25YKXt2YXIgYj10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7YS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodmMueCxiKTthLnBvc2l0aW9uWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh2Yy55LGIpO2EucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHZjLnosYik7YS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUod2MueCwKYik7YS5vcmllbnRhdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUod2MueSxiKTthLm9yaWVudGF0aW9uWi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh3Yy56LGIpfWVsc2UgYS5zZXRQb3NpdGlvbih2Yy54LHZjLnksdmMueiksYS5zZXRPcmllbnRhdGlvbih3Yy54LHdjLnksd2Mueil9fSk7T2JqZWN0LmFzc2lnbihEZy5wcm90b3R5cGUse2dldEZyZXF1ZW5jeURhdGE6ZnVuY3Rpb24oKXt0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZGF0YX0sZ2V0QXZlcmFnZUZyZXF1ZW5jeTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI9dGhpcy5nZXRGcmVxdWVuY3lEYXRhKCksYz0wO2M8Yi5sZW5ndGg7YysrKWErPWJbY107cmV0dXJuIGEvYi5sZW5ndGh9fSk7T2JqZWN0LmFzc2lnbihFZy5wcm90b3R5cGUse2FjY3VtdWxhdGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmJ1ZmZlcixkPXRoaXMudmFsdWVTaXplO2E9YSpkK2Q7CnZhciBlPXRoaXMuY3VtdWxhdGl2ZVdlaWdodDtpZigwPT09ZSl7Zm9yKGU9MDtlIT09ZDsrK2UpY1thK2VdPWNbZV07ZT1ifWVsc2UgZSs9Yix0aGlzLl9taXhCdWZmZXJSZWdpb24oYyxhLDAsYi9lLGQpO3RoaXMuY3VtdWxhdGl2ZVdlaWdodD1lfSxhcHBseTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZhbHVlU2l6ZSxjPXRoaXMuYnVmZmVyO2E9YSpiK2I7dmFyIGQ9dGhpcy5jdW11bGF0aXZlV2VpZ2h0LGU9dGhpcy5iaW5kaW5nO3RoaXMuY3VtdWxhdGl2ZVdlaWdodD0wOzE+ZCYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uKGMsYSwzKmIsMS1kLGIpO2Q9Yjtmb3IodmFyIGY9YitiO2QhPT1mOysrZClpZihjW2RdIT09Y1tkK2JdKXtlLnNldFZhbHVlKGMsYSk7YnJlYWt9fSxzYXZlT3JpZ2luYWxTdGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuYnVmZmVyLGI9dGhpcy52YWx1ZVNpemUsYz0zKmI7dGhpcy5iaW5kaW5nLmdldFZhbHVlKGEsYyk7Zm9yKHZhciBkPWI7ZCE9PWM7KytkKWFbZF09CmFbYytkJWJdO3RoaXMuY3VtdWxhdGl2ZVdlaWdodD0wfSxyZXN0b3JlT3JpZ2luYWxTdGF0ZTpmdW5jdGlvbigpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX0sX3NlbGVjdDpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKC41PD1kKWZvcihkPTA7ZCE9PWU7KytkKWFbYitkXT1hW2MrZF19LF9zbGVycDpmdW5jdGlvbihhLGIsYyxkKXt3YS5zbGVycEZsYXQoYSxiLGEsYixhLGMsZCl9LF9sZXJwOmZ1bmN0aW9uKGEsYixjLGQsZSl7Zm9yKHZhciBmPTEtZCxnPTA7ZyE9PWU7KytnKXt2YXIgaD1iK2c7YVtoXT1hW2hdKmYrYVtjK2ddKmR9fX0pO3ZhciBKaz0vW1xbXF1cLjpcL10vZyxLaz0iW14iKyJcXFtcXF1cXC46XFwvIi5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsTGs9LygoPzpXQytbXC86XSkqKS8uc291cmNlLnJlcGxhY2UoIldDIiwiW15cXFtcXF1cXC46XFwvXSIpLE1rPS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLEtrKSwKTms9Lyg/OlwuKFdDKykoPzpcWyguKylcXSk/KT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsIlteXFxbXFxdXFwuOlxcL10iKSxPaz0vXC4oV0MrKSg/OlxbKC4rKVxdKT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsIlteXFxbXFxdXFwuOlxcL10iKSxQaz1uZXcgUmVnRXhwKCJeIitMaytNaytOaytPaysiJCIpLFFrPVsibWF0ZXJpYWwiLCJtYXRlcmlhbHMiLCJib25lcyJdO09iamVjdC5hc3NpZ24oYmkucHJvdG90eXBlLHtnZXRWYWx1ZTpmdW5jdGlvbihhLGIpe3RoaXMuYmluZCgpO3ZhciBjPXRoaXMuX2JpbmRpbmdzW3RoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzX107dm9pZCAwIT09YyYmYy5nZXRWYWx1ZShhLGIpfSxzZXRWYWx1ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLl9iaW5kaW5ncyxkPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxlPWMubGVuZ3RoO2QhPT1lOysrZCljW2RdLnNldFZhbHVlKGEsYil9LGJpbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIGE9CnRoaXMuX2JpbmRpbmdzLGI9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGM9YS5sZW5ndGg7YiE9PWM7KytiKWFbYl0uYmluZCgpfSx1bmJpbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5fYmluZGluZ3MsYj10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sYz1hLmxlbmd0aDtiIT09YzsrK2IpYVtiXS51bmJpbmQoKX19KTtPYmplY3QuYXNzaWduKHlhLHtDb21wb3NpdGU6YmksY3JlYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYSYmYS5pc0FuaW1hdGlvbk9iamVjdEdyb3VwP25ldyB5YS5Db21wb3NpdGUoYSxiLGMpOm5ldyB5YShhLGIsYyl9LHNhbml0aXplTm9kZU5hbWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UoSmssIiIpfSxwYXJzZVRyYWNrTmFtZTpmdW5jdGlvbihhKXt2YXIgYj1Qay5leGVjKGEpO2lmKCFiKXRocm93IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IENhbm5vdCBwYXJzZSB0cmFja05hbWU6ICIrCmEpO2I9e25vZGVOYW1lOmJbMl0sb2JqZWN0TmFtZTpiWzNdLG9iamVjdEluZGV4OmJbNF0scHJvcGVydHlOYW1lOmJbNV0scHJvcGVydHlJbmRleDpiWzZdfTt2YXIgYz1iLm5vZGVOYW1lJiZiLm5vZGVOYW1lLmxhc3RJbmRleE9mKCIuIik7aWYodm9pZCAwIT09YyYmLTEhPT1jKXt2YXIgZD1iLm5vZGVOYW1lLnN1YnN0cmluZyhjKzEpOy0xIT09UWsuaW5kZXhPZihkKSYmKGIubm9kZU5hbWU9Yi5ub2RlTmFtZS5zdWJzdHJpbmcoMCxjKSxiLm9iamVjdE5hbWU9ZCl9aWYobnVsbD09PWIucHJvcGVydHlOYW1lfHwwPT09Yi5wcm9wZXJ0eU5hbWUubGVuZ3RoKXRocm93IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IGNhbiBub3QgcGFyc2UgcHJvcGVydHlOYW1lIGZyb20gdHJhY2tOYW1lOiAiK2EpO3JldHVybiBifSxmaW5kTm9kZTpmdW5jdGlvbihhLGIpe2lmKCFifHwiIj09PWJ8fCJyb290Ij09PWJ8fCIuIj09PWJ8fC0xPT09Ynx8Yj09PWEubmFtZXx8Yj09PWEudXVpZClyZXR1cm4gYTsKaWYoYS5za2VsZXRvbil7dmFyIGM9YS5za2VsZXRvbi5nZXRCb25lQnlOYW1lKGIpO2lmKHZvaWQgMCE9PWMpcmV0dXJuIGN9aWYoYS5jaGlsZHJlbil7dmFyIGQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBlPWFbY107aWYoZS5uYW1lPT09Ynx8ZS51dWlkPT09Ynx8KGU9ZChlLmNoaWxkcmVuKSkpcmV0dXJuIGV9cmV0dXJuIG51bGx9O2lmKGE9ZChhLmNoaWxkcmVuKSlyZXR1cm4gYX1yZXR1cm4gbnVsbH19KTtPYmplY3QuYXNzaWduKHlhLnByb3RvdHlwZSx7X2dldFZhbHVlX3VuYXZhaWxhYmxlOmZ1bmN0aW9uKCl7fSxfc2V0VmFsdWVfdW5hdmFpbGFibGU6ZnVuY3Rpb24oKXt9LEJpbmRpbmdUeXBlOntEaXJlY3Q6MCxFbnRpcmVBcnJheToxLEFycmF5RWxlbWVudDoyLEhhc0Zyb21Ub0FycmF5OjN9LFZlcnNpb25pbmc6e05vbmU6MCxOZWVkc1VwZGF0ZToxLE1hdHJpeFdvcmxkTmVlZHNVcGRhdGU6Mn0sR2V0dGVyQnlCaW5kaW5nVHlwZTpbZnVuY3Rpb24oYSwKYil7YVtiXT10aGlzLm5vZGVbdGhpcy5wcm9wZXJ0eU5hbWVdfSxmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLnJlc29sdmVkUHJvcGVydHksZD0wLGU9Yy5sZW5ndGg7ZCE9PWU7KytkKWFbYisrXT1jW2RdfSxmdW5jdGlvbihhLGIpe2FbYl09dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF19LGZ1bmN0aW9uKGEsYil7dGhpcy5yZXNvbHZlZFByb3BlcnR5LnRvQXJyYXkoYSxiKX1dLFNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nOltbZnVuY3Rpb24oYSxiKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09YVtiXX0sZnVuY3Rpb24oYSxiKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09YVtiXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH0sZnVuY3Rpb24oYSxiKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09YVtiXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPQohMH1dLFtmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLnJlc29sdmVkUHJvcGVydHksZD0wLGU9Yy5sZW5ndGg7ZCE9PWU7KytkKWNbZF09YVtiKytdfSxmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLnJlc29sdmVkUHJvcGVydHksZD0wLGU9Yy5sZW5ndGg7ZCE9PWU7KytkKWNbZF09YVtiKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfSxmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLnJlc29sdmVkUHJvcGVydHksZD0wLGU9Yy5sZW5ndGg7ZCE9PWU7KytkKWNbZF09YVtiKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XSxbZnVuY3Rpb24oYSxiKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT1hW2JdfSxmdW5jdGlvbihhLGIpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPWFbYl07dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9LGZ1bmN0aW9uKGEsCmIpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPWFbYl07dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1dLFtmdW5jdGlvbihhLGIpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkoYSxiKX0sZnVuY3Rpb24oYSxiKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KGEsYik7dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9LGZ1bmN0aW9uKGEsYil7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheShhLGIpO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XV0sZ2V0VmFsdWU6ZnVuY3Rpb24oYSxiKXt0aGlzLmJpbmQoKTt0aGlzLmdldFZhbHVlKGEsYil9LHNldFZhbHVlOmZ1bmN0aW9uKGEsYil7dGhpcy5iaW5kKCk7dGhpcy5zZXRWYWx1ZShhLGIpfSxiaW5kOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ub2RlLGI9dGhpcy5wYXJzZWRQYXRoLGM9Yi5vYmplY3ROYW1lLApkPWIucHJvcGVydHlOYW1lLGU9Yi5wcm9wZXJ0eUluZGV4O2F8fCh0aGlzLm5vZGU9YT15YS5maW5kTm9kZSh0aGlzLnJvb3ROb2RlLGIubm9kZU5hbWUpfHx0aGlzLnJvb3ROb2RlKTt0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYXZhaWxhYmxlO3RoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5hdmFpbGFibGU7aWYoYSl7aWYoYyl7dmFyIGY9Yi5vYmplY3RJbmRleDtzd2l0Y2goYyl7Y2FzZSAibWF0ZXJpYWxzIjppZighYS5tYXRlcmlhbCl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWwuIix0aGlzKTtyZXR1cm59aWYoIWEubWF0ZXJpYWwubWF0ZXJpYWxzKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsCnRoaXMpO3JldHVybn1hPWEubWF0ZXJpYWwubWF0ZXJpYWxzO2JyZWFrO2Nhc2UgImJvbmVzIjppZighYS5za2VsZXRvbil7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gYm9uZXMgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgc2tlbGV0b24uIix0aGlzKTtyZXR1cm59YT1hLnNrZWxldG9uLmJvbmVzO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXS5uYW1lPT09Zil7Zj1jO2JyZWFrfWJyZWFrO2RlZmF1bHQ6aWYodm9pZCAwPT09YVtjXSl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gb2JqZWN0TmFtZSBvZiBub2RlIHVuZGVmaW5lZC4iLHRoaXMpO3JldHVybn1hPWFbY119aWYodm9pZCAwIT09Zil7aWYodm9pZCAwPT09YVtmXSl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gYmluZCB0byBvYmplY3RJbmRleCBvZiBvYmplY3ROYW1lLCBidXQgaXMgdW5kZWZpbmVkLiIsCnRoaXMsYSk7cmV0dXJufWE9YVtmXX19Zj1hW2RdO2lmKHZvaWQgMD09PWYpY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIHByb3BlcnR5IGZvciB0cmFjazogIitiLm5vZGVOYW1lKyIuIitkKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iLGEpO2Vsc2V7Yj10aGlzLlZlcnNpb25pbmcuTm9uZTt0aGlzLnRhcmdldE9iamVjdD1hO3ZvaWQgMCE9PWEubmVlZHNVcGRhdGU/Yj10aGlzLlZlcnNpb25pbmcuTmVlZHNVcGRhdGU6dm9pZCAwIT09YS5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlJiYoYj10aGlzLlZlcnNpb25pbmcuTWF0cml4V29ybGROZWVkc1VwZGF0ZSk7Yz10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZih2b2lkIDAhPT1lKXtpZigibW9ycGhUYXJnZXRJbmZsdWVuY2VzIj09PWQpe2lmKCFhLmdlb21ldHJ5KXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS4iLAp0aGlzKTtyZXR1cm59aWYoYS5nZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5KXtpZighYS5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy4iLHRoaXMpO3JldHVybn1mb3IoYz0wO2M8dGhpcy5ub2RlLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg7YysrKWlmKGEuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uW2NdLm5hbWU9PT1lKXtlPWM7YnJlYWt9fWVsc2V7aWYoIWEuZ2VvbWV0cnkubW9ycGhUYXJnZXRzKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS5tb3JwaFRhcmdldHMuIiwKdGhpcyk7cmV0dXJufWZvcihjPTA7Yzx0aGlzLm5vZGUuZ2VvbWV0cnkubW9ycGhUYXJnZXRzLmxlbmd0aDtjKyspaWYoYS5nZW9tZXRyeS5tb3JwaFRhcmdldHNbY10ubmFtZT09PWUpe2U9YzticmVha319fWM9dGhpcy5CaW5kaW5nVHlwZS5BcnJheUVsZW1lbnQ7dGhpcy5yZXNvbHZlZFByb3BlcnR5PWY7dGhpcy5wcm9wZXJ0eUluZGV4PWV9ZWxzZSB2b2lkIDAhPT1mLmZyb21BcnJheSYmdm9pZCAwIT09Zi50b0FycmF5PyhjPXRoaXMuQmluZGluZ1R5cGUuSGFzRnJvbVRvQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PWYpOkFycmF5LmlzQXJyYXkoZik/KGM9dGhpcy5CaW5kaW5nVHlwZS5FbnRpcmVBcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9Zik6dGhpcy5wcm9wZXJ0eU5hbWU9ZDt0aGlzLmdldFZhbHVlPXRoaXMuR2V0dGVyQnlCaW5kaW5nVHlwZVtjXTt0aGlzLnNldFZhbHVlPXRoaXMuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmdbY11bYl19fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIG5vZGUgZm9yIHRyYWNrOiAiKwp0aGlzLnBhdGgrIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIpfSx1bmJpbmQ6ZnVuY3Rpb24oKXt0aGlzLm5vZGU9bnVsbDt0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQ7dGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfX0pO09iamVjdC5hc3NpZ24oeWEucHJvdG90eXBlLHtfZ2V0VmFsdWVfdW5ib3VuZDp5YS5wcm90b3R5cGUuZ2V0VmFsdWUsX3NldFZhbHVlX3VuYm91bmQ6eWEucHJvdG90eXBlLnNldFZhbHVlfSk7T2JqZWN0LmFzc2lnbihjaS5wcm90b3R5cGUse2lzQW5pbWF0aW9uT2JqZWN0R3JvdXA6ITAsYWRkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuX29iamVjdHMsYj1hLmxlbmd0aCxjPXRoaXMubkNhY2hlZE9iamVjdHNfLGQ9dGhpcy5faW5kaWNlc0J5VVVJRCxlPXRoaXMuX3BhdGhzLGY9dGhpcy5fcGFyc2VkUGF0aHMsZz10aGlzLl9iaW5kaW5ncyxoPWcubGVuZ3RoLGs9dm9pZCAwLG09MCxuPWFyZ3VtZW50cy5sZW5ndGg7bSE9PQpuOysrbSl7dmFyIHE9YXJndW1lbnRzW21dLHU9cS51dWlkLHA9ZFt1XTtpZih2b2lkIDA9PT1wKXtwPWIrKztkW3VdPXA7YS5wdXNoKHEpO3U9MDtmb3IodmFyIHQ9aDt1IT09dDsrK3UpZ1t1XS5wdXNoKG5ldyB5YShxLGVbdV0sZlt1XSkpfWVsc2UgaWYocDxjKXtrPWFbcF07dmFyIHY9LS1jO3Q9YVt2XTtkW3QudXVpZF09cDthW3BdPXQ7ZFt1XT12O2Fbdl09cTt1PTA7Zm9yKHQ9aDt1IT09dDsrK3Upe3ZhciB5PWdbdV0sdz15W3BdO3lbcF09eVt2XTt2b2lkIDA9PT13JiYodz1uZXcgeWEocSxlW3VdLGZbdV0pKTt5W3ZdPXd9fWVsc2UgYVtwXSE9PWsmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgZGV0ZWN0ZWQuIENsZWFuIHRoZSBjYWNoZXMgb3IgcmVjcmVhdGUgeW91ciBpbmZyYXN0cnVjdHVyZSB3aGVuIHJlbG9hZGluZyBzY2VuZXMuIil9dGhpcy5uQ2FjaGVkT2JqZWN0c189CmN9LHJlbW92ZTpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLl9vYmplY3RzLGI9dGhpcy5uQ2FjaGVkT2JqZWN0c18sYz10aGlzLl9pbmRpY2VzQnlVVUlELGQ9dGhpcy5fYmluZGluZ3MsZT1kLmxlbmd0aCxmPTAsZz1hcmd1bWVudHMubGVuZ3RoO2YhPT1nOysrZil7dmFyIGg9YXJndW1lbnRzW2ZdLGs9aC51dWlkLG09Y1trXTtpZih2b2lkIDAhPT1tJiZtPj1iKXt2YXIgbj1iKysscT1hW25dO2NbcS51dWlkXT1tO2FbbV09cTtjW2tdPW47YVtuXT1oO2g9MDtmb3Ioaz1lO2ghPT1rOysraCl7cT1kW2hdO3ZhciB1PXFbbV07cVttXT1xW25dO3Fbbl09dX19fXRoaXMubkNhY2hlZE9iamVjdHNfPWJ9LHVuY2FjaGU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5fb2JqZWN0cyxiPWEubGVuZ3RoLGM9dGhpcy5uQ2FjaGVkT2JqZWN0c18sZD10aGlzLl9pbmRpY2VzQnlVVUlELGU9dGhpcy5fYmluZGluZ3MsZj1lLmxlbmd0aCxnPTAsaD1hcmd1bWVudHMubGVuZ3RoO2chPT1oOysrZyl7dmFyIGs9CmFyZ3VtZW50c1tnXS51dWlkLG09ZFtrXTtpZih2b2lkIDAhPT1tKWlmKGRlbGV0ZSBkW2tdLG08Yyl7az0tLWM7dmFyIG49YVtrXSxxPS0tYix1PWFbcV07ZFtuLnV1aWRdPW07YVttXT1uO2RbdS51dWlkXT1rO2Fba109dTthLnBvcCgpO249MDtmb3IodT1mO24hPT11Oysrbil7dmFyIHA9ZVtuXSx0PXBbcV07cFttXT1wW2tdO3Bba109dDtwLnBvcCgpfX1lbHNlIGZvcihxPS0tYix1PWFbcV0sZFt1LnV1aWRdPW0sYVttXT11LGEucG9wKCksbj0wLHU9ZjtuIT09dTsrK24pcD1lW25dLHBbbV09cFtxXSxwLnBvcCgpfXRoaXMubkNhY2hlZE9iamVjdHNfPWN9LHN1YnNjcmliZV86ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsZD1jW2FdLGU9dGhpcy5fYmluZGluZ3M7aWYodm9pZCAwIT09ZClyZXR1cm4gZVtkXTt2YXIgZj10aGlzLl9wYXRocyxnPXRoaXMuX3BhcnNlZFBhdGhzLGg9dGhpcy5fb2JqZWN0cyxrPXRoaXMubkNhY2hlZE9iamVjdHNfLAptPUFycmF5KGgubGVuZ3RoKTtkPWUubGVuZ3RoO2NbYV09ZDtmLnB1c2goYSk7Zy5wdXNoKGIpO2UucHVzaChtKTtjPWs7Zm9yKGQ9aC5sZW5ndGg7YyE9PWQ7KytjKW1bY109bmV3IHlhKGhbY10sYSxiKTtyZXR1cm4gbX0sdW5zdWJzY3JpYmVfOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxjPWJbYV07aWYodm9pZCAwIT09Yyl7dmFyIGQ9dGhpcy5fcGF0aHMsZT10aGlzLl9wYXJzZWRQYXRocyxmPXRoaXMuX2JpbmRpbmdzLGc9Zi5sZW5ndGgtMSxoPWZbZ107YlthW2ddXT1jO2ZbY109aDtmLnBvcCgpO2VbY109ZVtnXTtlLnBvcCgpO2RbY109ZFtnXTtkLnBvcCgpfX19KTtPYmplY3QuYXNzaWduKGRpLnByb3RvdHlwZSx7cGxheTpmdW5jdGlvbigpe3RoaXMuX21peGVyLl9hY3RpdmF0ZUFjdGlvbih0aGlzKTtyZXR1cm4gdGhpc30sc3RvcDpmdW5jdGlvbigpe3RoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpO3JldHVybiB0aGlzLnJlc2V0KCl9LApyZXNldDpmdW5jdGlvbigpe3RoaXMucGF1c2VkPSExO3RoaXMuZW5hYmxlZD0hMDt0aGlzLnRpbWU9MDt0aGlzLl9sb29wQ291bnQ9LTE7dGhpcy5fc3RhcnRUaW1lPW51bGw7cmV0dXJuIHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9LGlzUnVubmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmMCE9PXRoaXMudGltZVNjYWxlJiZudWxsPT09dGhpcy5fc3RhcnRUaW1lJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9LGlzU2NoZWR1bGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX0sc3RhcnRBdDpmdW5jdGlvbihhKXt0aGlzLl9zdGFydFRpbWU9YTtyZXR1cm4gdGhpc30sc2V0TG9vcDpmdW5jdGlvbihhLGIpe3RoaXMubG9vcD1hO3RoaXMucmVwZXRpdGlvbnM9YjtyZXR1cm4gdGhpc30sc2V0RWZmZWN0aXZlV2VpZ2h0OmZ1bmN0aW9uKGEpe3RoaXMud2VpZ2h0PWE7CnRoaXMuX2VmZmVjdGl2ZVdlaWdodD10aGlzLmVuYWJsZWQ/YTowO3JldHVybiB0aGlzLnN0b3BGYWRpbmcoKX0sZ2V0RWZmZWN0aXZlV2VpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH0sZmFkZUluOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyhhLDAsMSl9LGZhZGVPdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKGEsMSwwKX0sY3Jvc3NGYWRlRnJvbTpmdW5jdGlvbihhLGIsYyl7YS5mYWRlT3V0KGIpO3RoaXMuZmFkZUluKGIpO2lmKGMpe2M9dGhpcy5fY2xpcC5kdXJhdGlvbjt2YXIgZD1hLl9jbGlwLmR1cmF0aW9uLGU9Yy9kO2Eud2FycCgxLGQvYyxiKTt0aGlzLndhcnAoZSwxLGIpfXJldHVybiB0aGlzfSxjcm9zc0ZhZGVUbzpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuY3Jvc3NGYWRlRnJvbSh0aGlzLGIsYyl9LHN0b3BGYWRpbmc6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDsKbnVsbCE9PWEmJih0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudChhKSk7cmV0dXJuIHRoaXN9LHNldEVmZmVjdGl2ZVRpbWVTY2FsZTpmdW5jdGlvbihhKXt0aGlzLnRpbWVTY2FsZT1hO3RoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOmE7cmV0dXJuIHRoaXMuc3RvcFdhcnBpbmcoKX0sZ2V0RWZmZWN0aXZlVGltZVNjYWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZX0sc2V0RHVyYXRpb246ZnVuY3Rpb24oYSl7dGhpcy50aW1lU2NhbGU9dGhpcy5fY2xpcC5kdXJhdGlvbi9hO3JldHVybiB0aGlzLnN0b3BXYXJwaW5nKCl9LHN5bmNXaXRoOmZ1bmN0aW9uKGEpe3RoaXMudGltZT1hLnRpbWU7dGhpcy50aW1lU2NhbGU9YS50aW1lU2NhbGU7cmV0dXJuIHRoaXMuc3RvcFdhcnBpbmcoKX0saGFsdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy53YXJwKHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZSwKMCxhKX0sd2FycDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fbWl4ZXIsZT1kLnRpbWUsZj10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudCxnPXRoaXMudGltZVNjYWxlO251bGw9PT1mJiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9Zj1kLl9sZW5kQ29udHJvbEludGVycG9sYW50KCkpO2Q9Zi5wYXJhbWV0ZXJQb3NpdGlvbnM7Zj1mLnNhbXBsZVZhbHVlcztkWzBdPWU7ZFsxXT1lK2M7ZlswXT1hL2c7ZlsxXT1iL2c7cmV0dXJuIHRoaXN9LHN0b3BXYXJwaW5nOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbCE9PWEmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudChhKSk7cmV0dXJuIHRoaXN9LGdldE1peGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21peGVyfSxnZXRDbGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsaXB9LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHwKdGhpcy5fbWl4ZXIuX3Jvb3R9LF91cGRhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYodGhpcy5lbmFibGVkKXt2YXIgZT10aGlzLl9zdGFydFRpbWU7aWYobnVsbCE9PWUpe2I9KGEtZSkqYztpZigwPmJ8fDA9PT1jKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbDtiKj1jfWIqPXRoaXMuX3VwZGF0ZVRpbWVTY2FsZShhKTtjPXRoaXMuX3VwZGF0ZVRpbWUoYik7YT10aGlzLl91cGRhdGVXZWlnaHQoYSk7aWYoMDxhKXtiPXRoaXMuX2ludGVycG9sYW50cztlPXRoaXMuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKHZhciBmPTAsZz1iLmxlbmd0aDtmIT09ZzsrK2YpYltmXS5ldmFsdWF0ZShjKSxlW2ZdLmFjY3VtdWxhdGUoZCxhKX19ZWxzZSB0aGlzLl91cGRhdGVXZWlnaHQoYSl9LF91cGRhdGVXZWlnaHQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtpZih0aGlzLmVuYWJsZWQpe2I9dGhpcy53ZWlnaHQ7dmFyIGM9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7aWYobnVsbCE9PWMpe3ZhciBkPWMuZXZhbHVhdGUoYSlbMF07CmIqPWQ7YT5jLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcEZhZGluZygpLDA9PT1kJiYodGhpcy5lbmFibGVkPSExKSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9Yn0sX3VwZGF0ZVRpbWVTY2FsZTpmdW5jdGlvbihhKXt2YXIgYj0wO2lmKCF0aGlzLnBhdXNlZCl7Yj10aGlzLnRpbWVTY2FsZTt2YXIgYz10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtpZihudWxsIT09Yyl7dmFyIGQ9Yy5ldmFsdWF0ZShhKVswXTtiKj1kO2E+Yy5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWI/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9Yil9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9Yn0sX3VwZGF0ZVRpbWU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50aW1lK2EsYz10aGlzLl9jbGlwLmR1cmF0aW9uLGQ9dGhpcy5sb29wLGU9dGhpcy5fbG9vcENvdW50LGY9MjIwMj09PWQ7aWYoMD09PWEpcmV0dXJuLTE9PT0KZT9iOmYmJjE9PT0oZSYxKT9jLWI6YjtpZigyMjAwPT09ZClhOntpZigtMT09PWUmJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSksYj49YyliPWM7ZWxzZSBpZigwPmIpYj0wO2Vsc2V7dGhpcy50aW1lPWI7YnJlYWsgYX10aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMTt0aGlzLnRpbWU9Yjt0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOjA+YT8tMToxfSl9ZWxzZXstMT09PWUmJigwPD1hPyhlPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxmKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxmKSk7aWYoYj49Y3x8MD5iKXtkPU1hdGguZmxvb3IoYi9jKTtiLT1jKmQ7ZSs9TWF0aC5hYnMoZCk7dmFyIGc9dGhpcy5yZXBldGl0aW9ucy1lOzA+PWc/KHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/CnRoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSx0aGlzLnRpbWU9Yj0wPGE/YzowLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246MDxhPzE6LTF9KSk6KDE9PT1nPyhhPTA+YSx0aGlzLl9zZXRFbmRpbmdzKGEsIWEsZikpOnRoaXMuX3NldEVuZGluZ3MoITEsITEsZiksdGhpcy5fbG9vcENvdW50PWUsdGhpcy50aW1lPWIsdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOmR9KSl9ZWxzZSB0aGlzLnRpbWU9YjtpZihmJiYxPT09KGUmMSkpcmV0dXJuIGMtYn1yZXR1cm4gYn0sX3NldEVuZGluZ3M6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7Yz8oZC5lbmRpbmdTdGFydD0yNDAxLGQuZW5kaW5nRW5kPTI0MDEpOihkLmVuZGluZ1N0YXJ0PWE/dGhpcy56ZXJvU2xvcGVBdFN0YXJ0PzI0MDE6MjQwMDoyNDAyLGQuZW5kaW5nRW5kPQpiP3RoaXMuemVyb1Nsb3BlQXRFbmQ/MjQwMToyNDAwOjI0MDIpfSxfc2NoZWR1bGVGYWRpbmc6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX21peGVyLGU9ZC50aW1lLGY9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7bnVsbD09PWYmJih0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1mPWQuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSk7ZD1mLnBhcmFtZXRlclBvc2l0aW9ucztmPWYuc2FtcGxlVmFsdWVzO2RbMF09ZTtmWzBdPWI7ZFsxXT1lK2E7ZlsxXT1jO3JldHVybiB0aGlzfX0pO0ZnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQWEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6RmcsX2JpbmRBY3Rpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QsZD1hLl9jbGlwLnRyYWNrcyxlPWQubGVuZ3RoLGY9YS5fcHJvcGVydHlCaW5kaW5nczthPWEuX2ludGVycG9sYW50czt2YXIgZz1jLnV1aWQsaD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsCms9aFtnXTt2b2lkIDA9PT1rJiYoaz17fSxoW2ddPWspO2ZvcihoPTA7aCE9PWU7KytoKXt2YXIgbT1kW2hdLG49bS5uYW1lLHE9a1tuXTtpZih2b2lkIDA9PT1xKXtxPWZbaF07aWYodm9pZCAwIT09cSl7bnVsbD09PXEuX2NhY2hlSW5kZXgmJigrK3EucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKHEsZyxuKSk7Y29udGludWV9cT1uZXcgRWcoeWEuY3JlYXRlKGMsbixiJiZiLl9wcm9wZXJ0eUJpbmRpbmdzW2hdLmJpbmRpbmcucGFyc2VkUGF0aCksbS5WYWx1ZVR5cGVOYW1lLG0uZ2V0VmFsdWVTaXplKCkpOysrcS5yZWZlcmVuY2VDb3VudDt0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcocSxnLG4pfWZbaF09cTthW2hdLnJlc3VsdEJ1ZmZlcj1xLmJ1ZmZlcn19LF9hY3RpdmF0ZUFjdGlvbjpmdW5jdGlvbihhKXtpZighdGhpcy5faXNBY3RpdmVBY3Rpb24oYSkpe2lmKG51bGw9PT1hLl9jYWNoZUluZGV4KXt2YXIgYj0oYS5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLApjPWEuX2NsaXAudXVpZCxkPXRoaXMuX2FjdGlvbnNCeUNsaXBbY107dGhpcy5fYmluZEFjdGlvbihhLGQmJmQua25vd25BY3Rpb25zWzBdKTt0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbihhLGMsYil9Yj1hLl9wcm9wZXJ0eUJpbmRpbmdzO2M9MDtmb3IoZD1iLmxlbmd0aDtjIT09ZDsrK2Mpe3ZhciBlPWJbY107MD09PWUudXNlQ291bnQrKyYmKHRoaXMuX2xlbmRCaW5kaW5nKGUpLGUuc2F2ZU9yaWdpbmFsU3RhdGUoKSl9dGhpcy5fbGVuZEFjdGlvbihhKX19LF9kZWFjdGl2YXRlQWN0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKGEpKXtmb3IodmFyIGI9YS5fcHJvcGVydHlCaW5kaW5ncyxjPTAsZD1iLmxlbmd0aDtjIT09ZDsrK2Mpe3ZhciBlPWJbY107MD09PS0tZS51c2VDb3VudCYmKGUucmVzdG9yZU9yaWdpbmFsU3RhdGUoKSx0aGlzLl90YWtlQmFja0JpbmRpbmcoZSkpfXRoaXMuX3Rha2VCYWNrQWN0aW9uKGEpfX0sX2luaXRNZW1vcnlNYW5hZ2VyOmZ1bmN0aW9uKCl7dGhpcy5fYWN0aW9ucz0KW107dGhpcy5fbkFjdGl2ZUFjdGlvbnM9MDt0aGlzLl9hY3Rpb25zQnlDbGlwPXt9O3RoaXMuX2JpbmRpbmdzPVtdO3RoaXMuX25BY3RpdmVCaW5kaW5ncz0wO3RoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZT17fTt0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzPVtdO3RoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzPTA7dmFyIGE9dGhpczt0aGlzLnN0YXRzPXthY3Rpb25zOntnZXQgdG90YWwoKXtyZXR1cm4gYS5fYWN0aW9ucy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiBhLl9uQWN0aXZlQWN0aW9uc319LGJpbmRpbmdzOntnZXQgdG90YWwoKXtyZXR1cm4gYS5fYmluZGluZ3MubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gYS5fbkFjdGl2ZUJpbmRpbmdzfX0sY29udHJvbEludGVycG9sYW50czp7Z2V0IHRvdGFsKCl7cmV0dXJuIGEuX2NvbnRyb2xJbnRlcnBvbGFudHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gYS5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHN9fX19LApfaXNBY3RpdmVBY3Rpb246ZnVuY3Rpb24oYSl7YT1hLl9jYWNoZUluZGV4O3JldHVybiBudWxsIT09YSYmYTx0aGlzLl9uQWN0aXZlQWN0aW9uc30sX2FkZEluYWN0aXZlQWN0aW9uOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLl9hY3Rpb25zLGU9dGhpcy5fYWN0aW9uc0J5Q2xpcCxmPWVbYl07dm9pZCAwPT09Zj8oZj17a25vd25BY3Rpb25zOlthXSxhY3Rpb25CeVJvb3Q6e319LGEuX2J5Q2xpcENhY2hlSW5kZXg9MCxlW2JdPWYpOihiPWYua25vd25BY3Rpb25zLGEuX2J5Q2xpcENhY2hlSW5kZXg9Yi5sZW5ndGgsYi5wdXNoKGEpKTthLl9jYWNoZUluZGV4PWQubGVuZ3RoO2QucHVzaChhKTtmLmFjdGlvbkJ5Um9vdFtjXT1hfSxfcmVtb3ZlSW5hY3RpdmVBY3Rpb246ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fYWN0aW9ucyxjPWJbYi5sZW5ndGgtMV0sZD1hLl9jYWNoZUluZGV4O2MuX2NhY2hlSW5kZXg9ZDtiW2RdPWM7Yi5wb3AoKTthLl9jYWNoZUluZGV4PW51bGw7Yj1hLl9jbGlwLnV1aWQ7CmM9dGhpcy5fYWN0aW9uc0J5Q2xpcDtkPWNbYl07dmFyIGU9ZC5rbm93bkFjdGlvbnMsZj1lW2UubGVuZ3RoLTFdLGc9YS5fYnlDbGlwQ2FjaGVJbmRleDtmLl9ieUNsaXBDYWNoZUluZGV4PWc7ZVtnXT1mO2UucG9wKCk7YS5fYnlDbGlwQ2FjaGVJbmRleD1udWxsO2RlbGV0ZSBkLmFjdGlvbkJ5Um9vdFsoYS5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkXTswPT09ZS5sZW5ndGgmJmRlbGV0ZSBjW2JdO3RoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oYSl9LF9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uOmZ1bmN0aW9uKGEpe2E9YS5fcHJvcGVydHlCaW5kaW5ncztmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2IhPT1jOysrYil7dmFyIGQ9YVtiXTswPT09LS1kLnJlZmVyZW5jZUNvdW50JiZ0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcoZCl9fSxfbGVuZEFjdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9hY3Rpb25zLGM9YS5fY2FjaGVJbmRleCwKZD10aGlzLl9uQWN0aXZlQWN0aW9ucysrLGU9YltkXTthLl9jYWNoZUluZGV4PWQ7YltkXT1hO2UuX2NhY2hlSW5kZXg9YztiW2NdPWV9LF90YWtlQmFja0FjdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9hY3Rpb25zLGM9YS5fY2FjaGVJbmRleCxkPS0tdGhpcy5fbkFjdGl2ZUFjdGlvbnMsZT1iW2RdO2EuX2NhY2hlSW5kZXg9ZDtiW2RdPWE7ZS5fY2FjaGVJbmRleD1jO2JbY109ZX0sX2FkZEluYWN0aXZlQmluZGluZzpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLGU9ZFtiXSxmPXRoaXMuX2JpbmRpbmdzO3ZvaWQgMD09PWUmJihlPXt9LGRbYl09ZSk7ZVtjXT1hO2EuX2NhY2hlSW5kZXg9Zi5sZW5ndGg7Zi5wdXNoKGEpfSxfcmVtb3ZlSW5hY3RpdmVCaW5kaW5nOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2JpbmRpbmdzLGM9YS5iaW5kaW5nLGQ9Yy5yb290Tm9kZS51dWlkO2M9Yy5wYXRoO3ZhciBlPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSwKZj1lW2RdLGc9YltiLmxlbmd0aC0xXTthPWEuX2NhY2hlSW5kZXg7Zy5fY2FjaGVJbmRleD1hO2JbYV09ZztiLnBvcCgpO2RlbGV0ZSBmW2NdOzA9PT1PYmplY3Qua2V5cyhmKS5sZW5ndGgmJmRlbGV0ZSBlW2RdfSxfbGVuZEJpbmRpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fYmluZGluZ3MsYz1hLl9jYWNoZUluZGV4LGQ9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzKyssZT1iW2RdO2EuX2NhY2hlSW5kZXg9ZDtiW2RdPWE7ZS5fY2FjaGVJbmRleD1jO2JbY109ZX0sX3Rha2VCYWNrQmluZGluZzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9iaW5kaW5ncyxjPWEuX2NhY2hlSW5kZXgsZD0tLXRoaXMuX25BY3RpdmVCaW5kaW5ncyxlPWJbZF07YS5fY2FjaGVJbmRleD1kO2JbZF09YTtlLl9jYWNoZUluZGV4PWM7YltjXT1lfSxfbGVuZENvbnRyb2xJbnRlcnBvbGFudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsYj10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrLApjPWFbYl07dm9pZCAwPT09YyYmKGM9bmV3IGtlKG5ldyBGbG9hdDMyQXJyYXkoMiksbmV3IEZsb2F0MzJBcnJheSgyKSwxLHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXIpLGMuX19jYWNoZUluZGV4PWIsYVtiXT1jKTtyZXR1cm4gY30sX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsYz1hLl9fY2FjaGVJbmRleCxkPS0tdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMsZT1iW2RdO2EuX19jYWNoZUluZGV4PWQ7YltkXT1hO2UuX19jYWNoZUluZGV4PWM7YltjXT1lfSxfY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlcjpuZXcgRmxvYXQzMkFycmF5KDEpLGNsaXBBY3Rpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHx0aGlzLl9yb290LGQ9Yy51dWlkO2M9InN0cmluZyI9PT10eXBlb2YgYT9NYS5maW5kQnlOYW1lKGMsYSk6YTthPW51bGwhPT1jP2MudXVpZDphO3ZhciBlPQp0aGlzLl9hY3Rpb25zQnlDbGlwW2FdLGY9bnVsbDtpZih2b2lkIDAhPT1lKXtmPWUuYWN0aW9uQnlSb290W2RdO2lmKHZvaWQgMCE9PWYpcmV0dXJuIGY7Zj1lLmtub3duQWN0aW9uc1swXTtudWxsPT09YyYmKGM9Zi5fY2xpcCl9aWYobnVsbD09PWMpcmV0dXJuIG51bGw7Yj1uZXcgZGkodGhpcyxjLGIpO3RoaXMuX2JpbmRBY3Rpb24oYixmKTt0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbihiLGEsZCk7cmV0dXJuIGJ9LGV4aXN0aW5nQWN0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8dGhpcy5fcm9vdDtiPWMudXVpZDtjPSJzdHJpbmciPT09dHlwZW9mIGE/TWEuZmluZEJ5TmFtZShjLGEpOmE7YT10aGlzLl9hY3Rpb25zQnlDbGlwW2M/Yy51dWlkOmFdO3JldHVybiB2b2lkIDAhPT1hP2EuYWN0aW9uQnlSb290W2JdfHxudWxsOm51bGx9LHN0b3BBbGxBY3Rpb246ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5fYWN0aW9ucyxiPXRoaXMuX25BY3RpdmVBY3Rpb25zLGM9dGhpcy5fYmluZGluZ3MsCmQ9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzLGU9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzPXRoaXMuX25BY3RpdmVBY3Rpb25zPTA7ZSE9PWI7KytlKWFbZV0ucmVzZXQoKTtmb3IoZT0wO2UhPT1kOysrZSljW2VdLnVzZUNvdW50PTA7cmV0dXJuIHRoaXN9LHVwZGF0ZTpmdW5jdGlvbihhKXthKj10aGlzLnRpbWVTY2FsZTtmb3IodmFyIGI9dGhpcy5fYWN0aW9ucyxjPXRoaXMuX25BY3RpdmVBY3Rpb25zLGQ9dGhpcy50aW1lKz1hLGU9TWF0aC5zaWduKGEpLGY9dGhpcy5fYWNjdUluZGV4Xj0xLGc9MDtnIT09YzsrK2cpYltnXS5fdXBkYXRlKGQsYSxlLGYpO2E9dGhpcy5fYmluZGluZ3M7Yj10aGlzLl9uQWN0aXZlQmluZGluZ3M7Zm9yKGc9MDtnIT09YjsrK2cpYVtnXS5hcHBseShmKTtyZXR1cm4gdGhpc30sc2V0VGltZTpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcy50aW1lPTA7Yjx0aGlzLl9hY3Rpb25zLmxlbmd0aDtiKyspdGhpcy5fYWN0aW9uc1tiXS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKGEpfSwKZ2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSx1bmNhY2hlQ2xpcDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9hY3Rpb25zO2E9YS51dWlkO3ZhciBjPXRoaXMuX2FjdGlvbnNCeUNsaXAsZD1jW2FdO2lmKHZvaWQgMCE9PWQpe2Q9ZC5rbm93bkFjdGlvbnM7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlIT09ZjsrK2Upe3ZhciBnPWRbZV07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihnKTt2YXIgaD1nLl9jYWNoZUluZGV4LGs9YltiLmxlbmd0aC0xXTtnLl9jYWNoZUluZGV4PW51bGw7Zy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsO2suX2NhY2hlSW5kZXg9aDtiW2hdPWs7Yi5wb3AoKTt0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKGcpfWRlbGV0ZSBjW2FdfX0sdW5jYWNoZVJvb3Q6ZnVuY3Rpb24oYSl7YT1hLnV1aWQ7dmFyIGI9dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoZCBpbiBiKXt2YXIgYz1iW2RdLmFjdGlvbkJ5Um9vdFthXTt2b2lkIDAhPT1jJiYKKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24oYyksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24oYykpfXZhciBkPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVthXTtpZih2b2lkIDAhPT1kKWZvcih2YXIgZSBpbiBkKWE9ZFtlXSxhLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGEpfSx1bmNhY2hlQWN0aW9uOmZ1bmN0aW9uKGEsYil7YT10aGlzLmV4aXN0aW5nQWN0aW9uKGEsYik7bnVsbCE9PWEmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGEpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGEpKX19KTtwZi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHBmKHZvaWQgMD09PXRoaXMudmFsdWUuY2xvbmU/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfTtHZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHBiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkdnLGlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI6ITAsCmNvcHk6ZnVuY3Rpb24oYSl7cGIucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMubWVzaFBlckF0dHJpYnV0ZT1hLm1lc2hQZXJBdHRyaWJ1dGU7cmV0dXJuIHRoaXN9fSk7T2JqZWN0LmFzc2lnbihlaS5wcm90b3R5cGUse2xpbmVQcmVjaXNpb246MSxzZXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLnJheS5zZXQoYSxiKX0sc2V0RnJvbUNhbWVyYTpmdW5jdGlvbihhLGIpe2ImJmIuaXNQZXJzcGVjdGl2ZUNhbWVyYT8odGhpcy5yYXkub3JpZ2luLnNldEZyb21NYXRyaXhQb3NpdGlvbihiLm1hdHJpeFdvcmxkKSx0aGlzLnJheS5kaXJlY3Rpb24uc2V0KGEueCxhLnksLjUpLnVucHJvamVjdChiKS5zdWIodGhpcy5yYXkub3JpZ2luKS5ub3JtYWxpemUoKSx0aGlzLmNhbWVyYT1iKTpiJiZiLmlzT3J0aG9ncmFwaGljQ2FtZXJhPyh0aGlzLnJheS5vcmlnaW4uc2V0KGEueCxhLnksKGIubmVhcitiLmZhcikvKGIubmVhci1iLmZhcikpLnVucHJvamVjdChiKSx0aGlzLnJheS5kaXJlY3Rpb24uc2V0KDAsCjAsLTEpLnRyYW5zZm9ybURpcmVjdGlvbihiLm1hdHJpeFdvcmxkKSx0aGlzLmNhbWVyYT1iKTpjb25zb2xlLmVycm9yKCJUSFJFRS5SYXljYXN0ZXI6IFVuc3VwcG9ydGVkIGNhbWVyYSB0eXBlLiIpfSxpbnRlcnNlY3RPYmplY3Q6ZnVuY3Rpb24oYSxiLGMpe2M9Y3x8W107SGcoYSx0aGlzLGMsYik7Yy5zb3J0KGZpKTtyZXR1cm4gY30saW50ZXJzZWN0T2JqZWN0czpmdW5jdGlvbihhLGIsYyl7Yz1jfHxbXTtpZighMT09PUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdHM6IG9iamVjdHMgaXMgbm90IGFuIEFycmF5LiIpLGM7Zm9yKHZhciBkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKUhnKGFbZF0sdGhpcyxjLGIpO2Muc29ydChmaSk7cmV0dXJuIGN9fSk7T2JqZWN0LmFzc2lnbihnaS5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhLGIsYyl7dGhpcy5yYWRpdXM9YTt0aGlzLnBoaT1iO3RoaXMudGhldGE9YztyZXR1cm4gdGhpc30sCmNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMucmFkaXVzPWEucmFkaXVzO3RoaXMucGhpPWEucGhpO3RoaXMudGhldGE9YS50aGV0YTtyZXR1cm4gdGhpc30sbWFrZVNhZmU6ZnVuY3Rpb24oKXt0aGlzLnBoaT1NYXRoLm1heCgxRS02LE1hdGgubWluKE1hdGguUEktMUUtNix0aGlzLnBoaSkpO3JldHVybiB0aGlzfSxzZXRGcm9tVmVjdG9yMzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKGEueCxhLnksYS56KX0sc2V0RnJvbUNhcnRlc2lhbkNvb3JkczpmdW5jdGlvbihhLGIsYyl7dGhpcy5yYWRpdXM9TWF0aC5zcXJ0KGEqYStiKmIrYypjKTswPT09dGhpcy5yYWRpdXM/dGhpcy5waGk9dGhpcy50aGV0YT0wOih0aGlzLnRoZXRhPU1hdGguYXRhbjIoYSxjKSx0aGlzLnBoaT1NYXRoLmFjb3MoUC5jbGFtcChiL3RoaXMucmFkaXVzLC0xLDEpKSk7cmV0dXJuIHRoaXN9fSk7Ck9iamVjdC5hc3NpZ24oaGkucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3RoaXMucmFkaXVzPWE7dGhpcy50aGV0YT1iO3RoaXMueT1jO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLnJhZGl1cz1hLnJhZGl1czt0aGlzLnRoZXRhPWEudGhldGE7dGhpcy55PWEueTtyZXR1cm4gdGhpc30sc2V0RnJvbVZlY3RvcjM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0RnJvbUNhcnRlc2lhbkNvb3JkcyhhLngsYS55LGEueil9LHNldEZyb21DYXJ0ZXNpYW5Db29yZHM6ZnVuY3Rpb24oYSxiLGMpe3RoaXMucmFkaXVzPU1hdGguc3FydChhKmErYypjKTt0aGlzLnRoZXRhPU1hdGguYXRhbjIoYSxjKTt0aGlzLnk9YjtyZXR1cm4gdGhpc319KTt2YXIgSmk9bmV3IEI7T2JqZWN0LmFzc2lnbihJZy5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhLGIpe3RoaXMubWluLmNvcHkoYSk7CnRoaXMubWF4LmNvcHkoYik7cmV0dXJuIHRoaXN9LHNldEZyb21Qb2ludHM6ZnVuY3Rpb24oYSl7dGhpcy5tYWtlRW1wdHkoKTtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspdGhpcy5leHBhbmRCeVBvaW50KGFbYl0pO3JldHVybiB0aGlzfSxzZXRGcm9tQ2VudGVyQW5kU2l6ZTpmdW5jdGlvbihhLGIpe2I9SmkuY29weShiKS5tdWx0aXBseVNjYWxhciguNSk7dGhpcy5taW4uY29weShhKS5zdWIoYik7dGhpcy5tYXguY29weShhKS5hZGQoYik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMubWluLmNvcHkoYS5taW4pO3RoaXMubWF4LmNvcHkoYS5tYXgpO3JldHVybiB0aGlzfSxtYWtlRW1wdHk6ZnVuY3Rpb24oKXt0aGlzLm1pbi54PXRoaXMubWluLnk9SW5maW5pdHk7dGhpcy5tYXgueD10aGlzLm1heC55PS1JbmZpbml0eTtyZXR1cm4gdGhpc30saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC54PAp0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl9LGdldENlbnRlcjpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZ2V0Q2VudGVyKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IEIpO3JldHVybiB0aGlzLmlzRW1wdHkoKT9hLnNldCgwLDApOmEuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfSxnZXRTaXplOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRTaXplKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IEIpO3JldHVybiB0aGlzLmlzRW1wdHkoKT9hLnNldCgwLDApOmEuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9LGV4cGFuZEJ5UG9pbnQ6ZnVuY3Rpb24oYSl7dGhpcy5taW4ubWluKGEpO3RoaXMubWF4Lm1heChhKTtyZXR1cm4gdGhpc30sZXhwYW5kQnlWZWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5taW4uc3ViKGEpOwp0aGlzLm1heC5hZGQoYSk7cmV0dXJuIHRoaXN9LGV4cGFuZEJ5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMubWluLmFkZFNjYWxhcigtYSk7dGhpcy5tYXguYWRkU2NhbGFyKGEpO3JldHVybiB0aGlzfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBhLng8dGhpcy5taW4ueHx8YS54PnRoaXMubWF4Lnh8fGEueTx0aGlzLm1pbi55fHxhLnk+dGhpcy5tYXgueT8hMTohMH0sY29udGFpbnNCb3g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWluLng8PWEubWluLngmJmEubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PWEubWluLnkmJmEubWF4Lnk8PXRoaXMubWF4Lnl9LGdldFBhcmFtZXRlcjpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRQYXJhbWV0ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYj1uZXcgQik7cmV0dXJuIGIuc2V0KChhLngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksCihhLnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSkpfSxpbnRlcnNlY3RzQm94OmZ1bmN0aW9uKGEpe3JldHVybiBhLm1heC54PHRoaXMubWluLnh8fGEubWluLng+dGhpcy5tYXgueHx8YS5tYXgueTx0aGlzLm1pbi55fHxhLm1pbi55PnRoaXMubWF4Lnk/ITE6ITB9LGNsYW1wUG9pbnQ6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxiPW5ldyBCKTtyZXR1cm4gYi5jb3B5KGEpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX0sZGlzdGFuY2VUb1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBKaS5jb3B5KGEpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIoYSkubGVuZ3RoKCl9LGludGVyc2VjdDpmdW5jdGlvbihhKXt0aGlzLm1pbi5tYXgoYS5taW4pO3RoaXMubWF4Lm1pbihhLm1heCk7cmV0dXJuIHRoaXN9LHVuaW9uOmZ1bmN0aW9uKGEpe3RoaXMubWluLm1pbihhLm1pbik7CnRoaXMubWF4Lm1heChhLm1heCk7cmV0dXJuIHRoaXN9LHRyYW5zbGF0ZTpmdW5jdGlvbihhKXt0aGlzLm1pbi5hZGQoYSk7dGhpcy5tYXguYWRkKGEpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubWluLmVxdWFscyh0aGlzLm1pbikmJmEubWF4LmVxdWFscyh0aGlzLm1heCl9fSk7dmFyIEtpPW5ldyBuLE5mPW5ldyBuO09iamVjdC5hc3NpZ24oSmcucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLnN0YXJ0LmNvcHkoYSk7dGhpcy5lbmQuY29weShiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5zdGFydC5jb3B5KGEuc3RhcnQpO3RoaXMuZW5kLmNvcHkoYS5lbmQpO3JldHVybiB0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuTGluZTM6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksCmE9bmV3IG4pO3JldHVybiBhLmFkZFZlY3RvcnModGhpcy5zdGFydCx0aGlzLmVuZCkubXVsdGlwbHlTY2FsYXIoLjUpfSxkZWx0YTpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmRlbHRhKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IG4pO3JldHVybiBhLnN1YlZlY3RvcnModGhpcy5lbmQsdGhpcy5zdGFydCl9LGRpc3RhbmNlU3E6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmVuZCl9LGRpc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQuZGlzdGFuY2VUbyh0aGlzLmVuZCl9LGF0OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGNvbnNvbGUud2FybigiVEhSRUUuTGluZTM6IC5hdCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxiPW5ldyBuKTtyZXR1cm4gdGhpcy5kZWx0YShiKS5tdWx0aXBseVNjYWxhcihhKS5hZGQodGhpcy5zdGFydCl9LGNsb3Nlc3RQb2ludFRvUG9pbnRQYXJhbWV0ZXI6ZnVuY3Rpb24oYSwKYil7S2kuc3ViVmVjdG9ycyhhLHRoaXMuc3RhcnQpO05mLnN1YlZlY3RvcnModGhpcy5lbmQsdGhpcy5zdGFydCk7YT1OZi5kb3QoTmYpO2E9TmYuZG90KEtpKS9hO2ImJihhPVAuY2xhbXAoYSwwLDEpKTtyZXR1cm4gYX0sY2xvc2VzdFBvaW50VG9Qb2ludDpmdW5jdGlvbihhLGIsYyl7YT10aGlzLmNsb3Nlc3RQb2ludFRvUG9pbnRQYXJhbWV0ZXIoYSxiKTt2b2lkIDA9PT1jJiYoY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmNsb3Nlc3RQb2ludFRvUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYz1uZXcgbik7cmV0dXJuIHRoaXMuZGVsdGEoYykubXVsdGlwbHlTY2FsYXIoYSkuYWRkKHRoaXMuc3RhcnQpfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24oYSl7dGhpcy5zdGFydC5hcHBseU1hdHJpeDQoYSk7dGhpcy5lbmQuYXBwbHlNYXRyaXg0KGEpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3RhcnQuZXF1YWxzKHRoaXMuc3RhcnQpJiZhLmVuZC5lcXVhbHModGhpcy5lbmQpfX0pOwpwZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSk7cGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPXBlO3BlLnByb3RvdHlwZS5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdD0hMDt2YXIgbGI9bmV3IG4sQWI9bmV3IG4sZ2g9bmV3IFosUms9WyJhIiwiYiIsImMiXTtxZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShYLnByb3RvdHlwZSk7cWUucHJvdG90eXBlLmNvbnN0cnVjdG9yPXFlO3FlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLm9iamVjdC51cGRhdGVNYXRyaXhXb3JsZCghMCk7Z2guZ2V0Tm9ybWFsTWF0cml4KHRoaXMub2JqZWN0Lm1hdHJpeFdvcmxkKTt2YXIgYT10aGlzLm9iamVjdC5tYXRyaXhXb3JsZCxiPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbixjPXRoaXMub2JqZWN0Lmdlb21ldHJ5O2lmKGMmJmMuaXNHZW9tZXRyeSlmb3IodmFyIGQ9Yy52ZXJ0aWNlcyxlPWMuZmFjZXMsZj1jPTAsZz1lLmxlbmd0aDtmPGc7ZisrKWZvcih2YXIgaD0KZVtmXSxrPTAsbT1oLnZlcnRleE5vcm1hbHMubGVuZ3RoO2s8bTtrKyspe3ZhciBuPWgudmVydGV4Tm9ybWFsc1trXTtsYi5jb3B5KGRbaFtSa1trXV1dKS5hcHBseU1hdHJpeDQoYSk7QWIuY29weShuKS5hcHBseU1hdHJpeDMoZ2gpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHRoaXMuc2l6ZSkuYWRkKGxiKTtiLnNldFhZWihjLGxiLngsbGIueSxsYi56KTtjKz0xO2Iuc2V0WFlaKGMsQWIueCxBYi55LEFiLnopO2MrPTF9ZWxzZSBpZihjJiZjLmlzQnVmZmVyR2VvbWV0cnkpZm9yKGQ9Yy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9Yy5hdHRyaWJ1dGVzLm5vcm1hbCxrPWM9MCxtPWQuY291bnQ7azxtO2srKylsYi5zZXQoZC5nZXRYKGspLGQuZ2V0WShrKSxkLmdldFooaykpLmFwcGx5TWF0cml4NChhKSxBYi5zZXQoZS5nZXRYKGspLGUuZ2V0WShrKSxlLmdldFooaykpLEFiLmFwcGx5TWF0cml4MyhnaCkubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodGhpcy5zaXplKS5hZGQobGIpLApiLnNldFhZWihjLGxiLngsbGIueSxsYi56KSxjKz0xLGIuc2V0WFlaKGMsQWIueCxBYi55LEFiLnopLGMrPTE7Yi5uZWVkc1VwZGF0ZT0hMH07dmFyIExpPW5ldyBuO2RkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKTtkZC5wcm90b3R5cGUuY29uc3RydWN0b3I9ZGQ7ZGQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmNvbmUuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMuY29uZS5tYXRlcmlhbC5kaXNwb3NlKCl9O2RkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCk7dmFyIGE9dGhpcy5saWdodC5kaXN0YW5jZT90aGlzLmxpZ2h0LmRpc3RhbmNlOjFFMyxiPWEqTWF0aC50YW4odGhpcy5saWdodC5hbmdsZSk7dGhpcy5jb25lLnNjYWxlLnNldChiLGIsYSk7TGkuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQudGFyZ2V0Lm1hdHJpeFdvcmxkKTt0aGlzLmNvbmUubG9va0F0KExpKTsKdm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLmNvbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpOnRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubGlnaHQuY29sb3IpfTt2YXIgT2I9bmV3IG4sT2Y9bmV3IFEsaGg9bmV3IFE7ZWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWC5wcm90b3R5cGUpO2VkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lZDtlZC5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5ib25lcyxjPXRoaXMuZ2VvbWV0cnksZD1jLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtoaC5nZXRJbnZlcnNlKHRoaXMucm9vdC5tYXRyaXhXb3JsZCk7Zm9yKHZhciBlPTAsZj0wO2U8Yi5sZW5ndGg7ZSsrKXt2YXIgZz1iW2VdO2cucGFyZW50JiZnLnBhcmVudC5pc0JvbmUmJihPZi5tdWx0aXBseU1hdHJpY2VzKGhoLGcubWF0cml4V29ybGQpLE9iLnNldEZyb21NYXRyaXhQb3NpdGlvbihPZiksZC5zZXRYWVooZixPYi54LApPYi55LE9iLnopLE9mLm11bHRpcGx5TWF0cmljZXMoaGgsZy5wYXJlbnQubWF0cml4V29ybGQpLE9iLnNldEZyb21NYXRyaXhQb3NpdGlvbihPZiksZC5zZXRYWVooZisxLE9iLngsT2IueSxPYi56KSxmKz0yKX1jLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKS5uZWVkc1VwZGF0ZT0hMDtFLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKHRoaXMsYSl9O2ZkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGVhLnByb3RvdHlwZSk7ZmQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWZkO2ZkLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCk7dGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9O2ZkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLmNvbG9yP3RoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpOnRoaXMubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKX07Z2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocmEucHJvdG90eXBlKTsKZ2QucHJvdG90eXBlLmNvbnN0cnVjdG9yPWdkO2dkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLnNjYWxlLnNldCguNSp0aGlzLmxpZ2h0LndpZHRoLC41KnRoaXMubGlnaHQuaGVpZ2h0LDEpO2lmKHZvaWQgMCE9PXRoaXMuY29sb3IpdGhpcy5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvciksdGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik7ZWxzZXt0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcikubXVsdGlwbHlTY2FsYXIodGhpcy5saWdodC5pbnRlbnNpdHkpO3ZhciBhPXRoaXMubWF0ZXJpYWwuY29sb3IsYj1NYXRoLm1heChhLnIsYS5nLGEuYik7MTxiJiZhLm11bHRpcGx5U2NhbGFyKDEvYik7dGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubWF0ZXJpYWwuY29sb3IpfX07Z2QucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmdlb21ldHJ5LmRpc3Bvc2UoKTsKdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCk7dGhpcy5jaGlsZHJlblswXS5nZW9tZXRyeS5kaXNwb3NlKCk7dGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5kaXNwb3NlKCl9O3ZhciBTaz1uZXcgbixNaT1uZXcgSixOaT1uZXcgSjtoZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSk7aGQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWhkO2hkLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5jaGlsZHJlblswXS5nZW9tZXRyeS5kaXNwb3NlKCk7dGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5kaXNwb3NlKCl9O2hkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoaWxkcmVuWzBdO2lmKHZvaWQgMCE9PXRoaXMuY29sb3IpdGhpcy5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik7ZWxzZXt2YXIgYj1hLmdlb21ldHJ5LmdldEF0dHJpYnV0ZSgiY29sb3IiKTtNaS5jb3B5KHRoaXMubGlnaHQuY29sb3IpO05pLmNvcHkodGhpcy5saWdodC5ncm91bmRDb2xvcik7CmZvcih2YXIgYz0wLGQ9Yi5jb3VudDtjPGQ7YysrKXt2YXIgZT1jPGQvMj9NaTpOaTtiLnNldFhZWihjLGUucixlLmcsZS5iKX1iLm5lZWRzVXBkYXRlPSEwfWEubG9va0F0KFNrLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkKS5uZWdhdGUoKSl9O2lkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGVhLnByb3RvdHlwZSk7aWQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWlkO2lkLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCk7dGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9O2lkLnByb3RvdHlwZS5vbkJlZm9yZVJlbmRlcj1mdW5jdGlvbigpe3RoaXMucG9zaXRpb24uY29weSh0aGlzLmxpZ2h0UHJvYmUucG9zaXRpb24pO3RoaXMuc2NhbGUuc2V0KDEsMSwxKS5tdWx0aXBseVNjYWxhcih0aGlzLnNpemUpO3RoaXMubWF0ZXJpYWwudW5pZm9ybXMuaW50ZW5zaXR5LnZhbHVlPXRoaXMubGlnaHRQcm9iZS5pbnRlbnNpdHl9OwpxZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFgucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6cWYsY29weTpmdW5jdGlvbihhKXtYLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmdlb21ldHJ5LmNvcHkoYS5nZW9tZXRyeSk7dGhpcy5tYXRlcmlhbC5jb3B5KGEubWF0ZXJpYWwpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19KTtyZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShYLnByb3RvdHlwZSk7cmYucHJvdG90eXBlLmNvbnN0cnVjdG9yPXJmO2pkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHJhLnByb3RvdHlwZSk7amQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWpkO2pkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYixkLGUpe2Q9KGItYSkvZDtwLnNldFhZWihrLDAsMCwwKTttKys7Zm9yKG49YTtuPGI7bis9ZClxPWsrbSxwLnNldFhZWihxLApNYXRoLnNpbihuKSpjLDAsTWF0aC5jb3MobikqYykscC5zZXRYWVoocSsxLE1hdGguc2luKE1hdGgubWluKG4rZCxiKSkqYywwLE1hdGguY29zKE1hdGgubWluKG4rZCxiKSkqYykscC5zZXRYWVoocSsyLDAsMCwwKSxtKz0zO3UuYWRkR3JvdXAoayxtLGUpO2srPW07bT0wfXZhciBiPXRoaXMuYXVkaW8sYz10aGlzLnJhbmdlLGQ9dGhpcy5kaXZpc2lvbnNJbm5lckFuZ2xlLGU9dGhpcy5kaXZpc2lvbnNPdXRlckFuZ2xlLGY9UC5kZWdUb1JhZChiLnBhbm5lci5jb25lSW5uZXJBbmdsZSk7Yj1QLmRlZ1RvUmFkKGIucGFubmVyLmNvbmVPdXRlckFuZ2xlKTt2YXIgZz1mLzIsaD1iLzIsaz0wLG09MCxuLHEsdT10aGlzLmdlb21ldHJ5LHA9dS5hdHRyaWJ1dGVzLnBvc2l0aW9uO3UuY2xlYXJHcm91cHMoKTthKC1oLC1nLGUsMCk7YSgtZyxnLGQsMSk7YShnLGgsZSwwKTtwLm5lZWRzVXBkYXRlPSEwO2Y9PT1iJiYodGhpcy5tYXRlcmlhbFswXS52aXNpYmxlPSExKX07amQucHJvdG90eXBlLmRpc3Bvc2U9CmZ1bmN0aW9uKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCk7dGhpcy5tYXRlcmlhbFswXS5kaXNwb3NlKCk7dGhpcy5tYXRlcmlhbFsxXS5kaXNwb3NlKCl9O3ZhciBEZT1uZXcgbixQZj1uZXcgbixPaT1uZXcgWjtyZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShYLnByb3RvdHlwZSk7cmUucHJvdG90eXBlLmNvbnN0cnVjdG9yPXJlO3JlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLm9iamVjdC51cGRhdGVNYXRyaXhXb3JsZCghMCk7T2kuZ2V0Tm9ybWFsTWF0cml4KHRoaXMub2JqZWN0Lm1hdHJpeFdvcmxkKTt2YXIgYT10aGlzLm9iamVjdC5tYXRyaXhXb3JsZCxiPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbixjPXRoaXMub2JqZWN0Lmdlb21ldHJ5LGQ9Yy52ZXJ0aWNlcztjPWMuZmFjZXM7Zm9yKHZhciBlPTAsZj0wLGc9Yy5sZW5ndGg7ZjxnO2YrKyl7dmFyIGg9Y1tmXSxrPWgubm9ybWFsO0RlLmNvcHkoZFtoLmFdKS5hZGQoZFtoLmJdKS5hZGQoZFtoLmNdKS5kaXZpZGVTY2FsYXIoMykuYXBwbHlNYXRyaXg0KGEpOwpQZi5jb3B5KGspLmFwcGx5TWF0cml4MyhPaSkubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodGhpcy5zaXplKS5hZGQoRGUpO2Iuc2V0WFlaKGUsRGUueCxEZS55LERlLnopO2UrPTE7Yi5zZXRYWVooZSxQZi54LFBmLnksUGYueik7ZSs9MX1iLm5lZWRzVXBkYXRlPSEwfTt2YXIgUGk9bmV3IG4sUWY9bmV3IG4sUWk9bmV3IG47a2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpO2tkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rZDtrZC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMubGlnaHRQbGFuZS5nZW9tZXRyeS5kaXNwb3NlKCk7dGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmRpc3Bvc2UoKTt0aGlzLnRhcmdldExpbmUuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5kaXNwb3NlKCl9O2tkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtQaS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC5tYXRyaXhXb3JsZCk7ClFmLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCk7UWkuc3ViVmVjdG9ycyhRZixQaSk7dGhpcy5saWdodFBsYW5lLmxvb2tBdChRZik7dm9pZCAwIT09dGhpcy5jb2xvcj8odGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpKToodGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvciksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcikpO3RoaXMudGFyZ2V0TGluZS5sb29rQXQoUWYpO3RoaXMudGFyZ2V0TGluZS5zY2FsZS56PVFpLmxlbmd0aCgpfTt2YXIgc2Y9bmV3IG4sa2E9bmV3IGJiO3NlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFgucHJvdG90eXBlKTtzZS5wcm90b3R5cGUuY29uc3RydWN0b3I9c2U7c2UucHJvdG90eXBlLnVwZGF0ZT0KZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdlb21ldHJ5LGI9dGhpcy5wb2ludE1hcDtrYS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKTtuYSgiYyIsYixhLGthLDAsMCwtMSk7bmEoInQiLGIsYSxrYSwwLDAsMSk7bmEoIm4xIixiLGEsa2EsLTEsLTEsLTEpO25hKCJuMiIsYixhLGthLDEsLTEsLTEpO25hKCJuMyIsYixhLGthLC0xLDEsLTEpO25hKCJuNCIsYixhLGthLDEsMSwtMSk7bmEoImYxIixiLGEsa2EsLTEsLTEsMSk7bmEoImYyIixiLGEsa2EsMSwtMSwxKTtuYSgiZjMiLGIsYSxrYSwtMSwxLDEpO25hKCJmNCIsYixhLGthLDEsMSwxKTtuYSgidTEiLGIsYSxrYSwuNywxLjEsLTEpO25hKCJ1MiIsYixhLGthLC0uNywxLjEsLTEpO25hKCJ1MyIsYixhLGthLDAsMiwtMSk7bmEoImNmMSIsYixhLGthLC0xLDAsMSk7bmEoImNmMiIsYixhLGthLDEsMCwxKTtuYSgiY2YzIixiLGEsa2EsMCwtMSwxKTtuYSgiY2Y0IiwKYixhLGthLDAsMSwxKTtuYSgiY24xIixiLGEsa2EsLTEsMCwtMSk7bmEoImNuMiIsYixhLGthLDEsMCwtMSk7bmEoImNuMyIsYixhLGthLDAsLTEsLTEpO25hKCJjbjQiLGIsYSxrYSwwLDEsLTEpO2EuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwfTt2YXIgUmY9bmV3IGFiO3RiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFgucHJvdG90eXBlKTt0Yi5wcm90b3R5cGUuY29uc3RydWN0b3I9dGI7dGIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihhKXt2b2lkIDAhPT1hJiZjb25zb2xlLndhcm4oIlRIUkVFLkJveEhlbHBlcjogLnVwZGF0ZSgpIGhhcyBubyBsb25nZXIgYXJndW1lbnRzLiIpO3ZvaWQgMCE9PXRoaXMub2JqZWN0JiZSZi5zZXRGcm9tT2JqZWN0KHRoaXMub2JqZWN0KTtpZighUmYuaXNFbXB0eSgpKXthPVJmLm1pbjt2YXIgYj1SZi5tYXgsYz10aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24sZD1jLmFycmF5O2RbMF09Yi54O2RbMV09CmIueTtkWzJdPWIuejtkWzNdPWEueDtkWzRdPWIueTtkWzVdPWIuejtkWzZdPWEueDtkWzddPWEueTtkWzhdPWIuejtkWzldPWIueDtkWzEwXT1hLnk7ZFsxMV09Yi56O2RbMTJdPWIueDtkWzEzXT1iLnk7ZFsxNF09YS56O2RbMTVdPWEueDtkWzE2XT1iLnk7ZFsxN109YS56O2RbMThdPWEueDtkWzE5XT1hLnk7ZFsyMF09YS56O2RbMjFdPWIueDtkWzIyXT1hLnk7ZFsyM109YS56O2MubmVlZHNVcGRhdGU9ITA7dGhpcy5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX19O3RiLnByb3RvdHlwZS5zZXRGcm9tT2JqZWN0PWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0PWE7dGhpcy51cGRhdGUoKTtyZXR1cm4gdGhpc307dGIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7WC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5vYmplY3Q9YS5vYmplY3Q7cmV0dXJuIHRoaXN9O3RiLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX07CnRlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFgucHJvdG90eXBlKTt0ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9dGU7dGUucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYm94O2IuaXNFbXB0eSgpfHwoYi5nZXRDZW50ZXIodGhpcy5wb3NpdGlvbiksYi5nZXRTaXplKHRoaXMuc2NhbGUpLHRoaXMuc2NhbGUubXVsdGlwbHlTY2FsYXIoLjUpLEUucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkLmNhbGwodGhpcyxhKSl9O3VlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHJhLnByb3RvdHlwZSk7dWUucHJvdG90eXBlLmNvbnN0cnVjdG9yPXVlO3VlLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZD1mdW5jdGlvbihhKXt2YXIgYj0tdGhpcy5wbGFuZS5jb25zdGFudDsxRS04Pk1hdGguYWJzKGIpJiYoYj0xRS04KTt0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGIpO3RoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT0KMD5iPzE6MDt0aGlzLmxvb2tBdCh0aGlzLnBsYW5lLm5vcm1hbCk7RS5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLGEpfTt2YXIgUmk9bmV3IG4sdGYsS2c7dWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpO3ViLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj11Yjt1Yi5wcm90b3R5cGUuc2V0RGlyZWN0aW9uPWZ1bmN0aW9uKGEpey45OTk5OTxhLnk/dGhpcy5xdWF0ZXJuaW9uLnNldCgwLDAsMCwxKTotLjk5OTk5PmEueT90aGlzLnF1YXRlcm5pb24uc2V0KDEsMCwwLDApOihSaS5zZXQoYS56LDAsLWEueCkubm9ybWFsaXplKCksdGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoUmksTWF0aC5hY29zKGEueSkpKX07dWIucHJvdG90eXBlLnNldExlbmd0aD1mdW5jdGlvbihhLGIsYyl7dm9pZCAwPT09YiYmKGI9LjIqYSk7dm9pZCAwPT09YyYmKGM9LjIqYik7dGhpcy5saW5lLnNjYWxlLnNldCgxLE1hdGgubWF4KDFFLTQsYS1iKSwxKTt0aGlzLmxpbmUudXBkYXRlTWF0cml4KCk7CnRoaXMuY29uZS5zY2FsZS5zZXQoYyxiLGMpO3RoaXMuY29uZS5wb3NpdGlvbi55PWE7dGhpcy5jb25lLnVwZGF0ZU1hdHJpeCgpfTt1Yi5wcm90b3R5cGUuc2V0Q29sb3I9ZnVuY3Rpb24oYSl7dGhpcy5saW5lLm1hdGVyaWFsLmNvbG9yLnNldChhKTt0aGlzLmNvbmUubWF0ZXJpYWwuY29sb3Iuc2V0KGEpfTt1Yi5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtFLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhLCExKTt0aGlzLmxpbmUuY29weShhLmxpbmUpO3RoaXMuY29uZS5jb3B5KGEuY29uZSk7cmV0dXJuIHRoaXN9O3ViLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX07dmUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWC5wcm90b3R5cGUpO3ZlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj12ZTtDLmNyZWF0ZT1mdW5jdGlvbihhLGIpe2NvbnNvbGUubG9nKCJUSFJFRS5DdXJ2ZS5jcmVhdGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkIik7CmEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQy5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7YS5wcm90b3R5cGUuZ2V0UG9pbnQ9YjtyZXR1cm4gYX07T2JqZWN0LmFzc2lnbihzYi5wcm90b3R5cGUse2NyZWF0ZVBvaW50c0dlb21ldHJ5OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQ3VydmVQYXRoOiAuY3JlYXRlUG9pbnRzR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyggcG9pbnRzICkgaW5zdGVhZC4iKTthPXRoaXMuZ2V0UG9pbnRzKGEpO3JldHVybiB0aGlzLmNyZWF0ZUdlb21ldHJ5KGEpfSxjcmVhdGVTcGFjZWRQb2ludHNHZW9tZXRyeTpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlUGF0aDogLmNyZWF0ZVNwYWNlZFBvaW50c0dlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5HZW9tZXRyeSgpLnNldEZyb21Qb2ludHMoIHBvaW50cyApIGluc3RlYWQuIik7CmE9dGhpcy5nZXRTcGFjZWRQb2ludHMoYSk7cmV0dXJuIHRoaXMuY3JlYXRlR2VvbWV0cnkoYSl9LGNyZWF0ZUdlb21ldHJ5OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQ3VydmVQYXRoOiAuY3JlYXRlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyggcG9pbnRzICkgaW5zdGVhZC4iKTtmb3IodmFyIGI9bmV3IEcsYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9YVtjXTtiLnZlcnRpY2VzLnB1c2gobmV3IG4oZS54LGUueSxlLnp8fDApKX1yZXR1cm4gYn19KTtPYmplY3QuYXNzaWduKFdhLnByb3RvdHlwZSx7ZnJvbVBvaW50czpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlBhdGg6IC5mcm9tUG9pbnRzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVBvaW50cygpLiIpO3JldHVybiB0aGlzLnNldEZyb21Qb2ludHMoYSl9fSk7amkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobWEucHJvdG90eXBlKTsKa2kucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobWEucHJvdG90eXBlKTtMZy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtYS5wcm90b3R5cGUpO09iamVjdC5hc3NpZ24oTGcucHJvdG90eXBlLHtpbml0RnJvbUFycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU3BsaW5lOiAuaW5pdEZyb21BcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdldENvbnRyb2xQb2ludHNBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNwbGluZTogLmdldENvbnRyb2xQb2ludHNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJlcGFyYW1ldHJpemVCeUFyY0xlbmd0aDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNwbGluZTogLnJlcGFyYW1ldHJpemVCeUFyY0xlbmd0aCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9fSk7cWYucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkdyaWRIZWxwZXI6IHNldENvbG9ycygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHBhc3MgdGhlbSBpbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZC4iKX07CmVkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2VsZXRvbkhlbHBlcjogdXBkYXRlKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIGNhbGxlZC4iKX07T2JqZWN0LmFzc2lnbihWLnByb3RvdHlwZSx7ZXh0cmFjdFVybEJhc2U6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Mb2FkZXI6IC5leHRyYWN0VXJsQmFzZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5Mb2FkZXJVdGlscy5leHRyYWN0VXJsQmFzZSgpIGluc3RlYWQuIik7cmV0dXJuIGVoLmV4dHJhY3RVcmxCYXNlKGEpfX0pO1YuSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19OwpPYmplY3QuYXNzaWduKG1mLnByb3RvdHlwZSx7c2V0VGV4dHVyZVBhdGg6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IC5zZXRUZXh0dXJlUGF0aCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldFJlc291cmNlUGF0aCgpLiIpO3JldHVybiB0aGlzLnNldFJlc291cmNlUGF0aChhKX19KTtPYmplY3QuYXNzaWduKElnLnByb3RvdHlwZSx7Y2VudGVyOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpO3JldHVybiB0aGlzLmdldENlbnRlcihhKX0sZW1wdHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKTtyZXR1cm4gdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpOwpyZXR1cm4gdGhpcy5pbnRlcnNlY3RzQm94KGEpfSxzaXplOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MjogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIik7cmV0dXJuIHRoaXMuZ2V0U2l6ZShhKX19KTtPYmplY3QuYXNzaWduKGFiLnByb3RvdHlwZSx7Y2VudGVyOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpO3JldHVybiB0aGlzLmdldENlbnRlcihhKX0sZW1wdHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKTtyZXR1cm4gdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpOwpyZXR1cm4gdGhpcy5pbnRlcnNlY3RzQm94KGEpfSxpc0ludGVyc2VjdGlvblNwaGVyZTpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKGEpfSxzaXplOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MzogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIik7cmV0dXJuIHRoaXMuZ2V0U2l6ZShhKX19KTtKZy5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGluZTM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKTtyZXR1cm4gdGhpcy5nZXRDZW50ZXIoYSl9O09iamVjdC5hc3NpZ24oUCx7cmFuZG9tMTY6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGg6IC5yYW5kb20xNigpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBNYXRoLnJhbmRvbSgpIGluc3RlYWQuIik7CnJldHVybiBNYXRoLnJhbmRvbSgpfSxuZWFyZXN0UG93ZXJPZlR3bzpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGg6IC5uZWFyZXN0UG93ZXJPZlR3bygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZsb29yUG93ZXJPZlR3bygpLiIpO3JldHVybiBQLmZsb29yUG93ZXJPZlR3byhhKX0sbmV4dFBvd2VyT2ZUd286ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRoOiAubmV4dFBvd2VyT2ZUd28oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5jZWlsUG93ZXJPZlR3bygpLiIpO3JldHVybiBQLmNlaWxQb3dlck9mVHdvKGEpfX0pO09iamVjdC5hc3NpZ24oWi5wcm90b3R5cGUse2ZsYXR0ZW5Ub0FycmF5T2Zmc2V0OmZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLnRvQXJyYXkoYSxiKX0sbXVsdGlwbHlWZWN0b3IzOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpOwpyZXR1cm4gYS5hcHBseU1hdHJpeDModGhpcyl9LG11bHRpcGx5VmVjdG9yM0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYXBwbHlUb0J1ZmZlcjpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvQnVmZmVyKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCBhdHRyaWJ1dGUgKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoYSl9LGFwcGx5VG9WZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9fSk7T2JqZWN0LmFzc2lnbihRLnByb3RvdHlwZSx7ZXh0cmFjdFBvc2l0aW9uOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpOwpyZXR1cm4gdGhpcy5jb3B5UG9zaXRpb24oYSl9LGZsYXR0ZW5Ub0FycmF5T2Zmc2V0OmZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLnRvQXJyYXkoYSxiKX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKTtyZXR1cm4obmV3IG4pLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywzKX0sc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbjpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKS4iKTsKcmV0dXJuIHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oYSl9LG11bHRpcGx5VG9BcnJheTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VG9BcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG11bHRpcGx5VmVjdG9yMzpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKTtyZXR1cm4gYS5hcHBseU1hdHJpeDQodGhpcyl9LG11bHRpcGx5VmVjdG9yNDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKTtyZXR1cm4gYS5hcHBseU1hdHJpeDQodGhpcyl9LG11bHRpcGx5VmVjdG9yM0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sCnJvdGF0ZUF4aXM6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKTthLnRyYW5zZm9ybURpcmVjdGlvbih0aGlzKX0sY3Jvc3NWZWN0b3I6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKTtyZXR1cm4gYS5hcHBseU1hdHJpeDQodGhpcyl9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyb3RhdGVYOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyb3RhdGVZOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSwKcm90YXRlWjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scm90YXRlQnlBeGlzOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFwcGx5VG9CdWZmZXI6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb0J1ZmZlcigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXguYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSggYXR0cmlidXRlICkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy5hcHBseVRvQnVmZmVyQXR0cmlidXRlKGEpfSxhcHBseVRvVmVjdG9yM0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtYWtlRnJ1c3R1bTpmdW5jdGlvbihhLGIsYyxkLGUsZil7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZUZydXN0dW0oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLm1ha2VQZXJzcGVjdGl2ZSggbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tLCBuZWFyLCBmYXIgKSBpbnN0ZWFkLiIpOwpyZXR1cm4gdGhpcy5tYWtlUGVyc3BlY3RpdmUoYSxiLGQsYyxlLGYpfX0pO09hLnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkxpbmU9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIik7cmV0dXJuIHRoaXMuaW50ZXJzZWN0c0xpbmUoYSl9O3dhLnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGlzIG5vdyB2ZWN0b3IuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICkgaW5zdGVhZC4iKTtyZXR1cm4gYS5hcHBseVF1YXRlcm5pb24odGhpcyl9O09iamVjdC5hc3NpZ24oUmIucHJvdG90eXBlLHtpc0ludGVyc2VjdGlvbkJveDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpOwpyZXR1cm4gdGhpcy5pbnRlcnNlY3RzQm94KGEpfSxpc0ludGVyc2VjdGlvblBsYW5lOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25QbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNQbGFuZSgpLiIpO3JldHVybiB0aGlzLmludGVyc2VjdHNQbGFuZShhKX0saXNJbnRlcnNlY3Rpb25TcGhlcmU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKGEpfX0pO09iamVjdC5hc3NpZ24oYmEucHJvdG90eXBlLHthcmVhOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmFyZWEoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRBcmVhKCkuIik7cmV0dXJuIHRoaXMuZ2V0QXJlYSgpfSxiYXJ5Y29vcmRGcm9tUG9pbnQ6ZnVuY3Rpb24oYSwKYil7Y29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpO3JldHVybiB0aGlzLmdldEJhcnljb29yZChhLGIpfSxtaWRwb2ludDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubWlkcG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRNaWRwb2ludCgpLiIpO3JldHVybiB0aGlzLmdldE1pZHBvaW50KGEpfSxub3JtYWw6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpO3JldHVybiB0aGlzLmdldE5vcm1hbChhKX0scGxhbmU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLnBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0UGxhbmUoKS4iKTtyZXR1cm4gdGhpcy5nZXRQbGFuZShhKX19KTtPYmplY3QuYXNzaWduKGJhLAp7YmFyeWNvb3JkRnJvbVBvaW50OmZ1bmN0aW9uKGEsYixjLGQsZSl7Y29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpO3JldHVybiBiYS5nZXRCYXJ5Y29vcmQoYSxiLGMsZCxlKX0sbm9ybWFsOmZ1bmN0aW9uKGEsYixjLGQpe2NvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKTtyZXR1cm4gYmEuZ2V0Tm9ybWFsKGEsYixjLGQpfX0pO09iamVjdC5hc3NpZ24oSWIucHJvdG90eXBlLHtleHRyYWN0QWxsUG9pbnRzOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5leHRyYWN0QWxsUG9pbnRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5leHRyYWN0UG9pbnRzKCkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy5leHRyYWN0UG9pbnRzKGEpfSxleHRydWRlOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5leHRydWRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV4dHJ1ZGVHZW9tZXRyeSgpIGluc3RlYWQuIik7CnJldHVybiBuZXcgZGModGhpcyxhKX0sbWFrZUdlb21ldHJ5OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBlYyh0aGlzLGEpfX0pO09iamVjdC5hc3NpZ24oQi5wcm90b3R5cGUse2Zyb21BdHRyaWJ1dGU6ZnVuY3Rpb24oYSxiLGMpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIik7cmV0dXJuIHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGIsYyl9LGRpc3RhbmNlVG9NYW5oYXR0YW46ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKTtyZXR1cm4gdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKGEpfSwKbGVuZ3RoTWFuaGF0dGFuOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIik7cmV0dXJuIHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9fSk7T2JqZWN0LmFzc2lnbihuLnByb3RvdHlwZSx7c2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX0sc2V0RXVsZXJGcm9tUXVhdGVybmlvbjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21RdWF0ZXJuaW9uKCkgaW5zdGVhZC4iKX0sZ2V0UG9zaXRpb25Gcm9tTWF0cml4OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFBvc2l0aW9uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhQb3NpdGlvbigpLiIpOwpyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24oYSl9LGdldFNjYWxlRnJvbU1hdHJpeDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKTtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4U2NhbGUoYSl9LGdldENvbHVtbkZyb21NYXRyaXg6ZnVuY3Rpb24oYSxiKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRDb2x1bW5Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeENvbHVtbigpLiIpO3JldHVybiB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oYixhKX0sYXBwbHlQcm9qZWN0aW9uOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFwcGx5UHJvamVjdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuYXBwbHlNYXRyaXg0KCBtICkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQoYSl9LApmcm9tQXR0cmlidXRlOmZ1bmN0aW9uKGEsYixjKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpO3JldHVybiB0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxiLGMpfSxkaXN0YW5jZVRvTWFuaGF0dGFuOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIik7cmV0dXJuIHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyhhKX0sbGVuZ3RoTWFuaGF0dGFuOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIik7cmV0dXJuIHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9fSk7T2JqZWN0LmFzc2lnbihkYS5wcm90b3R5cGUsCntmcm9tQXR0cmlidXRlOmZ1bmN0aW9uKGEsYixjKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpO3JldHVybiB0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxiLGMpfSxsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKTtyZXR1cm4gdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KTtPYmplY3QuYXNzaWduKEcucHJvdG90eXBlLHtjb21wdXRlVGFuZ2VudHM6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HZW9tZXRyeTogLmNvbXB1dGVUYW5nZW50cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGNvbXB1dGVMaW5lRGlzdGFuY2VzOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuR2VvbWV0cnk6IC5jb21wdXRlTGluZURpc3RhbmNlcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgaW5zdGVhZC4iKX19KTsKT2JqZWN0LmFzc2lnbihFLnByb3RvdHlwZSx7Z2V0Q2hpbGRCeU5hbWU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldENoaWxkQnlOYW1lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0T2JqZWN0QnlOYW1lKCkuIik7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlOYW1lKGEpfSxyZW5kZXJEZXB0aDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoYixhKX0sZ2V0V29ybGRSb3RhdGlvbjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRSb3RhdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5PYmplY3QzRC5nZXRXb3JsZFF1YXRlcm5pb24oIHRhcmdldCApIGluc3RlYWQuIil9fSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEUucHJvdG90eXBlLHtldWxlck9yZGVyOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpO3JldHVybiB0aGlzLnJvdGF0aW9uLm9yZGVyfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKTt0aGlzLnJvdGF0aW9uLm9yZGVyPWF9fSx1c2VRdWF0ZXJuaW9uOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfX19KTsKT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTmQucHJvdG90eXBlLHtvYmplY3RzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxPRDogLm9iamVjdHMgaGFzIGJlZW4gcmVuYW1lZCB0byAubGV2ZWxzLiIpO3JldHVybiB0aGlzLmxldmVsc319fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE9lLnByb3RvdHlwZSwidXNlVmVydGV4VGV4dHVyZSIse2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IHVzZVZlcnRleFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogdXNlVmVydGV4VGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiIpfX0pO09kLnByb3RvdHlwZS5pbml0Qm9uZXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2lubmVkTWVzaDogaW5pdEJvbmVzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEMucHJvdG90eXBlLAoiX19hcmNMZW5ndGhEaXZpc2lvbnMiLHtnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuX19hcmNMZW5ndGhEaXZpc2lvbnMgaXMgbm93IC5hcmNMZW5ndGhEaXZpc2lvbnMuIik7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZTogLl9fYXJjTGVuZ3RoRGl2aXNpb25zIGlzIG5vdyAuYXJjTGVuZ3RoRGl2aXNpb25zLiIpO3RoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPWF9fSk7VS5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbihhLGIpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKTt2b2lkIDAhPT1iJiYodGhpcy5maWxtR2F1Z2U9Yik7dGhpcy5zZXRGb2NhbExlbmd0aChhKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVC5wcm90b3R5cGUsCntvbmx5U2hhZG93OntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93Q2FtZXJhRm92OntzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZvdiBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZm92LiIpO3RoaXMuc2hhZG93LmNhbWVyYS5mb3Y9YX19LHNoYWRvd0NhbWVyYUxlZnQ6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTGVmdCBpcyBub3cgLnNoYWRvdy5jYW1lcmEubGVmdC4iKTt0aGlzLnNoYWRvdy5jYW1lcmEubGVmdD1hfX0sc2hhZG93Q2FtZXJhUmlnaHQ6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LiIpO3RoaXMuc2hhZG93LmNhbWVyYS5yaWdodD1hfX0sc2hhZG93Q2FtZXJhVG9wOntzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVRvcCBpcyBub3cgLnNoYWRvdy5jYW1lcmEudG9wLiIpOwp0aGlzLnNoYWRvdy5jYW1lcmEudG9wPWF9fSxzaGFkb3dDYW1lcmFCb3R0b206e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhQm90dG9tIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5ib3R0b20uIik7dGhpcy5zaGFkb3cuY2FtZXJhLmJvdHRvbT1hfX0sc2hhZG93Q2FtZXJhTmVhcjp7c2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFOZWFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5uZWFyLiIpO3RoaXMuc2hhZG93LmNhbWVyYS5uZWFyPWF9fSxzaGFkb3dDYW1lcmFGYXI6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuIik7dGhpcy5zaGFkb3cuY2FtZXJhLmZhcj1hfX0sc2hhZG93Q2FtZXJhVmlzaWJsZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVZpc2libGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5DYW1lcmFIZWxwZXIoIGxpZ2h0LnNoYWRvdy5jYW1lcmEgKSBpbnN0ZWFkLiIpfX0sCnNoYWRvd0JpYXM6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93QmlhcyBpcyBub3cgLnNoYWRvdy5iaWFzLiIpO3RoaXMuc2hhZG93LmJpYXM9YX19LHNoYWRvd0RhcmtuZXNzOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93RGFya25lc3MgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd01hcFdpZHRoOntzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcFdpZHRoIGlzIG5vdyAuc2hhZG93Lm1hcFNpemUud2lkdGguIik7dGhpcy5zaGFkb3cubWFwU2l6ZS53aWR0aD1hfX0sc2hhZG93TWFwSGVpZ2h0OntzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcEhlaWdodCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLmhlaWdodC4iKTt0aGlzLnNoYWRvdy5tYXBTaXplLmhlaWdodD1hfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhOLnByb3RvdHlwZSwKe2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5jb3VudCBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLmFycmF5Lmxlbmd0aH19LGR5bmFtaWM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIik7cmV0dXJuIDM1MDQ4PT09dGhpcy51c2FnZX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKTt0aGlzLnNldFVzYWdlKDM1MDQ4KX19fSk7T2JqZWN0LmFzc2lnbihOLnByb3RvdHlwZSx7c2V0RHluYW1pYzpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKTsKdGhpcy5zZXRVc2FnZSghMD09PWE/MzUwNDg6MzUwNDQpO3JldHVybiB0aGlzfSxjb3B5SW5kaWNlc0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuY29weUluZGljZXNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldEFycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX19KTtPYmplY3QuYXNzaWduKEQucHJvdG90eXBlLHthZGRJbmRleDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpO3RoaXMuc2V0SW5kZXgoYSl9LGFkZEF0dHJpYnV0ZTpmdW5jdGlvbihhLGIsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEF0dHJpYnV0ZSgpLiIpOwpyZXR1cm4gYiYmYi5pc0J1ZmZlckF0dHJpYnV0ZXx8YiYmYi5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlPyJpbmRleCI9PT1hPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleChiKSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZShhLGIpOihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZShhLG5ldyBOKGIsYykpKX0sYWRkRHJhd0NhbGw6ZnVuY3Rpb24oYSxiLGMpe3ZvaWQgMCE9PWMmJmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIG5vIGxvbmdlciBzdXBwb3J0cyBpbmRleE9mZnNldC4iKTtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBpcyBub3cgLmFkZEdyb3VwKCkuIik7CnRoaXMuYWRkR3JvdXAoYSxiKX0sY2xlYXJEcmF3Q2FsbHM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIik7dGhpcy5jbGVhckdyb3VwcygpfSxjb21wdXRlVGFuZ2VudHM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sY29tcHV0ZU9mZnNldHM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyZW1vdmVBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpO3JldHVybiB0aGlzLmRlbGV0ZUF0dHJpYnV0ZShhKX19KTsKT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRC5wcm90b3R5cGUse2RyYXdjYWxsczp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpO3JldHVybiB0aGlzLmdyb3Vwc319LG9mZnNldHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKTtyZXR1cm4gdGhpcy5ncm91cHN9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBiLnByb3RvdHlwZSx7ZHluYW1pYzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIik7cmV0dXJuIDM1MDQ4PT09dGhpcy51c2FnZX0sc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpOwp0aGlzLnNldFVzYWdlKGEpfX19KTtPYmplY3QuYXNzaWduKHBiLnByb3RvdHlwZSx7c2V0RHluYW1pYzpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpO3RoaXMuc2V0VXNhZ2UoITA9PT1hPzM1MDQ4OjM1MDQ0KTtyZXR1cm4gdGhpc30sc2V0QXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9fSk7T2JqZWN0LmFzc2lnbihkYi5wcm90b3R5cGUse2dldEFycmF5czpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LAphZGRTaGFwZUxpc3Q6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhZGRTaGFwZTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTogLmFkZFNoYXBlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwZi5wcm90b3R5cGUse2R5bmFtaWM6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLmR5bmFtaWMgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIil9fSxvblVwZGF0ZTp7dmFsdWU6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IC5vblVwZGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBvYmplY3Qub25CZWZvcmVSZW5kZXIoKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX19KTsKT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTy5wcm90b3R5cGUse3dyYXBBcm91bmQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwQXJvdW5kIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwQXJvdW5kIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxvdmVyZHJhdzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sd3JhcFJHQjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBSR0IgaGFzIGJlZW4gcmVtb3ZlZC4iKTtyZXR1cm4gbmV3IEp9fSxzaGFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS4iKwp0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIik7dGhpcy5mbGF0U2hhZGluZz0xPT09YX19LHN0ZW5jaWxNYXNrOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLnN0ZW5jaWxGdW5jTWFza30sc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIik7dGhpcy5zdGVuY2lsRnVuY01hc2s9CmF9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJhLnByb3RvdHlwZSx7bWV0YWw6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWVzaFBob25nTWF0ZXJpYWw6IC5tZXRhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwgaW5zdGVhZC4iKTtyZXR1cm4hMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbDogLm1ldGFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCBpbnN0ZWFkIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHZhLnByb3RvdHlwZSx7ZGVyaXZhdGl2ZXM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKTtyZXR1cm4gdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzfSwKc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIik7dGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPWF9fX0pO09iamVjdC5hc3NpZ24oaGcucHJvdG90eXBlLHtjbGVhclRhcmdldDpmdW5jdGlvbihhLGIsYyxkKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jbGVhclRhcmdldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0UmVuZGVyVGFyZ2V0KCkgYW5kIC5jbGVhcigpIGluc3RlYWQuIik7dGhpcy5zZXRSZW5kZXJUYXJnZXQoYSk7dGhpcy5jbGVhcihiLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpO3RoaXMuc2V0QW5pbWF0aW9uTG9vcChhKX0sZ2V0Q3VycmVudFJlbmRlclRhcmdldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpOwpyZXR1cm4gdGhpcy5nZXRSZW5kZXJUYXJnZXQoKX0sZ2V0TWF4QW5pc290cm9weTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldE1heEFuaXNvdHJvcHkoKSBpcyBub3cgLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkuIik7cmV0dXJuIHRoaXMuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKX0sZ2V0UHJlY2lzaW9uOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpO3JldHVybiB0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb259LHJlc2V0R0xTdGF0ZTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnJlc2V0R0xTdGF0ZSgpIGlzIG5vdyAuc3RhdGUucmVzZXQoKS4iKTtyZXR1cm4gdGhpcy5zdGF0ZS5yZXNldCgpfSxzdXBwb3J0c0Zsb2F0VGV4dHVyZXM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0Zsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXQnICkuIik7CnJldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfSxzdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApLiIpO3JldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iil9LHN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlczpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMnICkuIik7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfSxzdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQzpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApLiIpOwpyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKX0sc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YycgKS4iKTtyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9LHN1cHBvcnRzQmxlbmRNaW5NYXg6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIik7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKX0sc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlczpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4iKTsKcmV0dXJuIHRoaXMuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzfSxzdXBwb3J0c0luc3RhbmNlZEFycmF5czpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIik7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKX0sZW5hYmxlU2Npc3NvclRlc3Q6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZW5hYmxlU2Npc3NvclRlc3QoKSBpcyBub3cgLnNldFNjaXNzb3JUZXN0KCkuIik7dGhpcy5zZXRTY2lzc29yVGVzdChhKX0saW5pdE1hdGVyaWFsOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuaW5pdE1hdGVyaWFsKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYWRkUHJlUGx1Z2luOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUHJlUGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sCmFkZFBvc3RQbHVnaW46ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sdXBkYXRlU2hhZG93TWFwOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0RmFjZUN1bGxpbmc6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRGYWNlQ3VsbGluZygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFsbG9jVGV4dHVyZVVuaXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0VGV4dHVyZTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXRUZXh0dXJlMkQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlMkQoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSwKc2V0VGV4dHVyZUN1YmU6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlQ3ViZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdldEFjdGl2ZU1pcE1hcExldmVsOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0QWN0aXZlTWlwTWFwTGV2ZWwoKSBpcyBub3cgLmdldEFjdGl2ZU1pcG1hcExldmVsKCkuIik7cmV0dXJuIHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhoZy5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpO3RoaXMuc2hhZG93TWFwLmVuYWJsZWQ9YX19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSwKc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKTt0aGlzLnNoYWRvd01hcC50eXBlPWF9fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy5nZXRDb250ZXh0KCl9fX0pOwpPYmplY3QuZGVmaW5lUHJvcGVydGllcyhJaC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sCnJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEJiLnByb3RvdHlwZSx7YWN0aXZlQ3ViZUZhY2U6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXRDdWJlOiAuYWN0aXZlQ3ViZUZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gSXQgaXMgbm93IHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIFdlYkdMUmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KCkuIil9fSwKYWN0aXZlTWlwTWFwTGV2ZWw6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXRDdWJlOiAuYWN0aXZlTWlwTWFwTGV2ZWwgaGFzIGJlZW4gcmVtb3ZlZC4gSXQgaXMgbm93IHRoZSB0aGlyZCBwYXJhbWV0ZXIgb2YgV2ViR0xSZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQoKS4iKX19fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQmEucHJvdG90eXBlLHt3cmFwUzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKTtyZXR1cm4gdGhpcy50ZXh0dXJlLndyYXBTfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKTt0aGlzLnRleHR1cmUud3JhcFM9YX19LHdyYXBUOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULiIpOwpyZXR1cm4gdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKTt0aGlzLnRleHR1cmUud3JhcFQ9YX19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpO3JldHVybiB0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpO3RoaXMudGV4dHVyZS5tYWdGaWx0ZXI9YX19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpO3JldHVybiB0aGlzLnRleHR1cmUubWluRmlsdGVyfSwKc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKTt0aGlzLnRleHR1cmUubWluRmlsdGVyPWF9fSxhbmlzb3Ryb3B5OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKTtyZXR1cm4gdGhpcy50ZXh0dXJlLmFuaXNvdHJvcHl9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKTt0aGlzLnRleHR1cmUuYW5pc290cm9weT1hfX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIik7cmV0dXJuIHRoaXMudGV4dHVyZS5vZmZzZXR9LApzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm9mZnNldCBpcyBub3cgLnRleHR1cmUub2Zmc2V0LiIpO3RoaXMudGV4dHVyZS5vZmZzZXQ9YX19LHJlcGVhdDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpO3JldHVybiB0aGlzLnRleHR1cmUucmVwZWF0fSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpO3RoaXMudGV4dHVyZS5yZXBlYXQ9YX19LGZvcm1hdDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpO3JldHVybiB0aGlzLnRleHR1cmUuZm9ybWF0fSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpOwp0aGlzLnRleHR1cmUuZm9ybWF0PWF9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKTtyZXR1cm4gdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKTt0aGlzLnRleHR1cmUudHlwZT1hfX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIik7cmV0dXJuIHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIik7CnRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9YX19fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZ2cucHJvdG90eXBlLHtzdGFuZGluZzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJWUk1hbmFnZXI6IC5zdGFuZGluZyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sdXNlckhlaWdodDp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJWUk1hbmFnZXI6IC51c2VySGVpZ2h0IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNkLnByb3RvdHlwZSx7bG9hZDp7dmFsdWU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogLmxvYWQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkF1ZGlvTG9hZGVyIGluc3RlYWQuIik7dmFyIGI9dGhpczsobmV3IG5mKS5sb2FkKGEsZnVuY3Rpb24oYSl7Yi5zZXRCdWZmZXIoYSl9KTtyZXR1cm4gdGhpc319LHN0YXJ0VGltZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogLnN0YXJ0VGltZSBpcyBub3cgLnBsYXkoIGRlbGF5ICkuIil9fX0pOwpEZy5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW9BbmFseXNlcjogLmdldERhdGEoKSBpcyBub3cgLmdldEZyZXF1ZW5jeURhdGEoKS4iKTtyZXR1cm4gdGhpcy5nZXRGcmVxdWVuY3lEYXRhKCl9O0JjLnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAudXBkYXRlQ3ViZU1hcCgpIGlzIG5vdyAudXBkYXRlKCkuIik7cmV0dXJuIHRoaXMudXBkYXRlKGEsYil9O0piLmNyb3NzT3JpZ2luPXZvaWQgMDtKYi5sb2FkVGV4dHVyZT1mdW5jdGlvbihhLGIsYyxkKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLlRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO3ZhciBlPW5ldyBaZTtlLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2E9ZS5sb2FkKGEsYyx2b2lkIDAsZCk7CmImJihhLm1hcHBpbmc9Yik7cmV0dXJuIGF9O0piLmxvYWRUZXh0dXJlQ3ViZT1mdW5jdGlvbihhLGIsYyxkKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmVDdWJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DdWJlVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7dmFyIGU9bmV3IFllO2Uuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7YT1lLmxvYWQoYSxjLHZvaWQgMCxkKTtiJiYoYS5tYXBwaW5nPWIpO3JldHVybiBhfTtKYi5sb2FkQ29tcHJlc3NlZFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O0piLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfTsKInVuZGVmaW5lZCIhPT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlZ2lzdGVyIix7ZGV0YWlsOntyZXZpc2lvbjoiMTEwIn19KSk7ay5BQ0VTRmlsbWljVG9uZU1hcHBpbmc9NTtrLkFkZEVxdWF0aW9uPTEwMDtrLkFkZE9wZXJhdGlvbj0yO2suQWRkaXRpdmVCbGVuZGluZz0yO2suQWxwaGFGb3JtYXQ9MTAyMTtrLkFsd2F5c0RlcHRoPTE7ay5BbHdheXNTdGVuY2lsRnVuYz01MTk7ay5BbWJpZW50TGlnaHQ9ZmY7ay5BbWJpZW50TGlnaHRQcm9iZT15ZztrLkFuaW1hdGlvbkNsaXA9TWE7ay5BbmltYXRpb25Mb2FkZXI9cGc7ay5BbmltYXRpb25NaXhlcj1GZztrLkFuaW1hdGlvbk9iamVjdEdyb3VwPWNpO2suQW5pbWF0aW9uVXRpbHM9dGE7ay5BcmNDdXJ2ZT1iZDtrLkFycmF5Q2FtZXJhPUpkO2suQXJyb3dIZWxwZXI9dWI7ay5BdWRpbz1jZDtrLkF1ZGlvQW5hbHlzZXI9RGc7ay5BdWRpb0NvbnRleHQ9CkJnO2suQXVkaW9MaXN0ZW5lcj1BZztrLkF1ZGlvTG9hZGVyPW5mO2suQXhlc0hlbHBlcj12ZTtrLkF4aXNIZWxwZXI9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5BeGlzSGVscGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuQXhlc0hlbHBlci4iKTtyZXR1cm4gbmV3IHZlKGEpfTtrLkJhY2tTaWRlPTE7ay5CYXNpY0RlcHRoUGFja2luZz0zMjAwO2suQmFzaWNTaGFkb3dNYXA9MDtrLkJpbmFyeVRleHR1cmVMb2FkZXI9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5CaW5hcnlUZXh0dXJlTG9hZGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuRGF0YVRleHR1cmVMb2FkZXIuIik7cmV0dXJuIG5ldyBYZShhKX07ay5Cb25lPWlnO2suQm9vbGVhbktleWZyYW1lVHJhY2s9VGU7ay5Cb3VuZGluZ0JveEhlbHBlcj1mdW5jdGlvbihhLGIpe2NvbnNvbGUud2FybigiVEhSRUUuQm91bmRpbmdCb3hIZWxwZXIgaGFzIGJlZW4gZGVwcmVjYXRlZC4gQ3JlYXRpbmcgYSBUSFJFRS5Cb3hIZWxwZXIgaW5zdGVhZC4iKTsKcmV0dXJuIG5ldyB0YihhLGIpfTtrLkJveDI9SWc7ay5Cb3gzPWFiO2suQm94M0hlbHBlcj10ZTtrLkJveEJ1ZmZlckdlb21ldHJ5PUZkO2suQm94R2VvbWV0cnk9Wmc7ay5Cb3hIZWxwZXI9dGI7ay5CdWZmZXJBdHRyaWJ1dGU9TjtrLkJ1ZmZlckdlb21ldHJ5PUQ7ay5CdWZmZXJHZW9tZXRyeUxvYWRlcj1sZjtrLkJ5dGVUeXBlPTEwMTA7ay5DYWNoZT1zYztrLkNhbWVyYT1iYjtrLkNhbWVyYUhlbHBlcj1zZTtrLkNhbnZhc1JlbmRlcmVyPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQ2FudmFzUmVuZGVyZXIgaGFzIGJlZW4gcmVtb3ZlZCIpfTtrLkNhbnZhc1RleHR1cmU9UGQ7ay5DYXRtdWxsUm9tQ3VydmUzPW1hO2suQ2luZW9uVG9uZU1hcHBpbmc9NDtrLkNpcmNsZUJ1ZmZlckdlb21ldHJ5PVhjO2suQ2lyY2xlR2VvbWV0cnk9amU7ay5DbGFtcFRvRWRnZVdyYXBwaW5nPTEwMDE7ay5DbG9jaz16ZztrLkNsb3NlZFNwbGluZUN1cnZlMz1qaTtrLkNvbG9yPUo7ay5Db2xvcktleWZyYW1lVHJhY2s9ClVlO2suQ29tcHJlc3NlZFRleHR1cmU9S2M7ay5Db21wcmVzc2VkVGV4dHVyZUxvYWRlcj1xZztrLkNvbmVCdWZmZXJHZW9tZXRyeT1pZTtrLkNvbmVHZW9tZXRyeT1oZTtrLkN1YmVDYW1lcmE9QmM7ay5DdWJlR2VvbWV0cnk9Wmc7ay5DdWJlUmVmbGVjdGlvbk1hcHBpbmc9MzAxO2suQ3ViZVJlZnJhY3Rpb25NYXBwaW5nPTMwMjtrLkN1YmVUZXh0dXJlPW5iO2suQ3ViZVRleHR1cmVMb2FkZXI9WWU7ay5DdWJlVVZSZWZsZWN0aW9uTWFwcGluZz0zMDY7ay5DdWJlVVZSZWZyYWN0aW9uTWFwcGluZz0zMDc7ay5DdWJpY0JlemllckN1cnZlPVNhO2suQ3ViaWNCZXppZXJDdXJ2ZTM9ZmI7ay5DdWJpY0ludGVycG9sYW50PVJlO2suQ3VsbEZhY2VCYWNrPTE7ay5DdWxsRmFjZUZyb250PTI7ay5DdWxsRmFjZUZyb250QmFjaz0zO2suQ3VsbEZhY2VOb25lPTA7ay5DdXJ2ZT1DO2suQ3VydmVQYXRoPXNiO2suQ3VzdG9tQmxlbmRpbmc9NTtrLkN5bGluZGVyQnVmZmVyR2VvbWV0cnk9cmI7ay5DeWxpbmRlckdlb21ldHJ5PQpnYztrLkN5bGluZHJpY2FsPWhpO2suRGF0YVRleHR1cmU9WWI7ay5EYXRhVGV4dHVyZTJEQXJyYXk9Q2M7ay5EYXRhVGV4dHVyZTNEPURjO2suRGF0YVRleHR1cmVMb2FkZXI9WGU7ay5EZWNyZW1lbnRTdGVuY2lsT3A9NzY4MztrLkRlY3JlbWVudFdyYXBTdGVuY2lsT3A9MzQwNTY7ay5EZWZhdWx0TG9hZGluZ01hbmFnZXI9Wmg7ay5EZXB0aEZvcm1hdD0xMDI2O2suRGVwdGhTdGVuY2lsRm9ybWF0PTEwMjc7ay5EZXB0aFRleHR1cmU9UWQ7ay5EaXJlY3Rpb25hbExpZ2h0PWVmO2suRGlyZWN0aW9uYWxMaWdodEhlbHBlcj1rZDtrLkRpcmVjdGlvbmFsTGlnaHRTaGFkb3c9ZGY7ay5EaXNjcmV0ZUludGVycG9sYW50PVNlO2suRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk9UGM7ay5Eb2RlY2FoZWRyb25HZW9tZXRyeT1XZDtrLkRvdWJsZVNpZGU9MjtrLkRzdEFscGhhRmFjdG9yPTIwNjtrLkRzdENvbG9yRmFjdG9yPTIwODtrLkR5bmFtaWNCdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24oYSwKYil7Y29uc29sZS53YXJuKCJUSFJFRS5EeW5hbWljQnVmZmVyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKCkuc2V0RHluYW1pYyggdHJ1ZSApIGluc3RlYWQuIik7cmV0dXJuKG5ldyBOKGEsYikpLnNldER5bmFtaWMoITApfTtrLkR5bmFtaWNDb3B5VXNhZ2U9MzUwNTA7ay5EeW5hbWljRHJhd1VzYWdlPTM1MDQ4O2suRHluYW1pY1JlYWRVc2FnZT0zNTA0OTtrLkVkZ2VzR2VvbWV0cnk9V2M7ay5FZGdlc0hlbHBlcj1mdW5jdGlvbihhLGIpe2NvbnNvbGUud2FybigiVEhSRUUuRWRnZXNIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkVkZ2VzR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IFgobmV3IFdjKGEuZ2VvbWV0cnkpLG5ldyBSKHtjb2xvcjp2b2lkIDAhPT1iP2I6MTY3NzcyMTV9KSl9O2suRWxsaXBzZUN1cnZlPUphO2suRXF1YWxEZXB0aD00O2suRXF1YWxTdGVuY2lsRnVuYz01MTQ7ay5FcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZz0KMzAzO2suRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc9MzA0O2suRXVsZXI9UGI7ay5FdmVudERpc3BhdGNoZXI9QWE7ay5FeHRydWRlQnVmZmVyR2VvbWV0cnk9ZGI7ay5FeHRydWRlR2VvbWV0cnk9ZGM7ay5GYWNlMz14YztrLkZhY2U0PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2NvbnNvbGUud2FybigiVEhSRUUuRmFjZTQgaGFzIGJlZW4gcmVtb3ZlZC4gQSBUSFJFRS5GYWNlMyB3aWxsIGJlIGNyZWF0ZWQgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IHhjKGEsYixjLGUsZixnKX07ay5GYWNlQ29sb3JzPTE7ay5GYWNlTm9ybWFsc0hlbHBlcj1yZTtrLkZpbGVMb2FkZXI9TmE7ay5GbGF0U2hhZGluZz0xO2suRmxvYXQzMkF0dHJpYnV0ZT1mdW5jdGlvbihhLGIpe2NvbnNvbGUud2FybigiVEhSRUUuRmxvYXQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgQShhLApiKX07ay5GbG9hdDMyQnVmZmVyQXR0cmlidXRlPUE7ay5GbG9hdDY0QXR0cmlidXRlPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5GbG9hdDY0QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBCZChhLGIpfTtrLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGU9QmQ7ay5GbG9hdFR5cGU9MTAxNTtrLkZvZz1NZTtrLkZvZ0V4cDI9TGU7ay5Gb250PXZnO2suRm9udExvYWRlcj13ZztrLkZyb250RmFjZURpcmVjdGlvbkNDVz0xO2suRnJvbnRGYWNlRGlyZWN0aW9uQ1c9MDtrLkZyb250U2lkZT0wO2suRnJ1c3R1bT1EZDtrLkdhbW1hRW5jb2Rpbmc9MzAwNztrLkdlb21ldHJ5PUc7ay5HZW9tZXRyeVV0aWxzPXttZXJnZTpmdW5jdGlvbihhLGIsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5HZW9tZXRyeVV0aWxzOiAubWVyZ2UoKSBoYXMgYmVlbiBtb3ZlZCB0byBHZW9tZXRyeS4gVXNlIGdlb21ldHJ5Lm1lcmdlKCBnZW9tZXRyeTIsIG1hdHJpeCwgbWF0ZXJpYWxJbmRleE9mZnNldCApIGluc3RlYWQuIik7CmlmKGIuaXNNZXNoKXtiLm1hdHJpeEF1dG9VcGRhdGUmJmIudXBkYXRlTWF0cml4KCk7dmFyIGQ9Yi5tYXRyaXg7Yj1iLmdlb21ldHJ5fWEubWVyZ2UoYixkLGMpfSxjZW50ZXI6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5HZW9tZXRyeVV0aWxzOiAuY2VudGVyKCkgaGFzIGJlZW4gbW92ZWQgdG8gR2VvbWV0cnkuIFVzZSBnZW9tZXRyeS5jZW50ZXIoKSBpbnN0ZWFkLiIpO3JldHVybiBhLmNlbnRlcigpfX07ay5HcmVhdGVyRGVwdGg9NjtrLkdyZWF0ZXJFcXVhbERlcHRoPTU7ay5HcmVhdGVyRXF1YWxTdGVuY2lsRnVuYz01MTg7ay5HcmVhdGVyU3RlbmNpbEZ1bmM9NTE2O2suR3JpZEhlbHBlcj1xZjtrLkdyb3VwPUdjO2suSGFsZkZsb2F0VHlwZT0xMDE2O2suSGVtaXNwaGVyZUxpZ2h0PSRlO2suSGVtaXNwaGVyZUxpZ2h0SGVscGVyPWhkO2suSGVtaXNwaGVyZUxpZ2h0UHJvYmU9eGc7ay5JY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5PU9jO2suSWNvc2FoZWRyb25HZW9tZXRyeT0KVmQ7ay5JbWFnZUJpdG1hcExvYWRlcj10ZztrLkltYWdlTG9hZGVyPWFkO2suSW1hZ2VVdGlscz1KYjtrLkltbWVkaWF0ZVJlbmRlck9iamVjdD1wZTtrLkluY3JlbWVudFN0ZW5jaWxPcD03NjgyO2suSW5jcmVtZW50V3JhcFN0ZW5jaWxPcD0zNDA1NTtrLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT1rZjtrLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PWpmO2suSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9R2c7ay5JbnN0YW5jZWRNZXNoPVBlO2suSW50MTZBdHRyaWJ1dGU9ZnVuY3Rpb24oYSxiKXtjb25zb2xlLndhcm4oIlRIUkVFLkludDE2QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgemQoYSxiKX07ay5JbnQxNkJ1ZmZlckF0dHJpYnV0ZT16ZDtrLkludDMyQXR0cmlidXRlPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5JbnQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKTsKcmV0dXJuIG5ldyBBZChhLGIpfTtrLkludDMyQnVmZmVyQXR0cmlidXRlPUFkO2suSW50OEF0dHJpYnV0ZT1mdW5jdGlvbihhLGIpe2NvbnNvbGUud2FybigiVEhSRUUuSW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDhCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgd2QoYSxiKX07ay5JbnQ4QnVmZmVyQXR0cmlidXRlPXdkO2suSW50VHlwZT0xMDEzO2suSW50ZXJsZWF2ZWRCdWZmZXI9cGI7ay5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT1LZDtrLkludGVycG9sYW50PUlhO2suSW50ZXJwb2xhdGVEaXNjcmV0ZT0yMzAwO2suSW50ZXJwb2xhdGVMaW5lYXI9MjMwMTtrLkludGVycG9sYXRlU21vb3RoPTIzMDI7ay5JbnZlcnRTdGVuY2lsT3A9NTM4NjtrLkpTT05Mb2FkZXI9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5KU09OTG9hZGVyIGhhcyBiZWVuIHJlbW92ZWQuIil9O2suS2VlcFN0ZW5jaWxPcD03NjgwOwprLktleWZyYW1lVHJhY2s9c2E7ay5MT0Q9TmQ7ay5MYXRoZUJ1ZmZlckdlb21ldHJ5PVZjO2suTGF0aGVHZW9tZXRyeT1nZTtrLkxheWVycz1UZjtrLkxlbnNGbGFyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxlbnNGbGFyZSBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanMvb2JqZWN0cy9MZW5zZmxhcmUuanMiKX07ay5MZXNzRGVwdGg9MjtrLkxlc3NFcXVhbERlcHRoPTM7ay5MZXNzRXF1YWxTdGVuY2lsRnVuYz01MTU7ay5MZXNzU3RlbmNpbEZ1bmM9NTEzO2suTGlnaHQ9VDtrLkxpZ2h0UHJvYmU9WGE7ay5MaWdodFByb2JlSGVscGVyPWlkO2suTGlnaHRTaGFkb3c9aGI7ay5MaW5lPXJhO2suTGluZTM9Smc7ay5MaW5lQmFzaWNNYXRlcmlhbD1SO2suTGluZUN1cnZlPURhO2suTGluZUN1cnZlMz1UYTtrLkxpbmVEYXNoZWRNYXRlcmlhbD1uYztrLkxpbmVMb29wPVFlO2suTGluZVBpZWNlcz0xO2suTGluZVNlZ21lbnRzPVg7ay5MaW5lU3RyaXA9MDtrLkxpbmVhckVuY29kaW5nPQozRTM7ay5MaW5lYXJGaWx0ZXI9MTAwNjtrLkxpbmVhckludGVycG9sYW50PWtlO2suTGluZWFyTWlwTWFwTGluZWFyRmlsdGVyPTEwMDg7ay5MaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyPTEwMDc7ay5MaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXI9MTAwODtrLkxpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI9MTAwNztrLkxpbmVhclRvbmVNYXBwaW5nPTE7ay5Mb2FkZXI9VjtrLkxvYWRlclV0aWxzPWVoO2suTG9hZGluZ01hbmFnZXI9b2c7ay5Mb2dMdXZFbmNvZGluZz0zMDAzO2suTG9vcE9uY2U9MjIwMDtrLkxvb3BQaW5nUG9uZz0yMjAyO2suTG9vcFJlcGVhdD0yMjAxO2suTHVtaW5hbmNlQWxwaGFGb3JtYXQ9MTAyNTtrLkx1bWluYW5jZUZvcm1hdD0xMDI0O2suTU9VU0U9e0xFRlQ6MCxNSURETEU6MSxSSUdIVDoyLFJPVEFURTowLERPTExZOjEsUEFOOjJ9O2suTWF0ZXJpYWw9TztrLk1hdGVyaWFsTG9hZGVyPWhmO2suTWF0aD1QO2suTWF0cml4Mz1aO2suTWF0cml4ND1RO2suTWF4RXF1YXRpb249CjEwNDtrLk1lc2g9ZWE7ay5NZXNoQmFzaWNNYXRlcmlhbD1HYTtrLk1lc2hEZXB0aE1hdGVyaWFsPURiO2suTWVzaERpc3RhbmNlTWF0ZXJpYWw9RWI7ay5NZXNoRmFjZU1hdGVyaWFsPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWVzaEZhY2VNYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYW4gQXJyYXkgaW5zdGVhZC4iKTtyZXR1cm4gYX07ay5NZXNoTGFtYmVydE1hdGVyaWFsPWxjO2suTWVzaE1hdGNhcE1hdGVyaWFsPW1jO2suTWVzaE5vcm1hbE1hdGVyaWFsPWtjO2suTWVzaFBob25nTWF0ZXJpYWw9UmE7ay5NZXNoUGh5c2ljYWxNYXRlcmlhbD1pYztrLk1lc2hTdGFuZGFyZE1hdGVyaWFsPWViO2suTWVzaFRvb25NYXRlcmlhbD1qYztrLk1pbkVxdWF0aW9uPTEwMztrLk1pcnJvcmVkUmVwZWF0V3JhcHBpbmc9MTAwMjtrLk1peE9wZXJhdGlvbj0xO2suTXVsdGlNYXRlcmlhbD1mdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT1bXSk7Y29uc29sZS53YXJuKCJUSFJFRS5NdWx0aU1hdGVyaWFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhbiBBcnJheSBpbnN0ZWFkLiIpOwphLmlzTXVsdGlNYXRlcmlhbD0hMDthLm1hdGVyaWFscz1hO2EuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5zbGljZSgpfTtyZXR1cm4gYX07ay5NdWx0aXBseUJsZW5kaW5nPTQ7ay5NdWx0aXBseU9wZXJhdGlvbj0wO2suTmVhcmVzdEZpbHRlcj0xMDAzO2suTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlcj0xMDA1O2suTmVhcmVzdE1pcE1hcE5lYXJlc3RGaWx0ZXI9MTAwNDtrLk5lYXJlc3RNaXBtYXBMaW5lYXJGaWx0ZXI9MTAwNTtrLk5lYXJlc3RNaXBtYXBOZWFyZXN0RmlsdGVyPTEwMDQ7ay5OZXZlckRlcHRoPTA7ay5OZXZlclN0ZW5jaWxGdW5jPTUxMjtrLk5vQmxlbmRpbmc9MDtrLk5vQ29sb3JzPTA7ay5Ob1RvbmVNYXBwaW5nPTA7ay5Ob3JtYWxCbGVuZGluZz0xO2suTm90RXF1YWxEZXB0aD03O2suTm90RXF1YWxTdGVuY2lsRnVuYz01MTc7ay5OdW1iZXJLZXlmcmFtZVRyYWNrPVpjO2suT2JqZWN0M0Q9RTtrLk9iamVjdExvYWRlcj1tZjtrLk9iamVjdFNwYWNlTm9ybWFsTWFwPQoxO2suT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5PWFjO2suT2N0YWhlZHJvbkdlb21ldHJ5PVVkO2suT25lRmFjdG9yPTIwMTtrLk9uZU1pbnVzRHN0QWxwaGFGYWN0b3I9MjA3O2suT25lTWludXNEc3RDb2xvckZhY3Rvcj0yMDk7ay5PbmVNaW51c1NyY0FscGhhRmFjdG9yPTIwNTtrLk9uZU1pbnVzU3JjQ29sb3JGYWN0b3I9MjAzO2suT3J0aG9ncmFwaGljQ2FtZXJhPW9lO2suUENGU2hhZG93TWFwPTE7ay5QQ0ZTb2Z0U2hhZG93TWFwPTI7ay5QYXJhbWV0cmljQnVmZmVyR2VvbWV0cnk9TWM7ay5QYXJhbWV0cmljR2VvbWV0cnk9UmQ7ay5QYXJ0aWNsZT1mdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuU3ByaXRlLiIpO3JldHVybiBuZXcgTGQoYSl9O2suUGFydGljbGVCYXNpY01hdGVyaWFsPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGVCYXNpY01hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIik7CnJldHVybiBuZXcgUWEoYSl9O2suUGFydGljbGVTeXN0ZW09ZnVuY3Rpb24oYSxiKXtjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlU3lzdGVtIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzLiIpO3JldHVybiBuZXcgSmMoYSxiKX07ay5QYXJ0aWNsZVN5c3RlbU1hdGVyaWFsPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGVTeXN0ZW1NYXRlcmlhbCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50c01hdGVyaWFsLiIpO3JldHVybiBuZXcgUWEoYSl9O2suUGF0aD1XYTtrLlBlcnNwZWN0aXZlQ2FtZXJhPVU7ay5QbGFuZT1PYTtrLlBsYW5lQnVmZmVyR2VvbWV0cnk9WmI7ay5QbGFuZUdlb21ldHJ5PUVkO2suUGxhbmVIZWxwZXI9dWU7ay5Qb2ludENsb3VkPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5Qb2ludENsb3VkIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzLiIpO3JldHVybiBuZXcgSmMoYSxiKX07ay5Qb2ludENsb3VkTWF0ZXJpYWw9CmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIik7cmV0dXJuIG5ldyBRYShhKX07ay5Qb2ludExpZ2h0PWNmO2suUG9pbnRMaWdodEhlbHBlcj1mZDtrLlBvaW50cz1KYztrLlBvaW50c01hdGVyaWFsPVFhO2suUG9sYXJHcmlkSGVscGVyPXJmO2suUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5PUVhO2suUG9seWhlZHJvbkdlb21ldHJ5PVNkO2suUG9zaXRpb25hbEF1ZGlvPUNnO2suUG9zaXRpb25hbEF1ZGlvSGVscGVyPWpkO2suUHJvcGVydHlCaW5kaW5nPXlhO2suUHJvcGVydHlNaXhlcj1FZztrLlF1YWRyYXRpY0JlemllckN1cnZlPVVhO2suUXVhZHJhdGljQmV6aWVyQ3VydmUzPWdiO2suUXVhdGVybmlvbj13YTtrLlF1YXRlcm5pb25LZXlmcmFtZVRyYWNrPWxlO2suUXVhdGVybmlvbkxpbmVhckludGVycG9sYW50PVZlO2suUkVWSVNJT049IjExMCI7ay5SR0JBRGVwdGhQYWNraW5nPQozMjAxO2suUkdCQUZvcm1hdD0xMDIzO2suUkdCQV9BU1RDXzEweDEwX0Zvcm1hdD0zNzgxOTtrLlJHQkFfQVNUQ18xMHg1X0Zvcm1hdD0zNzgxNjtrLlJHQkFfQVNUQ18xMHg2X0Zvcm1hdD0zNzgxNztrLlJHQkFfQVNUQ18xMHg4X0Zvcm1hdD0zNzgxODtrLlJHQkFfQVNUQ18xMngxMF9Gb3JtYXQ9Mzc4MjA7ay5SR0JBX0FTVENfMTJ4MTJfRm9ybWF0PTM3ODIxO2suUkdCQV9BU1RDXzR4NF9Gb3JtYXQ9Mzc4MDg7ay5SR0JBX0FTVENfNXg0X0Zvcm1hdD0zNzgwOTtrLlJHQkFfQVNUQ181eDVfRm9ybWF0PTM3ODEwO2suUkdCQV9BU1RDXzZ4NV9Gb3JtYXQ9Mzc4MTE7ay5SR0JBX0FTVENfNng2X0Zvcm1hdD0zNzgxMjtrLlJHQkFfQVNUQ184eDVfRm9ybWF0PTM3ODEzO2suUkdCQV9BU1RDXzh4Nl9Gb3JtYXQ9Mzc4MTQ7ay5SR0JBX0FTVENfOHg4X0Zvcm1hdD0zNzgxNTtrLlJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdD0zNTg0MztrLlJHQkFfUFZSVENfNEJQUFYxX0Zvcm1hdD0zNTg0MjsKay5SR0JBX1MzVENfRFhUMV9Gb3JtYXQ9MzM3Nzc7ay5SR0JBX1MzVENfRFhUM19Gb3JtYXQ9MzM3Nzg7ay5SR0JBX1MzVENfRFhUNV9Gb3JtYXQ9MzM3Nzk7ay5SR0JERW5jb2Rpbmc9MzAwNjtrLlJHQkVFbmNvZGluZz0zMDAyO2suUkdCRUZvcm1hdD0xMDIzO2suUkdCRm9ybWF0PTEwMjI7ay5SR0JNMTZFbmNvZGluZz0zMDA1O2suUkdCTTdFbmNvZGluZz0zMDA0O2suUkdCX0VUQzFfRm9ybWF0PTM2MTk2O2suUkdCX1BWUlRDXzJCUFBWMV9Gb3JtYXQ9MzU4NDE7ay5SR0JfUFZSVENfNEJQUFYxX0Zvcm1hdD0zNTg0MDtrLlJHQl9TM1RDX0RYVDFfRm9ybWF0PTMzNzc2O2suUmF3U2hhZGVyTWF0ZXJpYWw9WWM7ay5SYXk9UmI7ay5SYXljYXN0ZXI9ZWk7ay5SZWN0QXJlYUxpZ2h0PWdmO2suUmVjdEFyZWFMaWdodEhlbHBlcj1nZDtrLlJlZEZvcm1hdD0xMDI4O2suUmVpbmhhcmRUb25lTWFwcGluZz0yO2suUmVwZWF0V3JhcHBpbmc9MUUzO2suUmVwbGFjZVN0ZW5jaWxPcD03NjgxOwprLlJldmVyc2VTdWJ0cmFjdEVxdWF0aW9uPTEwMjtrLlJpbmdCdWZmZXJHZW9tZXRyeT1VYztrLlJpbmdHZW9tZXRyeT1mZTtrLlNjZW5lPXZkO2suU2NlbmVVdGlscz17Y3JlYXRlTXVsdGlNYXRlcmlhbE9iamVjdDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzL3V0aWxzL1NjZW5lVXRpbHMuanMiKX0sZGV0YWNoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanMvdXRpbHMvU2NlbmVVdGlscy5qcyIpfSxhdHRhY2g6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZVV0aWxzIGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qcy91dGlscy9TY2VuZVV0aWxzLmpzIil9fTtrLlNoYWRlckNodW5rPVM7ay5TaGFkZXJMaWI9Y2I7ay5TaGFkZXJNYXRlcmlhbD12YTtrLlNoYWRvd01hdGVyaWFsPWhjO2suU2hhcGU9CkliO2suU2hhcGVCdWZmZXJHZW9tZXRyeT1mYztrLlNoYXBlR2VvbWV0cnk9ZWM7ay5TaGFwZVBhdGg9dWc7ay5TaGFwZVV0aWxzPXFiO2suU2hvcnRUeXBlPTEwMTE7ay5Ta2VsZXRvbj1PZTtrLlNrZWxldG9uSGVscGVyPWVkO2suU2tpbm5lZE1lc2g9T2Q7ay5TbW9vdGhTaGFkaW5nPTI7ay5TcGhlcmU9bWI7ay5TcGhlcmVCdWZmZXJHZW9tZXRyeT1IYjtrLlNwaGVyZUdlb21ldHJ5PWVlO2suU3BoZXJpY2FsPWdpO2suU3BoZXJpY2FsSGFybW9uaWNzMz1vZjtrLlNwaGVyaWNhbFJlZmxlY3Rpb25NYXBwaW5nPTMwNTtrLlNwbGluZT1MZztrLlNwbGluZUN1cnZlPVZhO2suU3BsaW5lQ3VydmUzPWtpO2suU3BvdExpZ2h0PWJmO2suU3BvdExpZ2h0SGVscGVyPWRkO2suU3BvdExpZ2h0U2hhZG93PWFmO2suU3ByaXRlPUxkO2suU3ByaXRlTWF0ZXJpYWw9R2I7ay5TcmNBbHBoYUZhY3Rvcj0yMDQ7ay5TcmNBbHBoYVNhdHVyYXRlRmFjdG9yPTIxMDtrLlNyY0NvbG9yRmFjdG9yPTIwMjsKay5TdGF0aWNDb3B5VXNhZ2U9MzUwNDY7ay5TdGF0aWNEcmF3VXNhZ2U9MzUwNDQ7ay5TdGF0aWNSZWFkVXNhZ2U9MzUwNDU7ay5TdGVyZW9DYW1lcmE9YWk7ay5TdHJlYW1Db3B5VXNhZ2U9MzUwNDI7ay5TdHJlYW1EcmF3VXNhZ2U9MzUwNDA7ay5TdHJlYW1SZWFkVXNhZ2U9MzUwNDE7ay5TdHJpbmdLZXlmcmFtZVRyYWNrPVdlO2suU3VidHJhY3RFcXVhdGlvbj0xMDE7ay5TdWJ0cmFjdGl2ZUJsZW5kaW5nPTM7ay5UT1VDSD17Uk9UQVRFOjAsUEFOOjEsRE9MTFlfUEFOOjIsRE9MTFlfUk9UQVRFOjN9O2suVGFuZ2VudFNwYWNlTm9ybWFsTWFwPTA7ay5UZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5PU5jO2suVGV0cmFoZWRyb25HZW9tZXRyeT1UZDtrLlRleHRCdWZmZXJHZW9tZXRyeT1UYztrLlRleHRHZW9tZXRyeT1kZTtrLlRleHR1cmU9WTtrLlRleHR1cmVMb2FkZXI9WmU7ay5Ub3J1c0J1ZmZlckdlb21ldHJ5PVJjO2suVG9ydXNHZW9tZXRyeT1aZDtrLlRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5PQpRYztrLlRvcnVzS25vdEdlb21ldHJ5PVlkO2suVHJpYW5nbGU9YmE7ay5UcmlhbmdsZUZhbkRyYXdNb2RlPTI7ay5UcmlhbmdsZVN0cmlwRHJhd01vZGU9MTtrLlRyaWFuZ2xlc0RyYXdNb2RlPTA7ay5UdWJlQnVmZmVyR2VvbWV0cnk9YmM7ay5UdWJlR2VvbWV0cnk9WGQ7ay5VVk1hcHBpbmc9MzAwO2suVWludDE2QXR0cmlidXRlPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5VaW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgU2IoYSxiKX07ay5VaW50MTZCdWZmZXJBdHRyaWJ1dGU9U2I7ay5VaW50MzJBdHRyaWJ1dGU9ZnVuY3Rpb24oYSxiKXtjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBUYihhLApiKX07ay5VaW50MzJCdWZmZXJBdHRyaWJ1dGU9VGI7ay5VaW50OEF0dHJpYnV0ZT1mdW5jdGlvbihhLGIpe2NvbnNvbGUud2FybigiVEhSRUUuVWludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyB4ZChhLGIpfTtrLlVpbnQ4QnVmZmVyQXR0cmlidXRlPXhkO2suVWludDhDbGFtcGVkQXR0cmlidXRlPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5VaW50OENsYW1wZWRBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgeWQoYSxiKX07ay5VaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU9eWQ7ay5VbmNoYXJ0ZWQyVG9uZU1hcHBpbmc9MztrLlVuaWZvcm09cGY7ay5Vbmlmb3Jtc0xpYj1MO2suVW5pZm9ybXNVdGlscz1DaztrLlVuc2lnbmVkQnl0ZVR5cGU9CjEwMDk7ay5VbnNpZ25lZEludDI0OFR5cGU9MTAyMDtrLlVuc2lnbmVkSW50VHlwZT0xMDE0O2suVW5zaWduZWRTaG9ydDQ0NDRUeXBlPTEwMTc7ay5VbnNpZ25lZFNob3J0NTU1MVR5cGU9MTAxODtrLlVuc2lnbmVkU2hvcnQ1NjVUeXBlPTEwMTk7ay5VbnNpZ25lZFNob3J0VHlwZT0xMDEyO2suVlNNU2hhZG93TWFwPTM7ay5WZWN0b3IyPUI7ay5WZWN0b3IzPW47ay5WZWN0b3I0PWRhO2suVmVjdG9yS2V5ZnJhbWVUcmFjaz0kYztrLlZlcnRleD1mdW5jdGlvbihhLGIsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5WZXJ0ZXggaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLlZlY3RvcjMgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IG4oYSxiLGMpfTtrLlZlcnRleENvbG9ycz0yO2suVmVydGV4Tm9ybWFsc0hlbHBlcj1xZTtrLlZpZGVvVGV4dHVyZT1sZztrLldlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9U2Y7ay5XZWJHTFJlbmRlclRhcmdldD1CYTtrLldlYkdMUmVuZGVyVGFyZ2V0Q3ViZT0KQmI7ay5XZWJHTFJlbmRlcmVyPWhnO2suV2ViR0xVdGlscz1LaDtrLldpcmVmcmFtZUdlb21ldHJ5PUxjO2suV2lyZWZyYW1lSGVscGVyPWZ1bmN0aW9uKGEsYil7Y29uc29sZS53YXJuKCJUSFJFRS5XaXJlZnJhbWVIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLldpcmVmcmFtZUdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIG5ldyBYKG5ldyBMYyhhLmdlb21ldHJ5KSxuZXcgUih7Y29sb3I6dm9pZCAwIT09Yj9iOjE2Nzc3MjE1fSkpfTtrLldyYXBBcm91bmRFbmRpbmc9MjQwMjtrLlhIUkxvYWRlcj1mdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuIik7cmV0dXJuIG5ldyBOYShhKX07ay5aZXJvQ3VydmF0dXJlRW5kaW5nPTI0MDA7ay5aZXJvRmFjdG9yPTIwMDtrLlplcm9TbG9wZUVuZGluZz0yNDAxO2suWmVyb1N0ZW5jaWxPcD0wO2suc1JHQkVuY29kaW5nPTMwMDE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGssCiJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwo=",
  98. {"status":false}
  99. ],
  100. [
  101. "просмотр.three.js_1.0",
  102. "ZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC90J/RgNC+0YHQvNC+0YLRgNCwKCkKewogICAgdmFyIGh0bWwgPQpgCmA7CiAgICB2YXIgY3NzID0KYApjYW52YXMKewogICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICAvKgogICAgQ2FudmFzIG11c3QgaGF2ZSBOTyBCT1JERVIgLyBQQURESU5HIGZvciBjb3JyZWN0IG1vdXNlIHBvc2l0aW9uCiAgICAqLwogICAgYm9yZGVyOiAwIG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKfQpgOwogICAgCiAgICB2YXIg0Y3QutGA0LDQvSA9INC00L7QsdCw0LLQuNGC0YzQrdC60YDQsNC9KCLQv9GA0L7RgdC80L7RgtGAIiwgaHRtbCwgY3NzKTsKCiAgICB2YXIgdGhyZWVKUyA9INCc0J7QlC7QvNC+0LTRg9C70YwoInRocmVlLm1pbi5qcyIpLmNvZGU2NDsKICAgINC30LDQs9GA0YPQt9C40YLRjNCh0LrRgNC40L/RgijQvNGD0YDQvtC8LmF0b2IodGhyZWVKUykpOwp9CgpmdW5jdGlvbiDQvtGC0L7QsdGA0LDQt9C40YLRjNCg0LXQt9GD0LvRjNGC0LDRgigpCnsKICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0LLRgdGC0YDQvtC50LrQsCIpOwogICAgaWZyYW1lLnNyYyA9INC40LzRj9Ck0LDQudC70LAoKTsKfQoKZnVuY3Rpb24g0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YLQktC+0JLQtdGB0YzQrdC60YDQsNC9KCkKewogICAgd2luZG93Lm9wZW4o0LjQvNGP0KTQsNC50LvQsCgpLCAnX2JsYW5rJyk7Cn0KCmZ1bmN0aW9uINGB0L7Qt9C00LDRgtGM0J/RgNC+0YHQvNC+0YLRgNCU0LvRj9Cg0LXQtNCw0LrRgtC+0YDQsCgpCnsKICAgIHZhciDQvtCx0LvQsNGB0YLRjCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdGG0LXQvdGC0YDQsNC70YzQvdCw0Y8t0LLQtdGA0YUiKTsKICAgINC+0LHQu9Cw0YHRgtGMLmlubmVySFRNTCA9CmAKPGEgaWQ9ItGB0YDQtdC00LAt0L7QsdC90L7QstC40YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIiB1ay1pY29uPSJyZWZyZXNoIiB1ay10b29sdGlwPSJ0aXRsZTog0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQvtGF0YDQsNC90ZHQvdC90YvQuSDRgNC10LfRg9C70YzRgtCw0YI7IGRlbGF5OiA1MDAiPjwvYT4KPGEgaWQ9ItGB0YDQtdC00LAt0L/RgNC+0YHQvNC+0YLRgNC10YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImV4cGFuZCIgdWstdG9vbHRpcD0idGl0bGU6INCe0YLQvtCx0YDQsNC30LjRgtGMINGB0L7RhdGA0LDQvdGR0L3QvdGL0Lkg0YDQtdC30YPQu9GM0YLQsNGCINCy0L4g0LLQtdGB0Ywg0Y3QutGA0LDQvTsgZGVsYXk6IDUwMCI+PC9hPgpgOwoKICAgINC+0YLQvtCx0YDQsNC30LjRgtGM0KDQtdC30YPQu9GM0YLQsNGCKCk7CiAgICAKICAgIHZhciDQvtCx0L3QvtCy0LjRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0L7QsdC90L7QstC40YLRjCIpOwogICAg0L7QsdC90L7QstC40YLRjC5vbmNsaWNrID0g0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YI7CiAgICAKICAgIHZhciDQv9GA0L7RgdC80L7RgtGA0LXRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0L/RgNC+0YHQvNC+0YLRgNC10YLRjCIpOwogICAg0L/RgNC+0YHQvNC+0YLRgNC10YLRjC5vbmNsaWNrID0g0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YLQktC+0JLQtdGB0YzQrdC60YDQsNC9Owp9CgppZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiPzAiKQp7CiAgICDRgdC+0LfQtNCw0YLRjNCf0YDQvtGB0LzQvtGC0YDQlNC70Y/QoNC10LTQsNC60YLQvtGA0LAoKTsKfQplbHNlIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmxlbmd0aCA9PSAwKQp7CiAgICDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L3Qn9GA0L7RgdC80L7RgtGA0LAoKTsKfQ==",
  103. {"status":true}
  104. ],
  105. [
  106. "СобытияРеакции_1.0.0",
  107. "ZnVuY3Rpb24g0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuCgpIHsgfQoKLyoKICoKICog0KDQsNC30L7QsdGA0LDRgtGMINGB0L7QsdGL0YLQuNGPINC4INGA0LXQsNC60YbQuNC4LCDQstGL0YDQsNC20LXQvdC90YvQtSDQsiDRgtC10LrRgdGC0LUKICogUGFyc2UgZXZlbnRzIGFuZCByZWFjdGlvbnMgcmVwcmVzZW50ZWQgYXMgdGV4dAogKgogKi8K0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuC5wcm90b3R5cGUu0YDQsNC30L7QsdGA0LDRgtGMID0gZnVuY3Rpb24o0LzQuNGALCDRgtC10LrRgdGC0J/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4KQp7CiAgICB2YXIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPID0gdGhpcy7RgdC+0LHRi9GC0LjRj9Cg0LXQsNC60YbQuNC4KNGC0LXQutGB0YLQn9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LgpOwogICAgZm9yICh2YXIg0YHQvtCx0YvRgtC40LUgaW4g0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPKQogICAgewogICAgICAgIC8vY29uc29sZS5sb2coItCh0L7Qt9C00LDQvdC40LUg0YHQvtCx0YvRgtC40Y86ICciICsg0YHQvtCx0YvRgtC40LUgKyAiJyIpOwogICAgICAgINC80LjRgC7RgdC+0LHRi9GC0LjRj1vRgdC+0LHRi9GC0LjQtV0gPSBuZXcg0KPQstC10LTQvtC80LjRgtC10LvRjCgpOwogICAgICAgIHZhciDRgNC10LDQutGG0LjQuCA9INGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRj1vRgdC+0LHRi9GC0LjQtV07CiAgICAgICAgZm9yICh2YXIg0L3QvtC80LXRgCBpbiDRgNC10LDQutGG0LjQuCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciDRgNC10LDQutGG0LjRjyA9INGA0LXQsNC60YbQuNC4W9C90L7QvNC10YBdOwogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCLQodC+0LfQtNCw0L3QuNC1INGA0LXQsNC60YbQuNC4OiAnIiArINGA0LXQsNC60YbQuNGPICsgIiciKTsKICAgICAgICAgICAgdmFyINC60LvQsNGB0YEgPSBldmFsKNGA0LXQsNC60YbQuNGPKTsKICAgICAgICAgICAgY29uc3Qg0Y3QutC30LXQvNC/0LvRj9GAID0gbmV3INC60LvQsNGB0YEo0LzQuNGAKTsKICAgICAgICAgICAg0LzQuNGALtGB0L7QsdGL0YLQuNGPW9GB0L7QsdGL0YLQuNC1XS7Qv9C+0LTQv9C40YHQsNGC0YwoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgINGN0LrQt9C10LzQv9C70Y/RgC7QuNGB0L/QvtC70L3QuNGC0YwoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQp9OwoKLyoKICoKICog0JLQndCj0KLQoNCV0J3QndCV0JUKICog0KDQsNC30L7QsdGA0LDRgtGMINGC0LXQutGB0YIg0YEg0YHQvtCx0YvRgtC40Y/QvNC4INC4INGA0LXQsNC60YbQuNC4LCDQstC10YDQvdGD0YLRjCDRgdC70L7QstCw0YDRjCDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8KICogSU5URVJOQUwKICogUGFyc2UgdGV4dCB3aXRoIGV2ZW50cyBhbmQgcmVhY3Rpb25zLCByZXR1cm4gdGhlaXIgYXNzb2NpYXRpb24gZGljdGlvbmFyeQogKgogKi8K0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuC5wcm90b3R5cGUu0YHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuCA9IGZ1bmN0aW9uKNGC0LXQutGB0YIpCnsKICAgIHZhciDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUgPSB7fTsKICAgIAogICAgdmFyINGN0LvQtdC80LXQvdGC0YsgPSDRgtC10LrRgdGCLnNwbGl0KCJcbiIpOwogICAgdmFyINC40LzRj9Ch0L7QsdGL0YLQuNGPID0gbnVsbDsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0Y3Qu9C10LzQtdC90YLRiykKICAgIHsKICAgICAgICB2YXIg0Y3Qu9C10LzQtdC90YIgPSDRjdC70LXQvNC10L3RgtGLW9C90L7QvNC10YBdOwogICAgICAgIC8vINCf0YDQvtC/0YPRgdC60LDQtdC8INC60L7QvNC80LXQvdGC0LDRgNC40LguCiAgICAgICAgaWYgKNGN0LvQtdC80LXQvdGCLmNoYXJBdCgwKSA9PSAiIyIpCiAgICAgICAgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgdmFyINC40LzRjyA9INGN0LvQtdC80LXQvdGCLnRyaW0oKTsKICAgICAgICAvLyDQodC+0LHRi9GC0LjQtS4KICAgICAgICBpZiAo0LjQvNGPID09INGN0LvQtdC80LXQvdGCKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCEo0LjQvNGPIGluINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgINC40LzRj9Ch0L7QsdGL0YLQuNGPID0g0LjQvNGPOwogICAgICAgICAgICAgICAg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC1W9C40LzRj10gPSBbXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybigi0J/QvtCy0YLQvtGA0L3QviDQvtCx0L3QsNGA0YPQttC10L3QviDRgdC+0LHRi9GC0LjQtSAnIiArINC40LzRjyArICInIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8g0KDQtdCw0LrRhtC40Y8uCiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgdmFyINC90LDQt9Cy0LDQvdC40LUgPSB0aGlzLtC40LzRj9Ck0YPQvdC60YbQuNC40JjQt9Cg0LXQsNC60YbQuNC4KNC40LzRjyk7CiAgICAgICAgICAgINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtVvQuNC80Y/QodC+0LHRi9GC0LjRj10ucHVzaCjQvdCw0LfQstCw0L3QuNC1KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LU7Cn07CgovKgogKgogKiDQktCd0KPQotCg0JXQndCd0JXQlQogKiDQn9GA0LXQvtCx0YDQsNC30L7QstCw0YLRjCDQuNC80Y8g0YDQtdCw0LrRhtC40Lgg0LIg0L3QsNC30LLQsNC90LjQtSDRhNGD0L3QutGG0LjQuAogKiBJTlRFUk5BTAogKiBDb252ZXJ0IHJlYWN0aW9uIG5hbWUgdG8gZnVuY3Rpb24gbmFtZQogKgogKi8K0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuC5wcm90b3R5cGUu0LjQvNGP0KTRg9C90LrRhtC40LjQmNC30KDQtdCw0LrRhtC40LggPSBmdW5jdGlvbijRgNC10LDQutGG0LjRjykKewogICAgdmFyINC40LzRjyA9ICIiOwogICAgCiAgICB2YXIg0YfQsNGB0YLQuCA9INGA0LXQsNC60YbQuNGPLnNwbGl0KCIgIik7CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINGH0LDRgdGC0LgpCiAgICB7CiAgICAgICAgdmFyINGH0LDRgdGC0YwgPSDRh9Cw0YHRgtC4W9C90L7QvNC10YBdOwogICAgICAgINC40LzRjyArPSDRh9Cw0YHRgtGMLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg0YfQsNGB0YLRjC5zbGljZSgxKTsKICAgIH0KICAgIAogICAgcmV0dXJuINC40LzRjzsKfTs=",
  108. {"status":true}
  109. ],
  110. [
  111. "Список_1.0.0",
  112. "ZnVuY3Rpb24g0KHQv9C40YHQvtC6KNC40LzRjykKewogICAgdGhpcy7Qt9Cw0LTQsNGC0YwgPSBmdW5jdGlvbijRjdC70LXQvNC10L3RgtGLKQogICAgewogICAgICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0Y3Qu9C10LzQtdC90YLRiykKICAgICAgICB7CiAgICAgICAgICAgIHZhciDRjSA9INGN0LvQtdC80LXQvdGC0Ytb0L3QvtC80LXRgF07CiAgICAgICAgICAgIHRoaXMu0LTQvtCx0LDQstC40YLRjCjRjVswXSwg0Y1bMV0pOwogICAgICAgIH0KICAgIH07CiAgICB0aGlzLtC00L7QsdCw0LLQuNGC0YwgPSBmdW5jdGlvbijQuNC80Y8sINC+0L/QuNGB0LDQvdC40LUpCiAgICB7CiAgICAgICAgdmFyINC90L7QvNC10YAgPSB0aGlzLtC60L7Qu9Cy0L47CiAgICAgICAgdmFyIGh0bWwgPQpgCjxkaXYgY2xhc3M9InVrLWNhcmQgdWstY2FyZC1kZWZhdWx0IHVrLWNhcmQtaG92ZXIgdWstY2FyZC1ib2R5IiBkYXRhLWlkPSJgICsg0L3QvtC80LXRgCArIGAiPgogICAgPGgzIGNsYXNzPSJ1ay1jYXJkLXRpdGxlIj5gICsg0LjQvNGPICsgYDwvaDM+CiAgICA8cD5gICsg0L7Qv9C40YHQsNC90LjQtSArIGA8L3A+CjwvZGl2PgpgOwogICAgICAgIHRoaXMuai5hcHBlbmQoaHRtbCk7CiAgICAgICAgdGhpcy7QutC+0LvQstC+ICs9IDE7CiAgICB9OwogICAgdGhpcy7QvtGH0LjRgdGC0LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHRoaXMuai5odG1sKCIiKTsKICAgICAgICB0aGlzLtC60L7Qu9Cy0L4gPSAwOwogICAgICAgIHRoaXMu0L/RgNC10LTRi9C00YPRidC40LnQktGL0LHQvtGAID0gbnVsbDsKICAgICAgICB0aGlzLtCy0YvQsdC+0YAgPSBudWxsOwogICAgICAgIHRoaXMu0LDQutGC0LjQstC90YvQuSA9IG51bGw7CiAgICB9OwogICAgdGhpcy7QstGL0LHRgNCw0YLRjCA9IGZ1bmN0aW9uKNC40L3QtNC10LrRgSkKICAgIHsKICAgICAgICB0aGlzLtGD0LLQtdC00L7QvNC40YLRjNCe0JLRi9Cx0L7RgNC1KNC40L3QtNC10LrRgSk7CiAgICAgICAgdmFyINGN0LvQtdC80LXQvdGC0YsgPSB0aGlzLmouY2hpbGRyZW4oKTsKICAgICAgICB2YXIg0Y0gPSDRjdC70LXQvNC10L3RgtGLW3RoaXMu0LLRi9Cx0L7RgF07CiAgICAgICAg0Y0uc2Nyb2xsSW50b1ZpZXcoKTsKICAgIH07CiAgICB0aGlzLtC30LDQtNCw0YLRjNCY0L3QtNC10LrRgdCQ0LrRgtC40LLQvdC+0LPQvtCt0LvQtdC80LXQvdGC0LAgPSBmdW5jdGlvbijQuNC90LTQtdC60YEpCiAgICB7CiAgICAgICAgdmFyINGN0LvQtdC80LXQvdGC0YsgPSB0aGlzLmouY2hpbGRyZW4oKTsKICAgICAgICAvLyDQo9Cx0YDQsNGC0Ywg0L/QvtC80LXRgtC60YMg0YHQviDRgdGC0LDRgNC+0LPQviDRjdC70LXQvNC10L3RgtCwLgogICAgICAgIGlmICh0aGlzLtCw0LrRgtC40LLQvdGL0LkgIT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciDRjSA9INGN0LvQtdC80LXQvdGC0YtbdGhpcy7QsNC60YLQuNCy0L3Ri9C5XTsKICAgICAgICAgICAg0Y0uY2xhc3NMaXN0LnJlbW92ZSgidWstY2FyZC1wcmltYXJ5Iik7CiAgICAgICAgfQogICAgICAgIHRoaXMu0LDQutGC0LjQstC90YvQuSA9INC40L3QtNC10LrRgTsKICAgICAgICB2YXIg0Y0gPSDRjdC70LXQvNC10L3RgtGLW9C40L3QtNC10LrRgV07CiAgICAgICAg0Y0uY2xhc3NMaXN0LmFkZCgidWstY2FyZC1wcmltYXJ5Iik7CiAgICB9CgogICAgdGhpcy7Rg9Cy0LXQtNC+0LzQuNGC0YzQntCS0YvQsdC+0YDQtSA9IGZ1bmN0aW9uKNC40L3QtNC10LrRgSkKICAgIHsKICAgICAgICB0aGlzLtC/0YDQtdC00YvQtNGD0YnQuNC50JLRi9Cx0L7RgCA9IHRoaXMu0LLRi9Cx0L7RgDsKICAgICAgICB0aGlzLtCy0YvQsdC+0YAgPSDQuNC90LTQtdC60YE7CiAgICAgICAgdGhpcy7QuNC30LzQtdC90LjQu9C40JLRi9Cx0L7RgC7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgIH07CiAgICB0aGlzLtC+0YLRgdC70LXQttC40LLQsNGC0YzQktGL0LHQvtGAID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHRoaXMu0LjQt9C80LXQvdC40LvQuNCS0YvQsdC+0YAgPSBuZXcg0KPQstC10LTQvtC80LjRgtC10LvRjCgpOwogICAgICAgIHRoaXMu0L/RgNC10LTRi9C00YPRidC40LnQktGL0LHQvtGAID0gbnVsbDsKICAgICAgICB0aGlzLtCy0YvQsdC+0YAgPSBudWxsOwogICAgICAgIAogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLmoub24oImNsaWNrIiwgIi51ay1jYXJkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciDQuNC90LTQtdC60YEgPSAkKHRoaXMpLmRhdGEoImlkIik7CiAgICAgICAgICAgIHNlbGYu0YPQstC10LTQvtC80LjRgtGM0J7QktGL0LHQvtGA0LUo0LjQvdC00LXQutGBKTsKICAgICAgICB9KTsKICAgIH07CiAgICB0aGlzLtC+0YLQvtCx0YDQsNC30LjRgtGM0JLRi9Cx0L7RgCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIg0Y3Qu9C10LzQtdC90YLRiyA9IHRoaXMuai5jaGlsZHJlbigpOwogICAgICAgIC8vINCj0LHQuNGA0LDQtdC8INC/0YDQtdC00YvQtNGD0YnQuNC5INCy0YvQsdC+0YAuCiAgICAgICAgaWYgKHRoaXMu0L/RgNC10LTRi9C00YPRidC40LnQktGL0LHQvtGAICE9IG51bGwpCiAgICAgICAgewogICAgICAgICAgICB2YXIg0Y0gPSDRjdC70LXQvNC10L3RgtGLW3RoaXMu0L/RgNC10LTRi9C00YPRidC40LnQktGL0LHQvtGAXTsKICAgICAgICAgICAg0Y0uY2xhc3NMaXN0LnJlbW92ZSgidWstY2FyZC1zZWNvbmRhcnkiKTsKICAgICAgICB9CiAgICAgICAgLy8g0JTQtdC70LDQtdC8INC90L7QstGL0Lkg0LLRi9Cx0L7RgC4KICAgICAgICB2YXIg0Y0gPSDRjdC70LXQvNC10L3RgtGLW3RoaXMu0LLRi9Cx0L7RgF07CiAgICAgICAg0Y0uY2xhc3NMaXN0LmFkZCgidWstY2FyZC1zZWNvbmRhcnkiKTsKICAgIH07CiAgICB0aGlzLtC+0YLQvtCx0YDQsNC20LDRgtGM0JLRi9Cx0L7RgCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgdGhpcy7QuNC30LzQtdC90LjQu9C40JLRi9Cx0L7RgC7Qv9C+0LTQv9C40YHQsNGC0YwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYu0L7RgtC+0LHRgNCw0LfQuNGC0YzQktGL0LHQvtGAKCk7CiAgICAgICAgfSk7CiAgICB9OwogICAgCiAgICAvLyDQmtC+0L3RgdGC0YDRg9C60YLQvtGALgogICAgdGhpcy5qID0gJCgiIyIgKyDQuNC80Y8pOwogICAgdGhpcy7QutC+0LvQstC+ID0gMDsKICAgIHRoaXMu0LDQutGC0LjQstC90YvQuSA9IG51bGw7CiAgICB0aGlzLtC+0YLRgdC70LXQttC40LLQsNGC0YzQktGL0LHQvtGAKCk7CiAgICB0aGlzLtC+0YLQvtCx0YDQsNC20LDRgtGM0JLRi9Cx0L7RgCgpOwp9",
  113. {"status":true}
  114. ],
  115. [
  116. "Набор_1.0.0",
  117. "ZnVuY3Rpb24g0J3QsNCx0L7RgCgpCnsKICAgIHRoaXMu0LfQsNC00LDRgtGMID0gZnVuY3Rpb24o0YHQv9C40YHQvtC6KQogICAgewogICAgICAgIHRoaXMu0YHQv9C40YHQvtC6ID0g0YHQv9C40YHQvtC6OwogICAgICAgIHRoaXMu0LjQt9C80LXQvdC40LvQuNCh0L/QuNGB0L7Qui7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICAvLyDQodCx0YDQsNGB0YvQstCw0LXQvCDQstGL0LHQvtGALCDQtdGB0LvQuCDQv9GA0LXQtNGL0LTRg9GJ0LjQuSDQvdC+0LzQtdGAINGC0LXQv9C10YDRjCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCLgogICAgICAgIGlmICgKICAgICAgICAgICAgKHRoaXMu0LLRi9Cx0L7RgCAhPSBudWxsKSAmJgogICAgICAgICAgICAodGhpcy7QstGL0LHQvtGAID4g0YHQv9C40YHQvtC6Lmxlbmd0aCAtIDEpCiAgICAgICAgKSB7CiAgICAgICAgICAgIHRoaXMu0LLRi9Cx0YDQsNGC0YwobnVsbCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICB0aGlzLtC+0YfQuNGB0YLQuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdGhpcy7RgdC/0LjRgdC+0LogPSBbXTsKICAgICAgICB0aGlzLtC40LfQvNC10L3QuNC70LjQodC/0LjRgdC+0Lou0YPQstC10LTQvtC80LjRgtGMKCk7CiAgICAgICAgdGhpcy7QstGL0LHRgNCw0YLRjChudWxsKTsKICAgIH07CiAgICAKICAgIHRoaXMu0LTQvtCx0LDQstC40YLRjCA9IGZ1bmN0aW9uKNGB0L/QuNGB0L7QuikKICAgIHsKICAgICAgICB0aGlzLtGB0L/QuNGB0L7Qui5wdXNoKC4uLtGB0L/QuNGB0L7Quik7CiAgICAgICAgdGhpcy7QuNC30LzQtdC90LjQu9C40KHQv9C40YHQvtC6LtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfTsKICAgIAogICAgdGhpcy7QstGL0LHRgNCw0YLRjCA9IGZ1bmN0aW9uKNC90L7QvNC10YApCiAgICB7CiAgICAgICAgdGhpcy7QstGL0LHQvtGAID0g0L3QvtC80LXRgDsKICAgICAgICB0aGlzLtC40LfQvNC10L3QuNC70LjQktGL0LHQvtGALtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfTsKICAgIAogICAgLy8g0JrQvtC90YHRgtGA0YPQutGC0L7RgC4KICAgIHRoaXMu0YHQv9C40YHQvtC6ID0gW107CiAgICB0aGlzLtC40LfQvNC10L3QuNC70LjQodC/0LjRgdC+0LogPSBuZXcg0KPQstC10LTQvtC80LjRgtC10LvRjCgpOwogICAgdGhpcy7QstGL0LHQvtGAID0gbnVsbDsKICAgIHRoaXMu0LjQt9C80LXQvdC40LvQuNCS0YvQsdC+0YAgPSBuZXcg0KPQstC10LTQvtC80LjRgtC10LvRjCgpOwp9",
  118. {"status":true}
  119. ],
  120. [
  121. "Раскладка_1.0.0",
  122. "ZnVuY3Rpb24g0KDQsNGB0LrQu9Cw0LTQutCwKCkKewogICAgdGhpcy7QstC10YDRgdC40Y8gPSAiIjsKICAgIHRoaXMu0YjQuNGA0LjQvdCwID0gMDsKICAgIHRoaXMu0LLRi9GB0L7RgtCwID0gMDsKICAgIHRoaXMu0LPQu9GD0LHQuNC90LAgPSAwOwogICAgdGhpcy7Qv9C+0LfQuNGG0LjQuCA9IFtdOwogICAgCiAgICAvLyDQlNC70Y8g0LLQvdGD0YLRgNC10L3QvdC10LPQviDQv9C+0LvRjNC30L7QstCw0L3QuNGPLgogICAgdGhpcy7Qv9C+0LvRjyA9IFtdOwoKICAgIHRoaXMu0YDQsNC30L7QsdGA0LDRgtGM0KHQu9GD0LbQtdCx0L3Rg9GO0JjQvdGE0L7RgNC80LDRhtC40Y4gPSBmdW5jdGlvbijRgdC+0LTQtdGA0LbQuNC80L7QtSkKICAgIHsKICAgICAgICBjb25zdCDQutC70Y7Rh9C4ID0gewogICAgICAgICAgICAi0LLQtdGA0YHQuNGPIjogImttYWhqb25nZy1sYXlvdXQtdiIsCiAgICAgICAgICAgICLQutC+0LzQvNC10L3RgtCw0YDQuNC5IjogIiMiLAogICAgICAgICAgICAi0YjQuNGA0LjQvdCwIjogInciLAogICAgICAgICAgICAi0LLRi9GB0L7RgtCwIjogImgiLAogICAgICAgICAgICAi0LPQu9GD0LHQuNC90LAiOiAiZCIKICAgICAgICB9OwogICAgCiAgICAgICAgLy8g0JLQndCY0JzQkNCd0JjQlSDQktC10YDRgdC40Y8gMS4wINC/0YDQtdC00L/QvtC70LDQs9Cw0LXRgiDQt9Cw0LTQsNC90L3Ri9C1INC30LDRgNCw0L3QtdC1INGI0LjRgNC40L3RgyDQuCDQstGL0YHQvtGC0YMuCiAgICAgICAgdGhpcy7QstC10YDRgdC40Y8gPSAiIjsKICAgICAgICB0aGlzLtCz0LvRg9Cx0LjQvdCwID0gMDsKICAgICAgICB0aGlzLtGI0LjRgNC40L3QsCA9IDMyOwogICAgICAgIHRoaXMu0LLRi9GB0L7RgtCwID0gMTY7CiAgICAgICAgdGhpcy7Qv9C+0LvRjyA9IFtdOwogICAgICAgIAogICAgICAgIHZhciDQv9C+0LvQtSA9IFtdOwogICAgICAgIHZhciDRgdGC0YDQvtC60LggPSDRgdC+0LTQtdGA0LbQuNC80L7QtS5zcGxpdCgiXG4iKTsKICAgICAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINGB0YLRgNC+0LrQuCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciDRgdGC0YDQvtC60LAgPSDRgdGC0YDQvtC60Lhb0L3QvtC80LXRgF0udHJpbSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8g0J/RgNC+0L/Rg9GB0LrQsNC10Lwg0LrQvtC80LzQtdC90YLQsNGA0LjQuS4KICAgICAgICAgICAgaWYgKNGB0YLRgNC+0LrQsC5zdGFydHNXaXRoKNC60LvRjtGH0Lgu0LrQvtC80LzQtdC90YLQsNGA0LjQuSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyDQodC+0LHQuNGA0LDQtdC8INGB0LvRg9C20LXQsdC90YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRji4KICAgICAgICAgICAgaWYgKNGB0YLRgNC+0LrQsC5zdGFydHNXaXRoKNC60LvRjtGH0Lgu0LLQtdGA0YHQuNGPKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGhpcy7QstC10YDRgdC40Y8gPSDRgdGC0YDQvtC60LAuc3BsaXQo0LrQu9GO0YfQuC7QstC10YDRgdC40Y8pWzFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKNGB0YLRgNC+0LrQsC5zdGFydHNXaXRoKNC60LvRjtGH0Lgu0YjQuNGA0LjQvdCwKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGhpcy7RiNC40YDQuNC90LAgPSDRgdGC0YDQvtC60LAuc3BsaXQo0LrQu9GO0YfQuC7RiNC40YDQuNC90LApWzFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKNGB0YLRgNC+0LrQsC5zdGFydHNXaXRoKNC60LvRjtGH0Lgu0LLRi9GB0L7RgtCwKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGhpcy7QstGL0YHQvtGC0LAgPSDRgdGC0YDQvtC60LAuc3BsaXQo0LrQu9GO0YfQuC7QstGL0YHQvtGC0LApWzFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKNGB0YLRgNC+0LrQsC5zdGFydHNXaXRoKNC60LvRjtGH0Lgu0LPQu9GD0LHQuNC90LApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aGlzLtCz0LvRg9Cx0LjQvdCwID0g0YHRgtGA0L7QutCwLnNwbGl0KNC60LvRjtGH0Lgu0LPQu9GD0LHQuNC90LApWzFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vINCf0L7Qu9C1LgogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgINC/0L7Qu9C1LnB1c2go0YHRgtGA0L7QutCwKTsKICAgICAgICAgICAgICAgIGlmICjQv9C+0LvQtS5sZW5ndGggPj0gdGhpcy7QstGL0YHQvtGC0LApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy7Qv9C+0LvRjy5wdXNoKNC/0L7Qu9C1LnNsaWNlKCkpOwogICAgICAgICAgICAgICAgICAgINC/0L7Qu9C1ID0gW107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIGlmICh0aGlzLtCz0LvRg9Cx0LjQvdCwID09IDApCiAgICAgICAgewogICAgICAgICAgICB0aGlzLtCz0LvRg9Cx0LjQvdCwID0gdGhpcy7Qv9C+0LvRjy5sZW5ndGg7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgdGhpcy7RgNCw0LfQvtCx0YDQsNGC0YzQn9C+0LfQuNGG0LjQuCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB0aGlzLtC/0L7Qt9C40YbQuNC4ID0gW107CiAgICAgICAgZm9yICh2YXIg0L3QvtC80LXRgCBpbiB0aGlzLtC/0L7Qu9GPKQogICAgICAgIHsKICAgICAgICAgICAgdmFyINC/0L7Qu9C1ID0gdGhpcy7Qv9C+0LvRj1vQvdC+0LzQtdGAXTsKICAgICAgICAgICAgZm9yICh2YXIg0YHRgtGA0L7QutCwID0gMDsg0YHRgtGA0L7QutCwIDwgdGhpcy7QstGL0YHQvtGC0LAgLSAxOyArK9GB0YLRgNC+0LrQsCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yICh2YXIg0YHRgtC+0LvQsdC10YYgPSAwOyDRgdGC0L7Qu9Cx0LXRhiA8IHRoaXMu0YjQuNGA0LjQvdCwIC0gMTsgKyvRgdGC0L7Qu9Cx0LXRhikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgINC/0L7Qu9C1W9GB0YLRgNC+0LrQsF1b0YHRgtC+0LvQsdC10YZdID09ICIxIiAmJgogICAgICAgICAgICAgICAgICAgICAgICDQv9C+0LvQtVvRgdGC0YDQvtC60LBdW9GB0YLQvtC70LHQtdGGICsgMV0gPT0gIjIiICYmCiAgICAgICAgICAgICAgICAgICAgICAgINC/0L7Qu9C1W9GB0YLRgNC+0LrQsCArIDFdW9GB0YLQvtC70LHQtdGGXSA9PSAiNCIgJiYKICAgICAgICAgICAgICAgICAgICAgICAg0L/QvtC70LVb0YHRgtGA0L7QutCwICsgMV1b0YHRgtC+0LvQsdC10YYgKyAxXSA9PSAiMyIKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy7Qv9C+0LfQuNGG0LjQuC5wdXNoKFvQvdC+0LzQtdGALCDRgdGC0YDQvtC60LAsINGB0YLQvtC70LHQtdGGXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgdGhpcy7RgNCw0LfQvtCx0YDQsNGC0YwgPSBmdW5jdGlvbijRgdC+0LTQtdGA0LbQuNC80L7QtSkKICAgIHsKICAgICAgICB0aGlzLtGA0LDQt9C+0LHRgNCw0YLRjNCh0LvRg9C20LXQsdC90YPRjtCY0L3RhNC+0YDQvNCw0YbQuNGOKNGB0L7QtNC10YDQttC40LzQvtC1KTsKICAgICAgICB0aGlzLtGA0LDQt9C+0LHRgNCw0YLRjNCf0L7Qt9C40YbQuNC4KCk7CiAgICB9OwogICAgCiAgICB0aGlzLtC+0YLQu9Cw0LTQutCwID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciDQviA9ICIiOwogICAgICAgINC+ICs9ICLQntGC0LvQsNC00L7Rh9C90LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgNCw0YHQutC70LDQtNC60LU6XG4iOwogICAgICAgINC+ICs9ICIg0LLQtdGA0YHQuNGPOiAnIiArIHRoaXMu0LLQtdGA0YHQuNGPICsgIidcbiI7CiAgICAgICAg0L4gKz0gIiDRiNC40YDQuNC90LA6ICciICsgdGhpcy7RiNC40YDQuNC90LAgKyAiJ1xuIjsKICAgICAgICDQviArPSAiINCy0YvRgdC+0YLQsDogJyIgKyB0aGlzLtCy0YvRgdC+0YLQsCArICInXG4iOwogICAgICAgINC+ICs9ICIg0LPQu9GD0LHQuNC90LA6ICciICsgdGhpcy7Qs9C70YPQsdC40L3QsCArICInXG4iOwogICAgICAgINC+ICs9ICIg0L/QvtC30LjRhtC40Lg6XG4iOwogICAgICAgIGZvciAodmFyINC90L7QvNC10YAgaW4gdGhpcy7Qv9C+0LfQuNGG0LjQuCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciDQvyA9IHRoaXMu0L/QvtC30LjRhtC40Lhb0L3QvtC80LXRgF07CiAgICAgICAgICAgINC+ICs9ICIgINC/KCIgKyDQvdC+0LzQtdGAICsgIik6ICciICsg0L9bMF0gKyAiLCAiICsg0L9bMV0gKyAiLCAiICsg0L9bMl0gKyAiJ1xuIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuINC+OwogICAgfTsKfQ==",
  123. {"status":true}
  124. ],
  125. [
  126. "пуск",
  127. "0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC/0YPRgdC6LCDQv9GD0YHQuik7CgpmdW5jdGlvbiDQv9GD0YHQuigpCnsKICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmxlbmd0aCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdmFyINC/NjQgPSDQnNCe0JQu0LzQvtC00YPQu9GMKCLQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0YwiKS5jb2RlNjQ7CiAgICB2YXIg0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtGMID0g0LzRg9GA0L7QvC5hdG9iKNC/NjQpOwogICAgCiAgICB2YXIg0LzQuNGAID0gewogICAgICAgICLQvdCw0YHRgtGA0L7QudC60LgiOiB7fSwKICAgICAgICAi0YHQvtCx0YvRgtC40Y8iOiB7fSwKICAgICAgICAi0YHQvtGB0YLQvtGP0L3QuNC1Ijoge30sCiAgICB9OwogICAgdmFyINGB0L7QsdGL0YLQuNGP0KDQtdCw0LrRhtC40LggPSBuZXcg0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuCgpOwogICAg0YHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuC7RgNCw0LfQvtCx0YDQsNGC0Ywo0LzQuNGALCDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0YwpOwogICAgLy8g0J3QsNGH0LDRgtGMLgogICAg0LzQuNGALtGB0L7QsdGL0YLQuNGPWyLQvdCw0YfQsNC70L4iXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKfQ==",
  128. {"status":true}
  129. ],
  130. [
  131. "встроенные раскладки",
  132. "ZnVuY3Rpb24g0JzQoCgpIHsgcmV0dXJuIFsKCnsKICAgICLQuNC80Y8iOiAiNCDQutGA0YvQu9CwIiwKICAgICLQvtC/0LjRgdCw0L3QuNC1IjogItCg0LDRgdC60LvQsNC00LrQsCwg0L/QvtGF0L7QttCw0Y8g0L3QsCDQutGA0LXQv9C+0YHRgtGMIiwKICAgICLRgNCw0YHQutC70LDQtNC60LAiOgpgCmttYWhqb25nZy1sYXlvdXQtdjEuMAouLi4uLi4xMi4uMTIxMi4uLi4xMjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDM0My4uLi40MzQzLi40My4uLi4uLgouLi4uLi4xMjEyMTIxMjEyMTIxMjEyMTIxMi4uLi4uLgouLi4uLi40MzQzNDM0MzQzNDM0MzQzNDM0My4uLi4uLgouLi4uLi4xMi4uMTIxMjEyMTIxMjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDM0MzQzNDM0MzQzLi40My4uLi4uLgouLi4uMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyLi4uLgouLjEyNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzMTIuLgouLjQzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyNDMuLgouLi4uNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzLi4uLgouLi4uLi4xMi4uMTIxMjEyMTIxMjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDM0MzQzNDM0MzQzLi40My4uLi4uLgouLi4uLi4xMjEyMTIxMjEyMTIxMjEyMTIxMi4uLi4uLgouLi4uLi40MzQzNDM0MzQzNDM0MzQzNDM0My4uLi4uLgouLi4uLi4xMi4uMTIxMi4uLi4xMjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDM0My4uLi40MzQzLi40My4uLi4uLgouLi4uLi4xMi4uMTIuLi4uLi4uLjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDMuLi4uLi4uLjQzLi40My4uLi4uLgouLi4uLi4xMjEyMTIuLi4uLi4uLjEyMTIxMi4uLi4uLgouLi4uLi40MzQzNDMuLi4uLi4uLjQzNDM0My4uLi4uLgouLi4uLi4xMi4uMTIxMjEyMTIxMjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDM0MzQzNDM0MzQzLi40My4uLi4uLgouLi4uLi4xMjEyMTIuLi4uLi4uLjEyMTIxMi4uLi4uLgouLi4uMTI0MzQzNDMuLjEyMTIuLjQzNDM0MzEyLi4uLgouLi4uNDMxMjEyMTIuLjQzNDMuLjEyMTIxMjQzLi4uLgouLi4uLi40MzQzNDMuLi4uLi4uLjQzNDM0My4uLi4uLgouLi4uLi4xMi4uMTIxMjEyMTIxMjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDM0MzQzNDM0MzQzLi40My4uLi4uLgouLi4uLi4xMjEyMTIuLi4uLi4uLjEyMTIxMi4uLi4uLgouLi4uLi40MzQzNDMuLi4uLi4uLjQzNDM0My4uLi4uLgouLi4uLi4xMi4uMTIuLi4uLi4uLjEyLi4xMi4uLi4uLgouLi4uLi40My4uNDMuLi4uLi4uLjQzLi40My4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4xMi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi40My4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4xMi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi40My4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpgCn0sCgp7CiAgICAi0LjQvNGPIjogIlZpIiwKICAgICLQvtC/0LjRgdCw0L3QuNC1IjogIlYt0L7QsdGA0LDQt9C90LDRjyDRgNCw0YHQutC70LDQtNC60LAg0YEg0YLQvtC70YHRgtGL0LzQuCDQutGA0LDRj9C80Lgg0LLQvdC40LfRgyIsCiAgICAi0YDQsNGB0LrQu9Cw0LTQutCwIjoKYAprbWFoam9uZ2ctbGF5b3V0LXYxLjAKMTIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIKNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMKMTIxMi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjEyMTIKNDM0My4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzNDMKMTIxMjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4xMjEyMTIKNDM0MzQzLi4uLi4uLi4uLi4uLi4uLi4uLi40MzQzNDMKMTIxMjEyMTIuLi4uLi4uLi4uLi4uLi4uMTIxMjEyMTIKNDM0MzQzNDMuLi4uLi4uLi4uLi4uLi4uNDM0MzQzNDMKMTIxMjEyMTIxMi4uLi4uLi4uLi4uLjEyMTIxMjEyMTIKNDM0MzQzNDM0My4uLi4uLi4uLi4uLjQzNDM0MzQzNDMKMTIxMjEyMTIxMjEyLi4uLi4uLi4xMjEyMTIxMjEyMTIKNDM0MzQzNDM0MzQzLi4uLi4uLi40MzQzNDM0MzQzNDMKMTIxMjEyMTIxMjEyMTIuLi4uMTIxMjEyMTIxMjEyMTIKNDM0MzQzNDM0MzQzNDMuLi4uNDM0MzQzNDM0MzQzNDMKMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIKNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDMKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KMTIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIKNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMKMTIxMi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjEyMTIKNDM0My4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzNDMKMTIxMjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4xMjEyMTIKNDM0MzQzLi4uLi4uLi4uLi4uLi4uLi4uLi40MzQzNDMKMTIxMjEyMTIuLi4uLi4uLi4uLi4uLi4uMTIxMjEyMTIKNDM0MzQzNDMuLi4uLi4uLi4uLi4uLi4uNDM0MzQzNDMKMTIxMjEyMTIxMi4uLi4uLi4uLi4uLjEyMTIxMjEyMTIKNDM0MzQzNDM0My4uLi4uLi4uLi4uLjQzNDM0MzQzNDMKMTIxMjEyMTIxMjEyLi4uLi4uLi4xMjEyMTIxMjEyMTIKNDM0MzQzNDM0MzQzLi4uLi4uLi40MzQzNDM0MzQzNDMKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KMTIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIKNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMKMTIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIKNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMKMTIxMi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjEyMTIKNDM0My4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzNDMKMTIxMjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4xMjEyMTIKNDM0MzQzLi4uLi4uLi4uLi4uLi4uLi4uLi40MzQzNDMKMTIxMjEyMTIuLi4uLi4uLi4uLi4uLi4uMTIxMjEyMTIKNDM0MzQzNDMuLi4uLi4uLi4uLi4uLi4uNDM0MzQzNDMKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KMTIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIKNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMKMTIxMi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjEyMTIKNDM0My4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzNDMKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KMTIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIKNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMKYAp9LCAgICAKCnsKICAgICLQuNC80Y8iOiAiWC3QvtCx0YDQsNC30L3Ri9C5IiwKICAgICLQvtC/0LjRgdCw0L3QuNC1IjogItCR0L7Qu9GM0YjQsNGPINCx0YPQutCy0LAgWCDQuNC3INGE0LjRiNC10Log0JzQsNC00LbQvtC90LMiLAogICAgItGA0LDRgdC60LvQsNC00LrQsCI6CmAKa21haGpvbmdnLWxheW91dC12MS4wCi4uMTIxMjEyMTIxMjEyLi4uLjEyMTIxMjEyMTIxMi4uCi4uNDM0MzQzNDM0MzQzLi4uLjQzNDM0MzQzNDM0My4uCi4uLi4uLi4uMTIxMjEyLi4uLjEyMTIxMi4uLi4uLi4uCi4uLi4uLi4uNDM0MzQzLi4uLjQzNDM0My4uLi4uLi4uCi4uLi4uLi4uLi4xMjEyLi4uLjEyMTIuLi4uLi4uLi4uCi4uLi4uLi4uLi40MzQzLi4uLjQzNDMuLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjEyMTIxMjEyLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjQzNDM0MzQzLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjEyMTIxMjEyLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjQzNDM0MzQzLi4uLi4uLi4uLi4uCi4uLi4uLi4uMTIxMjEyLi4uLjEyMTIxMi4uLi4uLi4uCi4uLi4uLi4uNDM0MzQzLi4uLjQzNDM0My4uLi4uLi4uCi4uMTIxMjEyMTIxMjEyLi4uLjEyMTIxMjEyMTIxMi4uCi4uNDM0MzQzNDM0MzQzLi4uLjQzNDM0MzQzNDM0My4uCi4uLjEyMTIxMjEyMTIuLi4uLi4xMjEyMTIxMjEyLi4uCi4uLjQzNDM0MzQzNDMuLi4uLi40MzQzNDM0MzQzLi4uCi4uLi4uLi4uLjEyMTIuLi4uLi4xMjEyLi4uLi4uLi4uCi4uLi4uLi4uLjQzNDMuLi4uLi40MzQzLi4uLi4uLi4uCi4uLi4uLi4uLi4xMjEyLi4uLjEyLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi40MzQzLi4uLjQzLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4xMjEyMTIuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi40MzQzNDMuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjEyMTIxMjEyLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjQzNDM0MzQzLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4xMjEyLi4uLjEyMTIuLi4uLi4uLi4uCi4uLi4uLi4uLi40MzQzLi4uLjQzNDMuLi4uLi4uLi4uCi4uLjEyMTIxMjEyMTIuLi4uLi4xMjEyMTIxMjEyLi4uCi4uLjQzNDM0MzQzNDMuLi4uLi40MzQzNDM0MzQzLi4uCi4uLi4uMTIxMjEyMTIuLi4uLi4xMjEyMTIxMi4uLi4uCi4uLi4uNDM0MzQzNDMuLi4uLi40MzQzNDM0My4uLi4uCi4uLi4uLi4uLjEyLi4uLi4uLi4uLjEyLi4uLi4uLi4uCi4uLi4uLi4uLjQzLi4uLi4uLi4uLjQzLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjEyLi4uLjEyLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjQzLi4uLjQzLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4xMi4uMTIuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi40My4uNDMuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjEyLi4uLjEyLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjQzLi4uLjQzLi4uLi4uLi4uLi4uCi4uLi4uMTIxMjEyMTIuLi4uLi4xMjEyMTIxMi4uLi4uCi4uLi4uNDM0MzQzNDMuLi4uLi40MzQzNDM0My4uLi4uCi4uLi4uLi4xMjEyLi4uLi4uLi4uLjEyMTIuLi4uLi4uCi4uLi4uLi40MzQzLi4uLi4uLi4uLjQzNDMuLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4xMjEyMTIuLi4uLi4xMjEyMTIuLi4uLi4uCi4uLi4uLi40MzQzNDMuLi4uLi40MzQzNDMuLi4uLi4uCi4uLi4uLi4uMTIuLi4uLi4uLi4uLi4xMi4uLi4uLi4uCi4uLi4uLi4uNDMuLi4uLi4uLi4uLi40My4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4xMi4uLi4uLi4uMTIuLi4uLi4uLi4uCi4uLi4uLi4uLi40My4uLi4uLi4uNDMuLi4uLi4uLi4uCmAKfSwKCnsKICAgICLQuNC80Y8iOiAi0JfQsNC80L7QuiIsCiAgICAi0L7Qv9C40YHQsNC90LjQtSI6ICLQoNCw0YHQutC70LDQtNC60LAg0LfQsNC80LrQsCIsCiAgICAi0YDQsNGB0LrQu9Cw0LTQutCwIjoKYAprbWFoam9uZ2ctbGF5b3V0LXYxLjEKIyBCb2FyZCBzaXplIGluIHF1YXJ0ZXIgdGlsZXMKdzMyCmgxNgojIEJvYXJkIGRlcHRoCmQ0CiMgTGV2ZWwgMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4uLjEyMTIxMjEyLi4uLi4uLi4uLjEyMTIxMjEyLi4uCi4uLjQzNDM0MzQzLi4uLi4uLi4uLjQzNDM0MzQzLi4uCi4uLjEyMTIxMjEyLi4uMTIxMi4uLjEyMTIxMjEyLi4uCi4uLjQzNDM0MzQzLi4uNDM0My4uLjQzNDM0MzQzLi4uCi4uLi4uLi4xMjEyMTIxMjEyMTIxMjEyMTIuLi4uLi4uCi4uLi4uLi40MzQzNDM0MzQzNDM0MzQzNDMuLi4uLi4uCi4uMTIxMi4uLi4uMTIxMjEyMTIxMi4uLi4uMTIxMi4uCi4uNDM0My4uLi4uNDM0MzQzNDM0My4uLi4uNDM0My4uCi4uMTIuLi4uLi4xMjEyMTIxMjEyMTIuLi4uLi4xMi4uCi4uNDMuLi4uLi40MzQzNDM0MzQzNDMuLi4uLi40My4uCi4uLi4uLjEyMTIxMjEyMTIxMjEyMTIxMjEyLi4uLi4uCi4uLi4uLjQzNDM0MzQzNDM0MzQzNDM0MzQzLi4uLi4uCi4uMTIxMjEyMTIuLjEyMTIxMjEyLi4xMjEyMTIxMi4uCi4uNDM0MzQzNDMuLjQzNDM0MzQzLi40MzQzNDM0My4uCi4uMTIxMjEyMTIuLi4xMjEyMTIuLi4xMjEyMTIxMi4uCi4uNDM0MzQzNDMuLi40MzQzNDMuLi40MzQzNDM0My4uCiMgTGV2ZWwgMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4uLi4uMTIxMjEyLi4uLi4uLi4uLjEyMTIxMi4uLi4uCi4uLi4uNDM0MzQzLi4uLi4uLi4uLjQzNDM0My4uLi4uCi4uLi4uMTIxMjEyLi4uMTIxMi4uLjEyMTIxMi4uLi4uCi4uLi4uNDM0MzQzLi4uNDM0My4uLjQzNDM0My4uLi4uCi4uLi4uLi4uLjEyLi4uLi4uLi4uLjEyLi4uLi4uLi4uCi4uLi4uLi4uLjQzLi4uLi4uLi4uLjQzLi4uLi4uLi4uCi4uMTIxMi4uLi4uLi4xMjEyMTIuLi4uLi4uMTIxMi4uCi4uNDM0My4uLi4uLi40MzQzNDMuLi4uLi4uNDM0My4uCi4uMTIuLi4uLi4uLjEyMTIxMjEyLi4uLi4uLi4xMi4uCi4uNDMuLi4uLi4uLjQzNDM0MzQzLi4uLi4uLi40My4uCi4uLi4uLi4uLi4xMjEyMTIxMjEyMTIuLi4uLi4uLi4uCi4uLi4uLi4uLi40MzQzNDM0MzQzNDMuLi4uLi4uLi4uCi4uLi4xMjEyMTIuLi4uLi4uLi4uLi4xMjEyMTIuLi4uCi4uLi40MzQzNDMuLi4uLi4uLi4uLi40MzQzNDMuLi4uCi4uLi4xMjEyMTIuLi4xMjEyMTIuLi4xMjEyMTIuLi4uCi4uLi40MzQzNDMuLi40MzQzNDMuLi40MzQzNDMuLi4uCiMgTGV2ZWwgMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLjEyMTIuLi4uLi4uLi4uLi4xMjEyLi4uLi4uCi4uLi4uLjQzNDMuLi4uLjEyLi4uLi40MzQzLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjMyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uCi4uLi4uNDM0My4uLi4uLjEyLi4uLi4uNDM0My4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCiMgTGV2ZWwgMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLjEyMTIuLi4uLi4uLi4uLi4xMjEyLi4uLi4uCi4uLi4uLjQzNDMuLi4uLjEyLi4uLi40MzQzLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjMyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uMTIxMi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uCi4uLi4uNDM0My4uLi4uLjEyLi4uLi4uNDM0My4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCmAKfSwKCnsKICAgICLQuNC80Y8iOiAi0JrQvtGCIiwKICAgICLQvtC/0LjRgdCw0L3QuNC1IjogItCg0LDRgdC60LvQsNC00LrQsCDQsiDQstC40LTQtSDQutC+0YLQsCIsCiAgICAi0YDQsNGB0LrQu9Cw0LTQutCwIjoKYAprbWFoam9uZ2ctbGF5b3V0LXYxLjEKIyBCb2FyZCBzaXplIGluIHF1YXJ0ZXIgdGlsZXMKdzM2CmgxNgojIEJvYXJkIGRlcHRoCmQ0CiMgTGV2ZWwgMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4xMi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMxMi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMxMi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMuLgouLi4uLi4uLi4uLi4uLi4uMTIxMjEyMTIxMjEyMTIuLi4uMTIKLi4uLi4uLi4uLi4uLi4xMjQzNDM0MzQzNDM0MzQzLi4uLjQzCi4uMTIxMjEyMTIuLi4uNDMxMjEyMTIxMjEyMTIxMjEyLi4xMgouLjQzNDM0MzQzLi4xMjEyNDM0MzQzNDM0MzQzNDM0My4uNDMKMTIxMjEyMTIxMi4uNDM0MzEyMTIxMjEyMTIxMjEyMTIxMi4uCjQzNDM0MzQzNDMuLjEyMTI0MzQzNDM0MzQzNDM0MzQzNDMuLgoxMjEyMTIxMjEyLi40MzQzMTIxMjEyMTIxMjEyMTIxMjEyLi4KNDM0MzQzNDM0My4uMTIxMjQzNDM0MzQzNDM0MzQzNDM0My4uCjEyMTIxMjEyMTIuLjQzNDMxMjEyMTIxMjEyMTIxMjEyMTIuLgo0MzQzNDM0MzQzMTIuLjEyNDM0MzQzNDM0MzQzNDM0MzQzLi4KLi4xMjEyMTIxMjQzLi40MzEyMTIxMjEyMTIxMjEyMTIuLi4uCi4uNDM0MzQzNDMuLi4uLi40MzQzNDM0MzQzNDM0MzQzLi4uLgojIExldmVsIDEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIuLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzMTIuLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzMTIuLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjQzLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4xMjEyMTIxMjEyMTIuLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uNDM0MzQzNDM0MzQzLi4uLi4uCi4uLi4xMjEyLi4uLi4uLi4xMjEyMTIxMjEyMTIxMjEyLi4uLgouLi4uNDM0My4uLi4uLjEyNDM0MzQzNDM0MzQzNDM0My4uLi4KLi4xMjEyMTIxMi4uLi40MzEyMTIxMjEyMTIxMjEyMTIuLi4uCi4uNDM0MzQzNDMuLi4uLi40MzQzNDM0MzQzNDM0MzQzLi4uLgouLi4uMTIxMi4uLi4uLi4uLi4xMjEyMTIxMjEyMTIuLi4uLi4KLi4uLjQzNDMuLi4uLi4uLi4uNDM0MzQzNDM0MzQzLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIyBMZXZlbCAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4xMjEyMTIxMjEyLi4uLi4uLi4KLi4uLjEyMTIuLi4uLi4uLi4uNDM0MzQzNDM0My4uLi4uLi4uCi4uLi40MzQzLi4uLi4uLi4uLjEyMTIxMjEyMTIuLi4uLi4uLgouLi4uMTIxMi4uLi4uLi4uLi40MzQzNDM0MzQzLi4uLi4uLi4KLi4uLjQzNDMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiMgTGV2ZWwgMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uMTIxMjEyLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLjQzNDM0My4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpgCn0sCgp7CiAgICAi0LjQvNGPIjogItCa0YDQsNCxIiwKICAgICLQvtC/0LjRgdCw0L3QuNC1IjogItCg0LDRgdC60LvQsNC00LrQsCDQsiDQstC40LTQtSDQutGA0LDQsdCwIiwKICAgICLRgNCw0YHQutC70LDQtNC60LAiOgpgCmttYWhqb25nZy1sYXlvdXQtdjEuMQojIEJvYXJkIHNpemUgaW4gcXVhcnRlciB0aWxlcwp3MzIKaDE2CiMgQm9hcmQgZGVwdGgKZDQKIyBMZXZlbCAwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLi4uMTIxMjEyMTIuLi4uLi4uLi4uMTIxMjEyMTIuLi4KLi4uNDM0MzQzNDMuLi4uLi4uLi4uNDM0MzQzNDMuLi4KLi4uMTIxMjEyMTIuLi4xMjEyLi4uMTIxMjEyMTIuLi4KLi4uNDM0MzQzNDMuLi40MzQzLi4uNDM0MzQzNDMuLi4KLi4uLi4uLjEyMTIxMjEyMTIxMjEyMTIxMi4uLi4uLi4KLi4uLi4uLjQzNDM0MzQzNDM0MzQzNDM0My4uLi4uLi4KLi4xMjEyLi4uLi4xMjEyMTIxMjEyLi4uLi4xMjEyLi4KLi40MzQzLi4uLi40MzQzNDM0MzQzLi4uLi40MzQzLi4KLi4xMi4uLi4uLjEyMTIxMjEyMTIxMi4uLi4uLjEyLi4KLi40My4uLi4uLjQzNDM0MzQzNDM0My4uLi4uLjQzLi4KLi4uLi4uMTIxMjEyMTIxMjEyMTIxMjEyMTIuLi4uLi4KLi4uLi4uNDM0MzQzNDM0MzQzNDM0MzQzNDMuLi4uLi4KLi4xMjEyMTIxMi4uMTIxMjEyMTIuLjEyMTIxMjEyLi4KLi40MzQzNDM0My4uNDM0MzQzNDMuLjQzNDM0MzQzLi4KLi4xMjEyMTIxMi4uLjEyMTIxMi4uLjEyMTIxMjEyLi4KLi40MzQzNDM0My4uLjQzNDM0My4uLjQzNDM0MzQzLi4KIyBMZXZlbCAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLi4uLi4xMjEyMTIuLi4uLi4uLi4uMTIxMjEyLi4uLi4KLi4uLi40MzQzNDMuLi4uLi4uLi4uNDM0MzQzLi4uLi4KLi4uLi4xMjEyMTIuLi4xMjEyLi4uMTIxMjEyLi4uLi4KLi4uLi40MzQzNDMuLi40MzQzLi4uNDM0MzQzLi4uLi4KLi4uLi4uLi4uMTIuLi4uLi4uLi4uMTIuLi4uLi4uLi4KLi4uLi4uLi4uNDMuLi4uLi4uLi4uNDMuLi4uLi4uLi4KLi4xMjEyLi4uLi4uLjEyMTIxMi4uLi4uLi4xMjEyLi4KLi40MzQzLi4uLi4uLjQzNDM0My4uLi4uLi40MzQzLi4KLi4xMi4uLi4uLi4uMTIxMjEyMTIuLi4uLi4uLjEyLi4KLi40My4uLi4uLi4uNDM0MzQzNDMuLi4uLi4uLjQzLi4KLi4uLi4uLi4uLjEyMTIxMjEyMTIxMi4uLi4uLi4uLi4KLi4uLi4uLi4uLjQzNDM0MzQzNDM0My4uLi4uLi4uLi4KLi4uLjEyMTIxMi4uLi4uLi4uLi4uLjEyMTIxMi4uLi4KLi4uLjQzNDM0My4uLi4uLi4uLi4uLjQzNDM0My4uLi4KLi4uLjEyMTIxMi4uLjEyMTIxMi4uLjEyMTIxMi4uLi4KLi4uLjQzNDM0My4uLjQzNDM0My4uLjQzNDM0My4uLi4KIyBMZXZlbCAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uMTIxMi4uLi4uLi4uLi4uLjEyMTIuLi4uLi4KLi4uLi4uNDM0My4uLi4uMTIuLi4uLjQzNDMuLi4uLi4KLi4uLi4uLi4uLi4uLi4uNDMuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uMTIuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uNDMuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4xMjEyLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi40MzQzLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4xMjEyLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi40MzQzLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4xMjEyLi4uLi4uLi4uLi4uLi4xMjEyLi4uLi4KLi4uLi40MzQzLi4uLi4uMTIuLi4uLi40MzQzLi4uLi4KLi4uLi4uLi4uLi4uLi4uNDMuLi4uLi4uLi4uLi4uLi4KIyBMZXZlbCAzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uMTIuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uNDMuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uMTIuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uNDMuLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KYAp9LAoKewogICAgItC40LzRjyI6ICLQmtGA0LXRgdGCIiwKICAgICLQvtC/0LjRgdCw0L3QuNC1IjogItCo0LXRgdGC0LjQutC+0L3QtdGH0L3Ri9C5INC60YDQtdGB0YIsINC/0L7RhdC+0LbQuNC5INC90LAg0LHRg9C60LLRgyDCq9CWwrsiLAogICAgItGA0LDRgdC60LvQsNC00LrQsCI6CmAKa21haGpvbmdnLWxheW91dC12MS4wCjEyLi4uLjEyMTIxMjEyMTIxMjEyMTIxMjEyLi4uLjEyCjQzMTIuLjQzNDM0MzQzNDM0MzQzNDM0MzQzLi4xMjQzCjEyNDMxMi4uLi4uLi4uMTIxMi4uLi4uLi4uMTI0MzEyCjQzMTI0MzEyLi4uLi4uNDM0My4uLi4uLjEyNDMxMjQzCi4uNDMxMjQzMTIuLi4uMTIxMi4uLi4xMjQzMTI0My4uCi4uLi40MzEyNDMxMi4uNDM0My4uMTI0MzEyNDMuLi4uCi4uLi4uLjQzMTI0MzEyMTIxMjEyNDMxMjQzLi4uLi4uCi4uLi4uLi4uNDMxMjQzNDM0MzQzMTI0My4uLi4uLi4uCi4uLi4uLi4uMTI0MzEyMTIxMjEyNDMxMi4uLi4uLi4uCi4uLi4uLjEyNDMxMjQzNDM0MzQzMTI0MzEyLi4uLi4uCi4uLi4xMjQzMTI0My4uMTIxMi4uNDMxMjQzMTIuLi4uCi4uMTI0MzEyNDMuLi4uNDM0My4uLi40MzEyNDMxMi4uCjEyNDMxMjQzLi4uLi4uMTIxMi4uLi4uLjQzMTI0MzEyCjQzMTI0My4uLi4uLi4uNDM0My4uLi4uLi4uNDMxMjQzCjEyNDMuLjEyMTIxMjEyMTIxMjEyMTIxMjEyLi40MzEyCjQzLi4uLjQzNDM0MzQzNDM0MzQzNDM0MzQzLi4uLjQzCjEyLi4uLi4uMTIxMjEyMTIxMjEyMTIxMi4uLi4uLjEyCjQzMTIuLi4uNDM0MzQzNDM0MzQzNDM0My4uLi4xMjQzCjEyNDMxMi4uLi4uLi4uMTIxMi4uLi4uLi4uMTI0MzEyCjQzMTI0MzEyLi4uLi4uNDM0My4uLi4uLjEyNDMxMjQzCi4uNDMxMjQzMTIuLi4uMTIxMi4uLi4xMjQzMTI0My4uCi4uLi40MzEyNDMuLi4uNDM0My4uLi40MzEyNDMuLi4uCi4uLi4uLjQzMTIuLi4uMTIxMi4uLi4xMjQzLi4uLi4uCi4uLi4uLi4uNDMuLi4uNDM0My4uLi40My4uLi4uLi4uCi4uLi4uLi4uMTIuLi4uMTIxMi4uLi4xMi4uLi4uLi4uCi4uLi4uLjEyNDMuLi4uNDM0My4uLi40MzEyLi4uLi4uCi4uLi4xMjQzMTIuLi4uMTIxMi4uLi4xMjQzMTIuLi4uCi4uMTI0MzEyNDMuLi4uNDM0My4uLi40MzEyNDMxMi4uCjEyNDMxMjQzLi4uLi4uMTIxMi4uLi4uLjQzMTI0MzEyCjQzMTI0My4uLi4uLi4uNDM0My4uLi4uLi4uNDMxMjQzCjEyNDMuLi4uMTIxMjEyMTIxMjEyMTIxMi4uLi40MzEyCjQzLi4uLi4uNDM0MzQzNDM0MzQzNDM0My4uLi4uLjQzCjEyLi4uLi4uLi4xMjEyMTIxMjEyMTIuLi4uLi4uLjEyCjQzMTIuLi4uLi40MzQzNDM0MzQzNDMuLi4uLi4xMjQzCjEyNDMxMi4uLi4uLi4uMTIxMi4uLi4uLi4uMTI0MzEyCjQzMTI0MzEyLi4uLi4uNDM0My4uLi4uLjEyNDMxMjQzCi4uNDMxMjQzMTIuLi4uMTIxMi4uLi4xMjQzMTI0My4uCi4uLi40MzEyNDMuLi4uNDM0My4uLi40MzEyNDMuLi4uCi4uLi4uLjQzMTIuLi4uMTIxMi4uLi4xMjQzLi4uLi4uCi4uLi4uLi4uNDMuLi4uNDM0My4uLi40My4uLi4uLi4uCi4uLi4uLi4uMTIuLi4uMTIxMi4uLi4xMi4uLi4uLi4uCi4uLi4uLjEyNDMuLi4uNDM0My4uLi40MzEyLi4uLi4uCi4uLi4xMjQzMTIuLi4uMTIxMi4uLi4xMjQzMTIuLi4uCi4uMTI0MzEyNDMuLi4uNDM0My4uLi40MzEyNDMxMi4uCjEyNDMxMjQzLi4uLi4uMTIxMi4uLi4uLjQzMTI0MzEyCjQzMTI0My4uLi4uLi4uNDM0My4uLi4uLi4uNDMxMjQzCjEyNDMuLi4uLi4xMjEyMTIxMjEyMTIuLi4uLi40MzEyCjQzLi4uLi4uLi40MzQzNDM0MzQzNDMuLi4uLi4uLjQzCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCmAKfSwKCnsKICAgICLQuNC80Y8iOiAi0KbQstC10YLRiyIsCiAgICAi0L7Qv9C40YHQsNC90LjQtSI6ICLQoNCw0YHQutC70LDQtNC60LAsINGB0L7QtNC10YDQttCw0YnQsNGPINGI0LXRgdGC0Ywg0YbQstC10YLQvtCyIiwKICAgICLRgNCw0YHQutC70LDQtNC60LAiOgpgCmttYWhqb25nZy1sYXlvdXQtdjEuMAouLjEyMTIxMjEyLi4xMjEyMTIxMi4uMTIxMjEyMTIuLgouLjQzNDM0MzQzLi40MzQzNDM0My4uNDM0MzQzNDMuLgouLjEyLi4uLjEyLi4xMi4uLi4xMi4uMTIuLi4uMTIuLgouLjQzLi4uLjQzLi40My4uLi40My4uNDMuLi4uNDMuLgouLjEyMTIxMjEyLi4xMjEyMTIxMi4uMTIxMjEyMTIuLgouLjQzNDM0MzQzLi40MzQzNDM0My4uNDM0MzQzNDMuLgouLi4uLjEyLi4uLi4uLi4xMi4uLi4uLi4uMTIuLi4uLgouLi4uLjQzMTIxMjEyMTI0MzEyMTIxMjEyNDMuLi4uLgouLi4uLjEyNDM0MzQzNDMxMjQzNDM0MzQzMTIuLi4uLgouLi4uLjQzLi4uLi4uLi40My4uLi4uLi4uNDMuLi4uLgouLjEyMTIxMjEyLi4xMjEyMTIxMi4uMTIxMjEyMTIuLgouLjQzNDM0MzQzLi40MzQzNDM0My4uNDM0MzQzNDMuLgouLjEyLi4uLjEyLi4xMi4uLi4xMi4uMTIuLi4uMTIuLgouLjQzLi4uLjQzLi40My4uLi40My4uNDMuLi4uNDMuLgouLjEyMTIxMjEyLi4xMjEyMTIxMi4uMTIxMjEyMTIuLgouLjQzNDM0MzQzLi40MzQzNDM0My4uNDM0MzQzNDMuLgouLjEyMTIxMjEyLi4uLjEyMTIuLi4uLi4xMjEyLi4uLgouLjQzNDM0MzQzLi4uLjQzNDMuLi4uLi40MzQzLi4uLgouLjEyLi4uLjEyLi4xMi4uLi4xMi4uMTIuLi4uMTIuLgouLjQzLi4uLjQzLi40My4uLi40My4uNDMuLi4uNDMuLgouLjEyMTIxMjEyLi4uLjEyMTIuLi4uLi4xMjEyLi4uLgouLjQzNDM0MzQzLi4uLjQzNDMuLi4uLi40MzQzLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uMTIxMi4uLi4uLjEyMTIuLi4uLi4xMjEyLi4uLgouLi4uNDM0My4uLi4uLjQzNDMuLi4uLi40MzQzLi4uLgouLjEyLi4uLjEyLi4xMi4uLi4xMi4uMTIuLi4uMTIuLgouLjQzLi4uLjQzLi40My4uLi40My4uNDMuLi4uNDMuLgouLi4uMTIxMi4uLi4uLjEyMTIuLi4uLi4xMjEyLi4uLgouLi4uNDM0My4uLi4uLjQzNDMuLi4uLi40MzQzLi4uLgouLi4uMTIxMi4uLi4uLi4xMi4uLi4uLi4uMTIuLi4uLgouLi4uNDM0My4uLi4uLi40My4uLi4uLi4uNDMuLi4uLgouLjEyLi4uLjEyLi4xMi4uLi4xMi4uMTIuLi4uMTIuLgouLjQzLi4uLjQzLi40My4uLi40My4uNDMuLi4uNDMuLgouLi4uMTIxMi4uLi4uLi4xMi4uLi4uLi4uMTIuLi4uLgouLi4uNDM0My4uLi4uLi40My4uLi4uLi4uNDMuLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLjEyLi4uLi4uLi4xMi4uLi4uLi4uMTIuLi4uLgouLi4uLjQzLi4uLi4uLi40My4uLi4uLi4uNDMuLi4uLgouLjEyLi4uLjEyLi4xMi4uLi4xMi4uMTIuLi4uMTIuLgouLjQzLi4uLjQzLi40My4uLi40My4uNDMuLi4uNDMuLgouLi4uLjEyLi4uLi4uLi4xMi4uLi4uLi4uMTIuLi4uLgouLi4uLjQzLi4uLi4uLi40My4uLi4uLi4uNDMuLi4uLgouLi4uLjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLjQzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLjEyLi4uLjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLjQzLi4uLjQzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLjQzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpgCn0sCgp7CiAgICAi0LjQvNGPIjogItCT0LDQu9Cw0LrRgtC40LrQsCIsCiAgICAi0L7Qv9C40YHQsNC90LjQtSI6ICLQodC60L7Qv9C70LXQvdC40Y8g0LzQsNGC0LXRgNC40Lgg0YDQsNC30L3QvtCz0L4g0YDQsNC30LzQtdGA0LAiLAogICAgItGA0LDRgdC60LvQsNC00LrQsCI6CmAKa21haGpvbmdnLWxheW91dC12MS4wCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uMTIxMi4uLi4uLi4uLjQzLi4uLi4uLi4uMTIxMi4uCi4uNDM0My4uLi4uLi4xMjEyMTIuLi4uLi4uNDM0My4uCi4xMjEyMTIuLi4uLi40MzQzNDMuLi4uLi4xMjEyMTIuCi40MzQzNDMuLi4uMTIxMjEyMTIxMi4uLi40MzQzNDMuCi4uMTIxMi4uLi4uNDM0MzQzNDM0My4uLi4uMTIxMi4uCi4uNDM0My4uLjEyMTIxMjEyMTIxMjEyLi4uNDM0My4uCi4uLi4uLi4xMjQzNDM0MzQzNDM0MzQzMTIuLi4uLi4uCi4uLi4uLi40MzEyMTIxMjEyMTIxMjEyNDMuLi4uLi4uCi4uMTIxMi4uLjQzNDM0MzQzNDM0MzQzLi4uMTIxMi4uCi4uNDM0My4uLi4uMTIxMjEyMTIxMi4uLi4uNDM0My4uCi4xMjEyMTIuLi4uNDM0MzQzNDM0My4uLi4xMjEyMTIuCi40MzQzNDMuLi4uLi4xMjEyMTIuLi4uLi40MzQzNDMuCi4uMTIxMi4uLi4uLi40MzQzNDMuLi4uLi4uMTIxMi4uCi4uNDM0My4uLi4uLi4uLjEyLi4uLi4uLi4uNDM0My4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLjEyLi4uLi4uLi4uLjEyLi4uLi4uLi4uLjEyLi4uCi4uLjQzLi4uLi4uLi4uLjQzLi4uLi4uLi4uLjQzLi4uCi4uMTIxMi4uLi4uLi4xMjEyMTIuLi4uLi4uMTIxMi4uCi4uNDM0My4uLi4uLi40MzQzNDMuLi4uLi4uNDM0My4uCi4uLjEyLi4uLi4uMTIxMjEyMTIxMi4uLi4uLjEyLi4uCi4uLjQzLi4uLi4uNDM0MzQzNDM0My4uLi4uLjQzLi4uCi4uLi4uLi4uLjEyMTIxMjEyMTIxMjEyLi4uLi4uLi4uCi4uLi4uLi4uLjQzNDM0MzQzNDM0MzQzLi4uLi4uLi4uCi4uLjEyLi4uLi4uMTIxMjEyMTIxMi4uLi4uLjEyLi4uCi4uLjQzLi4uLi4uNDM0MzQzNDM0My4uLi4uLjQzLi4uCi4uMTIxMi4uLi4uLi4xMjEyMTIuLi4uLi4uMTIxMi4uCi4uNDM0My4uLi4uLi40MzQzNDMuLi4uLi4uNDM0My4uCi4uLjEyLi4uLi4uLi4uLjEyLi4uLi4uLi4uLjEyLi4uCi4uLjQzLi4uLi4uLi4uLjQzLi4uLi4uLi4uLjQzLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLjEyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjEyLi4uCi4uLjQzLi4uLi4uLi4xMjEyMTIuLi4uLi4uLjQzLi4uCi4uLi4uLi4uLi4uLi40MzQzNDMuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uMTIxMjEyMTIxMi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uNDM0MzQzNDM0My4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uMTIxMjEyMTIxMi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uNDM0MzQzNDM0My4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4xMjEyMTIuLi4uLi4uLi4uLi4uCi4uLjEyLi4uLi4uLi40MzQzNDMuLi4uLi4uLjEyLi4uCi4uLjQzLi4uLi4uLi4uLjEyLi4uLi4uLi4uLjQzLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4xMjEyMTIuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi40MzQzNDMuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uMTIxMjEyMTIxMi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uNDM0MzQzNDM0My4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4xMjEyMTIuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi40MzQzNDMuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4xMi4uMTIuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi40My4uNDMuLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjEyLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLjQzLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCmAKfSwKCnsKICAgICLQuNC80Y8iOiAi0J/QsNGD0LoiLAogICAgItC+0L/QuNGB0LDQvdC40LUiOiAi0KDQsNGB0LrQu9Cw0LTQutCwINCyINCy0LjQtNC1INC/0LDRg9C60LAiLAogICAgItGA0LDRgdC60LvQsNC00LrQsCI6CmAKa21haGpvbmdnLWxheW91dC12MS4xCiMgQm9hcmQgc2l6ZSBpbiBxdWFydGVyIHRpbGVzCnczMgpoMTYKIyBCb2FyZCBkZXB0aApkNAojIExldmVsIDAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouLi4uLi4xMjEyLi4uMTIuLjEyLi4uMTIxMi4uLi4uLgouLi4uLi40MzQzLi4uNDMuLjQzLi4uNDM0My4uLi4uLgouLi4uLi4uLjEyLi4uLjEyMTIuLi4uMTIuLi4uLi4uLgouLjEyLi4uLjQzMTIuLjQzNDMuLjEyNDMuLi4uMTIuLgouLjQzMTIuLi4uNDMxMjEyMTIxMjQzLi4uLjEyNDMuLgouLi4uNDMxMjEyLi40MzQzNDM0My4uMTIxMjQzLi4uLgouLi4uLi40MzQzMTIxMjEyMTIxMjEyNDM0My4uLi4uLgouLi4uLi4uLi4uNDM0MzQzNDM0MzQzLi4uLi4uLi4uLgouLi4uLi4uLi4xMjEyMTIxMjEyMTIxMi4uLi4uLi4uLgouMTIxMjEyMTI0MzQzNDM0MzQzNDM0MzEyMTIxMjEyLgouNDM0MzQzNDMuMTIxMjEyMTIxMjEyLjQzNDM0MzQzLgouLi4uLi4uLi4uNDM0MzQzNDM0MzQzLi4uLi4uLi4uLgouLi4uLi4uLjEyLi4xMjEyMTIxMi4uMTIuLi4uLi4uLgouLi4uLi4xMjQzLi40MzQzNDM0My4uNDMxMi4uLi4uLgouLjEyMTI0My4uLi4uLjEyMTIuLi4uLi40MzEyMTIuLgouLjQzNDMuLi4uLi4uLjQzNDMuLi4uLi4uLjQzNDMuLgojIExldmVsIDEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouLi4uLi4xMjEyLi4uMTIuLjEyLi4uMTIxMi4uLi4uLgouLi4uLi40MzQzLi4uNDMuLjQzLi4uNDM0My4uLi4uLgouLi4uLi4uLjEyLi4uLi4uLi4uLi4uMTIuLi4uLi4uLgouLjEyLi4uLjQzMTIuLi4uLi4uLjEyNDMuLi4uMTIuLgouLjQzMTIuLi4uNDMuLjEyMTIuLjQzLi4uLjEyNDMuLgouLi4uNDMxMjEyLi4uLjQzNDMuLi4uMTIxMjQzLi4uLgouLi4uLi40MzQzLi4xMjEyMTIxMi4uNDM0My4uLi4uLgouLi4uLi4uLi4uLi40MzQzNDM0My4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLjEyMTIxMjEyMTIuLi4uLi4uLi4uLgouMTIxMjEyMTIuLjQzNDM0MzQzNDMuLjEyMTIxMjEyLgouNDM0MzQzNDMuLi4xMjEyMTIxMi4uLjQzNDM0MzQzLgouLi4uLi4uLi4uLi40MzQzNDM0My4uLi4uLi4uLi4uLgouLi4uLi4uLjEyLi4uLjEyMTIuLi4uMTIuLi4uLi4uLgouLi4uLi4xMjQzLi4uLjQzNDMuLi4uNDMxMi4uLi4uLgouLjEyMTI0My4uLi4uLjEyMTIuLi4uLi40MzEyMTIuLgouLjQzNDMuLi4uLi4uLjQzNDMuLi4uLi4uLjQzNDMuLgojIExldmVsIDIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouLi4uLi4uLjEyLi4uLi4uLi4uLi4uMTIuLi4uLi4uLgouLi4uLi4uLjQzLi4uLi4uLi4uLi4uNDMuLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLjEyLi4uLi4uMTIuLi4uLi4uLjEyLi4uLi4uMTIuLgouLjQzLi4uLi4uNDMuLi4uLi4uLjQzLi4uLi4uNDMuLgouLi4uLi4xMi4uLi4uLi4uLi4uLi4uLi4xMi4uLi4uLgouLi4uLi40My4uLi4uLjEyMTIuLi4uLi40My4uLi4uLgouLi4uLi4uLi4uLi4uLjQzNDMuLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uMTIxMjEyLi4uLi4uLi4uLi4uLgouMTIuLjEyLi4uLi4uNDM0MzQzLi4uLi4uMTIuLjEyLgouNDMuLjQzLi4uLi4uLjEyMTIuLi4uLi4uNDMuLjQzLgouLi4uLi4uLi4uLi4uLjQzNDMuLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLjEyMTIuLi4uLi4uLi4uLi4uLgouLi4uLi4xMi4uLi4uLjQzNDMuLi4uLi4xMi4uLi4uLgouLjEyLi40My4uLi4uLi4uLi4uLi4uLi40My4uMTIuLgouLjQzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uNDMuLgojIExldmVsIDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4xMi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi40My4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpgCn0sCiAgICAKXTsgfQ==",
  133. {"status":false}
  134. ],
  135. [
  136. "отладочные раскладки",
  137. "ZnVuY3Rpb24g0JzQoCgpIHsgcmV0dXJuIFsKCnsKICAgICLQuNC80Y8iOiAi0J7RgNC40LXQvdGC0LDRhtC40Y8iLAogICAgItC+0L/QuNGB0LDQvdC40LUiOiAi0J/RgNC+0LLQtdGA0LrQsCDQvtGA0LjQtdC90YLQsNGG0LjQuCDRhNC40YjQtdC6IiwKICAgICLRgNCw0YHQutC70LDQtNC60LAiOgpgCmttYWhqb25nZy1sYXlvdXQtdjEuMAouLjEyMTIxMjEyMTIxMi4uLi4xMjEyMTIxMjEyMTIuLgouLjQzNDM0MzQzNDM0My4uLi40MzQzNDM0MzQzNDMuLgouLi4uLi4uLjEyMTIxMi4uLi4xMjEyMTIuLi4uLi4uLgouLi4uLi4uLjQzNDM0My4uLi40MzQzNDMuLi4uLi4uLgouLi4uLi4uLi4uMTIxMi4uLi4xMjEyLi4uLi4uLi4uLgouLi4uLi4uLi4uNDM0My4uLi40MzQzLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4xMjEyMTIxMi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi40MzQzNDM0My4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLjEyMTIuLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLjQzNDMuLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uMTIxMi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uNDM0My4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uMTIxMjEyMTIuLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uNDM0MzQzNDMuLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4xMjEyMTIxMjEyMTIuLgouLi4uLi4uLi4uLi4uLi4uLi40MzQzNDM0MzQzNDMuLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4xMi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi40My4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4xMi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi40My4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpgCn0sCgp7CiAgICAi0LjQvNGPIjogItCf0L7QsdC10LTQsCIsCiAgICAi0L7Qv9C40YHQsNC90LjQtSI6ICLQn9GA0L7QstC10YDQutCwINC/0L7QsdC10LTRiyIsCiAgICAi0YDQsNGB0LrQu9Cw0LTQutCwIjoKYAprbWFoam9uZ2ctbGF5b3V0LXYxLjAKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uMTIxMjEyLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uNDM0MzQzLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uMTIuLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uNDMuLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KYAp9LAoKewogICAgItC40LzRjyI6ICLQn9C+0YDQsNC20LXQvdC40LUiLAogICAgItC+0L/QuNGB0LDQvdC40LUiOiAi0J/RgNC+0LLQtdGA0LrQsCDQv9C+0YDQsNC20LXQvdC40Y8iLAogICAgItGA0LDRgdC60LvQsNC00LrQsCI6CmAKa21haGpvbmdnLWxheW91dC12MS4wCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4xMjEyMTIxMjEyMTIxMi4uLi4uLi4uCi4uLi4uLi4uLi40MzQzNDM0MzQzNDM0My4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjEyMTIxMjEyMTIuLi4uLi4uLi4uCi4uLi4uLi4uLi4uLjQzNDM0MzQzNDMuLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCmAKfSwKICAgIApdOyB9",
  138. {"status":false}
  139. ],
  140. [
  141. "темы встроенные",
  142. "ZnVuY3Rpb24g0JzQoCgpIHsgcmV0dXJuIFsKCnsKICAgICLQuNC80Y8iOiAi0JfQsNCz0LvRg9GI0LrQsCIsCiAgICAi0L7Qv9C40YHQsNC90LjQtSI6ICLQn9GA0L7RgdGC0LXQudGI0LDRjyDRgtC10LzQsCDQsiDRhtCy0LXRgiDRhNC+0L3QsCIsCiAgICAi0LjQt9C+0LHRgNCw0LbQtdC90LjRjyI6IFsKClsnMC8xJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBTmxCTVZFVkVSSGREUTNWQlFYRWdJRGdBQUFBb0tFWkRRM1lJQ0E0aUlqdEVSSGMrUG13d01GUVZGU1FJQ0E0RUJBZERRM1V6TTFrME5GdFJYM29QQUFBQUFXSkxSMFFFajJqWlVRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZktvdGJ0ejRBQUFCWlNVUkJWSGphN2M2SERZQXdFQUN4QkVMdit5OUwyUUc5RVBZQ2R5a0JBQUFBQUFBQUFOK1FxeHc3VUpjbXROOTJ3UU45Q1J3WXhta3VrUU5MZWNRTnJORUQyMldQSExnZEJnd1lNR0RBd084SEFBQUFBQUI0MFFrZDhRTEpKYnZvQ3dBQUFDVjBSVmgwWkdGMFpUcGpjbVZoZEdVQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TVBDOThrd0FBQUFsZEVWWWRHUmhkR1U2Ylc5a2FXWjVBREl3TVRrdE1Ea3RNRGhVTVRRNk1qZzZOVGNyTURNNk1EQ0I0RXJ3QUFBQUFFbEZUa1N1UW1DQyddLAoKWycwLzInLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUE4RkJNVkVWRVJIYy9QMjhsSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQXlNbGNHQmdvQUFBQUlDQTQyTmw0M04yRURBd1VSRVIwb0tFWXVMbEFqSXo0TURCVUZCUWc3TzJjVkZTUkVSSGREUTNVZEhUSVZGU1E4UEdrQUFBQVNFaDhCQVFFK1BtMHdNRlFxS2trZ0lEZ3lNbGdvS0VZME5Gc25KMFF4TVZZeE1WVkJRWEVaR1NzOFBHazVPV01CQVFJT0RoZzRPR0lIQncweE1WWkJRWElpSWp3bUprTkRRM1lxS2tvSEJ3d0RBd1k2T21VUER4c1dGaVk4UEdrbEpVRUNBZ01TRWg4Mk5sNGlJanN2TDFJcEtVZEFRSEJDUW5RTkRSY3JLMHN5TWxjWUdDb2JHeTg5UFdvT0Roa0ZCUWswVy9vVEFBQUFBV0pMUjBRTWdiTlJZd0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLb3RidHo0QUFBRHRTVVJCVkhqYTdkVEhVc0lBRkViaGlHTGpLRFpFUU1WZXNIZXdkK3krLzl2SUtLUHVYSm03T2Q4bWQzZit6R1NTSkpJa1NaSWtTWklrU1pJa1NYL3F5SFIyWmJ0N2V2dUMrdjA1dmd3TWh2VHpRekE4TWpwV2dQRml4SUFKeUpSYXozSUZKZ1A2VTlOVVM1OVh1Y0RNYlBvRDVtQytmUzdBWXZvRGxtQzVmYTdBYXZvRGlyWGFXdnRjaDQzMEIvelkzR0s3Rk5qZjJZVzl1UHorUVJZT3cvSkg5UVljMThQNko2ZXRIL0haZVZTK2RIRUpWOWRocjUvY1FPTTI4UE8vZytwOVhENXA1bmhvQnZhVFIzaUs3Q2ZQOEZMNTlwcitnRGQreTZjLzREMTZnQ1JKa2lSSmtpVHAzMzBBN05VU3JxQUU1SndBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRER3dmZKTUFBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBd2dlQks4QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycwLzMnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJEbEJNVkVWRVJIZEJRWEkzTjJBMU5WMC9QMjlDUW5Nakl6MElDQTRBQUFBR0Jnb2tKRDlDUW5NUER4b0pDUTg4UEdrY0hERU5EUmN2TDFNeU1sZ1BEeHNRRUJ4RVJIYy9QMjRDQWdNTkRSZERRM1VORFJZNU9XTXlNbGd0TFU0ckswd3NMRTBuSjBVN08yYzJObDRoSVRvdUxsQWJHekF0TFU0bkowUVlHQ281T1dSQlFYSStQbTB5TWxjWUdDb2RIVElxS2tvREF3WWtKRDlEUTNZQ0FnUWNIREU5UFdzK1BtdzBORnN3TUZRbkowVVJFUjQ3TzJnbUprTVhGeWdCQVFGQ1FuUTVPV01iR3k4N08yY0VCQWNTRWg4Ykd5OE9EaGtGQlFnT0Roa2pJejBsSlVFdkwxSVVGQ005UFdzRUJBZEJRWEVBQUFBdUxsQUhCdzBJQ0E0b0tFWTFOVnd6TTFrNU9XUWxKVUE5UFdxM0dCcU5BQUFBQVdKTFIwUUlodDZWZWdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUVhU1VSQlZIamE3ZGJYVWdKQkZJVGhRUWx0amtoUUVWRU11Q3BpVmdTem1ESHIrNytJU3kzb0crd3B5Lys3bU9xNzdybVpHdWNBQUFBQUFBQUFBQUFBQU1CZkVPbnFqdHExeCtJSitYcDYrNHh1MzYrMmdVR1RBVVBTOEVnME9qb21qU2NOK2lkU1NzZGFJWk9WSmcwR1RFblRRY3BKTXdZRDh0SnNrQXJTbk1HQStXSXhFcVFGYWRGZ3dLOGxhZG1xTzFsYThWYWxOYlBMcjdlZWdmSkd4WGJBNXRhMjJZQ2QzYjM5QXlseGFMYWdwU29kbVE1SVpsV3JoOTVhOGJ6alRqNlJUc08vOXBuT08vbmk1MUVNMDZXdU11M1lVTXJnUzNBdDNRVHBWcm9MdjkvZFB5Z1ZmM1N1VkMycldUQVk0SjVxL2lQMC9PSWZ6VmVMZnVmZTBzR1ByUEZ1MCsvN3lIM212UytML3hnQUFBQUFBQUFBL0F2ZllSMFZ3VWVEb1RFQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TUREd3ZmSk1BQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXdnZUJLOEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMC80JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBZTFCTVZFVkVSSGRDUW5SQlFYRkNRblJCUVhFS0NoRUFBQUFsSlVFWkdTd3NMRTA3TzJjREF3WU9EaGtJQ0E0Zkh6Y0ZCUWd3TUZReU1sY3VMbEUzTjJFK1BtMEdCZ3NiR3pCRFEzWVRFeUlMQ3hOQlFYSW1Ka0lDQWdNM04yRTJObDhCQVFJbkowUVVGQ05FUkhjYkd5OHRMVTRrSkQ4WUdDbzJObDQ1T1dTZ2RiNnVBQUFBQVdKTFIwUUdZV2E0ZlFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUNZU1VSQlZIamE3ZFJaRXNFQUZFVFJSMmdSTTBuTVlvaGgveXZFanlvTG9FdTVad045dnpvQ0FBQUFBQUFBQUFBQUFBRDhpa1l6c2U2MzJ1cFlBMUo1QTdyeUJtUTliMERTMThBYU1OUm83QXlZU05PWk1TQXZWSVl4WUw3UWN1VU1XR3V6RFdQQXJ0SStqQUdQQ3o0Y25RR3BpanlNQVpsMHFwL08wcVd1cjE4UHVPbE4rWDhCTDg0bkpJQUFBQUFBQUFBQUFNQm4zUUU0cndmRWZsMDFSUUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNUEM5OGt3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TURDQjRFcndBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzAvNScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQS8xQk1WRVZFUkhjUER4b0FBQUF4TVZVRkJRbEFRSEFSRVIwZEhUSTVPV00yTmw4dkwxTXRMVTQ2T21Vakl6MEJBUUZDUW5RWkdTd0tDaEVQRHhzVUZDTTJObDhYRnlnS0NoSUNBZ01HQmdvVEV5RXFLa3BEUTNVRUJBY01EQlU3TzJoQVFIQURBd1llSGpVckswd3BLVWNjSERFRkJRZ0pDUkEvUDI4M04yQUpDUTg1T1dNOVBXc1FFQndlSGpRL1AyOHpNMWsvUDI0OFBHa0NBZ1FEQXdWQ1FuUWFHaTAwTkZzbUprSXNMRTBySzB3dkwxSXlNbGdpSWpzek0xb1NFaUFDQWdSRVJIZENRbk11TGxBYUdpMUJRWEVIQncwZEhUTS9QMjRCQVFJRUJBY0hCdzBEQXdZN08yY1dGaVlCQVFFVEV5STVPV1ErUG0wdExVNGtKRDg4UEdsYWZhOTlBQUFBQVdKTFIwUUNaZ3Q4WkFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUVFU1VSQlZIamE3ZFhYVXNKZ0ZFWGgzeTJnRUxHaVlrV3hnRmdRTEZHeG9ZSVYrL3MvaTBFd1hqcWpNemt6enZxdXpsWDJ1a25pSEFBQUFBQUFBQUFBQUFBQXdFOTZGT28xQ1lnWkI4U2xSRjlYdjBWQVVrcFo3SVk4YWNBMElLM0JJZE9BWVkyWTdydFJqV1hHSnlhelU5TXpOZ0ZaelhaZndybDVpLzFjc0x5d21GOWFYcEZXQ3dZQlJXbXQxRDdXTjZSTmc0Q3Rjbm03YzFXcTJ0azFLUGkySisyYkJ2alNnV25Bb2VSRnYzcmsxYjdPWStraytvQlRuY1U3MTNsQzFYcjBBWDc0OGwxSWw5SHZ1NnVHMUx4MnJwQyswVzNGSU1BbDIxL2l1eUJEOTdXL1ArMDNIbHFQbjcrQ3AyZWIvY0RMcS8rV2Z6ZWJCd0FBQUFBQUFJRC83Z01jTWhFY0RjdHk1UUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNUEM5OGt3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TURDQjRFcndBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzAvNicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkpsQk1WRVZFUkhkRVJIYzdPMmN5TWxnMk5sNUJRWEVwS1VnTEN4TUFBQUFURXlFNk9tVkNRblFWRlNVQ0FnTTFOVndhR2k0VEV5STFOVnhCUVhJN08yY2hJVGtCQVFFSUNBNC9QMjgxTlYwV0ZpZERRM1lsSlVBbkowVVZGU1VCQVFFOVBXdENRblFFQkFjVEV5RUNBZ1E1T1dNMU5WMDJObDh4TVZZckswc21Ka001T1dRek0xazlQV29kSFRJdExVNEpDUkFPRGhreU1sY1pHU3NlSGpVbUprTVdGaVlCQVFJaElUbzNOMkEzTjJFaElUb0JBUUk0T0dJVkZTUTBORnN2TDFJUER4c1hGeWtTRWg4Ykd5OHZMMU1qSXowdkwxSWtKRDhzTEUwckswc3dNRlF1TGxFa0pEOHdNRlJCUVhFQ0FnTWJHekErUG13WUdDb1NFaDg2T21ZREF3WXJLMHhDUW5NbkowVUpDUTh3TUZRSUNBNE1EQlV5TWxnME5Gc29LRVlqSXo0cEtVZXVmTmpOQUFBQUFXSkxSMFFJaHQ2VmVnQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFFdFNVUkJWSGphN2RYSFVnSlJGSVRoaTRvMkJrUVVSZFF4WUZiTUlvZzU1NXl6Ny84U0RqQlZ2c0djMHZxL1ZlKzZGelBuT2djQUFBQUFBQUFBQUFBQUFQNkNTRTF0WGRTd3ZyNUJ2bGlqVVg5VHM2cGE0allEV3FWRVc3SzlJNlhPTG92K3ROU2RLWWNlcWRkaVFKKzgva29ZR05TUVFYOHlxMFFRaDBkR0RRYU1TZU1HdGI4bXBMaUxUSTVOVFJzTnlFbnRNN1BsdjNCdTNtVEFnclFZM0FFdFdReFk5b3Z6SzRWb2NUV2wwcHJCZ0hYSjI2aWtUV25MWU1DMmxBdmlqdjg1aEQ5Z1Y5b0w0cjUwRVA2QVE2a1l4Q1BwT1B3Qko5SnBFTStrOC9BSFhGenFLb2d4NlRyOEFlNUdYdlVKT0pkdURmcmRYVjczRDQ4dStaUlZLbTB4d0kzN3A2ajA3UG4zb042azM3bVgxOG9oZm5zMzZuY3U4L0g1OVYySW1QVURBQUFBQUFBQXdELzNBMFhGR0dtVjQ5dW9BQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvNycsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWsxQk1WRVZFUkhjWkdTd0FBQUFiR3pBckswd2RIVElWRlNRckswdERRM1lTRWg4VkZTVkVSSGNvS0VZR0JnbytQbTA3TzJnREF3VXZMMUlSRVI0YUdpMHBLVWNEQXdZK1BtMUJRWEVHQmdvaUlqd2lJanRCUVhFOVBXc0RBd1VuSjBVYkd6QUhCdzFDUW5RQ0FnTWxKVUVLQ2hFek0xa3NMRTBhR2kwQkFRRUhCd3dPRGhrNE9HSWVIalVsSlVFdkwxSVRFeUUvUDI3VWEvYVFBQUFBQVdKTFIwUUNaZ3Q4WkFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUNsU1VSQlZIamE3ZE5IRW9JQUVFUlJiQk9JaWhFUmM4N2gvcWR6cDY3Y2FTLzg3d0svYTZvbUNBQUFBQUFBQUFBQUFBQUFBRDRyNkYzeER3ZVV5azhWcWZyN0FTOWhwRnJzSEZCWG8rbnNKeTIxbmYyd282NnpIL1RVVDUzOVFhYWg5UUM1c3BHelA1NW9hajNBVFBPRnM1OHVsVnNQc0pJU1p6OWVLN0llWUNOdHJRTjIybHQvTUQ3b2FEM0FTVHBiQjF5a3EzWEFUYnBiQndBQUFBQUFBQUFBdnVzQnZUY0Z4NkVEdWNJQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TUREd3ZmSk1BQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXdnZUJLOEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMC84JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCTlZCTVZFVkVSSGRDUW5NM04yRXlNbGc5UFdwRVJIYzFOVjBQRHhzQUFBQUFBQUFFQkFjaElUbEJRWEVrSkQ4SEJ3MDhQR2t6TTFrRkJRa3BLVWM3TzJoQVFIQVZGU1VRRUJ4RFEzVVJFUjBCQVFJMk5sOHlNbGREUTNZREF3WVNFaDh6TTFvOVBXb2FHaTRiR3k5Q1FuTUJBUUVQRHhveE1WWWlJandXRmljdUxsRkNRblFPRGhnQkFRSTdPMmMrUG13S0NoRWJHekF6TTFrb0tFWUtDaEV0TFU0L1AyOFRFeUlEQXdVMk5sNHBLVWdGQlFnTURCVTNOMkFpSWpzTEN4TXRMVThkSFRNQkFRRTRPR0kxTlZ3UUVCeERRM1V3TUZRWEZ5azVPV1FXRmljNU9XTUZCUWtuSjBRdUxsQUtDaElIQnd3cEtVY1RFeUU5UFdzMk5sOG9LRVlJQ0E1RFEzWUpDUkFxS2trc0xFMDVPV1FHQmdzSkNROGdJRGcrUG13WkdTc3VMbEJBUUhBMU5WMHFLa2tsSlVFd01GUTdPMmVIdVRtL0FBQUFBV0pMUjBRSjhkbWw3QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRTRTVVJCVkhqYTdkYm5Vc0pBSEFUd0V3MnlLaUtDdlJOVTBHQXZHR3pZc0FMMjNzdjdQNElKRjE3aC91TzR2eSszMzNabk1ybEVLU0lpSWlJaUlpSWlJaUlpSWlJaUl2b0xHa0tOVFpaY2ZiZzVBcUNsdFUyb1A0cEFlMHlrdnlPQ2VHY2lHZTRDdW5za0J2U2lyOTgvTFcvQmdFRC80QkNHZFJvQm9nSURSb0V4bldKQVNtQ0FuY2E0VGhQQXBNQUFsUUd5L2prMURTY25NV0JtRnVtNTdQekNJcHdsaVg2bGxsZjBOYkNhbCttMzF0emdJaXFzaXd6WUFEYTNFc244ZGhIdWprRC9MckMzWDBzSFhoSVlVQUlPZzNnRUhKc2ZVTUJKL1VOOENweVpIMUJHcFI2cmdNQ0xlQTVjQkRFRlhKb2ZjQVdVZEFvNXVMNHhQOEMrQlRJNVM5bDNjZURlZkw5U0Q0L2VIZVErK1g5bHp4TDlTcjI4Rm1zWFlmbE5wdC96L3ZINTlmMGo4UHlKaUlpSWlJaUlpSWlJL29kZlRMa2I4NERhVDNBQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TUREd3ZmSk1BQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXdnZUJLOEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMC85JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCSmxCTVZFVkVSSGM5UFdzMU5WdzBORnM3TzJoRVJIY3RMVThORFJZQUFBQUtDaEVuSjBWRFEzWkRRM1VaR1NzVkZTUkRRM1VmSHpZSEJ3d3NMRTA4UEdrK1Btd3ZMMUlMQ3hNNk9tVUJBUUVKQ1E4L1AyOUJRWElRRUJ3QkFRSTdPMmdoSVRrNU9XUUJBUUVpSWp3UkVSMUNRbk1NREJVTEN4UUhCdzBYRnlnVEV5RVBEeHM3TzJjME5GcytQbTBEQXdVMk5sOHZMMU1QRHhwQ1FuUkRRM1lXRmljek0xb1BEeG94TVZVK1Btd09EaGs5UFdvS0NoRUlDQTRaR1NzL1AyOGRIVE1EQXdVQkFRSVlHQ29iR3k5Q1FuUTFOVjB2TDFNek0xay9QMjRWRlNSQ1FuTU1EQlVKQ1JCQlFYRTZPbVVhR2k0MU5Wd21Ka0loSVRvd01GUUZCUWtLQ2hJOVBXb1RFeUk5UFdzeE1WVUFBQUFHQmdzbUprSkFRSEFjSERFOFBHa2xKVUFwS1VlQVFMV0hBQUFBQVdKTFIwUUlodDZWZWdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUUzU1VSQlZIamE3ZGJuVXNKUUZBVGdZOEdzZ29KS0pJakVqcjFnVkxCaXc5NEZDL2IzZndsdlRCemZJR2QwOXZ1MS8zWko1dDRnUWtSRVJFUkVSRVJFUkVSRVJFUkVSSDlCVTNOTGEweXRQZFptd1dqdmlPdjBKem9SNmtxcURFZ0IzVDI5YWJzUFNHbjBaeHhrKy8yUUcwRGVWUmd3Q05oQkdockdpTUtBVVRoallSeUhwVENnZ0ltZk9JbDhJdm9CVTcrdDA4Qk05QVBNSVpnTjB0dzhzQkQ5Z0VXZ3VPUUhiOWxjQlN2UkQ0aXZBbGFwWEM2dFFXZUFyRytFRitIbWxzb3JFTm11N0pqNjNiMzBQcERSR0NCeVVEMDhPaFk1Z1hPcU15QjBobk9GMWd2WERXL0NTK0JLWWNBMWNCT2tXK0JPWVlCWFF6M25oL3NhQ3A3Q0FQOXorUEJvbm9RNWpVOGEvWklzQW8zc3N6bUpMeXI5SXE5dkRmOGVxdXY4L20vdjlzZG5WZTlmTVJFUkVSRVJFUkVSRWRGLzl3V1g4UnFpcXVVc293QUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU9EbzFOeXN3TXpvd01QQzk4a3dBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRENCNEVyd0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMC8xMCcsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQk1sQk1WRVZFUkhkRFEzVkJRWEUvUDI4MU5Wd3hNVlU1T1dORFEzWWdJRGdBQUFBb0tFWTdPMmdXRmlZQkFRSUhCdzBvS0VaRFEzWUlDQTQyTmw4RUJBY1pHU3NpSWp0QlFYSWhJVGs4UEdreU1sY0xDeFFuSjBWRVJIYytQbXd3TUZRVkZTUWtKRDgvUDI0R0Jnc0ZCUWhCUVhFSUNBNEtDaElGQlFnbEpVRXRMVTRFQkFjNU9XUVlHQ282T21VWEZ5aERRM1V6TTFrc0xFMEtDaEVLQ2hJME5Gc2hJVGsyTmw4VUZDTUJBUUZDUW5RYkd5ODlQV3NYRnlsQVFIQWVIalE2T21ZVkZTVTNOMkVhR2kxQlFYSWVIalVnSURnYUdpMDhQR2tuSjBRM04yRXRMVTR3TUZRT0RoZzNOMkEvUDI0QUFBQVVGQ01wS1VjZkh6WVFFQndEQXdVK1BtMCtQbXdEQXdZSEJ3eENRbk1kSFRNdkwxSVBEeHNURXlFR0Jnb1FFQnd4TVZZYkd6QXlNbGduSjBVa0pEOHJLMHl5blFuWUFBQUFBV0pMUjBRSjhkbWw3QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRlVTVVJCVkhqYTdkWFhVc0pnRkVYaGlIVlp3WTRWc2ZmZXU5Z2I5dDdMKzcrQ3dTU0ExODRjUm1kL044QytJR3N5bVQrT0l5SWlJaUlpSWlJaUlpSWlJaUlpSW45RFhpZ3Y4eU8vb0xDbzJEaWdoTkxnYTFsNUJWQlpaWm9RanFRRHFtdncxSVlOQStvSUF1b2owTkFZaWpaQnM5SEZXMXJiMmtrSHhDQ1crdXlJMDlsbEU5RHQzWEV2b0tXSFh1OXg3SU4rbTRDQjdJQkJHUExtWVJpeENSaDFqUVVCNHpEdTd4Tk0yZ1NrVEFVQjB6RGpiN1BNemRzSExFQ1p2OVhDb24zQUVpejcyd3FzMmdlc1FYQUN1bWZEdW4zQUJpVDhiUk9LN0FPMm9OSGZ0bUhIUG1BWDl2ek5QUjVEOWdIN2NPQnZoMFRNcnA4Sk9JSVZienBPY3BLRGdPSTRFOTdrbm9tbk9RaHd6aUQ2WFhMT3hXVXVBcTZ1dVhFZnc5czcyTEs3ZmxhQWN3L0poOGNuZUxaN0Uvd0ljRjRpcWJmejNHdmlOMy80SytHMzk0OVB1L2VRaUlpSWlJaUlpSWlJeUwvM0JiYTRJSGx3ZStaUEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8xMScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQU5sQk1WRVZFUkhkRFEzVkJRWEVnSURnQUFBQW9LRVpEUTNZSUNBNGlJanRFUkhjK1Btd3dNRlFWRlNRSUNBNEVCQWREUTNVek0xazBORnRSWDNvUEFBQUFBV0pMUjBRRWoyalpVUUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBQnlTVVJCVkhqYTdjNUxEb0pBRkVSUmtFWitpckwveldKTVNMcERHUG9NNFp4WmplcFdGUUFBQUFBQUFBQndEdld0UGhoQm10UWVqQmozTHZzc1JwQStaWi9GQ0RDTTB5TnRuOFVJOGt4ZjdYNEVtZlBQK1E4QnI0LzM5bG1NUUV2K3VRZ1FJRUNBQUFGWERBQUFBQUFBNElkVzF5c0ZrUXVFMXZFQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TUREd3ZmSk1BQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXdnZUJLOEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMC8xMicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkFsQk1WRVZFUkhkRFEzVkJRWEVnSURnQUFBQW9LRVkvUDI4bEpVQVFFQndHQmdzQ0FnTUtDaEVVRkNNbEpVRkFRSEJEUTNZSUNBNHlNbGNHQmdvMk5sNGlJanMzTjJFREF3VVJFUjBvS0VZdUxsQWpJejRNREJVRkJRZzdPMmRFUkhjK1Btd3dNRlFWRlNRVkZTUWRIVElJQ0E0OFBHa0FBQUFTRWg4QkFRRStQbTBFQkFjcUtra3lNbGhEUTNVek0xa29LRVkwTkZzbkowUXhNVll4TVZVWkdTczhQR2s1T1dNQkFRSU9EaGc0T0dJSEJ3MHhNVlpCUVhJaUlqd21Ka01xS2tvSEJ3d0RBd1k2T21VUER4c1dGaVk4UEdrbEpVRUNBZ01TRWg4Mk5sNHZMMUlwS1VkQVFIQkNRblFORFJjckswc3lNbGNZR0NvYkd5ODlQV29PRGhrRkJRbEFCaW91QUFBQUFXSkxSMFFFajJqWlVRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFFcVNVUkJWSGphN2RYWFVzSmdGRVZoQTF0UkxDQ0tEWWtnS25aUjdBM3NGYnZ2L3lwR0lSRGsycE54Wm4wM3lmdzNlMDBtbVhSMUFRQUFBQUFBQUFBQUFBQ0EvOEdKT09FR1JOWHQzL2JFZXZ2aS9RT0RRNWI3aVdRellEaWx1dVNJWWNDby9JRDBtRFErTVRtVmthYXpOdVB1VEM2dlpzQ3NGSE85cTFPUThqWUJjL1VuWGcrWVgxRFIvYmx6TWxwY01nbFlEZ2JrcEpYR2VWUmFOUWxZODZ6N0FSdFNxWEcrS1cyWkJId3IrUUhaY2puU09OdVdkdXdEV25iM3RPK0dHSEJ3S0IyWjdYY0VISi9FcFZPNy9WOEJpVXBWT3FzWTdyY0huRjk0WCtYbGxlVitNTUM5dnBGdTcwem4yd0s4MzBMMTN1NzE3d2g0a0lxUDF2T0JnRnBLVHpYNy9WYkFzL1FTd240cjRGVjZLelM5MndkOEtDaHRIL0FaVWdBQUFBQUFBQUFBNEE5OUFaOGhGOVpFMHpKRUFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8xMycsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkxGQk1WRVZFUkhkRFEzVkJRWEZCUVhJM04yQTFOVjAvUDI4Z0lEZ0FBQUFvS0VaQ1FuTWpJejBJQ0E0R0Jnb2tKRDlDUW5ORFEzWUlDQTRQRHhvSkNRODhQR2tpSWpzY0hERU5EUmN2TDFNeU1sZ1BEeHNRRUJ4RVJIYytQbXd3TUZRVkZTUS9QMjRDQWdNTkRSY05EUlk1T1dNSUNBNHlNbGd0TFU0ckswd3NMRTBFQkFjbkowVTdPMmMyTmw0aElUcERRM1V6TTFrdUxsQWJHekF0TFU0bkowUTBORnNZR0NvNU9XUkJRWEkrUG0weU1sY1lHQ29kSFRJcUtrb0RBd1lrSkQ5RFEzWUNBZ1FjSERFOVBXcytQbXduSjBVUkVSNDdPMmdtSmtNWEZ5Z0JBUUZDUW5RNU9XTWJHeTg3TzJjRUJBY1NFaDhiR3k4T0Roa0ZCUWdPRGhrakl6MGxKVUV2TDFJVUZDTTlQV3NFQkFjQUFBQXVMbEFIQncwb0tFWTFOVnd6TTFrNU9XUWxKVUE5UFdvVjhIQjlBQUFBQVdKTFIwUUlodDZWZWdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUZVU1VSQlZIamE3ZGJYVXNKUUZJWGhRQlNYZ0wxclJBRUxpbGhRRktNQ2RzU3VXTEg3L3U4ZzhYQUMrZ0E3NDdpK3E3QnY5ajlNeWpFTUlpSWlJaUlpSWlJaUlpSWlJaUlpK2h0OGZsLzloOW5VSEpBT2FFRnI3U29ZQ3FPcXJiMURjbjlubHc0d3UxSFQweXNZMEFjZDBBOE1EQVlDUThQQWlDV3ozQnFOakVFSGpFY1JDem9Ydmpnd0lSTXdxZjV4RlRBRlRLdHhBcGlSQ1podERFZ0NjMnFjQXVabEFoYXFGblhBVWpwdHF2RXlzQ0lUNE1pNE42RnJGVmp6S3NES3J0c2J3S2JjL2w4Qlc4NDlrY3NYdkEzWTN0bjFMR0F2RTlrL0FNS0hYZ1Y4S3dKSG5nWlljWlNPeFFNS3RuMmlaNmZBbVhpQWRZNExQYnQwWDRxQ0FjWVZydlhKcEl5bzNKSEFEYmdCYnRYb0RyZ1gyMThQZUhoRU5PUTNqR3d4aDByS2d3RGpxVlI5Q1QwN24raktpOXoreHNmd05hWSt6K1Uzd2YwL3ZTYytrdmFuMEhtTWlJaUlpSWlJaUlpSTZCLzRBb0pOSUpPbGhYN0dBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvMTQnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFvbEJNVkVWRVJIZERRM1ZCUVhGQ1FuUkNRblFnSURnQUFBQW9LRVpCUVhFS0NoRWxKVUZEUTNZSUNBNFpHU3dpSWpzc0xFMUVSSGMrUG13d01GUVZGU1E3TzJjREF3WUlDQTRPRGhrRUJBY2ZIemNGQlFnd01GUkRRM1V6TTFreU1sY3VMbEUzTjJFME5GcytQbTBHQmdzYkd6QkRRM1lURXlJTEN4TkJRWEltSmtJQ0FnTTNOMkUyTmw4QkFRSW5KMFFVRkNNYkd5OHRMVTRrSkQ4WUdDbzJObDQ1T1dRUVNLNmZBQUFBQVdKTFIwUUdZV2E0ZlFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUROU1VSQlZIamE3ZFRMVXNKQUVFYmhDWVpma1VRUm9pS0thQks1ZXdubys3K2EwWVdWMGJVOVJlVjh1K25ObkVWWE93Y0FBQUFBQUFBQUFBQUFBQTVEMUluOHdWRW5OZzNvNnRoN24vUjBhdmwvUC9rVmtNbzI0RXgrd0xrTUF3WVh3NUg4Z096U011QkszeG9COGJVU3c0RHhuNEFiVFc0TkErNXEwMmJBdlRSN01GN0N4MFpBWHFoMEFRT2U1bG9zUXdhc3RONjRnQUhiWjcyNGdBSDFDWDRkaEF4SVZlUXVZRUFtdlZWZmR0SytxdDdOQXo3a0tkc1g4Q1BrSlNTZ25RRUFBQUFBQUFBQWdILzBDV0NBRDJabmZUV0xBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvMTUnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJIVkJNVkVWRVJIZERRM1ZCUVhFZ0lEZ0FBQUFvS0VZUER4b3hNVlZEUTNZSUNBNEZCUWtpSWp0QVFIQVJFUjBkSFRJNU9XTkVSSGMrUG13d01GUVZGU1EyTmw4dkwxTUlDQTR0TFU0Nk9tVUVCQWNqSXowQkFRRkNRblJEUTNVek0xa1pHU3dLQ2hFME5Gc1BEeHNVRkNNMk5sOFhGeWdLQ2hJQ0FnTUdCZ29URXlFcUtrb01EQlU3TzJoQVFIQURBd1llSGpVckswd3BLVWNjSERFRkJRZ0pDUkEvUDI4M04yQUpDUTg1T1dNOVBXc1FFQndlSGpRL1AyOC9QMjQ4UEdrQ0FnUURBd1ZDUW5RYUdpMDBORnNtSmtJc0xFMHJLMHd2TDFJeU1sZ3pNMW9TRWlBQ0FnUkNRbk11TGxBYUdpMEhCdzBkSFRNL1AyNEJBUUlFQkFjSEJ3MERBd1k3TzJjV0ZpWUJBUUVURXlJNU9XUStQbTB0TFU0a0pEODhQR2xGcmE4d0FBQUFBV0pMUjBRRWoyalpVUUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRTFTVVJCVkhqYTdkWFhVc0pBR0liaGdKOGRGQlZGVWJFcmRpellCVlJVN0wyWCs3OE1BNFFncHpxek96cnZjN1N6Qi9uZkpKT040d0FBQUFBQUFBQUFBQUFBZ0w4aEVBellEYWhUdmJkcWtLL1IzUHltWmorZ3hVcEFxeW9CSVNuYzVtazNNenpTMGRrbFB5QXFkWnU3OFpLZTh2UDJBbUpTcitHQXZwcUF1UG9IREFjTXVoSit3SkNHRGM4dkdmRURSalUyUGpFNWxaeWVNWG93VkFPUzhsNkpadWRzQk15N2t4Y1dVMHZMSzlKcTJrTEFtclMrVVZ4c2JrbmJGZ0oyRW9uZDhsWW1xOXllK1lCdjlxVURxd0Y1NmRCcXdKRVVNeDl3SEN0VTl0d2YxSW41Z0ZPZGhjcGJrYkN5NStZRDh2N0hkeUZkR3B0ZkRRaGVTZGMzanBPTzMrb3VZeUhBaVJaUDRuczNRdytGMzEzemh3SE80OU56NlZmdzhtcHdmcTIzOS94SDZ0UGFlQUFBQUFBQUFBRDRkNzRBaC8wWmxjRVArVHNBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRER3dmZKTUFBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBd2dlQks4QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycwLzE2JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCUGxCTVZFVkVSSGREUTNWQlFYRkVSSGM3TzJjeU1sZzJObDVCUVhFZ0lEZ0FBQUFvS0VZcEtVZ0xDeE1URXlFNk9tVkRRM1lJQ0E1Q1FuUVZGU1VDQWdNMU5Wd2lJanNhR2k0VEV5STFOVnhCUVhJN08yY2hJVGtCQVFFSUNBNC9QMjgrUG13d01GUVZGU1ExTlYwV0ZpZERRM1lsSlVBbkowVVZGU1VCQVFFOVBXdENRblFFQkFjVEV5RUVCQWNDQWdRNU9XTTFOVjAyTmw5RFEzVXpNMWt4TVZZckswczBORnNtSmtNNU9XUTlQV29kSFRJdExVNEpDUkFPRGhreU1sY1pHU3NlSGpVbUprTVdGaVlCQVFJaElUbzNOMkEzTjJFaElUb0JBUUk0T0dJME5Gc3ZMMUlQRHhzWEZ5a1NFaDhiR3k4dkwxTWpJejB2TDFJa0pEOHNMRTBySzBzd01GUXVMbEVrSkQ4d01GUUNBZ01iR3pBK1Btd1lHQ29TRWg4Nk9tWURBd1lySzB4Q1FuTW5KMFVKQ1E4SUNBNE1EQlV5TWxnakl6NHBLVWVhaTY4SUFBQUFBV0pMUjBRSjhkbWw3QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRmdTVVJCVkhqYTdkWFhVc0pRRklYaFFGUmNJRllVUVZCRTFOaXdVRlRzSW9pOUYreTl2UDhMR09BUTRRVjJSbWQ5VnlmN1p2K1RNQWROSXlJaUlpSWlJaUlpSWlJaUlpSWlvci9CNFhUOFB1Z05qVTB1NFlCbXVLMzFuaGFZdksyUys5dmFyWUNPVGxSMCtRUUR1bUVGOUFEKzNrQ3dMNFJ3djh4eWZTQXlDQ3NnQ2d6RlNvZGhZRVFtSUZ4NTR5cGdGTVpZK1RBK2dVbVpnS25hZ0VBY2ZqV2ZucG1WQ1pnekphb0JTU0FsczdaZXVob3dEL2cwZlNHWldMUXBJQU1FbDVaTG4yUmwxWmFBTldCZDNRUFlzQ05nMDF5YzNjcTU4dHNoRkhac0NEQnZCR08zZk5vRDltMElPQUF5YW5aby9oemtBNDZBWXpVN0FVN2xBODZBdkpxZEF4ZnlBWmZBbFpwZEEwWDVBT2NOYnRYTUM5ekpCMmozTUNwL0FVWGdRV3gvVGNCakZrL1BMMXJnTlk1UTFJNEFMV1ZlUllVM3c3d1BQSEw3YXdPMHlIdjVJdjc0Rk54Zkw1WjJmMzNuZE52MkV4RVJFUkVSRVJFUkVmMDNQM3B0STVUajR1L2xBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvMTcnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUF0MUJNVkVWRVJIZERRM1ZCUVhFZ0lEZ0FBQUFvS0VZWkdTd2JHekJEUTNZSUNBNGlJanNySzB3ZEhUSVZGU1FySzB0RVJIYytQbXd3TUZSRFEzWVNFaDhWRlNVSUNBNG9LRVlHQmdvK1BtMEVCQWM3TzJnREF3VXZMMUpEUTNVek0xa1JFUjRhR2kwME5Gc3BLVWNEQXdZK1BtMUJRWEVHQmdvaUlqdzlQV3NEQXdVbkowVWJHekFIQncxQ1FuUUNBZ01sSlVFS0NoRXpNMWtzTEUwYUdpMEJBUUVIQnd3T0RoazRPR0llSGpVbEpVRXZMMUlURXlFL1AyNVFWdjdVQUFBQUFXSkxSMFFFajJqWlVRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFEa1NVUkJWSGphN2RQWlRnSlJFRVhSQm84Q2pkZ0lUdURNSklnem8rRC9mNWRJSjBMZjhHcFZUUFo2dVk5bnA1SWJSUUFBQUFBQUFBQUFBQUFBNEgvSTVYTytBWHZhLzNrT3RLMWd0MThzT1FmRVNnUEtoNzhxMHBITmVGSTlYbzJsQVJ1MXVrNFNtNERUOU41QndKbk9MMnoybzhhdWdPYWxyb3oybyt1Vm15Q2dkcXM3cS8yMSt5Q2dwWGJITTZEYjA0UHBmaGdRcTVmM0RPZ1A5R2k3SHdRTTlmVHNHZEI1VVd5OG53MTRsWnFlQWNtYjZ0YjdtWUIzNmNNMVlLU3g4Ui9NQmlRVFRjMzN0d05tMHR3MTRGTmF1QVlzcFMvN0FBQUFBQUFBQUFEQUgvb0d1bHNNY01TV0hRb0FBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qZzZOVGNyTURNNk1ERHd2ZkpNQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakk0T2pVM0t6QXpPakF3Z2VCSzhBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzAvMTgnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJSRkJNVkVWRVJIZERRM1ZCUVhGQ1FuTTNOMkV5TWxnOVBXcEVSSGNnSURnQUFBQW9LRVkxTlYwUER4c0FBQUFFQkFjaElUbERRM1lJQ0E0a0pEOEhCdzA4UEdraUlqc3pNMWtGQlFrcEtVYzdPMmhBUUhBVkZTVVFFQnhEUTNVK1Btd3dNRlFWRlNRUkVSMEJBUUkyTmw4eU1sY0lDQTREQXdZU0VoOHpNMW9FQkFjOVBXb2FHaTRiR3k5Q1FuTUJBUUVQRHhveE1WWWlJancwTkZzV0ZpY3VMbEZDUW5RT0RoZ0JBUUk3TzJjK1Btd0tDaEViR3pBek0xa29LRVlLQ2hFdExVNC9QMjhURXlJREF3VTJObDRwS1VnRkJRZ01EQlUzTjJBTEN4TXRMVThkSFRNQkFRRTRPR0kxTlZ3UUVCd1hGeWs1T1dRV0ZpYzVPV01GQlFrbkowUXVMbEFLQ2hJSEJ3d3BLVWNURXlFOVBXczJObDlEUTNZSkNSQXFLa2tzTEUwNU9XUUdCZ3NKQ1E4Z0lEZ1pHU3N1TGxCQVFIQTFOVjBxS2trbEpVRXdNRlE3TzJmcXFLRDRBQUFBQVdKTFIwUUo4ZG1sN0FBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUZzU1VSQlZIamE3ZFpwV3dGeEZNWmhwS2FIbENTaTBLWVZMUlR0aTJoUmFkVys3L1g5M3pmTTB2UUZqcXV1NTM1am5EZm5kekgrdzJZaklpSWlJaUlpSWlJaUlpSWlJaUtpdjhIdXNQKzhhWEEyTmluQ0FjMXdHWmZ1RmcrQTFqYUg1SDV2dXhuZ2c2N0RMeGpRQ1NNZzRFR3dLeFIyZHdNOUVabmxTalRXQ3pPZ0QvMER0YWxhTUNnVEVOYytjUzNBTzRSaGJUd0MrR1FDUnEwQlk4QzROdllEQ1ptQWlDcGdCQ1JUbU5ER2s4Q1VURURWdEhrUHBJRk05WFZtRnRsY1BRTG01cEZheUN3dUxTTzdJcmZmRW1CYlhkUHVpZlc4NEg1TGdMSlIwQStpNG1aZEF0UWphV3M3Rk03dmxGRFlyVVBBSHJDdlBaWmk2bFVkQXNyQWdUNDdCSTdrQTRvNE5oN0VKOENwZkVBRlo4YnNISkQ3SVpvQkY4Q2xQa3NBVi9JQkxxQ3NqWnhaeEsvbEE1STNRRHFuMkpLM1FlQk9iTC9sSExoL1VNK2d3bVAxWDltVDNIN3JVUng5THRVT3dzcUw0UDdmWHQvZVB6Ni81TDUvSWlJaUlpSWlJaUlpb3YvdUcrODlKU3pwZTJTd0FBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8xOScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQlBsQk1WRVZFUkhkRFEzVkJRWEU5UFdzMU5WdzBORnM3TzJoRVJIY2dJRGdBQUFBb0tFWXRMVThORFJZS0NoRW5KMFZEUTNaRFEzWUlDQTVEUTNVWkdTc1ZGU1FpSWpzZkh6WUhCd3dzTEUwOFBHaytQbXd2TDFJTEN4TXdNRlE2T21VQkFRRUpDUTgvUDI5QlFYSVFFQndCQVFJN08yZ0lDQTRoSVRrNU9XUUJBUUVpSWp3RUJBY1JFUjFDUW5NTURCVXpNMWtMQ3hRSEJ3MFhGeWcwTkZzVEV5RVBEeHM3TzJjME5GcytQbTBEQXdVMk5sOHZMMU1QRHhwQ1FuUVdGaWN6TTFvUER4b3hNVlUrUG13T0RoazlQV29LQ2hFWkdTcy9QMjhkSFRNREF3VUJBUUlZR0NvYkd5OUNRblExTlYwdkwxTXpNMWsvUDI0VkZTUkNRbk1NREJVSkNSQkJRWEU2T21VYUdpNDFOVndtSmtJaElUb0ZCUWtLQ2hJOVBXb1RFeUk5UFdzeE1WVUFBQUFHQmdzbUprSkFRSEFjSERFOFBHa2xKVUFwS1VlTEU2Y05BQUFBQVdKTFIwUUo4ZG1sN0FBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUZ0U1VSQlZIamE3ZFpYVThKQUdJWGhqUTJQb2dSRVZKQWlncjFnYjFqQTNyQjNzR0QvLzMvQXpTUVpHTzhjWjNaSDV6eFh5MTd3dlFsc1FBZ2lJaUlpSWlJaUlpSWlJaUlpSWlMNkc0d2FvL0tpdHE2K3dhTTRvQkZOenNyVDdJWFUwdXBUT2QvMHV3R0JOamlDeHUvZTgwZmE0UWFFZ0k3T3JuQ2tHd2dwR3U0SlI0TndBMkp4Skhxc1JiSVhxYlNhZ0Q3N2p0c0IvVURFM2g0WXhKQ2FnT0hxZ0JIRVI1MzlNWGpWQkFTa2NUY2dnd2wzZnhLcGdKb0NhY29ObUs1TW5RRm0xUWZJUXpCbmI4MHZBSXZxQTVhQTdMSzFNRmZrOTJKVmZZQnZEZkRtOHZuY092UUVpSTFONTBIbzM5THlFUWl4dmJNcngrL3RodytBbUk0QUlRNExSOGNuUXB3aWZxWW53SEdPQzJYekt3R1g2YlR6Skx3Q3JqVUUzQUMzOXRZZEVOVVFZQlpSU2xxTCt5SXlwb1lBNitmdzRWSGVDWGthbjlUTnJ3b3dza0E1OFN4UDRvdkMrZFduNFBXdGJEMkhTaXF2LzV2M3lNZG5RZlcvWWlJaUlpSWlJaUlpSXFKLzdBdlF5eVNrUmdHUUdnQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU9EbzFOeXN3TXpvd01QQzk4a3dBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRENCNEVyd0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMC8yMCcsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQnJWQk1WRVZFUkhjL1AyODFOVnd4TVZVNU9XTkRRM1kvUDI4bEpVQVFFQndHQmdzQ0FnTUtDaEVVRkNNbEpVRkFRSEE3TzJnV0ZpWUJBUUlBQUFBSEJ3MG9LRVl5TWxjR0Jnb0lDQTQyTmw0Mk5sOEVCQWNaR1N0RFEzWTNOMkVEQXdVUkVSMHVMbEFqSXo0TURCVUZCUWc3TzJkQlFYSWhJVGs4UEdsQlFYRXlNbGNMQ3hRbkowVVZGU1JFUkhkRFEzVWRIVElWRlNRa0pEOC9QMjRHQmdzRkJRaEJRWEU4UEdrQUFBQVNFaDhCQVFFK1BtMEtDaEl0TFU0d01GUXFLa2tnSURneU1sZzVPV1FZR0NvNk9tVVhGeWdvS0VZME5Gc25KMFF4TVZZc0xFMEtDaEVLQ2hJOFBHa2hJVGsyTmw4VUZDTUJBUUZDUW5RT0RoZ2JHeTg5UFdzNE9HSXhNVllYRnlsQVFIQWVIalE2T21aQlFYSWlJandtSmtNVkZTVWlJanNxS2tvSEJ3d0RBd1lhR2kwZUhqVTZPbVVQRHhzZ0lEZ2FHaTBsSlVFQ0FnTVNFaDgyTmw0M04yRXZMMUl0TFU0d01GUU9EaGdwS1VkQVFIQTNOMkEvUDI1Q1FuUU5EUmNwS1Vjckswc2ZIellRRUJ3WUdDb2JHeTg5UFdvK1Btd0hCd3hDUW5NZEhUTU9EaGt2TDFJUER4c1RFeUVHQmdvUUVCd0ZCUWtiR3pBeU1sZ25KMFVrSkQ4ckswd2xWSW0yQUFBQUFXSkxSMFFTZTd4c0FBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFIZlNVUkJWSGphN2RYblV4TlJGTWJocTBsRUVRUitJRkVKS0VVSjZnWVFKWWhkUVFVYk5oUmpBU3pZdTloN0wvZzN1NXU5aVhIOEpNN2VHWjMzK1hMUGVUL3NPVFBaM0RWR1JFUkVSRVJFUkVSRVJFUkVSRVJFL2tsejVzYmlDV2ZUNXBYTlgxQytzS0p5VVNHb3FxNEJhdXNjcmJDNG5sQnlTUmdzWFdhRGhwU0wrWTFOc0x4dVJYTUx0TFlGd2Nva3JHcFBkNnlHTlM0V1dBdGxubjltT3FFckNMcWhPempYOWJCK1EvVHplN1AwZWZrcTA4TEdmbU84VGJSbThrRWxiSTUrZ1MydzFaYmJZTHN4TzJCbjJPK0NnZWdYR0lUZHR0d0RlNDBaZ2lFYkRMTXYrZ1hhWXJHMExSdGd2ekVINEtBTkRqRnlPUG9OaXVJMUhQSGZocU5ROVhPalkrN21INitGVWY4OEFTZHROQWFuWEkzUG5TNkhNMEYxRmdvMzREbG9kRE0rTlQ0QmsrUDUranprYkh3QjRrN21YN3prMzd2VjdXRXpCYll5bDZIWHdYanZ5bFc0ZHIzUStuL0dHN2JzZ3ZRc0gvb24vRjk2NHFaWGJHL0JiVnZlSWVsZy9sM291MWZTMzRleHNIcVFwU0w2K2RQMVBKd3VEUkk5REllVmZ5YytpbjZCeDlEeGEvTEVKb21uTlBWSHY4QXplTjVaOU1KUFhrN3l5bjhOWDcrQnFlam5tN2VVeXQ4Nzd5RDcvc05IK09UaVMvRDU5d1hNYURLb1I3N2svdkxaczVmNittM211OFB2a0lpSWlJaUlpSWlJaU1qLzdRZXZYa0IydHc1Y3pBQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU9EbzFOeXN3TXpvd01QQzk4a3dBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRENCNEVyd0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMC8yMScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkFsQk1WRVZFUkhkRFEzVkJRWEUvUDI4bEpVQVFFQndHQmdzQ0FnTUtDaEVVRkNNbEpVRkFRSEFnSURnQUFBQW9LRVl5TWxjR0Jnb0lDQTQyTmw1RFEzWTNOMkVEQXdVUkVSMG9LRVl1TGxBakl6NE1EQlVGQlFnN08yY2lJanNWRlNSRVJIY2RIVElWRlNRK1Btd3dNRlE4UEdrQUFBQVNFaDhCQVFFK1BtMElDQTRxS2treU1sZ0VCQWNvS0VZME5Gc25KMFF4TVZaRFEzVXpNMWt4TVZVWkdTczhQR2s1T1dNQkFRSU9EaGc0T0dJSEJ3MHhNVlpCUVhJaUlqd21Ka01xS2tvSEJ3d0RBd1k2T21VUER4c1dGaVk4UEdrbEpVRUNBZ01TRWg4Mk5sNHZMMUlwS1VkQVFIQkNRblFORFJjckswc3lNbGNZR0NvYkd5ODlQV29PRGhrRkJRa21KbU9aQUFBQUFXSkxSMFFOOXJSaDlRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFFa1NVUkJWSGphN2RUWFVzSlFHRVZoZ2lnV3RvSmdRelFnaWgwTDlnYjJpdDMzZnhXamhCamsycDl4Wm4wMzUyVGZaTTFRSWhFQUFBQUFBQUFBQUFBQUFQQS9PVkhIN21WZHNlNmVlRzlmLzBCb1MyalE3UDFEU1RXa2hvTXRuYklMeUl4SW8yUGpFMWxwTXRjY3AyUVhNQzNGWE85MDhsTGhhM0JuaWdYWkJjek9xZVIrMzV5czVoZThjN0h4Z1ZnRkZLVWwvNXFRbHIxanhUWmdWU3I3MXpWcDNUczJQSnQyQWJsS0plcGZ0NlJ0LzFvMi9CSUdkbmExNTNZd1lQOUFPbXcrMkFjY0hjZWxrK0RST2lCZHJVbW4xWi9CT09EczNQdlpYVnlHRnRNQTkrcGF1cmx0MlV3RHZQLzkycDNidWxrRzNFdWxoOStqWVVBOXFjZDYyMm9ZOENROXQ2K0dBUy9TYXo3d1poL3dyckNNZmNCSHB3TUFBQUFBQUFBQUFIL3VFLy9RSExnTUd6aTBBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvMjInLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUE4RkJNVkVWRVJIYy9QMjhsSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQXlNbGNHQmdvQUFBQUlDQTQyTmw0M04yRURBd1VSRVIwb0tFWXVMbEFqSXo0TURCVUZCUWc3TzJjVkZTUkVSSGREUTNVZEhUSVZGU1E4UEdrQUFBQVNFaDhCQVFFK1BtMHdNRlFxS2trZ0lEZ3lNbGdvS0VZME5Gc25KMFF4TVZZeE1WVkJRWEVaR1NzOFBHazVPV01CQVFJT0RoZzRPR0lIQncweE1WWkJRWElpSWp3bUprTkRRM1lxS2tvSEJ3d0RBd1k2T21VUER4c1dGaVk4UEdrbEpVRUNBZ01TRWg4Mk5sNGlJanN2TDFJcEtVZEFRSEJDUW5RTkRSY3JLMHN5TWxjWUdDb2JHeTg5UFdvT0Roa0ZCUWswVy9vVEFBQUFBV0pMUjBRTWdiTlJZd0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRDhTVVJCVkhqYTdkVEhVa0pCRkVWUlJCR1ZvNWdRRzFUTUFYTUdFMmJNL1AvZlNPa3J5N0thNitneTJtdlNwL2FrZTlTcEZBQUFBQUFBQUFBQUFBQUF3TDk2MHIxOW1mN3N3R0RINEdzb3AyL0RJeDJDci95b05EWStNVm1RcG9yUjRHeGFTb2YyV1NwTE05SGdhM1pPbGZDMVNnWE5MMFNDczBWcEtabkwwa29rT0Z1VjFwSzVMbTFFZ3JOaXRicVp6QzFwT3hLNlptZFhlOEVNdnZZUHBFTXp1RG82emtnblZuQjFXcXRMWnpVaitEcS9hUCs3bDFkR2NCVWExOUxOclJHYzNVbjErMkFGWHc5UzVkRU12cG81UFRYTjRPeFplckdEczFmcHJmempQUktjZmVpM2ZDUTRhLzI5cjlYbEJ3QUFBQUFBQUFBQTNIMENXNjBsV3kwaWFuQUFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qZzZOVGNyTURNNk1ERHd2ZkpNQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakk0T2pVM0t6QXpPakF3Z2VCSzhBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzAvMjMnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJtRkJNVkVWRVJIZEJRWEkzTjJBMU5WMC9QMjhsSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQkNRbk1qSXowSUNBNEFBQUFHQmdva0pEOUNRbk15TWxjSUNBNDJObDRQRHhvSkNRODhQR2szTjJFREF3VVJFUjBvS0VZdUxsQWpJejRNREJVRkJRZzdPMmNjSERFTkRSY3ZMMU15TWxnUER4dEVSSGNWRlNSRFEzVWRIVElWRlNRL1AyNE5EUmNORFJZNU9XTUFBQUFTRWg4QkFRRStQbTB5TWxndExVNHJLMHdzTEUwd01GUXFLa2tnSURnbkowVTJObDRoSVRvb0tFWTBORnNuSjBReE1WWXVMbEFiR3pBdExVNHhNVlZCUVhFWkdTczhQR2tZR0NvNU9XUUJBUUlPRGhoQlFYSStQbTB5TWxjWUdDb2RIVEk0T0dJSEJ3MHhNVllxS2tvREF3WWtKRDlEUTNZaUlqd21Ka01DQWdRY0hERTlQV3REUTNZcUtrb0hCd3crUG13bkowVVJFUjQ3TzJnNk9tVVdGaVk4UEdrWEZ5Z2xKVUVDQWdNU0VoOUNRblFpSWpzdkwxSTVPV01iR3k4N08yY3BLVWRBUUhBRUJBY2JHeThPRGhrRkJRZ09EaGtySzBzakl6MFVGQ01ZR0NvOVBXbzlQV3NFQkFjSEJ3MElDQTRGQlFrMU5Wd3pNMWs1T1dRbEpVQ2xid3A0QUFBQUFXSkxSMFFRbGJJTkxBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFIWVNVUkJWSGphN2RaWlV4TkJGSWJoamdZY1JlQ05PNmlJRVRFR0JaS29pQkpaeFIzSEZURXU0TDRocmlBdXVPdmZkdUpNUWxDcXZMQzZxeXkvNXlKelR2ZkZkem8xMVRYR2lJaUlpSWlJaUlpSWlJaUlpSWlJeUQ4cHRtUnAzRjFhdktwNm1iZDhSYzNLcUsrdHF5ZVFXTFhhVGY2YUJLRzE2OExUcjQ5Nk5qUzR5Ry9jQ0pzMk4yMXBocTNKNHNJMmFOa2VqN2Z1Z09xVWd3RjJRbFV4SjkwR3U0TG5iby8yMnVKR3VnTTY3ZWMzWk1pRzUwdzNrOXRqekY3WUYyNTF3WDc3QTNURGdhZzhDSzNHOUVBeTdQTnd5UDRBdmRBWGxmMHdZTXpnMEZBczdBOUR2LzBCa3NQRFI2THlLQnlyM0RvT0ord1BNSy96SktkS2IzMXE1TFIvQnM2NnpEOTNIaTZVbW92RmEyRDAwcGk3K05obER3cmw5dWNBVjY1ZWN4Vi9mWHdpT1BENC9NS052dTZidDZEK3RwdjhPOEdseDkxN3Z5NFg0TDZMK05TRGgvQW92OGhHQjdsSkJ3TThob21wOHFVLzV2dFBTdlZUZUdZLy96bGtYMVFjK3lYWlVqMWR2aFF0bWt6UXN1Qi9udUZWT2lwbjhleC9FcndHZjhIQ0c2Z0pxeWw0YXozZnZJUHB0ckk1WTk1L3dLc0xidWVSd2lpWi9OOEgvTWtNbFJxRGxhWmNVSHo4RlB4a2V1M25tOCsvRFdDK3RJZk43RmNIK1l2NzF2Vzl4NTl6OFQwbUlpSWlJaUlpSWlJaThqLzRBYW1rUG5ZTlkzdDZBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvMjQnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJPMUJNVkVWRVJIZENRblJCUVhGQ1FuUS9QMjhsSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQkJRWEVBQUFBbEpVRXlNbGNHQmdvSUNBNDJObDRaR1N3M04yRURBd1VSRVIwb0tFWXVMbEFqSXo0TURCVUZCUWc3TzJjc0xFMFZGU1JFUkhkRFEzVWRIVElWRlNRREF3WThQR2tBQUFBU0VoOEJBUUUrUG0wT0Roa3dNRlFxS2trZ0lEZ3lNbGdmSHpjRkJRZ3dNRlFvS0VZME5Gc25KMFF4TVZZdUxsRXhNVlVaR1NzOFBHaytQbTBHQmdzYkd6QTVPV01CQVFJT0RoaERRM1lURXlJTEN4TkJRWEk0T0dJSEJ3MHhNVlltSmtJM04yRkJRWElpSWp3bUprTTJObDhCQVFKRFEzWXFLa29IQnd3VUZDTTZPbVVQRHhzV0ZpWThQR2tDQWdNU0VoODJObDRiR3k4dExVNGtKRDhZR0NvaUlqc3ZMMUk1T1dRcEtVZEFRSEFORFJjckswc3lNbGNZR0NvOVBXb09EaGtGQlFuRk5kazRBQUFBQVdKTFIwUU9iNzB3VHdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUZhU1VSQlZIamE3ZFJYVHdKQkZBWGdCVVRCY3VnMlhGMFF4VjVSRkxEM0NuWmRlL2YvL3dKMzJSVWg0Y0hFZUluSitWN216SDNZT2NsT1JsR0lpSWlJaUlpSWlJaUlpSWlJaUlqb3YzSTRYVkpIMWJuckd6emV4cWJtOG1HTEZ6Nmg4LzBCV0lLaHNta1lVZ1VpclVCYmUwZG5GT2hTUzlOdWlCWG9BZHlhc2NiaVFPL1hVRTJJRmVqclIxSXJwbGdVQTRQVzBEV0VvRlNCWVdERWpxUEFtSlhHTVRFcFZXQUttTFpqQ3BncEJqOHdHNUVxb0tiVFRqdk9BZlBtbXNraXA0Z1YrTGF3aUNYTldKZFhzTHBXZ3dMckc4Q21HYmJnMlZiRUMrenNlb0E5TSswZklLVklGempNRjRCRTNvekdFM3lrU1JjNFBqR2VuZE96WWc0am0xRmtDMmkrYytEaTB0cW93SlZ1dWdadWREMzB1MC8vekMxUXVOUHN6VDBxNUFUT2Z3Q1NqNldkZkFGSEFFK09Lbk94Ty9BTXZGU2JpeFY0Tlc1ZHZPUk52c0I3eFQrUHlCZjRxSFVCSWlJaUlpSWlJaUlpSXZwem4rUFNLQXZRODBXeEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8yNScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQmtsQk1WRVZFUkhjL1AyOGxKVUFRRUJ3R0Jnc0NBZ01LQ2hFVUZDTWxKVUZBUUhBUER4b0FBQUF4TVZVeU1sY0dCZ29JQ0E0Mk5sNEZCUWszTjJFREF3VVJFUjBvS0VZdUxsQWpJejRNREJVRkJRZzdPMmRBUUhBZEhUSTVPV01WRlNSRVJIZERRM1VWRlNRMk5sOHZMMU04UEdrQUFBQVNFaDhCQVFFK1BtMHRMVTQ2T21Vd01GUXFLa2tnSURneU1sZ2pJejBCQVFGQ1FuUW9LRVkwTkZzbkowUXhNVllaR1N3S0NoRkJRWEVaR1NzOFBHa1BEeHNVRkNNMk5sOFhGeWdLQ2hJQ0FnTVRFeUVxS2tvNU9XTUJBUUlPRGhnRUJBY01EQlU3TzJnNE9HSUhCdzB4TVZZREF3WWVIalVySzB3cEtVY2NIREVKQ1JBL1AyOUJRWElpSWp3bUprTTNOMkFKQ1E4OVBXc1FFQndlSGpSRFEzWUhCd3d6TTFrL1AyNENBZ1JDUW5RV0ZpWThQR2thR2kwME5Gc2xKVUVTRWg4Mk5sNG1Ka0lzTEUwaUlqc3ZMMUlySzB3dkwxSXlNbGd6TTFvTkRSY1NFaUFDQWdSQ1FuTXJLMHN5TWxjYUdpMFlHQ29iR3k4OVBXb0hCdzBkSFRNL1AyNEJBUUlFQkFjT0Roa0RBd1k3TzJjVEV5STVPV1F0TFU0a0pEOUR5ZTYrQUFBQUFXSkxSMFFMSDlmRXdBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZksveGNoNmdBQUFHL1NVUkJWSGphN2RUcFQxTkJHTVhoQVFHRlg2MnlpQ3lWVzdFQ1JSWnhSVkRCNGdZcUtDNGdzaFFWclJ2dUNtNm80UC90M0hKdGFtakNCM09IeEp6bnk3enozcVRudEdscmpJaUlpSWlJaUlpSWlJaUlpSWlJaU1pbWlvcTNsWlNXYmQ5Ukh0d3J5SW00eU44WkRkSjI3VjVmVkxvdFVGVU5OWHRxOTlaQmZZTy9hTFQzV0dDZmd3Sk5VT3paTXg2RC9mNmlHUTQ0eVAwamNaQVdMenZGNjJodHMyY1MyaDBXT0FRZHdkZ0pYZmJvNW5DUHd3Skg0R2d3SG9QajlqakJTWWY1cGlFUzZRM0dVOUJuajM1T256azdNQmc5bDRxN0xHTE0wSGt1K04rR0tCZURIK0dseXk3emgwZmdpajNMYmZMVmE2TmoxK3ZoeHJpeitKdTNTdUcyUDkyQmlTRi9tTHdMVTQ3aTc2V203ZHRPWmVlaW1ablo5VzFpanVxMGsvejJmdnV4ejkvZnNIOEFEeDNFZXd1RDhPaHhnU2NaZU9LZ3dGT1lmdVlWZXZJY2t1SG5qMEZMWTk3OVJYSXhyOXJMMFBQVFVWNmw4eGV2ZVJQMDhXcVlleHQ2Z1hmdy9xOUZKdmZqcTRVUG9lZWJqN0FVeTFrMnB2Y1RmUDVpekhqM1Y3NGx3aSt3UXI0cXUybjIvNGxIYkEyK0wvN3p5Mit1Y2tNQjgyTytOWHY1dWVvZ3Y3QzJ0Y3l2MGI0dGl4Y1JFUkVSRVJFUkVSSDV6L3dHU1FNM0k5dFRRT2tBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRER3dmZKTUFBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBd2dlQks4QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycwLzI2JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCdkZCTVZFVkVSSGRFUkhjN08yY3lNbGcyTmw1QlFYRS9QMjhsSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQXBLVWdMQ3hNQUFBQVRFeUU2T21VeU1sY0dCZ29JQ0E0Mk5sNUNRblFWRlNVMU5WdzNOMkVEQXdVUkVSMG9LRVl1TGxBakl6NE1EQlVGQlFnYUdpNFRFeUkxTlZ4QlFYSTdPMmNoSVRrQkFRRUlDQTQvUDI4VkZTUkRRM1VkSFRJVkZTUTFOVjBXRmlkRFEzWWxKVUFuSjBVOFBHa0FBQUFTRWg4QkFRRStQbTBWRlNVOVBXdENRblFFQkFjVEV5RXdNRlFxS2trZ0lEZ3lNbGdDQWdRNU9XTTFOVjAyTmw4b0tFWTBORnNuSjBReE1WWXJLMHN4TVZWQlFYRVpHU3M4UEdrbUprTTVPV1F6TTFrOVBXbzVPV01CQVFJT0RoZ3RMVTRKQ1JBT0RoazRPR0lIQncweE1WWWVIalVtSmtNaUlqd1dGaVlCQVFJaElUbzNOMkEzTjJFaElUcERRM1lxS2tvSEJ3d0RBd1kwTkZzdkwxSVBEeHM2T21VUER4c1dGaVk4UEdrWEZ5a2xKVUVDQWdNU0VoOGJHeTh2TDFNakl6MHZMMUlpSWpza0pEOHNMRTBySzBzcEtVZEFRSEF3TUZRdUxsRWtKRDh3TUZRTkRSY2JHekErUG13eU1sY1lHQ285UFdvNk9tWXJLMHhDUW5NbkowVUpDUThGQlFrSUNBNE1EQlVvS0VZakl6NHBLVWU5NXZtQ0FBQUFBV0pMUjBRUjRyVTl1Z0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBSG5TVVJCVkhqYTdkWFhVNU5CR01YaC9TS0l4b0kvQkF2WVVBeEdKU0NXUkkyaVlNRUE5cWhnUlZCQTdJZ1ZGYkgzOWcrN1NkWVlSKytjYjJlY09jL05kL2E5eUhtVDJTVEdpSWlJaUlpSWlJaUlpSWlJaUlpSXlIOHBpRXdySy9mV05yMWl4c3pvck5sejVoYnJLK2RoVmMzMzAxOWRROEdDaFlYQm9zVnVFSzMxMFYrM0JKWXVXNzZpSGxaRzhwTlYwTEE2MXJnbXp0cDFIaFpZRHhXQmZUWWxvRGszYUlFTnJibXdFVGFGMzc5NUM4a2duNXJxU1cyMXoyMmt0dWNINlIzc0RIK0JOdGpsNG01b055YldRWU1iN05tN0wvd0Y5a09uaXdjZ1kwd0d1c0t2L1NYUzNkM2o0a0U0Wk14aHFEWEJrY3pSWXo3WHlEbWU1WVM5RGZZdU5wNDhsZnNXOWxaNzdlODdEV2NLbjhOWjl6dkFPWC8xc2ZOUjEzZkJGdmRmSENnZnZCUW4yK2VwL3ZMUU1Jd001WE16cEs3azB5aGM5ZE4vN2JwOTF6ZHVGZzYzSU9IbVNYc2RQTlFIdDhmZ1R0blA0empjZGZFZTNQZXd3QU1ZSGcyS3g0Y3c2T0lqbUFpLy96RWtuNVNjbjhLa2k4OWdLdlQrZEEzUDA2V0RuakZldUZnRkwwTmZZQUplL1Q1NVRhcndGekJscjBiby9iYU84VVRSR3p0NTI4L0l1L2NtOXFHRGVFdjRDL1JTcWk0MzZySWgrekZsZnc4cXcrODNuLzVjd0xSOXpoKyt0SHZvLzd2V3pxL2Z2ZzhFLy81Q0lpSWlJaUlpSWlJaUltTDlBTEkyUmwvTC96OVhBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXc4TDN5VEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TUlIZ1N2QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzAvMjcnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJRVkJNVkVWRVJIYy9QMjhsSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQVpHU3dBQUFBYkd6QXlNbGNHQmdvSUNBNDJObDQzTjJFREF3VVJFUjBvS0VZdUxsQWpJejRNREJVRkJRZzdPMmNySzB3ZEhUSVZGU1FySzBzVkZTUkVSSGREUTNWRFEzWVNFaDhWRlNVOFBHa0FBQUFTRWg4QkFRRStQbTBvS0VZR0JnbytQbTB3TUZRcUtra2dJRGd5TWxnN08yZ0RBd1V2TDFJME5Gc25KMFF4TVZZUkVSNGFHaTB4TVZWQlFYRVpHU3M4UEdrcEtVY0RBd1k1T1dNQkFRSU9EaGhCUVhFaUlqdzRPR0lIQncweE1WWWlJanRCUVhJbUprTTlQV3NuSjBWRFEzWXFLa29IQnd3REF3WWJHekJDUW5RNk9tVVBEeHNXRmlZOFBHa2xKVUVDQWdNMk5sNUFRSEF6TTFrc0xFMUNRblFORFJjYUdpMEJBUUV5TWxjT0Roa1lHQ29iR3k4OVBXbzRPR0llSGpVT0Roa3ZMMUlGQlFrVEV5RS9QMjdFaTlQdkFBQUFBV0pMUjBRTEg5ZkV3QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRnFTVVJCVkhqYTdkWlhVOEpRRkFUZ2lJTG9LZ29XUk1BQUttSkhiS0RZRUxHQkhSdjJydi8vQndoakpnbjQ0SWpEOFdXL0YrN2RPNU05WVNBVFJTRWlJaUlpSWlJaUlpSWlJaUlpSWlMNlVaMmx2c0ZxYTdRM2xUYk5NR3VSNkc5MWFHMXQ3Zjh5Z05NRmRIUjJkYnVCSG8raTlIcDFQc0F2TUVBZllGR0xud0V2NERNZkJFUG9WMnZmUHpDSThGZE53STJoaU9sa0dDT2pBbC9BR0RDdUxTZUFTZU1nT29XWVFIL3hQakd0TFdlQVdUMFB6bUZlb2wveHhPTUpiYmtBTE9wNUVrdVI2cTVZdGVVVnJPby91alVIVXNMOTYybGdROTlsNEVqODRXSy90NW15QWx2NmR0dUZIY242M1d3TzJNc2F3VDdTQjRMOWgwZkZwKzd4aVJGRXJNakkxYXY1VXlCMFpvN3lRRlJ1Z0F5UWk1VTljMVViUW5MOVNTQjhYaDVkQUpkaS9RVUhyZ29WMlRWdTVQNkRmdUMySWxKenVCUHJWKzZCQitNVjRMRVVQUUhQY2dPOGxMMEJPVXVSSFhpVkcrRHQrd0R2d0lmY0FFUkVSRVJFUkVSRVJFUlVjNS9SQmlSOHh4MmZMZ0FBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNUEM5OGt3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TURDQjRFcndBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzAvMjgnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJ0bEJNVkVWRVJIZENRbk0zTjJFeU1sZzlQV3BFUkhjL1AyOGxKVUFRRUJ3R0Jnc0NBZ01LQ2hFVUZDTWxKVUZBUUhBMU5WMFBEeHNBQUFBQUFBQUVCQWNoSVRsQlFYRXlNbGNHQmdvSUNBNDJObDRrSkQ4SEJ3MDhQR2tEQXdVUkVSMG9LRVl1TGxBakl6NE1EQlVGQlFnN08yY3pNMWtGQlFrcEtVYzdPMmdWRlNVUUVCeERRM1VWRlNSRFEzVWRIVElWRlNRUkVSMEJBUUkyTmw4eU1sYzhQR2tTRWg4QkFRRStQbTFEUTNZREF3WXpNMW93TUZRcUtra2dJRGd5TWxnOVBXb2FHaTRiR3k4b0tFWTBORnNuSjBReE1WWkNRbk1QRHhveE1WWWlJand4TVZVWkdTczhQR2tXRmljdUxsRkNRblFPRGhnQkFRSTVPV01PRGhnK1Btd0tDaEViR3pBek0xa3RMVTQ0T0dJSEJ3MFRFeUpCUVhJbUprTXBLVWdNREJVM04yQXFLa29IQnd3REF3WWlJanNMQ3hNdExVOGRIVE1CQVFFNk9tVVdGaVkxTlZ3bEpVRUNBZ01TRWg4Mk5sNFhGeWs1T1dRV0ZpYzVPV012TDFJRkJRa25KMFFwS1VkQVFIQUtDaElORFJjVEV5RTlQV3MyTmw4ckswc29LRVlJQ0E1RFEzWVlHQ29iR3k4SkNSQXNMRTBPRGhrNU9XUUdCZ3NKQ1E4Z0lEZytQbXd1TGxCQVFIQTFOVjBxS2trd01GUTdPMmROeFlIV0FBQUFBV0pMUjBRU2U3eHNBQUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBSHVTVVJCVkhqYTdkYm5WOU5RR01meGF5VlFRUXY5T3JBSWdyUldIRVZSVzFGeDRFQ0dVT3ZHaGRTRmlvcGIzSHZQLzlpa1NhVkhmWHR6anNmZjUwMmU1K2JGNzJtVG04UVlFUkVSRVJFUkVSRVJFUkVSRVJFUitTZk5pc3l1Y2tKTHE2Nkp6cW10bXpzdlZsNm9iNGdEOHhjc0RDZC9VU08reFFsL29Tbm9XZEljUm42a0JaYTJ0aTFyaDJUS1cxZ2VKNzJpSTFhL0VsYXREbUdBTlZEalhlNU1KNnoxRnRiUnRkNDdPdTRFRyt6bmI0eVQ5VyszVER1NVRjWjBieWJybjlvQ1RmWUgyQW85UWJrTnRodXpBM2I2ZlRQMDJoOWdGK3dPeWoydzE1aStIUHY4dmg4RzdBK1FHaHdzNzdZaDJPOGVobUhFYS9NSEtLVHNEekRqWUJlSHZMdmg4QkZ5UjBlT3RkWlJPQjVtL3VnSjZDOVYxU2Y5eDBCTElzVDRVd08xY0xwVU9tZVN3WU5vN0d4WThkM2pSVGczN2pmbjRjTEZqbGppMGdUSjBYRHlMemU0UC9kSzhOeTlDdEZNcVhKM2FEU01lR2Z5R2x5L1VXNm40R1pRM29MYklRemcvdVhGT3pQdjNqSHVscHQ3MEdZLy96NWtIMVQwMHhRclR0bmZpUGxHSHVZckZ4N0I0NkRzaFNmV0IzajYreXZ2R1V6NVZhVEE4eGZXQjNnSnJ6cC9xWExmQmE5aE9PV1l2cDQwdkxHZWI5NVNLZUt1dkh2dkZza1AzbGZaUi92NUp2M0hBT2JUMEVTcG1mNGNRdjdmZmZuNmJmTDdEL3ZYWDBSRVJFUkVSRVJFUk9ULzhCTVJkRVVJb2F2NE53QUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU9EbzFOeXN3TXpvd01QQzk4a3dBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRENCNEVyd0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMC8yOScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQnFsQk1WRVZFUkhjOVBXczFOVncwTkZzN08yaEVSSGMvUDI4bEpVQVFFQndHQmdzQ0FnTUtDaEVVRkNNbEpVRkFRSEF0TFU4TkRSWUFBQUFLQ2hFbkowVkRRM1l5TWxjR0Jnb0lDQTQyTmw1RFEzVVpHU3NWRlNSRFEzVTNOMkVEQXdVUkVSMG9LRVl1TGxBakl6NE1EQlVGQlFnN08yY2ZIellIQnd3c0xFMDhQR2srUG13dkwxSUxDeE1WRlNRZEhUSTZPbVVCQVFFSkNROUJRWElRRUJ3QkFRSTdPMmc4UEdrQUFBQVNFaDgrUG0waElUazVPV1FCQVFFaUlqd3dNRlFxS2trZ0lEZ3lNbGhDUW5NTURCVW9LRVkwTkZzbkowUXhNVllMQ3hRSEJ3MFhGeWd4TVZWQlFYRVpHU3NURXlFUER4czVPV01CQVFJT0RoZzBORnMyTmw4NE9HSXhNVll2TDFNUER4cENRblJEUTNZV0ZpY3pNMXBCUVhJaUlqd21Ka01QRHhveE1WVStQbXdPRGhrcUtrb0RBd1k5UFdvNk9tVVdGaVk4UEdrL1AyOGRIVE1EQXdVWUdDb2JHeThsSlVFQ0FnTVNFaDgyTmw1Q1FuUTFOVjB2TDFNek0xay9QMjVDUW5NaUlqc3ZMMUlKQ1JBcEtVZEFRSEJCUVhFYUdpNE5EUmMxTlZ3bUprSWhJVG9ySzBzeU1sY0ZCUWtLQ2hJOVBXb1RFeUk5UFdzbUprSUZCUWtjSERHSEVsQVdBQUFBQVdKTFIwUVI0clU5dWdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUhzU1VSQlZIamE3ZGJYVnhOQkZNZnhzWVFJV1BKVlJORWdhZ3dJVVFoSUtCYXdDMFpVckJnclJiQ0JKZGpCTGxqL1oyZXpHNHhIZmR3NVI4L3Y4N0wzM25tNGQ5dnNHaU1pSWlJaUlpSWlJaUlpSWlJaUlpTC9wRVdMbHl5Tk9PdFdGbDFXWGxHNWZNWEtJSStzaW1HdFhsUGxwdi9hYW56cjFoZnltZzFCenNhNGkvNjFtNkJ1ODVhdENkaVc5QXIxMExDOXNTbTFBK3BkRExBVG90N3RqamZiVTdiSGxqU3RaZDVDMnk3YU0rSDM3K2lreTMvYzRnblMzY2JzaHBTL3RHY3YrOElmb0FkNmczQS9IRENtanZUQm9IQ0lXUGdESElZalFYZ1VqaG5UUjM5eDdUanROYUVQa014bVR3VGhBRFFhYy9KbjExT1FEUDhTTERnOXlKbEk0U1U0NnhlNjdmdHh6bDMvOC8xd3dSNHZ3dEFscjVDN2JMZUNLNjdhWDcxV0FkZTlxT29HeElaSFJvWkhjVGRBYnF3QmJvNzV5WGhsY1djY2NIVUxKdXpUeHEzYnhmVE8zWHMySDV4c21vSVdCKzBqOXgvQXcwZWxwZnowNHlkUHZVMHkvY3pCQU0vdDN2L2lqOS9lQkM4ZDlKK0JydG1TL0ZVbUUreUVFL0E2L1A3NWF0N2tTd3R2NFowZnZZZWU4QWY0QUI5L0tlVG1tRy96Z2s5ejlPWENIMkFTcHBvWGpKdkM1L0R6RjNzbDdOdVlEYisvR2FWVXJhM0VoNkN6dGR4bVh4MzBOOTkrRzhETWZ1LzA0bmtYNS84WEhhbm96TFM3djJJUkVSRVJFUkVSRVJHUi85d1BaU05HTmVnUmErQUFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qZzZOVGNyTURNNk1ERHd2ZkpNQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakk0T2pVM0t6QXpPakF3Z2VCSzhBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzAvMzAnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJ0bEJNVkVWRVJIZEJRWEkzTjJBMU5WMC9QMjgvUDI4MU5Wd3hNVlU1T1dORFEzWkNRbk1qSXowSUNBNEFBQUFHQmdva0pEOUNRbk03TzJnV0ZpWUJBUUlIQncwb0tFWVBEeG9KQ1E4OFBHazJObDhFQkFjWkdTdERRM1ljSERFTkRSY3ZMMU15TWxnUER4c1FFQnhFUkhkQlFYSUlDQTRoSVRrOFBHbEJRWEV5TWxjTEN4UW5KMFUvUDI0Q0FnTU5EUmREUTNVTkRSWS9QMjRHQmdzRkJRaEJRWEV5TWxndExVNHJLMHdzTEUwS0NoSUZCUWdsSlVFdExVNG5KMFU3TzJjMk5sNGhJVG81T1dRWUdDbzZPbVVYRnlndUxsQWJHekFuSjBRS0NoRUtDaEloSVRrMk5sOFVGQ01CQVFGQ1FuUStQbTBZR0NvZEhUSWJHeTg5UFdzcUtrb0RBd1lrSkQ4WEZ5bEFRSEFlSGpRNk9tWUNBZ1FjSERFVkZTVWlJanMzTjJFK1BtdzBORnN3TUZRUkVSNGFHaTBlSGpVbUprTWdJRGdhR2kwQkFRRkNRblEzTjJFVkZTUTVPV003TzJjd01GUU9EaGdFQkFjU0VoOGJHeTgzTjJBQUFBQVVGQ01PRGhrT0Roa3BLVWNqSXowdkwxSWZIellRRUJ3REF3VStQbTA5UFdzSEJ3d2RIVE11TGxBSEJ3MElDQTRvS0VZdkwxSVBEeHNURXlFR0Jnb1FFQnd6TTFreE1WWWJHekE1T1dRbEpVQTlQV3I1dUU4dEFBQUFBV0pMUjBRTjlyUmg5UUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBSUhTVVJCVkhqYTdkYm5VeE5SRk1iaGpVWWtnWjhCS3dMV0pNSUtJUWhDVUlnSUtxQ0NQU2hXYkNEMkZzV092YmYvMkh1em0ySDg2RGk3TXpydjh5SG43UHNoOSt6TzNaczRqb2lJaUlpSWlJaUlpSWlJaUlpSWlQd0xJZ3NXUm44TEZsVXNyb3lGdFhxOHFocGpTYUttbk5RdVhXYUM1U3ZDR1NHeUV0K3FPaTlaWGU4SERZMWhETEFHMXE2TFJ0ZHZnSTFKRzZUU3NLbXAyZDBNTFNHczM1cWhMVzZiYkR0VTJpWUJDVnUzZE5DNU5mZ0J1cURiNjNMUVkwcHlHOXV6cGFBWCtvSWZJQTg3dks0ZmRwb3lBSU5lc0F0MkJ6L0FucUdoaU5mMXdiQXBQZDZEc0ViWUcvd0E4d1pod0pSOXNOOVBSaGs3RU03YXlkUkI5eEFjdHYwUnFQWGpCamdhemdESDdGdGZHQzhkUE1maGhCOVB3TWtRQnpoMXVuUzdaNkI4QXA2RmMrRU1NSG4rUXN0RnFMYlAvaEw0dTlLNTdKOE1JWm55M3JwcGFQS1RLMUFYNGdESmRtYXVPczR3WFBPVDY5QWM5S294MTcxUjdzMyt2K2s0M1hETEQyNlREdjYyNzNDMzNOOHJIWXIzWWNLN2JpM3lJUEFCbklkMFp2MTJsa3lOZVNZZGpIalg1a3g4RlB3QWo2SFg2NTdBcUsxUHdiVTE5b3puTDRJZllLNmVUSlhaYXFtcEFzVittMHdXZUdtMllmd1ZUQWUvdnVPOG5qR0gwSnUzNXFQNHprdmVtL2JEeDAvd09aeGZnb28yN3cvWTdKZHk4alZ0cjhlK1JmN21hLy9FOTl5UHZQc3pPUjgwZHVYSGN5SDlEb21JaUlpSWlJaUlpSWo4LzM0QlBGNUNVMzhYQUxnQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TUREd3ZmSk1BQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTRPalUzS3pBek9qQXdnZUJLOEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMC8zMScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkxGQk1WRVZFUkhkQlFYSTNOMkExTlYwL1AyOURRM1ZCUVhGQ1FuTWpJejBJQ0E0QUFBQUdCZ29rSkQ5Q1FuTWdJRGdvS0VZUER4b0pDUTg4UEdsRFEzWUlDQTRjSERFTkRSY3ZMMU15TWxnUER4c1FFQnhFUkhjaUlqcy9QMjRDQWdNTkRSY05EUlk1T1dNK1Btd3dNRlFWRlNReU1sZ3RMVTRySzB3c0xFMElDQTRuSjBVN08yYzJObDRoSVRvRUJBY3VMbEFiR3pBdExVNG5KMFJEUTNVek0xa1lHQ281T1dRME5GdEJRWEkrUG0weU1sY1lHQ29kSFRJcUtrb0RBd1lrSkQ5RFEzWUNBZ1FjSERFOVBXcytQbXduSjBVUkVSNDdPMmdtSmtNWEZ5Z0JBUUZDUW5RNU9XTWJHeTg3TzJjRUJBY1NFaDhiR3k4T0Roa0ZCUWdPRGhrakl6MGxKVUV2TDFJVUZDTTlQV3NFQkFjQUFBQXVMbEFIQncwb0tFWTFOVnd6TTFrNU9XUWxKVUE5UFdwUTJab3JBQUFBQVdKTFIwUUthTkQwVmdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUZTU1VSQlZIamE3ZFpaVDhKQUZBWGdvcXpIZlYrcUJVVkZFUlZYc0NyZ2pyZ3Jycmo3Ly8rREhlc1VUWHd6dVkzSitWN201RDYwcDVsMFdzTWdJaUlpSWlJaUlpSWlJaUlpSWlLaS95RFEwQmo4T1FtRlEySjNqMFJqY0RRMXQzd2J0cUpON09uYjhhV2oweHQyZGNzVjZBRjYrNExCL2dGZzBOVERJWWdWR0xZUWo2Z1FTZ0FqS3BpanlUSElGUmdISnR5VUFpYlZPdVZ1aUZTQk5ERHRwZ3d3bzlaWjJRSnoyV3pBVGZQQWdsb1hIVXR5QmVxV2dSV2RjOElGelB5cXZRYXNld1BwQWh0cTB3dkZrcjhGTnJlMmZTdXdrMHZ1N2dHeGZiOEtmQ29EQjc0V01CT29ISW9YS05uMmtjN0h3SWw0QWZNVVp6cWZlNGVpNUJaYzRGTC9lbFJoNlY4Q3dRSlh3TFdiYm9CYlBSVXNjSGNQS3hvMmpIeTVnRnJHaHdMR1E4VTVoQjdWTjdqMjVBMUZYOFBudVB2OXJiN1VaOExud0d2cUxXMi9tMysvRUJFUkVSRVJFUkVSRVJIOTVnUFRoU0lRanE5TmFnQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU9EbzFOeXN3TXpvd01QQzk4a3dBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRENCNEVyd0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMC8zMicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQm1GQk1WRVZFUkhkQlFYSTNOMkExTlYwL1AyOUNRbk1qSXowSUNBNEFBQUFHQmdva0pEOUNRbk1sSlVBUUVCd0dCZ3NDQWdNS0NoRVVGQ01sSlVGQVFIQVBEeG9KQ1E4OFBHa3lNbGNJQ0E0Mk5sNGNIREVORFJjdkwxTXlNbGdQRHh0RVJIYzNOMkVEQXdVUkVSMG9LRVl1TGxBakl6NE1EQlVGQlFnN08yYy9QMjRORFJkRFEzVU5EUlk1T1dNVkZTUWRIVElWRlNReU1sZ3RMVTRySzB3c0xFMEFBQUFTRWg4QkFRRStQbTBuSjBVMk5sNGhJVG93TUZRcUtra2dJRGd1TGxBYkd6QXRMVTRuSjBRb0tFWTBORnN4TVZZWUdDbzVPV1F4TVZWQlFYRVpHU3M4UEdsQlFYSStQbTB5TWxjWUdDb2RIVElCQVFJT0RoZ3FLa29EQXdZa0pEOURRM1k0T0dJSEJ3MHhNVllDQWdRY0hERTlQV3NpSWp3bUprTStQbXduSjBVUkVSNDdPMmhEUTNZcUtrb0hCd3dYRnlnNk9tVVdGaVk4UEdsQ1FuUWxKVUVDQWdNU0VoODVPV01iR3k4N08yY2lJanN2TDFJRUJBY2JHeThwS1VkQVFIQU9EaGtGQlFnT0Roa2pJejBVRkNNckswczlQV3NFQkFjWUdDbzlQV29IQncwSUNBNDFOVnd6TTFrRkJRazVPV1FsSlVDblBvZ3RBQUFBQVdKTFIwUUlodDZWZWdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmSy94Y2g2Z0FBQUhZU1VSQlZIamE3ZFpwVjlOQUZNYnhxUmI0VjhFb0tpNklRVUZFQ3FKaVcwRlVCQlJVakJ2aVhqZHdxVHVpaUNzdTROZDIwcVFLSHlEajhmajhYblJ1Ymw0OE4zTXlPVFZHUkVSRVJFUkVSRVJFUkVSRVJFUkUvZ1dwRlN2VGZ5Kzlxcm9HSzdOcWRhV1RycTFiNDYxZFY3L2V6ZE52SUxheEllcHN5c1NOelZ0Y0RMQVZHcmVsMDAzYm9jNFBHODA3WUdkTDY2NDIyTjJlZlA0ZWo0NnFzTWgyUWxkWTdJWGFjSkpzTit4TGZvRDljQ0NxZXVDZ1hScHk1TXM3WWJKdEZBNGxQa0F2eFB2Y0I0ZnQwZzlING50SG9TbnhBWTROREtTaTZqZ00ybVVJaHVON2czQWk4UUgrT0FramRta2ZIVDBWZDA3REdUZlovdGpaNEJ5Y1g5N3R1c0JGMzgwQWw4SlRQMzU1WWxuenlsVzQ1aVkvR3VENmpadExXcWxiSGhRZDVadmJ3LzEzN2tMTnZVcmovdVNVM1pKSlYvbVJJanlJeTRmMnM4aWp4Mjd6amQ5Sm9WUXVuanlGWjMxdVVpZUM0SG1sZmdFdncvVVZURTA3ZXYyTi81cDhwWjZKUG9wdklQL1dVYncxeTd0c1hNN2gyYjhFcFF5TkpYZjU1ajNVUjlVMGZMRExSd2djNXB0UG4vR3E3YmQzckRoT0xuenh2c0JNOTIvenlVL1FXckJIN3VzMys1TWJDcTluV2FyWndSNTg3NGl5NW42VUx4ZWNEMkRNWXMvUDNtRGUxY0VURVJFUkVSRVJFUkVSK2UvOEFqUlRPZCtCaERLdEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8zMycsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkRsQk1WRVZFUkhkQlFYSTNOMkExTlYwL1AyOUNRbk1qSXowSUNBNEFBQUFHQmdva0pEOUNRbk1QRHhvSkNRODhQR2tjSERFTkRSY3ZMMU15TWxnUER4c1FFQnhFUkhjL1AyNENBZ01ORFJkRFEzVU5EUlk1T1dNeU1sZ3RMVTRySzB3c0xFMG5KMFU3TzJjMk5sNGhJVG91TGxBYkd6QXRMVTRuSjBRWUdDbzVPV1JCUVhJK1BtMHlNbGNZR0NvZEhUSXFLa29EQXdZa0pEOURRM1lDQWdRY0hERTlQV3MrUG13ME5Gc3dNRlFuSjBVUkVSNDdPMmdtSmtNWEZ5Z0JBUUZDUW5RNU9XTWJHeTg3TzJjRUJBY1NFaDhiR3k4T0Roa0ZCUWdPRGhrakl6MGxKVUV2TDFJVUZDTTlQV3NFQkFkQlFYRUFBQUF1TGxBSEJ3MElDQTRvS0VZMU5Wd3pNMWs1T1dRbEpVQTlQV3EzR0JxTkFBQUFBV0pMUjBRSWh0NlZlZ0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZLL3hjaDZnQUFBRXNTVVJCVkhqYTdkWkhUd0pSR0lYaFFVR1BZdGVSb21MRmdxaUlYYkgzamwzLy94OFJNckx5em16TVIyTHlQb3ZKeWJ1YXU1aWI4VHdBQUFBQUFBQUFBQUFBQVBBZnhGcGE0OUhCVXFLdFhUVWRuY213WUh6Nkx2M283bkVIWTcxU1gzODhQakFvRGZuT1lHczRwWFNpUGpKWmFjUVZqSTFLWThIS1NlT3VZR3hDbWd6V2xEVHRDc1ptOHZsWXNHYWxPVmRvbW5scElUclk4UXVMeFNWcE9Ud1lXNmwvOWFYVmNuaG94Z3VzclcrRUIyT2JXOXM3dTFMN1htaG9ob3EwSHgyTStWa2RIRVlHQytWaThhaXhqNldUMzhINjJLYzZhK3p6K2gzNEsxaTcwR1htWjE0cGxYUUVZOWZTVGJCdXBUdFhNSGIvb0ZUYm8rY1ZLaVZWcDF6QjJ0TkI3YzU1ZnFrOXFxL3VZTzB0SGZ5QVhiMkhCWE1mdWMrSjRwY2ZFUUFBQUFBQUFBQUFmL0FORCtzcmdSSUJlRlFBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNamc2TlRjck1ETTZNRER3dmZKTUFBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBd2dlQks4QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycwLzM0JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCU2xCTVZFVkVSSGRCUVhJM04yQTFOVjAvUDI5Q1FuUkJRWEZDUW5SQ1FuTWpJejBJQ0E0QUFBQUdCZ29rSkQ5Q1FuTkJRWEVLQ2hFbEpVRVBEeG9KQ1E4OFBHa1pHU3djSERFTkRSY3ZMMU15TWxnUER4c1FFQnhFUkhjc0xFMC9QMjRDQWdNTkRSZERRM1VORFJZNU9XTTdPMmNEQXdZeU1sZ3RMVTRySzB3c0xFME9EaGtJQ0E0bkowVTJObDRoSVRvZkh6Y0ZCUWd3TUZRdUxsQWJHekF0TFU0bkowUXlNbGN1TGxFM04yRVlHQ281T1dRK1BtMEdCZ3RCUVhJeU1sY1lHQ29kSFRKRFEzWVRFeUlMQ3hNcUtrb2tKRDhtSmtJM04yRUNBZ1FjSERFOVBXczJObDhCQVFJK1BtdzBORnN3TUZRbkowVVJFUjQ3TzJnVUZDTW1Ka01YRnlnQkFRRWJHeTgyTmw0NU9XTWJHeTg3TzJjNU9XUUVCQWNTRWg4T0Roa2pJejBsSlVFdkwxSTlQV3NFQkFjQUFBQXVMbEFIQncwSUNBNG9LRVkxTlZ3ek0xa2xKVUE5UFdvNjNDYnlBQUFBQVdKTFIwUUxIOWZFd0FBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUdIU1VSQlZIamE3ZFpYVHdKQkZBWGdRVUhRWSs5bEZVVlFSRkFVTElpZ3FOZzdLUGFPM2YvL0tzc0NRdlROZUluSitSNDJkdzRKZXpZN1RGQ0tpSWlJaUlpSWlJaUlpSWlJaUlpSS9nTlRSYVg1VzJpcHNzcmMzVlpkZzR6YXV2cVN1S0VSVFRKUDM0eWNsdGJpdkExQ0JkcUJqazZ6dWFzYjZORys0bDRJRmVpem85K21Ed01PWUxBUU8xMVNCWWFBWVdOeUF5UDUxT3JCcUZBQkwrQTBKaDh3bGsvSDRaOFFLakFaQ0ppTUtRaE01Y0pwWUdaV2FoTVdoSUE1WXdyUEk2QkVDMmlSY0hRQldEUldzU1VzUjJRTHJPakhnQ3NlTTFhcnNLK3BNaFJZMzlqTUxyYTJzM3RCdE1ETzd0NytBVkJ6cUxKSGNFS1RMcENWQkk2VWZnVFBoMVZaQ21nT0hGdVVFMGdGZFhFZ0ZBeWUvUFZkWTlIb2FYNCtBODdWQlVvRS92eXhMM0dWbjFQNm9TaGRRRjNEUDVBYlBiQVgvU1dRMmdNM3dLMHgzUUdKb2cra0N0dy93RjVkcFZRazZVTGFWNFlDNnZFNDg2cWZuak9YOUV0eEx2Y3pmTzAzOXB2bnJTU1dQQWN1M08vZTZJZjIreThpSWlJaUlpSWlJaUlpb3A5OEFrdmhMT1FVelRVTkFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8zNScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQS9GQk1WRVZFUkhkRVJIY0pDUkFBQUFBQkFRRStQbXcxTlZ3bkowUWRIVElQRHhwRFEzVUdCZ29IQnd3UER4czdPMmN4TVZVZkh6WW5KMFFqSXo0WUdDbzNOMkU5UFdzQUFBQUxDeFJCUVhJREF3VU1EQlVSRVIwNE9HSXNMRTBsSlVBb0tFWWdJRGdVRkNNOFBHa0pDUTgvUDI0QkFRSVJFUjQxTlZ3b0tFWXFLa2tvS0VZZEhUSVFFQndDQWdOQVFIQStQbTBHQmdwRFEzVTdPMmdYRnlnU0VoOHhNVllhR2kwRUJBZENRbk1QRHhvdkwxSXVMbEVmSHpjcUtra1dGaWREUTNZSEJ3MEJBUUkvUDI4L1AyOUFRSEF6TTFvVkZTUVRFeUlySzBzYkd5OHFLa29URXlGQ1FuUUVCQWNDQWdSQlFYRUJBUUV2TDFJWEZ5a25KMFhOTjQ4a0FBQUFBV0pMUjBRREVReE04Z0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRU1TVVJCVkhqYTdkWEhVZ0pSRUViaE81N0JIQUhCaElvS2lncVlzeUlZTVlmM2Z4ZVpVbXJtQmJoZFZ2M2ZwbSt2K3RSc3hqa1JFUkVSRVJFUkVSRVJFUkVSRVJINUY0SStDRk9HQWYxMERCZ0dERVlCUTNiM2gwY1lIWU54czRBSm1KeUN0RmxBQnJMVE9mSlc5MmRtbVF2Y1BDd1lCUlJnMGJrbFdEWUtLSkpiY1M0VnNocVkzRjhyVVk1bUdkWk5BamFnRXMxTjJESUoyS1phaTJZOVpHZlg0UDRlN1ArK0R1RFFJQ0JOd3BILyswRStHWEI4NGowZ0M2ZG5menIvZzNQdkFSZHcyWDFYNE1yMy9jWTF6VlozdVNsUnZmVWNjQWYzOGZZQWo1NEQybENJdHlkNDludi81WlczOTNodE5mbW9ldzM0aEsva1hvUnZ2NTlBUkVSRVJFUkVSRVJFUkhydUIzcExFa0hWNWovUEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8zNicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWZsQk1WRVZFUkhjWkdTd0FBQUJCUVhFZ0lEZ21Ka05DUW5RNU9XUUNBZ1FMQ3hNWUdDbzJObDRXRmlkQ1FuTWhJVGtuSjBVbkowUWlJanNWRlNVYkd6QXpNMWtCQVFJNk9tWWVIalFsSlVFeU1sZ2JHekE3TzJjWEZ5a3NMRTB6TTFrK1BtMG1Ka0lWRlNRaElUb2FHaTFEUTNVREF3VU5EUmNZR0Nvd01GUkVSSGRYaTJPdkFBQUFBV0pMUjBRQ1pndDhaQUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBQ2tTVVJCVkhqYTdkWlhEc0l3RUVWUk03VFFUQ2loMTlEM3YwRWNnVUR3ajE4azd0bkFYRm1qa1owREFBQUFBQUFBQUFBQUFBQmxWN0VQMWI4TXFOWGZHb3FBWnZTaEJCQlF0b0NucE5YdVNBTUszWjRpd1BjTDZXQVlDa2FLZ05jT2pET3ppVExBVGMxbTBvQzUyVUlhc0RSYnFWL0FTd1BDRHF5VkFadk1rcTBnNFBFaDJmbDl1QU41N1BsZmwvQndGQWFjenBmckxmcDhBQUFBQUFBQUFNRFAzUUZkWHdXeUlieXhuUUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNUEM5OGt3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TURDQjRFcndBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzAvMzcnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUF3RkJNVkVWRVJIY1pHU3dBQUFBQ0FnUU1EQlVWRlNVdkwxSkVSSGNTRWg4L1AyOGdJRGdtSmtNbEpVRVdGaVlCQVFFWEZ5ZzVPV1E1T1dNRUJBY3hNVllwS1VnaElUbzVPV1FWRlNVcEtVY3BLVWNIQncxQlFYRWhJVGtuSjBVbUprTVdGaWNCQVFFR0JnczNOMkVEQXdZMk5sOGVIalJEUTNZK1BtMHlNbGdPRGhnWkdTdENRblFMQ3hNMU5WMHRMVTRoSVRrWUdDbzFOVjBlSGpVaElUb3FLa296TTFrQ0FnTTlQV3NtSmtJVkZTUWFHaTFEUTNVREF3VU5EUmNZR0Nvd01GVFBZdngyQUFBQUFXSkxSMFFDWmd0OFpBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxHSTRFZ3NBQUFEZFNVUkJWSGphN2RaSlVnSkJGRVhSNGlHQ05GcGlBMHJSSS9iUzJJS0MrOStWS2NHa0ZrQTlCdmVNY3ZadlpHVDh5Q2dDQUFBQUFBQUFBQUFBQUFEN0xxZXQvRUhoc09nTStGYzZzZ1NVSzBHMVhEdVdUcksvZ3hBUWI0K25kZW5NR1JDZFN4ZldnRXVwNFE3SVdRT2EwcFV6SUR6QzY1WWpJR2tIbmFUYlUzK1ErZnpVSWhxT3NwK2Yzb1M5bTdFaklONGNpcmQzOTlLREx5QjRmSktlblFIUml6U3hCc1RTMUJvd2srYldnRmZwelJudy9xSGhweUZnOHlHcGZDV0xzQWs2V2M5UEx5SXR2NDBCUDZ2MXIrTlhDZ0FBQUFBQUFBRFlzVCtIWVF0dDA0MUVwUUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNUEM5OGt3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TURDQjRFcndBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzAvMzgnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FCQU1BQUFBeEVIejRBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFHRkJNVkVWRVJIY1pHU3dBQUFCQlFYRWdJRGdtSmtOQ1FuUTVPV1RBTEtaTkFBQUFBV0pMUjBRQ1pndDhaQUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBQTlTVVJCVkdqZTdkREJEUUFSQUFCQk5TZ0JpWXBjLzZWY0tJRUhZYWFBZld3SUFBQUF3R3RpR3ZMR1FHbmROeCtvcXc4RUJBUUVqZ2tBQU1BZGZxSXdDSFAwaGk1SEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC8zOScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQXExQk1WRVZFUkhjYkd6QUNBZ002T21VOVBXb0NBZ1FSRVIxRVJIY2ZIellBQUFBcEtVZy9QMjRDQWdNRkJRaEJRWElXRmljcEtVY3ZMMU1MQ3hNVUZDTW5KMFZDUW5RRkJRa3lNbGNXRmljZEhUSWxKVUVMQ3hOQVFIQkNRbk0wTkZzdExVOERBd1ltSmtJSkNROE9EaGdaR1NzT0Roa1lHQ29FQkFkQ1FuTXRMVTQvUDI4K1BteEJRWEkxTlZ3OVBXb1hGeWdkSFRKRFEzVUdCZ294TVZZdkwxTkRRM1lwS1VjL1AyNGZIemVvMmozUEFBQUFBV0pMUjBRSjhkbWw3QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRFdTVVJCVkhqYTdkZmJUc0pBR0VYaGd1V3dxU0FJUW1tdHlQbFFsWU1pdlArVG9TVHdCbVNIWkgwM25idC9KWjFNWm9JQUFBQUFBQUFBQUFBQUFBRGNpVUx4d1JzUWxzb1ZiMEZWTlc5QTlGaHZlQXVlMVBRR3RQVHMyUVZ0cWZQL2ZlbXFadzBJWXZXOUFZbFNTOEJyRkdYbnhac1VXZ291TW1sZ0RRamVOZlFHakZUMUJvdzE4UVpNTmZNRzJIL0JYSWwxL2tKYU91YXU4dnpqdlBpVXZod0IxNk40YURxS3J3RnJiYXdCMjUyK0xRRVhQMHIzMW9CWXY5YjVCL2VsOUdpK2x2ODlUTHc3d1A0MEF3QUFBQUFBQUc3bUJDMTNDZXc5N3hreUFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJNE9qVTNLekF6T2pBdzhMM3lUQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNSUhnU3ZBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMC80MCcsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQXBWQk1WRVZFUkhjek0xb0FBQUFrSkQ5Q1FuTUtDaEVIQnd4QlFYSWdJRGdwS1VjOFBHa0JBUUlIQnd4RFEzVWZIemNnSURoQlFYSUZCUWc1T1dNVUZDTW5KMFVwS1VjTkRSY1VGQ05DUW5RREF3VXZMMUpBUUhBL1AyNDBORnMrUG13a0pEOGNIREVORFJZV0ZpWVNFaDhQRHhzWEZ5Z1FFQndYRnlnV0ZpY1NFaDhkSFRJR0Jncy9QMjg5UFdzdUxsRU5EUllFQkFjNE9HSUJBUUVnSURnb0tFWUtDaEV6TTFsVGQvcDRBQUFBQVdKTFIwUUNaZ3Q4WkFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQURYU1VSQlZIamE3ZGZiVHNKQUdFWGhZVnRCUUVwQlFZN2xmRkFVNVBqK2p3WWFHcDZBN0pDczcyWXUvOVZNTSsyRUFBQUFBQUFBQUFBQUFBQUFIa2xPVDliNTBYTytZQTE0VWRFNnYxUityVmdEWWxXdDg1T2E2cGJCYjlMNzM5cFEwL1BrV2NDSGF3ZXVBYTIyT3A2QWJxOFhYWmErbEhvQ3JnYktXK2VIb1ViZWdMRW0zb0NwWnQ2QXVSYmVnS1UrdlFGZjdwZHdvSlZwOG5lYUp1SC9JUHJ4Qk55TzRyVTE0UEl4aXIwQkRXMDhBWm5rVjF0dlFlemFnMHhwWi80cERYc2R2QUhSMFh3eENTZnoxUXdBQUFBQUFBQzRpek5vNXdpSHUxUGxMZ0FBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lPRG8xTnlzd016b3dNUEM5OGt3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpnNk5UY3JNRE02TURDQjRFcndBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzAvNDEnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FCQU1BQUFBeEVIejRBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFJVkJNVkVWRVJIY0FBQUFPRGhnVUZDTW5KMFZBUUhBL1AyNUNRbk0vUDI4K1BteEJRWEpjQ2g4ckFBQUFBV0pMUjBRQi93SXQzZ0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBQk1TVVJCVkdqZTdkT3hEWUFnRkVWUmpDR2hkUU5IWVJwcTFxRnpWT01NRlBEak9RUGM1dVdsQkFBQUFQelJjUXVzRFp4WGpSN0lyVWRmUVdDSFFCbFA5QzlNQno0Q093UUFBSmp6QXB5RkI3SHZYeEgxQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakk0T2pVM0t6QXpPakF3OEwzeVRBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU9EbzFOeXN3TXpvd01JSGdTdkFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycwLzQyJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCUVZCTVZFVkVSSGMyTmw4aElUa1BEeG9IQncwQ0FnTUZCUWtMQ3hRWkdTc3RMVTVCUVhJNU9XUVVGQ01BQUFBSEJ3d3FLa2xFUkhjd01GUURBd1lBQUFBUUVCd2VIalFrSkQ4Z0lEZ1hGeWdFQkFkQ1FuUXpNMWtCQVFFV0ZpYzdPMmdtSmtNWEZ5aytQbTBHQmdza0pEODRPR0lHQmdzcEtVZ2ZIellhR2kwME5GdENRbk1uSjBWQVFIQURBd1pBUUhBcEtVY3VMbEVkSFRNM04yRWRIVEl4TVZVSEJ3eERRM1UvUDI1Q1FuTVRFeUVWRlNROFBHa05EUmREUTNZYkd5ODNOMkFMQ3hNQ0FnUWVIalV6TTFvUUVCeENRblFaR1N3Nk9tVVdGaWM1T1dNUkVSMUFRSEFsSlVFb0tFWUNBZ01LQ2hFM04yRVBEeG9ySzBzZkh6Y09EaGtLQ2hJdkwxTTlQV29aR1NzL1AyOCtQbXhCUVhJYUdpMEpDUThSRVIwYUdpNHlNbGc1T1dRbEpVQTJObDRKQ1JCQlFYRXBLVWdqSXo0bUprSXNMRTA3TzJjUkpzMWFBQUFBQVdKTFIwUU45clJoOVFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUZxU1VSQlZIamE3ZGJwTmtKUkhBWHdFMHJTemxYR1JDUWtaWXpNYzZaSVpnb2g4L3MvZ091R09oN2czMkx0MzRlNjdTOTdyN3ZxZEpVaUlpSWlJaUlpSWlJaUlpSWlJaUtpUDhWV1UxdG5kOVE3RzF4VnFXOTA0NXVueVpEdmIvWUN2cGJXdHZhT1RuT0MweS9kM3hVQXVudXNTMy9Rbk5BcmZBLzZRa0QvVDJkNEFCaVVIVEFFUkNvK0R2c1Fpc28wbTkrOEVhVmlYc1JISytNSU1DWTVZQnlZME9KSndDMDVZQXBJYUxFeGpmaU15SUJZTWptcjFCeVExUE41WUVIbUZsZ1dFVmpTazJWZ1JYREFLdForSmV2QWh1Q0FUU0NsSjF2QXR1Q0FIV0JYVC9hQXRPQ0FmZUJBQzZJWkhCcUNBN0xBa1JZY0F5ZUMvY280MVErQzJUTWdLemxBblFQVEYrVTk1by93VXFqNUtwZkxmNzVmQXpmaHJ5eHYvaE00cEk2aDBsR3NsT3NXQ0JUdTBvYi8vc0VEZUcxQy9UOERWS3BnUFkxbHJOZkRvbFIvZVlCU1JiZTk5RWo0R0t6T1U2bFNUNG5ubDllM2Q2Tks5VVJFUkVSRVJFUkVSRVQvMGdmaHN5UDBvcDBtb3dBQUFDVjBSVmgwWkdGMFpUcGpjbVZoZEdVQU1qQXhPUzB3T1Mwd09GUXhORG95T0RvMU55c3dNem93TVBDOThrd0FBQUFsZEVWWWRHUmhkR1U2Ylc5a2FXWjVBREl3TVRrdE1Ea3RNRGhVTVRRNk1qZzZOVGNyTURNNk1EQ0I0RXJ3QUFBQUFFbEZUa1N1UW1DQyddLAoKWycxLzEnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFPVkJNVkVVaUlqd2hJVHNnSURrUUVCd0FBQUFVRkNRaUlqc0VCQWNSRVI0aUlqd2ZIellZR0NvS0NoSUVCQWNDQWdRaElUc1pHUzBhR2k3Ly8vL2xTcEhWQUFBQUFXSkxSMFFTZTd4c0FBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxHSTRFZ3NBQUFCWlNVUkJWSGphN2M2SERZQXdFQUN4QkVMdit5OUwyUUc5RVBZQ2R5a0JBQUFBQUFBQUFOK1FxeHc3VUpjbXROOTJ3UU45Q1J3WXhta3VrUU5MZWNRTnJORUQyMldQSExnZEJnd1lNR0RBd084SEFBQUFBQUI0MFFrZDhRTEpKYnZvQ3dBQUFDVjBSVmgwWkdGMFpUcGpjbVZoZEdVQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUNZckVsd0FBQUFsZEVWWWRHUmhkR1U2Ylc5a2FXWjVBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQlhkcXJnQUFBQUFFbEZUa1N1UW1DQyddLAoKWycxLzInLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUE4MUJNVkVVaUlqd2dJRGdTRWlBSUNBNERBd1lCQVFFRkJRa0tDaElURXlFZ0lEa1pHU3dEQXdVQUFBQUVCQWNiR3pBY0hERUJBUUlJQ0E4VUZDTVhGeWdTRWg4R0Jnb0NBZ1FkSFRRS0NoSWlJandoSVRzT0Roa0tDaEllSGpVQUFBQUpDUkFBQUFBZkh6Y1lHQ29WRlNVUUVCd1pHU3dVRkNNYUdpNFRFeUlaR1N3WUdDc2dJRGtNREJZZUhqVWNIRElCQVFFSEJ3d2NIREVFQkFjWkdTc2hJVGtSRVI0VEV5SWlJanNWRlNVREF3WUNBZ01kSFRNSUNBNExDeE1lSGpVVEV5RUJBUUlKQ1JBYkd5OFJFUjRYRnlrVUZDUWdJRGdoSVRvSEJ3d1ZGU1laR1N3TURCVU5EUmdlSGpVSEJ3MERBd1gvLy8vRHoza0lBQUFBQVdKTFIwUlE0MjVNdkFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUR0U1VSQlZIamE3ZFRIVXNJQUZFYmhpR0xqS0RaRVFNVmVzSGV3ZCt5Ky85dklLS1B1WEptN09kOG1kM2YrekdTU0pKSWtTWklrU1pJa1NaSWtTWC9xeUhSMlpidDdldnVDK3YwNXZnd01odlR6UXpBOE1qcFdnUEZpeElBSnlKUmF6M0lGSmdQNlU5TlVTNTlYdWNETWJQb0Q1bUMrZlM3QVl2b0RsbUM1ZmE3QWF2b0RpclhhV3Z0Y2g0MzBCL3pZM0dLN0ZOamYyWVc5dVB6K1FSWU93L0pIOVFZYzE4UDZKNmV0SC9IWmVWUytkSEVKVjlkaHI1L2NRT00yOFBPL2crcDlYRDVwNW5ob0J2YVRSM2lLN0NmUDhGTDU5cHIrZ0RkK3k2Yy80RDE2Z0NSSmtpUkpraVRwMzMwQTdOVVNycUFFNUp3QUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURBbUt4SmNBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdWM2FxNEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMS8zJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCRVZCTVZFVWlJandoSVRrYkd6QWJHeThnSURnaElUb1JFUjhFQkFjQUFBQURBd1VTRWlBaElUb0hCdzBFQkFnZUhqVU9EaGtIQnd3WUdDb1pHU3dJQ0E0SUNBNGlJandmSHpnQkFRRUhCd3doSVRzR0Jnc2NIRElaR1N3V0ZpZ1dGaVlXRmljVUZDTWRIVFFiR3k4UkVSMFhGeWdPRGhnV0ZpY1RFeUlNREJVZEhUSWhJVG9mSHpjWkdTd01EQlVPRGhrVkZTVUNBZ01TRWlBaUlqd0JBUUlPRGhrZkh6WWZIemNhR2k0WUdDb1VGQ01KQ1E4ZUhqUVRFeUlMQ3hRQUFBQWhJVG9jSERJTkRSZ2RIVFFDQWdRSkNSQU5EUmdIQncwQ0FnUUhCd3dSRVI4VEV5RVhGeWtLQ2hFZkh6WUNBZ01nSURrQUFBQVhGeWdFQkFZRUJBY1VGQ01hR2k0WkdTMGRIVE1TRWlBZUhqWC8vLzhFWndabEFBQUFBV0pMUjBSYUE3dWxvZ0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRWFTVVJCVkhqYTdkYlhVZ0pCRklUaFFRbHRqa2hRRVZFTXVDcGlWZ1N6bURIcis3K0lTeTNvRyt3cHkvKzdtT3E3N3JtWkd1Y0FBQUFBQUFBQUFBQUFBTUJmRU9ucWp0cTF4K0lKK1hwNis0eHUzNisyZ1VHVEFVUFM4RWcwT2pvbWpTY04raWRTU3NkYUlaT1ZKZzBHVEVuVFFjcEpNd1lEOHRKc2tBclNuTUdBK1dJeEVxUUZhZEZnd0s4bGFkbXFPMWxhOFZhbE5iUExyN2VlZ2ZKR3hYYkE1dGEyMllDZDNiMzlBeWx4YUxhZ3BTb2RtUTVJWmxXcmg5NWE4YnpqVGo2UlRzTy85cG5PTy9uaTUxRU0wNld1TXUzWVVNcmdTM0F0M1FUcFZyb0x2OS9kUHlnVmYzU3VWQzJyV1RBWTRKNXEvaVAwL09JZnpWZUxmdWZlMHNHUHJQRnUwKy83eUgzbXZTK0wveGdBQUFBQUFBQUEvQXZmWVIwVndVZURvVEVBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREFtS3hKY0FBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd1YzYXE0QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycxLzQnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFmbEJNVkVVaUlqd2hJVG9nSURraElUc2dJRGtGQlFrQUFBQVRFeUVORFJZV0ZpY2RIVFFDQWdNSEJ3d0VCQWNRRUJ3Q0FnUVlHQ29aR1N3WEZ5a2NIREVmSHpjREF3VU9EaGdpSWp3S0NoRUZCUW9oSVRvVEV5RUJBUUVjSERFYkd6QUJBUUVURXlJS0NoRWlJandORFJnV0ZpY1NFaUFNREJVYkd6QWRIVFAvLy84Sjd4cHdBQUFBQVdKTFIwUXB5cmVGSkFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUNZU1VSQlZIamE3ZFJaRXNFQUZFVFJSMmdSTTBuTVlvaGgveXZFanlvTG9FdTVad045dnpvQ0FBQUFBQUFBQUFBQUFBRDhpa1l6c2U2MzJ1cFlBMUo1QTdyeUJtUTliMERTMThBYU1OUm83QXlZU05PWk1TQXZWSVl4WUw3UWN1VU1XR3V6RFdQQXJ0SStqQUdQQ3o0Y25RR3BpanlNQVpsMHFwL08wcVd1cjE4UHVPbE4rWDhCTDg0bkpJQUFBQUFBQUFBQUFNQm4zUUU0cndmRWZsMDFSUUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNQ1lyRWx3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURCWGRxcmdBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzEvNScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQkFsQk1WRVVpSWp3SEJ3MEFBQUFZR0NzREF3VWdJRGdJQ0E4T0Roa2NIREliR3pBWUdDb1dGaWNkSFRNUkVSOEFBQUVoSVRzTkRSWUZCUWdJQ0E0S0NoRWJHekFMQ3hRRkJRa0JBUUlEQXdVSkNSRVZGU1VoSVRzQ0FnUUdCZ3NlSGpRZ0lEa0NBZ01QRHhzV0ZpWVVGQ1FPRGhrQ0FnUUZCUWdnSURnYkd6QUVCQWdjSERJZkh6WUlDQTRQRHhvZ0lEZ1pHUzBmSHpnZUhqVUJBUUlCQVFJaElUb05EUmNhR2k0VEV5RVdGaWNXRmlZWEZ5a1pHU3dSRVI0YUdpMEpDUkFCQVFJaUlqd2hJVG9YRnlnTkRSY2dJRGtFQkFZUER4b2ZIemNCQVFFQ0FnUUVCQWNDQWdNZEhUUUxDeE1BQUFBS0NoRWRIVElmSHpjV0ZpZ1NFaUFlSGpYLy8vLzRJbHgzQUFBQUFXSkxSMFJWa3dTNE13QUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxHSTRFZ3NBQUFFRVNVUkJWSGphN2RYWFVzSmdGRVhoM3kyZ0VMR2lZa1d4Z0ZnUUxGR3hvWUlWKy9zL2kwRXdYanFqTXprenp2cXV6bFgydWtuaUhBQUFBQUFBQUFBQUFBQUF3RTk2Rk9vMUNZZ1pCOFNsUkY5WHYwVkFVa3BaN0lZOGFjQTBJSzNCSWRPQVlZMlk3cnRSaldYR0p5YXpVOU16TmdGWnpYWmZ3cmw1aS8xY3NMeXdtRjlhWHBGV0N3WUJSV210MUQ3V042Uk5nNEN0Y25tN2MxV3EydGsxS1BpMkorMmJCdmpTZ1duQW9lUkZ2M3JrMWI3T1kra2srb0JUbmNVNzEzbEMxWHIwQVg3NDhsMUlsOUh2dTZ1RzFMeDJycEMrMFczRklNQWwyMS9pdXlCRDk3Vy9QKzAzSGxxUG43K0NwMmViL2NETHEvK1dmemViQndBQUFBQUFBSUQvN2dNY01oRWNEY3R5NVFBQUFDVjBSVmgwWkdGMFpUcGpjbVZoZEdVQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUNZckVsd0FBQUFsZEVWWWRHUmhkR1U2Ylc5a2FXWjVBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQlhkcXJnQUFBQUFFbEZUa1N1UW1DQyddLAoKWycxLzYnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJLVkJNVkVVaUlqd2lJandkSFRRWkdTd2JHeThnSURrVkZTUUZCUW9BQUFBSkNSRWRIVE1oSVRzTEN4TUJBUUVhR2k0TkRSY0tDaEVhR2k4aElUa2RIVFFRRUIwQUFBRUVCQWNnSURnYkd5OExDeFFpSWp3U0VpQVVGQ01MQ3hNQUFBQWZIelloSVRvQ0FnUUpDUkFCQVFJY0hESWJHeThiR3pBWkdTd1ZGU1lURXlJZEhUTVpHUzBlSGpZT0Roa1dGaWNGQlFnSEJ3MFpHU3dNREJZUER4c1RFeUlMQ3hNQkFRRVJFUjBiR3pBY0hERVJFUjBCQVFFY0hERUtDaElhR2k0WEZ5a0lDQTBNREJVSkNSQU5EUmdZR0NvUkVSOFhGeWtTRWlBV0ZpY1ZGU1lZR0NvWEZ5a1NFaUFZR0NzZ0lEa0JBUUlPRGhnZkh6Y01EQlVKQ1JBZEhUUUNBZ01XRmlZaElUb1VGQ01FQkFnWUdDb0VCQWNHQmdzWkdTd2FHaTRVRkNRU0VoOFVGQ1QvLy8vSExaY2VBQUFBQVdKTFIwUmlLN2tkUEFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUV0U1VSQlZIamE3ZFhIVWdKUkZJVGhpNG8yQmtRVVJkUXhZRmJNSW9nNTU1eXo3LzhTRGpCVnZzR2MwdnEvVmUrNkZ6UG5PZ2NBQUFBQUFBQUFBQUFBQVA2Q1NFMXRYZFN3dnI1QnZsaWpVWDlUczZwYTRqWURXcVZFVzdLOUk2WE9Mb3YrdE5TZEtZY2VxZGRpUUorOC9rb1lHTlNRUVg4eXEwUVFoMGRHRFFhTVNlTUd0YjhtcExpTFRJNU5UUnNOeUVudE03UGx2M0J1M21UQWdyUVkzQUV0V1F4WTlvdnpLNFZvY1RXbDBwckJnSFhKMjZpa1RXbkxZTUMybEF2aWp2ODVoRDlnVjlvTDRyNTBFUDZBUTZrWXhDUHBPUHdCSjlKcEVNK2s4L0FIWEZ6cUtvZ3g2VHI4QWU1R1h2VUpPSmR1RGZyZFhWNzNENDh1K1pSVkttMHh3STM3cDZqMDdQbjNvTjZrMzdtWDE4b2hmbnMzNm5jdTgvSDU5VjJJbVBVREFBQUFBQUFBd0QvM0EwWEZHR21WNDl1b0FBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd0ppc1NYQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNRmQycXVBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMS83JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBbGxCTVZFVWlJandORFJZQUFBQU9EaGdXRmlZT0Roa0tDaElWRlNZaUlqd0pDUkFMQ3hNaUlqd1VGQ01EQXdVZkh6Y2VIalFCQVFNWEZ5a0pDUThORFJjVUZDUUNBZ01mSHpjZ0lEa0RBd1VSRVI0UkVSNGdJRGtmSHpZQkFRSVVGQ01PRGhnRUJBY2hJVHNCQVFFVEV5RUZCUWtaR1MwV0ZpY05EUmNBQUFFREF3WUhCd3djSERJUER4c1RFeUVYRnlrSkNSQWZIemYvLy8vT1l5dVlBQUFBQVdKTFIwUXgyZHNkY2dBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUNsU1VSQlZIamE3ZE5IRW9JQUVFUlJiQk9JaWhFUmM4N2gvcWR6cDY3Y2FTLzg3d0svYTZvbUNBQUFBQUFBQUFBQUFBQUFBRDRyNkYzeER3ZVV5azhWcWZyN0FTOWhwRnJzSEZCWG8rbnNKeTIxbmYyd282NnpIL1RVVDUzOVFhYWg5UUM1c3BHelA1NW9hajNBVFBPRnM1OHVsVnNQc0pJU1p6OWVLN0llWUNOdHJRTjIybHQvTUQ3b2FEM0FTVHBiQjF5a3EzWEFUYnBiQndBQUFBQUFBQUFBdnVzQnZUY0Z4NkVEdWNJQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURBbUt4SmNBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdWM2FxNEFBQUFBQkpSVTVFcmtKZ2dnPT0nXSwKClsnMS84JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCT0ZCTVZFVWlJandoSVRvY0hERVpHU3dlSGpVaUlqd2JHeThJQ0E0QUFBQUFBQUFDQWdNUUVCMGdJRGtTRWlBRUJBWWVIalVaR1MwREF3VVVGQ1FlSGpRZ0lEa0xDeE1JQ0E0aElUc0lDQThCQVFFYkd6QVpHU3dpSWpzQ0FnTUpDUkFhR2kwZUhqWU5EUmNORFJnaElUb0FBQUFIQncwWkdTc1JFUjRMQ3hRWEZ5a2hJVG9IQnd3QkFRRWRIVFFmSHpjRkJRZ09EaGdaR1MwVUZDTUZCUWtXRmlnZ0lEZ0tDaEVCQVFJYkd6QVZGU1FDQWdRR0Jnc2JHekFSRVI0RkJRb1hGeWdQRHhvQUFBRWNIREVhR2k0SUNBNGhJVHNZR0NvTURCVWRIVE1MQ3hRY0hESURBd1FURXlJWEZ5Z0ZCUWtEQXdZVUZDUUpDUkVmSHpZYkd6QVVGQ1FFQkFjaUlqd0ZCUWdWRlNVV0ZpY2RIVElEQXdVRUJBZ1FFQndmSHpZTURCWVhGeWdnSURnYkd5OFZGU1VURXlFWUdDb2RIVFQvLy84dkMwNnNBQUFBQVdKTFIwUm5XOVBwc3dBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUU0U1VSQlZIamE3ZGJuVXNKQUhBVHdFdzJ5S2lLQ3ZSTlUwR0F2R0d6WXNBTDIzc3Y3UDRJSkYxN2gvdU80dnkrMzMzWm5NcmxFS1NJaUlpSWlJaUlpSWlJaUlpSWlJdm9MR2tLTlRaWmNmYmc1QXFDbHRVMm9QNHBBZTB5a3Z5T0NlR2NpR2U0Q3Vuc2tCdlNpcjk4L0xXL0JnRUQvNEJDR2RSb0JvZ0lEUm9FeG5XSkFTbUNBbmNhNFRoUEFwTUFBbFFHeS9qazFEU2NuTVdCbUZ1bTU3UHpDSXB3bGlYNmxsbGYwTmJDYWwrbTMxdHpnSWlxc2l3ellBRGEzRXNuOGRoSHVqa0QvTHJDM1gwc0hYaElZVUFJT2czZ0VISnNmVU1CSi9VTjhDcHlaSDFCR3BSNnJnTUNMZUE1Y0JERUZYSm9mY0FXVWRBbzV1TDR4UDhDK0JUSTVTOWwzY2VEZWZMOVNENC9lSGVRKytYOWx6eEw5U3IyOEZtc1hZZmxOcHQvei92SDU5ZjBqOFB5SmlJaUlpSWlJaUlpSS9vZGZUTGtiODREYVQzQUFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQW1LeEpjQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3VjNhcTRBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzEvOScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQktWQk1WRVVpSWp3Zkh6WWFHaThhR2k0ZUhqUWlJandYRnlnR0Jnc0FBQUFGQlFnVUZDTWlJandoSVRzTURCWUtDaEloSVRzUER4c0RBd1lXRmljZUhqVWZIellYRnlrRkJRb2RIVE1BQUFBRUJBZ2dJRGdoSVRvSUNBNEJBUUVlSGpRUUVCMGRIVElBQUFFUkVSNElDQThoSVRvR0Jnc0dCZ29FQkFjTEN4UUpDUkFJQ0E0ZEhUUWFHaTRmSHpjQkFRSWJHekFZR0NvSEJ3MGhJVHNpSWpzTEN4UWFHaTBIQncwWUdDc2ZIemNIQncwZUhqVUZCUWtFQkFjTURCWWdJRGdQRHhvQkFRTUJBUUVNREJVTkRSZ2hJVG9iR3k4WUdDb1pHUzBmSHpnS0NoSWhJVG9HQmdvRkJRZ2dJRGtkSFRNTkRSY2FHaTRURXlFUkVSMFlHQ29EQXdRRkJRa2VIallLQ2hFZkh6WVlHQ3NBQUFBREF3WVRFeUVnSURnT0Roa2VIalVTRWlBVUZDVC8vLzhvOWtVT0FBQUFBV0pMUjBSaUs3a2RQQUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRTNTVVJCVkhqYTdkYm5Vc0pRRkFUZ1k4R3Nnb0pLSklqRWpyMWdWTEJpdzk0RkMvYjNmd2x2VEJ6ZklHZDA5dnUxLzNaSjV0NGdRa1JFUkVSRVJFUkVSRVJFUkVSRVJIOUJVM05MYTB5dFBkWm13V2p2aU92MEp6b1I2a3FxREVnQjNUMjlhYnNQU0duMFp4eGsrLzJRRzBEZVZSZ3dDTmhCR2hyR2lNS0FVVGhqWVJ5SHBUQ2dnSW1mT0lsOEl2b0JVNyt0MDhCTTlBUE1JWmdOMHR3OHNCRDlnRVdndU9RSGI5bGNCU3ZSRDRpdkFsYXBYQzZ0UVdlQXJHK0VGK0htbHNvckVObXU3Smo2M2IzMFBwRFJHQ0J5VUQwOE9oWTVnWE9xTXlCMGhuT0YxZ3ZYRFcvQ1MrQktZY0ExY0JPa1crQk9ZWUJYUXozbmgvc2FDcDdDQVA5eitQQm9ub1E1alU4YS9aSXNBbzNzc3ptSkx5cjlJcTl2RGY4ZXF1djgvbS92OXNkblZlOWZNUkVSRVJFUkVSRVJFZEYvOXdXWDhScWlxdVVzb3dBQUFDVjBSVmgwWkdGMFpUcGpjbVZoZEdVQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUNZckVsd0FBQUFsZEVWWWRHUmhkR1U2Ylc5a2FXWjVBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQlhkcXJnQUFBQUFFbEZUa1N1UW1DQyddLAoKWycxLzEwJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCTlZCTVZFVWlJandoSVRzZ0lEa2dJRGdhR2k0WUdDc2NIRElpSWp3UUVCd0FBQUFVRkNRZUhqUUxDeE1CQVFFRUJBY1VGQ01pSWpzRUJBY2JHekFDQWdNTURCWVJFUjRoSVRvUUVCMGVIalVaR1N3R0Jnb1VGQ01pSWp3Zkh6WVlHQ29LQ2hJU0VpQWZIemNEQXdVQ0FnUWdJRGtFQkFjRkJRa0NBZ1FURXlFV0ZpY0NBZ1FkSFRJTURCVWRIVE1MQ3hRaElUc1pHUzBXRmljRkJRZ0ZCUWthR2k0UUVCMGJHekFLQ2hFQUFBRWhJVHNORFJnZkh6WU1EQlVnSURnUER4b2RIVE1MQ3hNY0hERU5EUmNoSVRrUER4c1FFQndORFJjZUhqVVRFeUljSERFV0ZpZ1lHQ3NIQnd3Ykd6QWZIemdBQUFBS0NoSVVGQ1FQRHhzSUNBNEJBUUlmSHpjZkh6Y0NBZ01EQXdZaElUb1BEeG9YRnlrSUNBMEpDUkVEQXdVSUNBNFpHU3NPRGhnWkdTd1VGQ01TRWlBV0ZpYi8vLytvYTY5UEFBQUFBV0pMUjBSbUxOVFpKUUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRlVTVVJCVkhqYTdkWFhVc0pnRkVYaGlIVlp3WTRWc2ZmZXU5Z2I5dDdMKzcrQ3dTU0ExODRjUm1kL044QytJR3N5bVQrT0l5SWlJaUlpSWlJaUlpSWlJaUlpSW45RFhpZ3Y4eU8vb0xDbzJEaWdoTkxnYTFsNUJWQlpaWm9RanFRRHFtdncxSVlOQStvSUF1b2owTkFZaWpaQnM5SEZXMXJiMmtrSHhDQ1crdXlJMDlsbEU5RHQzWEV2b0tXSFh1OXg3SU4rbTRDQjdJQkJHUExtWVJpeENSaDFqUVVCNHpEdTd4Tk0yZ1NrVEFVQjB6RGpiN1BNemRzSExFQ1p2OVhDb24zQUVpejcyd3FzMmdlc1FYQUN1bWZEdW4zQUJpVDhiUk9LN0FPMm9OSGZ0bUhIUG1BWDl2ek5QUjVEOWdIN2NPQnZoMFRNcnA4Sk9JSVZienBPY3BLRGdPSTRFOTdrbm9tbk9RaHd6aUQ2WFhMT3hXVXVBcTZ1dVhFZnc5czcyTEs3ZmxhQWN3L0poOGNuZUxaN0Uvd0ljRjRpcWJmejNHdmlOMy80SytHMzk0OVB1L2VRaUlpSWlJaUlpSWlJeUwvM0JiYTRJSGx3ZStaUEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd0ppc1NYQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNRmQycXVBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMS8xMScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQU9WQk1WRVVpSWp3aElUc2dJRGtRRUJ3QUFBQVVGQ1FpSWpzRUJBY1JFUjRpSWp3Zkh6WVlHQ29LQ2hJRUJBY0NBZ1FoSVRzWkdTMGFHaTcvLy8vbFNwSFZBQUFBQVdKTFIwUVNlN3hzQUFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUJ5U1VSQlZIamE3YzVMRG9KQUZFUlJrRVoraXJML3pXSk1TTHBER1BvTTRaeFpqZXBXRlFBQUFBQUFBQUJ3RHZXdFBoaEJtdFFlakJqM0x2c3NScEErWlovRkNEQ00weU50bjhVSThreGY3WDRFbWZQUCtROEJyNC8zOWxtTVFFdit1UWdRSUVDQUFBRlhEQUFBQUFBQTRJZFcxeXNGa1F1RTF2RUFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQW1LeEpjQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3VjNhcTRBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzEvMTInLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJCVkJNVkVVaUlqd2hJVHNnSURrUUVCd0FBQUFVRkNRZ0lEZ1NFaUFJQ0E0REF3WUJBUUVGQlFrS0NoSVRFeUVnSURraUlqc0VCQWNaR1N3REF3VWJHekFSRVI0Y0hERUJBUUlJQ0E4VUZDTVhGeWdTRWg4R0Jnb0NBZ1FkSFRRaUlqd2ZIellZR0NvS0NoSUtDaElPRGhrRUJBY2VIalVBQUFBSkNSQUFBQUFmSHpjQ0FnUVZGU1VaR1N3aElUc1pHUzBVRkNNYUdpNFRFeUlaR1N3WUdDc01EQlllSGpVY0hESUJBUUVIQnd3Y0hERUVCQWNaR1NzaElUa1JFUjRURXlJVkZTVURBd1lDQWdNZEhUTUlDQTRMQ3hNZUhqVVRFeUVCQVFJSkNSQWJHeThYRnlrVUZDUWdJRGdoSVRvSEJ3d1ZGU1laR1N3TURCVU5EUmdlSGpVSEJ3MERBd1gvLy84TjhLaXdBQUFBQVdKTFIwUldDZzNwaVFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUVxU1VSQlZIamE3ZFhYVXNKZ0ZFVmhBMXRSTENDS0RZa2dLblpSN0Ezc0ZidnYveXBHSVJEazJwTnhabjAzeWZ3M2UwMG1tWFIxQVFBQUFBQUFBQUFBQUFDQS84R0pPT0VHUk5YdDMvYkVldnZpL1FPRFE1YjdpV1F6WURpbHV1U0lZY0NvL0lEMG1EUStNVG1Wa2Fhek51UHVUQzZ2WnNDc0ZITzlxMU9ROGpZQmMvVW5YZytZWDFEUi9ibHpNbHBjTWdsWURnYmtwSlhHZVZSYU5RbFk4Nno3QVJ0U3FYRytLVzJaQkh3citRSFpjam5TT051V2R1d0RXbmIzdE8rR0dIQndLQjJaN1hjRUhKL0VwVk83L1Y4QmlVcFZPcXNZN3JjSG5GOTRYK1hsbGVWK01NQzl2cEZ1NzB6bjJ3SzgzMEwxM3U3MTd3aDRrSXFQMXZPQmdGcEtUelg3L1ZiQXMvUVN3bjRyNEZWNkt6Uzkyd2Q4S0NodEgvQVpVZ0FBQUFBQUFBQUE0QTk5QVo4aEY5WkUwekpFQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzEzJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCTDFCTVZFVWlJandoSVRzZ0lEa2hJVGtiR3pBYkd5OGdJRGdRRUJ3QUFBQVVGQ1FoSVRvUkVSOEVCQWNEQXdVU0VpQWhJVG9pSWpzRUJBY0hCdzBFQkFnZUhqVVJFUjRPRGhrSEJ3d1lHQ29aR1N3SUNBNElDQTRpSWp3Zkh6WVlHQ29LQ2hJZkh6Z0JBUUVIQnd3R0Jnc2NIRElFQkFjWkdTd1dGaWdXRmlZV0ZpY0NBZ1FVRkNNZEhUUWJHeThSRVIwaElUc1pHUzBYRnlnT0RoZ1dGaWNURXlJYUdpNE1EQlVkSFRJaElUb2ZIemNaR1N3TURCVU9EaGtWRlNVQ0FnTVNFaUFpSWp3QkFRSU9EaGtmSHpZZkh6Y1VGQ01KQ1E4ZUhqUVRFeUlMQ3hRQUFBQWhJVG9jSERJTkRSZ2RIVFFDQWdRSkNSQU5EUmdIQncwQ0FnUUhCd3dSRVI4VEV5RVhGeWtLQ2hFZkh6WUNBZ01BQUFBWEZ5Z0VCQVlVRkNNYUdpNFpHUzBkSFRNU0VpQWVIalgvLy8rQUdNUEVBQUFBQVdKTFIwUmt3dHE0Q1FBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUZVU1VSQlZIamE3ZGJYVXNKUUZJWGhRQlNYZ0wxclJBRUxpbGhRRktNQ2RzU3VXTEg3L3U4ZzhYQUMrZ0E3NDdpK3E3QnY5ajlNeWpFTUlpSWlJaUlpSWlJaUlpSWlJaUlpK2h0OGZsLzloOW5VSEpBT2FFRnI3U29ZQ3FPcXJiMURjbjlubHc0d3UxSFQweXNZMEFjZDBBOE1EQVlDUThQQWlDV3ozQnFOakVFSGpFY1JDem9Ydmpnd0lSTXdxZjV4RlRBRlRLdHhBcGlSQ1podERFZ0NjMnFjQXVabEFoYXFGblhBVWpwdHF2RXlzQ0lUNE1pNE42RnJGVmp6S3NES3J0c2J3S2JjL2w4Qlc4NDlrY3NYdkEzWTN0bjFMR0F2RTlrL0FNS0hYZ1Y4S3dKSG5nWlljWlNPeFFNS3RuMmlaNmZBbVhpQWRZNExQYnQwWDRxQ0FjWVZydlhKcEl5bzNKSEFEYmdCYnRYb0RyZ1gyMThQZUhoRU5PUTNqR3d4aDByS2d3RGpxVlI5Q1QwN24raktpOXoreHNmd05hWSt6K1Uzd2YwL3ZTYytrdmFuMEhtTWlJaUlpSWlJaUlpSTZCLzRBb0pOSUpPbGhYN0dBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdKaXNTWEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUZkMnF1QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzEvMTQnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFwVkJNVkVVaUlqd2hJVHNnSURraElUb2hJVHNRRUJ3QUFBQVVGQ1FnSURrRkJRa1RFeUVpSWpzRUJBY05EUllSRVI0V0ZpY2lJandmSHpZWUdDb0tDaElkSFRRQ0FnTUVCQWNIQnd3Q0FnUVFFQndDQWdRWUdDb2hJVHNaR1MwWkdTd1hGeWtjSERFYUdpNGZIemNEQXdVT0RoZ2lJandLQ2hFRkJRb2hJVG9URXlFQkFRRWNIREViR3pBQkFRRVRFeUlLQ2hFTkRSZ1dGaWNTRWlBTURCVWJHekFkSFRQLy8vL1l4cy8zQUFBQUFXSkxSMFEyUjcrSTBRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxHSTRFZ3NBQUFETlNVUkJWSGphN2RUTFVzSkFFRWJoQ1laZmtVUVJvaUtLYUJLNWV3bm8rNythMFlXVjBiVTlSZVY4dStuTm5FVlhPd2NBQUFBQUFBQUFBQUFBQUE1RDFJbjh3VkVuTmczbzZ0aDduL1IwYXZsL1Ava1ZrTW8yNEV4K3dMa01Bd1lYdzVIOGdPelNNdUJLM3hvQjhiVVN3NER4bjRBYlRXNE5BKzVxMDJiQXZUUjdNRjdDeDBaQVhxaDBBUU9lNWxvc1F3YXN0TjY0Z0FIYlo3MjRnQUgxQ1g0ZGhBeElWZVF1WUVBbXZWVmZkdEsrcXQ3TkF6N2tLZHNYOENQa0pTU2duUUVBQUFBQUFBQUFnSC8wQ1dDQUQyWm5mVFdMQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzE1JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCSUZCTVZFVWlJandoSVRzZ0lEa1FFQndBQUFBVUZDUUhCdzBZR0NzaUlqc0VCQWNEQXdVUkVSNGdJRGdJQ0E4T0Roa2NIRElpSWp3Zkh6WVlHQ29LQ2hJYkd6QVlHQ29FQkFjV0ZpY2RIVE1DQWdRUkVSOEFBQUVoSVRzaElUc1pHUzBORFJZRkJRZ2FHaTRJQ0E0S0NoRWJHekFMQ3hRRkJRa0JBUUlEQXdVSkNSRVZGU1VHQmdzZUhqUWdJRGtDQWdNUER4c1dGaVlVRkNRT0Roa0NBZ1FGQlFnZ0lEZ2JHekFFQkFnY0hESWZIellJQ0E0UER4b2dJRGdmSHpnZUhqVUJBUUlCQVFJaElUb05EUmNhR2k0VEV5RVdGaWNXRmlZWEZ5a1pHU3dhR2kwSkNSQUJBUUloSVRvWEZ5Z05EUmNFQkFZUER4b2ZIemNCQVFFQ0FnUUVCQWNDQWdNZEhUUUxDeE1BQUFBS0NoRWRIVElmSHpjV0ZpZ1NFaUFlSGpYLy8vL2xHYk9VQUFBQUFXSkxSMFJmYzlGUkxRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxHSTRFZ3NBQUFFMVNVUkJWSGphN2RYWFVzSkFHSWJoZ0o4ZEZCVkZVYkVyZGl6WUJWUlU3TDJYKzc4TUE0UWdwenF6T3pydmM3U3pCL25mSkpPTjR3QUFBQUFBQUFBQUFBQUFnTDhoRUF6WURhaFR2YmRxa0svUjNQeW1aaitneFVwQXF5b0JJU25jNW1rM016elMwZGtsUHlBcWRadTc4WktlOHZQMkFtSlNyK0dBdnBxQXVQb0hEQWNNdWhKK3dKQ0dEYzh2R2ZFRFJqVTJQakU1bFp5ZU1Yb3dWQU9TOGw2Slp1ZHNCTXk3a3hjV1UwdkxLOUpxMmtMQW1yUytVVnhzYmtuYkZnSjJFb25kOGxZbXE5eWUrWUJ2OXFVRHF3RjU2ZEJxd0pFVU14OXdIQ3RVOXR3ZjFJbjVnRk9kaGNwYmtiQ3k1K1lEOHY3SGR5RmRHcHRmRFFoZVNkYzNqcE9PMytvdVl5SEFpUlpQNG5zM1F3K0YzMTN6aHdITzQ5Tno2VmZ3OG1wd2ZxMjM5L3hINnRQYWVBQUFBQUFBQUFENGQ3NEFoLzBabGNFUCtUc0FBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQW1LeEpjQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3VjNhcTRBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzEvMTYnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJRVkJNVkVVaUlqd2hJVHNnSURraUlqd2RIVFFaR1N3Ykd5OGdJRGtRRUJ3QUFBQVVGQ1FWRlNRRkJRb0pDUkVkSFRNaUlqc0VCQWNoSVRzTEN4TUJBUUVhR2k0UkVSNE5EUmNLQ2hFYUdpOGhJVGtkSFRRUUVCMEFBQUVFQkFjZ0lEZ2ZIellZR0NvS0NoSWJHeThMQ3hRaUlqd1NFaUFVRkNNTEN4TUFBQUFmSHpZaElUb0NBZ1FKQ1JBQ0FnUUJBUUljSERJYkd5OGJHekFoSVRzWkdTMFpHU3dWRlNZYUdpNFRFeUlkSFRNZUhqWU9EaGtXRmljRkJRZ0hCdzBaR1N3TURCWVBEeHNURXlJTEN4TUJBUUVSRVIwYkd6QWNIREVSRVIwQkFRRWNIREVhR2k0WEZ5a0lDQTBNREJVSkNSQU5EUmdZR0NvUkVSOFhGeWtTRWlBV0ZpY1ZGU1lZR0NvWEZ5a1NFaUFZR0NzQkFRSU9EaGdmSHpjTURCVUpDUkFkSFRRQ0FnTVdGaVloSVRvVUZDTUVCQWdFQkFjR0Jnc1pHU3dTRWg4VUZDVC8vLy9QZ1Bzc0FBQUFBV0pMUjBScUpXS1ZEZ0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRmdTVVJCVkhqYTdkWFhVc0pRRklYaFFGUmNJRllVUVZCRTFOaXdVRlRzSW9pOUYreTl2UDhMR09BUTRRVjJSbWQ5VnlmN1p2K1RNQWROSXlJaUlpSWlJaUlpSWlJaUlpSWlvci9CNFhUOFB1Z05qVTB1NFlCbXVLMzFuaGFZdksyUys5dmFyWUNPVGxSMCtRUUR1bUVGOUFEKzNrQ3dMNFJ3djh4eWZTQXlDQ3NnQ2d6RlNvZGhZRVFtSUZ4NTR5cGdGTVpZK1RBK2dVbVpnS25hZ0VBY2ZqV2ZucG1WQ1pnekphb0JTU0FsczdaZXVob3dEL2cwZlNHWldMUXBJQU1FbDVaTG4yUmwxWmFBTldCZDNRUFlzQ05nMDF5YzNjcTU4dHNoRkhac0NEQnZCR08zZk5vRDltMElPQUF5YW5aby9oemtBNDZBWXpVN0FVN2xBODZBdkpxZEF4ZnlBWmZBbFpwZEEwWDVBT2NOYnRYTUM5ekpCMmozTUNwL0FVWGdRV3gvVGNCakZrL1BMMXJnTlk1UTFJNEFMV1ZlUllVM3c3d1BQSEw3YXdPMHlIdjVJdjc0Rk54Zkw1WjJmMzNuZE52MkV4RVJFUkVSRVJFUkVmMDNQM3B0STVUajR1L2xBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdKaXNTWEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUZkMnF1QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzEvMTcnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUF1bEJNVkVVaUlqd2hJVHNnSURrUUVCd0FBQUFVRkNRTkRSWU9EaGdpSWpzRUJBY1JFUjRXRmlZT0Roa0tDaElWRlNZaUlqd2ZIellZR0NvaUlqd0pDUkFMQ3hNRUJBY1VGQ01EQXdVZkh6Y0NBZ1FlSGpRQkFRTVhGeWtoSVRzWkdTMEpDUThORFJjYUdpNFVGQ1FDQWdNZkh6Y2dJRGtEQXdVUkVSNGZIellCQVFJVUZDTU9EaGdFQkFjaElUc0JBUUVURXlFRkJRa1pHUzBXRmljTkRSY0FBQUVEQXdZSEJ3d2NIRElQRHhzVEV5RVhGeWtKQ1JBZkh6Zi8vLzh4N0tXRUFBQUFBV0pMUjBROTBHMVJXUUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRGtTVVJCVkhqYTdkUFpUZ0pSRUVYUkJvOENqZGdJVHVETUpJZ3pvK0QvZjVkSUowTGY4R3BWVFBaNnVZOW5wNUliUlFBQUFBQUFBQUFBQUFBQTRIL0k1WE8rQVh2YS8za090SzFndDE4c09RZkVTZ1BLaDc4cTBwSE5lRkk5WG8ybEFSdTF1azRTbTREVDlONUJ3Sm5PTDJ6Mm84YXVnT2Fscm96Mm8rdVZteUNnZHFzN3EvMjEreUNncFhiSE02RGIwNFBwZmhnUXE1ZjNET2dQOUdpN0h3UU05ZlRzR2RCNVVXeThudzE0bFpxZUFjbWI2dGI3bVlCMzZjTTFZS1N4OFIvTUJpUVRUYzMzdHdObTB0dzE0Rk5hdUFZc3BTLzdBQUFBQUFBQUFBREFIL29HdWxzTWNNU1dIUW9BQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREFtS3hKY0FBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd1YzYXE0QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycxLzE4JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCUjFCTVZFVWlJandoSVRzZ0lEa2hJVG9jSERFWkdTd2VIalVpSWp3UUVCd0FBQUFVRkNRYkd5OElDQTRBQUFBQ0FnTVFFQjBpSWpzRUJBY1NFaUFFQkFZZUhqVVJFUjRaR1MwREF3VVVGQ1FlSGpRZ0lEa0xDeE1JQ0E0aElUc2ZIellZR0NvS0NoSUlDQThCQVFFYkd6QVpHU3dFQkFjQ0FnTUpDUkFhR2kwQ0FnUWVIallORFJjTkRSZ2hJVG9BQUFBSEJ3MFpHU3NSRVI0YUdpNExDeFFYRnlraElUb0hCd3dCQVFFZEhUUWZIemNGQlFnT0RoZ1pHUzBVRkNNRkJRa1dGaWdnSURnS0NoRUJBUUliR3pBVkZTUUNBZ1FHQmdzYkd6QUZCUW9YRnlnUER4b0FBQUVjSERFYUdpNElDQTRNREJVZEhUTUxDeFFjSERJREF3UVRFeUlYRnlnRkJRa0RBd1lVRkNRSkNSRWZIelliR3pBaUlqd0ZCUWdWRlNVV0ZpY2RIVElEQXdVRUJBZ1FFQndNREJZWEZ5Z2dJRGdiR3k4VkZTVVRFeUVZR0NvZEhUVC8vLy9RSllQTUFBQUFBV0pMUjBSc3pBRXdPd0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBRnNTVVJCVkhqYTdkWnBXd0Z4Rk1aaHBLYUhsQ1NpMEtZVkxSVHRpMmhSYWRXKzcvWDkzemZNMHZRRmpxdXU1MzVqbkRmbmR6SCt3MllqSWlJaUlpSWlJaUlpSWlJaUlpS2l2OEh1c1ArOGFYQTJOaW5DQWMxd0daZnVGZytBMWphSDVINXZ1eG5nZzY3REx4alFDU01nNEVHd0t4UjJkd005RVpubFNqVFdDek9nRC8wRHRhbGFNQ2dURU5jK2NTM0FPNFJoYlR3QytHUUNScTBCWThDNE52WURDWm1BaUNwZ0JDUlRtTkRHazhDVVRFRFZ0SGtQcElGTTlYVm1GdGxjUFFMbTVwRmF5Q3d1TFNPN0lyZmZFbUJiWGRQdWlmVzg0SDVMZ0xKUjBBK2k0bVpkQXRRamFXczdGTTd2bEZEWXJVUEFIckN2UFpaaTZsVWRBc3JBZ1Q0N0JJN2tBNG80Tmg3RUo4Q3BmRUFGWjhic0hKRDdJWm9CRjhDbFBrc0FWL0lCTHFDc2paeFp4Sy9sQTVJM1FEcW4ySkszUWVCT2JML2xITGgvVU0rZ3dtUDFYOW1UM0g3clVSeDlMdFVPd3NxTDRQN2ZYdC9lUHo2LzVMNS9JaUlpSWlJaUlpSWlvdi91Rys4OUpTenBlMlN3QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzE5JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCUVZCTVZFVWlJandoSVRzZ0lEa2ZIellhR2k4YUdpNGVIalFpSWp3UUVCd0FBQUFVRkNRWEZ5Z0dCZ3NGQlFnVUZDTWlJandpSWpzRUJBY2hJVHNNREJZS0NoSVJFUjRQRHhzREF3WVdGaWNlSGpVZkh6WVhGeWtGQlFvWUdDb2RIVE1BQUFBRUJBZ2dJRGdoSVRvSUNBNEJBUUVlSGpRRUJBY1FFQjBkSFRJQUFBRVJFUjRDQWdRSUNBOGhJVG9HQmdzWkdTMEdCZ29FQkFjTEN4UWFHaTRKQ1JBSUNBNGRIVFFhR2k0Zkh6Y0JBUUliR3pBWUdDb0hCdzBoSVRzTEN4UWFHaTBIQncwWUdDc2ZIemNIQncwZUhqVUZCUWtNREJZZ0lEZ1BEeG9CQVFNQkFRRU1EQlVORFJnaElUb2JHeThZR0NvWkdTMGZIemdLQ2hJaElUb0dCZ29GQlFnZ0lEa2RIVE1ORFJjYUdpNFRFeUVSRVIwREF3UUZCUWtlSGpZS0NoRWZIellZR0NzQUFBQURBd1lURXlFZ0lEZ09EaGtlSGpVU0VpQVVGQ1QvLy85ak1PRWZBQUFBQVdKTFIwUnFKV0tWRGdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUZ0U1VSQlZIamE3ZFpYVThKQUdJWGhqUTJQb2dSRVZKQWlncjFnYjFqQTNyQjNzR0QvLzMvQXpTUVpHTzhjWjNaSDV6eFh5MTd3dlFsc1FBZ2lJaUlpSWlJaUlpSWlJaUlpSWlMNkc0d2FvL0tpdHE2K3dhTTRvQkZOenNyVDdJWFUwdXBUT2QvMHV3R0JOamlDeHUvZTgwZmE0UWFFZ0k3T3JuQ2tHd2dwR3U0SlI0TndBMkp4Skhxc1JiSVhxYlNhZ0Q3N2p0c0IvVURFM2g0WXhKQ2FnT0hxZ0JIRVI1MzlNWGpWQkFTa2NUY2dnd2wzZnhLcGdKb0NhY29ObUs1TW5RRm0xUWZJUXpCbmI4MHZBSXZxQTVhQTdMSzFNRmZrOTJKVmZZQnZEZkRtOHZuY092UUVpSTFONTBIbzM5THlFUWl4dmJNcngrL3RodytBbUk0QUlRNExSOGNuUXB3aWZxWW53SEdPQzJYekt3R1g2YlR6Skx3Q3JqVUUzQUMzOXRZZEVOVVFZQlpSU2xxTCt5SXlwb1lBNitmdzRWSGVDWGthbjlUTnJ3b3dza0E1OFN4UDRvdkMrZFduNFBXdGJEMkhTaXF2LzV2M3lNZG5RZlcvWWlJaUlpSWlJaUlpSXFKLzdBdlF5eVNrUmdHUUdnQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01DWXJFbHdBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREJYZHFyZ0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMS8yMCcsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQnNGQk1WRVVpSWp3Z0lEZ2FHaTRZR0NzY0hESWlJandnSURnU0VpQUlDQTREQXdZQkFRRUZCUWtLQ2hJVEV5RWdJRGtlSGpRTEN4TUJBUUVBQUFBRUJBY1VGQ01aR1N3REF3VUVCQWNiR3pBYkd6QUNBZ01NREJZaUlqc2NIREVCQVFJSUNBOFhGeWdTRWg4R0Jnb0NBZ1FkSFRRaElUb1FFQjBlSGpVZ0lEa1pHU3dHQmdvVUZDTUtDaElpSWp3aElUc09EaGtLQ2hJU0VpQWZIemNEQXdVQ0FnUWdJRGtlSGpVQUFBQUpDUkFBQUFBZkh6Y0ZCUWtXRmljWUdDb1ZGU1VRRUJ3WkdTd2RIVElNREJVZEhUTUxDeFFVRkNNYUdpNFRFeUlaR1N3V0ZpY0ZCUWdGQlFrZUhqVVFFQjBiR3pBS0NoRUFBQUVoSVRzSEJ3d05EUmdmSHpZY0hERVpHU3NNREJVZ0lEZ1BEeG9kSFRNaElUa1JFUjRURXlJTEN4TVJFUjRWRlNVREF3WUNBZ01ORFJjUER4c2RIVE1JQ0E0UUVCd05EUmNURXlFQkFRSUpDUkFiR3k4Y0hERVhGeWtXRmlnWUdDc0hCd3dVRkNRZ0lEZ2JHekFmSHpnaElUb0hCd3dVRkNRVkZTWVBEeHNJQ0E0TURCVU5EUmdlSGpVZkh6Y0RBd1loSVRvUER4b0hCdzBYRnlrSUNBMEpDUkVEQXdVSUNBNERBd1VPRGhnWkdTd1VGQ01TRWlBV0ZpYi8vLytOanMvc0FBQUFBV0pMUjBTUDlRS0QrUUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMR0k0RWdzQUFBSGZTVVJCVkhqYTdkWG5VeE5SRk1iaHEwbEVFUVIrSUZFSktFVUo2Z1lRSlloZFFRVWJOaFJqQVN6WXU5aDdML2czdTV1OWlYSDhKTTdlR1ozMytYTFBlVC9zT1RQWjNEVkdSRVJFUkVSRVJFUkVSRVJFUkVSRS9rbHo1c2JpQ1dmVDVwWE5YMUMrc0tKeVVTR29xcTRCYXVzY3JiQzRubEJ5U1Jnc1hXYURocFNMK1kxTnNMeHVSWE1MdExZRndjb2tyR3BQZDZ5R05TNFdXQXRsbm45bU9xRXJDTHFoT3pqWDliQitRL1R6ZTdQMGVma3EwOExHZm1POFRiUm04a0VsYkk1K2dTMncxWmJiWUxzeE8yQm4yTytDZ2VnWEdJVGR0dHdEZTQwWmdpRWJETE12K2dYYVlyRzBMUnRndnpFSDRLQU5EakZ5T1BvTml1STFIUEhmaHFOUTlYT2pZKzdtSDYrRlVmODhBU2R0TkFhblhJM1BuUzZITTBGMUZnbzM0RGxvZERNK05UNEJrK1A1K2p6a2JId0I0azdtWDd6azM3dlY3V0V6QmJZeWw2SFh3WGp2eWxXNGRyM1Erbi9HRzdic2d2UXNIL29uL0Y5NjRxWlhiRy9CYlZ2ZUllbGcvbDNvdTFmUzM0ZXhzSHFRcFNMNitkUDFQSnd1RFJJOURJZVZmeWMraW42Qng5RHhhL0xFSm9tbk5QVkh2OEF6ZU41WjlNSlBYazd5eW44Tlg3K0JxZWpubTdlVXl0ODc3eUQ3L3NOSCtPVGlTL0Q1OXdYTWFES29SNzdrL3ZMWnM1ZjYrbTNtdThQdmtJaUlpSWlJaUlpSWlNai83UWV2WGtCMnR3NWN6QUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNQ1lyRWx3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURCWGRxcmdBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzEvMjEnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJCVkJNVkVVaUlqd2hJVHNnSURrZ0lEZ1NFaUFJQ0E0REF3WUJBUUVGQlFrS0NoSVRFeUVnSURrUUVCd0FBQUFVRkNRWkdTd0RBd1VFQkFjYkd6QWlJanNjSERFQkFRSUlDQThVRkNNWEZ5Z1NFaDhHQmdvQ0FnUWRIVFFSRVI0S0NoSWlJandPRGhrS0NoSWZIellZR0NvZUhqVUFBQUFKQ1JBQUFBQWZIemNFQkFjVkZTVVpHU3dDQWdRVUZDTWFHaTRURXlJWkdTd2hJVHNaR1MwWUdDc01EQlllSGpVY0hESUJBUUVIQnd3Y0hERUVCQWNaR1NzaElUa1JFUjRURXlJVkZTVURBd1lDQWdNZEhUTUlDQTRMQ3hNZUhqVVRFeUVCQVFJSkNSQWJHeThYRnlrVUZDUWdJRGdoSVRvSEJ3d1ZGU1laR1N3TURCVU5EUmdlSGpVSEJ3MERBd1gvLy8rZmd3a1RBQUFBQVdKTFIwUldDZzNwaVFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTEdJNEVnc0FBQUVrU1VSQlZIamE3ZFRYVXNKUUdFVmhnaWdXdG9KZ1F6UWdpaDBMOWdiMml0MzNmeFdqaEJqazJwOXhabjAzNTJUZlpNMVFJaEVBQUFBQUFBQUFBQUFBQVBBL09WSEg3bVZkc2U2ZWVHOWYvMEJvUzJqUTdQMURTVFdraG9NdG5iSUx5SXhJbzJQakUxbHBNdGNjcDJRWE1DM0ZYTzkwOGxMaGEzQm5pZ1haQmN6T3FlUiszNXlzNWhlOGM3SHhnVmdGRktVbC81cVFscjFqeFRaZ1ZTcjcxelZwM1RzMlBKdDJBYmxLSmVwZnQ2UnQvMW8yL0JJR2RuYTE1M1l3WVA5QU9tdysyQWNjSGNlbGsrRFJPaUJkclVtbjFaL0JPT0RzM1B2WlhWeUdGdE1BOStwYXVybHQyVXdEdlAvOTJwM2J1bGtHM0V1bGg5K2pZVUE5cWNkNjIyb1k4Q1E5dDYrR0FTL1Nhejd3Wmgvd3JyQ01mY0JIcHdNQUFBQUFBQUFBQUgvdUUvL1FITGdNR3ppMEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd0ppc1NYQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNRmQycXVBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMS8yMicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQTgxQk1WRVVpSWp3Z0lEZ1NFaUFJQ0E0REF3WUJBUUVGQlFrS0NoSVRFeUVnSURrWkdTd0RBd1VBQUFBRUJBY2JHekFjSERFQkFRSUlDQThVRkNNWEZ5Z1NFaDhHQmdvQ0FnUWRIVFFLQ2hJaUlqd2hJVHNPRGhrS0NoSWVIalVBQUFBSkNSQUFBQUFmSHpjWUdDb1ZGU1VRRUJ3WkdTd1VGQ01hR2k0VEV5SVpHU3dZR0NzZ0lEa01EQlllSGpVY0hESUJBUUVIQnd3Y0hERUVCQWNaR1NzaElUa1JFUjRURXlJaUlqc1ZGU1VEQXdZQ0FnTWRIVE1JQ0E0TEN4TWVIalVURXlFQkFRSUpDUkFiR3k4UkVSNFhGeWtVRkNRZ0lEZ2hJVG9IQnd3VkZTWVpHU3dNREJVTkRSZ2VIalVIQncwREF3WC8vLy9EejNrSUFBQUFBV0pMUjBSUTQyNU12QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMUlUvSXAwQUFBRDhTVVJCVkhqYTdkVEhVa0pCRkVWUlJCR1ZvNWdRRzFUTUFYTUdFMmJNL1AvZlNPa3J5N0thNitneTJtdlNwL2FrZTlTcEZBQUFBQUFBQUFBQUFBQUF3TDk2MHIxOW1mN3N3R0RINEdzb3AyL0RJeDJDci95b05EWStNVm1RcG9yUjRHeGFTb2YyV1NwTE05SGdhM1pPbGZDMVNnWE5MMFNDczBWcEtabkwwa29rT0Z1VjFwSzVMbTFFZ3JOaXRicVp6QzFwT3hLNlptZFhlOEVNdnZZUHBFTXp1RG82emtnblZuQjFXcXRMWnpVaitEcS9hUCs3bDFkR2NCVWExOUxOclJHYzNVbjErMkFGWHc5UzVkRU12cG81UFRYTjRPeFplckdEczFmcHJmempQUktjZmVpM2ZDUTRhLzI5cjlYbEJ3QUFBQUFBQUFBQTNIMENXNjBsV3kwaWFuQUFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQW1LeEpjQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3VjNhcTRBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzEvMjMnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJtMUJNVkVVaUlqd2hJVGtiR3pBYkd5OGdJRGdTRWlBSUNBNERBd1lCQVFFRkJRa0tDaElURXlFZ0lEa2hJVG9SRVI4RUJBY0FBQUFEQXdVU0VpQWhJVG9aR1N3RUJBY2JHekFIQncwRUJBZ2VIalVjSERFQkFRSUlDQThVRkNNWEZ5Z1NFaDhHQmdvQ0FnUWRIVFFPRGhrSEJ3d1lHQ29aR1N3SUNBNGlJandLQ2hJaElUc09EaGtLQ2hJZkh6Z0hCd3dHQmdzY0hESUFBQUFKQ1JBQUFBQWZIemNaR1N3V0ZpZ1dGaVlXRmljWUdDb1ZGU1VRRUJ3VUZDTWJHeThSRVIwVUZDTWFHaTRURXlJWkdTd1hGeWdPRGhnV0ZpY1lHQ3NnSURrTURCWWVIalVNREJVZEhUSUJBUUVIQnd3aElUb2ZIemNaR1N3TURCVU9EaGtjSERFRUJBY1pHU3NWRlNVQ0FnTVNFaUFpSWp3UkVSNFRFeUlCQVFJT0Roa2ZIellpSWpzVkZTVURBd1lmSHpjVUZDTUpDUThlSGpRZEhUTUxDeE1lSGpVTEN4UVRFeUVCQVFJSkNSQWhJVG9SRVI0WEZ5a2NIRElORFJnZEhUUVVGQ1FnSURnQ0FnUU5EUmdIQncwQ0FnUUhCd3dWRlNZUkVSOEtDaEVNREJVZUhqVWZIellDQWdNRUJBWUVCQWNEQXdVYUdpNFpHUzBkSFRNU0VpRC8vLy9CTVc0bUFBQUFBV0pMUjBTSWEyWVdXZ0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMUlUvSXAwQUFBSFlTVVJCVkhqYTdkWlpVeE5CRkliaGpnWWNSZUNOTzZpSUVURUdCWktvaUJKWnhSM0hGVEV1NEw0aHJpQXV1T3ZmZHVKTVFsQ3F2TEM2cXl5LzV5SnpUdmZGZHpvMTFUWEdpSWlJaUlpSWlJaUlpSWlJaUlpSXlEOHB0bVJwM0YxYXZLcDZtYmQ4UmMzS3FLK3RxeWVRV0xYYVRmNmFCS0cxNjhMVHI0OTZOalM0eUcvY0NKczJOMjFwaHEzSjRzSTJhTmtlajdmdWdPcVVnd0YyUWxVeEo5MEd1NExuYm8vMjJ1Skd1Z002N2VjM1pNaUc1MHczazl0anpGN1lGMjUxd1g3N0EzVERnYWc4Q0szRzlFQXk3UE53eVA0QXZkQVhsZjB3WU16ZzBGQXM3QTlEdi8wQmtzUERSNkx5S0J5cjNEb09KK3dQTUsvekpLZEtiMzFxNUxSL0JzNjZ6RDkzSGk2VW1vdkZhMkQwMHBpNytOaGxEd3JsOXVjQVY2NWVjeFYvZlh3aU9QRDQvTUtOdnU2YnQ2RCt0cHY4TzhHbHg5MTd2eTRYNEw2TCtOU0RoL0FvdjhoR0I3bEpCd004aG9tcDhxVS81dnRQU3ZWVGVHWS8vemxrWDFRYyt5WFpVajFkdmhRdG1relFzdUIvbnVGVk9pcG44ZXgvRXJ3R2Y4SENHNmdKcXlsNGF6M2Z2SVBwdHJJNVk5NS93S3NMYnVlUndpaVovTjhIL01rTWxScURsYVpjVUh6OEZQeGtldTNubTgrL0RXQyt0SWZON0ZjSCtZdjcxdlc5eDU5ejhUMG1JaUlpSWlJaUlpSWk4ai80QWFta1BuWU5ZM3Q2QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzI0JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCUGxCTVZFVWlJandoSVRvZ0lEa2hJVHNnSURnU0VpQUlDQTREQXdZQkFRRUZCUWtLQ2hJVEV5RWdJRGtnSURrQUFBQVRFeUVaR1N3REF3VUVCQWNiR3pBTkRSWWNIREVCQVFJSUNBOFVGQ01YRnlnU0VoOEdCZ29DQWdRZEhUUVdGaWNLQ2hJaUlqd2hJVHNPRGhrS0NoSUNBZ01lSGpVQUFBQUpDUkFBQUFBZkh6Y0hCd3dZR0NvVkZTVVFFQndaR1N3UUVCd0NBZ1FZR0NvVUZDTWFHaTRURXlJWkdTd1hGeWtZR0NzTURCWWVIalVmSHpjREF3VU9EaGdjSERJQkFRRUhCd3dpSWp3S0NoRUZCUW9oSVRvY0hERUVCQWNaR1NzVEV5RWNIREVoSVRrUkVSNFRFeUliR3pBQkFRRWlJanNWRlNVREF3WUtDaEVkSFRNSUNBNExDeE1lSGpVQkFRSUpDUkFiR3k4TkRSZ1dGaWNTRWlBTURCVVJFUjRYRnlrZEhUTVVGQ1FnSURnSEJ3d1ZGU1laR1N3TURCVWVIalVIQncwREF3WC8vLytEQi9WVEFBQUFBV0pMUjBScHZHdkV0QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMUlUvSXAwQUFBRmFTVVJCVkhqYTdkUlhUd0pCRkFYZ0JVVEJjdWcyWEYwUXhWNVJGTEQzQ25aZGUvZi8vd0ozMlJVaDRjSEVlSW5KK1Y3bXpIM1lPY2xPUmxHSWlJaUlpSWlJaUlpSWlJaUlpSWpvdjNJNFhWSkgxYm5yR3p6ZXhxYm04bUdMRno2aDgvMEJXSUtoc21rWVVnVWlyVUJiZTBkbkZPaFNTOU51aUJYb0FkeWFzY2JpUU8vWFVFMklGZWpyUjFJcnBsZ1VBNFBXMERXRW9GU0JZV0RFanFQQW1KWEdNVEVwVldBS21MWmpDcGdwQmo4d0c1RXFvS2JUVGp2T0FmUG1tc2tpcDRnVitMYXdpQ1hOV0pkWHNMcFdnd0xyRzhDbUdiYmcyVmJFQyt6c2VvQTlNKzBmSUtWSUZ6ak1GNEJFM296R0UzeWtTUmM0UGpHZW5kT3pZZzRqbTFGa0MyaStjK0RpMHRxb3dKVnV1Z1p1ZEQzMHUwLy96QzFRdU5Qc3pUMHE1QVRPZndDU2o2V2RmQUZIQUUrT0tuT3hPL0FNdkZTYml4VjROVzVkdk9STnZzQjd4VCtQeUJmNHFIVUJJaUlpSWlJaUlpSWlJdnB6bitQU0tBdlE4MFd4QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzI1JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCbFZCTVZFVWlJandnSURnU0VpQUlDQTREQXdZQkFRRUZCUWtLQ2hJVEV5RWdJRGtIQncwQUFBQVlHQ3NaR1N3REF3VUVCQWNiR3pBREF3VWNIREVCQVFJSUNBOFVGQ01YRnlnU0VoOEdCZ29DQWdRZEhUUWdJRGdPRGhrY0hESUtDaElpSWp3aElUc0tDaEliR3pBWUdDb2VIalVBQUFBSkNSQUFBQUFmSHpjV0ZpY2RIVE1ZR0NvVkZTVVFFQndaR1N3UkVSOEFBQUVoSVRzVUZDTWFHaTRURXlJWkdTd05EUllGQlFnZ0lEa01EQlllSGpVSUNBNEtDaEViR3pBTEN4UUZCUWtCQVFJSkNSRVZGU1VjSERJQkFRRUhCd3dDQWdRR0Jnc2VIalFjSERFRUJBY1pHU3NDQWdNUER4c1dGaVlVRkNRT0Roa0ZCUWdnSURnaElUa1JFUjRURXlJYkd6QUVCQWdmSHpZSUNBNFBEeG9pSWpzREF3WVpHUzBmSHpnQkFRSWhJVG9MQ3hNZUhqVU5EUmNhR2k0VEV5RUpDUkFiR3k4VEV5RVdGaWNSRVI0WEZ5a1dGaVlYRnlrWkdTd2FHaTBIQnd3SkNSQUJBUUloSVRvVkZTWVpHU3dORFJjTURCVU5EUmdlSGpVRUJBWVBEeG9mSHpjQkFRRUNBZ1FIQncwQ0FnTWRIVFFLQ2hFZEhUSVdGaWdTRWlELy8vLzRpWGQ1QUFBQUFXSkxSMFNHak40N1hRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFHL1NVUkJWSGphN2RUcFQxTkJHTVhoQVFHRlg2MnlpQ3lWVzdFQ1JSWnhSVkRCNGdZcUtDNGdzaFFWclJ2dUNtNm80UC90M0hKdGFtakNCM09IeEp6bnk3enozcVRudEdscmpJaUlpSWlJaUlpSWlJaUlpSWlJaU1pbWlvcTNsWlNXYmQ5Ukh0d3J5SW00eU44WkRkSjI3VjVmVkxvdFVGVU5OWHRxOTlaQmZZTy9hTFQzV0dDZmd3Sk5VT3paTXg2RC9mNmlHUTQ0eVAwamNaQVdMenZGNjJodHMyY1MyaDBXT0FRZHdkZ0pYZmJvNW5DUHd3Skg0R2d3SG9QajlqakJTWWY1cGlFUzZRM0dVOUJuajM1T256azdNQmc5bDRxN0xHTE0wSGt1K04rR0tCZURIK0dseXk3emgwZmdpajNMYmZMVmE2TmoxK3ZoeHJpeitKdTNTdUcyUDkyQmlTRi9tTHdMVTQ3aTc2V203ZHRPWmVlaW1ablo5VzFpanVxMGsvejJmdnV4ejkvZnNIOEFEeDNFZXd1RDhPaHhnU2NaZU9LZ3dGT1lmdVlWZXZJY2t1SG5qMEZMWTk3OVJYSXhyOXJMMFBQVFVWNmw4eGV2ZVJQMDhXcVlleHQ2Z1hmdy9xOUZKdmZqcTRVUG9lZWJqN0FVeTFrMnB2Y1RmUDVpekhqM1Y3NGx3aSt3UXI0cXUybjIvNGxIYkEyK0wvN3p5Mit1Y2tNQjgyTytOWHY1dWVvZ3Y3QzJ0Y3l2MGI0dGl4Y1JFUkVSRVJFUkVSSDV6L3dHU1FNM0k5dFRRT2tBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREFtS3hKY0FBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd1YzYXE0QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycxLzI2JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCdjFCTVZFVWlJandpSWp3ZEhUUVpHU3diR3k4Z0lEa2dJRGdTRWlBSUNBNERBd1lCQVFFRkJRa0tDaElURXlFZ0lEa1ZGU1FGQlFvQUFBQUpDUkVkSFRNWkdTd0RBd1VFQkFjYkd6QWhJVHNMQ3hNYUdpNGNIREVCQVFJSUNBOFVGQ01YRnlnU0VoOEdCZ29DQWdRTkRSY0tDaEVhR2k4aElUa2RIVFFRRUIwQUFBRUVCQWNnSURnS0NoSWhJVHNPRGhrS0NoSWJHeThMQ3hRaUlqd1NFaUFVRkNNZUhqVUFBQUFKQ1JBQUFBQWZIemNMQ3hNZkh6WWhJVG9DQWdRSkNSQVlHQ29WRlNVUUVCd1pHU3dCQVFJY0hESWJHeThiR3pBVUZDTWFHaTRURXlJWkdTd1ZGU1lZR0NzZ0lEa01EQlllSGpVVEV5SWRIVE1aR1MwZUhqWWNIRElCQVFFSEJ3d1dGaWNGQlFnSEJ3MGNIREVFQkFjWkdTc1BEeHNURXlJUkVSNExDeE1CQVFFUkVSMGJHekFjSERFUkVSMGlJanNWRlNVREF3WUNBZ01hR2k0WEZ5a0lDQTBkSFRNSUNBNExDeE1lSGpVTURCVVRFeUVCQVFJSkNSQU5EUmdZR0NvUkVSOFhGeWtSRVI0U0VpQVdGaWNWRlNZVUZDUWdJRGdZR0NvWEZ5a1NFaUFZR0NzSEJ3d09EaGdmSHpjWkdTd01EQlVlSGpVZEhUUVdGaVloSVRvVUZDTUVCQWdEQXdVRUJBY0dCZ3NVRkNRU0VoOFVGQ1QvLy8vWmR5OVNBQUFBQVdKTFIwU1VmMmRLRlFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQUhuU1VSQlZIamE3ZFhYVTVOQkdNWGgvU0tJeG9JL0JBdllVQXhHSlNDV1JJMmlZTUVBOXFoZ1JWQkE3SWdWRmJIMzlnKzdTZFlZUisrY2IyZWNPYy9OZC9hOXlIbVQyU1RHaUlpSWlJaUlpSWlJaUlpSWlJaUl5SDhwaUV3cksvZldOcjFpeHN6b3JObHo1aGJySytkaFZjMzMwMTlkUThHQ2hZWEJvc1Z1RUszMTBWKzNCSll1Vzc2aUhsWkc4cE5WMExBNjFyZ216dHAxSGhaWUR4V0JmVFlsb0RrM2FJRU5yYm13RVRhRjM3OTVDOGtnbjVycVNXMjF6MjJrdHVjSDZSM3NESCtCTnRqbDRtNW9OeWJXUVlNYjdObTdML3dGOWtPbml3Y2dZMHdHdXNLdi9TWFMzZDNqNGtFNFpNeGhxRFhCa2N6Ull6N1h5RG1lNVlTOURmWXVOcDQ4bGZzVzlsWjc3ZTg3RFdjS244Tlo5enZBT1gvMXNmTlIxM2ZCRnZkZkhDZ2Z2QlFuMitlcC92TFFNSXdNNVhNenBLN2sweWhjOWROLzdicDkxemR1Rmc2M0lPSG1TWHNkUE5RSHQ4ZmdUdG5QNHpqY2RmRWUzUGV3d0FNWUhnMkt4NGN3Nk9Jam1BaS8vekVrbjVTY244S2tpODlnS3ZUK2RBM1AwNldEbmpGZXVGZ0ZMME5mWUFKZS9UNTVUYXJ3RnpCbHIwYm8vYmFPOFVUUkd6dDUyOC9JdS9jbTlxR0RlRXY0Qy9SU3FpNDM2ckloK3pGbGZ3OHF3Kzgzbi81Y3dMUjl6aCsrdEh2by83dld6cS9mdmc4RS8vNUNJaUlpSWlJaUlpSWlJbUw5QUxJMlJsL0wvejlYQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzI3JywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCUkZCTVZFVWlJandnSURnU0VpQUlDQTREQXdZQkFRRUZCUWtLQ2hJVEV5RWdJRGtORFJZQUFBQU9EaGdaR1N3REF3VUVCQWNiR3pBY0hERUJBUUlJQ0E4VUZDTVhGeWdTRWg4R0Jnb0NBZ1FkSFRRV0ZpWU9EaGtLQ2hJVkZTWUtDaElpSWp3aElUc2lJandKQ1JBTEN4TWVIalVBQUFBSkNSQUFBQUFmSHpjVUZDTURBd1VmSHpjWUdDb1ZGU1VRRUJ3WkdTd2VIalFCQVFNWEZ5a2FHaTRURXlJWkdTd0pDUThORFJjWUdDc2dJRGtNREJZZUhqVVVGQ1FDQWdNY0hESUJBUUVIQnd3Z0lEa1JFUjRjSERFRUJBY1pHU3NSRVI0aElUa1RFeUlmSHpZVUZDTWlJanNWRlNVREF3WUNBZ01PRGhnaElUc2RIVE1JQ0E0TEN4TWVIalVURXlFQkFRSWJHeThnSURnWkdTMFdGaWNoSVRvSEJ3d05EUmNBQUFFWkdTd0hCd3dNREJVTkRSZ2VIalVjSERJUER4c0hCdzBYRnlrREF3VUpDUkFmSHpmLy8vOGpoQWJFQUFBQUFXSkxSMFJyVW1XbG1BQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFGcVNVUkJWSGphN2RaWFU4SlFGQVRnaUlMb0tnb1dSTUFBS21KSGJLRFlFTEdCSFJ2MnJ2Ly9Cd2hqSmduNDRJakQ4V1cvRis3ZE81TTlZU0FUUlNFaUlpSWlJaUlpSWlJaUlpSWlJaUw2VVoybHZzRnFhN1EzbFRiTk1HdVI2RzkxYUcxdDdmOHlnTk1GZEhSMmRidUJIbytpOUhwMVBzQXZNRUFmWUZHTG53RXY0RE1mQkVQb1YydmZQekNJOEZkTndJMmhpT2xrR0NPakFsL0FHREN1TFNlQVNlTWdPb1dZUUgveFBqR3RMV2VBV1QwUHptRmVvbC94eE9NSmJia0FMT3A1RWt1UjZxNVl0ZVVWck9vL3VqVUhVc0w5NjJsZ1E5OWw0RWo4NFdLL3Q1bXlBbHY2ZHR1RkhjbjYzV3dPMk1zYXdUN1NCNEw5aDBmRnArN3hpUkZFck1qSTFhdjVVeUIwWm83eVFGUnVnQXlRaTVVOWMxVWJRbkw5U1NCOFhoNWRBSmRpL1FVSHJnb1YyVFZ1NVA2RGZ1QzJJbEp6dUJQclYrNkJCK01WNExFVVBRSFBjZ084bEwwQk9VdVJIWGlWRytEdCt3RHZ3SWZjQUVSRVJFUkVSRVJFUkVSVWM1L1JCaVI4eHgyZkxnQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01DWXJFbHdBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREJYZHFyZ0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMS8yOCcsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQnVWQk1WRVVpSWp3aElUb2NIREVaR1N3ZUhqVWlJandnSURnU0VpQUlDQTREQXdZQkFRRUZCUWtLQ2hJVEV5RWdJRGtiR3k4SUNBNEFBQUFBQUFBQ0FnTVFFQjBnSURrWkdTd0RBd1VFQkFjYkd6QVNFaUFFQkFZZUhqVUJBUUlJQ0E4VUZDTVhGeWdTRWg4R0Jnb0NBZ1FkSFRRWkdTMERBd1VVRkNRZUhqUUxDeE1JQ0E0aElUc0tDaEloSVRzT0Roa0tDaElJQ0E4QkFRRWJHekFaR1N3ZUhqVUpDUkFBQUFBZkh6Y2lJanNDQWdNYUdpMFlHQ29WRlNVUUVCd1pHU3dlSGpZTkRSY05EUmdVRkNNYUdpNFRFeUlaR1N3aElUb0hCdzBaR1NzUkVSNFlHQ3NNREJZZUhqVUxDeFFYRnlraElUb0hCd3dCQVFFY0hESUhCd3dmSHpjRkJRZ09EaGdaR1MwV0ZpZ2NIREVFQkFjS0NoRWhJVGtURXlJVkZTUUdCZ3NiR3pBVkZTVURBd1lDQWdNUkVSNEZCUW9YRnlnUER4b0FBQUVkSFRNTEN4TWFHaTRURXlFQkFRSUpDUkFiR3k4TURCVWRIVE1MQ3hRY0hESVhGeWtEQXdRVEV5SVVGQ1FnSURnRkJRa0hCd3dKQ1JFZkh6WWJHekFWRlNZVUZDUUVCQWNpSWp3TURCVU5EUmdGQlFnV0ZpY0hCdzBkSFRJREF3VUVCQWdRRUJ3Zkh6WVhGeWdnSURnYkd5OFZGU1VZR0NvZEhUVC8vLzlVaVI0TUFBQUFBV0pMUjBTU2xnVHZJQUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMUlUvSXAwQUFBSHVTVVJCVkhqYTdkYm5WOU5RR01meGF5VlFRUXY5T3JBSWdyUldIRVZSVzFGeDRFQ0dVT3ZHaGRTRmlvcGIzSHZQLzlpa1NhVkhmWHR6anNmZjUwMmU1K2JGNzJtVG04UVlFUkVSRVJFUkVSRVJFUkVSRVJFUitTZk5pc3l1Y2tKTHE2Nkp6cW10bXpzdlZsNm9iNGdEOHhjc0RDZC9VU08reFFsL29Tbm9XZEljUm42a0JaYTJ0aTFyaDJUS1cxZ2VKNzJpSTFhL0VsYXREbUdBTlZEalhlNU1KNnoxRnRiUnRkNDdPdTRFRyt6bmI0eVQ5VyszVER1NVRjWjBieWJybjlvQ1RmWUgyQW85UWJrTnRodXpBM2I2ZlRQMDJoOWdGK3dPeWoydzE1aStIUHY4dmg4RzdBK1FHaHdzNzdZaDJPOGVobUhFYS9NSEtLVHNEekRqWUJlSHZMdmg4QkZ5UjBlT3RkWlJPQjVtL3VnSjZDOVYxU2Y5eDBCTElzVDRVd08xY0xwVU9tZVN3WU5vN0d4WThkM2pSVGczN2pmbjRjTEZqbGppMGdUSjBYRHlMemU0UC9kSzhOeTlDdEZNcVhKM2FEU01lR2Z5R2x5L1VXNm40R1pRM29MYklRemcvdVhGT3pQdjNqSHVscHQ3MEdZLy96NWtIMVQwMHhRclR0bmZpUGxHSHVZckZ4N0I0NkRzaFNmV0IzajYreXZ2R1V6NVZhVEE4eGZXQjNnSnJ6cC9xWExmQmE5aE9PV1l2cDQwdkxHZWI5NVNLZUt1dkh2dkZza1AzbGZaUi92NUp2M0hBT2JUMEVTcG1mNGNRdjdmZmZuNmJmTDdEL3ZYWDBSRVJFUkVSRVJFUk9ULzhCTVJkRVVJb2F2NE53QUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01DWXJFbHdBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREJYZHFyZ0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMS8yOScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQnJWQk1WRVVpSWp3Zkh6WWFHaThhR2k0ZUhqUWlJandnSURnU0VpQUlDQTREQXdZQkFRRUZCUWtLQ2hJVEV5RWdJRGtYRnlnR0Jnc0FBQUFGQlFnVUZDTWlJandaR1N3REF3VUVCQWNiR3pBaElUc01EQllLQ2hJaElUc2NIREVCQVFJSUNBOFVGQ01YRnlnU0VoOEdCZ29DQWdRZEhUUVBEeHNEQXdZV0ZpY2VIalVmSHpZWEZ5a0ZCUW9LQ2hJT0Roa2RIVE1BQUFBRUJBZ2hJVG9JQ0E0QkFRRWVIalFlSGpVQUFBQUpDUkFmSHpjUUVCMGRIVElBQUFFUkVSNFlHQ29WRlNVUUVCd1pHU3doSVRvR0Jnc1VGQ01hR2k0VEV5SVpHU3dHQmdvRUJBY0xDeFFZR0NzZ0lEa01EQllKQ1JBSUNBNGNIRElCQVFFSEJ3d2FHaTRiR3pBY0hERVpHU3NZR0NvSEJ3MGhJVHNpSWpzTEN4UWFHaTBoSVRrUkVSNFRFeUlIQncwWUdDc2ZIemNIQncwVkZTVUNBZ01lSGpVZEhUTUxDeE1lSGpVZ0lEZ1BEeG9CQVFNTURCVU5EUmdURXlFQkFRSUpDUkFiR3k4aElUb2JHeThZR0NvWkdTMGZIemdoSVRvUkVSNFhGeWtGQlFnVUZDUWdJRGdnSURrTkRSY0hCd3dhR2k0VEV5RVJFUjBWRlNZWkdTd0RBd1FGQlFrZUhqWUtDaEVmSHpZVEV5RURBd1VPRGhuLy8vOEtjNHhpQUFBQUFXSkxSMFNPZ2dXemJ3QUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFIc1NVUkJWSGphN2RiWFZ4TkJGTWZ4c1lRSVdQSlZSTkVnYWd3SVVRaElLQmF3QzBaVXJCZ3JSYkNCSmRqQkxsai9aMmV6RzR4SGZkdzVSOC92ODdMMzNubTRkOXZzR2lNaUlpSWlJaUlpSWlJaUlpSWlJaUwvcEVXTGx5eU5PT3RXRmwxV1hsRzVmTVhLSUkrc2ltR3RYbFBscHYvYWFuenIxaGZ5bWcxQnpzYTRpLzYxbTZCdTg1YXRDZGlXOUFyMTBMQzlzU20xQStwZERMQVRvdDd0ampmYlU3YkhsalN0WmQ1QzJ5N2FNK0gzNytpa3kzL2M0Z25TM2Nic2hwUy90R2N2KzhJZm9BZDZnM0EvSERDbWp2VEJvSENJV1BnREhJWWpRWGdVamhuVFIzOXg3VGp0TmFFUGtNeG1Ud1RoQURRYWMvSm4xMU9RRFA4U0xEZzl5SmxJNFNVNDZ4ZTY3ZnR4emwzLzgvMXd3UjR2d3RBbHI1QzdiTGVDSzY3YVg3MVdBZGU5cU9vR3hJWkhSb1pIY1RkQWJxd0Jibzc1eVhobGNXY2NjSFVMSnV6VHhxM2J4ZlRPM1hzMkg1eHNtb0lXQiswajl4L0F3MGVscGZ6MDR5ZFB2VTB5L2N6QkFNL3Qzdi9pajkvZUJDOGQ5SitCcnRtUy9GVW1FK3lFRS9BNi9QNzVhdDdrU3d0djRaMGZ2WWVlOEFmNEFCOS9LZVRtbUcvemdrOXo5T1hDSDJBU3Bwb1hqSnZDNS9EekYzc2w3TnVZRGIrL0dhVlVyYTNFaDZDenRkeG1YeDMwTjk5K0c4RE1mdS8wNG5rWDUvOFhIYW5vekxTN3YySVJFUkVSRVJFUkVSR1IvOXdQWlNOR05lZ1JhK0FBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREFtS3hKY0FBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd1YzYXE0QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycxLzMwJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCdVZCTVZFVWlJandoSVRrYkd6QWJHeThnSURnZ0lEZ2FHaTRZR0NzY0hESWlJandoSVRvUkVSOEVCQWNBQUFBREF3VVNFaUFoSVRvZUhqUUxDeE1CQVFFRUJBY1VGQ01IQncwRUJBZ2VIalViR3pBQ0FnTU1EQllpSWpzT0Roa0hCd3dZR0NvWkdTd0lDQTRJQ0E0aUlqd2hJVG9FQkFjUUVCMGVIalVnSURrWkdTd0dCZ29VRkNNZkh6Z0JBUUVIQnd3aElUc0dCZ3NmSHpjREF3VUNBZ1FnSURrWkdTd1dGaWdXRmlZV0ZpY0ZCUWtDQWdRVEV5RVdGaWNVRkNNZEhUUWJHeThSRVIwZEhUSU1EQlVkSFRNTEN4UVhGeWdPRGhnVEV5SUZCUWdGQlFrUUVCMGJHekFLQ2hFQUFBRWhJVHNmSHpjTURCVU9EaGtORFJnZkh6WVZGU1VDQWdNU0VpQU1EQlVnSURnUER4b2RIVE1CQVFJT0Roa0xDeE1SRVI0Y0hERWZIemNhR2k0WUdDb0pDUThORFJjUER4c1RFeUlRRUJ3TkRSY0FBQUFoSVRvY0hERUtDaEljSERJZEhUUVlHQ3NIQnd3Q0FnUUpDUkFORFJnYkd6QUFBQUFLQ2hJSEJ3MEhCd3dVRkNRUkVSOFhGeWtQRHhzSUNBNEJBUUlmSHpjZkh6WURBd1lQRHhvWEZ5Z0VCQVlFQkFjVUZDTVhGeWtJQ0EwSkNSRURBd1VJQ0E0WkdTMFpHU3NPRGhnZEhUTVNFaUFlSGpYLy8vODBQRExSQUFBQUFXSkxSMFNTbGdUdklBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFJSFNVUkJWSGphN2RiblV4TlJGTWJoalVZa2daOEJLd0xXSk1JS0lRaENVSWdJS3FDQ1BTaFdiQ0QyRnNXT3ZiZi8ySHV6bTJIODZEaTdNenJ2OHlIbjdQc2g5K3pPM1pzNGpvaUlpSWlJaUlpSWlJaUlpSWlJaVB3TElnc1dSbjhMRmxVc3JveUZ0WHE4cWhwalNhS21uTlF1WFdhQzVTdkNHU0d5RXQrcU9pOVpYZThIRFkxaERMQUcxcTZMUnRkdmdJMUpHNlRTc0ttcDJkME1MU0dzMzVxaExXNmJiRHRVMmlZQkNWdTNkTkM1TmZnQnVxRGI2M0xRWTBweUc5dXpwYUFYK29JZklBODd2SzRmZHBveUFJTmVzQXQyQnovQW5xR2hpTmYxd2JBcFBkNkRzRWJZRy93QTh3Wmh3SlI5c045UFJoazdFTTdheWRSQjl4QWN0djBScVBYakJqZ2F6Z0RIN0Z0ZkdDOGRQTWZoaEI5UHdNa1FCemgxdW5TN1o2QjhBcDZGYytFTU1IbitRc3RGcUxiUC9oTDR1OUs1N0o4TUlabnkzcnBwYVBLVEsxQVg0Z0RKZG1hdU9zNHdYUE9UNjlBYzlLb3gxNzFSN3MzK3YrazQzWERMRDI2VER2NjI3M0MzM044ckhZcjNZY0s3YmkzeUlQQUJuSWQwWnYxMmxreU5lU1lkakhqWDVreDhGUHdBajZIWDY1N0FxSzFQd2JVMTlvem5MNElmWUs2ZVRKWFphcW1wQXNWK20wd1dlR20yWWZ3VlRBZS92dU84bmpHSDBKdTM1cVA0emt2ZW0vYkR4MC93T1p4ZmdvbzI3dy9ZN0pkeThqVnRyOGUrUmY3bWEvL0U5OXlQdlBzek9SODBkdVhIY3lIOURvbUlpSWlJaUlpSWlJajgvMzRCUEY1Q1UzOFhBTGdBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREFtS3hKY0FBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd1YzYXE0QUFBQUFCSlJVNUVya0pnZ2c9PSddLAoKWycxLzMxJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFCTDFCTVZFVWlJandoSVRrYkd6QWJHeThnSURnaElUc2dJRGtoSVRvUkVSOEVCQWNBQUFBREF3VVNFaUFoSVRvUUVCd1VGQ1FIQncwRUJBZ2VIalVpSWpzRUJBY09EaGtIQnd3WUdDb1pHU3dJQ0E0SUNBNGlJandSRVI0Zkh6Z0JBUUVIQnd3R0Jnc2NIRElmSHpZWUdDb0tDaElaR1N3V0ZpZ1dGaVlXRmljRUJBY1VGQ01kSFRRYkd5OFJFUjBDQWdRWEZ5Z09EaGdXRmljVEV5SWhJVHNaR1MwTURCVWRIVElhR2k0aElUb2ZIemNaR1N3TURCVU9EaGtWRlNVQ0FnTVNFaUFpSWp3QkFRSU9EaGtmSHpZZkh6Y1VGQ01KQ1E4ZUhqUVRFeUlMQ3hRQUFBQWhJVG9jSERJTkRSZ2RIVFFDQWdRSkNSQU5EUmdIQncwQ0FnUUhCd3dSRVI4VEV5RVhGeWtLQ2hFZkh6WUNBZ01BQUFBWEZ5Z0VCQVlVRkNNYUdpNFpHUzBkSFRNU0VpQWVIalgvLy84anRkVm1BQUFBQVdKTFIwUmt3dHE0Q1FBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQUZTU1VSQlZIamE3ZFpaVDhKQUZBWGdvcXpIZlYrcUJVVkZFUlZYc0NyZ2pyZ3Jycmo3Ly8rREhlc1VUWHd6dVkzSitWN201RDYwcDVsMFdzTWdJaUlpSWlJaUlpSWlJaUlpSWlLaS95RFEwQmo4T1FtRlEySjNqMFJqY0RRMXQzd2J0cUpON09uYjhhV2oweHQyZGNzVjZBRjYrNExCL2dGZzBOVERJWWdWR0xZUWo2Z1FTZ0FqS3BpanlUSElGUmdISnR5VUFpYlZPdVZ1aUZTQk5ERHRwZ3d3bzlaWjJRSnoyV3pBVGZQQWdsb1hIVXR5QmVxV2dSV2RjOElGelB5cXZRYXNld1BwQWh0cTB3dkZrcjhGTnJlMmZTdXdrMHZ1N2dHeGZiOEtmQ29EQjc0V01CT29ISW9YS05uMmtjN0h3SWw0QWZNVVp6cWZlNGVpNUJaYzRGTC9lbFJoNlY4Q3dRSlh3TFdiYm9CYlBSVXNjSGNQS3hvMmpIeTVnRnJHaHdMR1E4VTVoQjdWTjdqMjVBMUZYOFBudVB2OXJiN1VaOExud0d2cUxXMi9tMysvRUJFUkVSRVJFUkVSRVJIOTVnUFRoU0lRanE5TmFnQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01DWXJFbHdBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREJYZHFyZ0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMS8zMicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQm0xQk1WRVVpSWp3aElUa2JHekFiR3k4Z0lEZ2hJVG9SRVI4RUJBY0FBQUFEQXdVU0VpQWhJVG9TRWlBSUNBNERBd1lCQVFFRkJRa0tDaElURXlFZ0lEa0hCdzBFQkFnZUhqVVpHU3dFQkFjYkd6QU9EaGtIQnd3WUdDb1pHU3dJQ0E0aUlqd2NIREVCQVFJSUNBOFVGQ01YRnlnU0VoOEdCZ29DQWdRZEhUUWZIemdIQnd3aElUc0dCZ3NjSERJS0NoSU9EaGtLQ2hJWkdTd1dGaWdXRmlZV0ZpY0FBQUFKQ1JBQUFBQWZIemNVRkNNYkd5OFJFUjBZR0NvVkZTVVFFQndYRnlnT0RoZ1dGaWNURXlJVUZDTWFHaTRaR1N3TURCVWRIVElZR0NzZ0lEa01EQlllSGpVaElUb2ZIemNaR1N3TURCVU9EaGtCQVFFSEJ3d1ZGU1VDQWdNU0VpQWlJandjSERFRUJBY1pHU3NCQVFJT0Roa2ZIellSRVI0VEV5SWZIemNVRkNNSkNROGVIalFpSWpzVkZTVURBd1lMQ3hRZEhUTUxDeE1lSGpVaElUb1RFeUVCQVFJSkNSQWNIRElORFJnZEhUUVJFUjRYRnlrQ0FnUU5EUmdVRkNRZ0lEZ0hCdzBDQWdRSEJ3d1JFUjhLQ2hFVkZTWWZIellDQWdNTURCVWVIalVFQkFZRUJBY2FHaTRaR1MwREF3VWRIVE1TRWlELy8vOXFxc3NoQUFBQUFXSkxSMFNJYTJZV1dnQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFIWVNVUkJWSGphN2RacFY5TkFGTWJ4cVJiNFY4RW9LaTZJUVVGRUNxSmlXMEZVQkJSVWpCdmlYamR3cVR1aWlDc3U0TmQyMHFRS0h5RGo4Zmo4WG5SdWJsNDhOM015T1RWR1JFUkVSRVJFUkVSRVJFUkVSRVJFL2dXcEZTdlRmeSs5cXJvR0s3TnFkYVdUcnExYjQ2MWRWNy9lemROdklMYXhJZXBzeXNTTnpWdGNETEFWR3JlbDAwM2JvYzRQRzgwN1lHZEw2NjQyMk4yZWZQNGVqNDZxc01oMlFsZFk3SVhhY0pKc04reExmb0Q5Y0NDcWV1Q2dYUnB5NU1zN1liSnRGQTRsUGtBdnhQdmNCNGZ0MGc5SDRudEhvU254QVk0TkRLU2k2amdNMm1VSWh1TjdnM0FpOFFIK09Ba2pkbWtmSFQwVmQwN0RHVGZaL3RqWjRCeWNYOTd0dXNCRjM4MEFsOEpUUDM1NVlsbnp5bFc0NWlZL0d1RDZqWnRMV3FsYkhoUWQ1WnZidy8xMzdrTE52VXJqL3VTVTNaSkpWL21SSWp5SXk0ZjJzOGlqeDI3empkOUpvVlF1bmp5RlozMXVVaWVDNEhtbGZnRXZ3L1VWVEUwN2V2Mk4vNXA4cFo2SlBvcHZJUC9XVWJ3MXk3dHNYTTdoMmI4RXBReU5KWGY1NWozVVI5VTBmTERMUndnYzVwdFBuL0dxN2JkM3JEaE9Mbnp4dnNCTTkyL3p5VS9RV3JCSDd1czMrNU1iQ3E5bldhclp3UjU4NzRpeTVuNlVMeGVjRDJETVlzL1AzbURlMWNFVEVSRVJFUkVSRVJFUitlLzhBalJUT2QrQmhES3RBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdKaXNTWEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUZkMnF1QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzEvMzMnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJFVkJNVkVVaUlqd2hJVGtiR3pBYkd5OGdJRGdoSVRvUkVSOEVCQWNBQUFBREF3VVNFaUFoSVRvSEJ3MEVCQWdlSGpVT0Roa0hCd3dZR0NvWkdTd0lDQTRJQ0E0aUlqd2ZIemdCQVFFSEJ3d2hJVHNHQmdzY0hESVpHU3dXRmlnV0ZpWVdGaWNVRkNNZEhUUWJHeThSRVIwWEZ5Z09EaGdXRmljVEV5SU1EQlVkSFRJaElUb2ZIemNaR1N3TURCVU9EaGtWRlNVQ0FnTVNFaUFpSWp3QkFRSU9EaGtmSHpZZkh6Y2FHaTRZR0NvVUZDTUpDUThlSGpRVEV5SUxDeFFBQUFBaElUb2NIRElORFJnZEhUUUNBZ1FKQ1JBTkRSZ0hCdzBDQWdRSEJ3d1JFUjhURXlFWEZ5a0tDaEVmSHpZQ0FnTWdJRGtBQUFBWEZ5Z0VCQVlFQkFjVUZDTWFHaTRaR1MwZEhUTVNFaUFlSGpYLy8vOEVad1psQUFBQUFXSkxSMFJhQTd1bG9nQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFFc1NVUkJWSGphN2RaSFR3SlJHSVhoUVVHUFl0ZVJvbUxGZ3FpSVhiSDNqbDMvL3g4Uk1yTHl6bXpNUjJMeVBvdkp5YnVhdTVpYjhUd0FBQUFBQUFBQUFBQUFBUEFmeEZwYTQ5SEJVcUt0WFRVZG5jbXdZSHo2THYzbzduRUhZNzFTWDM4OFBqQW9EZm5PWUdzNHBYU2lQakpaYWNRVmpJMUtZOEhLU2VPdVlHeENtZ3pXbERUdENzWm04dmxZc0dhbE9WZG9tbmxwSVRyWThRdUx4U1ZwT1R3WVc2bC85YVhWY25ob3hndXNyVytFQjJPYlc5czd1MUw3WG1ob2hvcTBIeDJNK1ZrZEhFWUdDK1ZpOGFpeGo2V1QzOEg2MktjNmErenoraDM0SzFpNzBHWG1aMTRwbFhRRVk5ZlNUYkJ1cFR0WE1IYi9vRlRibytjVktpVlZwMXpCMnROQjdjNTVmcWs5cXEvdVlPMHRIZnlBWGIySEJYTWZ1YytKNHBjZkVRQUFBQUFBQUFBQWYvQU5EK3NyZ1JJQmVGUUFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRrdE1Ea3RNRGhVTVRRNk1qUTZORGNyTURNNk1EQW1LeEpjQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3VjNhcTRBQUFBQUJKUlU1RXJrSmdnZz09J10sCgpbJzEvMzQnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUJUVkJNVkVVaUlqd2hJVGtiR3pBYkd5OGdJRGdoSVRvZ0lEa2hJVHNoSVRvUkVSOEVCQWNBQUFBREF3VVNFaUFoSVRvZ0lEa0ZCUWtURXlFSEJ3MEVCQWdlSGpVTkRSWU9EaGtIQnd3WUdDb1pHU3dJQ0E0SUNBNGlJandXRmljZkh6Z0JBUUVIQnd3aElUc0dCZ3NjSERJZEhUUUNBZ01aR1N3V0ZpZ1dGaVlXRmljSEJ3d0VCQWNVRkNNYkd5OFJFUjBRRUJ3Q0FnUVlHQ29YRnlnT0RoZ1dGaWNURXlJWkdTd1hGeWtjSERFTURCVWRIVElmSHpjREF3VWhJVG9aR1N3TURCVU9EaGtpSWp3S0NoRUZCUW9WRlNVU0VpQVRFeUVjSERFQkFRSU9EaGtmSHpZYkd6QUJBUUVmSHpjYUdpNFlHQ29VRkNNSkNROGVIalFLQ2hFVEV5SUxDeFFBQUFBTkRSZ2JHekFjSERJTkRSZ2RIVFFkSFRNQ0FnUUpDUkFIQncwUkVSOFRFeUVYRnlrZkh6WUNBZ01BQUFBWEZ5Z0VCQVlFQkFjVUZDTWFHaTRaR1MwU0VpQWVIalgvLy85cVN5R2ZBQUFBQVdKTFIwUnVJZzlSRndBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQUdIU1VSQlZIamE3ZFpYVHdKQkZBWGdRVUhRWSs5bEZVVlFSRkFVTElpZ3FOZzdLUGFPM2YvL0tzc0NRdlROZUluSitSNDJkdzRKZXpZN1RGQ0tpSWlJaUlpSWlJaUlpSWlJaUlpSS9nTlRSYVg1VzJpcHNzcmMzVlpkZzR6YXV2cVN1S0VSVFRKUDM0eWNsdGJpdkExQ0JkcUJqazZ6dWFzYjZORys0bDRJRmVpem85K21Ed01PWUxBUU8xMVNCWWFBWVdOeUF5UDUxT3JCcUZBQkwrQTBKaDh3bGsvSDRaOFFLakFaQ0ppTUtRaE01Y0pwWUdaV2FoTVdoSUE1WXdyUEk2QkVDMmlSY0hRQldEUldzU1VzUjJRTHJPakhnQ3NlTTFhcnNLK3BNaFJZMzlqTUxyYTJzM3RCdE1ETzd0NytBVkJ6cUxKSGNFS1RMcENWQkk2VWZnVFBoMVZaQ21nT0hGdVVFMGdGZFhFZ0ZBeWUvUFZkWTlIb2FYNCtBODdWQlVvRS92eXhMM0dWbjFQNm9TaGRRRjNEUDVBYlBiQVgvU1dRMmdNM3dLMHgzUUdKb2cra0N0dy93RjVkcFZRazZVTGFWNFlDNnZFNDg2cWZuak9YOUV0eEx2Y3pmTzAzOXB2bnJTU1dQQWN1M08vZTZJZjIreThpSWlJaUlpSWlJaUlpb3A5OEFrdmhMT1FVelRVTkFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd0ppc1NYQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNRmQycXVBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMS8zNScsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQS8xQk1WRVVpSWp3aUlqd0ZCUWdBQUFBQUFBQWZIellhR2k4VEV5SU9EaGtIQncwaElUc0RBd1VEQXdZSUNBMGRIVFFZR0NzUER4c1RFeUlTRWg4TURCVWNIREVmSHpZQUFBQUdCZ29oSVRrQkFRTUdCZ29JQ0E4Y0hERVdGaWNTRWlBVUZDTVFFQndLQ2hJZUhqVUVCQWdmSHpjQkFRRUpDUThhR2k0VUZDTVZGU1VVRkNRT0Roa0lDQTRCQVFJZ0lEZ2ZIemNEQXdVaElUc2VIalFMQ3hRSkNSQVpHU3dORFJjQ0FnTWhJVG9IQncwWEZ5a1hGeWtRRUJ3VkZTVUxDeFFpSWp3RUJBY0JBUUVnSURnZ0lEZ2dJRGthR2kwS0NoSUtDaEVWRlNZTkRSZ1ZGU1VKQ1JFaElUb0NBZ1FCQVFJZ0lEa0FBQUVYRnlrTURCUVVGQ1AvLy8vU2pvWURBQUFBQVdKTFIwUlU1QU9JcFFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQUVNU1VSQlZIamE3ZFhIVWdKUkVFYmhPNTdCSEFIQmhJb0tpZ3FZc3lJWU1ZZjNmeGVaVW1ybUJiaGRWdjNmcG0rdit0UnN4amtSRVJFUkVSRVJFUkVSRVJFUkVSSDVGNEkrQ0ZPR0FmMTBEQmdHREVZQlEzYjNoMGNZSFlOeHM0QUptSnlDdEZsQUJyTFRPZkpXOTJkbW1RdmNQQ3dZQlJSZzBia2xXRFlLS0pKYmNTNFZzaHFZM0Y4clVZNW1HZFpOQWphZ0VzMU4yRElKMktaYWkyWTlaR2ZYNFA0ZTdQKytEdURRSUNCTndwSC8rMEUrR1hCODRqMGdDNmRuZnpyL2czUHZBUmR3MlgxWDRNcjMvY1kxelZaM3VTbFJ2ZlVjY0FmMzhmWUFqNTREMmxDSXR5ZDQ5bnYvNVpXMzkzaHROZm1vZXczNGhLL2tYb1J2djU5QVJFUkVSRVJFUkVSRVJIcnVCM3BMRWtIVjVqL1BBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdKaXNTWEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUZkMnF1QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzEvMzYnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFnVkJNVkVVaUlqd05EUllBQUFBZ0lEa1FFQndURXlJaElUc2RIVE1CQVFJRkJRa01EQlViR3pBTEN4UWhJVG9RRUIwVUZDTVRFeUlSRVI0TEN4TU9EaGdaR1MwQkFRRWRIVFFQRHhvVEV5RVpHU3dPRGhnZEhUUU1EQlFXRmljWkdTMGZIemNURXlFS0NoSVJFUjBORFJjaElUc0JBUUlIQnd3TURCVVlHQ3NpSWp6Ly8vK1paWFRJQUFBQUFXSkxSMFFxVTc3VW5nQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFDa1NVUkJWSGphN2RaWERzSXdFRVZSTTdUUVRDaWgxOUQzdjBFY2dVRHdqMThrN3RuQVhGbWprWjBEQUFBQUFBQUFBQUFBQUFCbFY3RVAxYjhNcU5YZkdvcUFadlNoQkJCUXRvQ25wTlh1U0FNSzNaNGl3UGNMNldBWUNrYUtnTmNPakRPemlUTEFUYzFtMG9DNTJVSWFzRFJicVYvQVN3UENEcXlWQVp2TWtxMGc0UEVoMmZsOXVBTjU3UGxmbC9Cd0ZBYWN6cGZyTGZwOEFBQUFBQUFBQU1EUDNRRmRYd1d5SWJ5eG5RQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01DWXJFbHdBQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01Ua3RNRGt0TURoVU1UUTZNalE2TkRjck1ETTZNREJYZHFyZ0FBQUFBRWxGVGtTdVFtQ0MnXSwKClsnMS8zNycsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQXcxQk1WRVVpSWp3TkRSWUFBQUFCQVFJR0Jnb0xDeE1YRnlraUlqd0pDUkFnSURnUUVCd1RFeUlURXlFTEN4TUFBQUFMQ3hRZEhUTWNIRElDQWdRWkdTd1ZGU1FSRVIwZEhUSUxDeE1VRkNRVUZDUUVCQVlnSURrUUVCMFVGQ01URXlJTEN4UUFBQUVEQXdZY0hERUNBZ01iR3pBUER4b2lJanNmSHpjWkdTd0hCd3dNREJZaElUc0ZCUW9iR3k4V0ZpY1FFQjBNREJVYkd5OFBEeHNSRVIwVkZTVVpHUzBCQVFFZkh6WVRFeUVLQ2hJTkRSY2hJVHNCQVFJSEJ3d01EQlVZR0N2Ly8vL0JGSThLQUFBQUFXSkxSMFJBL3RsYzJBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFEZFNVUkJWSGphN2RaSlVnSkJGRVhSNGlHQ05GcGlBMHJSSS9iUzJJS0MrOStWS2NHa0ZrQTlCdmVNY3ZadlpHVDh5Q2dDQUFBQUFBQUFBQUFBQUFEN0xxZXQvRUhoc09nTStGYzZzZ1NVSzBHMVhEdVdUcksvZ3hBUWI0K25kZW5NR1JDZFN4ZldnRXVwNFE3SVdRT2EwcFV6SUR6QzY1WWpJR2tIbmFUYlUzK1ErZnpVSWhxT3NwK2Yzb1M5bTdFaklONGNpcmQzOTlLREx5QjRmSktlblFIUml6U3hCc1RTMUJvd2srYldnRmZwelJudy9xSGhweUZnOHlHcGZDV0xzQWs2V2M5UEx5SXR2NDBCUDZ2MXIrTlhDZ0FBQUFBQUFBRFlzVCtIWVF0dDA0MUVwUUFBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNQ1lyRWx3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURCWGRxcmdBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzEvMzgnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FCQU1BQUFBeEVIejRBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFHMUJNVkVVaUlqd05EUllBQUFBZ0lEa1FFQndURXlJaElUc2RIVFAvLy8reDlSTTdBQUFBQVdKTFIwUUlodDZWZWdBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQUE5U1VSQlZHamU3ZERCRFFBUkFBQkJOU2dCaVlwYy82VmNLSUVIWWFhQWZXd0lBQUFBd0d0aUd2TEdRR25kTngrb3F3OEVCQVFFamdrQUFNQWRmcUl3Q0hQMGhpNUhBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNUxUQTVMVEE0VkRFME9qSTBPalEzS3pBek9qQXdKaXNTWEFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPUzB3T1Mwd09GUXhORG95TkRvME55c3dNem93TUZkMnF1QUFBQUFBU1VWT1JLNUNZSUk9J10sCgpbJzEvMzknLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQU1BQUFEMDRKSDVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFybEJNVkVVaUlqd09EaGdCQVFJZEhUTWVIallCQVFJSUNBOGlJandQRHhzQUFBQVZGU1FmSHpjQkFRRUNBZ1FoSVRvTEN4UVVGQ1FZR0NvRkJRb0tDaElVRkNNaElUc0RBd1FaR1N3TEN4UU9EaGtURXlFRkJRa2dJRGdoSVRvYUdpNFhGeWdDQWdNVEV5RUVCQWdIQnd3TURCWUhCd3dNREJVQ0FnTWhJVG9XRmlnZ0lEZ2ZIelloSVRrYUdpOGVIalVMQ3hRT0Roa2hJVHNEQXdVWkdTd1lHQ29pSWp3VUZDUWZIemdRRUJ6Ly8vOEVyZllvQUFBQUFXSkxSMFE1MXdDVlFBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK01KQ0F3ZkxSVS9JcDBBQUFEV1NVUkJWSGphN2RmYlRzSkFHRVhoZ3VXd3FTQUlRbW10eVBsUWxZTWl2UCtUb1NUd0JtU0haSDAzbmJ0L0paMU1ab0lBQUFBQUFBQUFBQUFBQUFEY2lVTHh3UnNRbHNvVmIwRlZOVzlBOUZodmVBdWUxUFFHdFBUczJRVnRxZlAvZmVtcVp3MElZdlc5QVlsU1M4QnJGR1hueFpzVVdnb3VNbWxnRFFqZU5mUUdqRlQxQm93MThRWk1OZk1HMkgvQlhJbDEva0phT3VhdTh2emp2UGlVdmh3QjE2TjRhRHFLcndGcmJhd0IyNTIrTFFFWFAwcjMxb0JZdjliNUIvZWw5R2krbHY4OVRMdzd3UDQwQXdBQUFBQUFBRzdtQkMxM0Nldzk3eGt5QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTVMVEE1TFRBNFZERTBPakkwT2pRM0t6QXpPakF3SmlzU1hBQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T1Mwd09TMHdPRlF4TkRveU5EbzBOeXN3TXpvd01GZDJxdUFBQUFBQVNVVk9SSzVDWUlJPSddLAoKWycxLzQwJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FNQUFBRDA0Skg1QUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBcUZCTVZFVWlJandhR2kwQUFBQVNFaUFoSVRvRkJRa0RBd1loSVRvUUVCd1VGQ1FlSGpVQkFRRURBd1loSVRzUUVCd1FFQndoSVRrQ0FnUWNIRElLQ2hJVUZDTVVGQ1FIQnd3S0NoRWhJVHNCQVFNWEZ5a2dJRGdmSHpjYUdpNGZIellTRWlBT0Roa0dCZ3NMQ3hNSkNSQUlDQTRMQ3hRSUNBNExDeFFMQ3hRSkNSQU9EaGtEQXdZZ0lEZ2ZIellYRnlrR0Jnc0NBZ1FjSERJQUFBRVFFQndVRkNRRkJRZ1pHUzMvLy84QUIvdkNBQUFBQVdKTFIwUTNNTGk0UndBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQURYU1VSQlZIamE3ZGZiVHNKQUdFWGhZVnRCUUVwQlFZN2xmRkFVNVBqK2p3WWFHcDZBN0pDczcyWXUvOVZNTSsyRUFBQUFBQUFBQUFBQUFBQUFIa2xPVDliNTBYTytZQTE0VWRFNnYxUityVmdEWWxXdDg1T2E2cGJCYjlMNzM5cFEwL1BrV2NDSGF3ZXVBYTIyT3A2QWJxOFhYWmErbEhvQ3JnYktXK2VIb1ViZWdMRW0zb0NwWnQ2QXVSYmVnS1UrdlFGZjdwZHdvSlZwOG5lYUp1SC9JUHJ4Qk55TzRyVTE0UEl4aXIwQkRXMDhBWm5rVjF0dlFlemFnMHhwWi80cERYc2R2QUhSMFh3eENTZnoxUXdBQUFBQUFBQzRpek5vNXdpSHUxUGxMZ0FBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNQ1lyRWx3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURCWGRxcmdBQUFBQUVsRlRrU3VRbUNDJ10sCgpbJzEvNDEnLCAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FCQU1BQUFBeEVIejRBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFKRkJNVkVVaUlqd0FBQUFIQnd3S0NoSVVGQ01nSURnZkh6Y2hJVG9nSURnZkh6WWhJVG4vLy85RytEbjBBQUFBQVdKTFIwUUxIOWZFd0FBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrTUpDQXdmTFJVL0lwMEFBQUJNU1VSQlZHamU3ZE94RFlBZ0ZFVlJqQ0doZFFOSFlScHExcUZ6Vk9NTUZQRGpPUVBjNXVXbEJBQUFBUHpSY1F1c0RaeFhqUjdJclVkZlFXQ0hRQmxQOUM5TUJ6NENPd1FBQUpqekFweUZCN0h2WHhIMUFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU1TFRBNUxUQTRWREUwT2pJME9qUTNLekF6T2pBd0ppc1NYQUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNRmQycXVBQUFBQUFTVVZPUks1Q1lJST0nXSwKClsnMS80MicsICdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBTUFBQUQwNEpINUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQlJGQk1WRVVpSWp3Ykd6QVFFQjBIQncwRUJBY0JBUUVEQXdRR0Jnb01EQllXRmlnaElUb2RIVElLQ2hJQUFBQURBd1lWRlNVaUlqd1lHQ3NDQWdNQUFBQUlDQTRQRHhvU0VpQVFFQndMQ3hRQ0FnTWhJVHNaR1MwQUFBQUxDeFFlSGpRVEV5SU1EQlVmSHpjREF3VVNFaUFjSERFREF3WVZGU1FQRHhzTkRSY2FHaTRoSVRvVUZDTWdJRGdDQWdNZ0lEZ1VGQ1FYRnlrUER4b2NIREVPRGhrWUdDc0RBd1loSVRzZkh6Y2hJVG9KQ1JBS0NoSWVIalVIQnd3aUlqd05EUmdiR3pBRkJRb0JBUUlQRHhzYUdpMElDQTRoSVRvTkRSWWRIVE1MQ3hRY0hESUlDQThnSURrVEV5RVVGQ01CQVFJRkJRa2NIREVIQncwVkZTWVFFQndIQncwRkJRa1lHQ29lSGpZTURCWWdJRGdmSHpZaElUa05EUmNFQkFnSUNBOE5EUmNaR1N3ZEhUTVNFaUFiR3k4RkJRZ2dJRGtWRlNRU0VoOFRFeUVXRmljZEhUVC8vLytNY214bkFBQUFBV0pMUjBSclVtV2xtQUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQitNSkNBd2ZMUlUvSXAwQUFBRnFTVVJCVkhqYTdkYnBOa0pSSEFYd0UwclN6bFhHUkNRa1pZek1jNlpJWmdvaDgvcy9nT3VHT2g3ZzMyTHQzNGU2N1M5N3I3dnFkSlVpSWlJaUlpSWlJaUlpSWlJaUlpS2lQOFZXVTF0bmQ5UTdHMXhWcVc5MDQ1dW55WkR2Yi9ZQ3ZwYld0dmFPVG5PQzB5L2QzeFVBdW51c1MzL1FuTkFyZkEvNlFrRC9UMmQ0QUJpVUhUQUVSQ28rRHZzUWlzbzBtOSs4RWFWaVhzUkhLK01JTUNZNVlCeVkwT0pKd0MwNVlBcElhTEV4amZpTXlJQllNam1yMUJ5UTFQTjVZRUhtRmxnV0VWalNrMlZnUlhEQUt0WitKZXZBaHVDQVRTQ2xKMXZBdHVDQUhXQlhUL2FBdE9DQWZlQkFDNklaSEJxQ0E3TEFrUlljQXllQy9jbzQxUStDMlRNZ0t6bEFuUVBURitVOTVvL3dVcWo1S3BmTGY3NWZBemZocnl4di9oTTRwSTZoMGxHc2xPc1dDQlR1MG9iLy9zRURlRzFDL1Q4RFZLcGdQWTFsck5mRG9sUi9lWUJTUmJlOTlFajRHS3pPVTZsU1Q0bm5sOWUzZDZOSzlVUkVSRVJFUkVSRVJFVC8wZ2Zoc3lQMG9wMG1vd0FBQUNWMFJWaDBaR0YwWlRwamNtVmhkR1VBTWpBeE9TMHdPUzB3T0ZReE5Eb3lORG8wTnlzd016b3dNQ1lyRWx3QUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNVGt0TURrdE1EaFVNVFE2TWpRNk5EY3JNRE02TURCWGRxcmdBQUFBQUVsRlRrU3VRbUNDJ10sCgogICAgXSwKfSwKCl07IH0=",
  143. {"status":false}
  144. ],
  145. [
  146. "реакции",
  147. "CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0J3QsNGB0YLRgNC+0LjRgtGMVGhyZWVKUyjQvNC40YApCnsKICAgIHRoaXMu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciDRgdGG0LXQvdCwID0gbmV3IFRIUkVFLlNjZW5lKCk7CiAgICAgICAg0YHRhtC10L3QsC5iYWNrZ3JvdW5kID0gbmV3IFRIUkVFLkNvbG9yKDB4MzMzMzY2KTsKICAgICAgICB2YXIg0LrQsNC80LXRgNCwID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDQ1LCAxLCAwLjEsIDEwMDApOwogICAgICAgIHZhciDQvtGC0YDQuNGB0L7QstGJ0LjQuiA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKCk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCjQvtGC0YDQuNGB0L7QstGJ0LjQui5kb21FbGVtZW50KTsKICAgICAgICDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtSwgewogICAgICAgICAgICAi0YHRhtC10L3QsCI6INGB0YbQtdC90LAsCiAgICAgICAgICAgICLQutCw0LzQtdGA0LAiOiDQutCw0LzQtdGA0LAsCiAgICAgICAgICAgICLQvtGC0YDQuNGB0L7QstGJ0LjQuiI6INC+0YLRgNC40YHQvtCy0YnQuNC6LAogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vINCf0L7QtNC00LXRgNC20LrQsCDQuNC30LzQtdC90LXQvdC40Y8g0YDQsNC30LzQtdGA0LAg0L7QutC90LAuCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAicmVzaXplIiwKICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHNlbGYu0LjQt9C80LXQvdC40YLRjNCg0LDQt9C80LXRgCgpOyB9CiAgICAgICAgKTsKICAgICAgICB0aGlzLtC40LfQvNC10L3QuNGC0YzQoNCw0LfQvNC10YAoKTsKICAgICAgICAKICAgICAgICAvLyDQndC10L/QvtGB0YDQtdC00YHRgtCy0LXQvdC90L4g0L7RgtGA0LjRgdC+0LLQutCwLgogICAgICAgIGZ1bmN0aW9uINC+0YLRgNC40YHQvtCy0LDRgtGMKCkKICAgICAgICB7ICAgCiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSjQvtGC0YDQuNGB0L7QstCw0YLRjCk7CiAgICAgICAgICAgINC+0YLRgNC40YHQvtCy0YnQuNC6LnJlbmRlcijRgdGG0LXQvdCwLCDQutCw0LzQtdGA0LApOwogICAgICAgIH0KICAgICAgICDQvtGC0YDQuNGB0L7QstCw0YLRjCgpOwogICAgfTsKICAgIAogICAgdGhpcy7QuNC30LzQtdC90LjRgtGM0KDQsNC30LzQtdGAID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciDRiNC40YDQuNC90LAgPSB3aW5kb3cuaW5uZXJXaWR0aDsKICAgICAgICB2YXIg0LLRi9GB0L7RgtCwID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgICAgIHZhciDQutCw0LzQtdGA0LAgPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLQutCw0LzQtdGA0LAiXTsKICAgICAgICDQutCw0LzQtdGA0LAuYXNwZWN0ID0g0YjQuNGA0LjQvdCwIC8g0LLRi9GB0L7RgtCwOwogICAgICAgINC60LDQvNC10YDQsC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7CiAgICAgICAg0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L7RgtGA0LjRgdC+0LLRidC40LoiXS5zZXRTaXplKNGI0LjRgNC40L3QsCwg0LLRi9GB0L7RgtCwKTsKICAgIH07Cn0KCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQn9C+0LTQs9C+0YLQvtCy0LjRgtGM0KHRhtC10L3RgyjQvNC40YApCnsKICAgIHRoaXMu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgINC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC60LDQvNC10YDQsCJdLnBvc2l0aW9uLnogPSAxMDsKICAgICAgICAvLyDQodC+0LfQtNCw0ZHQvCDQuNGB0YLQvtGH0L3QuNC6INGB0LLQtdGC0LAuCiAgICAgICAgdmFyINGB0LLQtdGCID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQoMHhmZmZmZmYsIDEpOwogICAgICAgINGB0LLQtdGCLnBvc2l0aW9uLnNldCgtMC41LCAwLjUsIDEpLm5vcm1hbGl6ZSgpOwogICAgICAgIHZhciDRgdGG0LXQvdCwID0g0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YHRhtC10L3QsCJdOwogICAgICAgINGB0YbQtdC90LAuYWRkKNGB0LLQtdGCKTsKICAgICAgICAvLyDQodC+0LfQtNCw0ZHQvCDQutC+0YDQtdC90YwuCiAgICAgICAgdmFyINC60L7RgNC10L3RjCA9IG5ldyBUSFJFRS5Hcm91cCgpOwogICAgICAgINGB0YbQtdC90LAuYWRkKNC60L7RgNC10L3RjCk7CiAgICAgICAg0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0LrQvtGA0LXQvdGMIl0gPSDQutC+0YDQtdC90Yw7CiAgICB9Owp9CgoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCS0YvQsdGA0LDRgtGM0J/QtdGA0LLRg9GO0KLQtdC80YMo0LzQuNGAKQp7CiAgICB0aGlzLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIg0YLQtdC80YsgPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgtC10LzRiyJdOwogICAgICAgINGC0LXQvNGLLtCy0YvQsdGA0LDRgtGMKDApOwogICAgfTsKfQoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCU0L7QsdCw0LLQuNGC0YzQotC10LzRi9CS0YHRgtGA0L7QtdC90L3Ri9C1KNC80LjRgCkKewogICAgdGhpcy7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyINGC0LXQvNGLID0g0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YLQtdC80YsiXTsKICAgICAgICB2YXIg0YI2NCA9INCc0J7QlC7QvNC+0LTRg9C70YwoItGC0LXQvNGLINCy0YHRgtGA0L7QtdC90L3Ri9C1IikuY29kZTY0OwogICAgICAgIGV2YWwo0LzRg9GA0L7QvC5hdG9iKNGCNjQpKTsKICAgICAgICDRgtC10LzRiy7QtNC+0LHQsNCy0LjRgtGMKNCc0KAoKSk7CiAgICB9Owp9CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0KHQvtC30LTQsNGC0YzQl9Cw0LLQotC10Lwo0LzQuNGAKQp7CiAgICB0aGlzLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgtC10LzRiyJdID0gbmV3INCd0LDQsdC+0YAoKTsKICAgIH07Cn0KCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQktGL0LHRgNCw0YLRjNCf0LXRgNCy0YPRjtCg0LDRgdC60LvQsNC00LrRgyjQvNC40YApCnsKICAgIHRoaXMu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciDRgNCw0YHQutC70LDQtNC60LggPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgNCw0YHQutC70LDQtNC60LgiXTsKICAgICAgICDRgNCw0YHQutC70LDQtNC60Lgu0LLRi9Cx0YDQsNGC0YwoMCk7CiAgICB9Owp9CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0KHQuNC90YXRgNC40YLRjNCh0L/QuNGB0L7QutCg0LDRgdC60LvQsNC00L7QutCh0JfQsNCy0L7QvCjQvNC40YApCnsKICAgIHRoaXMu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciDRgNCw0YHQutC70LDQtNC60LggPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgNCw0YHQutC70LDQtNC60LgiXTsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAg0YDQsNGB0LrQu9Cw0LTQutC4LtC40LfQvNC10L3QuNC70LjQodC/0LjRgdC+0Lou0L/QvtC00L/QuNGB0LDRgtGMKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWxmLtC+0LHQvdC+0LLQuNGC0YzQodC/0LjRgdC+0LooKTsKICAgICAgICB9KTsKICAgICAgICDRgNCw0YHQutC70LDQtNC60Lgu0LjQt9C80LXQvdC40LvQuNCS0YvQsdC+0YAu0L/QvtC00L/QuNGB0LDRgtGMKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWxmLtC+0LHQvdC+0LLQuNGC0YzQktGL0LHQvtGAKCk7CiAgICAgICAgfSk7CiAgICB9OwogICAgCiAgICB0aGlzLtC+0LHQvdC+0LLQuNGC0YzQodC/0LjRgdC+0LogPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyINGA0LDRgdC60LvQsNC00LrQuCA9INC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGA0LDRgdC60LvQsNC00LrQuCJdOwogICAgICAgIHZhciDRgdC/0LjRgdC+0LogPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdC/0LjRgdC+0Log0YDQsNGB0LrQu9Cw0LTQvtC6Il07CiAgICAgICAgdmFyINC40LzQtdC90LDQntC/0LjRgdCw0L3QuNGPID0gdGhpcy7QuNC80LXQvdCw0J7Qv9C40YHQsNC90LjRj9Cg0LDRgdC60LvQsNC00L7QuijRgNCw0YHQutC70LDQtNC60Lgu0YHQv9C40YHQvtC6KTsKICAgICAgICDRgdC/0LjRgdC+0Lou0LfQsNC00LDRgtGMKNC40LzQtdC90LDQntC/0LjRgdCw0L3QuNGPKTsKICAgIH07CiAgICAKICAgIHRoaXMu0L7QsdC90L7QstC40YLRjNCS0YvQsdC+0YAgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyINGA0LDRgdC60LvQsNC00LrQuCA9INC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGA0LDRgdC60LvQsNC00LrQuCJdOwogICAgICAgIHZhciDRgdC/0LjRgdC+0LogPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdC/0LjRgdC+0Log0YDQsNGB0LrQu9Cw0LTQvtC6Il07CiAgICAgICAg0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDRgtGMKNGA0LDRgdC60LvQsNC00LrQuC7QstGL0LHQvtGAKTsKICAgIH07CiAgICAKICAgIHRoaXMu0LjQvNC10L3QsNCe0L/QuNGB0LDQvdC40Y/QoNCw0YHQutC70LDQtNC+0LogPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyINGA0LDRgdC60LvQsNC00LrQuCA9INC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGA0LDRgdC60LvQsNC00LrQuCJdLtGB0L/QuNGB0L7QujsKICAgICAgICB2YXIg0YHQv9C40YHQvtC6ID0gW107CiAgICAgICAgZm9yICh2YXIg0L3QvtC80LXRgCBpbiDRgNCw0YHQutC70LDQtNC60LgpCiAgICAgICAgewogICAgICAgICAgICB2YXIg0YAgPSDRgNCw0YHQutC70LDQtNC60Lhb0L3QvtC80LXRgF07CiAgICAgICAgICAgINGB0L/QuNGB0L7Qui5wdXNoKFvRgC7QuNC80Y8sINGALtC+0L/QuNGB0LDQvdC40LVdKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuINGB0L/QuNGB0L7QujsKICAgIH07Cn0KCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQlNC+0LHQsNCy0LjRgtGM0J7RgtC70LDQtNC+0YfQvdGL0LXQoNCw0YHQutC70LDQtNC60Lgo0LzQuNGAKQp7CiAgICB0aGlzLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIg0YDQsNGB0LrQu9Cw0LTQutC4ID0g0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YDQsNGB0LrQu9Cw0LTQutC4Il07CiAgICAgICAgdmFyINGANjQgPSDQnNCe0JQu0LzQvtC00YPQu9GMKCLQvtGC0LvQsNC00L7Rh9C90YvQtSDRgNCw0YHQutC70LDQtNC60LgiKS5jb2RlNjQ7CiAgICAgICAgZXZhbCjQvNGD0YDQvtC8LmF0b2Io0YA2NCkpOwogICAgICAgINGA0LDRgdC60LvQsNC00LrQuC7QtNC+0LHQsNCy0LjRgtGMKNCc0KAoKSk7CiAgICB9Owp9CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0JTQvtCx0LDQstC40YLRjNCS0YHRgtGA0L7QtdC90L3Ri9C10KDQsNGB0LrQu9Cw0LTQutC4KNC80LjRgCkKewogICAgdGhpcy7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyINGA0LDRgdC60LvQsNC00LrQuCA9INC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGA0LDRgdC60LvQsNC00LrQuCJdOwogICAgICAgIHZhciDRgDY0ID0g0JzQntCULtC80L7QtNGD0LvRjCgi0LLRgdGC0YDQvtC10L3QvdGL0LUg0YDQsNGB0LrQu9Cw0LTQutC4IikuY29kZTY0OwogICAgICAgIGV2YWwo0LzRg9GA0L7QvC5hdG9iKNGANjQpKTsKICAgICAgICDRgNCw0YHQutC70LDQtNC60Lgu0LTQvtCx0LDQstC40YLRjCjQnNCgKCkpOwogICAgfTsKfQoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCh0L7Qt9C00LDRgtGM0KHQv9C40YHQvtC60KDQsNGB0LrQu9Cw0LTQvtC6KNC80LjRgCkKewogICAgdGhpcy7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAg0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YHQv9C40YHQvtC6INGA0LDRgdC60LvQsNC00L7QuiJdID0gbmV3INCh0L/QuNGB0L7Quigi0YDQsNGB0LrQu9Cw0LTQutC4LdGA0LDRgdC60LvQsNC00LrQuCIpOwogICAgfTsKfQoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCh0L7Qt9C00LDRgtGM0JfQsNCy0KDQsNGB0LrQu9Cw0LTQvtC6KNC80LjRgCkKewogICAgdGhpcy7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAg0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YDQsNGB0LrQu9Cw0LTQutC4Il0gPSBuZXcg0J3QsNCx0L7RgCgpOwogICAgfTsKfQoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCf0LXRgNC10LrQu9GO0YfQuNGC0YzQrdC60YDQsNC90KDQsNGB0LrQu9Cw0LTQvtC6KNC80LjRgCkKewogICAgdGhpcy7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgJCgiI9GA0LDRgdC60LvQsNC00LrQuCIpLmZhZGVUb2dnbGUoImZhc3QiKTsKICAgIH07Cn0KCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQlNC+0LHQsNCy0LjRgtGM0K3QutGA0LDQvdCg0LDRgdC60LvQsNC00L7QuijQvNC40YApCnsKICAgIHRoaXMu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciBodG1sID0KYAo8ZGl2IGlkPSLRgNCw0YHQutC70LDQtNC60Lgt0YDQsNGB0LrQu9Cw0LTQutC4IiBjbGFzcz0idWstY2hpbGQtd2lkdGgtMS0xIHVrLWdyaWQtc21hbGwgdWstZ3JpZC1tYXRjaCIgdWstZ3JpZD48L2Rpdj4KPGEgaWQ9ItGA0LDRgdC60LvQsNC00LrQuC3RgdC60YDRi9GC0YwiIGNsYXNzPSJ1ay1pY29uLWJ1dHRvbiIgdWstaWNvbj0iY2xvc2UiPjwvYT4KYDsKICAgICAgICB2YXIgY3NzID0KYAoj0YDQsNGB0LrQu9Cw0LTQutC4LdGB0LrRgNGL0YLRjAp7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDFlbTsKICAgIGxlZnQ6IDFlbTsKfQoj0YDQsNGB0LrQu9Cw0LTQutC4LdGA0LDRgdC60LvQsNC00LrQuAp7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMDsKICAgIHRvcDogMWVtOwogICAgYm90dG9tOiAxZW07CiAgICBwYWRkaW5nOiAxZW07CiAgICB3aWR0aDogMjBlbTsKICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKfQpgOwogICAgICAgINC00L7QsdCw0LLQuNGC0YzQrdC60YDQsNC9KCLRgNCw0YHQutC70LDQtNC60LgiLCBodG1sLCBjc3MpOwogICAgICAgICQoIiPRgNCw0YHQutC70LDQtNC60LgiKQogICAgICAgICAgICAuaGlkZSgpCiAgICAgICAgICAgIC5jc3MoImJhY2tncm91bmQiLCAibGluZWFyLWdyYWRpZW50KDI3MGRlZywgd2hpdGUsIHdoaXRlIDIwZW0sIHJnYmEoMjU1LDI1NSwyNTUsMCkiKQogICAgICAgICAgICA7CiAgICAgICAgJCgiI9GA0LDRgdC60LvQsNC00LrQuC3RgdC60YDRi9GC0YwiKS5jbGljayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgINC80LjRgC7RgdC+0LHRi9GC0LjRj1si0L/QtdGA0LXQutC70Y7Rh9C40YLRjCDRgNCw0YHQutC70LDQtNC60LgiXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICB9KTsKICAgIH07Cn0KCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQlNC+0LHQsNCy0LjRgtGM0K3QutGA0LDQvdCe0YHQvdC+0LLQvdC+0Lko0LzQuNGAKQp7CiAgICB0aGlzLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgaHRtbCA9CmAKPGEgaWQ9ItC+0YHQvdC+0LLQvdC+0Lkt0YDQsNGB0LrQu9Cw0LTQutC4IiBjbGFzcz0idWstaWNvbi1idXR0b24iIHVrLWljb249InRodW1ibmFpbHMiIHVrLXRvb2x0aXA9InRpdGxlOiDQoNCw0YHQutC70LDQtNC60Lg7IGRlbGF5OiA1MDAiPjwvYT4KYDsKICAgICAgICB2YXIgY3NzID0KYAoj0L7RgdC90L7QstC90L7QuS3RgNCw0YHQutC70LDQtNC60LgKewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAxZW07CiAgICBsZWZ0OiAxZW07Cn0KYDsKICAgICAgICDQtNC+0LHQsNCy0LjRgtGM0K3QutGA0LDQvSgi0L7RgdC90L7QstC90L7QuSIsIGh0bWwsIGNzcyk7CiAgICAgICAgJCgiI9C+0YHQvdC+0LLQvdC+0Lkt0YDQsNGB0LrQu9Cw0LTQutC4IikuY2xpY2soZnVuY3Rpb24oZSkgewogICAgICAgICAgICDQvNC40YAu0YHQvtCx0YvRgtC40Y9bItC/0LXRgNC10LrQu9GO0YfQuNGC0Ywg0YDQsNGB0LrQu9Cw0LTQutC4Il0u0YPQstC10LTQvtC80LjRgtGMKCk7CiAgICAgICAgfSk7CiAgICB9Owp9CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0JLRi9Cy0LXRgdGC0LjQn9GA0L7RgdGC0L7QotC10LrRgdGCKNC80LjRgCkKewogICAgdGhpcy7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgY29uc29sZS5sb2coItCf0YDQvtGB0YLQviDRgtC10LrRgdGCIiwgbmV3IERhdGUoKSk7CiAgICB9Owp9CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0KPQu9Cw0LLQu9C40LLQsNGC0YzQktGL0LHQvtGA0KHRhNC10YAo0LzQuNGAKQp7CiAgICDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtSwgewogICAgICAgICLQvdC+0LzQtdGAINCy0YvQsdGA0LDQvdC90L7QuSDRgdGE0LXRgNGLIjogbnVsbCwKICAgICAgICAi0L3QvtC80LXRgNCwINCy0YvQsdGA0LDQvdC90YvRhSDRgdGE0LXRgCI6IFtdLAogICAgfSk7CiAgICAKICAgIHRoaXMu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQogICAgewogICAgICAgINC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGD0LvQsNCy0LvQuNCy0LDRgtC10LvRjCJdID0gbmV3IFRIUkVFLlJheWNhc3RlcigpOwogICAgICAgIHRoaXMu0L7RgtGB0LvQtdC20LjQstCw0YLRjNCd0LDRgdGC0L7Qu9C60LgoKTsKICAgICAgICB0aGlzLtC+0YLRgdC70LXQttC40LLQsNGC0YzQnNC+0LHQuNC70LrQuCgpOwogICAgfTsKICAgIHRoaXMu0L7RgtGB0LvQtdC20LjQstCw0YLRjNCd0LDRgdGC0L7Qu9C60LggPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAiY2xpY2siLAogICAgICAgICAgICBmdW5jdGlvbijRgdC+0LHRi9GC0LjQtSkgewogICAgICAgICAgICAgICAgdmFyINC/0L7Qt9C40YbQuNGPID0gbmV3IFRIUkVFLlZlY3RvcjIoKTsKICAgICAgICAgICAgICAgINC/0L7Qt9C40YbQuNGPLnggPSAo0YHQvtCx0YvRgtC40LUuY2xpZW50WCAvIHdpbmRvdy5pbm5lcldpZHRoKSAqIDIgLSAxOwogICAgICAgICAgICAgICAg0L/QvtC30LjRhtC40Y8ueSA9IC0gKNGB0L7QsdGL0YLQuNC1LmNsaWVudFkgLyB3aW5kb3cuaW5uZXJIZWlnaHQpICogMiArIDE7CiAgICAgICAgICAgICAgICBzZWxmLtCy0YvQsdGA0LDRgtGMKNC/0L7Qt9C40YbQuNGPKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9OwogICAgdGhpcy7QvtGC0YHQu9C10LbQuNCy0LDRgtGM0JzQvtCx0LjQu9C60LggPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAidG91Y2hzdGFydCIsCiAgICAgICAgICAgIGZ1bmN0aW9uKNGB0L7QsdGL0YLQuNC1KSB7CiAgICAgICAgICAgICAgICB2YXIg0L/QvtC30LjRhtC40Y8gPSBuZXcgVEhSRUUuVmVjdG9yMigpOwogICAgICAgICAgICAgICAg0L/QvtC30LjRhtC40Y8ueCA9ICjRgdC+0LHRi9GC0LjQtS50b3VjaGVzWzBdLmNsaWVudFggLyB3aW5kb3cuaW5uZXJXaWR0aCkgKiAyIC0gMTsKICAgICAgICAgICAgICAgINC/0L7Qt9C40YbQuNGPLnkgPSAtICjRgdC+0LHRi9GC0LjQtS50b3VjaGVzWzBdLmNsaWVudFkgLyB3aW5kb3cuaW5uZXJIZWlnaHQpICogMiArIDE7CiAgICAgICAgICAgICAgICBzZWxmLtCy0YvQsdGA0LDRgtGMKNC/0L7Qt9C40YbQuNGPKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICAgICAgLy8g0JjRgdC/0YDQsNCy0LvRj9C10Lwg0YPQu9Cw0LLQu9C40LLQsNC90LjQtSDQvdCw0LbQsNGC0LjQuSDQvdCwIGlPUy4KICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzE0NTkyNDAvMzQwNDcxMAogICAgICAgIHZhciDQvtGC0YDQuNGB0L7QstGJ0LjQuiA9INC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC+0YLRgNC40YHQvtCy0YnQuNC6Il07CiAgICAgICAg0L7RgtGA0LjRgdC+0LLRidC40LouZG9tRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CiAgICB9OwogICAgdGhpcy7QstGL0LHRgNCw0YLRjCA9IGZ1bmN0aW9uKNC/0L7Qt9C40YbQuNGPKQogICAgewogICAgICAgIHZhciDRg9C70LDQstC70LjQstCw0YLQtdC70YwgPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRg9C70LDQstC70LjQstCw0YLQtdC70YwiXTsKICAgICAgICB2YXIg0LrQsNC80LXRgNCwID0g0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0LrQsNC80LXRgNCwIl07CiAgICAgICAgdmFyINC60L7RgNC10L3RjCA9INC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC60L7RgNC10L3RjCJdOwogICAgICAgINGD0LvQsNCy0LvQuNCy0LDRgtC10LvRjC5zZXRGcm9tQ2FtZXJhKNC/0L7Qt9C40YbQuNGPLCDQutCw0LzQtdGA0LApOwogICAgICAgIHZhciDQv9C10YDQtdGB0LXRh9C10L3QuNGPID0g0YPQu9Cw0LLQu9C40LLQsNGC0LXQu9GMLmludGVyc2VjdE9iamVjdHMo0LrQvtGA0LXQvdGMLmNoaWxkcmVuKTsKICAgICAgICBpZiAo0L/QtdGA0LXRgdC10YfQtdC90LjRjy5sZW5ndGgpCiAgICAgICAgewogICAgICAgICAgICB2YXIg0YHRhNC10YDQsCA9INC/0LXRgNC10YHQtdGH0LXQvdC40Y9bMF0ub2JqZWN0OwogICAgICAgICAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0L3QvtC80LXRgNCh0YTQtdGA0Yso0YHRhNC10YDQsC5pZCk7CiAgICAgICAgICAgIGlmICjQvdC+0LzQtdGAKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLQvdC+0LzQtdGAINCy0YvQsdGA0LDQvdC90L7QuSDRgdGE0LXRgNGLIl0gPSDQvdC+0LzQtdGAOwogICAgICAgICAgICAgICAg0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgNCwINCy0YvQsdGA0LDQvdC90YvRhSDRgdGE0LXRgCJdLnB1c2go0L3QvtC80LXRgCk7CiAgICAgICAgICAgICAgICDQvNC40YAu0YHQvtCx0YvRgtC40Y9bItCy0YvQsdC+0YAiXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICB0aGlzLtC90L7QvNC10YDQodGE0LXRgNGLID0gZnVuY3Rpb24oaWQpCiAgICB7CiAgICAgICAgdmFyINGB0YTQtdGA0YsgPSDQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdGE0LXRgNGLIl07CiAgICAgICAgZm9yICh2YXIg0L3QvtC80LXRgCBpbiDRgdGE0LXRgNGLKQogICAgICAgIHsKICAgICAgICAgICAgdmFyINGB0YTQtdGA0LAgPSDRgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgICAgICAgICBpZiAo0YHRhNC10YDQsC5pZCA9PSBpZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuINC90L7QvNC10YA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Owp9Cg==",
  148. {"status":true}
  149. ],
  150. [
  151. "последовательность",
  152. "0L3QsNGH0LDQu9C+CiAgICDQtNC+0LHQsNCy0LjRgtGMINGN0LrRgNCw0L0g0L7RgdC90L7QstC90L7QuQogICAg0LTQvtCx0LDQstC40YLRjCDRjdC60YDQsNC9INGA0LDRgdC60LvQsNC00L7QugogICAg0YHQvtC30LTQsNGC0Ywg0LfQsNCyINGA0LDRgdC60LvQsNC00L7QugogICAg0YHQvtC30LTQsNGC0Ywg0YHQv9C40YHQvtC6INGA0LDRgdC60LvQsNC00L7QugogICAg0YHQuNC90YXRgNC40YLRjCDRgdC/0LjRgdC+0Log0YDQsNGB0LrQu9Cw0LTQvtC6INGBINC30LDQstC+0LwKICAgINC00L7QsdCw0LLQuNGC0Ywg0L7RgtC70LDQtNC+0YfQvdGL0LUg0YDQsNGB0LrQu9Cw0LTQutC4CiAgICDQtNC+0LHQsNCy0LjRgtGMINCy0YHRgtGA0L7QtdC90L3Ri9C1INGA0LDRgdC60LvQsNC00LrQuAogICAg0LLRi9Cx0YDQsNGC0Ywg0L/QtdGA0LLRg9GOINGA0LDRgdC60LvQsNC00LrRgwogICAg0YHQvtC30LTQsNGC0Ywg0LfQsNCyINGC0LXQvAogICAg0LTQvtCx0LDQstC40YLRjCDRgtC10LzRiyDQstGB0YLRgNC+0LXQvdC90YvQtQogICAg0LLRi9Cx0YDQsNGC0Ywg0L/QtdGA0LLRg9GOINGC0LXQvNGDCiAgICDQvdCw0YHRgtGA0L7QuNGC0YwgVGhyZWVKUwogICAg0L/QvtC00LPQvtGC0L7QstC40YLRjCDRgdGG0LXQvdGDCtC/0LXRgNC10LrQu9GO0YfQuNGC0Ywg0YDQsNGB0LrQu9Cw0LTQutC4CiAgICDQv9C10YDQtdC60LvRjtGH0LjRgtGMINGN0LrRgNCw0L0g0YDQsNGB0LrQu9Cw0LTQvtC6",
  153. {"status":false}
  154. ],
  155. [
  156. "редактор ресурсов",
  157. "aWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT0gIj8iICsgZW5jb2RlVVJJKCLwn4CEIikpCnsKICAgIG5ldyDQoNC10LTQsNC60YLQvtGA0KDQtdGB0YPRgNGB0L7QsigpOwp9CgpmdW5jdGlvbiDQoNC10LTQsNC60YLQvtGA0KDQtdGB0YPRgNGB0L7QsigpCnsKICAgIHRoaXMu0YHQvtC30LTQsNGC0YzQmNC90YLQtdGA0YTQtdC50YEgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIGh0bWwgPQpgCjxkaXYgaWQ9ItC40LfQvtCx0YDQsNC20LXQvdC40Y8iPgogICAgPHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciB1ay10YWJsZS1taWRkbGUgdWstdGFibGUtZGl2aWRlciI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9InVrLXRhYmxlLXNocmluayI+0J3QvtC80LXRgDwvdGg+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9InVrLXRhYmxlLWV4cGFuZCI+0JjQt9C+0LHRgNCw0LbQtdC90LjQtTwvdGg+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idWstdGV4dC1ub3dyYXAiPjE8L3RkPgogICAgICAgICAgICAgICAgPHRkPjxpbWcgY2xhc3M9InVrLXByZXNlcnZlLXdpZHRoIiBzcmM9ImltYWdlcy9hdmF0YXIuanBnIiB3aWR0aD0iNDAiIGFsdD0iIj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InVrLXRleHQtbm93cmFwIj4yPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJqcy11cGxvYWQgdWstcGxhY2Vob2xkZXIgdWstdGV4dC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB1ay1pY29uPSJpY29uOiBjbG91ZC11cGxvYWQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InVrLXRleHQtbWlkZGxlIj5BdHRhY2ggYmluYXJpZXMgYnkgZHJvcHBpbmcgdGhlbSBoZXJlIG9yPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHVrLWZvcm0tY3VzdG9tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG11bHRpcGxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InVrLWxpbmsiPnNlbGVjdGluZyBvbmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ1ay10ZXh0LW5vd3JhcCI+MzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+PGltZyBjbGFzcz0idWstcHJlc2VydmUtd2lkdGgiIHNyYz0iaW1hZ2VzL2F2YXRhci5qcGciIHdpZHRoPSI0MCIgYWx0PSIiPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwvZGl2PgpgOwogICAgICAgIHZhciBjc3MgPQpgCiPQuNC30L7QsdGA0LDQttC10L3QuNGPCnsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKfQpgOwogICAgICAgINC00L7QsdCw0LLQuNGC0YzQrdC60YDQsNC9KCLRgNC10LTQsNC60YLQvtGALdGA0LXRgdGD0YDRgdC+0LIiLCBodG1sLCBjc3MpOwogICAgfTsKICAgIAogICAgdGhpcy7RgdC+0LfQtNCw0YLRjNCY0L3RgtC10YDRhNC10LnRgSgpOwogICAgY29uc29sZS5sb2coItGA0LXQtNCw0LrRgtC+0YAg0YDQtdGB0YPRgNGB0L7QsiIpOwp9",
  158. {"status":true}
  159. ],
  160. ];
  161. Object.defineProperty(murom, "modules", {
  162. get: function()
  163. {
  164. return муром.модули;
  165. },
  166. set: function(значения)
  167. {
  168. муром.модули = значения;
  169. }
  170. });
  171. var загрузочныйМодуль = муром.модули[0];
  172. var код = atob(загрузочныйМодуль[1]);
  173. eval(код);
  174. </script>
  175. </body>
  176. </html>