3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_36
{
    "2.7c767379.chunk.js_36": "base64:d2l0Y2goaS5kZWtJbmZvLmFsZ29yaXRobSl7Y2FzZSJERVMtQ0JDIjpzPTgsdT1uLmRlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyO2JyZWFrO2Nhc2UiREVTLUVERTMtQ0JDIjpzPTI0LHU9bi5kZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIkFFUy0xMjgtQ0JDIjpzPTE2LHU9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIkFFUy0xOTItQ0JDIjpzPTI0LHU9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIkFFUy0yNTYtQ0JDIjpzPTMyLHU9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIlJDMi00MC1DQkMiOnM9NSx1PWZ1bmN0aW9uKGUpe3JldHVybiBuLnJjMi5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKGUsNDApfTticmVhaztjYXNlIlJDMi02NC1DQkMiOnM9OCx1PWZ1bmN0aW9uKGUpe3JldHVybiBuLnJjMi5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKGUsNjQpfTticmVhaztjYXNlIlJDMi0xMjgtQ0JDIjpzPTE2LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoZSwxMjgpfTticmVhaztkZWZhdWx0OnZhciBjO3Rocm93KGM9bmV3IEVycm9yKCdDb3VsZCBub3QgZGVjcnlwdCBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0gIicraS5kZWtJbmZvLmFsZ29yaXRobSsnIi4nKSkuYWxnb3JpdGhtPWkuZGVrSW5mby5hbGdvcml0aG0sY312YXIgZj1uLnV0aWwuaGV4VG9CeXRlcyhpLmRla0luZm8ucGFyYW1ldGVycyksbD11KG4ucGJlLm9wZW5zc2xEZXJpdmVCeXRlcyh0LGYuc3Vic3RyKDAsOCkscykpO2lmKGwuc3RhcnQoZiksbC51cGRhdGUobi51dGlsLmNyZWF0ZUJ1ZmZlcihpLmJvZHkpKSwhbC5maW5pc2goKSlyZXR1cm4gcjtyPWwub3V0cHV0LmdldEJ5dGVzKCl9ZWxzZSByPWkuYm9keTtyZXR1cm4gbnVsbCE9PShyPSJFTkNSWVBURUQgUFJJVkFURSBLRVkiPT09aS50eXBlP2EuZGVjcnlwdFByaXZhdGVLZXlJbmZvKG8uZnJvbURlcihyKSx0KTpvLmZyb21EZXIocikpJiYocj1hLnByaXZhdGVLZXlGcm9tQXNuMShyKSkscn0sYS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXk9ZnVuY3Rpb24oZSx0LHIsaSxvLGEpe3ZhciBzLHU7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYXx8bnVsbD09PWEpe2lmKCEoInNoYTEiaW4gbi5tZCkpdGhyb3cgbmV3IEVycm9yKCcic2hhMSIgaGFzaCBhbGdvcml0aG0gdW5hdmFpbGFibGUuJyk7YT1uLm1kLnNoYTEuY3JlYXRlKCl9dmFyIGM9YS5kaWdlc3RMZW5ndGgsZj1hLmJsb2NrTGVuZ3RoLGw9bmV3IG4udXRpbC5CeXRlQnVmZmVyLGg9bmV3IG4udXRpbC5CeXRlQnVmZmVyO2lmKG51bGwhPT1lJiZ2b2lkIDAhPT1lKXtmb3IodT0wO3U8ZS5sZW5ndGg7dSsrKWgucHV0SW50MTYoZS5jaGFyQ29kZUF0KHUpKTtoLnB1dEludDE2KDApfXZhciBwPWgubGVuZ3RoKCksZD10Lmxlbmd0aCgpLHk9bmV3IG4udXRpbC5CeXRlQnVmZmVyO3kuZmlsbFdpdGhCeXRlKHIsZik7dmFyIGc9ZipNYXRoLmNlaWwoZC9mKSx2PW5ldyBuLnV0aWwuQnl0ZUJ1ZmZlcjtmb3IodT0wO3U8Zzt1Kyspdi5wdXRCeXRlKHQuYXQodSVkKSk7dmFyIG09ZipNYXRoLmNlaWwocC9mKSxiPW5ldyBuLnV0aWwuQnl0ZUJ1ZmZlcjtmb3IodT0wO3U8bTt1KyspYi5wdXRCeXRlKGguYXQodSVwKSk7dmFyIF89djtfLnB1dEJ1ZmZlcihiKTtmb3IodmFyIFM9TWF0aC5jZWlsKG8vYyksRT0xO0U8PVM7RSsrKXt2YXIgdz1uZXcgbi51dGlsLkJ5dGVCdWZmZXI7dy5wdXRCeXRlcyh5LmJ5dGVzKCkpLHcucHV0Qnl0ZXMoXy5ieXRlcygpKTtmb3IodmFyIFQ9MDtUPGk7VCsrKWEuc3RhcnQoKSxhLnVwZGF0ZSh3LmdldEJ5dGVzKCkpLHc9YS5kaWdlc3QoKTt2YXIgQT1uZXcgbi51dGlsLkJ5dGVCdWZmZXI7Zm9yKHU9MDt1PGY7dSsrKUEucHV0Qnl0ZSh3LmF0KHUlYykpO3ZhciBDPU1hdGguY2VpbChkL2YpK01hdGguY2VpbChwL2YpLHg9bmV3IG4udXRpbC5CeXRlQnVmZmVyO2ZvcihzPTA7czxDO3MrKyl7dmFyIEk9bmV3IG4udXRpbC5CeXRlQnVmZmVyKF8uZ2V0Qnl0ZXMoZikpLGs9NTExO2Zvcih1PUEubGVuZ3RoKCktMTt1Pj0wO3UtLSlrPj49OCxrKz1BLmF0KHUpK0kuYXQodSksSS5zZXRBdCh1LDI1NSZrKTt4LnB1dEJ1ZmZlcihJKX1fPXgsbC5wdXRCdWZmZXIodyl9cmV0dXJuIGwudHJ1bmNhdGUobC5sZW5ndGgoKS1vKSxsfSxhLnBiZS5nZXRDaXBoZXI9ZnVuY3Rpb24oZSx0LHIpe3N3aXRjaChlKXtjYXNlIGEub2lkcy5wa2NzNVBCRVMyOnJldHVybiBhLnBiZS5nZXRDaXBoZXJGb3JQQkVTMihlLHQscik7Y2FzZSBhLm9pZHNbInBiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMiXTpjYXNlIGEub2lkc1sicGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyJdOnJldHVybiBhLnBiZS5nZXRDaXBoZXJGb3JQS0NTMTJQQkUoZSx0LHIpO2RlZmF1bHQ6dmFyIG49bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBlbmNyeXB0ZWQgUEJFIGRhdGEgYmxvY2suIFVuc3VwcG9ydGVkIE9JRC4iKTt0aHJvdyBuLm9pZD1lLG4uc3VwcG9ydGVkT2lkcz1bInBrY3M1UEJFUzIiLCJwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDIiwicGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyJdLG59fSxhLnBiZS5nZXRDaXBoZXJGb3JQQkVTMj1mdW5jdGlvbihlLHQscil7dmFyIGkscz17fSx1PVtdO2lmKCFvLnZhbGlkYXRlKHQsYyxzLHUpKXRocm93KGk9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBwYXNzd29yZC1iYXNlZC1lbmNyeXB0aW9uIGFsZ29yaXRobSBwYXJhbWV0ZXJzLiBBU04uMSBvYmplY3QgaXMgbm90IGEgc3VwcG9ydGVkIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLiIpKS5lcnJvcnM9dSxpO2lmKChlPW8uZGVyVG9PaWQocy5rZGZPaWQpKSE9PWEub2lkcy5wa2NzNVBCS0RGMil0aHJvdyhpPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgZW5jcnlwdGVkIHByaXZhdGUga2V5LiBVbnN1cHBvcnRlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBPSUQuIikpLm9pZD1lLGkuc3VwcG9ydGVkT2lkcz1bInBrY3M1UEJLREYyIl0saTtpZigoZT1vLmRlclRvT2lkKHMuZW5jT2lkKSkhPT1hLm9pZHNbImFlczEyOC1DQkMiXSYmZSE9PWEub2lkc1siYWVzMTkyLUNCQyJdJiZlIT09YS5vaWRzWyJhZXMyNTYtQ0JDIl0mJmUhPT1hLm9pZHNbImRlcy1FREUzLUNCQyJdJiZlIT09YS5vaWRzLmRlc0NCQyl0aHJvdyhpPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgZW5jcnlwdGVkIHByaXZhdGUga2V5LiBVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIHNjaGVtZSBPSUQuIikpLm9pZD1lLGkuc3VwcG9ydGVkT2lkcz1bImFlczEyOC1DQkMiLCJhZXMxOTItQ0JDIiwiYWVzMjU2LUNCQyIsImRlcy1FREUzLUNCQyIsImRlc0NCQyJdLGk7dmFyIGYsbCxwPXMua2RmU2FsdCxkPW4udXRpbC5jcmVhdGVCdWZmZXIocy5rZGZJdGVyYXRpb25Db3VudCk7c3dpdGNoKGQ9ZC5nZXRJbnQoZC5sZW5ndGgoKTw8MyksYS5vaWRzW2VdKXtjYXNlImFlczEyOC1DQkMiOmY9MTYsbD1uLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyO2JyZWFrO2Nhc2UiYWVzMTkyLUNCQyI6Zj0yNCxsPW4uYWVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSJhZXMyNTYtQ0JDIjpmPTMyLGw9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImRlcy1FREUzLUNCQyI6Zj0yNCxsPW4uZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSJkZXNDQkMiOmY9OCxsPW4uZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXJ9dmFyIHk9aChzLnByZk9pZCksZz1uLnBrY3M1LnBia2RmMihyLHAsZCxmLHkpLHY9cy5lbmNJdixtPWwoZyk7cmV0dXJuIG0uc3RhcnQodiksbX0sYS5wYmUuZ2V0Q2lwaGVyRm9yUEtDUzEyUEJFPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT17fSxzPVtdO2lmKCFvLnZhbGlkYXRlKHQsZixpLHMpKXRocm93KHk9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBwYXNzd29yZC1iYXNlZC1lbmNyeXB0aW9uIGFsZ29yaXRobSBwYXJhbWV0ZXJzLiBBU04uMSBvYmplY3QgaXMgbm90IGEgc3VwcG9ydGVkIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLiIpKS5lcnJvcnM9cyx5O3ZhciB1LGMsbCxwPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5zYWx0KSxkPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5pdGVyYXRpb25zKTtzd2l0Y2goZD1kLmdldEludChkLmxlbmd0aCgpPDwzKSxlKXtjYXNlIGEub2lkc1sicGJlV2l0aFNIQUFuZDMtS2V5VHJpcGxlREVTLUNCQyJdOnU9MjQsYz04LGw9bi5kZXMuc3RhcnREZWNyeXB0aW5nO2JyZWFrO2Nhc2UgYS5vaWRzWyJwYmV3aXRoU0hBQW5kNDBCaXRSQzItQ0JDIl06dT01LGM9OCxsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bi5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihlLDQwKTtyZXR1cm4gci5zdGFydCh0LG51bGwpLHJ9O2JyZWFrO2RlZmF1bHQ6dmFyIHk7dGhyb3coeT1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIFBLQ1MgIzEyIFBCRSBkYXRhIGJsb2NrLiBVbnN1cHBvcnRlZCBPSUQuIikpLm9pZD1lLHl9dmFyIGc9aChpLnByZk9pZCksdj1hLnBiZS5nZW5lcmF0ZVBrY3MxMktleShyLHAsMSxkLHUsZyk7cmV0dXJuIGcuc3RhcnQoKSxsKHYsYS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocixwLDIsZCxjLGcpKX0sYS5wYmUub3BlbnNzbERlcml2ZUJ5dGVzPWZ1bmN0aW9uKGUsdCxyLGkpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGl8fG51bGw9PT1pKXtpZighKCJtZDUiaW4gbi5tZCkpdGhyb3cgbmV3IEVycm9yKCcibWQ1IiBoYXNoIGFsZ29yaXRobSB1bmF2YWlsYWJsZS4nKTtpPW4ubWQubWQ1LmNyZWF0ZSgpfW51bGw9PT10JiYodD0iIik7Zm9yKHZhciBvPVtsKGksZSt0KV0sYT0xNixzPTE7YTxyOysrcyxhKz0xNilvLnB1c2gobChpLG9bcy0xXStlK3QpKTtyZXR1cm4gby5qb2luKCIiKS5zdWJzdHIoMCxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoNjYpLHIoMTApO3ZhciBpPWUuZXhwb3J0cz1uLnNoYTI1Nj1uLnNoYTI1Nnx8e307bi5tZC5zaGEyNTY9bi5tZC5hbGdvcml0aG1zLnNoYTI1Nj1pLGkuY3JlYXRlPWZ1bmN0aW9uKCl7YXx8KG89U3RyaW5nLmZyb21DaGFyQ29kZSgxMjgpLG8rPW4udXRpbC5maWxsU3RyaW5nKFN0cmluZy5mcm9tQ2hhckNvZGUoMCksNjQpLHM9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sYT0hMCk7dmFyIGU9bnVsbCx0PW4udXRpbC5jcmVhdGVCdWZmZXIoKSxyPW5ldyBBcnJheSg2NCksaT17YWxnb3JpdGhtOiJzaGEyNTYiLGJsb2NrTGVuZ3RoOjY0LGRpZ2VzdExlbmd0aDozMixtZXNzYWdlTGVuZ3RoOjAsZnVsbE1lc3NhZ2VMZW5ndGg6bnVsbCxtZXNzYWdlTGVuZ3RoU2l6ZTo4LHN0YXJ0OmZ1bmN0aW9uKCl7aS5tZXNzYWdlTGVuZ3RoPTAsaS5mdWxsTWVzc2FnZUxlbmd0aD1pLm1lc3NhZ2VMZW5ndGg2ND1bXTtmb3IodmFyIHI9aS5tZXNzYWdlTGVuZ3RoU2l6ZS80LG89MDtvPHI7KytvKWkuZnVsbE1lc3NhZ2VMZW5ndGgucHVzaCgwKTtyZXR1cm4gdD1uLnV0aWwuY3JlYXRlQnVmZmVyKCksZT17aDA6MTc3OTAzMzcwMyxoMTozMTQ0MTM0Mjc3LGgyOjEwMTM5MDQyNDIsaDM6Mjc3MzQ4MDc2MixoNDoxMzU5ODkzMTE5LGg1OjI2MDA4MjI5MjQsaDY6NTI4NzM0NjM1LGg3OjE1NDE0NTkyMjV9LGl9fTtyZXR1cm4gaS5zdGFydCgpLGkudXBkYXRlPWZ1bmN0aW9uKG8sYSl7InV0ZjgiPT09YSYmKG89bi51dGlsLmVuY29kZVV0ZjgobykpO3ZhciBzPW8ubGVuZ3RoO2kubWVzc2FnZUxlbmd0aCs9cyxzPVtzLzQyOTQ5NjcyOTY+Pj4wLHM+Pj4wXTtmb3IodmFyIGM9aS5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGgtMTtjPj0wOy0tYylpLmZ1bGxNZXNzYWdlTGVuZ3RoW2NdKz1zWzFdLHNbMV09c1swXSsoaS5mdWxsTWVzc2FnZUxlbmd0aFtjXS80Mjk0OTY3Mjk2Pj4+MCksaS5mdWxsTWVzc2FnZUxlbmd0aFtjXT1pLmZ1bGxNZXNzYWdlTGVuZ3RoW2NdPj4+MCxzWzBdPXNbMV0vNDI5NDk2NzI5Nj4+PjA7cmV0dXJuIHQucHV0Qnl0ZXMobyksdShlLHIsdCksKHQucmVhZD4yMDQ4fHwwPT09dC5sZW5ndGgoKSkmJnQuY29tcGFjdCgpLGl9LGkuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGE9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2EucHV0Qnl0ZXModC5ieXRlcygpKTt2YXIgcyxjPWkuZnVsbE1lc3NhZ2VMZW5ndGhbaS5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGgtMV0raS5tZXNzYWdlTGVuZ3RoU2l6ZSZpLmJsb2NrTGVuZ3RoLTE7YS5wdXRCeXRlcyhvLnN1YnN0cigwLGkuYmxvY2tMZW5ndGgtYykpO2Zvcih2YXIgZj04KmkuZnVsbE1lc3NhZ2VMZW5ndGhbMF0sbD0wO2w8aS5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGgtMTsrK2wpZis9KHM9OCppLmZ1bGxNZXNzYWdlTGVuZ3RoW2wrMV0pLzQyOTQ5NjcyOTY+Pj4wLGEucHV0SW50MzIoZj4+PjApLGY9cz4+PjA7YS5wdXRJbnQzMihmKTt2YXIgaD17aDA6ZS5oMCxoMTplLmgxLGgyOmUuaDIsaDM6ZS5oMyxoNDplLmg0LGg1OmUuaDUsaDY6ZS5oNixoNzplLmg3fTt1KGgscixhKTt2YXIgcD1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7cmV0dXJuIHAucHV0SW50MzIoaC5oMCkscC5wdXRJbnQzMihoLmgxKSxwLnB1dEludDMyKGguaDIpLHAucHV0SW50MzIoaC5oMykscC5wdXRJbnQzMihoLmg0KSxwLnB1dEludDMyKGguaDUpLHAucHV0SW50MzIoaC5oNikscC5wdXRJbnQzMihoLmg3KSxwfSxpfTt2YXIgbz1udWxsLGE9ITEscz1udWxsO2Z1bmN0aW9uIHUoZSx0LHIpe2Zvcih2YXIgbixpLG8sYSx1LGMsZixsLGgscCxkLHksZyx2PXIubGVuZ3RoKCk7dj49NjQ7KXtmb3IodT0wO3U8MTY7Kyt1KXRbdV09ci5nZXRJbnQzMigpO2Zvcig7dTw2NDsrK3Upbj0oKG49dFt1LTJdKT4+PjE3fG48PDE1KV4obj4+PjE5fG48PDEzKV5uPj4+MTAsaT0oKGk9dFt1LTE1XSk+Pj43fGk8PDI1KV4oaT4+PjE4fGk8PDE0KV5pPj4+Myx0W3VdPW4rdFt1LTddK2krdFt1LTE2XXwwO2ZvcihjPWUuaDAsZj1lLmgxLGw9ZS5oMixoPWUuaDMscD1lLmg0LGQ9ZS5oNSx5PWUuaDYsZz1lLmg3LHU9MDt1PDY0OysrdSlvPShjPj4+MnxjPDwzMCleKGM+Pj4xM3xjPDwxOSleKGM+Pj4yMnxjPDwxMCksYT1jJmZ8bCYoY15mKSxuPWcrKChwPj4+NnxwPDwyNileKHA+Pj4xMXxwPDwyMSleKHA+Pj4yNXxwPDw3KSkrKHlecCYoZF55KSkrc1t1XSt0W3VdLGc9eSx5PWQsZD1wLHA9aCtuPj4+MCxoPWwsbD1mLGY9YyxjPW4rKGk9bythKT4+PjA7ZS5oMD1lLmgwK2N8MCxlLmgxPWUuaDErZnwwLGUuaDI9ZS5oMitsfDAsZS5oMz1lLmgzK2h8MCxlLmg0PWUuaDQrcHwwLGUuaDU9ZS5oNStkfDAsZS5oNj1lLmg2K3l8MCxlLmg3PWUuaDcrZ3wwLHYtPTY0fX19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIG49cig2KTtyKDEwKTt2YXIgaT1udWxsOyFuLnV0aWwuaXNOb2RlanN8fG4ub3B0aW9ucy51c2VQdXJlSmF2YVNjcmlwdHx8dC52ZXJzaW9uc1sibm9kZS13ZWJraXQiXXx8KGk9cigyMjQpKSwoZS5leHBvcnRzPW4ucHJuZz1uLnBybmd8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXtwbHVnaW46ZSxrZXk6bnVsbCxzZWVkOm51bGwsdGltZTpudWxsLHJlc2VlZHM6MCxnZW5lcmF0ZWQ6MCxrZXlCeXRlczoiIn0scj1lLm1kLG89bmV3IEFycmF5KDMyKSxhPTA7YTwzMjsrK2Epb1thXT1yLmNyZWF0ZSgpO2Z1bmN0aW9uIHMoKXtpZih0LnBvb2xzWzBdLm1lc3NhZ2VMZW5ndGg+PTMyKXJldHVybiB1KCk7dmFyIGU9MzItdC5wb29sc1swXS5tZXNzYWdlTGVuZ3RoPDw1O3QuY29sbGVjdCh0LnNlZWRGaWxlU3luYyhlKSksdSgpfWZ1bmN0aW9uIHUoKXt0LnJlc2VlZHM9NDI5NDk2NzI5NT09PXQucmVzZWVkcz8wOnQucmVzZWVkcysxO3ZhciBlPXQucGx1Z2luLm1kLmNyZWF0ZSgpO2UudXBkYXRlKHQua2V5Qnl0ZXMpO2Zvcih2YXIgcj0xLG49MDtuPDMyOysrbil0LnJlc2VlZHMlcj09PTAmJihlLnVwZGF0ZSh0LnBvb2xzW25dLmRpZ2VzdCgpLmdldEJ5dGVzKCkpLHQucG9vbHNbbl0uc3RhcnQoKSkscjw8PTE7dC5rZXlCeXRlcz1lLmRpZ2VzdCgpLmdldEJ5dGVzKCksZS5zdGFydCgpLGUudXBkYXRlKHQua2V5Qnl0ZXMpO3ZhciBpPWUuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTt0LmtleT10LnBsdWdpbi5mb3JtYXRLZXkodC5rZXlCeXRlcyksdC5zZWVkPXQucGx1Z2luLmZvcm1hdFNlZWQoaSksdC5nZW5lcmF0ZWQ9MH1mdW5jdGlvbiBjKGUpe3ZhciB0PW51bGwscj1uLnV0aWwuZ2xvYmFsU2NvcGUsaT1yLmNyeXB0b3x8ci5tc0NyeXB0bztpJiZpLmdldFJhbmRvbVZhbHVlcyYmKHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UmFuZG9tVmFsdWVzKGUpfSk7dmFyIG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2lmKHQpZm9yKDtvLmxlbmd0aCgpPGU7KXt2YXIgYT1NYXRoLm1heCgxLE1hdGgubWluKGUtby5sZW5ndGgoKSw2NTUzNikvNCkscz1uZXcgVWludDMyQXJyYXkoTWF0aC5mbG9vcihhKSk7dHJ5e3Qocyk7Zm9yKHZhciB1PTA7dTxzLmxlbmd0aDsrK3Upby5wdXRJbnQzMihzW3VdKX1jYXRjaChwKXtpZighKCJ1bmRlZmluZWQiIT09dHlwZW9mIFF1b3RhRXhjZWVkZWRFcnJvciYmcCBpbnN0YW5jZW9mIFF1b3RhRXhjZWVkZWRFcnJvcikpdGhyb3cgcH19aWYoby5sZW5ndGgoKTxlKWZvcih2YXIgYyxmLGwsaD1NYXRoLmZsb29yKDY1NTM2Kk1hdGgucmFuZG9tKCkpO28ubGVuZ3RoKCk8ZTspe2Y9MTY4MDcqKDY1NTM1JmgpLGYrPSgzMjc2NyYoYz0xNjgwNyooaD4+MTYpKSk8PDE2LGg9NDI5NDk2NzI5NSYoZj0oMjE0NzQ4MzY0NyYoZis9Yz4+MTUpKSsoZj4+MzEpKTtmb3IodT0wO3U8MzsrK3UpbD1oPj4+KHU8PDMpLGxePU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpLG8ucHV0Qnl0ZShTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZsKSl9cmV0dXJuIG8uZ2V0Qnl0ZXMoZSl9cmV0dXJuIHQucG9vbHM9byx0LnBvb2w9MCx0LmdlbmVyYXRlPWZ1bmN0aW9uKGUscil7aWYoIXIpcmV0dXJuIHQuZ2VuZXJhdGVTeW5jKGUpO3ZhciBpPXQucGx1Z2luLmNpcGhlcixvPXQucGx1Z2luLmluY3JlbWVudCxhPXQucGx1Z2luLmZvcm1hdEtleSxzPXQucGx1Z2luLmZvcm1hdFNlZWQsYz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7dC5rZXk9bnVsbCxmdW5jdGlvbiBmKGwpe2lmKGwpcmV0dXJuIHIobCk7aWYoYy5sZW5ndGgoKT49ZSlyZXR1cm4gcihudWxsLGMuZ2V0Qnl0ZXMoZSkpO3QuZ2VuZXJhdGVkPjEwNDg1NzUmJih0LmtleT1udWxsKTtpZihudWxsPT09dC5rZXkpcmV0dXJuIG4udXRpbC5uZXh0VGljayhmdW5jdGlvbigpeyFmdW5jdGlvbihlKXtpZih0LnBvb2xzWzBdLm1lc3NhZ2VMZW5ndGg+PTMyKXJldHVybiB1KCksZSgpO3ZhciByPTMyLXQucG9vbHNbMF0ubWVzc2FnZUxlbmd0aDw8NTt0LnNlZWRGaWxlKHIsZnVuY3Rpb24ocixuKXtpZihyKXJldHVybiBlKHIpO3QuY29sbGVjdChuKSx1KCksZSgpfSl9KGYpfSk7dmFyIGg9aSh0LmtleSx0LnNlZWQpO3QuZ2VuZXJhdGVkKz1oLmxlbmd0aDtjLnB1dEJ5dGVzKGgpO3Qua2V5PWEoaSh0LmtleSxvKHQuc2VlZCkpKTt0LnNlZWQ9cyhpKHQua2V5LHQuc2VlZCkpO24udXRpbC5zZXRJbW1lZGlhdGUoZil9KCl9LHQuZ2VuZXJhdGVTeW5jPWZ1bmN0aW9uKGUpe3ZhciByPXQucGx1Z2luLmNpcGhlcixpPXQucGx1Z2luLmluY3JlbWVudCxvPXQucGx1Z2luLmZvcm1hdEtleSxhPXQucGx1Z2luLmZvcm1hdFNlZWQ7dC5rZXk9bnVsbDtmb3IodmFyIHU9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3UubGVuZ3RoKCk8ZTspe3QuZ2VuZXJhdGVkPjEwNDg1NzUmJih0LmtleT1udWxsKSxudWxsPT09dC5rZXkmJnMoKTt2YXIgYz1yKHQua2V5LHQuc2VlZCk7dC5nZW5lcmF0ZWQrPWMubGVuZ3RoLHUucHV0Qnl0ZXMoYyksdC5rZXk9byhyKHQua2V5LGkodC5zZWVkKSkpLHQuc2VlZD1hKHIodC5rZXksdC5zZWVkKSl9cmV0dXJuIHUuZ2V0Qnl0ZXMoZSl9LGk/KHQuc2VlZEZpbGU9ZnVuY3Rpb24oZSx0KXtpLnJhbmRvbUJ5dGVzKGUsZnVuY3Rpb24oZSxyKXtpZihlKXJldHVybiB0KGUpO3QobnVsbCxyLnRvU3RyaW5nKCkpfSl9LHQuc2VlZEZpbGVTeW5jPWZ1bmN0aW9uKGUpe3JldHVybiBpLnJhbmRvbUJ5dGVzKGUpLnRvU3RyaW5nKCl9KToodC5zZWVkRmlsZT1mdW5jdGlvbihlLHQpe3RyeXt0KG51bGwsYyhlKSl9Y2F0Y2gocil7dChyKX19LHQuc2VlZEZpbGVTeW5jPWMpLHQuY29sbGVjdD1mdW5jdGlvbihlKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj0wO248cjsrK24pdC5wb29sc1t0LnBvb2xdLnVwZGF0ZShlLnN1YnN0cihuLDEpKSx0LnBvb2w9MzE9PT10LnBvb2w/MDp0LnBvb2wrMX0sdC5jb2xsZWN0SW50PWZ1bmN0aW9uKGUscil7Zm9yKHZhciBuPSIiLGk9MDtpPHI7aSs9OCluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU+PmkmMjU1KTt0LmNvbGxlY3Qobil9LHQucmVnaXN0ZXJXb3JrZXI9ZnVuY3Rpb24oZSl7aWYoZT09PXNlbGYpdC5zZWVkRmlsZT1mdW5jdGlvbihlLHQpe3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShyKXt2YXIgbj1yLmRhdGE7bi5mb3JnZSYmbi5mb3JnZS5wcm5nJiYoc2VsZi5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSx0KG4uZm9yZ2UucHJuZy5lcnIsbi5mb3JnZS5wcm5nLmJ5dGVzKSl9KSxzZWxmLnBvc3RNZXNzYWdlKHtmb3JnZTp7cHJuZzp7bmVlZGVkOmV9fX0pfTtlbHNle2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24ocil7dmFyIG49ci5kYXRhO24uZm9yZ2UmJm4uZm9yZ2UucHJuZyYmdC5zZWVkRmlsZShuLmZvcmdlLnBybmcubmVlZGVkLGZ1bmN0aW9uKHQscil7ZS5wb3N0TWVzc2FnZSh7Zm9yZ2U6e3Bybmc6e2Vycjp0LGJ5dGVzOnJ9fX0pfSl9KX19LHR9fSkuY2FsbCh0aGlzLHIoNDYpKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigxMCk7dmFyIGk9WzIxNywxMjAsMjQ5LDE5NiwyNSwyMjEsMTgxLDIzNyw0MCwyMzMsMjUzLDEyMSw3NCwxNjAsMjE2LDE1NywxOTgsMTI2LDU1LDEzMSw0MywxMTgsODMsMTQyLDk4LDc2LDEwMCwxMzYsNjgsMTM5LDI1MSwxNjIsMjMsMTU0LDg5LDI0NSwxMzUsMTc5LDc5LDE5LDk3LDY5LDEwOSwxNDEsOSwxMjksMTI1LDUwLDE4OSwxNDMsNjQsMjM1LDEzNCwxODMsMTIzLDExLDI0MCwxNDksMzMsMzQsOTIsMTA3LDc4LDEzMCw4NCwyMTQsMTAxLDE0NywyMDYsOTYsMTc4LDI4LDExNSw4NiwxOTIsMjAsMTY3LDE0MCwyNDEsMjIwLDE4LDExNywyMDIsMzEsNTksMTkwLDIyOCwyMDksNjYsNjEsMjEyLDQ4LDE2Myw2MCwxODIsMzgsMTExLDE5MSwxNCwyMTgsNzAsMTA1LDcsODcsMzksMjQyLDI5LDE1NSwxODgsMTQ4LDY3LDMsMjQ4LDE3LDE5OSwyNDYsMTQ0LDIzOSw2MiwyMzEsNiwxOTUsMjEzLDQ3LDIwMCwxMDIsMzAsMjE1LDgsMjMyLDIzNCwyMjIsMTI4LDgyLDIzOCwyNDcsMTMyLDE3MCwxMTQsMTcyLDUzLDc3LDEwNiw0MiwxNTAsMjYsMjEwLDExMyw5MCwyMSw3MywxMTYsNzUsMTU5LDIwOCw5NCw0LDI0LDE2NCwyMzYsMTk0LDIyNCw2NSwxMTAsMTUsODEsMjAzLDIwNCwzNiwxNDUsMTc1LDgwLDE2MSwyNDQsMTEyLDU3LDE1MywxMjQsNTgsMTMzLDM1LDE4NCwxODAsMTIyLDI1MiwyLDU0LDkxLDM3LDg1LDE1MSw0OSw0NSw5MywyNTAsMTUyLDIyNywxMzgsMTQ2LDE3NCw1LDIyMyw0MSwxNiwxMDMsMTA4LDE4NiwyMDEsMjExLDAsMjMwLDIwNywyMjUsMTU4LDE2OCw0NCw5OSwyMiwxLDYzLDg4LDIyNiwxMzcsMTY5LDEzLDU2LDUyLDI3LDE3MSw1MSwyNTUsMTc2LDE4Nyw3MiwxMiw5NSwxODUsMTc3LDIwNSw0NiwxOTcsMjQzLDIxOSw3MSwyMjksMTY1LDE1NiwxMTksMTAsMTY2LDMyLDEwNCwyNTQsMTI3LDE5MywxNzNdLG89WzEsMiwzLDVdO2UuZXhwb3J0cz1uLnJjMj1uLnJjMnx8e30sbi5yYzIuZXhwYW5kS2V5PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PT10eXBlb2YgZSYmKGU9bi51dGlsLmNyZWF0ZUJ1ZmZlcihlKSksdD10fHwxMjg7dmFyIHIsbz1lLGE9ZS5sZW5ndGgoKSxzPXQsdT1NYXRoLmNlaWwocy84KSxjPTI1NT4+KDcmcyk7Zm9yKHI9YTtyPDEyODtyKyspby5wdXRCeXRlKGlbby5hdChyLTEpK28uYXQoci1hKSYyNTVdKTtmb3Ioby5zZXRBdCgxMjgtdSxpW28uYXQoMTI4LXUpJmNdKSxyPTEyNy11O3I+PTA7ci0tKW8uc2V0QXQocixpW28uYXQocisxKV5vLmF0KHIrdSldKTtyZXR1cm4gb307dmFyIGE9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLGEscyx1LGM9ITEsZj1udWxsLGw9bnVsbCxoPW51bGwscD1bXTtmb3IoZT1uLnJjMi5leHBhbmRLZXkoZSx0KSxzPTA7czw2NDtzKyspcC5wdXNoKGUuZ2V0SW50MTZMZSgpKTtyPyhpPWZ1bmN0aW9uKGUpe2ZvcihzPTA7czw0O3MrKyllW3NdKz1wW3VdKyhlWyhzKzMpJTRdJmVbKHMrMiklNF0pKyh+ZVsocyszKSU0XSZlWyhzKzEpJTRdKSxlW3NdPSh0PWVbc10pPDwocj1vW3NdKSY2NTUzNXwoNjU1MzUmdCk+PjE2LXIsdSsrO3ZhciB0LHJ9LGE9ZnVuY3Rpb24oZSl7Zm9yKHM9MDtzPDQ7cysrKWVbc10rPXBbNjMmZVsocyszKSU0XV19KTooaT1mdW5jdGlvbihlKXtmb3Iocz0zO3M+PTA7cy0tKWVbc109KDY1NTM1Jih0PWVbc10pKT4+KHI9b1tzXSl8dDw8MTYtciY2NTUzNSxlW3NdLT1wW3VdKyhlWyhzKzMpJTRdJmVbKHMrMiklNF0pKyh+ZVsocyszKSU0XSZlWyhzKzEpJTRdKSx1LS07dmFyIHQscn0sYT1mdW5jdGlvbihlKXtmb3Iocz0zO3M+PTA7cy0tKWVbc10tPXBbNjMmZVsocyszKSU0XV19KTt2YXIgZD1mdW5jdGlvbihlKXt2YXIgdD1bXTtmb3Iocz0wO3M8NDtzKyspe3ZhciBuPWYuZ2V0SW50MTZMZSgpO251bGwhPT1oJiYocj9uXj1oLmdldEludDE2TGUoKTpoLnB1dEludDE2TGUobikpLHQucHVzaCg2NTUzNSZuKX11PXI/MDo2Mztmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylmb3IodmFyIG89MDtvPGVbaV1bMF07bysrKWVbaV1bMV0odCk7Zm9yKHM9MDtzPDQ7cysrKW51bGwhPT1oJiYocj9oLnB1dEludDE2TGUodFtzXSk6dFtzXV49aC5nZXRJbnQxNkxlKCkpLGwucHV0SW50MTZMZSh0W3NdKX0seT1udWxsO3JldHVybiB5PXtzdGFydDpmdW5jdGlvbihlLHQpe2UmJiJzdHJpbmciPT09dHlwZW9mIGUmJihlPW4udXRpbC5jcmVhdGVCdWZmZXIoZSkpLGM9ITEsZj1uLnV0aWwuY3JlYXRlQnVmZmVyKCksbD10fHxuZXcgbi51dGlsLmNyZWF0ZUJ1ZmZlcixoPWUseS5vdXRwdXQ9bH0sdXBkYXRlOmZ1bmN0aW9uKGUpe2ZvcihjfHxmLnB1dEJ1ZmZlcihlKTtmLmxlbmd0aCgpPj04OylkKFtbNSxpXSxbMSxhXSxbNixpXSxbMSxhXSxbNSxpXV0pfSxmaW5pc2g6ZnVuY3Rpb24oZSl7dmFyIHQ9ITA7aWYocilpZihlKXQ9ZSg4LGYsIXIpO2Vsc2V7dmFyIG49OD09PWYubGVuZ3RoKCk/ODo4LWYubGVuZ3RoKCk7Zi5maWxsV2l0aEJ5dGUobixuKX1pZih0JiYoYz0hMCx5LnVwZGF0ZSgpKSwhciYmKHQ9MD09PWYubGVuZ3RoKCkpKWlmKGUpdD1lKDgsbCwhcik7ZWxzZXt2YXIgaT1sLmxlbmd0aCgpLG89bC5hdChpLTEpO28+aT90PSExOmwudHJ1bmNhdGUobyl9cmV0dXJuIHR9fX07bi5yYzIuc3RhcnRFbmNyeXB0aW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1uLnJjMi5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGUsMTI4KTtyZXR1cm4gaS5zdGFydCh0LHIpLGl9LG4ucmMyLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQsITApfSxuLnJjMi5zdGFydERlY3J5cHRpbmc9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPW4ucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoZSwxMjgpO3JldHVybiBpLnN0YXJ0KHQsciksaX0sbi5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcj1mdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCwhMSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDEwKSxyKDUyKSxyKDEzNSk7dmFyIGk9ZS5leHBvcnRzPW4ucGtjczE9bi5wa2NzMXx8e307ZnVuY3Rpb24gbyhlLHQscil7cnx8KHI9bi5tZC5zaGExLmNyZWF0ZSgpKTtmb3IodmFyIGk9IiIsbz1NYXRoLmNlaWwodC9yLmRpZ2VzdExlbmd0aCksYT0wO2E8bzsrK2Epe3ZhciBzPVN0cmluZy5mcm9tQ2hhckNvZGUoYT4+MjQmMjU1LGE+PjE2JjI1NSxhPj44JjI1NSwyNTUmYSk7ci5zdGFydCgpLHIudXBkYXRlKGUrcyksaSs9ci5kaWdlc3QoKS5nZXRCeXRlcygpfXJldHVybiBpLnN1YnN0cmluZygwLHQpfWkuZW5jb2RlX3JzYV9vYWVwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxhLHMsdTsic3RyaW5nIj09PXR5cGVvZiByPyhpPXIsYT1hcmd1bWVudHNbM118fHZvaWQgMCxzPWFyZ3VtZW50c1s0XXx8dm9pZCAwKTpyJiYoaT1yLmxhYmVsfHx2b2lkIDAsYT1yLnNlZWR8fHZvaWQgMCxzPXIubWR8fHZvaWQgMCxyLm1nZjEmJnIubWdmMS5tZCYmKHU9ci5tZ2YxLm1kKSkscz9zLnN0YXJ0KCk6cz1uLm1kLnNoYTEuY3JlYXRlKCksdXx8KHU9cyk7dmFyIGM9TWF0aC5jZWlsKGUubi5iaXRMZW5ndGgoKS84KSxmPWMtMipzLmRpZ2VzdExlbmd0aC0yO2lmKHQubGVuZ3RoPmYpdGhyb3coZz1uZXcgRXJyb3IoIlJTQUVTLU9BRVAgaW5wdXQgbWVzc2FnZSBsZW5ndGggaXMgdG9vIGxvbmcuIikpLmxlbmd0aD10Lmxlbmd0aCxnLm1heExlbmd0aD1mLGc7aXx8KGk9IiIpLHMudXBkYXRlKGksInJhdyIpO2Zvcih2YXIgbD1zLmRpZ2VzdCgpLGg9IiIscD1mLXQubGVuZ3RoLGQ9MDtkPHA7ZCsrKWgrPSJcMCI7dmFyIHk9bC5nZXRCeXRlcygpK2grIlx4MDEiK3Q7aWYoYSl7aWYoYS5sZW5ndGghPT1zLmRpZ2VzdExlbmd0aCl7dmFyIGc7dGhyb3coZz1uZXcgRXJyb3IoIkludmFsaWQgUlNBRVMtT0FFUCBzZWVkLiBUaGUgc2VlZCBsZW5ndGggbXVzdCBtYXRjaCB0aGUgZGlnZXN0IGxlbmd0aC4iKSkuc2VlZExlbmd0aD1hLmxlbmd0aCxnLmRpZ2VzdExlbmd0aD1zLmRpZ2VzdExlbmd0aCxnfX1lbHNlIGE9bi5yYW5kb20uZ2V0Qnl0ZXMocy5kaWdlc3RMZW5ndGgpO3ZhciB2PW8oYSxjLXMuZGlnZXN0TGVuZ3RoLTEsdSksbT1uLnV0aWwueG9yQnl0ZXMoeSx2LHkubGVuZ3RoKSxiPW8obSxzLmRpZ2VzdExlbmd0aCx1KTtyZXR1cm4iXDAiK24udXRpbC54b3JCeXRlcyhhLGIsYS5sZW5ndGgpK219LGkuZGVjb2RlX3JzYV9vYWVwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxhLHM7InN0cmluZyI9PT10eXBlb2Ygcj8oaT1yLGE9YXJndW1lbnRzWzNdfHx2b2lkIDApOnImJihpPXIubGFiZWx8fHZvaWQgMCxhPXIubWR8fHZvaWQgMCxyLm1nZjEmJnIubWdmMS5tZCYmKHM9ci5tZ2YxLm1kKSk7dmFyIHU9TWF0aC5jZWlsKGUubi5iaXRMZW5ndGgoKS84KTtpZih0Lmxlbmd0aCE9PXUpdGhyb3codj1uZXcgRXJyb3IoIlJTQUVTLU9BRVAgZW5jb2RlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLiIpKS5sZW5ndGg9dC5sZW5ndGgsdi5leHBlY3RlZExlbmd0aD11LHY7aWYodm9pZCAwPT09YT9hPW4ubWQuc2hhMS5jcmVhdGUoKTphLnN0YXJ0KCksc3x8KHM9YSksdTwyKmEuZGlnZXN0TGVuZ3RoKzIpdGhyb3cgbmV3IEVycm9yKCJSU0FFUy1PQUVQIGtleSBpcyB0b28gc2hvcnQgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLiIpO2l8fChpPSIiKSxhLnVwZGF0ZShpLCJyYXciKTtmb3IodmFyIGM9YS5kaWdlc3QoKS5nZXRCeXRlcygpLGY9dC5jaGFyQXQoMCksbD10LnN1YnN0cmluZygxLGEuZGlnZXN0TGVuZ3RoKzEpLGg9dC5zdWJzdHJpbmcoMSthLmRpZ2VzdExlbmd0aCkscD1vKGgsYS5kaWdlc3RMZW5ndGgscyksZD1vKG4udXRpbC54b3JCeXRlcyhsLHAsbC5sZW5ndGgpLHUtYS5kaWdlc3RMZW5ndGgtMSxzKSx5PW4udXRpbC54b3JCeXRlcyhoLGQsaC5sZW5ndGgpLGc9eS5zdWJzdHJpbmcoMCxhLmRpZ2VzdExlbmd0aCksdj0iXDAiIT09ZixtPTA7bTxhLmRpZ2VzdExlbmd0aDsrK20pdnw9Yy5jaGFyQXQobSkhPT1nLmNoYXJBdChtKTtmb3IodmFyIGI9MSxfPWEuZGlnZXN0TGVuZ3RoLFM9YS5kaWdlc3RMZW5ndGg7Uzx5Lmxlbmd0aDtTKyspe3ZhciBFPXkuY2hhckNvZGVBdChTKTt2fD1FJihiPzY1NTM0OjApLF8rPWImPTEmRV4xfWlmKHZ8fDEhPT15LmNoYXJDb2RlQXQoXykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFJTQUVTLU9BRVAgcGFkZGluZy4iKTtyZXR1cm4geS5zdWJzdHJpbmcoXysxKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoMTApLHIoMTY0KSxyKDUyKSxmdW5jdGlvbigpe2lmKG4ucHJpbWUpZS5leHBvcnRzPW4ucHJpbWU7ZWxzZXt2YXIgdD1lLmV4cG9ydHM9bi5wcmltZT1uLnByaW1lfHx7fSxyPW4uanNibi5CaWdJbnRlZ2VyLGk9WzYsNCwyLDQsMiw0LDYsMl0sbz1uZXcgcihudWxsKTtvLmZyb21JbnQoMzApO3ZhciBhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8dH07dC5nZW5lcmF0ZVByb2JhYmxlUHJpbWU9ZnVuY3Rpb24oZSx0LGkpeyJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKGk9dCx0PXt9KTt2YXIgbz0odD10fHx7fSkuYWxnb3JpdGhtfHwiUFJJTUVJTkMiOyJzdHJpbmciPT09dHlwZW9mIG8mJihvPXtuYW1lOm99KSxvLm9wdGlvbnM9by5vcHRpb25zfHx7fTt2YXIgYT10LnBybmd8fG4ucmFuZG9tLGM9e25leHRCeXRlczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YS5nZXRCeXRlc1N5bmMoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXQuY2hhckNvZGVBdChyKX19O2lmKCJQUklNRUlOQyI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKGUsdCxpLG8pe2lmKCJ3b3JrZXJzImluIGkpcmV0dXJuIGZ1bmN0aW9uKGUsdCxpLG8pe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFdvcmtlcilyZXR1cm4gcyhlLHQsaSxvKTt2YXIgYT11KGUsdCksYz1pLndvcmtlcnMsZj1pLndvcmtMb2FkfHwxMDAsbD0zMCpmLzgsaD1pLndvcmtlclNjcmlwdHx8ImZvcmdlL3ByaW1lLndvcmtlci5qcyI7aWYoLTE9PT1jKXJldHVybiBuLnV0aWwuZXN0aW1hdGVDb3JlcyhmdW5jdGlvbihlLHQpe2UmJih0PTIpLGM9dC0xLHAoKX0pO2Z1bmN0aW9uIHAoKXtjPU1hdGgubWF4KDEsYyk7Zm9yKHZhciBuPVtdLGk9MDtpPGM7KytpKW5baV09bmV3IFdvcmtlcihoKTtmb3IodmFyIGk9MDtpPGM7KytpKW5baV0uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscCk7dmFyIHM9ITE7ZnVuY3Rpb24gcChpKXtpZighcyl7MDt2YXIgYz1pLmRhdGE7aWYoYy5mb3VuZCl7Zm9yKHZhciBoPTA7aDxuLmxlbmd0aDsrK2gpbltoXS50ZXJtaW5hdGUoKTtyZXR1cm4gcz0hMCxvKG51bGwsbmV3IHIoYy5wcmltZSwxNikpfWEuYml0TGVuZ3RoKCk+ZSYmKGE9dShlLHQpKTt2YXIgcD1hLnRvU3RyaW5nKDE2KTtpLnRhcmdldC5wb3N0TWVzc2FnZSh7aGV4OnAsd29ya0xvYWQ6Zn0pLGEuZEFkZE9mZnNldChsLDApfX19cCgpfShlLHQsaSxvKTtyZXR1cm4gcyhlLHQsaSxvKX0oZSxjLG8ub3B0aW9ucyxpKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcHJpbWUgZ2VuZXJhdGlvbiBhbGdvcml0aG06ICIrby5uYW1lKX19ZnVuY3Rpb24gcyhlLHQscixvKXt2YXIgYT11KGUsdCkscz1mdW5jdGlvbihlKXtyZXR1cm4gZTw9MTAwPzI3OmU8PTE1MD8xODplPD0yMDA/MTU6ZTw9MjUwPzEyOmU8PTMwMD85OmU8PTM1MD84OmU8PTQwMD83OmU8PTUwMD82OmU8PTYwMD81OmU8PTgwMD80OmU8PTEyNTA/MzoyfShhLmJpdExlbmd0aCgpKTsibWlsbGVyUmFiaW5UZXN0cyJpbiByJiYocz1yLm1pbGxlclJhYmluVGVzdHMpO3ZhciBjPTEwOyJtYXhCbG9ja1RpbWUiaW4gciYmKGM9ci5tYXhCbG9ja1RpbWUpLGZ1bmN0aW9uIGUodCxyLG8sYSxzLGMsZil7dmFyIGw9K25ldyBEYXRlO2Rve2lmKHQuYml0TGVuZ3RoKCk+ciYmKHQ9dShyLG8pKSx0LmlzUHJvYmFibGVQcmltZShzKSlyZXR1cm4gZihudWxsLHQpO3QuZEFkZE9mZnNldChpW2ErKyU4XSwwKX13aGlsZShjPDB8fCtuZXcgRGF0ZS1sPGMpO24udXRpbC5zZXRJbW1lZGlhdGUoZnVuY3Rpb24oKXtlKHQscixvLGEscyxjLGYpfSl9KGEsZSx0LDAscyxjLG8pfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1uZXcgcihlLHQpLGk9ZS0xO3JldHVybiBuLnRlc3RCaXQoaSl8fG4uYml0d2lzZVRvKHIuT05FLnNoaWZ0TGVmdChpKSxhLG4pLG4uZEFkZE9mZnNldCgzMS1uLm1vZChvKS5ieXRlVmFsdWUoKSwwKSxufX0oKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cig2NSkscigxMzQpLHIoOTApLHIoMzU0KSxyKDM0Nykscig1MikscigxNjMpLHIoMTM1KSxyKDEwKSxyKDIyNSk7dmFyIGk9bi5hc24xLG89bi5wa2ksYT1lLmV4cG9ydHM9bi5wa2NzMTI9bi5wa2NzMTJ8fHt9LHM9e25hbWU6IkNvbnRlbnRJbmZvIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IkNvbnRlbnRJbmZvLmNvbnRlbnRUeXBlIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiY29udGVudFR5cGUifSx7bmFtZToiQ29udGVudEluZm8uY29udGVudCIsdGFnQ2xhc3M6aS5DbGFzcy5DT05URVhUX1NQRUNJRklDLGNvbnN0cnVjdGVkOiEwLGNhcHR1cmVBc24xOiJjb250ZW50In1dfSx1PXtuYW1lOiJQRlgiLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUEZYLnZlcnNpb24iLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToidmVyc2lvbiJ9LHMse25hbWU6IlBGWC5tYWNEYXRhIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCxvcHRpb25hbDohMCxjYXB0dXJlQXNuMToibWFjIix2YWx1ZTpbe25hbWU6IlBGWC5tYWNEYXRhLm1hYyIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQRlgubWFjRGF0YS5tYWMuZGlnZXN0QWxnb3JpdGhtIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IlBGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0uYWxnb3JpdGhtIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToibWFjQWxnb3JpdGhtIn0se25hbWU6IlBGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0ucGFyYW1ldGVycyIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsY2FwdHVyZUFzbjE6Im1hY0FsZ29yaXRobVBhcmFtZXRlcnMifV19LHtuYW1lOiJQRlgubWFjRGF0YS5tYWMuZGlnZXN0Iix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJtYWNEaWdlc3QifV19LHtuYW1lOiJQRlgubWFjRGF0YS5tYWNTYWx0Iix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJtYWNTYWx0In0se25hbWU6IlBGWC5tYWNEYXRhLml0ZXJhdGlvbnMiLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsb3B0aW9uYWw6ITAsY2FwdHVyZToibWFjSXRlcmF0aW9ucyJ9XX1dfSxjPXtuYW1lOiJTYWZlQmFnIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IlNhZmVCYWcuYmFnSWQiLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJiYWdJZCJ9LHtuYW1lOiJTYWZlQmFnLmJhZ1ZhbHVlIix0YWdDbGFzczppLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZUFzbjE6ImJhZ1ZhbHVlIn0se25hbWU6IlNhZmVCYWcuYmFnQXR0cmlidXRlcyIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLlR5cGUuU0VULGNvbnN0cnVjdGVkOiEwLG9wdGlvbmFsOiEwLGNhcHR1cmU6ImJhZ0F0dHJpYnV0ZXMifV19LGY9e25hbWU6IkF0dHJpYnV0ZSIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJBdHRyaWJ1dGUuYXR0cklkIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToib2lkIn0se25hbWU6IkF0dHJpYnV0ZS5hdHRyVmFsdWVzIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVQsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZToidmFsdWVzIn1dfSxsPXtuYW1lOiJDZXJ0QmFnIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IkNlcnRCYWcuY2VydElkIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiY2VydElkIn0se25hbWU6IkNlcnRCYWcuY2VydFZhbHVlIix0YWdDbGFzczppLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJDZXJ0QmFnLmNlcnRWYWx1ZVswXSIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLkNsYXNzLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6ImNlcnQifV19XX07ZnVuY3Rpb24gaChlLHQscixuKXtmb3IodmFyIGk9W10sbz0wO288ZS5sZW5ndGg7bysrKWZvcih2YXIgYT0wO2E8ZVtvXS5zYWZlQmFncy5sZW5ndGg7YSsrKXt2YXIgcz1lW29dLnNhZmVCYWdzW2FdO3ZvaWQgMCE9PW4mJnMudHlwZSE9PW58fChudWxsIT09dD92b2lkIDAhPT1zLmF0dHJpYnV0ZXNbdF0mJnMuYXR0cmlidXRlc1t0XS5pbmRleE9mKHIpPj0wJiZpLnB1c2gocyk6aS5wdXNoKHMpKX1yZXR1cm4gaX1mdW5jdGlvbiBwKGUpe2lmKGUuY29tcG9zZWR8fGUuY29uc3RydWN0ZWQpe2Zvcih2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKCkscj0wO3I8ZS52YWx1ZS5sZW5ndGg7KytyKXQucHV0Qnl0ZXMoZS52YWx1ZVtyXS52YWx1ZSk7ZS5jb21wb3NlZD1lLmNvbnN0cnVjdGVkPSExLGUudmFsdWU9dC5nZXRCeXRlcygpfXJldHVybiBlfWZ1bmN0aW9uIGQoZSx0KXt2YXIgcj17fSxhPVtdO2lmKCFpLnZhbGlkYXRlKGUsbi5wa2NzNy5hc24xLmVuY3J5cHRlZERhdGFWYWxpZGF0b3IscixhKSl0aHJvdyhzPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgRW5jcnlwdGVkQ29udGVudEluZm8uIikpLmVycm9ycz1hLHM7dmFyIHMsdT1pLmRlclRvT2lkKHIuY29udGVudFR5cGUpO2lmKHUhPT1vLm9pZHMuZGF0YSl0aHJvdyhzPW5ldyBFcnJvcigiUEtDUyMxMiBFbmNyeXB0ZWRDb250ZW50SW5mbyBDb250ZW50VHlwZSBpcyBub3QgRGF0YS4iKSkub2lkPXUsczt1PWkuZGVyVG9PaWQoci5lbmNBbGdvcml0aG0pO3ZhciBjPW8ucGJlLmdldENpcGhlcih1LA=="
}

