@botpoison/browser 0.1.29 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,21 +5,21 @@ declare global {
5
5
  __BOTPOISON_HEARTBEAT_DISPATCHER__: boolean | undefined;
6
6
  }
7
7
  }
8
- declare type BotpoisonOptions = {
8
+ type BotpoisonOptions = {
9
9
  publicKey: string;
10
10
  };
11
- declare type ChallengeOptions = {
11
+ type ChallengeOptions = {
12
12
  onProgress?: ProgressCallback;
13
13
  };
14
- export declare type ProgressCallback = (progress: number) => void;
15
- export declare type SignedChallenge = {
14
+ type ProgressCallback = (progress: number) => void;
15
+ type SignedChallenge = {
16
16
  payload: {
17
17
  nonce: string;
18
18
  difficulty: number;
19
19
  hardness: number;
20
20
  };
21
21
  };
22
- export default class Botpoison {
22
+ declare class Botpoison {
23
23
  private readonly publicKey;
24
24
  constructor({ publicKey }: BotpoisonOptions);
25
25
  static init(): void;
@@ -27,4 +27,5 @@ export default class Botpoison {
27
27
  solution: string;
28
28
  }>;
29
29
  }
30
- export {};
30
+
31
+ export { type ProgressCallback, type SignedChallenge, Botpoison as default };
package/dist/index.js CHANGED
@@ -1,3 +1,24 @@
1
- /*! For license information please see index.js.LICENSE.txt */
2
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Botpoison",[],e):"object"==typeof exports?exports.Botpoison=e():t.Botpoison=e()}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={434:(t,e,r)=>{var n;!function(){"use strict";var e="input is invalid type",i="object"==typeof window,h=i?window:{};h.JS_SHA512_NO_WINDOW&&(i=!1);var o=!i&&"object"==typeof self;!h.JS_SHA512_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?h=r.g:o&&(h=self);var s=!h.JS_SHA512_NO_COMMON_JS&&t.exports,a=r.amdO,l=!h.JS_SHA512_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,c="0123456789abcdef".split(""),u=[-2147483648,8388608,32768,128],f=[24,16,8,0],p=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],y=["hex","array","digest","arrayBuffer"],d=[];!h.JS_SHA512_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!l||!h.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(t,e){return function(r){return new m(e,!0).update(r)[t]()}},_=function(t){var e=b("hex",t);e.create=function(){return new m(t)},e.update=function(t){return e.create().update(t)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=b(n,t)}return e},v=function(t,e){return function(r,n){return new g(r,e,!0).update(n)[t]()}},w=function(t){var e=v("hex",t);e.create=function(e){return new g(e,t)},e.update=function(t,r){return e.create(t).update(r)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=v(n,t)}return e};function m(t,e){e?(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=d[16]=d[17]=d[18]=d[19]=d[20]=d[21]=d[22]=d[23]=d[24]=d[25]=d[26]=d[27]=d[28]=d[29]=d[30]=d[31]=d[32]=0,this.blocks=d):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==t?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==t?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==t?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=t,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}function g(t,r,n){var i,h=typeof t;if("string"!==h){if("object"!==h)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);i=!0}var o=t.length;if(!i){for(var s,a=[],c=(o=t.length,0),u=0;u<o;++u)(s=t.charCodeAt(u))<128?a[c++]=s:s<2048?(a[c++]=192|s>>6,a[c++]=128|63&s):s<55296||s>=57344?(a[c++]=224|s>>12,a[c++]=128|s>>6&63,a[c++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++u)),a[c++]=240|s>>18,a[c++]=128|s>>12&63,a[c++]=128|s>>6&63,a[c++]=128|63&s);t=a}t.length>128&&(t=new m(r,!0).update(t).array());var f=[],p=[];for(u=0;u<128;++u){var y=t[u]||0;f[u]=92^y,p[u]=54^y}m.call(this,r,n),this.update(p),this.oKeyPad=f,this.inner=!0,this.sharedMemory=n}m.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}for(var i,h,o=0,s=t.length,a=this.blocks;o<s;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=a[16]=a[17]=a[18]=a[19]=a[20]=a[21]=a[22]=a[23]=a[24]=a[25]=a[26]=a[27]=a[28]=a[29]=a[30]=a[31]=a[32]=0),r)for(h=this.start;o<s&&h<128;++o)a[h>>2]|=t[o]<<f[3&h++];else for(h=this.start;o<s&&h<128;++o)(i=t.charCodeAt(o))<128?a[h>>2]|=i<<f[3&h++]:i<2048?(a[h>>2]|=(192|i>>6)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):i<55296||i>=57344?(a[h>>2]|=(224|i>>12)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),a[h>>2]|=(240|i>>18)<<f[3&h++],a[h>>2]|=(128|i>>12&63)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]);this.lastByteIndex=h,this.bytes+=h-this.start,h>=128?(this.block=a[32],this.start=h-128,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},m.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[32]=this.block,t[e>>2]|=u[3&e],this.block=t[32],e>=112&&(this.hashed||this.hash(),t[0]=this.block,t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=t[16]=t[17]=t[18]=t[19]=t[20]=t[21]=t[22]=t[23]=t[24]=t[25]=t[26]=t[27]=t[28]=t[29]=t[30]=t[31]=t[32]=0),t[30]=this.hBytes<<3|this.bytes>>>29,t[31]=this.bytes<<3,this.hash()}},m.prototype.hash=function(){var t,e,r,n,i,h,o,s,a,l,c,u,f,y,d,b,_,v,w,m,g,O,S,A,E,P=this.h0h,j=this.h0l,T=this.h1h,x=this.h1l,B=this.h2h,I=this.h2l,U=this.h3h,N=this.h3l,R=this.h4h,k=this.h4l,C=this.h5h,z=this.h5l,M=this.h6h,D=this.h6l,H=this.h7h,J=this.h7l,K=this.blocks;for(t=32;t<160;t+=2)e=((m=K[t-30])>>>1|(g=K[t-29])<<31)^(m>>>8|g<<24)^m>>>7,r=(g>>>1|m<<31)^(g>>>8|m<<24)^(g>>>7|m<<25),n=((m=K[t-4])>>>19|(g=K[t-3])<<13)^(g>>>29|m<<3)^m>>>6,i=(g>>>19|m<<13)^(m>>>29|g<<3)^(g>>>6|m<<26),m=K[t-32],g=K[t-31],a=((O=K[t-14])>>>16)+(m>>>16)+(e>>>16)+(n>>>16)+((s=(65535&O)+(65535&m)+(65535&e)+(65535&n)+((o=((S=K[t-13])>>>16)+(g>>>16)+(r>>>16)+(i>>>16)+((h=(65535&S)+(65535&g)+(65535&r)+(65535&i))>>>16))>>>16))>>>16),K[t]=a<<16|65535&s,K[t+1]=o<<16|65535&h;var F=P,V=j,L=T,G=x,W=B,Y=I,q=U,Q=N,X=R,Z=k,$=C,tt=z,et=M,rt=D,nt=H,it=J;for(b=L&W,_=G&Y,t=0;t<160;t+=8)e=(F>>>28|V<<4)^(V>>>2|F<<30)^(V>>>7|F<<25),r=(V>>>28|F<<4)^(F>>>2|V<<30)^(F>>>7|V<<25),n=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),i=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),v=(l=F&L)^F&W^b,w=(c=V&G)^V&Y^_,A=X&$^~X&et,E=Z&tt^~Z&rt,m=K[t],g=K[t+1],m=(a=((O=p[t])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(nt>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&nt)+((o=((S=p[t+1])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(it>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&it))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,nt=(a=(q>>>16)+(m>>>16)+((s=(65535&q)+(65535&m)+((o=(Q>>>16)+(g>>>16)+((h=(65535&Q)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,it=o<<16|65535&h,e=((q=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Q=o<<16|65535&h)<<4)^(Q>>>2|q<<30)^(Q>>>7|q<<25),r=(Q>>>28|q<<4)^(q>>>2|Q<<30)^(q>>>7|Q<<25),n=(nt>>>14|it<<18)^(nt>>>18|it<<14)^(it>>>9|nt<<23),i=(it>>>14|nt<<18)^(it>>>18|nt<<14)^(nt>>>9|it<<23),v=(u=q&F)^q&L^l,w=(f=Q&V)^Q&G^c,A=nt&X^~nt&$,E=it&Z^~it&tt,m=K[t+2],g=K[t+3],m=(a=((O=p[t+2])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(et>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&et)+((o=((S=p[t+3])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(rt>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&rt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,et=(a=(W>>>16)+(m>>>16)+((s=(65535&W)+(65535&m)+((o=(Y>>>16)+(g>>>16)+((h=(65535&Y)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,rt=o<<16|65535&h,e=((W=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Y=o<<16|65535&h)<<4)^(Y>>>2|W<<30)^(Y>>>7|W<<25),r=(Y>>>28|W<<4)^(W>>>2|Y<<30)^(W>>>7|Y<<25),n=(et>>>14|rt<<18)^(et>>>18|rt<<14)^(rt>>>9|et<<23),i=(rt>>>14|et<<18)^(rt>>>18|et<<14)^(et>>>9|rt<<23),v=(y=W&q)^W&F^u,w=(d=Y&Q)^Y&V^f,A=et&nt^~et&X,E=rt&it^~rt&Z,m=K[t+4],g=K[t+5],m=(a=((O=p[t+4])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+($>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&$)+((o=((S=p[t+5])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(tt>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&tt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,$=(a=(L>>>16)+(m>>>16)+((s=(65535&L)+(65535&m)+((o=(G>>>16)+(g>>>16)+((h=(65535&G)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,tt=o<<16|65535&h,e=((L=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(G=o<<16|65535&h)<<4)^(G>>>2|L<<30)^(G>>>7|L<<25),r=(G>>>28|L<<4)^(L>>>2|G<<30)^(L>>>7|G<<25),n=($>>>14|tt<<18)^($>>>18|tt<<14)^(tt>>>9|$<<23),i=(tt>>>14|$<<18)^(tt>>>18|$<<14)^($>>>9|tt<<23),v=(b=L&W)^L&q^y,w=(_=G&Y)^G&Q^d,A=$&et^~$&nt,E=tt&rt^~tt&it,m=K[t+6],g=K[t+7],m=(a=((O=p[t+6])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(X>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&X)+((o=((S=p[t+7])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(Z>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&Z))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,X=(a=(F>>>16)+(m>>>16)+((s=(65535&F)+(65535&m)+((o=(V>>>16)+(g>>>16)+((h=(65535&V)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,Z=o<<16|65535&h,F=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,V=o<<16|65535&h;a=(P>>>16)+(F>>>16)+((s=(65535&P)+(65535&F)+((o=(j>>>16)+(V>>>16)+((h=(65535&j)+(65535&V))>>>16))>>>16))>>>16),this.h0h=a<<16|65535&s,this.h0l=o<<16|65535&h,a=(T>>>16)+(L>>>16)+((s=(65535&T)+(65535&L)+((o=(x>>>16)+(G>>>16)+((h=(65535&x)+(65535&G))>>>16))>>>16))>>>16),this.h1h=a<<16|65535&s,this.h1l=o<<16|65535&h,a=(B>>>16)+(W>>>16)+((s=(65535&B)+(65535&W)+((o=(I>>>16)+(Y>>>16)+((h=(65535&I)+(65535&Y))>>>16))>>>16))>>>16),this.h2h=a<<16|65535&s,this.h2l=o<<16|65535&h,a=(U>>>16)+(q>>>16)+((s=(65535&U)+(65535&q)+((o=(N>>>16)+(Q>>>16)+((h=(65535&N)+(65535&Q))>>>16))>>>16))>>>16),this.h3h=a<<16|65535&s,this.h3l=o<<16|65535&h,a=(R>>>16)+(X>>>16)+((s=(65535&R)+(65535&X)+((o=(k>>>16)+(Z>>>16)+((h=(65535&k)+(65535&Z))>>>16))>>>16))>>>16),this.h4h=a<<16|65535&s,this.h4l=o<<16|65535&h,a=(C>>>16)+($>>>16)+((s=(65535&C)+(65535&$)+((o=(z>>>16)+(tt>>>16)+((h=(65535&z)+(65535&tt))>>>16))>>>16))>>>16),this.h5h=a<<16|65535&s,this.h5l=o<<16|65535&h,a=(M>>>16)+(et>>>16)+((s=(65535&M)+(65535&et)+((o=(D>>>16)+(rt>>>16)+((h=(65535&D)+(65535&rt))>>>16))>>>16))>>>16),this.h6h=a<<16|65535&s,this.h6l=o<<16|65535&h,a=(H>>>16)+(nt>>>16)+((s=(65535&H)+(65535&nt)+((o=(J>>>16)+(it>>>16)+((h=(65535&J)+(65535&it))>>>16))>>>16))>>>16),this.h7h=a<<16|65535&s,this.h7l=o<<16|65535&h},m.prototype.hex=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,u=this.h5h,f=this.h5l,p=this.h6h,y=this.h6l,d=this.h7h,b=this.h7l,_=this.bits,v=c[t>>28&15]+c[t>>24&15]+c[t>>20&15]+c[t>>16&15]+c[t>>12&15]+c[t>>8&15]+c[t>>4&15]+c[15&t]+c[e>>28&15]+c[e>>24&15]+c[e>>20&15]+c[e>>16&15]+c[e>>12&15]+c[e>>8&15]+c[e>>4&15]+c[15&e]+c[r>>28&15]+c[r>>24&15]+c[r>>20&15]+c[r>>16&15]+c[r>>12&15]+c[r>>8&15]+c[r>>4&15]+c[15&r]+c[n>>28&15]+c[n>>24&15]+c[n>>20&15]+c[n>>16&15]+c[n>>12&15]+c[n>>8&15]+c[n>>4&15]+c[15&n]+c[i>>28&15]+c[i>>24&15]+c[i>>20&15]+c[i>>16&15]+c[i>>12&15]+c[i>>8&15]+c[i>>4&15]+c[15&i]+c[h>>28&15]+c[h>>24&15]+c[h>>20&15]+c[h>>16&15]+c[h>>12&15]+c[h>>8&15]+c[h>>4&15]+c[15&h]+c[o>>28&15]+c[o>>24&15]+c[o>>20&15]+c[o>>16&15]+c[o>>12&15]+c[o>>8&15]+c[o>>4&15]+c[15&o];return _>=256&&(v+=c[s>>28&15]+c[s>>24&15]+c[s>>20&15]+c[s>>16&15]+c[s>>12&15]+c[s>>8&15]+c[s>>4&15]+c[15&s]),_>=384&&(v+=c[a>>28&15]+c[a>>24&15]+c[a>>20&15]+c[a>>16&15]+c[a>>12&15]+c[a>>8&15]+c[a>>4&15]+c[15&a]+c[l>>28&15]+c[l>>24&15]+c[l>>20&15]+c[l>>16&15]+c[l>>12&15]+c[l>>8&15]+c[l>>4&15]+c[15&l]+c[u>>28&15]+c[u>>24&15]+c[u>>20&15]+c[u>>16&15]+c[u>>12&15]+c[u>>8&15]+c[u>>4&15]+c[15&u]+c[f>>28&15]+c[f>>24&15]+c[f>>20&15]+c[f>>16&15]+c[f>>12&15]+c[f>>8&15]+c[f>>4&15]+c[15&f]),512==_&&(v+=c[p>>28&15]+c[p>>24&15]+c[p>>20&15]+c[p>>16&15]+c[p>>12&15]+c[p>>8&15]+c[p>>4&15]+c[15&p]+c[y>>28&15]+c[y>>24&15]+c[y>>20&15]+c[y>>16&15]+c[y>>12&15]+c[y>>8&15]+c[y>>4&15]+c[15&y]+c[d>>28&15]+c[d>>24&15]+c[d>>20&15]+c[d>>16&15]+c[d>>12&15]+c[d>>8&15]+c[d>>4&15]+c[15&d]+c[b>>28&15]+c[b>>24&15]+c[b>>20&15]+c[b>>16&15]+c[b>>12&15]+c[b>>8&15]+c[b>>4&15]+c[15&b]),v},m.prototype.toString=m.prototype.hex,m.prototype.digest=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,c=this.h5h,u=this.h5l,f=this.h6h,p=this.h6l,y=this.h7h,d=this.h7l,b=this.bits,_=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,h>>24&255,h>>16&255,h>>8&255,255&h,o>>24&255,o>>16&255,o>>8&255,255&o];return b>=256&&_.push(s>>24&255,s>>16&255,s>>8&255,255&s),b>=384&&_.push(a>>24&255,a>>16&255,a>>8&255,255&a,l>>24&255,l>>16&255,l>>8&255,255&l,c>>24&255,c>>16&255,c>>8&255,255&c,u>>24&255,u>>16&255,u>>8&255,255&u),512==b&&_.push(f>>24&255,f>>16&255,f>>8&255,255&f,p>>24&255,p>>16&255,p>>8&255,255&p,y>>24&255,y>>16&255,y>>8&255,255&y,d>>24&255,d>>16&255,d>>8&255,255&d),_},m.prototype.array=m.prototype.digest,m.prototype.arrayBuffer=function(){this.finalize();var t=this.bits,e=new ArrayBuffer(t/8),r=new DataView(e);return r.setUint32(0,this.h0h),r.setUint32(4,this.h0l),r.setUint32(8,this.h1h),r.setUint32(12,this.h1l),r.setUint32(16,this.h2h),r.setUint32(20,this.h2l),r.setUint32(24,this.h3h),t>=256&&r.setUint32(28,this.h3l),t>=384&&(r.setUint32(32,this.h4h),r.setUint32(36,this.h4l),r.setUint32(40,this.h5h),r.setUint32(44,this.h5l)),512==t&&(r.setUint32(48,this.h6h),r.setUint32(52,this.h6l),r.setUint32(56,this.h7h),r.setUint32(60,this.h7l)),e},m.prototype.clone=function(){var t=new m(this.bits,!1);return this.copyTo(t),t},m.prototype.copyTo=function(t){var e=0,r=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(e=0;e<r.length;++e)t[r[e]]=this[r[e]];for(e=0;e<this.blocks.length;++e)t.blocks[e]=this.blocks[e]},g.prototype=new m,g.prototype.finalize=function(){if(m.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();m.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(t),m.prototype.finalize.call(this)}},g.prototype.clone=function(){var t=new g([],this.bits,!1);this.copyTo(t),t.inner=this.inner;for(var e=0;e<this.oKeyPad.length;++e)t.oKeyPad[e]=this.oKeyPad[e];return t};var O=_(512);O.sha512=O,O.sha384=_(384),O.sha512_256=_(256),O.sha512_224=_(224),O.sha512.hmac=w(512),O.sha384.hmac=w(384),O.sha512_256.hmac=w(256),O.sha512_224.hmac=w(224),s?t.exports=O:(h.sha512=O.sha512,h.sha384=O.sha384,h.sha512_256=O.sha512_256,h.sha512_224=O.sha512_224,a&&(void 0===(n=function(){return O}.call(O,r,O,t))||(t.exports=n)))}()},900:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(655),i=r(434),h=function(t){var e=t.input,r=t.expected;return(0,n.__awaiter)(void 0,void 0,void 0,(function(){var t,h;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:t=0,n.label=1;case 1:return h=(0,i.sha512)(e+":"+t),t%4e4!=0?[3,3]:[4,o(0)];case 2:n.sent(),n.label=3;case 3:return h.substring(0,r.length)===r?[2,t.toString()]:(t++,[3,1]);case 4:return[2]}}))}))},o=function(t){return new Promise((function(e){return setTimeout(e,t)}))};e.default=function(t){var e=t.challenge,r=t.onProgress;return(0,n.__awaiter)(void 0,void 0,void 0,(function(){var t,i,s,a,l,c,u;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:t=e.payload,i=t.nonce,s=t.difficulty,a=t.hardness,l=[],null==r||r(0),c=0,n.label=1;case 1:return c<a?[4,h({input:i+":"+c,expected:"0".repeat(s)})]:[3,5];case 2:return u=n.sent(),l.push(u),null==r||r(l.length/a),[4,o(0)];case 3:n.sent(),n.label=4;case 4:return c++,[3,1];case 5:return[2,l]}}))}))}},655:(t,e,r)=>{"use strict";r.r(e),r.d(e,{__extends:()=>i,__assign:()=>h,__rest:()=>o,__decorate:()=>s,__param:()=>a,__metadata:()=>l,__awaiter:()=>c,__generator:()=>u,__createBinding:()=>f,__exportStar:()=>p,__values:()=>y,__read:()=>d,__spread:()=>b,__spreadArrays:()=>_,__spreadArray:()=>v,__await:()=>w,__asyncGenerator:()=>m,__asyncDelegator:()=>g,__asyncValues:()=>O,__makeTemplateObject:()=>S,__importStar:()=>E,__importDefault:()=>P,__classPrivateFieldGet:()=>j,__classPrivateFieldSet:()=>T});var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},n(t,e)};function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var h=function(){return h=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},h.apply(this,arguments)};function o(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r}function s(t,e,r,n){var i,h=arguments.length,o=h<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,r,n);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(o=(h<3?i(o):h>3?i(e,r,o):i(e,r))||o);return h>3&&o&&Object.defineProperty(e,r,o),o}function a(t,e){return function(r,n){e(r,n,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function c(t,e,r,n){return new(r||(r=Promise))((function(i,h){function o(t){try{a(n.next(t))}catch(t){h(t)}}function s(t){try{a(n.throw(t))}catch(t){h(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}a((n=n.apply(t,e||[])).next())}))}function u(t,e){var r,n,i,h,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return h={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(h[Symbol.iterator]=function(){return this}),h;function s(h){return function(s){return function(h){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&h[0]?n.return:h[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,h[1])).done)return i;switch(n=0,i&&(h=[2&h[0],i.value]),h[0]){case 0:case 1:i=h;break;case 4:return o.label++,{value:h[1],done:!1};case 5:o.label++,n=h[1],h=[0];continue;case 7:h=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==h[0]&&2!==h[0])){o=0;continue}if(3===h[0]&&(!i||h[1]>i[0]&&h[1]<i[3])){o.label=h[1];break}if(6===h[0]&&o.label<i[1]){o.label=i[1],i=h;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(h);break}i[2]&&o.ops.pop(),o.trys.pop();continue}h=e.call(t,o)}catch(t){h=[6,t],n=0}finally{r=i=0}if(5&h[0])throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}([h,s])}}}var f=Object.create?function(t,e,r,n){void 0===n&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]};function p(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||f(e,t,r)}function y(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,h=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=h.next()).done;)o.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=h.return)&&r.call(h)}finally{if(i)throw i.error}}return o}function b(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(d(arguments[e]));return t}function _(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),i=0;for(e=0;e<r;e++)for(var h=arguments[e],o=0,s=h.length;o<s;o++,i++)n[i]=h[o];return n}function v(t,e,r){if(r||2===arguments.length)for(var n,i=0,h=e.length;i<h;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))}function w(t){return this instanceof w?(this.v=t,this):new w(t)}function m(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(t,e||[]),h=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(t){i[t]&&(n[t]=function(e){return new Promise((function(r,n){h.push([t,e,r,n])>1||s(t,e)}))})}function s(t,e){try{(r=i[t](e)).value instanceof w?Promise.resolve(r.value.v).then(a,l):c(h[0][2],r)}catch(t){c(h[0][3],t)}var r}function a(t){s("next",t)}function l(t){s("throw",t)}function c(t,e){t(e),h.shift(),h.length&&s(h[0][0],h[0][1])}}function g(t){var e,r;return e={},n("next"),n("throw",(function(t){throw t})),n("return"),e[Symbol.iterator]=function(){return this},e;function n(n,i){e[n]=t[n]?function(e){return(r=!r)?{value:w(t[n](e)),done:"return"===n}:i?i(e):e}:i}}function O(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=y(t),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,i){!function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)}(n,i,(e=t[r](e)).done,e.value)}))}}}function S(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}var A=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};function E(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)"default"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&f(e,t,r);return A(e,t),e}function P(t){return t&&t.__esModule?t:{default:t}}function j(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)}function T(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(t,r):i?i.value=r:e.set(t,r),r}},147:t=>{"use strict";t.exports={i8:"0.1.29"}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var h=e[n]={exports:{}};return t[n](h,h.exports,r),h.exports}r.amdO={},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";var t=n,e=r(655),i=(0,e.__importDefault)(r(900)),h=function(){s(),a(),l()},o=function(){function t(t){var e=t.publicKey;this.publicKey=e}return t.init=function(){h()},t.prototype.challenge=function(t){return(0,e.__awaiter)(this,void 0,void 0,(function(){var r,n,h;return(0,e.__generator)(this,(function(e){switch(e.label){case 0:return r=(t||{}).onProgress,[4,fetch("https://api.botpoison.com/challenge",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({publicKey:this.publicKey,hostname:location.hostname})})];case 1:return[4,e.sent().json()];case 2:return n=e.sent(),[4,(0,i.default)({challenge:n,onProgress:r})];case 3:return h=e.sent(),[2,{solution:btoa(JSON.stringify({challenge:n,solutions:h}))}]}}))}))},t}();t.default=o;var s=function(){window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_VERSION__=r(147).i8)},a=function(){"undefined"!=typeof document&&(window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_SUBMIT_LISTENER__=!0,document.addEventListener("submit",(function(t){try{var e=t.target;if(e){var r=e,n=r.dataset.botpoisonPublicKey;if(n){t.preventDefault(),r.dispatchEvent(new CustomEvent("botpoison-challenge-start"));var i=new o({publicKey:n});i.challenge().then((function(t){var e=t.solution;r.dispatchEvent(new CustomEvent("botpoison-challenge-success")),function(t){var e=t.formElement,r=t.id,n=t.name,i=t.value,h=document.getElementById(r);if(!h){var o=document.createElement("input");o.setAttribute("type","hidden"),o.setAttribute("id",r),o.setAttribute("name",n),e.appendChild(o),h=o}h.setAttribute("value",i)}({formElement:r,id:"_botpoison",name:"_botpoison",value:e}),HTMLFormElement.prototype.submit.call(r)})).catch((function(t){console.error(t),r.dispatchEvent(new CustomEvent("botpoison-challenge-error"))}))}}}catch(t){console.error(t)}return!0}))))},l=function(){"undefined"==typeof document||window.__BOTPOISON_HEARTBEAT_DISPATCHER__||(window.__BOTPOISON_HEARTBEAT_DISPATCHER__=!0)};h()})(),n.default})()}));
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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WUFBWUgsR0FDeEJ0TCxFQUFRc0wsRUFFVnRMLEVBQU13TCxhQUFhLFFBQVN2SCxHQW1DWnlILENBQTZCLENBQzNCUixZQUFXLEVBQ1hDLEdBVkssYUFXTEMsS0FWTyxhQVdQbkgsTUFBTy9DLElBRVR5SyxnQkFBZ0JsVCxVQUFVbVQsT0FBT2pULEtBQUssTUFFdkNrVCxPQUFNLFNBQUMxRixHQUNOMkYsUUFBUTNGLE1BQU1BLEdBQ2QsRUFBWTJFLGNBQ1YsSUFBSUMsWUFBWSxtQ0FLMUIsTUFBTzFJLEdBQ1B5SixRQUFRM0YsTUFBTTlELEdBRWhCLE9BQU8sUUFNVG1ILEVBQXlCLFdBQ0wsb0JBQWJlLFVBQ0p2VCxPQUFPK1UscUNBQ1YvVSxPQUFPK1Usb0NBQXFDLElBeUJsRDFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vLi9ub2RlX21vZHVsZXMvanMtc2hhNTEyL3NyYy9zaGE1MTIuanMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uLy4vc3JjL2NvbXB1dGVTb2x1dGlvbnMudHMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uLy4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svcnVudGltZS9hbWQgb3B0aW9ucyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0JvdHBvaXNvbi8uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIkJvdHBvaXNvblwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJCb3Rwb2lzb25cIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiQm90cG9pc29uXCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIi8qXG4gKiBbanMtc2hhNTEyXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZW1uMTc4L2pzLXNoYTUxMn1cbiAqXG4gKiBAdmVyc2lvbiAwLjguMFxuICogQGF1dGhvciBDaGVuLCBZaS1DeXVhbiBbZW1uMTc4QGdtYWlsLmNvbV1cbiAqIEBjb3B5cmlnaHQgQ2hlbiwgWWktQ3l1YW4gMjAxNC0yMDE4XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuLypqc2xpbnQgYml0d2lzZTogdHJ1ZSAqL1xuKGZ1bmN0aW9uICgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBJTlBVVF9FUlJPUiA9ICdpbnB1dCBpcyBpbnZhbGlkIHR5cGUnO1xuICB2YXIgRklOQUxJWkVfRVJST1IgPSAnZmluYWxpemUgYWxyZWFkeSBjYWxsZWQnO1xuICB2YXIgV0lORE9XID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7XG4gIHZhciByb290ID0gV0lORE9XID8gd2luZG93IDoge307XG4gIGlmIChyb290LkpTX1NIQTUxMl9OT19XSU5ET1cpIHtcbiAgICBXSU5ET1cgPSBmYWxzZTtcbiAgfVxuICB2YXIgV0VCX1dPUktFUiA9ICFXSU5ET1cgJiYgdHlwZW9mIHNlbGYgPT09ICdvYmplY3QnO1xuICB2YXIgTk9ERV9KUyA9ICFyb290LkpTX1NIQTUxMl9OT19OT0RFX0pTICYmIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbiAgaWYgKE5PREVfSlMpIHtcbiAgICByb290ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFdFQl9XT1JLRVIpIHtcbiAgICByb290ID0gc2VsZjtcbiAgfVxuICB2YXIgQ09NTU9OX0pTID0gIXJvb3QuSlNfU0hBNTEyX05PX0NPTU1PTl9KUyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIEFNRCA9IHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZDtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICFyb290LkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVIgJiYgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIEhFWF9DSEFSUyA9ICcwMTIzNDU2Nzg5YWJjZGVmJy5zcGxpdCgnJyk7XG4gIHZhciBFWFRSQSA9IFstMjE0NzQ4MzY0OCwgODM4ODYwOCwgMzI3NjgsIDEyOF07XG4gIHZhciBTSElGVCA9IFsyNCwgMTYsIDgsIDBdO1xuICB2YXIgSyA9IFtcbiAgICAweDQyOEEyRjk4LCAweEQ3MjhBRTIyLCAweDcxMzc0NDkxLCAweDIzRUY2NUNELFxuICAgIDB4QjVDMEZCQ0YsIDB4RUM0RDNCMkYsIDB4RTlCNURCQTUsIDB4ODE4OURCQkMsXG4gICAgMHgzOTU2QzI1QiwgMHhGMzQ4QjUzOCwgMHg1OUYxMTFGMSwgMHhCNjA1RDAxOSxcbiAgICAweDkyM0Y4MkE0LCAweEFGMTk0RjlCLCAweEFCMUM1RUQ1LCAweERBNkQ4MTE4LFxuICAgIDB4RDgwN0FBOTgsIDB4QTMwMzAyNDIsIDB4MTI4MzVCMDEsIDB4NDU3MDZGQkUsXG4gICAgMHgyNDMxODVCRSwgMHg0RUU0QjI4QywgMHg1NTBDN0RDMywgMHhENUZGQjRFMixcbiAgICAweDcyQkU1RDc0LCAweEYyN0I4OTZGLCAweDgwREVCMUZFLCAweDNCMTY5NkIxLFxuICAgIDB4OUJEQzA2QTcsIDB4MjVDNzEyMzUsIDB4QzE5QkYxNzQsIDB4Q0Y2OTI2OTQsXG4gICAgMHhFNDlCNjlDMSwgMHg5RUYxNEFEMiwgMHhFRkJFNDc4NiwgMHgzODRGMjVFMyxcbiAgICAweDBGQzE5REM2LCAweDhCOENENUI1LCAweDI0MENBMUNDLCAweDc3QUM5QzY1LFxuICAgIDB4MkRFOTJDNkYsIDB4NTkyQjAyNzUsIDB4NEE3NDg0QUEsIDB4NkVBNkU0ODMsXG4gICAgMHg1Q0IwQTlEQywgMHhCRDQxRkJENCwgMHg3NkY5ODhEQSwgMHg4MzExNTNCNSxcbiAgICAweDk4M0U1MTUyLCAweEVFNjZERkFCLCAweEE4MzFDNjZELCAweDJEQjQzMjEwLFxuICAgIDB4QjAwMzI3QzgsIDB4OThGQjIxM0YsIDB4QkY1OTdGQzcsIDB4QkVFRjBFRTQsXG4gICAgMHhDNkUwMEJGMywgMHgzREE4OEZDMiwgMHhENUE3OTE0NywgMHg5MzBBQTcyNSxcbiAgICAweDA2Q0E2MzUxLCAweEUwMDM4MjZGLCAweDE0MjkyOTY3LCAweDBBMEU2RTcwLFxuICAgIDB4MjdCNzBBODUsIDB4NDZEMjJGRkMsIDB4MkUxQjIxMzgsIDB4NUMyNkM5MjYsXG4gICAgMHg0RDJDNkRGQywgMHg1QUM0MkFFRCwgMHg1MzM4MEQxMywgMHg5RDk1QjNERixcbiAgICAweDY1MEE3MzU0LCAweDhCQUY2M0RFLCAweDc2NkEwQUJCLCAweDNDNzdCMkE4LFxuICAgIDB4ODFDMkM5MkUsIDB4NDdFREFFRTYsIDB4OTI3MjJDODUsIDB4MTQ4MjM1M0IsXG4gICAgMHhBMkJGRThBMSwgMHg0Q0YxMDM2NCwgMHhBODFBNjY0QiwgMHhCQzQyMzAwMSxcbiAgICAweEMyNEI4QjcwLCAweEQwRjg5NzkxLCAweEM3NkM1MUEzLCAweDA2NTRCRTMwLFxuICAgIDB4RDE5MkU4MTksIDB4RDZFRjUyMTgsIDB4RDY5OTA2MjQsIDB4NTU2NUE5MTAsXG4gICAgMHhGNDBFMzU4NSwgMHg1NzcxMjAyQSwgMHgxMDZBQTA3MCwgMHgzMkJCRDFCOCxcbiAgICAweDE5QTRDMTE2LCAweEI4RDJEMEM4LCAweDFFMzc2QzA4LCAweDUxNDFBQjUzLFxuICAgIDB4Mjc0ODc3NEMsIDB4REY4RUVCOTksIDB4MzRCMEJDQjUsIDB4RTE5QjQ4QTgsXG4gICAgMHgzOTFDMENCMywgMHhDNUM5NUE2MywgMHg0RUQ4QUE0QSwgMHhFMzQxOEFDQixcbiAgICAweDVCOUNDQTRGLCAweDc3NjNFMzczLCAweDY4MkU2RkYzLCAweEQ2QjJCOEEzLFxuICAgIDB4NzQ4RjgyRUUsIDB4NURFRkIyRkMsIDB4NzhBNTYzNkYsIDB4NDMxNzJGNjAsXG4gICAgMHg4NEM4NzgxNCwgMHhBMUYwQUI3MiwgMHg4Q0M3MDIwOCwgMHgxQTY0MzlFQyxcbiAgICAweDkwQkVGRkZBLCAweDIzNjMxRTI4LCAweEE0NTA2Q0VCLCAweERFODJCREU5LFxuICAgIDB4QkVGOUEzRjcsIDB4QjJDNjc5MTUsIDB4QzY3MTc4RjIsIDB4RTM3MjUzMkIsXG4gICAgMHhDQTI3M0VDRSwgMHhFQTI2NjE5QywgMHhEMTg2QjhDNywgMHgyMUMwQzIwNyxcbiAgICAweEVBREE3REQ2LCAweENERTBFQjFFLCAweEY1N0Q0RjdGLCAweEVFNkVEMTc4LFxuICAgIDB4MDZGMDY3QUEsIDB4NzIxNzZGQkEsIDB4MEE2MzdEQzUsIDB4QTJDODk4QTYsXG4gICAgMHgxMTNGOTgwNCwgMHhCRUY5MERBRSwgMHgxQjcxMEIzNSwgMHgxMzFDNDcxQixcbiAgICAweDI4REI3N0Y1LCAweDIzMDQ3RDg0LCAweDMyQ0FBQjdCLCAweDQwQzcyNDkzLFxuICAgIDB4M0M5RUJFMEEsIDB4MTVDOUJFQkMsIDB4NDMxRDY3QzQsIDB4OUMxMDBENEMsXG4gICAgMHg0Q0M1RDRCRSwgMHhDQjNFNDJCNiwgMHg1OTdGMjk5QywgMHhGQzY1N0UyQSxcbiAgICAweDVGQ0I2RkFCLCAweDNBRDZGQUVDLCAweDZDNDQxOThDLCAweDRBNDc1ODE3XG4gIF07XG5cbiAgdmFyIE9VVFBVVF9UWVBFUyA9IFsnaGV4JywgJ2FycmF5JywgJ2RpZ2VzdCcsICdhcnJheUJ1ZmZlciddO1xuXG4gIHZhciBibG9ja3MgPSBbXTtcblxuICBpZiAocm9vdC5KU19TSEE1MTJfTk9fTk9ERV9KUyB8fCAhQXJyYXkuaXNBcnJheSkge1xuICAgIEFycmF5LmlzQXJyYXkgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChBUlJBWV9CVUZGRVIgJiYgKHJvb3QuSlNfU0hBNTEyX05PX0FSUkFZX0JVRkZFUl9JU19WSUVXIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iai5idWZmZXIgJiYgb2JqLmJ1ZmZlci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXI7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBjcmVhdGVPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAob3V0cHV0VHlwZSwgYml0cykge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG5ldyBTaGE1MTIoYml0cywgdHJ1ZSkudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMpIHtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlT3V0cHV0TWV0aG9kKCdoZXgnLCBiaXRzKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5ldyBTaGE1MTIoYml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKCkudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPVVRQVVRfVFlQRVMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xuICAgICAgbWV0aG9kW3R5cGVdID0gY3JlYXRlT3V0cHV0TWV0aG9kKHR5cGUsIGJpdHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIHZhciBjcmVhdGVIbWFjT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKG91dHB1dFR5cGUsIGJpdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgbWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG5ldyBIbWFjU2hhNTEyKGtleSwgYml0cywgdHJ1ZSkudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlSG1hY01ldGhvZCA9IGZ1bmN0aW9uIChiaXRzKSB7XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZUhtYWNPdXRwdXRNZXRob2QoJ2hleCcsIGJpdHMpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gbmV3IEhtYWNTaGE1MTIoa2V5LCBiaXRzKTtcbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAoa2V5LCBtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZShrZXkpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT1VUUFVUX1RZUEVTLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgdHlwZSA9IE9VVFBVVF9UWVBFU1tpXTtcbiAgICAgIG1ldGhvZFt0eXBlXSA9IGNyZWF0ZUhtYWNPdXRwdXRNZXRob2QodHlwZSwgYml0cyk7XG4gICAgfVxuICAgIHJldHVybiBtZXRob2Q7XG4gIH07XG5cbiAgZnVuY3Rpb24gU2hhNTEyKGJpdHMsIHNoYXJlZE1lbW9yeSkge1xuICAgIGlmIChzaGFyZWRNZW1vcnkpIHtcbiAgICAgIGJsb2Nrc1swXSA9IGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9IGJsb2Nrc1s0XSA9XG4gICAgICBibG9ja3NbNV0gPSBibG9ja3NbNl0gPSBibG9ja3NbN10gPSBibG9ja3NbOF0gPVxuICAgICAgYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPSBibG9ja3NbMTJdID1cbiAgICAgIGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IGJsb2Nrc1sxNl0gPVxuICAgICAgYmxvY2tzWzE3XSA9IGJsb2Nrc1sxOF0gPSBibG9ja3NbMTldID0gYmxvY2tzWzIwXSA9XG4gICAgICBibG9ja3NbMjFdID0gYmxvY2tzWzIyXSA9IGJsb2Nrc1syM10gPSBibG9ja3NbMjRdID1cbiAgICAgIGJsb2Nrc1syNV0gPSBibG9ja3NbMjZdID0gYmxvY2tzWzI3XSA9IGJsb2Nrc1syOF0gPVxuICAgICAgYmxvY2tzWzI5XSA9IGJsb2Nrc1szMF0gPSBibG9ja3NbMzFdID0gYmxvY2tzWzMyXSA9IDA7XG4gICAgICB0aGlzLmJsb2NrcyA9IGJsb2NrcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ibG9ja3MgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgfVxuXG4gICAgaWYgKGJpdHMgPT0gMzg0KSB7XG4gICAgICB0aGlzLmgwaCA9IDB4Q0JCQjlENUQ7XG4gICAgICB0aGlzLmgwbCA9IDB4QzEwNTlFRDg7XG4gICAgICB0aGlzLmgxaCA9IDB4NjI5QTI5MkE7XG4gICAgICB0aGlzLmgxbCA9IDB4MzY3Q0Q1MDc7XG4gICAgICB0aGlzLmgyaCA9IDB4OTE1OTAxNUE7XG4gICAgICB0aGlzLmgybCA9IDB4MzA3MEREMTc7XG4gICAgICB0aGlzLmgzaCA9IDB4MTUyRkVDRDg7XG4gICAgICB0aGlzLmgzbCA9IDB4RjcwRTU5Mzk7XG4gICAgICB0aGlzLmg0aCA9IDB4NjczMzI2Njc7XG4gICAgICB0aGlzLmg0bCA9IDB4RkZDMDBCMzE7XG4gICAgICB0aGlzLmg1aCA9IDB4OEVCNDRBODc7XG4gICAgICB0aGlzLmg1bCA9IDB4Njg1ODE1MTE7XG4gICAgICB0aGlzLmg2aCA9IDB4REIwQzJFMEQ7XG4gICAgICB0aGlzLmg2bCA9IDB4NjRGOThGQTc7XG4gICAgICB0aGlzLmg3aCA9IDB4NDdCNTQ4MUQ7XG4gICAgICB0aGlzLmg3bCA9IDB4QkVGQTRGQTQ7XG4gICAgfSBlbHNlIGlmIChiaXRzID09IDI1Nikge1xuICAgICAgdGhpcy5oMGggPSAweDIyMzEyMTk0O1xuICAgICAgdGhpcy5oMGwgPSAweEZDMkJGNzJDO1xuICAgICAgdGhpcy5oMWggPSAweDlGNTU1RkEzO1xuICAgICAgdGhpcy5oMWwgPSAweEM4NEM2NEMyO1xuICAgICAgdGhpcy5oMmggPSAweDIzOTNCODZCO1xuICAgICAgdGhpcy5oMmwgPSAweDZGNTNCMTUxO1xuICAgICAgdGhpcy5oM2ggPSAweDk2Mzg3NzE5O1xuICAgICAgdGhpcy5oM2wgPSAweDU5NDBFQUJEO1xuICAgICAgdGhpcy5oNGggPSAweDk2MjgzRUUyO1xuICAgICAgdGhpcy5oNGwgPSAweEE4OEVGRkUzO1xuICAgICAgdGhpcy5oNWggPSAweEJFNUUxRTI1O1xuICAgICAgdGhpcy5oNWwgPSAweDUzODYzOTkyO1xuICAgICAgdGhpcy5oNmggPSAweDJCMDE5OUZDO1xuICAgICAgdGhpcy5oNmwgPSAweDJDODVCOEFBO1xuICAgICAgdGhpcy5oN2ggPSAweDBFQjcyRERDO1xuICAgICAgdGhpcy5oN2wgPSAweDgxQzUyQ0EyO1xuICAgIH0gZWxzZSBpZiAoYml0cyA9PSAyMjQpIHtcbiAgICAgIHRoaXMuaDBoID0gMHg4QzNEMzdDODtcbiAgICAgIHRoaXMuaDBsID0gMHgxOTU0NERBMjtcbiAgICAgIHRoaXMuaDFoID0gMHg3M0UxOTk2NjtcbiAgICAgIHRoaXMuaDFsID0gMHg4OURDRDRENjtcbiAgICAgIHRoaXMuaDJoID0gMHgxREZBQjdBRTtcbiAgICAgIHRoaXMuaDJsID0gMHgzMkZGOUM4MjtcbiAgICAgIHRoaXMuaDNoID0gMHg2NzlERDUxNDtcbiAgICAgIHRoaXMuaDNsID0gMHg1ODJGOUZDRjtcbiAgICAgIHRoaXMuaDRoID0gMHgwRjZEMkI2OTtcbiAgICAgIHRoaXMuaDRsID0gMHg3QkQ0NERBODtcbiAgICAgIHRoaXMuaDVoID0gMHg3N0UzNkY3MztcbiAgICAgIHRoaXMuaDVsID0gMHgwNEM0ODk0MjtcbiAgICAgIHRoaXMuaDZoID0gMHgzRjlEODVBODtcbiAgICAgIHRoaXMuaDZsID0gMHg2QTFEMzZDODtcbiAgICAgIHRoaXMuaDdoID0gMHgxMTEyRTZBRDtcbiAgICAgIHRoaXMuaDdsID0gMHg5MUQ2OTJBMTtcbiAgICB9IGVsc2UgeyAvLyA1MTJcbiAgICAgIHRoaXMuaDBoID0gMHg2QTA5RTY2NztcbiAgICAgIHRoaXMuaDBsID0gMHhGM0JDQzkwODtcbiAgICAgIHRoaXMuaDFoID0gMHhCQjY3QUU4NTtcbiAgICAgIHRoaXMuaDFsID0gMHg4NENBQTczQjtcbiAgICAgIHRoaXMuaDJoID0gMHgzQzZFRjM3MjtcbiAgICAgIHRoaXMuaDJsID0gMHhGRTk0RjgyQjtcbiAgICAgIHRoaXMuaDNoID0gMHhBNTRGRjUzQTtcbiAgICAgIHRoaXMuaDNsID0gMHg1RjFEMzZGMTtcbiAgICAgIHRoaXMuaDRoID0gMHg1MTBFNTI3RjtcbiAgICAgIHRoaXMuaDRsID0gMHhBREU2ODJEMTtcbiAgICAgIHRoaXMuaDVoID0gMHg5QjA1Njg4QztcbiAgICAgIHRoaXMuaDVsID0gMHgyQjNFNkMxRjtcbiAgICAgIHRoaXMuaDZoID0gMHgxRjgzRDlBQjtcbiAgICAgIHRoaXMuaDZsID0gMHhGQjQxQkQ2QjtcbiAgICAgIHRoaXMuaDdoID0gMHg1QkUwQ0QxOTtcbiAgICAgIHRoaXMuaDdsID0gMHgxMzdFMjE3OTtcbiAgICB9XG4gICAgdGhpcy5iaXRzID0gYml0cztcblxuICAgIHRoaXMuYmxvY2sgPSB0aGlzLnN0YXJ0ID0gdGhpcy5ieXRlcyA9IHRoaXMuaEJ5dGVzID0gMDtcbiAgICB0aGlzLmZpbmFsaXplZCA9IHRoaXMuaGFzaGVkID0gZmFsc2U7XG4gIH1cblxuICBTaGE1MTIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRklOQUxJWkVfRVJST1IpO1xuICAgIH1cbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIG1lc3NhZ2U7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICB9IGVsc2UgaWYgKEFSUkFZX0JVRkZFUiAmJiBtZXNzYWdlLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBuZXcgVWludDhBcnJheShtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xuICAgICAgICAgIGlmICghQVJSQVlfQlVGRkVSIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGNvZGUsIGluZGV4ID0gMCwgaSwgbGVuZ3RoID0gbWVzc2FnZS5sZW5ndGgsIGJsb2NrcyA9IHRoaXMuYmxvY2tzO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5oYXNoZWQpIHtcbiAgICAgICAgdGhpcy5oYXNoZWQgPSBmYWxzZTtcbiAgICAgICAgYmxvY2tzWzBdID0gdGhpcy5ibG9jaztcbiAgICAgICAgYmxvY2tzWzFdID0gYmxvY2tzWzJdID0gYmxvY2tzWzNdID0gYmxvY2tzWzRdID1cbiAgICAgICAgYmxvY2tzWzVdID0gYmxvY2tzWzZdID0gYmxvY2tzWzddID0gYmxvY2tzWzhdID1cbiAgICAgICAgYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPSBibG9ja3NbMTJdID1cbiAgICAgICAgYmxvY2tzWzEzXSA9IGJsb2Nrc1sxNF0gPSBibG9ja3NbMTVdID0gYmxvY2tzWzE2XSA9XG4gICAgICAgIGJsb2Nrc1sxN10gPSBibG9ja3NbMThdID0gYmxvY2tzWzE5XSA9IGJsb2Nrc1syMF0gPVxuICAgICAgICBibG9ja3NbMjFdID0gYmxvY2tzWzIyXSA9IGJsb2Nrc1syM10gPSBibG9ja3NbMjRdID1cbiAgICAgICAgYmxvY2tzWzI1XSA9IGJsb2Nrc1syNl0gPSBibG9ja3NbMjddID0gYmxvY2tzWzI4XSA9XG4gICAgICAgIGJsb2Nrc1syOV0gPSBibG9ja3NbMzBdID0gYmxvY2tzWzMxXSA9IGJsb2Nrc1szMl0gPSAwO1xuICAgICAgfVxuXG4gICAgICBpZihub3RTdHJpbmcpIHtcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IDEyODsgKytpbmRleCkge1xuICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9IG1lc3NhZ2VbaW5kZXhdIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGkgPSB0aGlzLnN0YXJ0OyBpbmRleCA8IGxlbmd0aCAmJiBpIDwgMTI4OyArK2luZGV4KSB7XG4gICAgICAgICAgY29kZSA9IG1lc3NhZ2UuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBjb2RlIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ODAwKSB7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhjMCB8IChjb2RlID4+IDYpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHhkODAwIHx8IGNvZGUgPj0gMHhlMDAwKSB7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhlMCB8IChjb2RlID4+IDEyKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvZGUgPSAweDEwMDAwICsgKCgoY29kZSAmIDB4M2ZmKSA8PCAxMCkgfCAobWVzc2FnZS5jaGFyQ29kZUF0KCsraW5kZXgpICYgMHgzZmYpKTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweGYwIHwgKGNvZGUgPj4gMTgpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0Qnl0ZUluZGV4ID0gaTtcbiAgICAgIHRoaXMuYnl0ZXMgKz0gaSAtIHRoaXMuc3RhcnQ7XG4gICAgICBpZiAoaSA+PSAxMjgpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2Nrc1szMl07XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gMTI4O1xuICAgICAgICB0aGlzLmhhc2goKTtcbiAgICAgICAgdGhpcy5oYXNoZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmJ5dGVzID4gNDI5NDk2NzI5NSkge1xuICAgICAgdGhpcy5oQnl0ZXMgKz0gdGhpcy5ieXRlcyAvIDQyOTQ5NjcyOTYgPDwgMDtcbiAgICAgIHRoaXMuYnl0ZXMgPSB0aGlzLmJ5dGVzICUgNDI5NDk2NzI5NjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5maW5hbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maW5hbGl6ZWQgPSB0cnVlO1xuICAgIHZhciBibG9ja3MgPSB0aGlzLmJsb2NrcywgaSA9IHRoaXMubGFzdEJ5dGVJbmRleDtcbiAgICBibG9ja3NbMzJdID0gdGhpcy5ibG9jaztcbiAgICBibG9ja3NbaSA+PiAyXSB8PSBFWFRSQVtpICYgM107XG4gICAgdGhpcy5ibG9jayA9IGJsb2Nrc1szMl07XG4gICAgaWYgKGkgPj0gMTEyKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzaGVkKSB7XG4gICAgICAgIHRoaXMuaGFzaCgpO1xuICAgICAgfVxuICAgICAgYmxvY2tzWzBdID0gdGhpcy5ibG9jaztcbiAgICAgIGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9IGJsb2Nrc1s0XSA9XG4gICAgICBibG9ja3NbNV0gPSBibG9ja3NbNl0gPSBibG9ja3NbN10gPSBibG9ja3NbOF0gPVxuICAgICAgYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPSBibG9ja3NbMTJdID1cbiAgICAgIGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IGJsb2Nrc1sxNl0gPVxuICAgICAgYmxvY2tzWzE3XSA9IGJsb2Nrc1sxOF0gPSBibG9ja3NbMTldID0gYmxvY2tzWzIwXSA9XG4gICAgICBibG9ja3NbMjFdID0gYmxvY2tzWzIyXSA9IGJsb2Nrc1syM10gPSBibG9ja3NbMjRdID1cbiAgICAgIGJsb2Nrc1syNV0gPSBibG9ja3NbMjZdID0gYmxvY2tzWzI3XSA9IGJsb2Nrc1syOF0gPVxuICAgICAgYmxvY2tzWzI5XSA9IGJsb2Nrc1szMF0gPSBibG9ja3NbMzFdID0gYmxvY2tzWzMyXSA9IDA7XG4gICAgfVxuICAgIGJsb2Nrc1szMF0gPSB0aGlzLmhCeXRlcyA8PCAzIHwgdGhpcy5ieXRlcyA+Pj4gMjk7XG4gICAgYmxvY2tzWzMxXSA9IHRoaXMuYnl0ZXMgPDwgMztcbiAgICB0aGlzLmhhc2goKTtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmhhc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGgwaCA9IHRoaXMuaDBoLCBoMGwgPSB0aGlzLmgwbCwgaDFoID0gdGhpcy5oMWgsIGgxbCA9IHRoaXMuaDFsLFxuICAgICAgaDJoID0gdGhpcy5oMmgsIGgybCA9IHRoaXMuaDJsLCBoM2ggPSB0aGlzLmgzaCwgaDNsID0gdGhpcy5oM2wsXG4gICAgICBoNGggPSB0aGlzLmg0aCwgaDRsID0gdGhpcy5oNGwsIGg1aCA9IHRoaXMuaDVoLCBoNWwgPSB0aGlzLmg1bCxcbiAgICAgIGg2aCA9IHRoaXMuaDZoLCBoNmwgPSB0aGlzLmg2bCwgaDdoID0gdGhpcy5oN2gsIGg3bCA9IHRoaXMuaDdsLFxuICAgICAgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGosIHMwaCwgczBsLCBzMWgsIHMxbCwgYzEsIGMyLCBjMywgYzQsXG4gICAgICBhYmgsIGFibCwgZGFoLCBkYWwsIGNkaCwgY2RsLCBiY2gsIGJjbCxcbiAgICAgIG1hamgsIG1hamwsIHQxaCwgdDFsLCB0MmgsIHQybCwgY2hoLCBjaGw7XG5cbiAgICBmb3IgKGogPSAzMjsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgICB0MWggPSBibG9ja3NbaiAtIDMwXTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqIC0gMjldO1xuICAgICAgczBoID0gKCh0MWggPj4+IDEpIHwgKHQxbCA8PCAzMSkpIF4gKCh0MWggPj4+IDgpIHwgKHQxbCA8PCAyNCkpIF4gKHQxaCA+Pj4gNyk7XG4gICAgICBzMGwgPSAoKHQxbCA+Pj4gMSkgfCAodDFoIDw8IDMxKSkgXiAoKHQxbCA+Pj4gOCkgfCAodDFoIDw8IDI0KSkgXiAoKHQxbCA+Pj4gNykgfCB0MWggPDwgMjUpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiAtIDRdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogLSAzXTtcbiAgICAgIHMxaCA9ICgodDFoID4+PiAxOSkgfCAodDFsIDw8IDEzKSkgXiAoKHQxbCA+Pj4gMjkpIHwgKHQxaCA8PCAzKSkgXiAodDFoID4+PiA2KTtcbiAgICAgIHMxbCA9ICgodDFsID4+PiAxOSkgfCAodDFoIDw8IDEzKSkgXiAoKHQxaCA+Pj4gMjkpIHwgKHQxbCA8PCAzKSkgXiAoKHQxbCA+Pj4gNikgfCB0MWggPDwgMjYpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiAtIDMyXTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqIC0gMzFdO1xuICAgICAgdDJoID0gYmxvY2tzW2ogLSAxNF07XG4gICAgICB0MmwgPSBibG9ja3NbaiAtIDEzXTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKHMwbCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKHMxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9ICh0MmggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChzMGggPj4+IDE2KSArIChzMWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBibG9ja3Nbal0gPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGJsb2Nrc1tqICsgMV0gPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcbiAgICB9XG5cbiAgICB2YXIgYWggPSBoMGgsIGFsID0gaDBsLCBiaCA9IGgxaCwgYmwgPSBoMWwsIGNoID0gaDJoLCBjbCA9IGgybCwgZGggPSBoM2gsIGRsID0gaDNsLCBlaCA9IGg0aCwgZWwgPSBoNGwsIGZoID0gaDVoLCBmbCA9IGg1bCwgZ2ggPSBoNmgsIGdsID0gaDZsLCBoaCA9IGg3aCwgaGwgPSBoN2w7XG4gICAgYmNoID0gYmggJiBjaDtcbiAgICBiY2wgPSBibCAmIGNsO1xuICAgIGZvciAoaiA9IDA7IGogPCAxNjA7IGogKz0gOCkge1xuICAgICAgczBoID0gKChhaCA+Pj4gMjgpIHwgKGFsIDw8IDQpKSBeICgoYWwgPj4+IDIpIHwgKGFoIDw8IDMwKSkgXiAoKGFsID4+PiA3KSB8IChhaCA8PCAyNSkpO1xuICAgICAgczBsID0gKChhbCA+Pj4gMjgpIHwgKGFoIDw8IDQpKSBeICgoYWggPj4+IDIpIHwgKGFsIDw8IDMwKSkgXiAoKGFoID4+PiA3KSB8IChhbCA8PCAyNSkpO1xuXG4gICAgICBzMWggPSAoKGVoID4+PiAxNCkgfCAoZWwgPDwgMTgpKSBeICgoZWggPj4+IDE4KSB8IChlbCA8PCAxNCkpIF4gKChlbCA+Pj4gOSkgfCAoZWggPDwgMjMpKTtcbiAgICAgIHMxbCA9ICgoZWwgPj4+IDE0KSB8IChlaCA8PCAxOCkpIF4gKChlbCA+Pj4gMTgpIHwgKGVoIDw8IDE0KSkgXiAoKGVoID4+PiA5KSB8IChlbCA8PCAyMykpO1xuXG4gICAgICBhYmggPSBhaCAmIGJoO1xuICAgICAgYWJsID0gYWwgJiBibDtcbiAgICAgIG1hamggPSBhYmggXiAoYWggJiBjaCkgXiBiY2g7XG4gICAgICBtYWpsID0gYWJsIF4gKGFsICYgY2wpIF4gYmNsO1xuXG4gICAgICBjaGggPSAoZWggJiBmaCkgXiAofmVoICYgZ2gpO1xuICAgICAgY2hsID0gKGVsICYgZmwpIF4gKH5lbCAmIGdsKTtcblxuICAgICAgdDFoID0gYmxvY2tzW2pdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyAxXTtcbiAgICAgIHQyaCA9IEtbal07XG4gICAgICB0MmwgPSBLW2ogKyAxXTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChobCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChobCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGhoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoaGggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoZGwgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChkbCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChkaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoZGggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBoaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgaGwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGRsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIHMwaCA9ICgoZGggPj4+IDI4KSB8IChkbCA8PCA0KSkgXiAoKGRsID4+PiAyKSB8IChkaCA8PCAzMCkpIF4gKChkbCA+Pj4gNykgfCAoZGggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoZGwgPj4+IDI4KSB8IChkaCA8PCA0KSkgXiAoKGRoID4+PiAyKSB8IChkbCA8PCAzMCkpIF4gKChkaCA+Pj4gNykgfCAoZGwgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChoaCA+Pj4gMTQpIHwgKGhsIDw8IDE4KSkgXiAoKGhoID4+PiAxOCkgfCAoaGwgPDwgMTQpKSBeICgoaGwgPj4+IDkpIHwgKGhoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGhsID4+PiAxNCkgfCAoaGggPDwgMTgpKSBeICgoaGwgPj4+IDE4KSB8IChoaCA8PCAxNCkpIF4gKChoaCA+Pj4gOSkgfCAoaGwgPDwgMjMpKTtcblxuICAgICAgZGFoID0gZGggJiBhaDtcbiAgICAgIGRhbCA9IGRsICYgYWw7XG4gICAgICBtYWpoID0gZGFoIF4gKGRoICYgYmgpIF4gYWJoO1xuICAgICAgbWFqbCA9IGRhbCBeIChkbCAmIGJsKSBeIGFibDtcblxuICAgICAgY2hoID0gKGhoICYgZWgpIF4gKH5oaCAmIGZoKTtcbiAgICAgIGNobCA9IChobCAmIGVsKSBeICh+aGwgJiBmbCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqICsgMl07XG4gICAgICB0MWwgPSBibG9ja3NbaiArIDNdO1xuICAgICAgdDJoID0gS1tqICsgMl07XG4gICAgICB0MmwgPSBLW2ogKyAzXTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChnbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChnbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGdoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoZ2ggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoY2wgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChjbCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChjaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoY2ggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBnaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgZ2wgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgY2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGNsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIHMwaCA9ICgoY2ggPj4+IDI4KSB8IChjbCA8PCA0KSkgXiAoKGNsID4+PiAyKSB8IChjaCA8PCAzMCkpIF4gKChjbCA+Pj4gNykgfCAoY2ggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoY2wgPj4+IDI4KSB8IChjaCA8PCA0KSkgXiAoKGNoID4+PiAyKSB8IChjbCA8PCAzMCkpIF4gKChjaCA+Pj4gNykgfCAoY2wgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChnaCA+Pj4gMTQpIHwgKGdsIDw8IDE4KSkgXiAoKGdoID4+PiAxOCkgfCAoZ2wgPDwgMTQpKSBeICgoZ2wgPj4+IDkpIHwgKGdoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGdsID4+PiAxNCkgfCAoZ2ggPDwgMTgpKSBeICgoZ2wgPj4+IDE4KSB8IChnaCA8PCAxNCkpIF4gKChnaCA+Pj4gOSkgfCAoZ2wgPDwgMjMpKTtcblxuICAgICAgY2RoID0gY2ggJiBkaDtcbiAgICAgIGNkbCA9IGNsICYgZGw7XG4gICAgICBtYWpoID0gY2RoIF4gKGNoICYgYWgpIF4gZGFoO1xuICAgICAgbWFqbCA9IGNkbCBeIChjbCAmIGFsKSBeIGRhbDtcblxuICAgICAgY2hoID0gKGdoICYgaGgpIF4gKH5naCAmIGVoKTtcbiAgICAgIGNobCA9IChnbCAmIGhsKSBeICh+Z2wgJiBlbCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqICsgNF07XG4gICAgICB0MWwgPSBibG9ja3NbaiArIDVdO1xuICAgICAgdDJoID0gS1tqICsgNF07XG4gICAgICB0MmwgPSBLW2ogKyA1XTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChmbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChmbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGZoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoZmggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoYmwgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChibCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChiaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoYmggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBmaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgZmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgYmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIHMwaCA9ICgoYmggPj4+IDI4KSB8IChibCA8PCA0KSkgXiAoKGJsID4+PiAyKSB8IChiaCA8PCAzMCkpIF4gKChibCA+Pj4gNykgfCAoYmggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoYmwgPj4+IDI4KSB8IChiaCA8PCA0KSkgXiAoKGJoID4+PiAyKSB8IChibCA8PCAzMCkpIF4gKChiaCA+Pj4gNykgfCAoYmwgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChmaCA+Pj4gMTQpIHwgKGZsIDw8IDE4KSkgXiAoKGZoID4+PiAxOCkgfCAoZmwgPDwgMTQpKSBeICgoZmwgPj4+IDkpIHwgKGZoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGZsID4+PiAxNCkgfCAoZmggPDwgMTgpKSBeICgoZmwgPj4+IDE4KSB8IChmaCA8PCAxNCkpIF4gKChmaCA+Pj4gOSkgfCAoZmwgPDwgMjMpKTtcblxuICAgICAgYmNoID0gYmggJiBjaDtcbiAgICAgIGJjbCA9IGJsICYgY2w7XG4gICAgICBtYWpoID0gYmNoIF4gKGJoICYgZGgpIF4gY2RoO1xuICAgICAgbWFqbCA9IGJjbCBeIChibCAmIGRsKSBeIGNkbDtcblxuICAgICAgY2hoID0gKGZoICYgZ2gpIF4gKH5maCAmIGhoKTtcbiAgICAgIGNobCA9IChmbCAmIGdsKSBeICh+ZmwgJiBobCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqICsgNl07XG4gICAgICB0MWwgPSBibG9ja3NbaiArIDddO1xuICAgICAgdDJoID0gS1tqICsgNl07XG4gICAgICB0MmwgPSBLW2ogKyA3XTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChlbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChlbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGVoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoZWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoYWwgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChhbCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChhaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoYWggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBlaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgZWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgYWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGFsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG4gICAgfVxuXG4gICAgYzEgPSAoaDBsICYgMHhGRkZGKSArIChhbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDBsID4+PiAxNikgKyAoYWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgwaCAmIDB4RkZGRikgKyAoYWggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDBoID4+PiAxNikgKyAoYWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oMGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgwbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDFsICYgMHhGRkZGKSArIChibCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDFsID4+PiAxNikgKyAoYmwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgxaCAmIDB4RkZGRikgKyAoYmggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDFoID4+PiAxNikgKyAoYmggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oMWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDJsICYgMHhGRkZGKSArIChjbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDJsID4+PiAxNikgKyAoY2wgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgyaCAmIDB4RkZGRikgKyAoY2ggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDJoID4+PiAxNikgKyAoY2ggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oMmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgybCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDNsICYgMHhGRkZGKSArIChkbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDNsID4+PiAxNikgKyAoZGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgzaCAmIDB4RkZGRikgKyAoZGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDNoID4+PiAxNikgKyAoZGggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oM2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgzbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDRsICYgMHhGRkZGKSArIChlbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDRsID4+PiAxNikgKyAoZWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg0aCAmIDB4RkZGRikgKyAoZWggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDRoID4+PiAxNikgKyAoZWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oNGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg0bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDVsICYgMHhGRkZGKSArIChmbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDVsID4+PiAxNikgKyAoZmwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg1aCAmIDB4RkZGRikgKyAoZmggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDVoID4+PiAxNikgKyAoZmggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oNWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg1bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDZsICYgMHhGRkZGKSArIChnbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDZsID4+PiAxNikgKyAoZ2wgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg2aCAmIDB4RkZGRikgKyAoZ2ggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDZoID4+PiAxNikgKyAoZ2ggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oNmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg2bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDdsICYgMHhGRkZGKSArIChobCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDdsID4+PiAxNikgKyAoaGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg3aCAmIDB4RkZGRikgKyAoaGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDdoID4+PiAxNikgKyAoaGggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oN2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg3bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuaGV4ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBoMGggPSB0aGlzLmgwaCwgaDBsID0gdGhpcy5oMGwsIGgxaCA9IHRoaXMuaDFoLCBoMWwgPSB0aGlzLmgxbCxcbiAgICAgIGgyaCA9IHRoaXMuaDJoLCBoMmwgPSB0aGlzLmgybCwgaDNoID0gdGhpcy5oM2gsIGgzbCA9IHRoaXMuaDNsLFxuICAgICAgaDRoID0gdGhpcy5oNGgsIGg0bCA9IHRoaXMuaDRsLCBoNWggPSB0aGlzLmg1aCwgaDVsID0gdGhpcy5oNWwsXG4gICAgICBoNmggPSB0aGlzLmg2aCwgaDZsID0gdGhpcy5oNmwsIGg3aCA9IHRoaXMuaDdoLCBoN2wgPSB0aGlzLmg3bCxcbiAgICAgIGJpdHMgPSB0aGlzLmJpdHM7XG5cbiAgICB2YXIgaGV4ID0gSEVYX0NIQVJTWyhoMGggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwaCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwaCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDBoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGggPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwaCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gwaCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGwgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwbCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwbCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDBsID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMGwgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxaCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDFoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxaCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDFoICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxbCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxbCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDFsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWwgPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxbCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gxbCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgyaCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgyaCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDJoID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMmggJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgybCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDJsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgybCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDJsICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoM2ggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzaCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgzaCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDNoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDNoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2ggPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgzaCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gzaCAmIDB4MEZdO1xuICAgIGlmIChiaXRzID49IDI1Nikge1xuICAgICAgaGV4ICs9IEhFWF9DSEFSU1soaDNsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2wgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGgzbCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDNsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoM2wgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzbCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoM2wgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toM2wgJiAweDBGXTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPj0gMzg0KSB7XG4gICAgICBoZXggKz0gSEVYX0NIQVJTWyhoNGggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDRoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDRoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g0aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDRsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDRsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g0bCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDVoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g1aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDVsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g1bCAmIDB4MEZdO1xuICAgIH1cbiAgICBpZiAoYml0cyA9PSA1MTIpIHtcbiAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGg2aCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDZoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNmggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2aCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmggPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDZoICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2bCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDZsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNmwgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2bCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmwgPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDZsICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3aCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDdoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2ggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3aCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2ggPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDdoICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3bCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDdsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2wgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3bCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2wgPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDdsICYgMHgwRl07XG4gICAgfVxuICAgIHJldHVybiBoZXg7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS50b1N0cmluZyA9IFNoYTUxMi5wcm90b3R5cGUuaGV4O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBoMGggPSB0aGlzLmgwaCwgaDBsID0gdGhpcy5oMGwsIGgxaCA9IHRoaXMuaDFoLCBoMWwgPSB0aGlzLmgxbCxcbiAgICAgIGgyaCA9IHRoaXMuaDJoLCBoMmwgPSB0aGlzLmgybCwgaDNoID0gdGhpcy5oM2gsIGgzbCA9IHRoaXMuaDNsLFxuICAgICAgaDRoID0gdGhpcy5oNGgsIGg0bCA9IHRoaXMuaDRsLCBoNWggPSB0aGlzLmg1aCwgaDVsID0gdGhpcy5oNWwsXG4gICAgICBoNmggPSB0aGlzLmg2aCwgaDZsID0gdGhpcy5oNmwsIGg3aCA9IHRoaXMuaDdoLCBoN2wgPSB0aGlzLmg3bCxcbiAgICAgIGJpdHMgPSB0aGlzLmJpdHM7XG5cbiAgICB2YXIgYXJyID0gW1xuICAgICAgKGgwaCA+PiAyNCkgJiAweEZGLCAoaDBoID4+IDE2KSAmIDB4RkYsIChoMGggPj4gOCkgJiAweEZGLCBoMGggJiAweEZGLFxuICAgICAgKGgwbCA+PiAyNCkgJiAweEZGLCAoaDBsID4+IDE2KSAmIDB4RkYsIChoMGwgPj4gOCkgJiAweEZGLCBoMGwgJiAweEZGLFxuICAgICAgKGgxaCA+PiAyNCkgJiAweEZGLCAoaDFoID4+IDE2KSAmIDB4RkYsIChoMWggPj4gOCkgJiAweEZGLCBoMWggJiAweEZGLFxuICAgICAgKGgxbCA+PiAyNCkgJiAweEZGLCAoaDFsID4+IDE2KSAmIDB4RkYsIChoMWwgPj4gOCkgJiAweEZGLCBoMWwgJiAweEZGLFxuICAgICAgKGgyaCA+PiAyNCkgJiAweEZGLCAoaDJoID4+IDE2KSAmIDB4RkYsIChoMmggPj4gOCkgJiAweEZGLCBoMmggJiAweEZGLFxuICAgICAgKGgybCA+PiAyNCkgJiAweEZGLCAoaDJsID4+IDE2KSAmIDB4RkYsIChoMmwgPj4gOCkgJiAweEZGLCBoMmwgJiAweEZGLFxuICAgICAgKGgzaCA+PiAyNCkgJiAweEZGLCAoaDNoID4+IDE2KSAmIDB4RkYsIChoM2ggPj4gOCkgJiAweEZGLCBoM2ggJiAweEZGXG4gICAgXTtcblxuICAgIGlmIChiaXRzID49IDI1Nikge1xuICAgICAgYXJyLnB1c2goKGgzbCA+PiAyNCkgJiAweEZGLCAoaDNsID4+IDE2KSAmIDB4RkYsIChoM2wgPj4gOCkgJiAweEZGLCBoM2wgJiAweEZGKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPj0gMzg0KSB7XG4gICAgICBhcnIucHVzaChcbiAgICAgICAgKGg0aCA+PiAyNCkgJiAweEZGLCAoaDRoID4+IDE2KSAmIDB4RkYsIChoNGggPj4gOCkgJiAweEZGLCBoNGggJiAweEZGLFxuICAgICAgICAoaDRsID4+IDI0KSAmIDB4RkYsIChoNGwgPj4gMTYpICYgMHhGRiwgKGg0bCA+PiA4KSAmIDB4RkYsIGg0bCAmIDB4RkYsXG4gICAgICAgIChoNWggPj4gMjQpICYgMHhGRiwgKGg1aCA+PiAxNikgJiAweEZGLCAoaDVoID4+IDgpICYgMHhGRiwgaDVoICYgMHhGRixcbiAgICAgICAgKGg1bCA+PiAyNCkgJiAweEZGLCAoaDVsID4+IDE2KSAmIDB4RkYsIChoNWwgPj4gOCkgJiAweEZGLCBoNWwgJiAweEZGXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYml0cyA9PSA1MTIpIHtcbiAgICAgIGFyci5wdXNoKFxuICAgICAgICAoaDZoID4+IDI0KSAmIDB4RkYsIChoNmggPj4gMTYpICYgMHhGRiwgKGg2aCA+PiA4KSAmIDB4RkYsIGg2aCAmIDB4RkYsXG4gICAgICAgIChoNmwgPj4gMjQpICYgMHhGRiwgKGg2bCA+PiAxNikgJiAweEZGLCAoaDZsID4+IDgpICYgMHhGRiwgaDZsICYgMHhGRixcbiAgICAgICAgKGg3aCA+PiAyNCkgJiAweEZGLCAoaDdoID4+IDE2KSAmIDB4RkYsIChoN2ggPj4gOCkgJiAweEZGLCBoN2ggJiAweEZGLFxuICAgICAgICAoaDdsID4+IDI0KSAmIDB4RkYsIChoN2wgPj4gMTYpICYgMHhGRiwgKGg3bCA+PiA4KSAmIDB4RkYsIGg3bCAmIDB4RkZcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS5hcnJheSA9IFNoYTUxMi5wcm90b3R5cGUuZGlnZXN0O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5maW5hbGl6ZSgpO1xuXG4gICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihiaXRzIC8gOCk7XG4gICAgdmFyIGRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDAsIHRoaXMuaDBoKTtcbiAgICBkYXRhVmlldy5zZXRVaW50MzIoNCwgdGhpcy5oMGwpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMig4LCB0aGlzLmgxaCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDEyLCB0aGlzLmgxbCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDE2LCB0aGlzLmgyaCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDIwLCB0aGlzLmgybCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDI0LCB0aGlzLmgzaCk7XG5cbiAgICBpZiAoYml0cyA+PSAyNTYpIHtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMigyOCwgdGhpcy5oM2wpO1xuICAgIH1cbiAgICBpZiAoYml0cyA+PSAzODQpIHtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMigzMiwgdGhpcy5oNGgpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDM2LCB0aGlzLmg0bCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNDAsIHRoaXMuaDVoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig0NCwgdGhpcy5oNWwpO1xuICAgIH1cbiAgICBpZiAoYml0cyA9PSA1MTIpIHtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig0OCwgdGhpcy5oNmgpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDUyLCB0aGlzLmg2bCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNTYsIHRoaXMuaDdoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig2MCwgdGhpcy5oN2wpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhc2ggPSBuZXcgU2hhNTEyKHRoaXMuYml0cywgZmFsc2UpO1xuICAgIHRoaXMuY29weVRvKGhhc2gpO1xuICAgIHJldHVybiBoYXNoO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuY29weVRvID0gZnVuY3Rpb24gKGhhc2gpIHtcbiAgICB2YXIgaSA9IDAsIGF0dHJzID0gW1xuICAgICAgJ2gwaCcsICdoMGwnLCAnaDFoJywgJ2gxbCcsICdoMmgnLCAnaDJsJywgJ2gzaCcsICdoM2wnLCAnaDRoJywgJ2g0bCcsICdoNWgnLCAnaDVsJywgJ2g2aCcsICdoNmwnLCAnaDdoJywgJ2g3bCcsXG4gICAgICAnc3RhcnQnLCAnYnl0ZXMnLCAnaEJ5dGVzJywgJ2ZpbmFsaXplZCcsICdoYXNoZWQnLCAnbGFzdEJ5dGVJbmRleCdcbiAgICBdO1xuICAgIGZvciAoaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkge1xuICAgICAgaGFzaFthdHRyc1tpXV0gPSB0aGlzW2F0dHJzW2ldXTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuYmxvY2tzLmxlbmd0aDsgKytpKSB7XG4gICAgICBoYXNoLmJsb2Nrc1tpXSA9IHRoaXMuYmxvY2tzW2ldO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBIbWFjU2hhNTEyKGtleSwgYml0cywgc2hhcmVkTWVtb3J5KSB7XG4gICAgdmFyIG5vdFN0cmluZywgdHlwZSA9IHR5cGVvZiBrZXk7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgIH0gZWxzZSBpZiAoQVJSQVlfQlVGRkVSICYmIGtleS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBrZXkgPSBuZXcgVWludDhBcnJheShrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGtleSkpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KGtleSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGtleS5sZW5ndGg7XG4gICAgaWYgKCFub3RTdHJpbmcpIHtcbiAgICAgIHZhciBieXRlcyA9IFtdLCBsZW5ndGggPSBrZXkubGVuZ3RoLCBpbmRleCA9IDAsIGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvZGUgPSBrZXkuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSBjb2RlO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4YzAgfCAoY29kZSA+PiA2KSk7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHg4MCB8IChjb2RlICYgMHgzZikpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweGQ4MDAgfHwgY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweGUwIHwgKGNvZGUgPj4gMTIpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKGtleS5jaGFyQ29kZUF0KCsraSkgJiAweDNmZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ZjAgfCAoY29kZSA+PiAxOCkpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoKGNvZGUgPj4gMTIpICYgMHgzZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSk7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHg4MCB8IChjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBrZXkgPSBieXRlcztcbiAgICB9XG5cbiAgICBpZiAoa2V5Lmxlbmd0aCA+IDEyOCkge1xuICAgICAga2V5ID0gKG5ldyBTaGE1MTIoYml0cywgdHJ1ZSkpLnVwZGF0ZShrZXkpLmFycmF5KCk7XG4gICAgfVxuXG4gICAgdmFyIG9LZXlQYWQgPSBbXSwgaUtleVBhZCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTI4OyArK2kpIHtcbiAgICAgIHZhciBiID0ga2V5W2ldIHx8IDA7XG4gICAgICBvS2V5UGFkW2ldID0gMHg1YyBeIGI7XG4gICAgICBpS2V5UGFkW2ldID0gMHgzNiBeIGI7XG4gICAgfVxuXG4gICAgU2hhNTEyLmNhbGwodGhpcywgYml0cywgc2hhcmVkTWVtb3J5KTtcblxuICAgIHRoaXMudXBkYXRlKGlLZXlQYWQpO1xuICAgIHRoaXMub0tleVBhZCA9IG9LZXlQYWQ7XG4gICAgdGhpcy5pbm5lciA9IHRydWU7XG4gICAgdGhpcy5zaGFyZWRNZW1vcnkgPSBzaGFyZWRNZW1vcnk7XG4gIH1cbiAgSG1hY1NoYTUxMi5wcm90b3R5cGUgPSBuZXcgU2hhNTEyKCk7XG5cbiAgSG1hY1NoYTUxMi5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgU2hhNTEyLnByb3RvdHlwZS5maW5hbGl6ZS5jYWxsKHRoaXMpO1xuICAgIGlmICh0aGlzLmlubmVyKSB7XG4gICAgICB0aGlzLmlubmVyID0gZmFsc2U7XG4gICAgICB2YXIgaW5uZXJIYXNoID0gdGhpcy5hcnJheSgpO1xuICAgICAgU2hhNTEyLmNhbGwodGhpcywgdGhpcy5iaXRzLCB0aGlzLnNoYXJlZE1lbW9yeSk7XG4gICAgICB0aGlzLnVwZGF0ZSh0aGlzLm9LZXlQYWQpO1xuICAgICAgdGhpcy51cGRhdGUoaW5uZXJIYXNoKTtcbiAgICAgIFNoYTUxMi5wcm90b3R5cGUuZmluYWxpemUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH07XG5cbiAgSG1hY1NoYTUxMi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhc2ggPSBuZXcgSG1hY1NoYTUxMihbXSwgdGhpcy5iaXRzLCBmYWxzZSk7XG4gICAgdGhpcy5jb3B5VG8oaGFzaCk7XG4gICAgaGFzaC5pbm5lciA9IHRoaXMuaW5uZXI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9LZXlQYWQubGVuZ3RoOyArK2kpIHtcbiAgICAgIGhhc2gub0tleVBhZFtpXSA9IHRoaXMub0tleVBhZFtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc2g7XG4gIH07XG5cbiAgdmFyIGV4cG9ydHMgPSBjcmVhdGVNZXRob2QoNTEyKTtcbiAgZXhwb3J0cy5zaGE1MTIgPSBleHBvcnRzO1xuICBleHBvcnRzLnNoYTM4NCA9IGNyZWF0ZU1ldGhvZCgzODQpO1xuICBleHBvcnRzLnNoYTUxMl8yNTYgPSBjcmVhdGVNZXRob2QoMjU2KTtcbiAgZXhwb3J0cy5zaGE1MTJfMjI0ID0gY3JlYXRlTWV0aG9kKDIyNCk7XG4gIGV4cG9ydHMuc2hhNTEyLmhtYWMgPSBjcmVhdGVIbWFjTWV0aG9kKDUxMik7XG4gIGV4cG9ydHMuc2hhMzg0LmhtYWMgPSBjcmVhdGVIbWFjTWV0aG9kKDM4NCk7XG4gIGV4cG9ydHMuc2hhNTEyXzI1Ni5obWFjID0gY3JlYXRlSG1hY01ldGhvZCgyNTYpO1xuICBleHBvcnRzLnNoYTUxMl8yMjQuaG1hYyA9IGNyZWF0ZUhtYWNNZXRob2QoMjI0KTtcblxuICBpZiAoQ09NTU9OX0pTKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuICB9IGVsc2Uge1xuICAgIHJvb3Quc2hhNTEyID0gZXhwb3J0cy5zaGE1MTI7XG4gICAgcm9vdC5zaGEzODQgPSBleHBvcnRzLnNoYTM4NDtcbiAgICByb290LnNoYTUxMl8yNTYgPSBleHBvcnRzLnNoYTUxMl8yNTY7XG4gICAgcm9vdC5zaGE1MTJfMjI0ID0gZXhwb3J0cy5zaGE1MTJfMjI0O1xuICAgIGlmIChBTUQpIHtcbiAgICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KSgpO1xuIiwiaW1wb3J0IHsgc2hhNTEyIH0gZnJvbSBcImpzLXNoYTUxMlwiO1xuaW1wb3J0IHsgUHJvZ3Jlc3NDYWxsYmFjaywgU2lnbmVkQ2hhbGxlbmdlIH0gZnJvbSBcIi4vaW5kZXhcIjtcblxuY29uc3QgY29tcHV0ZUNvbGxpc2lvbkludGVnZXIgPSBhc3luYyAoe1xuICBpbnB1dCxcbiAgZXhwZWN0ZWQsXG59OiB7XG4gIGlucHV0OiBzdHJpbmc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG59KSA9PiB7XG4gIGxldCBhdHRlbXB0ID0gMDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGhhc2ggPSBzaGE1MTIoYCR7aW5wdXR9OiR7YXR0ZW1wdH1gKTtcbiAgICBpZiAoYXR0ZW1wdCAlIDRlNCA9PT0gMCkge1xuICAgICAgYXdhaXQgc2xlZXAoMCk7XG4gICAgfVxuICAgIGlmIChoYXNoLnN1YnN0cmluZygwLCBleHBlY3RlZC5sZW5ndGgpID09PSBleHBlY3RlZCkge1xuICAgICAgcmV0dXJuIGF0dGVtcHQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgYXR0ZW1wdCsrO1xuICB9XG59O1xuXG5jb25zdCBzbGVlcCA9ICh0aW1lOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIHRpbWUpKTtcblxuY29uc3QgY29tcHV0ZVNvbHV0aW9ucyA9IGFzeW5jICh7XG4gIGNoYWxsZW5nZSxcbiAgb25Qcm9ncmVzcyxcbn06IHtcbiAgY2hhbGxlbmdlOiBTaWduZWRDaGFsbGVuZ2U7XG4gIG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xufSkgPT4ge1xuICBjb25zdCB7IG5vbmNlLCBkaWZmaWN1bHR5LCBoYXJkbmVzcyB9ID0gY2hhbGxlbmdlLnBheWxvYWQ7XG5cbiAgY29uc3Qgc29sdXRpb25zID0gW107XG5cbiAgb25Qcm9ncmVzcz8uKDApO1xuXG4gIGZvciAobGV0IGggPSAwOyBoIDwgaGFyZG5lc3M7IGgrKykge1xuICAgIGNvbnN0IHNvbHV0aW9uID0gYXdhaXQgY29tcHV0ZUNvbGxpc2lvbkludGVnZXIoe1xuICAgICAgaW5wdXQ6IGAke25vbmNlfToke2h9YCxcbiAgICAgIGV4cGVjdGVkOiBcIjBcIi5yZXBlYXQoZGlmZmljdWx0eSksXG4gICAgfSk7XG4gICAgc29sdXRpb25zLnB1c2goc29sdXRpb24pO1xuICAgIG9uUHJvZ3Jlc3M/Lihzb2x1dGlvbnMubGVuZ3RoIC8gaGFyZG5lc3MpO1xuICAgIGF3YWl0IHNsZWVwKDApO1xuICB9XG5cbiAgcmV0dXJuIHNvbHV0aW9ucztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXB1dGVTb2x1dGlvbnM7XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE8gPSB7fTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgY29tcHV0ZVNvbHV0aW9ucyBmcm9tIFwiLi9jb21wdXRlU29sdXRpb25zXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19CT1RQT0lTT05fVkVSU0lPTl9fOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX186IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgX19CT1RQT0lTT05fSEVBUlRCRUFUX0RJU1BBVENIRVJfXzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIEJvdHBvaXNvbk9wdGlvbnMgPSB7IHB1YmxpY0tleTogc3RyaW5nIH07XG5cbnR5cGUgQ2hhbGxlbmdlT3B0aW9ucyA9IHsgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2sgfTtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayA9IChwcm9ncmVzczogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBTaWduZWRDaGFsbGVuZ2UgPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBub25jZTogc3RyaW5nO1xuICAgIGRpZmZpY3VsdHk6IG51bWJlcjtcbiAgICBoYXJkbmVzczogbnVtYmVyO1xuICB9O1xufTtcblxuY29uc3QgQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLmJvdHBvaXNvbi5jb21cIjtcblxuY29uc3QgaW5pdCA9ICgpID0+IHtcbiAgYWRkVmVyc2lvbigpO1xuICBhZGRTdWJtaXRMaXN0ZW5lcigpO1xuICBhZGRIZWFydGJlYXREaXNwYXRjaGVyKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb3Rwb2lzb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IHB1YmxpY0tleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHsgcHVibGljS2V5IH06IEJvdHBvaXNvbk9wdGlvbnMpIHtcbiAgICB0aGlzLnB1YmxpY0tleSA9IHB1YmxpY0tleTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KCkge1xuICAgIGluaXQoKTtcbiAgfVxuXG4gIGFzeW5jIGNoYWxsZW5nZShvcHRpb25zPzogQ2hhbGxlbmdlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgb25Qcm9ncmVzcyB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9jaGFsbGVuZ2VgLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHB1YmxpY0tleTogdGhpcy5wdWJsaWNLZXksXG4gICAgICAgIGhvc3RuYW1lOiBsb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbGxlbmdlID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgU2lnbmVkQ2hhbGxlbmdlO1xuXG4gICAgY29uc3Qgc29sdXRpb25zID0gYXdhaXQgY29tcHV0ZVNvbHV0aW9ucyh7XG4gICAgICBjaGFsbGVuZ2UsXG4gICAgICBvblByb2dyZXNzLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IGJ0b2EoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNoYWxsZW5nZSxcbiAgICAgICAgc29sdXRpb25zLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNvbHV0aW9uOiBzZXJpYWxpemVkLFxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgYXBwZW5kT3JVcGRhdGVCb3Rwb2lzb25JbnB1dCA9ICh7XG4gIGZvcm1FbGVtZW50LFxuICBpZCxcbiAgbmFtZSxcbiAgdmFsdWUsXG59OiB7XG4gIGZvcm1FbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufSkgPT4ge1xuICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gIGlmICghaW5wdXQpIHtcbiAgICBjb25zdCBuZXdJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICBuZXdJbnB1dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwiaGlkZGVuXCIpO1xuICAgIG5ld0lucHV0LnNldEF0dHJpYnV0ZShcImlkXCIsIGlkKTtcbiAgICBuZXdJbnB1dC5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsIG5hbWUpO1xuICAgIGZvcm1FbGVtZW50LmFwcGVuZENoaWxkKG5ld0lucHV0KTtcbiAgICBpbnB1dCA9IG5ld0lucHV0O1xuICB9XG4gIGlucHV0LnNldEF0dHJpYnV0ZShcInZhbHVlXCIsIHZhbHVlKTtcbn07XG5cbmNvbnN0IGFkZFZlcnNpb24gPSAoKSA9PiB7XG4gIGlmICghd2luZG93Ll9fQk9UUE9JU09OX1NVQk1JVF9MSVNURU5FUl9fKSB7XG4gICAgd2luZG93Ll9fQk9UUE9JU09OX1ZFUlNJT05fXyA9IHJlcXVpcmUoXCIuLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gIH1cbn07XG5cbmNvbnN0IGFkZFN1Ym1pdExpc3RlbmVyID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgaWYgKCF3aW5kb3cuX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX18pIHtcbiAgICAgIHdpbmRvdy5fX0JPVFBPSVNPTl9TVUJNSVRfTElTVEVORVJfXyA9IHRydWU7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIChldmVudCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGZvcm1FdmVudFRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICBpZiAoZm9ybUV2ZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRWxlbWVudCA9IGZvcm1FdmVudFRhcmdldCBhcyBIVE1MRm9ybUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSBmb3JtRWxlbWVudC5kYXRhc2V0LmJvdHBvaXNvblB1YmxpY0tleTtcbiAgICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJib3Rwb2lzb24tY2hhbGxlbmdlLXN0YXJ0XCIpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGJvdHBvaXNvbiA9IG5ldyBCb3Rwb2lzb24oe1xuICAgICAgICAgICAgICAgIHB1YmxpY0tleSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNvbnN0IGlkID0gYF9ib3Rwb2lzb25gO1xuICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaWQ7XG4gICAgICAgICAgICAgIGJvdHBvaXNvblxuICAgICAgICAgICAgICAgIC5jaGFsbGVuZ2UoKVxuICAgICAgICAgICAgICAgIC50aGVuKCh7IHNvbHV0aW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChcImJvdHBvaXNvbi1jaGFsbGVuZ2Utc3VjY2Vzc1wiKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGFwcGVuZE9yVXBkYXRlQm90cG9pc29uSW5wdXQoe1xuICAgICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzb2x1dGlvbixcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQuY2FsbChmb3JtRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChcImJvdHBvaXNvbi1jaGFsbGVuZ2UtZXJyb3JcIilcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgYWRkSGVhcnRiZWF0RGlzcGF0Y2hlciA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGlmICghd2luZG93Ll9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18pIHtcbiAgICAgIHdpbmRvdy5fX0JPVFBPSVNPTl9IRUFSVEJFQVRfRElTUEFUQ0hFUl9fID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkaXNwYXRjaCA9ICgpID0+IHtcbiAgICAgICAgdm9pZCBmZXRjaChgJHtCQVNFX1VSTH0vaGVhcnRiZWF0YCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgaG9zdG5hbWU6IGxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkaXNwYXRjaCgpO1xuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCgpO1xuICAgICAgfSwgNSAqIDYwICogMTAwMCk7IC8vIEV2ZXJ5IDE1IG1pbnV0ZXNcbiAgICB9XG4gIH1cbn07XG5cbmluaXQoKTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIklOUFVUX0VSUk9SIiwiV0lORE9XIiwid2luZG93IiwiSlNfU0hBNTEyX05PX1dJTkRPVyIsIldFQl9XT1JLRVIiLCJKU19TSEE1MTJfTk9fTk9ERV9KUyIsInByb2Nlc3MiLCJ2ZXJzaW9ucyIsIm5vZGUiLCJnIiwiQ09NTU9OX0pTIiwiSlNfU0hBNTEyX05PX0NPTU1PTl9KUyIsIkFNRCIsIkFSUkFZX0JVRkZFUiIsIkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVIiLCJBcnJheUJ1ZmZlciIsIkhFWF9DSEFSUyIsInNwbGl0IiwiRVhUUkEiLCJTSElGVCIsIksiLCJPVVRQVVRfVFlQRVMiLCJibG9ja3MiLCJBcnJheSIsImlzQXJyYXkiLCJvYmoiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJKU19TSEE1MTJfTk9fQVJSQVlfQlVGRkVSX0lTX1ZJRVciLCJpc1ZpZXciLCJidWZmZXIiLCJjb25zdHJ1Y3RvciIsImNyZWF0ZU91dHB1dE1ldGhvZCIsIm91dHB1dFR5cGUiLCJiaXRzIiwibWVzc2FnZSIsIlNoYTUxMiIsInVwZGF0ZSIsImNyZWF0ZU1ldGhvZCIsIm1ldGhvZCIsImNyZWF0ZSIsImkiLCJsZW5ndGgiLCJ0eXBlIiwiY3JlYXRlSG1hY091dHB1dE1ldGhvZCIsImtleSIsIkhtYWNTaGE1MTIiLCJjcmVhdGVIbWFjTWV0aG9kIiwic2hhcmVkTWVtb3J5IiwiaDBoIiwiaDBsIiwiaDFoIiwiaDFsIiwiaDJoIiwiaDJsIiwiaDNoIiwiaDNsIiwiaDRoIiwiaDRsIiwiaDVoIiwiaDVsIiwiaDZoIiwiaDZsIiwiaDdoIiwiaDdsIiwiYmxvY2siLCJzdGFydCIsImJ5dGVzIiwiaEJ5dGVzIiwiZmluYWxpemVkIiwiaGFzaGVkIiwibm90U3RyaW5nIiwiRXJyb3IiLCJVaW50OEFycmF5IiwiY29kZSIsImluZGV4IiwiY2hhckNvZGVBdCIsImFycmF5Iiwib0tleVBhZCIsImlLZXlQYWQiLCJiIiwiaW5uZXIiLCJsYXN0Qnl0ZUluZGV4IiwiaGFzaCIsImZpbmFsaXplIiwiaiIsInMwaCIsInMwbCIsInMxaCIsInMxbCIsImMxIiwiYzIiLCJjMyIsImM0IiwiYWJoIiwiYWJsIiwiZGFoIiwiZGFsIiwiY2RoIiwiY2RsIiwiYmNoIiwiYmNsIiwibWFqaCIsIm1hamwiLCJ0MWgiLCJ0MWwiLCJ0MmgiLCJ0MmwiLCJjaGgiLCJjaGwiLCJhaCIsImFsIiwiYmgiLCJibCIsImNoIiwiY2wiLCJkaCIsImRsIiwiZWgiLCJlbCIsImZoIiwiZmwiLCJnaCIsImdsIiwiaGgiLCJobCIsImhleCIsImRpZ2VzdCIsImFyciIsInB1c2giLCJhcnJheUJ1ZmZlciIsImRhdGFWaWV3IiwiRGF0YVZpZXciLCJzZXRVaW50MzIiLCJjbG9uZSIsImNvcHlUbyIsImF0dHJzIiwiaW5uZXJIYXNoIiwic2hhNTEyIiwic2hhMzg0Iiwic2hhNTEyXzI1NiIsInNoYTUxMl8yMjQiLCJobWFjIiwiY29tcHV0ZUNvbGxpc2lvbkludGVnZXIiLCJpbnB1dCIsImV4cGVjdGVkIiwiYXR0ZW1wdCIsInNsZWVwIiwic3Vic3RyaW5nIiwidGltZSIsIlByb21pc2UiLCJyIiwic2V0VGltZW91dCIsImNoYWxsZW5nZSIsIm9uUHJvZ3Jlc3MiLCJwYXlsb2FkIiwibm9uY2UiLCJkaWZmaWN1bHR5IiwiaGFyZG5lc3MiLCJzb2x1dGlvbnMiLCJoIiwicmVwZWF0Iiwic29sdXRpb24iLCJleHRlbmRTdGF0aWNzIiwiZCIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwicCIsImhhc093blByb3BlcnR5IiwiX19leHRlbmRzIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiX18iLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJzIiwibiIsImFyZ3VtZW50cyIsImFwcGx5IiwiX19yZXN0IiwiZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9fZGVjb3JhdGUiLCJkZWNvcmF0b3JzIiwidGFyZ2V0IiwiZGVzYyIsImMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJSZWZsZWN0IiwiZGVjb3JhdGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl9fcGFyYW0iLCJwYXJhbUluZGV4IiwiZGVjb3JhdG9yIiwiX19tZXRhZGF0YSIsIm1ldGFkYXRhS2V5IiwibWV0YWRhdGFWYWx1ZSIsIm1ldGFkYXRhIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwiZiIsInkiLCJfIiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInZlcmIiLCJTeW1ib2wiLCJpdGVyYXRvciIsInYiLCJvcCIsInBvcCIsIl9fY3JlYXRlQmluZGluZyIsIm8iLCJtIiwiayIsImsyIiwidW5kZWZpbmVkIiwiZW51bWVyYWJsZSIsImdldCIsIl9fZXhwb3J0U3RhciIsIl9fdmFsdWVzIiwiX19yZWFkIiwiYXIiLCJlcnJvciIsIl9fc3ByZWFkIiwiY29uY2F0IiwiX19zcHJlYWRBcnJheXMiLCJpbCIsImEiLCJqbCIsIl9fc3ByZWFkQXJyYXkiLCJ0byIsImZyb20iLCJwYWNrIiwibCIsInNsaWNlIiwiX19hd2FpdCIsIl9fYXN5bmNHZW5lcmF0b3IiLCJhc3luY0l0ZXJhdG9yIiwicSIsInJlc3VtZSIsImZ1bGZpbGwiLCJzZXR0bGUiLCJzaGlmdCIsIl9fYXN5bmNEZWxlZ2F0b3IiLCJfX2FzeW5jVmFsdWVzIiwiX19tYWtlVGVtcGxhdGVPYmplY3QiLCJjb29rZWQiLCJyYXciLCJfX3NldE1vZHVsZURlZmF1bHQiLCJfX2ltcG9ydFN0YXIiLCJtb2QiLCJfX2VzTW9kdWxlIiwiX19pbXBvcnREZWZhdWx0IiwiZGVmYXVsdCIsIl9fY2xhc3NQcml2YXRlRmllbGRHZXQiLCJyZWNlaXZlciIsInN0YXRlIiwia2luZCIsImhhcyIsIl9fY2xhc3NQcml2YXRlRmllbGRTZXQiLCJzZXQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiYW1kTyIsImRlZmluaXRpb24iLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJwcm9wIiwidG9TdHJpbmdUYWciLCJpbml0IiwiYWRkVmVyc2lvbiIsImFkZFN1Ym1pdExpc3RlbmVyIiwiYWRkSGVhcnRiZWF0RGlzcGF0Y2hlciIsInB1YmxpY0tleSIsIm9wdGlvbnMiLCJmZXRjaCIsIkJBU0VfVVJMIiwiaGVhZGVycyIsIkFjY2VwdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJob3N0bmFtZSIsImxvY2F0aW9uIiwianNvbiIsImJ0b2EiLCJfX0JPVFBPSVNPTl9TVUJNSVRfTElTVEVORVJfXyIsIl9fQk9UUE9JU09OX1ZFUlNJT05fXyIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiZm9ybUV2ZW50VGFyZ2V0IiwiZGF0YXNldCIsImJvdHBvaXNvblB1YmxpY0tleSIsInByZXZlbnREZWZhdWx0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiYm90cG9pc29uIiwiQm90cG9pc29uIiwiZm9ybUVsZW1lbnQiLCJpZCIsIm5hbWUiLCJnZXRFbGVtZW50QnlJZCIsIm5ld0lucHV0IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiYXBwZW5kT3JVcGRhdGVCb3Rwb2lzb25JbnB1dCIsIkhUTUxGb3JtRWxlbWVudCIsInN1Ym1pdCIsImNhdGNoIiwiY29uc29sZSIsIl9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18iXSwic291cmNlUm9vdCI6IiJ9
1
+ "use strict";var __botpoison=(()=>{var UF=Object.create;var pF=Object.defineProperty;var HF=Object.getOwnPropertyDescriptor;var KF=Object.getOwnPropertyNames;var MF=Object.getPrototypeOf,jF=Object.prototype.hasOwnProperty;var zF=(E,c)=>()=>(c||E((c={exports:{}}).exports,c),c.exports),JF=(E,c)=>{for(var d in c)pF(E,d,{get:c[d],enumerable:!0})},wF=(E,c,d,O)=>{if(c&&typeof c=="object"||typeof c=="function")for(let m of KF(c))!jF.call(E,m)&&m!==d&&pF(E,m,{get:()=>c[m],enumerable:!(O=HF(c,m))||O.enumerable});return E};var VF=(E,c,d)=>(d=E!=null?UF(MF(E)):{},wF(c||!E||!E.__esModule?pF(d,"default",{value:E,enumerable:!0}):d,E)),LF=E=>wF(pF({},"__esModule",{value:!0}),E);var gF=zF((QF,CF)=>{"use strict";(function(){"use strict";var E="input is invalid type",c="finalize already called",d=typeof window=="object",O=d?window:{};O.JS_SHA512_NO_WINDOW&&(d=!1);var m=!d&&typeof self=="object",R=!O.JS_SHA512_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;R?O=global:m&&(O=self);var rF=!O.JS_SHA512_NO_COMMON_JS&&typeof CF=="object"&&CF.exports,lF=typeof define=="function"&&define.amd,aF=!O.JS_SHA512_NO_ARRAY_BUFFER&&typeof ArrayBuffer!="undefined",F="0123456789abcdef".split(""),PF=[-2147483648,8388608,32768,128],eF=[24,16,8,0],nF=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],cF=["hex","array","digest","arrayBuffer"],p=[];(O.JS_SHA512_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(t){return Object.prototype.toString.call(t)==="[object Array]"}),aF&&(O.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(t){return typeof t=="object"&&t.buffer&&t.buffer.constructor===ArrayBuffer});var vF=function(t,e){return function(r){return new v(e,!0).update(r)[t]()}},AF=function(t){var e=vF("hex",t);e.create=function(){return new v(t)},e.update=function(B){return e.create().update(B)};for(var r=0;r<cF.length;++r){var f=cF[r];e[f]=vF(f,t)}return e},SF=function(t,e){return function(r,f){return new oF(r,e,!0).update(f)[t]()}},EF=function(t){var e=SF("hex",t);e.create=function(B){return new oF(B,t)},e.update=function(B,n){return e.create(B).update(n)};for(var r=0;r<cF.length;++r){var f=cF[r];e[f]=SF(f,t)}return e};function v(t,e){e?(p[0]=p[1]=p[2]=p[3]=p[4]=p[5]=p[6]=p[7]=p[8]=p[9]=p[10]=p[11]=p[12]=p[13]=p[14]=p[15]=p[16]=p[17]=p[18]=p[19]=p[20]=p[21]=p[22]=p[23]=p[24]=p[25]=p[26]=p[27]=p[28]=p[29]=p[30]=p[31]=p[32]=0,this.blocks=p):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t==384?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):t==256?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):t==224?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=t,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}v.prototype.update=function(t){if(this.finalized)throw new Error(c);var e,r=typeof t;if(r!=="string"){if(r==="object"){if(t===null)throw new Error(E);if(aF&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!aF||!ArrayBuffer.isView(t)))throw new Error(E)}else throw new Error(E);e=!0}for(var f,B=0,n,C=t.length,s=this.blocks;B<C;){if(this.hashed&&(this.hashed=!1,s[0]=this.block,s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=s[16]=s[17]=s[18]=s[19]=s[20]=s[21]=s[22]=s[23]=s[24]=s[25]=s[26]=s[27]=s[28]=s[29]=s[30]=s[31]=s[32]=0),e)for(n=this.start;B<C&&n<128;++B)s[n>>2]|=t[B]<<eF[n++&3];else for(n=this.start;B<C&&n<128;++B)f=t.charCodeAt(B),f<128?s[n>>2]|=f<<eF[n++&3]:f<2048?(s[n>>2]|=(192|f>>6)<<eF[n++&3],s[n>>2]|=(128|f&63)<<eF[n++&3]):f<55296||f>=57344?(s[n>>2]|=(224|f>>12)<<eF[n++&3],s[n>>2]|=(128|f>>6&63)<<eF[n++&3],s[n>>2]|=(128|f&63)<<eF[n++&3]):(f=65536+((f&1023)<<10|t.charCodeAt(++B)&1023),s[n>>2]|=(240|f>>18)<<eF[n++&3],s[n>>2]|=(128|f>>12&63)<<eF[n++&3],s[n>>2]|=(128|f>>6&63)<<eF[n++&3],s[n>>2]|=(128|f&63)<<eF[n++&3]);this.lastByteIndex=n,this.bytes+=n-this.start,n>=128?(this.block=s[32],this.start=n-128,this.hash(),this.hashed=!0):this.start=n}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},v.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[32]=this.block,t[e>>2]|=PF[e&3],this.block=t[32],e>=112&&(this.hashed||this.hash(),t[0]=this.block,t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=t[16]=t[17]=t[18]=t[19]=t[20]=t[21]=t[22]=t[23]=t[24]=t[25]=t[26]=t[27]=t[28]=t[29]=t[30]=t[31]=t[32]=0),t[30]=this.hBytes<<3|this.bytes>>>29,t[31]=this.bytes<<3,this.hash()}},v.prototype.hash=function(){var t=this.h0h,e=this.h0l,r=this.h1h,f=this.h1l,B=this.h2h,n=this.h2l,C=this.h3h,s=this.h3l,u=this.h4h,D=this.h4l,S=this.h5h,w=this.h5l,g=this.h6h,T=this.h6l,I=this.h7h,N=this.h7l,b=this.blocks,A,j,z,J,V,h,x,i,l,dF,DF,_F,yF,bF,OF,BF,uF,hF,xF,o,a,_,y,iF,sF;for(A=32;A<160;A+=2)o=b[A-30],a=b[A-29],j=(o>>>1|a<<31)^(o>>>8|a<<24)^o>>>7,z=(a>>>1|o<<31)^(a>>>8|o<<24)^(a>>>7|o<<25),o=b[A-4],a=b[A-3],J=(o>>>19|a<<13)^(a>>>29|o<<3)^o>>>6,V=(a>>>19|o<<13)^(o>>>29|a<<3)^(a>>>6|o<<26),o=b[A-32],a=b[A-31],_=b[A-14],y=b[A-13],h=(y&65535)+(a&65535)+(z&65535)+(V&65535),x=(y>>>16)+(a>>>16)+(z>>>16)+(V>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(j&65535)+(J&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(j>>>16)+(J>>>16)+(i>>>16),b[A]=l<<16|i&65535,b[A+1]=x<<16|h&65535;var L=t,W=e,P=r,U=f,H=B,K=n,k=C,$=s,Y=u,G=D,X=S,Z=w,q=g,Q=T,FF=I,tF=N;for(BF=P&H,uF=U&K,A=0;A<160;A+=8)j=(L>>>28|W<<4)^(W>>>2|L<<30)^(W>>>7|L<<25),z=(W>>>28|L<<4)^(L>>>2|W<<30)^(L>>>7|W<<25),J=(Y>>>14|G<<18)^(Y>>>18|G<<14)^(G>>>9|Y<<23),V=(G>>>14|Y<<18)^(G>>>18|Y<<14)^(Y>>>9|G<<23),dF=L&P,DF=W&U,hF=dF^L&H^BF,xF=DF^W&K^uF,iF=Y&X^~Y&q,sF=G&Z^~G&Q,o=b[A],a=b[A+1],_=nF[A],y=nF[A+1],h=(y&65535)+(a&65535)+(sF&65535)+(V&65535)+(tF&65535),x=(y>>>16)+(a>>>16)+(sF>>>16)+(V>>>16)+(tF>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(iF&65535)+(J&65535)+(FF&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(iF>>>16)+(J>>>16)+(FF>>>16)+(i>>>16),o=l<<16|i&65535,a=x<<16|h&65535,h=(xF&65535)+(z&65535),x=(xF>>>16)+(z>>>16)+(h>>>16),i=(hF&65535)+(j&65535)+(x>>>16),l=(hF>>>16)+(j>>>16)+(i>>>16),_=l<<16|i&65535,y=x<<16|h&65535,h=($&65535)+(a&65535),x=($>>>16)+(a>>>16)+(h>>>16),i=(k&65535)+(o&65535)+(x>>>16),l=(k>>>16)+(o>>>16)+(i>>>16),FF=l<<16|i&65535,tF=x<<16|h&65535,h=(y&65535)+(a&65535),x=(y>>>16)+(a>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(i>>>16),k=l<<16|i&65535,$=x<<16|h&65535,j=(k>>>28|$<<4)^($>>>2|k<<30)^($>>>7|k<<25),z=($>>>28|k<<4)^(k>>>2|$<<30)^(k>>>7|$<<25),J=(FF>>>14|tF<<18)^(FF>>>18|tF<<14)^(tF>>>9|FF<<23),V=(tF>>>14|FF<<18)^(tF>>>18|FF<<14)^(FF>>>9|tF<<23),_F=k&L,yF=$&W,hF=_F^k&P^dF,xF=yF^$&U^DF,iF=FF&Y^~FF&X,sF=tF&G^~tF&Z,o=b[A+2],a=b[A+3],_=nF[A+2],y=nF[A+3],h=(y&65535)+(a&65535)+(sF&65535)+(V&65535)+(Q&65535),x=(y>>>16)+(a>>>16)+(sF>>>16)+(V>>>16)+(Q>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(iF&65535)+(J&65535)+(q&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(iF>>>16)+(J>>>16)+(q>>>16)+(i>>>16),o=l<<16|i&65535,a=x<<16|h&65535,h=(xF&65535)+(z&65535),x=(xF>>>16)+(z>>>16)+(h>>>16),i=(hF&65535)+(j&65535)+(x>>>16),l=(hF>>>16)+(j>>>16)+(i>>>16),_=l<<16|i&65535,y=x<<16|h&65535,h=(K&65535)+(a&65535),x=(K>>>16)+(a>>>16)+(h>>>16),i=(H&65535)+(o&65535)+(x>>>16),l=(H>>>16)+(o>>>16)+(i>>>16),q=l<<16|i&65535,Q=x<<16|h&65535,h=(y&65535)+(a&65535),x=(y>>>16)+(a>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(i>>>16),H=l<<16|i&65535,K=x<<16|h&65535,j=(H>>>28|K<<4)^(K>>>2|H<<30)^(K>>>7|H<<25),z=(K>>>28|H<<4)^(H>>>2|K<<30)^(H>>>7|K<<25),J=(q>>>14|Q<<18)^(q>>>18|Q<<14)^(Q>>>9|q<<23),V=(Q>>>14|q<<18)^(Q>>>18|q<<14)^(q>>>9|Q<<23),bF=H&k,OF=K&$,hF=bF^H&L^_F,xF=OF^K&W^yF,iF=q&FF^~q&Y,sF=Q&tF^~Q&G,o=b[A+4],a=b[A+5],_=nF[A+4],y=nF[A+5],h=(y&65535)+(a&65535)+(sF&65535)+(V&65535)+(Z&65535),x=(y>>>16)+(a>>>16)+(sF>>>16)+(V>>>16)+(Z>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(iF&65535)+(J&65535)+(X&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(iF>>>16)+(J>>>16)+(X>>>16)+(i>>>16),o=l<<16|i&65535,a=x<<16|h&65535,h=(xF&65535)+(z&65535),x=(xF>>>16)+(z>>>16)+(h>>>16),i=(hF&65535)+(j&65535)+(x>>>16),l=(hF>>>16)+(j>>>16)+(i>>>16),_=l<<16|i&65535,y=x<<16|h&65535,h=(U&65535)+(a&65535),x=(U>>>16)+(a>>>16)+(h>>>16),i=(P&65535)+(o&65535)+(x>>>16),l=(P>>>16)+(o>>>16)+(i>>>16),X=l<<16|i&65535,Z=x<<16|h&65535,h=(y&65535)+(a&65535),x=(y>>>16)+(a>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(i>>>16),P=l<<16|i&65535,U=x<<16|h&65535,j=(P>>>28|U<<4)^(U>>>2|P<<30)^(U>>>7|P<<25),z=(U>>>28|P<<4)^(P>>>2|U<<30)^(P>>>7|U<<25),J=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),V=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),BF=P&H,uF=U&K,hF=BF^P&k^bF,xF=uF^U&$^OF,iF=X&q^~X&FF,sF=Z&Q^~Z&tF,o=b[A+6],a=b[A+7],_=nF[A+6],y=nF[A+7],h=(y&65535)+(a&65535)+(sF&65535)+(V&65535)+(G&65535),x=(y>>>16)+(a>>>16)+(sF>>>16)+(V>>>16)+(G>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(iF&65535)+(J&65535)+(Y&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(iF>>>16)+(J>>>16)+(Y>>>16)+(i>>>16),o=l<<16|i&65535,a=x<<16|h&65535,h=(xF&65535)+(z&65535),x=(xF>>>16)+(z>>>16)+(h>>>16),i=(hF&65535)+(j&65535)+(x>>>16),l=(hF>>>16)+(j>>>16)+(i>>>16),_=l<<16|i&65535,y=x<<16|h&65535,h=(W&65535)+(a&65535),x=(W>>>16)+(a>>>16)+(h>>>16),i=(L&65535)+(o&65535)+(x>>>16),l=(L>>>16)+(o>>>16)+(i>>>16),Y=l<<16|i&65535,G=x<<16|h&65535,h=(y&65535)+(a&65535),x=(y>>>16)+(a>>>16)+(h>>>16),i=(_&65535)+(o&65535)+(x>>>16),l=(_>>>16)+(o>>>16)+(i>>>16),L=l<<16|i&65535,W=x<<16|h&65535;h=(e&65535)+(W&65535),x=(e>>>16)+(W>>>16)+(h>>>16),i=(t&65535)+(L&65535)+(x>>>16),l=(t>>>16)+(L>>>16)+(i>>>16),this.h0h=l<<16|i&65535,this.h0l=x<<16|h&65535,h=(f&65535)+(U&65535),x=(f>>>16)+(U>>>16)+(h>>>16),i=(r&65535)+(P&65535)+(x>>>16),l=(r>>>16)+(P>>>16)+(i>>>16),this.h1h=l<<16|i&65535,this.h1l=x<<16|h&65535,h=(n&65535)+(K&65535),x=(n>>>16)+(K>>>16)+(h>>>16),i=(B&65535)+(H&65535)+(x>>>16),l=(B>>>16)+(H>>>16)+(i>>>16),this.h2h=l<<16|i&65535,this.h2l=x<<16|h&65535,h=(s&65535)+($&65535),x=(s>>>16)+($>>>16)+(h>>>16),i=(C&65535)+(k&65535)+(x>>>16),l=(C>>>16)+(k>>>16)+(i>>>16),this.h3h=l<<16|i&65535,this.h3l=x<<16|h&65535,h=(D&65535)+(G&65535),x=(D>>>16)+(G>>>16)+(h>>>16),i=(u&65535)+(Y&65535)+(x>>>16),l=(u>>>16)+(Y>>>16)+(i>>>16),this.h4h=l<<16|i&65535,this.h4l=x<<16|h&65535,h=(w&65535)+(Z&65535),x=(w>>>16)+(Z>>>16)+(h>>>16),i=(S&65535)+(X&65535)+(x>>>16),l=(S>>>16)+(X>>>16)+(i>>>16),this.h5h=l<<16|i&65535,this.h5l=x<<16|h&65535,h=(T&65535)+(Q&65535),x=(T>>>16)+(Q>>>16)+(h>>>16),i=(g&65535)+(q&65535)+(x>>>16),l=(g>>>16)+(q>>>16)+(i>>>16),this.h6h=l<<16|i&65535,this.h6l=x<<16|h&65535,h=(N&65535)+(tF&65535),x=(N>>>16)+(tF>>>16)+(h>>>16),i=(I&65535)+(FF&65535)+(x>>>16),l=(I>>>16)+(FF>>>16)+(i>>>16),this.h7h=l<<16|i&65535,this.h7l=x<<16|h&65535},v.prototype.hex=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,f=this.h1l,B=this.h2h,n=this.h2l,C=this.h3h,s=this.h3l,u=this.h4h,D=this.h4l,S=this.h5h,w=this.h5l,g=this.h6h,T=this.h6l,I=this.h7h,N=this.h7l,b=this.bits,A=F[t>>28&15]+F[t>>24&15]+F[t>>20&15]+F[t>>16&15]+F[t>>12&15]+F[t>>8&15]+F[t>>4&15]+F[t&15]+F[e>>28&15]+F[e>>24&15]+F[e>>20&15]+F[e>>16&15]+F[e>>12&15]+F[e>>8&15]+F[e>>4&15]+F[e&15]+F[r>>28&15]+F[r>>24&15]+F[r>>20&15]+F[r>>16&15]+F[r>>12&15]+F[r>>8&15]+F[r>>4&15]+F[r&15]+F[f>>28&15]+F[f>>24&15]+F[f>>20&15]+F[f>>16&15]+F[f>>12&15]+F[f>>8&15]+F[f>>4&15]+F[f&15]+F[B>>28&15]+F[B>>24&15]+F[B>>20&15]+F[B>>16&15]+F[B>>12&15]+F[B>>8&15]+F[B>>4&15]+F[B&15]+F[n>>28&15]+F[n>>24&15]+F[n>>20&15]+F[n>>16&15]+F[n>>12&15]+F[n>>8&15]+F[n>>4&15]+F[n&15]+F[C>>28&15]+F[C>>24&15]+F[C>>20&15]+F[C>>16&15]+F[C>>12&15]+F[C>>8&15]+F[C>>4&15]+F[C&15];return b>=256&&(A+=F[s>>28&15]+F[s>>24&15]+F[s>>20&15]+F[s>>16&15]+F[s>>12&15]+F[s>>8&15]+F[s>>4&15]+F[s&15]),b>=384&&(A+=F[u>>28&15]+F[u>>24&15]+F[u>>20&15]+F[u>>16&15]+F[u>>12&15]+F[u>>8&15]+F[u>>4&15]+F[u&15]+F[D>>28&15]+F[D>>24&15]+F[D>>20&15]+F[D>>16&15]+F[D>>12&15]+F[D>>8&15]+F[D>>4&15]+F[D&15]+F[S>>28&15]+F[S>>24&15]+F[S>>20&15]+F[S>>16&15]+F[S>>12&15]+F[S>>8&15]+F[S>>4&15]+F[S&15]+F[w>>28&15]+F[w>>24&15]+F[w>>20&15]+F[w>>16&15]+F[w>>12&15]+F[w>>8&15]+F[w>>4&15]+F[w&15]),b==512&&(A+=F[g>>28&15]+F[g>>24&15]+F[g>>20&15]+F[g>>16&15]+F[g>>12&15]+F[g>>8&15]+F[g>>4&15]+F[g&15]+F[T>>28&15]+F[T>>24&15]+F[T>>20&15]+F[T>>16&15]+F[T>>12&15]+F[T>>8&15]+F[T>>4&15]+F[T&15]+F[I>>28&15]+F[I>>24&15]+F[I>>20&15]+F[I>>16&15]+F[I>>12&15]+F[I>>8&15]+F[I>>4&15]+F[I&15]+F[N>>28&15]+F[N>>24&15]+F[N>>20&15]+F[N>>16&15]+F[N>>12&15]+F[N>>8&15]+F[N>>4&15]+F[N&15]),A},v.prototype.toString=v.prototype.hex,v.prototype.digest=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,f=this.h1l,B=this.h2h,n=this.h2l,C=this.h3h,s=this.h3l,u=this.h4h,D=this.h4l,S=this.h5h,w=this.h5l,g=this.h6h,T=this.h6l,I=this.h7h,N=this.h7l,b=this.bits,A=[t>>24&255,t>>16&255,t>>8&255,t&255,e>>24&255,e>>16&255,e>>8&255,e&255,r>>24&255,r>>16&255,r>>8&255,r&255,f>>24&255,f>>16&255,f>>8&255,f&255,B>>24&255,B>>16&255,B>>8&255,B&255,n>>24&255,n>>16&255,n>>8&255,n&255,C>>24&255,C>>16&255,C>>8&255,C&255];return b>=256&&A.push(s>>24&255,s>>16&255,s>>8&255,s&255),b>=384&&A.push(u>>24&255,u>>16&255,u>>8&255,u&255,D>>24&255,D>>16&255,D>>8&255,D&255,S>>24&255,S>>16&255,S>>8&255,S&255,w>>24&255,w>>16&255,w>>8&255,w&255),b==512&&A.push(g>>24&255,g>>16&255,g>>8&255,g&255,T>>24&255,T>>16&255,T>>8&255,T&255,I>>24&255,I>>16&255,I>>8&255,I&255,N>>24&255,N>>16&255,N>>8&255,N&255),A},v.prototype.array=v.prototype.digest,v.prototype.arrayBuffer=function(){this.finalize();var t=this.bits,e=new ArrayBuffer(t/8),r=new DataView(e);return r.setUint32(0,this.h0h),r.setUint32(4,this.h0l),r.setUint32(8,this.h1h),r.setUint32(12,this.h1l),r.setUint32(16,this.h2h),r.setUint32(20,this.h2l),r.setUint32(24,this.h3h),t>=256&&r.setUint32(28,this.h3l),t>=384&&(r.setUint32(32,this.h4h),r.setUint32(36,this.h4l),r.setUint32(40,this.h5h),r.setUint32(44,this.h5l)),t==512&&(r.setUint32(48,this.h6h),r.setUint32(52,this.h6l),r.setUint32(56,this.h7h),r.setUint32(60,this.h7l)),e},v.prototype.clone=function(){var t=new v(this.bits,!1);return this.copyTo(t),t},v.prototype.copyTo=function(t){var e=0,r=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(e=0;e<r.length;++e)t[r[e]]=this[r[e]];for(e=0;e<this.blocks.length;++e)t.blocks[e]=this.blocks[e]};function oF(t,e,r){var f,B=typeof t;if(B!=="string"){if(B==="object"){if(t===null)throw new Error(E);if(aF&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!aF||!ArrayBuffer.isView(t)))throw new Error(E)}else throw new Error(E);f=!0}var n=t.length;if(!f){for(var C=[],n=t.length,s=0,u,D=0;D<n;++D)u=t.charCodeAt(D),u<128?C[s++]=u:u<2048?(C[s++]=192|u>>6,C[s++]=128|u&63):u<55296||u>=57344?(C[s++]=224|u>>12,C[s++]=128|u>>6&63,C[s++]=128|u&63):(u=65536+((u&1023)<<10|t.charCodeAt(++D)&1023),C[s++]=240|u>>18,C[s++]=128|u>>12&63,C[s++]=128|u>>6&63,C[s++]=128|u&63);t=C}t.length>128&&(t=new v(e,!0).update(t).array());for(var S=[],w=[],D=0;D<128;++D){var g=t[D]||0;S[D]=92^g,w[D]=54^g}v.call(this,e,r),this.update(w),this.oKeyPad=S,this.inner=!0,this.sharedMemory=r}oF.prototype=new v,oF.prototype.finalize=function(){if(v.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();v.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(t),v.prototype.finalize.call(this)}},oF.prototype.clone=function(){var t=new oF([],this.bits,!1);this.copyTo(t),t.inner=this.inner;for(var e=0;e<this.oKeyPad.length;++e)t.oKeyPad[e]=this.oKeyPad[e];return t};var M=AF(512);M.sha512=M,M.sha384=AF(384),M.sha512_256=AF(256),M.sha512_224=AF(224),M.sha512.hmac=EF(512),M.sha384.hmac=EF(384),M.sha512_256.hmac=EF(256),M.sha512_224.hmac=EF(224),rF?CF.exports=M:(O.sha512=M.sha512,O.sha384=M.sha384,O.sha512_256=M.sha512_256,O.sha512_224=M.sha512_224,lF&&define(function(){return M}))})()});var ZF={};JF(ZF,{default:()=>fF});var mF=VF(gF()),WF=async({input:E,expected:c})=>{let d=0;for(;;){let O=(0,mF.sha512)(`${E}:${d}`);if(d%4e4===0&&await TF(0),O.substring(0,c.length)===c)return d.toString();d++}},TF=E=>new Promise(c=>setTimeout(c,E)),kF=async({challenge:E,onProgress:c})=>{let{nonce:d,difficulty:O,hardness:m}=E.payload,R=[];c==null||c(0);for(let rF=0;rF<m;rF++){let lF=await WF({input:`${d}:${rF}`,expected:"0".repeat(O)});R.push(lF),c==null||c(R.length/m),await TF(0)}return R},IF=kF;var NF="https://api.botpoison.com",RF=()=>{YF(),GF(),XF()},fF=class{constructor({publicKey:c}){this.publicKey=c}static init(){RF()}async challenge(c){let{onProgress:d}=c||{},m=await(await fetch(`${NF}/challenge`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({publicKey:this.publicKey,hostname:location.hostname,version:"0.1.32"})})).json(),R=await IF({challenge:m,onProgress:d});return{solution:btoa(JSON.stringify({challenge:m,solutions:R}))}}},$F=({formElement:E,id:c,name:d,value:O})=>{let m=document.getElementById(c);if(!m){let R=document.createElement("input");R.setAttribute("type","hidden"),R.setAttribute("id",c),R.setAttribute("name",d),E.appendChild(R),m=R}m.setAttribute("value",O)},YF=()=>{typeof document!="undefined"&&(window.__BOTPOISON_VERSION__="0.1.32")},GF=()=>{typeof document!="undefined"&&(window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_SUBMIT_LISTENER__=!0,document.addEventListener("submit",E=>{try{let c=E.target;if(c){let d=c,O=d.dataset.botpoisonPublicKey;if(O){E.preventDefault(),d.dispatchEvent(new CustomEvent("botpoison-challenge-start"));let m=new fF({publicKey:O}),R="_botpoison",rF=R;m.challenge().then(({solution:lF})=>{d.dispatchEvent(new CustomEvent("botpoison-challenge-success")),$F({formElement:d,id:R,name:rF,value:lF}),HTMLFormElement.prototype.submit.call(d)}).catch(lF=>{console.error(lF),d.dispatchEvent(new CustomEvent("botpoison-challenge-error"))})}}}catch(c){console.error(c)}return!0})))},XF=()=>{if(typeof document!="undefined"&&!window.__BOTPOISON_HEARTBEAT_DISPATCHER__){if(window.__BOTPOISON_HEARTBEAT_DISPATCHER__=!0,!!1)return;let c=()=>{fetch(`${NF}/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({hostname:location.hostname})})};c(),setInterval(()=>{c()},300*1e3)}};RF();return LF(ZF);})();
2
+ /*! Bundled license information:
3
+
4
+ js-sha512/src/sha512.js:
5
+ (*
6
+ * [js-sha512]{@link https://github.com/emn178/js-sha512}
7
+ *
8
+ * @version 0.8.0
9
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
10
+ * @copyright Chen, Yi-Cyuan 2014-2018
11
+ * @license MIT
12
+ *)
13
+ */
14
+ (function (root, factory) {
15
+ if (typeof exports === "object" && typeof module !== "undefined") {
16
+ module.exports = factory();
17
+ } else if (typeof define === "function" && define.amd) {
18
+ define([], factory);
19
+ } else {
20
+ root.Botpoison = factory();
21
+ }
22
+ })(typeof self !== "undefined" ? self : this, function () {
23
+ return __botpoison.default;
24
+ });
package/dist/index.mjs ADDED
@@ -0,0 +1,188 @@
1
+ // src/computeSolutions.ts
2
+ import { sha512 } from "js-sha512";
3
+ var computeCollisionInteger = async ({
4
+ input,
5
+ expected
6
+ }) => {
7
+ let attempt = 0;
8
+ while (true) {
9
+ const hash = sha512(`${input}:${attempt}`);
10
+ if (attempt % 4e4 === 0) {
11
+ await sleep(0);
12
+ }
13
+ if (hash.substring(0, expected.length) === expected) {
14
+ return attempt.toString();
15
+ }
16
+ attempt++;
17
+ }
18
+ };
19
+ var sleep = (time) => new Promise((r) => setTimeout(r, time));
20
+ var computeSolutions = async ({
21
+ challenge,
22
+ onProgress
23
+ }) => {
24
+ const { nonce, difficulty, hardness } = challenge.payload;
25
+ const solutions = [];
26
+ onProgress == null ? void 0 : onProgress(0);
27
+ for (let h = 0; h < hardness; h++) {
28
+ const solution = await computeCollisionInteger({
29
+ input: `${nonce}:${h}`,
30
+ expected: "0".repeat(difficulty)
31
+ });
32
+ solutions.push(solution);
33
+ onProgress == null ? void 0 : onProgress(solutions.length / hardness);
34
+ await sleep(0);
35
+ }
36
+ return solutions;
37
+ };
38
+ var computeSolutions_default = computeSolutions;
39
+
40
+ // src/index.ts
41
+ var BASE_URL = "https://api.botpoison.com";
42
+ var init = () => {
43
+ addVersion();
44
+ addSubmitListener();
45
+ addHeartbeatDispatcher();
46
+ };
47
+ var Botpoison = class {
48
+ constructor({ publicKey }) {
49
+ this.publicKey = publicKey;
50
+ }
51
+ static init() {
52
+ init();
53
+ }
54
+ async challenge(options) {
55
+ const { onProgress } = options || {};
56
+ const response = await fetch(`${BASE_URL}/challenge`, {
57
+ method: "POST",
58
+ headers: {
59
+ "Content-Type": "application/json",
60
+ Accept: "application/json"
61
+ },
62
+ body: JSON.stringify({
63
+ publicKey: this.publicKey,
64
+ hostname: location.hostname,
65
+ // Copies of this bundle stay embedded in sites for years, so the API
66
+ // has to start collecting this long before it can act on it.
67
+ version: "0.1.32"
68
+ })
69
+ });
70
+ const challenge = await response.json();
71
+ const solutions = await computeSolutions_default({
72
+ challenge,
73
+ onProgress
74
+ });
75
+ const serialized = btoa(
76
+ JSON.stringify({
77
+ challenge,
78
+ solutions
79
+ })
80
+ );
81
+ return {
82
+ solution: serialized
83
+ };
84
+ }
85
+ };
86
+ var appendOrUpdateBotpoisonInput = ({
87
+ formElement,
88
+ id,
89
+ name,
90
+ value
91
+ }) => {
92
+ let input = document.getElementById(id);
93
+ if (!input) {
94
+ const newInput = document.createElement("input");
95
+ newInput.setAttribute("type", "hidden");
96
+ newInput.setAttribute("id", id);
97
+ newInput.setAttribute("name", name);
98
+ formElement.appendChild(newInput);
99
+ input = newInput;
100
+ }
101
+ input.setAttribute("value", value);
102
+ };
103
+ var addVersion = () => {
104
+ if (typeof document !== "undefined") {
105
+ window.__BOTPOISON_VERSION__ = "0.1.32";
106
+ }
107
+ };
108
+ var addSubmitListener = () => {
109
+ if (typeof document !== "undefined") {
110
+ if (!window.__BOTPOISON_SUBMIT_LISTENER__) {
111
+ window.__BOTPOISON_SUBMIT_LISTENER__ = true;
112
+ document.addEventListener("submit", (event) => {
113
+ try {
114
+ const formEventTarget = event.target;
115
+ if (formEventTarget) {
116
+ const formElement = formEventTarget;
117
+ const publicKey = formElement.dataset.botpoisonPublicKey;
118
+ if (publicKey) {
119
+ event.preventDefault();
120
+ formElement.dispatchEvent(
121
+ new CustomEvent("botpoison-challenge-start")
122
+ );
123
+ const botpoison = new Botpoison({
124
+ publicKey
125
+ });
126
+ const id = `_botpoison`;
127
+ const name = id;
128
+ botpoison.challenge().then(({ solution }) => {
129
+ formElement.dispatchEvent(
130
+ new CustomEvent("botpoison-challenge-success")
131
+ );
132
+ appendOrUpdateBotpoisonInput({
133
+ formElement,
134
+ id,
135
+ name,
136
+ value: solution
137
+ });
138
+ HTMLFormElement.prototype.submit.call(formElement);
139
+ }).catch((error) => {
140
+ console.error(error);
141
+ formElement.dispatchEvent(
142
+ new CustomEvent("botpoison-challenge-error")
143
+ );
144
+ });
145
+ }
146
+ }
147
+ } catch (error) {
148
+ console.error(error);
149
+ }
150
+ return true;
151
+ });
152
+ }
153
+ }
154
+ };
155
+ var addHeartbeatDispatcher = () => {
156
+ if (typeof document !== "undefined") {
157
+ if (!window.__BOTPOISON_HEARTBEAT_DISPATCHER__) {
158
+ window.__BOTPOISON_HEARTBEAT_DISPATCHER__ = true;
159
+ const enabled = false;
160
+ if (!enabled) {
161
+ return;
162
+ }
163
+ const dispatch = () => {
164
+ void fetch(`${BASE_URL}/heartbeat`, {
165
+ method: "POST",
166
+ headers: {
167
+ "Content-Type": "application/json",
168
+ Accept: "application/json"
169
+ },
170
+ body: JSON.stringify({
171
+ hostname: location.hostname
172
+ })
173
+ });
174
+ };
175
+ dispatch();
176
+ setInterval(
177
+ () => {
178
+ dispatch();
179
+ },
180
+ 5 * 60 * 1e3
181
+ );
182
+ }
183
+ }
184
+ };
185
+ init();
186
+ export {
187
+ Botpoison as default
188
+ };
package/package.json CHANGED
@@ -1,27 +1,40 @@
1
1
  {
2
2
  "name": "@botpoison/browser",
3
3
  "private": false,
4
- "version": "0.1.29",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
4
+ "version": "0.1.32",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "unpkg": "./dist/index.js",
9
+ "jsdelivr": "./dist/index.js",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.mjs",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./package.json": "./package.json"
17
+ },
7
18
  "files": [
8
19
  "dist"
9
20
  ],
10
21
  "engines": {
11
- "node": ">=10"
12
- },
13
- "scripts": {
14
- "build": "bash scripts/build.sh",
15
- "typecheck": "bash scripts/typecheck.sh"
22
+ "node": ">=18"
16
23
  },
17
24
  "dependencies": {
18
25
  "js-sha512": "^0.8.0"
19
26
  },
20
27
  "devDependencies": {
21
- "ts-loader": "^9.2.6",
28
+ "@types/node": "^22.20.1",
22
29
  "tslib": "^2.3.1",
23
- "typescript": "^4.4.4",
24
- "webpack": "^5.58.2",
25
- "webpack-cli": "^4.9.0"
30
+ "tsup": "^8.5.1",
31
+ "typescript": "^6.0.3",
32
+ "vite": "^6.4.3",
33
+ "vitest": "^4.1.10"
34
+ },
35
+ "scripts": {
36
+ "build": "bash scripts/build.sh",
37
+ "test": "bash scripts/test.sh",
38
+ "typecheck": "bash scripts/typecheck.sh"
26
39
  }
27
- }
40
+ }
@@ -1,6 +0,0 @@
1
- import { ProgressCallback, SignedChallenge } from "./index";
2
- declare const computeSolutions: ({ challenge, onProgress, }: {
3
- challenge: SignedChallenge;
4
- onProgress?: ProgressCallback | undefined;
5
- }) => Promise<string[]>;
6
- export default computeSolutions;
@@ -1,23 +0,0 @@
1
- /*
2
- * [js-sha512]{@link https://github.com/emn178/js-sha512}
3
- *
4
- * @version 0.8.0
5
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
6
- * @copyright Chen, Yi-Cyuan 2014-2018
7
- * @license MIT
8
- */
9
-
10
- /*! *****************************************************************************
11
- Copyright (c) Microsoft Corporation.
12
-
13
- Permission to use, copy, modify, and/or distribute this software for any
14
- purpose with or without fee is hereby granted.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
17
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
19
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
20
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
21
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22
- PERFORMANCE OF THIS SOFTWARE.
23
- ***************************************************************************** */