(function() { var wrapped = top; var deprecatedProperties = ["webkitStorageInfo", "webkitIndexedDB", "mozHidden", "mozVisibilityState"]; /** * Wrapper for window object */ var wrapper = { listeners: {}, /** * Removes the event listener previously registered with addEventListener() * @param eventType - A string representing the event type to remove * @param eventListener - The object that receives a notification when an event of the specified type occurs * @param options - An options object that specifies characteristics about the event listener */ removeEventListener: function (eventType, eventListener, options) { if (wrapper.listeners[eventListener]) { var eventListenerWrapper = wrapper.listeners[eventListener]; wrapped.removeEventListener(eventType, eventListenerWrapper, options); } }, /** * Registers the specified listener on the EventTarget it's called on * @param eventType - A string representing the event type to listen for * @param eventListener - The object that receives a notification when an event of the specified type occurs * @param options - An options object that specifies characteristics about the event listener */ addEventListener: function (eventType, eventListener, options) { var eventListenerWrapper; if (wrapper.listeners[eventListener]) { eventListenerWrapper = wrapper.listeners[eventListener]; } else { var eventListenerWrapper = function (e) { if (eventListener.handleEvent) { with (wrapper) { eventListener.handleEvent(e); } } else { eventListener.call(document, e); } }; wrapper.listeners[eventListener] = eventListenerWrapper; } wrapped.addEventListener(eventType, eventListenerWrapper, options); }, /** * Creates an event of the type specified * @param eventType - A string representing the event type to create */ createEvent: function (eventType) { return wrapped.createEvent(eventType); }, /** * Dispatches an event at the wrapper * @param event - The Event object to be dispatched. */ dispatchEvent: function (event) { return wrapped.dispatchEvent(event); }, /** * Event object that currently being processed */ Event: function() { return wrapped.Event; } }; (function () { 'use strict'; // Init GM commands api window.__adg_gm_commands_api = window.__adg_gm_commands_api || { commands: [] }; })(); /** * Calls the specified event handler when body loaded * @param eventListener - The object that receives a notification when an event of the specified type occurs */ var runAtBody = function (eventListener) { if (document.body) { if (eventListener) { eventListener.call(document); } } else { var listenEvents = ["load", "DOMNodeInserted", "DOMContentLoaded"]; var eventListenerWrapper = function () { listenEvents.forEach(function (eventType) { document.removeEventListener(eventType, eventListenerWrapper, false); }); runAtBody(eventListener); }; listenEvents.forEach(function (eventType) { document.addEventListener(eventType, eventListenerWrapper, false); }) } }; /** * Calls the specified event handler when document was successfully loaded * @param eventListener - The object that receives a notification when an event of the specified type occurs */ var runAtDocumentEnd = function (eventListener) { if (document.readyState == "complete" || document.readyState == "loaded" || document.readyState == "interactive") { if (eventListener) { eventListener.call(document); } } else { var listenEvents = ["DOMContentLoaded", "load"]; var eventListenerWrapper = function () { listenEvents.forEach(function (eventType) { document.removeEventListener(eventType, eventListenerWrapper, false); }); runAtDocumentEnd(eventListener); }; listenEvents.forEach(function (eventType) { document.addEventListener(eventType, eventListenerWrapper, false); }) } }; /** * Copies the properties from wrappedObject to wrapperObject * @param wrappedObject - object from which properties copied * @param wrapperObject - object to which properties copied */ var copyProperties = function (wrappedObject, wrapperObject) { var properties = []; for (prop in wrappedObject) { properties.push(prop); } properties.forEach(function (propertyName) { if (wrapperObject[propertyName] || deprecatedProperties.indexOf(propertyName) > -1) { return; } if (typeof (wrappedObject[propertyName]) === 'function') { var func = wrappedObject[propertyName]; wrapperObject[propertyName] = function () { return func.apply(wrappedObject, arguments); } } else { Object.defineProperty(wrapperObject, propertyName, { get: function () { return wrappedObject[propertyName]; }, set: function (property_value) { wrappedObject[propertyName] = property_value; } }); } }); }; /** * Initialize window and document wrappers. * Schedule userscript to run. */ var initializeWindowWrapper = function () { wrapper.window = wrapper; wrapper.Promise = wrapped.Promise; wrapper.XMLHttpRequest = wrapped.XMLHttpRequest; wrapper.DOMParser = wrapped.DOMParser; wrapper.MutationObserver = wrapped.MutationObserver; wrapper.document = document; wrapper.top = (window.top == window) ? wrapper : window.top; wrapper.parent = (window.parent == window) ? wrapper : window.parent; wrapper.escape = wrapped.escape; wrapper.self = wrapper; if (typeof InstallTrigger !== 'undefined') { wrapper.exportFunction = function (func, context, options) { if (options && options.defineAs) { context[options.defineAs] = func; } return func; } wrapper.createObjectIn = function (context, options) { var newObject = {}; if (options && options.defineAs) { context[options.defineAs] = newObject; } return newObject; } } var isEventFunction = function (key) { return key === 'addEventListener' || key === 'removeEventListener' || key === 'createEvent' || key === 'dispatchEvent' || key.indexOf('on') === 0; }; // https://github.com/AdguardTeam/AdguardForWindows/issues/1139 var decorator = { get: function (target, key) { if (isEventFunction(key)) { var wrappedFunction = target[key]; return function () { wrappedFunction.apply(target, arguments); } } else { return target[key]; } }, set: function (target, key, value) { target[key] = value; return true; } }; if (typeof Proxy != 'undefined') { wrapper.unsafeWindow = new Proxy(window, decorator); } else { wrapper.unsafeWindow = window; } copyProperties(wrapped, wrapper); }; var log = function (message) { 'use strict'; if (console && console.log) { console.log(message); } }; var isTinyIframe = function () { var isIframe = (window.self != window.top); var width = window.innerWidth || document.documentElement.clientWidth; var height = window.innerHeight || document.documentElement.clientHeight; return (isIframe && ((width * height) < 100000)) } /** * clean up all userscript "tracks" */ var cleanUp = function () { var currentScript = document.currentScript; if (!currentScript) { var scripts = document.getElementsByTagName('script'); currentScript = scripts[scripts.length - 1]; } var rootElement = currentScript.parentNode; rootElement.removeChild(currentScript); } /** * "main" Userscript execution */ var executeUserscript = function () { initializeWindowWrapper(); var AdguardSettings ={"feedbackUrl":"//api.adguard.com","applicationId":"3a2e92596c5142f9afd10ba75584a46a","locale":"ru","appVersion":"6.1.331.1732","uniqueName":"Web of Trust","version":"1.0.40","sendAnonymousStatistic":"true","nonce":"121bf6a6aabe4570a626ef675324db6d"}; var protectionFunction = function (params) { 'use strict'; return "160dd" + params + "0f926bdcba754116980af3f"; }; var userscript = function (window, AdguardSettings, __adg_gm_commands_api) { with (wrapper) { // No resources; var __GM_api={}; (function(){var settings={apiurl:"/adguard-ajax-api/api",feedbackUrl:"/api/1.0/url-report.html"};var utils={getHostWithProtocol:function(){var hostname=document.location.hostname;var protocol=document.location.protocol;var port=document.location.port=="80"?"":":"+document.location.port;return protocol+"//"+hostname+port},sendGetRequest:function(params,async){var url=utils.getHostWithProtocol()+settings.apiurl;url+="?";url+=utils.buildParameters(params);if(typeof async=="undefined")async=false;var xmlhttp= new XMLHttpRequest;xmlhttp.open("GET",url,async);xmlhttp.send();if(xmlhttp.readyState==4)if(xmlhttp.status!=200)throw xmlhttp.statusText;return xmlhttp.responseText},sendPostRequest:function(params){var url=utils.getHostWithProtocol()+settings.apiurl;var data=utils.buildParameters(params);var xmlhttp=new XMLHttpRequest;xmlhttp.open("POST",url,true);xmlhttp.send(data)},buildParameters:function(params,omitParameters){var query="";for(var key in params)if(params.hasOwnProperty(key)){var value=params[key]; if(query)query+="&";query+=key;query+="=";if(omitParameters&&omitParameters[key])query+=value;else query+=encodeURIComponent(value)}var calc=function(params){var ROTR=function(n,x){return x>>>n|x<<32-n};var \u03a30=function(x){return ROTR(2,x)^ROTR(13,x)^ROTR(22,x)};var \u03a31=function(x){return ROTR(6,x)^ROTR(11,x)^ROTR(25,x)};var \u03c30=function(x){return ROTR(7,x)^ROTR(18,x)^x>>>3};var \u03c31=function(x){return ROTR(17,x)^ROTR(19,x)^x>>>10};var Ch=function(x,y,z){return x&y^~x&z};var Maj=function(x, y,z){return x&y^x&z^y&z};var toHexStr=function(n){var s="",v;for(var i=7;i>=0;i--){v=n>>>i*4&15;s+=v.toString(16)}return s};var safeMathCeil=function(x){var i=0;for(;i<=x+1;i++)if(i>=x)return i;return i};var paddingBit=String.fromCharCode(128);var charCodeAt=function(str,index){var character=str[index];if(typeof character=="undefined")return NaN;if(character==" ")return 32;if(character=="!")return 33;if(character=='"')return 34;if(character=="#")return 35;if(character=="$")return 36;if(character== "%")return 37;if(character=="&")return 38;if(character=="'")return 39;if(character=="(")return 40;if(character==")")return 41;if(character=="*")return 42;if(character=="+")return 43;if(character==",")return 44;if(character=="-")return 45;if(character==".")return 46;if(character=="/")return 47;if(character=="0")return 48;if(character=="1")return 49;if(character=="2")return 50;if(character=="3")return 51;if(character=="4")return 52;if(character=="5")return 53;if(character=="6")return 54;if(character== "7")return 55;if(character=="8")return 56;if(character=="9")return 57;if(character==":")return 58;if(character==";")return 59;if(character=="<")return 60;if(character=="=")return 61;if(character==">")return 62;if(character=="?")return 63;if(character=="@")return 64;if(character=="A")return 65;if(character=="B")return 66;if(character=="C")return 67;if(character=="D")return 68;if(character=="E")return 69;if(character=="F")return 70;if(character=="G")return 71;if(character=="H")return 72;if(character== "I")return 73;if(character=="J")return 74;if(character=="K")return 75;if(character=="L")return 76;if(character=="M")return 77;if(character=="N")return 78;if(character=="O")return 79;if(character=="P")return 80;if(character=="Q")return 81;if(character=="R")return 82;if(character=="S")return 83;if(character=="T")return 84;if(character=="U")return 85;if(character=="V")return 86;if(character=="W")return 87;if(character=="X")return 88;if(character=="Y")return 89;if(character=="Z")return 90;if(character== "[")return 91;if(character=="\\")return 92;if(character=="]")return 93;if(character=="^")return 94;if(character=="_")return 95;if(character=="`")return 96;if(character=="a")return 97;if(character=="b")return 98;if(character=="c")return 99;if(character=="d")return 100;if(character=="e")return 101;if(character=="f")return 102;if(character=="g")return 103;if(character=="h")return 104;if(character=="i")return 105;if(character=="j")return 106;if(character=="k")return 107;if(character=="l")return 108;if(character== "m")return 109;if(character=="n")return 110;if(character=="o")return 111;if(character=="p")return 112;if(character=="q")return 113;if(character=="r")return 114;if(character=="s")return 115;if(character=="t")return 116;if(character=="u")return 117;if(character=="v")return 118;if(character=="w")return 119;if(character=="x")return 120;if(character=="y")return 121;if(character=="z")return 122;if(character=="{")return 123;if(character=="|")return 124;if(character=="}")return 125;if(character=="~")return 126; if(character==paddingBit)return 128;return 32};var createSafeArray=function(size){return{}};var setArrayElement=function(array,index,value){var i=protectionFunction(index);array[i]=value};var getArrayElement=function(array,index){var i=protectionFunction(index);return array[i]};var hash=function(msg){var K=createSafeArray(64);setArrayElement(K,0,1116352408);setArrayElement(K,1,1899447441);setArrayElement(K,2,3049323471);setArrayElement(K,3,3921009573);setArrayElement(K,4,961987163);setArrayElement(K, 5,1508970993);setArrayElement(K,6,2453635748);setArrayElement(K,7,2870763221);setArrayElement(K,8,3624381080);setArrayElement(K,9,310598401);setArrayElement(K,10,607225278);setArrayElement(K,11,1426881987);setArrayElement(K,12,1925078388);setArrayElement(K,13,2162078206);setArrayElement(K,14,2614888103);setArrayElement(K,15,3248222580);setArrayElement(K,16,3835390401);setArrayElement(K,17,4022224774);setArrayElement(K,18,264347078);setArrayElement(K,19,604807628);setArrayElement(K,20,770255983);setArrayElement(K, 21,1249150122);setArrayElement(K,22,1555081692);setArrayElement(K,23,1996064986);setArrayElement(K,24,2554220882);setArrayElement(K,25,2821834349);setArrayElement(K,26,2952996808);setArrayElement(K,27,3210313671);setArrayElement(K,28,3336571891);setArrayElement(K,29,3584528711);setArrayElement(K,30,113926993);setArrayElement(K,31,338241895);setArrayElement(K,32,666307205);setArrayElement(K,33,773529912);setArrayElement(K,34,1294757372);setArrayElement(K,35,1396182291);setArrayElement(K,36,1695183700); setArrayElement(K,37,1986661051);setArrayElement(K,38,2177026350);setArrayElement(K,39,2456956037);setArrayElement(K,40,2730485921);setArrayElement(K,41,2820302411);setArrayElement(K,42,3259730800);setArrayElement(K,43,3345764771);setArrayElement(K,44,3516065817);setArrayElement(K,45,3600352804);setArrayElement(K,46,4094571909);setArrayElement(K,47,275423344);setArrayElement(K,48,430227734);setArrayElement(K,49,506948616);setArrayElement(K,50,659060556);setArrayElement(K,51,883997877);setArrayElement(K, 52,958139571);setArrayElement(K,53,1322822218);setArrayElement(K,54,1537002063);setArrayElement(K,55,1747873779);setArrayElement(K,56,1955562222);setArrayElement(K,57,2024104815);setArrayElement(K,58,2227730452);setArrayElement(K,59,2361852424);setArrayElement(K,60,2428436474);setArrayElement(K,61,2756734187);setArrayElement(K,62,3204031479);setArrayElement(K,63,3329325298);var H=createSafeArray(8);setArrayElement(H,0,1779033703);setArrayElement(H,1,3144134277);setArrayElement(H,2,1013904242);setArrayElement(H, 3,2773480762);setArrayElement(H,4,1359893119);setArrayElement(H,5,2600822924);setArrayElement(H,6,528734635);setArrayElement(H,7,1541459225);msg+=String.fromCharCode(128);var l=msg.length/4+2;var N=safeMathCeil(l/16);var M=createSafeArray(N);for(var i=0;i>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>6;enc4=chr3&63;if(isNaN(chr2))enc3=enc4=64;else if(isNaN(chr3))enc4=64;output=output+Base64._keyStr.charAt(enc1)+Base64._keyStr.charAt(enc2)+Base64._keyStr.charAt(enc3)+Base64._keyStr.charAt(enc4)}return output},decode:function(input){var output= "";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64)output=output+String.fromCharCode(chr2);if(enc4!=64)output=output+String.fromCharCode(chr3)}output= Base64._utf8_decode(output);return output},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n127&&c<2048){utftext+=String.fromCharCode(c>>6|192);utftext+=String.fromCharCode(c&63|128)}else{utftext+=String.fromCharCode(c>>12|224);utftext+=String.fromCharCode(c>>6&63|128);utftext+=String.fromCharCode(c&63|128)}}return utftext},_utf8_decode:function(utftext){var string= "";var i=0;var c=0;var c1=0;var c2=0;var c3=0;while(i191&&c<224){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode((c&31)<<6|c2&63);i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode((c&15)<<12|(c2&63)<<6|c3&63);i+=3}}return string}};var exportFunction=function(func,context){return function(){return func.apply(context,arguments)}};var fns=["indexOf","lastIndexOf", "filter","forEach","every","map","some","slice"];fns.forEach(function(funcName){if(typeof Array[funcName]!=="function"){var obj={};obj[funcName]={value:function(arraylikeObj){return Array.prototype[funcName].apply(arraylikeObj,Array.prototype.slice.call(arguments,1))},enumerable:false,writable:true,configurable:true};Object.defineProperties(Array,obj)}});__GM_api.GM_info={script:{name:AdguardSettings.uniqueName,version:AdguardSettings.version},scriptMetaStr:"",scriptWillUpdate:true,version:"0.9.16", uuid:"uuid"};var GM_valuesCache=Object.create(null);__GM_api.GM_setValue=function(name,value){if(typeof value=="undefined"){GM_log("Trying to set "+name+" property to undefined");return}var gmValue=utils.convertToGmProperty(value);var params={"type":"gm-set-value","unique_name":AdguardSettings.uniqueName,"variable_key":name,"variable_value":gmValue};var currentValue=GM_valuesCache[name];if(typeof currentValue!="undefined"&¤tValue==gmValue)return;GM_valuesCache[name]=gmValue;utils.sendPostRequest(params)}; __GM_api.GM_getValue=function(name,defaultValue){var params={"type":"gm-get-value","unique_name":AdguardSettings.uniqueName,"variable_key":name};var gmValue=GM_valuesCache[name];if(typeof gmValue=="undefined"){var gmValue=utils.sendGetRequest(params);GM_valuesCache[name]=gmValue}var resultValue=utils.convertFromGmProperty(gmValue);if(typeof resultValue=="undefined")return defaultValue;return resultValue};__GM_api.GM_deleteValue=function(name){var params={"type":"gm-delete-value","unique_name":AdguardSettings.uniqueName, "variable_key":name};delete GM_valuesCache[name];utils.sendPostRequest(params)};__GM_api.GM_listValues=function(){var params={"type":"gm-list-values","unique_name":AdguardSettings.uniqueName};var result=utils.sendGetRequest(params);try{return JSON.parse(result)}catch(ex){GM_log(ex);return[]}};__GM_api.GM_getResourceText=function(resourceName){return Base64.decode(GM_getResourceURL(resourceName))};__GM_api.GM_getResourceURL=function(resourceName){var result=GM_Resources[resourceName];if(typeof result=== "undefined")throw"Resource "+resourceName+" not found";return result};__GM_api.GM_xmlhttpRequest=function(details){details.url=details.url?details.url:"";details.data=details.data?details.data:"";details.headers=details.headers?details.headers:"";details.overrideMimeType=details.overrideMimeType?details.overrideMimeType:"";details.method=details.method?details.method:"";details.user=details.user?details.user:"";details.password=details.password?details.password:"";var encodeHeaders=function(headers){if(typeof headers== "object"){var result="";for(header in headers)result+=encodeURIComponent(header)+":"+encodeURIComponent(headers[header])+",";return result.slice(0,-1)}if(typeof headers=="string")return encodeURIComponent(headers);return null};var url=utils.getHostWithProtocol();var method=details.method?details.method:"GET";var params={"type":"gm-xml-http-request","unique_name":AdguardSettings.uniqueName,"url":details.url,"data":details.data,"headers":encodeHeaders(details.headers),"method":details.method,"overridemimetype":details.overrideMimeType, "user":details.user,"password":details.password};var data=utils.buildParameters(params,{"headers":true});if(method!="POST"&&(method!="PUT"&&(method!="PATCH"&&method!="DELETE"))){url+=settings.apiurl;url+="?";url+=data}else url+=settings.apiurl;var async=details.synchronous?!details.synchronous:true;var xmlhttp=new XMLHttpRequest;xmlhttp.open(method,url,async);xmlhttp.onreadystatechange=function(){var responseState={responseXML:"",responseText:xmlhttp.readyState==4?xmlhttp.responseText:"",readyState:xmlhttp.readyState, responseHeaders:xmlhttp.readyState==4?xmlhttp.getAllResponseHeaders():"",status:xmlhttp.readyState==4?xmlhttp.status:0,statusText:xmlhttp.readyState==4?xmlhttp.statusText:"",finalUrl:xmlhttp.readyState==4?xmlhttp.finalUrl:""};if(details["onreadystatechange"])details["onreadystatechange"](responseState);if(xmlhttp.readyState==4){if(details["onload"]&&(xmlhttp.status>=200&&xmlhttp.status<300))details["onload"](responseState);if(details["onerror"]&&(xmlhttp.status<200||xmlhttp.status>=300))details["onerror"](responseState)}}; if(async){xmlhttp.timeout=details.timeout?details.timeout:15E3;xmlhttp.ontimeout=function(){if(details.ontimeout)details.ontimeout(xmlhttp)};if(method=="GET")xmlhttp.send();else xmlhttp.send(data);return xmlhttp}else{if(method=="GET")xmlhttp.send();else xmlhttp.send(data);return xmlhttp.responseText}};__GM_api.GM_registerMenuCommand=function(caption,commandFunc,accessKey){if(!__adg_gm_commands_api)return;if(!caption||!commandFunc){GM_log("Caption or commandFunc should be set to register menu command"); return}var command={"caption":caption,"commandFunc":commandFunc};__adg_gm_commands_api.commands.push(command);var event=document.createEvent("Events");event.initEvent("__adg_gm_command_registered",true,true);event.data={};document.dispatchEvent(event)};__GM_api.GM_addStyle=function(css){var style=document.createElement("style");style.setAttribute("nonce",AdguardSettings.nonce);style.type="text/css";if(style.styleSheet)style.styleSheet.cssText=css;else style.appendChild(document.createTextNode(css)); var head=document.getElementsByTagName("head");if(head&&(head.length>0&&head[0]))head[0].appendChild(style)};__GM_api.GM_setClipboard=function(text){window.prompt("Copy to clipboard: Ctrl+C, Enter",text)};__GM_api.GM_openInTab=function(url){return window.open(url,"_blank")};__GM_api.GM_log=function(message){if(window.console&&window.console.log)window.console.log(message)};__GM_api.ADG_addRule=function(rule){var params={"type":"add","rule":rule};utils.sendGetRequest(params)};__GM_api.ADG_removeRule= function(rule){var params={"type":"remove","rule":rule};utils.sendGetRequest(params)};__GM_api.ADG_temporaryDontBlock=function(timeout){if(!timeout)timeout=30;var domainName=document.location.hostname;var parameter="@@||"+domainName+"$document";var params={"type":"notblock","timeout":timeout,"rule":parameter};utils.sendGetRequest(params)};__GM_api.ADG_sendComplaint=function(url,comment,complaintType){var details={};details.url=AdguardSettings.feedbackUrl+settings.feedbackUrl;details.method="POST"; details.data="applicationId="+encodeURIComponent(AdguardSettings.applicationId)+"&messageType="+encodeURIComponent(complaintType)+"&url="+encodeURIComponent(url)+"&comment="+encodeURIComponent(comment);details.headers="Content-Type: application/x-www-form-urlencoded";GM_xmlhttpRequest(details)};__GM_api.ADG_sendAbuse=function(url){var params={"type":"send-abuse","url":url};utils.sendGetRequest(params)}})();var GM_info=__GM_api.GM_info;var GM_setValue=__GM_api.GM_setValue.bind(__GM_api); var GM_getValue=__GM_api.GM_getValue.bind(__GM_api);var GM_deleteValue=__GM_api.GM_deleteValue.bind(__GM_api);var GM_listValues=__GM_api.GM_listValues.bind(__GM_api);var GM_getResourceText=__GM_api.GM_getResourceText.bind(__GM_api);var GM_openInTab=__GM_api.GM_openInTab.bind(__GM_api);var GM_getResourceURL=__GM_api.GM_getResourceURL.bind(__GM_api);var GM_xmlhttpRequest=__GM_api.GM_xmlhttpRequest.bind(__GM_api);var GM_registerMenuCommand=__GM_api.GM_registerMenuCommand.bind(__GM_api); var GM_addStyle=__GM_api.GM_addStyle.bind(__GM_api);var GM_setClipboard=__GM_api.GM_setClipboard.bind(__GM_api);var GM_log=__GM_api.GM_log.bind(__GM_api);var ADG_addRule=__GM_api.ADG_addRule.bind(__GM_api);var ADG_removeRule=__GM_api.ADG_removeRule.bind(__GM_api);var ADG_temporaryDontBlock=__GM_api.ADG_temporaryDontBlock.bind(__GM_api);var ADG_sendComplaint=__GM_api.ADG_sendComplaint.bind(__GM_api);var ADG_sendAbuse=__GM_api.ADG_sendAbuse.bind(__GM_api); // ==UserScript== // @name Web of Trust // @description Check out any website for reputation and safety information based on users’ experience. // @description:ru Показывает мнение пользователей Интернет о каждом веб-сайте // @description:uk Показує думки користувачів про кожний веб-сайт // @description:de Prüfen Sie den Ruf und Sicherheitsinformationen einer beliebigen Webseite - basierend auf Erfahrungen von Anwendern. // @description:tr Herhangi bir web sitesi hakkında kullanıcıların deneyimlerine dayalı itibar ve güvenlik bilgilerine göz atın. // @description:ko 사용자들의 경험에서 나온 평판과 안전성 정보를 웹 싸이트를 통해 확인해 보세요. // @description:sr Proverite reputaciju i bezbednosne informacije bilo kog veb sajta na osnovu korisničkog iskustva. // @description:pl Sprawdza reputację stron internetowych i informacje dotyczące bezpieczeństwa w oparciu o doświadczenia użytkowników. // @description:zh 在用户体验基础上浏览任何名誉网站和安全信息。 // @description:zh-TW 在用戶體驗基礎上瀏覽任何名譽網站和安全信息。 // @description:sk Na základe skúseností používateľov vyhodnocuje reputáciu a bezpečnosť webových stránok. // @description:fr Vérifier la réputation de n'importe quel site web et la sécurité de l'information sur la base de l'expérience des utilisateurs. // @description:it Controllo qualsiasi sito internet riguardo informazioni di reputazione e sicurezza basato sulle esperienze degli utenti. // @description:vi Xem thông tin danh tiếng và độ an toàn dựa trên trải nghiệm của người dùng đối với website bất kỳ. // @description:es Echa un vistazo a cualquier página de reputación y seguridad basada en la experiencia de los usuarios. // @namespace Adguard // @version 1.0.40 // @downloadURL https://cdn.adguard.com/public/Userscripts/Wot/1.0/wot.user.js // @updateURL https://cdn.adguard.com/public/Userscripts/Wot/1.0/wot.meta.js // @exclude *wikipedia.org* // @exclude *uploadable.ch* // @exclude *kino.kz* // @exclude *www.facebook.com/plugins/сomments* // @exclude *disqus.com/embed/comments* // @exclude *vk.com/widget_comments* // @exclude *www.youtube.com/embed/* // @grant GM_xmlhttpRequest // @grant host:rating.adguard.com // ==/UserScript== var GM_Resources = { 'jquery.js': '77u/LyohDQogKiBQYXRjaCBub3Rlcw0KICoNCiAqIGpRdWVyeSBUZW1wbGF0ZXMgUGx1Z2luOg0KICogLSBkZWZpbmUgaW4gQU1EIHJlbW92ZWQNCiAqIC0gcmVtb3ZlZCAgY29yZV9pbmRleE9mID0gbnVsbCwgY29yZV90cmltID0gbnVsbCBiZWNhdXNlIG9mIGh0dHBzOi8vcGFydHMuYXJyb3cuY29tLw0KICovDQoNCi8qISBqUXVlcnkgdjEuOC4zIGpxdWVyeS5jb20gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8NCihmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIF8oZSl7dmFyIHQ9TVtlXT17fTtyZXR1cm4gdi5lYWNoKGUuc3BsaXQoeSksZnVuY3Rpb24oZSxuKXt0W25dPSEwfSksdH1mdW5jdGlvbiBIKGUsbixyKXtpZihyPT09dCYmZS5ub2RlVHlwZT09PTEpe3ZhciBpPSJkYXRhLSIrbi5yZXBsYWNlKFAsIi0kMSIpLnRvTG93ZXJDYXNlKCk7cj1lLmdldEF0dHJpYnV0ZShpKTtpZih0eXBlb2Ygcj09InN0cmluZyIpe3RyeXtyPXI9PT0idHJ1ZSI/ITA6cj09PSJmYWxzZSI/ITE6cj09PSJudWxsIj9udWxsOityKyIiPT09cj8rcjpELnRlc3Qocik/di5wYXJzZUpTT04ocik6cn1jYXRjaChzKXt9di5kYXRhKGUsbixyKX1lbHNlIHI9dH1yZXR1cm4gcn1mdW5jdGlvbiBCKGUpe3ZhciB0O2Zvcih0IGluIGUpe2lmKHQ9PT0iZGF0YSImJnYuaXNFbXB0eU9iamVjdChlW3RdKSljb250aW51ZTtpZih0IT09InRvSlNPTiIpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gZXQoKXtyZXR1cm4hMX1mdW5jdGlvbiB0dCgpe3JldHVybiEwfWZ1bmN0aW9uIHV0KGUpe3JldHVybiFlfHwhZS5wYXJlbnROb2RlfHxlLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBhdChlLHQpe2RvIGU9ZVt0XTt3aGlsZShlJiZlLm5vZGVUeXBlIT09MSk7cmV0dXJuIGV9ZnVuY3Rpb24gZnQoZSx0LG4pe3Q9dHx8MDtpZih2LmlzRnVuY3Rpb24odCkpcmV0dXJuIHYuZ3JlcChlLGZ1bmN0aW9uKGUscil7dmFyIGk9ISF0LmNhbGwoZSxyLGUpO3JldHVybiBpPT09bn0pO2lmKHQubm9kZVR5cGUpcmV0dXJuIHYuZ3JlcChlLGZ1bmN0aW9uKGUscil7cmV0dXJuIGU9PT10PT09bn0pO2lmKHR5cGVvZiB0PT0ic3RyaW5nIil7dmFyIHI9di5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZVR5cGU9PT0xfSk7aWYoaXQudGVzdCh0KSlyZXR1cm4gdi5maWx0ZXIodCxyLCFuKTt0PXYuZmlsdGVyKHQscil9cmV0dXJuIHYuZ3JlcChlLGZ1bmN0aW9uKGUscil7cmV0dXJuIHYuaW5BcnJheShlLHQpPj0wPT09bn0pfWZ1bmN0aW9uIGx0KGUpe3ZhciB0PWN0LnNwbGl0KCJ8Iiksbj1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihuLmNyZWF0ZUVsZW1lbnQpd2hpbGUodC5sZW5ndGgpbi5jcmVhdGVFbGVtZW50KHQucG9wKCkpO3JldHVybiBufWZ1bmN0aW9uIEx0KGUsdCl7cmV0dXJuIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF18fGUuYXBwZW5kQ2hpbGQoZS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCkpfWZ1bmN0aW9uIEF0KGUsdCl7aWYodC5ub2RlVHlwZSE9PTF8fCF2Lmhhc0RhdGEoZSkpcmV0dXJuO3ZhciBuLHIsaSxzPXYuX2RhdGEoZSksbz12Ll9kYXRhKHQscyksdT1zLmV2ZW50cztpZih1KXtkZWxldGUgby5oYW5kbGUsby5ldmVudHM9e307Zm9yKG4gaW4gdSlmb3Iocj0wLGk9dVtuXS5sZW5ndGg7cjxpO3IrKyl2LmV2ZW50LmFkZCh0LG4sdVtuXVtyXSl9by5kYXRhJiYoby5kYXRhPXYuZXh0ZW5kKHt9LG8uZGF0YSkpfWZ1bmN0aW9uIE90KGUsdCl7dmFyIG47aWYodC5ub2RlVHlwZSE9PTEpcmV0dXJuO3QuY2xlYXJBdHRyaWJ1dGVzJiZ0LmNsZWFyQXR0cmlidXRlcygpLHQubWVyZ2VBdHRyaWJ1dGVzJiZ0Lm1lcmdlQXR0cmlidXRlcyhlKSxuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPT09Im9iamVjdCI/KHQucGFyZW50Tm9kZSYmKHQub3V0ZXJIVE1MPWUub3V0ZXJIVE1MKSx2LnN1cHBvcnQuaHRtbDVDbG9uZSYmZS5pbm5lckhUTUwmJiF2LnRyaW0odC5pbm5lckhUTUwpJiYodC5pbm5lckhUTUw9ZS5pbm5lckhUTUwpKTpuPT09ImlucHV0IiYmRXQudGVzdChlLnR5cGUpPyh0LmRlZmF1bHRDaGVja2VkPXQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZSE9PWUudmFsdWUmJih0LnZhbHVlPWUudmFsdWUpKTpuPT09Im9wdGlvbiI/dC5zZWxlY3RlZD1lLmRlZmF1bHRTZWxlY3RlZDpuPT09ImlucHV0Inx8bj09PSJ0ZXh0YXJlYSI/dC5kZWZhdWx0VmFsdWU9ZS5kZWZhdWx0VmFsdWU6bj09PSJzY3JpcHQiJiZ0LnRleHQhPT1lLnRleHQmJih0LnRleHQ9ZS50ZXh0KSx0LnJlbW92ZUF0dHJpYnV0ZSh2LmV4cGFuZG8pfWZ1bmN0aW9uIE10KGUpe3JldHVybiB0eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2UucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIF90KGUpe0V0LnRlc3QoZS50eXBlKSYmKGUuZGVmYXVsdENoZWNrZWQ9ZS5jaGVja2VkKX1mdW5jdGlvbiBRdChlLHQpe2lmKHQgaW4gZSlyZXR1cm4gdDt2YXIgbj10LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSkscj10LGk9SnQubGVuZ3RoO3doaWxlKGktLSl7dD1KdFtpXStuO2lmKHQgaW4gZSlyZXR1cm4gdH1yZXR1cm4gcn1mdW5jdGlvbiBHdChlLHQpe3JldHVybiBlPXR8fGUsdi5jc3MoZSwiZGlzcGxheSIpPT09Im5vbmUifHwhdi5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSl9ZnVuY3Rpb24gWXQoZSx0KXt2YXIgbixyLGk9W10scz0wLG89ZS5sZW5ndGg7Zm9yKDtzPG87cysrKXtuPWVbc107aWYoIW4uc3R5bGUpY29udGludWU7aVtzXT12Ll9kYXRhKG4sIm9sZGRpc3BsYXkiKSx0PyghaVtzXSYmbi5zdHlsZS5kaXNwbGF5PT09Im5vbmUiJiYobi5zdHlsZS5kaXNwbGF5PSIiKSxuLnN0eWxlLmRpc3BsYXk9PT0iIiYmR3QobikmJihpW3NdPXYuX2RhdGEobiwib2xkZGlzcGxheSIsbm4obi5ub2RlTmFtZSkpKSk6KHI9RHQobiwiZGlzcGxheSIpLCFpW3NdJiZyIT09Im5vbmUiJiZ2Ll9kYXRhKG4sIm9sZGRpc3BsYXkiLHIpKX1mb3Iocz0wO3M8bztzKyspe249ZVtzXTtpZighbi5zdHlsZSljb250aW51ZTtpZighdHx8bi5zdHlsZS5kaXNwbGF5PT09Im5vbmUifHxuLnN0eWxlLmRpc3BsYXk9PT0iIiluLnN0eWxlLmRpc3BsYXk9dD9pW3NdfHwiIjoibm9uZSJ9cmV0dXJuIGV9ZnVuY3Rpb24gWnQoZSx0LG4pe3ZhciByPVJ0LmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzFdLShufHwwKSkrKHJbMl18fCJweCIpOnR9ZnVuY3Rpb24gZW4oZSx0LG4scil7dmFyIGk9bj09PShyPyJib3JkZXIiOiJjb250ZW50Iik/NDp0PT09IndpZHRoIj8xOjAscz0wO2Zvcig7aTw0O2krPTIpbj09PSJtYXJnaW4iJiYocys9di5jc3MoZSxuKyR0W2ldLCEwKSkscj8obj09PSJjb250ZW50IiYmKHMtPXBhcnNlRmxvYXQoRHQoZSwicGFkZGluZyIrJHRbaV0pKXx8MCksbiE9PSJtYXJnaW4iJiYocy09cGFyc2VGbG9hdChEdChlLCJib3JkZXIiKyR0W2ldKyJXaWR0aCIpKXx8MCkpOihzKz1wYXJzZUZsb2F0KER0KGUsInBhZGRpbmciKyR0W2ldKSl8fDAsbiE9PSJwYWRkaW5nIiYmKHMrPXBhcnNlRmxvYXQoRHQoZSwiYm9yZGVyIiskdFtpXSsiV2lkdGgiKSl8fDApKTtyZXR1cm4gc31mdW5jdGlvbiB0bihlLHQsbil7dmFyIHI9dD09PSJ3aWR0aCI/ZS5vZmZzZXRXaWR0aDplLm9mZnNldEhlaWdodCxpPSEwLHM9di5zdXBwb3J0LmJveFNpemluZyYmdi5jc3MoZSwiYm94U2l6aW5nIik9PT0iYm9yZGVyLWJveCI7aWYocjw9MHx8cj09bnVsbCl7cj1EdChlLHQpO2lmKHI8MHx8cj09bnVsbClyPWUuc3R5bGVbdF07aWYoVXQudGVzdChyKSlyZXR1cm4gcjtpPXMmJih2LnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGV8fHI9PT1lLnN0eWxlW3RdKSxyPXBhcnNlRmxvYXQocil8fDB9cmV0dXJuIHIrZW4oZSx0LG58fChzPyJib3JkZXIiOiJjb250ZW50IiksaSkrInB4In1mdW5jdGlvbiBubihlKXtpZihXdFtlXSlyZXR1cm4gV3RbZV07dmFyIHQ9digiPCIrZSsiPiIpLmFwcGVuZFRvKGkuYm9keSksbj10LmNzcygiZGlzcGxheSIpO3QucmVtb3ZlKCk7aWYobj09PSJub25lInx8bj09PSIiKXtQdD1pLmJvZHkuYXBwZW5kQ2hpbGQoUHR8fHYuZXh0ZW5kKGkuY3JlYXRlRWxlbWVudCgiaWZyYW1lIikse2ZyYW1lQm9yZGVyOjAsd2lkdGg6MCxoZWlnaHQ6MH0pKTtpZighSHR8fCFQdC5jcmVhdGVFbGVtZW50KUh0PShQdC5jb250ZW50V2luZG93fHxQdC5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LEh0LndyaXRlKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT4iKSxIdC5jbG9zZSgpO3Q9SHQuYm9keS5hcHBlbmRDaGlsZChIdC5jcmVhdGVFbGVtZW50KGUpKSxuPUR0KHQsImRpc3BsYXkiKSxpLmJvZHkucmVtb3ZlQ2hpbGQoUHQpfXJldHVybiBXdFtlXT1uLG59ZnVuY3Rpb24gZm4oZSx0LG4scil7dmFyIGk7aWYodi5pc0FycmF5KHQpKXYuZWFjaCh0LGZ1bmN0aW9uKHQsaSl7bnx8c24udGVzdChlKT9yKGUsaSk6Zm4oZSsiWyIrKHR5cGVvZiBpPT0ib2JqZWN0Ij90OiIiKSsiXSIsaSxuLHIpfSk7ZWxzZSBpZighbiYmdi50eXBlKHQpPT09Im9iamVjdCIpZm9yKGkgaW4gdClmbihlKyJbIitpKyJdIix0W2ldLG4scik7ZWxzZSByKGUsdCl9ZnVuY3Rpb24gQ24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dHlwZW9mIHQhPSJzdHJpbmciJiYobj10LHQ9IioiKTt2YXIgcixpLHMsbz10LnRvTG93ZXJDYXNlKCkuc3BsaXQoeSksdT0wLGE9by5sZW5ndGg7aWYodi5pc0Z1bmN0aW9uKG4pKWZvcig7dTxhO3UrKylyPW9bdV0scz0vXlwrLy50ZXN0KHIpLHMmJihyPXIuc3Vic3RyKDEpfHwiKiIpLGk9ZVtyXT1lW3JdfHxbXSxpW3M/InVuc2hpZnQiOiJwdXNoIl0obil9fWZ1bmN0aW9uIGtuKGUsbixyLGkscyxvKXtzPXN8fG4uZGF0YVR5cGVzWzBdLG89b3x8e30sb1tzXT0hMDt2YXIgdSxhPWVbc10sZj0wLGw9YT9hLmxlbmd0aDowLGM9ZT09PVNuO2Zvcig7ZjxsJiYoY3x8IXUpO2YrKyl1PWFbZl0obixyLGkpLHR5cGVvZiB1PT0ic3RyaW5nIiYmKCFjfHxvW3VdP3U9dDoobi5kYXRhVHlwZXMudW5zaGlmdCh1KSx1PWtuKGUsbixyLGksdSxvKSkpO3JldHVybihjfHwhdSkmJiFvWyIqIl0mJih1PWtuKGUsbixyLGksIioiLG8pKSx1fWZ1bmN0aW9uIExuKGUsbil7dmFyIHIsaSxzPXYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IociBpbiBuKW5bcl0hPT10JiYoKHNbcl0/ZTppfHwoaT17fSkpW3JdPW5bcl0pO2kmJnYuZXh0ZW5kKCEwLGUsaSl9ZnVuY3Rpb24gQW4oZSxuLHIpe3ZhciBpLHMsbyx1LGE9ZS5jb250ZW50cyxmPWUuZGF0YVR5cGVzLGw9ZS5yZXNwb25zZUZpZWxkcztmb3IocyBpbiBsKXMgaW4gciYmKG5bbFtzXV09cltzXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaT09PXQmJihpPWUubWltZVR5cGV8fG4uZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihpKWZvcihzIGluIGEpaWYoYVtzXSYmYVtzXS50ZXN0KGkpKXtmLnVuc2hpZnQocyk7YnJlYWt9aWYoZlswXWluIHIpbz1mWzBdO2Vsc2V7Zm9yKHMgaW4gcil7aWYoIWZbMF18fGUuY29udmVydGVyc1tzKyIgIitmWzBdXSl7bz1zO2JyZWFrfXV8fCh1PXMpfW89b3x8dX1pZihvKXJldHVybiBvIT09ZlswXSYmZi51bnNoaWZ0KG8pLHJbb119ZnVuY3Rpb24gT24oZSx0KXt2YXIgbixyLGkscyxvPWUuZGF0YVR5cGVzLnNsaWNlKCksdT1vWzBdLGE9e30sZj0wO2UuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVyKHQsZS5kYXRhVHlwZSkpO2lmKG9bMV0pZm9yKG4gaW4gZS5jb252ZXJ0ZXJzKWFbbi50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbbl07Zm9yKDtpPW9bKytmXTspaWYoaSE9PSIqIil7aWYodSE9PSIqIiYmdSE9PWkpe249YVt1KyIgIitpXXx8YVsiKiAiK2ldO2lmKCFuKWZvcihyIGluIGEpe3M9ci5zcGxpdCgiICIpO2lmKHNbMV09PT1pKXtuPWFbdSsiICIrc1swXV18fGFbIiogIitzWzBdXTtpZihuKXtuPT09ITA/bj1hW3JdOmFbcl0hPT0hMCYmKGk9c1swXSxvLnNwbGljZShmLS0sMCxpKSk7YnJlYWt9fX1pZihuIT09ITApaWYobiYmZVsidGhyb3dzIl0pdD1uKHQpO2Vsc2UgdHJ5e3Q9bih0KX1jYXRjaChsKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjpuP2w6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK3UrIiB0byAiK2l9fX11PWl9cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fWZ1bmN0aW9uIEZuKCl7dHJ5e3JldHVybiBuZXcgZS5YTUxIdHRwUmVxdWVzdH1jYXRjaCh0KXt9fWZ1bmN0aW9uIEluKCl7dHJ5e3JldHVybiBuZXcgZS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKHQpe319ZnVuY3Rpb24gJG4oKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3FuPXR9LDApLHFuPXYubm93KCl9ZnVuY3Rpb24gSm4oZSx0KXt2LmVhY2godCxmdW5jdGlvbih0LG4pe3ZhciByPShWblt0XXx8W10pLmNvbmNhdChWblsiKiJdKSxpPTAscz1yLmxlbmd0aDtmb3IoO2k8cztpKyspaWYocltpXS5jYWxsKGUsdCxuKSlyZXR1cm59KX1mdW5jdGlvbiBLbihlLHQsbil7dmFyIHIsaT0wLHM9MCxvPVhuLmxlbmd0aCx1PXYuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgYS5lbGVtfSksYT1mdW5jdGlvbigpe3ZhciB0PXFufHwkbigpLG49TWF0aC5tYXgoMCxmLnN0YXJ0VGltZStmLmR1cmF0aW9uLXQpLHI9bi9mLmR1cmF0aW9ufHwwLGk9MS1yLHM9MCxvPWYudHdlZW5zLmxlbmd0aDtmb3IoO3M8bztzKyspZi50d2VlbnNbc10ucnVuKGkpO3JldHVybiB1Lm5vdGlmeVdpdGgoZSxbZixpLG5dKSxpPDEmJm8/bjoodS5yZXNvbHZlV2l0aChlLFtmXSksITEpfSxmPXUucHJvbWlzZSh7ZWxlbTplLHByb3BzOnYuZXh0ZW5kKHt9LHQpLG9wdHM6di5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LG4pLG9yaWdpbmFsUHJvcGVydGllczp0LG9yaWdpbmFsT3B0aW9uczpuLHN0YXJ0VGltZTpxbnx8JG4oKSxkdXJhdGlvbjpuLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbih0LG4scil7dmFyIGk9di5Ud2VlbihlLGYub3B0cyx0LG4sZi5vcHRzLnNwZWNpYWxFYXNpbmdbdF18fGYub3B0cy5lYXNpbmcpO3JldHVybiBmLnR3ZWVucy5wdXNoKGkpLGl9LHN0b3A6ZnVuY3Rpb24odCl7dmFyIG49MCxyPXQ/Zi50d2VlbnMubGVuZ3RoOjA7Zm9yKDtuPHI7bisrKWYudHdlZW5zW25dLnJ1bigxKTtyZXR1cm4gdD91LnJlc29sdmVXaXRoKGUsW2YsdF0pOnUucmVqZWN0V2l0aChlLFtmLHRdKSx0aGlzfX0pLGw9Zi5wcm9wcztRbihsLGYub3B0cy5zcGVjaWFsRWFzaW5nKTtmb3IoO2k8bztpKyspe3I9WG5baV0uY2FsbChmLGUsbCxmLm9wdHMpO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIEpuKGYsbCksdi5pc0Z1bmN0aW9uKGYub3B0cy5zdGFydCkmJmYub3B0cy5zdGFydC5jYWxsKGUsZiksdi5meC50aW1lcih2LmV4dGVuZChhLHthbmltOmYscXVldWU6Zi5vcHRzLnF1ZXVlLGVsZW06ZX0pKSxmLnByb2dyZXNzKGYub3B0cy5wcm9ncmVzcykuZG9uZShmLm9wdHMuZG9uZSxmLm9wdHMuY29tcGxldGUpLmZhaWwoZi5vcHRzLmZhaWwpLmFsd2F5cyhmLm9wdHMuYWx3YXlzKX1mdW5jdGlvbiBRbihlLHQpe3ZhciBuLHIsaSxzLG87Zm9yKG4gaW4gZSl7cj12LmNhbWVsQ2FzZShuKSxpPXRbcl0scz1lW25dLHYuaXNBcnJheShzKSYmKGk9c1sxXSxzPWVbbl09c1swXSksbiE9PXImJihlW3JdPXMsZGVsZXRlIGVbbl0pLG89di5jc3NIb29rc1tyXTtpZihvJiYiZXhwYW5kImluIG8pe3M9by5leHBhbmQocyksZGVsZXRlIGVbcl07Zm9yKG4gaW4gcyluIGluIGV8fChlW25dPXNbbl0sdFtuXT1pKX1lbHNlIHRbcl09aX19ZnVuY3Rpb24gR24oZSx0LG4pe3ZhciByLGkscyxvLHUsYSxmLGwsYyxoPXRoaXMscD1lLnN0eWxlLGQ9e30sbT1bXSxnPWUubm9kZVR5cGUmJkd0KGUpO24ucXVldWV8fChsPXYuX3F1ZXVlSG9va3MoZSwiZngiKSxsLnVucXVldWVkPT1udWxsJiYobC51bnF1ZXVlZD0wLGM9bC5lbXB0eS5maXJlLGwuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2wudW5xdWV1ZWR8fGMoKX0pLGwudW5xdWV1ZWQrKyxoLmFsd2F5cyhmdW5jdGlvbigpe2guYWx3YXlzKGZ1bmN0aW9uKCl7bC51bnF1ZXVlZC0tLHYucXVldWUoZSwiZngiKS5sZW5ndGh8fGwuZW1wdHkuZmlyZSgpfSl9KSksZS5ub2RlVHlwZT09PTEmJigiaGVpZ2h0ImluIHR8fCJ3aWR0aCJpbiB0KSYmKG4ub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLHYuY3NzKGUsImRpc3BsYXkiKT09PSJpbmxpbmUiJiZ2LmNzcyhlLCJmbG9hdCIpPT09Im5vbmUiJiYoIXYuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0fHxubihlLm5vZGVOYW1lKT09PSJpbmxpbmUiP3AuZGlzcGxheT0iaW5saW5lLWJsb2NrIjpwLnpvb209MSkpLG4ub3ZlcmZsb3cmJihwLm92ZXJmbG93PSJoaWRkZW4iLHYuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzfHxoLmRvbmUoZnVuY3Rpb24oKXtwLm92ZXJmbG93PW4ub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9bi5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1uLm92ZXJmbG93WzJdfSkpO2ZvcihyIGluIHQpe3M9dFtyXTtpZihVbi5leGVjKHMpKXtkZWxldGUgdFtyXSxhPWF8fHM9PT0idG9nZ2xlIjtpZihzPT09KGc/ImhpZGUiOiJzaG93IikpY29udGludWU7bS5wdXNoKHIpfX1vPW0ubGVuZ3RoO2lmKG8pe3U9di5fZGF0YShlLCJmeHNob3ciKXx8di5fZGF0YShlLCJmeHNob3ciLHt9KSwiaGlkZGVuImluIHUmJihnPXUuaGlkZGVuKSxhJiYodS5oaWRkZW49IWcpLGc/dihlKS5zaG93KCk6aC5kb25lKGZ1bmN0aW9uKCl7dihlKS5oaWRlKCl9KSxoLmRvbmUoZnVuY3Rpb24oKXt2YXIgdDt2LnJlbW92ZURhdGEoZSwiZnhzaG93IiwhMCk7Zm9yKHQgaW4gZCl2LnN0eWxlKGUsdCxkW3RdKX0pO2ZvcihyPTA7cjxvO3IrKylpPW1bcl0sZj1oLmNyZWF0ZVR3ZWVuKGksZz91W2ldOjApLGRbaV09dVtpXXx8di5zdHlsZShlLGkpLGkgaW4gdXx8KHVbaV09Zi5zdGFydCxnJiYoZi5lbmQ9Zi5zdGFydCxmLnN0YXJ0PWk9PT0id2lkdGgifHxpPT09ImhlaWdodCI/MTowKSl9fWZ1bmN0aW9uIFluKGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBZbi5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfWZ1bmN0aW9uIFpuKGUsdCl7dmFyIG4scj17aGVpZ2h0OmV9LGk9MDt0PXQ/MTowO2Zvcig7aTw0O2krPTItdCluPSR0W2ldLHJbIm1hcmdpbiIrbl09clsicGFkZGluZyIrbl09ZTtyZXR1cm4gdCYmKHIub3BhY2l0eT1yLndpZHRoPWUpLHJ9ZnVuY3Rpb24gdHIoZSl7cmV0dXJuIHYuaXNXaW5kb3coZSk/ZTplLm5vZGVUeXBlPT09OT9lLmRlZmF1bHRWaWV3fHxlLnBhcmVudFdpbmRvdzohMX12YXIgbixyLGk9ZS5kb2N1bWVudCxzPWUubG9jYXRpb24sbz1lLm5hdmlnYXRvcix1PWUualF1ZXJ5LGE9ZS4kLGY9QXJyYXkucHJvdG90eXBlLnB1c2gsbD1BcnJheS5wcm90b3R5cGUuc2xpY2UsYz1udWxsLGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxwPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZD1udWxsLHY9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHYuZm4uaW5pdChlLHQsbil9LG09L1tcLStdPyg/OlxkKlwufClcZCsoPzpbZUVdW1wtK10/XGQrfCkvLnNvdXJjZSxnPS9cUy8seT0vXHMrLyxiPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyx3PS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxFPS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sUz0vXltcXSw6e31cc10qJC8seD0vKD86Xnw6fCwpKD86XHMqXFspKy9nLFQ9L1xcKD86WyJcXFwvYmZucnRdfHVbXGRhLWZBLUZdezR9KS9nLE49LyJbXiJcXFxyXG5dKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/KD86XGRcZCpcLnwpXGQrKD86W2VFXVtcLStdP1xkK3wpL2csQz0vXi1tcy0vLGs9Ly0oW1xkYS16XSkvZ2ksTD1mdW5jdGlvbihlLHQpe3JldHVybih0KyIiKS50b1VwcGVyQ2FzZSgpfSxBPWZ1bmN0aW9uKCl7aS5hZGRFdmVudExpc3RlbmVyPyhpLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEEsITEpLHYucmVhZHkoKSk6aS5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGkuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQSksdi5yZWFkeSgpKX0sTz17fTt2LmZuPXYucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp2LGluaXQ6ZnVuY3Rpb24oZSxuLHIpe3ZhciBzLG8sdSxhO2lmKCFlKXJldHVybiB0aGlzO2lmKGUubm9kZVR5cGUpcmV0dXJuIHRoaXMuY29udGV4dD10aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzO2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7ZS5jaGFyQXQoMCk9PT0iPCImJmUuY2hhckF0KGUubGVuZ3RoLTEpPT09Ij4iJiZlLmxlbmd0aD49Mz9zPVtudWxsLGUsbnVsbF06cz13LmV4ZWMoZSk7aWYocyYmKHNbMV18fCFuKSl7aWYoc1sxXSlyZXR1cm4gbj1uIGluc3RhbmNlb2Ygdj9uWzBdOm4sYT1uJiZuLm5vZGVUeXBlP24ub3duZXJEb2N1bWVudHx8bjppLGU9di5wYXJzZUhUTUwoc1sxXSxhLCEwKSxFLnRlc3Qoc1sxXSkmJnYuaXNQbGFpbk9iamVjdChuKSYmdGhpcy5hdHRyLmNhbGwoZSxuLCEwKSx2Lm1lcmdlKHRoaXMsZSk7bz1pLmdldEVsZW1lbnRCeUlkKHNbMl0pO2lmKG8mJm8ucGFyZW50Tm9kZSl7aWYoby5pZCE9PXNbMl0pcmV0dXJuIHIuZmluZChlKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09b31yZXR1cm4gdGhpcy5jb250ZXh0PWksdGhpcy5zZWxlY3Rvcj1lLHRoaXN9cmV0dXJuIW58fG4uanF1ZXJ5PyhufHxyKS5maW5kKGUpOnRoaXMuY29uc3RydWN0b3IobikuZmluZChlKX1yZXR1cm4gdi5pc0Z1bmN0aW9uKGUpP3IucmVhZHkoZSk6KGUuc2VsZWN0b3IhPT10JiYodGhpcy5zZWxlY3Rvcj1lLnNlbGVjdG9yLHRoaXMuY29udGV4dD1lLmNvbnRleHQpLHYubWFrZUFycmF5KGUsdGhpcykpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuOC4zIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGwuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlPT1udWxsP3RoaXMudG9BcnJheSgpOmU8MD90aGlzW3RoaXMubGVuZ3RoK2VdOnRoaXNbZV19LHB1c2hTdGFjazpmdW5jdGlvbihlLHQsbil7dmFyIHI9di5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHIucHJldk9iamVjdD10aGlzLHIuY29udGV4dD10aGlzLmNvbnRleHQsdD09PSJmaW5kIj9yLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStuOnQmJihyLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK3QrIigiK24rIikiKSxyfSxlYWNoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHYuZWFjaCh0aGlzLGUsdCl9LHJlYWR5OmZ1bmN0aW9uKGUpe3JldHVybiB2LnJlYWR5LnByb21pc2UoKS5kb25lKGUpLHRoaXN9LGVxOmZ1bmN0aW9uKGUpe3JldHVybiBlPStlLGU9PT0tMT90aGlzLnNsaWNlKGUpOnRoaXMuc2xpY2UoZSxlKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLGwuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodi5tYXAodGhpcyxmdW5jdGlvbih0LG4pe3JldHVybiBlLmNhbGwodCxuLHQpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOmYsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LHYuZm4uaW5pdC5wcm90b3R5cGU9di5mbix2LmV4dGVuZD12LmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBlLG4scixpLHMsbyx1PWFyZ3VtZW50c1swXXx8e30sYT0xLGY9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiB1PT0iYm9vbGVhbiImJihsPXUsdT1hcmd1bWVudHNbMV18fHt9LGE9MiksdHlwZW9mIHUhPSJvYmplY3QiJiYhdi5pc0Z1bmN0aW9uKHUpJiYodT17fSksZj09PWEmJih1PXRoaXMsLS1hKTtmb3IoO2E8ZjthKyspaWYoKGU9YXJndW1lbnRzW2FdKSE9bnVsbClmb3IobiBpbiBlKXtyPXVbbl0saT1lW25dO2lmKHU9PT1pKWNvbnRpbnVlO2wmJmkmJih2LmlzUGxhaW5PYmplY3QoaSl8fChzPXYuaXNBcnJheShpKSkpPyhzPyhzPSExLG89ciYmdi5pc0FycmF5KHIpP3I6W10pOm89ciYmdi5pc1BsYWluT2JqZWN0KHIpP3I6e30sdVtuXT12LmV4dGVuZChsLG8saSkpOmkhPT10JiYodVtuXT1pKX1yZXR1cm4gdX0sdi5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGUuJD09PXYmJihlLiQ9YSksdCYmZS5qUXVlcnk9PT12JiYoZS5qUXVlcnk9dSksdn0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oZSl7ZT92LnJlYWR5V2FpdCsrOnYucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihlKXtpZihlPT09ITA/LS12LnJlYWR5V2FpdDp2LmlzUmVhZHkpcmV0dXJuO2lmKCFpLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQodi5yZWFkeSwxKTt2LmlzUmVhZHk9ITA7aWYoZSE9PSEwJiYtLXYucmVhZHlXYWl0PjApcmV0dXJuO3IucmVzb2x2ZVdpdGgoaSxbdl0pLHYuZm4udHJpZ2dlciYmdihpKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKX0saXNGdW5jdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gdi50eXBlKGUpPT09ImZ1bmN0aW9uIn0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4gdi50eXBlKGUpPT09ImFycmF5In0saXNXaW5kb3c6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPW51bGwmJmU9PWUud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX0sdHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gZT09bnVsbD9TdHJpbmcoZSk6T1toLmNhbGwoZSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXtpZighZXx8di50eXBlKGUpIT09Im9iamVjdCJ8fGUubm9kZVR5cGV8fHYuaXNXaW5kb3coZSkpcmV0dXJuITE7dHJ5e2lmKGUuY29uc3RydWN0b3ImJiFwLmNhbGwoZSwiY29uc3RydWN0b3IiKSYmIXAuY2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKG4pe3JldHVybiExfXZhciByO2ZvcihyIGluIGUpO3JldHVybiByPT09dHx8cC5jYWxsKGUscil9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxwYXJzZUhUTUw6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiFlfHx0eXBlb2YgZSE9InN0cmluZyI/bnVsbDoodHlwZW9mIHQ9PSJib29sZWFuIiYmKG49dCx0PTApLHQ9dHx8aSwocj1FLmV4ZWMoZSkpP1t0LmNyZWF0ZUVsZW1lbnQoclsxXSldOihyPXYuYnVpbGRGcmFnbWVudChbZV0sdCxuP251bGw6W10pLHYubWVyZ2UoW10sKHIuY2FjaGVhYmxlP3YuY2xvbmUoci5mcmFnbWVudCk6ci5mcmFnbWVudCkuY2hpbGROb2RlcykpKX0scGFyc2VKU09OOmZ1bmN0aW9uKHQpe2lmKCF0fHx0eXBlb2YgdCE9InN0cmluZyIpcmV0dXJuIG51bGw7dD12LnRyaW0odCk7aWYoZS5KU09OJiZlLkpTT04ucGFyc2UpcmV0dXJuIGUuSlNPTi5wYXJzZSh0KTtpZihTLnRlc3QodC5yZXBsYWNlKFQsIkAiKS5yZXBsYWNlKE4sIl0iKS5yZXBsYWNlKHgsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIit0KSkoKTt2LmVycm9yKCJJbnZhbGlkIEpTT046ICIrdCl9LHBhcnNlWE1MOmZ1bmN0aW9uKG4pe3ZhciByLGk7aWYoIW58fHR5cGVvZiBuIT0ic3RyaW5nIilyZXR1cm4gbnVsbDt0cnl7ZS5ET01QYXJzZXI/KGk9bmV3IERPTVBhcnNlcixyPWkucGFyc2VGcm9tU3RyaW5nKG4sInRleHQveG1sIikpOihyPW5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MRE9NIiksci5hc3luYz0iZmFsc2UiLHIubG9hZFhNTChuKSl9Y2F0Y2gocyl7cj10fXJldHVybighcnx8IXIuZG9jdW1lbnRFbGVtZW50fHxyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCkmJnYuZXJyb3IoIkludmFsaWQgWE1MOiAiK24pLHJ9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24odCl7dCYmZy50ZXN0KHQpJiYoZS5leGVjU2NyaXB0fHxmdW5jdGlvbih0KXtlLmV2YWwuY2FsbChlLHQpfSkodCl9LGNhbWVsQ2FzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEMsIm1zLSIpLnJlcGxhY2UoayxMKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxzPTAsbz1lLmxlbmd0aCx1PW89PT10fHx2LmlzRnVuY3Rpb24oZSk7aWYocil7aWYodSl7Zm9yKGkgaW4gZSlpZihuLmFwcGx5KGVbaV0scik9PT0hMSlicmVha31lbHNlIGZvcig7czxvOylpZihuLmFwcGx5KGVbcysrXSxyKT09PSExKWJyZWFrfWVsc2UgaWYodSl7Zm9yKGkgaW4gZSlpZihuLmNhbGwoZVtpXSxpLGVbaV0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoO3M8bzspaWYobi5jYWxsKGVbc10scyxlW3MrK10pPT09ITEpYnJlYWs7cmV0dXJuIGV9LHRyaW06ZCYmIWQuY2FsbCgiXHVmZWZmXHUwMGEwIik/ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PW51bGw/IiI6ZC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gZT09bnVsbD8iIjooZSsiIikucmVwbGFjZShiLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj10fHxbXTtyZXR1cm4gZSE9bnVsbCYmKG49di50eXBlKGUpLGUubGVuZ3RoPT1udWxsfHxuPT09InN0cmluZyJ8fG49PT0iZnVuY3Rpb24ifHxuPT09InJlZ2V4cCJ8fHYuaXNXaW5kb3coZSk/Zi5jYWxsKHIsZSk6di5tZXJnZShyLGUpKSxyfSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih0KXtpZihjKXJldHVybiBjLmNhbGwodCxlLG4pO3I9dC5sZW5ndGgsbj1uP248MD9NYXRoLm1heCgwLHIrbik6bjowO2Zvcig7bjxyO24rKylpZihuIGluIHQmJnRbbl09PT1lKXJldHVybiBufXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihlLG4pe3ZhciByPW4ubGVuZ3RoLGk9ZS5sZW5ndGgscz0wO2lmKHR5cGVvZiByPT0ibnVtYmVyIilmb3IoO3M8cjtzKyspZVtpKytdPW5bc107ZWxzZSB3aGlsZShuW3NdIT09dCllW2krK109bltzKytdO3JldHVybiBlLmxlbmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9W10scz0wLG89ZS5sZW5ndGg7bj0hIW47Zm9yKDtzPG87cysrKXI9ISF0KGVbc10scyksbiE9PXImJmkucHVzaChlW3NdKTtyZXR1cm4gaX0sbWFwOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxzLG89W10sdT0wLGE9ZS5sZW5ndGgsZj1lIGluc3RhbmNlb2Ygdnx8YSE9PXQmJnR5cGVvZiBhPT0ibnVtYmVyIiYmKGE+MCYmZVswXSYmZVthLTFdfHxhPT09MHx8di5pc0FycmF5KGUpKTtpZihmKWZvcig7dTxhO3UrKylpPW4oZVt1XSx1LHIpLGkhPW51bGwmJihvW28ubGVuZ3RoXT1pKTtlbHNlIGZvcihzIGluIGUpaT1uKGVbc10scyxyKSxpIT1udWxsJiYob1tvLmxlbmd0aF09aSk7cmV0dXJuIG8uY29uY2F0LmFwcGx5KFtdLG8pfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oZSxuKXt2YXIgcixpLHM7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIiYmKHI9ZVtuXSxuPWUsZT1yKSx2LmlzRnVuY3Rpb24oZSk/KGk9bC5jYWxsKGFyZ3VtZW50cywyKSxzPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobixpLmNvbmNhdChsLmNhbGwoYXJndW1lbnRzKSkpfSxzLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8di5ndWlkKysscyk6dH0sYWNjZXNzOmZ1bmN0aW9uKGUsbixyLGkscyxvLHUpe3ZhciBhLGY9cj09bnVsbCxsPTAsYz1lLmxlbmd0aDtpZihyJiZ0eXBlb2Ygcj09Im9iamVjdCIpe2ZvcihsIGluIHIpdi5hY2Nlc3MoZSxuLGwscltsXSwxLG8saSk7cz0xfWVsc2UgaWYoaSE9PXQpe2E9dT09PXQmJnYuaXNGdW5jdGlvbihpKSxmJiYoYT8oYT1uLG49ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBhLmNhbGwodihlKSxuKX0pOihuLmNhbGwoZSxpKSxuPW51bGwpKTtpZihuKWZvcig7bDxjO2wrKyluKGVbbF0scixhP2kuY2FsbChlW2xdLGwsbihlW2xdLHIpKTppLHUpO3M9MX1yZXR1cm4gcz9lOmY/bi5jYWxsKGUpOmM/bihlWzBdLHIpOm99LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pLHYucmVhZHkucHJvbWlzZT1mdW5jdGlvbih0KXtpZighcil7cj12LkRlZmVycmVkKCk7aWYoaS5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIilzZXRUaW1lb3V0KHYucmVhZHksMSk7ZWxzZSBpZihpLmFkZEV2ZW50TGlzdGVuZXIpaS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixBLCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHYucmVhZHksITEpO2Vsc2V7aS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixBKSxlLmF0dGFjaEV2ZW50KCJvbmxvYWQiLHYucmVhZHkpO3ZhciBuPSExO3RyeXtuPWUuZnJhbWVFbGVtZW50PT1udWxsJiZpLmRvY3VtZW50RWxlbWVudH1jYXRjaChzKXt9biYmbi5kb1Njcm9sbCYmZnVuY3Rpb24gbygpe2lmKCF2LmlzUmVhZHkpe3RyeXtuLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goZSl7cmV0dXJuIHNldFRpbWVvdXQobyw1MCl9di5yZWFkeSgpfX0oKX19cmV0dXJuIHIucHJvbWlzZSh0KX0sdi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7T1siW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KSxuPXYoaSk7dmFyIE09e307di5DYWxsYmFja3M9ZnVuY3Rpb24oZSl7ZT10eXBlb2YgZT09InN0cmluZyI/TVtlXXx8XyhlKTp2LmV4dGVuZCh7fSxlKTt2YXIgbixyLGkscyxvLHUsYT1bXSxmPSFlLm9uY2UmJltdLGw9ZnVuY3Rpb24odCl7bj1lLm1lbW9yeSYmdCxyPSEwLHU9c3x8MCxzPTAsbz1hLmxlbmd0aCxpPSEwO2Zvcig7YSYmdTxvO3UrKylpZihhW3VdLmFwcGx5KHRbMF0sdFsxXSk9PT0hMSYmZS5zdG9wT25GYWxzZSl7bj0hMTticmVha31pPSExLGEmJihmP2YubGVuZ3RoJiZsKGYuc2hpZnQoKSk6bj9hPVtdOmMuZGlzYWJsZSgpKX0sYz17YWRkOmZ1bmN0aW9uKCl7aWYoYSl7dmFyIHQ9YS5sZW5ndGg7KGZ1bmN0aW9uIHIodCl7di5lYWNoKHQsZnVuY3Rpb24odCxuKXt2YXIgaT12LnR5cGUobik7aT09PSJmdW5jdGlvbiI/KCFlLnVuaXF1ZXx8IWMuaGFzKG4pKSYmYS5wdXNoKG4pOm4mJm4ubGVuZ3RoJiZpIT09InN0cmluZyImJnIobil9KX0pKGFyZ3VtZW50cyksaT9vPWEubGVuZ3RoOm4mJihzPXQsbChuKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBhJiZ2LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGUsdCl7dmFyIG47d2hpbGUoKG49di5pbkFycmF5KHQsYSxuKSk+LTEpYS5zcGxpY2UobiwxKSxpJiYobjw9byYmby0tLG48PXUmJnUtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHYuaW5BcnJheShlLGEpPi0xfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBhPVtdLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gYT1mPW49dCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFhfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGY9dCxufHxjLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZn0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHxbXSx0PVtlLHQuc2xpY2U/dC5zbGljZSgpOnRdLGEmJighcnx8ZikmJihpP2YucHVzaCh0KTpsKHQpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFyfX07cmV0dXJuIGN9LHYuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgdD1bWyJyZXNvbHZlIiwiZG9uZSIsdi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIix2LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIix2LkNhbGxiYWNrcygibWVtb3J5IildXSxuPSJwZW5kaW5nIixyPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBufSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7cmV0dXJuIHYuRGVmZXJyZWQoZnVuY3Rpb24obil7di5lYWNoKHQsZnVuY3Rpb24odCxyKXt2YXIgcz1yWzBdLG89ZVt0XTtpW3JbMV1dKHYuaXNGdW5jdGlvbihvKT9mdW5jdGlvbigpe3ZhciBlPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJnYuaXNGdW5jdGlvbihlLnByb21pc2UpP2UucHJvbWlzZSgpLmRvbmUobi5yZXNvbHZlKS5mYWlsKG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSk6bltzKyJXaXRoIl0odGhpcz09PWk/bjp0aGlzLFtlXSl9Om5bc10pfSksZT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGUpe3JldHVybiBlIT1udWxsP3YuZXh0ZW5kKGUscik6cn19LGk9e307cmV0dXJuIHIucGlwZT1yLnRoZW4sdi5lYWNoKHQsZnVuY3Rpb24oZSxzKXt2YXIgbz1zWzJdLHU9c1szXTtyW3NbMV1dPW8uYWRkLHUmJm8uYWRkKGZ1bmN0aW9uKCl7bj11fSx0W2VeMV1bMl0uZGlzYWJsZSx0WzJdWzJdLmxvY2spLGlbc1swXV09by5maXJlLGlbc1swXSsiV2l0aCJdPW8uZmlyZVdpdGh9KSxyLnByb21pc2UoaSksZSYmZS5jYWxsKGksaSksaX0sd2hlbjpmdW5jdGlvbihlKXt2YXIgdD0wLG49bC5jYWxsKGFyZ3VtZW50cykscj1uLmxlbmd0aCxpPXIhPT0xfHxlJiZ2LmlzRnVuY3Rpb24oZS5wcm9taXNlKT9yOjAscz1pPT09MT9lOnYuRGVmZXJyZWQoKSxvPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dFtlXT10aGlzLG5bZV09YXJndW1lbnRzLmxlbmd0aD4xP2wuY2FsbChhcmd1bWVudHMpOnIsbj09PXU/cy5ub3RpZnlXaXRoKHQsbik6LS1pfHxzLnJlc29sdmVXaXRoKHQsbil9fSx1LGEsZjtpZihyPjEpe3U9bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLGY9bmV3IEFycmF5KHIpO2Zvcig7dDxyO3QrKyluW3RdJiZ2LmlzRnVuY3Rpb24oblt0XS5wcm9taXNlKT9uW3RdLnByb21pc2UoKS5kb25lKG8odCxmLG4pKS5mYWlsKHMucmVqZWN0KS5wcm9ncmVzcyhvKHQsYSx1KSk6LS1pfXJldHVybiBpfHxzLnJlc29sdmVXaXRoKGYsbikscy5wcm9taXNlKCl9fSksdi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIHQsbixyLHMsbyx1LGEsZixsLGMsaCxwPWkuY3JlYXRlRWxlbWVudCgiZGl2Iik7cC5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxwLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixuPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxyPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighbnx8IXJ8fCFuLmxlbmd0aClyZXR1cm57fTtzPWkuY3JlYXRlRWxlbWVudCgic2VsZWN0Iiksbz1zLmFwcGVuZENoaWxkKGkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHU9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxyLnN0eWxlLmNzc1RleHQ9InRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41Iix0PXtsZWFkaW5nV2hpdGVzcGFjZTpwLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhcC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KHIuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpyLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41Ly50ZXN0KHIuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFyLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246dS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6by5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6cC5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWkuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZTppLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLGJveE1vZGVsOmkuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5nUmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0sdS5jaGVja2VkPSEwLHQubm9DbG9uZUNoZWNrZWQ9dS5jbG9uZU5vZGUoITApLmNoZWNrZWQscy5kaXNhYmxlZD0hMCx0Lm9wdERpc2FibGVkPSFvLmRpc2FibGVkO3RyeXtkZWxldGUgcC50ZXN0fWNhdGNoKGQpe3QuZGVsZXRlRXhwYW5kbz0hMX0hcC5hZGRFdmVudExpc3RlbmVyJiZwLmF0dGFjaEV2ZW50JiZwLmZpcmVFdmVudCYmKHAuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGg9ZnVuY3Rpb24oKXt0Lm5vQ2xvbmVFdmVudD0hMX0pLHAuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSxwLmRldGFjaEV2ZW50KCJvbmNsaWNrIixoKSksdT1pLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksdS52YWx1ZT0idCIsdS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLHQucmFkaW9WYWx1ZT11LnZhbHVlPT09InQiLHUuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLHUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHAuYXBwZW5kQ2hpbGQodSksYT1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxhLmFwcGVuZENoaWxkKHAubGFzdENoaWxkKSx0LmNoZWNrQ2xvbmU9YS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsdC5hcHBlbmRDaGVja2VkPXUuY2hlY2tlZCxhLnJlbW92ZUNoaWxkKHUpLGEuYXBwZW5kQ2hpbGQocCk7aWYocC5hdHRhY2hFdmVudClmb3IobCBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWY9Im9uIitsLGM9ZiBpbiBwLGN8fChwLnNldEF0dHJpYnV0ZShmLCJyZXR1cm47IiksYz10eXBlb2YgcFtmXT09ImZ1bmN0aW9uIiksdFtsKyJCdWJibGVzIl09YztyZXR1cm4gdihmdW5jdGlvbigpe3ZhciBuLHIscyxvLHU9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjsiLGE9aS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO2lmKCFhKXJldHVybjtuPWkuY3JlYXRlRWxlbWVudCgiZGl2Iiksbi5zdHlsZS5jc3NUZXh0PSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOjFweCIsYS5pbnNlcnRCZWZvcmUobixhLmZpcnN0Q2hpbGQpLHI9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSxuLmFwcGVuZENoaWxkKHIpLHIuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixzPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksc1swXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixjPXNbMF0ub2Zmc2V0SGVpZ2h0PT09MCxzWzBdLnN0eWxlLmRpc3BsYXk9IiIsc1sxXS5zdHlsZS5kaXNwbGF5PSJub25lIix0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1jJiZzWzBdLm9mZnNldEhlaWdodD09PTAsci5pbm5lckhUTUw9IiIsci5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLHQuYm94U2l6aW5nPXIub2Zmc2V0V2lkdGg9PT00LHQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9YS5vZmZzZXRUb3AhPT0xLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQucGl4ZWxQb3NpdGlvbj0oZS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCl8fHt9KS50b3AhPT0iMSUiLHQuYm94U2l6aW5nUmVsaWFibGU9KGUuZ2V0Q29tcHV0ZWRTdHlsZShyLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aD09PSI0cHgiLG89aS5jcmVhdGVFbGVtZW50KCJkaXYiKSxvLnN0eWxlLmNzc1RleHQ9ci5zdHlsZS5jc3NUZXh0PXUsby5zdHlsZS5tYXJnaW5SaWdodD1vLnN0eWxlLndpZHRoPSIwIixyLnN0eWxlLndpZHRoPSIxcHgiLHIuYXBwZW5kQ2hpbGQobyksdC5yZWxpYWJsZU1hcmdpblJpZ2h0PSFwYXJzZUZsb2F0KChlLmdldENvbXB1dGVkU3R5bGUobyxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSksdHlwZW9mIHIuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihyLmlubmVySFRNTD0iIixyLnN0eWxlLmNzc1RleHQ9dSsid2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pvb206MSIsdC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PXIub2Zmc2V0V2lkdGg9PT0zLHIuc3R5bGUuZGlzcGxheT0iYmxvY2siLHIuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHIuaW5uZXJIVE1MPSI8ZGl2PjwvZGl2PiIsci5maXJzdENoaWxkLnN0eWxlLndpZHRoPSI1cHgiLHQuc2hyaW5rV3JhcEJsb2Nrcz1yLm9mZnNldFdpZHRoIT09MyxuLnN0eWxlLnpvb209MSksYS5yZW1vdmVDaGlsZChuKSxuPXI9cz1vPW51bGx9KSxhLnJlbW92ZUNoaWxkKHApLG49cj1zPW89dT1hPXA9bnVsbCx0fSgpO3ZhciBEPS8oPzpce1tcc1xTXSpcfXxcW1tcc1xTXSpcXSkkLyxQPS8oW0EtWl0pL2c7di5leHRlbmQoe2NhY2hlOnt9LGRlbGV0ZWRJZHM6W10sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKHYuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gZT1lLm5vZGVUeXBlP3YuY2FjaGVbZVt2LmV4cGFuZG9dXTplW3YuZXhwYW5kb10sISFlJiYhQihlKX0sZGF0YTpmdW5jdGlvbihlLG4scixpKXtpZighdi5hY2NlcHREYXRhKGUpKXJldHVybjt2YXIgcyxvLHU9di5leHBhbmRvLGE9dHlwZW9mIG49PSJzdHJpbmciLGY9ZS5ub2RlVHlwZSxsPWY/di5jYWNoZTplLGM9Zj9lW3VdOmVbdV0mJnU7aWYoKCFjfHwhbFtjXXx8IWkmJiFsW2NdLmRhdGEpJiZhJiZyPT09dClyZXR1cm47Y3x8KGY/ZVt1XT1jPXYuZGVsZXRlZElkcy5wb3AoKXx8di5ndWlkKys6Yz11KSxsW2NdfHwobFtjXT17fSxmfHwobFtjXS50b0pTT049di5ub29wKSk7aWYodHlwZW9mIG49PSJvYmplY3QifHx0eXBlb2Ygbj09ImZ1bmN0aW9uIilpP2xbY109di5leHRlbmQobFtjXSxuKTpsW2NdLmRhdGE9di5leHRlbmQobFtjXS5kYXRhLG4pO3JldHVybiBzPWxbY10saXx8KHMuZGF0YXx8KHMuZGF0YT17fSkscz1zLmRhdGEpLHIhPT10JiYoc1t2LmNhbWVsQ2FzZShuKV09ciksYT8obz1zW25dLG89PW51bGwmJihvPXNbdi5jYW1lbENhc2UobildKSk6bz1zLG99LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSx0LG4pe2lmKCF2LmFjY2VwdERhdGEoZSkpcmV0dXJuO3ZhciByLGkscyxvPWUubm9kZVR5cGUsdT1vP3YuY2FjaGU6ZSxhPW8/ZVt2LmV4cGFuZG9dOnYuZXhwYW5kbztpZighdVthXSlyZXR1cm47aWYodCl7cj1uP3VbYV06dVthXS5kYXRhO2lmKHIpe3YuaXNBcnJheSh0KXx8KHQgaW4gcj90PVt0XToodD12LmNhbWVsQ2FzZSh0KSx0IGluIHI/dD1bdF06dD10LnNwbGl0KCIgIikpKTtmb3IoaT0wLHM9dC5sZW5ndGg7aTxzO2krKylkZWxldGUgclt0W2ldXTtpZighKG4/Qjp2LmlzRW1wdHlPYmplY3QpKHIpKXJldHVybn19aWYoIW4pe2RlbGV0ZSB1W2FdLmRhdGE7aWYoIUIodVthXSkpcmV0dXJufW8/di5jbGVhbkRhdGEoW2VdLCEwKTp2LnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8dSE9dS53aW5kb3c/ZGVsZXRlIHVbYV06dVthXT1udWxsfSxfZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYuZGF0YShlLHQsbiwhMCl9LGFjY2VwdERhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZSYmdi5ub0RhdGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4hdHx8dCE9PSEwJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09dH19KSx2LmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLG4pe3ZhciByLGkscyxvLHUsYT10aGlzWzBdLGY9MCxsPW51bGw7aWYoZT09PXQpe2lmKHRoaXMubGVuZ3RoKXtsPXYuZGF0YShhKTtpZihhLm5vZGVUeXBlPT09MSYmIXYuX2RhdGEoYSwicGFyc2VkQXR0cnMiKSl7cz1hLmF0dHJpYnV0ZXM7Zm9yKHU9cy5sZW5ndGg7Zjx1O2YrKylvPXNbZl0ubmFtZSxvLmluZGV4T2YoImRhdGEtIil8fChvPXYuY2FtZWxDYXNlKG8uc3Vic3RyaW5nKDUpKSxIKGEsbyxsW29dKSk7di5fZGF0YShhLCJwYXJzZWRBdHRycyIsITApfX1yZXR1cm4gbH1yZXR1cm4gdHlwZW9mIGU9PSJvYmplY3QiP3RoaXMuZWFjaChmdW5jdGlvbigpe3YuZGF0YSh0aGlzLGUpfSk6KHI9ZS5zcGxpdCgiLiIsMiksclsxXT1yWzFdPyIuIityWzFdOiIiLGk9clsxXSsiISIsdi5hY2Nlc3ModGhpcyxmdW5jdGlvbihuKXtpZihuPT09dClyZXR1cm4gbD10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitpLFtyWzBdXSksbD09PXQmJmEmJihsPXYuZGF0YShhLGUpLGw9SChhLGUsbCkpLGw9PT10JiZyWzFdP3RoaXMuZGF0YShyWzBdKTpsO3JbMV09bix0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD12KHRoaXMpO3QudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2ksciksdi5kYXRhKHRoaXMsZSxuKSx0LnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitpLHIpfSl9LG51bGwsbixhcmd1bWVudHMubGVuZ3RoPjEsbnVsbCwhMSkpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2LnJlbW92ZURhdGEodGhpcyxlKX0pfX0pLHYuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoZSlyZXR1cm4gdD0odHx8ImZ4IikrInF1ZXVlIixyPXYuX2RhdGEoZSx0KSxuJiYoIXJ8fHYuaXNBcnJheShuKT9yPXYuX2RhdGEoZSx0LHYubWFrZUFycmF5KG4pKTpyLnB1c2gobikpLHJ8fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGUsdCl7dD10fHwiZngiO3ZhciBuPXYucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5zaGlmdCgpLHM9di5fcXVldWVIb29rcyhlLHQpLG89ZnVuY3Rpb24oKXt2LmRlcXVldWUoZSx0KX07aT09PSJpbnByb2dyZXNzIiYmKGk9bi5zaGlmdCgpLHItLSksaSYmKHQ9PT0iZngiJiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgcy5zdG9wLGkuY2FsbChlLG8scykpLCFyJiZzJiZzLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gdi5fZGF0YShlLG4pfHx2Ll9kYXRhKGUsbix7ZW1wdHk6di5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7di5yZW1vdmVEYXRhKGUsdCsicXVldWUiLCEwKSx2LnJlbW92ZURhdGEoZSxuLCEwKX0pfSl9fSksdi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsbil7dmFyIHI9MjtyZXR1cm4gdHlwZW9mIGUhPSJzdHJpbmciJiYobj1lLGU9ImZ4IixyLS0pLGFyZ3VtZW50cy5sZW5ndGg8cj92LnF1ZXVlKHRoaXNbMF0sZSk6bj09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD12LnF1ZXVlKHRoaXMsZSxuKTt2Ll9xdWV1ZUhvb2tzKHRoaXMsZSksZT09PSJmeCImJnRbMF0hPT0iaW5wcm9ncmVzcyImJnYuZGVxdWV1ZSh0aGlzLGUpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3YuZGVxdWV1ZSh0aGlzLGUpfSl9LGRlbGF5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9di5meD92LmZ4LnNwZWVkc1tlXXx8ZTplLHQ9dHx8ImZ4Iix0aGlzLnF1ZXVlKHQsZnVuY3Rpb24odCxuKXt2YXIgcj1zZXRUaW1lb3V0KHQsZSk7bi5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsbil7dmFyIHIsaT0xLHM9di5EZWZlcnJlZCgpLG89dGhpcyx1PXRoaXMubGVuZ3RoLGE9ZnVuY3Rpb24oKXstLWl8fHMucmVzb2x2ZVdpdGgobyxbb10pfTt0eXBlb2YgZSE9InN0cmluZyImJihuPWUsZT10KSxlPWV8fCJmeCI7d2hpbGUodS0tKXI9di5fZGF0YShvW3VdLGUrInF1ZXVlSG9va3MiKSxyJiZyLmVtcHR5JiYoaSsrLHIuZW1wdHkuYWRkKGEpKTtyZXR1cm4gYSgpLHMucHJvbWlzZShuKX19KTt2YXIgaixGLEkscT0vW1x0XHJcbl0vZyxSPS9cci9nLFU9L14oPzpidXR0b258aW5wdXQpJC9pLHo9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksVz0vXmEoPzpyZWF8KSQvaSxYPS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLFY9di5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZTt2LmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiB2LmFjY2Vzcyh0aGlzLHYuYXR0cixlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7di5yZW1vdmVBdHRyKHRoaXMsZSl9KX0scHJvcDpmdW5jdGlvbihlLHQpe3JldHVybiB2LmFjY2Vzcyh0aGlzLHYucHJvcCxlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gZT12LnByb3BGaXhbZV18fGUsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbZV09dCxkZWxldGUgdGhpc1tlXX1jYXRjaChuKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHMsbyx1O2lmKHYuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe3YodGhpcykuYWRkQ2xhc3MoZS5jYWxsKHRoaXMsdCx0aGlzLmNsYXNzTmFtZSkpfSk7aWYoZSYmdHlwZW9mIGU9PSJzdHJpbmciKXt0PWUuc3BsaXQoeSk7Zm9yKG49MCxyPXRoaXMubGVuZ3RoO248cjtuKyspe2k9dGhpc1tuXTtpZihpLm5vZGVUeXBlPT09MSlpZighaS5jbGFzc05hbWUmJnQubGVuZ3RoPT09MSlpLmNsYXNzTmFtZT1lO2Vsc2V7cz0iICIraS5jbGFzc05hbWUrIiAiO2ZvcihvPTAsdT10Lmxlbmd0aDtvPHU7bysrKXMuaW5kZXhPZigiICIrdFtvXSsiICIpPDAmJihzKz10W29dKyIgIik7aS5jbGFzc05hbWU9di50cmltKHMpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxzLG8sdSxhO2lmKHYuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe3YodGhpcykucmVtb3ZlQ2xhc3MoZS5jYWxsKHRoaXMsdCx0aGlzLmNsYXNzTmFtZSkpfSk7aWYoZSYmdHlwZW9mIGU9PSJzdHJpbmcifHxlPT09dCl7bj0oZXx8IiIpLnNwbGl0KHkpO2Zvcih1PTAsYT10aGlzLmxlbmd0aDt1PGE7dSsrKXtpPXRoaXNbdV07aWYoaS5ub2RlVHlwZT09PTEmJmkuY2xhc3NOYW1lKXtyPSgiICIraS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHEsIiAiKTtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl3aGlsZShyLmluZGV4T2YoIiAiK25bc10rIiAiKT49MClyPXIucmVwbGFjZSgiICIrbltzXSsiICIsIiAiKTtpLmNsYXNzTmFtZT1lP3YudHJpbShyKToiIn19fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihlLHQpe3ZhciBuPXR5cGVvZiBlLHI9dHlwZW9mIHQ9PSJib29sZWFuIjtyZXR1cm4gdi5pc0Z1bmN0aW9uKGUpP3RoaXMuZWFjaChmdW5jdGlvbihuKXt2KHRoaXMpLnRvZ2dsZUNsYXNzKGUuY2FsbCh0aGlzLG4sdGhpcy5jbGFzc05hbWUsdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihuPT09InN0cmluZyIpe3ZhciBpLHM9MCxvPXYodGhpcyksdT10LGE9ZS5zcGxpdCh5KTt3aGlsZShpPWFbcysrXSl1PXI/dTohby5oYXNDbGFzcyhpKSxvW3U/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShpKX1lbHNlIGlmKG49PT0idW5kZWZpbmVkInx8bj09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmdi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGU9PT0hMT8iIjp2Ll9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9IiAiK2UrIiAiLG49MCxyPXRoaXMubGVuZ3RoO2Zvcig7bjxyO24rKylpZih0aGlzW25dLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW25dLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UocSwiICIpLmluZGV4T2YodCk+PTApcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihlKXt2YXIgbixyLGkscz10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihzKXJldHVybiBuPXYudmFsSG9va3Nbcy50eXBlXXx8di52YWxIb29rc1tzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLG4mJiJnZXQiaW4gbiYmKHI9bi5nZXQocywidmFsdWUiKSkhPT10P3I6KHI9cy52YWx1ZSx0eXBlb2Ygcj09InN0cmluZyI/ci5yZXBsYWNlKFIsIiIpOnI9PW51bGw/IiI6cik7cmV0dXJufXJldHVybiBpPXYuaXNGdW5jdGlvbihlKSx0aGlzLmVhY2goZnVuY3Rpb24ocil7dmFyIHMsbz12KHRoaXMpO2lmKHRoaXMubm9kZVR5cGUhPT0xKXJldHVybjtpP3M9ZS5jYWxsKHRoaXMscixvLnZhbCgpKTpzPWUscz09bnVsbD9zPSIiOnR5cGVvZiBzPT0ibnVtYmVyIj9zKz0iIjp2LmlzQXJyYXkocykmJihzPXYubWFwKHMsZnVuY3Rpb24oZSl7cmV0dXJuIGU9PW51bGw/IiI6ZSsiIn0pKSxuPXYudmFsSG9va3NbdGhpcy50eXBlXXx8di52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKCFufHwhKCJzZXQiaW4gbil8fG4uc2V0KHRoaXMscywidmFsdWUiKT09PXQpdGhpcy52YWx1ZT1zfSl9fSksdi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIXR8fHQuc3BlY2lmaWVkP2UudmFsdWU6ZS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUub3B0aW9ucyxpPWUuc2VsZWN0ZWRJbmRleCxzPWUudHlwZT09PSJzZWxlY3Qtb25lInx8aTwwLG89cz9udWxsOltdLHU9cz9pKzE6ci5sZW5ndGgsYT1pPDA/dTpzP2k6MDtmb3IoO2E8dTthKyspe249clthXTtpZigobi5zZWxlY3RlZHx8YT09PWkpJiYodi5zdXBwb3J0Lm9wdERpc2FibGVkPyFuLmRpc2FibGVkOm4uZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpPT09bnVsbCkmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhdi5ub2RlTmFtZShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXt0PXYobikudmFsKCk7aWYocylyZXR1cm4gdDtvLnB1c2godCl9fXJldHVybiBvfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj12Lm1ha2VBcnJheSh0KTtyZXR1cm4gdihlKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD12LmluQXJyYXkodih0aGlzKS52YWwoKSxuKT49MH0pLG4ubGVuZ3RofHwoZS5zZWxlY3RlZEluZGV4PS0xKSxufX19LGF0dHJGbjp7fSxhdHRyOmZ1bmN0aW9uKGUsbixyLGkpe3ZhciBzLG8sdSxhPWUubm9kZVR5cGU7aWYoIWV8fGE9PT0zfHxhPT09OHx8YT09PTIpcmV0dXJuO2lmKGkmJnYuaXNGdW5jdGlvbih2LmZuW25dKSlyZXR1cm4gdihlKVtuXShyKTtpZih0eXBlb2YgZS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiB2LnByb3AoZSxuLHIpO3U9YSE9PTF8fCF2LmlzWE1MRG9jKGUpLHUmJihuPW4udG9Mb3dlckNhc2UoKSxvPXYuYXR0ckhvb2tzW25dfHwoWC50ZXN0KG4pP0Y6aikpO2lmKHIhPT10KXtpZihyPT09bnVsbCl7di5yZW1vdmVBdHRyKGUsbik7cmV0dXJufXJldHVybiBvJiYic2V0ImluIG8mJnUmJihzPW8uc2V0KGUscixuKSkhPT10P3M6KGUuc2V0QXR0cmlidXRlKG4scisiIikscil9cmV0dXJuIG8mJiJnZXQiaW4gbyYmdSYmKHM9by5nZXQoZSxuKSkhPT1udWxsP3M6KHM9ZS5nZXRBdHRyaWJ1dGUobikscz09PW51bGw/dDpzKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxzLG89MDtpZih0JiZlLm5vZGVUeXBlPT09MSl7cj10LnNwbGl0KHkpO2Zvcig7bzxyLmxlbmd0aDtvKyspaT1yW29dLGkmJihuPXYucHJvcEZpeFtpXXx8aSxzPVgudGVzdChpKSxzfHx2LmF0dHIoZSxpLCIiKSxlLnJlbW92ZUF0dHJpYnV0ZShWP2k6bikscyYmbiBpbiBlJiYoZVtuXT0hMSkpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZihVLnRlc3QoZS5ub2RlTmFtZSkmJmUucGFyZW50Tm9kZSl2LmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCF2LnN1cHBvcnQucmFkaW9WYWx1ZSYmdD09PSJyYWRpbyImJnYubm9kZU5hbWUoZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihlLHQpe3JldHVybiBqJiZ2Lm5vZGVOYW1lKGUsImJ1dHRvbiIpP2ouZ2V0KGUsdCk6dCBpbiBlP2UudmFsdWU6bnVsbH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXtpZihqJiZ2Lm5vZGVOYW1lKGUsImJ1dHRvbiIpKXJldHVybiBqLnNldChlLHQsbik7ZS52YWx1ZT10fX19LHByb3BGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCIscmVhZG9ubHk6InJlYWRPbmx5IiwiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjZWxscGFkZGluZzoiY2VsbFBhZGRpbmciLHJvd3NwYW46InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGNvbnRlbnRlZGl0YWJsZToiY29udGVudEVkaXRhYmxlIn0scHJvcDpmdW5jdGlvbihlLG4scil7dmFyIGkscyxvLHU9ZS5ub2RlVHlwZTtpZighZXx8dT09PTN8fHU9PT04fHx1PT09MilyZXR1cm47cmV0dXJuIG89dSE9PTF8fCF2LmlzWE1MRG9jKGUpLG8mJihuPXYucHJvcEZpeFtuXXx8bixzPXYucHJvcEhvb2tzW25dKSxyIT09dD9zJiYic2V0ImluIHMmJihpPXMuc2V0KGUscixuKSkhPT10P2k6ZVtuXT1yOnMmJiJnZXQiaW4gcyYmKGk9cy5nZXQoZSxuKSkhPT1udWxsP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gbiYmbi5zcGVjaWZpZWQ/cGFyc2VJbnQobi52YWx1ZSwxMCk6ei50ZXN0KGUubm9kZU5hbWUpfHxXLnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOnR9fX19KSxGPXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcixpPXYucHJvcChlLG4pO3JldHVybiBpPT09ITB8fHR5cGVvZiBpIT0iYm9vbGVhbiImJihyPWUuZ2V0QXR0cmlidXRlTm9kZShuKSkmJnIubm9kZVZhbHVlIT09ITE/bi50b0xvd2VyQ2FzZSgpOnR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHQ9PT0hMT92LnJlbW92ZUF0dHIoZSxuKToocj12LnByb3BGaXhbbl18fG4sciBpbiBlJiYoZVtyXT0hMCksZS5zZXRBdHRyaWJ1dGUobixuLnRvTG93ZXJDYXNlKCkpKSxufX0sVnx8KEk9e25hbWU6ITAsaWQ6ITAsY29vcmRzOiEwfSxqPXYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcjtyZXR1cm4gcj1lLmdldEF0dHJpYnV0ZU5vZGUobiksciYmKElbbl0/ci52YWx1ZSE9PSIiOnIuc3BlY2lmaWVkKT9yLnZhbHVlOnR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKG4pO3JldHVybiByfHwocj1pLmNyZWF0ZUF0dHJpYnV0ZShuKSxlLnNldEF0dHJpYnV0ZU5vZGUocikpLHIudmFsdWU9dCsiIn19LHYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oZSx0KXt2LmF0dHJIb29rc1t0XT12LmV4dGVuZCh2LmF0dHJIb29rc1t0XSx7c2V0OmZ1bmN0aW9uKGUsbil7aWYobj09PSIiKXJldHVybiBlLnNldEF0dHJpYnV0ZSh0LCJhdXRvIiksbn19KX0pLHYuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OmouZ2V0LHNldDpmdW5jdGlvbihlLHQsbil7dD09PSIiJiYodD0iZmFsc2UiKSxqLnNldChlLHQsbil9fSksdi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHx2LmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihlLG4pe3YuYXR0ckhvb2tzW25dPXYuZXh0ZW5kKHYuYXR0ckhvb2tzW25dLHtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5nZXRBdHRyaWJ1dGUobiwyKTtyZXR1cm4gcj09PW51bGw/dDpyfX0pfSksdi5zdXBwb3J0LnN0eWxlfHwodi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fHR9LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLmNzc1RleHQ9dCsiIn19KSx2LnN1cHBvcnQub3B0U2VsZWN0ZWR8fCh2LnByb3BIb29rcy5zZWxlY3RlZD12LmV4dGVuZCh2LnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pKSx2LnN1cHBvcnQuZW5jdHlwZXx8KHYucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLHYuc3VwcG9ydC5jaGVja09ufHx2LmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXt2LnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmUudmFsdWV9fX0pLHYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3YudmFsSG9va3NbdGhpc109di5leHRlbmQodi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGUsdCl7aWYodi5pc0FycmF5KHQpKXJldHVybiBlLmNoZWNrZWQ9di5pbkFycmF5KHYoZSkudmFsKCksdCk+PTB9fSl9KTt2YXIgJD0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksSj0vXihbXlwuXSp8KSg/OlwuKC4rKXwpJC8sSz0vKD86Xnxccylob3ZlcihcLlxTK3wpXGIvLFE9L15rZXkvLEc9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLFk9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFo9ZnVuY3Rpb24oZSl7cmV0dXJuIHYuZXZlbnQuc3BlY2lhbC5ob3Zlcj9lOmUucmVwbGFjZShLLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O3YuZXZlbnQ9e2FkZDpmdW5jdGlvbihlLG4scixpLHMpe3ZhciBvLHUsYSxmLGwsYyxoLHAsZCxtLGc7aWYoZS5ub2RlVHlwZT09PTN8fGUubm9kZVR5cGU9PT04fHwhbnx8IXJ8fCEobz12Ll9kYXRhKGUpKSlyZXR1cm47ci5oYW5kbGVyJiYoZD1yLHI9ZC5oYW5kbGVyLHM9ZC5zZWxlY3Rvciksci5ndWlkfHwoci5ndWlkPXYuZ3VpZCsrKSxhPW8uZXZlbnRzLGF8fChvLmV2ZW50cz1hPXt9KSx1PW8uaGFuZGxlLHV8fChvLmhhbmRsZT11PWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2Ygdj09InVuZGVmaW5lZCJ8fCEhZSYmdi5ldmVudC50cmlnZ2VyZWQ9PT1lLnR5cGU/dDp2LmV2ZW50LmRpc3BhdGNoLmFwcGx5KHUuZWxlbSxhcmd1bWVudHMpfSx1LmVsZW09ZSksbj12LnRyaW0oWihuKSkuc3BsaXQoIiAiKTtmb3IoZj0wO2Y8bi5sZW5ndGg7ZisrKXtsPUouZXhlYyhuW2ZdKXx8W10sYz1sWzFdLGg9KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxnPXYuZXZlbnQuc3BlY2lhbFtjXXx8e30sYz0ocz9nLmRlbGVnYXRlVHlwZTpnLmJpbmRUeXBlKXx8YyxnPXYuZXZlbnQuc3BlY2lhbFtjXXx8e30scD12LmV4dGVuZCh7dHlwZTpjLG9yaWdUeXBlOmxbMV0sZGF0YTppLGhhbmRsZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjpzLG5lZWRzQ29udGV4dDpzJiZ2LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QocyksbmFtZXNwYWNlOmguam9pbigiLiIpfSxkKSxtPWFbY107aWYoIW0pe209YVtjXT1bXSxtLmRlbGVnYXRlQ291bnQ9MDtpZighZy5zZXR1cHx8Zy5zZXR1cC5jYWxsKGUsaSxoLHUpPT09ITEpZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcihjLHUsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9uIitjLHUpfWcuYWRkJiYoZy5hZGQuY2FsbChlLHApLHAuaGFuZGxlci5ndWlkfHwocC5oYW5kbGVyLmd1aWQ9ci5ndWlkKSkscz9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLHApOm0ucHVzaChwKSx2LmV2ZW50Lmdsb2JhbFtjXT0hMH1lPW51bGx9LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcyxvLHUsYSxmLGwsYyxoLHAsZCxtLGc9di5oYXNEYXRhKGUpJiZ2Ll9kYXRhKGUpO2lmKCFnfHwhKGg9Zy5ldmVudHMpKXJldHVybjt0PXYudHJpbShaKHR8fCIiKSkuc3BsaXQoIiAiKTtmb3Iocz0wO3M8dC5sZW5ndGg7cysrKXtvPUouZXhlYyh0W3NdKXx8W10sdT1hPW9bMV0sZj1vWzJdO2lmKCF1KXtmb3IodSBpbiBoKXYuZXZlbnQucmVtb3ZlKGUsdSt0W3NdLG4sciwhMCk7Y29udGludWV9cD12LmV2ZW50LnNwZWNpYWxbdV18fHt9LHU9KHI/cC5kZWxlZ2F0ZVR5cGU6cC5iaW5kVHlwZSl8fHUsZD1oW3VdfHxbXSxsPWQubGVuZ3RoLGY9Zj9uZXcgUmVnRXhwKCIoXnxcXC4pIitmLnNwbGl0KCIuIikuc29ydCgpLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGw7Zm9yKGM9MDtjPGQubGVuZ3RoO2MrKyltPWRbY10sKGl8fGE9PT1tLm9yaWdUeXBlKSYmKCFufHxuLmd1aWQ9PT1tLmd1aWQpJiYoIWZ8fGYudGVzdChtLm5hbWVzcGFjZSkpJiYoIXJ8fHI9PT1tLnNlbGVjdG9yfHxyPT09IioqIiYmbS5zZWxlY3RvcikmJihkLnNwbGljZShjLS0sMSksbS5zZWxlY3RvciYmZC5kZWxlZ2F0ZUNvdW50LS0scC5yZW1vdmUmJnAucmVtb3ZlLmNhbGwoZSxtKSk7ZC5sZW5ndGg9PT0wJiZsIT09ZC5sZW5ndGgmJigoIXAudGVhcmRvd258fHAudGVhcmRvd24uY2FsbChlLGYsZy5oYW5kbGUpPT09ITEpJiZ2LnJlbW92ZUV2ZW50KGUsdSxnLmhhbmRsZSksZGVsZXRlIGhbdV0pfXYuaXNFbXB0eU9iamVjdChoKSYmKGRlbGV0ZSBnLmhhbmRsZSx2LnJlbW92ZURhdGEoZSwiZXZlbnRzIiwhMCkpfSxjdXN0b21FdmVudDp7Z2V0RGF0YTohMCxzZXREYXRhOiEwLGNoYW5nZURhdGE6ITB9LHRyaWdnZXI6ZnVuY3Rpb24obixyLHMsbyl7aWYoIXN8fHMubm9kZVR5cGUhPT0zJiZzLm5vZGVUeXBlIT09OCl7dmFyIHUsYSxmLGwsYyxoLHAsZCxtLGcseT1uLnR5cGV8fG4sYj1bXTtpZihZLnRlc3QoeSt2LmV2ZW50LnRyaWdnZXJlZCkpcmV0dXJuO3kuaW5kZXhPZigiISIpPj0wJiYoeT15LnNsaWNlKDAsLTEpLGE9ITApLHkuaW5kZXhPZigiLiIpPj0wJiYoYj15LnNwbGl0KCIuIikseT1iLnNoaWZ0KCksYi5zb3J0KCkpO2lmKCghc3x8di5ldmVudC5jdXN0b21FdmVudFt5XSkmJiF2LmV2ZW50Lmdsb2JhbFt5XSlyZXR1cm47bj10eXBlb2Ygbj09Im9iamVjdCI/blt2LmV4cGFuZG9dP246bmV3IHYuRXZlbnQoeSxuKTpuZXcgdi5FdmVudCh5KSxuLnR5cGU9eSxuLmlzVHJpZ2dlcj0hMCxuLmV4Y2x1c2l2ZT1hLG4ubmFtZXNwYWNlPWIuam9pbigiLiIpLG4ubmFtZXNwYWNlX3JlPW4ubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2Iuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxoPXkuaW5kZXhPZigiOiIpPDA/Im9uIit5OiIiO2lmKCFzKXt1PXYuY2FjaGU7Zm9yKGYgaW4gdSl1W2ZdLmV2ZW50cyYmdVtmXS5ldmVudHNbeV0mJnYuZXZlbnQudHJpZ2dlcihuLHIsdVtmXS5oYW5kbGUuZWxlbSwhMCk7cmV0dXJufW4ucmVzdWx0PXQsbi50YXJnZXR8fChuLnRhcmdldD1zKSxyPXIhPW51bGw/di5tYWtlQXJyYXkocik6W10sci51bnNoaWZ0KG4pLHA9di5ldmVudC5zcGVjaWFsW3ldfHx7fTtpZihwLnRyaWdnZXImJnAudHJpZ2dlci5hcHBseShzLHIpPT09ITEpcmV0dXJuO209W1tzLHAuYmluZFR5cGV8fHldXTtpZighbyYmIXAubm9CdWJibGUmJiF2LmlzV2luZG93KHMpKXtnPXAuZGVsZWdhdGVUeXBlfHx5LGw9WS50ZXN0KGcreSk/czpzLnBhcmVudE5vZGU7Zm9yKGM9cztsO2w9bC5wYXJlbnROb2RlKW0ucHVzaChbbCxnXSksYz1sO2M9PT0ocy5vd25lckRvY3VtZW50fHxpKSYmbS5wdXNoKFtjLmRlZmF1bHRWaWV3fHxjLnBhcmVudFdpbmRvd3x8ZSxnXSl9Zm9yKGY9MDtmPG0ubGVuZ3RoJiYhbi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2YrKylsPW1bZl1bMF0sbi50eXBlPW1bZl1bMV0sZD0odi5fZGF0YShsLCJldmVudHMiKXx8e30pW24udHlwZV0mJnYuX2RhdGEobCwiaGFuZGxlIiksZCYmZC5hcHBseShsLHIpLGQ9aCYmbFtoXSxkJiZ2LmFjY2VwdERhdGEobCkmJmQuYXBwbHkmJmQuYXBwbHkobCxyKT09PSExJiZuLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIG4udHlwZT15LCFvJiYhbi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFwLl9kZWZhdWx0fHxwLl9kZWZhdWx0LmFwcGx5KHMub3duZXJEb2N1bWVudCxyKT09PSExKSYmKHkhPT0iY2xpY2sifHwhdi5ub2RlTmFtZShzLCJhIikpJiZ2LmFjY2VwdERhdGEocykmJmgmJnNbeV0mJih5IT09ImZvY3VzIiYmeSE9PSJibHVyInx8bi50YXJnZXQub2Zmc2V0V2lkdGghPT0wKSYmIXYuaXNXaW5kb3cocykmJihjPXNbaF0sYyYmKHNbaF09bnVsbCksdi5ldmVudC50cmlnZ2VyZWQ9eSxzW3ldKCksdi5ldmVudC50cmlnZ2VyZWQ9dCxjJiYoc1toXT1jKSksbi5yZXN1bHR9cmV0dXJufSxkaXNwYXRjaDpmdW5jdGlvbihuKXtuPXYuZXZlbnQuZml4KG58fGUuZXZlbnQpO3ZhciByLGkscyxvLHUsYSxmLGMsaCxwLGQ9KHYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtuLnR5cGVdfHxbXSxtPWQuZGVsZWdhdGVDb3VudCxnPWwuY2FsbChhcmd1bWVudHMpLHk9IW4uZXhjbHVzaXZlJiYhbi5uYW1lc3BhY2UsYj12LmV2ZW50LnNwZWNpYWxbbi50eXBlXXx8e30sdz1bXTtnWzBdPW4sbi5kZWxlZ2F0ZVRhcmdldD10aGlzO2lmKGIucHJlRGlzcGF0Y2gmJmIucHJlRGlzcGF0Y2guY2FsbCh0aGlzLG4pPT09ITEpcmV0dXJuO2lmKG0mJighbi5idXR0b258fG4udHlwZSE9PSJjbGljayIpKWZvcihzPW4udGFyZ2V0O3MhPXRoaXM7cz1zLnBhcmVudE5vZGV8fHRoaXMpaWYocy5kaXNhYmxlZCE9PSEwfHxuLnR5cGUhPT0iY2xpY2siKXt1PXt9LGY9W107Zm9yKHI9MDtyPG07cisrKWM9ZFtyXSxoPWMuc2VsZWN0b3IsdVtoXT09PXQmJih1W2hdPWMubmVlZHNDb250ZXh0P3YoaCx0aGlzKS5pbmRleChzKT49MDp2LmZpbmQoaCx0aGlzLG51bGwsW3NdKS5sZW5ndGgpLHVbaF0mJmYucHVzaChjKTtmLmxlbmd0aCYmdy5wdXNoKHtlbGVtOnMsbWF0Y2hlczpmfSl9ZC5sZW5ndGg+bSYmdy5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKG0pfSk7Zm9yKHI9MDtyPHcubGVuZ3RoJiYhbi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKyl7YT13W3JdLG4uY3VycmVudFRhcmdldD1hLmVsZW07Zm9yKGk9MDtpPGEubWF0Y2hlcy5sZW5ndGgmJiFuLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7aSsrKXtjPWEubWF0Y2hlc1tpXTtpZih5fHwhbi5uYW1lc3BhY2UmJiFjLm5hbWVzcGFjZXx8bi5uYW1lc3BhY2VfcmUmJm4ubmFtZXNwYWNlX3JlLnRlc3QoYy5uYW1lc3BhY2UpKW4uZGF0YT1jLmRhdGEsbi5oYW5kbGVPYmo9YyxvPSgodi5ldmVudC5zcGVjaWFsW2Mub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxjLmhhbmRsZXIpLmFwcGx5KGEuZWxlbSxnKSxvIT09dCYmKG4ucmVzdWx0PW8sbz09PSExJiYobi5wcmV2ZW50RGVmYXVsdCgpLG4uc3RvcFByb3BhZ2F0aW9uKCkpKX19cmV0dXJuIGIucG9zdERpc3BhdGNoJiZiLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsbiksbi5yZXN1bHR9LHByb3BzOiJhdHRyQ2hhbmdlIGF0dHJOYW1lIHJlbGF0ZWROb2RlIHNyY0VsZW1lbnQgYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS53aGljaD09bnVsbCYmKGUud2hpY2g9dC5jaGFyQ29kZSE9bnVsbD90LmNoYXJDb2RlOnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsbil7dmFyIHIscyxvLHU9bi5idXR0b24sYT1uLmZyb21FbGVtZW50O3JldHVybiBlLnBhZ2VYPT1udWxsJiZuLmNsaWVudFghPW51bGwmJihyPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGkscz1yLmRvY3VtZW50RWxlbWVudCxvPXIuYm9keSxlLnBhZ2VYPW4uY2xpZW50WCsocyYmcy5zY3JvbGxMZWZ0fHxvJiZvLnNjcm9sbExlZnR8fDApLShzJiZzLmNsaWVudExlZnR8fG8mJm8uY2xpZW50TGVmdHx8MCksZS5wYWdlWT1uLmNsaWVudFkrKHMmJnMuc2Nyb2xsVG9wfHxvJiZvLnNjcm9sbFRvcHx8MCktKHMmJnMuY2xpZW50VG9wfHxvJiZvLmNsaWVudFRvcHx8MCkpLCFlLnJlbGF0ZWRUYXJnZXQmJmEmJihlLnJlbGF0ZWRUYXJnZXQ9YT09PWUudGFyZ2V0P24udG9FbGVtZW50OmEpLCFlLndoaWNoJiZ1IT09dCYmKGUud2hpY2g9dSYxPzE6dSYyPzM6dSY0PzI6MCksZX19LGZpeDpmdW5jdGlvbihlKXtpZihlW3YuZXhwYW5kb10pcmV0dXJuIGU7dmFyIHQsbixyPWUscz12LmV2ZW50LmZpeEhvb2tzW2UudHlwZV18fHt9LG89cy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChzLnByb3BzKTp0aGlzLnByb3BzO2U9di5FdmVudChyKTtmb3IodD1vLmxlbmd0aDt0OyluPW9bLS10XSxlW25dPXJbbl07cmV0dXJuIGUudGFyZ2V0fHwoZS50YXJnZXQ9ci5zcmNFbGVtZW50fHxpKSxlLnRhcmdldC5ub2RlVHlwZT09PTMmJihlLnRhcmdldD1lLnRhcmdldC5wYXJlbnROb2RlKSxlLm1ldGFLZXk9ISFlLm1ldGFLZXkscy5maWx0ZXI/cy5maWx0ZXIoZSxyKTplfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e2RlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e2RlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0aW9uKGUsdCxuKXt2LmlzV2luZG93KHRoaXMpJiYodGhpcy5vbmJlZm9yZXVubG9hZD1uKX0sdGVhcmRvd246ZnVuY3Rpb24oZSx0KXt0aGlzLm9uYmVmb3JldW5sb2FkPT09dCYmKHRoaXMub25iZWZvcmV1bmxvYWQ9bnVsbCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9di5leHRlbmQobmV3IHYuRXZlbnQsbix7dHlwZTplLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtyP3YuZXZlbnQudHJpZ2dlcihpLG51bGwsdCk6di5ldmVudC5kaXNwYXRjaC5jYWxsKHQsaSksaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmbi5wcmV2ZW50RGVmYXVsdCgpfX0sdi5ldmVudC5oYW5kbGU9di5ldmVudC5kaXNwYXRjaCx2LnJlbW92ZUV2ZW50PWkucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3RlbmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJvbiIrdDtlLmRldGFjaEV2ZW50JiYodHlwZW9mIGVbcl09PSJ1bmRlZmluZWQiJiYoZVtyXT1udWxsKSxlLmRldGFjaEV2ZW50KHIsbikpfSx2LkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2Ygdi5FdmVudCkpcmV0dXJuIG5ldyB2LkV2ZW50KGUsdCk7ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8ZS5yZXR1cm5WYWx1ZT09PSExfHxlLmdldFByZXZlbnREZWZhdWx0JiZlLmdldFByZXZlbnREZWZhdWx0KCk/dHQ6ZXQpOnRoaXMudHlwZT1lLHQmJnYuZXh0ZW5kKHRoaXMsdCksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8fHYubm93KCksdGhpc1t2LmV4cGFuZG9dPSEwfSx2LkV2ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD10dDt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIWUpcmV0dXJuO2UucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITF9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dHQ7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFlKXJldHVybjtlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSxlLmNhbmNlbEJ1YmJsZT0hMH0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD10dCx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6ZXQsaXNQcm9wYWdhdGlvblN0b3BwZWQ6ZXQsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6ZXR9LHYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGUsdCl7di5ldmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6dCxiaW5kVHlwZTp0LGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgbixyPXRoaXMsaT1lLnJlbGF0ZWRUYXJnZXQscz1lLmhhbmRsZU9iaixvPXMuc2VsZWN0b3I7aWYoIWl8fGkhPT1yJiYhdi5jb250YWlucyhyLGkpKWUudHlwZT1zLm9yaWdUeXBlLG49cy5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnR5cGU9dDtyZXR1cm4gbn19fSksdi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fCh2LmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKHYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO3YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oZSl7dmFyIG49ZS50YXJnZXQscj12Lm5vZGVOYW1lKG4sImlucHV0Iil8fHYubm9kZU5hbWUobiwiYnV0dG9uIik/bi5mb3JtOnQ7ciYmIXYuX2RhdGEociwiX3N1Ym1pdF9hdHRhY2hlZCIpJiYodi5ldmVudC5hZGQociwic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGUpe2UuX3N1Ym1pdF9idWJibGU9ITB9KSx2Ll9kYXRhKHIsIl9zdWJtaXRfYXR0YWNoZWQiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe2UuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgZS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFlLmlzVHJpZ2dlciYmdi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsZSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKHYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO3YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksdi5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fCh2LmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKCQudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIil2LmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihlKXtlLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLHYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGUpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWUuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSx2LmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsZSwhMCl9KTtyZXR1cm4hMX12LmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDskLnRlc3QodC5ub2RlTmFtZSkmJiF2Ll9kYXRhKHQsIl9jaGFuZ2VfYXR0YWNoZWQiKSYmKHYuZXZlbnQuYWRkKHQsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJiFlLmlzU2ltdWxhdGVkJiYhZS5pc1RyaWdnZXImJnYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGUsITApfSksdi5fZGF0YSh0LCJfY2hhbmdlX2F0dGFjaGVkIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtpZih0aGlzIT09dHx8ZS5pc1NpbXVsYXRlZHx8ZS5pc1RyaWdnZXJ8fHQudHlwZSE9PSJyYWRpbyImJnQudHlwZSE9PSJjaGVja2JveCIpcmV0dXJuIGUuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiB2LmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCEkLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksdi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHx2LmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPWZ1bmN0aW9uKGUpe3YuZXZlbnQuc2ltdWxhdGUodCxlLnRhcmdldCx2LmV2ZW50LmZpeChlKSwhMCl9O3YuZXZlbnQuc3BlY2lhbFt0XT17c2V0dXA6ZnVuY3Rpb24oKXtuKys9PT0wJiZpLmFkZEV2ZW50TGlzdGVuZXIoZSxyLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLW49PT0wJiZpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxyLCEwKX19fSksdi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGUsbixyLGkscyl7dmFyIG8sdTtpZih0eXBlb2YgZT09Im9iamVjdCIpe3R5cGVvZiBuIT0ic3RyaW5nIiYmKHI9cnx8bixuPXQpO2Zvcih1IGluIGUpdGhpcy5vbih1LG4scixlW3VdLHMpO3JldHVybiB0aGlzfXI9PW51bGwmJmk9PW51bGw/KGk9bixyPW49dCk6aT09bnVsbCYmKHR5cGVvZiBuPT0ic3RyaW5nIj8oaT1yLHI9dCk6KGk9cixyPW4sbj10KSk7aWYoaT09PSExKWk9ZXQ7ZWxzZSBpZighaSlyZXR1cm4gdGhpcztyZXR1cm4gcz09PTEmJihvPWksaT1mdW5jdGlvbihlKXtyZXR1cm4gdigpLm9mZihlKSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5ndWlkPW8uZ3VpZHx8KG8uZ3VpZD12Lmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe3YuZXZlbnQuYWRkKHRoaXMsZSxpLHIsbil9KX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLG4scil7dmFyIGkscztpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gaT1lLmhhbmRsZU9iaix2KGUuZGVsZWdhdGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZT9pLm9yaWdUeXBlKyIuIitpLm5hbWVzcGFjZTppLm9yaWdUeXBlLGkuc2VsZWN0b3IsaS5oYW5kbGVyKSx0aGlzO2lmKHR5cGVvZiBlPT0ib2JqZWN0Iil7Zm9yKHMgaW4gZSl0aGlzLm9mZihzLG4sZVtzXSk7cmV0dXJuIHRoaXN9aWYobj09PSExfHx0eXBlb2Ygbj09ImZ1bmN0aW9uIilyPW4sbj10O3JldHVybiByPT09ITEmJihyPWV0KSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2LmV2ZW50LnJlbW92ZSh0aGlzLGUscixuKX0pfSxiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sbGl2ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYodGhpcy5jb250ZXh0KS5vbihlLHRoaXMuc2VsZWN0b3IsdCxuKSx0aGlzfSxkaWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdih0aGlzLmNvbnRleHQpLm9mZihlLHRoaXMuc2VsZWN0b3J8fCIqKiIsdCksdGhpc30sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0sdHJpZ2dlcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2LmV2ZW50LnRyaWdnZXIoZSx0LHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGUsdCl7aWYodGhpc1swXSlyZXR1cm4gdi5ldmVudC50cmlnZ2VyKGUsdCx0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxuPWUuZ3VpZHx8di5ndWlkKysscj0wLGk9ZnVuY3Rpb24obil7dmFyIGk9KHYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrZS5ndWlkKXx8MCklcjtyZXR1cm4gdi5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIitlLmd1aWQsaSsxKSxuLnByZXZlbnREZWZhdWx0KCksdFtpXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtpLmd1aWQ9bjt3aGlsZShyPHQubGVuZ3RoKXRbcisrXS5ndWlkPW47cmV0dXJuIHRoaXMuY2xpY2soaSl9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLHYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe3YuZm5bdF09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbj09bnVsbCYmKG49ZSxlPW51bGwpLGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKHQsbnVsbCxlLG4pOnRoaXMudHJpZ2dlcih0KX0sUS50ZXN0KHQpJiYodi5ldmVudC5maXhIb29rc1t0XT12LmV2ZW50LmtleUhvb2tzKSxHLnRlc3QodCkmJih2LmV2ZW50LmZpeEhvb2tzW3RdPXYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG50KGUsdCxuLHIpe249bnx8W10sdD10fHxnO3ZhciBpLHMsYSxmLGw9dC5ub2RlVHlwZTtpZighZXx8dHlwZW9mIGUhPSJzdHJpbmciKXJldHVybiBuO2lmKGwhPT0xJiZsIT09OSlyZXR1cm5bXTthPW8odCk7aWYoIWEmJiFyKWlmKGk9Ui5leGVjKGUpKWlmKGY9aVsxXSl7aWYobD09PTkpe3M9dC5nZXRFbGVtZW50QnlJZChmKTtpZighc3x8IXMucGFyZW50Tm9kZSlyZXR1cm4gbjtpZihzLmlkPT09ZilyZXR1cm4gbi5wdXNoKHMpLG59ZWxzZSBpZih0Lm93bmVyRG9jdW1lbnQmJihzPXQub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChmKSkmJnUodCxzKSYmcy5pZD09PWYpcmV0dXJuIG4ucHVzaChzKSxufWVsc2V7aWYoaVsyXSlyZXR1cm4gUy5hcHBseShuLHguY2FsbCh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpLDApKSxuO2lmKChmPWlbM10pJiZaJiZ0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIFMuYXBwbHkobix4LmNhbGwodC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGYpLDApKSxufXJldHVybiB2dChlLnJlcGxhY2UoaiwiJDEiKSx0LG4scixhKX1mdW5jdGlvbiBydChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBuPT09ImlucHV0IiYmdC50eXBlPT09ZX19ZnVuY3Rpb24gaXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4obj09PSJpbnB1dCJ8fG49PT0iYnV0dG9uIikmJnQudHlwZT09PWV9fWZ1bmN0aW9uIHN0KGUpe3JldHVybiBOKGZ1bmN0aW9uKHQpe3JldHVybiB0PSt0LE4oZnVuY3Rpb24obixyKXt2YXIgaSxzPWUoW10sbi5sZW5ndGgsdCksbz1zLmxlbmd0aDt3aGlsZShvLS0pbltpPXNbb11dJiYobltpXT0hKHJbaV09bltpXSkpfSl9KX1mdW5jdGlvbiBvdChlLHQsbil7aWYoZT09PXQpcmV0dXJuIG47dmFyIHI9ZS5uZXh0U2libGluZzt3aGlsZShyKXtpZihyPT09dClyZXR1cm4tMTtyPXIubmV4dFNpYmxpbmd9cmV0dXJuIDF9ZnVuY3Rpb24gdXQoZSx0KXt2YXIgbixyLHMsbyx1LGEsZixsPUxbZF1bZSsiICJdO2lmKGwpcmV0dXJuIHQ/MDpsLnNsaWNlKDApO3U9ZSxhPVtdLGY9aS5wcmVGaWx0ZXI7d2hpbGUodSl7aWYoIW58fChyPUYuZXhlYyh1KSkpciYmKHU9dS5zbGljZShyWzBdLmxlbmd0aCl8fHUpLGEucHVzaChzPVtdKTtuPSExO2lmKHI9SS5leGVjKHUpKXMucHVzaChuPW5ldyBtKHIuc2hpZnQoKSkpLHU9dS5zbGljZShuLmxlbmd0aCksbi50eXBlPXJbMF0ucmVwbGFjZShqLCIgIik7Zm9yKG8gaW4gaS5maWx0ZXIpKHI9SltvXS5leGVjKHUpKSYmKCFmW29dfHwocj1mW29dKHIpKSkmJihzLnB1c2gobj1uZXcgbShyLnNoaWZ0KCkpKSx1PXUuc2xpY2Uobi5sZW5ndGgpLG4udHlwZT1vLG4ubWF0Y2hlcz1yKTtpZighbilicmVha31yZXR1cm4gdD91Lmxlbmd0aDp1P250LmVycm9yKGUpOkwoZSxhKS5zbGljZSgwKX1mdW5jdGlvbiBhdChlLHQscil7dmFyIGk9dC5kaXIscz1yJiZ0LmRpcj09PSJwYXJlbnROb2RlIixvPXcrKztyZXR1cm4gdC5maXJzdD9mdW5jdGlvbih0LG4scil7d2hpbGUodD10W2ldKWlmKHN8fHQubm9kZVR5cGU9PT0xKXJldHVybiBlKHQsbixyKX06ZnVuY3Rpb24odCxyLHUpe2lmKCF1KXt2YXIgYSxmPWIrIiAiK28rIiAiLGw9ZituO3doaWxlKHQ9dFtpXSlpZihzfHx0Lm5vZGVUeXBlPT09MSl7aWYoKGE9dFtkXSk9PT1sKXJldHVybiB0LnNpenNldDtpZih0eXBlb2YgYT09InN0cmluZyImJmEuaW5kZXhPZihmKT09PTApe2lmKHQuc2l6c2V0KXJldHVybiB0fWVsc2V7dFtkXT1sO2lmKGUodCxyLHUpKXJldHVybiB0LnNpenNldD0hMCx0O3Quc2l6c2V0PSExfX19ZWxzZSB3aGlsZSh0PXRbaV0paWYoc3x8dC5ub2RlVHlwZT09PTEpaWYoZSh0LHIsdSkpcmV0dXJuIHR9fWZ1bmN0aW9uIGZ0KGUpe3JldHVybiBlLmxlbmd0aD4xP2Z1bmN0aW9uKHQsbixyKXt2YXIgaT1lLmxlbmd0aDt3aGlsZShpLS0paWYoIWVbaV0odCxuLHIpKXJldHVybiExO3JldHVybiEwfTplWzBdfWZ1bmN0aW9uIGx0KGUsdCxuLHIsaSl7dmFyIHMsbz1bXSx1PTAsYT1lLmxlbmd0aCxmPXQhPW51bGw7Zm9yKDt1PGE7dSsrKWlmKHM9ZVt1XSlpZighbnx8bihzLHIsaSkpby5wdXNoKHMpLGYmJnQucHVzaCh1KTtyZXR1cm4gb31mdW5jdGlvbiBjdChlLHQsbixyLGkscyl7cmV0dXJuIHImJiFyW2RdJiYocj1jdChyKSksaSYmIWlbZF0mJihpPWN0KGkscykpLE4oZnVuY3Rpb24ocyxvLHUsYSl7dmFyIGYsbCxjLGg9W10scD1bXSxkPW8ubGVuZ3RoLHY9c3x8ZHQodHx8IioiLHUubm9kZVR5cGU/W3VdOnUsW10pLG09ZSYmKHN8fCF0KT9sdCh2LGgsZSx1LGEpOnYsZz1uP2l8fChzP2U6ZHx8cik/W106bzptO24mJm4obSxnLHUsYSk7aWYocil7Zj1sdChnLHApLHIoZixbXSx1LGEpLGw9Zi5sZW5ndGg7d2hpbGUobC0tKWlmKGM9ZltsXSlnW3BbbF1dPSEobVtwW2xdXT1jKX1pZihzKXtpZihpfHxlKXtpZihpKXtmPVtdLGw9Zy5sZW5ndGg7d2hpbGUobC0tKShjPWdbbF0pJiZmLnB1c2gobVtsXT1jKTtpKG51bGwsZz1bXSxmLGEpfWw9Zy5sZW5ndGg7d2hpbGUobC0tKShjPWdbbF0pJiYoZj1pP1QuY2FsbChzLGMpOmhbbF0pPi0xJiYoc1tmXT0hKG9bZl09YykpfX1lbHNlIGc9bHQoZz09PW8/Zy5zcGxpY2UoZCxnLmxlbmd0aCk6ZyksaT9pKG51bGwsbyxnLGEpOlMuYXBwbHkobyxnKX0pfWZ1bmN0aW9uIGh0KGUpe3ZhciB0LG4scixzPWUubGVuZ3RoLG89aS5yZWxhdGl2ZVtlWzBdLnR5cGVdLHU9b3x8aS5yZWxhdGl2ZVsiICJdLGE9bz8xOjAsZj1hdChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9LHUsITApLGw9YXQoZnVuY3Rpb24oZSl7cmV0dXJuIFQuY2FsbCh0LGUpPi0xfSx1LCEwKSxoPVtmdW5jdGlvbihlLG4scil7cmV0dXJuIW8mJihyfHxuIT09Yyl8fCgodD1uKS5ub2RlVHlwZT9mKGUsbixyKTpsKGUsbixyKSl9XTtmb3IoO2E8czthKyspaWYobj1pLnJlbGF0aXZlW2VbYV0udHlwZV0paD1bYXQoZnQoaCksbildO2Vsc2V7bj1pLmZpbHRlcltlW2FdLnR5cGVdLmFwcGx5KG51bGwsZVthXS5tYXRjaGVzKTtpZihuW2RdKXtyPSsrYTtmb3IoO3I8cztyKyspaWYoaS5yZWxhdGl2ZVtlW3JdLnR5cGVdKWJyZWFrO3JldHVybiBjdChhPjEmJmZ0KGgpLGE+MSYmZS5zbGljZSgwLGEtMSkuam9pbigiIikucmVwbGFjZShqLCIkMSIpLG4sYTxyJiZodChlLnNsaWNlKGEscikpLHI8cyYmaHQoZT1lLnNsaWNlKHIpKSxyPHMmJmUuam9pbigiIikpfWgucHVzaChuKX1yZXR1cm4gZnQoaCl9ZnVuY3Rpb24gcHQoZSx0KXt2YXIgcj10Lmxlbmd0aD4wLHM9ZS5sZW5ndGg+MCxvPWZ1bmN0aW9uKHUsYSxmLGwsaCl7dmFyIHAsZCx2LG09W10seT0wLHc9IjAiLHg9dSYmW10sVD1oIT1udWxsLE49YyxDPXV8fHMmJmkuZmluZC5UQUcoIioiLGgmJmEucGFyZW50Tm9kZXx8YSksaz1iKz1OPT1udWxsPzE6TWF0aC5FO1QmJihjPWEhPT1nJiZhLG49by5lbCk7Zm9yKDsocD1DW3ddKSE9bnVsbDt3Kyspe2lmKHMmJnApe2ZvcihkPTA7dj1lW2RdO2QrKylpZih2KHAsYSxmKSl7bC5wdXNoKHApO2JyZWFrfVQmJihiPWssbj0rK28uZWwpfXImJigocD0hdiYmcCkmJnktLSx1JiZ4LnB1c2gocCkpfXkrPXc7aWYociYmdyE9PXkpe2ZvcihkPTA7dj10W2RdO2QrKyl2KHgsbSxhLGYpO2lmKHUpe2lmKHk+MCl3aGlsZSh3LS0pIXhbd10mJiFtW3ddJiYobVt3XT1FLmNhbGwobCkpO209bHQobSl9Uy5hcHBseShsLG0pLFQmJiF1JiZtLmxlbmd0aD4wJiZ5K3QubGVuZ3RoPjEmJm50LnVuaXF1ZVNvcnQobCl9cmV0dXJuIFQmJihiPWssYz1OKSx4fTtyZXR1cm4gby5lbD0wLHI/TihvKTpvfWZ1bmN0aW9uIGR0KGUsdCxuKXt2YXIgcj0wLGk9dC5sZW5ndGg7Zm9yKDtyPGk7cisrKW50KGUsdFtyXSxuKTtyZXR1cm4gbn1mdW5jdGlvbiB2dChlLHQsbixyLHMpe3ZhciBvLHUsZixsLGMsaD11dChlKSxwPWgubGVuZ3RoO2lmKCFyJiZoLmxlbmd0aD09PTEpe3U9aFswXT1oWzBdLnNsaWNlKDApO2lmKHUubGVuZ3RoPjImJihmPXVbMF0pLnR5cGU9PT0iSUQiJiZ0Lm5vZGVUeXBlPT09OSYmIXMmJmkucmVsYXRpdmVbdVsxXS50eXBlXSl7dD1pLmZpbmQuSUQoZi5tYXRjaGVzWzBdLnJlcGxhY2UoJCwiIiksdCxzKVswXTtpZighdClyZXR1cm4gbjtlPWUuc2xpY2UodS5zaGlmdCgpLmxlbmd0aCl9Zm9yKG89Si5QT1MudGVzdChlKT8tMTp1Lmxlbmd0aC0xO28+PTA7by0tKXtmPXVbb107aWYoaS5yZWxhdGl2ZVtsPWYudHlwZV0pYnJlYWs7aWYoYz1pLmZpbmRbbF0paWYocj1jKGYubWF0Y2hlc1swXS5yZXBsYWNlKCQsIiIpLHoudGVzdCh1WzBdLnR5cGUpJiZ0LnBhcmVudE5vZGV8fHQscykpe3Uuc3BsaWNlKG8sMSksZT1yLmxlbmd0aCYmdS5qb2luKCIiKTtpZighZSlyZXR1cm4gUy5hcHBseShuLHguY2FsbChyLDApKSxuO2JyZWFrfX19cmV0dXJuIGEoZSxoKShyLHQscyxuLHoudGVzdChlKSksbn1mdW5jdGlvbiBtdCgpe312YXIgbixyLGkscyxvLHUsYSxmLGwsYyxoPSEwLHA9InVuZGVmaW5lZCIsZD0oInNpemNhY2hlIitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKCIuIiwiIiksbT1TdHJpbmcsZz1lLmRvY3VtZW50LHk9Zy5kb2N1bWVudEVsZW1lbnQsYj0wLHc9MCxFPVtdLnBvcCxTPVtdLnB1c2gseD1bXS5zbGljZSxUPVtdLmluZGV4T2Z8fGZ1bmN0aW9uKGUpe3ZhciB0PTAsbj10aGlzLmxlbmd0aDtmb3IoO3Q8bjt0KyspaWYodGhpc1t0XT09PWUpcmV0dXJuIHQ7cmV0dXJuLTF9LE49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVtkXT10PT1udWxsfHx0LGV9LEM9ZnVuY3Rpb24oKXt2YXIgZT17fSx0PVtdO3JldHVybiBOKGZ1bmN0aW9uKG4scil7cmV0dXJuIHQucHVzaChuKT5pLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVt0LnNoaWZ0KCldLGVbbisiICJdPXJ9LGUpfSxrPUMoKSxMPUMoKSxBPUMoKSxPPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixNPSIoPzpcXFxcLnxbLVxcd118W15cXHgwMC1cXHhhMF0pKyIsXz1NLnJlcGxhY2UoInciLCJ3IyIpLEQ9IihbKl4kfCF+XT89KSIsUD0iXFxbIitPKyIqKCIrTSsiKSIrTysiKig/OiIrRCtPKyIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIitfKyIpfCl8KSIrTysiKlxcXSIsSD0iOigiK00rIikoPzpcXCgoPzooWydcIl0pKCg/OlxcXFwufFteXFxcXF0pKj8pXFwyfChbXigpW1xcXV0qfCg/Oig/OiIrUCsiKXxbXjpdfFxcXFwuKSp8LiopKVxcKXwpIixCPSI6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrTysiKigoPzotXFxkKT9cXGQqKSIrTysiKlxcKXwpKD89W14tXXwkKSIsaj1uZXcgUmVnRXhwKCJeIitPKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK08rIiskIiwiZyIpLEY9bmV3IFJlZ0V4cCgiXiIrTysiKiwiK08rIioiKSxJPW5ldyBSZWdFeHAoIl4iK08rIiooW1xceDIwXFx0XFxyXFxuXFxmPit+XSkiK08rIioiKSxxPW5ldyBSZWdFeHAoSCksUj0vXig/OiMoW1x3XC1dKyl8KFx3Kyl8XC4oW1x3XC1dKykpJC8sVT0vXjpub3QvLHo9L1tceDIwXHRcclxuXGZdKlsrfl0vLFc9Lzpub3RcKCQvLFg9L2hcZC9pLFY9L2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaSwkPS9cXCg/IVxcKS9nLEo9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitNKyIpIiksTkFNRTpuZXcgUmVnRXhwKCJeXFxbbmFtZT1bJ1wiXT8oIitNKyIpWydcIl0/XFxdIiksVEFHOm5ldyBSZWdFeHAoIl4oIitNLnJlcGxhY2UoInciLCJ3KiIpKyIpIiksQVRUUjpuZXcgUmVnRXhwKCJeIitQKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrSCksUE9TOm5ldyBSZWdFeHAoQiwiaSIpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8bnRofGZpcnN0fGxhc3QpLWNoaWxkKD86XFwoIitPKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitPKyIqKD86KFsrLV18KSIrTysiKihcXGQrKXwpKSIrTysiKlxcKXwpIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitPKyIqWz4rfl18IitCLCJpIil9LEs9ZnVuY3Rpb24oZSl7dmFyIHQ9Zy5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuIGUodCl9Y2F0Y2gobil7cmV0dXJuITF9ZmluYWxseXt0PW51bGx9fSxRPUsoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXBwZW5kQ2hpbGQoZy5jcmVhdGVDb21tZW50KCIiKSksIWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxHPUsoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IixlLmZpcnN0Q2hpbGQmJnR5cGVvZiBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09cCYmZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09IiMifSksWT1LKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8c2VsZWN0Pjwvc2VsZWN0PiI7dmFyIHQ9dHlwZW9mIGUubGFzdENoaWxkLmdldEF0dHJpYnV0ZSgibXVsdGlwbGUiKTtyZXR1cm4gdCE9PSJib29sZWFuIiYmdCE9PSJzdHJpbmcifSksWj1LKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGRpdiBjbGFzcz0naGlkZGVuIGUnPjwvZGl2PjxkaXYgY2xhc3M9J2hpZGRlbic+PC9kaXY+IiwhZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lfHwhZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPyExOihlLmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiLGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTIpfSksZXQ9SyhmdW5jdGlvbihlKXtlLmlkPWQrMCxlLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInPjwvYT48ZGl2IG5hbWU9JyIrZCsiJz48L2Rpdj4iLHkuaW5zZXJ0QmVmb3JlKGUseS5maXJzdENoaWxkKTt2YXIgdD1nLmdldEVsZW1lbnRzQnlOYW1lJiZnLmdldEVsZW1lbnRzQnlOYW1lKGQpLmxlbmd0aD09PTIrZy5nZXRFbGVtZW50c0J5TmFtZShkKzApLmxlbmd0aDtyZXR1cm4gcj0hZy5nZXRFbGVtZW50QnlJZChkKSx5LnJlbW92ZUNoaWxkKGUpLHR9KTt0cnl7eC5jYWxsKHkuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaCh0dCl7eD1mdW5jdGlvbihlKXt2YXIgdCxuPVtdO2Zvcig7dD10aGlzW2VdO2UrKyluLnB1c2godCk7cmV0dXJuIG59fW50Lm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnQoZSxudWxsLG51bGwsdCl9LG50Lm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe3JldHVybiBudCh0LG51bGwsbnVsbCxbZV0pLmxlbmd0aD4wfSxzPW50LmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsaT1lLm5vZGVUeXBlO2lmKGkpe2lmKGk9PT0xfHxpPT09OXx8aT09PTExKXtpZih0eXBlb2YgZS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKW4rPXMoZSl9ZWxzZSBpZihpPT09M3x8aT09PTQpcmV0dXJuIGUubm9kZVZhbHVlfWVsc2UgZm9yKDt0PWVbcl07cisrKW4rPXModCk7cmV0dXJuIG59LG89bnQuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmKGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0P3Qubm9kZU5hbWUhPT0iSFRNTCI6ITF9LHU9bnQuY29udGFpbnM9eS5jb250YWlucz9mdW5jdGlvbihlLHQpe3ZhciBuPWUubm9kZVR5cGU9PT05P2UuZG9jdW1lbnRFbGVtZW50OmUscj10JiZ0LnBhcmVudE5vZGU7cmV0dXJuIGU9PT1yfHwhIShyJiZyLm5vZGVUeXBlPT09MSYmbi5jb250YWlucyYmbi5jb250YWlucyhyKSl9OnkuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCYmISEoZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSYxNil9OmZ1bmN0aW9uKGUsdCl7d2hpbGUodD10LnBhcmVudE5vZGUpaWYodD09PWUpcmV0dXJuITA7cmV0dXJuITF9LG50LmF0dHI9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPW8oZSk7cmV0dXJuIHJ8fCh0PXQudG9Mb3dlckNhc2UoKSksKG49aS5hdHRySGFuZGxlW3RdKT9uKGUpOnJ8fFk/ZS5nZXRBdHRyaWJ1dGUodCk6KG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpLG4/dHlwZW9mIGVbdF09PSJib29sZWFuIj9lW3RdP3Q6bnVsbDpuLnNwZWNpZmllZD9uLnZhbHVlOm51bGw6bnVsbCl9LGk9bnQuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86TixtYXRjaDpKLGF0dHJIYW5kbGU6Rz97fTp7aHJlZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSx0eXBlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0sZmluZDp7SUQ6cj9mdW5jdGlvbihlLHQsbil7aWYodHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQhPT1wJiYhbil7dmFyIHI9dC5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gciYmci5wYXJlbnROb2RlP1tyXTpbXX19OmZ1bmN0aW9uKGUsbixyKXtpZih0eXBlb2Ygbi5nZXRFbGVtZW50QnlJZCE9PXAmJiFyKXt2YXIgaT1uLmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBpP2kuaWQ9PT1lfHx0eXBlb2YgaS5nZXRBdHRyaWJ1dGVOb2RlIT09cCYmaS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnZhbHVlPT09ZT9baV06dDpbXX19LFRBRzpRP2Z1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1wKXJldHVybiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpfTpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoZT09PSIqIil7dmFyIHIsaT1bXSxzPTA7Zm9yKDtyPW5bc107cysrKXIubm9kZVR5cGU9PT0xJiZpLnB1c2gocik7cmV0dXJuIGl9cmV0dXJuIG59LE5BTUU6ZXQmJmZ1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxlbWVudHNCeU5hbWUhPT1wKXJldHVybiB0LmdldEVsZW1lbnRzQnlOYW1lKG5hbWUpfSxDTEFTUzpaJiZmdW5jdGlvbihlLHQsbil7aWYodHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PXAmJiFuKXJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnJlcGxhY2UoJCwiIiksZVszXT0oZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UoJCwiIiksZVsyXT09PSJ+PSImJihlWzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksZVsxXT09PSJudGgiPyhlWzJdfHxudC5lcnJvcihlWzBdKSxlWzNdPSsoZVszXT9lWzRdKyhlWzVdfHwxKToyKihlWzJdPT09ImV2ZW4ifHxlWzJdPT09Im9kZCIpKSxlWzRdPSsoZVs2XStlWzddfHxlWzJdPT09Im9kZCIpKTplWzJdJiZudC5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZihKLkNISUxELnRlc3QoZVswXSkpcmV0dXJuIG51bGw7aWYoZVszXSllWzJdPWVbM107ZWxzZSBpZih0PWVbNF0pcS50ZXN0KHQpJiYobj11dCh0LCEwKSkmJihuPXQuaW5kZXhPZigiKSIsdC5sZW5ndGgtbiktdC5sZW5ndGgpJiYodD10LnNsaWNlKDAsbiksZVswXT1lWzBdLnNsaWNlKDAsbikpLGVbMl09dDtyZXR1cm4gZS5zbGljZSgwLDMpfX0sZmlsdGVyOntJRDpyP2Z1bmN0aW9uKGUpe3JldHVybiBlPWUucmVwbGFjZSgkLCIiKSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRBdHRyaWJ1dGUoImlkIik9PT1lfX06ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZS5yZXBsYWNlKCQsIiIpLGZ1bmN0aW9uKHQpe3ZhciBuPXR5cGVvZiB0LmdldEF0dHJpYnV0ZU5vZGUhPT1wJiZ0LmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIG4mJm4udmFsdWU9PT1lfX0sVEFHOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09IioiP2Z1bmN0aW9uKCl7cmV0dXJuITB9OihlPWUucmVwbGFjZSgkLCIiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVOYW1lJiZ0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1lfSl9LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PWtbZF1bZSsiICJdO3JldHVybiB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK08rIikiK2UrIigiK08rInwkKSIpKSYmayhlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoZS5jbGFzc05hbWV8fHR5cGVvZiBlLmdldEF0dHJpYnV0ZSE9PXAmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dmFyIHM9bnQuYXR0cihyLGUpO3JldHVybiBzPT1udWxsP3Q9PT0iIT0iOnQ/KHMrPSIiLHQ9PT0iPSI/cz09PW46dD09PSIhPSI/cyE9PW46dD09PSJePSI/biYmcy5pbmRleE9mKG4pPT09MDp0PT09Iio9Ij9uJiZzLmluZGV4T2Yobik+LTE6dD09PSIkPSI/biYmcy5zdWJzdHIocy5sZW5ndGgtbi5sZW5ndGgpPT09bjp0PT09In49Ij8oIiAiK3MrIiAiKS5pbmRleE9mKG4pPi0xOnQ9PT0ifD0iP3M9PT1ufHxzLnN1YnN0cigwLG4ubGVuZ3RoKzEpPT09bisiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGU9PT0ibnRoIj9mdW5jdGlvbihlKXt2YXIgdCxpLHM9ZS5wYXJlbnROb2RlO2lmKG49PT0xJiZyPT09MClyZXR1cm4hMDtpZihzKXtpPTA7Zm9yKHQ9cy5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKWlmKHQubm9kZVR5cGU9PT0xKXtpKys7aWYoZT09PXQpYnJlYWt9fXJldHVybiBpLT1yLGk9PT1ufHxpJW49PT0wJiZpL24+PTB9OmZ1bmN0aW9uKHQpe3ZhciBuPXQ7c3dpdGNoKGUpe2Nhc2Uib25seSI6Y2FzZSJmaXJzdCI6d2hpbGUobj1uLnByZXZpb3VzU2libGluZylpZihuLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtpZihlPT09ImZpcnN0IilyZXR1cm4hMDtuPXQ7Y2FzZSJsYXN0Ijp3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobi5ub2RlVHlwZT09PTEpcmV0dXJuITE7cmV0dXJuITB9fX0sUFNFVURPOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1pLnBzZXVkb3NbZV18fGkuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxudC5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiByW2RdP3IodCk6ci5sZW5ndGg+MT8obj1bZSxlLCIiLHRdLGkuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP04oZnVuY3Rpb24oZSxuKXt2YXIgaSxzPXIoZSx0KSxvPXMubGVuZ3RoO3doaWxlKG8tLSlpPVQuY2FsbChlLHNbb10pLGVbaV09IShuW2ldPXNbb10pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSwwLG4pfSk6cn19LHBzZXVkb3M6e25vdDpOKGZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W10scj1hKGUucmVwbGFjZShqLCIkMSIpKTtyZXR1cm4gcltkXT9OKGZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzLG89cihlLG51bGwsaSxbXSksdT1lLmxlbmd0aDt3aGlsZSh1LS0paWYocz1vW3VdKWVbdV09ISh0W3VdPXMpfSk6ZnVuY3Rpb24oZSxpLHMpe3JldHVybiB0WzBdPWUscih0LG51bGwscyxuKSwhbi5wb3AoKX19KSxoYXM6TihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG50KGUsdCkubGVuZ3RoPjB9fSksY29udGFpbnM6TihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuKHQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0fHxzKHQpKS5pbmRleE9mKGUpPi0xfX0pLGVuYWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT0iaW5wdXQiJiYhIWUuY2hlY2tlZHx8dD09PSJvcHRpb24iJiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGUuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiFpLnBzZXVkb3MuZW1wdHkoZSl9LGVtcHR5OmZ1bmN0aW9uKGUpe3ZhciB0O2U9ZS5maXJzdENoaWxkO3doaWxlKGUpe2lmKGUubm9kZU5hbWU+IkAifHwodD1lLm5vZGVUeXBlKT09PTN8fHQ9PT00KXJldHVybiExO2U9ZS5uZXh0U2libGluZ31yZXR1cm4hMH0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBYLnRlc3QoZS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmKHQ9ZS50eXBlKT09PSJ0ZXh0IiYmKChuPWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpPT1udWxsfHxuLnRvTG93ZXJDYXNlKCk9PT10KX0scmFkaW86cnQoInJhZGlvIiksY2hlY2tib3g6cnQoImNoZWNrYm94IiksZmlsZTpydCgiZmlsZSIpLHBhc3N3b3JkOnJ0KCJwYXNzd29yZCIpLGltYWdlOnJ0KCJpbWFnZSIpLHN1Ym1pdDppdCgic3VibWl0IikscmVzZXQ6aXQoInJlc2V0IiksYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD09PSJpbnB1dCImJmUudHlwZT09PSJidXR0b24ifHx0PT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBWLnRlc3QoZS5ub2RlTmFtZSl9LGZvY3VzOmZ1bmN0aW9uKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm4gZT09PXQuYWN0aXZlRWxlbWVudCYmKCF0Lmhhc0ZvY3VzfHx0Lmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxhY3RpdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1lLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH0sZmlyc3Q6c3QoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnN0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTpzdChmdW5jdGlvbihlLHQsbil7cmV0dXJuW248MD9uK3Q6bl19KSxldmVuOnN0KGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksb2RkOnN0KGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTE7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6c3QoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47LS1yPj0wOyllLnB1c2gocik7cmV0dXJuIGV9KSxndDpzdChmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjsrK3I8dDspZS5wdXNoKHIpO3JldHVybiBlfSl9fSxmPXkuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQ/KGw9ITAsMCk6KCFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9lLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkmNCk/LTE6MX06ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO2lmKGUuc291cmNlSW5kZXgmJnQuc291cmNlSW5kZXgpcmV0dXJuIGUuc291cmNlSW5kZXgtdC5zb3VyY2VJbmRleDt2YXIgbixyLGk9W10scz1bXSxvPWUucGFyZW50Tm9kZSx1PXQucGFyZW50Tm9kZSxhPW87aWYobz09PXUpcmV0dXJuIG90KGUsdCk7aWYoIW8pcmV0dXJuLTE7aWYoIXUpcmV0dXJuIDE7d2hpbGUoYSlpLnVuc2hpZnQoYSksYT1hLnBhcmVudE5vZGU7YT11O3doaWxlKGEpcy51bnNoaWZ0KGEpLGE9YS5wYXJlbnROb2RlO249aS5sZW5ndGgscj1zLmxlbmd0aDtmb3IodmFyIGY9MDtmPG4mJmY8cjtmKyspaWYoaVtmXSE9PXNbZl0pcmV0dXJuIG90KGlbZl0sc1tmXSk7cmV0dXJuIGY9PT1uP290KGUsc1tmXSwtMSk6b3QoaVtmXSx0LDEpfSxbMCwwXS5zb3J0KGYpLGg9IWwsbnQudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MSxpPTA7bD1oLGUuc29ydChmKTtpZihsKXtmb3IoO3Q9ZVtyXTtyKyspdD09PWVbci0xXSYmKGk9bi5wdXNoKHIpKTt3aGlsZShpLS0pZS5zcGxpY2UobltpXSwxKX1yZXR1cm4gZX0sbnQuZXJyb3I9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2UpfSxhPW50LmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9W10scz1BW2RdW2UrIiAiXTtpZighcyl7dHx8KHQ9dXQoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKXM9aHQodFtuXSksc1tkXT9yLnB1c2gocyk6aS5wdXNoKHMpO3M9QShlLHB0KGkscikpfXJldHVybiBzfSxnLnF1ZXJ5U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGUsdD12dCxuPS8nfFxcL2cscj0vXD1bXHgyMFx0XHJcblxmXSooW14nIlxdXSopW1x4MjBcdFxyXG5cZl0qXF0vZyxpPVsiOmZvY3VzIl0scz1bIjphY3RpdmUiXSx1PXkubWF0Y2hlc1NlbGVjdG9yfHx5Lm1vek1hdGNoZXNTZWxlY3Rvcnx8eS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHkub01hdGNoZXNTZWxlY3Rvcnx8eS5tc01hdGNoZXNTZWxlY3RvcjtLKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fGkucHVzaCgiXFxbIitPKyIqKD86Y2hlY2tlZHxkaXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1ZSkiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxpLnB1c2goIjpjaGVja2VkIil9KSxLKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8cCB0ZXN0PScnPjwvcD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW3Rlc3RePScnXSIpLmxlbmd0aCYmaS5wdXNoKCJbKl4kXT0iK08rIiooPzpcIlwifCcnKSIpLGUuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0naGlkZGVuJy8+IixlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RofHxpLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIil9KSxpPW5ldyBSZWdFeHAoaS5qb2luKCJ8IikpLHZ0PWZ1bmN0aW9uKGUscixzLG8sdSl7aWYoIW8mJiF1JiYhaS50ZXN0KGUpKXt2YXIgYSxmLGw9ITAsYz1kLGg9cixwPXIubm9kZVR5cGU9PT05JiZlO2lmKHIubm9kZVR5cGU9PT0xJiZyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ib2JqZWN0Iil7YT11dChlKSwobD1yLmdldEF0dHJpYnV0ZSgiaWQiKSk/Yz1sLnJlcGxhY2UobiwiXFwkJiIpOnIuc2V0QXR0cmlidXRlKCJpZCIsYyksYz0iW2lkPSciK2MrIiddICIsZj1hLmxlbmd0aDt3aGlsZShmLS0pYVtmXT1jK2FbZl0uam9pbigiIik7aD16LnRlc3QoZSkmJnIucGFyZW50Tm9kZXx8cixwPWEuam9pbigiLCIpfWlmKHApdHJ5e3JldHVybiBTLmFwcGx5KHMseC5jYWxsKGgucXVlcnlTZWxlY3RvckFsbChwKSwwKSksc31jYXRjaCh2KXt9ZmluYWxseXtsfHxyLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19cmV0dXJuIHQoZSxyLHMsbyx1KX0sdSYmKEsoZnVuY3Rpb24odCl7ZT11LmNhbGwodCwiZGl2Iik7dHJ5e3UuY2FsbCh0LCJbdGVzdCE9JyddOnNpenpsZSIpLHMucHVzaCgiIT0iLEgpfWNhdGNoKG4pe319KSxzPW5ldyBSZWdFeHAocy5qb2luKCJ8IikpLG50Lm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbih0LG4pe249bi5yZXBsYWNlKHIsIj0nJDEnXSIpO2lmKCFvKHQpJiYhcy50ZXN0KG4pJiYhaS50ZXN0KG4pKXRyeXt2YXIgYT11LmNhbGwodCxuKTtpZihhfHxlfHx0LmRvY3VtZW50JiZ0LmRvY3VtZW50Lm5vZGVUeXBlIT09MTEpcmV0dXJuIGF9Y2F0Y2goZil7fXJldHVybiBudChuLG51bGwsbnVsbCxbdF0pLmxlbmd0aD4wfSl9KCksaS5wc2V1ZG9zLm50aD1pLnBzZXVkb3MuZXEsaS5maWx0ZXJzPW10LnByb3RvdHlwZT1pLnBzZXVkb3MsaS5zZXRGaWx0ZXJzPW5ldyBtdCxudC5hdHRyPXYuYXR0cix2LmZpbmQ9bnQsdi5leHByPW50LnNlbGVjdG9ycyx2LmV4cHJbIjoiXT12LmV4cHIucHNldWRvcyx2LnVuaXF1ZT1udC51bmlxdWVTb3J0LHYudGV4dD1udC5nZXRUZXh0LHYuaXNYTUxEb2M9bnQuaXNYTUwsdi5jb250YWlucz1udC5jb250YWluc30oZSk7dmFyIG50PS9VbnRpbCQvLHJ0PS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLGl0PS9eLlteOiNcW1wuLF0qJC8sc3Q9di5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxvdD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTt2LmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzLG8sdT10aGlzO2lmKHR5cGVvZiBlIT0ic3RyaW5nIilyZXR1cm4gdihlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wLG49dS5sZW5ndGg7dDxuO3QrKylpZih2LmNvbnRhaW5zKHVbdF0sdGhpcykpcmV0dXJuITB9KTtvPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5kIixlKTtmb3IodD0wLG49dGhpcy5sZW5ndGg7dDxuO3QrKyl7cj1vLmxlbmd0aCx2LmZpbmQoZSx0aGlzW3RdLG8pO2lmKHQ+MClmb3IoaT1yO2k8by5sZW5ndGg7aSsrKWZvcihzPTA7czxyO3MrKylpZihvW3NdPT09b1tpXSl7by5zcGxpY2UoaS0tLDEpO2JyZWFrfX1yZXR1cm4gb30saGFzOmZ1bmN0aW9uKGUpe3ZhciB0LG49dihlLHRoaXMpLHI9bi5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDt0PHI7dCsrKWlmKHYuY29udGFpbnModGhpcyxuW3RdKSlyZXR1cm4hMH0pfSxub3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGZ0KHRoaXMsZSwhMSksIm5vdCIsZSl9LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcyxlLCEwKSwiZmlsdGVyIixlKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYodHlwZW9mIGU9PSJzdHJpbmciP3N0LnRlc3QoZSk/dihlLHRoaXMuY29udGV4dCkuaW5kZXgodGhpc1swXSk+PTA6di5maWx0ZXIoZSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihlKS5sZW5ndGg+MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxzPVtdLG89c3QudGVzdChlKXx8dHlwZW9mIGUhPSJzdHJpbmciP3YoZSx0fHx0aGlzLmNvbnRleHQpOjA7Zm9yKDtyPGk7cisrKXtuPXRoaXNbcl07d2hpbGUobiYmbi5vd25lckRvY3VtZW50JiZuIT09dCYmbi5ub2RlVHlwZSE9PTExKXtpZihvP28uaW5kZXgobik+LTE6di5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKXtzLnB1c2gobik7YnJlYWt9bj1uLnBhcmVudE5vZGV9fXJldHVybiBzPXMubGVuZ3RoPjE/di51bmlxdWUocyk6cyx0aGlzLnB1c2hTdGFjayhzLCJjbG9zZXN0IixlKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/dHlwZW9mIGU9PSJzdHJpbmciP3YuaW5BcnJheSh0aGlzWzBdLHYoZSkpOnYuaW5BcnJheShlLmpxdWVyeT9lWzBdOmUsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIGU9PSJzdHJpbmciP3YoZSx0KTp2Lm1ha2VBcnJheShlJiZlLm5vZGVUeXBlP1tlXTplKSxyPXYubWVyZ2UodGhpcy5nZXQoKSxuKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodXQoblswXSl8fHV0KHJbMF0pP3I6di51bmlxdWUocikpfSxhZGRCYWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZChlPT1udWxsP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKX19KSx2LmZuLmFuZFNlbGY9di5mbi5hZGRCYWNrLHYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5ub2RlVHlwZSE9PTExP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gdi5kaXIoZSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LmRpcihlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gYXQoZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gYXQoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHYuZGlyKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHYuZGlyKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LmRpcihlLCJuZXh0U2libGluZyIsbil9LHByZXZVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYuZGlyKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiB2LnNpYmxpbmcoKGUucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsZSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGUpe3JldHVybiB2LnNpYmxpbmcoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHYubm9kZU5hbWUoZSwiaWZyYW1lIik/ZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdpbmRvdy5kb2N1bWVudDp2Lm1lcmdlKFtdLGUuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihlLHQpe3YuZm5bZV09ZnVuY3Rpb24obixyKXt2YXIgaT12Lm1hcCh0aGlzLHQsbik7cmV0dXJuIG50LnRlc3QoZSl8fChyPW4pLHImJnR5cGVvZiByPT0ic3RyaW5nIiYmKGk9di5maWx0ZXIocixpKSksaT10aGlzLmxlbmd0aD4xJiYhb3RbZV0/di51bmlxdWUoaSk6aSx0aGlzLmxlbmd0aD4xJiZydC50ZXN0KGUpJiYoaT1pLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2soaSxlLGwuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9fSksdi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4mJihlPSI6bm90KCIrZSsiKSIpLHQubGVuZ3RoPT09MT92LmZpbmQubWF0Y2hlc1NlbGVjdG9yKHRbMF0sZSk/W3RbMF1dOltdOnYuZmluZC5tYXRjaGVzKGUsdCl9LGRpcjpmdW5jdGlvbihlLG4scil7dmFyIGk9W10scz1lW25dO3doaWxlKHMmJnMubm9kZVR5cGUhPT05JiYocj09PXR8fHMubm9kZVR5cGUhPT0xfHwhdihzKS5pcyhyKSkpcy5ub2RlVHlwZT09PTEmJmkucHVzaChzKSxzPXNbbl07cmV0dXJuIGl9LHNpYmxpbmc6ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtmb3IoO2U7ZT1lLm5leHRTaWJsaW5nKWUubm9kZVR5cGU9PT0xJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufX0pO3ZhciBjdD0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsaHQ9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxwdD0vXlxzKy8sZHQ9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naSx2dD0vPChbXHc6XSspLyxtdD0vPHRib2R5L2ksZ3Q9Lzx8JiM/XHcrOy8seXQ9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxidD0vPCg/OnNjcmlwdHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLHd0PW5ldyBSZWdFeHAoIjwoPzoiK2N0KyIpW1xccy8+XSIsImkiKSxFdD0vXig/OmNoZWNrYm94fHJhZGlvKSQvLFN0PS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHh0PS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksVHQ9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKXxbXF1cLV17Mn0+XHMqJC9nLE50PXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19LEN0PWx0KGkpLGt0PUN0LmFwcGVuZENoaWxkKGkuY3JlYXRlRWxlbWVudCgiZGl2IikpO050Lm9wdGdyb3VwPU50Lm9wdGlvbixOdC50Ym9keT1OdC50Zm9vdD1OdC5jb2xncm91cD1OdC5jYXB0aW9uPU50LnRoZWFkLE50LnRoPU50LnRkLHYuc3VwcG9ydC5odG1sU2VyaWFsaXplfHwoTnQuX2RlZmF1bHQ9WzEsIlg8ZGl2PiIsIjwvZGl2PiJdKSx2LmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gdi5hY2Nlc3ModGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gZT09PXQ/di50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8aSkuY3JlYXRlVGV4dE5vZGUoZSkpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHdyYXBBbGw6ZnVuY3Rpb24oZSl7aWYodi5pc0Z1bmN0aW9uKGUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7dih0aGlzKS53cmFwQWxsKGUuY2FsbCh0aGlzLHQpKX0pO2lmKHRoaXNbMF0pe3ZhciB0PXYoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0Q2hpbGQmJmUuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTEpZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihlKXtyZXR1cm4gdi5pc0Z1bmN0aW9uKGUpP3RoaXMuZWFjaChmdW5jdGlvbih0KXt2KHRoaXMpLndyYXBJbm5lcihlLmNhbGwodGhpcyx0KSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD12KHRoaXMpLG49dC5jb250ZW50cygpO24ubGVuZ3RoP24ud3JhcEFsbChlKTp0LmFwcGVuZChlKX0pfSx3cmFwOmZ1bmN0aW9uKGUpe3ZhciB0PXYuaXNGdW5jdGlvbihlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKG4pe3YodGhpcykud3JhcEFsbCh0P2UuY2FsbCh0aGlzLG4pOmUpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXt2Lm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8dih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihlKXsodGhpcy5ub2RlVHlwZT09PTF8fHRoaXMubm9kZVR5cGU9PT0xMSkmJnRoaXMuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihlKXsodGhpcy5ub2RlVHlwZT09PTF8fHRoaXMubm9kZVR5cGU9PT0xMSkmJnRoaXMuaW5zZXJ0QmVmb3JlKGUsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZighdXQodGhpc1swXSkpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBlPXYuY2xlYW4oYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodi5tZXJnZShlLHRoaXMpLCJiZWZvcmUiLHRoaXMuc2VsZWN0b3IpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZighdXQodGhpc1swXSkpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBlPXYuY2xlYW4oYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodi5tZXJnZSh0aGlzLGUpLCJhZnRlciIsdGhpcy5zZWxlY3Rvcil9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTA7Zm9yKDsobj10aGlzW3JdKSE9bnVsbDtyKyspaWYoIWV8fHYuZmlsdGVyKGUsW25dKS5sZW5ndGgpIXQmJm4ubm9kZVR5cGU9PT0xJiYodi5jbGVhbkRhdGEobi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx2LmNsZWFuRGF0YShbbl0pKSxuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXt2YXIgZSx0PTA7Zm9yKDsoZT10aGlzW3RdKSE9bnVsbDt0Kyspe2Uubm9kZVR5cGU9PT0xJiZ2LmNsZWFuRGF0YShlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGUuZmlyc3RDaGlsZCllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZT09bnVsbD8hMTplLHQ9dD09bnVsbD9lOnQsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdi5jbG9uZSh0aGlzLGUsdCl9KX0saHRtbDpmdW5jdGlvbihlKXtyZXR1cm4gdi5hY2Nlc3ModGhpcyxmdW5jdGlvbihlKXt2YXIgbj10aGlzWzBdfHx7fSxyPTAsaT10aGlzLmxlbmd0aDtpZihlPT09dClyZXR1cm4gbi5ub2RlVHlwZT09PTE/bi5pbm5lckhUTUwucmVwbGFjZShodCwiIik6dDtpZih0eXBlb2YgZT09InN0cmluZyImJiF5dC50ZXN0KGUpJiYodi5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fCF3dC50ZXN0KGUpKSYmKHYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IXB0LnRlc3QoZSkpJiYhTnRbKHZ0LmV4ZWMoZSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXtlPWUucmVwbGFjZShkdCwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7cjxpO3IrKyluPXRoaXNbcl18fHt9LG4ubm9kZVR5cGU9PT0xJiYodi5jbGVhbkRhdGEobi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSxuLmlubmVySFRNTD1lKTtuPTB9Y2F0Y2gocyl7fX1uJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGUpe3JldHVybiB1dCh0aGlzWzBdKT90aGlzLmxlbmd0aD90aGlzLnB1c2hTdGFjayh2KHYuaXNGdW5jdGlvbihlKT9lKCk6ZSksInJlcGxhY2VXaXRoIixlKTp0aGlzOnYuaXNGdW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24odCl7dmFyIG49dih0aGlzKSxyPW4uaHRtbCgpO24ucmVwbGFjZVdpdGgoZS5jYWxsKHRoaXMsdCxyKSl9KToodHlwZW9mIGUhPSJzdHJpbmciJiYoZT12KGUpLmRldGFjaCgpKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLm5leHRTaWJsaW5nLG49dGhpcy5wYXJlbnROb2RlO3YodGhpcykucmVtb3ZlKCksdD92KHQpLmJlZm9yZShlKTp2KG4pLmFwcGVuZChlKX0pKX0sZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlbW92ZShlLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oZSxuLHIpe2U9W10uY29uY2F0LmFwcGx5KFtdLGUpO3ZhciBpLHMsbyx1LGE9MCxmPWVbMF0sbD1bXSxjPXRoaXMubGVuZ3RoO2lmKCF2LnN1cHBvcnQuY2hlY2tDbG9uZSYmYz4xJiZ0eXBlb2YgZj09InN0cmluZyImJlN0LnRlc3QoZikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3YodGhpcykuZG9tTWFuaXAoZSxuLHIpfSk7aWYodi5pc0Z1bmN0aW9uKGYpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIHM9dih0aGlzKTtlWzBdPWYuY2FsbCh0aGlzLGksbj9zLmh0bWwoKTp0KSxzLmRvbU1hbmlwKGUsbixyKX0pO2lmKHRoaXNbMF0pe2k9di5idWlsZEZyYWdtZW50KGUsdGhpcyxsKSxvPWkuZnJhZ21lbnQscz1vLmZpcnN0Q2hpbGQsby5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJihvPXMpO2lmKHMpe249biYmdi5ub2RlTmFtZShzLCJ0ciIpO2Zvcih1PWkuY2FjaGVhYmxlfHxjLTE7YTxjO2ErKylyLmNhbGwobiYmdi5ub2RlTmFtZSh0aGlzW2FdLCJ0YWJsZSIpP0x0KHRoaXNbYV0sInRib2R5Iik6dGhpc1thXSxhPT09dT9vOnYuY2xvbmUobywhMCwhMCkpfW89cz1udWxsLGwubGVuZ3RoJiZ2LmVhY2gobCxmdW5jdGlvbihlLHQpe3Quc3JjP3YuYWpheD92LmFqYXgoe3VybDp0LnNyYyx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pOnYuZXJyb3IoIm5vIGFqYXgiKTp2Lmdsb2JhbEV2YWwoKHQudGV4dHx8dC50ZXh0Q29udGVudHx8dC5pbm5lckhUTUx8fCIiKS5yZXBsYWNlKFR0LCIiKSksdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9KX1yZXR1cm4gdGhpc319KSx2LmJ1aWxkRnJhZ21lbnQ9ZnVuY3Rpb24oZSxuLHIpe3ZhciBzLG8sdSxhPWVbMF07cmV0dXJuIG49bnx8aSxuPSFuLm5vZGVUeXBlJiZuWzBdfHxuLG49bi5vd25lckRvY3VtZW50fHxuLGUubGVuZ3RoPT09MSYmdHlwZW9mIGE9PSJzdHJpbmciJiZhLmxlbmd0aDw1MTImJm49PT1pJiZhLmNoYXJBdCgwKT09PSI8IiYmIWJ0LnRlc3QoYSkmJih2LnN1cHBvcnQuY2hlY2tDbG9uZXx8IVN0LnRlc3QoYSkpJiYodi5zdXBwb3J0Lmh0bWw1Q2xvbmV8fCF3dC50ZXN0KGEpKSYmKG89ITAscz12LmZyYWdtZW50c1thXSx1PXMhPT10KSxzfHwocz1uLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSx2LmNsZWFuKGUsbixzLHIpLG8mJih2LmZyYWdtZW50c1thXT11JiZzKSkse2ZyYWdtZW50OnMsY2FjaGVhYmxlOm99fSx2LmZyYWdtZW50cz17fSx2LmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLHQpe3YuZm5bZV09ZnVuY3Rpb24obil7dmFyIHIsaT0wLHM9W10sbz12KG4pLHU9by5sZW5ndGgsYT10aGlzLmxlbmd0aD09PTEmJnRoaXNbMF0ucGFyZW50Tm9kZTtpZigoYT09bnVsbHx8YSYmYS5ub2RlVHlwZT09PTExJiZhLmNoaWxkTm9kZXMubGVuZ3RoPT09MSkmJnU9PT0xKXJldHVybiBvW3RdKHRoaXNbMF0pLHRoaXM7Zm9yKDtpPHU7aSsrKXI9KGk+MD90aGlzLmNsb25lKCEwKTp0aGlzKS5nZXQoKSx2KG9baV0pW3RdKHIpLHM9cy5jb25jYXQocik7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHMsZSxvLnNlbGVjdG9yKX19KSx2LmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscyxvO3Yuc3VwcG9ydC5odG1sNUNsb25lfHx2LmlzWE1MRG9jKGUpfHwhd3QudGVzdCgiPCIrZS5ub2RlTmFtZSsiPiIpP289ZS5jbG9uZU5vZGUoITApOihrdC5pbm5lckhUTUw9ZS5vdXRlckhUTUwsa3QucmVtb3ZlQ2hpbGQobz1rdC5maXJzdENoaWxkKSk7aWYoKCF2LnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhdi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGUubm9kZVR5cGU9PT0xfHxlLm5vZGVUeXBlPT09MTEpJiYhdi5pc1hNTERvYyhlKSl7T3QoZSxvKSxyPU10KGUpLGk9TXQobyk7Zm9yKHM9MDtyW3NdOysrcylpW3NdJiZPdChyW3NdLGlbc10pfWlmKHQpe0F0KGUsbyk7aWYobil7cj1NdChlKSxpPU10KG8pO2ZvcihzPTA7cltzXTsrK3MpQXQocltzXSxpW3NdKX19cmV0dXJuIHI9aT1udWxsLG99LGNsZWFuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBzLG8sdSxhLGYsbCxjLGgscCxkLG0sZyx5PXQ9PT1pJiZDdCxiPVtdO2lmKCF0fHx0eXBlb2YgdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50PT0idW5kZWZpbmVkIil0PWk7Zm9yKHM9MDsodT1lW3NdKSE9bnVsbDtzKyspe3R5cGVvZiB1PT0ibnVtYmVyIiYmKHUrPSIiKTtpZighdSljb250aW51ZTtpZih0eXBlb2YgdT09InN0cmluZyIpaWYoIWd0LnRlc3QodSkpdT10LmNyZWF0ZVRleHROb2RlKHUpO2Vsc2V7eT15fHxsdCh0KSxjPXQuY3JlYXRlRWxlbWVudCgiZGl2IikseS5hcHBlbmRDaGlsZChjKSx1PXUucmVwbGFjZShkdCwiPCQxPjwvJDI+IiksYT0odnQuZXhlYyh1KXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxmPU50W2FdfHxOdC5fZGVmYXVsdCxsPWZbMF0sYy5pbm5lckhUTUw9ZlsxXSt1K2ZbMl07d2hpbGUobC0tKWM9Yy5sYXN0Q2hpbGQ7aWYoIXYuc3VwcG9ydC50Ym9keSl7aD1tdC50ZXN0KHUpLHA9YT09PSJ0YWJsZSImJiFoP2MuZmlyc3RDaGlsZCYmYy5maXJzdENoaWxkLmNoaWxkTm9kZXM6ZlsxXT09PSI8dGFibGU+IiYmIWg/Yy5jaGlsZE5vZGVzOltdO2ZvcihvPXAubGVuZ3RoLTE7bz49MDstLW8pdi5ub2RlTmFtZShwW29dLCJ0Ym9keSIpJiYhcFtvXS5jaGlsZE5vZGVzLmxlbmd0aCYmcFtvXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBbb10pfSF2LnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJnB0LnRlc3QodSkmJmMuaW5zZXJ0QmVmb3JlKHQuY3JlYXRlVGV4dE5vZGUocHQuZXhlYyh1KVswXSksYy5maXJzdENoaWxkKSx1PWMuY2hpbGROb2RlcyxjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dS5ub2RlVHlwZT9iLnB1c2godSk6di5tZXJnZShiLHUpfWMmJih1PWM9eT1udWxsKTtpZighdi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpZm9yKHM9MDsodT1iW3NdKSE9bnVsbDtzKyspdi5ub2RlTmFtZSh1LCJpbnB1dCIpP190KHUpOnR5cGVvZiB1LmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIiYmdi5ncmVwKHUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IiksX3QpO2lmKG4pe209ZnVuY3Rpb24oZSl7aWYoIWUudHlwZXx8eHQudGVzdChlLnR5cGUpKXJldHVybiByP3IucHVzaChlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpOmUpOm4uYXBwZW5kQ2hpbGQoZSl9O2ZvcihzPTA7KHU9YltzXSkhPW51bGw7cysrKWlmKCF2Lm5vZGVOYW1lKHUsInNjcmlwdCIpfHwhbSh1KSluLmFwcGVuZENoaWxkKHUpLHR5cGVvZiB1LmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIiYmKGc9di5ncmVwKHYubWVyZ2UoW10sdS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpLG0pLGIuc3BsaWNlLmFwcGx5KGIsW3MrMSwwXS5jb25jYXQoZykpLHMrPWcubGVuZ3RoKX1yZXR1cm4gYn0sY2xlYW5EYXRhOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLHMsbz0wLHU9di5leHBhbmRvLGE9di5jYWNoZSxmPXYuc3VwcG9ydC5kZWxldGVFeHBhbmRvLGw9di5ldmVudC5zcGVjaWFsO2Zvcig7KGk9ZVtvXSkhPW51bGw7bysrKWlmKHR8fHYuYWNjZXB0RGF0YShpKSl7cj1pW3VdLG49ciYmYVtyXTtpZihuKXtpZihuLmV2ZW50cylmb3IocyBpbiBuLmV2ZW50cylsW3NdP3YuZXZlbnQucmVtb3ZlKGkscyk6di5yZW1vdmVFdmVudChpLHMsbi5oYW5kbGUpO2Fbcl0mJihkZWxldGUgYVtyXSxmP2RlbGV0ZSBpW3VdOmkucmVtb3ZlQXR0cmlidXRlP2kucmVtb3ZlQXR0cmlidXRlKHUpOmlbdV09bnVsbCx2LmRlbGV0ZWRJZHMucHVzaChyKSl9fX19KSxmdW5jdGlvbigpe3ZhciBlLHQ7di51YU1hdGNoPWZ1bmN0aW9uKGUpe2U9ZS50b0xvd2VyQ2FzZSgpO3ZhciB0PS8oY2hyb21lKVsgXC9dKFtcdy5dKykvLmV4ZWMoZSl8fC8od2Via2l0KVsgXC9dKFtcdy5dKykvLmV4ZWMoZSl8fC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKG1zaWUpIChbXHcuXSspLy5leGVjKGUpfHxlLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiYvKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspfCkvLmV4ZWMoZSl8fFtdO3JldHVybnticm93c2VyOnRbMV18fCIiLHZlcnNpb246dFsyXXx8IjAifX0sZT12LnVhTWF0Y2goby51c2VyQWdlbnQpLHQ9e30sZS5icm93c2VyJiYodFtlLmJyb3dzZXJdPSEwLHQudmVyc2lvbj1lLnZlcnNpb24pLHQuY2hyb21lP3Qud2Via2l0PSEwOnQud2Via2l0JiYodC5zYWZhcmk9ITApLHYuYnJvd3Nlcj10LHYuc3ViPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBuZXcgZS5mbi5pbml0KHQsbil9di5leHRlbmQoITAsZSx0aGlzKSxlLnN1cGVyY2xhc3M9dGhpcyxlLmZuPWUucHJvdG90eXBlPXRoaXMoKSxlLmZuLmNvbnN0cnVjdG9yPWUsZS5zdWI9dGhpcy5zdWIsZS5mbi5pbml0PWZ1bmN0aW9uKHIsaSl7cmV0dXJuIGkmJmkgaW5zdGFuY2VvZiB2JiYhKGkgaW5zdGFuY2VvZiBlKSYmKGk9ZShpKSksdi5mbi5pbml0LmNhbGwodGhpcyxyLGksdCl9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbjt2YXIgdD1lKGkpO3JldHVybiBlfX0oKTt2YXIgRHQsUHQsSHQsQnQ9L2FscGhhXChbXildKlwpL2ksanQ9L29wYWNpdHk9KFteKV0qKS8sRnQ9L14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLEl0PS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxxdD0vXm1hcmdpbi8sUnQ9bmV3IFJlZ0V4cCgiXigiK20rIikoLiopJCIsImkiKSxVdD1uZXcgUmVnRXhwKCJeKCIrbSsiKSg/IXB4KVthLXolXSskIiwiaSIpLHp0PW5ldyBSZWdFeHAoIl4oWy0rXSk9KCIrbSsiKSIsImkiKSxXdD17Qk9EWToiYmxvY2sifSxYdD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sVnQ9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0OjQwMH0sJHQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxKdD1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdLEt0PXYuZm4udG9nZ2xlO3YuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdi5hY2Nlc3ModGhpcyxmdW5jdGlvbihlLG4scil7cmV0dXJuIHIhPT10P3Yuc3R5bGUoZSxuLHIpOnYuY3NzKGUsbil9LGUsbixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFl0KHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIFl0KHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10eXBlb2YgZT09ImJvb2xlYW4iO3JldHVybiB2LmlzRnVuY3Rpb24oZSkmJnYuaXNGdW5jdGlvbih0KT9LdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7KG4/ZTpHdCh0aGlzKSk/dih0aGlzKS5zaG93KCk6dih0aGlzKS5oaWRlKCl9KX19KSx2LmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPUR0KGUsIm9wYWNpdHkiKTtyZXR1cm4gbj09PSIiPyIxIjpufX19fSxjc3NOdW1iZXI6e2ZpbGxPcGFjaXR5OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0Ijp2LnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGUsbixyLGkpe2lmKCFlfHxlLm5vZGVUeXBlPT09M3x8ZS5ub2RlVHlwZT09PTh8fCFlLnN0eWxlKXJldHVybjt2YXIgcyxvLHUsYT12LmNhbWVsQ2FzZShuKSxmPWUuc3R5bGU7bj12LmNzc1Byb3BzW2FdfHwodi5jc3NQcm9wc1thXT1RdChmLGEpKSx1PXYuY3NzSG9va3Nbbl18fHYuY3NzSG9va3NbYV07aWYocj09PXQpcmV0dXJuIHUmJiJnZXQiaW4gdSYmKHM9dS5nZXQoZSwhMSxpKSkhPT10P3M6ZltuXTtvPXR5cGVvZiByLG89PT0ic3RyaW5nIiYmKHM9enQuZXhlYyhyKSkmJihyPShzWzFdKzEpKnNbMl0rcGFyc2VGbG9hdCh2LmNzcyhlLG4pKSxvPSJudW1iZXIiKTtpZihyPT1udWxsfHxvPT09Im51bWJlciImJmlzTmFOKHIpKXJldHVybjtvPT09Im51bWJlciImJiF2LmNzc051bWJlclthXSYmKHIrPSJweCIpO2lmKCF1fHwhKCJzZXQiaW4gdSl8fChyPXUuc2V0KGUscixpKSkhPT10KXRyeXtmW25dPXJ9Y2F0Y2gobCl7fX0sY3NzOmZ1bmN0aW9uKGUsbixyLGkpe3ZhciBzLG8sdSxhPXYuY2FtZWxDYXNlKG4pO3JldHVybiBuPXYuY3NzUHJvcHNbYV18fCh2LmNzc1Byb3BzW2FdPVF0KGUuc3R5bGUsYSkpLHU9di5jc3NIb29rc1tuXXx8di5jc3NIb29rc1thXSx1JiYiZ2V0ImluIHUmJihzPXUuZ2V0KGUsITAsaSkpLHM9PT10JiYocz1EdChlLG4pKSxzPT09Im5vcm1hbCImJm4gaW4gVnQmJihzPVZ0W25dKSxyfHxpIT09dD8obz1wYXJzZUZsb2F0KHMpLHJ8fHYuaXNOdW1lcmljKG8pP298fDA6cyk6c30sc3dhcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxzPXt9O2ZvcihpIGluIHQpc1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtyPW4uY2FsbChlKTtmb3IoaSBpbiB0KWUuc3R5bGVbaV09c1tpXTtyZXR1cm4gcn19KSxlLmdldENvbXB1dGVkU3R5bGU/RHQ9ZnVuY3Rpb24odCxuKXt2YXIgcixpLHMsbyx1PWUuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLGE9dC5zdHlsZTtyZXR1cm4gdSYmKHI9dS5nZXRQcm9wZXJ0eVZhbHVlKG4pfHx1W25dLHI9PT0iIiYmIXYuY29udGFpbnModC5vd25lckRvY3VtZW50LHQpJiYocj12LnN0eWxlKHQsbikpLFV0LnRlc3QocikmJnF0LnRlc3QobikmJihpPWEud2lkdGgscz1hLm1pbldpZHRoLG89YS5tYXhXaWR0aCxhLm1pbldpZHRoPWEubWF4V2lkdGg9YS53aWR0aD1yLHI9dS53aWR0aCxhLndpZHRoPWksYS5taW5XaWR0aD1zLGEubWF4V2lkdGg9bykpLHJ9OmkuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKER0PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVt0XSxzPWUuc3R5bGU7cmV0dXJuIGk9PW51bGwmJnMmJnNbdF0mJihpPXNbdF0pLFV0LnRlc3QoaSkmJiFGdC50ZXN0KHQpJiYobj1zLmxlZnQscj1lLnJ1bnRpbWVTdHlsZSYmZS5ydW50aW1lU3R5bGUubGVmdCxyJiYoZS5ydW50aW1lU3R5bGUubGVmdD1lLmN1cnJlbnRTdHlsZS5sZWZ0KSxzLmxlZnQ9dD09PSJmb250U2l6ZSI/IjFlbSI6aSxpPXMucGl4ZWxMZWZ0KyJweCIscy5sZWZ0PW4sciYmKGUucnVudGltZVN0eWxlLmxlZnQ9cikpLGk9PT0iIj8iYXV0byI6aX0pLHYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx0KXt2LmNzc0hvb2tzW3RdPXtnZXQ6ZnVuY3Rpb24oZSxuLHIpe2lmKG4pcmV0dXJuIGUub2Zmc2V0V2lkdGg9PT0wJiZJdC50ZXN0KER0KGUsImRpc3BsYXkiKSk/di5zd2FwKGUsWHQsZnVuY3Rpb24oKXtyZXR1cm4gdG4oZSx0LHIpfSk6dG4oZSx0LHIpfSxzZXQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiBadChlLG4scj9lbihlLHQscix2LnN1cHBvcnQuYm94U2l6aW5nJiZ2LmNzcyhlLCJib3hTaXppbmciKT09PSJib3JkZXItYm94Iik6MCl9fX0pLHYuc3VwcG9ydC5vcGFjaXR5fHwodi5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4ganQudGVzdCgodCYmZS5jdXJyZW50U3R5bGU/ZS5jdXJyZW50U3R5bGUuZmlsdGVyOmUuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6dD8iMSI6IiJ9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3R5bGUscj1lLmN1cnJlbnRTdHlsZSxpPXYuaXNOdW1lcmljKHQpPyJhbHBoYShvcGFjaXR5PSIrdCoxMDArIikiOiIiLHM9ciYmci5maWx0ZXJ8fG4uZmlsdGVyfHwiIjtuLnpvb209MTtpZih0Pj0xJiZ2LnRyaW0ocy5yZXBsYWNlKEJ0LCIiKSk9PT0iIiYmbi5yZW1vdmVBdHRyaWJ1dGUpe24ucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKTtpZihyJiYhci5maWx0ZXIpcmV0dXJufW4uZmlsdGVyPUJ0LnRlc3Qocyk/cy5yZXBsYWNlKEJ0LGkpOnMrIiAiK2l9fSksdihmdW5jdGlvbigpe3Yuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0fHwodi5jc3NIb29rcy5tYXJnaW5SaWdodD17Z2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHYuc3dhcChlLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe2lmKHQpcmV0dXJuIER0KGUsIm1hcmdpblJpZ2h0Iil9KX19KSwhdi5zdXBwb3J0LnBpeGVsUG9zaXRpb24mJnYuZm4ucG9zaXRpb24mJnYuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLHQpe3YuY3NzSG9va3NbdF09e2dldDpmdW5jdGlvbihlLG4pe2lmKG4pe3ZhciByPUR0KGUsdCk7cmV0dXJuIFV0LnRlc3Qocik/dihlKS5wb3NpdGlvbigpW3RdKyJweCI6cn19fX0pfSksdi5leHByJiZ2LmV4cHIuZmlsdGVycyYmKHYuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5vZmZzZXRXaWR0aD09PTAmJmUub2Zmc2V0SGVpZ2h0PT09MHx8IXYuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMmJihlLnN0eWxlJiZlLnN0eWxlLmRpc3BsYXl8fER0KGUsImRpc3BsYXkiKSk9PT0ibm9uZSJ9LHYuZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oZSl7cmV0dXJuIXYuZXhwci5maWx0ZXJzLmhpZGRlbihlKX0pLHYuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGUsdCl7di5jc3NIb29rc1tlK3RdPXtleHBhbmQ6ZnVuY3Rpb24obil7dmFyIHIsaT10eXBlb2Ygbj09InN0cmluZyI/bi5zcGxpdCgiICIpOltuXSxzPXt9O2ZvcihyPTA7cjw0O3IrKylzW2UrJHRbcl0rdF09aVtyXXx8aVtyLTJdfHxpWzBdO3JldHVybiBzfX0scXQudGVzdChlKXx8KHYuY3NzSG9va3NbZSt0XS5zZXQ9WnQpfSk7dmFyIHJuPS8lMjAvZyxzbj0vXFtcXSQvLG9uPS9ccj9cbi9nLHVuPS9eKD86Y29sb3J8ZGF0ZXxkYXRldGltZXxkYXRldGltZS1sb2NhbHxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJjaHx0ZWx8dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSxhbj0vXig/OnNlbGVjdHx0ZXh0YXJlYSkvaTt2LmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz92Lm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGFuLnRlc3QodGhpcy5ub2RlTmFtZSl8fHVuLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj12KHRoaXMpLnZhbCgpO3JldHVybiBuPT1udWxsP251bGw6di5pc0FycmF5KG4pP3YubWFwKG4sZnVuY3Rpb24oZSxuKXtyZXR1cm57bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKG9uLCJcclxuIil9fSk6e25hbWU6dC5uYW1lLHZhbHVlOm4ucmVwbGFjZShvbiwiXHJcbiIpfX0pLmdldCgpfX0pLHYucGFyYW09ZnVuY3Rpb24oZSxuKXt2YXIgcixpPVtdLHM9ZnVuY3Rpb24oZSx0KXt0PXYuaXNGdW5jdGlvbih0KT90KCk6dD09bnVsbD8iIjp0LGlbaS5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpfTtuPT09dCYmKG49di5hamF4U2V0dGluZ3MmJnYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKTtpZih2LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhdi5pc1BsYWluT2JqZWN0KGUpKXYuZWFjaChlLGZ1bmN0aW9uKCl7cyh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihyIGluIGUpZm4ocixlW3JdLG4scyk7cmV0dXJuIGkuam9pbigiJiIpLnJlcGxhY2Uocm4sIisiKX07dmFyIGxuLGNuLGhuPS8jLiokLyxwbj0vXiguKj8pOlsgXHRdKihbXlxyXG5dKilccj8kL21nLGRuPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sdm49L14oPzpHRVR8SEVBRCkkLyxtbj0vXlwvXC8vLGduPS9cPy8seW49LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYm49LyhbPyZdKV89W14mXSovLHduPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLyxFbj12LmZuLmxvYWQsU249e30seG49e30sVG49WyIqLyJdK1siKiJdO3RyeXtjbj1zLmhyZWZ9Y2F0Y2goTm4pe2NuPWkuY3JlYXRlRWxlbWVudCgiYSIpLGNuLmhyZWY9IiIsY249Y24uaHJlZn1sbj13bi5leGVjKGNuLnRvTG93ZXJDYXNlKCkpfHxbXSx2LmZuLmxvYWQ9ZnVuY3Rpb24oZSxuLHIpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIiYmRW4pcmV0dXJuIEVuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIGkscyxvLHU9dGhpcyxhPWUuaW5kZXhPZigiICIpO3JldHVybiBhPj0wJiYoaT1lLnNsaWNlKGEsZS5sZW5ndGgpLGU9ZS5zbGljZSgwLGEpKSx2LmlzRnVuY3Rpb24obik/KHI9bixuPXQpOm4mJnR5cGVvZiBuPT0ib2JqZWN0IiYmKHM9IlBPU1QiKSx2LmFqYXgoe3VybDplLHR5cGU6cyxkYXRhVHlwZToiaHRtbCIsZGF0YTpuLGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7ciYmdS5lYWNoKHIsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfX0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsdS5odG1sKGk/digiPGRpdj4iKS5hcHBlbmQoZS5yZXBsYWNlKHluLCIiKSkuZmluZChpKTplKX0pLHRoaXN9LHYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXt2LmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksdi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGUsbil7dltuXT1mdW5jdGlvbihlLHIsaSxzKXtyZXR1cm4gdi5pc0Z1bmN0aW9uKHIpJiYocz1zfHxpLGk9cixyPXQpLHYuYWpheCh7dHlwZTpuLHVybDplLGRhdGE6cixzdWNjZXNzOmksZGF0YVR5cGU6c30pfX0pLHYuZXh0ZW5kKHtnZXRTY3JpcHQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdi5nZXQoZSx0LG4sInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5nZXQoZSx0LG4sImpzb24iKX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/TG4oZSx2LmFqYXhTZXR0aW5ncyk6KHQ9ZSxlPXYuYWpheFNldHRpbmdzKSxMbihlLHQpLGV9LGFqYXhTZXR0aW5nczp7dXJsOmNuLGlzTG9jYWw6ZG4udGVzdChsblsxXSksZ2xvYmFsOiEwLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHRleHQ6InRleHQvcGxhaW4iLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsIioiOlRufSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0In0sY29udmVydGVyczp7IiogdGV4dCI6ZS5TdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6di5wYXJzZUpTT04sInRleHQgeG1sIjp2LnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7Y29udGV4dDohMCx1cmw6ITB9fSxhamF4UHJlZmlsdGVyOkNuKFNuKSxhamF4VHJhbnNwb3J0OkNuKHhuKSxhamF4OmZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gVChlLG4scyxhKXt2YXIgbCx5LGIsdyxTLFQ9bjtpZihFPT09MilyZXR1cm47RT0yLHUmJmNsZWFyVGltZW91dCh1KSxvPXQsaT1hfHwiIix4LnJlYWR5U3RhdGU9ZT4wPzQ6MCxzJiYodz1BbihjLHgscykpO2lmKGU+PTIwMCYmZTwzMDB8fGU9PT0zMDQpYy5pZk1vZGlmaWVkJiYoUz14LmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIiksUyYmKHYubGFzdE1vZGlmaWVkW3JdPVMpLFM9eC5nZXRSZXNwb25zZUhlYWRlcigiRXRhZyIpLFMmJih2LmV0YWdbcl09UykpLGU9PT0zMDQ/KFQ9Im5vdG1vZGlmaWVkIixsPSEwKToobD1PbihjLHcpLFQ9bC5zdGF0ZSx5PWwuZGF0YSxiPWwuZXJyb3IsbD0hYik7ZWxzZXtiPVQ7aWYoIVR8fGUpVD0iZXJyb3IiLGU8MCYmKGU9MCl9eC5zdGF0dXM9ZSx4LnN0YXR1c1RleHQ9KG58fFQpKyIiLGw/ZC5yZXNvbHZlV2l0aChoLFt5LFQseF0pOmQucmVqZWN0V2l0aChoLFt4LFQsYl0pLHguc3RhdHVzQ29kZShnKSxnPXQsZiYmcC50cmlnZ2VyKCJhamF4IisobD8iU3VjY2VzcyI6IkVycm9yIiksW3gsYyxsP3k6Yl0pLG0uZmlyZVdpdGgoaCxbeCxUXSksZiYmKHAudHJpZ2dlcigiYWpheENvbXBsZXRlIixbeCxjXSksLS12LmFjdGl2ZXx8di5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKX10eXBlb2YgZT09Im9iamVjdCImJihuPWUsZT10KSxuPW58fHt9O3ZhciByLGkscyxvLHUsYSxmLGwsYz12LmFqYXhTZXR1cCh7fSxuKSxoPWMuY29udGV4dHx8YyxwPWghPT1jJiYoaC5ub2RlVHlwZXx8aCBpbnN0YW5jZW9mIHYpP3YoaCk6di5ldmVudCxkPXYuRGVmZXJyZWQoKSxtPXYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGc9Yy5zdGF0dXNDb2RlfHx7fSxiPXt9LHc9e30sRT0wLFM9ImNhbmNlbGVkIix4PXtyZWFkeVN0YXRlOjAsc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihlLHQpe2lmKCFFKXt2YXIgbj1lLnRvTG93ZXJDYXNlKCk7ZT13W25dPXdbbl18fGUsYltlXT10fXJldHVybiB0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gRT09PTI/aTpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgbjtpZihFPT09Mil7aWYoIXMpe3M9e307d2hpbGUobj1wbi5leGVjKGkpKXNbblsxXS50b0xvd2VyQ2FzZSgpXT1uWzJdfW49c1tlLnRvTG93ZXJDYXNlKCldfXJldHVybiBuPT09dD9udWxsOm59LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIEV8fChjLm1pbWVUeXBlPWUpLHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUpe3JldHVybiBlPWV8fFMsbyYmby5hYm9ydChlKSxUKDAsZSksdGhpc319O2QucHJvbWlzZSh4KSx4LnN1Y2Nlc3M9eC5kb25lLHguZXJyb3I9eC5mYWlsLHguY29tcGxldGU9bS5hZGQseC5zdGF0dXNDb2RlPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0O2lmKEU8Milmb3IodCBpbiBlKWdbdF09W2dbdF0sZVt0XV07ZWxzZSB0PWVbeC5zdGF0dXNdLHguYWx3YXlzKHQpfXJldHVybiB0aGlzfSxjLnVybD0oKGV8fGMudXJsKSsiIikucmVwbGFjZShobiwiIikucmVwbGFjZShtbixsblsxXSsiLy8iKSxjLmRhdGFUeXBlcz12LnRyaW0oYy5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLnNwbGl0KHkpLGMuY3Jvc3NEb21haW49PW51bGwmJihhPXduLmV4ZWMoYy51cmwudG9Mb3dlckNhc2UoKSksYy5jcm9zc0RvbWFpbj0hKCFhfHxhWzFdPT09bG5bMV0mJmFbMl09PT1sblsyXSYmKGFbM118fChhWzFdPT09Imh0dHA6Ij84MDo0NDMpKT09KGxuWzNdfHwobG5bMV09PT0iaHR0cDoiPzgwOjQ0MykpKSksYy5kYXRhJiZjLnByb2Nlc3NEYXRhJiZ0eXBlb2YgYy5kYXRhIT0ic3RyaW5nIiYmKGMuZGF0YT12LnBhcmFtKGMuZGF0YSxjLnRyYWRpdGlvbmFsKSksa24oU24sYyxuLHgpO2lmKEU9PT0yKXJldHVybiB4O2Y9Yy5nbG9iYWwsYy50eXBlPWMudHlwZS50b1VwcGVyQ2FzZSgpLGMuaGFzQ29udGVudD0hdm4udGVzdChjLnR5cGUpLGYmJnYuYWN0aXZlKys9PT0wJiZ2LmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKCFjLmhhc0NvbnRlbnQpe2MuZGF0YSYmKGMudXJsKz0oZ24udGVzdChjLnVybCk/IiYiOiI/IikrYy5kYXRhLGRlbGV0ZSBjLmRhdGEpLHI9Yy51cmw7aWYoYy5jYWNoZT09PSExKXt2YXIgTj12Lm5vdygpLEM9Yy51cmwucmVwbGFjZShibiwiJDFfPSIrTik7Yy51cmw9QysoQz09PWMudXJsPyhnbi50ZXN0KGMudXJsKT8iJiI6Ij8iKSsiXz0iK046IiIpfX0oYy5kYXRhJiZjLmhhc0NvbnRlbnQmJmMuY29udGVudFR5cGUhPT0hMXx8bi5jb250ZW50VHlwZSkmJnguc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixjLmNvbnRlbnRUeXBlKSxjLmlmTW9kaWZpZWQmJihyPXJ8fGMudXJsLHYubGFzdE1vZGlmaWVkW3JdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIix2Lmxhc3RNb2RpZmllZFtyXSksdi5ldGFnW3JdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLHYuZXRhZ1tyXSkpLHguc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixjLmRhdGFUeXBlc1swXSYmYy5hY2NlcHRzW2MuZGF0YVR5cGVzWzBdXT9jLmFjY2VwdHNbYy5kYXRhVHlwZXNbMF1dKyhjLmRhdGFUeXBlc1swXSE9PSIqIj8iLCAiK1RuKyI7IHE9MC4wMSI6IiIpOmMuYWNjZXB0c1siKiJdKTtmb3IobCBpbiBjLmhlYWRlcnMpeC5zZXRSZXF1ZXN0SGVhZGVyKGwsYy5oZWFkZXJzW2xdKTtpZighYy5iZWZvcmVTZW5kfHxjLmJlZm9yZVNlbmQuY2FsbChoLHgsYykhPT0hMSYmRSE9PTIpe1M9ImFib3J0Ijtmb3IobCBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl4W2xdKGNbbF0pO289a24oeG4sYyxuLHgpO2lmKCFvKVQoLTEsIk5vIFRyYW5zcG9ydCIpO2Vsc2V7eC5yZWFkeVN0YXRlPTEsZiYmcC50cmlnZ2VyKCJhamF4U2VuZCIsW3gsY10pLGMuYXN5bmMmJmMudGltZW91dD4wJiYodT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eC5hYm9ydCgidGltZW91dCIpfSxjLnRpbWVvdXQpKTt0cnl7RT0xLG8uc2VuZChiLFQpfWNhdGNoKGspe2lmKCEoRTwyKSl0aHJvdyBrO1QoLTEsayl9fXJldHVybiB4fXJldHVybiB4LmFib3J0KCl9LGFjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9fSk7dmFyIE1uPVtdLF9uPS9cPy8sRG49Lyg9KVw/KD89JnwkKXxcP1w/LyxQbj12Lm5vdygpO3YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1Nbi5wb3AoKXx8di5leHBhbmRvKyJfIitQbisrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksdi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihuLHIsaSl7dmFyIHMsbyx1LGE9bi5kYXRhLGY9bi51cmwsbD1uLmpzb25wIT09ITEsYz1sJiZEbi50ZXN0KGYpLGg9bCYmIWMmJnR5cGVvZiBhPT0ic3RyaW5nIiYmIShuLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJkRuLnRlc3QoYSk7aWYobi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxjfHxoKXJldHVybiBzPW4uanNvbnBDYWxsYmFjaz12LmlzRnVuY3Rpb24obi5qc29ucENhbGxiYWNrKT9uLmpzb25wQ2FsbGJhY2soKTpuLmpzb25wQ2FsbGJhY2ssbz1lW3NdLGM/bi51cmw9Zi5yZXBsYWNlKERuLCIkMSIrcyk6aD9uLmRhdGE9YS5yZXBsYWNlKERuLCIkMSIrcyk6bCYmKG4udXJsKz0oX24udGVzdChmKT8iJiI6Ij8iKStuLmpzb25wKyI9IitzKSxuLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gdXx8di5lcnJvcihzKyIgd2FzIG5vdCBjYWxsZWQiKSx1WzBdfSxuLmRhdGFUeXBlc1swXT0ianNvbiIsZVtzXT1mdW5jdGlvbigpe3U9YXJndW1lbnRzfSxpLmFsd2F5cyhmdW5jdGlvbigpe2Vbc109byxuW3NdJiYobi5qc29ucENhbGxiYWNrPXIuanNvbnBDYWxsYmFjayxNbi5wdXNoKHMpKSx1JiZ2LmlzRnVuY3Rpb24obykmJm8odVswXSksdT1vPXR9KSwic2NyaXB0In0pLHYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gdi5nbG9iYWxFdmFsKGUpLGV9fX0pLHYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXtlLmNhY2hlPT09dCYmKGUuY2FjaGU9ITEpLGUuY3Jvc3NEb21haW4mJihlLnR5cGU9IkdFVCIsZS5nbG9iYWw9ITEpfSksdi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2lmKGUuY3Jvc3NEb21haW4pe3ZhciBuLHI9aS5oZWFkfHxpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGkuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKHMsbyl7bj1pLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLG4uYXN5bmM9ImFzeW5jIixlLnNjcmlwdENoYXJzZXQmJihuLmNoYXJzZXQ9ZS5zY3JpcHRDaGFyc2V0KSxuLnNyYz1lLnVybCxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLGkpe2lmKGl8fCFuLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qobi5yZWFkeVN0YXRlKSluLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHImJm4ucGFyZW50Tm9kZSYmci5yZW1vdmVDaGlsZChuKSxuPXQsaXx8bygyMDAsInN1Y2Nlc3MiKX0sci5pbnNlcnRCZWZvcmUobixyLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe24mJm4ub25sb2FkKDAsMSl9fX19KTt2YXIgSG4sQm49ZS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBlIGluIEhuKUhuW2VdKDAsMSl9OiExLGpuPTA7di5hamF4U2V0dGluZ3MueGhyPWUuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJkZuKCl8fEluKCl9OkZuLGZ1bmN0aW9uKGUpe3YuZXh0ZW5kKHYuc3VwcG9ydCx7YWpheDohIWUsY29yczohIWUmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gZX0pfSh2LmFqYXhTZXR0aW5ncy54aHIoKSksdi5zdXBwb3J0LmFqYXgmJnYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihuKXtpZighbi5jcm9zc0RvbWFpbnx8di5zdXBwb3J0LmNvcnMpe3ZhciByO3JldHVybntzZW5kOmZ1bmN0aW9uKGkscyl7dmFyIG8sdSxhPW4ueGhyKCk7bi51c2VybmFtZT9hLm9wZW4obi50eXBlLG4udXJsLG4uYXN5bmMsbi51c2VybmFtZSxuLnBhc3N3b3JkKTphLm9wZW4obi50eXBlLG4udXJsLG4uYXN5bmMpO2lmKG4ueGhyRmllbGRzKWZvcih1IGluIG4ueGhyRmllbGRzKWFbdV09bi54aHJGaWVsZHNbdV07bi5taW1lVHlwZSYmYS5vdmVycmlkZU1pbWVUeXBlJiZhLm92ZXJyaWRlTWltZVR5cGUobi5taW1lVHlwZSksIW4uY3Jvc3NEb21haW4mJiFpWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihpWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2Zvcih1IGluIGkpYS5zZXRSZXF1ZXN0SGVhZGVyKHUsaVt1XSl9Y2F0Y2goZil7fWEuc2VuZChuLmhhc0NvbnRlbnQmJm4uZGF0YXx8bnVsbCkscj1mdW5jdGlvbihlLGkpe3ZhciB1LGYsbCxjLGg7dHJ5e2lmKHImJihpfHxhLnJlYWR5U3RhdGU9PT00KSl7cj10LG8mJihhLm9ucmVhZHlzdGF0ZWNoYW5nZT12Lm5vb3AsQm4mJmRlbGV0ZSBIbltvXSk7aWYoaSlhLnJlYWR5U3RhdGUhPT00JiZhLmFib3J0KCk7ZWxzZXt1PWEuc3RhdHVzLGw9YS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxjPXt9LGg9YS5yZXNwb25zZVhNTCxoJiZoLmRvY3VtZW50RWxlbWVudCYmKGMueG1sPWgpO3RyeXtjLnRleHQ9YS5yZXNwb25zZVRleHR9Y2F0Y2gocCl7fXRyeXtmPWEuc3RhdHVzVGV4dH1jYXRjaChwKXtmPSIifSF1JiZuLmlzTG9jYWwmJiFuLmNyb3NzRG9tYWluP3U9Yy50ZXh0PzIwMDo0MDQ6dT09PTEyMjMmJih1PTIwNCl9fX1jYXRjaChkKXtpfHxzKC0xLGQpfWMmJnModSxmLGMsbCl9LG4uYXN5bmM/YS5yZWFkeVN0YXRlPT09ND9zZXRUaW1lb3V0KHIsMCk6KG89KytqbixCbiYmKEhufHwoSG49e30sdihlKS51bmxvYWQoQm4pKSxIbltvXT1yKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1yKTpyKCl9LGFib3J0OmZ1bmN0aW9uKCl7ciYmcigwLDEpfX19fSk7dmFyIHFuLFJuLFVuPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyx6bj1uZXcgUmVnRXhwKCJeKD86KFstK10pPXwpKCIrbSsiKShbYS16JV0qKSQiLCJpIiksV249L3F1ZXVlSG9va3MkLyxYbj1bR25dLFZuPXsiKiI6W2Z1bmN0aW9uKGUsdCl7dmFyIG4scixpPXRoaXMuY3JlYXRlVHdlZW4oZSx0KSxzPXpuLmV4ZWModCksbz1pLmN1cigpLHU9K298fDAsYT0xLGY9MjA7aWYocyl7bj0rc1syXSxyPXNbM118fCh2LmNzc051bWJlcltlXT8iIjoicHgiKTtpZihyIT09InB4IiYmdSl7dT12LmNzcyhpLmVsZW0sZSwhMCl8fG58fDE7ZG8gYT1hfHwiLjUiLHUvPWEsdi5zdHlsZShpLmVsZW0sZSx1K3IpO3doaWxlKGEhPT0oYT1pLmN1cigpL28pJiZhIT09MSYmLS1mKX1pLnVuaXQ9cixpLnN0YXJ0PXUsaS5lbmQ9c1sxXT91KyhzWzFdKzEpKm46bn1yZXR1cm4gaX1dfTt2LkFuaW1hdGlvbj12LmV4dGVuZChLbix7dHdlZW5lcjpmdW5jdGlvbihlLHQpe3YuaXNGdW5jdGlvbihlKT8odD1lLGU9WyIqIl0pOmU9ZS5zcGxpdCgiICIpO3ZhciBuLHI9MCxpPWUubGVuZ3RoO2Zvcig7cjxpO3IrKyluPWVbcl0sVm5bbl09Vm5bbl18fFtdLFZuW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcjpmdW5jdGlvbihlLHQpe3Q/WG4udW5zaGlmdChlKTpYbi5wdXNoKGUpfX0pLHYuVHdlZW49WW4sWW4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZbixpbml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxzKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1pfHwic3dpbmciLHRoaXMub3B0aW9ucz10LHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1yLHRoaXMudW5pdD1zfHwodi5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPVluLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlzKTpZbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oZSl7dmFyIHQsbj1Zbi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPXQ9di5lYXNpbmdbdGhpcy5lYXNpbmddKGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9dD1lLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4uc2V0P24uc2V0KHRoaXMpOlluLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LFluLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1Zbi5wcm90b3R5cGUsWW4ucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBlLmVsZW1bZS5wcm9wXT09bnVsbHx8ISFlLmVsZW0uc3R5bGUmJmUuZWxlbS5zdHlsZVtlLnByb3BdIT1udWxsPyh0PXYuY3NzKGUuZWxlbSxlLnByb3AsITEsIiIpLCF0fHx0PT09ImF1dG8iPzA6dCk6ZS5lbGVtW2UucHJvcF19LHNldDpmdW5jdGlvbihlKXt2LmZ4LnN0ZXBbZS5wcm9wXT92LmZ4LnN0ZXBbZS5wcm9wXShlKTplLmVsZW0uc3R5bGUmJihlLmVsZW0uc3R5bGVbdi5jc3NQcm9wc1tlLnByb3BdXSE9bnVsbHx8di5jc3NIb29rc1tlLnByb3BdKT92LnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KTplLmVsZW1bZS5wcm9wXT1lLm5vd319fSxZbi5wcm9wSG9va3Muc2Nyb2xsVG9wPVluLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LHYuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oZSx0KXt2YXIgbj12LmZuW3RdO3YuZm5bdF09ZnVuY3Rpb24ocixpLHMpe3JldHVybiByPT1udWxsfHx0eXBlb2Ygcj09ImJvb2xlYW4ifHwhZSYmdi5pc0Z1bmN0aW9uKHIpJiZ2LmlzRnVuY3Rpb24oaSk/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKFpuKHQsITApLHIsaSxzKX19KSx2LmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihHdCkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxlLG4scil9LGFuaW1hdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9di5pc0VtcHR5T2JqZWN0KGUpLHM9di5zcGVlZCh0LG4sciksbz1mdW5jdGlvbigpe3ZhciB0PUtuKHRoaXMsdi5leHRlbmQoe30sZSkscyk7aSYmdC5zdG9wKCEwKX07cmV0dXJuIGl8fHMucXVldWU9PT0hMT90aGlzLmVhY2gobyk6dGhpcy5xdWV1ZShzLnF1ZXVlLG8pfSxzdG9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KHIpfTtyZXR1cm4gdHlwZW9mIGUhPSJzdHJpbmciJiYocj1uLG49ZSxlPXQpLG4mJmUhPT0hMSYmdGhpcy5xdWV1ZShlfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD0hMCxuPWUhPW51bGwmJmUrInF1ZXVlSG9va3MiLHM9di50aW1lcnMsbz12Ll9kYXRhKHRoaXMpO2lmKG4pb1tuXSYmb1tuXS5zdG9wJiZpKG9bbl0pO2Vsc2UgZm9yKG4gaW4gbylvW25dJiZvW25dLnN0b3AmJlduLnRlc3QobikmJmkob1tuXSk7Zm9yKG49cy5sZW5ndGg7bi0tOylzW25dLmVsZW09PT10aGlzJiYoZT09bnVsbHx8c1tuXS5xdWV1ZT09PWUpJiYoc1tuXS5hbmltLnN0b3AociksdD0hMSxzLnNwbGljZShuLDEpKTsodHx8IXIpJiZ2LmRlcXVldWUodGhpcyxlKX0pfX0pLHYuZWFjaCh7c2xpZGVEb3duOlpuKCJzaG93Iiksc2xpZGVVcDpabigiaGlkZSIpLHNsaWRlVG9nZ2xlOlpuKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUsdCl7di5mbltlXT1mdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh0LGUsbixyKX19KSx2LnNwZWVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lJiZ0eXBlb2YgZT09Im9iamVjdCI/di5leHRlbmQoe30sZSk6e2NvbXBsZXRlOm58fCFuJiZ0fHx2LmlzRnVuY3Rpb24oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIXYuaXNGdW5jdGlvbih0KSYmdH07ci5kdXJhdGlvbj12LmZ4Lm9mZj8wOnR5cGVvZiByLmR1cmF0aW9uPT0ibnVtYmVyIj9yLmR1cmF0aW9uOnIuZHVyYXRpb24gaW4gdi5meC5zcGVlZHM/di5meC5zcGVlZHNbci5kdXJhdGlvbl06di5meC5zcGVlZHMuX2RlZmF1bHQ7aWYoci5xdWV1ZT09bnVsbHx8ci5xdWV1ZT09PSEwKXIucXVldWU9ImZ4IjtyZXR1cm4gci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7di5pc0Z1bmN0aW9uKHIub2xkKSYmci5vbGQuY2FsbCh0aGlzKSxyLnF1ZXVlJiZ2LmRlcXVldWUodGhpcyxyLnF1ZXVlKX0scn0sdi5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfX0sdi50aW1lcnM9W10sdi5meD1Zbi5wcm90b3R5cGUuaW5pdCx2LmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSxuPXYudGltZXJzLHI9MDtxbj12Lm5vdygpO2Zvcig7cjxuLmxlbmd0aDtyKyspZT1uW3JdLCFlKCkmJm5bcl09PT1lJiZuLnNwbGljZShyLS0sMSk7bi5sZW5ndGh8fHYuZnguc3RvcCgpLHFuPXR9LHYuZngudGltZXI9ZnVuY3Rpb24oZSl7ZSgpJiZ2LnRpbWVycy5wdXNoKGUpJiYhUm4mJihSbj1zZXRJbnRlcnZhbCh2LmZ4LnRpY2ssdi5meC5pbnRlcnZhbCkpfSx2LmZ4LmludGVydmFsPTEzLHYuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoUm4pLFJuPW51bGx9LHYuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHYuZnguc3RlcD17fSx2LmV4cHImJnYuZXhwci5maWx0ZXJzJiYodi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHYuZ3JlcCh2LnRpbWVycyxmdW5jdGlvbih0KXtyZXR1cm4gZT09PXQuZWxlbX0pLmxlbmd0aH0pO3ZhciBlcj0vXig/OmJvZHl8aHRtbCkkL2k7di5mbi5vZmZzZXQ9ZnVuY3Rpb24oZSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24odCl7di5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsZSx0KX0pO3ZhciBuLHIsaSxzLG8sdSxhLGY9e3RvcDowLGxlZnQ6MH0sbD10aGlzWzBdLGM9bCYmbC5vd25lckRvY3VtZW50O2lmKCFjKXJldHVybjtyZXR1cm4ocj1jLmJvZHkpPT09bD92Lm9mZnNldC5ib2R5T2Zmc2V0KGwpOihuPWMuZG9jdW1lbnRFbGVtZW50LHYuY29udGFpbnMobixsKT8odHlwZW9mIGwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT0idW5kZWZpbmVkIiYmKGY9bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksaT10cihjKSxzPW4uY2xpZW50VG9wfHxyLmNsaWVudFRvcHx8MCxvPW4uY2xpZW50TGVmdHx8ci5jbGllbnRMZWZ0fHwwLHU9aS5wYWdlWU9mZnNldHx8bi5zY3JvbGxUb3AsYT1pLnBhZ2VYT2Zmc2V0fHxuLnNjcm9sbExlZnQse3RvcDpmLnRvcCt1LXMsbGVmdDpmLmxlZnQrYS1vfSk6Zil9LHYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUub2Zmc2V0VG9wLG49ZS5vZmZzZXRMZWZ0O3JldHVybiB2LnN1cHBvcnQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQmJih0Kz1wYXJzZUZsb2F0KHYuY3NzKGUsIm1hcmdpblRvcCIpKXx8MCxuKz1wYXJzZUZsb2F0KHYuY3NzKGUsIm1hcmdpbkxlZnQiKSl8fDApLHt0b3A6dCxsZWZ0Om59fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXYuY3NzKGUsInBvc2l0aW9uIik7cj09PSJzdGF0aWMiJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgaT12KGUpLHM9aS5vZmZzZXQoKSxvPXYuY3NzKGUsInRvcCIpLHU9di5jc3MoZSwibGVmdCIpLGE9KHI9PT0iYWJzb2x1dGUifHxyPT09ImZpeGVkIikmJnYuaW5BcnJheSgiYXV0byIsW28sdV0pPi0xLGY9e30sbD17fSxjLGg7YT8obD1pLnBvc2l0aW9uKCksYz1sLnRvcCxoPWwubGVmdCk6KGM9cGFyc2VGbG9hdChvKXx8MCxoPXBhcnNlRmxvYXQodSl8fDApLHYuaXNGdW5jdGlvbih0KSYmKHQ9dC5jYWxsKGUsbixzKSksdC50b3AhPW51bGwmJihmLnRvcD10LnRvcC1zLnRvcCtjKSx0LmxlZnQhPW51bGwmJihmLmxlZnQ9dC5sZWZ0LXMubGVmdCtoKSwidXNpbmciaW4gdD90LnVzaW5nLmNhbGwoZSxmKTppLmNzcyhmKX19LHYuZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0aGlzWzBdKXJldHVybjt2YXIgZT10aGlzWzBdLHQ9dGhpcy5vZmZzZXRQYXJlbnQoKSxuPXRoaXMub2Zmc2V0KCkscj1lci50ZXN0KHRbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9OnQub2Zmc2V0KCk7cmV0dXJuIG4udG9wLT1wYXJzZUZsb2F0KHYuY3NzKGUsIm1hcmdpblRvcCIpKXx8MCxuLmxlZnQtPXBhcnNlRmxvYXQodi5jc3MoZSwibWFyZ2luTGVmdCIpKXx8MCxyLnRvcCs9cGFyc2VGbG9hdCh2LmNzcyh0WzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxyLmxlZnQrPXBhcnNlRmxvYXQodi5jc3ModFswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwLHt0b3A6bi50b3Atci50b3AsbGVmdDpuLmxlZnQtci5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnR8fGkuYm9keTt3aGlsZShlJiYhZXIudGVzdChlLm5vZGVOYW1lKSYmdi5jc3MoZSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fGkuYm9keX0pfX0pLHYuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLG4pe3ZhciByPS9ZLy50ZXN0KG4pO3YuZm5bZV09ZnVuY3Rpb24oaSl7cmV0dXJuIHYuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSxpLHMpe3ZhciBvPXRyKGUpO2lmKHM9PT10KXJldHVybiBvP24gaW4gbz9vW25dOm8uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2ldOmVbaV07bz9vLnNjcm9sbFRvKHI/dihvKS5zY3JvbGxMZWZ0KCk6cyxyP3M6dihvKS5zY3JvbGxUb3AoKSk6ZVtpXT1zfSxlLGksYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSx2LmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihlLG4pe3YuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2UsY29udGVudDpuLCIiOiJvdXRlciIrZX0sZnVuY3Rpb24ocixpKXt2LmZuW2ldPWZ1bmN0aW9uKGkscyl7dmFyIG89YXJndW1lbnRzLmxlbmd0aCYmKHJ8fHR5cGVvZiBpIT0iYm9vbGVhbiIpLHU9cnx8KGk9PT0hMHx8cz09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gdi5hY2Nlc3ModGhpcyxmdW5jdGlvbihuLHIsaSl7dmFyIHM7cmV0dXJuIHYuaXNXaW5kb3cobik/bi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrZV06bi5ub2RlVHlwZT09PTk/KHM9bi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgobi5ib2R5WyJzY3JvbGwiK2VdLHNbInNjcm9sbCIrZV0sbi5ib2R5WyJvZmZzZXQiK2VdLHNbIm9mZnNldCIrZV0sc1siY2xpZW50IitlXSkpOmk9PT10P3YuY3NzKG4scixpLHUpOnYuc3R5bGUobixyLGksdSl9LG4sbz9pOnQsbyxudWxsKX19KX0pLGUualF1ZXJ5PWUuJD12fSkod2luZG93KTsNCg==', 'alert.css': 'LyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovDQpodG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJX1ib2R5e21hcmdpbjowfWFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxtYWluLG5hdixzZWN0aW9uLHN1bW1hcnl7ZGlzcGxheTpibG9ja31hdWRpbyxjYW52YXMscHJvZ3Jlc3MsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9YXVkaW86bm90KFtjb250cm9sc10pe2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MH1baGlkZGVuXSx0ZW1wbGF0ZXtkaXNwbGF5Om5vbmV9YXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fWE6YWN0aXZlLGE6aG92ZXJ7b3V0bGluZTowfWFiYnJbdGl0bGVde2JvcmRlci1ib3R0b206MXB4IGRvdHRlZH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkfWRmbntmb250LXN0eWxlOml0YWxpY31oMXtmb250LXNpemU6MmVtO21hcmdpbjouNjdlbSAwfW1hcmt7YmFja2dyb3VuZDojZmYwO2NvbG9yOiMwMDB9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdXB7dG9wOi0wLjVlbX1zdWJ7Ym90dG9tOi0wLjI1ZW19aW1ne2JvcmRlcjowfXN2Zzpub3QoOnJvb3Qpe292ZXJmbG93OmhpZGRlbn1maWd1cmV7bWFyZ2luOjFlbSA0MHB4fWhyey1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowfXByZXtvdmVyZmxvdzphdXRvfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5Om1vbm9zcGFjZSxtb25vc3BhY2U7Zm9udC1zaXplOjFlbX1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O21hcmdpbjowfWJ1dHRvbntvdmVyZmxvdzp2aXNpYmxlfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saHRtbCBpbnB1dFt0eXBlPSJidXR0b24iXSxpbnB1dFt0eXBlPSJyZXNldCJdLGlucHV0W3R5cGU9InN1Ym1pdCJdey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Y3Vyc29yOnBvaW50ZXJ9YnV0dG9uW2Rpc2FibGVkXSxodG1sIGlucHV0W2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfWlucHV0e2xpbmUtaGVpZ2h0Om5vcm1hbH1pbnB1dFt0eXBlPSJjaGVja2JveCJdLGlucHV0W3R5cGU9InJhZGlvIl17Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH1pbnB1dFt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixpbnB1dFt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPSJzZWFyY2giXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveH1pbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1maWVsZHNldHtib3JkZXI6MXB4IHNvbGlkIHNpbHZlcjttYXJnaW46MCAycHg7cGFkZGluZzouMzVlbSAuNjI1ZW0gLjc1ZW19bGVnZW5ke2JvcmRlcjowO3BhZGRpbmc6MH10ZXh0YXJlYXtvdmVyZmxvdzphdXRvfW9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGR9dGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9dGQsdGh7cGFkZGluZzowfQ0KDQpib2R5ew0KICAgIGZvbnQ6IDEycHgvMS4yIEFyaWFsLCAiSGVsdmV0aWNhIENZIiwgIk5pbWJ1cyBTYW5zIEwiLCBzYW5zLXNlcmlmOw0KICAgIGNvbG9yOiAjMjYyNjI2Ow0KCWJvcmRlcjogMHB4Ow0KICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsNCiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgd2lkdGg6IDEwMCU7DQp9DQoNCmF7DQogICAgY29sb3I6ICM0M2MxNTQ7DQp9DQphOmhvdmVyew0KICAgIGNvbG9yOiAjMzA5MTNkOw0KfQ0KLmxpbmstZGFzaGVkew0KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkOw0KfQ0KDQouYnRuew0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICBwYWRkaW5nOiAxMXB4IDE1cHg7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGxpbmUtaGVpZ2h0OiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiA3MDA7DQogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Ow0KICAgIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5idG46aG92ZXJ7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KLmJ0bi1kZWZhdWx0ew0KICAgIGNvbG9yOiAjMjYyNjI2Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNkZWU0ZWY7DQogICAgYm9yZGVyLWNvbG9yOiAjZGVlNGVmOw0KfQ0KLmJ0bi1kZWZhdWx0OmhvdmVyew0KICAgIGNvbG9yOiAjMjYyNjI2Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNiYWM3ZGU7DQogICAgYm9yZGVyLWNvbG9yOiAjYmFjN2RlOw0KfQ0KDQoNCi5pY29uLXRoaWVmew0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICB3aWR0aDogMTAwcHg7DQogICAgaGVpZ2h0OiAxMDBweDsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FNQUFBQkhQR1ZtQUFBQVNGQk1WRVVBQUFEN1RURDdUVEQ3VEREN1RURDdUVEQ3VFREN1RURDdUVEQ3VFREMlJpbi9WRGovLy8vOWNsdi85UEwvNU9EKzBNbjhoSEQrbDRiK3FadjhZVWo2VEREK3ZMTDNVempoRGcwWUFBQUFDblJTVGxNQXh6dXFhZDhWOFNhVVYxbHB5d0FBQkc1SlJFRlVlTnF0bXVteTJ5QU1oZU1GTDhqc0dMLy9tM1p5SjQzc0dDUWM1L3ZSbWR0MjdobnBDQWt3ajFxR3RwKzdSb3lqbE9Nb21tN3UyK0h4UzZhK0V6S0Q2UHJwUndxemtFVUF4SHhiWitnYlNiRENrNllmYmdVaGFWWjQ4WFU0VXljNUFPbStrUmxteVFONzVzdEo2MGZKczhLQnNiK1dLYlM3UWdScHBodGhzTm02SHN3c0s0RU1jNTNqamF4a2hSek5VR0dIa1BkRVFMREd0S09zQmdxTTdXME5CRGdWWG9NSHZsS1pMbW1zUUtnVWZSbUV2Q21DaUZLTk5mSVNRTklRYS9DV0NMOHFlM21ORlJqNlN0TTM1WHl5MWhFaXBQbThJZDdxNVVYSVpZdWw0Wk1WbGgwYkw4SW5iQmhQbVZyMnFFeTJlTWFCcWF4NEVIR3NDRjloazVSWEk0RXE5dDUzOG9RL2lJUXZSVG95RUxVY3NFUzJTQ1pxcmFlamlHRkVlRmNHZVVaNVJVWUN0UXgwUXpHVUo0RFVyUlVoa2J6MWVqdUpST1ZDU3RZYVkyMEtYa0VCOFJxSHBRNW8zeUwrV04wdVdMMThZRkpCcDZWYi9HWlJBd1dTV1FwWVZiYWVtSWZPNnNXa0tPWDZGNW9LWmlIeHBYeE5raU0rZjdmMWNrc0xSOGd2Rlg1WU9mM0tlcFFLSTZtUHBUKzFGR3J0NjRwZ3RNcTJGaUZKTnIwZ2FaV0JVVWs1VXdaU1lmMW9sSFo3Wm84a1poWjlTNWp4OVB2REJiTkpkVklKUVZPdXRJVHZia0ZvbFFpR3lsZGZYb3BySVMzMkpHOGpPQ3dJYzE2TzVlS0t4YlVnNGVDK2d5ZjRWNW55YW9xbUx5VVVnRDJreHdVSHBpelNFQlZzU3lJR1lHZUxoMmZNbWlndjhSaHpiVVQvUVMzcmNQZ0IvMnN1a2pFbklsLzFVd3hGQTBTOU56cUczVDltUkFxdW02ZWpsZ2dsSFRzODVzL0NpUWN4Uzl4bVNwTURRQzFJVWdBZUMrRXNNcFpWbkl5bVhHRDYrSFBFS0NzOFFSVW4zMTMzc3dnQ1ZySDV5eXlLcUxNSVVjSmJmUDZwZ2pIV3IvYVVyL1RXYzk1aHVneWNFTFVIUlhXcXIzQlk4RXFYWjJORHpDeHlhVVlzTDN1b3RRZ251dXJqYVBoMFB1M0Qwa1J0d1V5MGVyTHhPekQ3ZVlMaTJVMWtXK0dIOHlGOXBNdEhmdmppMEJva1RVdzZ1K1pWdHQvRXdwNWJjUHVoTEU0eEd5SkVjRnVpcUV0TFBtYTdUWTZPMjl5bGNvczA1emtUSVVmUGJWTjFlWHNWNkgwZE1qRWI3cmdRMDlIVWFRanVkc2d0UlJRb2ZWQlY1S214NVVXc1UxRXA1NUxaOTJHMTMyMUZLTkRpY1k0V0NYam85YnNwRzRQRzRWaEFzRGRkNnZQd0M1L0R5Zm5nSFg4d3BmYmMyK2ZCRkhiRHF2NklqZGFUeDJ5UElnNTc1S1VybklsdDhHYkZld2hEaEVMZDRQQWI0b0FpSGd1TXBYc2dFejhRRmQ1REdGeCtWWUd3cmlnOGwvd1h3VkJzalNQSU1MSXRNdUhWa01HRVZWd1BJajEvTUhWdkVZZGo1ZHJOY01QMkw0TlhRNG5vaXRSTitzUW1US05JTktqQ1hEN1hKc3k4YkY3aGpjTHV5eWVMclRBOHJlaTRBdUp4UnRLVlZXMUxUTWFFVGNLZXhGUlk4K1ZIR2poZ3lVakU4TjNucGhVUU5OL0VPdE9SZHF3VFFSV3RmdnQ1RGs3NDRPT1BQelFDQzJvd1RPS3VpSmkrLzhDOEFndCtZT2FaNzRqTXR6NzYxOW5SMzN1K1VKV3E2ZDVEalBWNkdEekRmRlZrSG00L2pnR0didnJCTXg4bWl1bldneVhCWjB2MHcrTW03U3dvRVRHM3YzdEVCaGx1UENKam5zTUJYSDRPOXc5MXoxZ3BNWlpDQ0FBQUFBQkpSVTVFcmtKZ2dnPT0pIG5vLXJlcGVhdDsNCn0NCg0KLmljb24tbW9uZXl7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHdpZHRoOiAxMDBweDsNCiAgICBoZWlnaHQ6IDEwMHB4Ow0KICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQU1BQUFCSFBHVm1BQUFBT1ZCTVZFVUFBQUQ3dFMzN3RTMzJzQ243dFMzN3RTMzd0UzM3dFMzN3RTMzd0UzMvdVRMLy8vLy83OW4vK2ZMOTJhWDd5My83d21EKzU4Yjh1a1NyU3RYeEFBQUFDblJTVGxNQUZUdi9hZC9DbWZFbUNoUmNwQUFBQTBSSlJFRlVlTnExMmdkMjJ6QVFCRkNCNkV0VTN2K3dpWjR0cjhXSUdCUm1EcUQvb0NVNkhyMFJtN0xHYU9la2RFNGJZOVVtSG5mR0s2dmxoMmlyL0UwQ0EvK0dTTnRsUnlnalc2Rm5qQkpMalpEdDBDdldMeEFRV1dNRUUyMkVHVEZxS0NkSEVYSnFpUEJHRGhnYzQyZWFnWkhaeGxncFJ4R083YXU0a1NzSUdZRU5yK1VhUWhvV1puT3pCc2R0MEZoRXNJS05zRDhUR0JsV1BEQWd3c3BsWFlTV0l3aTFvc1VGWXVSOUNKbjVQcGdCZ25xbGt1MlVWT1ArazFCVEFZb2FMZnFSZmdCT3JKbkdpbTlHQ0hiU0FjclMrMmNWSmhvTS9zT0VheFI3YnllbUs4UUo5R1d4QVJOS3p4Zm1nUUVWdW9nSERlRjY0QlRRV1VCRDZ2NHJOWDEzeHZoT1Y3cU03Mm5JemtuSHIyR2xwTUNWUHpyNnZYQTlEY2x2WXhjUmxmclNxUkdCKzBqa2RzZ3o4bUpDMStDaU8vNnRJTS9JRnhQMlBUY1IvV1ZzUGQ5dk9pT3ZwRXJ0YktnakpxN0lPMExub05Mci80dG8wRWxXRWU0cXFndEo4NGppa29EQ3gyTWFzVndTMU9GREE0RkZFYktWK0VzcGt3Z0o3aVZYUmVIVU1vZHNZSkZTVHZOR25rRVVXbTFWT0VuaFdGNmxqRXhhc1l3Z2hwR3g2VGZXZFBRaldnNHFuSnA3djJFbm9STEJhZ2pGZFNEeXFQczFrM3NRMlpNY3JwbUthOE1JWU9wMVl3cEVYS2ZDNnhPZ29KcGdwMzVXRG9Cb09aUXdNUUxvaDVsQjRybEZ1WVdZT1NUUWFWOFUyb2lkUS83bWpTbk5BVkpOSTNRRVJsSnpxTi9ta0xOU201T1dXRUFvYzFIYWEyNjlnQkNYcGIyNnN5dEk2RUFzUG9tb2VSN2h4WjFIVTFicVFTTFkwV2sweFlkeWhSUXVQTmlnV0R5S3BBc2tkWHpDRm0yQ0VrK0FuNUFTT3dhdkRXem5uai9DekhGR2N0eHhTVFRhbUlienlkTkJqSlM2Y3hMY21BcUhGc0lNeGU4aTFkZzVhd2srTEFBS1N1NDRKUFJneVlXU1FDY0I1eDRIYUF3YWdXM2ZVVlNwdUIyZ0lhZ3BtQW5OT1JFZkR6S1Q0dFJpMkluUlUrR0FqMnpQVWVObjZFZE9OZUREWjQ2WnVYR1FSQVQyak9qbVFkMk5xS2tMQWNJSXZxWXpkeUlHWHRLc0kxcWc2NloxeFBuSml6TUN5T0wxSEVhd2dSVkdTbjZtQUdQK1dwWTZvLzNDQlRQQjhBVXpqbDB4N1BpbFAwYm1YekI0TTRjWXYvZ1FZN3daT01LT0dsYk1QWTdCeUwxdmNDQXhINkUwUnJRU2o4VnNWcmNNYmJmN0hwRjlBbVlma2VIbmNFVER6K0grQVBjdjZlQWZySHNNQUFBQUFFbEZUa1N1UW1DQykgbm8tcmVwZWF0Ow0KfQ0KDQouaWNvbi1hZGd1YXJkew0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICB3aWR0aDogMThweDsNCiAgICBoZWlnaHQ6IDE5cHg7DQogICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBVENBTUFBQUNxVEszQUFBQUFMVkJNVkVVQUFBQTV0VW81dFVvNXRVbzV0VW81dFVvNXRVbzV0VW81dFVvNXRVbzV0VW81dFVvNXRVbzV0VW81dFVvTWZ4R1pBQUFBRG5SU1RsTUFDMEhOSE8vaGRXQXFyZGVEbVAvVnRGOEFBQUNWU1VSQlZIamFWYzVKRGdNaERFVFI3NEU1WGZjL2JnaTlRSGtMa011MlpMYnNzMnFyc3llYnRiZU1lUDltTEdsNjJ1bW1QMUtnWlhEWkVncXVQdmhGNVNaTmcxSUkzUms1YVBGUjR2RUFyZytZSGx5TlVYWTFGR2ZYTVJXd25SVVpVR1V3bFRBa09aQ2E1dzJnNjJFTEpkczgvVzZBYTNKSXlXRVNMOWZpV1BKN2RSaFlxTUhOeXNqZmNWeGRXK2ZQcUhYdytnS3JXd1hqWTJBR2xRQUFBQUJKUlU1RXJrSmdnZz09KSBuby1yZXBlYXQ7DQp9DQoNCi5pY29uLWNyb3NzLXJlZHsNCiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgd2lkdGg6IDEycHg7DQogICAgaGVpZ2h0OiAxMnB4Ow0KICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUF3QUFBQU1DQU1BQUFCaHE2elZBQUFBTUZCTVZFVUFBQUQyUmluMlJpbjJSaW4yUmluMlJpbjJSaW4yUmluMlJpbjJSaW4yUmluMlJpbjJSaW4yUmluMlJpbjJSaW1zQkI5OEFBQUFEM1JTVGxNQUorWVBnZnJOOTNZNVRSVkdrbGpIZU9rSEFBQUFVVWxFUVZSNDJqMk1TUkxBSUF6RFRFalkyL3ovdDNVb2cwNlNEd2FHTkpBbUMram1yblQzMnFGT0hucHN1ZmloWk53cUUyVGFqb1JnK09ZTlgvVVBHN3dPTi9ON0xTbkp1YVlEckgydGRKWm1mSUxDQktCZEx0TUhBQUFBQUVsRlRrU3VRbUNDKSBuby1yZXBlYXQ7DQp9DQouaWNvbi1jcm9zcy1ncmV5ew0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICB3aWR0aDogMTJweDsNCiAgICBoZWlnaHQ6IDEycHg7DQogICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQXdBQUFBTUNBTUFBQUJocTZ6VkFBQUFLbEJNVkVVQUFBQ3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN1BSc2lJaEFBQUFEWFJTVGxNQUVJTW42UHJQOTNZNVVVaGpCWUVnSFFBQUFFOUpSRUZVZU5wRmpFa09BREVJdzFKS2QrWC8zNTJBT3FwUE5rSUJ0aytJNlFkWWpUUTVPUmFNd3VSeEs1MlhYcUI2cm1vWkZjRm1zc1BQWU5KaWVvVG84NS8yV3YxT3l3RlZUcHRjWlFVZlRnd0VDRUZJd2JBQUFBQUFTVVZPUks1Q1lJST0pIG5vLXJlcGVhdDsNCn0NCi5pY29uLWNyb3NzLXllbGxvd3sNCiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgd2lkdGg6IDEycHg7DQogICAgaGVpZ2h0OiAxMnB4Ow0KICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUF3QUFBQU1DQU1BQUFCaHE2elZBQUFBTUZCTVZFVUFBQUQ2eUFENnlBRDZ5QUQ2eUFENnlBRDZ5QUQ2eUFENnlBRDZ5QUQ2eUFENnlBRDZ5QUQ2eUFENnlBRDZ5QUF0NjBIakFBQUFEM1JTVGxNQStZSG9Ea29reTNZNUZDeldrbGlNUFRjYUFBQUFVRWxFUVZSNDJqMk1TUkxBSUF6RG5MQlRXdi8vdHpVWkJwMWtId1NVMUNGNktzQXcwdVdrRFRqRks5OWZianlzakx2V2hKZ1dvMkpUR0h6aHhzQk9tbWE4NlZTZmROSnlRS3RseFZ5dTVSay9kSmtFbk5vUTd5d0FBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQ7DQp9DQoNCi5pY29uLWNyb3NzLWdyZWVuew0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICB3aWR0aDogMTJweDsNCiAgICBoZWlnaHQ6IDEycHg7DQogICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQXdBQUFBTUNBWUFBQUJXZFZ6bkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeUpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1YybHVaRzkzY3lraUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk16aENNVUpGUkVVeE56RTVNVEZGTkRnek1UQkROVFEzUVRKQ01UZ3pNa1VpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TXpoQ01VSkZSRVl4TnpFNU1URkZORGd6TVRCRE5UUTNRVEpDTVRnek1rVWlQaUE4ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjBnYzNSU1pXWTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG96T0VJeFFrVkVRekUzTVRreE1VVTBPRE14TUVNMU5EZEJNa0l4T0RNeVJTSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3pPRUl4UWtWRVJERTNNVGt4TVVVME9ETXhNRU0xTkRkQk1rSXhPRE15UlNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1B0RGhxQ1FBQUFFc1NVUkJWSGphZEZHeFRnSkJFTjNaU0dKbkxQd0dUWVJMc01JU0MzT0ZWbFFjalQ5Z1lpeXVaRGs3TEl5dEgrQnBhK2dvVFB3QkN0Q0NIblAxZFNad043NVpGckpSZU1tN21aMTlNN016Undvd245R2xKbnFDKzJpT24rK1ZCek51eHpBMzRGVVN2QXdwK2VxYzR2QUJWcHptRGtsR0hOekZ6TngzOFIvd2JBZWYwQk1MdWhEdXc4N0FQaEVwSkVsOFY3U1M4QUJlZ0NkZTByWDZqNUZvTmRybjBzb0ZOZ0pkNUM3c1ZkT2NWa0U4NHdEbSs4L3pWamhDNGFrNDJnczJ0b2dGOVhVM3U1Wko1eHptamJVZGJCUG1xdUNXQ2RJQlFTeHJmWGRic0VEaTNMa1ZYUzZkQlJkMnJUaVhJZWhYenNDYVkrYkY3VnExVytzSVNZb1ZaeVZ4VXdhMFF4YmNMSmt6VkYrdjFjN1FtN1QzOEc5dVNWT0sxVTM5eHlmajZCREZJaEVud1d2K0s4QUFPNUJyR1NEOFhCOEFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQ7DQp9DQoNCi5hcnItdG9wLWdyZXl7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHdpZHRoOiAxM3B4Ow0KICAgIGhlaWdodDogOHB4Ow0KICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUEwQUFBQUlDQU1BQUFBVitJWDlBQUFBRWxCTVZFVUFBQURiMjl2YjI5djgvUHpzN096azVPU2xSSlZWQUFBQUEzUlNUbE1BaEVUVUtCd1lBQUFBSjBsRVFWUjQyazNIc1JFQUFBUURRSUg5Vitha1NMNzdvQXlEZ2FXcllhbXI4bFcrakhwUkZ4bURBTEE2U2sxd0FBQUFBRWxGVGtTdVFtQ0MpIG5vLXJlcGVhdDsNCn0NCg0KDQoucG9wdXAtY29udGFpbmVyew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCglib3JkZXItbGVmdDogMXB4IHNvbGlkICNlYmViZWI7DQoJYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2ViZWJlYjsNCglib3JkZXItdG9wOiAxcHggc29saWQgI2ViZWJlYjsNCiAgICBwYWRkaW5nOiAxMHB4Ow0KCWJhY2tncm91bmQ6ICNmZmY7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQoucG9wdXAtYWRndWFyZC1pY29uew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICB0b3A6IDEwcHg7DQogICAgcmlnaHQ6IDEwcHg7DQp9DQoNCi5wb3B1cC1oZWFkew0KICAgIG1hcmdpbjogMThweCAwIDExcHg7DQogICAgZm9udC1zaXplOiAyNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiA3MDA7DQogICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7DQogICAgY29sb3I6ICNmNjQ2Mjk7DQp9DQoNCi5wb3B1cC1pY29uew0KICAgIG1hcmdpbjogMCAwIDE1cHg7DQp9DQoNCi5wb3B1cC1hdHRlbnRpb24tbXNnew0KICAgIG1hcmdpbjogYXV0byBhdXRvIDExcHg7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGNvbG9yOiAjZjY0NjI5Ow0KICAgIHdpZHRoOiAyNTBweDsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi5wb3B1cC1tc2d7DQogICAgbWFyZ2luOiAwIDAgMjJweDsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgbGluZS1oZWlnaHQ6IDIwcHg7DQp9DQoNCi5wb3B1cC1zaXRlLW5hbWV7DQogICAgbWFyZ2luOiAwIDAgMzdweDsNCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgZm9udC13ZWlnaHQ6IDcwMDsNCn0NCg0KLnBvcHVwLWFjdGlvbnsNCiAgICBtYXJnaW46IDAgMCAzMHB4Ow0KfQ0KLnBvcHVwLWFjdGlvbiAuYnRuew0KICAgIG1pbi13aWR0aDogMTI4cHg7DQogICAgbWFyZ2luOiAwIDhweDsNCn0NCg0KLnBvcHVwLXJlcG9ydC1saW5rew0KICAgIG1hcmdpbjogMCAwIDEzcHg7DQp9DQoNCg0KLnBvcHVwLXJldmlld3N7DQoJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkYmRiZGI7DQoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7DQoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZWJlYmViOw0KCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlYmViZWI7DQogICAgcGFkZGluZzogMjZweCAyMHB4IDI1cHg7DQogICAgd29yZC13cmFwOiBub3JtYWw7DQogICAgYmFja2dyb3VuZDogI2ZjZmNmYzsNCiAgICBtYXgtaGVpZ2h0OiAxNzBweDsNCiAgICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0KDQoucG9wdXAtcmV2aWV3c19oZWFkew0KICAgIG1hcmdpbjogMCAwIDE4cHg7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiA3MDA7DQp9DQoNCi5wb3B1cC1yZXZpZXdzX2l7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIG1hcmdpbjogMTZweCAwIDA7DQogICAgcGFkZGluZy1sZWZ0OiAyMHB4Ow0KfQ0KLnBvcHVwLXJldmlld3NfaTpmaXJzdC1jaGlsZHsNCiAgICBtYXJnaW4tdG9wOiAwOw0KfQ0KDQoucmV2aWV3LWhpZ2gtY29uZmlkZW5jZSB7DQogICAgb3BhY2l0eTogMTsNCn0NCi5yZXZpZXctbWVkaXVtLWNvbmZpZGVuY2Ugew0KICAgIG9wYWNpdHk6IDAuOTsNCn0NCi5yZXZpZXctbG93LWNvbmZpZGVuY2Ugew0KICAgIG9wYWNpdHk6IDAuNTsNCn0NCi5yZXZpZXctbm8tY29uZmlkZW5jZSB7DQogICAgb3BhY2l0eTogMC4yOw0KfQ0KDQoucG9wdXAtcmV2aWV3c19pY29uew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICB0b3A6IDA7DQogICAgbGVmdDogMDsNCn0NCg0KDQoucG9wdXAtaGVscHsNCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgcGFkZGluZzogMjZweCAyMHB4IDI1cHg7DQogICAgbGluZS1oZWlnaHQ6IDE4cHg7DQogICAgd29yZC13cmFwOiBub25lOw0KICAgIGJhY2tncm91bmQ6ICNmY2ZjZmM7DQogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkYmRiZGI7DQp9DQoucG9wdXAtaGVscF9hcnJ7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIGJvdHRvbTogMTAwJTsNCiAgICBsZWZ0OiAwOw0KICAgIG1pbi13aWR0aDogMTAwJTsNCiAgICBmb250OiAwLzAgYTsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCg0KDQoNCg0K', 'alert.js': 'dmFyIFBvc3RNZXNzYWdlRXZlbnQgPSBudWxsOw0KdmFyIGlmcmFtZUhhbmRsZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICBQb3N0TWVzc2FnZUV2ZW50ID0gZXZlbnQ7DQp9Ow0KaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGlmcmFtZUhhbmRsZXIsIGZhbHNlKTsNCn0gZWxzZSB7DQogICAgYXR0YWNoRXZlbnQoIm9ubWVzc2FnZSIsIGlmcmFtZUhhbmRsZXIpOw0KfQ0KDQovKioNCiAqIEV4aXN0aW5nIFdPVCBsb2NhbGl6YXRpb25zDQogKi8NCnZhciBsb2NhbGl6YXRpb25zID0gew0KICAgIGVuOiB7DQogICAgICAgICcucG9wdXAtaGVhZCc6ICdXYXJuaW5nJywNCiAgICAgICAgJy5wb3B1cC1hdHRlbnRpb24tbXNnJzogJ1RoaXMgd2Vic2l0ZSBoYXMgcG9vciByZXB1dGF0aW9uIGFjY29yZGluZyB0byBXZWIgb2YgVHJ1c3QuJywNCiAgICAgICAgJyNiYWNrJzogJ0dvIEJhY2snLA0KICAgICAgICAnI29wZW4nOiAnR28gdG8gdGhlIHNpdGUnLA0KICAgICAgICAnI3NpdGUtcmVwb3J0JzogJ1ZpZXcgZGV0YWlscyBhbmQgY29tbWVudHMnLA0KICAgICAgICAnLnBvcHVwLXJldmlld3NfaGVhZCc6ICdVc2VycyBoYXZlIGlkZW50aWZpZWQgdGhlIGZvbGxvd2luZyBpc3N1ZXM6JywNCiAgICAgICAgJzEwMSc6ICdNYWx3YXJlIG9yIHZpcnVzZXMnLA0KICAgICAgICAnMTAyJzogJ1Bvb3IgY3VzdG9tZXIgZXhwZXJpZW5jZScsDQogICAgICAgICcxMDMnOiAnUGhpc2hpbmcnLA0KICAgICAgICAnMTA0JzogJ1NjYW0nLA0KICAgICAgICAnMTA1JzogJ1BvdGVudGlhbGx5IGlsbGVnYWwnLA0KICAgICAgICAnMjAxJzogJ01pc2xlYWRpbmcgY2xhaW1zIG9yIHVuZXRoaWNhbCcsDQogICAgICAgICcyMDInOiAnUHJpdmFjeSByaXNrcycsDQogICAgICAgICcyMDMnOiAnU3VzcGljaW91cycsDQogICAgICAgICcyMDQnOiAnSGF0ZSwgZGlzY3JpbWluYXRpb24nLA0KICAgICAgICAnMjA1JzogJ1NwYW0nLA0KICAgICAgICAnMjA2JzogJ1BvdGVudGlhbGx5IHVud2FudGVkIHByb2dyYW1zJywNCiAgICAgICAgJzIwNyc6ICdBZHMgLyBwb3AtdXBzJywNCiAgICAgICAgJzMwMSc6ICdPbmxpbmUgdHJhY2tpbmcnLA0KICAgICAgICAnMzAyJzogJ0FsdGVybmF0aXZlIG9yIGNvbnRyb3ZlcnNpYWwgbWVkaWNpbmUnLA0KICAgICAgICAnMzAzJzogJ09waW5pb25zLCByZWxpZ2lvbiwgcG9saXRpY3MnLA0KICAgICAgICAnMzA0JzogJ090aGVyJywNCiAgICAgICAgJzQwMSc6ICdBZHVsdCBjb250ZW50JywNCiAgICAgICAgJzQwMic6ICdJbmNpZGVudGFsIG51ZGl0eScsDQogICAgICAgICc0MDMnOiAnR3J1ZXNvbWUgb3Igc2hvY2tpbmcnLA0KICAgICAgICAnNDA0JzogJ1NpdGUgZm9yIGtpZHMnLA0KICAgICAgICAnNTAxJzogJ0dvb2Qgc2l0ZScNCiAgICB9LA0KICAgIHJ1OiB7DQogICAgICAgICcucG9wdXAtaGVhZCc6ICfQktC90LjQvNCw0L3QuNC1IScsDQogICAgICAgICcucG9wdXAtYXR0ZW50aW9uLW1zZyc6ICfQoyDRjdGC0L7Qs9C+INGB0LDQudGC0LAg0L/Qu9C+0YXQsNGPINGA0LXQv9GD0YLQsNGG0LjRjyDQv9C+INC00LDQvdC90YvQvCBXZWIgb2YgVHJ1c3QuJywNCiAgICAgICAgJyNiYWNrJzogJ9Cd0LDQt9Cw0LQnLA0KICAgICAgICAnI29wZW4nOiAn0J7RgtC60YDRi9GC0Ywg0YHQsNC50YInLA0KICAgICAgICAnI3NpdGUtcmVwb3J0JzogJ9Ce0YLQutGA0YvRgtGMINC+0YLRh9C10YIg0L4g0YDQtdC/0YPRgtCw0YbQuNC4INGB0LDQudGC0LAnLA0KICAgICAgICAnLnBvcHVwLXJldmlld3NfaGVhZCc6ICfQlNGA0YPQs9C40LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C4INC+0LEg0Y3RgtC+0Lwg0YHQsNC50YLQtTonLA0KICAgICAgICAnMTAxJzogJ9CS0YDQtdC00L7QvdC+0YHQvdC+0LUg0YHQvtC00LXRgNC20LjQvNC+0LUnLA0KICAgICAgICAnMTAyJzogJ9Ce0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9C5INC+0L/Ri9GCINGB0L7RgtGA0YPQtNC90LjRh9C10YHRgtCy0LAnLA0KICAgICAgICAnMTAzJzogJ9Ck0LjRiNC40L3QsycsDQogICAgICAgICcxMDQnOiAn0JzQvtGI0LXQvdC90LjRh9C10YHRgtCy0L4nLA0KICAgICAgICAnMTA1JzogJ9Cf0L7RgtC10L3RhtC40LDQu9GM0L3QviDQvdC10LfQsNC60L7QvdC90L7QtScsDQogICAgICAgICcyMDEnOiAn0J3QtdGN0YLQuNGH0L3Ri9C5INC40LvQuCDQstCy0L7QtNGP0YnQuNC5INCyINC30LDQsdC70YPQttC00LXQvdC40LUnLA0KICAgICAgICAnMjAyJzogJ9Cg0LjRgdC60Lgg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4JywNCiAgICAgICAgJzIwMyc6ICfQn9C+0LTQvtC30YDQuNGC0LXQu9GM0L3Ri9C5INGB0LDQudGCJywNCiAgICAgICAgJzIwNCc6ICfQoNCw0LfQttC40LPQsNC90LjQtSDQvdC10L3QsNCy0LjRgdGC0LgsINC00LjRgdC60YDQuNC80LjQvdCw0YbQuNGPJywNCiAgICAgICAgJzIwNSc6ICfQodC/0LDQvCcsDQogICAgICAgICcyMDYnOiAn0J/QvtGC0LXQvdGG0LjQsNC70YzQvdC+INC90LXQttC10LvQsNGC0LXQu9GM0L3QvtC1INCf0J4nLA0KICAgICAgICAnMjA3JzogJ9Cg0LXQutC70LDQvNCwLCDQstGB0L/Qu9GL0LLQsNGO0YnQuNC1INC+0LrQvdCwJywNCiAgICAgICAgJzMwMSc6ICfQntC90LvQsNC50L0g0YHQu9C10LbQtdC90LjQtScsDQogICAgICAgICczMDInOiAn0JDQu9GM0YLQtdGA0L3QsNGC0LjQstC90LDRjyDQuNC70Lgg0YHQv9C+0YDQvdCw0Y8g0LzQtdC00LjRhtC40L3QsCcsDQogICAgICAgICczMDMnOiAn0JzQvdC10L3QuNGPLCDRgNC10LvQuNCz0LjRjywg0L/QvtC70LjRgtC40LrQsCcsDQogICAgICAgICczMDQnOiAn0J/RgNC+0YfQtdC1JywNCiAgICAgICAgJzQwMSc6ICfQnNCw0YLQtdGA0LjQsNC70Ysg0YLQvtC70YzQutC+INC00LvRjyDQstC30YDQvtGB0LvRi9GFJywNCiAgICAgICAgJzQwMic6ICfQodC70YPRh9Cw0LnQvdC+0LUg0L7QsdC90LDQttC10L3QuNC1ICjQvtGC0LrRgNC+0LLQtdC90L3QsNGPINC+0LTQtdC20LTQsCknLA0KICAgICAgICAnNDAzJzogJ9Ce0YLQstGA0LDRgtC40YLQtdC70YzQvdGL0Lkg0LjQu9C4INGI0L7QutC40YDRg9GO0YnQuNC5INC80LDRgtC10YDQuNCw0LsnLA0KICAgICAgICAnNDA0JzogJ9Ch0LDQudGCINC00LvRjyDQtNC10YLQtdC5JywNCiAgICAgICAgJzUwMSc6ICfQpdC+0YDQvtGI0LjQuSDRgdCw0LnRgicNCiAgICB9LA0KICAgIGRlOiB7DQogICAgICAgICIucG9wdXAtaGVhZCI6ICJXYXJudW5nIiwNCiAgICAgICAgIi5wb3B1cC1hdHRlbnRpb24tbXNnIjogIkRpZXNlIFdlYnNpdGUgaGF0IGVpbmVuIHNjaGxlY2h0ZW4gUnVmIGxhdXQgV2ViIG9mIFRydXN0LiIsDQogICAgICAgICIjYmFjayI6ICJadXJcdTAwZmNja2dlaGVuIiwNCiAgICAgICAgIiNvcGVuIjogIlp1ciBXZWJzaXRlIGdlaGVuIiwNCiAgICAgICAgIiNzaXRlLXJlcG9ydCI6ICJEZXRhaWxzIHVuZCBLb21tZW50YXJlIGFuemVpZ2VuIiwNCiAgICAgICAgIi5wb3B1cC1yZXZpZXdzX2hlYWQiOiAiQmVudXR6ZXIgaGFiZW4gZGllIGZvbGdlbmRlbiBQcm9ibGVtZW4gaWRlbnRpZml6aWVydDoiLA0KICAgICAgICAiMTAxIjogIk1hbHdhcmUgb2RlciBWaXJlbiIsDQogICAgICAgICIxMDIiOiAiU2NobGVjaHRlIEt1bmRlbmVyZmFocnVuZyIsDQogICAgICAgICIxMDMiOiAiUGhpc2hpbmciLA0KICAgICAgICAiMTA0IjogIkJldHJ1ZyIsDQogICAgICAgICIxMDUiOiAiUG90ZW56aWVsbCBpbGxlZ2FsIiwNCiAgICAgICAgIjIwMSI6ICJJcnJlZlx1MDBmY2hyZW5kZW4gQW5nYWJlbiBvZGVyIHVuZXRoaXNjaGUiLA0KICAgICAgICAiMjAyIjogIkRhdGVuc2NodXR6cmlzaWtlbiIsDQogICAgICAgICIyMDMiOiAiVmVyZFx1MDBlNGNodGlnIiwNCiAgICAgICAgIjIwNCI6ICJIYXNzLCBEaXNrcmltaW5pZXJ1bmciLA0KICAgICAgICAiMjA1IjogIlNwYW0iLA0KICAgICAgICAiMjA2IjogIlBvdGVudGllbGwgdW5lcndcdTAwZmNuc2NodGUgUHJvZ3JhbW1lIiwNCiAgICAgICAgIjIwNyI6ICJBbnplaWdlbiBcLyBQb3AtdXBzIiwNCiAgICAgICAgIjMwMSI6ICJPbmxpbmUtVHJhY2tpbmciLA0KICAgICAgICAiMzAyIjogIkFsdGVybmF0aXZlIG9kZXIga29udHJvdmVyc2UgTWVkaXppbiIsDQogICAgICAgICIzMDMiOiAiTWVpbnVuZ2VuLCBSZWxpZ2lvbiwgUG9saXRpayIsDQogICAgICAgICIzMDQiOiAiQW5kZXJlcyIsDQogICAgICAgICI0MDEiOiAiSW5oYWx0ZSBmXHUwMGZjciBFcndhY2hzZW5lIiwNCiAgICAgICAgIjQwMiI6ICJOYWNrdGhlaXQiLA0KICAgICAgICAiNDAzIjogIkdyYXVlbmhhZnQgb2RlciBzY2hvY2tpZXJlbmQiLA0KICAgICAgICAiNDA0IjogIldlYnNpdGUgZlx1MDBmY3IgS2luZGVyIiwNCiAgICAgICAgIjUwMSI6ICJHdXRlIFdlYnNpdGUiDQogICAgfSwNCiAgICBwbDogew0KICAgICAgICAiLnBvcHVwLWhlYWQiOiAiT3N0cnplXHUwMTdjZW5pZSIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJXZWRcdTAxNDJ1ZyBXZWIgb2YgVHJ1c3QgdGEgc3Ryb25hIGludGVybmV0b3dhIG1hIGtpZXBza1x1MDEwNSByZXB1dGFjalx1MDExOS4iLA0KICAgICAgICAiI2JhY2siOiAiV3JcdTAwZjNcdTAxMDciLA0KICAgICAgICAiI29wZW4iOiAiUHJ6ZWpkXHUwMTdhIGRvIHN0cm9ueSIsDQogICAgICAgICIjc2l0ZS1yZXBvcnQiOiAiWm9iYWN6IHN6Y3plZ1x1MDBmM1x1MDE0MnkgaSBrb21lbnRhcnplIiwNCiAgICAgICAgIi5wb3B1cC1yZXZpZXdzX2hlYWQiOiAiVVx1MDE3Y3l0a293bmljeSByb3pwb3puYWxpIG5hc3RcdTAxMTlwdWpcdTAxMDVjZSBwcm9ibGVteToiLA0KICAgICAgICAiMTAxIjogIlpcdTAxNDJvXHUwMTVibGl3ZSBvcHJvZ3JhbW93YW5pZSBsdWIgd2lydXN5IiwNCiAgICAgICAgIjEwMiI6ICJLaWVwc2tpZSBkb1x1MDE1YndpYWRjemVuaWUga2xpZW50YSIsDQogICAgICAgICIxMDMiOiAiV3lcdTAxNDJ1ZHphbmllIHBvdWZueWNoIGluZm9ybWFjamkiLA0KICAgICAgICAiMTA0IjogIk9zenVzdHdvIiwNCiAgICAgICAgIjEwNSI6ICJQb3RlbmNqYWxuaWUgbmllbGVnYWxuZSIsDQogICAgICAgICIyMDEiOiAiWmFwZXduaWVuaWEgd3Byb3dhZHphalx1MDEwNWNlIHcgYlx1MDE0Mlx1MDEwNWQgbHViIG5pZWV0eWN6bmUiLA0KICAgICAgICAiMjAyIjogIlphZ3JvXHUwMTdjZW5pYSBwcnl3YXRub1x1MDE1YmNpIiwNCiAgICAgICAgIjIwMyI6ICJQb2RlanJ6YW5lIiwNCiAgICAgICAgIjIwNCI6ICJOaWVuYXdpXHUwMTViXHUwMTA3LCBkeXNrcnltaW5hY2phIiwNCiAgICAgICAgIjIwNSI6ICJTcGFtIiwNCiAgICAgICAgIjIwNiI6ICJQb3RlbmNqYWxuaWUgbmllY2hjaWFuZSBvcHJvZ3JhbW93YW5pZSIsDQogICAgICAgICIyMDciOiAiUmVrbGFteSBcLyB3eXNrYWt1alx1MDEwNWNlIG9raWVua2EiLA0KICAgICAgICAiMzAxIjogIlx1MDE1YWxlZHplbmllIGFrdHl3bm9cdTAxNWJjaSB3IEludGVybmVjaWUiLA0KICAgICAgICAiMzAyIjogIk5pZWtvbndlbmNqb25hbG5hIGx1YiBrb250cm93ZXJzeWpuYSBtZWR5Y3luYSIsDQogICAgICAgICIzMDMiOiAiT3BpbmllLCByZWxpZ2lhLCBwb2xpdHlrYSIsDQogICAgICAgICIzMDQiOiAiSW5uZSIsDQogICAgICAgICI0MDEiOiAiVHJlXHUwMTViY2kgZGxhIGRvcm9zXHUwMTQyeWNoIiwNCiAgICAgICAgIjQwMiI6ICJQcnp5cGFka293YSBuYWdvXHUwMTViXHUwMTA3IiwNCiAgICAgICAgIjQwMyI6ICJNYWthYnJ5Y3puZSBsdWIgc3pva3VqXHUwMTA1Y2UiLA0KICAgICAgICAiNDA0IjogIlN0cm9uYSBkbGEgZHppZWNpIiwNCiAgICAgICAgIjUwMSI6ICJEb2JyYSBzdHJvbmEiDQogICAgfSwNCiAgICBzcjogew0KICAgICAgICAiLnBvcHVwLWhlYWQiOiAidXBvem9yZW5qZSIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJQcmVtYSBvcmdhbml6YWNpamkgV2ViIG9mIFRydXN0LCwgb3ZhaiBzYWp0IGltYSBsb1x1MDE2MXUgcmVwdXRhY2lqdS4iLA0KICAgICAgICAiI2JhY2siOiAiVnJhdGkgc2UgbmF6YWQiLA0KICAgICAgICAiI29wZW4iOiAiSWRpIG5hIHNhanQiLA0KICAgICAgICAiI3NpdGUtcmVwb3J0IjogIlZpZGkgcG9qZWRpbm9zdGkgaSBrb21lbnRhcmUiLA0KICAgICAgICAiLnBvcHVwLXJldmlld3NfaGVhZCI6ICJLb3Jpc25pY2kgc3UgcHJlcG96bmFsaSBzbGVkZVx1MDEwN2UgcHJvYmxlbWU6IiwNCiAgICAgICAgIjEwMSI6ICJcdTAxNjB0ZXRhbiBzb2Z0dmVyIGlsaSB2aXJ1c2kiLA0KICAgICAgICAiMTAyIjogIkxvXHUwMTYxZSBrb3Jpc25pXHUwMTBka28gaXNrdXN0dm8iLA0KICAgICAgICAiMTAzIjogIkZpXHUwMTYxaW5nIiwNCiAgICAgICAgIjEwNCI6ICJQcmV2YXJhIiwNCiAgICAgICAgIjEwNSI6ICJQb3RlbmNpamFsbm8gbmV6YWtvbml0byIsDQogICAgICAgICIyMDEiOiAiTmVtb3JhbG5vIiwNCiAgICAgICAgIjIwMiI6ICJSaXppayBvZCBuYXJ1XHUwMTYxYXZhbmphIHByaXZhdG5vc3RpIiwNCiAgICAgICAgIjIwMyI6ICJTdW1uaml2byIsDQogICAgICAgICIyMDQiOiAiTXJcdTAxN2VuamEsIGRpc2tyaW1pbmFjaWphIiwNCiAgICAgICAgIjIwNSI6ICJOZVx1MDE3ZWVsamVuZSBzdHZhcmkiLA0KICAgICAgICAiMjA2IjogIlBvdGVuY2lqYWxubyBuZXBvXHUwMTdlZWxqbmkgcHJvZ3JhbWkiLA0KICAgICAgICAiMjA3IjogIlJla2xhbWUgaWxpIGlza2FcdTAxMGR1XHUwMTA3aSBwcm96b3JpIiwNCiAgICAgICAgIjMwMSI6ICJNcmVcdTAxN2VubyBwcmFcdTAxMDdlbmplIiwNCiAgICAgICAgIjMwMiI6ICJBbHRlcm5hdGl2bmEgaWxpIGtvbnRyYXZlcnpuYSBtZWRpY2luYSIsDQogICAgICAgICIzMDMiOiAiTWlcdTAxNjFsamVuamEsIHJlbGVnaWplLCBwb2xpdGlrYSIsDQogICAgICAgICIzMDQiOiAiRHJ1Z28iLA0KICAgICAgICAiNDAxIjogIlNhZHJcdTAxN2VhaiB6YSBvZHJhc2xlIiwNCiAgICAgICAgIjQwMiI6ICJHb2xvdGluamEiLA0KICAgICAgICAiNDAzIjogIkpleml2byBpbGkgXHUwMTYxb2thbnRubyIsDQogICAgICAgICI0MDQiOiAiU2FqdCB6YSBkZWN1IiwNCiAgICAgICAgIjUwMSI6ICJEb2JhciBzYWp0Ig0KICAgIH0sDQogICAgdWs6IHsNCiAgICAgICAgIi5wb3B1cC1oZWFkIjogIlx1MDQyM1x1MDQzMlx1MDQzMFx1MDQzM1x1MDQzMCIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJcdTA0MjZcdTA0MzVcdTA0MzkgXHUwNDQxXHUwNDMwXHUwNDM5XHUwNDQyIFx1MDQzY1x1MDQzMFx1MDQ1NCBcdTA0M2ZcdTA0M2VcdTA0MzNcdTA0MzBcdTA0M2RcdTA0NDMgXHUwNDQwXHUwNDM1XHUwNDNmXHUwNDQzXHUwNDQyXHUwNDMwXHUwNDQ2XHUwNDU2XHUwNDRlIFx1MDQzN1x1MDQzMCBcdTA0MzJcdTA0MzVcdTA0NDBcdTA0NDFcdTA0NTZcdTA0NTRcdTA0NGUgV2ViIG9mIFRydXN0LiIsDQogICAgICAgICIjYmFjayI6ICJcdTA0MWRcdTA0MzBcdTA0MzdcdTA0MzBcdTA0MzQiLA0KICAgICAgICAiI29wZW4iOiAiXHUwNDFmXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM5XHUwNDQyXHUwNDM4IFx1MDQzZFx1MDQzMCBcdTA0NDFcdTA0MzBcdTA0MzlcdTA0NDIiLA0KICAgICAgICAiI3NpdGUtcmVwb3J0IjogIlx1MDQxMlx1MDQ1Nlx1MDQzNFx1MDQzYVx1MDQ0MFx1MDQzOFx1MDQ0Mlx1MDQzOCBcdTA0M2ZcdTA0M2VcdTA0MzRcdTA0NDBcdTA0M2VcdTA0MzFcdTA0MzhcdTA0NDZcdTA0NTYgXHUwNDQyXHUwNDMwIFx1MDQzYVx1MDQzZVx1MDQzY1x1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQzMFx1MDQ0MFx1MDQ1NiIsDQogICAgICAgICIucG9wdXAtcmV2aWV3c19oZWFkIjogIlx1MDQxYVx1MDQzZVx1MDQ0MFx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzMlx1MDQzMFx1MDQ0N1x1MDQzMFx1MDQzY1x1MDQzOCBcdTA0MzFcdTA0NDNcdTA0M2JcdTA0MzggXHUwNDMyXHUwNDM4XHUwNDRmXHUwNDMyXHUwNDNiXHUwNDM1XHUwNDNkXHUwNDU2IFx1MDQzZFx1MDQzMFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzZlx1MDQzZFx1MDQ1NiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0MzFcdTA0M2JcdTA0MzVcdTA0M2NcdTA0Mzg6IiwNCiAgICAgICAgIjEwMSI6ICJcdTA0MjhcdTA0M2FcdTA0NTZcdTA0MzRcdTA0M2JcdTA0MzhcdTA0MzJcdTA0NTYgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDMzXHUwNDQwXHUwNDMwXHUwNDNjXHUwNDM4IFx1MDQzMFx1MDQzMVx1MDQzZSBcdTA0MzJcdTA0NTZcdTA0NDBcdTA0NDNcdTA0NDFcdTA0MzgiLA0KICAgICAgICAiMTAyIjogIlx1MDQxZFx1MDQzNVx1MDQzM1x1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzMlx1MDQzZFx1MDQzOFx1MDQzOSBcdTA0MzRcdTA0M2VcdTA0NDFcdTA0MzJcdTA0NTZcdTA0MzQgXHUwNDQxXHUwNDNmXHUwNDU2XHUwNDMyXHUwNDNmXHUwNDQwXHUwNDMwXHUwNDQ2XHUwNDU2IiwNCiAgICAgICAgIjEwMyI6ICJcdTA0MjRcdTA0NTZcdTA0NDhcdTA0MzhcdTA0M2RcdTA0MzMiLA0KICAgICAgICAiMTA0IjogIlx1MDQyOFx1MDQzMFx1MDQ0NVx1MDQ0MFx1MDQzMFx1MDQzOVx1MDQ0MVx1MDQ0Mlx1MDQzMlx1MDQzZSIsDQogICAgICAgICIxMDUiOiAiXHUwNDFmXHUwNDNlXHUwNDQyXHUwNDM1XHUwNDNkXHUwNDQ2XHUwNDU2XHUwNDM5XHUwNDNkXHUwNDNlIFx1MDQzZFx1MDQzNVx1MDQzN1x1MDQzMFx1MDQzYVx1MDQzZVx1MDQzZFx1MDQzZFx1MDQzNSIsDQogICAgICAgICIyMDEiOiAiXHUwNDFkXHUwNDM1XHUwNDM1XHUwNDQyXHUwNDM4XHUwNDQ3XHUwNDNkXHUwNDM4XHUwNDM5IFx1MDQzMFx1MDQzMVx1MDQzZSBcdTA0MzJcdTA0MzJcdTA0M2VcdTA0MzRcdTA0MzhcdTA0NDJcdTA0NGMgXHUwNDMyIFx1MDQzZVx1MDQzY1x1MDQzMFx1MDQzZFx1MDQ0MyIsDQogICAgICAgICIyMDIiOiAiXHUwNDIwXHUwNDM4XHUwNDM3XHUwNDM4XHUwNDNhXHUwNDM4IFx1MDQzYVx1MDQzZVx1MDQzZFx1MDQ0NFx1MDQ1Nlx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0Nlx1MDQ1Nlx1MDQzOVx1MDQzZFx1MDQzZVx1MDQ0MVx1MDQ0Mlx1MDQ1NiIsDQogICAgICAgICIyMDMiOiAiXHUwNDFmXHUwNDU2XHUwNDM0XHUwNDNlXHUwNDM3XHUwNDQwXHUwNDU2XHUwNDNiXHUwNDM4XHUwNDM5IFx1MDQ0MVx1MDQzMFx1MDQzOVx1MDQ0MiIsDQogICAgICAgICIyMDQiOiAiXHUwNDIwXHUwNDNlXHUwNDM3XHUwNDNmXHUwNDMwXHUwNDNiXHUwNDRlXHUwNDMyXHUwNDMwXHUwNDNkXHUwNDNkXHUwNDRmIFx1MDQzZFx1MDQzNVx1MDQzZFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQ1NiwgXHUwNDM0XHUwNDM4XHUwNDQxXHUwNDNhXHUwNDQwXHUwNDM4XHUwNDNjXHUwNDU2XHUwNDNkXHUwNDMwXHUwNDQ2XHUwNDU2XHUwNDRmIiwNCiAgICAgICAgIjIwNSI6ICJcdTA0MjFcdTA0M2ZcdTA0MzBcdTA0M2MiLA0KICAgICAgICAiMjA2IjogIlx1MDQxZlx1MDQzZVx1MDQ0Mlx1MDQzNVx1MDQzZFx1MDQ0Nlx1MDQ1Nlx1MDQzOVx1MDQzZFx1MDQzZSBcdTA0M2RcdTA0MzVcdTA0MzFcdTA0MzBcdTA0MzZcdTA0MzBcdTA0M2RcdTA0NTYgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDMzXHUwNDQwXHUwNDMwXHUwNDNjXHUwNDM4IiwNCiAgICAgICAgIjIwNyI6ICJcdTA0MjBcdTA0MzVcdTA0M2FcdTA0M2JcdTA0MzBcdTA0M2NcdTA0MzAsIFx1MDQ0MVx1MDQzZlx1MDQzYlx1MDQzOFx1MDQzMlx1MDQzMFx1MDQ0ZVx1MDQ0N1x1MDQ1NiBcdTA0MzJcdTA0NTZcdTA0M2FcdTA0M2RcdTA0MzAiLA0KICAgICAgICAiMzAxIjogIlx1MDQxZVx1MDQzZFx1MDQzYlx1MDQzMFx1MDQzOVx1MDQzZCBcdTA0NDFcdTA0NDJcdTA0MzVcdTA0MzZcdTA0MzVcdTA0M2RcdTA0M2RcdTA0NGYiLA0KICAgICAgICAiMzAyIjogIlx1MDQxMFx1MDQzYlx1MDQ0Y1x1MDQ0Mlx1MDQzNVx1MDQ0MFx1MDQzZFx1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzMlx1MDQzZFx1MDQzMCBcdTA0MzBcdTA0MzFcdTA0M2UgXHUwNDQxXHUwNDNmXHUwNDU2XHUwNDQwXHUwNDNkXHUwNDMwIFx1MDQzY1x1MDQzNVx1MDQzNFx1MDQzOFx1MDQ0Nlx1MDQzOFx1MDQzZFx1MDQzMCIsDQogICAgICAgICIzMDMiOiAiXHUwNDE0XHUwNDQzXHUwNDNjXHUwNDNhXHUwNDM4LCBcdTA0NDBcdTA0MzVcdTA0M2JcdTA0NTZcdTA0MzNcdTA0NTZcdTA0NGYsIFx1MDQzZlx1MDQzZVx1MDQzYlx1MDQ1Nlx1MDQ0Mlx1MDQzOFx1MDQzYVx1MDQzMCIsDQogICAgICAgICIzMDQiOiAiXHUwNDA2XHUwNDNkXHUwNDQ4XHUwNDM1IiwNCiAgICAgICAgIjQwMSI6ICJcdTA0MWNcdTA0MzBcdTA0NDJcdTA0MzVcdTA0NDBcdTA0NTZcdTA0MzBcdTA0M2JcdTA0MzggXHUwNDQyXHUwNDU2XHUwNDNiXHUwNDRjXHUwNDNhXHUwNDM4IFx1MDQzNFx1MDQzYlx1MDQ0ZiBcdTA0MzRcdTA0M2VcdTA0NDBcdTA0M2VcdTA0NDFcdTA0M2JcdTA0MzhcdTA0NDUiLA0KICAgICAgICAiNDAyIjogIlx1MDQwNlx1MDQzY1x1MDQzZVx1MDQzMlx1MDQ1Nlx1MDQ0MFx1MDQzZFx1MDQzMCBcdTA0M2RcdTA0MzBcdTA0MzNcdTA0M2VcdTA0NDJcdTA0MzAiLA0KICAgICAgICAiNDAzIjogIlx1MDQxNlx1MDQzMFx1MDQ0NVx1MDQzYlx1MDQzOFx1MDQzMlx1MDQzOFx1MDQzOSBcdTA0MzBcdTA0MzFcdTA0M2UgXHUwNDQ4XHUwNDNlXHUwNDNhXHUwNDQzXHUwNDRlXHUwNDQ3XHUwNDU2XHUwNDM5IFx1MDQzN1x1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0MiIsDQogICAgICAgICI0MDQiOiAiXHUwNDIxXHUwNDMwXHUwNDM5XHUwNDQyIFx1MDQzNFx1MDQzYlx1MDQ0ZiBcdTA0MzRcdTA0NTZcdTA0NDJcdTA0MzVcdTA0MzkiLA0KICAgICAgICAiNTAxIjogIlx1MDQyNVx1MDQzZVx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzOFx1MDQzOSBcdTA0NDFcdTA0MzBcdTA0MzlcdTA0NDIiDQogICAgfSwNCiAgICB0cjogew0KICAgICAgICAiLnBvcHVwLWhlYWQiOiAiRGlra2F0IiwNCiAgICAgICAgIi5wb3B1cC1hdHRlbnRpb24tbXNnIjogIkJ1IHdlYiBzaXRlc2kgV2ViIG9mIFRydXN0IHZlcmlsZXJpbmUgZ1x1MDBmNnJlIHpheVx1MDEzMWYgaXRpYmFyYSBzYWhpcC4iLA0KICAgICAgICAiI2JhY2siOiAiR2VyaSBEXHUwMGY2biIsDQogICAgICAgICIjb3BlbiI6ICJTaXRleWUgZ2l0IiwNCiAgICAgICAgIiNzaXRlLXJlcG9ydCI6ICJEZXRheWxhclx1MDEzMSB2ZSB5b3J1bWxhclx1MDEzMSBnXHUwMGY2clx1MDBmY250XHUwMGZjbGUiLA0KICAgICAgICAiLnBvcHVwLXJldmlld3NfaGVhZCI6ICJLdWxsYW5cdTAxMzFjXHUwMTMxbGFyIFx1MDE1ZnUgc29ydW5sYXJcdTAxMzEgYmVsaXJsZW1pXHUwMTVmOiIsDQogICAgICAgICIxMDEiOiAiWmFyYXJsXHUwMTMxIHlhelx1MDEzMWxcdTAxMzFtIHZlIHlhIHZpclx1MDBmY3MiLA0KICAgICAgICAiMTAyIjogIktcdTAwZjZ0XHUwMGZjIG1cdTAwZmNcdTAxNWZ0ZXJpIGRlbmV5aW1pIiwNCiAgICAgICAgIjEwMyI6ICJLaW1saWsgaFx1MDEzMXJzXHUwMTMxemxcdTAxMzFcdTAxMWZcdTAxMzEiLA0KICAgICAgICAiMTA0IjogIlNhaHRlY2lsaWsgXC8gQWxkYXRtYWNhIiwNCiAgICAgICAgIjEwNSI6ICJQb3RhbnNpeWVsIHlhc2FkXHUwMTMxXHUwMTVmXHUwMTMxIiwNCiAgICAgICAgIjIwMSI6ICJZYW5cdTAxMzFsdFx1MDEzMWNcdTAxMzEgaWRkaWFsYXIgdmUgeWEgZXRpayBvbG1heWFuIGlcdTAwZTdlcmlrIiwNCiAgICAgICAgIjIwMiI6ICJHaXpsaWxpayByaXNrbGVyaSIsDQogICAgICAgICIyMDMiOiAiXHUwMTVlXHUwMGZjcGhlbGkiLA0KICAgICAgICAiMjA0IjogIk5lZnJldCwgYXlyXHUwMTMxbWNcdTAxMzFsXHUwMTMxayIsDQogICAgICAgICIyMDUiOiAiXHUwMTMwc3Rlbm1leWVuIGlcdTAwZTdlcmlrIiwNCiAgICAgICAgIjIwNiI6ICJQb3RhbnNpeWVsIG9sYXJhayBpc3Rlbm1leWVuIHByb2dyYW1sYXIiLA0KICAgICAgICAiMjA3IjogIlJla2xhbWxhciBcLyBhXHUwMGU3XHUwMTMxbFx1MDEzMXIgcGVuY2VyZWxlciIsDQogICAgICAgICIzMDEiOiAiXHUwMGM3ZXZpcmltaVx1MDBlN2kgdGFraXAgbWVrYW5pem1hc1x1MDEzMSIsDQogICAgICAgICIzMDIiOiAiQWx0ZXJuYXRpZiB5YSBkYSB0YXJ0XHUwMTMxXHUwMTVmbWFsXHUwMTMxIHRcdTAxMzFwIGlcdTAwZTdlcmlcdTAxMWZpIiwNCiAgICAgICAgIjMwMyI6ICJGaWtpciwgZGluLCBzaXlhc2V0IiwNCiAgICAgICAgIjMwNCI6ICJEaVx1MDExZmVyIiwNCiAgICAgICAgIjQwMSI6ICJZZXRpXHUwMTVma2luIGlcdTAwZTdlcmlrIiwNCiAgICAgICAgIjQwMiI6ICJ0ZXNhZFx1MDBmY2ZpIFx1MDBlN1x1MDEzMXBsYWtsXHUwMTMxayIsDQogICAgICAgICI0MDMiOiAiS29ya3VuXHUwMGU3IHlhIGRhIFx1MDE1Zm9rIGVkaWNpIiwNCiAgICAgICAgIjQwNCI6ICJcdTAwYzdvY3VrbGFyIGlcdTAwZTdpbiBiaXIgc2l0ZSIsDQogICAgICAgICI1MDEiOiAiR1x1MDBmY3ZlbmxpIHNpdGUiDQogICAgfSwNCiAgICB6aDogew0KICAgICAgICAiLnBvcHVwLWhlYWQiOiAiXHU4YjY2XHU1NDRhIiwNCiAgICAgICAgIi5wb3B1cC1hdHRlbnRpb24tbXNnIjogIlx1OGZkOVx1NGUyYVx1N2Y1MVx1N2FkOVx1NTcyOCBXZWIgb2YgVHJ1c3QgXHU0ZTJkXHU0ZmUxXHU3NTI4XHU4YmIwXHU1ZjU1XHU4ZmM3XHU0ZjRlXHUzMDAyIiwNCiAgICAgICAgIiNiYWNrIjogIlx1OGZkNFx1NTZkZSIsDQogICAgICAgICIjb3BlbiI6ICJcdTUyNGRcdTVmODBcdThiZTVcdTdmNTFcdTdhZDkiLA0KICAgICAgICAiI3NpdGUtcmVwb3J0IjogIlx1NmQ0Zlx1ODljOFx1NjZmNFx1NTkxYVx1N2VjNlx1ODI4Mlx1NGUwZVx1OGJjNFx1OGJiYSIsDQogICAgICAgICIucG9wdXAtcmV2aWV3c19oZWFkIjogIlx1NzUyOFx1NjIzN1x1NWRmMlx1N2VjZlx1Nzg2ZVx1NWI5YVx1NWI1OFx1NTcyOFx1NGVlNVx1NGUwYlx1OTVlZVx1OTg5OFx1ZmYxYSIsDQogICAgICAgICIxMDEiOiAiXHU1ZTI2XHU2NzA5XHU2MDc2XHU2MTBmXHU4ZjZmXHU0ZWY2XHU2MjE2XHU3NWM1XHU2YmQyIiwNCiAgICAgICAgIjEwMiI6ICJcdTc1MjhcdTYyMzdcdTRmNTNcdTlhOGNcdTVkZWUiLA0KICAgICAgICAiMTAzIjogIlx1OTQ5M1x1OWM3Y1x1N2Y1MVx1N2FkOSIsDQogICAgICAgICIxMDQiOiAiXHU4YmM4XHU5YTk3XHU3ZjUxXHU3YWQ5IiwNCiAgICAgICAgIjEwNSI6ICJcdTUzZWZcdTgwZmRcdTViNThcdTU3MjhcdThmZGRcdTZjZDVcdTRmZTFcdTYwNmYiLA0KICAgICAgICAiMjAxIjogIlx1NWUyNlx1NjcwOVx1OGJlZlx1NWJmY1x1NjAyN1x1NjIxNlx1NGUwZFx1OTA1M1x1NWZiN1x1NTE4NVx1NWJiOSIsDQogICAgICAgICIyMDIiOiAiXHU1YjU4XHU1NzI4XHU5NjkwXHU3OWMxXHU5OGNlXHU5NjY5IiwNCiAgICAgICAgIjIwMyI6ICJcdTUzZWZcdTc1OTFcdTdmNTFcdTdhZDkiLA0KICAgICAgICAiMjA0IjogIlx1NWUyNlx1NjcwOVx1NzE3ZFx1NTJhOFx1NGVjN1x1NjA2OFx1NjIxNlx1NmI2N1x1ODljNlx1NTE4NVx1NWJiOSIsDQogICAgICAgICIyMDUiOiAiXHU1NzgzXHU1NzNlXHU3YWQ5XHU3MGI5IiwNCiAgICAgICAgIjIwNiI6ICJcdTdmNTFcdTdhZDlcdTViNThcdTU3MjhcdTZmNWNcdTU3MjhcdTY3MDlcdTViYjNcdTdhMGJcdTVlOGYiLA0KICAgICAgICAiMjA3IjogIlx1N2Y1MVx1N2FkOVx1NWI1OFx1NTcyOFx1NWU3Zlx1NTQ0YVx1NjIxNlx1NWYzOVx1N2E5NyIsDQogICAgICAgICIzMDEiOiAiXHU3ZjUxXHU3ZWRjXHU4ZGRmXHU4ZTJhIiwNCiAgICAgICAgIjMwMiI6ICJcdTdmNTFcdTdhZDlcdTZkODlcdTUzY2FcdTUzZTZcdTdjN2JcdTYyMTZcdTY3MDlcdTRlODlcdThiYWVcdTc2ODRcdTgzNmZcdTcyNjlcdTUxODVcdTViYjkiLA0KICAgICAgICAiMzAzIjogIlx1N2Y1MVx1N2FkOVx1NWUyNlx1NjcwOVx1NmY1Y1x1NTcyOFx1NGUwZFx1NTQ4Y1x1OGMxMFx1NzY4NFx1NjEwZlx1ODljMVx1MzAwMVx1NWI5N1x1NjU1OVx1MzAwMVx1NjUzZlx1NmNiYlx1NTE4NVx1NWJiOSIsDQogICAgICAgICIzMDQiOiAiXHU1MTc2XHU0ZWQ2IiwNCiAgICAgICAgIjQwMSI6ICJcdTdmNTFcdTdhZDlcdTVlMjZcdTY3MDlcdTYyMTBcdTRlYmFcdTUxODVcdTViYjkiLA0KICAgICAgICAiNDAyIjogIlx1N2Y1MVx1N2FkOVx1NWUyNlx1NjcwOVx1ODhmOFx1NGY1M1x1NGViYVx1NGY1M1x1NTE4NVx1NWJiOSIsDQogICAgICAgICI0MDMiOiAiXHU3ZjUxXHU3YWQ5XHU1ZTI2XHU2NzA5XHU1M2VmXHU2MDE1XHU2MjE2XHU2MGNhXHU2MDlhXHU1MTg1XHU1YmI5IiwNCiAgICAgICAgIjQwNCI6ICJcdTRmOWJcdTUxM2ZcdTdhZTVcdTZkNGZcdTg5YzhcdTc2ODRcdTdmNTFcdTdhZDkiLA0KICAgICAgICAiNTAxIjogIlx1NWI4OVx1NTE2OFx1N2Y1MVx1N2FkOSINCiAgICB9LA0KICAgICJ6aC1UVyI6IHsNCiAgICAgICAgIi5wb3B1cC1oZWFkIjogIlx1OGI2Nlx1NTQ0YSIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJcdTY4MzlcdTY0ZGEgV2ViIG9mIFRydXN0XHU3Njg0XHU1NmRlXHU1ODMxXHU2YjY0XHU3ZGIyXHU3YWQ5XHU3Njg0XHU0ZmUxXHU4YjdkXHU1ZGVlXHUzMDAyIiwNCiAgICAgICAgIiNiYWNrIjogIlx1NTZkZVx1NGUwYVx1NGUwMFx1OTgwMSIsDQogICAgICAgICIjb3BlbiI6ICJcdTdlN2NcdTdlOGNcdTcwMGZcdTg5YmQiLA0KICAgICAgICAiI3NpdGUtcmVwb3J0IjogIlx1NmFhMlx1ODk5Nlx1OGE3M1x1N2QzMFx1OGNjN1x1NjU5OVx1ODIwN1x1NzU1OVx1OGEwMCIsDQogICAgICAgICIucG9wdXAtcmV2aWV3c19oZWFkIjogIlx1NGY3Zlx1NzUyOFx1ODAwNVx1NTZkZVx1NTgzMVx1NGVlNVx1NGUwYlx1OGEwYVx1NjA2Zlx1ZmYxYSIsDQogICAgICAgICIxMDEiOiAiXHU2MGUxXHU2MTBmXHU4ZWRmXHU5YWQ0XHU2MjE2XHU3NWM1XHU2YmQyIiwNCiAgICAgICAgIjEwMiI6ICJcdTY5NzVcdTVkZWVcdTc2ODRcdTk4NjdcdTViYTJcdTdkOTNcdTlhNTciLA0KICAgICAgICAiMTAzIjogIlx1N2RiMlx1OGRlZlx1OTFlM1x1OWI1YSIsDQogICAgICAgICIxMDQiOiAiXHU4YTUwXHU5YTE5XHU4ODRjXHU3MGJhIiwNCiAgICAgICAgIjEwNSI6ICJcdTZmNWJcdTU3MjhcdTc2ODRcdTZjZDVcdTVmOGJcdTU1NGZcdTk4NGMiLA0KICAgICAgICAiMjAxIjogIlx1OGFhNFx1NWMwZVx1NjIxNlx1NGUwZFx1OTA1M1x1NWZiN1x1NzY4NCIsDQogICAgICAgICIyMDIiOiAiXHU5NmIxXHU3OWMxXHU1Yjg5XHU1MTY4XHU3NTkxXHU2MTZlIiwNCiAgICAgICAgIjIwMyI6ICJcdTUzZWZcdTc1OTFcdTc2ODRcdTg4NGNcdTcwYmEiLA0KICAgICAgICAiMjA0IjogIlx1NGVjN1x1NjA2OFx1ODIwN1x1NmI2N1x1ODk5NiIsDQogICAgICAgICIyMDUiOiAiXHU1NzgzXHU1NzNlXHU5MGY1XHU0ZWY2IiwNCiAgICAgICAgIjIwNiI6ICJcdTZmNWJcdTU3MjhcdTRlMGRcdTk3MDBcdTg5ODFcdTc2ODRcdThlZGZcdTlhZDQiLA0KICAgICAgICAiMjA3IjogIlx1NWVlM1x1NTQ0YVwvXHU1ZmViXHU5ODZmXHU4OTk2XHU3YTk3IiwNCiAgICAgICAgIjMwMSI6ICJcdTdkZGFcdTRlMGFcdThmZmRcdThlNjQiLA0KICAgICAgICAiMzAyIjogIlx1NmQ0MVx1NTBiM1x1NTA0Zlx1NjViOVx1NjIxNlx1NzIyZFx1OGI3MFx1NjAyN1x1ODVlNVx1NzI2OSIsDQogICAgICAgICIzMDMiOiAiXHU3NzBiXHU2Y2Q1XHUzMDAxXHU1Yjk3XHU2NTU5XHUzMDAxXHU2NTNmXHU2Y2JiXHU4YjcwXHU5ODRjIiwNCiAgICAgICAgIjMwNCI6ICJcdTUxNzZcdTRlZDYiLA0KICAgICAgICAiNDAxIjogIlx1NjIxMFx1NGViYVx1NTE2N1x1NWJiOSIsDQogICAgICAgICI0MDIiOiAiXHU1M2VmXHU4MGZkXHU2NzA5XHU4OGY4XHU5NzMyIiwNCiAgICAgICAgIjQwMyI6ICJcdTUzZWZcdTYwMTVcdTYyMTZcdTlhNWFcdTU2ODdcdTc2ODQiLA0KICAgICAgICAiNDA0IjogIlx1NTE1Mlx1N2FlNVx1N2RiMlx1N2FkOSIsDQogICAgICAgICI1MDEiOiAiXHU4MjZmXHU1OTdkXHU3Njg0XHU3ZGIyXHU3YWQ5Ig0KICAgIH0sDQogICAga286IHsNCiAgICAgICAgIi5wb3B1cC1oZWFkIjogIlx1YWNiZFx1YWNlMCIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJXZWIgb2YgVHJ1c1x1YzVkMCBcdWI1MzBcdWI5NzRcdWJhNzQsIFx1Yzc3NCBcdWM2ZjlcdWMwYWNcdWM3NzRcdWQyYjhcdWIyOTQgXHVkM2M5XHVkMzEwXHVjNzc0IFx1Yzg4Ylx1YzljMCBcdWM1NGFcdWMyYjVcdWIyYzhcdWIyZTQuIiwNCiAgICAgICAgIiNiYWNrIjogIlx1Yzc3NFx1YzgwNCIsDQogICAgICAgICIjb3BlbiI6ICJcdWMwYWNcdWM3NzRcdWQyYjggXHViYzI5XHViYjM4IiwNCiAgICAgICAgIiNzaXRlLXJlcG9ydCI6ICJcdWM3OTBcdWMxMzhcdWQ1NWMgXHViMGI0XHVjNmE5XHVhY2ZjIFx1Y2Y1NFx1YmE1OFx1ZDJiOCBcdWJjZjRcdWFlMzAiLA0KICAgICAgICAiLnBvcHVwLXJldmlld3NfaGVhZCI6ICJcdWMwYWNcdWM2YTlcdWM3OTBcdWI0ZTRcdWM3NzQgXHVkNjU1XHVjNzc4XHVkNTVjIFx1Yzc3NFx1YzI4ODoiLA0KICAgICAgICAiMTAxIjogIlx1YmE0MFx1YzZlOFx1YzViNCBcdWI2MTBcdWIyOTQgXHViYzE0XHVjNzc0XHViN2VjXHVjMmE0IiwNCiAgICAgICAgIjEwMiI6ICJcdWFjYjBcdWQ1NjhcdWM3ODhcdWIyOTQgXHVjMGFjXHVjNmE5XHVjNzkwIFx1YWNiZFx1ZDVkOCIsDQogICAgICAgICIxMDMiOiAiXHVkNTNjXHVjMmYxIiwNCiAgICAgICAgIjEwNCI6ICJcdWMwYWNcdWFlMzAiLA0KICAgICAgICAiMTA1IjogIlx1YmQ4OFx1YmM5NSIsDQogICAgICAgICIyMDEiOiAiXHVkNjA0XHVkNjM5XHVkNTU4XHVhYzcwXHViMDk4IFx1YmU0NFx1YzcyNFx1YjlhY1x1YzgwMSIsDQogICAgICAgICIyMDIiOiAiXHVhYzFjXHVjNzc4XHVjODE1XHViY2Y0IFx1YzcwNFx1ZDVkOCIsDQogICAgICAgICIyMDMiOiAiXHVjMjE4XHVjMGMxXHVkNTVjIiwNCiAgICAgICAgIjIwNCI6ICJcdWQ2MTBcdWM2MjQsIFx1Yzc3OFx1Yzg4NVx1Y2MyOFx1YmNjNCIsDQogICAgICAgICIyMDUiOiAiXHVjMmE0XHVkMzM4IiwNCiAgICAgICAgIjIwNiI6ICJcdWM3YTBcdWM3YWNcdWM4MDBcdWM3NzggXHVjNmQwXHVkNTU4XHVjOWMwIFx1YzU0YVx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTgiLA0KICAgICAgICAiMjA3IjogIlx1YWQxMVx1YWNlMCBcLyBcdWQzMWRcdWM1YzUiLA0KICAgICAgICAiMzAxIjogIlx1YzYyOFx1Yjc3Y1x1Yzc3OCBcdWNkOTRcdWM4MDEiLA0KICAgICAgICAiMzAyIjogIlx1YmIzY1x1Yzc1OFx1Yjk3YyBcdWM3N2NcdWM3M2NcdWQwYTRcdWIyOTQgXHVjNTdkXHViYjNjIiwNCiAgICAgICAgIjMwMyI6ICJcdWFjMWNcdWM3NzhcdWM4MDEgXHVjNzU4XHVhY2FjLCBcdWM4ODVcdWFkNTAsIFx1YzgxNVx1Y2U1OCIsDQogICAgICAgICIzMDQiOiAiXHVhZTMwXHVkMGMwIiwNCiAgICAgICAgIjQwMSI6ICJcdWMxMzFcdWM3NzhcdWJiM2MiLA0KICAgICAgICAiNDAyIjogIlx1YzgwMVx1YjA5OFx1Yjc3Y1x1ZDU1YyBcdWIxNzhcdWNkOWMiLA0KICAgICAgICAiNDAzIjogIlx1YzE4Y1x1Yjk4NFx1YjA3Y1x1Y2U1OFx1YWNlMCBcdWNkYTlcdWFjYTlcdWM4MDEiLA0KICAgICAgICAiNDA0IjogIlx1YzU0NFx1YjNkOVx1YzZhOSBcdWMwYWNcdWM3NzRcdWQyYjgiLA0KICAgICAgICAiNTAxIjogIlx1Yzg4Ylx1Yzc0MCBcdWMwYWNcdWM3NzRcdWQyYjgiDQogICAgfSwNCiAgICBzazp7DQogICAgICAgICIucG9wdXAtaGVhZCI6ICJWYXJvdmFuaWUiLA0KICAgICAgICAiLnBvcHVwLWF0dGVudGlvbi1tc2ciOiAiVFx1MDBlMXRvIHdlYm92XHUwMGUxIHN0clx1MDBlMW5rYSBtXHUwMGUxIHBvZFx1MDEzZWEgV09UIHpsXHUwMGZhIHJlcHV0XHUwMGUxY2l1LiIsDQogICAgICAgICIjYmFjayI6ICJEb3phZHUiLA0KICAgICAgICAiI29wZW4iOiAiUHJlanNcdTAxNjUgbmEgc3RyXHUwMGUxbmt1IiwNCiAgICAgICAgIiNzaXRlLXJlcG9ydCI6ICJQb3pyaWVcdTAxNjUgcG9kcm9ibm9zdGkgYSBrb21lbnRcdTAwZTFyZSIsDQogICAgICAgICIucG9wdXAtcmV2aWV3c19oZWFkIjogIlBvdVx1MDE3ZVx1MDBlZHZhdGVcdTAxM2VhIG5hXHUwMTYxbGkgbmFzbGVkdWpcdTAwZmFjZSBwcm9ibFx1MDBlOW15OiIsDQogICAgICAgICIxMDEiOiAiXHUwMTYwa29kbGl2XHUwMGZkIGtcdTAwZjNkIGFsZWJvIHZcdTAwZWRydXN5IiwNCiAgICAgICAgIjEwMiI6ICJabFx1MDBlMSBwb3VcdTAxN2VcdTAwZWR2YXRlXHUwMTNlc2tcdTAwZTEgc2tcdTAwZmFzZW5vc1x1MDE2NSIsDQogICAgICAgICIxMDMiOiAiS3JcdTAwZTFkZVx1MDE3ZSBpZGVudGl0eSIsDQogICAgICAgICIxMDQiOiAiUG9kdm9kIiwNCiAgICAgICAgIjEwNSI6ICJQb3RlbmNpXHUwMGUxbG5lIGlsZWdcdTAwZTFsbmUiLA0KICAgICAgICAiMjAxIjogIlphdlx1MDBlMWR6YWpcdTAwZmFjZSB0dnJkZW5pYSBhbGVibyBwb3J1XHUwMTYxZW5pZSBldGlreSIsDQogICAgICAgICIyMDIiOiAiT2hyb3plbmllIHNcdTAwZmFrcm9taWEiLA0KICAgICAgICAiMjAzIjogIlBvZG96cml2XHUwMGU5IiwNCiAgICAgICAgIjIwNCI6ICJOZW5cdTAwZTF2aXNcdTAxNjUsIGRpc2tyaW1pblx1MDBlMWNpYSIsDQogICAgICAgICIyMDUiOiAiU1BBTSIsDQogICAgICAgICIyMDYiOiAiUG90ZW5jaVx1MDBlMWxuZSBuZVx1MDE3ZWlhZHVjZSBwcm9ncmFteSIsDQogICAgICAgICIyMDciOiAiUmVrbGFteSBcLyB2eXNrYWtvdmFjaWUgb2tuXHUwMGUxIiwNCiAgICAgICAgIjMwMSI6ICJPbmxpbmUgc2xlZG92YW5pZSIsDQogICAgICAgICIzMDIiOiAiQWx0ZXJuYXRcdTAwZWR2bmUgYWxlYm8ga29udHJhdmVyem5cdTAwZTkgbGllXHUwMTBkaXRlXHUwMTNlc3R2byIsDQogICAgICAgICIzMDMiOiAiTlx1MDBlMXpvcnksIG5cdTAwZTFib1x1MDE3ZWVuc3R2bywgcG9saXRpa2EiLA0KICAgICAgICAiMzA0IjogIkluXHUwMGU5IiwNCiAgICAgICAgIjQwMSI6ICJPYnNhaCBwcmUgZG9zcGVsXHUwMGZkY2giLA0KICAgICAgICAiNDAyIjogIk5cdTAwZTFob2RuXHUwMGUxIG5haG90YSIsDQogICAgICAgICI0MDMiOiAiS3J1dG9zXHUwMTY1IGFsZWJvIFx1MDE2MWthbmRcdTAwZTFsbm9zXHUwMTY1IiwNCiAgICAgICAgIjQwNCI6ICJTdHJcdTAwZTFua2EgcHJlIGRldGkiLA0KICAgICAgICAiNTAxIjogIkRvYnJcdTAwZTEgc3RyXHUwMGUxbmthIg0KICAgIH0sDQogICAgaXQ6ew0KICAgICAgICAiLnBvcHVwLWhlYWQiOiAiQXZ2ZXJ0aW1lbnRvIiwNCiAgICAgICAgIi5wb3B1cC1hdHRlbnRpb24tbXNnIjogIlF1ZXN0byBzaXRvIGludGVybmV0IGhhIHVuYSBzY2Fyc2EgcmVwdXRhemlvbmUgc2Vjb25kbyBXZWIgb2YgVHJ1c3QuIiwNCiAgICAgICAgIiNiYWNrIjogIlRvcm5hIGluZGlldHJvIiwNCiAgICAgICAgIiNvcGVuIjogIlZhaSBhbCBzaXRvIiwNCiAgICAgICAgIiNzaXRlLXJlcG9ydCI6ICJWaXN1YWxpenphIGRldHRhZ2xpIGUgY29tbWVudGkiLA0KICAgICAgICAiLnBvcHVwLXJldmlld3NfaGVhZCI6ICJHbGkgdXRlbnRpIGhhbm5vIGlkZW50aWZpY2F0byBpIHNlZ3VlbnRpIHByb2JsZW1pOiIsDQogICAgICAgICIxMDEiOiAiTWFsd2FyZSBvIHZpcnVzIiwNCiAgICAgICAgIjEwMiI6ICJTY2Fyc2EgZXNwZXJpZW56YSBkZWwgY2xpZW50ZSIsDQogICAgICAgICIxMDMiOiAiUGhpc2hpbmciLA0KICAgICAgICAiMTA0IjogIlNjYW0iLA0KICAgICAgICAiMTA1IjogIlBvdGVuemlhbG1lbnRlIGlsbGVnYWxlIiwNCiAgICAgICAgIjIwMSI6ICJJbmRpY2F6aW9uaSBmdW9ydmlhbnRpIG8gbm9uIGV0aWNvIiwNCiAgICAgICAgIjIwMiI6ICJSaXNjaGkgcGVyIGxhIHByaXZhY3kiLA0KICAgICAgICAiMjAzIjogIlNvc3BldHRvIiwNCiAgICAgICAgIjIwNCI6ICJPZGlvLCBkaXNjcmltaW5hemlvbmUiLA0KICAgICAgICAiMjA1IjogIlNwYW0iLA0KICAgICAgICAiMjA2IjogIlByb2dyYW1taSBwb3RlbnppYWxtZW50ZSBpbmRlc2lkZXJhdGkiLA0KICAgICAgICAiMjA3IjogIkFubnVuY2kgXC8gcG9wLXVwIiwNCiAgICAgICAgIjMwMSI6ICJUcmFjY2lhbWVudG8gb25saW5lIiwNCiAgICAgICAgIjMwMiI6ICJNZWRpY2luYSBhbHRlcm5hdGl2YSBvIGNvbnRyb3ZlcnNhIiwNCiAgICAgICAgIjMwMyI6ICJPcGluaW9uaSwgcmVsaWdpb25lLCBwb2xpdGljYSIsDQogICAgICAgICIzMDQiOiAiQWx0cm8iLA0KICAgICAgICAiNDAxIjogIkNvbnRlbnV0byBwZXIgYWR1bHRpIiwNCiAgICAgICAgIjQwMiI6ICJOdWRpdFx1MDBlMCBjYXN1YWxlIiwNCiAgICAgICAgIjQwMyI6ICJSYWNjYXByaWNjaWFudGUgbyBzY2lvY2NhbnRlICIsDQogICAgICAgICI0MDQiOiAiU2l0byBwZXIgYmFtYmluaSIsDQogICAgICAgICI1MDEiOiAiQnVvbiBzaXRvIg0KICAgIH0sDQogICAgZnI6ew0KICAgICAgICAiLnBvcHVwLWhlYWQiOiAiQXZlcnRpc3NlbWVudCIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJDZSBzaXRlIHdlYiBhIHVuZSBtYXV2YWlzZSByXHUwMGU5cHV0YXRpb24gc2Vsb24gV2ViIG9mIFRydXN0LiIsDQogICAgICAgICIjYmFjayI6ICJSZXRvdXJuZXIiLA0KICAgICAgICAiI29wZW4iOiAiQWxsZXIgYXUgc2l0ZSIsDQogICAgICAgICIjc2l0ZS1yZXBvcnQiOiAiQWZmaWNoZXIgbGVzIGRcdTAwZTl0YWlscyBldCBsZXMgY29tbWVudGFpcmVzIiwNCiAgICAgICAgIi5wb3B1cC1yZXZpZXdzX2hlYWQiOiAiTGVzIHV0aWxpc2F0ZXVycyBvbnQgaWRlbnRpZmlcdTAwZTkgbGVzIHByb2JsXHUwMGU4bWVzIHN1aXZhbnRzOiIsDQogICAgICAgICIxMDEiOiAiUHJvZ3JhbW1lIG1hbHZlaWxsYW50IG91IHZpcnVzIiwNCiAgICAgICAgIjEwMiI6ICJNYXV2YWlzZSBleHBcdTAwZTlyaWVuY2UgY2xpZW50IiwNCiAgICAgICAgIjEwMyI6ICJIYW1lXHUwMGU3b25uYWdlIiwNCiAgICAgICAgIjEwNCI6ICJBcm5hcXVlIiwNCiAgICAgICAgIjEwNSI6ICJQb3RlbnRpZWxsZW1lbnQgaWxsXHUwMGU5Z2FsIiwNCiAgICAgICAgIjIwMSI6ICJBbGxcdTAwZTlnYXRpb25zIHRyb21wZXVzZXMgb3UgY29udHJhaXJlcyBcdTAwZTAgbCdcdTAwZTl0aGlxdWUiLA0KICAgICAgICAiMjAyIjogIlJpc3F1ZXMgZGUgY29uZmlkZW50aWFsaXRcdTAwZTkiLA0KICAgICAgICAiMjAzIjogIlN1c3BlY3QiLA0KICAgICAgICAiMjA0IjogIkhhaW5lLCBkaXNjcmltaW5hdGlvbiIsDQogICAgICAgICIyMDUiOiAiU3BhbSIsDQogICAgICAgICIyMDYiOiAiUHJvZ3JhbW1lcyBwb3RlbnRpZWxsZW1lbnQgaW5kXHUwMGU5c2lyYWJsZXMiLA0KICAgICAgICAiMjA3IjogIkFubm9uY2VzIFwvIHBvcC11cHMiLA0KICAgICAgICAiMzAxIjogIlN1aXZpIGVuIGxpZ25lIiwNCiAgICAgICAgIjMwMiI6ICJSZW1cdTAwZThkZSBhbHRlcm5hdGlmIG91IGNvbnRyb3ZlcnNcdTAwZTkiLA0KICAgICAgICAiMzAzIjogIk9waW5pb25zLCByZWxpZ2lvbnMsIHBvbGl0aXF1ZXMiLA0KICAgICAgICAiMzA0IjogIkF1dHJlIiwNCiAgICAgICAgIjQwMSI6ICJDb250ZW51IHBvdXIgYWR1bHRlIiwNCiAgICAgICAgIjQwMiI6ICJOdWRpdFx1MDBlOSBhY2NpZGVudGVsbGUiLA0KICAgICAgICAiNDAzIjogIkhvcnJpYmxlIG91IGNob3F1YW50IiwNCiAgICAgICAgIjQwNCI6ICJTaXRlIHBvdXIgZW5mYW50cyIsDQogICAgICAgICI1MDEiOiAiQm9uIHNpdGUiDQogICAgfSwNCiAgICB2aTp7DQogICAgICAgICIucG9wdXAtaGVhZCI6ICJDXHUxZWEzbmggYlx1MDBlMW8iLA0KICAgICAgICAiLnBvcHVwLWF0dGVudGlvbi1tc2ciOiAiV2Vic2l0ZSBuXHUwMGUweSBjXHUwMGYzIGRhbmggdGlcdTFlYmZuZyB0aFx1MWVhNXAgZFx1MWVmMWEgdGhlbyBXZWIgb2YgVHJ1c3QuIiwNCiAgICAgICAgIiNiYWNrIjogIlF1YXkgbFx1MWVhMWkiLA0KICAgICAgICAiI29wZW4iOiAiVHJ1eSBjXHUxZWFkcCB0cmFuZyIsDQogICAgICAgICIjc2l0ZS1yZXBvcnQiOiAiWGVtIGNoaSB0aVx1MWViZnQgdlx1MDBlMCBiXHUwMGVjbmggbHVcdTFlYWRuIiwNCiAgICAgICAgIi5wb3B1cC1yZXZpZXdzX2hlYWQiOiAiTmdcdTAxYjBcdTFlZGRpIGRcdTAwZjluZyBcdTAxMTFcdTAwZTMgeFx1MDBlMWMgXHUwMTExXHUxZWNibmggbmhcdTFlZWZuZyB2XHUxZWE1biBcdTAxMTFcdTFlYzEgc2F1OiIsDQogICAgICAgICIxMDEiOiAiUGhcdTFlYTduIG1cdTFlYzFtIFx1MDExMVx1MWVkOWMgaFx1MWVhMWkgaG9cdTFlYjdjIHZpcnVzIiwNCiAgICAgICAgIjEwMiI6ICJUclx1MWVhM2kgbmdoaVx1MWVjN20ga2hcdTAwZTFjaCBoXHUwMGUwbmcgdGhcdTFlYTVwIiwNCiAgICAgICAgIjEwMyI6ICJMXHUxZWViYSBcdTAxMTFcdTFlYTNvIiwNCiAgICAgICAgIjEwNCI6ICJHaWFuIGxcdTFlYWRuIiwNCiAgICAgICAgIjEwNSI6ICJDXHUwMGYzIHRoXHUxZWMzIGxcdTAwZTAgYlx1MWVhNXQgaFx1MWVlM3AgcGhcdTAwZTFwIiwNCiAgICAgICAgIjIwMSI6ICJUdXlcdTAwZWFuIGJcdTFlZDEgZ1x1MDBlMnkgbmhcdTFlYTdtIGxcdTFlYWJuIGhvXHUxZWI3YyB2XHUwMGY0IFx1MDExMVx1MWVhMW8gXHUwMTExXHUxZWU5YyIsDQogICAgICAgICIyMDIiOiAiQ1x1MDBmMyByXHUxZWU3aSBybyByaVx1MDBlYW5nIHRcdTAxYjAiLA0KICAgICAgICAiMjAzIjogIk5naGkgbmdcdTFlZGQiLA0KICAgICAgICAiMjA0IjogIlRoXHUwMGY5IGdoXHUwMGU5dCwgcGhcdTAwZTJuIGJpXHUxZWM3dCBcdTAxMTFcdTFlZDFpIHhcdTFlZWQiLA0KICAgICAgICAiMjA1IjogIlNwYW0iLA0KICAgICAgICAiMjA2IjogIkNcdTAwZjMgY2hcdTAxYjBcdTAxYTFuZyB0clx1MDBlY25oIGNcdTAwZjMgdGhcdTFlYzMga2hcdTAwZjRuZyBtb25nIG11XHUxZWQxbiIsDQogICAgICAgICIyMDciOiAiUXVcdTFlYTNuZyBjXHUwMGUxbyBcLyBwb3B1cCIsDQogICAgICAgICIzMDEiOiAiVGhlbyBkXHUwMGY1aSB0clx1MWVmMWMgdHV5dWVlbnMiLA0KICAgICAgICAiMzAyIjogIlRodVx1MWVkMWMgdGhheSB0aFx1MWViZiBob1x1MWViN2MgZ1x1MDBlMnkgdHJhbmggY1x1MDBlM2kiLA0KICAgICAgICAiMzAzIjogIlx1MDBkZCBraVx1MWViZm4sIHRcdTAwZjRuIGdpXHUwMGUxbywgY2hcdTAwZWRuaCB0clx1MWVjYiIsDQogICAgICAgICIzMDQiOiAiS2hcdTAwZTFjIiwNCiAgICAgICAgIjQwMSI6ICJOXHUxZWQ5aSBkdW5nIG5nXHUwMWIwXHUxZWRkaSBsXHUxZWRibiIsDQogICAgICAgICI0MDIiOiAiXHUxZWEybmgga2hvXHUxZWEzIHRoXHUwMGUybiBuZ1x1MWVhYnUgbmhpXHUwMGVhbiIsDQogICAgICAgICI0MDMiOiAiS2hcdTFlZTduZyBraGlcdTFlYmZwIGhvXHUxZWI3YyBnXHUwMGUyeSBzXHUxZWQxYyIsDQogICAgICAgICI0MDQiOiAiVHJhbmcgY2hvIHRyXHUxZWJiIGNvbiIsDQogICAgICAgICI1MDEiOiAiVHJhbmcgdFx1MWVkMXQiDQogICAgfSwNCiAgICBwdDp7DQogICAgICAgICIucG9wdXAtaGVhZCI6ICJBdmlzbyIsDQogICAgICAgICIucG9wdXAtYXR0ZW50aW9uLW1zZyI6ICJFc3RlIHNpdGUgdGVtIG1cdTAwZTEgcmVwdXRhXHUwMGU3XHUwMGUzbyBkZSBhY29yZG8gY29tIGEgV2ViIG9mIFRydXN0LiIsDQogICAgICAgICIjYmFjayI6ICJWb2x0YXIiLA0KICAgICAgICAiI29wZW4iOiAiSXIgcGFyYSBvIHNpdGUiLA0KICAgICAgICAiI3NpdGUtcmVwb3J0IjogIlZlciBkZXRhbGhlcyBlIGNvbWVudFx1MDBlMXJpb3MiLA0KICAgICAgICAiLnBvcHVwLXJldmlld3NfaGVhZCI6ICJVc3VcdTAwZTFyaW9zIGlkZW50aWZpY2FyYW0gb3Mgc2VndWludGVzIHByb2JsZW1hczoiLA0KICAgICAgICAiMTAxIjogIk1hbHdhcmUgb3Ugdlx1MDBlZHJ1cyIsDQogICAgICAgICIxMDIiOiAiTVx1MDBlMSBleHBlcmlcdTAwZWFuY2lhIGNvbW8gY2xpZW50ZSIsDQogICAgICAgICIxMDMiOiAiUGhpc2hpbmciLA0KICAgICAgICAiMTA0IjogIkdvbHBlIiwNCiAgICAgICAgIjEwNSI6ICJQb3RlbmNpYWxtZW50ZSBpbGVnYWwiLA0KICAgICAgICAiMjAxIjogIkRlY2xhcmFcdTAwZTdcdTAwZjVlcyBlbmdhbm9zYXMgb3UgYW50aS1cdTAwZTl0aWNvIiwNCiAgICAgICAgIjIwMiI6ICJSaXNjb3MgZGUgcHJpdmFjaWRhZGUiLA0KICAgICAgICAiMjAzIjogIlN1c3BlaXRvIiwNCiAgICAgICAgIjIwNCI6ICJcdTAwZDNkaW8sIGRpc2NyaW1pbmFcdTAwZTdcdTAwZTNvIiwNCiAgICAgICAgIjIwNSI6ICJTcGFtIiwNCiAgICAgICAgIjIwNiI6ICJQcm9ncmFtYXMgcG90ZW5jaWFsbWVudGUgaW5kZXNlamFkb3MiLA0KICAgICAgICAiMjA3IjogIkFuXHUwMGZhbmNpb3MgXC8gcG9wLXVwcyIsDQogICAgICAgICIzMDEiOiAiUmFzdHJlYW1lbnRvIG9ubGluZSIsDQogICAgICAgICIzMDIiOiAiTWVkaWNpbmEgYWx0ZXJuYXRpdmEgb3UgY29udHJvdmVyc2EiLA0KICAgICAgICAiMzAzIjogIk9waW5pXHUwMGY1ZXMsIHJlbGlnaVx1MDBlM28sIHBvbFx1MDBlZHRpY2EiLA0KICAgICAgICAiMzA0IjogIk91dHJvIiwNCiAgICAgICAgIjQwMSI6ICJDb250ZVx1MDBmYWRvIGFkdWx0byIsDQogICAgICAgICI0MDIiOiAiTnVkZXogYWNpZGVudGFsIiwNCiAgICAgICAgIjQwMyI6ICJNYWNhYnJvIG91IGNob2NhbnRlIiwNCiAgICAgICAgIjQwNCI6ICJTaXRlIHBhcmEgY3JpYW5cdTAwZTdhcyIsDQogICAgICAgICI1MDEiOiAiQm9tIHNpdGUiDQogICAgfQ0KfTsNCg0KLyoqDQogKiBHZXRzIGxvY2FsaXphdGlvbiBieSBsYW5ndWFnZSBuYW1lDQogKi8NCnZhciBnZXRMb2NhbGUgPSBmdW5jdGlvbihsYW5ndWFnZSkgew0KICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NhbGl6YXRpb25zW2xhbmd1YWdlXTsNCiAgICBpZiAobG9jYWxpemF0aW9uKSB7DQogICAgICAgIHJldHVybiBsb2NhbGl6YXRpb247DQogICAgfQ0KICAgIGlmIChsYW5ndWFnZS5pbmRleE9mKCctJykgPiAwKSB7DQogICAgICAgIGxhbmd1YWdlID0gbGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTsNCiAgICB9DQogICAgbG9jYWxpemF0aW9uID0gbG9jYWxpemF0aW9uc1tsYW5ndWFnZV0gfHwgbG9jYWxpemF0aW9ucy5lbjsNCiAgICByZXR1cm4gbG9jYWxpemF0aW9uOw0KfTsNCg0KdmFyIG1haW4gPSBmdW5jdGlvbiAoKSB7DQoNCiAgICB2YXIgbG9jYWxpemF0aW9uID0gZ2V0TG9jYWxlKEFkZ3VhcmRTZXR0aW5ncy5sb2NhbGUpOw0KDQogICAgZm9yICh2YXIgaXRlbSBpbiBsb2NhbGl6YXRpb24pIHsNCiAgICAgICAgaWYgKGxvY2FsaXphdGlvbi5oYXNPd25Qcm9wZXJ0eShpdGVtKSkgew0KICAgICAgICAgICAgJChpdGVtKS50ZXh0KGxvY2FsaXphdGlvbltpdGVtXSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2YXIgZ2V0Q29uZmlkZW5jZUNsYXNzID0gZnVuY3Rpb24gKGNvbmZpZGVuY2UpIHsNCiAgICAgICAgaWYgKGNvbmZpZGVuY2UgPD0gMTApIHJldHVybiAncmV2aWV3LW5vLWNvbmZpZGVuY2UnOw0KICAgICAgICBpZiAoY29uZmlkZW5jZSA8PSAyMCkgcmV0dXJuICdyZXZpZXctbG93LWNvbmZpZGVuY2UnOw0KICAgICAgICBpZiAoY29uZmlkZW5jZSA8PSA0MCkgcmV0dXJuICdyZXZpZXctbWVkaXVtLWNvbmZpZGVuY2UnOw0KICAgICAgICBpZiAoY29uZmlkZW5jZSA+IDQwKSByZXR1cm4gJ3Jldmlldy1oaWdoLWNvbmZpZGVuY2UnOw0KICAgIH07DQoNCiAgICB2YXIgZ2V0SWNvbkNsYXNzQnlDYXRlZ29yeSA9IGZ1bmN0aW9uIChjYXRlZ29yeSkgew0KICAgICAgICB2YXIgaW50Q2F0ZWdvcnkgPSBwYXJzZUludChjYXRlZ29yeSk7DQogICAgICAgIGlmIChpbnRDYXRlZ29yeSA+PSAxMDEgJiYgaW50Q2F0ZWdvcnkgPD0gMTA1KSByZXR1cm4gJ2ljb24tY3Jvc3MtcmVkJzsNCiAgICAgICAgaWYgKGludENhdGVnb3J5ID49IDIwMSAmJiBpbnRDYXRlZ29yeSA8PSAyMDcpIHJldHVybiAnaWNvbi1jcm9zcy15ZWxsb3cnOw0KICAgICAgICBpZiAoaW50Q2F0ZWdvcnkgPj0gMzAxICYmIGludENhdGVnb3J5IDw9IDMwNCkgcmV0dXJuICdpY29uLWNyb3NzLWdyZXknOw0KICAgICAgICBpZiAoaW50Q2F0ZWdvcnkgPT0gNDA0IHx8IGludENhdGVnb3J5ID09IDUwMSkgcmV0dXJuICdpY29uLWNyb3NzLWdyZWVuJzsNCiAgICAgICAgaWYgKGludENhdGVnb3J5ID09IDQwMSkgcmV0dXJuICdpY29uLWNyb3NzLXJlZCc7DQogICAgICAgIGlmIChpbnRDYXRlZ29yeSA9PSA0MDIgfHwgaW50Q2F0ZWdvcnkgPT0gNDAzKSByZXR1cm4gJ2ljb24tY3Jvc3MteWVsbG93JzsNCiAgICB9Ow0KDQogICAgJCgnLnBvcHVwLXNpdGUtbmFtZScpLnRleHQoRG9tYWluTmFtZSk7DQogICAgJCgnI3NpdGUtcmVwb3J0JykuYXR0cigiaHJlZiIsICJodHRwOi8vYWRndWFyZC5jb20vd290LXNjb3JlY2FyZC5odG1sP2RvbWFpbj0iICsgRG9tYWluTmFtZSkuYXR0cigndGFyZ2V0JywgJ19ibGFuaycpOw0KICAgIHZhciBvcmRlcmVkQ2F0ZWdvcmllcyA9IFtdOw0KICAgIGlmIChXb3REYXRhLmNhdGVnb3JpZXMpIHsNCiAgICAgICAgZm9yICh2YXIgY2F0IGluIFdvdERhdGEuY2F0ZWdvcmllcykgew0KICAgICAgICAgICAgaWYgKCFXb3REYXRhLmNhdGVnb3JpZXMuaGFzT3duUHJvcGVydHkoY2F0KSkgY29udGludWU7DQogICAgICAgICAgICBpZiAoIWxvY2FsaXphdGlvbi5oYXNPd25Qcm9wZXJ0eShjYXQpKSBjb250aW51ZTsNCiAgICAgICAgICAgIG9yZGVyZWRDYXRlZ29yaWVzLnB1c2goe25hbWU6IGNhdCwgdmFsdWU6IFdvdERhdGEuY2F0ZWdvcmllc1tjYXRdfSk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKG9yZGVyZWRDYXRlZ29yaWVzLmxlbmd0aCA9PT0gMCkgew0KICAgICAgICAkKCcucG9wdXAtcmV2aWV3cycpLmhpZGUoKTsNCiAgICB9DQogICAgDQogICAgb3JkZXJlZENhdGVnb3JpZXMuc29ydChmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICBpZiAoYS52YWx1ZSA+IGIudmFsdWUpIHJldHVybiAxOw0KICAgICAgICBpZiAoYS52YWx1ZSA8IGIudmFsdWUpIHJldHVybiAtMTsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfSkucmV2ZXJzZSgpOw0KICAgIA0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJlZENhdGVnb3JpZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgdmFyIGNhdGVnb3J5ID0gb3JkZXJlZENhdGVnb3JpZXNbaV07DQogICAgICAgIHZhciBjb25maWRlbmNlID0gY2F0ZWdvcnkudmFsdWU7DQogICAgICAgIHZhciB3cmFwcGVyID0gJCgnPGRpdiAvPicpLmFkZENsYXNzKCdwb3B1cC1yZXZpZXdzX2knKS5hZGRDbGFzcyhnZXRDb25maWRlbmNlQ2xhc3MoY29uZmlkZW5jZSkpLmFwcGVuZFRvKCcucG9wdXAtcmV2aWV3c19saXN0Jyk7DQogICAgICAgIHZhciBpY29uID0gJCgnPGRpdiAvPicpLmFkZENsYXNzKCdwb3B1cC1yZXZpZXdzX2ljb24nKS5hcHBlbmRUbyh3cmFwcGVyKTsNCiAgICAgICAgdmFyIGlubmVySWNvblNwYW4gPSAkKCc8c3BhbiAvPicpLmFkZENsYXNzKGdldEljb25DbGFzc0J5Q2F0ZWdvcnkob3JkZXJlZENhdGVnb3JpZXNbaV0ubmFtZSkpLmFwcGVuZFRvKGljb24pOw0KICAgICAgICB2YXIgdGV4dCA9ICQoJzxkaXYgLz4nKS5hZGRDbGFzcygncG9wdXAtcmV2aWV3c190ZXh0JykudGV4dChsb2NhbGl6YXRpb25bb3JkZXJlZENhdGVnb3JpZXNbaV0ubmFtZV0pLmFwcGVuZFRvKHdyYXBwZXIpOw0KICAgIH0NCiAgICAkKCcjYmFjaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKFBvc3RNZXNzYWdlRXZlbnQpIHsNCiAgICAgICAgICAgIFBvc3RNZXNzYWdlRXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdBbGVydF9CYWNrJywgUG9zdE1lc3NhZ2VFdmVudC5vcmlnaW4pOw0KICAgICAgICB9DQogICAgfSk7DQogICAgJCgnI29wZW4nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmIChQb3N0TWVzc2FnZUV2ZW50KSB7DQogICAgICAgICAgICBQb3N0TWVzc2FnZUV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnQWxlcnRfSWdub3JlJywgUG9zdE1lc3NhZ2VFdmVudC5vcmlnaW4pOw0KICAgICAgICB9DQogICAgfSk7DQp9Ow0Kd2luZG93Lm9ubG9hZCA9IG1haW47', 'alertTemplate': 'PGJvZHk+DQo8ZGl2IGNsYXNzPSJwb3B1cC1jb250YWluZXIiPg0KICAgIDxkaXYgY2xhc3M9InBvcHVwLWFkZ3VhcmQtaWNvbiI+PHNwYW4gY2xhc3M9Imljb24tYWRndWFyZCI+PC9zcGFuPjwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0icG9wdXAtaGVhZCI+PC9kaXY+DQoNCiAgICA8ZGl2IGNsYXNzPSJwb3B1cC1pY29uIj48c3BhbiBjbGFzcz0iaWNvbi10aGllZiI+PC9zcGFuPjwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0icG9wdXAtYXR0ZW50aW9uLW1zZyI+PC9kaXY+DQoNCiAgICA8ZGl2IGNsYXNzPSJwb3B1cC1zaXRlLW5hbWUiPjwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0icG9wdXAtYWN0aW9uIj4NCiAgICAgICAgPGEgaHJlZj0iIyIgaWQ9ImJhY2siIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiPjwvYT4NCiAgICAgICAgPGEgaHJlZj0iIyIgaWQ9Im9wZW4iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiPjwvYT4NCiAgICA8L2Rpdj4NCg0KICAgIDxkaXYgY2xhc3M9InBvcHVwLXJlcG9ydC1saW5rIj4NCiAgICAgICAgPGEgaWQ9InNpdGUtcmVwb3J0IiBocmVmPSIjIj48L2E+DQogICAgPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBvcHVwLXJldmlld3MiPg0KICAgIDxkaXYgY2xhc3M9InBvcHVwLXJldmlld3NfaGVhZCI+PC9kaXY+DQogICAgPGRpdiBjbGFzcz0icG9wdXAtcmV2aWV3c19saXN0Ij48L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0K'}; (function() { (function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0} function ut(e){return!e||(!e.parentNode||e.parentNode.nodeType===11)}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t= ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document, Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u< a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&(e.charAt(e.length-1)===">"&&e.length>=3)?s=[null,e,null]:s=w.exec(e); if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&(v.isPlainObject(n)&&this.attr.call(e,n,!0)),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context), v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e), this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r, i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&(!v.isFunction(u)&&(u={})),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&& isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||(v.type(e)!=="object"||(e.nodeType||v.isWindow(e))))return!1;try{if(e.constructor&&(!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf")))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e);},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"? null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser? (i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||(!r.documentElement||r.getElementsByTagName("parsererror").length))&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&(g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t))},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}, each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r)if(u)for(i in e){if(n.apply(e[i],r)===!1)break}else for(;s0&&(e[0]&&e[a-1])||(a===0||v.isArray(e))));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&((!r||f)&&(i?f.push(t):l(t))),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}}; return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)? e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(), o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
a", n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||(!r||!n.length))return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity), cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked, s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&(p.attachEvent&&(p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)))),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone= a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
t
",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML= "",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0, object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||(!l[c]||!i&&!l[c].data))&&(a&&r===t))return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data= v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this, e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&(s&&s.empty.fire())},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e, t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))}); if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass": "removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&("get"in n&&(r=n.get(s,"value"))!==t)?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||(!("set"in n)||n.set(this,s,"value")===t))this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t= e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||(a===3||(a===8||a===2)))return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&("set"in o&&(u&&(s=o.set(e,r,n))!==t))?s:(e.setAttribute(n,r+""),r)}return o&&("get"in o&&(u&&(s= o.get(e,n))!==null))?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})}); var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||(e.nodeType===8||(!n||(!r||!(o=v._data(e))))))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle= u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y), n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&(u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0));return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&(!p.noBubble&&!v.isWindow(s))){g=p.delegateType|| y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||(c.parentWindow||e),g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1])if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else{if(t.ownerDocument&& ((s=t.ownerDocument.getElementById(f))&&(u(t,s)&&s.id===f)))return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&(Z&&t.getElementsByClassName))return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t= +t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&& ((!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r));if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset= !0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c)))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l= at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u, a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&(!m[w]&&(m[w]=E.call(l)));m=lt(m)}S.apply(l,m),T&&(!u&&(m.length>0&&(y+t.length>1&&nt.uniqueSort(l))))}return T&&(b=k,c=N),x};return o.el=0,r?N(o): o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&((f=u[0]).type==="ID"&&(t.nodeType===9&&(!s&&i.relative[u[1].type])))){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode|| t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+ "+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+ O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&(typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#")}),Y=K(function(e){e.innerHTML=""; var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+ 0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i)if(i===1||(i===9||i===11)){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else{if(i===3||i===4)return e.nodeValue}else for(;t= e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&(r.nodeType===1&&(n.contains&&n.contains(r))))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()), (n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e); return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}}, relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||(e[5]||"")).replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t, n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&((n=ut(t,!0))&&((n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)))),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($, "").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||(typeof e.getAttribute!==p&&e.getAttribute("class")||""))})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t=== "~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case "only":case "first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case "last":while(n=n.nextSibling)if(n.nodeType===1)return!1; return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||(i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e));return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e, i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||(t.innerText||s(t))).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)}, empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||((t=e.nodeType)===3||t===4))return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&((t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t))},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase(); return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&((!t.hasFocus||t.hasFocus())&&!!(e.type||(e.href||~e.tabIndex)))},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length|| i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&(!u&&!i.test(e))){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&& r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n= n.replace(r,"='$1']");if(!o(t)&&(!s.test(n)&&!i.test(n)))try{var a=u.call(t,n);if(a||(e||t.document&&t.document.nodeType!==11))return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st= v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e== null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e, "nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&(typeof r=="string"&&(i=v.filter(r,i))),i=this.length>1&&!ot[e]?v.unique(i):i,this.length> 1&&(rt.test(e)&&(i=i.reverse())),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&(s.nodeType!==9&&(r===t||(s.nodeType!==1||!v(s).is(r)))))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&(e!==t&&n.push(e));return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
","
"], thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
","
"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e=== t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this, t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments, !0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments); return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&(n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n]))),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e, t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&(!yt.test(e)&&((v.support.htmlSerialize||!wt.test(e))&&((v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()])))){e=e.replace(dt,"<$1>");try{for(;r1&&(typeof f=="string"&&St.test(f))))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||(v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">"))?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&((e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e))){Ot(e,o), r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(), f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&(!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o]))}!v.support.leadingWhitespace&&(pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild)),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&& (u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b, [s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)|| (/(webkit)[ \/]([\w.]+)/.exec(e)||(/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||(/(msie) ([\w.]+)/.exec(e)||(e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[]))));return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor= e,e.sub=this.sub,e.fn.init=function(r,i){return i&&(i instanceof v&&(!(i instanceof e)&&(i=e(i)))),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"}, Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e, t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||(e.nodeType===3||(e.nodeType===8||!e.style)))return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&("get"in u&&(s=u.get(e,!1,i))!==t)?s:f[n];o=typeof r,o==="string"&&((s= zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number"));if(r==null||o==="number"&&isNaN(r))return;o==="number"&&(!v.cssNumber[a]&&(r+="px"));if(!u||(!("set"in u)||(r=u.set(e,r,i))!==t))try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&("get"in u&&(s=u.get(e,!0,i))),s===t&&(s=Dt(e,n)),s==="normal"&&(n in Vt&&(s=Vt[n])),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e, t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&(!v.contains(t.ownerDocument,t)&&(r=v.style(t,n))),Ut.test(r)&&(qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o))),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n, r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&(s&&(s[t]&&(i=s[t]))),Ut.test(i)&&(!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r))),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e, n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?0.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||(n.filter||"");n.zoom=1;if(t>=1&&(v.trim(s.replace(Bt,""))===""&&n.removeAttribute)){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter= Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&(v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}}))}),v.expr&&(v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0|| !v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)})),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||(i[r-2]||i[0]);return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&(!this.disabled&&(this.checked||(an.test(this.nodeName)||un.test(this.type))))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}), v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn= /^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)? (r=n,n=t):n&&(typeof n=="object"&&(s="POST")),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n, url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript", "*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"), S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f, l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E|| (c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&(a[2]===ln[2]&&(a[3]||(a[1]==="http:"? 80:443))==(ln[3]||(ln[1]==="http:"?80:443))))),c.data&&(c.processData&&(typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)))),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&(v.active++===0&&v.event.trigger("ajaxStart"));if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&& (c.hasContent&&c.contentType!==!1)||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h, x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&(c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout)));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+ "_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&(!c&&(typeof a=="string"&&(!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a))));if(n.dataTypes[0]==="jsonp"||(c||h))return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]= function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&(v.isFunction(o)&&o(u[0])),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache=== t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||(i.getElementsByTagName("head")[0]||i.documentElement);return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||(!n.readyState||/loaded|complete/.test(n.readyState)))n.onload=n.onreadystatechange=null,r&&(n.parentNode&&r.removeChild(n)),n=t,i||o(200, "success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async, n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&(a.overrideMimeType&&a.overrideMimeType(n.mimeType)),!n.crossDomain&&(!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest"));try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status, l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&(h.documentElement&&(c.xml=h));try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&(n.isLocal&&!n.crossDomain)?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn= /queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||(n||1);do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&(a!==1&&--f))}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top, h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0, r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&(!er.test(e.nodeName)&&v.css(e,"position")==="static"))e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i]; o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+ e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v})(window); var punycode=new function Punycode(){this.utf16={decode:function(input){var output=[],i=0,len=input.length,value,extra;while(i65535){value-=65536;output.push(String.fromCharCode(value>>>10&1023|55296));value=56320|value&1023}output.push(String.fromCharCode(value))}return output.join("")}};var initial_n=128;var initial_bias=72;var delimiter="-";var base=36;var damp=700;var tmin=1;var tmax=26;var skew=38;var maxint=2147483647;function decode_digit(cp){return cp-48<10?cp-22:cp-65<26?cp-65:cp-97<26?cp-97:base}function encode_digit(d,flag){return d+ 22+75*(d<26)-((flag!=0)<<5)}function adapt(delta,numpoints,firsttime){var k;delta=firsttime?Math.floor(delta/damp):delta>>1;delta+=Math.floor(delta/numpoints);for(k=0;delta>(base-tmin)*tmax>>1;k+=base)delta=Math.floor(delta/(base-tmin));return Math.floor(k+(base-tmin+1)*delta/(delta+skew))}function encode_basic(bcp,flag){bcp-=(bcp-97<26)<<5;return bcp+((!flag&&bcp-65<26)<<5)}this.decode=function(input,preserveCase){var output=[];var case_flags=[];var input_length=input.length;var n,out,i,bias,basic, j,ic,oldi,w,k,digit,t,len;n=initial_n;i=0;bias=initial_bias;basic=input.lastIndexOf(delimiter);if(basic<0)basic=0;for(j=0;j=128)throw new RangeError("Illegal input >= 0x80");output.push(input.charCodeAt(j))}for(ic=basic>0?basic+1:0;ic=input_length)throw RangeError("punycode_bad_input(1)");digit=decode_digit(input.charCodeAt(ic++));if(digit>=base)throw RangeError("punycode_bad_input(2)"); if(digit>Math.floor((maxint-i)/w))throw RangeError("punycode_overflow(1)");i+=digit*w;t=k<=bias?tmin:k>=bias+tmax?tmax:k-bias;if(digitMath.floor(maxint/(base-t)))throw RangeError("punycode_overflow(2)");w*=base-t}out=output.length+1;bias=adapt(i-oldi,out,oldi===0);if(Math.floor(i/out)>maxint-n)throw RangeError("punycode_overflow(3)");n+=Math.floor(i/out);i%=out;if(preserveCase)case_flags.splice(i,0,input.charCodeAt(ic-1)-65<26);output.splice(i,0,n);i++}if(preserveCase)for(i=0,len=output.length;i< len;i++)if(case_flags[i])output[i]=String.fromCharCode(output[i]).toUpperCase().charCodeAt(0);return this.utf16.encode(output)};this.encode=function(input,preserveCase){var n,delta,h,b,bias,j,m,q,k,t,ijv,case_flags;if(preserveCase)case_flags=this.utf16.decode(input);input=this.utf16.decode(input.toLowerCase());var input_length=input.length;if(preserveCase)for(j=0;j0)output.push(delimiter);while(h=n&&ijvMath.floor((maxint-delta)/(h+1)))throw RangeError("punycode_overflow (1)");delta+=(m-n)*(h+1);n=m;for(j=0;jmaxint)return Error("punycode_overflow(2)");if(ijv==n){for(q=delta,k=base;;k+=base){t=k<=bias?tmin: k>=bias+tmax?tmax:k-bias;if(qjson.ttl){localStorage.removeItem(key);sessionStorage.removeItem(key);return null}return json.value}catch(ex){GM_log(ex);return null}};var setItem=function(key,value,ttl){try{var json={value:value, ttl:ttl||DEFAULT_TTL,timeAdded:(new Date).getTime()};var item=JSON.stringify(json);localStorage.setItem(key,item);sessionStorage.setItem(key,item)}catch(ex){GM_log(ex)}};return{getItem:getItem,setItem:setItem,hasItem:function(key){return!!getItem(key)}}}(); (function(){var AdguardQuery=$.noConflict(true);var STORAGE_KEY="__agwt_rt";var STORAGE_IGNORE_KEY="__agwt_ig";var constants={wotCookiePrefix:"_adg_wot_cache_",wotEventName:"wot-score",cookieExpiredTimeThreeDays:3*24*60*60,cookieExpiredTimeDay:24*60*60,cookieExpiredTimeTwoHours:2*60*60,cookieExpiredTimeFourHours:4*60*60,cookieExpiredTimeSecondsAlert:3*24*60*60,apiKey:"04a3aa04ef92d65637d0633eb495e82ad648508e",wotUrl:"//rating.adguard.com/0.4/public_link_json2?"};var fireEventIntervalId;document.addEventListener("wot-accepted", function(e){clearInterval(fireEventIntervalId)});var fireEvent=function(name,data){var event=document.createEvent("Events");event.initEvent(name,true,true);event.data=data;document.dispatchEvent(event);if(fireEventIntervalId)return;fireEventIntervalId=setInterval(function(){fireEvent(name,data)},150)};var getViewport=function(){var viewPortWidth;var viewPortHeight;if(typeof window.innerWidth!="undefined"){viewPortWidth=window.innerWidth;viewPortHeight=window.innerHeight}else if(typeof document.documentElement!= "undefined"&&(typeof document.documentElement.clientWidth!="undefined"&&document.documentElement.clientWidth!==0)){viewPortWidth=document.documentElement.clientWidth;viewPortHeight=document.documentElement.clientHeight}else{viewPortWidth=document.getElementsByTagName("body")[0].clientWidth;viewPortHeight=document.getElementsByTagName("body")[0].clientHeight}return[viewPortWidth,viewPortHeight]};var quickReady=function(fn){if(document.readyState!="loading")setTimeout(fn,100);else AdguardQuery(document).ready(fn)}; var getWotReputation=function(wotResponse){var result={reputation:0,confidence:0,categories:null,cantResolve:true};if(typeof wotResponse=="undefined")return result;var first=Object.keys(wotResponse)[0];if(!first)return result;if(!wotResponse[first][0])return result;var domainInfo=wotResponse[first][0];if(typeof domainInfo=="string")domainInfo=JSON.parse(domainInfo);result.reputation=domainInfo[0];result.confidence=domainInfo[1];result.cantResolve=false;if(!wotResponse[first].categories)return result; result.categories=wotResponse[first].categories;return result};var saveWotReputation=function(wotData){if(storage.hasItem(STORAGE_KEY))return;var ttl=5*86400;var confidence=wotData.confidence;if(confidence<23)ttl=1*86400;else ttl=4*60*60;storage.setItem(STORAGE_KEY,wotData,ttl)};var processWotReputation=function(wotData){fireEvent(constants.wotEventName,{wotData:wotData});showWotAlertDialog(wotData);saveWotReputation(wotData)};var onWotResponse=function(data){var response=null;if(typeof data!="undefined"&& data.responseText)response=JSON.parse(data.responseText);var wotData=getWotReputation(response);processWotReputation(wotData)};var onWotError=function(){onWotResponse()};var needShowAlertDialog=function(wotData){if(wotData.cantResolve)return false;if(wotData.reputation>40)return false;if(window!=window.top){var viewPort=getViewport();if(viewPort[0]<800||viewPort[1]<600)return false}var isIgnored=storage.hasItem(STORAGE_IGNORE_KEY);if(isIgnored)return false;var govMatcher=/(.+\.)?gov\.[^.]{2,6}/;var found= document.location.host.match(govMatcher);if(found!==null)return false;if(AdguardQuery('iframe[src*="bhmmomiinigofkjcapegjjndpbikblnp"]').length>0||AdguardQuery("#wotwarning").length>0)return false;if(wotData.categories["303"]&&wotData.categories["303"]>10)return false;return true};var addPostMessageEventHandler=function(){var removeHandler=function(){window.removeEventListener("message",alertHandler)};var removeAlertIframe=function(){AdguardQuery("#adguard-wot-alert").remove()};var removeOverlay= function(){AdguardQuery("#adguard-alert-overlay").remove()};var reloadPageBypassCache=function(){if(!AdguardQuery.browser.webkit){window.location.reload(true);return}AdguardQuery.ajax({url:window.location.href,headers:{"Pragma":"no-cache","Expires":-1,"Cache-Control":"no-cache"}}).complete(function(){window.location.reload(true)})};var alertHandler=function(event){if(event.data==="Alert_Back"){removeAlertIframe();removeOverlay();removeHandler();var backCount=AdguardQuery.browser.webkit?-2:-1;window.history.go(backCount); setTimeout(function(){document.location.href="about:blank"},1E3)}if(event.data==="Alert_Ignore"){storage.setItem(STORAGE_IGNORE_KEY,true);reloadPageBypassCache()}};if(window.addEventListener)addEventListener("message",alertHandler,false);else attachEvent("onmessage",alertHandler)};var createAlertOverlay=function(){var css={display:"block",position:"fixed",top:0,left:0,width:"100%",height:"100%",opacity:"0.5","background-color":"black","z-index":"2147483646",padding:0,margin:0,"border-radius":0};AdguardQuery("
").css(css).attr("id", "adguard-alert-overlay").appendTo("body")};var createAlertIframe=function(){var width=400;var height=620;var cssStyle={position:"fixed",width:width,height:height,top:"10%",left:"50%","z-index":2147483647,"margin-left":-(width/2),padding:0,border:"0 none transparent",display:"block !important"};var iframe=AdguardQuery('