{"version":3,"sources":["agu.js"],"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","problem","options","defaultOptions","id","DATA","problem_data","isRandom","len","pType","callback","this","$","extend","undefined","length","html","$wrap","tag","_answerIndex","shuffle","a","concat","sort","b","Math","random","parseInt","title","optionLen","j","option","scores","bind","that","on","removeAttr","eq","addClass","siblings","removeClass","attr","totalScore","scoreArr","each","_score","find","data","parseFloat","push","showModel","isScore","score","targetScore","content","link","$html","append","css","position","top","left","height","width","z-index","margin-top","margin-left","remove","onClose","location","href","reload","tabsClickChange","$this","tabsList","tabsItem","index","fadeIn","hide","type","getQueryString","isNaN","children","reg","RegExp","r","decodeURI","window","search","substr","match","unescape","dateFormat","dateS","part","split","replace","date","Date","y","getFullYear","M","getMonth","getDate","H","getHours","getMinutes","getSeconds","MM","dd","HH","mm","ss","answer","tool","loadIframe","src","jQuery","slide","titCell","mainCell","effect","pnLoop","endFun","total"],"mappings":"CAAS,SAAUA,GAET,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAJ,EAAQG,GAAUK,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBO,EAAIT,EAGxBE,EAAoBQ,EAAIT,EAGxBC,EAAoBI,EAAI,SAASK,GAAS,OAAOA,GAGjDT,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CACpCK,cAAc,EACdC,YAAY,EACZC,IAAKN,KAMRZ,EAAoBmB,EAAI,SAAShB,GAChC,IAAIS,EAAST,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAgB,YAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASQ,EAAQC,GAAY,OAAOR,OAAOS,UAAUC,eAAelB,KAAKe,EAAQC,IAGzGtB,EAAoByB,EAAI,GAGjBzB,EAAoBA,EAAoB0B,EAAI,GAjEpD,CAoEC,CAEJ,SAAUvB,EAAQD,GAStB,SAASyB,EAAQC,GAEX,IAAIC,EAAiB,CACjBC,GAAG,eACHC,KAAKC,aACLC,UAAS,EACTC,IAAI,GACJC,MAAM,GACNC,SAAS,MAKb,GAFAC,KAAKT,QAAUU,EAAEC,OAAO,GAAGV,EAAeD,UAEhCS,KAAKT,QAAQG,MAAQS,YAAcH,KAAKT,QAAQG,KAAKU,OAC3D,OAAO,EAGX,IAAIC,EAAO,6BACXL,KAAKM,MAAQL,EAAE,IAAID,KAAKT,QAAQE,IAChCO,KAAKN,KAAOM,KAAKT,QAAQG,KACzBM,KAAKH,IAAMG,KAAKN,KAAKU,OAErBJ,KAAKD,SAAWC,KAAKT,QAAQQ,SAC7BC,KAAKJ,SAAWI,KAAKT,QAAQK,SAC7BI,KAAKF,MAAQE,KAAKT,QAAQO,MAC1BE,KAAKO,KAAM,EAEXP,KAAKQ,aAAe,EAEjBR,KAAKJ,WACJI,KAAKH,IAAIG,KAAKT,QAAQM,KAAOG,KAAKN,KAAKU,OACvCJ,KAAKN,KAtCjB,SAASe,EAAQC,GACb,OAAOA,EAAEC,SAASC,KAAK,SAASF,EAAGG,GACjC,OAAOC,KAAKC,SAAW,KAoCLN,CAAQT,KAAKN,OAG7B,IAAI,IAAI3B,EAAI,EAAEA,EAAEiC,KAAKH,IAAI9B,IAAI,CAGzBsC,GAAQ,oBAFc,IAANtC,EAAU,SAAW,IAEA,gDAAgDiD,SAASjD,GAAG,GAAG,QAAQiC,KAAKH,IAAI,6BAA6BG,KAAKN,KAAK3B,GAAGkD,MAAM,gBAErKZ,GAAQ,2BAER,IADA,IAAIa,EAAYlB,KAAKN,KAAK3B,GAAGwB,QAAQa,OAC7Be,EAAI,EAAEA,EAAED,EAAUC,IAAI,CAC1B,IAAIC,EAAUpB,KAAKN,KAAK3B,GAAGwB,QAC3Bc,GAAQ,gEAAgEL,KAAKN,KAAK3B,GAAGsD,OAAOF,GAAG,WAAWnB,KAAKT,QAAQE,GAAG1B,EAAE,YAAYoD,EAAE,SAASnB,KAAKT,QAAQE,GAAG1B,EAAKoD,EAAE,yDAAyDnB,KAAKT,QAAQE,GAAG1B,EAAKoD,EAAE,KAAKC,EAAOD,GAAG,gBAG7Qd,GAAQ,aAGZA,GAAO,gKAGPL,KAAKM,MAAMD,KAAKA,GAIhBL,KAAKsB,KAAKtB,KAAKD,UAGrBT,EAAQJ,UAAY,CAClBoC,KAAK,SAASvB,GACV,IAAIwB,EAAOvB,KAEXC,EAAE,gBAAiBsB,EAAKjB,OAAOkB,GAAG,SAAS,gBAAgB,WAEvDvB,EAAE,YAAasB,EAAKjB,OAAQmB,WAAW,YACvCxB,EAAE,cAAcsB,EAAKjB,OAAQmB,WAAW,cAG5CxB,EAAE,YAAasB,EAAKjB,OAAQkB,GAAG,QAAQ,YAAY,WAC/CD,EAAKf,eACLP,EAAE,mBAAmBsB,EAAKjB,OAAQoB,GAAGH,EAAKf,cAAcmB,SAAS,UAAUC,WAAWC,YAAY,UAC/FN,EAAKf,cAAe,GACnBP,EAAE,YAAasB,EAAKjB,OAAQwB,KAAK,WAAW,YAEhD7B,EAAE,YAAYsB,EAAKjB,OAAQmB,WAAW,cAG1CxB,EAAE,YAAasB,EAAKjB,OAAQkB,GAAG,QAAQ,YAAY,WAC/CD,EAAKf,eAEFe,EAAKf,aAAe,IAAMe,EAAK1B,MACZ,QAAf0B,EAAKzB,MACJG,EAAE,YAAasB,EAAKjB,OAAQD,KAAK,kEAEjCJ,EAAE,YAAasB,EAAKjB,OAAQD,KAAK,uEAIrCkB,EAAKf,aAAe,EAAIe,EAAK1B,MAGjCI,EAAE,mBAAmBsB,EAAKjB,OAAQoB,GAAGH,EAAKf,cAAcmB,SAAS,UAAUC,WAAWC,YAAY,UAC9F5B,EAAE,4CAA4CsB,EAAKjB,OAAOF,QAC1DH,EAAE,YAAYsB,EAAKjB,OAAQwB,KAAK,WAAW,YAE/C7B,EAAE,YAAasB,EAAKjB,OAAQmB,WAAW,eAI3CxB,EAAE,YAAasB,EAAKjB,OAAQkB,GAAG,QAAQ,cAAc,WACjD,IAAIO,EAAa,EACbC,EAAW,GACf/B,EAAE,sBAAsBsB,EAAKjB,OAAO2B,KAAK,WACtC,IAAIC,EAASjC,EAAED,MAAMmC,KAAK,+BAA+BC,KAAK,SAC9DF,EAASG,WAAWH,GACpBF,EAASM,KAAKJ,GACdH,GAAcG,IAKjBnC,GAAYA,EAASwB,EAAKQ,EAAWC,MAI7CO,UAAU,SAASnB,GACf,IAAIG,EAAOvB,KAGPK,EAAO,8BACXA,GAAQ,+FACPA,GAAQ,2JAGGe,EAAOoB,QAGJpB,EAAOqB,OAASrB,EAAOsB,YACtBrC,GAAM,mGAAmGe,EAAOqB,MAAM,kCAAkCrB,EAAOsB,YAAY,eAE3KrC,GAAM,oGAAoGe,EAAOqB,MAAM,kCAAkCrB,EAAOsB,YAAY,eALhLrC,GAAM,qCAAuCe,EAAOuB,QAAU,OAQpD,QAAfpB,EAAKzB,MACJO,GAAQ,sFAERA,GAAQ,uFACLe,EAAOwB,OACNvC,GAAQ,kDAGpBA,GAAQ,qBAER,IAAIwC,EAAQ5C,EAAEI,GAEdJ,EAAE,QAAQ6C,OAAOD,GAEjBA,EAAME,IAAI,CACNC,SAAY,QACZC,IAAO,IACPC,KAAO,IACPC,OAAS,OACTC,MAAS,OACTC,UAAU,SAGdpD,EAAE,qBAAsBD,KAAKK,MAAM0C,IAAI,CACnCC,SAAY,WACZC,IAAO,MACPC,KAAQ,MACRC,OAAS,QACTC,MAAS,QACTE,aAAc,SACdC,cAAc,WAGlBV,EAAMrB,GAAG,QAAS,cAAe,WAC7BqB,EAAMW,SACNpC,EAAOqC,SAAWrC,EAAOqC,YAE7BZ,EAAMrB,GAAG,QAAS,aAAc,WAC5BqB,EAAMW,SACNpC,EAAOqC,SAAWrC,EAAOqC,YAG7BZ,EAAMrB,GAAG,QAAS,aAAc,WAE5B,OADAqB,EAAMW,SACC,IAAIlE,EAAQiC,EAAKhC,WAG5BsD,EAAMrB,GAAG,QAAS,cAAe,WAC7BkC,SAASC,KAAOvC,EAAOwB,QAG/BgB,OAAO,WACH,OAAO,IAAItE,EAAQU,KAAKT,WAI9BzB,EAAOD,QAAYyB,GA6Lf,SAAUxB,EAAQD,GAExBC,EAAOD,QAAU,CACbgG,gBAAiB,WACb,IAAIC,EAAQ7D,EAAE,aACd,IAAI6D,EAAM1D,OACN,OAAO,EAEX,IAAI2D,EAAW9D,EAAE,YAAa6D,GAC1BE,EAAW/D,EAAE,YAAa6D,GAO9B,GANAC,EAASvC,GAAG,QAAS,KAAM,WACvB,IAAIyC,EAAQhE,EAAED,MAAMiE,QACpBhE,EAAED,MAAM2B,SAAS,UAAUC,WAAWC,YAAY,UAClDmC,EAAStC,GAAGuC,GAAOC,SAASvC,SAAS,UAAUC,WAAWuC,OAAOtC,YAAY,YAG9EiC,EAAM1D,OAAO,CACZ,IAAIgE,EAAOpE,KAAKqE,eAAe,QAC/B,GAAGD,IAASE,MAAMF,GAAM,CACpB,IAAIH,EAAQjD,SAASoD,GAAQ,EAC7BL,EAASQ,SAAS,MAAM7C,GAAGuC,GAAOtC,SAAS,UAAUC,WAAWC,YAAY,UAC5EmC,EAAStC,GAAGuC,GAAOtC,SAAS,UAAUC,WAAWC,YAAY,aAIzEwC,eAAgB,SAAU/F,GACtB,IAAIkG,EAAM,IAAIC,OAAO,QAAUnG,EAAO,gBAAiB,KACnDoG,EAAIC,UAAUC,OAAOlB,SAASmB,QAAQC,OAAO,GAAGC,MAAMP,GAC1D,OAAS,MAALE,EAAkBM,SAASN,EAAE,IAC1B,MAEXO,WAAY,SAAUC,EAAOC,GACzB,GAAa,KAATD,QAAgC,IAATA,EACvB,MAAO,IAEQ,GAAfA,EAAM9E,SACN8E,EAAQA,EAAME,MAAM,KAAK,GAAGC,QAAQ,KAAM,MAE9C,IAAIC,EAAO,IAAIC,KAAKL,GAGpBC,EAAgB,MAARA,EAAgB,sBAAwBA,EAChD,IAAIK,EAAIF,EAAKG,cACTC,EAAIJ,EAAKK,WAAa,EACtBtH,EAAIiH,EAAKM,UACTC,EAAIP,EAAKQ,WACT5H,EAAIoH,EAAKS,aACT1G,EAAIiG,EAAKU,aACTC,EAAU,EAAJP,EAASA,EAAI,IAAMA,EACzBQ,EAAU,EAAJ7H,EAASA,EAAI,IAAMA,EACzB8H,EAAU,EAAJN,EAASA,EAAI,IAAMA,EACzBO,EAAU,EAAJlI,EAASA,EAAI,IAAMA,EACzBmI,EAAU,EAAJhH,EAASA,EAAI,IAAMA,EAE7B,OADS8F,EAAKE,QAAQ,OAAQG,GAAGH,QAAQ,KAAMY,GAAIZ,QAAQ,KAAMa,GAAIb,QAAQ,KAAMc,GAAId,QAAQ,KAAMe,GAAIf,QAAQ,KAAMgB,GAAIhB,QAAQ,IAAKK,GAAGL,QAAQ,IAAKhH,GAAGgH,QAAQ,IAAKQ,GAAGR,QAAQ,IAAKnH,GAAGmH,QAAQ,IAAKhG,MAMzM,CACA,CACA,CACA,CAED,SAAUvB,EAAQD,EAASF,GAEjC,IAAI2I,EAAS3I,EAAoB,GAC7B4I,EAAO5I,EAAoB,GAE/B,SAAS6I,IACL,IAAIC,EAAMxG,EAAE,gBAAgBmC,KAAK,OACjC,IAAIqE,EACA,OAAO,EAEXxG,EAAE,gBAAgB6B,KAAK,MAAM2E,GAC7BxG,EAAE,gBAAgBwB,WAAW,YAEjCxB,EAAE,WAEEyG,OAAO,aAAaC,MAAM,CACtBC,QAAS,SACTC,SAAU,SACVC,OAAQ,WACRC,QAAO,EACPC,OAAO,SAAS/C,EAAMgD,EAAM9I,GACrB8F,EAAQ,IAAMgD,EACbhH,EAAE,WAAW8C,IAAI,aAAa,WAE9B9C,EAAE,WAAW8C,IAAI,aAAa,aAK1C,IAAIuD,EAAO,CACPvG,SAAS,SAASwB,EAAKQ,EAAWC,GAE9B,IACIoC,EAAO,GAEPA,EADW,IAFDpC,EAAS,IAGZ,MAEJD,EAAW,GACH,MACU,IAAZA,GAAkBA,EAAa,GAC7B,MACU,IAAZA,GAAkBA,EAAa,GAC7B,MACU,IAAZA,GAAkBA,EAAa,GAC7B,MAEA,MAIfR,EAAKgB,UAAU,CACXI,QAAQ,iBAAiByB,EAAK,KAC9BxB,KAAK,8BAQb,IAAIkB,EAAQ7D,EAAE,iBACd,IAAI6D,EAAM1D,OACN,OAAO,EAEX,IAAI2D,EAAW9D,EAAE,YAAa6D,GAC1BE,EAAW/D,EAAE,YAAa6D,GAU9B,GATAC,EAASvC,GAAG,QAAS,KAAM,WACvB,IAAIyC,EAAQhE,EAAED,MAAMiE,QACpBhE,EAAED,MAAM2B,SAAS,UAAUC,WAAWC,YAAY,UAClDmC,EAAStC,GAAGuC,GAAOC,SAASvC,SAAS,UAAUC,WAAWuC,OAAOtC,YAAY,UACjE,GAAToC,GACCuC,MAIL1C,EAAM1D,OAAO,CACZ,IAAIgE,EAAOmC,EAAKlC,eAAe,QAC/B,GAAGD,IAASE,MAAMF,GAAM,CACpB,IAAIH,EAAQjD,SAASoD,GAAQ,EAC7BL,EAASQ,SAAS,MAAM7C,GAAGuC,GAAOtC,SAAS,UAAUC,WAAWC,YAAY,UAC5EmC,EAAStC,GAAGuC,GAAOtC,SAAS,UAAUC,WAAWC,YAAY,UACjD,GAAToC,GACCuC","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 = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nfunction shuffle(a) {\r\n return a.concat().sort(function(a, b) {\r\n return Math.random() - 0.5;\r\n });\r\n }\r\n\r\n\r\n function problem(options){\r\n //callback,isRandom,pType,\r\n var defaultOptions = {\r\n id:\"problem_wrap\",//题目dom id\r\n DATA:problem_data,//题目数据\r\n isRandom:false,//是否随机\r\n len:20,//随机题目数量\r\n pType:'', //题目类型\r\n callback:null//回调\r\n }\r\n\r\n this.options = $.extend({},defaultOptions,options);\r\n console.log(this.options)\r\n if(typeof this.options.DATA == undefined || !this.options.DATA.length){\r\n return false\r\n }\r\n\r\n var html = '
';\r\n\r\n\r\n this.$wrap.html(html);\r\n\r\n\r\n\r\n this.bind(this.callback);\r\n }\r\n\r\n problem.prototype = {\r\n bind:function(callback){\r\n var that = this;\r\n \r\n $('.problem_list', that.$wrap).on('change','.active input',function(){\r\n console.log(123)\r\n $('.btn_next', that.$wrap ).removeAttr('disabled')\r\n $('.btn_result',that.$wrap ).removeAttr('disabled')\r\n })\r\n\r\n $('.btn_wrap', that.$wrap ).on('click','.btn_prev',function(){\r\n that._answerIndex --;\r\n $('.problem_list>li',that.$wrap ).eq(that._answerIndex).addClass('active').siblings().removeClass('active');\r\n if(that._answerIndex <=0){\r\n $('.btn_prev', that.$wrap ).attr('disabled',\"disabled\")\r\n }\r\n $('.btn_next',that.$wrap ).removeAttr('disabled');\r\n })\r\n\r\n $('.btn_wrap', that.$wrap ).on('click','.btn_next',function(){\r\n that._answerIndex ++;\r\n\r\n if(that._answerIndex + 1 === that.len){\r\n if(that.pType === 'myd'){\r\n $('.btn_wrap', that.$wrap ).html('') \r\n }else{\r\n $('.btn_wrap', that.$wrap ).html('')\r\n }\r\n }\r\n\r\n if( that._answerIndex + 1 > that.len ){\r\n return;\r\n }\r\n $('.problem_list>li',that.$wrap ).eq(that._answerIndex).addClass('active').siblings().removeClass('active');\r\n if(!$('.problem_list .active input:radio:checked',that.$wrap).length){\r\n $('.btn_next',that.$wrap ).attr('disabled',\"disabled\");\r\n }\r\n $('.btn_prev', that.$wrap ).removeAttr('disabled');\r\n \r\n })\r\n\r\n $('.btn_wrap', that.$wrap ).on('click','.btn_result',function(){\r\n var totalScore = 0;\r\n var scoreArr = [];\r\n $('.problem_list .item',that.$wrap).each(function(){\r\n var _score = $(this).find(\"input[type='radio']:checked\").data('score');\r\n _score = parseFloat(_score);\r\n scoreArr.push(_score)\r\n totalScore += _score;\r\n })\r\n\r\n console.log(totalScore)\r\n\r\n callback && callback(that,totalScore,scoreArr)\r\n \r\n })\r\n },\r\n showModel:function(option){\r\n var that = this;\r\n // var winHeight = $(window).outerHeight();\r\n // var windWidth = $(window).outerWidth();\r\n var html = '
';\r\n html += '
';\r\n html += '
' +\r\n '
' +\r\n '
';\r\n if(!option.isScore){\r\n html+='

