Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥新居之约@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWKqOaAgeWIhuexu1wiLFwicGF0aFwiOlwiZHRcIixcInJ1bGVcIjpcImNvbnN0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuaWYgKGdldE15VmFyKCd0eXBlJywgJzEnKSA9PSAnMScpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBjYXRlZ29yaWVzID0gdHlwZS5jb25jYXQobWNhdGVzKVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHR5cGVcXG4gICAgfVxcbn0gZWxzZSBpZiAoZ2V0TXlWYXIoJ3R5cGUnLCAnMScpID09ICcyJykge1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0eXBlLmNvbmNhdCh0Y2F0ZXMpXFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHZhciBjYXRlZ29yaWVzID0gdHlwZVxcbiAgICB9XFxufSBlbHNlIGlmIChnZXRNeVZhcigndHlwZScsICcxJykgPT0gJzMnKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHR5cGUuY29uY2F0KGRjYXRlcylcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0eXBlXFxuICAgIH1cXG59IGVsc2UgaWYgKGdldE15VmFyKCd0eXBlJywgJzEnKSA9PSAnNCcpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBjYXRlZ29yaWVzID0gdHlwZS5jb25jYXQoemNhdGVzKVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHR5cGVcXG4gICAgfVxcbn1cXG5cXG4vL2xvZyhjYXRlZ29yaWVzKVxcbnZhciBpbml0X2NhdGUgPSBbXVxcblxcbmZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcbiAgICBpbml0X2NhdGUucHVzaChcXFwiMFxcXCIpXFxufVxcbi8vdmFyIG1lbnVLZXkgPSBbJ+WIhuexuycsICfnsbvlnosnLCAn5Zyw5Yy6JywgJ+W5tOS7vScsICfmjpLluo8nXTtcXG5sZXQgYm9keSA9ICd0eXBlPeWIhuexuyZzb3J0PeaOkuW6jyZhcmVhPeWcsOWMuiZjbGFzcz3nsbvlnosmeWVhcj3lubTku70mcD0nICsgcGFnZTtcXG5jb25zdCBmb2xkID0gZ2V0TXlWYXIoTVlfUlVMRS5ncm91cCwgXFxcIjBcXFwiKVxcbmNvbnN0IGNhdGVfdGVtcF9qc29uID0gZ2V0TXlWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG5jb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGZvbGQgPT09ICcxJyA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMxOUI4OURcXFwiPjogKDwvc3Bhbj48L2I+JyA6ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICM5MTAxMTNcXFwiPjogKTwvc3Bhbj48L2I+JyxcXG4gICAgICAgIHVybDogJCgpLmxhenlSdWxlKChmb2xkKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCA9PT0gJzEnID8gJzAnIDogJzEnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgZm9sZCksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICB9KVxcbiAgICAvL2xvZyhjYXRlZ29yaWVzLmxlbmd0aClcXG4gICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgIGxldCBvbmVjYXRlcyA9IGNhdGVnb3J5LnR5cGU7XFxuICAgICAgICAgICAgb25lY2F0ZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW0udHlwZTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDliIbnsbvpopzoibIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKHBhcmFtcy50eXBlWzBdLnR5cGUubGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy50eXBlWzBdLnR5cGUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKGl0ZW0pICAgICAgICAgICAgICAgICAgICAgICAgIFxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlID09IHBhcmFtcy50aXRsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2coaXQudmFsdWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndHlwZScsIGl0ZW0udmFsdWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignY2xhc3MnLCAwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2FyZWEnLCAwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3llYXInLCAwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnQnLCAwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW11cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wLmZvckVhY2goKGNhdGUsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jYXRlLnB1c2goaW5kZXggPT09IDAgPyBwYXJhbXMua2V5LnRvU3RyaW5nKCkgOiBcXFwiMFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShuZXdfY2F0ZSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2UgaWYgKGZvbGQgPT09ICcxJykge1xcbiAgICAgICAgICAgIC8vbG9nKGNhdGVnb3J5KSAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGNhdGVnb3J5LmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS5zcGxpdCgnLCcpO1xcbiAgICAgICAgICAgICAgICBpdGVtLmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDliIbnsbvpopzoibIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy50aXRsZSA9PSAn5YWo6YOoJyB8fCBwYXJhbXMudGl0bGUgPT0gJ+acgOaWsCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAwO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAocGFyYW1zLnRpdGxlID09ICfng63pl6gnKXtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAocGFyYW1zLnRpdGxlID09ICfmlrDkuIonKXtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAyO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAocGFyYW1zLnRpdGxlID09ICfor4TliIYnKXtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAzO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gcGFyYW1zLnRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLmluZGV4ID09ICcxJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKHZhbClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhwYXJhbXMuaW5kZXgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignY2xhc3MnLCB2YWwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmluZGV4ID09ICcyJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2FyZWEnLCB2YWwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmluZGV4ID09ICczJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3llYXInLCB2YWwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2codmFsKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnQnLCB2YWwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gNCkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+mHjee9rumAiemhuScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcImhpa2VyOi8vZW1wdHlcXFwiKS5sYXp5UnVsZSgoaW5pdF9jYXRlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndHlwZScsIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2NsYXNzJywgMClcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignYXJlYScsIDApXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3llYXInLCAwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0JywgMClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/ph43nva7miJDlip9+J1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5pdF9jYXRlKVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLor7fmsYLlpLTop6Plr4ZcIixcInBhdGhcIjpcImNvZGVcIixcInJ1bGVcIjpcInZhciB0aW1lLCBtNSwgc2lnblxcbnZhciBqYXZhSW1wb3J0ID0gbmV3IEphdmFJbXBvcnRlcigpO1xcbmphdmFJbXBvcnQuaW1wb3J0UGFja2FnZShcXG4gICAgUGFja2FnZXMuamF2YS5sYW5nLFxcbiAgICBQYWNrYWdlcy5qYXZhLnNlY3VyaXR5LFxcbiAgICBQYWNrYWdlcy5qYXZhLnV0aWwsXFxuICAgIFBhY2thZ2VzLmphdmEuaW8sXFxuICAgIFBhY2thZ2VzLmphdmEudGV4dCxcXG4gICAgUGFja2FnZXMuamF2YXguY3J5cHRvLFxcbiAgICBQYWNrYWdlcy5qYXZheC5jcnlwdG8uc3BlY1xcbik7XFxud2l0aChqYXZhSW1wb3J0KSB7XFxuICAgIGZ1bmN0aW9uIHN0clRvTWQ1QnkzMihzdHIpIHtcXG4gICAgICAgIHZhciByZVN0ciA9IG51bGw7XFxuICAgICAgICB2YXIgbWRkID0gTWVzc2FnZURpZ2VzdC5nZXRJbnN0YW5jZShcXFwiTUQ1XFxcIik7XFxuICAgICAgICB2YXIgYnl0ZXMgPSBtZGQuZGlnZXN0KFN0cmluZyhzdHIpLmdldEJ5dGVzKCkpO1xcbiAgICAgICAgdmFyIHN0cmluZ0J1ZmZlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XFxuICAgICAgICBieXRlcy5mb3JFYWNoKGEgPT4ge1xcbiAgICAgICAgICAgIHZhciBidCA9IGEgJiAweGZmO1xcbiAgICAgICAgICAgIGlmIChidCA8IDE2KSB7XFxuICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlci5hcHBlbmQoXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgc3RyaW5nQnVmZmVyLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKGJ0KSk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJlU3RyID0gc3RyaW5nQnVmZmVyLnRvU3RyaW5nKCk7XFxuICAgICAgICByZXR1cm4gcmVTdHI7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gZGVjb2RlKCkge1xcbiAgICAgICAgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCk7XFxuICAgICAgICBtNSA9IHJhbmRvbSgzMik7XFxuICAgICAgICBzaWduID0gc3RyVG9NZDVCeTMyKFxcXCJrYWl4aW42NjZfXFxcIiArIHRpbWUgKyBcXFwiX1xcXCIgK201KTtcXG4gICAgICAgIC8vbG9nKHNpZ24rXFxcIlxcXCIpO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHJhbmRvbShpKSB7XFxuICAgICAgICB2YXIgcmFuZG9tID0gbmV3IFJhbmRvbSgpO1xcbiAgICAgICAgdmFyIHN0cmluZ0J1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTtcXG4gICAgICAgIHZhciBpMiA9IDA7XFxuICAgICAgICB3aGlsZSAoaTIgPCBpKSB7XFxuICAgICAgICAgICAgaTIrKztcXG4gICAgICAgICAgICBzdHJpbmdCdWZmZXIuYXBwZW5kKFxcXCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OVxcXCIuY2hhckF0KHJhbmRvbS5uZXh0SW50KDYyKSkpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHN0cmluZ0J1ZmZlci50b1N0cmluZygpO1xcbiAgICB9XFxufVxcbmRlY29kZSgpXFxudmFyIGhlYWRlcnMgPSB7XFxuICAgICdkZXZpY2UtaWQnOiAnMmYzMDk5NWIyYWYzYzMyOTc4YzVjYzQ5YjkyNTRkMjMwJyxcXG4gICAgJ3NpZ24nOiBzaWduLFxcbiAgICAndGltZSc6IHRpbWUsXFxuICAgICdtZDUnOiBtNSxcXG4gICAgJ3ZlcnNpb24nOiAnMi4wLjEnLFxcbiAgICAnc3lzdGVtLW1vZGVsJzogJ01pIDEwIFBybycsXFxuICAgICdzeXN0ZW0tYnJhbmQnOiAnWGlhb21pJyxcXG4gICAgJ3N5c3RlbS12ZXJzaW9uJzogJzExJyxcXG4gICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcbiAgICAndXNlci1hZ2VudCc6ICdva2h0dHAvMy4xNC45J1xcbn07XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop6PmnpBcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIsICcnKTtcXG4gICAgaWYgKC9cXFxcLm1wZWd8XFxcXC5tM3U4fFxcXFwubXA0Ly50ZXN0KGlucHV0KSAmJiAhL1xcXFwuc3VveW8vLnRlc3QoaW5wdXQpICYmICEvZnRwOi8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgIGlmICgvemhpaHVpc2h1LmNvbS8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgKyAnO3tyZWZlcmVyQGh0dHBzOi8vY3QuemhpaHVpc2h1LmNvbSYmdXNlci1hZ2VudEBEYWx2aWsvMi4xLjB9I2lzVmlkZW89dHJ1ZSMnXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBpbnB1dFxcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKC9mdHA6Ly50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgbGV0IHMgPSBsb2FkSmF2YUNsYXNzKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpZGkuZGV4XFxcIiwgXFxcImNvbS5ydWxlLmppYW5waWFuXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvbGlicDJwLnNvXFxcIik7XFxuICAgICAgICBsZXQgdXJsID0gcy5KUFVybERlYyhpbnB1dCkgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiO1xcbiAgICAgICAgLy9sb2codXJsKTtcXG4gICAgICAgIHJldHVybiB1cmxcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvY29kZScpKS5ydWxlKTtcXG4gICAgICAgIGxldCBwbGF5ZGF0YSA9IHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmJhaWJhaXBlaS5jb20vdmlkZW8ucGhwJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXFxuICAgICAgICAgICAgYm9keTogJ3VybD0nICsgaW5wdXQsXFxuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbG9nKHBsYXlkYXRhKVxcbiAgICAgICAgbGV0IHBsYXl1cmwgPSBKU09OLnBhcnNlKHBsYXlkYXRhKS5kYXRhLnVybDtcXG4gICAgICAgIHJldHVybiBwbGF5dXJsICsgJyNpc1ZpZGVvPXRydWUjJ1xcbiAgICB9XFxufSk7XCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5b+r55yL5b2x6KeGQVBQXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eSMxODEwNiNpbW1lcnNpdmVUaGVtZSM7Z2V0O1VURi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDEx77yb77ybIE1pIDEwIFBybykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzg4LjAuNDMyNC4xNTIgTW9iaWxlIFNhZmFyaS81MzcuMzZ9XCIsXCJjb2xfdHlwZVwiOlwibW92aWVfMVwiLFwiZmluZF9ydWxlXCI6XCJqczpcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBsZXQgcyA9IGxvYWRKYXZhQ2xhc3MoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlkaS5kZXhcXFwiLCBcXFwiY29tLnJ1bGUuamlhbnBpYW5cXFwiKTtcXG4gICAgcy5maW5pc2goKTtcXG59KSlcXG52YXIgZCA9IFtdO1xcbnZhciB2aWRlb19pZCA9IE1ZX1VSTC5tYXRjaCgvKFxcXFxkKykvKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvZGUnKSkucnVsZSk7XFxubGV0IGh0bWwgPSByZXF1ZXN0KCdodHRwczovL2FwaS5iYWliYWlwZWkuY29tL2FwaS5waHAvVmlkZW8vZ2V0VmlkZW9JbmZvJywge1xcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxcbiAgICBib2R5OiAndmlkZW9faWQ9JyArIHBhcnNlSW50KHZpZGVvX2lkKSxcXG4gICAgbWV0aG9kOiAncG9zdCdcXG59KTtcXG5odG1sID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLnZpZGVvO1xcbi8vbG9nKGh0bWwpXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLnsbvlnovvvJpcXFwiK2h0bWwudm9kX2NsYXNzICsgXFxcIlxcXFxu6K+E5YiGOiBcXFwiICsgaHRtbC52b2Rfc2NvcmUgKyBcXFwiXFxcXG7kuIrmmKDml7bpl7Q6IFxcXCIgKyBodG1sLnZvZF95ZWFyLFxcbiAgICB1cmw6IGh0bWwucGljLFxcbiAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLFxcbiAgICBkZXNjOiBcXFwi5a+85ryU77yaXFxcIiArIGh0bWwudm9kX2RpcmVjdG9yICsgXFxcIlxcXFxu5Li75ryUOiBcXFwiICsgaHRtbC52b2RfYWN0b3IgKyBcXFwiXFxcXG5cXFwiICsgaHRtbC52b2RfcmVtYXJrcyxcXG4gICAgcGljX3VybDogaHRtbC52b2RfcGljICsgXFxcIkBSZWZlcmVyPVxcXCJcXG59KTtcXG5sZXQgY29udGVudHMgPSBodG1sLnZvZF9jb250ZW50O1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIiMwOThBQzFcXFwiPuWJp+aDheeugOS7izwvZm9udD4nLFxcbiAgICBkZXNjOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIlxcXCI+JyArIGNvbnRlbnRzLnN1YnN0cigwLCA2NSkgKyAnPC9mb250PicgKyAnPHNtYWxsPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuivpuaDhTwvZm9udD48L3NtYWxsPicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIC8vbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH0sXFxuICAgIHVybDogJCgpLnJ1bGUoKHRleHQpID0+IHtcXG4gICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0JyxcXG4gICAgICAgIH1dKVxcbiAgICB9LCBjb250ZW50cylcXG59KTtcXG5cXG5sZXQgcGxpc3QgPSBodG1sLnZvZF9wbGF5O1xcbi8vbG9nKHBsaXN0KVxcbnZhciB0YWJzID0gW107XFxudmFyIHBsYXl1cmxzID0gW107XFxucGxpc3QuZm9yRWFjaCgoaXQpID0+IHtcXG4gICAgbGV0IHRhYiA9IGl0LnBsYXllckZvcm07XFxuICAgIHRhYnMucHVzaCh0YWIpOyAgICAgICAgXFxuICAgIGxldCBwbGF5dXJsID0gaXQudXJsO1xcbiAgICBwbGF5dXJscy5wdXNoKHBsYXl1cmwpO1xcbn0pXFxuXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sYXp5JykpLnJ1bGUpO1xcbi8v5Zu+5qCH5p2l6Ieq6aG65L2s5bCP56iL5bqPXFxudmFyIGljb25fcyA9ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi8nO1xcbmlmIChnZXRNeVZhcign6aG65bqPJywgJ+ato+W6jycpID09ICfmraPluo8nKSB7XFxuICAgIHZhciBhdmF0YXIgPSBpY29uX3MgKyAn5q2j5bqPLnN2Zyc7XFxuICAgIHZhciBvcmR0ZXh0ID0gXFxcIuKYheato+W6j+KGk1xcXCI7XFxufSBlbHNlIHtcXG4gICAgdmFyIGF2YXRhciA9IGljb25fcyArICflj43luo8uc3ZnJztcXG4gICAgdmFyIG9yZHRleHQgPSBcXFwi4piG6YCG5bqP4oaRXFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNmMTNiNjZhXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG5mdW5jdGlvbiBzZXRUYWJzKHRhYnMsIHZhcmkpIHtcXG4gICAgZm9yICh2YXIgaSBpbiB0YWJzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcih2YXJpLCAnMCcpID09IGkgPyBnZXRIZWFkKHRhYnNbaV0pIDogdGFic1tpXSxcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHZhcmksIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIodmFyaSwgaSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WIh+aNouaIkOWKnyEnXFxuICAgICAgICAgICAgfSwgdmFyaSwgaSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBzZXRMaXN0cyhsaXN0cywgaW5kZXgpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiMwOThBQzFcXFwiPjxzbWFsbD7mkq3mlL7liJfooag8L3NtYWxsPicgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0PHNwYW4gc3R5bGU9XFxcImZsb2F0OnJpZ2h0XFxcIj4nICsgJzxzbWFsbD4nICsgb3JkdGV4dCArICc8L3NtYWxsPicsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChnZXRNeVZhcign6aG65bqPJywgJ+ato+W6jycpID09ICfpgIbluo8nKSB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCfpobrluo8nLCAn5q2j5bqPJyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+mhuuW6jycsICfpgIbluo8nKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNoumhuuW6j+S4ujonICsgZ2V0TXlWYXIoJ+mhuuW6jycsICfmraPluo8nKVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pXFxuXFxuICAgIHZhciBwbGxpc3QgPSBsaXN0c1tpbmRleF07ICAgIFxcbiAgICBpZiAoZ2V0TXlWYXIoJ+mhuuW6jycsICfmraPluo8nKSA9PSAn5q2j5bqPJykge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBmb3IgKHZhciBpdCBvZiBwbGxpc3QpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyBpdC5wbGF5X3VybCArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdC5wbGF5X3VybFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmsqHmnInpgInpm4blk5/vvIzkuI3kv6Hngrnlm77niYfljrvnnIvnnIvwn5GAJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcGxsaXN0ID0gcGxsaXN0LnJldmVyc2UoKTtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgZm9yICh2YXIgaXQgb2YgcGxsaXN0KSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgaXQucGxheV91cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXQucGxheV91cmxcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5rKh5pyJ6YCJ6ZuG5ZOf77yM5LiN5L+h54K55Zu+54mH5Y6755yL55yL8J+RgCcsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcbn1cXG5zZXRUYWJzKHRhYnMsIE1ZX1VSTCk7XFxuc2V0TGlzdHMocGxheXVybHMsIGdldE15VmFyKE1ZX1VSTCwgJzAnKSk7XFxubGV0IG5ld3N0aXAgPSBodG1sLnZvZF9yZW1hcmtzO1xcbnNldExhc3RDaGFwdGVyUnVsZSgnanM6JyArICQudG9TdHJpbmcoKG5ld3N0aXApID0+IHtcXG4gICAgc2V0UmVzdWx0KCfmm7TmlrDoh7M6JyArIG5ld3N0aXApO1xcbn0sIG5ld3N0aXApKTtcXG5zZXRSZXN1bHQoZCk7XCIsXCJncm91cFwiOlwi4pGg5o6o6I2QXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJyZXF1aXJlRG93bmxvYWQoJ2h0dHBzOi8vbmljazg4LmNvZGluZy5uZXQvcC9tb3ZlcmVzL2QvcmVzL2dpdC9yYXcvbWFzdGVyL2JpZGkuZGV4JywgJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlkaS5kZXgnKTtcXG5yZXF1aXJlRG93bmxvYWQoJ2h0dHBzOi8vbmljazg4LmNvZGluZy5uZXQvcC9tb3ZlcmVzL2QvcmVzL2dpdC9yYXcvbWFzdGVyL2xpYnAycC5zbycsICdoaWtlcjovL2ZpbGVzL2NhY2hlL2xpYnAycC5zbycpO1xcbmxldCBzID0gbG9hZEphdmFDbGFzcyhcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWRpLmRleFxcXCIsIFxcXCJjb20ucnVsZS5qaWFucGlhblxcXCIsIFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2xpYnAycC5zb1xcXCIpO1xcbmxldCBjYWNoZSA9IGdldFBhdGgoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGVcXFwiKS5yZXBsYWNlKFxcXCJmaWxlOi8vXFxcIiwgXFxcIlxcXCIpO1xcbnMuaW5pdChjYWNoZSk7XCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuWKqOaAgeWIhuexu1xcXCIsXFxcInBhdGhcXFwiOlxcXCJkdFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJjb25zdCBlbXB0eSA9IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG5cXFxcbmlmIChnZXRNeVZhcigndHlwZScsICcxJykgPT0gJzEnKSB7XFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0eXBlLmNvbmNhdChtY2F0ZXMpXFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHR5cGVcXFxcbiAgICB9XFxcXG59IGVsc2UgaWYgKGdldE15VmFyKCd0eXBlJywgJzEnKSA9PSAnMicpIHtcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHR5cGUuY29uY2F0KHRjYXRlcylcXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIHZhciBjYXRlZ29yaWVzID0gdHlwZVxcXFxuICAgIH1cXFxcbn0gZWxzZSBpZiAoZ2V0TXlWYXIoJ3R5cGUnLCAnMScpID09ICczJykge1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciBjYXRlZ29yaWVzID0gdHlwZS5jb25jYXQoZGNhdGVzKVxcXFxuICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0eXBlXFxcXG4gICAgfVxcXFxufSBlbHNlIGlmIChnZXRNeVZhcigndHlwZScsICcxJykgPT0gJzQnKSB7XFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0eXBlLmNvbmNhdCh6Y2F0ZXMpXFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHR5cGVcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vbG9nKGNhdGVnb3JpZXMpXFxcXG52YXIgaW5pdF9jYXRlID0gW11cXFxcblxcXFxuZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxcXG4gICAgaW5pdF9jYXRlLnB1c2goXFxcXFxcXCIwXFxcXFxcXCIpXFxcXG59XFxcXG4vL3ZhciBtZW51S2V5ID0gWyfliIbnsbsnLCAn57G75Z6LJywgJ+WcsOWMuicsICflubTku70nLCAn5o6S5bqPJ107XFxcXG5sZXQgYm9keSA9ICd0eXBlPeWIhuexuyZzb3J0PeaOkuW6jyZhcmVhPeWcsOWMuiZjbGFzcz3nsbvlnosmeWVhcj3lubTku70mcD0nICsgcGFnZTtcXFxcbmNvbnN0IGZvbGQgPSBnZXRNeVZhcihNWV9SVUxFLmdyb3VwLCBcXFxcXFxcIjBcXFxcXFxcIilcXFxcbmNvbnN0IGNhdGVfdGVtcF9qc29uID0gZ2V0TXlWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXFxcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxcXG5cXFxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGZvbGQgPT09ICcxJyA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAjMTlCODlEXFxcXFxcXCI+OiAoPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICM5MTAxMTNcXFxcXFxcIj46ICk8L3NwYW4+PC9iPicsXFxcXG4gICAgICAgIHVybDogJCgpLmxhenlSdWxlKChmb2xkKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcihNWV9SVUxFLmdyb3VwLCBmb2xkID09PSAnMScgPyAnMCcgOiAnMScpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgIH0sIGZvbGQpLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuICAgIH0pXFxcXG4gICAgLy9sb2coY2F0ZWdvcmllcy5sZW5ndGgpXFxcXG4gICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXFxcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XFxcXG4gICAgICAgICAgICBsZXQgb25lY2F0ZXMgPSBjYXRlZ29yeS50eXBlO1xcXFxuICAgICAgICAgICAgb25lY2F0ZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gaXRlbS50eXBlO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAnICsg5YiG57G76aKc6ImyICsgJ1xcXFxcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKHBhcmFtcy50eXBlWzBdLnR5cGUubGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnR5cGVbMF0udHlwZS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdGVtKSAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gcGFyYW1zLnRpdGxlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKGl0LnZhbHVlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndHlwZScsIGl0ZW0udmFsdWUpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdjbGFzcycsIDApXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdhcmVhJywgMClcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3llYXInLCAwKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydCcsIDApXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfY2F0ZSA9IFtdXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wLmZvckVhY2goKGNhdGUsIGluZGV4KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXFxcXFwiMFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH0gZWxzZSBpZiAoZm9sZCA9PT0gJzEnKSB7XFxcXG4gICAgICAgICAgICAvL2xvZyhjYXRlZ29yeSkgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIGNhdGVnb3J5LmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnNwbGl0KCcsJyk7XFxcXG4gICAgICAgICAgICAgICAgaXRlbS5mb3JFYWNoKChpdCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdFxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogJyArIOWIhuexu+minOiJsiArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudGl0bGUgPT0gJ+WFqOmDqCcgfHwgcGFyYW1zLnRpdGxlID09ICfmnIDmlrAnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAwO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmIChwYXJhbXMudGl0bGUgPT0gJ+eDremXqCcpe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gMTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAocGFyYW1zLnRpdGxlID09ICfmlrDkuIonKXtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IDI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHBhcmFtcy50aXRsZSA9PSAn6K+E5YiGJyl7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAzO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHBhcmFtcy50aXRsZTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKTtcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMuaW5kZXggPT0gJzEnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyh2YWwpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhwYXJhbXMuaW5kZXgpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdjbGFzcycsIHZhbClcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5pbmRleCA9PSAnMicpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2FyZWEnLCB2YWwpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMuaW5kZXggPT0gJzMnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd5ZWFyJywgdmFsKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyh2YWwpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0JywgdmFsKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gNCkge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+mHjee9rumAiemhuScsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIikubGF6eVJ1bGUoKGluaXRfY2F0ZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd0eXBlJywgMSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdjbGFzcycsIDApXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignYXJlYScsIDApXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigneWVhcicsIDApXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydCcsIDApXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+mHjee9ruaIkOWKn34nXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluaXRfY2F0ZSlcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuivt+axguWktOino+WvhlxcXCIsXFxcInBhdGhcXFwiOlxcXCJjb2RlXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciB0aW1lLCBtNSwgc2lnblxcXFxudmFyIGphdmFJbXBvcnQgPSBuZXcgSmF2YUltcG9ydGVyKCk7XFxcXG5qYXZhSW1wb3J0LmltcG9ydFBhY2thZ2UoXFxcXG4gICAgUGFja2FnZXMuamF2YS5sYW5nLFxcXFxuICAgIFBhY2thZ2VzLmphdmEuc2VjdXJpdHksXFxcXG4gICAgUGFja2FnZXMuamF2YS51dGlsLFxcXFxuICAgIFBhY2thZ2VzLmphdmEuaW8sXFxcXG4gICAgUGFja2FnZXMuamF2YS50ZXh0LFxcXFxuICAgIFBhY2thZ2VzLmphdmF4LmNyeXB0byxcXFxcbiAgICBQYWNrYWdlcy5qYXZheC5jcnlwdG8uc3BlY1xcXFxuKTtcXFxcbndpdGgoamF2YUltcG9ydCkge1xcXFxuICAgIGZ1bmN0aW9uIHN0clRvTWQ1QnkzMihzdHIpIHtcXFxcbiAgICAgICAgdmFyIHJlU3RyID0gbnVsbDtcXFxcbiAgICAgICAgdmFyIG1kZCA9IE1lc3NhZ2VEaWdlc3QuZ2V0SW5zdGFuY2UoXFxcXFxcXCJNRDVcXFxcXFxcIik7XFxcXG4gICAgICAgIHZhciBieXRlcyA9IG1kZC5kaWdlc3QoU3RyaW5nKHN0cikuZ2V0Qnl0ZXMoKSk7XFxcXG4gICAgICAgIHZhciBzdHJpbmdCdWZmZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xcXFxuICAgICAgICBieXRlcy5mb3JFYWNoKGEgPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGJ0ID0gYSAmIDB4ZmY7XFxcXG4gICAgICAgICAgICBpZiAoYnQgPCAxNikge1xcXFxuICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlci5hcHBlbmQoXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgc3RyaW5nQnVmZmVyLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKGJ0KSk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICByZVN0ciA9IHN0cmluZ0J1ZmZlci50b1N0cmluZygpO1xcXFxuICAgICAgICByZXR1cm4gcmVTdHI7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gZGVjb2RlKCkge1xcXFxuICAgICAgICB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKTtcXFxcbiAgICAgICAgbTUgPSByYW5kb20oMzIpO1xcXFxuICAgICAgICBzaWduID0gc3RyVG9NZDVCeTMyKFxcXFxcXFwia2FpeGluNjY2X1xcXFxcXFwiICsgdGltZSArIFxcXFxcXFwiX1xcXFxcXFwiICttNSk7XFxcXG4gICAgICAgIC8vbG9nKHNpZ24rXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gcmFuZG9tKGkpIHtcXFxcbiAgICAgICAgdmFyIHJhbmRvbSA9IG5ldyBSYW5kb20oKTtcXFxcbiAgICAgICAgdmFyIHN0cmluZ0J1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTtcXFxcbiAgICAgICAgdmFyIGkyID0gMDtcXFxcbiAgICAgICAgd2hpbGUgKGkyIDwgaSkge1xcXFxuICAgICAgICAgICAgaTIrKztcXFxcbiAgICAgICAgICAgIHN0cmluZ0J1ZmZlci5hcHBlbmQoXFxcXFxcXCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OVxcXFxcXFwiLmNoYXJBdChyYW5kb20ubmV4dEludCg2MikpKTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gc3RyaW5nQnVmZmVyLnRvU3RyaW5nKCk7XFxcXG4gICAgfVxcXFxufVxcXFxuZGVjb2RlKClcXFxcbnZhciBoZWFkZXJzID0ge1xcXFxuICAgICdkZXZpY2UtaWQnOiAnMmYzMDk5NWIyYWYzYzMyOTc4YzVjYzQ5YjkyNTRkMjMwJyxcXFxcbiAgICAnc2lnbic6IHNpZ24sXFxcXG4gICAgJ3RpbWUnOiB0aW1lLFxcXFxuICAgICdtZDUnOiBtNSxcXFxcbiAgICAndmVyc2lvbic6ICcyLjAuMScsXFxcXG4gICAgJ3N5c3RlbS1tb2RlbCc6ICdNaSAxMCBQcm8nLFxcXFxuICAgICdzeXN0ZW0tYnJhbmQnOiAnWGlhb21pJyxcXFxcbiAgICAnc3lzdGVtLXZlcnNpb24nOiAnMTEnLFxcXFxuICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXFxcbiAgICAndXNlci1hZ2VudCc6ICdva2h0dHAvMy4xNC45J1xcXFxufTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLop6PmnpBcXFwiLFxcXCJwYXRoXFxcIjpcXFwibGF6eVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXFxcXFxcXCJoaWtlcjovL2VtcHR5IyNcXFxcXFxcIiwgJycpO1xcXFxuICAgIGlmICgvXFxcXFxcXFwubXBlZ3xcXFxcXFxcXC5tM3U4fFxcXFxcXFxcLm1wNC8udGVzdChpbnB1dCkgJiYgIS9cXFxcXFxcXC5zdW95by8udGVzdChpbnB1dCkgJiYgIS9mdHA6Ly50ZXN0KGlucHV0KSkge1xcXFxuICAgICAgICBpZiAoL3poaWh1aXNodS5jb20vLnRlc3QoaW5wdXQpKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgKyAnO3tyZWZlcmVyQGh0dHBzOi8vY3QuemhpaHVpc2h1LmNvbSYmdXNlci1hZ2VudEBEYWx2aWsvMi4xLjB9I2lzVmlkZW89dHJ1ZSMnXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gaW5wdXRcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSBpZiAoL2Z0cDovLnRlc3QoaW5wdXQpKSB7XFxcXG4gICAgICAgIGxldCBzID0gbG9hZEphdmFDbGFzcyhcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlkaS5kZXhcXFxcXFxcIiwgXFxcXFxcXCJjb20ucnVsZS5qaWFucGlhblxcXFxcXFwiLCBcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvbGlicDJwLnNvXFxcXFxcXCIpO1xcXFxuICAgICAgICBsZXQgdXJsID0gcy5KUFVybERlYyhpbnB1dCkgKyBcXFxcXFxcIiNpc1ZpZGVvPXRydWUjXFxcXFxcXCI7XFxcXG4gICAgICAgIC8vbG9nKHVybCk7XFxcXG4gICAgICAgIHJldHVybiB1cmxcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvZGUnKSkucnVsZSk7XFxcXG4gICAgICAgIGxldCBwbGF5ZGF0YSA9IHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmJhaWJhaXBlaS5jb20vdmlkZW8ucGhwJywge1xcXFxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcXFxcbiAgICAgICAgICAgIGJvZHk6ICd1cmw9JyArIGlucHV0LFxcXFxuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGxvZyhwbGF5ZGF0YSlcXFxcbiAgICAgICAgbGV0IHBsYXl1cmwgPSBKU09OLnBhcnNlKHBsYXlkYXRhKS5kYXRhLnVybDtcXFxcbiAgICAgICAgcmV0dXJuIHBsYXl1cmwgKyAnI2lzVmlkZW89dHJ1ZSMnXFxcXG4gICAgfVxcXFxufSk7XFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cHM6Ly9pbWc5LmRvdWJhbmlvLmNvbS92aWV3L3Bob3RvL3NfcmF0aW9fcG9zdGVyL3B1YmxpYy9wMjg3MjAwNzM3NC5qcGdAUmVmZXJlcj0iLCJ0aXRsZSI6IuaWsOWxheS5i+e6piJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement