overwatch-api-server
Version:
An Unoffical Overwatch HTTP API
7 lines • 58.3 kB
JavaScript
"use strict";function cov_17v8rvbf8z(){var path="C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\profile.js";var hash="9a85dbdc687ee95205e2e5b86c3f232fbf184221";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\profile.js",statementMap:{"0":{start:{line:3,column:0},end:{line:5,column:3}},"1":{start:{line:6,column:0},end:{line:6,column:30}},"2":{start:{line:8,column:13},end:{line:8,column:53}},"3":{start:{line:10,column:15},end:{line:10,column:57}},"4":{start:{line:12,column:13},end:{line:12,column:31}},"5":{start:{line:14,column:39},end:{line:14,column:95}},"6":{start:{line:16,column:18},end:{line:16,column:19}},"7":{start:{line:19,column:12},end:{line:19,column:75}},"8":{start:{line:20,column:16},end:{line:23,column:3}},"9":{start:{line:24,column:2},end:{line:24,column:66}},"10":{start:{line:29,column:10},end:{line:29,column:51}},"11":{start:{line:32,column:16},end:{line:32,column:57}},"12":{start:{line:34,column:2},end:{line:36,column:3}},"13":{start:{line:35,column:4},end:{line:35,column:52}},"14":{start:{line:38,column:15},end:{line:53,column:3}},"15":{start:{line:55,column:2},end:{line:70,column:3}},"16":{start:{line:56,column:12},end:{line:56,column:14}},"17":{start:{line:57,column:4},end:{line:68,column:7}},"18":{start:{line:58,column:23},end:{line:58,column:82}},"19":{start:{line:59,column:23},end:{line:59,column:83}},"20":{start:{line:60,column:23},end:{line:60,column:75}},"21":{start:{line:61,column:17},end:{line:61,column:72}},"22":{start:{line:62,column:17},end:{line:62,column:88}},"23":{start:{line:63,column:16},end:{line:66,column:7}},"24":{start:{line:67,column:6},end:{line:67,column:20}},"25":{start:{line:69,column:4},end:{line:69,column:21}},"26":{start:{line:72,column:2},end:{line:72,column:32}},"27":{start:{line:77,column:15},end:{line:77,column:32}},"28":{start:{line:78,column:12},end:{line:78,column:14}},"29":{start:{line:79,column:13},end:{line:79,column:15}},"30":{start:{line:80,column:13},end:{line:80,column:15}},"31":{start:{line:81,column:15},end:{line:81,column:17}},"32":{start:{line:82,column:13},end:{line:82,column:15}},"33":{start:{line:84,column:2},end:{line:86,column:3}},"34":{start:{line:85,column:4},end:{line:85,column:67}},"35":{start:{line:88,column:2},end:{line:90,column:3}},"36":{start:{line:89,column:4},end:{line:89,column:73}},"37":{start:{line:92,column:2},end:{line:94,column:3}},"38":{start:{line:93,column:4},end:{line:93,column:75}},"39":{start:{line:96,column:2},end:{line:98,column:3}},"40":{start:{line:97,column:4},end:{line:97,column:64}},"41":{start:{line:100,column:2},end:{line:102,column:3}},"42":{start:{line:101,column:4},end:{line:101,column:66}},"43":{start:{line:104,column:2},end:{line:106,column:3}},"44":{start:{line:105,column:4},end:{line:105,column:66}},"45":{start:{line:108,column:2},end:{line:110,column:3}},"46":{start:{line:109,column:4},end:{line:109,column:70}},"47":{start:{line:112,column:2},end:{line:114,column:3}},"48":{start:{line:113,column:4},end:{line:113,column:72}},"49":{start:{line:116,column:13},end:{line:139,column:3}},"50":{start:{line:140,column:2},end:{line:140,column:30}},"51":{start:{line:144,column:2},end:{line:154,column:5}},"52":{start:{line:149,column:4},end:{line:151,column:5}},"53":{start:{line:150,column:6},end:{line:150,column:27}},"54":{start:{line:153,column:4},end:{line:153,column:45}}},fnMap:{"0":{name:"_interopRequireDefault",decl:{start:{line:14,column:9},end:{line:14,column:31}},loc:{start:{line:14,column:37},end:{line:14,column:97}},line:14},"1":{name:"getHTML",decl:{start:{line:18,column:9},end:{line:18,column:16}},loc:{start:{line:18,column:50},end:{line:25,column:1}},line:18},"2":{name:"parseHTML",decl:{start:{line:28,column:9},end:{line:28,column:18}},loc:{start:{line:28,column:38},end:{line:73,column:1}},line:28},"3":{name:"(anonymous_3)",decl:{start:{line:57,column:28},end:{line:57,column:29}},loc:{start:{line:57,column:47},end:{line:68,column:5}},line:57},"4":{name:"transform",decl:{start:{line:76,column:9},end:{line:76,column:18}},loc:{start:{line:76,column:38},end:{line:141,column:1}},line:76},"5":{name:"_default",decl:{start:{line:143,column:9},end:{line:143,column:17}},loc:{start:{line:143,column:51},end:{line:155,column:1}},line:143},"6":{name:"(anonymous_6)",decl:{start:{line:148,column:5},end:{line:148,column:6}},loc:{start:{line:148,column:29},end:{line:154,column:3}},line:148}},branchMap:{"0":{loc:{start:{line:14,column:46},end:{line:14,column:94}},type:"cond-expr",locations:[{start:{line:14,column:70},end:{line:14,column:73}},{start:{line:14,column:76},end:{line:14,column:94}}],line:14},"1":{loc:{start:{line:14,column:46},end:{line:14,column:67}},type:"binary-expr",locations:[{start:{line:14,column:46},end:{line:14,column:49}},{start:{line:14,column:53},end:{line:14,column:67}}],line:14},"2":{loc:{start:{line:34,column:2},end:{line:36,column:3}},type:"if",locations:[{start:{line:34,column:2},end:{line:36,column:3}},{start:{line:34,column:2},end:{line:36,column:3}}],line:34},"3":{loc:{start:{line:55,column:2},end:{line:70,column:3}},type:"if",locations:[{start:{line:55,column:2},end:{line:70,column:3}},{start:{line:55,column:2},end:{line:70,column:3}}],line:55},"4":{loc:{start:{line:84,column:2},end:{line:86,column:3}},type:"if",locations:[{start:{line:84,column:2},end:{line:86,column:3}},{start:{line:84,column:2},end:{line:86,column:3}}],line:84},"5":{loc:{start:{line:88,column:2},end:{line:90,column:3}},type:"if",locations:[{start:{line:88,column:2},end:{line:90,column:3}},{start:{line:88,column:2},end:{line:90,column:3}}],line:88},"6":{loc:{start:{line:92,column:2},end:{line:94,column:3}},type:"if",locations:[{start:{line:92,column:2},end:{line:94,column:3}},{start:{line:92,column:2},end:{line:94,column:3}}],line:92},"7":{loc:{start:{line:96,column:2},end:{line:98,column:3}},type:"if",locations:[{start:{line:96,column:2},end:{line:98,column:3}},{start:{line:96,column:2},end:{line:98,column:3}}],line:96},"8":{loc:{start:{line:100,column:2},end:{line:102,column:3}},type:"if",locations:[{start:{line:100,column:2},end:{line:102,column:3}},{start:{line:100,column:2},end:{line:102,column:3}}],line:100},"9":{loc:{start:{line:104,column:2},end:{line:106,column:3}},type:"if",locations:[{start:{line:104,column:2},end:{line:106,column:3}},{start:{line:104,column:2},end:{line:106,column:3}}],line:104},"10":{loc:{start:{line:108,column:2},end:{line:110,column:3}},type:"if",locations:[{start:{line:108,column:2},end:{line:110,column:3}},{start:{line:108,column:2},end:{line:110,column:3}}],line:108},"11":{loc:{start:{line:112,column:2},end:{line:114,column:3}},type:"if",locations:[{start:{line:112,column:2},end:{line:114,column:3}},{start:{line:112,column:2},end:{line:114,column:3}}],line:112},"12":{loc:{start:{line:124,column:16},end:{line:124,column:55}},type:"binary-expr",locations:[{start:{line:124,column:16},end:{line:124,column:42}},{start:{line:124,column:46},end:{line:124,column:55}}],line:124},"13":{loc:{start:{line:129,column:14},end:{line:129,column:45}},type:"binary-expr",locations:[{start:{line:129,column:14},end:{line:129,column:40}},{start:{line:129,column:44},end:{line:129,column:45}}],line:129},"14":{loc:{start:{line:149,column:4},end:{line:151,column:5}},type:"if",locations:[{start:{line:149,column:4},end:{line:151,column:5}},{start:{line:149,column:4},end:{line:151,column:5}}],line:149}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0]},inputSourceMap:{version:3,sources:["profile.js"],names:["MAX_RETRIES","getHTML","platform","region","tag","callback","url","options","uri","encodeURI","encoding","parseHTML","results","$","cheerio","load","isFound","text","Error","parsed","user","portrait","attr","title","permission","endorsementImage","quickplayWonEl","next","html","quickplayPlayedEl","quickplayTimePlayedEl","compWonEl","compPlayedEl","compLostEl","compDrawEl","compTimePlayedEl","compRankEls","find","r","each","i","elem","rankImgSrc","roleImgSrc","rankParsed","split","pop","role","rank","replace","obj","icon","ranks","transform","won","lost","draw","played","time","quickplay","trim","competitive","json","username","endorsement","games","parseInt","undefined","win_rate","parseFloat","toFixed","playtime","async","auto","apply","err"],mappings:"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",sourceRoot:"C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\",sourcesContent:["import async from 'async';\nimport cheerio from 'cheerio';\nimport { retryRequest } from './utils';\n\nconst MAX_RETRIES = 3;\n\n// Get HTML from playoverwatch career page.\nfunction getHTML(platform, region, tag, callback) {\n const url = `https://overwatch.blizzard.com/en-us/career/${tag}/`\n\n const options = {\n uri: encodeURI(url),\n encoding: 'utf8'\n }\n return retryRequest(options, MAX_RETRIES, callback);\n}\n\n// Begin html parsing.\nfunction parseHTML(results, callback) {\n const $ = cheerio.load(results.getHTML);\n\n // Check if profile exists.\n const isFound = $('.heading').text() !== 'Page Not Found';\n if (!isFound) {\n return callback(new Error('Profile not found'));\n }\n\n const parsed = {\n user: $('.Profile-player--name').text(),\n portrait: $('.Profile-player--portrait').attr('src'),\n title: $('.Profile-player---title').text(),\n permission: $('.Profile-private---msg').text(),\n endorsementImage: $('.Profile-playerSummary--endorsement').attr('src'),\n quickplayWonEl: $('.stats.quickPlay-view p:contains(\"Games Won\")').next().html(),\n quickplayPlayedEl: $('.stats.quickPlay-view p:contains(\"Games Played\")').next().html(),\n quickplayTimePlayedEl: $('.stats.quickPlay-view p:contains(\"Time Played\")').next().html(),\n compWonEl: $('.stats.competitive-view p:contains(\"Games Won\")').next().html(),\n compPlayedEl: $('.stats.competitive-view p:contains(\"Games Played\")').next().html(),\n compLostEl: $('.stats.competitive-view p:contains(\"Games Lost\")').next().html(),\n compDrawEl: $('.stats.competitive-view p:contains(\"Games Tied\")').next().html(),\n compTimePlayedEl: $('.stats.competitive-view p:contains(\"Time Played\")').next().html(),\n compRankEls: $('.Profile-playerSummary--rankWrapper').find('.Profile-playerSummary--roleWrapper'),\n }\n\n if (parsed.compRankEls) {\n const r = {};\n parsed.compRankEls.each((i, elem) => {\n const rankImgSrc = $(elem).find('img.Profile-playerSummary--rank').attr('src');\n const roleImgSrc = $(elem).find('.Profile-playerSummary--role img').attr('src');\n const rankParsed = rankImgSrc.split('/').pop().split('#')[0].split('-');\n const role = roleImgSrc.split('/').pop().split('#')[0].split('-')[0];\n\n const rank = `${rankParsed[0].replace('Tier', '')} ${rankParsed[1]}`; \n const obj = { rank, icon: rankImgSrc };\n r[role] = obj;\n });\n\n parsed.ranks = r;\n }\n\n return callback(null, parsed);\n}\n\n// Transform the data into a json object we can serve.\nfunction transform(results, callback) {\n const { parseHTML: parsed } = results;\n\n const won = {};\n const lost = {};\n const draw = {};\n const played = {};\n const time = {};\n\n if (parsed.quickplayWonEl !== null) {\n won.quickplay = parsed.quickplayWonEl.trim().replace(/,/g, '');\n }\n\n if (parsed.quickplayPlayedEl !== null) {\n played.quickplay = parsed.quickplayPlayedEl.trim().replace(/,/g, '');\n }\n\n if (parsed.quickplayTimePlayedEl !== null) {\n time.quickplay = parsed.quickplayTimePlayedEl.trim().replace(/,/g, '');\n }\n\n if (parsed.compWonEl !== null) {\n won.competitive = parsed.compWonEl.trim().replace(/,/g, '');\n }\n\n if (parsed.compLostEl !== null) {\n lost.competitive = parsed.compLostEl.trim().replace(/,/g, '');\n }\n\n if (parsed.compDrawEl !== null) {\n draw.competitive = parsed.compDrawEl.trim().replace(/,/g, '');\n }\n\n if (parsed.compPlayedEl !== null) {\n played.competitive = parsed.compPlayedEl.trim().replace(/,/g, '');\n }\n\n if (parsed.compTimePlayedEl !== null) {\n time.competitive = parsed.compTimePlayedEl.trim().replace(/,/g, '');\n }\n\n const json = {\n username: parsed.user,\n portrait: parsed.portrait,\n endorsement: parsed.endorsementImage,\n private: parsed.permission === 'THIS PROFILE IS CURRENTLY PRIVATE',\n games: {\n quickplay: {\n won: parseInt(won.quickplay),\n played: parseInt(played.quickplay) || undefined \n },\n competitive: {\n won: parseInt(won.competitive),\n lost: parseInt(lost.competitive),\n draw: parseInt(draw.competitive) || 0,\n played: parseInt(played.competitive),\n win_rate: parseFloat((parseInt(won.competitive) / (parseInt(played.competitive - parseInt(draw.competitive))) * 100).toFixed(2)),\n },\n },\n playtime: { quickplay: time.quickplay, competitive: time.competitive },\n competitive: parsed.ranks,\n }\n\n return callback(null, json);\n}\n\nexport default function(platform, region, tag, callback) {\n async.auto({\n getHTML: async.apply(getHTML, platform, region, tag),\n parseHTML: ['getHTML', async.apply(parseHTML)],\n transform: ['getHTML', 'parseHTML', async.apply(transform)],\n }, function(err, results) {\n if (err) {\n return callback(err);\n }\n return callback(null, results.transform);\n });\n}"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"9a85dbdc687ee95205e2e5b86c3f232fbf184221"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
cov_17v8rvbf8z=function(){return actualCoverage;};}return actualCoverage;}cov_17v8rvbf8z();cov_17v8rvbf8z().s[0]++;Object.defineProperty(exports,"__esModule",{value:true});cov_17v8rvbf8z().s[1]++;exports["default"]=_default;var _async=(cov_17v8rvbf8z().s[2]++,_interopRequireDefault(require("async")));var _cheerio=(cov_17v8rvbf8z().s[3]++,_interopRequireDefault(require("cheerio")));var _utils=(cov_17v8rvbf8z().s[4]++,require("./utils"));function _interopRequireDefault(obj){cov_17v8rvbf8z().f[0]++;cov_17v8rvbf8z().s[5]++;return(cov_17v8rvbf8z().b[1][0]++,obj)&&(cov_17v8rvbf8z().b[1][1]++,obj.__esModule)?(cov_17v8rvbf8z().b[0][0]++,obj):(cov_17v8rvbf8z().b[0][1]++,{"default":obj});}var MAX_RETRIES=(cov_17v8rvbf8z().s[6]++,3);// Get HTML from playoverwatch career page.
function getHTML(platform,region,tag,callback){cov_17v8rvbf8z().f[1]++;var url=(cov_17v8rvbf8z().s[7]++,"https://overwatch.blizzard.com/en-us/career/".concat(tag,"/"));var options=(cov_17v8rvbf8z().s[8]++,{uri:encodeURI(url),encoding:'utf8'});cov_17v8rvbf8z().s[9]++;return(0,_utils.retryRequest)(options,MAX_RETRIES,callback);}// Begin html parsing.
function parseHTML(results,callback){cov_17v8rvbf8z().f[2]++;var $=(cov_17v8rvbf8z().s[10]++,_cheerio["default"].load(results.getHTML));// Check if profile exists.
var isFound=(cov_17v8rvbf8z().s[11]++,$('.heading').text()!=='Page Not Found');cov_17v8rvbf8z().s[12]++;if(!isFound){cov_17v8rvbf8z().b[2][0]++;cov_17v8rvbf8z().s[13]++;return callback(new Error('Profile not found'));}else{cov_17v8rvbf8z().b[2][1]++;}var parsed=(cov_17v8rvbf8z().s[14]++,{user:$('.Profile-player--name').text(),portrait:$('.Profile-player--portrait').attr('src'),title:$('.Profile-player---title').text(),permission:$('.Profile-private---msg').text(),endorsementImage:$('.Profile-playerSummary--endorsement').attr('src'),quickplayWonEl:$('.stats.quickPlay-view p:contains("Games Won")').next().html(),quickplayPlayedEl:$('.stats.quickPlay-view p:contains("Games Played")').next().html(),quickplayTimePlayedEl:$('.stats.quickPlay-view p:contains("Time Played")').next().html(),compWonEl:$('.stats.competitive-view p:contains("Games Won")').next().html(),compPlayedEl:$('.stats.competitive-view p:contains("Games Played")').next().html(),compLostEl:$('.stats.competitive-view p:contains("Games Lost")').next().html(),compDrawEl:$('.stats.competitive-view p:contains("Games Tied")').next().html(),compTimePlayedEl:$('.stats.competitive-view p:contains("Time Played")').next().html(),compRankEls:$('.Profile-playerSummary--rankWrapper').find('.Profile-playerSummary--roleWrapper')});cov_17v8rvbf8z().s[15]++;if(parsed.compRankEls){cov_17v8rvbf8z().b[3][0]++;var r=(cov_17v8rvbf8z().s[16]++,{});cov_17v8rvbf8z().s[17]++;parsed.compRankEls.each(function(i,elem){cov_17v8rvbf8z().f[3]++;var rankImgSrc=(cov_17v8rvbf8z().s[18]++,$(elem).find('img.Profile-playerSummary--rank').attr('src'));var roleImgSrc=(cov_17v8rvbf8z().s[19]++,$(elem).find('.Profile-playerSummary--role img').attr('src'));var rankParsed=(cov_17v8rvbf8z().s[20]++,rankImgSrc.split('/').pop().split('#')[0].split('-'));var role=(cov_17v8rvbf8z().s[21]++,roleImgSrc.split('/').pop().split('#')[0].split('-')[0]);var rank=(cov_17v8rvbf8z().s[22]++,"".concat(rankParsed[0].replace('Tier','')," ").concat(rankParsed[1]));var obj=(cov_17v8rvbf8z().s[23]++,{rank:rank,icon:rankImgSrc});cov_17v8rvbf8z().s[24]++;r[role]=obj;});cov_17v8rvbf8z().s[25]++;parsed.ranks=r;}else{cov_17v8rvbf8z().b[3][1]++;}cov_17v8rvbf8z().s[26]++;return callback(null,parsed);}// Transform the data into a json object we can serve.
function transform(results,callback){cov_17v8rvbf8z().f[4]++;var parsed=(cov_17v8rvbf8z().s[27]++,results.parseHTML);var won=(cov_17v8rvbf8z().s[28]++,{});var lost=(cov_17v8rvbf8z().s[29]++,{});var draw=(cov_17v8rvbf8z().s[30]++,{});var played=(cov_17v8rvbf8z().s[31]++,{});var time=(cov_17v8rvbf8z().s[32]++,{});cov_17v8rvbf8z().s[33]++;if(parsed.quickplayWonEl!==null){cov_17v8rvbf8z().b[4][0]++;cov_17v8rvbf8z().s[34]++;won.quickplay=parsed.quickplayWonEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[4][1]++;}cov_17v8rvbf8z().s[35]++;if(parsed.quickplayPlayedEl!==null){cov_17v8rvbf8z().b[5][0]++;cov_17v8rvbf8z().s[36]++;played.quickplay=parsed.quickplayPlayedEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[5][1]++;}cov_17v8rvbf8z().s[37]++;if(parsed.quickplayTimePlayedEl!==null){cov_17v8rvbf8z().b[6][0]++;cov_17v8rvbf8z().s[38]++;time.quickplay=parsed.quickplayTimePlayedEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[6][1]++;}cov_17v8rvbf8z().s[39]++;if(parsed.compWonEl!==null){cov_17v8rvbf8z().b[7][0]++;cov_17v8rvbf8z().s[40]++;won.competitive=parsed.compWonEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[7][1]++;}cov_17v8rvbf8z().s[41]++;if(parsed.compLostEl!==null){cov_17v8rvbf8z().b[8][0]++;cov_17v8rvbf8z().s[42]++;lost.competitive=parsed.compLostEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[8][1]++;}cov_17v8rvbf8z().s[43]++;if(parsed.compDrawEl!==null){cov_17v8rvbf8z().b[9][0]++;cov_17v8rvbf8z().s[44]++;draw.competitive=parsed.compDrawEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[9][1]++;}cov_17v8rvbf8z().s[45]++;if(parsed.compPlayedEl!==null){cov_17v8rvbf8z().b[10][0]++;cov_17v8rvbf8z().s[46]++;played.competitive=parsed.compPlayedEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[10][1]++;}cov_17v8rvbf8z().s[47]++;if(parsed.compTimePlayedEl!==null){cov_17v8rvbf8z().b[11][0]++;cov_17v8rvbf8z().s[48]++;time.competitive=parsed.compTimePlayedEl.trim().replace(/,/g,'');}else{cov_17v8rvbf8z().b[11][1]++;}var json=(cov_17v8rvbf8z().s[49]++,{username:parsed.user,portrait:parsed.portrait,endorsement:parsed.endorsementImage,"private":parsed.permission==='THIS PROFILE IS CURRENTLY PRIVATE',games:{quickplay:{won:parseInt(won.quickplay),played:(cov_17v8rvbf8z().b[12][0]++,parseInt(played.quickplay))||(cov_17v8rvbf8z().b[12][1]++,undefined)},competitive:{won:parseInt(won.competitive),lost:parseInt(lost.competitive),draw:(cov_17v8rvbf8z().b[13][0]++,parseInt(draw.competitive))||(cov_17v8rvbf8z().b[13][1]++,0),played:parseInt(played.competitive),win_rate:parseFloat((parseInt(won.competitive)/parseInt(played.competitive-parseInt(draw.competitive))*100).toFixed(2))}},playtime:{quickplay:time.quickplay,competitive:time.competitive},competitive:parsed.ranks});cov_17v8rvbf8z().s[50]++;return callback(null,json);}function _default(platform,region,tag,callback){cov_17v8rvbf8z().f[5]++;cov_17v8rvbf8z().s[51]++;_async["default"].auto({getHTML:_async["default"].apply(getHTML,platform,region,tag),parseHTML:['getHTML',_async["default"].apply(parseHTML)],transform:['getHTML','parseHTML',_async["default"].apply(transform)]},function(err,results){cov_17v8rvbf8z().f[6]++;cov_17v8rvbf8z().s[52]++;if(err){cov_17v8rvbf8z().b[14][0]++;cov_17v8rvbf8z().s[53]++;return callback(err);}else{cov_17v8rvbf8z().b[14][1]++;}cov_17v8rvbf8z().s[54]++;return callback(null,results.transform);});}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2ZpbGUuanMiXSwibmFtZXMiOlsiTUFYX1JFVFJJRVMiLCJnZXRIVE1MIiwicGxhdGZvcm0iLCJyZWdpb24iLCJ0YWciLCJjYWxsYmFjayIsInVybCIsIm9wdGlvbnMiLCJ1cmkiLCJlbmNvZGVVUkkiLCJlbmNvZGluZyIsInBhcnNlSFRNTCIsInJlc3VsdHMiLCIkIiwiY2hlZXJpbyIsImxvYWQiLCJpc0ZvdW5kIiwidGV4dCIsIkVycm9yIiwicGFyc2VkIiwidXNlciIsInBvcnRyYWl0IiwiYXR0ciIsInRpdGxlIiwicGVybWlzc2lvbiIsImVuZG9yc2VtZW50SW1hZ2UiLCJxdWlja3BsYXlXb25FbCIsIm5leHQiLCJodG1sIiwicXVpY2twbGF5UGxheWVkRWwiLCJxdWlja3BsYXlUaW1lUGxheWVkRWwiLCJjb21wV29uRWwiLCJjb21wUGxheWVkRWwiLCJjb21wTG9zdEVsIiwiY29tcERyYXdFbCIsImNvbXBUaW1lUGxheWVkRWwiLCJjb21wUmFua0VscyIsImZpbmQiLCJyIiwiZWFjaCIsImkiLCJlbGVtIiwicmFua0ltZ1NyYyIsInJvbGVJbWdTcmMiLCJyYW5rUGFyc2VkIiwic3BsaXQiLCJwb3AiLCJyb2xlIiwicmFuayIsInJlcGxhY2UiLCJvYmoiLCJpY29uIiwicmFua3MiLCJ0cmFuc2Zvcm0iLCJ3b24iLCJsb3N0IiwiZHJhdyIsInBsYXllZCIsInRpbWUiLCJxdWlja3BsYXkiLCJ0cmltIiwiY29tcGV0aXRpdmUiLCJqc29uIiwidXNlcm5hbWUiLCJlbmRvcnNlbWVudCIsImdhbWVzIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJ3aW5fcmF0ZSIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwicGxheXRpbWUiLCJhc3luYyIsImF1dG8iLCJhcHBseSIsImVyciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsV0FBVyxHQUFHLENBQXBCLEMsQ0FFQTs7QUFDQSxTQUFTQyxPQUFULENBQWlCQyxRQUFqQixFQUEyQkMsTUFBM0IsRUFBbUNDLEdBQW5DLEVBQXdDQyxRQUF4QyxFQUFrRDtBQUNoRCxNQUFNQyxHQUFHLHlEQUFrREYsR0FBbEQsTUFBVDtBQUVBLE1BQU1HLE9BQU8sR0FBRztBQUNkQyxJQUFBQSxHQUFHLEVBQUVDLFNBQVMsQ0FBQ0gsR0FBRCxDQURBO0FBRWRJLElBQUFBLFFBQVEsRUFBRTtBQUZJLEdBQWhCO0FBSUEsU0FBTyx5QkFBYUgsT0FBYixFQUFzQlAsV0FBdEIsRUFBbUNLLFFBQW5DLENBQVA7QUFDRCxDLENBRUQ7OztBQUNBLFNBQVNNLFNBQVQsQ0FBbUJDLE9BQW5CLEVBQTRCUCxRQUE1QixFQUFzQztBQUNwQyxNQUFNUSxDQUFDLEdBQUdDLG9CQUFRQyxJQUFSLENBQWFILE9BQU8sQ0FBQ1gsT0FBckIsQ0FBVixDQURvQyxDQUdwQzs7O0FBQ0EsTUFBTWUsT0FBTyxHQUFHSCxDQUFDLENBQUMsVUFBRCxDQUFELENBQWNJLElBQWQsT0FBeUIsZ0JBQXpDOztBQUNBLE1BQUksQ0FBQ0QsT0FBTCxFQUFjO0FBQ1osV0FBT1gsUUFBUSxDQUFDLElBQUlhLEtBQUosQ0FBVSxtQkFBVixDQUFELENBQWY7QUFDRDs7QUFFRCxNQUFNQyxNQUFNLEdBQUc7QUFDYkMsSUFBQUEsSUFBSSxFQUFFUCxDQUFDLENBQUMsdUJBQUQsQ0FBRCxDQUEyQkksSUFBM0IsRUFETztBQUViSSxJQUFBQSxRQUFRLEVBQUVSLENBQUMsQ0FBQywyQkFBRCxDQUFELENBQStCUyxJQUEvQixDQUFvQyxLQUFwQyxDQUZHO0FBR2JDLElBQUFBLEtBQUssRUFBRVYsQ0FBQyxDQUFDLHlCQUFELENBQUQsQ0FBNkJJLElBQTdCLEVBSE07QUFJYk8sSUFBQUEsVUFBVSxFQUFFWCxDQUFDLENBQUMsd0JBQUQsQ0FBRCxDQUE0QkksSUFBNUIsRUFKQztBQUtiUSxJQUFBQSxnQkFBZ0IsRUFBRVosQ0FBQyxDQUFDLHFDQUFELENBQUQsQ0FBeUNTLElBQXpDLENBQThDLEtBQTlDLENBTEw7QUFNYkksSUFBQUEsY0FBYyxFQUFFYixDQUFDLENBQUMsK0NBQUQsQ0FBRCxDQUFtRGMsSUFBbkQsR0FBMERDLElBQTFELEVBTkg7QUFPYkMsSUFBQUEsaUJBQWlCLEVBQUVoQixDQUFDLENBQUMsa0RBQUQsQ0FBRCxDQUFzRGMsSUFBdEQsR0FBNkRDLElBQTdELEVBUE47QUFRYkUsSUFBQUEscUJBQXFCLEVBQUVqQixDQUFDLENBQUMsaURBQUQsQ0FBRCxDQUFxRGMsSUFBckQsR0FBNERDLElBQTVELEVBUlY7QUFTYkcsSUFBQUEsU0FBUyxFQUFFbEIsQ0FBQyxDQUFDLGlEQUFELENBQUQsQ0FBcURjLElBQXJELEdBQTREQyxJQUE1RCxFQVRFO0FBVWJJLElBQUFBLFlBQVksRUFBRW5CLENBQUMsQ0FBQyxvREFBRCxDQUFELENBQXdEYyxJQUF4RCxHQUErREMsSUFBL0QsRUFWRDtBQVdiSyxJQUFBQSxVQUFVLEVBQUVwQixDQUFDLENBQUMsa0RBQUQsQ0FBRCxDQUFzRGMsSUFBdEQsR0FBNkRDLElBQTdELEVBWEM7QUFZYk0sSUFBQUEsVUFBVSxFQUFFckIsQ0FBQyxDQUFDLGtEQUFELENBQUQsQ0FBc0RjLElBQXRELEdBQTZEQyxJQUE3RCxFQVpDO0FBYWJPLElBQUFBLGdCQUFnQixFQUFFdEIsQ0FBQyxDQUFDLG1EQUFELENBQUQsQ0FBdURjLElBQXZELEdBQThEQyxJQUE5RCxFQWJMO0FBY2JRLElBQUFBLFdBQVcsRUFBRXZCLENBQUMsQ0FBQyxxQ0FBRCxDQUFELENBQXlDd0IsSUFBekMsQ0FBOEMscUNBQTlDO0FBZEEsR0FBZjs7QUFpQkEsTUFBSWxCLE1BQU0sQ0FBQ2lCLFdBQVgsRUFBd0I7QUFDdEIsUUFBTUUsQ0FBQyxHQUFHLEVBQVY7QUFDQW5CLElBQUFBLE1BQU0sQ0FBQ2lCLFdBQVAsQ0FBbUJHLElBQW5CLENBQXdCLFVBQUNDLENBQUQsRUFBSUMsSUFBSixFQUFhO0FBQ25DLFVBQU1DLFVBQVUsR0FBRzdCLENBQUMsQ0FBQzRCLElBQUQsQ0FBRCxDQUFRSixJQUFSLENBQWEsaUNBQWIsRUFBZ0RmLElBQWhELENBQXFELEtBQXJELENBQW5CO0FBQ0EsVUFBTXFCLFVBQVUsR0FBRzlCLENBQUMsQ0FBQzRCLElBQUQsQ0FBRCxDQUFRSixJQUFSLENBQWEsa0NBQWIsRUFBaURmLElBQWpELENBQXNELEtBQXRELENBQW5CO0FBQ0EsVUFBTXNCLFVBQVUsR0FBR0YsVUFBVSxDQUFDRyxLQUFYLENBQWlCLEdBQWpCLEVBQXNCQyxHQUF0QixHQUE0QkQsS0FBNUIsQ0FBa0MsR0FBbEMsRUFBdUMsQ0FBdkMsRUFBMENBLEtBQTFDLENBQWdELEdBQWhELENBQW5CO0FBQ0EsVUFBTUUsSUFBSSxHQUFHSixVQUFVLENBQUNFLEtBQVgsQ0FBaUIsR0FBakIsRUFBc0JDLEdBQXRCLEdBQTRCRCxLQUE1QixDQUFrQyxHQUFsQyxFQUF1QyxDQUF2QyxFQUEwQ0EsS0FBMUMsQ0FBZ0QsR0FBaEQsRUFBcUQsQ0FBckQsQ0FBYjtBQUVBLFVBQU1HLElBQUksYUFBTUosVUFBVSxDQUFDLENBQUQsQ0FBVixDQUFjSyxPQUFkLENBQXNCLE1BQXRCLEVBQThCLEVBQTlCLENBQU4sY0FBMkNMLFVBQVUsQ0FBQyxDQUFELENBQXJELENBQVY7QUFDQSxVQUFNTSxHQUFHLEdBQUc7QUFBRUYsUUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFHLFFBQUFBLElBQUksRUFBRVQ7QUFBZCxPQUFaO0FBQ0FKLE1BQUFBLENBQUMsQ0FBQ1MsSUFBRCxDQUFELEdBQVVHLEdBQVY7QUFDRCxLQVREO0FBV0EvQixJQUFBQSxNQUFNLENBQUNpQyxLQUFQLEdBQWVkLENBQWY7QUFDRDs7QUFFRCxTQUFPakMsUUFBUSxDQUFDLElBQUQsRUFBT2MsTUFBUCxDQUFmO0FBQ0QsQyxDQUVEOzs7QUFDQSxTQUFTa0MsU0FBVCxDQUFtQnpDLE9BQW5CLEVBQTRCUCxRQUE1QixFQUFzQztBQUFBLE1BQ2pCYyxNQURpQixHQUNOUCxPQURNLENBQzVCRCxTQUQ0QjtBQUdwQyxNQUFNMkMsR0FBRyxHQUFHLEVBQVo7QUFDQSxNQUFNQyxJQUFJLEdBQUcsRUFBYjtBQUNBLE1BQU1DLElBQUksR0FBRyxFQUFiO0FBQ0EsTUFBTUMsTUFBTSxHQUFHLEVBQWY7QUFDQSxNQUFNQyxJQUFJLEdBQUcsRUFBYjs7QUFFQSxNQUFJdkMsTUFBTSxDQUFDTyxjQUFQLEtBQTBCLElBQTlCLEVBQW9DO0FBQ2xDNEIsSUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCeEMsTUFBTSxDQUFDTyxjQUFQLENBQXNCa0MsSUFBdEIsR0FBNkJYLE9BQTdCLENBQXFDLElBQXJDLEVBQTJDLEVBQTNDLENBQWhCO0FBQ0Q7O0FBRUQsTUFBSTlCLE1BQU0sQ0FBQ1UsaUJBQVAsS0FBNkIsSUFBakMsRUFBdUM7QUFDckM0QixJQUFBQSxNQUFNLENBQUNFLFNBQVAsR0FBbUJ4QyxNQUFNLENBQUNVLGlCQUFQLENBQXlCK0IsSUFBekIsR0FBZ0NYLE9BQWhDLENBQXdDLElBQXhDLEVBQThDLEVBQTlDLENBQW5CO0FBQ0Q7O0FBRUQsTUFBSTlCLE1BQU0sQ0FBQ1cscUJBQVAsS0FBaUMsSUFBckMsRUFBMkM7QUFDekM0QixJQUFBQSxJQUFJLENBQUNDLFNBQUwsR0FBaUJ4QyxNQUFNLENBQUNXLHFCQUFQLENBQTZCOEIsSUFBN0IsR0FBb0NYLE9BQXBDLENBQTRDLElBQTVDLEVBQWtELEVBQWxELENBQWpCO0FBQ0Q7O0FBRUQsTUFBSTlCLE1BQU0sQ0FBQ1ksU0FBUCxLQUFxQixJQUF6QixFQUErQjtBQUM3QnVCLElBQUFBLEdBQUcsQ0FBQ08sV0FBSixHQUFrQjFDLE1BQU0sQ0FBQ1ksU0FBUCxDQUFpQjZCLElBQWpCLEdBQXdCWCxPQUF4QixDQUFnQyxJQUFoQyxFQUFzQyxFQUF0QyxDQUFsQjtBQUNEOztBQUVELE1BQUk5QixNQUFNLENBQUNjLFVBQVAsS0FBc0IsSUFBMUIsRUFBZ0M7QUFDOUJzQixJQUFBQSxJQUFJLENBQUNNLFdBQUwsR0FBbUIxQyxNQUFNLENBQUNjLFVBQVAsQ0FBa0IyQixJQUFsQixHQUF5QlgsT0FBekIsQ0FBaUMsSUFBakMsRUFBdUMsRUFBdkMsQ0FBbkI7QUFDRDs7QUFFRCxNQUFJOUIsTUFBTSxDQUFDZSxVQUFQLEtBQXNCLElBQTFCLEVBQWdDO0FBQzlCc0IsSUFBQUEsSUFBSSxDQUFDSyxXQUFMLEdBQW1CMUMsTUFBTSxDQUFDZSxVQUFQLENBQWtCMEIsSUFBbEIsR0FBeUJYLE9BQXpCLENBQWlDLElBQWpDLEVBQXVDLEVBQXZDLENBQW5CO0FBQ0Q7O0FBRUQsTUFBSTlCLE1BQU0sQ0FBQ2EsWUFBUCxLQUF3QixJQUE1QixFQUFrQztBQUNoQ3lCLElBQUFBLE1BQU0sQ0FBQ0ksV0FBUCxHQUFxQjFDLE1BQU0sQ0FBQ2EsWUFBUCxDQUFvQjRCLElBQXBCLEdBQTJCWCxPQUEzQixDQUFtQyxJQUFuQyxFQUF5QyxFQUF6QyxDQUFyQjtBQUNEOztBQUVELE1BQUk5QixNQUFNLENBQUNnQixnQkFBUCxLQUE0QixJQUFoQyxFQUFzQztBQUNwQ3VCLElBQUFBLElBQUksQ0FBQ0csV0FBTCxHQUFtQjFDLE1BQU0sQ0FBQ2dCLGdCQUFQLENBQXdCeUIsSUFBeEIsR0FBK0JYLE9BQS9CLENBQXVDLElBQXZDLEVBQTZDLEVBQTdDLENBQW5CO0FBQ0Q7O0FBRUQsTUFBTWEsSUFBSSxHQUFHO0FBQ1hDLElBQUFBLFFBQVEsRUFBRTVDLE1BQU0sQ0FBQ0MsSUFETjtBQUVYQyxJQUFBQSxRQUFRLEVBQUVGLE1BQU0sQ0FBQ0UsUUFGTjtBQUdYMkMsSUFBQUEsV0FBVyxFQUFFN0MsTUFBTSxDQUFDTSxnQkFIVDtBQUlYLGVBQVNOLE1BQU0sQ0FBQ0ssVUFBUCxLQUFzQixtQ0FKcEI7QUFLWHlDLElBQUFBLEtBQUssRUFBRTtBQUNMTixNQUFBQSxTQUFTLEVBQUU7QUFDVEwsUUFBQUEsR0FBRyxFQUFFWSxRQUFRLENBQUNaLEdBQUcsQ0FBQ0ssU0FBTCxDQURKO0FBRVRGLFFBQUFBLE1BQU0sRUFBRVMsUUFBUSxDQUFDVCxNQUFNLENBQUNFLFNBQVIsQ0FBUixJQUE4QlE7QUFGN0IsT0FETjtBQUtMTixNQUFBQSxXQUFXLEVBQUU7QUFDWFAsUUFBQUEsR0FBRyxFQUFFWSxRQUFRLENBQUNaLEdBQUcsQ0FBQ08sV0FBTCxDQURGO0FBRVhOLFFBQUFBLElBQUksRUFBRVcsUUFBUSxDQUFDWCxJQUFJLENBQUNNLFdBQU4sQ0FGSDtBQUdYTCxRQUFBQSxJQUFJLEVBQUVVLFFBQVEsQ0FBQ1YsSUFBSSxDQUFDSyxXQUFOLENBQVIsSUFBOEIsQ0FIekI7QUFJWEosUUFBQUEsTUFBTSxFQUFFUyxRQUFRLENBQUNULE1BQU0sQ0FBQ0ksV0FBUixDQUpMO0FBS1hPLFFBQUFBLFFBQVEsRUFBRUMsVUFBVSxDQUFDLENBQUNILFFBQVEsQ0FBQ1osR0FBRyxDQUFDTyxXQUFMLENBQVIsR0FBNkJLLFFBQVEsQ0FBQ1QsTUFBTSxDQUFDSSxXQUFQLEdBQXFCSyxRQUFRLENBQUNWLElBQUksQ0FBQ0ssV0FBTixDQUE5QixDQUFyQyxHQUEwRixHQUEzRixFQUFnR1MsT0FBaEcsQ0FBd0csQ0FBeEcsQ0FBRDtBQUxUO0FBTFIsS0FMSTtBQWtCWEMsSUFBQUEsUUFBUSxFQUFFO0FBQUVaLE1BQUFBLFNBQVMsRUFBRUQsSUFBSSxDQUFDQyxTQUFsQjtBQUE2QkUsTUFBQUEsV0FBVyxFQUFFSCxJQUFJLENBQUNHO0FBQS9DLEtBbEJDO0FBbUJYQSxJQUFBQSxXQUFXLEVBQUUxQyxNQUFNLENBQUNpQztBQW5CVCxHQUFiO0FBc0JBLFNBQU8vQyxRQUFRLENBQUMsSUFBRCxFQUFPeUQsSUFBUCxDQUFmO0FBQ0Q7O0FBRWMsa0JBQVM1RCxRQUFULEVBQW1CQyxNQUFuQixFQUEyQkMsR0FBM0IsRUFBZ0NDLFFBQWhDLEVBQTBDO0FBQ3ZEbUUsb0JBQU1DLElBQU4sQ0FBVztBQUNUeEUsSUFBQUEsT0FBTyxFQUFFdUUsa0JBQU1FLEtBQU4sQ0FBWXpFLE9BQVosRUFBcUJDLFFBQXJCLEVBQStCQyxNQUEvQixFQUF1Q0MsR0FBdkMsQ0FEQTtBQUVUTyxJQUFBQSxTQUFTLEVBQUUsQ0FBQyxTQUFELEVBQVk2RCxrQkFBTUUsS0FBTixDQUFZL0QsU0FBWixDQUFaLENBRkY7QUFHVDBDLElBQUFBLFNBQVMsRUFBRSxDQUFDLFNBQUQsRUFBWSxXQUFaLEVBQXlCbUIsa0JBQU1FLEtBQU4sQ0FBWXJCLFNBQVosQ0FBekI7QUFIRixHQUFYLEVBSUcsVUFBU3NCLEdBQVQsRUFBYy9ELE9BQWQsRUFBdUI7QUFDeEIsUUFBSStELEdBQUosRUFBUztBQUNQLGFBQU90RSxRQUFRLENBQUNzRSxHQUFELENBQWY7QUFDRDs7QUFDRCxXQUFPdEUsUUFBUSxDQUFDLElBQUQsRUFBT08sT0FBTyxDQUFDeUMsU0FBZixDQUFmO0FBQ0QsR0FURDtBQVVEIiwic291cmNlUm9vdCI6IkM6XFxVc2Vyc1xcQWxmXFxTb3VyY2VcXG92ZXJ3YXRjaC1hcGlcXGFwaVxcc3JjXFxwYXJzZXJcXCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3luYyBmcm9tICdhc3luYyc7XG5pbXBvcnQgY2hlZXJpbyBmcm9tICdjaGVlcmlvJztcbmltcG9ydCB7IHJldHJ5UmVxdWVzdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBNQVhfUkVUUklFUyA9IDM7XG5cbi8vIEdldCBIVE1MIGZyb20gcGxheW92ZXJ3YXRjaCBjYXJlZXIgcGFnZS5cbmZ1bmN0aW9uIGdldEhUTUwocGxhdGZvcm0sIHJlZ2lvbiwgdGFnLCBjYWxsYmFjaykge1xuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9vdmVyd2F0Y2guYmxpenphcmQuY29tL2VuLXVzL2NhcmVlci8ke3RhZ30vYFxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgdXJpOiBlbmNvZGVVUkkodXJsKSxcbiAgICBlbmNvZGluZzogJ3V0ZjgnXG4gIH1cbiAgcmV0dXJuIHJldHJ5UmVxdWVzdChvcHRpb25zLCBNQVhfUkVUUklFUywgY2FsbGJhY2spO1xufVxuXG4vLyBCZWdpbiBodG1sIHBhcnNpbmcuXG5mdW5jdGlvbiBwYXJzZUhUTUwocmVzdWx0cywgY2FsbGJhY2spIHtcbiAgY29uc3QgJCA9IGNoZWVyaW8ubG9hZChyZXN1bHRzLmdldEhUTUwpO1xuXG4gIC8vIENoZWNrIGlmIHByb2ZpbGUgZXhpc3RzLlxuICBjb25zdCBpc0ZvdW5kID0gJCgnLmhlYWRpbmcnKS50ZXh0KCkgIT09ICdQYWdlIE5vdCBGb3VuZCc7XG4gIGlmICghaXNGb3VuZCkge1xuICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ1Byb2ZpbGUgbm90IGZvdW5kJykpO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0ge1xuICAgIHVzZXI6ICQoJy5Qcm9maWxlLXBsYXllci0tbmFtZScpLnRleHQoKSxcbiAgICBwb3J0cmFpdDogJCgnLlByb2ZpbGUtcGxheWVyLS1wb3J0cmFpdCcpLmF0dHIoJ3NyYycpLFxuICAgIHRpdGxlOiAkKCcuUHJvZmlsZS1wbGF5ZXItLS10aXRsZScpLnRleHQoKSxcbiAgICBwZXJtaXNzaW9uOiAkKCcuUHJvZmlsZS1wcml2YXRlLS0tbXNnJykudGV4dCgpLFxuICAgIGVuZG9yc2VtZW50SW1hZ2U6ICQoJy5Qcm9maWxlLXBsYXllclN1bW1hcnktLWVuZG9yc2VtZW50JykuYXR0cignc3JjJyksXG4gICAgcXVpY2twbGF5V29uRWw6ICQoJy5zdGF0cy5xdWlja1BsYXktdmlldyBwOmNvbnRhaW5zKFwiR2FtZXMgV29uXCIpJykubmV4dCgpLmh0bWwoKSxcbiAgICBxdWlja3BsYXlQbGF5ZWRFbDogJCgnLnN0YXRzLnF1aWNrUGxheS12aWV3IHA6Y29udGFpbnMoXCJHYW1lcyBQbGF5ZWRcIiknKS5uZXh0KCkuaHRtbCgpLFxuICAgIHF1aWNrcGxheVRpbWVQbGF5ZWRFbDogJCgnLnN0YXRzLnF1aWNrUGxheS12aWV3IHA6Y29udGFpbnMoXCJUaW1lIFBsYXllZFwiKScpLm5leHQoKS5odG1sKCksXG4gICAgY29tcFdvbkVsOiAkKCcuc3RhdHMuY29tcGV0aXRpdmUtdmlldyBwOmNvbnRhaW5zKFwiR2FtZXMgV29uXCIpJykubmV4dCgpLmh0bWwoKSxcbiAgICBjb21wUGxheWVkRWw6ICQoJy5zdGF0cy5jb21wZXRpdGl2ZS12aWV3IHA6Y29udGFpbnMoXCJHYW1lcyBQbGF5ZWRcIiknKS5uZXh0KCkuaHRtbCgpLFxuICAgIGNvbXBMb3N0RWw6ICQoJy5zdGF0cy5jb21wZXRpdGl2ZS12aWV3IHA6Y29udGFpbnMoXCJHYW1lcyBMb3N0XCIpJykubmV4dCgpLmh0bWwoKSxcbiAgICBjb21wRHJhd0VsOiAkKCcuc3RhdHMuY29tcGV0aXRpdmUtdmlldyBwOmNvbnRhaW5zKFwiR2FtZXMgVGllZFwiKScpLm5leHQoKS5odG1sKCksXG4gICAgY29tcFRpbWVQbGF5ZWRFbDogJCgnLnN0YXRzLmNvbXBldGl0aXZlLXZpZXcgcDpjb250YWlucyhcIlRpbWUgUGxheWVkXCIpJykubmV4dCgpLmh0bWwoKSxcbiAgICBjb21wUmFua0VsczogJCgnLlByb2ZpbGUtcGxheWVyU3VtbWFyeS0tcmFua1dyYXBwZXInKS5maW5kKCcuUHJvZmlsZS1wbGF5ZXJTdW1tYXJ5LS1yb2xlV3JhcHBlcicpLFxuICB9XG5cbiAgaWYgKHBhcnNlZC5jb21wUmFua0Vscykge1xuICAgIGNvbnN0IHIgPSB7fTtcbiAgICBwYXJzZWQuY29tcFJhbmtFbHMuZWFjaCgoaSwgZWxlbSkgPT4ge1xuICAgICAgY29uc3QgcmFua0ltZ1NyYyA9ICQoZWxlbSkuZmluZCgnaW1nLlByb2ZpbGUtcGxheWVyU3VtbWFyeS0tcmFuaycpLmF0dHIoJ3NyYycpO1xuICAgICAgY29uc3Qgcm9sZUltZ1NyYyA9ICQoZWxlbSkuZmluZCgnLlByb2ZpbGUtcGxheWVyU3VtbWFyeS0tcm9sZSBpbWcnKS5hdHRyKCdzcmMnKTtcbiAgICAgIGNvbnN0IHJhbmtQYXJzZWQgPSByYW5rSW1nU3JjLnNwbGl0KCcvJykucG9wKCkuc3BsaXQoJyMnKVswXS5zcGxpdCgnLScpO1xuICAgICAgY29uc3Qgcm9sZSA9IHJvbGVJbWdTcmMuc3BsaXQoJy8nKS5wb3AoKS5zcGxpdCgnIycpWzBdLnNwbGl0KCctJylbMF07XG5cbiAgICAgIGNvbnN0IHJhbmsgPSBgJHtyYW5rUGFyc2VkWzBdLnJlcGxhY2UoJ1RpZXInLCAnJyl9ICR7cmFua1BhcnNlZFsxXX1gOyBcbiAgICAgIGNvbnN0IG9iaiA9IHsgcmFuaywgaWNvbjogcmFua0ltZ1NyYyB9O1xuICAgICAgcltyb2xlXSA9IG9iajtcbiAgICB9KTtcblxuICAgIHBhcnNlZC5yYW5rcyA9IHI7XG4gIH1cblxuICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcGFyc2VkKTtcbn1cblxuLy8gVHJhbnNmb3JtIHRoZSBkYXRhIGludG8gYSBqc29uIG9iamVjdCB3ZSBjYW4gc2VydmUuXG5mdW5jdGlvbiB0cmFuc2Zvcm0ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBwYXJzZUhUTUw6IHBhcnNlZCB9ID0gcmVzdWx0cztcblxuICBjb25zdCB3b24gPSB7fTtcbiAgY29uc3QgbG9zdCA9IHt9O1xuICBjb25zdCBkcmF3ID0ge307XG4gIGNvbnN0IHBsYXllZCA9IHt9O1xuICBjb25zdCB0aW1lID0ge307XG5cbiAgaWYgKHBhcnNlZC5xdWlja3BsYXlXb25FbCAhPT0gbnVsbCkge1xuICAgIHdvbi5xdWlja3BsYXkgPSBwYXJzZWQucXVpY2twbGF5V29uRWwudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG5cbiAgaWYgKHBhcnNlZC5xdWlja3BsYXlQbGF5ZWRFbCAhPT0gbnVsbCkge1xuICAgIHBsYXllZC5xdWlja3BsYXkgPSBwYXJzZWQucXVpY2twbGF5UGxheWVkRWwudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG5cbiAgaWYgKHBhcnNlZC5xdWlja3BsYXlUaW1lUGxheWVkRWwgIT09IG51bGwpIHtcbiAgICB0aW1lLnF1aWNrcGxheSA9IHBhcnNlZC5xdWlja3BsYXlUaW1lUGxheWVkRWwudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG5cbiAgaWYgKHBhcnNlZC5jb21wV29uRWwgIT09IG51bGwpIHtcbiAgICB3b24uY29tcGV0aXRpdmUgPSBwYXJzZWQuY29tcFdvbkVsLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuY29tcExvc3RFbCAhPT0gbnVsbCkge1xuICAgIGxvc3QuY29tcGV0aXRpdmUgPSBwYXJzZWQuY29tcExvc3RFbC50cmltKCkucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cblxuICBpZiAocGFyc2VkLmNvbXBEcmF3RWwgIT09IG51bGwpIHtcbiAgICBkcmF3LmNvbXBldGl0aXZlID0gcGFyc2VkLmNvbXBEcmF3RWwudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG5cbiAgaWYgKHBhcnNlZC5jb21wUGxheWVkRWwgIT09IG51bGwpIHtcbiAgICBwbGF5ZWQuY29tcGV0aXRpdmUgPSBwYXJzZWQuY29tcFBsYXllZEVsLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuY29tcFRpbWVQbGF5ZWRFbCAhPT0gbnVsbCkge1xuICAgIHRpbWUuY29tcGV0aXRpdmUgPSBwYXJzZWQuY29tcFRpbWVQbGF5ZWRFbC50cmltKCkucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cblxuICBjb25zdCBqc29uID0ge1xuICAgIHVzZXJuYW1lOiBwYXJzZWQudXNlcixcbiAgICBwb3J0cmFpdDogcGFyc2VkLnBvcnRyYWl0LFxuICAgIGVuZG9yc2VtZW50OiBwYXJzZWQuZW5kb3JzZW1lbnRJbWFnZSxcbiAgICBwcml2YXRlOiBwYXJzZWQucGVybWlzc2lvbiA9PT0gJ1RISVMgUFJPRklMRSBJUyBDVVJSRU5UTFkgUFJJVkFURScsXG4gICAgZ2FtZXM6IHtcbiAgICAgIHF1aWNrcGxheToge1xuICAgICAgICB3b246IHBhcnNlSW50KHdvbi5xdWlja3BsYXkpLFxuICAgICAgICBwbGF5ZWQ6IHBhcnNlSW50KHBsYXllZC5xdWlja3BsYXkpIHx8IHVuZGVmaW5lZCBcbiAgICAgIH0sXG4gICAgICBjb21wZXRpdGl2ZToge1xuICAgICAgICB3b246IHBhcnNlSW50KHdvbi5jb21wZXRpdGl2ZSksXG4gICAgICAgIGxvc3Q6IHBhcnNlSW50KGxvc3QuY29tcGV0aXRpdmUpLFxuICAgICAgICBkcmF3OiBwYXJzZUludChkcmF3LmNvbXBldGl0aXZlKSB8fCAwLFxuICAgICAgICBwbGF5ZWQ6IHBhcnNlSW50KHBsYXllZC5jb21wZXRpdGl2ZSksXG4gICAgICAgIHdpbl9yYXRlOiBwYXJzZUZsb2F0KChwYXJzZUludCh3b24uY29tcGV0aXRpdmUpIC8gKHBhcnNlSW50KHBsYXllZC5jb21wZXRpdGl2ZSAtIHBhcnNlSW50KGRyYXcuY29tcGV0aXRpdmUpKSkgKiAxMDApLnRvRml4ZWQoMikpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHBsYXl0aW1lOiB7IHF1aWNrcGxheTogdGltZS5xdWlja3BsYXksIGNvbXBldGl0aXZlOiB0aW1lLmNvbXBldGl0aXZlIH0sXG4gICAgY29tcGV0aXRpdmU6IHBhcnNlZC5yYW5rcyxcbiAgfVxuXG4gIHJldHVybiBjYWxsYmFjayhudWxsLCBqc29uKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGxhdGZvcm0sIHJlZ2lvbiwgdGFnLCBjYWxsYmFjaykge1xuICBhc3luYy5hdXRvKHtcbiAgICBnZXRIVE1MOiBhc3luYy5hcHBseShnZXRIVE1MLCBwbGF0Zm9ybSwgcmVnaW9uLCB0YWcpLFxuICAgIHBhcnNlSFRNTDogWydnZXRIVE1MJywgYXN5bmMuYXBwbHkocGFyc2VIVE1MKV0sXG4gICAgdHJhbnNmb3JtOiBbJ2dldEhUTUwnLCAncGFyc2VIVE1MJywgYXN5bmMuYXBwbHkodHJhbnNmb3JtKV0sXG4gIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0cy50cmFuc2Zvcm0pO1xuICB9KTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2ZpbGUuanMiXSwibmFtZXMiOlsiTUFYX1JFVFJJRVMiLCJ1cmwiLCJvcHRpb25zIiwidXJpIiwiZW5jb2RlVVJJIiwiZW5jb2RpbmciLCIkIiwiY2hlZXJpbyIsInJlc3VsdHMiLCJpc0ZvdW5kIiwiY2FsbGJhY2siLCJwYXJzZWQiLCJ1c2VyIiwicG9ydHJhaXQiLCJ0aXRsZSIsInBlcm1pc3Npb24iLCJlbmRvcnNlbWVudEltYWdlIiwicXVpY2twbGF5V29uRWwiLCJxdWlja3BsYXlQbGF5ZWRFbCIsInF1aWNrcGxheVRpbWVQbGF5ZWRFbCIsImNvbXBXb25FbCIsImNvbXBQbGF5ZWRFbCIsImNvbXBMb3N0RWwiLCJjb21wRHJhd0VsIiwiY29tcFRpbWVQbGF5ZWRFbCIsImNvbXBSYW5rRWxzIiwiciIsInJhbmtJbWdTcmMiLCJyb2xlSW1nU3JjIiwicmFua1BhcnNlZCIsInJvbGUiLCJyYW5rIiwib2JqIiwiaWNvbiIsIndvbiIsImxvc3QiLCJkcmF3IiwicGxheWVkIiwidGltZSIsImpzb24iLCJ1c2VybmFtZSIsImVuZG9yc2VtZW50IiwiZ2FtZXMiLCJxdWlja3BsYXkiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsImNvbXBldGl0aXZlIiwid2luX3JhdGUiLCJwYXJzZUZsb2F0IiwicGxheXRpbWUiLCJyYW5rcyIsImFzeW5jIiwiZ2V0SFRNTCIsInBhcnNlSFRNTCIsInRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6Inc1bUJBSU1BO2dPQUpOLEdBQUEsQ0FBQSxNQUFBLDBCQUFBLHNCQUFBLENBQUEsT0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FDQSxHQUFBLENBQUEsUUFBQSwwQkFBQSxzQkFBQSxDQUFBLE9BQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQ0EsR0FBQSxDQUFBLE1BQUEsMEJBQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxDQUFBLEMsd1BBRUEsR0FBTUEsQ0FBQUEsV0FBVywwQkFBakIsQ0FBaUIsQ0FBakIsQ0FF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QUFmLENBQ0QsQ0FFYyxRQUFBLENBQUEsUUFBQSxDQUFBLFFBQUEsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBMEMsa0RBQ3ZEeUMsTUFBQUEsQ0FBQUEsU0FBQUEsQ0FBQUEsQ0FBQUEsSUFBQUEsQ0FBVyxDQUNUQyxPQUFPLENBQUVELE1BQUFBLENBQUFBLFNBQUFBLENBQUFBLENBQUFBLEtBQUFBLENBQUFBLE9BQUFBLENBQUFBLFFBQUFBLENBQUFBLE1BQUFBLENBREEsR0FDQUEsQ0FEQSxDQUVURSxTQUFTLENBQUUsQ0FBQSxTQUFBLENBQVlGLE1BQUFBLENBQUFBLFNBQUFBLENBQUFBLENBQUFBLEtBQUFBLENBRmQsU0FFY0EsQ0FBWixDQUZGLENBR1RHLFNBQVMsQ0FBRSxDQUFBLFNBQUEsQ0FBQSxXQUFBLENBQXlCSCxNQUFBQSxDQUFBQSxTQUFBQSxDQUFBQSxDQUFBQSxLQUFBQSxDQUF6QixTQUF5QkEsQ0FBekIsQ0FIRixDQUFYQSxDQUlHLFNBQUEsR0FBQSxDQUFBLE9BQUEsQ0FBdUIsa0RBQ3hCLEdBQUEsR0FBQSxDQUFTLHNEQUNQLE1BQU96QyxDQUFBQSxRQUFRLENBQWYsR0FBZSxDQUFmLENBQ0QsQ0FGRCxrQ0FEd0IseUJBSXhCLE1BQU9BLENBQUFBLFFBQVEsQ0FBQSxJQUFBLENBQU9GLE9BQU8sQ0FBN0IsU0FBZSxDQUFmLENBUkYyQyxDQUFBQSxFQVVELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IGNoZWVyaW8gZnJvbSAnY2hlZXJpbyc7XG5pbXBvcnQgeyByZXRyeVJlcXVlc3QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTUFYX1JFVFJJRVMgPSAzO1xuXG4vLyBHZXQgSFRNTCBmcm9tIHBsYXlvdmVyd2F0Y2ggY2FyZWVyIHBhZ2UuXG5mdW5jdGlvbiBnZXRIVE1MKHBsYXRmb3JtLCByZWdpb24sIHRhZywgY2FsbGJhY2spIHtcbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vb3ZlcndhdGNoLmJsaXp6YXJkLmNvbS9lbi11cy9jYXJlZXIvJHt0YWd9L2BcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHVyaTogZW5jb2RlVVJJKHVybCksXG4gICAgZW5jb2Rpbmc6ICd1dGY4J1xuICB9XG4gIHJldHVybiByZXRyeVJlcXVlc3Qob3B0aW9ucywgTUFYX1JFVFJJRVMsIGNhbGxiYWNrKTtcbn1cblxuLy8gQmVnaW4gaHRtbCBwYXJzaW5nLlxuZnVuY3Rpb24gcGFyc2VIVE1MKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQocmVzdWx0cy5nZXRIVE1MKTtcblxuICAvLyBDaGVjayBpZiBwcm9maWxlIGV4aXN0cy5cbiAgY29uc3QgaXNGb3VuZCA9ICQoJy5oZWFkaW5nJykudGV4dCgpICE9PSAnUGFnZSBOb3QgRm91bmQnO1xuICBpZiAoIWlzRm91bmQpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdQcm9maWxlIG5vdCBmb3VuZCcpKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICB1c2VyOiAkKCcuUHJvZmlsZS1wbGF5ZXItLW5hbWUnKS50ZXh0KCksXG4gICAgcG9ydHJhaXQ6ICQoJy5Qcm9maWxlLXBsYXllci0tcG9ydHJhaXQnKS5hdHRyKCdzcmMnKSxcbiAgICB0aXRsZTogJCgnLlByb2ZpbGUtcGxheWVyLS0tdGl0bGUnKS50ZXh0KCksXG4gICAgcGVybWlzc2lvbjogJCgnLlByb2ZpbGUtcHJpdmF0ZS0tLW1zZycpLnRleHQoKSxcbiAgICBlbmRvcnNlbWVudEltYWdlOiAkKCcuUHJvZmlsZS1wbGF5ZXJTdW1tYXJ5LS1lbmRvcnNlbWVudCcpLmF0dHIoJ3NyYycpLFxuICAgIHF1aWNrcGxheVdvbkVsOiAkKCcuc3RhdHMucXVpY2tQbGF5LXZpZXcgcDpjb250YWlucyhcIkdhbWVzIFdvblwiKScpLm5leHQoKS5odG1sKCksXG4gICAgcXVpY2twbGF5UGxheWVkRWw6ICQoJy5zdGF0cy5xdWlja1BsYXktdmlldyBwOmNvbnRhaW5zKFwiR2FtZXMgUGxheWVkXCIpJykubmV4dCgpLmh0bWwoKSxcbiAgICBxdWlja3BsYXlUaW1lUGxheWVkRWw6ICQoJy5zdGF0cy5xdWlja1BsYXktdmlldyBwOmNvbnRhaW5zKFwiVGltZSBQbGF5ZWRcIiknKS5uZXh0KCkuaHRtbCgpLFxuICAgIGNvbXBXb25FbDogJCgnLnN0YXRzLmNvbXBldGl0aXZlLXZpZXcgcDpjb250YWlucyhcIkdhbWVzIFdvblwiKScpLm5leHQoKS5odG1sKCksXG4gICAgY29tcFBsYXllZEVsOiAkKCcuc3RhdHMuY29tcGV0aXRpdmUtdmlldyBwOmNvbnRhaW5zKFwiR2FtZXMgUGxheWVkXCIpJykubmV4dCgpLmh0bWwoKSxcbiAgICBjb21wTG9zdEVsOiAkKCcuc3RhdHMuY29tcGV0aXRpdmUtdmlldyBwOmNvbnRhaW5zKFwiR2FtZXMgTG9zdFwiKScpLm5leHQoKS5odG1sKCksXG4gICAgY29tcERyYXdFbDogJCgnLnN0YXRzLmNvbXBldGl0aXZlLXZpZXcgcDpjb250YWlucyhcIkdhbWVzIFRpZWRcIiknKS5uZXh0KCkuaHRtbCgpLFxuICAgIGNvbXBUaW1lUGxheWVkRWw6ICQoJy5zdGF0cy5jb21wZXRpdGl2ZS12aWV3IHA6Y29udGFpbnMoXCJUaW1lIFBsYXllZFwiKScpLm5leHQoKS5odG1sKCksXG4gICAgY29tcFJhbmtFbHM6ICQoJy5Qcm9maWxlLXBsYXllclN1bW1hcnktLXJhbmtXcmFwcGVyJykuZmluZCgnLlByb2ZpbGUtcGxheWVyU3VtbWFyeS0tcm9sZVdyYXBwZXInKSxcbiAgfVxuXG4gIGlmIChwYXJzZWQuY29tcFJhbmtFbHMpIHtcbiAgICBjb25zdCByID0ge307XG4gICAgcGFyc2VkLmNvbXBSYW5rRWxzLmVhY2goKGksIGVsZW0pID0+IHtcbiAgICAgIGNvbnN0IHJhbmtJbWdTcmMgPSAkKGVsZW0pLmZpbmQoJ2ltZy5Qcm9maWxlLXBsYXllclN1bW1hcnktLXJhbmsnKS5hdHRyKCdzcmMnKTtcbiAgICAgIGNvbnN0IHJvbGVJbWdTcmMgPSAkKGVsZW0pLmZpbmQoJy5Qcm9maWxlLXBsYXllclN1bW1hcnktLXJvbGUgaW1nJykuYXR0cignc3JjJyk7XG4gICAgICBjb25zdCByYW5rUGFyc2VkID0gcmFua0ltZ1NyYy5zcGxpdCgnLycpLnBvcCgpLnNwbGl0KCcjJylbMF0uc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IHJvbGUgPSByb2xlSW1nU3JjLnNwbGl0KCcvJykucG9wKCkuc3BsaXQoJyMnKVswXS5zcGxpdCgnLScpWzBdO1xuXG4gICAgICBjb25zdCByYW5rID0gYCR7cmFua1BhcnNlZFswXS5yZXBsYWNlKCdUaWVyJywgJycpfSAke3JhbmtQYXJzZWRbMV19YDsgXG4gICAgICBjb25zdCBvYmogPSB7IHJhbmssIGljb246IHJhbmtJbWdTcmMgfTtcbiAgICAgIHJbcm9sZV0gPSBvYmo7XG4gICAgfSk7XG5cbiAgICBwYXJzZWQucmFua3MgPSByO1xuICB9XG5cbiAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHBhcnNlZCk7XG59XG5cbi8vIFRyYW5zZm9ybSB0aGUgZGF0YSBpbnRvIGEganNvbiBvYmplY3Qgd2UgY2FuIHNlcnZlLlxuZnVuY3Rpb24gdHJhbnNmb3JtKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcGFyc2VIVE1MOiBwYXJzZWQgfSA9IHJlc3VsdHM7XG5cbiAgY29uc3Qgd29uID0ge307XG4gIGNvbnN0IGxvc3QgPSB7fTtcbiAgY29uc3QgZHJhdyA9IHt9O1xuICBjb25zdCBwbGF5ZWQgPSB7fTtcbiAgY29uc3QgdGltZSA9IHt9O1xuXG4gIGlmIChwYXJzZWQucXVpY2twbGF5V29uRWwgIT09IG51bGwpIHtcbiAgICB3b24ucXVpY2twbGF5ID0gcGFyc2VkLnF1aWNrcGxheVdvbkVsLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQucXVpY2twbGF5UGxheWVkRWwgIT09IG51bGwpIHtcbiAgICBwbGF5ZWQucXVpY2twbGF5ID0gcGFyc2VkLnF1aWNrcGxheVBsYXllZEVsLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQucXVpY2twbGF5VGltZVBsYXllZEVsICE9PSBudWxsKSB7XG4gICAgdGltZS5xdWlja3BsYXkgPSBwYXJzZWQucXVpY2twbGF5VGltZVBsYXllZEVsLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuY29tcFdvbkVsICE9PSBudWxsKSB7XG4gICAgd29uLmNvbXBldGl0aXZlID0gcGFyc2VkLmNvbXBXb25FbC50cmltKCkucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cblxuICBpZiAocGFyc2VkLmNvbXBMb3N0RWwgIT09IG51bGwpIHtcbiAgICBsb3N0LmNvbXBldGl0aXZlID0gcGFyc2VkLmNvbXBMb3N0RWwudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG5cbiAgaWYgKHBhcnNlZC5jb21wRHJhd0VsICE9PSBudWxsKSB7XG4gICAgZHJhdy5jb21wZXRpdGl2ZSA9IHBhcnNlZC5jb21wRHJhd0VsLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuY29tcFBsYXllZEVsICE9PSBudWxsKSB7XG4gICAgcGxheWVkLmNvbXBldGl0aXZlID0gcGFyc2VkLmNvbXBQbGF5ZWRFbC50cmltKCkucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cblxuICBpZiAocGFyc2VkLmNvbXBUaW1lUGxheWVkRWwgIT09IG51bGwpIHtcbiAgICB0aW1lLmNvbXBldGl0aXZlID0gcGFyc2VkLmNvbXBUaW1lUGxheWVkRWwudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG5cbiAgY29uc3QganNvbiA9IHtcbiAgICB1c2VybmFtZTogcGFyc2VkLnVzZXIsXG4gICAgcG9ydHJhaXQ6IHBhcnNlZC5wb3J0cmFpdCxcbiAgICBlbmRvcnNlbWVudDogcGFyc2VkLmVuZG9yc2VtZW50SW1hZ2UsXG4gICAgcHJpdmF0ZTogcGFyc2VkLnBlcm1pc3Npb24gPT09ICdUSElTIFBST0ZJTEUgSVMgQ1VSUkVOVExZIFBSSVZBVEUnLFxuICAgIGdhbWVzOiB7XG4gICAgICBxdWlja3BsYXk6IHtcbiAgICAgICAgd29uOiBwYXJzZUludCh3b24ucXVpY2twbGF5KSxcbiAgICAgICAgcGxheWVkOiBwYXJzZUludChwbGF5ZWQucXVpY2twbGF5KSB8fCB1bmRlZmluZWQgXG4gICAgICB9LFxuICAgICAgY29tcGV0aXRpdmU6IHtcbiAgICAgICAgd29uOiBwYXJzZUludCh3b24uY29tcGV0aXRpdmUpLFxuICAgICAgICBsb3N0OiBwYXJzZUludChsb3N0LmNvbXBldGl0aXZlKSxcbiAgICAgICAgZHJhdzogcGFyc2VJbnQoZHJhdy5jb21wZXRpdGl2ZSkgfHwgMCxcbiAgICAgICAgcGxheWVkOiBwYXJzZUludChwbGF5ZWQuY29tcGV0aXRpdmUpLFxuICAgICAgICB3aW5fcmF0ZTogcGFyc2VGbG9hdCgocGFyc2VJbnQod29uLmNvbXBldGl0aXZlKSAvIChwYXJzZUludChwbGF5ZWQuY29tcGV0aXRpdmUgLSBwYXJzZUludChkcmF3LmNvbXBldGl0aXZlKSkpICogMTAwKS50b0ZpeGVkKDIpKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwbGF5dGltZTogeyBxdWlja3BsYXk6IHRpbWUucXVpY2twbGF5LCBjb21wZXRpdGl2ZTogdGltZS5jb21wZXRpdGl2ZSB9LFxuICAgIGNvbXBldGl0aXZlOiBwYXJzZWQucmFua3MsXG4gIH1cblxuICByZXR1cm4gY2FsbGJhY2sobnVsbCwganNvbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBsYXRmb3JtLCByZWdpb24sIHRhZywgY2FsbGJhY2spIHtcbiAgYXN5bmMuYXV0byh7XG4gICAgZ2V0SFRNTDogYXN5bmMuYXBwbHkoZ2V0SFRNTCwgcGxhdGZvcm0sIHJlZ2lvbiwgdGFnKSxcbiAgICBwYXJzZUhUTUw6IFsnZ2V0SFRNTCcsIGFzeW5jLmFwcGx5KHBhcnNlSFRNTCldLFxuICAgIHRyYW5zZm9ybTogWydnZXRIVE1MJywgJ3BhcnNlSFRNTCcsIGFzeW5jLmFwcGx5KHRyYW5zZm9ybSldLFxuICB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHJlc3VsdHMudHJhbnNmb3JtKTtcbiAgfSk7XG59Il0sInNvdXJjZVJvb3QiOiJDOlxcVXNlcnNcXEFsZlxcU291cmNlXFxvdmVyd2F0Y2gtYXBpXFxhcGlcXHNyY1xccGFyc2VyXFwifQ==