Changelog:

{
    "2020.04.17 15:42": "base64:d2l0Y2goaS5kZWtJbmZvLmFsZ29yaXRobSl7Y2FzZSJERVMtQ0JDIjpzPTgsdT1uLmRlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyO2JyZWFrO2Nhc2UiREVTLUVERTMtQ0JDIjpzPTI0LHU9bi5kZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIkFFUy0xMjgtQ0JDIjpzPTE2LHU9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIkFFUy0xOTItQ0JDIjpzPTI0LHU9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIkFFUy0yNTYtQ0JDIjpzPTMyLHU9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIlJDMi00MC1DQkMiOnM9NSx1PWZ1bmN0aW9uKGUpe3JldHVybiBuLnJjMi5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKGUsNDApfTticmVhaztjYXNlIlJDMi02NC1DQkMiOnM9OCx1PWZ1bmN0aW9uKGUpe3JldHVybiBuLnJjMi5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKGUsNjQpfTticmVhaztjYXNlIlJDMi0xMjgtQ0JDIjpzPTE2LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoZSwxMjgpfTticmVhaztkZWZhdWx0OnZhciBjO3Rocm93KGM9bmV3IEVycm9yKCdDb3VsZCBub3QgZGVjcnlwdCBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0gIicraS5kZWtJbmZvLmFsZ29yaXRobSsnIi4nKSkuYWxnb3JpdGhtPWkuZGVrSW5mby5hbGdvcml0aG0sY312YXIgZj1uLnV0aWwuaGV4VG9CeXRlcyhpLmRla0luZm8ucGFyYW1ldGVycyksbD11KG4ucGJlLm9wZW5zc2xEZXJpdmVCeXRlcyh0LGYuc3Vic3RyKDAsOCkscykpO2lmKGwuc3RhcnQoZiksbC51cGRhdGUobi51dGlsLmNyZWF0ZUJ1ZmZlcihpLmJvZHkpKSwhbC5maW5pc2goKSlyZXR1cm4gcjtyPWwub3V0cHV0LmdldEJ5dGVzKCl9ZWxzZSByPWkuYm9keTtyZXR1cm4gbnVsbCE9PShyPSJFTkNSWVBURUQgUFJJVkFURSBLRVkiPT09aS50eXBlP2EuZGVjcnlwdFByaXZhdGVLZXlJbmZvKG8uZnJvbURlcihyKSx0KTpvLmZyb21EZXIocikpJiYocj1hLnByaXZhdGVLZXlGcm9tQXNuMShyKSkscn0sYS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXk9ZnVuY3Rpb24oZSx0LHIsaSxvLGEpe3ZhciBzLHU7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYXx8bnVsbD09PWEpe2lmKCEoInNoYTEiaW4gbi5tZCkpdGhyb3cgbmV3IEVycm9yKCcic2hhMSIgaGFzaCBhbGdvcml0aG0gdW5hdmFpbGFibGUuJyk7YT1uLm1kLnNoYTEuY3JlYXRlKCl9dmFyIGM9YS5kaWdlc3RMZW5ndGgsZj1hLmJsb2NrTGVuZ3RoLGw9bmV3IG4udXRpbC5CeXRlQnVmZmVyLGg9bmV3IG4udXRpbC5CeXRlQnVmZmVyO2lmKG51bGwhPT1lJiZ2b2lkIDAhPT1lKXtmb3IodT0wO3U8ZS5sZW5ndGg7dSsrKWgucHV0SW50MTYoZS5jaGFyQ29kZUF0KHUpKTtoLnB1dEludDE2KDApfXZhciBwPWgubGVuZ3RoKCksZD10Lmxlbmd0aCgpLHk9bmV3IG4udXRpbC5CeXRlQnVmZmVyO3kuZmlsbFdpdGhCeXRlKHIsZik7dmFyIGc9ZipNYXRoLmNlaWwoZC9mKSx2PW5ldyBuLnV0aWwuQnl0ZUJ1ZmZlcjtmb3IodT0wO3U8Zzt1Kyspdi5wdXRCeXRlKHQuYXQodSVkKSk7dmFyIG09ZipNYXRoLmNlaWwocC9mKSxiPW5ldyBuLnV0aWwuQnl0ZUJ1ZmZlcjtmb3IodT0wO3U8bTt1KyspYi5wdXRCeXRlKGguYXQodSVwKSk7dmFyIF89djtfLnB1dEJ1ZmZlcihiKTtmb3IodmFyIFM9TWF0aC5jZWlsKG8vYyksRT0xO0U8PVM7RSsrKXt2YXIgdz1uZXcgbi51dGlsLkJ5dGVCdWZmZXI7dy5wdXRCeXRlcyh5LmJ5dGVzKCkpLHcucHV0Qnl0ZXMoXy5ieXRlcygpKTtmb3IodmFyIFQ9MDtUPGk7VCsrKWEuc3RhcnQoKSxhLnVwZGF0ZSh3LmdldEJ5dGVzKCkpLHc9YS5kaWdlc3QoKTt2YXIgQT1uZXcgbi51dGlsLkJ5dGVCdWZmZXI7Zm9yKHU9MDt1PGY7dSsrKUEucHV0Qnl0ZSh3LmF0KHUlYykpO3ZhciBDPU1hdGguY2VpbChkL2YpK01hdGguY2VpbChwL2YpLHg9bmV3IG4udXRpbC5CeXRlQnVmZmVyO2ZvcihzPTA7czxDO3MrKyl7dmFyIEk9bmV3IG4udXRpbC5CeXRlQnVmZmVyKF8uZ2V0Qnl0ZXMoZikpLGs9NTExO2Zvcih1PUEubGVuZ3RoKCktMTt1Pj0wO3UtLSlrPj49OCxrKz1BLmF0KHUpK0kuYXQodSksSS5zZXRBdCh1LDI1NSZrKTt4LnB1dEJ1ZmZlcihJKX1fPXgsbC5wdXRCdWZmZXIodyl9cmV0dXJuIGwudHJ1bmNhdGUobC5sZW5ndGgoKS1vKSxsfSxhLnBiZS5nZXRDaXBoZXI9ZnVuY3Rpb24oZSx0LHIpe3N3aXRjaChlKXtjYXNlIGEub2lkcy5wa2NzNVBCRVMyOnJldHVybiBhLnBiZS5nZXRDaXBoZXJGb3JQQkVTMihlLHQscik7Y2FzZSBhLm9pZHNbInBiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMiXTpjYXNlIGEub2lkc1sicGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyJdOnJldHVybiBhLnBiZS5nZXRDaXBoZXJGb3JQS0NTMTJQQkUoZSx0LHIpO2RlZmF1bHQ6dmFyIG49bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBlbmNyeXB0ZWQgUEJFIGRhdGEgYmxvY2suIFVuc3VwcG9ydGVkIE9JRC4iKTt0aHJvdyBuLm9pZD1lLG4uc3VwcG9ydGVkT2lkcz1bInBrY3M1UEJFUzIiLCJwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDIiwicGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyJdLG59fSxhLnBiZS5nZXRDaXBoZXJGb3JQQkVTMj1mdW5jdGlvbihlLHQscil7dmFyIGkscz17fSx1PVtdO2lmKCFvLnZhbGlkYXRlKHQsYyxzLHUpKXRocm93KGk9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBwYXNzd29yZC1iYXNlZC1lbmNyeXB0aW9uIGFsZ29yaXRobSBwYXJhbWV0ZXJzLiBBU04uMSBvYmplY3QgaXMgbm90IGEgc3VwcG9ydGVkIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLiIpKS5lcnJvcnM9dSxpO2lmKChlPW8uZGVyVG9PaWQocy5rZGZPaWQpKSE9PWEub2lkcy5wa2NzNVBCS0RGMil0aHJvdyhpPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgZW5jcnlwdGVkIHByaXZhdGUga2V5LiBVbnN1cHBvcnRlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBPSUQuIikpLm9pZD1lLGkuc3VwcG9ydGVkT2lkcz1bInBrY3M1UEJLREYyIl0saTtpZigoZT1vLmRlclRvT2lkKHMuZW5jT2lkKSkhPT1hLm9pZHNbImFlczEyOC1DQkMiXSYmZSE9PWEub2lkc1siYWVzMTkyLUNCQyJdJiZlIT09YS5vaWRzWyJhZXMyNTYtQ0JDIl0mJmUhPT1hLm9pZHNbImRlcy1FREUzLUNCQyJdJiZlIT09YS5vaWRzLmRlc0NCQyl0aHJvdyhpPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgZW5jcnlwdGVkIHByaXZhdGUga2V5LiBVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIHNjaGVtZSBPSUQuIikpLm9pZD1lLGkuc3VwcG9ydGVkT2lkcz1bImFlczEyOC1DQkMiLCJhZXMxOTItQ0JDIiwiYWVzMjU2LUNCQyIsImRlcy1FREUzLUNCQyIsImRlc0NCQyJdLGk7dmFyIGYsbCxwPXMua2RmU2FsdCxkPW4udXRpbC5jcmVhdGVCdWZmZXIocy5rZGZJdGVyYXRpb25Db3VudCk7c3dpdGNoKGQ9ZC5nZXRJbnQoZC5sZW5ndGgoKTw8MyksYS5vaWRzW2VdKXtjYXNlImFlczEyOC1DQkMiOmY9MTYsbD1uLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyO2JyZWFrO2Nhc2UiYWVzMTkyLUNCQyI6Zj0yNCxsPW4uYWVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSJhZXMyNTYtQ0JDIjpmPTMyLGw9bi5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImRlcy1FREUzLUNCQyI6Zj0yNCxsPW4uZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSJkZXNDQkMiOmY9OCxsPW4uZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXJ9dmFyIHk9aChzLnByZk9pZCksZz1uLnBrY3M1LnBia2RmMihyLHAsZCxmLHkpLHY9cy5lbmNJdixtPWwoZyk7cmV0dXJuIG0uc3RhcnQodiksbX0sYS5wYmUuZ2V0Q2lwaGVyRm9yUEtDUzEyUEJFPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT17fSxzPVtdO2lmKCFvLnZhbGlkYXRlKHQsZixpLHMpKXRocm93KHk9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBwYXNzd29yZC1iYXNlZC1lbmNyeXB0aW9uIGFsZ29yaXRobSBwYXJhbWV0ZXJzLiBBU04uMSBvYmplY3QgaXMgbm90IGEgc3VwcG9ydGVkIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLiIpKS5lcnJvcnM9cyx5O3ZhciB1LGMsbCxwPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5zYWx0KSxkPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5pdGVyYXRpb25zKTtzd2l0Y2goZD1kLmdldEludChkLmxlbmd0aCgpPDwzKSxlKXtjYXNlIGEub2lkc1sicGJlV2l0aFNIQUFuZDMtS2V5VHJpcGxlREVTLUNCQyJdOnU9MjQsYz04LGw9bi5kZXMuc3RhcnREZWNyeXB0aW5nO2JyZWFrO2Nhc2UgYS5vaWRzWyJwYmV3aXRoU0hBQW5kNDBCaXRSQzItQ0JDIl06dT01LGM9OCxsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bi5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihlLDQwKTtyZXR1cm4gci5zdGFydCh0LG51bGwpLHJ9O2JyZWFrO2RlZmF1bHQ6dmFyIHk7dGhyb3coeT1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIFBLQ1MgIzEyIFBCRSBkYXRhIGJsb2NrLiBVbnN1cHBvcnRlZCBPSUQuIikpLm9pZD1lLHl9dmFyIGc9aChpLnByZk9pZCksdj1hLnBiZS5nZW5lcmF0ZVBrY3MxMktleShyLHAsMSxkLHUsZyk7cmV0dXJuIGcuc3RhcnQoKSxsKHYsYS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocixwLDIsZCxjLGcpKX0sYS5wYmUub3BlbnNzbERlcml2ZUJ5dGVzPWZ1bmN0aW9uKGUsdCxyLGkpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGl8fG51bGw9PT1pKXtpZighKCJtZDUiaW4gbi5tZCkpdGhyb3cgbmV3IEVycm9yKCcibWQ1IiBoYXNoIGFsZ29yaXRobSB1bmF2YWlsYWJsZS4nKTtpPW4ubWQubWQ1LmNyZWF0ZSgpfW51bGw9PT10JiYodD0iIik7Zm9yKHZhciBvPVtsKGksZSt0KV0sYT0xNixzPTE7YTxyOysrcyxhKz0xNilvLnB1c2gobChpLG9bcy0xXStlK3QpKTtyZXR1cm4gby5qb2luKCIiKS5zdWJzdHIoMCxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoNjYpLHIoMTApO3ZhciBpPWUuZXhwb3J0cz1uLnNoYTI1Nj1uLnNoYTI1Nnx8e307bi5tZC5zaGEyNTY9bi5tZC5hbGdvcml0aG1zLnNoYTI1Nj1pLGkuY3JlYXRlPWZ1bmN0aW9uKCl7YXx8KG89U3RyaW5nLmZyb21DaGFyQ29kZSgxMjgpLG8rPW4udXRpbC5maWxsU3RyaW5nKFN0cmluZy5mcm9tQ2hhckNvZGUoMCksNjQpLHM9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sYT0hMCk7dmFyIGU9bnVsbCx0PW4udXRpbC5jcmVhdGVCdWZmZXIoKSxyPW5ldyBBcnJheSg2NCksaT17YWxnb3JpdGhtOiJzaGEyNTYiLGJsb2NrTGVuZ3RoOjY0LGRpZ2VzdExlbmd0aDozMixtZXNzYWdlTGVuZ3RoOjAsZnVsbE1lc3NhZ2VMZW5ndGg6bnVsbCxtZXNzYWdlTGVuZ3RoU2l6ZTo4LHN0YXJ0OmZ1bmN0aW9uKCl7aS5tZXNzYWdlTGVuZ3RoPTAsaS5mdWxsTWVzc2FnZUxlbmd0aD1pLm1lc3NhZ2VMZW5ndGg2ND1bXTtmb3IodmFyIHI9aS5tZXNzYWdlTGVuZ3RoU2l6ZS80LG89MDtvPHI7KytvKWkuZnVsbE1lc3NhZ2VMZW5ndGgucHVzaCgwKTtyZXR1cm4gdD1uLnV0aWwuY3JlYXRlQnVmZmVyKCksZT17aDA6MTc3OTAzMzcwMyxoMTozMTQ0MTM0Mjc3LGgyOjEwMTM5MDQyNDIsaDM6Mjc3MzQ4MDc2MixoNDoxMzU5ODkzMTE5LGg1OjI2MDA4MjI5MjQsaDY6NTI4NzM0NjM1LGg3OjE1NDE0NTkyMjV9LGl9fTtyZXR1cm4gaS5zdGFydCgpLGkudXBkYXRlPWZ1bmN0aW9uKG8sYSl7InV0ZjgiPT09YSYmKG89bi51dGlsLmVuY29kZVV0ZjgobykpO3ZhciBzPW8ubGVuZ3RoO2kubWVzc2FnZUxlbmd0aCs9cyxzPVtzLzQyOTQ5NjcyOTY+Pj4wLHM+Pj4wXTtmb3IodmFyIGM9aS5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGgtMTtjPj0wOy0tYylpLmZ1bGxNZXNzYWdlTGVuZ3RoW2NdKz1zWzFdLHNbMV09c1swXSsoaS5mdWxsTWVzc2FnZUxlbmd0aFtjXS80Mjk0OTY3Mjk2Pj4+MCksaS5mdWxsTWVzc2FnZUxlbmd0aFtjXT1pLmZ1bGxNZXNzYWdlTGVuZ3RoW2NdPj4+MCxzWzBdPXNbMV0vNDI5NDk2NzI5Nj4+PjA7cmV0dXJuIHQucHV0Qnl0ZXMobyksdShlLHIsdCksKHQucmVhZD4yMDQ4fHwwPT09dC5sZW5ndGgoKSkmJnQuY29tcGFjdCgpLGl9LGkuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGE9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2EucHV0Qnl0ZXModC5ieXRlcygpKTt2YXIgcyxjPWkuZnVsbE1lc3NhZ2VMZW5ndGhbaS5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGgtMV0raS5tZXNzYWdlTGVuZ3RoU2l6ZSZpLmJsb2NrTGVuZ3RoLTE7YS5wdXRCeXRlcyhvLnN1YnN0cigwLGkuYmxvY2tMZW5ndGgtYykpO2Zvcih2YXIgZj04KmkuZnVsbE1lc3NhZ2VMZW5ndGhbMF0sbD0wO2w8aS5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGgtMTsrK2wpZis9KHM9OCppLmZ1bGxNZXNzYWdlTGVuZ3RoW2wrMV0pLzQyOTQ5NjcyOTY+Pj4wLGEucHV0SW50MzIoZj4+PjApLGY9cz4+PjA7YS5wdXRJbnQzMihmKTt2YXIgaD17aDA6ZS5oMCxoMTplLmgxLGgyOmUuaDIsaDM6ZS5oMyxoNDplLmg0LGg1OmUuaDUsaDY6ZS5oNixoNzplLmg3fTt1KGgscixhKTt2YXIgcD1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7cmV0dXJuIHAucHV0SW50MzIoaC5oMCkscC5wdXRJbnQzMihoLmgxKSxwLnB1dEludDMyKGguaDIpLHAucHV0SW50MzIoaC5oMykscC5wdXRJbnQzMihoLmg0KSxwLnB1dEludDMyKGguaDUpLHAucHV0SW50MzIoaC5oNikscC5wdXRJbnQzMihoLmg3KSxwfSxpfTt2YXIgbz1udWxsLGE9ITEscz1udWxsO2Z1bmN0aW9uIHUoZSx0LHIpe2Zvcih2YXIgbixpLG8sYSx1LGMsZixsLGgscCxkLHksZyx2PXIubGVuZ3RoKCk7dj49NjQ7KXtmb3IodT0wO3U8MTY7Kyt1KXRbdV09ci5nZXRJbnQzMigpO2Zvcig7dTw2NDsrK3Upbj0oKG49dFt1LTJdKT4+PjE3fG48PDE1KV4obj4+PjE5fG48PDEzKV5uPj4+MTAsaT0oKGk9dFt1LTE1XSk+Pj43fGk8PDI1KV4oaT4+PjE4fGk8PDE0KV5pPj4+Myx0W3VdPW4rdFt1LTddK2krdFt1LTE2XXwwO2ZvcihjPWUuaDAsZj1lLmgxLGw9ZS5oMixoPWUuaDMscD1lLmg0LGQ9ZS5oNSx5PWUuaDYsZz1lLmg3LHU9MDt1PDY0OysrdSlvPShjPj4+MnxjPDwzMCleKGM+Pj4xM3xjPDwxOSleKGM+Pj4yMnxjPDwxMCksYT1jJmZ8bCYoY15mKSxuPWcrKChwPj4+NnxwPDwyNileKHA+Pj4xMXxwPDwyMSleKHA+Pj4yNXxwPDw3KSkrKHlecCYoZF55KSkrc1t1XSt0W3VdLGc9eSx5PWQsZD1wLHA9aCtuPj4+MCxoPWwsbD1mLGY9YyxjPW4rKGk9bythKT4+PjA7ZS5oMD1lLmgwK2N8MCxlLmgxPWUuaDErZnwwLGUuaDI9ZS5oMitsfDAsZS5oMz1lLmgzK2h8MCxlLmg0PWUuaDQrcHwwLGUuaDU9ZS5oNStkfDAsZS5oNj1lLmg2K3l8MCxlLmg3PWUuaDcrZ3wwLHYtPTY0fX19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIG49cig2KTtyKDEwKTt2YXIgaT1udWxsOyFuLnV0aWwuaXNOb2RlanN8fG4ub3B0aW9ucy51c2VQdXJlSmF2YVNjcmlwdHx8dC52ZXJzaW9uc1sibm9kZS13ZWJraXQiXXx8KGk9cigyMjQpKSwoZS5leHBvcnRzPW4ucHJuZz1uLnBybmd8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXtwbHVnaW46ZSxrZXk6bnVsbCxzZWVkOm51bGwsdGltZTpudWxsLHJlc2VlZHM6MCxnZW5lcmF0ZWQ6MCxrZXlCeXRlczoiIn0scj1lLm1kLG89bmV3IEFycmF5KDMyKSxhPTA7YTwzMjsrK2Epb1thXT1yLmNyZWF0ZSgpO2Z1bmN0aW9uIHMoKXtpZih0LnBvb2xzWzBdLm1lc3NhZ2VMZW5ndGg+PTMyKXJldHVybiB1KCk7dmFyIGU9MzItdC5wb29sc1swXS5tZXNzYWdlTGVuZ3RoPDw1O3QuY29sbGVjdCh0LnNlZWRGaWxlU3luYyhlKSksdSgpfWZ1bmN0aW9uIHUoKXt0LnJlc2VlZHM9NDI5NDk2NzI5NT09PXQucmVzZWVkcz8wOnQucmVzZWVkcysxO3ZhciBlPXQucGx1Z2luLm1kLmNyZWF0ZSgpO2UudXBkYXRlKHQua2V5Qnl0ZXMpO2Zvcih2YXIgcj0xLG49MDtuPDMyOysrbil0LnJlc2VlZHMlcj09PTAmJihlLnVwZGF0ZSh0LnBvb2xzW25dLmRpZ2VzdCgpLmdldEJ5dGVzKCkpLHQucG9vbHNbbl0uc3RhcnQoKSkscjw8PTE7dC5rZXlCeXRlcz1lLmRpZ2VzdCgpLmdldEJ5dGVzKCksZS5zdGFydCgpLGUudXBkYXRlKHQua2V5Qnl0ZXMpO3ZhciBpPWUuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTt0LmtleT10LnBsdWdpbi5mb3JtYXRLZXkodC5rZXlCeXRlcyksdC5zZWVkPXQucGx1Z2luLmZvcm1hdFNlZWQoaSksdC5nZW5lcmF0ZWQ9MH1mdW5jdGlvbiBjKGUpe3ZhciB0PW51bGwscj1uLnV0aWwuZ2xvYmFsU2NvcGUsaT1yLmNyeXB0b3x8ci5tc0NyeXB0bztpJiZpLmdldFJhbmRvbVZhbHVlcyYmKHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UmFuZG9tVmFsdWVzKGUpfSk7dmFyIG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2lmKHQpZm9yKDtvLmxlbmd0aCgpPGU7KXt2YXIgYT1NYXRoLm1heCgxLE1hdGgubWluKGUtby5sZW5ndGgoKSw2NTUzNikvNCkscz1uZXcgVWludDMyQXJyYXkoTWF0aC5mbG9vcihhKSk7dHJ5e3Qocyk7Zm9yKHZhciB1PTA7dTxzLmxlbmd0aDsrK3Upby5wdXRJbnQzMihzW3VdKX1jYXRjaChwKXtpZighKCJ1bmRlZmluZWQiIT09dHlwZW9mIFF1b3RhRXhjZWVkZWRFcnJvciYmcCBpbnN0YW5jZW9mIFF1b3RhRXhjZWVkZWRFcnJvcikpdGhyb3cgcH19aWYoby5sZW5ndGgoKTxlKWZvcih2YXIgYyxmLGwsaD1NYXRoLmZsb29yKDY1NTM2Kk1hdGgucmFuZG9tKCkpO28ubGVuZ3RoKCk8ZTspe2Y9MTY4MDcqKDY1NTM1JmgpLGYrPSgzMjc2NyYoYz0xNjgwNyooaD4+MTYpKSk8PDE2LGg9NDI5NDk2NzI5NSYoZj0oMjE0NzQ4MzY0NyYoZis9Yz4+MTUpKSsoZj4+MzEpKTtmb3IodT0wO3U8MzsrK3UpbD1oPj4+KHU8PDMpLGxePU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpLG8ucHV0Qnl0ZShTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZsKSl9cmV0dXJuIG8uZ2V0Qnl0ZXMoZSl9cmV0dXJuIHQucG9vbHM9byx0LnBvb2w9MCx0LmdlbmVyYXRlPWZ1bmN0aW9uKGUscil7aWYoIXIpcmV0dXJuIHQuZ2VuZXJhdGVTeW5jKGUpO3ZhciBpPXQucGx1Z2luLmNpcGhlcixvPXQucGx1Z2luLmluY3JlbWVudCxhPXQucGx1Z2luLmZvcm1hdEtleSxzPXQucGx1Z2luLmZvcm1hdFNlZWQsYz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7dC5rZXk9bnVsbCxmdW5jdGlvbiBmKGwpe2lmKGwpcmV0dXJuIHIobCk7aWYoYy5sZW5ndGgoKT49ZSlyZXR1cm4gcihudWxsLGMuZ2V0Qnl0ZXMoZSkpO3QuZ2VuZXJhdGVkPjEwNDg1NzUmJih0LmtleT1udWxsKTtpZihudWxsPT09dC5rZXkpcmV0dXJuIG4udXRpbC5uZXh0VGljayhmdW5jdGlvbigpeyFmdW5jdGlvbihlKXtpZih0LnBvb2xzWzBdLm1lc3NhZ2VMZW5ndGg+PTMyKXJldHVybiB1KCksZSgpO3ZhciByPTMyLXQucG9vbHNbMF0ubWVzc2FnZUxlbmd0aDw8NTt0LnNlZWRGaWxlKHIsZnVuY3Rpb24ocixuKXtpZihyKXJldHVybiBlKHIpO3QuY29sbGVjdChuKSx1KCksZSgpfSl9KGYpfSk7dmFyIGg9aSh0LmtleSx0LnNlZWQpO3QuZ2VuZXJhdGVkKz1oLmxlbmd0aDtjLnB1dEJ5dGVzKGgpO3Qua2V5PWEoaSh0LmtleSxvKHQuc2VlZCkpKTt0LnNlZWQ9cyhpKHQua2V5LHQuc2VlZCkpO24udXRpbC5zZXRJbW1lZGlhdGUoZil9KCl9LHQuZ2VuZXJhdGVTeW5jPWZ1bmN0aW9uKGUpe3ZhciByPXQucGx1Z2luLmNpcGhlcixpPXQucGx1Z2luLmluY3JlbWVudCxvPXQucGx1Z2luLmZvcm1hdEtleSxhPXQucGx1Z2luLmZvcm1hdFNlZWQ7dC5rZXk9bnVsbDtmb3IodmFyIHU9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3UubGVuZ3RoKCk8ZTspe3QuZ2VuZXJhdGVkPjEwNDg1NzUmJih0LmtleT1udWxsKSxudWxsPT09dC5rZXkmJnMoKTt2YXIgYz1yKHQua2V5LHQuc2VlZCk7dC5nZW5lcmF0ZWQrPWMubGVuZ3RoLHUucHV0Qnl0ZXMoYyksdC5rZXk9byhyKHQua2V5LGkodC5zZWVkKSkpLHQuc2VlZD1hKHIodC5rZXksdC5zZWVkKSl9cmV0dXJuIHUuZ2V0Qnl0ZXMoZSl9LGk/KHQuc2VlZEZpbGU9ZnVuY3Rpb24oZSx0KXtpLnJhbmRvbUJ5dGVzKGUsZnVuY3Rpb24oZSxyKXtpZihlKXJldHVybiB0KGUpO3QobnVsbCxyLnRvU3RyaW5nKCkpfSl9LHQuc2VlZEZpbGVTeW5jPWZ1bmN0aW9uKGUpe3JldHVybiBpLnJhbmRvbUJ5dGVzKGUpLnRvU3RyaW5nKCl9KToodC5zZWVkRmlsZT1mdW5jdGlvbihlLHQpe3RyeXt0KG51bGwsYyhlKSl9Y2F0Y2gocil7dChyKX19LHQuc2VlZEZpbGVTeW5jPWMpLHQuY29sbGVjdD1mdW5jdGlvbihlKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj0wO248cjsrK24pdC5wb29sc1t0LnBvb2xdLnVwZGF0ZShlLnN1YnN0cihuLDEpKSx0LnBvb2w9MzE9PT10LnBvb2w/MDp0LnBvb2wrMX0sdC5jb2xsZWN0SW50PWZ1bmN0aW9uKGUscil7Zm9yKHZhciBuPSIiLGk9MDtpPHI7aSs9OCluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU+PmkmMjU1KTt0LmNvbGxlY3Qobil9LHQucmVnaXN0ZXJXb3JrZXI9ZnVuY3Rpb24oZSl7aWYoZT09PXNlbGYpdC5zZWVkRmlsZT1mdW5jdGlvbihlLHQpe3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShyKXt2YXIgbj1yLmRhdGE7bi5mb3JnZSYmbi5mb3JnZS5wcm5nJiYoc2VsZi5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSx0KG4uZm9yZ2UucHJuZy5lcnIsbi5mb3JnZS5wcm5nLmJ5dGVzKSl9KSxzZWxmLnBvc3RNZXNzYWdlKHtmb3JnZTp7cHJuZzp7bmVlZGVkOmV9fX0pfTtlbHNle2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24ocil7dmFyIG49ci5kYXRhO24uZm9yZ2UmJm4uZm9yZ2UucHJuZyYmdC5zZWVkRmlsZShuLmZvcmdlLnBybmcubmVlZGVkLGZ1bmN0aW9uKHQscil7ZS5wb3N0TWVzc2FnZSh7Zm9yZ2U6e3Bybmc6e2Vycjp0LGJ5dGVzOnJ9fX0pfSl9KX19LHR9fSkuY2FsbCh0aGlzLHIoNDYpKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigxMCk7dmFyIGk9WzIxNywxMjAsMjQ5LDE5NiwyNSwyMjEsMTgxLDIzNyw0MCwyMzMsMjUzLDEyMSw3NCwxNjAsMjE2LDE1NywxOTgsMTI2LDU1LDEzMSw0MywxMTgsODMsMTQyLDk4LDc2LDEwMCwxMzYsNjgsMTM5LDI1MSwxNjIsMjMsMTU0LDg5LDI0NSwxMzUsMTc5LDc5LDE5LDk3LDY5LDEwOSwxNDEsOSwxMjksMTI1LDUwLDE4OSwxNDMsNjQsMjM1LDEzNCwxODMsMTIzLDExLDI0MCwxNDksMzMsMzQsOTIsMTA3LDc4LDEzMCw4NCwyMTQsMTAxLDE0NywyMDYsOTYsMTc4LDI4LDExNSw4NiwxOTIsMjAsMTY3LDE0MCwyNDEsMjIwLDE4LDExNywyMDIsMzEsNTksMTkwLDIyOCwyMDksNjYsNjEsMjEyLDQ4LDE2Myw2MCwxODIsMzgsMTExLDE5MSwxNCwyMTgsNzAsMTA1LDcsODcsMzksMjQyLDI5LDE1NSwxODgsMTQ4LDY3LDMsMjQ4LDE3LDE5OSwyNDYsMTQ0LDIzOSw2MiwyMzEsNiwxOTUsMjEzLDQ3LDIwMCwxMDIsMzAsMjE1LDgsMjMyLDIzNCwyMjIsMTI4LDgyLDIzOCwyNDcsMTMyLDE3MCwxMTQsMTcyLDUzLDc3LDEwNiw0MiwxNTAsMjYsMjEwLDExMyw5MCwyMSw3MywxMTYsNzUsMTU5LDIwOCw5NCw0LDI0LDE2NCwyMzYsMTk0LDIyNCw2NSwxMTAsMTUsODEsMjAzLDIwNCwzNiwxNDUsMTc1LDgwLDE2MSwyNDQsMTEyLDU3LDE1MywxMjQsNTgsMTMzLDM1LDE4NCwxODAsMTIyLDI1MiwyLDU0LDkxLDM3LDg1LDE1MSw0OSw0NSw5MywyNTAsMTUyLDIyNywxMzgsMTQ2LDE3NCw1LDIyMyw0MSwxNiwxMDMsMTA4LDE4NiwyMDEsMjExLDAsMjMwLDIwNywyMjUsMTU4LDE2OCw0NCw5OSwyMiwxLDYzLDg4LDIyNiwxMzcsMTY5LDEzLDU2LDUyLDI3LDE3MSw1MSwyNTUsMTc2LDE4Nyw3MiwxMiw5NSwxODUsMTc3LDIwNSw0NiwxOTcsMjQzLDIxOSw3MSwyMjksMTY1LDE1NiwxMTksMTAsMTY2LDMyLDEwNCwyNTQsMTI3LDE5MywxNzNdLG89WzEsMiwzLDVdO2UuZXhwb3J0cz1uLnJjMj1uLnJjMnx8e30sbi5yYzIuZXhwYW5kS2V5PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PT10eXBlb2YgZSYmKGU9bi51dGlsLmNyZWF0ZUJ1ZmZlcihlKSksdD10fHwxMjg7dmFyIHIsbz1lLGE9ZS5sZW5ndGgoKSxzPXQsdT1NYXRoLmNlaWwocy84KSxjPTI1NT4+KDcmcyk7Zm9yKHI9YTtyPDEyODtyKyspby5wdXRCeXRlKGlbby5hdChyLTEpK28uYXQoci1hKSYyNTVdKTtmb3Ioby5zZXRBdCgxMjgtdSxpW28uYXQoMTI4LXUpJmNdKSxyPTEyNy11O3I+PTA7ci0tKW8uc2V0QXQocixpW28uYXQocisxKV5vLmF0KHIrdSldKTtyZXR1cm4gb307dmFyIGE9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLGEscyx1LGM9ITEsZj1udWxsLGw9bnVsbCxoPW51bGwscD1bXTtmb3IoZT1uLnJjMi5leHBhbmRLZXkoZSx0KSxzPTA7czw2NDtzKyspcC5wdXNoKGUuZ2V0SW50MTZMZSgpKTtyPyhpPWZ1bmN0aW9uKGUpe2ZvcihzPTA7czw0O3MrKyllW3NdKz1wW3VdKyhlWyhzKzMpJTRdJmVbKHMrMiklNF0pKyh+ZVsocyszKSU0XSZlWyhzKzEpJTRdKSxlW3NdPSh0PWVbc10pPDwocj1vW3NdKSY2NTUzNXwoNjU1MzUmdCk+PjE2LXIsdSsrO3ZhciB0LHJ9LGE9ZnVuY3Rpb24oZSl7Zm9yKHM9MDtzPDQ7cysrKWVbc10rPXBbNjMmZVsocyszKSU0XV19KTooaT1mdW5jdGlvbihlKXtmb3Iocz0zO3M+PTA7cy0tKWVbc109KDY1NTM1Jih0PWVbc10pKT4+KHI9b1tzXSl8dDw8MTYtciY2NTUzNSxlW3NdLT1wW3VdKyhlWyhzKzMpJTRdJmVbKHMrMiklNF0pKyh+ZVsocyszKSU0XSZlWyhzKzEpJTRdKSx1LS07dmFyIHQscn0sYT1mdW5jdGlvbihlKXtmb3Iocz0zO3M+PTA7cy0tKWVbc10tPXBbNjMmZVsocyszKSU0XV19KTt2YXIgZD1mdW5jdGlvbihlKXt2YXIgdD1bXTtmb3Iocz0wO3M8NDtzKyspe3ZhciBuPWYuZ2V0SW50MTZMZSgpO251bGwhPT1oJiYocj9uXj1oLmdldEludDE2TGUoKTpoLnB1dEludDE2TGUobikpLHQucHVzaCg2NTUzNSZuKX11PXI/MDo2Mztmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylmb3IodmFyIG89MDtvPGVbaV1bMF07bysrKWVbaV1bMV0odCk7Zm9yKHM9MDtzPDQ7cysrKW51bGwhPT1oJiYocj9oLnB1dEludDE2TGUodFtzXSk6dFtzXV49aC5nZXRJbnQxNkxlKCkpLGwucHV0SW50MTZMZSh0W3NdKX0seT1udWxsO3JldHVybiB5PXtzdGFydDpmdW5jdGlvbihlLHQpe2UmJiJzdHJpbmciPT09dHlwZW9mIGUmJihlPW4udXRpbC5jcmVhdGVCdWZmZXIoZSkpLGM9ITEsZj1uLnV0aWwuY3JlYXRlQnVmZmVyKCksbD10fHxuZXcgbi51dGlsLmNyZWF0ZUJ1ZmZlcixoPWUseS5vdXRwdXQ9bH0sdXBkYXRlOmZ1bmN0aW9uKGUpe2ZvcihjfHxmLnB1dEJ1ZmZlcihlKTtmLmxlbmd0aCgpPj04OylkKFtbNSxpXSxbMSxhXSxbNixpXSxbMSxhXSxbNSxpXV0pfSxmaW5pc2g6ZnVuY3Rpb24oZSl7dmFyIHQ9ITA7aWYocilpZihlKXQ9ZSg4LGYsIXIpO2Vsc2V7dmFyIG49OD09PWYubGVuZ3RoKCk/ODo4LWYubGVuZ3RoKCk7Zi5maWxsV2l0aEJ5dGUobixuKX1pZih0JiYoYz0hMCx5LnVwZGF0ZSgpKSwhciYmKHQ9MD09PWYubGVuZ3RoKCkpKWlmKGUpdD1lKDgsbCwhcik7ZWxzZXt2YXIgaT1sLmxlbmd0aCgpLG89bC5hdChpLTEpO28+aT90PSExOmwudHJ1bmNhdGUobyl9cmV0dXJuIHR9fX07bi5yYzIuc3RhcnRFbmNyeXB0aW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1uLnJjMi5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGUsMTI4KTtyZXR1cm4gaS5zdGFydCh0LHIpLGl9LG4ucmMyLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQsITApfSxuLnJjMi5zdGFydERlY3J5cHRpbmc9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPW4ucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoZSwxMjgpO3JldHVybiBpLnN0YXJ0KHQsciksaX0sbi5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcj1mdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCwhMSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDEwKSxyKDUyKSxyKDEzNSk7dmFyIGk9ZS5leHBvcnRzPW4ucGtjczE9bi5wa2NzMXx8e307ZnVuY3Rpb24gbyhlLHQscil7cnx8KHI9bi5tZC5zaGExLmNyZWF0ZSgpKTtmb3IodmFyIGk9IiIsbz1NYXRoLmNlaWwodC9yLmRpZ2VzdExlbmd0aCksYT0wO2E8bzsrK2Epe3ZhciBzPVN0cmluZy5mcm9tQ2hhckNvZGUoYT4+MjQmMjU1LGE+PjE2JjI1NSxhPj44JjI1NSwyNTUmYSk7ci5zdGFydCgpLHIudXBkYXRlKGUrcyksaSs9ci5kaWdlc3QoKS5nZXRCeXRlcygpfXJldHVybiBpLnN1YnN0cmluZygwLHQpfWkuZW5jb2RlX3JzYV9vYWVwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxhLHMsdTsic3RyaW5nIj09PXR5cGVvZiByPyhpPXIsYT1hcmd1bWVudHNbM118fHZvaWQgMCxzPWFyZ3VtZW50c1s0XXx8dm9pZCAwKTpyJiYoaT1yLmxhYmVsfHx2b2lkIDAsYT1yLnNlZWR8fHZvaWQgMCxzPXIubWR8fHZvaWQgMCxyLm1nZjEmJnIubWdmMS5tZCYmKHU9ci5tZ2YxLm1kKSkscz9zLnN0YXJ0KCk6cz1uLm1kLnNoYTEuY3JlYXRlKCksdXx8KHU9cyk7dmFyIGM9TWF0aC5jZWlsKGUubi5iaXRMZW5ndGgoKS84KSxmPWMtMipzLmRpZ2VzdExlbmd0aC0yO2lmKHQubGVuZ3RoPmYpdGhyb3coZz1uZXcgRXJyb3IoIlJTQUVTLU9BRVAgaW5wdXQgbWVzc2FnZSBsZW5ndGggaXMgdG9vIGxvbmcuIikpLmxlbmd0aD10Lmxlbmd0aCxnLm1heExlbmd0aD1mLGc7aXx8KGk9IiIpLHMudXBkYXRlKGksInJhdyIpO2Zvcih2YXIgbD1zLmRpZ2VzdCgpLGg9IiIscD1mLXQubGVuZ3RoLGQ9MDtkPHA7ZCsrKWgrPSJcMCI7dmFyIHk9bC5nZXRCeXRlcygpK2grIlx4MDEiK3Q7aWYoYSl7aWYoYS5sZW5ndGghPT1zLmRpZ2VzdExlbmd0aCl7dmFyIGc7dGhyb3coZz1uZXcgRXJyb3IoIkludmFsaWQgUlNBRVMtT0FFUCBzZWVkLiBUaGUgc2VlZCBsZW5ndGggbXVzdCBtYXRjaCB0aGUgZGlnZXN0IGxlbmd0aC4iKSkuc2VlZExlbmd0aD1hLmxlbmd0aCxnLmRpZ2VzdExlbmd0aD1zLmRpZ2VzdExlbmd0aCxnfX1lbHNlIGE9bi5yYW5kb20uZ2V0Qnl0ZXMocy5kaWdlc3RMZW5ndGgpO3ZhciB2PW8oYSxjLXMuZGlnZXN0TGVuZ3RoLTEsdSksbT1uLnV0aWwueG9yQnl0ZXMoeSx2LHkubGVuZ3RoKSxiPW8obSxzLmRpZ2VzdExlbmd0aCx1KTtyZXR1cm4iXDAiK24udXRpbC54b3JCeXRlcyhhLGIsYS5sZW5ndGgpK219LGkuZGVjb2RlX3JzYV9vYWVwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxhLHM7InN0cmluZyI9PT10eXBlb2Ygcj8oaT1yLGE9YXJndW1lbnRzWzNdfHx2b2lkIDApOnImJihpPXIubGFiZWx8fHZvaWQgMCxhPXIubWR8fHZvaWQgMCxyLm1nZjEmJnIubWdmMS5tZCYmKHM9ci5tZ2YxLm1kKSk7dmFyIHU9TWF0aC5jZWlsKGUubi5iaXRMZW5ndGgoKS84KTtpZih0Lmxlbmd0aCE9PXUpdGhyb3codj1uZXcgRXJyb3IoIlJTQUVTLU9BRVAgZW5jb2RlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLiIpKS5sZW5ndGg9dC5sZW5ndGgsdi5leHBlY3RlZExlbmd0aD11LHY7aWYodm9pZCAwPT09YT9hPW4ubWQuc2hhMS5jcmVhdGUoKTphLnN0YXJ0KCksc3x8KHM9YSksdTwyKmEuZGlnZXN0TGVuZ3RoKzIpdGhyb3cgbmV3IEVycm9yKCJSU0FFUy1PQUVQIGtleSBpcyB0b28gc2hvcnQgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLiIpO2l8fChpPSIiKSxhLnVwZGF0ZShpLCJyYXciKTtmb3IodmFyIGM9YS5kaWdlc3QoKS5nZXRCeXRlcygpLGY9dC5jaGFyQXQoMCksbD10LnN1YnN0cmluZygxLGEuZGlnZXN0TGVuZ3RoKzEpLGg9dC5zdWJzdHJpbmcoMSthLmRpZ2VzdExlbmd0aCkscD1vKGgsYS5kaWdlc3RMZW5ndGgscyksZD1vKG4udXRpbC54b3JCeXRlcyhsLHAsbC5sZW5ndGgpLHUtYS5kaWdlc3RMZW5ndGgtMSxzKSx5PW4udXRpbC54b3JCeXRlcyhoLGQsaC5sZW5ndGgpLGc9eS5zdWJzdHJpbmcoMCxhLmRpZ2VzdExlbmd0aCksdj0iXDAiIT09ZixtPTA7bTxhLmRpZ2VzdExlbmd0aDsrK20pdnw9Yy5jaGFyQXQobSkhPT1nLmNoYXJBdChtKTtmb3IodmFyIGI9MSxfPWEuZGlnZXN0TGVuZ3RoLFM9YS5kaWdlc3RMZW5ndGg7Uzx5Lmxlbmd0aDtTKyspe3ZhciBFPXkuY2hhckNvZGVBdChTKTt2fD1FJihiPzY1NTM0OjApLF8rPWImPTEmRV4xfWlmKHZ8fDEhPT15LmNoYXJDb2RlQXQoXykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFJTQUVTLU9BRVAgcGFkZGluZy4iKTtyZXR1cm4geS5zdWJzdHJpbmcoXysxKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoMTApLHIoMTY0KSxyKDUyKSxmdW5jdGlvbigpe2lmKG4ucHJpbWUpZS5leHBvcnRzPW4ucHJpbWU7ZWxzZXt2YXIgdD1lLmV4cG9ydHM9bi5wcmltZT1uLnByaW1lfHx7fSxyPW4uanNibi5CaWdJbnRlZ2VyLGk9WzYsNCwyLDQsMiw0LDYsMl0sbz1uZXcgcihudWxsKTtvLmZyb21JbnQoMzApO3ZhciBhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8dH07dC5nZW5lcmF0ZVByb2JhYmxlUHJpbWU9ZnVuY3Rpb24oZSx0LGkpeyJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKGk9dCx0PXt9KTt2YXIgbz0odD10fHx7fSkuYWxnb3JpdGhtfHwiUFJJTUVJTkMiOyJzdHJpbmciPT09dHlwZW9mIG8mJihvPXtuYW1lOm99KSxvLm9wdGlvbnM9by5vcHRpb25zfHx7fTt2YXIgYT10LnBybmd8fG4ucmFuZG9tLGM9e25leHRCeXRlczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YS5nZXRCeXRlc1N5bmMoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXQuY2hhckNvZGVBdChyKX19O2lmKCJQUklNRUlOQyI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKGUsdCxpLG8pe2lmKCJ3b3JrZXJzImluIGkpcmV0dXJuIGZ1bmN0aW9uKGUsdCxpLG8pe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFdvcmtlcilyZXR1cm4gcyhlLHQsaSxvKTt2YXIgYT11KGUsdCksYz1pLndvcmtlcnMsZj1pLndvcmtMb2FkfHwxMDAsbD0zMCpmLzgsaD1pLndvcmtlclNjcmlwdHx8ImZvcmdlL3ByaW1lLndvcmtlci5qcyI7aWYoLTE9PT1jKXJldHVybiBuLnV0aWwuZXN0aW1hdGVDb3JlcyhmdW5jdGlvbihlLHQpe2UmJih0PTIpLGM9dC0xLHAoKX0pO2Z1bmN0aW9uIHAoKXtjPU1hdGgubWF4KDEsYyk7Zm9yKHZhciBuPVtdLGk9MDtpPGM7KytpKW5baV09bmV3IFdvcmtlcihoKTtmb3IodmFyIGk9MDtpPGM7KytpKW5baV0uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscCk7dmFyIHM9ITE7ZnVuY3Rpb24gcChpKXtpZighcyl7MDt2YXIgYz1pLmRhdGE7aWYoYy5mb3VuZCl7Zm9yKHZhciBoPTA7aDxuLmxlbmd0aDsrK2gpbltoXS50ZXJtaW5hdGUoKTtyZXR1cm4gcz0hMCxvKG51bGwsbmV3IHIoYy5wcmltZSwxNikpfWEuYml0TGVuZ3RoKCk+ZSYmKGE9dShlLHQpKTt2YXIgcD1hLnRvU3RyaW5nKDE2KTtpLnRhcmdldC5wb3N0TWVzc2FnZSh7aGV4OnAsd29ya0xvYWQ6Zn0pLGEuZEFkZE9mZnNldChsLDApfX19cCgpfShlLHQsaSxvKTtyZXR1cm4gcyhlLHQsaSxvKX0oZSxjLG8ub3B0aW9ucyxpKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcHJpbWUgZ2VuZXJhdGlvbiBhbGdvcml0aG06ICIrby5uYW1lKX19ZnVuY3Rpb24gcyhlLHQscixvKXt2YXIgYT11KGUsdCkscz1mdW5jdGlvbihlKXtyZXR1cm4gZTw9MTAwPzI3OmU8PTE1MD8xODplPD0yMDA/MTU6ZTw9MjUwPzEyOmU8PTMwMD85OmU8PTM1MD84OmU8PTQwMD83OmU8PTUwMD82OmU8PTYwMD81OmU8PTgwMD80OmU8PTEyNTA/MzoyfShhLmJpdExlbmd0aCgpKTsibWlsbGVyUmFiaW5UZXN0cyJpbiByJiYocz1yLm1pbGxlclJhYmluVGVzdHMpO3ZhciBjPTEwOyJtYXhCbG9ja1RpbWUiaW4gciYmKGM9ci5tYXhCbG9ja1RpbWUpLGZ1bmN0aW9uIGUodCxyLG8sYSxzLGMsZil7dmFyIGw9K25ldyBEYXRlO2Rve2lmKHQuYml0TGVuZ3RoKCk+ciYmKHQ9dShyLG8pKSx0LmlzUHJvYmFibGVQcmltZShzKSlyZXR1cm4gZihudWxsLHQpO3QuZEFkZE9mZnNldChpW2ErKyU4XSwwKX13aGlsZShjPDB8fCtuZXcgRGF0ZS1sPGMpO24udXRpbC5zZXRJbW1lZGlhdGUoZnVuY3Rpb24oKXtlKHQscixvLGEscyxjLGYpfSl9KGEsZSx0LDAscyxjLG8pfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1uZXcgcihlLHQpLGk9ZS0xO3JldHVybiBuLnRlc3RCaXQoaSl8fG4uYml0d2lzZVRvKHIuT05FLnNoaWZ0TGVmdChpKSxhLG4pLG4uZEFkZE9mZnNldCgzMS1uLm1vZChvKS5ieXRlVmFsdWUoKSwwKSxufX0oKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cig2NSkscigxMzQpLHIoOTApLHIoMzU0KSxyKDM0Nykscig1MikscigxNjMpLHIoMTM1KSxyKDEwKSxyKDIyNSk7dmFyIGk9bi5hc24xLG89bi5wa2ksYT1lLmV4cG9ydHM9bi5wa2NzMTI9bi5wa2NzMTJ8fHt9LHM9e25hbWU6IkNvbnRlbnRJbmZvIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IkNvbnRlbnRJbmZvLmNvbnRlbnRUeXBlIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiY29udGVudFR5cGUifSx7bmFtZToiQ29udGVudEluZm8uY29udGVudCIsdGFnQ2xhc3M6aS5DbGFzcy5DT05URVhUX1NQRUNJRklDLGNvbnN0cnVjdGVkOiEwLGNhcHR1cmVBc24xOiJjb250ZW50In1dfSx1PXtuYW1lOiJQRlgiLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUEZYLnZlcnNpb24iLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToidmVyc2lvbiJ9LHMse25hbWU6IlBGWC5tYWNEYXRhIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCxvcHRpb25hbDohMCxjYXB0dXJlQXNuMToibWFjIix2YWx1ZTpbe25hbWU6IlBGWC5tYWNEYXRhLm1hYyIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQRlgubWFjRGF0YS5tYWMuZGlnZXN0QWxnb3JpdGhtIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IlBGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0uYWxnb3JpdGhtIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToibWFjQWxnb3JpdGhtIn0se25hbWU6IlBGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0ucGFyYW1ldGVycyIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsY2FwdHVyZUFzbjE6Im1hY0FsZ29yaXRobVBhcmFtZXRlcnMifV19LHtuYW1lOiJQRlgubWFjRGF0YS5tYWMuZGlnZXN0Iix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJtYWNEaWdlc3QifV19LHtuYW1lOiJQRlgubWFjRGF0YS5tYWNTYWx0Iix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJtYWNTYWx0In0se25hbWU6IlBGWC5tYWNEYXRhLml0ZXJhdGlvbnMiLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsb3B0aW9uYWw6ITAsY2FwdHVyZToibWFjSXRlcmF0aW9ucyJ9XX1dfSxjPXtuYW1lOiJTYWZlQmFnIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IlNhZmVCYWcuYmFnSWQiLHRhZ0NsYXNzOmkuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6aS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJiYWdJZCJ9LHtuYW1lOiJTYWZlQmFnLmJhZ1ZhbHVlIix0YWdDbGFzczppLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZUFzbjE6ImJhZ1ZhbHVlIn0se25hbWU6IlNhZmVCYWcuYmFnQXR0cmlidXRlcyIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLlR5cGUuU0VULGNvbnN0cnVjdGVkOiEwLG9wdGlvbmFsOiEwLGNhcHR1cmU6ImJhZ0F0dHJpYnV0ZXMifV19LGY9e25hbWU6IkF0dHJpYnV0ZSIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJBdHRyaWJ1dGUuYXR0cklkIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToib2lkIn0se25hbWU6IkF0dHJpYnV0ZS5hdHRyVmFsdWVzIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVQsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZToidmFsdWVzIn1dfSxsPXtuYW1lOiJDZXJ0QmFnIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IkNlcnRCYWcuY2VydElkIix0YWdDbGFzczppLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmkuVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiY2VydElkIn0se25hbWU6IkNlcnRCYWcuY2VydFZhbHVlIix0YWdDbGFzczppLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJDZXJ0QmFnLmNlcnRWYWx1ZVswXSIsdGFnQ2xhc3M6aS5DbGFzcy5VTklWRVJTQUwsdHlwZTppLkNsYXNzLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6ImNlcnQifV19XX07ZnVuY3Rpb24gaChlLHQscixuKXtmb3IodmFyIGk9W10sbz0wO288ZS5sZW5ndGg7bysrKWZvcih2YXIgYT0wO2E8ZVtvXS5zYWZlQmFncy5sZW5ndGg7YSsrKXt2YXIgcz1lW29dLnNhZmVCYWdzW2FdO3ZvaWQgMCE9PW4mJnMudHlwZSE9PW58fChudWxsIT09dD92b2lkIDAhPT1zLmF0dHJpYnV0ZXNbdF0mJnMuYXR0cmlidXRlc1t0XS5pbmRleE9mKHIpPj0wJiZpLnB1c2gocyk6aS5wdXNoKHMpKX1yZXR1cm4gaX1mdW5jdGlvbiBwKGUpe2lmKGUuY29tcG9zZWR8fGUuY29uc3RydWN0ZWQpe2Zvcih2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKCkscj0wO3I8ZS52YWx1ZS5sZW5ndGg7KytyKXQucHV0Qnl0ZXMoZS52YWx1ZVtyXS52YWx1ZSk7ZS5jb21wb3NlZD1lLmNvbnN0cnVjdGVkPSExLGUudmFsdWU9dC5nZXRCeXRlcygpfXJldHVybiBlfWZ1bmN0aW9uIGQoZSx0KXt2YXIgcj17fSxhPVtdO2lmKCFpLnZhbGlkYXRlKGUsbi5wa2NzNy5hc24xLmVuY3J5cHRlZERhdGFWYWxpZGF0b3IscixhKSl0aHJvdyhzPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgRW5jcnlwdGVkQ29udGVudEluZm8uIikpLmVycm9ycz1hLHM7dmFyIHMsdT1pLmRlclRvT2lkKHIuY29udGVudFR5cGUpO2lmKHUhPT1vLm9pZHMuZGF0YSl0aHJvdyhzPW5ldyBFcnJvcigiUEtDUyMxMiBFbmNyeXB0ZWRDb250ZW50SW5mbyBDb250ZW50VHlwZSBpcyBub3QgRGF0YS4iKSkub2lkPXUsczt1PWkuZGVyVG9PaWQoci5lbmNBbGdvcml0aG0pO3ZhciBjPW8ucGJlLmdldENpcGhlcih1LA=="
}

github/deemru/w8io/169f3d6 
3.00 ms