' + option.content + '

';\r\n }else{\r\n if(option.score >= option.targetScore){\r\n html+='
评测成功

你的得分:'+option.score+'分  目标分数:'+option.targetScore+'

';\r\n }else{\r\n html+='
评测失败

你的得分:'+option.score+'分  目标分数:'+option.targetScore+'

';\r\n }\r\n }\r\n if(that.pType === 'myd'){\r\n html += '
'\r\n }else{\r\n html += '
'\r\n if(option.link){\r\n html += ''\r\n }\r\n }\r\n html += '
';\r\n\r\n var $html = $(html)\r\n\r\n $('body').append($html);\r\n\r\n $html.css({\r\n \"position\": \"fixed\",\r\n \"top\": \"0\",\r\n \"left\":\"0\",\r\n \"height\":'100%',\r\n \"width\": '100%',\r\n \"z-index\":\"9999\"\r\n })\r\n\r\n $('.comfirm_container', this.html).css({\r\n \"position\": \"absolute\",\r\n \"top\": \"50%\",\r\n \"left\": \"50%\",\r\n \"height\":'342px',\r\n \"width\": '500px',\r\n \"margin-top\": '-171px',\r\n \"margin-left\":'-250px'\r\n })\r\n\r\n $html.on('click', '.icon_close', function () {\r\n $html.remove();\r\n option.onClose && option.onClose();\r\n })\r\n $html.on('click', '.btn_close', function () {\r\n $html.remove();\r\n option.onClose && option.onClose();\r\n })\r\n\r\n $html.on('click', '.btn_again', function () {\r\n $html.remove();\r\n return new problem(that.options);\r\n })\r\n\r\n $html.on('click', '.btn_tomoni', function () {\r\n location.href = option.link;\r\n })\r\n },\r\n reload:function(){\r\n return new problem(this.options);\r\n }\r\n }\r\n\r\n module.exports = problem;\r\n\r\n// module.exports = {\r\n// load:function(options){\r\n// //callback,isRandom,pType,\r\n// var defaultOptions = {\r\n// id:\"problem_wrap\",//题目dom id\r\n// DATA:problem_data,//题目数据\r\n// isRandom:false,//是否随机\r\n// len:20,//随机题目数量\r\n// pType:'', //题目类型\r\n// callback:null//回调\r\n// }\r\n\r\n// this.options = $.extend({},defaultOptions,options);\r\n// console.log(this.options)\r\n// if(typeof this.options.DATA == undefined || !this.options.DATA.length){\r\n// return false\r\n// }\r\n \r\n// var html = '
';\r\n\r\n\r\n// this.$wrap.html(html);\r\n\r\n \r\n\r\n// this.bind(this.callback);\r\n\r\n \r\n// },\r\n// bind:function(callback){\r\n// var that = this;\r\n \r\n// $('.problem_list', that.$wrap).on('change','.active input',function(){\r\n// console.log(123)\r\n// $('.btn_next', that.$wrap ).removeAttr('disabled')\r\n// $('.btn_result',that.$wrap ).removeAttr('disabled')\r\n// })\r\n\r\n// $('.btn_wrap', that.$wrap ).on('click','.btn_prev',function(){\r\n// that._answerIndex --;\r\n// $('.problem_list>li',that.$wrap ).eq(that._answerIndex).addClass('active').siblings().removeClass('active');\r\n// if(that._answerIndex <=0){\r\n// $('.btn_prev', that.$wrap ).attr('disabled',\"disabled\")\r\n// }\r\n// $('.btn_next',that.$wrap ).removeAttr('disabled');\r\n// })\r\n\r\n// $('.btn_wrap', that.$wrap ).on('click','.btn_next',function(){\r\n// that._answerIndex ++;\r\n\r\n// if(that._answerIndex + 1 === that.len){\r\n// if(that.pType === 'myd'){\r\n// $('.btn_wrap', that.$wrap ).html('') \r\n// }else{\r\n// $('.btn_wrap', that.$wrap ).html('')\r\n// }\r\n// }\r\n\r\n// if( that._answerIndex + 1 > that.len ){\r\n// return;\r\n// }\r\n// $('.problem_list>li',that.$wrap ).eq(that._answerIndex).addClass('active').siblings().removeClass('active');\r\n// if(!$('.problem_list .active input:radio:checked',that.$wrap).length){\r\n// $('.btn_next',that.$wrap ).attr('disabled',\"disabled\");\r\n// }\r\n// $('.btn_prev', that.$wrap ).removeAttr('disabled');\r\n \r\n// })\r\n\r\n// $('.btn_wrap', that.$wrap ).on('click','.btn_result',function(){\r\n// var totalScore = 0;\r\n// var scoreArr = [];\r\n// $('.problem_list .item',that.$wrap).each(function(){\r\n// var _score = $(this).find(\"input[type='radio']:checked\").data('score');\r\n// _score = parseFloat(_score);\r\n// scoreArr.push(_score)\r\n// totalScore += _score;\r\n// })\r\n\r\n// console.log(totalScore)\r\n\r\n// callback && callback(that,totalScore,scoreArr)\r\n \r\n// })\r\n// },\r\n// showModel:function(option){\r\n// var that = this;\r\n// var winHeight = $(window).outerHeight();\r\n// var windWidth = $(window).outerWidth();\r\n// var html = '
';\r\n// html += '
';\r\n// html += '
' +\r\n// '
' +\r\n// '
';\r\n// if(!option.isScore){\r\n// html+='

