3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_55
{
"2.7c767379.chunk.js_55": "base64:cj11LmNvbmNhdCh5KX1lbHNle3ZhciB2PWMubWF0Y2gobyk7cj1uZXcgdSh2WzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJue3RhZzpjLm1hdGNoKGkpWzFdLGRhdGE6cn19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMjQpLGk9cigyMTgpLmVjLG89cigxNjEpLGE9cigzMzkpO2Z1bmN0aW9uIHMoZSx0KXtpZihlLmNtcG4oMCk8PTApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZyIpO2lmKGUuY21wKHQpPj10KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHUsYyxmKXt2YXIgbD1vKHUpO2lmKCJlYyI9PT1sLnR5cGUpe2lmKCJlY2RzYSIhPT1jJiYiZWNkc2EvcnNhIiE9PWMpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWFbci5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIildO2lmKCFuKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK3IuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpKTt2YXIgbz1uZXcgaShuKSxzPXIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhO3JldHVybiBvLnZlcmlmeSh0LGUscyl9KGUscixsKX1pZigiZHNhIj09PWwudHlwZSl7aWYoImRzYSIhPT1jKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yLmRhdGEucCxhPXIuZGF0YS5xLHU9ci5kYXRhLmcsYz1yLmRhdGEucHViX2tleSxmPW8uc2lnbmF0dXJlLmRlY29kZShlLCJkZXIiKSxsPWYucyxoPWYucjtzKGwsYSkscyhoLGEpO3ZhciBwPW4ubW9udChpKSxkPWwuaW52bShhKTtyZXR1cm4gMD09PXUudG9SZWQocCkucmVkUG93KG5ldyBuKHQpLm11bChkKS5tb2QoYSkpLmZyb21SZWQoKS5tdWwoYy50b1JlZChwKS5yZWRQb3coaC5tdWwoZCkubW9kKGEpKS5mcm9tUmVkKCkpLm1vZChpKS5tb2QoYSkuY21wKGgpfShlLHIsbCl9aWYoInJzYSIhPT1jJiYiZWNkc2EvcnNhIiE9PWMpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyPXQuY29uY2F0KFtmLHJdKTtmb3IodmFyIGg9bC5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxwPVsxXSxkPTA7ci5sZW5ndGgrcC5sZW5ndGgrMjxoOylwLnB1c2goMjU1KSxkKys7cC5wdXNoKDApO2Zvcih2YXIgeT0tMTsrK3k8ci5sZW5ndGg7KXAucHVzaChyW3ldKTtwPW5ldyB0KHApO3ZhciBnPW4ubW9udChsLm1vZHVsdXMpO2U9KGU9bmV3IG4oZSkudG9SZWQoZykpLnJlZFBvdyhuZXcgbihsLnB1YmxpY0V4cG9uZW50KSksZT1uZXcgdChlLmZyb21SZWQoKS50b0FycmF5KCkpO3ZhciB2PWQ8OD8xOjA7Zm9yKGg9TWF0aC5taW4oZS5sZW5ndGgscC5sZW5ndGgpLGUubGVuZ3RoIT09cC5sZW5ndGgmJih2PTEpLHk9LTE7Kyt5PGg7KXZ8PWVbeV1ecFt5XTtyZXR1cm4gMD09PXZ9fSkuY2FsbCh0aGlzLHIoMTgpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIG49cigyMTgpLGk9cigyNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYShlKX07dmFyIG89e3NlY3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gYShlKXt0aGlzLmN1cnZlVHlwZT1vW2VdLHRoaXMuY3VydmVUeXBlfHwodGhpcy5jdXJ2ZVR5cGU9e25hbWU6ZX0pLHRoaXMuY3VydmU9bmV3IG4uZWModGhpcy5jdXJ2ZVR5cGUubmFtZSksdGhpcy5rZXlzPXZvaWQgMH1mdW5jdGlvbiBzKGUscixuKXtBcnJheS5pc0FycmF5KGUpfHwoZT1lLnRvQXJyYXkoKSk7dmFyIGk9bmV3IHQoZSk7aWYobiYmaS5sZW5ndGg8bil7dmFyIG89bmV3IHQobi1pLmxlbmd0aCk7by5maWxsKDApLGk9dC5jb25jYXQoW28saV0pfXJldHVybiByP2kudG9TdHJpbmcocik6aX1vLnAyMjQ9by5zZWNwMjI0cjEsby5wMjU2PW8uc2VjcDI1NnIxPW8ucHJpbWUyNTZ2MSxvLnAxOTI9by5zZWNwMTkycjE9by5wcmltZTE5MnYxLG8ucDM4ND1vLnNlY3AzODRyMSxvLnA1MjE9by5zZWNwNTIxcjEsYS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShlLHQpfSxhLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gcj1yfHwidXRmOCIsdC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSkscyh0aGlzLmN1cnZlLmtleUZyb21QdWJsaWMoZSkuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxuLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSxhLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmtleXMuZ2V0UHVibGljKCJjb21wcmVzc2VkIj09PXQsITApO3JldHVybiJoeWJyaWQiPT09dCYmKHJbci5sZW5ndGgtMV0lMj9yWzBdPTc6clswXT02KSxzKHIsZSl9LGEucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIHModGhpcy5rZXlzLmdldFByaXZhdGUoKSxlKX0sYS5wcm90b3R5cGUuc2V0UHVibGljS2V5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHI9cnx8InV0ZjgiLHQuaXNCdWZmZXIoZSl8fChlPW5ldyB0KGUscikpLHRoaXMua2V5cy5faW1wb3J0UHVibGljKGUpLHRoaXN9LGEucHJvdG90eXBlLnNldFByaXZhdGVLZXk9ZnVuY3Rpb24oZSxyKXtyPXJ8fCJ1dGY4Iix0LmlzQnVmZmVyKGUpfHwoZT1uZXcgdChlLHIpKTt2YXIgbj1uZXcgaShlKTtyZXR1cm4gbj1uLnRvU3RyaW5nKDE2KSx0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKG4pLHRoaXN9fSkuY2FsbCh0aGlzLHIoMTgpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXt0LnB1YmxpY0VuY3J5cHQ9cig2MjUpLHQucHJpdmF0ZURlY3J5cHQ9cig2MjYpLHQucHJpdmF0ZUVuY3J5cHQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5wdWJsaWNFbmNyeXB0KGUsciwhMCl9LHQucHVibGljRGVjcnlwdD1mdW5jdGlvbihlLHIpe3JldHVybiB0LnByaXZhdGVEZWNyeXB0KGUsciwhMCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNjEpLGk9cigxMDQpLG89cigxMjcpLGE9cigzNDApLHM9cigzNDEpLHU9cigyNCksYz1yKDM0MiksZj1yKDIxNyksbD1yKDgpLkJ1ZmZlcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBoO2g9ZS5wYWRkaW5nP2UucGFkZGluZzpyPzE6NDt2YXIgcCxkPW4oZSk7aWYoND09PWgpcD1mdW5jdGlvbihlLHQpe3ZhciByPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCksbj10Lmxlbmd0aCxjPW8oInNoYTEiKS51cGRhdGUobC5hbGxvYygwKSkuZGlnZXN0KCksZj1jLmxlbmd0aCxoPTIqZjtpZihuPnItaC0yKXRocm93IG5ldyBFcnJvcigibWVzc2FnZSB0b28gbG9uZyIpO3ZhciBwPWwuYWxsb2Moci1uLWgtMiksZD1yLWYtMSx5PWkoZiksZz1zKGwuY29uY2F0KFtjLHAsbC5hbGxvYygxLDEpLHRdLGQpLGEoeSxkKSksdj1zKHksYShnLGYpKTtyZXR1cm4gbmV3IHUobC5jb25jYXQoW2wuYWxsb2MoMSksdixnXSxyKSl9KGQsdCk7ZWxzZSBpZigxPT09aClwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixvPXQubGVuZ3RoLGE9ZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihvPmEtMTEpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7bj1yP2wuYWxsb2MoYS1vLTMsMjU1KTpmdW5jdGlvbihlKXt2YXIgdCxyPWwuYWxsb2NVbnNhZmUoZSksbj0wLG89aSgyKmUpLGE9MDtmb3IoO248ZTspYT09PW8ubGVuZ3RoJiYobz1pKDIqZSksYT0wKSwodD1vW2ErK10pJiYocltuKytdPXQpO3JldHVybiByfShhLW8tMyk7cmV0dXJuIG5ldyB1KGwuY29uY2F0KFtsLmZyb20oWzAscj8xOjJdKSxuLGwuYWxsb2MoMSksdF0sYSkpfShkLHQscik7ZWxzZXtpZigzIT09aCl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpO2lmKChwPW5ldyB1KHQpKS5jbXAoZC5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMiKX1yZXR1cm4gcj9mKHAsZCk6YyhwLGQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYxKSxpPXIoMzQwKSxvPXIoMzQxKSxhPXIoMjQpLHM9cigyMTcpLHU9cigxMjcpLGM9cigzNDIpLGY9cig4KS5CdWZmZXI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbDtsPWUucGFkZGluZz9lLnBhZGRpbmc6cj8xOjQ7dmFyIGgscD1uKGUpLGQ9cC5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZih0Lmxlbmd0aD5kfHxuZXcgYSh0KS5jbXAocC5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtoPXI/YyhuZXcgYSh0KSxwKTpzKHQscCk7dmFyIHk9Zi5hbGxvYyhkLWgubGVuZ3RoKTtpZihoPWYuY29uY2F0KFt5LGhdLGQpLDQ9PT1sKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciByPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCksbj11KCJzaGExIikudXBkYXRlKGYuYWxsb2MoMCkpLmRpZ2VzdCgpLGE9bi5sZW5ndGg7aWYoMCE9PXRbMF0pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmFyIHM9dC5zbGljZSgxLGErMSksYz10LnNsaWNlKGErMSksbD1vKHMsaShjLGEpKSxoPW8oYyxpKGwsci1hLTEpKTtpZihmdW5jdGlvbihlLHQpe2U9Zi5mcm9tKGUpLHQ9Zi5mcm9tKHQpO3ZhciByPTAsbj1lLmxlbmd0aDtlLmxlbmd0aCE9PXQubGVuZ3RoJiYocisrLG49TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpKTt2YXIgaT0tMTtmb3IoOysraTxuOylyKz1lW2ldXnRbaV07cmV0dXJuIHJ9KG4saC5zbGljZSgwLGEpKSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTt2YXIgcD1hO2Zvcig7MD09PWhbcF07KXArKztpZigxIT09aFtwKytdKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiBoLnNsaWNlKHApfShwLGgpO2lmKDE9PT1sKXJldHVybiBmdW5jdGlvbihlLHQscil7dmFyIG49dC5zbGljZSgwLDIpLGk9MixvPTA7Zm9yKDswIT09dFtpKytdOylpZihpPj10Lmxlbmd0aCl7bysrO2JyZWFrfXZhciBhPXQuc2xpY2UoMixpLTEpOygiMDAwMiIhPT1uLnRvU3RyaW5nKCJoZXgiKSYmIXJ8fCIwMDAxIiE9PW4udG9TdHJpbmcoImhleCIpJiZyKSYmbysrO2EubGVuZ3RoPDgmJm8rKztpZihvKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiB0LnNsaWNlKGkpfSgwLGgscik7aWYoMz09PWwpcmV0dXJuIGg7dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcigic2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBvPXIoOCksYT1yKDEwNCkscz1vLkJ1ZmZlcix1PW8ua01heExlbmd0aCxjPWUuY3J5cHRvfHxlLm1zQ3J5cHRvLGY9TWF0aC5wb3coMiwzMiktMTtmdW5jdGlvbiBsKGUsdCl7aWYoIm51bWJlciIhPT10eXBlb2YgZXx8ZSE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPmZ8fGU8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKGU+dXx8ZT50KXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gaChlLHQscil7aWYoIm51bWJlciIhPT10eXBlb2YgZXx8ZSE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgbnVtYmVyIik7aWYoZT5mfHxlPDApdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgdWludDMyIik7aWYoZSt0PnJ8fGU+dSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnVmZmVyIHRvbyBzbWFsbCIpfWZ1bmN0aW9uIHAoZSx0LHIsaSl7aWYobi5icm93c2VyKXt2YXIgbz1lLmJ1ZmZlcixzPW5ldyBVaW50OEFycmF5KG8sdCxyKTtyZXR1cm4gYy5nZXRSYW5kb21WYWx1ZXMocyksaT92b2lkIG4ubmV4dFRpY2soZnVuY3Rpb24oKXtpKG51bGwsZSl9KTplfWlmKCFpKXJldHVybiBhKHIpLmNvcHkoZSx0KSxlO2EocixmdW5jdGlvbihyLG4pe2lmKHIpcmV0dXJuIGkocik7bi5jb3B5KGUsdCksaShudWxsLGUpfSl9YyYmYy5nZXRSYW5kb21WYWx1ZXN8fCFuLmJyb3dzZXI/KHQucmFuZG9tRmlsbD1mdW5jdGlvbih0LHIsbixpKXtpZighcy5pc0J1ZmZlcih0KSYmISh0IGluc3RhbmNlb2YgZS5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIpaT1yLHI9MCxuPXQubGVuZ3RoO2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBuKWk9bixuPXQubGVuZ3RoLXI7ZWxzZSBpZigiZnVuY3Rpb24iIT09dHlwZW9mIGkpdGhyb3cgbmV3IFR5cGVFcnJvcignImNiIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtyZXR1cm4gbChyLHQubGVuZ3RoKSxoKG4scix0Lmxlbmd0aCkscCh0LHIsbixpKX0sdC5yYW5kb21GaWxsU3luYz1mdW5jdGlvbih0LHIsbil7InVuZGVmaW5lZCI9PT10eXBlb2YgciYmKHI9MCk7aWYoIXMuaXNCdWZmZXIodCkmJiEodCBpbnN0YW5jZW9mIGUuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7bChyLHQubGVuZ3RoKSx2b2lkIDA9PT1uJiYobj10Lmxlbmd0aC1yKTtyZXR1cm4gaChuLHIsdC5sZW5ndGgpLHAodCxyLG4pfSk6KHQucmFuZG9tRmlsbD1pLHQucmFuZG9tRmlsbFN5bmM9aSl9KS5jYWxsKHRoaXMscigzNCkscig0NikpfSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciByPXt9O2UuZXhwb3J0cz1yO3ZhciBuPXt9O3IuZW5jb2RlPWZ1bmN0aW9uKGUsdCxyKXtpZigic3RyaW5nIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJhbHBoYWJldCIgbXVzdCBiZSBhIHN0cmluZy4nKTtpZih2b2lkIDAhPT1yJiYibnVtYmVyIiE9PXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoJyJtYXhsaW5lIiBtdXN0IGJlIGEgbnVtYmVyLicpO3ZhciBuPSIiO2lmKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXt2YXIgaT0wLG89dC5sZW5ndGgsYT10LmNoYXJBdCgwKSxzPVswXTtmb3IoaT0wO2k8ZS5sZW5ndGg7KytpKXtmb3IodmFyIHU9MCxjPWVbaV07dTxzLmxlbmd0aDsrK3UpYys9c1t1XTw8OCxzW3VdPWMlbyxjPWMvb3wwO2Zvcig7Yz4wOylzLnB1c2goYyVvKSxjPWMvb3wwfWZvcihpPTA7MD09PWVbaV0mJmk8ZS5sZW5ndGgtMTsrK2kpbis9YTtmb3IoaT1zLmxlbmd0aC0xO2k+PTA7LS1pKW4rPXRbc1tpXV19ZWxzZSBuPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MCxuPXQubGVuZ3RoLGk9dC5jaGFyQXQoMCksbz1bMF07Zm9yKHI9MDtyPGUubGVuZ3RoKCk7KytyKXtmb3IodmFyIGE9MCxzPWUuYXQocik7YTxvLmxlbmd0aDsrK2Epcys9b1thXTw8OCxvW2FdPXMlbixzPXMvbnwwO2Zvcig7cz4wOylvLnB1c2gocyVuKSxzPXMvbnwwfXZhciB1PSIiO2ZvcihyPTA7MD09PWUuYXQocikmJnI8ZS5sZW5ndGgoKS0xOysrcil1Kz1pO2ZvcihyPW8ubGVuZ3RoLTE7cj49MDstLXIpdSs9dFtvW3JdXTtyZXR1cm4gdX0oZSx0KTtpZihyKXt2YXIgZj1uZXcgUmVnRXhwKCIuezEsIityKyJ9IiwiZyIpO249bi5tYXRjaChmKS5qb2luKCJcclxuIil9cmV0dXJuIG59LHIuZGVjb2RlPWZ1bmN0aW9uKGUscil7aWYoInN0cmluZyIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCciaW5wdXQiIG11c3QgYmUgYSBzdHJpbmcuJyk7aWYoInN0cmluZyIhPT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCciYWxwaGFiZXQiIG11c3QgYmUgYSBzdHJpbmcuJyk7dmFyIGk9bltyXTtpZighaSl7aT1uW3JdPVtdO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7KytvKWlbci5jaGFyQ29kZUF0KG8pXT1vfWU9ZS5yZXBsYWNlKC9ccy9nLCIiKTt2YXIgYT1yLmxlbmd0aCxzPXIuY2hhckF0KDApLHU9WzBdO2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBjPWlbZS5jaGFyQ29kZUF0KG8pXTtpZih2b2lkIDA9PT1jKXJldHVybjtmb3IodmFyIGY9MCxsPWM7Zjx1Lmxlbmd0aDsrK2YpbCs9dVtmXSphLHVbZl09MjU1JmwsbD4+PTg7Zm9yKDtsPjA7KXUucHVzaCgyNTUmbCksbD4+PTh9Zm9yKHZhciBoPTA7ZVtoXT09PXMmJmg8ZS5sZW5ndGgtMTsrK2gpdS5wdXNoKDApO3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIHQ/dC5mcm9tKHUucmV2ZXJzZSgpKTpuZXcgVWludDhBcnJheSh1LnJldmVyc2UoKSl9fSkuY2FsbCh0aGlzLHIoMTgpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoODkpLHIoMzQ1KTt2YXIgaT1lLmV4cG9ydHM9bi50bHM7ZnVuY3Rpb24gbyhlLHQscil7dmFyIG89dC5lbnRpdHk9PT1uLnRscy5Db25uZWN0aW9uRW5kLmNsaWVudDtlLnJlYWQuY2lwaGVyU3RhdGU9e2luaXQ6ITEsY2lwaGVyOm4uY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCJBRVMtQ0JDIixvP3Iua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5OnIua2V5cy5jbGllbnRfd3JpdGVfa2V5KSxpdjpvP3Iua2V5cy5zZXJ2ZXJfd3JpdGVfSVY6ci5rZXlzLmNsaWVudF93cml0ZV9JVn0sZS53cml0ZS5jaXBoZXJTdGF0ZT17aW5pdDohMSxjaXBoZXI6bi5jaXBoZXIuY3JlYXRlQ2lwaGVyKCJBRVMtQ0JDIixvP3Iua2V5cy5jbGllbnRfd3JpdGVfa2V5OnIua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5KSxpdjpvP3Iua2V5cy5jbGllbnRfd3JpdGVfSVY6ci5rZXlzLnNlcnZlcl93cml0ZV9JVn0sZS5yZWFkLmNpcGhlckZ1bmN0aW9uPWMsZS53cml0ZS5jaXBoZXJGdW5jdGlvbj1hLGUucmVhZC5tYWNMZW5ndGg9ZS53cml0ZS5tYWNMZW5ndGg9ci5tYWNfbGVuZ3RoLGUucmVhZC5tYWNGdW5jdGlvbj1lLndyaXRlLm1hY0Z1bmN0aW9uPWkuaG1hY19zaGExfWZ1bmN0aW9uIGEoZSx0KXt2YXIgcixvPSExLGE9dC5tYWNGdW5jdGlvbih0Lm1hY0tleSx0LnNlcXVlbmNlTnVtYmVyLGUpO2UuZnJhZ21lbnQucHV0Qnl0ZXMoYSksdC51cGRhdGVTZXF1ZW5jZU51bWJlcigpLHI9ZS52ZXJzaW9uLm1pbm9yPT09aS5WZXJzaW9ucy5UTFNfMV8wLm1pbm9yP3QuY2lwaGVyU3RhdGUuaW5pdD9udWxsOnQuY2lwaGVyU3RhdGUuaXY6bi5yYW5kb20uZ2V0Qnl0ZXNTeW5jKDE2KSx0LmNpcGhlclN0YXRlLmluaXQ9ITA7dmFyIHU9dC5jaXBoZXJTdGF0ZS5jaXBoZXI7cmV0dXJuIHUuc3RhcnQoe2l2OnJ9KSxlLnZlcnNpb24ubWlub3I+PWkuVmVyc2lvbnMuVExTXzFfMS5taW5vciYmdS5vdXRwdXQucHV0Qnl0ZXMociksdS51cGRhdGUoZS5mcmFnbWVudCksdS5maW5pc2gocykmJihlLmZyYWdtZW50PXUub3V0cHV0LGUubGVuZ3RoPWUuZnJhZ21lbnQubGVuZ3RoKCksbz0hMCksb31mdW5jdGlvbiBzKGUsdCxyKXtpZighcil7dmFyIG49ZS10Lmxlbmd0aCgpJWU7dC5maWxsV2l0aEJ5dGUobi0xLG4pfXJldHVybiEwfWZ1bmN0aW9uIHUoZSx0LHIpe3ZhciBuPSEwO2lmKHIpe2Zvcih2YXIgaT10Lmxlbmd0aCgpLG89dC5sYXN0KCksYT1pLTEtbzthPGktMTsrK2Epbj1uJiZ0LmF0KGEpPT1vO24mJnQudHJ1bmNhdGUobysxKX1yZXR1cm4gbn1mdW5jdGlvbiBjKGUsdCl7dmFyIHIsbz0hMTtyPWUudmVyc2lvbi5taW5vcj09PWkuVmVyc2lvbnMuVExTXzFfMC5taW5vcj90LmNpcGhlclN0YXRlLmluaXQ/bnVsbDp0LmNpcGhlclN0YXRlLml2OmUuZnJhZ21lbnQuZ2V0Qnl0ZXMoMTYpLHQuY2lwaGVyU3RhdGUuaW5pdD0hMDt2YXIgYT10LmNpcGhlclN0YXRlLmNpcGhlcjthLnN0YXJ0KHtpdjpyfSksYS51cGRhdGUoZS5mcmFnbWVudCksbz1hLmZpbmlzaCh1KTt2YXIgcz10Lm1hY0xlbmd0aCxjPW4ucmFuZG9tLmdldEJ5dGVzU3luYyhzKSxmPWEub3V0cHV0Lmxlbmd0aCgpO2Y+PXM/KGUuZnJhZ21lbnQ9YS5vdXRwdXQuZ2V0Qnl0ZXMoZi1zKSxjPWEub3V0cHV0LmdldEJ5dGVzKHMpKTplLmZyYWdtZW50PWEub3V0cHV0LmdldEJ5dGVzKCksZS5mcmFnbWVudD1uLnV0aWwuY3JlYXRlQnVmZmVyKGUuZnJhZ21lbnQpLGUubGVuZ3RoPWUuZnJhZ21lbnQubGVuZ3RoKCk7dmFyIGw9dC5tYWNGdW5jdGlvbih0Lm1hY0tleSx0LnNlcXVlbmNlTnVtYmVyLGUpO3JldHVybiB0LnVwZGF0ZVNlcXVlbmNlTnVtYmVyKCksbz1mdW5jdGlvbihlLHQscil7dmFyIGk9bi5obWFjLmNyZWF0ZSgpO3JldHVybiBpLnN0YXJ0KCJTSEExIixlKSxpLnVwZGF0ZSh0KSx0PWkuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSxpLnN0YXJ0KG51bGwsbnVsbCksaS51cGRhdGUocikscj1pLmRpZ2VzdCgpLmdldEJ5dGVzKCksdD09PXJ9KHQubWFjS2V5LGMsbCkmJm99aS5DaXBoZXJTdWl0ZXMuVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQT17aWQ6WzAsNDddLG5hbWU6IlRMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEiLGluaXRTZWN1cml0eVBhcmFtZXRlcnM6ZnVuY3Rpb24oZSl7ZS5idWxrX2NpcGhlcl9hbGdvcml0aG09aS5CdWxrQ2lwaGVyQWxnb3JpdGhtLmFlcyxlLmNpcGhlcl90eXBlPWkuQ2lwaGVyVHlwZS5ibG9jayxlLmVuY19rZXlfbGVuZ3RoPTE2LGUuYmxvY2tfbGVuZ3RoPTE2LGUuZml4ZWRfaXZfbGVuZ3RoPTE2LGUucmVjb3JkX2l2X2xlbmd0aD0xNixlLm1hY19hbGdvcml0aG09aS5NQUNBbGdvcml0aG0uaG1hY19zaGExLGUubWFjX2xlbmd0aD0yMCxlLm1hY19rZXlfbGVuZ3RoPTIwfSxpbml0Q29ubmVjdGlvblN0YXRlOm99LGkuQ2lwaGVyU3VpdGVzLlRMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEE9e2lkOlswLDUzXSxuYW1lOiJUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIixpbml0U2VjdXJpdHlQYXJhbWV0ZXJzOmZ1bmN0aW9uKGUpe2UuYnVsa19jaXBoZXJfYWxnb3JpdGhtPWkuQnVsa0NpcGhlckFsZ29yaXRobS5hZXMsZS5jaXBoZXJfdHlwZT1pLkNpcGhlclR5cGUuYmxvY2ssZS5lbmNfa2V5X2xlbmd0aD0zMixlLmJsb2NrX2xlbmd0aD0xNixlLmZpeGVkX2l2X2xlbmd0aD0xNixlLnJlY29yZF9pdl9sZW5ndGg9MTYsZS5tYWNfYWxnb3JpdGhtPWkuTUFDQWxnb3JpdGhtLmhtYWNfc2hhMSxlLm1hY19sZW5ndGg9MjAsZS5tYWNfa2V5X2xlbmd0aD0yMH0saW5pdENvbm5lY3Rpb25TdGF0ZTpvfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigzNTUpLGUuZXhwb3J0cz1uLm1nZj1uLm1nZnx8e30sbi5tZ2YubWdmMT1uLm1nZjF9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIG49cig2KTtpZihyKDE2NCkscig1MikscigzNTcpLHIoMTApLCJ1bmRlZmluZWQiPT09dHlwZW9mIGkpdmFyIGk9bi5qc2JuLkJpZ0ludGVnZXI7dmFyIG89bi51dGlsLkJ5dGVCdWZmZXIsYT0idW5kZWZpbmVkIj09PXR5cGVvZiB0P1VpbnQ4QXJyYXk6dDtuLnBraT1uLnBraXx8e30sZS5leHBvcnRzPW4ucGtpLmVkMjU1MTk9bi5lZDI1NTE5PW4uZWQyNTUxOXx8e307dmFyIHM9bi5lZDI1NTE5O2Z1bmN0aW9uIHUoZSl7dmFyIHI9ZS5tZXNzYWdlO2lmKHIgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiByO3ZhciBuPWUuZW5jb2Rpbmc7aWYodm9pZCAwPT09cil7aWYoIWUubWQpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMubWVzc2FnZSIgb3IgIm9wdGlvbnMubWQiIG5vdCBzcGVjaWZpZWQuJyk7cj1lLm1kLmRpZ2VzdCgpLmdldEJ5dGVzKCksbj0iYmluYXJ5In1pZigic3RyaW5nIj09PXR5cGVvZiByJiYhbil0aHJvdyBuZXcgVHlwZUVycm9yKCcib3B0aW9ucy5lbmNvZGluZyIgbXVzdCBiZSAiYmluYXJ5IiBvciAidXRmOCIuJyk7aWYoInN0cmluZyI9PT10eXBlb2Ygcil7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgdClyZXR1cm4gdC5mcm9tKHIsbik7cj1uZXcgbyhyLG4pfWVsc2UgaWYoIShyIGluc3RhbmNlb2YgbykpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMubWVzc2FnZSIgbXVzdCBiZSBhIG5vZGUuanMgQnVmZmVyLCBhIFVpbnQ4QXJyYXksIGEgZm9yZ2UgQnl0ZUJ1ZmZlciwgb3IgYSBzdHJpbmcgd2l0aCAib3B0aW9ucy5lbmNvZGluZyIgc3BlY2lmeWluZyBpdHMgZW5jb2RpbmcuJyk7Zm9yKHZhciBpPW5ldyBhKHIubGVuZ3RoKCkpLHM9MDtzPGkubGVuZ3RoOysrcylpW3NdPXIuYXQocyk7cmV0dXJuIGl9cy5jb25zdGFudHM9e30scy5jb25zdGFudHMuUFVCTElDX0tFWV9CWVRFX0xFTkdUSD0zMixzLmNvbnN0YW50cy5QUklWQVRFX0tFWV9CWVRFX0xFTkdUSD02NCxzLmNvbnN0YW50cy5TRUVEX0JZVEVfTEVOR1RIPTMyLHMuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEg9NjQscy5jb25zdGFudHMuSEFTSF9CWVRFX0xFTkdUSD02NCxzLmdlbmVyYXRlS2V5UGFpcj1mdW5jdGlvbihlKXt2YXIgdD0oZT1lfHx7fSkuc2VlZDtpZih2b2lkIDA9PT10KXQ9bi5yYW5kb20uZ2V0Qnl0ZXNTeW5jKHMuY29uc3RhbnRzLlNFRURfQllURV9MRU5HVEgpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgdCl7aWYodC5sZW5ndGghPT1zLmNvbnN0YW50cy5TRUVEX0JZVEVfTEVOR1RIKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzZWVkIiBtdXN0IGJlICcrcy5jb25zdGFudHMuU0VFRF9CWVRFX0xFTkdUSCsiIGJ5dGVzIGluIGxlbmd0aC4iKX1lbHNlIGlmKCEodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzZWVkIiBtdXN0IGJlIGEgbm9kZS5qcyBCdWZmZXIsIFVpbnQ4QXJyYXksIG9yIGEgYmluYXJ5IHN0cmluZy4nKTt0PXUoe21lc3NhZ2U6dCxlbmNvZGluZzoiYmluYXJ5In0pO2Zvcih2YXIgcj1uZXcgYShzLmNvbnN0YW50cy5QVUJMSUNfS0VZX0JZVEVfTEVOR1RIKSxpPW5ldyBhKHMuY29uc3RhbnRzLlBSSVZBVEVfS0VZX0JZVEVfTEVOR1RIKSxvPTA7bzwzMjsrK28paVtvXT10W29dO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciByLG49W1AoKSxQKCksUCgpLFAoKV0saT12KHQsMzIpO2ZvcihpWzBdJj0yNDgsaVszMV0mPTEyNyxpWzMxXXw9NjQsSShuLGkpLEUoZSxuKSxyPTA7cjwzMjsrK3IpdFtyKzMyXT1lW3JdfShyLGkpLHtwdWJsaWNLZXk6cixwcml2YXRlS2V5Oml9fSxzLnB1YmxpY0tleUZyb21Qcml2YXRlS2V5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoe21lc3NhZ2U6KGU9ZXx8e30pLnByaXZhdGVLZXksZW5jb2Rpbmc6ImJpbmFyeSJ9KTtpZih0Lmxlbmd0aCE9PXMuY29uc3RhbnRzLlBSSVZBVEVfS0VZX0JZVEVfTEVOR1RIKXRocm93IG5ldyBUeXBlRXJyb3IoJyJvcHRpb25zLnByaXZhdGVLZXkiIG11c3QgaGF2ZSBhIGJ5dGUgbGVuZ3RoIG9mICcrcy5jb25zdGFudHMuUFJJVkFURV9LRVlfQllURV9MRU5HVEgpO2Zvcih2YXIgcj1uZXcgYShzLmNvbnN0YW50cy5QVUJMSUNfS0VZX0JZVEVfTEVOR1RIKSxuPTA7bjxyLmxlbmd0aDsrK24pcltuXT10WzMyK25dO3JldHVybiByfSxzLnNpZ249ZnVuY3Rpb24oZSl7dmFyIHQ9dShlPWV8fHt9KSxyPXUoe21lc3NhZ2U6ZS5wcml2YXRlS2V5LGVuY29kaW5nOiJiaW5hcnkifSk7aWYoci5sZW5ndGghPT1zLmNvbnN0YW50cy5QUklWQVRFX0tFWV9CWVRFX0xFTkdUSCl0aHJvdyBuZXcgVHlwZUVycm9yKCcib3B0aW9ucy5wcml2YXRlS2V5IiBtdXN0IGhhdmUgYSBieXRlIGxlbmd0aCBvZiAnK3MuY29uc3RhbnRzLlBSSVZBVEVfS0VZX0JZVEVfTEVOR1RIKTt2YXIgbj1uZXcgYShzLmNvbnN0YW50cy5TSUdOX0JZVEVfTEVOR1RIK3QubGVuZ3RoKTshZnVuY3Rpb24oZSx0LHIsbil7dmFyIGksbyxhPW5ldyBGbG9hdDY0QXJyYXkoNjQpLHM9W1AoKSxQKCksUCgpLFAoKV0sdT12KG4sMzIpO3VbMF0mPTI0OCx1WzMxXSY9MTI3LHVbMzFdfD02NDt2YXIgYz1yKzY0O2ZvcihpPTA7aTxyOysraSllWzY0K2ldPXRbaV07Zm9yKGk9MDtpPDMyOysraSllWzMyK2ldPXVbMzIraV07dmFyIGY9dihlLnN1YmFycmF5KDMyKSxyKzMyKTtmb3IoYihmKSxJKHMsZiksRShlLHMpLGk9MzI7aTw2NDsrK2kpZVtpXT1uW2ldO3ZhciBsPXYoZSxyKzY0KTtmb3IoYihsKSxpPTMyO2k8NjQ7KytpKWFbaV09MDtmb3IoaT0wO2k8MzI7KytpKWFbaV09ZltpXTtmb3IoaT0wO2k8MzI7KytpKWZvcihvPTA7bzwzMjtvKyspYVtpK29dKz1sW2ldKnVbb107bShlLnN1YmFycmF5KDMyKSxhKX0obix0LHQubGVuZ3RoLHIpO2Zvcih2YXIgaT1uZXcgYShzLmNvbnN0YW50cy5TSUdOX0JZVEVfTEVOR1RIKSxvPTA7bzxpLmxlbmd0aDsrK28paVtvXT1uW29dO3JldHVybiBpfSxzLnZlcmlmeT1mdW5jdGlvbihlKXt2YXIgdD11KGU9ZXx8e30pO2lmKHZvaWQgMD09PWUuc2lnbmF0dXJlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJvcHRpb25zLnNpZ25hdHVyZSIgbXVzdCBiZSBhIG5vZGUuanMgQnVmZmVyLCBhIFVpbnQ4QXJyYXksIGEgZm9yZ2UgQnl0ZUJ1ZmZlciwgb3IgYSBiaW5hcnkgc3RyaW5nLicpO3ZhciByPXUoe21lc3NhZ2U6ZS5zaWduYXR1cmUsZW5jb2Rpbmc6ImJpbmFyeSJ9KTtpZihyLmxlbmd0aCE9PXMuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEgpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMuc2lnbmF0dXJlIiBtdXN0IGhhdmUgYSBieXRlIGxlbmd0aCBvZiAnK3MuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEgpO3ZhciBuPXUoe21lc3NhZ2U6ZS5wdWJsaWNLZXksZW5jb2Rpbmc6ImJpbmFyeSJ9KTtpZihuLmxlbmd0aCE9PXMuY29uc3RhbnRzLlBVQkxJQ19LRVlfQllURV9MRU5HVEgpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMucHVibGljS2V5IiBtdXN0IGhhdmUgYSBieXRlIGxlbmd0aCBvZiAnK3MuY29uc3RhbnRzLlBVQkxJQ19LRVlfQllURV9MRU5HVEgpO3ZhciBpLG89bmV3IGEocy5jb25zdGFudHMuU0lHTl9CWVRFX0xFTkdUSCt0Lmxlbmd0aCksaD1uZXcgYShzLmNvbnN0YW50cy5TSUdOX0JZVEVfTEVOR1RIK3QubGVuZ3RoKTtmb3IoaT0wO2k8cy5jb25zdGFudHMuU0lHTl9CWVRFX0xFTkdUSDsrK2kpb1tpXT1yW2ldO2ZvcihpPTA7aTx0Lmxlbmd0aDsrK2kpb1tpK3MuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEhdPXRbaV07cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpLG89bmV3IGEoMzIpLHM9W1AoKSxQKCksUCgpLFAoKV0sdT1bUCgpLFAoKSxQKCksUCgpXTtpZigtMSxyPDY0KXJldHVybi0xO2lmKGZ1bmN0aW9uKGUsdCl7dmFyIHI9UCgpLG49UCgpLGk9UCgpLG89UCgpLGE9UCgpLHM9UCgpLHU9UCgpO2soZVsyXSxmKSxmdW5jdGlvbihlLHQpe3ZhciByO2ZvcihyPTA7cjwxNjsrK3IpZVtyXT10WzIqcl0rKHRbMipyKzFdPDw4KTtlWzE1XSY9MzI3Njd9KGVbMV0sdCksTShpLGVbMV0pLEwobyxpLGwpLEIoaSxpLGVbMl0pLFIobyxlWzJdLG8pLE0oYSxvKSxNKHMsYSksTCh1LHMsYSksTChyLHUsaSksTChyLHIsbyksZnVuY3Rpb24oZSx0KXt2YXIgcixuPVAoKTtmb3Iocj0wO3I8MTY7KytyKW5bcl09dFtyXTtmb3Iocj0yNTA7cj49MDstLXIpTShuLG4pLDEhPT1yJiZMKG4sbix0KTtmb3Iocj0wO3I8MTY7KytyKWVbcl09bltyXX0ocixyKSxMKHIscixpKSxMKHIscixvKSxMKHIscixvKSxMKGVbMF0scixvKSxNKG4sZVswXSksTChuLG4sbyksVChuLGkpJiZMKGVbMF0sZVswXSxnKTtpZihNKG4sZVswXSksTChuLG4sbyksVChuLGkpKXJldHVybi0xO0MoZVswXSk9PT10WzMxXT4+NyYmQihlWzBdLGMsZVswXSk7cmV0dXJuIEwoZVszXSxlWzBdLGVbMV0pLDB9KHUsbikpcmV0dXJuLTE7Zm9yKGk9MDtpPHI7KytpKWVbaV09dFtpXTtmb3IoaT0wO2k8MzI7KytpKWVbaSszMl09bltpXTt2YXIgaD12KGUscik7aWYoYihoKSx4KHMsdSxoKSxJKHUsdC5zdWJhcnJheSgzMikpLF8ocyx1KSxFKG8scyksci09NjQsQSh0LDAsbywwKSl7Zm9yKGk9MDtpPHI7KytpKWVbaV09MDtyZXR1cm4tMX1mb3IoaT0wO2k8cjsrK2kpZVtpXT10W2krNjRdO3JldHVybiByfShoLG8sby5sZW5ndGgsbik+PTB9O3ZhciBjPVAoKSxmPVAoWzFdKSxsPVAoWzMwODgzLDQ5NTMsMTk5MTQsMzAxODcsNTU0NjcsMTY3MDUsMjYzNywxMTIsNTk1NDQsMzA1ODUsMTY1MDUsMzYwMzksNjUxMzksMTExMTksMjc4ODYsMjA5OTVdKSxoPVAoWzYxNzg1LDk5MDYsMzk4MjgsNjAzNzQsNDUzOTgsMzM0MTEsNTI3NCwyMjQsNTM1NTIsNjExNzEsMzMwMTAsNjU0Miw2NDc0MywyMjIzOSw1NTc3Miw5MjIyXSkscD1QKFs1NDU1NCwzNjY0NSwxMTYxNiw1MTU0Miw0MjkzMCwzODE4MSw1MTA0MCwyNjkyNCw1NjQxMiw2NDk4Miw1NzkwNSw0OTMxNiwyMTUwMiw1MjU5MCwxNDAzNSw4NTUzXSksZD1QKFsyNjIwMCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNF0pLHk9bmV3IEZsb2F0NjRBcnJheShbMjM3LDIxMSwyNDUsOTIsMjYsOTksMTgsODgsMjE0LDE1NiwyNDcsMTYyLDIyMiwyNDksMjIyLDIwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2XSksZz1QKFs0MTEzNiwxODk1OCw2OTUxLDUwNDE0LDU4NDg4LDQ0MzM1LDYxNTAsMTIwOTksNTUyMDcsMTU4NjcsMTUzLDExMDg1LDU3MDk5LDIwNDE3LDkzNDQsMTExMzldKTtmdW5jdGlvbiB2KGUscil7dmFyIGk9bi5tZC5zaGE1MTIuY3JlYXRlKCksdT1uZXcgbyhlKTtpLnVwZGF0ZSh1LmdldEJ5dGVzKHIpLCJiaW5hcnkiKTt2YXIgYz1pLmRpZ2VzdCgpLmdldEJ5dGVzKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgdClyZXR1cm4gdC5mcm9tKGMsImJpbmFyeSIpO2Zvcih2YXIgZj1uZXcgYShzLmNvbnN0YW50cy5IQVNIX0JZVEVfTEVOR1RIKSxsPTA7bDw2NDsrK2wpZltsXT1jLmNoYXJDb2RlQXQobCk7cmV0dXJuIGZ9ZnVuY3Rpb24gbShlLHQpe3ZhciByLG4saSxvO2ZvcihuPTYzO24+PTMyOy0tbil7Zm9yKHI9MCxpPW4tMzIsbz1uLTEyO2k8bzsrK2kpdFtpXSs9ci0xNip0W25dKnlbaS0obi0zMildLHI9dFtpXSsxMjg+PjgsdFtpXS09MjU2KnI7dFtpXSs9cix0W25dPTB9Zm9yKHI9MCxpPTA7aTwzMjsrK2kpdFtpXSs9ci0odFszMV0+PjQpKnlbaV0scj10W2ldPj44LHRbaV0mPTI1NTtmb3IoaT0wO2k8MzI7KytpKXRbaV0tPXIqeVtpXTtmb3Iobj0wO248MzI7KytuKXRbbisxXSs9dFtuXT4+OCxlW25dPTI1NSZ0W25dfWZ1bmN0aW9uIGIoZSl7Zm9yKHZhciB0PW5ldyBGbG9hdDY0QXJyYXkoNjQpLHI9MDtyPDY0Oysrcil0W3JdPWVbcl0sZVtyXT0wO20oZSx0KX1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9UCgpLG49UCgpLGk9UCgpLG89UCgpLGE9UCgpLHM9UCgpLHU9UCgpLGM9UCgpLGY9UCgpO0IocixlWzFdLGVbMF0pLEIoZix0WzFdLHRbMF0pLEwocixyLGYpLFIobixlWzBdLGVbMV0pLFIoZix0WzBdLHRbMV0pLEwobixuLGYpLEwoaSxlWzNdLHRbM10pLEwoaSxpLGgpLEwobyxlWzJdLHRbMl0pLFIobyxvLG8pLEIoYSxuLHIpLEIocyxvLGkpLFIodSxvLGkpLFIoYyxuLHIpLEwoZVswXSxhLHMpLEwoZVsxXSxjLHUpLEwoZVsyXSx1LHMpLEwoZVszXSxhLGMpfWZ1bmN0aW9uIFMoZSx0LHIpe2Zvcih2YXIgbj0wO248NDsrK24pTihlW25dLHRbbl0scil9ZnVuY3Rpb24gRShlLHQpe3ZhciByPVAoKSxuPVAoKSxpPVAoKTshZnVuY3Rpb24oZSx0KXt2YXIgcixuPVAoKTtmb3Iocj0wO3I8MTY7KytyKW5bcl09dFtyXTtmb3Iocj0yNTM7cj49MDstLXIpTShuLG4pLDIhPT1yJiY0IT09ciYmTChuLG4sdCk7Zm9yKHI9MDtyPDE2OysrcillW3JdPW5bcl19KGksdFsyXSksTChyLHRbMF0saSksTChuLHRbMV0saSksdyhlLG4pLGVbMzFdXj1DKHIpPDw3fWZ1bmN0aW9uIHcoZSx0KXt2YXIgcixuLGksbz1QKCksYT1QKCk7Zm9yKHI9MDtyPDE2OysrcilhW3JdPXRbcl07Zm9yKE8oYSksTyhhKSxPKGEpLG49MDtuPDI7KytuKXtmb3Iob1swXT1hWzBdLTY1NTE3LHI9MTtyPDE1OysrcilvW3JdPWFbcl0tNjU1MzUtKG9bci0xXT4+MTYmMSksb1tyLTFdJj02NTUzNTtvWzE1XT1hWzE1XS0zMjc2Ny0ob1sxNF0+PjE2JjEpLGk9b1sxNV0+PjE2JjEsb1sxNF0mPTY1NTM1LE4oYSxvLDEtaSl9Zm9yKHI9MDtyPDE2O3IrKyllWzIqcl09MjU1JmFbcl0sZVsyKnIrMV09YVtyXT4+OH1mdW5jdGlvbiBUKGUsdCl7dmFyIHI9bmV3IGEoMzIpLG49bmV3IGEoMzIpO3JldHVybiB3KHIsZSksdyhuLHQpLEEociwwLG4sMCl9ZnVuY3Rpb24gQShlLHQscixuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgbyxhPTA7Zm9yKG89MDtvPGk7KytvKWF8PWVbdCtvXV5yW24rb107cmV0dXJuKDEmYS0xPj4+OCktMX0oZSx0LHIsbiwzMil9ZnVuY3Rpb24gQyhlKXt2YXIgdD1uZXcgYSgzMik7cmV0dXJuIHcodCxlKSwxJnRbMF19ZnVuY3Rpb24geChlLHQscil7dmFyIG4saTtmb3IoayhlWzBdLGMpLGsoZVsxXSxmKSxrKGVbMl0sZiksayhlWzNdLGMpLGk9MjU1O2k+PTA7LS1pKVMoZSx0LG49cltpLzh8MF0+Pig3JmkpJjEpLF8odCxlKSxfKGUsZSksUyhlLHQsbil9ZnVuY3Rpb24gSShlLHQpe3ZhciByPVtQKCksUCgpLFAoKSxQKCldO2soclswXSxwKSxrKHJbMV0sZCksayhyWzJdLGYpLEwoclszXSxwLGQpLHgoZSxyLHQpfWZ1bmN0aW9uIGsoZSx0KXt2YXIgcjtmb3Iocj0wO3I8MTY7cisrKWVbcl09MHx0W3JdfWZ1bmN0aW9uIE8oZSl7dmFyIHQscixuPTE7Zm9yKHQ9MDt0PDE2OysrdClyPWVbdF0rbis2NTUzNSxuPU1hdGguZmxvb3Ioci82NTUzNiksZVt0XT1yLTY1NTM2Km47ZVswXSs9bi0xKzM3KihuLTEpfWZ1bmN0aW9uIE4oZSx0LHIpe2Zvcih2YXIgbixpPX4oci0xKSxvPTA7bzwxNjsrK28pbj1pJihlW29dXnRbb10pLGVbb11ePW4sdFtvXV49bn1mdW5jdGlvbiBQKGUpe3ZhciB0LHI9bmV3IEZsb2F0NjRBcnJheSgxNik7aWYoZSlmb3IodD0wO3Q8ZS5sZW5ndGg7Kyt0KXJbdF09ZVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBSKGUsdCxyKXtmb3IodmFyIG49MDtuPDE2OysrbillW25dPXRbbl0rcltuXX1mdW5jdGlvbiBCKGUsdCxyKXtmb3IodmFyIG49MDtuPDE2OysrbillW25dPXRbbl0tcltuXX1mdW5jdGlvbiBNKGUsdCl7TChlLHQsdCl9ZnVuY3Rpb24gTChlLHQscil7dmFyIG4saSxvPTAsYT0wLHM9MCx1PTAsYz0wLGY9MCxsPTAsaD0wLHA9MCxkPTAseT0wLGc9MCx2PTAsbT0wLGI9MCxfPTAsUz0wLEU9MCx3PTAsVD0wLEE9MCxDPTAseD0wLEk9MCxrPTAsTz0wLE49MCxQPTAsUj0wLEI9MCxNPTAsTD1yWzBdLEQ9clsxXSxqPXJbMl0sVT1yWzNdLEY9cls0XSxWPXJbNV0scT1yWzZdLEs9cls3XSx6PXJbOF0sRz1yWzldLEg9clsxMF0sVz1yWzExXSxZPXJbMTJdLFg9clsxM10sUT1yWzE0XSwkPXJbMTVdO28rPShuPXRbMF0pKkwsYSs9bipELHMrPW4qaix1Kz1uKlUsYys9bipGLGYrPW4qVixsKz1uKnEsaCs9bipLLHArPW4qeixkKz1uKkcseSs9bipILGcrPW4qVyx2Kz1uKlksbSs9bipYLGIrPW4qUSxfKz1uKiQsYSs9KG49dFsxXSkqTCxzKz1uKkQsdSs9bipqLGMrPW4qVSxmKz1uKkYsbCs9bipWLGgrPW4qcSxwKz1uKkssZCs9bip6LHkrPW4qRyxnKz1uKkgsdis9bipXLG0rPW4qWSxiKz1uKlgsXys9bipRLFMrPW4qJCxzKz0obj10WzJdKSpMLHUrPW4qRCxjKz1uKmosZis9bipVLGwrPW4qRixoKz1uKlYscCs9bipxLGQrPW4qSyx5Kz1uKnosZys9bipHLHYrPW4qSCxtKz1uKlcsYis9bipZLF8rPW4qWCxTKz1uKlEsRSs9biokLHUrPShuPXRbM10pKkwsYys9bipELGYrPW4qaixsKz1uKlUsaCs9bipGLHArPW4qVixkKz1uKnEseSs9bipLLGcrPW4qeix2Kz1uKkcsbSs9bipILGIrPW4qVyxfKz1uKlksUys9bipYLEUrPW4qUSx3Kz1uKiQsYys9KG49dFs0XSkqTCxmKz1uKkQsbCs9bipqLGgrPW4qVSxwKz1uKkYsZCs9bipWLHkrPW4qcSxnKz1uKkssdis9bip6LG0rPW4qRyxiKz1uKkgsXys9bipXLFMrPW4qWSxFKz1uKlgsdys9bipRLFQrPW4qJCxmKz0obj10WzVdKSpMLGwrPW4qRCxoKz1uKmoscCs9bipVLGQrPW4qRix5Kz1uKlYsZys9bipxLHYrPW4qSyxtKz1uKnosYis9bipHLF8rPW4qSCxTKz1uKlcsRSs9bipZLHcrPW4qWCxUKz1uKlEsQSs9biokLGwrPShuPXRbNl0pKkwsaCs9bipELHArPW4qaixkKz1uKlUseSs9bipGLGcrPW4qVix2Kz1uKnEsbSs9bipLLGIrPW4qeixfKz1uKkcsUys9bipILEUrPW4qVyx3Kz1uKlksVCs9bipYLEErPW4qUSxDKz1uKiQsaCs9KG49dFs3XSkqTCxwKz1uKkQsZCs9bipqLHkrPW4qVSxnKz1uKkYsdis9bipWLG0rPW4qcSxiKz1uKkssXys9bip6LFMrPW4qRyxFKz1uKkgsdys9bipXLFQrPW4qWSxBKz1uKlgsQys9bipRLHgrPW4qJCxwKz0obj10WzhdKSpMLGQrPW4qRCx5Kz1uKmosZys9bipVLHYrPW4qRixtKz1uKlYsYis9bipxLF8rPW4qSyxTKz1uKnosRSs9bipHLHcrPW4qSCxUKz1uKlcsQSs9bipZLEMrPW4qWCx4Kz1uKlEsSSs9biokLGQrPShuPXRbOV0pKkwseSs9bipELGcrPW4qaix2Kz1uKlUsbSs9bipGLGIrPW4qVixfKz1uKnEsUys9bipLLEUrPW4qeix3Kz1uKkcsVCs9bipILEErPW4qVyxDKz1uKlkseCs9bipYLEkrPW4qUSxrKz1uKiQseSs9KG49dFsxMF0pKkwsZys9bipELHYrPW4qaixtKz1uKlUsYis9bipGLF8rPW4qVixTKz1uKnEsRSs9bipLLHcrPW4qeixUKz1uKkcsQSs9bipILEMrPW4qVyx4Kz1uKlksSSs9bipYLGsrPW4qUSxPKz1uKiQsZys9KG49dFsxMV0pKkwsdis9bipELG0rPW4qaixiKz1uKlUsXys9bipGLFMrPW4qVixFKz1uKnEsdys9bipLLFQrPW4qeixBKz1uKkcsQys9bipILHgrPW4qVyxJKz1uKlksays9bipYLE8rPW4qUSxOKz1uKiQsdis9KG49dFsxMl0pKkwsbSs9bipELGIrPW4qaixfKz1uKlUsUys9bipGLEUrPW4qVix3Kz1uKnEsVCs9bipLLEErPW4qeixDKz1uKkcseCs9bipILEkrPW4qVyxrKz1uKlksTys9bipYLE4rPW4qUSxQKz1uKiQsbSs9KG49dFsxM10pKkwsYis9bipELF8rPW4qaixTKz1uKlUsRSs9bipGLHcrPW4qVixUKz1uKnEsQSs9bipLLEMrPW4qeix4Kz1uKkcsSSs9bipILGsrPW4qVyxPKz1uKlksTis9bipYLFArPW4qUSxSKz1uKiQsYis9KG49dFsxNF0pKkwsXys9bipELFMrPW4qaixFKz1uKlUsdys9bipGLFQrPW4qVixBKz1uKnEsQys9bipLLHgrPW4qeixJKz1uKkcsays9bipILE8rPW4qVyxOKz1uKlksUCs9bipYLFIrPW4qUSxCKz1uKiQsXys9KG49dFsxNV0pKkwsYSs9MzgqKEUrPW4qaikscys9MzgqKHcrPW4qVSksdSs9MzgqKFQrPW4qRiksYys9MzgqKEErPW4qViksZis9MzgqKEMrPW4qcSksbCs9MzgqKHgrPW4qSyksaCs9MzgqKEkrPW4qeikscCs9MzgqKGsrPW4qRyksZCs9MzgqKE8rPW4qSCkseSs9MzgqKE4rPW4qVyksZys9MzgqKFArPW4qWSksdis9MzgqKFIrPW4qWCksbSs9MzgqKEIrPW4qUSksYis9MzgqKE0rPW4qJCksbz0obj0obys9MzgqKFMrPW4qRCkpKyhpPTEpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxhPShuPWEraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSkscz0obj1zK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLHU9KG49dStpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxjPShuPWMraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksZj0obj1mK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGw9KG49bCtpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxoPShuPWgraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSkscD0obj1wK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGQ9KG49ZCtpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSx5PShuPXkraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksZz0obj1nK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi8="
}
Changelog:
{
"2020.04.17 15:43": "base64:cj11LmNvbmNhdCh5KX1lbHNle3ZhciB2PWMubWF0Y2gobyk7cj1uZXcgdSh2WzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJue3RhZzpjLm1hdGNoKGkpWzFdLGRhdGE6cn19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMjQpLGk9cigyMTgpLmVjLG89cigxNjEpLGE9cigzMzkpO2Z1bmN0aW9uIHMoZSx0KXtpZihlLmNtcG4oMCk8PTApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZyIpO2lmKGUuY21wKHQpPj10KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHUsYyxmKXt2YXIgbD1vKHUpO2lmKCJlYyI9PT1sLnR5cGUpe2lmKCJlY2RzYSIhPT1jJiYiZWNkc2EvcnNhIiE9PWMpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWFbci5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIildO2lmKCFuKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK3IuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpKTt2YXIgbz1uZXcgaShuKSxzPXIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhO3JldHVybiBvLnZlcmlmeSh0LGUscyl9KGUscixsKX1pZigiZHNhIj09PWwudHlwZSl7aWYoImRzYSIhPT1jKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yLmRhdGEucCxhPXIuZGF0YS5xLHU9ci5kYXRhLmcsYz1yLmRhdGEucHViX2tleSxmPW8uc2lnbmF0dXJlLmRlY29kZShlLCJkZXIiKSxsPWYucyxoPWYucjtzKGwsYSkscyhoLGEpO3ZhciBwPW4ubW9udChpKSxkPWwuaW52bShhKTtyZXR1cm4gMD09PXUudG9SZWQocCkucmVkUG93KG5ldyBuKHQpLm11bChkKS5tb2QoYSkpLmZyb21SZWQoKS5tdWwoYy50b1JlZChwKS5yZWRQb3coaC5tdWwoZCkubW9kKGEpKS5mcm9tUmVkKCkpLm1vZChpKS5tb2QoYSkuY21wKGgpfShlLHIsbCl9aWYoInJzYSIhPT1jJiYiZWNkc2EvcnNhIiE9PWMpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyPXQuY29uY2F0KFtmLHJdKTtmb3IodmFyIGg9bC5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxwPVsxXSxkPTA7ci5sZW5ndGgrcC5sZW5ndGgrMjxoOylwLnB1c2goMjU1KSxkKys7cC5wdXNoKDApO2Zvcih2YXIgeT0tMTsrK3k8ci5sZW5ndGg7KXAucHVzaChyW3ldKTtwPW5ldyB0KHApO3ZhciBnPW4ubW9udChsLm1vZHVsdXMpO2U9KGU9bmV3IG4oZSkudG9SZWQoZykpLnJlZFBvdyhuZXcgbihsLnB1YmxpY0V4cG9uZW50KSksZT1uZXcgdChlLmZyb21SZWQoKS50b0FycmF5KCkpO3ZhciB2PWQ8OD8xOjA7Zm9yKGg9TWF0aC5taW4oZS5sZW5ndGgscC5sZW5ndGgpLGUubGVuZ3RoIT09cC5sZW5ndGgmJih2PTEpLHk9LTE7Kyt5PGg7KXZ8PWVbeV1ecFt5XTtyZXR1cm4gMD09PXZ9fSkuY2FsbCh0aGlzLHIoMTgpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIG49cigyMTgpLGk9cigyNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYShlKX07dmFyIG89e3NlY3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gYShlKXt0aGlzLmN1cnZlVHlwZT1vW2VdLHRoaXMuY3VydmVUeXBlfHwodGhpcy5jdXJ2ZVR5cGU9e25hbWU6ZX0pLHRoaXMuY3VydmU9bmV3IG4uZWModGhpcy5jdXJ2ZVR5cGUubmFtZSksdGhpcy5rZXlzPXZvaWQgMH1mdW5jdGlvbiBzKGUscixuKXtBcnJheS5pc0FycmF5KGUpfHwoZT1lLnRvQXJyYXkoKSk7dmFyIGk9bmV3IHQoZSk7aWYobiYmaS5sZW5ndGg8bil7dmFyIG89bmV3IHQobi1pLmxlbmd0aCk7by5maWxsKDApLGk9dC5jb25jYXQoW28saV0pfXJldHVybiByP2kudG9TdHJpbmcocik6aX1vLnAyMjQ9by5zZWNwMjI0cjEsby5wMjU2PW8uc2VjcDI1NnIxPW8ucHJpbWUyNTZ2MSxvLnAxOTI9by5zZWNwMTkycjE9by5wcmltZTE5MnYxLG8ucDM4ND1vLnNlY3AzODRyMSxvLnA1MjE9by5zZWNwNTIxcjEsYS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShlLHQpfSxhLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gcj1yfHwidXRmOCIsdC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSkscyh0aGlzLmN1cnZlLmtleUZyb21QdWJsaWMoZSkuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxuLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSxhLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmtleXMuZ2V0UHVibGljKCJjb21wcmVzc2VkIj09PXQsITApO3JldHVybiJoeWJyaWQiPT09dCYmKHJbci5sZW5ndGgtMV0lMj9yWzBdPTc6clswXT02KSxzKHIsZSl9LGEucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIHModGhpcy5rZXlzLmdldFByaXZhdGUoKSxlKX0sYS5wcm90b3R5cGUuc2V0UHVibGljS2V5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHI9cnx8InV0ZjgiLHQuaXNCdWZmZXIoZSl8fChlPW5ldyB0KGUscikpLHRoaXMua2V5cy5faW1wb3J0UHVibGljKGUpLHRoaXN9LGEucHJvdG90eXBlLnNldFByaXZhdGVLZXk9ZnVuY3Rpb24oZSxyKXtyPXJ8fCJ1dGY4Iix0LmlzQnVmZmVyKGUpfHwoZT1uZXcgdChlLHIpKTt2YXIgbj1uZXcgaShlKTtyZXR1cm4gbj1uLnRvU3RyaW5nKDE2KSx0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKG4pLHRoaXN9fSkuY2FsbCh0aGlzLHIoMTgpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXt0LnB1YmxpY0VuY3J5cHQ9cig2MjUpLHQucHJpdmF0ZURlY3J5cHQ9cig2MjYpLHQucHJpdmF0ZUVuY3J5cHQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5wdWJsaWNFbmNyeXB0KGUsciwhMCl9LHQucHVibGljRGVjcnlwdD1mdW5jdGlvbihlLHIpe3JldHVybiB0LnByaXZhdGVEZWNyeXB0KGUsciwhMCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNjEpLGk9cigxMDQpLG89cigxMjcpLGE9cigzNDApLHM9cigzNDEpLHU9cigyNCksYz1yKDM0MiksZj1yKDIxNyksbD1yKDgpLkJ1ZmZlcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBoO2g9ZS5wYWRkaW5nP2UucGFkZGluZzpyPzE6NDt2YXIgcCxkPW4oZSk7aWYoND09PWgpcD1mdW5jdGlvbihlLHQpe3ZhciByPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCksbj10Lmxlbmd0aCxjPW8oInNoYTEiKS51cGRhdGUobC5hbGxvYygwKSkuZGlnZXN0KCksZj1jLmxlbmd0aCxoPTIqZjtpZihuPnItaC0yKXRocm93IG5ldyBFcnJvcigibWVzc2FnZSB0b28gbG9uZyIpO3ZhciBwPWwuYWxsb2Moci1uLWgtMiksZD1yLWYtMSx5PWkoZiksZz1zKGwuY29uY2F0KFtjLHAsbC5hbGxvYygxLDEpLHRdLGQpLGEoeSxkKSksdj1zKHksYShnLGYpKTtyZXR1cm4gbmV3IHUobC5jb25jYXQoW2wuYWxsb2MoMSksdixnXSxyKSl9KGQsdCk7ZWxzZSBpZigxPT09aClwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixvPXQubGVuZ3RoLGE9ZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihvPmEtMTEpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7bj1yP2wuYWxsb2MoYS1vLTMsMjU1KTpmdW5jdGlvbihlKXt2YXIgdCxyPWwuYWxsb2NVbnNhZmUoZSksbj0wLG89aSgyKmUpLGE9MDtmb3IoO248ZTspYT09PW8ubGVuZ3RoJiYobz1pKDIqZSksYT0wKSwodD1vW2ErK10pJiYocltuKytdPXQpO3JldHVybiByfShhLW8tMyk7cmV0dXJuIG5ldyB1KGwuY29uY2F0KFtsLmZyb20oWzAscj8xOjJdKSxuLGwuYWxsb2MoMSksdF0sYSkpfShkLHQscik7ZWxzZXtpZigzIT09aCl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpO2lmKChwPW5ldyB1KHQpKS5jbXAoZC5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMiKX1yZXR1cm4gcj9mKHAsZCk6YyhwLGQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYxKSxpPXIoMzQwKSxvPXIoMzQxKSxhPXIoMjQpLHM9cigyMTcpLHU9cigxMjcpLGM9cigzNDIpLGY9cig4KS5CdWZmZXI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbDtsPWUucGFkZGluZz9lLnBhZGRpbmc6cj8xOjQ7dmFyIGgscD1uKGUpLGQ9cC5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZih0Lmxlbmd0aD5kfHxuZXcgYSh0KS5jbXAocC5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtoPXI/YyhuZXcgYSh0KSxwKTpzKHQscCk7dmFyIHk9Zi5hbGxvYyhkLWgubGVuZ3RoKTtpZihoPWYuY29uY2F0KFt5LGhdLGQpLDQ9PT1sKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciByPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCksbj11KCJzaGExIikudXBkYXRlKGYuYWxsb2MoMCkpLmRpZ2VzdCgpLGE9bi5sZW5ndGg7aWYoMCE9PXRbMF0pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmFyIHM9dC5zbGljZSgxLGErMSksYz10LnNsaWNlKGErMSksbD1vKHMsaShjLGEpKSxoPW8oYyxpKGwsci1hLTEpKTtpZihmdW5jdGlvbihlLHQpe2U9Zi5mcm9tKGUpLHQ9Zi5mcm9tKHQpO3ZhciByPTAsbj1lLmxlbmd0aDtlLmxlbmd0aCE9PXQubGVuZ3RoJiYocisrLG49TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpKTt2YXIgaT0tMTtmb3IoOysraTxuOylyKz1lW2ldXnRbaV07cmV0dXJuIHJ9KG4saC5zbGljZSgwLGEpKSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTt2YXIgcD1hO2Zvcig7MD09PWhbcF07KXArKztpZigxIT09aFtwKytdKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiBoLnNsaWNlKHApfShwLGgpO2lmKDE9PT1sKXJldHVybiBmdW5jdGlvbihlLHQscil7dmFyIG49dC5zbGljZSgwLDIpLGk9MixvPTA7Zm9yKDswIT09dFtpKytdOylpZihpPj10Lmxlbmd0aCl7bysrO2JyZWFrfXZhciBhPXQuc2xpY2UoMixpLTEpOygiMDAwMiIhPT1uLnRvU3RyaW5nKCJoZXgiKSYmIXJ8fCIwMDAxIiE9PW4udG9TdHJpbmcoImhleCIpJiZyKSYmbysrO2EubGVuZ3RoPDgmJm8rKztpZihvKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiB0LnNsaWNlKGkpfSgwLGgscik7aWYoMz09PWwpcmV0dXJuIGg7dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcigic2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBvPXIoOCksYT1yKDEwNCkscz1vLkJ1ZmZlcix1PW8ua01heExlbmd0aCxjPWUuY3J5cHRvfHxlLm1zQ3J5cHRvLGY9TWF0aC5wb3coMiwzMiktMTtmdW5jdGlvbiBsKGUsdCl7aWYoIm51bWJlciIhPT10eXBlb2YgZXx8ZSE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPmZ8fGU8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKGU+dXx8ZT50KXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gaChlLHQscil7aWYoIm51bWJlciIhPT10eXBlb2YgZXx8ZSE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgbnVtYmVyIik7aWYoZT5mfHxlPDApdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgdWludDMyIik7aWYoZSt0PnJ8fGU+dSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnVmZmVyIHRvbyBzbWFsbCIpfWZ1bmN0aW9uIHAoZSx0LHIsaSl7aWYobi5icm93c2VyKXt2YXIgbz1lLmJ1ZmZlcixzPW5ldyBVaW50OEFycmF5KG8sdCxyKTtyZXR1cm4gYy5nZXRSYW5kb21WYWx1ZXMocyksaT92b2lkIG4ubmV4dFRpY2soZnVuY3Rpb24oKXtpKG51bGwsZSl9KTplfWlmKCFpKXJldHVybiBhKHIpLmNvcHkoZSx0KSxlO2EocixmdW5jdGlvbihyLG4pe2lmKHIpcmV0dXJuIGkocik7bi5jb3B5KGUsdCksaShudWxsLGUpfSl9YyYmYy5nZXRSYW5kb21WYWx1ZXN8fCFuLmJyb3dzZXI/KHQucmFuZG9tRmlsbD1mdW5jdGlvbih0LHIsbixpKXtpZighcy5pc0J1ZmZlcih0KSYmISh0IGluc3RhbmNlb2YgZS5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIpaT1yLHI9MCxuPXQubGVuZ3RoO2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBuKWk9bixuPXQubGVuZ3RoLXI7ZWxzZSBpZigiZnVuY3Rpb24iIT09dHlwZW9mIGkpdGhyb3cgbmV3IFR5cGVFcnJvcignImNiIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtyZXR1cm4gbChyLHQubGVuZ3RoKSxoKG4scix0Lmxlbmd0aCkscCh0LHIsbixpKX0sdC5yYW5kb21GaWxsU3luYz1mdW5jdGlvbih0LHIsbil7InVuZGVmaW5lZCI9PT10eXBlb2YgciYmKHI9MCk7aWYoIXMuaXNCdWZmZXIodCkmJiEodCBpbnN0YW5jZW9mIGUuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7bChyLHQubGVuZ3RoKSx2b2lkIDA9PT1uJiYobj10Lmxlbmd0aC1yKTtyZXR1cm4gaChuLHIsdC5sZW5ndGgpLHAodCxyLG4pfSk6KHQucmFuZG9tRmlsbD1pLHQucmFuZG9tRmlsbFN5bmM9aSl9KS5jYWxsKHRoaXMscigzNCkscig0NikpfSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciByPXt9O2UuZXhwb3J0cz1yO3ZhciBuPXt9O3IuZW5jb2RlPWZ1bmN0aW9uKGUsdCxyKXtpZigic3RyaW5nIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJhbHBoYWJldCIgbXVzdCBiZSBhIHN0cmluZy4nKTtpZih2b2lkIDAhPT1yJiYibnVtYmVyIiE9PXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoJyJtYXhsaW5lIiBtdXN0IGJlIGEgbnVtYmVyLicpO3ZhciBuPSIiO2lmKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXt2YXIgaT0wLG89dC5sZW5ndGgsYT10LmNoYXJBdCgwKSxzPVswXTtmb3IoaT0wO2k8ZS5sZW5ndGg7KytpKXtmb3IodmFyIHU9MCxjPWVbaV07dTxzLmxlbmd0aDsrK3UpYys9c1t1XTw8OCxzW3VdPWMlbyxjPWMvb3wwO2Zvcig7Yz4wOylzLnB1c2goYyVvKSxjPWMvb3wwfWZvcihpPTA7MD09PWVbaV0mJmk8ZS5sZW5ndGgtMTsrK2kpbis9YTtmb3IoaT1zLmxlbmd0aC0xO2k+PTA7LS1pKW4rPXRbc1tpXV19ZWxzZSBuPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MCxuPXQubGVuZ3RoLGk9dC5jaGFyQXQoMCksbz1bMF07Zm9yKHI9MDtyPGUubGVuZ3RoKCk7KytyKXtmb3IodmFyIGE9MCxzPWUuYXQocik7YTxvLmxlbmd0aDsrK2Epcys9b1thXTw8OCxvW2FdPXMlbixzPXMvbnwwO2Zvcig7cz4wOylvLnB1c2gocyVuKSxzPXMvbnwwfXZhciB1PSIiO2ZvcihyPTA7MD09PWUuYXQocikmJnI8ZS5sZW5ndGgoKS0xOysrcil1Kz1pO2ZvcihyPW8ubGVuZ3RoLTE7cj49MDstLXIpdSs9dFtvW3JdXTtyZXR1cm4gdX0oZSx0KTtpZihyKXt2YXIgZj1uZXcgUmVnRXhwKCIuezEsIityKyJ9IiwiZyIpO249bi5tYXRjaChmKS5qb2luKCJcclxuIil9cmV0dXJuIG59LHIuZGVjb2RlPWZ1bmN0aW9uKGUscil7aWYoInN0cmluZyIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCciaW5wdXQiIG11c3QgYmUgYSBzdHJpbmcuJyk7aWYoInN0cmluZyIhPT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCciYWxwaGFiZXQiIG11c3QgYmUgYSBzdHJpbmcuJyk7dmFyIGk9bltyXTtpZighaSl7aT1uW3JdPVtdO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7KytvKWlbci5jaGFyQ29kZUF0KG8pXT1vfWU9ZS5yZXBsYWNlKC9ccy9nLCIiKTt2YXIgYT1yLmxlbmd0aCxzPXIuY2hhckF0KDApLHU9WzBdO2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBjPWlbZS5jaGFyQ29kZUF0KG8pXTtpZih2b2lkIDA9PT1jKXJldHVybjtmb3IodmFyIGY9MCxsPWM7Zjx1Lmxlbmd0aDsrK2YpbCs9dVtmXSphLHVbZl09MjU1JmwsbD4+PTg7Zm9yKDtsPjA7KXUucHVzaCgyNTUmbCksbD4+PTh9Zm9yKHZhciBoPTA7ZVtoXT09PXMmJmg8ZS5sZW5ndGgtMTsrK2gpdS5wdXNoKDApO3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIHQ/dC5mcm9tKHUucmV2ZXJzZSgpKTpuZXcgVWludDhBcnJheSh1LnJldmVyc2UoKSl9fSkuY2FsbCh0aGlzLHIoMTgpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoODkpLHIoMzQ1KTt2YXIgaT1lLmV4cG9ydHM9bi50bHM7ZnVuY3Rpb24gbyhlLHQscil7dmFyIG89dC5lbnRpdHk9PT1uLnRscy5Db25uZWN0aW9uRW5kLmNsaWVudDtlLnJlYWQuY2lwaGVyU3RhdGU9e2luaXQ6ITEsY2lwaGVyOm4uY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCJBRVMtQ0JDIixvP3Iua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5OnIua2V5cy5jbGllbnRfd3JpdGVfa2V5KSxpdjpvP3Iua2V5cy5zZXJ2ZXJfd3JpdGVfSVY6ci5rZXlzLmNsaWVudF93cml0ZV9JVn0sZS53cml0ZS5jaXBoZXJTdGF0ZT17aW5pdDohMSxjaXBoZXI6bi5jaXBoZXIuY3JlYXRlQ2lwaGVyKCJBRVMtQ0JDIixvP3Iua2V5cy5jbGllbnRfd3JpdGVfa2V5OnIua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5KSxpdjpvP3Iua2V5cy5jbGllbnRfd3JpdGVfSVY6ci5rZXlzLnNlcnZlcl93cml0ZV9JVn0sZS5yZWFkLmNpcGhlckZ1bmN0aW9uPWMsZS53cml0ZS5jaXBoZXJGdW5jdGlvbj1hLGUucmVhZC5tYWNMZW5ndGg9ZS53cml0ZS5tYWNMZW5ndGg9ci5tYWNfbGVuZ3RoLGUucmVhZC5tYWNGdW5jdGlvbj1lLndyaXRlLm1hY0Z1bmN0aW9uPWkuaG1hY19zaGExfWZ1bmN0aW9uIGEoZSx0KXt2YXIgcixvPSExLGE9dC5tYWNGdW5jdGlvbih0Lm1hY0tleSx0LnNlcXVlbmNlTnVtYmVyLGUpO2UuZnJhZ21lbnQucHV0Qnl0ZXMoYSksdC51cGRhdGVTZXF1ZW5jZU51bWJlcigpLHI9ZS52ZXJzaW9uLm1pbm9yPT09aS5WZXJzaW9ucy5UTFNfMV8wLm1pbm9yP3QuY2lwaGVyU3RhdGUuaW5pdD9udWxsOnQuY2lwaGVyU3RhdGUuaXY6bi5yYW5kb20uZ2V0Qnl0ZXNTeW5jKDE2KSx0LmNpcGhlclN0YXRlLmluaXQ9ITA7dmFyIHU9dC5jaXBoZXJTdGF0ZS5jaXBoZXI7cmV0dXJuIHUuc3RhcnQoe2l2OnJ9KSxlLnZlcnNpb24ubWlub3I+PWkuVmVyc2lvbnMuVExTXzFfMS5taW5vciYmdS5vdXRwdXQucHV0Qnl0ZXMociksdS51cGRhdGUoZS5mcmFnbWVudCksdS5maW5pc2gocykmJihlLmZyYWdtZW50PXUub3V0cHV0LGUubGVuZ3RoPWUuZnJhZ21lbnQubGVuZ3RoKCksbz0hMCksb31mdW5jdGlvbiBzKGUsdCxyKXtpZighcil7dmFyIG49ZS10Lmxlbmd0aCgpJWU7dC5maWxsV2l0aEJ5dGUobi0xLG4pfXJldHVybiEwfWZ1bmN0aW9uIHUoZSx0LHIpe3ZhciBuPSEwO2lmKHIpe2Zvcih2YXIgaT10Lmxlbmd0aCgpLG89dC5sYXN0KCksYT1pLTEtbzthPGktMTsrK2Epbj1uJiZ0LmF0KGEpPT1vO24mJnQudHJ1bmNhdGUobysxKX1yZXR1cm4gbn1mdW5jdGlvbiBjKGUsdCl7dmFyIHIsbz0hMTtyPWUudmVyc2lvbi5taW5vcj09PWkuVmVyc2lvbnMuVExTXzFfMC5taW5vcj90LmNpcGhlclN0YXRlLmluaXQ/bnVsbDp0LmNpcGhlclN0YXRlLml2OmUuZnJhZ21lbnQuZ2V0Qnl0ZXMoMTYpLHQuY2lwaGVyU3RhdGUuaW5pdD0hMDt2YXIgYT10LmNpcGhlclN0YXRlLmNpcGhlcjthLnN0YXJ0KHtpdjpyfSksYS51cGRhdGUoZS5mcmFnbWVudCksbz1hLmZpbmlzaCh1KTt2YXIgcz10Lm1hY0xlbmd0aCxjPW4ucmFuZG9tLmdldEJ5dGVzU3luYyhzKSxmPWEub3V0cHV0Lmxlbmd0aCgpO2Y+PXM/KGUuZnJhZ21lbnQ9YS5vdXRwdXQuZ2V0Qnl0ZXMoZi1zKSxjPWEub3V0cHV0LmdldEJ5dGVzKHMpKTplLmZyYWdtZW50PWEub3V0cHV0LmdldEJ5dGVzKCksZS5mcmFnbWVudD1uLnV0aWwuY3JlYXRlQnVmZmVyKGUuZnJhZ21lbnQpLGUubGVuZ3RoPWUuZnJhZ21lbnQubGVuZ3RoKCk7dmFyIGw9dC5tYWNGdW5jdGlvbih0Lm1hY0tleSx0LnNlcXVlbmNlTnVtYmVyLGUpO3JldHVybiB0LnVwZGF0ZVNlcXVlbmNlTnVtYmVyKCksbz1mdW5jdGlvbihlLHQscil7dmFyIGk9bi5obWFjLmNyZWF0ZSgpO3JldHVybiBpLnN0YXJ0KCJTSEExIixlKSxpLnVwZGF0ZSh0KSx0PWkuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSxpLnN0YXJ0KG51bGwsbnVsbCksaS51cGRhdGUocikscj1pLmRpZ2VzdCgpLmdldEJ5dGVzKCksdD09PXJ9KHQubWFjS2V5LGMsbCkmJm99aS5DaXBoZXJTdWl0ZXMuVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQT17aWQ6WzAsNDddLG5hbWU6IlRMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEiLGluaXRTZWN1cml0eVBhcmFtZXRlcnM6ZnVuY3Rpb24oZSl7ZS5idWxrX2NpcGhlcl9hbGdvcml0aG09aS5CdWxrQ2lwaGVyQWxnb3JpdGhtLmFlcyxlLmNpcGhlcl90eXBlPWkuQ2lwaGVyVHlwZS5ibG9jayxlLmVuY19rZXlfbGVuZ3RoPTE2LGUuYmxvY2tfbGVuZ3RoPTE2LGUuZml4ZWRfaXZfbGVuZ3RoPTE2LGUucmVjb3JkX2l2X2xlbmd0aD0xNixlLm1hY19hbGdvcml0aG09aS5NQUNBbGdvcml0aG0uaG1hY19zaGExLGUubWFjX2xlbmd0aD0yMCxlLm1hY19rZXlfbGVuZ3RoPTIwfSxpbml0Q29ubmVjdGlvblN0YXRlOm99LGkuQ2lwaGVyU3VpdGVzLlRMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEE9e2lkOlswLDUzXSxuYW1lOiJUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIixpbml0U2VjdXJpdHlQYXJhbWV0ZXJzOmZ1bmN0aW9uKGUpe2UuYnVsa19jaXBoZXJfYWxnb3JpdGhtPWkuQnVsa0NpcGhlckFsZ29yaXRobS5hZXMsZS5jaXBoZXJfdHlwZT1pLkNpcGhlclR5cGUuYmxvY2ssZS5lbmNfa2V5X2xlbmd0aD0zMixlLmJsb2NrX2xlbmd0aD0xNixlLmZpeGVkX2l2X2xlbmd0aD0xNixlLnJlY29yZF9pdl9sZW5ndGg9MTYsZS5tYWNfYWxnb3JpdGhtPWkuTUFDQWxnb3JpdGhtLmhtYWNfc2hhMSxlLm1hY19sZW5ndGg9MjAsZS5tYWNfa2V5X2xlbmd0aD0yMH0saW5pdENvbm5lY3Rpb25TdGF0ZTpvfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigzNTUpLGUuZXhwb3J0cz1uLm1nZj1uLm1nZnx8e30sbi5tZ2YubWdmMT1uLm1nZjF9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIG49cig2KTtpZihyKDE2NCkscig1MikscigzNTcpLHIoMTApLCJ1bmRlZmluZWQiPT09dHlwZW9mIGkpdmFyIGk9bi5qc2JuLkJpZ0ludGVnZXI7dmFyIG89bi51dGlsLkJ5dGVCdWZmZXIsYT0idW5kZWZpbmVkIj09PXR5cGVvZiB0P1VpbnQ4QXJyYXk6dDtuLnBraT1uLnBraXx8e30sZS5leHBvcnRzPW4ucGtpLmVkMjU1MTk9bi5lZDI1NTE5PW4uZWQyNTUxOXx8e307dmFyIHM9bi5lZDI1NTE5O2Z1bmN0aW9uIHUoZSl7dmFyIHI9ZS5tZXNzYWdlO2lmKHIgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiByO3ZhciBuPWUuZW5jb2Rpbmc7aWYodm9pZCAwPT09cil7aWYoIWUubWQpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMubWVzc2FnZSIgb3IgIm9wdGlvbnMubWQiIG5vdCBzcGVjaWZpZWQuJyk7cj1lLm1kLmRpZ2VzdCgpLmdldEJ5dGVzKCksbj0iYmluYXJ5In1pZigic3RyaW5nIj09PXR5cGVvZiByJiYhbil0aHJvdyBuZXcgVHlwZUVycm9yKCcib3B0aW9ucy5lbmNvZGluZyIgbXVzdCBiZSAiYmluYXJ5IiBvciAidXRmOCIuJyk7aWYoInN0cmluZyI9PT10eXBlb2Ygcil7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgdClyZXR1cm4gdC5mcm9tKHIsbik7cj1uZXcgbyhyLG4pfWVsc2UgaWYoIShyIGluc3RhbmNlb2YgbykpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMubWVzc2FnZSIgbXVzdCBiZSBhIG5vZGUuanMgQnVmZmVyLCBhIFVpbnQ4QXJyYXksIGEgZm9yZ2UgQnl0ZUJ1ZmZlciwgb3IgYSBzdHJpbmcgd2l0aCAib3B0aW9ucy5lbmNvZGluZyIgc3BlY2lmeWluZyBpdHMgZW5jb2RpbmcuJyk7Zm9yKHZhciBpPW5ldyBhKHIubGVuZ3RoKCkpLHM9MDtzPGkubGVuZ3RoOysrcylpW3NdPXIuYXQocyk7cmV0dXJuIGl9cy5jb25zdGFudHM9e30scy5jb25zdGFudHMuUFVCTElDX0tFWV9CWVRFX0xFTkdUSD0zMixzLmNvbnN0YW50cy5QUklWQVRFX0tFWV9CWVRFX0xFTkdUSD02NCxzLmNvbnN0YW50cy5TRUVEX0JZVEVfTEVOR1RIPTMyLHMuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEg9NjQscy5jb25zdGFudHMuSEFTSF9CWVRFX0xFTkdUSD02NCxzLmdlbmVyYXRlS2V5UGFpcj1mdW5jdGlvbihlKXt2YXIgdD0oZT1lfHx7fSkuc2VlZDtpZih2b2lkIDA9PT10KXQ9bi5yYW5kb20uZ2V0Qnl0ZXNTeW5jKHMuY29uc3RhbnRzLlNFRURfQllURV9MRU5HVEgpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgdCl7aWYodC5sZW5ndGghPT1zLmNvbnN0YW50cy5TRUVEX0JZVEVfTEVOR1RIKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzZWVkIiBtdXN0IGJlICcrcy5jb25zdGFudHMuU0VFRF9CWVRFX0xFTkdUSCsiIGJ5dGVzIGluIGxlbmd0aC4iKX1lbHNlIGlmKCEodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzZWVkIiBtdXN0IGJlIGEgbm9kZS5qcyBCdWZmZXIsIFVpbnQ4QXJyYXksIG9yIGEgYmluYXJ5IHN0cmluZy4nKTt0PXUoe21lc3NhZ2U6dCxlbmNvZGluZzoiYmluYXJ5In0pO2Zvcih2YXIgcj1uZXcgYShzLmNvbnN0YW50cy5QVUJMSUNfS0VZX0JZVEVfTEVOR1RIKSxpPW5ldyBhKHMuY29uc3RhbnRzLlBSSVZBVEVfS0VZX0JZVEVfTEVOR1RIKSxvPTA7bzwzMjsrK28paVtvXT10W29dO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciByLG49W1AoKSxQKCksUCgpLFAoKV0saT12KHQsMzIpO2ZvcihpWzBdJj0yNDgsaVszMV0mPTEyNyxpWzMxXXw9NjQsSShuLGkpLEUoZSxuKSxyPTA7cjwzMjsrK3IpdFtyKzMyXT1lW3JdfShyLGkpLHtwdWJsaWNLZXk6cixwcml2YXRlS2V5Oml9fSxzLnB1YmxpY0tleUZyb21Qcml2YXRlS2V5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoe21lc3NhZ2U6KGU9ZXx8e30pLnByaXZhdGVLZXksZW5jb2Rpbmc6ImJpbmFyeSJ9KTtpZih0Lmxlbmd0aCE9PXMuY29uc3RhbnRzLlBSSVZBVEVfS0VZX0JZVEVfTEVOR1RIKXRocm93IG5ldyBUeXBlRXJyb3IoJyJvcHRpb25zLnByaXZhdGVLZXkiIG11c3QgaGF2ZSBhIGJ5dGUgbGVuZ3RoIG9mICcrcy5jb25zdGFudHMuUFJJVkFURV9LRVlfQllURV9MRU5HVEgpO2Zvcih2YXIgcj1uZXcgYShzLmNvbnN0YW50cy5QVUJMSUNfS0VZX0JZVEVfTEVOR1RIKSxuPTA7bjxyLmxlbmd0aDsrK24pcltuXT10WzMyK25dO3JldHVybiByfSxzLnNpZ249ZnVuY3Rpb24oZSl7dmFyIHQ9dShlPWV8fHt9KSxyPXUoe21lc3NhZ2U6ZS5wcml2YXRlS2V5LGVuY29kaW5nOiJiaW5hcnkifSk7aWYoci5sZW5ndGghPT1zLmNvbnN0YW50cy5QUklWQVRFX0tFWV9CWVRFX0xFTkdUSCl0aHJvdyBuZXcgVHlwZUVycm9yKCcib3B0aW9ucy5wcml2YXRlS2V5IiBtdXN0IGhhdmUgYSBieXRlIGxlbmd0aCBvZiAnK3MuY29uc3RhbnRzLlBSSVZBVEVfS0VZX0JZVEVfTEVOR1RIKTt2YXIgbj1uZXcgYShzLmNvbnN0YW50cy5TSUdOX0JZVEVfTEVOR1RIK3QubGVuZ3RoKTshZnVuY3Rpb24oZSx0LHIsbil7dmFyIGksbyxhPW5ldyBGbG9hdDY0QXJyYXkoNjQpLHM9W1AoKSxQKCksUCgpLFAoKV0sdT12KG4sMzIpO3VbMF0mPTI0OCx1WzMxXSY9MTI3LHVbMzFdfD02NDt2YXIgYz1yKzY0O2ZvcihpPTA7aTxyOysraSllWzY0K2ldPXRbaV07Zm9yKGk9MDtpPDMyOysraSllWzMyK2ldPXVbMzIraV07dmFyIGY9dihlLnN1YmFycmF5KDMyKSxyKzMyKTtmb3IoYihmKSxJKHMsZiksRShlLHMpLGk9MzI7aTw2NDsrK2kpZVtpXT1uW2ldO3ZhciBsPXYoZSxyKzY0KTtmb3IoYihsKSxpPTMyO2k8NjQ7KytpKWFbaV09MDtmb3IoaT0wO2k8MzI7KytpKWFbaV09ZltpXTtmb3IoaT0wO2k8MzI7KytpKWZvcihvPTA7bzwzMjtvKyspYVtpK29dKz1sW2ldKnVbb107bShlLnN1YmFycmF5KDMyKSxhKX0obix0LHQubGVuZ3RoLHIpO2Zvcih2YXIgaT1uZXcgYShzLmNvbnN0YW50cy5TSUdOX0JZVEVfTEVOR1RIKSxvPTA7bzxpLmxlbmd0aDsrK28paVtvXT1uW29dO3JldHVybiBpfSxzLnZlcmlmeT1mdW5jdGlvbihlKXt2YXIgdD11KGU9ZXx8e30pO2lmKHZvaWQgMD09PWUuc2lnbmF0dXJlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJvcHRpb25zLnNpZ25hdHVyZSIgbXVzdCBiZSBhIG5vZGUuanMgQnVmZmVyLCBhIFVpbnQ4QXJyYXksIGEgZm9yZ2UgQnl0ZUJ1ZmZlciwgb3IgYSBiaW5hcnkgc3RyaW5nLicpO3ZhciByPXUoe21lc3NhZ2U6ZS5zaWduYXR1cmUsZW5jb2Rpbmc6ImJpbmFyeSJ9KTtpZihyLmxlbmd0aCE9PXMuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEgpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMuc2lnbmF0dXJlIiBtdXN0IGhhdmUgYSBieXRlIGxlbmd0aCBvZiAnK3MuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEgpO3ZhciBuPXUoe21lc3NhZ2U6ZS5wdWJsaWNLZXksZW5jb2Rpbmc6ImJpbmFyeSJ9KTtpZihuLmxlbmd0aCE9PXMuY29uc3RhbnRzLlBVQkxJQ19LRVlfQllURV9MRU5HVEgpdGhyb3cgbmV3IFR5cGVFcnJvcignIm9wdGlvbnMucHVibGljS2V5IiBtdXN0IGhhdmUgYSBieXRlIGxlbmd0aCBvZiAnK3MuY29uc3RhbnRzLlBVQkxJQ19LRVlfQllURV9MRU5HVEgpO3ZhciBpLG89bmV3IGEocy5jb25zdGFudHMuU0lHTl9CWVRFX0xFTkdUSCt0Lmxlbmd0aCksaD1uZXcgYShzLmNvbnN0YW50cy5TSUdOX0JZVEVfTEVOR1RIK3QubGVuZ3RoKTtmb3IoaT0wO2k8cy5jb25zdGFudHMuU0lHTl9CWVRFX0xFTkdUSDsrK2kpb1tpXT1yW2ldO2ZvcihpPTA7aTx0Lmxlbmd0aDsrK2kpb1tpK3MuY29uc3RhbnRzLlNJR05fQllURV9MRU5HVEhdPXRbaV07cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpLG89bmV3IGEoMzIpLHM9W1AoKSxQKCksUCgpLFAoKV0sdT1bUCgpLFAoKSxQKCksUCgpXTtpZigtMSxyPDY0KXJldHVybi0xO2lmKGZ1bmN0aW9uKGUsdCl7dmFyIHI9UCgpLG49UCgpLGk9UCgpLG89UCgpLGE9UCgpLHM9UCgpLHU9UCgpO2soZVsyXSxmKSxmdW5jdGlvbihlLHQpe3ZhciByO2ZvcihyPTA7cjwxNjsrK3IpZVtyXT10WzIqcl0rKHRbMipyKzFdPDw4KTtlWzE1XSY9MzI3Njd9KGVbMV0sdCksTShpLGVbMV0pLEwobyxpLGwpLEIoaSxpLGVbMl0pLFIobyxlWzJdLG8pLE0oYSxvKSxNKHMsYSksTCh1LHMsYSksTChyLHUsaSksTChyLHIsbyksZnVuY3Rpb24oZSx0KXt2YXIgcixuPVAoKTtmb3Iocj0wO3I8MTY7KytyKW5bcl09dFtyXTtmb3Iocj0yNTA7cj49MDstLXIpTShuLG4pLDEhPT1yJiZMKG4sbix0KTtmb3Iocj0wO3I8MTY7KytyKWVbcl09bltyXX0ocixyKSxMKHIscixpKSxMKHIscixvKSxMKHIscixvKSxMKGVbMF0scixvKSxNKG4sZVswXSksTChuLG4sbyksVChuLGkpJiZMKGVbMF0sZVswXSxnKTtpZihNKG4sZVswXSksTChuLG4sbyksVChuLGkpKXJldHVybi0xO0MoZVswXSk9PT10WzMxXT4+NyYmQihlWzBdLGMsZVswXSk7cmV0dXJuIEwoZVszXSxlWzBdLGVbMV0pLDB9KHUsbikpcmV0dXJuLTE7Zm9yKGk9MDtpPHI7KytpKWVbaV09dFtpXTtmb3IoaT0wO2k8MzI7KytpKWVbaSszMl09bltpXTt2YXIgaD12KGUscik7aWYoYihoKSx4KHMsdSxoKSxJKHUsdC5zdWJhcnJheSgzMikpLF8ocyx1KSxFKG8scyksci09NjQsQSh0LDAsbywwKSl7Zm9yKGk9MDtpPHI7KytpKWVbaV09MDtyZXR1cm4tMX1mb3IoaT0wO2k8cjsrK2kpZVtpXT10W2krNjRdO3JldHVybiByfShoLG8sby5sZW5ndGgsbik+PTB9O3ZhciBjPVAoKSxmPVAoWzFdKSxsPVAoWzMwODgzLDQ5NTMsMTk5MTQsMzAxODcsNTU0NjcsMTY3MDUsMjYzNywxMTIsNTk1NDQsMzA1ODUsMTY1MDUsMzYwMzksNjUxMzksMTExMTksMjc4ODYsMjA5OTVdKSxoPVAoWzYxNzg1LDk5MDYsMzk4MjgsNjAzNzQsNDUzOTgsMzM0MTEsNTI3NCwyMjQsNTM1NTIsNjExNzEsMzMwMTAsNjU0Miw2NDc0MywyMjIzOSw1NTc3Miw5MjIyXSkscD1QKFs1NDU1NCwzNjY0NSwxMTYxNiw1MTU0Miw0MjkzMCwzODE4MSw1MTA0MCwyNjkyNCw1NjQxMiw2NDk4Miw1NzkwNSw0OTMxNiwyMTUwMiw1MjU5MCwxNDAzNSw4NTUzXSksZD1QKFsyNjIwMCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNCwyNjIxNF0pLHk9bmV3IEZsb2F0NjRBcnJheShbMjM3LDIxMSwyNDUsOTIsMjYsOTksMTgsODgsMjE0LDE1NiwyNDcsMTYyLDIyMiwyNDksMjIyLDIwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2XSksZz1QKFs0MTEzNiwxODk1OCw2OTUxLDUwNDE0LDU4NDg4LDQ0MzM1LDYxNTAsMTIwOTksNTUyMDcsMTU4NjcsMTUzLDExMDg1LDU3MDk5LDIwNDE3LDkzNDQsMTExMzldKTtmdW5jdGlvbiB2KGUscil7dmFyIGk9bi5tZC5zaGE1MTIuY3JlYXRlKCksdT1uZXcgbyhlKTtpLnVwZGF0ZSh1LmdldEJ5dGVzKHIpLCJiaW5hcnkiKTt2YXIgYz1pLmRpZ2VzdCgpLmdldEJ5dGVzKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgdClyZXR1cm4gdC5mcm9tKGMsImJpbmFyeSIpO2Zvcih2YXIgZj1uZXcgYShzLmNvbnN0YW50cy5IQVNIX0JZVEVfTEVOR1RIKSxsPTA7bDw2NDsrK2wpZltsXT1jLmNoYXJDb2RlQXQobCk7cmV0dXJuIGZ9ZnVuY3Rpb24gbShlLHQpe3ZhciByLG4saSxvO2ZvcihuPTYzO24+PTMyOy0tbil7Zm9yKHI9MCxpPW4tMzIsbz1uLTEyO2k8bzsrK2kpdFtpXSs9ci0xNip0W25dKnlbaS0obi0zMildLHI9dFtpXSsxMjg+PjgsdFtpXS09MjU2KnI7dFtpXSs9cix0W25dPTB9Zm9yKHI9MCxpPTA7aTwzMjsrK2kpdFtpXSs9ci0odFszMV0+PjQpKnlbaV0scj10W2ldPj44LHRbaV0mPTI1NTtmb3IoaT0wO2k8MzI7KytpKXRbaV0tPXIqeVtpXTtmb3Iobj0wO248MzI7KytuKXRbbisxXSs9dFtuXT4+OCxlW25dPTI1NSZ0W25dfWZ1bmN0aW9uIGIoZSl7Zm9yKHZhciB0PW5ldyBGbG9hdDY0QXJyYXkoNjQpLHI9MDtyPDY0Oysrcil0W3JdPWVbcl0sZVtyXT0wO20oZSx0KX1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9UCgpLG49UCgpLGk9UCgpLG89UCgpLGE9UCgpLHM9UCgpLHU9UCgpLGM9UCgpLGY9UCgpO0IocixlWzFdLGVbMF0pLEIoZix0WzFdLHRbMF0pLEwocixyLGYpLFIobixlWzBdLGVbMV0pLFIoZix0WzBdLHRbMV0pLEwobixuLGYpLEwoaSxlWzNdLHRbM10pLEwoaSxpLGgpLEwobyxlWzJdLHRbMl0pLFIobyxvLG8pLEIoYSxuLHIpLEIocyxvLGkpLFIodSxvLGkpLFIoYyxuLHIpLEwoZVswXSxhLHMpLEwoZVsxXSxjLHUpLEwoZVsyXSx1LHMpLEwoZVszXSxhLGMpfWZ1bmN0aW9uIFMoZSx0LHIpe2Zvcih2YXIgbj0wO248NDsrK24pTihlW25dLHRbbl0scil9ZnVuY3Rpb24gRShlLHQpe3ZhciByPVAoKSxuPVAoKSxpPVAoKTshZnVuY3Rpb24oZSx0KXt2YXIgcixuPVAoKTtmb3Iocj0wO3I8MTY7KytyKW5bcl09dFtyXTtmb3Iocj0yNTM7cj49MDstLXIpTShuLG4pLDIhPT1yJiY0IT09ciYmTChuLG4sdCk7Zm9yKHI9MDtyPDE2OysrcillW3JdPW5bcl19KGksdFsyXSksTChyLHRbMF0saSksTChuLHRbMV0saSksdyhlLG4pLGVbMzFdXj1DKHIpPDw3fWZ1bmN0aW9uIHcoZSx0KXt2YXIgcixuLGksbz1QKCksYT1QKCk7Zm9yKHI9MDtyPDE2OysrcilhW3JdPXRbcl07Zm9yKE8oYSksTyhhKSxPKGEpLG49MDtuPDI7KytuKXtmb3Iob1swXT1hWzBdLTY1NTE3LHI9MTtyPDE1OysrcilvW3JdPWFbcl0tNjU1MzUtKG9bci0xXT4+MTYmMSksb1tyLTFdJj02NTUzNTtvWzE1XT1hWzE1XS0zMjc2Ny0ob1sxNF0+PjE2JjEpLGk9b1sxNV0+PjE2JjEsb1sxNF0mPTY1NTM1LE4oYSxvLDEtaSl9Zm9yKHI9MDtyPDE2O3IrKyllWzIqcl09MjU1JmFbcl0sZVsyKnIrMV09YVtyXT4+OH1mdW5jdGlvbiBUKGUsdCl7dmFyIHI9bmV3IGEoMzIpLG49bmV3IGEoMzIpO3JldHVybiB3KHIsZSksdyhuLHQpLEEociwwLG4sMCl9ZnVuY3Rpb24gQShlLHQscixuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgbyxhPTA7Zm9yKG89MDtvPGk7KytvKWF8PWVbdCtvXV5yW24rb107cmV0dXJuKDEmYS0xPj4+OCktMX0oZSx0LHIsbiwzMil9ZnVuY3Rpb24gQyhlKXt2YXIgdD1uZXcgYSgzMik7cmV0dXJuIHcodCxlKSwxJnRbMF19ZnVuY3Rpb24geChlLHQscil7dmFyIG4saTtmb3IoayhlWzBdLGMpLGsoZVsxXSxmKSxrKGVbMl0sZiksayhlWzNdLGMpLGk9MjU1O2k+PTA7LS1pKVMoZSx0LG49cltpLzh8MF0+Pig3JmkpJjEpLF8odCxlKSxfKGUsZSksUyhlLHQsbil9ZnVuY3Rpb24gSShlLHQpe3ZhciByPVtQKCksUCgpLFAoKSxQKCldO2soclswXSxwKSxrKHJbMV0sZCksayhyWzJdLGYpLEwoclszXSxwLGQpLHgoZSxyLHQpfWZ1bmN0aW9uIGsoZSx0KXt2YXIgcjtmb3Iocj0wO3I8MTY7cisrKWVbcl09MHx0W3JdfWZ1bmN0aW9uIE8oZSl7dmFyIHQscixuPTE7Zm9yKHQ9MDt0PDE2OysrdClyPWVbdF0rbis2NTUzNSxuPU1hdGguZmxvb3Ioci82NTUzNiksZVt0XT1yLTY1NTM2Km47ZVswXSs9bi0xKzM3KihuLTEpfWZ1bmN0aW9uIE4oZSx0LHIpe2Zvcih2YXIgbixpPX4oci0xKSxvPTA7bzwxNjsrK28pbj1pJihlW29dXnRbb10pLGVbb11ePW4sdFtvXV49bn1mdW5jdGlvbiBQKGUpe3ZhciB0LHI9bmV3IEZsb2F0NjRBcnJheSgxNik7aWYoZSlmb3IodD0wO3Q8ZS5sZW5ndGg7Kyt0KXJbdF09ZVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBSKGUsdCxyKXtmb3IodmFyIG49MDtuPDE2OysrbillW25dPXRbbl0rcltuXX1mdW5jdGlvbiBCKGUsdCxyKXtmb3IodmFyIG49MDtuPDE2OysrbillW25dPXRbbl0tcltuXX1mdW5jdGlvbiBNKGUsdCl7TChlLHQsdCl9ZnVuY3Rpb24gTChlLHQscil7dmFyIG4saSxvPTAsYT0wLHM9MCx1PTAsYz0wLGY9MCxsPTAsaD0wLHA9MCxkPTAseT0wLGc9MCx2PTAsbT0wLGI9MCxfPTAsUz0wLEU9MCx3PTAsVD0wLEE9MCxDPTAseD0wLEk9MCxrPTAsTz0wLE49MCxQPTAsUj0wLEI9MCxNPTAsTD1yWzBdLEQ9clsxXSxqPXJbMl0sVT1yWzNdLEY9cls0XSxWPXJbNV0scT1yWzZdLEs9cls3XSx6PXJbOF0sRz1yWzldLEg9clsxMF0sVz1yWzExXSxZPXJbMTJdLFg9clsxM10sUT1yWzE0XSwkPXJbMTVdO28rPShuPXRbMF0pKkwsYSs9bipELHMrPW4qaix1Kz1uKlUsYys9bipGLGYrPW4qVixsKz1uKnEsaCs9bipLLHArPW4qeixkKz1uKkcseSs9bipILGcrPW4qVyx2Kz1uKlksbSs9bipYLGIrPW4qUSxfKz1uKiQsYSs9KG49dFsxXSkqTCxzKz1uKkQsdSs9bipqLGMrPW4qVSxmKz1uKkYsbCs9bipWLGgrPW4qcSxwKz1uKkssZCs9bip6LHkrPW4qRyxnKz1uKkgsdis9bipXLG0rPW4qWSxiKz1uKlgsXys9bipRLFMrPW4qJCxzKz0obj10WzJdKSpMLHUrPW4qRCxjKz1uKmosZis9bipVLGwrPW4qRixoKz1uKlYscCs9bipxLGQrPW4qSyx5Kz1uKnosZys9bipHLHYrPW4qSCxtKz1uKlcsYis9bipZLF8rPW4qWCxTKz1uKlEsRSs9biokLHUrPShuPXRbM10pKkwsYys9bipELGYrPW4qaixsKz1uKlUsaCs9bipGLHArPW4qVixkKz1uKnEseSs9bipLLGcrPW4qeix2Kz1uKkcsbSs9bipILGIrPW4qVyxfKz1uKlksUys9bipYLEUrPW4qUSx3Kz1uKiQsYys9KG49dFs0XSkqTCxmKz1uKkQsbCs9bipqLGgrPW4qVSxwKz1uKkYsZCs9bipWLHkrPW4qcSxnKz1uKkssdis9bip6LG0rPW4qRyxiKz1uKkgsXys9bipXLFMrPW4qWSxFKz1uKlgsdys9bipRLFQrPW4qJCxmKz0obj10WzVdKSpMLGwrPW4qRCxoKz1uKmoscCs9bipVLGQrPW4qRix5Kz1uKlYsZys9bipxLHYrPW4qSyxtKz1uKnosYis9bipHLF8rPW4qSCxTKz1uKlcsRSs9bipZLHcrPW4qWCxUKz1uKlEsQSs9biokLGwrPShuPXRbNl0pKkwsaCs9bipELHArPW4qaixkKz1uKlUseSs9bipGLGcrPW4qVix2Kz1uKnEsbSs9bipLLGIrPW4qeixfKz1uKkcsUys9bipILEUrPW4qVyx3Kz1uKlksVCs9bipYLEErPW4qUSxDKz1uKiQsaCs9KG49dFs3XSkqTCxwKz1uKkQsZCs9bipqLHkrPW4qVSxnKz1uKkYsdis9bipWLG0rPW4qcSxiKz1uKkssXys9bip6LFMrPW4qRyxFKz1uKkgsdys9bipXLFQrPW4qWSxBKz1uKlgsQys9bipRLHgrPW4qJCxwKz0obj10WzhdKSpMLGQrPW4qRCx5Kz1uKmosZys9bipVLHYrPW4qRixtKz1uKlYsYis9bipxLF8rPW4qSyxTKz1uKnosRSs9bipHLHcrPW4qSCxUKz1uKlcsQSs9bipZLEMrPW4qWCx4Kz1uKlEsSSs9biokLGQrPShuPXRbOV0pKkwseSs9bipELGcrPW4qaix2Kz1uKlUsbSs9bipGLGIrPW4qVixfKz1uKnEsUys9bipLLEUrPW4qeix3Kz1uKkcsVCs9bipILEErPW4qVyxDKz1uKlkseCs9bipYLEkrPW4qUSxrKz1uKiQseSs9KG49dFsxMF0pKkwsZys9bipELHYrPW4qaixtKz1uKlUsYis9bipGLF8rPW4qVixTKz1uKnEsRSs9bipLLHcrPW4qeixUKz1uKkcsQSs9bipILEMrPW4qVyx4Kz1uKlksSSs9bipYLGsrPW4qUSxPKz1uKiQsZys9KG49dFsxMV0pKkwsdis9bipELG0rPW4qaixiKz1uKlUsXys9bipGLFMrPW4qVixFKz1uKnEsdys9bipLLFQrPW4qeixBKz1uKkcsQys9bipILHgrPW4qVyxJKz1uKlksays9bipYLE8rPW4qUSxOKz1uKiQsdis9KG49dFsxMl0pKkwsbSs9bipELGIrPW4qaixfKz1uKlUsUys9bipGLEUrPW4qVix3Kz1uKnEsVCs9bipLLEErPW4qeixDKz1uKkcseCs9bipILEkrPW4qVyxrKz1uKlksTys9bipYLE4rPW4qUSxQKz1uKiQsbSs9KG49dFsxM10pKkwsYis9bipELF8rPW4qaixTKz1uKlUsRSs9bipGLHcrPW4qVixUKz1uKnEsQSs9bipLLEMrPW4qeix4Kz1uKkcsSSs9bipILGsrPW4qVyxPKz1uKlksTis9bipYLFArPW4qUSxSKz1uKiQsYis9KG49dFsxNF0pKkwsXys9bipELFMrPW4qaixFKz1uKlUsdys9bipGLFQrPW4qVixBKz1uKnEsQys9bipLLHgrPW4qeixJKz1uKkcsays9bipILE8rPW4qVyxOKz1uKlksUCs9bipYLFIrPW4qUSxCKz1uKiQsXys9KG49dFsxNV0pKkwsYSs9MzgqKEUrPW4qaikscys9MzgqKHcrPW4qVSksdSs9MzgqKFQrPW4qRiksYys9MzgqKEErPW4qViksZis9MzgqKEMrPW4qcSksbCs9MzgqKHgrPW4qSyksaCs9MzgqKEkrPW4qeikscCs9MzgqKGsrPW4qRyksZCs9MzgqKE8rPW4qSCkseSs9MzgqKE4rPW4qVyksZys9MzgqKFArPW4qWSksdis9MzgqKFIrPW4qWCksbSs9MzgqKEIrPW4qUSksYis9MzgqKE0rPW4qJCksbz0obj0obys9MzgqKFMrPW4qRCkpKyhpPTEpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxhPShuPWEraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSkscz0obj1zK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLHU9KG49dStpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxjPShuPWMraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksZj0obj1mK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGw9KG49bCtpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxoPShuPWgraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSkscD0obj1wK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGQ9KG49ZCtpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSx5PShuPXkraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksZz0obj1nK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi8="
}