{"version":3,"sources":["unitynews.js"],"sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 22);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports) {\n\n/*\r\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\r\n * Digest Algorithm, as defined in RFC 1321.\r\n * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.\r\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r\n * Distributed under the BSD License\r\n * See http://pajhome.org.uk/crypt/md5 for more info.\r\n */\r\n\r\n/*\r\n * Configurable variables. You may need to tweak these to be compatible with\r\n * the server-side, but the defaults work in most cases.\r\n */\r\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\r\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\r\nvar chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */\r\n\r\n/*\r\n * These are the functions you'll usually want to call\r\n * They take string arguments and return either hex or base-64 encoded strings\r\n */\r\nfunction hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}\r\nfunction b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}\r\nfunction str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}\r\nfunction hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }\r\nfunction b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }\r\nfunction str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }\r\n\r\n/*\r\n * Perform a simple self-test to see if the VM is working\r\n */\r\nfunction md5_vm_test()\r\n{\r\n return hex_md5(\"abc\") == \"900150983cd24fb0d6963f7d28e17f72\";\r\n}\r\n\r\n/*\r\n * Calculate the MD5 of an array of little-endian words, and a bit length\r\n */\r\nfunction core_md5(x, len)\r\n{\r\n /* append padding */\r\n x[len >> 5] |= 0x80 << ((len) % 32);\r\n x[(((len + 64) >>> 9) << 4) + 14] = len;\r\n\r\n var a = 1732584193;\r\n var b = -271733879;\r\n var c = -1732584194;\r\n var d = 271733878;\r\n\r\n for(var i = 0; i < x.length; i += 16)\r\n {\r\n var olda = a;\r\n var oldb = b;\r\n var oldc = c;\r\n var oldd = d;\r\n\r\n a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);\r\n d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);\r\n c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);\r\n b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);\r\n a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);\r\n d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);\r\n c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);\r\n b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);\r\n a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);\r\n d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);\r\n c = md5_ff(c, d, a, b, x[i+10], 17, -42063);\r\n b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);\r\n a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);\r\n d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);\r\n c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);\r\n b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);\r\n\r\n a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);\r\n d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);\r\n c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);\r\n b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);\r\n a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);\r\n d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);\r\n c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);\r\n b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);\r\n a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);\r\n d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);\r\n c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);\r\n b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);\r\n a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);\r\n d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);\r\n c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);\r\n b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);\r\n\r\n a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);\r\n d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);\r\n c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);\r\n b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);\r\n a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\r\n d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);\r\n c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);\r\n b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);\r\n a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);\r\n d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);\r\n c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);\r\n b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);\r\n a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);\r\n d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);\r\n c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);\r\n b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);\r\n\r\n a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);\r\n d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);\r\n c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);\r\n b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);\r\n a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);\r\n d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);\r\n c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);\r\n b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);\r\n a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);\r\n d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);\r\n c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);\r\n b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);\r\n a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);\r\n d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);\r\n c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);\r\n b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);\r\n\r\n a = safe_add(a, olda);\r\n b = safe_add(b, oldb);\r\n c = safe_add(c, oldc);\r\n d = safe_add(d, oldd);\r\n }\r\n return Array(a, b, c, d);\r\n\r\n}\r\n\r\n/*\r\n * These functions implement the four basic operations the algorithm uses.\r\n */\r\nfunction md5_cmn(q, a, b, x, s, t)\r\n{\r\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);\r\n}\r\nfunction md5_ff(a, b, c, d, x, s, t)\r\n{\r\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\r\n}\r\nfunction md5_gg(a, b, c, d, x, s, t)\r\n{\r\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\r\n}\r\nfunction md5_hh(a, b, c, d, x, s, t)\r\n{\r\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\r\n}\r\nfunction md5_ii(a, b, c, d, x, s, t)\r\n{\r\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\r\n}\r\n\r\n/*\r\n * Calculate the HMAC-MD5, of a key and some data\r\n */\r\nfunction core_hmac_md5(key, data)\r\n{\r\n var bkey = str2binl(key);\r\n if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);\r\n\r\n var ipad = Array(16), opad = Array(16);\r\n for(var i = 0; i < 16; i++)\r\n {\r\n ipad[i] = bkey[i] ^ 0x36363636;\r\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\r\n }\r\n\r\n var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);\r\n return core_md5(opad.concat(hash), 512 + 128);\r\n}\r\n\r\n/*\r\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\r\n * to work around bugs in some JS interpreters.\r\n */\r\nfunction safe_add(x, y)\r\n{\r\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r\n return (msw << 16) | (lsw & 0xFFFF);\r\n}\r\n\r\n/*\r\n * Bitwise rotate a 32-bit number to the left.\r\n */\r\nfunction bit_rol(num, cnt)\r\n{\r\n return (num << cnt) | (num >>> (32 - cnt));\r\n}\r\n\r\n/*\r\n * Convert a string to an array of little-endian words\r\n * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.\r\n */\r\nfunction str2binl(str)\r\n{\r\n var bin = Array();\r\n var mask = (1 << chrsz) - 1;\r\n for(var i = 0; i < str.length * chrsz; i += chrsz)\r\n bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);\r\n return bin;\r\n}\r\n\r\n/*\r\n * Convert an array of little-endian words to a string\r\n */\r\nfunction binl2str(bin)\r\n{\r\n var str = \"\";\r\n var mask = (1 << chrsz) - 1;\r\n for(var i = 0; i < bin.length * 32; i += chrsz)\r\n str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);\r\n return str;\r\n}\r\n\r\n/*\r\n * Convert an array of little-endian words to a hex string.\r\n */\r\nfunction binl2hex(binarray)\r\n{\r\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\r\n var str = \"\";\r\n for(var i = 0; i < binarray.length * 4; i++)\r\n {\r\n str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +\r\n hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);\r\n }\r\n return str;\r\n}\r\n\r\n/*\r\n * Convert an array of little-endian words to a base-64 string\r\n */\r\nfunction binl2b64(binarray)\r\n{\r\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n var str = \"\";\r\n for(var i = 0; i < binarray.length * 4; i += 3)\r\n {\r\n var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)\r\n | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )\r\n | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);\r\n for(var j = 0; j < 4; j++)\r\n {\r\n if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;\r\n else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);\r\n }\r\n }\r\n return str;\r\n}\r\n\r\nmodule.exports = hex_md5\n\n/***/ }),\n\n/***/ 1:\n/***/ (function(module, exports) {\n\nmodule.exports = function(){\r\n !function EM_Vote($) {\r\n //格式化投票数\r\n function gshVoteNum(numb) {\r\n if (numb < 10000) {\r\n return numb;\r\n } else {\r\n return parseFloat(numb / 10000).toFixed(2) + \"万\";\r\n }\r\n }\r\n //投票比例\r\n function VoteZhanBi(sumVote, curVote) {\r\n if (sumVote == 0 || curVote == 0) {\r\n return 0;\r\n }\r\n return parseFloat(curVote / sumVote * 100).toFixed(2);\r\n }\r\n //占比条宽度计算\r\n function VoteZhanBiWidth(zhanBi,maxWidth) {\r\n if (zhanBi == 0 || maxWidth == 0) {\r\n return 0;\r\n }\r\n \r\n return parseFloat(zhanBi / 100 * maxWidth).toFixed(2);\r\n }\r\n // 获取cookie\r\n function getVoteCookie(key) {\r\n var cookieArray = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieArray.length; i++) {\r\n var arr = cookieArray[i].split(\"=\");\r\n if (arr[0].replace(\" \", \"\") == key)\r\n return unescape(arr[1]);\r\n }\r\n return \"\";\r\n }\r\n // 设置cookie\r\n function setVoteCookie(key, value, expires) {\r\n var date = new Date();\r\n var ms = expires * 60 * 60 * 1000;//参数传进来的单位是小时\r\n date.setTime(date.getTime() + ms);\r\n var str = key + \"=\" + escape(value);\r\n str += \"; expires=\" + date.toUTCString() + \"; domain=\" + location.host + \";\";\r\n document.cookie = str;\r\n }\r\n \r\n var _isLockVote = [];//投票按钮是否处于锁定状态,放置连续点击投票按钮\r\n $(\"body\").on(\"click\", \".btn_vote\", function () {//投票点击事件\r\n var _this = $(this);\r\n\r\n var _vote_id = _this.attr(\"vote_id\");\r\n var _vote_title = _this.attr(\"vote_title\");\r\n if (_vote_id == \"\") {\r\n return;\r\n }\r\n var _chooseIds = \"\";//Vi_Id单个的选项id;Vi_Vm_Id一道题1个id;选项一个id;Vi_Vg_Id一个投票一个id\r\n //Vi_Id单个的选项id;Vi_Vm_Id一道题1个id;选项一个id;Vi_Vg_Id一个投票一个id\r\n\r\n\r\n var _timu = [];//当前投票总的题目\r\n $('.vote_' + _vote_id + \" .votetype_li\").each(function () {\r\n var vivmid = $(this).attr(\"vivmid\");\r\n if (_timu.indexOf(vivmid) < 0) {\r\n _timu.push(vivmid);\r\n }\r\n });\r\n\r\n var _cookieValue = \"\";\r\n $('.vote_' + _vote_id + ' .votetype_radio input[type=\"radio\"]:checked').each(function () {//遍历每一个名字为interest的复选框,其中选中的执行函数 \r\n var _viid = $(this).attr(\"viid\");\r\n var _vivmid = $(this).attr(\"vivmid\");\r\n var _vivgid = $(this).attr(\"vivgid\");\r\n _cookieValue += _viid + \"_\" + _vivmid + \"_\" + _vivgid + \",\";\r\n _chooseIds += _viid + \",\";\r\n\r\n var _xb = _timu.indexOf(_vivmid);\r\n if (_xb >= 0) {\r\n _timu.splice(_xb, 1);\r\n }\r\n\r\n });\r\n\r\n $('.vote_' + _vote_id + ' .votetype_checkbox input[type=\"checkbox\"]:checked').each(function () {//遍历每一个名字为interest的复选框,其中选中的执行函数\r\n var _viid = $(this).attr(\"viid\");\r\n var _vivmid = $(this).attr(\"vivmid\");\r\n var _vivgid = $(this).attr(\"vivgid\");\r\n _cookieValue += _viid + \"_\" + _vivmid + \"_\" + _vivgid + \",\";\r\n _chooseIds += _viid + \",\";\r\n\r\n var _xb = _timu.indexOf(_vivmid);\r\n if (_xb >= 0) {\r\n _timu.splice(_xb, 1);\r\n }\r\n\r\n });\r\n //console.log(_cookieValue);\r\n _chooseIds = _chooseIds.trim(',');\r\n\r\n if (_chooseIds == \"\") {\r\n alert(\"请先选择答案\");\r\n return;\r\n }\r\n\r\n if (_timu.length > 0) {\r\n alert(\"您还有题目没有做完\");\r\n return;\r\n }\r\n\r\n if (_isLockVote.indexOf(_vote_id) >= 0) {\r\n return;\r\n }\r\n _isLockVote.push(_vote_id);\r\n\r\n _this.addClass(\"btn_disabled\");\r\n\r\n setVoteCookie(\"vote_\" + _vote_id, _cookieValue, 24);//有效期24小时\r\n\r\n $.ajax({\r\n url: \"//cmsdataapi.eastmoney.com/api/Vote/VoteOperate?groupId=\" + _vote_id + \"&chooseIds=\" + _chooseIds + \"&cb=?\",\r\n type: \"get\",\r\n dataType: \"jsonp\",\r\n data: {},\r\n success: function (json) {\r\n lookVoteResult(_this);//去查看投票结果\r\n }\r\n });\r\n\r\n });\r\n\r\n $(\"body\").on(\"change\", '.votetype_checkbox input[type=\"checkbox\"]', function () {\r\n var _this = $(this);\r\n var _vid = _this.attr(\"id\");\r\n var _vname = _this.attr(\"name\");\r\n var _maxcheck = _this.attr(\"maxcheck\");\r\n var _checkLength = $('.votetype_checkbox input[name=\"' + _vname + '\"]:checked').length;\r\n \r\n if (_checkLength > _maxcheck) {\r\n alert(\"最多只能选择【\" + _maxcheck + \"】个选项\");\r\n _this.attr(\"checked\", false);\r\n }\r\n });\r\n function lookVoteResult(_this) {//查看投票结果\r\n var _vote_id = _this.attr(\"vote_id\");\r\n var _vote_title = _this.attr(\"vote_title\");\r\n\r\n $.ajax({\r\n url: \"//cmsdataapi.eastmoney.com/api/Vote/GetVoteGroupById?Id=\" + _vote_id + \"&cb=?\",\r\n type: \"get\",\r\n dataType: \"jsonp\",\r\n data: {},\r\n success: function (json) {\r\n var vote_item = getVoteCookie(\"vote_\" + _vote_id);\r\n _this.parents('.em_vote').html(initResultHTML(json, _vote_title, vote_item));\r\n _this.parents('.em_vote').show();\r\n }\r\n });\r\n }\r\n\r\n $(\"body\").on(\"click\", \".btn_lookvote\", function () {//查看投票结果点击事件\r\n var _vote_id = $(this).attr(\"vote_id\");\r\n if (location.host == \"pcarticle.eastmoney.com\") {\r\n // window.open(\"http://poll.eastmoney.com/Html/Result\" + _vote_id + \".html\");\r\n window.external.OnClickEvent(\"return(false && [].push('#type=04&&url=https://poll.eastmoney.com/Html/Result\" + _vote_id + \".html'));\")\r\n } else {\r\n window.open(\"https://poll.eastmoney.com/Html/Result\" + _vote_id + \".html\");\r\n }\r\n //lookVoteResult($(this));//去查看投票结果\r\n });\r\n\r\n $(\"body\").on(\"click\", \".btn_govote\", function () {//去投票点击事件\r\n var _vote_id = $(this).attr(\"vote_id\");\r\n initVote(_vote_id);\r\n });\r\n \r\n function initResultHTML(json, _vote_title, vote_item) {\r\n var _html = ''\r\n _html += '
最新价:' + price + '
涨跌额:' + zde + '
涨跌幅:' + zdf + '
成交量:' + cjl + '
成交额:' + cje + '
换手率:' + hsl + '
';\r\n imgParent.appendChild(chartRightDiv);\r\n chartRightDiv.setAttribute(\"style\", \"margin-top:0px;\");\r\n\r\n var h = '市盈率:' + syl + '
总市值:' + (zsz == \"-\" ? \"-\" : _this.gshNum(zsz)) + '
';\r\n jQuery(\"#\" + chartRightDiv.id).append(h);\r\n } else {\r\n chartRightDiv.innerHTML = '最新价:' + price + '
涨跌额:' + zde + '
涨跌幅:' + zdf + '
成交量:' + cjl + '
成交额:' + cje + '
换手率:' + hsl + '
';\r\n imgParent.appendChild(chartRightDiv);\r\n chartRightDiv.setAttribute(\"style\", \"margin-top:20px;\");\r\n tipsImageRemark.setAttribute(\"style\", \"padding-left:20px;\");\r\n }\r\n\r\n var chartNavDiv = $C(\"div\");\r\n chartNavDiv.className = \"chart-nav clear\";\r\n if (__Market.Type != \"zs\") {\r\n chartNavDiv.innerHTML = '查询该股行情 实时资金流向 深度数据揭秘 进入' + stockName + '吧 ' + stockName + '资金流';\r\n } else {\r\n chartNavDiv.innerHTML = '' + stockName + '行情 领涨个股 大盘资金流向 7*24小时快讯 进入' + stockName + '吧';\r\n }\r\n imgParent.appendChild(chartNavDiv);\r\n\r\n if (__Market.Type != \"zs\") {\r\n _this.XiangGuanGuPiao(secid, imgParent);//相关股票和相关板块\r\n } else {\r\n _this.ZhiShuLingZhangHangYe(imgParent);//领涨行业\r\n }\r\n },\r\n initialize: function (className) {\r\n if (className != \"\" || className != \"undefined\") {\r\n var tipsImageRemark = this.getElementsByClassName(\"ContentBody\", className);\r\n var href = [];\r\n var src = [];\r\n var i = 0;\r\n var BodyEndObj = $(\"ContentBody\");\r\n var BodyNextNode = BodyEndObj.nextSibling;\r\n while (BodyNextNode.nodeType != 1) {\r\n BodyNextNode = BodyNextNode.nextSibling;\r\n }\r\n\r\n if (tipsImageRemark != undefined && tipsImageRemark != null && tipsImageRemark != \"\") {\r\n for (var i = 0; i < tipsImageRemark.length; i++) {\r\n var imgParent = tipsImageRemark[i];\r\n if (imgParent.className.indexOf(\"DisableOther\") >= 0) {\r\n continue;\r\n }\r\n var imgnodes = imgParent.getElementsByTagName(\"img\");\r\n if (imgnodes.length > 0) {\r\n //data-code=\"K {股票代码}|{行情服务部市场号}|{老的市场(网站)}\" data-code2=\"K {股票代码}|{行情服务部市场号}|{市场细分类(具体含义完了,魏东海要的)}|\r\n var _datacode2 = tipsImageRemark[i].getAttribute(\"data-code2\");\r\n if (_datacode2 != null) {\r\n var _datacode2Item = _datacode2.split('|');\r\n\r\n href[i] = \"http://quote.eastmoney.com/unify/r/\" + _datacode2Item[1] + \".\" + _datacode2Item[0];\r\n imgParent.href = href[i];\r\n\r\n var _KR = imgnodes[0].getAttribute(\"data-code2\").toLowerCase().substring(0, 1);\r\n src[i] = imgnodes[0].src;\r\n if (_KR == \"k\") {\r\n src[i] = src[i].replace(\"imageType=k\", \"imageType=knews\");\r\n }\r\n imgnodes[0].src = src[i];\r\n\r\n if ((_datacode2Item[1] == \"0\" || _datacode2Item[1] == \"1\") && (_datacode2Item[2] == \"5\" || _datacode2Item[2] == \"6\" || _datacode2Item[2] == \"7\" || _datacode2Item[2] == \"1\" || _datacode2Item[2] == \"2\" || _datacode2Item[2] == \"3\" || _datacode2Item[2] == \"13\" || _datacode2Item[2] == \"80\" || _datacode2Item[2] == \"23\")) {\r\n this.initImg(_datacode2Item[0], _datacode2Item[1], tipsImageRemark[i])\r\n }\r\n }\r\n \r\n imgnodes[0].width = \"530\";\r\n imgnodes[0].height = \"276\";\r\n }\r\n }\r\n }\r\n }\r\n var bkTipAreas = this.getElementsByClassName(\"ContentBody\", \"Em_NewsBk\");\r\n for (var i = 0; i < bkTipAreas.length; i++) {\r\n bkTipAreas[i].innerHTML = '';\r\n this.ioOverall(\"http://hq2data.eastmoney.com/bk/data/bkant.js\", \"\", \"BKCache\",\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t if (data && data.Top && data.Top.length > 0) {\r\n\t\t\t\t var lzg = data.Top[0];\r\n\t\t\t\t var showStr = \"\";\r\n\t\t\t\t var tempData = \"\";\r\n\t\t\t\t var _color = \"\";\r\n\t\t\t\t for (var lz in lzg) {\r\n\t\t\t\t tempData = lzg[lz].split(\",\");\r\n\t\t\t\t _color = parseFloat(tempData[1]) == 0 ? \"\" : parseFloat(tempData[1]) > 0 ? \"red\" : \"green\";\r\n\t\t\t\t showStr += \"\" + tempData[0] + \"(\" + tempData[1] + \")\"\r\n\t\t\t\t }\r\n\t\t\t\t $(\"bkList_lzbk\").innerHTML = showStr;\r\n\t\t\t\t }\r\n\t\t\t\t});\r\n bkTipAreas[i].style.display = \"\";\r\n break\r\n }\r\n },\r\n initImg: function (_stockcode, _stockmarket, tipsImageRemark) {\r\n var _this = this;\r\n var secid = _stockmarket + \".\" + _stockcode;\r\n //行情图一圈\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?fltt=2&fields=f57,f58,f107,f43,f168,f169,f170,f47,f48,f162,f116&secid=\" + secid + \"&ut=13697a1cc677c8bfa9a496437bfef419&cb=?\",\r\n dataType: \"jsonp\",\r\n success: function (json) {\r\n if (json && json.rc == \"0\") {\r\n _this.NewsImg(secid, json, tipsImageRemark);\r\n }\r\n }\r\n });\r\n },\r\n ioOverall: function (src, charset, dataVar, callback, nodeObj) {\r\n var script = $C(\"script\");\r\n script.type = \"text/javascript\";\r\n script.charset = (charset == \"\") ? \"GB2312\" : charset;\r\n script.src = src;\r\n script._0j = this;\r\n script[document.all ? \"onreadystatechange\" : \"onload\"] = function () {\r\n if (document.all && this.readyState != \"loaded\" && this.readyState != \"complete\") {\r\n return\r\n }\r\n this[document.all ? \"onreadystatechange\" : \"onload\"] = null;\r\n if (callback) {\r\n if (nodeObj) callback(eval(dataVar), nodeObj);\r\n else callback(eval(dataVar))\r\n }\r\n this.parentNode.removeChild(this)\r\n };\r\n document.getElementsByTagName(\"head\").item(0).appendChild(script)\r\n }\r\n };\r\n try {\r\n //调用图集\r\n var ensit = new newsimg(\"EmImageRemark\");\r\n } catch (error) {\r\n \r\n }\r\n\r\n var dsq_updateEmImageRemark = setInterval(updateEmImageRemark,100);\r\n setTimeout(function(){\r\n clearInterval(dsq_updateEmImageRemark)\r\n },20000)\r\n}\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(module, exports) {\n\n!function(t){function e(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t[\"default\"]}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=8)}({3:function(t,e){!function(e){function n(t){var n=this;n._option=e.extend(!0,{id:\"body\",selectId:\"selectTips\",aline:!0,range:[1,20]},t),n.$container=e(n._option.id),n.init()}n.prototype.init=function(){var t=this;t.hasAppend=!1,t.elementLoad(),t.mouseup()},n.prototype.elementLoad=function(){var t=this;t.tipsHtml=''+_newsAdTop.eq(_xb).html()+'
';\r\n if(__KHLJ_Top.indexOf(\"_blank\") < 0) {\r\n __KHLJ_Top = __KHLJ_Top.replace(\" 0) { //如果有行情图\r\n try {\r\n $(\"#ContentBody .EmImageRemark\").eq(_HQLength - 1).parent('p').after(__KHLJ_Top); //有点绕,需求就是这样,【在最后一张行情图的父级p标签同级的后面加入次推广】\r\n } catch(e) {}\r\n } else if ($(\"#ContentBody .b-review\").length > 0) { //没有行情图,但是有摘要\r\n $(\"#ContentBody .b-review\").after(__KHLJ_Top); //插在此元素之后(同级)\r\n } else if ($(\"#ContentBody .yuanbiaoti\").length > 0) { //没有行情图,没有有摘要,但是有原标题\r\n $(\"#ContentBody .yuanbiaoti\").after(__KHLJ_Top); //插在此元素之后(同级)\r\n } else { //没有行情图,没有摘要,插在文章最前面\r\n $(\"#ContentBody\").prepend(__KHLJ_Top); //内部最前面加入此元素\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n \r\n }\r\n\r\n try {\r\n if(_b1517.length > 0){\r\n var __KHWZ_Bottom = \"\";\r\n var __KHLJ_Bottom = \"\";\r\n var _newsAdBottom = $('li',_b1517);\r\n if(_newsAdBottom.length > 1 && _newsAdBottom.eq(0).text() == \"1\"){\r\n var _xb = Math.floor(Math.random()*(_newsAdBottom.length - 1))+1;\r\n __KHWZ_Bottom = _newsAdBottom.eq(_xb).text();\r\n __KHLJ_Bottom = ''+_newsAdBottom.eq(_xb).html()+'
';\r\n if(__KHLJ_Bottom.indexOf(\"_blank\") < 0) {\r\n __KHLJ_Bottom = __KHLJ_Bottom.replace(\" 1000) { //大于1000字,才显示下面的文字链\r\n if ($(\"#ContentBody p.em_media\").length > 0) { //底部有文章来源\r\n $(\"#ContentBody p.em_media\").before(__KHLJ_Bottom); //插在此元素之前(同级)\r\n } else if ($(\"#ContentBody p.res-edit\").length > 0) { //有责任编辑\r\n $(\"#ContentBody p.res-edit\").before(__KHLJ_Bottom); //插在此元素之前(同级)\r\n } else { //没有底部来源,也没有责任编辑\r\n $(\"#ContentBody\").append(__KHLJ_Bottom); //内部末尾加入此元素\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n \r\n }\r\n \r\n try {\r\n $(\".jubao\").attr(\"href\", $(\".jubao\").attr(\"href\") + \"&newsurl=\" + encodeURIComponent(\"https://finance.eastmoney.com/a/\"+_NewsId+\".html\"));\r\n \r\n //资讯正文支持点击查看原图\r\n $(\"#ContentBody img\").wrap(function() {\r\n if (this.hasAttribute(\"orginial_src\")) {\r\n return '';\r\n }\r\n\r\n if ($(this).hasClass(\"em_handle_adv_close\")) {\r\n console.log();\r\n // return '';\r\n }\r\n return '';\r\n });\r\n\r\n $(\"#ContentBody img.em_handle_adv_close\").each(function() {\r\n $(this.parentNode).css({\r\n position: \"relative\",\r\n display: \"inline-block\"\r\n });\r\n $(this.parentNode).append('使用微信扫一扫
分享文章到您的朋友圈
' + lk_des + '
');\r\n }\r\n jQuery(this).replaceWith('');\r\n });\r\n\r\n jQuery(\".middlevideobg\").each(function () {\r\n var _this = jQuery(this);\r\n var _dataid = _this.data(\"id\");\r\n var _datavalue = _this.data(\"value\");\r\n if (typeof _datavalue !== typeof undefined && _datavalue !== false && _datavalue != \"\") {\r\n var _datavideoitem = _datavalue.split('#');\r\n if (_datavideoitem.length == 2) {\r\n initVideo(_dataid, 670, 425, _datavideoitem[0], _datavideoitem[1], false, \"\");\r\n } else {\r\n initVideo(_dataid, 670, 425, 99, _datavideoitem[0], false, \"\");\r\n }\r\n }\r\n });\r\n\r\n jQuery(window).scroll(function () {\r\n VideoSmall();\r\n });\r\n}\r\n\r\nmodule.exports = initLangKeVideo;\n\n/***/ })\n\n/******/ });\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgYTdhZWJiOWZhNjhmYjMzY2RkMjg/MzQ0MiIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL21kNS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL3ZvdGUvdW5pdHl2b3RlLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbmV3c2ltZy9uZXdzLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvcGR0aXBzL2luZGV4LmpzIiwid2VicGFjazovLy8uL2pzL3VuaXR5bmV3cy5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xhbmdrZS91bml0aW5ld3MyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0EsMkNBQTJDLGNBQWM7O1FBRXpEO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsS0FBSztRQUNMO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7O1FBRUE7UUFDQTs7Ozs7Ozs7QUNoRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzQ0FBc0M7QUFDdEQsaUJBQWlCO0FBQ2pCLGdCQUFnQix5Q0FBeUM7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsa0NBQWtDLDJDQUEyQztBQUM3RSxrQ0FBa0MsMkNBQTJDO0FBQzdFLGtDQUFrQywyQ0FBMkM7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHdCQUF3QjtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUJBQXFCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix5QkFBeUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlCQUF5QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixPQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCOzs7Ozs7O0FDalFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQsMkJBQTJCLHdCQUF3QjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBLHFCQUFxQixvQ0FBb0MsOEJBQThCO0FBQ3ZGO0FBQ0E7O0FBRUEsNkJBQTZCO0FBQzdCLHdEQUF3RDtBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDOzs7QUFHQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQSxzR0FBc0c7QUFDdEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhOztBQUViLDRHQUE0RztBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGdFQUFnRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQSxhQUFhOztBQUViLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHdDQUF3QztBQUN4QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUEsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLG9KQUFvSjtBQUNwSixhQUFhO0FBQ2I7QUFDQTtBQUNBLHNDQUFzQztBQUN0QyxTQUFTOztBQUVULDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsMkJBQTJCLDhCQUE4QjtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDO0FBQ3ZDO0FBQ0EsK0JBQStCLDJCQUEyQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLDJCQUEyQjtBQUMxRDtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLDRFQUE0RTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJJQUEySTtBQUMzSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMklBQTJJO0FBQzNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLCtCQUErQiw4QkFBOEI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLDJCQUEyQjtBQUM5RCxzREFBc0Q7QUFDdEQsaURBQWlEO0FBQ2pELHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtWUFBbVk7QUFDblk7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMLEM7Ozs7Ozs7QUN2VUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHdCQUF3QjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHNCQUFzQjtBQUM3RCwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pELG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsaURBQWlEO0FBQ2pELCtDQUErQztBQUMvQztBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNOQUFzTix3REFBd0Q7QUFDOVE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLCtCQUErQixPQUFPO0FBQzdFO0FBQ0EsbURBQW1EO0FBQ25ELHFEQUFxRDtBQUNyRCxtREFBbUQ7QUFDbkQsaURBQWlEO0FBQ2pEO0FBQ0EsaURBQWlEO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw4TkFBOE47O0FBRTlOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsK0JBQStCLE9BQU87QUFDN0U7QUFDQSxtREFBbUQ7QUFDbkQscURBQXFEO0FBQ3JELG1EQUFtRDtBQUNuRCxpREFBaUQ7QUFDakQ7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsa0RBQWtEO0FBQ2xELGtEQUFrRDtBQUNsRCxvREFBb0Q7QUFDcEQsa0RBQWtEO0FBQ2xELGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3Qiw0TEFBNEw7QUFDNUw7QUFDQSwyRkFBMkY7QUFDM0YsaUdBQWlHO0FBQ2pHLGlHQUFpRztBQUNqRztBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSx5RkFBeUY7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsdUZBQXVGO0FBQ3ZGLCtFQUErRTtBQUMvRSwwQ0FBMEM7QUFDMUMsMENBQTBDO0FBQzFDLDZDQUE2QztBQUM3QyxxQ0FBcUM7QUFDckM7QUFDQSxxQ0FBcUM7QUFDckMscUNBQXFDO0FBQ3JDO0FBQ0EscUNBQXFDO0FBQ3JDLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsaUJBQWlCLGVBQWUsZUFBZSwwQkFBMEIsNk1BQTZNO0FBQzlWLDZEQUE2RCxnQkFBZ0IsbUJBQW1CLGlCQUFpQixlQUFlLGVBQWUsMEJBQTBCLHFKQUFxSjtBQUM5VCw2REFBNkQsZ0JBQWdCLG1CQUFtQixpQkFBaUIsZUFBZSxlQUFlLDBCQUEwQixnSkFBZ0o7QUFDelQsNkRBQTZELGdCQUFnQixtQkFBbUIsaUJBQWlCLGVBQWUsZUFBZSwwQkFBMEIsdUpBQXVKO0FBQ2hVLDZEQUE2RCxnQkFBZ0IsbUJBQW1CLGlCQUFpQixlQUFlLGVBQWUsMEJBQTBCLHlKQUF5SjtBQUNsVSw2REFBNkQsbUJBQW1CLGlCQUFpQixlQUFlLHNCQUFzQixhQUFhLDBCQUEwQiw2TUFBNk07QUFDMVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlFQUF5RSx5QkFBeUIsOE1BQThNO0FBQ2hUO0FBQ0Esb0VBQW9FOztBQUVwRTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxxRUFBcUU7QUFDckUseUVBQXlFO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRPQUE0TyxrQkFBa0IsTUFBTSxnTEFBZ0wsa0JBQWtCLE1BQU0sNk9BQTZPLGtCQUFrQixNQUFNLDhLQUE4SyxnQ0FBZ0MsTUFBTSwrSkFBK0o7QUFDcGtDLGFBQWE7QUFDYix3TEFBd0wsTUFBTSxrSEFBa0gsTUFBTSx5RkFBeUYsTUFBTSx5RkFBeUYsTUFBTTtBQUNwZjtBQUNBOztBQUVBO0FBQ0Esd0RBQXdEO0FBQ3hELGFBQWE7QUFDYix1REFBdUQ7QUFDdkQ7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1DQUFtQyw0QkFBNEI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxpQkFBaUIsS0FBSyxFQUFFLFNBQVMsRUFBRSxvQkFBb0I7QUFDOUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVCQUF1QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQzs7Ozs7OztBQzFhQSxhQUFhLGNBQWMsNEJBQTRCLFlBQVkscUJBQXFCLDJEQUEyRCxTQUFTLDRCQUE0QixTQUFTLHFCQUFxQixxQ0FBcUMsb0NBQW9DLEVBQUUsaUJBQWlCLGlDQUFpQyxvQkFBb0IsWUFBWSxVQUFVLHNCQUFzQixtQkFBbUIsaURBQWlELGlCQUFpQixFQUFFLGdCQUFnQixhQUFhLGNBQWMsV0FBVyx1QkFBdUIsc0RBQXNELDBDQUEwQyw0QkFBNEIsV0FBVywyQ0FBMkMsb0NBQW9DLFdBQVcseVJBQXlSLGtCQUFrQixhQUFhLGdCQUFnQixnQkFBZ0IsWUFBWSxnQkFBZ0IsWUFBWSxpQkFBaUIseUJBQXlCLHNDQUFzQyxnQkFBZ0IsV0FBVyxVQUFVLGVBQWUsa0JBQWtCLHdCQUF3Qix5QkFBeUIsV0FBVyxnQkFBZ0Isc0JBQXNCLGlCQUFpQixnQkFBZ0IsNElBQTRJLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLElBQUksMENBQTBDLFNBQVMsdUJBQXVCLHdEQUF3RCxxQ0FBcUMsU0FBUyxpSEFBaUgsZ0NBQWdDLHdFQUF3RSw0QkFBNEIsc0JBQXNCLGdHQUFnRyxNQUFNLG1DQUFtQyx1QkFBdUIsbUJBQW1CLGtEQUFrRCx5ZEFBeWQsdUNBQXVDLGtFQUFrRSxhQUFhLCtCQUErQixXQUFXLGtEQUFrRCxxR0FBcUcsd0VBQXdFLGdFQUFnRSx5RUFBeUUsb0RBQW9ELHFCQUFxQixFQUFFLEVBQUUsc0NBQXNDLHlCQUF5QixLQUFLLHVDQUF1QywrS0FBK0ssU0FBUyxhQUFhLFNBQVMsbUJBQW1CLFdBQVcsaUJBQWlCO0FBQ2h0SCxrQzs7Ozs7OztBQ0RBLGNBQWMsbUJBQU8sQ0FBQyxDQUFtQjtBQUN6QyxzQkFBc0IsbUJBQU8sQ0FBQyxDQUFpQztBQUMvRCxnQkFBZ0IsbUJBQU8sQ0FBQyxDQUE4QjtBQUN0RCxhQUFhLG1CQUFPLENBQUMsRUFBc0I7QUFDM0Msa0JBQWtCLG1CQUFPLENBQUMsRUFBNEI7O0FBRXREO0FBQ0EsNkJBQTZCLGNBQWM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkVBQTJFLEtBQUs7QUFDaEY7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsT0FBTyxxQ0FBcUM7QUFDbkYsU0FBUztBQUNULHVDQUF1QyxPQUFPO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixPQUFPLHFCQUFxQjtBQUMzRCwrQkFBK0IsT0FBTyxxQkFBcUI7QUFDM0QsK0JBQStCLE9BQU8scUJBQXFCO0FBQzNELGtDQUFrQyxPQUFPLHFCQUFxQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLElBQUk7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYixTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtSUFBbUk7QUFDbkksaUlBQWlJO0FBQ2pJLDJJQUEySTtBQUMzSSx1SUFBdUk7QUFDdkksNkhBQTZIO0FBQzdILG1JQUFtSTtBQUNuSSxpSUFBaUk7QUFDakk7QUFDQSx1SUFBdUk7QUFDdkksbUlBQW1JO0FBQ25JLGdJQUFnSTtBQUNoSTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RSxlQUFlO0FBQzdGLHFCQUFxQjtBQUNyQiw4RUFBOEUsZUFBZTtBQUM3RixxQkFBcUI7QUFDckI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsZ0ZBQWdGLHVEQUF1RDtBQUN2SSw4RUFBOEUsMERBQTBEO0FBQ3hJLDhFQUE4RSw0REFBNEQ7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9GQUFvRjtBQUNwRixrREFBa0Qsb0JBQW9CLEVBQUU7QUFDeEUsMEVBQTBFO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlEQUFpRDtBQUNqRCxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EseUJBQXlCLGtDQUFrQztBQUMzRDtBQUNBLHlCQUF5Qjs7QUFFekI7O0FBRUEsNERBQTREO0FBQzVEO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLEtBQUs7QUFDMUIsNERBQTREO0FBQzVEO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQSx5QkFBeUIsS0FBSztBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQSw2R0FBNkc7QUFDN0cseUJBQXlCO0FBQ3pCLHFCQUFxQixtREFBbUQ7QUFDeEUsc0VBQXNFO0FBQ3RFLHFCQUFxQixxREFBcUQ7QUFDMUUsd0VBQXdFO0FBQ3hFLHFCQUFxQixPQUFPO0FBQzVCLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUVBQXlFO0FBQ3pFLHNFQUFzRTtBQUN0RSwrRUFBK0U7QUFDL0UseUJBQXlCLG9EQUFvRDtBQUM3RSwrRUFBK0U7QUFDL0UseUJBQXlCLE9BQU87QUFDaEMsb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsd0dBQXdHLFlBQVksVUFBVSxZQUFZLFlBQVksYUFBYSxhQUFhLDZCQUE2QixlQUFlLCtCQUErQixpbEZBQWlsRixzQkFBc0I7QUFDbDJGLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHVCQUF1QjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0EsdUNBQXVDLHdCQUF3QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixrRUFBa0Usd0JBQXdCO0FBQzFGLCtEQUErRCx3Q0FBd0M7QUFDdkc7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQiwrQ0FBK0Msd0NBQXdDO0FBQ3ZGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBLHFCQUFxQjtBQUNyQixtRUFBbUU7QUFDbkUsb0VBQW9FLHdCQUF3QjtBQUM1RixnRUFBZ0Usd0NBQXdDO0FBQ3hHOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLGFBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0REFBNEQ7QUFDNUQsMERBQTBEOztBQUUxRDs7QUFFQSw2Q0FBNkM7O0FBRTdDLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHFCQUFxQjs7QUFFckIsd0RBQXdEO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCOztBQUVBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx3RkFBd0Y7QUFDeEY7QUFDQSxxQ0FBcUM7O0FBRXJDLHVGQUF1RjtBQUN2RjtBQUNBOztBQUVBO0FBQ0EsZ0VBQWdFO0FBQ2hFO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBLDZDQUE2QztBQUM3QztBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxRUFBcUU7QUFDckU7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRDs7QUFFQTs7QUFFQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekIscUJBQXFCOztBQUVyQjtBQUNBLGFBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixFQUFFO0FBQ3ZCLHFCQUFxQixFQUFFO0FBQ3ZCO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7QUFDaEU7QUFDQTtBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBLGdCQUFnQixnQkFBZ0I7QUFDaEMsYUFBYTtBQUNiO0FBQ0E7QUFDQSxnRUFBZ0U7QUFDaEUsaUJBQWlCLGdCQUFnQjtBQUNqQyxhQUFhO0FBQ2I7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRSxpQkFBaUIsZ0JBQWdCO0FBQ2pDLGFBQWE7QUFDYjtBQUNBO0FBQ0EsZ0VBQWdFO0FBQ2hFLGlCQUFpQixnQkFBZ0I7QUFDakMsYUFBYTtBQUNiLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0VBQWdFO0FBQ2hFO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUIsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUNBQWlDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVULG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGlCQUFpQjtBQUNwRCwySUFBMkk7QUFDM0k7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRFQUE0RTtBQUM1RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsU0FBUzs7QUFFVCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtBQUN2RDtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0IsZ0NBQWdDLDZCQUE2Qiw0QkFBNEIsMkJBQTJCLGtFQUFrRSw4QkFBOEIsR0FBRyxjQUFjO0FBQ2hTO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBLFlBQVk7QUFDWiw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7O0FBRUEsbURBQW1EO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0c7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSwyQ0FBMkMseUJBQXlCO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEseUJBQXlCO0FBQ3pCO0FBQ0EsMkZBQTJGO0FBQzNGLDZCQUE2QjtBQUM3QiwyRkFBMkY7QUFDM0Y7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0I7Ozs7Ozs7QUNwOURBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4REFBOEQsS0FBSyxPQUFPO0FBQzlGO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLGFBQWEsc0JBQXNCO0FBQ25DO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1SkFBdUosNkJBQTZCO0FBQ3BMLGtHQUFrRyxpQkFBaUIsRUFBRSw0REFBNEQ7QUFDakw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QixnREFBZ0Q7QUFDaEQ7QUFDQTs7QUFFQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBLHVFQUF1RSxPQUFPO0FBQzlFLGdFQUFnRSxPQUFPO0FBQ3ZFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixpREFBaUQsdUZBQXVGO0FBQ3hJO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxhQUFhOztBQUViLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0EsMkRBQTJELE9BQU87QUFDbEUsb0RBQW9ELE9BQU87QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLHFDQUFxQyx1RkFBdUY7QUFDNUg7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtREFBbUQsMEdBQTBHLFlBQVksVUFBVSxZQUFZLGFBQWEsY0FBYyxnQkFBZ0IsWUFBWSw2REFBNkQ7QUFDblQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVGQUF1RjtBQUN0SCw2REFBNkQsNEJBQTRCLEVBQUU7QUFDM0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDOztBQUVEO0FBQ0Esb0dBQW9HO0FBQ3BHO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLHNHQUFzRyxFQUFFO0FBQ3ZKLDZFQUE2RSxvQkFBb0I7QUFDakc7QUFDQSxpQkFBaUI7QUFDakIsK0NBQStDLHVGQUF1RixFQUFFO0FBQ3hJLDZFQUE2RSw0QkFBNEIsRUFBRTtBQUMzRztBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsZ0JBQWdCLFlBQVksbUJBQW1CLFdBQVc7QUFDdkg7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsaUMiLCJmaWxlIjoidW5pdHluZXdzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAyMik7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgYTdhZWJiOWZhNjhmYjMzY2RkMjgiLCIvKlxyXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIE1ENSBNZXNzYWdlXHJcbiAqIERpZ2VzdCBBbGdvcml0aG0sIGFzIGRlZmluZWQgaW4gUkZDIDEzMjEuXHJcbiAqIFZlcnNpb24gMi4xIENvcHlyaWdodCAoQykgUGF1bCBKb2huc3RvbiAxOTk5IC0gMjAwMi5cclxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxyXG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcclxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cclxuICovXHJcblxyXG4vKlxyXG4gKiBDb25maWd1cmFibGUgdmFyaWFibGVzLiBZb3UgbWF5IG5lZWQgdG8gdHdlYWsgdGhlc2UgdG8gYmUgY29tcGF0aWJsZSB3aXRoXHJcbiAqIHRoZSBzZXJ2ZXItc2lkZSwgYnV0IHRoZSBkZWZhdWx0cyB3b3JrIGluIG1vc3QgY2FzZXMuXHJcbiAqL1xyXG52YXIgaGV4Y2FzZSA9IDA7ICAvKiBoZXggb3V0cHV0IGZvcm1hdC4gMCAtIGxvd2VyY2FzZTsgMSAtIHVwcGVyY2FzZSAgICAgICAgKi9cclxudmFyIGI2NHBhZCAgPSBcIlwiOyAvKiBiYXNlLTY0IHBhZCBjaGFyYWN0ZXIuIFwiPVwiIGZvciBzdHJpY3QgUkZDIGNvbXBsaWFuY2UgICAqL1xyXG52YXIgY2hyc3ogICA9IDg7ICAvKiBiaXRzIHBlciBpbnB1dCBjaGFyYWN0ZXIuIDggLSBBU0NJSTsgMTYgLSBVbmljb2RlICAgICAgKi9cclxuXHJcbi8qXHJcbiAqIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHlvdSdsbCB1c3VhbGx5IHdhbnQgdG8gY2FsbFxyXG4gKiBUaGV5IHRha2Ugc3RyaW5nIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGVpdGhlciBoZXggb3IgYmFzZS02NCBlbmNvZGVkIHN0cmluZ3NcclxuICovXHJcbmZ1bmN0aW9uIGhleF9tZDUocyl7IHJldHVybiBiaW5sMmhleChjb3JlX21kNShzdHIyYmlubChzKSwgcy5sZW5ndGggKiBjaHJzeikpO31cclxuZnVuY3Rpb24gYjY0X21kNShzKXsgcmV0dXJuIGJpbmwyYjY0KGNvcmVfbWQ1KHN0cjJiaW5sKHMpLCBzLmxlbmd0aCAqIGNocnN6KSk7fVxyXG5mdW5jdGlvbiBzdHJfbWQ1KHMpeyByZXR1cm4gYmlubDJzdHIoY29yZV9tZDUoc3RyMmJpbmwocyksIHMubGVuZ3RoICogY2hyc3opKTt9XHJcbmZ1bmN0aW9uIGhleF9obWFjX21kNShrZXksIGRhdGEpIHsgcmV0dXJuIGJpbmwyaGV4KGNvcmVfaG1hY19tZDUoa2V5LCBkYXRhKSk7IH1cclxuZnVuY3Rpb24gYjY0X2htYWNfbWQ1KGtleSwgZGF0YSkgeyByZXR1cm4gYmlubDJiNjQoY29yZV9obWFjX21kNShrZXksIGRhdGEpKTsgfVxyXG5mdW5jdGlvbiBzdHJfaG1hY19tZDUoa2V5LCBkYXRhKSB7IHJldHVybiBiaW5sMnN0cihjb3JlX2htYWNfbWQ1KGtleSwgZGF0YSkpOyB9XHJcblxyXG4vKlxyXG4gKiBQZXJmb3JtIGEgc2ltcGxlIHNlbGYtdGVzdCB0byBzZWUgaWYgdGhlIFZNIGlzIHdvcmtpbmdcclxuICovXHJcbmZ1bmN0aW9uIG1kNV92bV90ZXN0KClcclxue1xyXG4gIHJldHVybiBoZXhfbWQ1KFwiYWJjXCIpID09IFwiOTAwMTUwOTgzY2QyNGZiMGQ2OTYzZjdkMjhlMTdmNzJcIjtcclxufVxyXG5cclxuLypcclxuICogQ2FsY3VsYXRlIHRoZSBNRDUgb2YgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcywgYW5kIGEgYml0IGxlbmd0aFxyXG4gKi9cclxuZnVuY3Rpb24gY29yZV9tZDUoeCwgbGVuKVxyXG57XHJcbiAgLyogYXBwZW5kIHBhZGRpbmcgKi9cclxuICB4W2xlbiA+PiA1XSB8PSAweDgwIDw8ICgobGVuKSAlIDMyKTtcclxuICB4WygoKGxlbiArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBsZW47XHJcblxyXG4gIHZhciBhID0gIDE3MzI1ODQxOTM7XHJcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xyXG4gIHZhciBjID0gLTE3MzI1ODQxOTQ7XHJcbiAgdmFyIGQgPSAgMjcxNzMzODc4O1xyXG5cclxuICBmb3IodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkgKz0gMTYpXHJcbiAge1xyXG4gICAgdmFyIG9sZGEgPSBhO1xyXG4gICAgdmFyIG9sZGIgPSBiO1xyXG4gICAgdmFyIG9sZGMgPSBjO1xyXG4gICAgdmFyIG9sZGQgPSBkO1xyXG5cclxuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyAwXSwgNyAsIC02ODA4NzY5MzYpO1xyXG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDFdLCAxMiwgLTM4OTU2NDU4Nik7XHJcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsgMl0sIDE3LCAgNjA2MTA1ODE5KTtcclxuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKTtcclxuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyA0XSwgNyAsIC0xNzY0MTg4OTcpO1xyXG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDVdLCAxMiwgIDEyMDAwODA0MjYpO1xyXG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDZdLCAxNywgLTE0NzMyMzEzNDEpO1xyXG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDddLCAyMiwgLTQ1NzA1OTgzKTtcclxuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyA4XSwgNyAsICAxNzcwMDM1NDE2KTtcclxuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA5XSwgMTIsIC0xOTU4NDE0NDE3KTtcclxuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTcsIC00MjA2Myk7XHJcbiAgICBiID0gbWQ1X2ZmKGIsIGMsIGQsIGEsIHhbaSsxMV0sIDIyLCAtMTk5MDQwNDE2Mik7XHJcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDcgLCAgMTgwNDYwMzY4Mik7XHJcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsxM10sIDEyLCAtNDAzNDExMDEpO1xyXG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krMTRdLCAxNywgLTE1MDIwMDIyOTApO1xyXG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTVdLCAyMiwgIDEyMzY1MzUzMjkpO1xyXG5cclxuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKyAxXSwgNSAsIC0xNjU3OTY1MTApO1xyXG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDZdLCA5ICwgLTEwNjk1MDE2MzIpO1xyXG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTFdLCAxNCwgIDY0MzcxNzcxMyk7XHJcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsgMF0sIDIwLCAtMzczODk3MzAyKTtcclxuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKyA1XSwgNSAsIC03MDE1NTg2OTEpO1xyXG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTBdLCA5ICwgIDM4MDE2MDgzKTtcclxuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKzE1XSwgMTQsIC02NjA0NzgzMzUpO1xyXG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDRdLCAyMCwgLTQwNTUzNzg0OCk7XHJcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDUgLCAgNTY4NDQ2NDM4KTtcclxuICAgIGQgPSBtZDVfZ2coZCwgYSwgYiwgYywgeFtpKzE0XSwgOSAsIC0xMDE5ODAzNjkwKTtcclxuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyAzXSwgMTQsIC0xODczNjM5NjEpO1xyXG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDhdLCAyMCwgIDExNjM1MzE1MDEpO1xyXG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krMTNdLCA1ICwgLTE0NDQ2ODE0NjcpO1xyXG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDJdLCA5ICwgLTUxNDAzNzg0KTtcclxuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyA3XSwgMTQsICAxNzM1MzI4NDczKTtcclxuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKzEyXSwgMjAsIC0xOTI2NjA3NzM0KTtcclxuXHJcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgNV0sIDQgLCAtMzc4NTU4KTtcclxuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyA4XSwgMTEsIC0yMDIyNTc0NDYzKTtcclxuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKzExXSwgMTYsICAxODM5MDMwNTYyKTtcclxuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKzE0XSwgMjMsIC0zNTMwOTU1Nik7XHJcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgMV0sIDQgLCAtMTUzMDk5MjA2MCk7XHJcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgNF0sIDExLCAgMTI3Mjg5MzM1Myk7XHJcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE2LCAtMTU1NDk3NjMyKTtcclxuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKzEwXSwgMjMsIC0xMDk0NzMwNjQwKTtcclxuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKzEzXSwgNCAsICA2ODEyNzkxNzQpO1xyXG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDBdLCAxMSwgLTM1ODUzNzIyMik7XHJcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsgM10sIDE2LCAtNzIyNTIxOTc5KTtcclxuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKyA2XSwgMjMsICA3NjAyOTE4OSk7XHJcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDQgLCAtNjQwMzY0NDg3KTtcclxuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKzEyXSwgMTEsIC00MjE4MTU4MzUpO1xyXG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTVdLCAxNiwgIDUzMDc0MjUyMCk7XHJcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsgMl0sIDIzLCAtOTk1MzM4NjUxKTtcclxuXHJcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgMF0sIDYgLCAtMTk4NjMwODQ0KTtcclxuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyA3XSwgMTAsICAxMTI2ODkxNDE1KTtcclxuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKzE0XSwgMTUsIC0xNDE2MzU0OTA1KTtcclxuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA1XSwgMjEsIC01NzQzNDA1NSk7XHJcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDYgLCAgMTcwMDQ4NTU3MSk7XHJcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsgM10sIDEwLCAtMTg5NDk4NjYwNik7XHJcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE1LCAtMTA1MTUyMyk7XHJcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsgMV0sIDIxLCAtMjA1NDkyMjc5OSk7XHJcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgOF0sIDYgLCAgMTg3MzMxMzM1OSk7XHJcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxNV0sIDEwLCAtMzA2MTE3NDQpO1xyXG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDZdLCAxNSwgLTE1NjAxOTgzODApO1xyXG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krMTNdLCAyMSwgIDEzMDkxNTE2NDkpO1xyXG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDRdLCA2ICwgLTE0NTUyMzA3MCk7XHJcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XHJcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsgMl0sIDE1LCAgNzE4Nzg3MjU5KTtcclxuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA5XSwgMjEsIC0zNDM0ODU1NTEpO1xyXG5cclxuICAgIGEgPSBzYWZlX2FkZChhLCBvbGRhKTtcclxuICAgIGIgPSBzYWZlX2FkZChiLCBvbGRiKTtcclxuICAgIGMgPSBzYWZlX2FkZChjLCBvbGRjKTtcclxuICAgIGQgPSBzYWZlX2FkZChkLCBvbGRkKTtcclxuICB9XHJcbiAgcmV0dXJuIEFycmF5KGEsIGIsIGMsIGQpO1xyXG5cclxufVxyXG5cclxuLypcclxuICogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCB0aGUgZm91ciBiYXNpYyBvcGVyYXRpb25zIHRoZSBhbGdvcml0aG0gdXNlcy5cclxuICovXHJcbmZ1bmN0aW9uIG1kNV9jbW4ocSwgYSwgYiwgeCwgcywgdClcclxue1xyXG4gIHJldHVybiBzYWZlX2FkZChiaXRfcm9sKHNhZmVfYWRkKHNhZmVfYWRkKGEsIHEpLCBzYWZlX2FkZCh4LCB0KSksIHMpLGIpO1xyXG59XHJcbmZ1bmN0aW9uIG1kNV9mZihhLCBiLCBjLCBkLCB4LCBzLCB0KVxyXG57XHJcbiAgcmV0dXJuIG1kNV9jbW4oKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xyXG59XHJcbmZ1bmN0aW9uIG1kNV9nZyhhLCBiLCBjLCBkLCB4LCBzLCB0KVxyXG57XHJcbiAgcmV0dXJuIG1kNV9jbW4oKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xyXG59XHJcbmZ1bmN0aW9uIG1kNV9oaChhLCBiLCBjLCBkLCB4LCBzLCB0KVxyXG57XHJcbiAgcmV0dXJuIG1kNV9jbW4oYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTtcclxufVxyXG5mdW5jdGlvbiBtZDVfaWkoYSwgYiwgYywgZCwgeCwgcywgdClcclxue1xyXG4gIHJldHVybiBtZDVfY21uKGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcclxufVxyXG5cclxuLypcclxuICogQ2FsY3VsYXRlIHRoZSBITUFDLU1ENSwgb2YgYSBrZXkgYW5kIHNvbWUgZGF0YVxyXG4gKi9cclxuZnVuY3Rpb24gY29yZV9obWFjX21kNShrZXksIGRhdGEpXHJcbntcclxuICB2YXIgYmtleSA9IHN0cjJiaW5sKGtleSk7XHJcbiAgaWYoYmtleS5sZW5ndGggPiAxNikgYmtleSA9IGNvcmVfbWQ1KGJrZXksIGtleS5sZW5ndGggKiBjaHJzeik7XHJcblxyXG4gIHZhciBpcGFkID0gQXJyYXkoMTYpLCBvcGFkID0gQXJyYXkoMTYpO1xyXG4gIGZvcih2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKVxyXG4gIHtcclxuICAgIGlwYWRbaV0gPSBia2V5W2ldIF4gMHgzNjM2MzYzNjtcclxuICAgIG9wYWRbaV0gPSBia2V5W2ldIF4gMHg1QzVDNUM1QztcclxuICB9XHJcblxyXG4gIHZhciBoYXNoID0gY29yZV9tZDUoaXBhZC5jb25jYXQoc3RyMmJpbmwoZGF0YSkpLCA1MTIgKyBkYXRhLmxlbmd0aCAqIGNocnN6KTtcclxuICByZXR1cm4gY29yZV9tZDUob3BhZC5jb25jYXQoaGFzaCksIDUxMiArIDEyOCk7XHJcbn1cclxuXHJcbi8qXHJcbiAqIEFkZCBpbnRlZ2Vycywgd3JhcHBpbmcgYXQgMl4zMi4gVGhpcyB1c2VzIDE2LWJpdCBvcGVyYXRpb25zIGludGVybmFsbHlcclxuICogdG8gd29yayBhcm91bmQgYnVncyBpbiBzb21lIEpTIGludGVycHJldGVycy5cclxuICovXHJcbmZ1bmN0aW9uIHNhZmVfYWRkKHgsIHkpXHJcbntcclxuICB2YXIgbHN3ID0gKHggJiAweEZGRkYpICsgKHkgJiAweEZGRkYpO1xyXG4gIHZhciBtc3cgPSAoeCA+PiAxNikgKyAoeSA+PiAxNikgKyAobHN3ID4+IDE2KTtcclxuICByZXR1cm4gKG1zdyA8PCAxNikgfCAobHN3ICYgMHhGRkZGKTtcclxufVxyXG5cclxuLypcclxuICogQml0d2lzZSByb3RhdGUgYSAzMi1iaXQgbnVtYmVyIHRvIHRoZSBsZWZ0LlxyXG4gKi9cclxuZnVuY3Rpb24gYml0X3JvbChudW0sIGNudClcclxue1xyXG4gIHJldHVybiAobnVtIDw8IGNudCkgfCAobnVtID4+PiAoMzIgLSBjbnQpKTtcclxufVxyXG5cclxuLypcclxuICogQ29udmVydCBhIHN0cmluZyB0byBhbiBhcnJheSBvZiBsaXR0bGUtZW5kaWFuIHdvcmRzXHJcbiAqIElmIGNocnN6IGlzIEFTQ0lJLCBjaGFyYWN0ZXJzID4yNTUgaGF2ZSB0aGVpciBoaS1ieXRlIHNpbGVudGx5IGlnbm9yZWQuXHJcbiAqL1xyXG5mdW5jdGlvbiBzdHIyYmlubChzdHIpXHJcbntcclxuICB2YXIgYmluID0gQXJyYXkoKTtcclxuICB2YXIgbWFzayA9ICgxIDw8IGNocnN6KSAtIDE7XHJcbiAgZm9yKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGggKiBjaHJzejsgaSArPSBjaHJzeilcclxuICAgIGJpbltpPj41XSB8PSAoc3RyLmNoYXJDb2RlQXQoaSAvIGNocnN6KSAmIG1hc2spIDw8IChpJTMyKTtcclxuICByZXR1cm4gYmluO1xyXG59XHJcblxyXG4vKlxyXG4gKiBDb252ZXJ0IGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMgdG8gYSBzdHJpbmdcclxuICovXHJcbmZ1bmN0aW9uIGJpbmwyc3RyKGJpbilcclxue1xyXG4gIHZhciBzdHIgPSBcIlwiO1xyXG4gIHZhciBtYXNrID0gKDEgPDwgY2hyc3opIC0gMTtcclxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmluLmxlbmd0aCAqIDMyOyBpICs9IGNocnN6KVxyXG4gICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGJpbltpPj41XSA+Pj4gKGkgJSAzMikpICYgbWFzayk7XHJcbiAgcmV0dXJuIHN0cjtcclxufVxyXG5cclxuLypcclxuICogQ29udmVydCBhbiBhcnJheSBvZiBsaXR0bGUtZW5kaWFuIHdvcmRzIHRvIGEgaGV4IHN0cmluZy5cclxuICovXHJcbmZ1bmN0aW9uIGJpbmwyaGV4KGJpbmFycmF5KVxyXG57XHJcbiAgdmFyIGhleF90YWIgPSBoZXhjYXNlID8gXCIwMTIzNDU2Nzg5QUJDREVGXCIgOiBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcclxuICB2YXIgc3RyID0gXCJcIjtcclxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmluYXJyYXkubGVuZ3RoICogNDsgaSsrKVxyXG4gIHtcclxuICAgIHN0ciArPSBoZXhfdGFiLmNoYXJBdCgoYmluYXJyYXlbaT4+Ml0gPj4gKChpJTQpKjgrNCkpICYgMHhGKSArXHJcbiAgICAgICAgICAgaGV4X3RhYi5jaGFyQXQoKGJpbmFycmF5W2k+PjJdID4+ICgoaSU0KSo4ICApKSAmIDB4Rik7XHJcbiAgfVxyXG4gIHJldHVybiBzdHI7XHJcbn1cclxuXHJcbi8qXHJcbiAqIENvbnZlcnQgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcyB0byBhIGJhc2UtNjQgc3RyaW5nXHJcbiAqL1xyXG5mdW5jdGlvbiBiaW5sMmI2NChiaW5hcnJheSlcclxue1xyXG4gIHZhciB0YWIgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIjtcclxuICB2YXIgc3RyID0gXCJcIjtcclxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmluYXJyYXkubGVuZ3RoICogNDsgaSArPSAzKVxyXG4gIHtcclxuICAgIHZhciB0cmlwbGV0ID0gKCgoYmluYXJyYXlbaSAgID4+IDJdID4+IDggKiAoIGkgICAlNCkpICYgMHhGRikgPDwgMTYpXHJcbiAgICAgICAgICAgICAgICB8ICgoKGJpbmFycmF5W2krMSA+PiAyXSA+PiA4ICogKChpKzEpJTQpKSAmIDB4RkYpIDw8IDggKVxyXG4gICAgICAgICAgICAgICAgfCAgKChiaW5hcnJheVtpKzIgPj4gMl0gPj4gOCAqICgoaSsyKSU0KSkgJiAweEZGKTtcclxuICAgIGZvcih2YXIgaiA9IDA7IGogPCA0OyBqKyspXHJcbiAgICB7XHJcbiAgICAgIGlmKGkgKiA4ICsgaiAqIDYgPiBiaW5hcnJheS5sZW5ndGggKiAzMikgc3RyICs9IGI2NHBhZDtcclxuICAgICAgZWxzZSBzdHIgKz0gdGFiLmNoYXJBdCgodHJpcGxldCA+PiA2KigzLWopKSAmIDB4M0YpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc3RyO1xyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGhleF9tZDVcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbWQ1L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMSAyIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpe1xyXG4gICAgIWZ1bmN0aW9uIEVNX1ZvdGUoJCkge1xyXG4gICAgICAgIC8v5qC85byP5YyW5oqV56Wo5pWwXHJcbiAgICAgICAgZnVuY3Rpb24gZ3NoVm90ZU51bShudW1iKSB7XHJcbiAgICAgICAgICAgIGlmIChudW1iIDwgMTAwMDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtYiAvIDEwMDAwKS50b0ZpeGVkKDIpICsgXCLkuIdcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvL+aKleelqOavlOS+i1xyXG4gICAgICAgIGZ1bmN0aW9uIFZvdGVaaGFuQmkoc3VtVm90ZSwgY3VyVm90ZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VtVm90ZSA9PSAwIHx8IGN1clZvdGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoY3VyVm90ZSAvIHN1bVZvdGUgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v5Y2g5q+U5p2h5a695bqm6K6h566XXHJcbiAgICAgICAgZnVuY3Rpb24gVm90ZVpoYW5CaVdpZHRoKHpoYW5CaSxtYXhXaWR0aCkge1xyXG4gICAgICAgICAgICBpZiAoemhhbkJpID09IDAgfHwgbWF4V2lkdGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHpoYW5CaSAvIDEwMCAqIG1heFdpZHRoKS50b0ZpeGVkKDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDojrflj5Zjb29raWVcclxuICAgICAgICBmdW5jdGlvbiBnZXRWb3RlQ29va2llKGtleSkge1xyXG4gICAgICAgICAgICB2YXIgY29va2llQXJyYXkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvb2tpZUFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXJyID0gY29va2llQXJyYXlbaV0uc3BsaXQoXCI9XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFyclswXS5yZXBsYWNlKFwiIFwiLCBcIlwiKSA9PSBrZXkpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZXNjYXBlKGFyclsxXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOiuvue9rmNvb2tpZVxyXG4gICAgICAgIGZ1bmN0aW9uIHNldFZvdGVDb29raWUoa2V5LCB2YWx1ZSwgZXhwaXJlcykge1xyXG4gICAgICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIHZhciBtcyA9IGV4cGlyZXMgKiA2MCAqIDYwICogMTAwMDsvL+WPguaVsOS8oOi/m+adpeeahOWNleS9jeaYr+Wwj+aXtlxyXG4gICAgICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyBtcyk7XHJcbiAgICAgICAgICAgIHZhciBzdHIgPSBrZXkgKyBcIj1cIiArIGVzY2FwZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHN0ciArPSBcIjsgZXhwaXJlcz1cIiArIGRhdGUudG9VVENTdHJpbmcoKSArIFwiOyBkb21haW49XCIgKyBsb2NhdGlvbi5ob3N0ICsgXCI7XCI7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHN0cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIF9pc0xvY2tWb3RlID0gW107Ly/mipXnpajmjInpkq7mmK/lkKblpITkuo7plIHlrprnirbmgIHvvIzmlL7nva7ov57nu63ngrnlh7vmipXnpajmjInpkq5cclxuICAgICAgICAkKFwiYm9keVwiKS5vbihcImNsaWNrXCIsIFwiLmJ0bl92b3RlXCIsIGZ1bmN0aW9uICgpIHsvL+aKleelqOeCueWHu+S6i+S7tlxyXG4gICAgICAgICAgICB2YXIgX3RoaXMgPSAkKHRoaXMpO1xyXG5cclxuICAgICAgICAgICAgdmFyIF92b3RlX2lkID0gX3RoaXMuYXR0cihcInZvdGVfaWRcIik7XHJcbiAgICAgICAgICAgIHZhciBfdm90ZV90aXRsZSA9IF90aGlzLmF0dHIoXCJ2b3RlX3RpdGxlXCIpO1xyXG4gICAgICAgICAgICBpZiAoX3ZvdGVfaWQgPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBfY2hvb3NlSWRzID0gXCJcIjsvL1ZpX0lk5Y2V5Liq55qE6YCJ6aG5aWTvvJtWaV9WbV9JZOS4gOmBk+mimDHkuKppZO+8m+mAiemhueS4gOS4qmlk77ybVmlfVmdfSWTkuIDkuKrmipXnpajkuIDkuKppZFxyXG4gICAgICAgICAgICAvL1ZpX0lk5Y2V5Liq55qE6YCJ6aG5aWTvvJtWaV9WbV9JZOS4gOmBk+mimDHkuKppZO+8m+mAiemhueS4gOS4qmlk77ybVmlfVmdfSWTkuIDkuKrmipXnpajkuIDkuKppZFxyXG5cclxuXHJcbiAgICAgICAgICAgIHZhciBfdGltdSA9IFtdOy8v5b2T5YmN5oqV56Wo5oC755qE6aKY55uuXHJcbiAgICAgICAgICAgICQoJy52b3RlXycgKyBfdm90ZV9pZCArIFwiIC52b3RldHlwZV9saVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciB2aXZtaWQgPSAkKHRoaXMpLmF0dHIoXCJ2aXZtaWRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3RpbXUuaW5kZXhPZih2aXZtaWQpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aW11LnB1c2godml2bWlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgX2Nvb2tpZVZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgJCgnLnZvdGVfJyArIF92b3RlX2lkICsgJyAudm90ZXR5cGVfcmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQnKS5lYWNoKGZ1bmN0aW9uICgpIHsvL+mBjeWOhuavj+S4gOS4quWQjeWtl+S4umludGVyZXN055qE5aSN6YCJ5qGG77yM5YW25Lit6YCJ5Lit55qE5omn6KGM5Ye95pWwICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIF92aWlkID0gJCh0aGlzKS5hdHRyKFwidmlpZFwiKTtcclxuICAgICAgICAgICAgICAgIHZhciBfdml2bWlkID0gJCh0aGlzKS5hdHRyKFwidml2bWlkXCIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIF92aXZnaWQgPSAkKHRoaXMpLmF0dHIoXCJ2aXZnaWRcIik7XHJcbiAgICAgICAgICAgICAgICBfY29va2llVmFsdWUgKz0gX3ZpaWQgKyBcIl9cIiArIF92aXZtaWQgKyBcIl9cIiArIF92aXZnaWQgKyBcIixcIjtcclxuICAgICAgICAgICAgICAgIF9jaG9vc2VJZHMgKz0gX3ZpaWQgKyBcIixcIjtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgX3hiID0gX3RpbXUuaW5kZXhPZihfdml2bWlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChfeGIgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aW11LnNwbGljZShfeGIsIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAkKCcudm90ZV8nICsgX3ZvdGVfaWQgKyAnIC52b3RldHlwZV9jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCcpLmVhY2goZnVuY3Rpb24gKCkgey8v6YGN5Y6G5q+P5LiA5Liq5ZCN5a2X5Li6aW50ZXJlc3TnmoTlpI3pgInmoYbvvIzlhbbkuK3pgInkuK3nmoTmiafooYzlh73mlbBcclxuICAgICAgICAgICAgICAgIHZhciBfdmlpZCA9ICQodGhpcykuYXR0cihcInZpaWRcIik7XHJcbiAgICAgICAgICAgICAgICB2YXIgX3Zpdm1pZCA9ICQodGhpcykuYXR0cihcInZpdm1pZFwiKTtcclxuICAgICAgICAgICAgICAgIHZhciBfdml2Z2lkID0gJCh0aGlzKS5hdHRyKFwidml2Z2lkXCIpO1xyXG4gICAgICAgICAgICAgICAgX2Nvb2tpZVZhbHVlICs9IF92aWlkICsgXCJfXCIgKyBfdml2bWlkICsgXCJfXCIgKyBfdml2Z2lkICsgXCIsXCI7XHJcbiAgICAgICAgICAgICAgICBfY2hvb3NlSWRzICs9IF92aWlkICsgXCIsXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIF94YiA9IF90aW11LmluZGV4T2YoX3Zpdm1pZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3hiID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGltdS5zcGxpY2UoX3hiLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKF9jb29raWVWYWx1ZSk7XHJcbiAgICAgICAgICAgIF9jaG9vc2VJZHMgPSBfY2hvb3NlSWRzLnRyaW0oJywnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChfY2hvb3NlSWRzID09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIGFsZXJ0KFwi6K+35YWI6YCJ5oup562U5qGIXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoX3RpbXUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYWxlcnQoXCLmgqjov5jmnInpopjnm67msqHmnInlgZrlroxcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChfaXNMb2NrVm90ZS5pbmRleE9mKF92b3RlX2lkKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX2lzTG9ja1ZvdGUucHVzaChfdm90ZV9pZCk7XHJcblxyXG4gICAgICAgICAgICBfdGhpcy5hZGRDbGFzcyhcImJ0bl9kaXNhYmxlZFwiKTtcclxuXHJcbiAgICAgICAgICAgIHNldFZvdGVDb29raWUoXCJ2b3RlX1wiICsgX3ZvdGVfaWQsIF9jb29raWVWYWx1ZSwgMjQpOy8v5pyJ5pWI5pyfMjTlsI/ml7ZcclxuXHJcbiAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy9jbXNkYXRhYXBpLmVhc3Rtb25leS5jb20vYXBpL1ZvdGUvVm90ZU9wZXJhdGU/Z3JvdXBJZD1cIiArIF92b3RlX2lkICsgXCImY2hvb3NlSWRzPVwiICsgX2Nob29zZUlkcyArIFwiJmNiPT9cIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2V0XCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvb2tWb3RlUmVzdWx0KF90aGlzKTsvL+WOu+afpeeci+aKleelqOe7k+aenFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoXCJib2R5XCIpLm9uKFwiY2hhbmdlXCIsICcudm90ZXR5cGVfY2hlY2tib3ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgX3RoaXMgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICB2YXIgX3ZpZCA9IF90aGlzLmF0dHIoXCJpZFwiKTtcclxuICAgICAgICAgICAgdmFyIF92bmFtZSA9IF90aGlzLmF0dHIoXCJuYW1lXCIpO1xyXG4gICAgICAgICAgICB2YXIgX21heGNoZWNrID0gX3RoaXMuYXR0cihcIm1heGNoZWNrXCIpO1xyXG4gICAgICAgICAgICB2YXIgX2NoZWNrTGVuZ3RoID0gJCgnLnZvdGV0eXBlX2NoZWNrYm94IGlucHV0W25hbWU9XCInICsgX3ZuYW1lICsgJ1wiXTpjaGVja2VkJykubGVuZ3RoO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKF9jaGVja0xlbmd0aCA+IF9tYXhjaGVjaykge1xyXG4gICAgICAgICAgICAgICAgYWxlcnQoXCLmnIDlpJrlj6rog73pgInmi6njgJBcIiArIF9tYXhjaGVjayArIFwi44CR5Liq6YCJ6aG5XCIpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuYXR0cihcImNoZWNrZWRcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZnVuY3Rpb24gbG9va1ZvdGVSZXN1bHQoX3RoaXMpIHsvL+afpeeci+aKleelqOe7k+aenFxyXG4gICAgICAgICAgICB2YXIgX3ZvdGVfaWQgPSBfdGhpcy5hdHRyKFwidm90ZV9pZFwiKTtcclxuICAgICAgICAgICAgdmFyIF92b3RlX3RpdGxlID0gX3RoaXMuYXR0cihcInZvdGVfdGl0bGVcIik7XHJcblxyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi8vY21zZGF0YWFwaS5lYXN0bW9uZXkuY29tL2FwaS9Wb3RlL0dldFZvdGVHcm91cEJ5SWQ/SWQ9XCIgKyBfdm90ZV9pZCArIFwiJmNiPT9cIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2V0XCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2b3RlX2l0ZW0gPSBnZXRWb3RlQ29va2llKFwidm90ZV9cIiArIF92b3RlX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYXJlbnRzKCcuZW1fdm90ZScpLmh0bWwoaW5pdFJlc3VsdEhUTUwoanNvbiwgX3ZvdGVfdGl0bGUsIHZvdGVfaXRlbSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnBhcmVudHMoJy5lbV92b3RlJykuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICQoXCJib2R5XCIpLm9uKFwiY2xpY2tcIiwgXCIuYnRuX2xvb2t2b3RlXCIsIGZ1bmN0aW9uICgpIHsvL+afpeeci+aKleelqOe7k+aenOeCueWHu+S6i+S7tlxyXG4gICAgICAgICAgICB2YXIgX3ZvdGVfaWQgPSAkKHRoaXMpLmF0dHIoXCJ2b3RlX2lkXCIpO1xyXG4gICAgICAgICAgICBpZiAobG9jYXRpb24uaG9zdCA9PSBcInBjYXJ0aWNsZS5lYXN0bW9uZXkuY29tXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIHdpbmRvdy5vcGVuKFwiaHR0cDovL3BvbGwuZWFzdG1vbmV5LmNvbS9IdG1sL1Jlc3VsdFwiICsgX3ZvdGVfaWQgKyBcIi5odG1sXCIpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmV4dGVybmFsLk9uQ2xpY2tFdmVudChcInJldHVybihmYWxzZSAmJiBbXS5wdXNoKCcjdHlwZT0wNCYmdXJsPWh0dHBzOi8vcG9sbC5lYXN0bW9uZXkuY29tL0h0bWwvUmVzdWx0XCIgKyBfdm90ZV9pZCArIFwiLmh0bWwnKSk7XCIpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihcImh0dHBzOi8vcG9sbC5lYXN0bW9uZXkuY29tL0h0bWwvUmVzdWx0XCIgKyBfdm90ZV9pZCArIFwiLmh0bWxcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9sb29rVm90ZVJlc3VsdCgkKHRoaXMpKTsvL+WOu+afpeeci+aKleelqOe7k+aenFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKFwiYm9keVwiKS5vbihcImNsaWNrXCIsIFwiLmJ0bl9nb3ZvdGVcIiwgZnVuY3Rpb24gKCkgey8v5Y675oqV56Wo54K55Ye75LqL5Lu2XHJcbiAgICAgICAgICAgIHZhciBfdm90ZV9pZCA9ICQodGhpcykuYXR0cihcInZvdGVfaWRcIik7XHJcbiAgICAgICAgICAgIGluaXRWb3RlKF92b3RlX2lkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBmdW5jdGlvbiBpbml0UmVzdWx0SFRNTChqc29uLCBfdm90ZV90aXRsZSwgdm90ZV9pdGVtKSB7XHJcbiAgICAgICAgICAgIHZhciBfaHRtbCA9ICcnXHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwidGl0bGVcIj48aSBjbGFzcz1cImljb24gaWNvbl90aXRsZVwiPjwvaT4nICsgX3ZvdGVfdGl0bGUgKyAnPC9kaXY+JztcclxuICAgICAgICAgICAgdmFyIF9pc3ZvdGUgPSBmYWxzZTsvL+m7mOiupOacquaKlei/h+elqFxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uUmVzdWx0LlZvdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgX2l0ZW0gPSBqc29uLlJlc3VsdC5Wb3Rlc1tpXTtcclxuXHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGgzIGNsYXNzPVwidGl0XCI+JyArIF9pdGVtLlZtX1RpdGxlICsgJzwvaDM+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwiY29udGVudFwiPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgIDx1bCBjbGFzcz1cInJlc3VsdF9saXN0XCI+JztcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgX2lzQWxsMEZsYWcgPSB0cnVlOy8v6K6w5b2V5piv5ZCm5YWo6YOo5Li6MFxyXG4gICAgICAgICAgICAgICAgdmFyIF92b3RlU3VtID0gMDtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgX2l0ZW0uRWxlbWVudHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX19pdGVtID0gX2l0ZW0uRWxlbWVudHNbal07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9jb29raWVWYWx1ZSA9IF9faXRlbS5WaV9JZCArIFwiX1wiICsgX19pdGVtLlZpX1ZtX0lkICsgXCJfXCIgKyBfX2l0ZW0uVmlfVmdfSWQgKyBcIixcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodm90ZV9pdGVtICYmIHZvdGVfaXRlbS5pbmRleE9mKF9jb29raWVWYWx1ZSkgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaXRlbS5FbGVtZW50c1tqXS5WaV9Db3VudCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaXN2b3RlID0gdHJ1ZTsvL+aKlei/h+elqFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2l0ZW0uRWxlbWVudHNbal0uVmlfQ291bnQgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaXNBbGwwRmxhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBfdm90ZVN1bSArPSBfaXRlbS5FbGVtZW50c1tqXS5WaV9Db3VudDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9pdGVtLkVsZW1lbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9faXRlbSA9IF9pdGVtLkVsZW1lbnRzW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfVmlfQ291bnQgPSBfX2l0ZW0uVmlfQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgX3ZvdGVCaUxpID0gVm90ZVpoYW5CaShfdm90ZVN1bSwgX1ZpX0NvdW50KTsvL+WNoOavlFxyXG5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgX2Nvb2tpZVZhbHVlID0gX19pdGVtLlZpX0lkICsgXCJfXCIgKyBfX2l0ZW0uVmlfVm1fSWQgKyBcIl9cIiArIF9faXRlbS5WaV9WZ19JZCArIFwiLFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2b3RlX2l0ZW0gJiYgdm90ZV9pdGVtLmluZGV4T2YoX2Nvb2tpZVZhbHVlKSA+PSAwKSB7Ly/mnKzpgInpobnlt7LmipXnpahcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgPGxpIGNsYXNzPVwiYWN0aXZlXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxcIj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRcIj4nICsgX19pdGVtLlZpX1RpdGxlICsgJzwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlc1wiPu+8iCcgKyBnc2hWb3RlTnVtKF9WaV9Db3VudCkgKyAn56Wo77yJJyArIF92b3RlQmlMaSArICclPC9zcGFuPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICAgICAgPC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiIHN0eWxlPVwid2lkdGg6JyArIFZvdGVaaGFuQmlXaWR0aChfdm90ZUJpTGksIDQyMCkgKyAncHhcIj48L3NwYW4+JzsvL+aAu+mVvzQyMHB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICAgICAgPC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgIDwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlwc1wiPjxpIGNsYXNzPVwiaWNvbiBpY29uX3dkdHBcIj48L2k+5oiR55qE5oqV56WoPC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgPC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly/mnKzpgInpobnmnKrmipXnpahcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgPGxpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0XCI+JyArIF9faXRlbS5WaV9UaXRsZSArICc8L3NwYW4+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXNcIj7vvIgnICsgZ3NoVm90ZU51bShfVmlfQ291bnQpICsgJ+elqO+8iScgKyBfdm90ZUJpTGkgKyAnJTwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICAgICAgICAgIDwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhclwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5uZXJcIiBzdHlsZT1cIndpZHRoOicgKyBWb3RlWmhhbkJpV2lkdGgoX3ZvdGVCaUxpLCA0MjApICsgJ3B4XCI+PC9zcGFuPic7Ly/mgLvplb80MjBweFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICAgICAgICAgIDwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICA8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICA8L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgPC91bD4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwiYnRuX3dyYXBcIj4nO1xyXG4gICAgICAgICAgICBpZiAoX2lzdm90ZSkge1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9kaXNhYmxlZFwiPuW3suaKleelqDwvYnV0dG9uPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuX2JsdWUgYnRuX2xvb2t2b3RlXCIgdm90ZV9pZD1cIicgKyBqc29uLlJlc3VsdC5WZ19JZCArICdcIiB2b3RlX3RpdGxlPVwiJyArIF92b3RlX3RpdGxlICsgJ1wiPuafpeecizwvYnV0dG9uPic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoanNvbi5SZXN1bHQuVmdfRW5hYmxlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuX2JsdWUgYnRuX2dvdm90ZVwiIHZvdGVfaWQ9XCInICsganNvbi5SZXN1bHQuVmdfSWQgKyAnXCI+5Y675oqV56WoPC9idXR0b24+JztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9kaXNhYmxlZFwiPuivpeaKleelqOW3sue7k+adnzwvYnV0dG9uPic7XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9ibHVlIGJ0bl9sb29rdm90ZVwiIHZvdGVfaWQ9XCInICsganNvbi5SZXN1bHQuVmdfSWQgKyAnXCIgdm90ZV90aXRsZT1cIicgKyBfdm90ZV90aXRsZSArICdcIj7mn6XnnIs8L2J1dHRvbj4nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8L2Rpdj4nO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIF9odG1sO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmdW5jdGlvbiBpbml0SFRNTChqc29uLCBfdm90ZV90aXRsZSkge1xyXG4gICAgICAgICAgICB2YXIgX2h0bWwgPSAnJ1xyXG4gICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLlN1Y2Nlc3MgPT0gMSAmJiBqc29uLlJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGpzb24uUmVzdWx0LlZnX1RpdGxlICYmIGpzb24uUmVzdWx0LlZnX1RpdGxlICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdm90ZV90aXRsZSA9IGpzb24uUmVzdWx0LlZnX1RpdGxlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwidGl0bGVcIj48aSBjbGFzcz1cImljb24gaWNvbl90aXRsZVwiPjwvaT4nICsgX3ZvdGVfdGl0bGUgKyAnPC9kaXY+JztcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uUmVzdWx0LlZvdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9pdGVtID0ganNvbi5SZXN1bHQuVm90ZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxoMyBjbGFzcz1cInRpdFwiPicgKyBfaXRlbS5WbV9UaXRsZSArICc8L2gzPic7XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxkaXYgY2xhc3M9XCJjb250ZW50IHZvdGVpdGVtXycgKyBqc29uLlJlc3VsdC5WZ19JZCArICdcIj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgPHVsIGNsYXNzPVwicHJvYmxlbV9saXN0IHZvdGVfJyArIGpzb24uUmVzdWx0LlZnX0lkICsgJ1wiPic7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgX2l0ZW0uRWxlbWVudHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJhZGlvT3JDaGVja2JveCA9IFwicmFkaW9cIjsvL+WNlemAiVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2l0ZW0uVm1fVHlwZSA9PSAxKSB7Ly/mipXnpajmqKHlvI8gMS4g5aSa6YCJIDAuIOWNlemAiVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaW9PckNoZWNrYm94ID0gXCJjaGVja2JveFwiOy8v5aSa6YCJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfVm1fTWF4Q2hlY2sgPSBfaXRlbS5WbV9NYXhDaGVjaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9WbV9NYXhDaGVjayA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVm1fTWF4Q2hlY2sgPSA5OTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9faXRlbSA9IF9pdGVtLkVsZW1lbnRzW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICA8bGkgY2xhc3M9XCJ2b3RldHlwZV8nICsgcmFkaW9PckNoZWNrYm94ICsgJyB2b3RldHlwZV9saVwiIHZpdm1pZD1cIicgKyBfX2l0ZW0uVmlfVm1fSWQgKyAnXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hvb3NlLXdyYXBcIj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiJyArIHJhZGlvT3JDaGVja2JveCArICdcIiAgbmFtZT1cInZvdGVfaXRlbV8nICsganNvbi5SZXN1bHQuVmdfSWQgKyAnXycgKyBpICsgJ1wiIGlkPVwidm90ZV9pdGVtXycgKyBqc29uLlJlc3VsdC5WZ19JZCArICdfJyArIGkgKyAnXycgKyBqICsgJ1wiIHZhbHVlPVwiJyArIF9faXRlbS5WaV9WbV9JZCArICdfJyArIF9faXRlbS5WaV9WZ19JZCArICdcIiBtYXhjaGVjaz1cIicgKyBfVm1fTWF4Q2hlY2sgKyAnXCIgdmlpZD1cIicgKyBfX2l0ZW0uVmlfSWQgKyAnXCIgdml2bWlkPVwiJyArIF9faXRlbS5WaV9WbV9JZCArICdcIiB2aXZnaWQ9XCInICsgX19pdGVtLlZpX1ZnX0lkICsgJ1wiPic7Ly9WaV9JZOWNleS4queahOmAiemhuWlk77ybVmlfVm1fSWTkuIDpgZPpopgx5LiqaWTvvJvpgInpobnkuIDkuKppZO+8m1ZpX1ZnX0lk5LiA5Liq5oqV56Wo5LiA5LiqaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNob29zZS1pbm5lclwiPjwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICAgICAgPC9zcGFuPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgICAgICA8bGFiZWwgZm9yPVwidm90ZV9pdGVtXycgKyBqc29uLlJlc3VsdC5WZ19JZCArICdfJyArIGkgKyAnXycgKyBqICsgJ1wiPicgKyBfX2l0ZW0uVmlfVGl0bGUgKyAnPC9sYWJlbD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgICAgICA8L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgIDwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPC9kaXY+JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxkaXYgY2xhc3M9XCJidG5fd3JhcFwiPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuX29yYW5nZSBidG5fdm90ZVwiIHZvdGVfaWQ9XCInICsganNvbi5SZXN1bHQuVmdfSWQgKyAnXCIgdm90ZV90aXRsZT1cIicgKyBfdm90ZV90aXRsZSArICdcIiA+5oqV56WoPC9idXR0b24+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5fYmx1ZSBidG5fbG9va3ZvdGVcIiB2b3RlX2lkPVwiJyArIGpzb24uUmVzdWx0LlZnX0lkICsgJ1wiIHZvdGVfdGl0bGU9XCInICsgX3ZvdGVfdGl0bGUgKyAnXCI+5p+l55yLPC9idXR0b24+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBfaHRtbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gaW5pdFZvdGUoaXRlbSl7XHJcbiAgICAgICAgICAgICQoXCIuZW1fdm90ZVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfdGhpcyA9ICQodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgX3ZvdGVfaWQgPSBfdGhpcy5hdHRyKFwidm90ZV9pZFwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtID09IFwiYWxsXCIgfHwgaXRlbSA9PSBfdm90ZV9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfdm90ZV90aXRsZSA9IF90aGlzLmF0dHIoXCJ2b3RlX3RpdGxlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIF92b3RlX3RpdGxlID0gdW5lc2NhcGUoX3ZvdGVfdGl0bGUpOy8v6Kej56CBXHJcbiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcIi8vY21zZGF0YWFwaS5lYXN0bW9uZXkuY29tL2FwaS9Wb3RlL0dldFZvdGVHcm91cEJ5SWQ/SWQ9XCIgKyBfdm90ZV9pZCArIFwiJmNiPT9cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJnZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdm90ZV9pdGVtID0gZ2V0Vm90ZUNvb2tpZShcInZvdGVfXCIgKyBfdm90ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm90ZV9pdGVtIHx8IGpzb24uUmVzdWx0LlZnX0VuYWJsZSAhPSAxKSB7Ly9WZ19FbmFibGUgMeS4uiDlhYHorrhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5odG1sKGluaXRSZXN1bHRIVE1MKGpzb24sIF92b3RlX3RpdGxlLCB2b3RlX2l0ZW0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuaHRtbChpbml0SFRNTChqc29uLCBfdm90ZV90aXRsZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbml0Vm90ZShcImFsbFwiKTtcclxuICAgIH0oalF1ZXJ5KVxyXG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL3ZvdGUvdW5pdHl2b3RlLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMSAyIiwiZnVuY3Rpb24gdXBkYXRlRW1JbWFnZVJlbWFyaygpe1xyXG4gICAgdHJ5IHtcclxuICAgICAgICAvLyDmraPmloflm77ooahjbGFzc1xyXG4gICAgICAgICQoXCIuRW1JbWFnZVJlbWFya1wiKS5wYXJlbnQoKS5hZGRDbGFzcyhcImNsZWFycCBzaW5nbGUtY2hhcnRcIik7XHJcbiAgICAgICAgJChcIi5FbUltYWdlUmVtYXJrXCIpLnBhcmVudHMoXCJwXCIpLmNzcyh7XHJcbiAgICAgICAgICAgIFwiZm9udC1zaXplXCI6IFwiMTVweFwiLFxyXG4gICAgICAgICAgICBcImxpbmUtaGVpZ2h0XCI6IFwiMzFweFwiXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJChcIi5FbUltYWdlUmVtYXJrXCIpLmNoaWxkcmVuKCkuYXR0cihcInN0eWxlXCIsIFwiXCIpO1xyXG4gICAgICAgICQoXCIuRW1JbWFnZVJlbWFya1wiKS5hZGRDbGFzcyhcImNoYXJ0LWxlZnRcIik7XHJcbiAgICAgICAgdmFyIGVtUmVtYXJrID0gJChcIi5FbUltYWdlUmVtYXJrXCIpO1xyXG4gICAgICAgIGlmICgkKFwiLkRpc3BsYXlPbldlYkZyb21OZXdzUm9ib3RcIikgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAkKFwiLkRpc3BsYXlPbldlYkZyb21OZXdzUm9ib3RcIikuc2hvdygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbVJlbWFyay5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIF90aGlzID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgaWYgKF90aGlzLmNoaWxkcmVuKFwiaW1nXCIpLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgX3RoaXMucGFyZW50KCkucmVtb3ZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0eXBlb2YgKCQpICE9ICdmdW5jdGlvbicpIGZ1bmN0aW9uICQobykge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgKG8pID09ICdzdHJpbmcnID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobykgOiBvXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mICgkQykgIT0gJ2Z1bmN0aW9uJykgZnVuY3Rpb24gJEMocykge1xyXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHMpXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIENsYXNzID09IFwidW5kZWZpbmVkXCIpIENsYXNzID0ge307XHJcbiAgICBDbGFzcy5Bc1Byb3RvdHlwZSA9IHt9O1xyXG4gICAgQ2xhc3MuY3JlYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodCkge1xyXG4gICAgICAgICAgICBpZiAodCAhPSBDbGFzcy5Bc1Byb3RvdHlwZSkgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBuZXdzaW1nID0gQ2xhc3MuY3JlYXRlKCk7XHJcbiAgICB2YXIgY2hhcnRJZCA9IDE7ICAgIC8v5Li76KaB5Yy65YiG5Zu+6KGo55qE5ZSv5LiA5oCnXHJcbiAgICBuZXdzaW1nLnByb3RvdHlwZSA9IHtcclxuICAgICAgICBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOiBmdW5jdGlvbiAob2JqLCBuKSB7XHJcbiAgICAgICAgICAgIHZhciBjbGFzc0VsZW1lbnRzID0gW10sIGFsbEVsZW1lbnRzID0gJChvYmopLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJyk7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChhbGxFbGVtZW50c1tpXS5jbGFzc05hbWUgPT0gbikgY2xhc3NFbGVtZW50c1tjbGFzc0VsZW1lbnRzLmxlbmd0aF0gPSBhbGxFbGVtZW50c1tpXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjbGFzc0VsZW1lbnRzO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0TWFya2V0OiBmdW5jdGlvbiAodHlwZSwgY29kZSkge1xyXG4gICAgICAgICAgICB2YXIgTWFya2V0ID0gXCJzaFwiO1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBcIjFcIikge1xyXG4gICAgICAgICAgICAgICAgTWFya2V0ID0gXCJzaFwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUuc3Vic3RyaW5nKDAsIDMpID09IFwiMDAwXCIpIE1hcmtldCA9IFwienNcIjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIE1hcmtldCA9IFwic3pcIjtcclxuICAgICAgICAgICAgICAgIGlmIChjb2RlLnN1YnN0cmluZygwLCAyKSA9PSBcIjM5XCIpIE1hcmtldCA9IFwienNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgVHlwZTogTWFya2V0LFxyXG4gICAgICAgICAgICAgICAgQ29kZTogTWFya2V0ICsgY29kZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnc2hOdW06IGZ1bmN0aW9uIChzdHIpIHsvL+agvOW8j+WMluWkp+mineaVsOWtl1xyXG4gICAgICAgICAgICBpZiAoc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBkTnVtID0gcGFyc2VGbG9hdChzdHIpO1xyXG4gICAgICAgICAgICB2YXIgZHcgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoZE51bSA+PSAxMDAwMDAwMDApIHtcclxuICAgICAgICAgICAgICAgIGROdW0gPSAoZE51bSAvIDEwMDAwMDAwMCk7XHJcbiAgICAgICAgICAgICAgICBkdyA9IFwi5Lq/XCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZE51bSA+PSAxMDAwMCkge1xyXG4gICAgICAgICAgICAgICAgZE51bSA9IChkTnVtIC8gMTAwMDApO1xyXG4gICAgICAgICAgICAgICAgZHcgPSBcIuS4h1wiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZE51bSA+PSAxMDApIHtcclxuICAgICAgICAgICAgICAgIGROdW0gPSBkTnVtLnRvRml4ZWQoMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZE51bSA+PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgZE51bSA9IGROdW0udG9GaXhlZCgxKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGROdW0gPSBkTnVtLnRvRml4ZWQoMik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBkTnVtICsgZHc7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnc2haZDpmdW5jdGlvbiAoc3RyKXsvL+agvOW8j+WMlua2qOi3jOW5heaIlua2qOi3jOmineS/neeVmTLkvY3lsI/mlbBcclxuICAgICAgICAgICAgaWYgKHN0ciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cikudG9GaXhlZCgyKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFhpYW5nR3Vhbkd1UGlhbzogZnVuY3Rpb24gKHNlY2lkLCBpbWdQYXJlbnQpIHsvL+ebuOWFs+iCoeelqFxyXG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgY2hhcnRGb290ZXJEaXYgPSAkQyhcImRpdlwiKTtcclxuICAgICAgICAgICAgY2hhcnRGb290ZXJEaXYuY2xhc3NOYW1lID0gXCJjaGFydC1mb290ZXJcIjtcclxuICAgICAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3NsaXN0L2dldD9waT0wJnB6PTUmcG89MSZzcHQ9NCZmaWVsZHM9ZjEyLGYxMyxmMTQsZjE1LGYzLGY0LGY2LGY1LGYxMSxmMTAsZjImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTkmc2VjaWQ9XCIgKyBzZWNpZCArIFwiJmZpZD1mMyZmbHR0PTImY2I9P1wiLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpkYXRhICYmIGpkYXRhLnJjID09IFwiMFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb290ZXJJbm5lclJvdyA9ICc8ZGl2IGNsYXNzPVwiY2hhcnQtZm9vdGVyLXRpdGxlXCI+55u45YWz6IKh56WoPC9kaXY+PGRpdiBjbGFzcz1cImNoYXJ0LWZvb3Rlci1jb25cIj48dWw+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9pID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqZGF0YS5kYXRhLnRvdGFsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaSA9PSA0KSB7Ly/mnIDlpJrmmL7npLo05p2hXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGpkYXRhLmRhdGEuZGlmZltpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfY29kZSA9IGl0ZW0uZjEyOy8v6IKh56Wo5Luj56CBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX21hcmtldCA9IGl0ZW0uZjEzOy8v5biC5Zy6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VjaWQgPT0gX21hcmtldCArIFwiLlwiICsgX2NvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbmFtZSA9IGl0ZW0uZjE0Oy8v6IKh56Wo5ZCN56ewXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3ByaWNlID0gaXRlbS5mMjsvL+acgOaWsOS7t1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF96ZGYgPSBpdGVtLmYzOy8v5rao6LeM5bmFXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfemRmID0gKF96ZGYgPT0gXCItXCIgPyBcIi1cIiA6IChfdGhpcy5nc2haZChfemRmKSArIFwiJVwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3pkZSA9IGl0ZW0uZjQ7Ly/mtqjot4zpop1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF96ZGUgPSBfdGhpcy5nc2haZChfemRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkQ29sb3IgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF96ZGUgPiAwKSB6ZENvbG9yID0gXCIjRkYwMDAwXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChfemRlIDwgMCkgemRDb2xvciA9IFwiIzAwOTkwMFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySW5uZXJSb3cgKz0gJzxsaT48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsgX21hcmtldCArICcuJyArIF9jb2RlICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBfbmFtZS5yZXBsYWNlKC8gL2lnLCBcIlwiKSArICc8L2E+KDxmb250IHN0eWxlPVwiY29sb3I6JyArIHpkQ29sb3IgKyAnOycrICgoX3ByaWNlICsgJyAnICsgX3pkZikubGVuZ3RoID4gMTUgPyAnZm9udC1zaXplOjEwcHg7JyA6ICcnKSArJ1wiPicgKyBfcHJpY2UgKyAnICcgKyBfemRmICsgJzwvZm9udD4pPC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2krKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJJbm5lclJvdyArPSAnPC91bD48L2Rpdj48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFydEZvb3RlckRpdi5pbm5lckhUTUwgPSBmb290ZXJJbm5lclJvdztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nUGFyZW50LmFwcGVuZENoaWxkKGNoYXJ0Rm9vdGVyRGl2KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLlhpYW5nR3VhbkJhbkt1YWkoc2VjaWQsIGNoYXJ0Rm9vdGVyRGl2KTsvL+ebuOWFs+adv+Wdl1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBYaWFuZ0d1YW5CYW5LdWFpOiBmdW5jdGlvbiAoc2VjaWQsIGNoYXJ0Rm9vdGVyRGl2KSB7Ly/nm7jlhbPmnb/lnZdcclxuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3NsaXN0L2dldD91dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOSZzcHQ9MyZwaT0wJnB6PTQmcG89MSZmaWVsZHM9ZjE0LGYzLGY0LGYxMjgsZjEyLGYxMyxmMTAwLGYxMDIsZjEwMyZzZWNpZD1cIiArIHNlY2lkICsgXCImZmlkPWYzJmZsdHQ9MiZjYj0/XCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpkYXRhICYmIGpkYXRhLnJjID09IFwiMFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBodG1sQksgPSAkQyhcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbEJLLmNsYXNzTmFtZSA9IFwiY2hhcnQtZm9vdGVyLXRpdGxlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxCSy5pbm5lckhUTUwgPSBcIuebuOWFs+adv+Wdl1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbEJLQ29udGVudCA9ICRDKFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sQktDb250ZW50LmNsYXNzTmFtZSA9IFwiY2hhcnQtZm9vdGVyLWNvbiBjaGFydC1jb25jZXB0XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gJzx1bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQgJiYgaSA8IGpkYXRhLmRhdGEudG90YWw7IGkrKykgey8v5pyA5aSa5pi+56S6NOadoVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBqZGF0YS5kYXRhLmRpZmZbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2JrQ29kZSA9IGl0ZW0uZjEyOy8v5p2/5Z2X5Luj56CBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2JrTWFya2V0ID0gaXRlbS5mMTM7Ly/mnb/lnZfluILlnLpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYmtOYW1lID0gaXRlbS5mMTQ7Ly/mnb/lnZflkI3np7BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYmtaZGYgPSBpdGVtLmYzOy8v5p2/5Z2X5rao6LeM5bmFXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYmtaZGYgPSAoX2JrWmRmID09IFwiLVwiID8gXCItXCIgOiAoX3RoaXMuZ3NoWmQoX2JrWmRmKSArIFwiJVwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2JrWmRlID0gaXRlbS5mNDsvL+adv+Wdl+a2qOi3jOminVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2JrWmRlID0gX3RoaXMuZ3NoWmQoX2JrWmRlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZENvbG9yID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYmtaZGUgPiAwKSB6ZENvbG9yID0gXCIjRkYwMDAwXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChfYmtaZGUgPCAwKSB6ZENvbG9yID0gXCIjMDA5OTAwXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaCArPSAnPGxpPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvYm9hcmRsaXN0Lmh0bWwjYm9hcmRzLScgKyBfYmtDb2RlICsgJzFcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsgX2JrTmFtZSArICc8L2E+KDxmb250IHN0eWxlPVwiY29sb3I6JyArIHpkQ29sb3IgKyAnXCI+JyArIF9ia1pkZiArICc8L2ZvbnQ+KTwvbGk+JzsvLyBjbGFzcz1cImZzMTJcIlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoICs9ICc8L3VsPjwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxCS0NvbnRlbnQuaW5uZXJIVE1MID0gaDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRGb290ZXJEaXYuYXBwZW5kQ2hpbGQoaHRtbEJLKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRGb290ZXJEaXYuYXBwZW5kQ2hpbGQoaHRtbEJLQ29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFpoaVNodUxpbmdaaGFuZ0hhbmdZZTogZnVuY3Rpb24gKGltZ1BhcmVudCkgey8v6aKG5rao6KGM5LiaKOaMh+aVsClcclxuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIGNoYXJ0Rm9vdGVyRGl2ID0gJEMoXCJkaXZcIik7XHJcbiAgICAgICAgICAgIGNoYXJ0Rm9vdGVyRGl2LmNsYXNzTmFtZSA9IFwiY2hhcnQtZm9vdGVyXCI7XHJcbiAgICAgICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC9jbGlzdC9nZXQ/dXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTkmZnM9bTo5MCt0OjImZmlkPWYzJnBvPTEmcGk9MCZwej0yJmZpZWxkcz1mMyxmNCxmMTIsZjEzLGYxNCxmMTA0LGYxMDUsZjEyOCxmMTQwLGYxNDEsZjEzNiZmbHR0PTImaW52dD0yJmNiPT9cIixcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoamRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoamRhdGEgJiYgamRhdGEucmMgPT0gXCIwXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvb3RlcklubmVyUm93ID0gJycgKyAnPGRpdiBjbGFzcz1cImNoYXJ0LWZvb3Rlci10aXRsZVwiPumihua2qOihjOS4mjwvZGl2PjxkaXYgY2xhc3M9XCJjaGFydC1mb290ZXItbHpoeVwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMiAmJiBpIDwgamRhdGEuZGF0YS50b3RhbDsgaSsrKSB7Ly/mnIDlpJrmmL7npLoy5p2hXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGpkYXRhLmRhdGEuZGlmZltpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYmtDb2RlID0gaXRlbS5mMTI7Ly/mnb/lnZfku6PnoIFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYmtNYXJrZXQgPSBpdGVtLmYxMzsvL+adv+Wdl+W4guWculxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9ia05hbWUgPSBpdGVtLmYxNDsvL+adv+Wdl+WQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9ia1pkZiA9IGl0ZW0uZjM7Ly/mnb/lnZfmtqjot4zluYVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ia1pkZiA9IChfYmtaZGYgPT0gXCItXCIgPyBcIi1cIiA6IChfdGhpcy5nc2haZChfYmtaZGYpICsgXCIlXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYmtaZGUgPSBpdGVtLmY0Oy8v5p2/5Z2X5rao6LeM6aKdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYmtaZGUgPSBfdGhpcy5nc2haZChfYmtaZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJremRDb2xvciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2JrWmRlID4gMCkgYmt6ZENvbG9yID0gXCIjRkYwMDAwXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChfYmtaZGUgPCAwKSBia3pkQ29sb3IgPSBcIiMwMDk5MDBcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfc3pqcyA9IGl0ZW0uZjEwNDsvL+S4iua2qOWutuaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF94ZGpzID0gaXRlbS5mMTA1Oy8v5LiL6LeM5a625pWwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2NvZGUgPSBpdGVtLmYxNDA7Ly/ogqHnpajku6PnoIFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbWFya2V0ID0gaXRlbS5mMTQxOy8v6IKh56Wo5biC5Zy6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX25hbWUgPSBpdGVtLmYxMjg7Ly/ogqHnpajlkI3np7BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfemRmID0gaXRlbS5mMTM2Oy8v5rao6LeM5bmFXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRDb2xvciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3pkZiA+IDApIHpkQ29sb3IgPSBcIiNGRjAwMDBcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKF96ZGYgPCAwKSB6ZENvbG9yID0gXCIjMDA5OTAwXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfemRmID0gKF96ZGYgPT0gXCItXCIgPyBcIi1cIiA6IChfdGhpcy5nc2haZChfemRmKSArIFwiJVwiKSk7Ly/mtqjot4zluYVcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJJbm5lclJvdyArPSAnPHVsPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2JrTmFtZSA9PSBcIlwiIHx8IF9ia05hbWUgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJJbm5lclJvdyArPSAnPGxpPicgKyAoaSArIDEpICsgJ+OAgS08L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcklubmVyUm93ICs9ICc8bGk+JyArIChpICsgMSkgKyAn44CBPGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ib2FyZGxpc3QuaHRtbCNib2FyZHMtJyArIF9ia0NvZGUgKyAnMVwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiZmxvYXQ6bm9uZTtcIj4nICsgX2JrTmFtZSArICc8L2E+PC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySW5uZXJSb3cgKz0gJzxsaT7mtqjluYXvvJo8c3BhbiBzdHlsZT1cImNvbG9yOicgKyBia3pkQ29sb3IgKyAnO1wiPicgKyBfYmtaZGYgKyAnPC9zcGFuPjwvbGk+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcklubmVyUm93ICs9ICc8bGkgY2xhc3M9XCJsemh5LXN6XCI+5LiK5rao77yaPHNwYW4gc3R5bGU9XCJjb2xvcjojRkYwMDAwO1wiPicgKyBfc3pqcyArICc8L3NwYW4+5a62PC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySW5uZXJSb3cgKz0gJzxsaSBjbGFzcz1cImx6aHkteGRcIj7kuIvot4zvvJo8c3BhbiBzdHlsZT1cImNvbG9yOiMwMDk5MDA7XCI+JyArIF94ZGpzICsgJzwvc3Bhbj7lrrY8L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX25hbWUgPT0gXCJcIiB8fCBfbmFtZSA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcklubmVyUm93ICs9ICc8bGkgY2xhc3M9XCJsemh5LWx6Z1wiPumihua2qOiCoe+8mi08L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcklubmVyUm93ICs9ICc8bGkgY2xhc3M9XCJsemh5LWx6Z1wiPumihua2qOiCoe+8mjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBfbWFya2V0ICsgJy4nICsgX2NvZGUgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIF9uYW1lICsgJzwvYT48L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJJbm5lclJvdyArPSAnPGxpPua2qOW5he+8mjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIHpkQ29sb3IgKyAnO1wiPicgKyBfemRmICsgJzwvc3Bhbj48L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJJbm5lclJvdyArPSAnPC91bD4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySW5uZXJSb3cgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0Rm9vdGVyRGl2LmlubmVySFRNTCA9IGZvb3RlcklubmVyUm93O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWdQYXJlbnQuYXBwZW5kQ2hpbGQoY2hhcnRGb290ZXJEaXYpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBOZXdzSW1nOiBmdW5jdGlvbiAoc2VjaWQsIGpzb24sIHRpcHNJbWFnZVJlbWFyaykge1xyXG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgcHJpY2UgPSBqc29uLmRhdGEuZjQzOy8v5pyA5paw5Lu3XHJcbiAgICAgICAgICAgIHZhciBjamwgPSBqc29uLmRhdGEuZjQ3ID09IFwiLVwiID8gXCItXCIgOiAoX3RoaXMuZ3NoTnVtKGpzb24uZGF0YS5mNDcpICsgXCLmiYtcIik7Ly/miJDkuqTph49cclxuICAgICAgICAgICAgdmFyIGNqZSA9IGpzb24uZGF0YS5mNDggPT0gXCItXCIgPyBcIi1cIiA6IF90aGlzLmdzaE51bShqc29uLmRhdGEuZjQ4KTsvL+aIkOS6pOminVxyXG4gICAgICAgICAgICB2YXIgc3RvY2tDb2RlID0ganNvbi5kYXRhLmY1NzsvL+S7o+eggVxyXG4gICAgICAgICAgICB2YXIgc3RvY2tOYW1lID0ganNvbi5kYXRhLmY1ODsvL+WQjeensFxyXG4gICAgICAgICAgICB2YXIgc3RvY2tNYXJrZXQgPSBqc29uLmRhdGEuZjEwNzsvL+W4guWculxyXG4gICAgICAgICAgICB2YXIgaHNsID0ganNvbi5kYXRhLmYxNjg7Ly/mjaLmiYvnjodcclxuICAgICAgICAgICAgaHNsID0gKGhzbCA9PSBcIi1cIiA/IFwiLVwiIDogKF90aGlzLmdzaFpkKGhzbCkgKyBcIiVcIikpXHJcbiAgICAgICAgICAgIHZhciB6ZGUgPSBqc29uLmRhdGEuZjE2OTsvL+a2qOi3jOminVxyXG4gICAgICAgICAgICB2YXIgemRmID0ganNvbi5kYXRhLmYxNzA7Ly/mtqjot4zluYVcclxuICAgICAgICAgICAgemRmID0gKHpkZiA9PSBcIi1cIiA/IFwiLVwiIDogKF90aGlzLmdzaFpkKHpkZikgKyBcIiVcIikpXHJcbiAgICAgICAgICAgIHZhciBzeWwgPSBqc29uLmRhdGEuZjE2MjsvL+W4guebiOeOhyjliqjmgIEpXHJcbiAgICAgICAgICAgIHZhciB6c3ogPSBqc29uLmRhdGEuZjExNjsvL+aAu+W4guWAvFxyXG5cclxuICAgICAgICAgICAgdmFyIGltZ1BhcmVudCA9IHRpcHNJbWFnZVJlbWFyay5wYXJlbnROb2RlO1xyXG4gICAgICAgICAgICBpbWdQYXJlbnQuY2xhc3NOYW1lID0gXCJiLWNoYXJ0IGNsZWFycFwiO1xyXG4gICAgICAgICAgICBqUXVlcnkodGlwc0ltYWdlUmVtYXJrKS5jaGlsZHJlbigpLmF0dHIoXCJzdHlsZVwiLCBcIlwiKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBfX01hcmtldCA9IF90aGlzLmdldE1hcmtldChzdG9ja01hcmtldCwgc3RvY2tDb2RlKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBpbWdTcmMgPSB0aXBzSW1hZ2VSZW1hcmsuY2hpbGROb2Rlc1swXS5zcmM7XHJcbiAgICAgICAgICAgIHZhciB6ZENvbG9yID0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKHpkZSA+IDApIHpkQ29sb3IgPSBcIiNGRjAwMDBcIjtcclxuICAgICAgICAgICAgZWxzZSBpZiAoemRlIDwgMCkgemRDb2xvciA9IFwiIzAwOTkwMFwiO1xyXG5cclxuICAgICAgICAgICAgaWYgKF9fTWFya2V0LlR5cGUgIT0gXCJ6c1wiKSB7Ly/lpITnkIblm77ooajlt6bkvqdcclxuICAgICAgICAgICAgICAgIHZhciBjaGFydExlZnREaXYgPSAkQyhcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGNoYXJ0TGVmdERpdi5jbGFzc05hbWUgPSBcImNoYXJ0LWxlZnQyXCI7XHJcbiAgICAgICAgICAgICAgICBjaGFydExlZnREaXYuaWQgPSBcImNoYXJ0bGVmdDJcIiArIHN0b2NrQ29kZSArIGNoYXJ0SWQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnPGRpdiBzdHlsZT1cImJvcmRlci1sZWZ0OiAycHggc29saWQgIzM5NTQ5MTtsaW5lLWhlaWdodDoxNHB4O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6MTNweCAwO1wiPjxhIHN0eWxlPVwiY29sb3I6IzM2MzYzNjtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsgc3RvY2tNYXJrZXQgKyAnLicgKyBzdG9ja0NvZGUgKyAnP2Zyb209Y2xhc3NpYyZldmVudGNvZGU9V2ViX3F1b3RlX2VudHJhbmNlMVwiIHRyYWNrZXItZXZlbnRjb2RlPVwiZ3BwZF96eHp3eV9ocXRnbWtfZGpreHRcIiB0cmFja2VyLWV4dGluZm89XCJzb3VyY2U6bmV3c2NoYW5uZWw7XCI+Szxicj7nur/lm748L2E+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2FhYTtib3JkZXItYm90dG9tOjA7YmFja2dyb3VuZDojZjJmMmYyO2xpbmUtaGVpZ2h0OjE0cHg7Zm9udC1zaXplOjEycHg7cGFkZGluZzoxM3B4IDA7XCI+PGEgc3R5bGU9XCJjb2xvcjojMzYzNjM2O1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3N0b2NrZGF0YS8nICsgc3RvY2tDb2RlICsgJy5odG1sXCIgdHJhY2tlci1ldmVudGNvZGU9XCJncHBkX3p4end5X2hxdGdta19kanRzc2pcIiB0cmFja2VyLWV4dGluZm89XCJzb3VyY2U6bmV3c2NoYW5uZWw7XCI+54m56Imy5pWw5o2uPC9hPjwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGRpdiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNhYWE7Ym9yZGVyLWJvdHRvbTowO2JhY2tncm91bmQ6I2YyZjJmMjtsaW5lLWhlaWdodDoxNHB4O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6MTNweCAwO1wiPjxhIHN0eWxlPVwiY29sb3I6IzM2MzYzNjtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4LycgKyBzdG9ja0NvZGUgKyAnLmh0bWxcIiB0cmFja2VyLWV2ZW50Y29kZT1cImdwcGRfenh6d3lfaHF0Z21rX2RqempseFwiIHRyYWNrZXItZXh0aW5mbz1cInNvdXJjZTpuZXdzY2hhbm5lbDtcIj7otYTph5HmtYHlkJE8L2E+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2FhYTtib3JkZXItYm90dG9tOjA7YmFja2dyb3VuZDojZjJmMmYyO2xpbmUtaGVpZ2h0OjE0cHg7Zm9udC1zaXplOjEycHg7cGFkZGluZzoyMHB4IDA7XCI+PGEgc3R5bGU9XCJjb2xvcjojMzYzNjM2O1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL25vdGljZXMvc3RvY2svJyArIHN0b2NrQ29kZSArICcuaHRtbFwiIHRyYWNrZXItZXZlbnRjb2RlPVwiZ3BwZF96eHp3eV9ocXRnbWtfZGpnZ1wiIHRyYWNrZXItZXh0aW5mbz1cInNvdXJjZTpuZXdzY2hhbm5lbDtcIj7lhazlkYo8L2E+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2FhYTtib3JkZXItYm90dG9tOjA7YmFja2dyb3VuZDojZjJmMmYyO2xpbmUtaGVpZ2h0OjE0cHg7Zm9udC1zaXplOjEycHg7cGFkZGluZzoxM3B4IDA7XCI+PGEgc3R5bGU9XCJjb2xvcjojMzYzNjM2O1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3N0b2NrY2FsZW5kYXIvJyArIHN0b2NrQ29kZSArICcuaHRtbFwiIHRyYWNrZXItZXZlbnRjb2RlPVwiZ3BwZF96eHp3eV9ocXRnbWtfZGpnZ3JsXCIgdHJhY2tlci1leHRpbmZvPVwic291cmNlOm5ld3NjaGFubmVsO1wiPuS4quiCoeaXpeWOhjwvYT48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxkaXYgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjYWFhO2JhY2tncm91bmQ6I2YyZjJmMjtsaW5lLWhlaWdodDoxNHB4O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6MTNweCAwIDEycHggMDtjbGVhcjogcmlnaHQ7XCI+PGEgc3R5bGU9XCJjb2xvcjojMzYzNjM2O1wiIGhyZWY9XCJodHRwczovL2Vtd2ViLnNlY3VyaXRpZXMuZWFzdG1vbmV5LmNvbS9wY19oc2YxMC9wYWdlcy9pbmRleC5odG1sP3R5cGU9d2ViJmNvZGU9JyArIF9fTWFya2V0LkNvZGUgKyAnJmNvbG9yPWIjL2h4dGNcIiB0cmFja2VyLWV2ZW50Y29kZT1cImdwcGRfenh6d3lfaHF0Z21rX2RqaHh0Y1wiIHRyYWNrZXItZXh0aW5mbz1cInNvdXJjZTpuZXdzY2hhbm5lbDtcIj7moLjlv4PpopjmnZA8L2E+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgIGNoYXJ0TGVmdERpdi5pbm5lckhUTUwgPSBfaHRtbDtcclxuICAgICAgICAgICAgICAgIGltZ1BhcmVudC5pbnNlcnRCZWZvcmUoY2hhcnRMZWZ0RGl2LCB0aXBzSW1hZ2VSZW1hcmspO1xyXG4gICAgICAgICAgICAgICAgLy9jaGFydExlZnREaXYuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjaGFydFJpZ2h0RGl2ID0gJEMoXCJkaXZcIik7XHJcbiAgICAgICAgICAgIGNoYXJ0UmlnaHREaXYuY2xhc3NOYW1lID0gXCJjaGFydC1yaWdodFwiO1xyXG4gICAgICAgICAgICBjaGFydFJpZ2h0RGl2LmlkID0gXCJjaGFydFwiICsgc3RvY2tDb2RlICsgY2hhcnRJZDtcclxuICAgICAgICAgICAgY2hhcnRJZCsrO1xyXG4gICAgICAgICAgICB6ZGYgPSAnPHNwYW4gc3R5bGU9XCJjb2xvcjonICsgemRDb2xvciArICdcIj4nICsgemRmICsgJzwvc3Bhbj4nO1xyXG5cclxuICAgICAgICAgICAgaWYgKF9fTWFya2V0LlR5cGUgIT0gXCJ6c1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjaGFydFJpZ2h0RGl2LmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7cGFkZGluZzogMTVweCAxNXB4IDVweCAwO1wiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jb25jZXB0LycgKyBfX01hcmtldC5Db2RlICsgJy5odG1sP2Zyb209Y2xhc3NpYyZldmVudGNvZGU9V2ViX3F1b3RlX2VudHJhbmNlMSNmc2NoYXJ0LXJcIiB0cmFja2VyLWV2ZW50Y29kZT1cImdwcGRfenh6d3lfaHF0Z21rX3FocXBcIiB0cmFja2VyLWV4dGluZm89XCJzb3VyY2U6bmV3c2NoYW5uZWw7XCI+PGltZyBzcmM9XCIvL2cxLmRmY2Z3LmNvbS9nMy8yMDE4MDgvMjAxODA4MjIxMTIxNTQucG5nXCIgLz48L2E+PC9kaXY+PHA+5pyA5paw5Lu377yaPHNwYW4gc3R5bGU9XCJjb2xvcjonICsgemRDb2xvciArICdcIj4nICsgcHJpY2UgKyAnPC9zcGFuPjwvcD48cD7mtqjot4zpop3vvJo8c3BhbiBzdHlsZT1cImNvbG9yOicgKyB6ZENvbG9yICsgJ1wiPicgKyB6ZGUgKyAnPC9zcGFuPjwvcD48cD7mtqjot4zluYXvvJonICsgemRmICsgJzwvcD48cD7miJDkuqTph4/vvJonICsgY2psICsgJzwvcD48cD7miJDkuqTpop3vvJonICsgY2plICsgJzwvcD48cD7mjaLmiYvnjofvvJonICsgaHNsICsgJzwvcD4nO1xyXG4gICAgICAgICAgICAgICAgaW1nUGFyZW50LmFwcGVuZENoaWxkKGNoYXJ0UmlnaHREaXYpO1xyXG4gICAgICAgICAgICAgICAgY2hhcnRSaWdodERpdi5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcIm1hcmdpbi10b3A6MHB4O1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgaCA9ICc8cD7luILnm4jnjofvvJonICsgc3lsICsgJzxzcGFuPjwvc3Bhbj48L3A+PHA+5oC75biC5YC877yaJyArICh6c3ogPT0gXCItXCIgPyBcIi1cIiA6IF90aGlzLmdzaE51bSh6c3opKSArICc8c3Bhbj48L3NwYW4+PC9wPic7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoXCIjXCIgKyBjaGFydFJpZ2h0RGl2LmlkKS5hcHBlbmQoaCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjaGFydFJpZ2h0RGl2LmlubmVySFRNTCA9ICc8cD7mnIDmlrDku7fvvJo8c3BhbiBzdHlsZT1cImNvbG9yOicgKyB6ZENvbG9yICsgJ1wiPicgKyBwcmljZSArICc8L3NwYW4+PC9wPjxwPua2qOi3jOmine+8mjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIHpkQ29sb3IgKyAnXCI+JyArIHpkZSArICc8L3NwYW4+PC9wPjxwPua2qOi3jOW5he+8micgKyB6ZGYgKyAnPC9wPjxwPuaIkOS6pOmHj++8micgKyBjamwgKyAnPC9wPjxwPuaIkOS6pOmine+8micgKyBjamUgKyAnPC9wPjxwPuaNouaJi+eOh++8micgKyBoc2wgKyAnPC9wPic7XHJcbiAgICAgICAgICAgICAgICBpbWdQYXJlbnQuYXBwZW5kQ2hpbGQoY2hhcnRSaWdodERpdik7XHJcbiAgICAgICAgICAgICAgICBjaGFydFJpZ2h0RGl2LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwibWFyZ2luLXRvcDoyMHB4O1wiKTtcclxuICAgICAgICAgICAgICAgIHRpcHNJbWFnZVJlbWFyay5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcInBhZGRpbmctbGVmdDoyMHB4O1wiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGNoYXJ0TmF2RGl2ID0gJEMoXCJkaXZcIik7XHJcbiAgICAgICAgICAgIGNoYXJ0TmF2RGl2LmNsYXNzTmFtZSA9IFwiY2hhcnQtbmF2IGNsZWFyXCI7XHJcbiAgICAgICAgICAgIGlmIChfX01hcmtldC5UeXBlICE9IFwienNcIikge1xyXG4gICAgICAgICAgICAgICAgY2hhcnROYXZEaXYuaW5uZXJIVE1MID0gJzxhIGNsYXNzPVwiaXBsX3QxXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIHN0b2NrTWFya2V0ICsgJy4nICsgc3RvY2tDb2RlICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiIHRyYWNrZXItZXZlbnRjb2RlPVwiV2ViX3p3aHFsal9jeGdnaHFcIiB0cmFja2VyLWV4dGluZm89XCJhcnRpY2xlSUQ6JyArIF9OZXdzSWQgKyAnO1wiPuafpeivouivpeiCoeihjOaDhTwvYT4mbmJzcDsmbmJzcDs8YSBjbGFzcz1cImlwbF90NFwiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvJyArIHN0b2NrQ29kZSArICcuaHRtbFwiIHRhcmdldD1cIl9ibGFua1wiIHRyYWNrZXItZXZlbnRjb2RlPVwiV2ViX3p3aHFsal9zc3pqbHhcIiB0cmFja2VyLWV4dGluZm89XCJhcnRpY2xlSUQ6JyArIF9OZXdzSWQgKyAnO1wiPuWunuaXtui1hOmHkea1geWQkTwvYT4mbmJzcDsmbmJzcDs8YSBjbGFzcz1cImlwbF90M1wiIGhyZWY9XCJodHRwczovL2Vtd2ViLnNlY3VyaXRpZXMuZWFzdG1vbmV5LmNvbS9wY19oc2YxMC9wYWdlcy9pbmRleC5odG1sP3R5cGU9d2ViJmNvZGU9JyArIF9fTWFya2V0LkNvZGUgKyAnJmNvbG9yPWIjL2NwYmRcIiB0YXJnZXQ9XCJfYmxhbmtcIiB0cmFja2VyLWV2ZW50Y29kZT1cIldlYl96d2hxbGpfc2RzamptXCIgdHJhY2tlci1leHRpbmZvPVwiYXJ0aWNsZUlEOicgKyBfTmV3c0lkICsgJztcIj7mt7HluqbmlbDmja7mj63np5g8L2E+Jm5ic3A7Jm5ic3A7PGEgY2xhc3M9XCJpcGxfdDJcIiBocmVmPVwiaHR0cDovL2d1YmEuZWFzdG1vbmV5LmNvbS9saXN0LCcgKyBzdG9ja0NvZGUgKyAnLmh0bWxcIiB0YXJnZXQ9XCJfYmxhbmtcIiB0cmFja2VyLWV2ZW50Y29kZT1cIldlYl96d2hxbGpfanJnYlwiIHRyYWNrZXItZXh0aW5mbz1cImFydGljbGVJRDonICsgX05ld3NJZCArICc7XCI+6L+b5YWlJyArIHN0b2NrTmFtZSArICflkKc8L2E+Jm5ic3A7Jm5ic3A7PGEgY2xhc3M9XCJpcGxfdDVcIiBocmVmPVwiaHR0cDovL2pzMS5lYXN0bW9uZXkuY29tL3RnLmFzcHg/SUQ9NDQ4XCIgdGFyZ2V0PVwiX2JsYW5rXCIgdHJhY2tlci1ldmVudGNvZGU9XCJXZWJfendocWxqX3pqbFwiIHRyYWNrZXItZXh0aW5mbz1cImFydGljbGVJRDonICsgX05ld3NJZCArICc7XCI+JyArIHN0b2NrTmFtZSArICfotYTph5HmtYE8L2E+JztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYXJ0TmF2RGl2LmlubmVySFRNTCA9ICc8YSBjbGFzcz1cImlwbF90MVwiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBzdG9ja01hcmtldCArICcuJyArIHN0b2NrQ29kZSArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsgc3RvY2tOYW1lICsgJ+ihjOaDhTwvYT4mbmJzcDsmbmJzcDs8YSBjbGFzcz1cImlwbF90NlwiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvcGFpaGFuZy5odG1sI3BhaWhhbmdfMF8wXCIgdGFyZ2V0PVwiX2JsYW5rXCI+6aKG5rao5Liq6IKhPC9hPiZuYnNwOyZuYnNwOzxhIGNsYXNzPVwiaXBsX3Q0XCIgaHJlZj1cImh0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vempseC9cIiB0YXJnZXQ9XCJfYmxhbmtcIj7lpKfnm5jotYTph5HmtYHlkJE8L2E+Jm5ic3A7Jm5ic3A7PGEgY2xhc3M9XCJpcGxfdDNcIiBocmVmPVwiaHR0cDovL2t1YWl4dW4uZWFzdG1vbmV5LmNvbS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj43KjI05bCP5pe25b+r6K6vPC9hPiZuYnNwOyZuYnNwOzxhIGNsYXNzPVwiaXBsX3QyXCIgaHJlZj1cImh0dHA6Ly9ndWJhLmVhc3Rtb25leS5jb20vZ3ViYV91cmwuYXNweD9jb2RlPScgKyAoc3RvY2tNYXJrZXQgPT0gXCIxXCIgPyBcInNoXCIgOiBcInN6XCIpICsgc3RvY2tDb2RlICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPui/m+WFpScgKyBzdG9ja05hbWUgKyAn5ZCnPC9hPic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW1nUGFyZW50LmFwcGVuZENoaWxkKGNoYXJ0TmF2RGl2KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChfX01hcmtldC5UeXBlICE9IFwienNcIikge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuWGlhbmdHdWFuR3VQaWFvKHNlY2lkLCBpbWdQYXJlbnQpOy8v55u45YWz6IKh56Wo5ZKM55u45YWz5p2/5Z2XXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5aaGlTaHVMaW5nWmhhbmdIYW5nWWUoaW1nUGFyZW50KTsvL+mihua2qOihjOS4mlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XHJcbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUgIT0gXCJcIiB8fCBjbGFzc05hbWUgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpcHNJbWFnZVJlbWFyayA9IHRoaXMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIkNvbnRlbnRCb2R5XCIsIGNsYXNzTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaHJlZiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNyYyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGkgPSAwO1xyXG4gICAgICAgICAgICAgICAgdmFyIEJvZHlFbmRPYmogPSAkKFwiQ29udGVudEJvZHlcIik7XHJcbiAgICAgICAgICAgICAgICB2YXIgQm9keU5leHROb2RlID0gQm9keUVuZE9iai5uZXh0U2libGluZztcclxuICAgICAgICAgICAgICAgIHdoaWxlIChCb2R5TmV4dE5vZGUubm9kZVR5cGUgIT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIEJvZHlOZXh0Tm9kZSA9IEJvZHlOZXh0Tm9kZS5uZXh0U2libGluZztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGlwc0ltYWdlUmVtYXJrICE9IHVuZGVmaW5lZCAmJiB0aXBzSW1hZ2VSZW1hcmsgIT0gbnVsbCAmJiB0aXBzSW1hZ2VSZW1hcmsgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlwc0ltYWdlUmVtYXJrLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbWdQYXJlbnQgPSB0aXBzSW1hZ2VSZW1hcmtbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWdQYXJlbnQuY2xhc3NOYW1lLmluZGV4T2YoXCJEaXNhYmxlT3RoZXJcIikgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGltZ25vZGVzID0gaW1nUGFyZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaW1nXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1nbm9kZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kYXRhLWNvZGU9XCJLIHvogqHnpajku6PnoIF9fHvooYzmg4XmnI3liqHpg6jluILlnLrlj7d9fHvogIHnmoTluILlnLrvvIjnvZHnq5nvvIl9XCIgZGF0YS1jb2RlMj1cIksge+iCoeelqOS7o+eggX18e+ihjOaDheacjeWKoemDqOW4guWcuuWPt318e+W4guWcuue7huWIhuexu++8iOWFt+S9k+WQq+S5ieWujOS6hu+8jOmtj+S4nOa1t+imgeeahO+8iX18XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2RhdGFjb2RlMiA9IHRpcHNJbWFnZVJlbWFya1tpXS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWNvZGUyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhY29kZTIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZGF0YWNvZGUySXRlbSA9IF9kYXRhY29kZTIuc3BsaXQoJ3wnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZltpXSA9IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci9cIiArIF9kYXRhY29kZTJJdGVtWzFdICsgXCIuXCIgKyBfZGF0YWNvZGUySXRlbVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdQYXJlbnQuaHJlZiA9IGhyZWZbaV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfS1IgPSBpbWdub2Rlc1swXS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWNvZGUyXCIpLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1tpXSA9IGltZ25vZGVzWzBdLnNyYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX0tSID09IFwia1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1tpXSA9IHNyY1tpXS5yZXBsYWNlKFwiaW1hZ2VUeXBlPWtcIiwgXCJpbWFnZVR5cGU9a25ld3NcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ25vZGVzWzBdLnNyYyA9IHNyY1tpXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChfZGF0YWNvZGUySXRlbVsxXSA9PSBcIjBcIiB8fCBfZGF0YWNvZGUySXRlbVsxXSA9PSBcIjFcIikgJiYgKF9kYXRhY29kZTJJdGVtWzJdID09IFwiNVwiIHx8IF9kYXRhY29kZTJJdGVtWzJdID09IFwiNlwiIHx8IF9kYXRhY29kZTJJdGVtWzJdID09IFwiN1wiIHx8IF9kYXRhY29kZTJJdGVtWzJdID09IFwiMVwiIHx8IF9kYXRhY29kZTJJdGVtWzJdID09IFwiMlwiIHx8IF9kYXRhY29kZTJJdGVtWzJdID09IFwiM1wiIHx8IF9kYXRhY29kZTJJdGVtWzJdID09IFwiMTNcIiB8fCBfZGF0YWNvZGUySXRlbVsyXSA9PSBcIjgwXCIgfHwgX2RhdGFjb2RlMkl0ZW1bMl0gPT0gXCIyM1wiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRJbWcoX2RhdGFjb2RlMkl0ZW1bMF0sIF9kYXRhY29kZTJJdGVtWzFdLCB0aXBzSW1hZ2VSZW1hcmtbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdub2Rlc1swXS53aWR0aCA9IFwiNTMwXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdub2Rlc1swXS5oZWlnaHQgPSBcIjI3NlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBia1RpcEFyZWFzID0gdGhpcy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiQ29udGVudEJvZHlcIiwgXCJFbV9OZXdzQmtcIik7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmtUaXBBcmVhcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgYmtUaXBBcmVhc1tpXS5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cImJrTGlua0xpc3RcIj4nICsgJzxkaXYgY2xhc3M9XCJoYUxpbmtcIj48YiBjbGFzcz1cImJrX2ljbyBoYVwiPjwvYj48ZGl2IGNsYXNzPVwibG1jXCI+5rKqQe+8mjwvZGl2PjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwXzBfMF91P3NvcnRUeXBlPUMmc29ydFJ1bGU9LTFcIiB0YXJnZXQ9XCJfYmxhbmtcIj7mtqjluYXmppw8L2E+PHNwYW4gY2xhc3M9XCJsXCI+772cPC9zcGFuPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwXzBfMF9kP3NvcnRUeXBlPUMmc29ydFJ1bGU9MVwiIHRhcmdldD1cIl9ibGFua1wiPui3jOW5heamnDwvYT48c3BhbiBjbGFzcz1cImxcIj7vvZw8L3NwYW4+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMTBfMF8wX3U/c29ydFR5cGU9RiZzb3J0UnVsZT0tMVwiIHRhcmdldD1cIl9ibGFua1wiPuaIkOS6pOmHjzwvYT48c3BhbiBjbGFzcz1cImxcIj7vvZw8L3NwYW4+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMTBfMF8wX3U/c29ydFR5cGU9RyZzb3J0UnVsZT0tMVwiIHRhcmdldD1cIl9ibGFua1wiPuS6lOWIhumSn+a2qOi3jOamnDwvYT48L2Rpdj4nICsgJzxkaXYgY2xhc3M9XCJoYkxpbmtcIj48YiBjbGFzcz1cImJrX2ljbyBoYlwiPjwvYj48ZGl2IGNsYXNzPVwibG1jXCI+5rexQe+8mjwvZGl2PjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwXzBfMF91P3NvcnRUeXBlPUMmc29ydFJ1bGU9LTFcIiB0YXJnZXQ9XCJfYmxhbmtcIj7mtqjluYXmppw8L2E+PHNwYW4gY2xhc3M9XCJsXCI+772cPC9zcGFuPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwXzBfMF9kP3NvcnRUeXBlPUMmc29ydFJ1bGU9MVwiIHRhcmdldD1cIl9ibGFua1wiPui3jOW5heamnDwvYT48c3BhbiBjbGFzcz1cImxcIj7vvZw8L3NwYW4+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjBfMF8wX3U/c29ydFR5cGU9RiZzb3J0UnVsZT0tMVwiIHRhcmdldD1cIl9ibGFua1wiPuaIkOS6pOmHjzwvYT48c3BhbiBjbGFzcz1cImxcIj7vvZw8L3NwYW4+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjBfMF8wX3U/c29ydFR5cGU9RyZzb3J0UnVsZT0tMVwiIHRhcmdldD1cIl9ibGFua1wiPuS6lOWIhumSn+a2qOi3jOamnDwvYT48L2Rpdj4nICsgJzxkaXYgY2xhc3M9XCJsekxpbmtcIj48YiBjbGFzcz1cImJrX2ljbyBselwiPjwvYj48ZGl2IGNsYXNzPVwibG1jXCI+6aKG5rao5p2/5Z2X77yaPC9kaXY+PGRpdiBpZD1cImJrTGlzdF9semJrXCI+PC9kaXY+PC9kaXY+JyArICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pb092ZXJhbGwoXCJodHRwOi8vaHEyZGF0YS5lYXN0bW9uZXkuY29tL2JrL2RhdGEvYmthbnQuanNcIiwgXCJcIiwgXCJCS0NhY2hlXCIsXHJcblx0XHRcdFx0ZnVuY3Rpb24gKGRhdGEpIHtcclxuXHRcdFx0XHQgICAgaWYgKGRhdGEgJiYgZGF0YS5Ub3AgJiYgZGF0YS5Ub3AubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIGx6ZyA9IGRhdGEuVG9wWzBdO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHNob3dTdHIgPSBcIlwiO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHRlbXBEYXRhID0gXCJcIjtcclxuXHRcdFx0XHQgICAgICAgIHZhciBfY29sb3IgPSBcIlwiO1xyXG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgbHogaW4gbHpnKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgdGVtcERhdGEgPSBsemdbbHpdLnNwbGl0KFwiLFwiKTtcclxuXHRcdFx0XHQgICAgICAgICAgICBfY29sb3IgPSBwYXJzZUZsb2F0KHRlbXBEYXRhWzFdKSA9PSAwID8gXCJcIiA6IHBhcnNlRmxvYXQodGVtcERhdGFbMV0pID4gMCA/IFwicmVkXCIgOiBcImdyZWVuXCI7XHJcblx0XHRcdFx0ICAgICAgICAgICAgc2hvd1N0ciArPSBcIjxhIGhyZWY9XFxcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjgwMFwiICsgdGVtcERhdGFbMTBdICsgdGVtcERhdGFbOV0gKyBcIl8wXzJcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5cIiArIHRlbXBEYXRhWzBdICsgXCI8L2E+PHNwYW4gY2xhc3M9XFxcInpmXFxcIj4oPHNwYW4gY2xhc3M9XFxcIlwiICsgX2NvbG9yICsgXCJcXFwiPlwiICsgdGVtcERhdGFbMV0gKyBcIjwvc3Bhbj4pPC9zcGFuPlwiXHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAkKFwiYmtMaXN0X2x6YmtcIikuaW5uZXJIVE1MID0gc2hvd1N0cjtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH0pO1xyXG4gICAgICAgICAgICAgICAgYmtUaXBBcmVhc1tpXS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGluaXRJbWc6IGZ1bmN0aW9uIChfc3RvY2tjb2RlLCBfc3RvY2ttYXJrZXQsIHRpcHNJbWFnZVJlbWFyaykge1xyXG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgc2VjaWQgPSBfc3RvY2ttYXJrZXQgKyBcIi5cIiArIF9zdG9ja2NvZGU7XHJcbiAgICAgICAgICAgIC8v6KGM5oOF5Zu+5LiA5ZyIXHJcbiAgICAgICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC9zdG9jay9nZXQ/Zmx0dD0yJmZpZWxkcz1mNTcsZjU4LGYxMDcsZjQzLGYxNjgsZjE2OSxmMTcwLGY0NyxmNDgsZjE2MixmMTE2JnNlY2lkPVwiICsgc2VjaWQgKyBcIiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOSZjYj0/XCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLnJjID09IFwiMFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLk5ld3NJbWcoc2VjaWQsIGpzb24sIHRpcHNJbWFnZVJlbWFyayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGlvT3ZlcmFsbDogZnVuY3Rpb24gKHNyYywgY2hhcnNldCwgZGF0YVZhciwgY2FsbGJhY2ssIG5vZGVPYmopIHtcclxuICAgICAgICAgICAgdmFyIHNjcmlwdCA9ICRDKFwic2NyaXB0XCIpO1xyXG4gICAgICAgICAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XHJcbiAgICAgICAgICAgIHNjcmlwdC5jaGFyc2V0ID0gKGNoYXJzZXQgPT0gXCJcIikgPyBcIkdCMjMxMlwiIDogY2hhcnNldDtcclxuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcclxuICAgICAgICAgICAgc2NyaXB0Ll8waiA9IHRoaXM7XHJcbiAgICAgICAgICAgIHNjcmlwdFtkb2N1bWVudC5hbGwgPyBcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiIDogXCJvbmxvYWRcIl0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYWxsICYmIHRoaXMucmVhZHlTdGF0ZSAhPSBcImxvYWRlZFwiICYmIHRoaXMucmVhZHlTdGF0ZSAhPSBcImNvbXBsZXRlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXNbZG9jdW1lbnQuYWxsID8gXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIiA6IFwib25sb2FkXCJdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlT2JqKSBjYWxsYmFjayhldmFsKGRhdGFWYXIpLCBub2RlT2JqKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGxiYWNrKGV2YWwoZGF0YVZhcikpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcylcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpLml0ZW0oMCkuYXBwZW5kQ2hpbGQoc2NyaXB0KVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICAgIC8v6LCD55So5Zu+6ZuGXHJcbiAgICAgICAgdmFyIGVuc2l0ID0gbmV3IG5ld3NpbWcoXCJFbUltYWdlUmVtYXJrXCIpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZHNxX3VwZGF0ZUVtSW1hZ2VSZW1hcmsgPSBzZXRJbnRlcnZhbCh1cGRhdGVFbUltYWdlUmVtYXJrLDEwMCk7XHJcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChkc3FfdXBkYXRlRW1JbWFnZVJlbWFyaylcclxuICAgIH0sMjAwMDApXHJcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbmV3c2ltZy9uZXdzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCIhZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShvKXtpZihuW29dKXJldHVybiBuW29dLmV4cG9ydHM7dmFyIGk9bltvXT17aTpvLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbb10uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsZSksaS5sPSEwLGkuZXhwb3J0c312YXIgbj17fTtlLm09dCxlLmM9bixlLmk9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZD1mdW5jdGlvbih0LG4sbyl7ZS5vKHQsbil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpvfSl9LGUubj1mdW5jdGlvbih0KXt2YXIgbj10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdFtcImRlZmF1bHRcIl19OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O3JldHVybiBlLmQobixcImFcIixuKSxufSxlLm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LGUucD1cIlwiLGUoZS5zPTgpfSh7MzpmdW5jdGlvbih0LGUpeyFmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe3ZhciBuPXRoaXM7bi5fb3B0aW9uPWUuZXh0ZW5kKCEwLHtpZDpcImJvZHlcIixzZWxlY3RJZDpcInNlbGVjdFRpcHNcIixhbGluZTohMCxyYW5nZTpbMSwyMF19LHQpLG4uJGNvbnRhaW5lcj1lKG4uX29wdGlvbi5pZCksbi5pbml0KCl9bi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5oYXNBcHBlbmQ9ITEsdC5lbGVtZW50TG9hZCgpLHQubW91c2V1cCgpfSxuLnByb3RvdHlwZS5lbGVtZW50TG9hZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC50aXBzSHRtbD0nPGRpdiBpZD1cIicrdC5fb3B0aW9uLnNlbGVjdElkKydcIj48ZGl2IGNsYXNzPVwic2VhcmNoX2J0blwiPjxpbWcgc3JjPVwiLy9nMS5kZmNmdy5jb20vZzIvMjAxNzExLzIwMTcxMTE2MTQyMjA5LnBuZ1wiIGFsdD1cIlwiPjxzcGFuPuaQnOe0ojwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29weV9idG5cIj7lpI3liLY8L2Rpdj48L2Rpdj4nLGUoXCJib2R5XCIpLmFwcGVuZCh0LnRpcHNIdG1sKSx0LiRjb250YWluZXIuY3NzKFwicG9zaXRpb25cIixcInJlbGF0aXZlXCIpLHQuY3NzVHh0PVwiI3NlbGVjdFRpcHN7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpub25lO2JhY2tncm91bmQ6I2ZmZjtjdXJzb3I6IHBvaW50ZXI7d2lkdGg6MTEycHg7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRTdFQUYxO2JveC1zaGFkb3c6MXB4IDFweCA1cHggcmdiYSgwLDAsMCwuMyl9I3NlbGVjdFRpcHM+ZGl2e2Zsb2F0OmxlZnQ7d2lkdGg6NTAlO2ZvbnQtc2l6ZToxMnB4O3RleHQtYWxpZ246Y2VudGVyfSNzZWxlY3RUaXBzIC5zZWFyY2hfYnRue2JhY2tncm91bmQtY29sb3I6I2ZmNDkwMTtjb2xvcjojZmZmfSNzZWxlY3RUaXBzIGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweDttYXJnaW4tdG9wOi0xcHh9XCIsdC5sb2FkQ3NzKHQuY3NzVHh0KSx0LiRzZWxlY3RUaXBzPWUoXCIjXCIrdC5fb3B0aW9uLnNlbGVjdElkKSx0LiRzZWFyY2g9ZShcIi5zZWFyY2hfYnRuXCIsdC4kc2VsZWN0VGlwcyksdC4kY29weT1lKFwiLmNvcHlfYnRuXCIsdC4kc2VsZWN0VGlwcyl9LG4ucHJvdG90eXBlLmxvYWRDc3M9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO2UudHlwZT1cInRleHQvY3NzXCI7dHJ5e2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCkpfWNhdGNoKG4pe2Uuc3R5bGVTaGVldC5jc3NUZXh0PXR9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKGUpfSxuLnByb3RvdHlwZS5nZXRTZWxlY3RUeHQ9ZnVuY3Rpb24oKXt2YXIgdD1cIlwiO3JldHVybiB0PWRvY3VtZW50LnNlbGVjdGlvbj90PWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLnRleHQ6ZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCksZS50cmltKHQudG9TdHJpbmcoKSl9LG4ucHJvdG90eXBlLm1vdXNldXA9ZnVuY3Rpb24oKXt2YXIgdCxuLG8saSxjPXRoaXMscz1jLiRzZWxlY3RUaXBzLmhlaWdodCgpLHA9Yy4kc2VsZWN0VGlwcy53aWR0aCgpLHI9MDtlKFwiYm9keVwiKS5jbGljayhmdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSh0LnRhcmdldCkucGFyZW50cyhjLl9vcHRpb24uaWQpLmxlbmd0aDwxJiZcIiNcIit0LnRhcmdldC5pZCE9Yy5fb3B0aW9uLmlkJiZjLiRzZWxlY3RUaXBzLmhpZGUoKX0sMTAwKX0pLGMuJGNvbnRhaW5lci5tb3VzZXVwKGZ1bmN0aW9uKGwpe2MudHh0PWMuZ2V0U2VsZWN0VHh0KCk7ZSh3aW5kb3cpLmhlaWdodCgpO3ZhciBkPWUod2luZG93KS53aWR0aCgpPDFlMz8xZTM6ZSh3aW5kb3cpLndpZHRoKCk7bD1sfHx3aW5kb3cuZXZlbnQsdD13aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wfHwwLG49d2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0fHwwLG89Yy5fb3B0aW9uLmFsaW5lP2wuY2xpZW50WCtwPmQ/ZSh3aW5kb3cpLndpZHRoKCktcCtuOmwuY2xpZW50WCtuOmwuY2xpZW50WC1wPDA/bC5jbGllbnRYK246bC5jbGllbnRYLXArbisyLGUoXCIjZml4TWVudUJhclwiKS5sZW5ndGg+MCYmKHI9MzMpLGk9bC5jbGllbnRZLXMtcjwwP2wuY2xpZW50WSt0KzEwOmwuY2xpZW50WSt0LTM1LGMudHh0JiZjLnR4dC5sZW5ndGg+PWMuX29wdGlvbi5yYW5nZVswXSYmYy50eHQubGVuZ3RoPGMuX29wdGlvbi5yYW5nZVsxXT8oYy4kc2VsZWN0VGlwcy5jc3Moe2Rpc3BsYXk6XCJibG9ja1wiLGxlZnQ6bytcInB4XCIsdG9wOmkrXCJweFwifSksYy4kY29weS5hdHRyKFwiZGF0YS1jbGlwYm9hcmQtdGV4dFwiLGMudHh0KSk6Yy4kc2VsZWN0VGlwcy5oaWRlKCl9KSxjLmVuZW50cygpfSxuLnByb3RvdHlwZS5lbmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuJHNlbGVjdFRpcHMub24oXCJjbGlja1wiLFwiLnNlYXJjaF9idG5cIixmdW5jdGlvbigpe3dpbmRvdy5vcGVuKFwiaHR0cDovL3NvLmVhc3Rtb25leS5jb20vd2ViL3M/a2V5d29yZD1cIitlbmNvZGVVUklDb21wb25lbnQodC50eHQpKSx0LiRzZWxlY3RUaXBzLmhpZGUoKX0pLHdpbmRvdy5BY3RpdmVYT2JqZWN0P3QuJHNlbGVjdFRpcHMub24oXCJjbGlja1wiLFwiLmNvcHlfYnRuXCIsZnVuY3Rpb24oZSl7d2luZG93LmNsaXBib2FyZERhdGEuc2V0RGF0YShcIlRleHRcIix0LnR4dCksdC4kc2VsZWN0VGlwcy5oaWRlKCl9KTp0LmxvYWRTY3JpcHQoXCIvL2VtcmVzLmRmY2Z3LmNvbS9jb21tb24vanMvY2xpcGJvYXJkLm1pbi5qc1wiLGZ1bmN0aW9uKCl7bmV3IENsaXBib2FyZChcIi5jb3B5X2J0blwiKS5vbihcInN1Y2Nlc3NcIixmdW5jdGlvbihlKXt0LiRzZWxlY3RUaXBzLmhpZGUoKX0pfSl9LG4ucHJvdG90eXBlLmxvYWRTY3JpcHQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmhhc0FwcGVuZCllJiZlKCk7ZWxzZXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO24uc2V0QXR0cmlidXRlKFwidHlwZVwiLFwidGV4dC9qYXZhc2NyaXB0XCIpLG4uc2V0QXR0cmlidXRlKFwic3JjXCIsdCksbi5zZXRBdHRyaWJ1dGUoXCJjaGFyc2V0XCIsXCJ1dGYtOFwiKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQobiksbi5vbmxvYWQ9ZnVuY3Rpb24oKXtlJiZlKCl9fX0sdC5leHBvcnRzPW59KGpRdWVyeSl9LDg6ZnVuY3Rpb24odCxlLG4pe3ZhciBvPW4oMyk7d2luZG93LnBkdGlwcz1vfX0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wZHRpcHMuanMubWFwXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL3BkdGlwcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAxIiwidmFyIGhleF9tZDUgPSByZXF1aXJlKCcuLi9qcy9tb2R1bGVzL21kNScpO1xyXG52YXIgaW5pdExhbmdLZVZpZGVvID0gcmVxdWlyZSgnLi4vanMvbW9kdWxlcy9sYW5na2UvdW5pdGluZXdzMicpO1xyXG52YXIgdW5pdHl2b3RlID0gcmVxdWlyZSgnLi4vanMvbW9kdWxlcy92b3RlL3VuaXR5dm90ZScpO1xyXG52YXIgcGR0aXBzID0gcmVxdWlyZSgnLi4vanMvbW9kdWxlcy9wZHRpcHMnKTtcclxudmFyIGluaXROZXdzSU1HID0gcmVxdWlyZSgnLi4vanMvbW9kdWxlcy9uZXdzaW1nL25ld3MnKTtcclxuXHJcbmlmKGxvY2F0aW9uLmhvc3QgIT0gXCJmaW5hbmNlLmVhc3Rtb25leS5jb21cIil7XHJcbiAgICAvLyBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7ZWFzdG1vbmV5OiBcIlwifSwgXCJcIiwgXCJodHRwczovL2ZpbmFuY2UuZWFzdG1vbmV5LmNvbS9hL1wiK19OZXdzSWQrXCIuaHRtbFwiICsgbG9jYXRpb24uc2VhcmNoKTtcclxuICAgIC8vIGxvY2F0aW9uLmhyZWYgPSBcImh0dHBzOi8vZmluYW5jZS5lYXN0bW9uZXkuY29tL2EvXCIrX05ld3NJZCtcIi5odG1sXCIgKyBsb2NhdGlvbi5zZWFyY2g7XHJcbn1cclxuLy8gY29uc3QgcGFyYW1zU3RyID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaFxyXG4vLyBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtc1N0cilcclxuLy8gbGV0IGtleT0gcGFyYW1zLmdldCgnZW52Jyl8fCcnXHJcblxyXG52YXIgY29uZmlnID0ge1xyXG4gICAgXCJndWJhXCI6IFwiaHR0cHM6Ly9nYmFwaS5lYXN0bW9uZXkuY29tL1wiLFxyXG4gICAgXCJwdXNoXCI6IFwiaHR0cHM6Ly9wdXNoMi5lYXN0bW9uZXkuY29tL1wiLFxyXG4gICAgXCJuZXdzaW5mb1wiOlwiaHR0cHM6Ly9uZXdzaW5mby5lYXN0bW9uZXkuY29tL1wiXHJcbn07XHJcblxyXG5pZihsb2NhdGlvbi5zZWFyY2guaW5kZXhPZignZW52PXRlc3QnKSA+IDApe1xyXG4gICAgY29uZmlnLnB1c2ggPSBcImh0dHBzOi8vcHVzaDJ0ZXN0LmVhc3Rtb25leS5jb20vXCI7XHJcbn1cclxuXHJcbmlmKF9DTVNISiA9PSBcInRlc3RcIil7XHJcbiAgICBjb25maWcuZ3ViYSA9IFwiaHR0cHM6Ly9nYmFwaS10ZXN0LmVhc3Rtb25leS5jb20vXCI7XHJcbiAgICBjb25maWcubmV3c2luZm8gPSBcImh0dHBzOi8vc21zMi5lYXN0bW9uZXkuY29tL1wiO1xyXG59XHJcblxyXG52YXIgY29va2llID0ge1xyXG4gICAgZ2V0OiBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICAgICAgdmFyIHhhcnIgPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cChcIihefCApXCIgKyBuYW1lICsgXCI9KFteO10qKSg7fCQpXCIpKTtcclxuICAgICAgICBpZiAoeGFyciAhPSBudWxsKSByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHhhcnJbMl0pO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuICAgIHNldDogZnVuY3Rpb24oa2V5LCB2YWx1ZSwgZXhwaXJlZGF5cywgZG9tYWluKSB7XHJcbiAgICAgICAgdmFyIGNvb2tpZXN0ciA9IGtleSArIFwiPVwiICsgZXNjYXBlKHZhbHVlKVxyXG5cclxuICAgICAgICBpZiAoZXhwaXJlZGF5cyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdmFyIGV4ZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGV4ZGF0ZS5zZXREYXRlKGV4ZGF0ZS5nZXREYXRlKCkgKyBleHBpcmVkYXlzKTtcclxuICAgICAgICAgICAgY29va2llc3RyICs9IFwiO2V4cGlyZXM9XCIgKyBleGRhdGUudG9HTVRTdHJpbmcoKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZG9tYWluICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb29raWVzdHIgKz0gXCI7ZG9tYWluPVwiICsgZG9tYWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb29raWVzdHIgKz0gJztwYXRoPS8nO1xyXG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZXN0cjtcclxuXHJcbiAgICB9LFxyXG4gICAgZGVsOiBmdW5jdGlvbihrZXksIGRvbWFpbikge1xyXG4gICAgICAgIHZhciBleGRhdGUgPSBuZXcgRGF0ZSgobmV3IERhdGUpLmdldFRpbWUoKSAtIDEpO1xyXG4gICAgICAgIGlmIChkb21haW4pIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0ga2V5ICsgJz07cGF0aD0vO2V4cGlyZXM9JyArIGV4ZGF0ZS50b0dNVFN0cmluZygpICsgJztkb21haW49JyArIGRvbWFpbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBrZXkgKyAnPTtwYXRoPS87ZXhwaXJlcz0nICsgZXhkYXRlLnRvR01UU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufTtcclxuXHJcbnZhciB1c2VycGFzc3BvcnQgPSB7XHJcbiAgICAvKipcclxuICAgICAqIOiOt+WPlueUqOaIt+S/oeaBr1xyXG4gICAgICovXHJcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAoY29va2llLmdldCgndXQnKSAmJiBjb29raWUuZ2V0KCdjdCcpICYmIGNvb2tpZS5nZXQoJ3VpZGFsJykpIHtcclxuXHJcbiAgICAgICAgICAgIC8v6I635Y+W5YqgduS/oeaBr1xyXG4gICAgICAgICAgICB2YXIgamlhdiA9IHsgdnR5cGU6IG51bGwsIHN0YXRlOiBudWxsLCBuYW1lOiAnJyB9O1xyXG4gICAgICAgICAgICBpZiAoY29va2llLmdldCgndnRwc3QnKSAmJiBjb29raWUuZ2V0KCd2dHBzdCcpICE9ICd8Jykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGppYXZhcnIgPSBjb29raWUuZ2V0KCd2dHBzdCcpLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoamlhdmFyci5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmluZm8odHlwZW9mIGppYXZhcnJbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqaWF2YXJyWzFdID09IFwiMFwiIHx8IGppYXZhcnJbMV0gPT0gXCIzXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChqaWF2YXJyWzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiMzAxXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi52dHlwZSA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi5uYW1lID0gJ+eQhui0ouW4iCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiMzAyXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi52dHlwZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi5uYW1lID0gJ+mdnueQhui0ouW4iCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiMzAzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi52dHlwZSA9IDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi5uYW1lID0gJ+S8geS4mic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGppYXZhcnJbMV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIjBcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppYXYuc3RhdGUgPSAwOyAvL+WuoeaguOmAmui/h1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCIxXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWF2LnN0YXRlID0gMTE7IC8v5a6h5qC45pyq6YCa6L+HXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIjJcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppYXYuc3RhdGUgPSAxMjsgLy/lrqHmoLjkuK1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiM1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi5zdGF0ZSA9IDEzOyAvL+WKoHbnlKjmiLfkv67mlLnlrqHmoLhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiOFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi5zdGF0ZSA9IDE4OyAvL+WKoHbnlKjmiLfkv67mlLnlrqHmoLhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiOVwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlhdi5zdGF0ZSA9IDE5OyAvL+WKoHbnlKjmiLfkv67mlLnlrqHmoLhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuaW5mbyhqaWF2KTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogY29va2llLmdldCgndWlkYWwnKS5zdWJzdHJpbmcoMCwgMTYpLFxyXG4gICAgICAgICAgICAgICAgbmljazogY29va2llLmdldCgndWlkYWwnKS5zdWJzdHJpbmcoMTYpLFxyXG4gICAgICAgICAgICAgICAgamlhdjogamlhdlxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOmAgOWHuueZu+W9lVxyXG4gICAgICogQHBhcmFtICB7ZnVuY3Rpb259IOmAgOWHuuS5i+WQjuWbnuiwg1xyXG4gICAgICovXHJcbiAgICBsb2dPdXQ6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xyXG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBcInBpPTtwYXRoPS87ZG9tYWluPWVhc3Rtb25leS5jb207ZXhwaXJlcz1cIiArIGRhdGUudG9HTVRTdHJpbmcoKTtcclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBcImN0PTtwYXRoPS87ZG9tYWluPWVhc3Rtb25leS5jb207ZXhwaXJlcz1cIiArIGRhdGUudG9HTVRTdHJpbmcoKTtcclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBcInV0PTtwYXRoPS87ZG9tYWluPWVhc3Rtb25leS5jb207ZXhwaXJlcz1cIiArIGRhdGUudG9HTVRTdHJpbmcoKTtcclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBcInVpZGFsPTtwYXRoPS87ZG9tYWluPWVhc3Rtb25leS5jb207ZXhwaXJlcz1cIiArIGRhdGUudG9HTVRTdHJpbmcoKTtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgaXNMb2dpbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdldCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBnb3RvTG9naW46IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbG9naW51cmwgPSAnaHR0cHM6Ly9wYXNzcG9ydDIuZWFzdG1vbmV5LmNvbS9wdWIvbG9naW4/YmFja3VybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHNlbGYubG9jYXRpb24uaHJlZilcclxuICAgICAgICBzZWxmLmxvY2F0aW9uID0gbG9naW51cmxcclxuICAgICAgICAvLyB3aW5kb3cub3Blbihsb2dpbnVybClcclxuICAgIH1cclxufTtcclxuXHJcbnZhciBfY3Rva2VuID0gY29va2llLmdldChcImN0XCIpO1xyXG52YXIgX3V0b2tlbiA9IGNvb2tpZS5nZXQoXCJ1dFwiKTtcclxudmFyIF9HdWJhQXBpSCA9IGhleF9tZDUoXCJjdG9rZW49XCIgKyBfY3Rva2VuICsgXCJ1dG9rZW49XCIgKyBfdXRva2VuICsgXCJfNTE5ZDc3YjI5YmU0NDJmOFwiKTtcclxudmFyIF9kZXZpY2VpZCA9IFwiMGQyNzk4Y2FiMTcxNjQzOWEzNDNjOTk2NWMyMGM1OWRcIjtcclxuXHJcbi8qKlxyXG4gKiDmoLzlvI/ljJbngrnotZ7mlLbol4/mlbBcclxuICogdHlwZTogMC0gOzErIDsy5LiN5Yqg5LiN5YePXHJcbiAqL1xyXG52YXIgZm9ybWF0WmFuTnVtID0gZnVuY3Rpb24oY291bnQsIHR5cGUpIHtcclxuICAgIHZhciBudW0gPSBwYXJzZUludChjb3VudCkgPyBwYXJzZUludChjb3VudCkgOiAwO1xyXG4gICAgdmFyIGJhY2sgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGUgPT0gMikge1xyXG4gICAgICAgIHRlbXAgPSBudW1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGVtcCA9IHR5cGUgPyBudW0gKyAxIDogbnVtIC0gMTtcclxuICAgIH1cclxuICAgIGJhY2sgPSB0ZW1wID4gOTkgPyBcIjk5K1wiOiB0ZW1wID4gMCA/IHRlbXA6IFwiXCI7XHJcbiAgICByZXR1cm4gYmFjaztcclxufTtcclxuXHJcbi8vIOeDreaQnFxyXG52YXIgaG90U2VhcmNoU2Nyb2xsID0ge1xyXG4gICAgaW5pdDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdGhpcy5zZW50ZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudGltZSA9IDUwO1xyXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uKClcclxuXHJcbiAgICB9LFxyXG4gICAgc2V0ZXI6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGYuc2VudGVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGlmIChfc2VsZi5sdyA+PSBfc2VsZi5zcGFuV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmLmx3ID0gMFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYubHcrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfc2VsZi5uZXdIdG1sLmNzcyh7XHJcbiAgICAgICAgICAgICAgICAncmlnaHQnOiBfc2VsZi5sd1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSxcclxuXHRcdF9zZWxmLnRpbWUpXHJcbiAgICB9LFxyXG4gICAgYW5pbWF0aW9uOiBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzLFxyXG5cdFx0YVdpZHRoID0gMDs7XHJcbiAgICAgICAgX3NlbGYuX2NvbnRlbnQgPSAkKCcjaG90bmV3cycpO1xyXG4gICAgICAgIF9zZWxmLmFIdG1sID0gX3NlbGYuX2NvbnRlbnQuaHRtbCgpO1xyXG4gICAgICAgICQoJ2EnLCBfc2VsZi5fY29udGVudCkuZWFjaChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgYVdpZHRoICs9ICQodGhpcykub3V0ZXJXaWR0aCgpICsgMTA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgX3NlbGYubmV3SHRtbCA9ICQoJzxkaXYgc3R5bGU9XCJ3aWR0aDonICsgYVdpZHRoICogMiArICdweFwiPjxzcGFuIGNsYXNzPVwic3BhblwiPicgKyBfc2VsZi5hSHRtbCArICc8L3NwYW4+PHNwYW4+JyArIF9zZWxmLmFIdG1sICsgJzwvc3Bhbj48L2Rpdj4nKTtcclxuICAgICAgICBfc2VsZi5fY29udGVudC5odG1sKF9zZWxmLm5ld0h0bWwpO1xyXG4gICAgICAgIF9zZWxmLmx3ID0gX3NlbGYubmV3SHRtbC5wb3NpdGlvbigpLmxlZnQ7XHJcbiAgICAgICAgX3NlbGYuc3BhbldpZHRoID0gJCgnLnNwYW4nLCBfc2VsZi5fY29udGVudCkub3V0ZXJXaWR0aCgpO1xyXG5cclxuICAgICAgICBfc2VsZi5zZXRlcigpO1xyXG4gICAgICAgIF9zZWxmLl9jb250ZW50LmhvdmVyKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChfc2VsZi5zZW50ZXIpXHJcbiAgICAgICAgfSxcclxuXHRcdGZ1bmN0aW9uKCkge1xyXG5cdFx0ICAgIF9zZWxmLnNldGVyKCk7XHJcblx0XHR9KVxyXG5cclxuICAgIH1cclxufTtcclxuXHJcbnZhciBxdW90ZVRyZWUgPSB7XHJcbiAgICBIdVNoZW46IHsgLy/msqrmt7FcclxuICAgICAgICBCaWdOYW1lOiBcIuayqua3seiCoeW4glwiLFxyXG4gICAgICAgIExpbms6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL1wiLFxyXG4gICAgICAgIEludGVyZmFjZTogY29uZmlnLnB1c2ggKyBcImFwaS9xdC91bGlzdC5ucC9nZXQ/dXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTkmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0JnNlY2lkcz0xLjAwMDAwMSwwLjM5OTAwMSwwLjM5OTAwNlwiXHJcbiAgICB9LFxyXG4gICAgSEs6IHsgLy/muK/ogqFcclxuICAgICAgICBCaWdOYW1lOiBcIua4r+iCoeihjOaDhVwiLFxyXG4gICAgICAgIExpbms6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dnc2MuaHRtbFwiLFxyXG4gICAgICAgIEludGVyZmFjZTogY29uZmlnLnB1c2ggKyBcImFwaS9xdC91bGlzdC5ucC9nZXQ/dXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTkmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0JnNlY2lkcz0xMDAuSFNJXCIsXHJcbiAgICAgICAgSW50ZXJmYWNlMjogY29uZmlnLnB1c2ggKyBcImFwaS9xdC9rYW10L2dldD9maWVsZHMxPWYxLGYyLGYzLGY0JmZpZWxkczI9ZjUxLGY1MixmNTMsZjU0LGY1NixmNjAsZjYyLGY2MyxmNjUsZjY2JnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCJcclxuICAgIH0sXHJcbiAgICBHb2xkOiB7IC8v6buE6YeRXHJcbiAgICAgICAgQmlnTmFtZTogXCLpu4Tph5HooYzmg4VcIixcclxuICAgICAgICBMaW5rOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9oanNjLmh0bWxcIixcclxuICAgICAgICBJbnRlcmZhY2U6IGNvbmZpZy5wdXNoICsgXCJhcGkvcXQvdWxpc3QubnAvZ2V0P3V0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5JmZpZWxkcz1mMSxmMixmMyxmNCxmMTIsZjEzLGYxNCZzZWNpZHM9MTAxLkdDMDBZLDEwMS5TSTAwWSwxMTMuYXVtLDExMy5hZ21cIlxyXG4gICAgfSxcclxuICAgIEZ1dHVyZXM6IHsgLy/mnJ/otKdcclxuICAgICAgICBCaWdOYW1lOiBcIuacn+i0p+ihjOaDhVwiLFxyXG4gICAgICAgIExpbms6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2Z1dHVyZXMuaHRtbFwiLFxyXG4gICAgICAgIC8vSW50ZXJmYWNlOiBjb25maWcucHVzaCArIFwiYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTMmcG89MSZucD0xJmZsdHQ9MiZpbnZ0PTImZmlkPWYzJmZzPW06MTEzK3M6MSxtOjExNCtzOjEsbToxMTUrczoxLG06MTQyK3M6MSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQsZjE1MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiXHJcbiAgICAgICAgSW50ZXJmYWNlOiBjb25maWcucHVzaCArIFwiYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTMmcG89MSZucD0xJmZpZD1mMyZmcz1tOjExMytzOjEsbToxMTQrczoxLG06MTE1K3M6MSxtOjE0MitzOjEmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0LGYxNTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIlxyXG4gICAgfSxcclxuICAgIEdsb2JhbDogeyAvL+WFqOeQg1xyXG4gICAgICAgIEJpZ05hbWU6IFwi5YWo55CD5oyH5pWwXCIsXHJcbiAgICAgICAgTGluazogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvcXF6cy5odG1sXCIsXHJcbiAgICAgICAgSW50ZXJmYWNlOiBjb25maWcucHVzaCArIFwiYXBpL3F0L3VsaXN0Lm5wL2dldD91dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQmc2VjaWRzPTEuMDAwMDAxLDEwMC5IU0ksMTAwLkRKSUEsMTAwLk4yMjUsMTAwLkZUU0UsMTAxLkdDMDBZLDEwMi5DTDAwWSwxMDAuVURJXCJcclxuICAgIH0sXHJcbiAgICBPcHRpb246IHsgLy/mnJ/mnYNcclxuICAgICAgICBCaWdOYW1lOiBcIuacn+adg+ihjOaDhVwiLFxyXG4gICAgICAgIExpbms6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL3Fxc2MuaHRtbFwiLFxyXG4gICAgICAgIC8v5oyH5pWwXHJcbiAgICAgICAgSW50ZXJmYWNlOiBjb25maWcucHVzaCArIFwiYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTEmcG89MSZucD0xJmZzPWk6MS41MTAwNTAmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0JnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgLy/orqTotK1cclxuICAgICAgICBJbnRlcmZhY2UyOiBjb25maWcucHVzaCArIFwiYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTImcG89MSZucD0xJmZsdHQ9MSZpbnZ0PTImZmlkPWY2JmZzPW06MTArdDoxNzMmZmllbGRzPWYxLGYyLGYzLGY0LGY1LGYxMixmMTMsZjE0JnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgLy/orqTmsr1cclxuICAgICAgICBJbnRlcmZhY2UzOiBjb25maWcucHVzaCArIFwiYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTImcG89MSZucD0xJmZsdHQ9MSZpbnZ0PTImZmlkPWY2JmZzPW06MTArdDoxNzQmZmllbGRzPWYxLGYyLGYzLGY0LGY1LGYxMixmMTMsZjE0JnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCJcclxuICAgIH0sXHJcbiAgICBGb3JleDogeyAvL+Wkluaxh1xyXG4gICAgICAgIEJpZ05hbWU6IFwi5aSW5rGH6KGM5oOFXCIsXHJcbiAgICAgICAgTGluazogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvd2hzYy5odG1sXCIsXHJcbiAgICAgICAgSW50ZXJmYWNlOiBjb25maWcucHVzaCArIFwiYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTQmcG89MSZucD0xJmZzPWk6MTAwLlVESSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQmdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIlxyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIEN1cnJUcmVlID0gcXVvdGVUcmVlLkh1U2hlbjtcclxudmFyIGluaXRZTSA9IGZ1bmN0aW9uKCl7XHJcbiAgICBzd2l0Y2ggKF9ZTSkgey8v5Y+z5L6n55qE6KGM5oOF6YOo5YiGXHJcbiAgICAgICAgY2FzZSBcImhrXCI6XHJcbiAgICAgICAgICAgIC8v5riv6IKhXHJcbiAgICAgICAgICAgIEN1cnJUcmVlID0gcXVvdGVUcmVlLkhLO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiZ29sZFwiOlxyXG4gICAgICAgICAgICAvL+m7hOmHkVxyXG4gICAgICAgICAgICBDdXJyVHJlZSA9IHF1b3RlVHJlZS5Hb2xkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiZnV0dXJlc1wiOlxyXG4gICAgICAgICAgICAvL+acn+i0p1xyXG4gICAgICAgICAgICBDdXJyVHJlZSA9IHF1b3RlVHJlZS5GdXR1cmVzO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiZ2xvYmFsXCI6XHJcbiAgICAgICAgICAgIC8v5YWo55CDXHJcbiAgICAgICAgICAgIEN1cnJUcmVlID0gcXVvdGVUcmVlLkdsb2JhbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcIm9wdGlvblwiOlxyXG4gICAgICAgICAgICAvL+acn+adg1xyXG4gICAgICAgICAgICBDdXJyVHJlZSA9IHF1b3RlVHJlZS5PcHRpb247XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJmb3JleFwiOlxyXG4gICAgICAgICAgICAvL+Wkluaxh1xyXG4gICAgICAgICAgICBDdXJyVHJlZSA9IHF1b3RlVHJlZS5Gb3JleDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDovL+m7mOiupOayqua3sVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIHN3aXRjaCAoX1lNKXtcclxuICAgIC8vICAgICBjYXNlIFwiZm9yZXhcIjogJChcIi5sZXZlbHNuYXYgLm5hdml0ZW0gc3BhblwiKS5iZWZvcmUoJzxhIGhyZWY9XCJodHRwczovL2ZvcmV4LmVhc3Rtb25leS5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+5aSW5rGH6aKR6YGTPC9hPiA+Jyk7IGJyZWFrO1xyXG4gICAgLy8gICAgIGNhc2UgXCJiYW5rXCI6ICQoXCIubGV2ZWxzbmF2IC5uYXZpdGVtIHNwYW5cIikuYmVmb3JlKCc8YSBocmVmPVwiaHR0cHM6Ly9iYW5rLmVhc3Rtb25leS5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+6ZO26KGM6aKR6YGTPC9hPiA+Jyk7IGJyZWFrO1xyXG4gICAgLy8gICAgIGNhc2UgXCJpbnN1cmFuY2VcIjogJChcIi5sZXZlbHNuYXYgLm5hdml0ZW0gc3BhblwiKS5iZWZvcmUoJzxhIGhyZWY9XCJodHRwczovL2luc3VyYW5jZS5lYXN0bW9uZXkuY29tL1wiIHRhcmdldD1cIl9ibGFua1wiPuS/nemZqemikemBkzwvYT4gPicpOyBicmVhaztcclxuICAgIC8vICAgICBjYXNlIFwiZnV0dXJlc1wiOiAkKFwiLmxldmVsc25hdiAubmF2aXRlbSBzcGFuXCIpLmJlZm9yZSgnPGEgaHJlZj1cImh0dHBzOi8vZnV0dXJlcy5lYXN0bW9uZXkuY29tL1wiIHRhcmdldD1cIl9ibGFua1wiPuacn+i0p+mikemBkzwvYT4gPicpOyBicmVhaztcclxuICAgIC8vICAgICBjYXNlIFwiaGtcIjogJChcIi5sZXZlbHNuYXYgLm5hdml0ZW0gc3BhblwiKS5iZWZvcmUoJzxhIGhyZWY9XCJodHRwczovL2hrLmVhc3Rtb25leS5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+5riv6IKh6aKR6YGTPC9hPiA+Jyk7IGJyZWFrO1xyXG4gICAgLy8gICAgIGNhc2UgXCJtb25leVwiOiAkKFwiLmxldmVsc25hdiAubmF2aXRlbSBzcGFuXCIpLmJlZm9yZSgnPGEgaHJlZj1cImh0dHBzOi8vbW9uZXkuZWFzdG1vbmV5LmNvbS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj7nkIbotKLpopHpgZM8L2E+ID4nKTsgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSBcImJvbmRcIjogJChcIi5sZXZlbHNuYXYgLm5hdml0ZW0gc3BhblwiKS5iZWZvcmUoJzxhIGhyZWY9XCJodHRwczovL2JvbmQuZWFzdG1vbmV5LmNvbS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj7lgLrliLjpopHpgZM8L2E+ID4nKTsgYnJlYWs7XHJcbiAgICAvLyAuLi4uLi5cclxuICAgIC8vICAgICBjYXNlIFwiZmluYW5jZVwiOiAkKFwiLmxldmVsc25hdiAubmF2aXRlbSBzcGFuXCIpLmJlZm9yZSgnPGEgaHJlZj1cImh0dHBzOi8vZmluYW5jZS5lYXN0bW9uZXkuY29tL1wiIHRhcmdldD1cIl9ibGFua1wiPui0oue7j+mikemBkzwvYT4gPicpOyBicmVhaztcclxuICAgIC8vICAgICBjYXNlIFwic3RvY2tcIjogJChcIi5sZXZlbHNuYXYgLm5hdml0ZW0gc3BhblwiKS5iZWZvcmUoJzxhIGhyZWY9XCJodHRwczovL3N0b2NrLmVhc3Rtb25leS5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+6IKh56Wo6aKR6YGTPC9hPiA+Jyk7IGJyZWFrO1xyXG4gICAgLy8gICAgIGRlZmF1bHQ6ICQoXCIubGV2ZWxzbmF2IC5uYXZpdGVtIHNwYW5cIikuYmVmb3JlKCc8YSBocmVmPVwiaHR0cHM6Ly9maW5hbmNlLmVhc3Rtb25leS5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+6LSi57uP6aKR6YGTPC9hPiA+Jyk7IGJyZWFrO1xyXG4gICAgLy8gfVxyXG59XHJcblxyXG4vLyDmjIfmlbBcclxudmFyIHpzUXVvdGUgPSB7XHJcbiAgICBpbml0OiBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbiAgICAgICAgdGhhdC5pbml0SFRNTERvbSgpO1xyXG4gICAgICAgIHRoYXQuZm9ybWF0RGF0YSgpO1xyXG4gICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICB0aGF0LmZvcm1hdERhdGEoKTtcclxuICAgICAgICB9LFxyXG5cdFx0NjAgKiAxMDAwKTtcclxuICAgIH0sXHJcbiAgICBpbml0SFRNTERvbTogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgJChcIi5xdW90ZW1vZGVsIC5tdGl0bGUgLnRpdFwiKS5odG1sKEN1cnJUcmVlLkJpZ05hbWUpO1xyXG4gICAgICAgICQoXCIucXVvdGVtb2RlbCAubXRpdGxlIC50aXRcIikuYXR0cihcImhyZWZcIiwgQ3VyclRyZWUuTGluayk7XHJcbiAgICAgICAgJChcIi5xdW90ZW1vZGVsIC5tdGl0bGUgLm1vcmVcIikuYXR0cihcImhyZWZcIiwgQ3VyclRyZWUuTGluayk7XHJcbiAgICB9LFxyXG4gICAgZ2V0UXVvdGVEYXRhOiBmdW5jdGlvbihfaW50ZXJmYWNlLCBfZG9tKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6IF9pbnRlcmZhY2UsXHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oanNvbikge1xyXG4gICAgICAgICAgICAgICAgdGhhdC5RdW90ZUNCKGpzb24sIF9kb20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBnZXRaSkxEYXRhOiBmdW5jdGlvbihfaW50ZXJmYWNlLCBfZG9tKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6IF9pbnRlcmZhY2UsXHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oanNvbikge1xyXG4gICAgICAgICAgICAgICAgdGhhdC5aSkxDQihqc29uLCBfZG9tKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgUXVvdGVDQjogZnVuY3Rpb24oYmFjaywgX2RvbSkge1xyXG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgICAgICBpZiAoYmFjay5kYXRhICYmIGJhY2suZGF0YS5kaWZmICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgdmFyIGFyciA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaW5kZXggaW4gYmFjay5kYXRhLmRpZmYpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gYmFjay5kYXRhLmRpZmZbX2luZGV4XTtcclxuXHJcbiAgICAgICAgICAgICAgICBhcnIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgenM6IGl0ZW0uZjIgLyBNYXRoLnBvdygxMCwgaXRlbS5mMSksXHJcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0uZjQgLyBNYXRoLnBvdygxMCwgaXRlbS5mMSksXHJcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogaXRlbS5mMyAvIDEwMCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLmYxNCxcclxuICAgICAgICAgICAgICAgICAgICBtYzogaXRlbS5mMTMgKyBcIi5cIiArIGl0ZW0uZjEyLFxyXG4gICAgICAgICAgICAgICAgICAgIGYxMzogaXRlbS5mMTMsXHJcbiAgICAgICAgICAgICAgICAgICAgZjEyOiBpdGVtLmYxMlxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhhdC5yZW5kZXJEb20oYXJyLCBfZG9tKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgZ2V0WkRGSW5mbzogZnVuY3Rpb24oc3RyKSB7XHJcbiAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIF9jbGFzczogXCJcIixcclxuICAgICAgICAgICAgICAgIF9kYXRhOiBcIi1cIlxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBkWmRmID0gcGFyc2VGbG9hdChzdHIpO1xyXG4gICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NsYXNzOiBcInJlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xhc3M6IFwiZ3JlZW5cIixcclxuICAgICAgICAgICAgICAgICAgICBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCJcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jbGFzczogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCJcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgZ2V0R1NITnVtOiBmdW5jdGlvbihzdHIsIGZpeCwgbnVtKSB7XHJcbiAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XHJcbiAgICAgICAgICAgIHZhciBpbnRTdHIgPSBNYXRoLmFicyhwYXJzZUludChzdHIpKTtcclxuICAgICAgICAgICAgaWYgKGludFN0ci50b1N0cmluZygpLmxlbmd0aCA+IDEyKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAocGFyc2VGbG9hdChzdHIpIC8gMTAwMDAwMDAwMDAwMCkudG9GaXhlZChudW0pICsgJ+S4h+S6vycgKyBmaXg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50U3RyLnRvU3RyaW5nKCkubGVuZ3RoID4gOCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHBhcnNlRmxvYXQoc3RyKSAvIDEwMDAwMDAwMCkudG9GaXhlZChudW0pICsgJ+S6vycgKyBmaXg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50U3RyLnRvU3RyaW5nKCkubGVuZ3RoID4gNCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHBhcnNlRmxvYXQoc3RyKSAvIDEwMDAwKS50b0ZpeGVkKG51bSkgKyAn5LiHJyArIGZpeDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KHN0cikgPT09IHBhcnNlSW50KHN0cikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUZsb2F0KHN0cikgKyBmaXg7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRmxvYXQoc3RyKS50b0ZpeGVkKG51bSkgKyBmaXg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgZ2V0SFNHVFN0YXR1czogZnVuY3Rpb24oX2hzZ3RzdGF0dXMpIHtcclxuICAgICAgICBzd2l0Y2ggKF9oc2d0c3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuaciemineW6plwiO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLml6Dpop3luqZcIjtcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5pS255uYXCI7XHJcbiAgICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuS8keW4glwiO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBaSkxDQjogZnVuY3Rpb24oYmFjaywgX2RvbSkge1xyXG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoYmFjayAmJiBiYWNrLnJjID09IDAgJiYgYmFjay5kYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9oazJzaOayquiCoemAmlxyXG4gICAgICAgICAgICAgICAgdmFyIGhndExSLGhndEluZm87XHJcbiAgICAgICAgICAgICAgICBpZiAoYmFjay5kYXRhLmhrMnNoLnN0YXR1cz09MyAmJiAoYmFjay5kYXRhLmhrMnNoLmRheUFtdFJlbWFpbj4wIHx8YmFjay5kYXRhLmhrMnNoLmRheUFtdFJlbWFpbj09MCYmYmFjay5kYXRhLmhrMnNoLmFtdFN0YXR1cyA9PSAzKSApIHtcclxuICAgICAgICAgICAgICAgICAgICBoZ3RMUiA9IHRoYXQuZ2V0R1NITnVtKHBhcnNlRmxvYXQoYmFjay5kYXRhLmhrMnNoLmRheU5ldEFtdEluKSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI2hndEluZmxvd1wiKS5odG1sKGhndExSKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaGd0SW5mbyA9IHRoYXQuZ2V0WkRGSW5mbyhiYWNrLmRhdGEuaGsyc2guZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoZ3RJbmZvLl9jbGFzcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjaGd0SW5mbG93XCIpLmFkZENsYXNzKGhndEluZm8uX2NsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI2hndEluZmxvd1wiKS5wYXJlbnQoKS5maW5kKFwic3BhblwiKS5lcSgwKS5odG1sKFwi6LWE6YeR5rWB5YWlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChiYWNrLmRhdGEuaGsyc2guYW10U3RhdHVzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIuW9k+aXpemineW6puWFhei2s1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjaGd0SW5mbG93XCIpLmh0bWwoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhndExSID0gdGhhdC5nZXRHU0hOdW0ocGFyc2VGbG9hdChiYWNrLmRhdGEuaGsyc2guZGF5TmV0QW10SW4pICogMTAwMDAsIFwiXCIsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikuaHRtbChoZ3RMUik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGd0SW5mbyA9IHRoYXQuZ2V0WkRGSW5mbyhiYWNrLmRhdGEuaGsyc2guZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhndEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI2hndEluZmxvd1wiKS5hZGRDbGFzcyhoZ3RJbmZvLl9jbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFjay5kYXRhLmhrMnNoLnN0YXR1cz09Mykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhndExSID0gdGhhdC5nZXRHU0hOdW0ocGFyc2VGbG9hdChiYWNrLmRhdGEuaGsyc2guZGF5TmV0QW10SW4pICogMTAwMDAsIFwiXCIsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjaGd0SW5mbG93XCIpLmh0bWwoaGd0TFIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZ3RJbmZvID0gdGhhdC5nZXRaREZJbmZvKGJhY2suZGF0YS5oazJzaC5kYXlOZXRBbXRJbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhndEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikuYWRkQ2xhc3MoaGd0SW5mby5fY2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI2hndEluZmxvd1wiKS5wYXJlbnQoKS5maW5kKFwic3BhblwiKS5lcSgwKS5odG1sKFwi6LWE6YeR5rWB5YWlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjaGd0SW5mbG93XCIpLnBhcmVudCgpLmZpbmQoXCJzcGFuXCIpLmVxKDApLmh0bWwoXCLotYTph5HmtYHlhaVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNoZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIuW9k+aXpemineW6puiAl+WwvVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI2hndEluZmxvd1wiKS5odG1sKCcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICQoXCIuaGd0c3RhdHVzXCIpLmh0bWwodGhhdC5nZXRIU0dUU3RhdHVzKGJhY2suZGF0YS5oazJzaC5zdGF0dXMpKTtcclxuICAgICAgICAgICAgICAgIGlmIChiYWNrLmRhdGEuaGsyc2guc3RhdHVzID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI2hndEluZmxvd1wiKS5wYXJlbnQoKS5odG1sKFwiLVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgLy9zaDJoa+a4r+iCoemAmijmsqopXHJcbiAgICAgICAgICAgICAgICB2YXIgZ2d0aExSID0gdGhhdC5nZXRHU0hOdW0ocGFyc2VGbG9hdChiYWNrLmRhdGEuc2gyaGsubmV0QnV5QW10KSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgICQoXCIjZ2d0aEluZmxvd1wiKS5odG1sKGdndGhMUik7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ2d0aEluZm8gPSB0aGF0LmdldFpERkluZm8oYmFjay5kYXRhLnNoMmhrLm5ldEJ1eUFtdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2d0aEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI2dndGhJbmZsb3dcIikuYWRkQ2xhc3MoZ2d0aEluZm8uX2NsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI2dndGhJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIuWHgOS5sOminVwiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNnZ3RoSW5mbG93XCIpLnBhcmVudCgpLmZpbmQoXCJzcGFuXCIpLmVxKDApLmh0bWwoXCLlh4DkubDpop1cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkKFwiLmdndGhzdGF0dXNcIikuaHRtbCh0aGF0LmdldEhTR1RTdGF0dXMoYmFjay5kYXRhLnNoMmhrLnN0YXR1cykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJhY2suZGF0YS5zaDJoay5zdGF0dXMgPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoXCIjZ2d0aEluZmxvd1wiKS5wYXJlbnQoKS5odG1sKFwiLVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL2hrMnN65rex6IKh6YCaXHJcbiAgICAgICAgICAgICAgICB2YXIgc2d0TFIsc2d0SW5mbztcclxuICAgICAgICAgICAgICAgIGlmIChiYWNrLmRhdGEuaGsyc3ouc3RhdHVzPT0zICYmIChiYWNrLmRhdGEuaGsyc3ouZGF5QW10UmVtYWluPjAgfHxiYWNrLmRhdGEuaGsyc3ouZGF5QW10UmVtYWluPT0wICYmIGJhY2suZGF0YS5oazJzei5hbXRTdGF0dXMgPT0gMykpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZ3RMUiA9IHRoYXQuZ2V0R1NITnVtKHBhcnNlRmxvYXQoYmFjay5kYXRhLmhrMnN6LmRheU5ldEFtdEluKSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI3NndEluZmxvd1wiKS5odG1sKHNndExSKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2d0SW5mbyA9IHRoYXQuZ2V0WkRGSW5mbyhiYWNrLmRhdGEuaGsyc3ouZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZ3RJbmZvLl9jbGFzcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2d0SW5mbG93XCIpLmFkZENsYXNzKHNndEluZm8uX2NsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NndEluZmxvd1wiKS5wYXJlbnQoKS5maW5kKFwic3BhblwiKS5lcSgwKS5odG1sKFwi6LWE6YeR5rWB5YWlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChiYWNrLmRhdGEuaGsyc3ouYW10U3RhdHVzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIuW9k+aXpemineW6puWFhei2s1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2d0SW5mbG93XCIpLmh0bWwoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNndExSID0gdGhhdC5nZXRHU0hOdW0ocGFyc2VGbG9hdChiYWNrLmRhdGEuaGsyc3ouZGF5TmV0QW10SW4pICogMTAwMDAsIFwiXCIsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikuaHRtbChzZ3RMUik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2d0SW5mbyA9IHRoYXQuZ2V0WkRGSW5mbyhiYWNrLmRhdGEuaGsyc3ouZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNndEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NndEluZmxvd1wiKS5hZGRDbGFzcyhzZ3RJbmZvLl9jbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFjay5kYXRhLmhrMnN6LnN0YXR1cz09Mykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNndExSID0gdGhhdC5nZXRHU0hOdW0ocGFyc2VGbG9hdChiYWNrLmRhdGEuaGsyc3ouZGF5TmV0QW10SW4pICogMTAwMDAsIFwiXCIsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2d0SW5mbG93XCIpLmh0bWwoc2d0TFIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZ3RJbmZvID0gdGhhdC5nZXRaREZJbmZvKGJhY2suZGF0YS5oazJzei5kYXlOZXRBbXRJbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNndEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikuYWRkQ2xhc3Moc2d0SW5mby5fY2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NndEluZmxvd1wiKS5wYXJlbnQoKS5maW5kKFwic3BhblwiKS5lcSgwKS5odG1sKFwi6LWE6YeR5rWB5YWlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2d0SW5mbG93XCIpLnBhcmVudCgpLmZpbmQoXCJzcGFuXCIpLmVxKDApLmh0bWwoXCLotYTph5HmtYHlhaVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIuW9k+aXpemineW6puiAl+WwvVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NndEluZmxvd1wiKS5odG1sKCcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHZhciBzZ3RMUiA9IHRoYXQuZ2V0R1NITnVtKHBhcnNlRmxvYXQoYmFjay5kYXRhLmhrMnN6LmRheU5ldEFtdEluKSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgIC8vICQoXCIjc2d0SW5mbG93XCIpLmh0bWwoc2d0TFIpO1xyXG4gICAgICAgICAgICAgICAgLy8gdmFyIHNndEluZm8gPSB0aGF0LmdldFpERkluZm8oYmFjay5kYXRhLmhrMnN6LmRheU5ldEFtdEluKTtcclxuICAgICAgICAgICAgICAgIC8vIGlmIChzZ3RJbmZvLl9jbGFzcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgJChcIiNzZ3RJbmZsb3dcIikuYWRkQ2xhc3Moc2d0SW5mby5fY2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIGlmIChzZ3RJbmZvLl9jbGFzcyA9PSBcImdyZWVuXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikuaHRtbChzZ3RMUi5yZXBsYWNlKFwiLVwiLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIui1hOmHkea1geWFpVwiKTtcclxuICAgICAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgICQoXCIjc2d0SW5mbG93XCIpLnBhcmVudCgpLmZpbmQoXCJzcGFuXCIpLmVxKDApLmh0bWwoXCLotYTph5HmtYHlhaVcIik7XHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAkKFwiLnNndHN0YXR1c1wiKS5odG1sKHRoYXQuZ2V0SFNHVFN0YXR1cyhiYWNrLmRhdGEuaGsyc3ouc3RhdHVzKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmFjay5kYXRhLmhrMnN6LnN0YXR1cyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuaHRtbChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy9zejJoa+a4r+iCoemAmijmt7EpXHJcbiAgICAgICAgICAgICAgICB2YXIgZ2d0c0xSID0gdGhhdC5nZXRHU0hOdW0ocGFyc2VGbG9hdChiYWNrLmRhdGEuc3oyaGsubmV0QnV5QW10KSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgICQoXCIjZ2d0c0luZmxvd1wiKS5odG1sKGdndHNMUik7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ2d0c0luZm8gPSB0aGF0LmdldFpERkluZm8oYmFjay5kYXRhLnN6MmhrLm5ldEJ1eUFtdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2d0c0luZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI2dndHNJbmZsb3dcIikuYWRkQ2xhc3MoZ2d0c0luZm8uX2NsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI2dndHNJbmZsb3dcIikucGFyZW50KCkuZmluZChcInNwYW5cIikuZXEoMCkuaHRtbChcIuWHgOS5sOminVwiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNnZ3RzSW5mbG93XCIpLnBhcmVudCgpLmZpbmQoXCJzcGFuXCIpLmVxKDApLmh0bWwoXCLlh4DkubDpop1cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkKFwiLmdndHNzdGF0dXNcIikuaHRtbCh0aGF0LmdldEhTR1RTdGF0dXMoYmFjay5kYXRhLnN6MmhrLnN0YXR1cykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJhY2suZGF0YS5zejJoay5zdGF0dXMgPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoXCIjZ2d0c0luZmxvd1wiKS5wYXJlbnQoKS5odG1sKFwiLVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfZG9tLnNob3coKTtcclxuICAgICAgICB9IGNhdGNoKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIF9kb20uaGlkZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGZvcm1hdERhdGE6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgICAgICB0aGF0LmdldFF1b3RlRGF0YShDdXJyVHJlZS5JbnRlcmZhY2UsICQoXCIjcXVvdGVkb21cIikpO1xyXG4gICAgICAgIGlmIChfWU0gPT0gXCJvcHRpb25cIikgeyAvL+acn+adg1xyXG4gICAgICAgICAgICB0aGF0LmdldFF1b3RlRGF0YShDdXJyVHJlZS5JbnRlcmZhY2UyLCAkKFwiI3F1b3RlZG9tMlwiKSk7XHJcbiAgICAgICAgICAgIHRoYXQuZ2V0UXVvdGVEYXRhKEN1cnJUcmVlLkludGVyZmFjZTMsICQoXCIjcXVvdGVkb20zXCIpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKF9ZTSA9PSBcImhrXCIpIHtcclxuICAgICAgICAgICAgdGhhdC5nZXRaSkxEYXRhKEN1cnJUcmVlLkludGVyZmFjZTIsICQoXCIjcXVvdGVkb216amxcIikpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICByZW5kZXJEb206IGZ1bmN0aW9uICh6c2luZm9zLCBfZG9tKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIGlmICh6c2luZm9zICYmIHpzaW5mb3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhciBfaHRtbCA9ICcnO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHpzaW5mb3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBzenpzID0gKCh6c2luZm9zW2ldLnpzID09PSBcIlwiIHx8IHpzaW5mb3NbaV0uenMgPT0gXCItXCIpID8gXCItXCI6IHpzaW5mb3NbaV0uenMpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHN6cHJpY2UgPSAoKHpzaW5mb3NbaV0ucHJpY2UgPT09IFwiXCIgfHwgenNpbmZvc1tpXS5wcmljZSA9PSBcIi1cIikgPyBcIi1cIjogenNpbmZvc1tpXS5wcmljZSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3pwZXJjZW50ID0gKCh6c2luZm9zW2ldLnBlcmNlbnQgPT09IFwiXCIgfHwgenNpbmZvc1tpXS5wZXJjZW50ID09IFwiLVwiKSA/IFwiLVwiOiBwYXJzZUZsb2F0KHpzaW5mb3NbaV0ucGVyY2VudCkudG9GaXhlZCgyKSArIFwiJVwiKTtcclxuICAgICAgICAgICAgICAgIHZhciBzem5hbWUgPSB6c2luZm9zW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBpZighc3puYW1lKXtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgX2ljb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdmFyIF9jb2xvciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBpZiAoenNpbmZvc1tpXS5wZXJjZW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9pY29uID0gXCJpY29uIHVwXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NvbG9yID0gXCJyZWRcIjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoenNpbmZvc1tpXS5wZXJjZW50IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9pY29uID0gXCJpY29uIGRvd25cIjtcclxuICAgICAgICAgICAgICAgICAgICBfY29sb3IgPSBcImdyZWVuXCI7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIF9pY29uID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBfY29sb3IgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwienNpdGVtXCIgZGF0YS1tYz1cIicgKyB6c2luZm9zW2ldLm1jICsgJ1wiJyArICgod2luZG93LlF1b3Rlc2hvd0RvbSA9PSB6c2luZm9zW2ldLm1jKSA/ICcgc3R5bGU9XCJoZWlnaHQ6MTgwcHhcIicgOiAnJykgKyAnPic7XHJcbiAgICAgICAgICAgICAgICAvL19odG1sICs9ICc8dWwnICsgKCh3aW5kb3cuUXVvdGVzaG93RG9tID09IHpzaW5mb3NbaV0ubWMpID8gJyBvcGVuaW1nPVwic2hvd1wiJyA6ICcnKSArICc+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8dWw+JztcclxuICAgICAgICAgICAgICAgIGlmKHN6bmFtZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN6bmFtZS5pbmRleE9mKFwiRVRG6LStXCIpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwienNuYW1lXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjBweDtwYWRkaW5nOiA0cHggMDtcIj4nICsgc3puYW1lLnN1YnN0cmluZygwLCBzem5hbWUuaW5kZXhPZihcIkVURui0rVwiKSArIDQpICsgJzxicj4nICsgc3puYW1lLnN1YnN0cmluZyhzem5hbWUuaW5kZXhPZihcIkVURui0rVwiKSArIDQpICsgJzwvbGk+JztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN6bmFtZS5pbmRleE9mKFwiRVRG5rK9XCIpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwienNuYW1lXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjBweDtwYWRkaW5nOiA0cHggMDtcIj4nICsgc3puYW1lLnN1YnN0cmluZygwLCBzem5hbWUuaW5kZXhPZihcIkVURuayvVwiKSArIDQpICsgJzxicj4nICsgc3puYW1lLnN1YnN0cmluZyhzem5hbWUuaW5kZXhPZihcIkVURuayvVwiKSArIDQpICsgJzwvbGk+JztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwienNuYW1lXCI+JyArIHN6bmFtZSArICc8L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxsaSBjbGFzcz1cInpzbmFtZVwiPiA8L2xpPic7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwienNwcmljZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIF9jb2xvciArICc7XCI+JyArIHN6enMgKyAnPC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIF9jb2xvciArICc7XCIgY2xhc3M9XCInICsgX2ljb24gKyAnXCI+PC9zcGFuPjwvbGk+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8bGkgY2xhc3M9XCJ6c3pkZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIF9jb2xvciArICc7XCI+JyArIHN6cHJpY2UgKyAnPC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIF9jb2xvciArICc7XCIgY2xhc3M9XCInICsgX2ljb24gKyAnXCI+PC9zcGFuPjwvbGk+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8bGkgY2xhc3M9XCJ6c3pkZlwiPjxzcGFuIHN0eWxlPVwiY29sb3I6JyArIF9jb2xvciArICc7XCI+JyArIHN6cGVyY2VudCArICc8L3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjonICsgX2NvbG9yICsgJztcIiBjbGFzcz1cIicgKyBfaWNvbiArICdcIj48L3NwYW4+PC9saT4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvdWw+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwicXVvdGVpbWdcIj4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyB6c2luZm9zW2ldLm1jICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGltZyBzcmM9XCIvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/bmlkPScgKyB6c2luZm9zW2ldLm1jICsgJyZpbWFnZVR5cGU9cnRvcCZ0b2tlbj1lMWZjNzE2NTI1MDMwYjU1MTdmOTk2OGZlNjVlYjI1ZCZ0aW1lc3Bhbj0nICsgTWF0aC5yYW5kb20oKSArICdcIj4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvYT4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPC9kaXY+JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfZG9tLmh0bWwoX2h0bWwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5RdW90ZXNob3dEb20gPT0gdW5kZWZpbmVkICYmIF9kb20uYXR0cihcImlkXCIpID09IFwicXVvdGVkb21cIikgey8v56ys5LiA5qyh6L+b5YWlXHJcbiAgICAgICAgICAgICAgICAkKFwiLnF1b3RlZG9tIC56c2l0ZW1cIikuZXEoMCkuY3NzKHsgXCJoZWlnaHRcIjogXCIxODBweFwiIH0pOy8v6K6+572u56ys5LiA5Liq6auY5bqm77yM6K6p5Zu+54mH5pi+56S65Ye65p2lXHJcbiAgICAgICAgICAgICAgICAvLyQoXCIucXVvdGVkb20gLnpzaXRlbSB1bFwiKS5lcSgwKS5hdHRyKFwib3BlbmltZ1wiLCBcInNob3dcIik7Ly/kuLrnrKzkuIDkuKp1bOaWsOWinuagt+W8j1xyXG4gICAgICAgICAgICAgICAgd2luZG93LlF1b3Rlc2hvd0RvbSA9ICQoXCIucXVvdGVkb20gLnpzaXRlbVwiKS5lcSgwKS5kYXRhKFwibWNcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICog54K56LWeKzFcclxuICovXHJcbnZhciBjcmVhdEFkZGxhYiA9IGZ1bmN0aW9uKGUpIHtcclxuICAgIHZhciAkYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXTtcclxuICAgIHZhciAkbGFiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJcIik7XHJcbiAgICB2YXIgZGlmZiA9IDAsXHJcblx0YW5pbSwgeCA9IGUucGFnZVgsXHJcblx0eSA9IGUucGFnZVk7XHJcbiAgICB2YXIgc3R5bGUgPSAkbGFiLnN0eWxlO1xyXG4gICAgc3R5bGUuY29sb3IgPSBcIiNFOTRGMDZcIjtcclxuICAgIHN0eWxlLnpJbmRleCA9IDk5OTk7XHJcbiAgICBzdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcclxuICAgIHN0eWxlLnNlbGVjdCA9IFwibm9uZVwiO1xyXG4gICAgc3R5bGUubGVmdCA9ICh4IC0gMTApICsgXCJweFwiO1xyXG4gICAgc3R5bGUudG9wID0gKHkgLSAyMCkgKyBcInB4XCI7XHJcbiAgICBzdHlsZS5mb250U2l6ZSA9IFwiMTZweFwiO1xyXG4gICAgc3R5bGUudGV4dFNoYWRvdyA9IFwiXCI7XHJcbiAgICAkbGFiLmlubmVyVGV4dCA9IFwiKzFcIjtcclxuICAgIGNsZWFySW50ZXJ2YWwoYW5pbSk7XHJcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGFuaW0gPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgaWYgKCsrZGlmZiA9PSAxMDApIHtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoYW5pbSk7XHJcbiAgICAgICAgICAgICAgICAkYm9keS5yZW1vdmVDaGlsZCgkbGFiKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgc3R5bGUubGVmdCA9ICh4IC0gMTApICsgXCJweFwiO1xyXG4gICAgICAgICAgICBzdHlsZS50b3AgPSB5IC0gMjAgLSBkaWZmICsgXCJweFwiO1xyXG4gICAgICAgICAgICBzdHlsZS5vcGFjaXR5ID0gKDEwMCAtIGRpZmYpIC8gMTAwO1xyXG4gICAgICAgIH0sXHJcblx0XHQxMCk7XHJcbiAgICB9LFxyXG5cdDUwKTtcclxuICAgICRib2R5LmFwcGVuZENoaWxkKCRsYWIpO1xyXG59O1xyXG5cclxuLy8g54K56LWeXHJcbnZhciB6YW5PYmogPSB7XHJcbiAgICAvLyDngrnotZ7mk43kvZwgJCh0aGlzKSxoYXN6YW4sIFxyXG4gICAgemFuRnVuOiBmdW5jdGlvbihlLCAkZG9tLCB0eXBlLCBhcnRpY2xlSWQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSAkZG9tO1xyXG5cclxuICAgICAgICB2YXIgX2FwaXVybCA9IChfdGhpcy5oYXNDbGFzcyhcInphblwiKSB8fCBfdGhpcy5oYXNDbGFzcyhcImh1b3phblwiKSkgPyBcIkxpa2VBcnRpY2xlXCIgOiBcIkNhbmNlbExpa2VBcnRpY2xlXCI7XHJcblxyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogY29uZmlnLmd1YmEgKyBcImxpa2VvcHQvanNvbnAvXCIgKyBfYXBpdXJsICsgXCI/aWQ9XCIgKyBhcnRpY2xlSWQgKyBcIiZ0eXBlPTEmZGV2aWNlaWQ9XCIgKyBfZGV2aWNlaWQgKyBcIiZ2ZXJzaW9uPTImcHJvZHVjdD1lYXN0bW9uZXkmcGxhdD13ZWImaD1cIiArIF9HdWJhQXBpSCArIFwiJmN0b2tlbj1cIiArIF9jdG9rZW4gKyBcIiZ1dG9rZW49XCIgKyBfdXRva2VuLFxyXG4gICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wQ2FsbGJhY2s6IFwiY2JcIiArIHBhcnNlSW50KE1hdGgucmFuZG9tKCkgKiAxMDAwMCArIFwiXCIpLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJjID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXphbnVtID0gJChcIiNwb3N0X2xpa2VfY291bnRcIikuYXR0cihcInJlYWxudW1cIikgPyAkKFwiI3Bvc3RfbGlrZV9jb3VudFwiKS5hdHRyKFwicmVhbG51bVwiKSA6IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmKF9hcGl1cmwgPT0gXCJMaWtlQXJ0aWNsZVwiKXsvL+eCuei1nlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuaGFzQ2xhc3MoXCJ6YW5cIikpey8v5pmu6YCa6LWeXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmVDbGFzcyhcInphblwiKS5hZGRDbGFzcyhcInphbmFuaW1hdGVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbW92ZUNsYXNzKFwiemFuYW5pbWF0ZVwiKS5hZGRDbGFzcyhcImhhc196YW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgNjAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoX3RoaXMuaGFzQ2xhc3MoXCJodW96YW5cIikpey8v54Gr6LWeXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmVDbGFzcyhcImh1b3phblwiKS5hZGRDbGFzcyhcImhhc19odW96YW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG51bSA9IGZvcm1hdFphbk51bShwcmV6YW51bSwgMSk7Ly8rMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3Bvc3RfbGlrZV9jb3VudFwiKS50ZXh0KG51bSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjcG9zdF9saWtlX2NvdW50XCIpLmF0dHIoXCJyZWFsbnVtXCIsIHBhcnNlSW50KHByZXphbnVtKSArIDEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRBZGRsYWIoZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNley8v5Y+W5raI54K56LWeXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudW0gPSBmb3JtYXRaYW5OdW0ocHJlemFudW0sIDApOy8vLTFcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNwb3N0X2xpa2VfY291bnRcIikudGV4dChudW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3Bvc3RfbGlrZV9jb3VudFwiKS5hdHRyKFwicmVhbG51bVwiLCBwYXJzZUludChwcmV6YW51bSkgLSAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoX3RoaXMuaGFzQ2xhc3MoXCJoYXNfaHVvemFuXCIpKXsvL+eBq+i1nlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJoYXNfaHVvemFuXCIpLmFkZENsYXNzKFwiaHVvemFuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsvL+aZrumAmui1nlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJoYXNfemFuXCIpLmFkZENsYXNzKFwiemFuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuLy8g5pS26JePXHJcbnZhciBjb2xsZWN0T2JqID0ge1xyXG4gICAgLy8g5pS26JeP5LiO5Y+W5raI5pS26JePXHJcbiAgICBjb2xsZWN0RnVuOiBmdW5jdGlvbihlLCAkZG9tLCB0eXBlLCBhcnRpY2xlSWQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSAkZG9tO1xyXG5cclxuICAgICAgICB2YXIgaGFzY29sbGVjdCA9IF90aGlzLmhhc0NsYXNzKFwic2hvdWNhbmdcIikgPyBmYWxzZTogdHJ1ZTtcclxuICAgICAgICB2YXIgX2FwaXVybCA9IGhhc2NvbGxlY3QgPyBcIkNhbmNlbENvbGxlY3RBcnRpY2xlXCI6IFwiQ29sbGVjdEFydGljbGVcIjtcclxuXHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBjb25maWcuZ3ViYSArIFwiY29sbGVjdG9wdC9qc29ucC9cIiArIF9hcGl1cmwgKyBcIj9wb3N0aWQ9XCIgKyBhcnRpY2xlSWQgKyBcIiZoPVwiICsgX0d1YmFBcGlIICsgXCImdHlwZT0xJnZlcnNpb249ODAwMDgwMDAmcHJvZHVjdD1ndWJhJnBsYXQ9d2FwJmRldmljZWlkPVwiICsgX2RldmljZWlkICsgXCImY3Rva2VuPVwiICsgX2N0b2tlbiArIFwiJnV0b2tlbj1cIiArIF91dG9rZW4sXHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnBDYWxsYmFjazogXCJjYlwiICsgcGFyc2VJbnQoTWF0aC5yYW5kb20oKSAqIDEwMDAwICsgXCJcIiksXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMucmMgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL+aUtuiXj1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5oYXNDbGFzcyhcInNob3VjYW5nXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbW92ZUNsYXNzKFwic2hvdWNhbmdcIikuYWRkQ2xhc3MoXCJzY2FuaW1hdGVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJzY2FuaW1hdGVcIikuYWRkQ2xhc3MoXCJoYXNfc2hvdWNhbmdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDYwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL190aGlzLnJlbW92ZUNsYXNzKFwic2hvdWNhbmdcIikuYWRkQ2xhc3MoXCJoYXNfc2hvdWNhbmdcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NyZWF0QWRkbGFiKGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/lj5bmtojmlLbol49cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJoYXNfc2hvdWNhbmcgc2NhbmltYXRlXCIpLmFkZENsYXNzKFwic2hvdWNhbmdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vX3RoaXMucmVtb3ZlQ2xhc3MoXCJoYXNfc2hvdWNhbmdcIikuYWRkQ2xhc3MoXCJzaG91Y2FuZ1wiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuXHJcbnZhciB6eHp3T2JqID0ge1xyXG4gICAgLyoqXHJcbiAgICAgKiDliJ3lp4vljJbkuovku7YgXHJcbiAgICAgKi9cclxuICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZihfYjE1MTYubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICB2YXIgX19LSFdaX1RvcCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgX19LSExKX1RvcCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgX25ld3NBZFRvcCA9ICQoJ2xpJyxfYjE1MTYpO1xyXG4gICAgICAgICAgICAgICAgaWYoX25ld3NBZFRvcC5sZW5ndGggPiAxICYmIF9uZXdzQWRUb3AuZXEoMCkudGV4dCgpID09IFwiMVwiKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX3hiID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihfbmV3c0FkVG9wLmxlbmd0aCAtIDEpKSsxO1xyXG4gICAgICAgICAgICAgICAgICAgIF9fS0hXWl9Ub3AgPSBfbmV3c0FkVG9wLmVxKF94YikudGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9fS0hMSl9Ub3AgPSAnPHA+44CA44CAJytfbmV3c0FkVG9wLmVxKF94YikuaHRtbCgpKyc8L3A+JztcclxuICAgICAgICAgICAgICAgICAgICBpZihfX0tITEpfVG9wLmluZGV4T2YoXCJfYmxhbmtcIikgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fS0hMSl9Ub3AgPSBfX0tITEpfVG9wLnJlcGxhY2UoXCI8YSBcIiwgXCI8YSB0YXJnZXQ9J19ibGFuaydcIilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoJChcIiNDb250ZW50Qm9keVwiKS5odG1sKCkuaW5kZXhPZihfX0tIV1pfVG9wKSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX0hRTGVuZ3RoID0gJChcIiNDb250ZW50Qm9keSAuRW1JbWFnZVJlbWFya1wiKS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9IUUxlbmd0aCA+IDApIHsgLy/lpoLmnpzmnInooYzmg4Xlm75cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjQ29udGVudEJvZHkgLkVtSW1hZ2VSZW1hcmtcIikuZXEoX0hRTGVuZ3RoIC0gMSkucGFyZW50KCdwJykuYWZ0ZXIoX19LSExKX1RvcCk7IC8v5pyJ54K557uV77yM6ZyA5rGC5bCx5piv6L+Z5qC377yM44CQ5Zyo5pyA5ZCO5LiA5byg6KGM5oOF5Zu+55qE54i257qncOagh+etvuWQjOe6p+eahOWQjumdouWKoOWFpeasoeaOqOW5v+OAkVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKFwiI0NvbnRlbnRCb2R5IC5iLXJldmlld1wiKS5sZW5ndGggPiAwKSB7IC8v5rKh5pyJ6KGM5oOF5Zu+77yM5L2G5piv5pyJ5pGY6KaBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjQ29udGVudEJvZHkgLmItcmV2aWV3XCIpLmFmdGVyKF9fS0hMSl9Ub3ApOyAvL+aPkuWcqOatpOWFg+e0oOS5i+WQju+8iOWQjOe6p++8iVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJChcIiNDb250ZW50Qm9keSAueXVhbmJpYW90aVwiKS5sZW5ndGggPiAwKSB7IC8v5rKh5pyJ6KGM5oOF5Zu+77yM5rKh5pyJ5pyJ5pGY6KaB77yM5L2G5piv5pyJ5Y6f5qCH6aKYXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjQ29udGVudEJvZHkgLnl1YW5iaWFvdGlcIikuYWZ0ZXIoX19LSExKX1RvcCk7IC8v5o+S5Zyo5q2k5YWD57Sg5LmL5ZCO77yI5ZCM57qn77yJXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy/msqHmnInooYzmg4Xlm77vvIzmsqHmnInmkZjopoHvvIzmj5LlnKjmlofnq6DmnIDliY3pnaJcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNDb250ZW50Qm9keVwiKS5wcmVwZW5kKF9fS0hMSl9Ub3ApOyAvL+WGhemDqOacgOWJjemdouWKoOWFpeatpOWFg+e0oFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYoX2IxNTE3Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgdmFyIF9fS0hXWl9Cb3R0b20gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdmFyIF9fS0hMSl9Cb3R0b20gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdmFyIF9uZXdzQWRCb3R0b20gPSAkKCdsaScsX2IxNTE3KTtcclxuICAgICAgICAgICAgICAgIGlmKF9uZXdzQWRCb3R0b20ubGVuZ3RoID4gMSAmJiBfbmV3c0FkQm90dG9tLmVxKDApLnRleHQoKSA9PSBcIjFcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIF94YiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooX25ld3NBZEJvdHRvbS5sZW5ndGggLSAxKSkrMTtcclxuICAgICAgICAgICAgICAgICAgICBfX0tIV1pfQm90dG9tID0gX25ld3NBZEJvdHRvbS5lcShfeGIpLnRleHQoKTtcclxuICAgICAgICAgICAgICAgICAgICBfX0tITEpfQm90dG9tID0gJzxwPuOAgOOAgCcrX25ld3NBZEJvdHRvbS5lcShfeGIpLmh0bWwoKSsnPC9wPic7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoX19LSExKX0JvdHRvbS5pbmRleE9mKFwiX2JsYW5rXCIpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfX0tITEpfQm90dG9tID0gX19LSExKX0JvdHRvbS5yZXBsYWNlKFwiPGEgXCIsIFwiPGEgdGFyZ2V0PSdfYmxhbmsnXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJChcIiNDb250ZW50Qm9keVwiKS5odG1sKCkuaW5kZXhPZihfX0tIV1pfQm90dG9tKSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJC50cmltKCQoXCIjQ29udGVudEJvZHlcIikudGV4dCgpKS5sZW5ndGggPiAxMDAwKSB7IC8v5aSn5LqOMTAwMOWtl++8jOaJjeaYvuekuuS4i+mdoueahOaWh+Wtl+mTvlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJChcIiNDb250ZW50Qm9keSBwLmVtX21lZGlhXCIpLmxlbmd0aCA+IDApIHsgLy/lupXpg6jmnInmlofnq6DmnaXmupBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjQ29udGVudEJvZHkgcC5lbV9tZWRpYVwiKS5iZWZvcmUoX19LSExKX0JvdHRvbSk7IC8v5o+S5Zyo5q2k5YWD57Sg5LmL5YmN77yI5ZCM57qn77yJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJChcIiNDb250ZW50Qm9keSBwLnJlcy1lZGl0XCIpLmxlbmd0aCA+IDApIHsgLy/mnInotKPku7vnvJbovpFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjQ29udGVudEJvZHkgcC5yZXMtZWRpdFwiKS5iZWZvcmUoX19LSExKX0JvdHRvbSk7IC8v5o+S5Zyo5q2k5YWD57Sg5LmL5YmN77yI5ZCM57qn77yJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8v5rKh5pyJ5bqV6YOo5p2l5rqQ77yM5Lmf5rKh5pyJ6LSj5Lu757yW6L6RXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI0NvbnRlbnRCb2R5XCIpLmFwcGVuZChfX0tITEpfQm90dG9tKTsgLy/lhoXpg6jmnKvlsL7liqDlhaXmraTlhYPntKBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICQoXCIuanViYW9cIikuYXR0cihcImhyZWZcIiwgJChcIi5qdWJhb1wiKS5hdHRyKFwiaHJlZlwiKSArIFwiJm5ld3N1cmw9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoXCJodHRwczovL2ZpbmFuY2UuZWFzdG1vbmV5LmNvbS9hL1wiK19OZXdzSWQrXCIuaHRtbFwiKSk7XHJcbiAgICBcclxuICAgICAgICAgICAgLy/otYTorq/mraPmlofmlK/mjIHngrnlh7vmn6XnnIvljp/lm75cclxuICAgICAgICAgICAgJChcIiNDb250ZW50Qm9keSBpbWdcIikud3JhcChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc0F0dHJpYnV0ZShcIm9yZ2luaWFsX3NyY1wiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj1cIicgKyB0aGlzLmdldEF0dHJpYnV0ZShcIm9yZ2luaWFsX3NyY1wiKSArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj48L2E+JztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcyhcImVtX2hhbmRsZV9hZHZfY2xvc2VcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiAnPGEgaHJlZj1cIicgKyB0aGlzLmdldEF0dHJpYnV0ZShcIm9yZ2luaWFsX3NyY1wiKSArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj48L2E+JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAkKFwiI0NvbnRlbnRCb2R5IGltZy5lbV9oYW5kbGVfYWR2X2Nsb3NlXCIpLmVhY2goZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMucGFyZW50Tm9kZSkuY3NzKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzLnBhcmVudE5vZGUpLmFwcGVuZCgnPGRpdiBjbGFzcz1cImVtX2hhbmRsZV9hZHZfY2xvc2VfZVwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO3JpZ2h0OiAtNHB4O3RvcDogLTRweDt3aWR0aDogMjBweDtoZWlnaHQ6MjBweDtwYWRkaW5nOjEwcHg7ei1pbmRleDogOTk5O1wiPjxkaXYgc3R5bGU9XCJ3aWR0aDogMS4yNXJlbTtoZWlnaHQ6MS4yNXJlbTtiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGWUFBQUJXQ0FZQUFBQlZWbUgzQUFBSGZFbEVRVlI0bk8yZFRXeFVSUnpBZjdQN2dGTFlDSlRQQmdJbEVnamI3bG9RVDhhRUtINGNCQzllOU9aSFBIZ3hYanpveFlOZkI0MG9CeFBqMFppUXFPREJhTlJ3TUJJamh0aFhJQVl0QlFMOUFMWkErU2kwdXpzZU92L3VoOTNkOTk2KzJUWmtmcGQ1Ty92ZXpDdjhPak52NWordmlqbENhNjBBZk45L3lHVHRCRWdrRXAzbSswNlR2ODZrN1NaL0dFQXBOV3crRDVudnp3QzB0N2YvQkxCbHk1Wnh1ejlCZlJKeldmbTlqTEpkd2NHREI1TUFXN2R1M1FPZ2xIckdmTFhYcE90bXU2NEpwa3g2QkVCcmZRakE4N3h2QWRMcDlFak05YzJLTTlZUzFvenQ2K3ZiQzZDVWVzOWtiYmRWVjBEdW1IUS9RS0ZRZUIrZ3Q3ZjNtbzNLbkxHV2lNM1lFeWRPN0FMUVduOWswb2ZqS3RzU1l5WjlCeUNYeTMwQ3NIdjM3bndjaFR0akxkRzBzYjd2djJJT1B6WHBnbWJMbkNOK01lbXpBSmxNNW1vemhUbGpMUkhhMkNOSGpuZ0FIUjBkSDV1c1YyTzlvN25uWDVNK0RaREpaUDZPVW9nejFoS0JqUzB6OVR1VDlaU1ZPNW8vWEFkSUpCSjdBTHE3dTQrRnVkZ1phNG5BeHZxK2Y4QWMzbXR0YWlPR0FQTDUvQzZBSFR0MkROVS9mUnBuckNVYUdsczJUdjNNOHIzTWQ0NEJwRktwUndDNnVycnUxRHZaR1d1Sm1zYktzMyt4V1B6TlpJVjZvdkk4RDRDbFM1Y0NVQ2dVQUxoNTh5WUFXdXVRdDlvY2lVU2lvdDZvOVd1dHZ3RElack12MWEwdlV1bU9odFEwdHIrLy8xY0lQMHUxWk1rU0FEWnUzQWhBTXBtcytQN3UzYnNBbkQxN0ZvREp5Y2t3eFFkbTRjS0ZBS3hmdjc3aXZzVFVYQzRId01qSVNFVitBRFJBTXBuY0FaQk9wLythN1NSbnJDVzg2Z3laK1k4Nm55cUdWSnNxTEZxMENJRE5temNETURBd0FNRFUxTlNzNTRkRnl1L3E2Z0pnd1lMS3JrR3A2Vi9TbFN0WFZ0Ujc1Y3FWb0ZVb2dFS2g4SUg1L01Sc0p6bGpMVEhUeHNwcTZyWnQyM3lURldxTlNnemR2ajNjMHBhMHNXZk9uQUdpbTl2VzFnYVVUSlZSU1NOdTNicFZVWDhFOWdCa01wbWZ5ek9kc1phWStXK1ZkWDhpcnFiS09EV2ZuMTR5Q21xTTlONWltcGdqNVRSaThlTEZGZGZYYXR0clVTd1dRNTAvQzYrWjFCbmJDbWEwS290UWFRb1pGOHJvSUNqVnZibVlLNzhKMWJTM3R3T3dhZE1tSUx5cGdveG5tK0JSZ0w2K3ZpVUEyV3oyRmpoanJlRkoxRjkvZi8vZVJpY0g0ZXJWNmNWTmFXUFhybDBiNnZycTNuMXdjQkFvbVN0UFVHS3F6QUdFWlhoNEdJQWJOMjVFdXI2TU5wTSthZEt2d1JsckRVL2lVNVZTc1ViOVhiNThHU2dadFhyMTZsRFhTMjh2WmtwNUd6WnNxQ2czTEVORDB3c0FNYlN0MWV3enFUUFdKaDRta3RvV282T2pRT2taZmRXcVZhR3VsOTVmWnN1aWN1SENCYURVQjhTTlV1ckI4cy9PV0V0NFpUSC9WaXVTOGEyMGpSMGRIVmJyazU5SFRMMTJ6VW9ZYkRrVmZaUXoxaEplMmU2VWxpQzlzclM1SzFhc2lMVjhNZlg4K2ZNQWpJKzNiUFBNTW9DalI0OHVCbWVzTlR6aTM3VVNpSXNYTHdLbE5uZlpzbVZObFNlbW5qdDNEb2psaVNvU3FWU3FFNXl4MXZBd08vN21pdHUzYndQTkd5c3JBWE5scWxBc0ZsMGJheE92Ykc5cVN5dVdWZEoxNitKcDRpWGlSdWFCWmZ6YWFxYW1wa2JBR1dzTlQzWlJ0d3FaNVZxelpvMlY4cGN2WHc2VVJna3krbWdCa3dBN2QrN01nVFBXR3A3czk3ZmR4b3FoWWVkbG95SlBkTElLS3lzR3RpanJxelE0WTYzaFlkNU1ZUXZwOVdVVUVCYUpMNUNJR1ptZkRZclVLMjJ1ekxKWm9PTGYwUmxyQ1UvZW9USXhNU0ZCVTdIc2hlM3NuSjQwaXpydktqRmNza29ybnlWS1VkYkVnaUlyRjlMbVhycDBLZEo5MVNLUlNIeGY4VG5XMGgwenpBd0ZmTi8vMFJ3KzNreUJ6YmFwWXFaRXdsUkhmRXZFaTVncmNRaGhrVkZDaUxqWXVpU1R5UzBBNlhUNlgzREdXbU1tZGt0cmZSaEFLUlhKV0RFbnFxbEI0MlFsSWtiYVhqRlhZcitDSWhFNnNvdm56cDI2MjdicWNRcEtwZ3JPV0V2TUdPdDUzamNBaFVMaFE1TVZxdkVLMjBzTHNvdW11dmR2aEl4dnhmQ3c1c3FUWmlxVkFxSWJxN1grY3JaOFo2d2xab3lWTjZqNXZyL2ZaTDBScGlBeEx5aGlpSmdhTklLN0dybXV1czJWU1BGR05CSFJQV3JTL2JOOTZZeTF4UDgyQ3NnYjFKTEo1TXNtSzlEQ3Y2eGRqWTFOdjg2cVZyeUFuQ2M3RTJ0RmJJZWwra2xOekszZTV5V0k2VkVqWkxUV2IwTXBncnNhWjZ3bGFrN0MrcjcvdWpuOHNOWTU5WkRlVmtZTE1rNjlmdjA2WUQ5V1RDTEtaUjVZN2tQYWRwa3JpTENYOXpSQUxwZExRKzAzeXpsakxWSFQyTEszRnYxZ3NoNXR5UjNOWHlZQWxGS1BBUFQwOVB4WjcyUm5yQ1dDdkJObXVUbjh3NlQzMjd1ZCtZdlcram1BYkRiN1ZaRHpuYkdXQ1BQZXJXM204SGVUM2hmLzdjdy9sRkx2QXZUMDlMd1o1anBuckNWQ0J4T1V2ZDNva01scWFVUjRxeEJUdTd1NzN6S2ZRdzI4bmJHV2lCeitjdno0OFU0QXovUEUzRjJ4M05IY01RR2d0WDRSZ3ZmK3RYREdXcUxwZ0szQndjRTJnUEh4OFFNQVNxa1g0aXE3Ulp3R1VFbzlENDJmcUlMaWpMVkU3RmFkUEhueUFhaDRMMVZUY1FvV0dJWFNmT3JZMk5qbkVOL2ZQeENjc1phdzNnNzZ2ditZT1pTMy9jZ3NXYlFRbHZDY2dvclYxUDFRZStZL0xweXhsbWg1enkxdis2SDBEcFY5VUxIZlg1N2tHczFGeU5UL0NJRFdlZ0JLVVgvNWZQNHdRRzl2N3ovTjMzVjRuTEdXbUxkalRkbEZMWHRUdGRidEFKT1RrOE5RMnAwUzlobStWVGhqTGZFZmlYeVRoeCtRV2k4QUFBQUFTVVZPUks1Q1lJST0pO2JhY2tncm91bmQtc2l6ZTogMjBweDtcIj48L2Rpdj48L2Rpdj4nKVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICQoXCIuZW1faGFuZGxlX2Fkdl9jbG9zZV9lXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCdwJykucmVtb3ZlKClcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgICAgICAgLy/mraPmlofpobXlop7liqDmnLrkvJrmlofnq6DmqKHlnZflip/og71cclxuICAgICAgICAgICAgdmFyIF9vcF9pZHMgPSBbXTtcclxuICAgICAgICAgICAgJChcIiNDb250ZW50Qm9keSAuZW1fb3BfbmV3c1wiKS5lYWNoKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIF90aGlzID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHZhciBfb3BfaWQgPSBfdGhpcy5hdHRyKFwib3BfaWRcIik7XHJcbiAgICAgICAgICAgICAgICBfb3BfaWRzLnB1c2goX29wX2lkKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLmFkZENsYXNzKFwiZW1fb3BfbmV3c1wiICsgX29wX2lkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luaXRPUEhUTUwoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9vcEhUTUwgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChqc29uLmxpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBfb3BIVE1MICs9ICc8ZGl2IGNsYXNzPVwib3BfaXRlbVwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgX29wSFRNTCArPSAnPGRpdiBjbGFzcz1cIm9wX3RpdGxlXCIgc3R5bGU9XCJjb2xvcjonICsganNvbi50aXRsZV9jb2xvciArICdcIj4nICsganNvbi50aXRsZSArICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIF9vcEhUTUwgKz0gJzx1bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5saW5rcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfb3BIVE1MICs9ICc8bGk+PGEgaHJlZj1cIicgKyBqc29uLmxpbmtzW2ldLnVybCArICdcIj4nICsganNvbi5saW5rc1tpXS50ZXh0ICsgJzwvYT48L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIF9vcEhUTUwgKz0gJzwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICBfb3BIVE1MICs9ICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfb3BIVE1MO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9vcEhUTUw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKF9vcF9pZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAvL3VybDogXCIvL25ld3NpbmZvLnRlc3QuZW1hcGQuY29tL1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvL25ld3NpbmZvLmVhc3Rtb25leS5jb20va3VhaXh1bi92Mi9hcGkvY29udGVudC9vcF9tb2R1bGVzP29wX2lkcz1cIiArIF9vcF9pZHMudG9TdHJpbmcoKSArIFwiJmNhbGxiYWNrPT9cIixcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oanNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uUmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX29wX2lkID0ganNvbi5SZXN1bHRbaV0ub3BfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSAkKFwiI0NvbnRlbnRCb2R5IC5lbV9vcF9uZXdzXCIgKyBfb3BfaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9vcEhUTUwgPSBfaW5pdE9QSFRNTChqc29uLlJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX29wSFRNTC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuaHRtbChfb3BIVE1MKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmkJzntKLmoYbliJ3lp4vljJZcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgU3RvY2tDb2RlQmFyID0gbmV3IHN1Z2dlc3QyMDE3KHtcclxuICAgICAgICAgICAgICAgIGlucHV0aWQ6ICdTdG9ja0NvZGVfYmFyJyxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAn6L6T5YWl6IKh56Wo5Luj56CB44CB5ZCN5a2X44CB566A5ou85oiW5YWz6ZSu5a2XJyxcclxuICAgICAgICAgICAgICAgIHNob3duZXd0aXBzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgb25TdWJtaXQ6ICdzZWFyY2gnLFxyXG4gICAgICAgICAgICAgICAgbmV3dGlwc29mZnNldDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDYsXHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAtMVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy/ojrflj5bngrnotZ4g5pS26JePIOWIhuS6qyDor4TorrrmlbAgIOWPiuebuOWFs+eKtuaAgVxyXG4gICAgICAgICAgICB0aGlzLmdldE5ld3NBcnRpY2xlQnJpZWZJbmZvKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8v5Yid5aeL5YyW5a2X5L2T5aSn5bCPXHJcbiAgICAgICAgICAgIHRoaXMubG9hZEZvbnRTaXplKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIOaMh+aVsOihjOaDhVxyXG4gICAgICAgICAgICB6c1F1b3RlLmluaXQoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy9kb20g57uR5a6a5LqL5Lu2XHJcbiAgICAgICAgICAgIHRoaXMuYmluZEV2ZW50KCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIOeDreaQnFxyXG4gICAgICAgICAgICB0aGlzLmdldEhvdE5ld3MoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy/lm7rpobZcclxuICAgICAgICAgICAgdGhpcy5ndWRpbmdGdW4oKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy/ng63ngrnmjqjojZBcclxuICAgICAgICAgICAgdGhpcy5pbml0UkRUSigpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvL+WIneWni+WMluihjOaDheiCoeelqOmTvuaOpeWPiuiHqumAieiCoVxyXG4gICAgICAgICAgICB0aGlzLmluaXRRdW90ZUxpbmsoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOiOt+WPlueCuei1niDmlLbol48g5YiG5LqrIOivhOiuuuaVsCAg5Y+K55u45YWz54q25oCBXHJcbiAgICAgICogcG9zdF9saWtlX2NvdW50IOeCuei1nuaVsCAgXHJcbiAgICAgICogbGlrZV9zdGF0ZSDngrnotZ7nirbmgIFcclxuICAgICAgKiBjb2xsZWN0X3N0YXRlIOaUtuiXj+eKtuaAgVxyXG4gICAgICAqIHBvc3RfZm9yd2FyZF9jb3VudCDliIbkuqvmlbBcclxuICAgICAgKiBwb3N0X2NvbW1lbnRfY291bnQg6K+E6K665pWwXHJcbiAgICAgKi9cclxuICAgIGdldE5ld3NBcnRpY2xlQnJpZWZJbmZvOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBjb25maWcuZ3ViYSArIFwiYWJzdHJhY3QvYXBpL1Bvc3RTaG9ydC9OZXdzQXJ0aWNsZUJyaWVmSW5mbz9wb3N0aWQ9XCIgKyBfTmV3c0lkICsgXCImdHlwZT0xJnZlcnNpb249ODAwMDgwMDAmcHJvZHVjdD1ndWJhJnBsYXQ9d2ViJmRldmljZWlkPVwiICsgX2RldmljZWlkICsgXCImY3Rva2VuPVwiICsgX2N0b2tlbiArIFwiJnV0b2tlbj1cIiArIF91dG9rZW4sXHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnBDYWxsYmFjazogXCJjYlwiICsgcGFyc2VJbnQoTWF0aC5yYW5kb20oKSAqIDEwMDAwICsgXCJcIiksXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJjID09IDEgJiYgcmVzLnJlICYmIHJlcy5yZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZm9zID0gcmVzLnJlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3N0X2xpa2VfY291bnQgPSBpbmZvcy5wb3N0X2xpa2VfY291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgbGlrZV9zdGF0ZSA9IGluZm9zLmxpa2Vfc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdF9zdGF0ZSA9IGluZm9zLmNvbGxlY3Rfc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zdF9mb3J3YXJkX2NvdW50ID0gaW5mb3MucG9zdF9mb3J3YXJkX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBvc3RfY29tbWVudF9jb3VudCA9IGluZm9zLnBvc3RfY29tbWVudF9jb3VudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6K+E6K665p2D6ZmQKHBvc3RfY29tbWVudF9hdXRob3J5IDPnpoHmraIpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g54K56LWe5p2D6ZmQKGFsbG93X2xpa2VzX3N0YXRlIDHnpoHmraIpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6L2s5Y+R5p2D6ZmQKHJlcG9zdF9zdGF0ZSAx56aB5q2iKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOeCuei1nuagt+W8jyhwb3N0X2xpa2Vfc3R5bGUgMeaYr+eBq+iLlyAw5piv5ouH5oyHIOm7mOiupDApXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6K+E6K665p2D6ZmQ5piv5ZCm5piv57O757uf6K6+572u55qE5qCH6K+GKHN5c3RlbV9jb21tZW50X2F1dGhvcml0eSAx5piv57O757uf6K6+572uKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluZm9zLnBvc3RfY29tbWVudF9hdXRob3J5ID0gMztcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbmZvcy5hbGxvd19saWtlc19zdGF0ZSA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5mb3MucmVwb3N0X3N0YXRlID0gMTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXNIdW9aYW4gPSBpbmZvcy5wb3N0X2xpa2Vfc3R5bGUgPT0gMTsvL+aYr+WQpueBq+i1nlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlzSHVvWmFuID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaXNIdW9aYW4pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NoYXJlYm94XCIpLmZpbmQoXCIuYXJ0aWNsZXphblwiKS5yZW1vdmVDbGFzcyhcInphblwiKS5hZGRDbGFzcyhcImh1b3phblwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGluZm9zLmFsbG93X2xpa2VzX3N0YXRlICE9IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+eCuei1nuaVsOmHj1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFwb3N0X2xpa2VfY291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjcG9zdF9saWtlX2NvdW50XCIpLmF0dHIoXCJyZWFsbnVtXCIsIHBvc3RfbGlrZV9jb3VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3Bvc3RfbGlrZV9jb3VudFwiKS50ZXh0KGZvcm1hdFphbk51bShwb3N0X2xpa2VfY291bnQsIDIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/lt7LngrnotZ5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhbGlrZV9zdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNIdW9aYW4pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2hhcmVib3hcIikuZmluZChcIi5hcnRpY2xlemFuXCIpLnJlbW92ZUNsYXNzKFwiaHVvemFuXCIpLmFkZENsYXNzKFwiaGFzX2h1b3phblwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2hhcmVib3hcIikuZmluZChcIi5hcnRpY2xlemFuXCIpLnJlbW92ZUNsYXNzKFwiemFuXCIpLmFkZENsYXNzKFwiaGFzX3phblwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJChcIi5hcnRpY2xlemFuLCNwb3N0X2xpa2VfY291bnRcIikuY3NzKHtcInBvaW50ZXItZXZlbnRzXCI6XCJub25lXCJ9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIi5hcnRpY2xlemFuXCIpLnBhcmVudChcIi5jaGlsZFwiKS5jc3Moe1wicG9pbnRlci1ldmVudHNcIjpcIm5vbmVcIixcIm9wYWNpdHlcIjpcIjAuNVwifSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvL+W3sue7j+aUtuiXj1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIWNvbGxlY3Rfc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzaGFyZWJveFwiKS5maW5kKFwiLmFydGljbGVzY1wiKS5yZW1vdmVDbGFzcyhcInNob3VjYW5nXCIpLmFkZENsYXNzKFwiaGFzX3Nob3VjYW5nXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGluZm9zLnJlcG9zdF9zdGF0ZSAhPSAxKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/liIbkuqvmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcG9zdF9mb3J3YXJkX2NvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3Bvc3RfZm9yd2FyZF9jb3VudFwiKS50ZXh0KGZvcm1hdFphbk51bShwb3N0X2ZvcndhcmRfY291bnQsIDIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNlbXNoYXJld3JhcFwiKS5jc3Moe1wicG9pbnRlci1ldmVudHNcIjpcIm5vbmVcIixcIm9wYWNpdHlcIjpcIjAuNVwifSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2hhcmVib3R0b21cIikuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZihpbmZvcy5wb3N0X2NvbW1lbnRfYXV0aG9yeSAhPSAzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/or4TorrrmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcG9zdF9jb21tZW50X2NvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX251bSA9IGZvcm1hdFphbk51bShwb3N0X2NvbW1lbnRfY291bnQsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNwb3N0X2NvbW1lbnRfY291bnRcIikudGV4dChfbnVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuaW5mb3MgLmdvcGlubHVudHh0IC5pdGVtXCIpLmh0bWwoJzxpIGNsYXNzPVwiaWNvbmNvbW1lbnRcIj48L2k+PHNwYW4gY2xhc3M9XCJvcmFuZ2VcIj4nICsgaW5mb3MucG9zdF9jb21tZW50X2NvdW50ICsgJzwvc3Bhbj7kurror4TorronKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+ivhOiuuuWMuuWfn1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenh6d09iai5pbml0UGluTHVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuZ29waW5sdW50eHRcIikuYXR0cihcImhyZWZcIixcImphdmFzY3JpcHQ6O1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJChcIi5nb3Bpbmx1bnR4dCwuZ29waW5sdW50eHQgc3BhblwiKS5jc3Moe1wicG9pbnRlci1ldmVudHNcIjpcIm5vbmVcIn0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiLmdvcGlubHVudHh0XCIpLnBhcmVudChcIi5jaGlsZFwiKS5jc3Moe1wicG9pbnRlci1ldmVudHNcIjpcIm5vbmVcIixcIm9wYWNpdHlcIjpcIjAuNVwifSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIC8v5Yid5aeL5YyW6KGM5oOF6IKh56Wo6ZO+5o6l5Y+K6Ieq6YCJ6IKhXHJcbiAgICBpbml0UXVvdGVMaW5rOiBmdW5jdGlvbigpe1xyXG4gICAgICAgIC8v5q2j5paH6aG15aKe5Yqg572R6aG15Liq6IKh6ZO+5o6l5Yqf6IO9KOmdnuesrOS4gOasoeWHuueOsOeahOaXtuWAmei9rOaNouaIkGHpk77mjqUpXHJcbiAgICAgICAgJChcIi5lbV9zdG9ja19rZXlfY29tbW9uXCIpLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgX3RoaXMgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuYXR0cihcIndlYlwiKSA9PSBcIjFcIikgey8vd2ViPTHnmoTml7blgJlzcGFu5qCH562+5Y+Y5oiQYeagh+etvlxyXG4gICAgICAgICAgICAgICAgX3RoaXMuYWZ0ZXIoX3RoaXMucHJvcChcIm91dGVySFRNTFwiKS5yZXBsYWNlKFwiPHNwYW5cIiwgXCI8YVwiKS5yZXBsYWNlKFwiPC9zcGFuPlwiLCBcIjwvYT5cIikpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZhciBpc0lwYWQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhpcGFkKS4qb3NcXHMoW1xcZF9dKykvKTtcclxuICAgICAgICBpZiAoIWlzSXBhZCkgey8v6Z2eaXBhZFxyXG4gICAgICAgICAgICBuZXcgd2luZG93LnBkdGlwcyh7XHJcbiAgICAgICAgICAgICAgICBpZDogJyNDb250ZW50Qm9keSdcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgX3RpcFpJbmRleCA9IDEwMDtcclxuXHJcbiAgICAgICAgICAgICQoXCIudHh0aW5mb3MgPiBwLC50eHRpbmZvcyA+IGgzLC50eHRpbmZvcyA+IGg0LC50eHRpbmZvcyA+IHRhYmxlXCIpLm9uKFwibW91c2VsZWF2ZVwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5maW5kKFwiLnF1b3RlYm94XCIpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoXCIucXVvdGVib3hcIikucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgJChcIi50eHRpbmZvcyA+IHAsLnR4dGluZm9zID4gaDMsLnR4dGluZm9zID4gaDQsLnR4dGluZm9zID4gdGFibGVcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJChcIi5xdW90ZWJveFwiKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5xdW90ZWJveFwiKS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvL+ato+aWh+aWh+Wtl++8jOmcgOimgei3s+i9rOWOn+eUn+ihjOaDheeahOagh+etvuWxnuaAp+i9rOaNolxyXG4gICAgICAgICAgICAkKFwiLmtleXRpcFtkYXRhLWNvZGVdLC5lbV9zdG9ja19rZXlfY29tbW9uW2RhdGEtY29kZV1cIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIF90aGlzID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHZhciBfdGhpc0NvZGUgPSBfdGhpcy5kYXRhKFwiY29kZVwiKS5zcGxpdCgnLCcpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChfdGhpc0NvZGUubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKFwiZGF0YS1tYXJrZXRcIiwgX3RoaXNDb2RlWzBdKTsvL+aWsOWinuW4guWcuuWxnuaAp1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmF0dHIoXCJkYXRhLWNvZGVcIiwgX3RoaXNDb2RlWzFdKTsvL+aWsOWinuS7o+eggeWxnuaApyjkvJropobnm5bmjonogIHnmoTlsZ7mgKcpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCI9PT09PT09PT09PT09PT09PVwiLCBfdGhpcy5hdHRyKFwiZGF0YS1tYXJrZXRcIikgKyBcIi5cIiArIF90aGlzLmF0dHIoXCJkYXRhLWNvZGVcIikgKyBcIiAgICBcIiArIF90aGlzLmh0bWwoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfaXNNb3VzZU92ZXIgPSBmYWxzZTsvL+W9k+WJjeenu+WFpeWFg+e0oOWPiueKtuaAgVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5vbihcIm1vdXNlb3V0XCIsIGZ1bmN0aW9uIChlKSB7Ly/op6blj5HpmpDol4/ooYzmg4Vb54i25YWD57Sg56e75Ye6XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaXNNb3VzZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgaWYgKCFfaXNNb3VzZU92ZXIpIHsvL+eItuWFg+e0oOenu+WHujAuNeenkumSn+WQjueEpueCueS4jeWcqO+8jOWwseenu+mZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgaWYgKF90aGlzLmZpbmQoXCIucXVvdGVib3hcIikubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgIF90aGlzLmZpbmQoXCIucXVvdGVib3hcIikucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy99LCA1MDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5vbihcIm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoZSkgey8v6Kem5Y+R5pi+56S66KGM5oOFW+eItuWFg+e0oOenu+WFpV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzaXRlbSA9ICQodGhpcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+enu+WFpeeahOaXtuWAme+8jOWFiOWIoOmZpOWFtuS7luiCoeelqOeahOa1ruWxglxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnF1b3RlYm94XCIpLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YShcIm1jXCIpICE9IF90aGlzaXRlbS5hdHRyKFwiZGF0YS1tYXJrZXRcIikgKyBcIi5cIiArIF90aGlzaXRlbS5hdHRyKFwiZGF0YS1jb2RlXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaXNNb3VzZU92ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzTW91c2VPdmVyKSB7Ly/np7vlhaUwLjPnp5LlkI7nhKbngrnov5jlnKhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciB3aW5IZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgd2luV2lkdGggPSAkKHdpbmRvdykud2lkdGgoKSA8IDEwMDAgPyAxMDAwIDogJCh3aW5kb3cpLndpZHRoKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIF90aGlzV2lkdGggPSBfdGhpc2l0ZW0ud2lkdGgoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBfdGhpc0hlaWdodCA9IF90aGlzaXRlbS5oZWlnaHQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgZSA9IGUgfHwgd2luZG93LmV2ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIHNoID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciB4aCA9IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgfHwgMDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgdG9wTmF2ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmICgkKCcjZml4TWVudUJhcicpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICB0b3BOYXYgPSAzMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL31cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgbGVmdCA9IChlLmNsaWVudFggKyBfdGhpc1dpZHRoID4gd2luV2lkdGgpID8gJCh3aW5kb3cpLndpZHRoKCkgLSBfdGhpc1dpZHRoICsgeGggOiBlLmNsaWVudFggKyB4aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vbGVmdCA9IChlLmNsaWVudFggLSBfdGhpc1dpZHRoIDwgMCkgPyBlLmNsaWVudFggKyB4aCA6IGUuY2xpZW50WCAtIF90aGlzV2lkdGggKyB4aCArIDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgdG9wID0gKGUuY2xpZW50WSAtIF90aGlzSGVpZ2h0IC0gdG9wTmF2IDwgMCkgPyBlLmNsaWVudFkgKyBzaCArIDEwIDogZS5jbGllbnRZICsgc2ggLSAzNTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImxlZnQtdG9wOlwiLCBcImxlZnQ6XCIgKyBsZWZ0ICsgXCJ0b3A6XCIgKyB0b3ApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2lkID0gJ3F1b3RlJyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpc2l0ZW0uZmluZChcIi5xdW90ZWJveFwiKS5sZW5ndGggPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcXVvdGVib3hIdG1sID0gJzxkaXYgaWQ9XCInICsgX2lkICsgJ1wiIGNsYXNzPVwicXVvdGVib3hcIiBkYXRhLW1jPVwiJyArIF90aGlzaXRlbS5hdHRyKFwiZGF0YS1tYXJrZXRcIikgKyBcIi5cIiArIF90aGlzaXRlbS5hdHRyKFwiZGF0YS1jb2RlXCIpICsgJ1wiIHN0eWxlPVwiei1pbmRleDonICsgKF90aXBaSW5kZXgrKykgKyAnXCI+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXNpdGVtLmFwcGVuZChxdW90ZWJveEh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXNpdGVtLm9uKFwibW91c2VvdmVyXCIsIFwiLnF1b3RlYm94XCIsIGZ1bmN0aW9uICgpIHsvL+enu+WFpeWtkOa1ruWxglxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzTW91c2VPdmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpc2l0ZW0ub24oXCJtb3VzZW91dFwiLCBcIi5xdW90ZWJveFwiLCBmdW5jdGlvbiAoKSB7Ly/op6blj5HpmpDol4/ooYzmg4Vb5rWu5bGC56e75Ye6XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzaXRlbTIgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzTW91c2VPdmVyID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXNNb3VzZU92ZXIpIHsvLzAuNeenkuWQjueEpueCueS4jeWcqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpc2l0ZW0yLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9pbnRlcmZhY2UgPSBjb25maWcucHVzaCArIFwiYXBpL3F0L3VsaXN0Lm5wL2dldD91dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQmc2VjaWRzPVwiICsgX3RoaXNpdGVtLmF0dHIoXCJkYXRhLW1hcmtldFwiKSArIFwiLlwiICsgX3RoaXNpdGVtLmF0dHIoXCJkYXRhLWNvZGVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IF9pbnRlcmZhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25wOiBcImNiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0ganNvbi5kYXRhLmRpZmZbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFRdW90ZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IChpdGVtLmYyID09PSBcIlwiIHx8IGl0ZW0uZjIgPT09IFwiLVwiKSA/IFwiLVwiIDogcGFyc2VGbG9hdChpdGVtLmYyIC8gTWF0aC5wb3coMTAsIGl0ZW0uZjEpKS50b0ZpeGVkKGl0ZW0uZjEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZGY6IGl0ZW0uZjMgLyAxMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkZTogKGl0ZW0uZjQgPT09IFwiXCIgfHwgaXRlbS5mNCA9PT0gXCItXCIpID8gXCItXCIgOiBwYXJzZUZsb2F0KGl0ZW0uZjQgLyBNYXRoLnBvdygxMCwgaXRlbS5mMSkpLnRvRml4ZWQoaXRlbS5mMSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0uZjE0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYzogaXRlbS5mMTMgKyBcIi5cIiArIGl0ZW0uZjEyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXQ6IGl0ZW0uZjEzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpdGVtLmYxMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfY29sb3IgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhUXVvdGUuemRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29sb3IgPSBcInJlZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVF1b3RlLnpkZiA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbG9yID0gXCJncmVlblwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb2xvciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUXVvdGUuemRmID0gKChkYXRhUXVvdGUuemRmID09PSBcIlwiIHx8IGRhdGFRdW90ZS56ZGYgPT0gXCItXCIpID8gXCItXCIgOiBwYXJzZUZsb2F0KGRhdGFRdW90ZS56ZGYpLnRvRml4ZWQoMikgKyBcIiVcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjXCIgKyBfaWQpLmh0bWwoZGF0YVF1b3RlLm5hbWUgKyBcIu+8mlwiICsgZGF0YVF1b3RlLmNvZGUgKyBcIiA8c3BhbiBjbGFzcz0neml4dWFucHJpY2UgXCIgKyBfY29sb3IgKyBcIic+XCIgKyBkYXRhUXVvdGUucHJpY2UgKyBcIjwvc3Bhbj4gPHNwYW4gY2xhc3M9J3ppeHVhbnpkZiBcIiArIF9jb2xvciArIFwiJz5cIiArIGRhdGFRdW90ZS56ZGYgKyBcIjwvc3Bhbj4gPHNwYW4gY2xhc3M9J3ppeHVhbic+PC9zcGFuPlwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9kb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkdyA9IF9kb20uY2xpZW50V2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRsID0gX2RvbS5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGR3ICsgZGwgKyA0NCA+IDY3MCkgey8vNDTmmK/liqDoh6rpgInmiJbliKDoh6rpgInnmoTlrr3luqZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIF9pZCkuY3NzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGVmdFwiOiAoNjcwIC0gcGFyc2VJbnQoZHcgKyBkbCArIDQ0KSkgKyBcInB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0WlhJbmZvKCQoXCIjXCIgKyBfaWQgKyBcIiAueml4dWFuXCIpLCBkYXRhUXVvdGUubWMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwzMDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAgICog5Yid5aeL5YyW6Ieq6YCJ6IKh55u45YWz5L+h5oGvXHJcbiAgICAgICAgICAgKiBAcGFyYW0geyp9IGRvbSBqUXVlcnlEb20gXHJcbiAgICAgICAgICAgKiBAcGFyYW0geyp9IGNvZGUg6IKh56Wo5Luj56CBIDAuMzAwMDU5XHJcbiAgICAgICAgICAgKi9cclxuICAgICAgICBmdW5jdGlvbiBpbml0WlhJbmZvKGRvbSwgY29kZSkge1xyXG4gICAgICAgICAgICB2YXIgYXBpdXJsID0gJy8vbXlmYXZvci5lYXN0bW9uZXkuY29tL3Y0Lyc7IC8v5q2j5byP546v5aKDXHJcbiAgICAgICAgICAgIHZhciBhcHBrZXkgPSAnZTkxNjZjN2U5Y2RmYWQzYWEzZmQ3ZDkzYjc1N2U5YjEnO1xyXG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gXCJhcHBrZXk9XCIgKyBhcHBrZXk7XHJcbiAgICAgICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2UoJy4nLCAnJCcpO1xyXG5cclxuICAgICAgICAgICAgdmFyIGZpbmdlcnByaW50ID0gY29va2llLmdldCgncWdxcF9iX2lkJykgfHwgJyc7XHJcblxyXG4gICAgICAgICAgICBpZiAodXNlcnBhc3Nwb3J0LmdldCgpID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGFwaXVybCArPSAnYW5vbnltd2Vib3V0ZXIvJztcclxuICAgICAgICAgICAgICAgIHBhcmFtcyArPSBcIiZiaWQ9XCIgKyBmaW5nZXJwcmludDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFwaXVybCArPSAnd2Vib3V0ZXIvJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy/ojrflj5bpu5jorqTliIbnu4TogqHnpajvvIzmo4DmtYvmmK/lkKbliqDkuoboh6rpgIlcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIHVybDogYXBpdXJsICsgXCJnc2FhbmRjaGVjaz9cIiArIHBhcmFtcyArIFwiJmNiPT9cIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2V0XCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjOiBjb2RlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5zdGF0ZSA9PSAwICYmIGpzb24uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5kYXRhLmNoZWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20uYWRkQ2xhc3MoXCJ6aXh1YW5kZWxcIikuaHRtbChcIi3oh6rpgIlcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20ucmVtb3ZlQ2xhc3MoXCJ6aXh1YW5kZWxcIikuaHRtbChcIivoh6rpgIlcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9BZGRPckRlbFpYRyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3R5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoXCJ6aXh1YW5kZWxcIikpIHsvL+WIoOiHqumAiVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9BZGRPckRlbFpYRyA9IGFwaXVybCArIFwiZHN6P1wiICsgcGFyYW1zICsgXCImY2I9P1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90eXBlID0gXCJkZWxcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly/liqDoh6rpgIlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQWRkT3JEZWxaWEcgPSBhcGl1cmwgKyBcImFzej9cIiArIHBhcmFtcyArIFwiJmNiPT9cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdHlwZSA9IFwiYWRkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IF9BZGRPckRlbFpYRyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYzogY29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2suc3RhdGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF90eXBlID09IFwiYWRkXCIpIHsvL+WKoOiHqumAieaIkOWKn++8jOWPmOaIkOWIoOiHqumAiVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS5hZGRDbGFzcyhcInppeHVhbmRlbFwiKS5odG1sKFwiLeiHqumAiVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly/liKDoh6rpgInmiJDlip/vvIzlj5jmiJDliqDoh6rpgIlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20ucmVtb3ZlQ2xhc3MoXCJ6aXh1YW5kZWxcIikuaHRtbChcIivoh6rpgIlcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImJhY2subWVzc2FnZVwiLCBiYWNrLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy/liJ3lp4vljJblrZfkvZPlpKflsI9cclxuICAgIGxvYWRGb250U2l6ZTogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIHNpemUgPSBjb29raWUuZ2V0KFwiRU1fTmV3c0NvbnRlbnRfRm9udFNpemVcIik7XHJcbiAgICAgICAgaWYgKHNpemUgIT0gbnVsbCAmJiBzaXplICE9IFwiXCIgJiYgc2l6ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChzaXplKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiMTJcIjpcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnR4dGluZm9zXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtYmlnXCIpLmFkZENsYXNzKFwiZm9udHNpemUtc21hbGxcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5mc2N0cmxcIikucmVtb3ZlQ2xhc3MoXCJiZ21pZCBiZ2JpZ1wiKS5hZGRDbGFzcyhcImJnc21hbGxcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5mc2N0cmxib3ggLmZzMTRcIikuYWRkQ2xhc3MoXCJvblwiKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKFwib25cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5hYnN0cmFjdCAudHh0XCIpLmNzcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9udC1zaXplXCI6IFwiMTJweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxpbmUtaGVpZ2h0XCI6IFwiMjhweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiMTVcIjpcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnR4dGluZm9zXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtYmlnXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtc21hbGxcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5mc2N0cmxcIikucmVtb3ZlQ2xhc3MoXCJiZ3NtYWxsIGJnYmlnXCIpLmFkZENsYXNzKFwiYmdtaWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5mc2N0cmxib3ggLmZzMTZcIikuYWRkQ2xhc3MoXCJvblwiKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKFwib25cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5hYnN0cmFjdCAudHh0XCIpLmNzcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9udC1zaXplXCI6IFwiMTVweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxpbmUtaGVpZ2h0XCI6IFwiMzFweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiMThcIjpcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnR4dGluZm9zXCIpLmFkZENsYXNzKFwiZm9udHNpemUtYmlnXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtc21hbGxcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5mc2N0cmxcIikucmVtb3ZlQ2xhc3MoXCJiZ3NtYWxsIGJnbWlkXCIpLmFkZENsYXNzKFwiYmdiaWdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5mc2N0cmxib3ggLmZzMThcIikuYWRkQ2xhc3MoXCJvblwiKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKFwib25cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5hYnN0cmFjdCAudHh0XCIpLmNzcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9udC1zaXplXCI6IFwiMThweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxpbmUtaGVpZ2h0XCI6IFwiMzRweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICQoXCIudHh0aW5mb3NcIikucmVtb3ZlQ2xhc3MoXCJmb250c2l6ZS1iaWdcIikucmVtb3ZlQ2xhc3MoXCJmb250c2l6ZS1zbWFsbFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLmZzY3RybFwiKS5yZW1vdmVDbGFzcyhcImJnc21hbGwgYmdiaWdcIikuYWRkQ2xhc3MoXCJiZ21pZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLmZzY3RybGJveCAuZnMxNlwiKS5hZGRDbGFzcyhcIm9uXCIpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoXCJvblwiKTtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLmFic3RyYWN0IC50eHRcIikuY3NzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmb250LXNpemVcIjogXCIxNXB4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGluZS1oZWlnaHRcIjogXCIzMXB4XCJcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDkuovku7bnu5HlrpogXHJcbiAgICAgKi9cclxuICAgIGJpbmRFdmVudDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIC8vIOWtl+S9k+aOp+WItlxyXG4gICAgICAgICQoXCIjZnNjdHJsXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xyXG5cdFx0ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHQgICAgdmFyIF90aGlzID0gJCh0aGlzKTtcclxuXHRcdCAgICBpZiAoJChlLnRhcmdldCkucHJvcChcInRhZ05hbWVcIikgPT0gXCJTUEFOXCIpIHtcclxuXHRcdCAgICAgICAgdmFyIGZzdHlwZSA9ICQoZS50YXJnZXQpLmRhdGEoXCJ0eXBlXCIpO1xyXG5cdFx0ICAgICAgICBzd2l0Y2ggKGZzdHlwZSkge1xyXG5cdFx0ICAgICAgICAgICAgY2FzZSBcInNcIjpcclxuXHRcdCAgICAgICAgICAgICAgICAkKFwiLnR4dGluZm9zXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtYmlnXCIpLmFkZENsYXNzKFwiZm9udHNpemUtc21hbGxcIik7XHJcblx0XHQgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJiZ21pZCBiZ2JpZ1wiKS5hZGRDbGFzcyhcImJnc21hbGxcIik7XHJcblx0XHQgICAgICAgICAgICAgICAgY29va2llLnNldChcIkVNX05ld3NDb250ZW50X0ZvbnRTaXplXCIsIFwiMTJcIiwgMzY1LCBcIi5lYXN0bW9uZXkuY29tXCIpO1xyXG5cdFx0ICAgICAgICAgICAgICAgICQoXCIuYWJzdHJhY3QgLnR4dFwiKS5jc3Moe1xyXG5cdFx0ICAgICAgICAgICAgICAgICAgICBcImZvbnQtc2l6ZVwiOiBcIjEycHhcIixcclxuXHRcdCAgICAgICAgICAgICAgICAgICAgXCJsaW5lLWhlaWdodFwiOiBcIjI4cHhcIlxyXG5cdFx0ICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0ICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cdFx0ICAgICAgICAgICAgY2FzZSBcIm1cIjpcclxuXHRcdCAgICAgICAgICAgICAgICAkKFwiLnR4dGluZm9zXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtYmlnXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtc21hbGxcIik7XHJcblx0XHQgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJiZ3NtYWxsIGJnYmlnXCIpLmFkZENsYXNzKFwiYmdtaWRcIik7XHJcblx0XHQgICAgICAgICAgICAgICAgY29va2llLnNldChcIkVNX05ld3NDb250ZW50X0ZvbnRTaXplXCIsIFwiMTVcIiwgMzY1LCBcIi5lYXN0bW9uZXkuY29tXCIpO1xyXG5cdFx0ICAgICAgICAgICAgICAgICQoXCIuYWJzdHJhY3QgLnR4dFwiKS5jc3Moe1xyXG5cdFx0ICAgICAgICAgICAgICAgICAgICBcImZvbnQtc2l6ZVwiOiBcIjE1cHhcIixcclxuXHRcdCAgICAgICAgICAgICAgICAgICAgXCJsaW5lLWhlaWdodFwiOiBcIjMxcHhcIlxyXG5cdFx0ICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0ICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cdFx0ICAgICAgICAgICAgY2FzZSBcImxcIjpcclxuXHRcdCAgICAgICAgICAgICAgICAkKFwiLnR4dGluZm9zXCIpLmFkZENsYXNzKFwiZm9udHNpemUtYmlnXCIpLnJlbW92ZUNsYXNzKFwiZm9udHNpemUtc21hbGxcIik7XHJcblx0XHQgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQ2xhc3MoXCJiZ3NtYWxsIGJnbWlkXCIpLmFkZENsYXNzKFwiYmdiaWdcIik7XHJcblx0XHQgICAgICAgICAgICAgICAgY29va2llLnNldChcIkVNX05ld3NDb250ZW50X0ZvbnRTaXplXCIsIFwiMThcIiwgMzY1LCBcIi5lYXN0bW9uZXkuY29tXCIpO1xyXG5cdFx0ICAgICAgICAgICAgICAgICQoXCIuYWJzdHJhY3QgLnR4dFwiKS5jc3Moe1xyXG5cdFx0ICAgICAgICAgICAgICAgICAgICBcImZvbnQtc2l6ZVwiOiBcIjE4cHhcIixcclxuXHRcdCAgICAgICAgICAgICAgICAgICAgXCJsaW5lLWhlaWdodFwiOiBcIjM0cHhcIlxyXG5cdFx0ICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0ICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cdFx0ICAgICAgICB9O1xyXG5cdFx0ICAgICAgICAkKGUudGFyZ2V0KS5hZGRDbGFzcyhcIm9uXCIpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoXCJvblwiKTtcclxuXHRcdCAgICB9O1xyXG5cclxuXHRcdCAgICAkKFwiLmZzY3RybGJveFwiKS50b2dnbGUoKTtcclxuXHJcblx0XHQgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL+WJjeW+gOivhOiuuuWMulxyXG4gICAgICAgICQoXCIuZ29waW5sdW50eHRcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICgkKFwiI3RvcGJveFwiKS5oYXNDbGFzcyhcInRvcGJveGZpeFwiKSkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsICQoXCIjZ3ViYUNvbW1lbnRcIikub2Zmc2V0KCkudG9wIC0gJChcIiN0b3Bib3hcIikuaGVpZ2h0KCkgLSAkKFwiLnRvcC1uYXYtd3JhcFwiKS5oZWlnaHQoKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgJChcIiNndWJhQ29tbWVudFwiKS5vZmZzZXQoKS50b3AgLSAkKFwiI3RvcGJveFwiKS5oZWlnaHQoKSAqIDIgLSAkKFwiLnRvcC1uYXYtd3JhcFwiKS5oZWlnaHQoKSAqIDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g54K56LWeXHJcbiAgICAgICAgJChcIiNzaGFyZWJveFwiKS5vbihcImNsaWNrXCIsIFwiLmFydGljbGV6YW5cIiwgZnVuY3Rpb24oZSkge1xyXG5cdFx0ICAgIGlmIChfY3Rva2VuID09IG51bGwgfHwgX3V0b2tlbiA9PSBudWxsIHx8IF9HdWJhQXBpSCA9PSBudWxsKSB7XHJcblx0XHQgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBcImh0dHBzOi8vcGFzc3BvcnQyLmVhc3Rtb25leS5jb20vcHViL2xvZ2luP2JhY2t1cmw9XCIgKyBlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZik7XHJcblx0XHQgICAgfSBlbHNlIHtcclxuXHRcdCAgICAgICAgemFuT2JqLnphbkZ1bihlLCAkKHRoaXMpLCBcIjFcIiwgX05ld3NJZCk7XHJcblx0XHQgICAgfVxyXG5cdFx0ICAgIHJldHVybiBmYWxzZTtcclxuXHRcdH0pO1xyXG5cclxuICAgICAgICAvL+aUtuiXj1xyXG4gICAgICAgICQoXCIjc2hhcmVib3hcIikub24oXCJjbGlja1wiLCBcIi5hcnRpY2xlc2NcIiwgZnVuY3Rpb24oZSkge1xyXG5cdFx0ICAgIC8vIHZhciBfdGhpcyA9ICQodGhpcyksIGhhc2NvbGxlY3QgPSBmYWxzZTtcclxuXHRcdCAgICBpZiAoX2N0b2tlbiA9PSBudWxsIHx8IF91dG9rZW4gPT0gbnVsbCB8fCBfR3ViYUFwaUggPT0gbnVsbCkge1xyXG5cdFx0ICAgICAgICBsb2NhdGlvbi5ocmVmID0gXCJodHRwczovL3Bhc3Nwb3J0Mi5lYXN0bW9uZXkuY29tL3B1Yi9sb2dpbj9iYWNrdXJsPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpO1xyXG5cdFx0ICAgIH0gZWxzZSB7XHJcblx0XHQgICAgICAgIGNvbGxlY3RPYmouY29sbGVjdEZ1bihlLCAkKHRoaXMpLCBcIjFcIiwgX05ld3NJZCk7XHJcblx0XHQgICAgfVxyXG5cdFx0ICAgIHJldHVybiBmYWxzZTtcclxuXHRcdH0pO1xyXG5cclxuICAgICAgICAvLyDliIbkuqtcclxuICAgICAgICAkKFwiI2Vtc2hhcmV3cmFwXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xyXG5cdFx0ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG5cdFx0ICAgICQoXCIucXJpbWdib3hcIikuaGlkZSgpO1xyXG5cdFx0ICAgIGlmICgkKGUudGFyZ2V0KS5oYXNDbGFzcyhcInNoYXJlc1wiKSkge1xyXG5cdFx0ICAgICAgICAkKFwiLnNoYXJld3JhcFwiKS50b2dnbGUoKTtcclxuXHRcdCAgICB9XHJcblx0XHR9KTtcclxuXHJcbiAgICAgICAgLy/kuoznu7TnoIFcclxuICAgICAgICAkKFwiI3FyY29kZVwiKS5vbihcImNsaWNrXCIsIFwiLnFyaWNvblwiLCBmdW5jdGlvbihlKSB7XHJcblx0XHQgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHQgICAgJChcIi5zaGFyZXdyYXBcIikuaGlkZSgpO1xyXG5cdFx0ICAgIGlmICgkKGUudGFyZ2V0KS5oYXNDbGFzcyhcInFyaWNvblwiKSkge1xyXG5cdFx0ICAgICAgICAkKFwiLnFyaW1nYm94XCIpLnRvZ2dsZSgpO1xyXG5cdFx0ICAgIH1cclxuXHRcdH0pO1xyXG5cclxuICAgICAgICAvLyDmsqrmt7HmjIfmlbDpvKDmoIfmu5Hov4fliIfmjaLkuovku7ZcclxuICAgICAgICAkKFwiLnpzaXRlbXNcIikub24oXCJtb3VzZW92ZXJcIiwgXCIuenNpdGVtPnVsXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIF90aGlzZG9tID0gJCh0aGlzKTtcclxuXHJcbiAgICAgICAgICAgIF90aGlzZG9tLnBhcmVudChcIi56c2l0ZW1cIikuY3NzKHtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzE4MHB4J1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgX3RoaXNkb20uYXR0cihcIm9wZW5pbWdcIiwgXCJzaG93XCIpLnBhcmVudChcIi56c2l0ZW1cIikuc2libGluZ3MoKS5jc3Moe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnNDhweCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5RdW90ZXNob3dEb20gPSBfdGhpc2RvbS5wYXJlbnQoXCIuenNpdGVtXCIpLmRhdGEoXCJtY1wiKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChcImh0bWxcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihlKSB7XHJcblx0XHQgICAgLy/liIbkuqtcclxuXHRcdCAgICB2YXIgc2hhcmVib3ggPSAkKGUudGFyZ2V0KS5wYXJlbnRzKFwiI2Vtc2hhcmV3cmFwXCIpO1xyXG5cdFx0ICAgIGlmICghc2hhcmVib3gubGVuZ3RoKSB7XHJcblx0XHQgICAgICAgICQoXCIuc2hhcmV3cmFwXCIpLmhpZGUoKTtcclxuXHRcdCAgICB9O1xyXG5cdFx0ICAgIC8v5LqM57u056CBXHJcblx0XHQgICAgdmFyIHFyYm94ID0gJChlLnRhcmdldCkucGFyZW50cyhcIiNxcmNvZGVcIik7XHJcblx0XHQgICAgaWYgKCFxcmJveC5sZW5ndGgpIHtcclxuXHRcdCAgICAgICAgJChcIi5xcmltZ2JveFwiKS5oaWRlKCk7XHJcblx0XHQgICAgfTtcclxuXHRcdCAgICAvL+W6lemDqOWIhuS6q1xyXG5cdFx0ICAgIHZhciB3eGJveCA9ICQoZS50YXJnZXQpLnBhcmVudHMoXCIjc2hhcmVib3R0b21cIik7XHJcblx0XHQgICAgaWYgKCF3eGJveC5sZW5ndGgpIHtcclxuXHRcdCAgICAgICAgJChcIi53eHNoYXJlXCIpLmhpZGUoKTtcclxuXHRcdCAgICB9O1xyXG5cdFx0ICAgIC8v5bqV6YOo5YWz5rOoXHJcblx0XHQgICAgdmFyIGd6Ym94ID0gJChlLnRhcmdldCkucGFyZW50cyhcIiNndWFuemh1XCIpO1xyXG5cdFx0ICAgIGlmICghZ3pib3gubGVuZ3RoKSB7XHJcblx0XHQgICAgICAgICQoXCIud3hnemJveFwiKS5oaWRlKCk7XHJcblx0XHQgICAgfTtcclxuXHRcdCAgICAvL+Wtl+S9k+aOp+WItlxyXG5cdFx0ICAgIHZhciBnemJveCA9ICQoZS50YXJnZXQpLnBhcmVudHMoXCIjZnNjdHJsXCIpO1xyXG5cdFx0ICAgIGlmICghZ3pib3gubGVuZ3RoKSB7XHJcblx0XHQgICAgICAgICQoXCIuZnNjdHJsYm94XCIpLmhpZGUoKTtcclxuXHRcdCAgICB9O1xyXG5cclxuXHRcdCAgICAvL+mhtumDqOW+ruS/oeWIhuS6q+S6jOe7tOeggVxyXG5cdFx0ICAgIHZhciB0b3B3eGJveCA9ICQoZS50YXJnZXQpLnBhcmVudHMoXCIjd3hxcmNvZGVib3hcIik7XHJcblx0XHQgICAgaWYgKCF0b3B3eGJveC5sZW5ndGgpIHtcclxuXHRcdCAgICAgICAgJChcIi53eHFyY29kZWJveFwiKS5oaWRlKCk7XHJcblx0XHQgICAgfTtcclxuXHJcblx0XHR9KTtcclxuXHJcbiAgICAgICAgLy8g5aS06YOo5b6u5L+h5YiG5Lqr5LqL5Lu26YeN5YaZXHJcbiAgICAgICAgJChcIiNzaGFyZWl0ZW1zID4gLmVtc2hhcmUyMDIwX2ljb25fd2VpeGluXCIpLnVuYmluZChcImNsaWNrXCIpO1xyXG4gICAgICAgIHZhciB3eHFyY29kZWJveHN0ciA9IFwiPGRpdiBpZD0nd3hxcmNvZGVib3gnIGNsYXNzPSd3eHFyY29kZWJveCc+PHNwYW4gY2xhc3M9J2Fycm93cmlnaHQnPjwvc3Bhbj48ZGl2IGNsYXNzPSdpbWdib3gnPjxkaXYgY2xhc3M9J3FyaW1nJyBpZD0nd2FwcXJjb2RlNSc+PC9kaXY+PC9kaXY+PHA+5L2/55So5b6u5L+h5omr5LiA5omrPC9wPjxwPuWIhuS6q+aWh+eroOWIsOaCqOeahOaci+WPi+WciDwvcD48L2Rpdj5cIjtcclxuICAgICAgICAkKFwiI3NoYXJlaXRlbXNcIikuYXBwZW5kKCQod3hxcmNvZGVib3hzdHIpKTtcclxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoXCIjc2hhcmVpdGVtcyAuZW1zaGFyZTIwMjBfaWNvbl93ZWl4aW5cIikub24oXCJjbGlja1wiLGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgJChcIiNzaGFyZWl0ZW1zXCIpLmZpbmQoXCIjd3hxcmNvZGVib3hcIikudG9nZ2xlKCk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKCQoXCIjd3hxcmNvZGVib3hcIikuY3NzKFwiZGlzcGxheVwiKSA9PSBcImJsb2NrXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKCc8aW1nIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBzcmM9XCJodHRwczovL2diYXBpLmVhc3Rtb25leS5jb20vc2hhcmVvcHQvV2ViL1dlYl9TaGFyZS5naWY/cG9zdGlkPScrX05ld3NJZCsnJnR5cGU9MSZzaGFyZVR5cGU9MyZwbGF0PVdlYiZwcm9kdWN0PU5ld3MmdmVyc2lvbj0xMDAmZGV2aWNlaWQ9JysobmV3IERhdGUoKSkuZ2V0VGltZSgpKycmY3Rva2VuPScrY29va2llLmdldChcImN0XCIpKycmdXRva2VuPScrY29va2llLmdldChcInV0XCIpKydcIiAvPicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgJChcIi5lbXNoYXJlMjAyMF9pY29uX2d1YmFcIikub24oXCJjbGlja1wiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHNyYz1cImh0dHBzOi8vZ2JhcGkuZWFzdG1vbmV5LmNvbS9zaGFyZW9wdC9XZWIvV2ViX1NoYXJlLmdpZj9wb3N0aWQ9JytfTmV3c0lkKycmdHlwZT0xJnNoYXJlVHlwZT0wJnBsYXQ9V2ViJnByb2R1Y3Q9TmV3cyZ2ZXJzaW9uPTEwMCZkZXZpY2VpZD0nKyhuZXcgRGF0ZSgpKS5nZXRUaW1lKCkrJyZjdG9rZW49Jytjb29raWUuZ2V0KFwiY3RcIikrJyZ1dG9rZW49Jytjb29raWUuZ2V0KFwidXRcIikrJ1wiIC8+Jyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeyB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAkKFwiLmVtc2hhcmUyMDIwX2ljb25fd2VpYm9cIikub24oXCJjbGlja1wiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHNyYz1cImh0dHBzOi8vZ2JhcGkuZWFzdG1vbmV5LmNvbS9zaGFyZW9wdC9XZWIvV2ViX1NoYXJlLmdpZj9wb3N0aWQ9JytfTmV3c0lkKycmdHlwZT0xJnNoYXJlVHlwZT0yJnBsYXQ9V2ViJnByb2R1Y3Q9TmV3cyZ2ZXJzaW9uPTEwMCZkZXZpY2VpZD0nKyhuZXcgRGF0ZSgpKS5nZXRUaW1lKCkrJyZjdG9rZW49Jytjb29raWUuZ2V0KFwiY3RcIikrJyZ1dG9rZW49Jytjb29raWUuZ2V0KFwidXRcIikrJ1wiIC8+Jyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeyB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAkKFwiLmVtc2hhcmUyMDIwX2ljb25fcXpvbmVcIikub24oXCJjbGlja1wiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHNyYz1cImh0dHBzOi8vZ2JhcGkuZWFzdG1vbmV5LmNvbS9zaGFyZW9wdC9XZWIvV2ViX1NoYXJlLmdpZj9wb3N0aWQ9JytfTmV3c0lkKycmdHlwZT0xJnNoYXJlVHlwZT00JnBsYXQ9V2ViJnByb2R1Y3Q9TmV3cyZ2ZXJzaW9uPTEwMCZkZXZpY2VpZD0nKyhuZXcgRGF0ZSgpKS5nZXRUaW1lKCkrJyZjdG9rZW49Jytjb29raWUuZ2V0KFwiY3RcIikrJyZ1dG9rZW49Jytjb29raWUuZ2V0KFwidXRcIikrJ1wiIC8+Jyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeyB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgZW1zaGFyZUZ1biAhPSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIGVtc2hhcmVGdW4ucXJjb2RlKHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsLy8g5LqM57u056CB5a695bqmIOWPr+mAiSDpu5jorqQxMzVcclxuICAgICAgICAgICAgICAgIGNvbG9yRGFyazogXCIjMDAwMDAwXCIsIC8v5LqM57u056CB6aKc6ImyIOWPr+mAiSDpu5jorqTpu5FcclxuICAgICAgICAgICAgICAgIGNvbG9yTGlnaHQ6IFwiI2ZmZmZmZlwiLC8v6IOM5pmv6ImyIOWPr+mAiSDpu5jorqTnmb1cclxuICAgICAgICAgICAgICAgIGxvZ29zcmM6IFwiaHR0cHM6Ly9nMS5kZmNmdy5jb20vZzQvMjAyMDAzLzIwMjAwMzE4MTQwNDM2LmdpZlwiLC8vIOS6jOe7tOeggWxvZ2/kv6Hmga8g5Y+v6YCJW+S4jeW7uuiuruWKoOatpOWPguaVsF0g6buY6K6k5pyJbG9nbyDlgLzkuLpcIm5vbmVcIuaXtuaXoGxvZ29cclxuICAgICAgICAgICAgICAgIGxpbms6IF9fV0FQVVJMLFxyXG4gICAgICAgICAgICAgICAgZG9taWQ6IFwid2FwcXJjb2RlNVwiXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5bqV6YOo5b6u5L+h5YiG5Lqr5LqL5Lu26YeN5YaZXHJcbiAgICAgICAgJChcIiNzaGFyZWJvdHRvbSAuZW1zaGFyZTIwMjBfaWNvbl93ZWl4aW5cIikudW5iaW5kKFwiY2xpY2tcIik7XHJcbiAgICAgICAgJChcIiNzaGFyZWJvdHRvbVwiKS5vbihcImNsaWNrXCIsIFwiLmVtc2hhcmUyMDIwX2ljb25fd2VpeGluXCIsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAkKFwiI3NoYXJlYm90dG9tXCIpLmZpbmQoXCIud3hzaGFyZVwiKS50b2dnbGUoKTtcclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZigkKFwiLnd4c2hhcmVcIikuY3NzKFwiZGlzcGxheVwiKSA9PSBcImJsb2NrXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHNyYz1cImh0dHBzOi8vZ2JhcGkuZWFzdG1vbmV5LmNvbS9zaGFyZW9wdC9XZWIvV2ViX1NoYXJlLmdpZj9wb3N0aWQ9JytfTmV3c0lkKycmdHlwZT0xJnNoYXJlVHlwZT0zJnBsYXQ9V2ViJnByb2R1Y3Q9TmV3cyZ2ZXJzaW9uPTEwMCZkZXZpY2VpZD0nKyhuZXcgRGF0ZSgpKS5nZXRUaW1lKCkrJyZjdG9rZW49Jytjb29raWUuZ2V0KFwiY3RcIikrJyZ1dG9rZW49Jytjb29raWUuZ2V0KFwidXRcIikrJ1wiIC8+Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cdFx0fSk7XHJcblxyXG4gICAgICAgIC8v5bqV6YOo5b6u5L+h5YWz5rOoXHJcbiAgICAgICAgJChcIiNndWFuemh1XCIpLm9uKFwiY2xpY2tcIiwgXCIuZ3otd3hcIiwgZnVuY3Rpb24oZSkge1xyXG5cdFx0ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHQgICAgJChcIi53eGd6Ym94XCIpLnRvZ2dsZSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5vbmtleWRvd249ZnVuY3Rpb24oZXYpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgb0V2ZW50ID0gZXYgfHwgZXZlbnQ7XHJcblxyXG4gICAgICAgICAgICBpZiAob0V2ZW50LmtleUNvZGUgPT0gMzMpIHsvL3BhZ2V1cFxyXG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5zY3JvbGxZIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgd2luZG93LnNjcm9sbFkgLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICsgJChcIi50b3AtbmF2LXdyYXBcIikuaGVpZ2h0KCkgKyAkKFwiLnRvcGJveFwiKS5oZWlnaHQoKSArIDMwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvRXZlbnQua2V5Q29kZSA9PSAzNCkgey8vcGFnZWRvd25cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCB3aW5kb3cuc2Nyb2xsWSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLSAkKFwiLnRvcC1uYXYtd3JhcFwiKS5oZWlnaHQoKSAtICQoXCIudG9wYm94XCIpLmhlaWdodCgpIC0gMzApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICQoXCIubmV3c3RpdGxlZG93blwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHsvL+WxleW8gOeCueWHu+S6i+S7tlxyXG4gICAgICAgICAgICB0aGF0LmlzRGVmYXVsdFNob3dUaXRsZSA9IFwidHJ1ZVwiO1xyXG4gICAgICAgICAgICBjb29raWUuc2V0KFwiY29udGVudF9zaG93dGl0bGVcIiwgXCJ0cnVlXCIsIDM2NSwgXCIuZWFzdG1vbmV5LmNvbVwiKTtcclxuICAgICAgICAgICAgdGhhdC5oaWRlRG93bigpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKFwiLm5ld3N0aXRsZXVwXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkgey8v5pS26LW354K55Ye75LqL5Lu2XHJcbiAgICAgICAgICAgIHRoYXQuaXNEZWZhdWx0U2hvd1RpdGxlID0gXCJmYWxzZVwiO1xyXG4gICAgICAgICAgICBjb29raWUuc2V0KFwiY29udGVudF9zaG93dGl0bGVcIiwgXCJmYWxzZVwiLCAzNjUsIFwiLmVhc3Rtb25leS5jb21cIik7XHJcbiAgICAgICAgICAgIHRoYXQuc2hvd0Rvd24oKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9LFxyXG4gICAgLy8g54Ot5pCc5Y+K5rua5YqoXHJcbiAgICBnZXRIb3ROZXdzOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiAnR0VUJyxcclxuICAgICAgICAgICAgdXJsOiAnLy9zZWFyY2hhZGFwdGVyLmVhc3Rtb25leS5jb20vYXBpL1BvcHVsYXJLZXkvZ2V0P3Rva2VuPUIyMkQxNzhCMTJBMjIxMDJEOUQ4QTBDRTREMkFDODI0JmNvdW50PTIwJmNiPWRhdGEnLFxyXG4gICAgICAgICAgICBqc29ucENhbGxiYWNrOiBcImRhdGFcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gXCJcIixcclxuXHRcdFx0XHRcdGxpc3QgPSByZXMuRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSArPSAnPGEgaHJlZj1cIicgKyBsaXN0W2ldLkp1bXBBZGRyZXNzICsgJ1wiIHRyYWNrZXItZXZlbnRjb2RlPVwiV2ViX3BkendfcnN0Z1wiIHRyYWNrZXItZXh0aW5mbz1cInNvdXJjZTpuZXdzcmlnaHQ7XCI+JyArIGxpc3RbaV0uS2V5UGhyYXNlICsgJzwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNob3RuZXdzXCIpLmFwcGVuZCgkKGl0ZW0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaG90U2VhcmNoU2Nyb2xsLmluaXQoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICAvL+eEpueCueS4k+mimOa7muWKqOWMulxyXG4gICAgaW5pdFJEVEo6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiAnR0VUJyxcclxuICAgICAgICAgICAgdXJsOiAnLy9saXN0Lmx2Yi5lYXN0bW9uZXkuY29tL0xWQi9hcGkvUm9hZHNob3cvR3ViYUJhbm5lcj9kZXZpY2VfaWQ9MTIzJnZlcnNpb249MSZwbGF0PXdlYiZwcm9kdWN0PUd1YmEmbmV0d29yaz13aWZpJmN0b2tlbj0mdXRva2VuPSZjYWxsYmFjaz0/JyxcclxuICAgICAgICAgICAgLy9qc29ucENhbGxiYWNrOiBcImRhdGFcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9odG1sID0gJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcmVzLmRhdGEuY29sdW1ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUJpZyA9IHJlcy5kYXRhLmNvbHVtbnNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gaXRlbUJpZy5jb2x1bW5fZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBpdGVtQmlnLmNvbHVtbl9kYXRhW2pdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmNvdmVyICYmIGl0ZW0uY292ZXIgIT0gXCJcIiAmJiBpdGVtLm5hbWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbGluayA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcIuiuv+iwiFwiID09IGl0ZW1CaWcuY29sdW1uX25hbWUgfHwgXCLor77loIJcIiA9PSBpdGVtQmlnLmNvbHVtbl9uYW1lIHx8IFwi5bCP6KeG6aKRXCIgPT0gaXRlbUJpZy5jb2x1bW5fbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbGluayA9ICdodHRwczovL3JvYWRzaG93LmVhc3Rtb25leS5jb20vencvJyArIGl0ZW0uY2ZoX2FydF9jb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9saW5rID0gJ2h0dHBzOi8vcm9hZHNob3cuZWFzdG1vbmV5LmNvbS9sdXlhbi8nICsgaXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxsaT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicgKyBfbGluayArICdcIiBjbGFzcz1cImltZ1wiIHRpdGxlPVwiJyArIGl0ZW0ubmFtZSArICdcIj4nO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2NvdmVyTGluayA9IGl0ZW0uY292ZXIucmVwbGFjZShcImh0dHA6Ly9cIiwgXCJodHRwczovL1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2NvdmVyVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb3ZlclRhZy5ocmVmID0gX2NvdmVyTGluaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2NvdmVyVGFnLmhvc3RuYW1lID09IFwiZW1hdi1jb3MubHZiLmVhc3Rtb25leS5jb21cIiB8fCBfY292ZXJUYWcuaG9zdG5hbWUgPT0gXCJlbWF2LTEyNTIwMzMyNjQuY29zLmFwLWNob25ncWluZy5teXFjbG91ZC5jb21cIiB8fCBfY292ZXJUYWcuaG9zdG5hbWUgPT0gXCJlbWF2LTEyNTIwMzMyNjQuY29zLmFjY2VsZXJhdGUubXlxY2xvdWQuY29tXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jb3ZlclRhZy5zZWFyY2guaW5kZXhPZihcIj9cIikgPCAwKSB7Ly/msqHmnIlcIj9cIuWKoOWPguaVsFwiP2ltYWdlTW9ncjIvdGh1bWJuYWlsLzQwMHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvdmVyTGluayA9IF9jb3ZlckxpbmsgKyBcIj9pbWFnZU1vZ3IyL3RodW1ibmFpbC80MDB4XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiJyArIF9jb3ZlckxpbmsgKyAnXCIgLz4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgICAgIDxkaXYgY2xhc3M9XCJwbGF5XCI+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnICAgIDwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICcgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicgKyBfbGluayArICdcIiBjbGFzcz1cInRpdGxlXCI+JyArIGl0ZW0ubmFtZSArICc8L2E+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2Nyb2xsdmlkZXMgdWxcIikuaHRtbChfaHRtbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICQoXCIucGljX3N3aXBlclwiKS5zbGlkZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdENlbGw6IFwiLmhkIHVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haW5DZWxsOiBcIi5iZCB1bFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3Q6IFwibGVmdExvb3BcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QYWdlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9LFxyXG4gICAgc2hvd0Rvd246IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAkKFwiI3RvcGJveGJha1wiKS5oaWRlKCk7XHJcbiAgICAgICAgJChcIi50b3Bib3hcIikucmVtb3ZlQ2xhc3MoXCJ0b3Bib3hmaXhcIik7XHJcblxyXG4gICAgICAgICQoXCIubmV3c3RpdGxlZG93blwiKS5zaG93KCk7XHJcbiAgICB9LFxyXG4gICAgaGlkZURvd246IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAkKFwiI3RvcGJveGJha1wiKS5zaG93KCk7XHJcbiAgICAgICAgJChcIi50b3Bib3hcIikuYWRkQ2xhc3MoXCJ0b3Bib3hmaXhcIik7XHJcblxyXG4gICAgICAgICQoXCIubmV3c3RpdGxlZG93blwiKS5oaWRlKCk7XHJcbiAgICB9LFxyXG4gICAgaXNEZWZhdWx0U2hvd1RpdGxlOiBjb29raWUuZ2V0KCdjb250ZW50X3Nob3d0aXRsZScpIHx8IFwidHJ1ZVwiLFxyXG4gICAgLy8g5Zu66aG2OlxyXG4gICAgZ3VkaW5nRnVuOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIHZhciBzbSA9ICQoXCIjdG9wYm94XCIpO1xyXG4gICAgICAgIHZhciBfZ2JvZmZzZXR0b3AgPSAkKFwiI2d1YmFDb21tZW50XCIpLm9mZnNldCgpLnRvcDtcclxuICAgICAgICB2YXIgX29mZnRvcCA9IHNtLm9mZnNldCgpLnRvcDtcclxuICAgICAgICB2YXIgX2ggPSBzbS5oZWlnaHQoKTtcclxuICAgICAgICBmdW5jdGlvbiBjaGVja0ZpeFRpdGxlKCkge1xyXG4gICAgICAgICAgICB0aGF0LmlzRGVmYXVsdFNob3dUaXRsZSA9IGNvb2tpZS5nZXQoJ2NvbnRlbnRfc2hvd3RpdGxlJykgfHwgXCJ0cnVlXCI7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ID49IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNjcm9sbHRvcCA9ICQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbHRvcCA+IF9vZmZ0b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5pc0RlZmF1bHRTaG93VGl0bGUgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiN0b3Bib3hiYWtcIikuY3NzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IF9oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmhpZGVEb3duKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsdG9wIDw9IF9vZmZ0b3AgKyBfaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIi5uZXdzdGl0bGV1cFwiKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLm5ld3N0aXRsZXVwXCIpLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGx0b3AgPD0gX29mZnRvcCArIF9oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLm5ld3N0aXRsZWRvd25cIikuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5zaG93RG93bigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI3RvcGJveGJha1wiKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi50b3Bib3hcIikucmVtb3ZlQ2xhc3MoXCJ0b3Bib3hmaXhcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICQoXCIubmV3c3RpdGxlZG93blwiKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkKFwiI3RvcGJveGJha1wiKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLnRvcGJveFwiKS5yZW1vdmVDbGFzcyhcInRvcGJveGZpeFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAkKFwiLm5ld3N0aXRsZWRvd25cIikuaGlkZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vJCh3aW5kb3cpLnNjcm9sbChjaGVja0ZpeFRpdGxlKTtcclxuICAgICAgICAvLyQod2luZG93KS5yZXNpemUoY2hlY2tGaXhUaXRsZSk7XHJcbiAgICB9LFxyXG4gICAgLy/or4TorrrljLrln59cclxuICAgIGluaXRQaW5MdW46IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoX0lTQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9DTVNISiA9PSBcInRlc3RcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5lZGl0b3JBbmRMaXN0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2U6ICcjZ3ViYUNvbW1lbnQnLCBpZDogX05ld3NJZCwgdHlwZTogMSwgJ3RvcE5hdkgnOiAzMCwgZW52OiAndGVzdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Q6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X2xpa2VzX3N0YXRlOiBfX2FsbG93X2xpa2VzX3N0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cGxvYWRVcmw6IFwiL2EvdXBsb2FkX2NhbGxiYWNrL3VwbG9hZF9jYWxsYmFja1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZWRpdG9yQW5kTGlzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlOiAnI2d1YmFDb21tZW50JywgaWQ6IF9OZXdzSWQsIHR5cGU6IDEsICd0b3BOYXZIJzogMzAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Q6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X2xpa2VzX3N0YXRlOiBfX2FsbG93X2xpa2VzX3N0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8sIHVwbG9hZFVybDogXCIvYS91cGxvYWRfY2FsbGJhY2svdXBsb2FkX2NhbGxiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjb252ZXJ0VG9OZXdzTGlzdERhdGUoX2RhdGUpIHtcclxuICAgIC8vIHZhciByZWcgPS8oXFxkezR9KVxcLShcXGR7Mn0pXFwtKFxcZHsyfSkgKFxcZHsyfTpcXGR7Mn0pLztcclxuICAgIC8vIGlmKF9kYXRlLmxlbmd0aCA+IDE2KXtcclxuICAgIC8vICAgICBfZGF0ZSA9IF9kYXRlLnN1YnN0cigwLCAxNikucmVwbGFjZShyZWcsXCIkMeW5tCQy5pyIJDPml6UgJDRcIik7XHJcbiAgICAvLyB9XHJcbiAgICBcclxuICAgIHZhciByZWcgPS8oXFxkezR9KVxcLyhcXGR7Mn0pXFwvKFxcZHsyfSkgKFxcZHsyfTpcXGR7Mn0pLztcclxuICAgIGlmKF9kYXRlLmxlbmd0aCA+IDE2KXtcclxuICAgICAgICBfZGF0ZSA9IF9kYXRlLnN1YnN0cigwLCAxNikucmVwbGFjZShyZWcsXCIkMeW5tCQy5pyIJDPml6UgJDRcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX2RhdGU7XHJcbn1cclxuXHJcbiQoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyAgICAgdmFyIF9zdHlsZUhUTUwgPSAnaHRtbCB7ZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7LXdlYmtpdC1maWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTstbW96LWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpOy1tcy1maWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTstby1maWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTtmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKGdyYXlzY2FsZT0xKTstd2Via2l0LWZpbHRlcjogZ3JheXNjYWxlKDEpO30qIHtmaWx0ZXI6IGdyYXk7fSc7XHJcbiAgICAvLyAgICAgdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xyXG4gICAgLy8gICAgIHZhciBfc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgLy8gICAgIF9zdHlsZS50eXBlPSd0ZXh0L2Nzcyc7XHJcbiAgICAvLyAgICAgaWYgKF9zdHlsZS5zdHlsZVNoZWV0KSB7IC8vaWXkuIsgIFxyXG4gICAgLy8gICAgICAgICBfc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gX3N0eWxlSFRNTDtcclxuICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBfc3R5bGUuaW5uZXJIVE1MID0gX3N0eWxlSFRNTDsgLy/miJbogIXlhpnmiJAgbm9kLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKF9zdHlsZUhUTUwpKSAgXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGhlYWQuYXBwZW5kQ2hpbGQoX3N0eWxlKTtcclxuICAgIC8vIH0sIDUwMCk7XHJcbiAgICBpZihfX0lzQmVmb3JlTG9hZCl7XHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBjb25maWcubmV3c2luZm8gK1wia3VhaXh1bi92Mi9hcGkvYXJ0aWNsZS9cIitfTmV3c0lkK1wiP2d1aWQ9XCIrKG5ldyBEYXRlKCkpLmdldFRpbWUoKStcIiZjYWxsYmFjaz0/XCIsXHJcbiAgICAgICAgICAgIHR5cGU6IFwiZ2V0XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihqc29uKSB7XHJcbiAgICAgICAgICAgICAgICBpZihqc29uICYmIGpzb24uZGF0YSl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGpzb24uZGF0YS5BcnRfRmFzdCA9PSAgXCIxXCIpey8v5bGP6JS95b+r6K6vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBcImh0dHBzOi8vZmluYW5jZS5lYXN0bW9uZXkuY29tLzQwNC5odG1sXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSArPSBqc29uLmRhdGEuQXJ0X1RpdGxlO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlICs9IFwiIF8g5Lic5pa56LSi5a+M572RXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9LZXl3b3JkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnbWV0YVtuYW1lPVwia2V5d29yZHNcIl0nKS5hdHRyKFwiY29udGVudFwiLGpzb24uZGF0YS5BcnRfS2V5d29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGpzb24uZGF0YS5BcnRfRGVzY3JpcHRpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCdtZXRhW25hbWU9XCJkZXNjcmlwdGlvblwiXScpLmF0dHIoXCJjb250ZW50XCIsanNvbi5kYXRhLkFydF9EZXNjcmlwdGlvbik7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9UYWdzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX05ld3NUYWcgPSBqc29uLmRhdGEuQXJ0X1RhZ3M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9Jc0NvbW1lbnQgPT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfSVNDb21tZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX0lTQ29tbWVudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi50b3Bib3ggLnRpdGxlXCIpLmh0bWwoanNvbi5kYXRhLkFydF9UaXRsZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmZvc0hUTUwgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICBpbmZvc0hUTUwgKz0gJzxkaXYgY2xhc3M9XCIgaXRlbVwiPicrY29udmVydFRvTmV3c0xpc3REYXRlKGpzb24uZGF0YS5BcnRfU2hvd1RpbWUpKyc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGpzb24uZGF0YS5BcnRfQXV0aG9yX05hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvc0hUTUwgKz0gJzxkaXYgY2xhc3M9XCJpdGVtXCI+5L2c6ICF77yaJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9BdXRob3JfVHlwZSA9PSBcIjJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvc0hUTUwgKz0gJzxhIGhyZWY9XCJodHRwOi8vbWluZ2ppYS5lYXN0bW9uZXkuY29tLycranNvbi5kYXRhLkFydF9BdXRob3JfUGluWWluKycvaW5kZXguaHRtbFwiIHRhcmdldD1cIl9ibGFua1wiPicranNvbi5kYXRhLkFydF9BdXRob3JfTmFtZSsnPC9hPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3NIVE1MICs9IGpzb24uZGF0YS5BcnRfQXV0aG9yX05hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3NIVE1MICs9ICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZihqc29uLmRhdGEuQXJ0X01lZGlhX05hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvc0hUTUwgKz0gJzxkaXYgY2xhc3M9XCJpdGVtXCI+5p2l5rqQ77yaJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9NZWRpYV9UeXBlID09IFwiM1wiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9zSFRNTCArPSAnPGEgaHJlZj1cImh0dHA6Ly9qaWdvdS5lYXN0bW9uZXkuY29tLycranNvbi5kYXRhLkFydF9NZWRpYV9QaW5ZaW4rJy9pbmRleC5odG1sXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Jytqc29uLmRhdGEuQXJ0X01lZGlhX05hbWUrJzwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9zSFRNTCArPSBqc29uLmRhdGEuQXJ0X01lZGlhX05hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3NIVE1MICs9ICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZihqc29uLmRhdGEuQXJ0X0lzQ29tbWVudCA9PSBcIjFcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9zSFRNTCArPSAnPGEgaHJlZj1cIiNndWJhQ29tbWVudFwiIHRhcmdldD1cIl9zZWxmXCIgY2xhc3M9XCJnb3Bpbmx1bnR4dFwiIGlkPVwiZ29waW5sdW50eHQxXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3NIVE1MICs9ICc8ZGl2IGNsYXNzPVwiaXRlbVwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZm9zSFRNTCArPSAnPGkgY2xhc3M9XCJpY29uY29tbWVudFwiPjwvaT48c3BhbiBjbGFzcz1cIm9yYW5nZVwiPjwvc3Bhbj7kurror4TorronO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvc0hUTUwgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9zSFRNTCArPSAnIDwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAkKFwiLmluZm9zXCIpLmh0bWwoaW5mb3NIVE1MKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRIVE1MID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9TaG93VmlkZW8gPT0gXCIwXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+inhumikeS4jeaYvuekulxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihqc29uLmRhdGEuQXJ0X0xLU1BEYXRhICYmIGpzb24uZGF0YS5BcnRfTEtTUERhdGEgIT0gXCJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQXJ0X0xLU1BEYXRhID0ganNvbi5kYXRhLkFydF9MS1NQRGF0YS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBBcnRfTEtTUERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50SFRNTCArPSAnPGRpdiBjbGFzcz1cIm1pZGRsZXZpZGVvYmdcIiBkYXRhLWlkPVwiYXYtcGxheWVyJytpKydcIiBkYXRhLXZhbHVlPVwiJytBcnRfTEtTUERhdGFbaV0rJ1wiPjx2aWRlbyBpZD1cImF2LXBsYXllcicraSsnXCIgY2xhc3M9XCJlbWF2XCIgcHJlbG9hZD1cImF1dG9cIj48L3ZpZGVvPjwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudEhUTUwgKz0ganNvbi5kYXRhLkFydF9Db250ZW50LnJlcGxhY2UoL2hyZWY9L2csXCIgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICQoXCIjQ29udGVudEJvZHlcIikuaHRtbChjb250ZW50SFRNTCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNDb250ZW50Qm9keVwiKS5zaG93KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2Vib3hIVE1MID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9NZWRpYV9OYW1lKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlYm94SFRNTCArPSAnPHNwYW4+5paH56ug5p2l5rqQ77yaJytqc29uLmRhdGEuQXJ0X01lZGlhX05hbWUrJzwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZihqc29uLmRhdGEuQXJ0X0VkaXRvcl9Db2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlYm94SFRNTCArPSAnPHNwYW4gY2xhc3M9XCJmbHJcIj7otKPku7vnvJbovpHvvJonK2pzb24uZGF0YS5BcnRfRWRpdG9yX0NvZGUrJzwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnp3b3RoZXJzIC5zb3VyY2Vib3hcIikuaHRtbChzb3VyY2Vib3hIVE1MKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoanNvbi5kYXRhLkFydF9PcmlnaW5hbFRpdGxlICYmIGpzb24uZGF0YS5BcnRfT3JpZ2luYWxUaXRsZS50cmltKCkgIT0gXCJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuendvdGhlcnMgLnNvdXJjZWJveFwiKS5hZnRlcignPGRpdiBjbGFzcz1cInN1YmxhYlwiPuWOn+agh+mimO+8micranNvbi5kYXRhLkFydF9PcmlnaW5hbFRpdGxlKyc8L2Rpdj4nKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnp3b3RoZXJzIC5zbSBhXCIpLmF0dHIoXCJocmVmXCIsJChcIi56d290aGVycyAuc20gYVwiKS5hdHRyKFwiaHJlZlwiKS5yZXBsYWNlKCcjdGl0bGUjJyxqc29uLmRhdGEuQXJ0X1RpdGxlKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKF9OZXdzSWQgPT0gXCIyMDIwMDIxNTEzODYzMDM3NDdcIil7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihqc29uLmRhdGEuQXJ0X1JvYm90X05ld3MgPT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuendvdGhlcnMgLnNtIC5zdWJsYWJcIikuaHRtbChcIjxzdHJvbmcgc3R5bGU9J2NvbG9yOiM2NjY7Jz7pg5Hph43lo7DmmI7vvJo8L3N0cm9uZz7mnKzkv6Hmga/mnaXmupDkuo7kuJzmlrnotKLlr4xDaG9pY2XmlbDmja7vvIznm7jlhbPmlbDmja7ku4Xkvpvlj4LogIPvvIzkuI3mnoTmiJDmipXotYTlu7rorq7jgILkuJzmlrnotKLlr4znvZHlipvmsYLkvYbkuI3kv53or4HmlbDmja7nmoTlrozlhajlh4bnoa7vvIzlpoLmnInplJnmvI/or7fku6XkuK3lm73or4Hnm5HkvJrmjIflrprkuIrluILlhazlj7jkv6Hmga/miqvpnLLlqpLkvZPkuLrlh4bvvIzkuJzmlrnotKLlr4znvZHkuI3lr7nlm6Dor6XotYTmlpnlhajpg6jmiJbpg6jliIblhoXlrrnogIzlvJXoh7TnmoTnm4jkuo/mib/mi4Xku7vkvZXotKPku7vjgILnlKjmiLfkuKrkurrlr7nmnI3liqHnmoTkvb/nlKjmib/mi4Xpo47pmanvvIzkuJzmlrnotKLlr4znvZHlr7nmraTkuI3kvZzku7vkvZXnsbvlnovnmoTmi4Xkv53jgIJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnp3b3RoZXJzIC5zbSAuc3VibGFiXCIpLmh0bWwoXCI8c3Ryb25nIHN0eWxlPSdjb2xvcjojNjY2Oyc+6YOR6YeN5aOw5piO77yaPC9zdHJvbmc+5Lic5pa56LSi5a+M5Y+R5biD5q2k5YaF5a655peo5Zyo5Lyg5pKt5pu05aSa5L+h5oGv77yM5LiO5pys56uZ56uL5Zy65peg5YWz77yM5LiN5p6E5oiQ5oqV6LWE5bu66K6u44CC5o2u5q2k5pON5L2c77yM6aOO6Zmp6Ieq5ouF44CCXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZW1zaGFyZUZ1biA9IG5ldyBlbXNoYXJlMjAyMCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqc29uLmRhdGEuQXJ0X1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqc29uLmRhdGEuQXJ0X0Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nVXJsOiBcImh0dHBzOi8vY21zanMuZWFzdG1vbmV5LmNvbS9jb21tb24vd2VpeGluLXNoYXJlLnBuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW1zaGFyZUZ1biAhPSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbXNoYXJlRnVuLnFyY29kZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwLC8vIOS6jOe7tOeggeWuveW6piDlj6/pgIkg6buY6K6kMTM1XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckRhcms6IFwiIzAwMDAwMFwiLCAvL+S6jOe7tOeggeminOiJsiDlj6/pgIkg6buY6K6k6buRXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckxpZ2h0OiBcIiNmZmZmZmZcIiwvL+iDjOaZr+iJsiDlj6/pgIkg6buY6K6k55m9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvc3JjOiBcImh0dHBzOi8vZzEuZGZjZncuY29tL2c0LzIwMjAwMy8yMDIwMDMxODE0MDQzNi5naWZcIiwvLyDkuoznu7TnoIFsb2dv5L+h5oGvIOWPr+mAiVvkuI3lu7rorq7liqDmraTlj4LmlbBdIOm7mOiupOaciWxvZ28g5YC85Li6XCJub25lXCLml7bml6Bsb2dvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBcImh0dHA6Ly9kbC5kZmNmcy5jb20vbS9vemloXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZDogXCJ3YXBxcmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtc2hhcmVGdW4ucXJjb2RlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsLy8g5LqM57u056CB5a695bqmIOWPr+mAiSDpu5jorqQxMzVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yRGFyazogXCIjMDAwMDAwXCIsIC8v5LqM57u056CB6aKc6ImyIOWPr+mAiSDpu5jorqTpu5FcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTGlnaHQ6IFwiI2ZmZmZmZlwiLC8v6IOM5pmv6ImyIOWPr+mAiSDpu5jorqTnmb1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ29zcmM6IFwiaHR0cHM6Ly9nMS5kZmNmdy5jb20vZzQvMjAyMDAzLzIwMjAwMzE4MTQwNDM2LmdpZlwiLC8vIOS6jOe7tOeggWxvZ2/kv6Hmga8g5Y+v6YCJW+S4jeW7uuiuruWKoOatpOWPguaVsF0g6buY6K6k5pyJbG9nbyDlgLzkuLpcIm5vbmVcIuaXtuaXoGxvZ29cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IF9fV0FQVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWQ6IFwid2FwcXJjb2RlMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1zaGFyZUZ1bi5xcmNvZGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCwvLyDkuoznu7TnoIHlrr3luqYg5Y+v6YCJIOm7mOiupDEzNVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JEYXJrOiBcIiMwMDAwMDBcIiwgLy/kuoznu7TnoIHpopzoibIg5Y+v6YCJIOm7mOiupOm7kVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMaWdodDogXCIjZmZmZmZmXCIsLy/og4zmma/oibIg5Y+v6YCJIOm7mOiupOeZvVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nb3NyYzogXCJodHRwczovL2cxLmRmY2Z3LmNvbS9nNC8yMDIwMDMvMjAyMDAzMTgxNDA0MzYuZ2lmXCIsLy8g5LqM57u056CBbG9nb+S/oeaBryDlj6/pgIlb5LiN5bu66K6u5Yqg5q2k5Y+C5pWwXSDpu5jorqTmnIlsb2dvIOWAvOS4ulwibm9uZVwi5pe25pegbG9nb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluazogX19XQVBVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZDogXCJ3YXBxcmNvZGUzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZihqc29uLmRhdGEuQXJ0X1VuaXF1ZVVybCAmJiBqc29uLmRhdGEuQXJ0X1VuaXF1ZVVybCAhPSBcIlwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9zdGFydFlNID0ganNvbi5kYXRhLkFydF9VbmlxdWVVcmwuaW5kZXhPZihcIjovL1wiKSArIDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZW5kWU0gPSBqc29uLmRhdGEuQXJ0X1VuaXF1ZVVybC5pbmRleE9mKFwiLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX1lNID0ganNvbi5kYXRhLkFydF9VbmlxdWVVcmwuc3Vic3RyaW5nKF9zdGFydFlNICwgX2VuZFlNKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRZTSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGluaXROZXdzSU1HKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdExhbmdLZVZpZGVvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5pdHl2b3RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgenh6d09iai5pbml0KCk7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gXCJodHRwczovL2ZpbmFuY2UuZWFzdG1vbmV5LmNvbS80MDQuaHRtbFwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1lbHNle1xyXG4gICAgICAgIGluaXRZTSgpO1xyXG4gICAgICAgIGluaXROZXdzSU1HKCk7XHJcbiAgICAgICAgaW5pdExhbmdLZVZpZGVvKCk7XHJcbiAgICAgICAgdW5pdHl2b3RlKCk7XHJcbiAgICAgICAgenh6d09iai5pbml0KCk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuLy/luKZB6IKh6KGM5oOF5Zu+77yaMjAyMjExMTAyNTU2ODU2NzQ5XHJcbi8v5bim5oyH5pWw6KGM5oOF5Zu+77yaMjAyMzAxMzAyNjIxMTc2Njg2XHJcbi8v5bim5oqV56Wo77yaMjAyMjEyMTYyNTkwMzY3NzM0XHJcbi8v5bim6KeG6aKR77yaMjAyMzAxMzAyNjIxNDExOTgwXHJcbi8v5bim6KeG6aKR77yaMjAyMjAxMTIyMjQ0NTQzOTU1XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy91bml0eW5ld3MuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMSIsInZhciB2aWRlb2lkID0gXCJcIjtcclxudmFyIGFwcGFyciA9IG5ldyBBcnJheSgpO1xyXG52YXIgX3VpZCA9IGdldHVpZChcInVpZGFsXCIpO1xyXG5mdW5jdGlvbiBnZXR1aWQodCkgeyB2YXIgZSA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKFwiKF58IClcIiArIHQgKyBcIj0oW147XSopKDt8JClcIikpOyByZXR1cm4gbnVsbCAhPSBlID8gZGVjb2RlVVJJQ29tcG9uZW50KGVbMl0pIDogbnVsbCB9XHJcbmlmIChfdWlkICYmIF91aWQubGVuZ3RoID49IDE2KSB7XHJcbiAgICBfdWlkID0gX3VpZC5zdWJzdHJpbmcoMCwgMTYpO1xyXG59IGVsc2Uge1xyXG4gICAgX3VpZCA9IFwiXCI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRWaWRlbyhfdmlkZW9JZCwgX3ZpZGVvV2lkdGgsIF92aWRlb0hlaWdodCwgX3ZpZGVvVHlwZSwgX3ZpZGVvVmFsdWUsIF92aWRlb0lzUG9zdGVyLCBfdmlkZW9Qb3N0ZXIpIHtcclxuICAgIHZhciBfaXNJRSA9IGZhbHNlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBpZihuYXZpZ2F0b3IuYXBwTmFtZSA9PSBcIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlclwiIHx8IChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQnKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcInJ2OjExLjBcIikgPiAtMSkpe1xyXG4gICAgICAgICAgICBfaXNJRSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGlmKF9pc0lFKXtcclxuICAgICAgICBqUXVlcnkoXCIubWlkZGxldmlkZW9iZ1wiKS5oaWRlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgICBpZihfX1ZpZGVvQWR2U3dpdGNoID09PSBcIjFcIil7XHJcbiAgICAgICAgICAgIHZhciBhcGlWaWRlb0FkZHJlc3MgPSBcImh0dHBzOi8vaDUubHZiLmVhc3Rtb25leS5jb20vbHZiY29vcGVyYXRpb24vYXBpL2NoYW5uZWwvR2V0Q2hhbm5lbERldGFpbD9yZXF0eXBlPXNlcnZlclwiO1xyXG4gICAgICAgICAgICBpZiAoX3ZpZGVvVHlwZSA9PSAxKSB7IC8vMSPmiL/pl7Tlj7dcclxuICAgICAgICAgICAgICAgIHVybCA9IGFwaVZpZGVvQWRkcmVzcyArICcmY2hhbm5lbF9pZD0nICsgX3ZpZGVvVmFsdWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAyKSB7IC8vMiPmtarlrqLlj7dcclxuICAgICAgICAgICAgICAgIGFwaVZpZGVvQWRkcmVzcyA9IFwiaHR0cHM6Ly9zbnMubHZiLmVhc3Rtb25leS5jb20vbHZiY29vcGVyYXRpb24vYXBpL2NoYW5uZWwvR2V0VXNlckNoYW5uZWw/cmVxdHlwZT1zZXJ2ZXJcIjtcclxuICAgICAgICAgICAgICAgIHVybCA9IGFwaVZpZGVvQWRkcmVzcyArICcmdXNlcl9pZD0nICsgX3ZpZGVvVmFsdWU7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdXJsID0gYXBpVmlkZW9BZGRyZXNzICsgJyZjaGFubmVsX2lkPScgKyBfdmlkZW9WYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNcIitfdmlkZW9JZCkuc2hvdygpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc3R1cmwgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX2JsID0gJ2JsX21vcmVuJztcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQgJiYgcmVzdWx0LmRhdGEgJiYgcmVzdWx0LmRhdGEucm9vbV9jb3Zlcl9yZXNvdXJjZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdC5kYXRhLnJvb21fY292ZXJfcmVzb3VyY2UuaF9jb3ZlciAmJiByZXN1bHQuZGF0YS5yb29tX2NvdmVyX3Jlc291cmNlLmhfY292ZXIgIT0gXCJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0dXJsID0gcmVzdWx0LmRhdGEucm9vbV9jb3Zlcl9yZXNvdXJjZS5oX2NvdmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2JsID0gJ2JsXzE2XzknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZihyZXN1bHQuZGF0YS5yb29tX2NvdmVyX3Jlc291cmNlLmNvdmVyICYmIHJlc3VsdC5kYXRhLnJvb21fY292ZXJfcmVzb3VyY2UuY292ZXIgIT0gXCJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0dXJsID0gcmVzdWx0LmRhdGEucm9vbV9jb3Zlcl9yZXNvdXJjZS5jb3ZlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ibCA9ICdibF80XzMnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZihyZXN1bHQuZGF0YS5yb29tX2NvdmVyX3Jlc291cmNlLnZfY292ZXIgJiYgcmVzdWx0LmRhdGEucm9vbV9jb3Zlcl9yZXNvdXJjZS52X2NvdmVyICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHVybCA9IHJlc3VsdC5kYXRhLnJvb21fY292ZXJfcmVzb3VyY2Uudl9jb3ZlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ibCA9ICdibF8zXzQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3R1cmwgPSByZXN1bHQuZGF0YS55dW5fcmVjb3JkX2ltZ191cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAocmVzdWx0ICYmIHJlc3VsdC5kYXRhICYmIHJlc3VsdC5kYXRhLnl1bl9yZWNvcmRfaW1nX3VybCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0dXJsID0gcmVzdWx0LmRhdGEueXVuX3JlY29yZF9pbWdfdXJsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAkKFwiI1wiK192aWRlb0lkKS5hZGRDbGFzcyhfYmwpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfaXNMb2FkVmlkZW8gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihwb3N0dXJsICE9IG51bGwgJiYgcG9zdHVybCAhPSBcIlwiICYmIHJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0LmRhdGEucm9vbV90eXBlID09IDEwMiB8fCByZXN1bHQuZGF0YS5yb29tX3R5cGUgPT0gMSB8fCByZXN1bHQuZGF0YS5yb29tX3R5cGUgPT0gMiB8fCByZXN1bHQuZGF0YS5yb29tX3R5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnPGRpdiBsYW5nPVwiemgtY25cIiBwcmVsb2FkPVwiYXV0b1wiIGNsYXNzPVwiZW1hdiB2aWRlb0FkdlN3aXRjaCAnK19ibCsnIGVtYXYtYmlnLXBsYXktY2VudGVyZWRcIiBzdHlsZT1cIndpZHRoOjEwMCU7JysoX2lzSUUgPyBcIm1pbi1oZWlnaHQ6Mzc3cHg7XCI6XCJcIikrJ1wiIGRhdGEtcm9vbWlkPVwiJytfdmlkZW9WYWx1ZSsnXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwiZW1hdi1wb3N0ZXJcIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgmcXVvdDsnK3Bvc3R1cmwrJyZxdW90Oyk7JysoX2JsID09ICdibF8xNl85Jz9cIlwiOlwiYmFja2dyb3VuZC1zaXplOiBjb250YWluICFpbXBvcnRhbnQ7XCIpKydcIj48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxidXR0b24gY2xhc3M9XCJlbWF2LWJpZy1wbGF5LWJ1dHRvblwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPHNwYW4gY2xhc3M9XCJlbWF2LWljb24tcGxhY2Vob2xkZXJcIj48L3NwYW4+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICc8L2J1dHRvbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI1wiK192aWRlb0lkKS5yZXBsYWNlV2l0aChfaHRtbCk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIixcIi52aWRlb0FkdlN3aXRjaFwiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IFwiaHR0cHM6Ly9yb2Fkc2hvdy5sdmIuZWFzdG1vbmV5LmNvbS9MVkIvTmF2L1Jvb20vZW0vXCIrJCh0aGlzKS5hdHRyKFwiZGF0YS1yb29taWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzTG9hZFZpZGVvID0gdHJ1ZTsvL+aOqOW5v+eul+WKoOi9vVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIV9pc0xvYWRWaWRlbyl7Ly/mjqjlub/kuobkuI3og73mjqjlub/nmoTnsbvlnovvvIzkuLvopoHmmK9yb29tX3R5cGU9MFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9pdGVtID0gZW1hdihfdmlkZW9JZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF92aWRlb1dpZHRoLC8v5pKt5pS+5Zmo5Yy65Z+f5a695bqm77yM5Y2V5L2N5YOP57Sg77yM5oyJ6ZyA6K6+572u77yM5Y+v6YCa6L+HIENTUyDmjqfliLbmkq3mlL7lmajlsLrlr7jjgIJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogX3ZpZGVvSGVpZ2h0LC8v5pKt5pS+5Zmo5Yy65Z+f6auY5bqm77yM5Y2V5L2N5YOP57Sg77yM5oyJ6ZyA6K6+572u77yM5Y+v6YCa6L+HIENTUyDmjqfliLbmkq3mlL7lmajlsLrlr7jjgIJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzOiB0cnVlLC8v5piv5ZCm5pi+56S65pKt5pS+5Zmo55qE5o6n5Yi25qCP77yM6buY6K6kdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGVyOiBfdmlkZW9Qb3N0ZXIsLy/orr7nva7lsIHpnaLlm77niYflrozmlbTlnLDlnYBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RlckltYWdlOiBfdmlkZW9Jc1Bvc3RlciwvL+aYr+WQpuaYvuekuuWwgemdolxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1NlbGVjdFBvc3Rlcjp0cnVlLC8v6Ieq5Yqo6YCJ5oup5bCB6Z2iXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsLy/mmK/lkKboh6rliqjmkq3mlL7vvIzpu5jorqRmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsLy/mmK/lkKblvqrnjq/mkq3mlL7vvIzpu5jorqRmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0ZWQ6IGZhbHNlLC8v5piv5ZCm6Z2Z6Z+z5pKt5pS+77yM6buY6K6kZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWxvYWQ6IFwiYXV0b1wiLC8v5piv5ZCm6ZyA6KaB6aKE5Yqg6L2977yM5pyJIDMg5Liq5bGe5oCnXCJhdXRvXCLvvIxcIm1ldGFcIu+8jFwibm9uZVwiIO+8jOenu+WKqOerr+eUseS6juezu+e7n+mZkOWItu+8jOiuvue9riBhdXRvIOaXoOaViOOAgum7mOiupGF1dG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xCYXI6IHsvL+iuvue9ruaOp+WItuagj+WxnuaAp+eahOWPguaVsOe7hOWQiFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicGxheVRvZ2dsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZvbHVtZVBhbmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlUb2dnbGU6IHRydWUsLy/mmK/lkKbmmL7npLrmkq3mlL7jgIHmmoLlgZzliIfmjaLmjInpkq5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2x1bWVQYW5lbDogdHJ1ZSwvL+aYr+WQpuaYvuekuumfs+mHj+aOp+WItlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ1RpbWVEaXNwbGF5OiBmYWxzZSwvL+aYr+WQpuaYvuekuuinhumikeWJqeS9meaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lRGlzcGxheTogdHJ1ZSwvL+aYr+WQpuaYvuekuuinhumikeW9k+WJjeaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVEaXZpZGVyOiB0cnVlLC8v5piv5ZCm5pi+56S65pe26Ze05YiG5Ymy56ym77yIL++8iVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uRGlzcGxheTogdHJ1ZSwvL+aYr+WQpuaYvuekuuinhumikeaXtumVv1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzQ29udHJvbDogdHJ1ZSwvL+aYr+WQpuaYvuekuuaSreaUvui/m+W6puadoVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXliYWNrUmF0ZU1lbnVCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlblRvZ2dsZTogdHJ1ZS8v5piv5ZCm5pi+56S65YWo5bGP5oyJ6ZKuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvbnRleHRNZW51OiBmYWxzZSwvL+aYr+WQpuaYvuekuuWPs+mUruiPnOWNle+8jOm7mOiupGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93QmlnUGxheUJ1dHRvbk9uUGF1c2VkOiB0cnVlLC8v5pqC5YGc5pe25piv5ZCm5pi+56S65pKt5pS+5oyJ6ZKu77yM6buY6K6kZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZ1BsYXlCdXR0b246IHRydWUsLy/mmK/lkKbmmL7npLrlsYXkuK3nmoTmkq3mlL7mjInpkq5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRpbWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0aW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVSURcIjogX3VpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnVcIjogMiwvL+mDqOmXqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwbGF0XCI6IDMsLy/lubPlj7DvvJpXRUIgMyB3YXAgNFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiaXpcIjogXCJuZXdzXCIvL+S4muWKoee6v+WQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8sZW52OiBcInRlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9pdGVtLmlkX18gPSBfdmlkZW9JZDtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfdmlkZW9UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiMlwiOiB2aWRlb2l0ZW0uc3JjKFwiI1wiICsgX3ZpZGVvVmFsdWUpOyBicmVhazsvL+ebtOaSrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogdmlkZW9pdGVtLnNyYyhfdmlkZW9WYWx1ZSk7IGJyZWFrOy8v5b2V5pKt5oiW5YW25LuW6KeG6aKRXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9pdGVtLm9uKCdwbGF5JywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb2lkID0gdmlkZW9pdGVtLmlkX187XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChhcHBhcnIsIGZ1bmN0aW9uIChpLCB2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYuaWRfXyAhPSB2aWRlb2l0ZW0uaWRfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LnBhdXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIuZW1hdlwiKS5jc3MoeyBcInBvc2l0aW9uXCI6IFwiXCIsIFwicmlnaHRcIjogMCwgXCJib3R0b21cIjogMCwgXCJ3aWR0aFwiOiBcIlwiLCBcImhlaWdodFwiOiBcIlwiLCBcInotaW5kZXhcIjogMjAwMDEgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb1NtYWxsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3ZpZGVvaXRlbS5vbigncGF1c2UnLCBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgdmlkZW9pZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGFyci5wdXNoKHZpZGVvaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB2YXIgdmlkZW9pdGVtID0gZW1hdihfdmlkZW9JZCwge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IF92aWRlb1dpZHRoLC8v5pKt5pS+5Zmo5Yy65Z+f5a695bqm77yM5Y2V5L2N5YOP57Sg77yM5oyJ6ZyA6K6+572u77yM5Y+v6YCa6L+HIENTUyDmjqfliLbmkq3mlL7lmajlsLrlr7jjgIJcclxuICAgICAgICAgICAgICAgIGhlaWdodDogX3ZpZGVvSGVpZ2h0LC8v5pKt5pS+5Zmo5Yy65Z+f6auY5bqm77yM5Y2V5L2N5YOP57Sg77yM5oyJ6ZyA6K6+572u77yM5Y+v6YCa6L+HIENTUyDmjqfliLbmkq3mlL7lmajlsLrlr7jjgIJcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xzOiB0cnVlLC8v5piv5ZCm5pi+56S65pKt5pS+5Zmo55qE5o6n5Yi25qCP77yM6buY6K6kdHJ1ZVxyXG4gICAgICAgICAgICAgICAgcG9zdGVyOiBfdmlkZW9Qb3N0ZXIsLy/orr7nva7lsIHpnaLlm77niYflrozmlbTlnLDlnYBcclxuICAgICAgICAgICAgICAgIHBvc3RlckltYWdlOiBfdmlkZW9Jc1Bvc3RlciwvL+aYr+WQpuaYvuekuuWwgemdolxyXG4gICAgICAgICAgICAgICAgYXV0b1NlbGVjdFBvc3Rlcjp0cnVlLC8v6Ieq5Yqo6YCJ5oup5bCB6Z2iXHJcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsLy/mmK/lkKboh6rliqjmkq3mlL7vvIzpu5jorqRmYWxzZVxyXG4gICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsLy/mmK/lkKblvqrnjq/mkq3mlL7vvIzpu5jorqRmYWxzZVxyXG4gICAgICAgICAgICAgICAgbXV0ZWQ6IGZhbHNlLC8v5piv5ZCm6Z2Z6Z+z5pKt5pS+77yM6buY6K6kZmFsc2VcclxuICAgICAgICAgICAgICAgIHByZWxvYWQ6IFwiYXV0b1wiLC8v5piv5ZCm6ZyA6KaB6aKE5Yqg6L2977yM5pyJIDMg5Liq5bGe5oCnXCJhdXRvXCLvvIxcIm1ldGFcIu+8jFwibm9uZVwiIO+8jOenu+WKqOerr+eUseS6juezu+e7n+mZkOWItu+8jOiuvue9riBhdXRvIOaXoOaViOOAgum7mOiupGF1dG9cclxuICAgICAgICAgICAgICAgIGNvbnRyb2xCYXI6IHsvL+iuvue9ruaOp+WItuagj+WxnuaAp+eahOWPguaVsOe7hOWQiFxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicGxheVRvZ2dsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZvbHVtZVBhbmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYXlUb2dnbGU6IHRydWUsLy/mmK/lkKbmmL7npLrmkq3mlL7jgIHmmoLlgZzliIfmjaLmjInpkq5cclxuICAgICAgICAgICAgICAgICAgICB2b2x1bWVQYW5lbDogdHJ1ZSwvL+aYr+WQpuaYvuekuumfs+mHj+aOp+WItlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ1RpbWVEaXNwbGF5OiBmYWxzZSwvL+aYr+WQpuaYvuekuuinhumikeWJqeS9meaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lRGlzcGxheTogdHJ1ZSwvL+aYr+WQpuaYvuekuuinhumikeW9k+WJjeaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVEaXZpZGVyOiB0cnVlLC8v5piv5ZCm5pi+56S65pe26Ze05YiG5Ymy56ym77yIL++8iVxyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uRGlzcGxheTogdHJ1ZSwvL+aYr+WQpuaYvuekuuinhumikeaXtumVv1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzQ29udHJvbDogdHJ1ZSwvL+aYr+WQpuaYvuekuuaSreaUvui/m+W6puadoVxyXG4gICAgICAgICAgICAgICAgICAgIHBsYXliYWNrUmF0ZU1lbnVCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlblRvZ2dsZTogdHJ1ZS8v5piv5ZCm5pi+56S65YWo5bGP5oyJ6ZKuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRleHRNZW51OiBmYWxzZSwvL+aYr+WQpuaYvuekuuWPs+mUruiPnOWNle+8jOm7mOiupGZhbHNlXHJcbiAgICAgICAgICAgICAgICBzaG93QmlnUGxheUJ1dHRvbk9uUGF1c2VkOiB0cnVlLC8v5pqC5YGc5pe25piv5ZCm5pi+56S65pKt5pS+5oyJ6ZKu77yM6buY6K6kZmFsc2VcclxuICAgICAgICAgICAgICAgIGJpZ1BsYXlCdXR0b246IHRydWUsLy/mmK/lkKbmmL7npLrlsYXkuK3nmoTmkq3mlL7mjInpkq5cclxuICAgICAgICAgICAgICAgIHN0YXRpc3RpYzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRpbWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgYmQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0aW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVSURcIjogX3VpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnVcIjogMiwvL+mDqOmXqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwbGF0XCI6IDMsLy/lubPlj7DvvJpXRUIgMyB3YXAgNFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiaXpcIjogXCJuZXdzXCIvL+S4muWKoee6v+WQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8sZW52OiBcInRlc3RcIlxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdmlkZW9pdGVtLmlkX18gPSBfdmlkZW9JZDtcclxuICAgICAgICBcclxuICAgICAgICAgICAgc3dpdGNoIChfdmlkZW9UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiMlwiOiB2aWRlb2l0ZW0uc3JjKFwiI1wiICsgX3ZpZGVvVmFsdWUpOyBicmVhazsvL+ebtOaSrVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdmlkZW9pdGVtLnNyYyhfdmlkZW9WYWx1ZSk7IGJyZWFrOy8v5b2V5pKt5oiW5YW25LuW6KeG6aKRXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgdmlkZW9pdGVtLm9uKCdwbGF5JywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2aWRlb2lkID0gdmlkZW9pdGVtLmlkX187XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChhcHBhcnIsIGZ1bmN0aW9uIChpLCB2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYuaWRfXyAhPSB2aWRlb2l0ZW0uaWRfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2LnBhdXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoXCIuZW1hdlwiKS5jc3MoeyBcInBvc2l0aW9uXCI6IFwiXCIsIFwicmlnaHRcIjogMCwgXCJib3R0b21cIjogMCwgXCJ3aWR0aFwiOiBcIlwiLCBcImhlaWdodFwiOiBcIlwiLCBcInotaW5kZXhcIjogMjAwMDEgfSk7XHJcbiAgICAgICAgICAgICAgICBWaWRlb1NtYWxsKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAvL3ZpZGVvaXRlbS5vbigncGF1c2UnLCBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgLy8gICAgdmlkZW9pZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIGFwcGFyci5wdXNoKHZpZGVvaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBBZGRDbG9zZShfaWQpIHtcclxuICAgIFJlbW92ZUNsb3NlKF9pZCk7XHJcbiAgICBqUXVlcnkoXCIjXCIgKyBfaWQpLmFwcGVuZCgnPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiY2xvc2V2aWRlbyBjbG9zZXZpZGVvJyArIF9pZCArICdcIiBkYXRhLWlkPVwiJyArIF9pZCArICdcIiB0YXJnZXQ9XCJfc2VsZlwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO3JpZ2h0OiAxMnB4O3RvcDogMTJweDt3aWR0aDogMTJweDtoZWlnaHQ6IDEycHg7ei1pbmRleDoyMDAwMjtjdXJzb3I6IHBvaW50ZXI7Y29sb3I6ICNmZmY7YmFja2dyb3VuZDogdXJsKC8vZzEuZGZjZncuY29tL2czLzIwMTkwNC8yMDE5MDQwMzEwMDk1Mi5wbmcpO1wiIHRpdGxlPVwi5YWz6ZetXCI+PC9hPicpO1xyXG59XHJcbmZ1bmN0aW9uIFJlbW92ZUNsb3NlKF9pZCkge1xyXG4gICAgalF1ZXJ5KFwiLmNsb3NldmlkZW9cIiArIF9pZCkucmVtb3ZlKCk7XHJcbn1cclxuXHJcbmpRdWVyeShcIiNDb250ZW50Qm9keVwiKS5vbihcImNsaWNrXCIsIFwiLmNsb3NldmlkZW9cIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIF90aGlzID0galF1ZXJ5KHRoaXMpO1xyXG4gICAgdmFyIF9kYXRhaWQgPSBfdGhpcy5kYXRhKFwiaWRcIik7XHJcbiAgICBqUXVlcnkoXCIjXCIgKyBfZGF0YWlkKS5jc3MoeyBcInBvc2l0aW9uXCI6IFwiXCIsIFwicmlnaHRcIjogMCwgXCJib3R0b21cIjogMCwgXCJ3aWR0aFwiOiBcIlwiLCBcImhlaWdodFwiOiBcIlwiLCBcInotaW5kZXhcIjogMjAwMDEgfSk7XHJcbiAgICBqUXVlcnkoXCIjXCIgKyBfZGF0YWlkICsgXCIgLmVtYXYtZnVsbHNjcmVlbi1jb250cm9sXCIpLmNzcyh7IFwiZGlzcGxheVwiOiBcImlubGluZS1ibG9ja1wiIH0pOy8v5YWz6Zet77yM5YiH5o2i5Yiw5aSn56qX5Y+j5pS+5Ye65p2l5YWo5bGPXHJcbiAgICBSZW1vdmVDbG9zZShfZGF0YWlkKTtcclxuXHJcbiAgICBqUXVlcnkuZWFjaChhcHBhcnIsIGZ1bmN0aW9uIChpLCB2KSB7XHJcbiAgICAgICAgaWYgKHYuaWRfXyA9PSBfZGF0YWlkKSB7XHJcbiAgICAgICAgICAgIHZpZGVvaWQgPSBcIlwiO1xyXG4gICAgICAgICAgICB2LnBhdXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gVmlkZW9TbWFsbCgpIHtcclxuICAgIGlmIChuYXZpZ2F0b3IuYXBwTmFtZSA9PSBcIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlclwiICYmIHBhcnNlSW50KG5hdmlnYXRvci5hcHBWZXJzaW9uLnNwbGl0KFwiO1wiKVsxXS5yZXBsYWNlKC9bIF0vZywgXCJcIikucmVwbGFjZShcIk1TSUVcIiwgXCJcIikpIDw9IDkpIHtcclxuICAgICAgICAvL+Wwj+S6juetieS6jklFOe+8jOS4jeaYvuekuuWPs+S4i+inkueUu+S4reeUu1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgX3Njcm9sbHRvcCA9IGpRdWVyeSh3aW5kb3cpLnNjcm9sbFRvcCgpO1xyXG4gICAgICAgIHZhciBfd2luSGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDs7XHJcbiAgICAgICAgalF1ZXJ5KFwiLm1pZGRsZXZpZGVvYmdcIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IGpRdWVyeSh0aGlzKTtcclxuICAgICAgICAgICAgdmFyIF9kYXRhaWQgPSBfdGhpcy5kYXRhKFwiaWRcIik7XHJcbiAgICAgICAgICAgIGlmICh2aWRlb2lkID09IF9kYXRhaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfc2Nyb2xsdG9wID4gX3RoaXMub2Zmc2V0KCkudG9wICsgX3RoaXMuaGVpZ2h0KCkgfHwgX3Njcm9sbHRvcCArIF93aW5IZWlnaHQgPCBfdGhpcy5vZmZzZXQoKS50b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjXCIgKyBfZGF0YWlkKS5jc3MoeyBcInBvc2l0aW9uXCI6IFwiZml4ZWRcIiwgXCJyaWdodFwiOiAwLCBcImJvdHRvbVwiOiAwLCBcIndpZHRoXCI6IFwiMzAwcHhcIiwgXCJoZWlnaHRcIjogXCIxNzBweFwiLCBcInotaW5kZXhcIjogMjAwMDEgfSk7Ly/lsI/nqpflj6NcclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjXCIgKyBfZGF0YWlkICsgXCIgLmVtYXYtZnVsbHNjcmVlbi1jb250cm9sXCIpLmNzcyh7IFwiZGlzcGxheVwiOiBcIm5vbmVcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICBBZGRDbG9zZShfZGF0YWlkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI1wiICsgX2RhdGFpZCkuY3NzKHsgXCJwb3NpdGlvblwiOiBcIlwiLCBcInJpZ2h0XCI6IDAsIFwiYm90dG9tXCI6IDAsIFwid2lkdGhcIjogXCJcIiwgXCJoZWlnaHRcIjogXCJcIiwgXCJ6LWluZGV4XCI6IDIwMDAxIH0pOy8v5aSn56qX5Y+jXHJcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI1wiICsgX2RhdGFpZCArIFwiIC5lbWF2LWZ1bGxzY3JlZW4tY29udHJvbFwiKS5jc3MoeyBcImRpc3BsYXlcIjogXCJpbmxpbmUtYmxvY2tcIiB9KTsvL+Wkp+eql+WPo+aUvuWHuuadpeWFqOWxj1xyXG4gICAgICAgICAgICAgICAgICAgIFJlbW92ZUNsb3NlKF9kYXRhaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgUmVtb3ZlQ2xvc2UoX2RhdGFpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdExhbmdLZVZpZGVvKCkge1xyXG4gICAgalF1ZXJ5KFwiLmVtX2xrX3ZpZGVvXCIpLmVhY2goZnVuY3Rpb24gKF9pbmRleCkge1xyXG4gICAgICAgIHZhciBfb2xkID0galF1ZXJ5KHRoaXMpO1xyXG4gICAgICAgIHZhciBsa19kZXMgPSBfb2xkLmF0dHIoJ2xrX2RlcycpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgbGtfZGVzICE9PSB0eXBlb2YgdW5kZWZpbmVkICYmIGxrX2RlcyAhPT0gZmFsc2UgJiYgbGtfZGVzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgbGtfZGVzID0gdW5lc2NhcGUobGtfZGVzKTtcclxuICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLmFmdGVyKCc8cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtmb250LXNpemU6IDEycHg7Y29sb3I6ICM2NjY7cG9zaXRpb246IHJlbGF0aXZlO3RvcDogLTEwcHg7XCI+JyArIGxrX2RlcyArICc8L3A+Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGpRdWVyeSh0aGlzKS5yZXBsYWNlV2l0aCgnPGRpdiBjbGFzcz1cIm1pZGRsZXZpZGVvYmdcIiBkYXRhLWlkPVwiYXYtcGxheWVyLWN0eCcgKyBfaW5kZXggKyAnXCIgZGF0YS12YWx1ZT1cIicgKyBfb2xkLmF0dHIoXCJsa19kYXRhXCIpICsgJ1wiPjx2aWRlbyBpZD1cImF2LXBsYXllci1jdHgnICsgX2luZGV4ICsgJ1wiIGNsYXNzPVwiZW1hdlwiIHByZWxvYWQ9XCJhdXRvXCI+PC92aWRlbz48L2Rpdj4nKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGpRdWVyeShcIi5taWRkbGV2aWRlb2JnXCIpLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IGpRdWVyeSh0aGlzKTtcclxuICAgICAgICB2YXIgX2RhdGFpZCA9IF90aGlzLmRhdGEoXCJpZFwiKTtcclxuICAgICAgICB2YXIgX2RhdGF2YWx1ZSA9IF90aGlzLmRhdGEoXCJ2YWx1ZVwiKTtcclxuICAgICAgICBpZiAodHlwZW9mIF9kYXRhdmFsdWUgIT09IHR5cGVvZiB1bmRlZmluZWQgJiYgX2RhdGF2YWx1ZSAhPT0gZmFsc2UgJiYgX2RhdGF2YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHZhciBfZGF0YXZpZGVvaXRlbSA9IF9kYXRhdmFsdWUuc3BsaXQoJyMnKTtcclxuICAgICAgICAgICAgaWYgKF9kYXRhdmlkZW9pdGVtLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBpbml0VmlkZW8oX2RhdGFpZCwgNjcwLCA0MjUsIF9kYXRhdmlkZW9pdGVtWzBdLCBfZGF0YXZpZGVvaXRlbVsxXSwgZmFsc2UsIFwiXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5pdFZpZGVvKF9kYXRhaWQsIDY3MCwgNDI1LCA5OSwgX2RhdGF2aWRlb2l0ZW1bMF0sIGZhbHNlLCBcIlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGpRdWVyeSh3aW5kb3cpLnNjcm9sbChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgVmlkZW9TbWFsbCgpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gaW5pdExhbmdLZVZpZGVvO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vanMvbW9kdWxlcy9sYW5na2UvdW5pdGluZXdzMi5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDEiXSwic291cmNlUm9vdCI6IiJ9"],"names":["modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","0","hexcase","chrsz","hex_md5","binl2hex","core_md5","str2binl","length","x","len","a","b","olda","oldb","oldc","oldd","md5_ff","md5_gg","md5_hh","md5_ii","safe_add","Array","md5_cmn","q","t","num","cnt","y","lsw","str","bin","mask","charCodeAt","binarray","hex_tab","charAt","1","gshVoteNum","numb","parseFloat","toFixed","VoteZhanBiWidth","zhanBi","maxWidth","getVoteCookie","key","cookieArray","document","cookie","split","arr","replace","unescape","initResultHTML","json","_vote_title","vote_item","_html","sumVote","curVote","_isvote","Result","Votes","_item","Vm_Title","_voteSum","j","Elements","_cookieValue","__item","Vi_Id","Vi_Vm_Id","Vi_Vg_Id","indexOf","Vi_Count","_Vi_Count","_voteBiLi","Vi_Title","Vg_Id","Vg_Enable","initVote","item","$","each","_this","this","_vote_id","attr","ajax","url","type","dataType","data","success","html","Success","Vg_Title","radioOrCheckbox","Vm_Type","_Vm_MaxCheck","Vm_MaxCheck","initHTML","show","_isLockVote","jQuery","on","_chooseIds","_timu","vivmid","push","_viid","_vivmid","_vivgid","_xb","splice","trim","alert","addClass","expires","date","Date","ms","setTime","getTime","escape","toUTCString","location","host","setVoteCookie","parents","_vname","_maxcheck","window","external","OnClickEvent","open","16","updateEmImageRemark","parent","css","font-size","line-height","children","emRemark","remove","error","getElementById","$C","createElement","Class","AsPrototype","create","initialize","apply","arguments","newsimg","chartId","getElementsByClassName","obj","classElements","allElements","getElementsByTagName","className","getMarket","code","Market","substring","Type","Code","gshNum","dNum","dw","gshZd","XiangGuanGuPiao","secid","imgParent","chartFooterDiv","jdata","rc","footerInnerRow","_i","total","_name","_price","_zdf","_zde","diff","_code","f12","_market","f13","f14","f2","f3","f4","zdColor","innerHTML","appendChild","XiangGuanBanKuai","htmlBK","htmlBKContent","h","_bkCode","_bkName","_bkZdf","_bkZde","ZhiShuLingZhangHangYe","bkzdColor","_szjs","f104","_xdjs","f105","f140","f141","f128","f136","NewsImg","tipsImageRemark","price","f43","cjl","f47","cje","f48","stockCode","f57","stockName","f58","stockMarket","f107","hsl","f168","zde","f169","zdf","f170","syl","f162","zsz","f116","parentNode","chartLeftDiv","__Market","childNodes","src","id","insertBefore","chartRightDiv","setAttribute","append","chartNavDiv","_NewsId","href","BodyNextNode","nextSibling","nodeType","undefined","imgnodes","_datacode2","_datacode2Item","_KR","getAttribute","toLowerCase","initImg","width","height","bkTipAreas","ioOverall","Top","tempData","_color","lz","lzg","showStr","style","display","_stockcode","_stockmarket","charset","dataVar","callback","nodeObj","script","_0j","all","readyState","eval","removeChild","ensit","dsq_updateEmImageRemark","setInterval","setTimeout","clearInterval","18","e","3","_option","extend","selectId","aline","range","$container","init","hasAppend","elementLoad","mouseup","tipsHtml","cssTxt","loadCss","$selectTips","$search","$copy","createTextNode","styleSheet","cssText","getSelectTxt","selection","createRange","text","getSelection","toString","r","click","target","hide","txt","event","pageYOffset","documentElement","scrollTop","body","pageXOffset","scrollLeft","clientX","clientY","left","top","enents","encodeURIComponent","ActiveXObject","clipboardData","setData","loadScript","Clipboard","onload","8","pdtips","22","initLangKeVideo","unityvote","initNewsIMG","config","guba","newsinfo","search","_CMSHJ","xarr","match","RegExp","decodeURIComponent","expiredays","domain","exdate","cookiestr","setDate","getDate","toGMTString","userpassport","jiav","vtype","state","jiavarr","nick","_ctoken","_utoken","_GubaApiH","_deviceid","formatZanNum","count","parseInt","temp","hotSearchScroll","senter","time","animation","seter","_self","lw","spanWidth","newHtml","right","aWidth","_content","aHtml","outerWidth","position","hover","quoteTree","HuShen","BigName","Link","Interface","HK","Interface2","Gold","Futures","Global","Option","Interface3","Forex","CurrTree","initYM","_YM","zsQuote","that","initHTMLDom","formatData","getQuoteData","_interface","_dom","method","jsonp","QuoteCB","getZJLData","ZJLCB","back","_index","zs","Math","pow","f1","percent","mc","renderDom","getZDFInfo","_class","_data","dZdf","getGSHNum","fix","intStr","abs","result","getHSGTStatus","_hsgtstatus","hk2sh","status","dayAmtRemain","amtStatus","hgtInfo","hgtLR","dayNetAmtIn","find","eq","ggthLR","sh2hk","netBuyAmt","ggthInfo","hk2sz","sgtInfo","sgtLR","ggtsLR","sz2hk","ggtsInfo","zsinfos","_icon","szzs","szprice","szpercent","szname","QuoteshowDom","random","zanObj","$dom","articleId","_apiurl","hasClass","jsonpCallback","res","prezanum","anim","$body","$lab","removeClass","pageX","pageY","color","zIndex","select","fontSize","textShadow","innerText","opacity","collectObj","zxzwObj","_b1516","__KHWZ_Top","__KHLJ_Top","_newsAdTop","floor","_HQLength","after","prepend","_newsAdBottom","__KHWZ_Bottom","__KHLJ_Bottom","_b1517","before","wrap","hasAttribute","_op_ids","_op_id","op_id","_opHTML","links","title_color","title","_initOPHTML","suggest2017","inputid","placeholder","shownewtips","onSubmit","newtipsoffset","getNewsArticleBriefInfo","loadFontSize","bindEvent","getHotNews","gudingFun","initRDTJ","initQuoteLink","re","_num","infos","post_like_count","like_state","collect_state","post_forward_count","post_comment_count","isHuoZan","post_like_style","allow_likes_state","pointer-events","repost_state","post_comment_authory","initPinLun","_tipZIndex","prop","navigator","userAgent","_isMouseOver","_thisCode","_thisitem","_id","quoteboxHtml","_thisitem2","dataQuote","market","clientWidth","dl","offsetParent","offsetLeft","dom","apiurl","params","fingerprint","sc","check","_AddOrDelZXG","_type","initZXInfo","size","siblings","stopPropagation","toggle","scrollTo","offset","_thisdom","unbind","emshareFun","qrcode","colorDark","colorLight","logosrc","link","__WAPURL","domid","onkeydown","ev","oEvent","keyCode","scrollY","clientHeight","isDefaultShowTitle","hideDown","showDown","list","Data","JumpAddress","KeyPhrase","columns","itemBig","column_data","_link","_coverLink","_coverTag","cover","column_name","cfh_art_code","hostname","slide","titCell","mainCell","effect","autoPlay","autoPage","sm","_ISComment","editorAndList","se","topNavH","env","post","__allow_likes_state","__IsBeforeLoad","Art_Fast","Art_Title","Art_Keyword","Art_Description","Art_Tags","_NewsTag","Art_IsComment","infosHTML","_date","Art_ShowTime","substr","Art_Author_Name","Art_Author_Type","Art_Author_PinYin","Art_Media_Name","Art_Media_Type","Art_Media_PinYin","contentHTML","Art_ShowVideo","Art_LKSPData","Art_Content","_startYM","_endYM","sourceboxHTML","Art_Editor_Code","Art_OriginalTitle","Art_Robot_News","emshare2020","desc","summary","imgUrl","Art_UniqueUrl","videoid","apparr","_uid","initVideo","_videoId","_videoWidth","_videoHeight","_videoType","_videoValue","_videoIsPoster","_videoPoster","apiVideoAddress","videoitem","_isIE","appName","__VideoAdvSwitch","posturl","_bl","room_cover_resource","h_cover","v_cover","yun_record_img_url","_isLoadVideo","room_type","replaceWith","emav","controls","poster","posterImage","autoSelectPoster","autoplay","loop","muted","preload","controlBar","playToggle","volumePanel","remainingTimeDisplay","currentTimeDisplay","timeDivider","durationDisplay","progressControl","playbackRateMenuButton","fullscreenToggle","showContextMenu","showBigPlayButtonOnPaused","bigPlayButton","statistic","activeTime","bd","extinfo","UID","bu","plat","biz","id__","v","pause","bottom","z-index","VideoSmall","RemoveClose","_scrolltop","_winHeight","appVersion","_dataid","_old","lk_des","_datavideoitem","_datavalue","scroll"],"mappings":"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"}