3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · 2.7c767379.chunk.js_41
{
    "2.7c767379.chunk.js_41": "base64:dHx8bj49dC5sZW5ndGg/KGUudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KToia2V5cyI9PXI/e3ZhbHVlOm4sZG9uZTohMX06InZhbHVlcyI9PXI/e3ZhbHVlOnRbbl0sZG9uZTohMX06e3ZhbHVlOltuLHRbbl1dLGRvbmU6ITF9fSwidmFsdWVzIiksby5Bcmd1bWVudHM9by5BcnJheSxpKCJrZXlzIiksaSgidmFsdWVzIiksaSgiZW50cmllcyIpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4MSksaT1yKDQwNSksbz1yKDI0NiksYT1yKDQwOCkscz1yKDI0MyksdT1yKDI0NykoIklFX1BST1RPIiksYz1mdW5jdGlvbigpe30sZj1mdW5jdGlvbigpe3ZhciBlLHQ9cygiaWZyYW1lIikscj1vLmxlbmd0aDtmb3IodC5zdHlsZS5kaXNwbGF5PSJub25lIixhLmFwcGVuZENoaWxkKHQpLHQuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwoZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxlLndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLGUuY2xvc2UoKSxmPWUuRjtyLS07KWRlbGV0ZSBmLnByb3RvdHlwZVtvW3JdXTtyZXR1cm4gZigpfTtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gbnVsbCE9PWU/KGMucHJvdG90eXBlPW4oZSkscj1uZXcgYyxjLnByb3RvdHlwZT1udWxsLHJbdV09ZSk6cj1mKCksdm9pZCAwPT09dD9yOmkocix0KX0scigyNDUpW3VdPSEwfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgpLGk9cigxNDApLG89cig4MSksYT1yKDQwNik7ZS5leHBvcnRzPW4/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtvKGUpO2Zvcih2YXIgcixuPWEodCkscz1uLmxlbmd0aCx1PTA7cz51OylpLmYoZSxyPW5bdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQwNyksaT1yKDI0Nik7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTcpLGk9cigxNzYpLG89cig3MjYpKCExKSxhPXIoMjQ1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcykhbihhLHIpJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDE3MykoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0MyksaT1yKDQxMyksbz1yKDQxNSksYT1yKDczNCkscz1yKDE3NyksdT1yKDY5KSxjPXIoMTQ0KSxmPXIoMTc1KSxsPXIoNTMpKCJpdGVyYXRvciIpLGg9cigxNDEpLHA9cig0MTQpLGQ9cC5JdGVyYXRvclByb3RvdHlwZSx5PXAuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixwLHYsbSxiKXtpKHIsdCxwKTt2YXIgXyxTLEUsdz1mdW5jdGlvbihlKXtpZihlPT09diYmSSlyZXR1cm4gSTtpZigheSYmZSBpbiBDKXJldHVybiBDW2VdO3N3aXRjaChlKXtjYXNlImtleXMiOmNhc2UidmFsdWVzIjpjYXNlImVudHJpZXMiOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcyl9fSxUPXQrIiBJdGVyYXRvciIsQT0hMSxDPWUucHJvdG90eXBlLHg9Q1tsXXx8Q1siQEBpdGVyYXRvciJdfHx2JiZDW3ZdLEk9IXkmJnh8fHcodiksaz0iQXJyYXkiPT10JiZDLmVudHJpZXN8fHg7aWYoayYmKF89byhrLmNhbGwobmV3IGUpKSxkIT09T2JqZWN0LnByb3RvdHlwZSYmXy5uZXh0JiYoZnx8byhfKT09PWR8fChhP2EoXyxkKToiZnVuY3Rpb24iIT10eXBlb2YgX1tsXSYmdShfLGwsZykpLHMoXyxULCEwLCEwKSxmJiYoaFtUXT1nKSkpLCJ2YWx1ZXMiPT12JiZ4JiYidmFsdWVzIiE9PXgubmFtZSYmKEE9ITAsST1mdW5jdGlvbigpe3JldHVybiB4LmNhbGwodGhpcyl9KSxmJiYhYnx8Q1tsXT09PUl8fHUoQyxsLEkpLGhbdF09SSx2KWlmKFM9e3ZhbHVlczp3KCJ2YWx1ZXMiKSxrZXlzOm0/STp3KCJrZXlzIiksZW50cmllczp3KCJlbnRyaWVzIil9LGIpZm9yKEUgaW4gUykheSYmIUEmJkUgaW4gQ3x8YyhDLEUsU1tFXSk7ZWxzZSBuKHt0YXJnZXQ6dCxwcm90bzohMCxmb3JjZWQ6eXx8QX0sUyk7cmV0dXJuIFN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWkmJiFuLmNhbGwoezE6Mn0sMSk7dC5mPW8/ZnVuY3Rpb24oZSl7dmFyIHQ9aSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTpufSxmdW5jdGlvbihlLHQpe3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDE0KS5JdGVyYXRvclByb3RvdHlwZSxpPXIoNDA0KSxvPXIoMTc0KSxhPXIoMTc3KSxzPXIoMTQxKSx1PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGM9dCsiIEl0ZXJhdG9yIjtyZXR1cm4gZS5wcm90b3R5cGU9aShuLHtuZXh0Om8oMSxyKX0pLGEoZSxjLCExLCEwKSxzW2NdPXUsZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saSxvLGE9cig0MTUpLHM9cig2OSksdT1yKDU3KSxjPXIoMTc1KSxmPXIoNTMpKCJpdGVyYXRvciIpLGw9ITE7W10ua2V5cyYmKCJuZXh0ImluKG89W10ua2V5cygpKT8oaT1hKGEobykpKSE9PU9iamVjdC5wcm90b3R5cGUmJihuPWkpOmw9ITApLHZvaWQgMD09biYmKG49e30pLGN8fHUobixmKXx8cyhuLGYsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6bixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOmx9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1NyksaT1yKDE3Miksbz1yKDI0NykoIklFX1BST1RPIiksYT1yKDczMykscz1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1hP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZT1pKGUpLG4oZSxvKT9lW29dOiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yJiZlIGluc3RhbmNlb2YgZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTplIGluc3RhbmNlb2YgT2JqZWN0P3M6bnVsbH19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMjkpJiYhcigxNCkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoMjQ5KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj12b2lkIDA9PT1yO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuP2UoKTplLmNhbGwocik7Y2FzZSAxOnJldHVybiBuP2UodFswXSk6ZS5jYWxsKHIsdFswXSk7Y2FzZSAyOnJldHVybiBuP2UodFswXSx0WzFdKTplLmNhbGwocix0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gbj9lKHRbMF0sdFsxXSx0WzJdKTplLmNhbGwocix0WzBdLHRbMV0sdFsyXSk7Y2FzZSA0OnJldHVybiBuP2UodFswXSx0WzFdLHRbMl0sdFszXSk6ZS5jYWxsKHIsdFswXSx0WzFdLHRbMl0sdFszXSl9cmV0dXJuIGUuYXBwbHkocix0KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI0MSksaT1yKDIzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhLHM9U3RyaW5nKGkoZSkpLHU9bih0KSxjPXMubGVuZ3RoO3JldHVybiB1PDB8fHU+PWM/cj8iIjp2b2lkIDA6KG89cy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8bz41NjMxOXx8dSsxPT09Y3x8KGE9cy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP3I/cy5jaGFyQXQodSk6bzpyP3Muc2xpY2UodSx1KzIpOmEtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3NSksaT1yKDUzKSgiaXRlcmF0b3IiKTtlLmV4cG9ydHM9IXIoNjgpKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVSTCgiYj9lPTEiLCJodHRwOi8vYSIpLHQ9ZS5zZWFyY2hQYXJhbXM7cmV0dXJuIGUucGF0aG5hbWU9ImMlMjBkIixuJiYhZS50b0pTT058fCF0LnNvcnR8fCJodHRwOi8vYS9jJTIwZD9lPTEiIT09ZS5ocmVmfHwiMSIhPT10LmdldCgiZSIpfHwiYT0xIiE9PVN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCI/YT0xIikpfHwhdFtpXXx8ImEiIT09bmV3IFVSTCgiaHR0cHM6Ly9hQGIiKS51c2VybmFtZXx8ImIiIT09bmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCJhPWIiKSkuZ2V0KCJhIil8fCJ4bi0tZTFheWJjIiE9PW5ldyBVUkwoImh0dHA6Ly9cdTA0NDJcdTA0MzVcdTA0NDFcdTA0NDIiKS5ob3N0fHwiIyVEMCVCMSIhPT1uZXcgVVJMKCJodHRwOi8vYSNcdTA0MzEiKS5oYXNofSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCAiKyhyP3IrIiAiOiIiKSsiaW52b2NhdGlvbiIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDQwMyk7dmFyIG49cig0MTkpLGk9cigxNDQpLG89cig3NTEpLGE9cig0MTMpLHM9cigxNDIpLHU9cig0MjApLGM9cig1NyksZj1yKDE3MSksbD1yKDgxKSxoPXIoOTIpLHA9cig3NTIpLGQ9cigyNTIpLHk9cig1MykoIml0ZXJhdG9yIiksZz1zLnNldCx2PXMuZ2V0dGVyRm9yKCJVUkxTZWFyY2hQYXJhbXMiKSxtPXMuZ2V0dGVyRm9yKCJVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciIpLGI9L1wrL2csXz1BcnJheSg0KSxTPWZ1bmN0aW9uKGUpe3JldHVybiBfW2UtMV18fChfW2UtMV09UmVnRXhwKCIoKD86JVtcXGRhLWZdezJ9KXsiK2UrIn0pIiwiZ2kiKSl9LEU9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2godCl7cmV0dXJuIGV9fSx3PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnJlcGxhY2UoYiwiICIpLHI9NDtyOyl0PXQucmVwbGFjZShTKHItLSksRSk7cmV0dXJuIHR9LFQ9L1shJygpfl18JTIwL2csQT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyJ9LEM9ZnVuY3Rpb24oZSl7cmV0dXJuIEFbZV19LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKFQsQyl9LEk9ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgcixuLGk9dC5zcGxpdCgiJiIpLG89MDtvPGkubGVuZ3RoOykocj1pW28rK10pLmxlbmd0aCYmKG49ci5zcGxpdCgiPSIpLGUucHVzaCh7a2V5Oncobi5zaGlmdCgpKSx2YWx1ZTp3KG4uam9pbigiPSIpKX0pKTtyZXR1cm4gZX0saz1mdW5jdGlvbihlKXt0aGlzLmVudHJpZXMubGVuZ3RoPTAsSSh0aGlzLmVudHJpZXMsZSl9LE89ZnVuY3Rpb24oZSx0KXtpZihlPHQpdGhyb3cgVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpfSxOPWEoZnVuY3Rpb24oZSx0KXtnKHRoaXMse3R5cGU6IlVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yIixpdGVyYXRvcjpwKHYoZSkuZW50cmllcyksa2luZDp0fSl9LCJJdGVyYXRvciIsZnVuY3Rpb24oKXt2YXIgZT1tKHRoaXMpLHQ9ZS5raW5kLHI9ZS5pdGVyYXRvci5uZXh0KCksbj1yLnZhbHVlO3JldHVybiByLmRvbmV8fChyLnZhbHVlPSJrZXlzIj09PXQ/bi5rZXk6InZhbHVlcyI9PT10P24udmFsdWU6W24ua2V5LG4udmFsdWVdKSxyfSksUD1mdW5jdGlvbigpe3UodGhpcyxQLCJVUkxTZWFyY2hQYXJhbXMiKTt2YXIgZSx0LHIsbixpLG8sYSxzPWFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwLGY9W107aWYoZyh0aGlzLHt0eXBlOiJVUkxTZWFyY2hQYXJhbXMiLGVudHJpZXM6Zix1cGRhdGVVUkw6bnVsbCx1cGRhdGVTZWFyY2hQYXJhbXM6a30pLHZvaWQgMCE9PXMpaWYoaChzKSlpZigiZnVuY3Rpb24iPT09dHlwZW9mKGU9ZChzKSkpZm9yKHQ9ZS5jYWxsKHMpOyEocj10Lm5leHQoKSkuZG9uZTspe2lmKChpPShuPXAobChyLnZhbHVlKSkpLm5leHQoKSkuZG9uZXx8KG89bi5uZXh0KCkpLmRvbmV8fCFuLm5leHQoKS5kb25lKXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgc2VxdWVuY2Ugd2l0aCBsZW5ndGggMiIpO2YucHVzaCh7a2V5OmkudmFsdWUrIiIsdmFsdWU6by52YWx1ZSsiIn0pfWVsc2UgZm9yKGEgaW4gcyljKHMsYSkmJmYucHVzaCh7a2V5OmEsdmFsdWU6c1thXSsiIn0pO2Vsc2UgSShmLCJzdHJpbmciPT09dHlwZW9mIHM/Ij8iPT09cy5jaGFyQXQoMCk/cy5zbGljZSgxKTpzOnMrIiIpfSxSPVAucHJvdG90eXBlO28oUix7YXBwZW5kOmZ1bmN0aW9uKGUsdCl7Tyhhcmd1bWVudHMubGVuZ3RoLDIpO3ZhciByPXYodGhpcyk7ci5lbnRyaWVzLnB1c2goe2tleTplKyIiLHZhbHVlOnQrIiJ9KSxyLnVwZGF0ZVVSTCYmci51cGRhdGVVUkwoKX0sZGVsZXRlOmZ1bmN0aW9uKGUpe08oYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIHQ9dih0aGlzKSxyPXQuZW50cmllcyxuPWUrIiIsaT0wO2k8ci5sZW5ndGg7KXJbaV0ua2V5PT09bj9yLnNwbGljZShpLDEpOmkrKzt0LnVwZGF0ZVVSTCYmdC51cGRhdGVVUkwoKX0sZ2V0OmZ1bmN0aW9uKGUpe08oYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIHQ9dih0aGlzKS5lbnRyaWVzLHI9ZSsiIixuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXS5rZXk9PT1yKXJldHVybiB0W25dLnZhbHVlO3JldHVybiBudWxsfSxnZXRBbGw6ZnVuY3Rpb24oZSl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgdD12KHRoaXMpLmVudHJpZXMscj1lKyIiLG49W10saT0wO2k8dC5sZW5ndGg7aSsrKXRbaV0ua2V5PT09ciYmbi5wdXNoKHRbaV0udmFsdWUpO3JldHVybiBufSxoYXM6ZnVuY3Rpb24oZSl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgdD12KHRoaXMpLmVudHJpZXMscj1lKyIiLG49MDtuPHQubGVuZ3RoOylpZih0W24rK10ua2V5PT09cilyZXR1cm4hMDtyZXR1cm4hMX0sc2V0OmZ1bmN0aW9uKGUsdCl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgcixuPXYodGhpcyksaT1uLmVudHJpZXMsbz0hMSxhPWUrIiIscz10KyIiLHU9MDt1PGkubGVuZ3RoO3UrKykocj1pW3VdKS5rZXk9PT1hJiYobz9pLnNwbGljZSh1LS0sMSk6KG89ITAsci52YWx1ZT1zKSk7b3x8aS5wdXNoKHtrZXk6YSx2YWx1ZTpzfSksbi51cGRhdGVVUkwmJm4udXBkYXRlVVJMKCl9LHNvcnQ6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj12KHRoaXMpLGk9bi5lbnRyaWVzLG89aS5zbGljZSgpO2ZvcihpLmxlbmd0aD0wLHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Zm9yKGU9b1t0XSxyPTA7cjx0O3IrKylpZihpW3JdLmtleT5lLmtleSl7aS5zcGxpY2UociwwLGUpO2JyZWFrfXI9PT10JiZpLnB1c2goZSl9bi51cGRhdGVVUkwmJm4udXBkYXRlVVJMKCl9LGZvckVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9dih0aGlzKS5lbnRyaWVzLG49ZihlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLGk9MDtpPHIubGVuZ3RoOyluKCh0PXJbaSsrXSkudmFsdWUsdC5rZXksdGhpcyl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywia2V5cyIpfSx2YWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywidmFsdWVzIil9LGVudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywiZW50cmllcyIpfX0se2VudW1lcmFibGU6ITB9KSxpKFIseSxSLmVudHJpZXMpLGkoUiwidG9TdHJpbmciLGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dih0aGlzKS5lbnRyaWVzLHI9W10sbj0wO248dC5sZW5ndGg7KWU9dFtuKytdLHIucHVzaCh4KGUua2V5KSsiPSIreChlLnZhbHVlKSk7cmV0dXJuIHIuam9pbigiJiIpfSx7ZW51bWVyYWJsZTohMH0pLHIoMTc3KShQLCJVUkxTZWFyY2hQYXJhbXMiKSxyKDE0Mykoe2dsb2JhbDohMCxmb3JjZWQ6IW59LHtVUkxTZWFyY2hQYXJhbXM6UH0pLGUuZXhwb3J0cz17VVJMU2VhcmNoUGFyYW1zOlAsZ2V0U3RhdGU6dn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KSxpPXIoMjcpLG89cig5NSksYT1yKDI1Mykscz1yKDI4KS5mO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pLlN5bWJvbHx8KGkuU3ltYm9sPW8/e306bi5TeW1ib2x8fHt9KTsiXyI9PWUuY2hhckF0KDApfHxlIGluIHR8fHModCxlLHt2YWx1ZTphLmYoZSl9KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUwKSxpPXIoNTEpLG89cigxNzkpKCExKSxhPXIoMjU0KSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcylyIT1hJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cigxMiksbz1yKDExMCk7ZS5leHBvcnRzPXIoMjkpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7aShlKTtmb3IodmFyIHIsYT1vKHQpLHM9YS5sZW5ndGgsdT0wO3M+dTspbi5mKGUscj1hW3UrK10sdFtyXSk7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MSksaT1yKDk4KS5mLG89e30udG9TdHJpbmcsYT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBhJiYiW29iamVjdCBXaW5kb3ddIj09by5jYWxsKGUpP2Z1bmN0aW9uKGUpe3RyeXtyZXR1cm4gaShlKX1jYXRjaCh0KXtyZXR1cm4gYS5zbGljZSgpfX0oZSk6aShuKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyOSksaT1yKDExMCksbz1yKDE4MCksYT1yKDE0Nikscz1yKDM2KSx1PXIoMTQ1KSxjPU9iamVjdC5hc3NpZ247ZS5leHBvcnRzPSFjfHxyKDE0KShmdW5jdGlvbigpe3ZhciBlPXt9LHQ9e30scj1TeW1ib2woKSxuPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIGVbcl09NyxuLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZX0pLDchPWMoe30sZSlbcl18fE9iamVjdC5rZXlzKGMoe30sdCkpLmpvaW4oIiIpIT1ufSk/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9cyhlKSxjPWFyZ3VtZW50cy5sZW5ndGgsZj0xLGw9by5mLGg9YS5mO2M+ZjspZm9yKHZhciBwLGQ9dShhcmd1bWVudHNbZisrXSkseT1sP2koZCkuY29uY2F0KGwoZCkpOmkoZCksZz15Lmxlbmd0aCx2PTA7Zz52OylwPXlbdisrXSxuJiYhaC5jYWxsKGQscCl8fChyW3BdPWRbcF0pO3JldHVybiByfTpjfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9ZSYmdCE9dH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1OSksaT1yKDEzKSxvPXIoNDE3KSxhPVtdLnNsaWNlLHM9e307ZS5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcykscj1hLmNhbGwoYXJndW1lbnRzLDEpLHU9ZnVuY3Rpb24gbigpe3ZhciBpPXIuY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/ZnVuY3Rpb24oZSx0LHIpe2lmKCEodCBpbiBzKSl7Zm9yKHZhciBuPVtdLGk9MDtpPHQ7aSsrKW5baV09ImFbIitpKyJdIjtzW3RdPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIituLmpvaW4oIiwiKSsiKSIpfXJldHVybiBzW3RdKGUscil9KHQsaS5sZW5ndGgsaSk6byh0LGksZSl9O3JldHVybiBpKHQucHJvdG90eXBlKSYmKHUucHJvdG90eXBlPXQucHJvdG90eXBlKSx1fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcpLnBhcnNlSW50LGk9cigxMTEpLnRyaW0sbz1yKDI1NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNykucGFyc2VGbG9hdCxpPXIoMTExKS50cmltO2UuZXhwb3J0cz0xL24ocigyNTcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJiJOdW1iZXIiIT1uKGUpKXRocm93IFR5cGVFcnJvcih0KTtyZXR1cm4rZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmaShlKT09PWV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSk+LTFlLTgmJmU8MWUtOD9lLWUqZS8yOk1hdGgubG9nKDErZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTcpLGk9cig5Myksbz1yKDEwOSksYT17fTtyKDU0KShhLHIoMjEpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2UucHJvdG90eXBlPW4oYSx7bmV4dDppKDEscil9KSxvKGUsdCsiIEl0ZXJhdG9yIil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGkpe3RyeXtyZXR1cm4gaT90KG4ocilbMF0sclsxXSk6dChyKX1jYXRjaChhKXt2YXIgbz1lLnJldHVybjt0aHJvdyB2b2lkIDAhPT1vJiZuKG8uY2FsbChlKSksYX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NDUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcobihlKSkodCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1OSksaT1yKDM2KSxvPXIoMTQ1KSxhPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixzLHUpe24odCk7dmFyIGM9aShlKSxmPW8oYyksbD1hKGMubGVuZ3RoKSxoPXU/bC0xOjAscD11Py0xOjE7aWYocjwyKWZvcig7Oyl7aWYoaCBpbiBmKXtzPWZbaF0saCs9cDticmVha31pZihoKz1wLHU/aDwwOmw8PWgpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt1P2g+PTA6bD5oO2grPXApaCBpbiBmJiYocz10KHMsZltoXSxoLGMpKTtyZXR1cm4gc319LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzNiksaT1yKDk2KSxvPXIoMjMpO2UuZXhwb3J0cz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbihlLHQpe3ZhciByPW4odGhpcyksYT1vKHIubGVuZ3RoKSxzPWkoZSxhKSx1PWkodCxhKSxjPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGY9TWF0aC5taW4oKHZvaWQgMD09PWM/YTppKGMsYSkpLXUsYS1zKSxsPTE7Zm9yKHU8cyYmczx1K2YmJihsPS0xLHUrPWYtMSxzKz1mLTEpO2YtLSA+MDspdSBpbiByP3Jbc109clt1XTpkZWxldGUgcltzXSxzKz1sLHUrPWw7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTAwKSxpPXIoNDQwKSxvPXIoMTQ4KSxhPXIoNTEpO2UuZXhwb3J0cz1yKDI2MykoQXJyYXksIkFycmF5IixmdW5jdGlvbihlLHQpe3RoaXMuX3Q9YShlKSx0aGlzLl9pPTAsdGhpcy5faz10fSxmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3QsdD10aGlzLl9rLHI9dGhpcy5faSsrO3JldHVybiFlfHxyPj1lLmxlbmd0aD8odGhpcy5fdD12b2lkIDAsaSgxKSk6aSgwLCJrZXlzIj09dD9yOiJ2YWx1ZXMiPT10P2Vbcl06W3IsZVtyXV0pfSwidmFsdWVzIiksby5Bcmd1bWVudHM9by5BcnJheSxuKCJrZXlzIiksbigidmFsdWVzIiksbigiZW50cmllcyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTp0LGRvbmU6ISFlfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyNzEpO3IoMikoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6biE9PS8uLy5leGVjfSx7ZXhlYzpufSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDI5KSYmImciIT0vLi9nLmZsYWdzJiZyKDI4KS5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpyKDE4Myl9KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpLG8sYSxzPXIoOTUpLHU9cigxNyksYz1yKDU4KSxmPXIoMTQ3KSxsPXIoMiksaD1yKDEzKSxwPXIoNTkpLGQ9cigxMTMpLHk9cigxODYpLGc9cigxNDkpLHY9cigyNTApLnNldCxtPXIoODY1KSgpLGI9cig0NDQpLF89cig4NjYpLFM9cigyNzMpLEU9cig0NDUpLHc9dS5UeXBlRXJyb3IsVD11LnByb2Nlc3MsQT1UJiZULnZlcnNpb25zLEM9QSYmQS52OHx8IiIseD11LlByb21pc2UsST0icHJvY2VzcyI9PWYoVCksaz1mdW5jdGlvbigpe30sTz1pPWIuZixOPSEhZnVuY3Rpb24oKXt0cnl7dmFyIGU9eC5yZXNvbHZlKDEpLHQ9KGUuY29uc3RydWN0b3I9e30pW3IoMjEpKCJzcGVjaWVzIildPWZ1bmN0aW9uKGUpe2UoayxrKX07cmV0dXJuKEl8fCJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZlLnRoZW4oaylpbnN0YW5jZW9mIHQmJjAhPT1DLmluZGV4T2YoIjYuNiIpJiYtMT09PVMuaW5kZXhPZigiQ2hyb21lLzY2Iil9Y2F0Y2gobil7fX0oKSxQPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEoIWgoZSl8fCJmdW5jdGlvbiIhPXR5cGVvZih0PWUudGhlbikpJiZ0fSxSPWZ1bmN0aW9uKGUsdCl7aWYoIWUuX24pe2UuX249ITA7dmFyIHI9ZS5fYzttKGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWUuX3YsaT0xPT1lLl9zLG89MCxhPWZ1bmN0aW9uKHQpe3ZhciByLG8sYSxzPWk/dC5vazp0LmZhaWwsdT10LnJlc29sdmUsYz10LnJlamVjdCxmPXQuZG9tYWluO3RyeXtzPyhpfHwoMj09ZS5faCYmTChlKSxlLl9oPTEpLCEwPT09cz9yPW46KGYmJmYuZW50ZXIoKSxyPXMobiksZiYmKGYuZXhpdCgpLGE9ITApKSxyPT09dC5wcm9taXNlP2ModygiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToobz1QKHIpKT9vLmNhbGwocix1LGMpOnUocikpOmMobil9Y2F0Y2gobCl7ZiYmIWEmJmYuZXhpdCgpLGMobCl9fTtyLmxlbmd0aD5vOylhKHJbbysrXSk7ZS5fYz1bXSxlLl9uPSExLHQmJiFlLl9oJiZCKGUpfSl9fSxCPWZ1bmN0aW9uKGUpe3YuY2FsbCh1LGZ1bmN0aW9uKCl7dmFyIHQscixuLGk9ZS5fdixvPU0oZSk7aWYobyYmKHQ9XyhmdW5jdGlvbigpe0k/VC5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLGksZSk6KHI9dS5vbnVuaGFuZGxlZHJlamVjdGlvbik/cih7cHJvbWlzZTplLHJlYXNvbjppfSk6KG49dS5jb25zb2xlKSYmbi5lcnJvciYmbi5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixpKX0pLGUuX2g9SXx8TShlKT8yOjEpLGUuX2E9dm9pZCAwLG8mJnQuZSl0aHJvdyB0LnZ9KX0sTT1mdW5jdGlvbihlKXtyZXR1cm4gMSE9PWUuX2gmJjA9PT0oZS5fYXx8ZS5fYykubGVuZ3RofSxMPWZ1bmN0aW9uKGUpe3YuY2FsbCh1LGZ1bmN0aW9uKCl7dmFyIHQ7ST9ULmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLGUpOih0PXUub25yZWplY3Rpb25oYW5kbGVkKSYmdCh7cHJvbWlzZTplLHJlYXNvbjplLl92fSl9KX0sRD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuX2R8fCh0Ll9kPSEwLCh0PXQuX3d8fHQpLl92PWUsdC5fcz0yLHQuX2F8fCh0Ll9hPXQuX2Muc2xpY2UoKSksUih0LCEwKSl9LGo9ZnVuY3Rpb24gZSh0KXt2YXIgcixuPXRoaXM7aWYoIW4uX2Qpe24uX2Q9ITAsbj1uLl93fHxuO3RyeXtpZihuPT09dCl0aHJvdyB3KCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhyPVAodCkpP20oZnVuY3Rpb24oKXt2YXIgaT17X3c6bixfZDohMX07dHJ5e3IuY2FsbCh0LGMoZSxpLDEpLGMoRCxpLDEpKX1jYXRjaChvKXtELmNhbGwoaSxvKX19KToobi5fdj10LG4uX3M9MSxSKG4sITEpKX1jYXRjaChpKXtELmNhbGwoe193Om4sX2Q6ITF9LGkpfX19O058fCh4PWZ1bmN0aW9uKGUpe2QodGhpcyx4LCJQcm9taXNlIiwiX2giKSxwKGUpLG4uY2FsbCh0aGlzKTt0cnl7ZShjKGosdGhpcywxKSxjKEQsdGhpcywxKSl9Y2F0Y2godCl7RC5jYWxsKHRoaXMsdCl9fSwobj1mdW5jdGlvbihlKXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSkucHJvdG90eXBlPXIoMTE0KSh4LnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbihlLHQpe3ZhciByPU8oZyh0aGlzLHgpKTtyZXR1cm4gci5vaz0iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZSxyLmZhaWw9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQsci5kb21haW49ST9ULmRvbWFpbjp2b2lkIDAsdGhpcy5fYy5wdXNoKHIpLHRoaXMuX2EmJnRoaXMuX2EucHVzaChyKSx0aGlzLl9zJiZSKHRoaXMsITEpLHIucHJvbWlzZX0sY2F0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9fSksbz1mdW5jdGlvbigpe3ZhciBlPW5ldyBuO3RoaXMucHJvbWlzZT1lLHRoaXMucmVzb2x2ZT1jKGosZSwxKSx0aGlzLnJlamVjdD1jKEQsZSwxKX0sYi5mPU89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT14fHxlPT09YT9uZXcgbyhlKTppKGUpfSksbChsLkcrbC5XK2wuRiohTix7UHJvbWlzZTp4fSkscigxMDkpKHgsIlByb21pc2UiKSxyKDExMikoIlByb21pc2UiKSxhPXIoMjcpLlByb21pc2UsbChsLlMrbC5GKiFOLCJQcm9taXNlIix7cmVqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0PU8odGhpcyk7cmV0dXJuKDAsdC5yZWplY3QpKGUpLHQucHJvbWlzZX19KSxsKGwuUytsLkYqKHN8fCFOKSwiUHJvbWlzZSIse3Jlc29sdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUocyYmdGhpcz09PWE/eDp0aGlzLGUpfX0pLGwobC5TK2wuRiohKE4mJnIoMTgyKShmdW5jdGlvbihlKXt4LmFsbChlKS5jYXRjaChrKX0pKSwiUHJvbWlzZSIse2FsbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9Tyh0KSxuPXIucmVzb2x2ZSxpPXIucmVqZWN0LG89XyhmdW5jdGlvbigpe3ZhciByPVtdLG89MCxhPTE7eShlLCExLGZ1bmN0aW9uKGUpe3ZhciBzPW8rKyx1PSExO3IucHVzaCh2b2lkIDApLGErKyx0LnJlc29sdmUoZSkudGhlbihmdW5jdGlvbihlKXt1fHwodT0hMCxyW3NdPWUsLS1hfHxuKHIpKX0saSl9KSwtLWF8fG4ocil9KTtyZXR1cm4gby5lJiZpKG8udiksci5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1PKHQpLG49ci5yZWplY3QsaT1fKGZ1bmN0aW9uKCl7eShlLCExLGZ1bmN0aW9uKGUpe3QucmVzb2x2ZShlKS50aGVuKHIucmVzb2x2ZSxuKX0pfSk7cmV0dXJuIGkuZSYmbihpLnYpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDU5KTtmdW5jdGlvbiBpKGUpe3ZhciB0LHI7dGhpcy5wcm9taXNlPW5ldyBlKGZ1bmN0aW9uKGUsbil7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09cil0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7dD1lLHI9bn0pLHRoaXMucmVzb2x2ZT1uKHQpLHRoaXMucmVqZWN0PW4ocil9ZS5leHBvcnRzLmY9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBpKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTIpLGk9cigxMyksbz1yKDQ0NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYobihlKSxpKHQpJiZ0LmNvbnN0cnVjdG9yPT09ZSlyZXR1cm4gdDt2YXIgcj1vLmYoZSk7cmV0dXJuKDAsci5yZXNvbHZlKSh0KSxyLnByb21pc2V9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjgpLmYsaT1yKDk3KSxvPXIoMTE0KSxhPXIoNTgpLHM9cigxMTMpLHU9cigxODYpLGM9cigyNjMpLGY9cig0NDApLGw9cigxMTIpLGg9cigyOSkscD1yKDgzKS5mYXN0S2V5LGQ9cigxMDEpLHk9aD8iX3MiOiJzaXplIixnPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1wKHQpO2lmKCJGIiE9PW4pcmV0dXJuIGUuX2lbbl07Zm9yKHI9ZS5fZjtyO3I9ci5uKWlmKHIuaz09dClyZXR1cm4gcn07ZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixjKXt2YXIgZj1lKGZ1bmN0aW9uKGUsbil7cyhlLGYsdCwiX2kiKSxlLl90PXQsZS5faT1pKG51bGwpLGUuX2Y9dm9pZCAwLGUuX2w9dm9pZCAwLGVbeV09MCx2b2lkIDAhPW4mJnUobixyLGVbY10sZSl9KTtyZXR1cm4gbyhmLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZCh0aGlzLHQpLHI9ZS5faSxuPWUuX2Y7bjtuPW4ubiluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRlIHJbbi5pXTtlLl9mPWUuX2w9dm9pZCAwLGVbeV09MH0sZGVsZXRlOmZ1bmN0aW9uKGUpe3ZhciByPWQodGhpcyx0KSxuPWcocixlKTtpZihuKXt2YXIgaT1uLm4sbz1uLnA7ZGVsZXRlIHIuX2lbbi5pXSxuLnI9ITAsbyYmKG8ubj1pKSxpJiYoaS5wPW8pLHIuX2Y9PW4mJihyLl9mPWkpLHIuX2w9PW4mJihyLl9sPW8pLHJbeV0tLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24oZSl7ZCh0aGlzLHQpO2Zvcih2YXIgcixuPWEoZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtyPXI/ci5uOnRoaXMuX2Y7KWZvcihuKHIudixyLmssdGhpcyk7ciYmci5yOylyPXIucH0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhZyhkKHRoaXMsdCksZSl9fSksaCYmbihmLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBkKHRoaXMsdClbeV19fSksZn0sZGVmOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLG89ZyhlLHQpO3JldHVybiBvP28udj1yOihlLl9sPW89e2k6aT1wKHQsITApLGs6dCx2OnIscDpuPWUuX2wsbjp2b2lkIDAscjohMX0sZS5fZnx8KGUuX2Y9byksbiYmKG4ubj1vKSxlW3ldKyssIkYiIT09aSYmKGUuX2lbaV09bykpLGV9LGdldEVudHJ5Omcsc2V0U3Ryb25nOmZ1bmN0aW9uKGUsdCxyKXtjKGUsdCxmdW5jdGlvbihlLHIpe3RoaXMuX3Q9ZChlLHQpLHRoaXMuX2s9cix0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5fayx0PXRoaXMuX2w7dCYmdC5yOyl0PXQucDtyZXR1cm4gdGhpcy5fdCYmKHRoaXMuX2w9dD10P3Qubjp0aGlzLl90Ll9mKT9mKDAsImtleXMiPT1lP3QuazoidmFsdWVzIj09ZT90LnY6W3Quayx0LnZdKToodGhpcy5fdD12b2lkIDAsZigxKSl9LHI/ImVudHJpZXMiOiJ2YWx1ZXMiLCFyLCEwKSxsKHQpfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMTQpLGk9cig4MykuZ2V0V2VhayxvPXIoMTIpLGE9cigxMykscz1yKDExMyksdT1yKDE4NiksYz1yKDYzKSxmPXIoNTApLGw9cigxMDEpLGg9Yyg1KSxwPWMoNiksZD0wLHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2x8fChlLl9sPW5ldyBnKX0sZz1mdW5jdGlvbigpe3RoaXMuYT1bXX0sdj1mdW5jdGlvbihlLHQpe3JldHVybiBoKGUuYSxmdW5jdGlvbihlKXtyZXR1cm4gZVswXT09PXR9KX07Zy5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihlKXt2YXIgdD12KHRoaXMsZSk7aWYodClyZXR1cm4gdFsxXX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhdih0aGlzLGUpfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj12KHRoaXMsZSk7cj9yWzFdPXQ6dGhpcy5hLnB1c2goW2UsdF0pfSxkZWxldGU6ZnVuY3Rpb24oZSl7dmFyIHQ9cCh0aGlzLmEsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1lfSk7cmV0dXJufnQmJnRoaXMuYS5zcGxpY2UodCwxKSwhIX50fX0sZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixvKXt2YXIgYz1lKGZ1bmN0aW9uKGUsbil7cyhlLGMsdCwiX2kiKSxlLl90PXQsZS5faT1kKyssZS5fbD12b2lkIDAsdm9pZCAwIT1uJiZ1KG4scixlW29dLGUpfSk7cmV0dXJuIG4oYy5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgcj1pKGUpO3JldHVybiEwPT09cj95KGwodGhpcyx0KSkuZGVsZXRlKGUpOnImJmYocix0aGlzLl9pKSYmZGVsZXRlIHJbdGhpcy5faV19LGhhczpmdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgcj1pKGUpO3JldHVybiEwPT09cj95KGwodGhpcyx0KSkuaGFzKGUpOnImJmYocix0aGlzLl9pKX19KSxjfSxkZWY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWkobyh0KSwhMCk7cmV0dXJuITA9PT1uP3koZSkuc2V0KHQscik6bltlLl9pXT1yLGV9LHVmc3RvcmU6eX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYwKSxpPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PW4oZSkscj1pKHQpO2lmKHQhPT1yKXRocm93IFJhbmdlRXJyb3IoIldyb25nIGxlbmd0aCEiKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDk4KSxpPXIoMTgwKSxvPXIoMTIpLGE9cigxNykuUmVmbGVjdDtlLmV4cG9ydHM9YSYmYS5vd25LZXlzfHxmdW5jdGlvbihlKXt2YXIgdD1uLmYobyhlKSkscj1pLmY7cmV0dXJuIHI/dC5jb25jYXQocihlKSk6dH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIzKSxpPXIoMjU5KSxvPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixhKXt2YXIgcz1TdHJpbmcobyhlKSksdT1zLmxlbmd0aCxjPXZvaWQgMD09PXI/IiAiOlN0cmluZyhyKSxmPW4odCk7aWYoZjw9dXx8IiI9PWMpcmV0dXJuIHM7dmFyIGw9Zi11LGg9aS5jYWxsKGMsTWF0aC5jZWlsKGwvYy5sZW5ndGgpKTtyZXR1cm4gaC5sZW5ndGg+bCYmKGg9aC5zbGljZSgwLGwpKSxhP2grczpzK2h9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOSksaT1yKDExMCksbz1yKDUxKSxhPXIoMTQ2KS5mO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciByLHM9byh0KSx1PWkocyksYz11Lmxlbmd0aCxmPTAsbD1bXTtjPmY7KXI9dVtmKytdLG4mJiFhLmNhbGwocyxyKXx8bC5wdXNoKGU/W3Isc1tyXV06c1tyXSk7cmV0dXJuIGx9fX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmV4cG9ydHM9e3ZlcnNpb246IjIuNi45In07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9cil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlN0YXR1c0NvZGVzPXQuREJOb3RSZXNldD10LkRCV3JvbmdQYXNzd29yZD10Lk5vREJQYXRoR2l2ZW49dC5GaXJtd2FyZU9yQXBwVXBkYXRlUmVxdWlyZWQ9dC5MZWRnZXJBUEk1eHg9dC5MZWRnZXJBUEk0eHg9dC5HZW51aW5lQ2hlY2tGYWlsZWQ9dC5QYWlyaW5nRmFpbGVkPXQuU3luY0Vycm9yPXQuRmVlUmVxdWlyZWQ9dC5GZWVOb3RMb2FkZWQ9dC5DYW50U2NhblFSQ29kZT10LkVUSEFkZHJlc3NOb25FSVA9dC5Xcm9uZ0FwcEZvckN1cnJlbmN5PXQuV3JvbmdEZXZpY2VGb3JBY2NvdW50PXQuV2Vic29ja2V0Q29ubmVjdGlvbkZhaWxlZD10LldlYnNvY2tldENvbm5lY3Rpb25FcnJvcj10LkRldmljZVNob3VsZFN0YXlJbkFwcD10LlRyYW5zcG9ydEludGVyZmFjZU5vdEF2YWlsYWJsZT10LlRyYW5zcG9ydE9wZW5Vc2VyQ2FuY2VsbGVkPXQuVXNlclJlZnVzZWRPbkRldmljZT10LlVzZXJSZWZ1c2VkQWxsb3dNYW5hZ2VyPXQuVXNlclJlZnVzZWRGaXJtd2FyZVVwZGF0ZT10LlVzZXJSZWZ1c2VkQWRkcmVzcz10LlVzZXJSZWZ1c2VkRGV2aWNlTmFtZUNoYW5nZT10LlVwZGF0ZVlvdXJBcHA9dC5VbmV4cGVjdGVkQm9vdGxvYWRlcj10LlRpbWVvdXRUYWdnZWQ9dC5QYXNzd29yZEluY29ycmVjdEVycm9yPXQuUGFzc3dvcmRzRG9udE1hdGNoRXJyb3I9dC5Ob3RFbm91Z2hHYXM9dC5Ob0FjY2Vzc1RvQ2FtZXJhPXQuTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQ9dC5Ob3RFbm91Z2hCYWxhbmNlPXQuTm9BZGRyZXNzZXNGb3VuZD10Lk5ldHdvcmtEb3duPXQuTWFuYWdlclVuaW5zdGFsbEJUQ0RlcD10Lk1hbmFnZXJOb3RFbm91Z2hTcGFjZUVycm9yPXQuTWFuYWdlckZpcm13YXJlTm90RW5vdWdoU3BhY2VFcnJvcj10Lk1hbmFnZXJEZXZpY2VMb2NrZWRFcnJvcj10Lk1hbmFnZXJBcHBSZWx5T25CVENFcnJvcj10Lk1hbmFnZXJBcHBBbHJlYWR5SW5zdGFsbGVkRXJyb3I9dC5MZWRnZXJBUElOb3RBdmFpbGFibGU9dC5MZWRnZXJBUElFcnJvcldpdGhNZXNzYWdlPXQuTGVkZ2VyQVBJRXJyb3I9dC5Vbmtub3duTUNVPXQuTGF0ZXN0TUNVSW5zdGFsbGVkRXJyb3I9dC5JbnZhbGlkQWRkcmVzc0JlY2F1c2VEZXN0aW5hdGlvbklzQWxzb1NvdXJjZT10LkludmFsaWRBZGRyZXNzPXQuSGFyZFJlc2V0RmFpbD10LkZlZUVzdGltYXRpb25GYWlsZWQ9dC5FdGhBcHBQbGVhc2VFbmFibGVDb250cmFjdERhdGE9dC5FbnBvaW50Q29uZmlnRXJyb3I9dC5EaXNjb25uZWN0ZWREZXZpY2VEdXJpbmdPcGVyYXRpb249dC5EaXNjb25uZWN0ZWREZXZpY2U9dC5EZXZpY2VTb2NrZXROb0J1bGtTdGF0dXM9dC5EZXZpY2VTb2NrZXRGYWlsPXQuRGV2aWNlTmFtZUludmFsaWQ9dC5EZXZpY2VIYWx0ZWQ9dC5EZXZpY2VJbk9TVUV4cGVjdGVkPXQuRGV2aWNlT25EYXNoYm9hcmRVbmV4cGVjdGVkPXQuRGV2aWNlT25EYXNoYm9hcmRFeHBlY3RlZD10LkRldmljZU5vdEdlbnVpbmVFcnJvcj10LkRldmljZUdlbnVpbmVTb2NrZXRFYXJseUNsb3NlPXQuRGV2aWNlQXBwVmVyaWZ5Tm90U3VwcG9ydGVkPXQuQ3VycmVuY3lOb3RTdXBwb3J0ZWQ9dC5DYXNoQWRkck5vdFN1cHBvcnRlZD10LkNhbnRPcGVuRGV2aWNlPXQuQnRjVW5tYXRjaGVkQXBwPXQuQmx1ZXRvb3RoUmVxdWlyZWQ9dC5BY2NvdW50Tm90U3VwcG9ydGVkPXQuQWNjb3VudE5hbWVSZXF1aXJlZEVycm9yPXQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9dC5jcmVhdGVDdXN0b21FcnJvckNsYXNzPXQuZGVzZXJpYWxpemVFcnJvcj10LnNlcmlhbGl6ZUVycm9yPXZvaWQgMCx0LlRyYW5zcG9ydEVycm9yPWksdC5nZXRBbHRTdGF0dXNNZXNzYWdlPWEsdC5UcmFuc3BvcnRTdGF0dXNFcnJvcj1zO3ZhciBuPXIoOTM5KTt0LnNlcmlhbGl6ZUVycm9yPW4uc2VyaWFsaXplRXJyb3IsdC5kZXNlcmlhbGl6ZUVycm9yPW4uZGVzZXJpYWxpemVFcnJvcix0LmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3M9bi5jcmVhdGVDdXN0b21FcnJvckNsYXNzLHQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9bi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcjt0LkFjY291bnROYW1lUmVxdWlyZWRFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJBY2NvdW50TmFtZVJlcXVpcmVkIiksdC5BY2NvdW50Tm90U3VwcG9ydGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkFjY291bnROb3RTdXBwb3J0ZWQiKSx0LkJsdWV0b290aFJlcXVpcmVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkJsdWV0b290aFJlcXVpcmVkIiksdC5CdGNVbm1hdGNoZWRBcHA9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiQnRjVW5tYXRjaGVkQXBwIiksdC5DYW50T3BlbkRldmljZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJDYW50T3BlbkRldmljZSIpLHQuQ2FzaEFkZHJOb3RTdXBwb3J0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiQ2FzaEFkZHJOb3RTdXBwb3J0ZWQiKSx0LkN1cnJlbmN5Tm90U3VwcG9ydGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkN1cnJlbmN5Tm90U3VwcG9ydGVkIiksdC5EZXZpY2VBcHBWZXJpZnlOb3RTdXBwb3J0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlQXBwVmVyaWZ5Tm90U3VwcG9ydGVkIiksdC5EZXZpY2VHZW51aW5lU29ja2V0RWFybHlDbG9zZT0oMCxuLmM="
}

