aboutsummaryrefslogtreecommitdiffstats
path: root/static/js/script.js
blob: 9db97719b60214dadb0e4d75308147aebe86ee79 (plain) (blame)
1
2
"use strict";function getScript(url,integrity,cross_origin){const script=document.createElement("script");script.type="text/javascript",script.src=url,script.defer=!0,void 0!==integrity&&(script.integrity=integrity),void 0!==cross_origin&&(script.crossOrigin=cross_origin),document.getElementsByTagName("head")[0].appendChild(script)}function setClass(selector,my_class){document.querySelector(selector).className=my_class}function removeClass(selector,my_class){const element=document.querySelector(selector),reg=new RegExp(`(^| )${my_class}($| )`,"g");element.className=element.className.replace(reg," ")}function error_typewriter(){const app=document.getElementById("error"),typewriter=new Typewriter(app,{loop:!1,deleteSpeed:40,typingSpeed:"natural",devMode:!1});document.getElementById("terminal-close").onclick=function(){const app=document.getElementById("win"),current_class=app.getAttribute("class");app.setAttribute("class",`${current_class} uk-animation-scale-up uk-animation-reverse`),typewriter.stop()},typewriter.appendText("Python 3.6.4 (default, Jan  5 2018, 02:35:40)\n").appendText("[GCC 7.2.1 20171224] on darwin\n").appendText('Type "help", "copyright", "credits" or "license" for more information.\n').appendText(">>> ").pauseFor(1e3).typeString("impor requests").deleteChars(9).typeString("t requests\n").appendText(">>> ").pauseFor(750).changeSettings({typingSpeed:"natural"}).typeString(`response = requests.${window._RequestMethod}('https://pythim`).deleteChars(2).typeString("ondiscord.con/").deleteChars(2).typeString(`m${window._Path}')\n`).pauseFor(1e3).appendText(`&lt;Response [${window._Code}]&gt;\n>>> `).typeString("# hmmmm").pauseFor(1e3).deleteChars(7).pauseFor(1e3).typeString("response.text\n").appendText(`${window._ErrorMsg}\n>>> `).start()}setClass("html","prevent-fouc"),document.onreadystatechange=function(){"interactive"===document.readyState&&(removeClass("html","prevent-fouc"),getScript("https://pro.fontawesome.com/releases/v5.1.0/js/all.js","sha384-E5SpgaZcbSJx0Iabb3Jr2AfTRiFnrdOw1mhO19DzzrT9L+wCpDyHUG2q07aQdO6E","anonymous"),getScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"),getScript("https://cdn.jsdelivr.net/npm/flatpickr"))},function(){const startjam=new Date(Date.UTC(2018,2,23)),endjam=new Date(Date.UTC(2018,2,26)),now=Date.now();let goal;if(now+1e3<endjam.getTime()){UIkit.notification({message:'<div class=\'uk-text-center\'>    <span id="countdown-title" class="uk-text-center">        <a href="/info/jams">Code Jam</a> Countdown    </span>    <p class=\'uk-text-large\' id="countdown-remaining">...</p><small style=\'font-size: 0.6em;\'>(Tap/click to dismiss)</small></div>',pos:"bottom-right",timeout:endjam-now});const heading=document.getElementById("countdown-title");now>startjam.getTime()?(heading.innerHTML='Current <a href="/info/jams">code jam</a> ends in...',goal=endjam.getTime()):(heading.innerHTML='Next <a href="/info/jams">code jam</a> starts in...',goal=startjam.getTime());const refreshCountdown=setInterval(()=>{let delta=goal-Date.now();if(delta<=1e3)return clearInterval(refreshCountdown),location.reload();let days=Math.floor(delta/864e5);delta-=864e5*days;let hours=Math.floor(delta/36e5);delta-=36e5*hours;let minutes=Math.floor(delta/6e4);delta-=6e4*minutes;let seconds=Math.floor(delta/1e3);days<10&&(days=`0${days}`),hours<10&&(hours=`0${hours}`),minutes<10&&(minutes=`0${minutes}`),seconds<10&&(seconds=`0${seconds}`);try{document.getElementById("countdown-remaining").innerHTML=`${days}:${hours}:${minutes}:${seconds}`}catch(e){return clearInterval(refreshCountdown)}},500)}}();class JamActions{constructor(url,csrf_token){this.url=url,this.csrf_token=csrf_token}send(action,method,data,callback){data.action=action,$.ajax(this.url,{data:data,dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}send_json(action,method,data,callback){data.action=action,$.ajax(this.url,{data:JSON.stringify(data),dataType:"json",headers:{"X-CSRFToken":this.csrf_token},contentType:"application/json",method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}set_state(jam,state,callback){this.send("state","POST",{jam:jam,state:state},callback)}get_questions(callback){this.send("questions","GET",{},callback)}create_question(data,callback){this.send_json("questions","POST",data,callback)}delete_question(id,callback){this.send("question","DELETE",{id:id},callback)}associate_question(form,question,callback){this.send("associate_question","POST",{form:form,question:question},callback)}disassociate_question(form,question,callback){this.send("disassociate_question","POST",{form:form,question:question},callback)}create_infraction(id,reason,number,callback){this.send("infraction","POST",{participant:id,reason:reason,number:number},callback)}delete_infraction(id,callback){this.send("infraction","DELETE",{id:id},callback)}approve_application(id,callback){this.send("approve_application","POST",{id:id},callback)}unapprove_application(id,callback){this.send("unapprove_application","POST",{id:id},callback)}generate_teams(jam,callback){this.send("generate_teams","POST",{jam:jam},callback)}create_team(jam,callback){this.send("create_team","POST",{jam:jam},callback)}reroll_team(team,callback){this.send("reroll_team","POST",{team:team},callback)}delete_team(team,callback){this.send("team","DELETE",{team:team},callback)}set_team_member(jam,member,team,callback){this.send("set_team_member","POST",{jam:jam,member:member,team:team},callback)}}function revision_diff(revisions){const buttons=document.querySelectorAll("td input"),id_reg=/compare-(before|after)-([\w|-]+)/;function getRevisionId(element){const e=element.id.match(id_reg);return[e[1],e[2]]}function getRevision(id){return revisions.filter(x=>x.id===id)[0]}buttons.forEach(button=>{button.checked=!1,button.onchange=function(){!function(element){const id=getRevisionId(element),rev=getRevision(id[1]);let aft,bef;"after"===id[0]?(document.querySelector(`#compare-before-${id[1]}`).checked=!1,buttons.forEach(e=>{"after"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1)})):(document.querySelector(`#compare-after-${id[1]}`).checked=!1,buttons.forEach(e=>{"before"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1),"after"===getRevisionId(e)[0]&&(getRevision(getRevisionId(e)[1]).date<=rev.date?document.querySelector(`#${e.id}`).setAttribute("disabled",""):document.querySelector(`#${e.id}`).removeAttribute("disabled"))})),buttons.forEach(button=>{const id=getRevisionId(button);button.checked&&"before"===id[0]&&(bef=id[1]),button.checked&&"after"===id[0]&&(aft=id[1])}),document.getElementById("compare-submit").href=`/history/compare/${bef}/${aft}`}(button)}})}function wiki_sidebar(){const sidebar=document.getElementById("wiki-sidebar");document.getElementById("wiki-sidebar-button").onclick=function(){sidebar.classList.contains("uk-visible@s")?sidebar.classList.remove("uk-visible@s"):sidebar.classList.add("uk-visible@s")}}!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.moment=factory()}(this,function(){var hookCallback,some;function hooks(){return hookCallback.apply(null,arguments)}function isArray(input){return input instanceof Array||"[object Array]"===Object.prototype.toString.call(input)}function isObject(input){return null!=input&&"[object Object]"===Object.prototype.toString.call(input)}function isUndefined(input){return void 0===input}function isNumber(input){return"number"==typeof input||"[object Number]"===Object.prototype.toString.call(input)}function isDate(input){return input instanceof Date||"[object Date]"===Object.prototype.toString.call(input)}function map(arr,fn){var i,res=[];for(i=0;i<arr.length;++i)res.push(fn(arr[i],i));return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b)hasOwnProp(b,i)&&(a[i]=b[i]);return hasOwnProp(b,"toString")&&(a.toString=b.toString),hasOwnProp(b,"valueOf")&&(a.valueOf=b.valueOf),a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!0).utc()}function getParsingFlags(m){return null==m._pf&&(m._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),m._pf}function isValid(m){if(null==m._isValid){var flags=getParsingFlags(m),parsedParts=some.call(flags.parsedDateParts,function(i){return null!=i}),isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict&&(isNowValid=isNowValid&&0===flags.charsLeftOver&&0===flags.unusedTokens.length&&void 0===flags.bigHour),null!=Object.isFrozen&&Object.isFrozen(m))return isNowValid;m._isValid=isNowValid}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);return null!=flags?extend(getParsingFlags(m),flags):getParsingFlags(m).userInvalidated=!0,m}some=Array.prototype.some?Array.prototype.some:function(fun){for(var t=Object(this),len=t.length>>>0,i=0;i<len;i++)if(i in t&&fun.call(this,t[i],i,t))return!0;return!1};var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(isUndefined(from._isAMomentObject)||(to._isAMomentObject=from._isAMomentObject),isUndefined(from._i)||(to._i=from._i),isUndefined(from._f)||(to._f=from._f),isUndefined(from._l)||(to._l=from._l),isUndefined(from._strict)||(to._strict=from._strict),isUndefined(from._tzm)||(to._tzm=from._tzm),isUndefined(from._isUTC)||(to._isUTC=from._isUTC),isUndefined(from._offset)||(to._offset=from._offset),isUndefined(from._pf)||(to._pf=getParsingFlags(from)),isUndefined(from._locale)||(to._locale=from._locale),momentProperties.length>0)for(i=0;i<momentProperties.length;i++)isUndefined(val=from[prop=momentProperties[i]])||(to[prop]=val);return to}var updateInProgress=!1;function Moment(config){copyConfig(this,config),this._d=new Date(null!=config._d?config._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===updateInProgress&&(updateInProgress=!0,hooks.updateOffset(this),updateInProgress=!1)}function isMoment(obj){return obj instanceof Moment||null!=obj&&null!=obj._isAMomentObject}function absFloor(number){return number<0?Math.ceil(number)||0:Math.floor(number)}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;return 0!==coercedNumber&&isFinite(coercedNumber)&&(value=absFloor(coercedNumber)),value}function compareArrays(array1,array2,dontConvert){var i,len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0;for(i=0;i<len;i++)(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i]))&&diffs++;return diffs+lengthDiff}function warn(msg){!1===hooks.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+msg)}function deprecate(msg,fn){var firstTime=!0;return extend(function(){if(null!=hooks.deprecationHandler&&hooks.deprecationHandler(null,msg),firstTime){for(var arg,args=[],i=0;i<arguments.length;i++){if(arg="","object"==typeof arguments[i]){for(var key in arg+="\n["+i+"] ",arguments[0])arg+=key+": "+arguments[0][key]+", ";arg=arg.slice(0,-2)}else arg=arguments[i];args.push(arg)}warn(msg+"\nArguments: "+Array.prototype.slice.call(args).join("")+"\n"+(new Error).stack),firstTime=!1}return fn.apply(this,arguments)},fn)}var keys,deprecations={};function deprecateSimple(name,msg){null!=hooks.deprecationHandler&&hooks.deprecationHandler(name,msg),deprecations[name]||(warn(msg),deprecations[name]=!0)}function isFunction(input){return input instanceof Function||"[object Function]"===Object.prototype.toString.call(input)}function mergeConfigs(parentConfig,childConfig){var prop,res=extend({},parentConfig);for(prop in childConfig)hasOwnProp(childConfig,prop)&&(isObject(parentConfig[prop])&&isObject(childConfig[prop])?(res[prop]={},extend(res[prop],parentConfig[prop]),extend(res[prop],childConfig[prop])):null!=childConfig[prop]?res[prop]=childConfig[prop]:delete res[prop]);for(prop in parentConfig)hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])&&(res[prop]=extend({},res[prop]));return res}function Locale(config){null!=config&&this.set(config)}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,keys=Object.keys?Object.keys:function(obj){var i,res=[];for(i in obj)hasOwnProp(obj,i)&&res.push(i);return res};var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return"string"==typeof units?aliases[units]||aliases[units.toLowerCase()]:void 0}function normalizeObjectUnits(inputObject){var normalizedProp,prop,normalizedInput={};for(prop in inputObject)hasOwnProp(inputObject,prop)&&(normalizedProp=normalizeUnits(prop))&&(normalizedInput[normalizedProp]=inputObject[prop]);return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length;return(number>=0?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;"string"==typeof callback&&(func=function(){return this[callback]()}),token&&(formatTokenFunctions[token]=func),padded&&(formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}),ordinal&&(formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)})}function formatMoment(m,format){return m.isValid()?(format=expandFormat(format,m.localeData()),formatFunctions[format]=formatFunctions[format]||function(format){var i,length,input,array=format.match(formattingTokens);for(i=0,length=array.length;i<length;i++)formatTokenFunctions[array[i]]?array[i]=formatTokenFunctions[array[i]]:array[i]=(input=array[i]).match(/\[[\s\S]/)?input.replace(/^\[|\]$/g,""):input.replace(/\\/g,"");return function(mom){var i,output="";for(i=0;i<length;i++)output+=isFunction(array[i])?array[i].call(mom,format):array[i];return output}}(format),formatFunctions[format](m)):m.localeData().invalidDate()}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}for(localFormattingTokens.lastIndex=0;i>=0&&localFormattingTokens.test(format);)format=format.replace(localFormattingTokens,replaceLongDateFormatTokens),localFormattingTokens.lastIndex=0,i-=1;return format}var match1=/\d/,match2=/\d\d/,match3=/\d{3}/,match4=/\d{4}/,match6=/[+-]?\d{6}/,match1to2=/\d\d?/,match3to4=/\d\d\d\d?/,match5to6=/\d\d\d\d\d\d?/,match1to3=/\d{1,3}/,match1to4=/\d{1,4}/,match1to6=/[+-]?\d{1,6}/,matchUnsigned=/\d+/,matchSigned=/[+-]?\d+/,matchOffset=/Z|[+-]\d\d:?\d\d/gi,matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi,matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){return hasOwnProp(regexes,token)?regexes[token](config._strict,config._locale):new RegExp(regexEscape(token.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})))}function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;for("string"==typeof token&&(token=[token]),isNumber(callback)&&(func=function(input,array){array[callback]=toInt(input)}),i=0;i<token.length;i++)tokens[token[i]]=func}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{},callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){null!=input&&hasOwnProp(tokens,token)&&tokens[token](input,config._a,config,token)}var YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,WEEK=7,WEEKDAY=8;function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4==0&&year%100!=0||year%400==0}addFormatToken("Y",0,0,function(){var y=this.year();return y<=9999?""+y:"+"+y}),addFormatToken(0,["YY",2],0,function(){return this.year()%100}),addFormatToken(0,["YYYY",4],0,"year"),addFormatToken(0,["YYYYY",5],0,"year"),addFormatToken(0,["YYYYYY",6,!0],0,"year"),addUnitAlias("year","y"),addUnitPriority("year",1),addRegexToken("Y",matchSigned),addRegexToken("YY",match1to2,match2),addRegexToken("YYYY",match1to4,match4),addRegexToken("YYYYY",match1to6,match6),addRegexToken("YYYYYY",match1to6,match6),addParseToken(["YYYYY","YYYYYY"],YEAR),addParseToken("YYYY",function(input,array){array[YEAR]=2===input.length?hooks.parseTwoDigitYear(input):toInt(input)}),addParseToken("YY",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)}),addParseToken("Y",function(input,array){array[YEAR]=parseInt(input,10)}),hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var indexOf,getSetYear=makeGetSet("FullYear",!0);function makeGetSet(unit,keepTime){return function(value){return null!=value?(set$1(this,unit,value),hooks.updateOffset(this,keepTime),this):get(this,unit)}}function get(mom,unit){return mom.isValid()?mom._d["get"+(mom._isUTC?"UTC":"")+unit]():NaN}function set$1(mom,unit,value){mom.isValid()&&!isNaN(value)&&("FullYear"===unit&&isLeapYear(mom.year())&&1===mom.month()&&29===mom.date()?mom._d["set"+(mom._isUTC?"UTC":"")+unit](value,mom.month(),daysInMonth(value,mom.month())):mom._d["set"+(mom._isUTC?"UTC":"")+unit](value))}function daysInMonth(year,month){if(isNaN(year)||isNaN(month))return NaN;var x,modMonth=(month%(x=12)+x)%x;return year+=(month-modMonth)/12,1===modMonth?isLeapYear(year)?29:28:31-modMonth%7%2}indexOf=Array.prototype.indexOf?Array.prototype.indexOf:function(o){var i;for(i=0;i<this.length;++i)if(this[i]===o)return i;return-1},addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1}),addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)}),addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)}),addUnitAlias("month","M"),addUnitPriority("month",8),addRegexToken("M",match1to2),addRegexToken("MM",match1to2,match2),addRegexToken("MMM",function(isStrict,locale){return locale.monthsShortRegex(isStrict)}),addRegexToken("MMMM",function(isStrict,locale){return locale.monthsRegex(isStrict)}),addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1}),addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);null!=month?array[MONTH]=month:getParsingFlags(config).invalidMonth=input});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function setMonth(mom,value){var dayOfMonth;if(!mom.isValid())return mom;if("string"==typeof value)if(/^\d+$/.test(value))value=toInt(value);else if(!isNumber(value=mom.localeData().monthsParse(value)))return mom;return dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value)),mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth),mom}function getSetMonth(value){return null!=value?(setMonth(this,value),hooks.updateOffset(this,!0),this):get(this,"Month")}var defaultMonthsShortRegex=matchWord;var defaultMonthsRegex=matchWord;function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<12;i++)mom=createUTC([2e3,i]),shortPieces.push(this.monthsShort(mom,"")),longPieces.push(this.months(mom,"")),mixedPieces.push(this.months(mom,"")),mixedPieces.push(this.monthsShort(mom,""));for(shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<12;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]);for(i=0;i<24;i++)mixedPieces[i]=regexEscape(mixedPieces[i]);this._monthsRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i")}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));return y<100&&y>=0&&isFinite(date.getUTCFullYear())&&date.setUTCFullYear(y),date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy;return-((7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7)+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var resYear,resDayOfYear,dayOfYear=1+7*(week-1)+(7+weekday-dow)%7+firstWeekOffset(year,dow,doy);return dayOfYear<=0?resDayOfYear=daysInYear(resYear=year-1)+dayOfYear:dayOfYear>daysInYear(year)?(resYear=year+1,resDayOfYear=dayOfYear-daysInYear(year)):(resYear=year,resDayOfYear=dayOfYear),{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var resWeek,resYear,weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1;return week<1?resWeek=week+weeksInYear(resYear=mom.year()-1,dow,doy):week>weeksInYear(mom.year(),dow,doy)?(resWeek=week-weeksInYear(mom.year(),dow,doy),resYear=mom.year()+1):(resYear=mom.year(),resWeek=week),{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",match1to2),addRegexToken("ww",match1to2,match2),addRegexToken("W",match1to2),addRegexToken("WW",match1to2,match2),addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)}),addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)}),addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)}),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",match1to2),addRegexToken("e",match1to2),addRegexToken("E",match1to2),addRegexToken("dd",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)}),addRegexToken("ddd",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)}),addRegexToken("dddd",function(isStrict,locale){return locale.weekdaysRegex(isStrict)}),addWeekParseToken(["dd","ddd","dddd"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);null!=weekday?week.d=weekday:getParsingFlags(config).invalidWeekday=input}),addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var defaultWeekdaysRegex=matchWord;var defaultWeekdaysShortRegex=matchWord;var defaultWeekdaysMinRegex=matchWord;function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,minp,shortp,longp,minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<7;i++)mom=createUTC([2e3,1]).day(i),minp=this.weekdaysMin(mom,""),shortp=this.weekdaysShort(mom,""),longp=this.weekdays(mom,""),minPieces.push(minp),shortPieces.push(shortp),longPieces.push(longp),mixedPieces.push(minp),mixedPieces.push(shortp),mixedPieces.push(longp);for(minPieces.sort(cmpLenRev),shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<7;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]),mixedPieces[i]=regexEscape(mixedPieces[i]);this._weekdaysRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+minPieces.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}function matchMeridiem(isStrict,locale){return locale._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,function(){return this.hours()||24}),addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)}),addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)}),addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",match1to2),addRegexToken("h",match1to2),addRegexToken("k",match1to2),addRegexToken("HH",match1to2,match2),addRegexToken("hh",match1to2,match2),addRegexToken("kk",match1to2,match2),addRegexToken("hmm",match3to4),addRegexToken("hmmss",match5to6),addRegexToken("Hmm",match3to4),addRegexToken("Hmmss",match5to6),addParseToken(["H","HH"],HOUR),addParseToken(["k","kk"],function(input,array,config){var kInput=toInt(input);array[HOUR]=24===kInput?0:kInput}),addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input),config._meridiem=input}),addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input),getParsingFlags(config).bigHour=!0}),addParseToken("hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos)),getParsingFlags(config).bigHour=!0}),addParseToken("hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2)),getParsingFlags(config).bigHour=!0}),addParseToken("Hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos))}),addParseToken("Hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2))});var globalLocale,getSetHour=makeGetSet("Hours",!0),baseConfig={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:{dow:0,doy:6},weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:/[ap]\.?m?\.?/i},locales={},localeFamilies={};function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function loadLocale(name){var oldLocale=null;if(!locales[name]&&"undefined"!=typeof module&&module&&module.exports)try{oldLocale=globalLocale._abbr,require("./locale/"+name),getSetGlobalLocale(oldLocale)}catch(e){}return locales[name]}function getSetGlobalLocale(key,values){var data;return key&&((data=isUndefined(values)?getLocale(key):defineLocale(key,values))?globalLocale=data:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+key+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(name,config){if(null!==config){var locale,parentConfig=baseConfig;if(config.abbr=name,null!=locales[name])deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),parentConfig=locales[name]._config;else if(null!=config.parentLocale)if(null!=locales[config.parentLocale])parentConfig=locales[config.parentLocale]._config;else{if(null==(locale=loadLocale(config.parentLocale)))return localeFamilies[config.parentLocale]||(localeFamilies[config.parentLocale]=[]),localeFamilies[config.parentLocale].push({name:name,config:config}),null;parentConfig=locale._config}return locales[name]=new Locale(mergeConfigs(parentConfig,config)),localeFamilies[name]&&localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)}),getSetGlobalLocale(name),locales[name]}return delete locales[name],null}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr&&(key=key._locale._abbr),!key)return globalLocale;if(!isArray(key)){if(locale=loadLocale(key))return locale;key=[key]}return function(names){for(var j,next,locale,split,i=0;i<names.length;){for(j=(split=normalizeLocale(names[i]).split("-")).length,next=(next=normalizeLocale(names[i+1]))?next.split("-"):null;j>0;){if(locale=loadLocale(split.slice(0,j).join("-")))return locale;if(next&&next.length>=j&&compareArrays(split,next,!0)>=j-1)break;j--}i++}return globalLocale}(key)}function checkOverflow(m){var overflow,a=m._a;return a&&-2===getParsingFlags(m).overflow&&(overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||24===a[HOUR]&&(0!==a[MINUTE]||0!==a[SECOND]||0!==a[MILLISECOND])?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)&&(overflow=DATE),getParsingFlags(m)._overflowWeeks&&-1===overflow&&(overflow=WEEK),getParsingFlags(m)._overflowWeekday&&-1===overflow&&(overflow=WEEKDAY),getParsingFlags(m).overflow=overflow),m}function defaults(a,b,c){return null!=a?a:null!=b?b:c}function configFromArray(config){var i,date,currentDate,expectedWeekday,yearToUse,input=[];if(!config._d){for(currentDate=function(config){var nowValue=new Date(hooks.now());return config._useUTC?[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]:[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}(config),config._w&&null==config._a[DATE]&&null==config._a[MONTH]&&function(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;if(null!=(w=config._w).GG||null!=w.W||null!=w.E)dow=1,doy=4,weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year),week=defaults(w.W,1),((weekday=defaults(w.E,1))<1||weekday>7)&&(weekdayOverflow=!0);else{dow=config._locale._week.dow,doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year),week=defaults(w.w,curWeek.week),null!=w.d?((weekday=w.d)<0||weekday>6)&&(weekdayOverflow=!0):null!=w.e?(weekday=w.e+dow,(w.e<0||w.e>6)&&(weekdayOverflow=!0)):weekday=dow}week<1||week>weeksInYear(weekYear,dow,doy)?getParsingFlags(config)._overflowWeeks=!0:null!=weekdayOverflow?getParsingFlags(config)._overflowWeekday=!0:(temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),config._a[YEAR]=temp.year,config._dayOfYear=temp.dayOfYear)}(config),null!=config._dayOfYear&&(yearToUse=defaults(config._a[YEAR],currentDate[YEAR]),(config._dayOfYear>daysInYear(yearToUse)||0===config._dayOfYear)&&(getParsingFlags(config)._overflowDayOfYear=!0),date=createUTCDate(yearToUse,0,config._dayOfYear),config._a[MONTH]=date.getUTCMonth(),config._a[DATE]=date.getUTCDate()),i=0;i<3&&null==config._a[i];++i)config._a[i]=input[i]=currentDate[i];for(;i<7;i++)config._a[i]=input[i]=null==config._a[i]?2===i?1:0:config._a[i];24===config._a[HOUR]&&0===config._a[MINUTE]&&0===config._a[SECOND]&&0===config._a[MILLISECOND]&&(config._nextDay=!0,config._a[HOUR]=0),config._d=(config._useUTC?createUTCDate:function(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);return y<100&&y>=0&&isFinite(date.getFullYear())&&date.setFullYear(y),date}).apply(null,input),expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay(),null!=config._tzm&&config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),config._nextDay&&(config._a[HOUR]=24),config._w&&void 0!==config._w.d&&config._w.d!==expectedWeekday&&(getParsingFlags(config).weekdayMismatch=!0)}}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,allowTime,dateFormat,timeFormat,tzFormat,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string);if(match){for(getParsingFlags(config).iso=!0,i=0,l=isoDates.length;i<l;i++)if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0],allowTime=!1!==isoDates[i][2];break}if(null==dateFormat)return void(config._isValid=!1);if(match[3]){for(i=0,l=isoTimes.length;i<l;i++)if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||" ")+isoTimes[i][0];break}if(null==timeFormat)return void(config._isValid=!1)}if(!allowTime&&null!=timeFormat)return void(config._isValid=!1);if(match[4]){if(!tzRegex.exec(match[4]))return void(config._isValid=!1);tzFormat="Z"}config._f=dateFormat+(timeFormat||"")+(tzFormat||""),configFromStringAndFormat(config)}else config._isValid=!1}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[function(yearStr){var year=parseInt(yearStr,10);if(year<=49)return 2e3+year;if(year<=999)return 1900+year;return year}(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];return secondStr&&result.push(parseInt(secondStr,10)),result}var obsOffsets={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromRFC2822(config){var match=rfc2822.exec(config._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!function(weekdayStr,parsedInput,config){return!weekdayStr||defaultLocaleWeekdaysShort.indexOf(weekdayStr)===new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay()||(getParsingFlags(config).weekdayMismatch=!0,config._isValid=!1,!1)}(match[1],parsedArray,config))return;config._a=parsedArray,config._tzm=function(obsOffset,militaryOffset,numOffset){if(obsOffset)return obsOffsets[obsOffset];if(militaryOffset)return 0;var hm=parseInt(numOffset,10),m=hm%100;return(hm-m)/100*60+m}(match[8],match[9],match[10]),config._d=createUTCDate.apply(null,config._a),config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),getParsingFlags(config).rfc2822=!0}else config._isValid=!1}function configFromStringAndFormat(config){if(config._f!==hooks.ISO_8601)if(config._f!==hooks.RFC_2822){config._a=[],getParsingFlags(config).empty=!0;var i,parsedInput,tokens,token,skipped,string=""+config._i,stringLength=string.length,totalParsedInputLength=0;for(tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[],i=0;i<tokens.length;i++)token=tokens[i],(parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0])&&((skipped=string.substr(0,string.indexOf(parsedInput))).length>0&&getParsingFlags(config).unusedInput.push(skipped),string=string.slice(string.indexOf(parsedInput)+parsedInput.length),totalParsedInputLength+=parsedInput.length),formatTokenFunctions[token]?(parsedInput?getParsingFlags(config).empty=!1:getParsingFlags(config).unusedTokens.push(token),addTimeToArrayFromToken(token,parsedInput,config)):config._strict&&!parsedInput&&getParsingFlags(config).unusedTokens.push(token);getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength,string.length>0&&getParsingFlags(config).unusedInput.push(string),config._a[HOUR]<=12&&!0===getParsingFlags(config).bigHour&&config._a[HOUR]>0&&(getParsingFlags(config).bigHour=void 0),getParsingFlags(config).parsedDateParts=config._a.slice(0),getParsingFlags(config).meridiem=config._meridiem,config._a[HOUR]=function(locale,hour,meridiem){var isPm;if(null==meridiem)return hour;return null!=locale.meridiemHour?locale.meridiemHour(hour,meridiem):null!=locale.isPM?((isPm=locale.isPM(meridiem))&&hour<12&&(hour+=12),isPm||12!==hour||(hour=0),hour):hour}(config._locale,config._a[HOUR],config._meridiem),configFromArray(config),checkOverflow(config)}else configFromRFC2822(config);else configFromISO(config)}function prepareConfig(config){var input=config._i,format=config._f;return config._locale=config._locale||getLocale(config._l),null===input||void 0===format&&""===input?createInvalid({nullInput:!0}):("string"==typeof input&&(config._i=input=config._locale.preparse(input)),isMoment(input)?new Moment(checkOverflow(input)):(isDate(input)?config._d=input:isArray(format)?function(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(0===config._f.length)return getParsingFlags(config).invalidFormat=!0,void(config._d=new Date(NaN));for(i=0;i<config._f.length;i++)currentScore=0,tempConfig=copyConfig({},config),null!=config._useUTC&&(tempConfig._useUTC=config._useUTC),tempConfig._f=config._f[i],configFromStringAndFormat(tempConfig),isValid(tempConfig)&&(currentScore+=getParsingFlags(tempConfig).charsLeftOver,currentScore+=10*getParsingFlags(tempConfig).unusedTokens.length,getParsingFlags(tempConfig).score=currentScore,(null==scoreToBeat||currentScore<scoreToBeat)&&(scoreToBeat=currentScore,bestMoment=tempConfig));extend(config,bestMoment||tempConfig)}(config):format?configFromStringAndFormat(config):function(config){var input=config._i;isUndefined(input)?config._d=new Date(hooks.now()):isDate(input)?config._d=new Date(input.valueOf()):"string"==typeof input?function(config){var matched=aspNetJsonRegex.exec(config._i);null===matched?(configFromISO(config),!1===config._isValid&&(delete config._isValid,configFromRFC2822(config),!1===config._isValid&&(delete config._isValid,hooks.createFromInputFallback(config)))):config._d=new Date(+matched[1])}(config):isArray(input)?(config._a=map(input.slice(0),function(obj){return parseInt(obj,10)}),configFromArray(config)):isObject(input)?function(config){if(!config._d){var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)}),configFromArray(config)}}(config):isNumber(input)?config._d=new Date(input):hooks.createFromInputFallback(config)}(config),isValid(config)||(config._d=null),config))}function createLocalOrUTC(input,format,locale,strict,isUTC){var res,c={};return!0!==locale&&!1!==locale||(strict=locale,locale=void 0),(isObject(input)&&function(obj){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(obj).length;var k;for(k in obj)if(obj.hasOwnProperty(k))return!1;return!0}(input)||isArray(input)&&0===input.length)&&(input=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=isUTC,c._l=locale,c._i=input,c._f=format,c._strict=strict,(res=new Moment(checkOverflow(prepareConfig(c))))._nextDay&&(res.add(1,"d"),res._nextDay=void 0),res}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!1)}hooks.createFromInputFallback=deprecate("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))}),hooks.ISO_8601=function(){},hooks.RFC_2822=function(){};var prototypeMin=deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other<this?this:other:createInvalid()}),prototypeMax=deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other>this?this:other:createInvalid()});function pickBy(fn,moments){var res,i;if(1===moments.length&&isArray(moments[0])&&(moments=moments[0]),!moments.length)return createLocal();for(res=moments[0],i=1;i<moments.length;++i)moments[i].isValid()&&!moments[i][fn](res)||(res=moments[i]);return res}var ordering=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=function(m){for(var key in m)if(-1===indexOf.call(ordering,key)||null!=m[key]&&isNaN(m[key]))return!1;for(var unitHasDecimal=!1,i=0;i<ordering.length;++i)if(m[ordering[i]]){if(unitHasDecimal)return!1;parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])&&(unitHasDecimal=!0)}return!0}(normalizedInput),this._milliseconds=+milliseconds+1e3*seconds+6e4*minutes+1e3*hours*60*60,this._days=+days+7*weeks,this._months=+months+3*quarters+12*years,this._data={},this._locale=getLocale(),this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){return number<0?-1*Math.round(-1*number):Math.round(number)}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset(),sign="+";return offset<0&&(offset=-offset,sign="-"),sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":"),offset("ZZ",""),addRegexToken("Z",matchShortOffset),addRegexToken("ZZ",matchShortOffset),addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=!0,config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||"").match(matcher);if(null===matches)return null;var parts=((matches[matches.length-1]||[])+"").match(chunkOffset)||["-",0,0],minutes=60*parts[1]+toInt(parts[2]);return 0===minutes?0:"+"===parts[0]?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;return model._isUTC?(res=model.clone(),diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf(),res._d.setTime(res._d.valueOf()+diff),hooks.updateOffset(res,!1),res):createLocal(input).local()}function getDateOffset(m){return 15*-Math.round(m._d.getTimezoneOffset()/15)}function isUtc(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}hooks.updateOffset=function(){};var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var sign,ret,diffRes,duration=input,match=null;return isDuration(input)?duration={ms:input._milliseconds,d:input._days,M:input._months}:isNumber(input)?(duration={},key?duration[key]=input:duration.milliseconds=input):(match=aspNetRegex.exec(input))?(sign="-"===match[1]?-1:1,duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(1e3*match[MILLISECOND]))*sign}):(match=isoRegex.exec(input))?(sign="-"===match[1]?-1:(match[1],1),duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}):null==duration?duration={}:"object"==typeof duration&&("from"in duration||"to"in duration)&&(diffRes=function(base,other){var res;if(!base.isValid()||!other.isValid())return{milliseconds:0,months:0};other=cloneWithOffset(other,base),base.isBefore(other)?res=positiveMomentsDifference(base,other):((res=positiveMomentsDifference(other,base)).milliseconds=-res.milliseconds,res.months=-res.months);return res}(createLocal(duration.from),createLocal(duration.to)),(duration={}).ms=diffRes.milliseconds,duration.M=diffRes.months),ret=new Duration(duration),isDuration(input)&&hasOwnProp(input,"_locale")&&(ret._locale=input._locale),ret}function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};return res.months=other.month()-base.month()+12*(other.year()-base.year()),base.clone().add(res.months,"M").isAfter(other)&&--res.months,res.milliseconds=+other-+base.clone().add(res.months,"M"),res}function createAdder(direction,name){return function(val,period){var tmp;return null===period||isNaN(+period)||(deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),tmp=val,val=period,period=tmp),addSubtract(this,createDuration(val="string"==typeof val?+val:val,period),direction),this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);mom.isValid()&&(updateOffset=null==updateOffset||updateOffset,months&&setMonth(mom,get(mom,"Month")+months*isAdding),days&&set$1(mom,"Date",get(mom,"Date")+days*isAdding),milliseconds&&mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding),updateOffset&&hooks.updateOffset(mom,days||months))}createDuration.fn=Duration.prototype,createDuration.invalid=function(){return createDuration(NaN)};var add=createAdder(1,"add"),subtract=createAdder(-1,"subtract");function monthDiff(a,b){var wholeMonthDiff=12*(b.year()-a.year())+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months");return-(wholeMonthDiff+(b-anchor<0?(b-anchor)/(anchor-a.clone().add(wholeMonthDiff-1,"months")):(b-anchor)/(a.clone().add(wholeMonthDiff+1,"months")-anchor)))||0}function locale(key){var newLocaleData;return void 0===key?this._locale._abbr:(null!=(newLocaleData=getLocale(key))&&(this._locale=newLocaleData),this)}hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",hooks.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){return void 0===key?this.localeData():this.locale(key)});function localeData(){return this._locale}function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;return null==input?weekOfYear(this,dow,doy).year:(week>(weeksTarget=weeksInYear(input,dow,doy))&&(week=weeksTarget),function(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);return this.year(date.getUTCFullYear()),this.month(date.getUTCMonth()),this.date(date.getUTCDate()),this}.call(this,input,week,weekday,dow,doy))}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100}),addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100}),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",matchSigned),addRegexToken("g",matchSigned),addRegexToken("GG",match1to2,match2),addRegexToken("gg",match1to2,match2),addRegexToken("GGGG",match1to4,match4),addRegexToken("gggg",match1to4,match4),addRegexToken("GGGGG",match1to6,match6),addRegexToken("ggggg",match1to6,match6),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)}),addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)}),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",match1),addParseToken("Q",function(input,array){array[MONTH]=3*(toInt(input)-1)}),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",match1to2),addRegexToken("DD",match1to2,match2),addRegexToken("Do",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient}),addParseToken(["D","DD"],DATE),addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",match1to3),addRegexToken("DDDD",match3),addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)}),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",match1to2),addRegexToken("mm",match1to2,match2),addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",match1to2),addRegexToken("ss",match1to2,match2),addParseToken(["s","ss"],SECOND);var token,getSetSecond=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)}),addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,function(){return 10*this.millisecond()}),addFormatToken(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),addFormatToken(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),addFormatToken(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),addFormatToken(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),addFormatToken(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",match1to3,match1),addRegexToken("SS",match1to3,match2),addRegexToken("SSS",match1to3,match3),token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(input,array){array[MILLISECOND]=toInt(1e3*("0."+input))}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);var getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var proto=Moment.prototype;function preParsePostFormat(string){return string}proto.add=add,proto.calendar=function(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf("day"),format=hooks.calendarFormat(this,sod)||"sameElse",output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))},proto.clone=function(){return new Moment(this)},proto.diff=function(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid())return NaN;if(!(that=cloneWithOffset(input,this)).isValid())return NaN;switch(zoneDelta=6e4*(that.utcOffset()-this.utcOffset()),units=normalizeUnits(units)){case"year":output=monthDiff(this,that)/12;break;case"month":output=monthDiff(this,that);break;case"quarter":output=monthDiff(this,that)/3;break;case"second":output=(this-that)/1e3;break;case"minute":output=(this-that)/6e4;break;case"hour":output=(this-that)/36e5;break;case"day":output=(this-that-zoneDelta)/864e5;break;case"week":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)},proto.endOf=function(units){return void 0===(units=normalizeUnits(units))||"millisecond"===units?this:("date"===units&&(units="day"),this.startOf(units).add(1,"isoWeek"===units?"week":units).subtract(1,"ms"))},proto.format=function(inputString){inputString||(inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var output=formatMoment(this,inputString);return this.localeData().postformat(output)},proto.from=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.fromNow=function(withoutSuffix){return this.from(createLocal(),withoutSuffix)},proto.to=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.toNow=function(withoutSuffix){return this.to(createLocal(),withoutSuffix)},proto.get=function(units){return isFunction(this[units=normalizeUnits(units)])?this[units]():this},proto.invalidAt=function(){return getParsingFlags(this).overflow},proto.isAfter=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()>localInput.valueOf():localInput.valueOf()<this.clone().startOf(units).valueOf())},proto.isBefore=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()<localInput.valueOf():this.clone().endOf(units).valueOf()<localInput.valueOf())},proto.isBetween=function(from,to,units,inclusivity){return("("===(inclusivity=inclusivity||"()")[0]?this.isAfter(from,units):!this.isBefore(from,units))&&(")"===inclusivity[1]?this.isBefore(to,units):!this.isAfter(to,units))},proto.isSame=function(input,units){var inputMs,localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(units||"millisecond"))?this.valueOf()===localInput.valueOf():(inputMs=localInput.valueOf(),this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()))},proto.isSameOrAfter=function(input,units){return this.isSame(input,units)||this.isAfter(input,units)},proto.isSameOrBefore=function(input,units){return this.isSame(input,units)||this.isBefore(input,units)},proto.isValid=function(){return isValid(this)},proto.lang=lang,proto.locale=locale,proto.localeData=localeData,proto.max=prototypeMax,proto.min=prototypeMin,proto.parsingFlags=function(){return extend({},getParsingFlags(this))},proto.set=function(units,value){if("object"==typeof units)for(var prioritized=function(unitsObj){var units=[];for(var u in unitsObj)units.push({unit:u,priority:priorities[u]});return units.sort(function(a,b){return a.priority-b.priority}),units}(units=normalizeObjectUnits(units)),i=0;i<prioritized.length;i++)this[prioritized[i].unit](units[prioritized[i].unit]);else if(isFunction(this[units=normalizeUnits(units)]))return this[units](value);return this},proto.startOf=function(units){switch(units=normalizeUnits(units)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===units&&this.weekday(0),"isoWeek"===units&&this.isoWeekday(1),"quarter"===units&&this.month(3*Math.floor(this.month()/3)),this},proto.subtract=subtract,proto.toArray=function(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]},proto.toObject=function(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}},proto.toDate=function(){return new Date(this.valueOf())},proto.toISOString=function(keepOffset){if(!this.isValid())return null;var utc=!0!==keepOffset,m=utc?this.clone().utc():this;return m.year()<0||m.year()>9999?formatMoment(m,utc?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?utc?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(m,"Z")):formatMoment(m,utc?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},proto.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var func="moment",zone="";this.isLocal()||(func=0===this.utcOffset()?"moment.utc":"moment.parseZone",zone="Z");var prefix="["+func+'("]',year=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",suffix=zone+'[")]';return this.format(prefix+year+"-MM-DD[T]HH:mm:ss.SSS"+suffix)},proto.toJSON=function(){return this.isValid()?this.toISOString():null},proto.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},proto.unix=function(){return Math.floor(this.valueOf()/1e3)},proto.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},proto.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},proto.year=getSetYear,proto.isLeapYear=function(){return isLeapYear(this.year())},proto.weekYear=function(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},proto.isoWeekYear=function(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)},proto.quarter=proto.quarters=function(input){return null==input?Math.ceil((this.month()+1)/3):this.month(3*(input-1)+this.month()%3)},proto.month=getSetMonth,proto.daysInMonth=function(){return daysInMonth(this.year(),this.month())},proto.week=proto.weeks=function(input){var week=this.localeData().week(this);return null==input?week:this.add(7*(input-week),"d")},proto.isoWeek=proto.isoWeeks=function(input){var week=weekOfYear(this,1,4).week;return null==input?week:this.add(7*(input-week),"d")},proto.weeksInYear=function(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},proto.isoWeeksInYear=function(){return weeksInYear(this.year(),1,4)},proto.date=getSetDayOfMonth,proto.day=proto.days=function(input){if(!this.isValid())return null!=input?this:NaN;var day=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=input?(input=function(input,locale){return"string"!=typeof input?input:isNaN(input)?"number"==typeof(input=locale.weekdaysParse(input))?input:null:parseInt(input,10)}(input,this.localeData()),this.add(input-day,"d")):day},proto.weekday=function(input){if(!this.isValid())return null!=input?this:NaN;var weekday=(this.day()+7-this.localeData()._week.dow)%7;return null==input?weekday:this.add(input-weekday,"d")},proto.isoWeekday=function(input){if(!this.isValid())return null!=input?this:NaN;if(null!=input){var weekday=function(input,locale){return"string"==typeof input?locale.weekdaysParse(input)%7||7:isNaN(input)?null:input}(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}return this.day()||7},proto.dayOfYear=function(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==input?dayOfYear:this.add(input-dayOfYear,"d")},proto.hour=proto.hours=getSetHour,proto.minute=proto.minutes=getSetMinute,proto.second=proto.seconds=getSetSecond,proto.millisecond=proto.milliseconds=getSetMillisecond,proto.utcOffset=function(input,keepLocalTime,keepMinutes){var localAdjust,offset=this._offset||0;if(!this.isValid())return null!=input?this:NaN;if(null!=input){if("string"==typeof input){if(null===(input=offsetFromString(matchShortOffset,input)))return this}else Math.abs(input)<16&&!keepMinutes&&(input*=60);return!this._isUTC&&keepLocalTime&&(localAdjust=getDateOffset(this)),this._offset=input,this._isUTC=!0,null!=localAdjust&&this.add(localAdjust,"m"),offset!==input&&(!keepLocalTime||this._changeInProgress?addSubtract(this,createDuration(input-offset,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,hooks.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?offset:getDateOffset(this)},proto.utc=function(keepLocalTime){return this.utcOffset(0,keepLocalTime)},proto.local=function(keepLocalTime){return this._isUTC&&(this.utcOffset(0,keepLocalTime),this._isUTC=!1,keepLocalTime&&this.subtract(getDateOffset(this),"m")),this},proto.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var tZone=offsetFromString(matchOffset,this._i);null!=tZone?this.utcOffset(tZone):this.utcOffset(0,!0)}return this},proto.hasAlignedHourOffset=function(input){return!!this.isValid()&&(input=input?createLocal(input).utcOffset():0,(this.utcOffset()-input)%60==0)},proto.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},proto.isLocal=function(){return!!this.isValid()&&!this._isUTC},proto.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},proto.isUtc=isUtc,proto.isUTC=isUtc,proto.zoneAbbr=function(){return this._isUTC?"UTC":""},proto.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth),proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear),proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(input,keepLocalTime){return null!=input?("string"!=typeof input&&(input=-input),this.utcOffset(input,keepLocalTime),this):-this.utcOffset()}),proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var c={};if(copyConfig(c,this),(c=prepareConfig(c))._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var proto$1=Locale.prototype;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)&&(index=format,format=void 0),format=format||"",null!=index)return get$1(format,index,field,"month");var i,out=[];for(i=0;i<12;i++)out[i]=get$1(format,i,field,"month");return out}function listWeekdaysImpl(localeSorted,format,index,field){"boolean"==typeof localeSorted?(isNumber(format)&&(index=format,format=void 0),format=format||""):(index=format=localeSorted,localeSorted=!1,isNumber(format)&&(index=format,format=void 0),format=format||"");var i,locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(null!=index)return get$1(format,(index+shift)%7,field,"day");var out=[];for(i=0;i<7;i++)out[i]=get$1(format,(i+shift)%7,field,"day");return out}proto$1.calendar=function(key,mom,now){var output=this._calendar[key]||this._calendar.sameElse;return isFunction(output)?output.call(mom,now):output},proto$1.longDateFormat=function(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];return format||!formatUpper?format:(this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)}),this._longDateFormat[key])},proto$1.invalidDate=function(){return this._invalidDate},proto$1.ordinal=function(number){return this._ordinal.replace("%d",number)},proto$1.preparse=preParsePostFormat,proto$1.postformat=preParsePostFormat,proto$1.relativeTime=function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},proto$1.pastFuture=function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return isFunction(format)?format(output):format.replace(/%s/i,output)},proto$1.set=function(config){var prop,i;for(i in config)isFunction(prop=config[i])?this[i]=prop:this["_"+i]=prop;this._config=config,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},proto$1.months=function(m,format){return m?isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?"format":"standalone"][m.month()]:isArray(this._months)?this._months:this._months.standalone},proto$1.monthsShort=function(m,format){return m?isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?"format":"standalone"][m.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},proto$1.monthsParse=function(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact)return function(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)mom=createUTC([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(mom,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(mom,"").toLocaleLowerCase();return strict?"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null}.call(this,monthName,format,strict);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(mom=createUTC([2e3,i]),strict&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")),strict||this._monthsParse[i]||(regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,""),this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"MMMM"===format&&this._longMonthsParse[i].test(monthName))return i;if(strict&&"MMM"===format&&this._shortMonthsParse[i].test(monthName))return i;if(!strict&&this._monthsParse[i].test(monthName))return i}},proto$1.monthsRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=defaultMonthsRegex),this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex)},proto$1.monthsShortRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=defaultMonthsShortRegex),this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex)},proto$1.week=function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},proto$1.firstDayOfYear=function(){return this._week.doy},proto$1.firstDayOfWeek=function(){return this._week.dow},proto$1.weekdays=function(m,format){return m?isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?"format":"standalone"][m.day()]:isArray(this._weekdays)?this._weekdays:this._weekdays.standalone},proto$1.weekdaysMin=function(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin},proto$1.weekdaysShort=function(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort},proto$1.weekdaysParse=function(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact)return function(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)mom=createUTC([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(mom,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(mom,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(mom,"").toLocaleLowerCase();return strict?"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null}.call(this,weekdayName,format,strict);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(mom=createUTC([2e3,1]).day(i),strict&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(mom,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(mom,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(mom,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,""),this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"dddd"===format&&this._fullWeekdaysParse[i].test(weekdayName))return i;if(strict&&"ddd"===format&&this._shortWeekdaysParse[i].test(weekdayName))return i;if(strict&&"dd"===format&&this._minWeekdaysParse[i].test(weekdayName))return i;if(!strict&&this._weekdaysParse[i].test(weekdayName))return i}},proto$1.weekdaysRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex)},proto$1.weekdaysShortRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},proto$1.weekdaysMinRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},proto$1.isPM=function(input){return"p"===(input+"").toLowerCase().charAt(0)},proto$1.meridiem=function(hours,minutes,isLower){return hours>11?isLower?"pm":"PM":isLower?"am":"AM"},getSetGlobalLocale("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10;return number+(1===toInt(number%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);return duration._milliseconds+=direction*other._milliseconds,duration._days+=direction*other._days,duration._months+=direction*other._months,duration._bubble()}function absCeil(number){return number<0?Math.floor(number):Math.ceil(number)}function daysToMonths(days){return 4800*days/146097}function monthsToDays(months){return 146097*months/4800}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asYears=makeAs("y");function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");var round=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var minutes,hours,seconds=abs$1(this._milliseconds)/1e3,days=abs$1(this._days),months=abs$1(this._months);hours=absFloor((minutes=absFloor(seconds/60))/60),seconds%=60,minutes%=60;var Y=absFloor(months/12),M=months%=12,D=days,h=hours,m=minutes,s=seconds?seconds.toFixed(3).replace(/\.?0+$/,""):"",total=this.asSeconds();if(!total)return"P0D";var totalSign=total<0?"-":"",ymSign=sign(this._months)!==sign(total)?"-":"",daysSign=sign(this._days)!==sign(total)?"-":"",hmsSign=sign(this._milliseconds)!==sign(total)?"-":"";return totalSign+"P"+(Y?ymSign+Y+"Y":"")+(M?ymSign+M+"M":"")+(D?daysSign+D+"D":"")+(h||m||s?"T":"")+(h?hmsSign+h+"H":"")+(m?hmsSign+m+"M":"")+(s?hmsSign+s+"S":"")}var proto$2=Duration.prototype;return proto$2.isValid=function(){return this._isValid},proto$2.abs=function(){var data=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),data.milliseconds=mathAbs(data.milliseconds),data.seconds=mathAbs(data.seconds),data.minutes=mathAbs(data.minutes),data.hours=mathAbs(data.hours),data.months=mathAbs(data.months),data.years=mathAbs(data.years),this},proto$2.add=function(input,value){return addSubtract$1(this,input,value,1)},proto$2.subtract=function(input,value){return addSubtract$1(this,input,value,-1)},proto$2.as=function(units){if(!this.isValid())return NaN;var days,months,milliseconds=this._milliseconds;if("month"===(units=normalizeUnits(units))||"year"===units)return days=this._days+milliseconds/864e5,months=this._months+daysToMonths(days),"month"===units?months:months/12;switch(days=this._days+Math.round(monthsToDays(this._months)),units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return 24*days+milliseconds/36e5;case"minute":return 1440*days+milliseconds/6e4;case"second":return 86400*days+milliseconds/1e3;case"millisecond":return Math.floor(864e5*days)+milliseconds;default:throw new Error("Unknown unit "+units)}},proto$2.asMilliseconds=asMilliseconds,proto$2.asSeconds=asSeconds,proto$2.asMinutes=asMinutes,proto$2.asHours=asHours,proto$2.asDays=asDays,proto$2.asWeeks=asWeeks,proto$2.asMonths=asMonths,proto$2.asYears=asYears,proto$2.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},proto$2._bubble=function(){var seconds,minutes,hours,years,monthsFromDays,milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data;return milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0||(milliseconds+=864e5*absCeil(monthsToDays(months)+days),days=0,months=0),data.milliseconds=milliseconds%1e3,seconds=absFloor(milliseconds/1e3),data.seconds=seconds%60,minutes=absFloor(seconds/60),data.minutes=minutes%60,hours=absFloor(minutes/60),data.hours=hours%24,months+=monthsFromDays=absFloor(daysToMonths(days+=absFloor(hours/24))),days-=absCeil(monthsToDays(monthsFromDays)),years=absFloor(months/12),months%=12,data.days=days,data.months=months,data.years=years,this},proto$2.clone=function(){return createDuration(this)},proto$2.get=function(units){return units=normalizeUnits(units),this.isValid()?this[units+"s"]():NaN},proto$2.milliseconds=milliseconds,proto$2.seconds=seconds,proto$2.minutes=minutes,proto$2.hours=hours,proto$2.days=days,proto$2.weeks=function(){return absFloor(this.days()/7)},proto$2.months=months,proto$2.years=years,proto$2.humanize=function(withSuffix){if(!this.isValid())return this.localeData().invalidDate();var locale=this.localeData(),output=function(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as("s")),minutes=round(duration.as("m")),hours=round(duration.as("h")),days=round(duration.as("d")),months=round(duration.as("M")),years=round(duration.as("y")),a=seconds<=thresholds.ss&&["s",seconds]||seconds<thresholds.s&&["ss",seconds]||minutes<=1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours<=1&&["h"]||hours<thresholds.h&&["hh",hours]||days<=1&&["d"]||days<thresholds.d&&["dd",days]||months<=1&&["M"]||months<thresholds.M&&["MM",months]||years<=1&&["y"]||["yy",years];return a[2]=withoutSuffix,a[3]=+posNegDuration>0,a[4]=locale,function(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}.apply(null,a)}(this,!withSuffix,locale);return withSuffix&&(output=locale.pastFuture(+this,output)),locale.postformat(output)},proto$2.toISOString=toISOString$1,proto$2.toString=toISOString$1,proto$2.toJSON=toISOString$1,proto$2.locale=locale,proto$2.localeData=localeData,proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),proto$2.lang=lang,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",matchSigned),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",function(input,array,config){config._d=new Date(1e3*parseFloat(input,10))}),addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))}),hooks.version="2.22.2",hookCallback=createLocal,hooks.fn=proto,hooks.min=function(){return pickBy("isBefore",[].slice.call(arguments,0))},hooks.max=function(){return pickBy("isAfter",[].slice.call(arguments,0))},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function(input){return createLocal(1e3*input)},hooks.months=function(format,index){return listMonthsImpl(format,index,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdays")},hooks.parseZone=function(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function(format,index){return listMonthsImpl(format,index,"monthsShort")},hooks.weekdaysMin=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function(name,config){if(null!=config){var locale,tmpLocale,parentConfig=baseConfig;null!=(tmpLocale=loadLocale(name))&&(parentConfig=tmpLocale._config),(locale=new Locale(config=mergeConfigs(parentConfig,config))).parentLocale=locales[name],locales[name]=locale,getSetGlobalLocale(name)}else null!=locales[name]&&(null!=locales[name].parentLocale?locales[name]=locales[name].parentLocale:null!=locales[name]&&delete locales[name]);return locales[name]},hooks.locales=function(){return keys(locales)},hooks.weekdaysShort=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function(roundingFunction){return void 0===roundingFunction?round:"function"==typeof roundingFunction&&(round=roundingFunction,!0)},hooks.relativeTimeThreshold=function(threshold,limit){return void 0!==thresholds[threshold]&&(void 0===limit?thresholds[threshold]:(thresholds[threshold]=limit,"s"===threshold&&(thresholds.ss=limit-1),!0))},hooks.calendarFormat=function(myMoment,now){var diff=myMoment.diff(now,"days",!0);return diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse"},hooks.prototype=proto,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},hooks}),function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(root,factory){"function"==typeof define&&define.amd?define(["moment"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("moment")):factory(root.moment)}(this,function(moment){var cachedGuess,zones={},links={},names={},guesses={},momentVersion=moment.version.split("."),major=+momentVersion[0],minor=+momentVersion[1];function charCodeToInt(charCode){return charCode>96?charCode-87:charCode>64?charCode-29:charCode-48}function unpackBase60(string){var i=0,parts=string.split("."),whole=parts[0],fractional=parts[1]||"",multiplier=1,out=0,sign=1;for(45===string.charCodeAt(0)&&(i=1,sign=-1);i<whole.length;i++)out=60*out+charCodeToInt(whole.charCodeAt(i));for(i=0;i<fractional.length;i++)multiplier/=60,out+=charCodeToInt(fractional.charCodeAt(i))*multiplier;return out*sign}function arrayToInt(array){for(var i=0;i<array.length;i++)array[i]=unpackBase60(array[i])}function mapIndices(source,indices){var i,out=[];for(i=0;i<indices.length;i++)out[i]=source[indices[i]];return out}function unpack(string){var data=string.split("|"),offsets=data[2].split(" "),indices=data[3].split(""),untils=data[4].split(" ");return arrayToInt(offsets),arrayToInt(indices),arrayToInt(untils),function(array,length){for(var i=0;i<length;i++)array[i]=Math.round((array[i-1]||0)+6e4*array[i]);array[length-1]=1/0}(untils,indices.length),{name:data[0],abbrs:mapIndices(data[1].split(" "),indices),offsets:mapIndices(offsets,indices),untils:untils,population:0|data[5]}}function Zone(packedString){packedString&&this._set(unpack(packedString))}function OffsetAt(at){var timeString=at.toTimeString(),abbr=timeString.match(/\([a-z ]+\)/i);"GMT"===(abbr=abbr&&abbr[0]?(abbr=abbr[0].match(/[A-Z]/g))?abbr.join(""):void 0:(abbr=timeString.match(/[A-Z]{3,5}/g))?abbr[0]:void 0)&&(abbr=void 0),this.at=+at,this.abbr=abbr,this.offset=at.getTimezoneOffset()}function ZoneScore(zone){this.zone=zone,this.offsetScore=0,this.abbrScore=0}function findChange(low,high){for(var mid,diff;diff=6e4*((high.at-low.at)/12e4|0);)(mid=new OffsetAt(new Date(low.at+diff))).offset===low.offset?low=mid:high=mid;return low}function sortZoneScores(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function addToGuesses(name,offsets){var i,offset;for(arrayToInt(offsets),i=0;i<offsets.length;i++)offset=offsets[i],guesses[offset]=guesses[offset]||{},guesses[offset][name]=!0}function guessesForUserOffsets(offsets){var i,j,guessesOffset,offsetsLength=offsets.length,filteredGuesses={},out=[];for(i=0;i<offsetsLength;i++)for(j in guessesOffset=guesses[offsets[i].offset]||{})guessesOffset.hasOwnProperty(j)&&(filteredGuesses[j]=!0);for(i in filteredGuesses)filteredGuesses.hasOwnProperty(i)&&out.push(names[i]);return out}function rebuildGuess(){try{var intlName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(intlName&&intlName.length>3){var name=names[normalizeName(intlName)];if(name)return name;logError("Moment Timezone found "+intlName+" from the Intl api, but did not have that data loaded.")}}catch(e){}var zoneScore,i,j,offsets=function(){var change,next,i,startYear=(new Date).getFullYear()-2,last=new OffsetAt(new Date(startYear,0,1)),offsets=[last];for(i=1;i<48;i++)(next=new OffsetAt(new Date(startYear,i,1))).offset!==last.offset&&(change=findChange(last,next),offsets.push(change),offsets.push(new OffsetAt(new Date(change.at+6e4)))),last=next;for(i=0;i<4;i++)offsets.push(new OffsetAt(new Date(startYear+i,0,1))),offsets.push(new OffsetAt(new Date(startYear+i,6,1)));return offsets}(),offsetsLength=offsets.length,guesses=guessesForUserOffsets(offsets),zoneScores=[];for(i=0;i<guesses.length;i++){for(zoneScore=new ZoneScore(getZone(guesses[i]),offsetsLength),j=0;j<offsetsLength;j++)zoneScore.scoreOffsetAt(offsets[j]);zoneScores.push(zoneScore)}return zoneScores.sort(sortZoneScores),zoneScores.length>0?zoneScores[0].zone.name:void 0}function normalizeName(name){return(name||"").toLowerCase().replace(/\//g,"_")}function addZone(packed){var i,name,split,normalized;for("string"==typeof packed&&(packed=[packed]),i=0;i<packed.length;i++)normalized=normalizeName(name=(split=packed[i].split("|"))[0]),zones[normalized]=packed[i],names[normalized]=name,addToGuesses(normalized,split[2].split(" "))}function getZone(name,caller){name=normalizeName(name);var link,zone=zones[name];return zone instanceof Zone?zone:"string"==typeof zone?(zone=new Zone(zone),zones[name]=zone,zone):links[name]&&caller!==getZone&&(link=getZone(links[name],getZone))?((zone=zones[name]=new Zone)._set(link),zone.name=names[name],zone):null}function addLink(aliases){var i,alias,normal0,normal1;for("string"==typeof aliases&&(aliases=[aliases]),i=0;i<aliases.length;i++)normal0=normalizeName((alias=aliases[i].split("|"))[0]),normal1=normalizeName(alias[1]),links[normal0]=normal1,names[normal0]=alias[0],links[normal1]=normal0,names[normal1]=alias[1]}function loadData(data){addZone(data.zones),addLink(data.links),tz.dataVersion=data.version}function needsOffset(m){var isUnixTimestamp="X"===m._f||"x"===m._f;return!(!m._a||void 0!==m._tzm||isUnixTimestamp)}function logError(message){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(message)}function tz(input){var args=Array.prototype.slice.call(arguments,0,-1),name=arguments[arguments.length-1],zone=getZone(name),out=moment.utc.apply(null,args);return zone&&!moment.isMoment(input)&&needsOffset(out)&&out.add(zone.parse(out),"minutes"),out.tz(name),out}(major<2||2===major&&minor<6)&&logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+moment.version+". See momentjs.com"),Zone.prototype={_set:function(unpacked){this.name=unpacked.name,this.abbrs=unpacked.abbrs,this.untils=unpacked.untils,this.offsets=unpacked.offsets,this.population=unpacked.population},_index:function(timestamp){var i,target=+timestamp,untils=this.untils;for(i=0;i<untils.length;i++)if(target<untils[i])return i},parse:function(timestamp){var offset,offsetNext,offsetPrev,i,target=+timestamp,offsets=this.offsets,untils=this.untils,max=untils.length-1;for(i=0;i<max;i++)if(offset=offsets[i],offsetNext=offsets[i+1],offsetPrev=offsets[i?i-1:i],offset<offsetNext&&tz.moveAmbiguousForward?offset=offsetNext:offset>offsetPrev&&tz.moveInvalidForward&&(offset=offsetPrev),target<untils[i]-6e4*offset)return offsets[i];return offsets[max]},abbr:function(mom){return this.abbrs[this._index(mom)]},offset:function(mom){return logError("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(mom)]},utcOffset:function(mom){return this.offsets[this._index(mom)]}},ZoneScore.prototype.scoreOffsetAt=function(offsetAt){this.offsetScore+=Math.abs(this.zone.utcOffset(offsetAt.at)-offsetAt.offset),this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g,"")!==offsetAt.abbr&&this.abbrScore++},tz.version="0.5.17",tz.dataVersion="",tz._zones=zones,tz._links=links,tz._names=names,tz.add=addZone,tz.link=addLink,tz.load=loadData,tz.zone=getZone,tz.zoneExists=function zoneExists(name){return zoneExists.didShowError||(zoneExists.didShowError=!0,logError("moment.tz.zoneExists('"+name+"') has been deprecated in favor of !moment.tz.zone('"+name+"')")),!!getZone(name)},tz.guess=function(ignoreCache){return cachedGuess&&!ignoreCache||(cachedGuess=rebuildGuess()),cachedGuess},tz.names=function(){var i,out=[];for(i in names)names.hasOwnProperty(i)&&(zones[i]||zones[links[i]])&&names[i]&&out.push(names[i]);return out.sort()},tz.Zone=Zone,tz.unpack=unpack,tz.unpackBase60=unpackBase60,tz.needsOffset=needsOffset,tz.moveInvalidForward=!0,tz.moveAmbiguousForward=!1;var old,fn=moment.fn;function abbrWrap(old){return function(){return this._z?this._z.abbr(this):old.call(this)}}moment.tz=tz,moment.defaultZone=null,moment.updateOffset=function(mom,keepTime){var offset,zone=moment.defaultZone;void 0===mom._z&&(zone&&needsOffset(mom)&&!mom._isUTC&&(mom._d=moment.utc(mom._a)._d,mom.utc().add(zone.parse(mom),"minutes")),mom._z=zone),mom._z&&(offset=mom._z.utcOffset(mom),Math.abs(offset)<16&&(offset/=60),void 0!==mom.utcOffset?mom.utcOffset(-offset,keepTime):mom.zone(offset,keepTime))},fn.tz=function(name,keepTime){return name?(this._z=getZone(name),this._z?moment.updateOffset(this,keepTime):logError("Moment Timezone has no data for "+name+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},fn.zoneName=abbrWrap(fn.zoneName),fn.zoneAbbr=abbrWrap(fn.zoneAbbr),fn.utc=(old=fn.utc,function(){return this._z=null,old.apply(this,arguments)}),moment.tz.setDefault=function(name){return(major<2||2===major&&minor<9)&&logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+moment.version+"."),moment.defaultZone=name?getZone(name):null,moment};var momentProperties=moment.momentProperties;return"[object Array]"===Object.prototype.toString.call(momentProperties)?(momentProperties.push("_z"),momentProperties.push("_a")):momentProperties&&(momentProperties._z=null),loadData({version:"2018e",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|012|-2le00 4i6N0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le80 1XO3u 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BAu|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Etc/GMT-0|GMT|0|0|","Etc/GMT-1|+01|-10|0|","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Pohnpei|+11|-b0|0||34e3","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0|","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"],links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Etc/GMT-11","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"]}),moment}),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("uikit",factory):global.UIkit=factory()}(this,function(){function bind(fn,context){return function(a){var l=arguments.length;return l?l>1?fn.apply(context,arguments):fn.call(context,a):fn.call(context)}}var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key)}var hyphenateCache={},hyphenateRe=/([a-z\d])([A-Z])/g;function hyphenate(str){return str in hyphenateCache||(hyphenateCache[str]=str.replace(hyphenateRe,"$1-$2").toLowerCase()),hyphenateCache[str]}var camelizeRe=/-(\w)/g;function camelize(str){return str.replace(camelizeRe,toUpper)}function toUpper(_,c){return c?c.toUpperCase():""}function ucfirst(str){return str.length?toUpper(0,str.charAt(0))+str.slice(1):""}var strPrototype=String.prototype,startsWithFn=strPrototype.startsWith||function(search){return 0===this.lastIndexOf(search,0)};function startsWith(str,search){return startsWithFn.call(str,search)}var endsWithFn=strPrototype.endsWith||function(search){return this.substr(-search.length)===search};function endsWith(str,search){return endsWithFn.call(str,search)}var includesFn=function(search){return~this.indexOf(search)},includesStr=strPrototype.includes||includesFn,includesArray=Array.prototype.includes||includesFn;function includes(obj,search){return obj&&(isString(obj)?includesStr:includesArray).call(obj,search)}var isArray=Array.isArray;function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!==obj&&"object"==typeof obj}function isPlainObject(obj){return isObject(obj)&&Object.getPrototypeOf(obj)===Object.prototype}function isWindow(obj){return isObject(obj)&&obj===obj.window}function isDocument(obj){return isObject(obj)&&9===obj.nodeType}function isJQuery(obj){return isObject(obj)&&!!obj.jquery}function isNode(element){return element instanceof Node||isObject(element)&&1===element.nodeType}function isNodeCollection(element){return element instanceof NodeList||element instanceof HTMLCollection}function isBoolean(value){return"boolean"==typeof value}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isNumeric(value){return isNumber(value)||isString(value)&&!isNaN(value-parseFloat(value))}function isUndefined(value){return void 0===value}function toBoolean(value){return isBoolean(value)?value:"true"===value||"1"===value||""===value||"false"!==value&&"0"!==value&&value}function toNumber(value){var number=Number(value);return!isNaN(number)&&number}function toFloat(value){return parseFloat(value)||0}function toNode(element){return isNode(element)||isWindow(element)||isDocument(element)?element:isNodeCollection(element)||isJQuery(element)?element[0]:isArray(element)?toNode(element[0]):null}var arrayProto=Array.prototype;function toNodes(element){return isNode(element)?[element]:isNodeCollection(element)?arrayProto.slice.call(element):isArray(element)?element.map(toNode).filter(Boolean):isJQuery(element)?element.toArray():[]}function toList(value){return isArray(value)?value:isString(value)?value.split(/,(?![^(]*\))/).map(function(value){return isNumeric(value)?toNumber(value):toBoolean(value.trim())}):[value]}function toMs(time){return time?endsWith(time,"ms")?toFloat(time):1e3*toFloat(time):0}function swap(value,a,b){return value.replace(new RegExp(a+"|"+b,"mg"),function(match){return match===a?b:a})}var assign=Object.assign||function(target){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];target=Object(target);for(var i=0;i<args.length;i++){var source=args[i];if(null!==source)for(var key in source)hasOwn(source,key)&&(target[key]=source[key])}return target};function each(obj,cb){for(var key in obj)cb.call(obj[key],obj[key],key)}function sortBy(collection,prop){return collection.sort(function(a,b){return a[prop]>b[prop]?1:b[prop]>a[prop]?-1:0})}function clamp(number,min,max){return void 0===min&&(min=0),void 0===max&&(max=1),Math.min(Math.max(number,min),max)}function noop(){}function intersectRect(r1,r2){return r1.left<=r2.right&&r2.left<=r1.right&&r1.top<=r2.bottom&&r2.top<=r1.bottom}function pointInRect(point,rect){return intersectRect({top:point.y,bottom:point.y,left:point.x,right:point.x},rect)}var Dimensions={ratio:function(dimensions,prop,value){var obj,aProp="width"===prop?"height":"width";return(obj={})[aProp]=Math.round(value*dimensions[aProp]/dimensions[prop]),obj[prop]=value,obj},contain:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=assign({},dimensions),function(_,prop){return dimensions=dimensions[prop]>maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions},cover:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=this.contain(dimensions,maxDimensions),function(_,prop){return dimensions=dimensions[prop]<maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions}};function attr(element,name,value){if(isObject(name))for(var key in name)attr(element,key,name[key]);else{if(isUndefined(value))return(element=toNode(element))&&element.getAttribute(name);toNodes(element).forEach(function(element){isFunction(value)&&(value=value.call(element,attr(element,name))),null===value?removeAttr(element,name):element.setAttribute(name,value)})}}function hasAttr(element,name){return toNodes(element).some(function(element){return element.hasAttribute(name)})}function removeAttr(element,name){element=toNodes(element),name.split(" ").forEach(function(name){return element.forEach(function(element){return element.removeAttribute(name)})})}function filterAttr(element,attribute,pattern,replacement){attr(element,attribute,function(value){return value?value.replace(pattern,replacement):value})}function data(element,attribute){for(var i=0,attrs=[attribute,"data-"+attribute];i<attrs.length;i++)if(hasAttr(element,attrs[i]))return attr(element,attrs[i])}function query(selector,context){return toNode(selector)||find(selector,isContextSelector(selector)?context:document)}function queryAll(selector,context){var nodes=toNodes(selector);return nodes.length&&nodes||findAll(selector,isContextSelector(selector)?context:document)}function find(selector,context){return toNode(_query(selector,context,"querySelector"))}function findAll(selector,context){return toNodes(_query(selector,context,"querySelectorAll"))}function _query(selector,context,queryFn){if(void 0===context&&(context=document),!selector||!isString(selector))return null;var removes;isContextSelector(selector=selector.replace(contextSanitizeRe,"$1 *"))&&(removes=[],selector=selector.split(",").map(function(selector,i){var ctx=context;if("!"===(selector=selector.trim())[0]){var selectors=selector.substr(1).trim().split(" ");ctx=closest(context.parentNode,selectors[0]),selector=selectors.slice(1).join(" ").trim()}if("-"===selector[0]){var selectors$1=selector.substr(1).trim().split(" "),prev=(ctx||context).previousElementSibling;ctx=matches(prev,selector.substr(1))?prev:null,selector=selectors$1.slice(1).join(" ")}return ctx?(ctx.id||(ctx.id="uk-"+Date.now()+i,removes.push(function(){return removeAttr(ctx,"id")})),"#"+escape(ctx.id)+" "+selector):null}).filter(Boolean).join(","),context=document);try{return context[queryFn](selector)}catch(e){return null}finally{removes&&removes.forEach(function(remove){return remove()})}}var contextSelectorRe=/(^|,)\s*[!>+~-]/,contextSanitizeRe=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g;function isContextSelector(selector){return isString(selector)&&selector.match(contextSelectorRe)}var elProto=Element.prototype,matchesFn=elProto.matches||elProto.webkitMatchesSelector||elProto.msMatchesSelector;function matches(element,selector){return toNodes(element).some(function(element){return matchesFn.call(element,selector)})}var closestFn=elProto.closest||function(selector){var ancestor=this;do{if(matches(ancestor,selector))return ancestor;ancestor=ancestor.parentNode}while(ancestor&&1===ancestor.nodeType)};function closest(element,selector){return startsWith(selector,">")&&(selector=selector.slice(1)),isNode(element)?element.parentNode&&closestFn.call(element,selector):toNodes(element).map(function(element){return element.parentNode&&closestFn.call(element,selector)}).filter(Boolean)}function parents(element,selector){for(var elements=[],parent=toNode(element).parentNode;parent&&1===parent.nodeType;)matches(parent,selector)&&elements.push(parent),parent=parent.parentNode;return elements}var escapeFn=window.CSS&&CSS.escape||function(css){return css.replace(/([^\x7f-\uFFFF\w-])/g,function(match){return"\\"+match})};function escape(css){return isString(css)?escapeFn.call(null,css):""}var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function isVoidElement(element){return toNodes(element).some(function(element){return voidElements[element.tagName.toLowerCase()]})}function isVisible(element){return toNodes(element).some(function(element){return element.offsetWidth||element.offsetHeight||element.getClientRects().length})}var selInput="input,select,textarea,button";function isInput(element){return toNodes(element).some(function(element){return matches(element,selInput)})}function filter(element,selector){return toNodes(element).filter(function(element){return matches(element,selector)})}function within(element,selector){return isString(selector)?matches(element,selector)||closest(element,selector):element===selector||(isDocument(selector)?selector.documentElement:toNode(selector)).contains(toNode(element))}function on(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),target=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4];return target=toEventTarget(target),selector&&(listener=function(element,selector,listener){var this$1=this;return function(e){var target=e.target,current=">"===selector[0]?findAll(selector,element).reverse().filter(function(element){return within(target,element)})[0]:closest(target,selector);current&&(e.delegate=element,e.current=current,listener.call(this$1,e))}}(target,selector,listener)),listener.length>1&&(listener=function(listener){return function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)}}(listener)),type.split(" ").forEach(function(type){return target&&target.addEventListener(type,listener,useCapture)}),function(){return off(target,type,listener,useCapture)}}function off(target,type,listener,useCapture){void 0===useCapture&&(useCapture=!1),(target=toEventTarget(target))&&type.split(" ").forEach(function(type){return target.removeEventListener(type,listener,useCapture)})}function once(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),element=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4],condition=ref[5],off=on(element,type,selector,function(e){var result=!condition||condition(e);result&&(off(),listener(e,result))},useCapture);return off}function trigger(target,event,detail){return toEventTargets(target).reduce(function(notCanceled,target){return notCanceled&&target.dispatchEvent(createEvent(event,!0,!0,detail))},!0)}function createEvent(e,bubbles,cancelable,detail){if(void 0===bubbles&&(bubbles=!0),void 0===cancelable&&(cancelable=!1),isString(e)){var event=document.createEvent("CustomEvent");event.initCustomEvent(e,bubbles,cancelable,detail),e=event}return e}function getArgs(args){return isString(args[0])&&(args[0]=find(args[0])),isFunction(args[2])&&args.splice(2,0,!1),args}function isEventTarget(target){return"EventTarget"in window?target instanceof EventTarget:target&&"addEventListener"in target}function toEventTarget(target){return isEventTarget(target)?target:toNode(target)}function toEventTargets(target){return isEventTarget(target)?[target]:isArray(target)?target.map(toEventTarget).filter(Boolean):toNodes(target)}function preventClick(){var timer=setTimeout(once(document,"click",function(e){e.preventDefault(),e.stopImmediatePropagation(),clearTimeout(timer)},!0));trigger(document,"touchcancel")}var Promise$1="Promise"in window?window.Promise:PromiseFn,Deferred=function(){var this$1=this;this.promise=new Promise$1(function(resolve,reject){this$1.reject=reject,this$1.resolve=resolve})},PENDING=2,async="setImmediate"in window?setImmediate:setTimeout;function PromiseFn(executor){this.state=PENDING,this.value=void 0,this.deferred=[];var promise=this;try{executor(function(x){promise.resolve(x)},function(r){promise.reject(r)})}catch(e){promise.reject(e)}}PromiseFn.reject=function(r){return new PromiseFn(function(resolve,reject){reject(r)})},PromiseFn.resolve=function(x){return new PromiseFn(function(resolve,reject){resolve(x)})},PromiseFn.all=function(iterable){return new PromiseFn(function(resolve,reject){var result=[],count=0;function resolver(i){return function(x){result[i]=x,(count+=1)===iterable.length&&resolve(result)}}0===iterable.length&&resolve(result);for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolver(i),reject)})},PromiseFn.race=function(iterable){return new PromiseFn(function(resolve,reject){for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolve,reject)})};var p=PromiseFn.prototype;function ajax(url,options){return new Promise$1(function(resolve,reject){var env=assign({data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:noop,responseType:""},options);env.beforeSend(env);var xhr=env.xhr;for(var prop in env)if(prop in xhr)try{xhr[prop]=env[prop]}catch(e){}for(var header in xhr.open(env.method.toUpperCase(),url),env.headers)xhr.setRequestHeader(header,env.headers[header]);on(xhr,"load",function(){0===xhr.status||xhr.status>=200&&xhr.status<300||304===xhr.status?resolve(xhr):reject(assign(Error(xhr.statusText),{xhr:xhr,status:xhr.status}))}),on(xhr,"error",function(){return reject(assign(Error("Network Error"),{xhr:xhr}))}),on(xhr,"timeout",function(){return reject(assign(Error("Network Timeout"),{xhr:xhr}))}),xhr.send(env.data)})}function getImage(src,srcset,sizes){return new Promise$1(function(resolve,reject){var img=new Image;img.onerror=reject,img.onload=function(){return resolve(img)},img.src=src,srcset&&(img.srcset=srcset),sizes&&(img.sizes=sizes)})}function isReady(){return"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll}function ready(fn){if(isReady())fn();else var handle=function(){unbind1(),unbind2(),fn()},unbind1=on(document,"DOMContentLoaded",handle),unbind2=on(window,"load",handle)}function index(element,ref){return ref?toNodes(element).indexOf(toNode(ref)):toNodes((element=toNode(element))&&element.parentNode.children).indexOf(element)}function getIndex(i,elements,current,finite){void 0===current&&(current=0),void 0===finite&&(finite=!1);var length=(elements=toNodes(elements)).length;return i=isNumeric(i)?toNumber(i):"next"===i?current+1:"previous"===i?current-1:index(elements,i),finite?clamp(i,0,length-1):(i%=length)<0?i+length:i}function empty(element){return(element=toNode(element)).innerHTML="",element}function html(parent,html){return parent=toNode(parent),isUndefined(html)?parent.innerHTML:append(parent.hasChildNodes()?empty(parent):parent,html)}function append(parent,element){return parent=toNode(parent),insertNodes(element,function(element){return parent.appendChild(element)})}function before(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.parentNode.insertBefore(element,ref)})}function after(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.nextSibling?before(ref.nextSibling,element):append(ref.parentNode,element)})}function insertNodes(element,fn){return(element=isString(element)?fragment(element):element)?"length"in element?toNodes(element).map(fn):fn(element):null}function remove(element){toNodes(element).map(function(element){return element.parentNode&&element.parentNode.removeChild(element)})}function wrapAll(element,structure){for(structure=toNode(before(element,structure));structure.firstChild;)structure=structure.firstChild;return append(structure,element),structure}function wrapInner(element,structure){return toNodes(toNodes(element).map(function(element){return element.hasChildNodes?wrapAll(toNodes(element.childNodes),structure):append(element,structure)}))}function unwrap(element){toNodes(element).map(function(element){return element.parentNode}).filter(function(value,index,self){return self.indexOf(value)===index}).forEach(function(parent){before(parent,parent.childNodes),remove(parent)})}p.resolve=function(x){var promise=this;if(promise.state===PENDING){if(x===promise)throw new TypeError("Promise settled with itself.");var called=!1;try{var then=x&&x.then;if(null!==x&&isObject(x)&&isFunction(then))return void then.call(x,function(x){called||promise.resolve(x),called=!0},function(r){called||promise.reject(r),called=!0})}catch(e){return void(called||promise.reject(e))}promise.state=0,promise.value=x,promise.notify()}},p.reject=function(reason){if(this.state===PENDING){if(reason===this)throw new TypeError("Promise settled with itself.");this.state=1,this.value=reason,this.notify()}},p.notify=function(){var this$1=this;async(function(){if(this$1.state!==PENDING)for(;this$1.deferred.length;){var ref=this$1.deferred.shift(),onResolved=ref[0],onRejected=ref[1],resolve=ref[2],reject=ref[3];try{0===this$1.state?isFunction(onResolved)?resolve(onResolved.call(void 0,this$1.value)):resolve(this$1.value):1===this$1.state&&(isFunction(onRejected)?resolve(onRejected.call(void 0,this$1.value)):reject(this$1.value))}catch(e){reject(e)}}})},p.then=function(onResolved,onRejected){var this$1=this;return new PromiseFn(function(resolve,reject){this$1.deferred.push([onResolved,onRejected,resolve,reject]),this$1.notify()})},p.catch=function(onRejected){return this.then(void 0,onRejected)};var fragmentRe=/^\s*<(\w+|!)[^>]*>/,singleTagRe=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function fragment(html){var matches=singleTagRe.exec(html);if(matches)return document.createElement(matches[1]);var container=document.createElement("div");return fragmentRe.test(html)?container.insertAdjacentHTML("beforeend",html.trim()):container.textContent=html,container.childNodes.length>1?toNodes(container.childNodes):container.firstChild}function apply(node,fn){if(node&&1===node.nodeType)for(fn(node),node=node.firstElementChild;node;)apply(node,fn),node=node.nextElementSibling}function addClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"add")}function removeClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"remove")}function removeClasses(element,cls){filterAttr(element,"class",new RegExp("(^|\\s)"+cls+"(?!\\S)","g"),"")}function replaceClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];args[0]&&removeClass(element,args[0]),args[1]&&addClass(element,args[1])}function hasClass(element,cls){return toNodes(element).some(function(element){return element.classList.contains(cls)})}function toggleClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];if(args.length){var force=isString((args=getArgs$1(args))[args.length-1])?[]:args.pop();args=args.filter(Boolean),toNodes(element).forEach(function(ref){for(var classList=ref.classList,i=0;i<args.length;i++)supports.Force?classList.toggle.apply(classList,[args[i]].concat(force)):classList[(isUndefined(force)?!classList.contains(args[i]):force)?"add":"remove"](args[i])})}}function apply$1(element,args,fn){(args=getArgs$1(args).filter(Boolean)).length&&toNodes(element).forEach(function(ref){var classList=ref.classList;supports.Multiple?classList[fn].apply(classList,args):args.forEach(function(cls){return classList[fn](cls)})})}function getArgs$1(args){return args.reduce(function(args,arg){return args.concat.call(args,isString(arg)&&includes(arg," ")?arg.trim().split(" "):arg)},[])}var list,supports={};(list=document.createElement("_").classList)&&(list.add("a","b"),list.toggle("c",!1),supports.Multiple=list.contains("b"),supports.Force=!list.contains("c")),list=null;var cssNumber={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,widows:!0,"z-index":!0,zoom:!0};function css(element,property,value){return toNodes(element).map(function(element){if(isString(property)){if(property=propName(property),isUndefined(value))return getStyle(element,property);value||0===value?element.style[property]=isNumeric(value)&&!cssNumber[property]?value+"px":value:element.style.removeProperty(property)}else{if(isArray(property)){var styles=getStyles(element);return property.reduce(function(props,property){return props[property]=styles[propName(property)],props},{})}isObject(property)&&each(property,function(value,property){return css(element,property,value)})}return element})[0]}function getStyles(element,pseudoElt){return(element=toNode(element)).ownerDocument.defaultView.getComputedStyle(element,pseudoElt)}function getStyle(element,property,pseudoElt){return getStyles(element,pseudoElt)[property]}var vars={};function getCssVar(name){if(!(name in vars)){var element=append(document.documentElement,document.createElement("div"));addClass(element,"var-"+name);try{vars[name]=getStyle(element,"content",":before").replace(/^["'](.*)["']$/,"$1"),vars[name]=JSON.parse(vars[name])}catch(e){}document.documentElement.removeChild(element)}return vars[name]}var cssProps={};function propName(name){var ret=cssProps[name];return ret||(ret=cssProps[name]=function(name){if((name=hyphenate(name))in style)return name;var prefixedName,i=cssPrefixes.length;for(;i--;)if((prefixedName="-"+cssPrefixes[i]+"-"+name)in style)return prefixedName}(name)||name),ret}var cssPrefixes=["webkit","moz","ms"],style=document.createElement("_").style;function transition(element,props,duration,timing){return void 0===duration&&(duration=400),void 0===timing&&(timing="linear"),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){for(var name in props){var value=css(element,name);""===value&&css(element,name,value)}var timer=setTimeout(function(){return trigger(element,"transitionend")},duration);once(element,"transitionend transitioncanceled",function(ref){var type=ref.type;clearTimeout(timer),removeClass(element,"uk-transition"),css(element,{"transition-property":"","transition-duration":"","transition-timing-function":""}),"transitioncanceled"===type?reject():resolve()},!1,function(ref){var target=ref.target;return element===target}),addClass(element,"uk-transition"),css(element,assign({"transition-property":Object.keys(props).map(propName).join(","),"transition-duration":duration+"ms","transition-timing-function":timing},props))})}))}var Transition={start:transition,stop:function(element){return trigger(element,"transitionend"),Promise$1.resolve()},cancel:function(element){trigger(element,"transitioncanceled")},inProgress:function(element){return hasClass(element,"uk-transition")}},animationPrefix="uk-animation-",clsCancelAnimation="uk-cancel-animation";function animate(element,animation,duration,origin,out){var arguments$1=arguments;return void 0===duration&&(duration=200),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){if(hasClass(element,clsCancelAnimation))requestAnimationFrame(function(){return Promise$1.resolve().then(function(){return animate.apply(void 0,arguments$1).then(resolve,reject)})});else{var cls=animation+" "+animationPrefix+(out?"leave":"enter");startsWith(animation,animationPrefix)&&(origin&&(cls+=" uk-transform-origin-"+origin),out&&(cls+=" "+animationPrefix+"reverse")),reset(),once(element,"animationend animationcancel",function(ref){var hasReset=!1;"animationcancel"===ref.type?(reject(),reset()):(resolve(),Promise$1.resolve().then(function(){hasReset=!0,reset()})),requestAnimationFrame(function(){hasReset||(addClass(element,clsCancelAnimation),requestAnimationFrame(function(){return removeClass(element,clsCancelAnimation)}))})},!1,function(ref){var target=ref.target;return element===target}),css(element,"animationDuration",duration+"ms"),addClass(element,cls)}function reset(){css(element,"animationDuration",""),removeClasses(element,animationPrefix+"\\S*")}})}))}var inProgress=new RegExp(animationPrefix+"(enter|leave)"),Animation={in:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!1)},out:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!0)},inProgress:function(element){return inProgress.test(attr(element,"class"))},cancel:function(element){trigger(element,"animationcancel")}};function $(selector,context){return isString(selector)?isHtml(selector)?toNode(fragment(selector)):find(selector,context):toNode(selector)}function $$(selector,context){return isString(selector)?isHtml(selector)?toNodes(fragment(selector)):findAll(selector,context):toNodes(selector)}function isHtml(str){return"<"===str[0]||str.match(/^\s*</)}var dirs={width:["x","left","right"],height:["y","top","bottom"]};function positionAt(element,target,elAttach,targetAttach,elOffset,targetOffset,flip,boundary){elAttach=getPos(elAttach),targetAttach=getPos(targetAttach);var flipped={element:elAttach,target:targetAttach};if(!element||!target)return flipped;var dim=getDimensions(element),targetDim=getDimensions(target),position=targetDim;return moveTo(position,elAttach,dim,-1),moveTo(position,targetAttach,targetDim,1),elOffset=getOffsets(elOffset,dim.width,dim.height),targetOffset=getOffsets(targetOffset,targetDim.width,targetDim.height),elOffset.x+=targetOffset.x,elOffset.y+=targetOffset.y,position.left+=elOffset.x,position.top+=elOffset.y,boundary=getDimensions(boundary||window$1(element)),flip&&each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];if(!0===flip||includes(flip,dir)){var elemOffset=elAttach[dir]===align?-dim[prop]:elAttach[dir]===alignFlip?dim[prop]:0,targetOffset=targetAttach[dir]===align?targetDim[prop]:targetAttach[dir]===alignFlip?-targetDim[prop]:0;if(position[align]<boundary[align]||position[align]+dim[prop]>boundary[alignFlip]){var centerOffset=dim[prop]/2,centerTargetOffset="center"===targetAttach[dir]?-targetDim[prop]/2:0;"center"===elAttach[dir]&&(apply(centerOffset,centerTargetOffset)||apply(-centerOffset,-centerTargetOffset))||apply(elemOffset,targetOffset)}}function apply(elemOffset,targetOffset){var newVal=position[align]+elemOffset+targetOffset-2*elOffset[dir];if(newVal>=boundary[align]&&newVal+dim[prop]<=boundary[alignFlip])return position[align]=newVal,["element","target"].forEach(function(el){flipped[el][dir]=elemOffset?flipped[el][dir]===dirs[prop][1]?dirs[prop][2]:dirs[prop][1]:flipped[el][dir]}),!0}}),offset(element,position),flipped}function offset(element,coordinates){if(element=toNode(element),!coordinates)return getDimensions(element);var currentOffset=offset(element),pos=css(element,"position");["left","top"].forEach(function(prop){if(prop in coordinates){var value=css(element,prop);css(element,prop,coordinates[prop]-currentOffset[prop]+toFloat("absolute"===pos&&"auto"===value?position(element)[prop]:value))}})}function getDimensions(element){var style,hidden,ref=window$1(element=toNode(element)),top=ref.pageYOffset,left=ref.pageXOffset;if(isWindow(element)){var height=element.innerHeight,width=element.innerWidth;return{top:top,left:left,height:height,width:width,bottom:top+height,right:left+width}}isVisible(element)||(style=attr(element,"style"),hidden=attr(element,"hidden"),attr(element,{style:(style||"")+";display:block !important;",hidden:null}));var rect=element.getBoundingClientRect();return isUndefined(style)||attr(element,{style:style,hidden:hidden}),{height:rect.height,width:rect.width,top:rect.top+top,left:rect.left+left,bottom:rect.bottom+top,right:rect.right+left}}function position(element){var parent=function(element){var parent=toNode(element).offsetParent;for(;parent&&"static"===css(parent,"position");)parent=parent.offsetParent;return parent||docEl(element)}(element=toNode(element)),parentOffset=parent===docEl(element)?{top:0,left:0}:offset(parent),ref=["top","left"].reduce(function(props,prop){var propName$$1=ucfirst(prop);return props[prop]-=parentOffset[prop]+(toFloat(css(element,"margin"+propName$$1))||0)+(toFloat(css(parent,"border"+propName$$1+"Width"))||0),props},offset(element));return{top:ref.top,left:ref.left}}var height=dimension("height"),width=dimension("width");function dimension(prop){var propName$$1=ucfirst(prop);return function(element,value){if(element=toNode(element),isUndefined(value)){if(isWindow(element))return element["inner"+propName$$1];if(isDocument(element)){var doc=element.documentElement;return Math.max(doc["offset"+propName$$1],doc["scroll"+propName$$1])}return(value="auto"===(value=css(element,prop))?element["offset"+propName$$1]:toFloat(value)||0)-boxModelAdjust(prop,element)}css(element,prop,value||0===value?+value+boxModelAdjust(prop,element)+"px":"")}}function boxModelAdjust(prop,element){return"border-box"===css(element,"boxSizing")?dirs[prop].slice(1).map(ucfirst).reduce(function(value,prop){return value+toFloat(css(element,"padding"+prop))+toFloat(css(element,"border"+prop+"Width"))},0):0}function moveTo(position,attach,dim,factor){each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];attach[dir]===alignFlip?position[align]+=dim[prop]*factor:"center"===attach[dir]&&(position[align]+=dim[prop]*factor/2)})}function getPos(pos){var x=/left|center|right/,y=/top|center|bottom/;return 1===(pos=(pos||"").split(" ")).length&&(pos=x.test(pos[0])?pos.concat(["center"]):y.test(pos[0])?["center"].concat(pos):["center","center"]),{x:x.test(pos[0])?pos[0]:"center",y:y.test(pos[1])?pos[1]:"center"}}function getOffsets(offsets,width,height){var ref=(offsets||"").split(" "),x=ref[0],y=ref[1];return{x:x?toFloat(x)*(endsWith(x,"%")?width/100:1):0,y:y?toFloat(y)*(endsWith(y,"%")?height/100:1):0}}function flipPosition(pos){switch(pos){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top";default:return pos}}function isInView(element,topOffset,leftOffset,relativeToViewport){if(void 0===topOffset&&(topOffset=0),void 0===leftOffset&&(leftOffset=0),!isVisible(element))return!1;var win=window$1(element=toNode(element));if(relativeToViewport)return intersectRect(element.getBoundingClientRect(),{top:-topOffset,left:-leftOffset,bottom:topOffset+height(win),right:leftOffset+width(win)});var ref=offsetPosition(element),elTop=ref[0],elLeft=ref[1],top=win.pageYOffset,left=win.pageXOffset;return intersectRect({top:elTop,left:elLeft,bottom:elTop+element.offsetHeight,right:elTop+element.offsetWidth},{top:top-topOffset,left:left-leftOffset,bottom:top+topOffset+height(win),right:left+leftOffset+width(win)})}function scrolledOver(element,heightOffset){if(void 0===heightOffset&&(heightOffset=0),!isVisible(element))return 0;var win=window$1(element=toNode(element)),doc=document$1(element),elHeight=element.offsetHeight+heightOffset,top=offsetPosition(element)[0],vp=height(win),vh=vp+Math.min(0,top-vp),diff=Math.max(0,vp-(height(doc)+heightOffset-(top+elHeight)));return clamp((vh+win.pageYOffset-top)/((vh+(elHeight-(diff<vp?diff:0)))/100)/100)}function offsetPosition(element){var offset=[0,0];do{if(offset[0]+=element.offsetTop,offset[1]+=element.offsetLeft,"fixed"===css(element,"position")){var win=window$1(element);return offset[0]+=win.pageYOffset,offset[1]+=win.pageXOffset,offset}}while(element=element.offsetParent);return offset}function window$1(element){return isWindow(element)?element:document$1(element).defaultView}function document$1(element){return toNode(element).ownerDocument}function docEl(element){return document$1(element).documentElement}var isRtl="rtl"===attr(document.documentElement,"dir"),hasTouchEvents="ontouchstart"in window,hasPointerEvents=window.PointerEvent,hasTouch=hasTouchEvents||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,pointerDown=hasTouch?"mousedown "+(hasTouchEvents?"touchstart":"pointerdown"):"mousedown",pointerMove=hasTouch?"mousemove "+(hasTouchEvents?"touchmove":"pointermove"):"mousemove",pointerUp=hasTouch?"mouseup "+(hasTouchEvents?"touchend":"pointerup"):"mouseup",pointerEnter=hasTouch&&hasPointerEvents?"pointerenter":"mouseenter",pointerLeave=hasTouch&&hasPointerEvents?"pointerleave":"mouseleave",fastdom={reads:[],writes:[],read:function(task){return this.reads.push(task),scheduleFlush(),task},write:function(task){return this.writes.push(task),scheduleFlush(),task},clear:function(task){return remove$1(this.reads,task)||remove$1(this.writes,task)},flush:function(){runTasks(this.reads),runTasks(this.writes.splice(0,this.writes.length)),this.scheduled=!1,(this.reads.length||this.writes.length)&&scheduleFlush()}};function scheduleFlush(){fastdom.scheduled||(fastdom.scheduled=!0,requestAnimationFrame(fastdom.flush.bind(fastdom)))}function runTasks(tasks){for(var task;task=tasks.shift();)task()}function remove$1(array,item){var index=array.indexOf(item);return!!~index&&!!array.splice(index,1)}function MouseTracker(){}function slope(a,b){return(b.y-a.y)/(b.x-a.x)}MouseTracker.prototype={positions:[],position:null,init:function(){var this$1=this;this.positions=[],this.position=null;var ticking=!1;this.unbind=on(document,"mousemove",function(e){ticking||(setTimeout(function(){var time=Date.now(),length=this$1.positions.length;length&&time-this$1.positions[length-1].time>100&&this$1.positions.splice(0,length),this$1.positions.push({time:time,x:e.pageX,y:e.pageY}),this$1.positions.length>5&&this$1.positions.shift(),ticking=!1},5),ticking=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(target){if(this.positions.length<2)return!1;var p=offset(target),position$$1=this.positions[this.positions.length-1],prevPos=this.positions[0];if(p.left<=position$$1.x&&position$$1.x<=p.right&&p.top<=position$$1.y&&position$$1.y<=p.bottom)return!1;var points=[[{x:p.left,y:p.top},{x:p.right,y:p.bottom}],[{x:p.right,y:p.top},{x:p.left,y:p.bottom}]];return p.right<=position$$1.x||(p.left>=position$$1.x?(points[0].reverse(),points[1].reverse()):p.bottom<=position$$1.y?points[0].reverse():p.top>=position$$1.y&&points[1].reverse()),!!points.reduce(function(result,point){return result+(slope(prevPos,point[0])<slope(position$$1,point[0])&&slope(prevPos,point[1])>slope(position$$1,point[1]))},0)}};var strats={};function mergeFnData(parentVal,childVal,vm){return strats.computed(isFunction(parentVal)?parentVal.call(vm,vm):parentVal,isFunction(childVal)?childVal.call(vm,vm):childVal)}strats.args=strats.events=strats.init=strats.created=strats.beforeConnect=strats.connected=strats.ready=strats.beforeDisconnect=strats.disconnected=strats.destroy=function(parentVal,childVal){return parentVal=parentVal&&!isArray(parentVal)?[parentVal]:parentVal,childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal},strats.update=function(parentVal,childVal){return strats.args(parentVal,isFunction(childVal)?{read:childVal}:childVal)},strats.props=function(parentVal,childVal){return isArray(childVal)&&(childVal=childVal.reduce(function(value,key){return value[key]=String,value},{})),strats.methods(parentVal,childVal)},strats.computed=strats.methods=function(parentVal,childVal){return childVal?parentVal?assign({},parentVal,childVal):childVal:parentVal},strats.data=function(parentVal,childVal,vm){return vm?mergeFnData(parentVal,childVal,vm):childVal?parentVal?function(vm){return mergeFnData(parentVal,childVal,vm)}:childVal:parentVal};var defaultStrat=function(parentVal,childVal){return isUndefined(childVal)?parentVal:childVal};function mergeOptions(parent,child,vm){var options={};if(isFunction(child)&&(child=child.options),child.extends&&(parent=mergeOptions(parent,child.extends,vm)),child.mixins)for(var i=0,l=child.mixins.length;i<l;i++)parent=mergeOptions(parent,child.mixins[i],vm);for(var key in parent)mergeKey(key);for(var key$1 in child)hasOwn(parent,key$1)||mergeKey(key$1);function mergeKey(key){options[key]=(strats[key]||defaultStrat)(parent[key],child[key],vm)}return options}function parseOptions(options,args){var obj;void 0===args&&(args=[]);try{return options?startsWith(options,"{")?JSON.parse(options):args.length&&!includes(options,":")?((obj={})[args[0]]=options,obj):options.split(";").reduce(function(options,option){var ref=option.split(/:(.*)/),key=ref[0],value=ref[1];return key&&!isUndefined(value)&&(options[key.trim()]=value.trim()),options},{}):{}}catch(e){return{}}}var id=0,Player=function(el){this.id=++id,this.el=toNode(el)};function post(el,cmd){try{el.contentWindow.postMessage(JSON.stringify(assign({event:"command"},cmd)),"*")}catch(e){}}Player.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Player.prototype.isHTML5=function(){return"VIDEO"===this.el.tagName},Player.prototype.isIFrame=function(){return"IFRAME"===this.el.tagName},Player.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)},Player.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\.com\/video\/.*/)},Player.prototype.enableApi=function(){var this$1=this;if(this.ready)return this.ready;var poller,youtube=this.isYoutube(),vimeo=this.isVimeo();return youtube||vimeo?this.ready=new Promise$1(function(resolve){var cb;once(this$1.el,"load",function(){if(youtube){var listener=function(){return post(this$1.el,{event:"listening",id:this$1.id})};poller=setInterval(listener,100),listener()}}),(cb=function(data$$1){return youtube&&data$$1.id===this$1.id&&"onReady"===data$$1.event||vimeo&&Number(data$$1.player_id)===this$1.id},new Promise$1(function(resolve){once(window,"message",function(_,data$$1){return resolve(data$$1)},!1,function(ref){var data$$1=ref.data;if(data$$1&&isString(data$$1)){try{data$$1=JSON.parse(data$$1)}catch(e){return}return data$$1&&cb(data$$1)}})})).then(function(){resolve(),poller&&clearInterval(poller)}),attr(this$1.el,"src",this$1.el.src+(includes(this$1.el.src,"?")?"&":"?")+(youtube?"enablejsapi=1":"api=1&player_id="+this$1.id))}):Promise$1.resolve()},Player.prototype.play=function(){var this$1=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return post(this$1.el,{func:"playVideo",method:"play"})});else if(this.isHTML5())try{var promise=this.el.play();promise&&promise.catch(noop)}catch(e){}},Player.prototype.pause=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"pauseVideo",method:"pause"})}):this.isHTML5()&&this.el.pause())},Player.prototype.mute=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"mute",method:"setVolume",value:0})}):this.isHTML5()&&(this.el.muted=!0,attr(this.el,"muted","")))};var clickTimeout,swipeTimeout,tapTimeout,clicked,touch={};function cancelAll(){clickTimeout&&clearTimeout(clickTimeout),swipeTimeout&&clearTimeout(swipeTimeout),tapTimeout&&clearTimeout(tapTimeout),clickTimeout=swipeTimeout=tapTimeout=null,touch={}}ready(function(){on(document,"click",function(){return clicked=!0},!0),on(document,pointerDown,function(e){var target=e.target,ref=getPos$1(e),x=ref.x,y=ref.y,now=Date.now(),type=getType(e.type);touch.type&&touch.type!==type||(touch.el="tagName"in target?target:target.parentNode,clickTimeout&&clearTimeout(clickTimeout),touch.x1=x,touch.y1=y,touch.last&&now-touch.last<=250&&(touch={}),touch.type=type,touch.last=now,clicked=e.button>0)}),on(document,pointerMove,function(e){if(!e.defaultPrevented){var ref=getPos$1(e),x=ref.x,y=ref.y;touch.x2=x,touch.y2=y}}),on(document,pointerUp,function(ref){var type=ref.type,target=ref.target;touch.type===getType(type)&&(touch.x2&&Math.abs(touch.x1-touch.x2)>30||touch.y2&&Math.abs(touch.y1-touch.y2)>30?swipeTimeout=setTimeout(function(){var ref,x1,x2,y1,y2;touch.el&&(trigger(touch.el,"swipe"),trigger(touch.el,"swipe"+(x1=(ref=touch).x1,x2=ref.x2,y1=ref.y1,y2=ref.y2,Math.abs(x1-x2)>=Math.abs(y1-y2)?x1-x2>0?"Left":"Right":y1-y2>0?"Up":"Down"))),touch={}}):"last"in touch?(tapTimeout=setTimeout(function(){return trigger(touch.el,"tap")}),touch.el&&"mouseup"!==type&&within(target,touch.el)&&(clickTimeout=setTimeout(function(){clickTimeout=null,touch.el&&!clicked&&trigger(touch.el,"click"),touch={}},350))):touch={})}),on(document,"touchcancel",cancelAll),on(window,"scroll",cancelAll)});var touching=!1;function isTouch(e){return touching||"touch"===e.pointerType}function getPos$1(e){var touches=e.touches,changedTouches=e.changedTouches,ref=touches&&touches[0]||changedTouches&&changedTouches[0]||e;return{x:ref.pageX,y:ref.pageY}}function getType(type){return type.slice(0,5)}function getComponentName(attribute){return!(!startsWith(attribute,"uk-")&&!startsWith(attribute,"data-uk-"))&&camelize(attribute.replace("data-uk-","").replace("uk-",""))}on(document,"touchstart",function(){return touching=!0},!0),on(document,"click",function(){touching=!1}),on(document,"touchcancel",function(){return touching=!1},!0);var UIkit=function(options){this._init(options)};UIkit.util=Object.freeze({ajax:ajax,getImage:getImage,transition:transition,Transition:Transition,animate:animate,Animation:Animation,attr:attr,hasAttr:hasAttr,removeAttr:removeAttr,filterAttr:filterAttr,data:data,addClass:addClass,removeClass:removeClass,removeClasses:removeClasses,replaceClass:replaceClass,hasClass:hasClass,toggleClass:toggleClass,$:$,$$:$$,positionAt:positionAt,offset:offset,position:position,height:height,width:width,flipPosition:flipPosition,isInView:isInView,scrolledOver:scrolledOver,isReady:isReady,ready:ready,index:index,getIndex:getIndex,empty:empty,html:html,prepend:function(parent,element){return(parent=toNode(parent)).hasChildNodes()?insertNodes(element,function(element){return parent.insertBefore(element,parent.firstChild)}):append(parent,element)},append:append,before:before,after:after,remove:remove,wrapAll:wrapAll,wrapInner:wrapInner,unwrap:unwrap,fragment:fragment,apply:apply,isRtl:isRtl,hasTouch:hasTouch,pointerDown:pointerDown,pointerMove:pointerMove,pointerUp:pointerUp,pointerEnter:pointerEnter,pointerLeave:pointerLeave,on:on,off:off,once:once,trigger:trigger,createEvent:createEvent,toEventTargets:toEventTargets,preventClick:preventClick,fastdom:fastdom,isVoidElement:isVoidElement,isVisible:isVisible,selInput:selInput,isInput:isInput,filter:filter,within:within,bind:bind,hasOwn:hasOwn,hyphenate:hyphenate,camelize:camelize,ucfirst:ucfirst,startsWith:startsWith,endsWith:endsWith,includes:includes,isArray:isArray,isFunction:isFunction,isObject:isObject,isPlainObject:isPlainObject,isWindow:isWindow,isDocument:isDocument,isJQuery:isJQuery,isNode:isNode,isNodeCollection:isNodeCollection,isBoolean:isBoolean,isString:isString,isNumber:isNumber,isNumeric:isNumeric,isUndefined:isUndefined,toBoolean:toBoolean,toNumber:toNumber,toFloat:toFloat,toNode:toNode,toNodes:toNodes,toList:toList,toMs:toMs,swap:swap,assign:assign,each:each,sortBy:sortBy,clamp:clamp,noop:noop,intersectRect:intersectRect,pointInRect:pointInRect,Dimensions:Dimensions,MouseTracker:MouseTracker,mergeOptions:mergeOptions,parseOptions:parseOptions,Player:Player,Promise:Promise$1,Deferred:Deferred,query:query,queryAll:queryAll,find:find,findAll:findAll,matches:matches,closest:closest,parents:parents,escape:escape,css:css,getStyles:getStyles,getStyle:getStyle,getCssVar:getCssVar,propName:propName,isTouch:isTouch,getPos:getPos$1}),UIkit.data="__uikit__",UIkit.prefix="uk-",UIkit.options={},function(UIkit){var container,DATA=UIkit.data;function update(data$$1,e){if(data$$1)for(var name in data$$1)data$$1[name]._isReady&&data$$1[name]._callUpdate(e)}UIkit.use=function(plugin){if(!plugin.installed)return plugin.call(null,this),plugin.installed=!0,this},UIkit.mixin=function(mixin,component){component=(isString(component)?UIkit.component(component):component)||this,(mixin=mergeOptions({},mixin)).mixins=component.options.mixins,delete component.options.mixins,component.options=mergeOptions(mixin,component.options)},UIkit.extend=function(options){options=options||{};var Sub=function(options){this._init(options)};return(Sub.prototype=Object.create(this.prototype)).constructor=Sub,Sub.options=mergeOptions(this.options,options),Sub.super=this,Sub.extend=this.extend,Sub},UIkit.update=function(element,e){e=createEvent(e||"update"),function(element){for(var path=[];element&&element!==document.body&&element.parentNode;)element=element.parentNode,path.unshift(element);return path}(element=element?toNode(element):document.body).map(function(element){return update(element[DATA],e)}),apply(element,function(element){return update(element[DATA],e)})},Object.defineProperty(UIkit,"container",{get:function(){return container||document.body},set:function(element){container=$(element)}})}(UIkit),function(UIkit){UIkit.prototype._callHook=function(hook){var this$1=this,handlers=this.$options[hook];handlers&&handlers.forEach(function(handler){return handler.call(this$1)})},UIkit.prototype._callConnected=function(){var this$1=this;this._connected||(this._data={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook("connected"),this._isReady||ready(function(){return this$1._callReady()}),this._callUpdate())},UIkit.prototype._callDisconnected=function(){this._connected&&(this._callHook("beforeDisconnect"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1)},UIkit.prototype._callReady=function(){this._isReady||(this._isReady=!0,this._callHook("ready"),this._resetComputeds(),this._callUpdate())},UIkit.prototype._callUpdate=function(e){var this$1=this,type=(e=createEvent(e||"update")).type;includes(["update","load","resize"],type)&&this._resetComputeds();var updates=this.$options.update,ref=this._frames,reads=ref.reads,writes=ref.writes;updates&&updates.forEach(function(ref,i){var read=ref.read,write=ref.write,events=ref.events;("update"===type||includes(events,type))&&(read&&!includes(fastdom.reads,reads[i])&&(reads[i]=fastdom.read(function(){var result=this$1._connected&&read.call(this$1,this$1._data,e);!1===result&&write?(fastdom.clear(writes[i]),delete writes[i]):isPlainObject(result)&&assign(this$1._data,result),delete reads[i]})),write&&!includes(fastdom.writes,writes[i])&&(writes[i]=fastdom.write(function(){this$1._connected&&write.call(this$1,this$1._data,e),delete writes[i]})))})}}(UIkit),function(UIkit){var uid=0;function getProps(opts,name){var data$$1={},args=opts.args;void 0===args&&(args=[]);var props=opts.props;void 0===props&&(props={});var el=opts.el;if(!props)return data$$1;for(var key in props){var prop=hyphenate(key);if(hasAttr(el,prop)){var value=coerce(props[key],attr(el,prop));if("target"===prop&&(!value||startsWith(value,"_")))continue;data$$1[key]=value}}var options=parseOptions(data(el,name),args);for(var key$1 in options){var prop$1=camelize(key$1);void 0!==props[prop$1]&&(data$$1[prop$1]=coerce(props[prop$1],options[key$1]))}return data$$1}function registerComputed(component,key,cb){Object.defineProperty(component,key,{enumerable:!0,get:function(){var _computeds=component._computeds,$props=component.$props,$el=component.$el;return hasOwn(_computeds,key)||(_computeds[key]=cb.call(component,$props,$el)),_computeds[key]},set:function(value){component._computeds[key]=value}})}function registerEvent(component,event,key){isPlainObject(event)||(event={name:key,handler:event});var listener,name=event.name,el=event.el,handler=event.handler,capture=event.capture,delegate=event.delegate,filter$$1=event.filter,self=event.self;el=isFunction(el)?el.call(component):el||component.$el,isArray(el)?el.forEach(function(el){return registerEvent(component,assign({},event,{el:el}),key)}):!el||filter$$1&&!filter$$1.call(component)||(listener=isString(handler)?component[handler]:bind(handler,component),handler=function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)},self&&(handler=function(handler){return function(e){if(e.target===e.currentTarget||e.target===e.current)return handler.call(null,e)}}(handler)),component._events.push(on(el,name,delegate?isString(delegate)?delegate:delegate.call(component):null,handler,capture)))}function notIn(options,key){return options.every(function(arr){return!arr||!hasOwn(arr,key)})}function coerce(type,value){return type===Boolean?toBoolean(value):type===Number?toNumber(value):"list"===type?toList(value):"media"===type?function(value){if(isString(value))if("@"===value[0]){var name="media-"+value.substr(1);value=toFloat(getCssVar(name))}else if(isNaN(value))return value;return!(!value||isNaN(value))&&"(min-width: "+value+"px)"}(value):type?type(value):value}UIkit.prototype._init=function(options){(options=options||{}).data=function(ref,ref$1){var data$$1=ref.data,args=(ref.el,ref$1.args),props=ref$1.props;if(void 0===props&&(props={}),data$$1=isArray(data$$1)?args&&args.length?data$$1.slice(0,args.length).reduce(function(data$$1,value,index$$1){return isPlainObject(value)?assign(data$$1,value):data$$1[args[index$$1]]=value,data$$1},{}):void 0:data$$1)for(var key in data$$1)isUndefined(data$$1[key])?delete data$$1[key]:data$$1[key]=props[key]?coerce(props[key],data$$1[key]):data$$1[key];return data$$1}(options,this.constructor.options),this.$options=mergeOptions(this.constructor.options,options,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=uid++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),options.el&&this.$mount(options.el)},UIkit.prototype._initData=function(){var data$$1=this.$options.data;for(var key in void 0===data$$1&&(data$$1={}),data$$1)this.$props[key]=this[key]=data$$1[key]},UIkit.prototype._initMethods=function(){var methods=this.$options.methods;if(methods)for(var key in methods)this[key]=bind(methods[key],this)},UIkit.prototype._initComputeds=function(){var computed=this.$options.computed;if(this._resetComputeds(),computed)for(var key in computed)registerComputed(this,key,computed[key])},UIkit.prototype._resetComputeds=function(){this._computeds={}},UIkit.prototype._initProps=function(props){var key;for(key in this._resetComputeds(),props=props||getProps(this.$options,this.$name))isUndefined(props[key])||(this.$props[key]=props[key]);var exclude=[this.$options.computed,this.$options.methods];for(key in this.$props)key in props&&notIn(exclude,key)&&(this[key]=this.$props[key])},UIkit.prototype._initEvents=function(){var this$1=this,events=this.$options.events;events&&events.forEach(function(event){if(hasOwn(event,"handler"))registerEvent(this$1,event);else for(var key in event)registerEvent(this$1,event[key],key)})},UIkit.prototype._unbindEvents=function(){this._events.forEach(function(unbind){return unbind()}),this._events=[]},UIkit.prototype._initObserver=function(){var this$1=this,ref=this.$options,attrs=ref.attrs,props=ref.props,el=ref.el;!this._observer&&props&&attrs&&(attrs=isArray(attrs)?attrs:Object.keys(props).map(function(key){return hyphenate(key)}),this._observer=new MutationObserver(function(){var data$$1=getProps(this$1.$options,this$1.$name);attrs.some(function(key){return!isUndefined(data$$1[key])&&data$$1[key]!==this$1.$props[key]})&&this$1.$reset()}),this._observer.observe(el,{attributes:!0,attributeFilter:attrs.concat([this.$name,"data-"+this.$name])}))}}(UIkit),function(UIkit){var DATA=UIkit.data,components={};UIkit.component=function(name,options){if(!options)return isPlainObject(components[name])&&(components[name]=UIkit.extend(components[name])),components[name];UIkit[name]=function(element,data$$1){for(var i=arguments.length,argsArray=Array(i);i--;)argsArray[i]=arguments[i];var component=UIkit.component(name);return isPlainObject(element)?new component({data:element}):component.options.functional?new component({data:[].concat(argsArray)}):element&&element.nodeType?init(element):$$(element).map(init)[0];function init(element){var instance=UIkit.getComponent(element,name);if(instance){if(!data$$1)return instance;instance.$destroy()}return new component({el:element,data:data$$1})}};var opt=isPlainObject(options)?assign({},options):options.options;if(opt.name=name,opt.install&&opt.install(UIkit,opt,name),UIkit._initialized&&!opt.functional){var id=hyphenate(name);fastdom.read(function(){return UIkit[name]("[uk-"+id+"],[data-uk-"+id+"]")})}return components[name]=isPlainObject(options)?opt:options},UIkit.getComponents=function(element){return element&&element[DATA]||{}},UIkit.getComponent=function(element,name){return UIkit.getComponents(element)[name]},UIkit.connect=function(node){if(node[DATA])for(var name in node[DATA])node[DATA][name]._callConnected();for(var i=0;i<node.attributes.length;i++){var name$1=getComponentName(node.attributes[i].name);name$1&&name$1 in components&&UIkit[name$1](node)}},UIkit.disconnect=function(node){for(var name in node[DATA])node[DATA][name]._callDisconnected()}}(UIkit),function(UIkit){var DATA=UIkit.data;UIkit.prototype.$mount=function(el){var name=this.$options.name;el[DATA]||(el[DATA]={}),el[DATA][name]||(el[DATA][name]=this,this.$el=this.$options.el=this.$options.el||el,this._callHook("init"),within(el,document)&&this._callConnected())},UIkit.prototype.$emit=function(e){this._callUpdate(e)},UIkit.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},UIkit.prototype.$destroy=function(removeEl){void 0===removeEl&&(removeEl=!1);var ref=this.$options,el=ref.el,name=ref.name;el&&this._callDisconnected(),this._callHook("destroy"),el&&el[DATA]&&(delete el[DATA][name],Object.keys(el[DATA]).length||delete el[DATA],removeEl&&remove(this.$el))},UIkit.prototype.$create=function(component,element,data$$1){return UIkit[component](element,data$$1)},UIkit.prototype.$update=UIkit.update,UIkit.prototype.$getComponent=UIkit.getComponent;var names={};Object.defineProperties(UIkit.prototype,{$container:Object.getOwnPropertyDescriptor(UIkit,"container"),$name:{get:function(){var name=this.$options.name;return names[name]||(names[name]=UIkit.prefix+hyphenate(name)),names[name]}}})}(UIkit);var Class={connected:function(){addClass(this.$el,this.$name)}},Togglable={props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",queued:!1,initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(ref){return!!ref.animation[0]},hasTransition:function(ref){var animation=ref.animation;return this.hasAnimation&&!0===animation[0]}},methods:{toggleElement:function(targets,show,animate$$1){var this$1=this;return new Promise$1(function(resolve){var p,all=function(targets){return Promise$1.all(targets.map(function(el){return this$1._toggleElement(el,show,animate$$1)}))},toggled=(targets=toNodes(targets)).filter(function(el){return this$1.isToggled(el)}),untoggled=targets.filter(function(el){return!includes(toggled,el)});if(this$1.queued&&isUndefined(animate$$1)&&isUndefined(show)&&this$1.hasAnimation&&!(targets.length<2)){var body=document.body,scroll=body.scrollTop,el=toggled[0],inProgress=Animation.inProgress(el)&&hasClass(el,"uk-animation-leave")||Transition.inProgress(el)&&"0px"===el.style.height;p=all(toggled),inProgress||(p=p.then(function(){var p=all(untoggled);return body.scrollTop=scroll,p}))}else p=all(untoggled.concat(toggled));p.then(resolve,noop)})},toggleNow:function(targets,show){var this$1=this;return new Promise$1(function(resolve){return Promise$1.all(toNodes(targets).map(function(el){return this$1._toggleElement(el,show,!1)})).then(resolve,noop)})},isToggled:function(el){var nodes=toNodes(el||this.$el);return this.cls?hasClass(nodes,this.cls.split(" ")[0]):!hasAttr(nodes,"hidden")},updateAria:function(el){!1===this.cls&&attr(el,"aria-hidden",!this.isToggled(el))},_toggleElement:function(el,show,animate$$1){var this$1=this;if(show=isBoolean(show)?show:Animation.inProgress(el)?hasClass(el,"uk-animation-leave"):Transition.inProgress(el)?"0px"===el.style.height:!this.isToggled(el),!trigger(el,"before"+(show?"show":"hide"),[this]))return Promise$1.reject();var promise=(!1!==animate$$1&&this.hasAnimation?this.hasTransition?this._toggleHeight:this._toggleAnimation:this._toggleImmediate)(el,show);return trigger(el,show?"show":"hide",[this]),promise.then(function(){trigger(el,show?"shown":"hidden",[this$1]),this$1.$update(el)})},_toggle:function(el,toggled){var changed;el&&(this.cls?(changed=includes(this.cls," ")||Boolean(toggled)!==hasClass(el,this.cls))&&toggleClass(el,this.cls,includes(this.cls," ")?void 0:toggled):(changed=Boolean(toggled)===hasAttr(el,"hidden"))&&attr(el,"hidden",toggled?null:""),$$("[autofocus]",el).some(function(el){return isVisible(el)&&(el.focus()||!0)}),this.updateAria(el),changed&&this.$update(el))},_toggleImmediate:function(el,show){return this._toggle(el,show),Promise$1.resolve()},_toggleHeight:function(el,show){var this$1=this,inProgress=Transition.inProgress(el),inner=el.hasChildNodes?toFloat(css(el.firstElementChild,"marginTop"))+toFloat(css(el.lastElementChild,"marginBottom")):0,currentHeight=isVisible(el)?height(el)+(inProgress?0:inner):0;Transition.cancel(el),this.isToggled(el)||this._toggle(el,!0),height(el,""),fastdom.flush();var endHeight=height(el)+(inProgress?0:inner);return height(el,currentHeight),(show?Transition.start(el,assign({},this.initProps,{overflow:"hidden",height:endHeight}),Math.round(this.duration*(1-currentHeight/endHeight)),this.transition):Transition.start(el,this.hideProps,Math.round(this.duration*(currentHeight/endHeight)),this.transition).then(function(){return this$1._toggle(el,!1)})).then(function(){return css(el,this$1.initProps)})},_toggleAnimation:function(el,show){var this$1=this;return Animation.cancel(el),show?(this._toggle(el,!0),Animation.in(el,this.animation[0],this.duration,this.origin)):Animation.out(el,this.animation[1]||this.animation[0],this.duration,this.origin).then(function(){return this$1._toggle(el,!1)})}}},Accordion={mixins:[Class,Togglable],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:"> *",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",transition:"ease"},computed:{items:function(ref,$el){return $$(ref.targets,$el)}},events:[{name:"click",delegate:function(){return this.targets+" "+this.$props.toggle},handler:function(e){e.preventDefault(),this.toggle(index($$(this.targets+" "+this.$props.toggle,this.$el),e.current))}}],connected:function(){if(!1!==this.active){var active=this.items[Number(this.active)];active&&!hasClass(active,this.clsOpen)&&this.toggle(active,!1)}},update:function(){var this$1=this;this.items.forEach(function(el){return this$1._toggleImmediate($(this$1.content,el),hasClass(el,this$1.clsOpen))});var active=!this.collapsible&&!hasClass(this.items,this.clsOpen)&&this.items[0];active&&this.toggle(active,!1)},methods:{toggle:function(item,animate$$1){var this$1=this,index$$1=getIndex(item,this.items),active=filter(this.items,"."+this.clsOpen);(item=this.items[index$$1])&&[item].concat(!this.multiple&&!includes(active,item)&&active||[]).forEach(function(el){var isItem=el===item,state=isItem&&!hasClass(el,this$1.clsOpen);if(state||!isItem||this$1.collapsible||!(active.length<2)){toggleClass(el,this$1.clsOpen,state);var content=el._wrapper?el._wrapper.firstElementChild:$(this$1.content,el);el._wrapper||(el._wrapper=wrapAll(content,"<div>"),attr(el._wrapper,"hidden",state?"":null)),this$1._toggleImmediate(content,!0),this$1.toggleElement(el._wrapper,state,animate$$1).then(function(){hasClass(el,this$1.clsOpen)===state&&(state||this$1._toggleImmediate(content,!1),el._wrapper=null,unwrap(content))})}})}}},Alert={attrs:!0,mixins:[Class,Togglable],args:"animation",props:{close:String},data:{animation:[!0],selClose:".uk-alert-close",duration:150,hideProps:assign({opacity:0},Togglable.data.hideProps)},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.close()}}],methods:{close:function(){var this$1=this;this.toggleElement(this.$el).then(function(){return this$1.$destroy(!0)})}}};function Core(UIkit){ready(function(){var scroll=0,started=0;if(on(window,"load resize",function(e){return UIkit.update(null,e)}),on(window,"scroll",function(e){e.dir=scroll<=window.pageYOffset?"down":"up",e.pageYOffset=scroll=window.pageYOffset,UIkit.update(null,e)},{capture:!0,passive:!1}),on(document,"animationstart",function(ref){var target=ref.target;(css(target,"animationName")||"").match(/^uk-.*(left|right)/)&&(started++,css(document.body,"overflowX","hidden"),setTimeout(function(){--started||css(document.body,"overflowX","")},toMs(css(target,"animationDuration"))+100))},!0),hasTouch){var cls="uk-hover";on(document,"tap",function(ref){var target=ref.target;return $$("."+cls).forEach(function(el){return!within(target,el)&&removeClass(el,cls)})}),Object.defineProperty(UIkit,"hoverSelector",{set:function(selector){on(document,"tap",selector,function(ref){return addClass(ref.current,cls)})}}),UIkit.hoverSelector=".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"}})}var active,registered,Video={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(ref){return"inview"===ref.autoplay}},connected:function(){this.inView&&!hasAttr(this.$el,"preload")&&(this.$el.preload="none")},ready:function(){this.player=new Player(this.$el),this.automute&&this.player.mute()},update:[{read:function(_,ref){var type=ref.type;return!(!this.player||!("scroll"!==type&&"resize"!==type||this.inView))&&{visible:isVisible(this.$el)&&"hidden"!==css(this.$el,"visibility"),inView:this.inView&&isInView(this.$el)}},write:function(ref){var visible=ref.visible,inView=ref.inView;!visible||this.inView&&!inView?this.player.pause():(!0===this.autoplay||this.inView&&inView)&&this.player.play()},events:["load","resize","scroll"]}]},Cover={mixins:[Class,Video],props:{width:Number,height:Number},data:{automute:!0},update:{write:function(){var el=this.$el;if(isVisible(el)){var ref=el.parentNode,height$$1=ref.offsetHeight,width$$1=ref.offsetWidth;css(css(el,{width:"",height:""}),Dimensions.cover({width:this.width||el.clientWidth,height:this.height||el.clientHeight},{width:width$$1+(width$$1%2?1:0),height:height$$1+(height$$1%2?1:0)}))}},events:["load","resize"]},events:{loadedmetadata:function(){this.$emit()}}},Position={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(ref){var pos=ref.pos;return(pos+(includes(pos,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(element,target,boundary){var node;removeClasses(element,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?"),css(element,{top:"",left:""});var offset$$1=this.offset;offset$$1=isNumeric(offset$$1)?offset$$1:(node=$(offset$$1))?offset(node)["x"===axis?"left":"top"]-offset(target)["x"===axis?"right":"bottom"]:0;var axis=this.getAxis(),ref$1=positionAt(element,target,"x"===axis?flipPosition(this.dir)+" "+this.align:this.align+" "+flipPosition(this.dir),"x"===axis?this.dir+" "+this.align:this.align+" "+this.dir,"x"===axis?""+("left"===this.dir?-offset$$1:offset$$1):" "+("top"===this.dir?-offset$$1:offset$$1),null,this.flip,boundary).target,x=ref$1.x,y=ref$1.y;this.dir="x"===axis?x:y,this.align="x"===axis?y:x,toggleClass(element,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}},Drop={mixins:[Position,Togglable],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:["click","hover"],toggle:"- *",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:["uk-animation-fade"],cls:"uk-open"},computed:{boundary:function(ref,$el){return query(ref.boundary,$el)},clsDrop:function(ref){return ref.clsDrop||"uk-"+this.$options.name},clsPos:function(){return this.clsDrop}},init:function(){this.tracker=new MouseTracker},connected:function(){addClass(this.$el,this.clsDrop);var toggle=this.$props.toggle;this.toggle=toggle&&this.$create("toggle",query(toggle,this.$el),{target:this.$el,mode:this.mode}),this.updateAria(this.$el)},events:[{name:"click",delegate:function(){return"."+this.clsDrop+"-close"},handler:function(e){e.preventDefault(),this.hide(!1)}},{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(e){if(!e.defaultPrevented){var id=e.target.hash;id||e.preventDefault(),id&&within(id,this.$el)||this.hide(!1)}}},{name:"beforescroll",handler:function(){this.hide(!1)}},{name:"toggle",self:!0,handler:function(e,toggle){e.preventDefault(),this.isToggled()?this.hide(!1):this.show(toggle,!1)}},{name:pointerEnter,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||(active&&active!==this&&active.toggle&&includes(active.toggle.mode,"hover")&&!within(e.target,active.toggle.$el)&&!pointInRect({x:e.pageX,y:e.pageY},offset(active.$el))&&active.hide(!1),e.preventDefault(),this.show(this.toggle))}},{name:"toggleshow",handler:function(e,toggle){toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.show(toggle||this.toggle))}},{name:"togglehide "+pointerLeave,handler:function(e,toggle){isTouch(e)||toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.toggle&&includes(this.toggle.mode,"hover")&&this.hide())}},{name:"beforeshow",self:!0,handler:function(){this.clearTimers(),Animation.cancel(this.$el),this.position()}},{name:"show",self:!0,handler:function(){this.tracker.init(),this.toggle&&(addClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","true")),function(){if(registered)return;registered=!0,on(document,"click",function(ref){var prev,target=ref.target,defaultPrevented=ref.defaultPrevented;if(!defaultPrevented)for(;active&&active!==prev&&!within(target,active.$el)&&(!active.toggle||!within(target,active.toggle.$el));)prev=active,active.hide(!1)})}()}},{name:"beforehide",self:!0,handler:function(){this.clearTimers()}},{name:"hide",handler:function(ref){var target=ref.target;this.$el===target?(active=this.isActive()?null:active,this.toggle&&(removeClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","false"),this.toggle.$el.blur(),$$("a, button",this.toggle.$el).forEach(function(el){return el.blur()})),this.tracker.cancel()):active=null===active&&within(target,this.$el)&&this.isToggled()?this:active}}],update:{write:function(){this.isToggled()&&!Animation.inProgress(this.$el)&&this.position()},events:["resize"]},methods:{show:function(toggle,delay){var this$1=this;void 0===delay&&(delay=!0);var show=function(){return!this$1.isToggled()&&this$1.toggleElement(this$1.$el,!0)},tryShow=function(){if(this$1.toggle=toggle||this$1.toggle,this$1.clearTimers(),!this$1.isActive())if(delay&&active&&active!==this$1&&active.isDelaying)this$1.showTimer=setTimeout(this$1.show,10);else{if(this$1.isParentOf(active)){if(!active.hideTimer)return;active.hide(!1)}else if(active&&!this$1.isChildOf(active)&&!this$1.isParentOf(active))for(var prev;active&&active!==prev&&!this$1.isChildOf(active);)prev=active,active.hide(!1);delay&&this$1.delayShow?this$1.showTimer=setTimeout(show,this$1.delayShow):show(),active=this$1}};toggle&&this.toggle&&toggle.$el!==this.toggle.$el?(once(this.$el,"hide",tryShow),this.hide(!1)):tryShow()},hide:function(delay){var this$1=this;void 0===delay&&(delay=!0);var hide=function(){return this$1.toggleNow(this$1.$el,!1)};this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),delay&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):delay&&this.delayHide?this.hideTimer=setTimeout(hide,this.delayHide):hide()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return active===this},isChildOf:function(drop){return drop&&drop!==this&&within(this.$el,drop.$el)},isParentOf:function(drop){return drop&&drop!==this&&within(drop.$el,this.$el)},position:function(){removeClasses(this.$el,this.clsDrop+"-(stack|boundary)"),css(this.$el,{top:"",left:"",display:"block"}),toggleClass(this.$el,this.clsDrop+"-boundary",this.boundaryAlign);var boundary=offset(this.boundary),alignTo=this.boundaryAlign?boundary:offset(this.toggle.$el);if("justify"===this.align){var prop="y"===this.getAxis()?"width":"height";css(this.$el,prop,alignTo[prop])}else this.$el.offsetWidth>Math.max(boundary.right-alignTo.left,alignTo.right-boundary.left)&&addClass(this.$el,this.clsDrop+"-stack");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),css(this.$el,"display","")}}};var Dropdown={extends:Drop},FormCustom={mixins:[Class],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:function(_,$el){return $(selInput,$el)},state:function(){return this.input.nextElementSibling},target:function(ref,$el){var target=ref.target;return target&&(!0===target&&this.input.parentNode===$el&&this.input.nextElementSibling||query(target,$el))}},update:function(){var target=this.target,input=this.input;if(target){var option,prop=isInput(target)?"value":"textContent",prev=target[prop],value=input.files&&input.files[0]?input.files[0].name:matches(input,"select")&&(option=$$("option",input).filter(function(el){return el.selected})[0])?option.textContent:input.value;prev!==value&&(target[prop]=value)}},events:[{name:"focusin focusout mouseenter mouseleave",delegate:selInput,handler:function(ref){var type=ref.type;ref.current===this.input&&toggleClass(this.state,"uk-"+(includes(type,"focus")?"focus":"hover"),includes(["focusin","mouseenter"],type))}},{name:"change",handler:function(){this.$emit()}}]},Gif={update:{read:function(data$$1){var inview=isInView(this.$el);if(!inview||data$$1.isInView===inview)return!1;data$$1.isInView=inview},write:function(){this.$el.src=this.$el.src},events:["scroll","load","resize"]}},Margin={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},update:{read:function(data$$1){var items=this.$el.children;if(!items.length||!isVisible(this.$el))return data$$1.rows=[[]];data$$1.rows=getRows(items),data$$1.stacks=!data$$1.rows.some(function(row){return row.length>1})},write:function(ref){var this$1=this;ref.rows.forEach(function(row,i){return row.forEach(function(el,j){toggleClass(el,this$1.margin,0!==i),toggleClass(el,this$1.firstColumn,0===j)})})},events:["load","resize"]}};function getRows(items){for(var rows=[[]],i=0;i<items.length;i++){var el=items[i],dim=getOffset(el);if(dim.height)for(var j=rows.length-1;j>=0;j--){var row=rows[j];if(!row[0]){row.push(el);break}var leftDim=getOffset(row[0]);if(dim.top>=leftDim.bottom-1){rows.push([el]);break}if(dim.bottom>leftDim.top){if(dim.left<leftDim.left&&!isRtl){row.unshift(el);break}row.push(el);break}if(0===j){rows.unshift([el]);break}}}return rows}function getOffset(element){var offsetTop=element.offsetTop,offsetLeft=element.offsetLeft,offsetHeight=element.offsetHeight;return{top:offsetTop,left:offsetLeft,height:offsetHeight,bottom:offsetTop+offsetHeight}}var Grid={extends:Margin,mixins:[Class],attrs:!0,name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},computed:{parallax:function(ref){var parallax=ref.parallax;return Math.abs(parallax)}},connected:function(){this.masonry&&addClass(this.$el,"uk-flex-top uk-flex-wrap-top")},update:[{read:function(ref){var rows=ref.rows;(this.masonry||this.parallax)&&(rows=rows.map(function(elements){return sortBy(elements,"offsetLeft")}));var root,cls,nodes,node,translates=!1,elHeight=!1;if(this.masonry){var height$$1=0;translates=rows.reduce(function(translates,row,i){return translates[i]=row.map(function(_,j){return 0===i?0:toFloat(translates[i-1][j])+(height$$1-toFloat(rows[i-1][j]&&rows[i-1][j].offsetHeight))}),height$$1=row.reduce(function(height$$1,el){return Math.max(height$$1,el.offsetHeight)},0),translates},[]),elHeight=function(rows){return Math.max.apply(Math,rows.reduce(function(sum,row){return row.forEach(function(el,i){return sum[i]=(sum[i]||0)+el.offsetHeight}),sum},[]))}(rows)+(root=this.$el,cls=this.margin,nodes=toNodes(root.children),toFloat((node=nodes.filter(function(el){return hasClass(el,cls)})[0])?css(node,"marginTop"):css(nodes[0],"paddingLeft"))*(rows.length-1))}return{rows:rows,translates:translates,height:elHeight}},write:function(ref){var rows=ref.rows,stacks=ref.stacks,height$$1=ref.height;toggleClass(this.$el,this.clsStack,stacks),css(this.$el,"paddingBottom",this.parallax&&rows.some(function(row){return row.length>1})?this.parallax:""),height$$1&&css(this.$el,"minHeight",height$$1)},events:["load","resize"]},{read:function(ref){var rows=ref.rows,height$$1=ref.height;return{scrolled:!(!this.parallax||!rows.some(function(row){return row.length>1}))&&scrolledOver(this.$el,height$$1?height$$1-height(this.$el):0)*this.parallax}},write:function(ref){var rows=ref.rows,scrolled=ref.scrolled,translates=ref.translates;(!1!==scrolled||translates)&&rows.forEach(function(row,i){return row.forEach(function(el,j){return css(el,"transform",scrolled||translates?"translateY("+((translates&&-translates[i][j])+(scrolled?j%2?scrolled:scrolled/8:0))+"px)":"")})})},events:["scroll","load","resize"]}]};var HeightMatch={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:function(ref,$el){return $$(ref.target,$el)}},update:{read:function(){var this$1=this;return css(this.elements,{minHeight:"",boxSizing:""}),{rows:this.row?getRows(this.elements).map(function(elements){return this$1.match(elements)}):[this.match(this.elements)]}},write:function(ref){ref.rows.forEach(function(ref){var height$$1=ref.height;return css(ref.elements,{minHeight:height$$1,boxSizing:"border-box"})})},events:["load","resize"]},methods:{match:function(elements){if(elements.length<2)return{};var heights=[],max=0;return elements.forEach(function(el){var height$$1=offset(el).height;max=Math.max(max,height$$1),heights.push(height$$1)}),elements=elements.filter(function(el,i){return heights[i]<max}),{height:max,elements:elements}}}},HeightViewport={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{write:function(){css(this.$el,"boxSizing","border-box");var minHeight,viewport=height(window),offsetTop=0;if(this.expand){css(this.$el,{height:"",minHeight:""});var diff=viewport-offsetHeight(document.documentElement);diff>0&&(minHeight=offsetHeight(this.$el)+diff)}else{var top=offset(this.$el).top;top<viewport/2&&this.offsetTop&&(offsetTop+=top),!0===this.offsetBottom?offsetTop+=offsetHeight(this.$el.nextElementSibling):isNumeric(this.offsetBottom)?offsetTop+=viewport/100*this.offsetBottom:this.offsetBottom&&endsWith(this.offsetBottom,"px")?offsetTop+=toFloat(this.offsetBottom):isString(this.offsetBottom)&&(offsetTop+=offsetHeight(query(this.offsetBottom,this.$el))),minHeight=offsetTop?"calc(100vh - "+offsetTop+"px)":"100vh"}if(minHeight){css(this.$el,{height:"",minHeight:minHeight});var elHeight=this.$el.offsetHeight;this.minHeight&&this.minHeight>elHeight&&css(this.$el,"minHeight",this.minHeight),viewport-offsetTop>=elHeight&&css(this.$el,"height",minHeight)}},events:["load","resize"]}};function offsetHeight(el){return el&&el.offsetHeight||0}var svgs={},SVG={attrs:!0,props:{id:String,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String},data:{ratio:1,id:!1,exclude:["ratio","src","icon"],class:""},connected:function(){var assign$$1,this$1=this;if(this.class+=" uk-svg",!this.icon&&includes(this.src,"#")){var parts=this.src.split("#");parts.length>1&&(assign$$1=parts,this.src=assign$$1[0],this.icon=assign$$1[1])}this.svg=this.getSvg().then(function(svg){var el;if(isString(svg)?(this$1.icon&&includes(svg,"<symbol")&&(svg=function(svg,icon){if(!symbols[svg]){var match;for(symbols[svg]={};match=symbolRe.exec(svg);)symbols[svg][match[3]]='<svg xmlns="http://www.w3.org/2000/svg"'+match[1]+"svg>";symbolRe.lastIndex=0}return symbols[svg][icon]}(svg,this$1.icon)||svg),el=$(svg.substr(svg.indexOf("<svg")))):el=svg.cloneNode(!0),!el)return Promise$1.reject("SVG not found.");var dimensions=attr(el,"viewBox");for(var prop in dimensions&&(dimensions=dimensions.split(" "),this$1.width=this$1.$props.width||dimensions[2],this$1.height=this$1.$props.height||dimensions[3]),this$1.width*=this$1.ratio,this$1.height*=this$1.ratio,this$1.$options.props)this$1[prop]&&!includes(this$1.exclude,prop)&&attr(el,prop,this$1[prop]);this$1.id||removeAttr(el,"id"),this$1.width&&!this$1.height&&removeAttr(el,"height"),this$1.height&&!this$1.width&&removeAttr(el,"width");var root=this$1.$el;if(isVoidElement(root)||"CANVAS"===root.tagName){attr(root,{hidden:!0,id:null});var next=root.nextElementSibling;next&&el.isEqualNode(next)?el=next:after(root,el)}else{var last=root.lastElementChild;last&&el.isEqualNode(last)?el=last:append(root,el)}return this$1.svgEl=el,el},noop)},disconnected:function(){var this$1=this;isVoidElement(this.$el)&&attr(this.$el,{hidden:null,id:this.id||null}),this.svg&&this.svg.then(function(svg){return(!this$1._connected||svg!==this$1.svgEl)&&remove(svg)},noop),this.svg=this.svgEl=null},methods:{getSvg:function(){var this$1=this;return this.src?svgs[this.src]?svgs[this.src]:(svgs[this.src]=new Promise$1(function(resolve,reject){startsWith(this$1.src,"data:")?resolve(decodeURIComponent(this$1.src.split(",")[1])):ajax(this$1.src).then(function(xhr){return resolve(xhr.response)},function(){return reject("SVG not found.")})}),svgs[this.src]):Promise$1.reject()}}},symbolRe=/<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g,symbols={};var parsed={},icons={spinner:'<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="15" cy="15" r="14"/></svg>',totop:'<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "/></svg>',marker:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="4" width="1" height="11"/><rect x="4" y="9" width="11" height="1"/></svg>',"close-icon":'<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"/><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"/></svg>',"close-large":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.4" x1="1" y1="1" x2="19" y2="19"/><line fill="none" stroke="#000" stroke-width="1.4" x1="19" y1="1" x2="1" y2="19"/></svg>',"navbar-toggle-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="9" width="20" height="2"/><rect y="3" width="20" height="2"/><rect y="15" width="20" height="2"/></svg>',"overlay-icon":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="19" y="0" width="1" height="40"/><rect x="0" y="19" width="40" height="1"/></svg>',"pagination-next":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 1 6 6 1 11"/></svg>',"pagination-previous":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="6 1 1 6 6 11"/></svg>',"search-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"/><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"/></svg>',"search-large":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.8" cx="17.5" cy="17.5" r="16.5"/><line fill="none" stroke="#000" stroke-width="1.8" x1="38" y1="39" x2="29" y2="30"/></svg>',"search-navbar":'<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10.5" cy="10.5" r="9.5"/><line fill="none" stroke="#000" stroke-width="1.1" x1="23" y1="23" x2="17" y2="17"/></svg>',"slidenav-next":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="1.225,23 12.775,12 1.225,1 "/></svg>',"slidenav-next-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="4.002,38.547 22.527,20.024 4,1.5 "/></svg>',"slidenav-previous":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="12.775,1 1.225,12 12.775,23 "/></svg>',"slidenav-previous-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="20.527,1.5 2,20.024 20.525,38.547 "/></svg>'},Icon={install:function(UIkit){UIkit.icon.add=function(name,svg){var obj,added=isString(name)?((obj={})[name]=svg,obj):name;each(added,function(svg,name){icons[name]=svg,delete parsed[name]}),UIkit._initialized&&apply(document.body,function(el){return each(UIkit.getComponents(el),function(cmp){return cmp.$options.isIcon&&cmp.icon in added&&cmp.$reset()})})}},attrs:["icon","ratio"],mixins:[Class,SVG],args:"icon",props:["icon"],data:{exclude:["id","style","class","src","icon","ratio"]},isIcon:!0,connected:function(){addClass(this.$el,"uk-icon")},methods:{getSvg:function(){var icon=function(icon){if(!icons[icon])return null;parsed[icon]||(parsed[icon]=$(icons[icon].trim()));return parsed[icon]}(function(icon){return isRtl?swap(swap(icon,"left","right"),"previous","next"):icon}(this.icon));return icon?Promise$1.resolve(icon):Promise$1.reject("Icon not found.")}}},IconComponent={extends:Icon,data:function(vm){return{icon:hyphenate(vm.constructor.options.name)}}},Slidenav={extends:IconComponent,connected:function(){addClass(this.$el,"uk-slidenav")},computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-slidenav-large")?icon+"-large":icon}}},Search={extends:IconComponent,computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-search-icon")&&parents($el,".uk-search-large").length?"search-large":parents($el,".uk-search-navbar").length?"search-navbar":icon}}},Close={extends:IconComponent,computed:{icon:function(){return"close-"+(hasClass(this.$el,"uk-close-large")?"large":"icon")}}},Spinner={extends:IconComponent,connected:function(){var this$1=this;this.svg.then(function(svg){return 1!==this$1.ratio&&css($("circle",svg),"strokeWidth",1/this$1.ratio)},noop)}};var Img={attrs:!0,props:{dataSrc:String,dataSrcset:Boolean,dataSizes:Boolean,sizes:String,width:Number,height:Number,dataWidth:Number,dataHeight:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:"",dataSrcset:!1,dataSizes:!1,sizes:!1,width:!1,height:!1,offsetTop:"50vh",offsetLeft:0,target:!1},computed:{cacheKey:function(ref){var dataSrc=ref.dataSrc;return this.$name+"."+dataSrc},width:function(ref){var width$$1=ref.width,dataWidth=ref.dataWidth;return width$$1||dataWidth},height:function(ref){var height$$1=ref.height,dataHeight=ref.dataHeight;return height$$1||dataHeight},sizes:function(ref){var sizes=ref.sizes,dataSizes=ref.dataSizes;return sizes||dataSizes},isImg:function(_,$el){return isImg($el)},target:function(ref){var target=ref.target;return[this.$el].concat(queryAll(target,this.$el))},offsetTop:function(ref){return toPx(ref.offsetTop,"height")},offsetLeft:function(ref){return toPx(ref.offsetLeft,"width")}},connected:function(){storage[this.cacheKey]?setSrcAttrs(this.$el,storage[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&setSrcAttrs(this.$el,function(width$$1,height$$1,sizes,color){var assign$$1;void 0===color&&(color="transparent");if(sizes){for(var matches$$1;matches$$1=sizesRe.exec(sizes);)if(!matches$$1[1]||window.matchMedia(matches$$1[1]).matches){size=matches$$1[2],matches$$1=startsWith(size,"calc")?size.substring(5,size.length-1).replace(sizeRe,function(size){return toPx(size)}).replace(/ /g,"").match(additionRe).reduce(function(a,b){return a+ +b},0):size;break}sizesRe.lastIndex=0,assign$$1=Dimensions.ratio({width:width$$1,height:height$$1},"width",toPx(matches$$1||"100vw")),width$$1=assign$$1.width,height$$1=assign$$1.height}var size;var key=width$$1+"."+height$$1+"."+color;if(urlCache[key])return urlCache[key];var canvas=fragment("<canvas>");canvas.width=width$$1,canvas.height=height$$1;var context=canvas.getContext("2d");return context.fillStyle=color,context.fillRect(0,0,width$$1,height$$1),urlCache[key]=canvas.toDataURL("image/png")}(this.width,this.height,this.sizes))},update:[{read:function(ref){var this$1=this,delay=ref.delay,image=ref.image;if(delay){if(!image&&this.target.some(function(el){return isInView(el,this$1.offsetTop,this$1.offsetLeft,!0)}))return{image:getImage(this.dataSrc,this.dataSrcset,this.sizes).then(function(img){return setSrcAttrs(this$1.$el,currentSrc(img),img.srcset,img.sizes),storage[this$1.cacheKey]=currentSrc(img),img},noop)};!this.isImg&&image&&image.then(function(img){return img&&setSrcAttrs(this$1.$el,currentSrc(img))})}},write:function(data$$1){if(!data$$1.delay)return this.$emit(),data$$1.delay=!0},events:["scroll","load","resize"]}]};function setSrcAttrs(el,src,srcset,sizes){isImg(el)?(src&&(el.src=src),srcset&&(el.srcset=srcset),sizes&&(el.sizes=sizes)):src&&css(el,"backgroundImage","url("+src+")")}var urlCache={},sizesRe=/\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;var sizeRe=/\d+(?:\w+|%)/g,additionRe=/[+-]?(\d+)/g;function toPx(value,property,element){return void 0===property&&(property="width"),void 0===element&&(element=window),isNumeric(value)?+value:endsWith(value,"vw")?percent(element,"width",value):endsWith(value,"vh")?percent(element,"height",value):endsWith(value,"%")?percent(element,property,value):toFloat(value)}var dimensions={height:height,width:width};function percent(element,property,value){return dimensions[property](element)*toFloat(value)/100}function isImg(el){return"IMG"===el.tagName}function currentSrc(el){return el.currentSrc||el.src}var storage;try{(storage=window.sessionStorage||{}).__test__=1,delete storage.__test__}catch(e){storage={}}var active$1,events,Leader={mixins:[Class],props:{fill:String,media:"media"},data:{fill:"",media:!1,clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:function(ref){return ref.fill||getCssVar("leader-fill")}},connected:function(){var assign$$1;assign$$1=wrapInner(this.$el,'<span class="'+this.clsWrapper+'">'),this.wrapper=assign$$1[0]},disconnected:function(){unwrap(this.wrapper.childNodes)},update:[{read:function(ref){var changed=ref.changed,width$$1=ref.width,prev=width$$1;return{width:width$$1=Math.floor(this.$el.offsetWidth/2),changed:changed||prev!==width$$1,hide:this.media&&!window.matchMedia(this.media).matches}},write:function(data$$1){toggleClass(this.wrapper,this.clsHide,data$$1.hide),data$$1.changed&&(data$$1.changed=!1,attr(this.wrapper,this.attrFill,new Array(data$$1.width).join(this.fill)))},events:["load","resize"]}]},Container={props:{container:Boolean},data:{container:!0},computed:{container:function(ref){var container=ref.container;return!0===container&&this.$container||container&&$(container)}}},Modal={mixins:[Class,Container,Togglable],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(ref,$el){return $(ref.selPanel,$el)},transitionElement:function(){return this.panel},transitionDuration:function(){return toMs(css(this.transitionElement,"transitionDuration"))},bgClose:function(ref){return ref.bgClose&&this.panel}},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.hide()}},{name:"toggle",self:!0,handler:function(e){e.defaultPrevented||(e.preventDefault(),this.toggle())}},{name:"beforeshow",self:!0,handler:function(e){var prev=active$1&&active$1!==this&&active$1;if(active$1=this,prev){if(!this.stack)return prev.hide().then(this.show),void e.preventDefault();this.prev=prev}!function(){if(events)return;events=[on(document,"click",function(ref){var target=ref.target,defaultPrevented=ref.defaultPrevented;!active$1||!active$1.bgClose||defaultPrevented||active$1.overlay&&!within(target,active$1.$el)||within(target,active$1.panel)||active$1.hide()}),on(document,"keydown",function(e){27===e.keyCode&&active$1&&active$1.escClose&&(e.preventDefault(),active$1.hide())})]}()}},{name:"beforehide",self:!0,handler:function(){(active$1=active$1&&active$1!==this&&active$1||this.prev)||(events&&events.forEach(function(unbind){return unbind()}),events=null)}},{name:"show",self:!0,handler:function(){hasClass(document.documentElement,this.clsPage)||(this.scrollbarWidth=width(window)-width(document),css(document.body,"overflowY",this.scrollbarWidth&&this.overlay?"scroll":"")),addClass(document.documentElement,this.clsPage)}},{name:"hidden",self:!0,handler:function(){for(var found,prev=this.prev;prev;){if(prev.clsPage===this.clsPage){found=!0;break}prev=prev.prev}found||removeClass(document.documentElement,this.clsPage),!this.prev&&css(document.body,"overflowY","")}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){return this.isToggled()?Promise$1.resolve():(this.container&&this.$el.parentNode!==this.container&&(append(this.container,this.$el),this._callConnected()),this.toggleNow(this.$el,!0))},hide:function(){return this.isToggled()?this.toggleNow(this.$el,!1):Promise$1.resolve()},getActive:function(){return active$1},_toggleImmediate:function(el,show){var this$1=this;return new Promise$1(function(resolve){return requestAnimationFrame(function(){this$1._toggle(el,show),this$1.transitionDuration?once(this$1.transitionElement,"transitionend",resolve,!1,function(e){return e.target===this$1.transitionElement}):resolve()})})}}};var Modal$1={install:function(UIkit){UIkit.modal.dialog=function(content,options){var dialog=UIkit.modal(' <div class="uk-modal"> <div class="uk-modal-dialog">'+content+"</div> </div> ",options);return dialog.show(),on(dialog.$el,"hidden",function(ref){var target=ref.target,currentTarget=ref.currentTarget;target===currentTarget&&dialog.$destroy(!0)}),dialog},UIkit.modal.alert=function(message,options){return options=assign({bgClose:!1,escClose:!1,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){return on(UIkit.modal.dialog(' <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>'+options.labels.ok+"</button> </div> ",options).$el,"hide",resolve)})},UIkit.modal.confirm=function(message,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve,reject){var confirm=UIkit.modal.dialog(' <form> <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary" autofocus>'+options.labels.ok+"</button> </div> </form> ",options),resolved=!1;on(confirm.$el,"submit","form",function(e){e.preventDefault(),resolve(),resolved=!0,confirm.hide()}),on(confirm.$el,"hide",function(){resolved||reject()})})},UIkit.modal.prompt=function(message,value,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){var prompt=UIkit.modal.dialog(' <form class="uk-form-stacked"> <div class="uk-modal-body"> <label>'+(isString(message)?message:html(message))+'</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary">'+options.labels.ok+"</button> </div> </form> ",options),input=$("input",prompt.$el);input.value=value;var resolved=!1;on(prompt.$el,"submit","form",function(e){e.preventDefault(),resolve(input.value),resolved=!0,prompt.hide()}),on(prompt.$el,"hide",function(){resolved||resolve(null)})})},UIkit.modal.labels={ok:"Ok",cancel:"Cancel"}},mixins:[Modal],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler:function(){hasClass(this.panel,"uk-margin-auto-vertical")?addClass(this.$el,"uk-flex"):css(this.$el,"display","block"),height(this.$el)}},{name:"hidden",self:!0,handler:function(){css(this.$el,"display",""),removeClass(this.$el,"uk-flex")}}]};var scroll,Nav={extends:Accordion,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},Navbar={mixins:[Class],props:{dropdown:String,mode:"list",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:".uk-navbar-nav > li",align:isRtl?"right":"left",clsDrop:"uk-navbar-dropdown",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:"x",boundary:!0,dropbar:!1,dropbarMode:"slide",dropbarAnchor:!1,duration:200},computed:{boundary:function(ref,$el){var boundary=ref.boundary,boundaryAlign=ref.boundaryAlign;return!0===boundary||boundaryAlign?$el:boundary},dropbarAnchor:function(ref,$el){return query(ref.dropbarAnchor,$el)},pos:function(ref){return"bottom-"+ref.align},dropdowns:function(ref,$el){return $$(ref.dropdown+" ."+ref.clsDrop,$el)}},beforeConnect:function(){var dropbar=this.$props.dropbar;this.dropbar=dropbar&&(query(dropbar,this.$el)||$("+ .uk-navbar-dropbar",this.$el)||$("<div></div>")),this.dropbar&&(addClass(this.dropbar,"uk-navbar-dropbar"),"slide"===this.dropbarMode&&addClass(this.dropbar,"uk-navbar-dropbar-slide"))},disconnected:function(){this.dropbar&&remove(this.dropbar)},update:function(){var this$1=this;this.$create("drop",this.dropdowns.filter(function(el){return!this$1.getDropdown(el)}),assign({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:"mouseover",delegate:function(){return this.dropdown},handler:function(ref){var current=ref.current,active=this.getActive();active&&active.toggle&&!within(active.toggle.$el,current)&&!active.tracker.movesTo(active.$el)&&active.hide(!1)}},{name:"mouseleave",el:function(){return this.dropbar},handler:function(){var active=this.getActive();active&&!matches(this.dropbar,":hover")&&active.hide()}},{name:"beforeshow",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||after(this.dropbarAnchor||this.$el,this.dropbar)}},{name:"show",capture:!0,filter:function(){return this.dropbar},handler:function(_,drop){var $el=drop.$el,dir=drop.dir;this.clsDrop&&addClass($el,this.clsDrop+"-dropbar"),"bottom"===dir&&this.transitionTo($el.offsetHeight+toFloat(css($el,"marginTop"))+toFloat(css($el,"marginBottom")),$el)}},{name:"beforehide",filter:function(){return this.dropbar},handler:function(e,ref){var $el=ref.$el,active=this.getActive();matches(this.dropbar,":hover")&&active&&active.$el===$el&&e.preventDefault()}},{name:"hide",filter:function(){return this.dropbar},handler:function(_,ref){var $el=ref.$el,active=this.getActive();(!active||active&&active.$el===$el)&&this.transitionTo(0)}}],methods:{getActive:function(){var active=this.dropdowns.map(this.getDropdown).filter(function(drop){return drop.isActive()})[0];return active&&includes(active.mode,"hover")&&within(active.toggle.$el,this.$el)&&active},transitionTo:function(newHeight,el){var dropbar=this.dropbar,oldHeight=isVisible(dropbar)?height(dropbar):0;return css(el=oldHeight<newHeight&&el,"clip","rect(0,"+el.offsetWidth+"px,"+oldHeight+"px,0)"),height(dropbar,oldHeight),Transition.cancel([el,dropbar]),Promise.all([Transition.start(dropbar,{height:newHeight},this.duration),Transition.start(el,{clip:"rect(0,"+el.offsetWidth+"px,"+newHeight+"px,0)"},this.duration)]).catch(noop).then(function(){return css(el,{clip:""})})},getDropdown:function(el){return this.$getComponent(el,"drop")||this.$getComponent(el,"dropdown")}}},Offcanvas={mixins:[Modal],args:"mode",props:{content:String,mode:String,flip:Boolean,overlay:Boolean},data:{content:".uk-offcanvas-content",mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContent:"uk-offcanvas-content",clsContentAnimation:"uk-offcanvas-content-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close"},computed:{content:function(ref){return $(ref.content)||document.body},clsFlip:function(ref){var flip=ref.flip,clsFlip=ref.clsFlip;return flip?clsFlip:""},clsOverlay:function(ref){var overlay=ref.overlay,clsOverlay=ref.clsOverlay;return overlay?clsOverlay:""},clsMode:function(ref){var mode=ref.mode;return ref.clsMode+"-"+mode},clsSidebarAnimation:function(ref){var mode=ref.mode,clsSidebarAnimation=ref.clsSidebarAnimation;return"none"===mode||"reveal"===mode?"":clsSidebarAnimation},clsContentAnimation:function(ref){var mode=ref.mode,clsContentAnimation=ref.clsContentAnimation;return"push"!==mode&&"reveal"!==mode?"":clsContentAnimation},transitionElement:function(ref){return"reveal"===ref.mode?this.panel.parentNode:this.panel}},update:{write:function(){this.getActive()===this&&((this.overlay||this.clsContentAnimation)&&width(this.content,width(window)-this.scrollbarWidth),this.overlay&&(height(this.content,height(window)),scroll&&(this.content.scrollTop=scroll.y)))},events:["resize"]},events:[{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(ref){var current=ref.current;current.hash&&$(current.hash,this.content)&&(scroll=null,this.hide())}},{name:"beforescroll",filter:function(){return this.overlay},handler:function(e,scroll,target){scroll&&target&&this.isToggled()&&$(target,this.content)&&(once(this.$el,"hidden",function(){return scroll.scrollTo(target)}),e.preventDefault())}},{name:"show",self:!0,handler:function(){scroll=scroll||{x:window.pageXOffset,y:window.pageYOffset},"reveal"!==this.mode||hasClass(this.panel,this.clsMode)||(wrapAll(this.panel,"<div>"),addClass(this.panel.parentNode,this.clsMode)),css(document.documentElement,"overflowY",(!this.clsContentAnimation||this.flip)&&this.scrollbarWidth&&this.overlay?"scroll":""),addClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),height(document.body),addClass(this.content,this.clsContentAnimation),addClass(this.panel,this.clsSidebarAnimation,"reveal"!==this.mode?this.clsMode:""),addClass(this.$el,this.clsOverlay),css(this.$el,"display","block"),height(this.$el)}},{name:"hide",self:!0,handler:function(){removeClass(this.content,this.clsContentAnimation);var active=this.getActive();("none"===this.mode||active&&active!==this&&active!==this.prev)&&trigger(this.panel,"transitionend")}},{name:"hidden",self:!0,handler:function(){if("reveal"===this.mode&&unwrap(this.panel),this.overlay){if(!scroll){var ref=this.content,x=ref.scrollLeft,y=ref.scrollTop;scroll={x:x,y:y}}}else scroll={x:window.pageXOffset,y:window.pageYOffset};removeClass(this.panel,this.clsSidebarAnimation,this.clsMode),removeClass(this.$el,this.clsOverlay),css(this.$el,"display",""),removeClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),document.body.scrollTop=scroll.y,css(document.documentElement,"overflowY",""),width(this.content,""),height(this.content,""),window.scroll(scroll.x,scroll.y),scroll=null}},{name:"swipeLeft swipeRight",handler:function(e){this.isToggled()&&isTouch(e)&&("swipeLeft"===e.type&&!this.flip||"swipeRight"===e.type&&this.flip)&&this.hide()}}]},OverflowAuto={mixins:[Class],computed:{modal:function(_,$el){return closest($el,".uk-modal")},panel:function(_,$el){return closest($el,".uk-modal-dialog")}},connected:function(){css(this.$el,"minHeight",150)},update:{write:function(){if(this.panel&&this.modal){var current=css(this.$el,"maxHeight");css(css(this.$el,"maxHeight",150),"maxHeight",Math.max(150,150+height(this.modal)-this.panel.offsetHeight)),current!==css(this.$el,"maxHeight")&&trigger(this.$el,"resize")}},events:["load","resize"]}},Responsive={props:["width","height"],connected:function(){addClass(this.$el,"uk-responsive-width")},update:{read:function(){return!!(isVisible(this.$el)&&this.width&&this.height)&&{width:width(this.$el.parentNode),height:this.height}},write:function(dim){height(this.$el,Dimensions.contain({height:this.height,width:this.width},dim).height)},events:["load","resize"]}},Scroll={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(el){var this$1=this;el=el&&$(el)||document.body;var docHeight=height(document),winHeight=height(window),target=offset(el).top-this.offset;if(target+winHeight>docHeight&&(target=docHeight-winHeight),trigger(this.$el,"beforescroll",[this,el])){var start=Date.now(),startY=window.pageYOffset,step=function(){var k,currentY=startY+(target-startY)*(k=clamp((Date.now()-start)/this$1.duration),.5*(1-Math.cos(Math.PI*k)));window.scroll(window.pageXOffset,currentY),currentY!==target?requestAnimationFrame(step):trigger(this$1.$el,"scrolled",[this$1,el])};step()}}},events:{click:function(e){e.defaultPrevented||(e.preventDefault(),this.scrollTo(escape(this.$el.hash).substr(1)))}}};var Scrollspy={args:"cls",props:{cls:"list",target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:[],target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}},computed:{elements:function(ref,$el){var target=ref.target;return target?$$(target,$el):[$el]}},update:[{write:function(){this.hidden&&css(filter(this.elements,":not(."+this.inViewClass+")"),"visibility","hidden")}},{read:function(els){var this$1=this;els.delay&&this.elements.forEach(function(el,i){var elData=els[i];if(!elData||elData.el!==el){var cls=data(el,"uk-scrollspy-class");elData={el:el,toggles:cls&&cls.split(",")||this$1.cls}}elData.show=isInView(el,this$1.offsetTop,this$1.offsetLeft),els[i]=elData})},write:function(els){var this$1=this;if(!els.delay)return this.$emit(),els.delay=!0;var index$$1=1===this.elements.length?1:0;this.elements.forEach(function(el,i){var elData=els[i],cls=elData.toggles[i]||elData.toggles[0];if(!elData.show||elData.inview||elData.timer)!elData.show&&elData.inview&&this$1.repeat&&(elData.timer&&(clearTimeout(elData.timer),delete elData.timer),css(el,"visibility",this$1.hidden?"hidden":""),removeClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"outview"),this$1.$update(el),elData.inview=!1);else{var show=function(){css(el,"visibility",""),addClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"inview"),this$1.$update(el),elData.inview=!0,delete elData.timer};this$1.delay&&index$$1?elData.timer=setTimeout(show,this$1.delay*index$$1):show(),index$$1++}})},events:["scroll","load","resize"]}]},ScrollspyNav={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(_,$el){return $$('a[href^="#"]',$el).filter(function(el){return el.hash})},elements:function(){return this.closest?closest(this.links,this.closest):this.links},targets:function(){return $$(this.links.map(function(el){return el.hash}).join(","))}},update:[{read:function(){this.scroll&&this.$create("scroll",this.links,{offset:this.offset||0})}},{read:function(data$$1){var this$1=this,scroll=window.pageYOffset+this.offset+1,max=height(document)-height(window)+this.offset;data$$1.active=!1,this.targets.every(function(el,i){var top=offset(el).top,last=i+1===this$1.targets.length;if(!this$1.overflow&&(0===i&&top>scroll||last&&top+el.offsetTop<scroll))return!1;if(!last&&offset(this$1.targets[i+1]).top<=scroll)return!0;if(scroll>=max)for(var j=this$1.targets.length-1;j>i;j--)if(isInView(this$1.targets[j])){el=this$1.targets[j];break}return!(data$$1.active=$(filter(this$1.links,'[href="#'+el.id+'"]')))})},write:function(ref){var active=ref.active;this.links.forEach(function(el){return el.blur()}),removeClass(this.elements,this.cls),active&&trigger(this.$el,"active",[active,addClass(this.closest?closest(active,this.closest):active,this.cls)])},events:["scroll","load","resize"]}]},Sticky={mixins:[Class],attrs:!0,props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,media:"media",targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:"",clsActive:"uk-active",clsInactive:"",clsFixed:"uk-sticky-fixed",clsBelow:"uk-sticky-below",selTarget:"",widthElement:!1,showOnUp:!1,media:!1,targetOffset:!1},computed:{selTarget:function(ref,$el){var selTarget=ref.selTarget;return selTarget&&$(selTarget,$el)||$el},widthElement:function(ref,$el){return query(ref.widthElement,$el)||this.placeholder}},connected:function(){this.placeholder=$("+ .uk-sticky-placeholder",this.$el)||$('<div class="uk-sticky-placeholder"></div>'),this.isActive||this.hide()},disconnected:function(){this.isActive&&(this.isActive=!1,this.hide(),removeClass(this.selTarget,this.clsInactive)),remove(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:"active",self:!0,handler:function(){replaceClass(this.selTarget,this.clsInactive,this.clsActive)}},{name:"inactive",self:!0,handler:function(){replaceClass(this.selTarget,this.clsActive,this.clsInactive)}},{name:"load hashchange popstate",el:window,handler:function(){var this$1=this;if(!1!==this.targetOffset&&location.hash&&window.pageYOffset>0){var target=$(location.hash);target&&fastdom.read(function(){var top=offset(target).top,elTop=offset(this$1.$el).top,elHeight=this$1.$el.offsetHeight;this$1.isActive&&elTop+elHeight>=top&&elTop<=top+target.offsetHeight&&window.scroll(0,top-elHeight-(isNumeric(this$1.targetOffset)?this$1.targetOffset:0)-this$1.offset)})}}}],update:[{write:function(){var placeholder=this.placeholder,offsetHeight=this.$el.offsetHeight;css(placeholder,assign({height:"absolute"!==css(this.$el,"position")?offsetHeight:""},css(this.$el,["marginTop","marginBottom","marginLeft","marginRight"]))),within(placeholder,document)||(after(this.$el,placeholder),attr(placeholder,"hidden","")),this.topOffset=offset(this.isActive?placeholder:this.$el).top,this.bottomOffset=this.topOffset+offsetHeight;var bottom=parseProp("bottom",this);this.top=Math.max(toFloat(parseProp("top",this)),this.topOffset)-this.offset,this.bottom=bottom&&bottom-offsetHeight,this.inactive=this.media&&!window.matchMedia(this.media).matches},events:["load","resize"]},{read:function(_,ref){var scrollY=ref.scrollY;return void 0===scrollY&&(scrollY=window.pageYOffset),this.width=(isVisible(this.widthElement)?this.widthElement:this.$el).offsetWidth,{scroll:this.scroll=scrollY,visible:isVisible(this.$el)}},write:function(ref,ref$1){var this$1=this,visible=ref.visible,scroll=ref.scroll;void 0===ref$1&&(ref$1={});var dir=ref$1.dir;if(!(scroll<0||!visible||this.disabled||this.showOnUp&&!dir))if(this.inactive||scroll<this.top||this.showOnUp&&(scroll<=this.top||"down"===dir||"up"===dir&&!this.isActive&&scroll<=this.bottomOffset)){if(!this.isActive)return;this.isActive=!1,this.animation&&scroll>this.topOffset?(Animation.cancel(this.$el),Animation.out(this.$el,this.animation).then(function(){return this$1.hide()},noop)):this.hide()}else this.isActive?this.update():this.animation?(Animation.cancel(this.$el),this.show(),Animation.in(this.$el,this.animation).catch(noop)):this.show()},events:["load","resize","scroll"]}],methods:{show:function(){this.isActive=!0,this.update(),attr(this.placeholder,"hidden",null)},hide:function(){this.isActive&&!hasClass(this.selTarget,this.clsActive)||trigger(this.$el,"inactive"),removeClass(this.$el,this.clsFixed,this.clsBelow),css(this.$el,{position:"",top:"",width:""}),attr(this.placeholder,"hidden","")},update:function(){var active=0!==this.top||this.scroll>this.top,top=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(top=this.bottom-this.scroll),css(this.$el,{position:"fixed",top:top+"px",width:this.width}),hasClass(this.selTarget,this.clsActive)?active||trigger(this.$el,"inactive"):active&&trigger(this.$el,"active"),toggleClass(this.$el,this.clsBelow,this.scroll>this.bottomOffset),addClass(this.$el,this.clsFixed)}}};function parseProp(prop,ref){var $props=ref.$props,$el=ref.$el,propOffset=ref[prop+"Offset"],value=$props[prop];if(value){if(isNumeric(value))return propOffset+toFloat(value);if(isString(value)&&value.match(/^-?\d+vh$/))return height(window)*toFloat(value)/100;var el=!0===value?$el.parentNode:query(value,$el);return el?offset(el).top+el.offsetHeight:void 0}}var Switcher={mixins:[Togglable],args:"connect",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> *",active:0,swiping:!0,cls:"uk-active",clsContainer:"uk-switcher",attrItem:"uk-switcher-item",queued:!0},computed:{connects:function(ref,$el){return queryAll(ref.connect,$el)},toggles:function(ref,$el){return $$(ref.toggle,$el)}},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),this.show(e.current)}},{name:"click",el:function(){return this.connects},delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.show(data(e.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(e){isTouch(e)&&(e.preventDefault(),window.getSelection().toString()||this.show("swipeLeft"===e.type?"next":"previous"))}}],update:function(){var this$1=this;this.connects.forEach(function(list){return this$1.updateAria(list.children)}),this.show(filter(this.toggles,"."+this.cls)[0]||this.toggles[this.active]||this.toggles[0])},methods:{show:function(item){for(var toggle,this$1=this,length=this.toggles.length,prev=!!this.connects.length&&index(filter(this.connects[0].children,"."+this.cls)[0]),hasPrev=prev>=0,dir="previous"===item?-1:1,next=getIndex(item,this.toggles,prev),i=0;i<length;i++,next=(next+dir+length)%length)if(!matches(this$1.toggles[next],".uk-disabled, [disabled]")){toggle=this$1.toggles[next];break}!toggle||prev>=0&&hasClass(toggle,this.cls)||prev===next||(removeClass(this.toggles,this.cls),attr(this.toggles,"aria-expanded",!1),addClass(toggle,this.cls),attr(toggle,"aria-expanded",!0),this.connects.forEach(function(list){hasPrev?this$1.toggleElement([list.children[prev],list.children[next]]):this$1.toggleNow(list.children[next])}))}}},Tab={mixins:[Class],extends:Switcher,props:{media:"media"},data:{media:960,attrItem:"uk-tab-item"},connected:function(){var cls=hasClass(this.$el,"uk-tab-left")?"uk-tab-left":!!hasClass(this.$el,"uk-tab-right")&&"uk-tab-right";cls&&this.$create("toggle",this.$el,{cls:cls,mode:"media",media:this.media})}},Toggle={mixins:[Togglable],args:"target",props:{href:String,target:null,mode:"list",media:"media"},data:{href:!1,target:!1,mode:"click",queued:!0,media:!1},computed:{target:function(ref,$el){var href=ref.href,target=ref.target;return(target=queryAll(target||href,$el)).length&&target||[$el]}},events:[{name:pointerEnter+" "+pointerLeave,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||this.toggle("toggle"+(e.type===pointerEnter?"show":"hide"))}},{name:"click",filter:function(){return includes(this.mode,"click")||hasTouch&&includes(this.mode,"hover")},handler:function(e){var link;(isTouch(e)||includes(this.mode,"click"))&&((closest(e.target,'a[href="#"], button')||(link=closest(e.target,"a[href]"))&&(this.cls||!isVisible(this.target)||link.hash&&matches(this.target,link.hash)))&&once(document,"click",function(e){return e.preventDefault()}),this.toggle())}}],update:{write:function(){if(includes(this.mode,"media")&&this.media){var toggled=this.isToggled(this.target);(window.matchMedia(this.media).matches?!toggled:toggled)&&this.toggle()}},events:["load","resize"]},methods:{toggle:function(type){trigger(this.target,type||"toggle",[this])&&this.toggleElement(this.target)}}};UIkit.version="3.0.0-rc.5",function(UIkit){UIkit.component("accordion",Accordion),UIkit.component("alert",Alert),UIkit.component("cover",Cover),UIkit.component("drop",Drop),UIkit.component("dropdown",Dropdown),UIkit.component("formCustom",FormCustom),UIkit.component("gif",Gif),UIkit.component("grid",Grid),UIkit.component("heightMatch",HeightMatch),UIkit.component("heightViewport",HeightViewport),UIkit.component("icon",Icon),UIkit.component("img",Img),UIkit.component("leader",Leader),UIkit.component("margin",Margin),UIkit.component("modal",Modal$1),UIkit.component("nav",Nav),UIkit.component("navbar",Navbar),UIkit.component("offcanvas",Offcanvas),UIkit.component("overflowAuto",OverflowAuto),UIkit.component("responsive",Responsive),UIkit.component("scroll",Scroll),UIkit.component("scrollspy",Scrollspy),UIkit.component("scrollspyNav",ScrollspyNav),UIkit.component("sticky",Sticky),UIkit.component("svg",SVG),UIkit.component("switcher",Switcher),UIkit.component("tab",Tab),UIkit.component("toggle",Toggle),UIkit.component("video",Video),UIkit.component("close",Close),UIkit.component("marker",IconComponent),UIkit.component("navbarToggleIcon",IconComponent),UIkit.component("overlayIcon",IconComponent),UIkit.component("paginationNext",IconComponent),UIkit.component("paginationPrevious",IconComponent),UIkit.component("searchIcon",Search),UIkit.component("slidenavNext",Slidenav),UIkit.component("slidenavPrevious",Slidenav),UIkit.component("spinner",Spinner),UIkit.component("totop",IconComponent),UIkit.use(Core)}(UIkit);var Countdown={mixins:[Class],attrs:!0,props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(ref){var date=ref.date;return Date.parse(date)},days:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","days"),$el)},hours:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","hours"),$el)},minutes:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","minutes"),$el)},seconds:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","seconds"),$el)},units:function(){var this$1=this;return["days","hours","minutes","seconds"].filter(function(unit){return this$1[unit]})}},connected:function(){this.start()},disconnected:function(){var this$1=this;this.stop(),this.units.forEach(function(unit){return empty(this$1[unit])})},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var date,total,this$1=this,timespan=(date=this.date,{total:total=date-Date.now(),seconds:total/1e3%60,minutes:total/1e3/60%60,hours:total/1e3/60/60%24,days:total/1e3/60/60/24});timespan.total<=0&&(this.stop(),timespan.days=timespan.hours=timespan.minutes=timespan.seconds=0),this.units.forEach(function(unit){var digits=String(Math.floor(timespan[unit]));digits=digits.length<2?"0"+digits:digits;var el=this$1[unit];el.textContent!==digits&&((digits=digits.split("")).length!==el.children.length&&html(el,digits.map(function(){return"<span></span>"}).join("")),digits.forEach(function(digit,i){return el.children[i].textContent=digit}))})}},methods:{start:function(){var this$1=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return this$1.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var style$1,targetClass="uk-animation-target",Animate={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(action){var this$1=this;style$1||(style$1=append(document.head,"<style>").sheet).insertRule("."+targetClass+" > * {\n                    margin-top: 0 !important;\n                    transform: none !important;\n                }");var children=toNodes(this.target.children),propsFrom=children.map(function(el){return getProps(el,!0)}),oldHeight=height(this.target),oldScrollY=window.pageYOffset;action(),Transition.cancel(this.target),children.forEach(Transition.cancel),reset(this.target),this.$update(this.target),fastdom.flush();var newHeight=height(this.target),propsTo=(children=children.concat(toNodes(this.target.children).filter(function(el){return!includes(children,el)}))).map(function(el,i){return!!(el.parentNode&&i in propsFrom)&&(propsFrom[i]?isVisible(el)?getPositionWithMargin(el):{opacity:0}:{opacity:isVisible(el)?1:0})});return propsFrom=propsTo.map(function(props,i){var from=children[i].parentNode===this$1.target&&(propsFrom[i]||getProps(children[i]));if(from)if(props){if(!("opacity"in props)){from.opacity%1?props.opacity=1:delete from.opacity}}else delete from.opacity;return from}),addClass(this.target,targetClass),children.forEach(function(el,i){return propsFrom[i]&&css(el,propsFrom[i])}),css(this.target,"minHeight",oldHeight),window.scroll(window.pageXOffset,oldScrollY),Promise$1.all(children.map(function(el,i){return propsFrom[i]&&propsTo[i]?Transition.start(el,propsTo[i],this$1.animation,"ease"):Promise$1.resolve()}).concat(Transition.start(this.target,{minHeight:newHeight},this.animation,"ease"))).then(function(){children.forEach(function(el,i){return css(el,{display:0===propsTo[i].opacity?"none":"",zIndex:""})}),reset(this$1.target),this$1.$update(this$1.target)},noop)}}};function getProps(el,opacity){var zIndex=css(el,"zIndex");return!!isVisible(el)&&assign({display:"",opacity:opacity?css(el,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===zIndex?index(el):zIndex},getPositionWithMargin(el))}function reset(el){css(el.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",width:""}),removeClass(el,targetClass),css(el,"minHeight","")}function getPositionWithMargin(el){var ref=el.getBoundingClientRect(),height$$1=ref.height,width$$1=ref.width,ref$1=position(el),top=ref$1.top,left=ref$1.left;return{top:top+=toFloat(css(el,"marginTop")),left:left,height:height$$1,width:width$$1}}var Filter={mixins:[Animate],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",animation:250},computed:{toggles:function(ref,$el){ref.attrItem;return $$("["+this.attrItem+"],[data-"+this.attrItem+"]",$el)},target:function(ref,$el){return $(ref.target,$el)}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.apply(e.current)}}],connected:function(){var this$1=this;if(!1!==this.selActive){var actives=$$(this.selActive,this.$el);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,includes(actives,el))})}},update:function(data$$1){var toggles=data$$1.toggles,children=data$$1.children;isEqualList(toggles,this.toggles,!1)&&isEqualList(children,this.target.children,!1)||(data$$1.toggles=this.toggles,data$$1.children=this.target.children,this.setState(this.getState(),!1))},methods:{apply:function(el){this.setState(mergeState(el,this.attrItem,this.getState()))},getState:function(){var this$1=this;return this.toggles.filter(function(item){return hasClass(item,this$1.cls)}).reduce(function(state,el){return mergeState(el,this$1.attrItem,state)},{filter:{"":""},sort:[]})},setState:function(state,animate$$1){var this$1=this;void 0===animate$$1&&(animate$$1=!0),state=assign({filter:{"":""},sort:[]},state),trigger(this.$el,"beforeFilter",[this,state]);var children=toNodes(this.target.children);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,function(el,attr$$1,ref){var stateFilter=ref.filter,ref_sort=ref.sort,stateSort=ref_sort[0],stateOrder=ref_sort[1],ref$1=getFilter(el,attr$$1),filter$$1=ref$1.filter,group=ref$1.group;void 0===group&&(group="");var sort=ref$1.sort,order=ref$1.order;void 0===order&&(order="asc");return Boolean((filter$$1||isUndefined(sort))&&group in stateFilter&&(filter$$1===stateFilter[group]||isUndefined(filter$$1)&&!stateFilter[group])||stateSort&&sort&&stateSort===sort&&stateOrder===order)}(el,this$1.attrItem,state))});var apply$$1=function(){var selector=function(ref){var selector="";return each(ref.filter,function(value){return selector+=value||""}),selector}(state);children.forEach(function(el){return css(el,"display",selector&&!matches(el,selector)?"none":"")});var ref=state.sort,sort=ref[0],order=ref[1];if(sort){var sorted=function(nodes,sort,order){return toNodes(nodes).sort(function(a,b){return data(a,sort).localeCompare(data(b,sort))*("asc"===order||-1)})}(children,sort,order);isEqualList(sorted,children)||sorted.forEach(function(el){return append(this$1.target,el)})}};animate$$1?this.animate(apply$$1).then(function(){return trigger(this$1.$el,"afterFilter",[this$1])}):(apply$$1(),trigger(this.$el,"afterFilter",[this]))}}};function getFilter(el,attr$$1){return parseOptions(data(el,attr$$1),["filter"])}function mergeState(el,attr$$1,state){return toNodes(el).forEach(function(el){var filterBy=getFilter(el,attr$$1),filter$$1=filterBy.filter,group=filterBy.group,sort=filterBy.sort,order=filterBy.order;void 0===order&&(order="asc"),(filter$$1||isUndefined(sort))&&(group?(delete state.filter[""],state.filter[group]=filter$$1):state.filter={"":filter$$1}),isUndefined(sort)||(state.sort=[sort,order])}),state}function isEqualList(listA,listB,strict){return void 0===strict&&(strict=!0),listA=toNodes(listA),listB=toNodes(listB),listA.length===listB.length&&listA.every(function(el,i){return strict?el===listB[i]:~listB.indexOf(el)})}var Animations={slide:{show:function(dir){return[{transform:translate(-100*dir)},{transform:translate()}]},percent:function(current){return translated(current)},translate:function(percent,dir){return[{transform:translate(-100*dir*percent)},{transform:translate(100*dir*(1-percent))}]}}};function translated(el){return Math.abs(css(el,"transform").split(",")[4]/el.offsetWidth)||0}function translate(value,unit){return void 0===value&&(value=0),void 0===unit&&(unit="%"),"translateX("+value+(value?unit:"")+")"}function scale3d(value){return"scale3d("+value+", "+value+", 1)"}var Animations$1=assign({},Animations,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent},{opacity:percent}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(.8)},{opacity:1,transform:scale3d(1)}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1-.2*percent)},{opacity:percent,transform:scale3d(.8+.2*percent)}]}}});function triggerUpdate(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}var Slider={attrs:!0,mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.startAutoplay()},disconnected:function(){this.stopAutoplay()},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:pointerDown,handler:"stopAutoplay"},{name:"mouseenter",filter:function(){return this.autoplay},handler:function(){this.isHovering=!0}},{name:"mouseleave",filter:function(){return this.autoplay},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var this$1=this;this.stopAutoplay(),this.autoplay&&(this.interval=setInterval(function(){return!(this$1.isHovering&&this$1.pauseOnHover)&&!this$1.stack.length&&this$1.show("next")},this.autoplayInterval))},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{data:{threshold:10,preventCatch:!1},init:function(){var this$1=this;["start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){var pos=getPos$1(e).x*(isRtl?-1:1);this$1.prevPos=pos!==this$1.pos?this$1.pos:this$1.prevPos,this$1.pos=pos,fn(e)}})},events:[{name:pointerDown,delegate:function(){return this.slidesSelector},handler:function(e){var el;!isTouch(e)&&(el=e.target,!el.children.length&&el.childNodes.length)||e.button>0||this.length<2||this.preventCatch||this.start(e)}},{name:"dragstart",handler:function(e){e.preventDefault()}}],methods:{start:function(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.translate(this.percent),this._transitioner.cancel(),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,this.unbindMove=on(document,pointerMove,this.move,{capture:!0,passive:!1}),on(window,"scroll",this.unbindMove),on(document,pointerUp,this.end,!0)},move:function(e){var this$1=this,distance=this.pos-this.drag;if(!(0===distance||this.prevPos===this.pos||!this.dragging&&Math.abs(distance)<this.threshold)){e.cancelable&&e.preventDefault(),this.dragging=!0,this.dir=distance<0?1:-1;for(var slides=this.slides,prevIndex=this.prevIndex,dis=Math.abs(distance),nextIndex=this.getIndex(prevIndex+this.dir,prevIndex),width$$1=this._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;nextIndex!==prevIndex&&dis>width$$1;)this$1.drag-=width$$1*this$1.dir,prevIndex=nextIndex,dis-=width$$1,nextIndex=this$1.getIndex(prevIndex+this$1.dir,prevIndex),width$$1=this$1._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;this.percent=dis/width$$1;var itemShown,prev=slides[prevIndex],next=slides[nextIndex],changed=this.index!==nextIndex,edge=prevIndex===nextIndex;[this.index,this.prevIndex].filter(function(i){return!includes([nextIndex,prevIndex],i)}).forEach(function(i){trigger(slides[i],"itemhidden",[this$1]),edge&&(itemShown=!0,this$1.prevIndex=prevIndex)}),(this.index===prevIndex&&this.prevIndex!==prevIndex||itemShown)&&trigger(slides[this.index],"itemshown",[this]),changed&&(this.prevIndex=prevIndex,this.index=nextIndex,!edge&&trigger(prev,"beforeitemhide",[this]),trigger(next,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),prev,!edge&&next),changed&&(!edge&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]))}},end:function(){if(off(window,"scroll",this.unbindMove),this.unbindMove(),off(document,pointerUp,this.end,!0),this.dragging){if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var dirChange=(isRtl?this.dir*(isRtl?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=dirChange?this.index:this.prevIndex,dirChange&&(this.percent=1-this.percent),this.show(this.dir>0&&!dirChange||this.dir<0&&dirChange?"next":"previous",!0)}preventClick()}this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(ref,$el){return $(ref.selNav,$el)},navItemSelector:function(ref){var attrItem=ref.attrItem;return"["+attrItem+"],[data-"+attrItem+"]"},navItems:function(_,$el){return $$(this.navItemSelector,$el)}},update:[{write:function(){var this$1=this;this.nav&&this.length!==this.nav.children.length&&html(this.nav,this.slides.map(function(_,i){return"<li "+this$1.attrItem+'="'+i+'"><a href="#"></a></li>'}).join("")),toggleClass($$(this.navItemSelector,this.$el).concat(this.nav),"uk-hidden",!this.maxIndex),this.updateNav()},events:["load","resize"]}],events:[{name:"click",delegate:function(){return this.navItemSelector},handler:function(e){e.preventDefault(),e.current.blur(),this.show(data(e.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav:function(){var this$1=this,i=this.getValidIndex();this.navItems.forEach(function(el){var cmd=data(el,this$1.attrItem);toggleClass(el,this$1.clsActive,toNumber(cmd)===i),toggleClass(el,"uk-invisible",this$1.finite&&("previous"===cmd&&0===i||"next"===cmd&&i>=this$1.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:"ease",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(ref,$el){var velocity=ref.velocity;return speedUp($el.offsetWidth/velocity)},length:function(){return this.slides.length},list:function(ref,$el){return $(ref.selList,$el)},maxIndex:function(){return this.length-1},slidesSelector:function(ref){return ref.selList+" > *"},slides:function(){return toNodes(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(index$$1,force){var this$1=this;if(void 0===force&&(force=!1),!this.dragging&&this.length){var stack=this.stack,queueIndex=force?0:stack.length,reset=function(){stack.splice(queueIndex,1),stack.length&&this$1.show(stack.shift(),!0)};if(stack[force?"unshift":"push"](index$$1),!force&&stack.length>1)2===stack.length&&this._transitioner.forward(Math.min(this.duration,200));else{var prevIndex=this.index,prev=hasClass(this.slides,this.clsActive)&&this.slides[prevIndex],nextIndex=this.getIndex(index$$1,this.index),next=this.slides[nextIndex];if(prev!==next){if(this.dir=function(index$$1,prevIndex){return"next"===index$$1?1:"previous"===index$$1?-1:index$$1<prevIndex?-1:1}(index$$1,prevIndex),this.prevIndex=prevIndex,this.index=nextIndex,prev&&trigger(prev,"beforeitemhide",[this]),!trigger(next,"beforeitemshow",[this,prev]))return this.index=this.prevIndex,void reset();var promise=this._show(prev,next,force).then(function(){return prev&&trigger(prev,"itemhidden",[this$1]),trigger(next,"itemshown",[this$1]),new Promise$1(function(resolve){fastdom.write(function(){stack.shift(),stack.length?this$1.show(stack.shift(),!0):this$1._transitioner=null,resolve()})})});return prev&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]),promise}reset()}}},getIndex:function(index$$1,prev){return void 0===index$$1&&(index$$1=this.index),void 0===prev&&(prev=this.index),clamp(getIndex(index$$1,this.slides,prev,this.finite),0,this.maxIndex)},getValidIndex:function(index$$1,prevIndex){return void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),this.getIndex(index$$1,prevIndex)},_show:function(prev,next,force){if(this._transitioner=this._getTransitioner(prev,next,this.dir,assign({easing:force?next.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing},this.transitionOptions)),!force&&!prev)return this._transitioner.translate(1),Promise$1.resolve();var length=this.stack.length;return this._transitioner[length>1?"forward":"show"](length>1?Math.min(this.duration,75+75/(length-1)):this.duration,this.percent)},_getDistance:function(prev,next){return new this._getTransitioner(prev,prev!==next&&next).getDistance()},_translate:function(percent,prev,next){void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index);var transitioner=this._getTransitioner(prev!==next&&prev,next);return transitioner.translate(percent),transitioner},_getTransitioner:function(prev,next,dir,options){return void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index),void 0===dir&&(dir=this.dir||1),void 0===options&&(options=this.transitionOptions),new this.Transitioner(isNumber(prev)?this.slides[prev]:prev,isNumber(next)?this.slides[next]:next,dir*(isRtl?-1:1),options)}}};function speedUp(x){return.5*x+300}var Slideshow={mixins:[Slider],props:{animation:String},data:{animation:"slide",clsActivated:"uk-transition-active",Animations:Animations,Transitioner:function(prev,next,dir,ref){var animation=ref.animation,easing=ref.easing,percent=animation.percent,translate=animation.translate,show=animation.show;void 0===show&&(show=noop);var props=show(dir),deferred=new Deferred;return{dir:dir,show:function(duration,percent,linear){var this$1=this;void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),triggerUpdate(next,"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),triggerUpdate(prev,"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Promise$1.all([Transition.start(next,props[1],duration,timing),Transition.start(prev,props[0],duration,timing)]).then(function(){this$1.reset(),deferred.resolve()},noop),deferred.promise},stop:function(){return Transition.stop([next,prev])},cancel:function(){Transition.cancel([next,prev])},reset:function(){for(var prop in props[0])css([next,prev],prop,"")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel([next,prev]),this.show(duration,percent,!0)},translate:function(percent){this.reset();var props=translate(percent,dir);css(next,props[1]),css(prev,props[0]),triggerUpdate(next,"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate(prev,"itemtranslateout",{percent:1-percent,dir:dir})},percent:function(){return percent(prev||next,next,dir)},getDistance:function(){return prev.offsetWidth}}}},computed:{animation:function(ref){var animation=ref.animation,Animations$$1=ref.Animations;return assign(animation in Animations$$1?Animations$$1[animation]:Animations$$1.slide,{name:animation})},transitionOptions:function(){return{animation:this.animation}}},events:{"itemshow itemhide itemshown itemhidden":function(ref){var target=ref.target;this.$update(target)},itemshow:function(){isNumber(this.prevIndex)&&fastdom.flush()},beforeitemshow:function(ref){addClass(ref.target,this.clsActive)},itemshown:function(ref){addClass(ref.target,this.clsActivated)},itemhidden:function(ref){removeClass(ref.target,this.clsActive,this.clsActivated)}}},LightboxPanel={mixins:[Container,Modal,Togglable,Slideshow],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",pauseOnHover:!1,velocity:2,Animations:Animations$1,template:'<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href="#" uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href="#" uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>'}},created:function(){var this$1=this;this.$mount(append(this.container,this.template)),this.caption=$(".uk-lightbox-caption",this.$el),this.items.forEach(function(){return append(this$1.list,"<li></li>")})},events:[{name:pointerMove+" "+pointerDown+" keydown",handler:"showControls"},{name:"click",self:!0,delegate:function(){return this.slidesSelector},handler:function(e){e.preventDefault(),this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler:function(){this.hideControls(),removeClass(this.slides,this.clsActive),Transition.stop(this.slides)}},{name:"keyup",el:document,handler:function(e){if(this.isToggled(this.$el))switch(e.keyCode){case 37:this.show("previous");break;case 39:this.show("next")}}},{name:"beforeitemshow",handler:function(e){this.isToggled()||(this.preventCatch=!0,e.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Animations$1.scale,removeClass(e.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler:function(ref){var i=index(ref.target),caption=this.getItem(i).caption;css(this.caption,"display",caption?"":"none"),html(this.caption,caption);for(var j=0;j<=this.preload;j++)this.loadItem(this.getIndex(i+j)),this.loadItem(this.getIndex(i-j))}},{name:"itemshown",handler:function(){this.preventCatch=!1}},{name:"itemload",handler:function(_,item){var matches$$1,this$1=this,source=item.source,type=item.type,alt=item.alt;if(this.setItem(item,"<span uk-spinner></span>"),source)if("image"===type||source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i))getImage(source).then(function(img){return this$1.setItem(item,'<img width="'+img.width+'" height="'+img.height+'" src="'+source+'" alt="'+(alt||"")+'">')},function(){return this$1.setError(item)});else if("video"===type||source.match(/\.(mp4|webm|ogv)($|\?)/i)){var video=$("<video controls playsinline"+(item.poster?' poster="'+item.poster+'"':"")+' uk-video="'+this.videoAutoplay+'"></video>');attr(video,"src",source),on(video,"error",function(){return this$1.setError(item)}),on(video,"loadedmetadata",function(){attr(video,{width:video.videoWidth,height:video.videoHeight}),this$1.setItem(item,video)})}else if("iframe"===type||source.match(/\.(html|php)($|\?)/i))this.setItem(item,'<iframe class="uk-lightbox-iframe" src="'+source+'" frameborder="0" allowfullscreen></iframe>');else if(matches$$1=source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/)||source.match(/()youtu\.be\/(.*)/)){var id=matches$$1[2],setIframe=function(width$$1,height$$1){return void 0===width$$1&&(width$$1=640),void 0===height$$1&&(height$$1=450),this$1.setItem(item,getIframe("https://www.youtube"+(matches$$1[1]||"")+".com/embed/"+id,width$$1,height$$1,this$1.videoAutoplay))};getImage("https://img.youtube.com/vi/"+id+"/maxresdefault.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;120===width$$1&&90===height$$1?getImage("https://img.youtube.com/vi/"+id+"/0.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;return setIframe(width$$1,height$$1)},setIframe):setIframe(width$$1,height$$1)},setIframe)}else(matches$$1=source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))&&ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(source),{responseType:"json",withCredentials:!1}).then(function(ref){var ref_response=ref.response,height$$1=ref_response.height,width$$1=ref_response.width;return this$1.setItem(item,getIframe("https://player.vimeo.com/video/"+matches$$1[2],width$$1,height$$1,this$1.videoAutoplay))},function(){return this$1.setError(item)})}}],methods:{loadItem:function(index$$1){void 0===index$$1&&(index$$1=this.index);var item=this.getItem(index$$1);item.content||trigger(this.$el,"itemload",[item])},getItem:function(index$$1){return void 0===index$$1&&(index$$1=this.index),this.items[index$$1]||{}},setItem:function(item,content){assign(item,{content:content});var el=html(this.slides[this.items.indexOf(item)],content);trigger(this.$el,"itemloaded",[this,el]),this.$update(el)},setError:function(item){this.setItem(item,'<span uk-icon="icon: bolt; ratio: 2"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),addClass(this.$el,"uk-active","uk-transition-active")},hideControls:function(){removeClass(this.$el,"uk-active","uk-transition-active")}}};function getIframe(src,width$$1,height$$1,autoplay){return'<iframe src="'+src+'" width="'+width$$1+'" height="'+height$$1+'" style="max-width: 100%; box-sizing: border-box;" frameborder="0" allowfullscreen uk-video="autoplay: '+autoplay+'" uk-responsive></iframe>'}var obj,props=merge(LightboxPanel,"props"),defaults=merge(LightboxPanel,"data"),Lightbox={install:function(UIkit){UIkit.lightboxPanel||UIkit.component("lightboxPanel",LightboxPanel)},attrs:!0,props:assign({toggle:String},props),data:assign({toggle:"a"},Object.keys(props).reduce(function(data$$1,key){return data$$1[key]=defaults[key],data$$1},{})),computed:{toggles:function(ref,$el){return $$(ref.toggle,$el)}},disconnected:function(){this._destroy()},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),e.current.blur(),this.show(index(this.toggles,e.current))}}],update:function(data$$1){var listA,listB;(data$$1.toggles=data$$1.toggles||this.toggles,this.panel&&this.animation&&(this.panel.$props.animation=this.animation,this.panel.$emit()),this.panel&&(listA=data$$1.toggles,listB=this.toggles,listA.length!==listB.length||!listA.every(function(el,i){return el===listB[i]})))&&(data$$1.toggles=this.toggles,this._destroy(),this._init())},methods:{_init:function(){return this.panel=this.panel||this.$create("lightboxPanel",assign({},this.$props,{items:this.toggles.reduce(function(items,el){return items.push(["href","caption","type","poster","alt"].reduce(function(obj,attr$$1){return obj["href"===attr$$1?"source":attr$$1]=data(el,attr$$1),obj},{})),items},[])}))},_destroy:function(){this.panel&&(this.panel.$destroy(!0),this.panel=null)},show:function(index$$1){return this.panel||this._init(),this.panel.show(index$$1)},hide:function(){return this.panel&&this.panel.hide()}}};function merge(options,prop){return assign.apply(void 0,[{}].concat(options.mixins?options.mixins.map(function(mixin){return merge(mixin,prop)}):[],[isFunction(options[prop])?options[prop]():options[prop]]))}var containers={},Notification={functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:function(UIkit){UIkit.notification.closeAll=function(group,immediate){apply(document.body,function(el){var notification=UIkit.getComponent(el,"notification");!notification||group&&group!==notification.group||notification.close(immediate)})}},created:function(){containers[this.pos]||(containers[this.pos]=append(this.$container,'<div class="uk-notification uk-notification-'+this.pos+'"></div>'));var container=css(containers[this.pos],"display","block");this.$mount(append(container,'<div class="'+this.clsMsg+(this.status?" "+this.clsMsg+"-"+this.status:"")+'"> <a href="#" class="'+this.clsClose+'" data-uk-close></a> <div>'+this.message+"</div> </div>"))},ready:function(){var this$1=this,marginBottom=toFloat(css(this.$el,"marginBottom"));Transition.start(css(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}),{opacity:1,marginTop:0,marginBottom:marginBottom}).then(function(){this$1.timeout&&(this$1.timer=setTimeout(this$1.close,this$1.timeout))})},events:(obj={click:function(e){closest(e.target,'a[href="#"]')&&e.preventDefault(),this.close()}},obj[pointerEnter]=function(){this.timer&&clearTimeout(this.timer)},obj[pointerLeave]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},obj),methods:{close:function(immediate){var this$1=this,removeFn=function(){trigger(this$1.$el,"close",[this$1]),remove(this$1.$el),containers[this$1.pos].children.length||css(containers[this$1.pos],"display","none")};this.timer&&clearTimeout(this.timer),immediate?removeFn():Transition.start(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}).then(removeFn)}}};var props$1=["x","y","bgx","bgy","rotate","scale","color","backgroundColor","borderColor","opacity","blur","hue","grayscale","invert","saturate","sepia","fopacity"],Parallax={props:props$1.reduce(function(props,prop){return props[prop]="list",props},{media:"media"}),data:props$1.reduce(function(data$$1,prop){return data$$1[prop]=void 0,data$$1},{media:!1}),computed:{props:function(properties,$el){var this$1=this;return props$1.reduce(function(props,prop){if(isUndefined(properties[prop]))return props;var pos,bgPos,diff,isColor=prop.match(/color/i),isCssProp=isColor||"opacity"===prop,steps=properties[prop].slice(0);isCssProp&&css($el,prop,""),steps.length<2&&steps.unshift(("scale"===prop?1:isCssProp?css($el,prop):0)||0);var unit=includes(steps.join(""),"%")?"%":"px";if(isColor){var color=$el.style.color;steps=steps.map(function(step){return css(css($el,"color",step),"color").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(function(n){return toFloat(n)})}),$el.style.color=color}else steps=steps.map(toFloat);if(prop.match(/^bg/))if(css($el,"background-position-"+prop[2],""),bgPos=css($el,"backgroundPosition").split(" ")["x"===prop[2]?0:1],this$1.covers){var min=Math.min.apply(Math,steps),max=Math.max.apply(Math,steps),down=steps.indexOf(min)<steps.indexOf(max);diff=max-min,steps=steps.map(function(step){return step-(down?min:max)}),pos=(down?-diff:0)+"px"}else pos=bgPos;return props[prop]={steps:steps,unit:unit,pos:pos,bgPos:bgPos,diff:diff},props},{})},bgProps:function(){var this$1=this;return["bgx","bgy"].filter(function(bg){return bg in this$1.props})},covers:function(_,$el){return function(el){var backgroundSize=el.style.backgroundSize,covers="cover"===css(css(el,"backgroundSize",""),"backgroundSize");return el.style.backgroundSize=backgroundSize,covers}($el)}},disconnected:function(){delete this._image},update:[{read:function(data$$1){var this$1=this;if(data$$1.active=!this.media||window.matchMedia(this.media).matches,data$$1.image&&(data$$1.image.dimEl={width:this.$el.offsetWidth,height:this.$el.offsetHeight}),!("image"in data$$1)&&this.covers&&this.bgProps.length){var src=css(this.$el,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");src&&(data$$1.image=!1,getImage(src).then(function(img){data$$1.image={width:img.naturalWidth,height:img.naturalHeight},this$1.$emit()}))}},write:function(ref){var this$1=this,image=ref.image,active=ref.active;if(image)if(active){var dimEl=image.dimEl,dim=Dimensions.cover(image,dimEl);this.bgProps.forEach(function(prop){var ref=this$1.props[prop],diff=ref.diff,bgPos=ref.bgPos,steps=ref.steps,attr$$1="bgy"===prop?"height":"width",span=dim[attr$$1]-dimEl[attr$$1];if(bgPos.match(/%$|0px/)){if(span<diff)dimEl[attr$$1]=dim[attr$$1]+diff-span;else if(span>diff){var bgPosFloat=parseFloat(bgPos);bgPosFloat&&(this$1.props[prop].steps=steps.map(function(step){return step-(span-diff)/(100/bgPosFloat)}))}dim=Dimensions.cover(image,dimEl)}}),css(this.$el,{backgroundSize:dim.width+"px "+dim.height+"px",backgroundRepeat:"no-repeat"})}else css(this.$el,{backgroundSize:"",backgroundRepeat:""})},events:["load","resize"]}],methods:{reset:function(){var this$1=this;each(this.getCss(0),function(_,prop){return css(this$1.$el,prop,"")})},getCss:function(percent){var props=this.props,translated=!1;return Object.keys(props).reduce(function(css$$1,prop){var ref=props[prop],steps=ref.steps,unit=ref.unit,pos=ref.pos,value=getValue(steps,percent);switch(prop){case"x":case"y":if(translated)break;var ref$1=["x","y"].map(function(dir){return prop===dir?value+unit:props[dir]?getValue(props[dir].steps,percent)+props[dir].unit:0}),x=ref$1[0],y=ref$1[1];translated=css$$1.transform+=" translate3d("+x+", "+y+", 0)";break;case"rotate":css$$1.transform+=" rotate("+value+"deg)";break;case"scale":css$$1.transform+=" scale("+value+")";break;case"bgy":case"bgx":css$$1["background-position-"+prop[2]]="calc("+pos+" + "+(value+unit)+")";break;case"color":case"backgroundColor":case"borderColor":var ref$2=getStep(steps,percent),start=ref$2[0],end=ref$2[1],p=ref$2[2];css$$1[prop]="rgba("+start.map(function(value,i){return value+=p*(end[i]-value),3===i?toFloat(value):parseInt(value,10)}).join(",")+")";break;case"blur":css$$1.filter+=" blur("+value+"px)";break;case"hue":css$$1.filter+=" hue-rotate("+value+"deg)";break;case"fopacity":css$$1.filter+=" opacity("+value+"%)";break;case"grayscale":case"invert":case"saturate":case"sepia":css$$1.filter+=" "+prop+"("+value+"%)";break;default:css$$1[prop]=value}return css$$1},{transform:"",filter:""})}}};function getStep(steps,percent){var count=steps.length-1,index$$1=Math.min(Math.floor(count*percent),count-1),step=steps.slice(index$$1,index$$1+2);return step.push(1===percent?1:percent%(1/count)*count),step}function getValue(steps,percent){var ref=getStep(steps,percent),start=ref[0],end=ref[1],p=ref[2];return(isNumber(start)?start+Math.abs(start-end)*p*(start<end?1:-1):+end).toFixed(2)}var Parallax$1={mixins:[Parallax],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(ref,$el){var target=ref.target;return target&&query(target,$el)||$el}},update:[{read:function(ref){return{prev:ref.percent,percent:function(percent,easing){return clamp(percent*(1-(easing-easing*percent)))}(scrolledOver(this.target)/(this.viewport||1),this.easing)}},write:function(ref,ref$1){var prev=ref.prev,percent=ref.percent,active=ref.active;"scroll"!==ref$1.type&&(prev=!1),active?prev!==percent&&css(this.$el,this.getCss(percent)):this.reset()},events:["scroll","load","resize"]}]};var SliderReactive={update:[{write:function(){if(!this.stack.length&&!this.dragging){var index$$1=this.getValidIndex();delete this.index,removeClass(this.slides,this.clsActive,this.clsActivated),this.show(index$$1)}},events:["load","resize"]}]};function getLeft(el,list,center){var left=getElLeft(el,list);return center?left-function(el,list){return list.offsetWidth/2-el.offsetWidth/2}(el,list):Math.min(left,getMax(list))}function getMax(list){return Math.max(0,getWidth(list)-list.offsetWidth)}function getWidth(list){return slides(list).reduce(function(right,el){return el.offsetWidth+right},0)}function getElLeft(el,list){return(el.offsetLeft+(isRtl?el.offsetWidth-list.offsetWidth:0))*(isRtl?-1:1)}function triggerUpdate$1(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}function slides(list){return toNodes(list.children)}var Slider$1={mixins:[Class,Slider,SliderReactive],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:function(prev,next,dir,ref){var center=ref.center,easing=ref.easing,list=ref.list,deferred=new Deferred,from=prev?getLeft(prev,list,center):getLeft(next,list,center)+next.offsetWidth*dir,to=next?getLeft(next,list,center):from+prev.offsetWidth*dir*(isRtl?-1:1);return{dir:dir,show:function(duration,percent,linear){void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),prev&&this.updateTranslates(),percent=prev?percent:clamp(percent,0,1),triggerUpdate$1(this.getItemIn(),"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),prev&&triggerUpdate$1(this.getItemIn(!0),"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Transition.start(list,{transform:translate(-to*(isRtl?-1:1),"px")},duration,timing).then(deferred.resolve,noop),deferred.promise},stop:function(){return Transition.stop(list)},cancel:function(){Transition.cancel(list)},reset:function(){css(list,"transform","")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel(list),this.show(duration,percent,!0)},translate:function(percent){var distance=this.getDistance()*dir*(isRtl?-1:1);css(list,"transform",translate(clamp(distance-distance*percent-to,-getWidth(list),list.offsetWidth)*(isRtl?-1:1),"px")),this.updateTranslates(),prev&&(percent=clamp(percent,-1,1),triggerUpdate$1(this.getItemIn(),"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate$1(this.getItemIn(!0),"itemtranslateout",{percent:1-percent,dir:dir}))},percent:function(){return Math.abs((css(list,"transform").split(",")[4]*(isRtl?-1:1)+from)/(to-from))},getDistance:function(){return Math.abs(to-from)},getItemIn:function(out){void 0===out&&(out=!1);var actives=this.getActives(),all=sortBy(slides(list),"offsetLeft"),i=index(all,actives[dir*(out?-1:1)>0?actives.length-1:0]);return~i&&all[i+(prev&&!out?dir:0)]},getActives:function(){var left=getLeft(prev||next,list,center);return sortBy(slides(list).filter(function(slide){var slideLeft=getElLeft(slide,list);return slideLeft>=left&&slideLeft+slide.offsetWidth<=list.offsetWidth+left}),"offsetLeft")},updateTranslates:function(){var actives=this.getActives();slides(list).forEach(function(slide){var isActive=includes(actives,slide);triggerUpdate$1(slide,"itemtranslate"+(isActive?"in":"out"),{percent:isActive?1:0,dir:slide.offsetLeft<=next.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return getWidth(this.list)/this.length},finite:function(ref){return ref.finite||getWidth(this.list)<this.list.offsetWidth+slides(this.list).reduce(function(right,el){return Math.max(right,el.offsetWidth)},0)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];css(this.slides,"order","");for(var max=getMax(this.list),i=this.length;i--;)if(getElLeft(this.list.children[i],this.list)<max)return Math.min(i+1,this.length-1);return 0},sets:function(ref){var this$1=this,sets=ref.sets,width$$1=this.list.offsetWidth/(this.center?2:1),left=0,leftCenter=width$$1,slideLeft=0;return(sets=sets&&this.slides.reduce(function(sets,slide,i){var slideWidth=offset(slide).width;if(slideLeft+slideWidth>left&&(!this$1.center&&i>this$1.maxIndex&&(i=this$1.maxIndex),!includes(sets,i))){var cmp=this$1.slides[i+1];this$1.center&&cmp&&slideWidth<leftCenter-offset(cmp).width/2?leftCenter-=slideWidth:(leftCenter=width$$1,sets.push(i),left=slideLeft+width$$1+(this$1.center?slideWidth/2:0))}return slideLeft+=slideWidth,sets},[]))&&sets.length&&sets},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){toggleClass(this.$el,this.clsContainer,!$("."+this.clsContainer,this.$el))},update:{write:function(){var this$1=this;$$("["+this.attrItem+"],[data-"+this.attrItem+"]",this.$el).forEach(function(el){var index$$1=data(el,this$1.attrItem);this$1.maxIndex&&toggleClass(el,"uk-hidden",isNumeric(index$$1)&&(this$1.sets&&!includes(this$1.sets,toFloat(index$$1))||index$$1>this$1.maxIndex))})},events:["load","resize"]},events:{beforeitemshow:function(e){!this.dragging&&this.sets&&this.stack.length<2&&!includes(this.sets,this.index)&&(this.index=this.getValidIndex());var diff=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&diff>1){for(var i=0;i<diff;i++)this.stack.splice(1,0,this.dir>0?"next":"previous");e.preventDefault()}else this.duration=speedUp(this.avgWidth/this.velocity)*((this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).offsetWidth/this.avgWidth),this.reorder()},itemshow:function(){!isUndefined(this.prevIndex)&&addClass(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var this$1=this,actives=this._getTransitioner(this.index).getActives();this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActive,includes(actives,slide))}),(!this.sets||includes(this.sets,toFloat(this.index)))&&this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActivated,includes(actives,slide))})}},methods:{reorder:function(){var this$1=this;if(css(this.slides,"order",""),!this.finite){var index$$1=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(slide,i){return css(slide,"order",this$1.dir>0&&i<index$$1?1:this$1.dir<0&&i>=this$1.index?-1:"")}),this.center)for(var next=this.slides[index$$1],width$$1=this.list.offsetWidth/2-next.offsetWidth/2,j=0;width$$1>0;){var slideIndex=this$1.getIndex(--j+index$$1,index$$1),slide=this$1.slides[slideIndex];css(slide,"order",slideIndex>index$$1?-2:-1),width$$1-=slide.offsetWidth}}},getValidIndex:function(index$$1,prevIndex){var prev;if(void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),index$$1=this.getIndex(index$$1,prevIndex),!this.sets)return index$$1;do{if(includes(this.sets,index$$1))return index$$1;prev=index$$1,index$$1=this.getIndex(index$$1+this.dir,prevIndex)}while(index$$1!==prev);return index$$1}}},SliderParallax={mixins:[Parallax],data:{selItem:"!li"},computed:{item:function(ref,$el){return query(ref.selItem,$el)}},events:[{name:"itemshown",self:!0,el:function(){return this.item},handler:function(){css(this.$el,this.getCss(.5))}},{name:"itemin itemout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,duration=ref_detail.duration,timing=ref_detail.timing,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent))),Transition.start(this.$el,this.getCss(isIn(type)?.5:dir>0?1:0),duration,timing).catch(noop)}},{name:"transitioncanceled transitionend",self:!0,el:function(){return this.item},handler:function(){Transition.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent)))}}]};function isIn(type){return endsWith(type,"in")}function getCurrent(type,dir,percent){return percent/=2,isIn(type)?dir<0?1-percent:percent:dir<0?percent:1-percent}var obj$1,obj$2,Animations$2=assign({},Animations,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(1.5),zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1+.5*percent),zIndex:0},{zIndex:-1}]}},pull:{show:function(dir){return dir<0?[{transform:translate(30),zIndex:-1},{transform:translate(),zIndex:0}]:[{transform:translate(-100),zIndex:0},{transform:translate(),zIndex:-1}]},percent:function(current,next,dir){return dir<0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(30*percent),zIndex:-1},{transform:translate(-100*(1-percent)),zIndex:0}]:[{transform:translate(100*-percent),zIndex:0},{transform:translate(30*(1-percent)),zIndex:-1}]}},push:{show:function(dir){return dir<0?[{transform:translate(100),zIndex:0},{transform:translate(),zIndex:-1}]:[{transform:translate(-30),zIndex:-1},{transform:translate(),zIndex:0}]},percent:function(current,next,dir){return dir>0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(100*percent),zIndex:0},{transform:translate(-30*(1-percent)),zIndex:-1}]:[{transform:translate(-30*percent),zIndex:-1},{transform:translate(100*(1-percent)),zIndex:0}]}}}),Slideshow$1={mixins:[Class,Slideshow,SliderReactive],props:{ratio:String,minHeight:Boolean,maxHeight:Boolean},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Animations$2},update:{read:function(){var ref=this.ratio.split(":").map(Number),width$$1=ref[0],height$$1=ref[1];return height$$1=height$$1*this.$el.offsetWidth/width$$1,this.minHeight&&(height$$1=Math.max(this.minHeight,height$$1)),this.maxHeight&&(height$$1=Math.min(this.maxHeight,height$$1)),{height:height$$1}},write:function(ref){var hgt=ref.height;height(this.list,Math.floor(hgt))},events:["load","resize"]}},Sortable={mixins:[Class,Animate],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1},init:function(){var this$1=this;["init","start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){this$1.scrollY=window.pageYOffset;var ref=getPos$1(e),x=ref.x,y=ref.y;this$1.pos={x:x,y:y},fn(e)}})},events:(obj$1={},obj$1[pointerDown]="init",obj$1),update:{write:function(){if(this.clsEmpty&&toggleClass(this.$el,this.clsEmpty,!this.$el.children.length),this.drag){offset(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var scroll,top=offset(this.drag).top,bottom=top+this.drag.offsetHeight;top>0&&top<this.scrollY?scroll=this.scrollY-5:bottom<height(document)&&bottom>height(window)+this.scrollY&&(scroll=this.scrollY+5),scroll&&setTimeout(function(){return window.scroll(window.pageXOffset,scroll)},5)}}},methods:{init:function(e){var target=e.target,button=e.button,defaultPrevented=e.defaultPrevented,placeholder=toNodes(this.$el.children).filter(function(el){return within(target,el)})[0];!placeholder||isInput(e.target)||this.handle&&!within(target,this.handle)||button>0||within(target,"."+this.clsNoDrag)||defaultPrevented||(e.preventDefault(),this.touched=[this],this.placeholder=placeholder,this.origin=assign({target:target,index:index(placeholder)},this.pos),on(document,pointerMove,this.move),on(document,pointerUp,this.end),on(window,"scroll",this.scroll),this.threshold||this.start(e))},start:function(e){this.drag=append(this.$container,this.placeholder.outerHTML.replace(/^<li/i,"<div").replace(/li>$/i,"div>")),css(this.drag,assign({boxSizing:"border-box",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},css(this.placeholder,["paddingLeft","paddingRight","paddingTop","paddingBottom"]))),attr(this.drag,"uk-no-boot",""),addClass(this.drag,this.clsDrag,this.clsCustom),height(this.drag.firstElementChild,height(this.placeholder.firstElementChild));var ref=offset(this.placeholder),left=ref.left,top=ref.top;assign(this.origin,{left:left-this.pos.x,top:top-this.pos.y}),addClass(this.placeholder,this.clsPlaceholder),addClass(this.$el.children,this.clsItem),addClass(document.documentElement,this.clsDragState),trigger(this.$el,"start",[this,this.placeholder]),this.move(e)},move:function(e){if(this.drag){this.$emit();var target="mousemove"===e.type?e.target:document.elementFromPoint(this.pos.x-document.body.scrollLeft,this.pos.y-document.body.scrollTop),sortable=this.getSortable(target),previous=this.getSortable(this.placeholder),move=sortable!==previous;if(sortable&&!within(target,this.placeholder)&&(!move||sortable.group&&sortable.group===previous.group)){if(target=sortable.$el===target.parentNode&&target||toNodes(sortable.$el.children).filter(function(element){return within(target,element)})[0],move)previous.remove(this.placeholder);else if(!target)return;sortable.insert(this.placeholder,target),includes(this.touched,sortable)||this.touched.push(sortable)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(e)},scroll:function(){var scroll=window.pageYOffset;scroll!==this.scrollY&&(this.pos.y+=scroll-this.scrollY,this.scrollY=scroll,this.$emit())},end:function(e){if(off(document,pointerMove,this.move),off(document,pointerUp,this.end),off(window,"scroll",this.scroll),this.drag){preventClick();var sortable=this.getSortable(this.placeholder);this===sortable?this.origin.index!==index(this.placeholder)&&trigger(this.$el,"moved",[this,this.placeholder]):(trigger(sortable.$el,"added",[sortable,this.placeholder]),trigger(this.$el,"removed",[this,this.placeholder])),trigger(this.$el,"stop",[this,this.placeholder]),remove(this.drag),this.drag=null;var classes=this.touched.map(function(sortable){return sortable.clsPlaceholder+" "+sortable.clsItem}).join(" ");this.touched.forEach(function(sortable){return removeClass(sortable.$el.children,classes)}),removeClass(document.documentElement,this.clsDragState)}else"mouseup"!==e.type&&within(e.target,"a[href]")&&(location.href=closest(e.target,"a[href]").href)},insert:function(element,target){var this$1=this;addClass(this.$el.children,this.clsItem);var insert=function(){target?!within(element,this$1.$el)||function(element,target){return element.parentNode===target.parentNode&&index(element)>index(target)}(element,target)?before(target,element):after(target,element):append(this$1.$el,element)};this.animation?this.animate(insert):insert()},remove:function(element){within(element,this.$el)&&(this.animation?this.animate(function(){return remove(element)}):remove(element))},getSortable:function(element){return element&&(this.$getComponent(element,"sortable")||this.getSortable(element.parentNode))}}};var actives=[],Tooltip={attrs:!0,args:"title",mixins:[Container,Togglable,Position],props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){this._hasTitle=hasAttr(this.$el,"title"),attr(this.$el,{title:"","aria-expanded":!1})},disconnected:function(){this.hide(),attr(this.$el,{title:this._hasTitle?this.title:null,"aria-expanded":null})},methods:{show:function(){var this$1=this;includes(actives,this)||(actives.forEach(function(active){return active.hide()}),actives.push(this),this._unbind=on(document,"click",function(e){return!within(e.target,this$1.$el)&&this$1.hide()}),clearTimeout(this.showTimer),this.tooltip=append(this.container,'<div class="'+this.clsPos+'" aria-hidden><div class="'+this.clsPos+'-inner">'+this.title+"</div></div>"),attr(this.$el,"aria-expanded",!0),this.positionAt(this.tooltip,this.$el),this.origin="y"===this.getAxis()?flipPosition(this.dir)+"-"+this.align:this.align+"-"+flipPosition(this.dir),this.showTimer=setTimeout(function(){this$1.toggleElement(this$1.tooltip,!0),this$1.hideTimer=setInterval(function(){isVisible(this$1.$el)||this$1.hide()},150)},this.delay))},hide:function(){var index$$1=actives.indexOf(this);!~index$$1||matches(this.$el,"input")&&this.$el===document.activeElement||(actives.splice(index$$1,1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),attr(this.$el,"aria-expanded",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&remove(this.tooltip),this.tooltip=!1,this._unbind())}},events:(obj$2={},obj$2["focus "+pointerEnter+" "+pointerDown]=function(e){e.type===pointerDown&&isTouch(e)||this.show()},obj$2.blur="hide",obj$2[pointerLeave]=function(e){isTouch(e)||this.hide()},obj$2)},Upload={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:noop,beforeAll:noop,beforeSend:noop,complete:noop,completeAll:noop,error:noop,fail:noop,load:noop,loadEnd:noop,loadStart:noop,progress:noop},events:{change:function(e){matches(e.target,'input[type="file"]')&&(e.preventDefault(),e.target.files&&this.upload(e.target.files),e.target.value="")},drop:function(e){stop(e);var transfer=e.dataTransfer;transfer&&transfer.files&&(removeClass(this.$el,this.clsDragover),this.upload(transfer.files))},dragenter:function(e){stop(e)},dragover:function(e){stop(e),addClass(this.$el,this.clsDragover)},dragleave:function(e){stop(e),removeClass(this.$el,this.clsDragover)}},methods:{upload:function(files){var this$1=this;if(files.length){trigger(this.$el,"upload",[files]);for(var i=0;i<files.length;i++){if(this$1.maxSize&&1e3*this$1.maxSize<files[i].size)return void this$1.fail(this$1.msgInvalidSize.replace("%s",this$1.maxSize));if(this$1.allow&&!match(this$1.allow,files[i].name))return void this$1.fail(this$1.msgInvalidName.replace("%s",this$1.allow));if(this$1.mime&&!match(this$1.mime,files[i].type))return void this$1.fail(this$1.msgInvalidMime.replace("%s",this$1.mime))}this.multiple||(files=[files[0]]),this.beforeAll(this,files);var chunks=function(files,size){for(var chunks=[],i=0;i<files.length;i+=size){for(var chunk=[],j=0;j<size;j++)chunk.push(files[i+j]);chunks.push(chunk)}return chunks}(files,this.concurrent),upload=function(files){var data$$1=new FormData;for(var key in files.forEach(function(file){return data$$1.append(this$1.name,file)}),this$1.params)data$$1.append(key,this$1.params[key]);ajax(this$1.url,{data:data$$1,method:this$1.method,responseType:this$1.type,beforeSend:function(env){var xhr=env.xhr;xhr.upload&&on(xhr.upload,"progress",this$1.progress),["loadStart","load","loadEnd","abort"].forEach(function(type){return on(xhr,type.toLowerCase(),this$1[type])}),this$1.beforeSend(env)}}).then(function(xhr){this$1.complete(xhr),chunks.length?upload(chunks.shift()):this$1.completeAll(xhr)},function(e){return this$1.error(e.message)})};upload(chunks.shift())}}}};function match(pattern,path){return path.match(new RegExp("^"+pattern.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function stop(e){e.preventDefault(),e.stopPropagation()}return UIkit.component("countdown",Countdown),UIkit.component("filter",Filter),UIkit.component("lightbox",Lightbox),UIkit.component("lightboxPanel",LightboxPanel),UIkit.component("notification",Notification),UIkit.component("parallax",Parallax$1),UIkit.component("slider",Slider$1),UIkit.component("sliderParallax",SliderParallax),UIkit.component("slideshow",Slideshow$1),UIkit.component("slideshowParallax",SliderParallax),UIkit.component("sortable",Sortable),UIkit.component("tooltip",Tooltip),UIkit.component("upload",Upload),function(UIkit){var connect=UIkit.connect,disconnect=UIkit.disconnect;function init(){apply$$1(document.body,connect),fastdom.flush(),new MutationObserver(function(mutations){return mutations.forEach(applyMutation)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),UIkit._initialized=!0}function applyMutation(mutation){var target=mutation.target;("attributes"!==mutation.type?function(ref){for(var addedNodes=ref.addedNodes,removedNodes=ref.removedNodes,i=0;i<addedNodes.length;i++)apply$$1(addedNodes[i],connect);for(var i$1=0;i$1<removedNodes.length;i$1++)apply$$1(removedNodes[i$1],disconnect);return!0}(mutation):function(ref){var target=ref.target,attributeName=ref.attributeName;if("href"===attributeName)return!0;var name=getComponentName(attributeName);if(name&&name in UIkit){if(hasAttr(target,attributeName))return UIkit[name](target),!0;var component=UIkit.getComponent(target,name);return component?(component.$destroy(),!0):void 0}}(mutation))&&UIkit.update(target)}function apply$$1(node,fn){if(1===node.nodeType&&!hasAttr(node,"uk-no-boot"))for(fn(node),node=node.firstElementChild;node;){var next=node.nextElementSibling;apply$$1(node,fn),node=next}}"MutationObserver"in window&&(document.body?init():new MutationObserver(function(){document.body&&(this.disconnect(),init())}).observe(document,{childList:!0,subtree:!0}))}(UIkit),UIkit}),function(){!function(){for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}(),window.Typewriter=function(element,options){return this._settings={cursorAnimationPaused:!1,opacityIncreasing:!1,currentOpacity:1,delayedQue:[],delayItemsCount:0,eventQue:[],calledEvents:[],eventRunning:!1,timeout:!1,delayExecution:!1,fps:.06,typingFrameCount:0,stringToTypeHTMLArray:[],currentTypedCharacters:[],typing:!1,usedIDs:[],charAmountToDelete:!1,userOptions:{},eventLoopRerun:0},element?"object"!=typeof options?console.error("Typewriter only accepts the options as an object."):(this._settings.userOptions=options,this.default_options={strings:!1,cursorClassName:"typewriter-cursor",cursor:"|",animateCursor:!0,blinkSpeed:50,typingSpeed:"natural",deleteSpeed:"natural",charSpanClassName:"typewriter-char",wrapperClassName:"typewriter-wrapper",loop:!1,autoStart:!1,devMode:!1},this.options=this._setupOptions(options),this.el=element,this._setupTypwriterWrapper(),this._startCursorAnimation(),void(!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings())):console.error("Please choose an DOM element so that type writer can display itself.")};var TypewriterPrototype=window.Typewriter.prototype;TypewriterPrototype.stop=function(){return this._addToEventQue(this._stopEventLoop),this},TypewriterPrototype.start=function(){return this._startEventLoop(),this},TypewriterPrototype.rerun=function(){return this._addToEventQue(this._rerunCalledEvents),this},TypewriterPrototype.typeString=function(string){if(!string||"string"!=typeof string)return console.error("Please enter a string as the paramater.");var string_chars=this._getCharacters(string);return this._addToEventQue([this._typeCharacters,[string_chars]]),this},TypewriterPrototype.deleteAll=function(){return this._addToEventQue([this._deleteChars,["all"]]),this},TypewriterPrototype.deleteChars=function(amount){return this._addToEventQue([this._deleteChars,[amount]]),this},TypewriterPrototype.pauseFor=function(ms){return this._addToEventQue([this._pauseFor,[ms]]),this},TypewriterPrototype.typeOutAllStrings=function(){var characters_array=this._getStringsAsCharsArray();if(1===characters_array.length)this._typeCharacters(characters_array[0]);else for(var i=0,length=characters_array.length;i<length;i++)this._addToEventQue([this._typeCharacters,[characters_array[i]]]),this.pauseFor(this._randomInteger(1500,2500)),this.deleteAll(),this.pauseFor(this._randomInteger(1500,2500));return this},TypewriterPrototype.changeSettings=function(new_settings){return new_settings||"object"==typeof new_settings?(this._addToEventQue([this._changeSettings,[JSON.stringify(new_settings)]]),this):console.error("Typewriter will only accept an object as the settings.")},TypewriterPrototype.changeBlinkSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({blinkSpeed:new_speed}),this):console.error("Please enter a number for the new blink speed.")},TypewriterPrototype.changeTypingSpeed=function(new_speed){if(!new_speed&&"number"!=typeof new_speed)return console.error("Please enter a number for the new typing speed.");return this.changeSettings({typingSpeed:new_speed}),this},TypewriterPrototype.changeDeleteSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({changeDeleteSpeed:new_speed}),this):console.error("Please enter a number for the new delete speed.")},TypewriterPrototype._rerunCalledEvents=function(){this._settings.currentTypedCharacters.length>0?(this.deleteAll(),this._resetEventLoop("rerunCalledEvents")):(this._settings.eventQue=this._settings.calledEvents,this._settings.calledEvents=[],this.options=this._setupOptions(this._settings.userOptions),this._settings.usedIDs=[],this.charAmountToDelete=!1,this._startEventLoop())},TypewriterPrototype._deleteChars=function(amount){return amount&&(this._settings.charAmountToDelete=amount),this._deletingCharIdsAnimation=window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this)),this},TypewriterPrototype._pauseFor=function(ms){var self=this;self._settings.eventRunning=!0,setTimeout(function(){self._resetEventLoop("pauseFor")},ms)},TypewriterPrototype._changeSettings=function(new_settings){this.options=this._setupOptions(JSON.parse(new_settings[0])),this._resetEventLoop("changeSettings"),this.options.devMode&&console.log("New settings",this.options)},TypewriterPrototype._deletingCharAnimationFrame=function(){var self=this,delete_speed=this.options.deleteSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName,current_typed_char_ids=self._settings.currentTypedCharacters,char_amount_to_delete=self._settings.charAmountToDelete;if(!self._settings.charAmountToDelete||0===self._settings.charAmountToDelete||0===current_typed_char_ids)return self._resetEventLoop("deletingCharAnimationFrame"),!0;"natural"==delete_speed&&(delete_speed=self._randomInteger(50,150)),"all"==char_amount_to_delete&&(char_amount_to_delete=current_typed_char_ids.length,self._settings.charAmountToDelete=char_amount_to_delete),setTimeout(function(){if(self._settings.charAmountToDelete){var last_typed_char_index=current_typed_char_ids.length-1,get_last_typed_char=current_typed_char_ids[last_typed_char_index];self._settings.currentTypedCharacters.splice(last_typed_char_index,1);var char_to_delete_el=document.getElementById(get_last_typed_char);if(char_to_delete_el)self.el.querySelector("."+typewriter_wrapper_class_name).removeChild(char_to_delete_el),self._settings.charAmountToDelete=char_amount_to_delete-1,self.options.devMode&&console.log("Deleted char with ID",get_last_typed_char)}self._deletingCharIdsAnimation=window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self))},delete_speed)},TypewriterPrototype._setupOptions=function(new_options){var merged_options={};for(var attrname in this.default_options)merged_options[attrname]=this.default_options[attrname];if(this._settings.userOptions)for(var attrname in this._settings.userOptions)merged_options[attrname]=this._settings.userOptions[attrname];for(var attrname in new_options)merged_options[attrname]=new_options[attrname];return merged_options},TypewriterPrototype._addToEventQue=function(event){this._settings.eventQue.push(event),this._settings.eventQue.length>0&&!this._settings.eventRunning&&this.options.autoStart&&this._startEventLoop()},TypewriterPrototype._startEventLoop=function(){if(this.options.devMode&&console.log("Event loop started."),!this._settings.eventRunning){if(this._settings.eventQue.length>0){this.eventLoopRerun=0;var first_event=this._settings.eventQue[0];"function"==typeof first_event?(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event.call(this),this.options.devMode&&console.log("Event started.")):first_event instanceof Array&&"function"==typeof first_event[0]&&first_event[1]instanceof Array&&(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event[0].call(this,first_event[1]),this.options.devMode&&console.log("Event started."))}this._eventQueAnimation=window.requestAnimationFrame(this._startEventLoop.bind(this))}if(!this._settings.eventRunning&&this._settings.eventQue.length<=0){var self=this;return self._stopEventLoop(),void setTimeout(function(){self.options.loop&&(self.eventLoopRerun++,self.options.devMode&&console.log("Before Loop State",self._settings),self.eventLoopRerun>4?(console.error("Maximum amount of loop retries reached."),self._stopEventLoop()):(self.options.devMode&&console.log("Looping events."),self._rerunCalledEvents()))},1e3)}},TypewriterPrototype._resetEventLoop=function(name){var event_name=name||"Event";this._settings.eventRunning=!1,this._startEventLoop(),this.options.devMode&&console.log(event_name,"Finished")},TypewriterPrototype._stopEventLoop=function(){window.cancelAnimationFrame(this._eventQueAnimation),this.options.devMode&&console.log("Event loop stopped.")},TypewriterPrototype._setupTypwriterWrapper=function(){var typewriter_wrapper_class_name=this.options.wrapperClassName,typewriter_wrapper=document.createElement("span");typewriter_wrapper.className=typewriter_wrapper_class_name,this.el.innerHTML="",this.el.appendChild(typewriter_wrapper)},TypewriterPrototype._typeCharacters=function(characters_array){return this._settings.stringToTypeHTMLArray=this._convertCharsToHTML(characters_array),this._typingAnimation=window.requestAnimationFrame(this._typingAnimationFrame.bind(this,characters_array.length)),this},TypewriterPrototype._typingAnimationFrame=function(total_items){var self=this,typing_speed=this.options.typingSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName;if(0==self._settings.stringToTypeHTMLArray.length)return window.cancelAnimationFrame(self._typingAnimation),this._resetEventLoop("typingAnimationFrame"),!0;"natural"==typing_speed&&(typing_speed=this._randomInteger(50,150)),setTimeout(function(){self.el.innerHTML;var item_to_type=self._settings.stringToTypeHTMLArray[0];self.el.querySelector("."+typewriter_wrapper_class_name).appendChild(item_to_type.el),self._settings.currentTypedCharacters.push(item_to_type.id),self._settings.stringToTypeHTMLArray.splice(0,1),self._typingAnimation=window.requestAnimationFrame(self._typingAnimationFrame.bind(self,total_items)),self.options.devMode&&console.log("Typed",item_to_type)},typing_speed)},TypewriterPrototype._convertCharsToHTML=function(chars){for(var chars_html_wrap_array=[],char_class_name=this.options.charSpanClassName,chars_array=chars[0],i=0,length=chars_array.length;i<length;i++){var char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" typewriter-item-"+i,char_element.innerHTML=chars_array[i],chars_html_wrap_array.push({id:char_id,el:char_element})}return chars_html_wrap_array},TypewriterPrototype._getCharacters=function(string){return"string"==typeof string&&string.split("")},TypewriterPrototype._getStringsAsCharsArray=function(){var strings_array_check=this.options.strings instanceof Array,strings_string_check="string"==typeof this.options.strings;if(!strings_array_check)return strings_string_check?[this.options.strings.split("")]:console.error("Typewriter only accepts strings or an array of strings as the input.");for(var strings_chars_array=[],i=0,length=this.options.strings.length;i<length;i++){var string_chars=this._getCharacters(this.options.strings[i]);if(!string_chars){console.error("Please enter only strings.");break}strings_chars_array.push(string_chars)}return strings_chars_array},TypewriterPrototype._cursorAnimationFrame=function(){if(!this._settings.cursorAnimationPaused){var opacity_amount=.001*this.options.blinkSpeed,cursor_el=this.el.querySelector(".typewriter-cursor");1==this._settings.opacityIncreasing&&(this._settings.currentOpacity>=1&&(this._settings.opacityIncreasing=!1,this._settings.currentOpacity=1),this._settings.currentOpacity+=opacity_amount),0==this._settings.opacityIncreasing&&(this._settings.currentOpacity<=0&&(this._settings.opacityIncreasing=!0,this._settings.currentOpacity=0),this._settings.currentOpacity-=opacity_amount),cursor_el.style.opacity=this._settings.currentOpacity,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))}},TypewriterPrototype.appendText=function(text){return this._addToEventQue([this._appendText,[text]]),this},TypewriterPrototype._appendText=function(text){var char_class_name=this.options.charSpanClassName,char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" dom-appended",char_element.innerHTML=text;var items=[];items.push({id:char_id,el:char_element}),this._settings.stringToTypeHTMLArray=items,window.requestAnimationFrame(this._typingAnimationFrame.bind(this,1))},TypewriterPrototype._startCursorAnimation=function(){var cursor=this.options.cursor,cursor_class_name=this.options.cursorClassName,cursor_element=document.createElement("span");cursor_element.className=cursor_class_name,cursor_element.innerHTML=cursor,this.el.appendChild(cursor_element),this.options.animateCursor&&(this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this)))},TypewriterPrototype._pauseCursorAnimation=function(){this._settings.cursorAnimationPaused||(window.cancelAnimationFrame(this._cursorAnimation),this._settings.cursorAnimationPaused=!0)},TypewriterPrototype._restartCursorAnimation=function(){if(!this._settings.cursorAnimationPaused)return console.error("Cursor animation is already running.");this._settings.cursorAnimationPaused=!1,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))},TypewriterPrototype._randomInteger=function(min,max){return Math.floor(Math.random()*(max-min+1))+min},TypewriterPrototype._randomID=function(){for(var text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<this._randomInteger(5,15);i++)text+=possible.charAt(Math.floor(Math.random()*possible.length));return text},TypewriterPrototype._generateUniqueID=function(){var temp_id=this._randomID();return-1==this._settings.usedIDs.indexOf(temp_id)?(this._settings.usedIDs.push(temp_id),temp_id):this._generateUniqueID.call(this)}}();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL3NyYy9mb3VjLmpzIiwiLi4vanMvc3JjL2Vycm9ycy5qcyIsIi4uL2pzL3NyYy9jb3VudGRvd24uanMiLCIuLi9qcy9zcmMvamFtcy5qcyIsIi4uL2pzL3NyYy9yZXZpc2lvbl9kaWZmLmpzIiwiLi4vanMvc3JjL3dpa2kuanMiLCIuLi9qcy92ZW5kb3IvbW9tZW50L21vbWVudC5qcyIsIi4uL2pzL3ZlbmRvci9qcXVlcnkvanF1ZXJ5LTMuMy4xLmpzIiwiLi4vanMvdmVuZG9yL21vbWVudC9tb21lbnQtdGltZXpvbmUuanMiLCIuLi9qcy92ZW5kb3IvdWlraXQvdWlraXQuanMiLCIuLi9qcy92ZW5kb3IvdHlwZXdyaXRlci90eXBld3JpdGVyLmpzIl0sIm5hbWVzIjpbImdldFNjcmlwdCIsInVybCIsImludGVncml0eSIsImNyb3NzX29yaWdpbiIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJkZWZlciIsInVuZGVmaW5lZCIsImNyb3NzT3JpZ2luIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInNldENsYXNzIiwic2VsZWN0b3IiLCJteV9jbGFzcyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImVsZW1lbnQiLCJyZWciLCJSZWdFeHAiLCJyZXBsYWNlIiwiZXJyb3JfdHlwZXdyaXRlciIsImFwcCIsImdldEVsZW1lbnRCeUlkIiwidHlwZXdyaXRlciIsIlR5cGV3cml0ZXIiLCJsb29wIiwiZGVsZXRlU3BlZWQiLCJ0eXBpbmdTcGVlZCIsImRldk1vZGUiLCJvbmNsaWNrIiwiY3VycmVudF9jbGFzcyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInN0b3AiLCJhcHBlbmRUZXh0IiwicGF1c2VGb3IiLCJ0eXBlU3RyaW5nIiwiZGVsZXRlQ2hhcnMiLCJjaGFuZ2VTZXR0aW5ncyIsIndpbmRvdyIsIl9SZXF1ZXN0TWV0aG9kIiwiX1BhdGgiLCJfQ29kZSIsIl9FcnJvck1zZyIsInN0YXJ0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInN0YXJ0amFtIiwiRGF0ZSIsIlVUQyIsImVuZGphbSIsIm5vdyIsImdvYWwiLCJnZXRUaW1lIiwiVUlraXQiLCJub3RpZmljYXRpb24iLCJtZXNzYWdlIiwicG9zIiwidGltZW91dCIsImhlYWRpbmciLCJpbm5lckhUTUwiLCJyZWZyZXNoQ291bnRkb3duIiwic2V0SW50ZXJ2YWwiLCJkZWx0YSIsImNsZWFySW50ZXJ2YWwiLCJsb2NhdGlvbiIsInJlbG9hZCIsImRheXMiLCJNYXRoIiwiZmxvb3IiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwiZSIsIkphbUFjdGlvbnMiLCJbb2JqZWN0IE9iamVjdF0iLCJjc3JmX3Rva2VuIiwidGhpcyIsImFjdGlvbiIsIm1ldGhvZCIsImRhdGEiLCJjYWxsYmFjayIsIiQiLCJhamF4IiwiZGF0YVR5cGUiLCJoZWFkZXJzIiwiWC1DU1JGVG9rZW4iLCJkb25lIiwiZmFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb250ZW50VHlwZSIsImphbSIsInN0YXRlIiwic2VuZCIsInNlbmRfanNvbiIsImlkIiwiZm9ybSIsInF1ZXN0aW9uIiwicmVhc29uIiwibnVtYmVyIiwicGFydGljaXBhbnQiLCJ0ZWFtIiwibWVtYmVyIiwicmV2aXNpb25fZGlmZiIsInJldmlzaW9ucyIsImJ1dHRvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaWRfcmVnIiwiZ2V0UmV2aXNpb25JZCIsIm1hdGNoIiwiZ2V0UmV2aXNpb24iLCJmaWx0ZXIiLCJ4IiwiZm9yRWFjaCIsImJ1dHRvbiIsImNoZWNrZWQiLCJvbmNoYW5nZSIsInJldiIsImFmdCIsImJlZiIsImRhdGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJocmVmIiwicmFkaW9CdXR0b25DaGVja2VkIiwid2lraV9zaWRlYmFyIiwic2lkZWJhciIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwiYWRkIiwiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJtb21lbnQiLCJob29rQ2FsbGJhY2siLCJzb21lIiwiaG9va3MiLCJhcHBseSIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJpbnB1dCIsIkFycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiaXNPYmplY3QiLCJpc1VuZGVmaW5lZCIsImlzTnVtYmVyIiwiaXNEYXRlIiwibWFwIiwiYXJyIiwiZm4iLCJpIiwicmVzIiwibGVuZ3RoIiwicHVzaCIsImhhc093blByb3AiLCJhIiwiYiIsImhhc093blByb3BlcnR5IiwiZXh0ZW5kIiwidmFsdWVPZiIsImNyZWF0ZVVUQyIsImZvcm1hdCIsImxvY2FsZSIsInN0cmljdCIsImNyZWF0ZUxvY2FsT3JVVEMiLCJ1dGMiLCJnZXRQYXJzaW5nRmxhZ3MiLCJtIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJpc1ZhbGlkIiwiX2lzVmFsaWQiLCJmbGFncyIsInBhcnNlZFBhcnRzIiwiaXNOb3dWYWxpZCIsImlzTmFOIiwiX2QiLCJpbnZhbGlkV2Vla2RheSIsIl9zdHJpY3QiLCJiaWdIb3VyIiwiaXNGcm96ZW4iLCJjcmVhdGVJbnZhbGlkIiwiTmFOIiwiZnVuIiwidCIsImxlbiIsIm1vbWVudFByb3BlcnRpZXMiLCJjb3B5Q29uZmlnIiwidG8iLCJmcm9tIiwicHJvcCIsInZhbCIsIl9pc0FNb21lbnRPYmplY3QiLCJfaSIsIl9mIiwiX2wiLCJfdHptIiwiX2lzVVRDIiwiX29mZnNldCIsIl9sb2NhbGUiLCJ1cGRhdGVJblByb2dyZXNzIiwiTW9tZW50IiwiY29uZmlnIiwidXBkYXRlT2Zmc2V0IiwiaXNNb21lbnQiLCJvYmoiLCJhYnNGbG9vciIsImNlaWwiLCJ0b0ludCIsImFyZ3VtZW50Rm9yQ29lcmNpb24iLCJjb2VyY2VkTnVtYmVyIiwidmFsdWUiLCJpc0Zpbml0ZSIsImNvbXBhcmVBcnJheXMiLCJhcnJheTEiLCJhcnJheTIiLCJkb250Q29udmVydCIsIm1pbiIsImxlbmd0aERpZmYiLCJhYnMiLCJkaWZmcyIsIndhcm4iLCJtc2ciLCJzdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MiLCJjb25zb2xlIiwiZGVwcmVjYXRlIiwiZmlyc3RUaW1lIiwiZGVwcmVjYXRpb25IYW5kbGVyIiwiYXJnIiwiYXJncyIsImtleSIsInNsaWNlIiwiam9pbiIsIkVycm9yIiwic3RhY2siLCJrZXlzIiwiZGVwcmVjYXRpb25zIiwiZGVwcmVjYXRlU2ltcGxlIiwibmFtZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwicG93IiwibWF4Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJ0b2tlbiIsInBhZGRlZCIsIm9yZGluYWwiLCJmdW5jIiwibG9jYWxlRGF0YSIsImZvcm1hdE1vbWVudCIsImV4cGFuZEZvcm1hdCIsImFycmF5IiwibW9tIiwib3V0cHV0IiwibWFrZUZvcm1hdEZ1bmN0aW9uIiwiaW52YWxpZERhdGUiLCJyZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMiLCJsb25nRGF0ZUZvcm1hdCIsImxhc3RJbmRleCIsInRlc3QiLCJtYXRjaDEiLCJtYXRjaDIiLCJtYXRjaDMiLCJtYXRjaDQiLCJtYXRjaDYiLCJtYXRjaDF0bzIiLCJtYXRjaDN0bzQiLCJtYXRjaDV0bzYiLCJtYXRjaDF0bzMiLCJtYXRjaDF0bzQiLCJtYXRjaDF0bzYiLCJtYXRjaFVuc2lnbmVkIiwibWF0Y2hTaWduZWQiLCJtYXRjaE9mZnNldCIsIm1hdGNoU2hvcnRPZmZzZXQiLCJtYXRjaFdvcmQiLCJyZWdleGVzIiwiYWRkUmVnZXhUb2tlbiIsInJlZ2V4Iiwic3RyaWN0UmVnZXgiLCJpc1N0cmljdCIsImdldFBhcnNlUmVnZXhGb3JUb2tlbiIsInJlZ2V4RXNjYXBlIiwibWF0Y2hlZCIsInAxIiwicDIiLCJwMyIsInA0IiwicyIsInRva2VucyIsImFkZFBhcnNlVG9rZW4iLCJhZGRXZWVrUGFyc2VUb2tlbiIsIl93IiwiYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4iLCJfYSIsIllFQVIiLCJNT05USCIsIkRBVEUiLCJIT1VSIiwiTUlOVVRFIiwiU0VDT05EIiwiTUlMTElTRUNPTkQiLCJXRUVLIiwiV0VFS0RBWSIsImRheXNJblllYXIiLCJ5ZWFyIiwiaXNMZWFwWWVhciIsInkiLCJwYXJzZVR3b0RpZ2l0WWVhciIsInBhcnNlSW50IiwiaW5kZXhPZiIsImdldFNldFllYXIiLCJtYWtlR2V0U2V0Iiwia2VlcFRpbWUiLCJzZXQkMSIsImdldCIsIm1vbnRoIiwiZGF5c0luTW9udGgiLCJtb2RNb250aCIsIm8iLCJtb250aHNTaG9ydCIsIm1vbnRocyIsIm1vbnRoc1Nob3J0UmVnZXgiLCJtb250aHNSZWdleCIsIm1vbnRoc1BhcnNlIiwiTU9OVEhTX0lOX0ZPUk1BVCIsImRlZmF1bHRMb2NhbGVNb250aHMiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCIsInNldE1vbnRoIiwiZGF5T2ZNb250aCIsImdldFNldE1vbnRoIiwiZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXgiLCJkZWZhdWx0TW9udGhzUmVnZXgiLCJjb21wdXRlTW9udGhzUGFyc2UiLCJjbXBMZW5SZXYiLCJzaG9ydFBpZWNlcyIsImxvbmdQaWVjZXMiLCJtaXhlZFBpZWNlcyIsInNvcnQiLCJfbW9udGhzUmVnZXgiLCJfbW9udGhzU2hvcnRSZWdleCIsIl9tb250aHNTdHJpY3RSZWdleCIsIl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IiwiY3JlYXRlVVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwic2V0VVRDRnVsbFllYXIiLCJmaXJzdFdlZWtPZmZzZXQiLCJkb3ciLCJkb3kiLCJmd2QiLCJnZXRVVENEYXkiLCJkYXlPZlllYXJGcm9tV2Vla3MiLCJ3ZWVrIiwid2Vla2RheSIsInJlc1llYXIiLCJyZXNEYXlPZlllYXIiLCJkYXlPZlllYXIiLCJ3ZWVrT2ZZZWFyIiwicmVzV2VlayIsIndlZWtPZmZzZXQiLCJ3ZWVrc0luWWVhciIsIndlZWtPZmZzZXROZXh0Iiwid2Vla2RheXNNaW4iLCJ3ZWVrZGF5c1Nob3J0Iiwid2Vla2RheXMiLCJ3ZWVrZGF5c01pblJlZ2V4Iiwid2Vla2RheXNTaG9ydFJlZ2V4Iiwid2Vla2RheXNSZWdleCIsIndlZWtkYXlzUGFyc2UiLCJkIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4iLCJkZWZhdWx0V2Vla2RheXNSZWdleCIsImRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXgiLCJkZWZhdWx0V2Vla2RheXNNaW5SZWdleCIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiZGF5IiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJsb3dlcmNhc2UiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJrSW5wdXQiLCJfaXNQbSIsImlzUE0iLCJfbWVyaWRpZW0iLCJwb3MxIiwicG9zMiIsImdsb2JhbExvY2FsZSIsImdldFNldEhvdXIiLCJiYXNlQ29uZmlnIiwiY2FsZW5kYXIiLCJzYW1lRGF5IiwibmV4dERheSIsIm5leHRXZWVrIiwibGFzdERheSIsImxhc3RXZWVrIiwic2FtZUVsc2UiLCJMVFMiLCJMVCIsIkwiLCJMTCIsIkxMTCIsIkxMTEwiLCJkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwicmVsYXRpdmVUaW1lIiwiZnV0dXJlIiwicGFzdCIsInNzIiwibW0iLCJoIiwiaGgiLCJkZCIsIk0iLCJNTSIsInl5IiwibWVyaWRpZW1QYXJzZSIsImxvY2FsZXMiLCJsb2NhbGVGYW1pbGllcyIsIm5vcm1hbGl6ZUxvY2FsZSIsImxvYWRMb2NhbGUiLCJvbGRMb2NhbGUiLCJfYWJiciIsInJlcXVpcmUiLCJnZXRTZXRHbG9iYWxMb2NhbGUiLCJ2YWx1ZXMiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsIm5hbWVzIiwiaiIsIm5leHQiLCJjaG9vc2VMb2NhbGUiLCJjaGVja092ZXJmbG93IiwiX292ZXJmbG93RGF5T2ZZZWFyIiwiX292ZXJmbG93V2Vla3MiLCJfb3ZlcmZsb3dXZWVrZGF5IiwiZGVmYXVsdHMiLCJjIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImN1cnJlbnREYXRlQXJyYXkiLCJ3Iiwid2Vla1llYXIiLCJ0ZW1wIiwid2Vla2RheU92ZXJmbG93IiwiR0ciLCJXIiwiRSIsImNyZWF0ZUxvY2FsIiwiX3dlZWsiLCJjdXJXZWVrIiwiZ2ciLCJfZGF5T2ZZZWFyIiwiZGF5T2ZZZWFyRnJvbVdlZWtJbmZvIiwiX25leHREYXkiLCJtcyIsInNldEZ1bGxZZWFyIiwiZ2V0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImwiLCJhbGxvd1RpbWUiLCJkYXRlRm9ybWF0IiwidGltZUZvcm1hdCIsInR6Rm9ybWF0Iiwic3RyaW5nIiwiZXhlYyIsImNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQiLCJleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzIiwieWVhclN0ciIsIm1vbnRoU3RyIiwiZGF5U3RyIiwiaG91clN0ciIsIm1pbnV0ZVN0ciIsInNlY29uZFN0ciIsInJlc3VsdCIsInVudHJ1bmNhdGVZZWFyIiwib2JzT2Zmc2V0cyIsIlVUIiwiR01UIiwiRURUIiwiRVNUIiwiQ0RUIiwiQ1NUIiwiTURUIiwiTVNUIiwiUERUIiwiUFNUIiwiY29uZmlnRnJvbVJGQzI4MjIiLCJwYXJzZWRBcnJheSIsIndlZWtkYXlTdHIiLCJwYXJzZWRJbnB1dCIsImNoZWNrV2Vla2RheSIsIm9ic09mZnNldCIsIm1pbGl0YXJ5T2Zmc2V0IiwibnVtT2Zmc2V0IiwiaG0iLCJjYWxjdWxhdGVPZmZzZXQiLCJJU09fODYwMSIsIlJGQ18yODIyIiwic2tpcHBlZCIsInN0cmluZ0xlbmd0aCIsInRvdGFsUGFyc2VkSW5wdXRMZW5ndGgiLCJob3VyIiwiaXNQbSIsIm1lcmlkaWVtSG91ciIsIm1lcmlkaWVtRml4V3JhcCIsInByZXBhcmVDb25maWciLCJwcmVwYXJzZSIsInRlbXBDb25maWciLCJiZXN0TW9tZW50Iiwic2NvcmVUb0JlYXQiLCJjdXJyZW50U2NvcmUiLCJzY29yZSIsImNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheSIsImNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrIiwiY29uZmlnRnJvbVN0cmluZyIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwiY29uZmlnRnJvbU9iamVjdCIsImNvbmZpZ0Zyb21JbnB1dCIsImlzVVRDIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImsiLCJpc09iamVjdEVtcHR5IiwicHJvdG90eXBlTWluIiwib3RoZXIiLCJwcm90b3R5cGVNYXgiLCJwaWNrQnkiLCJtb21lbnRzIiwib3JkZXJpbmciLCJEdXJhdGlvbiIsImR1cmF0aW9uIiwieWVhcnMiLCJxdWFydGVycyIsInF1YXJ0ZXIiLCJ3ZWVrcyIsIm1pbGxpc2Vjb25kcyIsInVuaXRIYXNEZWNpbWFsIiwicGFyc2VGbG9hdCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfZGF0YSIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwiYWJzUm91bmQiLCJyb3VuZCIsIm9mZnNldCIsInNlcGFyYXRvciIsInV0Y09mZnNldCIsInNpZ24iLCJvZmZzZXRGcm9tU3RyaW5nIiwiY2h1bmtPZmZzZXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsInBhcnRzIiwiY2xvbmVXaXRoT2Zmc2V0IiwibW9kZWwiLCJkaWZmIiwiY2xvbmUiLCJzZXRUaW1lIiwibG9jYWwiLCJnZXREYXRlT2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJpc1V0YyIsImFzcE5ldFJlZ2V4IiwiaXNvUmVnZXgiLCJjcmVhdGVEdXJhdGlvbiIsInJldCIsImRpZmZSZXMiLCJwYXJzZUlzbyIsImJhc2UiLCJpc0JlZm9yZSIsInBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UiLCJtb21lbnRzRGlmZmVyZW5jZSIsImlucCIsImlzQWZ0ZXIiLCJjcmVhdGVBZGRlciIsImRpcmVjdGlvbiIsInBlcmlvZCIsInRtcCIsImFkZFN1YnRyYWN0IiwiaXNBZGRpbmciLCJpbnZhbGlkIiwic3VidHJhY3QiLCJtb250aERpZmYiLCJ3aG9sZU1vbnRoRGlmZiIsImFuY2hvciIsIm5ld0xvY2FsZURhdGEiLCJkZWZhdWx0Rm9ybWF0IiwiZGVmYXVsdEZvcm1hdFV0YyIsImxhbmciLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0dGVyIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsImRheU9mWWVhckRhdGEiLCJpc29XZWVrWWVhciIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwiX29yZGluYWxQYXJzZSIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCIsImdldFNldERheU9mTW9udGgiLCJnZXRTZXRNaW51dGUiLCJnZXRTZXRTZWNvbmQiLCJwYXJzZU1zIiwiZ2V0U2V0TWlsbGlzZWNvbmQiLCJwcm90byIsInByZVBhcnNlUG9zdEZvcm1hdCIsInRpbWUiLCJmb3JtYXRzIiwic29kIiwic3RhcnRPZiIsImNhbGVuZGFyRm9ybWF0IiwiYXNGbG9hdCIsInRoYXQiLCJ6b25lRGVsdGEiLCJlbmRPZiIsImlucHV0U3RyaW5nIiwicG9zdGZvcm1hdCIsIndpdGhvdXRTdWZmaXgiLCJodW1hbml6ZSIsImZyb21Ob3ciLCJ0b05vdyIsImludmFsaWRBdCIsImxvY2FsSW5wdXQiLCJpc0JldHdlZW4iLCJpbmNsdXNpdml0eSIsImlzU2FtZSIsImlucHV0TXMiLCJpc1NhbWVPckFmdGVyIiwiaXNTYW1lT3JCZWZvcmUiLCJwYXJzaW5nRmxhZ3MiLCJwcmlvcml0aXplZCIsInVuaXRzT2JqIiwidSIsImdldFByaW9yaXRpemVkVW5pdHMiLCJpc29XZWVrZGF5IiwidG9BcnJheSIsInRvT2JqZWN0IiwidG9EYXRlIiwidG9JU09TdHJpbmciLCJrZWVwT2Zmc2V0IiwiaW5zcGVjdCIsInpvbmUiLCJpc0xvY2FsIiwicHJlZml4Iiwic3VmZml4IiwidG9KU09OIiwidW5peCIsImNyZWF0aW9uRGF0YSIsImlzb1dlZWsiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJpc0RTVFNoaWZ0ZWQiLCJfaXNEU1RTaGlmdGVkIiwicHJvdG8kMSIsImdldCQxIiwiaW5kZXgiLCJmaWVsZCIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwib3V0IiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsInNoaWZ0IiwiX2NhbGVuZGFyIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJ0b1VwcGVyQ2FzZSIsIl9pbnZhbGlkRGF0ZSIsIl9vcmRpbmFsIiwiaXNGdXR1cmUiLCJfcmVsYXRpdmVUaW1lIiwicGFzdEZ1dHVyZSIsInNvdXJjZSIsImlzRm9ybWF0IiwiX21vbnRoc1Nob3J0IiwibW9udGhOYW1lIiwiX21vbnRoc1BhcnNlRXhhY3QiLCJpaSIsImxsYyIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwiZmlyc3REYXlPZlllYXIiLCJmaXJzdERheU9mV2VlayIsIl93ZWVrZGF5cyIsIl93ZWVrZGF5c01pbiIsIl93ZWVrZGF5c1Nob3J0Iiwid2Vla2RheU5hbWUiLCJfd2Vla2RheXNQYXJzZUV4YWN0IiwiX3dlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJfZnVsbFdlZWtkYXlzUGFyc2UiLCJjaGFyQXQiLCJpc0xvd2VyIiwibGFuZ0RhdGEiLCJtYXRoQWJzIiwiYWRkU3VidHJhY3QkMSIsImFic0NlaWwiLCJkYXlzVG9Nb250aHMiLCJtb250aHNUb0RheXMiLCJtYWtlQXMiLCJhbGlhcyIsImFzIiwiYXNNaWxsaXNlY29uZHMiLCJhc1NlY29uZHMiLCJhc01pbnV0ZXMiLCJhc0hvdXJzIiwiYXNEYXlzIiwiYXNXZWVrcyIsImFzTW9udGhzIiwiYXNZZWFycyIsIm1ha2VHZXR0ZXIiLCJ0aHJlc2hvbGRzIiwiYWJzJDEiLCJ0b0lTT1N0cmluZyQxIiwiWSIsIkQiLCJ0b0ZpeGVkIiwidG90YWwiLCJ0b3RhbFNpZ24iLCJ5bVNpZ24iLCJkYXlzU2lnbiIsImhtc1NpZ24iLCJwcm90byQyIiwibW9udGhzRnJvbURheXMiLCJ3aXRoU3VmZml4IiwicG9zTmVnRHVyYXRpb24iLCJyZWxhdGl2ZVRpbWUkMSIsInRvSXNvU3RyaW5nIiwidmVyc2lvbiIsInVwZGF0ZUxvY2FsZSIsInRtcExvY2FsZSIsInJlbGF0aXZlVGltZVJvdW5kaW5nIiwicm91bmRpbmdGdW5jdGlvbiIsInJlbGF0aXZlVGltZVRocmVzaG9sZCIsInRocmVzaG9sZCIsImxpbWl0IiwibXlNb21lbnQiLCJIVE1MNV9GTVQiLCJEQVRFVElNRV9MT0NBTCIsIkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMiLCJEQVRFVElNRV9MT0NBTF9NUyIsIlRJTUUiLCJUSU1FX1NFQ09ORFMiLCJUSU1FX01TIiwibm9HbG9iYWwiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiY29uY2F0IiwiY2xhc3MydHlwZSIsImhhc093biIsImZuVG9TdHJpbmciLCJPYmplY3RGdW5jdGlvblN0cmluZyIsInN1cHBvcnQiLCJub2RlVHlwZSIsImlzV2luZG93IiwicHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyIsIm5vTW9kdWxlIiwiRE9NRXZhbCIsImNvZGUiLCJkb2MiLCJub2RlIiwidGV4dCIsImhlYWQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ0b1R5cGUiLCJqUXVlcnkiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNwbGljZSIsIm9wdGlvbnMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJ0YXJnZXQiLCJkZWVwIiwiaXNQbGFpbk9iamVjdCIsImV4cGFuZG8iLCJyYW5kb20iLCJpc1JlYWR5IiwiZXJyb3IiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwicmNzc2VzY2FwZSIsImZjc3Nlc2NhcGUiLCJjaCIsImFzQ29kZVBvaW50IiwiY2hhckNvZGVBdCIsInVubG9hZEhhbmRsZXIiLCJkaXNhYmxlZEFuY2VzdG9yIiwiYWRkQ29tYmluYXRvciIsImRpc2FibGVkIiwiZGlyIiwiY2hpbGROb2RlcyIsImVscyIsInNlZWQiLCJuaWQiLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsIm5vZGVOYW1lIiwidG9TZWxlY3RvciIsInRlc3RDb250ZXh0IiwicXNhRXJyb3IiLCJjYWNoZSIsImNhY2hlTGVuZ3RoIiwibWFya0Z1bmN0aW9uIiwiYXNzZXJ0IiwiZWwiLCJhZGRIYW5kbGUiLCJhdHRycyIsImhhbmRsZXIiLCJhdHRySGFuZGxlIiwic2libGluZ0NoZWNrIiwiY3VyIiwic291cmNlSW5kZXgiLCJuZXh0U2libGluZyIsImNyZWF0ZUlucHV0UHNldWRvIiwiY3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlRGlzYWJsZWRQc2V1ZG8iLCJpc0Rpc2FibGVkIiwiY3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50IiwibWF0Y2hJbmRleGVzIiwiZG9jdW1lbnRFbGVtZW50IiwiaGFzQ29tcGFyZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwidGFnIiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNvcnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwiYXR0ciIsInNwZWNpZmllZCIsImVzY2FwZSIsInNlbCIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZpcnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIsIj4iLCIgIiwiKyIsIn4iLCJwcmVGaWx0ZXIiLCJleGNlc3MiLCJ1bnF1b3RlZCIsIm5vZGVOYW1lU2VsZWN0b3IiLCJwYXR0ZXJuIiwib3BlcmF0b3IiLCJjaGVjayIsIndoYXQiLCJzaW1wbGUiLCJmb3J3YXJkIiwib2ZUeXBlIiwieG1sIiwidW5pcXVlQ2FjaGUiLCJvdXRlckNhY2hlIiwibm9kZUluZGV4IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgiLCJub3QiLCJ1bm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJlbGVtTGFuZyIsImhhc2giLCJyb290IiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiY29tYmluYXRvciIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwicHJlTWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwiY29udGV4dHMiLCJtdWx0aXBsZUNvbnRleHRzIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJzZXRNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwibWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsImVzY2FwZVNlbGVjdG9yIiwidW50aWwiLCJ0cnVuY2F0ZSIsImlzIiwic2libGluZ3MiLCJuIiwicm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJzZWxmIiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJwcmV2Iiwic2libGluZyIsInRhcmdldHMiLCJjbG9zZXN0IiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnQiLCJyZXZlcnNlIiwicm5vdGh0bWx3aGl0ZSIsIklkZW50aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm9WYWx1ZSIsInByb21pc2UiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwib2JqZWN0IiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwiY29tcGxldGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5V2FpdCIsIndhaXQiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2FtZWxDYXNlIiwiYWxsIiwibGV0dGVyIiwiY2FtZWxDYXNlIiwiYWNjZXB0RGF0YSIsIm93bmVyIiwiRGF0YSIsInVpZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiaGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZGF0YUF0dHIiLCJwYXJzZSIsImdldERhdGEiLCJyZW1vdmVEYXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJfcXVldWVIb29rcyIsImNsZWFyUXVldWUiLCJjb3VudCIsInBudW0iLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNIaWRkZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwic3dhcCIsIm9sZCIsImFkanVzdENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwic2NhbGUiLCJtYXhJdGVyYXRpb25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0RGlzcGxheU1hcCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIsImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNjcmlwdFR5cGUiLCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2RlZmF1bHQiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJvcHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRpdiIsInJodG1sIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0ZVRleHROb2RlIiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2VkIiwicmtleUV2ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUiLCJyZXR1cm5GYWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2ZW50cyIsImhhbmRsZU9iaiIsImhhbmRsZXJzIiwibmFtZXNwYWNlcyIsIm9yaWdUeXBlIiwiZWxlbURhdGEiLCJoYW5kbGUiLCJ0cmlnZ2VyZWQiLCJkaXNwYXRjaCIsImRlbGVnYXRlVHlwZSIsImJpbmRUeXBlIiwibmFtZXNwYWNlIiwiZGVsZWdhdGVDb3VudCIsInNldHVwIiwibWFwcGVkVHlwZXMiLCJvcmlnQ291bnQiLCJ0ZWFyZG93biIsInJlbW92ZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJoYW5kbGVyUXVldWUiLCJmaXgiLCJkZWxlZ2F0ZVRhcmdldCIsInByZURpc3BhdGNoIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJjdXJyZW50VGFyZ2V0IiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJybmFtZXNwYWNlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3N0RGlzcGF0Y2giLCJtYXRjaGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYWRkUHJvcCIsImhvb2siLCJFdmVudCIsImVudW1lcmFibGUiLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUiLCJ0cmlnZ2VyIiwiYmx1ciIsImNsaWNrIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJwcm9wcyIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZWxhdGVkVGFyZ2V0IiwidGltZVN0YW1wIiwiaXNTaW11bGF0ZWQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJhbHRLZXkiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNoYW5nZWRUb3VjaGVzIiwiY3RybEtleSIsImRldGFpbCIsImV2ZW50UGhhc2UiLCJtZXRhS2V5IiwicGFnZVgiLCJwYWdlWSIsInNoaWZ0S2V5IiwidmlldyIsImNoYXIiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNldFgiLCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJzY3JlZW5YIiwic2NyZWVuWSIsInRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwid2hpY2giLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJyZWxhdGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyY2xlYW5TY3JpcHQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJkaXNhYmxlU2NyaXB0IiwicmVzdG9yZVNjcmlwdCIsImNsb25lQ29weUV2ZW50IiwiZGVzdCIsInBkYXRhT2xkIiwicGRhdGFDdXIiLCJ1ZGF0YU9sZCIsInVkYXRhQ3VyIiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwidmFsdWVJc0Z1bmN0aW9uIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJudW1ub25weCIsImdldFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJyYm94U3R5bGUiLCJjdXJDU1MiLCJjb21wdXRlZCIsIndpZHRoIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJwaXhlbEJveFN0eWxlcyIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjb250YWluZXIiLCJjc3NUZXh0IiwiZGl2U3R5bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwicm91bmRQaXhlbE1lYXN1cmVzIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwicGl4ZWxCb3hTdHlsZXNWYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBvc2l0aW9uIiwic2Nyb2xsYm94U2l6ZVZhbCIsIm9mZnNldFdpZHRoIiwibWVhc3VyZSIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbFBvc2l0aW9uIiwicmVsaWFibGVNYXJnaW5MZWZ0Iiwic2Nyb2xsYm94U2l6ZSIsInJkaXNwbGF5c3dhcCIsInJjdXN0b21Qcm9wIiwiY3NzU2hvdyIsInZpc2liaWxpdHkiLCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9udFdlaWdodCIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsImZpbmFsUHJvcE5hbWUiLCJjc3NQcm9wcyIsImNhcE5hbWUiLCJ2ZW5kb3JQcm9wTmFtZSIsInNldFBvc2l0aXZlTnVtYmVyIiwiYm94TW9kZWxBZGp1c3RtZW50IiwiZGltZW5zaW9uIiwiYm94IiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJjb21wdXRlZFZhbCIsImV4dHJhIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJUd2VlbiIsImVhc2luZyIsImNzc0hvb2tzIiwib3BhY2l0eSIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwib3JpZ05hbWUiLCJpc0N1c3RvbVByb3AiLCJzZXRQcm9wZXJ0eSIsImdldENsaWVudFJlY3RzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJleHBhbmQiLCJleHBhbmRlZCIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIsInN0ZXAiLCJmeCIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJsaW5lYXIiLCJwIiwic3dpbmciLCJjb3MiLCJQSSIsImZ4Tm93IiwiaW5Qcm9ncmVzcyIsInJmeHR5cGVzIiwicnJ1biIsInNjaGVkdWxlIiwiaGlkZGVuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaW50ZXJ2YWwiLCJ0aWNrIiwiY3JlYXRlRnhOb3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsImhlaWdodCIsImNyZWF0ZVR3ZWVuIiwiYW5pbWF0aW9uIiwiQW5pbWF0aW9uIiwidHdlZW5lcnMiLCJwcm9wZXJ0aWVzIiwic3RvcHBlZCIsInByZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIsInR3ZWVucyIsIm9wdHMiLCJzcGVjaWFsRWFzaW5nIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2luYWxPcHRpb25zIiwiZ290b0VuZCIsInByb3BGaWx0ZXIiLCJiaW5kIiwiY29tcGxldGUiLCJ0aW1lciIsImFuaW0iLCIqIiwidHdlZW5lciIsIm9sZGZpcmUiLCJwcm9wVHdlZW4iLCJyZXN0b3JlRGlzcGxheSIsImlzQm94IiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByZWZpbHRlciIsInNwZWVkIiwib3B0Iiwic3BlZWRzIiwiZmFkZVRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJmYXN0IiwiZGVsYXkiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJhdHRyTmFtZXMiLCJsb3dlcmNhc2VOYW1lIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJzdHJpcEFuZENvbGxhcHNlIiwiZ2V0Q2xhc3MiLCJjbGFzc2VzVG9BcnJheSIsInJlbW92ZVByb3AiLCJwcm9wRml4IiwidGFiaW5kZXgiLCJmb3IiLCJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImN1clZhbHVlIiwiY2xhenoiLCJmaW5hbFZhbHVlIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImlzVmFsaWRWYWx1ZSIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJ2YWxIb29rcyIsIm9wdGlvblNldCIsImZvY3VzaW4iLCJyZm9jdXNNb3JwaCIsInN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrIiwib25seUhhbmRsZXJzIiwiYnViYmxlVHlwZSIsIm9udHlwZSIsImxhc3RFbGVtZW50IiwiZXZlbnRQYXRoIiwiaXNUcmlnZ2VyIiwicGFyZW50V2luZG93Iiwic2ltdWxhdGUiLCJ0cmlnZ2VySGFuZGxlciIsImF0dGFjaGVzIiwibm9uY2UiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJzIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlcyIsImluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzIiwianFYSFIiLCJpbnNwZWN0ZWQiLCJzZWVraW5nVHJhbnNwb3J0IiwicHJlZmlsdGVyT3JGYWN0b3J5IiwiZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0aW9ucyIsImFqYXhTZXR0aW5ncyIsImFjdGl2ZSIsImxhc3RNb2RpZmllZCIsImV0YWciLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiYXN5bmMiLCJhY2NlcHRzIiwianNvbiIsInJlc3BvbnNlRmllbGRzIiwiY29udmVydGVycyIsIiogdGV4dCIsInRleHQgaHRtbCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImJlZm9yZVNlbmQiLCJzdWNjZXNzIiwibmF0aXZlU3RhdHVzVGV4dCIsInJlc3BvbnNlcyIsImlzU3VjY2VzcyIsInJlc3BvbnNlIiwibW9kaWZpZWQiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJmaXJzdERhdGFUeXBlIiwiYWpheEhhbmRsZVJlc3BvbnNlcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJkYXRhRmlsdGVyIiwidGhyb3dzIiwiYWpheENvbnZlcnQiLCJnZXRKU09OIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwiaHRtbElzRnVuY3Rpb24iLCJ1bndyYXAiLCJ2aXNpYmxlIiwib2Zmc2V0SGVpZ2h0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJTdXBwb3J0ZWQiLCJjb3JzIiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZpZWxkcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib250aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFyc2V0Iiwic2NyaXB0Q2hhcnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25wIiwianNvbnBDYWxsYmFjayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVyd3JpdHRlbiIsInJlc3BvbnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5pbWF0ZWQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwicHJveHkiLCJob2xkUmVhZHkiLCJob2xkIiwicGFyc2VKU09OIiwiaXNOdW1lcmljIiwiX2pRdWVyeSIsIl8kIiwibm9Db25mbGljdCIsImNhY2hlZEd1ZXNzIiwiem9uZXMiLCJsaW5rcyIsImd1ZXNzZXMiLCJtb21lbnRWZXJzaW9uIiwibWFqb3IiLCJtaW5vciIsImNoYXJDb2RlVG9JbnQiLCJ1bnBhY2tCYXNlNjAiLCJ3aG9sZSIsImZyYWN0aW9uYWwiLCJtdWx0aXBsaWVyIiwiYXJyYXlUb0ludCIsIm1hcEluZGljZXMiLCJpbmRpY2VzIiwidW5wYWNrIiwib2Zmc2V0cyIsInVudGlscyIsIkluZmluaXR5IiwiaW50VG9VbnRpbCIsImFiYnJzIiwicG9wdWxhdGlvbiIsIlpvbmUiLCJwYWNrZWRTdHJpbmciLCJfc2V0IiwiT2Zmc2V0QXQiLCJhdCIsInRpbWVTdHJpbmciLCJ0b1RpbWVTdHJpbmciLCJab25lU2NvcmUiLCJvZmZzZXRTY29yZSIsImFiYnJTY29yZSIsImZpbmRDaGFuZ2UiLCJsb3ciLCJtaWQiLCJzb3J0Wm9uZVNjb3JlcyIsImFkZFRvR3Vlc3NlcyIsImd1ZXNzZXNGb3JVc2VyT2Zmc2V0cyIsImd1ZXNzZXNPZmZzZXQiLCJvZmZzZXRzTGVuZ3RoIiwiZmlsdGVyZWRHdWVzc2VzIiwicmVidWlsZEd1ZXNzIiwiaW50bE5hbWUiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJyZXNvbHZlZE9wdGlvbnMiLCJ0aW1lWm9uZSIsIm5vcm1hbGl6ZU5hbWUiLCJsb2dFcnJvciIsInpvbmVTY29yZSIsImNoYW5nZSIsInN0YXJ0WWVhciIsInVzZXJPZmZzZXRzIiwiem9uZVNjb3JlcyIsImdldFpvbmUiLCJzY29yZU9mZnNldEF0IiwiYWRkWm9uZSIsInBhY2tlZCIsIm5vcm1hbGl6ZWQiLCJjYWxsZXIiLCJsaW5rIiwiYWRkTGluayIsIm5vcm1hbDAiLCJub3JtYWwxIiwibG9hZERhdGEiLCJ0eiIsImRhdGFWZXJzaW9uIiwibmVlZHNPZmZzZXQiLCJpc1VuaXhUaW1lc3RhbXAiLCJ1bnBhY2tlZCIsIl9pbmRleCIsInRpbWVzdGFtcCIsIm9mZnNldE5leHQiLCJvZmZzZXRQcmV2IiwibW92ZUFtYmlndW91c0ZvcndhcmQiLCJtb3ZlSW52YWxpZEZvcndhcmQiLCJvZmZzZXRBdCIsIl96b25lcyIsIl9saW5rcyIsIl9uYW1lcyIsInpvbmVFeGlzdHMiLCJkaWRTaG93RXJyb3IiLCJndWVzcyIsImlnbm9yZUNhY2hlIiwiYWJicldyYXAiLCJfeiIsImRlZmF1bHRab25lIiwic2V0RGVmYXVsdCIsImh5cGhlbmF0ZUNhY2hlIiwiaHlwaGVuYXRlUmUiLCJoeXBoZW5hdGUiLCJzdHIiLCJjYW1lbGl6ZVJlIiwiY2FtZWxpemUiLCJ0b1VwcGVyIiwidWNmaXJzdCIsInN0clByb3RvdHlwZSIsInN0YXJ0c1dpdGhGbiIsInN0YXJ0c1dpdGgiLCJzZWFyY2giLCJsYXN0SW5kZXhPZiIsImVuZHNXaXRoRm4iLCJlbmRzV2l0aCIsImluY2x1ZGVzRm4iLCJpbmNsdWRlc1N0ciIsImluY2x1ZGVzIiwiaW5jbHVkZXNBcnJheSIsImlzU3RyaW5nIiwiaXNEb2N1bWVudCIsImlzSlF1ZXJ5IiwiaXNOb2RlIiwiTm9kZSIsImlzTm9kZUNvbGxlY3Rpb24iLCJOb2RlTGlzdCIsIkhUTUxDb2xsZWN0aW9uIiwiaXNCb29sZWFuIiwidG9Cb29sZWFuIiwidG9OdW1iZXIiLCJOdW1iZXIiLCJ0b0Zsb2F0IiwidG9Ob2RlIiwiYXJyYXlQcm90byIsInRvTm9kZXMiLCJCb29sZWFuIiwidG9MaXN0IiwidG9NcyIsImFzc2lnbiIsImNiIiwic29ydEJ5IiwiY2xhbXAiLCJpbnRlcnNlY3RSZWN0IiwicjEiLCJyMiIsImJvdHRvbSIsInBvaW50SW5SZWN0IiwicG9pbnQiLCJEaW1lbnNpb25zIiwicmF0aW8iLCJkaW1lbnNpb25zIiwiYVByb3AiLCJjb250YWluIiwibWF4RGltZW5zaW9ucyIsInRoaXMkMSIsImNvdmVyIiwiaGFzQXR0ciIsImhhc0F0dHJpYnV0ZSIsImZpbHRlckF0dHIiLCJhdHRyaWJ1dGUiLCJyZXBsYWNlbWVudCIsInF1ZXJ5IiwiaXNDb250ZXh0U2VsZWN0b3IiLCJxdWVyeUFsbCIsImZpbmRBbGwiLCJfcXVlcnkiLCJxdWVyeUZuIiwicmVtb3ZlcyIsImNvbnRleHRTYW5pdGl6ZVJlIiwiY3R4Iiwic2VsZWN0b3JzJDEiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY29udGV4dFNlbGVjdG9yUmUiLCJlbFByb3RvIiwiRWxlbWVudCIsIm1hdGNoZXNGbiIsImNsb3Nlc3RGbiIsImFuY2VzdG9yIiwiZXNjYXBlRm4iLCJDU1MiLCJ2b2lkRWxlbWVudHMiLCJhcmVhIiwiYnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibWVudWl0ZW0iLCJtZXRhIiwidHJhY2siLCJ3YnIiLCJpc1ZvaWRFbGVtZW50IiwidGFnTmFtZSIsImlzVmlzaWJsZSIsInNlbElucHV0IiwiaXNJbnB1dCIsIndpdGhpbiIsInJlZiIsImdldEFyZ3MiLCJsaXN0ZW5lciIsInVzZUNhcHR1cmUiLCJ0b0V2ZW50VGFyZ2V0IiwiY29uZGl0aW9uIiwidG9FdmVudFRhcmdldHMiLCJyZWR1Y2UiLCJub3RDYW5jZWxlZCIsImRpc3BhdGNoRXZlbnQiLCJjcmVhdGVFdmVudCIsImluaXRDdXN0b21FdmVudCIsImlzRXZlbnRUYXJnZXQiLCJFdmVudFRhcmdldCIsInByZXZlbnRDbGljayIsIlByb21pc2UkMSIsIlByb21pc2UiLCJQcm9taXNlRm4iLCJQRU5ESU5HIiwic2V0SW1tZWRpYXRlIiwiZXhlY3V0b3IiLCJyIiwiaXRlcmFibGUiLCJyZXNvbHZlciIsInJhY2UiLCJlbnYiLCJnZXRJbWFnZSIsInNyY3NldCIsInNpemVzIiwiSW1hZ2UiLCJ1bmJpbmQxIiwidW5iaW5kMiIsImdldEluZGV4IiwiZmluaXRlIiwiaGFzQ2hpbGROb2RlcyIsImluc2VydE5vZGVzIiwiY2FsbGVkIiwib25SZXNvbHZlZCIsImZyYWdtZW50UmUiLCJzaW5nbGVUYWdSZSIsImluc2VydEFkamFjZW50SFRNTCIsIm5leHRFbGVtZW50U2libGluZyIsImFwcGx5JDEiLCJyZW1vdmVDbGFzc2VzIiwiY2xzIiwicmVwbGFjZUNsYXNzIiwiZm9yY2UiLCJnZXRBcmdzJDEiLCJzdXBwb3J0cyIsIkZvcmNlIiwiTXVsdGlwbGUiLCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50IiwiY29sdW1uLWNvdW50IiwiZmlsbC1vcGFjaXR5IiwiZmxleC1ncm93IiwiZmxleC1zaHJpbmsiLCJmb250LXdlaWdodCIsImxpbmUtaGVpZ2h0Iiwiei1pbmRleCIsInByb3BlcnR5IiwicHJvcE5hbWUiLCJnZXRTdHlsZSIsInJlbW92ZVByb3BlcnR5IiwicHNldWRvRWx0IiwidmFycyIsImdldENzc1ZhciIsInByZWZpeGVkTmFtZSIsInRyYW5zaXRpb24iLCJ0aW1pbmciLCJ0cmFuc2l0aW9uLXByb3BlcnR5IiwidHJhbnNpdGlvbi1kdXJhdGlvbiIsInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiwiVHJhbnNpdGlvbiIsImNhbmNlbCIsImFuaW1hdGlvblByZWZpeCIsImNsc0NhbmNlbEFuaW1hdGlvbiIsIm9yaWdpbiIsImFyZ3VtZW50cyQxIiwiaGFzUmVzZXQiLCJpbiIsImlzSHRtbCIsIiQkIiwiZGlycyIsInBvc2l0aW9uQXQiLCJlbEF0dGFjaCIsInRhcmdldEF0dGFjaCIsImVsT2Zmc2V0IiwidGFyZ2V0T2Zmc2V0IiwiZmxpcCIsImJvdW5kYXJ5IiwiZ2V0UG9zIiwiZmxpcHBlZCIsImRpbSIsImdldERpbWVuc2lvbnMiLCJ0YXJnZXREaW0iLCJtb3ZlVG8iLCJnZXRPZmZzZXRzIiwid2luZG93JDEiLCJhbGlnbiIsImFsaWduRmxpcCIsImVsZW1PZmZzZXQiLCJjZW50ZXJPZmZzZXQiLCJjZW50ZXJUYXJnZXRPZmZzZXQiLCJuZXdWYWwiLCJjb29yZGluYXRlcyIsImN1cnJlbnRPZmZzZXQiLCJpbm5lckhlaWdodCIsImlubmVyV2lkdGgiLCJkb2NFbCIsInByb3BOYW1lJCQxIiwiYm94TW9kZWxBZGp1c3QiLCJhdHRhY2giLCJmYWN0b3IiLCJmbGlwUG9zaXRpb24iLCJpc0luVmlldyIsInRvcE9mZnNldCIsImxlZnRPZmZzZXQiLCJyZWxhdGl2ZVRvVmlld3BvcnQiLCJvZmZzZXRQb3NpdGlvbiIsImVsVG9wIiwiZWxMZWZ0Iiwic2Nyb2xsZWRPdmVyIiwiaGVpZ2h0T2Zmc2V0IiwiZG9jdW1lbnQkMSIsImVsSGVpZ2h0IiwidnAiLCJ2aCIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJpc1J0bCIsImhhc1RvdWNoRXZlbnRzIiwiaGFzUG9pbnRlckV2ZW50cyIsIlBvaW50ZXJFdmVudCIsImhhc1RvdWNoIiwiRG9jdW1lbnRUb3VjaCIsIm5hdmlnYXRvciIsIm1heFRvdWNoUG9pbnRzIiwicG9pbnRlckRvd24iLCJwb2ludGVyTW92ZSIsInBvaW50ZXJVcCIsInBvaW50ZXJFbnRlciIsInBvaW50ZXJMZWF2ZSIsImZhc3Rkb20iLCJyZWFkcyIsIndyaXRlcyIsInJlYWQiLCJ0YXNrIiwic2NoZWR1bGVGbHVzaCIsIndyaXRlIiwiY2xlYXIiLCJyZW1vdmUkMSIsImZsdXNoIiwicnVuVGFza3MiLCJzY2hlZHVsZWQiLCJ0YXNrcyIsIml0ZW0iLCJNb3VzZVRyYWNrZXIiLCJzbG9wZSIsInBvc2l0aW9ucyIsInRpY2tpbmciLCJtb3Zlc1RvIiwicG9zaXRpb24kJDEiLCJwcmV2UG9zIiwicG9pbnRzIiwic3RyYXRzIiwibWVyZ2VGbkRhdGEiLCJwYXJlbnRWYWwiLCJjaGlsZFZhbCIsInZtIiwiY3JlYXRlZCIsImJlZm9yZUNvbm5lY3QiLCJjb25uZWN0ZWQiLCJiZWZvcmVEaXNjb25uZWN0IiwiZGlzY29ubmVjdGVkIiwiZGVzdHJveSIsInVwZGF0ZSIsIm1ldGhvZHMiLCJkZWZhdWx0U3RyYXQiLCJtZXJnZU9wdGlvbnMiLCJjaGlsZCIsImV4dGVuZHMiLCJtaXhpbnMiLCJtZXJnZUtleSIsImtleSQxIiwicGFyc2VPcHRpb25zIiwiUGxheWVyIiwicG9zdCIsImNtZCIsImNvbnRlbnRXaW5kb3ciLCJwb3N0TWVzc2FnZSIsImlzVmlkZW8iLCJpc1lvdXR1YmUiLCJpc1ZpbWVvIiwiaXNIVE1MNSIsImlzSUZyYW1lIiwiZW5hYmxlQXBpIiwicG9sbGVyIiwieW91dHViZSIsInZpbWVvIiwiZGF0YSQkMSIsInBsYXllcl9pZCIsInBsYXkiLCJwYXVzZSIsIm11dGUiLCJtdXRlZCIsImNsaWNrVGltZW91dCIsInN3aXBlVGltZW91dCIsInRhcFRpbWVvdXQiLCJjbGlja2VkIiwidG91Y2giLCJjYW5jZWxBbGwiLCJnZXRQb3MkMSIsImdldFR5cGUiLCJ4MSIsInkxIiwieDIiLCJ5MiIsInRvdWNoaW5nIiwiaXNUb3VjaCIsImdldENvbXBvbmVudE5hbWUiLCJfaW5pdCIsInV0aWwiLCJmcmVlemUiLCJEQVRBIiwiX2lzUmVhZHkiLCJfY2FsbFVwZGF0ZSIsInVzZSIsInBsdWdpbiIsImluc3RhbGxlZCIsIm1peGluIiwiY29tcG9uZW50IiwiU3ViIiwiY3JlYXRlIiwicGF0aCIsImdsb2JhbEFQSSIsIl9jYWxsSG9vayIsIiRvcHRpb25zIiwiX2NhbGxDb25uZWN0ZWQiLCJfY29ubmVjdGVkIiwiX2luaXRQcm9wcyIsIl9pbml0RXZlbnRzIiwiX2luaXRPYnNlcnZlciIsIl9jYWxsUmVhZHkiLCJfY2FsbERpc2Nvbm5lY3RlZCIsIl9vYnNlcnZlciIsImRpc2Nvbm5lY3QiLCJfdW5iaW5kRXZlbnRzIiwiX3Jlc2V0Q29tcHV0ZWRzIiwidXBkYXRlcyIsIl9mcmFtZXMiLCJob29rc0FQSSIsImdldFByb3BzIiwiY29lcmNlIiwicHJvcCQxIiwicmVnaXN0ZXJDb21wdXRlZCIsIl9jb21wdXRlZHMiLCIkcHJvcHMiLCIkZWwiLCJyZWdpc3RlckV2ZW50IiwiY2FwdHVyZSIsImZpbHRlciQkMSIsInNlbGZGaWx0ZXIiLCJfZXZlbnRzIiwibm90SW4iLCJldmVyeSIsInRvTWVkaWEiLCJyZWYkMSIsImluZGV4JCQxIiwibm9ybWFsaXplRGF0YSIsIl91aWQiLCJfaW5pdERhdGEiLCJfaW5pdE1ldGhvZHMiLCJfaW5pdENvbXB1dGVkcyIsIiRtb3VudCIsIiRuYW1lIiwiZXhjbHVkZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCIkcmVzZXQiLCJvYnNlcnZlIiwiYXR0cmlidXRlRmlsdGVyIiwic3RhdGVBUEkiLCJjb21wb25lbnRzIiwiYXJnc0FycmF5IiwiZnVuY3Rpb25hbCIsImluc3RhbmNlIiwiZ2V0Q29tcG9uZW50IiwiJGRlc3Ryb3kiLCJpbnN0YWxsIiwiX2luaXRpYWxpemVkIiwiZ2V0Q29tcG9uZW50cyIsImNvbm5lY3QiLCJuYW1lJDEiLCJjb21wb25lbnRBUEkiLCIkZW1pdCIsInJlbW92ZUVsIiwiJGNyZWF0ZSIsIiR1cGRhdGUiLCIkZ2V0Q29tcG9uZW50IiwiZGVmaW5lUHJvcGVydGllcyIsIiRjb250YWluZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJpbnN0YW5jZUFQSSIsIkNsYXNzIiwiVG9nZ2xhYmxlIiwicXVldWVkIiwiaW5pdFByb3BzIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJoaWRlUHJvcHMiLCJoYXNBbmltYXRpb24iLCJoYXNUcmFuc2l0aW9uIiwidG9nZ2xlRWxlbWVudCIsImFuaW1hdGUkJDEiLCJfdG9nZ2xlRWxlbWVudCIsInRvZ2dsZWQiLCJpc1RvZ2dsZWQiLCJ1bnRvZ2dsZWQiLCJzY3JvbGwiLCJ0b2dnbGVOb3ciLCJ1cGRhdGVBcmlhIiwiX3RvZ2dsZUhlaWdodCIsIl90b2dnbGVBbmltYXRpb24iLCJfdG9nZ2xlSW1tZWRpYXRlIiwiX3RvZ2dsZSIsImNoYW5nZWQiLCJpbm5lciIsImxhc3RFbGVtZW50Q2hpbGQiLCJjdXJyZW50SGVpZ2h0IiwiZW5kSGVpZ2h0IiwiQWNjb3JkaW9uIiwiY29sbGFwc2libGUiLCJtdWx0aXBsZSIsImNsc09wZW4iLCJpdGVtcyIsImlzSXRlbSIsIl93cmFwcGVyIiwiQWxlcnQiLCJjbG9zZSIsInNlbENsb3NlIiwiQ29yZSIsInN0YXJ0ZWQiLCJwYXNzaXZlIiwiaG92ZXJTZWxlY3RvciIsInJlZ2lzdGVyZWQiLCJWaWRlbyIsImF1dG9tdXRlIiwiYXV0b3BsYXkiLCJpblZpZXciLCJwcmVsb2FkIiwicGxheWVyIiwiQ292ZXIiLCJoZWlnaHQkJDEiLCJ3aWR0aCQkMSIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0IiwibG9hZGVkbWV0YWRhdGEiLCJQb3NpdGlvbiIsImNsc1BvcyIsIm9mZnNldCQkMSIsImF4aXMiLCJnZXRBeGlzIiwiRHJvcCIsIm1vZGUiLCJib3VuZGFyeUFsaWduIiwiZGVsYXlTaG93IiwiZGVsYXlIaWRlIiwiY2xzRHJvcCIsImhvdmVySWRsZSIsInRyYWNrZXIiLCJjbGVhclRpbWVycyIsImlzQWN0aXZlIiwidHJ5U2hvdyIsImlzRGVsYXlpbmciLCJzaG93VGltZXIiLCJpc1BhcmVudE9mIiwiaGlkZVRpbWVyIiwiaXNDaGlsZE9mIiwiZHJvcCIsImFsaWduVG8iLCJEcm9wZG93biIsIkZvcm1DdXN0b20iLCJmaWxlcyIsIkdpZiIsImludmlldyIsIk1hcmdpbiIsImZpcnN0Q29sdW1uIiwicm93cyIsImdldFJvd3MiLCJzdGFja3MiLCJyb3ciLCJnZXRPZmZzZXQiLCJsZWZ0RGltIiwiR3JpZCIsIm1hc29ucnkiLCJwYXJhbGxheCIsImNsc1N0YWNrIiwidHJhbnNsYXRlcyIsInN1bSIsIm1heENvbHVtbkhlaWdodCIsInNjcm9sbGVkIiwiSGVpZ2h0TWF0Y2giLCJtaW5IZWlnaHQiLCJib3hTaXppbmciLCJoZWlnaHRzIiwiSGVpZ2h0Vmlld3BvcnQiLCJvZmZzZXRCb3R0b20iLCJ2aWV3cG9ydCIsInN2Z3MiLCJTVkciLCJpY29uIiwiYXNzaWduJCQxIiwic3ZnIiwiZ2V0U3ZnIiwic3ltYm9scyIsInN5bWJvbFJlIiwicGFyc2VTeW1ib2xzIiwiaXNFcXVhbE5vZGUiLCJzdmdFbCIsImRlY29kZVVSSUNvbXBvbmVudCIsImljb25zIiwic3Bpbm5lciIsInRvdG9wIiwibWFya2VyIiwiY2xvc2UtaWNvbiIsImNsb3NlLWxhcmdlIiwibmF2YmFyLXRvZ2dsZS1pY29uIiwib3ZlcmxheS1pY29uIiwicGFnaW5hdGlvbi1uZXh0IiwicGFnaW5hdGlvbi1wcmV2aW91cyIsInNlYXJjaC1pY29uIiwic2VhcmNoLWxhcmdlIiwic2VhcmNoLW5hdmJhciIsInNsaWRlbmF2LW5leHQiLCJzbGlkZW5hdi1uZXh0LWxhcmdlIiwic2xpZGVuYXYtcHJldmlvdXMiLCJzbGlkZW5hdi1wcmV2aW91cy1sYXJnZSIsIkljb24iLCJhZGRlZCIsImNtcCIsImlzSWNvbiIsImdldEljb24iLCJhcHBseVJ0bCIsIkljb25Db21wb25lbnQiLCJTbGlkZW5hdiIsIlNlYXJjaCIsIkNsb3NlIiwiU3Bpbm5lciIsIkltZyIsImRhdGFTcmMiLCJkYXRhU3Jjc2V0IiwiZGF0YVNpemVzIiwiZGF0YVdpZHRoIiwiZGF0YUhlaWdodCIsImNhY2hlS2V5IiwiaXNJbWciLCJ0b1B4Iiwic3RvcmFnZSIsInNldFNyY0F0dHJzIiwiY29sb3IiLCJtYXRjaGVzJCQxIiwic2l6ZXNSZSIsIm1hdGNoTWVkaWEiLCJzaXplIiwic3Vic3RyaW5nIiwic2l6ZVJlIiwiYWRkaXRpb25SZSIsInVybENhY2hlIiwiY2FudmFzIiwiZ2V0Q29udGV4dCIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwidG9EYXRhVVJMIiwiZ2V0UGxhY2Vob2xkZXJJbWFnZSIsImN1cnJlbnRTcmMiLCJzZXNzaW9uU3RvcmFnZSIsImFjdGl2ZSQxIiwiTGVhZGVyIiwiZmlsbCIsIm1lZGlhIiwiY2xzV3JhcHBlciIsImNsc0hpZGUiLCJhdHRyRmlsbCIsIndyYXBwZXIiLCJDb250YWluZXIiLCJNb2RhbCIsInNlbFBhbmVsIiwiZXNjQ2xvc2UiLCJiZ0Nsb3NlIiwib3ZlcmxheSIsInBhbmVsIiwidHJhbnNpdGlvbkVsZW1lbnQiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJyZWdpc3RlckV2ZW50cyIsImNsc1BhZ2UiLCJzY3JvbGxiYXJXaWR0aCIsImZvdW5kIiwiZ2V0QWN0aXZlIiwiTW9kYWwkMSIsIm1vZGFsIiwiZGlhbG9nIiwiYWxlcnQiLCJsYWJlbHMiLCJjb25maXJtIiwicmVzb2x2ZWQiLCJwcm9tcHQiLCJvayIsIk5hdiIsIk5hdmJhciIsImRyb3Bkb3duIiwiZHJvcGJhciIsImRyb3BiYXJNb2RlIiwiZHJvcGJhckFuY2hvciIsImRyb3Bkb3ducyIsImdldERyb3Bkb3duIiwidHJhbnNpdGlvblRvIiwibmV3SGVpZ2h0Iiwib2xkSGVpZ2h0IiwiY2xpcCIsIk9mZmNhbnZhcyIsImNsc0NvbnRhaW5lciIsImNsc0ZsaXAiLCJjbHNDb250ZW50IiwiY2xzQ29udGVudEFuaW1hdGlvbiIsImNsc1NpZGViYXJBbmltYXRpb24iLCJjbHNNb2RlIiwiY2xzT3ZlcmxheSIsIk92ZXJmbG93QXV0byIsIlJlc3BvbnNpdmUiLCJTY3JvbGwiLCJkb2NIZWlnaHQiLCJ3aW5IZWlnaHQiLCJzdGFydFkiLCJjdXJyZW50WSIsIlNjcm9sbHNweSIsInJlcGVhdCIsImluVmlld0NsYXNzIiwiZWxEYXRhIiwidG9nZ2xlcyIsIlNjcm9sbHNweU5hdiIsIlN0aWNreSIsImNsc0FjdGl2ZSIsImNsc0luYWN0aXZlIiwiY2xzRml4ZWQiLCJjbHNCZWxvdyIsInNlbFRhcmdldCIsIndpZHRoRWxlbWVudCIsInNob3dPblVwIiwicGxhY2Vob2xkZXIiLCJib3R0b21PZmZzZXQiLCJwYXJzZVByb3AiLCJpbmFjdGl2ZSIsInNjcm9sbFkiLCJwcm9wT2Zmc2V0IiwiU3dpdGNoZXIiLCJzd2lwaW5nIiwiYXR0ckl0ZW0iLCJjb25uZWN0cyIsImdldFNlbGVjdGlvbiIsImhhc1ByZXYiLCJUYWIiLCJUb2dnbGUiLCJjb3JlIiwiQ291bnRkb3duIiwidGltZXNwYW4iLCJkaWdpdHMiLCJkaWdpdCIsInN0eWxlJDEiLCJ0YXJnZXRDbGFzcyIsIkFuaW1hdGUiLCJzaGVldCIsImluc2VydFJ1bGUiLCJwcm9wc0Zyb20iLCJvbGRTY3JvbGxZIiwicHJvcHNUbyIsImdldFBvc2l0aW9uV2l0aE1hcmdpbiIsInBvaW50ZXJFdmVudHMiLCJGaWx0ZXIiLCJzZWxBY3RpdmUiLCJhY3RpdmVzIiwiaXNFcXVhbExpc3QiLCJzZXRTdGF0ZSIsImdldFN0YXRlIiwibWVyZ2VTdGF0ZSIsImF0dHIkJDEiLCJzdGF0ZUZpbHRlciIsInJlZl9zb3J0Iiwic3RhdGVTb3J0Iiwic3RhdGVPcmRlciIsImdldEZpbHRlciIsImdyb3VwIiwibWF0Y2hGaWx0ZXIiLCJhcHBseSQkMSIsImdldFNlbGVjdG9yIiwic29ydGVkIiwibG9jYWxlQ29tcGFyZSIsInNvcnRJdGVtcyIsImZpbHRlckJ5IiwibGlzdEEiLCJsaXN0QiIsIkFuaW1hdGlvbnMiLCJzbGlkZSIsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSIsInRyYW5zbGF0ZWQiLCJzY2FsZTNkIiwiQW5pbWF0aW9ucyQxIiwiZmFkZSIsInRyaWdnZXJVcGRhdGUiLCJTbGlkZXIiLCJhdXRvcGxheUludGVydmFsIiwicGF1c2VPbkhvdmVyIiwic3RhcnRBdXRvcGxheSIsInN0b3BBdXRvcGxheSIsImlzSG92ZXJpbmciLCJwcmV2ZW50Q2F0Y2giLCJzbGlkZXNTZWxlY3RvciIsImRyYWciLCJfdHJhbnNpdGlvbmVyIiwiZ2V0RGlzdGFuY2UiLCJkcmFnZ2luZyIsInByZXZJbmRleCIsInVuYmluZE1vdmUiLCJtb3ZlIiwiZGlzdGFuY2UiLCJzbGlkZXMiLCJkaXMiLCJuZXh0SW5kZXgiLCJfZ2V0RGlzdGFuY2UiLCJpdGVtU2hvd24iLCJlZGdlIiwiX3RyYW5zbGF0ZSIsIl9zaG93IiwiZGlyQ2hhbmdlIiwic2VsTmF2IiwibmF2IiwibmF2SXRlbVNlbGVjdG9yIiwibmF2SXRlbXMiLCJtYXhJbmRleCIsInVwZGF0ZU5hdiIsImdldFZhbGlkSW5kZXgiLCJjbHNBY3RpdmF0ZWQiLCJ2ZWxvY2l0eSIsIlRyYW5zaXRpb25lciIsInRyYW5zaXRpb25PcHRpb25zIiwic3BlZWRVcCIsInNlbExpc3QiLCJpdGVtc2hvd24iLCJxdWV1ZUluZGV4IiwiZ2V0RGlyZWN0aW9uIiwiX2dldFRyYW5zaXRpb25lciIsInRyYW5zaXRpb25lciIsIlNsaWRlc2hvdyIsIkFuaW1hdGlvbnMkJDEiLCJpdGVtc2hvdyBpdGVtaGlkZSBpdGVtc2hvd24gaXRlbWhpZGRlbiIsIml0ZW1zaG93IiwiYmVmb3JlaXRlbXNob3ciLCJpdGVtaGlkZGVuIiwiTGlnaHRib3hQYW5lbCIsImRlbGF5Q29udHJvbHMiLCJ2aWRlb0F1dG9wbGF5IiwidGVtcGxhdGUiLCJoaWRlQ29udHJvbHMiLCJnZXRJdGVtIiwibG9hZEl0ZW0iLCJhbHQiLCJzZXRJdGVtIiwic2V0RXJyb3IiLCJ2aWRlbyIsInBvc3RlciIsInZpZGVvV2lkdGgiLCJ2aWRlb0hlaWdodCIsInNldElmcmFtZSIsImdldElmcmFtZSIsImVuY29kZVVSSSIsIndpdGhDcmVkZW50aWFscyIsInJlZl9yZXNwb25zZSIsInNob3dDb250cm9scyIsImNvbnRyb2xzVGltZXIiLCJMaWdodGJveCIsImxpZ2h0Ym94UGFuZWwiLCJfZGVzdHJveSIsImNvbnRhaW5lcnMiLCJOb3RpZmljYXRpb24iLCJjbHNDbG9zZSIsImNsc01zZyIsImNsb3NlQWxsIiwiaW1tZWRpYXRlIiwicmVtb3ZlRm4iLCJwcm9wcyQxIiwiUGFyYWxsYXgiLCJiZ1BvcyIsImlzQ29sb3IiLCJpc0Nzc1Byb3AiLCJzdGVwcyIsImNvdmVycyIsImRvd24iLCJiZ1Byb3BzIiwiYmciLCJiYWNrZ3JvdW5kU2l6ZSIsIl9pbWFnZSIsImRpbUVsIiwibmF0dXJhbFdpZHRoIiwibmF0dXJhbEhlaWdodCIsInNwYW4iLCJiZ1Bvc0Zsb2F0IiwiYmFja2dyb3VuZFJlcGVhdCIsImdldENzcyIsImNzcyQkMSIsImdldFZhbHVlIiwicmVmJDIiLCJnZXRTdGVwIiwiUGFyYWxsYXgkMSIsImVhc2UkMSIsIlNsaWRlclJlYWN0aXZlIiwiZ2V0TGVmdCIsImNlbnRlciIsImdldEVsTGVmdCIsImNlbnRlckVsIiwiZ2V0TWF4IiwiZ2V0V2lkdGgiLCJ0cmlnZ2VyVXBkYXRlJDEiLCJTbGlkZXIkMSIsInNldHMiLCJ1cGRhdGVUcmFuc2xhdGVzIiwiZ2V0SXRlbUluIiwiZ2V0QWN0aXZlcyIsInNsaWRlTGVmdCIsImF2Z1dpZHRoIiwibGVmdENlbnRlciIsInNsaWRlV2lkdGgiLCJyZW9yZGVyIiwic2xpZGVJbmRleCIsIlNsaWRlclBhcmFsbGF4Iiwic2VsSXRlbSIsInJlZl9kZXRhaWwiLCJnZXRDdXJyZW50IiwiaXNJbiIsIm9iaiQxIiwib2JqJDIiLCJBbmltYXRpb25zJDIiLCJwdWxsIiwiU2xpZGVzaG93JDEiLCJtYXhIZWlnaHQiLCJoZ3QiLCJTb3J0YWJsZSIsImNsc0l0ZW0iLCJjbHNQbGFjZWhvbGRlciIsImNsc0RyYWciLCJjbHNEcmFnU3RhdGUiLCJjbHNCYXNlIiwiY2xzTm9EcmFnIiwiY2xzRW1wdHkiLCJjbHNDdXN0b20iLCJ0b3VjaGVkIiwib3V0ZXJIVE1MIiwiZWxlbWVudEZyb21Qb2ludCIsInNvcnRhYmxlIiwiZ2V0U29ydGFibGUiLCJwcmV2aW91cyIsImlzUHJlZGVjZXNzb3IiLCJUb29sdGlwIiwidGl0bGUiLCJfaGFzVGl0bGUiLCJhcmlhLWV4cGFuZGVkIiwiX3VuYmluZCIsInRvb2x0aXAiLCJVcGxvYWQiLCJhbGxvdyIsImNsc0RyYWdvdmVyIiwiY29uY3VycmVudCIsIm1heFNpemUiLCJtaW1lIiwibXNnSW52YWxpZE1pbWUiLCJtc2dJbnZhbGlkTmFtZSIsIm1zZ0ludmFsaWRTaXplIiwiYmVmb3JlQWxsIiwiY29tcGxldGVBbGwiLCJsb2FkRW5kIiwibG9hZFN0YXJ0IiwidXBsb2FkIiwidHJhbnNmZXIiLCJkYXRhVHJhbnNmZXIiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImNodW5rcyIsImNodW5rIiwiRm9ybURhdGEiLCJtdXRhdGlvbnMiLCJhcHBseU11dGF0aW9uIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsImNoYXJhY3RlckRhdGEiLCJtdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJyZW1vdmVkTm9kZXMiLCJpJDEiLCJhcHBseUNoaWxkTGlzdCIsImF0dHJpYnV0ZU5hbWUiLCJhcHBseUF0dHJpYnV0ZSIsImJvb3QiLCJsYXN0VGltZSIsInZlbmRvcnMiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImN1cnJUaW1lIiwidGltZVRvQ2FsbCIsIl9zZXR0aW5ncyIsImN1cnNvckFuaW1hdGlvblBhdXNlZCIsIm9wYWNpdHlJbmNyZWFzaW5nIiwiY3VycmVudE9wYWNpdHkiLCJkZWxheWVkUXVlIiwiZGVsYXlJdGVtc0NvdW50IiwiZXZlbnRRdWUiLCJjYWxsZWRFdmVudHMiLCJldmVudFJ1bm5pbmciLCJkZWxheUV4ZWN1dGlvbiIsImZwcyIsInR5cGluZ0ZyYW1lQ291bnQiLCJzdHJpbmdUb1R5cGVIVE1MQXJyYXkiLCJjdXJyZW50VHlwZWRDaGFyYWN0ZXJzIiwidHlwaW5nIiwidXNlZElEcyIsImNoYXJBbW91bnRUb0RlbGV0ZSIsInVzZXJPcHRpb25zIiwiZXZlbnRMb29wUmVydW4iLCJkZWZhdWx0X29wdGlvbnMiLCJzdHJpbmdzIiwiY3Vyc29yQ2xhc3NOYW1lIiwiY3Vyc29yIiwiYW5pbWF0ZUN1cnNvciIsImJsaW5rU3BlZWQiLCJjaGFyU3BhbkNsYXNzTmFtZSIsIndyYXBwZXJDbGFzc05hbWUiLCJhdXRvU3RhcnQiLCJfc2V0dXBPcHRpb25zIiwiX3NldHVwVHlwd3JpdGVyV3JhcHBlciIsIl9zdGFydEN1cnNvckFuaW1hdGlvbiIsInR5cGVPdXRBbGxTdHJpbmdzIiwiVHlwZXdyaXRlclByb3RvdHlwZSIsIl9hZGRUb0V2ZW50UXVlIiwiX3N0b3BFdmVudExvb3AiLCJfc3RhcnRFdmVudExvb3AiLCJyZXJ1biIsIl9yZXJ1bkNhbGxlZEV2ZW50cyIsInN0cmluZ19jaGFycyIsIl9nZXRDaGFyYWN0ZXJzIiwiX3R5cGVDaGFyYWN0ZXJzIiwiZGVsZXRlQWxsIiwiX2RlbGV0ZUNoYXJzIiwiYW1vdW50IiwiX3BhdXNlRm9yIiwiY2hhcmFjdGVyc19hcnJheSIsIl9nZXRTdHJpbmdzQXNDaGFyc0FycmF5IiwiX3JhbmRvbUludGVnZXIiLCJuZXdfc2V0dGluZ3MiLCJfY2hhbmdlU2V0dGluZ3MiLCJjaGFuZ2VCbGlua1NwZWVkIiwibmV3X3NwZWVkIiwiY2hhbmdlVHlwaW5nU3BlZWQiLCJjaGFuZ2VEZWxldGVTcGVlZCIsIl9yZXNldEV2ZW50TG9vcCIsIl9kZWxldGluZ0NoYXJJZHNBbmltYXRpb24iLCJfZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUiLCJsb2ciLCJkZWxldGVfc3BlZWQiLCJ0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSIsImN1cnJlbnRfdHlwZWRfY2hhcl9pZHMiLCJjaGFyX2Ftb3VudF90b19kZWxldGUiLCJsYXN0X3R5cGVkX2NoYXJfaW5kZXgiLCJnZXRfbGFzdF90eXBlZF9jaGFyIiwiY2hhcl90b19kZWxldGVfZWwiLCJuZXdfb3B0aW9ucyIsIm1lcmdlZF9vcHRpb25zIiwiYXR0cm5hbWUiLCJmaXJzdF9ldmVudCIsIl9ldmVudFF1ZUFuaW1hdGlvbiIsImV2ZW50X25hbWUiLCJ0eXBld3JpdGVyX3dyYXBwZXIiLCJfY29udmVydENoYXJzVG9IVE1MIiwiX3R5cGluZ0FuaW1hdGlvbiIsIl90eXBpbmdBbmltYXRpb25GcmFtZSIsInRvdGFsX2l0ZW1zIiwidHlwaW5nX3NwZWVkIiwiaXRlbV90b190eXBlIiwiY2hhcnMiLCJjaGFyc19odG1sX3dyYXBfYXJyYXkiLCJjaGFyX2NsYXNzX25hbWUiLCJjaGFyc19hcnJheSIsImNoYXJfZWxlbWVudCIsImNoYXJfaWQiLCJfZ2VuZXJhdGVVbmlxdWVJRCIsInN0cmluZ3NfYXJyYXlfY2hlY2siLCJzdHJpbmdzX3N0cmluZ19jaGVjayIsInN0cmluZ3NfY2hhcnNfYXJyYXkiLCJfY3Vyc29yQW5pbWF0aW9uRnJhbWUiLCJvcGFjaXR5X2Ftb3VudCIsImN1cnNvcl9lbCIsIl9jdXJzb3JBbmltYXRpb24iLCJfYXBwZW5kVGV4dCIsImN1cnNvcl9jbGFzc19uYW1lIiwiY3Vyc29yX2VsZW1lbnQiLCJfcGF1c2VDdXJzb3JBbmltYXRpb24iLCJfcmVzdGFydEN1cnNvckFuaW1hdGlvbiIsIl9yYW5kb21JRCIsInBvc3NpYmxlIiwidGVtcF9pZCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxTQUFBQSxVQUFBQyxJQUFBQyxVQUFBQyxjQUNBLE1BQUFDLE9BQUFDLFNBQUFDLGNBQUEsVUFDQUYsT0FBQUcsS0FBQSxrQkFDQUgsT0FBQUksSUFBQVAsSUFDQUcsT0FBQUssT0FBQSxPQUVBQyxJQUFBUixZQUNBRSxPQUFBRixVQUFBQSxnQkFHQVEsSUFBQVAsZUFDQUMsT0FBQU8sWUFBQVIsY0FHQUUsU0FBQU8scUJBQUEsUUFBQSxHQUFBQyxZQUFBVCxRQUdBLFNBQUFVLFNBQUFDLFNBQUFDLFVBQ0FYLFNBQUFZLGNBQUFGLFVBRUFHLFVBQUFGLFNBR0EsU0FBQUcsWUFBQUosU0FBQUMsVUFDQSxNQUFBSSxRQUFBZixTQUFBWSxjQUFBRixVQUNBTSxJQUFBLElBQUFDLGVBQUFOLGdCQUFBLEtBQ0FJLFFBQUFGLFVBQUFFLFFBQUFGLFVBQUFLLFFBQUFGLElBQUEsS0N4QkEsU0FBQUcsbUJBQ0EsTUFBQUMsSUFBQXBCLFNBQUFxQixlQUFBLFNBRUFDLFdBQUEsSUFBQUMsV0FBQUgsS0FDQUksTUFBQSxFQUNBQyxZQUFBLEdBQ0FDLFlBQUEsVUFDQUMsU0FBQSxJQVVBM0IsU0FBQXFCLGVBQUEsa0JBQUFPLFFBUEEsV0FDQSxN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LGVBQUEsRUFBQSxJQUFBL3NGLElBQ0Ftc0IsTUFBQStqRSxTQUFBcm9FLE9BQUF0dEIsS0FBQUMsTUFBQUQsS0FBQTJ6QixTQUFBZ2lFLFNBQUFod0YsU0FFQSxPQUFBaXNCLE1BR0E2L0Qsb0JBQUFvRCxrQkFBQSxXQUNBLElBQUFlLFFBQUFuMUYsS0FBQWkxRixZQUNBLE9BQUEsR0FBQWoxRixLQUFBZ3ZGLFVBQUFlLFFBQUFwK0UsUUFBQXdqRixVQUNBbjFGLEtBQUFndkYsVUFBQWUsUUFBQTVxRixLQUFBZ3dGLFNBQ0FBLFNBRUFuMUYsS0FBQW8wRixrQkFBQTV2RixLQUFBeEUsT0F2bEJBIiwiZmlsZSI6InNjcmlwdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBnZXRTY3JpcHQodXJsLCBpbnRlZ3JpdHksIGNyb3NzX29yaWdpbikge1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgc2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIHNjcmlwdC5zcmMgPSB1cmw7XG4gICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcblxuICAgIGlmIChpbnRlZ3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY3JpcHQuaW50ZWdyaXR5ID0gaW50ZWdyaXR5O1xuICAgIH1cblxuICAgIGlmIChjcm9zc19vcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY3JpcHQuY3Jvc3NPcmlnaW4gPSBjcm9zc19vcmlnaW47XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7XG59XG5cbmZ1bmN0aW9uIHNldENsYXNzKHNlbGVjdG9yLCBteV9jbGFzcykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAvLyBjb25zb2xlLmxvZyhlbGVtZW50KTtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IG15X2NsYXNzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDbGFzcyhzZWxlY3RvciwgbXlfY2xhc3MpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgKF58ICkke215X2NsYXNzfSgkfCApYCwgXCJnXCIpO1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShyZWcsIFwiIFwiKTtcbn1cblxuLy8gaGlkZSB0aGUgaHRtbCB3aGVuIHRoZSBwYWdlIGxvYWRzLCBidXQgb25seSBpZiBqcyBpcyB0dXJuZWQgb24uXG5zZXRDbGFzcyhcImh0bWxcIiwgXCJwcmV2ZW50LWZvdWNcIik7XG5cbi8vIHdoZW4gdGhlIERPTSBoYXMgZmluaXNoZWQgbG9hZGluZywgdW5oaWRlIHRoZSBodG1sXG5kb2N1bWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiaW50ZXJhY3RpdmVcIikge1xuICAgICAgICByZW1vdmVDbGFzcyhcImh0bWxcIiwgXCJwcmV2ZW50LWZvdWNcIik7XG4gICAgICAgIGdldFNjcmlwdChcbiAgICAgICAgICAgIFwiaHR0cHM6Ly9wcm8uZm9udGF3ZXNvbWUuY29tL3JlbGVhc2VzL3Y1LjEuMC9qcy9hbGwuanNcIiwgLy8gVVJMXG4gICAgICAgICAgICBcInNoYTM4NC1FNVNwZ2FaY2JTSngwSWFiYjNKcjJBZlRSaUZucmRPdzFtaE8xOUR6enJUOUwrd0NwRHlIVUcycTA3YVFkTzZFXCIsIC8vIEludGVncml0eVxuICAgICAgICAgICAgXCJhbm9ueW1vdXNcIiAvLyBDcm9zcy1vcmlnaW5cbiAgICAgICAgKTtcbiAgICAgICAgZ2V0U2NyaXB0KFxuICAgICAgICAgICAgXCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9hY2UvMS4zLjMvYWNlLmpzXCJcbiAgICAgICAgKTtcbiAgICAgICAgZ2V0U2NyaXB0KFxuICAgICAgICAgICAgXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2ZsYXRwaWNrclwiXG4gICAgICAgICk7XG4gICAgfVxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCBlcnJvcl90eXBld3JpdGVyICovXG5cbmZ1bmN0aW9uIGVycm9yX3R5cGV3cml0ZXIoKSB7XG4gICAgY29uc3QgYXBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlcnJvclwiKTtcblxuICAgIGNvbnN0IHR5cGV3cml0ZXIgPSBuZXcgVHlwZXdyaXRlcihhcHAsIHtcbiAgICAgICAgXCJsb29wXCI6IGZhbHNlLFxuICAgICAgICBcImRlbGV0ZVNwZWVkXCI6IDQwLFxuICAgICAgICBcInR5cGluZ1NwZWVkXCI6IFwibmF0dXJhbFwiLFxuICAgICAgICBcImRldk1vZGVcIjogZmFsc2VcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNsb3NlV2luZG93KCkge1xuICAgICAgICBjb25zdCBhcHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIndpblwiKTtcbiAgICAgICAgY29uc3QgY3VycmVudF9jbGFzcyA9IGFwcC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKTtcbiAgICAgICAgYXBwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIGAke2N1cnJlbnRfY2xhc3MgfSB1ay1hbmltYXRpb24tc2NhbGUtdXAgdWstYW5pbWF0aW9uLXJldmVyc2VgKTtcbiAgICAgICAgdHlwZXdyaXRlci5zdG9wKCk7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0ZXJtaW5hbC1jbG9zZVwiKS5vbmNsaWNrID0gY2xvc2VXaW5kb3c7XG5cbiAgICB0eXBld3JpdGVyLmFwcGVuZFRleHQoXCJQeXRob24gMy42LjQgKGRlZmF1bHQsIEphbiAgNSAyMDE4LCAwMjozNTo0MClcXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCJbR0NDIDcuMi4xIDIwMTcxMjI0XSBvbiBkYXJ3aW5cXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCJUeXBlIFxcXCJoZWxwXFxcIiwgXFxcImNvcHlyaWdodFxcXCIsIFxcXCJjcmVkaXRzXFxcIiBvciBcXFwibGljZW5zZVxcXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KFwiPj4+IFwiKVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLnR5cGVTdHJpbmcoXCJpbXBvciByZXF1ZXN0c1wiKVxuICAgICAgICAuZGVsZXRlQ2hhcnMoOSlcbiAgICAgICAgLnR5cGVTdHJpbmcoXCJ0IHJlcXVlc3RzXFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KFwiPj4+IFwiKVxuICAgICAgICAucGF1c2VGb3IoNzUwKVxuICAgICAgICAuY2hhbmdlU2V0dGluZ3Moe1widHlwaW5nU3BlZWRcIjogXCJuYXR1cmFsXCJ9KVxuICAgICAgICAudHlwZVN0cmluZyhgcmVzcG9uc2UgPSByZXF1ZXN0cy4keyB3aW5kb3cuX1JlcXVlc3RNZXRob2QgfSgnaHR0cHM6Ly9weXRoaW1gKVxuICAgICAgICAuZGVsZXRlQ2hhcnMoMilcbiAgICAgICAgLnR5cGVTdHJpbmcoXCJvbmRpc2NvcmQuY29uL1wiKVxuICAgICAgICAuZGVsZXRlQ2hhcnMoMilcbiAgICAgICAgLnR5cGVTdHJpbmcoYG0keyB3aW5kb3cuX1BhdGggfScpXFxuYClcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC5hcHBlbmRUZXh0KGAmbHQ7UmVzcG9uc2UgWyR7IHdpbmRvdy5fQ29kZSB9XSZndDtcXG4+Pj4gYClcbiAgICAgICAgLnR5cGVTdHJpbmcoXCIjIGhtbW1tXCIpXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAuZGVsZXRlQ2hhcnMoNylcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC50eXBlU3RyaW5nKFwicmVzcG9uc2UudGV4dFxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChgJHsgd2luZG93Ll9FcnJvck1zZyB9XFxuPj4+IGApXG4gICAgICAgIC5zdGFydCgpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbihmdW5jdGlvbigpeyAvLyBVc2UgYSBjbG9zdXJlIHRvIGF2b2lkIHBvbGx1dGluZyBnbG9iYWwgc2NvcGVcbiAgICAvLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGJ1aWx0IGludG8gdGhlIGphbXMgc3lzdGVtXG4gICAgY29uc3Qgc3RhcnRqYW0gPSBuZXcgRGF0ZShEYXRlLlVUQygyMDE4LCAyLCAyMykpO1xuICAgIGNvbnN0IGVuZGphbSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMTgsIDIsIDI2KSk7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBnb2FsO1xuXG4gICAgaWYgKG5vdyArIDEwMDAgPCBlbmRqYW0uZ2V0VGltZSgpKSB7IC8vIE9ubHkgZG8gYW55dGhpbmcgaWYgdGhlIGphbSBoYXNuJ3QgZW5kZWRcbiAgICAgICAgVUlraXQubm90aWZpY2F0aW9uKCAvLyBTcGF3biB0aGUgbm90aWZpY2F0aW9uXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJtZXNzYWdlXCI6IFwiXCJcbiAgICAgICAgICAgICAgICAgICsgXCI8ZGl2IGNsYXNzPSd1ay10ZXh0LWNlbnRlcic+XCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgPHNwYW4gaWQ9XFxcImNvdW50ZG93bi10aXRsZVxcXCIgY2xhc3M9XFxcInVrLXRleHQtY2VudGVyXFxcIj5cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICAgICAgPGEgaHJlZj1cXFwiL2luZm8vamFtc1xcXCI+Q29kZSBKYW08L2E+IENvdW50ZG93blwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgIDwvc3Bhbj5cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICA8cCBjbGFzcz0ndWstdGV4dC1sYXJnZScgaWQ9XFxcImNvdW50ZG93bi1yZW1haW5pbmdcXFwiPi4uLjwvcD5cIlxuICAgICAgICAgICAgICAgICAgKyBcIjxzbWFsbCBzdHlsZT0nZm9udC1zaXplOiAwLjZlbTsnPihUYXAvY2xpY2sgdG8gZGlzbWlzcyk8L3NtYWxsPlwiXG4gICAgICAgICAgICAgICAgICArIFwiPC9kaXY+XCIsXG4gICAgICAgICAgICAgICAgXCJwb3NcIjogXCJib3R0b20tcmlnaHRcIixcbiAgICAgICAgICAgICAgICBcInRpbWVvdXRcIjogZW5kamFtIC0gbm93XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaGVhZGluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY291bnRkb3duLXRpdGxlXCIpO1xuXG4gICAgICAgIGlmIChub3cgPiBzdGFydGphbS5nZXRUaW1lKCkpIHsgLy8gSmFtJ3MgYWxyZWFkeSBzdGFydGVkXG4gICAgICAgICAgICBoZWFkaW5nLmlubmVySFRNTCA9IFwiQ3VycmVudCA8YSBocmVmPVxcXCIvaW5mby9qYW1zXFxcIj5jb2RlIGphbTwvYT4gZW5kcyBpbi4uLlwiO1xuICAgICAgICAgICAgZ29hbCA9IGVuZGphbS5nZXRUaW1lKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoZWFkaW5nLmlubmVySFRNTCA9IFwiTmV4dCA8YSBocmVmPVxcXCIvaW5mby9qYW1zXFxcIj5jb2RlIGphbTwvYT4gc3RhcnRzIGluLi4uXCI7XG4gICAgICAgICAgICBnb2FsID0gc3RhcnRqYW0uZ2V0VGltZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVmcmVzaENvdW50ZG93biA9IHNldEludGVydmFsKCgpID0+IHsgLy8gQ3JlYXRlIGEgcmVwZWF0aW5nIHRhc2tcbiAgICAgICAgICAgIGxldCBkZWx0YSA9IGdvYWwgLSBEYXRlLm5vdygpOyAvLyBUaW1lIHVudGlsIHRoZSBnb2FsIGlzIG1ldFxuXG4gICAgICAgICAgICBpZiAoZGVsdGEgPD0gMTAwMCkgeyAvLyBHb2FsIGhhcyBiZWVuIG1ldCwgYmVzdCByZWxvYWRcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHJlZnJlc2hDb3VudGRvd24pO1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGRheXMgPSBNYXRoLmZsb29yKGRlbHRhIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgICAgICAgIGRlbHRhIC09IGRheXMgKiAoMjQgKiA2MCAqIDYwICogMTAwMCk7XG5cbiAgICAgICAgICAgIGxldCBob3VycyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgICAgICAgIGRlbHRhIC09IGhvdXJzICogKDYwICogNjAgKiAxMDAwKTtcblxuICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKGRlbHRhIC8gKDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gbWludXRlcyAqICg2MCAqIDEwMDApO1xuXG4gICAgICAgICAgICBsZXQgc2Vjb25kcyA9IE1hdGguZmxvb3IoZGVsdGEgLyAxMDAwKTtcblxuICAgICAgICAgICAgaWYgKGRheXMgPCAxMCkge1xuICAgICAgICAgICAgICAgIGRheXMgPSBgMCR7ZGF5c31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMCkge1xuICAgICAgICAgICAgICAgIGhvdXJzID0gYDAke2hvdXJzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtaW51dGVzIDwgMTApIHtcbiAgICAgICAgICAgICAgICBtaW51dGVzID0gYDAke21pbnV0ZXN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlY29uZHMgPCAxMCkge1xuICAgICAgICAgICAgICAgIHNlY29uZHMgPSBgMCR7c2Vjb25kc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY291bnRkb3duLXJlbWFpbmluZ1wiKS5pbm5lckhUTUwgPSBgJHtkYXlzfToke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc31gO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAvLyBOb3RpZmljYXRpb24gd2FzIHByb2JhYmx5IGNsb3NlZCwgc28gd2UgY2FuIHN0b3AgY291bnRpbmdcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xlYXJJbnRlcnZhbChyZWZyZXNoQ291bnRkb3duKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcbiAgICB9XG59KSgpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIEphbUFjdGlvbnMgKi9cblxuY2xhc3MgSmFtQWN0aW9ucyB7XG4gICAgY29uc3RydWN0b3IodXJsLCBjc3JmX3Rva2VuKSB7XG4gICAgICAgIHRoaXMudXJsID0gdXJsO1xuICAgICAgICB0aGlzLmNzcmZfdG9rZW4gPSBjc3JmX3Rva2VuO1xuICAgIH1cblxuICAgIHNlbmQoYWN0aW9uLCBtZXRob2QsIGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIGRhdGFbXCJhY3Rpb25cIl0gPSBhY3Rpb247XG5cbiAgICAgICAgJC5hamF4KHRoaXMudXJsLCB7XG4gICAgICAgICAgICBcImRhdGFcIjogZGF0YSxcbiAgICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJqc29uXCIsXG4gICAgICAgICAgICBcImhlYWRlcnNcIjoge1wiWC1DU1JGVG9rZW5cIjogdGhpcy5jc3JmX3Rva2VufSxcbiAgICAgICAgICAgIFwibWV0aG9kXCI6IG1ldGhvZCxcbiAgICAgICAgfSkuZG9uZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChcImVycm9yX2NvZGVcIiBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZhbHNlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHRydWUsIGRhdGEpO1xuICAgICAgICB9KS5mYWlsKCgpID0+IGNhbGxiYWNrKGZhbHNlKSk7XG4gICAgfVxuXG4gICAgc2VuZF9qc29uKGFjdGlvbiwgbWV0aG9kLCBkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICBkYXRhW1wiYWN0aW9uXCJdID0gYWN0aW9uO1xuXG4gICAgICAgICQuYWpheCh0aGlzLnVybCwge1xuICAgICAgICAgICAgXCJkYXRhXCI6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICAgICAgXCJkYXRhVHlwZVwiOiBcImpzb25cIixcbiAgICAgICAgICAgIFwiaGVhZGVyc1wiOiB7XCJYLUNTUkZUb2tlblwiOiB0aGlzLmNzcmZfdG9rZW59LFxuICAgICAgICAgICAgXCJjb250ZW50VHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgIFwibWV0aG9kXCI6IG1ldGhvZFxuICAgICAgICB9KS5kb25lKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKFwiZXJyb3JfY29kZVwiIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZmFsc2UsIGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodHJ1ZSwgZGF0YSk7XG4gICAgICAgIH0pLmZhaWwoKCkgPT4gY2FsbGJhY2soZmFsc2UpKTtcbiAgICB9XG5cbiAgICBzZXRfc3RhdGUoamFtLCBzdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJzdGF0ZVwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJqYW1cIjogamFtLFxuICAgICAgICAgICAgICAgIFwic3RhdGVcIjogc3RhdGVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldF9xdWVzdGlvbnMoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJxdWVzdGlvbnNcIixcbiAgICAgICAgICAgIFwiR0VUXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlX3F1ZXN0aW9uKGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZF9qc29uKFxuICAgICAgICAgICAgXCJxdWVzdGlvbnNcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlX3F1ZXN0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInF1ZXN0aW9uXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3NvY2lhdGVfcXVlc3Rpb24oZm9ybSwgcXVlc3Rpb24sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiYXNzb2NpYXRlX3F1ZXN0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImZvcm1cIjogZm9ybSxcbiAgICAgICAgICAgICAgICBcInF1ZXN0aW9uXCI6IHF1ZXN0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGlzYXNzb2NpYXRlX3F1ZXN0aW9uKGZvcm0sIHF1ZXN0aW9uLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImRpc2Fzc29jaWF0ZV9xdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmb3JtXCI6IGZvcm0sXG4gICAgICAgICAgICAgICAgXCJxdWVzdGlvblwiOiBxdWVzdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZV9pbmZyYWN0aW9uKGlkLCByZWFzb24sIG51bWJlciwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJpbmZyYWN0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcInBhcnRpY2lwYW50XCI6IGlkLFxuICAgICAgICAgICAgICAgIFwicmVhc29uXCI6IHJlYXNvbixcbiAgICAgICAgICAgICAgICBcIm51bWJlclwiOiBudW1iZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZV9pbmZyYWN0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImluZnJhY3Rpb25cIixcbiAgICAgICAgICAgIFwiREVMRVRFXCIsXG4gICAgICAgICAgICB7XCJpZFwiOiBpZH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGFwcHJvdmVfYXBwbGljYXRpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiYXBwcm92ZV9hcHBsaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJpZFwiOiBpZH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHVuYXBwcm92ZV9hcHBsaWNhdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJ1bmFwcHJvdmVfYXBwbGljYXRpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZV90ZWFtcyhqYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiZ2VuZXJhdGVfdGVhbXNcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiamFtXCI6IGphbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZV90ZWFtKGphbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJjcmVhdGVfdGVhbVwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJqYW1cIjogamFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVyb2xsX3RlYW0odGVhbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJyZXJvbGxfdGVhbVwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJ0ZWFtXCI6IHRlYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVfdGVhbSh0ZWFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInRlYW1cIixcbiAgICAgICAgICAgIFwiREVMRVRFXCIsXG4gICAgICAgICAgICB7XCJ0ZWFtXCI6IHRlYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRfdGVhbV9tZW1iZXIoamFtLCBtZW1iZXIsIHRlYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwic2V0X3RlYW1fbWVtYmVyXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImphbVwiOiBqYW0sIFwibWVtYmVyXCI6IG1lbWJlciwgXCJ0ZWFtXCI6IHRlYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgcmV2aXNpb25fZGlmZiAqL1xuXG5mdW5jdGlvbiByZXZpc2lvbl9kaWZmKHJldmlzaW9ucykge1xuICAgIGNvbnN0IGJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwidGQgaW5wdXRcIik7IC8vIEZldGNoIGFsbCByYWRpbyBidXR0b25zXG4gICAgY29uc3QgaWRfcmVnID0gL2NvbXBhcmUtKGJlZm9yZXxhZnRlciktKFtcXHd8LV0rKS87IC8vIE1hdGNoZXMgY29tcGFyZS1hZnRlci9iZWZvcmUtSURcblxuXG4gICAgZnVuY3Rpb24gZ2V0UmV2aXNpb25JZChlbGVtZW50KXtcbiAgICAgICAgY29uc3QgZSA9IGVsZW1lbnQuaWQubWF0Y2goaWRfcmVnKTsgLy8gTWF0Y2ggSUQgd2l0aCBSZWdFeHBcbiAgICAgICAgcmV0dXJuIFtlWzFdLCBlWzJdXTsgLy8gZSBpcyBpbiBmb3JtYXQgb2YgW2Z1bGwgaWQsIGFmdGVyL2JlZm9yZSwgSURdIHdlIG9ubHkgd2FudCBJRCAmIG1vZGVcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRSZXZpc2lvbihpZCkge1xuICAgICAgICBjb25zdCBlID0gcmV2aXNpb25zLmZpbHRlcigoeCkgPT4ge1xuICAgICAgICAgICAgLy8gRmlsdGVyIHRocm91Z2ggYWxsIHJldmlzaW9ucyB0byBmaW5kIHRoZSBzZWxlY3RlZCBvbmUgKHJldmlzaW9ucyBpbiBkZWNsYXJlZCBpbiB0aGUgdGVtcGxhdGUpXG4gICAgICAgICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZVswXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByYWRpb0J1dHRvbkNoZWNrZWQoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZCA9IGdldFJldmlzaW9uSWQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHJldiA9IGdldFJldmlzaW9uKGlkWzFdKTtcbiAgICAgICAgaWYgKGlkWzBdID09PSBcImFmdGVyXCIpe1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIERlc2VsZWN0IHRoZSBvcHBvc2l0ZSBjaGVja2JveCB0byB0aGUgb25lIHdoaWNoIGhhcyBiZWVuIGNoZWNrZWRcbiAgICAgICAgICAgICAqIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBjaGVja2luZyBvZiB0aGUgc2FtZSByZXZpc2lvblxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb21wYXJlLWJlZm9yZS0ke2lkWzFdfWApLmNoZWNrZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYWZ0ZXJcIiAmJiBlLmlkICE9PSBlbGVtZW50LmlkKSB7IC8vIERlc2VsZWN0IGFsbCBjaGVja2JveGVzIGluIHRoZSBzYW1lIHJvd1xuICAgICAgICAgICAgICAgICAgICBlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHsgLy8gVGhpcyBlbHNlIGRvZXMgdGhlIHNhbWUgYXMgYWJvdmUgYnV0IGZvciB0aGUgYmVmb3JlIGNvbHVtblxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI2NvbXBhcmUtYWZ0ZXItJHtpZFsxXX1gKS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICBidXR0b25zLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmV2aXNpb25JZChlKVswXSA9PT0gXCJiZWZvcmVcIiAmJiBlLmlkICE9PSBlbGVtZW50LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHlvdSBkbyBub3QgY29tcGFyZSBhIG5ldyByZXZpc2lvbiB3aXRoIGFuIG9sZCBvbmVcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmV2aXNpb25JZChlKVswXSA9PT0gXCJhZnRlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcHJldiA9IGdldFJldmlzaW9uKGdldFJldmlzaW9uSWQoZSlbMV0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0bXByZXYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG1wcmV2LmRhdGUgPD0gcmV2LmRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2UuaWR9YCkuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtlLmlkfWApLnJlbW92ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWZ0LCBiZWY7XG5cbiAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHsgLy8gRmluZCB0aGUgc2VsZWN0ZWQgcG9zdHNcbiAgICAgICAgICAgIGNvbnN0IGlkID0gZ2V0UmV2aXNpb25JZChidXR0b24pO1xuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jaGVja2VkICYmIGlkWzBdID09PSBcImJlZm9yZVwiKSB7XG4gICAgICAgICAgICAgICAgYmVmID0gaWRbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChidXR0b24uY2hlY2tlZCAmJiBpZFswXSA9PT0gXCJhZnRlclwiKSB7XG4gICAgICAgICAgICAgICAgYWZ0ID0gaWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN3aXRjaCB0aGUgYnV0dG9ucyBIUkVGIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGNvbXBhcmUgVVJMXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29tcGFyZS1zdWJtaXRcIikuaHJlZiA9IGAvaGlzdG9yeS9jb21wYXJlLyR7YmVmfS8ke2FmdH1gO1xuXG4gICAgfVxuXG4gICAgYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgYnV0dG9uLmNoZWNrZWQgPSBmYWxzZTsgLy8gU29tZSBicm93c2VycyByZW1lbWJlciBpZiBhIGJ1dHRvbiBpcyBjaGVja2VkLlxuICAgICAgICBidXR0b24ub25jaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJhZGlvQnV0dG9uQ2hlY2tlZChidXR0b24pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIHdpa2lfc2lkZWJhciAqL1xuXG5mdW5jdGlvbiB3aWtpX3NpZGViYXIoKXtcbiAgICBjb25zdCB2aXNpYmxlX2NsYXNzID0gXCJ1ay12aXNpYmxlQHNcIjtcbiAgICBjb25zdCBzaWRlYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aWtpLXNpZGViYXJcIik7XG4gICAgY29uc3QgZGlzcGxheV9idXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIndpa2ktc2lkZWJhci1idXR0b25cIik7XG5cbiAgICBkaXNwbGF5X2J1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucyh2aXNpYmxlX2NsYXNzKSkge1xuICAgICAgICAgICAgc2lkZWJhci5jbGFzc0xpc3QucmVtb3ZlKHZpc2libGVfY2xhc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2lkZWJhci5jbGFzc0xpc3QuYWRkKHZpc2libGVfY2xhc3MpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsIi8vISBtb21lbnQuanNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgZ2xvYmFsLm1vbWVudCA9IGZhY3RvcnkoKVxufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgaG9va0NhbGxiYWNrO1xuXG4gICAgZnVuY3Rpb24gaG9va3MgKCkge1xuICAgICAgICByZXR1cm4gaG9va0NhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBkb25lIHRvIHJlZ2lzdGVyIHRoZSBtZXRob2QgY2FsbGVkIHdpdGggbW9tZW50KClcbiAgICAvLyB3aXRob3V0IGNyZWF0aW5nIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAgICBmdW5jdGlvbiBzZXRIb29rQ2FsbGJhY2sgKGNhbGxiYWNrKSB7XG4gICAgICAgIGhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQXJyYXkoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgQXJyYXkgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdChpbnB1dCkge1xuICAgICAgICAvLyBJRTggd2lsbCB0cmVhdCB1bmRlZmluZWQgYW5kIG51bGwgYXMgb2JqZWN0IGlmIGl0IHdhc24ndCBmb3JcbiAgICAgICAgLy8gaW5wdXQgIT0gbnVsbFxuICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBPYmplY3RdJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdEVtcHR5KG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgICAgIHJldHVybiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggPT09IDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGs7XG4gICAgICAgICAgICBmb3IgKGsgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT09IHZvaWQgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBOdW1iZXJdJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RhdGUoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRGF0ZSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFwKGFyciwgZm4pIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdLCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICByZXMucHVzaChmbihhcnJbaV0sIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc093blByb3AoYSwgYikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVuZChhLCBiKSB7XG4gICAgICAgIGZvciAodmFyIGkgaW4gYikge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoYiwgaSkpIHtcbiAgICAgICAgICAgICAgICBhW2ldID0gYltpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd0b1N0cmluZycpKSB7XG4gICAgICAgICAgICBhLnRvU3RyaW5nID0gYi50b1N0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd2YWx1ZU9mJykpIHtcbiAgICAgICAgICAgIGEudmFsdWVPZiA9IGIudmFsdWVPZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQyAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIHRydWUpLnV0YygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmF1bHRQYXJzaW5nRmxhZ3MoKSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gZGVlcCBjbG9uZSB0aGlzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVtcHR5ICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgdW51c2VkVG9rZW5zICAgIDogW10sXG4gICAgICAgICAgICB1bnVzZWRJbnB1dCAgICAgOiBbXSxcbiAgICAgICAgICAgIG92ZXJmbG93ICAgICAgICA6IC0yLFxuICAgICAgICAgICAgY2hhcnNMZWZ0T3ZlciAgIDogMCxcbiAgICAgICAgICAgIG51bGxJbnB1dCAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgaW52YWxpZE1vbnRoICAgIDogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRGb3JtYXQgICA6IGZhbHNlLFxuICAgICAgICAgICAgdXNlckludmFsaWRhdGVkIDogZmFsc2UsXG4gICAgICAgICAgICBpc28gICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHBhcnNlZERhdGVQYXJ0cyA6IFtdLFxuICAgICAgICAgICAgbWVyaWRpZW0gICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIHJmYzI4MjIgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgd2Vla2RheU1pc21hdGNoIDogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXJzaW5nRmxhZ3MobSkge1xuICAgICAgICBpZiAobS5fcGYgPT0gbnVsbCkge1xuICAgICAgICAgICAgbS5fcGYgPSBkZWZhdWx0UGFyc2luZ0ZsYWdzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG0uX3BmO1xuICAgIH1cblxuICAgIHZhciBzb21lO1xuICAgIGlmIChBcnJheS5wcm90b3R5cGUuc29tZSkge1xuICAgICAgICBzb21lID0gQXJyYXkucHJvdG90eXBlLnNvbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc29tZSA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0KHRoaXMpO1xuICAgICAgICAgICAgdmFyIGxlbiA9IHQubGVuZ3RoID4+PiAwO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgaW4gdCAmJiBmdW4uY2FsbCh0aGlzLCB0W2ldLCBpLCB0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkKG0pIHtcbiAgICAgICAgaWYgKG0uX2lzVmFsaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGZsYWdzID0gZ2V0UGFyc2luZ0ZsYWdzKG0pO1xuICAgICAgICAgICAgdmFyIHBhcnNlZFBhcnRzID0gc29tZS5jYWxsKGZsYWdzLnBhcnNlZERhdGVQYXJ0cywgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgaXNOb3dWYWxpZCA9ICFpc05hTihtLl9kLmdldFRpbWUoKSkgJiZcbiAgICAgICAgICAgICAgICBmbGFncy5vdmVyZmxvdyA8IDAgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuZW1wdHkgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZE1vbnRoICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRXZWVrZGF5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLndlZWtkYXlNaXNtYXRjaCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5udWxsSW5wdXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZEZvcm1hdCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy51c2VySW52YWxpZGF0ZWQgJiZcbiAgICAgICAgICAgICAgICAoIWZsYWdzLm1lcmlkaWVtIHx8IChmbGFncy5tZXJpZGllbSAmJiBwYXJzZWRQYXJ0cykpO1xuXG4gICAgICAgICAgICBpZiAobS5fc3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgaXNOb3dWYWxpZCA9IGlzTm93VmFsaWQgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuY2hhcnNMZWZ0T3ZlciA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy51bnVzZWRUb2tlbnMubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmJpZ0hvdXIgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbiA9PSBudWxsIHx8ICFPYmplY3QuaXNGcm96ZW4obSkpIHtcbiAgICAgICAgICAgICAgICBtLl9pc1ZhbGlkID0gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQgKGZsYWdzKSB7XG4gICAgICAgIHZhciBtID0gY3JlYXRlVVRDKE5hTik7XG4gICAgICAgIGlmIChmbGFncyAhPSBudWxsKSB7XG4gICAgICAgICAgICBleHRlbmQoZ2V0UGFyc2luZ0ZsYWdzKG0pLCBmbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkudXNlckludmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIFBsdWdpbnMgdGhhdCBhZGQgcHJvcGVydGllcyBzaG91bGQgYWxzbyBhZGQgdGhlIGtleSBoZXJlIChudWxsIHZhbHVlKSxcbiAgICAvLyBzbyB3ZSBjYW4gcHJvcGVybHkgY2xvbmUgb3Vyc2VsdmVzLlxuICAgIHZhciBtb21lbnRQcm9wZXJ0aWVzID0gaG9va3MubW9tZW50UHJvcGVydGllcyA9IFtdO1xuXG4gICAgZnVuY3Rpb24gY29weUNvbmZpZyh0bywgZnJvbSkge1xuICAgICAgICB2YXIgaSwgcHJvcCwgdmFsO1xuXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNBTW9tZW50T2JqZWN0KSkge1xuICAgICAgICAgICAgdG8uX2lzQU1vbWVudE9iamVjdCA9IGZyb20uX2lzQU1vbWVudE9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2kpKSB7XG4gICAgICAgICAgICB0by5faSA9IGZyb20uX2k7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9mKSkge1xuICAgICAgICAgICAgdG8uX2YgPSBmcm9tLl9mO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbCkpIHtcbiAgICAgICAgICAgIHRvLl9sID0gZnJvbS5fbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3N0cmljdCkpIHtcbiAgICAgICAgICAgIHRvLl9zdHJpY3QgPSBmcm9tLl9zdHJpY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl90em0pKSB7XG4gICAgICAgICAgICB0by5fdHptID0gZnJvbS5fdHptO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNVVEMpKSB7XG4gICAgICAgICAgICB0by5faXNVVEMgPSBmcm9tLl9pc1VUQztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX29mZnNldCkpIHtcbiAgICAgICAgICAgIHRvLl9vZmZzZXQgPSBmcm9tLl9vZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9wZikpIHtcbiAgICAgICAgICAgIHRvLl9wZiA9IGdldFBhcnNpbmdGbGFncyhmcm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2xvY2FsZSkpIHtcbiAgICAgICAgICAgIHRvLl9sb2NhbGUgPSBmcm9tLl9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9tZW50UHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbW9tZW50UHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHByb3AgPSBtb21lbnRQcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhbCA9IGZyb21bcHJvcF07XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICB2YXIgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLy8gTW9tZW50IHByb3RvdHlwZSBvYmplY3RcbiAgICBmdW5jdGlvbiBNb21lbnQoY29uZmlnKSB7XG4gICAgICAgIGNvcHlDb25maWcodGhpcywgY29uZmlnKTtcbiAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKGNvbmZpZy5fZCAhPSBudWxsID8gY29uZmlnLl9kLmdldFRpbWUoKSA6IE5hTik7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcCBpbiBjYXNlIHVwZGF0ZU9mZnNldCBjcmVhdGVzIG5ldyBtb21lbnRcbiAgICAgICAgLy8gb2JqZWN0cy5cbiAgICAgICAgaWYgKHVwZGF0ZUluUHJvZ3Jlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTW9tZW50IChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIE1vbWVudCB8fCAob2JqICE9IG51bGwgJiYgb2JqLl9pc0FNb21lbnRPYmplY3QgIT0gbnVsbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzRmxvb3IgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgLy8gLTAgLT4gMFxuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpIHx8IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JbnQoYXJndW1lbnRGb3JDb2VyY2lvbikge1xuICAgICAgICB2YXIgY29lcmNlZE51bWJlciA9ICthcmd1bWVudEZvckNvZXJjaW9uLFxuICAgICAgICAgICAgdmFsdWUgPSAwO1xuXG4gICAgICAgIGlmIChjb2VyY2VkTnVtYmVyICE9PSAwICYmIGlzRmluaXRlKGNvZXJjZWROdW1iZXIpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGFic0Zsb29yKGNvZXJjZWROdW1iZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vIGNvbXBhcmUgdHdvIGFycmF5cywgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGlmZmVyZW5jZXNcbiAgICBmdW5jdGlvbiBjb21wYXJlQXJyYXlzKGFycmF5MSwgYXJyYXkyLCBkb250Q29udmVydCkge1xuICAgICAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJyYXkxLmxlbmd0aCwgYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBsZW5ndGhEaWZmID0gTWF0aC5hYnMoYXJyYXkxLmxlbmd0aCAtIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgZGlmZnMgPSAwLFxuICAgICAgICAgICAgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGRvbnRDb252ZXJ0ICYmIGFycmF5MVtpXSAhPT0gYXJyYXkyW2ldKSB8fFxuICAgICAgICAgICAgICAgICghZG9udENvbnZlcnQgJiYgdG9JbnQoYXJyYXkxW2ldKSAhPT0gdG9JbnQoYXJyYXkyW2ldKSkpIHtcbiAgICAgICAgICAgICAgICBkaWZmcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaWZmcyArIGxlbmd0aERpZmY7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Fybihtc2cpIHtcbiAgICAgICAgaWYgKGhvb2tzLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgICAodHlwZW9mIGNvbnNvbGUgIT09ICAndW5kZWZpbmVkJykgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RlcHJlY2F0aW9uIHdhcm5pbmc6ICcgKyBtc2cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlKG1zZywgZm4pIHtcbiAgICAgICAgdmFyIGZpcnN0VGltZSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGV4dGVuZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCwgbXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBhcmc7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9ICdcXG5bJyArIGkgKyAnXSAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGFyZ3VtZW50c1swXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSBrZXkgKyAnOiAnICsgYXJndW1lbnRzWzBdW2tleV0gKyAnLCAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnLnNsaWNlKDAsIC0yKTsgLy8gUmVtb3ZlIHRyYWlsaW5nIGNvbW1hIGFuZCBzcGFjZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaChhcmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3YXJuKG1zZyArICdcXG5Bcmd1bWVudHM6ICcgKyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKS5qb2luKCcnKSArICdcXG4nICsgKG5ldyBFcnJvcigpKS5zdGFjayk7XG4gICAgICAgICAgICAgICAgZmlyc3RUaW1lID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfSwgZm4pO1xuICAgIH1cblxuICAgIHZhciBkZXByZWNhdGlvbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZVNpbXBsZShuYW1lLCBtc2cpIHtcbiAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIobmFtZSwgbXNnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlcHJlY2F0aW9uc1tuYW1lXSkge1xuICAgICAgICAgICAgd2Fybihtc2cpO1xuICAgICAgICAgICAgZGVwcmVjYXRpb25zW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhvb2tzLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9IGZhbHNlO1xuICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciA9IG51bGw7XG5cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0IChjb25maWcpIHtcbiAgICAgICAgdmFyIHByb3AsIGk7XG4gICAgICAgIGZvciAoaSBpbiBjb25maWcpIHtcbiAgICAgICAgICAgIHByb3AgPSBjb25maWdbaV07XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihwcm9wKSkge1xuICAgICAgICAgICAgICAgIHRoaXNbaV0gPSBwcm9wO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzWydfJyArIGldID0gcHJvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICAgIC8vIExlbmllbnQgb3JkaW5hbCBwYXJzaW5nIGFjY2VwdHMganVzdCBhIG51bWJlciBpbiBhZGRpdGlvbiB0b1xuICAgICAgICAvLyBudW1iZXIgKyAocG9zc2libHkpIHN0dWZmIGNvbWluZyBmcm9tIF9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLlxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZSB8fCB0aGlzLl9vcmRpbmFsUGFyc2Uuc291cmNlKSArXG4gICAgICAgICAgICAgICAgJ3wnICsgKC9cXGR7MSwyfS8pLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY2hpbGRDb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IGV4dGVuZCh7fSwgcGFyZW50Q29uZmlnKSwgcHJvcDtcbiAgICAgICAgZm9yIChwcm9wIGluIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QocGFyZW50Q29uZmlnW3Byb3BdKSAmJiBpc09iamVjdChjaGlsZENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0ge307XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZChyZXNbcHJvcF0sIHBhcmVudENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZChyZXNbcHJvcF0sIGNoaWxkQ29uZmlnW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkQ29uZmlnW3Byb3BdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gY2hpbGRDb25maWdbcHJvcF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChwcm9wIGluIHBhcmVudENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AocGFyZW50Q29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNPYmplY3QocGFyZW50Q29uZmlnW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBjaGFuZ2VzIHRvIHByb3BlcnRpZXMgZG9uJ3QgbW9kaWZ5IHBhcmVudCBjb25maWdcbiAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBleHRlbmQoe30sIHJlc1twcm9wXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2NhbGUoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKSB7XG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cztcbiAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgdmFyIGksIHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChpIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKG9iaiwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdENhbGVuZGFyID0ge1xuICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGVuZGFyIChrZXksIG1vbSwgbm93KSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhcltrZXldIHx8IHRoaXMuX2NhbGVuZGFyWydzYW1lRWxzZSddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvdXRwdXQpID8gb3V0cHV0LmNhbGwobW9tLCBub3cpIDogb3V0cHV0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQgPSB7XG4gICAgICAgIExUUyAgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgTFQgICA6ICdoOm1tIEEnLFxuICAgICAgICBMICAgIDogJ01NL0REL1lZWVknLFxuICAgICAgICBMTCAgIDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgIExMTCAgOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSdcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbG9uZ0RhdGVGb3JtYXQgKGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5XSxcbiAgICAgICAgICAgIGZvcm1hdFVwcGVyID0gdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5LnRvVXBwZXJDYXNlKCldO1xuXG4gICAgICAgIGlmIChmb3JtYXQgfHwgIWZvcm1hdFVwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5XSA9IGZvcm1hdFVwcGVyLnJlcGxhY2UoL01NTU18TU18RER8ZGRkZC9nLCBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsLnNsaWNlKDEpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5XTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdEludmFsaWREYXRlID0gJ0ludmFsaWQgZGF0ZSc7XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkRGF0ZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZhbGlkRGF0ZTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE9yZGluYWwgPSAnJWQnO1xuICAgIHZhciBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSA9IC9cXGR7MSwyfS87XG5cbiAgICBmdW5jdGlvbiBvcmRpbmFsIChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgnJWQnLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0UmVsYXRpdmVUaW1lID0ge1xuICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICBwYXN0ICAgOiAnJXMgYWdvJyxcbiAgICAgICAgcyAgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICBtICA6ICdhIG1pbnV0ZScsXG4gICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICBoICA6ICdhbiBob3VyJyxcbiAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICBkICA6ICdhIGRheScsXG4gICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICBNICA6ICdhIG1vbnRoJyxcbiAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgeSAgOiAnYSB5ZWFyJyxcbiAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbc3RyaW5nXTtcbiAgICAgICAgcmV0dXJuIChpc0Z1bmN0aW9uKG91dHB1dCkpID9cbiAgICAgICAgICAgIG91dHB1dChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIDpcbiAgICAgICAgICAgIG91dHB1dC5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhc3RGdXR1cmUgKGRpZmYsIG91dHB1dCkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW2RpZmYgPiAwID8gJ2Z1dHVyZScgOiAncGFzdCddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihmb3JtYXQpID8gZm9ybWF0KG91dHB1dCkgOiBmb3JtYXQucmVwbGFjZSgvJXMvaSwgb3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWxpYXNlcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdEFsaWFzICh1bml0LCBzaG9ydGhhbmQpIHtcbiAgICAgICAgdmFyIGxvd2VyQ2FzZSA9IHVuaXQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYWxpYXNlc1tsb3dlckNhc2VdID0gYWxpYXNlc1tsb3dlckNhc2UgKyAncyddID0gYWxpYXNlc1tzaG9ydGhhbmRdID0gdW5pdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVVbml0cyh1bml0cykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHVuaXRzID09PSAnc3RyaW5nJyA/IGFsaWFzZXNbdW5pdHNdIHx8IGFsaWFzZXNbdW5pdHMudG9Mb3dlckNhc2UoKV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplT2JqZWN0VW5pdHMoaW5wdXRPYmplY3QpIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IHt9LFxuICAgICAgICAgICAgbm9ybWFsaXplZFByb3AsXG4gICAgICAgICAgICBwcm9wO1xuXG4gICAgICAgIGZvciAocHJvcCBpbiBpbnB1dE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoaW5wdXRPYmplY3QsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFByb3AgPSBub3JtYWxpemVVbml0cyhwcm9wKTtcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZElucHV0W25vcm1hbGl6ZWRQcm9wXSA9IGlucHV0T2JqZWN0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVkSW5wdXQ7XG4gICAgfVxuXG4gICAgdmFyIHByaW9yaXRpZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRQcmlvcml0eSh1bml0LCBwcmlvcml0eSkge1xuICAgICAgICBwcmlvcml0aWVzW3VuaXRdID0gcHJpb3JpdHk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0c09iaikge1xuICAgICAgICB2YXIgdW5pdHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgdSBpbiB1bml0c09iaikge1xuICAgICAgICAgICAgdW5pdHMucHVzaCh7dW5pdDogdSwgcHJpb3JpdHk6IHByaW9yaXRpZXNbdV19KTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdW5pdHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gemVyb0ZpbGwobnVtYmVyLCB0YXJnZXRMZW5ndGgsIGZvcmNlU2lnbikge1xuICAgICAgICB2YXIgYWJzTnVtYmVyID0gJycgKyBNYXRoLmFicyhudW1iZXIpLFxuICAgICAgICAgICAgemVyb3NUb0ZpbGwgPSB0YXJnZXRMZW5ndGggLSBhYnNOdW1iZXIubGVuZ3RoLFxuICAgICAgICAgICAgc2lnbiA9IG51bWJlciA+PSAwO1xuICAgICAgICByZXR1cm4gKHNpZ24gPyAoZm9yY2VTaWduID8gJysnIDogJycpIDogJy0nKSArXG4gICAgICAgICAgICBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgemVyb3NUb0ZpbGwpKS50b1N0cmluZygpLnN1YnN0cigxKSArIGFic051bWJlcjtcbiAgICB9XG5cbiAgICB2YXIgZm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhbSGhdbW0oc3MpP3xNb3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3XT98V1tvfFddP3xRbz98WVlZWVlZfFlZWVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98a2s/fG1tP3xzcz98U3sxLDl9fHh8WHx6ej98Wlo/fC4pL2c7XG5cbiAgICB2YXIgbG9jYWxGb3JtYXR0aW5nVG9rZW5zID0gLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZztcblxuICAgIHZhciBmb3JtYXRGdW5jdGlvbnMgPSB7fTtcblxuICAgIHZhciBmb3JtYXRUb2tlbkZ1bmN0aW9ucyA9IHt9O1xuXG4gICAgLy8gdG9rZW46ICAgICdNJ1xuICAgIC8vIHBhZGRlZDogICBbJ01NJywgMl1cbiAgICAvLyBvcmRpbmFsOiAgJ01vJ1xuICAgIC8vIGNhbGxiYWNrOiBmdW5jdGlvbiAoKSB7IHRoaXMubW9udGgoKSArIDEgfVxuICAgIGZ1bmN0aW9uIGFkZEZvcm1hdFRva2VuICh0b2tlbiwgcGFkZGVkLCBvcmRpbmFsLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tjYWxsYmFja10oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkZWQpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3BhZGRlZFswXV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHplcm9GaWxsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgcGFkZGVkWzFdLCBwYWRkZWRbMl0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JkaW5hbCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbb3JkaW5hbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwoZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0b2tlbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhpbnB1dCkge1xuICAgICAgICBpZiAoaW5wdXQubWF0Y2goL1xcW1tcXHNcXFNdLykpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKC9eXFxbfFxcXSQvZywgJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKC9cXFxcL2csICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KSB7XG4gICAgICAgIHZhciBhcnJheSA9IGZvcm1hdC5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKSwgaSwgbGVuZ3RoO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhhcnJheVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9ICcnLCBpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ICs9IGlzRnVuY3Rpb24oYXJyYXlbaV0pID8gYXJyYXlbaV0uY2FsbChtb20sIGZvcm1hdCkgOiBhcnJheVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gZm9ybWF0IGRhdGUgdXNpbmcgbmF0aXZlIGRhdGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gZm9ybWF0TW9tZW50KG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbS5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGV4cGFuZEZvcm1hdChmb3JtYXQsIG0ubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gPSBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSB8fCBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0obSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBpID0gNTtcblxuICAgICAgICBmdW5jdGlvbiByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubG9uZ0RhdGVGb3JtYXQoaW5wdXQpIHx8IGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChpID49IDAgJiYgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UobG9jYWxGb3JtYXR0aW5nVG9rZW5zLCByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMpO1xuICAgICAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICBpIC09IDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH1cblxuICAgIHZhciBtYXRjaDEgICAgICAgICA9IC9cXGQvOyAgICAgICAgICAgIC8vICAgICAgIDAgLSA5XG4gICAgdmFyIG1hdGNoMiAgICAgICAgID0gL1xcZFxcZC87ICAgICAgICAgIC8vICAgICAgMDAgLSA5OVxuICAgIHZhciBtYXRjaDMgICAgICAgICA9IC9cXGR7M30vOyAgICAgICAgIC8vICAgICAwMDAgLSA5OTlcbiAgICB2YXIgbWF0Y2g0ICAgICAgICAgPSAvXFxkezR9LzsgICAgICAgICAvLyAgICAwMDAwIC0gOTk5OVxuICAgIHZhciBtYXRjaDYgICAgICAgICA9IC9bKy1dP1xcZHs2fS87ICAgIC8vIC05OTk5OTkgLSA5OTk5OTlcbiAgICB2YXIgbWF0Y2gxdG8yICAgICAgPSAvXFxkXFxkPy87ICAgICAgICAgLy8gICAgICAgMCAtIDk5XG4gICAgdmFyIG1hdGNoM3RvNCAgICAgID0gL1xcZFxcZFxcZFxcZD8vOyAgICAgLy8gICAgIDk5OSAtIDk5OTlcbiAgICB2YXIgbWF0Y2g1dG82ICAgICAgPSAvXFxkXFxkXFxkXFxkXFxkXFxkPy87IC8vICAgOTk5OTkgLSA5OTk5OTlcbiAgICB2YXIgbWF0Y2gxdG8zICAgICAgPSAvXFxkezEsM30vOyAgICAgICAvLyAgICAgICAwIC0gOTk5XG4gICAgdmFyIG1hdGNoMXRvNCAgICAgID0gL1xcZHsxLDR9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2gxdG82ICAgICAgPSAvWystXT9cXGR7MSw2fS87ICAvLyAtOTk5OTk5IC0gOTk5OTk5XG5cbiAgICB2YXIgbWF0Y2hVbnNpZ25lZCAgPSAvXFxkKy87ICAgICAgICAgICAvLyAgICAgICAwIC0gaW5mXG4gICAgdmFyIG1hdGNoU2lnbmVkICAgID0gL1srLV0/XFxkKy87ICAgICAgLy8gICAgLWluZiAtIGluZlxuXG4gICAgdmFyIG1hdGNoT2Zmc2V0ICAgID0gL1p8WystXVxcZFxcZDo/XFxkXFxkL2dpOyAvLyArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcbiAgICB2YXIgbWF0Y2hTaG9ydE9mZnNldCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/L2dpOyAvLyArMDAgLTAwICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuXG4gICAgdmFyIG1hdGNoVGltZXN0YW1wID0gL1srLV0/XFxkKyhcXC5cXGR7MSwzfSk/LzsgLy8gMTIzNDU2Nzg5IDEyMzQ1Njc4OS4xMjNcblxuICAgIC8vIGFueSB3b3JkIChvciB0d28pIGNoYXJhY3RlcnMgb3IgbnVtYmVycyBpbmNsdWRpbmcgdHdvL3RocmVlIHdvcmQgbW9udGggaW4gYXJhYmljLlxuICAgIC8vIGluY2x1ZGVzIHNjb3R0aXNoIGdhZWxpYyB0d28gd29yZCBhbmQgaHlwaGVuYXRlZCBtb250aHNcbiAgICB2YXIgbWF0Y2hXb3JkID0gL1swLTldezAsMjU2fVsnYS16XFx1MDBBMC1cXHUwNUZGXFx1MDcwMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRjA3XFx1RkYxMC1cXHVGRkVGXXsxLDI1Nn18W1xcdTA2MDAtXFx1MDZGRlxcL117MSwyNTZ9KFxccyo/W1xcdTA2MDAtXFx1MDZGRl17MSwyNTZ9KXsxLDJ9L2k7XG5cbiAgICB2YXIgcmVnZXhlcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkUmVnZXhUb2tlbiAodG9rZW4sIHJlZ2V4LCBzdHJpY3RSZWdleCkge1xuICAgICAgICByZWdleGVzW3Rva2VuXSA9IGlzRnVuY3Rpb24ocmVnZXgpID8gcmVnZXggOiBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiAoaXNTdHJpY3QgJiYgc3RyaWN0UmVnZXgpID8gc3RyaWN0UmVnZXggOiByZWdleDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4gKHRva2VuLCBjb25maWcpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHJlZ2V4ZXMsIHRva2VuKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodW5lc2NhcGVGb3JtYXQodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWdleGVzW3Rva2VuXShjb25maWcuX3N0cmljdCwgY29uZmlnLl9sb2NhbGUpO1xuICAgIH1cblxuICAgIC8vIENvZGUgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHRcbiAgICBmdW5jdGlvbiB1bmVzY2FwZUZvcm1hdChzKSB7XG4gICAgICAgIHJldHVybiByZWdleEVzY2FwZShzLnJlcGxhY2UoJ1xcXFwnLCAnJykucmVwbGFjZSgvXFxcXChcXFspfFxcXFwoXFxdKXxcXFsoW15cXF1cXFtdKilcXF18XFxcXCguKS9nLCBmdW5jdGlvbiAobWF0Y2hlZCwgcDEsIHAyLCBwMywgcDQpIHtcbiAgICAgICAgICAgIHJldHVybiBwMSB8fCBwMiB8fCBwMyB8fCBwNDtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlZ2V4RXNjYXBlKHMpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gICAgfVxuXG4gICAgdmFyIHRva2VucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkUGFyc2VUb2tlbiAodG9rZW4sIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBpLCBmdW5jID0gY2FsbGJhY2s7XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0b2tlbiA9IFt0b2tlbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVtYmVyKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgICAgICAgICBhcnJheVtjYWxsYmFja10gPSB0b0ludChpbnB1dCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuW2ldXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRXZWVrUGFyc2VUb2tlbiAodG9rZW4sIGNhbGxiYWNrKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgICAgIGNvbmZpZy5fdyA9IGNvbmZpZy5fdyB8fCB7fTtcbiAgICAgICAgICAgIGNhbGxiYWNrKGlucHV0LCBjb25maWcuX3csIGNvbmZpZywgdG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgaW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCAmJiBoYXNPd25Qcm9wKHRva2VucywgdG9rZW4pKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5dKGlucHV0LCBjb25maWcuX2EsIGNvbmZpZywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFlFQVIgPSAwO1xuICAgIHZhciBNT05USCA9IDE7XG4gICAgdmFyIERBVEUgPSAyO1xuICAgIHZhciBIT1VSID0gMztcbiAgICB2YXIgTUlOVVRFID0gNDtcbiAgICB2YXIgU0VDT05EID0gNTtcbiAgICB2YXIgTUlMTElTRUNPTkQgPSA2O1xuICAgIHZhciBXRUVLID0gNztcbiAgICB2YXIgV0VFS0RBWSA9IDg7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnllYXIoKTtcbiAgICAgICAgcmV0dXJuIHkgPD0gOTk5OSA/ICcnICsgeSA6ICcrJyArIHk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZJywgICA0XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZJywgIDVdLCAgICAgICAwLCAneWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVlZJywgNiwgdHJ1ZV0sIDAsICd5ZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3llYXInLCAneScpO1xuXG4gICAgLy8gUFJJT1JJVElFU1xuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd5ZWFyJywgMSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdZJywgICAgICBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVknLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVknLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWScsICBtYXRjaDF0bzYsIG1hdGNoNik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVlZJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ1lZWVlZJywgJ1lZWVlZWSddLCBZRUFSKTtcbiAgICBhZGRQYXJzZVRva2VuKCdZWVlZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IGlucHV0Lmxlbmd0aCA9PT0gMiA/IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KSA6IHRvSW50KGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDA7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0b0ludChpbnB1dCkgKyAodG9JbnQoaW5wdXQpID4gNjggPyAxOTAwIDogMjAwMCk7XG4gICAgfTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRZZWFyID0gbWFrZUdldFNldCgnRnVsbFllYXInLCB0cnVlKTtcblxuICAgIGZ1bmN0aW9uIGdldElzTGVhcFllYXIgKCkge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldFNldCAodW5pdCwga2VlcFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXQkMSh0aGlzLCB1bml0LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIGtlZXBUaW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCB1bml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXQgKG1vbSwgdW5pdCkge1xuICAgICAgICByZXR1cm4gbW9tLmlzVmFsaWQoKSA/XG4gICAgICAgICAgICBtb20uX2RbJ2dldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0oKSA6IE5hTjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQkMSAobW9tLCB1bml0LCB2YWx1ZSkge1xuICAgICAgICBpZiAobW9tLmlzVmFsaWQoKSAmJiAhaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAodW5pdCA9PT0gJ0Z1bGxZZWFyJyAmJiBpc0xlYXBZZWFyKG1vbS55ZWFyKCkpICYmIG1vbS5tb250aCgpID09PSAxICYmIG1vbS5kYXRlKCkgPT09IDI5KSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlLCBtb20ubW9udGgoKSwgZGF5c0luTW9udGgodmFsdWUsIG1vbS5tb250aCgpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc3RyaW5nR2V0ICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpc1t1bml0c10oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIHN0cmluZ1NldCAodW5pdHMsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdW5pdHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIHZhciBwcmlvcml0aXplZCA9IGdldFByaW9yaXRpemVkVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmlvcml0aXplZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXNbcHJpb3JpdGl6ZWRbaV0udW5pdF0odW5pdHNbcHJpb3JpdGl6ZWRbaV0udW5pdF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1t1bml0c10odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vZChuLCB4KSB7XG4gICAgICAgIHJldHVybiAoKG4gJSB4KSArIHgpICUgeDtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXhPZjtcblxuICAgIGlmIChBcnJheS5wcm90b3R5cGUuaW5kZXhPZikge1xuICAgICAgICBpbmRleE9mID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2Y7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXhPZiA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAvLyBJIGtub3dcbiAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpc1tpXSA9PT0gbykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgICAgICAgaWYgKGlzTmFOKHllYXIpIHx8IGlzTmFOKG1vbnRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbW9kTW9udGggPSBtb2QobW9udGgsIDEyKTtcbiAgICAgICAgeWVhciArPSAobW9udGggLSBtb2RNb250aCkgLyAxMjtcbiAgICAgICAgcmV0dXJuIG1vZE1vbnRoID09PSAxID8gKGlzTGVhcFllYXIoeWVhcikgPyAyOSA6IDI4KSA6ICgzMSAtIG1vZE1vbnRoICUgNyAlIDIpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNJywgWydNTScsIDJdLCAnTW8nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoKCkgKyAxO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTScsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NTScsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdtb250aCcsICdNJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtb250aCcsIDgpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignTScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU0nLCAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTU0nLCAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5tb250aHNTaG9ydFJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdNTU1NJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5tb250aHNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnTScsICdNTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01PTlRIXSA9IHRvSW50KGlucHV0KSAtIDE7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnTU1NJywgJ01NTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgbW9udGggPSBjb25maWcuX2xvY2FsZS5tb250aHNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYSBtb250aCBuYW1lLCBtYXJrIHRoZSBkYXRlIGFzIGludmFsaWQuXG4gICAgICAgIGlmIChtb250aCAhPSBudWxsKSB7XG4gICAgICAgICAgICBhcnJheVtNT05USF0gPSBtb250aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRNb250aCA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICB2YXIgTU9OVEhTX0lOX0ZPUk1BVCA9IC9EW29EXT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK01NTU0/LztcbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRocyA9ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRocyAobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzKSA/IHRoaXMuX21vbnRocyA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzWydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzKSA/IHRoaXMuX21vbnRoc1ttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1sodGhpcy5fbW9udGhzLmlzRm9ybWF0IHx8IE1PTlRIU19JTl9GT1JNQVQpLnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQgPSAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzU2hvcnQgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRoc1Nob3J0KSA/IHRoaXMuX21vbnRoc1Nob3J0IDpcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFsnc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRoc1Nob3J0KSA/IHRoaXMuX21vbnRoc1Nob3J0W20ubW9udGgoKV0gOlxuICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbTU9OVEhTX0lOX0ZPUk1BVC50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTdHJpY3RQYXJzZShtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBpaSwgbW9tLCBsbGMgPSBtb250aE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgdXNlZFxuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHNTaG9ydChtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1BhcnNlIChtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UuY2FsbCh0aGlzLCBtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRPRE86IGFkZCBzb3J0aW5nXG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXJcbiAgICAgICAgLy8gc2VlIHNvcnRpbmcgaW4gY29tcHV0ZU1vbnRoc1BhcnNlXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiAhdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RyaWN0ICYmICF0aGlzLl9tb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykgKyAnfF4nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ01NTU0nICYmIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ01NTScgJiYgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl9tb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHNldE1vbnRoIChtb20sIHZhbHVlKSB7XG4gICAgICAgIHZhciBkYXlPZk1vbnRoO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKC9eXFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0b0ludCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQW5vdGhlciBzaWxlbnQgZmFpbHVyZT9cbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRheU9mTW9udGggPSBNYXRoLm1pbihtb20uZGF0ZSgpLCBkYXlzSW5Nb250aChtb20ueWVhcigpLCB2YWx1ZSkpO1xuICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgJ01vbnRoJ10odmFsdWUsIGRheU9mTW9udGgpO1xuICAgICAgICByZXR1cm4gbW9tO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldE1vbnRoICh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2V0TW9udGgodGhpcywgdmFsdWUpO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsICdNb250aCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGF5c0luTW9udGggKCkge1xuICAgICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIG1vbnRoc1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1Nob3J0UmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE1vbnRoc1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIG1vbnRoc1JlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBkZWZhdWx0TW9udGhzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlTW9udGhzUGFyc2UgKCkge1xuICAgICAgICBmdW5jdGlvbiBjbXBMZW5SZXYoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2hvcnRQaWVjZXMgPSBbXSwgbG9uZ1BpZWNlcyA9IFtdLCBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSwgbW9tO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgICAgICBsb25nUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIgaXRcbiAgICAgICAgLy8gd2lsbCBtYXRjaCB0aGUgbG9uZ2VyIHBpZWNlLlxuICAgICAgICBzaG9ydFBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIGxvbmdQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBtaXhlZFBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjQ7IGkrKykge1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShtaXhlZFBpZWNlc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9tb250aHNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZURhdGUgKHksIG0sIGQsIGgsIE0sIHMsIG1zKSB7XG4gICAgICAgIC8vIGNhbid0IGp1c3QgYXBwbHkoKSB0byBjcmVhdGUgYSBkYXRlOlxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMTgxMzQ4XG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpO1xuXG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDAgJiYgaXNGaW5pdGUoZGF0ZS5nZXRGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVENEYXRlICh5KSB7XG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG5cbiAgICAgICAgLy8gdGhlIERhdGUuVVRDIGZ1bmN0aW9uIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDAgJiYgaXNGaW5pdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvLyBzdGFydC1vZi1maXJzdC13ZWVrIC0gc3RhcnQtb2YteWVhclxuICAgIGZ1bmN0aW9uIGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIpXG4gICAgICAgICAgICBmd2QgPSA3ICsgZG93IC0gZG95LFxuICAgICAgICAgICAgLy8gZmlyc3Qtd2VlayBkYXkgbG9jYWwgd2Vla2RheSAtLSB3aGljaCBsb2NhbCB3ZWVrZGF5IGlzIGZ3ZFxuICAgICAgICAgICAgZndkbHcgPSAoNyArIGNyZWF0ZVVUQ0RhdGUoeWVhciwgMCwgZndkKS5nZXRVVENEYXkoKSAtIGRvdykgJSA3O1xuXG4gICAgICAgIHJldHVybiAtZndkbHcgKyBmd2QgLSAxO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUjQ2FsY3VsYXRpbmdfYV9kYXRlX2dpdmVuX3RoZV95ZWFyLjJDX3dlZWtfbnVtYmVyX2FuZF93ZWVrZGF5XG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtzKHllYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBsb2NhbFdlZWtkYXkgPSAoNyArIHdlZWtkYXkgLSBkb3cpICUgNyxcbiAgICAgICAgICAgIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF5T2ZZZWFyID0gMSArIDcgKiAod2VlayAtIDEpICsgbG9jYWxXZWVrZGF5ICsgd2Vla09mZnNldCxcbiAgICAgICAgICAgIHJlc1llYXIsIHJlc0RheU9mWWVhcjtcblxuICAgICAgICBpZiAoZGF5T2ZZZWFyIDw9IDApIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyIC0gMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheXNJblllYXIocmVzWWVhcikgKyBkYXlPZlllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyKSkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgKyAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyIC0gZGF5c0luWWVhcih5ZWFyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXIsXG4gICAgICAgICAgICBkYXlPZlllYXI6IHJlc0RheU9mWWVhclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtPZlllYXIobW9tLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldChtb20ueWVhcigpLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrID0gTWF0aC5mbG9vcigobW9tLmRheU9mWWVhcigpIC0gd2Vla09mZnNldCAtIDEpIC8gNykgKyAxLFxuICAgICAgICAgICAgcmVzV2VlaywgcmVzWWVhcjtcblxuICAgICAgICBpZiAod2VlayA8IDEpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpIC0gMTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrICsgd2Vla3NJblllYXIocmVzWWVhciwgZG93LCBkb3kpO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWsgPiB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrIC0gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCk7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3ZWVrOiByZXNXZWVrLFxuICAgICAgICAgICAgeWVhcjogcmVzWWVhclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtzSW5ZZWFyKHllYXIsIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWtPZmZzZXROZXh0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIgKyAxLCBkb3csIGRveSk7XG4gICAgICAgIHJldHVybiAoZGF5c0luWWVhcih5ZWFyKSAtIHdlZWtPZmZzZXQgKyB3ZWVrT2Zmc2V0TmV4dCkgLyA3O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd3JywgWyd3dycsIDJdLCAnd28nLCAnd2VlaycpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdXJywgWydXVycsIDJdLCAnV28nLCAnaXNvV2VlaycpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrJywgJ3cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWsnLCAnVycpO1xuXG4gICAgLy8gUFJJT1JJVElFU1xuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrJywgNSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrJywgNSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCd3JywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignd3cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignVycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWyd3JywgJ3d3JywgJ1cnLCAnV1cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDEpXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWsgKG1vbSkge1xuICAgICAgICByZXR1cm4gd2Vla09mWWVhcihtb20sIHRoaXMuX3dlZWsuZG93LCB0aGlzLl93ZWVrLmRveSkud2VlaztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWsgPSB7XG4gICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZXZWVrICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95O1xuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWsgKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWsgKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gd2Vla09mWWVhcih0aGlzLCAxLCA0KS53ZWVrO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2QnLCAwLCAnZG8nLCAnZGF5Jyk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdlJywgMCwgMCwgJ3dlZWtkYXknKTtcbiAgICBhZGRGb3JtYXRUb2tlbignRScsIDAsIDAsICdpc29XZWVrZGF5Jyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheScsICdkJyk7XG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrZGF5JywgJ2UnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtkYXknLCAnRScpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheScsIDExKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrZGF5JywgMTEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignZCcsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignRScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNNaW5SZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZGQnLCAnZGRkJywgJ2RkZGQnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gY29uZmlnLl9sb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGdldCBhIHdlZWtkYXkgbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkXG4gICAgICAgIGlmICh3ZWVrZGF5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHdlZWsuZCA9IHdlZWtkYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkV2Vla2RheSA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2QnLCAnZScsICdFJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzTmFOKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCA9IGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpICUgNyB8fCA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05hTihpbnB1dCkgPyBudWxsIDogaW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5cyA9ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5cyAobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fd2Vla2RheXMpID8gdGhpcy5fd2Vla2RheXMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzWydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fd2Vla2RheXMpID8gdGhpcy5fd2Vla2RheXNbbS5kYXkoKV0gOlxuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNbdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20uZGF5KCldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCA9ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydCAobSkge1xuICAgICAgICByZXR1cm4gKG0pID8gdGhpcy5fd2Vla2RheXNTaG9ydFttLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzU2hvcnQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbiA9ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c01pbiAobSkge1xuICAgICAgICByZXR1cm4gKG0pID8gdGhpcy5fd2Vla2RheXNNaW5bbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c01pbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTdHJpY3RQYXJzZSQxKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gd2Vla2RheU5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c01pbihtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c1BhcnNlICh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlJDEuY2FsbCh0aGlzLCB3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcblxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiAhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZGRkJyAmJiB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkJyAmJiB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkJyAmJiB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fd2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRheSA9IHRoaXMuX2lzVVRDID8gdGhpcy5fZC5nZXRVVENEYXkoKSA6IHRoaXMuX2QuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHBhcnNlV2Vla2RheShpbnB1dCwgdGhpcy5sb2NhbGVEYXRhKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGlucHV0IC0gZGF5LCAnZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldExvY2FsZURheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gKHRoaXMuZGF5KCkgKyA3IC0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSAlIDc7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2Vla2RheSA6IHRoaXMuYWRkKGlucHV0IC0gd2Vla2RheSwgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09EYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGJlaGF2ZXMgdGhlIHNhbWUgYXMgbW9tZW50I2RheSBleGNlcHRcbiAgICAgICAgLy8gYXMgYSBnZXR0ZXIsIHJldHVybnMgNyBpbnN0ZWFkIG9mIDAgKDEtNyByYW5nZSBpbnN0ZWFkIG9mIDAtNilcbiAgICAgICAgLy8gYXMgYSBzZXR0ZXIsIHN1bmRheSBzaG91bGQgYmVsb25nIHRvIHRoZSBwcmV2aW91cyB3ZWVrLlxuXG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgd2Vla2RheSA9IHBhcnNlSXNvV2Vla2RheShpbnB1dCwgdGhpcy5sb2NhbGVEYXRhKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KHRoaXMuZGF5KCkgJSA3ID8gd2Vla2RheSA6IHdlZWtkYXkgLSA3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSgpIHx8IDc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzUmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gd2Vla2RheXNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBkZWZhdWx0V2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzU2hvcnRSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzTWluUmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gd2Vla2RheXNNaW5SZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzTWluUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSBkZWZhdWx0V2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVdlZWtkYXlzUGFyc2UgKCkge1xuICAgICAgICBmdW5jdGlvbiBjbXBMZW5SZXYoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWluUGllY2VzID0gW10sIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbSwgbWlucCwgc2hvcnRwLCBsb25ncDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBtaW5wID0gdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgIHNob3J0cCA9IHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKTtcbiAgICAgICAgICAgIGxvbmdwID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKTtcbiAgICAgICAgICAgIG1pblBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKGxvbmdwKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobWlucCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHNob3J0cCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKGxvbmdwKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIHdlZWtkYXkgKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIgaXRcbiAgICAgICAgLy8gd2lsbCBtYXRjaCB0aGUgbG9uZ2VyIHBpZWNlLlxuICAgICAgICBtaW5QaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBzaG9ydFBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIGxvbmdQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBtaXhlZFBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShtaXhlZFBpZWNlc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcblxuICAgICAgICB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbG9uZ1BpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1pblBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgZnVuY3Rpb24gaEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSAlIDEyIHx8IDEyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgfHwgMjQ7XG4gICAgfVxuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0gnLCBbJ0hIJywgMl0sIDAsICdob3VyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2gnLCBbJ2hoJywgMl0sIDAsIGhGb3JtYXQpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdrJywgWydraycsIDJdLCAwLCBrRm9ybWF0KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIGhGb3JtYXQuYXBwbHkodGhpcykgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tc3MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIGhGb3JtYXQuYXBwbHkodGhpcykgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMikgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5zZWNvbmRzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyB0aGlzLmhvdXJzKCkgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMikgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5zZWNvbmRzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW0gKHRva2VuLCBsb3dlcmNhc2UpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksIHRoaXMubWludXRlcygpLCBsb3dlcmNhc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtZXJpZGllbSgnYScsIHRydWUpO1xuICAgIG1lcmlkaWVtKCdBJywgZmFsc2UpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdob3VyJywgJ2gnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdob3VyJywgMTMpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgZnVuY3Rpb24gbWF0Y2hNZXJpZGllbSAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLl9tZXJpZGllbVBhcnNlO1xuICAgIH1cblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignQScsICBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdIJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignaCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2snLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdISCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdoaCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdraycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignaG1tc3MnLCBtYXRjaDV0bzYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tc3MnLCBtYXRjaDV0bzYpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0gnLCAnSEgnXSwgSE9VUik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2snLCAna2snXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBrSW5wdXQgPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGFycmF5W0hPVVJdID0ga0lucHV0ID09PSAyNCA/IDAgOiBrSW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2EnLCAnQSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9pc1BtID0gY29uZmlnLl9sb2NhbGUuaXNQTShpbnB1dCk7XG4gICAgICAgIGNvbmZpZy5fbWVyaWRpZW0gPSBpbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaCcsICdoaCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNDtcbiAgICAgICAgdmFyIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgfSk7XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVJc1BNIChpbnB1dCkge1xuICAgICAgICAvLyBJRTggUXVpcmtzIE1vZGUgJiBJRTcgU3RhbmRhcmRzIE1vZGUgZG8gbm90IGFsbG93IGFjY2Vzc2luZyBzdHJpbmdzIGxpa2UgYXJyYXlzXG4gICAgICAgIC8vIFVzaW5nIGNoYXJBdCBzaG91bGQgYmUgbW9yZSBjb21wYXRpYmxlLlxuICAgICAgICByZXR1cm4gKChpbnB1dCArICcnKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKSA9PT0gJ3AnKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2UgPSAvW2FwXVxcLj9tP1xcLj8vaTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNZXJpZGllbSAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3BtJyA6ICdQTSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhbScgOiAnQU0nO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICAvLyBTZXR0aW5nIHRoZSBob3VyIHNob3VsZCBrZWVwIHRoZSB0aW1lLCBiZWNhdXNlIHRoZSB1c2VyIGV4cGxpY2l0bHlcbiAgICAvLyBzcGVjaWZpZWQgd2hpY2ggaG91ciB0aGV5IHdhbnQuIFNvIHRyeWluZyB0byBtYWludGFpbiB0aGUgc2FtZSBob3VyIChpblxuICAgIC8vIGEgbmV3IHRpbWV6b25lKSBtYWtlcyBzZW5zZS4gQWRkaW5nL3N1YnRyYWN0aW5nIGhvdXJzIGRvZXMgbm90IGZvbGxvd1xuICAgIC8vIHRoaXMgcnVsZS5cbiAgICB2YXIgZ2V0U2V0SG91ciA9IG1ha2VHZXRTZXQoJ0hvdXJzJywgdHJ1ZSk7XG5cbiAgICB2YXIgYmFzZUNvbmZpZyA9IHtcbiAgICAgICAgY2FsZW5kYXI6IGRlZmF1bHRDYWxlbmRhcixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IGRlZmF1bHRMb25nRGF0ZUZvcm1hdCxcbiAgICAgICAgaW52YWxpZERhdGU6IGRlZmF1bHRJbnZhbGlkRGF0ZSxcbiAgICAgICAgb3JkaW5hbDogZGVmYXVsdE9yZGluYWwsXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IGRlZmF1bHREYXlPZk1vbnRoT3JkaW5hbFBhcnNlLFxuICAgICAgICByZWxhdGl2ZVRpbWU6IGRlZmF1bHRSZWxhdGl2ZVRpbWUsXG5cbiAgICAgICAgbW9udGhzOiBkZWZhdWx0TG9jYWxlTW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LFxuXG4gICAgICAgIHdlZWs6IGRlZmF1bHRMb2NhbGVXZWVrLFxuXG4gICAgICAgIHdlZWtkYXlzOiBkZWZhdWx0TG9jYWxlV2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LFxuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlXG4gICAgfTtcblxuICAgIC8vIGludGVybmFsIHN0b3JhZ2UgZm9yIGxvY2FsZSBjb25maWcgZmlsZXNcbiAgICB2YXIgbG9jYWxlcyA9IHt9O1xuICAgIHZhciBsb2NhbGVGYW1pbGllcyA9IHt9O1xuICAgIHZhciBnbG9iYWxMb2NhbGU7XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVMb2NhbGUoa2V5KSB7XG4gICAgICAgIHJldHVybiBrZXkgPyBrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJy0nKSA6IGtleTtcbiAgICB9XG5cbiAgICAvLyBwaWNrIHRoZSBsb2NhbGUgZnJvbSB0aGUgYXJyYXlcbiAgICAvLyB0cnkgWydlbi1hdScsICdlbi1nYiddIGFzICdlbi1hdScsICdlbi1nYicsICdlbicsIGFzIGluIG1vdmUgdGhyb3VnaCB0aGUgbGlzdCB0cnlpbmcgZWFjaFxuICAgIC8vIHN1YnN0cmluZyBmcm9tIG1vc3Qgc3BlY2lmaWMgdG8gbGVhc3QsIGJ1dCBtb3ZlIHRvIHRoZSBuZXh0IGFycmF5IGl0ZW0gaWYgaXQncyBhIG1vcmUgc3BlY2lmaWMgdmFyaWFudCB0aGFuIHRoZSBjdXJyZW50IHJvb3RcbiAgICBmdW5jdGlvbiBjaG9vc2VMb2NhbGUobmFtZXMpIHtcbiAgICAgICAgdmFyIGkgPSAwLCBqLCBuZXh0LCBsb2NhbGUsIHNwbGl0O1xuXG4gICAgICAgIHdoaWxlIChpIDwgbmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzcGxpdCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpXSkuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGogPSBzcGxpdC5sZW5ndGg7XG4gICAgICAgICAgICBuZXh0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2kgKyAxXSk7XG4gICAgICAgICAgICBuZXh0ID0gbmV4dCA/IG5leHQuc3BsaXQoJy0nKSA6IG51bGw7XG4gICAgICAgICAgICB3aGlsZSAoaiA+IDApIHtcbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKHNwbGl0LnNsaWNlKDAsIGopLmpvaW4oJy0nKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0Lmxlbmd0aCA+PSBqICYmIGNvbXBhcmVBcnJheXMoc3BsaXQsIG5leHQsIHRydWUpID49IGogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vdGhlIG5leHQgYXJyYXkgaXRlbSBpcyBiZXR0ZXIgdGhhbiBhIHNoYWxsb3dlciBzdWJzdHJpbmcgb2YgdGhpcyBvbmVcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGotLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvYWRMb2NhbGUobmFtZSkge1xuICAgICAgICB2YXIgb2xkTG9jYWxlID0gbnVsbDtcbiAgICAgICAgLy8gVE9ETzogRmluZCBhIGJldHRlciB3YXkgdG8gcmVnaXN0ZXIgYW5kIGxvYWQgYWxsIHRoZSBsb2NhbGVzIGluIE5vZGVcbiAgICAgICAgaWYgKCFsb2NhbGVzW25hbWVdICYmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykgJiZcbiAgICAgICAgICAgICAgICBtb2R1bGUgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb2xkTG9jYWxlID0gZ2xvYmFsTG9jYWxlLl9hYmJyO1xuICAgICAgICAgICAgICAgIHZhciBhbGlhc2VkUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgICAgICAgICAgYWxpYXNlZFJlcXVpcmUoJy4vbG9jYWxlLycgKyBuYW1lKTtcbiAgICAgICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUob2xkTG9jYWxlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGxvYWQgbG9jYWxlIGFuZCB0aGVuIHNldCB0aGUgZ2xvYmFsIGxvY2FsZS4gIElmXG4gICAgLy8gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgY3VycmVudCBnbG9iYWxcbiAgICAvLyBsb2NhbGUga2V5LlxuICAgIGZ1bmN0aW9uIGdldFNldEdsb2JhbExvY2FsZSAoa2V5LCB2YWx1ZXMpIHtcbiAgICAgICAgdmFyIGRhdGE7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGRlZmluZUxvY2FsZShrZXksIHZhbHVlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gbW9tZW50LmR1cmF0aW9uLl9sb2NhbGUgPSBtb21lbnQuX2xvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgZ2xvYmFsTG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICgodHlwZW9mIGNvbnNvbGUgIT09ICAndW5kZWZpbmVkJykgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vd2FybiB1c2VyIGlmIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGJ1dCB0aGUgbG9jYWxlIGNvdWxkIG5vdCBiZSBzZXRcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdMb2NhbGUgJyArIGtleSArICAnIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlLl9hYmJyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmluZUxvY2FsZSAobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICBjb25maWcuYWJiciA9IG5hbWU7XG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKCdkZWZpbmVMb2NhbGVPdmVycmlkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uJyk7XG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tuYW1lXS5fY29uZmlnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0uX2NvbmZpZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGNvbmZpZy5wYXJlbnRMb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IG5ldyBMb2NhbGUobWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKSk7XG5cbiAgICAgICAgICAgIGlmIChsb2NhbGVGYW1pbGllc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW25hbWVdLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lTG9jYWxlKHgubmFtZSwgeC5jb25maWcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGVcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGxvY2FsZSBBRlRFUiBhbGwgY2hpbGQgbG9jYWxlcyBoYXZlIGJlZW5cbiAgICAgICAgICAgIC8vIGNyZWF0ZWQsIHNvIHdlIHdvbid0IGVuZCB1cCB3aXRoIHRoZSBjaGlsZCBsb2NhbGUgc2V0LlxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuXG5cbiAgICAgICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdXNlZnVsIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlTG9jYWxlKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUsIHRtcExvY2FsZSwgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICAgIC8vIE1FUkdFXG4gICAgICAgICAgICB0bXBMb2NhbGUgPSBsb2FkTG9jYWxlKG5hbWUpO1xuICAgICAgICAgICAgaWYgKHRtcExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gdG1wTG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcgPSBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpO1xuICAgICAgICAgICAgbG9jYWxlID0gbmV3IExvY2FsZShjb25maWcpO1xuICAgICAgICAgICAgbG9jYWxlLnBhcmVudExvY2FsZSA9IGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlO1xuXG4gICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGVcbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhc3MgbnVsbCBmb3IgY29uZmlnIHRvIHVudXBkYXRlLCB1c2VmdWwgZm9yIHRlc3RzXG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIGxvY2FsZSBkYXRhXG4gICAgZnVuY3Rpb24gZ2V0TG9jYWxlIChrZXkpIHtcbiAgICAgICAgdmFyIGxvY2FsZTtcblxuICAgICAgICBpZiAoa2V5ICYmIGtleS5fbG9jYWxlICYmIGtleS5fbG9jYWxlLl9hYmJyKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXkuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0FycmF5KGtleSkpIHtcbiAgICAgICAgICAgIC8vc2hvcnQtY2lyY3VpdCBldmVyeXRoaW5nIGVsc2VcbiAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5ID0gW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hvb3NlTG9jYWxlKGtleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdExvY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBrZXlzKGxvY2FsZXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3cgKG0pIHtcbiAgICAgICAgdmFyIG92ZXJmbG93O1xuICAgICAgICB2YXIgYSA9IG0uX2E7XG5cbiAgICAgICAgaWYgKGEgJiYgZ2V0UGFyc2luZ0ZsYWdzKG0pLm92ZXJmbG93ID09PSAtMikge1xuICAgICAgICAgICAgb3ZlcmZsb3cgPVxuICAgICAgICAgICAgICAgIGFbTU9OVEhdICAgICAgIDwgMCB8fCBhW01PTlRIXSAgICAgICA+IDExICA/IE1PTlRIIDpcbiAgICAgICAgICAgICAgICBhW0RBVEVdICAgICAgICA8IDEgfHwgYVtEQVRFXSAgICAgICAgPiBkYXlzSW5Nb250aChhW1lFQVJdLCBhW01PTlRIXSkgPyBEQVRFIDpcbiAgICAgICAgICAgICAgICBhW0hPVVJdICAgICAgICA8IDAgfHwgYVtIT1VSXSAgICAgICAgPiAyNCB8fCAoYVtIT1VSXSA9PT0gMjQgJiYgKGFbTUlOVVRFXSAhPT0gMCB8fCBhW1NFQ09ORF0gIT09IDAgfHwgYVtNSUxMSVNFQ09ORF0gIT09IDApKSA/IEhPVVIgOlxuICAgICAgICAgICAgICAgIGFbTUlOVVRFXSAgICAgIDwgMCB8fCBhW01JTlVURV0gICAgICA+IDU5ICA/IE1JTlVURSA6XG4gICAgICAgICAgICAgICAgYVtTRUNPTkRdICAgICAgPCAwIHx8IGFbU0VDT05EXSAgICAgID4gNTkgID8gU0VDT05EIDpcbiAgICAgICAgICAgICAgICBhW01JTExJU0VDT05EXSA8IDAgfHwgYVtNSUxMSVNFQ09ORF0gPiA5OTkgPyBNSUxMSVNFQ09ORCA6XG4gICAgICAgICAgICAgICAgLTE7XG5cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93RGF5T2ZZZWFyICYmIChvdmVyZmxvdyA8IFlFQVIgfHwgb3ZlcmZsb3cgPiBEQVRFKSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gREFURTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla3MgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrZGF5ICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFS0RBWTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQaWNrIHRoZSBmaXJzdCBkZWZpbmVkIG9mIHR3byBvciB0aHJlZSBhcmd1bWVudHMuXG4gICAgZnVuY3Rpb24gZGVmYXVsdHMoYSwgYiwgYykge1xuICAgICAgICBpZiAoYSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZykge1xuICAgICAgICAvLyBob29rcyBpcyBhY3R1YWxseSB0aGUgZXhwb3J0ZWQgbW9tZW50IG9iamVjdFxuICAgICAgICB2YXIgbm93VmFsdWUgPSBuZXcgRGF0ZShob29rcy5ub3coKSk7XG4gICAgICAgIGlmIChjb25maWcuX3VzZVVUQykge1xuICAgICAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRVVENGdWxsWWVhcigpLCBub3dWYWx1ZS5nZXRVVENNb250aCgpLCBub3dWYWx1ZS5nZXRVVENEYXRlKCldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0RnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0TW9udGgoKSwgbm93VmFsdWUuZ2V0RGF0ZSgpXTtcbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IGFuIGFycmF5IHRvIGEgZGF0ZS5cbiAgICAvLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0aGUgcGFyYW1ldGVycyBiZWxvd1xuICAgIC8vIG5vdGU6IGFsbCB2YWx1ZXMgcGFzdCB0aGUgeWVhciBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgZGVmYXVsdCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlIHZhbHVlLlxuICAgIC8vIFt5ZWFyLCBtb250aCwgZGF5ICwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXVxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21BcnJheSAoY29uZmlnKSB7XG4gICAgICAgIHZhciBpLCBkYXRlLCBpbnB1dCA9IFtdLCBjdXJyZW50RGF0ZSwgZXhwZWN0ZWRXZWVrZGF5LCB5ZWFyVG9Vc2U7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZyk7XG5cbiAgICAgICAgLy9jb21wdXRlIGRheSBvZiB0aGUgeWVhciBmcm9tIHdlZWtzIGFuZCB3ZWVrZGF5c1xuICAgICAgICBpZiAoY29uZmlnLl93ICYmIGNvbmZpZy5fYVtEQVRFXSA9PSBudWxsICYmIGNvbmZpZy5fYVtNT05USF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvL2lmIHRoZSBkYXkgb2YgdGhlIHllYXIgaXMgc2V0LCBmaWd1cmUgb3V0IHdoYXQgaXQgaXNcbiAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHllYXJUb1VzZSA9IGRlZmF1bHRzKGNvbmZpZy5fYVtZRUFSXSwgY3VycmVudERhdGVbWUVBUl0pO1xuXG4gICAgICAgICAgICBpZiAoY29uZmlnLl9kYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXJUb1VzZSkgfHwgY29uZmlnLl9kYXlPZlllYXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dEYXlPZlllYXIgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0ZSh5ZWFyVG9Vc2UsIDAsIGNvbmZpZy5fZGF5T2ZZZWFyKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtNT05USF0gPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgICAgICBjb25maWcuX2FbREFURV0gPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCBkYXRlLlxuICAgICAgICAvLyAqIGlmIG5vIHllYXIsIG1vbnRoLCBkYXkgb2YgbW9udGggYXJlIGdpdmVuLCBkZWZhdWx0IHRvIHRvZGF5XG4gICAgICAgIC8vICogaWYgZGF5IG9mIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG1vbnRoIGFuZCB5ZWFyXG4gICAgICAgIC8vICogaWYgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgb25seSB5ZWFyXG4gICAgICAgIC8vICogaWYgeWVhciBpcyBnaXZlbiwgZG9uJ3QgZGVmYXVsdCBhbnl0aGluZ1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMyAmJiBjb25maWcuX2FbaV0gPT0gbnVsbDsgKytpKSB7XG4gICAgICAgICAgICBjb25maWcuX2FbaV0gPSBpbnB1dFtpXSA9IGN1cnJlbnREYXRlW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gWmVybyBvdXQgd2hhdGV2ZXIgd2FzIG5vdCBkZWZhdWx0ZWQsIGluY2x1ZGluZyB0aW1lXG4gICAgICAgIGZvciAoOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBjb25maWcuX2FbaV0gPSBpbnB1dFtpXSA9IChjb25maWcuX2FbaV0gPT0gbnVsbCkgPyAoaSA9PT0gMiA/IDEgOiAwKSA6IGNvbmZpZy5fYVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGZvciAyNDowMDowMC4wMDBcbiAgICAgICAgaWYgKGNvbmZpZy5fYVtIT1VSXSA9PT0gMjQgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbTUlOVVRFXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtTRUNPTkRdID09PSAwICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTExJU0VDT05EXSA9PT0gMCkge1xuICAgICAgICAgICAgY29uZmlnLl9uZXh0RGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWcuX2QgPSAoY29uZmlnLl91c2VVVEMgPyBjcmVhdGVVVENEYXRlIDogY3JlYXRlRGF0ZSkuYXBwbHkobnVsbCwgaW5wdXQpO1xuICAgICAgICBleHBlY3RlZFdlZWtkYXkgPSBjb25maWcuX3VzZVVUQyA/IGNvbmZpZy5fZC5nZXRVVENEYXkoKSA6IGNvbmZpZy5fZC5nZXREYXkoKTtcblxuICAgICAgICAvLyBBcHBseSB0aW1lem9uZSBvZmZzZXQgZnJvbSBpbnB1dC4gVGhlIGFjdHVhbCB1dGNPZmZzZXQgY2FuIGJlIGNoYW5nZWRcbiAgICAgICAgLy8gd2l0aCBwYXJzZVpvbmUuXG4gICAgICAgIGlmIChjb25maWcuX3R6bSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2Quc2V0VVRDTWludXRlcyhjb25maWcuX2QuZ2V0VVRDTWludXRlcygpIC0gY29uZmlnLl90em0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fbmV4dERheSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMjQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGVjayBmb3IgbWlzbWF0Y2hpbmcgZGF5IG9mIHdlZWtcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiB0eXBlb2YgY29uZmlnLl93LmQgIT09ICd1bmRlZmluZWQnICYmIGNvbmZpZy5fdy5kICE9PSBleHBlY3RlZFdlZWtkYXkpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKSB7XG4gICAgICAgIHZhciB3LCB3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3ksIHRlbXAsIHdlZWtkYXlPdmVyZmxvdztcblxuICAgICAgICB3ID0gY29uZmlnLl93O1xuICAgICAgICBpZiAody5HRyAhPSBudWxsIHx8IHcuVyAhPSBudWxsIHx8IHcuRSAhPSBudWxsKSB7XG4gICAgICAgICAgICBkb3cgPSAxO1xuICAgICAgICAgICAgZG95ID0gNDtcblxuICAgICAgICAgICAgLy8gVE9ETzogV2UgbmVlZCB0byB0YWtlIHRoZSBjdXJyZW50IGlzb1dlZWtZZWFyLCBidXQgdGhhdCBkZXBlbmRzIG9uXG4gICAgICAgICAgICAvLyBob3cgd2UgaW50ZXJwcmV0IG5vdyAobG9jYWwsIHV0YywgZml4ZWQgb2Zmc2V0KS4gU28gY3JlYXRlXG4gICAgICAgICAgICAvLyBhIG5vdyB2ZXJzaW9uIG9mIGN1cnJlbnQgY29uZmlnICh0YWtlIGxvY2FsL3V0Yy9vZmZzZXQgZmxhZ3MsIGFuZFxuICAgICAgICAgICAgLy8gY3JlYXRlIG5vdykuXG4gICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuR0csIGNvbmZpZy5fYVtZRUFSXSwgd2Vla09mWWVhcihjcmVhdGVMb2NhbCgpLCAxLCA0KS55ZWFyKTtcbiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LlcsIDEpO1xuICAgICAgICAgICAgd2Vla2RheSA9IGRlZmF1bHRzKHcuRSwgMSk7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA8IDEgfHwgd2Vla2RheSA+IDcpIHtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG93ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG93O1xuICAgICAgICAgICAgZG95ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG95O1xuXG4gICAgICAgICAgICB2YXIgY3VyV2VlayA9IHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgZG93LCBkb3kpO1xuXG4gICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuZ2csIGNvbmZpZy5fYVtZRUFSXSwgY3VyV2Vlay55ZWFyKTtcblxuICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IHdlZWsuXG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody53LCBjdXJXZWVrLndlZWspO1xuXG4gICAgICAgICAgICBpZiAody5kICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZWVrZGF5IC0tIGxvdyBkYXkgbnVtYmVycyBhcmUgY29uc2lkZXJlZCBuZXh0IHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5kO1xuICAgICAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMCB8fCB3ZWVrZGF5ID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAody5lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2NhbCB3ZWVrZGF5IC0tIGNvdW50aW5nIHN0YXJ0cyBmcm9tIGJlZ2luaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5lICsgZG93O1xuICAgICAgICAgICAgICAgIGlmICh3LmUgPCAwIHx8IHcuZSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYmVnaW5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSBkb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdlZWsgPCAxIHx8IHdlZWsgPiB3ZWVrc0luWWVhcih3ZWVrWWVhciwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrcyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAod2Vla2RheU92ZXJmbG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtkYXkgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVtcCA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gdGVtcC55ZWFyO1xuICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0ZW1wLmRheU9mWWVhcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlzbyA4NjAxIHJlZ2V4XG4gICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApXG4gICAgdmFyIGV4dGVuZGVkSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pLSg/OlxcZFxcZC1cXGRcXGR8V1xcZFxcZC1cXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzo6XFxkXFxkKD86OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbXFwrXFwtXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC87XG4gICAgdmFyIGJhc2ljSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pKD86XFxkXFxkXFxkXFxkfFdcXGRcXGRcXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzpcXGRcXGQoPzpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuXG4gICAgdmFyIHR6UmVnZXggPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy87XG5cbiAgICB2YXIgaXNvRGF0ZXMgPSBbXG4gICAgICAgIFsnWVlZWVlZLU1NLUREJywgL1srLV1cXGR7Nn0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICBbJ1lZWVktTU0tREQnLCAvXFxkezR9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydHR0dHLVtXXVdXLUUnLCAvXFxkezR9LVdcXGRcXGQtXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVycsIC9cXGR7NH0tV1xcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZLURERCcsIC9cXGR7NH0tXFxkezN9L10sXG4gICAgICAgIFsnWVlZWS1NTScsIC9cXGR7NH0tXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVlZWU1NREQnLCAvWystXVxcZHsxMH0vXSxcbiAgICAgICAgWydZWVlZTU1ERCcsIC9cXGR7OH0vXSxcbiAgICAgICAgLy8gWVlZWU1NIGlzIE5PVCBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZFxuICAgICAgICBbJ0dHR0dbV11XV0UnLCAvXFxkezR9V1xcZHszfS9dLFxuICAgICAgICBbJ0dHR0dbV11XVycsIC9cXGR7NH1XXFxkezJ9LywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVlEREQnLCAvXFxkezd9L11cbiAgICBdO1xuXG4gICAgLy8gaXNvIHRpbWUgZm9ybWF0cyBhbmQgcmVnZXhlc1xuICAgIHZhciBpc29UaW1lcyA9IFtcbiAgICAgICAgWydISDptbTpzcy5TU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICBbJ0hIOm1tOnNzLFNTU1MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQsXFxkKy9dLFxuICAgICAgICBbJ0hIOm1tOnNzJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgIFsnSEg6bW0nLCAvXFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIbW1zcy5TU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISG1tc3MsU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGQsXFxkKy9dLFxuICAgICAgICBbJ0hIbW1zcycsIC9cXGRcXGRcXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISG1tJywgL1xcZFxcZFxcZFxcZC9dLFxuICAgICAgICBbJ0hIJywgL1xcZFxcZC9dXG4gICAgXTtcblxuICAgIHZhciBhc3BOZXRKc29uUmVnZXggPSAvXlxcLz9EYXRlXFwoKFxcLT9cXGQrKS9pO1xuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSVNPKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgbCxcbiAgICAgICAgICAgIHN0cmluZyA9IGNvbmZpZy5faSxcbiAgICAgICAgICAgIG1hdGNoID0gZXh0ZW5kZWRJc29SZWdleC5leGVjKHN0cmluZykgfHwgYmFzaWNJc29SZWdleC5leGVjKHN0cmluZyksXG4gICAgICAgICAgICBhbGxvd1RpbWUsIGRhdGVGb3JtYXQsIHRpbWVGb3JtYXQsIHR6Rm9ybWF0O1xuXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaXNvID0gdHJ1ZTtcblxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb0RhdGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpc29EYXRlc1tpXVsxXS5leGVjKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ID0gaXNvRGF0ZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgIGFsbG93VGltZSA9IGlzb0RhdGVzW2ldWzJdICE9PSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGVGb3JtYXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaFszXSkge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29UaW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzb1RpbWVzW2ldWzFdLmV4ZWMobWF0Y2hbM10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaFsyXSBzaG91bGQgYmUgJ1QnIG9yIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ID0gKG1hdGNoWzJdIHx8ICcgJykgKyBpc29UaW1lc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aW1lRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFsbG93VGltZSAmJiB0aW1lRm9ybWF0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbNF0pIHtcbiAgICAgICAgICAgICAgICBpZiAodHpSZWdleC5leGVjKG1hdGNoWzRdKSkge1xuICAgICAgICAgICAgICAgICAgICB0ekZvcm1hdCA9ICdaJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZy5fZiA9IGRhdGVGb3JtYXQgKyAodGltZUZvcm1hdCB8fCAnJykgKyAodHpGb3JtYXQgfHwgJycpO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSRkMgMjgyMiByZWdleDogRm9yIGRldGFpbHMgc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zXG4gICAgdmFyIHJmYzI4MjIgPSAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9cXHMpPyhcXGR7MSwyfSlcXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXFxzKFxcZHsyLDR9KVxccyhcXGRcXGQpOihcXGRcXGQpKD86OihcXGRcXGQpKT9cXHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cXGR7NH0pKSQvO1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyh5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgdW50cnVuY2F0ZVllYXIoeWVhclN0ciksXG4gICAgICAgICAgICBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0ciksXG4gICAgICAgICAgICBwYXJzZUludChkYXlTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGhvdXJTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KG1pbnV0ZVN0ciwgMTApXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHNlY29uZFN0cikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VJbnQoc2Vjb25kU3RyLCAxMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bnRydW5jYXRlWWVhcih5ZWFyU3RyKSB7XG4gICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoeWVhclN0ciwgMTApO1xuICAgICAgICBpZiAoeWVhciA8PSA0OSkge1xuICAgICAgICAgICAgcmV0dXJuIDIwMDAgKyB5ZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKHllYXIgPD0gOTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTkwMCArIHllYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHllYXI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcHJvY2Vzc1JGQzI4MjIocykge1xuICAgICAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9cXChbXildKlxcKXxbXFxuXFx0XS9nLCAnICcpLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCAnICcpLnJlcGxhY2UoL15cXHNcXHMqLywgJycpLnJlcGxhY2UoL1xcc1xccyokLywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrV2Vla2RheSh3ZWVrZGF5U3RyLCBwYXJzZWRJbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmICh3ZWVrZGF5U3RyKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZXBsYWNlIHRoZSB2YW5pbGxhIEpTIERhdGUgb2JqZWN0IHdpdGggYW4gaW5kZXBlbnRlbnQgZGF5LW9mLXdlZWsgY2hlY2suXG4gICAgICAgICAgICB2YXIgd2Vla2RheVByb3ZpZGVkID0gZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSxcbiAgICAgICAgICAgICAgICB3ZWVrZGF5QWN0dWFsID0gbmV3IERhdGUocGFyc2VkSW5wdXRbMF0sIHBhcnNlZElucHV0WzFdLCBwYXJzZWRJbnB1dFsyXSkuZ2V0RGF5KCk7XG4gICAgICAgICAgICBpZiAod2Vla2RheVByb3ZpZGVkICE9PSB3ZWVrZGF5QWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIG9ic09mZnNldHMgPSB7XG4gICAgICAgIFVUOiAwLFxuICAgICAgICBHTVQ6IDAsXG4gICAgICAgIEVEVDogLTQgKiA2MCxcbiAgICAgICAgRVNUOiAtNSAqIDYwLFxuICAgICAgICBDRFQ6IC01ICogNjAsXG4gICAgICAgIENTVDogLTYgKiA2MCxcbiAgICAgICAgTURUOiAtNiAqIDYwLFxuICAgICAgICBNU1Q6IC03ICogNjAsXG4gICAgICAgIFBEVDogLTcgKiA2MCxcbiAgICAgICAgUFNUOiAtOCAqIDYwXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZU9mZnNldChvYnNPZmZzZXQsIG1pbGl0YXJ5T2Zmc2V0LCBudW1PZmZzZXQpIHtcbiAgICAgICAgaWYgKG9ic09mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIG9ic09mZnNldHNbb2JzT2Zmc2V0XTtcbiAgICAgICAgfSBlbHNlIGlmIChtaWxpdGFyeU9mZnNldCkge1xuICAgICAgICAgICAgLy8gdGhlIG9ubHkgYWxsb3dlZCBtaWxpdGFyeSB0eiBpcyBaXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBobSA9IHBhcnNlSW50KG51bU9mZnNldCwgMTApO1xuICAgICAgICAgICAgdmFyIG0gPSBobSAlIDEwMCwgaCA9IChobSAtIG0pIC8gMTAwO1xuICAgICAgICAgICAgcmV0dXJuIGggKiA2MCArIG07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGFuZCB0aW1lIGZyb20gcmVmIDI4MjIgZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHJmYzI4MjIuZXhlYyhwcmVwcm9jZXNzUkZDMjgyMihjb25maWcuX2kpKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICB2YXIgcGFyc2VkQXJyYXkgPSBleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzKG1hdGNoWzRdLCBtYXRjaFszXSwgbWF0Y2hbMl0sIG1hdGNoWzVdLCBtYXRjaFs2XSwgbWF0Y2hbN10pO1xuICAgICAgICAgICAgaWYgKCFjaGVja1dlZWtkYXkobWF0Y2hbMV0sIHBhcnNlZEFycmF5LCBjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25maWcuX2EgPSBwYXJzZWRBcnJheTtcbiAgICAgICAgICAgIGNvbmZpZy5fdHptID0gY2FsY3VsYXRlT2Zmc2V0KG1hdGNoWzhdLCBtYXRjaFs5XSwgbWF0Y2hbMTBdKTtcblxuICAgICAgICAgICAgY29uZmlnLl9kID0gY3JlYXRlVVRDRGF0ZS5hcHBseShudWxsLCBjb25maWcuX2EpO1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucmZjMjgyMiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0IG9yIGZhbGxiYWNrXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZyhjb25maWcpIHtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhjb25maWcuX2kpO1xuXG4gICAgICAgIGlmIChtYXRjaGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5hbCBhdHRlbXB0LCB1c2UgSW5wdXQgRmFsbGJhY2tcbiAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICB9XG5cbiAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3ZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCAnICtcbiAgICAgICAgJ3doaWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgYWxsIGJyb3dzZXJzIGFuZCB2ZXJzaW9ucy4gTm9uIFJGQzI4MjIvSVNPIGRhdGUgZm9ybWF0cyBhcmUgJyArXG4gICAgICAgICdkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byAnICtcbiAgICAgICAgJ2h0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLFxuICAgICAgICBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBJU08gc3RhbmRhcmRcbiAgICBob29rcy5JU09fODYwMSA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIFJGQyAyODIyIGZvcm1cbiAgICBob29rcy5SRkNfMjgyMiA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZ1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKSB7XG4gICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIGNyZWF0aW9uIGZsb3cgdG8gcHJldmVudCBjaXJjdWxhciBkZXBzXG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLklTT184NjAxKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuUkZDXzI4MjIpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlnLl9hID0gW107XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gdHJ1ZTtcblxuICAgICAgICAvLyBUaGlzIGFycmF5IGlzIHVzZWQgdG8gbWFrZSBhIERhdGUsIGVpdGhlciB3aXRoIGBuZXcgRGF0ZWAgb3IgYERhdGUuVVRDYFxuICAgICAgICB2YXIgc3RyaW5nID0gJycgKyBjb25maWcuX2ksXG4gICAgICAgICAgICBpLCBwYXJzZWRJbnB1dCwgdG9rZW5zLCB0b2tlbiwgc2tpcHBlZCxcbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMDtcblxuICAgICAgICB0b2tlbnMgPSBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSkubWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICBwYXJzZWRJbnB1dCA9IChzdHJpbmcubWF0Y2goZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2VuLCBjb25maWcpKSB8fCBbXSlbMF07XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndG9rZW4nLCB0b2tlbiwgJ3BhcnNlZElucHV0JywgcGFyc2VkSW5wdXQsXG4gICAgICAgICAgICAvLyAgICAgICAgICdyZWdleCcsIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkpO1xuICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChza2lwcGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCArPSBwYXJzZWRJbnB1dC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuXG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBwYXJzZWRJbnB1dCwgY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5fc3RyaWN0ICYmICFwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmdcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuY2hhcnNMZWZ0T3ZlciA9IHN0cmluZ0xlbmd0aCAtIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGg7XG4gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMgPD0gMTJcbiAgICAgICAgaWYgKGNvbmZpZy5fYVtIT1VSXSA8PSAxMiAmJlxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnBhcnNlZERhdGVQYXJ0cyA9IGNvbmZpZy5fYS5zbGljZSgwKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykubWVyaWRpZW0gPSBjb25maWcuX21lcmlkaWVtO1xuICAgICAgICAvLyBoYW5kbGUgbWVyaWRpZW1cbiAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gbWVyaWRpZW1GaXhXcmFwKGNvbmZpZy5fbG9jYWxlLCBjb25maWcuX2FbSE9VUl0sIGNvbmZpZy5fbWVyaWRpZW0pO1xuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbUZpeFdyYXAgKGxvY2FsZSwgaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgdmFyIGlzUG07XG5cbiAgICAgICAgaWYgKG1lcmlkaWVtID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIsIG1lcmlkaWVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFja1xuICAgICAgICAgICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTtcbiAgICAgICAgICAgIGlmIChpc1BtICYmIGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG0gJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgdGVtcENvbmZpZyxcbiAgICAgICAgICAgIGJlc3RNb21lbnQsXG5cbiAgICAgICAgICAgIHNjb3JlVG9CZWF0LFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5fZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY3VycmVudFNjb3JlID0gMDtcbiAgICAgICAgICAgIHRlbXBDb25maWcgPSBjb3B5Q29uZmlnKHt9LCBjb25maWcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnLl91c2VVVEMgPSBjb25maWcuX3VzZVVUQztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KHRlbXBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQodGVtcENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYW55IGlucHV0IHRoYXQgd2FzIG5vdCBwYXJzZWQgYWRkIGEgcGVuYWx0eSBmb3IgdGhhdCBmb3JtYXRcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuY2hhcnNMZWZ0T3ZlcjtcblxuICAgICAgICAgICAgLy9vciB0b2tlbnNcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykudW51c2VkVG9rZW5zLmxlbmd0aCAqIDEwO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuc2NvcmUgPSBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgICAgIGlmIChzY29yZVRvQmVhdCA9PSBudWxsIHx8IGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0KSB7XG4gICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgYmVzdE1vbWVudCA9IHRlbXBDb25maWc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmQoY29uZmlnLCBiZXN0TW9tZW50IHx8IHRlbXBDb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoY29uZmlnLl9pKTtcbiAgICAgICAgY29uZmlnLl9hID0gbWFwKFtpLnllYXIsIGkubW9udGgsIGkuZGF5IHx8IGkuZGF0ZSwgaS5ob3VyLCBpLm1pbnV0ZSwgaS5zZWNvbmQsIGkubWlsbGlzZWNvbmRdLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqICYmIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVGcm9tQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhwcmVwYXJlQ29uZmlnKGNvbmZpZykpKTtcbiAgICAgICAgaWYgKHJlcy5fbmV4dERheSkge1xuICAgICAgICAgICAgLy8gQWRkaW5nIGlzIHNtYXJ0IGVub3VnaCBhcm91bmQgRFNUXG4gICAgICAgICAgICByZXMuYWRkKDEsICdkJyk7XG4gICAgICAgICAgICByZXMuX25leHREYXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXBhcmVDb25maWcgKGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBmb3JtYXQgPSBjb25maWcuX2Y7XG5cbiAgICAgICAgY29uZmlnLl9sb2NhbGUgPSBjb25maWcuX2xvY2FsZSB8fCBnZXRMb2NhbGUoY29uZmlnLl9sKTtcblxuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgKGZvcm1hdCA9PT0gdW5kZWZpbmVkICYmIGlucHV0ID09PSAnJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKHtudWxsSW5wdXQ6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWcuX2kgPSBpbnB1dCA9IGNvbmZpZy5fbG9jYWxlLnByZXBhcnNlKGlucHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01vbWVudChpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBpbnB1dDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9ICBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pO1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShob29rcy5ub3coKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nKGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IG1hcChpbnB1dC5zbGljZSgwKSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tT2JqZWN0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsT3JVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBpc1VUQykge1xuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGlmIChsb2NhbGUgPT09IHRydWUgfHwgbG9jYWxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChpc09iamVjdChpbnB1dCkgJiYgaXNPYmplY3RFbXB0eShpbnB1dCkpIHx8XG4gICAgICAgICAgICAgICAgKGlzQXJyYXkoaW5wdXQpICYmIGlucHV0Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24gbXVzdCBiZSBkb25lIHRoaXMgd2F5LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQyM1xuICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlO1xuICAgICAgICBjLl91c2VVVEMgPSBjLl9pc1VUQyA9IGlzVVRDO1xuICAgICAgICBjLl9sID0gbG9jYWxlO1xuICAgICAgICBjLl9pID0gaW5wdXQ7XG4gICAgICAgIGMuX2YgPSBmb3JtYXQ7XG4gICAgICAgIGMuX3N0cmljdCA9IHN0cmljdDtcblxuICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUNvbmZpZyhjKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbCAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlTWluID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8nLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA8IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgdmFyIHByb3RvdHlwZU1heCA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPiB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIFBpY2sgYSBtb21lbnQgbSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBmb3IgYWxsXG4gICAgLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5jdGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLlxuICAgIC8vXG4gICAgLy8gbW9tZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzIG9yIGFuIGFycmF5LCB3aG9zZVxuICAgIC8vIGZpcnN0IGVsZW1lbnQgaXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuXG4gICAgZnVuY3Rpb24gcGlja0J5KGZuLCBtb21lbnRzKSB7XG4gICAgICAgIHZhciByZXMsIGk7XG4gICAgICAgIGlmIChtb21lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0FycmF5KG1vbWVudHNbMF0pKSB7XG4gICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1swXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMgPSBtb21lbnRzWzBdO1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbW9tZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRzW2ldLmlzVmFsaWQoKSB8fCBtb21lbnRzW2ldW2ZuXShyZXMpKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gbW9tZW50c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBbXS5zb3J0IGluc3RlYWQ/XG4gICAgZnVuY3Rpb24gbWluICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNCZWZvcmUnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXggKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0FmdGVyJywgYXJncyk7XG4gICAgfVxuXG4gICAgdmFyIG5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIERhdGUubm93ID8gRGF0ZS5ub3coKSA6ICsobmV3IERhdGUoKSk7XG4gICAgfTtcblxuICAgIHZhciBvcmRlcmluZyA9IFsneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdtaWxsaXNlY29uZCddO1xuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvblZhbGlkKG0pIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG0pIHtcbiAgICAgICAgICAgIGlmICghKGluZGV4T2YuY2FsbChvcmRlcmluZywga2V5KSAhPT0gLTEgJiYgKG1ba2V5XSA9PSBudWxsIHx8ICFpc05hTihtW2tleV0pKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdW5pdEhhc0RlY2ltYWwgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmRlcmluZy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKG1bb3JkZXJpbmdbaV1dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVuaXRIYXNEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gb25seSBhbGxvdyBub24taW50ZWdlcnMgZm9yIHNtYWxsZXN0IHVuaXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlRmxvYXQobVtvcmRlcmluZ1tpXV0pICE9PSB0b0ludChtW29yZGVyaW5nW2ldXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pdEhhc0RlY2ltYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oTmFOKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBEdXJhdGlvbiAoZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSxcbiAgICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCxcbiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCxcbiAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1dC5tb250aCB8fCAwLFxuICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVkSW5wdXQud2VlayB8fCAwLFxuICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCxcbiAgICAgICAgICAgIGhvdXJzID0gbm9ybWFsaXplZElucHV0LmhvdXIgfHwgMCxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBub3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsXG4gICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kIHx8IDA7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzRHVyYXRpb25WYWxpZChub3JtYWxpemVkSW5wdXQpO1xuXG4gICAgICAgIC8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9ICttaWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgc2Vjb25kcyAqIDFlMyArIC8vIDEwMDBcbiAgICAgICAgICAgIG1pbnV0ZXMgKiA2ZTQgKyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGhvdXJzICogMTAwMCAqIDYwICogNjA7IC8vdXNpbmcgMTAwMCAqIDYwICogNjAgaW5zdGVhZCBvZiAzNmU1IHRvIGF2b2lkIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjk3OFxuICAgICAgICAvLyBCZWNhdXNlIG9mIGRhdGVBZGRSZW1vdmUgdHJlYXRzIDI0IGhvdXJzIGFzIGRpZmZlcmVudCBmcm9tIGFcbiAgICAgICAgLy8gZGF5IHdoZW4gd29ya2luZyBhcm91bmQgRFNULCB3ZSBuZWVkIHRvIHN0b3JlIHRoZW0gc2VwYXJhdGVseVxuICAgICAgICB0aGlzLl9kYXlzID0gK2RheXMgK1xuICAgICAgICAgICAgd2Vla3MgKiA3O1xuICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRvIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZ1xuICAgICAgICAvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwgc28gd2UgaGF2ZSB0byBzdG9yZVxuICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LlxuICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICtcbiAgICAgICAgICAgIHF1YXJ0ZXJzICogMyArXG4gICAgICAgICAgICB5ZWFycyAqIDEyO1xuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcblxuICAgICAgICB0aGlzLl9sb2NhbGUgPSBnZXRMb2NhbGUoKTtcblxuICAgICAgICB0aGlzLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uIChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic1JvdW5kIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKC0xICogbnVtYmVyKSAqIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIG9mZnNldCAodG9rZW4sIHNlcGFyYXRvcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMudXRjT2Zmc2V0KCk7XG4gICAgICAgICAgICB2YXIgc2lnbiA9ICcrJztcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDtcbiAgICAgICAgICAgICAgICBzaWduID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyB6ZXJvRmlsbCh+fihvZmZzZXQgLyA2MCksIDIpICsgc2VwYXJhdG9yICsgemVyb0ZpbGwofn4ob2Zmc2V0KSAlIDYwLCAyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb2Zmc2V0KCdaJywgJzonKTtcbiAgICBvZmZzZXQoJ1paJywgJycpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWicsICBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7XG4gICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyB0aW1lem9uZSBjaHVua2VyXG4gICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddXG4gICAgLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddXG4gICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXFwrXFwtXXxcXGRcXGQpL2dpO1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKTtcblxuICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2h1bmsgICA9IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXSB8fCBbXTtcbiAgICAgICAgdmFyIHBhcnRzICAgPSAoY2h1bmsgKyAnJykubWF0Y2goY2h1bmtPZmZzZXQpIHx8IFsnLScsIDAsIDBdO1xuICAgICAgICB2YXIgbWludXRlcyA9ICsocGFydHNbMV0gKiA2MCkgKyB0b0ludChwYXJ0c1syXSk7XG5cbiAgICAgICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgP1xuICAgICAgICAgIDAgOlxuICAgICAgICAgIHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIG1vZGVsKSB7XG4gICAgICAgIHZhciByZXMsIGRpZmY7XG4gICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHtcbiAgICAgICAgICAgIHJlcyA9IG1vZGVsLmNsb25lKCk7XG4gICAgICAgICAgICBkaWZmID0gKGlzTW9tZW50KGlucHV0KSB8fCBpc0RhdGUoaW5wdXQpID8gaW5wdXQudmFsdWVPZigpIDogY3JlYXRlTG9jYWwoaW5wdXQpLnZhbHVlT2YoKSkgLSByZXMudmFsdWVPZigpO1xuICAgICAgICAgICAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLlxuICAgICAgICAgICAgcmVzLl9kLnNldFRpbWUocmVzLl9kLnZhbHVlT2YoKSArIGRpZmYpO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHJlcywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCkubG9jYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERhdGVPZmZzZXQgKG0pIHtcbiAgICAgICAgLy8gT24gRmlyZWZveC4yNCBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgYSBmbG9hdGluZyBwb2ludC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvcHVsbC8xODcxXG4gICAgICAgIHJldHVybiAtTWF0aC5yb3VuZChtLl9kLmdldFRpbWV6b25lT2Zmc2V0KCkgLyAxNSkgKiAxNTtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLlxuICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuICAgIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4gICAgLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT5cbiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0XG4gICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuICAgIC8vXG4gICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpXG4gICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4gICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpblxuICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZVxuICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG4gICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0IChpbnB1dCwga2VlcExvY2FsVGltZSwga2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuX29mZnNldCB8fCAwLFxuICAgICAgICAgICAgbG9jYWxBZGp1c3Q7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGlucHV0KSA8IDE2ICYmICFrZWVwTWludXRlcykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgKiA2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIGxvY2FsQWRqdXN0ID0gZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29mZnNldCA9IGlucHV0O1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGxvY2FsQWRqdXN0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZChsb2NhbEFkanVzdCwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzZXQgIT09IGlucHV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFrZWVwTG9jYWxUaW1lIHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkU3VidHJhY3QodGhpcywgY3JlYXRlRHVyYXRpb24oaW5wdXQgLSBvZmZzZXQsICdtJyksIDEsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gb2Zmc2V0IDogZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFpvbmUgKGlucHV0LCBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gLWlucHV0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldChpbnB1dCwga2VlcExvY2FsVGltZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC10aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9VVEMgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdChnZXREYXRlT2Zmc2V0KHRoaXMpLCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0ICgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3R6bSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0aGlzLl90em0sIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5faSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhciB0Wm9uZSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hPZmZzZXQsIHRoaXMuX2kpO1xuICAgICAgICAgICAgaWYgKHRab25lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0Wm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9mZnNldCAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0ID0gaW5wdXQgPyBjcmVhdGVMb2NhbChpbnB1dCkudXRjT2Zmc2V0KCkgOiAwO1xuXG4gICAgICAgIHJldHVybiAodGhpcy51dGNPZmZzZXQoKSAtIGlucHV0KSAlIDYwID09PSAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCkgfHxcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWQgKCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX2lzRFNUU2hpZnRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGNvcHlDb25maWcoYywgdGhpcyk7XG4gICAgICAgIGMgPSBwcmVwYXJlQ29uZmlnKGMpO1xuXG4gICAgICAgIGlmIChjLl9hKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjLl9pc1VUQyA/IGNyZWF0ZVVUQyhjLl9hKSA6IGNyZWF0ZUxvY2FsKGMuX2EpO1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICBjb21wYXJlQXJyYXlzKGMuX2EsIG90aGVyLnRvQXJyYXkoKSkgPiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTG9jYWwgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyAhdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0Y09mZnNldCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGMgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyAmJiB0aGlzLl9vZmZzZXQgPT09IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBBU1AuTkVUIGpzb24gZGF0ZSBmb3JtYXQgcmVnZXhcbiAgICB2YXIgYXNwTmV0UmVnZXggPSAvXihcXC18XFwrKT8oPzooXFxkKilbLiBdKT8oXFxkKylcXDooXFxkKykoPzpcXDooXFxkKykoXFwuXFxkKik/KT8kLztcblxuICAgIC8vIGZyb20gaHR0cDovL2RvY3MuY2xvc3VyZS1saWJyYXJ5Lmdvb2dsZWNvZGUuY29tL2dpdC9jbG9zdXJlX2dvb2dfZGF0ZV9kYXRlLmpzLnNvdXJjZS5odG1sXG4gICAgLy8gc29tZXdoYXQgbW9yZSBpbiBsaW5lIHdpdGggNC40LjMuMiAyMDA0IHNwZWMsIGJ1dCBhbGxvd3MgZGVjaW1hbCBhbnl3aGVyZVxuICAgIC8vIGFuZCBmdXJ0aGVyIG1vZGlmaWVkIHRvIGFsbG93IGZvciBzdHJpbmdzIGNvbnRhaW5pbmcgYm90aCB3ZWVrIGFuZCBkYXlcbiAgICB2YXIgaXNvUmVnZXggPSAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRHVyYXRpb24gKGlucHV0LCBrZXkpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gaW5wdXQsXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBhZ2FpbnN0IHJlZ2V4cCBpcyBleHBlbnNpdmUsIGRvIGl0IG9uIGRlbWFuZFxuICAgICAgICAgICAgbWF0Y2ggPSBudWxsLFxuICAgICAgICAgICAgc2lnbixcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgIGRpZmZSZXM7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBtcyA6IGlucHV0Ll9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICAgICAgZCAgOiBpbnB1dC5fZGF5cyxcbiAgICAgICAgICAgICAgICBNICA6IGlucHV0Ll9tb250aHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSBpbnB1dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb24ubWlsbGlzZWNvbmRzID0gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBhc3BOZXRSZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5ICA6IDAsXG4gICAgICAgICAgICAgICAgZCAgOiB0b0ludChtYXRjaFtEQVRFXSkgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIGggIDogdG9JbnQobWF0Y2hbSE9VUl0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtICA6IHRvSW50KG1hdGNoW01JTlVURV0pICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgcyAgOiB0b0ludChtYXRjaFtTRUNPTkRdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIG1zIDogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICogMTAwMCkpICogc2lnbiAvLyB0aGUgbWlsbGlzZWNvbmQgZGVjaW1hbCBwb2ludCBpcyBpbmNsdWRlZCBpbiB0aGUgbWF0Y2hcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBpc29SZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IChtYXRjaFsxXSA9PT0gJysnKSA/IDEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSA6IHBhcnNlSXNvKG1hdGNoWzJdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBNIDogcGFyc2VJc28obWF0Y2hbM10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHcgOiBwYXJzZUlzbyhtYXRjaFs0XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgZCA6IHBhcnNlSXNvKG1hdGNoWzVdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBoIDogcGFyc2VJc28obWF0Y2hbNl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIG0gOiBwYXJzZUlzbyhtYXRjaFs3XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgcyA6IHBhcnNlSXNvKG1hdGNoWzhdLCBzaWduKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7Ly8gY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb24gPT09ICdvYmplY3QnICYmICgnZnJvbScgaW4gZHVyYXRpb24gfHwgJ3RvJyBpbiBkdXJhdGlvbikpIHtcbiAgICAgICAgICAgIGRpZmZSZXMgPSBtb21lbnRzRGlmZmVyZW5jZShjcmVhdGVMb2NhbChkdXJhdGlvbi5mcm9tKSwgY3JlYXRlTG9jYWwoZHVyYXRpb24udG8pKTtcblxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGR1cmF0aW9uLm1zID0gZGlmZlJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICBkdXJhdGlvbi5NID0gZGlmZlJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXQgPSBuZXcgRHVyYXRpb24oZHVyYXRpb24pO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7XG4gICAgICAgICAgICByZXQuX2xvY2FsZSA9IGlucHV0Ll9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGNyZWF0ZUR1cmF0aW9uLmZuID0gRHVyYXRpb24ucHJvdG90eXBlO1xuICAgIGNyZWF0ZUR1cmF0aW9uLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkJDE7XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzbyAoaW5wLCBzaWduKSB7XG4gICAgICAgIC8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvXG4gICAgICAgIC8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLlxuICAgICAgICAvLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuXG4gICAgICAgIHZhciByZXMgPSBpbnAgJiYgcGFyc2VGbG9hdChpbnAucmVwbGFjZSgnLCcsICcuJykpO1xuICAgICAgICAvLyBhcHBseSBzaWduIHdoaWxlIHdlJ3JlIGF0IGl0XG4gICAgICAgIHJldHVybiAoaXNOYU4ocmVzKSA/IDAgOiByZXMpICogc2lnbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXMgPSB7bWlsbGlzZWNvbmRzOiAwLCBtb250aHM6IDB9O1xuXG4gICAgICAgIHJlcy5tb250aHMgPSBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICtcbiAgICAgICAgICAgIChvdGhlci55ZWFyKCkgLSBiYXNlLnllYXIoKSkgKiAxMjtcbiAgICAgICAgaWYgKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKS5pc0FmdGVyKG90aGVyKSkge1xuICAgICAgICAgICAgLS1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9ICtvdGhlciAtICsoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIGlmICghKGJhc2UuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7bWlsbGlzZWNvbmRzOiAwLCBtb250aHM6IDB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb3RoZXIgPSBjbG9uZVdpdGhPZmZzZXQob3RoZXIsIGJhc2UpO1xuICAgICAgICBpZiAoYmFzZS5pc0JlZm9yZShvdGhlcikpIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShvdGhlciwgYmFzZSk7XG4gICAgICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gLXJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICByZXMubW9udGhzID0gLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHJlbW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWRcbiAgICBmdW5jdGlvbiBjcmVhdGVBZGRlcihkaXJlY3Rpb24sIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWwsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIGR1ciwgdG1wO1xuICAgICAgICAgICAgLy9pbnZlcnQgdGhlIGFyZ3VtZW50cywgYnV0IGNvbXBsYWluIGFib3V0IGl0XG4gICAgICAgICAgICBpZiAocGVyaW9kICE9PSBudWxsICYmICFpc05hTigrcGVyaW9kKSkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZShuYW1lLCAnbW9tZW50KCkuJyArIG5hbWUgICsgJyhwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4nICsgbmFtZSArICcobnVtYmVyLCBwZXJpb2QpLiAnICtcbiAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHRtcCA9IHZhbDsgdmFsID0gcGVyaW9kOyBwZXJpb2QgPSB0bXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbCA9IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gK3ZhbCA6IHZhbDtcbiAgICAgICAgICAgIGR1ciA9IGNyZWF0ZUR1cmF0aW9uKHZhbCwgcGVyaW9kKTtcbiAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGR1ciwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0IChtb20sIGR1cmF0aW9uLCBpc0FkZGluZywgdXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IGFic1JvdW5kKGR1cmF0aW9uLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFic1JvdW5kKGR1cmF0aW9uLl9tb250aHMpO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZU9mZnNldCA9IHVwZGF0ZU9mZnNldCA9PSBudWxsID8gdHJ1ZSA6IHVwZGF0ZU9mZnNldDtcblxuICAgICAgICBpZiAobW9udGhzKSB7XG4gICAgICAgICAgICBzZXRNb250aChtb20sIGdldChtb20sICdNb250aCcpICsgbW9udGhzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXlzKSB7XG4gICAgICAgICAgICBzZXQkMShtb20sICdEYXRlJywgZ2V0KG1vbSwgJ0RhdGUnKSArIGRheXMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICAgICAgbW9tLl9kLnNldFRpbWUobW9tLl9kLnZhbHVlT2YoKSArIG1pbGxpc2Vjb25kcyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQobW9tLCBkYXlzIHx8IG1vbnRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYWRkICAgICAgPSBjcmVhdGVBZGRlcigxLCAnYWRkJyk7XG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlQWRkZXIoLTEsICdzdWJ0cmFjdCcpO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q2FsZW5kYXJGb3JtYXQobXlNb21lbnQsIG5vdykge1xuICAgICAgICB2YXIgZGlmZiA9IG15TW9tZW50LmRpZmYobm93LCAnZGF5cycsIHRydWUpO1xuICAgICAgICByZXR1cm4gZGlmZiA8IC02ID8gJ3NhbWVFbHNlJyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IC0xID8gJ2xhc3RXZWVrJyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDAgPyAnbGFzdERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAxID8gJ3NhbWVEYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMiA/ICduZXh0RGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDcgPyAnbmV4dFdlZWsnIDogJ3NhbWVFbHNlJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciQxICh0aW1lLCBmb3JtYXRzKSB7XG4gICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuXG4gICAgICAgIC8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90LlxuICAgICAgICB2YXIgbm93ID0gdGltZSB8fCBjcmVhdGVMb2NhbCgpLFxuICAgICAgICAgICAgc29kID0gY2xvbmVXaXRoT2Zmc2V0KG5vdywgdGhpcykuc3RhcnRPZignZGF5JyksXG4gICAgICAgICAgICBmb3JtYXQgPSBob29rcy5jYWxlbmRhckZvcm1hdCh0aGlzLCBzb2QpIHx8ICdzYW1lRWxzZSc7XG5cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdHMgJiYgKGlzRnVuY3Rpb24oZm9ybWF0c1tmb3JtYXRdKSA/IGZvcm1hdHNbZm9ybWF0XS5jYWxsKHRoaXMsIG5vdykgOiBmb3JtYXRzW2Zvcm1hdF0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBjcmVhdGVMb2NhbChub3cpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IE1vbWVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyghaXNVbmRlZmluZWQodW5pdHMpID8gdW5pdHMgOiAnbWlsbGlzZWNvbmQnKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPiBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbElucHV0LnZhbHVlT2YoKSA8IHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHMoIWlzVW5kZWZpbmVkKHVuaXRzKSA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmV0d2VlbiAoZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkge1xuICAgICAgICBpbmNsdXNpdml0eSA9IGluY2x1c2l2aXR5IHx8ICcoKSc7XG4gICAgICAgIHJldHVybiAoaW5jbHVzaXZpdHlbMF0gPT09ICcoJyA/IHRoaXMuaXNBZnRlcihmcm9tLCB1bml0cykgOiAhdGhpcy5pc0JlZm9yZShmcm9tLCB1bml0cykpICYmXG4gICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJyA/IHRoaXMuaXNCZWZvcmUodG8sIHVuaXRzKSA6ICF0aGlzLmlzQWZ0ZXIodG8sIHVuaXRzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KSxcbiAgICAgICAgICAgIGlucHV0TXM7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMgfHwgJ21pbGxpc2Vjb25kJyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID09PSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0TXMgPSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQWZ0ZXIgKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQWZ0ZXIoaW5wdXQsdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQmVmb3JlIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0JlZm9yZShpbnB1dCx1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGlmZiAoaW5wdXQsIHVuaXRzLCBhc0Zsb2F0KSB7XG4gICAgICAgIHZhciB0aGF0LFxuICAgICAgICAgICAgem9uZURlbHRhLFxuICAgICAgICAgICAgb3V0cHV0O1xuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGF0ID0gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCB0aGlzKTtcblxuICAgICAgICBpZiAoIXRoYXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgem9uZURlbHRhID0gKHRoYXQudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSAqIDZlNDtcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMTI7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCk7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDM7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDFlMzsgYnJlYWs7IC8vIDEwMDBcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyA2ZTQ7IGJyZWFrOyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMzZlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwXG4gICAgICAgICAgICBjYXNlICdkYXknOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gODY0ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDYwNDhlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQgKiA3LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBkZWZhdWx0OiBvdXRwdXQgPSB0aGlzIC0gdGhhdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc0Zsb2F0ID8gb3V0cHV0IDogYWJzRmxvb3Iob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aERpZmYgKGEsIGIpIHtcbiAgICAgICAgLy8gZGlmZmVyZW5jZSBpbiBtb250aHNcbiAgICAgICAgdmFyIHdob2xlTW9udGhEaWZmID0gKChiLnllYXIoKSAtIGEueWVhcigpKSAqIDEyKSArIChiLm1vbnRoKCkgLSBhLm1vbnRoKCkpLFxuICAgICAgICAgICAgLy8gYiBpcyBpbiAoYW5jaG9yIC0gMSBtb250aCwgYW5jaG9yICsgMSBtb250aClcbiAgICAgICAgICAgIGFuY2hvciA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYsICdtb250aHMnKSxcbiAgICAgICAgICAgIGFuY2hvcjIsIGFkanVzdDtcblxuICAgICAgICBpZiAoYiAtIGFuY2hvciA8IDApIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmIC0gMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IgLSBhbmNob3IyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmICsgMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IyIC0gYW5jaG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgZm9yIG5lZ2F0aXZlIHplcm8sIHJldHVybiB6ZXJvIGlmIG5lZ2F0aXZlIHplcm9cbiAgICAgICAgcmV0dXJuIC0od2hvbGVNb250aERpZmYgKyBhZGp1c3QpIHx8IDA7XG4gICAgfVxuXG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzW1pdJztcblxuICAgIGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nKGtlZXBPZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHV0YyA9IGtlZXBPZmZzZXQgIT09IHRydWU7XG4gICAgICAgIHZhciBtID0gdXRjID8gdGhpcy5jbG9uZSgpLnV0YygpIDogdGhpcztcbiAgICAgICAgaWYgKG0ueWVhcigpIDwgMCB8fCBtLnllYXIoKSA+IDk5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkge1xuICAgICAgICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW5cbiAgICAgICAgICAgIGlmICh1dGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkgKyB0aGlzLnV0Y09mZnNldCgpICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLnJlcGxhY2UoJ1onLCBmb3JtYXRNb21lbnQobSwgJ1onKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChtLCB1dGMgPyAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIG1vbWVudCB0aGF0IGNhblxuICAgICAqIGFsc28gYmUgZXZhbHVhdGVkIHRvIGdldCBhIG5ldyBtb21lbnQgd2hpY2ggaXMgdGhlIHNhbWVcbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC9kb2NzL2FwaS91dGlsLmh0bWwjdXRpbF9jdXN0b21faW5zcGVjdF9mdW5jdGlvbl9vbl9vYmplY3RzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnbW9tZW50LmludmFsaWQoLyogJyArIHRoaXMuX2kgKyAnICovKSc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZ1bmMgPSAnbW9tZW50JztcbiAgICAgICAgdmFyIHpvbmUgPSAnJztcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9jYWwoKSkge1xuICAgICAgICAgICAgZnVuYyA9IHRoaXMudXRjT2Zmc2V0KCkgPT09IDAgPyAnbW9tZW50LnV0YycgOiAnbW9tZW50LnBhcnNlWm9uZSc7XG4gICAgICAgICAgICB6b25lID0gJ1onO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmVmaXggPSAnWycgKyBmdW5jICsgJyhcIl0nO1xuICAgICAgICB2YXIgeWVhciA9ICgwIDw9IHRoaXMueWVhcigpICYmIHRoaXMueWVhcigpIDw9IDk5OTkpID8gJ1lZWVknIDogJ1lZWVlZWSc7XG4gICAgICAgIHZhciBkYXRldGltZSA9ICctTU0tRERbVF1ISDptbTpzcy5TU1MnO1xuICAgICAgICB2YXIgc3VmZml4ID0gem9uZSArICdbXCIpXSc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KHByZWZpeCArIHllYXIgKyBkYXRldGltZSArIHN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZm9ybWF0IChpbnB1dFN0cmluZykge1xuICAgICAgICBpZiAoIWlucHV0U3RyaW5nKSB7XG4gICAgICAgICAgICBpbnB1dFN0cmluZyA9IHRoaXMuaXNVdGMoKSA/IGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgOiBob29rcy5kZWZhdWx0Rm9ybWF0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRNb21lbnQodGhpcywgaW5wdXRTdHJpbmcpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb20gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHt0bzogdGhpcywgZnJvbTogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb21Ob3cgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbShjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0byAodGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fFxuICAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oe2Zyb206IHRoaXMsIHRvOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Ob3cgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgLy8gSWYgcGFzc2VkIGEgbG9jYWxlIGtleSwgaXQgd2lsbCBzZXQgdGhlIGxvY2FsZSBmb3IgdGhpc1xuICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbiAgICAvLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuXG4gICAgZnVuY3Rpb24gbG9jYWxlIChrZXkpIHtcbiAgICAgICAgdmFyIG5ld0xvY2FsZURhdGE7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TG9jYWxlRGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4nLFxuICAgICAgICBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZURhdGEgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0T2YgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAvLyB0aGUgZm9sbG93aW5nIHN3aXRjaCBpbnRlbnRpb25hbGx5IG9taXRzIGJyZWFrIGtleXdvcmRzXG4gICAgICAgIC8vIHRvIHV0aWxpemUgZmFsbGluZyB0aHJvdWdoIHRoZSBjYXNlcy5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGhpcy5tb250aCgwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGUoMSk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJzKDApO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRoaXMubWludXRlcygwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kcygwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMubWlsbGlzZWNvbmRzKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2Vla3MgYXJlIGEgc3BlY2lhbCBjYXNlXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ3dlZWsnKSB7XG4gICAgICAgICAgICB0aGlzLndlZWtkYXkoMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuaXRzID09PSAnaXNvV2VlaycpIHtcbiAgICAgICAgICAgIHRoaXMuaXNvV2Vla2RheSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHF1YXJ0ZXJzIGFyZSBhbHNvIHNwZWNpYWxcbiAgICAgICAgaWYgKHVuaXRzID09PSAncXVhcnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGgoTWF0aC5mbG9vcih0aGlzLm1vbnRoKCkgLyAzKSAqIDMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kT2YgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAnZGF0ZScgaXMgYW4gYWxpYXMgZm9yICdkYXknLCBzbyBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBzdWNoLlxuICAgICAgICBpZiAodW5pdHMgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgdW5pdHMgPSAnZGF5JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0T2YodW5pdHMpLmFkZCgxLCAodW5pdHMgPT09ICdpc29XZWVrJyA/ICd3ZWVrJyA6IHVuaXRzKSkuc3VidHJhY3QoMSwgJ21zJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsdWVPZiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kLnZhbHVlT2YoKSAtICgodGhpcy5fb2Zmc2V0IHx8IDApICogNjAwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaXggKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRGF0ZSAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9BcnJheSAoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFttLnllYXIoKSwgbS5tb250aCgpLCBtLmRhdGUoKSwgbS5ob3VyKCksIG0ubWludXRlKCksIG0uc2Vjb25kKCksIG0ubWlsbGlzZWNvbmQoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9PYmplY3QgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyczogbS55ZWFyKCksXG4gICAgICAgICAgICBtb250aHM6IG0ubW9udGgoKSxcbiAgICAgICAgICAgIGRhdGU6IG0uZGF0ZSgpLFxuICAgICAgICAgICAgaG91cnM6IG0uaG91cnMoKSxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG0ubWludXRlcygpLFxuICAgICAgICAgICAgc2Vjb25kczogbS5zZWNvbmRzKCksXG4gICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgICAgICAvLyBuZXcgRGF0ZShOYU4pLnRvSlNPTigpID09PSBudWxsXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJpbmcoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2luZ0ZsYWdzICgpIHtcbiAgICAgICAgcmV0dXJuIGV4dGVuZCh7fSwgZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkQXQgKCkge1xuICAgICAgICByZXR1cm4gZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpLm92ZXJmbG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0aW9uRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlucHV0OiB0aGlzLl9pLFxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9mLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9sb2NhbGUsXG4gICAgICAgICAgICBpc1VUQzogdGhpcy5faXNVVEMsXG4gICAgICAgICAgICBzdHJpY3Q6IHRoaXMuX3N0cmljdFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnZ2cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53ZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydHRycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhZGRXZWVrWWVhckZvcm1hdFRva2VuICh0b2tlbiwgZ2V0dGVyKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKDAsIFt0b2tlbiwgdG9rZW4ubGVuZ3RoXSwgMCwgZ2V0dGVyKTtcbiAgICB9XG5cbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnJywgICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2dnJywgICAgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHRycsICAnaXNvV2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHRycsICdpc29XZWVrWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrWWVhcicsICdnZycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla1llYXInLCAnR0cnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtZZWFyJywgMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrWWVhcicsIDEpO1xuXG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdHJywgICAgICBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignZycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdnZycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHRycsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHRycsICBtYXRjaDF0bzYsIG1hdGNoNik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZ2cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZ2dnJywgJ2dnZ2dnJywgJ0dHR0cnLCAnR0dHR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDIpXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2cnLCAnR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW5dID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrKCksXG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5KCksXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2Vla1llYXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsXG4gICAgICAgICAgICAgICAgaW5wdXQsIHRoaXMuaXNvV2VlaygpLCB0aGlzLmlzb1dlZWtkYXkoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIgKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgd2Vla0luZm8uZG93LCB3ZWVrSW5mby5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFySGVscGVyKGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla3NUYXJnZXQ7XG4gICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla09mWWVhcih0aGlzLCBkb3csIGRveSkueWVhcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdlZWtzVGFyZ2V0ID0gd2Vla3NJblllYXIoaW5wdXQsIGRvdywgZG95KTtcbiAgICAgICAgICAgIGlmICh3ZWVrID4gd2Vla3NUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB3ZWVrID0gd2Vla3NUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2V0V2Vla0FsbC5jYWxsKHRoaXMsIGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRXZWVrQWxsKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyRGF0YSA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoZGF5T2ZZZWFyRGF0YS55ZWFyLCAwLCBkYXlPZlllYXJEYXRhLmRheU9mWWVhcik7XG5cbiAgICAgICAgdGhpcy55ZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgICAgIHRoaXMubW9udGgoZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICAgICAgdGhpcy5kYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1EnLCAwLCAnUW8nLCAncXVhcnRlcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdxdWFydGVyJywgJ1EnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3F1YXJ0ZXInLCA3KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1EnLCBtYXRjaDEpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1EnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01PTlRIXSA9ICh0b0ludChpbnB1dCkgLSAxKSAqIDM7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRRdWFydGVyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IE1hdGguY2VpbCgodGhpcy5tb250aCgpICsgMSkgLyAzKSA6IHRoaXMubW9udGgoKGlucHV0IC0gMSkgKiAzICsgdGhpcy5tb250aCgpICUgMyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0QnLCBbJ0REJywgMl0sICdEbycsICdkYXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RhdGUnLCAnRCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RhdGUnLCA5KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0QnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdERCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID9cbiAgICAgICAgICAobG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIHx8IGxvY2FsZS5fb3JkaW5hbFBhcnNlKSA6XG4gICAgICAgICAgbG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudDtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydEJywgJ0REJ10sIERBVEUpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtEQVRFXSA9IHRvSW50KGlucHV0Lm1hdGNoKG1hdGNoMXRvMilbMF0pO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldERheU9mTW9udGggPSBtYWtlR2V0U2V0KCdEYXRlJywgdHJ1ZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydEREREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXlPZlllYXInLCAnREREJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5T2ZZZWFyJywgNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEREQnLCAgbWF0Y2gxdG8zKTtcbiAgICBhZGRSZWdleFRva2VuKCdEREREJywgbWF0Y2gzKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnREREJywgJ0REREQnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZZZWFyIChpbnB1dCkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyID0gTWF0aC5yb3VuZCgodGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpIC0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ3llYXInKSkgLyA4NjRlNSkgKyAxO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGRheU9mWWVhciA6IHRoaXMuYWRkKChpbnB1dCAtIGRheU9mWWVhciksICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ20nLCBbJ21tJywgMl0sIDAsICdtaW51dGUnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWludXRlJywgJ20nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbnV0ZScsIDE0KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ20nLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnc2Vjb25kJywgMTUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigncycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3NzJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydzJywgJ3NzJ10sIFNFQ09ORCk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0U2Vjb25kID0gbWFrZUdldFNldCgnU2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdTJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTAwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1MnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1MnLCAzXSwgMCwgJ21pbGxpc2Vjb25kJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTJywgNF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1MnLCA1XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTJywgNl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTJywgN10sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1MnLCA4XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1NTJywgOV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDA7XG4gICAgfSk7XG5cblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWlsbGlzZWNvbmQnLCAnbXMnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbGxpc2Vjb25kJywgMTYpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUycsICAgIG1hdGNoMXRvMywgbWF0Y2gxKTtcbiAgICBhZGRSZWdleFRva2VuKCdTUycsICAgbWF0Y2gxdG8zLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1NTUycsICBtYXRjaDF0bzMsIG1hdGNoMyk7XG5cbiAgICB2YXIgdG9rZW47XG4gICAgZm9yICh0b2tlbiA9ICdTU1NTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykge1xuICAgICAgICBhZGRSZWdleFRva2VuKHRva2VuLCBtYXRjaFVuc2lnbmVkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU1zKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNSUxMSVNFQ09ORF0gPSB0b0ludCgoJzAuJyArIGlucHV0KSAqIDEwMDApO1xuICAgIH1cblxuICAgIGZvciAodG9rZW4gPSAnUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgcGFyc2VNcyk7XG4gICAgfVxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VHZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd6JywgIDAsIDAsICd6b25lQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd6eicsIDAsIDAsICd6b25lTmFtZScpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0Wm9uZUFiYnIgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1lICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ0Nvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE1vbWVudC5wcm90b3R5cGU7XG5cbiAgICBwcm90by5hZGQgICAgICAgICAgICAgICA9IGFkZDtcbiAgICBwcm90by5jYWxlbmRhciAgICAgICAgICA9IGNhbGVuZGFyJDE7XG4gICAgcHJvdG8uY2xvbmUgICAgICAgICAgICAgPSBjbG9uZTtcbiAgICBwcm90by5kaWZmICAgICAgICAgICAgICA9IGRpZmY7XG4gICAgcHJvdG8uZW5kT2YgICAgICAgICAgICAgPSBlbmRPZjtcbiAgICBwcm90by5mb3JtYXQgICAgICAgICAgICA9IGZvcm1hdDtcbiAgICBwcm90by5mcm9tICAgICAgICAgICAgICA9IGZyb207XG4gICAgcHJvdG8uZnJvbU5vdyAgICAgICAgICAgPSBmcm9tTm93O1xuICAgIHByb3RvLnRvICAgICAgICAgICAgICAgID0gdG87XG4gICAgcHJvdG8udG9Ob3cgICAgICAgICAgICAgPSB0b05vdztcbiAgICBwcm90by5nZXQgICAgICAgICAgICAgICA9IHN0cmluZ0dldDtcbiAgICBwcm90by5pbnZhbGlkQXQgICAgICAgICA9IGludmFsaWRBdDtcbiAgICBwcm90by5pc0FmdGVyICAgICAgICAgICA9IGlzQWZ0ZXI7XG4gICAgcHJvdG8uaXNCZWZvcmUgICAgICAgICAgPSBpc0JlZm9yZTtcbiAgICBwcm90by5pc0JldHdlZW4gICAgICAgICA9IGlzQmV0d2VlbjtcbiAgICBwcm90by5pc1NhbWUgICAgICAgICAgICA9IGlzU2FtZTtcbiAgICBwcm90by5pc1NhbWVPckFmdGVyICAgICA9IGlzU2FtZU9yQWZ0ZXI7XG4gICAgcHJvdG8uaXNTYW1lT3JCZWZvcmUgICAgPSBpc1NhbWVPckJlZm9yZTtcbiAgICBwcm90by5pc1ZhbGlkICAgICAgICAgICA9IGlzVmFsaWQkMjtcbiAgICBwcm90by5sYW5nICAgICAgICAgICAgICA9IGxhbmc7XG4gICAgcHJvdG8ubG9jYWxlICAgICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8ubG9jYWxlRGF0YSAgICAgICAgPSBsb2NhbGVEYXRhO1xuICAgIHByb3RvLm1heCAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWF4O1xuICAgIHByb3RvLm1pbiAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWluO1xuICAgIHByb3RvLnBhcnNpbmdGbGFncyAgICAgID0gcGFyc2luZ0ZsYWdzO1xuICAgIHByb3RvLnNldCAgICAgICAgICAgICAgID0gc3RyaW5nU2V0O1xuICAgIHByb3RvLnN0YXJ0T2YgICAgICAgICAgID0gc3RhcnRPZjtcbiAgICBwcm90by5zdWJ0cmFjdCAgICAgICAgICA9IHN1YnRyYWN0O1xuICAgIHByb3RvLnRvQXJyYXkgICAgICAgICAgID0gdG9BcnJheTtcbiAgICBwcm90by50b09iamVjdCAgICAgICAgICA9IHRvT2JqZWN0O1xuICAgIHByb3RvLnRvRGF0ZSAgICAgICAgICAgID0gdG9EYXRlO1xuICAgIHByb3RvLnRvSVNPU3RyaW5nICAgICAgID0gdG9JU09TdHJpbmc7XG4gICAgcHJvdG8uaW5zcGVjdCAgICAgICAgICAgPSBpbnNwZWN0O1xuICAgIHByb3RvLnRvSlNPTiAgICAgICAgICAgID0gdG9KU09OO1xuICAgIHByb3RvLnRvU3RyaW5nICAgICAgICAgID0gdG9TdHJpbmc7XG4gICAgcHJvdG8udW5peCAgICAgICAgICAgICAgPSB1bml4O1xuICAgIHByb3RvLnZhbHVlT2YgICAgICAgICAgID0gdmFsdWVPZjtcbiAgICBwcm90by5jcmVhdGlvbkRhdGEgICAgICA9IGNyZWF0aW9uRGF0YTtcbiAgICBwcm90by55ZWFyICAgICAgID0gZ2V0U2V0WWVhcjtcbiAgICBwcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjtcbiAgICBwcm90by53ZWVrWWVhciAgICA9IGdldFNldFdlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtZZWFyID0gZ2V0U2V0SVNPV2Vla1llYXI7XG4gICAgcHJvdG8ucXVhcnRlciA9IHByb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjtcbiAgICBwcm90by5tb250aCAgICAgICA9IGdldFNldE1vbnRoO1xuICAgIHByb3RvLmRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGg7XG4gICAgcHJvdG8ud2VlayAgICAgICAgICAgPSBwcm90by53ZWVrcyAgICAgICAgPSBnZXRTZXRXZWVrO1xuICAgIHByb3RvLmlzb1dlZWsgICAgICAgID0gcHJvdG8uaXNvV2Vla3MgICAgID0gZ2V0U2V0SVNPV2VlaztcbiAgICBwcm90by53ZWVrc0luWWVhciAgICA9IGdldFdlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5ZZWFyID0gZ2V0SVNPV2Vla3NJblllYXI7XG4gICAgcHJvdG8uZGF0ZSAgICAgICA9IGdldFNldERheU9mTW9udGg7XG4gICAgcHJvdG8uZGF5ICAgICAgICA9IHByb3RvLmRheXMgICAgICAgICAgICAgPSBnZXRTZXREYXlPZldlZWs7XG4gICAgcHJvdG8ud2Vla2RheSAgICA9IGdldFNldExvY2FsZURheU9mV2VlaztcbiAgICBwcm90by5pc29XZWVrZGF5ID0gZ2V0U2V0SVNPRGF5T2ZXZWVrO1xuICAgIHByb3RvLmRheU9mWWVhciAgPSBnZXRTZXREYXlPZlllYXI7XG4gICAgcHJvdG8uaG91ciA9IHByb3RvLmhvdXJzID0gZ2V0U2V0SG91cjtcbiAgICBwcm90by5taW51dGUgPSBwcm90by5taW51dGVzID0gZ2V0U2V0TWludXRlO1xuICAgIHByb3RvLnNlY29uZCA9IHByb3RvLnNlY29uZHMgPSBnZXRTZXRTZWNvbmQ7XG4gICAgcHJvdG8ubWlsbGlzZWNvbmQgPSBwcm90by5taWxsaXNlY29uZHMgPSBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBwcm90by51dGNPZmZzZXQgICAgICAgICAgICA9IGdldFNldE9mZnNldDtcbiAgICBwcm90by51dGMgICAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvVVRDO1xuICAgIHByb3RvLmxvY2FsICAgICAgICAgICAgICAgID0gc2V0T2Zmc2V0VG9Mb2NhbDtcbiAgICBwcm90by5wYXJzZVpvbmUgICAgICAgICAgICA9IHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0O1xuICAgIHByb3RvLmhhc0FsaWduZWRIb3VyT2Zmc2V0ID0gaGFzQWxpZ25lZEhvdXJPZmZzZXQ7XG4gICAgcHJvdG8uaXNEU1QgICAgICAgICAgICAgICAgPSBpc0RheWxpZ2h0U2F2aW5nVGltZTtcbiAgICBwcm90by5pc0xvY2FsICAgICAgICAgICAgICA9IGlzTG9jYWw7XG4gICAgcHJvdG8uaXNVdGNPZmZzZXQgICAgICAgICAgPSBpc1V0Y09mZnNldDtcbiAgICBwcm90by5pc1V0YyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLmlzVVRDICAgICAgICAgICAgICAgID0gaXNVdGM7XG4gICAgcHJvdG8uem9uZUFiYnIgPSBnZXRab25lQWJicjtcbiAgICBwcm90by56b25lTmFtZSA9IGdldFpvbmVOYW1lO1xuICAgIHByb3RvLmRhdGVzICA9IGRlcHJlY2F0ZSgnZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4nLCBnZXRTZXREYXlPZk1vbnRoKTtcbiAgICBwcm90by5tb250aHMgPSBkZXByZWNhdGUoJ21vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCcsIGdldFNldE1vbnRoKTtcbiAgICBwcm90by55ZWFycyAgPSBkZXByZWNhdGUoJ3llYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQnLCBnZXRTZXRZZWFyKTtcbiAgICBwcm90by56b25lICAgPSBkZXByZWNhdGUoJ21vbWVudCgpLnpvbmUgaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudCgpLnV0Y09mZnNldCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL3pvbmUvJywgZ2V0U2V0Wm9uZSk7XG4gICAgcHJvdG8uaXNEU1RTaGlmdGVkID0gZGVwcmVjYXRlKCdpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uJywgaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVuaXggKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCAqIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluWm9uZSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhcnNlWm9uZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZVBhcnNlUG9zdEZvcm1hdCAoc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDEgPSBMb2NhbGUucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMS5jYWxlbmRhciAgICAgICAgPSBjYWxlbmRhcjtcbiAgICBwcm90byQxLmxvbmdEYXRlRm9ybWF0ICA9IGxvbmdEYXRlRm9ybWF0O1xuICAgIHByb3RvJDEuaW52YWxpZERhdGUgICAgID0gaW52YWxpZERhdGU7XG4gICAgcHJvdG8kMS5vcmRpbmFsICAgICAgICAgPSBvcmRpbmFsO1xuICAgIHByb3RvJDEucHJlcGFyc2UgICAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucG9zdGZvcm1hdCAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucmVsYXRpdmVUaW1lICAgID0gcmVsYXRpdmVUaW1lO1xuICAgIHByb3RvJDEucGFzdEZ1dHVyZSAgICAgID0gcGFzdEZ1dHVyZTtcbiAgICBwcm90byQxLnNldCAgICAgICAgICAgICA9IHNldDtcblxuICAgIHByb3RvJDEubW9udGhzICAgICAgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzO1xuICAgIHByb3RvJDEubW9udGhzU2hvcnQgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzU2hvcnQ7XG4gICAgcHJvdG8kMS5tb250aHNQYXJzZSAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHNQYXJzZTtcbiAgICBwcm90byQxLm1vbnRoc1JlZ2V4ICAgICAgID0gbW9udGhzUmVnZXg7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydFJlZ2V4ICA9IG1vbnRoc1Nob3J0UmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrID0gbG9jYWxlV2VlaztcbiAgICBwcm90byQxLmZpcnN0RGF5T2ZZZWFyID0gbG9jYWxlRmlyc3REYXlPZlllYXI7XG4gICAgcHJvdG8kMS5maXJzdERheU9mV2VlayA9IGxvY2FsZUZpcnN0RGF5T2ZXZWVrO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5cyAgICAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5cztcbiAgICBwcm90byQxLndlZWtkYXlzTWluICAgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzTWluO1xuICAgIHByb3RvJDEud2Vla2RheXNTaG9ydCAgPSAgICAgICAgbG9jYWxlV2Vla2RheXNTaG9ydDtcbiAgICBwcm90byQxLndlZWtkYXlzUGFyc2UgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzUGFyc2U7XG5cbiAgICBwcm90byQxLndlZWtkYXlzUmVnZXggICAgICAgPSAgICAgICAgd2Vla2RheXNSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnRSZWdleCAgPSAgICAgICAgd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2Vla2RheXNNaW5SZWdleCAgICA9ICAgICAgICB3ZWVrZGF5c01pblJlZ2V4O1xuXG4gICAgcHJvdG8kMS5pc1BNID0gbG9jYWxlSXNQTTtcbiAgICBwcm90byQxLm1lcmlkaWVtID0gbG9jYWxlTWVyaWRpZW07XG5cbiAgICBmdW5jdGlvbiBnZXQkMSAoZm9ybWF0LCBpbmRleCwgZmllbGQsIHNldHRlcikge1xuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG4gICAgICAgIHZhciB1dGMgPSBjcmVhdGVVVEMoKS5zZXQoc2V0dGVyLCBpbmRleCk7XG4gICAgICAgIHJldHVybiBsb2NhbGVbZmllbGRdKHV0YywgZm9ybWF0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzSW1wbCAoZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCBpbmRleCwgZmllbGQsICdtb250aCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgaSwgZmllbGQsICdtb250aCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgLy8gKClcbiAgICAvLyAoNSlcbiAgICAvLyAoZm10LCA1KVxuICAgIC8vIChmbXQpXG4gICAgLy8gKHRydWUpXG4gICAgLy8gKHRydWUsIDUpXG4gICAgLy8gKHRydWUsIGZtdCwgNSlcbiAgICAvLyAodHJ1ZSwgZm10KVxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c0ltcGwgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGVTb3J0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgbG9jYWxlU29ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICBzaGlmdCA9IGxvY2FsZVNvcnRlZCA/IGxvY2FsZS5fd2Vlay5kb3cgOiAwO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCAoaW5kZXggKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzIChmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc1Nob3J0IChmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXMgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5cycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c1Nob3J0IChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c01pbiAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzTWluJyk7XG4gICAgfVxuXG4gICAgZ2V0U2V0R2xvYmFsTG9jYWxlKCdlbicsIHtcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0b0ludChudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICBob29rcy5sYW5nID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLicsIGdldFNldEdsb2JhbExvY2FsZSk7XG4gICAgaG9va3MubGFuZ0RhdGEgPSBkZXByZWNhdGUoJ21vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4nLCBnZXRMb2NhbGUpO1xuXG4gICAgdmFyIG1hdGhBYnMgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgICAgIHZhciBkYXRhICAgICAgICAgICA9IHRoaXMuX2RhdGE7XG5cbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gbWF0aEFicyh0aGlzLl9taWxsaXNlY29uZHMpO1xuICAgICAgICB0aGlzLl9kYXlzICAgICAgICAgPSBtYXRoQWJzKHRoaXMuX2RheXMpO1xuICAgICAgICB0aGlzLl9tb250aHMgICAgICAgPSBtYXRoQWJzKHRoaXMuX21vbnRocyk7XG5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgID0gbWF0aEFicyhkYXRhLm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIGRhdGEuc2Vjb25kcyAgICAgICA9IG1hdGhBYnMoZGF0YS5zZWNvbmRzKTtcbiAgICAgICAgZGF0YS5taW51dGVzICAgICAgID0gbWF0aEFicyhkYXRhLm1pbnV0ZXMpO1xuICAgICAgICBkYXRhLmhvdXJzICAgICAgICAgPSBtYXRoQWJzKGRhdGEuaG91cnMpO1xuICAgICAgICBkYXRhLm1vbnRocyAgICAgICAgPSBtYXRoQWJzKGRhdGEubW9udGhzKTtcbiAgICAgICAgZGF0YS55ZWFycyAgICAgICAgID0gbWF0aEFicyhkYXRhLnllYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCQxIChkdXJhdGlvbiwgaW5wdXQsIHZhbHVlLCBkaXJlY3Rpb24pIHtcbiAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlRHVyYXRpb24oaW5wdXQsIHZhbHVlKTtcblxuICAgICAgICBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9taWxsaXNlY29uZHM7XG4gICAgICAgIGR1cmF0aW9uLl9kYXlzICAgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7XG4gICAgICAgIGR1cmF0aW9uLl9tb250aHMgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX21vbnRocztcblxuICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBhZGQkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgMSk7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdCQxIChpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAtMSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzQ2VpbCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnViYmxlICgpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IHRoaXMuX2RheXM7XG4gICAgICAgIHZhciBtb250aHMgICAgICAgPSB0aGlzLl9tb250aHM7XG4gICAgICAgIHZhciBkYXRhICAgICAgICAgPSB0aGlzLl9kYXRhO1xuICAgICAgICB2YXIgc2Vjb25kcywgbWludXRlcywgaG91cnMsIHllYXJzLCBtb250aHNGcm9tRGF5cztcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgbWl4IG9mIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1YmJsZSBkb3duIGZpcnN0XG4gICAgICAgIC8vIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjE2NlxuICAgICAgICBpZiAoISgobWlsbGlzZWNvbmRzID49IDAgJiYgZGF5cyA+PSAwICYmIG1vbnRocyA+PSAwKSB8fFxuICAgICAgICAgICAgICAgIChtaWxsaXNlY29uZHMgPD0gMCAmJiBkYXlzIDw9IDAgJiYgbW9udGhzIDw9IDApKSkge1xuICAgICAgICAgICAgbWlsbGlzZWNvbmRzICs9IGFic0NlaWwobW9udGhzVG9EYXlzKG1vbnRocykgKyBkYXlzKSAqIDg2NGU1O1xuICAgICAgICAgICAgZGF5cyA9IDA7XG4gICAgICAgICAgICBtb250aHMgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGJ1YmJsZXMgdXAgdmFsdWVzLCBzZWUgdGhlIHRlc3RzIGZvclxuICAgICAgICAvLyBleGFtcGxlcyBvZiB3aGF0IHRoYXQgbWVhbnMuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzICUgMTAwMDtcblxuICAgICAgICBzZWNvbmRzICAgICAgICAgICA9IGFic0Zsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICA9IHNlY29uZHMgJSA2MDtcblxuICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgID0gbWludXRlcyAlIDYwO1xuXG4gICAgICAgIGhvdXJzICAgICAgICAgICAgID0gYWJzRmxvb3IobWludXRlcyAvIDYwKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgPSBob3VycyAlIDI0O1xuXG4gICAgICAgIGRheXMgKz0gYWJzRmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICAgICAgLy8gY29udmVydCBkYXlzIHRvIG1vbnRoc1xuICAgICAgICBtb250aHNGcm9tRGF5cyA9IGFic0Zsb29yKGRheXNUb01vbnRocyhkYXlzKSk7XG4gICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5cztcbiAgICAgICAgZGF5cyAtPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHNGcm9tRGF5cykpO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICBkYXRhLmRheXMgICA9IGRheXM7XG4gICAgICAgIGRhdGEubW9udGhzID0gbW9udGhzO1xuICAgICAgICBkYXRhLnllYXJzICA9IHllYXJzO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNUb01vbnRocyAoZGF5cykge1xuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxNDYwOTcgZGF5cyAodGFraW5nIGludG8gYWNjb3VudCBsZWFwIHllYXIgcnVsZXMpXG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDEyIG1vbnRocyA9PT0gNDgwMFxuICAgICAgICByZXR1cm4gZGF5cyAqIDQ4MDAgLyAxNDYwOTc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzVG9EYXlzIChtb250aHMpIHtcbiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzXG4gICAgICAgIHJldHVybiBtb250aHMgKiAxNDYwOTcgLyA0ODAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzICh1bml0cykge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXlzO1xuICAgICAgICB2YXIgbW9udGhzO1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzO1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21vbnRoJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICBkYXlzICAgPSB0aGlzLl9kYXlzICAgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgIG1vbnRocyA9IHRoaXMuX21vbnRocyArIGRheXNUb01vbnRocyhkYXlzKTtcbiAgICAgICAgICAgIHJldHVybiB1bml0cyA9PT0gJ21vbnRoJyA/IG1vbnRocyA6IG1vbnRocyAvIDEyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaGFuZGxlIG1pbGxpc2Vjb25kcyBzZXBhcmF0ZWx5IGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgKGlzc3VlICMxODY3KVxuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMgKyBNYXRoLnJvdW5kKG1vbnRoc1RvRGF5cyh0aGlzLl9tb250aHMpKTtcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd3ZWVrJyAgIDogcmV0dXJuIGRheXMgLyA3ICAgICArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknICAgIDogcmV0dXJuIGRheXMgICAgICAgICArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInICAgOiByZXR1cm4gZGF5cyAqIDI0ICAgICsgbWlsbGlzZWNvbmRzIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnIDogcmV0dXJuIGRheXMgKiAxNDQwICArIG1pbGxpc2Vjb25kcyAvIDZlNDtcbiAgICAgICAgICAgICAgICBjYXNlICdzZWNvbmQnIDogcmV0dXJuIGRheXMgKiA4NjQwMCArIG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICAgICAgICAgICAgLy8gTWF0aC5mbG9vciBwcmV2ZW50cyBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyBoZXJlXG4gICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOiByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT9cbiAgICBmdW5jdGlvbiB2YWx1ZU9mJDEgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgdGhpcy5fZGF5cyAqIDg2NGU1ICtcbiAgICAgICAgICAgICh0aGlzLl9tb250aHMgJSAxMikgKiAyNTkyZTYgK1xuICAgICAgICAgICAgdG9JbnQodGhpcy5fbW9udGhzIC8gMTIpICogMzE1MzZlNlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VBcyAoYWxpYXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzKGFsaWFzKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYXNNaWxsaXNlY29uZHMgPSBtYWtlQXMoJ21zJyk7XG4gICAgdmFyIGFzU2Vjb25kcyAgICAgID0gbWFrZUFzKCdzJyk7XG4gICAgdmFyIGFzTWludXRlcyAgICAgID0gbWFrZUFzKCdtJyk7XG4gICAgdmFyIGFzSG91cnMgICAgICAgID0gbWFrZUFzKCdoJyk7XG4gICAgdmFyIGFzRGF5cyAgICAgICAgID0gbWFrZUFzKCdkJyk7XG4gICAgdmFyIGFzV2Vla3MgICAgICAgID0gbWFrZUFzKCd3Jyk7XG4gICAgdmFyIGFzTW9udGhzICAgICAgID0gbWFrZUFzKCdNJyk7XG4gICAgdmFyIGFzWWVhcnMgICAgICAgID0gbWFrZUFzKCd5Jyk7XG5cbiAgICBmdW5jdGlvbiBjbG9uZSQxICgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCQyICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpc1t1bml0cyArICdzJ10oKSA6IE5hTjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0dGVyKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2RhdGFbbmFtZV0gOiBOYU47XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ21pbGxpc2Vjb25kcycpO1xuICAgIHZhciBzZWNvbmRzICAgICAgPSBtYWtlR2V0dGVyKCdzZWNvbmRzJyk7XG4gICAgdmFyIG1pbnV0ZXMgICAgICA9IG1ha2VHZXR0ZXIoJ21pbnV0ZXMnKTtcbiAgICB2YXIgaG91cnMgICAgICAgID0gbWFrZUdldHRlcignaG91cnMnKTtcbiAgICB2YXIgZGF5cyAgICAgICAgID0gbWFrZUdldHRlcignZGF5cycpO1xuICAgIHZhciBtb250aHMgICAgICAgPSBtYWtlR2V0dGVyKCdtb250aHMnKTtcbiAgICB2YXIgeWVhcnMgICAgICAgID0gbWFrZUdldHRlcigneWVhcnMnKTtcblxuICAgIGZ1bmN0aW9uIHdlZWtzICgpIHtcbiAgICAgICAgcmV0dXJuIGFic0Zsb29yKHRoaXMuZGF5cygpIC8gNyk7XG4gICAgfVxuXG4gICAgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcbiAgICB2YXIgdGhyZXNob2xkcyA9IHtcbiAgICAgICAgc3M6IDQ0LCAgICAgICAgIC8vIGEgZmV3IHNlY29uZHMgdG8gc2Vjb25kc1xuICAgICAgICBzIDogNDUsICAgICAgICAgLy8gc2Vjb25kcyB0byBtaW51dGVcbiAgICAgICAgbSA6IDQ1LCAgICAgICAgIC8vIG1pbnV0ZXMgdG8gaG91clxuICAgICAgICBoIDogMjIsICAgICAgICAgLy8gaG91cnMgdG8gZGF5XG4gICAgICAgIGQgOiAyNiwgICAgICAgICAvLyBkYXlzIHRvIG1vbnRoXG4gICAgICAgIE0gOiAxMSAgICAgICAgICAvLyBtb250aHMgdG8geWVhclxuICAgIH07XG5cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZVxuICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUucmVsYXRpdmVUaW1lKG51bWJlciB8fCAxLCAhIXdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSQxIChwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1ZmZpeCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uKHBvc05lZ0R1cmF0aW9uKS5hYnMoKTtcbiAgICAgICAgdmFyIHNlY29uZHMgID0gcm91bmQoZHVyYXRpb24uYXMoJ3MnKSk7XG4gICAgICAgIHZhciBtaW51dGVzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdtJykpO1xuICAgICAgICB2YXIgaG91cnMgICAgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKTtcbiAgICAgICAgdmFyIGRheXMgICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2QnKSk7XG4gICAgICAgIHZhciBtb250aHMgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdNJykpO1xuICAgICAgICB2YXIgeWVhcnMgICAgPSByb3VuZChkdXJhdGlvbi5hcygneScpKTtcblxuICAgICAgICB2YXIgYSA9IHNlY29uZHMgPD0gdGhyZXNob2xkcy5zcyAmJiBbJ3MnLCBzZWNvbmRzXSAgfHxcbiAgICAgICAgICAgICAgICBzZWNvbmRzIDwgdGhyZXNob2xkcy5zICAgJiYgWydzcycsIHNlY29uZHNdIHx8XG4gICAgICAgICAgICAgICAgbWludXRlcyA8PSAxICAgICAgICAgICAgICYmIFsnbSddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPCB0aHJlc2hvbGRzLm0gICAmJiBbJ21tJywgbWludXRlc10gfHxcbiAgICAgICAgICAgICAgICBob3VycyAgIDw9IDEgICAgICAgICAgICAgJiYgWydoJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8IHRocmVzaG9sZHMuaCAgICYmIFsnaGgnLCBob3Vyc10gICB8fFxuICAgICAgICAgICAgICAgIGRheXMgICAgPD0gMSAgICAgICAgICAgICAmJiBbJ2QnXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDwgdGhyZXNob2xkcy5kICAgJiYgWydkZCcsIGRheXNdICAgIHx8XG4gICAgICAgICAgICAgICAgbW9udGhzICA8PSAxICAgICAgICAgICAgICYmIFsnTSddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPCB0aHJlc2hvbGRzLk0gICAmJiBbJ01NJywgbW9udGhzXSAgfHxcbiAgICAgICAgICAgICAgICB5ZWFycyAgIDw9IDEgICAgICAgICAgICAgJiYgWyd5J10gICAgICAgICAgIHx8IFsneXknLCB5ZWFyc107XG5cbiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7XG4gICAgICAgIGFbM10gPSArcG9zTmVnRHVyYXRpb24gPiAwO1xuICAgICAgICBhWzRdID0gbG9jYWxlO1xuICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nIChyb3VuZGluZ0Z1bmN0aW9uKSB7XG4gICAgICAgIGlmIChyb3VuZGluZ0Z1bmN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mKHJvdW5kaW5nRnVuY3Rpb24pID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByb3VuZCA9IHJvdW5kaW5nRnVuY3Rpb247XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCBhIHRocmVzaG9sZCBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzXG4gICAgZnVuY3Rpb24gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkICh0aHJlc2hvbGQsIGxpbWl0KSB7XG4gICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyZXNob2xkc1t0aHJlc2hvbGRdO1xuICAgICAgICB9XG4gICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0O1xuICAgICAgICBpZiAodGhyZXNob2xkID09PSAncycpIHtcbiAgICAgICAgICAgIHRocmVzaG9sZHMuc3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHVtYW5pemUgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgIHZhciBvdXRwdXQgPSByZWxhdGl2ZVRpbWUkMSh0aGlzLCAhd2l0aFN1ZmZpeCwgbG9jYWxlKTtcblxuICAgICAgICBpZiAod2l0aFN1ZmZpeCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWJzJDEgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIHNpZ24oeCkge1xuICAgICAgICByZXR1cm4gKCh4ID4gMCkgLSAoeCA8IDApKSB8fCAreDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyQxKCkge1xuICAgICAgICAvLyBmb3IgSVNPIHN0cmluZ3Mgd2UgZG8gbm90IHVzZSB0aGUgbm9ybWFsIGJ1YmJsaW5nIHJ1bGVzOlxuICAgICAgICAvLyAgKiBtaWxsaXNlY29uZHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIGhvdXJzXG4gICAgICAgIC8vICAqIGRheXMgZG8gbm90IGJ1YmJsZSBhdCBhbGxcbiAgICAgICAgLy8gICogbW9udGhzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSB5ZWFyc1xuICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29udGV4dC1mcmVlIGNvbnZlcnNpb24gYmV0d2VlbiBob3VycyBhbmQgZGF5c1xuICAgICAgICAvLyAodGhpbmsgb2YgY2xvY2sgY2hhbmdlcylcbiAgICAgICAgLy8gYW5kIGFsc28gbm90IGJldHdlZW4gZGF5cyBhbmQgbW9udGhzICgyOC0zMSBkYXlzIHBlciBtb250aClcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2Vjb25kcyA9IGFicyQxKHRoaXMuX21pbGxpc2Vjb25kcykgLyAxMDAwO1xuICAgICAgICB2YXIgZGF5cyAgICAgICAgID0gYWJzJDEodGhpcy5fZGF5cyk7XG4gICAgICAgIHZhciBtb250aHMgICAgICAgPSBhYnMkMSh0aGlzLl9tb250aHMpO1xuICAgICAgICB2YXIgbWludXRlcywgaG91cnMsIHllYXJzO1xuXG4gICAgICAgIC8vIDM2MDAgc2Vjb25kcyAtPiA2MCBtaW51dGVzIC0+IDEgaG91clxuICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGhvdXJzICAgICAgICAgICAgID0gYWJzRmxvb3IobWludXRlcyAvIDYwKTtcbiAgICAgICAgc2Vjb25kcyAlPSA2MDtcbiAgICAgICAgbWludXRlcyAlPSA2MDtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzICA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG5cbiAgICAgICAgLy8gaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2RvcmRpbGxlL21vbWVudC1pc29kdXJhdGlvbi9ibG9iL21hc3Rlci9tb21lbnQuaXNvZHVyYXRpb24uanNcbiAgICAgICAgdmFyIFkgPSB5ZWFycztcbiAgICAgICAgdmFyIE0gPSBtb250aHM7XG4gICAgICAgIHZhciBEID0gZGF5cztcbiAgICAgICAgdmFyIGggPSBob3VycztcbiAgICAgICAgdmFyIG0gPSBtaW51dGVzO1xuICAgICAgICB2YXIgcyA9IHNlY29uZHMgPyBzZWNvbmRzLnRvRml4ZWQoMykucmVwbGFjZSgvXFwuPzArJC8sICcnKSA6ICcnO1xuICAgICAgICB2YXIgdG90YWwgPSB0aGlzLmFzU2Vjb25kcygpO1xuXG4gICAgICAgIGlmICghdG90YWwpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgQyMncyAoTm9kYSkgYW5kIHB5dGhvbiAoaXNvZGF0ZSkuLi5cbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgb3RoZXIgSlMgKGdvb2cuZGF0ZSlcbiAgICAgICAgICAgIHJldHVybiAnUDBEJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b3RhbFNpZ24gPSB0b3RhbCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIHltU2lnbiA9IHNpZ24odGhpcy5fbW9udGhzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIGRheXNTaWduID0gc2lnbih0aGlzLl9kYXlzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIGhtc1NpZ24gPSBzaWduKHRoaXMuX21pbGxpc2Vjb25kcykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIHRvdGFsU2lnbiArICdQJyArXG4gICAgICAgICAgICAoWSA/IHltU2lnbiArIFkgKyAnWScgOiAnJykgK1xuICAgICAgICAgICAgKE0gPyB5bVNpZ24gKyBNICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChEID8gZGF5c1NpZ24gKyBEICsgJ0QnIDogJycpICtcbiAgICAgICAgICAgICgoaCB8fCBtIHx8IHMpID8gJ1QnIDogJycpICtcbiAgICAgICAgICAgIChoID8gaG1zU2lnbiArIGggKyAnSCcgOiAnJykgK1xuICAgICAgICAgICAgKG0gPyBobXNTaWduICsgbSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAocyA/IGhtc1NpZ24gKyBzICsgJ1MnIDogJycpO1xuICAgIH1cblxuICAgIHZhciBwcm90byQyID0gRHVyYXRpb24ucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMi5pc1ZhbGlkICAgICAgICA9IGlzVmFsaWQkMTtcbiAgICBwcm90byQyLmFicyAgICAgICAgICAgID0gYWJzO1xuICAgIHByb3RvJDIuYWRkICAgICAgICAgICAgPSBhZGQkMTtcbiAgICBwcm90byQyLnN1YnRyYWN0ICAgICAgID0gc3VidHJhY3QkMTtcbiAgICBwcm90byQyLmFzICAgICAgICAgICAgID0gYXM7XG4gICAgcHJvdG8kMi5hc01pbGxpc2Vjb25kcyA9IGFzTWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuYXNTZWNvbmRzICAgICAgPSBhc1NlY29uZHM7XG4gICAgcHJvdG8kMi5hc01pbnV0ZXMgICAgICA9IGFzTWludXRlcztcbiAgICBwcm90byQyLmFzSG91cnMgICAgICAgID0gYXNIb3VycztcbiAgICBwcm90byQyLmFzRGF5cyAgICAgICAgID0gYXNEYXlzO1xuICAgIHByb3RvJDIuYXNXZWVrcyAgICAgICAgPSBhc1dlZWtzO1xuICAgIHByb3RvJDIuYXNNb250aHMgICAgICAgPSBhc01vbnRocztcbiAgICBwcm90byQyLmFzWWVhcnMgICAgICAgID0gYXNZZWFycztcbiAgICBwcm90byQyLnZhbHVlT2YgICAgICAgID0gdmFsdWVPZiQxO1xuICAgIHByb3RvJDIuX2J1YmJsZSAgICAgICAgPSBidWJibGU7XG4gICAgcHJvdG8kMi5jbG9uZSAgICAgICAgICA9IGNsb25lJDE7XG4gICAgcHJvdG8kMi5nZXQgICAgICAgICAgICA9IGdldCQyO1xuICAgIHByb3RvJDIubWlsbGlzZWNvbmRzICAgPSBtaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5zZWNvbmRzICAgICAgICA9IHNlY29uZHM7XG4gICAgcHJvdG8kMi5taW51dGVzICAgICAgICA9IG1pbnV0ZXM7XG4gICAgcHJvdG8kMi5ob3VycyAgICAgICAgICA9IGhvdXJzO1xuICAgIHByb3RvJDIuZGF5cyAgICAgICAgICAgPSBkYXlzO1xuICAgIHByb3RvJDIud2Vla3MgICAgICAgICAgPSB3ZWVrcztcbiAgICBwcm90byQyLm1vbnRocyAgICAgICAgID0gbW9udGhzO1xuICAgIHByb3RvJDIueWVhcnMgICAgICAgICAgPSB5ZWFycztcbiAgICBwcm90byQyLmh1bWFuaXplICAgICAgID0gaHVtYW5pemU7XG4gICAgcHJvdG8kMi50b0lTT1N0cmluZyAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b0pTT04gICAgICAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi5sb2NhbGUgICAgICAgICA9IGxvY2FsZTtcbiAgICBwcm90byQyLmxvY2FsZURhdGEgICAgID0gbG9jYWxlRGF0YTtcblxuICAgIHByb3RvJDIudG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoJ3RvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpJywgdG9JU09TdHJpbmckMSk7XG4gICAgcHJvdG8kMi5sYW5nID0gbGFuZztcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdYJywgMCwgMCwgJ3VuaXgnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneCcsIDAsIDAsICd2YWx1ZU9mJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCd4JywgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1gnLCBtYXRjaFRpbWVzdGFtcCk7XG4gICAgYWRkUGFyc2VUb2tlbignWCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShwYXJzZUZsb2F0KGlucHV0LCAxMCkgKiAxMDAwKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCd4JywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cblxuICAgIGhvb2tzLnZlcnNpb24gPSAnMi4yMi4yJztcblxuICAgIHNldEhvb2tDYWxsYmFjayhjcmVhdGVMb2NhbCk7XG5cbiAgICBob29rcy5mbiAgICAgICAgICAgICAgICAgICAgPSBwcm90bztcbiAgICBob29rcy5taW4gICAgICAgICAgICAgICAgICAgPSBtaW47XG4gICAgaG9va3MubWF4ICAgICAgICAgICAgICAgICAgID0gbWF4O1xuICAgIGhvb2tzLm5vdyAgICAgICAgICAgICAgICAgICA9IG5vdztcbiAgICBob29rcy51dGMgICAgICAgICAgICAgICAgICAgPSBjcmVhdGVVVEM7XG4gICAgaG9va3MudW5peCAgICAgICAgICAgICAgICAgID0gY3JlYXRlVW5peDtcbiAgICBob29rcy5tb250aHMgICAgICAgICAgICAgICAgPSBsaXN0TW9udGhzO1xuICAgIGhvb2tzLmlzRGF0ZSAgICAgICAgICAgICAgICA9IGlzRGF0ZTtcbiAgICBob29rcy5sb2NhbGUgICAgICAgICAgICAgICAgPSBnZXRTZXRHbG9iYWxMb2NhbGU7XG4gICAgaG9va3MuaW52YWxpZCAgICAgICAgICAgICAgID0gY3JlYXRlSW52YWxpZDtcbiAgICBob29rcy5kdXJhdGlvbiAgICAgICAgICAgICAgPSBjcmVhdGVEdXJhdGlvbjtcbiAgICBob29rcy5pc01vbWVudCAgICAgICAgICAgICAgPSBpc01vbWVudDtcbiAgICBob29rcy53ZWVrZGF5cyAgICAgICAgICAgICAgPSBsaXN0V2Vla2RheXM7XG4gICAgaG9va3MucGFyc2Vab25lICAgICAgICAgICAgID0gY3JlYXRlSW5ab25lO1xuICAgIGhvb2tzLmxvY2FsZURhdGEgICAgICAgICAgICA9IGdldExvY2FsZTtcbiAgICBob29rcy5pc0R1cmF0aW9uICAgICAgICAgICAgPSBpc0R1cmF0aW9uO1xuICAgIGhvb2tzLm1vbnRoc1Nob3J0ICAgICAgICAgICA9IGxpc3RNb250aHNTaG9ydDtcbiAgICBob29rcy53ZWVrZGF5c01pbiAgICAgICAgICAgPSBsaXN0V2Vla2RheXNNaW47XG4gICAgaG9va3MuZGVmaW5lTG9jYWxlICAgICAgICAgID0gZGVmaW5lTG9jYWxlO1xuICAgIGhvb2tzLnVwZGF0ZUxvY2FsZSAgICAgICAgICA9IHVwZGF0ZUxvY2FsZTtcbiAgICBob29rcy5sb2NhbGVzICAgICAgICAgICAgICAgPSBsaXN0TG9jYWxlcztcbiAgICBob29rcy53ZWVrZGF5c1Nob3J0ICAgICAgICAgPSBsaXN0V2Vla2RheXNTaG9ydDtcbiAgICBob29rcy5ub3JtYWxpemVVbml0cyAgICAgICAgPSBub3JtYWxpemVVbml0cztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyAgPSBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQgPSBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQ7XG4gICAgaG9va3MuY2FsZW5kYXJGb3JtYXQgICAgICAgID0gZ2V0Q2FsZW5kYXJGb3JtYXQ7XG4gICAgaG9va3MucHJvdG90eXBlICAgICAgICAgICAgID0gcHJvdG87XG5cbiAgICAvLyBjdXJyZW50bHkgSFRNTDUgaW5wdXQgdHlwZSBvbmx5IHN1cHBvcnRzIDI0LWhvdXIgZm9ybWF0c1xuICAgIGhvb2tzLkhUTUw1X0ZNVCA9IHtcbiAgICAgICAgREFURVRJTUVfTE9DQUw6ICdZWVlZLU1NLUREVEhIOm1tJywgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX1NFQ09ORFM6ICdZWVlZLU1NLUREVEhIOm1tOnNzJywgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX01TOiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnLCAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBEQVRFOiAnWVlZWS1NTS1ERCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cImRhdGVcIiAvPlxuICAgICAgICBUSU1FOiAnSEg6bW0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiAvPlxuICAgICAgICBUSU1FX1NFQ09ORFM6ICdISDptbTpzcycsICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIFRJTUVfTVM6ICdISDptbTpzcy5TU1MnLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIFdFRUs6ICdZWVlZLVtXXVdXJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwid2Vla1wiIC8+XG4gICAgICAgIE1PTlRIOiAnWVlZWS1NTScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwibW9udGhcIiAvPlxuICAgIH07XG5cbiAgICByZXR1cm4gaG9va3M7XG5cbn0pKSk7IiwiLyohXG4gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYzLjMuMVxuICogaHR0cHM6Ly9qcXVlcnkuY29tL1xuICpcbiAqIEluY2x1ZGVzIFNpenpsZS5qc1xuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTgtMDEtMjBUMTc6MjRaXG4gKi9cbiggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLlxuXHRcdG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID9cblx0XHRcdGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDpcblx0XHRcdGZ1bmN0aW9uKCB3ICkge1xuXHRcdFx0XHRpZiAoICF3LmRvY3VtZW50ICkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFjdG9yeSggdyApO1xuXHRcdFx0fTtcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KCBnbG9iYWwgKTtcblx0fVxuXG4vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldFxufSApKCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7XG5cbi8vIEVkZ2UgPD0gMTIgLSAxMyssIEZpcmVmb3ggPD0xOCAtIDQ1KywgSUUgMTAgLSAxMSwgU2FmYXJpIDUuMSAtIDkrLCBpT1MgNiAtIDkuMVxuLy8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIG5vbi1zdHJpY3QgY29kZSAoZS5nLiwgQVNQLk5FVCA0LjUpIGFjY2Vzc2VzIHN0cmljdCBtb2RlXG4vLyBhcmd1bWVudHMuY2FsbGVlLmNhbGxlciAodHJhYy0xMzMzNSkuIEJ1dCBhcyBvZiBqUXVlcnkgMy4wICgyMDE2KSwgc3RyaWN0IG1vZGUgc2hvdWxkIGJlIGNvbW1vblxuLy8gZW5vdWdoIHRoYXQgYWxsIHN1Y2ggYXR0ZW1wdHMgYXJlIGd1YXJkZWQgaW4gYSB0cnkgYmxvY2suXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFyciA9IFtdO1xuXG52YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxudmFyIHNsaWNlID0gYXJyLnNsaWNlO1xuXG52YXIgY29uY2F0ID0gYXJyLmNvbmNhdDtcblxudmFyIHB1c2ggPSBhcnIucHVzaDtcblxudmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjtcblxudmFyIGNsYXNzMnR5cGUgPSB7fTtcblxudmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZztcblxudmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBmblRvU3RyaW5nID0gaGFzT3duLnRvU3RyaW5nO1xuXG52YXIgT2JqZWN0RnVuY3Rpb25TdHJpbmcgPSBmblRvU3RyaW5nLmNhbGwoIE9iamVjdCApO1xuXG52YXIgc3VwcG9ydCA9IHt9O1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24oIG9iaiApIHtcblxuICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9NTcsIEZpcmVmb3ggPD01MlxuICAgICAgLy8gSW4gc29tZSBicm93c2VycywgdHlwZW9mIHJldHVybnMgXCJmdW5jdGlvblwiIGZvciBIVE1MIDxvYmplY3Q+IGVsZW1lbnRzXG4gICAgICAvLyAoaS5lLiwgYHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9iamVjdFwiICkgPT09IFwiZnVuY3Rpb25cImApLlxuICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjbGFzc2lmeSAqYW55KiBET00gbm9kZSBhcyBhIGZ1bmN0aW9uLlxuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9PSBcIm51bWJlclwiO1xuICB9O1xuXG5cbnZhciBpc1dpbmRvdyA9IGZ1bmN0aW9uIGlzV2luZG93KCBvYmogKSB7XG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcblx0fTtcblxuXG5cblxuXHR2YXIgcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyA9IHtcblx0XHR0eXBlOiB0cnVlLFxuXHRcdHNyYzogdHJ1ZSxcblx0XHRub01vZHVsZTogdHJ1ZVxuXHR9O1xuXG5cdGZ1bmN0aW9uIERPTUV2YWwoIGNvZGUsIGRvYywgbm9kZSApIHtcblx0XHRkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7XG5cblx0XHR2YXIgaSxcblx0XHRcdHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCBcInNjcmlwdFwiICk7XG5cblx0XHRzY3JpcHQudGV4dCA9IGNvZGU7XG5cdFx0aWYgKCBub2RlICkge1xuXHRcdFx0Zm9yICggaSBpbiBwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzICkge1xuXHRcdFx0XHRpZiAoIG5vZGVbIGkgXSApIHtcblx0XHRcdFx0XHRzY3JpcHRbIGkgXSA9IG5vZGVbIGkgXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdH1cblxuXG5mdW5jdGlvbiB0b1R5cGUoIG9iaiApIHtcblx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25pc2ggUmVnRXhwKVxuXHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgXCJvYmplY3RcIiA6XG5cdFx0dHlwZW9mIG9iajtcbn1cbi8qIGdsb2JhbCBTeW1ib2wgKi9cbi8vIERlZmluaW5nIHRoaXMgZ2xvYmFsIGluIC5lc2xpbnRyYy5qc29uIHdvdWxkIGNyZWF0ZSBhIGRhbmdlciBvZiB1c2luZyB0aGUgZ2xvYmFsXG4vLyB1bmd1YXJkZWQgaW4gYW5vdGhlciBwbGFjZSwgaXQgc2VlbXMgc2FmZXIgdG8gZGVmaW5lIGdsb2JhbCBvbmx5IGZvciB0aGlzIG1vZHVsZVxuXG5cblxudmFyXG5cdHZlcnNpb24gPSBcIjMuMy4xXCIsXG5cblx0Ly8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnlcblx0alF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXG5cdFx0Ly8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZClcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuXHQvLyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1Bcblx0cnRyaW0gPSAvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2c7XG5cbmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7XG5cblx0Ly8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVlcnkgYmVpbmcgdXNlZFxuXHRqcXVlcnk6IHZlcnNpb24sXG5cblx0Y29uc3RydWN0b3I6IGpRdWVyeSxcblxuXHQvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDBcblx0bGVuZ3RoOiAwLFxuXG5cdHRvQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUlxuXHQvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheVxuXHRnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7XG5cblx0XHQvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5XG5cdFx0aWYgKCBudW0gPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIGp1c3QgdGhlIG9uZSBlbGVtZW50IGZyb20gdGhlIHNldFxuXHRcdHJldHVybiBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdO1xuXHR9LFxuXG5cdC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2tcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXG5cdHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zICkge1xuXG5cdFx0Ly8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXRcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XG5cblx0XHQvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKVxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcblxuXHRcdC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHQvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuXHRlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjayApO1xuXHR9LFxuXG5cdG1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApO1xuXHRcdH0gKSApO1xuXHR9LFxuXG5cdHNsaWNlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHNsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApO1xuXHR9LFxuXG5cdGZpcnN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggMCApO1xuXHR9LFxuXG5cdGxhc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAtMSApO1xuXHR9LFxuXG5cdGVxOiBmdW5jdGlvbiggaSApIHtcblx0XHR2YXIgbGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRqID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApO1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTtcblx0fSxcblxuXHRlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpO1xuXHR9LFxuXG5cdC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXG5cdHB1c2g6IHB1c2gsXG5cdHNvcnQ6IGFyci5zb3J0LFxuXHRzcGxpY2U6IGFyci5zcGxpY2Vcbn07XG5cbmpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSxcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIDAgXSB8fCB7fSxcblx0XHRpID0gMSxcblx0XHRsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICggdHlwZW9mIHRhcmdldCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0ZGVlcCA9IHRhcmdldDtcblxuXHRcdC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTtcblx0XHRpKys7XG5cdH1cblxuXHQvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSlcblx0aWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSBcIm9iamVjdFwiICYmICFpc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHtcblx0XHR0YXJnZXQgPSB7fTtcblx0fVxuXG5cdC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZFxuXHRpZiAoIGkgPT09IGxlbmd0aCApIHtcblx0XHR0YXJnZXQgPSB0aGlzO1xuXHRcdGktLTtcblx0fVxuXG5cdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmICggKCBvcHRpb25zID0gYXJndW1lbnRzWyBpIF0gKSAhPSBudWxsICkge1xuXG5cdFx0XHQvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3Bcblx0XHRcdFx0aWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0aWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29weSApIHx8XG5cdFx0XHRcdFx0KCBjb3B5SXNBcnJheSA9IEFycmF5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGNvcHlJc0FycmF5ICkge1xuXHRcdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIEFycmF5LmlzQXJyYXkoIHNyYyApID8gc3JjIDogW107XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApO1xuXG5cdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0fSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlXG5cdGV4cGFuZG86IFwialF1ZXJ5XCIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xcRC9nLCBcIlwiICksXG5cblx0Ly8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGVcblx0aXNSZWFkeTogdHJ1ZSxcblxuXHRlcnJvcjogZnVuY3Rpb24oIG1zZyApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xuXHR9LFxuXG5cdG5vb3A6IGZ1bmN0aW9uKCkge30sXG5cblx0aXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIgcHJvdG8sIEN0b3I7XG5cblx0XHQvLyBEZXRlY3Qgb2J2aW91cyBuZWdhdGl2ZXNcblx0XHQvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0IG9iamVjdHNcblx0XHRpZiAoICFvYmogfHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09IFwiW29iamVjdCBPYmplY3RdXCIgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cHJvdG8gPSBnZXRQcm90byggb2JqICk7XG5cblx0XHQvLyBPYmplY3RzIHdpdGggbm8gcHJvdG90eXBlIChlLmcuLCBgT2JqZWN0LmNyZWF0ZSggbnVsbCApYCkgYXJlIHBsYWluXG5cdFx0aWYgKCAhcHJvdG8gKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBPYmplY3RzIHdpdGggcHJvdG90eXBlIGFyZSBwbGFpbiBpZmYgdGhleSB3ZXJlIGNvbnN0cnVjdGVkIGJ5IGEgZ2xvYmFsIE9iamVjdCBmdW5jdGlvblxuXHRcdEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sIFwiY29uc3RydWN0b3JcIiApICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuXHRcdHJldHVybiB0eXBlb2YgQ3RvciA9PT0gXCJmdW5jdGlvblwiICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZztcblx0fSxcblxuXHRpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXG5cdFx0LyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzYxMjVcblx0XHR2YXIgbmFtZTtcblxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dFxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHtcblx0XHRET01FdmFsKCBjb2RlICk7XG5cdH0sXG5cblx0ZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGxlbmd0aCwgaSA9IDA7XG5cblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBvYmogKSApIHtcblx0XHRcdGxlbmd0aCA9IG9iai5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBvYmogKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9iajtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0dHJpbTogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0cmV0dXJuIHRleHQgPT0gbnVsbCA/XG5cdFx0XHRcIlwiIDpcblx0XHRcdCggdGV4dCArIFwiXCIgKS5yZXBsYWNlKCBydHJpbSwgXCJcIiApO1xuXHR9LFxuXG5cdC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkge1xuXHRcdHZhciByZXQgPSByZXN1bHRzIHx8IFtdO1xuXG5cdFx0aWYgKCBhcnIgIT0gbnVsbCApIHtcblx0XHRcdGlmICggaXNBcnJheUxpa2UoIE9iamVjdCggYXJyICkgKSApIHtcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsXG5cdFx0XHRcdFx0dHlwZW9mIGFyciA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0WyBhcnIgXSA6IGFyclxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5jYWxsKCByZXQsIGFyciApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0aW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHtcblx0XHRyZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0bWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkge1xuXHRcdHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCxcblx0XHRcdGogPSAwLFxuXHRcdFx0aSA9IGZpcnN0Lmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0Zmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07XG5cdFx0fVxuXG5cdFx0Zmlyc3QubGVuZ3RoID0gaTtcblxuXHRcdHJldHVybiBmaXJzdDtcblx0fSxcblxuXHRncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7XG5cdFx0dmFyIGNhbGxiYWNrSW52ZXJzZSxcblx0XHRcdG1hdGNoZXMgPSBbXSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0Y2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0O1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtc1xuXHRcdC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uXG5cdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTtcblx0XHRcdGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4cGVjdCApIHtcblx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBlbGVtc1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hdGNoZXM7XG5cdH0sXG5cblx0Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkge1xuXHRcdHZhciBsZW5ndGgsIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRyZXQgPSBbXTtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHtcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsXG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gZWxlbXMgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0XHRyZXR1cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7XG5cdH0sXG5cblx0Ly8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzXG5cdGd1aWQ6IDEsXG5cblx0Ly8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVzZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyXG5cdC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuXG5cdHN1cHBvcnQ6IHN1cHBvcnRcbn0gKTtcblxuaWYgKCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cdGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5bWJvbC5pdGVyYXRvciBdO1xufVxuXG4vLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXBcbmpRdWVyeS5lYWNoKCBcIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sXCIuc3BsaXQoIFwiIFwiICksXG5mdW5jdGlvbiggaSwgbmFtZSApIHtcblx0Y2xhc3MydHlwZVsgXCJbb2JqZWN0IFwiICsgbmFtZSArIFwiXVwiIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG59ICk7XG5cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7XG5cblx0Ly8gU3VwcG9ydDogcmVhbCBpT1MgOC4yIG9ubHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKVxuXHQvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpXG5cdC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlc1xuXHQvLyByZWdhcmRpbmcgTm9kZWxpc3QgbGVuZ3RoIGluIElFXG5cdHZhciBsZW5ndGggPSAhIW9iaiAmJiBcImxlbmd0aFwiIGluIG9iaiAmJiBvYmoubGVuZ3RoLFxuXHRcdHR5cGUgPSB0b1R5cGUoIG9iaiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggb2JqICkgfHwgaXNXaW5kb3coIG9iaiApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0eXBlID09PSBcImFycmF5XCIgfHwgbGVuZ3RoID09PSAwIHx8XG5cdFx0dHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajtcbn1cbnZhciBTaXp6bGUgPVxuLyohXG4gKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4zLjNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE2LTA4LTA4XG4gKi9cbihmdW5jdGlvbiggd2luZG93ICkge1xuXG52YXIgaSxcblx0c3VwcG9ydCxcblx0RXhwcixcblx0Z2V0VGV4dCxcblx0aXNYTUwsXG5cdHRva2VuaXplLFxuXHRjb21waWxlLFxuXHRzZWxlY3QsXG5cdG91dGVybW9zdENvbnRleHQsXG5cdHNvcnRJbnB1dCxcblx0aGFzRHVwbGljYXRlLFxuXG5cdC8vIExvY2FsIGRvY3VtZW50IHZhcnNcblx0c2V0RG9jdW1lbnQsXG5cdGRvY3VtZW50LFxuXHRkb2NFbGVtLFxuXHRkb2N1bWVudElzSFRNTCxcblx0cmJ1Z2d5UVNBLFxuXHRyYnVnZ3lNYXRjaGVzLFxuXHRtYXRjaGVzLFxuXHRjb250YWlucyxcblxuXHQvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhXG5cdGV4cGFuZG8gPSBcInNpenpsZVwiICsgMSAqIG5ldyBEYXRlKCksXG5cdHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCxcblx0ZGlycnVucyA9IDAsXG5cdGRvbmUgPSAwLFxuXHRjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0dG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHtcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gMDtcblx0fSxcblxuXHQvLyBJbnN0YW5jZSBtZXRob2RzXG5cdGhhc093biA9ICh7fSkuaGFzT3duUHJvcGVydHksXG5cdGFyciA9IFtdLFxuXHRwb3AgPSBhcnIucG9wLFxuXHRwdXNoX25hdGl2ZSA9IGFyci5wdXNoLFxuXHRwdXNoID0gYXJyLnB1c2gsXG5cdHNsaWNlID0gYXJyLnNsaWNlLFxuXHQvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRpdmVcblx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNVxuXHRpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7XG5cdFx0dmFyIGkgPSAwLFxuXHRcdFx0bGVuID0gbGlzdC5sZW5ndGg7XG5cdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRpZiAoIGxpc3RbaV0gPT09IGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gLTE7XG5cdH0sXG5cblx0Ym9vbGVhbnMgPSBcImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkXCIsXG5cblx0Ly8gUmVndWxhciBleHByZXNzaW9uc1xuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlXG5cdHdoaXRlc3BhY2UgPSBcIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCIsXG5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlmaWVyXG5cdGlkZW50aWZpZXIgPSBcIig/OlxcXFxcXFxcLnxbXFxcXHctXXxbXlxcMC1cXFxceGEwXSkrXCIsXG5cblx0Ly8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgaWRlbnRpZmllciArIFwiKSg/OlwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gT3BlcmF0b3IgKGNhcHR1cmUgMilcblx0XHRcIiooWypeJHwhfl0/PSlcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIFwiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XVwiXG5cdFx0XCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIiArIGlkZW50aWZpZXIgKyBcIikpfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiKlxcXFxdXCIsXG5cblx0cHNldWRvcyA9IFwiOihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcXFxcKChcIiArXG5cdFx0Ly8gVG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzIG5lZWRpbmcgdG9rZW5pemUgaW4gdGhlIHByZUZpbHRlciwgcHJlZmVyIGFyZ3VtZW50czpcblx0XHQvLyAxLiBxdW90ZWQgKGNhcHR1cmUgMzsgY2FwdHVyZSA0IG9yIGNhcHR1cmUgNSlcblx0XHRcIignKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCIpfFwiICtcblx0XHQvLyAyLiBzaW1wbGUgKGNhcHR1cmUgNilcblx0XHRcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpW1xcXFxdXXxcIiArIGF0dHJpYnV0ZXMgKyBcIikqKXxcIiArXG5cdFx0Ly8gMy4gYW55dGhpbmcgZWxzZSAoY2FwdHVyZSAyKVxuXHRcdFwiLipcIiArXG5cdFx0XCIpXFxcXCl8KVwiLFxuXG5cdC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXJcblx0cndoaXRlc3BhY2UgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgXCIrXCIsIFwiZ1wiICksXG5cdHJ0cmltID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIrfCgoPzpefFteXFxcXFxcXFxdKSg/OlxcXFxcXFxcLikqKVwiICsgd2hpdGVzcGFjZSArIFwiKyRcIiwgXCJnXCIgKSxcblxuXHRyY29tbWEgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiosXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblx0cmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFs+K35dfFwiICsgd2hpdGVzcGFjZSArIFwiKVwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cblx0cmF0dHJpYnV0ZVF1b3RlcyA9IG5ldyBSZWdFeHAoIFwiPVwiICsgd2hpdGVzcGFjZSArIFwiKihbXlxcXFxdJ1xcXCJdKj8pXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXF1cIiwgXCJnXCIgKSxcblxuXHRycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLFxuXHRyaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoIFwiXlwiICsgaWRlbnRpZmllciArIFwiJFwiICksXG5cblx0bWF0Y2hFeHByID0ge1xuXHRcdFwiSURcIjogbmV3IFJlZ0V4cCggXCJeIyhcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBpZGVudGlmaWVyICsgXCJ8WypdKVwiICksXG5cdFx0XCJBVFRSXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgYXR0cmlidXRlcyApLFxuXHRcdFwiUFNFVURPXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgcHNldWRvcyApLFxuXHRcdFwiQ0hJTERcIjogbmV3IFJlZ0V4cCggXCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXFxcKFwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiICsgd2hpdGVzcGFjZSArIFwiKig/OihbKy1dfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKFxcXFxkKyl8KSlcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpXCIsIFwiaVwiICksXG5cdFx0XCJib29sXCI6IG5ldyBSZWdFeHAoIFwiXig/OlwiICsgYm9vbGVhbnMgKyBcIikkXCIsIFwiaVwiICksXG5cdFx0Ly8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpXG5cdFx0Ly8gV2UgdXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0YFxuXHRcdFwibmVlZHNDb250ZXh0XCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIiArXG5cdFx0XHR3aGl0ZXNwYWNlICsgXCIqKCg/Oi1cXFxcZCk/XFxcXGQqKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfCkoPz1bXi1dfCQpXCIsIFwiaVwiIClcblx0fSxcblxuXHRyaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmhlYWRlciA9IC9eaFxcZCQvaSxcblxuXHRybmF0aXZlID0gL15bXntdK1xce1xccypcXFtuYXRpdmUgXFx3LyxcblxuXHQvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnNcblx0cnF1aWNrRXhwciA9IC9eKD86IyhbXFx3LV0rKXwoXFx3Kyl8XFwuKFtcXHctXSspKSQvLFxuXG5cdHJzaWJsaW5nID0gL1srfl0vLFxuXG5cdC8vIENTUyBlc2NhcGVzXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnNcblx0cnVuZXNjYXBlID0gbmV3IFJlZ0V4cCggXCJcXFxcXFxcXChbXFxcXGRhLWZdezEsNn1cIiArIHdoaXRlc3BhY2UgKyBcIj98KFwiICsgd2hpdGVzcGFjZSArIFwiKXwuKVwiLCBcImlnXCIgKSxcblx0ZnVuZXNjYXBlID0gZnVuY3Rpb24oIF8sIGVzY2FwZWQsIGVzY2FwZWRXaGl0ZXNwYWNlICkge1xuXHRcdHZhciBoaWdoID0gXCIweFwiICsgZXNjYXBlZCAtIDB4MTAwMDA7XG5cdFx0Ly8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnRcblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PDI0XG5cdFx0Ly8gV29ya2Fyb3VuZCBlcnJvbmVvdXMgbnVtZXJpYyBpbnRlcnByZXRhdGlvbiBvZiArXCIweFwiXG5cdFx0cmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2UgP1xuXHRcdFx0ZXNjYXBlZCA6XG5cdFx0XHRoaWdoIDwgMCA/XG5cdFx0XHRcdC8vIEJNUCBjb2RlcG9pbnRcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCArIDB4MTAwMDAgKSA6XG5cdFx0XHRcdC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKVxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTtcblx0fSxcblxuXHQvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvblxuXHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXNcblx0cmNzc2VzY2FwZSA9IC8oW1xcMC1cXHgxZlxceDdmXXxeLT9cXGQpfF4tJHxbXlxcMC1cXHgxZlxceDdmLVxcdUZGRkZcXHctXS9nLFxuXHRmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHtcblx0XHRpZiAoIGFzQ29kZVBvaW50ICkge1xuXG5cdFx0XHQvLyBVKzAwMDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJcblx0XHRcdGlmICggY2ggPT09IFwiXFwwXCIgKSB7XG5cdFx0XHRcdHJldHVybiBcIlxcdUZGRkRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHNcblx0XHRcdHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArIFwiXFxcXFwiICsgY2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgXCIgXCI7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZFxuXHRcdHJldHVybiBcIlxcXFxcIiArIGNoO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9LFxuXG5cdGRpc2FibGVkQW5jZXN0b3IgPSBhZGRDb21iaW5hdG9yKFxuXHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgKFwiZm9ybVwiIGluIGVsZW0gfHwgXCJsYWJlbFwiIGluIGVsZW0pO1xuXHRcdH0sXG5cdFx0eyBkaXI6IFwicGFyZW50Tm9kZVwiLCBuZXh0OiBcImxlZ2VuZFwiIH1cblx0KTtcblxuLy8gT3B0aW1pemUgZm9yIHB1c2guYXBwbHkoIF8sIE5vZGVMaXN0IClcbnRyeSB7XG5cdHB1c2guYXBwbHkoXG5cdFx0KGFyciA9IHNsaWNlLmNhbGwoIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzICkpLFxuXHRcdHByZWZlcnJlZERvYy5jaGlsZE5vZGVzXG5cdCk7XG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wXG5cdC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1c2guYXBwbHlcblx0YXJyWyBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcy5sZW5ndGggXS5ub2RlVHlwZTtcbn0gY2F0Y2ggKCBlICkge1xuXHRwdXNoID0geyBhcHBseTogYXJyLmxlbmd0aCA/XG5cblx0XHQvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3NzaWJsZVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHB1c2hfbmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwoZWxzKSApO1xuXHRcdH0gOlxuXG5cdFx0Ly8gU3VwcG9ydDogSUU8OVxuXHRcdC8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHlcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHR2YXIgaiA9IHRhcmdldC5sZW5ndGgsXG5cdFx0XHRcdGkgPSAwO1xuXHRcdFx0Ly8gQ2FuJ3QgdHJ1c3QgTm9kZUxpc3QubGVuZ3RoXG5cdFx0XHR3aGlsZSAoICh0YXJnZXRbaisrXSA9IGVsc1tpKytdKSApIHt9XG5cdFx0XHR0YXJnZXQubGVuZ3RoID0gaiAtIDE7XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkge1xuXHR2YXIgbSwgaSwgZWxlbSwgbmlkLCBtYXRjaCwgZ3JvdXBzLCBuZXdTZWxlY3Rvcixcblx0XHRuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQsXG5cblx0XHQvLyBub2RlVHlwZSBkZWZhdWx0cyB0byA5LCBzaW5jZSBjb250ZXh0IGRlZmF1bHRzIHRvIGRvY3VtZW50XG5cdFx0bm9kZVR5cGUgPSBjb250ZXh0ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9yIG9yIGNvbnRleHRcblx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgfHwgIXNlbGVjdG9yIHx8XG5cdFx0bm9kZVR5cGUgIT09IDEgJiYgbm9kZVR5cGUgIT09IDkgJiYgbm9kZVR5cGUgIT09IDExICkge1xuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRlcnMpIGluIEhUTUwgZG9jdW1lbnRzXG5cdGlmICggIXNlZWQgKSB7XG5cblx0XHRpZiAoICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3VtZW50ICkge1xuXHRcdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0XHR9XG5cdFx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XG5cblx0XHRpZiAoIGRvY3VtZW50SXNIVE1MICkge1xuXG5cdFx0XHQvLyBJZiB0aGUgc2VsZWN0b3IgaXMgc3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgXCJnZXQqQnkqXCIgRE9NIG1ldGhvZFxuXHRcdFx0Ly8gKGV4Y2VwdGluZyBEb2N1bWVudEZyYWdtZW50IGNvbnRleHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0IGV4aXN0KVxuXHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApKSApIHtcblxuXHRcdFx0XHQvLyBJRCBzZWxlY3RvclxuXHRcdFx0XHRpZiAoIChtID0gbWF0Y2hbMV0pICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9jdW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdFxuXHRcdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRcdGlmICggZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBFbGVtZW50IGNvbnRleHRcblx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdFxuXHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdGlmICggbmV3Q29udGV4dCAmJiAoZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiZcblx0XHRcdFx0XHRcdFx0Y29udGFpbnMoIGNvbnRleHQsIGVsZW0gKSAmJlxuXHRcdFx0XHRcdFx0XHRlbGVtLmlkID09PSBtICkge1xuXG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHlwZSBzZWxlY3RvclxuXHRcdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdFx0Ly8gQ2xhc3Mgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmXG5cdFx0XHRcdFx0Y29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICkgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9yQWxsXG5cdFx0XHRpZiAoIHN1cHBvcnQucXNhICYmXG5cdFx0XHRcdCFjb21waWxlckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF0gJiZcblx0XHRcdFx0KCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApKSApIHtcblxuXHRcdFx0XHRpZiAoIG5vZGVUeXBlICE9PSAxICkge1xuXHRcdFx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7XG5cblx0XHRcdFx0Ly8gcVNBIGxvb2tzIG91dHNpZGUgRWxlbWVudCBjb250ZXh0LCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50XG5cdFx0XHRcdC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHdvcmthcm91bmQgdGVjaG5pcXVlXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OFxuXHRcdFx0XHQvLyBFeGNsdWRlIG9iamVjdCBlbGVtZW50c1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdFx0XHQvLyBDYXB0dXJlIHRoZSBjb250ZXh0IElELCBzZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdGlmICggKG5pZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCBcImlkXCIgKSkgKSB7XG5cdFx0XHRcdFx0XHRuaWQgPSBuaWQucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb250ZXh0LnNldEF0dHJpYnV0ZSggXCJpZFwiLCAobmlkID0gZXhwYW5kbykgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmVmaXggZXZlcnkgc2VsZWN0b3IgaW4gdGhlIGxpc3Rcblx0XHRcdFx0XHRncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblx0XHRcdFx0XHRpID0gZ3JvdXBzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGdyb3Vwc1tpXSA9IFwiI1wiICsgbmlkICsgXCIgXCIgKyB0b1NlbGVjdG9yKCBncm91cHNbaV0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bmV3U2VsZWN0b3IgPSBncm91cHMuam9pbiggXCIsXCIgKTtcblxuXHRcdFx0XHRcdC8vIEV4cGFuZCBjb250ZXh0IGZvciBzaWJsaW5nIHNlbGVjdG9yc1xuXHRcdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fFxuXHRcdFx0XHRcdFx0Y29udGV4dDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggbmV3U2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsXG5cdFx0XHRcdFx0XHRcdG5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbCggbmV3U2VsZWN0b3IgKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKCBxc2FFcnJvciApIHtcblx0XHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdFx0aWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCBcImlkXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBbGwgb3RoZXJzXG5cdHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xufVxuXG4vKipcbiAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZVxuICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aFxuICpcdHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpXG4gKlx0ZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeVxuICovXG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcblx0dmFyIGtleXMgPSBbXTtcblxuXHRmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHtcblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblx0XHRcdC8vIE9ubHkga2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllc1xuXHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcblx0XHR9XG5cdFx0cmV0dXJuIChjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrXG4gKi9cbmZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7XG5cdGZuWyBleHBhbmRvIF0gPSB0cnVlO1xuXHRyZXR1cm4gZm47XG59XG5cbi8qKlxuICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZpZWxkc2V0XCIpO1xuXG5cdHRyeSB7XG5cdFx0cmV0dXJuICEhZm4oIGVsICk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0XG5cdFx0aWYgKCBlbC5wYXJlbnROb2RlICkge1xuXHRcdFx0ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWwgKTtcblx0XHR9XG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRlbCA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KFwifFwiKSxcblx0XHRpID0gYXJyLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFuZGxlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3NcbiAqIEBwYXJhbSB7RWxlbWVudH0gYVxuICogQHBhcmFtIHtFbGVtZW50fSBiXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dzIGJcbiAqL1xuZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkge1xuXHR2YXIgY3VyID0gYiAmJiBhLFxuXHRcdGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRleDtcblxuXHQvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXNcblx0aWYgKCBkaWZmICkge1xuXHRcdHJldHVybiBkaWZmO1xuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGFcblx0aWYgKCBjdXIgKSB7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAobmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIDplbmFibGVkLzpkaXNhYmxlZFxuICogQHBhcmFtIHtCb29sZWFufSBkaXNhYmxlZCB0cnVlIGZvciA6ZGlzYWJsZWQ7IGZhbHNlIGZvciA6ZW5hYmxlZFxuICovXG5mdW5jdGlvbiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZGlzYWJsZWQgKSB7XG5cblx0Ly8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBvc2l0aXZlczogZmllbGRzZXRbZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNhbi1kaXNhYmxlXG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE9ubHkgY2VydGFpbiBlbGVtZW50cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkXG5cdFx0aWYgKCBcImZvcm1cIiBpbiBlbGVtICkge1xuXG5cdFx0XHQvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxldmFudCBub24tZGlzYWJsZWQgZWxlbWVudHM6XG5cdFx0XHQvLyAqIGxpc3RlZCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxpc3RlZFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWRcblx0XHRcdC8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LW9wdGlvbi1kaXNhYmxlZFxuXHRcdFx0Ly8gQWxsIHN1Y2ggZWxlbWVudHMgaGF2ZSBhIFwiZm9ybVwiIHByb3BlcnR5LlxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0Ly8gT3B0aW9uIGVsZW1lbnRzIGRlZmVyIHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnRcblx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDYgLSAxMVxuXHRcdFx0XHQvLyBVc2UgdGhlIGlzRGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9yc1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fFxuXG5cdFx0XHRcdFx0Ly8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwgY2hlY2sgbWFudWFsbHlcblx0XHRcdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdFx0XHRlbGVtLmlzRGlzYWJsZWQgIT09ICFkaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWRBbmNlc3RvciggZWxlbSApID09PSBkaXNhYmxlZDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXG5cdFx0Ly8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBjYW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5LlxuXHRcdC8vIFNvbWUgdmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBsZWdlbmQsIG1lbnUsIHRyYWNrKSwgYnV0IGl0IHNob3VsZG4ndFxuXHRcdC8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVlLlxuXHRcdH0gZWxzZSBpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdH1cblxuXHRcdC8vIFJlbWFpbmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkge1xuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBhcmd1bWVudCApIHtcblx0XHRhcmd1bWVudCA9ICthcmd1bWVudDtcblx0XHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0dmFyIGosXG5cdFx0XHRcdG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksXG5cdFx0XHRcdGkgPSBtYXRjaEluZGV4ZXMubGVuZ3RoO1xuXG5cdFx0XHQvLyBNYXRjaCBlbGVtZW50cyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4ZXNcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkge1xuXHRcdFx0XHRcdHNlZWRbal0gPSAhKG1hdGNoZXNbal0gPSBzZWVkW2pdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dFxuICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkge1xuXHRyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb250ZXh0O1xufVxuXG4vLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZVxuc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307XG5cbi8qKlxuICogRGV0ZWN0cyBYTUwgbm9kZXNcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlXG4gKi9cbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3Rcblx0Ly8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVzIGluIElFIC0gIzQ4MzMpXG5cdHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50O1xuXHRyZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSBcIkhUTUxcIiA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2UgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IFtkb2NdIEFuIGVsZW1lbnQgb3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKi9cbnNldERvY3VtZW50ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7XG5cdHZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3csXG5cdFx0ZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jO1xuXG5cdC8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkXG5cdGlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50O1xuXHR9XG5cblx0Ly8gVXBkYXRlIGdsb2JhbCB2YXJpYWJsZXNcblx0ZG9jdW1lbnQgPSBkb2M7XG5cdGRvY0VsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDktMTEsIEVkZ2Vcblx0Ly8gQWNjZXNzaW5nIGlmcmFtZSBkb2N1bWVudHMgYWZ0ZXIgdW5sb2FkIHRocm93cyBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KVxuXHRpZiAoIHByZWZlcnJlZERvYyAhPT0gZG9jdW1lbnQgJiZcblx0XHQoc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcpICYmIHN1YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlXG5cdFx0aWYgKCBzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcInVubG9hZFwiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApO1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHlcblx0XHR9IGVsc2UgaWYgKCBzdWJXaW5kb3cuYXR0YWNoRXZlbnQgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgdW5sb2FkSGFuZGxlciApO1xuXHRcdH1cblx0fVxuXG5cdC8qIEF0dHJpYnV0ZXNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFPDhcblx0Ly8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzXG5cdC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKVxuXHRzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmNsYXNzTmFtZSA9IFwiaVwiO1xuXHRcdHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpO1xuXHR9KTtcblxuXHQvKiBnZXRFbGVtZW50KHMpQnkqXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzXG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KFwiXCIpICk7XG5cdFx0cmV0dXJuICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBTdXBwb3J0OiBJRTw5XG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDEwXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVudHMgYnkgbmFtZVxuXHQvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9ncmFtbWF0aWNhbGx5LXNldCBuYW1lcyxcblx0Ly8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0XG5cdHN1cHBvcnQuZ2V0QnlJZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87XG5cdFx0cmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7XG5cdH0pO1xuXG5cdC8vIElEIGZpbHRlciBhbmQgZmluZFxuXHRpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cdFx0XHRcdHJldHVybiBlbGVtID8gWyBlbGVtIF0gOiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSAgZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5XG5cdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgaXMgbm90IHJlbGlhYmxlIGFzIGEgZmluZCBzaG9ydGN1dFxuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIG5vZGUsIGksIGVsZW1zLFxuXHRcdFx0XHRcdGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXG5cdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdC8vIFZlcmlmeSB0aGUgaWQgYXR0cmlidXRlXG5cdFx0XHRcdFx0bm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWVcblx0XHRcdFx0XHRlbGVtcyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIGlkICk7XG5cdFx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1zW2krK10pICkge1xuXHRcdFx0XHRcdFx0bm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvLyBUYWdcblx0RXhwci5maW5kW1wiVEFHXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/XG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdFQlROXG5cdFx0XHR9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnICk7XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdHRtcCA9IFtdLFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0Ly8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvb1xuXHRcdFx0XHRyZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHNcblx0XHRcdGlmICggdGFnID09PSBcIipcIiApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0dG1wLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdG1wO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fTtcblxuXHQvLyBDbGFzc1xuXHRFeHByLmZpbmRbXCJDTEFTU1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkge1xuXHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIGNsYXNzTmFtZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKiBRU0EvbWF0Y2hlc1NlbGVjdG9yXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0XG5cblx0Ly8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSlcblx0cmJ1Z2d5TWF0Y2hlcyA9IFtdO1xuXG5cdC8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpXG5cdC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvclxuXHQvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lXG5cdC8vIFNvLCB3ZSBhbGxvdyA6Zm9jdXMgdG8gcGFzcyB0aHJvdWdoIFFTQSBhbGwgdGhlIHRpbWUgdG8gYXZvaWQgdGhlIElFIGVycm9yXG5cdC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzhcblx0cmJ1Z2d5UVNBID0gW107XG5cblx0aWYgKCAoc3VwcG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKSkgKSB7XG5cdFx0Ly8gQnVpbGQgUVNBIHJlZ2V4XG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxuXHRcdGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHQvLyBTZWxlY3QgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyBvbiBwdXJwb3NlXG5cdFx0XHQvLyBUaGlzIGlzIHRvIHRlc3QgSUUncyB0cmVhdG1lbnQgb2Ygbm90IGV4cGxpY2l0bHlcblx0XHRcdC8vIHNldHRpbmcgYSBib29sZWFuIGNvbnRlbnQgYXR0cmlidXRlLFxuXHRcdFx0Ly8gc2luY2UgaXRzIHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2hcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OVxuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pbm5lckhUTUwgPSBcIjxhIGlkPSdcIiArIGV4cGFuZG8gKyBcIic+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGlkPSdcIiArIGV4cGFuZG8gKyBcIi1cXHJcXFxcJyBtc2FsbG93Y2FwdHVyZT0nJz5cIiArXG5cdFx0XHRcdFwiPG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD5cIjtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4LCBPcGVyYSAxMS0xMi4xNlxuXHRcdFx0Ly8gTm90aGluZyBzaG91bGQgYmUgc2VsZWN0ZWQgd2hlbiBlbXB0eSBzdHJpbmdzIGZvbGxvdyBePSBvciAkPSBvciAqPVxuXHRcdFx0Ly8gVGhlIHRlc3QgYXR0cmlidXRlIG11c3QgYmUgdW5rbm93biBpbiBPcGVyYSBidXQgXCJzYWZlXCIgZm9yIFdpblJUXG5cdFx0XHQvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb25cblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIlttc2FsbG93Y2FwdHVyZV49JyddXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiWypeJF09XCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86Jyd8XFxcIlxcXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kIFwidmFsdWVcIiBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5XG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86dmFsdWV8XCIgKyBib29sZWFucyArIFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS44K1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJbaWR+PVwiICsgZXhwYW5kbyArIFwiLV1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCJ+PVwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCI6Y2hlY2tlZFwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCtcblx0XHRcdC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTFcblx0XHRcdC8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiYSNcIiArIGV4cGFuZG8gKyBcIisqXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiLiMuK1srfl1cIik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFdpbmRvd3MgOCBOYXRpdmUgQXBwc1xuXHRcdFx0Ly8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmlidXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50XG5cdFx0XHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcImhpZGRlblwiICk7XG5cdFx0XHRlbC5hcHBlbmRDaGlsZCggaW5wdXQgKS5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcIkRcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0dHJpYnV0ZVxuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9ZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqWypeJHwhfl0/PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmVuYWJsZWRcIikubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIElFJ3MgOmRpc2FibGVkIHNlbGVjdG9yIGRvZXMgbm90IHBpY2sgdXAgdGhlIGNoaWxkcmVuIG9mIGRpc2FibGVkIGZpZWxkc2V0c1xuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZGlzYWJsZWRcIikubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zXG5cdFx0XHRlbC5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKFwiLC4qOlwiKTtcblx0XHR9KTtcblx0fVxuXG5cdGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fFxuXHRcdGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3Jcblx0XHRcdC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpXG5cdFx0XHRzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgXCIqXCIgKTtcblxuXHRcdFx0Ly8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvblxuXHRcdFx0Ly8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZFxuXHRcdFx0bWF0Y2hlcy5jYWxsKCBlbCwgXCJbcyE9JyddOnhcIiApO1xuXHRcdFx0cmJ1Z2d5TWF0Y2hlcy5wdXNoKCBcIiE9XCIsIHBzZXVkb3MgKTtcblx0XHR9KTtcblx0fVxuXG5cdHJidWdneVFTQSA9IHJidWdneVFTQS5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oXCJ8XCIpICk7XG5cdHJidWdneU1hdGNoZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lNYXRjaGVzLmpvaW4oXCJ8XCIpICk7XG5cblx0LyogQ29udGFpbnNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHRoYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7XG5cblx0Ly8gRWxlbWVudCBjb250YWlucyBhbm90aGVyXG5cdC8vIFB1cnBvc2VmdWxseSBzZWxmLWV4Y2x1c2l2ZVxuXHQvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZlxuXHRjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgP1xuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSxcblx0XHRcdFx0YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7XG5cdFx0XHRyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0YWRvd24uY29udGFpbnMgP1xuXHRcdFx0XHRcdGFkb3duLmNvbnRhaW5zKCBidXAgKSA6XG5cdFx0XHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2XG5cdFx0XHQpKTtcblx0XHR9IDpcblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdGlmICggYiApIHtcblx0XHRcdFx0d2hpbGUgKCAoYiA9IGIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBiID09PSBhICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHQvKiBTb3J0aW5nXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nXG5cdHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgP1xuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb25cblx0XHR2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247XG5cdFx0aWYgKCBjb21wYXJlICkge1xuXHRcdFx0cmV0dXJuIGNvbXBhcmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudFxuXHRcdGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT09ICggYi5vd25lckRvY3VtZW50IHx8IGIgKSA/XG5cdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugd2Uga25vdyB0aGV5IGFyZSBkaXNjb25uZWN0ZWRcblx0XHRcdDE7XG5cblx0XHQvLyBEaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRpZiAoIGNvbXBhcmUgJiAxIHx8XG5cdFx0XHQoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7XG5cblx0XHRcdC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudFxuXHRcdFx0aWYgKCBhID09PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEpICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYikgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWludGFpbiBvcmlnaW5hbCBvcmRlclxuXHRcdFx0cmV0dXJuIHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29tcGFyZSAmIDQgPyAtMSA6IDE7XG5cdH0gOlxuXHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHQvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGF1cCA9IGEucGFyZW50Tm9kZSxcblx0XHRcdGJ1cCA9IGIucGFyZW50Tm9kZSxcblx0XHRcdGFwID0gWyBhIF0sXG5cdFx0XHRicCA9IFsgYiBdO1xuXG5cdFx0Ly8gUGFyZW50bGVzcyBub2RlcyBhcmUgZWl0aGVyIGRvY3VtZW50cyBvciBkaXNjb25uZWN0ZWRcblx0XHRpZiAoICFhdXAgfHwgIWJ1cCApIHtcblx0XHRcdHJldHVybiBhID09PSBkb2N1bWVudCA/IC0xIDpcblx0XHRcdFx0YiA9PT0gZG9jdW1lbnQgPyAxIDpcblx0XHRcdFx0YXVwID8gLTEgOlxuXHRcdFx0XHRidXAgPyAxIDpcblx0XHRcdFx0c29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2tcblx0XHR9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHtcblx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvblxuXHRcdGN1ciA9IGE7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YXAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXHRcdGN1ciA9IGI7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YnAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3lcblx0XHR3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHtcblx0XHRcdGkrKztcblx0XHR9XG5cblx0XHRyZXR1cm4gaSA/XG5cdFx0XHQvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBjb21tb24gYW5jZXN0b3Jcblx0XHRcdHNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQgZmlyc3Rcblx0XHRcdGFwW2ldID09PSBwcmVmZXJyZWREb2MgPyAtMSA6XG5cdFx0XHRicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6XG5cdFx0XHQwO1xuXHR9O1xuXG5cdHJldHVybiBkb2N1bWVudDtcbn07XG5cblNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkge1xuXHRyZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApO1xufTtcblxuU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHQvLyBNYWtlIHN1cmUgdGhhdCBhdHRyaWJ1dGUgc2VsZWN0b3JzIGFyZSBxdW90ZWRcblx0ZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJpYnV0ZVF1b3RlcywgXCI9JyQxJ11cIiApO1xuXG5cdGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hUTUwgJiZcblx0XHQhY29tcGlsZXJDYWNoZVsgZXhwciArIFwiIFwiIF0gJiZcblx0XHQoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmXG5cdFx0KCAhcmJ1Z2d5UVNBICAgICB8fCAhcmJ1Z2d5UVNBLnRlc3QoIGV4cHIgKSApICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdHZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTtcblxuXHRcdFx0Ly8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdFx0aWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fFxuXHRcdFx0XHRcdC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50XG5cdFx0XHRcdFx0Ly8gZnJhZ21lbnQgaW4gSUUgOVxuXHRcdFx0XHRcdGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge31cblx0fVxuXG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7XG59O1xuXG5TaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHR9XG5cdHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApO1xufTtcblxuU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0dmFyIGZuID0gRXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSxcblx0XHQvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1ZXJ5ICMxMzgwNylcblx0XHR2YWwgPSBmbiAmJiBoYXNPd24uY2FsbCggRXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRmbiggZWxlbSwgbmFtZSwgIWRvY3VtZW50SXNIVE1MICkgOlxuXHRcdFx0dW5kZWZpbmVkO1xuXG5cdHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/XG5cdFx0dmFsIDpcblx0XHRzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50SXNIVE1MID9cblx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOlxuXHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG59O1xuXG5TaXp6bGUuZXNjYXBlID0gZnVuY3Rpb24oIHNlbCApIHtcblx0cmV0dXJuIChzZWwgKyBcIlwiKS5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG59O1xuXG5TaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkge1xuXHR0aHJvdyBuZXcgRXJyb3IoIFwiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogXCIgKyBtc2cgKTtcbn07XG5cbi8qKlxuICogRG9jdW1lbnQgc29ydGluZyBhbmQgcmVtb3ZpbmcgZHVwbGljYXRlc1xuICogQHBhcmFtIHtBcnJheUxpa2V9IHJlc3VsdHNcbiAqL1xuU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHtcblx0dmFyIGVsZW0sXG5cdFx0ZHVwbGljYXRlcyA9IFtdLFxuXHRcdGogPSAwLFxuXHRcdGkgPSAwO1xuXG5cdC8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2Vcblx0aGFzRHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcztcblx0c29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7XG5cdHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7XG5cblx0aWYgKCBoYXNEdXBsaWNhdGUgKSB7XG5cdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRpZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHtcblx0XHRcdFx0aiA9IGR1cGxpY2F0ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0c1xuXHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvcHVsbC8yMjVcblx0c29ydElucHV0ID0gbnVsbDtcblxuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXNcbiAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbVxuICovXG5nZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0dmFyIG5vZGUsXG5cdFx0cmV0ID0gXCJcIixcblx0XHRpID0gMCxcblx0XHRub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0aWYgKCAhbm9kZVR5cGUgKSB7XG5cdFx0Ly8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXlcblx0XHR3aGlsZSAoIChub2RlID0gZWxlbVtpKytdKSApIHtcblx0XHRcdC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzXG5cdFx0XHRyZXQgKz0gZ2V0VGV4dCggbm9kZSApO1xuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkge1xuXHRcdC8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHNcblx0XHQvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKVxuXHRcdGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS50ZXh0Q29udGVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0cmV0ICs9IGdldFRleHQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVWYWx1ZTtcblx0fVxuXHQvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXNcblxuXHRyZXR1cm4gcmV0O1xufTtcblxuRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7XG5cblx0Ly8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2VyXG5cdGNhY2hlTGVuZ3RoOiA1MCxcblxuXHRjcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbixcblxuXHRtYXRjaDogbWF0Y2hFeHByLFxuXG5cdGF0dHJIYW5kbGU6IHt9LFxuXG5cdGZpbmQ6IHt9LFxuXG5cdHJlbGF0aXZlOiB7XG5cdFx0XCI+XCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIiBcIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiIH0sXG5cdFx0XCIrXCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiflwiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiB9XG5cdH0sXG5cblx0cHJlRmlsdGVyOiB7XG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0Ly8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWRcblx0XHRcdG1hdGNoWzNdID0gKCBtYXRjaFszXSB8fCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiICkucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsyXSA9PT0gXCJ+PVwiICkge1xuXHRcdFx0XHRtYXRjaFszXSA9IFwiIFwiICsgbWF0Y2hbM10gKyBcIiBcIjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0LyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwcltcIkNISUxEXCJdXG5cdFx0XHRcdDEgdHlwZSAob25seXxudGh8Li4uKVxuXHRcdFx0XHQyIHdoYXQgKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdDMgYXJndW1lbnQgKGV2ZW58b2RkfFxcZCp8XFxkKm4oWystXVxcZCspP3wuLi4pXG5cdFx0XHRcdDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XFxkKm58KVxuXHRcdFx0XHQ1IHNpZ24gb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDYgeCBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NyBzaWduIG9mIHktY29tcG9uZW50XG5cdFx0XHRcdDggeSBvZiB5LWNvbXBvbmVudFxuXHRcdFx0Ki9cblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsxXS5zbGljZSggMCwgMyApID09PSBcIm50aFwiICkge1xuXHRcdFx0XHQvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVudFxuXHRcdFx0XHRpZiAoICFtYXRjaFszXSApIHtcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTERcblx0XHRcdFx0Ly8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMVxuXHRcdFx0XHRtYXRjaFs0XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkgOiAyICogKCBtYXRjaFszXSA9PT0gXCJldmVuXCIgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKSApO1xuXHRcdFx0XHRtYXRjaFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICk7XG5cblx0XHRcdC8vIG90aGVyIHR5cGVzIHByb2hpYml0IGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHR2YXIgZXhjZXNzLFxuXHRcdFx0XHR1bnF1b3RlZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsyXTtcblxuXHRcdFx0aWYgKCBtYXRjaEV4cHJbXCJDSElMRFwiXS50ZXN0KCBtYXRjaFswXSApICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXNcblx0XHRcdGlmICggbWF0Y2hbM10gKSB7XG5cdFx0XHRcdG1hdGNoWzJdID0gbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIjtcblxuXHRcdFx0Ly8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJlxuXHRcdFx0XHQvLyBHZXQgZXhjZXNzIGZyb20gdG9rZW5pemUgKHJlY3Vyc2l2ZWx5KVxuXHRcdFx0XHQoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmXG5cdFx0XHRcdC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpc1xuXHRcdFx0XHQoZXhjZXNzID0gdW5xdW90ZWQuaW5kZXhPZiggXCIpXCIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHtcblxuXHRcdFx0XHQvLyBleGNlc3MgaXMgYSBuZWdhdGl2ZSBpbmRleFxuXHRcdFx0XHRtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdFx0bWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KVxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7XG5cdFx0fVxuXHR9LFxuXG5cdGZpbHRlcjoge1xuXG5cdFx0XCJUQUdcIjogZnVuY3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7XG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSBcIipcIiA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0xBU1NcIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHtcblx0XHRcdHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgXCIgXCIgXTtcblxuXHRcdFx0cmV0dXJuIHBhdHRlcm4gfHxcblx0XHRcdFx0KHBhdHRlcm4gPSBuZXcgUmVnRXhwKCBcIihefFwiICsgd2hpdGVzcGFjZSArIFwiKVwiICsgY2xhc3NOYW1lICsgXCIoXCIgKyB3aGl0ZXNwYWNlICsgXCJ8JClcIiApKSAmJlxuXHRcdFx0XHRjbGFzc0NhY2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtLmNsYXNzTmFtZSB8fCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiICk7XG5cdFx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHRcdFx0aWYgKCByZXN1bHQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiIT1cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICFvcGVyYXRvciApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdCArPSBcIlwiO1xuXG5cdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCI9XCIgPyByZXN1bHQgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIhPVwiID8gcmVzdWx0ICE9PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiXj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIqPVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiJD1cIiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifj1cIiA/ICggXCIgXCIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsIFwiIFwiICkgKyBcIiBcIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifD1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5sZW5ndGggKyAxICkgPT09IGNoZWNrICsgXCItXCIgOlxuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkge1xuXHRcdFx0dmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gXCJudGhcIixcblx0XHRcdFx0Zm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09IFwibGFzdFwiLFxuXHRcdFx0XHRvZlR5cGUgPSB3aGF0ID09PSBcIm9mLXR5cGVcIjtcblxuXHRcdFx0cmV0dXJuIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgP1xuXG5cdFx0XHRcdC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobilcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuICEhZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0XHR9IDpcblxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIG5vZGVJbmRleCwgc3RhcnQsXG5cdFx0XHRcdFx0XHRkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyBcIm5leHRTaWJsaW5nXCIgOiBcInByZXZpb3VzU2libGluZ1wiLFxuXHRcdFx0XHRcdFx0cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0bmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHR1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZSxcblx0XHRcdFx0XHRcdGRpZmYgPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmICggcGFyZW50ICkge1xuXG5cdFx0XHRcdFx0XHQvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdFx0XHRpZiAoIHNpbXBsZSApIHtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCBkaXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKVxuXHRcdFx0XHRcdFx0XHRcdHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gXCJvbmx5XCIgJiYgIXN0YXJ0ICYmIFwibmV4dFNpYmxpbmdcIjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTtcblxuXHRcdFx0XHRcdFx0Ly8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGBcblx0XHRcdFx0XHRcdGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBwYXJlbnQ7XG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXggJiYgY2FjaGVbIDIgXTtcblx0XHRcdFx0XHRcdFx0bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07XG5cblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVha1xuXHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXg7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyB4bWwgOm50aC1jaGlsZCguLi4pXG5cdFx0XHRcdFx0XHRcdC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLilcblx0XHRcdFx0XHRcdFx0aWYgKCBkaWZmID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQrK2RpZmYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3Nlc1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnNcblx0XHRcdC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3Ncblx0XHRcdHZhciBhcmdzLFxuXHRcdFx0XHRmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIgKyBwc2V1ZG8gKTtcblxuXHRcdFx0Ly8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdFxuXHRcdFx0Ly8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcblx0XHRcdGlmICggZm5bIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0cmV0dXJuIGZuKCBhcmd1bWVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXNcblx0XHRcdGlmICggZm4ubGVuZ3RoID4gMSApIHtcblx0XHRcdFx0YXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sIFwiXCIsIGFyZ3VtZW50IF07XG5cdFx0XHRcdHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm47XG5cdFx0fVxuXHR9LFxuXG5cdHBzZXVkb3M6IHtcblx0XHQvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3Ncblx0XHRcIm5vdFwiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcblx0XHRcdC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG5cdFx0XHQvLyBzcGFjZXMgYXMgY29tYmluYXRvcnNcblx0XHRcdHZhciBpbnB1dCA9IFtdLFxuXHRcdFx0XHRyZXN1bHRzID0gW10sXG5cdFx0XHRcdG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICkgKTtcblxuXHRcdFx0cmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/XG5cdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pIDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFswXSA9IGVsZW07XG5cdFx0XHRcdFx0bWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApO1xuXHRcdFx0XHRcdC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gXCJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yXG5cdFx0Ly8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWVcblx0XHQvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLFxuXHRcdC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgXCItXCIuXG5cdFx0Ly8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuXG5cdFx0Ly8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS5cIlxuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG9cblx0XHRcImxhbmdcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHtcblx0XHRcdC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcblx0XHRcdGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCBcIlwiKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID9cblx0XHRcdFx0XHRcdGVsZW0ubGFuZyA6XG5cdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTtcblx0XHR9LFxuXG5cdFx0Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzXG5cdFx0XCJlbmFibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCBmYWxzZSApLFxuXHRcdFwiZGlzYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSxcblxuXHRcdFwiY2hlY2tlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCk7XG5cdFx0fSxcblxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBDb250ZW50c1xuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkb1xuXHRcdFx0Ly8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLFxuXHRcdFx0Ly8gICBidXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLilcblx0XHRcdC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICFFeHByLnBzZXVkb3NbXCJlbXB0eVwiXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIDAgXTtcblx0XHR9KSxcblxuXHRcdFwibGFzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHJldHVybiBbIGxlbmd0aCAtIDEgXTtcblx0XHR9KSxcblxuXHRcdFwiZXFcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0cmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJldmVuXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJvZGRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgLS1pID49IDA7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwiZ3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KVxuXHR9XG59O1xuXG5FeHByLnBzZXVkb3NbXCJudGhcIl0gPSBFeHByLnBzZXVkb3NbXCJlcVwiXTtcblxuLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3NcbmZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7XG59XG5mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApO1xufVxuXG4vLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnNcbmZ1bmN0aW9uIHNldEZpbHRlcnMoKSB7fVxuc2V0RmlsdGVycy5wcm90b3R5cGUgPSBFeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XG5FeHByLnNldEZpbHRlcnMgPSBuZXcgc2V0RmlsdGVycygpO1xuXG50b2tlbml6ZSA9IFNpenpsZS50b2tlbml6ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkge1xuXHR2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSxcblx0XHRzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLFxuXHRcdGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoIGNhY2hlZCApIHtcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApO1xuXHR9XG5cblx0c29GYXIgPSBzZWxlY3Rvcjtcblx0Z3JvdXBzID0gW107XG5cdHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjtcblxuXHR3aGlsZSAoIHNvRmFyICkge1xuXG5cdFx0Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1blxuXHRcdGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0aWYgKCBtYXRjaCApIHtcblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29GYXI7XG5cdFx0XHR9XG5cdFx0XHRncm91cHMucHVzaCggKHRva2VucyA9IFtdKSApO1xuXHRcdH1cblxuXHRcdG1hdGNoZWQgPSBmYWxzZTtcblxuXHRcdC8vIENvbWJpbmF0b3JzXG5cdFx0aWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKVxuXHRcdFx0fSk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRcdG1hdGNoZXM6IG1hdGNoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggIW1hdGNoZWQgKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3Ncblx0Ly8gaWYgd2UncmUganVzdCBwYXJzaW5nXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xuXHRyZXR1cm4gcGFyc2VPbmx5ID9cblx0XHRzb0Zhci5sZW5ndGggOlxuXHRcdHNvRmFyID9cblx0XHRcdFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6XG5cdFx0XHQvLyBDYWNoZSB0aGUgdG9rZW5zXG5cdFx0XHR0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTtcbn07XG5cbmZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0c2VsZWN0b3IgPSBcIlwiO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0c2tpcCA9IGNvbWJpbmF0b3IubmV4dCxcblx0XHRrZXkgPSBza2lwIHx8IGRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGNvbWJpbmF0b3IgY2FjaGluZ1xuXHRcdFx0aWYgKCB4bWwgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0aWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0ZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0pICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZ1xuXHRcdFx0XHRcdFx0XHRpZiAoIChuZXdDYWNoZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkpICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcbn1cblxuZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkge1xuXHRyZXR1cm4gbWF0Y2hlcnMubGVuZ3RoID4gMSA/XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gOlxuXHRcdG1hdGNoZXJzWzBdO1xufVxuXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBjb250ZXh0cy5sZW5ndGg7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7XG5cdHZhciBlbGVtLFxuXHRcdG5ld1VubWF0Y2hlZCA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsXG5cdFx0bWFwcGVkID0gbWFwICE9IG51bGw7XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0bmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0aWYgKCBtYXBwZWQgKSB7XG5cdFx0XHRcdFx0bWFwLnB1c2goIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBuZXdVbm1hdGNoZWQ7XG59XG5cbmZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHtcblx0aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTtcblx0fVxuXHRpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7XG5cdH1cblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwgeG1sICkge1xuXHRcdHZhciB0ZW1wLCBpLCBlbGVtLFxuXHRcdFx0cHJlTWFwID0gW10sXG5cdFx0XHRwb3N0TWFwID0gW10sXG5cdFx0XHRwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dFxuXHRcdFx0ZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8IFwiKlwiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLFxuXG5cdFx0XHQvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb25cblx0XHRcdG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgP1xuXHRcdFx0XHRjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdGVsZW1zLFxuXG5cdFx0XHRtYXRjaGVyT3V0ID0gbWF0Y2hlciA/XG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3VsdHMsXG5cdFx0XHRcdHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID9cblxuXHRcdFx0XHRcdC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdFtdIDpcblxuXHRcdFx0XHRcdC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseVxuXHRcdFx0XHRcdHJlc3VsdHMgOlxuXHRcdFx0XHRtYXRjaGVySW47XG5cblx0XHQvLyBGaW5kIHByaW1hcnkgbWF0Y2hlc1xuXHRcdGlmICggbWF0Y2hlciApIHtcblx0XHRcdG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcG9zdEZpbHRlclxuXHRcdGlmICggcG9zdEZpbHRlciApIHtcblx0XHRcdHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApO1xuXHRcdFx0cG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApO1xuXG5cdFx0XHQvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluXG5cdFx0XHRpID0gdGVtcC5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAoZWxlbSA9IHRlbXBbaV0pICkge1xuXHRcdFx0XHRcdG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggc2VlZCApIHtcblx0XHRcdGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7XG5cdFx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0XHQvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHNcblx0XHRcdFx0XHR0ZW1wID0gW107XG5cdFx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaFxuXHRcdFx0XHRcdFx0XHR0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBlbGVtKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZFxuXHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJlxuXHRcdFx0XHRcdFx0KHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkge1xuXG5cdFx0XHRcdFx0XHRzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWRcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlck91dCA9IGNvbmRlbnNlKFxuXHRcdFx0XHRtYXRjaGVyT3V0ID09PSByZXN1bHRzID9cblx0XHRcdFx0XHRtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOlxuXHRcdFx0XHRcdG1hdGNoZXJPdXRcblx0XHRcdCk7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7XG5cdHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMF0udHlwZSBdLFxuXHRcdGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVtcIiBcIl0sXG5cdFx0aSA9IGxlYWRpbmdSZWxhdGl2ZSA/IDEgOiAwLFxuXG5cdFx0Ly8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocylcblx0XHRtYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoXG5cdFx0XHRcdChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/XG5cdFx0XHRcdFx0bWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdFx0bWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApO1xuXHRcdFx0Ly8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRjaGVja0NvbnRleHQgPSBudWxsO1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9IF07XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1tpXS50eXBlIF0pICkge1xuXHRcdFx0bWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXJcblx0XHRcdGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHQvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmdcblx0XHRcdFx0aiA9ICsraTtcblx0XHRcdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBzZXRNYXRjaGVyKFxuXHRcdFx0XHRcdGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLFxuXHRcdFx0XHRcdGkgPiAxICYmIHRvU2VsZWN0b3IoXG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYFxuXHRcdFx0XHRcdFx0dG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gXCIgXCIgPyBcIipcIiA6IFwiXCIgfSlcblx0XHRcdFx0XHQpLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSxcblx0XHRcdFx0XHRtYXRjaGVyLFxuXHRcdFx0XHRcdGkgPCBqICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSB7XG5cdHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0YnlFbGVtZW50ID0gZWxlbWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0c3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkge1xuXHRcdFx0dmFyIGVsZW0sIGosIG1hdGNoZXIsXG5cdFx0XHRcdG1hdGNoZWRDb3VudCA9IDAsXG5cdFx0XHRcdGkgPSBcIjBcIixcblx0XHRcdFx0dW5tYXRjaGVkID0gc2VlZCAmJiBbXSxcblx0XHRcdFx0c2V0TWF0Y2hlZCA9IFtdLFxuXHRcdFx0XHRjb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCxcblx0XHRcdFx0Ly8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dFxuXHRcdFx0XHRlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFtcIlRBR1wiXSggXCIqXCIsIG91dGVybW9zdCApLFxuXHRcdFx0XHQvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlclxuXHRcdFx0XHRkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSxcblx0XHRcdFx0bGVuID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHRpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHRcdFx0XHRcdFx0eG1sID0gIWRvY3VtZW50SXNIVE1MO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0IHx8IGRvY3VtZW50LCB4bWwpICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMgdmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gbWFrZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS5cblx0XHRcdG1hdGNoZWRDb3VudCArPSBpO1xuXG5cdFx0XHQvLyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHNcblx0XHRcdC8vIE5PVEU6IFRoaXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5lLiwgYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZpc2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZVxuXHRcdFx0Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC5cblx0XHRcdC8vIEluY3JlbWVudGluZyBhbiBpbml0aWFsbHktc3RyaW5nIFwiMFwiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXRcblx0XHRcdC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgXCIwMFwiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzb1xuXHRcdFx0Ly8gbnVtZXJpY2FsbHkgemVyby5cblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEodW5tYXRjaGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvcikgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZFxuXHQvLyAodGhlIGxhdHRlciBvZiB3aGljaCBndWFyYW50ZWVzIHVzIGNvbnRleHQpXG5cdGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xuXG5cdFx0Ly8gUmVkdWNlIGNvbnRleHQgaWYgdGhlIGxlYWRpbmcgY29tcG91bmQgc2VsZWN0b3IgaXMgYW4gSURcblx0XHR0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7XG5cdFx0aWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09IFwiSURcIiAmJlxuXHRcdFx0XHRjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7XG5cblx0XHRcdGNvbnRleHQgPSAoIEV4cHIuZmluZFtcIklEXCJdKCB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLCBmdW5lc2NhcGUpLCBjb250ZXh0ICkgfHwgW10gKVswXTtcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHQvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsXG5cdFx0XHR9IGVsc2UgaWYgKCBjb21waWxlZCApIHtcblx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZ1xuXHRcdGkgPSBtYXRjaEV4cHJbXCJuZWVkc0NvbnRleHRcIl0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG9rZW4gPSB0b2tlbnNbaV07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKHR5cGUgPSB0b2tlbi50eXBlKSBdICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoIChzZWVkID0gZmluZChcblx0XHRcdFx0XHR0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHRcdFx0XHQpKSApIHtcblxuXHRcdFx0XHRcdC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseVxuXHRcdFx0XHRcdHRva2Vucy5zcGxpY2UoIGksIDEgKTtcblx0XHRcdFx0XHRzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApO1xuXHRcdFx0XHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcblx0Ly8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZVxuXHQoIGNvbXBpbGVkIHx8IGNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApICkoXG5cdFx0c2VlZCxcblx0XHRjb250ZXh0LFxuXHRcdCFkb2N1bWVudElzSFRNTCxcblx0XHRyZXN1bHRzLFxuXHRcdCFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0KTtcblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBPbmUtdGltZSBhc3NpZ25tZW50c1xuXG4vLyBTb3J0IHN0YWJpbGl0eVxuc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKFwiXCIpID09PSBleHBhbmRvO1xuXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrXG4vLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uXG5zdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTtcblxuLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50XG5zZXREb2N1bWVudCgpO1xuXG4vLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KVxuLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqXG5zdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKVxuXHRyZXR1cm4gZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKSApICYgMTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBJRTw4XG4vLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSBcImludGVycG9sYXRpb25cIlxuLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHhcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PSBcIiNcIiA7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwidHlwZVwiID8gMSA6IDIgKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGlucHV0Lz5cIjtcblx0ZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiwgXCJcIiApO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBcIlwiO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ2YWx1ZVwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllc1xuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0cmV0dXJuIGVsLmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpID09IG51bGw7XG59KSApIHtcblx0YWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciB2YWw7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDpcblx0XHRcdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0fVxuXHR9KTtcbn1cblxucmV0dXJuIFNpenpsZTtcblxufSkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5cbi8vIERlcHJlY2F0ZWRcbmpRdWVyeS5leHByWyBcIjpcIiBdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcbmpRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5lc2NhcGU7XG5cblxuXG5cbnZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0dmFyIG1hdGNoZWQgPSBbXSxcblx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0aWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7XG5cdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7XG5cblxuXG5mdW5jdGlvbiBub2RlTmFtZSggZWxlbSwgbmFtZSApIHtcblxuICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblxufTtcbnZhciByc2luZ2xlVGFnID0gKCAvXjwoW2Etel1bXlxcL1xcMD46XFx4MjBcXHRcXHJcXG5cXGZdKilbXFx4MjBcXHRcXHJcXG5cXGZdKlxcLz8+KD86PFxcL1xcMT58KSQvaSApO1xuXG5cblxuLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3RcbmZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkge1xuXHRpZiAoIGlzRnVuY3Rpb24oIHF1YWxpZmllciApICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIFNpbmdsZSBlbGVtZW50XG5cdGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBBcnJheWxpa2Ugb2YgZWxlbWVudHMgKGpRdWVyeSwgYXJndW1lbnRzLCBBcnJheSlcblx0aWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBGaWx0ZXJlZCBkaXJlY3RseSBmb3IgYm90aCBzaW1wbGUgYW5kIGNvbXBsZXggc2VsZWN0b3JzXG5cdHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTtcbn1cblxualF1ZXJ5LmZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkge1xuXHR2YXIgZWxlbSA9IGVsZW1zWyAwIF07XG5cblx0aWYgKCBub3QgKSB7XG5cdFx0ZXhwciA9IFwiOm5vdChcIiArIGV4cHIgKyBcIilcIjtcblx0fVxuXG5cdGlmICggZWxlbXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxO1xuXHR9ICkgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZmluZDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBpLCByZXQsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdHNlbGYgPSB0aGlzO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMgKSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApICk7XG5cdFx0fVxuXG5cdFx0cmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7XG5cblx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBzZWxmWyBpIF0sIHJldCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIHJldCApIDogcmV0O1xuXHR9LFxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTtcblx0fSxcblx0bm90OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlICkgKTtcblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gISF3aW5ub3coXG5cdFx0XHR0aGlzLFxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0XG5cdFx0XHQvLyBzbyAkKFwicDpmaXJzdFwiKS5pcyhcInA6bGFzdFwiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gXCJwXCIuXG5cdFx0XHR0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0c2VsZWN0b3IgfHwgW10sXG5cdFx0XHRmYWxzZVxuXHRcdCkubGVuZ3RoO1xuXHR9XG59ICk7XG5cblxuLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3RcblxuXG4vLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudClcbnZhciByb290alF1ZXJ5LFxuXG5cdC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG5cdC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSlcblx0Ly8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKCMxMTI5MDogbXVzdCBzdGFydCB3aXRoIDwpXG5cdC8vIFNob3J0Y3V0IHNpbXBsZSAjaWQgY2FzZSBmb3Igc3BlZWRcblx0cnF1aWNrRXhwciA9IC9eKD86XFxzKig8W1xcd1xcV10rPilbXj5dKnwjKFtcXHctXSspKSQvLFxuXG5cdGluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdCApIHtcblx0XHR2YXIgbWF0Y2gsIGVsZW07XG5cblx0XHQvLyBIQU5ETEU6ICQoXCJcIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSlcblx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblxuXHRcdC8vIE1ldGhvZCBpbml0KCkgYWNjZXB0cyBhbiBhbHRlcm5hdGUgcm9vdGpRdWVyeVxuXHRcdC8vIHNvIG1pZ3JhdGUgY2FuIHN1cHBvcnQgalF1ZXJ5LnN1YiAoZ2gtMjEwMSlcblx0XHRyb290ID0gcm9vdCB8fCByb290alF1ZXJ5O1xuXG5cdFx0Ly8gSGFuZGxlIEhUTUwgc3RyaW5nc1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0aWYgKCBzZWxlY3RvclsgMCBdID09PSBcIjxcIiAmJlxuXHRcdFx0XHRzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0gMSBdID09PSBcIj5cIiAmJlxuXHRcdFx0XHRzZWxlY3Rvci5sZW5ndGggPj0gMyApIHtcblxuXHRcdFx0XHQvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVja1xuXHRcdFx0XHRtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWRcblx0XHRcdGlmICggbWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpXG5cdFx0XHRcdGlmICggbWF0Y2hbIDEgXSApIHtcblx0XHRcdFx0XHRjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbIDAgXSA6IGNvbnRleHQ7XG5cblx0XHRcdFx0XHQvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTChcblx0XHRcdFx0XHRcdG1hdGNoWyAxIF0sXG5cdFx0XHRcdFx0XHRjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCkgKTtcblxuXHRcdFx0XHRcdC8vIEhBTkRMRTogJChodG1sLCBwcm9wcylcblx0XHRcdFx0XHRpZiAoIHJzaW5nbGVUYWcudGVzdCggbWF0Y2hbIDEgXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMgaWYgcG9zc2libGVcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2ggXSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXNcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoI2lkKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbIDIgXSApO1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdFxuXHRcdFx0XHRcdFx0dGhpc1sgMCBdID0gZWxlbTtcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSlcblx0XHRcdH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkge1xuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3QgKS5maW5kKCBzZWxlY3RvciApO1xuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dClcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpXG5cdFx0fSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7XG5cdFx0XHR0aGlzWyAwIF0gPSBzZWxlY3Rvcjtcblx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0Ly8gSEFORExFOiAkKGZ1bmN0aW9uKVxuXHRcdC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFkeVxuXHRcdH0gZWxzZSBpZiAoIGlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7XG5cdFx0XHRyZXR1cm4gcm9vdC5yZWFkeSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0cm9vdC5yZWFkeSggc2VsZWN0b3IgKSA6XG5cblx0XHRcdFx0Ly8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRzZWxlY3RvciggalF1ZXJ5ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7XG5cdH07XG5cbi8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb25cbmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuO1xuXG4vLyBJbml0aWFsaXplIGNlbnRyYWwgcmVmZXJlbmNlXG5yb290alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApO1xuXG5cbnZhciBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxcblxuXHQvLyBNZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldFxuXHRndWFyYW50ZWVkVW5pcXVlID0ge1xuXHRcdGNoaWxkcmVuOiB0cnVlLFxuXHRcdGNvbnRlbnRzOiB0cnVlLFxuXHRcdG5leHQ6IHRydWUsXG5cdFx0cHJldjogdHJ1ZVxuXHR9O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhhczogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksXG5cdFx0XHRsID0gdGFyZ2V0cy5sZW5ndGg7XG5cblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1sgaSBdICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0Y2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHtcblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRtYXRjaGVkID0gW10sXG5cdFx0XHR0YXJnZXRzID0gdHlwZW9mIHNlbGVjdG9ycyAhPT0gXCJzdHJpbmdcIiAmJiBqUXVlcnkoIHNlbGVjdG9ycyApO1xuXG5cdFx0Ly8gUG9zaXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4dFxuXHRcdGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZvciAoIGN1ciA9IHRoaXNbIGkgXTsgY3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cblx0XHRcdFx0XHQvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHNcblx0XHRcdFx0XHRpZiAoIGN1ci5ub2RlVHlwZSA8IDExICYmICggdGFyZ2V0cyA/XG5cdFx0XHRcdFx0XHR0YXJnZXRzLmluZGV4KCBjdXIgKSA+IC0xIDpcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcGFzcyBub24tZWxlbWVudHMgdG8gU2l6emxlXG5cdFx0XHRcdFx0XHRjdXIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBjdXIsIHNlbGVjdG9ycyApICkgKSB7XG5cblx0XHRcdFx0XHRcdG1hdGNoZWQucHVzaCggY3VyICk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBtYXRjaGVkICk7XG5cdH0sXG5cblx0Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0XG5cdGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50XG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlzWyAwIF0ucGFyZW50Tm9kZSApID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTtcblx0XHR9XG5cblx0XHQvLyBJbmRleCBpbiBzZWxlY3RvclxuXHRcdGlmICggdHlwZW9mIGVsZW0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50XG5cdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcyxcblxuXHRcdFx0Ly8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkXG5cdFx0XHRlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW1cblx0XHQpO1xuXHR9LFxuXG5cdGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayhcblx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0b3IsIGNvbnRleHQgKSApXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblxuXHRhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID9cblx0XHRcdHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoIHNlbGVjdG9yIClcblx0XHQpO1xuXHR9XG59ICk7XG5cbmZ1bmN0aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkge1xuXHR3aGlsZSAoICggY3VyID0gY3VyWyBkaXIgXSApICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApIHt9XG5cdHJldHVybiBjdXI7XG59XG5cbmpRdWVyeS5lYWNoKCB7XG5cdHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsO1xuXHR9LFxuXHRwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiApO1xuXHR9LFxuXHRwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiwgdW50aWwgKTtcblx0fSxcblx0bmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZ3MoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApO1xuXHR9LFxuXHRjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCBlbGVtLmZpcnN0Q2hpbGQgKTtcblx0fSxcblx0Y29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuICAgICAgICBpZiAoIG5vZGVOYW1lKCBlbGVtLCBcImlmcmFtZVwiICkgKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seSwgaU9TIDcgb25seSwgQW5kcm9pZCBCcm93c2VyIDw9NC4zIG9ubHlcbiAgICAgICAgLy8gVHJlYXQgdGhlIHRlbXBsYXRlIGVsZW1lbnQgYXMgYSByZWd1bGFyIG9uZSBpbiBicm93c2VycyB0aGF0XG4gICAgICAgIC8vIGRvbid0IHN1cHBvcnQgaXQuXG4gICAgICAgIGlmICggbm9kZU5hbWUoIGVsZW0sIFwidGVtcGxhdGVcIiApICkge1xuICAgICAgICAgICAgZWxlbSA9IGVsZW0uY29udGVudCB8fCBlbGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApO1xuXHR9XG59LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApO1xuXG5cdFx0aWYgKCBuYW1lLnNsaWNlKCAtNSApICE9PSBcIlVudGlsXCIgKSB7XG5cdFx0XHRzZWxlY3RvciA9IHVudGlsO1xuXHRcdH1cblxuXHRcdGlmICggc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0bWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLmxlbmd0aCA+IDEgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGVzXG5cdFx0XHRpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzXG5cdFx0XHRpZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7XG5cdFx0XHRcdG1hdGNoZWQucmV2ZXJzZSgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZCApO1xuXHR9O1xufSApO1xudmFyIHJub3RodG1sd2hpdGUgPSAoIC9bXlxceDIwXFx0XFxyXFxuXFxmXSsvZyApO1xuXG5cblxuLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXNcbmZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSB7XG5cdHZhciBvYmplY3QgPSB7fTtcblx0alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7XG5cdFx0b2JqZWN0WyBmbGFnIF0gPSB0cnVlO1xuXHR9ICk7XG5cdHJldHVybiBvYmplY3Q7XG59XG5cbi8qXG4gKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczpcbiAqXG4gKlx0b3B0aW9uczogYW4gb3B0aW9uYWwgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvd1xuICpcdFx0XHR0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0XG4gKlxuICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBjYW4gYmVcbiAqIFwiZmlyZWRcIiBtdWx0aXBsZSB0aW1lcy5cbiAqXG4gKiBQb3NzaWJsZSBvcHRpb25zOlxuICpcbiAqXHRvbmNlOlx0XHRcdHdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0bWVtb3J5Olx0XHRcdHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWRcbiAqXHRcdFx0XHRcdGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0IFwibWVtb3JpemVkXCJcbiAqXHRcdFx0XHRcdHZhbHVlcyAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHR1bmlxdWU6XHRcdFx0d2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpXG4gKlxuICpcdHN0b3BPbkZhbHNlOlx0aW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlXG4gKlxuICovXG5qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0Ly8gQ29udmVydCBvcHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRlZFxuXHQvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpXG5cdG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0Y3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIDpcblx0XHRqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApO1xuXG5cdHZhciAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nXG5cdFx0ZmlyaW5nLFxuXG5cdFx0Ly8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHNcblx0XHRtZW1vcnksXG5cblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZFxuXHRcdGZpcmVkLFxuXG5cdFx0Ly8gRmxhZyB0byBwcmV2ZW50IGZpcmluZ1xuXHRcdGxvY2tlZCxcblxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XG5cdFx0bGlzdCA9IFtdLFxuXG5cdFx0Ly8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlzdHNcblx0XHRxdWV1ZSA9IFtdLFxuXG5cdFx0Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgYWRkL3JlbW92ZSBhcyBuZWVkZWQpXG5cdFx0ZmlyaW5nSW5kZXggPSAtMSxcblxuXHRcdC8vIEZpcmUgY2FsbGJhY2tzXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmdcblx0XHRcdGxvY2tlZCA9IGxvY2tlZCB8fCBvcHRpb25zLm9uY2U7XG5cblx0XHRcdC8vIEV4ZWN1dGUgY2FsbGJhY2tzIGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLFxuXHRcdFx0Ly8gcmVzcGVjdGluZyBmaXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlc1xuXHRcdFx0ZmlyZWQgPSBmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBxdWV1ZS5sZW5ndGg7IGZpcmluZ0luZGV4ID0gLTEgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRcdHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb25cblx0XHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJlxuXHRcdFx0XHRcdFx0b3B0aW9ucy5zdG9wT25GYWxzZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRkIGRvZXNuJ3QgcmUtZmlyZVxuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0XG5cdFx0XHRpZiAoICFvcHRpb25zLm1lbW9yeSApIHtcblx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXG5cdFx0XHQvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZFxuXHRcdFx0aWYgKCBsb2NrZWQgKSB7XG5cblx0XHRcdFx0Ly8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxsc1xuXHRcdFx0XHRpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxpc3QgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0XG5cdFx0c2VsZiA9IHtcblxuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBhIHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmdcblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQoIGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0LnB1c2goIGFyZyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdG9UeXBlKCBhcmcgKSAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fSApKCBhcmd1bWVudHMgKTtcblxuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gP1xuXHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOlxuXHRcdFx0XHRcdGxpc3QubGVuZ3RoID4gMDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3Rcblx0XHRcdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmUgYW5kIC5hZGRcblx0XHRcdC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0Ly8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZVxuXHRcdFx0Ly8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdClcblx0XHRcdC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRsb2NrZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFsb2NrZWQ7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XG5cdFx0XHRcdGlmICggIWxvY2tlZCApIHtcblx0XHRcdFx0XHRhcmdzID0gYXJncyB8fCBbXTtcblx0XHRcdFx0XHRhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdO1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGFyZ3MgKTtcblx0XHRcdFx0XHRpZiAoICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHNcblx0XHRcdGZpcmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2Vcblx0XHRcdGZpcmVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhZmlyZWQ7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRyZXR1cm4gc2VsZjtcbn07XG5cblxuZnVuY3Rpb24gSWRlbnRpdHkoIHYgKSB7XG5cdHJldHVybiB2O1xufVxuZnVuY3Rpb24gVGhyb3dlciggZXggKSB7XG5cdHRocm93IGV4O1xufVxuXG5mdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0LCBub1ZhbHVlICkge1xuXHR2YXIgbWV0aG9kO1xuXG5cdHRyeSB7XG5cblx0XHQvLyBDaGVjayBmb3IgcHJvbWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9ub3VzIGJlaGF2aW9yXG5cdFx0aWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgdGhlbmFibGVzXG5cdFx0fSBlbHNlIGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciBub24tdGhlbmFibGVzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29udHJvbCBgcmVzb2x2ZWAgYXJndW1lbnRzIGJ5IGxldHRpbmcgQXJyYXkjc2xpY2UgY2FzdCBib29sZWFuIGBub1ZhbHVlYCB0byBpbnRlZ2VyOlxuXHRcdFx0Ly8gKiBmYWxzZTogWyB2YWx1ZSBdLnNsaWNlKCAwICkgPT4gcmVzb2x2ZSggdmFsdWUgKVxuXHRcdFx0Ly8gKiB0cnVlOiBbIHZhbHVlIF0uc2xpY2UoIDEgKSA9PiByZXNvbHZlKClcblx0XHRcdHJlc29sdmUuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdLnNsaWNlKCBub1ZhbHVlICkgKTtcblx0XHR9XG5cblx0Ly8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zXG5cdC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW5cblx0Ly8gRGVmZXJyZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi5cblx0fSBjYXRjaCAoIHZhbHVlICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seVxuXHRcdC8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHRcblx0XHRyZWplY3QuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdICk7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXG5cdFx0XHRcdC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBjYWxsYmFja3MsXG5cdFx0XHRcdC8vIC4uLiAudGhlbiBoYW5kbGVycywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV1cblx0XHRcdFx0WyBcIm5vdGlmeVwiLCBcInByb2dyZXNzXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksIDIgXSxcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAwLCBcInJlc29sdmVkXCIgXSxcblx0XHRcdFx0WyBcInJlamVjdFwiLCBcImZhaWxcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDEsIFwicmVqZWN0ZWRcIiBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiY2F0Y2hcIjogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnRoZW4oIG51bGwsIGZuICk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7XG5cdFx0XHRcdFx0dmFyIGZucyA9IGFyZ3VtZW50cztcblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBNYXAgdHVwbGVzIChwcm9ncmVzcywgZG9uZSwgZmFpbCkgdG8gYXJndW1lbnRzIChkb25lLCBmYWlsLCBwcm9ncmVzcylcblx0XHRcdFx0XHRcdFx0dmFyIGZuID0gaXNGdW5jdGlvbiggZm5zWyB0dXBsZVsgNCBdIF0gKSAmJiBmbnNbIHR1cGxlWyA0IF0gXTtcblxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5wcm9ncmVzcyhmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5ub3RpZnkgfSlcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmZhaWwoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVqZWN0IH0pXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMSBdIF0oIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkICYmIGlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5kb25lKCBuZXdEZWZlci5yZXNvbHZlIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmZhaWwoIG5ld0RlZmVyLnJlamVjdCApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZuID8gWyByZXR1cm5lZCBdIDogYXJndW1lbnRzXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0Zm5zID0gbnVsbDtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7XG5cdFx0XHRcdFx0dmFyIG1heERlcHRoID0gMDtcblx0XHRcdFx0XHRmdW5jdGlvbiByZXNvbHZlKCBkZXB0aCwgZGVmZXJyZWQsIGhhbmRsZXIsIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRhcmdzID0gYXJndW1lbnRzLFxuXHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCwgdGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjNcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1wdHNcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggPCBtYXhEZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCA9IGhhbmRsZXIuYXBwbHkoIHRoYXQsIGFyZ3MgKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNDhcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgPT09IGRlZmVycmVkLnByb21pc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggXCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb25cIiApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9ucyAyLjMuMy4xLCAzLjVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU0XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC03NVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gUmV0cmlldmUgYHRoZW5gIG9ubHkgb25jZVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhlbiA9IHJldHVybmVkICYmXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuNFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IGNoZWNrIG9iamVjdHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlbmFiaWxpdHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCB0eXBlb2YgcmV0dXJuZWQgPT09IFwib2JqZWN0XCIgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgcmV0dXJuZWQgPT09IFwiZnVuY3Rpb25cIiApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhIHJldHVybmVkIHRoZW5hYmxlXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHRoZW4gKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJvZ3Jlc3Ncblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYXhEZXB0aCsrO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGggKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGFsbCBvdGhlciByZXR1cm5lZCB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBJZGVudGl0eSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIHJldHVybmVkIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHNwZWNpYWwgfHwgZGVmZXJyZWQucmVzb2x2ZVdpdGggKSggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IG5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBjYXRjaCBhbmQgcmVqZWN0IGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzID0gc3BlY2lhbCA/XG5cdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93IDpcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3coKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02MVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBwb3N0LXJlc29sdXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gVGhyb3dlciApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgZSBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xXG5cdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU3XG5cdFx0XHRcdFx0XHRcdC8vIFJlLXJlc29sdmUgcHJvbWlzZXMgaW1tZWRpYXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVqZWN0aW9uIGZyb21cblx0XHRcdFx0XHRcdFx0Ly8gc3Vic2VxdWVudCBlcnJvcnNcblx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb25cblx0XHRcdFx0XHRcdFx0XHQvLyBzaW5jZSBpdCdzIG90aGVyd2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9uIGdvZXMgYXN5bmNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgPSBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBwcm9jZXNzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXG5cdFx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uUHJvZ3Jlc3MgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblByb2dyZXNzIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLm5vdGlmeVdpdGhcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMSBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25GdWxmaWxsZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkZ1bGZpbGxlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDIgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uUmVqZWN0ZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblJlamVjdGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdFRocm93ZXJcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWRcblx0XHRcdFx0Ly8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdFxuXHRcdFx0XHRwcm9taXNlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdFx0XHRcdHJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlZmVycmVkID0ge307XG5cblx0XHQvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0dmFyIGxpc3QgPSB0dXBsZVsgMiBdLFxuXHRcdFx0XHRzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07XG5cblx0XHRcdC8vIHByb21pc2UucHJvZ3Jlc3MgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5kb25lID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZmFpbCA9IGxpc3QuYWRkXG5cdFx0XHRwcm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDtcblxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXG5cdFx0XHRpZiAoIHN0YXRlU3RyaW5nICkge1xuXHRcdFx0XHRsaXN0LmFkZChcblx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlc29sdmVkXCIgKGkuZS4sIGZ1bGZpbGxlZClcblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZWplY3RlZFwiXG5cdFx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlU3RyaW5nO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMiBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDMgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfY2FsbGJhY2tzLmxvY2tcblx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMiBdLmxvY2ssXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5sb2NrXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmVcblx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5maXJlXG5cdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5maXJlXG5cdFx0XHRsaXN0LmFkZCggdHVwbGVbIDMgXS5maXJlICk7XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfVxuXHRcdFx0Ly8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZlV2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfVxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gZGVmZXJyZWQubm90aWZ5V2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmVXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0Ly8gZGVmZXJyZWQucmVqZWN0V2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXSA9IGxpc3QuZmlyZVdpdGg7XG5cdFx0fSApO1xuXG5cdFx0Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlXG5cdFx0cHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApO1xuXG5cdFx0Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueVxuXHRcdGlmICggZnVuYyApIHtcblx0XHRcdGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGRvbmUhXG5cdFx0cmV0dXJuIGRlZmVycmVkO1xuXHR9LFxuXG5cdC8vIERlZmVycmVkIGhlbHBlclxuXHR3aGVuOiBmdW5jdGlvbiggc2luZ2xlVmFsdWUgKSB7XG5cdFx0dmFyXG5cblx0XHRcdC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlc1xuXHRcdFx0cmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gY291bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzXG5cdFx0XHRpID0gcmVtYWluaW5nLFxuXG5cdFx0XHQvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhXG5cdFx0XHRyZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSApLFxuXHRcdFx0cmVzb2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLFxuXG5cdFx0XHQvLyB0aGUgbWFzdGVyIERlZmVycmVkXG5cdFx0XHRtYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeVxuXHRcdFx0dXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7XG5cdFx0XHRcdFx0aWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xuXHRcdFx0XHRcdFx0bWFzdGVyLnJlc29sdmVXaXRoKCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXG5cdFx0Ly8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxpa2UgUHJvbWlzZS5yZXNvbHZlXG5cdFx0aWYgKCByZW1haW5pbmcgPD0gMSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHNpbmdsZVZhbHVlLCBtYXN0ZXIuZG9uZSggdXBkYXRlRnVuYyggaSApICkucmVzb2x2ZSwgbWFzdGVyLnJlamVjdCxcblx0XHRcdFx0IXJlbWFpbmluZyApO1xuXG5cdFx0XHQvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAgc2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApXG5cdFx0XHRpZiAoIG1hc3Rlci5zdGF0ZSgpID09PSBcInBlbmRpbmdcIiB8fFxuXHRcdFx0XHRpc0Z1bmN0aW9uKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgcmVzb2x2ZVZhbHVlc1sgaSBdLnRoZW4gKSApIHtcblxuXHRcdFx0XHRyZXR1cm4gbWFzdGVyLnRoZW4oKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBNdWx0aXBsZSBhcmd1bWVudHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVtZW50c1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0YWRvcHRWYWx1ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5jKCBpICksIG1hc3Rlci5yZWplY3QgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbWFzdGVyLnByb21pc2UoKTtcblx0fVxufSApO1xuXG5cbi8vIFRoZXNlIHVzdWFsbHkgaW5kaWNhdGUgYSBwcm9ncmFtbWVyIG1pc3Rha2UgZHVyaW5nIGRldmVsb3BtZW50LFxuLy8gd2FybiBhYm91dCB0aGVtIEFTQVAgcmF0aGVyIHRoYW4gc3dhbGxvd2luZyB0aGVtIGJ5IGRlZmF1bHQuXG52YXIgcmVycm9yTmFtZXMgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztcblxualF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbiggZXJyb3IsIHN0YWNrICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDggLSA5IG9ubHlcblx0Ly8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWVcblx0aWYgKCB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS53YXJuICYmIGVycm9yICYmIHJlcnJvck5hbWVzLnRlc3QoIGVycm9yLm5hbWUgKSApIHtcblx0XHR3aW5kb3cuY29uc29sZS53YXJuKCBcImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246IFwiICsgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIHN0YWNrICk7XG5cdH1cbn07XG5cblxuXG5cbmpRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJvciApIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdHRocm93IGVycm9yO1xuXHR9ICk7XG59O1xuXG5cblxuXG4vLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHlcbnZhciByZWFkeUxpc3QgPSBqUXVlcnkuRGVmZXJyZWQoKTtcblxualF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkge1xuXG5cdHJlYWR5TGlzdFxuXHRcdC50aGVuKCBmbiApXG5cblx0XHQvLyBXcmFwIGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiBpbiBhIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIGxvb2t1cFxuXHRcdC8vIGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFja1xuXHRcdC8vIHJlZ2lzdHJhdGlvbi5cblx0XHQuY2F0Y2goIGZ1bmN0aW9uKCBlcnJvciApIHtcblx0XHRcdGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiggZXJyb3IgKTtcblx0XHR9ICk7XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy5cblx0aXNSZWFkeTogZmFsc2UsXG5cblx0Ly8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJlZm9yZVxuXHQvLyB0aGUgcmVhZHkgZXZlbnQgZmlyZXMuIFNlZSAjNjc4MVxuXHRyZWFkeVdhaXQ6IDEsXG5cblx0Ly8gSGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeVxuXHRyZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7XG5cblx0XHQvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5XG5cdFx0aWYgKCB3YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVhZHkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5XG5cdFx0alF1ZXJ5LmlzUmVhZHkgPSB0cnVlO1xuXG5cdFx0Ly8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmVcblx0XHRpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBleGVjdXRlXG5cdFx0cmVhZHlMaXN0LnJlc29sdmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47XG5cbi8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kXG5mdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG5cdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcblx0alF1ZXJ5LnJlYWR5KCk7XG59XG5cbi8vIENhdGNoIGNhc2VzIHdoZXJlICQoZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkXG4vLyBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC5cbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDEwIG9ubHlcbi8vIE9sZGVyIElFIHNvbWV0aW1lcyBzaWduYWxzIFwiaW50ZXJhY3RpdmVcIiB0b28gc29vblxuaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgfHxcblx0KCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSBcImxvYWRpbmdcIiAmJiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7XG5cblx0Ly8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTtcblxufSBlbHNlIHtcblxuXHQvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrXG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblxuXHQvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29ya1xuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xufVxuXG5cblxuXG4vLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb25cbi8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvblxudmFyIGFjY2VzcyA9IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJsZSwgZW1wdHlHZXQsIHJhdyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGVsZW1zLmxlbmd0aCxcblx0XHRidWxrID0ga2V5ID09IG51bGw7XG5cblx0Ly8gU2V0cyBtYW55IHZhbHVlc1xuXHRpZiAoIHRvVHlwZSgga2V5ICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblx0XHRmb3IgKCBpIGluIGtleSApIHtcblx0XHRcdGFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkgXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApO1xuXHRcdH1cblxuXHQvLyBTZXRzIG9uZSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cblx0XHRpZiAoICFpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmF3ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGJ1bGsgKSB7XG5cblx0XHRcdC8vIEJ1bGsgb3BlcmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldFxuXHRcdFx0aWYgKCByYXcgKSB7XG5cdFx0XHRcdGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApO1xuXHRcdFx0XHRmbiA9IG51bGw7XG5cblx0XHRcdC8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1ZXNcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1bGsgPSBmbjtcblx0XHRcdFx0Zm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gYnVsay5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUgKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdGZuKFxuXHRcdFx0XHRcdGVsZW1zWyBpIF0sIGtleSwgcmF3ID9cblx0XHRcdFx0XHR2YWx1ZSA6XG5cdFx0XHRcdFx0dmFsdWUuY2FsbCggZWxlbXNbIGkgXSwgaSwgZm4oIGVsZW1zWyBpIF0sIGtleSApIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIGNoYWluYWJsZSApIHtcblx0XHRyZXR1cm4gZWxlbXM7XG5cdH1cblxuXHQvLyBHZXRzXG5cdGlmICggYnVsayApIHtcblx0XHRyZXR1cm4gZm4uY2FsbCggZWxlbXMgKTtcblx0fVxuXG5cdHJldHVybiBsZW4gPyBmbiggZWxlbXNbIDAgXSwga2V5ICkgOiBlbXB0eUdldDtcbn07XG5cblxuLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nXG52YXIgcm1zUHJlZml4ID0gL14tbXMtLyxcblx0cmRhc2hBbHBoYSA9IC8tKFthLXpdKS9nO1xuXG4vLyBVc2VkIGJ5IGNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKClcbmZ1bmN0aW9uIGZjYW1lbENhc2UoIGFsbCwgbGV0dGVyICkge1xuXHRyZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXNcbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcbi8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3MilcbmZ1bmN0aW9uIGNhbWVsQ2FzZSggc3RyaW5nICkge1xuXHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgXCJtcy1cIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTtcbn1cbnZhciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdC8vIEFjY2VwdHMgb25seTpcblx0Ly8gIC0gTm9kZVxuXHQvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFXG5cdC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFXG5cdC8vICAtIE9iamVjdFxuXHQvLyAgICAtIEFueVxuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBEYXRhKCkge1xuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcblxuRGF0YS5wcm90b3R5cGUgPSB7XG5cblx0Y2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZVxuXHRcdHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdC8vIElmIG5vdCwgY3JlYXRlIG9uZVxuXHRcdGlmICggIXZhbHVlICkge1xuXHRcdFx0dmFsdWUgPSB7fTtcblxuXHRcdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlICM4MzM1LlxuXHRcdFx0Ly8gQWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIG93bmVyICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlclxuXHRcdFx0XHQvLyB1c2UgcGxhaW4gYXNzaWdubWVudFxuXHRcdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBzZWN1cmUgaXQgaW4gYSBub24tZW51bWVyYWJsZSBwcm9wZXJ0eVxuXHRcdFx0XHQvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZVxuXHRcdFx0XHQvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyByZW1vdmVkXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRvLCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0sXG5cdHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHtcblx0XHR2YXIgcHJvcCxcblx0XHRcdGNhY2hlID0gdGhpcy5jYWNoZSggb3duZXIgKTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwga2V5LCB2YWx1ZSBdIGFyZ3Ncblx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBjYW1lbENhc2UoIGRhdGEgKSBdID0gdmFsdWU7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJnc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvcHkgdGhlIHByb3BlcnRpZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2JqZWN0XG5cdFx0XHRmb3IgKCBwcm9wIGluIGRhdGEgKSB7XG5cdFx0XHRcdGNhY2hlWyBjYW1lbENhc2UoIHByb3AgKSBdID0gZGF0YVsgcHJvcCBdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGU7XG5cdH0sXG5cdGdldDogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0cmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMuY2FjaGUoIG93bmVyICkgOlxuXG5cdFx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gJiYgb3duZXJbIHRoaXMuZXhwYW5kbyBdWyBjYW1lbENhc2UoIGtleSApIF07XG5cdH0sXG5cdGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZhbHVlICkge1xuXG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KCAoIGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkge1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTtcblx0XHR9XG5cblx0XHQvLyBXaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllc1xuXHRcdC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly9cblx0XHR0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNpbmNlIHRoZSBcInNldFwiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50c1xuXHRcdC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7XG5cdH0sXG5cdHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIGtleSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0IGFycmF5IG9yIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5c1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBrZXkgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLlxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyByZW1vdmUgdGhhdC5cblx0XHRcdFx0a2V5ID0ga2V5Lm1hcCggY2FtZWxDYXNlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRrZXkgPSBjYW1lbENhc2UoIGtleSApO1xuXG5cdFx0XHRcdC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBjcmVhdGUgYW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3BhY2Vcblx0XHRcdFx0a2V5ID0ga2V5IGluIGNhY2hlID9cblx0XHRcdFx0XHRbIGtleSBdIDpcblx0XHRcdFx0XHQoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7XG5cdFx0XHR9XG5cblx0XHRcdGkgPSBrZXkubGVuZ3RoO1xuXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlbIGkgXSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0YVxuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDVcblx0XHRcdC8vIFdlYmtpdCAmIEJsaW5rIHBlcmZvcm1hbmNlIHN1ZmZlcnMgd2hlbiBkZWxldGluZyBwcm9wZXJ0aWVzXG5cdFx0XHQvLyBmcm9tIERPTSBub2Rlcywgc28gc2V0IHRvIHVuZGVmaW5lZCBpbnN0ZWFkXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzg2MDcgKGJ1ZyByZXN0cmljdGVkKVxuXHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHR2YXIgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0cmV0dXJuIGNhY2hlICE9PSB1bmRlZmluZWQgJiYgIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApO1xuXHR9XG59O1xudmFyIGRhdGFQcml2ID0gbmV3IERhdGEoKTtcblxudmFyIGRhdGFVc2VyID0gbmV3IERhdGEoKTtcblxuXG5cbi8vXHRJbXBsZW1lbnRhdGlvbiBTdW1tYXJ5XG4vL1xuLy9cdDEuIEVuZm9yY2UgQVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGliaWxpdHkgd2l0aCAxLjkueCBicmFuY2hcbi8vXHQyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBtYWludGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIHN0b3JhZ2Vcbi8vXHRcdHBhdGhzIHRvIGEgc2luZ2xlIG1lY2hhbmlzbS5cbi8vXHQzLiBVc2UgdGhlIHNhbWUgc2luZ2xlIG1lY2hhbmlzbSB0byBzdXBwb3J0IFwicHJpdmF0ZVwiIGFuZCBcInVzZXJcIiBkYXRhLlxuLy9cdDQuIF9OZXZlcl8gZXhwb3NlIFwicHJpdmF0ZVwiIGRhdGEgdG8gdXNlciBjb2RlIChUT0RPOiBEcm9wIF9kYXRhLCBfcmVtb3ZlRGF0YSlcbi8vXHQ1LiBBdm9pZCBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIHVzZXIgb2JqZWN0cyAoZWcuIGV4cGFuZG8gcHJvcGVydGllcylcbi8vXHQ2LiBQcm92aWRlIGEgY2xlYXIgcGF0aCBmb3IgaW1wbGVtZW50YXRpb24gdXBncmFkZSB0byBXZWFrTWFwIGluIDIwMTRcblxudmFyIHJicmFjZSA9IC9eKD86XFx7W1xcd1xcV10qXFx9fFxcW1tcXHdcXFddKlxcXSkkLyxcblx0cm11bHRpRGFzaCA9IC9bQS1aXS9nO1xuXG5mdW5jdGlvbiBnZXREYXRhKCBkYXRhICkge1xuXHRpZiAoIGRhdGEgPT09IFwidHJ1ZVwiICkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aWYgKCBkYXRhID09PSBcImZhbHNlXCIgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aWYgKCBkYXRhID09PSBcIm51bGxcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nXG5cdGlmICggZGF0YSA9PT0gK2RhdGEgKyBcIlwiICkge1xuXHRcdHJldHVybiArZGF0YTtcblx0fVxuXG5cdGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZSggZGF0YSApO1xuXHR9XG5cblx0cmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGRhdGFBdHRyKCBlbGVtLCBrZXksIGRhdGEgKSB7XG5cdHZhciBuYW1lO1xuXG5cdC8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnlcblx0Ly8gZGF0YSBmcm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlXG5cdGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0bmFtZSA9IFwiZGF0YS1cIiArIGtleS5yZXBsYWNlKCBybXVsdGlEYXNoLCBcIi0kJlwiICkudG9Mb3dlckNhc2UoKTtcblx0XHRkYXRhID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTtcblxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkYXRhID0gZ2V0RGF0YSggZGF0YSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXJcblx0XHRcdGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBkYXRhICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBkYXRhO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkYXRhVXNlci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxlbSApO1xuXHR9LFxuXG5cdGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhVXNlci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fSxcblxuXHQvLyBUT0RPOiBOb3cgdGhhdCBhbGwgY2FsbHMgdG8gX2RhdGEgYW5kIF9yZW1vdmVEYXRhIGhhdmUgYmVlbiByZXBsYWNlZFxuXHQvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhUHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC5cblx0X2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRfcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgaSwgbmFtZSwgZGF0YSxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRhdHRycyA9IGVsZW0gJiYgZWxlbS5hdHRyaWJ1dGVzO1xuXG5cdFx0Ly8gR2V0cyBhbGwgdmFsdWVzXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdGhpcy5sZW5ndGggKSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0gKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFQcml2LmdldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiApICkge1xuXHRcdFx0XHRcdGkgPSBhdHRycy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0XHRcdFx0XHRcdC8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAoIzE0ODk0KVxuXHRcdFx0XHRcdFx0aWYgKCBhdHRyc1sgaSBdICkge1xuXHRcdFx0XHRcdFx0XHRuYW1lID0gYXR0cnNbIGkgXS5uYW1lO1xuXHRcdFx0XHRcdFx0XHRpZiAoIG5hbWUuaW5kZXhPZiggXCJkYXRhLVwiICkgPT09IDAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA9IGNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGRhdGE7XG5cblx0XHRcdC8vIFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5XG5cdFx0XHQvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRoaXNbIDAgXSkgYW5kIHRoZVxuXHRcdFx0Ly8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3Rcblx0XHRcdC8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGxcblx0XHRcdC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuXG5cdFx0XHRpZiAoIGVsZW0gJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIFRoZSBrZXkgd2lsbCBhbHdheXMgYmUgY2FtZWxDYXNlZCBpbiBEYXRhXG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gXCJkaXNjb3ZlclwiIHRoZSBkYXRhIGluXG5cdFx0XHRcdC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnNcblx0XHRcdFx0ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IHRoZSBkYXRhLi4uXG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXlcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXksIHZhbHVlICk7XG5cdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRhdGFVc2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YVByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgQXJyYXkuaXNBcnJheSggZGF0YSApICkge1xuXHRcdFx0XHRcdHF1ZXVlID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KCBkYXRhICkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBkYXRhICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBxdWV1ZSB8fCBbXTtcblx0XHR9XG5cdH0sXG5cblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXG5cdFx0XHRzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCxcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKSxcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXG5cdFx0XHRuZXh0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7XG5cdFx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbFxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0c3RhcnRMZW5ndGgtLTtcblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXG5cdFx0XHQvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcblx0XHRcdFx0cXVldWUudW5zaGlmdCggXCJpbnByb2dyZXNzXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvblxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xuXHRcdH1cblxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZVxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dmFyIGtleSA9IHR5cGUgKyBcInF1ZXVlSG9va3NcIjtcblx0XHRyZXR1cm4gZGF0YVByaXYuZ2V0KCBlbGVtLCBrZXkgKSB8fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwge1xuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLmFkZCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgXCJxdWV1ZVwiLCBrZXkgXSApO1xuXHRcdFx0fSApXG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBzZXR0ZXIgPSAyO1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGRhdGEgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IFwiZnhcIjtcblx0XHRcdHNldHRlci0tO1xuXHRcdH1cblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbIDAgXSwgdHlwZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcyA6XG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTtcblxuXHRcdFx0XHQvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVsgMCBdICE9PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdH0sXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHR9ICk7XG5cdH0sXG5cdGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0fSxcblxuXHQvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlXG5cdC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KVxuXHRwcm9taXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkge1xuXHRcdHZhciB0bXAsXG5cdFx0XHRjb3VudCA9IDEsXG5cdFx0XHRkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0ZWxlbWVudHMgPSB0aGlzLFxuXHRcdFx0aSA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0cmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICEoIC0tY291bnQgKSApIHtcblx0XHRcdFx0XHRkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG9iaiA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRtcCA9IGRhdGFQcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArIFwicXVldWVIb29rc1wiICk7XG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHRcdHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmVzb2x2ZSgpO1xuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcblx0fVxufSApO1xudmFyIHBudW0gPSAoIC9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvICkuc291cmNlO1xuXG52YXIgcmNzc051bSA9IG5ldyBSZWdFeHAoIFwiXig/OihbKy1dKT18KShcIiArIHBudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICk7XG5cblxudmFyIGNzc0V4cGFuZCA9IFsgXCJUb3BcIiwgXCJSaWdodFwiLCBcIkJvdHRvbVwiLCBcIkxlZnRcIiBdO1xuXG52YXIgaXNIaWRkZW5XaXRoaW5UcmVlID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXG5cdFx0Ly8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247XG5cdFx0Ly8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50XG5cdFx0ZWxlbSA9IGVsIHx8IGVsZW07XG5cblx0XHQvLyBJbmxpbmUgc3R5bGUgdHJ1bXBzIGFsbFxuXHRcdHJldHVybiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8XG5cdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwiXCIgJiZcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBjaGVjayBjb21wdXRlZCBzdHlsZVxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQzIC0gNDVcblx0XHRcdC8vIERpc2Nvbm5lY3RlZCBlbGVtZW50cyBjYW4gaGF2ZSBjb21wdXRlZCBkaXNwbGF5OiBub25lLCBzbyBmaXJzdCBjb25maXJtIHRoYXQgZWxlbSBpc1xuXHRcdFx0Ly8gaW4gdGhlIGRvY3VtZW50LlxuXHRcdFx0alF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSAmJlxuXG5cdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIjtcblx0fTtcblxudmFyIHN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdHZhciByZXQsIG5hbWUsXG5cdFx0b2xkID0ge307XG5cblx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XG5cdH1cblxuXHRyZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG5cblxuZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9wLCB2YWx1ZVBhcnRzLCB0d2VlbiApIHtcblx0dmFyIGFkanVzdGVkLCBzY2FsZSxcblx0XHRtYXhJdGVyYXRpb25zID0gMjAsXG5cdFx0Y3VycmVudFZhbHVlID0gdHdlZW4gP1xuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5jdXIoKTtcblx0XHRcdH0gOlxuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wLCBcIlwiICk7XG5cdFx0XHR9LFxuXHRcdGluaXRpYWwgPSBjdXJyZW50VmFsdWUoKSxcblx0XHR1bml0ID0gdmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICksXG5cblx0XHQvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlc1xuXHRcdGluaXRpYWxJblVuaXQgPSAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSB8fCB1bml0ICE9PSBcInB4XCIgJiYgK2luaXRpYWwgKSAmJlxuXHRcdFx0cmNzc051bS5leGVjKCBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wICkgKTtcblxuXHRpZiAoIGluaXRpYWxJblVuaXQgJiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdFx0Ly8gSGFsdmUgdGhlIGl0ZXJhdGlvbiB0YXJnZXQgdmFsdWUgdG8gcHJldmVudCBpbnRlcmZlcmVuY2UgZnJvbSBDU1MgdXBwZXIgYm91bmRzIChnaC0yMTQ0KVxuXHRcdGluaXRpYWwgPSBpbml0aWFsIC8gMjtcblxuXHRcdC8vIFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3Ncblx0XHR1bml0ID0gdW5pdCB8fCBpbml0aWFsSW5Vbml0WyAzIF07XG5cblx0XHQvLyBJdGVyYXRpdmVseSBhcHByb3hpbWF0ZSBmcm9tIGEgbm9uemVybyBzdGFydGluZyBwb2ludFxuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxO1xuXG5cdFx0d2hpbGUgKCBtYXhJdGVyYXRpb25zLS0gKSB7XG5cblx0XHRcdC8vIEV2YWx1YXRlIGFuZCB1cGRhdGUgb3VyIGJlc3QgZ3Vlc3MgKGRvdWJsaW5nIGd1ZXNzZXMgdGhhdCB6ZXJvIG91dCkuXG5cdFx0XHQvLyBGaW5pc2ggaWYgdGhlIHNjYWxlIGVxdWFscyBvciBjcm9zc2VzIDEgKG1ha2luZyB0aGUgb2xkKm5ldyBwcm9kdWN0IG5vbi1wb3NpdGl2ZSkuXG5cdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cdFx0XHRpZiAoICggMSAtIHNjYWxlICkgKiAoIDEgLSAoIHNjYWxlID0gY3VycmVudFZhbHVlKCkgLyBpbml0aWFsIHx8IDAuNSApICkgPD0gMCApIHtcblx0XHRcdFx0bWF4SXRlcmF0aW9ucyA9IDA7XG5cdFx0XHR9XG5cdFx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAvIHNjYWxlO1xuXG5cdFx0fVxuXG5cdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgKiAyO1xuXHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIgb25cblx0XHR2YWx1ZVBhcnRzID0gdmFsdWVQYXJ0cyB8fCBbXTtcblx0fVxuXG5cdGlmICggdmFsdWVQYXJ0cyApIHtcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWxJblVuaXQgfHwgK2luaXRpYWwgfHwgMDtcblxuXHRcdC8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNpZmllZFxuXHRcdGFkanVzdGVkID0gdmFsdWVQYXJ0c1sgMSBdID9cblx0XHRcdGluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAqIHZhbHVlUGFydHNbIDIgXSA6XG5cdFx0XHQrdmFsdWVQYXJ0c1sgMiBdO1xuXHRcdGlmICggdHdlZW4gKSB7XG5cdFx0XHR0d2Vlbi51bml0ID0gdW5pdDtcblx0XHRcdHR3ZWVuLnN0YXJ0ID0gaW5pdGlhbEluVW5pdDtcblx0XHRcdHR3ZWVuLmVuZCA9IGFkanVzdGVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWRqdXN0ZWQ7XG59XG5cblxudmFyIGRlZmF1bHREaXNwbGF5TWFwID0ge307XG5cbmZ1bmN0aW9uIGdldERlZmF1bHREaXNwbGF5KCBlbGVtICkge1xuXHR2YXIgdGVtcCxcblx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQsXG5cdFx0bm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLFxuXHRcdGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXTtcblxuXHRpZiAoIGRpc3BsYXkgKSB7XG5cdFx0cmV0dXJuIGRpc3BsYXk7XG5cdH1cblxuXHR0ZW1wID0gZG9jLmJvZHkuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7XG5cdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1wLCBcImRpc3BsYXlcIiApO1xuXG5cdHRlbXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGVtcCApO1xuXG5cdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0ZGlzcGxheSA9IFwiYmxvY2tcIjtcblx0fVxuXHRkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7XG5cblx0cmV0dXJuIGRpc3BsYXk7XG59XG5cbmZ1bmN0aW9uIHNob3dIaWRlKCBlbGVtZW50cywgc2hvdyApIHtcblx0dmFyIGRpc3BsYXksIGVsZW0sXG5cdFx0dmFsdWVzID0gW10sXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDtcblxuXHQvLyBEZXRlcm1pbmUgbmV3IGRpc3BsYXkgdmFsdWUgZm9yIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBjaGFuZ2Vcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XG5cdFx0aWYgKCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGRpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7XG5cdFx0aWYgKCBzaG93ICkge1xuXG5cdFx0XHQvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24gY2FzY2FkZS1oaWRkZW4gZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpXG5cdFx0XHQvLyBjaGVjayBpcyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhhdmUgYSBub25lbXB0eSBkaXNwbGF5IHZhbHVlIChlaXRoZXJcblx0XHRcdC8vIGlubGluZSBvciBhYm91dC10by1iZS1yZXN0b3JlZClcblx0XHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJkaXNwbGF5XCIgKSB8fCBudWxsO1xuXHRcdFx0XHRpZiAoICF2YWx1ZXNbIGluZGV4IF0gKSB7XG5cdFx0XHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwiXCIgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICkgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGdldERlZmF1bHREaXNwbGF5KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggZGlzcGxheSAhPT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IFwibm9uZVwiO1xuXG5cdFx0XHRcdC8vIFJlbWVtYmVyIHdoYXQgd2UncmUgb3ZlcndyaXRpbmdcblx0XHRcdFx0ZGF0YVByaXYuc2V0KCBlbGVtLCBcImRpc3BsYXlcIiwgZGlzcGxheSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFNldCB0aGUgZGlzcGxheSBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcCB0byBhdm9pZCBjb25zdGFudCByZWZsb3dcblx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoIHZhbHVlc1sgaW5kZXggXSAhPSBudWxsICkge1xuXHRcdFx0ZWxlbWVudHNbIGluZGV4IF0uc3R5bGUuZGlzcGxheSA9IHZhbHVlc1sgaW5kZXggXTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudHM7XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2hvdzogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7XG5cdH0sXG5cdGhpZGU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcyApO1xuXHR9LFxuXHR0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHtcblx0XHRpZiAoIHR5cGVvZiBzdGF0ZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBpc0hpZGRlbldpdGhpblRyZWUoIHRoaXMgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuc2hvdygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxufSApO1xudmFyIHJjaGVja2FibGVUeXBlID0gKCAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSApO1xuXG52YXIgcnRhZ05hbWUgPSAoIC88KFthLXpdW15cXC9cXDA+XFx4MjBcXHRcXHJcXG5cXGZdKykvaSApO1xuXG52YXIgcnNjcmlwdFR5cGUgPSAoIC9eJHxebW9kdWxlJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kgKTtcblxuXG5cbi8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICgjMTMyMDApXG52YXIgd3JhcE1hcCA9IHtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRvcHRpb246IFsgMSwgXCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+XCIsIFwiPC9zZWxlY3Q+XCIgXSxcblxuXHQvLyBYSFRNTCBwYXJzZXJzIGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZVxuXHQvLyBzYW1lIHdheSB0aGF0IHRhZyBzb3VwIHBhcnNlcnMgZG8uIFNvIHdlIGNhbm5vdCBzaG9ydGVuXG5cdC8vIHRoaXMgYnkgb21pdHRpbmcgPHRib2R5PiBvciBvdGhlciByZXF1aXJlZCBlbGVtZW50cy5cblx0dGhlYWQ6IFsgMSwgXCI8dGFibGU+XCIsIFwiPC90YWJsZT5cIiBdLFxuXHRjb2w6IFsgMiwgXCI8dGFibGU+PGNvbGdyb3VwPlwiLCBcIjwvY29sZ3JvdXA+PC90YWJsZT5cIiBdLFxuXHR0cjogWyAyLCBcIjx0YWJsZT48dGJvZHk+XCIsIFwiPC90Ym9keT48L3RhYmxlPlwiIF0sXG5cdHRkOiBbIDMsIFwiPHRhYmxlPjx0Ym9keT48dHI+XCIsIFwiPC90cj48L3Rib2R5PjwvdGFibGU+XCIgXSxcblxuXHRfZGVmYXVsdDogWyAwLCBcIlwiLCBcIlwiIF1cbn07XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG53cmFwTWFwLm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb247XG5cbndyYXBNYXAudGJvZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7XG53cmFwTWFwLnRoID0gd3JhcE1hcC50ZDtcblxuXG5mdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFVzZSB0eXBlb2YgdG8gYXZvaWQgemVyby1hcmd1bWVudCBtZXRob2QgaW52b2NhdGlvbiBvbiBob3N0IG9iamVjdHMgKCMxNTE1MSlcblx0dmFyIHJldDtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSBpZiAoIHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2Uge1xuXHRcdHJldCA9IFtdO1xuXHR9XG5cblx0aWYgKCB0YWcgPT09IHVuZGVmaW5lZCB8fCB0YWcgJiYgbm9kZU5hbWUoIGNvbnRleHQsIHRhZyApICkge1xuXHRcdHJldHVybiBqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59XG5cblxuLy8gTWFyayBzY3JpcHRzIGFzIGhhdmluZyBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkXG5mdW5jdGlvbiBzZXRHbG9iYWxFdmFsKCBlbGVtcywgcmVmRWxlbWVudHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRkYXRhUHJpdi5zZXQoXG5cdFx0XHRlbGVtc1sgaSBdLFxuXHRcdFx0XCJnbG9iYWxFdmFsXCIsXG5cdFx0XHQhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCBcImdsb2JhbEV2YWxcIiApXG5cdFx0KTtcblx0fVxufVxuXG5cbnZhciByaHRtbCA9IC88fCYjP1xcdys7LztcblxuZnVuY3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiwgaWdub3JlZCApIHtcblx0dmFyIGVsZW0sIHRtcCwgdGFnLCB3cmFwLCBjb250YWlucywgaixcblx0XHRmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdG5vZGVzID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1zWyBpIF07XG5cblx0XHRpZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHtcblxuXHRcdFx0Ly8gQWRkIG5vZGVzIGRpcmVjdGx5XG5cdFx0XHRpZiAoIHRvVHlwZSggZWxlbSApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTtcblxuXHRcdFx0Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlXG5cdFx0XHR9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkge1xuXHRcdFx0XHRub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTtcblxuXHRcdFx0Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdFx0Ly8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvblxuXHRcdFx0XHR0YWcgPSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0d3JhcCA9IHdyYXBNYXBbIHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7XG5cdFx0XHRcdHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFByZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBdO1xuXG5cdFx0XHRcdC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudFxuXHRcdFx0XHRqID0gd3JhcFsgMCBdO1xuXHRcdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0XHR0bXAgPSB0bXAubGFzdENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9kZXMgKTtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lclxuXHRcdFx0XHR0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKCMxMjM5Milcblx0XHRcdFx0dG1wLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50XG5cdGZyYWdtZW50LnRleHRDb250ZW50ID0gXCJcIjtcblxuXHRpID0gMDtcblx0d2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHtcblxuXHRcdC8vIFNraXAgZWxlbWVudHMgYWxyZWFkeSBpbiB0aGUgY29udGV4dCBjb2xsZWN0aW9uICh0cmFjLTQwODcpXG5cdFx0aWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEgKSB7XG5cdFx0XHRpZiAoIGlnbm9yZWQgKSB7XG5cdFx0XHRcdGlnbm9yZWQucHVzaCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29udGFpbnMgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXG5cdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0aWYgKCBjb250YWlucyApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdH1cblxuXHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkge1xuXHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZnJhZ21lbnQ7XG59XG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHlcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKCMxMTIxNylcblx0Ly8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKVxuXHQvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSlcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJyYWRpb1wiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XG5cblx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgb25seVxuXHQvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcblx0c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBNYWtlIHN1cmUgdGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25lZFxuXHRkaXYuaW5uZXJIVE1MID0gXCI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+XCI7XG5cdHN1cHBvcnQubm9DbG9uZUNoZWNrZWQgPSAhIWRpdi5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlO1xufSApKCk7XG52YXIgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxudmFyXG5cdHJrZXlFdmVudCA9IC9ea2V5Lyxcblx0cm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sXG5cdHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpLztcblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJldHVybkZhbHNlKCkge1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG4vLyBTZWUgIzEzMzkzIGZvciBtb3JlIGluZm9cbmZ1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXHR9IGNhdGNoICggZXJyICkgeyB9XG59XG5cbmZ1bmN0aW9uIG9uKCBlbGVtLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7XG5cdHZhciBvcmlnRm4sIHR5cGU7XG5cblx0Ly8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzXG5cdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhIClcblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1PYmplY3QsIGRhdGEgKVxuXHRcdFx0ZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdG9uKCBlbGVtLCB0eXBlLCBzZWxlY3RvciwgZGF0YSwgdHlwZXNbIHR5cGUgXSwgb25lICk7XG5cdFx0fVxuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHtcblxuXHRcdC8vICggdHlwZXMsIGZuIClcblx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdGRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0fSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHtcblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcywgc2VsZWN0b3IsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gKCB0eXBlcywgZGF0YSwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdH0gZWxzZSBpZiAoICFmbiApIHtcblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggb25lID09PSAxICkge1xuXHRcdG9yaWdGbiA9IGZuO1xuXHRcdGZuID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHQvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm9cblx0XHRcdGpRdWVyeSgpLm9mZiggZXZlbnQgKTtcblx0XHRcdHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH07XG5cblx0XHQvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGblxuXHRcdGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApO1xuXHR9XG5cdHJldHVybiBlbGVtLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTtcblx0fSApO1xufVxuXG4vKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9mIHRoZSBpZGVhcy5cbiAqL1xualF1ZXJ5LmV2ZW50ID0ge1xuXG5cdGdsb2JhbDoge30sXG5cblx0YWRkOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkge1xuXG5cdFx0dmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0Ly8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2JqZWN0cylcblx0XHRpZiAoICFlbGVtRGF0YSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhhbmRsZXJcblx0XHRpZiAoIGhhbmRsZXIuaGFuZGxlciApIHtcblx0XHRcdGhhbmRsZU9iakluID0gaGFuZGxlcjtcblx0XHRcdGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyO1xuXHRcdFx0c2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3Rvcjtcblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgdGhhdCBpbnZhbGlkIHNlbGVjdG9ycyB0aHJvdyBleGNlcHRpb25zIGF0IGF0dGFjaCB0aW1lXG5cdFx0Ly8gRXZhbHVhdGUgYWdhaW5zdCBkb2N1bWVudEVsZW1lbnQgaW4gY2FzZSBlbGVtIGlzIGEgbm9uLWVsZW1lbnQgbm9kZSAoZS5nLiwgZG9jdW1lbnQpXG5cdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZG9jdW1lbnRFbGVtZW50LCBzZWxlY3RvciApO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRlclxuXHRcdGlmICggIWhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7XG5cdFx0fVxuXG5cdFx0Ly8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdFxuXHRcdGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblxuXHRcdFx0XHQvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZFxuXHRcdFx0XHQvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkXG5cdFx0XHRcdHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSBcInVuZGVmaW5lZFwiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnNcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGVcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblxuXHRcdFx0Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzXG5cdFx0XHRoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdG9yaWdUeXBlOiBvcmlnVHlwZSxcblx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0aGFuZGxlcjogaGFuZGxlcixcblx0XHRcdFx0Z3VpZDogaGFuZGxlci5ndWlkLFxuXHRcdFx0XHRzZWxlY3Rvcjogc2VsZWN0b3IsXG5cdFx0XHRcdG5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksXG5cdFx0XHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xuXG5cdFx0XHQvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdFxuXHRcdFx0aWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7XG5cdFx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTtcblx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7XG5cblx0XHRcdFx0Ly8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlXG5cdFx0XHRcdGlmICggIXNwZWNpYWwuc2V0dXAgfHxcblx0XHRcdFx0XHRzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XG5cdFx0XHRcdHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udFxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cblx0XHRcdGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7XG5cdFx0fVxuXG5cdH0sXG5cblx0Ly8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50XG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XG5cblx0XHR2YXIgaiwgb3JpZ0NvdW50LCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuaGFzRGF0YSggZWxlbSApICYmIGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0aWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZFxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnRcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XG5cdFx0XHR0bXAgPSB0bXBbIDIgXSAmJlxuXHRcdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKTtcblxuXHRcdFx0Ly8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50c1xuXHRcdFx0b3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdO1xuXG5cdFx0XHRcdGlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiZcblx0XHRcdFx0XHQoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJlxuXHRcdFx0XHRcdCggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiZcblx0XHRcdFx0XHQoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8XG5cdFx0XHRcdFx0XHRzZWxlY3RvciA9PT0gXCIqKlwiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkge1xuXHRcdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaiwgMSApO1xuXG5cdFx0XHRcdFx0aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc3BlY2lhbC5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0XHRzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdFxuXHRcdFx0Ly8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpXG5cdFx0XHRpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBkYXRhIGFuZCB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkXG5cdFx0aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7XG5cdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiaGFuZGxlIGV2ZW50c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdGRpc3BhdGNoOiBmdW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7XG5cblx0XHQvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmplY3Rcblx0XHR2YXIgZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBuYXRpdmVFdmVudCApO1xuXG5cdFx0dmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLCBoYW5kbGVyUXVldWUsXG5cdFx0XHRhcmdzID0gbmV3IEFycmF5KCBhcmd1bWVudHMubGVuZ3RoICksXG5cdFx0XHRoYW5kbGVycyA9ICggZGF0YVByaXYuZ2V0KCB0aGlzLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307XG5cblx0XHQvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVudFxuXHRcdGFyZ3NbIDAgXSA9IGV2ZW50O1xuXG5cdFx0Zm9yICggaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTtcblx0XHR9XG5cblx0XHRldmVudC5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7XG5cblx0XHQvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkXG5cdFx0aWYgKCBzcGVjaWFsLnByZURpc3BhdGNoICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGhhbmRsZXJzXG5cdFx0aGFuZGxlclF1ZXVlID0galF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyApO1xuXG5cdFx0Ly8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXNcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoICggbWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07XG5cblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoIGhhbmRsZU9iaiA9IG1hdGNoZWQuaGFuZGxlcnNbIGorKyBdICkgJiZcblx0XHRcdFx0IWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdFx0Ly8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGhhdmUgbm8gbmFtZXNwYWNlLCBvciAyKSBoYXZlIG5hbWVzcGFjZShzKVxuXHRcdFx0XHQvLyBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNwYWNlKS5cblx0XHRcdFx0aWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBldmVudC5ybmFtZXNwYWNlLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHtcblxuXHRcdFx0XHRcdGV2ZW50LmhhbmRsZU9iaiA9IGhhbmRsZU9iajtcblx0XHRcdFx0XHRldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7XG5cblx0XHRcdFx0XHRyZXQgPSAoICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxlIHx8XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZXZlbnQucmVzdWx0ID0gcmV0ICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlXG5cdFx0aWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHtcblx0XHRcdHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHtcblx0XHR2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1hdGNoZWRIYW5kbGVycywgbWF0Y2hlZFNlbGVjdG9ycyxcblx0XHRcdGhhbmRsZXJRdWV1ZSA9IFtdLFxuXHRcdFx0ZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsXG5cdFx0XHRjdXIgPSBldmVudC50YXJnZXQ7XG5cblx0XHQvLyBGaW5kIGRlbGVnYXRlIGhhbmRsZXJzXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50ICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OVxuXHRcdFx0Ly8gQmxhY2staG9sZSBTVkcgPHVzZT4gaW5zdGFuY2UgdHJlZXMgKHRyYWMtMTMxODApXG5cdFx0XHRjdXIubm9kZVR5cGUgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQyXG5cdFx0XHQvLyBTdXBwcmVzcyBzcGVjLXZpb2xhdGluZyBjbGlja3MgaW5kaWNhdGluZyBhIG5vbi1wcmltYXJ5IHBvaW50ZXIgYnV0dG9uICh0cmFjLTM4NjEpXG5cdFx0XHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudC10eXBlLWNsaWNrXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHQvLyAuLi5idXQgbm90IGFycm93IGtleSBcImNsaWNrc1wiIG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAgLTEgKGdoLTIzNDMpXG5cdFx0XHQhKCBldmVudC50eXBlID09PSBcImNsaWNrXCIgJiYgZXZlbnQuYnV0dG9uID49IDEgKSApIHtcblxuXHRcdFx0Zm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgY2hlY2sgbm9uLWVsZW1lbnRzICgjMTMyMDgpXG5cdFx0XHRcdC8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICgjNjkxMSwgIzgxNjUsICMxMTM4MiwgIzExNzY0KVxuXHRcdFx0XHRpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAmJiAhKCBldmVudC50eXBlID09PSBcImNsaWNrXCIgJiYgY3VyLmRpc2FibGVkID09PSB0cnVlICkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlZEhhbmRsZXJzID0gW107XG5cdFx0XHRcdFx0bWF0Y2hlZFNlbGVjdG9ycyA9IHt9O1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTtcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKCMxMzIwMylcblx0XHRcdFx0XHRcdHNlbCA9IGhhbmRsZU9iai5zZWxlY3RvciArIFwiIFwiO1xuXG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID0gaGFuZGxlT2JqLm5lZWRzQ29udGV4dCA/XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQoIHNlbCwgdGhpcywgbnVsbCwgWyBjdXIgXSApLmxlbmd0aDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVkSGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlZEhhbmRsZXJzIH0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzXG5cdFx0Y3VyID0gdGhpcztcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFuZGxlclF1ZXVlO1xuXHR9LFxuXG5cdGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29rICkge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSwgbmFtZSwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblxuXHRcdFx0Z2V0OiBpc0Z1bmN0aW9uKCBob29rICkgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGhvb2soIHRoaXMub3JpZ2luYWxFdmVudCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCBuYW1lLCB7XG5cdFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0Zml4OiBmdW5jdGlvbiggb3JpZ2luYWxFdmVudCApIHtcblx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRvcmlnaW5hbEV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTtcblx0fSxcblxuXHRzcGVjaWFsOiB7XG5cdFx0bG9hZDoge1xuXG5cdFx0XHQvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkXG5cdFx0XHRub0J1YmJsZTogdHJ1ZVxuXHRcdH0sXG5cdFx0Zm9jdXM6IHtcblxuXHRcdFx0Ly8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMgKSB7XG5cdFx0XHRcdFx0dGhpcy5mb2N1cygpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c2luXCJcblx0XHR9LFxuXHRcdGJsdXI6IHtcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5ibHVyICkge1xuXHRcdFx0XHRcdHRoaXMuYmx1cigpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c291dFwiXG5cdFx0fSxcblx0XHRjbGljazoge1xuXG5cdFx0XHQvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcy50eXBlID09PSBcImNoZWNrYm94XCIgJiYgdGhpcy5jbGljayAmJiBub2RlTmFtZSggdGhpcywgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dGhpcy5jbGljaygpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzXG5cdFx0XHRfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRyZXR1cm4gbm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgXCJhXCIgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0YmVmb3JldW5sb2FkOiB7XG5cdFx0XHRwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDIwK1xuXHRcdFx0XHQvLyBGaXJlZm94IGRvZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuXG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkge1xuXG5cdC8vIFRoaXMgXCJpZlwiIGlzIG5lZWRlZCBmb3IgcGxhaW4gb2JqZWN0c1xuXHRpZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHtcblx0XHRlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApO1xuXHR9XG59O1xuXG5qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHtcblxuXHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmRcblx0aWYgKCAhKCB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7XG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIEV2ZW50IG9iamVjdFxuXHRpZiAoIHNyYyAmJiBzcmMudHlwZSApIHtcblx0XHR0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7XG5cdFx0dGhpcy50eXBlID0gc3JjLnR5cGU7XG5cblx0XHQvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZFxuXHRcdC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLlxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gc3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHxcblx0XHRcdFx0c3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seVxuXHRcdFx0XHRzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlID9cblx0XHRcdHJldHVyblRydWUgOlxuXHRcdFx0cmV0dXJuRmFsc2U7XG5cblx0XHQvLyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXNcblx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5XG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsICMxMzE0Mylcblx0XHR0aGlzLnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgP1xuXHRcdFx0c3JjLnRhcmdldC5wYXJlbnROb2RlIDpcblx0XHRcdHNyYy50YXJnZXQ7XG5cblx0XHR0aGlzLmN1cnJlbnRUYXJnZXQgPSBzcmMuY3VycmVudFRhcmdldDtcblx0XHR0aGlzLnJlbGF0ZWRUYXJnZXQgPSBzcmMucmVsYXRlZFRhcmdldDtcblxuXHQvLyBFdmVudCB0eXBlXG5cdH0gZWxzZSB7XG5cdFx0dGhpcy50eXBlID0gc3JjO1xuXHR9XG5cblx0Ly8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3Rcblx0aWYgKCBwcm9wcyApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblx0dGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuXG5cdC8vIE1hcmsgaXQgYXMgZml4ZWRcblx0dGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7XG59O1xuXG4vLyBqUXVlcnkuRXZlbnQgaXMgYmFzZWQgb24gRE9NMyBFdmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIEJpbmRpbmdcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcbmpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsXG5cdGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFsc2UsXG5cdGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc1NpbXVsYXRlZDogZmFsc2UsXG5cblx0cHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fSxcblx0c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcblx0fVxufTtcblxuLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVudCBwcm9wcyBpbmNsdWRpbmcgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHNcbmpRdWVyeS5lYWNoKCB7XG5cdGFsdEtleTogdHJ1ZSxcblx0YnViYmxlczogdHJ1ZSxcblx0Y2FuY2VsYWJsZTogdHJ1ZSxcblx0Y2hhbmdlZFRvdWNoZXM6IHRydWUsXG5cdGN0cmxLZXk6IHRydWUsXG5cdGRldGFpbDogdHJ1ZSxcblx0ZXZlbnRQaGFzZTogdHJ1ZSxcblx0bWV0YUtleTogdHJ1ZSxcblx0cGFnZVg6IHRydWUsXG5cdHBhZ2VZOiB0cnVlLFxuXHRzaGlmdEtleTogdHJ1ZSxcblx0dmlldzogdHJ1ZSxcblx0XCJjaGFyXCI6IHRydWUsXG5cdGNoYXJDb2RlOiB0cnVlLFxuXHRrZXk6IHRydWUsXG5cdGtleUNvZGU6IHRydWUsXG5cdGJ1dHRvbjogdHJ1ZSxcblx0YnV0dG9uczogdHJ1ZSxcblx0Y2xpZW50WDogdHJ1ZSxcblx0Y2xpZW50WTogdHJ1ZSxcblx0b2Zmc2V0WDogdHJ1ZSxcblx0b2Zmc2V0WTogdHJ1ZSxcblx0cG9pbnRlcklkOiB0cnVlLFxuXHRwb2ludGVyVHlwZTogdHJ1ZSxcblx0c2NyZWVuWDogdHJ1ZSxcblx0c2NyZWVuWTogdHJ1ZSxcblx0dGFyZ2V0VG91Y2hlczogdHJ1ZSxcblx0dG9FbGVtZW50OiB0cnVlLFxuXHR0b3VjaGVzOiB0cnVlLFxuXG5cdHdoaWNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjtcblxuXHRcdC8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50c1xuXHRcdGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAmJiBya2V5RXZlbnQudGVzdCggZXZlbnQudHlwZSApICkge1xuXHRcdFx0cmV0dXJuIGV2ZW50LmNoYXJDb2RlICE9IG51bGwgPyBldmVudC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodFxuXHRcdGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICYmIHJtb3VzZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdGlmICggYnV0dG9uICYgMSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggYnV0dG9uICYgMiApIHtcblx0XHRcdFx0cmV0dXJuIDM7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggYnV0dG9uICYgNCApIHtcblx0XHRcdFx0cmV0dXJuIDI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC53aGljaDtcblx0fVxufSwgalF1ZXJ5LmV2ZW50LmFkZFByb3AgKTtcblxuLy8gQ3JlYXRlIG1vdXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zlci9vdXQgYW5kIGV2ZW50LXRpbWUgY2hlY2tzXG4vLyBzbyB0aGF0IGV2ZW50IGRlbGVnYXRpb24gd29ya3MgaW4galF1ZXJ5LlxuLy8gRG8gdGhlIHNhbWUgZm9yIHBvaW50ZXJlbnRlci9wb2ludGVybGVhdmUgYW5kIHBvaW50ZXJvdmVyL3BvaW50ZXJvdXRcbi8vXG4vLyBTdXBwb3J0OiBTYWZhcmkgNyBvbmx5XG4vLyBTYWZhcmkgc2VuZHMgbW91c2VlbnRlciB0b28gb2Z0ZW47IHNlZTpcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ3MDI1OFxuLy8gZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnIChpdCBleGlzdGVkIGluIG9sZGVyIENocm9tZSB2ZXJzaW9ucyBhcyB3ZWxsKS5cbmpRdWVyeS5lYWNoKCB7XG5cdG1vdXNlZW50ZXI6IFwibW91c2VvdmVyXCIsXG5cdG1vdXNlbGVhdmU6IFwibW91c2VvdXRcIixcblx0cG9pbnRlcmVudGVyOiBcInBvaW50ZXJvdmVyXCIsXG5cdHBvaW50ZXJsZWF2ZTogXCJwb2ludGVyb3V0XCJcbn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7XG5cdFx0ZGVsZWdhdGVUeXBlOiBmaXgsXG5cdFx0YmluZFR5cGU6IGZpeCxcblxuXHRcdGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIHJldCxcblx0XHRcdFx0dGFyZ2V0ID0gdGhpcyxcblx0XHRcdFx0cmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQsXG5cdFx0XHRcdGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajtcblxuXHRcdFx0Ly8gRm9yIG1vdXNlZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC5cblx0XHRcdC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93XG5cdFx0XHRpZiAoICFyZWxhdGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVsYXRlZCApICkgKSB7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7XG5cdFx0XHRcdHJldCA9IGhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGZpeDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0b246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHRvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApO1xuXHR9LFxuXHRvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkge1xuXHRcdHZhciBoYW5kbGVPYmosIHR5cGU7XG5cdFx0aWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7XG5cblx0XHRcdC8vICggZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnRcblx0XHRcdGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9iajtcblx0XHRcdGpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoXG5cdFx0XHRcdGhhbmRsZU9iai5uYW1lc3BhY2UgP1xuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSArIFwiLlwiICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6XG5cdFx0XHRcdFx0aGFuZGxlT2JqLm9yaWdUeXBlLFxuXHRcdFx0XHRoYW5kbGVPYmouc2VsZWN0b3IsXG5cdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLW9iamVjdCBbLCBzZWxlY3Rvcl0gKVxuXHRcdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdFx0dGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCBzZWxlY3RvciA9PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMgWywgZm5dIClcblx0XHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwgc2VsZWN0b3IgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG52YXJcblxuXHQvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy8zMjI5XG5cdHJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cXC9cXDA+XFx4MjBcXHRcXHJcXG5cXGZdKilbXj5dKilcXC8+L2dpLFxuXG5cdC8qIGVzbGludC1lbmFibGUgKi9cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEsIEVkZ2UgMTIgLSAxMyBvbmx5XG5cdC8vIEluIElFL0VkZ2UgdXNpbmcgcmVnZXggZ3JvdXBzIGhlcmUgY2F1c2VzIHNldmVyZSBzbG93ZG93bnMuXG5cdC8vIFNlZSBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzE3MzY1MTIvXG5cdHJub0lubmVyaHRtbCA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLFxuXG5cdC8vIGNoZWNrZWQ9XCJjaGVja2VkXCIgb3IgY2hlY2tlZFxuXHRyY2hlY2tlZCA9IC9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2ksXG5cdHJjbGVhblNjcmlwdCA9IC9eXFxzKjwhKD86XFxbQ0RBVEFcXFt8LS0pfCg/OlxcXVxcXXwtLSk+XFxzKiQvZztcblxuLy8gUHJlZmVyIGEgdGJvZHkgb3ZlciBpdHMgcGFyZW50IHRhYmxlIGZvciBjb250YWluaW5nIG5ldyByb3dzXG5mdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7XG5cdGlmICggbm9kZU5hbWUoIGVsZW0sIFwidGFibGVcIiApICYmXG5cdFx0bm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmlyc3RDaGlsZCwgXCJ0clwiICkgKSB7XG5cblx0XHRyZXR1cm4galF1ZXJ5KCBlbGVtICkuY2hpbGRyZW4oIFwidGJvZHlcIiApWyAwIF0gfHwgZWxlbTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG4vLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uXG5mdW5jdGlvbiBkaXNhYmxlU2NyaXB0KCBlbGVtICkge1xuXHRlbGVtLnR5cGUgPSAoIGVsZW0uZ2V0QXR0cmlidXRlKCBcInR5cGVcIiApICE9PSBudWxsICkgKyBcIi9cIiArIGVsZW0udHlwZTtcblx0cmV0dXJuIGVsZW07XG59XG5mdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkge1xuXHRpZiAoICggZWxlbS50eXBlIHx8IFwiXCIgKS5zbGljZSggMCwgNSApID09PSBcInRydWUvXCIgKSB7XG5cdFx0ZWxlbS50eXBlID0gZWxlbS50eXBlLnNsaWNlKCA1ICk7XG5cdH0gZWxzZSB7XG5cdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIFwidHlwZVwiICk7XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoIHNyYywgZGVzdCApIHtcblx0dmFyIGksIGwsIHR5cGUsIHBkYXRhT2xkLCBwZGF0YUN1ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7XG5cblx0aWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIDEuIENvcHkgcHJpdmF0ZSBkYXRhOiBldmVudHMsIGhhbmRsZXJzLCBldGMuXG5cdGlmICggZGF0YVByaXYuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0cGRhdGFPbGQgPSBkYXRhUHJpdi5hY2Nlc3MoIHNyYyApO1xuXHRcdHBkYXRhQ3VyID0gZGF0YVByaXYuc2V0KCBkZXN0LCBwZGF0YU9sZCApO1xuXHRcdGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50cztcblxuXHRcdGlmICggZXZlbnRzICkge1xuXHRcdFx0ZGVsZXRlIHBkYXRhQ3VyLmhhbmRsZTtcblx0XHRcdHBkYXRhQ3VyLmV2ZW50cyA9IHt9O1xuXG5cdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gMi4gQ29weSB1c2VyIGRhdGFcblx0aWYgKCBkYXRhVXNlci5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHR1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7XG5cdFx0dWRhdGFDdXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTtcblxuXHRcdGRhdGFVc2VyLnNldCggZGVzdCwgdWRhdGFDdXIgKTtcblx0fVxufVxuXG4vLyBGaXggSUUgYnVncywgc2VlIHN1cHBvcnQgdGVzdHNcbmZ1bmN0aW9uIGZpeElucHV0KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuXHQvLyBGYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi5cblx0aWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmIHJjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7XG5cdFx0ZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7XG5cblx0Ly8gRmFpbHMgdG8gcmV0dXJuIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8gdGhlIGRlZmF1bHQgc2VsZWN0ZWQgc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnNcblx0fSBlbHNlIGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiB8fCBub2RlTmFtZSA9PT0gXCJ0ZXh0YXJlYVwiICkge1xuXHRcdGRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTtcblx0fVxufVxuXG5mdW5jdGlvbiBkb21NYW5pcCggY29sbGVjdGlvbiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7XG5cblx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRhcmdzID0gY29uY2F0LmFwcGx5KCBbXSwgYXJncyApO1xuXG5cdHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYyxcblx0XHRpID0gMCxcblx0XHRsID0gY29sbGVjdGlvbi5sZW5ndGgsXG5cdFx0aU5vQ2xvbmUgPSBsIC0gMSxcblx0XHR2YWx1ZSA9IGFyZ3NbIDAgXSxcblx0XHR2YWx1ZUlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRpZiAoIHZhbHVlSXNGdW5jdGlvbiB8fFxuXHRcdFx0KCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7XG5cdFx0cmV0dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkge1xuXHRcdFx0dmFyIHNlbGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApO1xuXHRcdFx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApO1xuXHRcdFx0fVxuXHRcdFx0ZG9tTWFuaXAoIHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7XG5cdFx0fSApO1xuXHR9XG5cblx0aWYgKCBsICkge1xuXHRcdGZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJncywgY29sbGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25vcmVkICk7XG5cdFx0Zmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdGZyYWdtZW50ID0gZmlyc3Q7XG5cdFx0fVxuXG5cdFx0Ly8gUmVxdWlyZSBlaXRoZXIgbmV3IGNvbnRlbnQgb3IgYW4gaW50ZXJlc3QgaW4gaWdub3JlZCBlbGVtZW50cyB0byBpbnZva2UgdGhlIGNhbGxiYWNrXG5cdFx0aWYgKCBmaXJzdCB8fCBpZ25vcmVkICkge1xuXHRcdFx0c2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsIFwic2NyaXB0XCIgKSwgZGlzYWJsZVNjcmlwdCApO1xuXHRcdFx0aGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoO1xuXG5cdFx0XHQvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtXG5cdFx0XHQvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXBcblx0XHRcdC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFpbiBzaXR1YXRpb25zICgjODA3MCkuXG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdG5vZGUgPSBmcmFnbWVudDtcblxuXHRcdFx0XHRpZiAoIGkgIT09IGlOb0Nsb25lICkge1xuXHRcdFx0XHRcdG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTtcblxuXHRcdFx0XHRcdC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb25cblx0XHRcdFx0XHRpZiAoIGhhc1NjcmlwdHMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBzY3JpcHRzLCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhbGxiYWNrLmNhbGwoIGNvbGxlY3Rpb25bIGkgXSwgbm9kZSwgaSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGhhc1NjcmlwdHMgKSB7XG5cdFx0XHRcdGRvYyA9IHNjcmlwdHNbIHNjcmlwdHMubGVuZ3RoIC0gMSBdLm93bmVyRG9jdW1lbnQ7XG5cblx0XHRcdFx0Ly8gUmVlbmFibGUgc2NyaXB0c1xuXHRcdFx0XHRqUXVlcnkubWFwKCBzY3JpcHRzLCByZXN0b3JlU2NyaXB0ICk7XG5cblx0XHRcdFx0Ly8gRXZhbHVhdGUgZXhlY3V0YWJsZSBzY3JpcHRzIG9uIGZpcnN0IGRvY3VtZW50IGluc2VydGlvblxuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHtcblx0XHRcdFx0XHRub2RlID0gc2NyaXB0c1sgaSBdO1xuXHRcdFx0XHRcdGlmICggcnNjcmlwdFR5cGUudGVzdCggbm9kZS50eXBlIHx8IFwiXCIgKSAmJlxuXHRcdFx0XHRcdFx0IWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgXCJnbG9iYWxFdmFsXCIgKSAmJlxuXHRcdFx0XHRcdFx0alF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHtcblxuXHRcdFx0XHRcdFx0aWYgKCBub2RlLnNyYyAmJiAoIG5vZGUudHlwZSB8fCBcIlwiICkudG9Mb3dlckNhc2UoKSAgIT09IFwibW9kdWxlXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gT3B0aW9uYWwgQUpBWCBkZXBlbmRlbmN5LCBidXQgd29uJ3QgcnVuIHNjcmlwdHMgaWYgbm90IHByZXNlbnRcblx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5Ll9ldmFsVXJsKCBub2RlLnNyYyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgXCJcIiApLCBkb2MsIG5vZGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY29sbGVjdGlvbjtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKCBlbGVtLCBzZWxlY3Rvciwga2VlcERhdGEgKSB7XG5cdHZhciBub2RlLFxuXHRcdG5vZGVzID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxlbSxcblx0XHRpID0gMDtcblxuXHRmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0aWYgKCAha2VlcERhdGEgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggbm9kZSApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBub2RlLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRpZiAoIGtlZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRvY3VtZW50LCBub2RlICkgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHR9XG5cdFx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRodG1sUHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRyZXR1cm4gaHRtbC5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKTtcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlc1xuXHRcdGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiZcblx0XHRcdFx0IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHBzOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6emxlLzJcblx0XHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTtcblx0XHRcdHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7XG5cblx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmaXhJbnB1dCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb3B5IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lXG5cdFx0aWYgKCBkYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0aWYgKCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdFx0c3JjRWxlbWVudHMgPSBzcmNFbGVtZW50cyB8fCBnZXRBbGwoIGVsZW0gKTtcblx0XHRcdFx0ZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTtcblxuXHRcdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRjbG9uZUNvcHlFdmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIGVsZW0sIGNsb25lICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUsIFwic2NyaXB0XCIgKTtcblx0XHRpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAwICkge1xuXHRcdFx0c2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwgXCJzY3JpcHRcIiApICk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9LFxuXG5cdGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkge1xuXHRcdHZhciBkYXRhLCBlbGVtLCB0eXBlLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IGVsZW1zWyBpIF0gKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7XG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIGVsZW0gKSApIHtcblx0XHRcdFx0aWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0Zm9yICggdHlwZSBpbiBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWRcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSApIHtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApO1xuXHR9LFxuXG5cdHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS50ZXh0KCB0aGlzICkgOlxuXHRcdFx0XHR0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRhcHBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRwcmVwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJnZXQuZmlyc3RDaGlsZCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGFmdGVyOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXG5cdFx0XHRcdC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzXG5cdFx0XHRcdGVsZW0udGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcblx0XHRkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7XG5cblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0aHRtbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0bCA9IHRoaXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uaW5uZXJIVE1MO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVzdCB1c2UgaW5uZXJIVE1MXG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiZcblx0XHRcdFx0IXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkge1xuXG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdIHx8IHt9O1xuXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cdFx0XHRcdFx0XHRcdGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbSA9IDA7XG5cblx0XHRcdFx0Ly8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge31cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHR0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpZ25vcmVkID0gW107XG5cblx0XHQvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnRcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuXG5cdFx0XHRpZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkge1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApO1xuXHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0XHRwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb25cblx0XHR9LCBpZ25vcmVkICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIHtcblx0YXBwZW5kVG86IFwiYXBwZW5kXCIsXG5cdHByZXBlbmRUbzogXCJwcmVwZW5kXCIsXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcblx0aW5zZXJ0QWZ0ZXI6IFwiYWZ0ZXJcIixcblx0cmVwbGFjZUFsbDogXCJyZXBsYWNlV2l0aFwiXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBlbGVtcyxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxuXHRcdFx0bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkge1xuXHRcdFx0ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTtcblx0XHRcdGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHQvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTtcblx0fTtcbn0gKTtcbnZhciBybnVtbm9ucHggPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKTtcblxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKCMxNTA5OCwgIzE0MTUwKVxuXHRcdC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwc1xuXHRcdC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCBcImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGVcIlxuXHRcdHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG5cdFx0aWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7XG5cdFx0XHR2aWV3ID0gd2luZG93O1xuXHRcdH1cblxuXHRcdHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTtcblx0fTtcblxudmFyIHJib3hTdHlsZSA9IG5ldyBSZWdFeHAoIGNzc0V4cGFuZC5qb2luKCBcInxcIiApLCBcImlcIiApO1xuXG5cblxuKCBmdW5jdGlvbigpIHtcblxuXHQvLyBFeGVjdXRpbmcgYm90aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6aW5nUmVsaWFibGUgdGVzdHMgcmVxdWlyZSBvbmx5IG9uZSBsYXlvdXRcblx0Ly8gc28gdGhleSdyZSBleGVjdXRlZCBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi5cblx0ZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7XG5cblx0XHQvLyBUaGlzIGlzIGEgc2luZ2xldG9uLCB3ZSBuZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlXG5cdFx0aWYgKCAhZGl2ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7XCIgK1xuXHRcdFx0XCJtYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjBcIjtcblx0XHRkaXYuc3R5bGUuY3NzVGV4dCA9XG5cdFx0XHRcInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDtcIiArXG5cdFx0XHRcIm1hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7XCIgK1xuXHRcdFx0XCJ3aWR0aDo2MCU7dG9wOjElXCI7XG5cdFx0ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKCBjb250YWluZXIgKS5hcHBlbmRDaGlsZCggZGl2ICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2ICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMgLSA0NFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUubWFyZ2luTGVmdCApID09PSAxMjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIFNhZmFyaSA8PTkuMSAtIDEwLjEsIGlPUyA8PTcuMCAtIDkuM1xuXHRcdC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFsdWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndFxuXHRcdGRpdi5zdHlsZS5yaWdodCA9IFwiNjAlXCI7XG5cdFx0cGl4ZWxCb3hTdHlsZXNWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLnJpZ2h0ICkgPT09IDM2O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0XHQvLyBEZXRlY3QgbWlzcmVwb3J0aW5nIG9mIGNvbnRlbnQgZGltZW5zaW9ucyBmb3IgYm94LXNpemluZzpib3JkZXItYm94IGVsZW1lbnRzXG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLndpZHRoICkgPT09IDM2O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG92ZXJmbG93OnNjcm9sbCBzY3Jld2luZXNzIChnaC0zNjk5KVxuXHRcdGRpdi5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcblx0XHRzY3JvbGxib3hTaXplVmFsID0gZGl2Lm9mZnNldFdpZHRoID09PSAzNiB8fCBcImFic29sdXRlXCI7XG5cblx0XHRkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xuXG5cdFx0Ly8gTnVsbGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgbWVtb3J5IGFuZFxuXHRcdC8vIGl0IHdpbGwgYWxzbyBiZSBhIHNpZ24gdGhhdCBjaGVja3MgYWxyZWFkeSBwZXJmb3JtZWRcblx0XHRkaXYgPSBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gcm91bmRQaXhlbE1lYXN1cmVzKCBtZWFzdXJlICkge1xuXHRcdHJldHVybiBNYXRoLnJvdW5kKCBwYXJzZUZsb2F0KCBtZWFzdXJlICkgKTtcblx0fVxuXG5cdHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCwgc2Nyb2xsYm94U2l6ZVZhbCwgcGl4ZWxCb3hTdHlsZXNWYWwsXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0VmFsLFxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSxcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0Ly8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHNcblx0aWYgKCAhZGl2LnN0eWxlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KVxuXHRkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcImNvbnRlbnQtYm94XCI7XG5cdGRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiXCI7XG5cdHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSBcImNvbnRlbnQtYm94XCI7XG5cblx0alF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwge1xuXHRcdGJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gYm94U2l6aW5nUmVsaWFibGVWYWw7XG5cdFx0fSxcblx0XHRwaXhlbEJveFN0eWxlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsQm94U3R5bGVzVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7XG5cdFx0fSxcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiByZWxpYWJsZU1hcmdpbkxlZnRWYWw7XG5cdFx0fSxcblx0XHRzY3JvbGxib3hTaXplOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gc2Nyb2xsYm94U2l6ZVZhbDtcblx0XHR9XG5cdH0gKTtcbn0gKSgpO1xuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDUxK1xuXHRcdC8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNvbWVob3dcblx0XHQvLyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGdldHRpbmcgd3JvbmcgdmFsdWVzXG5cdFx0Ly8gb24gZGV0YWNoZWQgZWxlbWVudHNcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0Y29tcHV0ZWQgPSBjb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKTtcblxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG5lZWRlZCBmb3I6XG5cdC8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgIzEyNTM3KVxuXHQvLyAgIC5jc3MoJy0tY3VzdG9tUHJvcGVydHkpICgjMzE0NClcblx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRyZXQgPSBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTtcblxuXHRcdGlmICggcmV0ID09PSBcIlwiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkge1xuXHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIHNvbWUgdmFsdWVzLFxuXHRcdC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuXG5cdFx0Ly8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOlxuXHRcdC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5waXhlbEJveFN0eWxlcygpICYmIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiByYm94U3R5bGUudGVzdCggbmFtZSApICkge1xuXG5cdFx0XHQvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzXG5cdFx0XHR3aWR0aCA9IHN0eWxlLndpZHRoO1xuXHRcdFx0bWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDtcblx0XHRcdG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7XG5cblx0XHRcdC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXRcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDtcblx0XHRcdHJldCA9IGNvbXB1dGVkLndpZHRoO1xuXG5cdFx0XHQvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzXG5cdFx0XHRzdHlsZS53aWR0aCA9IHdpZHRoO1xuXHRcdFx0c3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDtcblx0XHRcdHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJldCAhPT0gdW5kZWZpbmVkID9cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHQvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLlxuXHRcdHJldCArIFwiXCIgOlxuXHRcdHJldDtcbn1cblxuXG5mdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7XG5cblx0Ly8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC5cblx0cmV0dXJuIHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBjb25kaXRpb25GbigpICkge1xuXG5cdFx0XHRcdC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZVxuXHRcdFx0XHQvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmdldDtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi5cblx0XHRcdHJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0ZuICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fTtcbn1cblxuXG52YXJcblxuXHQvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlXG5cdC8vIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxuXHQvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXlcblx0cmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFxuXHRyY3VzdG9tUHJvcCA9IC9eLS0vLFxuXHRjc3NTaG93ID0geyBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCB2aXNpYmlsaXR5OiBcImhpZGRlblwiLCBkaXNwbGF5OiBcImJsb2NrXCIgfSxcblx0Y3NzTm9ybWFsVHJhbnNmb3JtID0ge1xuXHRcdGxldHRlclNwYWNpbmc6IFwiMFwiLFxuXHRcdGZvbnRXZWlnaHQ6IFwiNDAwXCJcblx0fSxcblxuXHRjc3NQcmVmaXhlcyA9IFsgXCJXZWJraXRcIiwgXCJNb3pcIiwgXCJtc1wiIF0sXG5cdGVtcHR5U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkuc3R5bGU7XG5cbi8vIFJldHVybiBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBwb3RlbnRpYWxseSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHlcbmZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBuYW1lICkge1xuXG5cdC8vIFNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVkXG5cdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdHJldHVybiBuYW1lO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lc1xuXHR2YXIgY2FwTmFtZSA9IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApLFxuXHRcdGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0bmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lO1xuXHRcdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFJldHVybiBhIHByb3BlcnR5IG1hcHBlZCBhbG9uZyB3aGF0IGpRdWVyeS5jc3NQcm9wcyBzdWdnZXN0cyBvciB0b1xuLy8gYSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHkuXG5mdW5jdGlvbiBmaW5hbFByb3BOYW1lKCBuYW1lICkge1xuXHR2YXIgcmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF07XG5cdGlmICggIXJldCApIHtcblx0XHRyZXQgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBuYW1lICkgfHwgbmFtZTtcblx0fVxuXHRyZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXG5cdC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW5cblx0Ly8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50XG5cdHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgYm94LCBpc0JvcmRlckJveCwgc3R5bGVzLCBjb21wdXRlZFZhbCApIHtcblx0dmFyIGkgPSBkaW1lbnNpb24gPT09IFwid2lkdGhcIiA/IDEgOiAwLFxuXHRcdGV4dHJhID0gMCxcblx0XHRkZWx0YSA9IDA7XG5cblx0Ly8gQWRqdXN0bWVudCBtYXkgbm90IGJlIG5lY2Vzc2FyeVxuXHRpZiAoIGJveCA9PT0gKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApICkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luXG5cdFx0aWYgKCBib3ggPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBib3ggKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGNvbnRlbnQtYm94LCB3ZSdyZSBzZWVraW5nIFwicGFkZGluZ1wiIG9yIFwiYm9yZGVyXCIgb3IgXCJtYXJnaW5cIlxuXHRcdGlmICggIWlzQm9yZGVyQm94ICkge1xuXG5cdFx0XHQvLyBBZGQgcGFkZGluZ1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEZvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCIsIGFkZCBib3JkZXJcblx0XHRcdGlmICggYm94ICE9PSBcInBhZGRpbmdcIiApIHtcblx0XHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQnV0IHN0aWxsIGtlZXAgdHJhY2sgb2YgaXQgb3RoZXJ3aXNlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRleHRyYSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGJvcmRlci1ib3ggKGNvbnRlbnQgKyBwYWRkaW5nICsgYm9yZGVyKSwgd2UncmUgc2Vla2luZyBcImNvbnRlbnRcIiBvclxuXHRcdC8vIFwicGFkZGluZ1wiIG9yIFwibWFyZ2luXCJcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIsIHN1YnRyYWN0IHBhZGRpbmdcblx0XHRcdGlmICggYm94ID09PSBcImNvbnRlbnRcIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvciBcImNvbnRlbnRcIiBvciBcInBhZGRpbmdcIiwgc3VidHJhY3QgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBY2NvdW50IGZvciBwb3NpdGl2ZSBjb250ZW50LWJveCBzY3JvbGwgZ3V0dGVyIHdoZW4gcmVxdWVzdGVkIGJ5IHByb3ZpZGluZyBjb21wdXRlZFZhbFxuXHRpZiAoICFpc0JvcmRlckJveCAmJiBjb21wdXRlZFZhbCA+PSAwICkge1xuXG5cdFx0Ly8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIGEgcm91bmRlZCBzdW0gb2YgY29udGVudCwgcGFkZGluZywgc2Nyb2xsIGd1dHRlciwgYW5kIGJvcmRlclxuXHRcdC8vIEFzc3VtaW5nIGludGVnZXIgc2Nyb2xsIGd1dHRlciwgc3VidHJhY3QgdGhlIHJlc3QgYW5kIHJvdW5kIGRvd25cblx0XHRkZWx0YSArPSBNYXRoLm1heCggMCwgTWF0aC5jZWlsKFxuXHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdGNvbXB1dGVkVmFsIC1cblx0XHRcdGRlbHRhIC1cblx0XHRcdGV4dHJhIC1cblx0XHRcdDAuNVxuXHRcdCkgKTtcblx0fVxuXG5cdHJldHVybiBkZWx0YTtcbn1cblxuZnVuY3Rpb24gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApIHtcblxuXHQvLyBTdGFydCB3aXRoIGNvbXB1dGVkIHN0eWxlXG5cdHZhciBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIGRpbWVuc2lvbiwgc3R5bGVzICksXG5cdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveDtcblxuXHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0Ly8gUmV0dXJuIGEgY29uZm91bmRpbmcgbm9uLXBpeGVsIHZhbHVlIG9yIGZlaWduIGlnbm9yYW5jZSwgYXMgYXBwcm9wcmlhdGUuXG5cdGlmICggcm51bW5vbnB4LnRlc3QoIHZhbCApICkge1xuXHRcdGlmICggIWV4dHJhICkge1xuXHRcdFx0cmV0dXJuIHZhbDtcblx0XHR9XG5cdFx0dmFsID0gXCJhdXRvXCI7XG5cdH1cblxuXHQvLyBDaGVjayBmb3Igc3R5bGUgaW4gY2FzZSBhIGJyb3dzZXIgd2hpY2ggcmV0dXJucyB1bnJlbGlhYmxlIHZhbHVlc1xuXHQvLyBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0eWxlXG5cdHZhbHVlSXNCb3JkZXJCb3ggPSB2YWx1ZUlzQm9yZGVyQm94ICYmXG5cdFx0KCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSApO1xuXG5cdC8vIEZhbGwgYmFjayB0byBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgd2hlbiB2YWx1ZSBpcyBcImF1dG9cIlxuXHQvLyBUaGlzIGhhcHBlbnMgZm9yIGlubGluZSBlbGVtZW50cyB3aXRoIG5vIGV4cGxpY2l0IHNldHRpbmcgKGdoLTM1NzEpXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgLSA0LjMgb25seVxuXHQvLyBBbHNvIHVzZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgZm9yIG1pc3JlcG9ydGVkIGlubGluZSBkaW1lbnNpb25zIChnaC0zNjAyKVxuXHRpZiAoIHZhbCA9PT0gXCJhdXRvXCIgfHxcblx0XHQhcGFyc2VGbG9hdCggdmFsICkgJiYgalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJpbmxpbmVcIiApIHtcblxuXHRcdHZhbCA9IGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXTtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBwcm92aWRlIGJvcmRlci1ib3ggdmFsdWVzXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IHRydWU7XG5cdH1cblxuXHQvLyBOb3JtYWxpemUgXCJcIiBhbmQgYXV0b1xuXHR2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwO1xuXG5cdC8vIEFkanVzdCBmb3IgdGhlIGVsZW1lbnQncyBib3ggbW9kZWxcblx0cmV0dXJuICggdmFsICtcblx0XHRib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRlbGVtLFxuXHRcdFx0ZGltZW5zaW9uLFxuXHRcdFx0ZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApLFxuXHRcdFx0dmFsdWVJc0JvcmRlckJveCxcblx0XHRcdHN0eWxlcyxcblxuXHRcdFx0Ly8gUHJvdmlkZSB0aGUgY3VycmVudCBjb21wdXRlZCBzaXplIHRvIHJlcXVlc3Qgc2Nyb2xsIGd1dHRlciBjYWxjdWxhdGlvbiAoZ2gtMzU4OSlcblx0XHRcdHZhbFxuXHRcdClcblx0KSArIFwicHhcIjtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdFxuXHQvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHlcblx0Y3NzSG9va3M6IHtcblx0XHRvcGFjaXR5OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHRcdC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5XG5cdFx0XHRcdFx0dmFyIHJldCA9IGN1ckNTUyggZWxlbSwgXCJvcGFjaXR5XCIgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmV0ID09PSBcIlwiID8gXCIxXCIgOiByZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0Ly8gRG9uJ3QgYXV0b21hdGljYWxseSBhZGQgXCJweFwiIHRvIHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNzIHByb3BlcnRpZXNcblx0Y3NzTnVtYmVyOiB7XG5cdFx0XCJhbmltYXRpb25JdGVyYXRpb25Db3VudFwiOiB0cnVlLFxuXHRcdFwiY29sdW1uQ291bnRcIjogdHJ1ZSxcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJmbGV4R3Jvd1wiOiB0cnVlLFxuXHRcdFwiZmxleFNocmlua1wiOiB0cnVlLFxuXHRcdFwiZm9udFdlaWdodFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHt9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApLFxuXHRcdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gcXVlcnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eVxuXHRcdC8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC5cblx0XHRpZiAoICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRuYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdFx0Ly8gQ29udmVydCBcIis9XCIgb3IgXCItPVwiIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1KVxuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICYmICggcmV0ID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7XG5cdFx0XHRcdHZhbHVlID0gYWRqdXN0Q1NTKCBlbGVtLCBuYW1lLCByZXQgKTtcblxuXHRcdFx0XHQvLyBGaXhlcyBidWcgIzkyMzdcblx0XHRcdFx0dHlwZSA9IFwibnVtYmVyXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IG51bGwgYW5kIE5hTiB2YWx1ZXMgYXJlbid0IHNldCAoIzcxMTYpXG5cdFx0XHRpZiAoIHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxuXHRcdFx0aWYgKCB0eXBlID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWx1ZSArPSByZXQgJiYgcmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdID8gXCJcIiA6IFwicHhcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBiYWNrZ3JvdW5kLSogcHJvcHMgYWZmZWN0IG9yaWdpbmFsIGNsb25lJ3MgdmFsdWVzXG5cdFx0XHRpZiAoICFzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSAmJiB2YWx1ZSA9PT0gXCJcIiAmJiBuYW1lLmluZGV4T2YoIFwiYmFja2dyb3VuZFwiICkgPT09IDAgKSB7XG5cdFx0XHRcdHN0eWxlWyBuYW1lIF0gPSBcImluaGVyaXRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCwgdXNlIHRoYXQgdmFsdWUsIG90aGVyd2lzZSBqdXN0IHNldCB0aGUgc3BlY2lmaWVkIHZhbHVlXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKCBcInNldFwiIGluIGhvb2tzICkgfHxcblx0XHRcdFx0KCB2YWx1ZSA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdGlmICggaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0XHRcdHN0eWxlLnNldFByb3BlcnR5KCBuYW1lLCB2YWx1ZSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0eWxlWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdFxuXHRcdFx0cmV0dXJuIHN0eWxlWyBuYW1lIF07XG5cdFx0fVxuXHR9LFxuXG5cdGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7XG5cdFx0dmFyIHZhbCwgbnVtLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0gY2FtZWxDYXNlKCBuYW1lICksXG5cdFx0XHRpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUuIFdlIGRvbid0XG5cdFx0Ly8gd2FudCB0byBtb2RpZnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eVxuXHRcdC8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC5cblx0XHRpZiAoICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRuYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdFxuXHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgXCJub3JtYWxcIiB0byBjb21wdXRlZCB2YWx1ZVxuXHRcdGlmICggdmFsID09PSBcIm5vcm1hbFwiICYmIG5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3JtICkge1xuXHRcdFx0dmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBudW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29rcyBudW1lcmljXG5cdFx0aWYgKCBleHRyYSA9PT0gXCJcIiB8fCBleHRyYSApIHtcblx0XHRcdG51bSA9IHBhcnNlRmxvYXQoIHZhbCApO1xuXHRcdFx0cmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGlzRmluaXRlKCBudW0gKSA/IG51bSB8fCAwIDogdmFsO1xuXHRcdH1cblxuXHRcdHJldHVybiB2YWw7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJoZWlnaHRcIiwgXCJ3aWR0aFwiIF0sIGZ1bmN0aW9uKCBpLCBkaW1lbnNpb24gKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgZGltZW5zaW9uIF0gPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHQvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW1cblx0XHRcdFx0Ly8gYnV0IGl0IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXRcblx0XHRcdFx0cmV0dXJuIHJkaXNwbGF5c3dhcC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApICkgJiZcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4K1xuXHRcdFx0XHRcdC8vIFRhYmxlIGNvbHVtbnMgaW4gU2FmYXJpIGhhdmUgbm9uLXplcm8gb2Zmc2V0V2lkdGggJiB6ZXJvXG5cdFx0XHRcdFx0Ly8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggdW5sZXNzIGRpc3BsYXkgaXMgY2hhbmdlZC5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0XHRcdFx0XHQvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlXG5cdFx0XHRcdFx0Ly8gaW4gSUUgdGhyb3dzIGFuIGVycm9yLlxuXHRcdFx0XHRcdCggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggfHwgIWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKSA/XG5cdFx0XHRcdFx0XHRzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKTtcblx0XHRcdFx0XHRcdH0gKSA6XG5cdFx0XHRcdFx0XHRnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcblx0XHRcdHZhciBtYXRjaGVzLFxuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblx0XHRcdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdFx0XHRzdWJ0cmFjdCA9IGV4dHJhICYmIGJveE1vZGVsQWRqdXN0bWVudChcblx0XHRcdFx0XHRlbGVtLFxuXHRcdFx0XHRcdGRpbWVuc2lvbixcblx0XHRcdFx0XHRleHRyYSxcblx0XHRcdFx0XHRpc0JvcmRlckJveCxcblx0XHRcdFx0XHRzdHlsZXNcblx0XHRcdFx0KTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdW5yZWxpYWJsZSBib3JkZXItYm94IGRpbWVuc2lvbnMgYnkgY29tcGFyaW5nIG9mZnNldCogdG8gY29tcHV0ZWQgYW5kXG5cdFx0XHQvLyBmYWtpbmcgYSBjb250ZW50LWJveCB0byBnZXQgYm9yZGVyIGFuZCBwYWRkaW5nIChnaC0zNjk5KVxuXHRcdFx0aWYgKCBpc0JvcmRlckJveCAmJiBzdXBwb3J0LnNjcm9sbGJveFNpemUoKSA9PT0gc3R5bGVzLnBvc2l0aW9uICkge1xuXHRcdFx0XHRzdWJ0cmFjdCAtPSBNYXRoLmNlaWwoXG5cdFx0XHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdFx0XHRwYXJzZUZsb2F0KCBzdHlsZXNbIGRpbWVuc2lvbiBdICkgLVxuXHRcdFx0XHRcdGJveE1vZGVsQWRqdXN0bWVudCggZWxlbSwgZGltZW5zaW9uLCBcImJvcmRlclwiLCBmYWxzZSwgc3R5bGVzICkgLVxuXHRcdFx0XHRcdDAuNVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IHRvIHBpeGVscyBpZiB2YWx1ZSBhZGp1c3RtZW50IGlzIG5lZWRlZFxuXHRcdFx0aWYgKCBzdWJ0cmFjdCAmJiAoIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJlxuXHRcdFx0XHQoIG1hdGNoZXNbIDMgXSB8fCBcInB4XCIgKSAhPT0gXCJweFwiICkge1xuXG5cdFx0XHRcdGVsZW0uc3R5bGVbIGRpbWVuc2lvbiBdID0gdmFsdWU7XG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5LmNzcyggZWxlbSwgZGltZW5zaW9uICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7XG5cdFx0fVxuXHR9O1xufSApO1xuXG5qUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuICggcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiApICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cblx0XHRcdFx0XHRzd2FwKCBlbGVtLCB7IG1hcmdpbkxlZnQ6IDAgfSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXHRcdFx0XHRcdH0gKVxuXHRcdFx0XHQpICsgXCJweFwiO1xuXHRcdH1cblx0fVxuKTtcblxuLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllc1xualF1ZXJ5LmVhY2goIHtcblx0bWFyZ2luOiBcIlwiLFxuXHRwYWRkaW5nOiBcIlwiLFxuXHRib3JkZXI6IFwiV2lkdGhcIlxufSwgZnVuY3Rpb24oIHByZWZpeCwgc3VmZml4ICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdID0ge1xuXHRcdGV4cGFuZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGkgPSAwLFxuXHRcdFx0XHRleHBhbmRlZCA9IHt9LFxuXG5cdFx0XHRcdC8vIEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZ1xuXHRcdFx0XHRwYXJ0cyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlLnNwbGl0KCBcIiBcIiApIDogWyB2YWx1ZSBdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCA0OyBpKysgKSB7XG5cdFx0XHRcdGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID1cblx0XHRcdFx0XHRwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBleHBhbmRlZDtcblx0XHR9XG5cdH07XG5cblx0aWYgKCBwcmVmaXggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdHZhciBzdHlsZXMsIGxlbixcblx0XHRcdFx0bWFwID0ge30sXG5cdFx0XHRcdGkgPSAwO1xuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIG5hbWUgKSApIHtcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7XG5cdFx0XHRcdGxlbiA9IG5hbWUubGVuZ3RoO1xuXG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdG1hcFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lWyBpIF0sIGZhbHNlLCBzdHlsZXMgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBtYXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lLCB2YWx1ZSApIDpcblx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApO1xuXHRcdH0sIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9XG59ICk7XG5cblxuZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkge1xuXHRyZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApO1xufVxualF1ZXJ5LlR3ZWVuID0gVHdlZW47XG5cblR3ZWVuLnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IFR3ZWVuLFxuXHRpbml0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcsIHVuaXQgKSB7XG5cdFx0dGhpcy5lbGVtID0gZWxlbTtcblx0XHR0aGlzLnByb3AgPSBwcm9wO1xuXHRcdHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHQ7XG5cdFx0dGhpcy5vcHRpb25zID0gb3B0aW9ucztcblx0XHR0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpO1xuXHRcdHRoaXMuZW5kID0gZW5kO1xuXHRcdHRoaXMudW5pdCA9IHVuaXQgfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICk7XG5cdH0sXG5cdGN1cjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTtcblxuXHRcdHJldHVybiBob29rcyAmJiBob29rcy5nZXQgP1xuXHRcdFx0aG9va3MuZ2V0KCB0aGlzICkgOlxuXHRcdFx0VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCggdGhpcyApO1xuXHR9LFxuXHRydW46IGZ1bmN0aW9uKCBwZXJjZW50ICkge1xuXHRcdHZhciBlYXNlZCxcblx0XHRcdGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmR1cmF0aW9uICkge1xuXHRcdFx0dGhpcy5wb3MgPSBlYXNlZCA9IGpRdWVyeS5lYXNpbmdbIHRoaXMuZWFzaW5nIF0oXG5cdFx0XHRcdHBlcmNlbnQsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvblxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5wb3MgPSBlYXNlZCA9IHBlcmNlbnQ7XG5cdFx0fVxuXHRcdHRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMuc3RhcnQgKSAqIGVhc2VkICsgdGhpcy5zdGFydDtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLnN0ZXAgKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBob29rcy5zZXQgKSB7XG5cdFx0XHRob29rcy5zZXQoIHRoaXMgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCggdGhpcyApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufTtcblxuVHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gVHdlZW4ucHJvdG90eXBlO1xuXG5Ud2Vlbi5wcm9wSG9va3MgPSB7XG5cdF9kZWZhdWx0OiB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0XHR2YXIgcmVzdWx0O1xuXG5cdFx0XHQvLyBVc2UgYSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBkaXJlY3RseSB3aGVuIGl0IGlzIG5vdCBhIERPTSBlbGVtZW50LFxuXHRcdFx0Ly8gb3Igd2hlbiB0aGVyZSBpcyBubyBtYXRjaGluZyBzdHlsZSBwcm9wZXJ0eSB0aGF0IGV4aXN0cy5cblx0XHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAhPT0gMSB8fFxuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJiB0d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBhdXRvbWF0aWNhbGx5XG5cdFx0XHQvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLlxuXHRcdFx0Ly8gU2ltcGxlIHZhbHVlcyBzdWNoIGFzIFwiMTBweFwiIGFyZSBwYXJzZWQgdG8gRmxvYXQ7XG5cdFx0XHQvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzIFwicm90YXRlKDFyYWQpXCIgYXJlIHJldHVybmVkIGFzLWlzLlxuXHRcdFx0cmVzdWx0ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgXCJcIiApO1xuXG5cdFx0XHQvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5kIFwiYXV0b1wiIGFyZSBjb252ZXJ0ZWQgdG8gMC5cblx0XHRcdHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gXCJhdXRvXCIgPyAwIDogcmVzdWx0O1xuXHRcdH0sXG5cdFx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cblx0XHRcdC8vIFVzZSBzdGVwIGhvb2sgZm9yIGJhY2sgY29tcGF0LlxuXHRcdFx0Ly8gVXNlIGNzc0hvb2sgaWYgaXRzIHRoZXJlLlxuXHRcdFx0Ly8gVXNlIC5zdHlsZSBpZiBhdmFpbGFibGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWlsYWJsZS5cblx0XHRcdGlmICggalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHtcblx0XHRcdFx0alF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTtcblx0XHRcdH0gZWxzZSBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0KCB0d2Vlbi5lbGVtLnN0eWxlWyBqUXVlcnkuY3NzUHJvcHNbIHR3ZWVuLnByb3AgXSBdICE9IG51bGwgfHxcblx0XHRcdFx0XHRqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIHR3ZWVuLm5vdyArIHR3ZWVuLnVuaXQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG4vLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHtcblx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5lYXNpbmcgPSB7XG5cdGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIHA7XG5cdH0sXG5cdHN3aW5nOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyO1xuXHR9LFxuXHRfZGVmYXVsdDogXCJzd2luZ1wiXG59O1xuXG5qUXVlcnkuZnggPSBUd2Vlbi5wcm90b3R5cGUuaW5pdDtcblxuLy8gQmFjayBjb21wYXQgPDEuOCBleHRlbnNpb24gcG9pbnRcbmpRdWVyeS5meC5zdGVwID0ge307XG5cblxuXG5cbnZhclxuXHRmeE5vdywgaW5Qcm9ncmVzcyxcblx0cmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sXG5cdHJydW4gPSAvcXVldWVIb29rcyQvO1xuXG5mdW5jdGlvbiBzY2hlZHVsZSgpIHtcblx0aWYgKCBpblByb2dyZXNzICkge1xuXHRcdGlmICggZG9jdW1lbnQuaGlkZGVuID09PSBmYWxzZSAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lICkge1xuXHRcdFx0d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSggc2NoZWR1bGUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d2luZG93LnNldFRpbWVvdXQoIHNjaGVkdWxlLCBqUXVlcnkuZnguaW50ZXJ2YWwgKTtcblx0XHR9XG5cblx0XHRqUXVlcnkuZngudGljaygpO1xuXHR9XG59XG5cbi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHlcbmZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0ZnhOb3cgPSB1bmRlZmluZWQ7XG5cdH0gKTtcblx0cmV0dXJuICggZnhOb3cgPSBEYXRlLm5vdygpICk7XG59XG5cbi8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uXG5mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHRoICkge1xuXHR2YXIgd2hpY2gsXG5cdFx0aSA9IDAsXG5cdFx0YXR0cnMgPSB7IGhlaWdodDogdHlwZSB9O1xuXG5cdC8vIElmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMSB0byBkbyBhbGwgY3NzRXhwYW5kIHZhbHVlcyxcblx0Ly8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHRcblx0aW5jbHVkZVdpZHRoID0gaW5jbHVkZVdpZHRoID8gMSA6IDA7XG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHtcblx0XHR3aGljaCA9IGNzc0V4cGFuZFsgaSBdO1xuXHRcdGF0dHJzWyBcIm1hcmdpblwiICsgd2hpY2ggXSA9IGF0dHJzWyBcInBhZGRpbmdcIiArIHdoaWNoIF0gPSB0eXBlO1xuXHR9XG5cblx0aWYgKCBpbmNsdWRlV2lkdGggKSB7XG5cdFx0YXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTtcblx0fVxuXG5cdHJldHVybiBhdHRycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHdlZW4oIHZhbHVlLCBwcm9wLCBhbmltYXRpb24gKSB7XG5cdHZhciB0d2Vlbixcblx0XHRjb2xsZWN0aW9uID0gKCBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggQW5pbWF0aW9uLnR3ZWVuZXJzWyBcIipcIiBdICksXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggKCB0d2VlbiA9IGNvbGxlY3Rpb25bIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBwcm9wLCB2YWx1ZSApICkgKSB7XG5cblx0XHRcdC8vIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkge1xuXHR2YXIgcHJvcCwgdmFsdWUsIHRvZ2dsZSwgaG9va3MsIG9sZGZpcmUsIHByb3BUd2VlbiwgcmVzdG9yZURpc3BsYXksIGRpc3BsYXksXG5cdFx0aXNCb3ggPSBcIndpZHRoXCIgaW4gcHJvcHMgfHwgXCJoZWlnaHRcIiBpbiBwcm9wcyxcblx0XHRhbmltID0gdGhpcyxcblx0XHRvcmlnID0ge30sXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlLFxuXHRcdGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICksXG5cdFx0ZGF0YVNob3cgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZnhzaG93XCIgKTtcblxuXHQvLyBRdWV1ZS1za2lwcGluZyBhbmltYXRpb25zIGhpamFjayB0aGUgZnggaG9va3Ncblx0aWYgKCAhb3B0cy5xdWV1ZSApIHtcblx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgXCJmeFwiICk7XG5cdFx0aWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkge1xuXHRcdFx0aG9va3MudW5xdWV1ZWQgPSAwO1xuXHRcdFx0b2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggIWhvb2tzLnVucXVldWVkICkge1xuXHRcdFx0XHRcdG9sZGZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aG9va3MudW5xdWV1ZWQrKztcblxuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXNcblx0XHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aG9va3MudW5xdWV1ZWQtLTtcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCBcImZ4XCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRGV0ZWN0IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdGZvciAoIHByb3AgaW4gcHJvcHMgKSB7XG5cdFx0dmFsdWUgPSBwcm9wc1sgcHJvcCBdO1xuXHRcdGlmICggcmZ4dHlwZXMudGVzdCggdmFsdWUgKSApIHtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgcHJvcCBdO1xuXHRcdFx0dG9nZ2xlID0gdG9nZ2xlIHx8IHZhbHVlID09PSBcInRvZ2dsZVwiO1xuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4gPyBcImhpZGVcIiA6IFwic2hvd1wiICkgKSB7XG5cblx0XHRcdFx0Ly8gUHJldGVuZCB0byBiZSBoaWRkZW4gaWYgdGhpcyBpcyBhIFwic2hvd1wiIGFuZFxuXHRcdFx0XHQvLyB0aGVyZSBpcyBzdGlsbCBkYXRhIGZyb20gYSBzdG9wcGVkIHNob3cvaGlkZVxuXHRcdFx0XHRpZiAoIHZhbHVlID09PSBcInNob3dcIiAmJiBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gdHJ1ZTtcblxuXHRcdFx0XHQvLyBJZ25vcmUgYWxsIG90aGVyIG5vLW9wIHNob3cvaGlkZSBkYXRhXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG9yaWdbIHByb3AgXSA9IGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gfHwgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQmFpbCBvdXQgaWYgdGhpcyBpcyBhIG5vLW9wIGxpa2UgLmhpZGUoKS5oaWRlKClcblx0cHJvcFR3ZWVuID0gIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wcyApO1xuXHRpZiAoICFwcm9wVHdlZW4gJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcgKSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBSZXN0cmljdCBcIm92ZXJmbG93XCIgYW5kIFwiZGlzcGxheVwiIHN0eWxlcyBkdXJpbmcgYm94IGFuaW1hdGlvbnNcblx0aWYgKCBpc0JveCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QgaW5mZXIgdGhlIHNob3J0aGFuZFxuXHRcdC8vIGZyb20gaWRlbnRpY2FsbHktdmFsdWVkIG92ZXJmbG93WCBhbmQgb3ZlcmZsb3dZIGFuZCBFZGdlIGp1c3QgbWlycm9yc1xuXHRcdC8vIHRoZSBvdmVyZmxvd1ggdmFsdWUgdGhlcmUuXG5cdFx0b3B0cy5vdmVyZmxvdyA9IFsgc3R5bGUub3ZlcmZsb3csIHN0eWxlLm92ZXJmbG93WCwgc3R5bGUub3ZlcmZsb3dZIF07XG5cblx0XHQvLyBJZGVudGlmeSBhIGRpc3BsYXkgdHlwZSwgcHJlZmVycmluZyBvbGQgc2hvdy9oaWRlIGRhdGEgb3ZlciB0aGUgQ1NTIGNhc2NhZGVcblx0XHRyZXN0b3JlRGlzcGxheSA9IGRhdGFTaG93ICYmIGRhdGFTaG93LmRpc3BsYXk7XG5cdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0fVxuXHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ICkge1xuXHRcdFx0XHRkaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEdldCBub25lbXB0eSB2YWx1ZShzKSBieSB0ZW1wb3JhcmlseSBmb3JjaW5nIHZpc2liaWxpdHlcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7XG5cdFx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5IHx8IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQW5pbWF0ZSBpbmxpbmUgZWxlbWVudHMgYXMgaW5saW5lLWJsb2NrXG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcImlubGluZVwiIHx8IGRpc3BsYXkgPT09IFwiaW5saW5lLWJsb2NrXCIgJiYgcmVzdG9yZURpc3BsYXkgIT0gbnVsbCApIHtcblx0XHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJmbG9hdFwiICkgPT09IFwibm9uZVwiICkge1xuXG5cdFx0XHRcdC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGRpc3BsYXkgdmFsdWUgYXQgdGhlIGVuZCBvZiBwdXJlIHNob3cvaGlkZSBhbmltYXRpb25zXG5cdFx0XHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdFx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0c3R5bGUuZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5ID0gc3R5bGUuZGlzcGxheTtcblx0XHRcdFx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGlzcGxheSA9PT0gXCJub25lXCIgPyBcIlwiIDogZGlzcGxheTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBvcHRzLm92ZXJmbG93ICkge1xuXHRcdHN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTtcblx0XHRcdHN0eWxlLm92ZXJmbG93WCA9IG9wdHMub3ZlcmZsb3dbIDEgXTtcblx0XHRcdHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBJbXBsZW1lbnQgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0cHJvcFR3ZWVuID0gZmFsc2U7XG5cdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblxuXHRcdC8vIEdlbmVyYWwgc2hvdy9oaWRlIHNldHVwIGZvciB0aGlzIGVsZW1lbnQgYW5pbWF0aW9uXG5cdFx0aWYgKCAhcHJvcFR3ZWVuICkge1xuXHRcdFx0aWYgKCBkYXRhU2hvdyApIHtcblx0XHRcdFx0aWYgKCBcImhpZGRlblwiIGluIGRhdGFTaG93ICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGF0YVNob3cgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIFwiZnhzaG93XCIsIHsgZGlzcGxheTogcmVzdG9yZURpc3BsYXkgfSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdG9yZSBoaWRkZW4vdmlzaWJsZSBmb3IgdG9nZ2xlIHNvIGAuc3RvcCgpLnRvZ2dsZSgpYCBcInJldmVyc2VzXCJcblx0XHRcdGlmICggdG9nZ2xlICkge1xuXHRcdFx0XHRkYXRhU2hvdy5oaWRkZW4gPSAhaGlkZGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTaG93IGVsZW1lbnRzIGJlZm9yZSBhbmltYXRpbmcgdGhlbVxuXHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi9cblxuXHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMgKi9cblxuXHRcdFx0XHQvLyBUaGUgZmluYWwgc3RlcCBvZiBhIFwiaGlkZVwiIGFuaW1hdGlvbiBpcyBhY3R1YWxseSBoaWRpbmcgdGhlIGVsZW1lbnRcblx0XHRcdFx0aWYgKCAhaGlkZGVuICkge1xuXHRcdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgXCJmeHNob3dcIiApO1xuXHRcdFx0XHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBvcmlnWyBwcm9wIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdC8vIFBlci1wcm9wZXJ0eSBzZXR1cFxuXHRcdHByb3BUd2VlbiA9IGNyZWF0ZVR3ZWVuKCBoaWRkZW4gPyBkYXRhU2hvd1sgcHJvcCBdIDogMCwgcHJvcCwgYW5pbSApO1xuXHRcdGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkge1xuXHRcdFx0ZGF0YVNob3dbIHByb3AgXSA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRwcm9wVHdlZW4uZW5kID0gcHJvcFR3ZWVuLnN0YXJ0O1xuXHRcdFx0XHRwcm9wVHdlZW4uc3RhcnQgPSAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHtcblx0dmFyIGluZGV4LCBuYW1lLCBlYXNpbmcsIHZhbHVlLCBob29rcztcblxuXHQvLyBjYW1lbENhc2UsIHNwZWNpYWxFYXNpbmcgYW5kIGV4cGFuZCBjc3NIb29rIHBhc3Ncblx0Zm9yICggaW5kZXggaW4gcHJvcHMgKSB7XG5cdFx0bmFtZSA9IGNhbWVsQ2FzZSggaW5kZXggKTtcblx0XHRlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07XG5cdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRlYXNpbmcgPSB2YWx1ZVsgMSBdO1xuXHRcdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07XG5cdFx0fVxuXG5cdFx0aWYgKCBpbmRleCAhPT0gbmFtZSApIHtcblx0XHRcdHByb3BzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgaW5kZXggXTtcblx0XHR9XG5cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdO1xuXHRcdGlmICggaG9va3MgJiYgXCJleHBhbmRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBuYW1lIF07XG5cblx0XHRcdC8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcga2V5cy5cblx0XHRcdC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3QgXCJuYW1lXCJcblx0XHRcdGZvciAoIGluZGV4IGluIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7XG5cdFx0XHRcdFx0cHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgaW5kZXggXTtcblx0XHRcdFx0XHRzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBwcm9wZXJ0aWVzLCBvcHRpb25zICkge1xuXHR2YXIgcmVzdWx0LFxuXHRcdHN0b3BwZWQsXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzLmxlbmd0aCxcblx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvclxuXHRcdFx0ZGVsZXRlIHRpY2suZWxlbTtcblx0XHR9ICksXG5cdFx0dGljayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0XHRyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCAyLjMgb25seVxuXHRcdFx0XHQvLyBBcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgYDEgLSAoIDAuNSB8fCAwIClgICgjMTI0OTcpXG5cdFx0XHRcdHRlbXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24gfHwgMCxcblx0XHRcdFx0cGVyY2VudCA9IDEgLSB0ZW1wLFxuXHRcdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRcdGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0gKTtcblxuXHRcdFx0Ly8gSWYgdGhlcmUncyBtb3JlIHRvIGRvLCB5aWVsZFxuXHRcdFx0aWYgKCBwZXJjZW50IDwgMSAmJiBsZW5ndGggKSB7XG5cdFx0XHRcdHJldHVybiByZW1haW5pbmc7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHRoaXMgd2FzIGFuIGVtcHR5IGFuaW1hdGlvbiwgc3ludGhlc2l6ZSBhIGZpbmFsIHByb2dyZXNzIG5vdGlmaWNhdGlvblxuXHRcdFx0aWYgKCAhbGVuZ3RoICkge1xuXHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlc29sdmUgdGhlIGFuaW1hdGlvbiBhbmQgcmVwb3J0IGl0cyBjb25jbHVzaW9uXG5cdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0sXG5cdFx0YW5pbWF0aW9uID0gZGVmZXJyZWQucHJvbWlzZSgge1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdHByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLFxuXHRcdFx0b3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwge1xuXHRcdFx0XHRzcGVjaWFsRWFzaW5nOiB7fSxcblx0XHRcdFx0ZWFzaW5nOiBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0XG5cdFx0XHR9LCBvcHRpb25zICksXG5cdFx0XHRvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG5cdFx0XHRvcmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsXG5cdFx0XHRzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbixcblx0XHRcdHR3ZWVuczogW10sXG5cdFx0XHRjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHtcblx0XHRcdFx0dmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5kLFxuXHRcdFx0XHRcdFx0YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApO1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zLnB1c2goIHR3ZWVuICk7XG5cdFx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHRcdH0sXG5cdFx0XHRzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHtcblx0XHRcdFx0dmFyIGluZGV4ID0gMCxcblxuXHRcdFx0XHRcdC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVuc1xuXHRcdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydFxuXHRcdFx0XHRcdGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0XHRzdG9wcGVkID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZTsgb3RoZXJ3aXNlLCByZWplY3Rcblx0XHRcdFx0aWYgKCBnb3RvRW5kICkge1xuXHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblx0XHR9ICksXG5cdFx0cHJvcHMgPSBhbmltYXRpb24ucHJvcHM7XG5cblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdHJlc3VsdCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7XG5cdFx0aWYgKCByZXN1bHQgKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHJlc3VsdC5zdG9wICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVlICkuc3RvcCA9XG5cdFx0XHRcdFx0cmVzdWx0LnN0b3AuYmluZCggcmVzdWx0ICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fVxuXG5cdGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7XG5cblx0aWYgKCBpc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xuXHRcdGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApO1xuXHR9XG5cblx0Ly8gQXR0YWNoIGNhbGxiYWNrcyBmcm9tIG9wdGlvbnNcblx0YW5pbWF0aW9uXG5cdFx0LnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcblx0XHQuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApXG5cdFx0LmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7XG5cblx0alF1ZXJ5LmZ4LnRpbWVyKFxuXHRcdGpRdWVyeS5leHRlbmQoIHRpY2ssIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRhbmltOiBhbmltYXRpb24sXG5cdFx0XHRxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWVcblx0XHR9IClcblx0KTtcblxuXHRyZXR1cm4gYW5pbWF0aW9uO1xufVxuXG5qUXVlcnkuQW5pbWF0aW9uID0galF1ZXJ5LmV4dGVuZCggQW5pbWF0aW9uLCB7XG5cblx0dHdlZW5lcnM6IHtcblx0XHRcIipcIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApO1xuXHRcdFx0YWRqdXN0Q1NTKCB0d2Vlbi5lbGVtLCBwcm9wLCByY3NzTnVtLmV4ZWMoIHZhbHVlICksIHR3ZWVuICk7XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fSBdXG5cdH0sXG5cblx0dHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIHByb3BzICkgKSB7XG5cdFx0XHRjYWxsYmFjayA9IHByb3BzO1xuXHRcdFx0cHJvcHMgPSBbIFwiKlwiIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BzID0gcHJvcHMubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblx0XHR9XG5cblx0XHR2YXIgcHJvcCxcblx0XHRcdGluZGV4ID0gMCxcblx0XHRcdGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRwcm9wID0gcHJvcHNbIGluZGV4IF07XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSA9IEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0udW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH0sXG5cblx0cHJlZmlsdGVyczogWyBkZWZhdWx0UHJlZmlsdGVyIF0sXG5cblx0cHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7XG5cdFx0aWYgKCBwcmVwZW5kICkge1xuXHRcdFx0QW5pbWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0QW5pbWF0aW9uLnByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGZuICkge1xuXHR2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7XG5cdFx0Y29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHxcblx0XHRcdGlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsXG5cdFx0ZHVyYXRpb246IHNwZWVkLFxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nXG5cdH07XG5cblx0Ly8gR28gdG8gdGhlIGVuZCBzdGF0ZSBpZiBmeCBhcmUgb2ZmXG5cdGlmICggalF1ZXJ5LmZ4Lm9mZiApIHtcblx0XHRvcHQuZHVyYXRpb24gPSAwO1xuXG5cdH0gZWxzZSB7XG5cdFx0aWYgKCB0eXBlb2Ygb3B0LmR1cmF0aW9uICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0aWYgKCBvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyApIHtcblx0XHRcdFx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXG5cdGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkge1xuXHRcdG9wdC5xdWV1ZSA9IFwiZnhcIjtcblx0fVxuXG5cdC8vIFF1ZXVlaW5nXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XG5cblx0b3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7XG5cdFx0XHRvcHQub2xkLmNhbGwoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIG9wdC5xdWV1ZSApIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTtcblx0XHR9XG5cdH07XG5cblx0cmV0dXJuIG9wdDtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbldpdGhpblRyZWUgKS5jc3MoIFwib3BhY2l0eVwiLCAwICkuc2hvdygpXG5cblx0XHRcdC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxuXHRcdFx0LmVuZCgpLmFuaW1hdGUoIHsgb3BhY2l0eTogdG8gfSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fSxcblx0YW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksXG5cdFx0XHRvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksXG5cdFx0XHRkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0XG5cdFx0XHRcdHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTtcblxuXHRcdFx0XHQvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcblx0XHRcdFx0aWYgKCBlbXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZmluaXNoXCIgKSApIHtcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uO1xuXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0dGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDpcblx0XHRcdHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTtcblx0fSxcblx0c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7XG5cdFx0dmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHtcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0c3RvcCggZ290b0VuZCApO1xuXHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XG5cdFx0XHRjbGVhclF1ZXVlID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRlcXVldWUgPSB0cnVlLFxuXHRcdFx0XHRpbmRleCA9IHR5cGUgIT0gbnVsbCAmJiB0eXBlICsgXCJxdWV1ZUhvb2tzXCIsXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKTtcblxuXHRcdFx0aWYgKCBpbmRleCApIHtcblx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHtcblx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaW5kZXggaW4gZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcblx0XHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmXG5cdFx0XHRcdFx0KCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgKSB7XG5cblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7XG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZC5cblx0XHRcdC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2hcblx0XHRcdC8vIHdpbGwgZGVxdWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC5cblx0XHRcdGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cdGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0aWYgKCB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW5kZXgsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKSxcblx0XHRcdFx0cXVldWUgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZVwiIF0sXG5cdFx0XHRcdGhvb2tzID0gZGF0YVsgdHlwZSArIFwicXVldWVIb29rc1wiIF0sXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDtcblxuXHRcdFx0Ly8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YVxuXHRcdFx0ZGF0YS5maW5pc2ggPSB0cnVlO1xuXG5cdFx0XHQvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3Rcblx0XHRcdGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTtcblxuXHRcdFx0aWYgKCBob29rcyAmJiBob29rcy5zdG9wICkge1xuXHRcdFx0XHRob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkge1xuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIHF1ZXVlWyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHtcblx0XHRcdFx0XHRxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFnXG5cdFx0XHRkZWxldGUgZGF0YS5maW5pc2g7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwidG9nZ2xlXCIsIFwic2hvd1wiLCBcImhpZGVcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gXCJib29sZWFuXCIgP1xuXHRcdFx0Y3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDpcblx0XHRcdHRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbWUsIHRydWUgKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0gKTtcblxuLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20gYW5pbWF0aW9uc1xualF1ZXJ5LmVhY2goIHtcblx0c2xpZGVEb3duOiBnZW5GeCggXCJzaG93XCIgKSxcblx0c2xpZGVVcDogZ2VuRngoIFwiaGlkZVwiICksXG5cdHNsaWRlVG9nZ2xlOiBnZW5GeCggXCJ0b2dnbGVcIiApLFxuXHRmYWRlSW46IHsgb3BhY2l0eTogXCJzaG93XCIgfSxcblx0ZmFkZU91dDogeyBvcGFjaXR5OiBcImhpZGVcIiB9LFxuXHRmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6IFwidG9nZ2xlXCIgfVxufSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LnRpbWVycyA9IFtdO1xualF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHtcblx0dmFyIHRpbWVyLFxuXHRcdGkgPSAwLFxuXHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnM7XG5cblx0ZnhOb3cgPSBEYXRlLm5vdygpO1xuXG5cdGZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHtcblx0XHR0aW1lciA9IHRpbWVyc1sgaSBdO1xuXG5cdFx0Ly8gUnVuIHRoZSB0aW1lciBhbmQgc2FmZWx5IHJlbW92ZSBpdCB3aGVuIGRvbmUgKGFsbG93aW5nIGZvciBleHRlcm5hbCByZW1vdmFsKVxuXHRcdGlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkge1xuXHRcdFx0dGltZXJzLnNwbGljZSggaS0tLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCAhdGltZXJzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZnguc3RvcCgpO1xuXHR9XG5cdGZ4Tm93ID0gdW5kZWZpbmVkO1xufTtcblxualF1ZXJ5LmZ4LnRpbWVyID0gZnVuY3Rpb24oIHRpbWVyICkge1xuXHRqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICk7XG5cdGpRdWVyeS5meC5zdGFydCgpO1xufTtcblxualF1ZXJ5LmZ4LmludGVydmFsID0gMTM7XG5qUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0aWYgKCBpblByb2dyZXNzICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGluUHJvZ3Jlc3MgPSB0cnVlO1xuXHRzY2hlZHVsZSgpO1xufTtcblxualF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHtcblx0aW5Qcm9ncmVzcyA9IG51bGw7XG59O1xuXG5qUXVlcnkuZnguc3BlZWRzID0ge1xuXHRzbG93OiA2MDAsXG5cdGZhc3Q6IDIwMCxcblxuXHQvLyBEZWZhdWx0IHNwZWVkXG5cdF9kZWZhdWx0OiA0MDBcbn07XG5cblxuLy8gQmFzZWQgb2ZmIG9mIHRoZSBwbHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLlxuLy8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAwMzI0MDE0NzQ3L2h0dHA6Ly9ibGluZHNpZ25hbHMuY29tL2luZGV4LnBocC8yMDA5LzA3L2pxdWVyeS1kZWxheS9cbmpRdWVyeS5mbi5kZWxheSA9IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkge1xuXHR0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lO1xuXHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUsIGZ1bmN0aW9uKCBuZXh0LCBob29rcyApIHtcblx0XHR2YXIgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7XG5cdFx0aG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dCApO1xuXHRcdH07XG5cdH0gKTtcbn07XG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICksXG5cdFx0c2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzZWxlY3RcIiApLFxuXHRcdG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvcHRpb25cIiApICk7XG5cblx0aW5wdXQudHlwZSA9IFwiY2hlY2tib3hcIjtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHlcblx0Ly8gRGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgXCJvblwiXG5cdHN1cHBvcnQuY2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSBcIlwiO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNlbGVjdFxuXHRzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpb1xuXHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRpbnB1dC52YWx1ZSA9IFwidFwiO1xuXHRpbnB1dC50eXBlID0gXCJyYWRpb1wiO1xuXHRzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gXCJ0XCI7XG59ICkoKTtcblxuXG52YXIgYm9vbEhvb2ssXG5cdGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgcmV0LCBob29rcyxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgYXR0cmlidXRlcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZhbGxiYWNrIHRvIHByb3Agd2hlbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgPT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXR0cmlidXRlIGhvb2tzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvblxuXHRcdC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWRcblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblx0XHRcdGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0KCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogdW5kZWZpbmVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gbnVsbCApIHtcblx0XHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyBcIlwiICk7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0cmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0Ly8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWRcblx0XHRyZXR1cm4gcmV0ID09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7XG5cdH0sXG5cblx0YXR0ckhvb2tzOiB7XG5cdFx0dHlwZToge1xuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gXCJyYWRpb1wiICYmXG5cdFx0XHRcdFx0bm9kZU5hbWUoIGVsZW0sIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHZhciB2YWwgPSBlbGVtLnZhbHVlO1xuXHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgdmFsdWUgKTtcblx0XHRcdFx0XHRpZiAoIHZhbCApIHtcblx0XHRcdFx0XHRcdGVsZW0udmFsdWUgPSB2YWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0dmFyIG5hbWUsXG5cdFx0XHRpID0gMCxcblxuXHRcdFx0Ly8gQXR0cmlidXRlIG5hbWVzIGNhbiBjb250YWluIG5vbi1IVE1MIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0yXG5cdFx0XHRhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXG5cdFx0aWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdHdoaWxlICggKCBuYW1lID0gYXR0ck5hbWVzWyBpKysgXSApICkge1xuXHRcdFx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggbmFtZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIb29rcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXG5ib29sSG9vayA9IHtcblx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2Vcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7XG5cdFx0fVxuXHRcdHJldHVybiBuYW1lO1xuXHR9XG59O1xuXG5qUXVlcnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cXHcrL2cgKSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBnZXR0ZXIgPSBhdHRySGFuZGxlWyBuYW1lIF0gfHwgalF1ZXJ5LmZpbmQuYXR0cjtcblxuXHRhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHJldCwgaGFuZGxlLFxuXHRcdFx0bG93ZXJjYXNlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuXHRcdGlmICggIWlzWE1MICkge1xuXG5cdFx0XHQvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyXG5cdFx0XHRoYW5kbGUgPSBhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF07XG5cdFx0XHRhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSByZXQ7XG5cdFx0XHRyZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/XG5cdFx0XHRcdGxvd2VyY2FzZU5hbWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gaGFuZGxlO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0O1xuXHR9O1xufSApO1xuXG5cblxuXG52YXIgcmZvY3VzYWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rc1xuXHRcdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcblx0XHRcdGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAoIGVsZW1bIG5hbWUgXSA9IHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVsZW1bIG5hbWUgXTtcblx0fSxcblxuXHRwcm9wSG9va3M6IHtcblx0XHR0YWJJbmRleDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0XHRcdC8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZVxuXHRcdFx0XHQvLyBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXRcblx0XHRcdFx0Ly8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTQxMTE2MjMzMzQ3L2h0dHA6Ly9mbHVpZHByb2plY3Qub3JnL2Jsb2cvMjAwOC8wMS8wOS9nZXR0aW5nLXNldHRpbmctYW5kLXJlbW92aW5nLXRhYmluZGV4LXZhbHVlcy13aXRoLWphdmFzY3JpcHQvXG5cdFx0XHRcdC8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCgjMTIwNzIpXG5cdFx0XHRcdHZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidGFiaW5kZXhcIiApO1xuXG5cdFx0XHRcdGlmICggdGFiaW5kZXggKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnNlSW50KCB0YWJpbmRleCwgMTAgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRyZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fFxuXHRcdFx0XHRcdHJjbGlja2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYmXG5cdFx0XHRcdFx0ZWxlbS5ocmVmXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRwcm9wRml4OiB7XG5cdFx0XCJmb3JcIjogXCJodG1sRm9yXCIsXG5cdFx0XCJjbGFzc1wiOiBcImNsYXNzTmFtZVwiXG5cdH1cbn0gKTtcblxuLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG4vLyBBY2Nlc3NpbmcgdGhlIHNlbGVjdGVkSW5kZXggcHJvcGVydHlcbi8vIGZvcmNlcyB0aGUgYnJvd3NlciB0byByZXNwZWN0IHNldHRpbmcgc2VsZWN0ZWRcbi8vIG9uIHRoZSBvcHRpb25cbi8vIFRoZSBnZXR0ZXIgZW5zdXJlcyBhIGRlZmF1bHQgb3B0aW9uIGlzIHNlbGVjdGVkXG4vLyB3aGVuIGluIGFuIG9wdGdyb3VwXG4vLyBlc2xpbnQgcnVsZSBcIm5vLXVudXNlZC1leHByZXNzaW9uc1wiIGlzIGRpc2FibGVkIGZvciB0aGlzIGNvZGVcbi8vIHNpbmNlIGl0IGNvbnNpZGVycyBzdWNoIGFjY2Vzc2lvbnMgbm9vcFxuaWYgKCAhc3VwcG9ydC5vcHRTZWxlY3RlZCApIHtcblx0alF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiBcIm9mZlwiICovXG5cblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRpZiAoIHBhcmVudCAmJiBwYXJlbnQucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0cGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH0sXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdHBhcmVudC5zZWxlY3RlZEluZGV4O1xuXG5cdFx0XHRcdGlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxualF1ZXJ5LmVhY2goIFtcblx0XCJ0YWJJbmRleFwiLFxuXHRcInJlYWRPbmx5XCIsXG5cdFwibWF4TGVuZ3RoXCIsXG5cdFwiY2VsbFNwYWNpbmdcIixcblx0XCJjZWxsUGFkZGluZ1wiLFxuXHRcInJvd1NwYW5cIixcblx0XCJjb2xTcGFuXCIsXG5cdFwidXNlTWFwXCIsXG5cdFwiZnJhbWVCb3JkZXJcIixcblx0XCJjb250ZW50RWRpdGFibGVcIlxuXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkgXSA9IHRoaXM7XG59ICk7XG5cblxuXG5cblx0Ly8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UgYWNjb3JkaW5nIHRvIEhUTUwgc3BlY1xuXHQvLyBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLWFzY2lpLXdoaXRlc3BhY2Vcblx0ZnVuY3Rpb24gc3RyaXBBbmRDb2xsYXBzZSggdmFsdWUgKSB7XG5cdFx0dmFyIHRva2VucyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cdFx0cmV0dXJuIHRva2Vucy5qb2luKCBcIiBcIiApO1xuXHR9XG5cblxuZnVuY3Rpb24gZ2V0Q2xhc3MoIGVsZW0gKSB7XG5cdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSAmJiBlbGVtLmdldEF0dHJpYnV0ZSggXCJjbGFzc1wiICkgfHwgXCJcIjtcbn1cblxuZnVuY3Rpb24gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICkge1xuXHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHR9XG5cdHJldHVybiBbXTtcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhZGRDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRjbGFzc2VzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzZXMubGVuZ3RoICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7XG5cdFx0XHRcdGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGN1ci5pbmRleE9mKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIgKSA8IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciArPSBjbGF6eiArIFwiIFwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuXG5cdFx0XHRcdFx0ZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApO1xuXHRcdFx0XHRcdGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLCBmaW5hbFZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0cmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmF0dHIoIFwiY2xhc3NcIiwgXCJcIiApO1xuXHRcdH1cblxuXHRcdGNsYXNzZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggY2xhc3Nlcy5sZW5ndGggKSB7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTtcblxuXHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKVxuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkge1xuXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzXG5cdFx0XHRcdFx0XHR3aGlsZSAoIGN1ci5pbmRleE9mKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgPSBjdXIucmVwbGFjZSggXCIgXCIgKyBjbGF6eiArIFwiIFwiLCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuXG5cdFx0XHRcdFx0ZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApO1xuXHRcdFx0XHRcdGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLCBmaW5hbFZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0dG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7XG5cdFx0dmFyIHR5cGUgPSB0eXBlb2YgdmFsdWUsXG5cdFx0XHRpc1ZhbGlkVmFsdWUgPSB0eXBlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0gXCJib29sZWFuXCIgJiYgaXNWYWxpZFZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKFxuXHRcdFx0XHRcdHZhbHVlLmNhbGwoIHRoaXMsIGksIGdldENsYXNzKCB0aGlzICksIHN0YXRlVmFsICksXG5cdFx0XHRcdFx0c3RhdGVWYWxcblx0XHRcdFx0KTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBjbGFzc05hbWUsIGksIHNlbGYsIGNsYXNzTmFtZXM7XG5cblx0XHRcdGlmICggaXNWYWxpZFZhbHVlICkge1xuXG5cdFx0XHRcdC8vIFRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzXG5cdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRzZWxmID0galF1ZXJ5KCB0aGlzICk7XG5cdFx0XHRcdGNsYXNzTmFtZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdFx0XHR3aGlsZSAoICggY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0gKSApIHtcblxuXHRcdFx0XHRcdC8vIENoZWNrIGVhY2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdFxuXHRcdFx0XHRcdGlmICggc2VsZi5oYXNDbGFzcyggY2xhc3NOYW1lICkgKSB7XG5cdFx0XHRcdFx0XHRzZWxmLnJlbW92ZUNsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c2VsZi5hZGRDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdC8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lXG5cdFx0XHR9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0XHRjbGFzc05hbWUgPSBnZXRDbGFzcyggdGhpcyApO1xuXHRcdFx0XHRpZiAoIGNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdC8vIFN0b3JlIGNsYXNzTmFtZSBpZiBzZXRcblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiLCBjbGFzc05hbWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsXG5cdFx0XHRcdC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksXG5cdFx0XHRcdC8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cblx0XHRcdFx0aWYgKCB0aGlzLnNldEF0dHJpYnV0ZSApIHtcblx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLFxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lIHx8IHZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRcdFx0XHRcIlwiIDpcblx0XHRcdFx0XHRcdGRhdGFQcml2LmdldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBjbGFzc05hbWUsIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIjtcblx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0KCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGdldENsYXNzKCBlbGVtICkgKSArIFwiIFwiICkuaW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn0gKTtcblxuXG5cblxudmFyIHJyZXR1cm4gPSAvXFxyL2c7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsIHZhbHVlSXNGdW5jdGlvbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF07XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBlIF0gfHxcblx0XHRcdFx0XHRqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdO1xuXG5cdFx0XHRcdGlmICggaG9va3MgJiZcblx0XHRcdFx0XHRcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdFx0KCByZXQgPSBob29rcy5nZXQoIGVsZW0sIFwidmFsdWVcIiApICkgIT09IHVuZGVmaW5lZFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0ID0gZWxlbS52YWx1ZTtcblxuXHRcdFx0XHQvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzXG5cdFx0XHRcdGlmICggdHlwZW9mIHJldCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcmV0LnJlcGxhY2UoIHJyZXR1cm4sIFwiXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlclxuXHRcdFx0XHRyZXR1cm4gcmV0ID09IG51bGwgPyBcIlwiIDogcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0dmFyIHZhbDtcblxuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBqUXVlcnkoIHRoaXMgKS52YWwoKSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFsID0gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzIFwiXCI7IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmdcblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHZhbCA9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdHZhbCArPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBBcnJheS5pc0FycmF5KCB2YWwgKSApIHtcblx0XHRcdFx0dmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdO1xuXG5cdFx0XHQvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmluZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZ1xuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCBcInZhbHVlXCIgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHR0aGlzLnZhbHVlID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHZhbEhvb2tzOiB7XG5cdFx0b3B0aW9uOiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHRcdHZhciB2YWwgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInZhbHVlXCIgKTtcblx0XHRcdFx0cmV0dXJuIHZhbCAhPSBudWxsID9cblx0XHRcdFx0XHR2YWwgOlxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExIG9ubHlcblx0XHRcdFx0XHQvLyBvcHRpb24udGV4dCB0aHJvd3MgZXhjZXB0aW9ucyAoIzE0Njg2LCAjMTQ4NTgpXG5cdFx0XHRcdFx0Ly8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2Vcblx0XHRcdFx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZVxuXHRcdFx0XHRcdHN0cmlwQW5kQ29sbGFwc2UoIGpRdWVyeS50ZXh0KCBlbGVtICkgKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNlbGVjdDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHZhbHVlLCBvcHRpb24sIGksXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHRpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCxcblx0XHRcdFx0XHRvbmUgPSBlbGVtLnR5cGUgPT09IFwic2VsZWN0LW9uZVwiLFxuXHRcdFx0XHRcdHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSxcblx0XHRcdFx0XHRtYXggPSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHRpZiAoIGluZGV4IDwgMCApIHtcblx0XHRcdFx0XHRpID0gbWF4O1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aSA9IG9uZSA/IGluZGV4IDogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnNcblx0XHRcdFx0Zm9yICggOyBpIDwgbWF4OyBpKysgKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHQvLyBJRTgtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICgjMjU1MSlcblx0XHRcdFx0XHRpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiZcblxuXHRcdFx0XHRcdFx0XHQvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHRcdFx0XHRcdCFvcHRpb24uZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdFx0KCAhb3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQgfHxcblx0XHRcdFx0XHRcdFx0XHQhbm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCBcIm9wdGdyb3VwXCIgKSApICkge1xuXG5cdFx0XHRcdFx0XHQvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7XG5cblx0XHRcdFx0XHRcdC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzXG5cdFx0XHRcdFx0XHRpZiAoIG9uZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheVxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgb3B0aW9uU2V0LCBvcHRpb24sXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHR2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLFxuXHRcdFx0XHRcdGkgPSBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXG5cdFx0XHRcdFx0aWYgKCBvcHRpb24uc2VsZWN0ZWQgPVxuXHRcdFx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIGpRdWVyeS52YWxIb29rcy5vcHRpb24uZ2V0KCBvcHRpb24gKSwgdmFsdWVzICkgPiAtMVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0b3B0aW9uU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbmQtYXNzaWduICovXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlzIHNldFxuXHRcdFx0XHRpZiAoICFvcHRpb25TZXQgKSB7XG5cdFx0XHRcdFx0ZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIGdldHRlci9zZXR0ZXJcbmpRdWVyeS5lYWNoKCBbIFwicmFkaW9cIiwgXCJjaGVja2JveFwiIF0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHtcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS5jaGVja2VkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeSggZWxlbSApLnZhbCgpLCB2YWx1ZSApID4gLTEgKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGlmICggIXN1cHBvcnQuY2hlY2tPbiApIHtcblx0XHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IG51bGwgPyBcIm9uXCIgOiBlbGVtLnZhbHVlO1xuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUmV0dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvblxuXG5cbnN1cHBvcnQuZm9jdXNpbiA9IFwib25mb2N1c2luXCIgaW4gd2luZG93O1xuXG5cbnZhciByZm9jdXNNb3JwaCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxcblx0c3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgPSBmdW5jdGlvbiggZSApIHtcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9O1xuXG5qUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZXZlbnQsIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHtcblxuXHRcdHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsIGxhc3RFbGVtZW50LFxuXHRcdFx0ZXZlbnRQYXRoID0gWyBlbGVtIHx8IGRvY3VtZW50IF0sXG5cdFx0XHR0eXBlID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcInR5cGVcIiApID8gZXZlbnQudHlwZSA6IGV2ZW50LFxuXHRcdFx0bmFtZXNwYWNlcyA9IGhhc093bi5jYWxsKCBldmVudCwgXCJuYW1lc3BhY2VcIiApID8gZXZlbnQubmFtZXNwYWNlLnNwbGl0KCBcIi5cIiApIDogW107XG5cblx0XHRjdXIgPSBsYXN0RWxlbWVudCA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50O1xuXG5cdFx0Ly8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3dcblx0XHRpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlLmluZGV4T2YoIFwiLlwiICkgPiAtMSApIHtcblxuXHRcdFx0Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKVxuXHRcdFx0bmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoIFwiLlwiICk7XG5cdFx0XHR0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpO1xuXHRcdFx0bmFtZXNwYWNlcy5zb3J0KCk7XG5cdFx0fVxuXHRcdG9udHlwZSA9IHR5cGUuaW5kZXhPZiggXCI6XCIgKSA8IDAgJiYgXCJvblwiICsgdHlwZTtcblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmluZ1xuXHRcdGV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0ZXZlbnQgOlxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09PSBcIm9iamVjdFwiICYmIGV2ZW50ICk7XG5cblx0XHQvLyBUcmlnZ2VyIGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVyeSAoYWx3YXlzIHRydWUpXG5cdFx0ZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8gMiA6IDM7XG5cdFx0ZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApO1xuXHRcdGV2ZW50LnJuYW1lc3BhY2UgPSBldmVudC5uYW1lc3BhY2UgP1xuXHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICkgOlxuXHRcdFx0bnVsbDtcblxuXHRcdC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZFxuXHRcdGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBlbGVtO1xuXHRcdH1cblxuXHRcdC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3Rcblx0XHRkYXRhID0gZGF0YSA9PSBudWxsID9cblx0XHRcdFsgZXZlbnQgXSA6XG5cdFx0XHRqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2ZW50IF0gKTtcblxuXHRcdC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXNcblx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSlcblx0XHQvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KVxuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0YnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7XG5cdFx0XHRpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkge1xuXHRcdFx0XHRjdXIgPSBjdXIucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIGN1ciApO1xuXHRcdFx0XHR0bXAgPSBjdXI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxuXHRcdFx0aWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGxhc3RFbGVtZW50ID0gY3VyO1xuXHRcdFx0ZXZlbnQudHlwZSA9IGkgPiAxID9cblx0XHRcdFx0YnViYmxlVHlwZSA6XG5cdFx0XHRcdHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTtcblxuXHRcdFx0Ly8galF1ZXJ5IGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBjdXIsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiZcblx0XHRcdFx0ZGF0YVByaXYuZ2V0KCBjdXIsIFwiaGFuZGxlXCIgKTtcblx0XHRcdGlmICggaGFuZGxlICkge1xuXHRcdFx0XHRoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBOYXRpdmUgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07XG5cdFx0XHRpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgYWNjZXB0RGF0YSggY3VyICkgKSB7XG5cdFx0XHRcdGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGV2ZW50LnR5cGUgPSB0eXBlO1xuXG5cdFx0Ly8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vd1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cblx0XHRcdGlmICggKCAhc3BlY2lhbC5fZGVmYXVsdCB8fFxuXHRcdFx0XHRzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJlxuXHRcdFx0XHRhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cblx0XHRcdFx0Ly8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBldmVudC5cblx0XHRcdFx0Ly8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKVxuXHRcdFx0XHRpZiAoIG9udHlwZSAmJiBpc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2Rcblx0XHRcdFx0XHR0bXAgPSBlbGVtWyBvbnR5cGUgXTtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7XG5cblx0XHRcdFx0XHRpZiAoIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHRsYXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBzdG9wUHJvcGFnYXRpb25DYWxsYmFjayApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW1bIHR5cGUgXSgpO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRcdFx0aWYgKCB0bXAgKSB7XG5cdFx0XHRcdFx0XHRlbGVtWyBvbnR5cGUgXSA9IHRtcDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHR9LFxuXG5cdC8vIFBpZ2d5YmFjayBvbiBhIGRvbm9yIGV2ZW50IHRvIHNpbXVsYXRlIGEgZGlmZmVyZW50IG9uZVxuXHQvLyBVc2VkIG9ubHkgZm9yIGBmb2N1cyhpbiB8IG91dClgIGV2ZW50c1xuXHRzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50ICkge1xuXHRcdHZhciBlID0galF1ZXJ5LmV4dGVuZChcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoKSxcblx0XHRcdGV2ZW50LFxuXHRcdFx0e1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRpc1NpbXVsYXRlZDogdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApO1xuXHR9XG5cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTtcblx0XHR9ICk7XG5cdH0sXG5cdHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXTtcblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTtcblx0XHR9XG5cdH1cbn0gKTtcblxuXG4vLyBTdXBwb3J0OiBGaXJlZm94IDw9NDRcbi8vIEZpcmVmb3ggZG9lc24ndCBoYXZlIGZvY3VzKGluIHwgb3V0KSBldmVudHNcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3Nzg3XG4vL1xuLy8gU3VwcG9ydDogQ2hyb21lIDw9NDggLSA0OSwgU2FmYXJpIDw9OS4wIC0gOS4xXG4vLyBmb2N1cyhpbiB8IG91dCkgZXZlbnRzIGZpcmUgYWZ0ZXIgZm9jdXMgJiBibHVyIGV2ZW50cyxcbi8vIHdoaWNoIGlzIHNwZWMgdmlvbGF0aW9uIC0gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtZm9jdXNldmVudC1ldmVudC1vcmRlclxuLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDk4NTdcbmlmICggIXN1cHBvcnQuZm9jdXNpbiApIHtcblx0alF1ZXJ5LmVhY2goIHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblxuXHRcdC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0XG5cdFx0dmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7XG5cdFx0fTtcblxuXHRcdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHtcblx0XHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5hZGRFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7XG5cdFx0XHR9LFxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBkb2MsIGZpeCApO1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH0gKTtcbn1cbnZhciBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcblxudmFyIG5vbmNlID0gRGF0ZS5ub3coKTtcblxudmFyIHJxdWVyeSA9ICggL1xcPy8gKTtcblxuXG5cbi8vIENyb3NzLWJyb3dzZXIgeG1sIHBhcnNpbmdcbmpRdWVyeS5wYXJzZVhNTCA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHR2YXIgeG1sO1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0Ly8gSUUgdGhyb3dzIG9uIHBhcnNlRnJvbVN0cmluZyB3aXRoIGludmFsaWQgaW5wdXQuXG5cdHRyeSB7XG5cdFx0eG1sID0gKCBuZXcgd2luZG93LkRPTVBhcnNlcigpICkucGFyc2VGcm9tU3RyaW5nKCBkYXRhLCBcInRleHQveG1sXCIgKTtcblx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0eG1sID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKCAheG1sIHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggXCJwYXJzZXJlcnJvclwiICkubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5lcnJvciggXCJJbnZhbGlkIFhNTDogXCIgKyBkYXRhICk7XG5cdH1cblx0cmV0dXJuIHhtbDtcbn07XG5cblxudmFyXG5cdHJicmFja2V0ID0gL1xcW1xcXSQvLFxuXHRyQ1JMRiA9IC9cXHI/XFxuL2csXG5cdHJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxcblx0cnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO1xuXG5mdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7XG5cdHZhciBuYW1lO1xuXG5cdGlmICggQXJyYXkuaXNBcnJheSggb2JqICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS5cblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcblx0XHRcdGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7XG5cblx0XHRcdFx0Ly8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLlxuXHRcdFx0XHRhZGQoIHByZWZpeCwgdiApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LlxuXHRcdFx0XHRidWlsZFBhcmFtcyhcblx0XHRcdFx0XHRwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPSBudWxsID8gaSA6IFwiXCIgKSArIFwiXVwiLFxuXHRcdFx0XHRcdHYsXG5cdFx0XHRcdFx0dHJhZGl0aW9uYWwsXG5cdFx0XHRcdFx0YWRkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdH0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiB0b1R5cGUoIG9iaiApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIG9iamVjdCBpdGVtLlxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCArIFwiW1wiICsgbmFtZSArIFwiXVwiLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHNjYWxhciBpdGVtLlxuXHRcdGFkZCggcHJlZml4LCBvYmogKTtcblx0fVxufVxuXG4vLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZlxuLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nXG5qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7XG5cdHZhciBwcmVmaXgsXG5cdFx0cyA9IFtdLFxuXHRcdGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHtcblxuXHRcdFx0Ly8gSWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1ZVxuXHRcdFx0dmFyIHZhbHVlID0gaXNGdW5jdGlvbiggdmFsdWVPckZ1bmN0aW9uICkgP1xuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb24oKSA6XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbjtcblxuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArXG5cdFx0XHRcdGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdH07XG5cblx0Ly8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBhICkgfHwgKCBhLmpxdWVyeSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGEgKSApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzXG5cdFx0alF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkge1xuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcblx0XHR9ICk7XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlIFwib2xkXCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyXG5cdFx0Ly8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb25cblx0cmV0dXJuIHMuam9pbiggXCImXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0gKVxuXHRcdC5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9IClcblx0XHQubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHtcblx0XHRcdHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTtcblxuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdH0gKS5nZXQoKTtcblx0fVxufSApO1xuXG5cbnZhclxuXHRyMjAgPSAvJTIwL2csXG5cdHJoYXNoID0gLyMuKiQvLFxuXHRyYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cblx0Ly8gIzc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxuXHRycHJvdG9jb2wgPSAvXlxcL1xcLy8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblx0b3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9IFwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggZnVuYyApICkge1xuXG5cdFx0XHQvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uXG5cdFx0XHR3aGlsZSAoICggZGF0YVR5cGUgPSBkYXRhVHlwZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0Ly8gUHJlcGVuZCBpZiByZXF1ZXN0ZWRcblx0XHRcdFx0aWYgKCBkYXRhVHlwZVsgMCBdID09PSBcIitcIiApIHtcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgXCIqXCI7XG5cdFx0XHRcdFx0KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkucHVzaCggZnVuYyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG4vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHNcbmZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKSB7XG5cblx0dmFyIGluc3BlY3RlZCA9IHt9LFxuXHRcdHNlZWtpbmdUcmFuc3BvcnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApO1xuXG5cdGZ1bmN0aW9uIGluc3BlY3QoIGRhdGFUeXBlICkge1xuXHRcdHZhciBzZWxlY3RlZDtcblx0XHRpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlO1xuXHRcdGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1bmN0aW9uKCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7XG5cdFx0XHR2YXIgZGF0YVR5cGVPclRyYW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApO1xuXHRcdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7XG5cblx0XHRcdFx0b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7XG5cdFx0XHRcdHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIHNlbGVjdGVkO1xuXHR9XG5cblx0cmV0dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyBcIipcIiBdICYmIGluc3BlY3QoIFwiKlwiICk7XG59XG5cbi8vIEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9uc1xuLy8gdGhhdCB0YWtlcyBcImZsYXRcIiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZClcbi8vIEZpeGVzICM5ODg3XG5mdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHtcblx0dmFyIGtleSwgZGVlcCxcblx0XHRmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307XG5cblx0Zm9yICgga2V5IGluIHNyYyApIHtcblx0XHRpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdCggZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XG5cdFx0fVxuXHR9XG5cdGlmICggZGVlcCApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcbiAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpXG4gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHtcblxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXG5cdFx0Y29udGVudHMgPSBzLmNvbnRlbnRzLFxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzO1xuXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXG5cdHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09IFwiKlwiICkge1xuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xuXHRcdGlmICggY3QgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJDb250ZW50LVR5cGVcIiApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxuXHRpZiAoIGN0ICkge1xuXHRcdGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7XG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xuXHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGVcblx0aWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7XG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gVHJ5IGNvbnZlcnRpYmxlIGRhdGFUeXBlc1xuXHRcdGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkge1xuXHRcdFx0aWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgXCIgXCIgKyBkYXRhVHlwZXNbIDAgXSBdICkge1xuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xuXHRcdFx0XHRmaXJzdERhdGFUeXBlID0gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcblx0XHRmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlO1xuXHR9XG5cblx0Ly8gSWYgd2UgZm91bmQgYSBkYXRhVHlwZVxuXHQvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG5cdGlmICggZmluYWxEYXRhVHlwZSApIHtcblx0XHRpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkge1xuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdO1xuXHR9XG59XG5cbi8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7XG5cdHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LFxuXHRcdGNvbnZlcnRlcnMgPSB7fSxcblxuXHRcdC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb25cblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpO1xuXG5cdC8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2FzZWQga2V5c1xuXHRpZiAoIGRhdGFUeXBlc1sgMSBdICkge1xuXHRcdGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkge1xuXHRcdFx0Y29udmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNvbnYgXTtcblx0XHR9XG5cdH1cblxuXHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0Ly8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGVcblx0d2hpbGUgKCBjdXJyZW50ICkge1xuXG5cdFx0aWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7XG5cdFx0XHRqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZFxuXHRcdGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHtcblx0XHRcdHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApO1xuXHRcdH1cblxuXHRcdHByZXYgPSBjdXJyZW50O1xuXHRcdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHRcdGlmICggY3VycmVudCApIHtcblxuXHRcdFx0Ly8gVGhlcmUncyBvbmx5IHdvcmsgdG8gZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0b1xuXHRcdFx0aWYgKCBjdXJyZW50ID09PSBcIipcIiApIHtcblxuXHRcdFx0XHRjdXJyZW50ID0gcHJldjtcblxuXHRcdFx0Ly8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudFxuXHRcdFx0fSBlbHNlIGlmICggcHJldiAhPT0gXCIqXCIgJiYgcHJldiAhPT0gY3VycmVudCApIHtcblxuXHRcdFx0XHQvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlclxuXHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbIFwiKiBcIiArIGN1cnJlbnQgXTtcblxuXHRcdFx0XHQvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpclxuXHRcdFx0XHRpZiAoICFjb252ICkge1xuXHRcdFx0XHRcdGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudFxuXHRcdFx0XHRcdFx0dG1wID0gY29udjIuc3BsaXQoIFwiIFwiICk7XG5cdFx0XHRcdFx0XHRpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIElmIHByZXYgY2FuIGJlIGNvbnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dFxuXHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgdG1wWyAwIF0gXSB8fFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcnNbIFwiKiBcIiArIHRtcFsgMCBdIF07XG5cdFx0XHRcdFx0XHRcdGlmICggY29udiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgY29udjIgXTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGVcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudCA9IHRtcFsgMCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpXG5cdFx0XHRcdGlmICggY29udiAhPT0gdHJ1ZSApIHtcblxuXHRcdFx0XHRcdC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW1cblx0XHRcdFx0XHRpZiAoIGNvbnYgJiYgcy50aHJvd3MgKSB7XG5cdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXRlOiBcInBhcnNlcmVycm9yXCIsXG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGNvbnYgPyBlIDogXCJObyBjb252ZXJzaW9uIGZyb20gXCIgKyBwcmV2ICsgXCIgdG8gXCIgKyBjdXJyZW50XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgc3RhdGU6IFwic3VjY2Vzc1wiLCBkYXRhOiByZXNwb25zZSB9O1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzXG5cdGFjdGl2ZTogMCxcblxuXHQvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0XG5cdGxhc3RNb2RpZmllZDoge30sXG5cdGV0YWc6IHt9LFxuXG5cdGFqYXhTZXR0aW5nczoge1xuXHRcdHVybDogbG9jYXRpb24uaHJlZixcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICksXG5cdFx0Z2xvYmFsOiB0cnVlLFxuXHRcdHByb2Nlc3NEYXRhOiB0cnVlLFxuXHRcdGFzeW5jOiB0cnVlLFxuXHRcdGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLFxuXG5cdFx0Lypcblx0XHR0aW1lb3V0OiAwLFxuXHRcdGRhdGE6IG51bGwsXG5cdFx0ZGF0YVR5cGU6IG51bGwsXG5cdFx0dXNlcm5hbWU6IG51bGwsXG5cdFx0cGFzc3dvcmQ6IG51bGwsXG5cdFx0Y2FjaGU6IG51bGwsXG5cdFx0dGhyb3dzOiBmYWxzZSxcblx0XHR0cmFkaXRpb25hbDogZmFsc2UsXG5cdFx0aGVhZGVyczoge30sXG5cdFx0Ki9cblxuXHRcdGFjY2VwdHM6IHtcblx0XHRcdFwiKlwiOiBhbGxUeXBlcyxcblx0XHRcdHRleHQ6IFwidGV4dC9wbGFpblwiLFxuXHRcdFx0aHRtbDogXCJ0ZXh0L2h0bWxcIixcblx0XHRcdHhtbDogXCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsXG5cdFx0XHRqc29uOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwiXG5cdFx0fSxcblxuXHRcdGNvbnRlbnRzOiB7XG5cdFx0XHR4bWw6IC9cXGJ4bWxcXGIvLFxuXHRcdFx0aHRtbDogL1xcYmh0bWwvLFxuXHRcdFx0anNvbjogL1xcYmpzb25cXGIvXG5cdFx0fSxcblxuXHRcdHJlc3BvbnNlRmllbGRzOiB7XG5cdFx0XHR4bWw6IFwicmVzcG9uc2VYTUxcIixcblx0XHRcdHRleHQ6IFwicmVzcG9uc2VUZXh0XCIsXG5cdFx0XHRqc29uOiBcInJlc3BvbnNlSlNPTlwiXG5cdFx0fSxcblxuXHRcdC8vIERhdGEgY29udmVydGVyc1xuXHRcdC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCBcIipcIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2Vcblx0XHRjb252ZXJ0ZXJzOiB7XG5cblx0XHRcdC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dFxuXHRcdFx0XCIqIHRleHRcIjogU3RyaW5nLFxuXG5cdFx0XHQvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbilcblx0XHRcdFwidGV4dCBodG1sXCI6IHRydWUsXG5cblx0XHRcdC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb25cblx0XHRcdFwidGV4dCBqc29uXCI6IEpTT04ucGFyc2UsXG5cblx0XHRcdC8vIFBhcnNlIHRleHQgYXMgeG1sXG5cdFx0XHRcInRleHQgeG1sXCI6IGpRdWVyeS5wYXJzZVhNTFxuXHRcdH0sXG5cblx0XHQvLyBGb3Igb3B0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBkZWVwIGV4dGVuZGVkOlxuXHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWZcblx0XHQvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZVxuXHRcdC8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0ZW5kKVxuXHRcdGZsYXRPcHRpb25zOiB7XG5cdFx0XHR1cmw6IHRydWUsXG5cdFx0XHRjb250ZXh0OiB0cnVlXG5cdFx0fVxuXHR9LFxuXG5cdC8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0XG5cdC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy5cblx0Ly8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy5cblx0YWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHtcblx0XHRyZXR1cm4gc2V0dGluZ3MgP1xuXG5cdFx0XHQvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdFxuXHRcdFx0YWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOlxuXG5cdFx0XHQvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzXG5cdFx0XHRhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTtcblx0fSxcblxuXHRhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSxcblx0YWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksXG5cblx0Ly8gTWFpbiBtZXRob2Rcblx0YWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHtcblxuXHRcdC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlXG5cdFx0aWYgKCB0eXBlb2YgdXJsID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0b3B0aW9ucyA9IHVybDtcblx0XHRcdHVybCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdFxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdFx0dmFyIHRyYW5zcG9ydCxcblxuXHRcdFx0Ly8gVVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbVxuXHRcdFx0Y2FjaGVVUkwsXG5cblx0XHRcdC8vIFJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyxcblx0XHRcdHJlc3BvbnNlSGVhZGVycyxcblxuXHRcdFx0Ly8gdGltZW91dCBoYW5kbGVcblx0XHRcdHRpbWVvdXRUaW1lcixcblxuXHRcdFx0Ly8gVXJsIGNsZWFudXAgdmFyXG5cdFx0XHR1cmxBbmNob3IsXG5cblx0XHRcdC8vIFJlcXVlc3Qgc3RhdGUgKGJlY29tZXMgZmFsc2UgdXBvbiBzZW5kIGFuZCB0cnVlIHVwb24gY29tcGxldGlvbilcblx0XHRcdGNvbXBsZXRlZCxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBkaXNwYXRjaGVkXG5cdFx0XHRmaXJlR2xvYmFscyxcblxuXHRcdFx0Ly8gTG9vcCB2YXJpYWJsZVxuXHRcdFx0aSxcblxuXHRcdFx0Ly8gdW5jYWNoZWQgcGFydCBvZiB0aGUgdXJsXG5cdFx0XHR1bmNhY2hlZCxcblxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxuXHRcdFx0cyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksXG5cblx0XHRcdC8vIENhbGxiYWNrcyBjb250ZXh0XG5cdFx0XHRjYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcyxcblxuXHRcdFx0Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvblxuXHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmXG5cdFx0XHRcdCggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LFxuXG5cdFx0XHQvLyBEZWZlcnJlZHNcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LFxuXG5cdFx0XHQvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKVxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcblx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSxcblxuXHRcdFx0Ly8gRGVmYXVsdCBhYm9ydCBtZXNzYWdlXG5cdFx0XHRzdHJBYm9ydCA9IFwiY2FuY2VsZWRcIixcblxuXHRcdFx0Ly8gRmFrZSB4aHJcblx0XHRcdGpxWEhSID0ge1xuXHRcdFx0XHRyZWFkeVN0YXRlOiAwLFxuXG5cdFx0XHRcdC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWRcblx0XHRcdFx0Z2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnMgPSB7fTtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bWF0Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xvd2VyQ2FzZSgpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFJhdyBzdHJpbmdcblx0XHRcdFx0Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29tcGxldGVkID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYWNoZXMgdGhlIGhlYWRlclxuXHRcdFx0XHRzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSA9XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IG5hbWU7XG5cdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyXG5cdFx0XHRcdG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRzLm1pbWVUeXBlID0gdHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdFx0c3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHtcblx0XHRcdFx0XHR2YXIgY29kZTtcblx0XHRcdFx0XHRpZiAoIG1hcCApIHtcblx0XHRcdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIGNhbGxiYWNrc1xuXHRcdFx0XHRcdFx0XHRqcVhIUi5hbHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXNcblx0XHRcdFx0XHRcdFx0Zm9yICggY29kZSBpbiBtYXAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdHVzQ29kZVsgY29kZSBdID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0sIG1hcFsgY29kZSBdIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FuY2VsIHRoZSByZXF1ZXN0XG5cdFx0XHRcdGFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHR2YXIgZmluYWxUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJBYm9ydDtcblx0XHRcdFx0XHRpZiAoIHRyYW5zcG9ydCApIHtcblx0XHRcdFx0XHRcdHRyYW5zcG9ydC5hYm9ydCggZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRvbmUoIDAsIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0Ly8gQXR0YWNoIGRlZmVycmVkc1xuXHRcdGRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7XG5cblx0XHQvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkIChwcmVmaWx0ZXJzIG1pZ2h0IGV4cGVjdCBpdClcblx0XHQvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKCMxMDA5MzogY29uc2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKVxuXHRcdC8vIFdlIGFsc28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZVxuXHRcdHMudXJsID0gKCAoIHVybCB8fCBzLnVybCB8fCBsb2NhdGlvbi5ocmVmICkgKyBcIlwiIClcblx0XHRcdC5yZXBsYWNlKCBycHJvdG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICk7XG5cblx0XHQvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0gKCBzLmRhdGFUeXBlIHx8IFwiKlwiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXG5cdFx0Ly8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHRoZSBvcmlnaW4gZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBvcmlnaW4uXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XG5cdFx0XHR1cmxBbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0XHQvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFjY2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLFxuXHRcdFx0Ly8gZS5nLiBodHRwOi8vZXhhbXBsZS5jb206ODB4L1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSBzLnVybDtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSBvbmx5XG5cdFx0XHRcdC8vIEFuY2hvcidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0aXZlXG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gdXJsQW5jaG9yLmhyZWY7XG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSBvcmlnaW5BbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyBvcmlnaW5BbmNob3IuaG9zdCAhPT1cblx0XHRcdFx0XHR1cmxBbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyB1cmxBbmNob3IuaG9zdDtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhlIFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9tYWluLFxuXHRcdFx0XHQvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZhbGlkXG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZ1xuXHRcdGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcHJlZmlsdGVyc1xuXHRcdGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmVcblx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdHJldHVybiBqcVhIUjtcblx0XHR9XG5cblx0XHQvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0b1xuXHRcdC8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICgjMTUxMTgpXG5cdFx0ZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7XG5cblx0XHQvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzXG5cdFx0aWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RhcnRcIiApO1xuXHRcdH1cblxuXHRcdC8vIFVwcGVyY2FzZSB0aGUgdHlwZVxuXHRcdHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpO1xuXG5cdFx0Ly8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnRcblx0XHRzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUgKTtcblxuXHRcdC8vIFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZVxuXHRcdC8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvblxuXHRcdC8vIFJlbW92ZSBoYXNoIHRvIHNpbXBsaWZ5IHVybCBtYW5pcHVsYXRpb25cblx0XHRjYWNoZVVSTCA9IHMudXJsLnJlcGxhY2UoIHJoYXNoLCBcIlwiICk7XG5cblx0XHQvLyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVudFxuXHRcdGlmICggIXMuaGFzQ29udGVudCApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIGhhc2ggc28gd2UgY2FuIHB1dCBpdCBiYWNrXG5cdFx0XHR1bmNhY2hlZCA9IHMudXJsLnNsaWNlKCBjYWNoZVVSTC5sZW5ndGggKTtcblxuXHRcdFx0Ly8gSWYgZGF0YSBpcyBhdmFpbGFibGUgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQsIGFwcGVuZCBkYXRhIHRvIHVybFxuXHRcdFx0aWYgKCBzLmRhdGEgJiYgKCBzLnByb2Nlc3NEYXRhIHx8IHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgKSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuZGF0YTtcblxuXHRcdFx0XHQvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5XG5cdFx0XHRcdGRlbGV0ZSBzLmRhdGE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvciB1cGRhdGUgYW50aS1jYWNoZSBwYXJhbSBpZiBuZWVkZWRcblx0XHRcdGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdGNhY2hlVVJMID0gY2FjaGVVUkwucmVwbGFjZSggcmFudGlDYWNoZSwgXCIkMVwiICk7XG5cdFx0XHRcdHVuY2FjaGVkID0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIFwiXz1cIiArICggbm9uY2UrKyApICsgdW5jYWNoZWQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFB1dCBoYXNoIGFuZCBhbnRpLWNhY2hlIG9uIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCAoZ2gtMTczMilcblx0XHRcdHMudXJsID0gY2FjaGVVUkwgKyB1bmNhY2hlZDtcblxuXHRcdC8vIENoYW5nZSAnJTIwJyB0byAnKycgaWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChnaC0yNjU4KVxuXHRcdH0gZWxzZSBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmXG5cdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApLmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCApIHtcblx0XHRcdHMuZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdGlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Nb2RpZmllZC1TaW5jZVwiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU5vbmUtTWF0Y2hcIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnRcblx0XHRpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIsIHMuY29udGVudFR5cGUgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlXG5cdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlcihcblx0XHRcdFwiQWNjZXB0XCIsXG5cdFx0XHRzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gK1xuXHRcdFx0XHRcdCggcy5kYXRhVHlwZXNbIDAgXSAhPT0gXCIqXCIgPyBcIiwgXCIgKyBhbGxUeXBlcyArIFwiOyBxPTAuMDFcIiA6IFwiXCIgKSA6XG5cdFx0XHRcdHMuYWNjZXB0c1sgXCIqXCIgXVxuXHRcdCk7XG5cblx0XHQvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb25cblx0XHRmb3IgKCBpIGluIHMuaGVhZGVycyApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydFxuXHRcdGlmICggcy5iZWZvcmVTZW5kICYmXG5cdFx0XHQoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IGNvbXBsZXRlZCApICkge1xuXG5cdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cblx0XHRcdHJldHVybiBqcVhIUi5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvblxuXHRcdHN0ckFib3J0ID0gXCJhYm9ydFwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzXG5cdFx0Y29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29tcGxldGUgKTtcblx0XHRqcVhIUi5kb25lKCBzLnN1Y2Nlc3MgKTtcblx0XHRqcVhIUi5mYWlsKCBzLmVycm9yICk7XG5cblx0XHQvLyBHZXQgdHJhbnNwb3J0XG5cdFx0dHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnRcblx0XHRpZiAoICF0cmFuc3BvcnQgKSB7XG5cdFx0XHRkb25lKCAtMSwgXCJObyBUcmFuc3BvcnRcIiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gMTtcblxuXHRcdFx0Ly8gU2VuZCBnbG9iYWwgZXZlbnRcblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhTZW5kXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZVxuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybiBqcVhIUjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGltZW91dFxuXHRcdFx0aWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7XG5cdFx0XHRcdHRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRqcVhIUi5hYm9ydCggXCJ0aW1lb3V0XCIgKTtcblx0XHRcdFx0fSwgcy50aW1lb3V0ICk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbXBsZXRlZCA9IGZhbHNlO1xuXHRcdFx0XHR0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIFJldGhyb3cgcG9zdC1jb21wbGV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMgcmVzdWx0c1xuXHRcdFx0XHRkb25lKCAtMSwgZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xuXHRcdFx0dmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCxcblx0XHRcdFx0c3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7XG5cblx0XHRcdC8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnNcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbXBsZXRlZCA9IHRydWU7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldClcblx0XHRcdHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7XG5cblx0XHRcdC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblxuXHRcdFx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkxhc3QtTW9kaWZpZWRcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiZXRhZ1wiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgbm8gY29udGVudFxuXHRcdFx0XHRpZiAoIHN0YXR1cyA9PT0gMjA0IHx8IHMudHlwZSA9PT0gXCJIRUFEXCIgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm9jb250ZW50XCI7XG5cblx0XHRcdFx0Ly8gaWYgbm90IG1vZGlmaWVkXG5cdFx0XHRcdH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vdG1vZGlmaWVkXCI7XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlO1xuXHRcdFx0XHRcdHN1Y2Nlc3MgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHRcdGVycm9yID0gcmVzcG9uc2UuZXJyb3I7XG5cdFx0XHRcdFx0aXNTdWNjZXNzID0gIWVycm9yO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9ydHNcblx0XHRcdFx0ZXJyb3IgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJlcnJvclwiO1xuXHRcdFx0XHRcdGlmICggc3RhdHVzIDwgMCApIHtcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0XG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0XHRqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArIFwiXCI7XG5cblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3Jcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0anFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApO1xuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/IFwiYWpheFN1Y2Nlc3NcIiA6IFwiYWpheEVycm9yXCIsXG5cdFx0XHRcdFx0WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29tcGxldGVcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhDb21wbGV0ZVwiLCBbIGpxWEhSLCBzIF0gKTtcblxuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RvcFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4ganFYSFI7XG5cdH0sXG5cblx0Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssIFwianNvblwiICk7XG5cdH0sXG5cblx0Z2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCBcInNjcmlwdFwiICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJnZXRcIiwgXCJwb3N0XCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXG5cdFx0Ly8gU2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWRcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybClcblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdHVybDogdXJsLFxuXHRcdFx0dHlwZTogbWV0aG9kLFxuXHRcdFx0ZGF0YVR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0c3VjY2VzczogY2FsbGJhY2tcblx0XHR9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkgKTtcblx0fTtcbn0gKTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsICkge1xuXHRyZXR1cm4galF1ZXJ5LmFqYXgoIHtcblx0XHR1cmw6IHVybCxcblxuXHRcdC8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAoIzExMjY0KVxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0Y2FjaGU6IHRydWUsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cdFx0XCJ0aHJvd3NcIjogdHJ1ZVxuXHR9ICk7XG59O1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0d3JhcEFsbDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIHdyYXA7XG5cblx0XHRpZiAoIHRoaXNbIDAgXSApIHtcblx0XHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0XHRodG1sID0gaHRtbC5jYWxsKCB0aGlzWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmRcblx0XHRcdHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApO1xuXG5cdFx0XHRpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHdyYXAubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGVsZW0gPSB0aGlzO1xuXG5cdFx0XHRcdHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHtcblx0XHRcdFx0XHRlbGVtID0gZWxlbS5maXJzdEVsZW1lbnRDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBlbGVtO1xuXHRcdFx0fSApLmFwcGVuZCggdGhpcyApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcElubmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0Y29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7XG5cblx0XHRcdGlmICggY29udGVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRjb250ZW50cy53cmFwQWxsKCBodG1sICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNlbGYuYXBwZW5kKCBodG1sICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHdyYXA6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciBodG1sSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIGh0bWwgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbElzRnVuY3Rpb24gPyBodG1sLmNhbGwoIHRoaXMsIGkgKSA6IGh0bWwgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0dW53cmFwOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dGhpcy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCBcImJvZHlcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApO1xuXHRcdH0gKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHByLnBzZXVkb3MuaGlkZGVuID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7XG59O1xualF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiAhISggZWxlbS5vZmZzZXRXaWR0aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICk7XG59O1xuXG5cblxuXG5qUXVlcnkuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG5cdH0gY2F0Y2ggKCBlICkge31cbn07XG5cbnZhciB4aHJTdWNjZXNzU3RhdHVzID0ge1xuXG5cdFx0Ly8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDBcblx0XHQwOiAyMDAsXG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdC8vICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNFxuXHRcdDEyMjM6IDIwNFxuXHR9LFxuXHR4aHJTdXBwb3J0ZWQgPSBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpO1xuXG5zdXBwb3J0LmNvcnMgPSAhIXhoclN1cHBvcnRlZCAmJiAoIFwid2l0aENyZWRlbnRpYWxzXCIgaW4geGhyU3VwcG9ydGVkICk7XG5zdXBwb3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXhoclN1cHBvcnRlZDtcblxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHR2YXIgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2s7XG5cblx0Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdFxuXHRpZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0dmFyIGksXG5cdFx0XHRcdFx0eGhyID0gb3B0aW9ucy54aHIoKTtcblxuXHRcdFx0XHR4aHIub3Blbihcblx0XHRcdFx0XHRvcHRpb25zLnR5cGUsXG5cdFx0XHRcdFx0b3B0aW9ucy51cmwsXG5cdFx0XHRcdFx0b3B0aW9ucy5hc3luYyxcblx0XHRcdFx0XHRvcHRpb25zLnVzZXJuYW1lLFxuXHRcdFx0XHRcdG9wdGlvbnMucGFzc3dvcmRcblx0XHRcdFx0KTtcblxuXHRcdFx0XHQvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRcdHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHtcblx0XHRcdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlwZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXJcblx0XHRcdFx0Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZVxuXHRcdFx0XHQvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLlxuXHRcdFx0XHQvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cClcblx0XHRcdFx0Ly8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuXG5cdFx0XHRcdGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gKSB7XG5cdFx0XHRcdFx0aGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSA9IFwiWE1MSHR0cFJlcXVlc3RcIjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNldCBoZWFkZXJzXG5cdFx0XHRcdGZvciAoIGkgaW4gaGVhZGVycyApIHtcblx0XHRcdFx0XHR4aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVhZGVyc1sgaSBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrID0gZXJyb3JDYWxsYmFjayA9IHhoci5vbmxvYWQgPVxuXHRcdFx0XHRcdFx0XHRcdHhoci5vbmVycm9yID0geGhyLm9uYWJvcnQgPSB4aHIub250aW1lb3V0ID1cblx0XHRcdFx0XHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJhYm9ydFwiICkge1xuXHRcdFx0XHRcdFx0XHRcdHhoci5hYm9ydCgpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSBcImVycm9yXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIE9uIGEgbWFudWFsIG5hdGl2ZSBhYm9ydCwgSUU5IHRocm93c1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgaXMgbm90IHJlYWR5U3RhdGVcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHR5cGVvZiB4aHIuc3RhdHVzICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIDAsIFwiZXJyb3JcIiApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBGaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwN1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0LFxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSUU5IGhhcyBubyBYSFIyIGJ1dCB0aHJvd3Mgb24gYmluYXJ5ICh0cmFjLTExNDI2KVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gRm9yIFhIUjIgbm9uLXRleHQsIGxldCB0aGUgY2FsbGVyIGhhbmRsZSBpdCAoZ2gtMjQ5OClcblx0XHRcdFx0XHRcdFx0XHRcdCggeGhyLnJlc3BvbnNlVHlwZSB8fCBcInRleHRcIiApICE9PSBcInRleHRcIiAgfHxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBiaW5hcnk6IHhoci5yZXNwb25zZSB9IDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyB0ZXh0OiB4aHIucmVzcG9uc2VUZXh0IH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQvLyBMaXN0ZW4gdG8gZXZlbnRzXG5cdFx0XHRcdHhoci5vbmxvYWQgPSBjYWxsYmFjaygpO1xuXHRcdFx0XHRlcnJvckNhbGxiYWNrID0geGhyLm9uZXJyb3IgPSB4aHIub250aW1lb3V0ID0gY2FsbGJhY2soIFwiZXJyb3JcIiApO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdFx0XHQvLyBVc2Ugb25yZWFkeXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ugb25hYm9ydFxuXHRcdFx0XHQvLyB0byBoYW5kbGUgdW5jYXVnaHQgYWJvcnRzXG5cdFx0XHRcdGlmICggeGhyLm9uYWJvcnQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR4aHIub25hYm9ydCA9IGVycm9yQ2FsbGJhY2s7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0XHQvLyBDaGVjayByZWFkeVN0YXRlIGJlZm9yZSB0aW1lb3V0IGFzIGl0IGNoYW5nZXNcblx0XHRcdFx0XHRcdGlmICggeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQWxsb3cgb25lcnJvciB0byBiZSBjYWxsZWQgZmlyc3QsXG5cdFx0XHRcdFx0XHRcdC8vIGJ1dCB0aGF0IHdpbGwgbm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydFxuXHRcdFx0XHRcdFx0XHQvLyBBbHNvLCBzYXZlIGVycm9yQ2FsbGJhY2sgdG8gYSB2YXJpYWJsZVxuXHRcdFx0XHRcdFx0XHQvLyBhcyB4aHIub25lcnJvciBjYW5ub3QgYmUgYWNjZXNzZWRcblx0XHRcdFx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvckNhbGxiYWNrKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBjYWxsYmFjayggXCJhYm9ydFwiICk7XG5cblx0XHRcdFx0dHJ5IHtcblxuXHRcdFx0XHRcdC8vIERvIHNlbmQgdGhlIHJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbilcblx0XHRcdFx0XHR4aHIuc2VuZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7XG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0Ly8gIzE0NjgzOiBPbmx5IHJldGhyb3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXRcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBQcmV2ZW50IGF1dG8tZXhlY3V0aW9uIG9mIHNjcmlwdHMgd2hlbiBubyBleHBsaWNpdCBkYXRhVHlwZSB3YXMgcHJvdmlkZWQgKFNlZSBnaC0yNDMyKVxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cy5jb250ZW50cy5zY3JpcHQgPSBmYWxzZTtcblx0fVxufSApO1xuXG4vLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZVxualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRhY2NlcHRzOiB7XG5cdFx0c2NyaXB0OiBcInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgXCIgK1xuXHRcdFx0XCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIlxuXHR9LFxuXHRjb250ZW50czoge1xuXHRcdHNjcmlwdDogL1xcYig/OmphdmF8ZWNtYSlzY3JpcHRcXGIvXG5cdH0sXG5cdGNvbnZlcnRlcnM6IHtcblx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTtcblx0XHRcdHJldHVybiB0ZXh0O1xuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIYW5kbGUgY2FjaGUncyBzcGVjaWFsIGNhc2UgYW5kIGNyb3NzRG9tYWluXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdHMuY2FjaGUgPSBmYWxzZTtcblx0fVxuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cy50eXBlID0gXCJHRVRcIjtcblx0fVxufSApO1xuXG4vLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnRcbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblxuXHQvLyBUaGlzIHRyYW5zcG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIHJlcXVlc3RzXG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHR2YXIgc2NyaXB0LCBjYWxsYmFjaztcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIF8sIGNvbXBsZXRlICkge1xuXHRcdFx0XHRzY3JpcHQgPSBqUXVlcnkoIFwiPHNjcmlwdD5cIiApLnByb3AoIHtcblx0XHRcdFx0XHRjaGFyc2V0OiBzLnNjcmlwdENoYXJzZXQsXG5cdFx0XHRcdFx0c3JjOiBzLnVybFxuXHRcdFx0XHR9ICkub24oXG5cdFx0XHRcdFx0XCJsb2FkIGVycm9yXCIsXG5cdFx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkge1xuXHRcdFx0XHRcdFx0c2NyaXB0LnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBudWxsO1xuXHRcdFx0XHRcdFx0aWYgKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCBldnQudHlwZSA9PT0gXCJlcnJvclwiID8gNDA0IDogMjAwLCBldnQudHlwZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblxuXHRcdFx0XHQvLyBVc2UgbmF0aXZlIERPTSBtYW5pcHVsYXRpb24gdG8gYXZvaWQgb3VyIGRvbU1hbmlwIEFKQVggdHJpY2tlcnlcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0WyAwIF0gKTtcblx0XHRcdH0sXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxudmFyIG9sZENhbGxiYWNrcyA9IFtdLFxuXHRyanNvbnAgPSAvKD0pXFw/KD89JnwkKXxcXD9cXD8vO1xuXG4vLyBEZWZhdWx0IGpzb25wIHNldHRpbmdzXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGpzb25wOiBcImNhbGxiYWNrXCIsXG5cdGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjYWxsYmFjayA9IG9sZENhbGxiYWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5leHBhbmRvICsgXCJfXCIgKyAoIG5vbmNlKysgKSApO1xuXHRcdHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlO1xuXHRcdHJldHVybiBjYWxsYmFjaztcblx0fVxufSApO1xuXG4vLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHNcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcImpzb24ganNvbnBcIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkge1xuXG5cdHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5lcixcblx0XHRqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgP1xuXHRcdFx0XCJ1cmxcIiA6XG5cdFx0XHR0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCggcy5jb250ZW50VHlwZSB8fCBcIlwiIClcblx0XHRcdFx0XHQuaW5kZXhPZiggXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApID09PSAwICYmXG5cdFx0XHRcdHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiBcImRhdGFcIlxuXHRcdCk7XG5cblx0Ly8gSGFuZGxlIGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzIFwianNvbnBcIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldFxuXHRpZiAoIGpzb25Qcm9wIHx8IHMuZGF0YVR5cGVzWyAwIF0gPT09IFwianNvbnBcIiApIHtcblxuXHRcdC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXRcblx0XHRjYWxsYmFja05hbWUgPSBzLmpzb25wQ2FsbGJhY2sgPSBpc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2soKSA6XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHQvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhXG5cdFx0aWYgKCBqc29uUHJvcCApIHtcblx0XHRcdHNbIGpzb25Qcm9wIF0gPSBzWyBqc29uUHJvcCBdLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XG5cdFx0fSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7XG5cdFx0XHRzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgcy5qc29ucCArIFwiPVwiICsgY2FsbGJhY2tOYW1lO1xuXHRcdH1cblxuXHRcdC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb25cblx0XHRzLmNvbnZlcnRlcnNbIFwic2NyaXB0IGpzb25cIiBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICFyZXNwb25zZUNvbnRhaW5lciApIHtcblx0XHRcdFx0alF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyBcIiB3YXMgbm90IGNhbGxlZFwiICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VDb250YWluZXJbIDAgXTtcblx0XHR9O1xuXG5cdFx0Ly8gRm9yY2UganNvbiBkYXRhVHlwZVxuXHRcdHMuZGF0YVR5cGVzWyAwIF0gPSBcImpzb25cIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tcblx0XHRvdmVyd3JpdHRlbiA9IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07XG5cdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7XG5cdFx0fTtcblxuXHRcdC8vIENsZWFuLXVwIGZ1bmN0aW9uIChmaXJlcyBhZnRlciBjb252ZXJ0ZXJzKVxuXHRcdGpxWEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBpdFxuXHRcdFx0aWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRqUXVlcnkoIHdpbmRvdyApLnJlbW92ZVByb3AoIGNhbGxiYWNrTmFtZSApO1xuXG5cdFx0XHQvLyBPdGhlcndpc2UgcmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxuXHRcdFx0aWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHtcblxuXHRcdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmRcblx0XHRcdFx0cy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrO1xuXG5cdFx0XHRcdC8vIFNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2Vcblx0XHRcdFx0b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2Vcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgaXNGdW5jdGlvbiggb3ZlcndyaXR0ZW4gKSApIHtcblx0XHRcdFx0b3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDtcblx0XHR9ICk7XG5cblx0XHQvLyBEZWxlZ2F0ZSB0byBzY3JpcHRcblx0XHRyZXR1cm4gXCJzY3JpcHRcIjtcblx0fVxufSApO1xuXG5cblxuXG4vLyBTdXBwb3J0OiBTYWZhcmkgOCBvbmx5XG4vLyBJbiBTYWZhcmkgOCBkb2N1bWVudHMgY3JlYXRlZCB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50XG4vLyBjb2xsYXBzZSBzaWJsaW5nIGZvcm1zOiB0aGUgc2Vjb25kIG9uZSBiZWNvbWVzIGEgY2hpbGQgb2YgdGhlIGZpcnN0IG9uZS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1cml0eSBtZWFzdXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC5cbi8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzdcbnN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ID0gKCBmdW5jdGlvbigpIHtcblx0dmFyIGJvZHkgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKS5ib2R5O1xuXHRib2R5LmlubmVySFRNTCA9IFwiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT5cIjtcblx0cmV0dXJuIGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggPT09IDI7XG59ICkoKTtcblxuXG4vLyBBcmd1bWVudCBcImRhdGFcIiBzaG91bGQgYmUgc3RyaW5nIG9mIGh0bWxcbi8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCxcbi8vIGRlZmF1bHRzIHRvIGRvY3VtZW50XG4vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nXG5qUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkge1xuXHRpZiAoIHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cblx0dmFyIGJhc2UsIHBhcnNlZCwgc2NyaXB0cztcblxuXHRpZiAoICFjb250ZXh0ICkge1xuXG5cdFx0Ly8gU3RvcCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGltbWVkaWF0ZWx5XG5cdFx0Ly8gYnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb25cblx0XHRpZiAoIHN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ICkge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApO1xuXG5cdFx0XHQvLyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhlIGNyZWF0ZWQgZG9jdW1lbnRcblx0XHRcdC8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMgd2l0aCBVUkxzXG5cdFx0XHQvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJMIChnaC0yOTY1KVxuXHRcdFx0YmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJiYXNlXCIgKTtcblx0XHRcdGJhc2UuaHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7XG5cdFx0XHRjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50O1xuXHRcdH1cblx0fVxuXG5cdHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApO1xuXHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbIDEgXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0cyApO1xuXG5cdGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApO1xufTtcblxuXG4vKipcbiAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2VcbiAqL1xualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xuXHR2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLFxuXHRcdHNlbGYgPSB0aGlzLFxuXHRcdG9mZiA9IHVybC5pbmRleE9mKCBcIiBcIiApO1xuXG5cdGlmICggb2ZmID4gLTEgKSB7XG5cdFx0c2VsZWN0b3IgPSBzdHJpcEFuZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7XG5cdFx0dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTtcblx0fVxuXG5cdC8vIElmIGl0J3MgYSBmdW5jdGlvblxuXHRpZiAoIGlzRnVuY3Rpb24oIHBhcmFtcyApICkge1xuXG5cdFx0Ly8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2tcblx0XHRjYWxsYmFjayA9IHBhcmFtcztcblx0XHRwYXJhbXMgPSB1bmRlZmluZWQ7XG5cblx0Ly8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFtIHN0cmluZ1xuXHR9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gXCJvYmplY3RcIiApIHtcblx0XHR0eXBlID0gXCJQT1NUXCI7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdFxuXHRpZiAoIHNlbGYubGVuZ3RoID4gMCApIHtcblx0XHRqUXVlcnkuYWpheCgge1xuXHRcdFx0dXJsOiB1cmwsXG5cblx0XHRcdC8vIElmIFwidHlwZVwiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiBcIkdFVFwiIG1ldGhvZCB3aWxsIGJlIHVzZWQuXG5cdFx0XHQvLyBNYWtlIHZhbHVlIG9mIHRoaXMgZmllbGQgZXhwbGljaXQgc2luY2Vcblx0XHRcdC8vIHVzZXIgY2FuIG92ZXJyaWRlIGl0IHRocm91Z2ggYWpheFNldHVwIG1ldGhvZFxuXHRcdFx0dHlwZTogdHlwZSB8fCBcIkdFVFwiLFxuXHRcdFx0ZGF0YVR5cGU6IFwiaHRtbFwiLFxuXHRcdFx0ZGF0YTogcGFyYW1zXG5cdFx0fSApLmRvbmUoIGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7XG5cblx0XHRcdC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxsYmFja1xuXHRcdFx0cmVzcG9uc2UgPSBhcmd1bWVudHM7XG5cblx0XHRcdHNlbGYuaHRtbCggc2VsZWN0b3IgP1xuXG5cdFx0XHRcdC8vIElmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdlxuXHRcdFx0XHQvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnNcblx0XHRcdFx0alF1ZXJ5KCBcIjxkaXY+XCIgKS5hcHBlbmQoIGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCggc2VsZWN0b3IgKSA6XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHVzZSB0aGUgZnVsbCByZXN1bHRcblx0XHRcdFx0cmVzcG9uc2VUZXh0ICk7XG5cblx0XHQvLyBJZiB0aGUgcmVxdWVzdCBzdWNjZWVkcywgdGhpcyBmdW5jdGlvbiBnZXRzIFwiZGF0YVwiLCBcInN0YXR1c1wiLCBcImpxWEhSXCJcblx0XHQvLyBidXQgdGhleSBhcmUgaWdub3JlZCBiZWNhdXNlIHJlc3BvbnNlIHdhcyBzZXQgYWJvdmUuXG5cdFx0Ly8gSWYgaXQgZmFpbHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImpxWEhSXCIsIFwic3RhdHVzXCIsIFwiZXJyb3JcIlxuXHRcdH0gKS5hbHdheXMoIGNhbGxiYWNrICYmIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xuXHRcdFx0c2VsZi5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Y2FsbGJhY2suYXBwbHkoIHRoaXMsIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTtcblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHRyZXR1cm4gdGhpcztcbn07XG5cblxuXG5cbi8vIEF0dGFjaCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgY29tbW9uIEFKQVggZXZlbnRzXG5qUXVlcnkuZWFjaCggW1xuXHRcImFqYXhTdGFydFwiLFxuXHRcImFqYXhTdG9wXCIsXG5cdFwiYWpheENvbXBsZXRlXCIsXG5cdFwiYWpheEVycm9yXCIsXG5cdFwiYWpheFN1Y2Nlc3NcIixcblx0XCJhamF4U2VuZFwiXG5dLCBmdW5jdGlvbiggaSwgdHlwZSApIHtcblx0alF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGUsIGZuICk7XG5cdH07XG59ICk7XG5cblxuXG5cbmpRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5ncmVwKCBqUXVlcnkudGltZXJzLCBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW0gPT09IGZuLmVsZW07XG5cdH0gKS5sZW5ndGg7XG59O1xuXG5cblxuXG5qUXVlcnkub2Zmc2V0ID0ge1xuXHRzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkge1xuXHRcdHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sXG5cdFx0XHRwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApLFxuXHRcdFx0Y3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLFxuXHRcdFx0cHJvcHMgPSB7fTtcblxuXHRcdC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW1cblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cblx0XHRjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpO1xuXHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKTtcblx0XHRjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJsZWZ0XCIgKTtcblx0XHRjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJmaXhlZFwiICkgJiZcblx0XHRcdCggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoIFwiYXV0b1wiICkgPiAtMTtcblxuXHRcdC8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyXG5cdFx0Ly8gdG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkXG5cdFx0aWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHtcblx0XHRcdGN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigpO1xuXHRcdFx0Y3VyVG9wID0gY3VyUG9zaXRpb24udG9wO1xuXHRcdFx0Y3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDtcblx0XHRcdGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDtcblx0XHR9XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHtcblxuXHRcdFx0Ly8gVXNlIGpRdWVyeS5leHRlbmQgaGVyZSB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgY29vcmRpbmF0ZXMgYXJndW1lbnQgKGdoLTE4NDgpXG5cdFx0XHRvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyT2Zmc2V0ICkgKTtcblx0XHR9XG5cblx0XHRpZiAoIG9wdGlvbnMudG9wICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wO1xuXHRcdH1cblx0XHRpZiAoIG9wdGlvbnMubGVmdCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7XG5cdFx0fVxuXG5cdFx0aWYgKCBcInVzaW5nXCIgaW4gb3B0aW9ucyApIHtcblx0XHRcdG9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwgcHJvcHMgKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJFbGVtLmNzcyggcHJvcHMgKTtcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHQvLyBvZmZzZXQoKSByZWxhdGVzIGFuIGVsZW1lbnQncyBib3JkZXIgYm94IHRvIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHRcdC8vIFByZXNlcnZlIGNoYWluaW5nIGZvciBzZXR0ZXJcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0dGhpcyA6XG5cdFx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTtcblx0XHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHZhciByZWN0LCB3aW4sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3RlZCBhbmQgaGlkZGVuIChkaXNwbGF5OiBub25lKSBlbGVtZW50cyAoZ2gtMjMxMClcblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0XHQvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBvbiBhXG5cdFx0Ly8gZGlzY29ubmVjdGVkIG5vZGUgaW4gSUUgdGhyb3dzIGFuIGVycm9yXG5cdFx0aWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9O1xuXHRcdH1cblxuXHRcdC8vIEdldCBkb2N1bWVudC1yZWxhdGl2ZSBwb3NpdGlvbiBieSBhZGRpbmcgdmlld3BvcnQgc2Nyb2xsIHRvIHZpZXdwb3J0LXJlbGF0aXZlIGdCQ1Jcblx0XHRyZWN0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHR3aW4gPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlPZmZzZXQsXG5cdFx0XHRsZWZ0OiByZWN0LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXRcblx0XHR9O1xuXHR9LFxuXG5cdC8vIHBvc2l0aW9uKCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgbWFyZ2luIGJveCB0byBpdHMgb2Zmc2V0IHBhcmVudCdzIHBhZGRpbmcgYm94XG5cdC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGJlaGF2aW9yIG9mIENTUyBhYnNvbHV0ZSBwb3NpdGlvbmluZ1xuXHRwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCAhdGhpc1sgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwgZG9jLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cblx0XHQvLyBwb3NpdGlvbjpmaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gdGhlIHZpZXdwb3J0LCB3aGljaCBpdHNlbGYgYWx3YXlzIGhhcyB6ZXJvIG9mZnNldFxuXHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICkgPT09IFwiZml4ZWRcIiApIHtcblxuXHRcdFx0Ly8gQXNzdW1lIHBvc2l0aW9uOmZpeGVkIGltcGxpZXMgYXZhaWxhYmlsaXR5IG9mIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuXHRcdFx0b2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG5cdFx0XHQvLyBBY2NvdW50IGZvciB0aGUgKnJlYWwqIG9mZnNldCBwYXJlbnQsIHdoaWNoIGNhbiBiZSB0aGUgZG9jdW1lbnQgb3IgaXRzIHJvb3QgZWxlbWVudFxuXHRcdFx0Ly8gd2hlbiBhIHN0YXRpY2FsbHkgcG9zaXRpb25lZCBlbGVtZW50IGlzIGlkZW50aWZpZWRcblx0XHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudDtcblx0XHRcdG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50IHx8IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJlxuXHRcdFx0XHQoIG9mZnNldFBhcmVudCA9PT0gZG9jLmJvZHkgfHwgb2Zmc2V0UGFyZW50ID09PSBkb2MuZG9jdW1lbnRFbGVtZW50ICkgJiZcblx0XHRcdFx0alF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblxuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGlmICggb2Zmc2V0UGFyZW50ICYmIG9mZnNldFBhcmVudCAhPT0gZWxlbSAmJiBvZmZzZXRQYXJlbnQubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgYm9yZGVycyBpbnRvIGl0cyBvZmZzZXQsIHNpbmNlIHRoZXkgYXJlIG91dHNpZGUgaXRzIGNvbnRlbnQgb3JpZ2luXG5cdFx0XHRcdHBhcmVudE9mZnNldCA9IGpRdWVyeSggb2Zmc2V0UGFyZW50ICkub2Zmc2V0KCk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC50b3AgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcImJvcmRlclRvcFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdFx0cGFyZW50T2Zmc2V0LmxlZnQgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcImJvcmRlckxlZnRXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2luc1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5Ub3BcIiwgdHJ1ZSApLFxuXHRcdFx0bGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luTGVmdFwiLCB0cnVlIClcblx0XHR9O1xuXHR9LFxuXG5cdC8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRvY3VtZW50RWxlbWVudCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuXHQvLyAxKSBGb3IgdGhlIGVsZW1lbnQgaW5zaWRlIHRoZSBpZnJhbWUgd2l0aG91dCBvZmZzZXRQYXJlbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuXG5cdC8vICAgIGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50IHdpbmRvd1xuXHQvLyAyKSBGb3IgdGhlIGhpZGRlbiBvciBkZXRhY2hlZCBlbGVtZW50XG5cdC8vIDMpIEZvciBib2R5IG9yIGh0bWwgZWxlbWVudCwgaS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUgLSBpdCB3aWxsIHJldHVybiBpdHNlbGZcblx0Ly9cblx0Ly8gYnV0IHRob3NlIGV4Y2VwdGlvbnMgd2VyZSBuZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUgdXNlLWNhc2VzXG5cdC8vIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGFzIG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLlxuXHQvL1xuXHQvLyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVlZCBhbmQgY2FuIGNoYW5nZSBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZVxuXHRvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7XG5cblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50O1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG4vLyBDcmVhdGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhvZHNcbmpRdWVyeS5lYWNoKCB7IHNjcm9sbExlZnQ6IFwicGFnZVhPZmZzZXRcIiwgc2Nyb2xsVG9wOiBcInBhZ2VZT2Zmc2V0XCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHtcblx0dmFyIHRvcCA9IFwicGFnZVlPZmZzZXRcIiA9PT0gcHJvcDtcblxuXHRqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9kLCB2YWwgKSB7XG5cblx0XHRcdC8vIENvYWxlc2NlIGRvY3VtZW50cyBhbmQgd2luZG93c1xuXHRcdFx0dmFyIHdpbjtcblx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblx0XHRcdFx0d2luID0gZWxlbTtcblx0XHRcdH0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW0uZGVmYXVsdFZpZXc7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiB3aW4gPyB3aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhvZCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHdpbiApIHtcblx0XHRcdFx0d2luLnNjcm9sbFRvKFxuXHRcdFx0XHRcdCF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsXG5cdFx0XHRcdFx0dG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1bIG1ldGhvZCBdID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH07XG59ICk7XG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDlcbi8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uXG4vLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcbi8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTg5MzQ3XG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7XG5cblx0XHRcdFx0Ly8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0XG5cdFx0XHRcdHJldHVybiBybnVtbm9ucHgudGVzdCggY29tcHV0ZWQgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBdICsgXCJweFwiIDpcblx0XHRcdFx0XHRjb21wdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59ICk7XG5cblxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBIZWlnaHQ6IFwiaGVpZ2h0XCIsIFdpZHRoOiBcIndpZHRoXCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7XG5cdGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsIFwiXCI6IFwib3V0ZXJcIiArIG5hbWUgfSxcblx0XHRmdW5jdGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHtcblxuXHRcdC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aFxuXHRcdGpRdWVyeS5mblsgZnVuY05hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkge1xuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcblx0XHRcdFx0ZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyBcIm1hcmdpblwiIDogXCJib3JkZXJcIiApO1xuXG5cdFx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBkb2M7XG5cblx0XHRcdFx0aWYgKCBpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRcdFx0Ly8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWlnaHQgcmV0dXJuIHcvaCBpbmNsdWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSlcblx0XHRcdFx0XHRyZXR1cm4gZnVuY05hbWUuaW5kZXhPZiggXCJvdXRlclwiICkgPT09IDAgP1xuXHRcdFx0XHRcdFx0ZWxlbVsgXCJpbm5lclwiICsgbmFtZSBdIDpcblx0XHRcdFx0XHRcdGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyBcImNsaWVudFwiICsgbmFtZSBdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodFxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHRcdFx0XHQvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sXG5cdFx0XHRcdFx0Ly8gd2hpY2hldmVyIGlzIGdyZWF0ZXN0XG5cdFx0XHRcdFx0cmV0dXJuIE1hdGgubWF4KFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcInNjcm9sbFwiICsgbmFtZSBdLCBkb2NbIFwic2Nyb2xsXCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwib2Zmc2V0XCIgKyBuYW1lIF0sIGRvY1sgXCJvZmZzZXRcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGRvY1sgXCJjbGllbnRcIiArIG5hbWUgXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cblx0XHRcdFx0XHQvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0XG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6XG5cblx0XHRcdFx0XHQvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50XG5cdFx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTtcblx0XHRcdH0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxlICk7XG5cdFx0fTtcblx0fSApO1xufSApO1xuXG5cbmpRdWVyeS5lYWNoKCAoIFwiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgXCIgK1xuXHRcIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIFwiICtcblx0XCJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51XCIgKS5zcGxpdCggXCIgXCIgKSxcblx0ZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cblx0Ly8gSGFuZGxlIGV2ZW50IGJpbmRpbmdcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID9cblx0XHRcdHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOlxuXHRcdFx0dGhpcy50cmlnZ2VyKCBuYW1lICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0aG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkge1xuXHRcdHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApO1xuXHR9XG59ICk7XG5cblxuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHRiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlcywgbnVsbCwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7XG5cdH0sXG5cblx0ZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkge1xuXG5cdFx0Ly8gKCBuYW1lc3BhY2UgKSBvciAoIHNlbGVjdG9yLCB0eXBlcyBbLCBmbl0gKVxuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID9cblx0XHRcdHRoaXMub2ZmKCBzZWxlY3RvciwgXCIqKlwiICkgOlxuXHRcdFx0dGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55XG4vLyBhcmd1bWVudHMuXG4vLyBqUXVlcnkucHJveHkgaXMgZGVwcmVjYXRlZCB0byBwcm9tb3RlIHN0YW5kYXJkcyAoc3BlY2lmaWNhbGx5IEZ1bmN0aW9uI2JpbmQpXG4vLyBIb3dldmVyLCBpdCBpcyBub3Qgc2xhdGVkIGZvciByZW1vdmFsIGFueSB0aW1lIHNvb25cbmpRdWVyeS5wcm94eSA9IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHtcblx0dmFyIHRtcCwgYXJncywgcHJveHk7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHR0bXAgPSBmblsgY29udGV4dCBdO1xuXHRcdGNvbnRleHQgPSBmbjtcblx0XHRmbiA9IHRtcDtcblx0fVxuXG5cdC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBpZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjXG5cdC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuXG5cdGlmICggIWlzRnVuY3Rpb24oIGZuICkgKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8vIFNpbXVsYXRlZCBiaW5kXG5cdGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTtcblx0cHJveHkgPSBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTtcblx0fTtcblxuXHQvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWRcblx0cHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7XG5cblx0cmV0dXJuIHByb3h5O1xufTtcblxualF1ZXJ5LmhvbGRSZWFkeSA9IGZ1bmN0aW9uKCBob2xkICkge1xuXHRpZiAoIGhvbGQgKSB7XG5cdFx0alF1ZXJ5LnJlYWR5V2FpdCsrO1xuXHR9IGVsc2Uge1xuXHRcdGpRdWVyeS5yZWFkeSggdHJ1ZSApO1xuXHR9XG59O1xualF1ZXJ5LmlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xualF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFyc2U7XG5qUXVlcnkubm9kZU5hbWUgPSBub2RlTmFtZTtcbmpRdWVyeS5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbmpRdWVyeS5pc1dpbmRvdyA9IGlzV2luZG93O1xualF1ZXJ5LmNhbWVsQ2FzZSA9IGNhbWVsQ2FzZTtcbmpRdWVyeS50eXBlID0gdG9UeXBlO1xuXG5qUXVlcnkubm93ID0gRGF0ZS5ub3c7XG5cbmpRdWVyeS5pc051bWVyaWMgPSBmdW5jdGlvbiggb2JqICkge1xuXG5cdC8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRvXG5cdC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cylcblx0Ly8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAoZ2gtMjY2Milcblx0dmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7XG5cdHJldHVybiAoIHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZSA9PT0gXCJzdHJpbmdcIiApICYmXG5cblx0XHQvLyBwYXJzZUZsb2F0IE5hTnMgbnVtZXJpYy1jYXN0IGZhbHNlIHBvc2l0aXZlcyAoXCJcIilcblx0XHQvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzIChcIjB4Li4uXCIpXG5cdFx0Ly8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOXG5cdFx0IWlzTmFOKCBvYmogLSBwYXJzZUZsb2F0KCBvYmogKSApO1xufTtcblxuXG5cblxuLy8gUmVnaXN0ZXIgYXMgYSBuYW1lZCBBTUQgbW9kdWxlLCBzaW5jZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRoIG90aGVyXG4vLyBmaWxlcyB0aGF0IG1heSB1c2UgZGVmaW5lLCBidXQgbm90IHZpYSBhIHByb3BlciBjb25jYXRlbmF0aW9uIHNjcmlwdCB0aGF0XG4vLyB1bmRlcnN0YW5kcyBhbm9ueW1vdXMgQU1EIG1vZHVsZXMuIEEgbmFtZWQgQU1EIGlzIHNhZmVzdCBhbmQgbW9zdCByb2J1c3Rcbi8vIHdheSB0byByZWdpc3Rlci4gTG93ZXJjYXNlIGpxdWVyeSBpcyB1c2VkIGJlY2F1c2UgQU1EIG1vZHVsZSBuYW1lcyBhcmVcbi8vIGRlcml2ZWQgZnJvbSBmaWxlIG5hbWVzLCBhbmQgalF1ZXJ5IGlzIG5vcm1hbGx5IGRlbGl2ZXJlZCBpbiBhIGxvd2VyY2FzZVxuLy8gZmlsZSBuYW1lLiBEbyB0aGlzIGFmdGVyIGNyZWF0aW5nIHRoZSBnbG9iYWwgc28gdGhhdCBpZiBhbiBBTUQgbW9kdWxlIHdhbnRzXG4vLyB0byBjYWxsIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5LCBpdCB3aWxsIHdvcmsuXG5cbi8vIE5vdGUgdGhhdCBmb3IgbWF4aW11bSBwb3J0YWJpbGl0eSwgbGlicmFyaWVzIHRoYXQgYXJlIG5vdCBqUXVlcnkgc2hvdWxkXG4vLyBkZWNsYXJlIHRoZW1zZWx2ZXMgYXMgYW5vbnltb3VzIG1vZHVsZXMsIGFuZCBhdm9pZCBzZXR0aW5nIGEgZ2xvYmFsIGlmIGFuXG4vLyBBTUQgbG9hZGVyIGlzIHByZXNlbnQuIGpRdWVyeSBpcyBhIHNwZWNpYWwgY2FzZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2pyYnVya2UvcmVxdWlyZWpzL3dpa2kvVXBkYXRpbmctZXhpc3RpbmctbGlicmFyaWVzI3dpa2ktYW5vblxuXG5pZiAoIHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kICkge1xuXHRkZWZpbmUoIFwianF1ZXJ5XCIsIFtdLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5O1xuXHR9ICk7XG59XG5cblxuXG5cbnZhclxuXG5cdC8vIE1hcCBvdmVyIGpRdWVyeSBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuXHRfalF1ZXJ5ID0gd2luZG93LmpRdWVyeSxcblxuXHQvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuXHRfJCA9IHdpbmRvdy4kO1xuXG5qUXVlcnkubm9Db25mbGljdCA9IGZ1bmN0aW9uKCBkZWVwICkge1xuXHRpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7XG5cdFx0d2luZG93LiQgPSBfJDtcblx0fVxuXG5cdGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7XG5cdFx0d2luZG93LmpRdWVyeSA9IF9qUXVlcnk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5O1xufTtcblxuLy8gRXhwb3NlIGpRdWVyeSBhbmQgJCBpZGVudGlmaWVycywgZXZlbiBpbiBBTURcbi8vICgjNzEwMiNjb21tZW50OjEwLCBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9wdWxsLzU1Nylcbi8vIGFuZCBDb21tb25KUyBmb3IgYnJvd3NlciBlbXVsYXRvcnMgKCMxMzU2NilcbmlmICggIW5vR2xvYmFsICkge1xuXHR3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7XG59XG5cblxuXG5cbnJldHVybiBqUXVlcnk7XG59ICk7XG4iLCIvLyEgbW9tZW50LXRpbWV6b25lLmpzXG4vLyEgdmVyc2lvbiA6IDAuNS4xN1xuLy8hIENvcHlyaWdodCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4vLyEgbGljZW5zZSA6IE1JVFxuLy8hIGdpdGh1Yi5jb20vbW9tZW50L21vbWVudC10aW1lem9uZVxuXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0LypnbG9iYWwgZGVmaW5lKi9cblx0aWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuXHRcdGRlZmluZShbJ21vbWVudCddLCBmYWN0b3J5KTsgICAgICAgICAgICAgICAgIC8vIEFNRFxuXHR9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ21vbWVudCcpKTsgLy8gTm9kZVxuXHR9IGVsc2Uge1xuXHRcdGZhY3Rvcnkocm9vdC5tb21lbnQpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJyb3dzZXJcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAobW9tZW50KSB7XG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdC8vIERvIG5vdCBsb2FkIG1vbWVudC10aW1lem9uZSBhIHNlY29uZCB0aW1lLlxuXHQvLyBpZiAobW9tZW50LnR6ICE9PSB1bmRlZmluZWQpIHtcblx0Ly8gXHRsb2dFcnJvcignTW9tZW50IFRpbWV6b25lICcgKyBtb21lbnQudHoudmVyc2lvbiArICcgd2FzIGFscmVhZHkgbG9hZGVkICcgKyAobW9tZW50LnR6LmRhdGFWZXJzaW9uID8gJ3dpdGggZGF0YSBmcm9tICcgOiAnd2l0aG91dCBhbnkgZGF0YScpICsgbW9tZW50LnR6LmRhdGFWZXJzaW9uKTtcblx0Ly8gXHRyZXR1cm4gbW9tZW50O1xuXHQvLyB9XG5cblx0dmFyIFZFUlNJT04gPSBcIjAuNS4xN1wiLFxuXHRcdHpvbmVzID0ge30sXG5cdFx0bGlua3MgPSB7fSxcblx0XHRuYW1lcyA9IHt9LFxuXHRcdGd1ZXNzZXMgPSB7fSxcblx0XHRjYWNoZWRHdWVzcyxcblxuXHRcdG1vbWVudFZlcnNpb24gPSBtb21lbnQudmVyc2lvbi5zcGxpdCgnLicpLFxuXHRcdG1ham9yID0gK21vbWVudFZlcnNpb25bMF0sXG5cdFx0bWlub3IgPSArbW9tZW50VmVyc2lvblsxXTtcblxuXHQvLyBNb21lbnQuanMgdmVyc2lvbiBjaGVja1xuXHRpZiAobWFqb3IgPCAyIHx8IChtYWpvciA9PT0gMiAmJiBtaW5vciA8IDYpKSB7XG5cdFx0bG9nRXJyb3IoJ01vbWVudCBUaW1lem9uZSByZXF1aXJlcyBNb21lbnQuanMgPj0gMi42LjAuIFlvdSBhcmUgdXNpbmcgTW9tZW50LmpzICcgKyBtb21lbnQudmVyc2lvbiArICcuIFNlZSBtb21lbnRqcy5jb20nKTtcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRVbnBhY2tpbmdcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIGNoYXJDb2RlVG9JbnQoY2hhckNvZGUpIHtcblx0XHRpZiAoY2hhckNvZGUgPiA5Nikge1xuXHRcdFx0cmV0dXJuIGNoYXJDb2RlIC0gODc7XG5cdFx0fSBlbHNlIGlmIChjaGFyQ29kZSA+IDY0KSB7XG5cdFx0XHRyZXR1cm4gY2hhckNvZGUgLSAyOTtcblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJDb2RlIC0gNDg7XG5cdH1cblxuXHRmdW5jdGlvbiB1bnBhY2tCYXNlNjAoc3RyaW5nKSB7XG5cdFx0dmFyIGkgPSAwLFxuXHRcdFx0cGFydHMgPSBzdHJpbmcuc3BsaXQoJy4nKSxcblx0XHRcdHdob2xlID0gcGFydHNbMF0sXG5cdFx0XHRmcmFjdGlvbmFsID0gcGFydHNbMV0gfHwgJycsXG5cdFx0XHRtdWx0aXBsaWVyID0gMSxcblx0XHRcdG51bSxcblx0XHRcdG91dCA9IDAsXG5cdFx0XHRzaWduID0gMTtcblxuXHRcdC8vIGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzXG5cdFx0aWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NSkge1xuXHRcdFx0aSA9IDE7XG5cdFx0XHRzaWduID0gLTE7XG5cdFx0fVxuXG5cdFx0Ly8gaGFuZGxlIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWxcblx0XHRmb3IgKGk7IGkgPCB3aG9sZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0bnVtID0gY2hhckNvZGVUb0ludCh3aG9sZS5jaGFyQ29kZUF0KGkpKTtcblx0XHRcdG91dCA9IDYwICogb3V0ICsgbnVtO1xuXHRcdH1cblxuXHRcdC8vIGhhbmRsZSBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWxcblx0XHRmb3IgKGkgPSAwOyBpIDwgZnJhY3Rpb25hbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0bXVsdGlwbGllciA9IG11bHRpcGxpZXIgLyA2MDtcblx0XHRcdG51bSA9IGNoYXJDb2RlVG9JbnQoZnJhY3Rpb25hbC5jaGFyQ29kZUF0KGkpKTtcblx0XHRcdG91dCArPSBudW0gKiBtdWx0aXBsaWVyO1xuXHRcdH1cblxuXHRcdHJldHVybiBvdXQgKiBzaWduO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlUb0ludCAoYXJyYXkpIHtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhcnJheVtpXSA9IHVucGFja0Jhc2U2MChhcnJheVtpXSk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gaW50VG9VbnRpbCAoYXJyYXksIGxlbmd0aCkge1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblx0XHRcdGFycmF5W2ldID0gTWF0aC5yb3VuZCgoYXJyYXlbaSAtIDFdIHx8IDApICsgKGFycmF5W2ldICogNjAwMDApKTsgLy8gbWludXRlcyB0byBtaWxsaXNlY29uZHNcblx0XHR9XG5cblx0XHRhcnJheVtsZW5ndGggLSAxXSA9IEluZmluaXR5O1xuXHR9XG5cblx0ZnVuY3Rpb24gbWFwSW5kaWNlcyAoc291cmNlLCBpbmRpY2VzKSB7XG5cdFx0dmFyIG91dCA9IFtdLCBpO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdG91dFtpXSA9IHNvdXJjZVtpbmRpY2VzW2ldXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gdW5wYWNrIChzdHJpbmcpIHtcblx0XHR2YXIgZGF0YSA9IHN0cmluZy5zcGxpdCgnfCcpLFxuXHRcdFx0b2Zmc2V0cyA9IGRhdGFbMl0uc3BsaXQoJyAnKSxcblx0XHRcdGluZGljZXMgPSBkYXRhWzNdLnNwbGl0KCcnKSxcblx0XHRcdHVudGlscyAgPSBkYXRhWzRdLnNwbGl0KCcgJyk7XG5cblx0XHRhcnJheVRvSW50KG9mZnNldHMpO1xuXHRcdGFycmF5VG9JbnQoaW5kaWNlcyk7XG5cdFx0YXJyYXlUb0ludCh1bnRpbHMpO1xuXG5cdFx0aW50VG9VbnRpbCh1bnRpbHMsIGluZGljZXMubGVuZ3RoKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lICAgICAgIDogZGF0YVswXSxcblx0XHRcdGFiYnJzICAgICAgOiBtYXBJbmRpY2VzKGRhdGFbMV0uc3BsaXQoJyAnKSwgaW5kaWNlcyksXG5cdFx0XHRvZmZzZXRzICAgIDogbWFwSW5kaWNlcyhvZmZzZXRzLCBpbmRpY2VzKSxcblx0XHRcdHVudGlscyAgICAgOiB1bnRpbHMsXG5cdFx0XHRwb3B1bGF0aW9uIDogZGF0YVs1XSB8IDBcblx0XHR9O1xuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdFpvbmUgb2JqZWN0XG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBab25lIChwYWNrZWRTdHJpbmcpIHtcblx0XHRpZiAocGFja2VkU3RyaW5nKSB7XG5cdFx0XHR0aGlzLl9zZXQodW5wYWNrKHBhY2tlZFN0cmluZykpO1xuXHRcdH1cblx0fVxuXG5cdFpvbmUucHJvdG90eXBlID0ge1xuXHRcdF9zZXQgOiBmdW5jdGlvbiAodW5wYWNrZWQpIHtcblx0XHRcdHRoaXMubmFtZSAgICAgICA9IHVucGFja2VkLm5hbWU7XG5cdFx0XHR0aGlzLmFiYnJzICAgICAgPSB1bnBhY2tlZC5hYmJycztcblx0XHRcdHRoaXMudW50aWxzICAgICA9IHVucGFja2VkLnVudGlscztcblx0XHRcdHRoaXMub2Zmc2V0cyAgICA9IHVucGFja2VkLm9mZnNldHM7XG5cdFx0XHR0aGlzLnBvcHVsYXRpb24gPSB1bnBhY2tlZC5wb3B1bGF0aW9uO1xuXHRcdH0sXG5cblx0XHRfaW5kZXggOiBmdW5jdGlvbiAodGltZXN0YW1wKSB7XG5cdFx0XHR2YXIgdGFyZ2V0ID0gK3RpbWVzdGFtcCxcblx0XHRcdFx0dW50aWxzID0gdGhpcy51bnRpbHMsXG5cdFx0XHRcdGk7XG5cblx0XHRcdGZvciAoaSA9IDA7IGkgPCB1bnRpbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHRhcmdldCA8IHVudGlsc1tpXSkge1xuXHRcdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHBhcnNlIDogZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuXHRcdFx0dmFyIHRhcmdldCAgPSArdGltZXN0YW1wLFxuXHRcdFx0XHRvZmZzZXRzID0gdGhpcy5vZmZzZXRzLFxuXHRcdFx0XHR1bnRpbHMgID0gdGhpcy51bnRpbHMsXG5cdFx0XHRcdG1heCAgICAgPSB1bnRpbHMubGVuZ3RoIC0gMSxcblx0XHRcdFx0b2Zmc2V0LCBvZmZzZXROZXh0LCBvZmZzZXRQcmV2LCBpO1xuXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcblx0XHRcdFx0b2Zmc2V0ICAgICA9IG9mZnNldHNbaV07XG5cdFx0XHRcdG9mZnNldE5leHQgPSBvZmZzZXRzW2kgKyAxXTtcblx0XHRcdFx0b2Zmc2V0UHJldiA9IG9mZnNldHNbaSA/IGkgLSAxIDogaV07XG5cblx0XHRcdFx0aWYgKG9mZnNldCA8IG9mZnNldE5leHQgJiYgdHoubW92ZUFtYmlndW91c0ZvcndhcmQpIHtcblx0XHRcdFx0XHRvZmZzZXQgPSBvZmZzZXROZXh0O1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9mZnNldCA+IG9mZnNldFByZXYgJiYgdHoubW92ZUludmFsaWRGb3J3YXJkKSB7XG5cdFx0XHRcdFx0b2Zmc2V0ID0gb2Zmc2V0UHJldjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0YXJnZXQgPCB1bnRpbHNbaV0gLSAob2Zmc2V0ICogNjAwMDApKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9mZnNldHNbaV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldHNbbWF4XTtcblx0XHR9LFxuXG5cdFx0YWJiciA6IGZ1bmN0aW9uIChtb20pIHtcblx0XHRcdHJldHVybiB0aGlzLmFiYnJzW3RoaXMuX2luZGV4KG1vbSldO1xuXHRcdH0sXG5cblx0XHRvZmZzZXQgOiBmdW5jdGlvbiAobW9tKSB7XG5cdFx0XHRsb2dFcnJvcihcInpvbmUub2Zmc2V0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygem9uZS51dGNPZmZzZXRcIik7XG5cdFx0XHRyZXR1cm4gdGhpcy5vZmZzZXRzW3RoaXMuX2luZGV4KG1vbSldO1xuXHRcdH0sXG5cblx0XHR1dGNPZmZzZXQgOiBmdW5jdGlvbiAobW9tKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5vZmZzZXRzW3RoaXMuX2luZGV4KG1vbSldO1xuXHRcdH1cblx0fTtcblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0Q3VycmVudCBUaW1lem9uZVxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gT2Zmc2V0QXQoYXQpIHtcblx0XHR2YXIgdGltZVN0cmluZyA9IGF0LnRvVGltZVN0cmluZygpO1xuXHRcdHZhciBhYmJyID0gdGltZVN0cmluZy5tYXRjaCgvXFwoW2EteiBdK1xcKS9pKTtcblx0XHRpZiAoYWJiciAmJiBhYmJyWzBdKSB7XG5cdFx0XHQvLyAxNzo1NjozMSBHTVQtMDYwMCAoQ1NUKVxuXHRcdFx0Ly8gMTc6NTY6MzEgR01ULTA2MDAgKENlbnRyYWwgU3RhbmRhcmQgVGltZSlcblx0XHRcdGFiYnIgPSBhYmJyWzBdLm1hdGNoKC9bQS1aXS9nKTtcblx0XHRcdGFiYnIgPSBhYmJyID8gYWJici5qb2luKCcnKSA6IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gMTc6NTY6MzEgQ1NUXG5cdFx0XHQvLyAxNzo1NjozMSBHTVQrMDgwMCAo5Y+w5YyX5qiZ5rqW5pmC6ZaTKVxuXHRcdFx0YWJiciA9IHRpbWVTdHJpbmcubWF0Y2goL1tBLVpdezMsNX0vZyk7XG5cdFx0XHRhYmJyID0gYWJiciA/IGFiYnJbMF0gOiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKGFiYnIgPT09ICdHTVQnKSB7XG5cdFx0XHRhYmJyID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdHRoaXMuYXQgPSArYXQ7XG5cdFx0dGhpcy5hYmJyID0gYWJicjtcblx0XHR0aGlzLm9mZnNldCA9IGF0LmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cdH1cblxuXHRmdW5jdGlvbiBab25lU2NvcmUoem9uZSkge1xuXHRcdHRoaXMuem9uZSA9IHpvbmU7XG5cdFx0dGhpcy5vZmZzZXRTY29yZSA9IDA7XG5cdFx0dGhpcy5hYmJyU2NvcmUgPSAwO1xuXHR9XG5cblx0Wm9uZVNjb3JlLnByb3RvdHlwZS5zY29yZU9mZnNldEF0ID0gZnVuY3Rpb24gKG9mZnNldEF0KSB7XG5cdFx0dGhpcy5vZmZzZXRTY29yZSArPSBNYXRoLmFicyh0aGlzLnpvbmUudXRjT2Zmc2V0KG9mZnNldEF0LmF0KSAtIG9mZnNldEF0Lm9mZnNldCk7XG5cdFx0aWYgKHRoaXMuem9uZS5hYmJyKG9mZnNldEF0LmF0KS5yZXBsYWNlKC9bXkEtWl0vZywgJycpICE9PSBvZmZzZXRBdC5hYmJyKSB7XG5cdFx0XHR0aGlzLmFiYnJTY29yZSsrO1xuXHRcdH1cblx0fTtcblxuXHRmdW5jdGlvbiBmaW5kQ2hhbmdlKGxvdywgaGlnaCkge1xuXHRcdHZhciBtaWQsIGRpZmY7XG5cblx0XHR3aGlsZSAoKGRpZmYgPSAoKGhpZ2guYXQgLSBsb3cuYXQpIC8gMTJlNCB8IDApICogNmU0KSkge1xuXHRcdFx0bWlkID0gbmV3IE9mZnNldEF0KG5ldyBEYXRlKGxvdy5hdCArIGRpZmYpKTtcblx0XHRcdGlmIChtaWQub2Zmc2V0ID09PSBsb3cub2Zmc2V0KSB7XG5cdFx0XHRcdGxvdyA9IG1pZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhpZ2ggPSBtaWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxvdztcblx0fVxuXG5cdGZ1bmN0aW9uIHVzZXJPZmZzZXRzKCkge1xuXHRcdHZhciBzdGFydFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAyLFxuXHRcdFx0bGFzdCA9IG5ldyBPZmZzZXRBdChuZXcgRGF0ZShzdGFydFllYXIsIDAsIDEpKSxcblx0XHRcdG9mZnNldHMgPSBbbGFzdF0sXG5cdFx0XHRjaGFuZ2UsIG5leHQsIGk7XG5cblx0XHRmb3IgKGkgPSAxOyBpIDwgNDg7IGkrKykge1xuXHRcdFx0bmV4dCA9IG5ldyBPZmZzZXRBdChuZXcgRGF0ZShzdGFydFllYXIsIGksIDEpKTtcblx0XHRcdGlmIChuZXh0Lm9mZnNldCAhPT0gbGFzdC5vZmZzZXQpIHtcblx0XHRcdFx0Y2hhbmdlID0gZmluZENoYW5nZShsYXN0LCBuZXh0KTtcblx0XHRcdFx0b2Zmc2V0cy5wdXNoKGNoYW5nZSk7XG5cdFx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoY2hhbmdlLmF0ICsgNmU0KSkpO1xuXHRcdFx0fVxuXHRcdFx0bGFzdCA9IG5leHQ7XG5cdFx0fVxuXG5cdFx0Zm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xuXHRcdFx0b2Zmc2V0cy5wdXNoKG5ldyBPZmZzZXRBdChuZXcgRGF0ZShzdGFydFllYXIgKyBpLCAwLCAxKSkpO1xuXHRcdFx0b2Zmc2V0cy5wdXNoKG5ldyBPZmZzZXRBdChuZXcgRGF0ZShzdGFydFllYXIgKyBpLCA2LCAxKSkpO1xuXHRcdH1cblxuXHRcdHJldHVybiBvZmZzZXRzO1xuXHR9XG5cblx0ZnVuY3Rpb24gc29ydFpvbmVTY29yZXMgKGEsIGIpIHtcblx0XHRpZiAoYS5vZmZzZXRTY29yZSAhPT0gYi5vZmZzZXRTY29yZSkge1xuXHRcdFx0cmV0dXJuIGEub2Zmc2V0U2NvcmUgLSBiLm9mZnNldFNjb3JlO1xuXHRcdH1cblx0XHRpZiAoYS5hYmJyU2NvcmUgIT09IGIuYWJiclNjb3JlKSB7XG5cdFx0XHRyZXR1cm4gYS5hYmJyU2NvcmUgLSBiLmFiYnJTY29yZTtcblx0XHR9XG5cdFx0cmV0dXJuIGIuem9uZS5wb3B1bGF0aW9uIC0gYS56b25lLnBvcHVsYXRpb247XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRUb0d1ZXNzZXMgKG5hbWUsIG9mZnNldHMpIHtcblx0XHR2YXIgaSwgb2Zmc2V0O1xuXHRcdGFycmF5VG9JbnQob2Zmc2V0cyk7XG5cdFx0Zm9yIChpID0gMDsgaSA8IG9mZnNldHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdG9mZnNldCA9IG9mZnNldHNbaV07XG5cdFx0XHRndWVzc2VzW29mZnNldF0gPSBndWVzc2VzW29mZnNldF0gfHwge307XG5cdFx0XHRndWVzc2VzW29mZnNldF1bbmFtZV0gPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGd1ZXNzZXNGb3JVc2VyT2Zmc2V0cyAob2Zmc2V0cykge1xuXHRcdHZhciBvZmZzZXRzTGVuZ3RoID0gb2Zmc2V0cy5sZW5ndGgsXG5cdFx0XHRmaWx0ZXJlZEd1ZXNzZXMgPSB7fSxcblx0XHRcdG91dCA9IFtdLFxuXHRcdFx0aSwgaiwgZ3Vlc3Nlc09mZnNldDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBvZmZzZXRzTGVuZ3RoOyBpKyspIHtcblx0XHRcdGd1ZXNzZXNPZmZzZXQgPSBndWVzc2VzW29mZnNldHNbaV0ub2Zmc2V0XSB8fCB7fTtcblx0XHRcdGZvciAoaiBpbiBndWVzc2VzT2Zmc2V0KSB7XG5cdFx0XHRcdGlmIChndWVzc2VzT2Zmc2V0Lmhhc093blByb3BlcnR5KGopKSB7XG5cdFx0XHRcdFx0ZmlsdGVyZWRHdWVzc2VzW2pdID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvciAoaSBpbiBmaWx0ZXJlZEd1ZXNzZXMpIHtcblx0XHRcdGlmIChmaWx0ZXJlZEd1ZXNzZXMuaGFzT3duUHJvcGVydHkoaSkpIHtcblx0XHRcdFx0b3V0LnB1c2gobmFtZXNbaV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiByZWJ1aWxkR3Vlc3MgKCkge1xuXG5cdFx0Ly8gdXNlIEludGwgQVBJIHdoZW4gYXZhaWxhYmxlIGFuZCByZXR1cm5pbmcgdmFsaWQgdGltZSB6b25lXG5cdFx0dHJ5IHtcblx0XHRcdHZhciBpbnRsTmFtZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcblx0XHRcdGlmIChpbnRsTmFtZSAmJiBpbnRsTmFtZS5sZW5ndGggPiAzKSB7XG5cdFx0XHRcdHZhciBuYW1lID0gbmFtZXNbbm9ybWFsaXplTmFtZShpbnRsTmFtZSldO1xuXHRcdFx0XHRpZiAobmFtZSkge1xuXHRcdFx0XHRcdHJldHVybiBuYW1lO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxvZ0Vycm9yKFwiTW9tZW50IFRpbWV6b25lIGZvdW5kIFwiICsgaW50bE5hbWUgKyBcIiBmcm9tIHRoZSBJbnRsIGFwaSwgYnV0IGRpZCBub3QgaGF2ZSB0aGF0IGRhdGEgbG9hZGVkLlwiKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBJbnRsIHVuYXZhaWxhYmxlLCBmYWxsIGJhY2sgdG8gbWFudWFsIGd1ZXNzaW5nLlxuXHRcdH1cblxuXHRcdHZhciBvZmZzZXRzID0gdXNlck9mZnNldHMoKSxcblx0XHRcdG9mZnNldHNMZW5ndGggPSBvZmZzZXRzLmxlbmd0aCxcblx0XHRcdGd1ZXNzZXMgPSBndWVzc2VzRm9yVXNlck9mZnNldHMob2Zmc2V0cyksXG5cdFx0XHR6b25lU2NvcmVzID0gW10sXG5cdFx0XHR6b25lU2NvcmUsIGksIGo7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgZ3Vlc3Nlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0em9uZVNjb3JlID0gbmV3IFpvbmVTY29yZShnZXRab25lKGd1ZXNzZXNbaV0pLCBvZmZzZXRzTGVuZ3RoKTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBvZmZzZXRzTGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0em9uZVNjb3JlLnNjb3JlT2Zmc2V0QXQob2Zmc2V0c1tqXSk7XG5cdFx0XHR9XG5cdFx0XHR6b25lU2NvcmVzLnB1c2goem9uZVNjb3JlKTtcblx0XHR9XG5cblx0XHR6b25lU2NvcmVzLnNvcnQoc29ydFpvbmVTY29yZXMpO1xuXG5cdFx0cmV0dXJuIHpvbmVTY29yZXMubGVuZ3RoID4gMCA/IHpvbmVTY29yZXNbMF0uem9uZS5uYW1lIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ3Vlc3MgKGlnbm9yZUNhY2hlKSB7XG5cdFx0aWYgKCFjYWNoZWRHdWVzcyB8fCBpZ25vcmVDYWNoZSkge1xuXHRcdFx0Y2FjaGVkR3Vlc3MgPSByZWJ1aWxkR3Vlc3MoKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlZEd1ZXNzO1xuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdEdsb2JhbCBNZXRob2RzXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBub3JtYWxpemVOYW1lIChuYW1lKSB7XG5cdFx0cmV0dXJuIChuYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcLy9nLCAnXycpO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkWm9uZSAocGFja2VkKSB7XG5cdFx0dmFyIGksIG5hbWUsIHNwbGl0LCBub3JtYWxpemVkO1xuXG5cdFx0aWYgKHR5cGVvZiBwYWNrZWQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHBhY2tlZCA9IFtwYWNrZWRdO1xuXHRcdH1cblxuXHRcdGZvciAoaSA9IDA7IGkgPCBwYWNrZWQubGVuZ3RoOyBpKyspIHtcblx0XHRcdHNwbGl0ID0gcGFja2VkW2ldLnNwbGl0KCd8Jyk7XG5cdFx0XHRuYW1lID0gc3BsaXRbMF07XG5cdFx0XHRub3JtYWxpemVkID0gbm9ybWFsaXplTmFtZShuYW1lKTtcblx0XHRcdHpvbmVzW25vcm1hbGl6ZWRdID0gcGFja2VkW2ldO1xuXHRcdFx0bmFtZXNbbm9ybWFsaXplZF0gPSBuYW1lO1xuXHRcdFx0YWRkVG9HdWVzc2VzKG5vcm1hbGl6ZWQsIHNwbGl0WzJdLnNwbGl0KCcgJykpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldFpvbmUgKG5hbWUsIGNhbGxlcikge1xuXHRcdG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuXG5cdFx0dmFyIHpvbmUgPSB6b25lc1tuYW1lXTtcblx0XHR2YXIgbGluaztcblxuXHRcdGlmICh6b25lIGluc3RhbmNlb2YgWm9uZSkge1xuXHRcdFx0cmV0dXJuIHpvbmU7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiB6b25lID09PSAnc3RyaW5nJykge1xuXHRcdFx0em9uZSA9IG5ldyBab25lKHpvbmUpO1xuXHRcdFx0em9uZXNbbmFtZV0gPSB6b25lO1xuXHRcdFx0cmV0dXJuIHpvbmU7XG5cdFx0fVxuXG5cdFx0Ly8gUGFzcyBnZXRab25lIHRvIHByZXZlbnQgcmVjdXJzaW9uIG1vcmUgdGhhbiAxIGxldmVsIGRlZXBcblx0XHRpZiAobGlua3NbbmFtZV0gJiYgY2FsbGVyICE9PSBnZXRab25lICYmIChsaW5rID0gZ2V0Wm9uZShsaW5rc1tuYW1lXSwgZ2V0Wm9uZSkpKSB7XG5cdFx0XHR6b25lID0gem9uZXNbbmFtZV0gPSBuZXcgWm9uZSgpO1xuXHRcdFx0em9uZS5fc2V0KGxpbmspO1xuXHRcdFx0em9uZS5uYW1lID0gbmFtZXNbbmFtZV07XG5cdFx0XHRyZXR1cm4gem9uZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIGdldE5hbWVzICgpIHtcblx0XHR2YXIgaSwgb3V0ID0gW107XG5cblx0XHRmb3IgKGkgaW4gbmFtZXMpIHtcblx0XHRcdGlmIChuYW1lcy5oYXNPd25Qcm9wZXJ0eShpKSAmJiAoem9uZXNbaV0gfHwgem9uZXNbbGlua3NbaV1dKSAmJiBuYW1lc1tpXSkge1xuXHRcdFx0XHRvdXQucHVzaChuYW1lc1tpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dC5zb3J0KCk7XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRMaW5rIChhbGlhc2VzKSB7XG5cdFx0dmFyIGksIGFsaWFzLCBub3JtYWwwLCBub3JtYWwxO1xuXG5cdFx0aWYgKHR5cGVvZiBhbGlhc2VzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRhbGlhc2VzID0gW2FsaWFzZXNdO1xuXHRcdH1cblxuXHRcdGZvciAoaSA9IDA7IGkgPCBhbGlhc2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhbGlhcyA9IGFsaWFzZXNbaV0uc3BsaXQoJ3wnKTtcblxuXHRcdFx0bm9ybWFsMCA9IG5vcm1hbGl6ZU5hbWUoYWxpYXNbMF0pO1xuXHRcdFx0bm9ybWFsMSA9IG5vcm1hbGl6ZU5hbWUoYWxpYXNbMV0pO1xuXG5cdFx0XHRsaW5rc1tub3JtYWwwXSA9IG5vcm1hbDE7XG5cdFx0XHRuYW1lc1tub3JtYWwwXSA9IGFsaWFzWzBdO1xuXG5cdFx0XHRsaW5rc1tub3JtYWwxXSA9IG5vcm1hbDA7XG5cdFx0XHRuYW1lc1tub3JtYWwxXSA9IGFsaWFzWzFdO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGxvYWREYXRhIChkYXRhKSB7XG5cdFx0YWRkWm9uZShkYXRhLnpvbmVzKTtcblx0XHRhZGRMaW5rKGRhdGEubGlua3MpO1xuXHRcdHR6LmRhdGFWZXJzaW9uID0gZGF0YS52ZXJzaW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gem9uZUV4aXN0cyAobmFtZSkge1xuXHRcdGlmICghem9uZUV4aXN0cy5kaWRTaG93RXJyb3IpIHtcblx0XHRcdHpvbmVFeGlzdHMuZGlkU2hvd0Vycm9yID0gdHJ1ZTtcblx0XHRcdFx0bG9nRXJyb3IoXCJtb21lbnQudHouem9uZUV4aXN0cygnXCIgKyBuYW1lICsgXCInKSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mICFtb21lbnQudHouem9uZSgnXCIgKyBuYW1lICsgXCInKVwiKTtcblx0XHR9XG5cdFx0cmV0dXJuICEhZ2V0Wm9uZShuYW1lKTtcblx0fVxuXG5cdGZ1bmN0aW9uIG5lZWRzT2Zmc2V0IChtKSB7XG5cdFx0dmFyIGlzVW5peFRpbWVzdGFtcCA9IChtLl9mID09PSAnWCcgfHwgbS5fZiA9PT0gJ3gnKTtcblx0XHRyZXR1cm4gISEobS5fYSAmJiAobS5fdHptID09PSB1bmRlZmluZWQpICYmICFpc1VuaXhUaW1lc3RhbXApO1xuXHR9XG5cblx0ZnVuY3Rpb24gbG9nRXJyb3IgKG1lc3NhZ2UpIHtcblx0XHRpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRtb21lbnQudHogbmFtZXNwYWNlXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiB0eiAoaW5wdXQpIHtcblx0XHR2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCwgLTEpLFxuXHRcdFx0bmFtZSA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0sXG5cdFx0XHR6b25lID0gZ2V0Wm9uZShuYW1lKSxcblx0XHRcdG91dCAgPSBtb21lbnQudXRjLmFwcGx5KG51bGwsIGFyZ3MpO1xuXG5cdFx0aWYgKHpvbmUgJiYgIW1vbWVudC5pc01vbWVudChpbnB1dCkgJiYgbmVlZHNPZmZzZXQob3V0KSkge1xuXHRcdFx0b3V0LmFkZCh6b25lLnBhcnNlKG91dCksICdtaW51dGVzJyk7XG5cdFx0fVxuXG5cdFx0b3V0LnR6KG5hbWUpO1xuXG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdHR6LnZlcnNpb24gICAgICA9IFZFUlNJT047XG5cdHR6LmRhdGFWZXJzaW9uICA9ICcnO1xuXHR0ei5fem9uZXMgICAgICAgPSB6b25lcztcblx0dHouX2xpbmtzICAgICAgID0gbGlua3M7XG5cdHR6Ll9uYW1lcyAgICAgICA9IG5hbWVzO1xuXHR0ei5hZGQgICAgICAgICAgPSBhZGRab25lO1xuXHR0ei5saW5rICAgICAgICAgPSBhZGRMaW5rO1xuXHR0ei5sb2FkICAgICAgICAgPSBsb2FkRGF0YTtcblx0dHouem9uZSAgICAgICAgID0gZ2V0Wm9uZTtcblx0dHouem9uZUV4aXN0cyAgID0gem9uZUV4aXN0czsgLy8gZGVwcmVjYXRlZCBpbiAwLjEuMFxuXHR0ei5ndWVzcyAgICAgICAgPSBndWVzcztcblx0dHoubmFtZXMgICAgICAgID0gZ2V0TmFtZXM7XG5cdHR6LlpvbmUgICAgICAgICA9IFpvbmU7XG5cdHR6LnVucGFjayAgICAgICA9IHVucGFjaztcblx0dHoudW5wYWNrQmFzZTYwID0gdW5wYWNrQmFzZTYwO1xuXHR0ei5uZWVkc09mZnNldCAgPSBuZWVkc09mZnNldDtcblx0dHoubW92ZUludmFsaWRGb3J3YXJkICAgPSB0cnVlO1xuXHR0ei5tb3ZlQW1iaWd1b3VzRm9yd2FyZCA9IGZhbHNlO1xuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRJbnRlcmZhY2Ugd2l0aCBNb21lbnQuanNcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdHZhciBmbiA9IG1vbWVudC5mbjtcblxuXHRtb21lbnQudHogPSB0ejtcblxuXHRtb21lbnQuZGVmYXVsdFpvbmUgPSBudWxsO1xuXG5cdG1vbWVudC51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAobW9tLCBrZWVwVGltZSkge1xuXHRcdHZhciB6b25lID0gbW9tZW50LmRlZmF1bHRab25lLFxuXHRcdFx0b2Zmc2V0O1xuXG5cdFx0aWYgKG1vbS5feiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAoem9uZSAmJiBuZWVkc09mZnNldChtb20pICYmICFtb20uX2lzVVRDKSB7XG5cdFx0XHRcdG1vbS5fZCA9IG1vbWVudC51dGMobW9tLl9hKS5fZDtcblx0XHRcdFx0bW9tLnV0YygpLmFkZCh6b25lLnBhcnNlKG1vbSksICdtaW51dGVzJyk7XG5cdFx0XHR9XG5cdFx0XHRtb20uX3ogPSB6b25lO1xuXHRcdH1cblx0XHRpZiAobW9tLl96KSB7XG5cdFx0XHRvZmZzZXQgPSBtb20uX3oudXRjT2Zmc2V0KG1vbSk7XG5cdFx0XHRpZiAoTWF0aC5hYnMob2Zmc2V0KSA8IDE2KSB7XG5cdFx0XHRcdG9mZnNldCA9IG9mZnNldCAvIDYwO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG1vbS51dGNPZmZzZXQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRtb20udXRjT2Zmc2V0KC1vZmZzZXQsIGtlZXBUaW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1vbS56b25lKG9mZnNldCwga2VlcFRpbWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRmbi50eiA9IGZ1bmN0aW9uIChuYW1lLCBrZWVwVGltZSkge1xuXHRcdGlmIChuYW1lKSB7XG5cdFx0XHR0aGlzLl96ID0gZ2V0Wm9uZShuYW1lKTtcblx0XHRcdGlmICh0aGlzLl96KSB7XG5cdFx0XHRcdG1vbWVudC51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nRXJyb3IoXCJNb21lbnQgVGltZXpvbmUgaGFzIG5vIGRhdGEgZm9yIFwiICsgbmFtZSArIFwiLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS90aW1lem9uZS9kb2NzLyMvZGF0YS1sb2FkaW5nLy5cIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKHRoaXMuX3opIHsgcmV0dXJuIHRoaXMuX3oubmFtZTsgfVxuXHR9O1xuXG5cdGZ1bmN0aW9uIGFiYnJXcmFwIChvbGQpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKHRoaXMuX3opIHsgcmV0dXJuIHRoaXMuX3ouYWJicih0aGlzKTsgfVxuXHRcdFx0cmV0dXJuIG9sZC5jYWxsKHRoaXMpO1xuXHRcdH07XG5cdH1cblxuXHRmdW5jdGlvbiByZXNldFpvbmVXcmFwIChvbGQpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0dGhpcy5feiA9IG51bGw7XG5cdFx0XHRyZXR1cm4gb2xkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0fTtcblx0fVxuXG5cdGZuLnpvbmVOYW1lID0gYWJicldyYXAoZm4uem9uZU5hbWUpO1xuXHRmbi56b25lQWJiciA9IGFiYnJXcmFwKGZuLnpvbmVBYmJyKTtcblx0Zm4udXRjICAgICAgPSByZXNldFpvbmVXcmFwKGZuLnV0Yyk7XG5cblx0bW9tZW50LnR6LnNldERlZmF1bHQgPSBmdW5jdGlvbihuYW1lKSB7XG5cdFx0aWYgKG1ham9yIDwgMiB8fCAobWFqb3IgPT09IDIgJiYgbWlub3IgPCA5KSkge1xuXHRcdFx0bG9nRXJyb3IoJ01vbWVudCBUaW1lem9uZSBzZXREZWZhdWx0KCkgcmVxdWlyZXMgTW9tZW50LmpzID49IDIuOS4wLiBZb3UgYXJlIHVzaW5nIE1vbWVudC5qcyAnICsgbW9tZW50LnZlcnNpb24gKyAnLicpO1xuXHRcdH1cblx0XHRtb21lbnQuZGVmYXVsdFpvbmUgPSBuYW1lID8gZ2V0Wm9uZShuYW1lKSA6IG51bGw7XG5cdFx0cmV0dXJuIG1vbWVudDtcblx0fTtcblxuXHQvLyBDbG9uaW5nIGEgbW9tZW50IHNob3VsZCBpbmNsdWRlIHRoZSBfeiBwcm9wZXJ0eS5cblx0dmFyIG1vbWVudFByb3BlcnRpZXMgPSBtb21lbnQubW9tZW50UHJvcGVydGllcztcblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtb21lbnRQcm9wZXJ0aWVzKSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuXHRcdC8vIG1vbWVudCAyLjguMStcblx0XHRtb21lbnRQcm9wZXJ0aWVzLnB1c2goJ196Jyk7XG5cdFx0bW9tZW50UHJvcGVydGllcy5wdXNoKCdfYScpO1xuXHR9IGVsc2UgaWYgKG1vbWVudFByb3BlcnRpZXMpIHtcblx0XHQvLyBtb21lbnQgMi43LjBcblx0XHRtb21lbnRQcm9wZXJ0aWVzLl96ID0gbnVsbDtcblx0fVxuXG5cdGxvYWREYXRhKHtcblx0XHRcInZlcnNpb25cIjogXCIyMDE4ZVwiLFxuXHRcdFwiem9uZXNcIjogW1xuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxMTVQgR01UfGcuOCAwfDAxfC0ybGRYSC5RfDQ4ZTVcIixcblx0XHRcdFwiQWZyaWNhL0FjY3JhfExNVCBHTVQgKzAwMjB8LlEgMCAta3wwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI2QmJYLjggNnR6WC44IE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQzBrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQzBrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQzBrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQzBrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRSAxQzBrIE1uRSAxQkFrIE1uRSAxQkFrIE1uRXw0MWU1XCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfExNVCBFQVQgKzAyMzAgKzAyNDV8LTJyLmcgLTMwIC0ydSAtMkp8MDEyMzF8LTFGM0NyLmcgM0R6ci5nIG9rTXUgTUZYSnw0N2U1XCIsXG5cdFx0XHRcIkFmcmljYS9BbGdpZXJzfFBNVCBXRVQgV0VTVCBDRVQgQ0VTVHwtOS5sIDAgLTEwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTM0MzQzMTMxMjEyMzQzMTIxM3wtMm5jbzkubCBjTmI5LmwgSEEwIDE5QTAgMWlNMCAxMWMwIDFvbzAgV28wIDFyYzAgUU0wIDFFTTAgVU0wIERBMCBJbW8wIHJkMCBEZTAgOVh6MCAxZmIwIDFhcDAgMTZLMCAyeW8wIG1FcDAgaHdMMCBqeEEwIDExQTAgZERkMCAxN2IwIDExQjAgMWNOMCAyRHkwIDFjTjAgMWZCMCAxY0wwfDI2ZTVcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfExNVCBXQVR8LWQuQSAtMTB8MDF8LTIyeTBkLkF8MTdlNlwiLFxuXHRcdFx0XCJBZnJpY2EvQmlzc2F1fExNVCAtMDEgR01UfDEyLmsgMTAgMHwwMTJ8LTJsZFgwIDJ4b28wfDM5ZTRcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xMTVQgQ0FUfC0yYS5rIC0yMHwwMXwtMkdKZWEua3wyNmU1XCIsXG5cdFx0XHRcIkFmcmljYS9DYWlyb3xFRVQgRUVTVHwtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTFiSU8wIHZiMCAxaXAwIDExejAgMWlOMCAxbnowIDEycDAgMXB6MCAxME4wIDFwejAgMTZwMCAxanowIHMzZDAgVnowIDFvTjAgMTFiMCAxb08wIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFXTDAgcmQwIDFSejAgd3AwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMXFMMCBYZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxbnkwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgV0wwIDFxTjAgUmIwIDF3cDAgT24wIDF6ZDAgTHowIDFFTjAgRmIwIGMxMCA4bjAgOE5kMCBnTDAgZTEwIG1uMHwxNWU2XCIsXG5cdFx0XHRcIkFmcmljYS9DYXNhYmxhbmNhfExNVCBXRVQgV0VTVCBDRVR8dS5rIDAgLTEwIC0xMHwwMTIxMjEyMTIxMjEyMTIxMjEzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ01udC5FIDEzMEx0LkUgcmIwIERkMCBkVmIwIGI2cDAgVFgwIEVvQjAgTEwwIGduZDAgcnowIDQzZDAgQUwwIDFOZDAgWFgwIDFDcDAgcHowIGRFcDAgNG1uMCBTeU4wIEFMMCAxTmQwIHduMCAxRkIwIERiMCAxemQwIEx6MCAxTmYwIHdNMCBjbzAgZ28wIDFvMDAgczAwIGRBMCB2YzAgMTFBMCBBMDAgZTAwIHkwMCAxMUEwIHVNMCBlMDAgRGMwIDExQTAgczAwIGUwMCBJTTAgV00wIG1vMCBnTTAgTEEwIFdNMCBqQTAgZTAwIFJjMCAxMUEwIGUwMCBlMDAgVTAwIDExQTAgOG8wIGUwMCAxMUEwIDExQTAgNUEwIGUwMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFmQTAgMTdjMCAxaW8wIDE0bzAgMWxjMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMWxjMCAxNG8wIDFmQTB8MzJlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQ2V1dGF8V0VUIFdFU1QgQ0VUIENFU1R8MCAtMTAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTI1S04wIDExejAgZHJkMCAxOHAwIDNIWDAgMTdkMCAxZnowIDFhMTAgMWlvMCAxYTAwIDF5N28wIExMMCBnbmQwIHJ6MCA0M2QwIEFMMCAxTmQwIFhYMCAxQ3AwIHB6MCBkRXAwIDRWQjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDg1ZTNcIixcblx0XHRcdFwiQWZyaWNhL0VsX0FhaXVufExNVCAtMDEgV0VUIFdFU1R8US5NIDEwIDAgLTEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xckR6Ny5jIDFHVkE3LmMgNkwwIEFMMCAxTmQwIFhYMCAxQ3AwIHB6MCAxY0JCMCBBTDAgMU5kMCB3bjAgMUZCMCBEYjAgMXpkMCBMejAgMU5mMCB3TTAgY28wIGdvMCAxbzAwIHMwMCBkQTAgdmMwIDExQTAgQTAwIGUwMCB5MDAgMTFBMCB1TTAgZTAwIERjMCAxMUEwIHMwMCBlMDAgSU0wIFdNMCBtbzAgZ00wIExBMCBXTTAgakEwIGUwMCBSYzAgMTFBMCBlMDAgZTAwIFUwMCAxMUEwIDhvMCBlMDAgMTFBMCAxMUEwIDVBMCBlMDAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxZkEwIDE3YzAgMWlvMCAxNG8wIDFsYzAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFsYzAgMTRvMCAxZkEwfDIwZTRcIixcblx0XHRcdFwiQWZyaWNhL0pvaGFubmVzYnVyZ3xTQVNUIFNBU1QgU0FTVHwtMXUgLTIwIC0zMHwwMTIxMjF8LTJHSmR1IDFBamR1IDFjTDAgMWNOMCAxY0wwfDg0ZTVcIixcblx0XHRcdFwiQWZyaWNhL0p1YmF8TE1UIENBVCBDQVNUIEVBVHwtMjYucyAtMjAgLTMwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMXlXMjYucyAxekswNi5zIDE2TDAgMWlOMCAxN2IwIDFqZDAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxN1gwIDFoQjAgMThuMCAxaGQwIDE5YjAgMWdwMCAxOXowIDFpTjAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxOG4wIDFoZDAgMThMMCAxZ04wIDE5YjAgMWdwMCAxOXowIDFpTjAgMTd6MCAxaTEwIDE3WDAgeUdkMFwiLFxuXHRcdFx0XCJBZnJpY2EvS2hhcnRvdW18TE1UIENBVCBDQVNUIEVBVHwtMmEuOCAtMjAgLTMwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzF8LTF5VzJhLjggMXpLMGEuOCAxNkwwIDFpTjAgMTdiMCAxamQwIDE3YjAgMWlwMCAxN3owIDFpMTAgMTdYMCAxaEIwIDE4bjAgMWhkMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3YjAgMWlwMCAxN3owIDFpMTAgMThuMCAxaGQwIDE4TDAgMWdOMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3ejAgMWkxMCAxN1gwIHlHZDAgSGpMMHw1MWU1XCIsXG5cdFx0XHRcIkFmcmljYS9Nb25yb3ZpYXxNTVQgTU1UIEdNVHxILjggSS51IDB8MDEyfC0yM0x6Zy5RIDI4RzAxLm18MTFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTmRqYW1lbmF8TE1UIFdBVCBXQVNUfC0xMC5jIC0xMCAtMjB8MDEyMXwtMmxlMTAuYyAySjNjMC5jIFduMHwxM2U1XCIsXG5cdFx0XHRcIkFmcmljYS9TYW9fVG9tZXxMTVQgR01UIFdBVHxBLkogMCAtMTB8MDEyfC0ybGUwMCA0aTZOMFwiLFxuXHRcdFx0XCJBZnJpY2EvVHJpcG9saXxMTVQgQ0VUIENFU1QgRUVUfC1RLkkgLTEwIC0yMCAtMjB8MDEyMTIxMjEzMTIxMjEyMTIxMjEyMTIxMjEzMTIzMTIzfC0yMUpjUS5JIDFobkJRLkkgdngwIDRpUDAgeHgwIDRlTjAgQmIwIDdpcDAgVTBuMCBBMTAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFlTjAgMWJiMCAxZTEwIDFjTDAgMWMxMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMXExMCBmQW4wIDFlcDAgMWRiMCBBS3EwIFRBMCAxbzAwfDExZTVcIixcblx0XHRcdFwiQWZyaWNhL1R1bmlzfFBNVCBDRVQgQ0VTVHwtOS5sIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMm5jbzkubCAxOHBhOS5sIDFxTTAgREEwIDNUYzAgMTFCMCAxemUwIFdNMCA3ejAgM2QwIDE0TDAgMWNOMCAxZjkwIDFhcjAgMTZKMCAxZ1hCMCBXTTAgMXJBMCAxMWMwIG53bzAgS28wIDFjTTAgMWNNMCAxckEwIDEwTTAgenVNMCAxME4wIDFhTjAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDB8MjBlNVwiLFxuXHRcdFx0XCJBZnJpY2EvV2luZGhvZWt8KzAxMzAgU0FTVCBTQVNUIENBVCBXQVR8LTF1IC0yMCAtMzAgLTIwIC0xMHwwMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMkdKZHUgMUFqZHUgMWNMMCAxU3FMMCA5SW8wIDE2UDAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMHwzMmU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQWRha3xOU1QgTldUIE5QVCBCU1QgQkRUIEFIU1QgSFNUIEhEVHxiMCBhMCBhMCBiMCBhMCBhMCBhMCA5MHwwMTIwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3U1gwIDh3VzAgaUIwIFFsYjAgNTJPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNtMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDMyNlwiLFxuXHRcdFx0XCJBbWVyaWNhL0FuY2hvcmFnZXxBU1QgQVdUIEFQVCBBSFNUIEFIRFQgWVNUIEFLU1QgQUtEVHxhMCA5MCA5MCBhMCA5MCA5MCA5MCA4MHwwMTIwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3VDAwIDh3WDAgaUEwIFFsYjAgNTJPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNtMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDMwZTRcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufExNVCBBU1R8NDYuNCA0MHwwMXwtMmtOdlIuVXw0M2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJhZ3VhaW5hfExNVCAtMDMgLTAyfDNjLk0gMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsd0wuYyBIZEtMLmMgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgZE1OMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgbnkxMCBMejB8MTRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9CdWVub3NfQWlyZXN8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cDAgUmIwIDF3cDAgVFgwIEE0cDAgdUwwIDFxTjAgV0wwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgcmxCMCA3QjAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEzMjMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgQTRwMCB1TDAgMXFOMCBXTDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvSnVqdXl8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMTIxMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxemUwIFRYMCAxbGQwIFdLMCAxd3AwIFRYMCBBNHAwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9MYV9SaW9qYXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEyMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUW4wIHFPMCAxNm4wIFJiMCAxd3AwIFRYMCBybEIwIDdCMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTIxMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxdTIwIFNMMCAxdmQwIFRiMCAxd3AwIFRXMCByaTEwIE9wMCA3VFgwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9SaW9fR2FsbGVnb3N8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cDAgUmIwIDF3cDAgVFgwIHJsQjAgN0IwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1NhbHRhfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgQTRwMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvU2FuX0p1YW58Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFFuMCBxTzAgMTZuMCBSYjAgMXdwMCBUWDAgcmxkMCBtMTAgOGxiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXN8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMTIxMjEyMzIxMjEyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFhYMCAxcTIwIFNMMCBBTjAgdkRiMCBtMTAgOGxiMCA4TDAgamQwIDFxTjAgV0wwIDFxTjBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvVHVjdW1hbnxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEzMjMyMTIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBybEIwIDROMCA4QlgwIHVMMCAxcU4wIFdMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9Vc2h1YWlhfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBya04wIDhwMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98TE1UIC0wNDMwIEFTVHw0ei5MIDR1IDQwfDAxMnwtMmtWN28uZCAyOEtMUy5kfDE1ZTRcIixcblx0XHRcdFwiQW1lcmljYS9Bc3VuY2lvbnxBTVQgLTA0IC0wM3wzTy5FIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMXg1ODkuayAxREtNOS5rIDNDTDAgM0RkMCAxMEwwIDFwQjAgMTBuMCAxcEIwIDEwbjAgMXBCMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxbEIwIDE0bjAgMWRkMCAxY0wwIDFmZDAgV0wwIDFyZDAgMWFMMCAxZEIwIFh6MCAxcXAwIFhiMCAxcU4wIDEwTDAgMXJCMCBUWDAgMXRCMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxY0wwIFdOMCAxcUwwIDExQjAgMW5YMCAxaXAwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIDE5WDAgMWExMCAxZnowIDFhMTAgMWZ6MCAxY04wIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMHwyOGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXRpa29rYW58Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMjM0fC0yNVRRMCAxaW4wIFJuYjAgM2plMCA4eDMwIGl3MHwyOGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmFoaWFfQmFuZGVyYXN8TE1UIE1TVCBDU1QgUFNUIE1EVCBDRFR8NzEgNzAgNjAgODAgNjAgNTB8MDEyMTIxMjEzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIG90WDAgZ21OMCBQMk4wIDEzVmQwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblcwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDg0ZTNcIixcblx0XHRcdFwiQW1lcmljYS9CYWhpYXxMTVQgLTAzIC0wMnwyeS40IDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4cC5VIEhkTHAuVSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCBsNUIwIFJiMHwyN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQmFyYmFkb3N8TE1UIEJNVCBBU1QgQURUfDNXLnQgM1cudCA0MCAzMHwwMTIzMjMyMzIzMnwtMVEwSTEudiBqc00wIDFPREMxLnYgSUwwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWxkMCAxM2IwfDI4ZTRcIixcblx0XHRcdFwiQW1lcmljYS9CZWxlbXxMTVQgLTAzIC0wMnwzZC5VIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsd0suNCBIZEtLLjQgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDB8MjBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0JlbGl6ZXxMTVQgQ1NUIC0wNTMwIENEVHw1US5NIDYwIDV1IDUwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzMTMxfC0ya0J1Ny5jIGZQQTcuYyBPbnUgMXpjdSBSYnUgMXdvdSBSYnUgMXdvdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXdvdSBSYnUgMXdvdSBSYnUgMXdvdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXdvdSBSYnUgMXdvdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXdvdSBSYnUgMXdvdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXdvdSBSYnUgMWYwTXUgcW4wIGx4QjAgbW4wfDU3ZTNcIixcblx0XHRcdFwiQW1lcmljYS9CbGFuYy1TYWJsb258QVNUIEFEVCBBV1QgQVBUfDQwIDMwIDMwIDMwfDAxMDIzMHwtMjVUUzAgMWluMCBVR3AwIDh4NTAgaXUwfDExZTJcIixcblx0XHRcdFwiQW1lcmljYS9Cb2FfVmlzdGF8TE1UIC0wNCAtMDN8NDIuRSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2Vi5rIEhkS1YuayAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBzbXAwIFdMMCAxdEIwIDJMMHw2MmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQm9nb3RhfEJNVCAtMDUgLTA0fDRVLmcgNTAgNDB8MDEyMXwtMmViNzMuSSAzOHlvMy5JIDJlbjB8OTBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0JvaXNlfFBTVCBQRFQgTVNUIE1XVCBNUFQgTURUfDgwIDcwIDcwIDYwIDYwIDYwfDAxMDEwMjM0MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTI2MXEwIDFuWDAgMTFCMCAxblgwIDhDMTAgSkNMMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgRGQwIDFLbjAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIxZTRcIixcblx0XHRcdFwiQW1lcmljYS9DYW1icmlkZ2VfQmF5fC0wMCBNU1QgTVdUIE1QVCBNRERUIE1EVCBDU1QgQ0RUIEVTVHwwIDcwIDYwIDYwIDUwIDYwIDYwIDUwIDUwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTU2Nzg2NTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTF8LTIxSmMwIFJPOTAgOHgyMCBpeDAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFBMCAxblgwIDJLMCBXUTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE1ZTJcIixcblx0XHRcdFwiQW1lcmljYS9DYW1wb19HcmFuZGV8TE1UIC0wNCAtMDN8M0MucyA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdsLncgSGRMbC53IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIDFDMTAgTHowIDFJcDAgSFgwIDF6ZDAgT24wIDFIQjAgSUwwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF6ZDAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgSUwwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFLcDAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjB8NzdlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhbmN1bnxMTVQgQ1NUIEVTVCBFRFQgQ0RUfDVMLjQgNjAgNTAgNDAgNTB8MDEyMzIzMjM0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxMnwtMVVRRzAgMnEybzAgeUxCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIEx6MCB4QjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgRGQwfDYzZTRcIixcblx0XHRcdFwiQW1lcmljYS9DYXJhY2FzfENNVCAtMDQzMCAtMDR8NHIuRSA0dSA0MHwwMTIxMnwtMmtWN3cuayAyOEtNMi5rIDFJd091IGtxbzB8MjllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NheWVubmV8TE1UIC0wNCAtMDN8M3QuayA0MCAzMHwwMTJ8LTJtcnd1LkUgMmdXb3UuRXw1OGUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuYW1hfENNVCBFU1R8NWouQSA1MHwwMXwtMnVkdUUub3wxNWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2hpY2Fnb3xDU1QgQ0RUIEVTVCBDV1QgQ1BUfDYwIDUwIDUwIDUwIDUwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMDEwMTAxMDEwMTAzNDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCAxd3AwIFRYMCBXTjAgMXFMMCAxY04wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxMUIwIDFIejAgMTRwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIFJCMCA4eDMwIGl3MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8OTJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWh1YWh1YXxMTVQgTVNUIENTVCBDRFQgTURUfDc0LmsgNzAgNjAgNTAgNjB8MDEyMTIxMjMyMzI0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIDJ6UU4wIDFsYjAgMTRwMCAxbGIwIDE0cTAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDgxZTRcIixcblx0XHRcdFwiQW1lcmljYS9Db3N0YV9SaWNhfFNKTVQgQ1NUIENEVHw1QS5kIDYwIDUwfDAxMjEyMTIxMjF8LTFYZDZuLkwgMmx1MG4uTCBEYjAgMUtwMCBEYjAgcFJCMCAxNWIwIDFrcDAgbUwwfDEyZTVcIixcblx0XHRcdFwiQW1lcmljYS9DcmVzdG9ufE1TVCBQU1R8NzAgODB8MDEwfC0yOURSMCA0M0IwfDUzZTJcIixcblx0XHRcdFwiQW1lcmljYS9DdWlhYmF8TE1UIC0wNCAtMDN8M0kuayA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3Zi5FIEhkTGYuRSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCA0YTEwIEhYMCAxemQwIE9uMCAxSEIwIElMMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxemQwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIElMMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxS3AwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wfDU0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9EYW5tYXJrc2hhdm58TE1UIC0wMyAtMDIgR01UfDFlLkUgMzAgMjAgMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMmE1V0ouayAyejVmSi5rIDE5VTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgREMwfDhcIixcblx0XHRcdFwiQW1lcmljYS9EYXdzb25fQ3JlZWt8UFNUIFBEVCBQV1QgUFBUIE1TVHw4MCA3MCA3MCA3MCA3MHwwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0fC0yNVRPMCAxaW4wIFVHcDAgOHgxMCBpeTAgM05CMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIE1MMHwxMmUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGF3c29ufFlTVCBZRFQgWVdUIFlQVCBZRERUIFBTVCBQRFR8OTAgODAgODAgODAgNzAgODAgNzB8MDEwMTAyMzA0MDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMjVUTjAgMWluMCAxbzEwIDEzVjAgU2VyMCA4eDAwIGl6MCBMQ0wwIDFmQTAganJBMCBmTmQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxM2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGVudmVyfE1TVCBNRFQgTVdUIE1QVHw3MCA2MCA2MCA2MHwwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCBtbjAgT3JkMCA4eDIwIGl4MCBMQ04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjZlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0RldHJvaXR8TE1UIENTVCBFU1QgRVdUIEVQVCBFRFR8NXcuYiA2MCA1MCA0MCA0MCA0MHwwMTIzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTJDZ2lyLk4gcGVxci5OIDE1NkwwIDh4NDAgaXYwIDZmZDAgMTF6MCBYUXAwIDFjTDAgczEwIDFWejAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRWRtb250b258TE1UIE1TVCBNRFQgTVdUIE1QVHw3eC5RIDcwIDYwIDYwIDYwfDAxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yeWQ0cS44IHNoZHEuOCAxaW4wIDE3ZDAgaHowIDJkQjAgMWZ6MCAxYTEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIElHTjAgOHgyMCBpeDAgM05CMCAxMXowIExGQjAgMWNMMCAzQ3AwIDFjTDAgNjZOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxMGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRWlydW5lcGV8TE1UIC0wNSAtMDR8NEQucyA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2ay53IEhkTGsudyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBkUEIwIE9uMCB5VGQwIGQ1WDB8MzFlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0VsX1NhbHZhZG9yfExNVCBDU1QgQ0RUfDVVLk0gNjAgNTB8MDEyMTIxfC0xWGlHMy5jIDJGdmMzLmMgV0wwIDFxTjAgV0wwfDExZTVcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfExNVCBNU1QgUFNUIFBEVCBQV1QgUFBUfDdNLjQgNzAgODAgNzAgNzAgNzB8MDEyMTIzMjQ1MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xVVFFMCA0UFgwIDhtTTAgOGxjMCBTTjAgMWNMMCBwSEIwIDgzcjAgekkwIDVPMTAgMVJ6MCBjT08wIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgQlVwMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIFUxMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIwZTVcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X05lbHNvbnxQU1QgUERUIFBXVCBQUFQgTVNUfDgwIDcwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0fC0yNVRPMCAxaW4wIFVHcDAgOHgxMCBpeTAgM05CMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMHwzOWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwNDA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFFJMTAgRGIwIFJCMCA4eDMwIGl3MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgNVR6MCAxbzEwIHFMYjAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRhbGV6YXxMTVQgLTAzIC0wMnwyeSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4cSBIZExxIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIG5zcDAgV0wwIDF0QjAgNXowIDJtTjAgT24wfDM0ZTVcIixcblx0XHRcdFwiQW1lcmljYS9HbGFjZV9CYXl8TE1UIEFTVCBBRFQgQVdUIEFQVHwzWC5NIDQwIDMwIDMwIDMwfDAxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSTAuYyBDd08wLmMgMWluMCBVR3AwIDh4NTAgaXUwIGlxMTAgMTF6MCBKZzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE5ZTNcIixcblx0XHRcdFwiQW1lcmljYS9Hb2R0aGFifExNVCAtMDMgLTAyfDNxLlUgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE1VXguNCAyejVkeC40IDE5VTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxN2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvR29vc2VfQmF5fE5TVCBORFQgTlNUIE5EVCBOV1QgTlBUIEFTVCBBRFQgQUREVHwzdS5RIDJ1LlEgM3UgMnUgMnUgMnUgNDAgMzAgMjB8MDEwMjMyMzIzMjMyMzIzMjQ1MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY4Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0yNVRTdC44IDFpbjAgRFhiMCAySGJYLjggV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgN1VIdSBpdHUgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBXTDAgMWxkMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgUzEwIGcwdSAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRuMSAxbGIwIDE0cDAgMW5XMCAxMUMwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpjWCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw3NmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvR3JhbmRfVHVya3xLTVQgRVNUIEVEVCBBU1R8NTcuYSA1MCA0MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmwxdVEuTyAySEhCUS5PIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgNUlwMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM3ZTJcIixcblx0XHRcdFwiQW1lcmljYS9HdWF0ZW1hbGF8TE1UIENTVCBDRFR8NjIuNCA2MCA1MHwwMTIxMjEyMTIxfC0yNEtoVi5VIDJlZlhWLlUgQW4wIG10ZDAgTnowIGlmQjAgMTdiMCB6REIwIDExejB8MTNlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0d1YXlhcXVpbHxRTVQgLTA1IC0wNHw1ZSA1MCA0MHwwMTIxfC0xeVZTSyAydUlMSyByejB8MjdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0d1eWFuYXxMTVQgLTAzNDUgLTAzIC0wNHwzUS5FIDNKIDMwIDQwfDAxMjN8LTJkdlU3LmsgMnI2TFEuayBCeGJmfDgwZTRcIixcblx0XHRcdFwiQW1lcmljYS9IYWxpZmF4fExNVCBBU1QgQURUIEFXVCBBUFR8NGUubyA0MCAzMCAzMCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ySXNISi5BIHh6ekouQSAxZGIwIDNJMzAgMWluMCAzSFgwIElMMCAxRTEwIE1MMCAxeU4wIFBiMCAxQmQwIE1uMCAxQmQwIFJ6MCAxdzEwIFhiMCAxdzEwIExYMCAxdzEwIFhiMCAxdzEwIEx6MCAxQzEwIEp6MCAxRTEwIE9MMCAxeU4wIFVuMCAxcXAwIFhiMCAxcXAwIDExWDAgMXcxMCBMejAgMUhCMCBMWDAgMUMxMCBGWDAgMXcxMCBYYjAgMXFwMCBYYjAgMUJCMCBMWDAgMXRkMCBYYjAgMXFwMCBYYjAgUmYwIDh4NTAgaXUwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAzUXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgM1FwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDZpMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM5ZTRcIixcblx0XHRcdFwiQW1lcmljYS9IYXZhbmF8SE1UIENTVCBDRFR8NXQuQSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFNZXV1Lm8gNzJ6dS5vIE1MMCBzbGQwIEFuMCAxTmQwIERiMCAxTmQwIEFuMCA2RXAwIEFuMCAxTmQwIEFuMCBKRGQwIE1uMCAxQXAwIE9uMCAxZmQwIDExWDAgMXFOMCBXTDAgMXdwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxNG4wIDFsZDAgMTRMMCAxa04wIDE1YjAgMWtwMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWZCMCAxMXowIDE0cDAgMW5YMCAxMUIwIDFuWDAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxNG4wIDFsZDAgMTRuMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMWExMCAxaW4wIDFhMTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxN2MwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxMUEwIDZpMDAgUmMwIDF3bzAgVTAwIDF0QTAgUmMwIDF3bzAgVTAwIDF3bzAgVTAwIDF6YzAgVTAwIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzB8MjFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0hlcm1vc2lsbG98TE1UIE1TVCBDU1QgUFNUIE1EVHw3bi5RIDcwIDYwIDgwIDYwfDAxMjEyMTIxMzE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBvdFgwIGdtTjAgUDJOMCAxM1ZkMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjB8NjRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvS25veHxDU1QgQ0RUIENXVCBDUFQgRVNUfDYwIDUwIDUwIDUwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgM05CMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDNDbjAgOHdwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCB6OG8wIDFvMDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL01hcmVuZ298Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwNDU0NTQ1NDU0NTQxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBkeU4wIDExejAgNmZkMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAganJ6MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZBMCBMQTAgMUJYMCAxZTZwMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9QZXRlcnNidXJnfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTA0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIG5qWDAgV04wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgM0ZiMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxOWNvMCAxbzAwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9UZWxsX0NpdHl8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIGcwcDAgMTF6MCAxbzEwIDExejAgMXFMMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgY2FMMCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxbzAwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9WZXZheXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAga1BCMCBBd24wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWxuZDAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVmluY2VubmVzfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCBnMHAwIDExejAgMW8xMCAxMXowIDFxTDAgV04wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIGNhTDAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXpiMCBPbzAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvV2luYW1hY3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTA1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAganJ6MCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxbzAwIFJkMCAxemEwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW51dmlrfC0wMCBQU1QgUEREVCBNU1QgTURUfDAgODAgNjAgNzAgNjB8MDEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtRm5BMCB0V1UwIDFmQTAgd1BlMCAycHowIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzNWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvSXFhbHVpdHwtMDAgRVdUIEVQVCBFU1QgRUREVCBFRFQgQ1NUIENEVHwwIDQwIDQwIDUwIDMwIDQwIDYwIDUwfDAxMjM0MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTY3MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzfC0xNkswMCA3blgwIGl2MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUMwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjdlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0phbWFpY2F8S01UIEVTVCBFRFR8NTcuYSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybDF1US5PIDJ1TTFRLk8gMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowfDk0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9KdW5lYXV8UFNUIFBXVCBQUFQgUERUIFlEVCBZU1QgQUtTVCBBS0RUfDgwIDcwIDcwIDcwIDgwIDkwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwNDAzMDMwMzU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1QyMCA4eDEwIGl5MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY28wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0tlbnR1Y2t5L0xvdWlzdmlsbGV8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgM0ZkMCBOYjAgTFBkMCAxMXowIFJCMCA4eDMwIGl3MCBCYjAgMTBOMCAyYkIwIDhpbjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgeHowIGdzbzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVkEwIExBMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0tlbnR1Y2t5L01vbnRpY2VsbG98Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBTV3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9MYV9QYXp8Q01UIEJTVCAtMDR8NHcuQSAzdy5BIDQwfDAxMnwtMXgzN3IubyAxM2IwfDE5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9MaW1hfExNVCAtMDUgLTA0fDU4LkEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMXwtMnR5R1AubyAxYkR6UC5vIHpYMCAxYU4wIDFjTDAgMWNOMCAxY0wwIDFQckIwIHpYMCAxTzEwIHpYMCA2R3AwIHpYMCA5OHAwIHpYMHwxMWU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTG9zX0FuZ2VsZXN8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcTAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDEwIGl5MCA1V3AxIDFWYVggM2RBMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNWU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFjZWlvfExNVCAtMDMgLTAyfDJtLlEgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4Qi44IEhkTEIuOCAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBkTU4wIEx6MCA4UTEwIFdMMCAxdEIwIDV6MCAybU4wIE9uMHw5M2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFuYWd1YXxNTVQgQ1NUIEVTVCBDRFR8NUouYyA2MCA1MCA1MHwwMTIxMzEzMTIxMjEzMTMxfC0xcXVpZS5NIDF5QU1lLk0gNG1uMCA5VXAwIER6MCAxSzEwIER6MCBzM0YwIDFLSDAgREIwIDlJbjAgazhwMCAxOVgwIDFvMzAgMTF5MHwyMmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFuYXVzfExNVCAtMDQgLTAzfDQwLjQgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZYLlUgSGRLWC5VIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIGRQQjAgT24wfDE5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9NYXJ0aW5pcXVlfEZGTVQgQVNUIEFEVHw0NC5rIDQwIDMwfDAxMjF8LTJtUFRULkUgMkxQYlQuRSAxOVgwfDM5ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NYXRhbW9yb3N8TE1UIENTVCBDRFR8NkUgNjAgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVVRRzAgMkZqQzAgMW5YMCBpNnAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgVTEwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NDVlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hemF0bGFufExNVCBNU1QgQ1NUIFBTVCBNRFR8NzUuRSA3MCA2MCA4MCA2MHwwMTIxMjEyMTMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8NDRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01lbm9taW5lZXxDU1QgQ0RUIENXVCBDUFQgRVNUfDYwIDUwIDUwIDUwIDUwfDAxMDEwMjMwMTAxMDQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCBMQ04wIDFmejAgNjQxMCA5SmIwIDFjTTAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDg1ZTJcIixcblx0XHRcdFwiQW1lcmljYS9NZXJpZGF8TE1UIENTVCBFU1QgQ0RUfDVXLnMgNjAgNTAgNTB8MDEyMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtMVVRRzAgMnEybzAgMmh6MCB3dTMwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDExZTVcIixcblx0XHRcdFwiQW1lcmljYS9NZXRsYWthdGxhfFBTVCBQV1QgUFBUIFBEVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFoVTEwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE0ZTJcIixcblx0XHRcdFwiQW1lcmljYS9NZXhpY29fQ2l0eXxMTVQgTVNUIENTVCBDRFQgQ1dUfDZBLkEgNzAgNjAgNTAgNTB8MDEyMTIxMjMyMzI0MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgZ0VuMCBUWDAgM3hkMCBKYjAgNnpCMCBTTDAgZTVkMCAxN2IwIDFQZmYwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDIwZTZcIixcblx0XHRcdFwiQW1lcmljYS9NaXF1ZWxvbnxMTVQgQVNUIC0wMyAtMDJ8M0kuRSA0MCAzMCAyMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJtS2tmLmsgMkxUQWYuayBnUTEwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDYxZTJcIixcblx0XHRcdFwiQW1lcmljYS9Nb25jdG9ufEVTVCBBU1QgQURUIEFXVCBBUFR8NTAgNDAgMzAgMzAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ySXNIMCBDd04wIDFpbjAgekFvMCBBbjAgMU5kMCBBbjAgMU5kMCBBbjAgMU5kMCBBbjAgMU5kMCBBbjAgMU5kMCBBbjAgMUsxMCBMejAgMXpCMCBOWDAgMXUxMCBXbjAgUzIwIDh4NTAgaXUwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgM0NwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0bjEgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmVYIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjRlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL01vbnRlcnJleXxMTVQgQ1NUIENEVHw2Ri5nIDYwIDUwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFVUUcwIDJGakMwIDFuWDAgaTZwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw0MWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTW9udGV2aWRlb3xMTVQgTU1UIC0wNCAtMDMgLTAzMzAgLTAyMzAgLTAyIC0wMTMwfDNJLlAgM0kuUCA0MCAzMCAzdSAydSAyMCAxdXwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzUzNTM2MzYzNTM2MzYzNzUzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjN8LTJ0UlVmLjkgc1ZjMCA4amNmLjkgMWRiMCAxZGN1IDFjTHUgMWRjdSAxY0x1IGlyY3UgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxcU11IFdMdSAxZkF1IDFjTHUgMW8wdSAxMXp1IE5BdSAzalh1IHpYdSBEcTB1IDE5WHUgcGN1IGp6MCBjbTEwIDE5WDAgNnRCMCAxZmJ1IDNvMHUgalgwIDR2QjAgeHowIDNDcDAgbW11IDFhMTAgSU11IERiMCA0YzEwIHVMMCAxTmQwIEFuMCAxU04wIHVMMCBtcDAgMjhMMCBpUEIwIHVuMCAxU04wIHh6MCAxemQwIEx6MCAxemQwIFJiMCAxemQwIE9uMCAxd3AwIFJiMCBzOHAwIDFmQjAgMWlwMCAxMXowIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTRuMCAxbGQwIDE0bjAgMWxkMCAxNG4wIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowfDE3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9Ub3JvbnRvfEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjVUUjAgMWluMCAxMVd1IDFuenUgMWZEMCBXSjAgMXdyMCBOYjAgMUFwMCBPbjAgMXpkMCBPbjAgMXdwMCBUWDAgMXRCMCBUWDAgMXRCMCBUWDAgMXRCMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgNGtNMCA4eDQwIGl2MCAxbzEwIDExejAgMW5YMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFxTDAgMTFEMCAxblgwIDExQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjVlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL05hc3NhdXxMTVQgRVNUIEVEVHw1OS51IDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmtOdU8udSAyNlhkTy51IDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL05ld19Zb3JrfEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxdDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIDFhMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIFJCMCA4eDQwIGl2MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjFlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL05pcGlnb258RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjVUUjAgMWluMCBSbmIwIDNqZTAgOHg0MCBpdjAgMTl5TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE2ZTJcIixcblx0XHRcdFwiQW1lcmljYS9Ob21lfE5TVCBOV1QgTlBUIEJTVCBCRFQgWVNUIEFLU1QgQUtEVHxiMCBhMCBhMCBiMCBhMCA5MCA5MCA4MHwwMTIwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3U1gwIDh3VzAgaUIwIFFsYjAgNTJPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNsMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM4ZTJcIixcblx0XHRcdFwiQW1lcmljYS9Ob3JvbmhhfExNVCAtMDIgLTAxfDI5LkUgMjAgMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseE8uayBIZEtPLmsgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCAyTDAgMnBCMCBPbjB8MzBlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcnRoX0Rha290YS9CZXVsYWh8TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQ2VudGVyfE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNG8wIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9ydGhfRGFrb3RhL05ld19TYWxlbXxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNG8wIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL09qaW5hZ2F8TE1UIE1TVCBDU1QgQ0RUIE1EVHw2Vi5FIDcwIDYwIDUwIDYwfDAxMjEyMTIzMjMyNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCAyelFOMCAxbGIwIDE0cDAgMWxiMCAxNHEwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIFUxMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTNcIixcblx0XHRcdFwiQW1lcmljYS9QYW5nbmlydHVuZ3wtMDAgQVNUIEFXVCBBUFQgQUREVCBBRFQgRURUIEVTVCBDU1QgQ0RUfDAgNDAgMzAgMzAgMjAgMzAgNDAgNTAgNjAgNTB8MDEyMzE0MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTY3Njc2NzY3Njg5NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3fC0xWGlNMCBQbkcwIDh4NTAgaXUwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFvMDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQzAgMW5YMCAxMUEwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFyYW1hcmlib3xMTVQgUE1UIFBNVCAtMDMzMCAtMDN8M0UuRSAzRS5RIDNFLkEgM3UgMzB8MDEyMzR8LTJuRFVqLmsgV3FvMC5jIHFhblguSSAxeVZYTi5vfDI0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9QaG9lbml4fE1TVCBNRFQgTVdUfDcwIDYwIDYwfDAxMDEwMjAyMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDRBbDEgQXAwIDFkYjAgU1dxWCAxY0wwfDQyZTVcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0LWF1LVByaW5jZXxQUE1UIEVTVCBFRFR8NE4gNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI4UkhiIDJGbk1iIDE5WDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCBpNm4wIDFuWDAgMTFCMCAxblgwIGQ0MzAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCAzaU4wIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjNlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jpb19CcmFuY298TE1UIC0wNSAtMDR8NHYuYyA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdnMuTSBIZExzLk0gMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgTkJkMCBkNVgwfDMxZTRcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0b19WZWxob3xMTVQgLTA0IC0wM3w0Zi5BIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdkkubyBIZEtJLm8gMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDB8MzdlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1B1ZXJ0b19SaWNvfEFTVCBBV1QgQVBUfDQwIDMwIDMwfDAxMjB8LTE3bFUwIDdYVDAgaXUwfDI0ZTVcIixcblx0XHRcdFwiQW1lcmljYS9QdW50YV9BcmVuYXN8U01UIC0wNSAtMDQgLTAzfDRHLksgNTAgNDAgMzB8MDEwMjAyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMnEyamguZSBmSkFoLmUgNWtuRy5LIDFWemguZSBqUkFHLksgMXBiaC5lIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIG5IWDAgb3AwIGJsejAga28wIFFlbzAgV0wwIDF6ZDAgT24wIDFpcDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWxkMCAxNG4wIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmFpbnlfUml2ZXJ8Q1NUIENEVCBDV1QgQ1BUfDYwIDUwIDUwIDUwfDAxMDEyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjVUUTAgMWluMCBSbmIwIDNqZTAgOHgzMCBpdzAgMTl5TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDg0MlwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jhbmtpbl9JbmxldHwtMDAgQ1NUIENERFQgQ0RUIEVTVHwwIDYwIDQwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtdkRjMCBrZXUwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjZlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL1JlY2lmZXxMTVQgLTAzIC0wMnwyai5BIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhFLm8gSGRMRS5vIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIG5zcDAgV0wwIDF0QjAgMkwwIDJwQjAgT24wfDMzZTVcIixcblx0XHRcdFwiQW1lcmljYS9SZWdpbmF8TE1UIE1TVCBNRFQgTVdUIE1QVCBDU1R8NlcuQSA3MCA2MCA2MCA2MCA2MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTV8LTJBRDUxLm8gdUhlMS5vIDFpbjAgczJMMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDY2TjAgMWNMMCAxY04wIDE5WDAgMWZCMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgTTMwIDh4MjAgaXgwIDFpcDAgMWNMMCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgM05CMCAxY0wwIDFjTjB8MTllNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jlc29sdXRlfC0wMCBDU1QgQ0REVCBDRFQgRVNUfDAgNjAgNDAgNTAgNTB8MDEyMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzNDMxMzEzMTMxMzEzNDMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxfC1TbkEwIEdXUzAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMjlcIixcblx0XHRcdFwiQW1lcmljYS9TYW50YXJlbXxMTVQgLTA0IC0wM3wzQy5NIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdsLmMgSGRMbC5jIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIE5CZDB8MjFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1NhbnRpYWdvfFNNVCAtMDUgLTA0IC0wM3w0Ry5LIDUwIDQwIDMwfDAxMDIwMjEyMTIxMjEyMTIxMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMnEyamguZSBmSkFoLmUgNWtuRy5LIDFWemguZSBqUkFHLksgMXBiaC5lIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIG5IWDAgb3AwIDlCejAgamIwIDFvTjAga28wIFFlbzAgV0wwIDF6ZDAgT24wIDFpcDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWxkMCAxNG4wIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwfDYyZTVcIixcblx0XHRcdFwiQW1lcmljYS9TYW50b19Eb21pbmdvfFNETVQgRVNUIEVEVCAtMDQzMCBBU1R8NEUgNTAgNDAgNHUgNDB8MDEyMTMxMzEzMTMxMzE0MTR8LTF0dGprIDFsSk1rIE1uMCA2c3AwIExidSAxQ291IHlMdSAxUkF1IHdMdSAxUU11IHh6dSAxUTB1IHhYdSAxUEF1IDEzakIwIGUwMHwyOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FvX1BhdWxvfExNVCAtMDMgLTAyfDM2LnMgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3Ui53IEhkS1IudyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBwVGQwIFBYMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCAxQzEwIEx6MCAxSXAwIEhYMCAxemQwIE9uMCAxSEIwIElMMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxemQwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIElMMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxS3AwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wfDIwZTZcIixcblx0XHRcdFwiQW1lcmljYS9TY29yZXNieXN1bmR8TE1UIC0wMiAtMDEgKzAwfDFyLlEgMjAgMTAgMHwwMTIxMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yYTVXdy44IDJ6NWV3LjggMWEwMCAxY0swIDFjTDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQ1MlwiLFxuXHRcdFx0XCJBbWVyaWNhL1NpdGthfFBTVCBQV1QgUFBUIFBEVCBZU1QgQUtTVCBBS0RUfDgwIDcwIDcwIDcwIDkwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzQ1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1fC0xN1QyMCA4eDEwIGl5MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY28wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8OTBlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL1N0X0pvaG5zfE5TVCBORFQgTlNUIE5EVCBOV1QgTlBUIE5ERFR8M3UuUSAydS5RIDN1IDJ1IDJ1IDJ1IDF1fDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMzIzMjMyMzIzMjMyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI2MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yOG9pdC44IDE0TDAgMW5CMCAxaW4wIDFnbTAgRHowIDFKQjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDEwTzAgZUtYLjggMTlYMCAxaXEwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIDdVSHUgaXR1IDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgV0wwIDFsZDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0bjEgMWxiMCAxNHAwIDFuVzAgMTFDMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6Y1ggT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1N3aWZ0X0N1cnJlbnR8TE1UIE1TVCBNRFQgTVdUIE1QVCBDU1R8N2IuayA3MCA2MCA2MCA2MCA2MHwwMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTV8LTJBRDRNLkUgdUhkTS5FIDFpbjAgVUdwMCA4eDIwIGl4MCAxbzEwIDE3YjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgaXNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDExejAgMXFOMCBXTDAgcE1wMHwxNmUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGVndWNpZ2FscGF8TE1UIENTVCBDRFR8NU0uUSA2MCA1MHwwMTIxMjEyMXwtMVdHR2IuOCAyRVRjYi44IFdMMCAxcU4wIFdMMCBHUmQwIEFMMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVGh1bGV8TE1UIEFTVCBBRFR8NHouOCA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNVRvLlEgMzFOQm8uUSAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY1NlwiLFxuXHRcdFx0XCJBbWVyaWNhL1RodW5kZXJfQmF5fENTVCBFU1QgRVdUIEVQVCBFRFR8NjAgNTAgNDAgNDAgNDB8MDEyMzE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMnE1UzAgMWlhTjAgOHg0MCBpdjAgWE5CMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgM0NwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1ZhbmNvdXZlcnxQU1QgUERUIFBXVCBQUFR8ODAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDFvMTAgMTdiMCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjNlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1doaXRlaG9yc2V8WVNUIFlEVCBZV1QgWVBUIFlERFQgUFNUIFBEVHw5MCA4MCA4MCA4MCA3MCA4MCA3MHwwMTAxMDIzMDQwNTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1fC0yNVROMCAxaW4wIDFvMTAgMTNWMCBTZXIwIDh4MDAgaXowIExDTDAgMWZBMCAzTkEwIHZyZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTNcIixcblx0XHRcdFwiQW1lcmljYS9XaW5uaXBlZ3xDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUlpMCBXTDAgM05EMCAxaW4wIEphcDAgUmIwIGFDTjAgOHgzMCBpdzAgMXRCMCAxMXowIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFyZDAgMTBMMCAxb3AwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWNMMCAxY04wIDExejAgNmkxMCBXTDAgNmkxMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NmU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvWWFrdXRhdHxZU1QgWVdUIFlQVCBZRFQgQUtTVCBBS0RUfDkwIDgwIDgwIDgwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xN1QxMCA4eDAwIGl6MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY24wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjQyXCIsXG5cdFx0XHRcIkFtZXJpY2EvWWVsbG93a25pZmV8LTAwIE1TVCBNV1QgTVBUIE1ERFQgTURUfDAgNzAgNjAgNjAgNTAgNjB8MDEyMzE0MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxfC0xcGRBMCBoaXgwIDh4MjAgaXgwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxOWUzXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvQ2FzZXl8LTAwICswOCArMTF8MCAtODAgLWIwfDAxMjEyMTIxfC0ycTAwIDFEalMwIFQ5MCA0MFAwIEtMMCBibHowIDNtMTB8MTBcIixcblx0XHRcdFwiQW50YXJjdGljYS9EYXZpc3wtMDAgKzA3ICswNXwwIC03MCAtNTB8MDEwMTIxMjF8LXZ5bzAgaVh0MCBhbGowIDFEN3YwIFZCMCAzV24wIEtOMHw3MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL0R1bW9udERVcnZpbGxlfC0wMCArMTB8MCAtYTB8MDEwMXwtVTBvMCBjZnEwIGJGbTB8ODBcIixcblx0XHRcdFwiQW50YXJjdGljYS9NYWNxdWFyaWV8QUVTVCBBRURUIC0wMCArMTF8LWEwIC1iMCAwIC1iMHwwMTAyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEzfC0yOUU4MCAxOVgwIDRTTDAgMWF5eTAgTHZzMCAxY00wIDFvMDAgUmMwIDF3bzAgUmMwIDF3bzAgVTAwIDF3bzAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wfDFcIixcblx0XHRcdFwiQW50YXJjdGljYS9NYXdzb258LTAwICswNiArMDV8MCAtNjAgLTUwfDAxMnwtQ0VvMCAyZnlrMHw2MFwiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfE5aTVQgTlpTVCBOWlNUIE5aRFR8LWJ1IC1jdSAtYzAgLWQwfDAxMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0xR0NWdSBMejAgMXRCMCAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxNG51IDFsY3UgMTRudSAxbGN1IDFsYnUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMXFMdSBXTXUgMXFMdSAxMUF1IDFuMWJ1IElNMCAxQzAwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxcU0wIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwfDE0ZTVcIixcblx0XHRcdFwiQW50YXJjdGljYS9QYWxtZXJ8LTAwIC0wMyAtMDQgLTAyfDAgMzAgNDAgMjB8MDEyMTIxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtY2FvMCBuRDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCBqc04wIDE0TjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMHw0MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1JvdGhlcmF8LTAwIC0wM3wwIDMwfDAxfGdPbzB8MTMwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvU3lvd2F8LTAwICswM3wwIC0zMHwwMXwtdnMwMHwyMFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1Ryb2xsfC0wMCArMDAgKzAyfDAgMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8MXB1bzAgaGQwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvVm9zdG9rfC0wMCArMDZ8MCAtNjB8MDF8LXRqQTB8MjVcIixcblx0XHRcdFwiRXVyb3BlL09zbG98Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhd00wIFFtMCBXNm8wIDVwZjAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCB3SmMwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxcU0wIFdNMCB6cGMwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw2MmU0XCIsXG5cdFx0XHRcIkFzaWEvUml5YWRofExNVCArMDN8LTM2LlEgLTMwfDAxfC1UdkQ2LlF8NTdlNVwiLFxuXHRcdFx0XCJBc2lhL0FsbWF0eXxMTVQgKzA1ICswNiArMDd8LTU3Lk0gLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGM1Ny5NIGVVbzcuTSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMHwxNWU1XCIsXG5cdFx0XHRcIkFzaWEvQW1tYW58TE1UIEVFVCBFRVNUfC0ybi5JIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMXlXMm4uSSAxSGlNbi5JIEtMMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMWR6MCAxY3AwIDExYjAgMW9wMCAxMWIwIGZPMTAgMWRiMCAxZTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxcGQwIDEwbjAgMWxkMCAxNG4wIDFoQjAgMTViMCAxaXAwIDE5WDAgMWNOMCAxY0wwIDFjTjAgMTdiMCAxbGQwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMVNvMCB5MDAgMWZjMCAxZGMwIDFjbzAgMWRjMCAxY00wIDFjTTAgMWNNMCAxbzAwIDExQTAgMWxjMCAxN2MwIDFjTTAgMWNNMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgNGJYMCBEZDAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wfDI1ZTVcIixcblx0XHRcdFwiQXNpYS9BbmFkeXJ8TE1UICsxMiArMTMgKzE0ICsxMXwtYk4uVSAtYzAgLWQwIC1lMCAtYjB8MDEyMzIxMjEyMTIxMjEyMTIxMjEyMTQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNDF8LTFQY2JOLlUgZVVuTi5VIDIzQ0wwIDFkYjAgMnExMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDEzZTNcIixcblx0XHRcdFwiQXNpYS9BcXRhdXxMTVQgKzA0ICswNSArMDZ8LTNsLjQgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xUGMzbC40IGVVbmwuNCAyNFBYMCAycFgwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMHwxNWU0XCIsXG5cdFx0XHRcIkFzaWEvQXF0b2JlfExNVCArMDQgKzA1ICswNnwtM00uRSAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGMzTS5FIGVVbk0uRSAyM0NMMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wfDI3ZTRcIixcblx0XHRcdFwiQXNpYS9Bc2hnYWJhdHxMTVQgKzA0ICswNSArMDZ8LTNSLncgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVBjM1IudyBlVW5SLncgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMHw0MWU0XCIsXG5cdFx0XHRcIkFzaWEvQXR5cmF1fExNVCArMDMgKzA1ICswNiArMDR8LTNyLkkgLTMwIC01MCAtNjAgLTQwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjQyMzIzMjMyMzIzMjMyMzI0MjQyNDI0MjQyfC0xUGMzci5JIGVVb3IuSSAyNFBXMCAycFgwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTBcIixcblx0XHRcdFwiQXNpYS9CYWdoZGFkfEJNVCArMDMgKzA0fC0yVi5BIC0zMCAtNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yNkJlVi5BIDJBQ25WLkEgMTFiMCAxY3AwIDFkejAgMWRkMCAxZGIwIDFjTjAgMWNwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFkZTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzB8NjZlNVwiLFxuXHRcdFx0XCJBc2lhL1FhdGFyfExNVCArMDQgKzAzfC0zcS44IC00MCAtMzB8MDEyfC0yMUpmcS44IDI3QlhxLjh8OTZlNFwiLFxuXHRcdFx0XCJBc2lhL0Jha3V8TE1UICswMyArMDQgKzA1fC0zai5vIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGMzai5vIDFqVW9qLm8gV0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgMWNNMCA5SmUwIDFvMDAgMTF6MCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDB8MjdlNVwiLFxuXHRcdFx0XCJBc2lhL0Jhbmdrb2t8Qk1UICswN3wtNkcuNCAtNzB8MDF8LTIxOFNHLjR8MTVlNlwiLFxuXHRcdFx0XCJBc2lhL0Jhcm5hdWx8TE1UICswNiArMDcgKzA4fC01eiAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMVM1eiBwQ256IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHA5MCBMRTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiQXNpYS9CZWlydXR8RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTIxYXEwIDFvbjAgMTQxMCAxZGIwIDE5QjAgMWluMCAxaXAwIFdMMCAxbFFwMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCBxNk4wIEVuMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIDFvcDAgMTFiMCBkQTEwIDE3YjAgMWlOMCAxN2IwIDFpTjAgMTdiMCAxaU4wIDE3YjAgMXZCMCBTTDAgMW1wMCAxM3owIDFpTjAgMTdiMCAxaU4wIDE3YjAgMWpkMCAxMm4wIDFhMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDB8MjJlNVwiLFxuXHRcdFx0XCJBc2lhL0Jpc2hrZWt8TE1UICswNSArMDYgKzA3fC00Vy5vIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMVBjNFcubyBlVW5XLm8gMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAyZTAwIDF0WDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWNQdSAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wfDg3ZTRcIixcblx0XHRcdFwiQXNpYS9CcnVuZWl8TE1UICswNzMwICswOHwtN0QuRSAtN3UgLTgwfDAxMnwtMUtJVEQuRSBnRGM5LkV8NDJlNFwiLFxuXHRcdFx0XCJBc2lhL0tvbGthdGF8TU1UIElTVCArMDYzMHwtNWwuYSAtNXUgLTZ1fDAxMjEyMXwtMnpPdGwuYSAxcjJMUC5hIDF1bjAgSEIwIDd6WDB8MTVlNlwiLFxuXHRcdFx0XCJBc2lhL0NoaXRhfExNVCArMDggKzA5ICsxMHwtN3guUSAtODAgLTkwIC1hMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMTJ8LTIxUTd4LlEgcEFueC5RIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZTB8MzNlNFwiLFxuXHRcdFx0XCJBc2lhL0Nob2liYWxzYW58TE1UICswNyArMDggKzEwICswOXwtN0MgLTcwIC04MCAtYTAgLTkwfDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MjQyNDJ8LTJBUEhDIDJVa29DIGNLbjAgMWRhMCAxZGQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2aEQwIDExejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAzRGIwIGgxZjAgMWNKMCAxY1AwIDFjSjB8MzhlM1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfENTVCBDRFR8LTgwIC05MHwwMTAxMDEwMTAxMDEwMTAxMHwtMWMxSTAgTFgwIDE2cDAgMWp6MCAxTXlwMCBSYjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MHwyM2U2XCIsXG5cdFx0XHRcIkFzaWEvQ29sb21ib3xNTVQgKzA1MzAgKzA2ICswNjMwfC01ai53IC01dSAtNjAgLTZ1fDAxMjMxMzIxfC0yek90ai53IDFyRmJOLncgMXp6dSA3QXB1IDIzZHowIDExenUgbjNjdXwyMmU1XCIsXG5cdFx0XHRcIkFzaWEvRGhha2F8SE1UICswNjMwICswNTMwICswNiArMDd8LTVSLmsgLTZ1IC01dSAtNjAgLTcwfDAxMjEzNDN8LTE4TEZSLmsgMXVubi5rIEhCMCBtNm4wIDJreGJ1IDFpMDB8MTZlNlwiLFxuXHRcdFx0XCJBc2lhL0RhbWFzY3VzfExNVCBFRVQgRUVTVHwtMnAuYyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yMUplcC5jIEhlcC5jIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMXhSQjAgMTFYMCAxb04wIDEwTDAgMXBCMCAxMWIwIDFvTjAgMTBMMCAxbXAwIDEzWDAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgTmIwIDFBTjAgTmIwIGJjcDAgMTlYMCAxZ3AwIDE5WDAgM2xkMCAxeFgwIFZkMCAxQnowIFNwMCAxdlgwIDEwcDAgMWR6MCAxY04wIDFjTDAgMWRiMCAxZGIwIDFnMTAgMWFuMCAxYXAwIDFkYjAgMWZkMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNwMCAxZHowIDFjMTAgMWRYMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxOXowIDFmQjAgMXFMMCAxMUIwIDFvbjAgV3AwIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwfDI2ZTVcIixcblx0XHRcdFwiQXNpYS9EaWxpfExNVCArMDggKzA5fC04bS5rIC04MCAtOTB8MDEyMTJ8LTJsZThtLmsgMWRuWG0uayAxbmZBMCBYbGQwfDE5ZTRcIixcblx0XHRcdFwiQXNpYS9EdWJhaXxMTVQgKzA0fC0zRi5jIC00MHwwMXwtMjFKZkYuY3wzOWU1XCIsXG5cdFx0XHRcIkFzaWEvRHVzaGFuYmV8TE1UICswNSArMDYgKzA3fC00ei5jIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMXwtMVBjNHouYyBlVW56LmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAyaEIwfDc2ZTRcIixcblx0XHRcdFwiQXNpYS9GYW1hZ3VzdGF8TE1UIEVFVCBFRVNUICswM3wtMmYuTSAtMjAgLTMwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVmMyZi5NIDJhM2NmLk0gMWNMMCAxcXAwIFh6MCAxOUIwIDE5WDAgMWZCMCAxZGIwIDFjcDAgMWNMMCAxZkIwIDE5WDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFvMzAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMTVVMCAyS3MwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIkFzaWEvR2F6YXxFRVQgRUVTVCBJU1QgSURUfC0yMCAtMzAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTFjMnEwIDVSYjAgMTByMCAxcHgwIDEwTjAgMXB6MCAxNnAwIDFqQjAgMTZwMCAxangwIHBCZDAgVnowIDFvTjAgMTFiMCAxb08wIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxMWQwIDFvTDAgZFcwIGhmQjAgRGIwIDFmQjAgUmIwIG5wQjAgMTF6MCAxQzEwIElMMCAxczEwIDEwbjAgMW8xMCBXTDAgMXpkMCBPbjAgMWxkMCAxMXowIDFvMTAgMTRuMCAxbzEwIDE0bjAgMW5kMCAxMm4wIDFuZDAgWHowIDFxMTAgMTJuMCBNMTAgQzAwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbzAwIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMTdjMCAxaW8wIDE4TjAgMWJ6MCAxOXowIDFncDAgMTYxMCAxaUwwIDExejAgMW8xMCAxNG8wIDFsQTEgU0tYIDF4ZDEgTUtYIDFBTjAgMWEwMCAxZkEwIDFjTDAgMWNOMCAxblgwIDEyMTAgMW56MCAxMjIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwfDE4ZTVcIixcblx0XHRcdFwiQXNpYS9IZWJyb258RUVUIEVFU1QgSVNUIElEVHwtMjAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTFjMnEwIDVSYjAgMTByMCAxcHgwIDEwTjAgMXB6MCAxNnAwIDFqQjAgMTZwMCAxangwIHBCZDAgVnowIDFvTjAgMTFiMCAxb08wIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxMWQwIDFvTDAgZFcwIGhmQjAgRGIwIDFmQjAgUmIwIG5wQjAgMTF6MCAxQzEwIElMMCAxczEwIDEwbjAgMW8xMCBXTDAgMXpkMCBPbjAgMWxkMCAxMXowIDFvMTAgMTRuMCAxbzEwIDE0bjAgMW5kMCAxMm4wIDFuZDAgWHowIDFxMTAgMTJuMCBNMTAgQzAwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbzAwIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMTdjMCAxaW8wIDE4TjAgMWJ6MCAxOXowIDFncDAgMTYxMCAxaUwwIDEyTDAgMW1OMCAxNG8wIDFsYzAgVGIwIDF4ZDEgTUtYIGJCMCBjbjAgMWNOMCAxYTAwIDFmQTAgMWNMMCAxY04wIDFuWDAgMTIxMCAxbnowIDEyMjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDB8MjVlNFwiLFxuXHRcdFx0XCJBc2lhL0hvX0NoaV9NaW5ofExNVCBQTE1UICswNyArMDggKzA5fC03Ni5FIC03Ni51IC03MCAtODAgLTkwfDAxMjM0MjMyMzJ8LTJ5Qzc2LkUgYkswMC5hIDFoN2I2LnUgNWx6MCAxOG8wIDNPcTAgazViMCBhVzAwIEJBTTB8OTBlNVwiLFxuXHRcdFx0XCJBc2lhL0hvbmdfS29uZ3xMTVQgSEtUIEhLU1QgSlNUfC03QS5HIC04MCAtOTAgLTkwfDAxMjEzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJDRkhBLkcgMXNFUDYuRyAxY0wwIHlsdSA5M1gwIDFxUXUgMXRYMCBSZDAgMUluMCBOQjAgMWNMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFrTDAgMTROMCAxblgwIFUxMCAxdHowIFUxMCAxd24wIFJkMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIDE3ZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIHMxMCAxVnowIDFjTjAgMWNMMCAxY04wIDFjTDAgNmZkMCAxNG4wfDczZTVcIixcblx0XHRcdFwiQXNpYS9Ib3ZkfExNVCArMDYgKzA3ICswOHwtNjYuQSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJBUEc2LkEgMlVrbzYuQSBjS24wIDFkYjAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAga0VwMCAxY0owIDFjUDAgMWNKMHw4MWUzXCIsXG5cdFx0XHRcIkFzaWEvSXJrdXRza3xJTVQgKzA3ICswOCArMDl8LTZWLjUgLTcwIC04MCAtOTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIxekdWLjUgcGpYVi41IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDYwZTRcIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfElNVCBFRVQgRUVTVCArMDQgKzAzfC0xVS5VIC0yMCAtMzAgLTQwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzQzNDM0MzQzNDIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjR8LTJvZ05VLlUgZHp6VS5VIDExYjAgOHRCMCAxb24wIDE0MTAgMWRiMCAxOUIwIDFpbjAgM1JkMCBVbjAgMW9OMCAxMWIwIHpTcDAgQ0wwIG1OMCAxVnowIDFnTjAgMXB6MCA1UmQwIDFmejAgMXlwMCBNTDAgMWtwMCAxN2IwIDFpcDAgMTdiMCAxZkIwIDE5WDAgMWpCMCAxOEwwIDFpcDAgMTd6MCBxZGQwIHhYMCAzUzEwIFR6MCBkQTEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxemUwIDExQjAgV00wIDFxTzAgV0kwIDFuWDAgMXJCMCAxMEwwIDExQjAgMWluMCAxN2QwIDFpbjAgMnBYMCAxOUUwIDFmVTAgMTZRMCAxaUkwIDE2UTAgMWlJMCAxVmQwIHBiMCAzS3AwIDE0bzAgMWRlMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTzAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBYYzAgMXFvMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTIwMCAxbkEwIDExQTAgMXRBMCBVMDAgMTV3MHwxM2U2XCIsXG5cdFx0XHRcIkFzaWEvSmFrYXJ0YXxCTVQgKzA3MjAgKzA3MzAgKzA5ICswOCBXSUJ8LTc3LmMgLTdrIC03dSAtOTAgLTgwIC03MHwwMTIzMjQyNXwtMVEwVGsgbHVNMCBtUHpPIDh2V3UgNmtwdSA0UFh1IHhoY3V8MzFlNlwiLFxuXHRcdFx0XCJBc2lhL0pheWFwdXJhfExNVCArMDkgKzA5MzAgV0lUfC05bS5NIC05MCAtOXUgLTkwfDAxMjN8LTF1dTltLk0gc01NbS5NIEw0bnV8MjZlNFwiLFxuXHRcdFx0XCJBc2lhL0plcnVzYWxlbXxKTVQgSVNUIElEVCBJRERUfC0yay5FIC0yMCAtMzAgLTQwfDAxMjEyMTIxMjEyMTMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yNkJlay5FIFN5TWsuRSA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCAzTEIwIEVtMCBvcjAgMWNuMCAxZEIwIDE2bjAgMTBPMCAxamEwIDF0QzAgMTRvMCAxY00wIDFhMDAgMTFBMCAxTmEwIEFuMCAxTVAwIEFKMCAxS3AwIExDMCAxb28wIFdsMCBFUU4wIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgMWhCMCAxZFgwIDFlcDAgMWFMMCAxZU4wIDE3WDAgMW5mMCAxMXowIDF0QjAgMTlXMCAxZTEwIDE3YjAgMWVwMCAxZ0wwIDE4TjAgMWZ6MCAxZU4wIDE3YjAgMWdxMCAxZ24wIDE5ZDAgMWR6MCAxYzEwIDE3WDAgMWhCMCAxZ24wIDE5ZDAgMWR6MCAxYzEwIDE3WDAgMWtwMCAxZHowIDFjMTAgMWFMMCAxZU4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFyejAgVzEwIDFyejAgVzEwIDFyejAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFyejAgVzEwIDFyejAgVzEwIDFyejAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDB8ODFlNFwiLFxuXHRcdFx0XCJBc2lhL0thYnVsfCswNCArMDQzMHwtNDAgLTR1fDAxfC0xMFFzMHw0NmU1XCIsXG5cdFx0XHRcIkFzaWEvS2FtY2hhdGthfExNVCArMTEgKzEyICsxM3wtYXkuQSAtYjAgLWMwIC1kMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFTTEt5LkEgaXZYeS5BIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8MThlNFwiLFxuXHRcdFx0XCJBc2lhL0thcmFjaGl8TE1UICswNTMwICswNjMwICswNSBQS1QgUEtTVHwtNHMuYyAtNXUgLTZ1IC01MCAtNTAgLTYwfDAxMjEzNDU0NTQ1NHwtMnhvc3MuYyAxcU9LVy5jIDd6WDAgZXVwMCBMcU11IDFmeTAwIDFjTDAgZEsxMCAxMWIwIDE2MTAgMWpYMHwyNGU2XCIsXG5cdFx0XHRcIkFzaWEvVXJ1bXFpfExNVCArMDZ8LTVPLmsgLTYwfDAxfC0xR2d0Ty5rfDMyZTVcIixcblx0XHRcdFwiQXNpYS9LYXRobWFuZHV8TE1UICswNTMwICswNTQ1fC01Ri5nIC01dSAtNUp8MDEyfC0yMUpoRi5nIDJFR01iLmd8MTJlNVwiLFxuXHRcdFx0XCJBc2lhL0toYW5keWdhfExNVCArMDggKzA5ICsxMCArMTF8LTkyLmQgLTgwIC05MCAtYTAgLWIwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzNDM0MzQzNDM0MzQzNDM0MzJ8LTIxUTkyLmQgcEFwMi5kIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgcUswIHlOMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxN1YwIDd6RDB8NjZlMlwiLFxuXHRcdFx0XCJBc2lhL0tyYXNub3lhcnNrfExNVCArMDYgKzA3ICswOHwtNmIucSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjFIaWIucSBwckFiLnEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTBlNVwiLFxuXHRcdFx0XCJBc2lhL0t1YWxhX0x1bXB1cnxTTVQgKzA3ICswNzIwICswNzMwICswOSArMDh8LTZULnAgLTcwIC03ayAtN3UgLTkwIC04MHwwMTIzNDM1fC0yQmc2VC5wIDE3YW5ULnAgbDVYRSAxN2JPIDhGeXUgMXNvMXV8NzFlNVwiLFxuXHRcdFx0XCJBc2lhL0t1Y2hpbmd8TE1UICswNzMwICswOCArMDgyMCArMDl8LTdsLmsgLTd1IC04MCAtOGsgLTkwfDAxMjMyMzIzMjMyMzIzMjMyNDJ8LTFLSVRsLmsgZ0RiUC5rIDZ5bnUgQW5FIDFPMGsgQW5FIDFOQWsgQW5FIDFOQWsgQW5FIDFOQWsgQW5FIDFPMGsgQW5FIDFOQWsgQW5FIHBBayA4RnowfDEzZTRcIixcblx0XHRcdFwiQXNpYS9NYWNhdXxMTVQgQ1NUIENEVHwtN3kuayAtODAgLTkwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmxlODAgMVhPM3UgMXduMCBSZDAgMXduMCBSOXUgMXdxdSBVMTAgMXR6MCBUVnUgMXR6MCAxN2d1IDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY0p1IDFjTDAgMWNOMCAxZnowIDFjTjAgMWNPdSAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY0p1IDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMHw1N2U0XCIsXG5cdFx0XHRcIkFzaWEvTWFnYWRhbnxMTVQgKzEwICsxMSArMTJ8LWEzLmMgLWEwIC1iMCAtYzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzEyfC0xUGNhMy5jIGVVbzMuYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzQ3EwfDk1ZTNcIixcblx0XHRcdFwiQXNpYS9NYWthc3NhcnxMTVQgTU1UICswOCArMDkgV0lUQXwtN1YuQSAtN1YuQSAtODAgLTkwIC04MHwwMTIzNHwtMjFKalYuQSB2ZmMwIG15TFYuQSA4TUwwfDE1ZTVcIixcblx0XHRcdFwiQXNpYS9NYW5pbGF8KzA4ICswOXwtODAgLTkwfDAxMDEwMTAxMHwtMWtKSTAgQUwwIGNLMTAgNjVYMCBtWEIwIHZYMCBWSzEwIDFkYjB8MjRlNlwiLFxuXHRcdFx0XCJBc2lhL05pY29zaWF8TE1UIEVFVCBFRVNUfC0yZC5zIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFWYzJkLnMgMmEzY2QucyAxY0wwIDFxcDAgWHowIDE5QjAgMTlYMCAxZkIwIDFkYjAgMWNwMCAxY0wwIDFmQjAgMTlYMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMW8zMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDMyZTRcIixcblx0XHRcdFwiQXNpYS9Ob3Zva3V6bmV0c2t8TE1UICswNiArMDcgKzA4fC01TS5NIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVBjdE0uTSBlVUxNLk0gMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHw1NWU0XCIsXG5cdFx0XHRcIkFzaWEvTm92b3NpYmlyc2t8TE1UICswNiArMDcgKzA4fC01di5FIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIxUW52LkUgcEFGdi5FIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCBtbDAgT3MwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDRlTjB8MTVlNVwiLFxuXHRcdFx0XCJBc2lhL09tc2t8TE1UICswNSArMDYgKzA3fC00Ui51IC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMjRzUi51IHBNTFIudSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxMmU1XCIsXG5cdFx0XHRcIkFzaWEvT3JhbHxMTVQgKzAzICswNSArMDYgKzA0fC0zcC5vIC0zMCAtNTAgLTYwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MnwtMVBjM3AubyBlVW9wLm8gMjNDSzAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDFjTTAgSU0wIDFFTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMHwyN2U0XCIsXG5cdFx0XHRcIkFzaWEvUG9udGlhbmFrfExNVCBQTVQgKzA3MzAgKzA5ICswOCBXSVRBIFdJQnwtN2guayAtN2guayAtN3UgLTkwIC04MCAtODAgLTcwfDAxMjMyNDI1NnwtMnVhN2guayBYRTAwIG11bkwuayA4UmF1IDZrcHUgNFBYdSB4aGN1IFdxbnV8MjNlNFwiLFxuXHRcdFx0XCJBc2lhL1B5b25neWFuZ3xMTVQgS1NUIEpTVCBLU1R8LThuIC04dSAtOTAgLTkwfDAxMjMxM3wtMnVtOG4gOTdYUiAxbFR6dSAyT25jMCA2QkF1fDI5ZTVcIixcblx0XHRcdFwiQXNpYS9ReXp5bG9yZGF8TE1UICswNCArMDUgKzA2fC00bC5RIC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTFQYzRsLlEgZVVvbC5RIDIzQ0wwIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAzYW8wIDFFTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMHw3M2U0XCIsXG5cdFx0XHRcIkFzaWEvUmFuZ29vbnxSTVQgKzA2MzAgKzA5fC02by5MIC02dSAtOTB8MDEyMXwtMjFKaW8uTCBTbW5TLkwgN2o5dXw0OGU1XCIsXG5cdFx0XHRcIkFzaWEvU2FraGFsaW58TE1UICswOSArMTEgKzEyICsxMHwtOXUuTSAtOTAgLWIwIC1jMCAtYTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTJBR1Z1Lk0gMUJvTXUuTSAxcUZhMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAycEIwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JkMHw1OGU0XCIsXG5cdFx0XHRcIkFzaWEvU2FtYXJrYW5kfExNVCArMDQgKzA1ICswNnwtNHIuUiAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjNHIuUiBlVW9yLlIgMjNDTDAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMHwzNmU0XCIsXG5cdFx0XHRcIkFzaWEvU2VvdWx8TE1UIEtTVCBKU1QgS1NUIEtEVCBLRFR8LThyLlEgLTh1IC05MCAtOTAgLTl1IC1hMHwwMTIzMTQxNDE0MTQxNDE0MTM1MzUzfC0ydW04ci5RIDk3WFYuUSAxbTF6dSBrS28wIDJJMHUgT0wwIDFGQjAgUmIwIDFxTjAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDJhcDAgMTJGQnUgMTFBMCAxbzAwIDExQTB8MjNlNlwiLFxuXHRcdFx0XCJBc2lhL1NyZWRuZWtvbHltc2t8TE1UICsxMCArMTEgKzEyfC1hZS5RIC1hMCAtYjAgLWMwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGNhZS5RIGVVb2UuUSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwzNWUyXCIsXG5cdFx0XHRcIkFzaWEvVGFpcGVpfENTVCBKU1QgQ0RUfC04MCAtOTAgLTkwfDAxMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwfC0xaXc4MCBqb00wIDF5bzAgVHowIDFpcDAgMWpYMCAxY04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMTBOMCAxQlgwIDEwcDAgMXB6MCAxMHAwIDFwejAgMTBwMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxQkIwIE1MMCAxQmQwIE1MMCB1cTEwIDFkYjAgMWNOMCAxZGIwIDk3QjAgQUwwfDc0ZTVcIixcblx0XHRcdFwiQXNpYS9UYXNoa2VudHxMTVQgKzA1ICswNiArMDd8LTRCLmIgLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxfC0xUGM0Qi5iIGVVbkIuYiAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjB8MjNlNVwiLFxuXHRcdFx0XCJBc2lhL1RiaWxpc2l8VEJNVCArMDMgKzA0ICswNXwtMlguYiAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xUGMyWC5iIDFqVW5YLmIgV0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgMWNLMCAxY0wwIDFjTjAgMWNMMCAxY04wIDJwejAgMWNMMCAxZkIwIDNOejAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgQW4wIE9zMCBXTTB8MTFlNVwiLFxuXHRcdFx0XCJBc2lhL1RlaHJhbnxMTVQgVE1UICswMzMwICswNCArMDUgKzA0MzB8LTNwLkkgLTNwLkkgLTN1IC00MCAtNTAgLTR1fDAxMjM0MzI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yYnREcC5JIDFkM2MwIDFodUxULkkgVFh1IDFwejAgc04wIHZBdSAxY0wwIDFkQjAgMWVuMCBwTkIwIFVMMCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDY0cDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowfDE0ZTZcIixcblx0XHRcdFwiQXNpYS9UaGltcGh1fExNVCArMDUzMCArMDZ8LTVXLkEgLTV1IC02MHwwMTJ8LVN1NVcuQSAxQkdNcy5BfDc5ZTNcIixcblx0XHRcdFwiQXNpYS9Ub2t5b3xKU1QgSkRUfC05MCAtYTB8MDEwMTAxMDEwfC1RSkowIFJiMCAxbGQwIDE0bjAgMXpkMCBPbjAgMXpkMCBPbjB8MzhlNlwiLFxuXHRcdFx0XCJBc2lhL1RvbXNrfExNVCArMDYgKzA3ICswOHwtNUQuUCAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMU5oRC5QIHB4ekQuUCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIGNvMCAxYkIwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM1FwMHwxMGU1XCIsXG5cdFx0XHRcIkFzaWEvVWxhYW5iYWF0YXJ8TE1UICswNyArMDggKzA5fC03Ny53IC03MCAtODAgLTkwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMkFQSDcudyAyVWtvNy53IGNLbjAgMWRiMCAxZGQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2aEQwIDExejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCBrRXAwIDFjSjAgMWNQMCAxY0owfDEyZTVcIixcblx0XHRcdFwiQXNpYS9Vc3QtTmVyYXxMTVQgKzA4ICswOSArMTIgKzExICsxMHwtOXcuUyAtODAgLTkwIC1jMCAtYjAgLWEwfDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0NTQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NXwtMjFROXcuUyBwQXB3LlMgMjNDTDAgMWQ5MCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDE3VjAgN3pEMHw2NWUyXCIsXG5cdFx0XHRcIkFzaWEvVmxhZGl2b3N0b2t8TE1UICswOSArMTAgKzExfC04TC52IC05MCAtYTAgLWIwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xU0pJTC52IGl0WEwudiAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw2MGU0XCIsXG5cdFx0XHRcIkFzaWEvWWFrdXRza3xMTVQgKzA4ICswOSArMTB8LThDLlcgLTgwIC05MCAtYTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIxUThDLlcgcEFvQy5XIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDI4ZTRcIixcblx0XHRcdFwiQXNpYS9ZZWthdGVyaW5idXJnfExNVCBQTVQgKzA0ICswNSArMDZ8LTQyLnggLTNKLjUgLTQwIC01MCAtNjB8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yYWc0Mi54IDdtUWgucyBxQnZKLjUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTRlNVwiLFxuXHRcdFx0XCJBc2lhL1llcmV2YW58TE1UICswMyArMDQgKzA1fC0yVyAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGMyVyAxalVuVyBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDRSWDAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wfDEzZTVcIixcblx0XHRcdFwiQXRsYW50aWMvQXpvcmVzfEhNVCAtMDIgLTAxICswMCBXRVR8MVMudyAyMCAxMCAwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzQzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJsZFcwIGFQWDAgU3AwIExYMCAxdmMwIFRjMCAxdU0wIFNNMCAxdmMwIFRjMCAxdmMwIFNNMCAxdmMwIDY2MDAgMWNvMCAzRTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgM0kwMCAxN2MwIDFjTTAgMWNNMCAzRmMwIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgMXRBMCAxY00wIDFkYzAgMTQwMCBnTDAgSU0wIHMxMCBVMDAgZFgwIFJjMCBwZDAgUmMwIGdMMCBPbzAgcGQwIFJjMCBnTDAgT28wIHBkMCAxNG8wIDFjTTAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0NvMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBxSWwwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNMMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyNWU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0Jlcm11ZGF8TE1UIEFTVCBBRFR8NGouaSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xQm5SRS5HIDFMVGJFLkcgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY1ZTNcIixcblx0XHRcdFwiQXRsYW50aWMvQ2FuYXJ5fExNVCAtMDEgV0VUIFdFU1R8MTEuQSAxMCAwIC0xMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVV0YVcubyBYUEFXLm8gMWxBSzAgMWExMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDU0ZTRcIixcblx0XHRcdFwiQXRsYW50aWMvQ2FwZV9WZXJkZXxMTVQgLTAyIC0wMXwxeS40IDIwIDEwfDAxMjEyfC0ybGRXMCAxZUVvMCA3elgwIDFkamYwfDUwZTRcIixcblx0XHRcdFwiQXRsYW50aWMvRmFyb2V8TE1UIFdFVCBXRVNUfHIuNCAwIC0xMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMnVTbncuVSAyV2dvdy5VIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQ5ZTNcIixcblx0XHRcdFwiQXRsYW50aWMvTWFkZWlyYXxGTVQgLTAxICswMCArMDEgV0VUIFdFU1R8MTcuQSAxMCAwIC0xMCAwIC0xMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjEyMzIxMjMyMTIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMmxkWDAgYVBYMCBTcDAgTFgwIDF2YzAgVGMwIDF1TTAgU00wIDF2YzAgVGMwIDF2YzAgU00wIDF2YzAgNjYwMCAxY28wIDNFMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAzSTAwIDE3YzAgMWNNMCAxY00wIDNGYzAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCAxdEEwIDFjTTAgMWRjMCAxNDAwIGdMMCBJTTAgczEwIFUwMCBkWDAgUmMwIHBkMCBSYzAgZ0wwIE9vMCBwZDAgUmMwIGdMMCBPbzAgcGQwIDE0bzAgMWNNMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzQ28wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHFJbDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI3ZTRcIixcblx0XHRcdFwiQXRsYW50aWMvUmV5a2phdmlrfExNVCAtMDEgKzAwIEdNVHwxcyAxMCAwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzfC0ydVdtdyBtZmF3IDFCZDAgTUwwIDFMQjAgQ24wIDFMQjAgM2ZYMCBDMTAgSHJYMCAxY08wIExCMCAxRUwwIExBMCAxQzAwIE9vMCAxd28wIFJjMCAxd28wIFJjMCAxd28wIFJjMCAxemMwIE9vMCAxemMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDE0bzB8MTJlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9Tb3V0aF9HZW9yZ2lhfC0wMnwyMHwwfHwzMFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9TdGFubGV5fFNNVCAtMDQgLTAzIC0wMnwzUC5vIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmtKdzguQSAxMmJBOC5BIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgQ24wIDFDYzEwIFdMMCAxcUwwIFUxMCAxdHowIDJtTjAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDF0ejAgVTEwIDF0ejAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDF0ejAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTjAgVTEwIDF3bjAgUmQwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwfDIxZTJcIixcblx0XHRcdFwiQXVzdHJhbGlhL1N5ZG5leXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTRvMCAxbzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTFBMCAxbzAwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIDE0bzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDQwZTVcIixcblx0XHRcdFwiQXVzdHJhbGlhL0FkZWxhaWRlfEFDU1QgQUNEVHwtOXUgLWF1fDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2x0IHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBXTTAgMXFNMCBSYzAgMXpjMCBVMDAgMXRBMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIDE0bzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDExZTVcIixcblx0XHRcdFwiQXVzdHJhbGlhL0JyaXNiYW5lfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIEgxQTAgT28wIDF6YzAgT28wIDF6YzAgT28wfDIwZTVcIixcblx0XHRcdFwiQXVzdHJhbGlhL0Jyb2tlbl9IaWxsfEFDU1QgQUNEVHwtOXUgLWF1fDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2x0IHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxNG8wIDFvMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxOGUzXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9DdXJyaWV8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjlFODAgMTlYMCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFxTTAgV00wIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF3bzAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTFBMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxMUEwIDFvMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHw3NDZcIixcblx0XHRcdFwiQXVzdHJhbGlhL0RhcndpbnxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTB8LTI5M2x0IHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMHwxMmU0XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9FdWNsYXwrMDg0NSArMDk0NXwtOEogLTlKfDAxMDEwMTAxMDEwMTAxMDEwMTB8LTI5M2tJIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFnU3AwIE9vMCBsNUEwIE9vMCBpSkEwIEcwMCB6VTAwIElNMCAxcU0wIDExQTAgMW8wMCAxMUEwfDM2OFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvSG9iYXJ0fEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjlFODAgMTlYMCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCBWZkIwIDFjTTAgMW8wMCBSYzAgMXdvMCBSYzAgMXdvMCBVMDAgMXdvMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFxTTAgV00wIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF3bzAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTFBMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxMUEwIDFvMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHwyMWU0XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Mb3JkX0hvd2V8QUVTVCArMTAzMCArMTEzMCArMTF8LWEwIC1hdSAtYnUgLWIwfDAxMjEyMTIxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTN8cmFDMCAxemR1IFJiMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIFRYdSAxcU11IFdMdSAxdEF1IFdMdSAxdEF1IFRYdSAxdEF1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMTFBdSAxblh1IDFxTXUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDFxTXUgMTF6dSAxbzB1IFdMdSAxcU11IDE0bnUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxZnp1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWZBdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWZBdSAxY0x1IDFjTXUgMWNMdSAxY011fDM0N1wiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTGluZGVtYW58QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIEgxQTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wfDEwXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9NZWxib3VybmV8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxcU0wIDExQTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDExQTAgMW8wMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHwzOWU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9QZXJ0aHxBV1NUIEFXRFR8LTgwIC05MHwwMTAxMDEwMTAxMDEwMTAxMDEwfC0yOTNqWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZ1NwMCBPbzAgbDVBMCBPbzAgaUpBMCBHMDAgelUwMCBJTTAgMXFNMCAxMUEwIDFvMDAgMTFBMHwxOGU1XCIsXG5cdFx0XHRcIkNFVHxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIlBhY2lmaWMvRWFzdGVyfEVNVCAtMDcgLTA2IC0wNXw3aC5zIDcwIDYwIDUwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMXVTZ0cudyAxczRJRy53IFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAycEEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDB8MzBlMlwiLFxuXHRcdFx0XCJDU1Q2Q0RUfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJFRVR8RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8aERCMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIixcblx0XHRcdFwiRXVyb3BlL0R1YmxpbnxETVQgSVNUIEdNVCBCU1QgSVNUfHAubCAteS5EIDAgLTEwIC0xMHwwMTIzMjMyMzIzMjMyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MnwtMmF4OXkuRCBSYzAgMWZ6eS5EIDE0TTAgMWZjMCAxZzAwIDFjbzAgMWRjMCAxY28wIDFvbzAgMTQwMCAxZGMwIDE5QTAgMWlvMCAxaW8wIFdNMCAxbzAwIDE0bzAgMW8wMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFxTTAgRGMwIGc2MDAgMTRvMCAxd28wIDE3YzAgMWlvMCAxMUEwIDFvMDAgMTdjMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWxjMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIElNMCA5MG8wIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkVTVHxFU1R8NTB8MHxcIixcblx0XHRcdFwiRVNUNUVEVHxFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjF0MCAxblgwIDExQjAgMW5YMCBTZ04wIDh4NDAgaXYwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVHwwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtMXwrMDF8LTEwfDB8XCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fCsxMHwtYTB8MHx8MjVlNFwiLFxuXHRcdFx0XCJQYWNpZmljL1BvaG5wZWl8KzExfC1iMHwwfHwzNGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfCsxMnwtYzB8MHx8MjllM1wiLFxuXHRcdFx0XCJFdGMvR01ULTEzfCsxM3wtZDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0xNHwrMTR8LWUwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtMnwrMDJ8LTIwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtM3wrMDN8LTMwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtNHwrMDR8LTQwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtNXwrMDV8LTUwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtNnwrMDZ8LTYwfDB8XCIsXG5cdFx0XHRcIkluZGlhbi9DaHJpc3RtYXN8KzA3fC03MHwwfHwyMWUyXCIsXG5cdFx0XHRcIkV0Yy9HTVQtOHwrMDh8LTgwfDB8XCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFsYXV8KzA5fC05MHwwfHwyMWUzXCIsXG5cdFx0XHRcIkV0Yy9HTVQrMXwtMDF8MTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCsxMHwtMTB8YTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCsxMXwtMTF8YjB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCsxMnwtMTJ8YzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCszfC0wM3wzMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzR8LTA0fDQwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrNXwtMDV8NTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs2fC0wNnw2MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzd8LTA3fDcwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrOHwtMDh8ODB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs5fC0wOXw5MHwwfFwiLFxuXHRcdFx0XCJFdGMvVUNUfFVDVHwwfDB8XCIsXG5cdFx0XHRcIkV0Yy9VVEN8VVRDfDB8MHxcIixcblx0XHRcdFwiRXVyb3BlL0Ftc3RlcmRhbXxBTVQgTlNUICswMTIwICswMDIwIENFU1QgQ0VUfC1qLncgLTFqLncgLTFrIC1rIC0yMCAtMTB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1fC0yYUZjai53IDExYjAgMWlQMCAxMUEwIDFpbzAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxY28wIDFpbzAgMXlvMCBQYzAgMWEwMCAxZkEwIDFCYzAgTW8wIDF0YzAgVW8wIDF0QTAgVTAwIDF1bzAgVzAwIDFzMDAgVkEwIDFzbzAgVmMwIDFzTTAgVU0wIDF3bzAgUmMwIDF1MDAgV28wIDFyQTAgVzAwIDFzMDAgVkEwIDFzTTAgVU0wIDF3MDAgZlYwIEJDWC53IDF0QTAgVTAwIDF1MDAgV28wIDFzbTAgNjAxayBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxNk0wIDFnTU0wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxNmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9BbmRvcnJhfFdFVCBDRVQgQ0VTVHwwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC1VQkEwIDF4SU4wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NzllM1wiLFxuXHRcdFx0XCJFdXJvcGUvQXN0cmFraGFufExNVCArMDMgKzA0ICswNXwtM2MuYyAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTFQY3JjLmMgZVVNYy5jIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JkMFwiLFxuXHRcdFx0XCJFdXJvcGUvQXRoZW5zfEFNVCBFRVQgRUVTVCBDRVNUIENFVHwtMXkuUSAtMjAgLTMwIC0yMCAtMTB8MDEyMTIzNDM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTYxeC5RIENOYnguUSBtbjAga1UxMCA5YjAgM0VzMCBYYTAgMWZiMCAxZGQwIGszWDAgTnowIFNDcDAgMXZjMCBTTzAgMWNNMCAxYTAwIDFhbzAgMWZjMCAxYTEwIDFmRzAgMWNnMCAxZFgwIDFiWDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzNWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258R01UIEJTVCBCRFNUfDAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIxMjEyMTIxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXhhMCBSYzAgMWZBMCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCAyUnowIERjMCAxemMwIE9vMCAxemMwIFJjMCAxd28wIDE3YzAgMWlNMCBGQTAgeEIwIDFmQTAgMWEwMCAxNG8wIGJiMCBMQTAgeEIwIFJjMCAxd28wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFhMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgSU0wIDkwbzAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTF6MCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEwZTZcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTE5UkMwIDNJUDAgV00wIDFmQTAgMWNNMCAxY00wIDFyYzAgUW8wIDF2bW8wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9CZXJsaW58Q0VUIENFU1QgQ0VNVHwtMTAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMTIxMDEwMTIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCBrTDAgTmMwIG0xMCBXTTAgMWFvMCAxY3AwIGRYMCBqejAgRGQwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWVoQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQxZTVcIixcblx0XHRcdFwiRXVyb3BlL1ByYWd1ZXxDRVQgQ0VTVCBHTVR8LTEwIC0yMCAwfDAxMDEwMTAxMDEwMTAxMDEwMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMXFNMCAxMWMwIG1wMCB4QTAgbW4wIDE3YzAgMWlvMCAxN2MwIDFmYzAgMWFvMCAxYk5jMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEzZTVcIixcblx0XHRcdFwiRXVyb3BlL0JydXNzZWxzfFdFVCBDRVQgQ0VTVCBXRVNUfDAgLTEwIC0yMCAtMTB8MDEyMTIxMjEwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmVoYzAgM3pYMCAxMWMwIDFpTzAgMTFBMCAxbzAwIDExQTAgbXkwIEljMCAxcU0wIFJjMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxaW8wIDE3YzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEzMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCB5MDAgNVduMCBXTTAgMWZBMCAxY00wIDE2TTAgMWlNMCAxNk0wIDFDMDAgVW8wIDFlZW8wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyMWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9CdWNoYXJlc3R8Qk1UIEVFVCBFRVNUfC0xSS5vIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMXhBcEkubyAyMExJLm8gUkEwIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxQXhjMCBPbjAgMWZBMCAxYTEwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY0swIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUUwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTllNVwiLFxuXHRcdFx0XCJFdXJvcGUvQnVkYXBlc3R8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxaXAwIDE3YjAgMW9wMCAxdGIwIFEybTAgM05lMCBXTTAgMWZBMCAxY00wIDFjTTAgMW9KMCAxZGMwIDEwMzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxaU0wIDFmQTAgOEhhMCBSYjAgMXdOMCBSYjAgMUJCMCBMejAgMUMyMCBMQjAgU05YMCAxYTEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlNVwiLFxuXHRcdFx0XCJFdXJvcGUvWnVyaWNofENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTE5TGMwIDExQTAgMW8wMCAxMUEwIDF4RzEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM4ZTRcIixcblx0XHRcdFwiRXVyb3BlL0NoaXNpbmF1fENNVCBCTVQgRUVUIEVFU1QgQ0VTVCBDRVQgTVNLIE1TRHwtMVQgLTFJLm8gLTIwIC0zMCAtMjAgLTEwIC0zMCAtNDB8MDEyMzIzMjMyMzIzMjMyMzIzMjM0NTQ1NDY3Njc2NzY3Njc2NzY3Njc2NzY3MzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yNmpkVCB3R01hLkEgMjBMSS5vIFJBMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMjdBMCAyZW4wIDM5ZzAgV00wIDFmQTAgMWNNMCBWOTAgMXQ3ejAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgZ0wwIFdPMCAxY00wIDFjTTAgMWNLMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUQwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjdlNFwiLFxuXHRcdFx0XCJFdXJvcGUvQ29wZW5oYWdlbnxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhekMwIFR6MCBWdU8wIDYwcTAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgUzAwIDFIQTAgTmMwIDFDMDAgRGMwIDFOYzAgQW8wIDFoNUEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9HaWJyYWx0YXJ8R01UIEJTVCBCRFNUIENFVCBDRVNUfDAgLTEwIC0yMCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjEyMTIxMjEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMmF4YTAgUmMwIDFmQTAgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgMlJ6MCBEYzAgMXpjMCBPbzAgMXpjMCBSYzAgMXdvMCAxN2MwIDFpTTAgRkEwIHhCMCAxZkEwIDFhMDAgMTRvMCBiYjAgTEEwIHhCMCBSYzAgMXdvMCAxMUEwIDFvMDAgMTdjMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWxjMCAxN2MwIDFmQTAgMTBKejAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzMGUzXCIsXG5cdFx0XHRcIkV1cm9wZS9IZWxzaW5raXxITVQgRUVUIEVFU1R8LTFELk4gLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xV3VORC5OIE9VTEQuTiAxZEEwIDF4R3EwIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL0thbGluaW5ncmFkfENFVCBDRVNUIENFVCBDRVNUIE1TSyBNU0QgRUVTVCBFRVQgKzAzfC0xMCAtMjAgLTIwIC0zMCAtMzAgLTQwIC0zMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAyMzI0NTQ1NDU0NTQ1NDU0NTQ1NDY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3ODd8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIEFtMCBMYjAgMWVuMCBvcDAgMXBOejAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw0NGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9LaWV2fEtNVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUfC0yMi40IC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwfDAxMjM0MzQyNTI1MjUyNTI1MjUyNTI1MjUyNTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjF8LTFQYzIyLjQgZVVvMi40IHJuejAgMkhnMCBXTTAgMWZBMCBkYTAgMXY0bTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgRGIwIDMyMjAgMWNLMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzRlNVwiLFxuXHRcdFx0XCJFdXJvcGUvS2lyb3Z8TE1UICswMyArMDQgKzA1fC0zaS5NIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yMldNMCBxSDkwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NDhlNFwiLFxuXHRcdFx0XCJFdXJvcGUvTGlzYm9ufExNVCBXRVQgV0VTVCBXRU1UIENFVCBDRVNUfEEuSiAwIC0xMCAtMjAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjEyMzIxMjMyMTIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjQ1NDU0NTQyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsZTAwIGFQWDAgU3AwIExYMCAxdmMwIFRjMCAxdU0wIFNNMCAxdmMwIFRjMCAxdmMwIFNNMCAxdmMwIDY2MDAgMWNvMCAzRTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgM0kwMCAxN2MwIDFjTTAgMWNNMCAzRmMwIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgMXRBMCAxY00wIDFkYzAgMTQwMCBnTDAgSU0wIHMxMCBVMDAgZFgwIFJjMCBwZDAgUmMwIGdMMCBPbzAgcGQwIFJjMCBnTDAgT28wIHBkMCAxNG8wIDFjTTAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0NvMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBwdnkwIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI3ZTVcIixcblx0XHRcdFwiRXVyb3BlL0x1eGVtYm91cmd8TE1UIENFVCBDRVNUIFdFVCBXRVNUIFdFU1QgV0VUfC1vLkEgLTEwIC0yMCAwIC0xMCAtMjAgLTEwfDAxMjEyMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1NjU2NTEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJERzBvLkEgdDZtby5BIFRCMCAxblgwIFVwMCAxbzIwIDExQTAgclcwIENNMCAxcVAwIFI5MCAxRU8wIFVLMCAxdTIwIDEwbTAgMWlwMCAxaW4wIDE3ZTAgMTlXMCAxZkIwIDFkYjAgMWNwMCAxaW4wIDE3ZDAgMWZ6MCAxYTEwIDFpbjAgMWExMCAxaW4wIDE3ZjAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCB2QTAgNjBMMCBXTTAgMWZBMCAxY00wIDE3YzAgMWlvMCAxNk0wIDFDMDAgVW8wIDFlZW8wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw1NGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9NYWRyaWR8V0VUIFdFU1QgV0VNVCBDRVQgQ0VTVHwwIC0xMCAtMjAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEyMTAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTI1VGQwIDE5QjAgMWNMMCAxZGQwIGIxejAgMThwMCAzSFgwIDE3ZDAgMWZ6MCAxYTEwIDFpbzAgMWEwMCAxaW4wIDE3ZDAgaUluMCBIZDAgMWNMMCBiYjAgMTIwMCAyczIwIDE0bjAgNWFMMCBNcDAgMXZ6MCAxN2QwIDFpbjAgMTdkMCAxaW4wIDE3ZDAgMWluMCAxN2QwIDZoWDAgMTFCMCBYSFgwIDFhMTAgMWZ6MCAxYTEwIDE5WDAgMWNOMCAxZnowIDFhMTAgMWZDMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw2MmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9NYWx0YXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhckIwIEx6MCAxY04wIDFkYjAgMTQxMCAxb24wIFdwMCAxcUwwIDE3ZDAgMWNMMCBNM0IwIDVNMjAgV00wIDFmQTAgMWNvMCAxN2MwIDFpTTAgMTZtMCAxZGUwIDFsYzAgMTRtMCAxbGMwIFdPMCAxcU0wIEdUVzAgT24wIDFDMTAgTEEwIDFDMDAgTEEwIDFFTTAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDFjbzAgMWNNMCAxbEEwIFhjMCAxcXEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFpTjAgMTl6MCAxZkIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQyZTRcIixcblx0XHRcdFwiRXVyb3BlL01pbnNrfE1NVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUICswM3wtMU8gLTIwIC0zMCAtMjAgLTEwIC00MCAtMzAgLTMwfDAxMjM0MzQzMjUyNTI1MjUyNTI1MjUyNTI1MjYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE3fC0xUGMxTyBlVW5PIHFOWDAgM2dRMCBXTTAgMWZBMCAxY00wIEFsMCAxdHNuMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0ZjMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wfDE5ZTVcIixcblx0XHRcdFwiRXVyb3BlL01vbmFjb3xQTVQgV0VUIFdFU1QgV0VNVCBDRVQgQ0VTVHwtOS5sIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0ybmNvOS5sIGNOYjkubCBIQTAgMTlBMCAxaU0wIDExYzAgMW9vMCBXbzAgMXJjMCBRTTAgMUVNMCBVTTAgMXUwMCAxMG8wIDFpbzAgMXdvMCBSYzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERmMCAyUlYwIDExejAgMTFCMCAxemUwIFdNMCAxZkEwIDFjTTAgMWZhMCAxYXEwIDE2TTAgMWVrbjAgMWNMMCAxZkMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzOGUzXCIsXG5cdFx0XHRcIkV1cm9wZS9Nb3Njb3d8TU1UIE1NVCBNU1QgTURTVCBNU0QgTVNLICswNSBFRVQgRUVTVCBNU0t8LTJ1LmggLTJ2LmogLTN2LmogLTR2LmogLTQwIC0zMCAtNTAgLTIwIC0zMCAtNDB8MDEyMTMyMzQ1NDY0NTc1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU4NzU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTk1fC0yYWcydS5oIDJweVcuVyAxYkEwIDExWDAgR04wIDFIYjAgYzR2LmogaWswIDNEQTAgZHowIDE1QTAgYzEwIDJxMTAgaU0xMCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDE2ZTZcIixcblx0XHRcdFwiRXVyb3BlL1BhcmlzfFBNVCBXRVQgV0VTVCBDRVNUIENFVCBXRU1UfC05LmwgMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzQzNDM1MjU0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNHwtMm5jbzgubCBjTmI4LmwgSEEwIDE5QTAgMWlNMCAxMWMwIDFvbzAgV28wIDFyYzAgUU0wIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDF3bzAgUmMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEZjAgSWswIDVNMzAgV00wIDFmQTAgMWNNMCBWeDAgaEIwIDFhcTAgMTZNMCAxZWtuMCAxY0wwIDFmQzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDExZTZcIixcblx0XHRcdFwiRXVyb3BlL1JpZ2F8Uk1UIExTVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUfC0xQS55IC0yQS55IC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwfDAxMDEwMjM0NTQ1NDUzNjM2MzYzNjM2MzYzNjM2MzcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MnwtMjVUekEueSAxMUEwIDFpTTAga28wIGdXbTAgeURYQS55IDJiWDAgM2ZFMCBXTTAgMWZBMCAxY00wIDFjTTAgNG0wIDFzTHkwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgM29vMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw2NGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFyQjAgTHowIDFjTjAgMWRiMCAxNDEwIDFvbjAgV3AwIDFxTDAgMTdkMCAxY0wwIE0zQjAgNU0yMCBXTTAgMWZBMCAxY00wIDE2TTAgMWlNMCAxNm0wIDFkZTAgMWxjMCAxNG0wIDFsYzAgV08wIDFxTTAgR1RXMCBPbjAgMUMxMCBMQTAgMUMwMCBMQTAgMUVNMCBMQTAgMUMwMCBMQTAgMXpjMCBPbzAgMUMwMCBPbzAgMUMwMCBMQTAgMXpjMCBPbzAgMUMwMCBMQTAgMUMwMCBMQTAgMXpjMCBPbzAgMUMwMCBPbzAgMXpjMCBPbzAgMWZDMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzllNVwiLFxuXHRcdFx0XCJFdXJvcGUvU2FtYXJhfExNVCArMDMgKzA0ICswNXwtM2suayAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0yMldNMCBxSDkwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDJ5MTAgMTRtMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL1NhcmF0b3Z8TE1UICswMyArMDQgKzA1fC0zNC5pIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDU4MTBcIixcblx0XHRcdFwiRXVyb3BlL1NpbWZlcm9wb2x8U01UIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1QgTVNLfC0yZyAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMCAtNDB8MDEyMzQzNDMyNTI1MjUyNTI1MjUyNTI1MjUyMTYxNjE2NTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTcyfC0xUGMyZyBlVW9nIHJFbjAgMnFzMCBXTTAgMWZBMCAxY00wIDNWMCAxdTBMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMVEwMCA0ZUwwIDFjTDAgMWNOMCAxY0wwIDFjTjAgZFgwIFdMMCAxY04wIDFjTDAgMWZCMCAxbzMwIDExQjAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMXowIDFuVzB8MzNlNFwiLFxuXHRcdFx0XCJFdXJvcGUvU29maWF8RUVUIENFVCBDRVNUIEVFU1R8LTIwIC0xMCAtMjAgLTMwfDAxMjEyMTAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwfC0xNjhMMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxbUtIMCAxZGQwIDFmYjAgMWFwMCAxZmIwIDFhMjAgMWZ5MCAxYTMwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNLMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFFMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL1N0b2NraG9sbXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXpDMCBUQjAgMnlEZTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE1ZTVcIixcblx0XHRcdFwiRXVyb3BlL1RhbGxpbm58VE1UIENFVCBDRVNUIEVFVCBNU0sgTVNEIEVFU1R8LTFEIC0xMCAtMjAgLTIwIC0zMCAtNDAgLTMwfDAxMjEwMzQyMTIxMjQ1NDU0NTQ1NDU0NTQ1NDU0NjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2M3wtMjZvTkQgdGVEIDExQTAgMVRhMCA0clhsIEtTTEQgMkZYMCAySmcwIFdNMCAxZkEwIDFjTTAgMThKMCAxc1RYMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMTAgMTFBMCAxcU0wIDVRTTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MWU0XCIsXG5cdFx0XHRcIkV1cm9wZS9UaXJhbmV8TE1UIENFVCBDRVNUfC0xai5rIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbEJqLmsgMTRwY2ouayA1TEMwIFdNMCA0TTAgMWZDSzAgMTBuMCAxb3AwIDExejAgMXBkMCAxMXowIDFxTjAgV0wwIDFxcDAgWGIwIDFxcDAgWGIwIDFxcDAgMTF6MCAxbEIwIDExejAgMXFOMCAxMXowIDFpTjAgMTZuMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQyZTRcIixcblx0XHRcdFwiRXVyb3BlL1VseWFub3Zza3xMTVQgKzAzICswNCArMDUgKzAyfC0zZC5BIC0zMCAtNDAgLTUwIC0yMHwwMTIzMjMyMzIzMjMyMzIzMjMyMTIxNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JkMFwiLFxuXHRcdFx0XCJFdXJvcGUvVXpoZ29yb2R8Q0VUIENFU1QgTVNLIE1TRCBFRVQgRUVTVHwtMTAgLTIwIC0zMCAtNDAgLTIwIC0zMHwwMTAxMDEwMjMyMzIzMjMyMzIzMjMyMzIzMjA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTFjcUwwIDZpMDAgV00wIDFmQTAgMWNNMCAxbWwwIDFDcDAgMXIzVzAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFRMDAgMU5mMCAycHcwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY1EwIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMWU0XCIsXG5cdFx0XHRcIkV1cm9wZS9WaWVubmF8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgM0tNMCAxNG8wIExBMDAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCA0MDAgMnFNMCAxYTAwIDFjTTAgMWNNMCAxaW8wIDE3YzAgMWdIYTAgMTlYMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE4ZTVcIixcblx0XHRcdFwiRXVyb3BlL1ZpbG5pdXN8V01UIEtNVCBDRVQgRUVUIE1TSyBDRVNUIE1TRCBFRVNUfC0xbyAtMXouQSAtMTAgLTIwIC0zMCAtMjAgLTQwIC0zMHwwMTIzMjQ1MjUyNTQ2NDY0NjQ2NDY0NjQ2NDY0NzM3MzczNzM3MzczNzM3MzczNTI1MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzN8LTI5M2RvIDZJTE0ubyAxT296LkEgenowIE1mZDAgMjlXMCAzaXMwIFdNMCAxZkEwIDFjTTAgTFYwIDF0Z0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQjAgMW8wMCAxMUEwIDFxTTAgOGlvMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NTRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVm9sZ29ncmFkfExNVCArMDMgKzA0ICswNXwtMlYuRSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjFJcVYuRSBwc0xWLkUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxMGU1XCIsXG5cdFx0XHRcIkV1cm9wZS9XYXJzYXd8V01UIENFVCBDRVNUIEVFVCBFRVNUfC0xbyAtMTAgLTIwIC0yMCAtMzB8MDEyMTIxMjM0MzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yY3RkbyAxTFhvIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCAxb24wIDExQTAgNnp5MCBIV1AwIDVJTTAgV00wIDFmQTAgMWNNMCAxZHowIDFtTDAgMWVuMCAxNUIwIDFhcTAgMW5BMCAxMUEwIDFpbzAgMTdjMCAxZkEwIDFhMDAgaURYMCBMQTAgMWNNMCAxY00wIDFDMDAgT28wIDFjTTAgMWNNMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxQzAwIExBMCB1c28wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxN2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9aYXBvcm96aHllfCswMjIwIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTJrIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwfDAxMjM0MzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxfC0xUGMyayBlVW9rIHJkYjAgMlJFMCBXTTAgMWZBMCA4bTAgMXY5YTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjSzAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NzdlNFwiLFxuXHRcdFx0XCJIU1R8SFNUfGEwfDB8XCIsXG5cdFx0XHRcIkluZGlhbi9DaGFnb3N8TE1UICswNSArMDZ8LTROLkUgLTUwIC02MHwwMTJ8LTJ4b3NOLkUgM0FHTE4uRXwzMGUyXCIsXG5cdFx0XHRcIkluZGlhbi9Db2Nvc3wrMDYzMHwtNnV8MHx8NTk2XCIsXG5cdFx0XHRcIkluZGlhbi9LZXJndWVsZW58LTAwICswNXwwIC01MHwwMXwtTUcwMHwxMzBcIixcblx0XHRcdFwiSW5kaWFuL01haGV8TE1UICswNHwtM0YuTSAtNDB8MDF8LTJ5TzNGLk18NzllM1wiLFxuXHRcdFx0XCJJbmRpYW4vTWFsZGl2ZXN8TU1UICswNXwtNFMgLTUwfDAxfC1vbGdTfDM1ZTRcIixcblx0XHRcdFwiSW5kaWFuL01hdXJpdGl1c3xMTVQgKzA0ICswNXwtM08gLTQwIC01MHwwMTIxMjF8LTJ4b3JPIDM0dW5PIDE0TDAgMTJrcjAgMTF6MHwxNWU0XCIsXG5cdFx0XHRcIkluZGlhbi9SZXVuaW9ufExNVCArMDR8LTNGLlEgLTQwfDAxfC0ybURERi5RfDg0ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ld2FqYWxlaW58KzExIC0xMiArMTJ8LWIwIGMwIC1jMHwwMTJ8LUFYMCBXOVgwfDE0ZTNcIixcblx0XHRcdFwiTUVUfE1FVCBNRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIixcblx0XHRcdFwiTVNUfE1TVHw3MHwwfFwiLFxuXHRcdFx0XCJNU1Q3TURUfE1TVCBNRFQgTVdUIE1QVHw3MCA2MCA2MCA2MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJQYWNpZmljL0NoYXRoYW18KzEyMTUgKzEyNDUgKzEzNDV8LWNmIC1jSiAtZEp8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC1XcUFmIDFhZGVmIElNMCAxQzAwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxcU0wIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwfDYwMFwiLFxuXHRcdFx0XCJQYWNpZmljL0FwaWF8TE1UIC0xMTMwIC0xMSAtMTAgKzE0ICsxM3xicS5VIGJ1IGIwIGEwIC1lMCAtZDB8MDEyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJuRE14LjQgMXlXMDMuNCAyclJidSAxZmYwIDFhMDAgQ0kwIEFRMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHwzN2UzXCIsXG5cdFx0XHRcIlBhY2lmaWMvQm91Z2FpbnZpbGxlfCsxMCArMDkgKzExfC1hMCAtOTAgLWIwfDAxMDJ8LTE2V3kwIDdDTjAgMk1RcDB8MThlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0VmYXRlfExNVCArMTEgKzEyfC1iZC5nIC1iMCAtYzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmw5bmQuZyAyU3pjZC5nIDFjTDAgMW9OMCAxMEwwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgTHowIDFOZDAgQW4wfDY2ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9FbmRlcmJ1cnl8LTEyIC0xMSArMTN8YzAgYjAgLWQwfDAxMnxuSWMwIEI3WDB8MVwiLFxuXHRcdFx0XCJQYWNpZmljL0Zha2FvZm98LTExICsxM3xiMCAtZDB8MDF8MUdmbjB8NDgzXCIsXG5cdFx0XHRcIlBhY2lmaWMvRmlqaXxMTVQgKzEyICsxM3wtYlQuSSAtYzAgLWQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJiVXpULkkgM204TlQuSSBMQTAgMUVNMCBJTTAgbkpjMCBMQTAgMW8wMCBSYzAgMXdvMCBBbzAgMU5jMCBBbzAgMVEwMCB4ejAgMVNOMCB1TTAgMVNNMCB1TTAgMVZBMCBzMDAgMVZBMCBzMDAgMVZBMCB1TTAgMVNNMCB1TTAgMVNNMCB1TTAgMVZBMCBzMDAgMVZBMCBzMDAgMVZBMCBzMDAgMVZBMCB1TTAgMVNNMCB1TTAgMVNNMCB1TTAgMVZBMCBzMDAgMVZBMCBzMDAgMVZBMCB1TTAgMVNNMCB1TTAgMVNNMCB1TTAgMVZBMCBzMDAgMVZBMCBzMDAgMVZBMCBzMDAgMVZBMCB1TTAgMVNNMCB1TTAgMVNNMCB1TTB8ODhlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0dhbGFwYWdvc3xMTVQgLTA1IC0wNnw1Vy5vIDUwIDYwfDAxMjEyfC0xeVZTMS5BIDJkVHoxLkEgZ05kMCByejB8MjVlM1wiLFxuXHRcdFx0XCJQYWNpZmljL0dhbWJpZXJ8TE1UIC0wOXw4WC5NIDkwfDAxfC0yam9mMC5jfDEyNVwiLFxuXHRcdFx0XCJQYWNpZmljL0d1YWRhbGNhbmFsfExNVCArMTF8LWFELk0gLWIwfDAxfC0yam95RC5NfDExZTRcIixcblx0XHRcdFwiUGFjaWZpYy9HdWFtfEdTVCBDaFNUfC1hMCAtYTB8MDF8MWZwcTB8MTdlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0hvbm9sdWx1fEhTVCBIRFQgSFNUfGF1IDl1IGEwfDAxMDEwMnwtMXRoTHUgOHgwIGxlZjAgOFB6MCA0NnAwfDM3ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9LaXJpdGltYXRpfC0xMDQwIC0xMCArMTR8YUUgYTAgLWUwfDAxMnxuSWFFIEI3WGt8NTFlMlwiLFxuXHRcdFx0XCJQYWNpZmljL0tvc3JhZXwrMTEgKzEyfC1iMCAtYzB8MDEwfC1BWDAgMWJkejB8NjZlMlwiLFxuXHRcdFx0XCJQYWNpZmljL01hanVyb3wrMTEgKzEyfC1iMCAtYzB8MDF8LUFYMHwyOGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvTWFycXVlc2FzfExNVCAtMDkzMHw5aSA5dXwwMXwtMmpvZUd8ODZlMlwiLFxuXHRcdFx0XCJQYWNpZmljL1BhZ29fUGFnb3xMTVQgU1NUfGJtLk0gYjB8MDF8LTJuRE1CLmN8MzdlMlwiLFxuXHRcdFx0XCJQYWNpZmljL05hdXJ1fExNVCArMTEzMCArMDkgKzEyfC1iNy5FIC1idSAtOTAgLWMwfDAxMjEzfC0xWGRuNy5FIFB2ekIuRSA1UkN1IDFvdUp1fDEwZTNcIixcblx0XHRcdFwiUGFjaWZpYy9OaXVlfC0xMTIwIC0xMTMwIC0xMXxiayBidSBiMHwwMTJ8LUtmTUUgMTd5MGF8MTJlMlwiLFxuXHRcdFx0XCJQYWNpZmljL05vcmZvbGt8KzExMTIgKzExMzAgKzEyMzAgKzExfC1iYyAtYnUgLWN1IC1iMHwwMTIxM3wtS2diYyBXMDFHIE9uMCAxQ09wMHwyNWU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvTm91bWVhfExNVCArMTEgKzEyfC1iNS5NIC1iMCAtYzB8MDEyMTIxMjF8LTJsOW41Lk0gMkVxTTUuTSB4WDAgMVBCMCB5bjAgSGVQMCBBbzB8OThlM1wiLFxuXHRcdFx0XCJQYWNpZmljL1BpdGNhaXJufC0wODMwIC0wOHw4dSA4MHwwMXwxOFZrdXw1NlwiLFxuXHRcdFx0XCJQYWNpZmljL1Jhcm90b25nYXwtMTAzMCAtMDkzMCAtMTB8YXUgOXUgYTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfGx5V3UgSUwwIDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251fDEzZTNcIixcblx0XHRcdFwiUGFjaWZpYy9UYWhpdGl8TE1UIC0xMHw5Vy5nIGEwfDAxfC0yam9lMS5JfDE4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ub25nYXRhcHV8KzEyMjAgKzEzICsxNHwtY2sgLWQwIC1lMHwwMTIxMjEyMTIxfC0xYUIwayAybjVkayAxNUEwIDF3bzAgeHowIDFRMTAgeHowIHpXTjAgczAwfDc1ZTNcIixcblx0XHRcdFwiUFNUOFBEVHxQU1QgUERUIFBXVCBQUFR8ODAgNzAgNzAgNzB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFxMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MTAgaXkwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiV0VUfFdFVCBXRVNUfDAgLTEwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHxoREIwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiXG5cdFx0XSxcblx0XHRcImxpbmtzXCI6IFtcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0JhbWFrb1wiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQmFuanVsXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Db25ha3J5XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9EYWthclwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvRnJlZXRvd25cIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0xvbWVcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL05vdWFrY2hvdHRcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL091YWdhZG91Z291XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9UaW1idWt0dVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBdGxhbnRpYy9TdF9IZWxlbmFcIixcblx0XHRcdFwiQWZyaWNhL0NhaXJvfEVneXB0XCIsXG5cdFx0XHRcIkFmcmljYS9Kb2hhbm5lc2J1cmd8QWZyaWNhL01hc2VydVwiLFxuXHRcdFx0XCJBZnJpY2EvSm9oYW5uZXNidXJnfEFmcmljYS9NYmFiYW5lXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvQmFuZ3VpXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvQnJhenphdmlsbGVcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9Eb3VhbGFcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9LaW5zaGFzYVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0xpYnJldmlsbGVcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9MdWFuZGFcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9NYWxhYm9cIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9OaWFtZXlcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9Qb3J0by1Ob3ZvXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0JsYW50eXJlXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0J1anVtYnVyYVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9HYWJvcm9uZVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9IYXJhcmVcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvS2lnYWxpXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0x1YnVtYmFzaGlcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvTHVzYWthXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9BZGRpc19BYmFiYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQXNtYXJhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Bc21lcmFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0Rhcl9lc19TYWxhYW1cIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0RqaWJvdXRpXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9LYW1wYWxhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Nb2dhZGlzaHVcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8SW5kaWFuL0FudGFuYW5hcml2b1wiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxJbmRpYW4vQ29tb3JvXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEluZGlhbi9NYXlvdHRlXCIsXG5cdFx0XHRcIkFmcmljYS9Ucmlwb2xpfExpYnlhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQWRha3xBbWVyaWNhL0F0a2FcIixcblx0XHRcdFwiQW1lcmljYS9BZGFrfFVTL0FsZXV0aWFuXCIsXG5cdFx0XHRcIkFtZXJpY2EvQW5jaG9yYWdlfFVTL0FsYXNrYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9CdWVub3NfQWlyZXN8QW1lcmljYS9CdWVub3NfQWlyZXNcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ2F0YW1hcmNhfEFtZXJpY2EvQXJnZW50aW5hL0NvbW9kUml2YWRhdmlhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxBbWVyaWNhL0NhdGFtYXJjYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfEFtZXJpY2EvQ29yZG9iYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfEFtZXJpY2EvUm9zYXJpb1wiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9KdWp1eXxBbWVyaWNhL0p1anV5XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL01lbmRvemF8QW1lcmljYS9NZW5kb3phXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXRpa29rYW58QW1lcmljYS9Db3JhbF9IYXJib3VyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2hpY2Fnb3xVUy9DZW50cmFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xBbWVyaWNhL0FydWJhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xBbWVyaWNhL0tyYWxlbmRpamtcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfEFtZXJpY2EvTG93ZXJfUHJpbmNlc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxBbWVyaWNhL1NoaXByb2NrXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGVudmVyfE5hdmFqb1wiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxVUy9Nb3VudGFpblwiLFxuXHRcdFx0XCJBbWVyaWNhL0RldHJvaXR8VVMvTWljaGlnYW5cIixcblx0XHRcdFwiQW1lcmljYS9FZG1vbnRvbnxDYW5hZGEvTW91bnRhaW5cIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X1dheW5lfEFtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXNcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X1dheW5lfEFtZXJpY2EvSW5kaWFuYXBvbGlzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxVUy9FYXN0LUluZGlhbmFcIixcblx0XHRcdFwiQW1lcmljYS9IYWxpZmF4fENhbmFkYS9BdGxhbnRpY1wiLFxuXHRcdFx0XCJBbWVyaWNhL0hhdmFuYXxDdWJhXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9Lbm94fEFtZXJpY2EvS25veF9JTlwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvS25veHxVUy9JbmRpYW5hLVN0YXJrZVwiLFxuXHRcdFx0XCJBbWVyaWNhL0phbWFpY2F8SmFtYWljYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0tlbnR1Y2t5L0xvdWlzdmlsbGV8QW1lcmljYS9Mb3Vpc3ZpbGxlXCIsXG5cdFx0XHRcIkFtZXJpY2EvTG9zX0FuZ2VsZXN8VVMvUGFjaWZpY1wiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFVTL1BhY2lmaWMtTmV3XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFuYXVzfEJyYXppbC9XZXN0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWF6YXRsYW58TWV4aWNvL0JhamFTdXJcIixcblx0XHRcdFwiQW1lcmljYS9NZXhpY29fQ2l0eXxNZXhpY28vR2VuZXJhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL05ld19Zb3JrfFVTL0Vhc3Rlcm5cIixcblx0XHRcdFwiQW1lcmljYS9Ob3JvbmhhfEJyYXppbC9EZU5vcm9uaGFcIixcblx0XHRcdFwiQW1lcmljYS9QYW5hbWF8QW1lcmljYS9DYXltYW5cIixcblx0XHRcdFwiQW1lcmljYS9QaG9lbml4fFVTL0FyaXpvbmFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvQW5ndWlsbGFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvQW50aWd1YVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9Eb21pbmljYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9HcmVuYWRhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0d1YWRlbG91cGVcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvTWFyaWdvdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9Nb250c2VycmF0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0JhcnRoZWxlbXlcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfS2l0dHNcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfTHVjaWFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfVGhvbWFzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X1ZpbmNlbnRcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvVG9ydG9sYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9WaXJnaW5cIixcblx0XHRcdFwiQW1lcmljYS9SZWdpbmF8Q2FuYWRhL1Nhc2thdGNoZXdhblwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jpb19CcmFuY298QW1lcmljYS9Qb3J0b19BY3JlXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmlvX0JyYW5jb3xCcmF6aWwvQWNyZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1NhbnRpYWdvfENoaWxlL0NvbnRpbmVudGFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FvX1BhdWxvfEJyYXppbC9FYXN0XCIsXG5cdFx0XHRcIkFtZXJpY2EvU3RfSm9obnN8Q2FuYWRhL05ld2ZvdW5kbGFuZFwiLFxuXHRcdFx0XCJBbWVyaWNhL1RpanVhbmF8QW1lcmljYS9FbnNlbmFkYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1RpanVhbmF8QW1lcmljYS9TYW50YV9Jc2FiZWxcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfE1leGljby9CYWphTm9ydGVcIixcblx0XHRcdFwiQW1lcmljYS9Ub3JvbnRvfEFtZXJpY2EvTW9udHJlYWxcIixcblx0XHRcdFwiQW1lcmljYS9Ub3JvbnRvfENhbmFkYS9FYXN0ZXJuXCIsXG5cdFx0XHRcIkFtZXJpY2EvVmFuY291dmVyfENhbmFkYS9QYWNpZmljXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2hpdGVob3JzZXxDYW5hZGEvWXVrb25cIixcblx0XHRcdFwiQW1lcmljYS9XaW5uaXBlZ3xDYW5hZGEvQ2VudHJhbFwiLFxuXHRcdFx0XCJBc2lhL0FzaGdhYmF0fEFzaWEvQXNoa2hhYmFkXCIsXG5cdFx0XHRcIkFzaWEvQmFuZ2tva3xBc2lhL1Bobm9tX1BlbmhcIixcblx0XHRcdFwiQXNpYS9CYW5na29rfEFzaWEvVmllbnRpYW5lXCIsXG5cdFx0XHRcIkFzaWEvRGhha2F8QXNpYS9EYWNjYVwiLFxuXHRcdFx0XCJBc2lhL0R1YmFpfEFzaWEvTXVzY2F0XCIsXG5cdFx0XHRcIkFzaWEvSG9fQ2hpX01pbmh8QXNpYS9TYWlnb25cIixcblx0XHRcdFwiQXNpYS9Ib25nX0tvbmd8SG9uZ2tvbmdcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18QXNpYS9UZWxfQXZpdlwiLFxuXHRcdFx0XCJBc2lhL0plcnVzYWxlbXxJc3JhZWxcIixcblx0XHRcdFwiQXNpYS9LYXRobWFuZHV8QXNpYS9LYXRtYW5kdVwiLFxuXHRcdFx0XCJBc2lhL0tvbGthdGF8QXNpYS9DYWxjdXR0YVwiLFxuXHRcdFx0XCJBc2lhL0t1YWxhX0x1bXB1cnxBc2lhL1NpbmdhcG9yZVwiLFxuXHRcdFx0XCJBc2lhL0t1YWxhX0x1bXB1cnxTaW5nYXBvcmVcIixcblx0XHRcdFwiQXNpYS9NYWNhdXxBc2lhL01hY2FvXCIsXG5cdFx0XHRcIkFzaWEvTWFrYXNzYXJ8QXNpYS9VanVuZ19QYW5kYW5nXCIsXG5cdFx0XHRcIkFzaWEvTmljb3NpYXxFdXJvcGUvTmljb3NpYVwiLFxuXHRcdFx0XCJBc2lhL1FhdGFyfEFzaWEvQmFocmFpblwiLFxuXHRcdFx0XCJBc2lhL1Jhbmdvb258QXNpYS9ZYW5nb25cIixcblx0XHRcdFwiQXNpYS9SaXlhZGh8QXNpYS9BZGVuXCIsXG5cdFx0XHRcIkFzaWEvUml5YWRofEFzaWEvS3V3YWl0XCIsXG5cdFx0XHRcIkFzaWEvU2VvdWx8Uk9LXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8QXNpYS9DaG9uZ3FpbmdcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxBc2lhL0NodW5na2luZ1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfEFzaWEvSGFyYmluXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8UFJDXCIsXG5cdFx0XHRcIkFzaWEvVGFpcGVpfFJPQ1wiLFxuXHRcdFx0XCJBc2lhL1RlaHJhbnxJcmFuXCIsXG5cdFx0XHRcIkFzaWEvVGhpbXBodXxBc2lhL1RoaW1idVwiLFxuXHRcdFx0XCJBc2lhL1Rva3lvfEphcGFuXCIsXG5cdFx0XHRcIkFzaWEvVWxhYW5iYWF0YXJ8QXNpYS9VbGFuX0JhdG9yXCIsXG5cdFx0XHRcIkFzaWEvVXJ1bXFpfEFzaWEvS2FzaGdhclwiLFxuXHRcdFx0XCJBdGxhbnRpYy9GYXJvZXxBdGxhbnRpYy9GYWVyb2VcIixcblx0XHRcdFwiQXRsYW50aWMvUmV5a2phdmlrfEljZWxhbmRcIixcblx0XHRcdFwiQXRsYW50aWMvU291dGhfR2VvcmdpYXxFdGMvR01UKzJcIixcblx0XHRcdFwiQXVzdHJhbGlhL0FkZWxhaWRlfEF1c3RyYWxpYS9Tb3V0aFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJpc2JhbmV8QXVzdHJhbGlhL1F1ZWVuc2xhbmRcIixcblx0XHRcdFwiQXVzdHJhbGlhL0Jyb2tlbl9IaWxsfEF1c3RyYWxpYS9ZYW5jb3dpbm5hXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9EYXJ3aW58QXVzdHJhbGlhL05vcnRoXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ib2JhcnR8QXVzdHJhbGlhL1Rhc21hbmlhXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Mb3JkX0hvd2V8QXVzdHJhbGlhL0xISVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTWVsYm91cm5lfEF1c3RyYWxpYS9WaWN0b3JpYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvUGVydGh8QXVzdHJhbGlhL1dlc3RcIixcblx0XHRcdFwiQXVzdHJhbGlhL1N5ZG5leXxBdXN0cmFsaWEvQUNUXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QXVzdHJhbGlhL0NhbmJlcnJhXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QXVzdHJhbGlhL05TV1wiLFxuXHRcdFx0XCJFdGMvR01ULTB8RXRjL0dNVFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8RXRjL0dNVCswXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR01UMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8RXRjL0dyZWVud2ljaFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVQrMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01ULTBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVDBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdyZWVud2ljaFwiLFxuXHRcdFx0XCJFdGMvVUNUfFVDVFwiLFxuXHRcdFx0XCJFdGMvVVRDfEV0Yy9Vbml2ZXJzYWxcIixcblx0XHRcdFwiRXRjL1VUQ3xFdGMvWnVsdVwiLFxuXHRcdFx0XCJFdGMvVVRDfFVUQ1wiLFxuXHRcdFx0XCJFdGMvVVRDfFVuaXZlcnNhbFwiLFxuXHRcdFx0XCJFdGMvVVRDfFp1bHVcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9ManVibGphbmFcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9Qb2Rnb3JpY2FcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9TYXJhamV2b1wiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1Nrb3BqZVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1phZ3JlYlwiLFxuXHRcdFx0XCJFdXJvcGUvQ2hpc2luYXV8RXVyb3BlL1RpcmFzcG9sXCIsXG5cdFx0XHRcIkV1cm9wZS9EdWJsaW58RWlyZVwiLFxuXHRcdFx0XCJFdXJvcGUvSGVsc2lua2l8RXVyb3BlL01hcmllaGFtblwiLFxuXHRcdFx0XCJFdXJvcGUvSXN0YW5idWx8QXNpYS9Jc3RhbmJ1bFwiLFxuXHRcdFx0XCJFdXJvcGUvSXN0YW5idWx8VHVya2V5XCIsXG5cdFx0XHRcIkV1cm9wZS9MaXNib258UG9ydHVnYWxcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvQmVsZmFzdFwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEV1cm9wZS9HdWVybnNleVwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEV1cm9wZS9Jc2xlX29mX01hblwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEV1cm9wZS9KZXJzZXlcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxHQlwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEdCLUVpcmVcIixcblx0XHRcdFwiRXVyb3BlL01vc2Nvd3xXLVNVXCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfEFyY3RpYy9Mb25neWVhcmJ5ZW5cIixcblx0XHRcdFwiRXVyb3BlL09zbG98QXRsYW50aWMvSmFuX01heWVuXCIsXG5cdFx0XHRcIkV1cm9wZS9QcmFndWV8RXVyb3BlL0JyYXRpc2xhdmFcIixcblx0XHRcdFwiRXVyb3BlL1JvbWV8RXVyb3BlL1Nhbl9NYXJpbm9cIixcblx0XHRcdFwiRXVyb3BlL1JvbWV8RXVyb3BlL1ZhdGljYW5cIixcblx0XHRcdFwiRXVyb3BlL1dhcnNhd3xQb2xhbmRcIixcblx0XHRcdFwiRXVyb3BlL1p1cmljaHxFdXJvcGUvQnVzaW5nZW5cIixcblx0XHRcdFwiRXVyb3BlL1p1cmljaHxFdXJvcGUvVmFkdXpcIixcblx0XHRcdFwiSW5kaWFuL0NocmlzdG1hc3xFdGMvR01ULTdcIixcblx0XHRcdFwiUGFjaWZpYy9BdWNrbGFuZHxBbnRhcmN0aWNhL01jTXVyZG9cIixcblx0XHRcdFwiUGFjaWZpYy9BdWNrbGFuZHxBbnRhcmN0aWNhL1NvdXRoX1BvbGVcIixcblx0XHRcdFwiUGFjaWZpYy9BdWNrbGFuZHxOWlwiLFxuXHRcdFx0XCJQYWNpZmljL0NoYXRoYW18TlotQ0hBVFwiLFxuXHRcdFx0XCJQYWNpZmljL0Vhc3RlcnxDaGlsZS9FYXN0ZXJJc2xhbmRcIixcblx0XHRcdFwiUGFjaWZpYy9HdWFtfFBhY2lmaWMvU2FpcGFuXCIsXG5cdFx0XHRcIlBhY2lmaWMvSG9ub2x1bHV8UGFjaWZpYy9Kb2huc3RvblwiLFxuXHRcdFx0XCJQYWNpZmljL0hvbm9sdWx1fFVTL0hhd2FpaVwiLFxuXHRcdFx0XCJQYWNpZmljL0t3YWphbGVpbnxLd2FqYWxlaW5cIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298UGFjaWZpYy9NaWR3YXlcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298UGFjaWZpYy9TYW1vYVwiLFxuXHRcdFx0XCJQYWNpZmljL1BhZ29fUGFnb3xVUy9TYW1vYVwiLFxuXHRcdFx0XCJQYWNpZmljL1BhbGF1fEV0Yy9HTVQtOVwiLFxuXHRcdFx0XCJQYWNpZmljL1BvaG5wZWl8RXRjL0dNVC0xMVwiLFxuXHRcdFx0XCJQYWNpZmljL1BvaG5wZWl8UGFjaWZpYy9Qb25hcGVcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8RXRjL0dNVC0xMFwiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxQYWNpZmljL0NodXVrXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fFBhY2lmaWMvVHJ1a1wiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxQYWNpZmljL1lhcFwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxFdGMvR01ULTEyXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfFBhY2lmaWMvRnVuYWZ1dGlcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8UGFjaWZpYy9XYWtlXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfFBhY2lmaWMvV2FsbGlzXCJcblx0XHRdXG5cdH0pO1xuXG5cblx0cmV0dXJuIG1vbWVudDtcbn0pKTsiLCIvKiEgVUlraXQgMy4wLjAtcmMuNSB8IGh0dHA6Ly93d3cuZ2V0dWlraXQuY29tIHwgKGMpIDIwMTQgLSAyMDE3IFlPT3RoZW1lIHwgTUlUIExpY2Vuc2UgKi9cblxuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKCd1aWtpdCcsIGZhY3RvcnkpIDpcbiAgICAoZ2xvYmFsLlVJa2l0ID0gZmFjdG9yeSgpKTtcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gYmluZChmbiwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHZhciBsID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBsID8gbCA+IDEgPyBmbi5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpIDogZm4uY2FsbChjb250ZXh0LCBhKSA6IGZuLmNhbGwoY29udGV4dCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHJlZiA9IE9iamVjdC5wcm90b3R5cGU7XG4gICAgdmFyIGhhc093blByb3BlcnR5ID0gcmVmLmhhc093blByb3BlcnR5O1xuXG4gICAgZnVuY3Rpb24gaGFzT3duKG9iaiwga2V5KSB7XG4gICAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbiAgICB9XG5cbiAgICB2YXIgaHlwaGVuYXRlQ2FjaGUgPSB7fTtcbiAgICB2YXIgaHlwaGVuYXRlUmUgPSAvKFthLXpcXGRdKShbQS1aXSkvZztcblxuICAgIGZ1bmN0aW9uIGh5cGhlbmF0ZShzdHIpIHtcblxuICAgICAgICBpZiAoIShzdHIgaW4gaHlwaGVuYXRlQ2FjaGUpKSB7XG4gICAgICAgICAgICBoeXBoZW5hdGVDYWNoZVtzdHJdID0gc3RyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoaHlwaGVuYXRlUmUsICckMS0kMicpXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaHlwaGVuYXRlQ2FjaGVbc3RyXTtcbiAgICB9XG5cbiAgICB2YXIgY2FtZWxpemVSZSA9IC8tKFxcdykvZztcblxuICAgIGZ1bmN0aW9uIGNhbWVsaXplKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSZSwgdG9VcHBlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9VcHBlcihfLCBjKSB7XG4gICAgICAgIHJldHVybiBjID8gYy50b1VwcGVyQ2FzZSgpIDogJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdWNmaXJzdChzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPyB0b1VwcGVyKG51bGwsIHN0ci5jaGFyQXQoMCkpICsgc3RyLnNsaWNlKDEpIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHN0clByb3RvdHlwZSA9IFN0cmluZy5wcm90b3R5cGU7XG4gICAgdmFyIHN0YXJ0c1dpdGhGbiA9IHN0clByb3RvdHlwZS5zdGFydHNXaXRoIHx8IGZ1bmN0aW9uIChzZWFyY2gpIHsgcmV0dXJuIHRoaXMubGFzdEluZGV4T2Yoc2VhcmNoLCAwKSA9PT0gMDsgfTtcblxuICAgIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBzZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGhGbi5jYWxsKHN0ciwgc2VhcmNoKTtcbiAgICB9XG5cbiAgICB2YXIgZW5kc1dpdGhGbiA9IHN0clByb3RvdHlwZS5lbmRzV2l0aCB8fCBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB0aGlzLnN1YnN0cigtc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDsgfTtcblxuICAgIGZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoKSB7XG4gICAgICAgIHJldHVybiBlbmRzV2l0aEZuLmNhbGwoc3RyLCBzZWFyY2gpO1xuICAgIH1cblxuICAgIHZhciBpbmNsdWRlc0ZuID0gZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gfnRoaXMuaW5kZXhPZihzZWFyY2gpOyB9O1xuICAgIHZhciBpbmNsdWRlc1N0ciA9IHN0clByb3RvdHlwZS5pbmNsdWRlcyB8fCBpbmNsdWRlc0ZuO1xuICAgIHZhciBpbmNsdWRlc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzIHx8IGluY2x1ZGVzRm47XG5cbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhvYmosIHNlYXJjaCkge1xuICAgICAgICByZXR1cm4gb2JqICYmIChpc1N0cmluZyhvYmopID8gaW5jbHVkZXNTdHIgOiBpbmNsdWRlc0FycmF5KS5jYWxsKG9iaiwgc2VhcmNoKTtcbiAgICB9XG5cbiAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKG9iaikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1dpbmRvdyhvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgb2JqID09PSBvYmoud2luZG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRG9jdW1lbnQob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iai5ub2RlVHlwZSA9PT0gOTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0pRdWVyeShvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgISFvYmouanF1ZXJ5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTm9kZShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgTm9kZSB8fCBpc09iamVjdChlbGVtZW50KSAmJiBlbGVtZW50Lm5vZGVUeXBlID09PSAxO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTm9kZUNvbGxlY3Rpb24oZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIE5vZGVMaXN0IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtZXJpYyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpIHx8IGlzU3RyaW5nKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUgLSBwYXJzZUZsb2F0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Cb29sZWFuKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0Jvb2xlYW4odmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09ICcxJyB8fCB2YWx1ZSA9PT0gJydcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHZhbHVlID09PSAnZmFsc2UnIHx8IHZhbHVlID09PSAnMCdcbiAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gIWlzTmFOKG51bWJlcikgPyBudW1iZXIgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0Zsb2F0KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm9kZShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkgfHwgaXNXaW5kb3coZWxlbWVudCkgfHwgaXNEb2N1bWVudChlbGVtZW50KVxuICAgICAgICAgICAgPyBlbGVtZW50XG4gICAgICAgICAgICA6IGlzTm9kZUNvbGxlY3Rpb24oZWxlbWVudCkgfHwgaXNKUXVlcnkoZWxlbWVudClcbiAgICAgICAgICAgICAgICA/IGVsZW1lbnRbMF1cbiAgICAgICAgICAgICAgICA6IGlzQXJyYXkoZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgPyB0b05vZGUoZWxlbWVudFswXSlcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuICAgIGZ1bmN0aW9uIHRvTm9kZXMoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpXG4gICAgICAgICAgICA/IFtlbGVtZW50XVxuICAgICAgICAgICAgOiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgPyBhcnJheVByb3RvLnNsaWNlLmNhbGwoZWxlbWVudClcbiAgICAgICAgICAgICAgICA6IGlzQXJyYXkoZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50Lm1hcCh0b05vZGUpLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICA6IGlzSlF1ZXJ5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGVsZW1lbnQudG9BcnJheSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTGlzdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogaXNTdHJpbmcodmFsdWUpXG4gICAgICAgICAgICAgICAgPyB2YWx1ZS5zcGxpdCgvLCg/IVteKF0qXFwpKS8pLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGlzTnVtZXJpYyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyB0b051bWJlcih2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiB0b0Jvb2xlYW4odmFsdWUudHJpbSgpKTsgfSlcbiAgICAgICAgICAgICAgICA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Ncyh0aW1lKSB7XG4gICAgICAgIHJldHVybiAhdGltZVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IGVuZHNXaXRoKHRpbWUsICdtcycpXG4gICAgICAgICAgICAgICAgPyB0b0Zsb2F0KHRpbWUpXG4gICAgICAgICAgICAgICAgOiB0b0Zsb2F0KHRpbWUpICogMTAwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzd2FwKHZhbHVlLCBhLCBiKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoKGEgKyBcInxcIiArIGIpLCAnbWcnKSwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2ggPT09IGEgPyBiIDogYTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIHRhcmdldCA9IE9iamVjdCh0YXJnZXQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBhcmdzW2ldO1xuICAgICAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZWFjaChvYmosIGNiKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGNiLmNhbGwob2JqW2tleV0sIG9ialtrZXldLCBrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc29ydEJ5KGNvbGxlY3Rpb24sIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYVtwcm9wXSA+IGJbcHJvcF1cbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IGJbcHJvcF0gPiBhW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgOiAwOyB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xhbXAobnVtYmVyLCBtaW4sIG1heCkge1xuICAgICAgICBpZiAoIG1pbiA9PT0gdm9pZCAwICkgbWluID0gMDtcbiAgICAgICAgaWYgKCBtYXggPT09IHZvaWQgMCApIG1heCA9IDE7XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG51bWJlciwgbWluKSwgbWF4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub29wKCkge31cblxuICAgIGZ1bmN0aW9uIGludGVyc2VjdFJlY3QocjEsIHIyKSB7XG4gICAgICAgIHJldHVybiByMS5sZWZ0IDw9IHIyLnJpZ2h0ICYmXG4gICAgICAgICAgICByMi5sZWZ0IDw9IHIxLnJpZ2h0ICYmXG4gICAgICAgICAgICByMS50b3AgPD0gcjIuYm90dG9tICYmXG4gICAgICAgICAgICByMi50b3AgPD0gcjEuYm90dG9tO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvaW50SW5SZWN0KHBvaW50LCByZWN0KSB7XG4gICAgICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KHt0b3A6IHBvaW50LnksIGJvdHRvbTogcG9pbnQueSwgbGVmdDogcG9pbnQueCwgcmlnaHQ6IHBvaW50Lnh9LCByZWN0KTtcbiAgICB9XG5cbiAgICB2YXIgRGltZW5zaW9ucyA9IHtcblxuICAgICAgICByYXRpbzogZnVuY3Rpb24oZGltZW5zaW9ucywgcHJvcCwgdmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBvYmo7XG5cblxuICAgICAgICAgICAgdmFyIGFQcm9wID0gcHJvcCA9PT0gJ3dpZHRoJyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgICAgICAgICAgcmV0dXJuICggb2JqID0ge30sIG9ialthUHJvcF0gPSBNYXRoLnJvdW5kKHZhbHVlICogZGltZW5zaW9uc1thUHJvcF0gLyBkaW1lbnNpb25zW3Byb3BdKSwgb2JqW3Byb3BdID0gdmFsdWUsIG9iaiApO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbnRhaW46IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIG1heERpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICBkaW1lbnNpb25zID0gYXNzaWduKHt9LCBkaW1lbnNpb25zKTtcblxuICAgICAgICAgICAgZWFjaChkaW1lbnNpb25zLCBmdW5jdGlvbiAoXywgcHJvcCkgeyByZXR1cm4gZGltZW5zaW9ucyA9IGRpbWVuc2lvbnNbcHJvcF0gPiBtYXhEaW1lbnNpb25zW3Byb3BdXG4gICAgICAgICAgICAgICAgPyB0aGlzJDEucmF0aW8oZGltZW5zaW9ucywgcHJvcCwgbWF4RGltZW5zaW9uc1twcm9wXSlcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbnM7IH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiBkaW1lbnNpb25zO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvdmVyOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgZGltZW5zaW9ucyA9IHRoaXMuY29udGFpbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKTtcblxuICAgICAgICAgICAgZWFjaChkaW1lbnNpb25zLCBmdW5jdGlvbiAoXywgcHJvcCkgeyByZXR1cm4gZGltZW5zaW9ucyA9IGRpbWVuc2lvbnNbcHJvcF0gPCBtYXhEaW1lbnNpb25zW3Byb3BdXG4gICAgICAgICAgICAgICAgPyB0aGlzJDEucmF0aW8oZGltZW5zaW9ucywgcHJvcCwgbWF4RGltZW5zaW9uc1twcm9wXSlcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbnM7IH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiBkaW1lbnNpb25zO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYXR0cihlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuXG4gICAgICAgIGlmIChpc09iamVjdChuYW1lKSkge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG5hbWUpIHtcbiAgICAgICAgICAgICAgICBhdHRyKGVsZW1lbnQsIGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuY2FsbChlbGVtZW50LCBhdHRyKGVsZW1lbnQsIG5hbWUpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbGVtZW50LCBuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0F0dHIoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShuYW1lKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQXR0cihlbGVtZW50LCBuYW1lKSB7XG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGVzKGVsZW1lbnQpO1xuICAgICAgICBuYW1lLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gZWxlbWVudC5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsgfVxuICAgICAgICAgICAgKTsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbHRlckF0dHIoZWxlbWVudCwgYXR0cmlidXRlLCBwYXR0ZXJuLCByZXBsYWNlbWVudCkge1xuICAgICAgICBhdHRyKGVsZW1lbnQsIGF0dHJpYnV0ZSwgZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpIDogdmFsdWU7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRhdGEoZWxlbWVudCwgYXR0cmlidXRlKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBhdHRycyA9IFthdHRyaWJ1dGUsIChcImRhdGEtXCIgKyBhdHRyaWJ1dGUpXTsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaGFzQXR0cihlbGVtZW50LCBhdHRyc1tpXSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cihlbGVtZW50LCBhdHRyc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBxdWVyeShzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlKHNlbGVjdG9yKSB8fCBmaW5kKHNlbGVjdG9yLCBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikgPyBjb250ZXh0IDogZG9jdW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHF1ZXJ5QWxsKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMoc2VsZWN0b3IpO1xuICAgICAgICByZXR1cm4gbm9kZXMubGVuZ3RoICYmIG5vZGVzIHx8IGZpbmRBbGwoc2VsZWN0b3IsIGlzQ29udGV4dFNlbGVjdG9yKHNlbGVjdG9yKSA/IGNvbnRleHQgOiBkb2N1bWVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmluZChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlKF9xdWVyeShzZWxlY3RvciwgY29udGV4dCwgJ3F1ZXJ5U2VsZWN0b3InKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmluZEFsbChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsICdxdWVyeVNlbGVjdG9yQWxsJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9xdWVyeShzZWxlY3RvciwgY29udGV4dCwgcXVlcnlGbikge1xuICAgICAgICBpZiAoIGNvbnRleHQgPT09IHZvaWQgMCApIGNvbnRleHQgPSBkb2N1bWVudDtcblxuXG4gICAgICAgIGlmICghc2VsZWN0b3IgfHwgIWlzU3RyaW5nKHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnJlcGxhY2UoY29udGV4dFNhbml0aXplUmUsICckMSAqJyk7XG5cbiAgICAgICAgdmFyIHJlbW92ZXM7XG5cbiAgICAgICAgaWYgKGlzQ29udGV4dFNlbGVjdG9yKHNlbGVjdG9yKSkge1xuXG4gICAgICAgICAgICByZW1vdmVzID0gW107XG5cbiAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3Iuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKHNlbGVjdG9yLCBpKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dDtcblxuICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yWzBdID09PSAnIScpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JzID0gc2VsZWN0b3Iuc3Vic3RyKDEpLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgICAgICBjdHggPSBjbG9zZXN0KGNvbnRleHQucGFyZW50Tm9kZSwgc2VsZWN0b3JzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMuc2xpY2UoMSkuam9pbignICcpLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvclswXSA9PT0gJy0nKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyQxID0gc2VsZWN0b3Iuc3Vic3RyKDEpLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IChjdHggfHwgY29udGV4dCkucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gbWF0Y2hlcyhwcmV2LCBzZWxlY3Rvci5zdWJzdHIoMSkpID8gcHJldiA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzJDEuc2xpY2UoMSkuam9pbignICcpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFjdHguaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4LmlkID0gXCJ1ay1cIiArIChEYXRlLm5vdygpKSArIGk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZXMucHVzaChmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmVBdHRyKGN0eCwgJ2lkJyk7IH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAoXCIjXCIgKyAoZXNjYXBlKGN0eC5pZCkpICsgXCIgXCIgKyBzZWxlY3Rvcik7XG5cbiAgICAgICAgICAgIH0pLmZpbHRlcihCb29sZWFuKS5qb2luKCcsJyk7XG5cbiAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudDtcblxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRbcXVlcnlGbl0oc2VsZWN0b3IpO1xuXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgfSBmaW5hbGx5IHtcblxuICAgICAgICAgICAgcmVtb3ZlcyAmJiByZW1vdmVzLmZvckVhY2goZnVuY3Rpb24gKHJlbW92ZSkgeyByZXR1cm4gcmVtb3ZlKCk7IH0pO1xuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHZhciBjb250ZXh0U2VsZWN0b3JSZSA9IC8oXnwsKVxccypbIT4rfi1dLztcbiAgICB2YXIgY29udGV4dFNhbml0aXplUmUgPSAvKFshPit+LV0pKD89XFxzK1shPit+LV18XFxzKiQpL2c7XG5cbiAgICBmdW5jdGlvbiBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoc2VsZWN0b3IpICYmIHNlbGVjdG9yLm1hdGNoKGNvbnRleHRTZWxlY3RvclJlKTtcbiAgICB9XG5cbiAgICB2YXIgZWxQcm90byA9IEVsZW1lbnQucHJvdG90eXBlO1xuICAgIHZhciBtYXRjaGVzRm4gPSBlbFByb3RvLm1hdGNoZXMgfHwgZWxQcm90by53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwgZWxQcm90by5tc01hdGNoZXNTZWxlY3RvcjtcblxuICAgIGZ1bmN0aW9uIG1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbWF0Y2hlc0ZuLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpOyB9KTtcbiAgICB9XG5cbiAgICB2YXIgY2xvc2VzdEZuID0gZWxQcm90by5jbG9zZXN0IHx8IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgICAgICB2YXIgYW5jZXN0b3IgPSB0aGlzO1xuXG4gICAgICAgIGRvIHtcblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMoYW5jZXN0b3IsIHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbmNlc3RvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlO1xuXG4gICAgICAgIH0gd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yLm5vZGVUeXBlID09PSAxKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcikge1xuXG4gICAgICAgIGlmIChzdGFydHNXaXRoKHNlbGVjdG9yLCAnPicpKSB7XG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KVxuICAgICAgICAgICAgPyBlbGVtZW50LnBhcmVudE5vZGUgJiYgY2xvc2VzdEZuLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpXG4gICAgICAgICAgICA6IHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgJiYgY2xvc2VzdEZuLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpOyB9KS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyZW50cyhlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgICAgICB2YXIgZWxlbWVudHMgPSBbXTtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRvTm9kZShlbGVtZW50KS5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09PSAxKSB7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKHBhcmVudCwgc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICB9XG5cbiAgICB2YXIgZXNjYXBlRm4gPSB3aW5kb3cuQ1NTICYmIENTUy5lc2NhcGUgfHwgZnVuY3Rpb24gKGNzcykgeyByZXR1cm4gY3NzLnJlcGxhY2UoLyhbXlxceDdmLVxcdUZGRkZcXHctXSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7IHJldHVybiAoXCJcXFxcXCIgKyBtYXRjaCk7IH0pOyB9O1xuICAgIGZ1bmN0aW9uIGVzY2FwZShjc3MpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGNzcykgPyBlc2NhcGVGbi5jYWxsKG51bGwsIGNzcykgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgdm9pZEVsZW1lbnRzID0ge1xuICAgICAgICBhcmVhOiB0cnVlLFxuICAgICAgICBiYXNlOiB0cnVlLFxuICAgICAgICBicjogdHJ1ZSxcbiAgICAgICAgY29sOiB0cnVlLFxuICAgICAgICBlbWJlZDogdHJ1ZSxcbiAgICAgICAgaHI6IHRydWUsXG4gICAgICAgIGltZzogdHJ1ZSxcbiAgICAgICAgaW5wdXQ6IHRydWUsXG4gICAgICAgIGtleWdlbjogdHJ1ZSxcbiAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgbWVudWl0ZW06IHRydWUsXG4gICAgICAgIG1ldGE6IHRydWUsXG4gICAgICAgIHBhcmFtOiB0cnVlLFxuICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgIHRyYWNrOiB0cnVlLFxuICAgICAgICB3YnI6IHRydWVcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGlzVm9pZEVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB2b2lkRWxlbWVudHNbZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCldOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Zpc2libGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7IH0pO1xuICAgIH1cblxuICAgIHZhciBzZWxJbnB1dCA9ICdpbnB1dCxzZWxlY3QsdGV4dGFyZWEsYnV0dG9uJztcbiAgICBmdW5jdGlvbiBpc0lucHV0KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbWF0Y2hlcyhlbGVtZW50LCBzZWxJbnB1dCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbHRlcihlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3aXRoaW4oZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gZWxlbWVudCA9PT0gc2VsZWN0b3IgfHwgKGlzRG9jdW1lbnQoc2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgPyBzZWxlY3Rvci5kb2N1bWVudEVsZW1lbnRcbiAgICAgICAgICAgICAgICA6IHRvTm9kZShzZWxlY3RvcikpLmNvbnRhaW5zKHRvTm9kZShlbGVtZW50KSkgLy8gSUUgMTEgZG9jdW1lbnQgZG9lcyBub3QgaW1wbGVtZW50IGNvbnRhaW5zXG4gICAgICAgICAgICA6IG1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpIHx8IGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG5cbiAgICAgICAgdmFyIHJlZiA9IGdldEFyZ3MoYXJncyk7XG4gICAgICAgIHZhciB0YXJnZXQgPSByZWZbMF07XG4gICAgICAgIHZhciB0eXBlID0gcmVmWzFdO1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSByZWZbMl07XG4gICAgICAgIHZhciBsaXN0ZW5lciA9IHJlZlszXTtcbiAgICAgICAgdmFyIHVzZUNhcHR1cmUgPSByZWZbNF07XG5cbiAgICAgICAgdGFyZ2V0ID0gdG9FdmVudFRhcmdldCh0YXJnZXQpO1xuXG4gICAgICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBkZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdGVuZXIubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBkZXRhaWwobGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIHRhcmdldCAmJiB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7IH0pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gb2ZmKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSB7XG4gICAgICAgIGlmICggdXNlQ2FwdHVyZSA9PT0gdm9pZCAwICkgdXNlQ2FwdHVyZSA9IGZhbHNlO1xuXG4gICAgICAgIHRhcmdldCA9IHRvRXZlbnRUYXJnZXQodGFyZ2V0KTtcbiAgICAgICAgdGFyZ2V0ICYmIHR5cGUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uY2UoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cblxuICAgICAgICB2YXIgcmVmID0gZ2V0QXJncyhhcmdzKTtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSByZWZbMF07XG4gICAgICAgIHZhciB0eXBlID0gcmVmWzFdO1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSByZWZbMl07XG4gICAgICAgIHZhciBsaXN0ZW5lciA9IHJlZlszXTtcbiAgICAgICAgdmFyIHVzZUNhcHR1cmUgPSByZWZbNF07XG4gICAgICAgIHZhciBjb25kaXRpb24gPSByZWZbNV07XG4gICAgICAgIHZhciBvZmYgPSBvbihlbGVtZW50LCB0eXBlLCBzZWxlY3RvciwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSAhY29uZGl0aW9uIHx8IGNvbmRpdGlvbihlKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBvZmYoKTtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcihlLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB1c2VDYXB0dXJlKTtcblxuICAgICAgICByZXR1cm4gb2ZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaWdnZXIodGFyZ2V0LCBldmVudCwgZGV0YWlsKSB7XG4gICAgICAgIHJldHVybiB0b0V2ZW50VGFyZ2V0cyh0YXJnZXQpLnJlZHVjZShmdW5jdGlvbiAobm90Q2FuY2VsZWQsIHRhcmdldCkgeyByZXR1cm4gbm90Q2FuY2VsZWQgJiYgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoY3JlYXRlRXZlbnQoZXZlbnQsIHRydWUsIHRydWUsIGRldGFpbCkpOyB9XG4gICAgICAgICAgICAsIHRydWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUV2ZW50KGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldGFpbCkge1xuICAgICAgICBpZiAoIGJ1YmJsZXMgPT09IHZvaWQgMCApIGJ1YmJsZXMgPSB0cnVlO1xuICAgICAgICBpZiAoIGNhbmNlbGFibGUgPT09IHZvaWQgMCApIGNhbmNlbGFibGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAoaXNTdHJpbmcoZSkpIHtcbiAgICAgICAgICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpOyAvLyBJRSAxMVxuICAgICAgICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldGFpbCk7XG4gICAgICAgICAgICBlID0gZXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRBcmdzKGFyZ3MpIHtcblxuICAgICAgICBpZiAoaXNTdHJpbmcoYXJnc1swXSkpIHtcbiAgICAgICAgICAgIGFyZ3NbMF0gPSBmaW5kKGFyZ3NbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oYXJnc1syXSkpIHtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDIsIDAsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWxlZ2F0ZShlbGVtZW50LCBzZWxlY3RvciwgbGlzdGVuZXIpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gc2VsZWN0b3JbMF0gPT09ICc+J1xuICAgICAgICAgICAgICAgID8gZmluZEFsbChzZWxlY3RvciwgZWxlbWVudCkucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gd2l0aGluKHRhcmdldCwgZWxlbWVudCk7IH0pWzBdXG4gICAgICAgICAgICAgICAgOiBjbG9zZXN0KHRhcmdldCwgc2VsZWN0b3IpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGUuZGVsZWdhdGUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIGUuY3VycmVudCA9IGN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5jYWxsKHRoaXMkMSwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGV0YWlsKGxpc3RlbmVyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaXNBcnJheShlLmRldGFpbCkgPyBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIFtlXS5jb25jYXQoZS5kZXRhaWwpKSA6IGxpc3RlbmVyKGUpOyB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRXZlbnRUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiAnRXZlbnRUYXJnZXQnIGluIHdpbmRvd1xuICAgICAgICAgICAgPyB0YXJnZXQgaW5zdGFuY2VvZiBFdmVudFRhcmdldFxuICAgICAgICAgICAgOiB0YXJnZXQgJiYgJ2FkZEV2ZW50TGlzdGVuZXInIGluIHRhcmdldDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0V2ZW50VGFyZ2V0KHRhcmdldCkge1xuICAgICAgICByZXR1cm4gaXNFdmVudFRhcmdldCh0YXJnZXQpID8gdGFyZ2V0IDogdG9Ob2RlKHRhcmdldCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldHModGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiBpc0V2ZW50VGFyZ2V0KHRhcmdldClcbiAgICAgICAgICAgID8gW3RhcmdldF1cbiAgICAgICAgICAgIDogaXNBcnJheSh0YXJnZXQpXG4gICAgICAgICAgICAgICAgPyB0YXJnZXQubWFwKHRvRXZlbnRUYXJnZXQpLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgIDogdG9Ob2Rlcyh0YXJnZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXZlbnRDbGljaygpIHtcblxuICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KG9uY2UoZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG5cbiAgICAgICAgfSwgdHJ1ZSkpO1xuXG4gICAgICAgIHRyaWdnZXIoZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcpO1xuXG4gICAgfVxuXG4gICAgLyogZ2xvYmFsIHNldEltbWVkaWF0ZSAqL1xuXG4gICAgdmFyIFByb21pc2UkMSA9ICdQcm9taXNlJyBpbiB3aW5kb3cgPyB3aW5kb3cuUHJvbWlzZSA6IFByb21pc2VGbjtcblxuICAgIHZhciBEZWZlcnJlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoaXMkMS5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICB0aGlzJDEucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBQcm9taXNlcy9BKyBwb2x5ZmlsbCB2MS4xLjQgKGh0dHBzOi8vZ2l0aHViLmNvbS9icmFtc3RlaW4vcHJvbWlzKVxuICAgICAqL1xuXG4gICAgdmFyIFJFU09MVkVEID0gMDtcbiAgICB2YXIgUkVKRUNURUQgPSAxO1xuICAgIHZhciBQRU5ESU5HID0gMjtcblxuICAgIHZhciBhc3luYyA9ICdzZXRJbW1lZGlhdGUnIGluIHdpbmRvdyA/IHNldEltbWVkaWF0ZSA6IHNldFRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBQcm9taXNlRm4oZXhlY3V0b3IpIHtcblxuICAgICAgICB0aGlzLnN0YXRlID0gUEVORElORztcbiAgICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kZWZlcnJlZCA9IFtdO1xuXG4gICAgICAgIHZhciBwcm9taXNlID0gdGhpcztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXhlY3V0b3IoXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qocik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBQcm9taXNlRm4ucmVqZWN0ID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgcmVqZWN0KHIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgUHJvbWlzZUZuLnJlc29sdmUgPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICByZXNvbHZlKHgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgUHJvbWlzZUZuLmFsbCA9IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuXG4gICAgICAgICAgICBpZiAoaXRlcmFibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiByZXNvbHZlcihpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IHg7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09PSBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlRm4ucmVzb2x2ZShpdGVyYWJsZVtpXSkudGhlbihyZXNvbHZlcihpKSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5yYWNlID0gZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhYmxlLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZUZuLnJlc29sdmUoaXRlcmFibGVbaV0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHZhciBwID0gUHJvbWlzZUZuLnByb3RvdHlwZTtcblxuICAgIHAucmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHByb21pc2Uuc3RhdGUgPT09IFBFTkRJTkcpIHtcbiAgICAgICAgICAgIGlmICh4ID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoZW4gPSB4ICYmIHgudGhlbjtcblxuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsICYmIGlzT2JqZWN0KHgpICYmIGlzRnVuY3Rpb24odGhlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhlbi5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvbWlzZS5zdGF0ZSA9IFJFU09MVkVEO1xuICAgICAgICAgICAgcHJvbWlzZS52YWx1ZSA9IHg7XG4gICAgICAgICAgICBwcm9taXNlLm5vdGlmeSgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHAucmVqZWN0ID0gZnVuY3Rpb24gcmVqZWN0KHJlYXNvbikge1xuICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHByb21pc2Uuc3RhdGUgPT09IFBFTkRJTkcpIHtcbiAgICAgICAgICAgIGlmIChyZWFzb24gPT09IHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlIHNldHRsZWQgd2l0aCBpdHNlbGYuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRUpFQ1RFRDtcbiAgICAgICAgICAgIHByb21pc2UudmFsdWUgPSByZWFzb247XG4gICAgICAgICAgICBwcm9taXNlLm5vdGlmeSgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHAubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5KCkge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICBhc3luYyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcyQxLnN0YXRlICE9PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMkMS5kZWZlcnJlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5kZWZlcnJlZC5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25SZXNvbHZlZCA9IHJlZlswXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVqZWN0ZWQgPSByZWZbMV07XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNvbHZlID0gcmVmWzJdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVqZWN0ID0gcmVmWzNdO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLnN0YXRlID09PSBSRVNPTFZFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uUmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob25SZXNvbHZlZC5jYWxsKHVuZGVmaW5lZCwgdGhpcyQxLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzJDEudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcyQxLnN0YXRlID09PSBSRUpFQ1RFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uUmVqZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob25SZWplY3RlZC5jYWxsKHVuZGVmaW5lZCwgdGhpcyQxLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHRoaXMkMS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwLnRoZW4gPSBmdW5jdGlvbiB0aGVuKG9uUmVzb2x2ZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdGhpcyQxLmRlZmVycmVkLnB1c2goW29uUmVzb2x2ZWQsIG9uUmVqZWN0ZWQsIHJlc29sdmUsIHJlamVjdF0pO1xuICAgICAgICAgICAgdGhpcyQxLm5vdGlmeSgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcC5jYXRjaCA9IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYWpheCh1cmwsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICB2YXIgZW52ID0gYXNzaWduKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgICAgeGhyOiBuZXcgWE1MSHR0cFJlcXVlc3QoKSxcbiAgICAgICAgICAgICAgICBiZWZvcmVTZW5kOiBub29wLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJydcbiAgICAgICAgICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBlbnYuYmVmb3JlU2VuZChlbnYpO1xuXG4gICAgICAgICAgICB2YXIgeGhyID0gZW52LnhocjtcblxuICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBlbnYpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiB4aHIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgeGhyW3Byb3BdID0gZW52W3Byb3BdO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB4aHIub3BlbihlbnYubWV0aG9kLnRvVXBwZXJDYXNlKCksIHVybCk7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGhlYWRlciBpbiBlbnYuaGVhZGVycykge1xuICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlciwgZW52LmhlYWRlcnNbaGVhZGVyXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9uKHhociwgJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMCB8fCB4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwIHx8IHhoci5zdGF0dXMgPT09IDMwNCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHhocik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGFzc2lnbihFcnJvcih4aHIuc3RhdHVzVGV4dCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhocjogeGhyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBvbih4aHIsICdlcnJvcicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlamVjdChhc3NpZ24oRXJyb3IoJ05ldHdvcmsgRXJyb3InKSwge3hocjogeGhyfSkpOyB9KTtcbiAgICAgICAgICAgIG9uKHhociwgJ3RpbWVvdXQnLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIFRpbWVvdXQnKSwge3hocjogeGhyfSkpOyB9KTtcblxuICAgICAgICAgICAgeGhyLnNlbmQoZW52LmRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJbWFnZShzcmMsIHNyY3NldCwgc2l6ZXMpIHtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XG5cbiAgICAgICAgICAgIGltZy5vbmVycm9yID0gcmVqZWN0O1xuICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUoaW1nKTsgfTtcblxuICAgICAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICAgICAgICAgIHNyY3NldCAmJiAoaW1nLnNyY3NldCA9IHNyY3NldCk7XG4gICAgICAgICAgICBzaXplcyAmJiAoaW1nLnNpemVzID0gc2l6ZXMpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVhZHkoKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJyAmJiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWR5KGZuKSB7XG5cbiAgICAgICAgaWYgKGlzUmVhZHkoKSkge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBoYW5kbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1bmJpbmQxKCk7XG4gICAgICAgICAgICB1bmJpbmQyKCk7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdW5iaW5kMSA9IG9uKGRvY3VtZW50LCAnRE9NQ29udGVudExvYWRlZCcsIGhhbmRsZSk7XG4gICAgICAgIHZhciB1bmJpbmQyID0gb24od2luZG93LCAnbG9hZCcsIGhhbmRsZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5kZXgoZWxlbWVudCwgcmVmKSB7XG4gICAgICAgIHJldHVybiByZWZcbiAgICAgICAgICAgID8gdG9Ob2RlcyhlbGVtZW50KS5pbmRleE9mKHRvTm9kZShyZWYpKVxuICAgICAgICAgICAgOiB0b05vZGVzKChlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpKSAmJiBlbGVtZW50LnBhcmVudE5vZGUuY2hpbGRyZW4pLmluZGV4T2YoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SW5kZXgoaSwgZWxlbWVudHMsIGN1cnJlbnQsIGZpbml0ZSkge1xuICAgICAgICBpZiAoIGN1cnJlbnQgPT09IHZvaWQgMCApIGN1cnJlbnQgPSAwO1xuICAgICAgICBpZiAoIGZpbml0ZSA9PT0gdm9pZCAwICkgZmluaXRlID0gZmFsc2U7XG5cblxuICAgICAgICBlbGVtZW50cyA9IHRvTm9kZXMoZWxlbWVudHMpO1xuXG4gICAgICAgIHZhciBsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaSA9IGlzTnVtZXJpYyhpKVxuICAgICAgICAgICAgPyB0b051bWJlcihpKVxuICAgICAgICAgICAgOiBpID09PSAnbmV4dCdcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnQgKyAxXG4gICAgICAgICAgICAgICAgOiBpID09PSAncHJldmlvdXMnXG4gICAgICAgICAgICAgICAgICAgID8gY3VycmVudCAtIDFcbiAgICAgICAgICAgICAgICAgICAgOiBpbmRleChlbGVtZW50cywgaSk7XG5cbiAgICAgICAgaWYgKGZpbml0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNsYW1wKGksIDAsIGxlbmd0aCAtIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaSAlPSBsZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIGkgPCAwID8gaSArIGxlbmd0aCA6IGk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1wdHkoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBodG1sKHBhcmVudCwgaHRtbCkge1xuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcbiAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKGh0bWwpXG4gICAgICAgICAgICA/IHBhcmVudC5pbm5lckhUTUxcbiAgICAgICAgICAgIDogYXBwZW5kKHBhcmVudC5oYXNDaGlsZE5vZGVzKCkgPyBlbXB0eShwYXJlbnQpIDogcGFyZW50LCBodG1sKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwZW5kKHBhcmVudCwgZWxlbWVudCkge1xuXG4gICAgICAgIHBhcmVudCA9IHRvTm9kZShwYXJlbnQpO1xuXG4gICAgICAgIGlmICghcGFyZW50Lmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGVuZChwYXJlbnQsIGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHBhcmVudC5maXJzdENoaWxkKTsgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBlbmQocGFyZW50LCBlbGVtZW50KSB7XG4gICAgICAgIHBhcmVudCA9IHRvTm9kZShwYXJlbnQpO1xuICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZXMoZWxlbWVudCwgZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYmVmb3JlKHJlZiwgZWxlbWVudCkge1xuICAgICAgICByZWYgPSB0b05vZGUocmVmKTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiByZWYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgcmVmKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWZ0ZXIocmVmLCBlbGVtZW50KSB7XG4gICAgICAgIHJlZiA9IHRvTm9kZShyZWYpO1xuICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZXMoZWxlbWVudCwgZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHJlZi5uZXh0U2libGluZ1xuICAgICAgICAgICAgPyBiZWZvcmUocmVmLm5leHRTaWJsaW5nLCBlbGVtZW50KVxuICAgICAgICAgICAgOiBhcHBlbmQocmVmLnBhcmVudE5vZGUsIGVsZW1lbnQpOyB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zZXJ0Tm9kZXMoZWxlbWVudCwgZm4pIHtcbiAgICAgICAgZWxlbWVudCA9IGlzU3RyaW5nKGVsZW1lbnQpID8gZnJhZ21lbnQoZWxlbWVudCkgOiBlbGVtZW50O1xuICAgICAgICByZXR1cm4gZWxlbWVudFxuICAgICAgICAgICAgPyAnbGVuZ3RoJyBpbiBlbGVtZW50XG4gICAgICAgICAgICAgICAgPyB0b05vZGVzKGVsZW1lbnQpLm1hcChmbilcbiAgICAgICAgICAgICAgICA6IGZuKGVsZW1lbnQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlKGVsZW1lbnQpIHtcbiAgICAgICAgdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSAmJiBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyYXBBbGwoZWxlbWVudCwgc3RydWN0dXJlKSB7XG5cbiAgICAgICAgc3RydWN0dXJlID0gdG9Ob2RlKGJlZm9yZShlbGVtZW50LCBzdHJ1Y3R1cmUpKTtcblxuICAgICAgICB3aGlsZSAoc3RydWN0dXJlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZS5maXJzdENoaWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgYXBwZW5kKHN0cnVjdHVyZSwgZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwSW5uZXIoZWxlbWVudCwgc3RydWN0dXJlKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc0NoaWxkTm9kZXMgPyB3cmFwQWxsKHRvTm9kZXMoZWxlbWVudC5jaGlsZE5vZGVzKSwgc3RydWN0dXJlKSA6IGFwcGVuZChlbGVtZW50LCBzdHJ1Y3R1cmUpOyB9XG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVud3JhcChlbGVtZW50KSB7XG4gICAgICAgIHRvTm9kZXMoZWxlbWVudClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZTsgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgc2VsZikgeyByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7IH0pXG4gICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlKHBhcmVudCwgcGFyZW50LmNoaWxkTm9kZXMpO1xuICAgICAgICAgICAgICAgIHJlbW92ZShwYXJlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGZyYWdtZW50UmUgPSAvXlxccyo8KFxcdyt8ISlbXj5dKj4vO1xuICAgIHZhciBzaW5nbGVUYWdSZSA9IC9ePChcXHcrKVxccypcXC8/Pig/OjxcXC9cXDE+KT8kLztcblxuICAgIGZ1bmN0aW9uIGZyYWdtZW50KGh0bWwpIHtcblxuICAgICAgICB2YXIgbWF0Y2hlcyA9IHNpbmdsZVRhZ1JlLmV4ZWMoaHRtbCk7XG4gICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChtYXRjaGVzWzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaWYgKGZyYWdtZW50UmUudGVzdChodG1sKSkge1xuICAgICAgICAgICAgY29udGFpbmVyLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgaHRtbC50cmltKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGFpbmVyLnRleHRDb250ZW50ID0gaHRtbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGggPiAxID8gdG9Ob2Rlcyhjb250YWluZXIuY2hpbGROb2RlcykgOiBjb250YWluZXIuZmlyc3RDaGlsZDtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5KG5vZGUsIGZuKSB7XG5cbiAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUubm9kZVR5cGUgIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZuKG5vZGUpO1xuICAgICAgICBub2RlID0gbm9kZS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgICAgIGFwcGx5KG5vZGUsIGZuKTtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICBhcHBseSQxKGVsZW1lbnQsIGFyZ3MsICdhZGQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgYXBwbHkkMShlbGVtZW50LCBhcmdzLCAncmVtb3ZlJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3NlcyhlbGVtZW50LCBjbHMpIHtcbiAgICAgICAgZmlsdGVyQXR0cihlbGVtZW50LCAnY2xhc3MnLCBuZXcgUmVnRXhwKChcIihefFxcXFxzKVwiICsgY2xzICsgXCIoPyFcXFxcUylcIiksICdnJyksICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXBsYWNlQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIGFyZ3NbMF0gJiYgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgYXJnc1swXSk7XG4gICAgICAgIGFyZ3NbMV0gJiYgYWRkQ2xhc3MoZWxlbWVudCwgYXJnc1sxXSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQ2xhc3MoZWxlbWVudCwgY2xzKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNscyk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuXG4gICAgICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MgPSBnZXRBcmdzJDEoYXJncyk7XG5cbiAgICAgICAgdmFyIGZvcmNlID0gIWlzU3RyaW5nKGFyZ3NbYXJncy5sZW5ndGggLSAxXSkgPyBhcmdzLnBvcCgpIDogW107IC8vIGluIGlPUyA5LjMgZm9yY2UgPT09IHVuZGVmaW5lZCBldmFsdWF0ZXMgdG8gZmFsc2VcblxuICAgICAgICBhcmdzID0gYXJncy5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgdG9Ob2RlcyhlbGVtZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciBjbGFzc0xpc3QgPSByZWYuY2xhc3NMaXN0O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0cy5Gb3JjZVxuICAgICAgICAgICAgICAgICAgICA/IGNsYXNzTGlzdC50b2dnbGUuYXBwbHkoY2xhc3NMaXN0LCBbYXJnc1tpXV0uY29uY2F0KGZvcmNlKSlcbiAgICAgICAgICAgICAgICAgICAgOiAoY2xhc3NMaXN0WyghaXNVbmRlZmluZWQoZm9yY2UpID8gZm9yY2UgOiAhY2xhc3NMaXN0LmNvbnRhaW5zKGFyZ3NbaV0pKSA/ICdhZGQnIDogJ3JlbW92ZSddKGFyZ3NbaV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseSQxKGVsZW1lbnQsIGFyZ3MsIGZuKSB7XG4gICAgICAgIGFyZ3MgPSBnZXRBcmdzJDEoYXJncykuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIGFyZ3MubGVuZ3RoICYmIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gcmVmLmNsYXNzTGlzdDtcblxuICAgICAgICAgICAgc3VwcG9ydHMuTXVsdGlwbGVcbiAgICAgICAgICAgICAgICA/IGNsYXNzTGlzdFtmbl0uYXBwbHkoY2xhc3NMaXN0LCBhcmdzKVxuICAgICAgICAgICAgICAgIDogYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHsgcmV0dXJuIGNsYXNzTGlzdFtmbl0oY2xzKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEFyZ3MkMShhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzLnJlZHVjZShmdW5jdGlvbiAoYXJncywgYXJnKSB7IHJldHVybiBhcmdzLmNvbmNhdC5jYWxsKGFyZ3MsIGlzU3RyaW5nKGFyZykgJiYgaW5jbHVkZXMoYXJnLCAnICcpID8gYXJnLnRyaW0oKS5zcGxpdCgnICcpIDogYXJnKTsgfVxuICAgICAgICAgICAgLCBbXSk7XG4gICAgfVxuXG4gICAgdmFyIHN1cHBvcnRzID0ge307XG5cbiAgICAvLyBJRSAxMVxuICAgIChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJykuY2xhc3NMaXN0O1xuICAgICAgICBpZiAobGlzdCkge1xuICAgICAgICAgICAgbGlzdC5hZGQoJ2EnLCAnYicpO1xuICAgICAgICAgICAgbGlzdC50b2dnbGUoJ2MnLCBmYWxzZSk7XG4gICAgICAgICAgICBzdXBwb3J0cy5NdWx0aXBsZSA9IGxpc3QuY29udGFpbnMoJ2InKTtcbiAgICAgICAgICAgIHN1cHBvcnRzLkZvcmNlID0gIWxpc3QuY29udGFpbnMoJ2MnKTtcbiAgICAgICAgfVxuICAgICAgICBsaXN0ID0gbnVsbDtcblxuICAgIH0pKCk7XG5cbiAgICB2YXIgY3NzTnVtYmVyID0ge1xuICAgICAgICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCc6IHRydWUsXG4gICAgICAgICdjb2x1bW4tY291bnQnOiB0cnVlLFxuICAgICAgICAnZmlsbC1vcGFjaXR5JzogdHJ1ZSxcbiAgICAgICAgJ2ZsZXgtZ3Jvdyc6IHRydWUsXG4gICAgICAgICdmbGV4LXNocmluayc6IHRydWUsXG4gICAgICAgICdmb250LXdlaWdodCc6IHRydWUsXG4gICAgICAgICdsaW5lLWhlaWdodCc6IHRydWUsXG4gICAgICAgICdvcGFjaXR5JzogdHJ1ZSxcbiAgICAgICAgJ29yZGVyJzogdHJ1ZSxcbiAgICAgICAgJ29ycGhhbnMnOiB0cnVlLFxuICAgICAgICAnd2lkb3dzJzogdHJ1ZSxcbiAgICAgICAgJ3otaW5kZXgnOiB0cnVlLFxuICAgICAgICAnem9vbSc6IHRydWVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY3NzKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSkge1xuXG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkge1xuXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcocHJvcGVydHkpKSB7XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BOYW1lKHByb3BlcnR5KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGlzTnVtZXJpYyh2YWx1ZSkgJiYgIWNzc051bWJlcltwcm9wZXJ0eV0gPyAodmFsdWUgKyBcInB4XCIpIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkocHJvcGVydHkpKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5LnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BlcnR5XSA9IHN0eWxlc1twcm9wTmFtZShwcm9wZXJ0eSldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgIGVhY2gocHJvcGVydHksIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcGVydHkpIHsgcmV0dXJuIGNzcyhlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG5cbiAgICAgICAgfSlbMF07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTdHlsZXMoZWxlbWVudCwgcHNldWRvRWx0KSB7XG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCBwc2V1ZG9FbHQpIHtcbiAgICAgICAgcmV0dXJuIGdldFN0eWxlcyhlbGVtZW50LCBwc2V1ZG9FbHQpW3Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICB2YXIgdmFycyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZ2V0Q3NzVmFyKG5hbWUpIHtcblxuICAgICAgICBpZiAoIShuYW1lIGluIHZhcnMpKSB7XG5cbiAgICAgICAgICAgIC8qIHVzYWdlIGluIGNzczogLnZhci1uYW1lOmJlZm9yZSB7IGNvbnRlbnQ6XCJ4eXpcIiB9ICovXG5cbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYXBwZW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuXG4gICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCAoXCJ2YXItXCIgKyBuYW1lKSk7XG5cbiAgICAgICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgICAgICB2YXJzW25hbWVdID0gZ2V0U3R5bGUoZWxlbWVudCwgJ2NvbnRlbnQnLCAnOmJlZm9yZScpLnJlcGxhY2UoL15bXCInXSguKilbXCInXSQvLCAnJDEnKTtcbiAgICAgICAgICAgICAgICB2YXJzW25hbWVdID0gSlNPTi5wYXJzZSh2YXJzW25hbWVdKTtcblxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFyc1tuYW1lXTtcblxuICAgIH1cblxuICAgIHZhciBjc3NQcm9wcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gcHJvcE5hbWUobmFtZSkge1xuXG4gICAgICAgIHZhciByZXQgPSBjc3NQcm9wc1tuYW1lXTtcbiAgICAgICAgaWYgKCFyZXQpIHtcbiAgICAgICAgICAgIHJldCA9IGNzc1Byb3BzW25hbWVdID0gdmVuZG9yUHJvcE5hbWUobmFtZSkgfHwgbmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHZhciBjc3NQcmVmaXhlcyA9IFsnd2Via2l0JywgJ21veicsICdtcyddO1xuICAgIHZhciByZWYkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ18nKTtcbiAgICB2YXIgc3R5bGUgPSByZWYkMS5zdHlsZTtcblxuICAgIGZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKG5hbWUpIHtcblxuICAgICAgICBuYW1lID0gaHlwaGVuYXRlKG5hbWUpO1xuXG4gICAgICAgIGlmIChuYW1lIGluIHN0eWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gY3NzUHJlZml4ZXMubGVuZ3RoLCBwcmVmaXhlZE5hbWU7XG5cbiAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgcHJlZml4ZWROYW1lID0gXCItXCIgKyAoY3NzUHJlZml4ZXNbaV0pICsgXCItXCIgKyBuYW1lO1xuICAgICAgICAgICAgaWYgKHByZWZpeGVkTmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXhlZE5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFuc2l0aW9uKGVsZW1lbnQsIHByb3BzLCBkdXJhdGlvbiwgdGltaW5nKSB7XG4gICAgICAgIGlmICggZHVyYXRpb24gPT09IHZvaWQgMCApIGR1cmF0aW9uID0gNDAwO1xuICAgICAgICBpZiAoIHRpbWluZyA9PT0gdm9pZCAwICkgdGltaW5nID0gJ2xpbmVhcic7XG5cblxuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLmFsbCh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNzcyhlbGVtZW50LCBuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcpOyB9LCBkdXJhdGlvbik7XG5cbiAgICAgICAgICAgICAgICBvbmNlKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kIHRyYW5zaXRpb25jYW5jZWxlZCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhlbGVtZW50LCAndWstdHJhbnNpdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tcHJvcGVydHknOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLWR1cmF0aW9uJzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nOiAnJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gJ3RyYW5zaXRpb25jYW5jZWxlZCcgPyByZWplY3QoKSA6IHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gdGFyZ2V0O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tcHJvcGVydHknOiBPYmplY3Qua2V5cyhwcm9wcykubWFwKHByb3BOYW1lKS5qb2luKCcsJyksXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLWR1cmF0aW9uJzogKGR1cmF0aW9uICsgXCJtc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJzogdGltaW5nXG4gICAgICAgICAgICAgICAgfSwgcHJvcHMpKTtcblxuICAgICAgICAgICAgfSk7IH1cbiAgICAgICAgKSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVHJhbnNpdGlvbiA9IHtcblxuICAgICAgICBzdGFydDogdHJhbnNpdGlvbixcblxuICAgICAgICBzdG9wOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJyk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25jYW5jZWxlZCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluUHJvZ3Jlc3M6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBoYXNDbGFzcyhlbGVtZW50LCAndWstdHJhbnNpdGlvbicpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIGFuaW1hdGlvblByZWZpeCA9ICd1ay1hbmltYXRpb24tJztcbiAgICB2YXIgY2xzQ2FuY2VsQW5pbWF0aW9uID0gJ3VrLWNhbmNlbC1hbmltYXRpb24nO1xuXG4gICAgZnVuY3Rpb24gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4sIG91dCkge1xuICAgICAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG4gICAgICAgIGlmICggZHVyYXRpb24gPT09IHZvaWQgMCApIGR1cmF0aW9uID0gMjAwO1xuXG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBhbmltYXRlLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzJDEpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTsgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGNscyA9IGFuaW1hdGlvbiArIFwiIFwiICsgYW5pbWF0aW9uUHJlZml4ICsgKG91dCA/ICdsZWF2ZScgOiAnZW50ZXInKTtcblxuICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKGFuaW1hdGlvbiwgYW5pbWF0aW9uUHJlZml4KSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNscyArPSBcIiB1ay10cmFuc2Zvcm0tb3JpZ2luLVwiICsgb3JpZ2luO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzICs9IFwiIFwiICsgYW5pbWF0aW9uUHJlZml4ICsgXCJyZXZlcnNlXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgICBvbmNlKGVsZW1lbnQsICdhbmltYXRpb25lbmQgYW5pbWF0aW9uY2FuY2VsJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc1Jlc2V0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdhbmltYXRpb25jYW5jZWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlJDEucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Jlc2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNSZXNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xzQ2FuY2VsQW5pbWF0aW9uKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCAnYW5pbWF0aW9uRHVyYXRpb24nLCAoZHVyYXRpb24gKyBcIm1zXCIpKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgKGFuaW1hdGlvblByZWZpeCArIFwiXFxcXFMqXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICkpO1xuXG4gICAgfVxuXG4gICAgdmFyIGluUHJvZ3Jlc3MgPSBuZXcgUmVnRXhwKChhbmltYXRpb25QcmVmaXggKyBcIihlbnRlcnxsZWF2ZSlcIikpO1xuICAgIHZhciBBbmltYXRpb24gPSB7XG5cbiAgICAgICAgaW46IGZ1bmN0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbikge1xuICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCBmYWxzZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3V0OiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5Qcm9ncmVzczogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGluUHJvZ3Jlc3MudGVzdChhdHRyKGVsZW1lbnQsICdjbGFzcycpKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRyaWdnZXIoZWxlbWVudCwgJ2FuaW1hdGlvbmNhbmNlbCcpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gJChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gIWlzU3RyaW5nKHNlbGVjdG9yKVxuICAgICAgICAgICAgPyB0b05vZGUoc2VsZWN0b3IpXG4gICAgICAgICAgICA6IGlzSHRtbChzZWxlY3RvcilcbiAgICAgICAgICAgICAgICA/IHRvTm9kZShmcmFnbWVudChzZWxlY3RvcikpXG4gICAgICAgICAgICAgICAgOiBmaW5kKHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiAkJChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gIWlzU3RyaW5nKHNlbGVjdG9yKVxuICAgICAgICAgICAgPyB0b05vZGVzKHNlbGVjdG9yKVxuICAgICAgICAgICAgOiBpc0h0bWwoc2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgPyB0b05vZGVzKGZyYWdtZW50KHNlbGVjdG9yKSlcbiAgICAgICAgICAgICAgICA6IGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSHRtbChzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0clswXSA9PT0gJzwnIHx8IHN0ci5tYXRjaCgvXlxccyo8Lyk7XG4gICAgfVxuXG4gICAgdmFyIGRpcnMgPSB7XG4gICAgICAgIHdpZHRoOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBoZWlnaHQ6IFsneScsICd0b3AnLCAnYm90dG9tJ11cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9zaXRpb25BdChlbGVtZW50LCB0YXJnZXQsIGVsQXR0YWNoLCB0YXJnZXRBdHRhY2gsIGVsT2Zmc2V0LCB0YXJnZXRPZmZzZXQsIGZsaXAsIGJvdW5kYXJ5KSB7XG5cbiAgICAgICAgZWxBdHRhY2ggPSBnZXRQb3MoZWxBdHRhY2gpO1xuICAgICAgICB0YXJnZXRBdHRhY2ggPSBnZXRQb3ModGFyZ2V0QXR0YWNoKTtcblxuICAgICAgICB2YXIgZmxpcHBlZCA9IHtlbGVtZW50OiBlbEF0dGFjaCwgdGFyZ2V0OiB0YXJnZXRBdHRhY2h9O1xuXG4gICAgICAgIGlmICghZWxlbWVudCB8fCAhdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmxpcHBlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkaW0gPSBnZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgICAgICB2YXIgdGFyZ2V0RGltID0gZ2V0RGltZW5zaW9ucyh0YXJnZXQpO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSB0YXJnZXREaW07XG5cbiAgICAgICAgbW92ZVRvKHBvc2l0aW9uLCBlbEF0dGFjaCwgZGltLCAtMSk7XG4gICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgdGFyZ2V0QXR0YWNoLCB0YXJnZXREaW0sIDEpO1xuXG4gICAgICAgIGVsT2Zmc2V0ID0gZ2V0T2Zmc2V0cyhlbE9mZnNldCwgZGltLndpZHRoLCBkaW0uaGVpZ2h0KTtcbiAgICAgICAgdGFyZ2V0T2Zmc2V0ID0gZ2V0T2Zmc2V0cyh0YXJnZXRPZmZzZXQsIHRhcmdldERpbS53aWR0aCwgdGFyZ2V0RGltLmhlaWdodCk7XG5cbiAgICAgICAgZWxPZmZzZXRbJ3gnXSArPSB0YXJnZXRPZmZzZXRbJ3gnXTtcbiAgICAgICAgZWxPZmZzZXRbJ3knXSArPSB0YXJnZXRPZmZzZXRbJ3knXTtcblxuICAgICAgICBwb3NpdGlvbi5sZWZ0ICs9IGVsT2Zmc2V0Wyd4J107XG4gICAgICAgIHBvc2l0aW9uLnRvcCArPSBlbE9mZnNldFsneSddO1xuXG4gICAgICAgIGJvdW5kYXJ5ID0gZ2V0RGltZW5zaW9ucyhib3VuZGFyeSB8fCB3aW5kb3ckMShlbGVtZW50KSk7XG5cbiAgICAgICAgaWYgKGZsaXApIHtcbiAgICAgICAgICAgIGVhY2goZGlycywgZnVuY3Rpb24gKHJlZiwgcHJvcCkge1xuICAgICAgICAgICAgICAgIHZhciBkaXIgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnbkZsaXAgPSByZWZbMl07XG5cblxuICAgICAgICAgICAgICAgIGlmICghKGZsaXAgPT09IHRydWUgfHwgaW5jbHVkZXMoZmxpcCwgZGlyKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBlbGVtT2Zmc2V0ID0gZWxBdHRhY2hbZGlyXSA9PT0gYWxpZ25cbiAgICAgICAgICAgICAgICAgICAgPyAtZGltW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgIDogZWxBdHRhY2hbZGlyXSA9PT0gYWxpZ25GbGlwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGRpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldE9mZnNldCA9IHRhcmdldEF0dGFjaFtkaXJdID09PSBhbGlnblxuICAgICAgICAgICAgICAgICAgICA/IHRhcmdldERpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA6IHRhcmdldEF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gLXRhcmdldERpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uW2FsaWduXSA8IGJvdW5kYXJ5W2FsaWduXSB8fCBwb3NpdGlvblthbGlnbl0gKyBkaW1bcHJvcF0gPiBib3VuZGFyeVthbGlnbkZsaXBdKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlck9mZnNldCA9IGRpbVtwcm9wXSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJUYXJnZXRPZmZzZXQgPSB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicgPyAtdGFyZ2V0RGltW3Byb3BdIC8gMiA6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgZWxBdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHkoY2VudGVyT2Zmc2V0LCBjZW50ZXJUYXJnZXRPZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBhcHBseSgtY2VudGVyT2Zmc2V0LCAtY2VudGVyVGFyZ2V0T2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICApIHx8IGFwcGx5KGVsZW1PZmZzZXQsIHRhcmdldE9mZnNldCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcHBseShlbGVtT2Zmc2V0LCB0YXJnZXRPZmZzZXQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3VmFsID0gcG9zaXRpb25bYWxpZ25dICsgZWxlbU9mZnNldCArIHRhcmdldE9mZnNldCAtIGVsT2Zmc2V0W2Rpcl0gKiAyO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWwgPj0gYm91bmRhcnlbYWxpZ25dICYmIG5ld1ZhbCArIGRpbVtwcm9wXSA8PSBib3VuZGFyeVthbGlnbkZsaXBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gPSBuZXdWYWw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFsnZWxlbWVudCcsICd0YXJnZXQnXS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsaXBwZWRbZWxdW2Rpcl0gPSAhZWxlbU9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZsaXBwZWRbZWxdW2Rpcl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmbGlwcGVkW2VsXVtkaXJdID09PSBkaXJzW3Byb3BdWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGRpcnNbcHJvcF1bMl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGlyc1twcm9wXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9mZnNldChlbGVtZW50LCBwb3NpdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIGZsaXBwZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2Zmc2V0KGVsZW1lbnQsIGNvb3JkaW5hdGVzKSB7XG5cbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcblxuICAgICAgICBpZiAoY29vcmRpbmF0ZXMpIHtcblxuICAgICAgICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBvZmZzZXQoZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgcG9zID0gY3NzKGVsZW1lbnQsICdwb3NpdGlvbicpO1xuXG4gICAgICAgICAgICBbJ2xlZnQnLCAndG9wJ10uZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wIGluIGNvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNzcyhlbGVtZW50LCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHByb3AsIGNvb3JkaW5hdGVzW3Byb3BdIC0gY3VycmVudE9mZnNldFtwcm9wXVxuICAgICAgICAgICAgICAgICAgICAgICAgKyB0b0Zsb2F0KHBvcyA9PT0gJ2Fic29sdXRlJyAmJiB2YWx1ZSA9PT0gJ2F1dG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwb3NpdGlvbihlbGVtZW50KVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgdmFyIHJlZiA9IHdpbmRvdyQxKGVsZW1lbnQpO1xuICAgICAgICB2YXIgdG9wID0gcmVmLnBhZ2VZT2Zmc2V0O1xuICAgICAgICB2YXIgbGVmdCA9IHJlZi5wYWdlWE9mZnNldDtcblxuICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcblxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IGVsZW1lbnQuaW5uZXJIZWlnaHQ7XG4gICAgICAgICAgICB2YXIgd2lkdGggPSBlbGVtZW50LmlubmVyV2lkdGg7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9wOiB0b3AsXG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgYm90dG9tOiB0b3AgKyBoZWlnaHQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnQgKyB3aWR0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3R5bGUsIGhpZGRlbjtcblxuICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgc3R5bGUgPSBhdHRyKGVsZW1lbnQsICdzdHlsZScpO1xuICAgICAgICAgICAgaGlkZGVuID0gYXR0cihlbGVtZW50LCAnaGlkZGVuJyk7XG5cbiAgICAgICAgICAgIGF0dHIoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgIHN0eWxlOiAoKHN0eWxlIHx8ICcnKSArIFwiO2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDtcIiksXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBudWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHN0eWxlKSkge1xuICAgICAgICAgICAgYXR0cihlbGVtZW50LCB7c3R5bGU6IHN0eWxlLCBoaWRkZW46IGhpZGRlbn0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB0b3AsXG4gICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyBsZWZ0LFxuICAgICAgICAgICAgYm90dG9tOiByZWN0LmJvdHRvbSArIHRvcCxcbiAgICAgICAgICAgIHJpZ2h0OiByZWN0LnJpZ2h0ICsgbGVmdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb3NpdGlvbihlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgdmFyIHBhcmVudCA9IG9mZnNldFBhcmVudChlbGVtZW50KTtcbiAgICAgICAgdmFyIHBhcmVudE9mZnNldCA9IHBhcmVudCA9PT0gZG9jRWwoZWxlbWVudCkgPyB7dG9wOiAwLCBsZWZ0OiAwfSA6IG9mZnNldChwYXJlbnQpO1xuICAgICAgICB2YXIgcmVmID0gWyd0b3AnLCAnbGVmdCddLnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3ApIHtcbiAgICAgICAgICAgIHZhciBwcm9wTmFtZSQkMSA9IHVjZmlyc3QocHJvcCk7XG4gICAgICAgICAgICBwcm9wc1twcm9wXSAtPSBwYXJlbnRPZmZzZXRbcHJvcF1cbiAgICAgICAgICAgICAgICArICh0b0Zsb2F0KGNzcyhlbGVtZW50LCAoXCJtYXJnaW5cIiArIHByb3BOYW1lJCQxKSkpIHx8IDApXG4gICAgICAgICAgICAgICAgKyAodG9GbG9hdChjc3MocGFyZW50LCAoXCJib3JkZXJcIiArIHByb3BOYW1lJCQxICsgXCJXaWR0aFwiKSkpIHx8IDApO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9LCBvZmZzZXQoZWxlbWVudCkpO1xuICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgdmFyIGxlZnQgPSByZWYubGVmdDtcblxuICAgICAgICByZXR1cm4ge3RvcDogdG9wLCBsZWZ0OiBsZWZ0fTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuXG4gICAgICAgIHZhciBwYXJlbnQgPSB0b05vZGUoZWxlbWVudCkub2Zmc2V0UGFyZW50O1xuXG4gICAgICAgIHdoaWxlIChwYXJlbnQgJiYgY3NzKHBhcmVudCwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQub2Zmc2V0UGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudCB8fCBkb2NFbChlbGVtZW50KTtcbiAgICB9XG5cbiAgICB2YXIgaGVpZ2h0ID0gZGltZW5zaW9uKCdoZWlnaHQnKTtcbiAgICB2YXIgd2lkdGggPSBkaW1lbnNpb24oJ3dpZHRoJyk7XG5cbiAgICBmdW5jdGlvbiBkaW1lbnNpb24ocHJvcCkge1xuICAgICAgICB2YXIgcHJvcE5hbWUkJDEgPSB1Y2ZpcnN0KHByb3ApO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc1dpbmRvdyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudFsoXCJpbm5lclwiICsgcHJvcE5hbWUkJDEpXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNEb2N1bWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZG9jID0gZWxlbWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChkb2NbKFwib2Zmc2V0XCIgKyBwcm9wTmFtZSQkMSldLCBkb2NbKFwic2Nyb2xsXCIgKyBwcm9wTmFtZSQkMSldKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNzcyhlbGVtZW50LCBwcm9wKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlID09PSAnYXV0bycgPyBlbGVtZW50WyhcIm9mZnNldFwiICsgcHJvcE5hbWUkJDEpXSA6IHRvRmxvYXQodmFsdWUpIHx8IDA7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgLSBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBwcm9wLCAhdmFsdWUgJiYgdmFsdWUgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICA6ICt2YWx1ZSArIGJveE1vZGVsQWRqdXN0KHByb3AsIGVsZW1lbnQpICsgJ3B4J1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJveE1vZGVsQWRqdXN0KHByb3AsIGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGNzcyhlbGVtZW50LCAnYm94U2l6aW5nJykgPT09ICdib3JkZXItYm94J1xuICAgICAgICAgICAgPyBkaXJzW3Byb3BdLnNsaWNlKDEpLm1hcCh1Y2ZpcnN0KS5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7IHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgICAgICsgdG9GbG9hdChjc3MoZWxlbWVudCwgKFwicGFkZGluZ1wiICsgcHJvcCkpKVxuICAgICAgICAgICAgICAgICsgdG9GbG9hdChjc3MoZWxlbWVudCwgKFwiYm9yZGVyXCIgKyBwcm9wICsgXCJXaWR0aFwiKSkpOyB9XG4gICAgICAgICAgICAgICAgLCAwKVxuICAgICAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vdmVUbyhwb3NpdGlvbiwgYXR0YWNoLCBkaW0sIGZhY3Rvcikge1xuICAgICAgICBlYWNoKGRpcnMsIGZ1bmN0aW9uIChyZWYsIHByb3ApIHtcbiAgICAgICAgICAgIHZhciBkaXIgPSByZWZbMF07XG4gICAgICAgICAgICB2YXIgYWxpZ24gPSByZWZbMV07XG4gICAgICAgICAgICB2YXIgYWxpZ25GbGlwID0gcmVmWzJdO1xuXG4gICAgICAgICAgICBpZiAoYXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uW2FsaWduXSArPSBkaW1bcHJvcF0gKiBmYWN0b3I7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF0dGFjaFtkaXJdID09PSAnY2VudGVyJykge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uW2FsaWduXSArPSBkaW1bcHJvcF0gKiBmYWN0b3IgLyAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQb3MocG9zKSB7XG5cbiAgICAgICAgdmFyIHggPSAvbGVmdHxjZW50ZXJ8cmlnaHQvO1xuICAgICAgICB2YXIgeSA9IC90b3B8Y2VudGVyfGJvdHRvbS87XG5cbiAgICAgICAgcG9zID0gKHBvcyB8fCAnJykuc3BsaXQoJyAnKTtcblxuICAgICAgICBpZiAocG9zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcG9zID0geC50ZXN0KHBvc1swXSlcbiAgICAgICAgICAgICAgICA/IHBvcy5jb25jYXQoWydjZW50ZXInXSlcbiAgICAgICAgICAgICAgICA6IHkudGVzdChwb3NbMF0pXG4gICAgICAgICAgICAgICAgICAgID8gWydjZW50ZXInXS5jb25jYXQocG9zKVxuICAgICAgICAgICAgICAgICAgICA6IFsnY2VudGVyJywgJ2NlbnRlciddO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHgudGVzdChwb3NbMF0pID8gcG9zWzBdIDogJ2NlbnRlcicsXG4gICAgICAgICAgICB5OiB5LnRlc3QocG9zWzFdKSA/IHBvc1sxXSA6ICdjZW50ZXInXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0cyhvZmZzZXRzLCB3aWR0aCwgaGVpZ2h0KSB7XG5cbiAgICAgICAgdmFyIHJlZiA9IChvZmZzZXRzIHx8ICcnKS5zcGxpdCgnICcpO1xuICAgICAgICB2YXIgeCA9IHJlZlswXTtcbiAgICAgICAgdmFyIHkgPSByZWZbMV07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggPyB0b0Zsb2F0KHgpICogKGVuZHNXaXRoKHgsICclJykgPyB3aWR0aCAvIDEwMCA6IDEpIDogMCxcbiAgICAgICAgICAgIHk6IHkgPyB0b0Zsb2F0KHkpICogKGVuZHNXaXRoKHksICclJykgPyBoZWlnaHQgLyAxMDAgOiAxKSA6IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmbGlwUG9zaXRpb24ocG9zKSB7XG4gICAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2xlZnQnO1xuICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSW5WaWV3KGVsZW1lbnQsIHRvcE9mZnNldCwgbGVmdE9mZnNldCwgcmVsYXRpdmVUb1ZpZXdwb3J0KSB7XG4gICAgICAgIGlmICggdG9wT2Zmc2V0ID09PSB2b2lkIDAgKSB0b3BPZmZzZXQgPSAwO1xuICAgICAgICBpZiAoIGxlZnRPZmZzZXQgPT09IHZvaWQgMCApIGxlZnRPZmZzZXQgPSAwO1xuXG5cbiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3ckMShlbGVtZW50KTtcblxuICAgICAgICBpZiAocmVsYXRpdmVUb1ZpZXdwb3J0KSB7XG5cbiAgICAgICAgICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHtcbiAgICAgICAgICAgICAgICB0b3A6IC10b3BPZmZzZXQsXG4gICAgICAgICAgICAgICAgbGVmdDogLWxlZnRPZmZzZXQsXG4gICAgICAgICAgICAgICAgYm90dG9tOiB0b3BPZmZzZXQgKyBoZWlnaHQod2luKSxcbiAgICAgICAgICAgICAgICByaWdodDogbGVmdE9mZnNldCArIHdpZHRoKHdpbilcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXRQb3NpdGlvbihlbGVtZW50KTtcbiAgICAgICAgICAgIHZhciBlbFRvcCA9IHJlZlswXTtcbiAgICAgICAgICAgIHZhciBlbExlZnQgPSByZWZbMV07XG4gICAgICAgICAgICB2YXIgdG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgdmFyIGxlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG5cbiAgICAgICAgICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBlbFRvcCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogZWxMZWZ0LFxuICAgICAgICAgICAgICAgICAgICBib3R0b206IGVsVG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBlbFRvcCArIGVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3AgLSB0b3BPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQgLSBsZWZ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBib3R0b206IHRvcCArIHRvcE9mZnNldCArIGhlaWdodCh3aW4pLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogbGVmdCArIGxlZnRPZmZzZXQgKyB3aWR0aCh3aW4pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2Nyb2xsZWRPdmVyKGVsZW1lbnQsIGhlaWdodE9mZnNldCkge1xuICAgICAgICBpZiAoIGhlaWdodE9mZnNldCA9PT0gdm9pZCAwICkgaGVpZ2h0T2Zmc2V0ID0gMDtcblxuXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgdmFyIHdpbiA9IHdpbmRvdyQxKGVsZW1lbnQpO1xuICAgICAgICB2YXIgZG9jID0gZG9jdW1lbnQkMShlbGVtZW50KTtcbiAgICAgICAgdmFyIGVsSGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgKyBoZWlnaHRPZmZzZXQ7XG4gICAgICAgIHZhciByZWYgPSBvZmZzZXRQb3NpdGlvbihlbGVtZW50KTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZlswXTtcbiAgICAgICAgdmFyIHZwID0gaGVpZ2h0KHdpbik7XG4gICAgICAgIHZhciB2aCA9IHZwICsgTWF0aC5taW4oMCwgdG9wIC0gdnApO1xuICAgICAgICB2YXIgZGlmZiA9IE1hdGgubWF4KDAsIHZwIC0gKGhlaWdodChkb2MpICsgaGVpZ2h0T2Zmc2V0IC0gKHRvcCArIGVsSGVpZ2h0KSkpO1xuXG4gICAgICAgIHJldHVybiBjbGFtcCgoKHZoICsgd2luLnBhZ2VZT2Zmc2V0IC0gdG9wKSAvICgodmggKyAoZWxIZWlnaHQgLSAoZGlmZiA8IHZwID8gZGlmZiA6IDApKSkgLyAxMDApKSAvIDEwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gWzAsIDBdO1xuXG4gICAgICAgIGRvIHtcblxuICAgICAgICAgICAgb2Zmc2V0WzBdICs9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgb2Zmc2V0WzFdICs9IGVsZW1lbnQub2Zmc2V0TGVmdDtcblxuICAgICAgICAgICAgaWYgKGNzcyhlbGVtZW50LCAncG9zaXRpb24nKSA9PT0gJ2ZpeGVkJykge1xuICAgICAgICAgICAgICAgIHZhciB3aW4gPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBvZmZzZXRbMF0gKz0gd2luLnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIG9mZnNldFsxXSArPSB3aW4ucGFnZVhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IHdoaWxlICgoZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50KSk7XG5cbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3aW5kb3ckMShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpc1dpbmRvdyhlbGVtZW50KSA/IGVsZW1lbnQgOiBkb2N1bWVudCQxKGVsZW1lbnQpLmRlZmF1bHRWaWV3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvY3VtZW50JDEoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlKGVsZW1lbnQpLm93bmVyRG9jdW1lbnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9jRWwoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQkMShlbGVtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyogZ2xvYmFsIERvY3VtZW50VG91Y2ggKi9cblxuICAgIHZhciBpc1J0bCA9IGF0dHIoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnZGlyJykgPT09ICdydGwnO1xuXG4gICAgdmFyIGhhc1RvdWNoRXZlbnRzID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93O1xuICAgIHZhciBoYXNQb2ludGVyRXZlbnRzID0gd2luZG93LlBvaW50ZXJFdmVudDtcbiAgICB2YXIgaGFzVG91Y2ggPSBoYXNUb3VjaEV2ZW50c1xuICAgICAgICB8fCB3aW5kb3cuRG9jdW1lbnRUb3VjaCAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIERvY3VtZW50VG91Y2hcbiAgICAgICAgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzOyAvLyBJRSA+PTExXG5cbiAgICB2YXIgcG9pbnRlckRvd24gPSAhaGFzVG91Y2ggPyAnbW91c2Vkb3duJyA6IChcIm1vdXNlZG93biBcIiArIChoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaHN0YXJ0JyA6ICdwb2ludGVyZG93bicpKTtcbiAgICB2YXIgcG9pbnRlck1vdmUgPSAhaGFzVG91Y2ggPyAnbW91c2Vtb3ZlJyA6IChcIm1vdXNlbW92ZSBcIiArIChoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaG1vdmUnIDogJ3BvaW50ZXJtb3ZlJykpO1xuICAgIHZhciBwb2ludGVyVXAgPSAhaGFzVG91Y2ggPyAnbW91c2V1cCcgOiAoXCJtb3VzZXVwIFwiICsgKGhhc1RvdWNoRXZlbnRzID8gJ3RvdWNoZW5kJyA6ICdwb2ludGVydXAnKSk7XG4gICAgdmFyIHBvaW50ZXJFbnRlciA9IGhhc1RvdWNoICYmIGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmVudGVyJyA6ICdtb3VzZWVudGVyJztcbiAgICB2YXIgcG9pbnRlckxlYXZlID0gaGFzVG91Y2ggJiYgaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVybGVhdmUnIDogJ21vdXNlbGVhdmUnO1xuXG4gICAgLypcbiAgICAgICAgQmFzZWQgb246XG4gICAgICAgIENvcHlyaWdodCAoYykgMjAxNiBXaWxzb24gUGFnZSB3aWxzb25wYWdlQG1lLmNvbVxuICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vd2lsc29ucGFnZS9mYXN0ZG9tXG4gICAgKi9cblxuICAgIHZhciBmYXN0ZG9tID0ge1xuXG4gICAgICAgIHJlYWRzOiBbXSxcbiAgICAgICAgd3JpdGVzOiBbXSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbih0YXNrKSB7XG4gICAgICAgICAgICB0aGlzLnJlYWRzLnB1c2godGFzayk7XG4gICAgICAgICAgICBzY2hlZHVsZUZsdXNoKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFzaztcbiAgICAgICAgfSxcblxuICAgICAgICB3cml0ZTogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgdGhpcy53cml0ZXMucHVzaCh0YXNrKTtcbiAgICAgICAgICAgIHNjaGVkdWxlRmx1c2goKTtcbiAgICAgICAgICAgIHJldHVybiB0YXNrO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsZWFyOiBmdW5jdGlvbih0YXNrKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVtb3ZlJDEodGhpcy5yZWFkcywgdGFzaykgfHwgcmVtb3ZlJDEodGhpcy53cml0ZXMsIHRhc2spO1xuICAgICAgICB9LFxuXG4gICAgICAgIGZsdXNoOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgcnVuVGFza3ModGhpcy5yZWFkcyk7XG4gICAgICAgICAgICBydW5UYXNrcyh0aGlzLndyaXRlcy5zcGxpY2UoMCwgdGhpcy53cml0ZXMubGVuZ3RoKSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRzLmxlbmd0aCB8fCB0aGlzLndyaXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzY2hlZHVsZUZsdXNoKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNjaGVkdWxlRmx1c2goKSB7XG4gICAgICAgIGlmICghZmFzdGRvbS5zY2hlZHVsZWQpIHtcbiAgICAgICAgICAgIGZhc3Rkb20uc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmYXN0ZG9tLmZsdXNoLmJpbmQoZmFzdGRvbSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuVGFza3ModGFza3MpIHtcbiAgICAgICAgdmFyIHRhc2s7XG4gICAgICAgIHdoaWxlICgodGFzayA9IHRhc2tzLnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICB0YXNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmUkMShhcnJheSwgaXRlbSkge1xuICAgICAgICB2YXIgaW5kZXggPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xuICAgICAgICByZXR1cm4gISF+aW5kZXggJiYgISFhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIE1vdXNlVHJhY2tlcigpIHt9XG5cbiAgICBNb3VzZVRyYWNrZXIucHJvdG90eXBlID0ge1xuXG4gICAgICAgIHBvc2l0aW9uczogW10sXG4gICAgICAgIHBvc2l0aW9uOiBudWxsLFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBudWxsO1xuXG4gICAgICAgICAgICB2YXIgdGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51bmJpbmQgPSBvbihkb2N1bWVudCwgJ21vdXNlbW92ZScsIGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGlja2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcyQxLnBvc2l0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IHJlZi5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCAmJiAodGltZSAtIHRoaXMkMS5wb3NpdGlvbnNbbGVuZ3RoIC0gMV0udGltZSA+IDEwMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3NpdGlvbnMuc3BsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnB1c2goe3RpbWU6IHRpbWUsIHg6IGUucGFnZVgsIHk6IGUucGFnZVl9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLnBvc2l0aW9ucy5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aWNraW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNSk7XG5cbiAgICAgICAgICAgICAgICB0aWNraW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnVuYmluZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW92ZXNUbzogZnVuY3Rpb24odGFyZ2V0KSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9ucy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcCA9IG9mZnNldCh0YXJnZXQpO1xuICAgICAgICAgICAgdmFyIHBvc2l0aW9uJCQxID0gdGhpcy5wb3NpdGlvbnNbdGhpcy5wb3NpdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5wb3NpdGlvbnM7XG4gICAgICAgICAgICB2YXIgcHJldlBvcyA9IHJlZlswXTtcblxuICAgICAgICAgICAgaWYgKHAubGVmdCA8PSBwb3NpdGlvbiQkMS54ICYmIHBvc2l0aW9uJCQxLnggPD0gcC5yaWdodCAmJiBwLnRvcCA8PSBwb3NpdGlvbiQkMS55ICYmIHBvc2l0aW9uJCQxLnkgPD0gcC5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBwb2ludHMgPSBbXG4gICAgICAgICAgICAgICAgW3t4OiBwLmxlZnQsIHk6IHAudG9wfSwge3g6IHAucmlnaHQsIHk6IHAuYm90dG9tfV0sXG4gICAgICAgICAgICAgICAgW3t4OiBwLnJpZ2h0LCB5OiBwLnRvcH0sIHt4OiBwLmxlZnQsIHk6IHAuYm90dG9tfV1cbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIGlmIChwLnJpZ2h0IDw9IHBvc2l0aW9uJCQxLngpIDsgZWxzZSBpZiAocC5sZWZ0ID49IHBvc2l0aW9uJCQxLngpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbMF0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIHBvaW50c1sxXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHAuYm90dG9tIDw9IHBvc2l0aW9uJCQxLnkpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbMF0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwLnRvcCA+PSBwb3NpdGlvbiQkMS55KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzFdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICEhcG9pbnRzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBwb2ludCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoc2xvcGUocHJldlBvcywgcG9pbnRbMF0pIDwgc2xvcGUocG9zaXRpb24kJDEsIHBvaW50WzBdKSAmJiBzbG9wZShwcmV2UG9zLCBwb2ludFsxXSkgPiBzbG9wZShwb3NpdGlvbiQkMSwgcG9pbnRbMV0pKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gc2xvcGUoYSwgYikge1xuICAgICAgICByZXR1cm4gKGIueSAtIGEueSkgLyAoYi54IC0gYS54KTtcbiAgICB9XG5cbiAgICB2YXIgc3RyYXRzID0ge307XG5cbiAgICAvLyBjb25jYXQgc3RyYXRlZ3lcbiAgICBzdHJhdHMuYXJncyA9XG4gICAgc3RyYXRzLmV2ZW50cyA9XG4gICAgc3RyYXRzLmluaXQgPVxuICAgIHN0cmF0cy5jcmVhdGVkID1cbiAgICBzdHJhdHMuYmVmb3JlQ29ubmVjdCA9XG4gICAgc3RyYXRzLmNvbm5lY3RlZCA9XG4gICAgc3RyYXRzLnJlYWR5ID1cbiAgICBzdHJhdHMuYmVmb3JlRGlzY29ubmVjdCA9XG4gICAgc3RyYXRzLmRpc2Nvbm5lY3RlZCA9XG4gICAgc3RyYXRzLmRlc3Ryb3kgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuXG4gICAgICAgIHBhcmVudFZhbCA9IHBhcmVudFZhbCAmJiAhaXNBcnJheShwYXJlbnRWYWwpID8gW3BhcmVudFZhbF0gOiBwYXJlbnRWYWw7XG5cbiAgICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgICAgICAgICA/IHBhcmVudFZhbFxuICAgICAgICAgICAgICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgICAgICAgICAgICA6IGlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgICAgID8gY2hpbGRWYWxcbiAgICAgICAgICAgICAgICAgICAgOiBbY2hpbGRWYWxdXG4gICAgICAgICAgICA6IHBhcmVudFZhbDtcbiAgICB9O1xuXG4gICAgLy8gdXBkYXRlIHN0cmF0ZWd5XG4gICAgc3RyYXRzLnVwZGF0ZSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gICAgICAgIHJldHVybiBzdHJhdHMuYXJncyhwYXJlbnRWYWwsIGlzRnVuY3Rpb24oY2hpbGRWYWwpID8ge3JlYWQ6IGNoaWxkVmFsfSA6IGNoaWxkVmFsKTtcbiAgICB9O1xuXG4gICAgLy8gcHJvcGVydHkgc3RyYXRlZ3lcbiAgICBzdHJhdHMucHJvcHMgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuXG4gICAgICAgIGlmIChpc0FycmF5KGNoaWxkVmFsKSkge1xuICAgICAgICAgICAgY2hpbGRWYWwgPSBjaGlsZFZhbC5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gU3RyaW5nO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHJhdHMubWV0aG9kcyhwYXJlbnRWYWwsIGNoaWxkVmFsKTtcbiAgICB9O1xuXG4gICAgLy8gZXh0ZW5kIHN0cmF0ZWd5XG4gICAgc3RyYXRzLmNvbXB1dGVkID1cbiAgICBzdHJhdHMubWV0aG9kcyA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgICAgICAgICAgPyBwYXJlbnRWYWxcbiAgICAgICAgICAgICAgICA/IGFzc2lnbih7fSwgcGFyZW50VmFsLCBjaGlsZFZhbClcbiAgICAgICAgICAgICAgICA6IGNoaWxkVmFsXG4gICAgICAgICAgICA6IHBhcmVudFZhbDtcbiAgICB9O1xuXG4gICAgLy8gZGF0YSBzdHJhdGVneVxuICAgIHN0cmF0cy5kYXRhID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKSB7XG5cbiAgICAgICAgaWYgKCF2bSkge1xuXG4gICAgICAgICAgICBpZiAoIWNoaWxkVmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXJlbnRWYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRWYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAodm0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VGbkRhdGEocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbWVyZ2VGbkRhdGEocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pIHtcbiAgICAgICAgcmV0dXJuIHN0cmF0cy5jb21wdXRlZChcbiAgICAgICAgICAgIGlzRnVuY3Rpb24ocGFyZW50VmFsKVxuICAgICAgICAgICAgICAgID8gcGFyZW50VmFsLmNhbGwodm0sIHZtKVxuICAgICAgICAgICAgICAgIDogcGFyZW50VmFsLFxuICAgICAgICAgICAgaXNGdW5jdGlvbihjaGlsZFZhbClcbiAgICAgICAgICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0sIHZtKVxuICAgICAgICAgICAgICAgIDogY2hpbGRWYWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBkZWZhdWx0IHN0cmF0ZWd5XG4gICAgdmFyIGRlZmF1bHRTdHJhdCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChjaGlsZFZhbCkgPyBwYXJlbnRWYWwgOiBjaGlsZFZhbDtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQsIHZtKSB7XG5cbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7fTtcblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihjaGlsZCkpIHtcbiAgICAgICAgICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGlsZC5leHRlbmRzKSB7XG4gICAgICAgICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5leHRlbmRzLCB2bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGQubWl4aW5zKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkLm1peGlucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHtcbiAgICAgICAgICAgIG1lcmdlS2V5KGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBrZXkkMSBpbiBjaGlsZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkkMSkpIHtcbiAgICAgICAgICAgICAgICBtZXJnZUtleShrZXkkMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBtZXJnZUtleShrZXkpIHtcbiAgICAgICAgICAgIG9wdGlvbnNba2V5XSA9IChzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQpKHBhcmVudFtrZXldLCBjaGlsZFtrZXldLCB2bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9wdGlvbnMob3B0aW9ucywgYXJncykge1xuICAgICAgICB2YXIgb2JqO1xuXG4gICAgICAgIGlmICggYXJncyA9PT0gdm9pZCAwICkgYXJncyA9IFtdO1xuXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIHJldHVybiAhb3B0aW9uc1xuICAgICAgICAgICAgICAgID8ge31cbiAgICAgICAgICAgICAgICA6IHN0YXJ0c1dpdGgob3B0aW9ucywgJ3snKVxuICAgICAgICAgICAgICAgICAgICA/IEpTT04ucGFyc2Uob3B0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgOiBhcmdzLmxlbmd0aCAmJiAhaW5jbHVkZXMob3B0aW9ucywgJzonKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoKCBvYmogPSB7fSwgb2JqW2FyZ3NbMF1dID0gb3B0aW9ucywgb2JqICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9wdGlvbnMuc3BsaXQoJzsnKS5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnMsIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvcHRpb24uc3BsaXQoLzooLiopLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IHJlZlswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSByZWZbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAmJiAhaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNba2V5LnRyaW0oKV0gPSB2YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgdmFyIGlkID0gMDtcblxuICAgIHZhciBQbGF5ZXIgPSBmdW5jdGlvbihlbCkge1xuICAgICAgICB0aGlzLmlkID0gKytpZDtcbiAgICAgICAgdGhpcy5lbCA9IHRvTm9kZShlbCk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNWaWRlbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNZb3V0dWJlKCkgfHwgdGhpcy5pc1ZpbWVvKCkgfHwgdGhpcy5pc0hUTUw1KCk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNIVE1MNSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwudGFnTmFtZSA9PT0gJ1ZJREVPJztcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5pc0lGcmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwudGFnTmFtZSA9PT0gJ0lGUkFNRSc7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNZb3V0dWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0lGcmFtZSgpICYmICEhdGhpcy5lbC5zcmMubWF0Y2goL1xcL1xcLy4qP3lvdXR1YmUoLW5vY29va2llKT9cXC5bYS16XStcXC8od2F0Y2hcXD92PVteJlxcc10rfGVtYmVkKXx5b3V0dVxcLmJlXFwvLiovKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5pc1ZpbWVvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0lGcmFtZSgpICYmICEhdGhpcy5lbC5zcmMubWF0Y2goL3ZpbWVvXFwuY29tXFwvdmlkZW9cXC8uKi8pO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmVuYWJsZUFwaSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgaWYgKHRoaXMucmVhZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWR5O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHlvdXR1YmUgPSB0aGlzLmlzWW91dHViZSgpO1xuICAgICAgICB2YXIgdmltZW8gPSB0aGlzLmlzVmltZW8oKTtcblxuICAgICAgICB2YXIgcG9sbGVyO1xuXG4gICAgICAgIGlmICh5b3V0dWJlIHx8IHZpbWVvKSB7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWR5ID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICAgICAgb25jZSh0aGlzJDEuZWwsICdsb2FkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoeW91dHViZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtldmVudDogJ2xpc3RlbmluZycsIGlkOiB0aGlzJDEuaWR9KTsgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxlciA9IHNldEludGVydmFsKGxpc3RlbmVyLCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbGlzdGVuKGZ1bmN0aW9uIChkYXRhJCQxKSB7IHJldHVybiB5b3V0dWJlICYmIGRhdGEkJDEuaWQgPT09IHRoaXMkMS5pZCAmJiBkYXRhJCQxLmV2ZW50ID09PSAnb25SZWFkeScgfHwgdmltZW8gJiYgTnVtYmVyKGRhdGEkJDEucGxheWVyX2lkKSA9PT0gdGhpcyQxLmlkOyB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsZXIgJiYgY2xlYXJJbnRlcnZhbChwb2xsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGF0dHIodGhpcyQxLmVsLCAnc3JjJywgKFwiXCIgKyAodGhpcyQxLmVsLnNyYykgKyAoaW5jbHVkZXModGhpcyQxLmVsLnNyYywgJz8nKSA/ICcmJyA6ICc/JykgKyAoeW91dHViZSA/ICdlbmFibGVqc2FwaT0xJyA6IChcImFwaT0xJnBsYXllcl9pZD1cIiArICh0aGlzJDEuaWQpKSkpKTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuXG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUucGxheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmlkZW8oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJRnJhbWUoKSkge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVBcGkoKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZnVuYzogJ3BsYXlWaWRlbycsIG1ldGhvZDogJ3BsYXknfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5lbC5wbGF5KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9taXNlLmNhdGNoKG5vb3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmlkZW8oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJRnJhbWUoKSkge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVBcGkoKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZnVuYzogJ3BhdXNlVmlkZW8nLCBtZXRob2Q6ICdwYXVzZSd9KTsgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0hUTUw1KCkpIHtcbiAgICAgICAgICAgIHRoaXMuZWwucGF1c2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLm11dGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdtdXRlJywgbWV0aG9kOiAnc2V0Vm9sdW1lJywgdmFsdWU6IDB9KTsgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0hUTUw1KCkpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubXV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYXR0cih0aGlzLmVsLCAnbXV0ZWQnLCAnJyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwb3N0KGVsLCBjbWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVsLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoYXNzaWduKHtldmVudDogJ2NvbW1hbmQnfSwgY21kKSksICcqJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdGVuKGNiKSB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgb25jZSh3aW5kb3csICdtZXNzYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEkJDEpIHsgcmV0dXJuIHJlc29sdmUoZGF0YSQkMSk7IH0sIGZhbHNlLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTtcblxuXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhJCQxIHx8ICFpc1N0cmluZyhkYXRhJCQxKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMSA9IEpTT04ucGFyc2UoZGF0YSQkMSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDEgJiYgY2IoZGF0YSQkMSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLypcbiAgICAgICAgQmFzZWQgb246XG4gICAgICAgIENvcHlyaWdodCAoYykgMjAxMC0yMDE2IFRob21hcyBGdWNoc1xuICAgICAgICBodHRwOi8vemVwdG9qcy5jb20vXG4gICAgKi9cblxuICAgIHZhciB0b3VjaCA9IHt9LCBjbGlja1RpbWVvdXQsIHN3aXBlVGltZW91dCwgdGFwVGltZW91dCwgY2xpY2tlZDtcblxuICAgIGZ1bmN0aW9uIHN3aXBlRGlyZWN0aW9uKHJlZikge1xuICAgICAgICB2YXIgeDEgPSByZWYueDE7XG4gICAgICAgIHZhciB4MiA9IHJlZi54MjtcbiAgICAgICAgdmFyIHkxID0gcmVmLnkxO1xuICAgICAgICB2YXIgeTIgPSByZWYueTI7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHgxIC0geDIpID49IE1hdGguYWJzKHkxIC0geTIpID8gKHgxIC0geDIgPiAwID8gJ0xlZnQnIDogJ1JpZ2h0JykgOiAoeTEgLSB5MiA+IDAgPyAnVXAnIDogJ0Rvd24nKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYW5jZWxBbGwoKSB7XG4gICAgICAgIGNsaWNrVGltZW91dCAmJiBjbGVhclRpbWVvdXQoY2xpY2tUaW1lb3V0KTtcbiAgICAgICAgc3dpcGVUaW1lb3V0ICYmIGNsZWFyVGltZW91dChzd2lwZVRpbWVvdXQpO1xuICAgICAgICB0YXBUaW1lb3V0ICYmIGNsZWFyVGltZW91dCh0YXBUaW1lb3V0KTtcbiAgICAgICAgY2xpY2tUaW1lb3V0ID0gc3dpcGVUaW1lb3V0ID0gdGFwVGltZW91dCA9IG51bGw7XG4gICAgICAgIHRvdWNoID0ge307XG4gICAgfVxuXG4gICAgcmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7IHJldHVybiBjbGlja2VkID0gdHJ1ZTsgfSwgdHJ1ZSk7XG5cbiAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJEb3duLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgcmVmID0gZ2V0UG9zJDEoZSk7XG4gICAgICAgICAgICB2YXIgeCA9IHJlZi54O1xuICAgICAgICAgICAgdmFyIHkgPSByZWYueTtcbiAgICAgICAgICAgIHZhciBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlKGUudHlwZSk7XG5cbiAgICAgICAgICAgIGlmICh0b3VjaC50eXBlICYmIHRvdWNoLnR5cGUgIT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvdWNoLmVsID0gJ3RhZ05hbWUnIGluIHRhcmdldCA/IHRhcmdldCA6IHRhcmdldC5wYXJlbnROb2RlO1xuXG4gICAgICAgICAgICBjbGlja1RpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KGNsaWNrVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRvdWNoLngxID0geDtcbiAgICAgICAgICAgIHRvdWNoLnkxID0geTtcblxuICAgICAgICAgICAgaWYgKHRvdWNoLmxhc3QgJiYgbm93IC0gdG91Y2gubGFzdCA8PSAyNTApIHtcbiAgICAgICAgICAgICAgICB0b3VjaCA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b3VjaC50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHRvdWNoLmxhc3QgPSBub3c7XG5cbiAgICAgICAgICAgIGNsaWNrZWQgPSBlLmJ1dHRvbiA+IDA7XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcmVmID0gZ2V0UG9zJDEoZSk7XG4gICAgICAgICAgICB2YXIgeCA9IHJlZi54O1xuICAgICAgICAgICAgdmFyIHkgPSByZWYueTtcblxuICAgICAgICAgICAgdG91Y2gueDIgPSB4O1xuICAgICAgICAgICAgdG91Y2gueTIgPSB5O1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICBpZiAodG91Y2gudHlwZSAhPT0gZ2V0VHlwZSh0eXBlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc3dpcGVcbiAgICAgICAgICAgIGlmICh0b3VjaC54MiAmJiBNYXRoLmFicyh0b3VjaC54MSAtIHRvdWNoLngyKSA+IDMwIHx8IHRvdWNoLnkyICYmIE1hdGguYWJzKHRvdWNoLnkxIC0gdG91Y2gueTIpID4gMzApIHtcblxuICAgICAgICAgICAgICAgIHN3aXBlVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG91Y2guZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsICdzd2lwZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0b3VjaC5lbCwgKFwic3dpcGVcIiArIChzd2lwZURpcmVjdGlvbih0b3VjaCkpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gbm9ybWFsIHRhcFxuICAgICAgICAgICAgfSBlbHNlIGlmICgnbGFzdCcgaW4gdG91Y2gpIHtcblxuICAgICAgICAgICAgICAgIHRhcFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIodG91Y2guZWwsICd0YXAnKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHNpbmdsZSBjbGljayBhZnRlciAzNTBtcyBvZiBpbmFjdGl2aXR5XG4gICAgICAgICAgICAgICAgaWYgKHRvdWNoLmVsICYmIHR5cGUgIT09ICdtb3VzZXVwJyAmJiB3aXRoaW4odGFyZ2V0LCB0b3VjaC5lbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlja1RpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvdWNoLmVsICYmICFjbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0b3VjaC5lbCwgJ2NsaWNrJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3VjaCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9LCAzNTApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3VjaCA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCBjYW5jZWxBbGwpO1xuICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCBjYW5jZWxBbGwpO1xuXG4gICAgfSk7XG5cbiAgICB2YXIgdG91Y2hpbmcgPSBmYWxzZTtcbiAgICBvbihkb2N1bWVudCwgJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0b3VjaGluZyA9IHRydWU7IH0sIHRydWUpO1xuICAgIG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7dG91Y2hpbmcgPSBmYWxzZTt9KTtcbiAgICBvbihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG91Y2hpbmcgPSBmYWxzZTsgfSwgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBpc1RvdWNoKGUpIHtcbiAgICAgICAgcmV0dXJuIHRvdWNoaW5nIHx8IGUucG9pbnRlclR5cGUgPT09ICd0b3VjaCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UG9zJDEoZSkge1xuICAgICAgICB2YXIgdG91Y2hlcyA9IGUudG91Y2hlcztcbiAgICAgICAgdmFyIGNoYW5nZWRUb3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlcztcbiAgICAgICAgdmFyIHJlZiA9IHRvdWNoZXMgJiYgdG91Y2hlc1swXSB8fCBjaGFuZ2VkVG91Y2hlcyAmJiBjaGFuZ2VkVG91Y2hlc1swXSB8fCBlO1xuICAgICAgICB2YXIgeCA9IHJlZi5wYWdlWDtcbiAgICAgICAgdmFyIHkgPSByZWYucGFnZVk7XG5cbiAgICAgICAgcmV0dXJuIHt4OiB4LCB5OiB5fTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUeXBlKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUuc2xpY2UoMCwgNSk7XG4gICAgfVxuXG5cblxuICAgIHZhciB1dGlsID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgICAgICBhamF4OiBhamF4LFxuICAgICAgICBnZXRJbWFnZTogZ2V0SW1hZ2UsXG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zaXRpb24sXG4gICAgICAgIFRyYW5zaXRpb246IFRyYW5zaXRpb24sXG4gICAgICAgIGFuaW1hdGU6IGFuaW1hdGUsXG4gICAgICAgIEFuaW1hdGlvbjogQW5pbWF0aW9uLFxuICAgICAgICBhdHRyOiBhdHRyLFxuICAgICAgICBoYXNBdHRyOiBoYXNBdHRyLFxuICAgICAgICByZW1vdmVBdHRyOiByZW1vdmVBdHRyLFxuICAgICAgICBmaWx0ZXJBdHRyOiBmaWx0ZXJBdHRyLFxuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBhZGRDbGFzczogYWRkQ2xhc3MsXG4gICAgICAgIHJlbW92ZUNsYXNzOiByZW1vdmVDbGFzcyxcbiAgICAgICAgcmVtb3ZlQ2xhc3NlczogcmVtb3ZlQ2xhc3NlcyxcbiAgICAgICAgcmVwbGFjZUNsYXNzOiByZXBsYWNlQ2xhc3MsXG4gICAgICAgIGhhc0NsYXNzOiBoYXNDbGFzcyxcbiAgICAgICAgdG9nZ2xlQ2xhc3M6IHRvZ2dsZUNsYXNzLFxuICAgICAgICAkOiAkLFxuICAgICAgICAkJDogJCQsXG4gICAgICAgIHBvc2l0aW9uQXQ6IHBvc2l0aW9uQXQsXG4gICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGZsaXBQb3NpdGlvbjogZmxpcFBvc2l0aW9uLFxuICAgICAgICBpc0luVmlldzogaXNJblZpZXcsXG4gICAgICAgIHNjcm9sbGVkT3Zlcjogc2Nyb2xsZWRPdmVyLFxuICAgICAgICBpc1JlYWR5OiBpc1JlYWR5LFxuICAgICAgICByZWFkeTogcmVhZHksXG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgZ2V0SW5kZXg6IGdldEluZGV4LFxuICAgICAgICBlbXB0eTogZW1wdHksXG4gICAgICAgIGh0bWw6IGh0bWwsXG4gICAgICAgIHByZXBlbmQ6IHByZXBlbmQsXG4gICAgICAgIGFwcGVuZDogYXBwZW5kLFxuICAgICAgICBiZWZvcmU6IGJlZm9yZSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyLFxuICAgICAgICByZW1vdmU6IHJlbW92ZSxcbiAgICAgICAgd3JhcEFsbDogd3JhcEFsbCxcbiAgICAgICAgd3JhcElubmVyOiB3cmFwSW5uZXIsXG4gICAgICAgIHVud3JhcDogdW53cmFwLFxuICAgICAgICBmcmFnbWVudDogZnJhZ21lbnQsXG4gICAgICAgIGFwcGx5OiBhcHBseSxcbiAgICAgICAgaXNSdGw6IGlzUnRsLFxuICAgICAgICBoYXNUb3VjaDogaGFzVG91Y2gsXG4gICAgICAgIHBvaW50ZXJEb3duOiBwb2ludGVyRG93bixcbiAgICAgICAgcG9pbnRlck1vdmU6IHBvaW50ZXJNb3ZlLFxuICAgICAgICBwb2ludGVyVXA6IHBvaW50ZXJVcCxcbiAgICAgICAgcG9pbnRlckVudGVyOiBwb2ludGVyRW50ZXIsXG4gICAgICAgIHBvaW50ZXJMZWF2ZTogcG9pbnRlckxlYXZlLFxuICAgICAgICBvbjogb24sXG4gICAgICAgIG9mZjogb2ZmLFxuICAgICAgICBvbmNlOiBvbmNlLFxuICAgICAgICB0cmlnZ2VyOiB0cmlnZ2VyLFxuICAgICAgICBjcmVhdGVFdmVudDogY3JlYXRlRXZlbnQsXG4gICAgICAgIHRvRXZlbnRUYXJnZXRzOiB0b0V2ZW50VGFyZ2V0cyxcbiAgICAgICAgcHJldmVudENsaWNrOiBwcmV2ZW50Q2xpY2ssXG4gICAgICAgIGZhc3Rkb206IGZhc3Rkb20sXG4gICAgICAgIGlzVm9pZEVsZW1lbnQ6IGlzVm9pZEVsZW1lbnQsXG4gICAgICAgIGlzVmlzaWJsZTogaXNWaXNpYmxlLFxuICAgICAgICBzZWxJbnB1dDogc2VsSW5wdXQsXG4gICAgICAgIGlzSW5wdXQ6IGlzSW5wdXQsXG4gICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICB3aXRoaW46IHdpdGhpbixcbiAgICAgICAgYmluZDogYmluZCxcbiAgICAgICAgaGFzT3duOiBoYXNPd24sXG4gICAgICAgIGh5cGhlbmF0ZTogaHlwaGVuYXRlLFxuICAgICAgICBjYW1lbGl6ZTogY2FtZWxpemUsXG4gICAgICAgIHVjZmlyc3Q6IHVjZmlyc3QsXG4gICAgICAgIHN0YXJ0c1dpdGg6IHN0YXJ0c1dpdGgsXG4gICAgICAgIGVuZHNXaXRoOiBlbmRzV2l0aCxcbiAgICAgICAgaW5jbHVkZXM6IGluY2x1ZGVzLFxuICAgICAgICBpc0FycmF5OiBpc0FycmF5LFxuICAgICAgICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICAgICAgICBpc09iamVjdDogaXNPYmplY3QsXG4gICAgICAgIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXG4gICAgICAgIGlzV2luZG93OiBpc1dpbmRvdyxcbiAgICAgICAgaXNEb2N1bWVudDogaXNEb2N1bWVudCxcbiAgICAgICAgaXNKUXVlcnk6IGlzSlF1ZXJ5LFxuICAgICAgICBpc05vZGU6IGlzTm9kZSxcbiAgICAgICAgaXNOb2RlQ29sbGVjdGlvbjogaXNOb2RlQ29sbGVjdGlvbixcbiAgICAgICAgaXNCb29sZWFuOiBpc0Jvb2xlYW4sXG4gICAgICAgIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgICAgICAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICAgICAgICBpc051bWVyaWM6IGlzTnVtZXJpYyxcbiAgICAgICAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICAgICAgICB0b0Jvb2xlYW46IHRvQm9vbGVhbixcbiAgICAgICAgdG9OdW1iZXI6IHRvTnVtYmVyLFxuICAgICAgICB0b0Zsb2F0OiB0b0Zsb2F0LFxuICAgICAgICB0b05vZGU6IHRvTm9kZSxcbiAgICAgICAgdG9Ob2RlczogdG9Ob2RlcyxcbiAgICAgICAgdG9MaXN0OiB0b0xpc3QsXG4gICAgICAgIHRvTXM6IHRvTXMsXG4gICAgICAgIHN3YXA6IHN3YXAsXG4gICAgICAgIGFzc2lnbjogYXNzaWduLFxuICAgICAgICBlYWNoOiBlYWNoLFxuICAgICAgICBzb3J0Qnk6IHNvcnRCeSxcbiAgICAgICAgY2xhbXA6IGNsYW1wLFxuICAgICAgICBub29wOiBub29wLFxuICAgICAgICBpbnRlcnNlY3RSZWN0OiBpbnRlcnNlY3RSZWN0LFxuICAgICAgICBwb2ludEluUmVjdDogcG9pbnRJblJlY3QsXG4gICAgICAgIERpbWVuc2lvbnM6IERpbWVuc2lvbnMsXG4gICAgICAgIE1vdXNlVHJhY2tlcjogTW91c2VUcmFja2VyLFxuICAgICAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcbiAgICAgICAgcGFyc2VPcHRpb25zOiBwYXJzZU9wdGlvbnMsXG4gICAgICAgIFBsYXllcjogUGxheWVyLFxuICAgICAgICBQcm9taXNlOiBQcm9taXNlJDEsXG4gICAgICAgIERlZmVycmVkOiBEZWZlcnJlZCxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICBxdWVyeUFsbDogcXVlcnlBbGwsXG4gICAgICAgIGZpbmQ6IGZpbmQsXG4gICAgICAgIGZpbmRBbGw6IGZpbmRBbGwsXG4gICAgICAgIG1hdGNoZXM6IG1hdGNoZXMsXG4gICAgICAgIGNsb3Nlc3Q6IGNsb3Nlc3QsXG4gICAgICAgIHBhcmVudHM6IHBhcmVudHMsXG4gICAgICAgIGVzY2FwZTogZXNjYXBlLFxuICAgICAgICBjc3M6IGNzcyxcbiAgICAgICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgICAgIGdldFN0eWxlOiBnZXRTdHlsZSxcbiAgICAgICAgZ2V0Q3NzVmFyOiBnZXRDc3NWYXIsXG4gICAgICAgIHByb3BOYW1lOiBwcm9wTmFtZSxcbiAgICAgICAgaXNUb3VjaDogaXNUb3VjaCxcbiAgICAgICAgZ2V0UG9zOiBnZXRQb3MkMVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY29tcG9uZW50QVBJIChVSWtpdCkge1xuXG4gICAgICAgIHZhciBEQVRBID0gVUlraXQuZGF0YTtcblxuICAgICAgICB2YXIgY29tcG9uZW50cyA9IHt9O1xuXG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCA9IGZ1bmN0aW9uIChuYW1lLCBvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIGlmICghb3B0aW9ucykge1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY29tcG9uZW50c1tuYW1lXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1tuYW1lXSA9IFVJa2l0LmV4dGVuZChjb21wb25lbnRzW25hbWVdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50c1tuYW1lXTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBVSWtpdFtuYW1lXSA9IGZ1bmN0aW9uIChlbGVtZW50LCBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzQXJyYXkgPSBBcnJheShpKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIGFyZ3NBcnJheVtpXSA9IGFyZ3VtZW50c1tpXTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFVJa2l0LmNvbXBvbmVudChuYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtkYXRhOiBlbGVtZW50fSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5vcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjb21wb25lbnQoe2RhdGE6IFtdLmNvbmNhdCggYXJnc0FycmF5ICl9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50Lm5vZGVUeXBlID8gaW5pdChlbGVtZW50KSA6ICQkKGVsZW1lbnQpLm1hcChpbml0KVswXTtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXQoZWxlbWVudCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IFVJa2l0LmdldENvbXBvbmVudChlbGVtZW50LCBuYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtlbDogZWxlbWVudCwgZGF0YTogZGF0YSQkMX0pO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YXIgb3B0ID0gaXNQbGFpbk9iamVjdChvcHRpb25zKSA/IGFzc2lnbih7fSwgb3B0aW9ucykgOiBvcHRpb25zLm9wdGlvbnM7XG5cbiAgICAgICAgICAgIG9wdC5uYW1lID0gbmFtZTtcblxuICAgICAgICAgICAgaWYgKG9wdC5pbnN0YWxsKSB7XG4gICAgICAgICAgICAgICAgb3B0Lmluc3RhbGwoVUlraXQsIG9wdCwgbmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChVSWtpdC5faW5pdGlhbGl6ZWQgJiYgIW9wdC5mdW5jdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkID0gaHlwaGVuYXRlKG5hbWUpO1xuICAgICAgICAgICAgICAgIGZhc3Rkb20ucmVhZChmdW5jdGlvbiAoKSB7IHJldHVybiBVSWtpdFtuYW1lXSgoXCJbdWstXCIgKyBpZCArIFwiXSxbZGF0YS11ay1cIiArIGlkICsgXCJdXCIpKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRzW25hbWVdID0gaXNQbGFpbk9iamVjdChvcHRpb25zKSA/IG9wdCA6IG9wdGlvbnM7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQuZ2V0Q29tcG9uZW50cyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnRbREFUQV0gfHwge307IH07XG4gICAgICAgIFVJa2l0LmdldENvbXBvbmVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBuYW1lKSB7IHJldHVybiBVSWtpdC5nZXRDb21wb25lbnRzKGVsZW1lbnQpW25hbWVdOyB9O1xuXG4gICAgICAgIFVJa2l0LmNvbm5lY3QgPSBmdW5jdGlvbiAobm9kZSkge1xuXG4gICAgICAgICAgICBpZiAobm9kZVtEQVRBXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZVtEQVRBXSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlW0RBVEFdW25hbWVdLl9jYWxsQ29ubmVjdGVkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIG5hbWUkMSA9IGdldENvbXBvbmVudE5hbWUobm9kZS5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5hbWUkMSAmJiBuYW1lJDEgaW4gY29tcG9uZW50cykge1xuICAgICAgICAgICAgICAgICAgICBVSWtpdFtuYW1lJDFdKG5vZGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQuZGlzY29ubmVjdCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICBub2RlW0RBVEFdW25hbWVdLl9jYWxsRGlzY29ubmVjdGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKGF0dHJpYnV0ZSkge1xuICAgICAgICByZXR1cm4gc3RhcnRzV2l0aChhdHRyaWJ1dGUsICd1ay0nKSB8fCBzdGFydHNXaXRoKGF0dHJpYnV0ZSwgJ2RhdGEtdWstJylcbiAgICAgICAgICAgID8gY2FtZWxpemUoYXR0cmlidXRlLnJlcGxhY2UoJ2RhdGEtdWstJywgJycpLnJlcGxhY2UoJ3VrLScsICcnKSlcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYm9vdCAoVUlraXQpIHtcblxuICAgICAgICB2YXIgY29ubmVjdCA9IFVJa2l0LmNvbm5lY3Q7XG4gICAgICAgIHZhciBkaXNjb25uZWN0ID0gVUlraXQuZGlzY29ubmVjdDtcblxuICAgICAgICBpZiAoISgnTXV0YXRpb25PYnNlcnZlcicgaW4gd2luZG93KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHtcblxuICAgICAgICAgICAgaW5pdCgpO1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIChuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSkpLm9ic2VydmUoZG9jdW1lbnQsIHtjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWV9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcblxuICAgICAgICAgICAgYXBwbHkkJDEoZG9jdW1lbnQuYm9keSwgY29ubmVjdCk7XG5cbiAgICAgICAgICAgIGZhc3Rkb20uZmx1c2goKTtcblxuICAgICAgICAgICAgKG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnMpIHsgcmV0dXJuIG11dGF0aW9ucy5mb3JFYWNoKGFwcGx5TXV0YXRpb24pOyB9KSkub2JzZXJ2ZShkb2N1bWVudCwge1xuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFVJa2l0Ll9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseU11dGF0aW9uKG11dGF0aW9uKSB7XG5cbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBtdXRhdGlvbi50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IG11dGF0aW9uLnR5cGU7XG5cbiAgICAgICAgICAgIHZhciB1cGRhdGUgPSB0eXBlICE9PSAnYXR0cmlidXRlcydcbiAgICAgICAgICAgICAgICA/IGFwcGx5Q2hpbGRMaXN0KG11dGF0aW9uKVxuICAgICAgICAgICAgICAgIDogYXBwbHlBdHRyaWJ1dGUobXV0YXRpb24pO1xuXG4gICAgICAgICAgICB1cGRhdGUgJiYgVUlraXQudXBkYXRlKHRhcmdldCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5QXR0cmlidXRlKHJlZikge1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHJlZi5hdHRyaWJ1dGVOYW1lO1xuXG5cbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGF0dHJpYnV0ZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAoIW5hbWUgfHwgIShuYW1lIGluIFVJa2l0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGhhc0F0dHIodGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgICAgICAgICAgIFVJa2l0W25hbWVdKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBVSWtpdC5nZXRDb21wb25lbnQodGFyZ2V0LCBuYW1lKTtcblxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC4kZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseUNoaWxkTGlzdChyZWYpIHtcbiAgICAgICAgICAgIHZhciBhZGRlZE5vZGVzID0gcmVmLmFkZGVkTm9kZXM7XG4gICAgICAgICAgICB2YXIgcmVtb3ZlZE5vZGVzID0gcmVmLnJlbW92ZWROb2RlcztcblxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZGVkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcHBseSQkMShhZGRlZE5vZGVzW2ldLCBjb25uZWN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgcmVtb3ZlZE5vZGVzLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgICAgICBhcHBseSQkMShyZW1vdmVkTm9kZXNbaSQxXSwgZGlzY29ubmVjdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHkkJDEobm9kZSwgZm4pIHtcblxuICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IDEgfHwgaGFzQXR0cihub2RlLCAndWstbm8tYm9vdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmbihub2RlKTtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IG5vZGUubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIGFwcGx5JCQxKG5vZGUsIGZuKTtcbiAgICAgICAgICAgICAgICBub2RlID0gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2xvYmFsQVBJIChVSWtpdCkge1xuXG4gICAgICAgIHZhciBEQVRBID0gVUlraXQuZGF0YTtcblxuICAgICAgICBVSWtpdC51c2UgPSBmdW5jdGlvbiAocGx1Z2luKSB7XG5cbiAgICAgICAgICAgIGlmIChwbHVnaW4uaW5zdGFsbGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwbHVnaW4uY2FsbChudWxsLCB0aGlzKTtcbiAgICAgICAgICAgIHBsdWdpbi5pbnN0YWxsZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5taXhpbiA9IGZ1bmN0aW9uIChtaXhpbiwgY29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSAoaXNTdHJpbmcoY29tcG9uZW50KSA/IFVJa2l0LmNvbXBvbmVudChjb21wb25lbnQpIDogY29tcG9uZW50KSB8fCB0aGlzO1xuICAgICAgICAgICAgbWl4aW4gPSBtZXJnZU9wdGlvbnMoe30sIG1peGluKTtcbiAgICAgICAgICAgIG1peGluLm1peGlucyA9IGNvbXBvbmVudC5vcHRpb25zLm1peGlucztcbiAgICAgICAgICAgIGRlbGV0ZSBjb21wb25lbnQub3B0aW9ucy5taXhpbnM7XG4gICAgICAgICAgICBjb21wb25lbnQub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhtaXhpbiwgY29tcG9uZW50Lm9wdGlvbnMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmV4dGVuZCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgICAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIFN1YiA9IGZ1bmN0aW9uIFVJa2l0Q29tcG9uZW50IChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIFN1Yi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1cGVyLnByb3RvdHlwZSk7XG4gICAgICAgICAgICBTdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViO1xuICAgICAgICAgICAgU3ViLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoU3VwZXIub3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuICAgICAgICAgICAgU3ViLmV4dGVuZCA9IFN1cGVyLmV4dGVuZDtcblxuICAgICAgICAgICAgcmV0dXJuIFN1YjtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC51cGRhdGUgPSBmdW5jdGlvbiAoZWxlbWVudCwgZSkge1xuXG4gICAgICAgICAgICBlID0gY3JlYXRlRXZlbnQoZSB8fCAndXBkYXRlJyk7XG4gICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudCA/IHRvTm9kZShlbGVtZW50KSA6IGRvY3VtZW50LmJvZHk7XG5cbiAgICAgICAgICAgIHBhdGgoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB1cGRhdGUoZWxlbWVudFtEQVRBXSwgZSk7IH0pO1xuICAgICAgICAgICAgYXBwbHkoZWxlbWVudCwgZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHVwZGF0ZShlbGVtZW50W0RBVEFdLCBlKTsgfSk7XG5cbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgY29udGFpbmVyO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVUlraXQsICdjb250YWluZXInLCB7XG5cbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyID0gJChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiB1cGRhdGUoZGF0YSQkMSwgZSkge1xuXG4gICAgICAgICAgICBpZiAoIWRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxW25hbWVdLl9pc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDFbbmFtZV0uX2NhbGxVcGRhdGUoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBwYXRoKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBwYXRoID0gW107XG5cbiAgICAgICAgICAgIHdoaWxlIChlbGVtZW50ICYmIGVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkgJiYgZWxlbWVudC5wYXJlbnROb2RlKSB7XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIHBhdGgudW5zaGlmdChlbGVtZW50KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaG9va3NBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsSG9vayA9IGZ1bmN0aW9uIChob29rKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgaGFuZGxlcnMgPSB0aGlzLiRvcHRpb25zW2hvb2tdO1xuXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBoYW5kbGVyLmNhbGwodGhpcyQxKTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsQ29ubmVjdGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgaWYgKHRoaXMuX2Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuICAgICAgICAgICAgdGhpcy5faW5pdFByb3BzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdiZWZvcmVDb25uZWN0Jyk7XG4gICAgICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLl9pbml0RXZlbnRzKCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0T2JzZXJ2ZXIoKTtcblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Nvbm5lY3RlZCcpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZWFkeShmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX2NhbGxSZWFkeSgpOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbERpc2Nvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdiZWZvcmVEaXNjb25uZWN0Jyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlciA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3VuYmluZEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Rpc2Nvbm5lY3RlZCcpO1xuXG4gICAgICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbFJlYWR5ID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5faXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5faXNSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygncmVhZHknKTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG4gICAgICAgICAgICB0aGlzLl9jYWxsVXBkYXRlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsVXBkYXRlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGUgPSBjcmVhdGVFdmVudChlIHx8ICd1cGRhdGUnKTtcblxuICAgICAgICAgICAgdmFyIHR5cGUgPSBlLnR5cGU7XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhbJ3VwZGF0ZScsICdsb2FkJywgJ3Jlc2l6ZSddLCB0eXBlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciB1cGRhdGVzID0gdGhpcy4kb3B0aW9ucy51cGRhdGU7XG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5fZnJhbWVzO1xuICAgICAgICAgICAgdmFyIHJlYWRzID0gcmVmLnJlYWRzO1xuICAgICAgICAgICAgdmFyIHdyaXRlcyA9IHJlZi53cml0ZXM7XG5cbiAgICAgICAgICAgIGlmICghdXBkYXRlcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChyZWYsIGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVhZCA9IHJlZi5yZWFkO1xuICAgICAgICAgICAgICAgIHZhciB3cml0ZSA9IHJlZi53cml0ZTtcbiAgICAgICAgICAgICAgICB2YXIgZXZlbnRzID0gcmVmLmV2ZW50cztcblxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgIT09ICd1cGRhdGUnICYmICFpbmNsdWRlcyhldmVudHMsIHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmVhZCAmJiAhaW5jbHVkZXMoZmFzdGRvbS5yZWFkcywgcmVhZHNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRzW2ldID0gZmFzdGRvbS5yZWFkKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMkMS5fY29ubmVjdGVkICYmIHJlYWQuY2FsbCh0aGlzJDEsIHRoaXMkMS5fZGF0YSwgZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlICYmIHdyaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFzdGRvbS5jbGVhcih3cml0ZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB3cml0ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzJDEuX2RhdGEsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVhZHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh3cml0ZSAmJiAhaW5jbHVkZXMoZmFzdGRvbS53cml0ZXMsIHdyaXRlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVzW2ldID0gZmFzdGRvbS53cml0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX2Nvbm5lY3RlZCAmJiB3cml0ZS5jYWxsKHRoaXMkMSwgdGhpcyQxLl9kYXRhLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB3cml0ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXRlQVBJIChVSWtpdCkge1xuXG4gICAgICAgIHZhciB1aWQgPSAwO1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gbm9ybWFsaXplRGF0YShvcHRpb25zLCB0aGlzLmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuXG4gICAgICAgICAgICB0aGlzLiRvcHRpb25zID0gbWVyZ2VPcHRpb25zKHRoaXMuY29uc3RydWN0b3Iub3B0aW9ucywgb3B0aW9ucywgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLiRlbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLiRwcm9wcyA9IHt9O1xuXG4gICAgICAgICAgICB0aGlzLl9mcmFtZXMgPSB7cmVhZHM6IHt9LCB3cml0ZXM6IHt9fTtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLl91aWQgPSB1aWQrKztcbiAgICAgICAgICAgIHRoaXMuX2luaXREYXRhKCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0TWV0aG9kcygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdENvbXB1dGVkcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2NyZWF0ZWQnKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRtb3VudChvcHRpb25zLmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXREYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgZGF0YSQkMSA9IHJlZi5kYXRhOyBpZiAoIGRhdGEkJDEgPT09IHZvaWQgMCApIGRhdGEkJDEgPSB7fTtcblxuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzJDEuJHByb3BzW2tleV0gPSB0aGlzJDFba2V5XSA9IGRhdGEkJDFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRNZXRob2RzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgbWV0aG9kcyA9IHJlZi5tZXRob2RzO1xuXG4gICAgICAgICAgICBpZiAobWV0aG9kcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBtZXRob2RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gYmluZChtZXRob2RzW2tleV0sIHRoaXMkMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdENvbXB1dGVkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGNvbXB1dGVkID0gcmVmLmNvbXB1dGVkO1xuXG4gICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuXG4gICAgICAgICAgICBpZiAoY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJDb21wdXRlZCh0aGlzJDEsIGtleSwgY29tcHV0ZWRba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fcmVzZXRDb21wdXRlZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wdXRlZHMgPSB7fTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRQcm9wcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIGtleTtcblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcblxuICAgICAgICAgICAgcHJvcHMgPSBwcm9wcyB8fCBnZXRQcm9wcyh0aGlzLiRvcHRpb25zLCB0aGlzLiRuYW1lKTtcblxuICAgICAgICAgICAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHByb3BzW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kcHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgZXhjbHVkZSA9IFt0aGlzLiRvcHRpb25zLmNvbXB1dGVkLCB0aGlzLiRvcHRpb25zLm1ldGhvZHNdO1xuICAgICAgICAgICAgZm9yIChrZXkgaW4gdGhpcyQxLiRwcm9wcykge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gcHJvcHMgJiYgbm90SW4oZXhjbHVkZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IHRoaXMkMS4kcHJvcHNba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgZXZlbnRzID0gcmVmLmV2ZW50cztcblxuICAgICAgICAgICAgaWYgKGV2ZW50cykge1xuXG4gICAgICAgICAgICAgICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oZXZlbnQsICdoYW5kbGVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQodGhpcyQxLCBldmVudFtrZXldLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJFdmVudCh0aGlzJDEsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl91bmJpbmRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudHMuZm9yRWFjaChmdW5jdGlvbiAodW5iaW5kKSB7IHJldHVybiB1bmJpbmQoKTsgfSk7XG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBbXTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRPYnNlcnZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGF0dHJzID0gcmVmLmF0dHJzO1xuICAgICAgICAgICAgdmFyIHByb3BzID0gcmVmLnByb3BzO1xuICAgICAgICAgICAgdmFyIGVsID0gcmVmLmVsO1xuICAgICAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyIHx8ICFwcm9wcyB8fCAhYXR0cnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF0dHJzID0gaXNBcnJheShhdHRycykgPyBhdHRycyA6IE9iamVjdC5rZXlzKHByb3BzKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gaHlwaGVuYXRlKGtleSk7IH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gZ2V0UHJvcHModGhpcyQxLiRvcHRpb25zLCB0aGlzJDEuJG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChhdHRycy5zb21lKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICFpc1VuZGVmaW5lZChkYXRhJCQxW2tleV0pICYmIGRhdGEkJDFba2V5XSAhPT0gdGhpcyQxLiRwcm9wc1trZXldOyB9KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZShlbCwge2F0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogYXR0cnMuY29uY2F0KFt0aGlzLiRuYW1lLCAoXCJkYXRhLVwiICsgKHRoaXMuJG5hbWUpKV0pfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0UHJvcHMob3B0cywgbmFtZSkge1xuXG4gICAgICAgICAgICB2YXIgZGF0YSQkMSA9IHt9O1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBvcHRzLmFyZ3M7IGlmICggYXJncyA9PT0gdm9pZCAwICkgYXJncyA9IFtdO1xuICAgICAgICAgICAgdmFyIHByb3BzID0gb3B0cy5wcm9wczsgaWYgKCBwcm9wcyA9PT0gdm9pZCAwICkgcHJvcHMgPSB7fTtcbiAgICAgICAgICAgIHZhciBlbCA9IG9wdHMuZWw7XG5cbiAgICAgICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YSQkMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3AgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzQXR0cihlbCwgcHJvcCkpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjb2VyY2UocHJvcHNba2V5XSwgYXR0cihlbCwgcHJvcCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSAndGFyZ2V0JyAmJiAoIXZhbHVlIHx8IHN0YXJ0c1dpdGgodmFsdWUsICdfJykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDFba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMoZGF0YShlbCwgbmFtZSksIGFyZ3MpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrZXkkMSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3AkMSA9IGNhbWVsaXplKGtleSQxKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNbcHJvcCQxXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDFbcHJvcCQxXSA9IGNvZXJjZShwcm9wc1twcm9wJDFdLCBvcHRpb25zW2tleSQxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0YSQkMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlZ2lzdGVyQ29tcHV0ZWQoY29tcG9uZW50LCBrZXksIGNiKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29tcG9uZW50LCBrZXksIHtcblxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBfY29tcHV0ZWRzID0gY29tcG9uZW50Ll9jb21wdXRlZHM7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkcHJvcHMgPSBjb21wb25lbnQuJHByb3BzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gY29tcG9uZW50LiRlbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc093bihfY29tcHV0ZWRzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfY29tcHV0ZWRzW2tleV0gPSBjYi5jYWxsKGNvbXBvbmVudCwgJHByb3BzLCAkZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21wdXRlZHNba2V5XTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuX2NvbXB1dGVkc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRXZlbnQoY29tcG9uZW50LCBldmVudCwga2V5KSB7XG5cbiAgICAgICAgICAgIGlmICghaXNQbGFpbk9iamVjdChldmVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudCA9ICh7bmFtZToga2V5LCBoYW5kbGVyOiBldmVudH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgbmFtZSA9IGV2ZW50Lm5hbWU7XG4gICAgICAgICAgICB2YXIgZWwgPSBldmVudC5lbDtcbiAgICAgICAgICAgIHZhciBoYW5kbGVyID0gZXZlbnQuaGFuZGxlcjtcbiAgICAgICAgICAgIHZhciBjYXB0dXJlID0gZXZlbnQuY2FwdHVyZTtcbiAgICAgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGV2ZW50LmRlbGVnYXRlO1xuICAgICAgICAgICAgdmFyIGZpbHRlciQkMSA9IGV2ZW50LmZpbHRlcjtcbiAgICAgICAgICAgIHZhciBzZWxmID0gZXZlbnQuc2VsZjtcbiAgICAgICAgICAgIGVsID0gaXNGdW5jdGlvbihlbClcbiAgICAgICAgICAgICAgICA/IGVsLmNhbGwoY29tcG9uZW50KVxuICAgICAgICAgICAgICAgIDogZWwgfHwgY29tcG9uZW50LiRlbDtcblxuICAgICAgICAgICAgaWYgKGlzQXJyYXkoZWwpKSB7XG4gICAgICAgICAgICAgICAgZWwuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlZ2lzdGVyRXZlbnQoY29tcG9uZW50LCBhc3NpZ24oe30sIGV2ZW50LCB7ZWw6IGVsfSksIGtleSk7IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFlbCB8fCBmaWx0ZXIkJDEgJiYgIWZpbHRlciQkMS5jYWxsKGNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhbmRsZXIgPSBkZXRhaWwoaXNTdHJpbmcoaGFuZGxlcikgPyBjb21wb25lbnRbaGFuZGxlcl0gOiBiaW5kKGhhbmRsZXIsIGNvbXBvbmVudCkpO1xuXG4gICAgICAgICAgICBpZiAoc2VsZikge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmRmlsdGVyKGhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb21wb25lbnQuX2V2ZW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIG9uKFxuICAgICAgICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgIWRlbGVnYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNTdHJpbmcoZGVsZWdhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkZWxlZ2F0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGVsZWdhdGUuY2FsbChjb21wb25lbnQpLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2VsZkZpbHRlcihoYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gc2VsZkhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCA9PT0gZS5jdXJyZW50VGFyZ2V0IHx8IGUudGFyZ2V0ID09PSBlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbChudWxsLCBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbm90SW4ob3B0aW9ucywga2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5ldmVyeShmdW5jdGlvbiAoYXJyKSB7IHJldHVybiAhYXJyIHx8ICFoYXNPd24oYXJyLCBrZXkpOyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRldGFpbChsaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiBpc0FycmF5KGUuZGV0YWlsKSA/IGxpc3RlbmVyLmFwcGx5KHZvaWQgMCwgW2VdLmNvbmNhdChlLmRldGFpbCkpIDogbGlzdGVuZXIoZSk7IH07XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb2VyY2UodHlwZSwgdmFsdWUpIHtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09IEJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Cb29sZWFuKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xpc3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTGlzdCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtZWRpYScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9NZWRpYSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0eXBlID8gdHlwZSh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHRvTWVkaWEodmFsdWUpIHtcblxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVswXSA9PT0gJ0AnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gXCJtZWRpYS1cIiArICh2YWx1ZS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvRmxvYXQoZ2V0Q3NzVmFyKG5hbWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgIWlzTmFOKHZhbHVlKSA/IChcIihtaW4td2lkdGg6IFwiICsgdmFsdWUgKyBcInB4KVwiKSA6IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbm9ybWFsaXplRGF0YShyZWYsIHJlZiQxKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSQkMSA9IHJlZi5kYXRhO1xuICAgICAgICAgICAgdmFyIGVsID0gcmVmLmVsO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSByZWYkMS5hcmdzO1xuICAgICAgICAgICAgdmFyIHByb3BzID0gcmVmJDEucHJvcHM7IGlmICggcHJvcHMgPT09IHZvaWQgMCApIHByb3BzID0ge307XG5cbiAgICAgICAgICAgIGRhdGEkJDEgPSBpc0FycmF5KGRhdGEkJDEpXG4gICAgICAgICAgICAgICAgPyBhcmdzICYmIGFyZ3MubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YSQkMS5zbGljZSgwLCBhcmdzLmxlbmd0aCkucmVkdWNlKGZ1bmN0aW9uIChkYXRhJCQxLCB2YWx1ZSwgaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbihkYXRhJCQxLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDFbYXJnc1tpbmRleCQkMV1dID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YSQkMTtcbiAgICAgICAgICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiBkYXRhJCQxO1xuXG4gICAgICAgICAgICBpZiAoZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChkYXRhJCQxW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGF0YSQkMVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMVtrZXldID0gcHJvcHNba2V5XSA/IGNvZXJjZShwcm9wc1trZXldLCBkYXRhJCQxW2tleV0sIGVsKSA6IGRhdGEkJDFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YW5jZUFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChlbCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgIGlmICghZWxbREFUQV0pIHtcbiAgICAgICAgICAgICAgICBlbFtEQVRBXSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZWxbREFUQV1bbmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsW0RBVEFdW25hbWVdID0gdGhpcztcblxuICAgICAgICAgICAgdGhpcy4kZWwgPSB0aGlzLiRvcHRpb25zLmVsID0gdGhpcy4kb3B0aW9ucy5lbCB8fCBlbDtcblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2luaXQnKTtcblxuICAgICAgICAgICAgaWYgKHdpdGhpbihlbCwgZG9jdW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxsVXBkYXRlKGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kcmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxsRGlzY29ubmVjdGVkKCk7XG4gICAgICAgICAgICB0aGlzLl9jYWxsQ29ubmVjdGVkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKHJlbW92ZUVsKSB7XG4gICAgICAgICAgICBpZiAoIHJlbW92ZUVsID09PSB2b2lkIDAgKSByZW1vdmVFbCA9IGZhbHNlO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGVsID0gcmVmLmVsO1xuICAgICAgICAgICAgdmFyIG5hbWUgPSByZWYubmFtZTtcblxuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnZGVzdHJveScpO1xuXG4gICAgICAgICAgICBpZiAoIWVsIHx8ICFlbFtEQVRBXSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdW25hbWVdO1xuXG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGVsW0RBVEFdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZWxbREFUQV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZW1vdmVFbCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZSh0aGlzLiRlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiRjcmVhdGUgPSBmdW5jdGlvbiAoY29tcG9uZW50LCBlbGVtZW50LCBkYXRhJCQxKSB7XG4gICAgICAgICAgICByZXR1cm4gVUlraXRbY29tcG9uZW50XShlbGVtZW50LCBkYXRhJCQxKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJHVwZGF0ZSA9IFVJa2l0LnVwZGF0ZTtcbiAgICAgICAgVUlraXQucHJvdG90eXBlLiRnZXRDb21wb25lbnQgPSBVSWtpdC5nZXRDb21wb25lbnQ7XG5cbiAgICAgICAgdmFyIG5hbWVzID0ge307XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFVJa2l0LnByb3RvdHlwZSwge1xuXG4gICAgICAgICAgICAkY29udGFpbmVyOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFVJa2l0LCAnY29udGFpbmVyJyksXG5cbiAgICAgICAgICAgICRuYW1lOiB7XG5cbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSByZWYubmFtZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIW5hbWVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lc1tuYW1lXSA9IFVJa2l0LnByZWZpeCArIGh5cGhlbmF0ZShuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHZhciBVSWtpdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcblxuICAgIFVJa2l0LnV0aWwgPSB1dGlsO1xuICAgIFVJa2l0LmRhdGEgPSAnX191aWtpdF9fJztcbiAgICBVSWtpdC5wcmVmaXggPSAndWstJztcbiAgICBVSWtpdC5vcHRpb25zID0ge307XG5cbiAgICBnbG9iYWxBUEkoVUlraXQpO1xuICAgIGhvb2tzQVBJKFVJa2l0KTtcbiAgICBzdGF0ZUFQSShVSWtpdCk7XG4gICAgY29tcG9uZW50QVBJKFVJa2l0KTtcbiAgICBpbnN0YW5jZUFQSShVSWtpdCk7XG5cbiAgICB2YXIgQ2xhc3MgPSB7XG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLiRuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBUb2dnbGFibGUgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsczogQm9vbGVhbixcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJ2xpc3QnLFxuICAgICAgICAgICAgZHVyYXRpb246IE51bWJlcixcbiAgICAgICAgICAgIG9yaWdpbjogU3RyaW5nLFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogU3RyaW5nLFxuICAgICAgICAgICAgcXVldWVkOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiBmYWxzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW2ZhbHNlXSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgICAgICBvcmlnaW46IGZhbHNlLFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2xpbmVhcicsXG4gICAgICAgICAgICBxdWV1ZWQ6IGZhbHNlLFxuXG4gICAgICAgICAgICBpbml0UHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJycsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAnJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICcnLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogJydcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGVQcm9wczoge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogMCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAwLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcDogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGhhc0FuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gISFhbmltYXRpb25bMF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYXNUcmFuc2l0aW9uOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYW5pbWF0aW9uID0gcmVmLmFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc0FuaW1hdGlvbiAmJiBhbmltYXRpb25bMF0gPT09IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZUVsZW1lbnQ6IGZ1bmN0aW9uKHRhcmdldHMsIHNob3csIGFuaW1hdGUkJDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cyA9IHRvTm9kZXModGFyZ2V0cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGFsbCA9IGZ1bmN0aW9uICh0YXJnZXRzKSB7IHJldHVybiBQcm9taXNlJDEuYWxsKHRhcmdldHMubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGVFbGVtZW50KGVsLCBzaG93LCBhbmltYXRlJCQxKTsgfSkpOyB9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgdG9nZ2xlZCA9IHRhcmdldHMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdGhpcyQxLmlzVG9nZ2xlZChlbCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdW50b2dnbGVkID0gdGFyZ2V0cy5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXModG9nZ2xlZCwgZWwpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMkMS5xdWV1ZWQgfHwgIWlzVW5kZWZpbmVkKGFuaW1hdGUkJDEpIHx8ICFpc1VuZGVmaW5lZChzaG93KSB8fCAhdGhpcyQxLmhhc0FuaW1hdGlvbiB8fCB0YXJnZXRzLmxlbmd0aCA8IDIpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGFsbCh1bnRvZ2dsZWQuY29uY2F0KHRvZ2dsZWQpKTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsID0gYm9keS5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWwgPSB0b2dnbGVkWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluUHJvZ3Jlc3MgPSBBbmltYXRpb24uaW5Qcm9ncmVzcyhlbCkgJiYgaGFzQ2xhc3MoZWwsICd1ay1hbmltYXRpb24tbGVhdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBUcmFuc2l0aW9uLmluUHJvZ3Jlc3MoZWwpICYmIGVsLnN0eWxlLmhlaWdodCA9PT0gJzBweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhbGwodG9nZ2xlZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGFsbCh1bnRvZ2dsZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LnNjcm9sbFRvcCA9IHNjcm9sbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHAudGhlbihyZXNvbHZlLCBub29wKTtcblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdG9nZ2xlTm93OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gUHJvbWlzZSQxLmFsbCh0b05vZGVzKHRhcmdldHMpLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlRWxlbWVudChlbCwgc2hvdywgZmFsc2UpOyB9KSkudGhlbihyZXNvbHZlLCBub29wKTsgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc1RvZ2dsZWQ6IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5vZGVzID0gdG9Ob2RlcyhlbCB8fCB0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xzXG4gICAgICAgICAgICAgICAgICAgID8gaGFzQ2xhc3Mobm9kZXMsIHRoaXMuY2xzLnNwbGl0KCcgJylbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogIWhhc0F0dHIobm9kZXMsICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHVwZGF0ZUFyaWE6IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLCAnYXJpYS1oaWRkZW4nLCAhdGhpcy5pc1RvZ2dsZWQoZWwpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlRWxlbWVudDogZnVuY3Rpb24oZWwsIHNob3csIGFuaW1hdGUkJDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgc2hvdyA9IGlzQm9vbGVhbihzaG93KVxuICAgICAgICAgICAgICAgICAgICA/IHNob3dcbiAgICAgICAgICAgICAgICAgICAgOiBBbmltYXRpb24uaW5Qcm9ncmVzcyhlbClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFzQ2xhc3MoZWwsICd1ay1hbmltYXRpb24tbGVhdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBUcmFuc2l0aW9uLmluUHJvZ3Jlc3MoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlbC5zdHlsZS5oZWlnaHQgPT09ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAhdGhpcy5pc1RvZ2dsZWQoZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0cmlnZ2VyKGVsLCAoXCJiZWZvcmVcIiArIChzaG93ID8gJ3Nob3cnIDogJ2hpZGUnKSksIFt0aGlzXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IChhbmltYXRlJCQxID09PSBmYWxzZSB8fCAhdGhpcy5oYXNBbmltYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl90b2dnbGVJbW1lZGlhdGVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmhhc1RyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdG9nZ2xlSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX3RvZ2dsZUFuaW1hdGlvblxuICAgICAgICAgICAgICAgICkoZWwsIHNob3cpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgc2hvdyA/ICdzaG93JyA6ICdoaWRlJywgW3RoaXNdKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCBzaG93ID8gJ3Nob3duJyA6ICdoaWRkZW4nLCBbdGhpcyQxXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKGVsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90b2dnbGU6IGZ1bmN0aW9uKGVsLCB0b2dnbGVkKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IGluY2x1ZGVzKHRoaXMuY2xzLCAnICcpIHx8IEJvb2xlYW4odG9nZ2xlZCkgIT09IGhhc0NsYXNzKGVsLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgJiYgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMuY2xzLCBpbmNsdWRlcyh0aGlzLmNscywgJyAnKSA/IHVuZGVmaW5lZCA6IHRvZ2dsZWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBCb29sZWFuKHRvZ2dsZWQpID09PSBoYXNBdHRyKGVsLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgJiYgYXR0cihlbCwgJ2hpZGRlbicsICF0b2dnbGVkID8gJycgOiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkJCgnW2F1dG9mb2N1c10nLCBlbCkuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGlzVmlzaWJsZShlbCkgJiYgKGVsLmZvY3VzKCkgfHwgdHJ1ZSk7IH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBcmlhKGVsKTtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRoaXMuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlSW1tZWRpYXRlOiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZShlbCwgc2hvdyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlSGVpZ2h0OiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaW5Qcm9ncmVzcyA9IFRyYW5zaXRpb24uaW5Qcm9ncmVzcyhlbCk7XG4gICAgICAgICAgICAgICAgdmFyIGlubmVyID0gZWwuaGFzQ2hpbGROb2RlcyA/IHRvRmxvYXQoY3NzKGVsLmZpcnN0RWxlbWVudENoaWxkLCAnbWFyZ2luVG9wJykpICsgdG9GbG9hdChjc3MoZWwubGFzdEVsZW1lbnRDaGlsZCwgJ21hcmdpbkJvdHRvbScpKSA6IDA7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRIZWlnaHQgPSBpc1Zpc2libGUoZWwpID8gaGVpZ2h0KGVsKSArIChpblByb2dyZXNzID8gMCA6IGlubmVyKSA6IDA7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNUb2dnbGVkKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGhlaWdodChlbCwgJycpO1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNoaWxkIGNvbXBvbmVudHMgZmlyc3RcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZW5kSGVpZ2h0ID0gaGVpZ2h0KGVsKSArIChpblByb2dyZXNzID8gMCA6IGlubmVyKTtcbiAgICAgICAgICAgICAgICBoZWlnaHQoZWwsIGN1cnJlbnRIZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChzaG93XG4gICAgICAgICAgICAgICAgICAgID8gVHJhbnNpdGlvbi5zdGFydChlbCwgYXNzaWduKHt9LCB0aGlzLmluaXRQcm9wcywge292ZXJmbG93OiAnaGlkZGVuJywgaGVpZ2h0OiBlbmRIZWlnaHR9KSwgTWF0aC5yb3VuZCh0aGlzLmR1cmF0aW9uICogKDEgLSBjdXJyZW50SGVpZ2h0IC8gZW5kSGVpZ2h0KSksIHRoaXMudHJhbnNpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgOiBUcmFuc2l0aW9uLnN0YXJ0KGVsLCB0aGlzLmhpZGVQcm9wcywgTWF0aC5yb3VuZCh0aGlzLmR1cmF0aW9uICogKGN1cnJlbnRIZWlnaHQgLyBlbmRIZWlnaHQpKSwgdGhpcy50cmFuc2l0aW9uKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlKGVsLCBmYWxzZSk7IH0pXG4gICAgICAgICAgICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNzcyhlbCwgdGhpcyQxLmluaXRQcm9wcyk7IH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlQW5pbWF0aW9uOiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKGVsKTtcblxuICAgICAgICAgICAgICAgIGlmIChzaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZShlbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24uaW4oZWwsIHRoaXMuYW5pbWF0aW9uWzBdLCB0aGlzLmR1cmF0aW9uLCB0aGlzLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIEFuaW1hdGlvbi5vdXQoZWwsIHRoaXMuYW5pbWF0aW9uWzFdIHx8IHRoaXMuYW5pbWF0aW9uWzBdLCB0aGlzLmR1cmF0aW9uLCB0aGlzLm9yaWdpbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZShlbCwgZmFsc2UpOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEFjY29yZGlvbiA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVG9nZ2xhYmxlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0czogU3RyaW5nLFxuICAgICAgICAgICAgYWN0aXZlOiBudWxsLFxuICAgICAgICAgICAgY29sbGFwc2libGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICAgICAgICAgIHRvZ2dsZTogU3RyaW5nLFxuICAgICAgICAgICAgY29udGVudDogU3RyaW5nLFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0czogJz4gKicsXG4gICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbdHJ1ZV0sXG4gICAgICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNsc09wZW46ICd1ay1vcGVuJyxcbiAgICAgICAgICAgIHRvZ2dsZTogJz4gLnVrLWFjY29yZGlvbi10aXRsZScsXG4gICAgICAgICAgICBjb250ZW50OiAnPiAudWstYWNjb3JkaW9uLWNvbnRlbnQnLFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2Vhc2UnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaXRlbXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldHMgPSByZWYudGFyZ2V0cztcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0YXJnZXRzLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRoaXMudGFyZ2V0cykgKyBcIiBcIiArICh0aGlzLiRwcm9wcy50b2dnbGUpKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKGluZGV4KCQkKCgodGhpcy50YXJnZXRzKSArIFwiIFwiICsgKHRoaXMuJHByb3BzLnRvZ2dsZSkpLCB0aGlzLiRlbCksIGUuY3VycmVudCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuaXRlbXNbTnVtYmVyKHRoaXMuYWN0aXZlKV07XG4gICAgICAgICAgICBpZiAoYWN0aXZlICYmICFoYXNDbGFzcyhhY3RpdmUsIHRoaXMuY2xzT3BlbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGVJbW1lZGlhdGUoJCh0aGlzJDEuY29udGVudCwgZWwpLCBoYXNDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4pKTsgfSk7XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmUgPSAhdGhpcy5jb2xsYXBzaWJsZSAmJiAhaGFzQ2xhc3ModGhpcy5pdGVtcywgdGhpcy5jbHNPcGVuKSAmJiB0aGlzLml0ZW1zWzBdO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKGFjdGl2ZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbihpdGVtLCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IGdldEluZGV4KGl0ZW0sIHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSBmaWx0ZXIodGhpcy5pdGVtcywgKFwiLlwiICsgKHRoaXMuY2xzT3BlbikpKTtcblxuICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1zW2luZGV4JCQxXTtcblxuICAgICAgICAgICAgICAgIGl0ZW0gJiYgW2l0ZW1dXG4gICAgICAgICAgICAgICAgICAgIC5jb25jYXQoIXRoaXMubXVsdGlwbGUgJiYgIWluY2x1ZGVzKGFjdGl2ZSwgaXRlbSkgJiYgYWN0aXZlIHx8IFtdKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzSXRlbSA9IGVsID09PSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gaXNJdGVtICYmICFoYXNDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlICYmIGlzSXRlbSAmJiAhdGhpcyQxLmNvbGxhcHNpYmxlICYmIGFjdGl2ZS5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4sIHN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBlbC5fd3JhcHBlciA/IGVsLl93cmFwcGVyLmZpcnN0RWxlbWVudENoaWxkIDogJCh0aGlzJDEuY29udGVudCwgZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVsLl93cmFwcGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX3dyYXBwZXIgPSB3cmFwQWxsKGNvbnRlbnQsICc8ZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIoZWwuX3dyYXBwZXIsICdoaWRkZW4nLCBzdGF0ZSA/ICcnIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5fdG9nZ2xlSW1tZWRpYXRlKGNvbnRlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQoZWwuX3dyYXBwZXIsIHN0YXRlLCBhbmltYXRlJCQxKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKSA9PT0gc3RhdGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZUltbWVkaWF0ZShjb250ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5fd3JhcHBlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcChjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEFsZXJ0ID0ge1xuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICdhbmltYXRpb24nLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbG9zZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBbdHJ1ZV0sXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1hbGVydC1jbG9zZScsXG4gICAgICAgICAgICBkdXJhdGlvbjogMTUwLFxuICAgICAgICAgICAgaGlkZVByb3BzOiBhc3NpZ24oe29wYWNpdHk6IDB9LCBUb2dnbGFibGUuZGF0YS5oaWRlUHJvcHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbENsb3NlO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLiRkZXN0cm95KHRydWUpOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gQ29yZSAoVUlraXQpIHtcblxuICAgICAgICByZWFkeShmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHZhciBzY3JvbGwgPSAwO1xuICAgICAgICAgICAgdmFyIHN0YXJ0ZWQgPSAwO1xuXG4gICAgICAgICAgICBvbih3aW5kb3csICdsb2FkIHJlc2l6ZScsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBVSWtpdC51cGRhdGUobnVsbCwgZSk7IH0pO1xuICAgICAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBlLmRpciA9IHNjcm9sbCA8PSB3aW5kb3cucGFnZVlPZmZzZXQgPyAnZG93bicgOiAndXAnO1xuICAgICAgICAgICAgICAgIGUucGFnZVlPZmZzZXQgPSBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgVUlraXQudXBkYXRlKG51bGwsIGUpO1xuICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlfSk7XG5cbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAnYW5pbWF0aW9uc3RhcnQnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoKGNzcyh0YXJnZXQsICdhbmltYXRpb25OYW1lJykgfHwgJycpLm1hdGNoKC9edWstLioobGVmdHxyaWdodCkvKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQrKztcbiAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1gnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEtLXN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WCcsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdG9Ncyhjc3ModGFyZ2V0LCAnYW5pbWF0aW9uRHVyYXRpb24nKSkgKyAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRydWUpO1xuXG4gICAgICAgICAgICBpZiAoIWhhc1RvdWNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY2xzID0gJ3VrLWhvdmVyJztcblxuICAgICAgICAgICAgb24oZG9jdW1lbnQsICd0YXAnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkJCgoXCIuXCIgKyBjbHMpKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIXdpdGhpbih0YXJnZXQsIGVsKSAmJiByZW1vdmVDbGFzcyhlbCwgY2xzKTsgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVUlraXQsICdob3ZlclNlbGVjdG9yJywge1xuXG4gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgJ3RhcCcsIHNlbGVjdG9yLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IHJlZi5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2xhc3MoY3VycmVudCwgY2xzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgVUlraXQuaG92ZXJTZWxlY3RvciA9ICcudWstYW5pbWF0aW9uLXRvZ2dsZSwgLnVrLXRyYW5zaXRpb24tdG9nZ2xlLCBbdWstaG92ZXJdJztcblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHZhciBWaWRlbyA9IHtcblxuICAgICAgICBhcmdzOiAnYXV0b3BsYXknLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogQm9vbGVhbixcbiAgICAgICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGF1dG9tdXRlOiBmYWxzZSxcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaW5WaWV3OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXV0b3BsYXkgPSByZWYuYXV0b3BsYXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0b3BsYXkgPT09ICdpbnZpZXcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5WaWV3ICYmICFoYXNBdHRyKHRoaXMuJGVsLCAncHJlbG9hZCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWwucHJlbG9hZCA9ICdub25lJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWR5OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgdGhpcy5wbGF5ZXIgPSBuZXcgUGxheWVyKHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b211dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5tdXRlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oXywgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMucGxheWVyIHx8ICh0eXBlID09PSAnc2Nyb2xsJyB8fCB0eXBlID09PSAncmVzaXplJykgJiYgIXRoaXMuaW5WaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBpc1Zpc2libGUodGhpcy4kZWwpICYmIGNzcyh0aGlzLiRlbCwgJ3Zpc2liaWxpdHknKSAhPT0gJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5WaWV3OiB0aGlzLmluVmlldyAmJiBpc0luVmlldyh0aGlzLiRlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZpc2libGUgPSByZWYudmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluVmlldyA9IHJlZi5pblZpZXc7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXZpc2libGUgfHwgdGhpcy5pblZpZXcgJiYgIWluVmlldykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF1dG9wbGF5ID09PSB0cnVlIHx8IHRoaXMuaW5WaWV3ICYmIGluVmlldykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIucGxheSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJywgJ3Njcm9sbCddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIENvdmVyID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBWaWRlb10sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBoZWlnaHQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGF1dG9tdXRlOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBlbCA9IHRoaXMuJGVsO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc1Zpc2libGUoZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gZWwucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICBjc3MoXG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbCwge3dpZHRoOiAnJywgaGVpZ2h0OiAnJ30pLFxuICAgICAgICAgICAgICAgICAgICBEaW1lbnNpb25zLmNvdmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoIHx8IGVsLmNsaWVudFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQgfHwgZWwuY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCQkMSArICh3aWR0aCQkMSAlIDIgPyAxIDogMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQkJDEgKyAoaGVpZ2h0JCQxICUgMiA/IDEgOiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBsb2FkZWRtZXRhZGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgUG9zaXRpb24gPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHBvczogU3RyaW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiBudWxsLFxuICAgICAgICAgICAgZmxpcDogQm9vbGVhbixcbiAgICAgICAgICAgIGNsc1BvczogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcG9zOiAoXCJib3R0b20tXCIgKyAoIWlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JykpLFxuICAgICAgICAgICAgZmxpcDogdHJ1ZSxcbiAgICAgICAgICAgIG9mZnNldDogZmFsc2UsXG4gICAgICAgICAgICBjbHNQb3M6ICcnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcG9zOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVmLnBvcztcblxuICAgICAgICAgICAgICAgIHJldHVybiAocG9zICsgKCFpbmNsdWRlcyhwb3MsICctJykgPyAnLWNlbnRlcicgOiAnJykpLnNwbGl0KCctJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkaXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc1swXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFsaWduOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHBvc2l0aW9uQXQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHRhcmdldCwgYm91bmRhcnkpIHtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgKCh0aGlzLmNsc1BvcykgKyBcIi0odG9wfGJvdHRvbXxsZWZ0fHJpZ2h0KSgtW2Etel0rKT9cIikpO1xuICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCB7dG9wOiAnJywgbGVmdDogJyd9KTtcblxuICAgICAgICAgICAgICAgIHZhciBub2RlO1xuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBvZmZzZXQkJDEgPSByZWYub2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgb2Zmc2V0JCQxID0gaXNOdW1lcmljKG9mZnNldCQkMSlcbiAgICAgICAgICAgICAgICAgICAgPyBvZmZzZXQkJDFcbiAgICAgICAgICAgICAgICAgICAgOiAobm9kZSA9ICQob2Zmc2V0JCQxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gb2Zmc2V0KG5vZGUpW2F4aXMgPT09ICd4JyA/ICdsZWZ0JyA6ICd0b3AnXSAtIG9mZnNldCh0YXJnZXQpW2F4aXMgPT09ICd4JyA/ICdyaWdodCcgOiAnYm90dG9tJ11cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIHZhciBheGlzID0gdGhpcy5nZXRBeGlzKCk7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gcG9zaXRpb25BdChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBheGlzID09PSAneCcgPyAoKGZsaXBQb3NpdGlvbih0aGlzLmRpcikpICsgXCIgXCIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArIFwiIFwiICsgKGZsaXBQb3NpdGlvbih0aGlzLmRpcikpKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKCh0aGlzLmRpcikgKyBcIiBcIiArICh0aGlzLmFsaWduKSkgOiAoKHRoaXMuYWxpZ24pICsgXCIgXCIgKyAodGhpcy5kaXIpKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKFwiXCIgKyAodGhpcy5kaXIgPT09ICdsZWZ0JyA/IC1vZmZzZXQkJDEgOiBvZmZzZXQkJDEpKSA6IChcIiBcIiArICh0aGlzLmRpciA9PT0gJ3RvcCcgPyAtb2Zmc2V0JCQxIDogb2Zmc2V0JCQxKSksXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmxpcCxcbiAgICAgICAgICAgICAgICAgICAgYm91bmRhcnlcbiAgICAgICAgICAgICAgICApLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IHJlZiQxLng7XG4gICAgICAgICAgICAgICAgdmFyIHkgPSByZWYkMS55O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBheGlzID09PSAneCcgPyB4IDogeTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduID0gYXhpcyA9PT0gJ3gnID8geSA6IHg7XG5cbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbGVtZW50LCAoKHRoaXMuY2xzUG9zKSArIFwiLVwiICsgKHRoaXMuZGlyKSArIFwiLVwiICsgKHRoaXMuYWxpZ24pKSwgdGhpcy5vZmZzZXQgPT09IGZhbHNlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QXhpczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlyID09PSAndG9wJyB8fCB0aGlzLmRpciA9PT0gJ2JvdHRvbScgPyAneScgOiAneCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhY3RpdmU7XG5cbiAgICB2YXIgRHJvcCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtQb3NpdGlvbiwgVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAncG9zJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbW9kZTogJ2xpc3QnLFxuICAgICAgICAgICAgdG9nZ2xlOiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnk6IEJvb2xlYW4sXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiBCb29sZWFuLFxuICAgICAgICAgICAgZGVsYXlTaG93OiBOdW1iZXIsXG4gICAgICAgICAgICBkZWxheUhpZGU6IE51bWJlcixcbiAgICAgICAgICAgIGNsc0Ryb3A6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1vZGU6IFsnY2xpY2snLCAnaG92ZXInXSxcbiAgICAgICAgICAgIHRvZ2dsZTogJy0gKicsXG4gICAgICAgICAgICBib3VuZGFyeTogd2luZG93LFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogZmFsc2UsXG4gICAgICAgICAgICBkZWxheVNob3c6IDAsXG4gICAgICAgICAgICBkZWxheUhpZGU6IDgwMCxcbiAgICAgICAgICAgIGNsc0Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgaG92ZXJJZGxlOiAyMDAsXG4gICAgICAgICAgICBhbmltYXRpb246IFsndWstYW5pbWF0aW9uLWZhZGUnXSxcbiAgICAgICAgICAgIGNsczogJ3VrLW9wZW4nXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gcmVmLmJvdW5kYXJ5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KGJvdW5kYXJ5LCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzRHJvcDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0Ryb3AgPSByZWYuY2xzRHJvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjbHNEcm9wIHx8IChcInVrLVwiICsgKHRoaXMuJG9wdGlvbnMubmFtZSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzUG9zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbHNEcm9wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnRyYWNrZXIgPSBuZXcgTW91c2VUcmFja2VyKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJvcCk7XG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRwcm9wcztcbiAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUgPSB0b2dnbGUgJiYgdGhpcy4kY3JlYXRlKCd0b2dnbGUnLCBxdWVyeSh0b2dnbGUsIHRoaXMuJGVsKSwge1xuICAgICAgICAgICAgICAgIHRhcmdldDogdGhpcy4kZWwsXG4gICAgICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVBcmlhKHRoaXMuJGVsKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCIuXCIgKyAodGhpcy5jbHNEcm9wKSArIFwiLWNsb3NlXCIpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj1cIiNcIl0nO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gZS50YXJnZXQuaGFzaDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlkIHx8ICF3aXRoaW4oaWQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNjcm9sbCcsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd0b2dnbGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHRvZ2dsZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b2dnbGUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckVudGVyLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgYWN0aXZlICE9PSB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBhY3RpdmUudG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBpbmNsdWRlcyhhY3RpdmUudG9nZ2xlLm1vZGUsICdob3ZlcicpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhd2l0aGluKGUudGFyZ2V0LCBhY3RpdmUudG9nZ2xlLiRlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICFwb2ludEluUmVjdCh7eDogZS5wYWdlWCwgeTogZS5wYWdlWX0sIG9mZnNldChhY3RpdmUuJGVsKSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0aGlzLnRvZ2dsZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlc2hvdycsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodG9nZ2xlICYmICFpbmNsdWRlcyh0b2dnbGUudGFyZ2V0LCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRvZ2dsZSB8fCB0aGlzLnRvZ2dsZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAoXCJ0b2dnbGVoaWRlIFwiICsgcG9pbnRlckxlYXZlKSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHRvZ2dsZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1RvdWNoKGUpIHx8IHRvZ2dsZSAmJiAhaW5jbHVkZXModG9nZ2xlLnRhcmdldCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9nZ2xlICYmIGluY2x1ZGVzKHRoaXMudG9nZ2xlLm1vZGUsICdob3ZlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhY2tlci5pbml0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy50b2dnbGUuJGVsLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHRoaXMudG9nZ2xlLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGUnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGVsICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IGFjdGl2ZSA9PT0gbnVsbCAmJiB3aXRoaW4odGFyZ2V0LCB0aGlzLiRlbCkgJiYgdGhpcy5pc1RvZ2dsZWQoKSA/IHRoaXMgOiBhY3RpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCkgPyBudWxsIDogYWN0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy50b2dnbGUuJGVsLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHRoaXMudG9nZ2xlLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlLiRlbC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkJCgnYSwgYnV0dG9uJywgdGhpcy50b2dnbGUuJGVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuYmx1cigpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhY2tlci5jYW5jZWwoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSAmJiAhQW5pbWF0aW9uLmluUHJvZ3Jlc3ModGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbih0b2dnbGUsIGRlbGF5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWxheSA9PT0gdm9pZCAwICkgZGVsYXkgPSB0cnVlO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgc2hvdyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICF0aGlzJDEuaXNUb2dnbGVkKCkgJiYgdGhpcyQxLnRvZ2dsZUVsZW1lbnQodGhpcyQxLiRlbCwgdHJ1ZSk7IH07XG4gICAgICAgICAgICAgICAgdmFyIHRyeVNob3cgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZSA9IHRvZ2dsZSB8fCB0aGlzJDEudG9nZ2xlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5jbGVhclRpbWVycygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlbGF5ICYmIGFjdGl2ZSAmJiBhY3RpdmUgIT09IHRoaXMkMSAmJiBhY3RpdmUuaXNEZWxheWluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3dUaW1lciA9IHNldFRpbWVvdXQodGhpcyQxLnNob3csIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzJDEuaXNQYXJlbnRPZihhY3RpdmUpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUuaGlkZVRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3RpdmUgJiYgIXRoaXMkMS5pc0NoaWxkT2YoYWN0aXZlKSAmJiAhdGhpcyQxLmlzUGFyZW50T2YoYWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhY3RpdmUgJiYgYWN0aXZlICE9PSBwcmV2ICYmICF0aGlzJDEuaXNDaGlsZE9mKGFjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIHRoaXMkMS5kZWxheVNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHNob3csIHRoaXMkMS5kZWxheVNob3cpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcyQxO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodG9nZ2xlICYmIHRoaXMudG9nZ2xlICYmIHRvZ2dsZS4kZWwgIT09IHRoaXMudG9nZ2xlLiRlbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIG9uY2UodGhpcy4kZWwsICdoaWRlJywgdHJ5U2hvdyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0cnlTaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oZGVsYXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGRlbGF5ID09PSB2b2lkIDAgKSBkZWxheSA9IHRydWU7XG5cblxuICAgICAgICAgICAgICAgIHZhciBoaWRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnRvZ2dsZU5vdyh0aGlzJDEuJGVsLCBmYWxzZSk7IH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzRGVsYXlpbmcgPSB0aGlzLnRyYWNrZXIubW92ZXNUbyh0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGVsYXkgJiYgdGhpcy5pc0RlbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGUsIHRoaXMuaG92ZXJJZGxlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlbGF5ICYmIHRoaXMuZGVsYXlIaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVyID0gc2V0VGltZW91dChoaWRlLCB0aGlzLmRlbGF5SGlkZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsZWFyVGltZXJzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGVsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzQWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlID09PSB0aGlzO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNDaGlsZE9mOiBmdW5jdGlvbihkcm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyb3AgJiYgZHJvcCAhPT0gdGhpcyAmJiB3aXRoaW4odGhpcy4kZWwsIGRyb3AuJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzUGFyZW50T2Y6IGZ1bmN0aW9uKGRyb3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHJvcCAmJiBkcm9wICE9PSB0aGlzICYmIHdpdGhpbihkcm9wLiRlbCwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3Nlcyh0aGlzLiRlbCwgKCh0aGlzLmNsc0Ryb3ApICsgXCItKHN0YWNrfGJvdW5kYXJ5KVwiKSk7XG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7dG9wOiAnJywgbGVmdDogJycsIGRpc3BsYXk6ICdibG9jayd9KTtcbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLiRlbCwgKCh0aGlzLmNsc0Ryb3ApICsgXCItYm91bmRhcnlcIiksIHRoaXMuYm91bmRhcnlBbGlnbik7XG5cbiAgICAgICAgICAgICAgICB2YXIgYm91bmRhcnkgPSBvZmZzZXQodGhpcy5ib3VuZGFyeSk7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduVG8gPSB0aGlzLmJvdW5kYXJ5QWxpZ24gPyBib3VuZGFyeSA6IG9mZnNldCh0aGlzLnRvZ2dsZS4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxpZ24gPT09ICdqdXN0aWZ5Jykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IHRoaXMuZ2V0QXhpcygpID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgcHJvcCwgYWxpZ25Ub1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLiRlbC5vZmZzZXRXaWR0aCA+IE1hdGgubWF4KGJvdW5kYXJ5LnJpZ2h0IC0gYWxpZ25Uby5sZWZ0LCBhbGlnblRvLnJpZ2h0IC0gYm91bmRhcnkubGVmdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLXN0YWNrXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uQXQodGhpcy4kZWwsIHRoaXMuYm91bmRhcnlBbGlnbiA/IHRoaXMuYm91bmRhcnkgOiB0aGlzLnRvZ2dsZS4kZWwsIHRoaXMuYm91bmRhcnkpO1xuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICcnKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgcmVnaXN0ZXJlZDtcblxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRXZlbnQoKSB7XG5cbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZ2lzdGVyZWQgPSB0cnVlO1xuICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IHJlZi5kZWZhdWx0UHJldmVudGVkO1xuXG4gICAgICAgICAgICB2YXIgcHJldjtcblxuICAgICAgICAgICAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdoaWxlIChhY3RpdmUgJiYgYWN0aXZlICE9PSBwcmV2ICYmICF3aXRoaW4odGFyZ2V0LCBhY3RpdmUuJGVsKSAmJiAhKGFjdGl2ZS50b2dnbGUgJiYgd2l0aGluKHRhcmdldCwgYWN0aXZlLnRvZ2dsZS4kZWwpKSkge1xuICAgICAgICAgICAgICAgIHByZXYgPSBhY3RpdmU7XG4gICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgRHJvcGRvd24gPSB7XG5cbiAgICAgICAgZXh0ZW5kczogRHJvcFxuXG4gICAgfTtcblxuICAgIHZhciBGb3JtQ3VzdG9tID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxJbnB1dCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ICYmICh0YXJnZXQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pbnB1dC5wYXJlbnROb2RlID09PSAkZWxcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pbnB1dC5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgICAgICAgICAgICAgfHwgcXVlcnkodGFyZ2V0LCAkZWwpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgaW5wdXQgPSByZWYuaW5wdXQ7XG5cbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgb3B0aW9uO1xuICAgICAgICAgICAgdmFyIHByb3AgPSBpc0lucHV0KHRhcmdldCkgPyAndmFsdWUnIDogJ3RleHRDb250ZW50JztcbiAgICAgICAgICAgIHZhciBwcmV2ID0gdGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXNbMF1cbiAgICAgICAgICAgICAgICA/IGlucHV0LmZpbGVzWzBdLm5hbWVcbiAgICAgICAgICAgICAgICA6IG1hdGNoZXMoaW5wdXQsICdzZWxlY3QnKSAmJiAob3B0aW9uID0gJCQoJ29wdGlvbicsIGlucHV0KS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5zZWxlY3RlZDsgfSlbMF0pXG4gICAgICAgICAgICAgICAgICAgID8gb3B0aW9uLnRleHRDb250ZW50XG4gICAgICAgICAgICAgICAgICAgIDogaW5wdXQudmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdmb2N1c2luIGZvY3Vzb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZScsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogc2VsSW5wdXQsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PT0gdGhpcy5pbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJ1ay1cIiArIChpbmNsdWRlcyh0eXBlLCAnZm9jdXMnKSA/ICdmb2N1cycgOiAnaG92ZXInKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMoWydmb2N1c2luJywgJ21vdXNlZW50ZXInXSwgdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjaGFuZ2UnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgLy8gRGVwcmVjYXRlZFxuICAgIHZhciBHaWYgPSB7XG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpbnZpZXcgPSBpc0luVmlldyh0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWludmlldyB8fCBkYXRhJCQxLmlzSW5WaWV3ID09PSBpbnZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGEkJDEuaXNJblZpZXcgPSBpbnZpZXc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWwuc3JjID0gdGhpcy4kZWwuc3JjO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgTWFyZ2luID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtYXJnaW46IFN0cmluZyxcbiAgICAgICAgICAgIGZpcnN0Q29sdW1uOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWFyZ2luOiAndWstbWFyZ2luLXNtYWxsLXRvcCcsXG4gICAgICAgICAgICBmaXJzdENvbHVtbjogJ3VrLWZpcnN0LWNvbHVtbidcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1zID0gdGhpcy4kZWwuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBbW11dO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtcy5sZW5ndGggfHwgIWlzVmlzaWJsZSh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDEucm93cyA9IHJvd3M7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGF0YSQkMS5yb3dzID0gZ2V0Um93cyhpdGVtcyk7XG4gICAgICAgICAgICAgICAgZGF0YSQkMS5zdGFja3MgPSAhZGF0YSQkMS5yb3dzLnNvbWUoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93Lmxlbmd0aCA+IDE7IH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcblxuXG4gICAgICAgICAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHsgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5tYXJnaW4sIGkgIT09IDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5maXJzdENvbHVtbiwgaiA9PT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0Um93cyhpdGVtcykge1xuICAgICAgICB2YXIgcm93cyA9IFtbXV07XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICB2YXIgZWwgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHZhciBkaW0gPSBnZXRPZmZzZXQoZWwpO1xuXG4gICAgICAgICAgICBpZiAoIWRpbS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IHJvd3MubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcblxuICAgICAgICAgICAgICAgIHZhciByb3cgPSByb3dzW2pdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFyb3dbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LnB1c2goZWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgbGVmdERpbSA9IGdldE9mZnNldChyb3dbMF0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpbS50b3AgPj0gbGVmdERpbS5ib3R0b20gLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChbZWxdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRpbS5ib3R0b20gPiBsZWZ0RGltLnRvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaW0ubGVmdCA8IGxlZnREaW0ubGVmdCAmJiAhaXNSdGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy51bnNoaWZ0KGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93LnB1c2goZWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnVuc2hpZnQoW2VsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcm93cztcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE9mZnNldChlbGVtZW50KSB7XG5cbiAgICAgICAgdmFyIG9mZnNldFRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICB2YXIgb2Zmc2V0TGVmdCA9IGVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3A6IG9mZnNldFRvcCxcbiAgICAgICAgICAgIGxlZnQ6IG9mZnNldExlZnQsXG4gICAgICAgICAgICBoZWlnaHQ6IG9mZnNldEhlaWdodCxcbiAgICAgICAgICAgIGJvdHRvbTogb2Zmc2V0VG9wICsgb2Zmc2V0SGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIEdyaWQgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogTWFyZ2luLFxuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBuYW1lOiAnZ3JpZCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1hc29ucnk6IEJvb2xlYW4sXG4gICAgICAgICAgICBwYXJhbGxheDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWFyZ2luOiAndWstZ3JpZC1tYXJnaW4nLFxuICAgICAgICAgICAgY2xzU3RhY2s6ICd1ay1ncmlkLXN0YWNrJyxcbiAgICAgICAgICAgIG1hc29ucnk6IGZhbHNlLFxuICAgICAgICAgICAgcGFyYWxsYXg6IDBcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwYXJhbGxheDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcmFsbGF4ID0gcmVmLnBhcmFsbGF4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHBhcmFsbGF4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLm1hc29ucnkgJiYgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1mbGV4LXRvcCB1ay1mbGV4LXdyYXAtdG9wJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFzb25yeSB8fCB0aGlzLnBhcmFsbGF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzID0gcm93cy5tYXAoZnVuY3Rpb24gKGVsZW1lbnRzKSB7IHJldHVybiBzb3J0QnkoZWxlbWVudHMsICdvZmZzZXRMZWZ0Jyk7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFzb25yeSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlcyA9IHJvd3MucmVkdWNlKGZ1bmN0aW9uICh0cmFuc2xhdGVzLCByb3csIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZXNbaV0gPSByb3cubWFwKGZ1bmN0aW9uIChfLCBqKSB7IHJldHVybiBpID09PSAwID8gMCA6IHRvRmxvYXQodHJhbnNsYXRlc1tpIC0gMV1bal0pICsgKGhlaWdodCQkMSAtIHRvRmxvYXQocm93c1tpIC0gMV1bal0gJiYgcm93c1tpIC0gMV1bal0ub2Zmc2V0SGVpZ2h0KSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IHJvdy5yZWR1Y2UoZnVuY3Rpb24gKGhlaWdodCQkMSwgZWwpIHsgcmV0dXJuIE1hdGgubWF4KGhlaWdodCQkMSwgZWwub2Zmc2V0SGVpZ2h0KTsgfSwgMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbEhlaWdodCA9IG1heENvbHVtbkhlaWdodChyb3dzKSArIGdldE1hcmdpblRvcCh0aGlzLiRlbCwgdGhpcy5tYXJnaW4pICogKHJvd3MubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7cm93czogcm93cywgdHJhbnNsYXRlczogdHJhbnNsYXRlcywgaGVpZ2h0OiBlbEhlaWdodH07XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RhY2tzID0gcmVmLnN0YWNrcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG5cblxuICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNTdGFjaywgc3RhY2tzKTtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdwYWRkaW5nQm90dG9tJywgdGhpcy5wYXJhbGxheCAmJiByb3dzLnNvbWUoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93Lmxlbmd0aCA+IDE7IH0pID8gdGhpcy5wYXJhbGxheCA6ICcnKTtcblxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgJiYgY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JywgaGVpZ2h0JCQxKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGVkOiB0aGlzLnBhcmFsbGF4ICYmIHJvd3Muc29tZShmdW5jdGlvbiAocm93KSB7IHJldHVybiByb3cubGVuZ3RoID4gMTsgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNjcm9sbGVkT3Zlcih0aGlzLiRlbCwgaGVpZ2h0JCQxID8gaGVpZ2h0JCQxIC0gaGVpZ2h0KHRoaXMuJGVsKSA6IDApICogdGhpcy5wYXJhbGxheFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsZWQgPSByZWYuc2Nyb2xsZWQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gcmVmLnRyYW5zbGF0ZXM7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsZWQgPT09IGZhbHNlICYmICF0cmFuc2xhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkgeyByZXR1cm4gcm93LmZvckVhY2goZnVuY3Rpb24gKGVsLCBqKSB7IHJldHVybiBjc3MoZWwsICd0cmFuc2Zvcm0nLCAhc2Nyb2xsZWQgJiYgIXRyYW5zbGF0ZXMgPyAnJyA6IChcInRyYW5zbGF0ZVkoXCIgKyAoKHRyYW5zbGF0ZXMgJiYgLXRyYW5zbGF0ZXNbaV1bal0pICsgKHNjcm9sbGVkID8gaiAlIDIgPyBzY3JvbGxlZCA6IHNjcm9sbGVkIC8gOCA6IDApKSArIFwicHgpXCIpKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTsgfVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldE1hcmdpblRvcChyb290LCBjbHMpIHtcblxuICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKHJvb3QuY2hpbGRyZW4pO1xuICAgICAgICB2YXIgcmVmID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gaGFzQ2xhc3MoZWwsIGNscyk7IH0pO1xuICAgICAgICB2YXIgbm9kZSA9IHJlZlswXTtcblxuICAgICAgICByZXR1cm4gdG9GbG9hdChub2RlXG4gICAgICAgICAgICA/IGNzcyhub2RlLCAnbWFyZ2luVG9wJylcbiAgICAgICAgICAgIDogY3NzKG5vZGVzWzBdLCAncGFkZGluZ0xlZnQnKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4Q29sdW1uSGVpZ2h0KHJvd3MpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsIHJvd3MucmVkdWNlKGZ1bmN0aW9uIChzdW0sIHJvdykge1xuICAgICAgICAgICAgcm93LmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBzdW1baV0gPSAoc3VtW2ldIHx8IDApICsgZWwub2Zmc2V0SGVpZ2h0OyB9KTtcbiAgICAgICAgICAgIHJldHVybiBzdW07XG4gICAgICAgIH0sIFtdKSk7XG4gICAgfVxuXG4gICAgdmFyIEhlaWdodE1hdGNoID0ge1xuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IFN0cmluZyxcbiAgICAgICAgICAgIHJvdzogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogJz4gKicsXG4gICAgICAgICAgICByb3c6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBlbGVtZW50czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0YXJnZXQsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLmVsZW1lbnRzLCB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogJycsXG4gICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogJydcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3M6ICF0aGlzLnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbdGhpcy5tYXRjaCh0aGlzLmVsZW1lbnRzKV1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Um93cyh0aGlzLmVsZW1lbnRzKS5tYXAoZnVuY3Rpb24gKGVsZW1lbnRzKSB7IHJldHVybiB0aGlzJDEubWF0Y2goZWxlbWVudHMpOyB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcblxuXG4gICAgICAgICAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IHJlZi5lbGVtZW50cztcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzKGVsZW1lbnRzLCB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogaGVpZ2h0JCQxLFxuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94J1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBtYXRjaDogZnVuY3Rpb24oZWxlbWVudHMpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0cyA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBtYXggPSAwO1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gTWF0aC5tYXgobWF4LCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0cy5wdXNoKGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBoZWlnaHRzW2ldIDwgbWF4OyB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7aGVpZ2h0OiBtYXgsIGVsZW1lbnRzOiBlbGVtZW50c307XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgSGVpZ2h0Vmlld3BvcnQgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGV4cGFuZDogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldFRvcDogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldEJvdHRvbTogQm9vbGVhbixcbiAgICAgICAgICAgIG1pbkhlaWdodDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZXhwYW5kOiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldFRvcDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXRCb3R0b206IGZhbHNlLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2JveFNpemluZycsICdib3JkZXItYm94Jyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgdmlld3BvcnQgPSBoZWlnaHQod2luZG93KTtcbiAgICAgICAgICAgICAgICB2YXIgbWluSGVpZ2h0LCBvZmZzZXRUb3AgPSAwO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7aGVpZ2h0OiAnJywgbWluSGVpZ2h0OiAnJ30pO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkaWZmID0gdmlld3BvcnQgLSBvZmZzZXRIZWlnaHQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZiA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodCA9IG9mZnNldEhlaWdodCh0aGlzLiRlbCkgKyBkaWZmO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodG9wIDwgdmlld3BvcnQgLyAyICYmIHRoaXMub2Zmc2V0VG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gdG9wO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2Zmc2V0Qm90dG9tID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBvZmZzZXRIZWlnaHQodGhpcy4kZWwubmV4dEVsZW1lbnRTaWJsaW5nKTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTnVtZXJpYyh0aGlzLm9mZnNldEJvdHRvbSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9ICh2aWV3cG9ydCAvIDEwMCkgKiB0aGlzLm9mZnNldEJvdHRvbTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub2Zmc2V0Qm90dG9tICYmIGVuZHNXaXRoKHRoaXMub2Zmc2V0Qm90dG9tLCAncHgnKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gdG9GbG9hdCh0aGlzLm9mZnNldEJvdHRvbSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh0aGlzLm9mZnNldEJvdHRvbSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IG9mZnNldEhlaWdodChxdWVyeSh0aGlzLm9mZnNldEJvdHRvbSwgdGhpcy4kZWwpKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gb24gbW9iaWxlIGRldmljZXMgKGlPUyBhbmQgQW5kcm9pZCkgd2luZG93LmlubmVySGVpZ2h0ICE9PSAxMDB2aFxuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgPSBvZmZzZXRUb3AgPyAoXCJjYWxjKDEwMHZoIC0gXCIgKyBvZmZzZXRUb3AgKyBcInB4KVwiKSA6ICcxMDB2aCc7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1pbkhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7aGVpZ2h0OiAnJywgbWluSGVpZ2h0OiBtaW5IZWlnaHR9KTtcblxuICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IHRoaXMuJGVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW5IZWlnaHQgJiYgdGhpcy5taW5IZWlnaHQgPiBlbEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdtaW5IZWlnaHQnLCB0aGlzLm1pbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSUUgMTEgZml4IChtaW4taGVpZ2h0IG9uIGEgZmxleCBjb250YWluZXIgd29uJ3QgYXBwbHkgdG8gaXRzIGZsZXggaXRlbXMpXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdwb3J0IC0gb2Zmc2V0VG9wID49IGVsSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2hlaWdodCcsIG1pbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBvZmZzZXRIZWlnaHQoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsICYmIGVsLm9mZnNldEhlaWdodCB8fCAwO1xuICAgIH1cblxuICAgIHZhciBzdmdzID0ge307XG5cbiAgICB2YXIgU1ZHID0ge1xuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBpZDogU3RyaW5nLFxuICAgICAgICAgICAgaWNvbjogU3RyaW5nLFxuICAgICAgICAgICAgc3JjOiBTdHJpbmcsXG4gICAgICAgICAgICBzdHlsZTogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogTnVtYmVyLFxuICAgICAgICAgICAgcmF0aW86IE51bWJlcixcbiAgICAgICAgICAgICdjbGFzcyc6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHJhdGlvOiAxLFxuICAgICAgICAgICAgaWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXhjbHVkZTogWydyYXRpbycsICdzcmMnLCAnaWNvbiddLFxuICAgICAgICAgICAgJ2NsYXNzJzogJydcbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgYXNzaWduJCQxO1xuXG5cbiAgICAgICAgICAgIHRoaXMuY2xhc3MgKz0gJyB1ay1zdmcnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaWNvbiAmJiBpbmNsdWRlcyh0aGlzLnNyYywgJyMnKSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHBhcnRzID0gdGhpcy5zcmMuc3BsaXQoJyMnKTtcblxuICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIChhc3NpZ24kJDEgPSBwYXJ0cywgdGhpcy5zcmMgPSBhc3NpZ24kJDFbMF0sIHRoaXMuaWNvbiA9IGFzc2lnbiQkMVsxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN2ZyA9IHRoaXMuZ2V0U3ZnKCkudGhlbihmdW5jdGlvbiAoc3ZnKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWw7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcoc3ZnKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuaWNvbiAmJiBpbmNsdWRlcyhzdmcsICc8c3ltYm9sJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2ZyA9IHBhcnNlU3ltYm9scyhzdmcsIHRoaXMkMS5pY29uKSB8fCBzdmc7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlbCA9ICQoc3ZnLnN1YnN0cihzdmcuaW5kZXhPZignPHN2ZycpKSk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbCA9IHN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlamVjdCgnU1ZHIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZGltZW5zaW9ucyA9IGF0dHIoZWwsICd2aWV3Qm94Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGltZW5zaW9ucykge1xuICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zID0gZGltZW5zaW9ucy5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEud2lkdGggPSB0aGlzJDEuJHByb3BzLndpZHRoIHx8IGRpbWVuc2lvbnNbMl07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5oZWlnaHQgPSB0aGlzJDEuJHByb3BzLmhlaWdodCB8fCBkaW1lbnNpb25zWzNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMkMS53aWR0aCAqPSB0aGlzJDEucmF0aW87XG4gICAgICAgICAgICAgICAgdGhpcyQxLmhlaWdodCAqPSB0aGlzJDEucmF0aW87XG5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHRoaXMkMS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxW3Byb3BdICYmICFpbmNsdWRlcyh0aGlzJDEuZXhjbHVkZSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIoZWwsIHByb3AsIHRoaXMkMVtwcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMkMS5pZCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnaWQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcyQxLndpZHRoICYmICF0aGlzJDEuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWwsICdoZWlnaHQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmhlaWdodCAmJiAhdGhpcyQxLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWwsICd3aWR0aCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByb290ID0gdGhpcyQxLiRlbDtcbiAgICAgICAgICAgICAgICBpZiAoaXNWb2lkRWxlbWVudChyb290KSB8fCByb290LnRhZ05hbWUgPT09ICdDQU5WQVMnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYXR0cihyb290LCB7aGlkZGVuOiB0cnVlLCBpZDogbnVsbH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gcm9vdC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIGVsLmlzRXF1YWxOb2RlKG5leHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlcihyb290LCBlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByb290Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0ICYmIGVsLmlzRXF1YWxOb2RlKGxhc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbCA9IGxhc3Q7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocm9vdCwgZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzJDEuc3ZnRWwgPSBlbDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBlbDtcblxuICAgICAgICAgICAgfSwgbm9vcCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgaWYgKGlzVm9pZEVsZW1lbnQodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwge2hpZGRlbjogbnVsbCwgaWQ6IHRoaXMuaWQgfHwgbnVsbH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5zdmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN2Zy50aGVuKGZ1bmN0aW9uIChzdmcpIHsgcmV0dXJuICghdGhpcyQxLl9jb25uZWN0ZWQgfHwgc3ZnICE9PSB0aGlzJDEuc3ZnRWwpICYmIHJlbW92ZShzdmcpOyB9LCBub29wKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdmcgPSB0aGlzLnN2Z0VsID0gbnVsbDtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgZ2V0U3ZnOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNyYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdmdzW3RoaXMuc3JjXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Znc1t0aGlzLnNyY107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3Znc1t0aGlzLnNyY10gPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aCh0aGlzJDEuc3JjLCAnZGF0YTonKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkZWNvZGVVUklDb21wb25lbnQodGhpcyQxLnNyYy5zcGxpdCgnLCcpWzFdKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXgodGhpcyQxLnNyYykudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeGhyKSB7IHJldHVybiByZXNvbHZlKHhoci5yZXNwb25zZSk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVqZWN0KCdTVkcgbm90IGZvdW5kLicpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Z3NbdGhpcy5zcmNdO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBzeW1ib2xSZSA9IC88c3ltYm9sKC4qP2lkPShbJ1wiXSkoLio/KVxcMlteXSo/PFxcLylzeW1ib2w+L2c7XG4gICAgdmFyIHN5bWJvbHMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlU3ltYm9scyhzdmcsIGljb24pIHtcblxuICAgICAgICBpZiAoIXN5bWJvbHNbc3ZnXSkge1xuXG4gICAgICAgICAgICBzeW1ib2xzW3N2Z10gPSB7fTtcblxuICAgICAgICAgICAgdmFyIG1hdGNoO1xuICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9IHN5bWJvbFJlLmV4ZWMoc3ZnKSkpIHtcbiAgICAgICAgICAgICAgICBzeW1ib2xzW3N2Z11bbWF0Y2hbM11dID0gXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCJcIiArIChtYXRjaFsxXSkgKyBcInN2Zz5cIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3ltYm9sUmUubGFzdEluZGV4ID0gMDtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN5bWJvbHNbc3ZnXVtpY29uXTtcbiAgICB9XG5cbiAgICB2YXIgY2xvc2VJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCIxNFxcXCIgaGVpZ2h0PVxcXCIxNFxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjEzXFxcIiB5Mj1cXFwiMTNcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiB4MT1cXFwiMTNcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMVxcXCIgeTI9XFxcIjEzXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgY2xvc2VMYXJnZSA9IFwiPHN2ZyB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMjBcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS40XFxcIiB4MT1cXFwiMVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxOVxcXCIgeTI9XFxcIjE5XFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgeDE9XFxcIjE5XFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIxOVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG1hcmtlciA9IFwiPHN2ZyB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMjBcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB4PVxcXCI5XFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCIxMVxcXCIvPjxyZWN0IHg9XFxcIjRcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCIxMVxcXCIgaGVpZ2h0PVxcXCIxXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgbmF2YmFyVG9nZ2xlSWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMjBcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjxyZWN0IHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyXFxcIi8+PHJlY3QgeT1cXFwiMTVcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgb3ZlcmxheUljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjQwXFxcIiBoZWlnaHQ9XFxcIjQwXFxcIiB2aWV3Qm94PVxcXCIwIDAgNDAgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiMTlcXFwiIHk9XFxcIjBcXFwiIHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjQwXFxcIi8+PHJlY3QgeD1cXFwiMFxcXCIgeT1cXFwiMTlcXFwiIHdpZHRoPVxcXCI0MFxcXCIgaGVpZ2h0PVxcXCIxXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgcGFnaW5hdGlvbk5leHQgPSBcIjxzdmcgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHZpZXdCb3g9XFxcIjAgMCA3IDEyXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjEgMSA2IDYgMSAxMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHBhZ2luYXRpb25QcmV2aW91cyA9IFwiPHN2ZyB3aWR0aD1cXFwiN1xcXCIgaGVpZ2h0PVxcXCIxMlxcXCIgdmlld0JveD1cXFwiMCAwIDcgMTJcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjJcXFwiIHBvaW50cz1cXFwiNiAxIDEgNiA2IDExXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2VhcmNoSWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMjBcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIGN4PVxcXCI5XFxcIiBjeT1cXFwiOVxcXCIgcj1cXFwiN1xcXCIvPjxwYXRoIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIGQ9XFxcIk0xNCwxNCBMMTgsMTggTDE0LDE0IFpcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzZWFyY2hMYXJnZSA9IFwiPHN2ZyB3aWR0aD1cXFwiNDBcXFwiIGhlaWdodD1cXFwiNDBcXFwiIHZpZXdCb3g9XFxcIjAgMCA0MCA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjhcXFwiIGN4PVxcXCIxNy41XFxcIiBjeT1cXFwiMTcuNVxcXCIgcj1cXFwiMTYuNVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjhcXFwiIHgxPVxcXCIzOFxcXCIgeTE9XFxcIjM5XFxcIiB4Mj1cXFwiMjlcXFwiIHkyPVxcXCIzMFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNlYXJjaE5hdmJhciA9IFwiPHN2ZyB3aWR0aD1cXFwiMjRcXFwiIGhlaWdodD1cXFwiMjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIGN4PVxcXCIxMC41XFxcIiBjeT1cXFwiMTAuNVxcXCIgcj1cXFwiOS41XFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgeDE9XFxcIjIzXFxcIiB5MT1cXFwiMjNcXFwiIHgyPVxcXCIxN1xcXCIgeTI9XFxcIjE3XFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZOZXh0ID0gXCI8c3ZnIHdpZHRoPVxcXCIxNHB4XFxcIiBoZWlnaHQ9XFxcIjI0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAyNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgcG9pbnRzPVxcXCIxLjIyNSwyMyAxMi43NzUsMTIgMS4yMjUsMSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdk5leHRMYXJnZSA9IFwiPHN2ZyB3aWR0aD1cXFwiMjVweFxcXCIgaGVpZ2h0PVxcXCI0MHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjUgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyXFxcIiBwb2ludHM9XFxcIjQuMDAyLDM4LjU0NyAyMi41MjcsMjAuMDI0IDQsMS41IFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2UHJldmlvdXMgPSBcIjxzdmcgd2lkdGg9XFxcIjE0cHhcXFwiIGhlaWdodD1cXFwiMjRweFxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDI0XFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS40XFxcIiBwb2ludHM9XFxcIjEyLjc3NSwxIDEuMjI1LDEyIDEyLjc3NSwyMyBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdlByZXZpb3VzTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjI1cHhcXFwiIGhlaWdodD1cXFwiNDBweFxcXCIgdmlld0JveD1cXFwiMCAwIDI1IDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgcG9pbnRzPVxcXCIyMC41MjcsMS41IDIsMjAuMDI0IDIwLjUyNSwzOC41NDcgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc3Bpbm5lciA9IFwiPHN2ZyB3aWR0aD1cXFwiMzBcXFwiIGhlaWdodD1cXFwiMzBcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMCAzMFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgY3g9XFxcIjE1XFxcIiBjeT1cXFwiMTVcXFwiIHI9XFxcIjE0XFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgdG90b3AgPSBcIjxzdmcgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjEwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTggMTBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjJcXFwiIHBvaW50cz1cXFwiMSA5IDkgMSAxNyA5IFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHBhcnNlZCA9IHt9O1xuICAgIHZhciBpY29ucyA9IHtcbiAgICAgICAgc3Bpbm5lcjogc3Bpbm5lcixcbiAgICAgICAgdG90b3A6IHRvdG9wLFxuICAgICAgICBtYXJrZXI6IG1hcmtlcixcbiAgICAgICAgJ2Nsb3NlLWljb24nOiBjbG9zZUljb24sXG4gICAgICAgICdjbG9zZS1sYXJnZSc6IGNsb3NlTGFyZ2UsXG4gICAgICAgICduYXZiYXItdG9nZ2xlLWljb24nOiBuYXZiYXJUb2dnbGVJY29uLFxuICAgICAgICAnb3ZlcmxheS1pY29uJzogb3ZlcmxheUljb24sXG4gICAgICAgICdwYWdpbmF0aW9uLW5leHQnOiBwYWdpbmF0aW9uTmV4dCxcbiAgICAgICAgJ3BhZ2luYXRpb24tcHJldmlvdXMnOiBwYWdpbmF0aW9uUHJldmlvdXMsXG4gICAgICAgICdzZWFyY2gtaWNvbic6IHNlYXJjaEljb24sXG4gICAgICAgICdzZWFyY2gtbGFyZ2UnOiBzZWFyY2hMYXJnZSxcbiAgICAgICAgJ3NlYXJjaC1uYXZiYXInOiBzZWFyY2hOYXZiYXIsXG4gICAgICAgICdzbGlkZW5hdi1uZXh0Jzogc2xpZGVuYXZOZXh0LFxuICAgICAgICAnc2xpZGVuYXYtbmV4dC1sYXJnZSc6IHNsaWRlbmF2TmV4dExhcmdlLFxuICAgICAgICAnc2xpZGVuYXYtcHJldmlvdXMnOiBzbGlkZW5hdlByZXZpb3VzLFxuICAgICAgICAnc2xpZGVuYXYtcHJldmlvdXMtbGFyZ2UnOiBzbGlkZW5hdlByZXZpb3VzTGFyZ2VcbiAgICB9O1xuXG4gICAgdmFyIEljb24gPSB7XG5cbiAgICAgICAgaW5zdGFsbDogaW5zdGFsbCxcblxuICAgICAgICBhdHRyczogWydpY29uJywgJ3JhdGlvJ10sXG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFNWR10sXG5cbiAgICAgICAgYXJnczogJ2ljb24nLFxuXG4gICAgICAgIHByb3BzOiBbJ2ljb24nXSxcblxuICAgICAgICBkYXRhOiB7ZXhjbHVkZTogWydpZCcsICdzdHlsZScsICdjbGFzcycsICdzcmMnLCAnaWNvbicsICdyYXRpbyddfSxcblxuICAgICAgICBpc0ljb246IHRydWUsXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstaWNvbicpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgZ2V0U3ZnOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpY29uID0gZ2V0SWNvbihhcHBseVJ0bCh0aGlzLmljb24pKTtcblxuICAgICAgICAgICAgICAgIGlmICghaWNvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlamVjdCgnSWNvbiBub3QgZm91bmQuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKGljb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgSWNvbkNvbXBvbmVudCA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uLFxuXG4gICAgICAgIGRhdGE6IGZ1bmN0aW9uICh2bSkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGljb246IGh5cGhlbmF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zLm5hbWUpXG4gICAgICAgIH0pOyB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNsaWRlbmF2ID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstc2xpZGVuYXYnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpY29uOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBpY29uID0gcmVmLmljb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoJGVsLCAndWstc2xpZGVuYXYtbGFyZ2UnKVxuICAgICAgICAgICAgICAgICAgICA/IChpY29uICsgXCItbGFyZ2VcIilcbiAgICAgICAgICAgICAgICAgICAgOiBpY29uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2VhcmNoID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IHJlZi5pY29uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKCRlbCwgJ3VrLXNlYXJjaC1pY29uJykgJiYgcGFyZW50cygkZWwsICcudWstc2VhcmNoLWxhcmdlJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gJ3NlYXJjaC1sYXJnZSdcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJlbnRzKCRlbCwgJy51ay1zZWFyY2gtbmF2YmFyJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzZWFyY2gtbmF2YmFyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBpY29uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgQ2xvc2UgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpY29uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiY2xvc2UtXCIgKyAoaGFzQ2xhc3ModGhpcy4kZWwsICd1ay1jbG9zZS1sYXJnZScpID8gJ2xhcmdlJyA6ICdpY29uJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU3Bpbm5lciA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgdGhpcy5zdmcudGhlbihmdW5jdGlvbiAoc3ZnKSB7IHJldHVybiB0aGlzJDEucmF0aW8gIT09IDEgJiYgY3NzKCQoJ2NpcmNsZScsIHN2ZyksICdzdHJva2VXaWR0aCcsIDEgLyB0aGlzJDEucmF0aW8pOyB9LCBub29wKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGluc3RhbGwoVUlraXQpIHtcbiAgICAgICAgVUlraXQuaWNvbi5hZGQgPSBmdW5jdGlvbiAobmFtZSwgc3ZnKSB7XG4gICAgICAgICAgICB2YXIgb2JqO1xuXG5cbiAgICAgICAgICAgIHZhciBhZGRlZCA9IGlzU3RyaW5nKG5hbWUpID8gKCggb2JqID0ge30sIG9ialtuYW1lXSA9IHN2Zywgb2JqICkpIDogbmFtZTtcbiAgICAgICAgICAgIGVhY2goYWRkZWQsIGZ1bmN0aW9uIChzdmcsIG5hbWUpIHtcbiAgICAgICAgICAgICAgICBpY29uc1tuYW1lXSA9IHN2ZztcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkW25hbWVdO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChVSWtpdC5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBhcHBseShkb2N1bWVudC5ib2R5LCBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVhY2goVUlraXQuZ2V0Q29tcG9uZW50cyhlbCksIGZ1bmN0aW9uIChjbXApIHsgcmV0dXJuIGNtcC4kb3B0aW9ucy5pc0ljb24gJiYgY21wLmljb24gaW4gYWRkZWQgJiYgY21wLiRyZXNldCgpOyB9XG4gICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEljb24oaWNvbikge1xuXG4gICAgICAgIGlmICghaWNvbnNbaWNvbl0pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJzZWRbaWNvbl0pIHtcbiAgICAgICAgICAgIHBhcnNlZFtpY29uXSA9ICQoaWNvbnNbaWNvbl0udHJpbSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJzZWRbaWNvbl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHlSdGwoaWNvbikge1xuICAgICAgICByZXR1cm4gaXNSdGwgPyBzd2FwKHN3YXAoaWNvbiwgJ2xlZnQnLCAncmlnaHQnKSwgJ3ByZXZpb3VzJywgJ25leHQnKSA6IGljb247XG4gICAgfVxuXG4gICAgdmFyIEltZyA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGF0YVNyYzogU3RyaW5nLFxuICAgICAgICAgICAgZGF0YVNyY3NldDogQm9vbGVhbixcbiAgICAgICAgICAgIGRhdGFTaXplczogQm9vbGVhbixcbiAgICAgICAgICAgIHNpemVzOiBTdHJpbmcsXG4gICAgICAgICAgICB3aWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXIsXG4gICAgICAgICAgICBkYXRhV2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGRhdGFIZWlnaHQ6IE51bWJlcixcbiAgICAgICAgICAgIG9mZnNldFRvcDogU3RyaW5nLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogU3RyaW5nLFxuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkYXRhU3JjOiAnJyxcbiAgICAgICAgICAgIGRhdGFTcmNzZXQ6IGZhbHNlLFxuICAgICAgICAgICAgZGF0YVNpemVzOiBmYWxzZSxcbiAgICAgICAgICAgIHNpemVzOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiBmYWxzZSxcbiAgICAgICAgICAgIGhlaWdodDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXRUb3A6ICc1MHZoJyxcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IDAsXG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY2FjaGVLZXk6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhU3JjID0gcmVmLmRhdGFTcmM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLiRuYW1lKSArIFwiLlwiICsgZGF0YVNyYyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3aWR0aDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhV2lkdGggPSByZWYuZGF0YVdpZHRoO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpZHRoJCQxIHx8IGRhdGFXaWR0aDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhlaWdodDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGFIZWlnaHQgPSByZWYuZGF0YUhlaWdodDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBoZWlnaHQkJDEgfHwgZGF0YUhlaWdodDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNpemVzOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2l6ZXMgPSByZWYuc2l6ZXM7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGFTaXplcyA9IHJlZi5kYXRhU2l6ZXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZXMgfHwgZGF0YVNpemVzO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNJbWc6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0ltZygkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy4kZWxdLmNvbmNhdChxdWVyeUFsbCh0YXJnZXQsIHRoaXMuJGVsKSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBvZmZzZXRUb3A6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBvZmZzZXRUb3AgPSByZWYub2Zmc2V0VG9wO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvUHgob2Zmc2V0VG9wLCAnaGVpZ2h0Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0TGVmdCA9IHJlZi5vZmZzZXRMZWZ0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvUHgob2Zmc2V0TGVmdCwgJ3dpZHRoJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBpZiAoc3RvcmFnZVt0aGlzLmNhY2hlS2V5XSkge1xuICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMuJGVsLCBzdG9yYWdlW3RoaXMuY2FjaGVLZXldIHx8IHRoaXMuZGF0YVNyYywgdGhpcy5kYXRhU3Jjc2V0LCB0aGlzLnNpemVzKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ltZyAmJiB0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgc2V0U3JjQXR0cnModGhpcy4kZWwsIGdldFBsYWNlaG9sZGVySW1hZ2UodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIHRoaXMuc2l6ZXMpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWxheSA9IHJlZi5kZWxheTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gcmVmLmltYWdlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlIHx8ICF0aGlzLnRhcmdldC5zb21lKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gaXNJblZpZXcoZWwsIHRoaXMkMS5vZmZzZXRUb3AsIHRoaXMkMS5vZmZzZXRMZWZ0LCB0cnVlKTsgfSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW1nICYmIGltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UudGhlbihmdW5jdGlvbiAoaW1nKSB7IHJldHVybiBpbWcgJiYgc2V0U3JjQXR0cnModGhpcyQxLiRlbCwgY3VycmVudFNyYyhpbWcpKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogZ2V0SW1hZ2UodGhpcy5kYXRhU3JjLCB0aGlzLmRhdGFTcmNzZXQsIHRoaXMuc2l6ZXMpLnRoZW4oZnVuY3Rpb24gKGltZykge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3JjQXR0cnModGhpcyQxLiRlbCwgY3VycmVudFNyYyhpbWcpLCBpbWcuc3Jjc2V0LCBpbWcuc2l6ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VbdGhpcyQxLmNhY2hlS2V5XSA9IGN1cnJlbnRTcmMoaW1nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW1nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBub29wKVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZSBwbGFjZWhvbGRlciBpbWFnZXMgdGltZSB0byBhcHBseSB0aGVpciBkaW1lbnNpb25zXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSQkMS5kZWxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDEuZGVsYXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gc2V0U3JjQXR0cnMoZWwsIHNyYywgc3Jjc2V0LCBzaXplcykge1xuXG4gICAgICAgIGlmIChpc0ltZyhlbCkpIHtcbiAgICAgICAgICAgIHNyYyAmJiAoZWwuc3JjID0gc3JjKTtcbiAgICAgICAgICAgIHNyY3NldCAmJiAoZWwuc3Jjc2V0ID0gc3Jjc2V0KTtcbiAgICAgICAgICAgIHNpemVzICYmIChlbC5zaXplcyA9IHNpemVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNyYyAmJiBjc3MoZWwsICdiYWNrZ3JvdW5kSW1hZ2UnLCAoXCJ1cmwoXCIgKyBzcmMgKyBcIilcIikpO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB2YXIgdXJsQ2FjaGUgPSB7fTtcbiAgICB2YXIgc2l6ZXNSZSA9IC9cXHMqKC4qPylcXHMqKFxcdyt8Y2FsY1xcKC4qP1xcKSlcXHMqKD86LHwkKS9nO1xuICAgIGZ1bmN0aW9uIGdldFBsYWNlaG9sZGVySW1hZ2Uod2lkdGgkJDEsIGhlaWdodCQkMSwgc2l6ZXMsIGNvbG9yKSB7XG4gICAgICAgIHZhciBhc3NpZ24kJDE7XG5cbiAgICAgICAgaWYgKCBjb2xvciA9PT0gdm9pZCAwICkgY29sb3IgPSAndHJhbnNwYXJlbnQnO1xuXG4gICAgICAgIGlmIChzaXplcykge1xuICAgICAgICAgICAgdmFyIG1hdGNoZXMkJDE7XG5cbiAgICAgICAgICAgIHdoaWxlICgobWF0Y2hlcyQkMSA9IHNpemVzUmUuZXhlYyhzaXplcykpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzJCQxWzFdIHx8IHdpbmRvdy5tYXRjaE1lZGlhKG1hdGNoZXMkJDFbMV0pLm1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyQkMSA9IGV2YWx1YXRlU2l6ZShtYXRjaGVzJCQxWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzaXplc1JlLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgICAgICgoYXNzaWduJCQxID0gRGltZW5zaW9ucy5yYXRpbyh7d2lkdGg6IHdpZHRoJCQxLCBoZWlnaHQ6IGhlaWdodCQkMX0sICd3aWR0aCcsIHRvUHgobWF0Y2hlcyQkMSB8fCAnMTAwdncnKSksIHdpZHRoJCQxID0gYXNzaWduJCQxLndpZHRoLCBoZWlnaHQkJDEgPSBhc3NpZ24kJDEuaGVpZ2h0KSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXkgPSB3aWR0aCQkMSArIFwiLlwiICsgaGVpZ2h0JCQxICsgXCIuXCIgKyBjb2xvcjtcbiAgICAgICAgaWYgKHVybENhY2hlW2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiB1cmxDYWNoZVtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNhbnZhcyA9IGZyYWdtZW50KCc8Y2FudmFzPicpO1xuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aCQkMTtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodCQkMTtcblxuICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yO1xuICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHdpZHRoJCQxLCBoZWlnaHQkJDEpO1xuXG4gICAgICAgIHJldHVybiB1cmxDYWNoZVtrZXldID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAgfVxuXG4gICAgdmFyIHNpemVSZSA9IC9cXGQrKD86XFx3K3wlKS9nO1xuICAgIHZhciBhZGRpdGlvblJlID0gL1srLV0/KFxcZCspL2c7XG4gICAgZnVuY3Rpb24gZXZhbHVhdGVTaXplKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGgoc2l6ZSwgJ2NhbGMnKVxuICAgICAgICAgICAgPyBzaXplXG4gICAgICAgICAgICAgICAgLnN1YnN0cmluZyg1LCBzaXplLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2Uoc2l6ZVJlLCBmdW5jdGlvbiAoc2l6ZSkgeyByZXR1cm4gdG9QeChzaXplKTsgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvIC9nLCAnJylcbiAgICAgICAgICAgICAgICAubWF0Y2goYWRkaXRpb25SZSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICsgK2I7IH0sIDApXG4gICAgICAgICAgICA6IHNpemU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9QeCh2YWx1ZSwgcHJvcGVydHksIGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCBwcm9wZXJ0eSA9PT0gdm9pZCAwICkgcHJvcGVydHkgPSAnd2lkdGgnO1xuICAgICAgICBpZiAoIGVsZW1lbnQgPT09IHZvaWQgMCApIGVsZW1lbnQgPSB3aW5kb3c7XG5cbiAgICAgICAgcmV0dXJuIGlzTnVtZXJpYyh2YWx1ZSlcbiAgICAgICAgICAgID8gK3ZhbHVlXG4gICAgICAgICAgICA6IGVuZHNXaXRoKHZhbHVlLCAndncnKVxuICAgICAgICAgICAgICAgID8gcGVyY2VudChlbGVtZW50LCAnd2lkdGgnLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICA6IGVuZHNXaXRoKHZhbHVlLCAndmgnKVxuICAgICAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZWxlbWVudCwgJ2hlaWdodCcsIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6IGVuZHNXaXRoKHZhbHVlLCAnJScpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0b0Zsb2F0KHZhbHVlKTtcbiAgICB9XG5cbiAgICB2YXIgZGltZW5zaW9ucyA9IHtoZWlnaHQ6IGhlaWdodCwgd2lkdGg6IHdpZHRofTtcbiAgICBmdW5jdGlvbiBwZXJjZW50KGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uc1twcm9wZXJ0eV0oZWxlbWVudCkgKiB0b0Zsb2F0KHZhbHVlKSAvIDEwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0ltZyhlbCkge1xuICAgICAgICByZXR1cm4gZWwudGFnTmFtZSA9PT0gJ0lNRyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudFNyYyhlbCkge1xuICAgICAgICByZXR1cm4gZWwuY3VycmVudFNyYyB8fCBlbC5zcmM7XG4gICAgfVxuXG4gICAgdmFyIGtleSA9ICdfX3Rlc3RfXyc7XG4gICAgdmFyIHN0b3JhZ2U7XG5cbiAgICAvLyB3b3JrYXJvdW5kIGZvciBTYWZhcmkncyBwcml2YXRlIGJyb3dzaW5nIG1vZGUgYW5kIGFjY2Vzc2luZyBzZXNzaW9uU3RvcmFnZSBpbiBCbGlua1xuICAgIHRyeSB7XG4gICAgICAgIHN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgfHwge307XG4gICAgICAgIHN0b3JhZ2Vba2V5XSA9IDE7XG4gICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzdG9yYWdlID0ge307XG4gICAgfVxuXG4gICAgdmFyIExlYWRlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGZpbGw6IFN0cmluZyxcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZmlsbDogJycsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2UsXG4gICAgICAgICAgICBjbHNXcmFwcGVyOiAndWstbGVhZGVyLWZpbGwnLFxuICAgICAgICAgICAgY2xzSGlkZTogJ3VrLWxlYWRlci1oaWRlJyxcbiAgICAgICAgICAgIGF0dHJGaWxsOiAnZGF0YS1maWxsJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGZpbGw6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmaWxsID0gcmVmLmZpbGw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsbCB8fCBnZXRDc3NWYXIoJ2xlYWRlci1maWxsJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGFzc2lnbiQkMTtcblxuICAgICAgICAgICAgKGFzc2lnbiQkMSA9IHdyYXBJbm5lcih0aGlzLiRlbCwgKFwiPHNwYW4gY2xhc3M9XFxcIlwiICsgKHRoaXMuY2xzV3JhcHBlcikgKyBcIlxcXCI+XCIpKSwgdGhpcy53cmFwcGVyID0gYXNzaWduJCQxWzBdKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdW53cmFwKHRoaXMud3JhcHBlci5jaGlsZE5vZGVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjaGFuZ2VkID0gcmVmLmNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gd2lkdGgkJDE7XG5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGgkJDEgPSBNYXRoLmZsb29yKHRoaXMuJGVsLm9mZnNldFdpZHRoIC8gMik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCQkMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQgfHwgcHJldiAhPT0gd2lkdGgkJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlOiB0aGlzLm1lZGlhICYmICF3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy53cmFwcGVyLCB0aGlzLmNsc0hpZGUsIGRhdGEkJDEuaGlkZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEkJDEuY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5jaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHRoaXMud3JhcHBlciwgdGhpcy5hdHRyRmlsbCwgbmV3IEFycmF5KGRhdGEkJDEud2lkdGgpLmpvaW4odGhpcy5maWxsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgQ29udGFpbmVyID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb250YWluZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSByZWYuY29udGFpbmVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lciA9PT0gdHJ1ZSAmJiB0aGlzLiRjb250YWluZXIgfHwgY29udGFpbmVyICYmICQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIGFjdGl2ZSQxO1xuXG4gICAgdmFyIE1vZGFsID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBDb250YWluZXIsIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHNlbFBhbmVsOiBTdHJpbmcsXG4gICAgICAgICAgICBzZWxDbG9zZTogU3RyaW5nLFxuICAgICAgICAgICAgZXNjQ2xvc2U6IEJvb2xlYW4sXG4gICAgICAgICAgICBiZ0Nsb3NlOiBCb29sZWFuLFxuICAgICAgICAgICAgc3RhY2s6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgICAgIGVzY0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgYmdDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIG92ZXJsYXk6IHRydWUsXG4gICAgICAgICAgICBzdGFjazogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwYW5lbDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsUGFuZWwgPSByZWYuc2VsUGFuZWw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxQYW5lbCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25FbGVtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTXMoY3NzKHRoaXMudHJhbnNpdGlvbkVsZW1lbnQsICd0cmFuc2l0aW9uRHVyYXRpb24nKSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBiZ0Nsb3NlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYmdDbG9zZSA9IHJlZi5iZ0Nsb3NlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJnQ2xvc2UgJiYgdGhpcy5wYW5lbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxDbG9zZTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gYWN0aXZlJDEgJiYgYWN0aXZlJDEgIT09IHRoaXMgJiYgYWN0aXZlJDE7XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuaGlkZSgpLnRoZW4odGhpcy5zaG93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJFdmVudHMoKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMSA9IGFjdGl2ZSQxICYmIGFjdGl2ZSQxICE9PSB0aGlzICYmIGFjdGl2ZSQxIHx8IHRoaXMucHJldjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc1BhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGJhcldpZHRoID0gd2lkdGgod2luZG93KSAtIHdpZHRoKGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dZJywgdGhpcy5zY3JvbGxiYXJXaWR0aCAmJiB0aGlzLm92ZXJsYXkgPyAnc2Nyb2xsJyA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSByZWYucHJldjtcblxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocHJldikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldi5jbHNQYWdlID09PSB0aGlzJDEuY2xzUGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IHByZXYucHJldjtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc1BhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5wcmV2ICYmIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dZJywgJycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVG9nZ2xlZCgpID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuJGVsLnBhcmVudE5vZGUgIT09IHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZCh0aGlzLmNvbnRhaW5lciwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWxsQ29ubmVjdGVkKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVG9nZ2xlZCgpXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy50b2dnbGVOb3codGhpcy4kZWwsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICA6IFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRBY3RpdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmUkMTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90b2dnbGVJbW1lZGlhdGU6IGZ1bmN0aW9uKGVsLCBzaG93KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5fdG9nZ2xlKGVsLCBzaG93KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS50cmFuc2l0aW9uRHVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMkMS50cmFuc2l0aW9uRWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnLCByZXNvbHZlLCBmYWxzZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0ID09PSB0aGlzJDEudHJhbnNpdGlvbkVsZW1lbnQ7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIGV2ZW50cztcblxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRXZlbnRzKCkge1xuXG4gICAgICAgIGlmIChldmVudHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50cyA9IFtcbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSByZWYuZGVmYXVsdFByZXZlbnRlZDtcblxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmUkMSAmJiBhY3RpdmUkMS5iZ0Nsb3NlICYmICFkZWZhdWx0UHJldmVudGVkICYmICghYWN0aXZlJDEub3ZlcmxheSB8fCB3aXRoaW4odGFyZ2V0LCBhY3RpdmUkMS4kZWwpKSAmJiAhd2l0aGluKHRhcmdldCwgYWN0aXZlJDEucGFuZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcgJiYgYWN0aXZlJDEgJiYgYWN0aXZlJDEuZXNjQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXJlZ2lzdGVyRXZlbnRzKCkge1xuICAgICAgICBldmVudHMgJiYgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKHVuYmluZCkgeyByZXR1cm4gdW5iaW5kKCk7IH0pO1xuICAgICAgICBldmVudHMgPSBudWxsO1xuICAgIH1cblxuICAgIHZhciBNb2RhbCQxID0ge1xuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwkMSxcblxuICAgICAgICBtaXhpbnM6IFtNb2RhbF0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzUGFnZTogJ3VrLW1vZGFsLXBhZ2UnLFxuICAgICAgICAgICAgc2VsUGFuZWw6ICcudWstbW9kYWwtZGlhbG9nJyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLW1vZGFsLWNsb3NlLCAudWstbW9kYWwtY2xvc2UtZGVmYXVsdCwgLnVrLW1vZGFsLWNsb3NlLW91dHNpZGUsIC51ay1tb2RhbC1jbG9zZS1mdWxsJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyh0aGlzLnBhbmVsLCAndWstbWFyZ2luLWF1dG8tdmVydGljYWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1mbGV4Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwpOyAvLyBmb3JjZSByZWZsb3dcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsICd1ay1mbGV4Jyk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGluc3RhbGwkMSAoVUlraXQpIHtcblxuICAgICAgICBVSWtpdC5tb2RhbC5kaWFsb2cgPSBmdW5jdGlvbiAoY29udGVudCwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICB2YXIgZGlhbG9nID0gVUlraXQubW9kYWwoKFwiIDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsXFxcIj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZGlhbG9nXFxcIj5cIiArIGNvbnRlbnQgKyBcIjwvZGl2PiA8L2Rpdj4gXCIpLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgZGlhbG9nLnNob3coKTtcblxuICAgICAgICAgICAgb24oZGlhbG9nLiRlbCwgJ2hpZGRlbicsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IHJlZi5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBkaWFsb2cuJGRlc3Ryb3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkaWFsb2c7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubW9kYWwuYWxlcnQgPSBmdW5jdGlvbiAobWVzc2FnZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IGZhbHNlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gb24oVUlraXQubW9kYWwuZGlhbG9nKChcIiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1ib2R5XFxcIj5cIiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArIFwiPC9kaXY+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWZvb3RlciB1ay10ZXh0LXJpZ2h0XFxcIj4gPGJ1dHRvbiBjbGFzcz1cXFwidWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLW1vZGFsLWNsb3NlXFxcIiBhdXRvZm9jdXM+XCIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgXCI8L2J1dHRvbj4gPC9kaXY+IFwiKSwgb3B0aW9ucykuJGVsLCAnaGlkZScsIHJlc29sdmUpOyB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmNvbmZpcm0gPSBmdW5jdGlvbiAobWVzc2FnZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IHRydWUsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgIHZhciBjb25maXJtID0gVUlraXQubW9kYWwuZGlhbG9nKChcIiA8Zm9ybT4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+XCIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyBcIjwvZGl2PiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1tb2RhbC1jbG9zZVxcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIj5cIiArIChvcHRpb25zLmxhYmVscy5jYW5jZWwpICsgXCI8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz1cXFwidWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5XFxcIiBhdXRvZm9jdXM+XCIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgXCI8L2J1dHRvbj4gPC9kaXY+IDwvZm9ybT4gXCIpLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgb24oY29uZmlybS4kZWwsICdzdWJtaXQnLCAnZm9ybScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm0uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uKGNvbmZpcm0uJGVsLCAnaGlkZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubW9kYWwucHJvbXB0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHZhbHVlLCBvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBhc3NpZ24oe2JnQ2xvc2U6IGZhbHNlLCBlc2NDbG9zZTogdHJ1ZSwgbGFiZWxzOiBVSWtpdC5tb2RhbC5sYWJlbHN9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgICAgIHZhciBwcm9tcHQgPSBVSWtpdC5tb2RhbC5kaWFsb2coKFwiIDxmb3JtIGNsYXNzPVxcXCJ1ay1mb3JtLXN0YWNrZWRcXFwiPiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1ib2R5XFxcIj4gPGxhYmVsPlwiICsgKGlzU3RyaW5nKG1lc3NhZ2UpID8gbWVzc2FnZSA6IGh0bWwobWVzc2FnZSkpICsgXCI8L2xhYmVsPiA8aW5wdXQgY2xhc3M9XFxcInVrLWlucHV0XFxcIiBhdXRvZm9jdXM+IDwvZGl2PiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1tb2RhbC1jbG9zZVxcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIj5cIiArIChvcHRpb25zLmxhYmVscy5jYW5jZWwpICsgXCI8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz1cXFwidWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5XFxcIj5cIiArIChvcHRpb25zLmxhYmVscy5vaykgKyBcIjwvYnV0dG9uPiA8L2Rpdj4gPC9mb3JtPiBcIiksIG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9ICQoJ2lucHV0JywgcHJvbXB0LiRlbCk7XG5cbiAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlc29sdmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBvbihwcm9tcHQuJGVsLCAnc3VibWl0JywgJ2Zvcm0nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoaW5wdXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHByb21wdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb24ocHJvbXB0LiRlbCwgJ2hpZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubW9kYWwubGFiZWxzID0ge1xuICAgICAgICAgICAgb2s6ICdPaycsXG4gICAgICAgICAgICBjYW5jZWw6ICdDYW5jZWwnXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICB2YXIgTmF2ID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEFjY29yZGlvbixcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXRzOiAnPiAudWstcGFyZW50JyxcbiAgICAgICAgICAgIHRvZ2dsZTogJz4gYScsXG4gICAgICAgICAgICBjb250ZW50OiAnPiB1bCdcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBOYXZiYXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkcm9wZG93bjogU3RyaW5nLFxuICAgICAgICAgICAgbW9kZTogJ2xpc3QnLFxuICAgICAgICAgICAgYWxpZ246IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyLFxuICAgICAgICAgICAgYm91bmRhcnk6IEJvb2xlYW4sXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiBCb29sZWFuLFxuICAgICAgICAgICAgY2xzRHJvcDogU3RyaW5nLFxuICAgICAgICAgICAgZGVsYXlTaG93OiBOdW1iZXIsXG4gICAgICAgICAgICBkZWxheUhpZGU6IE51bWJlcixcbiAgICAgICAgICAgIGRyb3BiYXI6IEJvb2xlYW4sXG4gICAgICAgICAgICBkcm9wYmFyTW9kZTogU3RyaW5nLFxuICAgICAgICAgICAgZHJvcGJhckFuY2hvcjogQm9vbGVhbixcbiAgICAgICAgICAgIGR1cmF0aW9uOiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkcm9wZG93bjogJy51ay1uYXZiYXItbmF2ID4gbGknLFxuICAgICAgICAgICAgYWxpZ246ICFpc1J0bCA/ICdsZWZ0JyA6ICdyaWdodCcsXG4gICAgICAgICAgICBjbHNEcm9wOiAndWstbmF2YmFyLWRyb3Bkb3duJyxcbiAgICAgICAgICAgIG1vZGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG9mZnNldDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVsYXlTaG93OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWxheUhpZGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZsaXA6ICd4JyxcbiAgICAgICAgICAgIGJvdW5kYXJ5OiB0cnVlLFxuICAgICAgICAgICAgZHJvcGJhcjogZmFsc2UsXG4gICAgICAgICAgICBkcm9wYmFyTW9kZTogJ3NsaWRlJyxcbiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IGZhbHNlLFxuICAgICAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBib3VuZGFyeTogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgYm91bmRhcnkgPSByZWYuYm91bmRhcnk7XG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5QWxpZ24gPSByZWYuYm91bmRhcnlBbGlnbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoYm91bmRhcnkgPT09IHRydWUgfHwgYm91bmRhcnlBbGlnbikgPyAkZWwgOiBib3VuZGFyeTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyb3BiYXJBbmNob3IgPSByZWYuZHJvcGJhckFuY2hvcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeShkcm9wYmFyQW5jaG9yLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcG9zOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ24gPSByZWYuYWxpZ247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiYm90dG9tLVwiICsgYWxpZ24pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJvcGRvd25zOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBkcm9wZG93biA9IHJlZi5kcm9wZG93bjtcbiAgICAgICAgICAgICAgICB2YXIgY2xzRHJvcCA9IHJlZi5jbHNEcm9wO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKChkcm9wZG93biArIFwiIC5cIiArIGNsc0Ryb3ApLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgYmVmb3JlQ29ubmVjdDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRwcm9wcztcbiAgICAgICAgICAgIHZhciBkcm9wYmFyID0gcmVmLmRyb3BiYXI7XG5cbiAgICAgICAgICAgIHRoaXMuZHJvcGJhciA9IGRyb3BiYXIgJiYgKHF1ZXJ5KGRyb3BiYXIsIHRoaXMuJGVsKSB8fCAkKCcrIC51ay1uYXZiYXItZHJvcGJhcicsIHRoaXMuJGVsKSB8fCAkKCc8ZGl2PjwvZGl2PicpKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGJhcikge1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5kcm9wYmFyLCAndWstbmF2YmFyLWRyb3BiYXInKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyb3BiYXJNb2RlID09PSAnc2xpZGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJvcGJhciwgJ3VrLW5hdmJhci1kcm9wYmFyLXNsaWRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGJhciAmJiByZW1vdmUodGhpcy5kcm9wYmFyKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy4kY3JlYXRlKFxuICAgICAgICAgICAgICAgICdkcm9wJyxcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3ducy5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhdGhpcyQxLmdldERyb3Bkb3duKGVsKTsgfSksXG4gICAgICAgICAgICAgICAgYXNzaWduKHt9LCB0aGlzLiRwcm9wcywge2JvdW5kYXJ5OiB0aGlzLmJvdW5kYXJ5LCBwb3M6IHRoaXMucG9zLCBvZmZzZXQ6IHRoaXMuZHJvcGJhciB8fCB0aGlzLm9mZnNldH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VvdmVyJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd247XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IHJlZi5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlICYmIGFjdGl2ZS50b2dnbGUgJiYgIXdpdGhpbihhY3RpdmUudG9nZ2xlLiRlbCwgY3VycmVudCkgJiYgIWFjdGl2ZS50cmFja2VyLm1vdmVzVG8oYWN0aXZlLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdtb3VzZWxlYXZlJyxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgIW1hdGNoZXModGhpcy5kcm9wYmFyLCAnOmhvdmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcm9wYmFyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyKHRoaXMuZHJvcGJhckFuY2hvciB8fCB0aGlzLiRlbCwgdGhpcy5kcm9wYmFyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCBkcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IGRyb3AuJGVsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gZHJvcC5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbHNEcm9wICYmIGFkZENsYXNzKCRlbCwgKCh0aGlzLmNsc0Ryb3ApICsgXCItZHJvcGJhclwiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpciA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKCRlbC5vZmZzZXRIZWlnaHQgKyB0b0Zsb2F0KGNzcygkZWwsICdtYXJnaW5Ub3AnKSkgKyB0b0Zsb2F0KGNzcygkZWwsICdtYXJnaW5Cb3R0b20nKSksICRlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWhpZGUnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSByZWYuJGVsO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXModGhpcy5kcm9wYmFyLCAnOmhvdmVyJykgJiYgYWN0aXZlICYmIGFjdGl2ZS4kZWwgPT09ICRlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlIHx8IGFjdGl2ZSAmJiBhY3RpdmUuJGVsID09PSAkZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBnZXRBY3RpdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLmRyb3Bkb3ducy5tYXAodGhpcy5nZXREcm9wZG93bikuZmlsdGVyKGZ1bmN0aW9uIChkcm9wKSB7IHJldHVybiBkcm9wLmlzQWN0aXZlKCk7IH0pO1xuICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSAmJiBpbmNsdWRlcyhhY3RpdmUubW9kZSwgJ2hvdmVyJykgJiYgd2l0aGluKGFjdGl2ZS50b2dnbGUuJGVsLCB0aGlzLiRlbCkgJiYgYWN0aXZlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvblRvOiBmdW5jdGlvbihuZXdIZWlnaHQsIGVsKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgZHJvcGJhciA9IHJlZi5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIHZhciBvbGRIZWlnaHQgPSBpc1Zpc2libGUoZHJvcGJhcikgPyBoZWlnaHQoZHJvcGJhcikgOiAwO1xuXG4gICAgICAgICAgICAgICAgZWwgPSBvbGRIZWlnaHQgPCBuZXdIZWlnaHQgJiYgZWw7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWwsICdjbGlwJywgKFwicmVjdCgwLFwiICsgKGVsLm9mZnNldFdpZHRoKSArIFwicHgsXCIgKyBvbGRIZWlnaHQgKyBcInB4LDApXCIpKTtcblxuICAgICAgICAgICAgICAgIGhlaWdodChkcm9wYmFyLCBvbGRIZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoW2VsLCBkcm9wYmFyXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChkcm9wYmFyLCB7aGVpZ2h0OiBuZXdIZWlnaHR9LCB0aGlzLmR1cmF0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChlbCwge2NsaXA6IChcInJlY3QoMCxcIiArIChlbC5vZmZzZXRXaWR0aCkgKyBcInB4LFwiICsgbmV3SGVpZ2h0ICsgXCJweCwwKVwiKX0sIHRoaXMuZHVyYXRpb24pXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNzcyhlbCwge2NsaXA6ICcnfSk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RHJvcGRvd246IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGdldENvbXBvbmVudChlbCwgJ2Ryb3AnKSB8fCB0aGlzLiRnZXRDb21wb25lbnQoZWwsICdkcm9wZG93bicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgc2Nyb2xsO1xuXG4gICAgdmFyIE9mZmNhbnZhcyA9IHtcblxuICAgICAgICBtaXhpbnM6IFtNb2RhbF0sXG5cbiAgICAgICAgYXJnczogJ21vZGUnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb250ZW50OiBTdHJpbmcsXG4gICAgICAgICAgICBtb2RlOiBTdHJpbmcsXG4gICAgICAgICAgICBmbGlwOiBCb29sZWFuLFxuICAgICAgICAgICAgb3ZlcmxheTogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcudWstb2ZmY2FudmFzLWNvbnRlbnQnLFxuICAgICAgICAgICAgbW9kZTogJ3NsaWRlJyxcbiAgICAgICAgICAgIGZsaXA6IGZhbHNlLFxuICAgICAgICAgICAgb3ZlcmxheTogZmFsc2UsXG4gICAgICAgICAgICBjbHNQYWdlOiAndWstb2ZmY2FudmFzLXBhZ2UnLFxuICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstb2ZmY2FudmFzLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBzZWxQYW5lbDogJy51ay1vZmZjYW52YXMtYmFyJyxcbiAgICAgICAgICAgIGNsc0ZsaXA6ICd1ay1vZmZjYW52YXMtZmxpcCcsXG4gICAgICAgICAgICBjbHNDb250ZW50OiAndWstb2ZmY2FudmFzLWNvbnRlbnQnLFxuICAgICAgICAgICAgY2xzQ29udGVudEFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1jb250ZW50LWFuaW1hdGlvbicsXG4gICAgICAgICAgICBjbHNTaWRlYmFyQW5pbWF0aW9uOiAndWstb2ZmY2FudmFzLWJhci1hbmltYXRpb24nLFxuICAgICAgICAgICAgY2xzTW9kZTogJ3VrLW9mZmNhbnZhcycsXG4gICAgICAgICAgICBjbHNPdmVybGF5OiAndWstb2ZmY2FudmFzLW92ZXJsYXknLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstb2ZmY2FudmFzLWNsb3NlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVmLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjb250ZW50KSB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzRmxpcDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZsaXAgPSByZWYuZmxpcDtcbiAgICAgICAgICAgICAgICB2YXIgY2xzRmxpcCA9IHJlZi5jbHNGbGlwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZsaXAgPyBjbHNGbGlwIDogJyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNPdmVybGF5OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3ZlcmxheSA9IHJlZi5vdmVybGF5O1xuICAgICAgICAgICAgICAgIHZhciBjbHNPdmVybGF5ID0gcmVmLmNsc092ZXJsYXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3ZlcmxheSA/IGNsc092ZXJsYXkgOiAnJztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc01vZGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGNsc01vZGUgPSByZWYuY2xzTW9kZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoY2xzTW9kZSArIFwiLVwiICsgbW9kZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNTaWRlYmFyQW5pbWF0aW9uOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuICAgICAgICAgICAgICAgIHZhciBjbHNTaWRlYmFyQW5pbWF0aW9uID0gcmVmLmNsc1NpZGViYXJBbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZSA9PT0gJ25vbmUnIHx8IG1vZGUgPT09ICdyZXZlYWwnID8gJycgOiBjbHNTaWRlYmFyQW5pbWF0aW9uO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzQ29udGVudEFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzQ29udGVudEFuaW1hdGlvbiA9IHJlZi5jbHNDb250ZW50QW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgIT09ICdwdXNoJyAmJiBtb2RlICE9PSAncmV2ZWFsJyA/ICcnIDogY2xzQ29udGVudEFuaW1hdGlvbjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25FbGVtZW50OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgPT09ICdyZXZlYWwnID8gdGhpcy5wYW5lbC5wYXJlbnROb2RlIDogdGhpcy5wYW5lbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRBY3RpdmUoKSA9PT0gdGhpcykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXkgfHwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCh0aGlzLmNvbnRlbnQsIHdpZHRoKHdpbmRvdykgLSB0aGlzLnNjcm9sbGJhcldpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmNvbnRlbnQsIGhlaWdodCh3aW5kb3cpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9wID0gc2Nyb2xsLnk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdhW2hyZWZePVwiI1wiXSc7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IHJlZi5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Lmhhc2ggJiYgJChjdXJyZW50Lmhhc2gsIHRoaXMuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNjcm9sbCcsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCBzY3JvbGwsIHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsICYmIHRhcmdldCAmJiB0aGlzLmlzVG9nZ2xlZCgpICYmICQodGFyZ2V0LCB0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuJGVsLCAnaGlkZGVuJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gc2Nyb2xsLnNjcm9sbFRvKHRhcmdldCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHNjcm9sbCB8fCB7eDogd2luZG93LnBhZ2VYT2Zmc2V0LCB5OiB3aW5kb3cucGFnZVlPZmZzZXR9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdyZXZlYWwnICYmICFoYXNDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc01vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cmFwQWxsKHRoaXMucGFuZWwsICc8ZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5wYW5lbC5wYXJlbnROb2RlLCB0aGlzLmNsc01vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsICghdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uIHx8IHRoaXMuZmxpcCkgJiYgdGhpcy5zY3JvbGxiYXJXaWR0aCAmJiB0aGlzLm92ZXJsYXkgPyAnc2Nyb2xsJyA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5jbHNDb250YWluZXIsIHRoaXMuY2xzRmxpcCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KGRvY3VtZW50LmJvZHkpOyAvLyBmb3JjZSByZWZsb3dcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5jb250ZW50LCB0aGlzLmNsc0NvbnRlbnRBbmltYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sIHRoaXMubW9kZSAhPT0gJ3JldmVhbCcgPyB0aGlzLmNsc01vZGUgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLiRlbCk7IC8vIGZvcmNlIHJlZmxvd1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5jb250ZW50LCB0aGlzLmNsc0NvbnRlbnRBbmltYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnbm9uZScgfHwgYWN0aXZlICYmIGFjdGl2ZSAhPT0gdGhpcyAmJiBhY3RpdmUgIT09IHRoaXMucHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLnBhbmVsLCAndHJhbnNpdGlvbmVuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdyZXZlYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bndyYXAodGhpcy5wYW5lbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0ge3g6IHdpbmRvdy5wYWdlWE9mZnNldCwgeTogd2luZG93LnBhZ2VZT2Zmc2V0fTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmLnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHt4OiB4LCB5OiB5fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMucGFuZWwsIHRoaXMuY2xzU2lkZWJhckFuaW1hdGlvbiwgdGhpcy5jbHNNb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuY2xzQ29udGFpbmVyLCB0aGlzLmNsc0ZsaXAsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gc2Nyb2xsLnk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsICcnKTtcblxuICAgICAgICAgICAgICAgICAgICB3aWR0aCh0aGlzLmNvbnRlbnQsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuY29udGVudCwgJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwoc2Nyb2xsLngsIHNjcm9sbC55KTtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzd2lwZUxlZnQgc3dpcGVSaWdodCcsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgJiYgaXNUb3VjaChlKSAmJiAoZS50eXBlID09PSAnc3dpcGVMZWZ0JyAmJiAhdGhpcy5mbGlwIHx8IGUudHlwZSA9PT0gJ3N3aXBlUmlnaHQnICYmIHRoaXMuZmxpcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBPdmVyZmxvd0F1dG8gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIG1vZGFsOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCgkZWwsICcudWstbW9kYWwnKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBhbmVsOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCgkZWwsICcudWstbW9kYWwtZGlhbG9nJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JywgMTUwKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsIHx8ICF0aGlzLm1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IGNzcyh0aGlzLiRlbCwgJ21heEhlaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgY3NzKGNzcyh0aGlzLiRlbCwgJ21heEhlaWdodCcsIDE1MCksICdtYXhIZWlnaHQnLCBNYXRoLm1heCgxNTAsIDE1MCArIGhlaWdodCh0aGlzLm1vZGFsKSAtIHRoaXMucGFuZWwub2Zmc2V0SGVpZ2h0KSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgIT09IGNzcyh0aGlzLiRlbCwgJ21heEhlaWdodCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdyZXNpemUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgUmVzcG9uc2l2ZSA9IHtcblxuICAgICAgICBwcm9wczogWyd3aWR0aCcsICdoZWlnaHQnXSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1yZXNwb25zaXZlLXdpZHRoJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc1Zpc2libGUodGhpcy4kZWwpICYmIHRoaXMud2lkdGggJiYgdGhpcy5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgPyB7d2lkdGg6IHdpZHRoKHRoaXMuJGVsLnBhcmVudE5vZGUpLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRpbSkge1xuICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLiRlbCwgRGltZW5zaW9ucy5jb250YWluKHtoZWlnaHQ6IHRoaXMuaGVpZ2h0LCB3aWR0aDogdGhpcy53aWR0aH0sIGRpbSkuaGVpZ2h0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTY3JvbGwgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxuICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzY3JvbGxUbzogZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgZWwgPSBlbCAmJiAkKGVsKSB8fCBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgICAgICAgICAgdmFyIGRvY0hlaWdodCA9IGhlaWdodChkb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgdmFyIHdpbkhlaWdodCA9IGhlaWdodCh3aW5kb3cpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IG9mZnNldChlbCkudG9wIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCArIHdpbkhlaWdodCA+IGRvY0hlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBkb2NIZWlnaHQgLSB3aW5IZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0cmlnZ2VyKHRoaXMuJGVsLCAnYmVmb3Jlc2Nyb2xsJywgW3RoaXMsIGVsXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0WSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFkgPSBzdGFydFkgKyAodGFyZ2V0IC0gc3RhcnRZKSAqIGVhc2UoY2xhbXAoKERhdGUubm93KCkgLSBzdGFydCkgLyB0aGlzJDEuZHVyYXRpb24pKTtcblxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHdpbmRvdy5wYWdlWE9mZnNldCwgY3VycmVudFkpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNjcm9sbCBtb3JlIGlmIHdlIGhhdmUgbm90IHJlYWNoZWQgb3VyIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50WSAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMkMS4kZWwsICdzY3JvbGxlZCcsIFt0aGlzJDEsIGVsXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzdGVwKCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG8oZXNjYXBlKHRoaXMuJGVsLmhhc2gpLnN1YnN0cigxKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhc2Uoaykge1xuICAgICAgICByZXR1cm4gMC41ICogKDEgLSBNYXRoLmNvcyhNYXRoLlBJICogaykpO1xuICAgIH1cblxuICAgIHZhciBTY3JvbGxzcHkgPSB7XG5cbiAgICAgICAgYXJnczogJ2NscycsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsczogJ2xpc3QnLFxuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICBoaWRkZW46IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRUb3A6IE51bWJlcixcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IE51bWJlcixcbiAgICAgICAgICAgIHJlcGVhdDogQm9vbGVhbixcbiAgICAgICAgICAgIGRlbGF5OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgY2xzOiBbXSxcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2UsXG4gICAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IDAsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiAwLFxuICAgICAgICAgICAgcmVwZWF0OiBmYWxzZSxcbiAgICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgICAgaW5WaWV3Q2xhc3M6ICd1ay1zY3JvbGxzcHktaW52aWV3J1xuICAgICAgICB9KTsgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBlbGVtZW50czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgPyAkJCh0YXJnZXQsICRlbCkgOiBbJGVsXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGZpbHRlcih0aGlzLmVsZW1lbnRzLCAoXCI6bm90KC5cIiArICh0aGlzLmluVmlld0NsYXNzKSArIFwiKVwiKSksICd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihlbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVscy5kZWxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxEYXRhID0gZWxzW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVsRGF0YSB8fCBlbERhdGEuZWwgIT09IGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNscyA9IGRhdGEoZWwsICd1ay1zY3JvbGxzcHktY2xhc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEgPSB7ZWw6IGVsLCB0b2dnbGVzOiBjbHMgJiYgY2xzLnNwbGl0KCcsJykgfHwgdGhpcyQxLmNsc307XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS5zaG93ID0gaXNJblZpZXcoZWwsIHRoaXMkMS5vZmZzZXRUb3AsIHRoaXMkMS5vZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc1tpXSA9IGVsRGF0YTtcblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGVscykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIC8vIExldCBjaGlsZCBjb21wb25lbnRzIGJlIGFwcGxpZWQgYXQgbGVhc3Qgb25jZSBmaXJzdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVscy5kZWxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVscy5kZWxheSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSB0aGlzLmVsZW1lbnRzLmxlbmd0aCA9PT0gMSA/IDEgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsRGF0YSA9IGVsc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbHMgPSBlbERhdGEudG9nZ2xlc1tpXSB8fCBlbERhdGEudG9nZ2xlc1swXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsRGF0YS5zaG93ICYmICFlbERhdGEuaW52aWV3ICYmICFlbERhdGEudGltZXIpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaG93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWwsICd2aXNpYmlsaXR5JywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbCwgdGhpcyQxLmluVmlld0NsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIGNscyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgJ2ludmlldycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEuaW52aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsRGF0YS50aW1lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5kZWxheSAmJiBpbmRleCQkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEudGltZXIgPSBzZXRUaW1lb3V0KHNob3csIHRoaXMkMS5kZWxheSAqIGluZGV4JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgkJDErKztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZWxEYXRhLnNob3cgJiYgZWxEYXRhLmludmlldyAmJiB0aGlzJDEucmVwZWF0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxEYXRhLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChlbERhdGEudGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZWxEYXRhLnRpbWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbCwgJ3Zpc2liaWxpdHknLCB0aGlzJDEuaGlkZGVuID8gJ2hpZGRlbicgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWwsIHRoaXMkMS5pblZpZXdDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIGNscyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCAnb3V0dmlldycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUoZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLmludmlldyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgU2Nyb2xsc3B5TmF2ID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6IFN0cmluZyxcbiAgICAgICAgICAgIGNsb3Nlc3Q6IFN0cmluZyxcbiAgICAgICAgICAgIHNjcm9sbDogQm9vbGVhbixcbiAgICAgICAgICAgIG92ZXJmbG93OiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xvc2VzdDogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGw6IGZhbHNlLFxuICAgICAgICAgICAgb3ZlcmZsb3c6IHRydWUsXG4gICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBsaW5rczogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKCdhW2hyZWZePVwiI1wiXScsICRlbCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuaGFzaDsgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbGVtZW50czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2VzdCA/IGNsb3Nlc3QodGhpcy5saW5rcywgdGhpcy5jbG9zZXN0KSA6IHRoaXMubGlua3M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0YXJnZXRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGhpcy5saW5rcy5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5oYXNoOyB9KS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGNyZWF0ZSgnc2Nyb2xsJywgdGhpcy5saW5rcywge29mZnNldDogdGhpcy5vZmZzZXQgfHwgMH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IHdpbmRvdy5wYWdlWU9mZnNldCArIHRoaXMub2Zmc2V0ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heCA9IGhlaWdodChkb2N1bWVudCkgLSBoZWlnaHQod2luZG93KSArIHRoaXMub2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuYWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRzLmV2ZXJ5KGZ1bmN0aW9uIChlbCwgaSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3QgPSBpICsgMSA9PT0gdGhpcyQxLnRhcmdldHMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMkMS5vdmVyZmxvdyAmJiAoaSA9PT0gMCAmJiB0b3AgPiBzY3JvbGwgfHwgbGFzdCAmJiB0b3AgKyBlbC5vZmZzZXRUb3AgPCBzY3JvbGwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3QgJiYgb2Zmc2V0KHRoaXMkMS50YXJnZXRzW2kgKyAxXSkudG9wIDw9IHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsID49IG1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSB0aGlzJDEudGFyZ2V0cy5sZW5ndGggLSAxOyBqID4gaTsgai0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luVmlldyh0aGlzJDEudGFyZ2V0c1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsID0gdGhpcyQxLnRhcmdldHNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoZGF0YSQkMS5hY3RpdmUgPSAkKGZpbHRlcih0aGlzJDEubGlua3MsIChcIltocmVmPVxcXCIjXCIgKyAoZWwuaWQpICsgXCJcXFwiXVwiKSkpKTtcblxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSByZWYuYWN0aXZlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuYmx1cigpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50cywgdGhpcy5jbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhY3RpdmUnLCBbYWN0aXZlLCBhZGRDbGFzcyh0aGlzLmNsb3Nlc3QgPyBjbG9zZXN0KGFjdGl2ZSwgdGhpcy5jbG9zZXN0KSA6IGFjdGl2ZSwgdGhpcy5jbHMpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgU3RpY2t5ID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdG9wOiBudWxsLFxuICAgICAgICAgICAgYm90dG9tOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXIsXG4gICAgICAgICAgICBhbmltYXRpb246IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0FjdGl2ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzSW5hY3RpdmU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0ZpeGVkOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNCZWxvdzogU3RyaW5nLFxuICAgICAgICAgICAgc2VsVGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBzaG93T25VcDogQm9vbGVhbixcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnLFxuICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBib3R0b206IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiAnJyxcbiAgICAgICAgICAgIGNsc0FjdGl2ZTogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNJbmFjdGl2ZTogJycsXG4gICAgICAgICAgICBjbHNGaXhlZDogJ3VrLXN0aWNreS1maXhlZCcsXG4gICAgICAgICAgICBjbHNCZWxvdzogJ3VrLXN0aWNreS1iZWxvdycsXG4gICAgICAgICAgICBzZWxUYXJnZXQ6ICcnLFxuICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dPblVwOiBmYWxzZSxcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZSxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBzZWxUYXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFRhcmdldCA9IHJlZi5zZWxUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsVGFyZ2V0ICYmICQoc2VsVGFyZ2V0LCAkZWwpIHx8ICRlbDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGhFbGVtZW50ID0gcmVmLndpZHRoRWxlbWVudDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeSh3aWR0aEVsZW1lbnQsICRlbCkgfHwgdGhpcy5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAkKCcrIC51ay1zdGlja3ktcGxhY2Vob2xkZXInLCB0aGlzLiRlbCkgfHwgJCgnPGRpdiBjbGFzcz1cInVrLXN0aWNreS1wbGFjZWhvbGRlclwiPjwvZGl2PicpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNJbmFjdGl2ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlbW92ZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy53aWR0aEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2FjdGl2ZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNJbmFjdGl2ZSwgdGhpcy5jbHNBY3RpdmUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpbmFjdGl2ZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2xvYWQgaGFzaGNoYW5nZSBwb3BzdGF0ZScsXG5cbiAgICAgICAgICAgICAgICBlbDogd2luZG93LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodGhpcy50YXJnZXRPZmZzZXQgIT09IGZhbHNlICYmIGxvY2F0aW9uLmhhc2ggJiYgd2luZG93LnBhZ2VZT2Zmc2V0ID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAkKGxvY2F0aW9uLmhhc2gpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ucmVhZChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsVG9wID0gb2Zmc2V0KHRoaXMkMS4kZWwpLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSB0aGlzJDEuJGVsLm9mZnNldEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuaXNBY3RpdmUgJiYgZWxUb3AgKyBlbEhlaWdodCA+PSB0b3AgJiYgZWxUb3AgPD0gdG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIHRvcCAtIGVsSGVpZ2h0IC0gKGlzTnVtZXJpYyh0aGlzJDEudGFyZ2V0T2Zmc2V0KSA/IHRoaXMkMS50YXJnZXRPZmZzZXQgOiAwKSAtIHRoaXMkMS5vZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gcmVmLiRlbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHBsYWNlaG9sZGVyLCBhc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgICAgICB7aGVpZ2h0OiBjc3ModGhpcy4kZWwsICdwb3NpdGlvbicpICE9PSAnYWJzb2x1dGUnID8gb2Zmc2V0SGVpZ2h0IDogJyd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCBbJ21hcmdpblRvcCcsICdtYXJnaW5Cb3R0b20nLCAnbWFyZ2luTGVmdCcsICdtYXJnaW5SaWdodCddKVxuICAgICAgICAgICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihwbGFjZWhvbGRlciwgZG9jdW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0aGlzLiRlbCwgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cihwbGFjZWhvbGRlciwgJ2hpZGRlbicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9wT2Zmc2V0ID0gb2Zmc2V0KHRoaXMuaXNBY3RpdmUgPyBwbGFjZWhvbGRlciA6IHRoaXMuJGVsKS50b3A7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tT2Zmc2V0ID0gdGhpcy50b3BPZmZzZXQgKyBvZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGJvdHRvbSA9IHBhcnNlUHJvcCgnYm90dG9tJywgdGhpcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3AgPSBNYXRoLm1heCh0b0Zsb2F0KHBhcnNlUHJvcCgndG9wJywgdGhpcykpLCB0aGlzLnRvcE9mZnNldCkgLSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b20gPSBib3R0b20gJiYgYm90dG9tIC0gb2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluYWN0aXZlID0gdGhpcy5tZWRpYSAmJiAhd2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihfLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbFkgPSByZWYuc2Nyb2xsWTsgaWYgKCBzY3JvbGxZID09PSB2b2lkIDAgKSBzY3JvbGxZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IChpc1Zpc2libGUodGhpcy53aWR0aEVsZW1lbnQpID8gdGhpcy53aWR0aEVsZW1lbnQgOiB0aGlzLiRlbCkub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbDogdGhpcy5zY3JvbGwgPSBzY3JvbGxZLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogaXNWaXNpYmxlKHRoaXMuJGVsKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZpc2libGUgPSByZWYudmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IHJlZi5zY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIGlmICggcmVmJDEgPT09IHZvaWQgMCApIHJlZiQxID0ge307XG4gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSByZWYkMS5kaXI7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsIDwgMCB8fCAhdmlzaWJsZSB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMuc2hvd09uVXAgJiYgIWRpcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5hY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHNjcm9sbCA8IHRoaXMudG9wXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLnNob3dPblVwICYmIChzY3JvbGwgPD0gdGhpcy50b3AgfHwgZGlyID09PSAnZG93bicgfHwgZGlyID09PSAndXAnICYmICF0aGlzLmlzQWN0aXZlICYmIHNjcm9sbCA8PSB0aGlzLmJvdHRvbU9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb24gJiYgc2Nyb2xsID4gdGhpcy50b3BPZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24ub3V0KHRoaXMuJGVsLCB0aGlzLmFuaW1hdGlvbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuaGlkZSgpOyB9LCBub29wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQWN0aXZlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFuaW1hdGlvbikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmluKHRoaXMuJGVsLCB0aGlzLmFuaW1hdGlvbikuY2F0Y2gobm9vcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJywgJ3Njcm9sbCddXG5cbiAgICAgICAgICAgIH0gXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMucGxhY2Vob2xkZXIsICdoaWRkZW4nLCBudWxsKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUgfHwgaGFzQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaW5hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNGaXhlZCwgdGhpcy5jbHNCZWxvdyk7XG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7cG9zaXRpb246ICcnLCB0b3A6ICcnLCB3aWR0aDogJyd9KTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMucGxhY2Vob2xkZXIsICdoaWRkZW4nLCAnJyk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy50b3AgIT09IDAgfHwgdGhpcy5zY3JvbGwgPiB0aGlzLnRvcDtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gTWF0aC5tYXgoMCwgdGhpcy5vZmZzZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYm90dG9tICYmIHRoaXMuc2Nyb2xsID4gdGhpcy5ib3R0b20gLSB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICB0b3AgPSB0aGlzLmJvdHRvbSAtIHRoaXMuc2Nyb2xsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAodG9wICsgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGhcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNBY3RpdmUpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdpbmFjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzQmVsb3csIHRoaXMuc2Nyb2xsID4gdGhpcy5ib3R0b21PZmZzZXQpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0ZpeGVkKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZVByb3AocHJvcCwgcmVmKSB7XG4gICAgICAgIHZhciAkcHJvcHMgPSByZWYuJHByb3BzO1xuICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDtcbiAgICAgICAgdmFyIHByb3BPZmZzZXQgPSByZWZbKHByb3AgKyBcIk9mZnNldFwiKV07XG5cblxuICAgICAgICB2YXIgdmFsdWUgPSAkcHJvcHNbcHJvcF07XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTnVtZXJpYyh2YWx1ZSkpIHtcblxuICAgICAgICAgICAgcmV0dXJuIHByb3BPZmZzZXQgKyB0b0Zsb2F0KHZhbHVlKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS5tYXRjaCgvXi0/XFxkK3ZoJC8pKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQod2luZG93KSAqIHRvRmxvYXQodmFsdWUpIC8gMTAwO1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIHZhciBlbCA9IHZhbHVlID09PSB0cnVlID8gJGVsLnBhcmVudE5vZGUgOiBxdWVyeSh2YWx1ZSwgJGVsKTtcblxuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldChlbCkudG9wICsgZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgU3dpdGNoZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAnY29ubmVjdCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNvbm5lY3Q6IFN0cmluZyxcbiAgICAgICAgICAgIHRvZ2dsZTogU3RyaW5nLFxuICAgICAgICAgICAgYWN0aXZlOiBOdW1iZXIsXG4gICAgICAgICAgICBzd2lwaW5nOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29ubmVjdDogJ34udWstc3dpdGNoZXInLFxuICAgICAgICAgICAgdG9nZ2xlOiAnPiAqJyxcbiAgICAgICAgICAgIGFjdGl2ZTogMCxcbiAgICAgICAgICAgIHN3aXBpbmc6IHRydWUsXG4gICAgICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstc3dpdGNoZXInLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1zd2l0Y2hlci1pdGVtJyxcbiAgICAgICAgICAgIHF1ZXVlZDogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNvbm5lY3RzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjb25uZWN0ID0gcmVmLmNvbm5lY3Q7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlBbGwoY29ubmVjdCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRvZ2dsZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodG9nZ2xlLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRoaXMudG9nZ2xlKSArIFwiOm5vdCgudWstZGlzYWJsZWQpXCIpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGUuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHM7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcIltcIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXSxbZGF0YS1cIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhkYXRhKGUuY3VycmVudCwgdGhpcy5hdHRySXRlbSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc3dpcGVSaWdodCBzd2lwZUxlZnQnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3dpcGluZztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0cztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGUudHlwZSA9PT0gJ3N3aXBlTGVmdCcgPyAnbmV4dCcgOiAncHJldmlvdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RzLmZvckVhY2goZnVuY3Rpb24gKGxpc3QpIHsgcmV0dXJuIHRoaXMkMS51cGRhdGVBcmlhKGxpc3QuY2hpbGRyZW4pOyB9KTtcbiAgICAgICAgICAgIHRoaXMuc2hvdyhmaWx0ZXIodGhpcy50b2dnbGVzLCAoXCIuXCIgKyAodGhpcy5jbHMpKSlbMF0gfHwgdGhpcy50b2dnbGVzW3RoaXMuYWN0aXZlXSB8fCB0aGlzLnRvZ2dsZXNbMF0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnRvZ2dsZXM7XG4gICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IHJlZi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHByZXYgPSAhIXRoaXMuY29ubmVjdHMubGVuZ3RoICYmIGluZGV4KGZpbHRlcih0aGlzLmNvbm5lY3RzWzBdLmNoaWxkcmVuLCAoXCIuXCIgKyAodGhpcy5jbHMpKSlbMF0pO1xuICAgICAgICAgICAgICAgIHZhciBoYXNQcmV2ID0gcHJldiA+PSAwO1xuICAgICAgICAgICAgICAgIHZhciBkaXIgPSBpdGVtID09PSAncHJldmlvdXMnID8gLTEgOiAxO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSwgbmV4dCA9IGdldEluZGV4KGl0ZW0sIHRoaXMudG9nZ2xlcywgcHJldik7XG5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrLCBuZXh0ID0gKG5leHQgKyBkaXIgKyBsZW5ndGgpICUgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyh0aGlzJDEudG9nZ2xlc1tuZXh0XSwgJy51ay1kaXNhYmxlZCwgW2Rpc2FibGVkXScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUgPSB0aGlzJDEudG9nZ2xlc1tuZXh0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0b2dnbGUgfHwgcHJldiA+PSAwICYmIGhhc0NsYXNzKHRvZ2dsZSwgdGhpcy5jbHMpIHx8IHByZXYgPT09IG5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMudG9nZ2xlcywgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy50b2dnbGVzLCAnYXJpYS1leHBhbmRlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0b2dnbGUsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRvZ2dsZSwgJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdHMuZm9yRWFjaChmdW5jdGlvbiAobGlzdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1ByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVOb3cobGlzdC5jaGlsZHJlbltuZXh0XSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudChbbGlzdC5jaGlsZHJlbltwcmV2XSwgbGlzdC5jaGlsZHJlbltuZXh0XV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFRhYiA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgZXh0ZW5kczogU3dpdGNoZXIsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVkaWE6IDk2MCxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstdGFiLWl0ZW0nXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgdmFyIGNscyA9IGhhc0NsYXNzKHRoaXMuJGVsLCAndWstdGFiLWxlZnQnKVxuICAgICAgICAgICAgICAgID8gJ3VrLXRhYi1sZWZ0J1xuICAgICAgICAgICAgICAgIDogaGFzQ2xhc3ModGhpcy4kZWwsICd1ay10YWItcmlnaHQnKVxuICAgICAgICAgICAgICAgICAgICA/ICd1ay10YWItcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3RvZ2dsZScsIHRoaXMuJGVsLCB7Y2xzOiBjbHMsIG1vZGU6ICdtZWRpYScsIG1lZGlhOiB0aGlzLm1lZGlhfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgVG9nZ2xlID0ge1xuXG4gICAgICAgIG1peGluczogW1RvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGhyZWY6IFN0cmluZyxcbiAgICAgICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaHJlZjogZmFsc2UsXG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgbW9kZTogJ2NsaWNrJyxcbiAgICAgICAgICAgIHF1ZXVlZDogdHJ1ZSxcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHJlZiA9IHJlZi5ocmVmO1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gcXVlcnlBbGwodGFyZ2V0IHx8IGhyZWYsICRlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5sZW5ndGggJiYgdGFyZ2V0IHx8IFskZWxdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IChwb2ludGVyRW50ZXIgKyBcIiBcIiArIHBvaW50ZXJMZWF2ZSksXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVkZXModGhpcy5tb2RlLCAnaG92ZXInKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKChcInRvZ2dsZVwiICsgKGUudHlwZSA9PT0gcG9pbnRlckVudGVyID8gJ3Nob3cnIDogJ2hpZGUnKSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2NsaWNrJykgfHwgaGFzVG91Y2ggJiYgaW5jbHVkZXModGhpcy5tb2RlLCAnaG92ZXInKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSAmJiAhaW5jbHVkZXModGhpcy5tb2RlLCAnY2xpY2snKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyBiZXR0ZXIgaXNUb2dnbGVkIGhhbmRsaW5nXG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZj1cIiNcIl0sIGJ1dHRvbicpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAobGluayA9IGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWZdJykpICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFpc1Zpc2libGUodGhpcy50YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGluay5oYXNoICYmIG1hdGNoZXModGhpcy50YXJnZXQsIGxpbmsuaGFzaClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNlKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZXModGhpcy5tb2RlLCAnbWVkaWEnKSB8fCAhdGhpcy5tZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0aGlzLmlzVG9nZ2xlZCh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXMgPyAhdG9nZ2xlZCA6IHRvZ2dsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24odHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyKHRoaXMudGFyZ2V0LCB0eXBlIHx8ICd0b2dnbGUnLCBbdGhpc10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjb3JlIChVSWtpdCkge1xuXG4gICAgICAgIC8vIGNvcmUgY29tcG9uZW50c1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2FjY29yZGlvbicsIEFjY29yZGlvbik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnYWxlcnQnLCBBbGVydCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnY292ZXInLCBDb3Zlcik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZHJvcCcsIERyb3ApO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Ryb3Bkb3duJywgRHJvcGRvd24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Zvcm1DdXN0b20nLCBGb3JtQ3VzdG9tKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdnaWYnLCBHaWYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2dyaWQnLCBHcmlkKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdoZWlnaHRNYXRjaCcsIEhlaWdodE1hdGNoKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdoZWlnaHRWaWV3cG9ydCcsIEhlaWdodFZpZXdwb3J0KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdpY29uJywgSWNvbik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaW1nJywgSW1nKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdsZWFkZXInLCBMZWFkZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21hcmdpbicsIE1hcmdpbik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbW9kYWwnLCBNb2RhbCQxKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXYnLCBOYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ25hdmJhcicsIE5hdmJhcik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb2ZmY2FudmFzJywgT2ZmY2FudmFzKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdvdmVyZmxvd0F1dG8nLCBPdmVyZmxvd0F1dG8pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Jlc3BvbnNpdmUnLCBSZXNwb25zaXZlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGwnLCBTY3JvbGwpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbHNweScsIFNjcm9sbHNweSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsc3B5TmF2JywgU2Nyb2xsc3B5TmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzdGlja3knLCBTdGlja3kpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N2ZycsIFNWRyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3dpdGNoZXInLCBTd2l0Y2hlcik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndGFiJywgVGFiKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b2dnbGUnLCBUb2dnbGUpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3ZpZGVvJywgVmlkZW8pO1xuXG4gICAgICAgIC8vIEljb24gY29tcG9uZW50c1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Nsb3NlJywgQ2xvc2UpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21hcmtlcicsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ25hdmJhclRvZ2dsZUljb24nLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdvdmVybGF5SWNvbicsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3BhZ2luYXRpb25OZXh0JywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgncGFnaW5hdGlvblByZXZpb3VzJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2VhcmNoSWNvbicsIFNlYXJjaCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVuYXZOZXh0JywgU2xpZGVuYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2UHJldmlvdXMnLCBTbGlkZW5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3Bpbm5lcicsIFNwaW5uZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RvdG9wJywgSWNvbkNvbXBvbmVudCk7XG5cbiAgICAgICAgLy8gY29yZSBmdW5jdGlvbmFsaXR5XG4gICAgICAgIFVJa2l0LnVzZShDb3JlKTtcblxuICAgIH1cblxuICAgIFVJa2l0LnZlcnNpb24gPSAnMy4wLjAtcmMuNSc7XG5cbiAgICBjb3JlKFVJa2l0KTtcblxuICAgIHZhciBDb3VudGRvd24gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkYXRlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNXcmFwcGVyOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkYXRlOiAnJyxcbiAgICAgICAgICAgIGNsc1dyYXBwZXI6ICcudWstY291bnRkb3duLSV1bml0JSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBkYXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IHJlZi5kYXRlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIERhdGUucGFyc2UoZGF0ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkYXlzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdkYXlzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBob3VyczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnaG91cnMnKSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1pbnV0ZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ21pbnV0ZXMnKSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNlY29uZHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ3NlY29uZHMnKSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHVuaXRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2RheXMnLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ10uZmlsdGVyKGZ1bmN0aW9uICh1bml0KSB7IHJldHVybiB0aGlzJDFbdW5pdF07IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICAgICAgdGhpcy51bml0cy5mb3JFYWNoKGZ1bmN0aW9uICh1bml0KSB7IHJldHVybiBlbXB0eSh0aGlzJDFbdW5pdF0pOyB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgdGltZXNwYW4gPSBnZXRUaW1lU3Bhbih0aGlzLmRhdGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVzcGFuLnRvdGFsIDw9IDApIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3Bhbi5kYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLmhvdXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLm1pbnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gdGltZXNwYW4uc2Vjb25kc1xuICAgICAgICAgICAgICAgICAgICAgICAgPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkaWdpdHMgPSBTdHJpbmcoTWF0aC5mbG9vcih0aW1lc3Bhblt1bml0XSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IGRpZ2l0cy5sZW5ndGggPCAyID8gKFwiMFwiICsgZGlnaXRzKSA6IGRpZ2l0cztcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZWwgPSB0aGlzJDFbdW5pdF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC50ZXh0Q29udGVudCAhPT0gZGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMuc3BsaXQoJycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlnaXRzLmxlbmd0aCAhPT0gZWwuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbChlbCwgZGlnaXRzLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiAnPHNwYW4+PC9zcGFuPic7IH0pLmpvaW4oJycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGRpZ2l0LCBpKSB7IHJldHVybiBlbC5jaGlsZHJlbltpXS50ZXh0Q29udGVudCA9IGRpZ2l0OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGUgJiYgdGhpcy51bml0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLiRlbWl0KCk7IH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0VGltZVNwYW4oZGF0ZSkge1xuXG4gICAgICAgIHZhciB0b3RhbCA9IGRhdGUgLSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3RhbDogdG90YWwsXG4gICAgICAgICAgICBzZWNvbmRzOiB0b3RhbCAvIDEwMDAgJSA2MCxcbiAgICAgICAgICAgIG1pbnV0ZXM6IHRvdGFsIC8gMTAwMCAvIDYwICUgNjAsXG4gICAgICAgICAgICBob3VyczogdG90YWwgLyAxMDAwIC8gNjAgLyA2MCAlIDI0LFxuICAgICAgICAgICAgZGF5czogdG90YWwgLyAxMDAwIC8gNjAgLyA2MCAvIDI0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldENsYXNzID0gJ3VrLWFuaW1hdGlvbi10YXJnZXQnO1xuXG4gICAgdmFyIEFuaW1hdGUgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAxNTBcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgYW5pbWF0ZTogZnVuY3Rpb24oYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGFkZFN0eWxlKCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNGcm9tID0gY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZ2V0UHJvcHMoZWwsIHRydWUpOyB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBvbGRIZWlnaHQgPSBoZWlnaHQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHZhciBvbGRTY3JvbGxZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgYWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChUcmFuc2l0aW9uLmNhbmNlbCk7XG5cbiAgICAgICAgICAgICAgICByZXNldCh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbmV3SGVpZ2h0ID0gaGVpZ2h0KHRoaXMudGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uY29uY2F0KHRvTm9kZXModGhpcy50YXJnZXQuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICFpbmNsdWRlcyhjaGlsZHJlbiwgZWwpOyB9KSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNUbyA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGVsLnBhcmVudE5vZGUgJiYgaSBpbiBwcm9wc0Zyb21cbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHNGcm9tW2ldXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGlzVmlzaWJsZShlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtvcGFjaXR5OiAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogaXNWaXNpYmxlKGVsKSA/IDEgOiAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBwcm9wc0Zyb20gPSBwcm9wc1RvLm1hcChmdW5jdGlvbiAocHJvcHMsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZyb20gPSBjaGlsZHJlbltpXS5wYXJlbnROb2RlID09PSB0aGlzJDEudGFyZ2V0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXSB8fCBnZXRQcm9wcyhjaGlsZHJlbltpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZnJvbS5vcGFjaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKCdvcGFjaXR5JyBpbiBwcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3BhY2l0eSA9IGZyb20ub3BhY2l0eTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGFjaXR5ICUgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZnJvbS5vcGFjaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRhcmdldENsYXNzKTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gcHJvcHNGcm9tW2ldICYmIGNzcyhlbCwgcHJvcHNGcm9tW2ldKTsgfSk7XG4gICAgICAgICAgICAgICAgY3NzKHRoaXMudGFyZ2V0LCAnbWluSGVpZ2h0Jywgb2xkSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHdpbmRvdy5wYWdlWE9mZnNldCwgb2xkU2Nyb2xsWSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLmFsbChjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBwcm9wc0Zyb21baV0gJiYgcHJvcHNUb1tpXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBUcmFuc2l0aW9uLnN0YXJ0KGVsLCBwcm9wc1RvW2ldLCB0aGlzJDEuYW5pbWF0aW9uLCAnZWFzZScpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFByb21pc2UkMS5yZXNvbHZlKCk7IH1cbiAgICAgICAgICAgICAgICApLmNvbmNhdChUcmFuc2l0aW9uLnN0YXJ0KHRoaXMudGFyZ2V0LCB7bWluSGVpZ2h0OiBuZXdIZWlnaHR9LCB0aGlzLmFuaW1hdGlvbiwgJ2Vhc2UnKSkpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gY3NzKGVsLCB7ZGlzcGxheTogcHJvcHNUb1tpXS5vcGFjaXR5ID09PSAwID8gJ25vbmUnIDogJycsIHpJbmRleDogJyd9KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0KHRoaXMkMS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZSh0aGlzJDEudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9LCBub29wKTtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFByb3BzKGVsLCBvcGFjaXR5KSB7XG5cbiAgICAgICAgdmFyIHpJbmRleCA9IGNzcyhlbCwgJ3pJbmRleCcpO1xuXG4gICAgICAgIHJldHVybiBpc1Zpc2libGUoZWwpXG4gICAgICAgICAgICA/IGFzc2lnbih7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJycsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogb3BhY2l0eSA/IGNzcyhlbCwgJ29wYWNpdHknKSA6ICcwJyxcbiAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgekluZGV4OiB6SW5kZXggPT09ICdhdXRvJyA/IGluZGV4KGVsKSA6IHpJbmRleFxuICAgICAgICAgICAgfSwgZ2V0UG9zaXRpb25XaXRoTWFyZ2luKGVsKSlcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzZXQoZWwpIHtcbiAgICAgICAgY3NzKGVsLmNoaWxkcmVuLCB7XG4gICAgICAgICAgICBoZWlnaHQ6ICcnLFxuICAgICAgICAgICAgbGVmdDogJycsXG4gICAgICAgICAgICBvcGFjaXR5OiAnJyxcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICcnLFxuICAgICAgICAgICAgcG9zaXRpb246ICcnLFxuICAgICAgICAgICAgdG9wOiAnJyxcbiAgICAgICAgICAgIHdpZHRoOiAnJ1xuICAgICAgICB9KTtcbiAgICAgICAgcmVtb3ZlQ2xhc3MoZWwsIHRhcmdldENsYXNzKTtcbiAgICAgICAgY3NzKGVsLCAnbWluSGVpZ2h0JywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbCkge1xuICAgICAgICB2YXIgcmVmID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG4gICAgICAgIHZhciByZWYkMSA9IHBvc2l0aW9uKGVsKTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZiQxLnRvcDtcbiAgICAgICAgdmFyIGxlZnQgPSByZWYkMS5sZWZ0O1xuICAgICAgICB0b3AgKz0gdG9GbG9hdChjc3MoZWwsICdtYXJnaW5Ub3AnKSk7XG5cbiAgICAgICAgcmV0dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdCwgaGVpZ2h0OiBoZWlnaHQkJDEsIHdpZHRoOiB3aWR0aCQkMX07XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlJDE7XG5cbiAgICBmdW5jdGlvbiBhZGRTdHlsZSgpIHtcbiAgICAgICAgaWYgKCFzdHlsZSQxKSB7XG4gICAgICAgICAgICBzdHlsZSQxID0gYXBwZW5kKGRvY3VtZW50LmhlYWQsICc8c3R5bGU+Jykuc2hlZXQ7XG4gICAgICAgICAgICBzdHlsZSQxLmluc2VydFJ1bGUoXG4gICAgICAgICAgICAgICAgKFwiLlwiICsgdGFyZ2V0Q2xhc3MgKyBcIiA+ICoge1xcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgICAgIH1cIilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgRmlsdGVyID0ge1xuXG4gICAgICAgIG1peGluczogW0FuaW1hdGVdLFxuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBzZWxBY3RpdmU6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgICBzZWxBY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1maWx0ZXItY29udHJvbCcsXG4gICAgICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiAyNTBcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0b2dnbGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCgoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIiksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCh0YXJnZXQsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcIltcIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXSxbZGF0YS1cIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseShlLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsQWN0aXZlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGFjdGl2ZXMgPSAkJCh0aGlzLnNlbEFjdGl2ZSwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNscywgaW5jbHVkZXMoYWN0aXZlcywgZWwpKTsgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgIHZhciB0b2dnbGVzID0gZGF0YSQkMS50b2dnbGVzO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZGF0YSQkMS5jaGlsZHJlbjtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsTGlzdCh0b2dnbGVzLCB0aGlzLnRvZ2dsZXMsIGZhbHNlKSAmJiBpc0VxdWFsTGlzdChjaGlsZHJlbiwgdGhpcy50YXJnZXQuY2hpbGRyZW4sIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YSQkMS50b2dnbGVzID0gdGhpcy50b2dnbGVzO1xuICAgICAgICAgICAgZGF0YSQkMS5jaGlsZHJlbiA9IHRoaXMudGFyZ2V0LmNoaWxkcmVuO1xuXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0U3RhdGUoKSwgZmFsc2UpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBhcHBseTogZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKG1lcmdlU3RhdGUoZWwsIHRoaXMuYXR0ckl0ZW0sIHRoaXMuZ2V0U3RhdGUoKSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0U3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBoYXNDbGFzcyhpdGVtLCB0aGlzJDEuY2xzKTsgfSlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoc3RhdGUsIGVsKSB7IHJldHVybiBtZXJnZVN0YXRlKGVsLCB0aGlzJDEuYXR0ckl0ZW0sIHN0YXRlKTsgfSwge2ZpbHRlcjogeycnOiAnJ30sIHNvcnQ6IFtdfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRTdGF0ZTogZnVuY3Rpb24oc3RhdGUsIGFuaW1hdGUkJDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGFuaW1hdGUkJDEgPT09IHZvaWQgMCApIGFuaW1hdGUkJDEgPSB0cnVlO1xuXG5cbiAgICAgICAgICAgICAgICBzdGF0ZSA9IGFzc2lnbih7ZmlsdGVyOiB7Jyc6ICcnfSwgc29ydDogW119LCBzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYmVmb3JlRmlsdGVyJywgW3RoaXMsIHN0YXRlXSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHMsIG1hdGNoRmlsdGVyKGVsLCB0aGlzJDEuYXR0ckl0ZW0sIHN0YXRlKSk7IH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGFwcGx5JCQxID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvciA9IGdldFNlbGVjdG9yKHN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gY3NzKGVsLCAnZGlzcGxheScsIHNlbGVjdG9yICYmICFtYXRjaGVzKGVsLCBzZWxlY3RvcikgPyAnbm9uZScgOiAnJyk7IH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBzdGF0ZS5zb3J0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgc29ydCA9IHJlZlswXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9yZGVyID0gcmVmWzFdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29ydGVkID0gc29ydEl0ZW1zKGNoaWxkcmVuLCBzb3J0LCBvcmRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRXF1YWxMaXN0KHNvcnRlZCwgY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBhcHBlbmQodGhpcyQxLnRhcmdldCwgZWwpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmIChhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShhcHBseSQkMSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0cmlnZ2VyKHRoaXMkMS4kZWwsICdhZnRlckZpbHRlcicsIFt0aGlzJDFdKTsgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkkJDEoKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FmdGVyRmlsdGVyJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0RmlsdGVyKGVsLCBhdHRyJCQxKSB7XG4gICAgICAgIHJldHVybiBwYXJzZU9wdGlvbnMoZGF0YShlbCwgYXR0ciQkMSksIFsnZmlsdGVyJ10pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlU3RhdGUoZWwsIGF0dHIkJDEsIHN0YXRlKSB7XG5cbiAgICAgICAgdG9Ob2RlcyhlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJCeSA9IGdldEZpbHRlcihlbCwgYXR0ciQkMSk7XG4gICAgICAgICAgICB2YXIgZmlsdGVyJCQxID0gZmlsdGVyQnkuZmlsdGVyO1xuICAgICAgICAgICAgdmFyIGdyb3VwID0gZmlsdGVyQnkuZ3JvdXA7XG4gICAgICAgICAgICB2YXIgc29ydCA9IGZpbHRlckJ5LnNvcnQ7XG4gICAgICAgICAgICB2YXIgb3JkZXIgPSBmaWx0ZXJCeS5vcmRlcjsgaWYgKCBvcmRlciA9PT0gdm9pZCAwICkgb3JkZXIgPSAnYXNjJztcblxuICAgICAgICAgICAgaWYgKGZpbHRlciQkMSB8fCBpc1VuZGVmaW5lZChzb3J0KSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5maWx0ZXJbJyddO1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXJbZ3JvdXBdID0gZmlsdGVyJCQxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpbHRlciA9IHsnJzogZmlsdGVyJCQxfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzb3J0KSkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNvcnQgPSBbc29ydCwgb3JkZXJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hGaWx0ZXIoZWwsIGF0dHIkJDEsIHJlZikge1xuICAgICAgICB2YXIgc3RhdGVGaWx0ZXIgPSByZWYuZmlsdGVyO1xuICAgICAgICB2YXIgcmVmX3NvcnQgPSByZWYuc29ydDtcbiAgICAgICAgdmFyIHN0YXRlU29ydCA9IHJlZl9zb3J0WzBdO1xuICAgICAgICB2YXIgc3RhdGVPcmRlciA9IHJlZl9zb3J0WzFdO1xuXG4gICAgICAgIHZhciByZWYkMSA9IGdldEZpbHRlcihlbCwgYXR0ciQkMSk7XG4gICAgICAgIHZhciBmaWx0ZXIkJDEgPSByZWYkMS5maWx0ZXI7XG4gICAgICAgIHZhciBncm91cCA9IHJlZiQxLmdyb3VwOyBpZiAoIGdyb3VwID09PSB2b2lkIDAgKSBncm91cCA9ICcnO1xuICAgICAgICB2YXIgc29ydCA9IHJlZiQxLnNvcnQ7XG4gICAgICAgIHZhciBvcmRlciA9IHJlZiQxLm9yZGVyOyBpZiAoIG9yZGVyID09PSB2b2lkIDAgKSBvcmRlciA9ICdhc2MnO1xuICAgICAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgICAgICAgIChmaWx0ZXIkJDEgfHwgaXNVbmRlZmluZWQoc29ydCkpICYmIGdyb3VwIGluIHN0YXRlRmlsdGVyICYmIChmaWx0ZXIkJDEgPT09IHN0YXRlRmlsdGVyW2dyb3VwXSB8fCBpc1VuZGVmaW5lZChmaWx0ZXIkJDEpICYmICFzdGF0ZUZpbHRlcltncm91cF0pXG4gICAgICAgICAgICB8fCBzdGF0ZVNvcnQgJiYgc29ydCAmJiBzdGF0ZVNvcnQgPT09IHNvcnQgJiYgc3RhdGVPcmRlciA9PT0gb3JkZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0VxdWFsTGlzdChsaXN0QSwgbGlzdEIsIHN0cmljdCkge1xuICAgICAgICBpZiAoIHN0cmljdCA9PT0gdm9pZCAwICkgc3RyaWN0ID0gdHJ1ZTtcblxuXG4gICAgICAgIGxpc3RBID0gdG9Ob2RlcyhsaXN0QSk7XG4gICAgICAgIGxpc3RCID0gdG9Ob2RlcyhsaXN0Qik7XG5cbiAgICAgICAgcmV0dXJuIGxpc3RBLmxlbmd0aCA9PT0gbGlzdEIubGVuZ3RoXG4gICAgICAgICAgICAmJiBsaXN0QS5ldmVyeShmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHN0cmljdCA/IGVsID09PSBsaXN0QltpXSA6IH5saXN0Qi5pbmRleE9mKGVsKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2VsZWN0b3IocmVmKSB7XG4gICAgICAgIHZhciBmaWx0ZXIkJDEgPSByZWYuZmlsdGVyO1xuXG4gICAgICAgIHZhciBzZWxlY3RvciA9ICcnO1xuICAgICAgICBlYWNoKGZpbHRlciQkMSwgZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBzZWxlY3RvciArPSB2YWx1ZSB8fCAnJzsgfSk7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzb3J0SXRlbXMobm9kZXMsIHNvcnQsIG9yZGVyKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKG5vZGVzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBkYXRhKGEsIHNvcnQpLmxvY2FsZUNvbXBhcmUoZGF0YShiLCBzb3J0KSkgKiAob3JkZXIgPT09ICdhc2MnIHx8IC0xKTsgfSk7XG4gICAgfVxuXG4gICAgdmFyIEFuaW1hdGlvbnMgPSB7XG5cbiAgICAgICAgc2xpZGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIC0xMDApfSxcbiAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlZChjdXJyZW50KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIC0xMDAgKiBwZXJjZW50KX0sXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAxMDAgKiAoMSAtIHBlcmNlbnQpKX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVkKGVsKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhjc3MoZWwsICd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpWzRdIC8gZWwub2Zmc2V0V2lkdGgpIHx8IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKHZhbHVlLCB1bml0KSB7XG4gICAgICAgIGlmICggdmFsdWUgPT09IHZvaWQgMCApIHZhbHVlID0gMDtcbiAgICAgICAgaWYgKCB1bml0ID09PSB2b2lkIDAgKSB1bml0ID0gJyUnO1xuXG4gICAgICAgIHJldHVybiAoXCJ0cmFuc2xhdGVYKFwiICsgdmFsdWUgKyAodmFsdWUgPyB1bml0IDogJycpICsgXCIpXCIpOyAvLyBjdXJyZW50bHkgbm90IHRyYW5zbGF0ZTNkIHRvIHN1cHBvcnQgSUUsIHRyYW5zbGF0ZTNkIHdpdGhpbiB0cmFuc2xhdGUzZCBkb2VzIG5vdCB3b3JrIHdoaWxlIHRyYW5zaXRpb25pbmdcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FsZTNkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiAoXCJzY2FsZTNkKFwiICsgdmFsdWUgKyBcIiwgXCIgKyB2YWx1ZSArIFwiLCAxKVwiKTtcbiAgICB9XG5cbiAgICB2YXIgQW5pbWF0aW9ucyQxID0gYXNzaWduKHt9LCBBbmltYXRpb25zLCB7XG5cbiAgICAgICAgZmFkZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMH0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudH0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiBwZXJjZW50fVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBzY2FsZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAuMil9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSwgdHJhbnNmb3JtOiBzY2FsZTNkKDEpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAuMiAqIHBlcmNlbnQpfSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIgKyAuMiAqIHBlcmNlbnQpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBUcmFuc2l0aW9uZXIocHJldiwgbmV4dCwgZGlyLCByZWYpIHtcbiAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG4gICAgICAgIHZhciBlYXNpbmcgPSByZWYuZWFzaW5nO1xuXG5cbiAgICAgICAgdmFyIHBlcmNlbnQgPSBhbmltYXRpb24ucGVyY2VudDtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IGFuaW1hdGlvbi50cmFuc2xhdGU7XG4gICAgICAgIHZhciBzaG93ID0gYW5pbWF0aW9uLnNob3c7IGlmICggc2hvdyA9PT0gdm9pZCAwICkgc2hvdyA9IG5vb3A7XG4gICAgICAgIHZhciBwcm9wcyA9IHNob3coZGlyKTtcbiAgICAgICAgdmFyIGRlZmVycmVkID0gbmV3IERlZmVycmVkKCk7XG5cbiAgICAgICAgcmV0dXJuIHtcblxuICAgICAgICAgICAgZGlyOiBkaXIsXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50LCBsaW5lYXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSAwO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgdGltaW5nID0gbGluZWFyID8gJ2xpbmVhcicgOiBlYXNpbmc7XG4gICAgICAgICAgICAgICAgZHVyYXRpb24gLT0gTWF0aC5yb3VuZChkdXJhdGlvbiAqIGNsYW1wKHBlcmNlbnQsIC0xLCAxKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZShwZXJjZW50KTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUobmV4dCwgJ2l0ZW1pbicsIHtwZXJjZW50OiBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW1vdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlJDEuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChuZXh0LCBwcm9wc1sxXSwgZHVyYXRpb24sIHRpbWluZyksXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQocHJldiwgcHJvcHNbMF0sIGR1cmF0aW9uLCB0aW1pbmcpXG4gICAgICAgICAgICAgICAgXSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUcmFuc2l0aW9uLnN0b3AoW25leHQsIHByZXZdKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoW25leHQsIHByZXZdKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHByb3BzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhbbmV4dCwgcHJldl0sIHByb3AsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmb3J3YXJkOiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCkge1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoW25leHQsIHByZXZdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93KGR1cmF0aW9uLCBwZXJjZW50LCB0cnVlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSB0cmFuc2xhdGUocGVyY2VudCwgZGlyKTtcbiAgICAgICAgICAgICAgICBjc3MobmV4dCwgcHJvcHNbMV0pO1xuICAgICAgICAgICAgICAgIGNzcyhwcmV2LCBwcm9wc1swXSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZShuZXh0LCAnaXRlbXRyYW5zbGF0ZWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZShwcmV2LCAnaXRlbXRyYW5zbGF0ZW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZGlyOiBkaXJ9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBlcmNlbnQocHJldiB8fCBuZXh0LCBuZXh0LCBkaXIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RGlzdGFuY2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmlnZ2VyVXBkYXRlKGVsLCB0eXBlLCBkYXRhJCQxKSB7XG4gICAgICAgIHRyaWdnZXIoZWwsIGNyZWF0ZUV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSwgZGF0YSQkMSkpO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXJBdXRvcGxheSA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgICAgICBhdXRvcGxheUludGVydmFsOiBOdW1iZXIsXG4gICAgICAgICAgICBwYXVzZU9uSG92ZXI6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgICAgICBhdXRvcGxheUludGVydmFsOiA3MDAwLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBdXRvcGxheSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndmlzaWJpbGl0eWNoYW5nZScsXG5cbiAgICAgICAgICAgICAgICBlbDogZG9jdW1lbnQsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRBdXRvcGxheSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiBwb2ludGVyRG93bixcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc3RvcEF1dG9wbGF5J1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VlbnRlcicsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRvcGxheTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIb3ZlcmluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VsZWF2ZScsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRvcGxheTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIb3ZlcmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzdGFydEF1dG9wbGF5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9wbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuICEodGhpcyQxLmlzSG92ZXJpbmcgJiYgdGhpcyQxLnBhdXNlT25Ib3ZlcikgJiYgIXRoaXMkMS5zdGFjay5sZW5ndGggJiYgdGhpcyQxLnNob3coJ25leHQnKTsgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b3BsYXlJbnRlcnZhbFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcEF1dG9wbGF5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNsaWRlckRyYWcgPSB7XG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGhyZXNob2xkOiAxMCxcbiAgICAgICAgICAgIHByZXZlbnRDYXRjaDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIFsnc3RhcnQnLCAnbW92ZScsICdlbmQnXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblxuICAgICAgICAgICAgICAgIHZhciBmbiA9IHRoaXMkMVtrZXldO1xuICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gZ2V0UG9zJDEoZSkueCAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZQb3MgPSBwb3MgIT09IHRoaXMkMS5wb3MgPyB0aGlzJDEucG9zIDogdGhpcyQxLnByZXZQb3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3MgPSBwb3M7XG5cbiAgICAgICAgICAgICAgICAgICAgZm4oZSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlc1NlbGVjdG9yO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpICYmIGhhc1RleHROb2Rlc09ubHkoZS50YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBlLmJ1dHRvbiA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMubGVuZ3RoIDwgMlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5wcmV2ZW50Q2F0Y2hcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdkcmFnc3RhcnQnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWcgPSB0aGlzLnBvcztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2l0aW9uZXIpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSB0aGlzLl90cmFuc2l0aW9uZXIucGVyY2VudCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWcgKz0gdGhpcy5fdHJhbnNpdGlvbmVyLmdldERpc3RhbmNlKCkgKiB0aGlzLnBlcmNlbnQgKiB0aGlzLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIudHJhbnNsYXRlKHRoaXMucGVyY2VudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci5jYW5jZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gW107XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRNb3ZlID0gb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUsIHtjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZX0pO1xuICAgICAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMudW5iaW5kTW92ZSk7XG4gICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQsIHRydWUpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMucG9zIC0gdGhpcy5kcmFnO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlID09PSAwIHx8IHRoaXMucHJldlBvcyA9PT0gdGhpcy5wb3MgfHwgIXRoaXMuZHJhZ2dpbmcgJiYgTWF0aC5hYnMoZGlzdGFuY2UpIDwgdGhpcy50aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUuY2FuY2VsYWJsZSAmJiBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpciA9IChkaXN0YW5jZSA8IDAgPyAxIDogLTEpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlcyA9IHJlZi5zbGlkZXM7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcHJldkluZGV4ID0gcmVmJDEucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIHZhciBkaXMgPSBNYXRoLmFicyhkaXN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXgocHJldkluZGV4ICsgdGhpcy5kaXIsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5fZ2V0RGlzdGFuY2UocHJldkluZGV4LCBuZXh0SW5kZXgpIHx8IHNsaWRlc1twcmV2SW5kZXhdLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKG5leHRJbmRleCAhPT0gcHJldkluZGV4ICYmIGRpcyA+IHdpZHRoJCQxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmRyYWcgLT0gd2lkdGgkJDEgKiB0aGlzJDEuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIHByZXZJbmRleCA9IG5leHRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgZGlzIC09IHdpZHRoJCQxO1xuICAgICAgICAgICAgICAgICAgICBuZXh0SW5kZXggPSB0aGlzJDEuZ2V0SW5kZXgocHJldkluZGV4ICsgdGhpcyQxLmRpciwgcHJldkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgkJDEgPSB0aGlzJDEuX2dldERpc3RhbmNlKHByZXZJbmRleCwgbmV4dEluZGV4KSB8fCBzbGlkZXNbcHJldkluZGV4XS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IGRpcyAvIHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByZXYgPSBzbGlkZXNbcHJldkluZGV4XTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHNsaWRlc1tuZXh0SW5kZXhdO1xuICAgICAgICAgICAgICAgIHZhciBjaGFuZ2VkID0gdGhpcy5pbmRleCAhPT0gbmV4dEluZGV4O1xuICAgICAgICAgICAgICAgIHZhciBlZGdlID0gcHJldkluZGV4ID09PSBuZXh0SW5kZXg7XG5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbVNob3duO1xuXG4gICAgICAgICAgICAgICAgW3RoaXMuaW5kZXgsIHRoaXMucHJldkluZGV4XS5maWx0ZXIoZnVuY3Rpb24gKGkpIHsgcmV0dXJuICFpbmNsdWRlcyhbbmV4dEluZGV4LCBwcmV2SW5kZXhdLCBpKTsgfSkuZm9yRWFjaChmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHNsaWRlc1tpXSwgJ2l0ZW1oaWRkZW4nLCBbdGhpcyQxXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaG93biA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucHJldkluZGV4ID0gcHJldkluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4ID09PSBwcmV2SW5kZXggJiYgdGhpcy5wcmV2SW5kZXggIT09IHByZXZJbmRleCB8fCBpdGVtU2hvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzbGlkZXNbdGhpcy5pbmRleF0sICdpdGVtc2hvd24nLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldkluZGV4ID0gcHJldkluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICFlZGdlICYmIHRyaWdnZXIocHJldiwgJ2JlZm9yZWl0ZW1oaWRlJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnYmVmb3JlaXRlbXNob3cnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX3RyYW5zbGF0ZShNYXRoLmFicyh0aGlzLnBlcmNlbnQpLCBwcmV2LCAhZWRnZSAmJiBuZXh0KTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICFlZGdlICYmIHRyaWdnZXIocHJldiwgJ2l0ZW1oaWRlJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3cnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZW5kOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIG9mZih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnVuYmluZE1vdmUpO1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTW92ZSgpO1xuICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4ID09PSB0aGlzLnByZXZJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gMSAtIHRoaXMucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyICo9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvdyhmYWxzZSwgdGhpcy5pbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlyQ2hhbmdlID0gKGlzUnRsID8gdGhpcy5kaXIgKiAoaXNSdGwgPyAxIDogLTEpIDogdGhpcy5kaXIpIDwgMCA9PT0gdGhpcy5wcmV2UG9zID4gdGhpcy5wb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gZGlyQ2hhbmdlID8gdGhpcy5pbmRleCA6IHRoaXMucHJldkluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlyQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gMSAtIHRoaXMucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRoaXMuZGlyID4gMCAmJiAhZGlyQ2hhbmdlIHx8IHRoaXMuZGlyIDwgMCAmJiBkaXJDaGFuZ2UgPyAnbmV4dCcgOiAncHJldmlvdXMnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByZXZlbnRDbGljaygpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnXG4gICAgICAgICAgICAgICAgICAgID0gdGhpcy5wZXJjZW50XG4gICAgICAgICAgICAgICAgICAgID0gbnVsbDtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYXNUZXh0Tm9kZXNPbmx5KGVsKSB7XG4gICAgICAgIHJldHVybiAhZWwuY2hpbGRyZW4ubGVuZ3RoICYmIGVsLmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXJOYXYgPSB7XG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgc2VsTmF2OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIG5hdjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsTmF2ID0gcmVmLnNlbE5hdjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKHNlbE5hdiwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG5hdkl0ZW1TZWxlY3RvcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHJJdGVtID0gcmVmLmF0dHJJdGVtO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcIltcIiArIGF0dHJJdGVtICsgXCJdLFtkYXRhLVwiICsgYXR0ckl0ZW0gKyBcIl1cIik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBuYXZJdGVtczogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRoaXMubmF2SXRlbVNlbGVjdG9yLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYXYgJiYgdGhpcy5sZW5ndGggIT09IHRoaXMubmF2LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCh0aGlzLm5hdiwgdGhpcy5zbGlkZXMubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiAoXCI8bGkgXCIgKyAodGhpcyQxLmF0dHJJdGVtKSArIFwiPVxcXCJcIiArIGkgKyBcIlxcXCI+PGEgaHJlZj1cXFwiI1xcXCI+PC9hPjwvbGk+XCIpOyB9KS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcygkJCh0aGlzLm5hdkl0ZW1TZWxlY3RvciwgdGhpcy4kZWwpLmNvbmNhdCh0aGlzLm5hdiksICd1ay1oaWRkZW4nLCAhdGhpcy5tYXhJbmRleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOYXYoKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF2SXRlbVNlbGVjdG9yO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50LmJsdXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGRhdGEoZS5jdXJyZW50LCB0aGlzLmF0dHJJdGVtKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3cnLFxuICAgICAgICAgICAgICAgIGhhbmRsZXI6ICd1cGRhdGVOYXYnXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdXBkYXRlTmF2OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdkl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNtZCA9IGRhdGEoZWwsIHRoaXMkMS5hdHRySXRlbSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHNBY3RpdmUsIHRvTnVtYmVyKGNtZCkgPT09IGkpO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgJ3VrLWludmlzaWJsZScsIHRoaXMkMS5maW5pdGUgJiYgKGNtZCA9PT0gJ3ByZXZpb3VzJyAmJiBpID09PSAwIHx8IGNtZCA9PT0gJ25leHQnICYmIGkgPj0gdGhpcyQxLm1heEluZGV4KSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNsaWRlciA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBtaXhpbnM6IFtTbGlkZXJBdXRvcGxheSwgU2xpZGVyRHJhZywgU2xpZGVyTmF2XSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiBCb29sZWFuLFxuICAgICAgICAgICAgZWFzaW5nOiBTdHJpbmcsXG4gICAgICAgICAgICBpbmRleDogTnVtYmVyLFxuICAgICAgICAgICAgZmluaXRlOiBCb29sZWFuLFxuICAgICAgICAgICAgdmVsb2NpdHk6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBlYXNpbmc6ICdlYXNlJyxcbiAgICAgICAgICAgIGZpbml0ZTogZmFsc2UsXG4gICAgICAgICAgICB2ZWxvY2l0eTogMSxcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgICAgICAgcGVyY2VudDogMCxcbiAgICAgICAgICAgIGNsc0FjdGl2ZTogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBmYWxzZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb25PcHRpb25zOiB7fVxuICAgICAgICB9KTsgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBkdXJhdGlvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmVsb2NpdHkgPSByZWYudmVsb2NpdHk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3BlZWRVcCgkZWwub2Zmc2V0V2lkdGggLyB2ZWxvY2l0eSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBsZW5ndGg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBsaXN0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxMaXN0ID0gcmVmLnNlbExpc3Q7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxMaXN0LCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbWF4SW5kZXg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzbGlkZXNTZWxlY3RvcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbExpc3QgPSByZWYuc2VsTGlzdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoc2VsTGlzdCArIFwiID4gKlwiKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNsaWRlczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTm9kZXModGhpcy5saXN0LmNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZSh0aGlzLmxpc3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihpbmRleCQkMSwgZm9yY2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGZvcmNlID09PSB2b2lkIDAgKSBmb3JjZSA9IGZhbHNlO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZyB8fCAhdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBzdGFjayA9IHJlZi5zdGFjaztcbiAgICAgICAgICAgICAgICB2YXIgcXVldWVJbmRleCA9IGZvcmNlID8gMCA6IHN0YWNrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnNwbGljZShxdWV1ZUluZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzdGFja1tmb3JjZSA/ICd1bnNoaWZ0JyA6ICdwdXNoJ10oaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiBzdGFjay5sZW5ndGggPiAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLmZvcndhcmQoTWF0aC5taW4odGhpcy5kdXJhdGlvbiwgMjAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByZXZJbmRleCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgdmFyIHByZXYgPSBoYXNDbGFzcyh0aGlzLnNsaWRlcywgdGhpcy5jbHNBY3RpdmUpICYmIHRoaXMuc2xpZGVzW3ByZXZJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHRoaXMuaW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5zbGlkZXNbbmV4dEluZGV4XTtcblxuICAgICAgICAgICAgICAgIGlmIChwcmV2ID09PSBuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRpciA9IGdldERpcmVjdGlvbihpbmRleCQkMSwgcHJldkluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdiZWZvcmVpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0cmlnZ2VyKG5leHQsICdiZWZvcmVpdGVtc2hvdycsIFt0aGlzLCBwcmV2XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzLl9zaG93KHByZXYsIG5leHQsIGZvcmNlKS50aGVuKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXIocHJldiwgJ2l0ZW1oaWRkZW4nLCBbdGhpcyQxXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93bicsIFt0aGlzJDFdKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFzdGRvbS53cml0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93KHN0YWNrLnNoaWZ0KCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5fdHJhbnNpdGlvbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXIocHJldiwgJ2l0ZW1oaWRlJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvdycsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2KSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2xhbXAoZ2V0SW5kZXgoaW5kZXgkJDEsIHRoaXMuc2xpZGVzLCBwcmV2LCB0aGlzLmZpbml0ZSksIDAsIHRoaXMubWF4SW5kZXgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0VmFsaWRJbmRleDogZnVuY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXZJbmRleCA9PT0gdm9pZCAwICkgcHJldkluZGV4ID0gdGhpcy5wcmV2SW5kZXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJbmRleChpbmRleCQkMSwgcHJldkluZGV4KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9zaG93OiBmdW5jdGlvbihwcmV2LCBuZXh0LCBmb3JjZSkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKFxuICAgICAgICAgICAgICAgICAgICBwcmV2LFxuICAgICAgICAgICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpcixcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogZm9yY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5leHQub2Zmc2V0V2lkdGggPCA2MDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpJyAvKiBlYXNlT3V0UXVhZCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpJyAvKiBlYXNlT3V0UXVhcnQgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZWFzaW5nXG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMudHJhbnNpdGlvbk9wdGlvbnMpXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmICghZm9yY2UgJiYgIXByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuc3RhY2s7XG4gICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IHJlZi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zaXRpb25lcltsZW5ndGggPiAxID8gJ2ZvcndhcmQnIDogJ3Nob3cnXShsZW5ndGggPiAxID8gTWF0aC5taW4odGhpcy5kdXJhdGlvbiwgNzUgKyA3NSAvIChsZW5ndGggLSAxKSkgOiB0aGlzLmR1cmF0aW9uLCB0aGlzLnBlcmNlbnQpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfZ2V0RGlzdGFuY2U6IGZ1bmN0aW9uKHByZXYsIG5leHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMuX2dldFRyYW5zaXRpb25lcihwcmV2LCBwcmV2ICE9PSBuZXh0ICYmIG5leHQpLmdldERpc3RhbmNlKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBwcmV2LCBuZXh0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2ID09PSB2b2lkIDAgKSBwcmV2ID0gdGhpcy5wcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSB2b2lkIDAgKSBuZXh0ID0gdGhpcy5pbmRleDtcblxuICAgICAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uZXIgPSB0aGlzLl9nZXRUcmFuc2l0aW9uZXIocHJldiAhPT0gbmV4dCA/IHByZXYgOiBmYWxzZSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZShwZXJjZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvbmVyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2dldFRyYW5zaXRpb25lcjogZnVuY3Rpb24ocHJldiwgbmV4dCwgZGlyLCBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2ID09PSB2b2lkIDAgKSBwcmV2ID0gdGhpcy5wcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSB2b2lkIDAgKSBuZXh0ID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIGRpciA9PT0gdm9pZCAwICkgZGlyID0gdGhpcy5kaXIgfHwgMTtcbiAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB0aGlzLnRyYW5zaXRpb25PcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLlRyYW5zaXRpb25lcihcbiAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIocHJldikgPyB0aGlzLnNsaWRlc1twcmV2XSA6IHByZXYsXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKG5leHQpID8gdGhpcy5zbGlkZXNbbmV4dF0gOiBuZXh0LFxuICAgICAgICAgICAgICAgICAgICBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4JCQxID09PSAnbmV4dCdcbiAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgOiBpbmRleCQkMSA9PT0gJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICA6IGluZGV4JCQxIDwgcHJldkluZGV4XG4gICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgOiAxO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNwZWVkVXAoeCkge1xuICAgICAgICByZXR1cm4gLjUgKiB4ICsgMzAwOyAvLyBwYXJhYm9sYSB0aHJvdWdoICg0MDAsNTAwOyA2MDAsNjAwOyAxODAwLDEyMDApXG4gICAgfVxuXG4gICAgdmFyIFNsaWRlc2hvdyA9IHtcblxuICAgICAgICBtaXhpbnM6IFtTbGlkZXJdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJ3NsaWRlJyxcbiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyxcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMsXG4gICAgICAgICAgICBUcmFuc2l0aW9uZXI6IFRyYW5zaXRpb25lclxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG4gICAgICAgICAgICAgICAgdmFyIEFuaW1hdGlvbnMkJDEgPSByZWYuQW5pbWF0aW9ucztcblxuICAgICAgICAgICAgICAgIHJldHVybiBhc3NpZ24oYW5pbWF0aW9uIGluIEFuaW1hdGlvbnMkJDEgPyBBbmltYXRpb25zJCQxW2FuaW1hdGlvbl0gOiBBbmltYXRpb25zJCQxLnNsaWRlLCB7bmFtZTogYW5pbWF0aW9ufSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHthbmltYXRpb246IHRoaXMuYW5pbWF0aW9ufTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICAnaXRlbXNob3cgaXRlbWhpZGUgaXRlbXNob3duIGl0ZW1oaWRkZW4nOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZSh0YXJnZXQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlzTnVtYmVyKHRoaXMucHJldkluZGV4KSAmJiBmYXN0ZG9tLmZsdXNoKCk7IC8vIGlPUyAxMCsgd2lsbCBob25vciB0aGUgdmlkZW8ucGxheSBvbmx5IGlmIGNhbGxlZCBmcm9tIGEgZ2VzdHVyZSBoYW5kbGVyXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBiZWZvcmVpdGVtc2hvdzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZhdGVkKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1oaWRkZW46IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNBY3RpdmF0ZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgTGlnaHRib3hQYW5lbCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDb250YWluZXIsIE1vZGFsLCBUb2dnbGFibGUsIFNsaWRlc2hvd10sXG5cbiAgICAgICAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGVsYXlDb250cm9sczogTnVtYmVyLFxuICAgICAgICAgICAgcHJlbG9hZDogTnVtYmVyLFxuICAgICAgICAgICAgdmlkZW9BdXRvcGxheTogQm9vbGVhbixcbiAgICAgICAgICAgIHRlbXBsYXRlOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgcHJlbG9hZDogMSxcbiAgICAgICAgICAgIHZpZGVvQXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgZGVsYXlDb250cm9sczogMzAwMCxcbiAgICAgICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgICAgIGNsczogJ3VrLW9wZW4nLFxuICAgICAgICAgICAgY2xzUGFnZTogJ3VrLWxpZ2h0Ym94LXBhZ2UnLFxuICAgICAgICAgICAgc2VsTGlzdDogJy51ay1saWdodGJveC1pdGVtcycsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLWxpZ2h0Ym94LWl0ZW0nLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstY2xvc2UtbGFyZ2UnLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgICAgICAgIHZlbG9jaXR5OiAyLFxuICAgICAgICAgICAgQW5pbWF0aW9uczogQW5pbWF0aW9ucyQxLFxuICAgICAgICAgICAgdGVtcGxhdGU6IFwiPGRpdiBjbGFzcz1cXFwidWstbGlnaHRib3ggdWstb3ZlcmZsb3ctaGlkZGVuXFxcIj4gPHVsIGNsYXNzPVxcXCJ1ay1saWdodGJveC1pdGVtc1xcXCI+PC91bD4gPGRpdiBjbGFzcz1cXFwidWstbGlnaHRib3gtdG9vbGJhciB1ay1wb3NpdGlvbi10b3AgdWstdGV4dC1yaWdodCB1ay10cmFuc2l0aW9uLXNsaWRlLXRvcCB1ay10cmFuc2l0aW9uLW9wYXF1ZVxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWxpZ2h0Ym94LXRvb2xiYXItaWNvbiB1ay1jbG9zZS1sYXJnZVxcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIiB1ay1jbG9zZT48L2J1dHRvbj4gPC9kaXY+IDxhIGNsYXNzPVxcXCJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLWxlZnQgdWstcG9zaXRpb24tbWVkaXVtIHVrLXRyYW5zaXRpb24tZmFkZVxcXCIgaHJlZj1cXFwiI1xcXCIgdWstc2xpZGVuYXYtcHJldmlvdXMgdWstbGlnaHRib3gtaXRlbT1cXFwicHJldmlvdXNcXFwiPjwvYT4gPGEgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LWJ1dHRvbiB1ay1wb3NpdGlvbi1jZW50ZXItcmlnaHQgdWstcG9zaXRpb24tbWVkaXVtIHVrLXRyYW5zaXRpb24tZmFkZVxcXCIgaHJlZj1cXFwiI1xcXCIgdWstc2xpZGVuYXYtbmV4dCB1ay1saWdodGJveC1pdGVtPVxcXCJuZXh0XFxcIj48L2E+IDxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstbGlnaHRib3gtY2FwdGlvbiB1ay1wb3NpdGlvbi1ib3R0b20gdWstdGV4dC1jZW50ZXIgdWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b20gdWstdHJhbnNpdGlvbi1vcGFxdWVcXFwiPjwvZGl2PiA8L2Rpdj5cIlxuICAgICAgICB9KTsgfSxcblxuICAgICAgICBjcmVhdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuJG1vdW50KGFwcGVuZCh0aGlzLmNvbnRhaW5lciwgdGhpcy50ZW1wbGF0ZSkpO1xuXG4gICAgICAgICAgICB0aGlzLmNhcHRpb24gPSAkKCcudWstbGlnaHRib3gtY2FwdGlvbicsIHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFwcGVuZCh0aGlzJDEubGlzdCwgJzxsaT48L2xpPicpOyB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAocG9pbnRlck1vdmUgKyBcIiBcIiArIHBvaW50ZXJEb3duICsgXCIga2V5ZG93blwiKSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6ICdzaG93Q29udHJvbHMnXG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNTZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3duJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc2hvd0NvbnRyb2xzJ1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUNvbnRyb2xzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zbGlkZXMsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdG9wKHRoaXMuc2xpZGVzKTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdrZXl1cCcsXG5cbiAgICAgICAgICAgICAgICBlbDogZG9jdW1lbnQsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVG9nZ2xlZCh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygncHJldmlvdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCduZXh0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaXRlbXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRDYXRjaCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGlvbiA9IEFuaW1hdGlvbnMkMVsnc2NhbGUnXTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZS50YXJnZXQsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5zcGxpY2UoMSwgMCwgdGhpcy5pbmRleCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvdycsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBpbmRleCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSB0aGlzLmdldEl0ZW0oaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYXB0aW9uID0gcmVmJDEuY2FwdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy5jYXB0aW9uLCAnZGlzcGxheScsIGNhcHRpb24gPyAnJyA6ICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwodGhpcy5jYXB0aW9uLCBjYXB0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8PSB0aGlzLnByZWxvYWQ7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmxvYWRJdGVtKHRoaXMkMS5nZXRJbmRleChpICsgaikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmxvYWRJdGVtKHRoaXMkMS5nZXRJbmRleChpIC0gaikpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvd24nLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmVudENhdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbWxvYWQnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oXywgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2UgPSBpdGVtLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBpdGVtLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhbHQgPSBpdGVtLmFsdDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oaXRlbSwgJzxzcGFuIHVrLXNwaW5uZXI+PC9zcGFuPicpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlcyQkMTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJbWFnZVxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2ltYWdlJyB8fCBzb3VyY2UubWF0Y2goL1xcLihqcChlKT9nfHBuZ3xnaWZ8c3ZnKSgkfFxcPykvaSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2Uoc291cmNlKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChpbWcpIHsgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIChcIjxpbWcgd2lkdGg9XFxcIlwiICsgKGltZy53aWR0aCkgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIChpbWcuaGVpZ2h0KSArIFwiXFxcIiBzcmM9XFxcIlwiICsgc291cmNlICsgXCJcXFwiIGFsdD1cXFwiXCIgKyAoYWx0ID8gYWx0IDogJycpICsgXCJcXFwiPlwiKSk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldEVycm9yKGl0ZW0pOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBWaWRlb1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2aWRlbycgfHwgc291cmNlLm1hdGNoKC9cXC4obXA0fHdlYm18b2d2KSgkfFxcPykvaSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gJCgoXCI8dmlkZW8gY29udHJvbHMgcGxheXNpbmxpbmVcIiArIChpdGVtLnBvc3RlciA/IChcIiBwb3N0ZXI9XFxcIlwiICsgKGl0ZW0ucG9zdGVyKSArIFwiXFxcIlwiKSA6ICcnKSArIFwiIHVrLXZpZGVvPVxcXCJcIiArICh0aGlzLnZpZGVvQXV0b3BsYXkpICsgXCJcXFwiPjwvdmlkZW8+XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodmlkZW8sICdzcmMnLCBzb3VyY2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvbih2aWRlbywgJ2Vycm9yJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldEVycm9yKGl0ZW0pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uKHZpZGVvLCAnbG9hZGVkbWV0YWRhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih2aWRlbywge3dpZHRoOiB2aWRlby52aWRlb1dpZHRoLCBoZWlnaHQ6IHZpZGVvLnZpZGVvSGVpZ2h0fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNldEl0ZW0oaXRlbSwgdmlkZW8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmcmFtZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdpZnJhbWUnIHx8IHNvdXJjZS5tYXRjaCgvXFwuKGh0bWx8cGhwKSgkfFxcPykvaSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sIChcIjxpZnJhbWUgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LWlmcmFtZVxcXCIgc3JjPVxcXCJcIiArIHNvdXJjZSArIFwiXFxcIiBmcmFtZWJvcmRlcj1cXFwiMFxcXCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPlwiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdVR1YmVcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobWF0Y2hlcyQkMSA9IHNvdXJjZS5tYXRjaCgvXFwvXFwvLio/eW91dHViZSgtbm9jb29raWUpP1xcLlthLXpdK1xcL3dhdGNoXFw/dj0oW14mXFxzXSspLykgfHwgc291cmNlLm1hdGNoKC8oKXlvdXR1XFwuYmVcXC8oLiopLykpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IG1hdGNoZXMkJDFbMl07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2V0SWZyYW1lID0gZnVuY3Rpb24gKHdpZHRoJCQxLCBoZWlnaHQkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHdpZHRoJCQxID09PSB2b2lkIDAgKSB3aWR0aCQkMSA9IDY0MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGhlaWdodCQkMSA9PT0gdm9pZCAwICkgaGVpZ2h0JCQxID0gNDUwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIGdldElmcmFtZSgoXCJodHRwczovL3d3dy55b3V0dWJlXCIgKyAobWF0Y2hlcyQkMVsxXSB8fCAnJykgKyBcIi5jb20vZW1iZWQvXCIgKyBpZCksIHdpZHRoJCQxLCBoZWlnaHQkJDEsIHRoaXMkMS52aWRlb0F1dG9wbGF5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZSgoXCJodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS9cIiArIGlkICsgXCIvbWF4cmVzZGVmYXVsdC5qcGdcIikpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdVR1YmUgZGVmYXVsdCA0MDQgdGh1bWIsIGZhbGwgYmFjayB0byBsb3cgcmVzb2x1dGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGgkJDEgPT09IDEyMCAmJiBoZWlnaHQkJDEgPT09IDkwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZSgoXCJodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS9cIiArIGlkICsgXCIvMC5qcGdcIikpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRJZnJhbWUod2lkdGgkJDEsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElmcmFtZSh3aWR0aCQkMSwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SWZyYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBWaW1lb1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChtYXRjaGVzJCQxID0gc291cmNlLm1hdGNoKC8oXFwvXFwvLio/KXZpbWVvXFwuW2Etel0rXFwvKFswLTldKykuKj8vKSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYWpheCgoXCJodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLmpzb24/bWF4d2lkdGg9MTkyMCZ1cmw9XCIgKyAoZW5jb2RlVVJJKHNvdXJjZSkpKSwge3Jlc3BvbnNlVHlwZTogJ2pzb24nLCB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9yZXNwb25zZSA9IHJlZi5yZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWZfcmVzcG9uc2UuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmX3Jlc3BvbnNlLndpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcyQxLnNldEl0ZW0oaXRlbSwgZ2V0SWZyYW1lKChcImh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby9cIiArIChtYXRjaGVzJCQxWzJdKSksIHdpZHRoJCQxLCBoZWlnaHQkJDEsIHRoaXMkMS52aWRlb0F1dG9wbGF5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuc2V0RXJyb3IoaXRlbSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBsb2FkSXRlbTogZnVuY3Rpb24oaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5nZXRJdGVtKGluZGV4JCQxKTtcblxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdpdGVtbG9hZCcsIFtpdGVtXSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRJdGVtOiBmdW5jdGlvbihpbmRleCQkMSkge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1zW2luZGV4JCQxXSB8fCB7fTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldEl0ZW06IGZ1bmN0aW9uKGl0ZW0sIGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBhc3NpZ24oaXRlbSwge2NvbnRlbnQ6IGNvbnRlbnR9KTtcbiAgICAgICAgICAgICAgICB2YXIgZWwgPSBodG1sKHRoaXMuc2xpZGVzW3RoaXMuaXRlbXMuaW5kZXhPZihpdGVtKV0sIGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdpdGVtbG9hZGVkJywgW3RoaXMsIGVsXSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldEVycm9yOiBmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sICc8c3BhbiB1ay1pY29uPVwiaWNvbjogYm9sdDsgcmF0aW86IDJcIj48L3NwYW4+Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93Q29udHJvbHM6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY29udHJvbHNUaW1lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc1RpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGVDb250cm9scywgdGhpcy5kZWxheUNvbnRyb2xzKTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstYWN0aXZlJywgJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGVDb250cm9sczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsICd1ay1hY3RpdmUnLCAndWstdHJhbnNpdGlvbi1hY3RpdmUnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0SWZyYW1lKHNyYywgd2lkdGgkJDEsIGhlaWdodCQkMSwgYXV0b3BsYXkpIHtcbiAgICAgICAgcmV0dXJuIChcIjxpZnJhbWUgc3JjPVxcXCJcIiArIHNyYyArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyB3aWR0aCQkMSArIFwiXFxcIiBoZWlnaHQ9XFxcIlwiICsgaGVpZ2h0JCQxICsgXCJcXFwiIHN0eWxlPVxcXCJtYXgtd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxcIiBmcmFtZWJvcmRlcj1cXFwiMFxcXCIgYWxsb3dmdWxsc2NyZWVuIHVrLXZpZGVvPVxcXCJhdXRvcGxheTogXCIgKyBhdXRvcGxheSArIFwiXFxcIiB1ay1yZXNwb25zaXZlPjwvaWZyYW1lPlwiKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcHMgPSBtZXJnZShMaWdodGJveFBhbmVsLCAncHJvcHMnKTtcbiAgICB2YXIgZGVmYXVsdHMgPSBtZXJnZShMaWdodGJveFBhbmVsLCAnZGF0YScpO1xuXG4gICAgdmFyIExpZ2h0Ym94ID0ge1xuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwkMixcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczogYXNzaWduKHt0b2dnbGU6IFN0cmluZ30sIHByb3BzKSxcblxuICAgICAgICBkYXRhOiBhc3NpZ24oe3RvZ2dsZTogJ2EnfSwgT2JqZWN0LmtleXMocHJvcHMpLnJlZHVjZShmdW5jdGlvbiAoZGF0YSQkMSwga2V5KSB7XG4gICAgICAgICAgICBkYXRhJCQxW2tleV0gPSBkZWZhdWx0c1trZXldO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH0sIHt9KSksXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdG9nZ2xlID0gcmVmLnRvZ2dsZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0b2dnbGUsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRvZ2dsZSkgKyBcIjpub3QoLnVrLWRpc2FibGVkKVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUuY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhpbmRleCh0aGlzLnRvZ2dsZXMsIGUuY3VycmVudCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgIGRhdGEkJDEudG9nZ2xlcyA9IGRhdGEkJDEudG9nZ2xlcyB8fCB0aGlzLnRvZ2dsZXM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnBhbmVsICYmIHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbC4kcHJvcHMuYW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb247XG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbC4kZW1pdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMucGFuZWwgfHwgaXNFcXVhbExpc3QkMShkYXRhJCQxLnRvZ2dsZXMsIHRoaXMudG9nZ2xlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEkJDEudG9nZ2xlcyA9IHRoaXMudG9nZ2xlcztcbiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXQoKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgX2luaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsID0gdGhpcy5wYW5lbCB8fCB0aGlzLiRjcmVhdGUoJ2xpZ2h0Ym94UGFuZWwnLCBhc3NpZ24oe30sIHRoaXMuJHByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvZ2dsZXMucmVkdWNlKGZ1bmN0aW9uIChpdGVtcywgZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goWydocmVmJywgJ2NhcHRpb24nLCAndHlwZScsICdwb3N0ZXInLCAnYWx0J10ucmVkdWNlKGZ1bmN0aW9uIChvYmosIGF0dHIkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbYXR0ciQkMSA9PT0gJ2hyZWYnID8gJ3NvdXJjZScgOiBhdHRyJCQxXSA9IGRhdGEoZWwsIGF0dHIkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbC4kZGVzdHJveSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaW5kZXgkJDEpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwuc2hvdyhpbmRleCQkMSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwgJiYgdGhpcy5wYW5lbC5oaWRlKCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNFcXVhbExpc3QkMShsaXN0QSwgbGlzdEIpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RBLmxlbmd0aCA9PT0gbGlzdEIubGVuZ3RoXG4gICAgICAgICAgICAmJiBsaXN0QS5ldmVyeShmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGVsID09PSBsaXN0QltpXTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2Uob3B0aW9ucywgcHJvcCkge1xuICAgICAgICByZXR1cm4gYXNzaWduLmFwcGx5KFxuICAgICAgICAgICAgdm9pZCAwLCBbIHt9IF0uY29uY2F0KCAob3B0aW9ucy5taXhpbnMgPyBvcHRpb25zLm1peGlucy5tYXAoZnVuY3Rpb24gKG1peGluKSB7IHJldHVybiBtZXJnZShtaXhpbiwgcHJvcCk7IH0pIDogW10pLFxuICAgICAgICAgICAgW2lzRnVuY3Rpb24ob3B0aW9uc1twcm9wXSkgPyBvcHRpb25zW3Byb3BdKCkgOiBvcHRpb25zW3Byb3BdXSApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDIoVUlraXQpIHtcbiAgICAgICAgaWYgKCFVSWtpdC5saWdodGJveFBhbmVsKSB7XG4gICAgICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2xpZ2h0Ym94UGFuZWwnLCBMaWdodGJveFBhbmVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvYmo7XG5cbiAgICB2YXIgY29udGFpbmVycyA9IHt9O1xuXG4gICAgdmFyIE5vdGlmaWNhdGlvbiA9IHtcblxuICAgICAgICBmdW5jdGlvbmFsOiB0cnVlLFxuXG4gICAgICAgIGFyZ3M6IFsnbWVzc2FnZScsICdzdGF0dXMnXSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICB0aW1lb3V0OiA1MDAwLFxuICAgICAgICAgICAgZ3JvdXA6IG51bGwsXG4gICAgICAgICAgICBwb3M6ICd0b3AtY2VudGVyJyxcbiAgICAgICAgICAgIGNsc0Nsb3NlOiAndWstbm90aWZpY2F0aW9uLWNsb3NlJyxcbiAgICAgICAgICAgIGNsc01zZzogJ3VrLW5vdGlmaWNhdGlvbi1tZXNzYWdlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwkMyxcblxuICAgICAgICBjcmVhdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKCFjb250YWluZXJzW3RoaXMucG9zXSkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcnNbdGhpcy5wb3NdID0gYXBwZW5kKHRoaXMuJGNvbnRhaW5lciwgKFwiPGRpdiBjbGFzcz1cXFwidWstbm90aWZpY2F0aW9uIHVrLW5vdGlmaWNhdGlvbi1cIiArICh0aGlzLnBvcykgKyBcIlxcXCI+PC9kaXY+XCIpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGNzcyhjb250YWluZXJzW3RoaXMucG9zXSwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcblxuICAgICAgICAgICAgdGhpcy4kbW91bnQoYXBwZW5kKGNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAoXCI8ZGl2IGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc01zZykgKyAodGhpcy5zdGF0dXMgPyAoXCIgXCIgKyAodGhpcy5jbHNNc2cpICsgXCItXCIgKyAodGhpcy5zdGF0dXMpKSA6ICcnKSArIFwiXFxcIj4gPGEgaHJlZj1cXFwiI1xcXCIgY2xhc3M9XFxcIlwiICsgKHRoaXMuY2xzQ2xvc2UpICsgXCJcXFwiIGRhdGEtdWstY2xvc2U+PC9hPiA8ZGl2PlwiICsgKHRoaXMubWVzc2FnZSkgKyBcIjwvZGl2PiA8L2Rpdj5cIilcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIG1hcmdpbkJvdHRvbSA9IHRvRmxvYXQoY3NzKHRoaXMuJGVsLCAnbWFyZ2luQm90dG9tJykpO1xuICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChcbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtvcGFjaXR5OiAwLCBtYXJnaW5Ub3A6IC10aGlzLiRlbC5vZmZzZXRIZWlnaHQsIG1hcmdpbkJvdHRvbTogMH0pLFxuICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxLCBtYXJnaW5Ub3A6IDAsIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tfVxuICAgICAgICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcyQxLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRpbWVyID0gc2V0VGltZW91dCh0aGlzJDEuY2xvc2UsIHRoaXMkMS50aW1lb3V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogKCBvYmogPSB7XG5cbiAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWY9XCIjXCJdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSwgb2JqW3BvaW50ZXJFbnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG9ialtwb2ludGVyTGVhdmVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQodGhpcy5jbG9zZSwgdGhpcy50aW1lb3V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmogKSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGNsb3NlOiBmdW5jdGlvbihpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHJlbW92ZUZuID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcyQxLiRlbCwgJ2Nsb3NlJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmUodGhpcyQxLiRlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250YWluZXJzW3RoaXMkMS5wb3NdLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGNvbnRhaW5lcnNbdGhpcyQxLnBvc10sICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUZuKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogLXRoaXMuJGVsLm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogMFxuICAgICAgICAgICAgICAgICAgICB9KS50aGVuKHJlbW92ZUZuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGluc3RhbGwkMyhVSWtpdCkge1xuICAgICAgICBVSWtpdC5ub3RpZmljYXRpb24uY2xvc2VBbGwgPSBmdW5jdGlvbiAoZ3JvdXAsIGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgYXBwbHkoZG9jdW1lbnQuYm9keSwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5vdGlmaWNhdGlvbiA9IFVJa2l0LmdldENvbXBvbmVudChlbCwgJ25vdGlmaWNhdGlvbicpO1xuICAgICAgICAgICAgICAgIGlmIChub3RpZmljYXRpb24gJiYgKCFncm91cCB8fCBncm91cCA9PT0gbm90aWZpY2F0aW9uLmdyb3VwKSkge1xuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uY2xvc2UoaW1tZWRpYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcHMkMSA9IFsneCcsICd5JywgJ2JneCcsICdiZ3knLCAncm90YXRlJywgJ3NjYWxlJywgJ2NvbG9yJywgJ2JhY2tncm91bmRDb2xvcicsICdib3JkZXJDb2xvcicsICdvcGFjaXR5JywgJ2JsdXInLCAnaHVlJywgJ2dyYXlzY2FsZScsICdpbnZlcnQnLCAnc2F0dXJhdGUnLCAnc2VwaWEnLCAnZm9wYWNpdHknXTtcblxuICAgIHZhciBQYXJhbGxheCA9IHtcblxuICAgICAgICBwcm9wczogcHJvcHMkMS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7XG4gICAgICAgICAgICBwcm9wc1twcm9wXSA9ICdsaXN0JztcbiAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbWVkaWE6ICdtZWRpYSdcbiAgICAgICAgfSksXG5cbiAgICAgICAgZGF0YTogcHJvcHMkMS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEkJDEsIHByb3ApIHtcbiAgICAgICAgICAgIGRhdGEkJDFbcHJvcF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gZGF0YSQkMTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbWVkaWE6IGZhbHNlXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHByb3BzOiBmdW5jdGlvbihwcm9wZXJ0aWVzLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChwcm9wZXJ0aWVzW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQ29sb3IgPSBwcm9wLm1hdGNoKC9jb2xvci9pKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQ3NzUHJvcCA9IGlzQ29sb3IgfHwgcHJvcCA9PT0gJ29wYWNpdHknO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3MsIGJnUG9zLCBkaWZmO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcHMgPSBwcm9wZXJ0aWVzW3Byb3BdLnNsaWNlKDApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0Nzc1Byb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcygkZWwsIHByb3AsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGVwcy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwcy51bnNoaWZ0KChwcm9wID09PSAnc2NhbGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc0Nzc1Byb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjc3MoJGVsLCBwcm9wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDApIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHVuaXQgPSBpbmNsdWRlcyhzdGVwcy5qb2luKCcnKSwgJyUnKSA/ICclJyA6ICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29sb3IpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9ICRlbC5zdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2xvciA9IHJlZi5jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiBwYXJzZUNvbG9yKCRlbCwgc3RlcCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgJGVsLnN0eWxlLmNvbG9yID0gY29sb3I7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAodG9GbG9hdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wLm1hdGNoKC9eYmcvKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCAoXCJiYWNrZ3JvdW5kLXBvc2l0aW9uLVwiICsgKHByb3BbMl0pKSwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmdQb3MgPSBjc3MoJGVsLCAnYmFja2dyb3VuZFBvc2l0aW9uJykuc3BsaXQoJyAnKVtwcm9wWzJdID09PSAneCcgPyAwIDogMV07IC8vIElFIDExIGNhbid0IHJlYWQgYmFja2dyb3VuZC1wb3NpdGlvbi1beHx5XVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmNvdmVycykge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbiA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHN0ZXBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF4ID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgc3RlcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkb3duID0gc3RlcHMuaW5kZXhPZihtaW4pIDwgc3RlcHMuaW5kZXhPZihtYXgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG1heCAtIG1pbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiBzdGVwIC0gKGRvd24gPyBtaW4gOiBtYXgpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSAoZG93biA/IC1kaWZmIDogMCkgKyBcInB4XCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBiZ1BvcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSB7c3RlcHM6IHN0ZXBzLCB1bml0OiB1bml0LCBwb3M6IHBvcywgYmdQb3M6IGJnUG9zLCBkaWZmOiBkaWZmfTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7XG5cbiAgICAgICAgICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGJnUHJvcHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnYmd4JywgJ2JneSddLmZpbHRlcihmdW5jdGlvbiAoYmcpIHsgcmV0dXJuIGJnIGluIHRoaXMkMS5wcm9wczsgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjb3ZlcnM6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb3ZlcnMoJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5faW1hZ2U7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmFjdGl2ZSA9ICF0aGlzLm1lZGlhIHx8IHdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEkJDEuaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuaW1hZ2UuZGltRWwgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuJGVsLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy4kZWwub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCdpbWFnZScgaW4gZGF0YSQkMSB8fCAhdGhpcy5jb3ZlcnMgfHwgIXRoaXMuYmdQcm9wcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSBjc3ModGhpcy4kZWwsICdiYWNrZ3JvdW5kSW1hZ2UnKS5yZXBsYWNlKC9ebm9uZXx1cmxcXChbXCInXT8oLis/KVtcIiddP1xcKSQvLCAnJDEnKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNyYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5pbWFnZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGdldEltYWdlKHNyYykudGhlbihmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmltYWdlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWcubmF0dXJhbFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1nLm5hdHVyYWxIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSByZWYuaW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSByZWYuYWN0aXZlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2JhY2tncm91bmRTaXplOiAnJywgYmFja2dyb3VuZFJlcGVhdDogJyd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkaW1FbCA9IGltYWdlLmRpbUVsO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkaW0gPSBEaW1lbnNpb25zLmNvdmVyKGltYWdlLCBkaW1FbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZ1Byb3BzLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wcm9wc1twcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaWZmID0gcmVmLmRpZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmdQb3MgPSByZWYuYmdQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcHMgPSByZWYuc3RlcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXR0ciQkMSA9IHByb3AgPT09ICdiZ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBkaW1bYXR0ciQkMV0gLSBkaW1FbFthdHRyJCQxXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZ1Bvcy5tYXRjaCgvJSR8MHB4LykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGFuIDwgZGlmZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpbUVsW2F0dHIkJDFdID0gZGltW2F0dHIkJDFdICsgZGlmZiAtIHNwYW47XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNwYW4gPiBkaWZmKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmdQb3NGbG9hdCA9IHBhcnNlRmxvYXQoYmdQb3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJnUG9zRmxvYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByb3BzW3Byb3BdLnN0ZXBzID0gc3RlcHMubWFwKGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiBzdGVwIC0gKHNwYW4gLSBkaWZmKSAvICgxMDAgLyBiZ1Bvc0Zsb2F0KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkaW0gPSBEaW1lbnNpb25zLmNvdmVyKGltYWdlLCBkaW1FbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFNpemU6ICgoZGltLndpZHRoKSArIFwicHggXCIgKyAoZGltLmhlaWdodCkgKyBcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ25vLXJlcGVhdCdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICBlYWNoKHRoaXMuZ2V0Q3NzKDApLCBmdW5jdGlvbiAoXywgcHJvcCkgeyByZXR1cm4gY3NzKHRoaXMkMS4kZWwsIHByb3AsICcnKTsgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRDc3M6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wcztcbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKGNzcyQkMSwgcHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBwcm9wc1twcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcmVmLnN0ZXBzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdW5pdCA9IHJlZi51bml0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVmLnBvcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUoc3RlcHMsIHBlcmNlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm1zXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gWyd4JywgJ3knXS5tYXAoZnVuY3Rpb24gKGRpcikgeyByZXR1cm4gcHJvcCA9PT0gZGlyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdmFsdWUgKyB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHNbZGlyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRWYWx1ZShwcm9wc1tkaXJdLnN0ZXBzLCBwZXJjZW50KSArIHByb3BzW2Rpcl0udW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYkMVswXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSByZWYkMVsxXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBjc3MkJDEudHJhbnNmb3JtICs9IFwiIHRyYW5zbGF0ZTNkKFwiICsgeCArIFwiLCBcIiArIHkgKyBcIiwgMClcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JvdGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLnRyYW5zZm9ybSArPSBcIiByb3RhdGUoXCIgKyB2YWx1ZSArIFwiZGVnKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2NhbGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS50cmFuc2Zvcm0gKz0gXCIgc2NhbGUoXCIgKyB2YWx1ZSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBiZyBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxWyhcImJhY2tncm91bmQtcG9zaXRpb24tXCIgKyAocHJvcFsyXSkpXSA9IFwiY2FsYyhcIiArIHBvcyArIFwiICsgXCIgKyAodmFsdWUgKyB1bml0KSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFja2dyb3VuZENvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvcmRlckNvbG9yJzpcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYkMiA9IGdldFN0ZXAoc3RlcHMsIHBlcmNlbnQpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSByZWYkMlswXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVuZCA9IHJlZiQyWzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IHJlZiQyWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxW3Byb3BdID0gXCJyZ2JhKFwiICsgKHN0YXJ0Lm1hcChmdW5jdGlvbiAodmFsdWUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKyBwICogKGVuZFtpXSAtIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSAzID8gdG9GbG9hdCh2YWx1ZSkgOiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcsJykpICsgXCIpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENTUyBGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JsdXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgYmx1cihcIiArIHZhbHVlICsgXCJweClcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2h1ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBodWUtcm90YXRlKFwiICsgdmFsdWUgKyBcImRlZylcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZvcGFjaXR5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIG9wYWNpdHkoXCIgKyB2YWx1ZSArIFwiJSlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyYXlzY2FsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbnZlcnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2F0dXJhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VwaWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgXCIgKyBwcm9wICsgXCIoXCIgKyB2YWx1ZSArIFwiJSlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDFbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3MkJDE7XG5cbiAgICAgICAgICAgICAgICB9LCB7dHJhbnNmb3JtOiAnJywgZmlsdGVyOiAnJ30pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29sb3IoZWwsIGNvbG9yKSB7XG4gICAgICAgIHJldHVybiBjc3MoY3NzKGVsLCAnY29sb3InLCBjb2xvciksICdjb2xvcicpLnNwbGl0KC9bKCksXS9nKS5zbGljZSgxLCAtMSkuY29uY2F0KDEpLnNsaWNlKDAsIDQpLm1hcChmdW5jdGlvbiAobikgeyByZXR1cm4gdG9GbG9hdChuKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U3RlcChzdGVwcywgcGVyY2VudCkge1xuICAgICAgICB2YXIgY291bnQgPSBzdGVwcy5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgaW5kZXgkJDEgPSBNYXRoLm1pbihNYXRoLmZsb29yKGNvdW50ICogcGVyY2VudCksIGNvdW50IC0gMSk7XG4gICAgICAgIHZhciBzdGVwID0gc3RlcHMuc2xpY2UoaW5kZXgkJDEsIGluZGV4JCQxICsgMik7XG5cbiAgICAgICAgc3RlcC5wdXNoKHBlcmNlbnQgPT09IDEgPyAxIDogcGVyY2VudCAlICgxIC8gY291bnQpICogY291bnQpO1xuXG4gICAgICAgIHJldHVybiBzdGVwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFZhbHVlKHN0ZXBzLCBwZXJjZW50KSB7XG4gICAgICAgIHZhciByZWYgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTtcbiAgICAgICAgdmFyIHN0YXJ0ID0gcmVmWzBdO1xuICAgICAgICB2YXIgZW5kID0gcmVmWzFdO1xuICAgICAgICB2YXIgcCA9IHJlZlsyXTtcbiAgICAgICAgcmV0dXJuIChpc051bWJlcihzdGFydClcbiAgICAgICAgICAgICAgICA/IHN0YXJ0ICsgTWF0aC5hYnMoc3RhcnQgLSBlbmQpICogcCAqIChzdGFydCA8IGVuZCA/IDEgOiAtMSlcbiAgICAgICAgICAgICAgICA6ICtlbmRcbiAgICAgICAgKS50b0ZpeGVkKDIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvdmVycyhlbCkge1xuICAgICAgICB2YXIgcmVmID0gZWwuc3R5bGU7XG4gICAgICAgIHZhciBiYWNrZ3JvdW5kU2l6ZSA9IHJlZi5iYWNrZ3JvdW5kU2l6ZTtcbiAgICAgICAgdmFyIGNvdmVycyA9IGNzcyhjc3MoZWwsICdiYWNrZ3JvdW5kU2l6ZScsICcnKSwgJ2JhY2tncm91bmRTaXplJykgPT09ICdjb3Zlcic7XG4gICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRTaXplID0gYmFja2dyb3VuZFNpemU7XG4gICAgICAgIHJldHVybiBjb3ZlcnM7XG4gICAgfVxuXG4gICAgdmFyIFBhcmFsbGF4JDEgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUGFyYWxsYXhdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IFN0cmluZyxcbiAgICAgICAgICAgIHZpZXdwb3J0OiBOdW1iZXIsXG4gICAgICAgICAgICBlYXNpbmc6IE51bWJlcixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgdmlld3BvcnQ6IDEsXG4gICAgICAgICAgICBlYXNpbmc6IDEsXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAmJiBxdWVyeSh0YXJnZXQsICRlbCkgfHwgJGVsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZi5wZXJjZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2OiBwZXJjZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogZWFzZSQxKHNjcm9sbGVkT3Zlcih0aGlzLnRhcmdldCkgLyAodGhpcy52aWV3cG9ydCB8fCAxKSwgdGhpcy5lYXNpbmcpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYsIHJlZiQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gcmVmLnByZXY7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJjZW50ID0gcmVmLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSByZWYuYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZiQxLnR5cGU7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSAhPT0gJ3Njcm9sbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJldiAhPT0gcGVyY2VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyhwZXJjZW50KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZWFzZSQxKHBlcmNlbnQsIGVhc2luZykge1xuICAgICAgICByZXR1cm4gY2xhbXAocGVyY2VudCAqICgxIC0gKGVhc2luZyAtIGVhc2luZyAqIHBlcmNlbnQpKSk7XG4gICAgfVxuXG4gICAgdmFyIFNsaWRlclJlYWN0aXZlID0ge1xuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoIHx8IHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IHRoaXMuZ2V0VmFsaWRJbmRleCgpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zbGlkZXMsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhpbmRleCQkMSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBUcmFuc2l0aW9uZXIkMSAocHJldiwgbmV4dCwgZGlyLCByZWYpIHtcbiAgICAgICAgdmFyIGNlbnRlciA9IHJlZi5jZW50ZXI7XG4gICAgICAgIHZhciBlYXNpbmcgPSByZWYuZWFzaW5nO1xuICAgICAgICB2YXIgbGlzdCA9IHJlZi5saXN0O1xuXG5cbiAgICAgICAgdmFyIGRlZmVycmVkID0gbmV3IERlZmVycmVkKCk7XG5cbiAgICAgICAgdmFyIGZyb20gPSBwcmV2XG4gICAgICAgICAgICA/IGdldExlZnQocHJldiwgbGlzdCwgY2VudGVyKVxuICAgICAgICAgICAgOiBnZXRMZWZ0KG5leHQsIGxpc3QsIGNlbnRlcikgKyBuZXh0Lm9mZnNldFdpZHRoICogZGlyO1xuICAgICAgICB2YXIgdG8gPSBuZXh0XG4gICAgICAgICAgICA/IGdldExlZnQobmV4dCwgbGlzdCwgY2VudGVyKVxuICAgICAgICAgICAgOiBmcm9tICsgcHJldi5vZmZzZXRXaWR0aCAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgcmV0dXJuIHtcblxuICAgICAgICAgICAgZGlyOiBkaXIsXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50LCBsaW5lYXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSAwO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgdGltaW5nID0gbGluZWFyID8gJ2xpbmVhcicgOiBlYXNpbmc7XG4gICAgICAgICAgICAgICAgZHVyYXRpb24gLT0gTWF0aC5yb3VuZChkdXJhdGlvbiAqIGNsYW1wKHBlcmNlbnQsIC0xLCAxKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZShwZXJjZW50KTtcblxuICAgICAgICAgICAgICAgIHByZXYgJiYgdGhpcy51cGRhdGVUcmFuc2xhdGVzKCk7XG4gICAgICAgICAgICAgICAgcGVyY2VudCA9IHByZXYgPyBwZXJjZW50IDogY2xhbXAocGVyY2VudCwgMCwgMSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKCksICdpdGVtaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1Jbih0cnVlKSwgJ2l0ZW1vdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgIC5zdGFydChsaXN0LCB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLXRvICogKGlzUnRsID8gLTEgOiAxKSwgJ3B4Jyl9LCBkdXJhdGlvbiwgdGltaW5nKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihkZWZlcnJlZC5yZXNvbHZlLCBub29wKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbi5zdG9wKGxpc3QpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChsaXN0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjc3MobGlzdCwgJ3RyYW5zZm9ybScsICcnKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZvcndhcmQ6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gdGhpcy5wZXJjZW50KCk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChsaXN0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93KGR1cmF0aW9uLCBwZXJjZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gdGhpcy5nZXREaXN0YW5jZSgpICogZGlyICogKGlzUnRsID8gLTEgOiAxKTtcblxuICAgICAgICAgICAgICAgIGNzcyhsaXN0LCAndHJhbnNmb3JtJywgdHJhbnNsYXRlKGNsYW1wKFxuICAgICAgICAgICAgICAgICAgICAtdG8gKyAoZGlzdGFuY2UgLSBkaXN0YW5jZSAqIHBlcmNlbnQpLFxuICAgICAgICAgICAgICAgICAgICAtZ2V0V2lkdGgobGlzdCksXG4gICAgICAgICAgICAgICAgICAgIGxpc3Qub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgICAgICApICogKGlzUnRsID8gLTEgOiAxKSwgJ3B4JykpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUcmFuc2xhdGVzKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICBwZXJjZW50ID0gY2xhbXAocGVyY2VudCwgLTEsIDEpO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4oKSwgJ2l0ZW10cmFuc2xhdGVpbicsIHtwZXJjZW50OiBwZXJjZW50LCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4odHJ1ZSksICdpdGVtdHJhbnNsYXRlb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKChjc3MobGlzdCwgJ3RyYW5zZm9ybScpLnNwbGl0KCcsJylbNF0gKiAoaXNSdGwgPyAtMSA6IDEpICsgZnJvbSkgLyAodG8gLSBmcm9tKSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXREaXN0YW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRvIC0gZnJvbSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRJdGVtSW46IGZ1bmN0aW9uKG91dCkge1xuICAgICAgICAgICAgICAgIGlmICggb3V0ID09PSB2b2lkIDAgKSBvdXQgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZXMgPSB0aGlzLmdldEFjdGl2ZXMoKTtcbiAgICAgICAgICAgICAgICB2YXIgYWxsID0gc29ydEJ5KHNsaWRlcyhsaXN0KSwgJ29mZnNldExlZnQnKTtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGluZGV4KGFsbCwgYWN0aXZlc1tkaXIgKiAob3V0ID8gLTEgOiAxKSA+IDAgPyBhY3RpdmVzLmxlbmd0aCAtIDEgOiAwXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gfmkgJiYgYWxsW2kgKyAocHJldiAmJiAhb3V0ID8gZGlyIDogMCldO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRBY3RpdmVzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gZ2V0TGVmdChwcmV2IHx8IG5leHQsIGxpc3QsIGNlbnRlcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc29ydEJ5KHNsaWRlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZUxlZnQgPSBnZXRFbExlZnQoc2xpZGUsIGxpc3QpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2xpZGVMZWZ0ID49IGxlZnQgJiYgc2xpZGVMZWZ0ICsgc2xpZGUub2Zmc2V0V2lkdGggPD0gbGlzdC5vZmZzZXRXaWR0aCArIGxlZnQ7XG4gICAgICAgICAgICAgICAgfSksICdvZmZzZXRMZWZ0Jyk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHVwZGF0ZVRyYW5zbGF0ZXM6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZXMgPSB0aGlzLmdldEFjdGl2ZXMoKTtcblxuICAgICAgICAgICAgICAgIHNsaWRlcyhsaXN0KS5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXNBY3RpdmUgPSBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHNsaWRlLCAoXCJpdGVtdHJhbnNsYXRlXCIgKyAoaXNBY3RpdmUgPyAnaW4nIDogJ291dCcpKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogaXNBY3RpdmUgPyAxIDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogc2xpZGUub2Zmc2V0TGVmdCA8PSBuZXh0Lm9mZnNldExlZnQgPyAxIDogLTFcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldExlZnQoZWwsIGxpc3QsIGNlbnRlcikge1xuXG4gICAgICAgIHZhciBsZWZ0ID0gZ2V0RWxMZWZ0KGVsLCBsaXN0KTtcblxuICAgICAgICByZXR1cm4gY2VudGVyXG4gICAgICAgICAgICA/IGxlZnQgLSBjZW50ZXJFbChlbCwgbGlzdClcbiAgICAgICAgICAgIDogTWF0aC5taW4obGVmdCwgZ2V0TWF4KGxpc3QpKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1heChsaXN0KSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCgwLCBnZXRXaWR0aChsaXN0KSAtIGxpc3Qub2Zmc2V0V2lkdGgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdpZHRoKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIHNsaWRlcyhsaXN0KS5yZWR1Y2UoZnVuY3Rpb24gKHJpZ2h0LCBlbCkgeyByZXR1cm4gZWwub2Zmc2V0V2lkdGggKyByaWdodDsgfSwgMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TWF4V2lkdGgobGlzdCkge1xuICAgICAgICByZXR1cm4gc2xpZGVzKGxpc3QpLnJlZHVjZShmdW5jdGlvbiAocmlnaHQsIGVsKSB7IHJldHVybiBNYXRoLm1heChyaWdodCwgZWwub2Zmc2V0V2lkdGgpOyB9LCAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjZW50ZXJFbChlbCwgbGlzdCkge1xuICAgICAgICByZXR1cm4gbGlzdC5vZmZzZXRXaWR0aCAvIDIgLSBlbC5vZmZzZXRXaWR0aCAvIDI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RWxMZWZ0KGVsLCBsaXN0KSB7XG4gICAgICAgIHJldHVybiAoZWwub2Zmc2V0TGVmdCArIChpc1J0bCA/IGVsLm9mZnNldFdpZHRoIC0gbGlzdC5vZmZzZXRXaWR0aCA6IDApKSAqIChpc1J0bCA/IC0xIDogMSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZSQxKGVsLCB0eXBlLCBkYXRhJCQxKSB7XG4gICAgICAgIHRyaWdnZXIoZWwsIGNyZWF0ZUV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSwgZGF0YSQkMSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNsaWRlcyhsaXN0KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGxpc3QuY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXIkMSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgU2xpZGVyLCBTbGlkZXJSZWFjdGl2ZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNlbnRlcjogQm9vbGVhbixcbiAgICAgICAgICAgIHNldHM6IEJvb2xlYW4sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2VudGVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNldHM6IGZhbHNlLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1zbGlkZXItaXRlbScsXG4gICAgICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlci1pdGVtcycsXG4gICAgICAgICAgICBzZWxOYXY6ICcudWstc2xpZGVyLW5hdicsXG4gICAgICAgICAgICBjbHNDb250YWluZXI6ICd1ay1zbGlkZXItY29udGFpbmVyJyxcbiAgICAgICAgICAgIFRyYW5zaXRpb25lcjogVHJhbnNpdGlvbmVyJDFcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBhdmdXaWR0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFdpZHRoKHRoaXMubGlzdCkgLyB0aGlzLmxlbmd0aDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZpbml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpbml0ZSA9IHJlZi5maW5pdGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmluaXRlIHx8IGdldFdpZHRoKHRoaXMubGlzdCkgPCB0aGlzLmxpc3Qub2Zmc2V0V2lkdGggKyBnZXRNYXhXaWR0aCh0aGlzLmxpc3QpICsgdGhpcy5jZW50ZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtYXhJbmRleDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5maW5pdGUgfHwgdGhpcy5jZW50ZXIgJiYgIXRoaXMuc2V0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRzW3RoaXMuc2V0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5zbGlkZXMsICdvcmRlcicsICcnKTtcblxuICAgICAgICAgICAgICAgIHZhciBtYXggPSBnZXRNYXgodGhpcy5saXN0KTtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0RWxMZWZ0KHRoaXMkMS5saXN0LmNoaWxkcmVuW2ldLCB0aGlzJDEubGlzdCkgPCBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihpICsgMSwgdGhpcyQxLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRzOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgc2V0cyA9IHJlZi5zZXRzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSB0aGlzLmxpc3Qub2Zmc2V0V2lkdGggLyAodGhpcy5jZW50ZXIgPyAyIDogMSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IDA7XG4gICAgICAgICAgICAgICAgdmFyIGxlZnRDZW50ZXIgPSB3aWR0aCQkMTtcbiAgICAgICAgICAgICAgICB2YXIgc2xpZGVMZWZ0ID0gMDtcblxuICAgICAgICAgICAgICAgIHNldHMgPSBzZXRzICYmIHRoaXMuc2xpZGVzLnJlZHVjZShmdW5jdGlvbiAoc2V0cywgc2xpZGUsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHNsaWRlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlV2lkdGggPSByZWYud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVJpZ2h0ID0gc2xpZGVMZWZ0ICsgc2xpZGVXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2xpZGVSaWdodCA+IGxlZnQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEuY2VudGVyICYmIGkgPiB0aGlzJDEubWF4SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcyQxLm1heEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHNldHMsIGkpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY21wID0gdGhpcyQxLnNsaWRlc1tpICsgMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5jZW50ZXIgJiYgY21wICYmIHNsaWRlV2lkdGggPCBsZWZ0Q2VudGVyIC0gb2Zmc2V0KGNtcCkud2lkdGggLyAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRDZW50ZXIgLT0gc2xpZGVXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Q2VudGVyID0gd2lkdGgkJDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHNsaWRlTGVmdCArIHdpZHRoJCQxICsgKHRoaXMkMS5jZW50ZXIgPyBzbGlkZVdpZHRoIC8gMiA6IDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc2xpZGVMZWZ0ICs9IHNsaWRlV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHM7XG5cbiAgICAgICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0cyAmJiBzZXRzLmxlbmd0aCAmJiBzZXRzO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiB0aGlzLmNlbnRlcixcbiAgICAgICAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNDb250YWluZXIsICEkKChcIi5cIiArICh0aGlzLmNsc0NvbnRhaW5lcikpLCB0aGlzLiRlbCkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICQkKChcIltcIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXSxbZGF0YS1cIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXVwiKSwgdGhpcy4kZWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IGRhdGEoZWwsIHRoaXMkMS5hdHRySXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5tYXhJbmRleCAmJiB0b2dnbGVDbGFzcyhlbCwgJ3VrLWhpZGRlbicsIGlzTnVtZXJpYyhpbmRleCQkMSkgJiYgKHRoaXMkMS5zZXRzICYmICFpbmNsdWRlcyh0aGlzJDEuc2V0cywgdG9GbG9hdChpbmRleCQkMSkpIHx8IGluZGV4JCQxID4gdGhpcyQxLm1heEluZGV4KSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgYmVmb3JlaXRlbXNob3c6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nICYmIHRoaXMuc2V0cyAmJiB0aGlzLnN0YWNrLmxlbmd0aCA8IDIgJiYgIWluY2x1ZGVzKHRoaXMuc2V0cywgdGhpcy5pbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMuZ2V0VmFsaWRJbmRleCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBkaWZmID0gTWF0aC5hYnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLSB0aGlzLnByZXZJbmRleFxuICAgICAgICAgICAgICAgICAgICArICh0aGlzLmRpciA+IDAgJiYgdGhpcy5pbmRleCA8IHRoaXMucHJldkluZGV4IHx8IHRoaXMuZGlyIDwgMCAmJiB0aGlzLmluZGV4ID4gdGhpcy5wcmV2SW5kZXggPyAodGhpcy5tYXhJbmRleCArIDEpICogdGhpcy5kaXIgOiAwKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZ2dpbmcgJiYgZGlmZiA+IDEpIHtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmY7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnN0YWNrLnNwbGljZSgxLCAwLCB0aGlzJDEuZGlyID4gMCA/ICduZXh0JyA6ICdwcmV2aW91cycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5kdXJhdGlvbiA9IHNwZWVkVXAodGhpcy5hdmdXaWR0aCAvIHRoaXMudmVsb2NpdHkpXG4gICAgICAgICAgICAgICAgICAgICogKChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyIDwgMCB8fCAhdGhpcy5zbGlkZXNbdGhpcy5wcmV2SW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNsaWRlc1t0aGlzLmluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zbGlkZXNbdGhpcy5wcmV2SW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICkub2Zmc2V0V2lkdGggLyB0aGlzLmF2Z1dpZHRoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlcigpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgIWlzVW5kZWZpbmVkKHRoaXMucHJldkluZGV4KSAmJiBhZGRDbGFzcyh0aGlzLl9nZXRUcmFuc2l0aW9uZXIoKS5nZXRJdGVtSW4oKSwgdGhpcy5jbHNBY3RpdmUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHRoaXMuaW5kZXgpLmdldEFjdGl2ZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgeyByZXR1cm4gdG9nZ2xlQ2xhc3Moc2xpZGUsIHRoaXMkMS5jbHNBY3RpdmUsIGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKSk7IH0pO1xuICAgICAgICAgICAgICAgICghdGhpcy5zZXRzIHx8IGluY2x1ZGVzKHRoaXMuc2V0cywgdG9GbG9hdCh0aGlzLmluZGV4KSkpICYmIHRoaXMuc2xpZGVzLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlKSB7IHJldHVybiB0b2dnbGVDbGFzcyhzbGlkZSwgdGhpcyQxLmNsc0FjdGl2YXRlZCwgaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHJlb3JkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5zbGlkZXMsICdvcmRlcicsICcnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbml0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gdGhpcy5kaXIgPiAwICYmIHRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XSA/IHRoaXMucHJldkluZGV4IDogdGhpcy5pbmRleDtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlLCBpKSB7IHJldHVybiBjc3Moc2xpZGUsICdvcmRlcicsIHRoaXMkMS5kaXIgPiAwICYmIGkgPCBpbmRleCQkMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMkMS5kaXIgPCAwICYmIGkgPj0gdGhpcyQxLmluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgKTsgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuc2xpZGVzW2luZGV4JCQxXTtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSB0aGlzLmxpc3Qub2Zmc2V0V2lkdGggLyAyIC0gbmV4dC5vZmZzZXRXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgdmFyIGogPSAwO1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoJCQxID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVJbmRleCA9IHRoaXMkMS5nZXRJbmRleCgtLWogKyBpbmRleCQkMSwgaW5kZXgkJDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGUgPSB0aGlzJDEuc2xpZGVzW3NsaWRlSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhzbGlkZSwgJ29yZGVyJywgc2xpZGVJbmRleCA+IGluZGV4JCQxID8gLTIgOiAtMSk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxIC09IHNsaWRlLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0VmFsaWRJbmRleDogZnVuY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXZJbmRleCA9PT0gdm9pZCAwICkgcHJldkluZGV4ID0gdGhpcy5wcmV2SW5kZXg7XG5cblxuICAgICAgICAgICAgICAgIGluZGV4JCQxID0gdGhpcy5nZXRJbmRleChpbmRleCQkMSwgcHJldkluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJldjtcblxuICAgICAgICAgICAgICAgIGRvIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModGhpcyQxLnNldHMsIGluZGV4JCQxKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4JCQxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldiA9IGluZGV4JCQxO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCQkMSA9IHRoaXMkMS5nZXRJbmRleChpbmRleCQkMSArIHRoaXMkMS5kaXIsIHByZXZJbmRleCk7XG5cbiAgICAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCQkMSAhPT0gcHJldik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgkJDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXJQYXJhbGxheCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtQYXJhbGxheF0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgc2VsSXRlbTogJyFsaSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpdGVtOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxJdGVtID0gcmVmLnNlbEl0ZW07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoc2VsSXRlbSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3duJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKC41KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1pbiBpdGVtb3V0JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmX2RldGFpbCA9IHJlZi5kZXRhaWw7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJjZW50ID0gcmVmX2RldGFpbC5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZHVyYXRpb24gPSByZWZfZGV0YWlsLmR1cmF0aW9uO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGltaW5nID0gcmVmX2RldGFpbC50aW1pbmc7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSByZWZfZGV0YWlsLmRpcjtcblxuXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyhnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkpKTtcblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHRoaXMuJGVsLCB0aGlzLmdldENzcyhpc0luKHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IC41XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRpciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgKSwgZHVyYXRpb24sIHRpbWluZykuY2F0Y2gobm9vcCk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3RyYW5zaXRpb25jYW5jZWxlZCB0cmFuc2l0aW9uZW5kJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW10cmFuc2xhdGVpbiBpdGVtdHJhbnNsYXRlb3V0JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmX2RldGFpbCA9IHJlZi5kZXRhaWw7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJjZW50ID0gcmVmX2RldGFpbC5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmX2RldGFpbC5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKGdldEN1cnJlbnQodHlwZSwgZGlyLCBwZXJjZW50KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNJbih0eXBlKSB7XG4gICAgICAgIHJldHVybiBlbmRzV2l0aCh0eXBlLCAnaW4nKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkge1xuXG4gICAgICAgIHBlcmNlbnQgLz0gMjtcblxuICAgICAgICByZXR1cm4gIWlzSW4odHlwZSlcbiAgICAgICAgICAgID8gZGlyIDwgMFxuICAgICAgICAgICAgICAgID8gcGVyY2VudFxuICAgICAgICAgICAgICAgIDogMSAtIHBlcmNlbnRcbiAgICAgICAgICAgIDogZGlyIDwgMFxuICAgICAgICAgICAgICAgID8gMSAtIHBlcmNlbnRcbiAgICAgICAgICAgICAgICA6IHBlcmNlbnQ7XG4gICAgfVxuXG4gICAgdmFyIEFuaW1hdGlvbnMkMiA9IGFzc2lnbih7fSwgQW5pbWF0aW9ucywge1xuXG4gICAgICAgIGZhZGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDAsIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3pJbmRleDogLTF9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHNjYWxlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06IHNjYWxlM2QoMSArIC41KSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3pJbmRleDogLTF9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEgLSBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSArIC41ICogcGVyY2VudCksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBwdWxsOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwKSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAwfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogLTF9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50LCBuZXh0LCBkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IDEgLSB0cmFuc2xhdGVkKG5leHQpXG4gICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlZChjdXJyZW50KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMzAgKiBwZXJjZW50KSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IDB9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLXBlcmNlbnQgKiAxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogLTF9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBwdXNoOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDEwMCksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAtMX0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzApLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IDB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50LCBuZXh0LCBkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyID4gMFxuICAgICAgICAgICAgICAgICAgICA/IDEgLSB0cmFuc2xhdGVkKG5leHQpXG4gICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlZChjdXJyZW50KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUocGVyY2VudCAqIDEwMCksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogLTF9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwICogcGVyY2VudCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDEwMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IDB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICB2YXIgU2xpZGVzaG93JDEgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFNsaWRlc2hvdywgU2xpZGVyUmVhY3RpdmVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICByYXRpbzogU3RyaW5nLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBCb29sZWFuLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBCb29sZWFuLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHJhdGlvOiAnMTY6OScsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstc2xpZGVzaG93LWl0ZW1zJyxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVzaG93LWl0ZW0nLFxuICAgICAgICAgICAgc2VsTmF2OiAnLnVrLXNsaWRlc2hvdy1uYXYnLFxuICAgICAgICAgICAgQW5pbWF0aW9uczogQW5pbWF0aW9ucyQyXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucmF0aW8uc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZlsxXTtcblxuICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IGhlaWdodCQkMSAqIHRoaXMuJGVsLm9mZnNldFdpZHRoIC8gd2lkdGgkJDE7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxID0gTWF0aC5tYXgodGhpcy5taW5IZWlnaHQsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IE1hdGgubWluKHRoaXMubWF4SGVpZ2h0LCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7aGVpZ2h0OiBoZWlnaHQkJDF9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBoZ3QgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMubGlzdCwgTWF0aC5mbG9vcihoZ3QpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBvYmokMTtcblxuICAgIHZhciBTb3J0YWJsZSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgQW5pbWF0ZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGdyb3VwOiBTdHJpbmcsXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IE51bWJlcixcbiAgICAgICAgICAgIGNsc0l0ZW06IFN0cmluZyxcbiAgICAgICAgICAgIGNsc1BsYWNlaG9sZGVyOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNEcmFnOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNEcmFnU3RhdGU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0Jhc2U6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc05vRHJhZzogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRW1wdHk6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0N1c3RvbTogU3RyaW5nLFxuICAgICAgICAgICAgaGFuZGxlOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBncm91cDogZmFsc2UsXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IDUsXG4gICAgICAgICAgICBjbHNJdGVtOiAndWstc29ydGFibGUtaXRlbScsXG4gICAgICAgICAgICBjbHNQbGFjZWhvbGRlcjogJ3VrLXNvcnRhYmxlLXBsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgIGNsc0RyYWc6ICd1ay1zb3J0YWJsZS1kcmFnJyxcbiAgICAgICAgICAgIGNsc0RyYWdTdGF0ZTogJ3VrLWRyYWcnLFxuICAgICAgICAgICAgY2xzQmFzZTogJ3VrLXNvcnRhYmxlJyxcbiAgICAgICAgICAgIGNsc05vRHJhZzogJ3VrLXNvcnRhYmxlLW5vZHJhZycsXG4gICAgICAgICAgICBjbHNFbXB0eTogJ3VrLXNvcnRhYmxlLWVtcHR5JyxcbiAgICAgICAgICAgIGNsc0N1c3RvbTogJycsXG4gICAgICAgICAgICBoYW5kbGU6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgWydpbml0JywgJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIGZuID0gdGhpcyQxW2tleV07XG4gICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHJlZi54O1xuICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZi55O1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zID0ge3g6IHgsIHk6IHl9O1xuXG4gICAgICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6ICggb2JqJDEgPSB7fSwgb2JqJDFbcG9pbnRlckRvd25dID0gJ2luaXQnLCBvYmokMSApLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbHNFbXB0eSkge1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNFbXB0eSwgIXRoaXMuJGVsLmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9mZnNldCh0aGlzLmRyYWcsIHt0b3A6IHRoaXMucG9zLnkgKyB0aGlzLm9yaWdpbi50b3AsIGxlZnQ6IHRoaXMucG9zLnggKyB0aGlzLm9yaWdpbi5sZWZ0fSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRoaXMuZHJhZyk7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgICAgICAgICAgdmFyIGJvdHRvbSA9IHRvcCArIHRoaXMuZHJhZy5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHNjcm9sbDtcblxuICAgICAgICAgICAgICAgIGlmICh0b3AgPiAwICYmIHRvcCA8IHRoaXMuc2Nyb2xsWSkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB0aGlzLnNjcm9sbFkgLSA1O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYm90dG9tIDwgaGVpZ2h0KGRvY3VtZW50KSAmJiBib3R0b20gPiBoZWlnaHQod2luZG93KSArIHRoaXMuc2Nyb2xsWSkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB0aGlzLnNjcm9sbFkgKyA1O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNjcm9sbCAmJiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5zY3JvbGwod2luZG93LnBhZ2VYT2Zmc2V0LCBzY3JvbGwpOyB9LCA1KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciBidXR0b24gPSBlLmJ1dHRvbjtcbiAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZDtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdG9Ob2Rlcyh0aGlzLiRlbC5jaGlsZHJlbikuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gd2l0aGluKHRhcmdldCwgZWwpOyB9KTtcbiAgICAgICAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSByZWZbMF07XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgIHx8IGlzSW5wdXQoZS50YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuaGFuZGxlICYmICF3aXRoaW4odGFyZ2V0LCB0aGlzLmhhbmRsZSlcbiAgICAgICAgICAgICAgICAgICAgfHwgYnV0dG9uID4gMFxuICAgICAgICAgICAgICAgICAgICB8fCB3aXRoaW4odGFyZ2V0LCAoXCIuXCIgKyAodGhpcy5jbHNOb0RyYWcpKSlcbiAgICAgICAgICAgICAgICAgICAgfHwgZGVmYXVsdFByZXZlbnRlZFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkID0gW3RoaXNdO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IGFzc2lnbih7dGFyZ2V0OiB0YXJnZXQsIGluZGV4OiBpbmRleChwbGFjZWhvbGRlcil9LCB0aGlzLnBvcyk7XG5cbiAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7XG4gICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQpO1xuICAgICAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWcgPSBhcHBlbmQodGhpcy4kY29udGFpbmVyLCB0aGlzLnBsYWNlaG9sZGVyLm91dGVySFRNTC5yZXBsYWNlKC9ePGxpL2ksICc8ZGl2JykucmVwbGFjZSgvbGk+JC9pLCAnZGl2PicpKTtcblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLmRyYWcsIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5wbGFjZWhvbGRlci5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnBsYWNlaG9sZGVyLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgIH0sIGNzcyh0aGlzLnBsYWNlaG9sZGVyLCBbJ3BhZGRpbmdMZWZ0JywgJ3BhZGRpbmdSaWdodCcsICdwYWRkaW5nVG9wJywgJ3BhZGRpbmdCb3R0b20nXSkpKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMuZHJhZywgJ3VrLW5vLWJvb3QnLCAnJyk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5kcmFnLCB0aGlzLmNsc0RyYWcsIHRoaXMuY2xzQ3VzdG9tKTtcblxuICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmRyYWcuZmlyc3RFbGVtZW50Q2hpbGQsIGhlaWdodCh0aGlzLnBsYWNlaG9sZGVyLmZpcnN0RWxlbWVudENoaWxkKSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gcmVmLmxlZnQ7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgICAgICAgICAgYXNzaWduKHRoaXMub3JpZ2luLCB7bGVmdDogbGVmdCAtIHRoaXMucG9zLngsIHRvcDogdG9wIC0gdGhpcy5wb3MueX0pO1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5wbGFjZWhvbGRlciwgdGhpcy5jbHNQbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwuY2hpbGRyZW4sIHRoaXMuY2xzSXRlbSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc0RyYWdTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnc3RhcnQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlKGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5wb3MueCAtIHRoaXMub3JpZ2luLngpID4gdGhpcy50aHJlc2hvbGQgfHwgTWF0aC5hYnModGhpcy5wb3MueSAtIHRoaXMub3JpZ2luLnkpID4gdGhpcy50aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudHlwZSA9PT0gJ21vdXNlbW92ZScgPyBlLnRhcmdldCA6IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodGhpcy5wb3MueCAtIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCwgdGhpcy5wb3MueSAtIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKTtcblxuICAgICAgICAgICAgICAgIHZhciBzb3J0YWJsZSA9IHRoaXMuZ2V0U29ydGFibGUodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXMgPSB0aGlzLmdldFNvcnRhYmxlKHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIHZhciBtb3ZlID0gc29ydGFibGUgIT09IHByZXZpb3VzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzb3J0YWJsZSB8fCB3aXRoaW4odGFyZ2V0LCB0aGlzLnBsYWNlaG9sZGVyKSB8fCBtb3ZlICYmICghc29ydGFibGUuZ3JvdXAgfHwgc29ydGFibGUuZ3JvdXAgIT09IHByZXZpb3VzLmdyb3VwKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gc29ydGFibGUuJGVsID09PSB0YXJnZXQucGFyZW50Tm9kZSAmJiB0YXJnZXQgfHwgdG9Ob2Rlcyhzb3J0YWJsZS4kZWwuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gd2l0aGluKHRhcmdldCwgZWxlbWVudCk7IH0pWzBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1vdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMucmVtb3ZlKHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc29ydGFibGUuaW5zZXJ0KHRoaXMucGxhY2Vob2xkZXIsIHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHRoaXMudG91Y2hlZCwgc29ydGFibGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZC5wdXNoKHNvcnRhYmxlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNjcm9sbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsICE9PSB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MueSArPSBzY3JvbGwgLSB0aGlzLnNjcm9sbFk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsWSA9IHNjcm9sbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlKTtcbiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQpO1xuICAgICAgICAgICAgICAgIG9mZih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnNjcm9sbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnR5cGUgIT09ICdtb3VzZXVwJyAmJiB3aXRoaW4oZS50YXJnZXQsICdhW2hyZWZdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmXScpLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcHJldmVudENsaWNrKCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgc29ydGFibGUgPSB0aGlzLmdldFNvcnRhYmxlKHRoaXMucGxhY2Vob2xkZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMgPT09IHNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9yaWdpbi5pbmRleCAhPT0gaW5kZXgodGhpcy5wbGFjZWhvbGRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdtb3ZlZCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHNvcnRhYmxlLiRlbCwgJ2FkZGVkJywgW3NvcnRhYmxlLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdyZW1vdmVkJywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnc3RvcCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG5cbiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy5kcmFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWcgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNsYXNzZXMgPSB0aGlzLnRvdWNoZWQubWFwKGZ1bmN0aW9uIChzb3J0YWJsZSkgeyByZXR1cm4gKChzb3J0YWJsZS5jbHNQbGFjZWhvbGRlcikgKyBcIiBcIiArIChzb3J0YWJsZS5jbHNJdGVtKSk7IH0pLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQuZm9yRWFjaChmdW5jdGlvbiAoc29ydGFibGUpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKHNvcnRhYmxlLiRlbC5jaGlsZHJlbiwgY2xhc3Nlcyk7IH0pO1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc0RyYWdTdGF0ZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluc2VydDogZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLmNoaWxkcmVuLCB0aGlzLmNsc0l0ZW0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGluc2VydCA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2l0aGluKGVsZW1lbnQsIHRoaXMkMS4kZWwpIHx8IGlzUHJlZGVjZXNzb3IoZWxlbWVudCwgdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSh0YXJnZXQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0YXJnZXQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcyQxLiRlbCwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRlKGluc2VydCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgIGlmICghd2l0aGluKGVsZW1lbnQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmUoZWxlbWVudCk7IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFNvcnRhYmxlOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgKHRoaXMuJGdldENvbXBvbmVudChlbGVtZW50LCAnc29ydGFibGUnKSB8fCB0aGlzLmdldFNvcnRhYmxlKGVsZW1lbnQucGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc1ByZWRlY2Vzc29yKGVsZW1lbnQsIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlID09PSB0YXJnZXQucGFyZW50Tm9kZSAmJiBpbmRleChlbGVtZW50KSA+IGluZGV4KHRhcmdldCk7XG4gICAgfVxuXG4gICAgdmFyIG9iaiQyO1xuXG4gICAgdmFyIGFjdGl2ZXMgPSBbXTtcblxuICAgIHZhciBUb29sdGlwID0ge1xuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIGFyZ3M6ICd0aXRsZScsXG5cbiAgICAgICAgbWl4aW5zOiBbQ29udGFpbmVyLCBUb2dnbGFibGUsIFBvc2l0aW9uXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGVsYXk6IE51bWJlcixcbiAgICAgICAgICAgIHRpdGxlOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBwb3M6ICd0b3AnLFxuICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgICBhbmltYXRpb246IFsndWstYW5pbWF0aW9uLXNjYWxlLXVwJ10sXG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc1BvczogJ3VrLXRvb2x0aXAnXG4gICAgICAgIH0sXG5cbiAgICAgICAgYmVmb3JlQ29ubmVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLl9oYXNUaXRsZSA9IGhhc0F0dHIodGhpcy4kZWwsICd0aXRsZScpO1xuICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwge3RpdGxlOiAnJywgJ2FyaWEtZXhwYW5kZWQnOiBmYWxzZX0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHt0aXRsZTogdGhpcy5faGFzVGl0bGUgPyB0aGlzLnRpdGxlIDogbnVsbCwgJ2FyaWEtZXhwYW5kZWQnOiBudWxsfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKGFjdGl2ZXMsIHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhY3RpdmVzLmZvckVhY2goZnVuY3Rpb24gKGFjdGl2ZSkgeyByZXR1cm4gYWN0aXZlLmhpZGUoKTsgfSk7XG4gICAgICAgICAgICAgICAgYWN0aXZlcy5wdXNoKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fdW5iaW5kID0gb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChlKSB7IHJldHVybiAhd2l0aGluKGUudGFyZ2V0LCB0aGlzJDEuJGVsKSAmJiB0aGlzJDEuaGlkZSgpOyB9KTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBhcHBlbmQodGhpcy5jb250YWluZXIsIChcIjxkaXYgY2xhc3M9XFxcIlwiICsgKHRoaXMuY2xzUG9zKSArIFwiXFxcIiBhcmlhLWhpZGRlbj48ZGl2IGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1BvcykgKyBcIi1pbm5lclxcXCI+XCIgKyAodGhpcy50aXRsZSkgKyBcIjwvZGl2PjwvZGl2PlwiKSk7XG5cbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCAnYXJpYS1leHBhbmRlZCcsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkF0KHRoaXMudG9vbHRpcCwgdGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSB0aGlzLmdldEF4aXMoKSA9PT0gJ3knID8gKChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSArIFwiLVwiICsgKHRoaXMuYWxpZ24pKSA6ICgodGhpcy5hbGlnbikgKyBcIi1cIiArIChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNob3dUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVFbGVtZW50KHRoaXMkMS50b29sdGlwLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGlkZVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmlzaWJsZSh0aGlzJDEuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSwgMTUwKTtcblxuICAgICAgICAgICAgICAgIH0sIHRoaXMuZGVsYXkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBhY3RpdmVzLmluZGV4T2YodGhpcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIX5pbmRleCQkMSB8fCBtYXRjaGVzKHRoaXMuJGVsLCAnaW5wdXQnKSAmJiB0aGlzLiRlbCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWN0aXZlcy5zcGxpY2UoaW5kZXgkJDEsIDEpO1xuXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaGlkZVRpbWVyKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCAnYXJpYS1leHBhbmRlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50b29sdGlwLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwICYmIHJlbW92ZSh0aGlzLnRvb2x0aXApO1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3VuYmluZCgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6ICggb2JqJDIgPSB7fSwgb2JqJDJbKFwiZm9jdXMgXCIgKyBwb2ludGVyRW50ZXIgKyBcIiBcIiArIHBvaW50ZXJEb3duKV0gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLnR5cGUgIT09IHBvaW50ZXJEb3duIHx8ICFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG9iaiQyLmJsdXIgPSAnaGlkZScsIG9iaiQyW3BvaW50ZXJMZWF2ZV0gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmokMiApXG5cbiAgICB9O1xuXG4gICAgdmFyIFVwbG9hZCA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYWxsb3c6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0RyYWdvdmVyOiBTdHJpbmcsXG4gICAgICAgICAgICBjb25jdXJyZW50OiBOdW1iZXIsXG4gICAgICAgICAgICBtYXhTaXplOiBOdW1iZXIsXG4gICAgICAgICAgICBtZXRob2Q6IFN0cmluZyxcbiAgICAgICAgICAgIG1pbWU6IFN0cmluZyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRNaW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTmFtZTogU3RyaW5nLFxuICAgICAgICAgICAgbXNnSW52YWxpZFNpemU6IFN0cmluZyxcbiAgICAgICAgICAgIG11bHRpcGxlOiBCb29sZWFuLFxuICAgICAgICAgICAgbmFtZTogU3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1zOiBPYmplY3QsXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB1cmw6IFN0cmluZyxcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbGxvdzogZmFsc2UsXG4gICAgICAgICAgICBjbHNEcmFnb3ZlcjogJ3VrLWRyYWdvdmVyJyxcbiAgICAgICAgICAgIGNvbmN1cnJlbnQ6IDEsXG4gICAgICAgICAgICBtYXhTaXplOiAwLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBtaW1lOiBmYWxzZSxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRNaW1lOiAnSW52YWxpZCBGaWxlIFR5cGU6ICVzJyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWROYW1lOiAnSW52YWxpZCBGaWxlIE5hbWU6ICVzJyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRTaXplOiAnSW52YWxpZCBGaWxlIFNpemU6ICVzIEtpbG9ieXRlcyBNYXgnLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgbmFtZTogJ2ZpbGVzW10nLFxuICAgICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgICAgIHR5cGU6ICcnLFxuICAgICAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgICAgIGFib3J0OiBub29wLFxuICAgICAgICAgICAgYmVmb3JlQWxsOiBub29wLFxuICAgICAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBub29wLFxuICAgICAgICAgICAgY29tcGxldGVBbGw6IG5vb3AsXG4gICAgICAgICAgICBlcnJvcjogbm9vcCxcbiAgICAgICAgICAgIGZhaWw6IG5vb3AsXG4gICAgICAgICAgICBsb2FkOiBub29wLFxuICAgICAgICAgICAgbG9hZEVuZDogbm9vcCxcbiAgICAgICAgICAgIGxvYWRTdGFydDogbm9vcCxcbiAgICAgICAgICAgIHByb2dyZXNzOiBub29wXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKGUudGFyZ2V0LCAnaW5wdXRbdHlwZT1cImZpbGVcIl0nKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkKGUudGFyZ2V0LmZpbGVzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnRhcmdldC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJvcDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHN0b3AoZSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjtcblxuICAgICAgICAgICAgICAgIGlmICghdHJhbnNmZXIgfHwgIXRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZCh0cmFuc2Zlci5maWxlcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcmFnZW50ZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJhZ292ZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyYWdsZWF2ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHN0b3AoZSk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB1cGxvYWQ6IGZ1bmN0aW9uKGZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAndXBsb2FkJywgW2ZpbGVzXSk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5tYXhTaXplICYmIHRoaXMkMS5tYXhTaXplICogMTAwMCA8IGZpbGVzW2ldLnNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5mYWlsKHRoaXMkMS5tc2dJbnZhbGlkU2l6ZS5yZXBsYWNlKCclcycsIHRoaXMkMS5tYXhTaXplKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmFsbG93ICYmICFtYXRjaCh0aGlzJDEuYWxsb3csIGZpbGVzW2ldLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZmFpbCh0aGlzJDEubXNnSW52YWxpZE5hbWUucmVwbGFjZSgnJXMnLCB0aGlzJDEuYWxsb3cpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEubWltZSAmJiAhbWF0Y2godGhpcyQxLm1pbWUsIGZpbGVzW2ldLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZmFpbCh0aGlzJDEubXNnSW52YWxpZE1pbWUucmVwbGFjZSgnJXMnLCB0aGlzJDEubWltZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXMgPSBbZmlsZXNbMF1dO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlQWxsKHRoaXMsIGZpbGVzKTtcblxuICAgICAgICAgICAgICAgIHZhciBjaHVua3MgPSBjaHVuayhmaWxlcywgdGhpcy5jb25jdXJyZW50KTtcbiAgICAgICAgICAgICAgICB2YXIgdXBsb2FkID0gZnVuY3Rpb24gKGZpbGVzKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAgICAgICAgICAgICBmaWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7IHJldHVybiBkYXRhJCQxLmFwcGVuZCh0aGlzJDEubmFtZSwgZmlsZSk7IH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzJDEucGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmFwcGVuZChrZXksIHRoaXMkMS5wYXJhbXNba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhamF4KHRoaXMkMS51cmwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEkJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHRoaXMkMS5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IHRoaXMkMS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlU2VuZDogZnVuY3Rpb24gKGVudikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhociA9IGVudi54aHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnVwbG9hZCAmJiBvbih4aHIudXBsb2FkLCAncHJvZ3Jlc3MnLCB0aGlzJDEucHJvZ3Jlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnbG9hZFN0YXJ0JywgJ2xvYWQnLCAnbG9hZEVuZCcsICdhYm9ydCddLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIG9uKHhociwgdHlwZS50b0xvd2VyQ2FzZSgpLCB0aGlzJDFbdHlwZV0pOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5iZWZvcmVTZW5kKGVudik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4aHIpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5jb21wbGV0ZSh4aHIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNodW5rcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkKGNodW5rcy5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY29tcGxldGVBbGwoeGhyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcyQxLmVycm9yKGUubWVzc2FnZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB1cGxvYWQoY2h1bmtzLnNoaWZ0KCkpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1hdGNoKHBhdHRlcm4sIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGgubWF0Y2gobmV3IFJlZ0V4cCgoXCJeXCIgKyAocGF0dGVybi5yZXBsYWNlKC9cXC8vZywgJ1xcXFwvJykucmVwbGFjZSgvXFwqXFwqL2csICcoXFxcXC9bXlxcXFwvXSspKicpLnJlcGxhY2UoL1xcKi9nLCAnW15cXFxcL10rJykucmVwbGFjZSgvKCg/IVxcXFwpKVxcPy9nLCAnJDEuJykpICsgXCIkXCIpLCAnaScpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaHVuayhmaWxlcywgc2l6ZSkge1xuICAgICAgICB2YXIgY2h1bmtzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpICs9IHNpemUpIHtcbiAgICAgICAgICAgIHZhciBjaHVuayA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjaHVuay5wdXNoKGZpbGVzW2kgKyBqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaHVua3MucHVzaChjaHVuayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNodW5rcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdG9wKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIFVJa2l0LmNvbXBvbmVudCgnY291bnRkb3duJywgQ291bnRkb3duKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ2ZpbHRlcicsIEZpbHRlcik7XG4gICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveCcsIExpZ2h0Ym94KTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ2xpZ2h0Ym94UGFuZWwnLCBMaWdodGJveFBhbmVsKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ25vdGlmaWNhdGlvbicsIE5vdGlmaWNhdGlvbik7XG4gICAgVUlraXQuY29tcG9uZW50KCdwYXJhbGxheCcsIFBhcmFsbGF4JDEpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVyJywgU2xpZGVyJDEpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVyUGFyYWxsYXgnLCBTbGlkZXJQYXJhbGxheCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzbGlkZXNob3cnLCBTbGlkZXNob3ckMSk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzbGlkZXNob3dQYXJhbGxheCcsIFNsaWRlclBhcmFsbGF4KTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NvcnRhYmxlJywgU29ydGFibGUpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgndG9vbHRpcCcsIFRvb2x0aXApO1xuICAgIFVJa2l0LmNvbXBvbmVudCgndXBsb2FkJywgVXBsb2FkKTtcblxuICAgIHtcbiAgICAgICAgYm9vdChVSWtpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFVJa2l0O1xuXG59KSkpO1xuIiwiLypcbiAqIFRpdGxlOiBUeXBld3JpdGVyIEpTXG4gKiBEZXNjcmlwdGlvbjogQSBuYXRpdmUgamF2YXNjcmlwdCBwbHVnaW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gZWxlZ2VudCBhdXRvbWF0aWMgdHlwZXdyaXRlciBhbmltYXRpb24gZWZmZWN0IG9uIHdlYnNpdGVzLlxuICogQXV0aG9yOiBUYW1lZW0gU2FmaVxuICogV2Vic2l0ZTogaHR0cHM6Ly9zYWZpLm1lLnVrXG4gKiBWZXJzaW9uOiAxLjAuMFxuICovXG5cbihmdW5jdGlvbigpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBodHRwOi8vcGF1bGlyaXNoLmNvbS8yMDExL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtYW5pbWF0aW5nL1xuXHQvLyBodHRwOi8vbXkub3BlcmEuY29tL2Vtb2xsZXIvYmxvZy8yMDExLzEyLzIwL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtZXItYW5pbWF0aW5nXG5cdC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwb2x5ZmlsbCBieSBFcmlrIE3DtmxsZXIuIGZpeGVzIGZyb20gUGF1bCBJcmlzaCBhbmQgVGlubyBaaWpkZWxcblx0Ly8gTUlUIGxpY2Vuc2Vcblx0KGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGxhc3RUaW1lID0gMDtcblx0ICAgIHZhciB2ZW5kb3JzID0gWydtcycsICdtb3onLCAnd2Via2l0JywgJ28nXTtcblx0ICAgIGZvcih2YXIgeCA9IDA7IHggPCB2ZW5kb3JzLmxlbmd0aCAmJiAhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsgKyt4KSB7XG5cdCAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHdpbmRvd1t2ZW5kb3JzW3hdKydSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdmVuZG9yc1t4XSsnQ2FuY2VsQW5pbWF0aW9uRnJhbWUnXVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbmRvd1t2ZW5kb3JzW3hdKydDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkge1xuXHQgICAgICAgICAgICB2YXIgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0ICAgICAgICAgICAgdmFyIHRpbWVUb0NhbGwgPSBNYXRoLm1heCgwLCAxNiAtIChjdXJyVGltZSAtIGxhc3RUaW1lKSk7XG5cdCAgICAgICAgICAgIHZhciBpZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhjdXJyVGltZSArIHRpbWVUb0NhbGwpOyB9LFxuXHQgICAgICAgICAgICAgIHRpbWVUb0NhbGwpO1xuXHQgICAgICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcblx0ICAgICAgICAgICAgcmV0dXJuIGlkO1xuXHQgICAgICAgIH07XG5cblx0ICAgIGlmICghd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKGlkKSB7XG5cdCAgICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG5cdCAgICAgICAgfTtcblx0fSgpKTtcblxuXHR3aW5kb3cuVHlwZXdyaXRlciA9IGZ1bmN0aW9uIFR5cGV3cml0ZXIoZWxlbWVudCwgb3B0aW9ucykge1xuXHRcdHRoaXMuX3NldHRpbmdzID0ge1xuXHRcdFx0Y3Vyc29yQW5pbWF0aW9uUGF1c2VkOiBmYWxzZSxcblx0XHRcdG9wYWNpdHlJbmNyZWFzaW5nOiBmYWxzZSxcblx0XHRcdGN1cnJlbnRPcGFjaXR5OiAxLFxuXHRcdFx0ZGVsYXllZFF1ZTogW10sXG5cdFx0XHRkZWxheUl0ZW1zQ291bnQ6IDAsXG5cdFx0XHRldmVudFF1ZTogW10sXG5cdFx0XHRjYWxsZWRFdmVudHM6IFtdLFxuXHRcdFx0ZXZlbnRSdW5uaW5nOiBmYWxzZSxcblx0XHRcdHRpbWVvdXQ6IGZhbHNlLFxuXHRcdFx0ZGVsYXlFeGVjdXRpb246IGZhbHNlLFxuXHRcdFx0ZnBzOiAoNjAvMTAwMCksXG5cdFx0XHR0eXBpbmdGcmFtZUNvdW50OiAwLFxuXHRcdFx0c3RyaW5nVG9UeXBlSFRNTEFycmF5OiBbXSxcblx0XHRcdGN1cnJlbnRUeXBlZENoYXJhY3RlcnM6IFtdLFxuXHRcdFx0dHlwaW5nOiBmYWxzZSxcblx0XHRcdHVzZWRJRHM6IFtdLFxuXHRcdFx0Y2hhckFtb3VudFRvRGVsZXRlOiBmYWxzZSxcblx0XHRcdHVzZXJPcHRpb25zOiB7fSxcblx0XHRcdGV2ZW50TG9vcFJlcnVuOiAwXG5cdFx0fTtcblxuXHRcdGlmKCFlbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGNob29zZSBhbiBET00gZWxlbWVudCBzbyB0aGF0IHR5cGUgd3JpdGVyIGNhbiBkaXNwbGF5IGl0c2VsZi4nKTtcblx0XHR9XG5cblx0XHQvLyBpZighb3B0aW9ucy5zdHJpbmdzICYmICEob3B0aW9ucy5zdHJpbmdzIGluc3RhbmNlb2YgQXJyYXkgfHwgdHlwZW9mIG9wdGlvbnMuc3RyaW5ncyA9PT0gJ3N0cmluZycpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGFuIGFycmF5IG9mIHN0cmluZ3MgZm9yIHRoZSB0eXBld3JpdGVyIGFuaW1hdGlvbiB0byB3b3JrLicpO1xuXHRcdC8vIH1cblxuXHRcdGlmKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHRoZSBvcHRpb25zIGFzIGFuIG9iamVjdC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyA9IG9wdGlvbnM7XG5cblx0XHR0aGlzLmRlZmF1bHRfb3B0aW9ucyA9IHtcblx0XHRcdHN0cmluZ3M6IGZhbHNlLFxuXHRcdFx0Y3Vyc29yQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jdXJzb3InLFxuXHRcdFx0Y3Vyc29yOiAnfCcsXG5cdFx0XHRhbmltYXRlQ3Vyc29yOiB0cnVlLFxuXHRcdFx0YmxpbmtTcGVlZDogNTAsXG5cdFx0XHR0eXBpbmdTcGVlZDogJ25hdHVyYWwnLFxuXHRcdFx0ZGVsZXRlU3BlZWQ6ICduYXR1cmFsJyxcblx0XHRcdGNoYXJTcGFuQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jaGFyJyxcblx0XHRcdHdyYXBwZXJDbGFzc05hbWU6ICd0eXBld3JpdGVyLXdyYXBwZXInLFxuXHRcdFx0bG9vcDogZmFsc2UsXG5cdFx0XHRhdXRvU3RhcnQ6IGZhbHNlLFxuXHRcdFx0ZGV2TW9kZTogZmFsc2Vcblx0XHR9O1xuXG5cdFx0dGhpcy5vcHRpb25zID0gdGhpcy5fc2V0dXBPcHRpb25zKG9wdGlvbnMpO1xuXG5cdFx0dGhpcy5lbCA9IGVsZW1lbnQ7XG5cblx0XHR0aGlzLl9zZXR1cFR5cHdyaXRlcldyYXBwZXIoKTtcblxuXHRcdHRoaXMuX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uKCk7XG5cblx0XHRpZih0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0ID09PSB0cnVlICYmIHRoaXMub3B0aW9ucy5zdHJpbmdzKSB7XG5cdFx0XHR0aGlzLnR5cGVPdXRBbGxTdHJpbmdzKCk7XG5cdFx0fVxuXG5cdH07XG5cblx0dmFyIFR5cGV3cml0ZXJQcm90b3R5cGUgPSB3aW5kb3cuVHlwZXdyaXRlci5wcm90b3R5cGU7XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZSh0aGlzLl9zdG9wRXZlbnRMb29wKVxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUucmVydW4gPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKHRoaXMuX3JlcnVuQ2FsbGVkRXZlbnRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnR5cGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRpZighc3RyaW5nIHx8IHR5cGVvZiBzdHJpbmcgIT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBzdHJpbmcgYXMgdGhlIHBhcmFtYXRlci4nKTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyhzdHJpbmcpO1xuXG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fdHlwZUNoYXJhY3RlcnMsIFtzdHJpbmdfY2hhcnNdXSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgWydhbGwnXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgW2Ftb3VudF1dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnBhdXNlRm9yID0gZnVuY3Rpb24obXMpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9wYXVzZUZvciwgW21zXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUudHlwZU91dEFsbFN0cmluZ3MgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2hhcmFjdGVyc19hcnJheSA9IHRoaXMuX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkoKTtcblxuXHRcdGlmKGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHR0aGlzLl90eXBlQ2hhcmFjdGVycyhjaGFyYWN0ZXJzX2FycmF5WzBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yKHZhciBpID0gMCwgbGVuZ3RoID0gY2hhcmFjdGVyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl90eXBlQ2hhcmFjdGVycywgW2NoYXJhY3RlcnNfYXJyYXlbaV1dXSk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmNoYW5nZVNldHRpbmdzID0gZnVuY3Rpb24obmV3X3NldHRpbmdzKSB7XG5cdFx0aWYoIW5ld19zZXR0aW5ncyAmJiB0eXBlb2YgbmV3X3NldHRpbmdzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgd2lsbCBvbmx5IGFjY2VwdCBhbiBvYmplY3QgYXMgdGhlIHNldHRpbmdzLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX2NoYW5nZVNldHRpbmdzLCBbSlNPTi5zdHJpbmdpZnkobmV3X3NldHRpbmdzKV1dKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VCbGlua1NwZWVkID0gZnVuY3Rpb24obmV3X3NwZWVkKSB7XG5cdFx0aWYoIW5ld19zcGVlZCAmJiB0eXBlb2YgbmV3X3NwZWVkICE9PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBhIG51bWJlciBmb3IgdGhlIG5ldyBibGluayBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdGJsaW5rU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VUeXBpbmdTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgdHlwaW5nIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHZhciBuZXdfc2V0dGluZ3MgPSB7XG5cdFx0XHR0eXBpbmdTcGVlZDogbmV3X3NwZWVkXG5cdFx0fTtcblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0dHlwaW5nU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VEZWxldGVTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgZGVsZXRlIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0Y2hhbmdlRGVsZXRlU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVydW5DYWxsZWRFdmVudHMgPSBmdW5jdGlvbigpIHtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgncmVydW5DYWxsZWRFdmVudHMnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUgPSB0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHM7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMgPSBbXTtcblx0XHRcdHRoaXMub3B0aW9ucyA9IHRoaXMuX3NldHVwT3B0aW9ucyh0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy51c2VkSURzID0gW107XG5cdFx0XHR0aGlzLmNoYXJBbW91bnRUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblxuXG5cdFx0aWYoYW1vdW50KSB7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBhbW91bnQ7XG5cdFx0fVxuXHRcdHRoaXMuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcGF1c2VGb3IgPSBmdW5jdGlvbihtcykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHRzZWxmLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRzZWxmLl9yZXNldEV2ZW50TG9vcCgncGF1c2VGb3InKTtcblx0XHR9LCBtcyk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fY2hhbmdlU2V0dGluZ3MgPSBmdW5jdGlvbihuZXdfc2V0dGluZ3MpIHtcblx0XHR0aGlzLm9wdGlvbnMgPSB0aGlzLl9zZXR1cE9wdGlvbnMoSlNPTi5wYXJzZShuZXdfc2V0dGluZ3NbMF0pKTtcblx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgnY2hhbmdlU2V0dGluZ3MnKTtcblxuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTmV3IHNldHRpbmdzJywgdGhpcy5vcHRpb25zKTtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHR2YXIgZGVsZXRlX3NwZWVkID0gdGhpcy5vcHRpb25zLmRlbGV0ZVNwZWVkO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHNlbGYub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciBjdXJyZW50X3R5cGVkX2NoYXJfaWRzID0gc2VsZi5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycztcblx0XHR2YXIgY2hhcl9hbW91bnRfdG9fZGVsZXRlID0gc2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlO1xuXG5cdFx0aWYoIXNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSB8fCBzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPT09IDAgfHwgY3VycmVudF90eXBlZF9jaGFyX2lkcyA9PT0gMCkge1xuXHRcdFx0c2VsZi5fcmVzZXRFdmVudExvb3AoJ2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZihkZWxldGVfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHRkZWxldGVfc3BlZWQgPSBzZWxmLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdGlmKGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9PSAnYWxsJykge1xuXHRcdFx0Y2hhcl9hbW91bnRfdG9fZGVsZXRlID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGg7XG5cdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGU7XG5cdFx0fVxuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdGlmKHNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSkge1xuXHRcdFx0XHR2YXIgbGFzdF90eXBlZF9jaGFyX2luZGV4ID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGggLSAxO1xuXHRcdFx0XHR2YXIgZ2V0X2xhc3RfdHlwZWRfY2hhciA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHNbbGFzdF90eXBlZF9jaGFyX2luZGV4XTtcblxuXHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLnNwbGljZShsYXN0X3R5cGVkX2NoYXJfaW5kZXgsIDEpO1xuXG5cdFx0XHRcdHZhciBjaGFyX3RvX2RlbGV0ZV9lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXG5cdFx0XHRcdGlmKGNoYXJfdG9fZGVsZXRlX2VsKSB7XG5cdFx0XHRcdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9lbCA9IHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSk7XG5cdFx0XHRcdFx0dHlwZXdyaXRlcl93cmFwcGVyX2VsLnJlbW92ZUNoaWxkKGNoYXJfdG9fZGVsZXRlX2VsKTtcblx0XHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGUgLSAxO1xuXG5cdFx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdEZWxldGVkIGNoYXIgd2l0aCBJRCcsIGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmKSk7XG5cblx0XHR9LCBkZWxldGVfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwT3B0aW9ucyA9IGZ1bmN0aW9uKG5ld19vcHRpb25zKSB7XG5cdCAgICB2YXIgbWVyZ2VkX29wdGlvbnMgPSB7fTtcblxuXHQgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gdGhpcy5kZWZhdWx0X29wdGlvbnMpIHtcblx0ICAgIFx0bWVyZ2VkX29wdGlvbnNbYXR0cm5hbWVdID0gdGhpcy5kZWZhdWx0X29wdGlvbnNbYXR0cm5hbWVdO1xuXHQgICAgfVxuXG5cdCAgICBpZih0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHQgICAgXHRmb3IgKHZhciBhdHRybmFtZSBpbiB0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHRcdCAgICBcdG1lcmdlZF9vcHRpb25zW2F0dHJuYW1lXSA9IHRoaXMuX3NldHRpbmdzLnVzZXJPcHRpb25zW2F0dHJuYW1lXTtcblx0XHQgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBuZXdfb3B0aW9ucykge1xuXHQgICAgXHRtZXJnZWRfb3B0aW9uc1thdHRybmFtZV0gPSBuZXdfb3B0aW9uc1thdHRybmFtZV07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBtZXJnZWRfb3B0aW9ucztcblx0fVxuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2FkZFRvRXZlbnRRdWUgPSBmdW5jdGlvbihldmVudCkge1xuXHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnB1c2goZXZlbnQpO1xuXHRcdGlmKHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyAmJiB0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0KSB7XG5cdFx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgbG9vcCBzdGFydGVkLicpO1xuXHRcdH1cblxuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcpIHtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLmV2ZW50TG9vcFJlcnVuID0gMDtcblx0XHRcdFx0dmFyIGZpcnN0X2V2ZW50ID0gdGhpcy5fc2V0dGluZ3MuZXZlbnRRdWVbMF07XG5cdFx0XHRcdGlmKHR5cGVvZiBmaXJzdF9ldmVudCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMucHVzaChmaXJzdF9ldmVudCk7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdGZpcnN0X2V2ZW50LmNhbGwodGhpcyk7XG5cdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBzdGFydGVkLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKGZpcnN0X2V2ZW50IGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0XHRpZih0eXBlb2YgZmlyc3RfZXZlbnRbMF0gPT0gJ2Z1bmN0aW9uJyAmJiBmaXJzdF9ldmVudFsxXSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzLnB1c2goZmlyc3RfZXZlbnQpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdFx0Zmlyc3RfZXZlbnRbMF0uY2FsbCh0aGlzLCBmaXJzdF9ldmVudFsxXSk7XG5cdFx0XHRcdFx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgc3RhcnRlZC4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2V2ZW50UXVlQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9zdGFydEV2ZW50TG9vcC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cblx0XHRpZighdGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nICYmIHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihzZWxmLm9wdGlvbnMubG9vcCkge1xuXHRcdFx0XHRcdHNlbGYuZXZlbnRMb29wUmVydW4rKztcblx0XHRcdFx0XHRpZihzZWxmLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0JlZm9yZSBMb29wIFN0YXRlJywgc2VsZi5fc2V0dGluZ3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzZWxmLmV2ZW50TG9vcFJlcnVuID4gNCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignTWF4aW11bSBhbW91bnQgb2YgbG9vcCByZXRyaWVzIHJlYWNoZWQuJyk7XG5cdFx0XHRcdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdMb29waW5nIGV2ZW50cy4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHNlbGYuX3JlcnVuQ2FsbGVkRXZlbnRzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXNldEV2ZW50TG9vcCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHR2YXIgZXZlbnRfbmFtZSA9IG5hbWUgfHwgJ0V2ZW50Jztcblx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSBmYWxzZTtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhldmVudF9uYW1lLCAnRmluaXNoZWQnKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RvcEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9ldmVudFF1ZUFuaW1hdGlvbik7XG5cdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBsb29wIHN0b3BwZWQuJyk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwVHlwd3JpdGVyV3JhcHBlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0dHlwZXdyaXRlcl93cmFwcGVyLmNsYXNzTmFtZSA9IHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lO1xuXHRcdHRoaXMuZWwuaW5uZXJIVE1MID0gJyc7XG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZCh0eXBld3JpdGVyX3dyYXBwZXIpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3R5cGVDaGFyYWN0ZXJzID0gZnVuY3Rpb24oY2hhcmFjdGVyc19hcnJheSkge1xuXHRcdHRoaXMuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheSA9IHRoaXMuX2NvbnZlcnRDaGFyc1RvSFRNTChjaGFyYWN0ZXJzX2FycmF5KTtcblx0XHR0aGlzLl90eXBpbmdBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3R5cGluZ0FuaW1hdGlvbkZyYW1lLmJpbmQodGhpcywgY2hhcmFjdGVyc19hcnJheS5sZW5ndGgpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl90eXBpbmdBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKHRvdGFsX2l0ZW1zKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdHZhciB0eXBpbmdfc3BlZWQgPSB0aGlzLm9wdGlvbnMudHlwaW5nU3BlZWQ7XG5cdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lID0gc2VsZi5vcHRpb25zLndyYXBwZXJDbGFzc05hbWU7XG5cblx0XHRpZihzZWxmLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXkubGVuZ3RoID09IDApIHtcblx0XHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzZWxmLl90eXBpbmdBbmltYXRpb24pO1xuXHRcdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ3R5cGluZ0FuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZih0eXBpbmdfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHR0eXBpbmdfc3BlZWQgPSB0aGlzLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZWxfaW5uZXJfaHRtbCA9IHNlbGYuZWwuaW5uZXJIVE1MO1xuXHRcdFx0dmFyIGl0ZW1fdG9fdHlwZSA9IHNlbGYuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheVswXTtcblx0XHRcdHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSkuYXBwZW5kQ2hpbGQoaXRlbV90b190eXBlLmVsKTtcblx0XHRcdHNlbGYuX3NldHRpbmdzLmN1cnJlbnRUeXBlZENoYXJhY3RlcnMucHVzaChpdGVtX3RvX3R5cGUuaWQpO1xuXHRcdFx0c2VsZi5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5LnNwbGljZSgwLCAxKTtcblx0XHRcdHNlbGYuX3R5cGluZ0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fdHlwaW5nQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmLCB0b3RhbF9pdGVtcykpO1xuXHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1R5cGVkJywgaXRlbV90b190eXBlKTtcblx0XHRcdH1cblx0XHR9LCB0eXBpbmdfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2NvbnZlcnRDaGFyc1RvSFRNTCA9IGZ1bmN0aW9uKGNoYXJzKSB7XG5cdFx0dmFyIGNoYXJzX2h0bWxfd3JhcF9hcnJheSA9IFtdO1xuXHRcdHZhciBjaGFyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY2hhclNwYW5DbGFzc05hbWU7XG5cdFx0dmFyIGNoYXJzX2FycmF5ID0gY2hhcnNbMF07XG5cblx0XHRmb3IodmFyIGkgPSAwLCBsZW5ndGggPSBjaGFyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGNoYXJfZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHZhciBjaGFyX2lkID0gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRCgpO1xuXHRcdFx0Y2hhcl9lbGVtZW50LmlkID0gY2hhcl9pZDtcblx0XHRcdGNoYXJfZWxlbWVudC5jbGFzc05hbWUgPSBjaGFyX2NsYXNzX25hbWUgKyAnIHR5cGV3cml0ZXItaXRlbS0nICsgaTtcblx0XHRcdGNoYXJfZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyc19hcnJheVtpXTtcblx0XHRcdGNoYXJzX2h0bWxfd3JhcF9hcnJheS5wdXNoKHtcblx0XHRcdFx0aWQ6IGNoYXJfaWQsXG5cdFx0XHRcdGVsOiBjaGFyX2VsZW1lbnRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBjaGFyc19odG1sX3dyYXBfYXJyYXk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdGlmKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBzdHJpbmcuc3BsaXQoXCJcIik7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0U3RyaW5nc0FzQ2hhcnNBcnJheSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzdHJpbmdzX2FycmF5X2NoZWNrID0gdGhpcy5vcHRpb25zLnN0cmluZ3MgaW5zdGFuY2VvZiBBcnJheTtcblx0XHR2YXIgc3RyaW5nc19zdHJpbmdfY2hlY2sgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmluZ3MgPT09ICdzdHJpbmcnO1xuXHRcdGlmKCFzdHJpbmdzX2FycmF5X2NoZWNrKSB7XG5cdFx0XHRpZighc3RyaW5nc19zdHJpbmdfY2hlY2spIHtcblx0XHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyB0aGUgaW5wdXQuJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW3RoaXMub3B0aW9ucy5zdHJpbmdzLnNwbGl0KFwiXCIpXTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nc19jaGFyc19hcnJheSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMub3B0aW9ucy5zdHJpbmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyh0aGlzLm9wdGlvbnMuc3RyaW5nc1tpXSk7XG5cdFx0XHRpZighc3RyaW5nX2NoYXJzKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBvbmx5IHN0cmluZ3MuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0c3RyaW5nc19jaGFyc19hcnJheS5wdXNoKHN0cmluZ19jaGFycyk7XG4gICAgXHR9XG5cbiAgICBcdHJldHVybiBzdHJpbmdzX2NoYXJzX2FycmF5O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2N1cnNvckFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0dmFyIGJsaW5rX3NwZWVkID0gdGhpcy5vcHRpb25zLmJsaW5rU3BlZWQ7XG5cdFx0XHR2YXIgb3BhY2l0eV9hbW91bnQgPSAoMS8xMDAwKSAqIGJsaW5rX3NwZWVkO1xuXG5cdFx0XHR2YXIgY3Vyc29yX2VsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcudHlwZXdyaXRlci1jdXJzb3InKTtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gdHJ1ZSkge1xuXHRcdFx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA+PSAxKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSArPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gZmFsc2UpIHtcblx0XHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPD0gMCkge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSAtPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Y3Vyc29yX2VsLnN0eWxlLm9wYWNpdHkgPSB0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eTtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuXHQgICAgdGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fYXBwZW5kVGV4dCwgW3RleHRdXSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuICAgICAgICAgICAgdmFyIGNoYXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jaGFyU3BhbkNsYXNzTmFtZTtcbiAgICAgICAgICAgIHZhciBjaGFyX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICB2YXIgY2hhcl9pZCA9IHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQoKTtcbiAgICAgICAgICAgIGNoYXJfZWxlbWVudC5pZCA9IGNoYXJfaWQ7XG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuY2xhc3NOYW1lID0gY2hhcl9jbGFzc19uYW1lICsgJyBkb20tYXBwZW5kZWQnXG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGV4dFxuICAgICAgICAgICAgdmFyIGl0ZW1zID0gIFtdXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY2hhcl9pZCxcbiAgICAgICAgICAgICAgICBlbDogY2hhcl9lbGVtZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5ID0gaXRlbXNcblxuICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl90eXBpbmdBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMsIDEpKTtcblxuICAgIH1cblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjdXJzb3IgPSB0aGlzLm9wdGlvbnMuY3Vyc29yO1xuXHRcdHZhciBjdXJzb3JfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jdXJzb3JDbGFzc05hbWU7XG5cblx0XHR2YXIgY3Vyc29yX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuY2xhc3NOYW1lID0gY3Vyc29yX2NsYXNzX25hbWU7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuaW5uZXJIVE1MID0gY3Vyc29yO1xuXG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZChjdXJzb3JfZWxlbWVudCk7XG5cdFx0aWYodGhpcy5vcHRpb25zLmFuaW1hdGVDdXJzb3IpIHtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3BhdXNlQ3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbik7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXN0YXJ0Q3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ0N1cnNvciBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nLicpXG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dGluZ3MuY3Vyc29yQW5pbWF0aW9uUGF1c2VkID0gZmFsc2U7XG5cdFx0dGhpcy5fY3Vyc29yQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9jdXJzb3JBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMpKTtcblx0fTtcblxuXHQvKiBVdGlscyAqL1xuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JbnRlZ2VyID0gZnVuY3Rpb24obWluLCBtYXgpIHtcblx0XHRyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZXh0ID0gXCJcIjtcbiAgICBcdHZhciBwb3NzaWJsZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcblxuICAgIFx0Zm9yKCB2YXIgaT0wOyBpIDwgdGhpcy5fcmFuZG9tSW50ZWdlcig1LCAxNSk7IGkrKyApIHtcbiAgICBcdFx0dGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XG5cdFx0fVxuICAgIFx0cmV0dXJuIHRleHQ7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2VuZXJhdGVVbmlxdWVJRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZW1wX2lkID0gdGhpcy5fcmFuZG9tSUQoKTtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy51c2VkSURzLmluZGV4T2YodGVtcF9pZCkgPT0gLTEpIHtcblx0XHRcdHRoaXMuX3NldHRpbmdzLnVzZWRJRHMucHVzaCh0ZW1wX2lkKTtcblx0XHRcdHJldHVybiB0ZW1wX2lkO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRC5jYWxsKHRoaXMpO1xuXHR9O1xuXG5cbn0pKCk7Il19