-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathburmod.js
22 lines (21 loc) · 77.8 KB
/
burmod.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var n=Object.defineProperty;var L=($,x)=>{for(var A in x)n($,A,{get:x[A],enumerable:!0,configurable:!0,set:(z)=>x[A]=()=>z})};var U="burmod";function b($){console.log(`[${U}] ${$}`)}function P($){ModAPI.displayToChat({msg:`\xA75[${U}]\xA7r ${$}`})}var S="data:image/png;base64,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";var v={};L(v,{settings:()=>{{return i}},init:()=>{{return o}}});function o($){$.onUpdate=function(){if($.getEnabled()){if(!ModAPI.player.capabilities.isFlying)ModAPI.player.capabilities.isFlying=!0,ModAPI.player.reload()}},$.onEnable=function(){if(ModAPI.player!=null){if(ModAPI.player.capabilities!=null)ModAPI.player.capabilities.isFlying=!0,ModAPI.player.reload()}},$.onDisable=function(){if(ModAPI.player!=null){if(ModAPI.player.capabilities!=null)ModAPI.player.capabilities.isFlying=!1,ModAPI.player.reload()}}}var i=[{name:"Mode",type:"List",modes:["Abilities","Packet"],current:0}];var f={};L(f,{init:()=>{{return r}}});function r($){$.settings=[{name:"Height",type:"Slider",min:1,max:6,step:0.5,current:1.5}],$.onUpdate=function(){if($.getEnabled()){if(ModAPI.player.stepHeight!=$.settings[0].current)ModAPI.player.stepHeight=$.settings[0].current,ModAPI.player.reload()}},$.onEnable=function(){if(ModAPI.player!=null)ModAPI.player.stepHeight=$.settings[0].current,ModAPI.player.reload()},$.onDisable=function(){if(ModAPI.player!=null)ModAPI.player.stepHeight=0.6000000238418579,ModAPI.player.reload()}}var y={};L(y,{init:()=>{{return l}}});function l($){var x=!1,A=!1;$.onUpdate=function(){if($.getEnabled()){if(A&&ModAPI.player.fishEntity==null)ModAPI.rightClickMouse(),A=!1;if(ModAPI.player.fishEntity!=null){if(ModAPI.player.fishEntity.ticksExisted<100&&x==!1)x=!0;if(ModAPI.player.fishEntity.isInWater()&&ModAPI.player.fishEntity.ticksExisted>100&&Math.ceil(ModAPI.player.fishEntity.y)-ModAPI.player.fishEntity.y>=0.3){if(x)x=!1,ModAPI.rightClickMouse(),A=!0}}}},$.onEnable=function(){x=!0}}var D={};L(D,{init:()=>{{return s}}});function s($){$.crshInter=null,$.settings=[{name:"PPS",type:"Slider",min:20,max:20000,step:10,current:5000}];function x(){if(ModAPI.player!=null)for(let A=0;A<$.settings[0].current;A++)ModAPI.player.swingItem();else $.disable()}$.onEnable=function(){$.crshInter=setInterval(x,1000)},$.onDisable=function(){if($.crshInter!=null)clearInterval($.crshInter)}}var h={};L(h,{init:()=>{{return t}}});function t($){function x(A,z,I){z/=100,I/=100;const X=(J)=>(J+A/30)%12,E=z*Math.min(I,1-I),Y=(J)=>I-E*Math.max(-1,Math.min(X(J)-3,Math.min(9-X(J),1)));return[255*Y(0),255*Y(8),255*Y(4)]}$.onUpdate=function(){if($.getEnabled()){var A=x(Date.now()/10%360,100,50),z=A[0],I=A[1],X=A[2],E=255;ModAPI.mcinstance.$theWorld.$cloudColour=BigInt((z<<24)+(I<<16)+(X<<8)+E)}},$.onDisable=function(){if(ModAPI.mcinstance.$theWorld!=null){var A=x(0,0,100),z=A[0],I=A[1],X=A[2],E=255;ModAPI.mcinstance.$theWorld.$cloudColour=BigInt((z<<24)+(I<<16)+(X<<8)+E)}}}var N=function($){this.enabledDONOTUSE=!1,this.init=function(){},this.onEnable=function(){},this.onDisable=function(){},this.enable=function(){this.enabledDONOTUSE=!0,this.onEnable(),j()},this.disable=function(){this.enabledDONOTUSE=!1,this.onDisable(),j()},this.onKey=function(x){},this.onMCKey=function(x){},this.getEnabled=function(){return this.enabledDONOTUSE},this.toggle=function(){if(this.enabledDONOTUSE=!this.enabledDONOTUSE,this.enabledDONOTUSE)this.onEnable();else this.onDisable()},this.onUpdate=function(){},this.alert=function(){alert()},this.settings=[],$.init(this)},G={movement:"Movement",player:"Player",render:"Render",fun:"Fun"},q={flight:{name:"Flight",function:new N(v),category:"Movement",description:"Allows you to fly"},step:{name:"Step",function:new N(f),category:"Movement",description:"Allows you to step"},autofish:{name:"AutoFish",function:new N(y),category:"Player",description:"Automatically casts and reels rod"},servercrasher:{name:"Server Crasher",function:new N(D),category:"Exploit",description:"Sends just a few swing packets ;)"},rgbclouds:{name:"RGB Clouds",function:new N(h),category:"Render",description:"Clouds go weeee"}};function m(){if(document.getElementById("ui")!=null)document.getElementById("ui").remove()}function g(){if(document.getElementById("ui")==null)return!1;else return!0}function e($){var x=$.function.settings;console.log(x);var A=document.createElement("div");A.className="setting",A.style.position="absolute",A.style.color="white",A.style.backdropFilter="blur(8px)",A.style.background="rgba(0,0,0,0.5)",A.style.borderRadius="15px",A.style.padding="15px",A.style.fontFamily="monospace",A.style.overflowY="hidden",A.style.animation="rgb 4s linear infinite",A.style.width="15%",A.style.height="50%",A.style.top="100px",A.style.left="100px",A.style.zIndex="1000",A.style.backdropFilter="blur(8px)",A.style.resize="both";const z=document.createElement("div");z.innerText=$.name,z.style.fontSize="22px",A.appendChild(z);var I=document.createElement("div");I.innerText="X",I.style.fontSize="28px",I.style.position="absolute",I.style.right="15px",I.style.top="10px",I.style.cursor="pointer",I.onclick=function(){A.remove()},A.appendChild(I),document.body.appendChild(A);for(let B in x)if(x.hasOwnProperty(B)){var X=document.createElement("div");if(X.style.background="rgba(100,100,100,0.5)",X.style.margin="5px",X.style.padding="5px",X.style.borderRadius="10px",A.appendChild(X),x[B].type=="List"){var E=document.createElement("div");E.style.fontSize="20px",E.innerText=`${x[B].name} - ${x[B].current}`,X.appendChild(E);var Y=document.createElement("select");Y.onchange=function(){x[B].current=parseInt(Y.value),E.innerText=`${x[B].name} - ${x[B].current}`};for(let _ in x[B].modes){if(x[B].modes.hasOwnProperty(_)){var J=document.createElement("option");J.innerText=x[B].modes[_],J.value=_+""}X.appendChild(Y)}}else if(x[B].type=="Slider"){var w=document.createElement("div");w.style.fontSize="20px",w.innerText=`${x[B].name} - ${x[B].current}`,X.appendChild(w);var F=document.createElement("input");F.type="range",F.step=x[B].step,F.min=x[B].min,F.max=x[B].max,F.value=x[B].current,F.onchange=function(){x[B].current=parseFloat(F.value),w.innerText=`${x[B].name} - ${x[B].current}`},X.appendChild(F)}else if(x[B].type=="Boolean"){var Z=document.createElement("div");Z.style.fontSize="20px",Z.innerText=`${x[B].name} - ${x[B].toggled}`,X.appendChild(Z);var Q=document.createElement("input");Q.type="checkbox",Q.checked=x[B].toggled,Q.onchange=function(){x[B].toggled=Q.checked,Z.innerText=`${x[B].name} - ${x[B].toggled}`},X.appendChild(Q)}}}function u(){document.exitPointerLock();var $=U;const x=document.createElement("div");x.id="ui",x.style.position="fixed",x.style.width="66%",x.style.height="66%",x.style.top=document.body.clientHeight*0.165+"px",x.style.left=document.body.clientWidth*0.165+"px",x.style.color="white",x.style.backdropFilter="blur(8px)",x.style.background="rgba(0,0,0,0.75)",x.style.borderRadius="15px",x.style.padding="15px",x.style.boxShadow="0px 0px 40px rgba(0, 195, 255,0.5)",x.style.fontFamily="monospace",x.style.overflowY="hidden",x.style.animation="rgb 4s linear infinite",document.body.appendChild(x);const A=document.createElement("div");A.innerText=$,A.style.fontSize="24px",A.style.margin="5px",x.appendChild(A);var z=document.createElement("input");z.style.width="33%",z.type="text",z.style.border="solid 2px rgba(200,200,200,0.5)",z.style.borderRadius="10px",z.style.color="rgba(255,255,255,1)",z.style.display="inline-block",z.style.padding="8px",z.style.marginLeft="20px",z.style.fontSize="22px",z.style.background="rgba(50,50,50,.24)",z.placeholder="\uD83D\uDD0E\uFE0E Search",z.style.backdropFilter="blur(8px)",A.appendChild(z);const I=document.createElement("div");I.innerText="X",I.style.fontSize="28px",I.style.position="absolute",I.style.right="15px",I.style.top="10px",I.style.cursor="pointer",I.onclick=function(){m()},x.appendChild(I);var X=document.createElement("div");X.style.overflowX="scroll",x.appendChild(X);for(let E in G)if(G.hasOwnProperty(E)){const Y=document.createElement("div");Y.innerText=G[E],Y.style.fontSize="18px",Y.style.cursor="pointer",Y.style.display="inline-block",Y.style.padding="10px",Y.style.margin="5px",Y.style.background="rgba(100,100,100,0.5)",Y.style.borderRadius="5px",Y.onclick=function(){},X.appendChild(Y)}V=document.createElement("center"),V.style.height="100%",V.style.overflowY="scroll",x.appendChild(V),j()}function j(){if(g()){V.innerHTML="";for(let A in q)if(q.hasOwnProperty(A)){var $=document.createElement("div"),x=document.createElement("div");if(x.innerText=`${q[A].name}`,x.style.fontSize="22px",x.style.fontWeight="bold",$.appendChild(x),$.style.textAlign="left",$.style.display="inline-block",$.style.width="25%",$.style.height="25%",$.style.padding="5px",$.style.borderRadius="15px",$.style.margin="10px",$.style.cursor="pointer",$.style.background="rgba(100,100,100,0.5)",q[A].function.getEnabled())$.style.boxShadow="0px 0px 15px rgba(0, 255, 0,1)";$.onclick=function(z){q[A].function.toggle(),j()},$.oncontextmenu=function(z){new e(q[A]),console.log(q[A])},V.appendChild($)}}}var V;var xx=function(){if(ModAPI.mcinstance.$currentScreen!=null){if(ModAPI.currentScreen().startsWith("net.minecraft.client.gui.GuiMainMenu")){var $=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[0],x=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[1],A=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[2],z=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[3],I=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[4],X=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[5],E=ModAPI.mcinstance.$currentScreen.$buttonList.$array1.data[6],Y=ModAPI.mcinstance.$currentScreen,J=42,w=22,F=2,Z=100,Q=new TextEncoder;if(I.$width13=Z,I.$yPosition=Y.$height7-J,A.$width13=Z/2,A.$xPosition0=I.$xPosition0-Z/2-F,A.$yPosition=Y.$height7-J,$.$width13=Z,$.$yPosition=I.$yPosition-w,x.$width13=Z+E.$width13+F,x.$xPosition0=$.$xPosition0+Z+F,x.$yPosition=I.$yPosition-w,X.$width13=Z,X.$yPosition=Y.$height7-J,E.$xPosition0=X.$xPosition0+X.$width13+F,E.$yPosition=Y.$height7-J,z.$width13=Z/2,z.$yPosition=A.$yPosition-w,z.$xPosition0=A.$xPosition0,z.$displayString.$characters.data=Q.encode("Fork"),Y.$openGLWarning1.$characters.data=Q.encode(""),document.getElementById("serverpinglist")==null){var B=document.createElement("div");B.id="serverpinglist";var _=[{name:"Aeon Network",address:"wss://aeon-network.net"},{name:"Arch MC",address:"wss://mc.arch.lol"},{name:"Hellium Network",address:"wss://helltech.cc"},{name:"Clever Teaching",address:"wss://clever-teaching.com"},{name:"Zyth",address:"wss://mc.zyth.me"}];B.style.overflowY="scroll",B.style.wordBreak="break-all",B.style.position="fixed",B.style.top="10%",B.style.left="2.5%",B.style.width="15%",B.style.height="80%",B.style.color="rgba(255,255,255,1)",B.style.backgroundColor="rgba(0,0,0,0.5)",B.style.borderRadius="15px",B.style.fontFamily="monospace",_.forEach(function(R){const C=document.createElement("div");C.style.margin="10px",B.appendChild(C);const O=document.createElement("div");O.style.fontSize="20px",O.innerText=R.name,C.appendChild(O);const p=document.createElement("div");p.innerText=R.address,C.appendChild(p);const K=document.createElement("div");K.innerText="not connected",K.style.color="red",K.style.fontWeight="bold",K.style.fontSize="16px",K.style.width="100%",C.appendChild(K);const W=new WebSocket(R.address),c=Date.now();W.onopen=()=>{W.send("Accept: MOTD")},W.onmessage=(k)=>{if(k.data){if(typeof k.data==="string")try{var M=JSON.parse(k.data);if(M.type.toLowerCase()==="motd"){K.innerText=M.data.online+"/"+M.data.max,K.style.color="lime";const T=document.createElement("div");T.style.display="inline-block",T.style.float="right",T.innerText+=Date.now()-c+"ms",K.appendChild(T),console.log(M)}}catch(T){console.log(T)}}}}),document.body.appendChild(B)}}else if(document.getElementById("serverpinglist")!=null)document.getElementById("serverpinglist").remove()}};b("Init...");P("Init...");P("Loading modules...");ModAPI.require("player");addEventListener("keydown",function($){if($.location==KeyboardEvent.DOM_KEY_LOCATION_RIGHT&&$.key=="Shift"&&!g())u();for(let x in q)if(q.hasOwnProperty(x))q[x].function.onKey($)});ModAPI.addEventListener("key",function($){if($.key==54)m;for(let x in q)if(q.hasOwnProperty(x))q[x].function.onMCKey($)});ModAPI.addEventListener("update",function(){for(let $ in q)if(q.hasOwnProperty($))q[$].function.onUpdate()});var H=document.styleSheets[0];H.insertRule(`
::-webkit-scrollbar {
width: 10px;
}`);H.insertRule(`
::-webkit-scrollbar-track {
background: rgba(0,0,0,0);
}`);H.insertRule(`
::-webkit-scrollbar-thumb {
background: rgba(100,100,100,0.5);
filter: blur(4px);
}`);H.insertRule(`@keyframes rgb {
0% { box-shadow: 0px 0px 40px rgba(255, 0, 0,0.75); }
16% { box-shadow: 0px 0px 40px rgba(255, 255, 0,0.75); }
33% { box-shadow: 0px 0px 40px rgba(0, 255, 0,0.75); }
50% { box-shadow: 0px 0px 40px rgba(0, 255, 255,0.75); }
66% { box-shadow: 0px 0px 40px rgba(0, 0, 255,0.75); }
83% { box-shadow: 0px 0px 40px rgba(255, 0, 255,0.75); }
100% { box-shadow: 0px 0px 40px rgba(255, 0, 0,0.75); }
}`);var Kx=setInterval(xx,50);document.body.getElementsByTagName("canvas")[0].style.cursor='url("'+S+'"), auto';document.body.style.cursor='url("'+S+'"), auto';
//# debugId=39EB98B57DE2021D64756e2164756e21
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL3V0aWwvY2xpZW50TmFtZS50cyIsICJzcmMvdXRpbC9jb25zb2xlTG9nZ2VyLnRzIiwgInNyYy91dGlsL2NoYXRMb2dnZXIudHMiLCAic3JjL2Fzc2V0cy50cyIsICJzcmMvY2hlYXRzL2ZsaWdodC50cyIsICJzcmMvY2hlYXRzL3N0ZXAudHMiLCAic3JjL2NoZWF0cy9hdXRvZmlzaC50cyIsICJzcmMvY2hlYXRzL3NlcnZlcmNyYXNoZXIudHMiLCAic3JjL2NoZWF0cy9yZ2JjbG91ZHMudHMiLCAic3JjL3V0aWwvYWN0dWFsTW9kdWxlcy50cyIsICJzcmMvZ3VpLnRzIiwgInNyYy9NYWluLnRzIiwgInNyYy9NYWluLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgIi8vIGdsb2JhbCB2YXJpYWJsZSBmb3IgdGhlIGNsaWVudCdzIG5hbWVcblxuZXhwb3J0IHZhciBjbGllbnROYW1lID0gXCJidXJtb2RcIjsiLAogICJpbXBvcnQgeyBjbGllbnROYW1lIH0gZnJvbSBcIi4vY2xpZW50TmFtZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dUb0NvbnNvbGUobXNnKSB7XG4gIGNvbnNvbGUubG9nKGBbJHtjbGllbnROYW1lfV0gJHttc2d9YCk7XG59IiwKICAiaW1wb3J0IHsgY2xpZW50TmFtZSB9IGZyb20gXCIuL2NsaWVudE5hbWUudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gbG9nVG9DaGF0KG1zZykge1xuICAvL0B0cy1pZ25vcmVcbiAgTW9kQVBJLmRpc3BsYXlUb0NoYXQoe21zZzogYMKnNVske2NsaWVudE5hbWV9XcKnciAke21zZ31gfSk7XG59IiwKICAiZXhwb3J0IHZhciBjdXJzb3IgPSBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBbENBWUFBQUJSZUlueEFBQUFBWE5TUjBJQXJzNGM2UUFBQ0ZGSlJFRlVXRWV0VjF0dlhOVVpYZnZjcnpNVE8wNUlLNFdxQ29LQ0NnalVxcFhhQ2xTa3dtL29QK2xMZWVHbEQrMUQyMVF0VWt0VnFSZW1nQ2hDSUVnaUF3MUdRSnFRZ0dNU1F4STdkbUtQNTM1dSs1eDlxYjQ5VGtVSVNoVEtrWTVtUEhPODExN3JXOS82OXJESEhyeEhTeW5oZWg0NmV6cm96SFhnZWU1UWEvMEtyNXRudklWaTZmRGh4UXhmMGNVSVVDc0Z5N1lScFFuU1ZnclhkZnRTaVgvbWRmUDc1MTU1OHhRQS9SWGhnZjM0Z2J1MUZCSmU0R1BmSFF2WXYzOEJnZStQR2lHT2xHWDVVdG5VNStxYURUenBqRk8vTi9ubHMwc1ZZMTkrQXdhd0xDdnNtZXZnb1llL2pmc2Z1QmVoNy9QdDN1RHk2dXJGalN0Yk81T2Fpek9TcWVPUlhaLzg0NytPYi80L2JJMmtrMG1HQXdmMjRTZVBQNEpISHYwK1NhcVhsMWZ4L29rejdQTGxxOGlMNGcwTjhWY282OVh1a2VOclh3SGdGQWNPN01mamp6K0tIejN5UGRpMmpmUG5MK0QwNlJWc2JlMDBlVjRjcjRWOFVXdjFKcGZOT2xRa2U1d1hDd3VMVGJjTGVUc2JNSkptV1dGcTk0TWZmaGNQZitkK2NpbUdnekZHb3pFNGI4UTBMejd0OXlkbkI4UFJKOU1zMzVCQ1hCYXg5eDlnc3RIdExwVzNCZmpZZzNmclBLK3dkKzhjSG5yNGZ0enpyVVB3QXhlKzV5TkpZc1JSb0xhMis5WEt5cXE4Y0hHajdnL0dHN3h1bGh5TC9XWHZYWGQ4Y1Bodzk3WmFadGMwSFBQemUvREFnL2ZpMEYzZk1HRHRUZ3NMQy9Ob3RWTnNiRnpWSzJkWDJZV0xhN0szUGRncHEyYko5cXlubGUyZWlYUXdpdSs4c3o1elpsNHVMdjVjQXV5bUxXUUFlVldqMDJuam5uc1A0ZURCcjhGeEhMUTdiY002YmNVZ1V3MEdJL09hWlVXVzVmbnFaRFI5YXpDYWZscFh6WWJuV3V0ZXUzVnB5TzN0YnJkNzA1b2F3Sm8zYUxVU2ZQUFFuY1k4Qk5ocXBaaWJheU5LUWpCWXhrZ1VEazB0bWw2L1AvcjQ0d3ZibTV0YlY0cThPRzhCNzdWRFora1BMeTJ1M0txZUJyQ3BHeVJwaklNSHY0NTkrL2ZDY1Z5emdYWTdSUkFGaUtQUUtKQ21DWlRVNnZMbWxqeDE4a081dHJhWlpYbDJsZ0hIQWo5NEZWTnhLbDlZYU82Nzd6Nzk1Sk5Qa3JRM3lHc0FoUkNJb3RDdzJ6UGZnV083YUxjVHBHbU1JUENSdGhKVHp6MmRqbG5qNnRZT1BsbytoL1gxcXlqeTRnS0F0N1hEam1VRlB4VTQvbGl6WUxRMkhJNFhGeGZGNXhtYnhpZEFQL0F4TjA4MVMrSFlOdElrbmdINkh1STBOdksyMnkwamE1Wmx1SEpsRytQaFZPZEZOYXA0dlphWDVjZVRhWGFPQVd1V2I1K3NOck9QdWtzM3Rvd0JuRTBMRjJtcmhUQU1ZZGtXa2lSRUdzZndQUTl4RWhuWDBnYW9SeHNoVUJZY1RWTVRvSnhNcHJ6Zkd4YkR5WFFiV3AvVXpIbWg0VGphUFhKa0RBMW1XTzdtcndGVVVzRnhIY1JwQWo4SVlGa1dramhDRW9md2ZjZjBJN0dqT251ZUI2VVU2cm9CaFg1WmNlVFRYQTlHWTR3bWVhNkUrc0RTMWo4YU8zL2QwM0ljMnhHL2pGYlc3WFpyZy90WlFCcFBmaERDWWpBZ3JZUUFQU1JKaEZacnhwQ1VrRktCOHhwMTA0QU1SKytyaXFNb1M4SHI1Z0t2K0xIeFpMb2tvQXNYOWthSyt1enZYdjczOERPQUVvN25JazUyQVMwTEtZR2trUUdNNHdpZFRzdTBpdXM2NEUxamVwSnpUcTRGWTVaUlJTc3BpN0thN1BTSDZ6czdvMDJoWkduWjlodStiVC8vcHhkZlcvOUN3SUFZR3RORVNKTEExQ3lKWWxQRFZqdWhTUUplMXhpUHA2ZzRod1ZtWktaMFloWjBuaFZpcTdjaitqc2pVVXRaYThhZWJ5enhtNzg5ZC9UTVQ1OTRJdDJWVk1KeFhTUWtLWm5Hc2hGRlBzTEFNeUVRUnlScGlpU056QWFVMHVBMWg1QVNGbU53Yk1mYzFIUlZWUm4yMDJrT1hqY1FTcjFlQ2Y1TVBpbk9oVzR3L3puQUZHRVVnbGtXSE1lR1kxdXdtR1Urb3phSm9nQkI2Sm5ORVRDMUQxMUNLbEJya1ltVTFpRFhDekc3eTVLdjlJZWpFMFZSRFR6WFMyNEFqS0lJekdaZ2pFRXBRR3R0Mk1aeGlDZ0lFQVFld3BpU3A0VW9EQTNic3FwUUZLVnhMaWxDc2p1T3BiWFNhakFZVGE5dTlZWkZ3V3ZQOCt6clhKb2tDYUk0Tmd3VlpqdWxCY1BBUjB3U2g3T2JudHUzTUk4b2pxQTE2RVF3azdDcDRUdWVlWjdNcGJUU3ZkNVFiMTN0cVpLWDJuVzhhMjJ4VzhNa1FXZ0FaNzFLOGlpdHpBSkpGQ0FNQW9SaFlHbzVQeitQT0E2TUFzUnVtaFdHb1dVeDJJeXNCRWlsTUJ4TnNkTWZtclloOXRkTGFnQWp3NUF1V294QUl3SWhRTU13TkNrMHQzZk9oUG9Nc0VLZWw2WWY2Y2hKOVd3YVliN0xpaExqU1lhNkZxYm1YMWhEMC9tN2dQUlB4TkFZeHZjTVF3cjZEbzJ1MElmU0lHT2dJTUM2aHBJU2RWMmJRRkJLNmFxV3ZDaXJVZ2doYk50bU53TEdFY0N1QjZROEpiUDRubXVTaHZxT05rQi9rd0lFeEN0dUpLV2F6eHdyNkwwU1NtMDBVcTFxcFNmTWhuOUxoc1RVdGkxakF1bzFSbXByUU12WllOZlFKbHRGSTB6a2tTTG1VOU1lU21pTHZlMEV3Y3VlNjY1TDNiUnVXc1BkRldjampiRmRJMGp3cXRaNU5sVlZ4YlZXVXB0b0kxVTB5SEIwTUxlMHhiU1dPbGNhejdwaDlOdWYvZUpYSHg1KzZxbjRsb0FFUTA0bC85UG1wVlN5cmpuUHMyekVlVlZLb1FSaFdHUlBNNFZNMmxHNDBtQ2FhbzBYWUZsL1hqeTFjdkg2TERYUmxzSTBQZ1V4RGJMZFd2NnZKa0pvcFdRdXBMd2tHdm1PYUpxTEVtemlhRzNCZ2llMXRpakxYVENoR1ZQUWx0QmFyMmcvZnYvb3UrLzJ2eGd3aVEwUTFZQmU2YWFwMEZRY1RVMTNNMVJLdnFPMTliU1V6V25meFlRV0toMWhjazRxeld3cjFuWlptdk1NODFrbDBvUDV0ZVBHalZtYVJETm05UGlzYnJxdWE4M0wwbXA0UllFODFsSWRnN0orTGZYZ3ZjWGwzdTBkaE0wQVZzb2NBMmxTMFB3emJVRUdZSXlTUTBwSlB5VjRUOVIxWHpSaVF5dWN0bXo3dGFidXJYNHB3R3Z5MFJDOVZqY2lhTlBVc0sxYWFYMVNhWFZVQ3ZHT3JQVWxNQzlqbnRjL2N1SkVRY1BpZG42d0drbXZIZVZNbE5HSTJMMU0vemwycGJSK1N3cjFkKzVZcjd4MTR1eVZXeDEyYi9iOWRZQ2ZmNUFZdW81VkMrampVcW9YaFdCSHRwcmw4OHZMTUFlaUwzUDlGMlRlUVN4TFRWV0hBQUFBQUVsRlRrU3VRbUNDXCI7IiwKICAiZXhwb3J0IHZhciBzZXR0aW5ncyA9IFtcbiAge1xuICAgIG5hbWU6IFwiTW9kZVwiLFxuICAgIHR5cGU6IFwiTGlzdFwiLFxuICAgIG1vZGVzOiBbXCJBYmlsaXRpZXNcIiwgXCJQYWNrZXRcIl0sXG4gICAgY3VycmVudDogMCxcbiAgfSxcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0KHBhcmVudCkge1xuICBwYXJlbnQub25VcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHBhcmVudC5nZXRFbmFibGVkKCkpIHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGlmICghTW9kQVBJLnBsYXllci5jYXBhYmlsaXRpZXMuaXNGbHlpbmcpIHtcbiAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICBNb2RBUEkucGxheWVyLmNhcGFiaWxpdGllcy5pc0ZseWluZyA9IHRydWU7XG4gICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgTW9kQVBJLnBsYXllci5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBwYXJlbnQub25FbmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgaWYgKE1vZEFQSS5wbGF5ZXIgIT0gbnVsbCkge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAoTW9kQVBJLnBsYXllci5jYXBhYmlsaXRpZXMgIT0gbnVsbCkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgTW9kQVBJLnBsYXllci5jYXBhYmlsaXRpZXMuaXNGbHlpbmcgPSB0cnVlO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgTW9kQVBJLnBsYXllci5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcGFyZW50Lm9uRGlzYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoTW9kQVBJLnBsYXllciAhPSBudWxsKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChNb2RBUEkucGxheWVyLmNhcGFiaWxpdGllcyAhPSBudWxsKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBNb2RBUEkucGxheWVyLmNhcGFiaWxpdGllcy5pc0ZseWluZyA9IGZhbHNlO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgTW9kQVBJLnBsYXllci5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCiAgImV4cG9ydCBmdW5jdGlvbiBpbml0KHBhcmVudCkge1xuICBwYXJlbnQuc2V0dGluZ3MgPSBbXG4gICAge1xuICAgICAgbmFtZTogXCJIZWlnaHRcIixcbiAgICAgIHR5cGU6IFwiU2xpZGVyXCIsXG4gICAgICBtaW46IDEsXG4gICAgICBtYXg6IDYsXG4gICAgICBzdGVwOiAwLjUsXG4gICAgICBjdXJyZW50OiAxLjVcbiAgICB9XG4gIF1cblxuICBwYXJlbnQub25VcGRhdGUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAocGFyZW50LmdldEVuYWJsZWQoKSkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgaWYgKE1vZEFQSS5wbGF5ZXIuc3RlcEhlaWdodCAhPSBwYXJlbnQuc2V0dGluZ3NbMF0uY3VycmVudCkge1xuICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgIE1vZEFQSS5wbGF5ZXIuc3RlcEhlaWdodCA9IHBhcmVudC5zZXR0aW5nc1swXS5jdXJyZW50O1xuICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgIE1vZEFQSS5wbGF5ZXIucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJlbnQub25FbmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoTW9kQVBJLnBsYXllciAhPSBudWxsKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIE1vZEFQSS5wbGF5ZXIuc3RlcEhlaWdodCA9IHBhcmVudC5zZXR0aW5nc1swXS5jdXJyZW50O1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBNb2RBUEkucGxheWVyLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHBhcmVudC5vbkRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoTW9kQVBJLnBsYXllciAhPSBudWxsKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIE1vZEFQSS5wbGF5ZXIuc3RlcEhlaWdodCA9IDAuNjAwMDAwMDIzODQxODU3OTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgTW9kQVBJLnBsYXllci5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxufVxuXG4iLAogICJleHBvcnQgZnVuY3Rpb24gaW5pdChwYXJlbnQpIHtcbiAgdmFyIGNhdGNoZmlzaCA9IGZhbHNlO1xuICB2YXIgY2F0Y2hhZ2FpbiA9IGZhbHNlO1xuICBwYXJlbnQub25VcGRhdGUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAocGFyZW50LmdldEVuYWJsZWQoKSkge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAoY2F0Y2hhZ2FpbiAmJiBNb2RBUEkucGxheWVyLmZpc2hFbnRpdHkgPT0gbnVsbCkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgTW9kQVBJLnJpZ2h0Q2xpY2tNb3VzZSgpO1xuICAgICAgICBjYXRjaGFnYWluID0gZmFsc2U7XG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChNb2RBUEkucGxheWVyLmZpc2hFbnRpdHkgIT0gbnVsbCkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgaWYgKE1vZEFQSS5wbGF5ZXIuZmlzaEVudGl0eS50aWNrc0V4aXN0ZWQgPCAxMDAgJiYgY2F0Y2hmaXNoID09IGZhbHNlKSB7XG4gICAgICAgICAgY2F0Y2hmaXNoID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBpZiAoTW9kQVBJLnBsYXllci5maXNoRW50aXR5LmlzSW5XYXRlcigpICYmIE1vZEFQSS5wbGF5ZXIuZmlzaEVudGl0eS50aWNrc0V4aXN0ZWQgPiAxMDAgJiYgKE1hdGguY2VpbChNb2RBUEkucGxheWVyLmZpc2hFbnRpdHkueSkgLSBNb2RBUEkucGxheWVyLmZpc2hFbnRpdHkueSkgPj0gLjMpIHtcbiAgICAgICAgICBpZiAoY2F0Y2hmaXNoKSB7XG4gICAgICAgICAgICBjYXRjaGZpc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgTW9kQVBJLnJpZ2h0Q2xpY2tNb3VzZSgpO1xuICAgICAgICAgICAgY2F0Y2hhZ2FpbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJlbnQub25FbmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICBjYXRjaGZpc2ggPSB0cnVlO1xuICB9XG5cbn1cblxuIiwKICAiZXhwb3J0IGZ1bmN0aW9uIGluaXQocGFyZW50KSB7XG5cbiAgcGFyZW50LmNyc2hJbnRlciA9IG51bGw7XG4gIFxuICBwYXJlbnQuc2V0dGluZ3MgPSBbXG4gICAge1xuICAgICAgbmFtZTogXCJQUFNcIixcbiAgICAgIHR5cGU6IFwiU2xpZGVyXCIsXG4gICAgICBtaW46IDIwLFxuICAgICAgbWF4OiAyMDAwMCxcbiAgICAgIHN0ZXA6IDEwLFxuICAgICAgY3VycmVudDogNTAwMFxuICAgIH1cbiAgXVxuICBcbiAgZnVuY3Rpb24gY3Jhc2goKSB7XG4gICAgaWYoTW9kQVBJLnBsYXllciAhPSBudWxsKXtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50LnNldHRpbmdzWzBdLmN1cnJlbnQ7IGkrKykge1xuICAgICAgICBNb2RBUEkucGxheWVyLnN3aW5nSXRlbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnQuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHBhcmVudC5vbkVuYWJsZSA9IGZ1bmN0aW9uKCl7XG4gICAgcGFyZW50LmNyc2hJbnRlciA9IHNldEludGVydmFsKGNyYXNoLCAxMDAwKTtcbiAgfVxuICBcbiAgcGFyZW50Lm9uRGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIGlmKHBhcmVudC5jcnNoSW50ZXIgIT0gbnVsbCl7XG4gICAgICBjbGVhckludGVydmFsKHBhcmVudC5jcnNoSW50ZXIpO1xuICAgIH1cbiAgfVxufSIsCiAgImV4cG9ydCBmdW5jdGlvbiBpbml0KHBhcmVudCl7XG4gICAgXG4gICAgZnVuY3Rpb24gaHNsMnJnYihoLCBzLCBsKXtcbiAgICAgIHMgLz0gMTAwO1xuICAgICAgbCAvPSAxMDA7XG4gICAgICBjb25zdCBrID0gbiA9PiAobiArIGggLyAzMCkgJSAxMjtcbiAgICAgIGNvbnN0IGEgPSBzICogTWF0aC5taW4obCwgMSAtIGwpO1xuICAgICAgY29uc3QgZiA9IG4gPT5cbiAgICAgICAgbCAtIGEgKiBNYXRoLm1heCgtMSwgTWF0aC5taW4oayhuKSAtIDMsIE1hdGgubWluKDkgLSBrKG4pLCAxKSkpO1xuICAgICAgcmV0dXJuIFsyNTUgKiBmKDApLCAyNTUgKiBmKDgpLCAyNTUgKiBmKDQpXTtcbiAgICB9O1xuICBcbiAgICBwYXJlbnQub25VcGRhdGUgPSBmdW5jdGlvbiAoKXtcbiAgICAgIFxuICAgICAgaWYocGFyZW50LmdldEVuYWJsZWQoKSl7XG4gICAgICAgIHZhciByZ2IgPSBoc2wycmdiKERhdGUubm93KCkvMTAgJSAzNjAsMTAwLDUwKTtcbiAgICAgICAgdmFyIHJlZCA9IHJnYlswXTtcbiAgICAgICAgdmFyIGdyZWVuID0gcmdiWzFdO1xuICAgICAgICB2YXIgYmx1ZSA9IHJnYlsyXTtcbiAgICAgICAgdmFyIGFscGhhID0gMjU1O1xuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kdGhlV29ybGQuJGNsb3VkQ29sb3VyID0gQmlnSW50KChyZWQgPDwgMjQpICsgKGdyZWVuIDw8IDE2KSArIChibHVlIDw8IDgpICsgKGFscGhhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJlbnQub25EaXNhYmxlID0gZnVuY3Rpb24oKXtcbiAgICAgIGlmKE1vZEFQSS5tY2luc3RhbmNlLiR0aGVXb3JsZCAhPSBudWxsKXtcbiAgICAgICAgdmFyIHJnYiA9IGhzbDJyZ2IoMCwwLDEwMCk7XG4gICAgICAgIHZhciByZWQgPSByZ2JbMF07XG4gICAgICAgIHZhciBncmVlbiA9IHJnYlsxXTtcbiAgICAgICAgdmFyIGJsdWUgPSByZ2JbMl07XG4gICAgICAgIHZhciBhbHBoYSA9IDI1NTtcbiAgICAgICAgTW9kQVBJLm1jaW5zdGFuY2UuJHRoZVdvcmxkLiRjbG91ZENvbG91ciA9IEJpZ0ludCgocmVkIDw8IDI0KSArIChncmVlbiA8PCAxNikgKyAoYmx1ZSA8PCA4KSArIChhbHBoYSkpXG4gICAgICB9XG4gICAgfVxuICB9IiwKICAiaW1wb3J0ICogYXMgZmxpZ2h0TU9EIGZyb20gXCIuLi9jaGVhdHMvZmxpZ2h0LnRzXCI7XG5pbXBvcnQgKiBhcyBmdWxsYnJpZ2h0TU9EIGZyb20gXCIuLi9jaGVhdHMvYXV0b2Zpc2gudHNcIjtcbmltcG9ydCAqIGFzIHN0ZXBNT0QgZnJvbSBcIi4uL2NoZWF0cy9zdGVwLnRzXCI7XG5pbXBvcnQgKiBhcyBhdXRvZmlzaE1PRCBmcm9tIFwiLi4vY2hlYXRzL2F1dG9maXNoLnRzXCI7XG5pbXBvcnQgKiBhcyBzZXJ2ZXJjcmFzaGVyTU9EIGZyb20gXCIuLi9jaGVhdHMvc2VydmVyY3Jhc2hlci50c1wiO1xuaW1wb3J0ICogYXMgcmdiY2xvdWRzTU9EIGZyb20gXCIuLi9jaGVhdHMvcmdiY2xvdWRzLnRzXCI7XG5pbXBvcnQgKiBhcyB1aSBmcm9tIFwiLi4vZ3VpXCI7XG5cbmZ1bmN0aW9uIHRlbXBsYXRlKG1vZCkge1xuICAvLyBtb2R1bGUgZnVuY3Rpb25zXG5cbiAgdGhpcy5lbmFibGVkRE9OT1RVU0UgPSBmYWxzZTtcbiAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7IH07XG4gIHRoaXMub25FbmFibGUgPSBmdW5jdGlvbigpIHsgfTtcbiAgdGhpcy5vbkRpc2FibGUgPSBmdW5jdGlvbigpIHsgfTtcbiAgdGhpcy5lbmFibGUgPSBmdW5jdGlvbigpIHsgdGhpcy5lbmFibGVkRE9OT1RVU0UgPSB0cnVlOyB0aGlzLm9uRW5hYmxlKCk7IHVpLnJlZnJlc2hNb2R1bGVzKCkgfTtcbiAgdGhpcy5kaXNhYmxlID0gZnVuY3Rpb24oKSB7IHRoaXMuZW5hYmxlZERPTk9UVVNFID0gZmFsc2U7IHRoaXMub25EaXNhYmxlKCk7IHVpLnJlZnJlc2hNb2R1bGVzKCkgfTtcbiAgdGhpcy5vbktleSA9IGZ1bmN0aW9uKGUpe307XG4gIHRoaXMub25NQ0tleSA9IGZ1bmN0aW9uKGUpe307XG4gIHRoaXMuZ2V0RW5hYmxlZCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5lbmFibGVkRE9OT1RVU0U7IH07XG4gIHRoaXMudG9nZ2xlID0gZnVuY3Rpb24oKSB7IHRoaXMuZW5hYmxlZERPTk9UVVNFID0gIXRoaXMuZW5hYmxlZERPTk9UVVNFOyBpZiAodGhpcy5lbmFibGVkRE9OT1RVU0UpIHsgdGhpcy5vbkVuYWJsZSgpIH0gZWxzZSB7IHRoaXMub25EaXNhYmxlKCk7IH0gfTtcbiAgLy9tYyBmdW5jdGlvbnNcbiAgdGhpcy5vblVwZGF0ZSA9IGZ1bmN0aW9uKCkgeyB9O1xuXG4gIHRoaXMuYWxlcnQgPSBmdW5jdGlvbigpIHsgYWxlcnQoKSB9O1xuXG4gIHRoaXMuc2V0dGluZ3MgPSBbXVxuXG4gIG1vZC5pbml0KHRoaXMpO1xufVxuXG5leHBvcnQgdmFyIGNhdGVnb3JpZXMgPSB7XG4gIG1vdmVtZW50OiBcIk1vdmVtZW50XCIsXG4gIHBsYXllcjogXCJQbGF5ZXJcIixcbiAgcmVuZGVyOiBcIlJlbmRlclwiLFxuICBmdW46IFwiRnVuXCJcbn1cblxuZXhwb3J0IHZhciBtb2R1bGVzID0ge1xuICBmbGlnaHQ6IHtcbiAgICBuYW1lOiBcIkZsaWdodFwiLFxuICAgIGZ1bmN0aW9uOiBuZXcgdGVtcGxhdGUoZmxpZ2h0TU9EKSxcbiAgICBjYXRlZ29yeTogXCJNb3ZlbWVudFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFsbG93cyB5b3UgdG8gZmx5XCIsXG4gIH0sXG4gIHN0ZXA6IHtcbiAgICBuYW1lOiBcIlN0ZXBcIixcbiAgICBmdW5jdGlvbjogbmV3IHRlbXBsYXRlKHN0ZXBNT0QpLFxuICAgIGNhdGVnb3J5OiBcIk1vdmVtZW50XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQWxsb3dzIHlvdSB0byBzdGVwXCIsXG4gIH0sXG4gIGF1dG9maXNoOiB7XG4gICAgbmFtZTogXCJBdXRvRmlzaFwiLFxuICAgIGZ1bmN0aW9uOiBuZXcgdGVtcGxhdGUoYXV0b2Zpc2hNT0QpLFxuICAgIGNhdGVnb3J5OiBcIlBsYXllclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkF1dG9tYXRpY2FsbHkgY2FzdHMgYW5kIHJlZWxzIHJvZFwiLFxuICB9LFxuXG4gIHNlcnZlcmNyYXNoZXI6IHtcbiAgICBuYW1lOiBcIlNlcnZlciBDcmFzaGVyXCIsXG4gICAgZnVuY3Rpb246IG5ldyB0ZW1wbGF0ZShzZXJ2ZXJjcmFzaGVyTU9EKSxcbiAgICBjYXRlZ29yeTogXCJFeHBsb2l0XCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2VuZHMganVzdCBhIGZldyBzd2luZyBwYWNrZXRzIDspXCIsXG4gIH0sXG5cbiAgcmdiY2xvdWRzOiB7XG4gICAgbmFtZTogXCJSR0IgQ2xvdWRzXCIsXG4gICAgZnVuY3Rpb246IG5ldyB0ZW1wbGF0ZShyZ2JjbG91ZHNNT0QpLFxuICAgIGNhdGVnb3J5OiBcIlJlbmRlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNsb3VkcyBnbyB3ZWVlZVwiLFxuICB9XG59IiwKICAiaW1wb3J0IHsgY2xpZW50TmFtZSB9IGZyb20gXCIuL3V0aWwvY2xpZW50TmFtZVwiO1xuaW1wb3J0IHsgbW9kdWxlcywgY2F0ZWdvcmllcyB9IGZyb20gXCIuL3V0aWwvYWN0dWFsTW9kdWxlc1wiO1xuXG5cbi8vIGRlbGV0ZSB0aGUgdWlcbmV4cG9ydCBmdW5jdGlvbiBkZXN0cm95KCkge1xuICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ1aVwiKSAhPSBudWxsKSB7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ1aVwiKS5yZW1vdmUoKTtcbiAgfVxufVxuXG52YXIgY29udGFpbmVyO1xuXG5cbi8vIGNoZWNrIGlmIG9wZW5cbmV4cG9ydCBmdW5jdGlvbiBpc09wZW4oKSB7XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInVpXCIpID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuXG4vLyBvcGVuIGEgc2V0dGluZyBtZW51XG5leHBvcnQgZnVuY3Rpb24gc2V0dGluZyhtb2R1bGUpIHtcbiAgLyp2YXIgbHN0ID0gW1xuICAgIHtcbiAgICAgIG5hbWU6IFwiTW9kZVwiLFxuICAgICAgdHlwZTogXCJMaXN0XCIsXG4gICAgICBtb2RlczogW1wiQWJpbGl0aWVzXCIsIFwiUGFja2V0XCJdLFxuICAgICAgY3VycmVudDogMFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJTcGVlZFwiLFxuICAgICAgdHlwZTogXCJTbGlkZXJcIixcbiAgICAgIG1pbjogMSxcbiAgICAgIG1heDogNCxcbiAgICAgIGN1cnJlbnQ6IDFcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiVGVzdFwiLFxuICAgICAgdHlwZTogXCJCb29sZWFuXCIsXG4gICAgICB0b2dnbGVkOiB0cnVlXG4gICAgfSxcbiAgXSovXG4gIHZhciBsc3QgPSBtb2R1bGUuZnVuY3Rpb24uc2V0dGluZ3M7XG4gIGNvbnNvbGUubG9nKGxzdCk7XG4gIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgcy5jbGFzc05hbWUgPSBcInNldHRpbmdcIjtcbiAgcy5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgcy5zdHlsZS5jb2xvciA9IFwid2hpdGVcIjtcbiAgcy5zdHlsZS5iYWNrZHJvcEZpbHRlciA9IFwiYmx1cig4cHgpXCI7XG4gIHMuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLDAsMCwwLjUpXCI7XG4gIHMuc3R5bGUuYm9yZGVyUmFkaXVzID0gXCIxNXB4XCI7XG4gIHMuc3R5bGUucGFkZGluZyA9IFwiMTVweFwiO1xuICBzLnN0eWxlLmZvbnRGYW1pbHkgPSBcIm1vbm9zcGFjZVwiO1xuICBzLnN0eWxlLm92ZXJmbG93WSA9IFwiaGlkZGVuXCI7XG4gIHMuc3R5bGUuYW5pbWF0aW9uID0gXCJyZ2IgNHMgbGluZWFyIGluZmluaXRlXCI7XG4gIHMuc3R5bGUud2lkdGggPSBcIjE1JVwiO1xuICBzLnN0eWxlLmhlaWdodCA9IFwiNTAlXCI7XG4gIHMuc3R5bGUudG9wID0gXCIxMDBweFwiXG4gIHMuc3R5bGUubGVmdCA9IFwiMTAwcHhcIlxuXG4gIHMuc3R5bGUuekluZGV4ID0gXCIxMDAwXCI7XG4gIHMuc3R5bGUuYmFja2Ryb3BGaWx0ZXIgPSBcImJsdXIoOHB4KVwiO1xuXG4gIHMuc3R5bGUucmVzaXplID0gXCJib3RoXCI7XG5cbiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICB0aXRsZS5pbm5lclRleHQgPSBtb2R1bGUubmFtZTtcbiAgdGl0bGUuc3R5bGUuZm9udFNpemUgPSBcIjIycHhcIjtcbiAgcy5hcHBlbmRDaGlsZCh0aXRsZSk7XG5cbiAgdmFyIGNsb3NlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgY2xvc2UuaW5uZXJUZXh0ID0gXCJYXCI7XG4gIGNsb3NlLnN0eWxlLmZvbnRTaXplID0gXCIyOHB4XCI7XG4gIGNsb3NlLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICBjbG9zZS5zdHlsZS5yaWdodCA9IFwiMTVweFwiO1xuICBjbG9zZS5zdHlsZS50b3AgPSBcIjEwcHhcIjtcbiAgY2xvc2Uuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XG4gIGNsb3NlLm9uY2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICBzLnJlbW92ZSgpO1xuICB9O1xuICBzLmFwcGVuZENoaWxkKGNsb3NlKTtcblxuXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocyk7XG5cbiAgZm9yIChsZXQgaSBpbiBsc3QpIHtcbiAgICBpZiAobHN0Lmhhc093blByb3BlcnR5KGkpKSB7XG5cbiAgICAgIHZhciBiZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBiZy5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDEwMCwxMDAsMTAwLDAuNSlcIjtcbiAgICAgIGJnLnN0eWxlLm1hcmdpbiA9IFwiNXB4XCI7XG4gICAgICBiZy5zdHlsZS5wYWRkaW5nID0gXCI1cHhcIjtcbiAgICAgIGJnLnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiMTBweFwiO1xuICAgICAgcy5hcHBlbmRDaGlsZChiZyk7XG4gICAgICBpZiAobHN0W2ldLnR5cGUgPT0gXCJMaXN0XCIpIHtcbiAgICAgICAgdmFyIHNlbERlc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBzZWxEZXNjLnN0eWxlLmZvbnRTaXplID0gXCIyMHB4XCI7XG4gICAgICAgIHNlbERlc2MuaW5uZXJUZXh0ID0gYCR7bHN0W2ldLm5hbWV9IC0gJHtsc3RbaV0uY3VycmVudH1gO1xuICAgICAgICBiZy5hcHBlbmRDaGlsZChzZWxEZXNjKTtcbiAgICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIik7XG4gICAgICAgIHNlbC5vbmNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGxzdFtpXS5jdXJyZW50ID0gcGFyc2VJbnQoc2VsLnZhbHVlKTtcbiAgICAgICAgICBzZWxEZXNjLmlubmVyVGV4dCA9IGAke2xzdFtpXS5uYW1lfSAtICR7bHN0W2ldLmN1cnJlbnR9YDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBqIGluIGxzdFtpXS5tb2Rlcykge1xuICAgICAgICAgIGlmIChsc3RbaV0ubW9kZXMuaGFzT3duUHJvcGVydHkoaikpIHtcbiAgICAgICAgICAgIHZhciBvcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIpO1xuICAgICAgICAgICAgb3B0LmlubmVyVGV4dCA9IGxzdFtpXS5tb2Rlc1tqXTtcbiAgICAgICAgICAgIG9wdC52YWx1ZSA9IGogKyBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiZy5hcHBlbmRDaGlsZChzZWwpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxzdFtpXS50eXBlID09IFwiU2xpZGVyXCIpIHtcbiAgICAgICAgdmFyIHNsaWRlRGVzYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIHNsaWRlRGVzYy5zdHlsZS5mb250U2l6ZSA9IFwiMjBweFwiO1xuICAgICAgICBzbGlkZURlc2MuaW5uZXJUZXh0ID0gYCR7bHN0W2ldLm5hbWV9IC0gJHtsc3RbaV0uY3VycmVudH1gO1xuICAgICAgICBiZy5hcHBlbmRDaGlsZChzbGlkZURlc2MpO1xuICAgICAgICB2YXIgc2xpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgICAgIHNsaWRlLnR5cGUgPSBcInJhbmdlXCI7XG4gICAgICAgIHNsaWRlLnN0ZXAgPSBsc3RbaV0uc3RlcDtcbiAgICAgICAgc2xpZGUubWluID0gbHN0W2ldLm1pbjtcbiAgICAgICAgc2xpZGUubWF4ID0gbHN0W2ldLm1heDtcbiAgICAgICAgc2xpZGUudmFsdWUgPSBsc3RbaV0uY3VycmVudDtcbiAgICAgICAgc2xpZGUub25jaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICBsc3RbaV0uY3VycmVudCA9IHBhcnNlRmxvYXQoc2xpZGUudmFsdWUpO1xuICAgICAgICAgIHNsaWRlRGVzYy5pbm5lclRleHQgPSBgJHtsc3RbaV0ubmFtZX0gLSAke2xzdFtpXS5jdXJyZW50fWA7XG4gICAgICAgIH1cbiAgICAgICAgYmcuYXBwZW5kQ2hpbGQoc2xpZGUpO1xuICAgICAgfSBlbHNlIGlmIChsc3RbaV0udHlwZSA9PSBcIkJvb2xlYW5cIikge1xuICAgICAgICB2YXIgYm9vbERlc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBib29sRGVzYy5zdHlsZS5mb250U2l6ZSA9IFwiMjBweFwiO1xuICAgICAgICBib29sRGVzYy5pbm5lclRleHQgPSBgJHtsc3RbaV0ubmFtZX0gLSAke2xzdFtpXS50b2dnbGVkfWA7XG4gICAgICAgIGJnLmFwcGVuZENoaWxkKGJvb2xEZXNjKTtcbiAgICAgICAgdmFyIGJvb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgICAgIGJvb2wudHlwZSA9IFwiY2hlY2tib3hcIjtcbiAgICAgICAgYm9vbC5jaGVja2VkID0gbHN0W2ldLnRvZ2dsZWQ7XG4gICAgICAgIGJvb2wub25jaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICBsc3RbaV0udG9nZ2xlZCA9IGJvb2wuY2hlY2tlZDtcbiAgICAgICAgICBib29sRGVzYy5pbm5lclRleHQgPSBgJHtsc3RbaV0ubmFtZX0gLSAke2xzdFtpXS50b2dnbGVkfWA7XG4gICAgICAgIH1cbiAgICAgICAgYmcuYXBwZW5kQ2hpbGQoYm9vbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuLy9jcmVhdGUgdGhlIGd1aVxuZXhwb3J0IGZ1bmN0aW9uIG9wZW4oKSB7XG4gIGRvY3VtZW50LmV4aXRQb2ludGVyTG9jaygpO1xuICB2YXIgY24gPSBjbGllbnROYW1lO1xuXG4gIGNvbnN0IHVpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuICB1aS5pZCA9IFwidWlcIjtcbiAgdWkuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gIHVpLnN0eWxlLndpZHRoID0gXCI2NiVcIjtcbiAgdWkuc3R5bGUuaGVpZ2h0ID0gXCI2NiVcIjtcbiAgdWkuc3R5bGUudG9wID0gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgKiAwLjE2NSArIFwicHhcIjtcbiAgdWkuc3R5bGUubGVmdCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKiAwLjE2NSArIFwicHhcIjtcbiAgdWkuc3R5bGUuY29sb3IgPSBcIndoaXRlXCI7XG4gIHVpLnN0eWxlLmJhY2tkcm9wRmlsdGVyID0gXCJibHVyKDhweClcIjtcbiAgdWkuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLDAsMCwwLjc1KVwiO1xuICB1aS5zdHlsZS5ib3JkZXJSYWRpdXMgPSBcIjE1cHhcIjtcbiAgdWkuc3R5bGUucGFkZGluZyA9IFwiMTVweFwiO1xuICB1aS5zdHlsZS5ib3hTaGFkb3cgPSBcIjBweCAwcHggNDBweCByZ2JhKDAsIDE5NSwgMjU1LDAuNSlcIjtcbiAgdWkuc3R5bGUuZm9udEZhbWlseSA9IFwibW9ub3NwYWNlXCI7XG4gIHVpLnN0eWxlLm92ZXJmbG93WSA9IFwiaGlkZGVuXCI7XG4gIHVpLnN0eWxlLmFuaW1hdGlvbiA9IFwicmdiIDRzIGxpbmVhciBpbmZpbml0ZVwiO1xuXG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh1aSk7XG5cbiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICB0aXRsZS5pbm5lclRleHQgPSBjbjtcbiAgdGl0bGUuc3R5bGUuZm9udFNpemUgPSBcIjI0cHhcIjtcbiAgdGl0bGUuc3R5bGUubWFyZ2luID0gXCI1cHhcIjtcbiAgdWkuYXBwZW5kQ2hpbGQodGl0bGUpO1xuXG4gIHZhciBzZWFyY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gIHNlYXJjaC5zdHlsZS53aWR0aCA9IFwiMzMlXCI7XG4gIHNlYXJjaC50eXBlID0gXCJ0ZXh0XCI7XG4gIHNlYXJjaC5zdHlsZS5ib3JkZXIgPSBcInNvbGlkIDJweCByZ2JhKDIwMCwyMDAsMjAwLDAuNSlcIjtcbiAgc2VhcmNoLnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiMTBweFwiO1xuICBzZWFyY2guc3R5bGUuY29sb3IgPSBcInJnYmEoMjU1LDI1NSwyNTUsMSlcIlxuICBzZWFyY2guc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG4gIHNlYXJjaC5zdHlsZS5wYWRkaW5nID0gXCI4cHhcIjtcbiAgc2VhcmNoLnN0eWxlLm1hcmdpbkxlZnQgPSBcIjIwcHhcIjtcbiAgc2VhcmNoLnN0eWxlLmZvbnRTaXplID0gXCIyMnB4XCI7XG4gIHNlYXJjaC5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDUwLDUwLDUwLC4yNClcIjtcbiAgc2VhcmNoLnBsYWNlaG9sZGVyID0gXCLwn5SO77iOIFNlYXJjaFwiXG4gIHNlYXJjaC5zdHlsZS5iYWNrZHJvcEZpbHRlciA9IFwiYmx1cig4cHgpXCI7XG4gIHRpdGxlLmFwcGVuZENoaWxkKHNlYXJjaCk7XG5cbiAgY29uc3QgY2xvc2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjbG9zZS5pbm5lclRleHQgPSBcIlhcIjtcbiAgY2xvc2Uuc3R5bGUuZm9udFNpemUgPSBcIjI4cHhcIjtcbiAgY2xvc2Uuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gIGNsb3NlLnN0eWxlLnJpZ2h0ID0gXCIxNXB4XCI7XG4gIGNsb3NlLnN0eWxlLnRvcCA9IFwiMTBweFwiO1xuICBjbG9zZS5zdHlsZS5jdXJzb3IgPSBcInBvaW50ZXJcIjtcbiAgY2xvc2Uub25jbGljayA9IGZ1bmN0aW9uKCkge1xuICAgIGRlc3Ryb3koKTtcbiAgfTtcbiAgdWkuYXBwZW5kQ2hpbGQoY2xvc2UpO1xuXG5cblxuICB2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYmFyLnN0eWxlLm92ZXJmbG93WCA9IFwic2Nyb2xsXCI7XG4gIHVpLmFwcGVuZENoaWxkKGJhcik7XG5cbiAgZm9yIChsZXQgaSBpbiBjYXRlZ29yaWVzKSB7XG4gICAgaWYgKGNhdGVnb3JpZXMuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIGNhdGVnb3J5LmlubmVyVGV4dCA9IGNhdGVnb3JpZXNbaV07XG4gICAgICBjYXRlZ29yeS5zdHlsZS5mb250U2l6ZSA9IFwiMThweFwiO1xuICAgICAgY2F0ZWdvcnkuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XG4gICAgICBjYXRlZ29yeS5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcbiAgICAgIGNhdGVnb3J5LnN0eWxlLnBhZGRpbmcgPSBcIjEwcHhcIjtcbiAgICAgIGNhdGVnb3J5LnN0eWxlLm1hcmdpbiA9IFwiNXB4XCI7XG4gICAgICBjYXRlZ29yeS5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDEwMCwxMDAsMTAwLDAuNSlcIjtcbiAgICAgIGNhdGVnb3J5LnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiNXB4XCI7XG4gICAgICBjYXRlZ29yeS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgIH07XG5cbiAgICAgIGJhci5hcHBlbmRDaGlsZChjYXRlZ29yeSk7XG4gICAgfVxuICB9XG5cbiAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNlbnRlclwiKTtcbiAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dZID0gXCJzY3JvbGxcIjtcbiAgdWkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblxuXG4gIHJlZnJlc2hNb2R1bGVzKCk7XG59XG5cblxuLy8gUmVsb2FkIG1vZHVsZSBsaXN0XG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaE1vZHVsZXMoKSB7XG4gIGlmIChpc09wZW4oKSkge1xuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgaW4gbW9kdWxlcykge1xuICAgICAgaWYgKG1vZHVsZXMuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgdmFyIG1vZGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICB2YXIgbW9kbHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgbW9kbHRpdGxlLmlubmVyVGV4dCA9IGAke21vZHVsZXNbaV0ubmFtZX1gO1xuICAgICAgICBtb2RsdGl0bGUuc3R5bGUuZm9udFNpemUgPSBcIjIycHhcIjtcbiAgICAgICAgbW9kbHRpdGxlLnN0eWxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcbiAgICAgICAgbW9kbC5hcHBlbmRDaGlsZChtb2RsdGl0bGUpO1xuXG4gICAgICAgIG1vZGwuc3R5bGUudGV4dEFsaWduID0gXCJsZWZ0XCI7XG4gICAgICAgIG1vZGwuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG5cbiAgICAgICAgbW9kbC5zdHlsZS53aWR0aCA9IFwiMjUlXCI7XG4gICAgICAgIG1vZGwuc3R5bGUuaGVpZ2h0ID0gXCIyNSVcIjtcbiAgICAgICAgbW9kbC5zdHlsZS5wYWRkaW5nID0gXCI1cHhcIjtcbiAgICAgICAgbW9kbC5zdHlsZS5ib3JkZXJSYWRpdXMgPSBcIjE1cHhcIjtcbiAgICAgICAgbW9kbC5zdHlsZS5tYXJnaW4gPSBcIjEwcHhcIjtcbiAgICAgICAgbW9kbC5zdHlsZS5jdXJzb3IgPSBcInBvaW50ZXJcIjtcblxuICAgICAgICBtb2RsLnN0eWxlLmJhY2tncm91bmQgPSBcInJnYmEoMTAwLDEwMCwxMDAsMC41KVwiO1xuICAgICAgICBpZiAobW9kdWxlc1tpXS5mdW5jdGlvbi5nZXRFbmFibGVkKCkpIHtcbiAgICAgICAgICBtb2RsLnN0eWxlLmJveFNoYWRvdyA9IFwiMHB4IDBweCAxNXB4IHJnYmEoMCwgMjU1LCAwLDEpXCI7XG4gICAgICAgIH1cblxuICAgICAgICBtb2RsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgbW9kdWxlc1tpXS5mdW5jdGlvbi50b2dnbGUoKTtcbiAgICAgICAgICByZWZyZXNoTW9kdWxlcygpO1xuICAgICAgICB9O1xuXG4gICAgICAgIG1vZGwub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBuZXcgc2V0dGluZyhtb2R1bGVzW2ldKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhtb2R1bGVzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChtb2RsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCiAgImltcG9ydCB7IGNsaWVudE5hbWUgfSBmcm9tIFwiLi91dGlsL2NsaWVudE5hbWUudHNcIjtcbmltcG9ydCB7IGxvZ1RvQ29uc29sZSB9IGZyb20gXCIuL3V0aWwvY29uc29sZUxvZ2dlclwiO1xuaW1wb3J0IHsgbG9nVG9DaGF0IH0gZnJvbSBcIi4vdXRpbC9jaGF0TG9nZ2VyXCI7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSBcIi4vYXNzZXRzXCI7XG5pbXBvcnQgKiBhcyB1aSBmcm9tIFwiLi9ndWkudHNcIjtcblxubG9nVG9Db25zb2xlKFwiSW5pdC4uLlwiKTtcbmxvZ1RvQ2hhdChcIkluaXQuLi5cIik7XG5cbmxvZ1RvQ2hhdChcIkxvYWRpbmcgbW9kdWxlcy4uLlwiKTtcblxuaW1wb3J0IHsgbW9kdWxlcyB9IGZyb20gXCIuL3V0aWwvYWN0dWFsTW9kdWxlc1wiO1xuXG5Nb2RBUEkucmVxdWlyZShcInBsYXllclwiKTtcblxuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24oZSkge1xuICBpZiAoXG4gICAgZS5sb2NhdGlvbiA9PSBLZXlib2FyZEV2ZW50LkRPTV9LRVlfTE9DQVRJT05fUklHSFQgJiZcbiAgICBlLmtleSA9PSBcIlNoaWZ0XCIgJiZcbiAgICAhdWkuaXNPcGVuKClcbiAgKSB7XG4gICAgdWkub3BlbigpO1xuICB9XG4gIGZvciAobGV0IGtleSBpbiBtb2R1bGVzKSB7XG4gICAgaWYgKG1vZHVsZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgbW9kdWxlc1trZXldLmZ1bmN0aW9uLm9uS2V5KGUpO1xuICAgIH1cbiAgfVxufSk7XG5cbk1vZEFQSS5hZGRFdmVudExpc3RlbmVyKFwia2V5XCIsIGZ1bmN0aW9uKGUpIHtcbiAgaWYgKGUua2V5ID09IDU0KSB7XG4gICAgdWkuZGVzdHJveTtcbiAgfVxuICBmb3IgKGxldCBrZXkgaW4gbW9kdWxlcykge1xuICAgIGlmIChtb2R1bGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIG1vZHVsZXNba2V5XS5mdW5jdGlvbi5vbk1DS2V5KGUpO1xuICAgIH1cbiAgfVxufSk7XG5cbk1vZEFQSS5hZGRFdmVudExpc3RlbmVyKFwidXBkYXRlXCIsIGZ1bmN0aW9uKCkge1xuICBmb3IgKGxldCBrZXkgaW4gbW9kdWxlcykge1xuICAgIGlmIChtb2R1bGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIG1vZHVsZXNba2V5XS5mdW5jdGlvbi5vblVwZGF0ZSgpO1xuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IHN0eWxlU2hlZXQgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXTtcblxuc3R5bGVTaGVldC5pbnNlcnRSdWxlKGBcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogMTBweDtcbn1gKTtcblxuc3R5bGVTaGVldC5pbnNlcnRSdWxlKGBcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDApO1xufWApO1xuXG5zdHlsZVNoZWV0Lmluc2VydFJ1bGUoYFxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5iYWNrZ3JvdW5kOiByZ2JhKDEwMCwxMDAsMTAwLDAuNSk7XG5maWx0ZXI6IGJsdXIoNHB4KTtcbn1gKTtcblxuc3R5bGVTaGVldC5pbnNlcnRSdWxlKGBAa2V5ZnJhbWVzIHJnYiB7XG4gIDAlIHsgYm94LXNoYWRvdzogMHB4IDBweCA0MHB4IHJnYmEoMjU1LCAwLCAwLDAuNzUpOyB9XG4gIDE2JSB7IGJveC1zaGFkb3c6IDBweCAwcHggNDBweCByZ2JhKDI1NSwgMjU1LCAwLDAuNzUpOyB9XG4gIDMzJSB7IGJveC1zaGFkb3c6IDBweCAwcHggNDBweCByZ2JhKDAsIDI1NSwgMCwwLjc1KTsgfVxuICA1MCUgeyBib3gtc2hhZG93OiAwcHggMHB4IDQwcHggcmdiYSgwLCAyNTUsIDI1NSwwLjc1KTsgfVxuICA2NiUgeyBib3gtc2hhZG93OiAwcHggMHB4IDQwcHggcmdiYSgwLCAwLCAyNTUsMC43NSk7IH1cbiAgODMlIHsgYm94LXNoYWRvdzogMHB4IDBweCA0MHB4IHJnYmEoMjU1LCAwLCAyNTUsMC43NSk7IH1cbiAgMTAwJSB7IGJveC1zaGFkb3c6IDBweCAwcHggNDBweCByZ2JhKDI1NSwgMCwgMCwwLjc1KTsgfVxufWApO1xuXG5mdW5jdGlvbiBjdXN0b21VSSgpIHtcbiAgLy9AdHMtaWdub3JlXG4gIGlmIChNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbiAhPSBudWxsKSB7XG4gICAgaWYgKFxuICAgICAgTW9kQVBJLmN1cnJlbnRTY3JlZW4oKS5zdGFydHNXaXRoKFwibmV0Lm1pbmVjcmFmdC5jbGllbnQuZ3VpLkd1aU1haW5NZW51XCIpXG4gICAgKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBzaW5nbGVQbGF5ZXIgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbMF07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBtdWx0aVBsYXllciA9XG4gICAgICAgIE1vZEFQSS5tY2luc3RhbmNlLiRjdXJyZW50U2NyZWVuLiRidXR0b25MaXN0LiRhcnJheTEuZGF0YVsxXTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdmFyIG1vZHMgPSBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbMl07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBmb3JrT25HaXRIdWIgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbM107XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBvcHRpb25zID1cbiAgICAgICAgTW9kQVBJLm1jaW5zdGFuY2UuJGN1cnJlbnRTY3JlZW4uJGJ1dHRvbkxpc3QuJGFycmF5MS5kYXRhWzRdO1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB2YXIgZWRpdFByb2ZpbGUgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbNV07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBsYXVuZ3VhZ2UgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbNl07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBjdXJyZW50U2NyZWVuID0gTW9kQVBJLm1jaW5zdGFuY2UuJGN1cnJlbnRTY3JlZW47XG5cbiAgICAgIHZhciBidXR0b25EaXN0YW5jZSA9IDQyO1xuICAgICAgdmFyIGJ1dHRvbkRpc3RhbmNlUmVsID0gMjI7XG4gICAgICB2YXIgYnV0dG9uU3BhY2luZyA9IDI7XG4gICAgICB2YXIgYnV0dG9uV2lkdGggPSAxMDA7XG4gICAgICB2YXIgZW5jID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAvL29wdGlvbnNcbiAgICAgIG9wdGlvbnMuJHdpZHRoMTMgPSBidXR0b25XaWR0aDtcbiAgICAgIG9wdGlvbnMuJHlQb3NpdGlvbiA9IGN1cnJlbnRTY3JlZW4uJGhlaWdodDcgLSBidXR0b25EaXN0YW5jZTtcbiAgICAgIC8vbW9kc1xuICAgICAgbW9kcy4kd2lkdGgxMyA9IGJ1dHRvbldpZHRoIC8gMjtcbiAgICAgIG1vZHMuJHhQb3NpdGlvbjAgPSBvcHRpb25zLiR4UG9zaXRpb24wIC0gYnV0dG9uV2lkdGggLyAyIC0gYnV0dG9uU3BhY2luZztcbiAgICAgIG1vZHMuJHlQb3NpdGlvbiA9IGN1cnJlbnRTY3JlZW4uJGhlaWdodDcgLSBidXR0b25EaXN0YW5jZTtcbiAgICAgIC8vU2luZ2xlUGxheWVyXG4gICAgICBzaW5nbGVQbGF5ZXIuJHdpZHRoMTMgPSBidXR0b25XaWR0aDtcbiAgICAgIHNpbmdsZVBsYXllci4keVBvc2l0aW9uID0gb3B0aW9ucy4keVBvc2l0aW9uIC0gYnV0dG9uRGlzdGFuY2VSZWw7XG4gICAgICAvL011bHRpUGxheWVyXG4gICAgICBtdWx0aVBsYXllci4kd2lkdGgxMyA9IGJ1dHRvbldpZHRoICsgbGF1bmd1YWdlLiR3aWR0aDEzICsgYnV0dG9uU3BhY2luZztcbiAgICAgIG11bHRpUGxheWVyLiR4UG9zaXRpb24wID1cbiAgICAgICAgc2luZ2xlUGxheWVyLiR4UG9zaXRpb24wICsgYnV0dG9uV2lkdGggKyBidXR0b25TcGFjaW5nO1xuICAgICAgbXVsdGlQbGF5ZXIuJHlQb3NpdGlvbiA9IG9wdGlvbnMuJHlQb3NpdGlvbiAtIGJ1dHRvbkRpc3RhbmNlUmVsO1xuICAgICAgLy9FZGl0IHByb2ZpbGVcbiAgICAgIGVkaXRQcm9maWxlLiR3aWR0aDEzID0gYnV0dG9uV2lkdGg7XG4gICAgICBlZGl0UHJvZmlsZS4keVBvc2l0aW9uID0gY3VycmVudFNjcmVlbi4kaGVpZ2h0NyAtIGJ1dHRvbkRpc3RhbmNlO1xuICAgICAgLy9MYW5nXG4gICAgICBsYXVuZ3VhZ2UuJHhQb3NpdGlvbjAgPVxuICAgICAgICBlZGl0UHJvZmlsZS4keFBvc2l0aW9uMCArIGVkaXRQcm9maWxlLiR3aWR0aDEzICsgYnV0dG9uU3BhY2luZztcbiAgICAgIGxhdW5ndWFnZS4keVBvc2l0aW9uID0gY3VycmVudFNjcmVlbi4kaGVpZ2h0NyAtIGJ1dHRvbkRpc3RhbmNlO1xuICAgICAgLy9Gb3JrXG4gICAgICBmb3JrT25HaXRIdWIuJHdpZHRoMTMgPSBidXR0b25XaWR0aCAvIDI7XG4gICAgICBmb3JrT25HaXRIdWIuJHlQb3NpdGlvbiA9IG1vZHMuJHlQb3NpdGlvbiAtIGJ1dHRvbkRpc3RhbmNlUmVsO1xuICAgICAgZm9ya09uR2l0SHViLiR4UG9zaXRpb24wID0gbW9kcy4keFBvc2l0aW9uMDtcbiAgICAgIGZvcmtPbkdpdEh1Yi4kZGlzcGxheVN0cmluZy4kY2hhcmFjdGVycy5kYXRhID0gZW5jLmVuY29kZShcIkZvcmtcIik7XG5cbiAgICAgIGN1cnJlbnRTY3JlZW4uJG9wZW5HTFdhcm5pbmcxLiRjaGFyYWN0ZXJzLmRhdGEgPSBlbmMuZW5jb2RlKFwiXCIpO1xuICAgICAgLy9jdXJyZW50U2NyZWVuLiRzcGxhc2hUZXh0LiRjaGFyYWN0ZXJzLmRhdGEgPSBlbmMuZW5jb2RlKFwiSnVzdGluIGlzIHRoZSBzcGVkIHZlcnNpb24gb2YgRGFuaWVsXCIpXG5cbiAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlcnZlcnBpbmdsaXN0XCIpID09IG51bGwpIHtcbiAgICAgICAgdmFyIHNlcnZlcnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBzZXJ2ZXJzLmlkID0gXCJzZXJ2ZXJwaW5nbGlzdFwiO1xuXG4gICAgICAgIHZhciBwaW5ncyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFlb24gTmV0d29ya1wiLFxuICAgICAgICAgICAgYWRkcmVzczogXCJ3c3M6Ly9hZW9uLW5ldHdvcmsubmV0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFyY2ggTUNcIixcbiAgICAgICAgICAgIGFkZHJlc3M6IFwid3NzOi8vbWMuYXJjaC5sb2xcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSGVsbGl1bSBOZXR3b3JrXCIsXG4gICAgICAgICAgICBhZGRyZXNzOiBcIndzczovL2hlbGx0ZWNoLmNjXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNsZXZlciBUZWFjaGluZ1wiLFxuICAgICAgICAgICAgYWRkcmVzczogXCJ3c3M6Ly9jbGV2ZXItdGVhY2hpbmcuY29tXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlp5dGhcIixcbiAgICAgICAgICAgIGFkZHJlc3M6IFwid3NzOi8vbWMuenl0aC5tZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgc2VydmVycy5zdHlsZS5vdmVyZmxvd1kgPSBcInNjcm9sbFwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLndvcmRCcmVhayA9IFwiYnJlYWstYWxsXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUudG9wID0gXCIxMCVcIjtcbiAgICAgICAgc2VydmVycy5zdHlsZS5sZWZ0ID0gXCIyLjUlXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUud2lkdGggPSBcIjE1JVwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLmhlaWdodCA9IFwiODAlXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUuY29sb3IgPSBcInJnYmEoMjU1LDI1NSwyNTUsMSlcIjtcbiAgICAgICAgc2VydmVycy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInJnYmEoMCwwLDAsMC41KVwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiMTVweFwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLmZvbnRGYW1pbHkgPSBcIm1vbm9zcGFjZVwiO1xuXG4gICAgICAgIHBpbmdzLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgICAgICAgIGNvbnN0IGN1ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgY3VyLnN0eWxlLm1hcmdpbiA9IFwiMTBweFwiO1xuICAgICAgICAgIHNlcnZlcnMuYXBwZW5kQ2hpbGQoY3VyKTtcblxuICAgICAgICAgIGNvbnN0IGN1cmgyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICBjdXJoMi5zdHlsZS5mb250U2l6ZSA9IFwiMjBweFwiO1xuICAgICAgICAgIGN1cmgyLmlubmVyVGV4dCA9IGUubmFtZTtcbiAgICAgICAgICBjdXIuYXBwZW5kQ2hpbGQoY3VyaDIpO1xuXG4gICAgICAgICAgY29uc3QgY3Vyc2VydmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICBjdXJzZXJ2ZXIuaW5uZXJUZXh0ID0gZS5hZGRyZXNzO1xuICAgICAgICAgIGN1ci5hcHBlbmRDaGlsZChjdXJzZXJ2ZXIpO1xuXG4gICAgICAgICAgY29uc3QgcGxheWVyaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgcGxheWVyaW5mby5pbm5lclRleHQgPSBcIm5vdCBjb25uZWN0ZWRcIjtcbiAgICAgICAgICBwbGF5ZXJpbmZvLnN0eWxlLmNvbG9yID0gXCJyZWRcIjtcbiAgICAgICAgICBwbGF5ZXJpbmZvLnN0eWxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcbiAgICAgICAgICBwbGF5ZXJpbmZvLnN0eWxlLmZvbnRTaXplID0gXCIxNnB4XCI7XG4gICAgICAgICAgcGxheWVyaW5mby5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xuXG4gICAgICAgICAgY3VyLmFwcGVuZENoaWxkKHBsYXllcmluZm8pO1xuXG4gICAgICAgICAgY29uc3QgdGVzdHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoZS5hZGRyZXNzKTtcbiAgICAgICAgICBjb25zdCB0aW1lcGluZyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICB0ZXN0d2Vic29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgICAgIHRlc3R3ZWJzb2NrZXQuc2VuZChcIkFjY2VwdDogTU9URFwiKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdGVzdHdlYnNvY2tldC5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGUuZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgZGF0ID0gSlNPTi5wYXJzZShlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgaWYgKGRhdFtcInR5cGVcIl0udG9Mb3dlckNhc2UoKSA9PT0gXCJtb3RkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGxheWVyaW5mby5pbm5lclRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdFtcImRhdGFcIl1bXCJvbmxpbmVcIl0gKyBcIi9cIiArIGRhdFtcImRhdGFcIl1bXCJtYXhcIl07XG4gICAgICAgICAgICAgICAgICAgIHBsYXllcmluZm8uc3R5bGUuY29sb3IgPSBcImxpbWVcIjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcGluZy5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgcGluZy5zdHlsZS5mbG9hdCA9IFwicmlnaHRcIjtcbiAgICAgICAgICAgICAgICAgICAgcGluZy5pbm5lclRleHQgKz0gRGF0ZS5ub3coKSAtIHRpbWVwaW5nICsgXCJtc1wiO1xuICAgICAgICAgICAgICAgICAgICBwbGF5ZXJpbmZvLmFwcGVuZENoaWxkKHBpbmcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNlcnZlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZXJ2ZXJwaW5nbGlzdFwiKSAhPSBudWxsKSB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VydmVycGluZ2xpc3RcIikucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBjdXN0dWkgPSBzZXRJbnRlcnZhbChjdXN0b21VSSwgNTApO1xuXG4vL0N1c3RvbSBDdXJzb3JcbmRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjYW52YXNcIilbMF0uc3R5bGUuY3Vyc29yID1cbiAgJ3VybChcIicgKyBhc3NldHMuY3Vyc29yICsgJ1wiKSwgYXV0byc7XG5kb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd1cmwoXCInICsgYXNzZXRzLmN1cnNvciArICdcIiksIGF1dG8nO1xuXG5mdW5jdGlvbiBkZXN0cm95KCkge1xuICBjbGVhckludGVydmFsKGN1c3R1aSk7XG4gIHVpLmRlc3Ryb3koKTtcbiAgZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNhbnZhc1wiKVswXS5zdHlsZS5jdXJzb3IgPSBcImF1dG9cIjtcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBcImF1dG9cIjtcbiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VydmVycGluZ2xpc3RcIikgIT0gbnVsbCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VydmVycGluZ2xpc3RcIikucmVtb3ZlKCk7XG4gIH1cbn1cbiIsCiAgImltcG9ydCB7IGNsaWVudE5hbWUgfSBmcm9tIFwiLi91dGlsL2NsaWVudE5hbWUudHNcIjtcbmltcG9ydCB7IGxvZ1RvQ29uc29sZSB9IGZyb20gXCIuL3V0aWwvY29uc29sZUxvZ2dlclwiO1xuaW1wb3J0IHsgbG9nVG9DaGF0IH0gZnJvbSBcIi4vdXRpbC9jaGF0TG9nZ2VyXCI7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSBcIi4vYXNzZXRzXCI7XG5pbXBvcnQgKiBhcyB1aSBmcm9tIFwiLi9ndWkudHNcIjtcblxubG9nVG9Db25zb2xlKFwiSW5pdC4uLlwiKTtcbmxvZ1RvQ2hhdChcIkluaXQuLi5cIik7XG5cbmxvZ1RvQ2hhdChcIkxvYWRpbmcgbW9kdWxlcy4uLlwiKTtcblxuaW1wb3J0IHsgbW9kdWxlcyB9IGZyb20gXCIuL3V0aWwvYWN0dWFsTW9kdWxlc1wiO1xuXG5Nb2RBUEkucmVxdWlyZShcInBsYXllclwiKTtcblxuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24oZSkge1xuICBpZiAoXG4gICAgZS5sb2NhdGlvbiA9PSBLZXlib2FyZEV2ZW50LkRPTV9LRVlfTE9DQVRJT05fUklHSFQgJiZcbiAgICBlLmtleSA9PSBcIlNoaWZ0XCIgJiZcbiAgICAhdWkuaXNPcGVuKClcbiAgKSB7XG4gICAgdWkub3BlbigpO1xuICB9XG4gIGZvciAobGV0IGtleSBpbiBtb2R1bGVzKSB7XG4gICAgaWYgKG1vZHVsZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgbW9kdWxlc1trZXldLmZ1bmN0aW9uLm9uS2V5KGUpO1xuICAgIH1cbiAgfVxufSk7XG5cbk1vZEFQSS5hZGRFdmVudExpc3RlbmVyKFwia2V5XCIsIGZ1bmN0aW9uKGUpIHtcbiAgaWYgKGUua2V5ID09IDU0KSB7XG4gICAgdWkuZGVzdHJveTtcbiAgfVxuICBmb3IgKGxldCBrZXkgaW4gbW9kdWxlcykge1xuICAgIGlmIChtb2R1bGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIG1vZHVsZXNba2V5XS5mdW5jdGlvbi5vbk1DS2V5KGUpO1xuICAgIH1cbiAgfVxufSk7XG5cbk1vZEFQSS5hZGRFdmVudExpc3RlbmVyKFwidXBkYXRlXCIsIGZ1bmN0aW9uKCkge1xuICBmb3IgKGxldCBrZXkgaW4gbW9kdWxlcykge1xuICAgIGlmIChtb2R1bGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIG1vZHVsZXNba2V5XS5mdW5jdGlvbi5vblVwZGF0ZSgpO1xuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IHN0eWxlU2hlZXQgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXTtcblxuc3R5bGVTaGVldC5pbnNlcnRSdWxlKGBcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogMTBweDtcbn1gKTtcblxuc3R5bGVTaGVldC5pbnNlcnRSdWxlKGBcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDApO1xufWApO1xuXG5zdHlsZVNoZWV0Lmluc2VydFJ1bGUoYFxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5iYWNrZ3JvdW5kOiByZ2JhKDEwMCwxMDAsMTAwLDAuNSk7XG5maWx0ZXI6IGJsdXIoNHB4KTtcbn1gKTtcblxuc3R5bGVTaGVldC5pbnNlcnRSdWxlKGBAa2V5ZnJhbWVzIHJnYiB7XG4gIDAlIHsgYm94LXNoYWRvdzogMHB4IDBweCA0MHB4IHJnYmEoMjU1LCAwLCAwLDAuNzUpOyB9XG4gIDE2JSB7IGJveC1zaGFkb3c6IDBweCAwcHggNDBweCByZ2JhKDI1NSwgMjU1LCAwLDAuNzUpOyB9XG4gIDMzJSB7IGJveC1zaGFkb3c6IDBweCAwcHggNDBweCByZ2JhKDAsIDI1NSwgMCwwLjc1KTsgfVxuICA1MCUgeyBib3gtc2hhZG93OiAwcHggMHB4IDQwcHggcmdiYSgwLCAyNTUsIDI1NSwwLjc1KTsgfVxuICA2NiUgeyBib3gtc2hhZG93OiAwcHggMHB4IDQwcHggcmdiYSgwLCAwLCAyNTUsMC43NSk7IH1cbiAgODMlIHsgYm94LXNoYWRvdzogMHB4IDBweCA0MHB4IHJnYmEoMjU1LCAwLCAyNTUsMC43NSk7IH1cbiAgMTAwJSB7IGJveC1zaGFkb3c6IDBweCAwcHggNDBweCByZ2JhKDI1NSwgMCwgMCwwLjc1KTsgfVxufWApO1xuXG5mdW5jdGlvbiBjdXN0b21VSSgpIHtcbiAgLy9AdHMtaWdub3JlXG4gIGlmIChNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbiAhPSBudWxsKSB7XG4gICAgaWYgKFxuICAgICAgTW9kQVBJLmN1cnJlbnRTY3JlZW4oKS5zdGFydHNXaXRoKFwibmV0Lm1pbmVjcmFmdC5jbGllbnQuZ3VpLkd1aU1haW5NZW51XCIpXG4gICAgKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBzaW5nbGVQbGF5ZXIgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbMF07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBtdWx0aVBsYXllciA9XG4gICAgICAgIE1vZEFQSS5tY2luc3RhbmNlLiRjdXJyZW50U2NyZWVuLiRidXR0b25MaXN0LiRhcnJheTEuZGF0YVsxXTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdmFyIG1vZHMgPSBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbMl07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBmb3JrT25HaXRIdWIgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbM107XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBvcHRpb25zID1cbiAgICAgICAgTW9kQVBJLm1jaW5zdGFuY2UuJGN1cnJlbnRTY3JlZW4uJGJ1dHRvbkxpc3QuJGFycmF5MS5kYXRhWzRdO1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB2YXIgZWRpdFByb2ZpbGUgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbNV07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBsYXVuZ3VhZ2UgPVxuICAgICAgICBNb2RBUEkubWNpbnN0YW5jZS4kY3VycmVudFNjcmVlbi4kYnV0dG9uTGlzdC4kYXJyYXkxLmRhdGFbNl07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHZhciBjdXJyZW50U2NyZWVuID0gTW9kQVBJLm1jaW5zdGFuY2UuJGN1cnJlbnRTY3JlZW47XG5cbiAgICAgIHZhciBidXR0b25EaXN0YW5jZSA9IDQyO1xuICAgICAgdmFyIGJ1dHRvbkRpc3RhbmNlUmVsID0gMjI7XG4gICAgICB2YXIgYnV0dG9uU3BhY2luZyA9IDI7XG4gICAgICB2YXIgYnV0dG9uV2lkdGggPSAxMDA7XG4gICAgICB2YXIgZW5jID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAvL29wdGlvbnNcbiAgICAgIG9wdGlvbnMuJHdpZHRoMTMgPSBidXR0b25XaWR0aDtcbiAgICAgIG9wdGlvbnMuJHlQb3NpdGlvbiA9IGN1cnJlbnRTY3JlZW4uJGhlaWdodDcgLSBidXR0b25EaXN0YW5jZTtcbiAgICAgIC8vbW9kc1xuICAgICAgbW9kcy4kd2lkdGgxMyA9IGJ1dHRvbldpZHRoIC8gMjtcbiAgICAgIG1vZHMuJHhQb3NpdGlvbjAgPSBvcHRpb25zLiR4UG9zaXRpb24wIC0gYnV0dG9uV2lkdGggLyAyIC0gYnV0dG9uU3BhY2luZztcbiAgICAgIG1vZHMuJHlQb3NpdGlvbiA9IGN1cnJlbnRTY3JlZW4uJGhlaWdodDcgLSBidXR0b25EaXN0YW5jZTtcbiAgICAgIC8vU2luZ2xlUGxheWVyXG4gICAgICBzaW5nbGVQbGF5ZXIuJHdpZHRoMTMgPSBidXR0b25XaWR0aDtcbiAgICAgIHNpbmdsZVBsYXllci4keVBvc2l0aW9uID0gb3B0aW9ucy4keVBvc2l0aW9uIC0gYnV0dG9uRGlzdGFuY2VSZWw7XG4gICAgICAvL011bHRpUGxheWVyXG4gICAgICBtdWx0aVBsYXllci4kd2lkdGgxMyA9IGJ1dHRvbldpZHRoICsgbGF1bmd1YWdlLiR3aWR0aDEzICsgYnV0dG9uU3BhY2luZztcbiAgICAgIG11bHRpUGxheWVyLiR4UG9zaXRpb24wID1cbiAgICAgICAgc2luZ2xlUGxheWVyLiR4UG9zaXRpb24wICsgYnV0dG9uV2lkdGggKyBidXR0b25TcGFjaW5nO1xuICAgICAgbXVsdGlQbGF5ZXIuJHlQb3NpdGlvbiA9IG9wdGlvbnMuJHlQb3NpdGlvbiAtIGJ1dHRvbkRpc3RhbmNlUmVsO1xuICAgICAgLy9FZGl0IHByb2ZpbGVcbiAgICAgIGVkaXRQcm9maWxlLiR3aWR0aDEzID0gYnV0dG9uV2lkdGg7XG4gICAgICBlZGl0UHJvZmlsZS4keVBvc2l0aW9uID0gY3VycmVudFNjcmVlbi4kaGVpZ2h0NyAtIGJ1dHRvbkRpc3RhbmNlO1xuICAgICAgLy9MYW5nXG4gICAgICBsYXVuZ3VhZ2UuJHhQb3NpdGlvbjAgPVxuICAgICAgICBlZGl0UHJvZmlsZS4keFBvc2l0aW9uMCArIGVkaXRQcm9maWxlLiR3aWR0aDEzICsgYnV0dG9uU3BhY2luZztcbiAgICAgIGxhdW5ndWFnZS4keVBvc2l0aW9uID0gY3VycmVudFNjcmVlbi4kaGVpZ2h0NyAtIGJ1dHRvbkRpc3RhbmNlO1xuICAgICAgLy9Gb3JrXG4gICAgICBmb3JrT25HaXRIdWIuJHdpZHRoMTMgPSBidXR0b25XaWR0aCAvIDI7XG4gICAgICBmb3JrT25HaXRIdWIuJHlQb3NpdGlvbiA9IG1vZHMuJHlQb3NpdGlvbiAtIGJ1dHRvbkRpc3RhbmNlUmVsO1xuICAgICAgZm9ya09uR2l0SHViLiR4UG9zaXRpb24wID0gbW9kcy4keFBvc2l0aW9uMDtcbiAgICAgIGZvcmtPbkdpdEh1Yi4kZGlzcGxheVN0cmluZy4kY2hhcmFjdGVycy5kYXRhID0gZW5jLmVuY29kZShcIkZvcmtcIik7XG5cbiAgICAgIGN1cnJlbnRTY3JlZW4uJG9wZW5HTFdhcm5pbmcxLiRjaGFyYWN0ZXJzLmRhdGEgPSBlbmMuZW5jb2RlKFwiXCIpO1xuICAgICAgLy9jdXJyZW50U2NyZWVuLiRzcGxhc2hUZXh0LiRjaGFyYWN0ZXJzLmRhdGEgPSBlbmMuZW5jb2RlKFwiSnVzdGluIGlzIHRoZSBzcGVkIHZlcnNpb24gb2YgRGFuaWVsXCIpXG5cbiAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlcnZlcnBpbmdsaXN0XCIpID09IG51bGwpIHtcbiAgICAgICAgdmFyIHNlcnZlcnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBzZXJ2ZXJzLmlkID0gXCJzZXJ2ZXJwaW5nbGlzdFwiO1xuXG4gICAgICAgIHZhciBwaW5ncyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFlb24gTmV0d29ya1wiLFxuICAgICAgICAgICAgYWRkcmVzczogXCJ3c3M6Ly9hZW9uLW5ldHdvcmsubmV0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFyY2ggTUNcIixcbiAgICAgICAgICAgIGFkZHJlc3M6IFwid3NzOi8vbWMuYXJjaC5sb2xcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSGVsbGl1bSBOZXR3b3JrXCIsXG4gICAgICAgICAgICBhZGRyZXNzOiBcIndzczovL2hlbGx0ZWNoLmNjXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNsZXZlciBUZWFjaGluZ1wiLFxuICAgICAgICAgICAgYWRkcmVzczogXCJ3c3M6Ly9jbGV2ZXItdGVhY2hpbmcuY29tXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlp5dGhcIixcbiAgICAgICAgICAgIGFkZHJlc3M6IFwid3NzOi8vbWMuenl0aC5tZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgc2VydmVycy5zdHlsZS5vdmVyZmxvd1kgPSBcInNjcm9sbFwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLndvcmRCcmVhayA9IFwiYnJlYWstYWxsXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUudG9wID0gXCIxMCVcIjtcbiAgICAgICAgc2VydmVycy5zdHlsZS5sZWZ0ID0gXCIyLjUlXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUud2lkdGggPSBcIjE1JVwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLmhlaWdodCA9IFwiODAlXCI7XG4gICAgICAgIHNlcnZlcnMuc3R5bGUuY29sb3IgPSBcInJnYmEoMjU1LDI1NSwyNTUsMSlcIjtcbiAgICAgICAgc2VydmVycy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInJnYmEoMCwwLDAsMC41KVwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiMTVweFwiO1xuICAgICAgICBzZXJ2ZXJzLnN0eWxlLmZvbnRGYW1pbHkgPSBcIm1vbm9zcGFjZVwiO1xuXG4gICAgICAgIHBpbmdzLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgICAgICAgIGNvbnN0IGN1ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgY3VyLnN0eWxlLm1hcmdpbiA9IFwiMTBweFwiO1xuICAgICAgICAgIHNlcnZlcnMuYXBwZW5kQ2hpbGQoY3VyKTtcblxuICAgICAgICAgIGNvbnN0IGN1cmgyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICBjdXJoMi5zdHlsZS5mb250U2l6ZSA9IFwiMjBweFwiO1xuICAgICAgICAgIGN1cmgyLmlubmVyVGV4dCA9IGUubmFtZTtcbiAgICAgICAgICBjdXIuYXBwZW5kQ2hpbGQoY3VyaDIpO1xuXG4gICAgICAgICAgY29uc3QgY3Vyc2VydmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICBjdXJzZXJ2ZXIuaW5uZXJUZXh0ID0gZS5hZGRyZXNzO1xuICAgICAgICAgIGN1ci5hcHBlbmRDaGlsZChjdXJzZXJ2ZXIpO1xuXG4gICAgICAgICAgY29uc3QgcGxheWVyaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgcGxheWVyaW5mby5pbm5lclRleHQgPSBcIm5vdCBjb25uZWN0ZWRcIjtcbiAgICAgICAgICBwbGF5ZXJpbmZvLnN0eWxlLmNvbG9yID0gXCJyZWRcIjtcbiAgICAgICAgICBwbGF5ZXJpbmZvLnN0eWxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcbiAgICAgICAgICBwbGF5ZXJpbmZvLnN0eWxlLmZvbnRTaXplID0gXCIxNnB4XCI7XG4gICAgICAgICAgcGxheWVyaW5mby5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xuXG4gICAgICAgICAgY3VyLmFwcGVuZENoaWxkKHBsYXllcmluZm8pO1xuXG4gICAgICAgICAgY29uc3QgdGVzdHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoZS5hZGRyZXNzKTtcbiAgICAgICAgICBjb25zdCB0aW1lcGluZyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICB0ZXN0d2Vic29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgICAgIHRlc3R3ZWJzb2NrZXQuc2VuZChcIkFjY2VwdDogTU9URFwiKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdGVzdHdlYnNvY2tldC5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGUuZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgZGF0ID0gSlNPTi5wYXJzZShlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgaWYgKGRhdFtcInR5cGVcIl0udG9Mb3dlckNhc2UoKSA9PT0gXCJtb3RkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGxheWVyaW5mby5pbm5lclRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdFtcImRhdGFcIl1bXCJvbmxpbmVcIl0gKyBcIi9cIiArIGRhdFtcImRhdGFcIl1bXCJtYXhcIl07XG4gICAgICAgICAgICAgICAgICAgIHBsYXllcmluZm8uc3R5bGUuY29sb3IgPSBcImxpbWVcIjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcGluZy5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgcGluZy5zdHlsZS5mbG9hdCA9IFwicmlnaHRcIjtcbiAgICAgICAgICAgICAgICAgICAgcGluZy5pbm5lclRleHQgKz0gRGF0ZS5ub3coKSAtIHRpbWVwaW5nICsgXCJtc1wiO1xuICAgICAgICAgICAgICAgICAgICBwbGF5ZXJpbmZvLmFwcGVuZENoaWxkKHBpbmcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNlcnZlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZXJ2ZXJwaW5nbGlzdFwiKSAhPSBudWxsKSB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VydmVycGluZ2xpc3RcIikucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBjdXN0dWkgPSBzZXRJbnRlcnZhbChjdXN0b21VSSwgNTApO1xuXG4vL0N1c3RvbSBDdXJzb3JcbmRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjYW52YXNcIilbMF0uc3R5bGUuY3Vyc29yID1cbiAgJ3VybChcIicgKyBhc3NldHMuY3Vyc29yICsgJ1wiKSwgYXV0byc7XG5kb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd1cmwoXCInICsgYXNzZXRzLmN1cnNvciArICdcIiksIGF1dG8nO1xuXG5mdW5jdGlvbiBkZXN0cm95KCkge1xuICBjbGVhckludGVydmFsKGN1c3R1aSk7XG4gIHVpLmRlc3Ryb3koKTtcbiAgZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNhbnZhc1wiKVswXS5zdHlsZS5jdXJzb3IgPSBcImF1dG9cIjtcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBcImF1dG9cIjtcbiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VydmVycGluZ2xpc3RcIikgIT0gbnVsbCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VydmVycGluZ2xpc3RcIikucmVtb3ZlKCk7XG4gIH1cbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICJBQUVPLElBQUksRUFBYUFDQWpCLFNBQVMsQ0FBWSxDQUFDLEVBQUssQ0FDaEMsUUFBUSxJQUFJLElBQUksTUFBZSxHQUFLQUNEL0IsU0FBUyxDQUFTLENBQUMs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RUFBVyxNQUFNLE1BQVEsTUFDekIsRUFBVyxNQUFNLFdBQWEsT0FDOUIsRUFBVyxNQUFNLFNBQVcsT0FDNUIsRUFBVyxNQUFNLE1BQVEsT0FFekIsRUFBSSxZQUFZLENBQVUsRUFFMUIsTUFBTSxFQUFnQixJQUFJLFVBQVUsRUFBRSxPQUFPLEVBQ3ZDLEVBQVcsS0FBSyxJQUFJLEVBRTFCLEVBQWMsT0FBUyxJQUFNLENBQzNCLEVBQWMsS0FBSyxjQUFjLEdBR25DLEVBQWMsVUFBWSxDQUFDLElBQU0sQ0FDL0IsR0FBSSxFQUFFLE1BQ0osVUFBVyxFQUFFLE9BQVMsU0FDcEIsR0FBSSxDQUNGLElBQUksRUFBTSxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQzNCLEdBQUksRUFBSSxLQUFRLFlBQVksSUFBTSxPQUFRLENBQ3hDLEVBQVcsVUFDVCxFQUFJLEtBQVEsT0FBWSxJQUFNLEVBQUksS0FBUSxJQUM1QyxFQUFXLE1BQU0sTUFBUSxPQUV6QixNQUFNLEVBQU8sU0FBUyxjQUFjLEtBQUssRUFDekMsRUFBSyxNQUFNLFFBQVUsZUFDckIsRUFBSyxNQUFNLE1BQVEsUUFDbkIsRUFBSyxXQUFhLEtBQUssSUFBSSxFQUFJLEVBQVcsS0FDMUMsRUFBVyxZQUFZLENBQUksRUFFM0IsUUFBUSxJQUFJLENBQUcsU0FFVixFQUFQLENBQ0EsUUFBUSxJQUFJLENBQUcsS0FLeEIsRUFDRCxTQUFTLEtBQUssWUFBWSxDQUFPLFdBRy9CLFNBQVMsZUFBZSxnQkFBZ0IsR0FBSyxLQUMvQyxTQUFTLGVBQWUsZ0JBQWdCLEVBQUUsT0FBTyIsCiAgImRlYnVnSWQiOiAiMzlFQjk4QjU3REUyMDIxRDY0NzU2ZTIxNjQ3NTZlMjEiLAogICJuYW1lcyI6IFtdCn0=