' + option.content + '

';\r\n// }else{\r\n// if(option.score >= option.targetScore){\r\n// html+='
评测成功

你的得分:'+option.score+'分  目标分数:'+option.targetScore+'

';\r\n// }else{\r\n// html+='
评测失败

你的得分:'+option.score+'分  目标分数:'+option.targetScore+'

';\r\n// }\r\n// }\r\n// if(that.pType === 'myd'){\r\n// html += '
'\r\n// }else{\r\n// html += '
'\r\n// }\r\n// html += '
';\r\n\r\n// var $html = $(html)\r\n\r\n// $('body').append($html);\r\n\r\n// $html.css({\r\n// \"position\": \"fixed\",\r\n// \"top\": \"0\",\r\n// \"left\":\"0\",\r\n// \"height\":'100%',\r\n// \"width\": '100%',\r\n// \"z-index\":\"9999\"\r\n// })\r\n\r\n// $('.comfirm_container', this.html).css({\r\n// \"position\": \"absolute\",\r\n// \"top\": \"50%\",\r\n// \"left\": \"50%\",\r\n// \"height\":'342px',\r\n// \"width\": '500px',\r\n// \"margin-top\": '-171px',\r\n// \"margin-left\":'-250px'\r\n// })\r\n\r\n// $html.on('click', '.icon_close', function () {\r\n// $html.remove();\r\n// option.onClose && option.onClose();\r\n// })\r\n// $html.on('click', '.btn_close', function () {\r\n// $html.remove();\r\n// option.onClose && option.onClose();\r\n// })\r\n\r\n// $html.on('click', '.btn_again', function () {\r\n// $html.remove();\r\n// that.load(that.callback,that.isRandom,that.pType);\r\n// })\r\n\r\n// $html.on('click', '.btn_tomoni', function () {\r\n// location.href = option.link;\r\n// })\r\n// }\r\n// }\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\r\n tabsClickChange: function () {\r\n var $this = $(\"#tab_wrap\");\r\n if(!$this.length){\r\n return false;\r\n }\r\n var tabsList = $('.tab_list', $this);\r\n var tabsItem = $('.tab_item', $this);\r\n tabsList.on('click', 'li', function () {\r\n var index = $(this).index();\r\n $(this).addClass('active').siblings().removeClass('active');\r\n tabsItem.eq(index).fadeIn().addClass('active').siblings().hide().removeClass('active');\r\n })\r\n\r\n if($this.length){\r\n var type = this.getQueryString('type');\r\n if(type && !isNaN(type)){\r\n var index = parseInt(type) - 1;;\r\n tabsList.children(\"li\").eq(index).addClass('active').siblings().removeClass('active');\r\n tabsItem.eq(index).addClass('active').siblings().removeClass('active');\r\n }\r\n }\r\n },\r\n getQueryString: function (name) {\r\n var reg = new RegExp(\"(^|&)\" + name + \"=([^&]*)(&|$)\", \"i\");\r\n var r = decodeURI(window.location.search).substr(1).match(reg);\r\n if (r != null) return unescape(r[2]);\r\n return null;\r\n },\r\n dateFormat: function (dateS, part) {\r\n if (dateS == \"-\" || typeof dateS == \"undefined\") {\r\n return '-';\r\n }\r\n if (dateS.length > 10) {\r\n dateS = dateS.split('T')[0].replace(/-/g, \"/\");\r\n }\r\n var date = new Date(dateS);\r\n var datecopy;\r\n var redate = \"\";\r\n part = (part == null) ? \"yyyy-MM-dd HH:mm:ss\" : part;\r\n var y = date.getFullYear();\r\n var M = date.getMonth() + 1;\r\n var d = date.getDate();\r\n var H = date.getHours();\r\n var m = date.getMinutes();\r\n var s = date.getSeconds();\r\n var MM = (M > 9) ? M : \"0\" + M;\r\n var dd = (d > 9) ? d : \"0\" + d;\r\n var HH = (H > 9) ? H : \"0\" + H;\r\n var mm = (m > 9) ? m : \"0\" + m;\r\n var ss = (s > 9) ? s : \"0\" + s;\r\n redate = part.replace(\"yyyy\", y).replace(\"MM\", MM).replace(\"dd\", dd).replace(\"HH\", HH).replace(\"mm\", mm).replace(\"ss\", ss).replace(\"M\", M).replace(\"d\", d).replace(\"H\", H).replace(\"m\", m).replace(\"s\", s);\r\n return redate;\r\n }\r\n}\n\n/***/ }),\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar answer = __webpack_require__(0);\r\nvar tool = __webpack_require__(1)\r\n\r\nfunction loadIframe(){\r\n var src = $(\"#iframe_moni\").data(\"src\");\r\n if(!src){\r\n return false;\r\n }\r\n $(\"#iframe_moni\").attr(\"src\",src);\r\n $(\"#iframe_moni\").removeAttr(\"data-src\")\r\n}\r\n$(function(){\r\n\r\n jQuery(\"#kh-slide\").slide({\r\n titCell: \".hd ul\",\r\n mainCell: \".bd ul\",\r\n effect: \"leftLoop\",\r\n pnLoop:false,\r\n endFun:function(index,total,c){\r\n if(index + 1 === total){\r\n $('.tomoni').css(\"visibility\",\"visible\")\r\n }else{\r\n $('.tomoni').css(\"visibility\",\"hidden\")\r\n }\r\n }\r\n });\r\n\r\n new answer({\r\n callback:function(that,totalScore,scoreArr){\r\n\r\n var score15 = scoreArr[14];\r\n var type = '';\r\n if(score15 === 0){\r\n type = '保守型';\r\n }else{\r\n if(totalScore<20){\r\n type = '保守型';\r\n }else if(totalScore>=20 && totalScore < 36){\r\n type = '谨慎型';\r\n }else if(totalScore>=37 && totalScore < 53){\r\n type = '稳健型';\r\n }else if(totalScore>=54 && totalScore < 82){\r\n type = '积极型';\r\n }else{\r\n type = '激进型';\r\n }\r\n }\r\n \r\n that.showModel({\r\n content:\"你的风险测评结果
中\"+type+\"能力\",\r\n link:'/MoNiJiaoYi/AGu?type=3'\r\n })\r\n }\r\n })\r\n\r\n \r\n\r\n\r\n var $this = $(\"#tab_wrap_new\");\r\n if(!$this.length){\r\n return false;\r\n }\r\n var tabsList = $('.tab_list', $this);\r\n var tabsItem = $('.tab_item', $this);\r\n tabsList.on('click', 'li', function () {\r\n var index = $(this).index();\r\n $(this).addClass('active').siblings().removeClass('active');\r\n tabsItem.eq(index).fadeIn().addClass('active').siblings().hide().removeClass('active');\r\n if(index == 2){\r\n loadIframe();\r\n }\r\n })\r\n\r\n if($this.length){\r\n var type = tool.getQueryString('type');\r\n if(type && !isNaN(type)){\r\n var index = parseInt(type) - 1;;\r\n tabsList.children(\"li\").eq(index).addClass('active').siblings().removeClass('active');\r\n tabsItem.eq(index).addClass('active').siblings().removeClass('active');\r\n if(index == 2){\r\n loadIframe();\r\n }\r\n }\r\n }\r\n\r\n})\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgYTgyOGU1MTkwYzY1NjZlNjU3NGI/ODllMCoqKioqKiIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL3Byb2JsZW0vaW5kZXguanM/MDZlMCIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL3Rvb2wvaW5kZXguanM/OTIxZSoqKioiLCJ3ZWJwYWNrOi8vLy4vanMvYWd1LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbURBQTJDLGNBQWM7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQ2hFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixXQUFXO0FBQ2pDOztBQUVBOztBQUVBO0FBQ0Esd0RBQXdEO0FBQ3hELDBCQUEwQixZQUFZO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7QUFHQTs7OztBQUlBO0FBQ0E7O0FBRUE7QUFDQTtB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEM7Ozs7Ozs7Ozs7QUN0REEsYUFBYSxtQkFBTyxDQUFDLENBQW1CO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyxDQUFnQjs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLEtBQUs7Ozs7O0FBS0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQyxDIiwiZmlsZSI6ImFndS5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNik7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgYTgyOGU1MTkwYzY1NjZlNjU3NGIiLCJmdW5jdGlvbiBzaHVmZmxlKGEpIHtcclxuICAgIHJldHVybiBhLmNvbmNhdCgpLnNvcnQoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAtIDAuNTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIHByb2JsZW0ob3B0aW9ucyl7XHJcbiAgICAgICAgLy9jYWxsYmFjayxpc1JhbmRvbSxwVHlwZSxcclxuICAgICAgICB2YXIgZGVmYXVsdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGlkOlwicHJvYmxlbV93cmFwXCIsLy/popjnm65kb20gaWRcclxuICAgICAgICAgICAgREFUQTpwcm9ibGVtX2RhdGEsLy/popjnm67mlbDmja5cclxuICAgICAgICAgICAgaXNSYW5kb206ZmFsc2UsLy/mmK/lkKbpmo/mnLpcclxuICAgICAgICAgICAgbGVuOjIwLC8v6ZqP5py66aKY55uu5pWw6YePXHJcbiAgICAgICAgICAgIHBUeXBlOicnLCAvL+mimOebruexu+Wei1xyXG4gICAgICAgICAgICBjYWxsYmFjazpudWxsLy/lm57osINcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LGRlZmF1bHRPcHRpb25zLG9wdGlvbnMpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMub3B0aW9ucylcclxuICAgICAgICBpZih0eXBlb2YgdGhpcy5vcHRpb25zLkRBVEEgPT0gdW5kZWZpbmVkIHx8ICF0aGlzLm9wdGlvbnMuREFUQS5sZW5ndGgpe1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBodG1sID0gJzx1bCBjbGFzcz1cInByb2JsZW1fbGlzdFwiID4nO1xyXG4gICAgICAgIHRoaXMuJHdyYXAgPSAkKCcjJyt0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgdGhpcy5EQVRBID0gdGhpcy5vcHRpb25zLkRBVEE7XHJcbiAgICAgICAgdGhpcy5sZW4gPSB0aGlzLkRBVEEubGVuZ3RoOy8v6aKY55uu5pWwXHJcblxyXG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSB0aGlzLm9wdGlvbnMuY2FsbGJhY2s7XHJcbiAgICAgICAgdGhpcy5pc1JhbmRvbSA9IHRoaXMub3B0aW9ucy5pc1JhbmRvbTtcclxuICAgICAgICB0aGlzLnBUeXBlID0gdGhpcy5vcHRpb25zLnBUeXBlO1xyXG4gICAgICAgIHRoaXMudGFnID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuX2Fuc3dlckluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgaWYodGhpcy5pc1JhbmRvbSl7XHJcbiAgICAgICAgICAgIHRoaXMubGVuPXRoaXMub3B0aW9ucy5sZW4gfHwgdGhpcy5EQVRBLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5EQVRBID0gc2h1ZmZsZSh0aGlzLkRBVEEpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IodmFyIGkgPSAwO2k8dGhpcy5sZW47aSsrKXtcclxuICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGkgPT09IDAgPyAnYWN0aXZlJyA6IFwiXCI7XHJcblxyXG4gICAgICAgICAgICBodG1sICs9ICc8bGkgY2xhc3M9XCJpdGVtICcrY2xhc3NOYW1lKydcIj48ZGl2IGNsYXNzPVwidGl0bGVcIj48c3BhbiBjbGFzcz1cIm9yZGVyXCI+PGI+JysocGFyc2VJbnQoaSkrMSkrJzwvYj4vJyt0aGlzLmxlbisn44CBPC9zcGFuPjxzcGFuIGNsYXNzPVwidGl0XCI+Jyt0aGlzLkRBVEFbaV0udGl0bGUrJzwvc3Bhbj48L2Rpdj4nO1xyXG5cclxuICAgICAgICAgICAgaHRtbCArPSAnPHVsIGNsYXNzPVwic2VsZWN0X2xpc3RcIj4nO1xyXG4gICAgICAgICAgICB2YXIgb3B0aW9uTGVuID0gdGhpcy5EQVRBW2ldLm9wdGlvbnMubGVuZ3RoOy8v562U5qGI5pWwXHJcbiAgICAgICAgICAgIGZvcih2YXIgaiA9IDA7ajxvcHRpb25MZW47aisrKXtcclxuICAgICAgICAgICAgICAgIHZhciBvcHRpb24gPSAgdGhpcy5EQVRBW2ldLm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBodG1sICs9ICc8bGk+PHNwYW4gY2xhc3M9XCJyYWRpby13cmFwXCI+PGlucHV0IHR5cGU9XCJyYWRpb1wiIGRhdGEtc2NvcmU9XCInK3RoaXMuREFUQVtpXS5zY29yZXNbal0rJ1wiIG5hbWU9XCInK3RoaXMub3B0aW9ucy5pZCtpKydcIiB2YWx1ZT1cIicraisnXCIgaWQ9XCInK3RoaXMub3B0aW9ucy5pZCtpKycnK2orJ1wiPjxzcGFuIGNsYXNzPVwicmFkaW8taW5uZXJcIj48L3NwYW4+PC9zcGFuPjxsYWJlbCBmb3I9XCInK3RoaXMub3B0aW9ucy5pZCtpKycnK2orJ1wiPicrb3B0aW9uW2pdKyc8L2xhYmVsPjwvbGk+J1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBodG1sICs9ICc8L3VsPjwvbGk+J1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaHRtbCArPSc8L3VsPjxkaXYgY2xhc3M9XCJidG5fd3JhcFwiID48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9wcmV2XCIgZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPuS4iuS4gOmimDwvYnV0dG9uPjxidXR0b24gY2xhc3M9XCJidG4gYnRuX25leHQgXCIgZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPuS4i+S4gOmimDwvYnV0dG9uPjwvZGl2Pic7XHJcblxyXG5cclxuICAgICAgICB0aGlzLiR3cmFwLmh0bWwoaHRtbCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgdGhpcy5iaW5kKHRoaXMuY2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgcHJvYmxlbS5wcm90b3R5cGUgPSB7XHJcbiAgICBiaW5kOmZ1bmN0aW9uKGNhbGxiYWNrKXtcclxuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJCgnLnByb2JsZW1fbGlzdCcsIHRoYXQuJHdyYXApLm9uKCdjaGFuZ2UnLCcuYWN0aXZlIGlucHV0JyxmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygxMjMpXHJcbiAgICAgICAgICAgICQoJy5idG5fbmV4dCcsIHRoYXQuJHdyYXAgKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXHJcbiAgICAgICAgICAgICQoJy5idG5fcmVzdWx0Jyx0aGF0LiR3cmFwICkucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgICQoJy5idG5fd3JhcCcsIHRoYXQuJHdyYXAgKS5vbignY2xpY2snLCcuYnRuX3ByZXYnLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHRoYXQuX2Fuc3dlckluZGV4IC0tO1xyXG4gICAgICAgICAgICAkKCcucHJvYmxlbV9saXN0PmxpJyx0aGF0LiR3cmFwICkuZXEodGhhdC5fYW5zd2VySW5kZXgpLmFkZENsYXNzKCdhY3RpdmUnKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgaWYodGhhdC5fYW5zd2VySW5kZXggPD0wKXtcclxuICAgICAgICAgICAgICAgICQoJy5idG5fcHJldicsIHRoYXQuJHdyYXAgKS5hdHRyKCdkaXNhYmxlZCcsXCJkaXNhYmxlZFwiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICQoJy5idG5fbmV4dCcsdGhhdC4kd3JhcCApLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgJCgnLmJ0bl93cmFwJywgdGhhdC4kd3JhcCApLm9uKCdjbGljaycsJy5idG5fbmV4dCcsZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdGhhdC5fYW5zd2VySW5kZXggKys7XHJcblxyXG4gICAgICAgICAgICBpZih0aGF0Ll9hbnN3ZXJJbmRleCArIDEgPT09IHRoYXQubGVuKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoYXQucFR5cGUgPT09ICdteWQnKXtcclxuICAgICAgICAgICAgICAgICAgICAkKCcuYnRuX3dyYXAnLCB0aGF0LiR3cmFwICkuaHRtbCgnPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5fcmVzdWx0XCIgZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPuaPkOS6pDwvYnV0dG9uPicpIFxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnLmJ0bl93cmFwJywgdGhhdC4kd3JhcCApLmh0bWwoJzxidXR0b24gY2xhc3M9XCJidG4gYnRuX3Jlc3VsdFwiIGRpc2FibGVkPVwiZGlzYWJsZWRcIj7mn6XnnIvmtYvor4Tnu5Pmnpw8L2J1dHRvbj4nKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiggdGhhdC5fYW5zd2VySW5kZXggKyAxID4gdGhhdC5sZW4gKXtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKCcucHJvYmxlbV9saXN0PmxpJyx0aGF0LiR3cmFwICkuZXEodGhhdC5fYW5zd2VySW5kZXgpLmFkZENsYXNzKCdhY3RpdmUnKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgaWYoISQoJy5wcm9ibGVtX2xpc3QgLmFjdGl2ZSBpbnB1dDpyYWRpbzpjaGVja2VkJyx0aGF0LiR3cmFwKS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgJCgnLmJ0bl9uZXh0Jyx0aGF0LiR3cmFwICkuYXR0cignZGlzYWJsZWQnLFwiZGlzYWJsZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJCgnLmJ0bl9wcmV2JywgdGhhdC4kd3JhcCApLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgJCgnLmJ0bl93cmFwJywgdGhhdC4kd3JhcCApLm9uKCdjbGljaycsJy5idG5fcmVzdWx0JyxmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB2YXIgdG90YWxTY29yZSA9IDA7XHJcbiAgICAgICAgICAgIHZhciBzY29yZUFyciA9IFtdO1xyXG4gICAgICAgICAgICAkKCcucHJvYmxlbV9saXN0IC5pdGVtJyx0aGF0LiR3cmFwKS5lYWNoKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgIHZhciBfc2NvcmUgPSAkKHRoaXMpLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWRcIikuZGF0YSgnc2NvcmUnKTtcclxuICAgICAgICAgICAgICAgX3Njb3JlID0gcGFyc2VGbG9hdChfc2NvcmUpO1xyXG4gICAgICAgICAgICAgICBzY29yZUFyci5wdXNoKF9zY29yZSlcclxuICAgICAgICAgICAgICAgdG90YWxTY29yZSArPSBfc2NvcmU7XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0b3RhbFNjb3JlKVxyXG5cclxuICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2sodGhhdCx0b3RhbFNjb3JlLHNjb3JlQXJyKVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHNob3dNb2RlbDpmdW5jdGlvbihvcHRpb24pe1xyXG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgICAgICAvLyB2YXIgd2luSGVpZ2h0ID0gJCh3aW5kb3cpLm91dGVySGVpZ2h0KCk7XHJcbiAgICAgICAgLy8gdmFyIHdpbmRXaWR0aCA9ICQod2luZG93KS5vdXRlcldpZHRoKCk7XHJcbiAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz1cImNvbWZpcm1fbW9kZWxcIj4nO1xyXG4gICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJjb21maXJtX21hc2tcIiBzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDojMDAwO29wYWNpdHk6MC41O1wiPjwvZGl2Pic7XHJcbiAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJjb21maXJtX2NvbnRhaW5lclwiPicgK1xyXG4gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJjb21maXJtX2hlYWRlclwiPjxkaXYgY2xhc3M9XCJjb25maXJtX21vcmVcIj48aSBjbGFzcz1cImljb25fY2xvc2VcIj48L2k+PC9kaXY+PC9kaXY+JyArXHJcbiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cImNvbmZpcm1fY29udGVudFwiPic7XHJcbiAgICAgICAgICAgICAgICBpZighb3B0aW9uLmlzU2NvcmUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwrPSc8ZGl2IGNsYXNzPVwiY29uZmlybV9zdWNcIj48L2Rpdj48cD4nICsgb3B0aW9uLmNvbnRlbnQgKyAnPC9wPic7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBpZihvcHRpb24uc2NvcmUgPj0gb3B0aW9uLnRhcmdldFNjb3JlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9JzxkaXYgY2xhc3M9XCJjb25maXJtX3N1Y1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJzY29yZV9yZXNcIj7or4TmtYvmiJDlip88L2Rpdj48cCBjbGFzcz1cInNjb3JlX2NvblwiPuS9oOeahOW+l+WIhjo8c3Bhbj4nK29wdGlvbi5zY29yZSsnPC9zcGFuPuWIhiZuYnNwOyZuYnNwO+ebruagh+WIhuaVsDo8c3Bhbj4nK29wdGlvbi50YXJnZXRTY29yZSsnPC9zcGFuPuWIhjwvcD4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sKz0nPGRpdiBjbGFzcz1cImNvbmZpcm1fZmFpbFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJzY29yZV9yZXNcIj7or4TmtYvlpLHotKU8L2Rpdj48cCBjbGFzcz1cInNjb3JlX2NvblwiPuS9oOeahOW+l+WIhjo8c3Bhbj4nK29wdGlvbi5zY29yZSsnPC9zcGFuPuWIhiZuYnNwOyZuYnNwO+ebruagh+WIhuaVsDo8c3Bhbj4nK29wdGlvbi50YXJnZXRTY29yZSsnPC9zcGFuPuWIhjwvcD4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhhdC5wVHlwZSA9PT0gJ215ZCcpe1xyXG4gICAgICAgICAgICAgICAgaHRtbCArPSAnPC9kaXY+PGRpdiBjbGFzcz1cImNvbmZpcm1fZm9vdCBidG5fd3JhcFwiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuX2Nsb3NlXCI+5YWz6ZetPC9idXR0b24+J1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2PjxkaXYgY2xhc3M9XCJjb25maXJtX2Zvb3QgYnRuX3dyYXBcIj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9hZ2FpblwiPumHjeaWsOivhOa1izwvYnV0dG9uPidcclxuICAgICAgICAgICAgICAgIGlmKG9wdGlvbi5saW5rKXtcclxuICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl90b21vbmlcIj7ljrvmqKHmi5/kuqTmmJM8L2J1dHRvbj4nXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBodG1sICs9ICc8L2Rpdj48L2Rpdj48L2Rpdj4nO1xyXG5cclxuICAgICAgICB2YXIgJGh0bWwgPSAkKGh0bWwpXHJcblxyXG4gICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJGh0bWwpO1xyXG5cclxuICAgICAgICAkaHRtbC5jc3Moe1xyXG4gICAgICAgICAgICBcInBvc2l0aW9uXCI6IFwiZml4ZWRcIixcclxuICAgICAgICAgICAgXCJ0b3BcIjogXCIwXCIsXHJcbiAgICAgICAgICAgIFwibGVmdFwiOlwiMFwiLFxyXG4gICAgICAgICAgICBcImhlaWdodFwiOicxMDAlJyxcclxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAnMTAwJScsXHJcbiAgICAgICAgICAgIFwiei1pbmRleFwiOlwiOTk5OVwiXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgJCgnLmNvbWZpcm1fY29udGFpbmVyJywgdGhpcy5odG1sKS5jc3Moe1xyXG4gICAgICAgICAgICBcInBvc2l0aW9uXCI6IFwiYWJzb2x1dGVcIixcclxuICAgICAgICAgICAgXCJ0b3BcIjogXCI1MCVcIixcclxuICAgICAgICAgICAgXCJsZWZ0XCI6IFwiNTAlXCIsXHJcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6JzM0MnB4JyxcclxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAnNTAwcHgnLFxyXG4gICAgICAgICAgICBcIm1hcmdpbi10b3BcIjogJy0xNzFweCcsXHJcbiAgICAgICAgICAgIFwibWFyZ2luLWxlZnRcIjonLTI1MHB4J1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgICRodG1sLm9uKCdjbGljaycsICcuaWNvbl9jbG9zZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJGh0bWwucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIG9wdGlvbi5vbkNsb3NlICYmIG9wdGlvbi5vbkNsb3NlKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAkaHRtbC5vbignY2xpY2snLCAnLmJ0bl9jbG9zZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJGh0bWwucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIG9wdGlvbi5vbkNsb3NlICYmIG9wdGlvbi5vbkNsb3NlKCk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgJGh0bWwub24oJ2NsaWNrJywgJy5idG5fYWdhaW4nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICRodG1sLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IHByb2JsZW0odGhhdC5vcHRpb25zKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICAkaHRtbC5vbignY2xpY2snLCAnLmJ0bl90b21vbmknLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBvcHRpb24ubGluaztcclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHJlbG9hZDpmdW5jdGlvbigpe1xyXG4gICAgICAgIHJldHVybiBuZXcgcHJvYmxlbSh0aGlzLm9wdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9kdWxlLmV4cG9ydHMgID0gIHByb2JsZW07XHJcblxyXG4vLyBtb2R1bGUuZXhwb3J0cyAgPSB7XHJcbi8vICAgICBsb2FkOmZ1bmN0aW9uKG9wdGlvbnMpe1xyXG4vLyAgICAgICAgIC8vY2FsbGJhY2ssaXNSYW5kb20scFR5cGUsXHJcbi8vICAgICAgICAgdmFyIGRlZmF1bHRPcHRpb25zID0ge1xyXG4vLyAgICAgICAgICAgICBpZDpcInByb2JsZW1fd3JhcFwiLC8v6aKY55uuZG9tIGlkXHJcbi8vICAgICAgICAgICAgIERBVEE6cHJvYmxlbV9kYXRhLC8v6aKY55uu5pWw5o2uXHJcbi8vICAgICAgICAgICAgIGlzUmFuZG9tOmZhbHNlLC8v5piv5ZCm6ZqP5py6XHJcbi8vICAgICAgICAgICAgIGxlbjoyMCwvL+maj+acuumimOebruaVsOmHj1xyXG4vLyAgICAgICAgICAgICBwVHlwZTonJywgLy/popjnm67nsbvlnotcclxuLy8gICAgICAgICAgICAgY2FsbGJhY2s6bnVsbC8v5Zue6LCDXHJcbi8vICAgICAgICAgfVxyXG5cclxuLy8gICAgICAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSxkZWZhdWx0T3B0aW9ucyxvcHRpb25zKTtcclxuLy8gICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm9wdGlvbnMpXHJcbi8vICAgICAgICAgaWYodHlwZW9mIHRoaXMub3B0aW9ucy5EQVRBID09IHVuZGVmaW5lZCB8fCAhdGhpcy5vcHRpb25zLkRBVEEubGVuZ3RoKXtcclxuLy8gICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbi8vICAgICAgICAgfVxyXG4gICAgICAgXHJcbi8vICAgICAgICAgdmFyIGh0bWwgPSAnPHVsIGNsYXNzPVwicHJvYmxlbV9saXN0XCIgPic7XHJcbi8vICAgICAgICAgdGhpcy4kd3JhcCA9ICQoJyMnK3RoaXMub3B0aW9ucy5pZClcclxuLy8gICAgICAgICB0aGlzLkRBVEEgPSB0aGlzLm9wdGlvbnMuREFUQTtcclxuLy8gICAgICAgICB0aGlzLmxlbiA9IHRoaXMuREFUQS5sZW5ndGg7Ly/popjnm67mlbBcclxuXHJcbi8vICAgICAgICAgdGhpcy5jYWxsYmFjayA9IHRoaXMub3B0aW9ucy5jYWxsYmFjaztcclxuLy8gICAgICAgICB0aGlzLmlzUmFuZG9tID0gdGhpcy5vcHRpb25zLmlzUmFuZG9tO1xyXG4vLyAgICAgICAgIHRoaXMucFR5cGUgPSB0aGlzLm9wdGlvbnMucFR5cGU7XHJcbi8vICAgICAgICAgdGhpcy50YWcgPSBmYWxzZTtcclxuXHJcbi8vICAgICAgICAgdGhpcy5fYW5zd2VySW5kZXggPSAwO1xyXG5cclxuLy8gICAgICAgICBpZih0aGlzLmlzUmFuZG9tKXtcclxuLy8gICAgICAgICAgICAgdGhpcy5sZW49dGhpcy5vcHRpb25zLmxlbiB8fCB0aGlzLkRBVEEubGVuZ3RoO1xyXG4vLyAgICAgICAgICAgICB0aGlzLkRBVEEgPSBzaHVmZmxlKHRoaXMuREFUQSlcclxuLy8gICAgICAgICB9XHJcblxyXG4vLyAgICAgICAgIGZvcih2YXIgaSA9IDA7aTx0aGlzLmxlbjtpKyspe1xyXG4vLyAgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gaSA9PT0gMCA/ICdhY3RpdmUnIDogXCJcIjtcclxuXHJcbi8vICAgICAgICAgICAgIGh0bWwgKz0gJzxsaSBjbGFzcz1cIml0ZW0gJytjbGFzc05hbWUrJ1wiPjxkaXYgY2xhc3M9XCJ0aXRsZVwiPjxzcGFuIGNsYXNzPVwib3JkZXJcIj48Yj4nKyhwYXJzZUludChpKSsxKSsnPC9iPi8nK3RoaXMubGVuKyfjgIE8L3NwYW4+PHNwYW4gY2xhc3M9XCJ0aXRcIj4nK3RoaXMuREFUQVtpXS50aXRsZSsnPC9zcGFuPjwvZGl2Pic7XHJcblxyXG4vLyAgICAgICAgICAgICBodG1sICs9ICc8dWwgY2xhc3M9XCJzZWxlY3RfbGlzdFwiPic7XHJcbi8vICAgICAgICAgICAgIHZhciBvcHRpb25MZW4gPSB0aGlzLkRBVEFbaV0ub3B0aW9ucy5sZW5ndGg7Ly/nrZTmoYjmlbBcclxuLy8gICAgICAgICAgICAgZm9yKHZhciBqID0gMDtqPG9wdGlvbkxlbjtqKyspe1xyXG4vLyAgICAgICAgICAgICAgICAgdmFyIG9wdGlvbiA9ICB0aGlzLkRBVEFbaV0ub3B0aW9ucztcclxuLy8gICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxsaT48c3BhbiBjbGFzcz1cInJhZGlvLXdyYXBcIj48aW5wdXQgdHlwZT1cInJhZGlvXCIgZGF0YS1zY29yZT1cIicrdGhpcy5EQVRBW2ldLnNjb3Jlc1tqXSsnXCIgbmFtZT1cIicrdGhpcy5vcHRpb25zLmlkK2krJ1wiIHZhbHVlPVwiJytqKydcIiBpZD1cIicrdGhpcy5vcHRpb25zLmlkK2krJycraisnXCI+PHNwYW4gY2xhc3M9XCJyYWRpby1pbm5lclwiPjwvc3Bhbj48L3NwYW4+PGxhYmVsIGZvcj1cIicrdGhpcy5vcHRpb25zLmlkK2krJycraisnXCI+JytvcHRpb25bal0rJzwvbGFiZWw+PC9saT4nXHJcbi8vICAgICAgICAgICAgIH1cclxuXHJcbi8vICAgICAgICAgICAgIGh0bWwgKz0gJzwvdWw+PC9saT4nXHJcbi8vICAgICAgICAgfVxyXG5cclxuLy8gICAgICAgICBodG1sICs9JzwvdWw+PGRpdiBjbGFzcz1cImJ0bl93cmFwXCIgPjxidXR0b24gY2xhc3M9XCJidG4gYnRuX3ByZXZcIiBkaXNhYmxlZD1cImRpc2FibGVkXCI+5LiK5LiA6aKYPC9idXR0b24+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG5fbmV4dCBcIiBkaXNhYmxlZD1cImRpc2FibGVkXCI+5LiL5LiA6aKYPC9idXR0b24+PC9kaXY+JztcclxuXHJcblxyXG4vLyAgICAgICAgIHRoaXMuJHdyYXAuaHRtbChodG1sKTtcclxuXHJcbiAgICAgIFxyXG5cclxuLy8gICAgICAgICB0aGlzLmJpbmQodGhpcy5jYWxsYmFjayk7XHJcblxyXG4gICAgICAgXHJcbi8vICAgICB9LFxyXG4vLyAgICAgYmluZDpmdW5jdGlvbihjYWxsYmFjayl7XHJcbi8vICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIFxyXG4vLyAgICAgICAgICQoJy5wcm9ibGVtX2xpc3QnLCB0aGF0LiR3cmFwKS5vbignY2hhbmdlJywnLmFjdGl2ZSBpbnB1dCcsZnVuY3Rpb24oKXtcclxuLy8gICAgICAgICAgICAgY29uc29sZS5sb2coMTIzKVxyXG4vLyAgICAgICAgICAgICAkKCcuYnRuX25leHQnLCB0aGF0LiR3cmFwICkucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxyXG4vLyAgICAgICAgICAgICAkKCcuYnRuX3Jlc3VsdCcsdGhhdC4kd3JhcCApLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcclxuLy8gICAgICAgICB9KVxyXG5cclxuLy8gICAgICAgICAkKCcuYnRuX3dyYXAnLCB0aGF0LiR3cmFwICkub24oJ2NsaWNrJywnLmJ0bl9wcmV2JyxmdW5jdGlvbigpe1xyXG4vLyAgICAgICAgICAgICB0aGF0Ll9hbnN3ZXJJbmRleCAtLTtcclxuLy8gICAgICAgICAgICAgJCgnLnByb2JsZW1fbGlzdD5saScsdGhhdC4kd3JhcCApLmVxKHRoYXQuX2Fuc3dlckluZGV4KS5hZGRDbGFzcygnYWN0aXZlJykuc2libGluZ3MoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcbi8vICAgICAgICAgICAgIGlmKHRoYXQuX2Fuc3dlckluZGV4IDw9MCl7XHJcbi8vICAgICAgICAgICAgICAgICAkKCcuYnRuX3ByZXYnLCB0aGF0LiR3cmFwICkuYXR0cignZGlzYWJsZWQnLFwiZGlzYWJsZWRcIilcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAkKCcuYnRuX25leHQnLHRoYXQuJHdyYXAgKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpO1xyXG4vLyAgICAgICAgIH0pXHJcblxyXG4vLyAgICAgICAgICQoJy5idG5fd3JhcCcsIHRoYXQuJHdyYXAgKS5vbignY2xpY2snLCcuYnRuX25leHQnLGZ1bmN0aW9uKCl7XHJcbi8vICAgICAgICAgICAgIHRoYXQuX2Fuc3dlckluZGV4ICsrO1xyXG5cclxuLy8gICAgICAgICAgICAgaWYodGhhdC5fYW5zd2VySW5kZXggKyAxID09PSB0aGF0Lmxlbil7XHJcbi8vICAgICAgICAgICAgICAgICBpZih0aGF0LnBUeXBlID09PSAnbXlkJyl7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgJCgnLmJ0bl93cmFwJywgdGhhdC4kd3JhcCApLmh0bWwoJzxidXR0b24gY2xhc3M9XCJidG4gYnRuX3Jlc3VsdFwiIGRpc2FibGVkPVwiZGlzYWJsZWRcIj7mj5DkuqQ8L2J1dHRvbj4nKSBcclxuLy8gICAgICAgICAgICAgICAgIH1lbHNle1xyXG4vLyAgICAgICAgICAgICAgICAgICAgICQoJy5idG5fd3JhcCcsIHRoYXQuJHdyYXAgKS5odG1sKCc8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9yZXN1bHRcIiBkaXNhYmxlZD1cImRpc2FibGVkXCI+5p+l55yL5rWL6K+E57uT5p6cPC9idXR0b24+JylcclxuLy8gICAgICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgfVxyXG5cclxuLy8gICAgICAgICAgICAgaWYoIHRoYXQuX2Fuc3dlckluZGV4ICsgMSA+IHRoYXQubGVuICl7XHJcbi8vICAgICAgICAgICAgICAgICByZXR1cm47XHJcbi8vICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgJCgnLnByb2JsZW1fbGlzdD5saScsdGhhdC4kd3JhcCApLmVxKHRoYXQuX2Fuc3dlckluZGV4KS5hZGRDbGFzcygnYWN0aXZlJykuc2libGluZ3MoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcbi8vICAgICAgICAgICAgIGlmKCEkKCcucHJvYmxlbV9saXN0IC5hY3RpdmUgaW5wdXQ6cmFkaW86Y2hlY2tlZCcsdGhhdC4kd3JhcCkubGVuZ3RoKXtcclxuLy8gICAgICAgICAgICAgICAgICQoJy5idG5fbmV4dCcsdGhhdC4kd3JhcCApLmF0dHIoJ2Rpc2FibGVkJyxcImRpc2FibGVkXCIpO1xyXG4vLyAgICAgICAgICAgICB9XHJcbi8vICAgICAgICAgICAgICQoJy5idG5fcHJldicsIHRoYXQuJHdyYXAgKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgIFxyXG4vLyAgICAgICAgIH0pXHJcblxyXG4vLyAgICAgICAgICQoJy5idG5fd3JhcCcsIHRoYXQuJHdyYXAgKS5vbignY2xpY2snLCcuYnRuX3Jlc3VsdCcsZnVuY3Rpb24oKXtcclxuLy8gICAgICAgICAgICAgdmFyIHRvdGFsU2NvcmUgPSAwO1xyXG4vLyAgICAgICAgICAgICB2YXIgc2NvcmVBcnIgPSBbXTtcclxuLy8gICAgICAgICAgICAgJCgnLnByb2JsZW1fbGlzdCAuaXRlbScsdGhhdC4kd3JhcCkuZWFjaChmdW5jdGlvbigpe1xyXG4vLyAgICAgICAgICAgICAgICB2YXIgX3Njb3JlID0gJCh0aGlzKS5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkXCIpLmRhdGEoJ3Njb3JlJyk7XHJcbi8vICAgICAgICAgICAgICAgIF9zY29yZSA9IHBhcnNlRmxvYXQoX3Njb3JlKTtcclxuLy8gICAgICAgICAgICAgICAgc2NvcmVBcnIucHVzaChfc2NvcmUpXHJcbi8vICAgICAgICAgICAgICAgIHRvdGFsU2NvcmUgKz0gX3Njb3JlO1xyXG4vLyAgICAgICAgICAgICB9KVxyXG5cclxuLy8gICAgICAgICAgICAgY29uc29sZS5sb2codG90YWxTY29yZSlcclxuXHJcbi8vICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHRoYXQsdG90YWxTY29yZSxzY29yZUFycilcclxuICAgICAgICAgICAgXHJcbi8vICAgICAgICAgfSlcclxuLy8gICAgIH0sXHJcbi8vICAgICBzaG93TW9kZWw6ZnVuY3Rpb24ob3B0aW9uKXtcclxuLy8gICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbi8vICAgICAgICAgdmFyIHdpbkhlaWdodCA9ICQod2luZG93KS5vdXRlckhlaWdodCgpO1xyXG4vLyAgICAgICAgIHZhciB3aW5kV2lkdGggPSAkKHdpbmRvdykub3V0ZXJXaWR0aCgpO1xyXG4vLyAgICAgICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9XCJjb21maXJtX21vZGVsXCI+JztcclxuLy8gICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwiY29tZmlybV9tYXNrXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6IzAwMDtvcGFjaXR5OjAuNTtcIj48L2Rpdj4nO1xyXG4vLyAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwiY29tZmlybV9jb250YWluZXJcIj4nICtcclxuLy8gICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiY29tZmlybV9oZWFkZXJcIj48ZGl2IGNsYXNzPVwiY29uZmlybV9tb3JlXCI+PGkgY2xhc3M9XCJpY29uX2Nsb3NlXCI+PC9pPjwvZGl2PjwvZGl2PicgK1xyXG4vLyAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJjb25maXJtX2NvbnRlbnRcIj4nO1xyXG4vLyAgICAgICAgICAgICAgICAgaWYoIW9wdGlvbi5pc1Njb3JlKXtcclxuLy8gICAgICAgICAgICAgICAgICAgICBodG1sKz0nPGRpdiBjbGFzcz1cImNvbmZpcm1fc3VjXCI+PC9kaXY+PHA+JyArIG9wdGlvbi5jb250ZW50ICsgJzwvcD4nO1xyXG4vLyAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgaWYob3B0aW9uLnNjb3JlID49IG9wdGlvbi50YXJnZXRTY29yZSl7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwrPSc8ZGl2IGNsYXNzPVwiY29uZmlybV9zdWNcIj48L2Rpdj48ZGl2IGNsYXNzPVwic2NvcmVfcmVzXCI+6K+E5rWL5oiQ5YqfPC9kaXY+PHAgY2xhc3M9XCJzY29yZV9jb25cIj7kvaDnmoTlvpfliIY6PHNwYW4+JytvcHRpb24uc2NvcmUrJzwvc3Bhbj7liIYmbmJzcDsmbmJzcDvnm67moIfliIbmlbA6PHNwYW4+JytvcHRpb24udGFyZ2V0U2NvcmUrJzwvc3Bhbj7liIY8L3A+JztcclxuLy8gICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9JzxkaXYgY2xhc3M9XCJjb25maXJtX2ZhaWxcIj48L2Rpdj48ZGl2IGNsYXNzPVwic2NvcmVfcmVzXCI+6K+E5rWL5aSx6LSlPC9kaXY+PHAgY2xhc3M9XCJzY29yZV9jb25cIj7kvaDnmoTlvpfliIY6PHNwYW4+JytvcHRpb24uc2NvcmUrJzwvc3Bhbj7liIYmbmJzcDsmbmJzcDvnm67moIfliIbmlbA6PHNwYW4+JytvcHRpb24udGFyZ2V0U2NvcmUrJzwvc3Bhbj7liIY8L3A+JztcclxuLy8gICAgICAgICAgICAgICAgICAgICB9XHJcbi8vICAgICAgICAgICAgICAgICB9XHJcbi8vICAgICAgICAgICAgIGlmKHRoYXQucFR5cGUgPT09ICdteWQnKXtcclxuLy8gICAgICAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2PjxkaXYgY2xhc3M9XCJjb25maXJtX2Zvb3QgYnRuX3dyYXBcIj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl9jbG9zZVwiPuWFs+mXrTwvYnV0dG9uPidcclxuLy8gICAgICAgICAgICAgfWVsc2V7XHJcbi8vICAgICAgICAgICAgICAgICBodG1sICs9ICc8L2Rpdj48ZGl2IGNsYXNzPVwiY29uZmlybV9mb290IGJ0bl93cmFwXCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG5fYWdhaW5cIj7ph43mlrDor4TmtYs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bl90b21vbmlcIj7ljrvmqKHmi5/kuqTmmJM8L2J1dHRvbj4nXHJcbi8vICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICBodG1sICs9ICc8L2Rpdj48L2Rpdj48L2Rpdj4nO1xyXG5cclxuLy8gICAgICAgICB2YXIgJGh0bWwgPSAkKGh0bWwpXHJcblxyXG4vLyAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJGh0bWwpO1xyXG5cclxuLy8gICAgICAgICAkaHRtbC5jc3Moe1xyXG4vLyAgICAgICAgICAgICBcInBvc2l0aW9uXCI6IFwiZml4ZWRcIixcclxuLy8gICAgICAgICAgICAgXCJ0b3BcIjogXCIwXCIsXHJcbi8vICAgICAgICAgICAgIFwibGVmdFwiOlwiMFwiLFxyXG4vLyAgICAgICAgICAgICBcImhlaWdodFwiOicxMDAlJyxcclxuLy8gICAgICAgICAgICAgXCJ3aWR0aFwiOiAnMTAwJScsXHJcbi8vICAgICAgICAgICAgIFwiei1pbmRleFwiOlwiOTk5OVwiXHJcbi8vICAgICAgICAgfSlcclxuXHJcbi8vICAgICAgICAgJCgnLmNvbWZpcm1fY29udGFpbmVyJywgdGhpcy5odG1sKS5jc3Moe1xyXG4vLyAgICAgICAgICAgICBcInBvc2l0aW9uXCI6IFwiYWJzb2x1dGVcIixcclxuLy8gICAgICAgICAgICAgXCJ0b3BcIjogXCI1MCVcIixcclxuLy8gICAgICAgICAgICAgXCJsZWZ0XCI6IFwiNTAlXCIsXHJcbi8vICAgICAgICAgICAgIFwiaGVpZ2h0XCI6JzM0MnB4JyxcclxuLy8gICAgICAgICAgICAgXCJ3aWR0aFwiOiAnNTAwcHgnLFxyXG4vLyAgICAgICAgICAgICBcIm1hcmdpbi10b3BcIjogJy0xNzFweCcsXHJcbi8vICAgICAgICAgICAgIFwibWFyZ2luLWxlZnRcIjonLTI1MHB4J1xyXG4vLyAgICAgICAgIH0pXHJcblxyXG4vLyAgICAgICAgICRodG1sLm9uKCdjbGljaycsICcuaWNvbl9jbG9zZScsIGZ1bmN0aW9uICgpIHtcclxuLy8gICAgICAgICAgICAgJGh0bWwucmVtb3ZlKCk7XHJcbi8vICAgICAgICAgICAgIG9wdGlvbi5vbkNsb3NlICYmIG9wdGlvbi5vbkNsb3NlKCk7XHJcbi8vICAgICAgICAgfSlcclxuLy8gICAgICAgICAkaHRtbC5vbignY2xpY2snLCAnLmJ0bl9jbG9zZScsIGZ1bmN0aW9uICgpIHtcclxuLy8gICAgICAgICAgICAgJGh0bWwucmVtb3ZlKCk7XHJcbi8vICAgICAgICAgICAgIG9wdGlvbi5vbkNsb3NlICYmIG9wdGlvbi5vbkNsb3NlKCk7XHJcbi8vICAgICAgICAgfSlcclxuXHJcbi8vICAgICAgICAgJGh0bWwub24oJ2NsaWNrJywgJy5idG5fYWdhaW4nLCBmdW5jdGlvbiAoKSB7XHJcbi8vICAgICAgICAgICAgICRodG1sLnJlbW92ZSgpO1xyXG4vLyAgICAgICAgICAgICB0aGF0LmxvYWQodGhhdC5jYWxsYmFjayx0aGF0LmlzUmFuZG9tLHRoYXQucFR5cGUpO1xyXG4vLyAgICAgICAgIH0pXHJcblxyXG4vLyAgICAgICAgICRodG1sLm9uKCdjbGljaycsICcuYnRuX3RvbW9uaScsIGZ1bmN0aW9uICgpIHtcclxuLy8gICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IG9wdGlvbi5saW5rO1xyXG4vLyAgICAgICAgIH0pXHJcbi8vICAgICB9XHJcbi8vIH1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvcHJvYmxlbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDEgNiA3IDggMTIgMTMiLCJtb2R1bGUuZXhwb3J0cyA9IHtcclxuICAgIHRhYnNDbGlja0NoYW5nZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciAkdGhpcyA9ICQoXCIjdGFiX3dyYXBcIik7XHJcbiAgICAgICAgaWYoISR0aGlzLmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhYnNMaXN0ID0gJCgnLnRhYl9saXN0JywgJHRoaXMpO1xyXG4gICAgICAgIHZhciB0YWJzSXRlbSA9ICQoJy50YWJfaXRlbScsICR0aGlzKTtcclxuICAgICAgICB0YWJzTGlzdC5vbignY2xpY2snLCAnbGknLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9ICQodGhpcykuaW5kZXgoKTtcclxuICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJykuc2libGluZ3MoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgIHRhYnNJdGVtLmVxKGluZGV4KS5mYWRlSW4oKS5hZGRDbGFzcygnYWN0aXZlJykuc2libGluZ3MoKS5oaWRlKCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmKCR0aGlzLmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHZhciB0eXBlID0gdGhpcy5nZXRRdWVyeVN0cmluZygndHlwZScpO1xyXG4gICAgICAgICAgICBpZih0eXBlICYmICFpc05hTih0eXBlKSl7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludCh0eXBlKSAtIDE7O1xyXG4gICAgICAgICAgICAgICAgdGFic0xpc3QuY2hpbGRyZW4oXCJsaVwiKS5lcShpbmRleCkuYWRkQ2xhc3MoJ2FjdGl2ZScpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgdGFic0l0ZW0uZXEoaW5kZXgpLmFkZENsYXNzKCdhY3RpdmUnKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBnZXRRdWVyeVN0cmluZzogZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIihefCYpXCIgKyBuYW1lICsgXCI9KFteJl0qKSgmfCQpXCIsIFwiaVwiKTtcclxuICAgICAgICB2YXIgciA9IGRlY29kZVVSSSh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5zdWJzdHIoMSkubWF0Y2gocmVnKTtcclxuICAgICAgICBpZiAociAhPSBudWxsKSByZXR1cm4gdW5lc2NhcGUoclsyXSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG4gICAgZGF0ZUZvcm1hdDogZnVuY3Rpb24gKGRhdGVTLCBwYXJ0KSB7XHJcbiAgICAgICAgaWYgKGRhdGVTID09IFwiLVwiIHx8IHR5cGVvZiBkYXRlUyA9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRlUy5sZW5ndGggPiAxMCkge1xyXG4gICAgICAgICAgICBkYXRlUyA9IGRhdGVTLnNwbGl0KCdUJylbMF0ucmVwbGFjZSgvLS9nLCBcIi9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoZGF0ZVMpO1xyXG4gICAgICAgIHZhciBkYXRlY29weTtcclxuICAgICAgICB2YXIgcmVkYXRlID0gXCJcIjtcclxuICAgICAgICBwYXJ0ID0gKHBhcnQgPT0gbnVsbCkgPyBcInl5eXktTU0tZGQgSEg6bW06c3NcIiA6IHBhcnQ7XHJcbiAgICAgICAgdmFyIHkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgdmFyIE0gPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgIHZhciBkID0gZGF0ZS5nZXREYXRlKCk7XHJcbiAgICAgICAgdmFyIEggPSBkYXRlLmdldEhvdXJzKCk7XHJcbiAgICAgICAgdmFyIG0gPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgICB2YXIgcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gICAgICAgIHZhciBNTSA9IChNID4gOSkgPyBNIDogXCIwXCIgKyBNO1xyXG4gICAgICAgIHZhciBkZCA9IChkID4gOSkgPyBkIDogXCIwXCIgKyBkO1xyXG4gICAgICAgIHZhciBISCA9IChIID4gOSkgPyBIIDogXCIwXCIgKyBIO1xyXG4gICAgICAgIHZhciBtbSA9IChtID4gOSkgPyBtIDogXCIwXCIgKyBtO1xyXG4gICAgICAgIHZhciBzcyA9IChzID4gOSkgPyBzIDogXCIwXCIgKyBzO1xyXG4gICAgICAgIHJlZGF0ZSA9IHBhcnQucmVwbGFjZShcInl5eXlcIiwgeSkucmVwbGFjZShcIk1NXCIsIE1NKS5yZXBsYWNlKFwiZGRcIiwgZGQpLnJlcGxhY2UoXCJISFwiLCBISCkucmVwbGFjZShcIm1tXCIsIG1tKS5yZXBsYWNlKFwic3NcIiwgc3MpLnJlcGxhY2UoXCJNXCIsIE0pLnJlcGxhY2UoXCJkXCIsIGQpLnJlcGxhY2UoXCJIXCIsIEgpLnJlcGxhY2UoXCJtXCIsIG0pLnJlcGxhY2UoXCJzXCIsIHMpO1xyXG4gICAgICAgIHJldHVybiByZWRhdGU7XHJcbiAgICB9XHJcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvdG9vbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IiwidmFyIGFuc3dlciA9IHJlcXVpcmUoJy4vbW9kdWxlcy9wcm9ibGVtJyk7XHJcbnZhciB0b29sID0gcmVxdWlyZSgnLi9tb2R1bGVzL3Rvb2wnKVxyXG5cclxuZnVuY3Rpb24gbG9hZElmcmFtZSgpe1xyXG4gICAgdmFyIHNyYyA9ICQoXCIjaWZyYW1lX21vbmlcIikuZGF0YShcInNyY1wiKTtcclxuICAgIGlmKCFzcmMpe1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgICQoXCIjaWZyYW1lX21vbmlcIikuYXR0cihcInNyY1wiLHNyYyk7XHJcbiAgICAkKFwiI2lmcmFtZV9tb25pXCIpLnJlbW92ZUF0dHIoXCJkYXRhLXNyY1wiKVxyXG59XHJcbiQoZnVuY3Rpb24oKXtcclxuXHJcbiAgICBqUXVlcnkoXCIja2gtc2xpZGVcIikuc2xpZGUoe1xyXG4gICAgICAgIHRpdENlbGw6IFwiLmhkIHVsXCIsXHJcbiAgICAgICAgbWFpbkNlbGw6IFwiLmJkIHVsXCIsXHJcbiAgICAgICAgZWZmZWN0OiBcImxlZnRMb29wXCIsXHJcbiAgICAgICAgcG5Mb29wOmZhbHNlLFxyXG4gICAgICAgIGVuZEZ1bjpmdW5jdGlvbihpbmRleCx0b3RhbCxjKXtcclxuICAgICAgICAgICAgaWYoaW5kZXggKyAxID09PSB0b3RhbCl7XHJcbiAgICAgICAgICAgICAgICAkKCcudG9tb25pJykuY3NzKFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICQoJy50b21vbmknKS5jc3MoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIG5ldyBhbnN3ZXIoe1xyXG4gICAgICAgIGNhbGxiYWNrOmZ1bmN0aW9uKHRoYXQsdG90YWxTY29yZSxzY29yZUFycil7XHJcblxyXG4gICAgICAgICAgICB2YXIgc2NvcmUxNSA9IHNjb3JlQXJyWzE0XTtcclxuICAgICAgICAgICAgdmFyIHR5cGUgPSAnJztcclxuICAgICAgICAgICAgaWYoc2NvcmUxNSA9PT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0eXBlID0gJ+S/neWuiOWeiyc7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaWYodG90YWxTY29yZTwyMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICfkv53lrojlnosnO1xyXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYodG90YWxTY29yZT49MjAgJiYgdG90YWxTY29yZSA8IDM2KXtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ+iwqOaFjuWeiyc7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZih0b3RhbFNjb3JlPj0zNyAmJiB0b3RhbFNjb3JlIDwgNTMpe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSAn56iz5YGl5Z6LJztcclxuICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRvdGFsU2NvcmU+PTU0ICYmIHRvdGFsU2NvcmUgPCA4Mil7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICfnp6/mnoHlnosnO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICfmv4Dov5vlnosnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgdGhhdC5zaG93TW9kZWwoe1xyXG4gICAgICAgICAgICAgICAgY29udGVudDpcIuS9oOeahOmjjumZqea1i+ivhOe7k+aenDxici8+5LitXCIrdHlwZStcIuiDveWKm1wiLFxyXG4gICAgICAgICAgICAgICAgbGluazonL01vTmlKaWFvWWkvQUd1P3R5cGU9MydcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgXHJcblxyXG5cclxuICAgICAgICB2YXIgJHRoaXMgPSAkKFwiI3RhYl93cmFwX25ld1wiKTtcclxuICAgICAgICBpZighJHRoaXMubGVuZ3RoKXtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdGFic0xpc3QgPSAkKCcudGFiX2xpc3QnLCAkdGhpcyk7XHJcbiAgICAgICAgdmFyIHRhYnNJdGVtID0gJCgnLnRhYl9pdGVtJywgJHRoaXMpO1xyXG4gICAgICAgIHRhYnNMaXN0Lm9uKCdjbGljaycsICdsaScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gJCh0aGlzKS5pbmRleCgpO1xyXG4gICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgdGFic0l0ZW0uZXEoaW5kZXgpLmZhZGVJbigpLmFkZENsYXNzKCdhY3RpdmUnKS5zaWJsaW5ncygpLmhpZGUoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgIGlmKGluZGV4ID09IDIpe1xyXG4gICAgICAgICAgICAgICAgbG9hZElmcmFtZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYoJHRoaXMubGVuZ3RoKXtcclxuICAgICAgICAgICAgdmFyIHR5cGUgPSB0b29sLmdldFF1ZXJ5U3RyaW5nKCd0eXBlJyk7XHJcbiAgICAgICAgICAgIGlmKHR5cGUgJiYgIWlzTmFOKHR5cGUpKXtcclxuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlSW50KHR5cGUpIC0gMTs7XHJcbiAgICAgICAgICAgICAgICB0YWJzTGlzdC5jaGlsZHJlbihcImxpXCIpLmVxKGluZGV4KS5hZGRDbGFzcygnYWN0aXZlJykuc2libGluZ3MoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICB0YWJzSXRlbS5lcShpbmRleCkuYWRkQ2xhc3MoJ2FjdGl2ZScpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgaWYoaW5kZXggPT0gMil7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZElmcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxufSlcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL2FndS5qc1xuLy8gbW9kdWxlIGlkID0gNlxuLy8gbW9kdWxlIGNodW5rcyA9IDYiXSwic291cmNlUm9vdCI6IiJ9"]}