Changelog:

{
    "2020.01.10 16:24": "base64:dHx8bj49dC5sZW5ndGg/KGUudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KToia2V5cyI9PXI/e3ZhbHVlOm4sZG9uZTohMX06InZhbHVlcyI9PXI/e3ZhbHVlOnRbbl0sZG9uZTohMX06e3ZhbHVlOltuLHRbbl1dLGRvbmU6ITF9fSwidmFsdWVzIiksby5Bcmd1bWVudHM9by5BcnJheSxpKCJrZXlzIiksaSgidmFsdWVzIiksaSgiZW50cmllcyIpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4MSksaT1yKDQwNSksbz1yKDI0NiksYT1yKDQwOCkscz1yKDI0MyksdT1yKDI0NykoIklFX1BST1RPIiksYz1mdW5jdGlvbigpe30sZj1mdW5jdGlvbigpe3ZhciBlLHQ9cygiaWZyYW1lIikscj1vLmxlbmd0aDtmb3IodC5zdHlsZS5kaXNwbGF5PSJub25lIixhLmFwcGVuZENoaWxkKHQpLHQuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwoZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxlLndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLGUuY2xvc2UoKSxmPWUuRjtyLS07KWRlbGV0ZSBmLnByb3RvdHlwZVtvW3JdXTtyZXR1cm4gZigpfTtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gbnVsbCE9PWU/KGMucHJvdG90eXBlPW4oZSkscj1uZXcgYyxjLnByb3RvdHlwZT1udWxsLHJbdV09ZSk6cj1mKCksdm9pZCAwPT09dD9yOmkocix0KX0scigyNDUpW3VdPSEwfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgpLGk9cigxNDApLG89cig4MSksYT1yKDQwNik7ZS5leHBvcnRzPW4/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtvKGUpO2Zvcih2YXIgcixuPWEodCkscz1uLmxlbmd0aCx1PTA7cz51OylpLmYoZSxyPW5bdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQwNyksaT1yKDI0Nik7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTcpLGk9cigxNzYpLG89cig3MjYpKCExKSxhPXIoMjQ1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcykhbihhLHIpJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDE3MykoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0MyksaT1yKDQxMyksbz1yKDQxNSksYT1yKDczNCkscz1yKDE3NyksdT1yKDY5KSxjPXIoMTQ0KSxmPXIoMTc1KSxsPXIoNTMpKCJpdGVyYXRvciIpLGg9cigxNDEpLHA9cig0MTQpLGQ9cC5JdGVyYXRvclByb3RvdHlwZSx5PXAuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixwLHYsbSxiKXtpKHIsdCxwKTt2YXIgXyxTLEUsdz1mdW5jdGlvbihlKXtpZihlPT09diYmSSlyZXR1cm4gSTtpZigheSYmZSBpbiBDKXJldHVybiBDW2VdO3N3aXRjaChlKXtjYXNlImtleXMiOmNhc2UidmFsdWVzIjpjYXNlImVudHJpZXMiOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcyl9fSxUPXQrIiBJdGVyYXRvciIsQT0hMSxDPWUucHJvdG90eXBlLHg9Q1tsXXx8Q1siQEBpdGVyYXRvciJdfHx2JiZDW3ZdLEk9IXkmJnh8fHcodiksaz0iQXJyYXkiPT10JiZDLmVudHJpZXN8fHg7aWYoayYmKF89byhrLmNhbGwobmV3IGUpKSxkIT09T2JqZWN0LnByb3RvdHlwZSYmXy5uZXh0JiYoZnx8byhfKT09PWR8fChhP2EoXyxkKToiZnVuY3Rpb24iIT10eXBlb2YgX1tsXSYmdShfLGwsZykpLHMoXyxULCEwLCEwKSxmJiYoaFtUXT1nKSkpLCJ2YWx1ZXMiPT12JiZ4JiYidmFsdWVzIiE9PXgubmFtZSYmKEE9ITAsST1mdW5jdGlvbigpe3JldHVybiB4LmNhbGwodGhpcyl9KSxmJiYhYnx8Q1tsXT09PUl8fHUoQyxsLEkpLGhbdF09SSx2KWlmKFM9e3ZhbHVlczp3KCJ2YWx1ZXMiKSxrZXlzOm0/STp3KCJrZXlzIiksZW50cmllczp3KCJlbnRyaWVzIil9LGIpZm9yKEUgaW4gUykheSYmIUEmJkUgaW4gQ3x8YyhDLEUsU1tFXSk7ZWxzZSBuKHt0YXJnZXQ6dCxwcm90bzohMCxmb3JjZWQ6eXx8QX0sUyk7cmV0dXJuIFN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWkmJiFuLmNhbGwoezE6Mn0sMSk7dC5mPW8/ZnVuY3Rpb24oZSl7dmFyIHQ9aSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTpufSxmdW5jdGlvbihlLHQpe3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDE0KS5JdGVyYXRvclByb3RvdHlwZSxpPXIoNDA0KSxvPXIoMTc0KSxhPXIoMTc3KSxzPXIoMTQxKSx1PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGM9dCsiIEl0ZXJhdG9yIjtyZXR1cm4gZS5wcm90b3R5cGU9aShuLHtuZXh0Om8oMSxyKX0pLGEoZSxjLCExLCEwKSxzW2NdPXUsZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saSxvLGE9cig0MTUpLHM9cig2OSksdT1yKDU3KSxjPXIoMTc1KSxmPXIoNTMpKCJpdGVyYXRvciIpLGw9ITE7W10ua2V5cyYmKCJuZXh0ImluKG89W10ua2V5cygpKT8oaT1hKGEobykpKSE9PU9iamVjdC5wcm90b3R5cGUmJihuPWkpOmw9ITApLHZvaWQgMD09biYmKG49e30pLGN8fHUobixmKXx8cyhuLGYsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6bixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOmx9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1NyksaT1yKDE3Miksbz1yKDI0NykoIklFX1BST1RPIiksYT1yKDczMykscz1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1hP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZT1pKGUpLG4oZSxvKT9lW29dOiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yJiZlIGluc3RhbmNlb2YgZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTplIGluc3RhbmNlb2YgT2JqZWN0P3M6bnVsbH19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMjkpJiYhcigxNCkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoMjQ5KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj12b2lkIDA9PT1yO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuP2UoKTplLmNhbGwocik7Y2FzZSAxOnJldHVybiBuP2UodFswXSk6ZS5jYWxsKHIsdFswXSk7Y2FzZSAyOnJldHVybiBuP2UodFswXSx0WzFdKTplLmNhbGwocix0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gbj9lKHRbMF0sdFsxXSx0WzJdKTplLmNhbGwocix0WzBdLHRbMV0sdFsyXSk7Y2FzZSA0OnJldHVybiBuP2UodFswXSx0WzFdLHRbMl0sdFszXSk6ZS5jYWxsKHIsdFswXSx0WzFdLHRbMl0sdFszXSl9cmV0dXJuIGUuYXBwbHkocix0KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI0MSksaT1yKDIzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhLHM9U3RyaW5nKGkoZSkpLHU9bih0KSxjPXMubGVuZ3RoO3JldHVybiB1PDB8fHU+PWM/cj8iIjp2b2lkIDA6KG89cy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8bz41NjMxOXx8dSsxPT09Y3x8KGE9cy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP3I/cy5jaGFyQXQodSk6bzpyP3Muc2xpY2UodSx1KzIpOmEtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3NSksaT1yKDUzKSgiaXRlcmF0b3IiKTtlLmV4cG9ydHM9IXIoNjgpKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVSTCgiYj9lPTEiLCJodHRwOi8vYSIpLHQ9ZS5zZWFyY2hQYXJhbXM7cmV0dXJuIGUucGF0aG5hbWU9ImMlMjBkIixuJiYhZS50b0pTT058fCF0LnNvcnR8fCJodHRwOi8vYS9jJTIwZD9lPTEiIT09ZS5ocmVmfHwiMSIhPT10LmdldCgiZSIpfHwiYT0xIiE9PVN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCI/YT0xIikpfHwhdFtpXXx8ImEiIT09bmV3IFVSTCgiaHR0cHM6Ly9hQGIiKS51c2VybmFtZXx8ImIiIT09bmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCJhPWIiKSkuZ2V0KCJhIil8fCJ4bi0tZTFheWJjIiE9PW5ldyBVUkwoImh0dHA6Ly9cdTA0NDJcdTA0MzVcdTA0NDFcdTA0NDIiKS5ob3N0fHwiIyVEMCVCMSIhPT1uZXcgVVJMKCJodHRwOi8vYSNcdTA0MzEiKS5oYXNofSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCAiKyhyP3IrIiAiOiIiKSsiaW52b2NhdGlvbiIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDQwMyk7dmFyIG49cig0MTkpLGk9cigxNDQpLG89cig3NTEpLGE9cig0MTMpLHM9cigxNDIpLHU9cig0MjApLGM9cig1NyksZj1yKDE3MSksbD1yKDgxKSxoPXIoOTIpLHA9cig3NTIpLGQ9cigyNTIpLHk9cig1MykoIml0ZXJhdG9yIiksZz1zLnNldCx2PXMuZ2V0dGVyRm9yKCJVUkxTZWFyY2hQYXJhbXMiKSxtPXMuZ2V0dGVyRm9yKCJVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciIpLGI9L1wrL2csXz1BcnJheSg0KSxTPWZ1bmN0aW9uKGUpe3JldHVybiBfW2UtMV18fChfW2UtMV09UmVnRXhwKCIoKD86JVtcXGRhLWZdezJ9KXsiK2UrIn0pIiwiZ2kiKSl9LEU9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2godCl7cmV0dXJuIGV9fSx3PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnJlcGxhY2UoYiwiICIpLHI9NDtyOyl0PXQucmVwbGFjZShTKHItLSksRSk7cmV0dXJuIHR9LFQ9L1shJygpfl18JTIwL2csQT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyJ9LEM9ZnVuY3Rpb24oZSl7cmV0dXJuIEFbZV19LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKFQsQyl9LEk9ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgcixuLGk9dC5zcGxpdCgiJiIpLG89MDtvPGkubGVuZ3RoOykocj1pW28rK10pLmxlbmd0aCYmKG49ci5zcGxpdCgiPSIpLGUucHVzaCh7a2V5Oncobi5zaGlmdCgpKSx2YWx1ZTp3KG4uam9pbigiPSIpKX0pKTtyZXR1cm4gZX0saz1mdW5jdGlvbihlKXt0aGlzLmVudHJpZXMubGVuZ3RoPTAsSSh0aGlzLmVudHJpZXMsZSl9LE89ZnVuY3Rpb24oZSx0KXtpZihlPHQpdGhyb3cgVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpfSxOPWEoZnVuY3Rpb24oZSx0KXtnKHRoaXMse3R5cGU6IlVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yIixpdGVyYXRvcjpwKHYoZSkuZW50cmllcyksa2luZDp0fSl9LCJJdGVyYXRvciIsZnVuY3Rpb24oKXt2YXIgZT1tKHRoaXMpLHQ9ZS5raW5kLHI9ZS5pdGVyYXRvci5uZXh0KCksbj1yLnZhbHVlO3JldHVybiByLmRvbmV8fChyLnZhbHVlPSJrZXlzIj09PXQ/bi5rZXk6InZhbHVlcyI9PT10P24udmFsdWU6W24ua2V5LG4udmFsdWVdKSxyfSksUD1mdW5jdGlvbigpe3UodGhpcyxQLCJVUkxTZWFyY2hQYXJhbXMiKTt2YXIgZSx0LHIsbixpLG8sYSxzPWFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwLGY9W107aWYoZyh0aGlzLHt0eXBlOiJVUkxTZWFyY2hQYXJhbXMiLGVudHJpZXM6Zix1cGRhdGVVUkw6bnVsbCx1cGRhdGVTZWFyY2hQYXJhbXM6a30pLHZvaWQgMCE9PXMpaWYoaChzKSlpZigiZnVuY3Rpb24iPT09dHlwZW9mKGU9ZChzKSkpZm9yKHQ9ZS5jYWxsKHMpOyEocj10Lm5leHQoKSkuZG9uZTspe2lmKChpPShuPXAobChyLnZhbHVlKSkpLm5leHQoKSkuZG9uZXx8KG89bi5uZXh0KCkpLmRvbmV8fCFuLm5leHQoKS5kb25lKXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgc2VxdWVuY2Ugd2l0aCBsZW5ndGggMiIpO2YucHVzaCh7a2V5OmkudmFsdWUrIiIsdmFsdWU6by52YWx1ZSsiIn0pfWVsc2UgZm9yKGEgaW4gcyljKHMsYSkmJmYucHVzaCh7a2V5OmEsdmFsdWU6c1thXSsiIn0pO2Vsc2UgSShmLCJzdHJpbmciPT09dHlwZW9mIHM/Ij8iPT09cy5jaGFyQXQoMCk/cy5zbGljZSgxKTpzOnMrIiIpfSxSPVAucHJvdG90eXBlO28oUix7YXBwZW5kOmZ1bmN0aW9uKGUsdCl7Tyhhcmd1bWVudHMubGVuZ3RoLDIpO3ZhciByPXYodGhpcyk7ci5lbnRyaWVzLnB1c2goe2tleTplKyIiLHZhbHVlOnQrIiJ9KSxyLnVwZGF0ZVVSTCYmci51cGRhdGVVUkwoKX0sZGVsZXRlOmZ1bmN0aW9uKGUpe08oYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIHQ9dih0aGlzKSxyPXQuZW50cmllcyxuPWUrIiIsaT0wO2k8ci5sZW5ndGg7KXJbaV0ua2V5PT09bj9yLnNwbGljZShpLDEpOmkrKzt0LnVwZGF0ZVVSTCYmdC51cGRhdGVVUkwoKX0sZ2V0OmZ1bmN0aW9uKGUpe08oYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIHQ9dih0aGlzKS5lbnRyaWVzLHI9ZSsiIixuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXS5rZXk9PT1yKXJldHVybiB0W25dLnZhbHVlO3JldHVybiBudWxsfSxnZXRBbGw6ZnVuY3Rpb24oZSl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgdD12KHRoaXMpLmVudHJpZXMscj1lKyIiLG49W10saT0wO2k8dC5sZW5ndGg7aSsrKXRbaV0ua2V5PT09ciYmbi5wdXNoKHRbaV0udmFsdWUpO3JldHVybiBufSxoYXM6ZnVuY3Rpb24oZSl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgdD12KHRoaXMpLmVudHJpZXMscj1lKyIiLG49MDtuPHQubGVuZ3RoOylpZih0W24rK10ua2V5PT09cilyZXR1cm4hMDtyZXR1cm4hMX0sc2V0OmZ1bmN0aW9uKGUsdCl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgcixuPXYodGhpcyksaT1uLmVudHJpZXMsbz0hMSxhPWUrIiIscz10KyIiLHU9MDt1PGkubGVuZ3RoO3UrKykocj1pW3VdKS5rZXk9PT1hJiYobz9pLnNwbGljZSh1LS0sMSk6KG89ITAsci52YWx1ZT1zKSk7b3x8aS5wdXNoKHtrZXk6YSx2YWx1ZTpzfSksbi51cGRhdGVVUkwmJm4udXBkYXRlVVJMKCl9LHNvcnQ6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj12KHRoaXMpLGk9bi5lbnRyaWVzLG89aS5zbGljZSgpO2ZvcihpLmxlbmd0aD0wLHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Zm9yKGU9b1t0XSxyPTA7cjx0O3IrKylpZihpW3JdLmtleT5lLmtleSl7aS5zcGxpY2UociwwLGUpO2JyZWFrfXI9PT10JiZpLnB1c2goZSl9bi51cGRhdGVVUkwmJm4udXBkYXRlVVJMKCl9LGZvckVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9dih0aGlzKS5lbnRyaWVzLG49ZihlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLGk9MDtpPHIubGVuZ3RoOyluKCh0PXJbaSsrXSkudmFsdWUsdC5rZXksdGhpcyl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywia2V5cyIpfSx2YWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywidmFsdWVzIil9LGVudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywiZW50cmllcyIpfX0se2VudW1lcmFibGU6ITB9KSxpKFIseSxSLmVudHJpZXMpLGkoUiwidG9TdHJpbmciLGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dih0aGlzKS5lbnRyaWVzLHI9W10sbj0wO248dC5sZW5ndGg7KWU9dFtuKytdLHIucHVzaCh4KGUua2V5KSsiPSIreChlLnZhbHVlKSk7cmV0dXJuIHIuam9pbigiJiIpfSx7ZW51bWVyYWJsZTohMH0pLHIoMTc3KShQLCJVUkxTZWFyY2hQYXJhbXMiKSxyKDE0Mykoe2dsb2JhbDohMCxmb3JjZWQ6IW59LHtVUkxTZWFyY2hQYXJhbXM6UH0pLGUuZXhwb3J0cz17VVJMU2VhcmNoUGFyYW1zOlAsZ2V0U3RhdGU6dn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KSxpPXIoMjcpLG89cig5NSksYT1yKDI1Mykscz1yKDI4KS5mO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pLlN5bWJvbHx8KGkuU3ltYm9sPW8/e306bi5TeW1ib2x8fHt9KTsiXyI9PWUuY2hhckF0KDApfHxlIGluIHR8fHModCxlLHt2YWx1ZTphLmYoZSl9KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUwKSxpPXIoNTEpLG89cigxNzkpKCExKSxhPXIoMjU0KSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcylyIT1hJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cigxMiksbz1yKDExMCk7ZS5leHBvcnRzPXIoMjkpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7aShlKTtmb3IodmFyIHIsYT1vKHQpLHM9YS5sZW5ndGgsdT0wO3M+dTspbi5mKGUscj1hW3UrK10sdFtyXSk7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MSksaT1yKDk4KS5mLG89e30udG9TdHJpbmcsYT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBhJiYiW29iamVjdCBXaW5kb3ddIj09by5jYWxsKGUpP2Z1bmN0aW9uKGUpe3RyeXtyZXR1cm4gaShlKX1jYXRjaCh0KXtyZXR1cm4gYS5zbGljZSgpfX0oZSk6aShuKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyOSksaT1yKDExMCksbz1yKDE4MCksYT1yKDE0Nikscz1yKDM2KSx1PXIoMTQ1KSxjPU9iamVjdC5hc3NpZ247ZS5leHBvcnRzPSFjfHxyKDE0KShmdW5jdGlvbigpe3ZhciBlPXt9LHQ9e30scj1TeW1ib2woKSxuPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIGVbcl09NyxuLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZX0pLDchPWMoe30sZSlbcl18fE9iamVjdC5rZXlzKGMoe30sdCkpLmpvaW4oIiIpIT1ufSk/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9cyhlKSxjPWFyZ3VtZW50cy5sZW5ndGgsZj0xLGw9by5mLGg9YS5mO2M+ZjspZm9yKHZhciBwLGQ9dShhcmd1bWVudHNbZisrXSkseT1sP2koZCkuY29uY2F0KGwoZCkpOmkoZCksZz15Lmxlbmd0aCx2PTA7Zz52OylwPXlbdisrXSxuJiYhaC5jYWxsKGQscCl8fChyW3BdPWRbcF0pO3JldHVybiByfTpjfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9ZSYmdCE9dH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1OSksaT1yKDEzKSxvPXIoNDE3KSxhPVtdLnNsaWNlLHM9e307ZS5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcykscj1hLmNhbGwoYXJndW1lbnRzLDEpLHU9ZnVuY3Rpb24gbigpe3ZhciBpPXIuY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/ZnVuY3Rpb24oZSx0LHIpe2lmKCEodCBpbiBzKSl7Zm9yKHZhciBuPVtdLGk9MDtpPHQ7aSsrKW5baV09ImFbIitpKyJdIjtzW3RdPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIituLmpvaW4oIiwiKSsiKSIpfXJldHVybiBzW3RdKGUscil9KHQsaS5sZW5ndGgsaSk6byh0LGksZSl9O3JldHVybiBpKHQucHJvdG90eXBlKSYmKHUucHJvdG90eXBlPXQucHJvdG90eXBlKSx1fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcpLnBhcnNlSW50LGk9cigxMTEpLnRyaW0sbz1yKDI1NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNykucGFyc2VGbG9hdCxpPXIoMTExKS50cmltO2UuZXhwb3J0cz0xL24ocigyNTcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJiJOdW1iZXIiIT1uKGUpKXRocm93IFR5cGVFcnJvcih0KTtyZXR1cm4rZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmaShlKT09PWV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSk+LTFlLTgmJmU8MWUtOD9lLWUqZS8yOk1hdGgubG9nKDErZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTcpLGk9cig5Myksbz1yKDEwOSksYT17fTtyKDU0KShhLHIoMjEpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2UucHJvdG90eXBlPW4oYSx7bmV4dDppKDEscil9KSxvKGUsdCsiIEl0ZXJhdG9yIil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGkpe3RyeXtyZXR1cm4gaT90KG4ocilbMF0sclsxXSk6dChyKX1jYXRjaChhKXt2YXIgbz1lLnJldHVybjt0aHJvdyB2b2lkIDAhPT1vJiZuKG8uY2FsbChlKSksYX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NDUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcobihlKSkodCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1OSksaT1yKDM2KSxvPXIoMTQ1KSxhPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixzLHUpe24odCk7dmFyIGM9aShlKSxmPW8oYyksbD1hKGMubGVuZ3RoKSxoPXU/bC0xOjAscD11Py0xOjE7aWYocjwyKWZvcig7Oyl7aWYoaCBpbiBmKXtzPWZbaF0saCs9cDticmVha31pZihoKz1wLHU/aDwwOmw8PWgpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt1P2g+PTA6bD5oO2grPXApaCBpbiBmJiYocz10KHMsZltoXSxoLGMpKTtyZXR1cm4gc319LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzNiksaT1yKDk2KSxvPXIoMjMpO2UuZXhwb3J0cz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbihlLHQpe3ZhciByPW4odGhpcyksYT1vKHIubGVuZ3RoKSxzPWkoZSxhKSx1PWkodCxhKSxjPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGY9TWF0aC5taW4oKHZvaWQgMD09PWM/YTppKGMsYSkpLXUsYS1zKSxsPTE7Zm9yKHU8cyYmczx1K2YmJihsPS0xLHUrPWYtMSxzKz1mLTEpO2YtLSA+MDspdSBpbiByP3Jbc109clt1XTpkZWxldGUgcltzXSxzKz1sLHUrPWw7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTAwKSxpPXIoNDQwKSxvPXIoMTQ4KSxhPXIoNTEpO2UuZXhwb3J0cz1yKDI2MykoQXJyYXksIkFycmF5IixmdW5jdGlvbihlLHQpe3RoaXMuX3Q9YShlKSx0aGlzLl9pPTAsdGhpcy5faz10fSxmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3QsdD10aGlzLl9rLHI9dGhpcy5faSsrO3JldHVybiFlfHxyPj1lLmxlbmd0aD8odGhpcy5fdD12b2lkIDAsaSgxKSk6aSgwLCJrZXlzIj09dD9yOiJ2YWx1ZXMiPT10P2Vbcl06W3IsZVtyXV0pfSwidmFsdWVzIiksby5Bcmd1bWVudHM9by5BcnJheSxuKCJrZXlzIiksbigidmFsdWVzIiksbigiZW50cmllcyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTp0LGRvbmU6ISFlfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyNzEpO3IoMikoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6biE9PS8uLy5leGVjfSx7ZXhlYzpufSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDI5KSYmImciIT0vLi9nLmZsYWdzJiZyKDI4KS5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpyKDE4Myl9KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpLG8sYSxzPXIoOTUpLHU9cigxNyksYz1yKDU4KSxmPXIoMTQ3KSxsPXIoMiksaD1yKDEzKSxwPXIoNTkpLGQ9cigxMTMpLHk9cigxODYpLGc9cigxNDkpLHY9cigyNTApLnNldCxtPXIoODY1KSgpLGI9cig0NDQpLF89cig4NjYpLFM9cigyNzMpLEU9cig0NDUpLHc9dS5UeXBlRXJyb3IsVD11LnByb2Nlc3MsQT1UJiZULnZlcnNpb25zLEM9QSYmQS52OHx8IiIseD11LlByb21pc2UsST0icHJvY2VzcyI9PWYoVCksaz1mdW5jdGlvbigpe30sTz1pPWIuZixOPSEhZnVuY3Rpb24oKXt0cnl7dmFyIGU9eC5yZXNvbHZlKDEpLHQ9KGUuY29uc3RydWN0b3I9e30pW3IoMjEpKCJzcGVjaWVzIildPWZ1bmN0aW9uKGUpe2UoayxrKX07cmV0dXJuKEl8fCJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZlLnRoZW4oaylpbnN0YW5jZW9mIHQmJjAhPT1DLmluZGV4T2YoIjYuNiIpJiYtMT09PVMuaW5kZXhPZigiQ2hyb21lLzY2Iil9Y2F0Y2gobil7fX0oKSxQPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEoIWgoZSl8fCJmdW5jdGlvbiIhPXR5cGVvZih0PWUudGhlbikpJiZ0fSxSPWZ1bmN0aW9uKGUsdCl7aWYoIWUuX24pe2UuX249ITA7dmFyIHI9ZS5fYzttKGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWUuX3YsaT0xPT1lLl9zLG89MCxhPWZ1bmN0aW9uKHQpe3ZhciByLG8sYSxzPWk/dC5vazp0LmZhaWwsdT10LnJlc29sdmUsYz10LnJlamVjdCxmPXQuZG9tYWluO3RyeXtzPyhpfHwoMj09ZS5faCYmTChlKSxlLl9oPTEpLCEwPT09cz9yPW46KGYmJmYuZW50ZXIoKSxyPXMobiksZiYmKGYuZXhpdCgpLGE9ITApKSxyPT09dC5wcm9taXNlP2ModygiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToobz1QKHIpKT9vLmNhbGwocix1LGMpOnUocikpOmMobil9Y2F0Y2gobCl7ZiYmIWEmJmYuZXhpdCgpLGMobCl9fTtyLmxlbmd0aD5vOylhKHJbbysrXSk7ZS5fYz1bXSxlLl9uPSExLHQmJiFlLl9oJiZCKGUpfSl9fSxCPWZ1bmN0aW9uKGUpe3YuY2FsbCh1LGZ1bmN0aW9uKCl7dmFyIHQscixuLGk9ZS5fdixvPU0oZSk7aWYobyYmKHQ9XyhmdW5jdGlvbigpe0k/VC5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLGksZSk6KHI9dS5vbnVuaGFuZGxlZHJlamVjdGlvbik/cih7cHJvbWlzZTplLHJlYXNvbjppfSk6KG49dS5jb25zb2xlKSYmbi5lcnJvciYmbi5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixpKX0pLGUuX2g9SXx8TShlKT8yOjEpLGUuX2E9dm9pZCAwLG8mJnQuZSl0aHJvdyB0LnZ9KX0sTT1mdW5jdGlvbihlKXtyZXR1cm4gMSE9PWUuX2gmJjA9PT0oZS5fYXx8ZS5fYykubGVuZ3RofSxMPWZ1bmN0aW9uKGUpe3YuY2FsbCh1LGZ1bmN0aW9uKCl7dmFyIHQ7ST9ULmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLGUpOih0PXUub25yZWplY3Rpb25oYW5kbGVkKSYmdCh7cHJvbWlzZTplLHJlYXNvbjplLl92fSl9KX0sRD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuX2R8fCh0Ll9kPSEwLCh0PXQuX3d8fHQpLl92PWUsdC5fcz0yLHQuX2F8fCh0Ll9hPXQuX2Muc2xpY2UoKSksUih0LCEwKSl9LGo9ZnVuY3Rpb24gZSh0KXt2YXIgcixuPXRoaXM7aWYoIW4uX2Qpe24uX2Q9ITAsbj1uLl93fHxuO3RyeXtpZihuPT09dCl0aHJvdyB3KCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhyPVAodCkpP20oZnVuY3Rpb24oKXt2YXIgaT17X3c6bixfZDohMX07dHJ5e3IuY2FsbCh0LGMoZSxpLDEpLGMoRCxpLDEpKX1jYXRjaChvKXtELmNhbGwoaSxvKX19KToobi5fdj10LG4uX3M9MSxSKG4sITEpKX1jYXRjaChpKXtELmNhbGwoe193Om4sX2Q6ITF9LGkpfX19O058fCh4PWZ1bmN0aW9uKGUpe2QodGhpcyx4LCJQcm9taXNlIiwiX2giKSxwKGUpLG4uY2FsbCh0aGlzKTt0cnl7ZShjKGosdGhpcywxKSxjKEQsdGhpcywxKSl9Y2F0Y2godCl7RC5jYWxsKHRoaXMsdCl9fSwobj1mdW5jdGlvbihlKXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSkucHJvdG90eXBlPXIoMTE0KSh4LnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbihlLHQpe3ZhciByPU8oZyh0aGlzLHgpKTtyZXR1cm4gci5vaz0iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZSxyLmZhaWw9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQsci5kb21haW49ST9ULmRvbWFpbjp2b2lkIDAsdGhpcy5fYy5wdXNoKHIpLHRoaXMuX2EmJnRoaXMuX2EucHVzaChyKSx0aGlzLl9zJiZSKHRoaXMsITEpLHIucHJvbWlzZX0sY2F0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9fSksbz1mdW5jdGlvbigpe3ZhciBlPW5ldyBuO3RoaXMucHJvbWlzZT1lLHRoaXMucmVzb2x2ZT1jKGosZSwxKSx0aGlzLnJlamVjdD1jKEQsZSwxKX0sYi5mPU89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT14fHxlPT09YT9uZXcgbyhlKTppKGUpfSksbChsLkcrbC5XK2wuRiohTix7UHJvbWlzZTp4fSkscigxMDkpKHgsIlByb21pc2UiKSxyKDExMikoIlByb21pc2UiKSxhPXIoMjcpLlByb21pc2UsbChsLlMrbC5GKiFOLCJQcm9taXNlIix7cmVqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0PU8odGhpcyk7cmV0dXJuKDAsdC5yZWplY3QpKGUpLHQucHJvbWlzZX19KSxsKGwuUytsLkYqKHN8fCFOKSwiUHJvbWlzZSIse3Jlc29sdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUocyYmdGhpcz09PWE/eDp0aGlzLGUpfX0pLGwobC5TK2wuRiohKE4mJnIoMTgyKShmdW5jdGlvbihlKXt4LmFsbChlKS5jYXRjaChrKX0pKSwiUHJvbWlzZSIse2FsbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9Tyh0KSxuPXIucmVzb2x2ZSxpPXIucmVqZWN0LG89XyhmdW5jdGlvbigpe3ZhciByPVtdLG89MCxhPTE7eShlLCExLGZ1bmN0aW9uKGUpe3ZhciBzPW8rKyx1PSExO3IucHVzaCh2b2lkIDApLGErKyx0LnJlc29sdmUoZSkudGhlbihmdW5jdGlvbihlKXt1fHwodT0hMCxyW3NdPWUsLS1hfHxuKHIpKX0saSl9KSwtLWF8fG4ocil9KTtyZXR1cm4gby5lJiZpKG8udiksci5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1PKHQpLG49ci5yZWplY3QsaT1fKGZ1bmN0aW9uKCl7eShlLCExLGZ1bmN0aW9uKGUpe3QucmVzb2x2ZShlKS50aGVuKHIucmVzb2x2ZSxuKX0pfSk7cmV0dXJuIGkuZSYmbihpLnYpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDU5KTtmdW5jdGlvbiBpKGUpe3ZhciB0LHI7dGhpcy5wcm9taXNlPW5ldyBlKGZ1bmN0aW9uKGUsbil7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09cil0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7dD1lLHI9bn0pLHRoaXMucmVzb2x2ZT1uKHQpLHRoaXMucmVqZWN0PW4ocil9ZS5leHBvcnRzLmY9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBpKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTIpLGk9cigxMyksbz1yKDQ0NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYobihlKSxpKHQpJiZ0LmNvbnN0cnVjdG9yPT09ZSlyZXR1cm4gdDt2YXIgcj1vLmYoZSk7cmV0dXJuKDAsci5yZXNvbHZlKSh0KSxyLnByb21pc2V9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjgpLmYsaT1yKDk3KSxvPXIoMTE0KSxhPXIoNTgpLHM9cigxMTMpLHU9cigxODYpLGM9cigyNjMpLGY9cig0NDApLGw9cigxMTIpLGg9cigyOSkscD1yKDgzKS5mYXN0S2V5LGQ9cigxMDEpLHk9aD8iX3MiOiJzaXplIixnPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1wKHQpO2lmKCJGIiE9PW4pcmV0dXJuIGUuX2lbbl07Zm9yKHI9ZS5fZjtyO3I9ci5uKWlmKHIuaz09dClyZXR1cm4gcn07ZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixjKXt2YXIgZj1lKGZ1bmN0aW9uKGUsbil7cyhlLGYsdCwiX2kiKSxlLl90PXQsZS5faT1pKG51bGwpLGUuX2Y9dm9pZCAwLGUuX2w9dm9pZCAwLGVbeV09MCx2b2lkIDAhPW4mJnUobixyLGVbY10sZSl9KTtyZXR1cm4gbyhmLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZCh0aGlzLHQpLHI9ZS5faSxuPWUuX2Y7bjtuPW4ubiluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRlIHJbbi5pXTtlLl9mPWUuX2w9dm9pZCAwLGVbeV09MH0sZGVsZXRlOmZ1bmN0aW9uKGUpe3ZhciByPWQodGhpcyx0KSxuPWcocixlKTtpZihuKXt2YXIgaT1uLm4sbz1uLnA7ZGVsZXRlIHIuX2lbbi5pXSxuLnI9ITAsbyYmKG8ubj1pKSxpJiYoaS5wPW8pLHIuX2Y9PW4mJihyLl9mPWkpLHIuX2w9PW4mJihyLl9sPW8pLHJbeV0tLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24oZSl7ZCh0aGlzLHQpO2Zvcih2YXIgcixuPWEoZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtyPXI/ci5uOnRoaXMuX2Y7KWZvcihuKHIudixyLmssdGhpcyk7ciYmci5yOylyPXIucH0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhZyhkKHRoaXMsdCksZSl9fSksaCYmbihmLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBkKHRoaXMsdClbeV19fSksZn0sZGVmOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLG89ZyhlLHQpO3JldHVybiBvP28udj1yOihlLl9sPW89e2k6aT1wKHQsITApLGs6dCx2OnIscDpuPWUuX2wsbjp2b2lkIDAscjohMX0sZS5fZnx8KGUuX2Y9byksbiYmKG4ubj1vKSxlW3ldKyssIkYiIT09aSYmKGUuX2lbaV09bykpLGV9LGdldEVudHJ5Omcsc2V0U3Ryb25nOmZ1bmN0aW9uKGUsdCxyKXtjKGUsdCxmdW5jdGlvbihlLHIpe3RoaXMuX3Q9ZChlLHQpLHRoaXMuX2s9cix0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5fayx0PXRoaXMuX2w7dCYmdC5yOyl0PXQucDtyZXR1cm4gdGhpcy5fdCYmKHRoaXMuX2w9dD10P3Qubjp0aGlzLl90Ll9mKT9mKDAsImtleXMiPT1lP3QuazoidmFsdWVzIj09ZT90LnY6W3Quayx0LnZdKToodGhpcy5fdD12b2lkIDAsZigxKSl9LHI/ImVudHJpZXMiOiJ2YWx1ZXMiLCFyLCEwKSxsKHQpfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMTQpLGk9cig4MykuZ2V0V2VhayxvPXIoMTIpLGE9cigxMykscz1yKDExMyksdT1yKDE4NiksYz1yKDYzKSxmPXIoNTApLGw9cigxMDEpLGg9Yyg1KSxwPWMoNiksZD0wLHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2x8fChlLl9sPW5ldyBnKX0sZz1mdW5jdGlvbigpe3RoaXMuYT1bXX0sdj1mdW5jdGlvbihlLHQpe3JldHVybiBoKGUuYSxmdW5jdGlvbihlKXtyZXR1cm4gZVswXT09PXR9KX07Zy5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihlKXt2YXIgdD12KHRoaXMsZSk7aWYodClyZXR1cm4gdFsxXX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhdih0aGlzLGUpfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj12KHRoaXMsZSk7cj9yWzFdPXQ6dGhpcy5hLnB1c2goW2UsdF0pfSxkZWxldGU6ZnVuY3Rpb24oZSl7dmFyIHQ9cCh0aGlzLmEsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1lfSk7cmV0dXJufnQmJnRoaXMuYS5zcGxpY2UodCwxKSwhIX50fX0sZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixvKXt2YXIgYz1lKGZ1bmN0aW9uKGUsbil7cyhlLGMsdCwiX2kiKSxlLl90PXQsZS5faT1kKyssZS5fbD12b2lkIDAsdm9pZCAwIT1uJiZ1KG4scixlW29dLGUpfSk7cmV0dXJuIG4oYy5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgcj1pKGUpO3JldHVybiEwPT09cj95KGwodGhpcyx0KSkuZGVsZXRlKGUpOnImJmYocix0aGlzLl9pKSYmZGVsZXRlIHJbdGhpcy5faV19LGhhczpmdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgcj1pKGUpO3JldHVybiEwPT09cj95KGwodGhpcyx0KSkuaGFzKGUpOnImJmYocix0aGlzLl9pKX19KSxjfSxkZWY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWkobyh0KSwhMCk7cmV0dXJuITA9PT1uP3koZSkuc2V0KHQscik6bltlLl9pXT1yLGV9LHVmc3RvcmU6eX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYwKSxpPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PW4oZSkscj1pKHQpO2lmKHQhPT1yKXRocm93IFJhbmdlRXJyb3IoIldyb25nIGxlbmd0aCEiKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDk4KSxpPXIoMTgwKSxvPXIoMTIpLGE9cigxNykuUmVmbGVjdDtlLmV4cG9ydHM9YSYmYS5vd25LZXlzfHxmdW5jdGlvbihlKXt2YXIgdD1uLmYobyhlKSkscj1pLmY7cmV0dXJuIHI/dC5jb25jYXQocihlKSk6dH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIzKSxpPXIoMjU5KSxvPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixhKXt2YXIgcz1TdHJpbmcobyhlKSksdT1zLmxlbmd0aCxjPXZvaWQgMD09PXI/IiAiOlN0cmluZyhyKSxmPW4odCk7aWYoZjw9dXx8IiI9PWMpcmV0dXJuIHM7dmFyIGw9Zi11LGg9aS5jYWxsKGMsTWF0aC5jZWlsKGwvYy5sZW5ndGgpKTtyZXR1cm4gaC5sZW5ndGg+bCYmKGg9aC5zbGljZSgwLGwpKSxhP2grczpzK2h9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOSksaT1yKDExMCksbz1yKDUxKSxhPXIoMTQ2KS5mO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciByLHM9byh0KSx1PWkocyksYz11Lmxlbmd0aCxmPTAsbD1bXTtjPmY7KXI9dVtmKytdLG4mJiFhLmNhbGwocyxyKXx8bC5wdXNoKGU/W3Isc1tyXV06c1tyXSk7cmV0dXJuIGx9fX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmV4cG9ydHM9e3ZlcnNpb246IjIuNi45In07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9cil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlN0YXR1c0NvZGVzPXQuREJOb3RSZXNldD10LkRCV3JvbmdQYXNzd29yZD10Lk5vREJQYXRoR2l2ZW49dC5GaXJtd2FyZU9yQXBwVXBkYXRlUmVxdWlyZWQ9dC5MZWRnZXJBUEk1eHg9dC5MZWRnZXJBUEk0eHg9dC5HZW51aW5lQ2hlY2tGYWlsZWQ9dC5QYWlyaW5nRmFpbGVkPXQuU3luY0Vycm9yPXQuRmVlUmVxdWlyZWQ9dC5GZWVOb3RMb2FkZWQ9dC5DYW50U2NhblFSQ29kZT10LkVUSEFkZHJlc3NOb25FSVA9dC5Xcm9uZ0FwcEZvckN1cnJlbmN5PXQuV3JvbmdEZXZpY2VGb3JBY2NvdW50PXQuV2Vic29ja2V0Q29ubmVjdGlvbkZhaWxlZD10LldlYnNvY2tldENvbm5lY3Rpb25FcnJvcj10LkRldmljZVNob3VsZFN0YXlJbkFwcD10LlRyYW5zcG9ydEludGVyZmFjZU5vdEF2YWlsYWJsZT10LlRyYW5zcG9ydE9wZW5Vc2VyQ2FuY2VsbGVkPXQuVXNlclJlZnVzZWRPbkRldmljZT10LlVzZXJSZWZ1c2VkQWxsb3dNYW5hZ2VyPXQuVXNlclJlZnVzZWRGaXJtd2FyZVVwZGF0ZT10LlVzZXJSZWZ1c2VkQWRkcmVzcz10LlVzZXJSZWZ1c2VkRGV2aWNlTmFtZUNoYW5nZT10LlVwZGF0ZVlvdXJBcHA9dC5VbmV4cGVjdGVkQm9vdGxvYWRlcj10LlRpbWVvdXRUYWdnZWQ9dC5QYXNzd29yZEluY29ycmVjdEVycm9yPXQuUGFzc3dvcmRzRG9udE1hdGNoRXJyb3I9dC5Ob3RFbm91Z2hHYXM9dC5Ob0FjY2Vzc1RvQ2FtZXJhPXQuTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQ9dC5Ob3RFbm91Z2hCYWxhbmNlPXQuTm9BZGRyZXNzZXNGb3VuZD10Lk5ldHdvcmtEb3duPXQuTWFuYWdlclVuaW5zdGFsbEJUQ0RlcD10Lk1hbmFnZXJOb3RFbm91Z2hTcGFjZUVycm9yPXQuTWFuYWdlckZpcm13YXJlTm90RW5vdWdoU3BhY2VFcnJvcj10Lk1hbmFnZXJEZXZpY2VMb2NrZWRFcnJvcj10Lk1hbmFnZXJBcHBSZWx5T25CVENFcnJvcj10Lk1hbmFnZXJBcHBBbHJlYWR5SW5zdGFsbGVkRXJyb3I9dC5MZWRnZXJBUElOb3RBdmFpbGFibGU9dC5MZWRnZXJBUElFcnJvcldpdGhNZXNzYWdlPXQuTGVkZ2VyQVBJRXJyb3I9dC5Vbmtub3duTUNVPXQuTGF0ZXN0TUNVSW5zdGFsbGVkRXJyb3I9dC5JbnZhbGlkQWRkcmVzc0JlY2F1c2VEZXN0aW5hdGlvbklzQWxzb1NvdXJjZT10LkludmFsaWRBZGRyZXNzPXQuSGFyZFJlc2V0RmFpbD10LkZlZUVzdGltYXRpb25GYWlsZWQ9dC5FdGhBcHBQbGVhc2VFbmFibGVDb250cmFjdERhdGE9dC5FbnBvaW50Q29uZmlnRXJyb3I9dC5EaXNjb25uZWN0ZWREZXZpY2VEdXJpbmdPcGVyYXRpb249dC5EaXNjb25uZWN0ZWREZXZpY2U9dC5EZXZpY2VTb2NrZXROb0J1bGtTdGF0dXM9dC5EZXZpY2VTb2NrZXRGYWlsPXQuRGV2aWNlTmFtZUludmFsaWQ9dC5EZXZpY2VIYWx0ZWQ9dC5EZXZpY2VJbk9TVUV4cGVjdGVkPXQuRGV2aWNlT25EYXNoYm9hcmRVbmV4cGVjdGVkPXQuRGV2aWNlT25EYXNoYm9hcmRFeHBlY3RlZD10LkRldmljZU5vdEdlbnVpbmVFcnJvcj10LkRldmljZUdlbnVpbmVTb2NrZXRFYXJseUNsb3NlPXQuRGV2aWNlQXBwVmVyaWZ5Tm90U3VwcG9ydGVkPXQuQ3VycmVuY3lOb3RTdXBwb3J0ZWQ9dC5DYXNoQWRkck5vdFN1cHBvcnRlZD10LkNhbnRPcGVuRGV2aWNlPXQuQnRjVW5tYXRjaGVkQXBwPXQuQmx1ZXRvb3RoUmVxdWlyZWQ9dC5BY2NvdW50Tm90U3VwcG9ydGVkPXQuQWNjb3VudE5hbWVSZXF1aXJlZEVycm9yPXQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9dC5jcmVhdGVDdXN0b21FcnJvckNsYXNzPXQuZGVzZXJpYWxpemVFcnJvcj10LnNlcmlhbGl6ZUVycm9yPXZvaWQgMCx0LlRyYW5zcG9ydEVycm9yPWksdC5nZXRBbHRTdGF0dXNNZXNzYWdlPWEsdC5UcmFuc3BvcnRTdGF0dXNFcnJvcj1zO3ZhciBuPXIoOTM5KTt0LnNlcmlhbGl6ZUVycm9yPW4uc2VyaWFsaXplRXJyb3IsdC5kZXNlcmlhbGl6ZUVycm9yPW4uZGVzZXJpYWxpemVFcnJvcix0LmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3M9bi5jcmVhdGVDdXN0b21FcnJvckNsYXNzLHQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9bi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcjt0LkFjY291bnROYW1lUmVxdWlyZWRFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJBY2NvdW50TmFtZVJlcXVpcmVkIiksdC5BY2NvdW50Tm90U3VwcG9ydGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkFjY291bnROb3RTdXBwb3J0ZWQiKSx0LkJsdWV0b290aFJlcXVpcmVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkJsdWV0b290aFJlcXVpcmVkIiksdC5CdGNVbm1hdGNoZWRBcHA9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiQnRjVW5tYXRjaGVkQXBwIiksdC5DYW50T3BlbkRldmljZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJDYW50T3BlbkRldmljZSIpLHQuQ2FzaEFkZHJOb3RTdXBwb3J0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiQ2FzaEFkZHJOb3RTdXBwb3J0ZWQiKSx0LkN1cnJlbmN5Tm90U3VwcG9ydGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkN1cnJlbmN5Tm90U3VwcG9ydGVkIiksdC5EZXZpY2VBcHBWZXJpZnlOb3RTdXBwb3J0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlQXBwVmVyaWZ5Tm90U3VwcG9ydGVkIiksdC5EZXZpY2VHZW51aW5lU29ja2V0RWFybHlDbG9zZT0oMCxuLmM=",
    "2020.01.10 15:21": "base64:dHx8bj49dC5sZW5ndGg/KGUudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KToia2V5cyI9PXI/e3ZhbHVlOm4sZG9uZTohMX06InZhbHVlcyI9PXI/e3ZhbHVlOnRbbl0sZG9uZTohMX06e3ZhbHVlOltuLHRbbl1dLGRvbmU6ITF9fSwidmFsdWVzIiksby5Bcmd1bWVudHM9by5BcnJheSxpKCJrZXlzIiksaSgidmFsdWVzIiksaSgiZW50cmllcyIpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4MSksaT1yKDQwNSksbz1yKDI0NiksYT1yKDQwOCkscz1yKDI0MyksdT1yKDI0NykoIklFX1BST1RPIiksYz1mdW5jdGlvbigpe30sZj1mdW5jdGlvbigpe3ZhciBlLHQ9cygiaWZyYW1lIikscj1vLmxlbmd0aDtmb3IodC5zdHlsZS5kaXNwbGF5PSJub25lIixhLmFwcGVuZENoaWxkKHQpLHQuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwoZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxlLndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLGUuY2xvc2UoKSxmPWUuRjtyLS07KWRlbGV0ZSBmLnByb3RvdHlwZVtvW3JdXTtyZXR1cm4gZigpfTtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gbnVsbCE9PWU/KGMucHJvdG90eXBlPW4oZSkscj1uZXcgYyxjLnByb3RvdHlwZT1udWxsLHJbdV09ZSk6cj1mKCksdm9pZCAwPT09dD9yOmkocix0KX0scigyNDUpW3VdPSEwfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgpLGk9cigxNDApLG89cig4MSksYT1yKDQwNik7ZS5leHBvcnRzPW4/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtvKGUpO2Zvcih2YXIgcixuPWEodCkscz1uLmxlbmd0aCx1PTA7cz51OylpLmYoZSxyPW5bdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQwNyksaT1yKDI0Nik7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTcpLGk9cigxNzYpLG89cig3MjYpKCExKSxhPXIoMjQ1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcykhbihhLHIpJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDE3MykoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0MyksaT1yKDQxMyksbz1yKDQxNSksYT1yKDczNCkscz1yKDE3NyksdT1yKDY5KSxjPXIoMTQ0KSxmPXIoMTc1KSxsPXIoNTMpKCJpdGVyYXRvciIpLGg9cigxNDEpLHA9cig0MTQpLGQ9cC5JdGVyYXRvclByb3RvdHlwZSx5PXAuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixwLHYsbSxiKXtpKHIsdCxwKTt2YXIgXyxTLEUsdz1mdW5jdGlvbihlKXtpZihlPT09diYmSSlyZXR1cm4gSTtpZigheSYmZSBpbiBDKXJldHVybiBDW2VdO3N3aXRjaChlKXtjYXNlImtleXMiOmNhc2UidmFsdWVzIjpjYXNlImVudHJpZXMiOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcyl9fSxUPXQrIiBJdGVyYXRvciIsQT0hMSxDPWUucHJvdG90eXBlLHg9Q1tsXXx8Q1siQEBpdGVyYXRvciJdfHx2JiZDW3ZdLEk9IXkmJnh8fHcodiksaz0iQXJyYXkiPT10JiZDLmVudHJpZXN8fHg7aWYoayYmKF89byhrLmNhbGwobmV3IGUpKSxkIT09T2JqZWN0LnByb3RvdHlwZSYmXy5uZXh0JiYoZnx8byhfKT09PWR8fChhP2EoXyxkKToiZnVuY3Rpb24iIT10eXBlb2YgX1tsXSYmdShfLGwsZykpLHMoXyxULCEwLCEwKSxmJiYoaFtUXT1nKSkpLCJ2YWx1ZXMiPT12JiZ4JiYidmFsdWVzIiE9PXgubmFtZSYmKEE9ITAsST1mdW5jdGlvbigpe3JldHVybiB4LmNhbGwodGhpcyl9KSxmJiYhYnx8Q1tsXT09PUl8fHUoQyxsLEkpLGhbdF09SSx2KWlmKFM9e3ZhbHVlczp3KCJ2YWx1ZXMiKSxrZXlzOm0/STp3KCJrZXlzIiksZW50cmllczp3KCJlbnRyaWVzIil9LGIpZm9yKEUgaW4gUykheSYmIUEmJkUgaW4gQ3x8YyhDLEUsU1tFXSk7ZWxzZSBuKHt0YXJnZXQ6dCxwcm90bzohMCxmb3JjZWQ6eXx8QX0sUyk7cmV0dXJuIFN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWkmJiFuLmNhbGwoezE6Mn0sMSk7dC5mPW8/ZnVuY3Rpb24oZSl7dmFyIHQ9aSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTpufSxmdW5jdGlvbihlLHQpe3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDE0KS5JdGVyYXRvclByb3RvdHlwZSxpPXIoNDA0KSxvPXIoMTc0KSxhPXIoMTc3KSxzPXIoMTQxKSx1PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGM9dCsiIEl0ZXJhdG9yIjtyZXR1cm4gZS5wcm90b3R5cGU9aShuLHtuZXh0Om8oMSxyKX0pLGEoZSxjLCExLCEwKSxzW2NdPXUsZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saSxvLGE9cig0MTUpLHM9cig2OSksdT1yKDU3KSxjPXIoMTc1KSxmPXIoNTMpKCJpdGVyYXRvciIpLGw9ITE7W10ua2V5cyYmKCJuZXh0ImluKG89W10ua2V5cygpKT8oaT1hKGEobykpKSE9PU9iamVjdC5wcm90b3R5cGUmJihuPWkpOmw9ITApLHZvaWQgMD09biYmKG49e30pLGN8fHUobixmKXx8cyhuLGYsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6bixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOmx9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1NyksaT1yKDE3Miksbz1yKDI0NykoIklFX1BST1RPIiksYT1yKDczMykscz1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1hP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZT1pKGUpLG4oZSxvKT9lW29dOiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yJiZlIGluc3RhbmNlb2YgZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTplIGluc3RhbmNlb2YgT2JqZWN0P3M6bnVsbH19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMjkpJiYhcigxNCkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoMjQ5KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj12b2lkIDA9PT1yO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuP2UoKTplLmNhbGwocik7Y2FzZSAxOnJldHVybiBuP2UodFswXSk6ZS5jYWxsKHIsdFswXSk7Y2FzZSAyOnJldHVybiBuP2UodFswXSx0WzFdKTplLmNhbGwocix0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gbj9lKHRbMF0sdFsxXSx0WzJdKTplLmNhbGwocix0WzBdLHRbMV0sdFsyXSk7Y2FzZSA0OnJldHVybiBuP2UodFswXSx0WzFdLHRbMl0sdFszXSk6ZS5jYWxsKHIsdFswXSx0WzFdLHRbMl0sdFszXSl9cmV0dXJuIGUuYXBwbHkocix0KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI0MSksaT1yKDIzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhLHM9U3RyaW5nKGkoZSkpLHU9bih0KSxjPXMubGVuZ3RoO3JldHVybiB1PDB8fHU+PWM/cj8iIjp2b2lkIDA6KG89cy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8bz41NjMxOXx8dSsxPT09Y3x8KGE9cy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP3I/cy5jaGFyQXQodSk6bzpyP3Muc2xpY2UodSx1KzIpOmEtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3NSksaT1yKDUzKSgiaXRlcmF0b3IiKTtlLmV4cG9ydHM9IXIoNjgpKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVSTCgiYj9lPTEiLCJodHRwOi8vYSIpLHQ9ZS5zZWFyY2hQYXJhbXM7cmV0dXJuIGUucGF0aG5hbWU9ImMlMjBkIixuJiYhZS50b0pTT058fCF0LnNvcnR8fCJodHRwOi8vYS9jJTIwZD9lPTEiIT09ZS5ocmVmfHwiMSIhPT10LmdldCgiZSIpfHwiYT0xIiE9PVN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCI/YT0xIikpfHwhdFtpXXx8ImEiIT09bmV3IFVSTCgiaHR0cHM6Ly9hQGIiKS51c2VybmFtZXx8ImIiIT09bmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCJhPWIiKSkuZ2V0KCJhIil8fCJ4bi0tZTFheWJjIiE9PW5ldyBVUkwoImh0dHA6Ly9cdTA0NDJcdTA0MzVcdTA0NDFcdTA0NDIiKS5ob3N0fHwiIyVEMCVCMSIhPT1uZXcgVVJMKCJodHRwOi8vYSNcdTA0MzEiKS5oYXNofSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCAiKyhyP3IrIiAiOiIiKSsiaW52b2NhdGlvbiIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDQwMyk7dmFyIG49cig0MTkpLGk9cigxNDQpLG89cig3NTEpLGE9cig0MTMpLHM9cigxNDIpLHU9cig0MjApLGM9cig1NyksZj1yKDE3MSksbD1yKDgxKSxoPXIoOTIpLHA9cig3NTIpLGQ9cigyNTIpLHk9cig1MykoIml0ZXJhdG9yIiksZz1zLnNldCx2PXMuZ2V0dGVyRm9yKCJVUkxTZWFyY2hQYXJhbXMiKSxtPXMuZ2V0dGVyRm9yKCJVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciIpLGI9L1wrL2csXz1BcnJheSg0KSxTPWZ1bmN0aW9uKGUpe3JldHVybiBfW2UtMV18fChfW2UtMV09UmVnRXhwKCIoKD86JVtcXGRhLWZdezJ9KXsiK2UrIn0pIiwiZ2kiKSl9LEU9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2godCl7cmV0dXJuIGV9fSx3PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnJlcGxhY2UoYiwiICIpLHI9NDtyOyl0PXQucmVwbGFjZShTKHItLSksRSk7cmV0dXJuIHR9LFQ9L1shJygpfl18JTIwL2csQT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyJ9LEM9ZnVuY3Rpb24oZSl7cmV0dXJuIEFbZV19LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKFQsQyl9LEk9ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgcixuLGk9dC5zcGxpdCgiJiIpLG89MDtvPGkubGVuZ3RoOykocj1pW28rK10pLmxlbmd0aCYmKG49ci5zcGxpdCgiPSIpLGUucHVzaCh7a2V5Oncobi5zaGlmdCgpKSx2YWx1ZTp3KG4uam9pbigiPSIpKX0pKTtyZXR1cm4gZX0saz1mdW5jdGlvbihlKXt0aGlzLmVudHJpZXMubGVuZ3RoPTAsSSh0aGlzLmVudHJpZXMsZSl9LE89ZnVuY3Rpb24oZSx0KXtpZihlPHQpdGhyb3cgVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpfSxOPWEoZnVuY3Rpb24oZSx0KXtnKHRoaXMse3R5cGU6IlVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yIixpdGVyYXRvcjpwKHYoZSkuZW50cmllcyksa2luZDp0fSl9LCJJdGVyYXRvciIsZnVuY3Rpb24oKXt2YXIgZT1tKHRoaXMpLHQ9ZS5raW5kLHI9ZS5pdGVyYXRvci5uZXh0KCksbj1yLnZhbHVlO3JldHVybiByLmRvbmV8fChyLnZhbHVlPSJrZXlzIj09PXQ/bi5rZXk6InZhbHVlcyI9PT10P24udmFsdWU6W24ua2V5LG4udmFsdWVdKSxyfSksUD1mdW5jdGlvbigpe3UodGhpcyxQLCJVUkxTZWFyY2hQYXJhbXMiKTt2YXIgZSx0LHIsbixpLG8sYSxzPWFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwLGY9W107aWYoZyh0aGlzLHt0eXBlOiJVUkxTZWFyY2hQYXJhbXMiLGVudHJpZXM6Zix1cGRhdGVVUkw6bnVsbCx1cGRhdGVTZWFyY2hQYXJhbXM6a30pLHZvaWQgMCE9PXMpaWYoaChzKSlpZigiZnVuY3Rpb24iPT09dHlwZW9mKGU9ZChzKSkpZm9yKHQ9ZS5jYWxsKHMpOyEocj10Lm5leHQoKSkuZG9uZTspe2lmKChpPShuPXAobChyLnZhbHVlKSkpLm5leHQoKSkuZG9uZXx8KG89bi5uZXh0KCkpLmRvbmV8fCFuLm5leHQoKS5kb25lKXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgc2VxdWVuY2Ugd2l0aCBsZW5ndGggMiIpO2YucHVzaCh7a2V5OmkudmFsdWUrIiIsdmFsdWU6by52YWx1ZSsiIn0pfWVsc2UgZm9yKGEgaW4gcyljKHMsYSkmJmYucHVzaCh7a2V5OmEsdmFsdWU6c1thXSsiIn0pO2Vsc2UgSShmLCJzdHJpbmciPT09dHlwZW9mIHM/Ij8iPT09cy5jaGFyQXQoMCk/cy5zbGljZSgxKTpzOnMrIiIpfSxSPVAucHJvdG90eXBlO28oUix7YXBwZW5kOmZ1bmN0aW9uKGUsdCl7Tyhhcmd1bWVudHMubGVuZ3RoLDIpO3ZhciByPXYodGhpcyk7ci5lbnRyaWVzLnB1c2goe2tleTplKyIiLHZhbHVlOnQrIiJ9KSxyLnVwZGF0ZVVSTCYmci51cGRhdGVVUkwoKX0sZGVsZXRlOmZ1bmN0aW9uKGUpe08oYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIHQ9dih0aGlzKSxyPXQuZW50cmllcyxuPWUrIiIsaT0wO2k8ci5sZW5ndGg7KXJbaV0ua2V5PT09bj9yLnNwbGljZShpLDEpOmkrKzt0LnVwZGF0ZVVSTCYmdC51cGRhdGVVUkwoKX0sZ2V0OmZ1bmN0aW9uKGUpe08oYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIHQ9dih0aGlzKS5lbnRyaWVzLHI9ZSsiIixuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXS5rZXk9PT1yKXJldHVybiB0W25dLnZhbHVlO3JldHVybiBudWxsfSxnZXRBbGw6ZnVuY3Rpb24oZSl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgdD12KHRoaXMpLmVudHJpZXMscj1lKyIiLG49W10saT0wO2k8dC5sZW5ndGg7aSsrKXRbaV0ua2V5PT09ciYmbi5wdXNoKHRbaV0udmFsdWUpO3JldHVybiBufSxoYXM6ZnVuY3Rpb24oZSl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgdD12KHRoaXMpLmVudHJpZXMscj1lKyIiLG49MDtuPHQubGVuZ3RoOylpZih0W24rK10ua2V5PT09cilyZXR1cm4hMDtyZXR1cm4hMX0sc2V0OmZ1bmN0aW9uKGUsdCl7Tyhhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgcixuPXYodGhpcyksaT1uLmVudHJpZXMsbz0hMSxhPWUrIiIscz10KyIiLHU9MDt1PGkubGVuZ3RoO3UrKykocj1pW3VdKS5rZXk9PT1hJiYobz9pLnNwbGljZSh1LS0sMSk6KG89ITAsci52YWx1ZT1zKSk7b3x8aS5wdXNoKHtrZXk6YSx2YWx1ZTpzfSksbi51cGRhdGVVUkwmJm4udXBkYXRlVVJMKCl9LHNvcnQ6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj12KHRoaXMpLGk9bi5lbnRyaWVzLG89aS5zbGljZSgpO2ZvcihpLmxlbmd0aD0wLHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Zm9yKGU9b1t0XSxyPTA7cjx0O3IrKylpZihpW3JdLmtleT5lLmtleSl7aS5zcGxpY2UociwwLGUpO2JyZWFrfXI9PT10JiZpLnB1c2goZSl9bi51cGRhdGVVUkwmJm4udXBkYXRlVVJMKCl9LGZvckVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9dih0aGlzKS5lbnRyaWVzLG49ZihlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLGk9MDtpPHIubGVuZ3RoOyluKCh0PXJbaSsrXSkudmFsdWUsdC5rZXksdGhpcyl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywia2V5cyIpfSx2YWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywidmFsdWVzIil9LGVudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE4odGhpcywiZW50cmllcyIpfX0se2VudW1lcmFibGU6ITB9KSxpKFIseSxSLmVudHJpZXMpLGkoUiwidG9TdHJpbmciLGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dih0aGlzKS5lbnRyaWVzLHI9W10sbj0wO248dC5sZW5ndGg7KWU9dFtuKytdLHIucHVzaCh4KGUua2V5KSsiPSIreChlLnZhbHVlKSk7cmV0dXJuIHIuam9pbigiJiIpfSx7ZW51bWVyYWJsZTohMH0pLHIoMTc3KShQLCJVUkxTZWFyY2hQYXJhbXMiKSxyKDE0Mykoe2dsb2JhbDohMCxmb3JjZWQ6IW59LHtVUkxTZWFyY2hQYXJhbXM6UH0pLGUuZXhwb3J0cz17VVJMU2VhcmNoUGFyYW1zOlAsZ2V0U3RhdGU6dn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KSxpPXIoMjcpLG89cig5NSksYT1yKDI1Mykscz1yKDI4KS5mO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pLlN5bWJvbHx8KGkuU3ltYm9sPW8/e306bi5TeW1ib2x8fHt9KTsiXyI9PWUuY2hhckF0KDApfHxlIGluIHR8fHModCxlLHt2YWx1ZTphLmYoZSl9KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUwKSxpPXIoNTEpLG89cigxNzkpKCExKSxhPXIoMjU0KSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcylyIT1hJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cigxMiksbz1yKDExMCk7ZS5leHBvcnRzPXIoMjkpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7aShlKTtmb3IodmFyIHIsYT1vKHQpLHM9YS5sZW5ndGgsdT0wO3M+dTspbi5mKGUscj1hW3UrK10sdFtyXSk7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MSksaT1yKDk4KS5mLG89e30udG9TdHJpbmcsYT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBhJiYiW29iamVjdCBXaW5kb3ddIj09by5jYWxsKGUpP2Z1bmN0aW9uKGUpe3RyeXtyZXR1cm4gaShlKX1jYXRjaCh0KXtyZXR1cm4gYS5zbGljZSgpfX0oZSk6aShuKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyOSksaT1yKDExMCksbz1yKDE4MCksYT1yKDE0Nikscz1yKDM2KSx1PXIoMTQ1KSxjPU9iamVjdC5hc3NpZ247ZS5leHBvcnRzPSFjfHxyKDE0KShmdW5jdGlvbigpe3ZhciBlPXt9LHQ9e30scj1TeW1ib2woKSxuPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIGVbcl09NyxuLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZX0pLDchPWMoe30sZSlbcl18fE9iamVjdC5rZXlzKGMoe30sdCkpLmpvaW4oIiIpIT1ufSk/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9cyhlKSxjPWFyZ3VtZW50cy5sZW5ndGgsZj0xLGw9by5mLGg9YS5mO2M+ZjspZm9yKHZhciBwLGQ9dShhcmd1bWVudHNbZisrXSkseT1sP2koZCkuY29uY2F0KGwoZCkpOmkoZCksZz15Lmxlbmd0aCx2PTA7Zz52OylwPXlbdisrXSxuJiYhaC5jYWxsKGQscCl8fChyW3BdPWRbcF0pO3JldHVybiByfTpjfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9ZSYmdCE9dH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1OSksaT1yKDEzKSxvPXIoNDE3KSxhPVtdLnNsaWNlLHM9e307ZS5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcykscj1hLmNhbGwoYXJndW1lbnRzLDEpLHU9ZnVuY3Rpb24gbigpe3ZhciBpPXIuY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/ZnVuY3Rpb24oZSx0LHIpe2lmKCEodCBpbiBzKSl7Zm9yKHZhciBuPVtdLGk9MDtpPHQ7aSsrKW5baV09ImFbIitpKyJdIjtzW3RdPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIituLmpvaW4oIiwiKSsiKSIpfXJldHVybiBzW3RdKGUscil9KHQsaS5sZW5ndGgsaSk6byh0LGksZSl9O3JldHVybiBpKHQucHJvdG90eXBlKSYmKHUucHJvdG90eXBlPXQucHJvdG90eXBlKSx1fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcpLnBhcnNlSW50LGk9cigxMTEpLnRyaW0sbz1yKDI1NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNykucGFyc2VGbG9hdCxpPXIoMTExKS50cmltO2UuZXhwb3J0cz0xL24ocigyNTcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJiJOdW1iZXIiIT1uKGUpKXRocm93IFR5cGVFcnJvcih0KTtyZXR1cm4rZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmaShlKT09PWV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSk+LTFlLTgmJmU8MWUtOD9lLWUqZS8yOk1hdGgubG9nKDErZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTcpLGk9cig5Myksbz1yKDEwOSksYT17fTtyKDU0KShhLHIoMjEpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2UucHJvdG90eXBlPW4oYSx7bmV4dDppKDEscil9KSxvKGUsdCsiIEl0ZXJhdG9yIil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGkpe3RyeXtyZXR1cm4gaT90KG4ocilbMF0sclsxXSk6dChyKX1jYXRjaChhKXt2YXIgbz1lLnJldHVybjt0aHJvdyB2b2lkIDAhPT1vJiZuKG8uY2FsbChlKSksYX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NDUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcobihlKSkodCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1OSksaT1yKDM2KSxvPXIoMTQ1KSxhPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixzLHUpe24odCk7dmFyIGM9aShlKSxmPW8oYyksbD1hKGMubGVuZ3RoKSxoPXU/bC0xOjAscD11Py0xOjE7aWYocjwyKWZvcig7Oyl7aWYoaCBpbiBmKXtzPWZbaF0saCs9cDticmVha31pZihoKz1wLHU/aDwwOmw8PWgpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt1P2g+PTA6bD5oO2grPXApaCBpbiBmJiYocz10KHMsZltoXSxoLGMpKTtyZXR1cm4gc319LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzNiksaT1yKDk2KSxvPXIoMjMpO2UuZXhwb3J0cz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbihlLHQpe3ZhciByPW4odGhpcyksYT1vKHIubGVuZ3RoKSxzPWkoZSxhKSx1PWkodCxhKSxjPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGY9TWF0aC5taW4oKHZvaWQgMD09PWM/YTppKGMsYSkpLXUsYS1zKSxsPTE7Zm9yKHU8cyYmczx1K2YmJihsPS0xLHUrPWYtMSxzKz1mLTEpO2YtLSA+MDspdSBpbiByP3Jbc109clt1XTpkZWxldGUgcltzXSxzKz1sLHUrPWw7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTAwKSxpPXIoNDQwKSxvPXIoMTQ4KSxhPXIoNTEpO2UuZXhwb3J0cz1yKDI2MykoQXJyYXksIkFycmF5IixmdW5jdGlvbihlLHQpe3RoaXMuX3Q9YShlKSx0aGlzLl9pPTAsdGhpcy5faz10fSxmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3QsdD10aGlzLl9rLHI9dGhpcy5faSsrO3JldHVybiFlfHxyPj1lLmxlbmd0aD8odGhpcy5fdD12b2lkIDAsaSgxKSk6aSgwLCJrZXlzIj09dD9yOiJ2YWx1ZXMiPT10P2Vbcl06W3IsZVtyXV0pfSwidmFsdWVzIiksby5Bcmd1bWVudHM9by5BcnJheSxuKCJrZXlzIiksbigidmFsdWVzIiksbigiZW50cmllcyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTp0LGRvbmU6ISFlfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyNzEpO3IoMikoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6biE9PS8uLy5leGVjfSx7ZXhlYzpufSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDI5KSYmImciIT0vLi9nLmZsYWdzJiZyKDI4KS5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpyKDE4Myl9KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpLG8sYSxzPXIoOTUpLHU9cigxNyksYz1yKDU4KSxmPXIoMTQ3KSxsPXIoMiksaD1yKDEzKSxwPXIoNTkpLGQ9cigxMTMpLHk9cigxODYpLGc9cigxNDkpLHY9cigyNTApLnNldCxtPXIoODY1KSgpLGI9cig0NDQpLF89cig4NjYpLFM9cigyNzMpLEU9cig0NDUpLHc9dS5UeXBlRXJyb3IsVD11LnByb2Nlc3MsQT1UJiZULnZlcnNpb25zLEM9QSYmQS52OHx8IiIseD11LlByb21pc2UsST0icHJvY2VzcyI9PWYoVCksaz1mdW5jdGlvbigpe30sTz1pPWIuZixOPSEhZnVuY3Rpb24oKXt0cnl7dmFyIGU9eC5yZXNvbHZlKDEpLHQ9KGUuY29uc3RydWN0b3I9e30pW3IoMjEpKCJzcGVjaWVzIildPWZ1bmN0aW9uKGUpe2UoayxrKX07cmV0dXJuKEl8fCJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZlLnRoZW4oaylpbnN0YW5jZW9mIHQmJjAhPT1DLmluZGV4T2YoIjYuNiIpJiYtMT09PVMuaW5kZXhPZigiQ2hyb21lLzY2Iil9Y2F0Y2gobil7fX0oKSxQPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEoIWgoZSl8fCJmdW5jdGlvbiIhPXR5cGVvZih0PWUudGhlbikpJiZ0fSxSPWZ1bmN0aW9uKGUsdCl7aWYoIWUuX24pe2UuX249ITA7dmFyIHI9ZS5fYzttKGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWUuX3YsaT0xPT1lLl9zLG89MCxhPWZ1bmN0aW9uKHQpe3ZhciByLG8sYSxzPWk/dC5vazp0LmZhaWwsdT10LnJlc29sdmUsYz10LnJlamVjdCxmPXQuZG9tYWluO3RyeXtzPyhpfHwoMj09ZS5faCYmTChlKSxlLl9oPTEpLCEwPT09cz9yPW46KGYmJmYuZW50ZXIoKSxyPXMobiksZiYmKGYuZXhpdCgpLGE9ITApKSxyPT09dC5wcm9taXNlP2ModygiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToobz1QKHIpKT9vLmNhbGwocix1LGMpOnUocikpOmMobil9Y2F0Y2gobCl7ZiYmIWEmJmYuZXhpdCgpLGMobCl9fTtyLmxlbmd0aD5vOylhKHJbbysrXSk7ZS5fYz1bXSxlLl9uPSExLHQmJiFlLl9oJiZCKGUpfSl9fSxCPWZ1bmN0aW9uKGUpe3YuY2FsbCh1LGZ1bmN0aW9uKCl7dmFyIHQscixuLGk9ZS5fdixvPU0oZSk7aWYobyYmKHQ9XyhmdW5jdGlvbigpe0k/VC5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLGksZSk6KHI9dS5vbnVuaGFuZGxlZHJlamVjdGlvbik/cih7cHJvbWlzZTplLHJlYXNvbjppfSk6KG49dS5jb25zb2xlKSYmbi5lcnJvciYmbi5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixpKX0pLGUuX2g9SXx8TShlKT8yOjEpLGUuX2E9dm9pZCAwLG8mJnQuZSl0aHJvdyB0LnZ9KX0sTT1mdW5jdGlvbihlKXtyZXR1cm4gMSE9PWUuX2gmJjA9PT0oZS5fYXx8ZS5fYykubGVuZ3RofSxMPWZ1bmN0aW9uKGUpe3YuY2FsbCh1LGZ1bmN0aW9uKCl7dmFyIHQ7ST9ULmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLGUpOih0PXUub25yZWplY3Rpb25oYW5kbGVkKSYmdCh7cHJvbWlzZTplLHJlYXNvbjplLl92fSl9KX0sRD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuX2R8fCh0Ll9kPSEwLCh0PXQuX3d8fHQpLl92PWUsdC5fcz0yLHQuX2F8fCh0Ll9hPXQuX2Muc2xpY2UoKSksUih0LCEwKSl9LGo9ZnVuY3Rpb24gZSh0KXt2YXIgcixuPXRoaXM7aWYoIW4uX2Qpe24uX2Q9ITAsbj1uLl93fHxuO3RyeXtpZihuPT09dCl0aHJvdyB3KCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhyPVAodCkpP20oZnVuY3Rpb24oKXt2YXIgaT17X3c6bixfZDohMX07dHJ5e3IuY2FsbCh0LGMoZSxpLDEpLGMoRCxpLDEpKX1jYXRjaChvKXtELmNhbGwoaSxvKX19KToobi5fdj10LG4uX3M9MSxSKG4sITEpKX1jYXRjaChpKXtELmNhbGwoe193Om4sX2Q6ITF9LGkpfX19O058fCh4PWZ1bmN0aW9uKGUpe2QodGhpcyx4LCJQcm9taXNlIiwiX2giKSxwKGUpLG4uY2FsbCh0aGlzKTt0cnl7ZShjKGosdGhpcywxKSxjKEQsdGhpcywxKSl9Y2F0Y2godCl7RC5jYWxsKHRoaXMsdCl9fSwobj1mdW5jdGlvbihlKXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSkucHJvdG90eXBlPXIoMTE0KSh4LnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbihlLHQpe3ZhciByPU8oZyh0aGlzLHgpKTtyZXR1cm4gci5vaz0iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZSxyLmZhaWw9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQsci5kb21haW49ST9ULmRvbWFpbjp2b2lkIDAsdGhpcy5fYy5wdXNoKHIpLHRoaXMuX2EmJnRoaXMuX2EucHVzaChyKSx0aGlzLl9zJiZSKHRoaXMsITEpLHIucHJvbWlzZX0sY2F0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9fSksbz1mdW5jdGlvbigpe3ZhciBlPW5ldyBuO3RoaXMucHJvbWlzZT1lLHRoaXMucmVzb2x2ZT1jKGosZSwxKSx0aGlzLnJlamVjdD1jKEQsZSwxKX0sYi5mPU89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT14fHxlPT09YT9uZXcgbyhlKTppKGUpfSksbChsLkcrbC5XK2wuRiohTix7UHJvbWlzZTp4fSkscigxMDkpKHgsIlByb21pc2UiKSxyKDExMikoIlByb21pc2UiKSxhPXIoMjcpLlByb21pc2UsbChsLlMrbC5GKiFOLCJQcm9taXNlIix7cmVqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0PU8odGhpcyk7cmV0dXJuKDAsdC5yZWplY3QpKGUpLHQucHJvbWlzZX19KSxsKGwuUytsLkYqKHN8fCFOKSwiUHJvbWlzZSIse3Jlc29sdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUocyYmdGhpcz09PWE/eDp0aGlzLGUpfX0pLGwobC5TK2wuRiohKE4mJnIoMTgyKShmdW5jdGlvbihlKXt4LmFsbChlKS5jYXRjaChrKX0pKSwiUHJvbWlzZSIse2FsbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9Tyh0KSxuPXIucmVzb2x2ZSxpPXIucmVqZWN0LG89XyhmdW5jdGlvbigpe3ZhciByPVtdLG89MCxhPTE7eShlLCExLGZ1bmN0aW9uKGUpe3ZhciBzPW8rKyx1PSExO3IucHVzaCh2b2lkIDApLGErKyx0LnJlc29sdmUoZSkudGhlbihmdW5jdGlvbihlKXt1fHwodT0hMCxyW3NdPWUsLS1hfHxuKHIpKX0saSl9KSwtLWF8fG4ocil9KTtyZXR1cm4gby5lJiZpKG8udiksci5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1PKHQpLG49ci5yZWplY3QsaT1fKGZ1bmN0aW9uKCl7eShlLCExLGZ1bmN0aW9uKGUpe3QucmVzb2x2ZShlKS50aGVuKHIucmVzb2x2ZSxuKX0pfSk7cmV0dXJuIGkuZSYmbihpLnYpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDU5KTtmdW5jdGlvbiBpKGUpe3ZhciB0LHI7dGhpcy5wcm9taXNlPW5ldyBlKGZ1bmN0aW9uKGUsbil7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09cil0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7dD1lLHI9bn0pLHRoaXMucmVzb2x2ZT1uKHQpLHRoaXMucmVqZWN0PW4ocil9ZS5leHBvcnRzLmY9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBpKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTIpLGk9cigxMyksbz1yKDQ0NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYobihlKSxpKHQpJiZ0LmNvbnN0cnVjdG9yPT09ZSlyZXR1cm4gdDt2YXIgcj1vLmYoZSk7cmV0dXJuKDAsci5yZXNvbHZlKSh0KSxyLnByb21pc2V9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjgpLmYsaT1yKDk3KSxvPXIoMTE0KSxhPXIoNTgpLHM9cigxMTMpLHU9cigxODYpLGM9cigyNjMpLGY9cig0NDApLGw9cigxMTIpLGg9cigyOSkscD1yKDgzKS5mYXN0S2V5LGQ9cigxMDEpLHk9aD8iX3MiOiJzaXplIixnPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1wKHQpO2lmKCJGIiE9PW4pcmV0dXJuIGUuX2lbbl07Zm9yKHI9ZS5fZjtyO3I9ci5uKWlmKHIuaz09dClyZXR1cm4gcn07ZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixjKXt2YXIgZj1lKGZ1bmN0aW9uKGUsbil7cyhlLGYsdCwiX2kiKSxlLl90PXQsZS5faT1pKG51bGwpLGUuX2Y9dm9pZCAwLGUuX2w9dm9pZCAwLGVbeV09MCx2b2lkIDAhPW4mJnUobixyLGVbY10sZSl9KTtyZXR1cm4gbyhmLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZCh0aGlzLHQpLHI9ZS5faSxuPWUuX2Y7bjtuPW4ubiluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRlIHJbbi5pXTtlLl9mPWUuX2w9dm9pZCAwLGVbeV09MH0sZGVsZXRlOmZ1bmN0aW9uKGUpe3ZhciByPWQodGhpcyx0KSxuPWcocixlKTtpZihuKXt2YXIgaT1uLm4sbz1uLnA7ZGVsZXRlIHIuX2lbbi5pXSxuLnI9ITAsbyYmKG8ubj1pKSxpJiYoaS5wPW8pLHIuX2Y9PW4mJihyLl9mPWkpLHIuX2w9PW4mJihyLl9sPW8pLHJbeV0tLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24oZSl7ZCh0aGlzLHQpO2Zvcih2YXIgcixuPWEoZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtyPXI/ci5uOnRoaXMuX2Y7KWZvcihuKHIudixyLmssdGhpcyk7ciYmci5yOylyPXIucH0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhZyhkKHRoaXMsdCksZSl9fSksaCYmbihmLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBkKHRoaXMsdClbeV19fSksZn0sZGVmOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLG89ZyhlLHQpO3JldHVybiBvP28udj1yOihlLl9sPW89e2k6aT1wKHQsITApLGs6dCx2OnIscDpuPWUuX2wsbjp2b2lkIDAscjohMX0sZS5fZnx8KGUuX2Y9byksbiYmKG4ubj1vKSxlW3ldKyssIkYiIT09aSYmKGUuX2lbaV09bykpLGV9LGdldEVudHJ5Omcsc2V0U3Ryb25nOmZ1bmN0aW9uKGUsdCxyKXtjKGUsdCxmdW5jdGlvbihlLHIpe3RoaXMuX3Q9ZChlLHQpLHRoaXMuX2s9cix0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5fayx0PXRoaXMuX2w7dCYmdC5yOyl0PXQucDtyZXR1cm4gdGhpcy5fdCYmKHRoaXMuX2w9dD10P3Qubjp0aGlzLl90Ll9mKT9mKDAsImtleXMiPT1lP3QuazoidmFsdWVzIj09ZT90LnY6W3Quayx0LnZdKToodGhpcy5fdD12b2lkIDAsZigxKSl9LHI/ImVudHJpZXMiOiJ2YWx1ZXMiLCFyLCEwKSxsKHQpfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMTQpLGk9cig4MykuZ2V0V2VhayxvPXIoMTIpLGE9cigxMykscz1yKDExMyksdT1yKDE4NiksYz1yKDYzKSxmPXIoNTApLGw9cigxMDEpLGg9Yyg1KSxwPWMoNiksZD0wLHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2x8fChlLl9sPW5ldyBnKX0sZz1mdW5jdGlvbigpe3RoaXMuYT1bXX0sdj1mdW5jdGlvbihlLHQpe3JldHVybiBoKGUuYSxmdW5jdGlvbihlKXtyZXR1cm4gZVswXT09PXR9KX07Zy5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihlKXt2YXIgdD12KHRoaXMsZSk7aWYodClyZXR1cm4gdFsxXX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhdih0aGlzLGUpfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj12KHRoaXMsZSk7cj9yWzFdPXQ6dGhpcy5hLnB1c2goW2UsdF0pfSxkZWxldGU6ZnVuY3Rpb24oZSl7dmFyIHQ9cCh0aGlzLmEsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1lfSk7cmV0dXJufnQmJnRoaXMuYS5zcGxpY2UodCwxKSwhIX50fX0sZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixvKXt2YXIgYz1lKGZ1bmN0aW9uKGUsbil7cyhlLGMsdCwiX2kiKSxlLl90PXQsZS5faT1kKyssZS5fbD12b2lkIDAsdm9pZCAwIT1uJiZ1KG4scixlW29dLGUpfSk7cmV0dXJuIG4oYy5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgcj1pKGUpO3JldHVybiEwPT09cj95KGwodGhpcyx0KSkuZGVsZXRlKGUpOnImJmYocix0aGlzLl9pKSYmZGVsZXRlIHJbdGhpcy5faV19LGhhczpmdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgcj1pKGUpO3JldHVybiEwPT09cj95KGwodGhpcyx0KSkuaGFzKGUpOnImJmYocix0aGlzLl9pKX19KSxjfSxkZWY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWkobyh0KSwhMCk7cmV0dXJuITA9PT1uP3koZSkuc2V0KHQscik6bltlLl9pXT1yLGV9LHVmc3RvcmU6eX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYwKSxpPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PW4oZSkscj1pKHQpO2lmKHQhPT1yKXRocm93IFJhbmdlRXJyb3IoIldyb25nIGxlbmd0aCEiKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDk4KSxpPXIoMTgwKSxvPXIoMTIpLGE9cigxNykuUmVmbGVjdDtlLmV4cG9ydHM9YSYmYS5vd25LZXlzfHxmdW5jdGlvbihlKXt2YXIgdD1uLmYobyhlKSkscj1pLmY7cmV0dXJuIHI/dC5jb25jYXQocihlKSk6dH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIzKSxpPXIoMjU5KSxvPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixhKXt2YXIgcz1TdHJpbmcobyhlKSksdT1zLmxlbmd0aCxjPXZvaWQgMD09PXI/IiAiOlN0cmluZyhyKSxmPW4odCk7aWYoZjw9dXx8IiI9PWMpcmV0dXJuIHM7dmFyIGw9Zi11LGg9aS5jYWxsKGMsTWF0aC5jZWlsKGwvYy5sZW5ndGgpKTtyZXR1cm4gaC5sZW5ndGg+bCYmKGg9aC5zbGljZSgwLGwpKSxhP2grczpzK2h9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOSksaT1yKDExMCksbz1yKDUxKSxhPXIoMTQ2KS5mO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciByLHM9byh0KSx1PWkocyksYz11Lmxlbmd0aCxmPTAsbD1bXTtjPmY7KXI9dVtmKytdLG4mJiFhLmNhbGwocyxyKXx8bC5wdXNoKGU/W3Isc1tyXV06c1tyXSk7cmV0dXJuIGx9fX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmV4cG9ydHM9e3ZlcnNpb246IjIuNi45In07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9cil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlN0YXR1c0NvZGVzPXQuREJOb3RSZXNldD10LkRCV3JvbmdQYXNzd29yZD10Lk5vREJQYXRoR2l2ZW49dC5GaXJtd2FyZU9yQXBwVXBkYXRlUmVxdWlyZWQ9dC5MZWRnZXJBUEk1eHg9dC5MZWRnZXJBUEk0eHg9dC5HZW51aW5lQ2hlY2tGYWlsZWQ9dC5QYWlyaW5nRmFpbGVkPXQuU3luY0Vycm9yPXQuRmVlUmVxdWlyZWQ9dC5GZWVOb3RMb2FkZWQ9dC5DYW50U2NhblFSQ29kZT10LkVUSEFkZHJlc3NOb25FSVA9dC5Xcm9uZ0FwcEZvckN1cnJlbmN5PXQuV3JvbmdEZXZpY2VGb3JBY2NvdW50PXQuV2Vic29ja2V0Q29ubmVjdGlvbkZhaWxlZD10LldlYnNvY2tldENvbm5lY3Rpb25FcnJvcj10LkRldmljZVNob3VsZFN0YXlJbkFwcD10LlRyYW5zcG9ydEludGVyZmFjZU5vdEF2YWlsYWJsZT10LlRyYW5zcG9ydE9wZW5Vc2VyQ2FuY2VsbGVkPXQuVXNlclJlZnVzZWRPbkRldmljZT10LlVzZXJSZWZ1c2VkQWxsb3dNYW5hZ2VyPXQuVXNlclJlZnVzZWRGaXJtd2FyZVVwZGF0ZT10LlVzZXJSZWZ1c2VkQWRkcmVzcz10LlVzZXJSZWZ1c2VkRGV2aWNlTmFtZUNoYW5nZT10LlVwZGF0ZVlvdXJBcHA9dC5VbmV4cGVjdGVkQm9vdGxvYWRlcj10LlRpbWVvdXRUYWdnZWQ9dC5QYXNzd29yZEluY29ycmVjdEVycm9yPXQuUGFzc3dvcmRzRG9udE1hdGNoRXJyb3I9dC5Ob3RFbm91Z2hHYXM9dC5Ob0FjY2Vzc1RvQ2FtZXJhPXQuTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQ9dC5Ob3RFbm91Z2hCYWxhbmNlPXQuTm9BZGRyZXNzZXNGb3VuZD10Lk5ldHdvcmtEb3duPXQuTWFuYWdlclVuaW5zdGFsbEJUQ0RlcD10Lk1hbmFnZXJOb3RFbm91Z2hTcGFjZUVycm9yPXQuTWFuYWdlckZpcm13YXJlTm90RW5vdWdoU3BhY2VFcnJvcj10Lk1hbmFnZXJEZXZpY2VMb2NrZWRFcnJvcj10Lk1hbmFnZXJBcHBSZWx5T25CVENFcnJvcj10Lk1hbmFnZXJBcHBBbHJlYWR5SW5zdGFsbGVkRXJyb3I9dC5MZWRnZXJBUElOb3RBdmFpbGFibGU9dC5MZWRnZXJBUElFcnJvcldpdGhNZXNzYWdlPXQuTGVkZ2VyQVBJRXJyb3I9dC5Vbmtub3duTUNVPXQuTGF0ZXN0TUNVSW5zdGFsbGVkRXJyb3I9dC5JbnZhbGlkQWRkcmVzc0JlY2F1c2VEZXN0aW5hdGlvbklzQWxzb1NvdXJjZT10LkludmFsaWRBZGRyZXNzPXQuSGFyZFJlc2V0RmFpbD10LkZlZUVzdGltYXRpb25GYWlsZWQ9dC5FdGhBcHBQbGVhc2VFbmFibGVDb250cmFjdERhdGE9dC5FbnBvaW50Q29uZmlnRXJyb3I9dC5EaXNjb25uZWN0ZWREZXZpY2VEdXJpbmdPcGVyYXRpb249dC5EaXNjb25uZWN0ZWREZXZpY2U9dC5EZXZpY2VTb2NrZXROb0J1bGtTdGF0dXM9dC5EZXZpY2VTb2NrZXRGYWlsPXQuRGV2aWNlTmFtZUludmFsaWQ9dC5EZXZpY2VIYWx0ZWQ9dC5EZXZpY2VJbk9TVUV4cGVjdGVkPXQuRGV2aWNlT25EYXNoYm9hcmRVbmV4cGVjdGVkPXQuRGV2aWNlT25EYXNoYm9hcmRFeHBlY3RlZD10LkRldmljZU5vdEdlbnVpbmVFcnJvcj10LkRldmljZUdlbnVpbmVTb2NrZXRFYXJseUNsb3NlPXQuRGV2aWNlQXBwVmVyaWZ5Tm90U3VwcG9ydGVkPXQuQ3VycmVuY3lOb3RTdXBwb3J0ZWQ9dC5DYXNoQWRkck5vdFN1cHBvcnRlZD10LkNhbnRPcGVuRGV2aWNlPXQuQnRjVW5tYXRjaGVkQXBwPXQuQmx1ZXRvb3RoUmVxdWlyZWQ9dC5BY2NvdW50Tm90U3VwcG9ydGVkPXQuQWNjb3VudE5hbWVSZXF1aXJlZEVycm9yPXQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9dC5jcmVhdGVDdXN0b21FcnJvckNsYXNzPXQuZGVzZXJpYWxpemVFcnJvcj10LnNlcmlhbGl6ZUVycm9yPXZvaWQgMCx0LlRyYW5zcG9ydEVycm9yPWksdC5nZXRBbHRTdGF0dXNNZXNzYWdlPWEsdC5UcmFuc3BvcnRTdGF0dXNFcnJvcj1zO3ZhciBuPXIoOTM5KTt0LnNlcmlhbGl6ZUVycm9yPW4uc2VyaWFsaXplRXJyb3IsdC5kZXNlcmlhbGl6ZUVycm9yPW4uZGVzZXJpYWxpemVFcnJvcix0LmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3M9bi5jcmVhdGVDdXN0b21FcnJvckNsYXNzLHQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9bi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcjt0LkFjY291bnROYW1lUmVxdWlyZWRFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJBY2NvdW50TmFtZVJlcXVpcmVkIiksdC5BY2NvdW50Tm90U3VwcG9ydGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkFjY291bnROb3RTdXBwb3J0ZWQiKSx0LkJsdWV0b290aFJlcXVpcmVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkJsdWV0b290aFJlcXVpcmVkIiksdC5CdGNVbm1hdGNoZWRBcHA9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiQnRjVW5tYXRjaGVkQXBwIiksdC5DYW50T3BlbkRldmljZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJDYW50T3BlbkRldmljZSIpLHQuQ2FzaEFkZHJOb3RTdXBwb3J0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiQ2FzaEFkZHJOb3RTdXBwb3J0ZWQiKSx0LkN1cnJlbmN5Tm90U3VwcG9ydGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkN1cnJlbmN5Tm90U3VwcG9ydGVkIiksdC5EZXZpY2VBcHBWZXJpZnlOb3RTdXBwb3J0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlQXBwVmVyaWZ5Tm90U3VwcG9ydGVkIiksdC5EZXZpY2VHZW51aW5lU29ja2V0RWFybHlDbG9zZT0oMCxuLmM="
}

github/deemru/w8io/169f3d6 
5.44 ms