@prisma/studio-core 0.0.0-dev.202505090021 → 0.0.0-dev.202505090122
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/CPIOZS5X-ICU6WNOA.js +2 -0
- package/dist/OKF6E45R-3IGVLQES.js +2 -0
- package/dist/{adapter-CH4qnR6R.d.cts → adapter-Dzg3tDL6.d.cts} +6 -6
- package/dist/{adapter-CH4qnR6R.d.ts → adapter-Dzg3tDL6.d.ts} +6 -6
- package/dist/chunk-D7F6BRP4.js +2 -0
- package/dist/chunk-IAKOOX7B.js +1 -0
- package/dist/chunk-OGMDOPWW.js +2 -0
- package/dist/chunk-RFCV76TR.js +2 -0
- package/dist/chunk-SOR7YZQY.js +1333 -0
- package/dist/{chunk-BMVJYUJW.js → chunk-XBQ4XZ2M.js} +1 -0
- package/dist/data/accelerate/index.cjs +1 -0
- package/dist/data/accelerate/index.d.cts +2 -2
- package/dist/data/accelerate/index.d.ts +2 -2
- package/dist/data/accelerate/index.js +2 -1
- package/dist/data/bff/index.cjs +1 -0
- package/dist/data/bff/index.d.cts +2 -2
- package/dist/data/bff/index.d.ts +2 -2
- package/dist/data/bff/index.js +2 -1
- package/dist/data/index.cjs +1 -0
- package/dist/data/index.d.cts +2 -2
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.js +2 -1
- package/dist/data/pglite/index.cjs +2 -1
- package/dist/data/pglite/index.d.cts +2 -2
- package/dist/data/pglite/index.d.ts +2 -2
- package/dist/data/pglite/index.js +2 -1
- package/dist/data/postgres-core/index.cjs +2 -1
- package/dist/data/postgres-core/index.d.cts +2 -2
- package/dist/data/postgres-core/index.d.ts +2 -2
- package/dist/data/postgres-core/index.js +2 -1
- package/dist/{index-DAubYhEp.d.cts → index-BKNnsdY7.d.cts} +1 -1
- package/dist/{index-BTblIzxR.d.ts → index-BUtuWj4M.d.ts} +1 -1
- package/dist/ui/index.cjs +121 -120
- package/dist/ui/index.d.cts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +7 -6
- package/package.json +1 -1
- package/dist/CPIOZS5X-V4BHP4CI.js +0 -1
- package/dist/OKF6E45R-XYOIK2NY.js +0 -1
- package/dist/chunk-2ZJZX5I7.js +0 -0
- package/dist/chunk-555OIWZX.js +0 -1
- package/dist/chunk-5MNS4IJC.js +0 -1332
- package/dist/chunk-N2MLAUEV.js +0 -1
- package/dist/chunk-P72NBTYE.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var g={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return De(this.context.count)},getNextContextId(){return De(this.context.count++)}};function De(e){let t=String(e),n=t.length-1;return g.context.id+(n?String.fromCharCode(96+n):"")+t}function U(e){g.context=e}function Rt(){return{...g.context,id:g.getNextContextId(),count:0}}var Je=!1,Vt=(e,t)=>e===t,he=Symbol("solid-proxy"),et=typeof Proxy=="function",tt=Symbol("solid-track"),ye={equals:Vt},je=null,nt=ut,N=1,te=2,rt={owned:null,cleanups:null,context:null,owner:null},Oe={},y=null,f=null,W=null,Q=null,p=null,E=null,C=null,pe=0;function F(e,t){let n=p,r=y,s=e.length===0,i=t===void 0?r:t,o=s?rt:{owned:null,cleanups:null,context:i?i.context:null,owner:i},l=s?e:()=>e(()=>O(()=>D(o)));y=o,p=null;try{return T(l,!0)}finally{p=n,y=r}}function V(e,t){t=t?Object.assign({},ye,t):ye;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=s=>(typeof s=="function"&&(f&&f.running&&f.sources.has(n)?s=s(n.tValue):s=s(n.value)),ft(n,s));return[at.bind(n),r]}function Ue(e,t,n){let r=ve(e,t,!0,N);W&&f&&f.running?E.push(r):Z(r)}function K(e,t,n){let r=ve(e,t,!1,N);W&&f&&f.running?E.push(r):Z(r)}function st(e,t,n){nt=Ut;let r=ve(e,t,!1,N),s=ne&&ot(ne);s&&(r.suspense=s),(!n||!n.render)&&(r.user=!0),C?C.push(r):Z(r)}function x(e,t,n){n=n?Object.assign({},ye,n):ye;let r=ve(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,W&&f&&f.running?(r.tState=N,E.push(r)):Z(r),at.bind(r)}function Lt(e){return e&&typeof e=="object"&&"then"in e}function Mt(e,t,n){let r,s,i;r=!0,s=e,i={};let o=null,l=Oe,a=null,c=!1,d=!1,u="initialValue"in i,h=typeof r=="function"&&x(r),w=new Set,[v,k]=(i.storage||V)(i.initialValue),[L,_]=V(void 0),[I,P]=V(void 0,{equals:!1}),[R,$]=V(u?"ready":"unresolved");g.context&&(a=g.getNextContextId(),i.ssrLoadFrom==="initial"?l=i.initialValue:g.load&&g.has(a)&&(l=g.load(a)));function B(b,S,A,z){return o===b&&(o=null,z!==void 0&&(u=!0),(b===l||S===l)&&i.onHydrated&&queueMicrotask(()=>i.onHydrated(z,{value:S})),l=Oe,f&&b&&c?(f.promises.delete(b),c=!1,T(()=>{f.running=!0,Be(S,A)},!1)):Be(S,A)),S}function Be(b,S){T(()=>{S===void 0&&k(()=>b),$(S!==void 0?"errored":u?"ready":"unresolved"),_(S);for(let A of w.keys())A.decrement();w.clear()},!1)}function Ae(){let b=ne&&ot(ne),S=v(),A=L();if(A!==void 0&&!o)throw A;return p&&!p.user&&b&&Ue(()=>{I(),o&&(b.resolved&&f&&c?f.promises.add(o):w.has(b)||(b.increment(),w.add(b)))}),S}function Ee(b=!0){if(b!==!1&&d)return;d=!1;let S=h?h():r;if(c=f&&f.running,S==null||S===!1){B(o,O(v));return}f&&o&&f.promises.delete(o);let A=l!==Oe?l:O(()=>s(S,{value:v(),refetching:b}));return Lt(A)?(o=A,"value"in A?(A.status==="success"?B(o,A.value,void 0,S):B(o,void 0,Ce(A.value),S),A):(d=!0,queueMicrotask(()=>d=!1),T(()=>{$(u?"refreshing":"pending"),P()},!1),A.then(z=>B(A,z,void 0,S),z=>B(A,void 0,Ce(z),S)))):(B(o,A,void 0,S),A)}return Object.defineProperties(Ae,{state:{get:()=>R()},error:{get:()=>L()},loading:{get(){let b=R();return b==="pending"||b==="refreshing"}},latest:{get(){if(!u)return Ae();let b=L();if(b&&!o)throw b;return v()}}}),h?Ue(()=>Ee(!1)):Ee(!1),[Ae,{refetch:Ee,mutate:k}]}function tr(e){return T(e,!1)}function O(e){if(!Q&&p===null)return e();let t=p;p=null;try{return Q?Q.untrack(e):e()}finally{p=t}}function nr(e,t,n){let r=Array.isArray(e),s,i=n&&n.defer;return o=>{let l;if(r){l=Array(e.length);for(let c=0;c<e.length;c++)l[c]=e[c]()}else l=e();if(i)return i=!1,o;let a=O(()=>t(l,s,o));return s=l,a}}function $t(e){st(()=>O(e))}function X(e){return y===null||(y.cleanups===null?y.cleanups=[e]:y.cleanups.push(e)),e}function Fe(){return y}function _t(e,t){let n=y,r=p;y=e,p=null;try{return T(t,!0)}catch(s){be(s)}finally{y=n,p=r}}function it(e){if(f&&f.running)return e(),f.done;let t=p,n=y;return Promise.resolve().then(()=>{p=t,y=n;let r;return(W||ne)&&(r=f||(f={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),r.done||(r.done=new Promise(s=>r.resolve=s)),r.running=!0),T(e,!1),p=y=null,r?r.done:void 0})}var[Bt,Ke]=V(!1);function rr(){return[Bt,it]}function sr(e,t){let n=Symbol("context");return{id:n,Provider:Ft(n),defaultValue:e}}function ot(e){let t;return y&&y.context&&(t=y.context[e.id])!==void 0?t:e.defaultValue}function lt(e){let t=x(e),n=x(()=>Te(t()));return n.toArray=()=>{let r=n();return Array.isArray(r)?r:r!=null?[r]:[]},n}var ne;function at(){let e=f&&f.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===N)Z(this);else{let t=E;E=null,T(()=>me(this),!1),E=t}if(p){let t=this.observers?this.observers.length:0;p.sources?(p.sources.push(this),p.sourceSlots.push(t)):(p.sources=[this],p.sourceSlots=[t]),this.observers?(this.observers.push(p),this.observerSlots.push(p.sources.length-1)):(this.observers=[p],this.observerSlots=[p.sources.length-1])}return e&&f.sources.has(this)?this.tValue:this.value}function ft(e,t,n){let r=f&&f.running&&f.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(f){let s=f.running;(s||!n&&f.sources.has(e))&&(f.sources.add(e),e.tValue=t),s||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&T(()=>{for(let s=0;s<e.observers.length;s+=1){let i=e.observers[s],o=f&&f.running;o&&f.disposed.has(i)||((o?!i.tState:!i.state)&&(i.pure?E.push(i):C.push(i),i.observers&&ct(i)),o?i.tState=N:i.state=N)}if(E.length>1e6)throw E=[],new Error},!1)}return t}function Z(e){if(!e.fn)return;D(e);let t=pe;qe(e,f&&f.running&&f.sources.has(e)?e.tValue:e.value,t),f&&!f.running&&f.sources.has(e)&&queueMicrotask(()=>{T(()=>{f&&(f.running=!0),p=y=e,qe(e,e.tValue,t),p=y=null},!1)})}function qe(e,t,n){let r,s=y,i=p;p=y=e;try{r=e.fn(t)}catch(o){return e.pure&&(f&&f.running?(e.tState=N,e.tOwned&&e.tOwned.forEach(D),e.tOwned=void 0):(e.state=N,e.owned&&e.owned.forEach(D),e.owned=null)),e.updatedAt=n+1,be(o)}finally{p=i,y=s}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?ft(e,r,!0):f&&f.running&&e.pure?(f.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function ve(e,t,n,r=N,s){let i={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:y,context:y?y.context:null,pure:n};if(f&&f.running&&(i.state=0,i.tState=r),y===null||y!==rt&&(f&&f.running&&y.pure?y.tOwned?y.tOwned.push(i):y.tOwned=[i]:y.owned?y.owned.push(i):y.owned=[i]),Q&&i.fn){let[o,l]=V(void 0,{equals:!1}),a=Q.factory(i.fn,l);X(()=>a.dispose());let c=()=>it(l).then(()=>d.dispose()),d=Q.factory(i.fn,c);i.fn=u=>(o(),f&&f.running?d.track(u):a.track(u))}return i}function re(e){let t=f&&f.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===te)return me(e);if(e.suspense&&O(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<pe);){if(t&&f.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let s=e,i=n[r+1];for(;(s=s.owner)&&s!==i;)if(f.disposed.has(s))return}if((t?e.tState:e.state)===N)Z(e);else if((t?e.tState:e.state)===te){let s=E;E=null,T(()=>me(e,n[0]),!1),E=s}}}function T(e,t){if(E)return e();let n=!1;t||(E=[]),C?n=!0:C=[],pe++;try{let r=e();return Dt(n),r}catch(r){n||(C=null),E=null,be(r)}}function Dt(e){if(E&&(W&&f&&f.running?jt(E):ut(E),E=null),e)return;let t;if(f){if(!f.promises.size&&!f.queue.size){let r=f.sources,s=f.disposed;C.push.apply(C,f.effects),t=f.resolve;for(let i of C)"tState"in i&&(i.state=i.tState),delete i.tState;f=null,T(()=>{for(let i of s)D(i);for(let i of r){if(i.value=i.tValue,i.owned)for(let o=0,l=i.owned.length;o<l;o++)D(i.owned[o]);i.tOwned&&(i.owned=i.tOwned),delete i.tValue,delete i.tOwned,i.tState=0}Ke(!1)},!1)}else if(f.running){f.running=!1,f.effects.push.apply(f.effects,C),C=null,Ke(!0);return}}let n=C;C=null,n.length&&T(()=>nt(n),!1),t&&t()}function ut(e){for(let t=0;t<e.length;t++)re(e[t])}function jt(e){for(let t=0;t<e.length;t++){let n=e[t],r=f.queue;r.has(n)||(r.add(n),W(()=>{r.delete(n),T(()=>{f.running=!0,re(n)},!1),f&&(f.running=!1)}))}}function Ut(e){let t,n=0;for(t=0;t<e.length;t++){let r=e[t];r.user?e[n++]=r:re(r)}if(g.context){if(g.count){g.effects||(g.effects=[]),g.effects.push(...e.slice(0,n));return}U()}for(g.effects&&(g.done||!g.count)&&(e=[...g.effects,...e],n+=g.effects.length,delete g.effects),t=0;t<n;t++)re(e[t])}function me(e,t){let n=f&&f.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let s=e.sources[r];if(s.sources){let i=n?s.tState:s.state;i===N?s!==t&&(!s.updatedAt||s.updatedAt<pe)&&re(s):i===te&&me(s,t)}}}function ct(e){let t=f&&f.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=te:r.state=te,r.pure?E.push(r):C.push(r),r.observers&&ct(r))}}function D(e){let t;if(e.sources)for(;e.sources.length;){let n=e.sources.pop(),r=e.sourceSlots.pop(),s=n.observers;if(s&&s.length){let i=s.pop(),o=n.observerSlots.pop();r<s.length&&(i.sourceSlots[o]=r,s[r]=i,n.observerSlots[r]=o)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)D(e.tOwned[t]);delete e.tOwned}if(f&&f.running&&e.pure)dt(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)D(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}f&&f.running?e.tState=0:e.state=0}function dt(e,t){if(t||(e.tState=0,f.disposed.add(e)),e.owned)for(let n=0;n<e.owned.length;n++)dt(e.owned[n])}function Ce(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function ze(e,t,n){try{for(let r of t)r(e)}catch(r){be(r,n&&n.owner||null)}}function be(e,t=y){let n=je&&t&&t.context&&t.context[je],r=Ce(e);if(!n)throw r;C?C.push({fn(){ze(r,n,t)},state:N}):ze(r,n,t)}function Te(e){if(typeof e=="function"&&!e.length)return Te(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=Te(e[n]);Array.isArray(r)?t.push.apply(t,r):t.push(r)}return t}return e}function Ft(e,t){return function(r){let s;return K(()=>s=O(()=>(y.context={...y.context,[e]:r.value},lt(()=>r.children))),void 0),s}}var Ne=Symbol("fallback");function we(e){for(let t=0;t<e.length;t++)e[t]()}function Kt(e,t,n={}){let r=[],s=[],i=[],o=0,l=t.length>1?[]:null;return X(()=>we(i)),()=>{let a=e()||[],c=a.length,d,u;return a[tt],O(()=>{let w,v,k,L,_,I,P,R,$;if(c===0)o!==0&&(we(i),i=[],r=[],s=[],o=0,l&&(l=[])),n.fallback&&(r=[Ne],s[0]=F(B=>(i[0]=B,n.fallback())),o=1);else if(o===0){for(s=new Array(c),u=0;u<c;u++)r[u]=a[u],s[u]=F(h);o=c}else{for(k=new Array(c),L=new Array(c),l&&(_=new Array(c)),I=0,P=Math.min(o,c);I<P&&r[I]===a[I];I++);for(P=o-1,R=c-1;P>=I&&R>=I&&r[P]===a[R];P--,R--)k[R]=s[P],L[R]=i[P],l&&(_[R]=l[P]);for(w=new Map,v=new Array(R+1),u=R;u>=I;u--)$=a[u],d=w.get($),v[u]=d===void 0?-1:d,w.set($,u);for(d=I;d<=P;d++)$=r[d],u=w.get($),u!==void 0&&u!==-1?(k[u]=s[d],L[u]=i[d],l&&(_[u]=l[d]),u=v[u],w.set($,u)):i[d]();for(u=I;u<c;u++)u in k?(s[u]=k[u],i[u]=L[u],l&&(l[u]=_[u],l[u](u))):s[u]=F(h);s=s.slice(0,o=c),r=a.slice(0)}return s});function h(w){if(i[u]=w,l){let[v,k]=V(u);return l[u]=k,t(a[u],v)}return t(a[u])}}}function qt(e,t,n={}){let r=[],s=[],i=[],o=[],l=0,a;return X(()=>we(i)),()=>{let c=e()||[],d=c.length;return c[tt],O(()=>{if(d===0)return l!==0&&(we(i),i=[],r=[],s=[],l=0,o=[]),n.fallback&&(r=[Ne],s[0]=F(h=>(i[0]=h,n.fallback())),l=1),s;for(r[0]===Ne&&(i[0](),i=[],r=[],s=[],l=0),a=0;a<d;a++)a<r.length&&r[a]!==c[a]?o[a](()=>c[a]):a>=r.length&&(s[a]=F(u));for(;a<r.length;a++)i[a]();return l=o.length=i.length=d,r=c.slice(0),s=s.slice(0,l)});function u(h){i[a]=h;let[w,v]=V(c[a]);return o[a]=v,t(w,a)}}}var zt=!1;function ir(e,t){if(zt&&g.context){let n=g.context;U(Rt());let r=O(()=>e(t||{}));return U(n),r}return O(()=>e(t||{}))}function ae(){return!0}var Ie={get(e,t,n){return t===he?n:e.get(t)},has(e,t){return t===he?!0:e.has(t)},set:ae,deleteProperty:ae,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:ae,deleteProperty:ae}},ownKeys(e){return e.keys()}};function xe(e){return(e=typeof e=="function"?e():e)?e:{}}function Ht(){for(let e=0,t=this.length;e<t;++e){let n=this[e]();if(n!==void 0)return n}}function or(...e){let t=!1;for(let o=0;o<e.length;o++){let l=e[o];t=t||!!l&&he in l,e[o]=typeof l=="function"?(t=!0,x(l)):l}if(et&&t)return new Proxy({get(o){for(let l=e.length-1;l>=0;l--){let a=xe(e[l])[o];if(a!==void 0)return a}},has(o){for(let l=e.length-1;l>=0;l--)if(o in xe(e[l]))return!0;return!1},keys(){let o=[];for(let l=0;l<e.length;l++)o.push(...Object.keys(xe(e[l])));return[...new Set(o)]}},Ie);let n={},r=Object.create(null);for(let o=e.length-1;o>=0;o--){let l=e[o];if(!l)continue;let a=Object.getOwnPropertyNames(l);for(let c=a.length-1;c>=0;c--){let d=a[c];if(d==="__proto__"||d==="constructor")continue;let u=Object.getOwnPropertyDescriptor(l,d);if(!r[d])r[d]=u.get?{enumerable:!0,configurable:!0,get:Ht.bind(n[d]=[u.get.bind(l)])}:u.value!==void 0?u:void 0;else{let h=n[d];h&&(u.get?h.push(u.get.bind(l)):u.value!==void 0&&h.push(()=>u.value))}}}let s={},i=Object.keys(r);for(let o=i.length-1;o>=0;o--){let l=i[o],a=r[l];a&&a.get?Object.defineProperty(s,l,a):s[l]=a?a.value:void 0}return s}function Gt(e,...t){if(et&&he in e){let s=new Set(t.length>1?t.flat():t[0]),i=t.map(o=>new Proxy({get(l){return o.includes(l)?e[l]:void 0},has(l){return o.includes(l)&&l in e},keys(){return o.filter(l=>l in e)}},Ie));return i.push(new Proxy({get(o){return s.has(o)?void 0:e[o]},has(o){return s.has(o)?!1:o in e},keys(){return Object.keys(e).filter(o=>!s.has(o))}},Ie)),i}let n={},r=t.map(()=>({}));for(let s of Object.getOwnPropertyNames(e)){let i=Object.getOwnPropertyDescriptor(e,s),o=!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable,l=!1,a=0;for(let c of t)c.includes(s)&&(l=!0,o?r[a][s]=i.value:Object.defineProperty(r[a],s,i)),++a;l||(o?n[s]=i.value:Object.defineProperty(n,s,i))}return[...r,n]}function lr(e){let t,n,r=s=>{let i=g.context;if(i){let[l,a]=V();g.count||(g.count=0),g.count++,(n||(n=e())).then(c=>{!g.done&&U(i),g.count--,a(()=>c.default),U()}),t=l}else if(!t){let[l]=Mt(()=>(n||(n=e())).then(a=>a.default));t=l}let o;return x(()=>(o=t())?O(()=>{if(!i||g.done)return o(s);let l=g.context;U(i);let a=o(s);return U(l),a}):"")};return r.preload=()=>n||((n=e()).then(s=>t=()=>s.default),n),r}var Qt=0;function ar(){return g.context?g.getNextContextId():`cl-${Qt++}`}var gt=e=>`Stale read from <${e}>.`;function fr(e){let t="fallback"in e&&{fallback:()=>e.fallback};return x(Kt(()=>e.each,e.children,t||void 0))}function ur(e){let t="fallback"in e&&{fallback:()=>e.fallback};return x(qt(()=>e.each,e.children,t||void 0))}function cr(e){let t=e.keyed,n=x(()=>e.when,void 0,void 0),r=t?n:x(n,void 0,{equals:(s,i)=>!s==!i});return x(()=>{let s=r();if(s){let i=e.children;return typeof i=="function"&&i.length>0?O(()=>i(t?s:()=>{if(!O(r))throw gt("Show");return n()})):i}return e.fallback},void 0,void 0)}function dr(e){let t=lt(()=>e.children),n=x(()=>{let r=t(),s=Array.isArray(r)?r:[r],i=()=>{};for(let o=0;o<s.length;o++){let l=o,a=s[o],c=i,d=x(()=>c()?void 0:a.when,void 0,void 0),u=a.keyed?d:x(d,void 0,{equals:(h,w)=>!h==!w});i=()=>c()||(u()?[l,d,a]:void 0)}return i});return x(()=>{let r=n()();if(!r)return e.fallback;let[s,i,o]=r,l=o.children;return typeof l=="function"&&l.length>0?O(()=>l(o.keyed?i():()=>{if(O(n)()?.[0]!==s)throw gt("Match");return i()})):l},void 0,void 0)}function gr(e){return e}var hr=void 0,Xt=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Yt=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Xt]),Wt=new Set(["innerHTML","textContent","innerText","children"]),Zt=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Jt=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function en(e,t){let n=Jt[e];return typeof n=="object"?n[t]?n.$:void 0:n}var tn=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),nn=new Set(["altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view","vkern"]),rn={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function sn(e,t,n){let r=n.length,s=t.length,i=r,o=0,l=0,a=t[s-1].nextSibling,c=null;for(;o<s||l<i;){if(t[o]===n[l]){o++,l++;continue}for(;t[s-1]===n[i-1];)s--,i--;if(s===o){let d=i<r?l?n[l-1].nextSibling:n[i-l]:a;for(;l<i;)e.insertBefore(n[l++],d)}else if(i===l)for(;o<s;)(!c||!c.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[i-1]&&n[l]===t[s-1]){let d=t[--s].nextSibling;e.insertBefore(n[l++],t[o++].nextSibling),e.insertBefore(n[--i],d),t[s]=n[i]}else{if(!c){c=new Map;let u=l;for(;u<i;)c.set(n[u],u++)}let d=c.get(t[o]);if(d!=null)if(l<d&&d<i){let u=o,h=1,w;for(;++u<s&&u<i&&!((w=c.get(t[u]))==null||w!==d+h);)h++;if(h>d-l){let v=t[o];for(;l<d;)e.insertBefore(n[l++],v)}else e.replaceChild(n[l++],t[o++])}else o++;else t[o++].remove()}}}var J="_$DX_DELEGATE";function yr(e,t,n,r={}){let s;return F(i=>{s=i,t===document?e():Re(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{s(),t.textContent=""}}function mr(e,t,n,r){let s,i=()=>{let l=r?document.createElementNS("http://www.w3.org/1998/Math/MathML","template"):document.createElement("template");return l.innerHTML=e,n?l.content.firstChild.firstChild:r?l.firstChild:l.content.firstChild},o=t?()=>O(()=>document.importNode(s||(s=i()),!0)):()=>(s||(s=i())).cloneNode(!0);return o.cloneNode=o,o}function on(e,t=window.document){let n=t[J]||(t[J]=new Set);for(let r=0,s=e.length;r<s;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,ht))}}function wr(e=window.document){if(e[J]){for(let t of e[J].keys())e.removeEventListener(t,ht);delete e[J]}}function Pe(e,t,n){q(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function ln(e,t,n,r){q(e)||(r==null?e.removeAttributeNS(t,n):e.setAttributeNS(t,n,r))}function an(e,t,n){q(e)||(n?e.setAttribute(t,""):e.removeAttribute(t))}function fn(e,t){q(e)||(t==null?e.removeAttribute("class"):e.className=t)}function un(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let s=n[0];e.addEventListener(t,n[0]=i=>s.call(e,n[1],i))}else e.addEventListener(t,n,typeof n!="function"&&n)}function cn(e,t,n={}){let r=Object.keys(t||{}),s=Object.keys(n),i,o;for(i=0,o=s.length;i<o;i++){let l=s[i];!l||l==="undefined"||t[l]||(He(e,l,!1),delete n[l])}for(i=0,o=r.length;i<o;i++){let l=r[i],a=!!t[l];!l||l==="undefined"||n[l]===a||!a||(He(e,l,!0),n[l]=a)}return n}function dn(e,t,n){if(!t)return n?Pe(e,"style"):t;let r=e.style;if(typeof t=="string")return r.cssText=t;typeof n=="string"&&(r.cssText=n=void 0),n||(n={}),t||(t={});let s,i;for(i in n)t[i]==null&&r.removeProperty(i),delete n[i];for(i in t)s=t[i],s!==n[i]&&(r.setProperty(i,s),n[i]=s);return n}function gn(e,t={},n,r){let s={};return r||K(()=>s.children=se(e,t.children,s.children)),K(()=>typeof t.ref=="function"&&hn(t.ref,e)),K(()=>yn(e,t,n,!0,s,!0)),s}function hn(e,t,n){return O(()=>e(t,n))}function Re(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return se(e,t,r,n);K(s=>se(e,t(),s,n),r)}function yn(e,t,n,r,s={},i=!1){t||(t={});for(let o in s)if(!(o in t)){if(o==="children")continue;s[o]=Ge(e,o,null,s[o],n,i,t)}for(let o in t){if(o==="children")continue;let l=t[o];s[o]=Ge(e,o,l,s[o],n,i,t)}}function mn(e){let t,n;return!q()||!(t=g.registry.get(n=pn()))?e():(g.completed&&g.completed.add(t),g.registry.delete(n),t)}function q(e){return!!g.context&&!g.done&&(!e||e.isConnected)}function wn(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function He(e,t,n){let r=t.trim().split(/\s+/);for(let s=0,i=r.length;s<i;s++)e.classList.toggle(r[s],n)}function Ge(e,t,n,r,s,i,o){let l,a,c,d,u;if(t==="style")return dn(e,n,r);if(t==="classList")return cn(e,n,r);if(n===r)return r;if(t==="ref")i||n(e);else if(t.slice(0,3)==="on:"){let h=t.slice(3);r&&e.removeEventListener(h,r,typeof r!="function"&&r),n&&e.addEventListener(h,n,typeof n!="function"&&n)}else if(t.slice(0,10)==="oncapture:"){let h=t.slice(10);r&&e.removeEventListener(h,r,!0),n&&e.addEventListener(h,n,!0)}else if(t.slice(0,2)==="on"){let h=t.slice(2).toLowerCase(),w=tn.has(h);if(!w&&r){let v=Array.isArray(r)?r[0]:r;e.removeEventListener(h,v)}(w||n)&&(un(e,h,n,w),w&&on([h]))}else if(t.slice(0,5)==="attr:")Pe(e,t.slice(5),n);else if(t.slice(0,5)==="bool:")an(e,t.slice(5),n);else if((u=t.slice(0,5)==="prop:")||(c=Wt.has(t))||!s&&((d=en(t,e.tagName))||(a=Yt.has(t)))||(l=e.nodeName.includes("-")||"is"in o)){if(u)t=t.slice(5),a=!0;else if(q(e))return n;t==="class"||t==="className"?fn(e,n):l&&!a&&!c?e[wn(t)]=n:e[d||t]=n}else{let h=s&&t.indexOf(":")>-1&&rn[t.split(":")[0]];h?ln(e,h,t,n):Pe(e,Zt[t]||t,n)}return n}function ht(e){if(g.registry&&g.events&&g.events.find(([a,c])=>c===e))return;let t=e.target,n=`$$${e.type}`,r=e.target,s=e.currentTarget,i=a=>Object.defineProperty(e,"target",{configurable:!0,value:a}),o=()=>{let a=t[n];if(a&&!t.disabled){let c=t[`${n}Data`];if(c!==void 0?a.call(t,c,e):a.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&i(t.host),!0},l=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),g.registry&&!g.done&&(g.done=_$HY.done=!0),e.composedPath){let a=e.composedPath();i(a[0]);for(let c=0;c<a.length-2&&(t=a[c],!!o());c++){if(t._$host){t=t._$host,l();break}if(t.parentNode===s)break}}else l();i(r)}function se(e,t,n,r,s){let i=q(e);if(i){!n&&(n=[...e.childNodes]);let a=[];for(let c=0;c<n.length;c++){let d=n[c];d.nodeType===8&&d.data.slice(0,2)==="!$"?d.remove():a.push(d)}n=a}for(;typeof n=="function";)n=n();if(t===n)return n;let o=typeof t,l=r!==void 0;if(e=l&&n[0]&&n[0].parentNode||e,o==="string"||o==="number"){if(i||o==="number"&&(t=t.toString(),t===n))return n;if(l){let a=n[0];a&&a.nodeType===3?a.data!==t&&(a.data=t):a=document.createTextNode(t),n=H(e,n,r,a)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||o==="boolean"){if(i)return n;n=H(e,n,r)}else{if(o==="function")return K(()=>{let a=t();for(;typeof a=="function";)a=a();n=se(e,a,n,r)}),()=>n;if(Array.isArray(t)){let a=[],c=n&&Array.isArray(n);if(Ve(a,t,n,s))return K(()=>n=se(e,a,n,r,!0)),()=>n;if(i){if(!a.length)return n;if(r===void 0)return n=[...e.childNodes];let d=a[0];if(d.parentNode!==e)return n;let u=[d];for(;(d=d.nextSibling)!==r;)u.push(d);return n=u}if(a.length===0){if(n=H(e,n,r),l)return n}else c?n.length===0?Qe(e,a,r):sn(e,n,a):(n&&H(e),Qe(e,a));n=a}else if(t.nodeType){if(i&&t.parentNode)return n=l?[t]:t;if(Array.isArray(n)){if(l)return n=H(e,n,r,t);H(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Ve(e,t,n,r){let s=!1;for(let i=0,o=t.length;i<o;i++){let l=t[i],a=n&&n[e.length],c;if(!(l==null||l===!0||l===!1))if((c=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))s=Ve(e,l,a)||s;else if(c==="function")if(r){for(;typeof l=="function";)l=l();s=Ve(e,Array.isArray(l)?l:[l],Array.isArray(a)?a:[a])||s}else e.push(l),s=!0;else{let d=String(l);a&&a.nodeType===3&&a.data===d?e.push(a):e.push(document.createTextNode(d))}}return s}function Qe(e,t,n=null){for(let r=0,s=t.length;r<s;r++)e.insertBefore(t[r],n)}function H(e,t,n,r){if(n===void 0)return e.textContent="";let s=r||document.createTextNode("");if(t.length){let i=!1;for(let o=t.length-1;o>=0;o--){let l=t[o];if(s!==l){let a=l.parentNode===e;!i&&!o?a?e.replaceChild(s,l):e.insertBefore(s,n):a&&l.remove()}else i=!0}}else e.insertBefore(s,n);return[s]}function pn(){return g.getNextContextId()}var pr=!1,vn="http://www.w3.org/2000/svg";function yt(e,t=!1){return t?document.createElementNS(vn,e):document.createElement(e)}function vr(e){let{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,s=Fe(),i,o=!!g.context;return st(()=>{o&&(Fe().user=o=!1),i||(i=_t(s,()=>x(()=>e.children)));let l=r();if(l instanceof HTMLHeadElement){let[a,c]=V(!1),d=()=>c(!0);F(u=>Re(l,()=>a()?u():i(),null)),X(d)}else{let a=yt(e.isSVG?"g":"div",e.isSVG),c=t&&a.attachShadow?a.attachShadow({mode:"open"}):a;Object.defineProperty(a,"_$host",{get(){return n.parentNode},configurable:!0}),Re(c,i),l.appendChild(a),e.ref&&e.ref(a),X(()=>l.removeChild(a))}},void 0,{render:!o}),n}function bn(e,t){let n=x(e);return x(()=>{let r=n();switch(typeof r){case"function":return O(()=>r(t));case"string":let s=nn.has(r),i=g.context?mn():yt(r,s);return gn(i,t,s),i}})}function br(e){let[,t]=Gt(e,["component"]);return bn(()=>e.component,t)}var Sn=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},mt=class{constructor(e){this.generateIdentifier=e,this.kv=new Sn}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},An=class extends mt{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t=="object"?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};function En(e){if("values"in Object)return Object.values(e);let t=[];for(let n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function On(e,t){let n=En(e);if("find"in n)return n.find(t);let r=n;for(let s=0;s<r.length;s++){let i=r[s];if(t(i))return i}}function Y(e,t){Object.entries(e).forEach(([n,r])=>t(r,n))}function ge(e,t){return e.indexOf(t)!==-1}function Xe(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(t(r))return r}}var xn=class{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return On(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}},kn=e=>Object.prototype.toString.call(e).slice(8,-1),wt=e=>typeof e>"u",Cn=e=>e===null,ie=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Le=e=>ie(e)&&Object.keys(e).length===0,j=e=>Array.isArray(e),Tn=e=>typeof e=="string",Nn=e=>typeof e=="number"&&!isNaN(e),In=e=>typeof e=="boolean",Pn=e=>e instanceof RegExp,oe=e=>e instanceof Map,le=e=>e instanceof Set,pt=e=>kn(e)==="Symbol",Rn=e=>e instanceof Date&&!isNaN(e.valueOf()),Vn=e=>e instanceof Error,Ye=e=>typeof e=="number"&&isNaN(e),Ln=e=>In(e)||Cn(e)||wt(e)||Nn(e)||Tn(e)||pt(e),Mn=e=>typeof e=="bigint",$n=e=>e===1/0||e===-1/0,_n=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),Bn=e=>e instanceof URL,vt=e=>e.replace(/\./g,"\\."),ke=e=>e.map(String).map(vt).join("."),ee=e=>{let t=[],n="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){n+=".",s++;continue}if(i==="."){t.push(n),n="";continue}n+=i}let r=n;return t.push(r),t};function M(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var bt=[M(wt,"undefined",()=>null,()=>{}),M(Mn,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):e),M(Rn,"Date",e=>e.toISOString(),e=>new Date(e)),M(Vn,"Error",(e,t)=>{let n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n},(e,t)=>{let n=new Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n}),M(Pn,"regexp",e=>""+e,e=>{let t=e.slice(1,e.lastIndexOf("/")),n=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,n)}),M(le,"set",e=>[...e.values()],e=>new Set(e)),M(oe,"map",e=>[...e.entries()],e=>new Map(e)),M(e=>Ye(e)||$n(e),"number",e=>Ye(e)?"NaN":e>0?"Infinity":"-Infinity",Number),M(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),M(Bn,"URL",e=>e.toString(),e=>new URL(e))];function Se(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var St=Se((e,t)=>pt(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{let r=n.symbolRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),Dn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),At=Se(_n,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{let n=Dn[t[1]];if(!n)throw new Error("Trying to deserialize unknown typed array");return new n(e)});function Et(e,t){return e?.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var Ot=Se(Et,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{let n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};let r={};return n.forEach(s=>{r[s]=e[s]}),r},(e,t,n)=>{let r=n.classRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(r.prototype),e)}),xt=Se((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{let r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),jn=[Ot,St,xt,At],We=(e,t)=>{let n=Xe(jn,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};let r=Xe(bt,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},kt={};bt.forEach(e=>{kt[e.annotation]=e});var Un=(e,t,n)=>{if(j(t))switch(t[0]){case"symbol":return St.untransform(e,t,n);case"class":return Ot.untransform(e,t,n);case"custom":return xt.untransform(e,t,n);case"typed-array":return At.untransform(e,t,n);default:throw new Error("Unknown transformation: "+t)}else{let r=kt[t];if(!r)throw new Error("Unknown transformation: "+t);return r.untransform(e,n)}},G=(e,t)=>{let n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function Ct(e){if(ge(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(ge(e,"prototype"))throw new Error("prototype is not allowed as a property");if(ge(e,"constructor"))throw new Error("constructor is not allowed as a property")}var Fn=(e,t)=>{Ct(t);for(let n=0;n<t.length;n++){let r=t[n];if(le(e))e=G(e,+r);else if(oe(e)){let s=+r,i=+t[++n]==0?"key":"value",o=G(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[r]}return e},Me=(e,t,n)=>{if(Ct(t),t.length===0)return n(e);let r=e;for(let i=0;i<t.length-1;i++){let o=t[i];if(j(r)){let l=+o;r=r[l]}else if(ie(r))r=r[o];else if(le(r)){let l=+o;r=G(r,l)}else if(oe(r)){if(i===t.length-2)break;let a=+o,c=+t[++i]==0?"key":"value",d=G(r,a);switch(c){case"key":r=d;break;case"value":r=r.get(d);break}}}let s=t[t.length-1];if(j(r)?r[+s]=n(r[+s]):ie(r)&&(r[s]=n(r[s])),le(r)){let i=G(r,+s),o=n(i);i!==o&&(r.delete(i),r.add(o))}if(oe(r)){let i=+t[t.length-2],o=G(r,i);switch(+s==0?"key":"value"){case"key":{let a=n(o);r.set(a,r.get(o)),a!==o&&r.delete(o);break}case"value":{r.set(o,n(r.get(o)));break}}}return e};function $e(e,t,n=[]){if(!e)return;if(!j(e)){Y(e,(i,o)=>$e(i,t,[...n,...ee(o)]));return}let[r,s]=e;s&&Y(s,(i,o)=>{$e(i,t,[...n,...ee(o)])}),t(r,n)}function Kn(e,t,n){return $e(t,(r,s)=>{e=Me(e,s,i=>Un(i,r,n))}),e}function qn(e,t){function n(r,s){let i=Fn(e,ee(s));r.map(ee).forEach(o=>{e=Me(e,o,()=>i)})}if(j(t)){let[r,s]=t;r.forEach(i=>{e=Me(e,ee(i),()=>e)}),s&&Y(s,n)}else Y(t,n);return e}var zn=(e,t)=>ie(e)||j(e)||oe(e)||le(e)||Et(e,t);function Hn(e,t,n){let r=n.get(e);r?r.push(t):n.set(e,[t])}function Gn(e,t){let n={},r;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(l=>l.map(String)).sort((l,a)=>l.length-a.length));let[i,...o]=s;i.length===0?r=o.map(ke):n[ke(i)]=o.map(ke)}),r?Le(n)?[r]:[r,n]:Le(n)?void 0:n}var Tt=(e,t,n,r,s=[],i=[],o=new Map)=>{let l=Ln(e);if(!l){Hn(e,s,t);let w=o.get(e);if(w)return r?{transformedValue:null}:w}if(!zn(e,n)){let w=We(e,n),v=w?{transformedValue:w.value,annotations:[w.type]}:{transformedValue:e};return l||o.set(e,v),v}if(ge(i,e))return{transformedValue:null};let a=We(e,n),c=a?.value??e,d=j(c)?[]:{},u={};Y(c,(w,v)=>{if(v==="__proto__"||v==="constructor"||v==="prototype")throw new Error(`Detected property ${v}. This is a prototype pollution risk, please remove it from your object.`);let k=Tt(w,t,n,r,[...s,v],[...i,e],o);d[v]=k.transformedValue,j(k.annotations)?u[v]=k.annotations:ie(k.annotations)&&Y(k.annotations,(L,_)=>{u[vt(v)+"."+_]=L})});let h=Le(u)?{transformedValue:d,annotations:a?[a.type]:void 0}:{transformedValue:d,annotations:a?[a.type,u]:u};return l||o.set(e,h),h};function Nt(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ze(e){return Nt(e)==="Array"}function Qn(e){if(Nt(e)!=="Object")return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function Xn(e,t,n,r,s){let i={}.propertyIsEnumerable.call(r,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=n),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function _e(e,t={}){if(Ze(e))return e.map(s=>_e(s,t));if(!Qn(e))return e;let n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((s,i)=>{if(Ze(t.props)&&!t.props.includes(i))return s;let o=e[i],l=_e(o,t);return Xn(s,i,l,e,t.nonenumerable),s},{})}var m=class{constructor({dedupe:e=!1}={}){this.classRegistry=new An,this.symbolRegistry=new mt(t=>t.description??""),this.customTransformerRegistry=new xn,this.allowedErrorProps=[],this.dedupe=e}serialize(e){let t=new Map,n=Tt(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});let s=Gn(t,this.dedupe);return s&&(r.meta={...r.meta,referentialEqualities:s}),r}deserialize(e){let{json:t,meta:n}=e,r=_e(t);return n?.values&&(r=Kn(r,n.values,this)),n?.referentialEqualities&&(r=qn(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};m.defaultInstance=new m;m.serialize=m.defaultInstance.serialize.bind(m.defaultInstance);m.deserialize=m.defaultInstance.deserialize.bind(m.defaultInstance);m.stringify=m.defaultInstance.stringify.bind(m.defaultInstance);m.parse=m.defaultInstance.parse.bind(m.defaultInstance);m.registerClass=m.defaultInstance.registerClass.bind(m.defaultInstance);m.registerSymbol=m.defaultInstance.registerSymbol.bind(m.defaultInstance);m.registerCustom=m.defaultInstance.registerCustom.bind(m.defaultInstance);m.allowErrorProps=m.defaultInstance.allowErrorProps.bind(m.defaultInstance);var Yn=m.serialize;m.deserialize;var Sr=m.stringify;m.parse;m.registerClass;m.registerCustom;m.registerSymbol;m.allowErrorProps;function Ar(e){return e.state.fetchStatus==="fetching"?"fetching":e.getObserversCount()?e.state.fetchStatus==="paused"?"paused":e.isStale()?"stale":"fresh":"inactive"}function Er(e,t){return`${e}${t.charAt(0).toUpperCase()+t.slice(1)}`}function Or({queryState:e,observerCount:t,isStale:n}){return e.fetchStatus==="fetching"?"blue":t?e.fetchStatus==="paused"?"purple":n?"yellow":"green":"gray"}function xr({status:e,isPaused:t}){return t?"purple":e==="error"?"red":e==="pending"?"yellow":e==="success"?"green":"gray"}function kr(e){return e==="fresh"?"green":e==="stale"?"yellow":e==="paused"?"purple":e==="inactive"?"gray":"blue"}var Cr=(e,t=!1)=>{let{json:n}=Yn(e);return JSON.stringify(n,null,t?2:void 0)},fe=e=>e.state.fetchStatus!=="idle"?0:e.getObserversCount()?e.isStale()?2:1:3,Wn=(e,t)=>e.queryHash.localeCompare(t.queryHash),It=(e,t)=>e.state.dataUpdatedAt<t.state.dataUpdatedAt?1:-1,Zn=(e,t)=>fe(e)===fe(t)?It(e,t):fe(e)>fe(t)?1:-1,Tr={status:Zn,"query hash":Wn,"last updated":It},ue=e=>e.state.isPaused?0:e.state.status==="error"?2:e.state.status==="pending"?1:3,Pt=(e,t)=>e.state.submittedAt<t.state.submittedAt?1:-1,Jn=(e,t)=>ue(e)===ue(t)?Pt(e,t):ue(e)>ue(t)?1:-1,Nr={status:Jn,"last updated":Pt},Ir=e=>e*parseFloat(getComputedStyle(document.documentElement).fontSize),Pr=()=>{let[e,t]=V("dark");return $t(()=>{let n=window.matchMedia("(prefers-color-scheme: dark)");t(n.matches?"dark":"light");let r=s=>{t(s.matches?"dark":"light")};n.addEventListener("change",r),X(()=>n.removeEventListener("change",r))}),e},ce=(e,t,n)=>{if(t.length===0)return n;if(e instanceof Map){let r=new Map(e);if(t.length===1)return r.set(t[0],n),r;let[s,...i]=t;return r.set(s,ce(r.get(s),i,n)),r}if(e instanceof Set){let r=ce(Array.from(e),t,n);return new Set(r)}if(Array.isArray(e)){let r=[...e];if(t.length===1)return r[t[0]]=n,r;let[s,...i]=t;return r[s]=ce(r[s],i,n),r}if(e instanceof Object){let r={...e};if(t.length===1)return r[t[0]]=n,r;let[s,...i]=t;return r[s]=ce(r[s],i,n),r}return e},de=(e,t)=>{if(e instanceof Map){let n=new Map(e);if(t.length===1)return n.delete(t[0]),n;let[r,...s]=t;return n.set(r,de(n.get(r),s)),n}if(e instanceof Set){let n=de(Array.from(e),t);return new Set(n)}if(Array.isArray(e)){let n=[...e];if(t.length===1)return n.filter((i,o)=>o.toString()!==t[0]);let[r,...s]=t;return n[r]=de(n[r],s),n}if(e instanceof Object){let n={...e};if(t.length===1)return delete n[t[0]],n;let[r,...s]=t;return n[r]=de(n[r],s),n}return e},Rr=(e,t)=>{if(!e||document.querySelector("#_goober")||t?.querySelector("#_goober"))return;let r=document.createElement("style"),s=document.createTextNode("");r.appendChild(s),r.id="_goober",r.setAttribute("nonce",e),t?t.appendChild(r):document.head.appendChild(r)};export{tt as a,F as b,V as c,Ue as d,K as e,st as f,x as g,tr as h,O as i,nr as j,$t as k,X as l,Fe as m,rr as n,sr as o,ot as p,ir as q,or as r,Gt as s,lr as t,ar as u,fr as v,ur as w,cr as x,dr as y,gr as z,hr as A,yr as B,mr as C,on as D,wr as E,Pe as F,fn as G,un as H,gn as I,hn as J,Re as K,pr as L,vr as M,br as N,Yn as O,Sr as P,Ar as Q,Er as R,Or as S,xr as T,kr as U,Cr as V,Tr as W,Nr as X,Ir as Y,Pr as Z,ce as _,de as $,Rr as aa};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9jaHVuay9IUjdZWFo1SC5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9zb2xpZC1qcy9kaXN0L3NvbGlkLmpzXG52YXIgc2hhcmVkQ29uZmlnID0ge1xuICBjb250ZXh0OiB2b2lkIDAsXG4gIHJlZ2lzdHJ5OiB2b2lkIDAsXG4gIGVmZmVjdHM6IHZvaWQgMCxcbiAgZG9uZTogZmFsc2UsXG4gIGdldENvbnRleHRJZCgpIHtcbiAgICByZXR1cm4gZ2V0Q29udGV4dElkKHRoaXMuY29udGV4dC5jb3VudCk7XG4gIH0sXG4gIGdldE5leHRDb250ZXh0SWQoKSB7XG4gICAgcmV0dXJuIGdldENvbnRleHRJZCh0aGlzLmNvbnRleHQuY291bnQrKyk7XG4gIH1cbn07XG5mdW5jdGlvbiBnZXRDb250ZXh0SWQoY291bnQpIHtcbiAgY29uc3QgbnVtID0gU3RyaW5nKGNvdW50KSwgbGVuID0gbnVtLmxlbmd0aCAtIDE7XG4gIHJldHVybiBzaGFyZWRDb25maWcuY29udGV4dC5pZCArIChsZW4gPyBTdHJpbmcuZnJvbUNoYXJDb2RlKDk2ICsgbGVuKSA6IFwiXCIpICsgbnVtO1xufVxuZnVuY3Rpb24gc2V0SHlkcmF0ZUNvbnRleHQoY29udGV4dCkge1xuICBzaGFyZWRDb25maWcuY29udGV4dCA9IGNvbnRleHQ7XG59XG5mdW5jdGlvbiBuZXh0SHlkcmF0ZUNvbnRleHQoKSB7XG4gIHJldHVybiB7XG4gICAgLi4uc2hhcmVkQ29uZmlnLmNvbnRleHQsXG4gICAgaWQ6IHNoYXJlZENvbmZpZy5nZXROZXh0Q29udGV4dElkKCksXG4gICAgY291bnQ6IDBcbiAgfTtcbn1cbnZhciBJU19ERVYgPSBmYWxzZTtcbnZhciBlcXVhbEZuID0gKGEsIGIpID0+IGEgPT09IGI7XG52YXIgJFBST1hZID0gU3ltYm9sKFwic29saWQtcHJveHlcIik7XG52YXIgU1VQUE9SVFNfUFJPWFkgPSB0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIjtcbnZhciAkVFJBQ0sgPSBTeW1ib2woXCJzb2xpZC10cmFja1wiKTtcbnZhciBzaWduYWxPcHRpb25zID0ge1xuICBlcXVhbHM6IGVxdWFsRm5cbn07XG52YXIgRVJST1IgPSBudWxsO1xudmFyIHJ1bkVmZmVjdHMgPSBydW5RdWV1ZTtcbnZhciBTVEFMRSA9IDE7XG52YXIgUEVORElORyA9IDI7XG52YXIgVU5PV05FRCA9IHtcbiAgb3duZWQ6IG51bGwsXG4gIGNsZWFudXBzOiBudWxsLFxuICBjb250ZXh0OiBudWxsLFxuICBvd25lcjogbnVsbFxufTtcbnZhciBOT19JTklUID0ge307XG52YXIgT3duZXIgPSBudWxsO1xudmFyIFRyYW5zaXRpb24gPSBudWxsO1xudmFyIFNjaGVkdWxlciA9IG51bGw7XG52YXIgRXh0ZXJuYWxTb3VyY2VDb25maWcgPSBudWxsO1xudmFyIExpc3RlbmVyID0gbnVsbDtcbnZhciBVcGRhdGVzID0gbnVsbDtcbnZhciBFZmZlY3RzID0gbnVsbDtcbnZhciBFeGVjQ291bnQgPSAwO1xuZnVuY3Rpb24gY3JlYXRlUm9vdChmbiwgZGV0YWNoZWRPd25lcikge1xuICBjb25zdCBsaXN0ZW5lciA9IExpc3RlbmVyLCBvd25lciA9IE93bmVyLCB1bm93bmVkID0gZm4ubGVuZ3RoID09PSAwLCBjdXJyZW50ID0gZGV0YWNoZWRPd25lciA9PT0gdm9pZCAwID8gb3duZXIgOiBkZXRhY2hlZE93bmVyLCByb290ID0gdW5vd25lZCA/IFVOT1dORUQgOiB7XG4gICAgb3duZWQ6IG51bGwsXG4gICAgY2xlYW51cHM6IG51bGwsXG4gICAgY29udGV4dDogY3VycmVudCA/IGN1cnJlbnQuY29udGV4dCA6IG51bGwsXG4gICAgb3duZXI6IGN1cnJlbnRcbiAgfSwgdXBkYXRlRm4gPSB1bm93bmVkID8gZm4gOiAoKSA9PiBmbigoKSA9PiB1bnRyYWNrKCgpID0+IGNsZWFuTm9kZShyb290KSkpO1xuICBPd25lciA9IHJvb3Q7XG4gIExpc3RlbmVyID0gbnVsbDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcnVuVXBkYXRlcyh1cGRhdGVGbiwgdHJ1ZSk7XG4gIH0gZmluYWxseSB7XG4gICAgTGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgICBPd25lciA9IG93bmVyO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVTaWduYWwodmFsdWUsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgPyBPYmplY3QuYXNzaWduKHt9LCBzaWduYWxPcHRpb25zLCBvcHRpb25zKSA6IHNpZ25hbE9wdGlvbnM7XG4gIGNvbnN0IHMgPSB7XG4gICAgdmFsdWUsXG4gICAgb2JzZXJ2ZXJzOiBudWxsLFxuICAgIG9ic2VydmVyU2xvdHM6IG51bGwsXG4gICAgY29tcGFyYXRvcjogb3B0aW9ucy5lcXVhbHMgfHwgdm9pZCAwXG4gIH07XG4gIGNvbnN0IHNldHRlciA9ICh2YWx1ZTIpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlMiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBpZiAoVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcgJiYgVHJhbnNpdGlvbi5zb3VyY2VzLmhhcyhzKSkgdmFsdWUyID0gdmFsdWUyKHMudFZhbHVlKTtcbiAgICAgIGVsc2UgdmFsdWUyID0gdmFsdWUyKHMudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVTaWduYWwocywgdmFsdWUyKTtcbiAgfTtcbiAgcmV0dXJuIFtyZWFkU2lnbmFsLmJpbmQocyksIHNldHRlcl07XG59XG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZChmbiwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3QgYyA9IGNyZWF0ZUNvbXB1dGF0aW9uKGZuLCB2YWx1ZSwgdHJ1ZSwgU1RBTEUpO1xuICBpZiAoU2NoZWR1bGVyICYmIFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSBVcGRhdGVzLnB1c2goYyk7XG4gIGVsc2UgdXBkYXRlQ29tcHV0YXRpb24oYyk7XG59XG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJFZmZlY3QoZm4sIHZhbHVlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGMgPSBjcmVhdGVDb21wdXRhdGlvbihmbiwgdmFsdWUsIGZhbHNlLCBTVEFMRSk7XG4gIGlmIChTY2hlZHVsZXIgJiYgVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcpIFVwZGF0ZXMucHVzaChjKTtcbiAgZWxzZSB1cGRhdGVDb21wdXRhdGlvbihjKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUVmZmVjdChmbiwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgcnVuRWZmZWN0cyA9IHJ1blVzZXJFZmZlY3RzO1xuICBjb25zdCBjID0gY3JlYXRlQ29tcHV0YXRpb24oZm4sIHZhbHVlLCBmYWxzZSwgU1RBTEUpLCBzID0gU3VzcGVuc2VDb250ZXh0ICYmIHVzZUNvbnRleHQoU3VzcGVuc2VDb250ZXh0KTtcbiAgaWYgKHMpIGMuc3VzcGVuc2UgPSBzO1xuICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucmVuZGVyKSBjLnVzZXIgPSB0cnVlO1xuICBFZmZlY3RzID8gRWZmZWN0cy5wdXNoKGMpIDogdXBkYXRlQ29tcHV0YXRpb24oYyk7XG59XG5mdW5jdGlvbiBjcmVhdGVNZW1vKGZuLCB2YWx1ZSwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyA/IE9iamVjdC5hc3NpZ24oe30sIHNpZ25hbE9wdGlvbnMsIG9wdGlvbnMpIDogc2lnbmFsT3B0aW9ucztcbiAgY29uc3QgYyA9IGNyZWF0ZUNvbXB1dGF0aW9uKGZuLCB2YWx1ZSwgdHJ1ZSwgMCk7XG4gIGMub2JzZXJ2ZXJzID0gbnVsbDtcbiAgYy5vYnNlcnZlclNsb3RzID0gbnVsbDtcbiAgYy5jb21wYXJhdG9yID0gb3B0aW9ucy5lcXVhbHMgfHwgdm9pZCAwO1xuICBpZiAoU2NoZWR1bGVyICYmIFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSB7XG4gICAgYy50U3RhdGUgPSBTVEFMRTtcbiAgICBVcGRhdGVzLnB1c2goYyk7XG4gIH0gZWxzZSB1cGRhdGVDb21wdXRhdGlvbihjKTtcbiAgcmV0dXJuIHJlYWRTaWduYWwuYmluZChjKTtcbn1cbmZ1bmN0aW9uIGlzUHJvbWlzZSh2KSB7XG4gIHJldHVybiB2ICYmIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIFwidGhlblwiIGluIHY7XG59XG5mdW5jdGlvbiBjcmVhdGVSZXNvdXJjZShwU291cmNlLCBwRmV0Y2hlciwgcE9wdGlvbnMpIHtcbiAgbGV0IHNvdXJjZTtcbiAgbGV0IGZldGNoZXI7XG4gIGxldCBvcHRpb25zO1xuICB7XG4gICAgc291cmNlID0gdHJ1ZTtcbiAgICBmZXRjaGVyID0gcFNvdXJjZTtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgbGV0IHByID0gbnVsbCwgaW5pdFAgPSBOT19JTklULCBpZCA9IG51bGwsIGxvYWRlZFVuZGVyVHJhbnNpdGlvbiA9IGZhbHNlLCBzY2hlZHVsZWQgPSBmYWxzZSwgcmVzb2x2ZWQgPSBcImluaXRpYWxWYWx1ZVwiIGluIG9wdGlvbnMsIGR5bmFtaWMgPSB0eXBlb2Ygc291cmNlID09PSBcImZ1bmN0aW9uXCIgJiYgY3JlYXRlTWVtbyhzb3VyY2UpO1xuICBjb25zdCBjb250ZXh0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIFt2YWx1ZSwgc2V0VmFsdWVdID0gKG9wdGlvbnMuc3RvcmFnZSB8fCBjcmVhdGVTaWduYWwpKG9wdGlvbnMuaW5pdGlhbFZhbHVlKSwgW2Vycm9yLCBzZXRFcnJvcl0gPSBjcmVhdGVTaWduYWwodm9pZCAwKSwgW3RyYWNrLCB0cmlnZ2VyXSA9IGNyZWF0ZVNpZ25hbCh2b2lkIDAsIHtcbiAgICBlcXVhbHM6IGZhbHNlXG4gIH0pLCBbc3RhdGUsIHNldFN0YXRlXSA9IGNyZWF0ZVNpZ25hbChyZXNvbHZlZCA/IFwicmVhZHlcIiA6IFwidW5yZXNvbHZlZFwiKTtcbiAgaWYgKHNoYXJlZENvbmZpZy5jb250ZXh0KSB7XG4gICAgaWQgPSBzaGFyZWRDb25maWcuZ2V0TmV4dENvbnRleHRJZCgpO1xuICAgIGlmIChvcHRpb25zLnNzckxvYWRGcm9tID09PSBcImluaXRpYWxcIikgaW5pdFAgPSBvcHRpb25zLmluaXRpYWxWYWx1ZTtcbiAgICBlbHNlIGlmIChzaGFyZWRDb25maWcubG9hZCAmJiBzaGFyZWRDb25maWcuaGFzKGlkKSkgaW5pdFAgPSBzaGFyZWRDb25maWcubG9hZChpZCk7XG4gIH1cbiAgZnVuY3Rpb24gbG9hZEVuZChwLCB2LCBlcnJvcjIsIGtleSkge1xuICAgIGlmIChwciA9PT0gcCkge1xuICAgICAgcHIgPSBudWxsO1xuICAgICAga2V5ICE9PSB2b2lkIDAgJiYgKHJlc29sdmVkID0gdHJ1ZSk7XG4gICAgICBpZiAoKHAgPT09IGluaXRQIHx8IHYgPT09IGluaXRQKSAmJiBvcHRpb25zLm9uSHlkcmF0ZWQpXG4gICAgICAgIHF1ZXVlTWljcm90YXNrKFxuICAgICAgICAgICgpID0+IG9wdGlvbnMub25IeWRyYXRlZChrZXksIHtcbiAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGluaXRQID0gTk9fSU5JVDtcbiAgICAgIGlmIChUcmFuc2l0aW9uICYmIHAgJiYgbG9hZGVkVW5kZXJUcmFuc2l0aW9uKSB7XG4gICAgICAgIFRyYW5zaXRpb24ucHJvbWlzZXMuZGVsZXRlKHApO1xuICAgICAgICBsb2FkZWRVbmRlclRyYW5zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgcnVuVXBkYXRlcygoKSA9PiB7XG4gICAgICAgICAgVHJhbnNpdGlvbi5ydW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgICBjb21wbGV0ZUxvYWQodiwgZXJyb3IyKTtcbiAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIGNvbXBsZXRlTG9hZCh2LCBlcnJvcjIpO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuICBmdW5jdGlvbiBjb21wbGV0ZUxvYWQodiwgZXJyKSB7XG4gICAgcnVuVXBkYXRlcygoKSA9PiB7XG4gICAgICBpZiAoZXJyID09PSB2b2lkIDApIHNldFZhbHVlKCgpID0+IHYpO1xuICAgICAgc2V0U3RhdGUoZXJyICE9PSB2b2lkIDAgPyBcImVycm9yZWRcIiA6IHJlc29sdmVkID8gXCJyZWFkeVwiIDogXCJ1bnJlc29sdmVkXCIpO1xuICAgICAgc2V0RXJyb3IoZXJyKTtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBjb250ZXh0cy5rZXlzKCkpIGMuZGVjcmVtZW50KCk7XG4gICAgICBjb250ZXh0cy5jbGVhcigpO1xuICAgIH0sIGZhbHNlKTtcbiAgfVxuICBmdW5jdGlvbiByZWFkKCkge1xuICAgIGNvbnN0IGMgPSBTdXNwZW5zZUNvbnRleHQgJiYgdXNlQ29udGV4dChTdXNwZW5zZUNvbnRleHQpLCB2ID0gdmFsdWUoKSwgZXJyID0gZXJyb3IoKTtcbiAgICBpZiAoZXJyICE9PSB2b2lkIDAgJiYgIXByKSB0aHJvdyBlcnI7XG4gICAgaWYgKExpc3RlbmVyICYmICFMaXN0ZW5lci51c2VyICYmIGMpIHtcbiAgICAgIGNyZWF0ZUNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgdHJhY2soKTtcbiAgICAgICAgaWYgKHByKSB7XG4gICAgICAgICAgaWYgKGMucmVzb2x2ZWQgJiYgVHJhbnNpdGlvbiAmJiBsb2FkZWRVbmRlclRyYW5zaXRpb24pIFRyYW5zaXRpb24ucHJvbWlzZXMuYWRkKHByKTtcbiAgICAgICAgICBlbHNlIGlmICghY29udGV4dHMuaGFzKGMpKSB7XG4gICAgICAgICAgICBjLmluY3JlbWVudCgpO1xuICAgICAgICAgICAgY29udGV4dHMuYWRkKGMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG4gIGZ1bmN0aW9uIGxvYWQocmVmZXRjaGluZyA9IHRydWUpIHtcbiAgICBpZiAocmVmZXRjaGluZyAhPT0gZmFsc2UgJiYgc2NoZWR1bGVkKSByZXR1cm47XG4gICAgc2NoZWR1bGVkID0gZmFsc2U7XG4gICAgY29uc3QgbG9va3VwID0gZHluYW1pYyA/IGR5bmFtaWMoKSA6IHNvdXJjZTtcbiAgICBsb2FkZWRVbmRlclRyYW5zaXRpb24gPSBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZztcbiAgICBpZiAobG9va3VwID09IG51bGwgfHwgbG9va3VwID09PSBmYWxzZSkge1xuICAgICAgbG9hZEVuZChwciwgdW50cmFjayh2YWx1ZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoVHJhbnNpdGlvbiAmJiBwcikgVHJhbnNpdGlvbi5wcm9taXNlcy5kZWxldGUocHIpO1xuICAgIGNvbnN0IHAgPSBpbml0UCAhPT0gTk9fSU5JVCA/IGluaXRQIDogdW50cmFjayhcbiAgICAgICgpID0+IGZldGNoZXIobG9va3VwLCB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSgpLFxuICAgICAgICByZWZldGNoaW5nXG4gICAgICB9KVxuICAgICk7XG4gICAgaWYgKCFpc1Byb21pc2UocCkpIHtcbiAgICAgIGxvYWRFbmQocHIsIHAsIHZvaWQgMCwgbG9va3VwKTtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgICBwciA9IHA7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBwKSB7XG4gICAgICBpZiAocC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSBsb2FkRW5kKHByLCBwLnZhbHVlLCB2b2lkIDAsIGxvb2t1cCk7XG4gICAgICBlbHNlIGxvYWRFbmQocHIsIHZvaWQgMCwgY2FzdEVycm9yKHAudmFsdWUpLCBsb29rdXApO1xuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICAgIHNjaGVkdWxlZCA9IHRydWU7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gc2NoZWR1bGVkID0gZmFsc2UpO1xuICAgIHJ1blVwZGF0ZXMoKCkgPT4ge1xuICAgICAgc2V0U3RhdGUocmVzb2x2ZWQgPyBcInJlZnJlc2hpbmdcIiA6IFwicGVuZGluZ1wiKTtcbiAgICAgIHRyaWdnZXIoKTtcbiAgICB9LCBmYWxzZSk7XG4gICAgcmV0dXJuIHAudGhlbihcbiAgICAgICh2KSA9PiBsb2FkRW5kKHAsIHYsIHZvaWQgMCwgbG9va3VwKSxcbiAgICAgIChlKSA9PiBsb2FkRW5kKHAsIHZvaWQgMCwgY2FzdEVycm9yKGUpLCBsb29rdXApXG4gICAgKTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZWFkLCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGdldDogKCkgPT4gc3RhdGUoKVxuICAgIH0sXG4gICAgZXJyb3I6IHtcbiAgICAgIGdldDogKCkgPT4gZXJyb3IoKVxuICAgIH0sXG4gICAgbG9hZGluZzoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICBjb25zdCBzID0gc3RhdGUoKTtcbiAgICAgICAgcmV0dXJuIHMgPT09IFwicGVuZGluZ1wiIHx8IHMgPT09IFwicmVmcmVzaGluZ1wiO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGF0ZXN0OiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIGlmICghcmVzb2x2ZWQpIHJldHVybiByZWFkKCk7XG4gICAgICAgIGNvbnN0IGVyciA9IGVycm9yKCk7XG4gICAgICAgIGlmIChlcnIgJiYgIXByKSB0aHJvdyBlcnI7XG4gICAgICAgIHJldHVybiB2YWx1ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChkeW5hbWljKSBjcmVhdGVDb21wdXRlZCgoKSA9PiBsb2FkKGZhbHNlKSk7XG4gIGVsc2UgbG9hZChmYWxzZSk7XG4gIHJldHVybiBbXG4gICAgcmVhZCxcbiAgICB7XG4gICAgICByZWZldGNoOiBsb2FkLFxuICAgICAgbXV0YXRlOiBzZXRWYWx1ZVxuICAgIH1cbiAgXTtcbn1cbmZ1bmN0aW9uIGJhdGNoKGZuKSB7XG4gIHJldHVybiBydW5VcGRhdGVzKGZuLCBmYWxzZSk7XG59XG5mdW5jdGlvbiB1bnRyYWNrKGZuKSB7XG4gIGlmICghRXh0ZXJuYWxTb3VyY2VDb25maWcgJiYgTGlzdGVuZXIgPT09IG51bGwpIHJldHVybiBmbigpO1xuICBjb25zdCBsaXN0ZW5lciA9IExpc3RlbmVyO1xuICBMaXN0ZW5lciA9IG51bGw7XG4gIHRyeSB7XG4gICAgaWYgKEV4dGVybmFsU291cmNlQ29uZmlnKSByZXR1cm4gRXh0ZXJuYWxTb3VyY2VDb25maWcudW50cmFjayhmbik7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgTGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgfVxufVxuZnVuY3Rpb24gb24oZGVwcywgZm4sIG9wdGlvbnMpIHtcbiAgY29uc3QgaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KGRlcHMpO1xuICBsZXQgcHJldklucHV0O1xuICBsZXQgZGVmZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVmZXI7XG4gIHJldHVybiAocHJldlZhbHVlKSA9PiB7XG4gICAgbGV0IGlucHV0O1xuICAgIGlmIChpc0FycmF5Mykge1xuICAgICAgaW5wdXQgPSBBcnJheShkZXBzLmxlbmd0aCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIGlucHV0W2ldID0gZGVwc1tpXSgpO1xuICAgIH0gZWxzZSBpbnB1dCA9IGRlcHMoKTtcbiAgICBpZiAoZGVmZXIpIHtcbiAgICAgIGRlZmVyID0gZmFsc2U7XG4gICAgICByZXR1cm4gcHJldlZhbHVlO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB1bnRyYWNrKCgpID0+IGZuKGlucHV0LCBwcmV2SW5wdXQsIHByZXZWYWx1ZSkpO1xuICAgIHByZXZJbnB1dCA9IGlucHV0O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5mdW5jdGlvbiBvbk1vdW50KGZuKSB7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB1bnRyYWNrKGZuKSk7XG59XG5mdW5jdGlvbiBvbkNsZWFudXAoZm4pIHtcbiAgaWYgKE93bmVyID09PSBudWxsKSA7XG4gIGVsc2UgaWYgKE93bmVyLmNsZWFudXBzID09PSBudWxsKSBPd25lci5jbGVhbnVwcyA9IFtmbl07XG4gIGVsc2UgT3duZXIuY2xlYW51cHMucHVzaChmbik7XG4gIHJldHVybiBmbjtcbn1cbmZ1bmN0aW9uIGdldE93bmVyKCkge1xuICByZXR1cm4gT3duZXI7XG59XG5mdW5jdGlvbiBydW5XaXRoT3duZXIobywgZm4pIHtcbiAgY29uc3QgcHJldiA9IE93bmVyO1xuICBjb25zdCBwcmV2TGlzdGVuZXIgPSBMaXN0ZW5lcjtcbiAgT3duZXIgPSBvO1xuICBMaXN0ZW5lciA9IG51bGw7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJ1blVwZGF0ZXMoZm4sIHRydWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBoYW5kbGVFcnJvcihlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIE93bmVyID0gcHJldjtcbiAgICBMaXN0ZW5lciA9IHByZXZMaXN0ZW5lcjtcbiAgfVxufVxuZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKGZuKSB7XG4gIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZykge1xuICAgIGZuKCk7XG4gICAgcmV0dXJuIFRyYW5zaXRpb24uZG9uZTtcbiAgfVxuICBjb25zdCBsID0gTGlzdGVuZXI7XG4gIGNvbnN0IG8gPSBPd25lcjtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgIExpc3RlbmVyID0gbDtcbiAgICBPd25lciA9IG87XG4gICAgbGV0IHQ7XG4gICAgaWYgKFNjaGVkdWxlciB8fCBTdXNwZW5zZUNvbnRleHQpIHtcbiAgICAgIHQgPSBUcmFuc2l0aW9uIHx8IChUcmFuc2l0aW9uID0ge1xuICAgICAgICBzb3VyY2VzOiAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpLFxuICAgICAgICBlZmZlY3RzOiBbXSxcbiAgICAgICAgcHJvbWlzZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksXG4gICAgICAgIGRpc3Bvc2VkOiAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpLFxuICAgICAgICBxdWV1ZTogLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSxcbiAgICAgICAgcnVubmluZzogdHJ1ZVxuICAgICAgfSk7XG4gICAgICB0LmRvbmUgfHwgKHQuZG9uZSA9IG5ldyBQcm9taXNlKChyZXMpID0+IHQucmVzb2x2ZSA9IHJlcykpO1xuICAgICAgdC5ydW5uaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgcnVuVXBkYXRlcyhmbiwgZmFsc2UpO1xuICAgIExpc3RlbmVyID0gT3duZXIgPSBudWxsO1xuICAgIHJldHVybiB0ID8gdC5kb25lIDogdm9pZCAwO1xuICB9KTtcbn1cbnZhciBbdHJhbnNQZW5kaW5nLCBzZXRUcmFuc1BlbmRpbmddID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZVNpZ25hbChmYWxzZSk7XG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uKCkge1xuICByZXR1cm4gW3RyYW5zUGVuZGluZywgc3RhcnRUcmFuc2l0aW9uXTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoZGVmYXVsdFZhbHVlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGlkID0gU3ltYm9sKFwiY29udGV4dFwiKTtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBQcm92aWRlcjogY3JlYXRlUHJvdmlkZXIoaWQpLFxuICAgIGRlZmF1bHRWYWx1ZVxuICB9O1xufVxuZnVuY3Rpb24gdXNlQ29udGV4dChjb250ZXh0KSB7XG4gIGxldCB2YWx1ZTtcbiAgcmV0dXJuIE93bmVyICYmIE93bmVyLmNvbnRleHQgJiYgKHZhbHVlID0gT3duZXIuY29udGV4dFtjb250ZXh0LmlkXSkgIT09IHZvaWQgMCA/IHZhbHVlIDogY29udGV4dC5kZWZhdWx0VmFsdWU7XG59XG5mdW5jdGlvbiBjaGlsZHJlbihmbikge1xuICBjb25zdCBjaGlsZHJlbjIgPSBjcmVhdGVNZW1vKGZuKTtcbiAgY29uc3QgbWVtbyA9IGNyZWF0ZU1lbW8oKCkgPT4gcmVzb2x2ZUNoaWxkcmVuKGNoaWxkcmVuMigpKSk7XG4gIG1lbW8udG9BcnJheSA9ICgpID0+IHtcbiAgICBjb25zdCBjID0gbWVtbygpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGMpID8gYyA6IGMgIT0gbnVsbCA/IFtjXSA6IFtdO1xuICB9O1xuICByZXR1cm4gbWVtbztcbn1cbnZhciBTdXNwZW5zZUNvbnRleHQ7XG5mdW5jdGlvbiByZWFkU2lnbmFsKCkge1xuICBjb25zdCBydW5uaW5nVHJhbnNpdGlvbiA9IFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nO1xuICBpZiAodGhpcy5zb3VyY2VzICYmIChydW5uaW5nVHJhbnNpdGlvbiA/IHRoaXMudFN0YXRlIDogdGhpcy5zdGF0ZSkpIHtcbiAgICBpZiAoKHJ1bm5pbmdUcmFuc2l0aW9uID8gdGhpcy50U3RhdGUgOiB0aGlzLnN0YXRlKSA9PT0gU1RBTEUpIHVwZGF0ZUNvbXB1dGF0aW9uKHRoaXMpO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgdXBkYXRlcyA9IFVwZGF0ZXM7XG4gICAgICBVcGRhdGVzID0gbnVsbDtcbiAgICAgIHJ1blVwZGF0ZXMoKCkgPT4gbG9va1Vwc3RyZWFtKHRoaXMpLCBmYWxzZSk7XG4gICAgICBVcGRhdGVzID0gdXBkYXRlcztcbiAgICB9XG4gIH1cbiAgaWYgKExpc3RlbmVyKSB7XG4gICAgY29uc3Qgc1Nsb3QgPSB0aGlzLm9ic2VydmVycyA/IHRoaXMub2JzZXJ2ZXJzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFMaXN0ZW5lci5zb3VyY2VzKSB7XG4gICAgICBMaXN0ZW5lci5zb3VyY2VzID0gW3RoaXNdO1xuICAgICAgTGlzdGVuZXIuc291cmNlU2xvdHMgPSBbc1Nsb3RdO1xuICAgIH0gZWxzZSB7XG4gICAgICBMaXN0ZW5lci5zb3VyY2VzLnB1c2godGhpcyk7XG4gICAgICBMaXN0ZW5lci5zb3VyY2VTbG90cy5wdXNoKHNTbG90KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9ic2VydmVycykge1xuICAgICAgdGhpcy5vYnNlcnZlcnMgPSBbTGlzdGVuZXJdO1xuICAgICAgdGhpcy5vYnNlcnZlclNsb3RzID0gW0xpc3RlbmVyLnNvdXJjZXMubGVuZ3RoIC0gMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2goTGlzdGVuZXIpO1xuICAgICAgdGhpcy5vYnNlcnZlclNsb3RzLnB1c2goTGlzdGVuZXIuc291cmNlcy5sZW5ndGggLSAxKTtcbiAgICB9XG4gIH1cbiAgaWYgKHJ1bm5pbmdUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24uc291cmNlcy5oYXModGhpcykpIHJldHVybiB0aGlzLnRWYWx1ZTtcbiAgcmV0dXJuIHRoaXMudmFsdWU7XG59XG5mdW5jdGlvbiB3cml0ZVNpZ25hbChub2RlLCB2YWx1ZSwgaXNDb21wKSB7XG4gIGxldCBjdXJyZW50ID0gVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcgJiYgVHJhbnNpdGlvbi5zb3VyY2VzLmhhcyhub2RlKSA/IG5vZGUudFZhbHVlIDogbm9kZS52YWx1ZTtcbiAgaWYgKCFub2RlLmNvbXBhcmF0b3IgfHwgIW5vZGUuY29tcGFyYXRvcihjdXJyZW50LCB2YWx1ZSkpIHtcbiAgICBpZiAoVHJhbnNpdGlvbikge1xuICAgICAgY29uc3QgVHJhbnNpdGlvblJ1bm5pbmcgPSBUcmFuc2l0aW9uLnJ1bm5pbmc7XG4gICAgICBpZiAoVHJhbnNpdGlvblJ1bm5pbmcgfHwgIWlzQ29tcCAmJiBUcmFuc2l0aW9uLnNvdXJjZXMuaGFzKG5vZGUpKSB7XG4gICAgICAgIFRyYW5zaXRpb24uc291cmNlcy5hZGQobm9kZSk7XG4gICAgICAgIG5vZGUudFZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoIVRyYW5zaXRpb25SdW5uaW5nKSBub2RlLnZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIG5vZGUudmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAobm9kZS5vYnNlcnZlcnMgJiYgbm9kZS5vYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICBydW5VcGRhdGVzKCgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm9ic2VydmVycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgIGNvbnN0IG8gPSBub2RlLm9ic2VydmVyc1tpXTtcbiAgICAgICAgICBjb25zdCBUcmFuc2l0aW9uUnVubmluZyA9IFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nO1xuICAgICAgICAgIGlmIChUcmFuc2l0aW9uUnVubmluZyAmJiBUcmFuc2l0aW9uLmRpc3Bvc2VkLmhhcyhvKSkgY29udGludWU7XG4gICAgICAgICAgaWYgKFRyYW5zaXRpb25SdW5uaW5nID8gIW8udFN0YXRlIDogIW8uc3RhdGUpIHtcbiAgICAgICAgICAgIGlmIChvLnB1cmUpIFVwZGF0ZXMucHVzaChvKTtcbiAgICAgICAgICAgIGVsc2UgRWZmZWN0cy5wdXNoKG8pO1xuICAgICAgICAgICAgaWYgKG8ub2JzZXJ2ZXJzKSBtYXJrRG93bnN0cmVhbShvKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFUcmFuc2l0aW9uUnVubmluZykgby5zdGF0ZSA9IFNUQUxFO1xuICAgICAgICAgIGVsc2Ugby50U3RhdGUgPSBTVEFMRTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVXBkYXRlcy5sZW5ndGggPiAxZTYpIHtcbiAgICAgICAgICBVcGRhdGVzID0gW107XG4gICAgICAgICAgaWYgKElTX0RFVikgO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUNvbXB1dGF0aW9uKG5vZGUpIHtcbiAgaWYgKCFub2RlLmZuKSByZXR1cm47XG4gIGNsZWFuTm9kZShub2RlKTtcbiAgY29uc3QgdGltZSA9IEV4ZWNDb3VudDtcbiAgcnVuQ29tcHV0YXRpb24oXG4gICAgbm9kZSxcbiAgICBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyAmJiBUcmFuc2l0aW9uLnNvdXJjZXMuaGFzKG5vZGUpID8gbm9kZS50VmFsdWUgOiBub2RlLnZhbHVlLFxuICAgIHRpbWVcbiAgKTtcbiAgaWYgKFRyYW5zaXRpb24gJiYgIVRyYW5zaXRpb24ucnVubmluZyAmJiBUcmFuc2l0aW9uLnNvdXJjZXMuaGFzKG5vZGUpKSB7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgcnVuVXBkYXRlcygoKSA9PiB7XG4gICAgICAgIFRyYW5zaXRpb24gJiYgKFRyYW5zaXRpb24ucnVubmluZyA9IHRydWUpO1xuICAgICAgICBMaXN0ZW5lciA9IE93bmVyID0gbm9kZTtcbiAgICAgICAgcnVuQ29tcHV0YXRpb24obm9kZSwgbm9kZS50VmFsdWUsIHRpbWUpO1xuICAgICAgICBMaXN0ZW5lciA9IE93bmVyID0gbnVsbDtcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gcnVuQ29tcHV0YXRpb24obm9kZSwgdmFsdWUsIHRpbWUpIHtcbiAgbGV0IG5leHRWYWx1ZTtcbiAgY29uc3Qgb3duZXIgPSBPd25lciwgbGlzdGVuZXIgPSBMaXN0ZW5lcjtcbiAgTGlzdGVuZXIgPSBPd25lciA9IG5vZGU7XG4gIHRyeSB7XG4gICAgbmV4dFZhbHVlID0gbm9kZS5mbih2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChub2RlLnB1cmUpIHtcbiAgICAgIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZykge1xuICAgICAgICBub2RlLnRTdGF0ZSA9IFNUQUxFO1xuICAgICAgICBub2RlLnRPd25lZCAmJiBub2RlLnRPd25lZC5mb3JFYWNoKGNsZWFuTm9kZSk7XG4gICAgICAgIG5vZGUudE93bmVkID0gdm9pZCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5zdGF0ZSA9IFNUQUxFO1xuICAgICAgICBub2RlLm93bmVkICYmIG5vZGUub3duZWQuZm9yRWFjaChjbGVhbk5vZGUpO1xuICAgICAgICBub2RlLm93bmVkID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbm9kZS51cGRhdGVkQXQgPSB0aW1lICsgMTtcbiAgICByZXR1cm4gaGFuZGxlRXJyb3IoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBMaXN0ZW5lciA9IGxpc3RlbmVyO1xuICAgIE93bmVyID0gb3duZXI7XG4gIH1cbiAgaWYgKCFub2RlLnVwZGF0ZWRBdCB8fCBub2RlLnVwZGF0ZWRBdCA8PSB0aW1lKSB7XG4gICAgaWYgKG5vZGUudXBkYXRlZEF0ICE9IG51bGwgJiYgXCJvYnNlcnZlcnNcIiBpbiBub2RlKSB7XG4gICAgICB3cml0ZVNpZ25hbChub2RlLCBuZXh0VmFsdWUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAoVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcgJiYgbm9kZS5wdXJlKSB7XG4gICAgICBUcmFuc2l0aW9uLnNvdXJjZXMuYWRkKG5vZGUpO1xuICAgICAgbm9kZS50VmFsdWUgPSBuZXh0VmFsdWU7XG4gICAgfSBlbHNlIG5vZGUudmFsdWUgPSBuZXh0VmFsdWU7XG4gICAgbm9kZS51cGRhdGVkQXQgPSB0aW1lO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVDb21wdXRhdGlvbihmbiwgaW5pdCwgcHVyZSwgc3RhdGUgPSBTVEFMRSwgb3B0aW9ucykge1xuICBjb25zdCBjID0ge1xuICAgIGZuLFxuICAgIHN0YXRlLFxuICAgIHVwZGF0ZWRBdDogbnVsbCxcbiAgICBvd25lZDogbnVsbCxcbiAgICBzb3VyY2VzOiBudWxsLFxuICAgIHNvdXJjZVNsb3RzOiBudWxsLFxuICAgIGNsZWFudXBzOiBudWxsLFxuICAgIHZhbHVlOiBpbml0LFxuICAgIG93bmVyOiBPd25lcixcbiAgICBjb250ZXh0OiBPd25lciA/IE93bmVyLmNvbnRleHQgOiBudWxsLFxuICAgIHB1cmVcbiAgfTtcbiAgaWYgKFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSB7XG4gICAgYy5zdGF0ZSA9IDA7XG4gICAgYy50U3RhdGUgPSBzdGF0ZTtcbiAgfVxuICBpZiAoT3duZXIgPT09IG51bGwpIDtcbiAgZWxzZSBpZiAoT3duZXIgIT09IFVOT1dORUQpIHtcbiAgICBpZiAoVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcgJiYgT3duZXIucHVyZSkge1xuICAgICAgaWYgKCFPd25lci50T3duZWQpIE93bmVyLnRPd25lZCA9IFtjXTtcbiAgICAgIGVsc2UgT3duZXIudE93bmVkLnB1c2goYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghT3duZXIub3duZWQpIE93bmVyLm93bmVkID0gW2NdO1xuICAgICAgZWxzZSBPd25lci5vd25lZC5wdXNoKGMpO1xuICAgIH1cbiAgfVxuICBpZiAoRXh0ZXJuYWxTb3VyY2VDb25maWcgJiYgYy5mbikge1xuICAgIGNvbnN0IFt0cmFjaywgdHJpZ2dlcl0gPSBjcmVhdGVTaWduYWwodm9pZCAwLCB7XG4gICAgICBlcXVhbHM6IGZhbHNlXG4gICAgfSk7XG4gICAgY29uc3Qgb3JkaW5hcnkgPSBFeHRlcm5hbFNvdXJjZUNvbmZpZy5mYWN0b3J5KGMuZm4sIHRyaWdnZXIpO1xuICAgIG9uQ2xlYW51cCgoKSA9PiBvcmRpbmFyeS5kaXNwb3NlKCkpO1xuICAgIGNvbnN0IHRyaWdnZXJJblRyYW5zaXRpb24gPSAoKSA9PiBzdGFydFRyYW5zaXRpb24odHJpZ2dlcikudGhlbigoKSA9PiBpblRyYW5zaXRpb24uZGlzcG9zZSgpKTtcbiAgICBjb25zdCBpblRyYW5zaXRpb24gPSBFeHRlcm5hbFNvdXJjZUNvbmZpZy5mYWN0b3J5KGMuZm4sIHRyaWdnZXJJblRyYW5zaXRpb24pO1xuICAgIGMuZm4gPSAoeCkgPT4ge1xuICAgICAgdHJhY2soKTtcbiAgICAgIHJldHVybiBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyA/IGluVHJhbnNpdGlvbi50cmFjayh4KSA6IG9yZGluYXJ5LnRyYWNrKHgpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGM7XG59XG5mdW5jdGlvbiBydW5Ub3Aobm9kZSkge1xuICBjb25zdCBydW5uaW5nVHJhbnNpdGlvbiA9IFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nO1xuICBpZiAoKHJ1bm5pbmdUcmFuc2l0aW9uID8gbm9kZS50U3RhdGUgOiBub2RlLnN0YXRlKSA9PT0gMCkgcmV0dXJuO1xuICBpZiAoKHJ1bm5pbmdUcmFuc2l0aW9uID8gbm9kZS50U3RhdGUgOiBub2RlLnN0YXRlKSA9PT0gUEVORElORykgcmV0dXJuIGxvb2tVcHN0cmVhbShub2RlKTtcbiAgaWYgKG5vZGUuc3VzcGVuc2UgJiYgdW50cmFjayhub2RlLnN1c3BlbnNlLmluRmFsbGJhY2spKSByZXR1cm4gbm9kZS5zdXNwZW5zZS5lZmZlY3RzLnB1c2gobm9kZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IFtub2RlXTtcbiAgd2hpbGUgKChub2RlID0gbm9kZS5vd25lcikgJiYgKCFub2RlLnVwZGF0ZWRBdCB8fCBub2RlLnVwZGF0ZWRBdCA8IEV4ZWNDb3VudCkpIHtcbiAgICBpZiAocnVubmluZ1RyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5kaXNwb3NlZC5oYXMobm9kZSkpIHJldHVybjtcbiAgICBpZiAocnVubmluZ1RyYW5zaXRpb24gPyBub2RlLnRTdGF0ZSA6IG5vZGUuc3RhdGUpIGFuY2VzdG9ycy5wdXNoKG5vZGUpO1xuICB9XG4gIGZvciAobGV0IGkgPSBhbmNlc3RvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBub2RlID0gYW5jZXN0b3JzW2ldO1xuICAgIGlmIChydW5uaW5nVHJhbnNpdGlvbikge1xuICAgICAgbGV0IHRvcCA9IG5vZGUsIHByZXYgPSBhbmNlc3RvcnNbaSArIDFdO1xuICAgICAgd2hpbGUgKCh0b3AgPSB0b3Aub3duZXIpICYmIHRvcCAhPT0gcHJldikge1xuICAgICAgICBpZiAoVHJhbnNpdGlvbi5kaXNwb3NlZC5oYXModG9wKSkgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoKHJ1bm5pbmdUcmFuc2l0aW9uID8gbm9kZS50U3RhdGUgOiBub2RlLnN0YXRlKSA9PT0gU1RBTEUpIHtcbiAgICAgIHVwZGF0ZUNvbXB1dGF0aW9uKG5vZGUpO1xuICAgIH0gZWxzZSBpZiAoKHJ1bm5pbmdUcmFuc2l0aW9uID8gbm9kZS50U3RhdGUgOiBub2RlLnN0YXRlKSA9PT0gUEVORElORykge1xuICAgICAgY29uc3QgdXBkYXRlcyA9IFVwZGF0ZXM7XG4gICAgICBVcGRhdGVzID0gbnVsbDtcbiAgICAgIHJ1blVwZGF0ZXMoKCkgPT4gbG9va1Vwc3RyZWFtKG5vZGUsIGFuY2VzdG9yc1swXSksIGZhbHNlKTtcbiAgICAgIFVwZGF0ZXMgPSB1cGRhdGVzO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcnVuVXBkYXRlcyhmbiwgaW5pdCkge1xuICBpZiAoVXBkYXRlcykgcmV0dXJuIGZuKCk7XG4gIGxldCB3YWl0ID0gZmFsc2U7XG4gIGlmICghaW5pdCkgVXBkYXRlcyA9IFtdO1xuICBpZiAoRWZmZWN0cykgd2FpdCA9IHRydWU7XG4gIGVsc2UgRWZmZWN0cyA9IFtdO1xuICBFeGVjQ291bnQrKztcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBmbigpO1xuICAgIGNvbXBsZXRlVXBkYXRlcyh3YWl0KTtcbiAgICByZXR1cm4gcmVzO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIXdhaXQpIEVmZmVjdHMgPSBudWxsO1xuICAgIFVwZGF0ZXMgPSBudWxsO1xuICAgIGhhbmRsZUVycm9yKGVycik7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbXBsZXRlVXBkYXRlcyh3YWl0KSB7XG4gIGlmIChVcGRhdGVzKSB7XG4gICAgaWYgKFNjaGVkdWxlciAmJiBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZykgc2NoZWR1bGVRdWV1ZShVcGRhdGVzKTtcbiAgICBlbHNlIHJ1blF1ZXVlKFVwZGF0ZXMpO1xuICAgIFVwZGF0ZXMgPSBudWxsO1xuICB9XG4gIGlmICh3YWl0KSByZXR1cm47XG4gIGxldCByZXM7XG4gIGlmIChUcmFuc2l0aW9uKSB7XG4gICAgaWYgKCFUcmFuc2l0aW9uLnByb21pc2VzLnNpemUgJiYgIVRyYW5zaXRpb24ucXVldWUuc2l6ZSkge1xuICAgICAgY29uc3Qgc291cmNlcyA9IFRyYW5zaXRpb24uc291cmNlcztcbiAgICAgIGNvbnN0IGRpc3Bvc2VkID0gVHJhbnNpdGlvbi5kaXNwb3NlZDtcbiAgICAgIEVmZmVjdHMucHVzaC5hcHBseShFZmZlY3RzLCBUcmFuc2l0aW9uLmVmZmVjdHMpO1xuICAgICAgcmVzID0gVHJhbnNpdGlvbi5yZXNvbHZlO1xuICAgICAgZm9yIChjb25zdCBlMiBvZiBFZmZlY3RzKSB7XG4gICAgICAgIFwidFN0YXRlXCIgaW4gZTIgJiYgKGUyLnN0YXRlID0gZTIudFN0YXRlKTtcbiAgICAgICAgZGVsZXRlIGUyLnRTdGF0ZTtcbiAgICAgIH1cbiAgICAgIFRyYW5zaXRpb24gPSBudWxsO1xuICAgICAgcnVuVXBkYXRlcygoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZCBvZiBkaXNwb3NlZCkgY2xlYW5Ob2RlKGQpO1xuICAgICAgICBmb3IgKGNvbnN0IHYgb2Ygc291cmNlcykge1xuICAgICAgICAgIHYudmFsdWUgPSB2LnRWYWx1ZTtcbiAgICAgICAgICBpZiAodi5vd25lZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHYub3duZWQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIGNsZWFuTm9kZSh2Lm93bmVkW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHYudE93bmVkKSB2Lm93bmVkID0gdi50T3duZWQ7XG4gICAgICAgICAgZGVsZXRlIHYudFZhbHVlO1xuICAgICAgICAgIGRlbGV0ZSB2LnRPd25lZDtcbiAgICAgICAgICB2LnRTdGF0ZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VHJhbnNQZW5kaW5nKGZhbHNlKTtcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKFRyYW5zaXRpb24ucnVubmluZykge1xuICAgICAgVHJhbnNpdGlvbi5ydW5uaW5nID0gZmFsc2U7XG4gICAgICBUcmFuc2l0aW9uLmVmZmVjdHMucHVzaC5hcHBseShUcmFuc2l0aW9uLmVmZmVjdHMsIEVmZmVjdHMpO1xuICAgICAgRWZmZWN0cyA9IG51bGw7XG4gICAgICBzZXRUcmFuc1BlbmRpbmcodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGNvbnN0IGUgPSBFZmZlY3RzO1xuICBFZmZlY3RzID0gbnVsbDtcbiAgaWYgKGUubGVuZ3RoKSBydW5VcGRhdGVzKCgpID0+IHJ1bkVmZmVjdHMoZSksIGZhbHNlKTtcbiAgaWYgKHJlcykgcmVzKCk7XG59XG5mdW5jdGlvbiBydW5RdWV1ZShxdWV1ZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSBydW5Ub3AocXVldWVbaV0pO1xufVxuZnVuY3Rpb24gc2NoZWR1bGVRdWV1ZShxdWV1ZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgaXRlbSA9IHF1ZXVlW2ldO1xuICAgIGNvbnN0IHRhc2tzID0gVHJhbnNpdGlvbi5xdWV1ZTtcbiAgICBpZiAoIXRhc2tzLmhhcyhpdGVtKSkge1xuICAgICAgdGFza3MuYWRkKGl0ZW0pO1xuICAgICAgU2NoZWR1bGVyKCgpID0+IHtcbiAgICAgICAgdGFza3MuZGVsZXRlKGl0ZW0pO1xuICAgICAgICBydW5VcGRhdGVzKCgpID0+IHtcbiAgICAgICAgICBUcmFuc2l0aW9uLnJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICAgIHJ1blRvcChpdGVtKTtcbiAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgICBUcmFuc2l0aW9uICYmIChUcmFuc2l0aW9uLnJ1bm5pbmcgPSBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHJ1blVzZXJFZmZlY3RzKHF1ZXVlKSB7XG4gIGxldCBpLCB1c2VyTGVuZ3RoID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZSA9IHF1ZXVlW2ldO1xuICAgIGlmICghZS51c2VyKSBydW5Ub3AoZSk7XG4gICAgZWxzZSBxdWV1ZVt1c2VyTGVuZ3RoKytdID0gZTtcbiAgfVxuICBpZiAoc2hhcmVkQ29uZmlnLmNvbnRleHQpIHtcbiAgICBpZiAoc2hhcmVkQ29uZmlnLmNvdW50KSB7XG4gICAgICBzaGFyZWRDb25maWcuZWZmZWN0cyB8fCAoc2hhcmVkQ29uZmlnLmVmZmVjdHMgPSBbXSk7XG4gICAgICBzaGFyZWRDb25maWcuZWZmZWN0cy5wdXNoKC4uLnF1ZXVlLnNsaWNlKDAsIHVzZXJMZW5ndGgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0SHlkcmF0ZUNvbnRleHQoKTtcbiAgfVxuICBpZiAoc2hhcmVkQ29uZmlnLmVmZmVjdHMgJiYgKHNoYXJlZENvbmZpZy5kb25lIHx8ICFzaGFyZWRDb25maWcuY291bnQpKSB7XG4gICAgcXVldWUgPSBbLi4uc2hhcmVkQ29uZmlnLmVmZmVjdHMsIC4uLnF1ZXVlXTtcbiAgICB1c2VyTGVuZ3RoICs9IHNoYXJlZENvbmZpZy5lZmZlY3RzLmxlbmd0aDtcbiAgICBkZWxldGUgc2hhcmVkQ29uZmlnLmVmZmVjdHM7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IHVzZXJMZW5ndGg7IGkrKykgcnVuVG9wKHF1ZXVlW2ldKTtcbn1cbmZ1bmN0aW9uIGxvb2tVcHN0cmVhbShub2RlLCBpZ25vcmUpIHtcbiAgY29uc3QgcnVubmluZ1RyYW5zaXRpb24gPSBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZztcbiAgaWYgKHJ1bm5pbmdUcmFuc2l0aW9uKSBub2RlLnRTdGF0ZSA9IDA7XG4gIGVsc2Ugbm9kZS5zdGF0ZSA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5zb3VyY2VzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3Qgc291cmNlID0gbm9kZS5zb3VyY2VzW2ldO1xuICAgIGlmIChzb3VyY2Uuc291cmNlcykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBydW5uaW5nVHJhbnNpdGlvbiA/IHNvdXJjZS50U3RhdGUgOiBzb3VyY2Uuc3RhdGU7XG4gICAgICBpZiAoc3RhdGUgPT09IFNUQUxFKSB7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IGlnbm9yZSAmJiAoIXNvdXJjZS51cGRhdGVkQXQgfHwgc291cmNlLnVwZGF0ZWRBdCA8IEV4ZWNDb3VudCkpXG4gICAgICAgICAgcnVuVG9wKHNvdXJjZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBQRU5ESU5HKSBsb29rVXBzdHJlYW0oc291cmNlLCBpZ25vcmUpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gbWFya0Rvd25zdHJlYW0obm9kZSkge1xuICBjb25zdCBydW5uaW5nVHJhbnNpdGlvbiA9IFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUub2JzZXJ2ZXJzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgbyA9IG5vZGUub2JzZXJ2ZXJzW2ldO1xuICAgIGlmIChydW5uaW5nVHJhbnNpdGlvbiA/ICFvLnRTdGF0ZSA6ICFvLnN0YXRlKSB7XG4gICAgICBpZiAocnVubmluZ1RyYW5zaXRpb24pIG8udFN0YXRlID0gUEVORElORztcbiAgICAgIGVsc2Ugby5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgICBpZiAoby5wdXJlKSBVcGRhdGVzLnB1c2gobyk7XG4gICAgICBlbHNlIEVmZmVjdHMucHVzaChvKTtcbiAgICAgIG8ub2JzZXJ2ZXJzICYmIG1hcmtEb3duc3RyZWFtKG8pO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY2xlYW5Ob2RlKG5vZGUpIHtcbiAgbGV0IGk7XG4gIGlmIChub2RlLnNvdXJjZXMpIHtcbiAgICB3aGlsZSAobm9kZS5zb3VyY2VzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc291cmNlID0gbm9kZS5zb3VyY2VzLnBvcCgpLCBpbmRleCA9IG5vZGUuc291cmNlU2xvdHMucG9wKCksIG9icyA9IHNvdXJjZS5vYnNlcnZlcnM7XG4gICAgICBpZiAob2JzICYmIG9icy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbiA9IG9icy5wb3AoKSwgcyA9IHNvdXJjZS5vYnNlcnZlclNsb3RzLnBvcCgpO1xuICAgICAgICBpZiAoaW5kZXggPCBvYnMubGVuZ3RoKSB7XG4gICAgICAgICAgbi5zb3VyY2VTbG90c1tzXSA9IGluZGV4O1xuICAgICAgICAgIG9ic1tpbmRleF0gPSBuO1xuICAgICAgICAgIHNvdXJjZS5vYnNlcnZlclNsb3RzW2luZGV4XSA9IHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKG5vZGUudE93bmVkKSB7XG4gICAgZm9yIChpID0gbm9kZS50T3duZWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGNsZWFuTm9kZShub2RlLnRPd25lZFtpXSk7XG4gICAgZGVsZXRlIG5vZGUudE93bmVkO1xuICB9XG4gIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyAmJiBub2RlLnB1cmUpIHtcbiAgICByZXNldChub2RlLCB0cnVlKTtcbiAgfSBlbHNlIGlmIChub2RlLm93bmVkKSB7XG4gICAgZm9yIChpID0gbm9kZS5vd25lZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgY2xlYW5Ob2RlKG5vZGUub3duZWRbaV0pO1xuICAgIG5vZGUub3duZWQgPSBudWxsO1xuICB9XG4gIGlmIChub2RlLmNsZWFudXBzKSB7XG4gICAgZm9yIChpID0gbm9kZS5jbGVhbnVwcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgbm9kZS5jbGVhbnVwc1tpXSgpO1xuICAgIG5vZGUuY2xlYW51cHMgPSBudWxsO1xuICB9XG4gIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZykgbm9kZS50U3RhdGUgPSAwO1xuICBlbHNlIG5vZGUuc3RhdGUgPSAwO1xufVxuZnVuY3Rpb24gcmVzZXQobm9kZSwgdG9wKSB7XG4gIGlmICghdG9wKSB7XG4gICAgbm9kZS50U3RhdGUgPSAwO1xuICAgIFRyYW5zaXRpb24uZGlzcG9zZWQuYWRkKG5vZGUpO1xuICB9XG4gIGlmIChub2RlLm93bmVkKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm93bmVkLmxlbmd0aDsgaSsrKSByZXNldChub2RlLm93bmVkW2ldKTtcbiAgfVxufVxuZnVuY3Rpb24gY2FzdEVycm9yKGVycikge1xuICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiBlcnI7XG4gIHJldHVybiBuZXcgRXJyb3IodHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIiA/IGVyciA6IFwiVW5rbm93biBlcnJvclwiLCB7XG4gICAgY2F1c2U6IGVyclxuICB9KTtcbn1cbmZ1bmN0aW9uIHJ1bkVycm9ycyhlcnIsIGZucywgb3duZXIpIHtcbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IGYgb2YgZm5zKSBmKGVycik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCBvd25lciAmJiBvd25lci5vd25lciB8fCBudWxsKTtcbiAgfVxufVxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyLCBvd25lciA9IE93bmVyKSB7XG4gIGNvbnN0IGZucyA9IEVSUk9SICYmIG93bmVyICYmIG93bmVyLmNvbnRleHQgJiYgb3duZXIuY29udGV4dFtFUlJPUl07XG4gIGNvbnN0IGVycm9yID0gY2FzdEVycm9yKGVycik7XG4gIGlmICghZm5zKSB0aHJvdyBlcnJvcjtcbiAgaWYgKEVmZmVjdHMpXG4gICAgRWZmZWN0cy5wdXNoKHtcbiAgICAgIGZuKCkge1xuICAgICAgICBydW5FcnJvcnMoZXJyb3IsIGZucywgb3duZXIpO1xuICAgICAgfSxcbiAgICAgIHN0YXRlOiBTVEFMRVxuICAgIH0pO1xuICBlbHNlIHJ1bkVycm9ycyhlcnJvciwgZm5zLCBvd25lcik7XG59XG5mdW5jdGlvbiByZXNvbHZlQ2hpbGRyZW4oY2hpbGRyZW4yKSB7XG4gIGlmICh0eXBlb2YgY2hpbGRyZW4yID09PSBcImZ1bmN0aW9uXCIgJiYgIWNoaWxkcmVuMi5sZW5ndGgpIHJldHVybiByZXNvbHZlQ2hpbGRyZW4oY2hpbGRyZW4yKCkpO1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbjIpKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4yLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlQ2hpbGRyZW4oY2hpbGRyZW4yW2ldKTtcbiAgICAgIEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdHMucHVzaC5hcHBseShyZXN1bHRzLCByZXN1bHQpIDogcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG4gIHJldHVybiBjaGlsZHJlbjI7XG59XG5mdW5jdGlvbiBjcmVhdGVQcm92aWRlcihpZCwgb3B0aW9ucykge1xuICByZXR1cm4gZnVuY3Rpb24gcHJvdmlkZXIocHJvcHMpIHtcbiAgICBsZXQgcmVzO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdChcbiAgICAgICgpID0+IHJlcyA9IHVudHJhY2soKCkgPT4ge1xuICAgICAgICBPd25lci5jb250ZXh0ID0ge1xuICAgICAgICAgIC4uLk93bmVyLmNvbnRleHQsXG4gICAgICAgICAgW2lkXTogcHJvcHMudmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKCgpID0+IHByb3BzLmNoaWxkcmVuKTtcbiAgICAgIH0pLFxuICAgICAgdm9pZCAwXG4gICAgKTtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xufVxudmFyIEZBTExCQUNLID0gU3ltYm9sKFwiZmFsbGJhY2tcIik7XG5mdW5jdGlvbiBkaXNwb3NlKGQpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkLmxlbmd0aDsgaSsrKSBkW2ldKCk7XG59XG5mdW5jdGlvbiBtYXBBcnJheShsaXN0LCBtYXBGbiwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBpdGVtcyA9IFtdLCBtYXBwZWQgPSBbXSwgZGlzcG9zZXJzID0gW10sIGxlbiA9IDAsIGluZGV4ZXMgPSBtYXBGbi5sZW5ndGggPiAxID8gW10gOiBudWxsO1xuICBvbkNsZWFudXAoKCkgPT4gZGlzcG9zZShkaXNwb3NlcnMpKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBsZXQgbmV3SXRlbXMgPSBsaXN0KCkgfHwgW10sIG5ld0xlbiA9IG5ld0l0ZW1zLmxlbmd0aCwgaSwgajtcbiAgICBuZXdJdGVtc1skVFJBQ0tdO1xuICAgIHJldHVybiB1bnRyYWNrKCgpID0+IHtcbiAgICAgIGxldCBuZXdJbmRpY2VzLCBuZXdJbmRpY2VzTmV4dCwgdGVtcCwgdGVtcGRpc3Bvc2VycywgdGVtcEluZGV4ZXMsIHN0YXJ0LCBlbmQsIG5ld0VuZCwgaXRlbTtcbiAgICAgIGlmIChuZXdMZW4gPT09IDApIHtcbiAgICAgICAgaWYgKGxlbiAhPT0gMCkge1xuICAgICAgICAgIGRpc3Bvc2UoZGlzcG9zZXJzKTtcbiAgICAgICAgICBkaXNwb3NlcnMgPSBbXTtcbiAgICAgICAgICBpdGVtcyA9IFtdO1xuICAgICAgICAgIG1hcHBlZCA9IFtdO1xuICAgICAgICAgIGxlbiA9IDA7XG4gICAgICAgICAgaW5kZXhlcyAmJiAoaW5kZXhlcyA9IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5mYWxsYmFjaykge1xuICAgICAgICAgIGl0ZW1zID0gW0ZBTExCQUNLXTtcbiAgICAgICAgICBtYXBwZWRbMF0gPSBjcmVhdGVSb290KChkaXNwb3NlcikgPT4ge1xuICAgICAgICAgICAgZGlzcG9zZXJzWzBdID0gZGlzcG9zZXI7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mYWxsYmFjaygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxlbiA9IDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGVuID09PSAwKSB7XG4gICAgICAgIG1hcHBlZCA9IG5ldyBBcnJheShuZXdMZW4pO1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgbmV3TGVuOyBqKyspIHtcbiAgICAgICAgICBpdGVtc1tqXSA9IG5ld0l0ZW1zW2pdO1xuICAgICAgICAgIG1hcHBlZFtqXSA9IGNyZWF0ZVJvb3QobWFwcGVyKTtcbiAgICAgICAgfVxuICAgICAgICBsZW4gPSBuZXdMZW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZW1wID0gbmV3IEFycmF5KG5ld0xlbik7XG4gICAgICAgIHRlbXBkaXNwb3NlcnMgPSBuZXcgQXJyYXkobmV3TGVuKTtcbiAgICAgICAgaW5kZXhlcyAmJiAodGVtcEluZGV4ZXMgPSBuZXcgQXJyYXkobmV3TGVuKSk7XG4gICAgICAgIGZvciAoc3RhcnQgPSAwLCBlbmQgPSBNYXRoLm1pbihsZW4sIG5ld0xlbik7IHN0YXJ0IDwgZW5kICYmIGl0ZW1zW3N0YXJ0XSA9PT0gbmV3SXRlbXNbc3RhcnRdOyBzdGFydCsrKSA7XG4gICAgICAgIGZvciAoZW5kID0gbGVuIC0gMSwgbmV3RW5kID0gbmV3TGVuIC0gMTsgZW5kID49IHN0YXJ0ICYmIG5ld0VuZCA+PSBzdGFydCAmJiBpdGVtc1tlbmRdID09PSBuZXdJdGVtc1tuZXdFbmRdOyBlbmQtLSwgbmV3RW5kLS0pIHtcbiAgICAgICAgICB0ZW1wW25ld0VuZF0gPSBtYXBwZWRbZW5kXTtcbiAgICAgICAgICB0ZW1wZGlzcG9zZXJzW25ld0VuZF0gPSBkaXNwb3NlcnNbZW5kXTtcbiAgICAgICAgICBpbmRleGVzICYmICh0ZW1wSW5kZXhlc1tuZXdFbmRdID0gaW5kZXhlc1tlbmRdKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdJbmRpY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgICAgbmV3SW5kaWNlc05leHQgPSBuZXcgQXJyYXkobmV3RW5kICsgMSk7XG4gICAgICAgIGZvciAoaiA9IG5ld0VuZDsgaiA+PSBzdGFydDsgai0tKSB7XG4gICAgICAgICAgaXRlbSA9IG5ld0l0ZW1zW2pdO1xuICAgICAgICAgIGkgPSBuZXdJbmRpY2VzLmdldChpdGVtKTtcbiAgICAgICAgICBuZXdJbmRpY2VzTmV4dFtqXSA9IGkgPT09IHZvaWQgMCA/IC0xIDogaTtcbiAgICAgICAgICBuZXdJbmRpY2VzLnNldChpdGVtLCBqKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgICBqID0gbmV3SW5kaWNlcy5nZXQoaXRlbSk7XG4gICAgICAgICAgaWYgKGogIT09IHZvaWQgMCAmJiBqICE9PSAtMSkge1xuICAgICAgICAgICAgdGVtcFtqXSA9IG1hcHBlZFtpXTtcbiAgICAgICAgICAgIHRlbXBkaXNwb3NlcnNbal0gPSBkaXNwb3NlcnNbaV07XG4gICAgICAgICAgICBpbmRleGVzICYmICh0ZW1wSW5kZXhlc1tqXSA9IGluZGV4ZXNbaV0pO1xuICAgICAgICAgICAgaiA9IG5ld0luZGljZXNOZXh0W2pdO1xuICAgICAgICAgICAgbmV3SW5kaWNlcy5zZXQoaXRlbSwgaik7XG4gICAgICAgICAgfSBlbHNlIGRpc3Bvc2Vyc1tpXSgpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaiA9IHN0YXJ0OyBqIDwgbmV3TGVuOyBqKyspIHtcbiAgICAgICAgICBpZiAoaiBpbiB0ZW1wKSB7XG4gICAgICAgICAgICBtYXBwZWRbal0gPSB0ZW1wW2pdO1xuICAgICAgICAgICAgZGlzcG9zZXJzW2pdID0gdGVtcGRpc3Bvc2Vyc1tqXTtcbiAgICAgICAgICAgIGlmIChpbmRleGVzKSB7XG4gICAgICAgICAgICAgIGluZGV4ZXNbal0gPSB0ZW1wSW5kZXhlc1tqXTtcbiAgICAgICAgICAgICAgaW5kZXhlc1tqXShqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgbWFwcGVkW2pdID0gY3JlYXRlUm9vdChtYXBwZXIpO1xuICAgICAgICB9XG4gICAgICAgIG1hcHBlZCA9IG1hcHBlZC5zbGljZSgwLCBsZW4gPSBuZXdMZW4pO1xuICAgICAgICBpdGVtcyA9IG5ld0l0ZW1zLnNsaWNlKDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcHBlZDtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBtYXBwZXIoZGlzcG9zZXIpIHtcbiAgICAgIGRpc3Bvc2Vyc1tqXSA9IGRpc3Bvc2VyO1xuICAgICAgaWYgKGluZGV4ZXMpIHtcbiAgICAgICAgY29uc3QgW3MsIHNldF0gPSBjcmVhdGVTaWduYWwoaik7XG4gICAgICAgIGluZGV4ZXNbal0gPSBzZXQ7XG4gICAgICAgIHJldHVybiBtYXBGbihuZXdJdGVtc1tqXSwgcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwRm4obmV3SXRlbXNbal0pO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGluZGV4QXJyYXkobGlzdCwgbWFwRm4sIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgaXRlbXMgPSBbXSwgbWFwcGVkID0gW10sIGRpc3Bvc2VycyA9IFtdLCBzaWduYWxzID0gW10sIGxlbiA9IDAsIGk7XG4gIG9uQ2xlYW51cCgoKSA9PiBkaXNwb3NlKGRpc3Bvc2VycykpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gbGlzdCgpIHx8IFtdLCBuZXdMZW4gPSBuZXdJdGVtcy5sZW5ndGg7XG4gICAgbmV3SXRlbXNbJFRSQUNLXTtcbiAgICByZXR1cm4gdW50cmFjaygoKSA9PiB7XG4gICAgICBpZiAobmV3TGVuID09PSAwKSB7XG4gICAgICAgIGlmIChsZW4gIT09IDApIHtcbiAgICAgICAgICBkaXNwb3NlKGRpc3Bvc2Vycyk7XG4gICAgICAgICAgZGlzcG9zZXJzID0gW107XG4gICAgICAgICAgaXRlbXMgPSBbXTtcbiAgICAgICAgICBtYXBwZWQgPSBbXTtcbiAgICAgICAgICBsZW4gPSAwO1xuICAgICAgICAgIHNpZ25hbHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5mYWxsYmFjaykge1xuICAgICAgICAgIGl0ZW1zID0gW0ZBTExCQUNLXTtcbiAgICAgICAgICBtYXBwZWRbMF0gPSBjcmVhdGVSb290KChkaXNwb3NlcikgPT4ge1xuICAgICAgICAgICAgZGlzcG9zZXJzWzBdID0gZGlzcG9zZXI7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mYWxsYmFjaygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxlbiA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcHBlZDtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtc1swXSA9PT0gRkFMTEJBQ0spIHtcbiAgICAgICAgZGlzcG9zZXJzWzBdKCk7XG4gICAgICAgIGRpc3Bvc2VycyA9IFtdO1xuICAgICAgICBpdGVtcyA9IFtdO1xuICAgICAgICBtYXBwZWQgPSBbXTtcbiAgICAgICAgbGVuID0gMDtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXdMZW47IGkrKykge1xuICAgICAgICBpZiAoaSA8IGl0ZW1zLmxlbmd0aCAmJiBpdGVtc1tpXSAhPT0gbmV3SXRlbXNbaV0pIHtcbiAgICAgICAgICBzaWduYWxzW2ldKCgpID0+IG5ld0l0ZW1zW2ldKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID49IGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIG1hcHBlZFtpXSA9IGNyZWF0ZVJvb3QobWFwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yICg7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkaXNwb3NlcnNbaV0oKTtcbiAgICAgIH1cbiAgICAgIGxlbiA9IHNpZ25hbHMubGVuZ3RoID0gZGlzcG9zZXJzLmxlbmd0aCA9IG5ld0xlbjtcbiAgICAgIGl0ZW1zID0gbmV3SXRlbXMuc2xpY2UoMCk7XG4gICAgICByZXR1cm4gbWFwcGVkID0gbWFwcGVkLnNsaWNlKDAsIGxlbik7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gbWFwcGVyKGRpc3Bvc2VyKSB7XG4gICAgICBkaXNwb3NlcnNbaV0gPSBkaXNwb3NlcjtcbiAgICAgIGNvbnN0IFtzLCBzZXRdID0gY3JlYXRlU2lnbmFsKG5ld0l0ZW1zW2ldKTtcbiAgICAgIHNpZ25hbHNbaV0gPSBzZXQ7XG4gICAgICByZXR1cm4gbWFwRm4ocywgaSk7XG4gICAgfVxuICB9O1xufVxudmFyIGh5ZHJhdGlvbkVuYWJsZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudChDb21wLCBwcm9wcykge1xuICBpZiAoaHlkcmF0aW9uRW5hYmxlZCkge1xuICAgIGlmIChzaGFyZWRDb25maWcuY29udGV4dCkge1xuICAgICAgY29uc3QgYyA9IHNoYXJlZENvbmZpZy5jb250ZXh0O1xuICAgICAgc2V0SHlkcmF0ZUNvbnRleHQobmV4dEh5ZHJhdGVDb250ZXh0KCkpO1xuICAgICAgY29uc3QgciA9IHVudHJhY2soKCkgPT4gQ29tcChwcm9wcyB8fCB7fSkpO1xuICAgICAgc2V0SHlkcmF0ZUNvbnRleHQoYyk7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVudHJhY2soKCkgPT4gQ29tcChwcm9wcyB8fCB7fSkpO1xufVxuZnVuY3Rpb24gdHJ1ZUZuKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cbnZhciBwcm9wVHJhcHMgPSB7XG4gIGdldChfLCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHtcbiAgICBpZiAocHJvcGVydHkgPT09ICRQUk9YWSkgcmV0dXJuIHJlY2VpdmVyO1xuICAgIHJldHVybiBfLmdldChwcm9wZXJ0eSk7XG4gIH0sXG4gIGhhcyhfLCBwcm9wZXJ0eSkge1xuICAgIGlmIChwcm9wZXJ0eSA9PT0gJFBST1hZKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gXy5oYXMocHJvcGVydHkpO1xuICB9LFxuICBzZXQ6IHRydWVGbixcbiAgZGVsZXRlUHJvcGVydHk6IHRydWVGbixcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF8sIHByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBfLmdldChwcm9wZXJ0eSk7XG4gICAgICB9LFxuICAgICAgc2V0OiB0cnVlRm4sXG4gICAgICBkZWxldGVQcm9wZXJ0eTogdHJ1ZUZuXG4gICAgfTtcbiAgfSxcbiAgb3duS2V5cyhfKSB7XG4gICAgcmV0dXJuIF8ua2V5cygpO1xuICB9XG59O1xuZnVuY3Rpb24gcmVzb2x2ZVNvdXJjZShzKSB7XG4gIHJldHVybiAhKHMgPSB0eXBlb2YgcyA9PT0gXCJmdW5jdGlvblwiID8gcygpIDogcykgPyB7fSA6IHM7XG59XG5mdW5jdGlvbiByZXNvbHZlU291cmNlcygpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCB2ID0gdGhpc1tpXSgpO1xuICAgIGlmICh2ICE9PSB2b2lkIDApIHJldHVybiB2O1xuICB9XG59XG5mdW5jdGlvbiBtZXJnZVByb3BzKC4uLnNvdXJjZXMpIHtcbiAgbGV0IHByb3h5ID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHMgPSBzb3VyY2VzW2ldO1xuICAgIHByb3h5ID0gcHJveHkgfHwgISFzICYmICRQUk9YWSBpbiBzO1xuICAgIHNvdXJjZXNbaV0gPSB0eXBlb2YgcyA9PT0gXCJmdW5jdGlvblwiID8gKHByb3h5ID0gdHJ1ZSwgY3JlYXRlTWVtbyhzKSkgOiBzO1xuICB9XG4gIGlmIChTVVBQT1JUU19QUk9YWSAmJiBwcm94eSkge1xuICAgIHJldHVybiBuZXcgUHJveHkoXG4gICAgICB7XG4gICAgICAgIGdldChwcm9wZXJ0eSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBzb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gcmVzb2x2ZVNvdXJjZShzb3VyY2VzW2ldKVtwcm9wZXJ0eV07XG4gICAgICAgICAgICBpZiAodiAhPT0gdm9pZCAwKSByZXR1cm4gdjtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyhwcm9wZXJ0eSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBzb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAocHJvcGVydHkgaW4gcmVzb2x2ZVNvdXJjZShzb3VyY2VzW2ldKSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAga2V5cygpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAga2V5cy5wdXNoKC4uLk9iamVjdC5rZXlzKHJlc29sdmVTb3VyY2Uoc291cmNlc1tpXSkpKTtcbiAgICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoa2V5cyldO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJvcFRyYXBzXG4gICAgKTtcbiAgfVxuICBjb25zdCBzb3VyY2VzTWFwID0ge307XG4gIGNvbnN0IGRlZmluZWQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yIChsZXQgaSA9IHNvdXJjZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBzb3VyY2UgPSBzb3VyY2VzW2ldO1xuICAgIGlmICghc291cmNlKSBjb250aW51ZTtcbiAgICBjb25zdCBzb3VyY2VLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlKTtcbiAgICBmb3IgKGxldCBpMiA9IHNvdXJjZUtleXMubGVuZ3RoIC0gMTsgaTIgPj0gMDsgaTItLSkge1xuICAgICAgY29uc3Qga2V5ID0gc291cmNlS2V5c1tpMl07XG4gICAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiIHx8IGtleSA9PT0gXCJjb25zdHJ1Y3RvclwiKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KTtcbiAgICAgIGlmICghZGVmaW5lZFtrZXldKSB7XG4gICAgICAgIGRlZmluZWRba2V5XSA9IGRlc2MuZ2V0ID8ge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogcmVzb2x2ZVNvdXJjZXMuYmluZChzb3VyY2VzTWFwW2tleV0gPSBbZGVzYy5nZXQuYmluZChzb3VyY2UpXSlcbiAgICAgICAgfSA6IGRlc2MudmFsdWUgIT09IHZvaWQgMCA/IGRlc2MgOiB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzb3VyY2VzMiA9IHNvdXJjZXNNYXBba2V5XTtcbiAgICAgICAgaWYgKHNvdXJjZXMyKSB7XG4gICAgICAgICAgaWYgKGRlc2MuZ2V0KSBzb3VyY2VzMi5wdXNoKGRlc2MuZ2V0LmJpbmQoc291cmNlKSk7XG4gICAgICAgICAgZWxzZSBpZiAoZGVzYy52YWx1ZSAhPT0gdm9pZCAwKSBzb3VyY2VzMi5wdXNoKCgpID0+IGRlc2MudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IHRhcmdldCA9IHt9O1xuICBjb25zdCBkZWZpbmVkS2V5cyA9IE9iamVjdC5rZXlzKGRlZmluZWQpO1xuICBmb3IgKGxldCBpID0gZGVmaW5lZEtleXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBrZXkgPSBkZWZpbmVkS2V5c1tpXSwgZGVzYyA9IGRlZmluZWRba2V5XTtcbiAgICBpZiAoZGVzYyAmJiBkZXNjLmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjKTtcbiAgICBlbHNlIHRhcmdldFtrZXldID0gZGVzYyA/IGRlc2MudmFsdWUgOiB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHNwbGl0UHJvcHMocHJvcHMsIC4uLmtleXMpIHtcbiAgaWYgKFNVUFBPUlRTX1BST1hZICYmICRQUk9YWSBpbiBwcm9wcykge1xuICAgIGNvbnN0IGJsb2NrZWQgPSBuZXcgU2V0KGtleXMubGVuZ3RoID4gMSA/IGtleXMuZmxhdCgpIDoga2V5c1swXSk7XG4gICAgY29uc3QgcmVzID0ga2V5cy5tYXAoKGspID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJveHkoXG4gICAgICAgIHtcbiAgICAgICAgICBnZXQocHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiBrLmluY2x1ZGVzKHByb3BlcnR5KSA/IHByb3BzW3Byb3BlcnR5XSA6IHZvaWQgMDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhhcyhwcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuIGsuaW5jbHVkZXMocHJvcGVydHkpICYmIHByb3BlcnR5IGluIHByb3BzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5cygpIHtcbiAgICAgICAgICAgIHJldHVybiBrLmZpbHRlcigocHJvcGVydHkpID0+IHByb3BlcnR5IGluIHByb3BzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByb3BUcmFwc1xuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXMucHVzaChcbiAgICAgIG5ldyBQcm94eShcbiAgICAgICAge1xuICAgICAgICAgIGdldChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrZWQuaGFzKHByb3BlcnR5KSA/IHZvaWQgMCA6IHByb3BzW3Byb3BlcnR5XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhhcyhwcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrZWQuaGFzKHByb3BlcnR5KSA/IGZhbHNlIDogcHJvcGVydHkgaW4gcHJvcHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXlzKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHByb3BzKS5maWx0ZXIoKGspID0+ICFibG9ja2VkLmhhcyhrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcm9wVHJhcHNcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgY29uc3Qgb3RoZXJPYmplY3QgPSB7fTtcbiAgY29uc3Qgb2JqZWN0cyA9IGtleXMubWFwKCgpID0+ICh7fSkpO1xuICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3BzKSkge1xuICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3BzLCBwcm9wTmFtZSk7XG4gICAgY29uc3QgaXNEZWZhdWx0RGVzYyA9ICFkZXNjLmdldCAmJiAhZGVzYy5zZXQgJiYgZGVzYy5lbnVtZXJhYmxlICYmIGRlc2Mud3JpdGFibGUgJiYgZGVzYy5jb25maWd1cmFibGU7XG4gICAgbGV0IGJsb2NrZWQgPSBmYWxzZTtcbiAgICBsZXQgb2JqZWN0SW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICBpZiAoay5pbmNsdWRlcyhwcm9wTmFtZSkpIHtcbiAgICAgICAgYmxvY2tlZCA9IHRydWU7XG4gICAgICAgIGlzRGVmYXVsdERlc2MgPyBvYmplY3RzW29iamVjdEluZGV4XVtwcm9wTmFtZV0gPSBkZXNjLnZhbHVlIDogT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdHNbb2JqZWN0SW5kZXhdLCBwcm9wTmFtZSwgZGVzYyk7XG4gICAgICB9XG4gICAgICArK29iamVjdEluZGV4O1xuICAgIH1cbiAgICBpZiAoIWJsb2NrZWQpIHtcbiAgICAgIGlzRGVmYXVsdERlc2MgPyBvdGhlck9iamVjdFtwcm9wTmFtZV0gPSBkZXNjLnZhbHVlIDogT2JqZWN0LmRlZmluZVByb3BlcnR5KG90aGVyT2JqZWN0LCBwcm9wTmFtZSwgZGVzYyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ub2JqZWN0cywgb3RoZXJPYmplY3RdO1xufVxuZnVuY3Rpb24gbGF6eShmbikge1xuICBsZXQgY29tcDtcbiAgbGV0IHA7XG4gIGNvbnN0IHdyYXAgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBjdHggPSBzaGFyZWRDb25maWcuY29udGV4dDtcbiAgICBpZiAoY3R4KSB7XG4gICAgICBjb25zdCBbcywgc2V0XSA9IGNyZWF0ZVNpZ25hbCgpO1xuICAgICAgc2hhcmVkQ29uZmlnLmNvdW50IHx8IChzaGFyZWRDb25maWcuY291bnQgPSAwKTtcbiAgICAgIHNoYXJlZENvbmZpZy5jb3VudCsrO1xuICAgICAgKHAgfHwgKHAgPSBmbigpKSkudGhlbigobW9kKSA9PiB7XG4gICAgICAgICFzaGFyZWRDb25maWcuZG9uZSAmJiBzZXRIeWRyYXRlQ29udGV4dChjdHgpO1xuICAgICAgICBzaGFyZWRDb25maWcuY291bnQtLTtcbiAgICAgICAgc2V0KCgpID0+IG1vZC5kZWZhdWx0KTtcbiAgICAgICAgc2V0SHlkcmF0ZUNvbnRleHQoKTtcbiAgICAgIH0pO1xuICAgICAgY29tcCA9IHM7XG4gICAgfSBlbHNlIGlmICghY29tcCkge1xuICAgICAgY29uc3QgW3NdID0gY3JlYXRlUmVzb3VyY2UoKCkgPT4gKHAgfHwgKHAgPSBmbigpKSkudGhlbigobW9kKSA9PiBtb2QuZGVmYXVsdCkpO1xuICAgICAgY29tcCA9IHM7XG4gICAgfVxuICAgIGxldCBDb21wO1xuICAgIHJldHVybiBjcmVhdGVNZW1vKFxuICAgICAgKCkgPT4gKENvbXAgPSBjb21wKCkpID8gdW50cmFjaygoKSA9PiB7XG4gICAgICAgIGlmIChJU19ERVYpIDtcbiAgICAgICAgaWYgKCFjdHggfHwgc2hhcmVkQ29uZmlnLmRvbmUpIHJldHVybiBDb21wKHByb3BzKTtcbiAgICAgICAgY29uc3QgYyA9IHNoYXJlZENvbmZpZy5jb250ZXh0O1xuICAgICAgICBzZXRIeWRyYXRlQ29udGV4dChjdHgpO1xuICAgICAgICBjb25zdCByID0gQ29tcChwcm9wcyk7XG4gICAgICAgIHNldEh5ZHJhdGVDb250ZXh0KGMpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pIDogXCJcIlxuICAgICk7XG4gIH07XG4gIHdyYXAucHJlbG9hZCA9ICgpID0+IHAgfHwgKChwID0gZm4oKSkudGhlbigobW9kKSA9PiBjb21wID0gKCkgPT4gbW9kLmRlZmF1bHQpLCBwKTtcbiAgcmV0dXJuIHdyYXA7XG59XG52YXIgY291bnRlciA9IDA7XG5mdW5jdGlvbiBjcmVhdGVVbmlxdWVJZCgpIHtcbiAgY29uc3QgY3R4ID0gc2hhcmVkQ29uZmlnLmNvbnRleHQ7XG4gIHJldHVybiBjdHggPyBzaGFyZWRDb25maWcuZ2V0TmV4dENvbnRleHRJZCgpIDogYGNsLSR7Y291bnRlcisrfWA7XG59XG52YXIgbmFycm93ZWRFcnJvciA9IChuYW1lKSA9PiBgU3RhbGUgcmVhZCBmcm9tIDwke25hbWV9Pi5gO1xuZnVuY3Rpb24gRm9yKHByb3BzKSB7XG4gIGNvbnN0IGZhbGxiYWNrID0gXCJmYWxsYmFja1wiIGluIHByb3BzICYmIHtcbiAgICBmYWxsYmFjazogKCkgPT4gcHJvcHMuZmFsbGJhY2tcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZU1lbW8obWFwQXJyYXkoKCkgPT4gcHJvcHMuZWFjaCwgcHJvcHMuY2hpbGRyZW4sIGZhbGxiYWNrIHx8IHZvaWQgMCkpO1xufVxuZnVuY3Rpb24gSW5kZXgocHJvcHMpIHtcbiAgY29uc3QgZmFsbGJhY2sgPSBcImZhbGxiYWNrXCIgaW4gcHJvcHMgJiYge1xuICAgIGZhbGxiYWNrOiAoKSA9PiBwcm9wcy5mYWxsYmFja1xuICB9O1xuICByZXR1cm4gY3JlYXRlTWVtbyhpbmRleEFycmF5KCgpID0+IHByb3BzLmVhY2gsIHByb3BzLmNoaWxkcmVuLCBmYWxsYmFjayB8fCB2b2lkIDApKTtcbn1cbmZ1bmN0aW9uIFNob3cocHJvcHMpIHtcbiAgY29uc3Qga2V5ZWQgPSBwcm9wcy5rZXllZDtcbiAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSBjcmVhdGVNZW1vKCgpID0+IHByb3BzLndoZW4sIHZvaWQgMCwgdm9pZCAwKTtcbiAgY29uc3QgY29uZGl0aW9uID0ga2V5ZWQgPyBjb25kaXRpb25WYWx1ZSA6IGNyZWF0ZU1lbW8oY29uZGl0aW9uVmFsdWUsIHZvaWQgMCwge1xuICAgIGVxdWFsczogKGEsIGIpID0+ICFhID09PSAhYlxuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgYyA9IGNvbmRpdGlvbigpO1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBwcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgZm4gPSB0eXBlb2YgY2hpbGQgPT09IFwiZnVuY3Rpb25cIiAmJiBjaGlsZC5sZW5ndGggPiAwO1xuICAgICAgICByZXR1cm4gZm4gPyB1bnRyYWNrKFxuICAgICAgICAgICgpID0+IGNoaWxkKFxuICAgICAgICAgICAga2V5ZWQgPyBjIDogKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXVudHJhY2soY29uZGl0aW9uKSkgdGhyb3cgbmFycm93ZWRFcnJvcihcIlNob3dcIik7XG4gICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25WYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKSA6IGNoaWxkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLmZhbGxiYWNrO1xuICAgIH0sXG4gICAgdm9pZCAwLFxuICAgIHZvaWQgMFxuICApO1xufVxuZnVuY3Rpb24gU3dpdGNoKHByb3BzKSB7XG4gIGNvbnN0IGNocyA9IGNoaWxkcmVuKCgpID0+IHByb3BzLmNoaWxkcmVuKTtcbiAgY29uc3Qgc3dpdGNoRnVuYyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNoID0gY2hzKCk7XG4gICAgY29uc3QgbXBzID0gQXJyYXkuaXNBcnJheShjaCkgPyBjaCA6IFtjaF07XG4gICAgbGV0IGZ1bmMgPSAoKSA9PiB2b2lkIDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gaTtcbiAgICAgIGNvbnN0IG1wID0gbXBzW2ldO1xuICAgICAgY29uc3QgcHJldkZ1bmMgPSBmdW5jO1xuICAgICAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSBjcmVhdGVNZW1vKFxuICAgICAgICAoKSA9PiBwcmV2RnVuYygpID8gdm9pZCAwIDogbXAud2hlbixcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICB2b2lkIDBcbiAgICAgICk7XG4gICAgICBjb25zdCBjb25kaXRpb24gPSBtcC5rZXllZCA/IGNvbmRpdGlvblZhbHVlIDogY3JlYXRlTWVtbyhjb25kaXRpb25WYWx1ZSwgdm9pZCAwLCB7XG4gICAgICAgIGVxdWFsczogKGEsIGIpID0+ICFhID09PSAhYlxuICAgICAgfSk7XG4gICAgICBmdW5jID0gKCkgPT4gcHJldkZ1bmMoKSB8fCAoY29uZGl0aW9uKCkgPyBbaW5kZXgsIGNvbmRpdGlvblZhbHVlLCBtcF0gOiB2b2lkIDApO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYztcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IHNlbCA9IHN3aXRjaEZ1bmMoKSgpO1xuICAgICAgaWYgKCFzZWwpIHJldHVybiBwcm9wcy5mYWxsYmFjaztcbiAgICAgIGNvbnN0IFtpbmRleCwgY29uZGl0aW9uVmFsdWUsIG1wXSA9IHNlbDtcbiAgICAgIGNvbnN0IGNoaWxkID0gbXAuY2hpbGRyZW47XG4gICAgICBjb25zdCBmbiA9IHR5cGVvZiBjaGlsZCA9PT0gXCJmdW5jdGlvblwiICYmIGNoaWxkLmxlbmd0aCA+IDA7XG4gICAgICByZXR1cm4gZm4gPyB1bnRyYWNrKFxuICAgICAgICAoKSA9PiBjaGlsZChcbiAgICAgICAgICBtcC5rZXllZCA/IGNvbmRpdGlvblZhbHVlKCkgOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodW50cmFjayhzd2l0Y2hGdW5jKSgpPy5bMF0gIT09IGluZGV4KSB0aHJvdyBuYXJyb3dlZEVycm9yKFwiTWF0Y2hcIik7XG4gICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uVmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICkgOiBjaGlsZDtcbiAgICB9LFxuICAgIHZvaWQgMCxcbiAgICB2b2lkIDBcbiAgKTtcbn1cbmZ1bmN0aW9uIE1hdGNoKHByb3BzKSB7XG4gIHJldHVybiBwcm9wcztcbn1cbnZhciBERVYgPSB2b2lkIDA7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvc29saWQtanMvd2ViL2Rpc3Qvd2ViLmpzXG52YXIgYm9vbGVhbnMgPSBbXG4gIFwiYWxsb3dmdWxsc2NyZWVuXCIsXG4gIFwiYXN5bmNcIixcbiAgXCJhdXRvZm9jdXNcIixcbiAgXCJhdXRvcGxheVwiLFxuICBcImNoZWNrZWRcIixcbiAgXCJjb250cm9sc1wiLFxuICBcImRlZmF1bHRcIixcbiAgXCJkaXNhYmxlZFwiLFxuICBcImZvcm1ub3ZhbGlkYXRlXCIsXG4gIFwiaGlkZGVuXCIsXG4gIFwiaW5kZXRlcm1pbmF0ZVwiLFxuICBcImluZXJ0XCIsXG4gIFwiaXNtYXBcIixcbiAgXCJsb29wXCIsXG4gIFwibXVsdGlwbGVcIixcbiAgXCJtdXRlZFwiLFxuICBcIm5vbW9kdWxlXCIsXG4gIFwibm92YWxpZGF0ZVwiLFxuICBcIm9wZW5cIixcbiAgXCJwbGF5c2lubGluZVwiLFxuICBcInJlYWRvbmx5XCIsXG4gIFwicmVxdWlyZWRcIixcbiAgXCJyZXZlcnNlZFwiLFxuICBcInNlYW1sZXNzXCIsXG4gIFwic2VsZWN0ZWRcIlxuXTtcbnZhciBQcm9wZXJ0aWVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImNsYXNzTmFtZVwiLFxuICBcInZhbHVlXCIsXG4gIFwicmVhZE9ubHlcIixcbiAgXCJmb3JtTm9WYWxpZGF0ZVwiLFxuICBcImlzTWFwXCIsXG4gIFwibm9Nb2R1bGVcIixcbiAgXCJwbGF5c0lubGluZVwiLFxuICAuLi5ib29sZWFuc1xuXSk7XG52YXIgQ2hpbGRQcm9wZXJ0aWVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImlubmVySFRNTFwiLFxuICBcInRleHRDb250ZW50XCIsXG4gIFwiaW5uZXJUZXh0XCIsXG4gIFwiY2hpbGRyZW5cIlxuXSk7XG52YXIgQWxpYXNlcyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuYXNzaWduKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpLCB7XG4gIGNsYXNzTmFtZTogXCJjbGFzc1wiLFxuICBodG1sRm9yOiBcImZvclwiXG59KTtcbnZhciBQcm9wQWxpYXNlcyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuYXNzaWduKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpLCB7XG4gIGNsYXNzOiBcImNsYXNzTmFtZVwiLFxuICBmb3Jtbm92YWxpZGF0ZToge1xuICAgICQ6IFwiZm9ybU5vVmFsaWRhdGVcIixcbiAgICBCVVRUT046IDEsXG4gICAgSU5QVVQ6IDFcbiAgfSxcbiAgaXNtYXA6IHtcbiAgICAkOiBcImlzTWFwXCIsXG4gICAgSU1HOiAxXG4gIH0sXG4gIG5vbW9kdWxlOiB7XG4gICAgJDogXCJub01vZHVsZVwiLFxuICAgIFNDUklQVDogMVxuICB9LFxuICBwbGF5c2lubGluZToge1xuICAgICQ6IFwicGxheXNJbmxpbmVcIixcbiAgICBWSURFTzogMVxuICB9LFxuICByZWFkb25seToge1xuICAgICQ6IFwicmVhZE9ubHlcIixcbiAgICBJTlBVVDogMSxcbiAgICBURVhUQVJFQTogMVxuICB9XG59KTtcbmZ1bmN0aW9uIGdldFByb3BBbGlhcyhwcm9wLCB0YWdOYW1lKSB7XG4gIGNvbnN0IGEgPSBQcm9wQWxpYXNlc1twcm9wXTtcbiAgcmV0dXJuIHR5cGVvZiBhID09PSBcIm9iamVjdFwiID8gYVt0YWdOYW1lXSA/IGFbXCIkXCJdIDogdm9pZCAwIDogYTtcbn1cbnZhciBEZWxlZ2F0ZWRFdmVudHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwiYmVmb3JlaW5wdXRcIixcbiAgXCJjbGlja1wiLFxuICBcImRibGNsaWNrXCIsXG4gIFwiY29udGV4dG1lbnVcIixcbiAgXCJmb2N1c2luXCIsXG4gIFwiZm9jdXNvdXRcIixcbiAgXCJpbnB1dFwiLFxuICBcImtleWRvd25cIixcbiAgXCJrZXl1cFwiLFxuICBcIm1vdXNlZG93blwiLFxuICBcIm1vdXNlbW92ZVwiLFxuICBcIm1vdXNlb3V0XCIsXG4gIFwibW91c2VvdmVyXCIsXG4gIFwibW91c2V1cFwiLFxuICBcInBvaW50ZXJkb3duXCIsXG4gIFwicG9pbnRlcm1vdmVcIixcbiAgXCJwb2ludGVyb3V0XCIsXG4gIFwicG9pbnRlcm92ZXJcIixcbiAgXCJwb2ludGVydXBcIixcbiAgXCJ0b3VjaGVuZFwiLFxuICBcInRvdWNobW92ZVwiLFxuICBcInRvdWNoc3RhcnRcIlxuXSk7XG52YXIgU1ZHRWxlbWVudHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwiYWx0R2x5cGhcIixcbiAgXCJhbHRHbHlwaERlZlwiLFxuICBcImFsdEdseXBoSXRlbVwiLFxuICBcImFuaW1hdGVcIixcbiAgXCJhbmltYXRlQ29sb3JcIixcbiAgXCJhbmltYXRlTW90aW9uXCIsXG4gIFwiYW5pbWF0ZVRyYW5zZm9ybVwiLFxuICBcImNpcmNsZVwiLFxuICBcImNsaXBQYXRoXCIsXG4gIFwiY29sb3ItcHJvZmlsZVwiLFxuICBcImN1cnNvclwiLFxuICBcImRlZnNcIixcbiAgXCJkZXNjXCIsXG4gIFwiZWxsaXBzZVwiLFxuICBcImZlQmxlbmRcIixcbiAgXCJmZUNvbG9yTWF0cml4XCIsXG4gIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiLFxuICBcImZlQ29tcG9zaXRlXCIsXG4gIFwiZmVDb252b2x2ZU1hdHJpeFwiLFxuICBcImZlRGlmZnVzZUxpZ2h0aW5nXCIsXG4gIFwiZmVEaXNwbGFjZW1lbnRNYXBcIixcbiAgXCJmZURpc3RhbnRMaWdodFwiLFxuICBcImZlRHJvcFNoYWRvd1wiLFxuICBcImZlRmxvb2RcIixcbiAgXCJmZUZ1bmNBXCIsXG4gIFwiZmVGdW5jQlwiLFxuICBcImZlRnVuY0dcIixcbiAgXCJmZUZ1bmNSXCIsXG4gIFwiZmVHYXVzc2lhbkJsdXJcIixcbiAgXCJmZUltYWdlXCIsXG4gIFwiZmVNZXJnZVwiLFxuICBcImZlTWVyZ2VOb2RlXCIsXG4gIFwiZmVNb3JwaG9sb2d5XCIsXG4gIFwiZmVPZmZzZXRcIixcbiAgXCJmZVBvaW50TGlnaHRcIixcbiAgXCJmZVNwZWN1bGFyTGlnaHRpbmdcIixcbiAgXCJmZVNwb3RMaWdodFwiLFxuICBcImZlVGlsZVwiLFxuICBcImZlVHVyYnVsZW5jZVwiLFxuICBcImZpbHRlclwiLFxuICBcImZvbnRcIixcbiAgXCJmb250LWZhY2VcIixcbiAgXCJmb250LWZhY2UtZm9ybWF0XCIsXG4gIFwiZm9udC1mYWNlLW5hbWVcIixcbiAgXCJmb250LWZhY2Utc3JjXCIsXG4gIFwiZm9udC1mYWNlLXVyaVwiLFxuICBcImZvcmVpZ25PYmplY3RcIixcbiAgXCJnXCIsXG4gIFwiZ2x5cGhcIixcbiAgXCJnbHlwaFJlZlwiLFxuICBcImhrZXJuXCIsXG4gIFwiaW1hZ2VcIixcbiAgXCJsaW5lXCIsXG4gIFwibGluZWFyR3JhZGllbnRcIixcbiAgXCJtYXJrZXJcIixcbiAgXCJtYXNrXCIsXG4gIFwibWV0YWRhdGFcIixcbiAgXCJtaXNzaW5nLWdseXBoXCIsXG4gIFwibXBhdGhcIixcbiAgXCJwYXRoXCIsXG4gIFwicGF0dGVyblwiLFxuICBcInBvbHlnb25cIixcbiAgXCJwb2x5bGluZVwiLFxuICBcInJhZGlhbEdyYWRpZW50XCIsXG4gIFwicmVjdFwiLFxuICBcInNldFwiLFxuICBcInN0b3BcIixcbiAgXCJzdmdcIixcbiAgXCJzd2l0Y2hcIixcbiAgXCJzeW1ib2xcIixcbiAgXCJ0ZXh0XCIsXG4gIFwidGV4dFBhdGhcIixcbiAgXCJ0cmVmXCIsXG4gIFwidHNwYW5cIixcbiAgXCJ1c2VcIixcbiAgXCJ2aWV3XCIsXG4gIFwidmtlcm5cIlxuXSk7XG52YXIgU1ZHTmFtZXNwYWNlID0ge1xuICB4bGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gIHhtbDogXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIlxufTtcbmZ1bmN0aW9uIHJlY29uY2lsZUFycmF5cyhwYXJlbnROb2RlLCBhLCBiKSB7XG4gIGxldCBiTGVuZ3RoID0gYi5sZW5ndGgsIGFFbmQgPSBhLmxlbmd0aCwgYkVuZCA9IGJMZW5ndGgsIGFTdGFydCA9IDAsIGJTdGFydCA9IDAsIGFmdGVyID0gYVthRW5kIC0gMV0ubmV4dFNpYmxpbmcsIG1hcCA9IG51bGw7XG4gIHdoaWxlIChhU3RhcnQgPCBhRW5kIHx8IGJTdGFydCA8IGJFbmQpIHtcbiAgICBpZiAoYVthU3RhcnRdID09PSBiW2JTdGFydF0pIHtcbiAgICAgIGFTdGFydCsrO1xuICAgICAgYlN0YXJ0Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgd2hpbGUgKGFbYUVuZCAtIDFdID09PSBiW2JFbmQgLSAxXSkge1xuICAgICAgYUVuZC0tO1xuICAgICAgYkVuZC0tO1xuICAgIH1cbiAgICBpZiAoYUVuZCA9PT0gYVN0YXJ0KSB7XG4gICAgICBjb25zdCBub2RlID0gYkVuZCA8IGJMZW5ndGggPyBiU3RhcnQgPyBiW2JTdGFydCAtIDFdLm5leHRTaWJsaW5nIDogYltiRW5kIC0gYlN0YXJ0XSA6IGFmdGVyO1xuICAgICAgd2hpbGUgKGJTdGFydCA8IGJFbmQpIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJbYlN0YXJ0KytdLCBub2RlKTtcbiAgICB9IGVsc2UgaWYgKGJFbmQgPT09IGJTdGFydCkge1xuICAgICAgd2hpbGUgKGFTdGFydCA8IGFFbmQpIHtcbiAgICAgICAgaWYgKCFtYXAgfHwgIW1hcC5oYXMoYVthU3RhcnRdKSkgYVthU3RhcnRdLnJlbW92ZSgpO1xuICAgICAgICBhU3RhcnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFbYVN0YXJ0XSA9PT0gYltiRW5kIC0gMV0gJiYgYltiU3RhcnRdID09PSBhW2FFbmQgLSAxXSkge1xuICAgICAgY29uc3Qgbm9kZSA9IGFbLS1hRW5kXS5uZXh0U2libGluZztcbiAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJbYlN0YXJ0KytdLCBhW2FTdGFydCsrXS5uZXh0U2libGluZyk7XG4gICAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShiWy0tYkVuZF0sIG5vZGUpO1xuICAgICAgYVthRW5kXSA9IGJbYkVuZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghbWFwKSB7XG4gICAgICAgIG1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICAgIGxldCBpID0gYlN0YXJ0O1xuICAgICAgICB3aGlsZSAoaSA8IGJFbmQpIG1hcC5zZXQoYltpXSwgaSsrKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4ID0gbWFwLmdldChhW2FTdGFydF0pO1xuICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGJTdGFydCA8IGluZGV4ICYmIGluZGV4IDwgYkVuZCkge1xuICAgICAgICAgIGxldCBpID0gYVN0YXJ0LCBzZXF1ZW5jZSA9IDEsIHQ7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGFFbmQgJiYgaSA8IGJFbmQpIHtcbiAgICAgICAgICAgIGlmICgodCA9IG1hcC5nZXQoYVtpXSkpID09IG51bGwgfHwgdCAhPT0gaW5kZXggKyBzZXF1ZW5jZSkgYnJlYWs7XG4gICAgICAgICAgICBzZXF1ZW5jZSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2VxdWVuY2UgPiBpbmRleCAtIGJTdGFydCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGFbYVN0YXJ0XTtcbiAgICAgICAgICAgIHdoaWxlIChiU3RhcnQgPCBpbmRleCkgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYltiU3RhcnQrK10sIG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChiW2JTdGFydCsrXSwgYVthU3RhcnQrK10pO1xuICAgICAgICB9IGVsc2UgYVN0YXJ0Kys7XG4gICAgICB9IGVsc2UgYVthU3RhcnQrK10ucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG52YXIgJCRFVkVOVFMgPSBcIl8kRFhfREVMRUdBVEVcIjtcbmZ1bmN0aW9uIHJlbmRlcihjb2RlLCBlbGVtZW50LCBpbml0LCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpc3Bvc2VyO1xuICBjcmVhdGVSb290KChkaXNwb3NlMikgPT4ge1xuICAgIGRpc3Bvc2VyID0gZGlzcG9zZTI7XG4gICAgZWxlbWVudCA9PT0gZG9jdW1lbnQgPyBjb2RlKCkgOiBpbnNlcnQoZWxlbWVudCwgY29kZSgpLCBlbGVtZW50LmZpcnN0Q2hpbGQgPyBudWxsIDogdm9pZCAwLCBpbml0KTtcbiAgfSwgb3B0aW9ucy5vd25lcik7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgZGlzcG9zZXIoKTtcbiAgICBlbGVtZW50LnRleHRDb250ZW50ID0gXCJcIjtcbiAgfTtcbn1cbmZ1bmN0aW9uIHRlbXBsYXRlKGh0bWwsIGlzSW1wb3J0Tm9kZSwgaXNTVkcsIGlzTWF0aE1MKSB7XG4gIGxldCBub2RlO1xuICBjb25zdCBjcmVhdGUgPSAoKSA9PiB7XG4gICAgY29uc3QgdCA9IGlzTWF0aE1MID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLCBcInRlbXBsYXRlXCIpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xuICAgIHQuaW5uZXJIVE1MID0gaHRtbDtcbiAgICByZXR1cm4gaXNTVkcgPyB0LmNvbnRlbnQuZmlyc3RDaGlsZC5maXJzdENoaWxkIDogaXNNYXRoTUwgPyB0LmZpcnN0Q2hpbGQgOiB0LmNvbnRlbnQuZmlyc3RDaGlsZDtcbiAgfTtcbiAgY29uc3QgZm4gPSBpc0ltcG9ydE5vZGUgPyAoKSA9PiB1bnRyYWNrKCgpID0+IGRvY3VtZW50LmltcG9ydE5vZGUobm9kZSB8fCAobm9kZSA9IGNyZWF0ZSgpKSwgdHJ1ZSkpIDogKCkgPT4gKG5vZGUgfHwgKG5vZGUgPSBjcmVhdGUoKSkpLmNsb25lTm9kZSh0cnVlKTtcbiAgZm4uY2xvbmVOb2RlID0gZm47XG4gIHJldHVybiBmbjtcbn1cbmZ1bmN0aW9uIGRlbGVnYXRlRXZlbnRzKGV2ZW50TmFtZXMsIGRvY3VtZW50MiA9IHdpbmRvdy5kb2N1bWVudCkge1xuICBjb25zdCBlID0gZG9jdW1lbnQyWyQkRVZFTlRTXSB8fCAoZG9jdW1lbnQyWyQkRVZFTlRTXSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCkpO1xuICBmb3IgKGxldCBpID0gMCwgbCA9IGV2ZW50TmFtZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29uc3QgbmFtZSA9IGV2ZW50TmFtZXNbaV07XG4gICAgaWYgKCFlLmhhcyhuYW1lKSkge1xuICAgICAgZS5hZGQobmFtZSk7XG4gICAgICBkb2N1bWVudDIuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBldmVudEhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY2xlYXJEZWxlZ2F0ZWRFdmVudHMoZG9jdW1lbnQyID0gd2luZG93LmRvY3VtZW50KSB7XG4gIGlmIChkb2N1bWVudDJbJCRFVkVOVFNdKSB7XG4gICAgZm9yIChsZXQgbmFtZSBvZiBkb2N1bWVudDJbJCRFVkVOVFNdLmtleXMoKSkgZG9jdW1lbnQyLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgZXZlbnRIYW5kbGVyKTtcbiAgICBkZWxldGUgZG9jdW1lbnQyWyQkRVZFTlRTXTtcbiAgfVxufVxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gIGlmIChpc0h5ZHJhdGluZyhub2RlKSkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIGVsc2Ugbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gc2V0QXR0cmlidXRlTlMobm9kZSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAoaXNIeWRyYXRpbmcobm9kZSkpIHJldHVybjtcbiAgaWYgKHZhbHVlID09IG51bGwpIG5vZGUucmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKTtcbiAgZWxzZSBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gc2V0Qm9vbEF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAoaXNIeWRyYXRpbmcobm9kZSkpIHJldHVybjtcbiAgdmFsdWUgPyBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCBcIlwiKSA6IG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xufVxuZnVuY3Rpb24gY2xhc3NOYW1lKG5vZGUsIHZhbHVlKSB7XG4gIGlmIChpc0h5ZHJhdGluZyhub2RlKSkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoXCJjbGFzc1wiKTtcbiAgZWxzZSBub2RlLmNsYXNzTmFtZSA9IHZhbHVlO1xufVxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBuYW1lLCBoYW5kbGVyLCBkZWxlZ2F0ZSkge1xuICBpZiAoZGVsZWdhdGUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgbm9kZVtgJCQke25hbWV9YF0gPSBoYW5kbGVyWzBdO1xuICAgICAgbm9kZVtgJCQke25hbWV9RGF0YWBdID0gaGFuZGxlclsxXTtcbiAgICB9IGVsc2Ugbm9kZVtgJCQke25hbWV9YF0gPSBoYW5kbGVyO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICBjb25zdCBoYW5kbGVyRm4gPSBoYW5kbGVyWzBdO1xuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyWzBdID0gKGUpID0+IGhhbmRsZXJGbi5jYWxsKG5vZGUsIGhhbmRsZXJbMV0sIGUpKTtcbiAgfSBlbHNlIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB0eXBlb2YgaGFuZGxlciAhPT0gXCJmdW5jdGlvblwiICYmIGhhbmRsZXIpO1xufVxuZnVuY3Rpb24gY2xhc3NMaXN0KG5vZGUsIHZhbHVlLCBwcmV2ID0ge30pIHtcbiAgY29uc3QgY2xhc3NLZXlzID0gT2JqZWN0LmtleXModmFsdWUgfHwge30pLCBwcmV2S2V5cyA9IE9iamVjdC5rZXlzKHByZXYpO1xuICBsZXQgaSwgbGVuO1xuICBmb3IgKGkgPSAwLCBsZW4gPSBwcmV2S2V5cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGtleSA9IHByZXZLZXlzW2ldO1xuICAgIGlmICgha2V5IHx8IGtleSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB2YWx1ZVtrZXldKSBjb250aW51ZTtcbiAgICB0b2dnbGVDbGFzc0tleShub2RlLCBrZXksIGZhbHNlKTtcbiAgICBkZWxldGUgcHJldltrZXldO1xuICB9XG4gIGZvciAoaSA9IDAsIGxlbiA9IGNsYXNzS2V5cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGtleSA9IGNsYXNzS2V5c1tpXSwgY2xhc3NWYWx1ZSA9ICEhdmFsdWVba2V5XTtcbiAgICBpZiAoIWtleSB8fCBrZXkgPT09IFwidW5kZWZpbmVkXCIgfHwgcHJldltrZXldID09PSBjbGFzc1ZhbHVlIHx8ICFjbGFzc1ZhbHVlKSBjb250aW51ZTtcbiAgICB0b2dnbGVDbGFzc0tleShub2RlLCBrZXksIHRydWUpO1xuICAgIHByZXZba2V5XSA9IGNsYXNzVmFsdWU7XG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5mdW5jdGlvbiBzdHlsZShub2RlLCB2YWx1ZSwgcHJldikge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gcHJldiA/IHNldEF0dHJpYnV0ZShub2RlLCBcInN0eWxlXCIpIDogdmFsdWU7XG4gIGNvbnN0IG5vZGVTdHlsZSA9IG5vZGUuc3R5bGU7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiBub2RlU3R5bGUuY3NzVGV4dCA9IHZhbHVlO1xuICB0eXBlb2YgcHJldiA9PT0gXCJzdHJpbmdcIiAmJiAobm9kZVN0eWxlLmNzc1RleHQgPSBwcmV2ID0gdm9pZCAwKTtcbiAgcHJldiB8fCAocHJldiA9IHt9KTtcbiAgdmFsdWUgfHwgKHZhbHVlID0ge30pO1xuICBsZXQgdiwgcztcbiAgZm9yIChzIGluIHByZXYpIHtcbiAgICB2YWx1ZVtzXSA9PSBudWxsICYmIG5vZGVTdHlsZS5yZW1vdmVQcm9wZXJ0eShzKTtcbiAgICBkZWxldGUgcHJldltzXTtcbiAgfVxuICBmb3IgKHMgaW4gdmFsdWUpIHtcbiAgICB2ID0gdmFsdWVbc107XG4gICAgaWYgKHYgIT09IHByZXZbc10pIHtcbiAgICAgIG5vZGVTdHlsZS5zZXRQcm9wZXJ0eShzLCB2KTtcbiAgICAgIHByZXZbc10gPSB2O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cbmZ1bmN0aW9uIHNwcmVhZChub2RlLCBwcm9wcyA9IHt9LCBpc1NWRywgc2tpcENoaWxkcmVuKSB7XG4gIGNvbnN0IHByZXZQcm9wcyA9IHt9O1xuICBpZiAoIXNraXBDaGlsZHJlbikge1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdChcbiAgICAgICgpID0+IHByZXZQcm9wcy5jaGlsZHJlbiA9IGluc2VydEV4cHJlc3Npb24obm9kZSwgcHJvcHMuY2hpbGRyZW4sIHByZXZQcm9wcy5jaGlsZHJlbilcbiAgICApO1xuICB9XG4gIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiB0eXBlb2YgcHJvcHMucmVmID09PSBcImZ1bmN0aW9uXCIgJiYgdXNlKHByb3BzLnJlZiwgbm9kZSkpO1xuICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gYXNzaWduKG5vZGUsIHByb3BzLCBpc1NWRywgdHJ1ZSwgcHJldlByb3BzLCB0cnVlKSk7XG4gIHJldHVybiBwcmV2UHJvcHM7XG59XG5mdW5jdGlvbiB1c2UoZm4sIGVsZW1lbnQsIGFyZykge1xuICByZXR1cm4gdW50cmFjaygoKSA9PiBmbihlbGVtZW50LCBhcmcpKTtcbn1cbmZ1bmN0aW9uIGluc2VydChwYXJlbnQsIGFjY2Vzc29yLCBtYXJrZXIsIGluaXRpYWwpIHtcbiAgaWYgKG1hcmtlciAhPT0gdm9pZCAwICYmICFpbml0aWFsKSBpbml0aWFsID0gW107XG4gIGlmICh0eXBlb2YgYWNjZXNzb3IgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGluc2VydEV4cHJlc3Npb24ocGFyZW50LCBhY2Nlc3NvciwgaW5pdGlhbCwgbWFya2VyKTtcbiAgY3JlYXRlUmVuZGVyRWZmZWN0KChjdXJyZW50KSA9PiBpbnNlcnRFeHByZXNzaW9uKHBhcmVudCwgYWNjZXNzb3IoKSwgY3VycmVudCwgbWFya2VyKSwgaW5pdGlhbCk7XG59XG5mdW5jdGlvbiBhc3NpZ24obm9kZSwgcHJvcHMsIGlzU1ZHLCBza2lwQ2hpbGRyZW4sIHByZXZQcm9wcyA9IHt9LCBza2lwUmVmID0gZmFsc2UpIHtcbiAgcHJvcHMgfHwgKHByb3BzID0ge30pO1xuICBmb3IgKGNvbnN0IHByb3AgaW4gcHJldlByb3BzKSB7XG4gICAgaWYgKCEocHJvcCBpbiBwcm9wcykpIHtcbiAgICAgIGlmIChwcm9wID09PSBcImNoaWxkcmVuXCIpIGNvbnRpbnVlO1xuICAgICAgcHJldlByb3BzW3Byb3BdID0gYXNzaWduUHJvcChub2RlLCBwcm9wLCBudWxsLCBwcmV2UHJvcHNbcHJvcF0sIGlzU1ZHLCBza2lwUmVmLCBwcm9wcyk7XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgcHJvcCBpbiBwcm9wcykge1xuICAgIGlmIChwcm9wID09PSBcImNoaWxkcmVuXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IHByb3BzW3Byb3BdO1xuICAgIHByZXZQcm9wc1twcm9wXSA9IGFzc2lnblByb3Aobm9kZSwgcHJvcCwgdmFsdWUsIHByZXZQcm9wc1twcm9wXSwgaXNTVkcsIHNraXBSZWYsIHByb3BzKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0TmV4dEVsZW1lbnQodGVtcGxhdGUyKSB7XG4gIGxldCBub2RlLCBrZXksIGh5ZHJhdGluZyA9IGlzSHlkcmF0aW5nKCk7XG4gIGlmICghaHlkcmF0aW5nIHx8ICEobm9kZSA9IHNoYXJlZENvbmZpZy5yZWdpc3RyeS5nZXQoa2V5ID0gZ2V0SHlkcmF0aW9uS2V5KCkpKSkge1xuICAgIHJldHVybiB0ZW1wbGF0ZTIoKTtcbiAgfVxuICBpZiAoc2hhcmVkQ29uZmlnLmNvbXBsZXRlZCkgc2hhcmVkQ29uZmlnLmNvbXBsZXRlZC5hZGQobm9kZSk7XG4gIHNoYXJlZENvbmZpZy5yZWdpc3RyeS5kZWxldGUoa2V5KTtcbiAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBpc0h5ZHJhdGluZyhub2RlKSB7XG4gIHJldHVybiAhIXNoYXJlZENvbmZpZy5jb250ZXh0ICYmICFzaGFyZWRDb25maWcuZG9uZSAmJiAoIW5vZGUgfHwgbm9kZS5pc0Nvbm5lY3RlZCk7XG59XG5mdW5jdGlvbiB0b1Byb3BlcnR5TmFtZShuYW1lKSB7XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLShbYS16XSkvZywgKF8sIHcpID0+IHcudG9VcHBlckNhc2UoKSk7XG59XG5mdW5jdGlvbiB0b2dnbGVDbGFzc0tleShub2RlLCBrZXksIHZhbHVlKSB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBrZXkudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gIGZvciAobGV0IGkgPSAwLCBuYW1lTGVuID0gY2xhc3NOYW1lcy5sZW5ndGg7IGkgPCBuYW1lTGVuOyBpKyspXG4gICAgbm9kZS5jbGFzc0xpc3QudG9nZ2xlKGNsYXNzTmFtZXNbaV0sIHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGFzc2lnblByb3Aobm9kZSwgcHJvcCwgdmFsdWUsIHByZXYsIGlzU1ZHLCBza2lwUmVmLCBwcm9wcykge1xuICBsZXQgaXNDRSwgaXNQcm9wLCBpc0NoaWxkUHJvcCwgcHJvcEFsaWFzLCBmb3JjZVByb3A7XG4gIGlmIChwcm9wID09PSBcInN0eWxlXCIpIHJldHVybiBzdHlsZShub2RlLCB2YWx1ZSwgcHJldik7XG4gIGlmIChwcm9wID09PSBcImNsYXNzTGlzdFwiKSByZXR1cm4gY2xhc3NMaXN0KG5vZGUsIHZhbHVlLCBwcmV2KTtcbiAgaWYgKHZhbHVlID09PSBwcmV2KSByZXR1cm4gcHJldjtcbiAgaWYgKHByb3AgPT09IFwicmVmXCIpIHtcbiAgICBpZiAoIXNraXBSZWYpIHZhbHVlKG5vZGUpO1xuICB9IGVsc2UgaWYgKHByb3Auc2xpY2UoMCwgMykgPT09IFwib246XCIpIHtcbiAgICBjb25zdCBlID0gcHJvcC5zbGljZSgzKTtcbiAgICBwcmV2ICYmIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBwcmV2LCB0eXBlb2YgcHJldiAhPT0gXCJmdW5jdGlvblwiICYmIHByZXYpO1xuICAgIHZhbHVlICYmIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihlLCB2YWx1ZSwgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIgJiYgdmFsdWUpO1xuICB9IGVsc2UgaWYgKHByb3Auc2xpY2UoMCwgMTApID09PSBcIm9uY2FwdHVyZTpcIikge1xuICAgIGNvbnN0IGUgPSBwcm9wLnNsaWNlKDEwKTtcbiAgICBwcmV2ICYmIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBwcmV2LCB0cnVlKTtcbiAgICB2YWx1ZSAmJiBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZSwgdmFsdWUsIHRydWUpO1xuICB9IGVsc2UgaWYgKHByb3Auc2xpY2UoMCwgMikgPT09IFwib25cIikge1xuICAgIGNvbnN0IG5hbWUgPSBwcm9wLnNsaWNlKDIpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZGVsZWdhdGUgPSBEZWxlZ2F0ZWRFdmVudHMuaGFzKG5hbWUpO1xuICAgIGlmICghZGVsZWdhdGUgJiYgcHJldikge1xuICAgICAgY29uc3QgaCA9IEFycmF5LmlzQXJyYXkocHJldikgPyBwcmV2WzBdIDogcHJldjtcbiAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoKTtcbiAgICB9XG4gICAgaWYgKGRlbGVnYXRlIHx8IHZhbHVlKSB7XG4gICAgICBhZGRFdmVudExpc3RlbmVyKG5vZGUsIG5hbWUsIHZhbHVlLCBkZWxlZ2F0ZSk7XG4gICAgICBkZWxlZ2F0ZSAmJiBkZWxlZ2F0ZUV2ZW50cyhbbmFtZV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9wLnNsaWNlKDAsIDUpID09PSBcImF0dHI6XCIpIHtcbiAgICBzZXRBdHRyaWJ1dGUobm9kZSwgcHJvcC5zbGljZSg1KSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKHByb3Auc2xpY2UoMCwgNSkgPT09IFwiYm9vbDpcIikge1xuICAgIHNldEJvb2xBdHRyaWJ1dGUobm9kZSwgcHJvcC5zbGljZSg1KSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKChmb3JjZVByb3AgPSBwcm9wLnNsaWNlKDAsIDUpID09PSBcInByb3A6XCIpIHx8IChpc0NoaWxkUHJvcCA9IENoaWxkUHJvcGVydGllcy5oYXMocHJvcCkpIHx8ICFpc1NWRyAmJiAoKHByb3BBbGlhcyA9IGdldFByb3BBbGlhcyhwcm9wLCBub2RlLnRhZ05hbWUpKSB8fCAoaXNQcm9wID0gUHJvcGVydGllcy5oYXMocHJvcCkpKSB8fCAoaXNDRSA9IG5vZGUubm9kZU5hbWUuaW5jbHVkZXMoXCItXCIpIHx8IFwiaXNcIiBpbiBwcm9wcykpIHtcbiAgICBpZiAoZm9yY2VQcm9wKSB7XG4gICAgICBwcm9wID0gcHJvcC5zbGljZSg1KTtcbiAgICAgIGlzUHJvcCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChpc0h5ZHJhdGluZyhub2RlKSkgcmV0dXJuIHZhbHVlO1xuICAgIGlmIChwcm9wID09PSBcImNsYXNzXCIgfHwgcHJvcCA9PT0gXCJjbGFzc05hbWVcIikgY2xhc3NOYW1lKG5vZGUsIHZhbHVlKTtcbiAgICBlbHNlIGlmIChpc0NFICYmICFpc1Byb3AgJiYgIWlzQ2hpbGRQcm9wKSBub2RlW3RvUHJvcGVydHlOYW1lKHByb3ApXSA9IHZhbHVlO1xuICAgIGVsc2Ugbm9kZVtwcm9wQWxpYXMgfHwgcHJvcF0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBucyA9IGlzU1ZHICYmIHByb3AuaW5kZXhPZihcIjpcIikgPiAtMSAmJiBTVkdOYW1lc3BhY2VbcHJvcC5zcGxpdChcIjpcIilbMF1dO1xuICAgIGlmIChucykgc2V0QXR0cmlidXRlTlMobm9kZSwgbnMsIHByb3AsIHZhbHVlKTtcbiAgICBlbHNlIHNldEF0dHJpYnV0ZShub2RlLCBBbGlhc2VzW3Byb3BdIHx8IHByb3AsIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiBldmVudEhhbmRsZXIoZSkge1xuICBpZiAoc2hhcmVkQ29uZmlnLnJlZ2lzdHJ5ICYmIHNoYXJlZENvbmZpZy5ldmVudHMpIHtcbiAgICBpZiAoc2hhcmVkQ29uZmlnLmV2ZW50cy5maW5kKChbZWwsIGV2XSkgPT4gZXYgPT09IGUpKSByZXR1cm47XG4gIH1cbiAgbGV0IG5vZGUgPSBlLnRhcmdldDtcbiAgY29uc3Qga2V5ID0gYCQkJHtlLnR5cGV9YDtcbiAgY29uc3Qgb3JpVGFyZ2V0ID0gZS50YXJnZXQ7XG4gIGNvbnN0IG9yaUN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gIGNvbnN0IHJldGFyZ2V0ID0gKHZhbHVlKSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJ0YXJnZXRcIiwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZVxuICB9KTtcbiAgY29uc3QgaGFuZGxlTm9kZSA9ICgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gbm9kZVtrZXldO1xuICAgIGlmIChoYW5kbGVyICYmICFub2RlLmRpc2FibGVkKSB7XG4gICAgICBjb25zdCBkYXRhID0gbm9kZVtgJHtrZXl9RGF0YWBdO1xuICAgICAgZGF0YSAhPT0gdm9pZCAwID8gaGFuZGxlci5jYWxsKG5vZGUsIGRhdGEsIGUpIDogaGFuZGxlci5jYWxsKG5vZGUsIGUpO1xuICAgICAgaWYgKGUuY2FuY2VsQnViYmxlKSByZXR1cm47XG4gICAgfVxuICAgIG5vZGUuaG9zdCAmJiB0eXBlb2Ygbm9kZS5ob3N0ICE9PSBcInN0cmluZ1wiICYmICFub2RlLmhvc3QuXyRob3N0ICYmIG5vZGUuY29udGFpbnMoZS50YXJnZXQpICYmIHJldGFyZ2V0KG5vZGUuaG9zdCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IHdhbGtVcFRyZWUgPSAoKSA9PiB7XG4gICAgd2hpbGUgKGhhbmRsZU5vZGUoKSAmJiAobm9kZSA9IG5vZGUuXyRob3N0IHx8IG5vZGUucGFyZW50Tm9kZSB8fCBub2RlLmhvc3QpKSA7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcImN1cnJlbnRUYXJnZXRcIiwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gbm9kZSB8fCBkb2N1bWVudDtcbiAgICB9XG4gIH0pO1xuICBpZiAoc2hhcmVkQ29uZmlnLnJlZ2lzdHJ5ICYmICFzaGFyZWRDb25maWcuZG9uZSkgc2hhcmVkQ29uZmlnLmRvbmUgPSBfJEhZLmRvbmUgPSB0cnVlO1xuICBpZiAoZS5jb21wb3NlZFBhdGgpIHtcbiAgICBjb25zdCBwYXRoID0gZS5jb21wb3NlZFBhdGgoKTtcbiAgICByZXRhcmdldChwYXRoWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICBub2RlID0gcGF0aFtpXTtcbiAgICAgIGlmICghaGFuZGxlTm9kZSgpKSBicmVhaztcbiAgICAgIGlmIChub2RlLl8kaG9zdCkge1xuICAgICAgICBub2RlID0gbm9kZS5fJGhvc3Q7XG4gICAgICAgIHdhbGtVcFRyZWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5wYXJlbnROb2RlID09PSBvcmlDdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHdhbGtVcFRyZWUoKTtcbiAgcmV0YXJnZXQob3JpVGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIGluc2VydEV4cHJlc3Npb24ocGFyZW50LCB2YWx1ZSwgY3VycmVudCwgbWFya2VyLCB1bndyYXBBcnJheSkge1xuICBjb25zdCBoeWRyYXRpbmcgPSBpc0h5ZHJhdGluZyhwYXJlbnQpO1xuICBpZiAoaHlkcmF0aW5nKSB7XG4gICAgIWN1cnJlbnQgJiYgKGN1cnJlbnQgPSBbLi4ucGFyZW50LmNoaWxkTm9kZXNdKTtcbiAgICBsZXQgY2xlYW5lZCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgbm9kZSA9IGN1cnJlbnRbaV07XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLmRhdGEuc2xpY2UoMCwgMikgPT09IFwiISRcIikgbm9kZS5yZW1vdmUoKTtcbiAgICAgIGVsc2UgY2xlYW5lZC5wdXNoKG5vZGUpO1xuICAgIH1cbiAgICBjdXJyZW50ID0gY2xlYW5lZDtcbiAgfVxuICB3aGlsZSAodHlwZW9mIGN1cnJlbnQgPT09IFwiZnVuY3Rpb25cIikgY3VycmVudCA9IGN1cnJlbnQoKTtcbiAgaWYgKHZhbHVlID09PSBjdXJyZW50KSByZXR1cm4gY3VycmVudDtcbiAgY29uc3QgdCA9IHR5cGVvZiB2YWx1ZSwgbXVsdGkgPSBtYXJrZXIgIT09IHZvaWQgMDtcbiAgcGFyZW50ID0gbXVsdGkgJiYgY3VycmVudFswXSAmJiBjdXJyZW50WzBdLnBhcmVudE5vZGUgfHwgcGFyZW50O1xuICBpZiAodCA9PT0gXCJzdHJpbmdcIiB8fCB0ID09PSBcIm51bWJlclwiKSB7XG4gICAgaWYgKGh5ZHJhdGluZykgcmV0dXJuIGN1cnJlbnQ7XG4gICAgaWYgKHQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gY3VycmVudCkgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuICAgIGlmIChtdWx0aSkge1xuICAgICAgbGV0IG5vZGUgPSBjdXJyZW50WzBdO1xuICAgICAgaWYgKG5vZGUgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICBub2RlLmRhdGEgIT09IHZhbHVlICYmIChub2RlLmRhdGEgPSB2YWx1ZSk7XG4gICAgICB9IGVsc2Ugbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICAgIGN1cnJlbnQgPSBjbGVhbkNoaWxkcmVuKHBhcmVudCwgY3VycmVudCwgbWFya2VyLCBub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJlbnQgIT09IFwiXCIgJiYgdHlwZW9mIGN1cnJlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY3VycmVudCA9IHBhcmVudC5maXJzdENoaWxkLmRhdGEgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBjdXJyZW50ID0gcGFyZW50LnRleHRDb250ZW50ID0gdmFsdWU7XG4gICAgfVxuICB9IGVsc2UgaWYgKHZhbHVlID09IG51bGwgfHwgdCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICBpZiAoaHlkcmF0aW5nKSByZXR1cm4gY3VycmVudDtcbiAgICBjdXJyZW50ID0gY2xlYW5DaGlsZHJlbihwYXJlbnQsIGN1cnJlbnQsIG1hcmtlcik7XG4gIH0gZWxzZSBpZiAodCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCB2ID0gdmFsdWUoKTtcbiAgICAgIHdoaWxlICh0eXBlb2YgdiA9PT0gXCJmdW5jdGlvblwiKSB2ID0gdigpO1xuICAgICAgY3VycmVudCA9IGluc2VydEV4cHJlc3Npb24ocGFyZW50LCB2LCBjdXJyZW50LCBtYXJrZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiBjdXJyZW50O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXTtcbiAgICBjb25zdCBjdXJyZW50QXJyYXkgPSBjdXJyZW50ICYmIEFycmF5LmlzQXJyYXkoY3VycmVudCk7XG4gICAgaWYgKG5vcm1hbGl6ZUluY29taW5nQXJyYXkoYXJyYXksIHZhbHVlLCBjdXJyZW50LCB1bndyYXBBcnJheSkpIHtcbiAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjdXJyZW50ID0gaW5zZXJ0RXhwcmVzc2lvbihwYXJlbnQsIGFycmF5LCBjdXJyZW50LCBtYXJrZXIsIHRydWUpKTtcbiAgICAgIHJldHVybiAoKSA9PiBjdXJyZW50O1xuICAgIH1cbiAgICBpZiAoaHlkcmF0aW5nKSB7XG4gICAgICBpZiAoIWFycmF5Lmxlbmd0aCkgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICBpZiAobWFya2VyID09PSB2b2lkIDApIHJldHVybiBjdXJyZW50ID0gWy4uLnBhcmVudC5jaGlsZE5vZGVzXTtcbiAgICAgIGxldCBub2RlID0gYXJyYXlbMF07XG4gICAgICBpZiAobm9kZS5wYXJlbnROb2RlICE9PSBwYXJlbnQpIHJldHVybiBjdXJyZW50O1xuICAgICAgY29uc3Qgbm9kZXMgPSBbbm9kZV07XG4gICAgICB3aGlsZSAoKG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKSAhPT0gbWFya2VyKSBub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgcmV0dXJuIGN1cnJlbnQgPSBub2RlcztcbiAgICB9XG4gICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgY3VycmVudCA9IGNsZWFuQ2hpbGRyZW4ocGFyZW50LCBjdXJyZW50LCBtYXJrZXIpO1xuICAgICAgaWYgKG11bHRpKSByZXR1cm4gY3VycmVudDtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRBcnJheSkge1xuICAgICAgaWYgKGN1cnJlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGFwcGVuZE5vZGVzKHBhcmVudCwgYXJyYXksIG1hcmtlcik7XG4gICAgICB9IGVsc2UgcmVjb25jaWxlQXJyYXlzKHBhcmVudCwgY3VycmVudCwgYXJyYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50ICYmIGNsZWFuQ2hpbGRyZW4ocGFyZW50KTtcbiAgICAgIGFwcGVuZE5vZGVzKHBhcmVudCwgYXJyYXkpO1xuICAgIH1cbiAgICBjdXJyZW50ID0gYXJyYXk7XG4gIH0gZWxzZSBpZiAodmFsdWUubm9kZVR5cGUpIHtcbiAgICBpZiAoaHlkcmF0aW5nICYmIHZhbHVlLnBhcmVudE5vZGUpIHJldHVybiBjdXJyZW50ID0gbXVsdGkgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudCkpIHtcbiAgICAgIGlmIChtdWx0aSkgcmV0dXJuIGN1cnJlbnQgPSBjbGVhbkNoaWxkcmVuKHBhcmVudCwgY3VycmVudCwgbWFya2VyLCB2YWx1ZSk7XG4gICAgICBjbGVhbkNoaWxkcmVuKHBhcmVudCwgY3VycmVudCwgbnVsbCwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PSBudWxsIHx8IGN1cnJlbnQgPT09IFwiXCIgfHwgIXBhcmVudC5maXJzdENoaWxkKSB7XG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodmFsdWUpO1xuICAgIH0gZWxzZSBwYXJlbnQucmVwbGFjZUNoaWxkKHZhbHVlLCBwYXJlbnQuZmlyc3RDaGlsZCk7XG4gICAgY3VycmVudCA9IHZhbHVlO1xuICB9IGVsc2UgO1xuICByZXR1cm4gY3VycmVudDtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZUluY29taW5nQXJyYXkobm9ybWFsaXplZCwgYXJyYXksIGN1cnJlbnQsIHVud3JhcCkge1xuICBsZXQgZHluYW1pYyA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBsZXQgaXRlbSA9IGFycmF5W2ldLCBwcmV2ID0gY3VycmVudCAmJiBjdXJyZW50W25vcm1hbGl6ZWQubGVuZ3RoXSwgdDtcbiAgICBpZiAoaXRlbSA9PSBudWxsIHx8IGl0ZW0gPT09IHRydWUgfHwgaXRlbSA9PT0gZmFsc2UpIDtcbiAgICBlbHNlIGlmICgodCA9IHR5cGVvZiBpdGVtKSA9PT0gXCJvYmplY3RcIiAmJiBpdGVtLm5vZGVUeXBlKSB7XG4gICAgICBub3JtYWxpemVkLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICBkeW5hbWljID0gbm9ybWFsaXplSW5jb21pbmdBcnJheShub3JtYWxpemVkLCBpdGVtLCBwcmV2KSB8fCBkeW5hbWljO1xuICAgIH0gZWxzZSBpZiAodCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBpZiAodW53cmFwKSB7XG4gICAgICAgIHdoaWxlICh0eXBlb2YgaXRlbSA9PT0gXCJmdW5jdGlvblwiKSBpdGVtID0gaXRlbSgpO1xuICAgICAgICBkeW5hbWljID0gbm9ybWFsaXplSW5jb21pbmdBcnJheShcbiAgICAgICAgICBub3JtYWxpemVkLFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkoaXRlbSkgPyBpdGVtIDogW2l0ZW1dLFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkocHJldikgPyBwcmV2IDogW3ByZXZdXG4gICAgICAgICkgfHwgZHluYW1pYztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZWQucHVzaChpdGVtKTtcbiAgICAgICAgZHluYW1pYyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKHByZXYgJiYgcHJldi5ub2RlVHlwZSA9PT0gMyAmJiBwcmV2LmRhdGEgPT09IHZhbHVlKSBub3JtYWxpemVkLnB1c2gocHJldik7XG4gICAgICBlbHNlIG5vcm1hbGl6ZWQucHVzaChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZHluYW1pYztcbn1cbmZ1bmN0aW9uIGFwcGVuZE5vZGVzKHBhcmVudCwgYXJyYXksIG1hcmtlciA9IG51bGwpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSBwYXJlbnQuaW5zZXJ0QmVmb3JlKGFycmF5W2ldLCBtYXJrZXIpO1xufVxuZnVuY3Rpb24gY2xlYW5DaGlsZHJlbihwYXJlbnQsIGN1cnJlbnQsIG1hcmtlciwgcmVwbGFjZW1lbnQpIHtcbiAgaWYgKG1hcmtlciA9PT0gdm9pZCAwKSByZXR1cm4gcGFyZW50LnRleHRDb250ZW50ID0gXCJcIjtcbiAgY29uc3Qgbm9kZSA9IHJlcGxhY2VtZW50IHx8IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO1xuICBpZiAoY3VycmVudC5sZW5ndGgpIHtcbiAgICBsZXQgaW5zZXJ0ZWQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gY3VycmVudC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgZWwgPSBjdXJyZW50W2ldO1xuICAgICAgaWYgKG5vZGUgIT09IGVsKSB7XG4gICAgICAgIGNvbnN0IGlzUGFyZW50ID0gZWwucGFyZW50Tm9kZSA9PT0gcGFyZW50O1xuICAgICAgICBpZiAoIWluc2VydGVkICYmICFpKVxuICAgICAgICAgIGlzUGFyZW50ID8gcGFyZW50LnJlcGxhY2VDaGlsZChub2RlLCBlbCkgOiBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIG1hcmtlcik7XG4gICAgICAgIGVsc2UgaXNQYXJlbnQgJiYgZWwucmVtb3ZlKCk7XG4gICAgICB9IGVsc2UgaW5zZXJ0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgbWFya2VyKTtcbiAgcmV0dXJuIFtub2RlXTtcbn1cbmZ1bmN0aW9uIGdldEh5ZHJhdGlvbktleSgpIHtcbiAgcmV0dXJuIHNoYXJlZENvbmZpZy5nZXROZXh0Q29udGV4dElkKCk7XG59XG52YXIgaXNTZXJ2ZXIgPSBmYWxzZTtcbnZhciBTVkdfTkFNRVNQQUNFID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBpc1NWRyA9IGZhbHNlKSB7XG4gIHJldHVybiBpc1NWRyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTkFNRVNQQUNFLCB0YWdOYW1lKSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG59XG5mdW5jdGlvbiBQb3J0YWwocHJvcHMpIHtcbiAgY29uc3QgeyB1c2VTaGFkb3cgfSA9IHByb3BzLCBtYXJrZXIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKSwgbW91bnQgPSAoKSA9PiBwcm9wcy5tb3VudCB8fCBkb2N1bWVudC5ib2R5LCBvd25lciA9IGdldE93bmVyKCk7XG4gIGxldCBjb250ZW50O1xuICBsZXQgaHlkcmF0aW5nID0gISFzaGFyZWRDb25maWcuY29udGV4dDtcbiAgY3JlYXRlRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGlmIChoeWRyYXRpbmcpIGdldE93bmVyKCkudXNlciA9IGh5ZHJhdGluZyA9IGZhbHNlO1xuICAgICAgY29udGVudCB8fCAoY29udGVudCA9IHJ1bldpdGhPd25lcihvd25lciwgKCkgPT4gY3JlYXRlTWVtbygoKSA9PiBwcm9wcy5jaGlsZHJlbikpKTtcbiAgICAgIGNvbnN0IGVsID0gbW91bnQoKTtcbiAgICAgIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxIZWFkRWxlbWVudCkge1xuICAgICAgICBjb25zdCBbY2xlYW4sIHNldENsZWFuXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gICAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiBzZXRDbGVhbih0cnVlKTtcbiAgICAgICAgY3JlYXRlUm9vdCgoZGlzcG9zZTIpID0+IGluc2VydChlbCwgKCkgPT4gIWNsZWFuKCkgPyBjb250ZW50KCkgOiBkaXNwb3NlMigpLCBudWxsKSk7XG4gICAgICAgIG9uQ2xlYW51cChjbGVhbnVwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQocHJvcHMuaXNTVkcgPyBcImdcIiA6IFwiZGl2XCIsIHByb3BzLmlzU1ZHKSwgcmVuZGVyUm9vdCA9IHVzZVNoYWRvdyAmJiBjb250YWluZXIuYXR0YWNoU2hhZG93ID8gY29udGFpbmVyLmF0dGFjaFNoYWRvdyh7XG4gICAgICAgICAgbW9kZTogXCJvcGVuXCJcbiAgICAgICAgfSkgOiBjb250YWluZXI7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250YWluZXIsIFwiXyRob3N0XCIsIHtcbiAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFya2VyLnBhcmVudE5vZGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGluc2VydChyZW5kZXJSb290LCBjb250ZW50KTtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgICAgcHJvcHMucmVmICYmIHByb3BzLnJlZihjb250YWluZXIpO1xuICAgICAgICBvbkNsZWFudXAoKCkgPT4gZWwucmVtb3ZlQ2hpbGQoY29udGFpbmVyKSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB2b2lkIDAsXG4gICAge1xuICAgICAgcmVuZGVyOiAhaHlkcmF0aW5nXG4gICAgfVxuICApO1xuICByZXR1cm4gbWFya2VyO1xufVxuZnVuY3Rpb24gY3JlYXRlRHluYW1pYyhjb21wb25lbnQsIHByb3BzKSB7XG4gIGNvbnN0IGNhY2hlZCA9IGNyZWF0ZU1lbW8oY29tcG9uZW50KTtcbiAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudDIgPSBjYWNoZWQoKTtcbiAgICBzd2l0Y2ggKHR5cGVvZiBjb21wb25lbnQyKSB7XG4gICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgcmV0dXJuIHVudHJhY2soKCkgPT4gY29tcG9uZW50Mihwcm9wcykpO1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICBjb25zdCBpc1N2ZyA9IFNWR0VsZW1lbnRzLmhhcyhjb21wb25lbnQyKTtcbiAgICAgICAgY29uc3QgZWwgPSBzaGFyZWRDb25maWcuY29udGV4dCA/IGdldE5leHRFbGVtZW50KCkgOiBjcmVhdGVFbGVtZW50KGNvbXBvbmVudDIsIGlzU3ZnKTtcbiAgICAgICAgc3ByZWFkKGVsLCBwcm9wcywgaXNTdmcpO1xuICAgICAgICByZXR1cm4gZWw7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIER5bmFtaWMocHJvcHMpIHtcbiAgY29uc3QgWywgb3RoZXJzXSA9IHNwbGl0UHJvcHMocHJvcHMsIFtcImNvbXBvbmVudFwiXSk7XG4gIHJldHVybiBjcmVhdGVEeW5hbWljKCgpID0+IHByb3BzLmNvbXBvbmVudCwgb3RoZXJzKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvZG91YmxlLWluZGV4ZWQta3YuanNcbnZhciBEb3VibGVJbmRleGVkS1YgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMua2V5VG9WYWx1ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdGhpcy52YWx1ZVRvS2V5ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgfVxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMua2V5VG9WYWx1ZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZVRvS2V5LnNldCh2YWx1ZSwga2V5KTtcbiAgfVxuICBnZXRCeUtleShrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlUb1ZhbHVlLmdldChrZXkpO1xuICB9XG4gIGdldEJ5VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZVRvS2V5LmdldCh2YWx1ZSk7XG4gIH1cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5rZXlUb1ZhbHVlLmNsZWFyKCk7XG4gICAgdGhpcy52YWx1ZVRvS2V5LmNsZWFyKCk7XG4gIH1cbn07XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdXBlcmpzb25AMi4yLjEvbm9kZV9tb2R1bGVzL3N1cGVyanNvbi9kaXN0L3JlZ2lzdHJ5LmpzXG52YXIgUmVnaXN0cnkgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGdlbmVyYXRlSWRlbnRpZmllcikge1xuICAgIHRoaXMuZ2VuZXJhdGVJZGVudGlmaWVyID0gZ2VuZXJhdGVJZGVudGlmaWVyO1xuICAgIHRoaXMua3YgPSBuZXcgRG91YmxlSW5kZXhlZEtWKCk7XG4gIH1cbiAgcmVnaXN0ZXIodmFsdWUsIGlkZW50aWZpZXIpIHtcbiAgICBpZiAodGhpcy5rdi5nZXRCeVZhbHVlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlkZW50aWZpZXIpIHtcbiAgICAgIGlkZW50aWZpZXIgPSB0aGlzLmdlbmVyYXRlSWRlbnRpZmllcih2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMua3Yuc2V0KGlkZW50aWZpZXIsIHZhbHVlKTtcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLmt2LmNsZWFyKCk7XG4gIH1cbiAgZ2V0SWRlbnRpZmllcih2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLmt2LmdldEJ5VmFsdWUodmFsdWUpO1xuICB9XG4gIGdldFZhbHVlKGlkZW50aWZpZXIpIHtcbiAgICByZXR1cm4gdGhpcy5rdi5nZXRCeUtleShpZGVudGlmaWVyKTtcbiAgfVxufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvY2xhc3MtcmVnaXN0cnkuanNcbnZhciBDbGFzc1JlZ2lzdHJ5ID0gY2xhc3MgZXh0ZW5kcyBSZWdpc3RyeSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKChjKSA9PiBjLm5hbWUpO1xuICAgIHRoaXMuY2xhc3NUb0FsbG93ZWRQcm9wcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIH1cbiAgcmVnaXN0ZXIodmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGlmIChvcHRpb25zLmFsbG93UHJvcHMpIHtcbiAgICAgICAgdGhpcy5jbGFzc1RvQWxsb3dlZFByb3BzLnNldCh2YWx1ZSwgb3B0aW9ucy5hbGxvd1Byb3BzKTtcbiAgICAgIH1cbiAgICAgIHN1cGVyLnJlZ2lzdGVyKHZhbHVlLCBvcHRpb25zLmlkZW50aWZpZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdXBlci5yZWdpc3Rlcih2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGdldEFsbG93ZWRQcm9wcyh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLmNsYXNzVG9BbGxvd2VkUHJvcHMuZ2V0KHZhbHVlKTtcbiAgfVxufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvdXRpbC5qc1xuZnVuY3Rpb24gdmFsdWVzT2ZPYmoocmVjb3JkKSB7XG4gIGlmIChcInZhbHVlc1wiIGluIE9iamVjdCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJlY29yZCk7XG4gIH1cbiAgY29uc3QgdmFsdWVzID0gW107XG4gIGZvciAoY29uc3Qga2V5IGluIHJlY29yZCkge1xuICAgIGlmIChyZWNvcmQuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgdmFsdWVzLnB1c2gocmVjb3JkW2tleV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWVzO1xufVxuZnVuY3Rpb24gZmluZChyZWNvcmQsIHByZWRpY2F0ZSkge1xuICBjb25zdCB2YWx1ZXMgPSB2YWx1ZXNPZk9iaihyZWNvcmQpO1xuICBpZiAoXCJmaW5kXCIgaW4gdmFsdWVzKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5maW5kKHByZWRpY2F0ZSk7XG4gIH1cbiAgY29uc3QgdmFsdWVzTm90TmV2ZXIgPSB2YWx1ZXM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzTm90TmV2ZXIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc05vdE5ldmVyW2ldO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB2b2lkIDA7XG59XG5mdW5jdGlvbiBmb3JFYWNoKHJlY29yZCwgcnVuKSB7XG4gIE9iamVjdC5lbnRyaWVzKHJlY29yZCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBydW4odmFsdWUsIGtleSkpO1xufVxuZnVuY3Rpb24gaW5jbHVkZXMoYXJyLCB2YWx1ZSkge1xuICByZXR1cm4gYXJyLmluZGV4T2YodmFsdWUpICE9PSAtMTtcbn1cbmZ1bmN0aW9uIGZpbmRBcnIocmVjb3JkLCBwcmVkaWNhdGUpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlY29yZFtpXTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdm9pZCAwO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9jdXN0b20tdHJhbnNmb3JtZXItcmVnaXN0cnkuanNcbnZhciBDdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5ID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRyYW5zZm9tZXJzID0ge307XG4gIH1cbiAgcmVnaXN0ZXIodHJhbnNmb3JtZXIpIHtcbiAgICB0aGlzLnRyYW5zZm9tZXJzW3RyYW5zZm9ybWVyLm5hbWVdID0gdHJhbnNmb3JtZXI7XG4gIH1cbiAgZmluZEFwcGxpY2FibGUodikge1xuICAgIHJldHVybiBmaW5kKHRoaXMudHJhbnNmb21lcnMsICh0cmFuc2Zvcm1lcikgPT4gdHJhbnNmb3JtZXIuaXNBcHBsaWNhYmxlKHYpKTtcbiAgfVxuICBmaW5kQnlOYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2ZvbWVyc1tuYW1lXTtcbiAgfVxufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvaXMuanNcbnZhciBnZXRUeXBlID0gKHBheWxvYWQpID0+IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwYXlsb2FkKS5zbGljZSg4LCAtMSk7XG52YXIgaXNVbmRlZmluZWQgPSAocGF5bG9hZCkgPT4gdHlwZW9mIHBheWxvYWQgPT09IFwidW5kZWZpbmVkXCI7XG52YXIgaXNOdWxsID0gKHBheWxvYWQpID0+IHBheWxvYWQgPT09IG51bGw7XG52YXIgaXNQbGFpbk9iamVjdCA9IChwYXlsb2FkKSA9PiB7XG4gIGlmICh0eXBlb2YgcGF5bG9hZCAhPT0gXCJvYmplY3RcIiB8fCBwYXlsb2FkID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHBheWxvYWQgPT09IE9iamVjdC5wcm90b3R5cGUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHBheWxvYWQpID09PSBudWxsKVxuICAgIHJldHVybiB0cnVlO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBheWxvYWQpID09PSBPYmplY3QucHJvdG90eXBlO1xufTtcbnZhciBpc0VtcHR5T2JqZWN0ID0gKHBheWxvYWQpID0+IGlzUGxhaW5PYmplY3QocGF5bG9hZCkgJiYgT2JqZWN0LmtleXMocGF5bG9hZCkubGVuZ3RoID09PSAwO1xudmFyIGlzQXJyYXkgPSAocGF5bG9hZCkgPT4gQXJyYXkuaXNBcnJheShwYXlsb2FkKTtcbnZhciBpc1N0cmluZyA9IChwYXlsb2FkKSA9PiB0eXBlb2YgcGF5bG9hZCA9PT0gXCJzdHJpbmdcIjtcbnZhciBpc051bWJlciA9IChwYXlsb2FkKSA9PiB0eXBlb2YgcGF5bG9hZCA9PT0gXCJudW1iZXJcIiAmJiAhaXNOYU4ocGF5bG9hZCk7XG52YXIgaXNCb29sZWFuID0gKHBheWxvYWQpID0+IHR5cGVvZiBwYXlsb2FkID09PSBcImJvb2xlYW5cIjtcbnZhciBpc1JlZ0V4cCA9IChwYXlsb2FkKSA9PiBwYXlsb2FkIGluc3RhbmNlb2YgUmVnRXhwO1xudmFyIGlzTWFwID0gKHBheWxvYWQpID0+IHBheWxvYWQgaW5zdGFuY2VvZiBNYXA7XG52YXIgaXNTZXQgPSAocGF5bG9hZCkgPT4gcGF5bG9hZCBpbnN0YW5jZW9mIFNldDtcbnZhciBpc1N5bWJvbCA9IChwYXlsb2FkKSA9PiBnZXRUeXBlKHBheWxvYWQpID09PSBcIlN5bWJvbFwiO1xudmFyIGlzRGF0ZSA9IChwYXlsb2FkKSA9PiBwYXlsb2FkIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4ocGF5bG9hZC52YWx1ZU9mKCkpO1xudmFyIGlzRXJyb3IgPSAocGF5bG9hZCkgPT4gcGF5bG9hZCBpbnN0YW5jZW9mIEVycm9yO1xudmFyIGlzTmFOVmFsdWUgPSAocGF5bG9hZCkgPT4gdHlwZW9mIHBheWxvYWQgPT09IFwibnVtYmVyXCIgJiYgaXNOYU4ocGF5bG9hZCk7XG52YXIgaXNQcmltaXRpdmUgPSAocGF5bG9hZCkgPT4gaXNCb29sZWFuKHBheWxvYWQpIHx8IGlzTnVsbChwYXlsb2FkKSB8fCBpc1VuZGVmaW5lZChwYXlsb2FkKSB8fCBpc051bWJlcihwYXlsb2FkKSB8fCBpc1N0cmluZyhwYXlsb2FkKSB8fCBpc1N5bWJvbChwYXlsb2FkKTtcbnZhciBpc0JpZ2ludCA9IChwYXlsb2FkKSA9PiB0eXBlb2YgcGF5bG9hZCA9PT0gXCJiaWdpbnRcIjtcbnZhciBpc0luZmluaXRlID0gKHBheWxvYWQpID0+IHBheWxvYWQgPT09IEluZmluaXR5IHx8IHBheWxvYWQgPT09IC1JbmZpbml0eTtcbnZhciBpc1R5cGVkQXJyYXkgPSAocGF5bG9hZCkgPT4gQXJyYXlCdWZmZXIuaXNWaWV3KHBheWxvYWQpICYmICEocGF5bG9hZCBpbnN0YW5jZW9mIERhdGFWaWV3KTtcbnZhciBpc1VSTCA9IChwYXlsb2FkKSA9PiBwYXlsb2FkIGluc3RhbmNlb2YgVVJMO1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9wYXRoc3RyaW5naWZpZXIuanNcbnZhciBlc2NhcGVLZXkgPSAoa2V5KSA9PiBrZXkucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIik7XG52YXIgc3RyaW5naWZ5UGF0aCA9IChwYXRoKSA9PiBwYXRoLm1hcChTdHJpbmcpLm1hcChlc2NhcGVLZXkpLmpvaW4oXCIuXCIpO1xudmFyIHBhcnNlUGF0aCA9IChzdHJpbmcpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGxldCBzZWdtZW50ID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgY2hhciA9IHN0cmluZy5jaGFyQXQoaSk7XG4gICAgY29uc3QgaXNFc2NhcGVkRG90ID0gY2hhciA9PT0gXCJcXFxcXCIgJiYgc3RyaW5nLmNoYXJBdChpICsgMSkgPT09IFwiLlwiO1xuICAgIGlmIChpc0VzY2FwZWREb3QpIHtcbiAgICAgIHNlZ21lbnQgKz0gXCIuXCI7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNFbmRPZlNlZ21lbnQgPSBjaGFyID09PSBcIi5cIjtcbiAgICBpZiAoaXNFbmRPZlNlZ21lbnQpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHNlZ21lbnQpO1xuICAgICAgc2VnbWVudCA9IFwiXCI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgc2VnbWVudCArPSBjaGFyO1xuICB9XG4gIGNvbnN0IGxhc3RTZWdtZW50ID0gc2VnbWVudDtcbiAgcmVzdWx0LnB1c2gobGFzdFNlZ21lbnQpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvdHJhbnNmb3JtZXIuanNcbmZ1bmN0aW9uIHNpbXBsZVRyYW5zZm9ybWF0aW9uKGlzQXBwbGljYWJsZSwgYW5ub3RhdGlvbiwgdHJhbnNmb3JtLCB1bnRyYW5zZm9ybSkge1xuICByZXR1cm4ge1xuICAgIGlzQXBwbGljYWJsZSxcbiAgICBhbm5vdGF0aW9uLFxuICAgIHRyYW5zZm9ybSxcbiAgICB1bnRyYW5zZm9ybVxuICB9O1xufVxudmFyIHNpbXBsZVJ1bGVzID0gW1xuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbihpc1VuZGVmaW5lZCwgXCJ1bmRlZmluZWRcIiwgKCkgPT4gbnVsbCwgKCkgPT4gdm9pZCAwKSxcbiAgc2ltcGxlVHJhbnNmb3JtYXRpb24oaXNCaWdpbnQsIFwiYmlnaW50XCIsICh2KSA9PiB2LnRvU3RyaW5nKCksICh2KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBCaWdJbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiBCaWdJbnQodik7XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9KSxcbiAgc2ltcGxlVHJhbnNmb3JtYXRpb24oaXNEYXRlLCBcIkRhdGVcIiwgKHYpID0+IHYudG9JU09TdHJpbmcoKSwgKHYpID0+IG5ldyBEYXRlKHYpKSxcbiAgc2ltcGxlVHJhbnNmb3JtYXRpb24oaXNFcnJvciwgXCJFcnJvclwiLCAodiwgc3VwZXJKc29uKSA9PiB7XG4gICAgY29uc3QgYmFzZUVycm9yID0ge1xuICAgICAgbmFtZTogdi5uYW1lLFxuICAgICAgbWVzc2FnZTogdi5tZXNzYWdlXG4gICAgfTtcbiAgICBzdXBlckpzb24uYWxsb3dlZEVycm9yUHJvcHMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgYmFzZUVycm9yW3Byb3BdID0gdltwcm9wXTtcbiAgICB9KTtcbiAgICByZXR1cm4gYmFzZUVycm9yO1xuICB9LCAodiwgc3VwZXJKc29uKSA9PiB7XG4gICAgY29uc3QgZSA9IG5ldyBFcnJvcih2Lm1lc3NhZ2UpO1xuICAgIGUubmFtZSA9IHYubmFtZTtcbiAgICBlLnN0YWNrID0gdi5zdGFjaztcbiAgICBzdXBlckpzb24uYWxsb3dlZEVycm9yUHJvcHMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgZVtwcm9wXSA9IHZbcHJvcF07XG4gICAgfSk7XG4gICAgcmV0dXJuIGU7XG4gIH0pLFxuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbihpc1JlZ0V4cCwgXCJyZWdleHBcIiwgKHYpID0+IFwiXCIgKyB2LCAocmVnZXgpID0+IHtcbiAgICBjb25zdCBib2R5ID0gcmVnZXguc2xpY2UoMSwgcmVnZXgubGFzdEluZGV4T2YoXCIvXCIpKTtcbiAgICBjb25zdCBmbGFncyA9IHJlZ2V4LnNsaWNlKHJlZ2V4Lmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGJvZHksIGZsYWdzKTtcbiAgfSksXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKFxuICAgIGlzU2V0LFxuICAgIFwic2V0XCIsXG4gICAgLy8gKHNldHMgb25seSBleGlzdCBpbiBlczYrKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlczUvbm8tZXM2LW1ldGhvZHNcbiAgICAodikgPT4gWy4uLnYudmFsdWVzKCldLFxuICAgICh2KSA9PiBuZXcgU2V0KHYpXG4gICksXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKGlzTWFwLCBcIm1hcFwiLCAodikgPT4gWy4uLnYuZW50cmllcygpXSwgKHYpID0+IG5ldyBNYXAodikpLFxuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbigodikgPT4gaXNOYU5WYWx1ZSh2KSB8fCBpc0luZmluaXRlKHYpLCBcIm51bWJlclwiLCAodikgPT4ge1xuICAgIGlmIChpc05hTlZhbHVlKHYpKSB7XG4gICAgICByZXR1cm4gXCJOYU5cIjtcbiAgICB9XG4gICAgaWYgKHYgPiAwKSB7XG4gICAgICByZXR1cm4gXCJJbmZpbml0eVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCItSW5maW5pdHlcIjtcbiAgICB9XG4gIH0sIE51bWJlciksXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKCh2KSA9PiB2ID09PSAwICYmIDEgLyB2ID09PSAtSW5maW5pdHksIFwibnVtYmVyXCIsICgpID0+IHtcbiAgICByZXR1cm4gXCItMFwiO1xuICB9LCBOdW1iZXIpLFxuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbihpc1VSTCwgXCJVUkxcIiwgKHYpID0+IHYudG9TdHJpbmcoKSwgKHYpID0+IG5ldyBVUkwodikpXG5dO1xuZnVuY3Rpb24gY29tcG9zaXRlVHJhbnNmb3JtYXRpb24oaXNBcHBsaWNhYmxlLCBhbm5vdGF0aW9uLCB0cmFuc2Zvcm0sIHVudHJhbnNmb3JtKSB7XG4gIHJldHVybiB7XG4gICAgaXNBcHBsaWNhYmxlLFxuICAgIGFubm90YXRpb24sXG4gICAgdHJhbnNmb3JtLFxuICAgIHVudHJhbnNmb3JtXG4gIH07XG59XG52YXIgc3ltYm9sUnVsZSA9IGNvbXBvc2l0ZVRyYW5zZm9ybWF0aW9uKChzLCBzdXBlckpzb24pID0+IHtcbiAgaWYgKGlzU3ltYm9sKHMpKSB7XG4gICAgY29uc3QgaXNSZWdpc3RlcmVkID0gISFzdXBlckpzb24uc3ltYm9sUmVnaXN0cnkuZ2V0SWRlbnRpZmllcihzKTtcbiAgICByZXR1cm4gaXNSZWdpc3RlcmVkO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn0sIChzLCBzdXBlckpzb24pID0+IHtcbiAgY29uc3QgaWRlbnRpZmllciA9IHN1cGVySnNvbi5zeW1ib2xSZWdpc3RyeS5nZXRJZGVudGlmaWVyKHMpO1xuICByZXR1cm4gW1wic3ltYm9sXCIsIGlkZW50aWZpZXJdO1xufSwgKHYpID0+IHYuZGVzY3JpcHRpb24sIChfLCBhLCBzdXBlckpzb24pID0+IHtcbiAgY29uc3QgdmFsdWUgPSBzdXBlckpzb24uc3ltYm9sUmVnaXN0cnkuZ2V0VmFsdWUoYVsxXSk7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gZGVzZXJpYWxpemUgdW5rbm93biBzeW1ib2xcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufSk7XG52YXIgY29uc3RydWN0b3JUb05hbWUgPSBbXG4gIEludDhBcnJheSxcbiAgVWludDhBcnJheSxcbiAgSW50MTZBcnJheSxcbiAgVWludDE2QXJyYXksXG4gIEludDMyQXJyYXksXG4gIFVpbnQzMkFycmF5LFxuICBGbG9hdDMyQXJyYXksXG4gIEZsb2F0NjRBcnJheSxcbiAgVWludDhDbGFtcGVkQXJyYXlcbl0ucmVkdWNlKChvYmosIGN0b3IpID0+IHtcbiAgb2JqW2N0b3IubmFtZV0gPSBjdG9yO1xuICByZXR1cm4gb2JqO1xufSwge30pO1xudmFyIHR5cGVkQXJyYXlSdWxlID0gY29tcG9zaXRlVHJhbnNmb3JtYXRpb24oaXNUeXBlZEFycmF5LCAodikgPT4gW1widHlwZWQtYXJyYXlcIiwgdi5jb25zdHJ1Y3Rvci5uYW1lXSwgKHYpID0+IFsuLi52XSwgKHYsIGEpID0+IHtcbiAgY29uc3QgY3RvciA9IGNvbnN0cnVjdG9yVG9OYW1lW2FbMV1dO1xuICBpZiAoIWN0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gZGVzZXJpYWxpemUgdW5rbm93biB0eXBlZCBhcnJheVwiKTtcbiAgfVxuICByZXR1cm4gbmV3IGN0b3Iodik7XG59KTtcbmZ1bmN0aW9uIGlzSW5zdGFuY2VPZlJlZ2lzdGVyZWRDbGFzcyhwb3RlbnRpYWxDbGFzcywgc3VwZXJKc29uKSB7XG4gIGlmIChwb3RlbnRpYWxDbGFzcz8uY29uc3RydWN0b3IpIHtcbiAgICBjb25zdCBpc1JlZ2lzdGVyZWQgPSAhIXN1cGVySnNvbi5jbGFzc1JlZ2lzdHJ5LmdldElkZW50aWZpZXIocG90ZW50aWFsQ2xhc3MuY29uc3RydWN0b3IpO1xuICAgIHJldHVybiBpc1JlZ2lzdGVyZWQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxudmFyIGNsYXNzUnVsZSA9IGNvbXBvc2l0ZVRyYW5zZm9ybWF0aW9uKGlzSW5zdGFuY2VPZlJlZ2lzdGVyZWRDbGFzcywgKGNsYXp6LCBzdXBlckpzb24pID0+IHtcbiAgY29uc3QgaWRlbnRpZmllciA9IHN1cGVySnNvbi5jbGFzc1JlZ2lzdHJ5LmdldElkZW50aWZpZXIoY2xhenouY29uc3RydWN0b3IpO1xuICByZXR1cm4gW1wiY2xhc3NcIiwgaWRlbnRpZmllcl07XG59LCAoY2xhenosIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCBhbGxvd2VkUHJvcHMgPSBzdXBlckpzb24uY2xhc3NSZWdpc3RyeS5nZXRBbGxvd2VkUHJvcHMoY2xhenouY29uc3RydWN0b3IpO1xuICBpZiAoIWFsbG93ZWRQcm9wcykge1xuICAgIHJldHVybiB7IC4uLmNsYXp6IH07XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGFsbG93ZWRQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgcmVzdWx0W3Byb3BdID0gY2xhenpbcHJvcF07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSwgKHYsIGEsIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCBjbGF6eiA9IHN1cGVySnNvbi5jbGFzc1JlZ2lzdHJ5LmdldFZhbHVlKGFbMV0pO1xuICBpZiAoIWNsYXp6KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVHJ5aW5nIHRvIGRlc2VyaWFsaXplIHVua25vd24gY2xhc3MgLSBjaGVjayBodHRwczovL2dpdGh1Yi5jb20vYmxpdHotanMvc3VwZXJqc29uL2lzc3Vlcy8xMTYjaXNzdWVjb21tZW50LTc3Mzk5NjU2NFwiKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGNsYXp6LnByb3RvdHlwZSksIHYpO1xufSk7XG52YXIgY3VzdG9tUnVsZSA9IGNvbXBvc2l0ZVRyYW5zZm9ybWF0aW9uKCh2YWx1ZSwgc3VwZXJKc29uKSA9PiB7XG4gIHJldHVybiAhIXN1cGVySnNvbi5jdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5LmZpbmRBcHBsaWNhYmxlKHZhbHVlKTtcbn0sICh2YWx1ZSwgc3VwZXJKc29uKSA9PiB7XG4gIGNvbnN0IHRyYW5zZm9ybWVyID0gc3VwZXJKc29uLmN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkuZmluZEFwcGxpY2FibGUodmFsdWUpO1xuICByZXR1cm4gW1wiY3VzdG9tXCIsIHRyYW5zZm9ybWVyLm5hbWVdO1xufSwgKHZhbHVlLCBzdXBlckpzb24pID0+IHtcbiAgY29uc3QgdHJhbnNmb3JtZXIgPSBzdXBlckpzb24uY3VzdG9tVHJhbnNmb3JtZXJSZWdpc3RyeS5maW5kQXBwbGljYWJsZSh2YWx1ZSk7XG4gIHJldHVybiB0cmFuc2Zvcm1lci5zZXJpYWxpemUodmFsdWUpO1xufSwgKHYsIGEsIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCB0cmFuc2Zvcm1lciA9IHN1cGVySnNvbi5jdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5LmZpbmRCeU5hbWUoYVsxXSk7XG4gIGlmICghdHJhbnNmb3JtZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gZGVzZXJpYWxpemUgdW5rbm93biBjdXN0b20gdmFsdWVcIik7XG4gIH1cbiAgcmV0dXJuIHRyYW5zZm9ybWVyLmRlc2VyaWFsaXplKHYpO1xufSk7XG52YXIgY29tcG9zaXRlUnVsZXMgPSBbY2xhc3NSdWxlLCBzeW1ib2xSdWxlLCBjdXN0b21SdWxlLCB0eXBlZEFycmF5UnVsZV07XG52YXIgdHJhbnNmb3JtVmFsdWUgPSAodmFsdWUsIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCBhcHBsaWNhYmxlQ29tcG9zaXRlUnVsZSA9IGZpbmRBcnIoY29tcG9zaXRlUnVsZXMsIChydWxlKSA9PiBydWxlLmlzQXBwbGljYWJsZSh2YWx1ZSwgc3VwZXJKc29uKSk7XG4gIGlmIChhcHBsaWNhYmxlQ29tcG9zaXRlUnVsZSkge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogYXBwbGljYWJsZUNvbXBvc2l0ZVJ1bGUudHJhbnNmb3JtKHZhbHVlLCBzdXBlckpzb24pLFxuICAgICAgdHlwZTogYXBwbGljYWJsZUNvbXBvc2l0ZVJ1bGUuYW5ub3RhdGlvbih2YWx1ZSwgc3VwZXJKc29uKVxuICAgIH07XG4gIH1cbiAgY29uc3QgYXBwbGljYWJsZVNpbXBsZVJ1bGUgPSBmaW5kQXJyKHNpbXBsZVJ1bGVzLCAocnVsZSkgPT4gcnVsZS5pc0FwcGxpY2FibGUodmFsdWUsIHN1cGVySnNvbikpO1xuICBpZiAoYXBwbGljYWJsZVNpbXBsZVJ1bGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IGFwcGxpY2FibGVTaW1wbGVSdWxlLnRyYW5zZm9ybSh2YWx1ZSwgc3VwZXJKc29uKSxcbiAgICAgIHR5cGU6IGFwcGxpY2FibGVTaW1wbGVSdWxlLmFubm90YXRpb25cbiAgICB9O1xuICB9XG4gIHJldHVybiB2b2lkIDA7XG59O1xudmFyIHNpbXBsZVJ1bGVzQnlBbm5vdGF0aW9uID0ge307XG5zaW1wbGVSdWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gIHNpbXBsZVJ1bGVzQnlBbm5vdGF0aW9uW3J1bGUuYW5ub3RhdGlvbl0gPSBydWxlO1xufSk7XG52YXIgdW50cmFuc2Zvcm1WYWx1ZSA9IChqc29uLCB0eXBlLCBzdXBlckpzb24pID0+IHtcbiAgaWYgKGlzQXJyYXkodHlwZSkpIHtcbiAgICBzd2l0Y2ggKHR5cGVbMF0pIHtcbiAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgcmV0dXJuIHN5bWJvbFJ1bGUudW50cmFuc2Zvcm0oanNvbiwgdHlwZSwgc3VwZXJKc29uKTtcbiAgICAgIGNhc2UgXCJjbGFzc1wiOlxuICAgICAgICByZXR1cm4gY2xhc3NSdWxlLnVudHJhbnNmb3JtKGpzb24sIHR5cGUsIHN1cGVySnNvbik7XG4gICAgICBjYXNlIFwiY3VzdG9tXCI6XG4gICAgICAgIHJldHVybiBjdXN0b21SdWxlLnVudHJhbnNmb3JtKGpzb24sIHR5cGUsIHN1cGVySnNvbik7XG4gICAgICBjYXNlIFwidHlwZWQtYXJyYXlcIjpcbiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSdWxlLnVudHJhbnNmb3JtKGpzb24sIHR5cGUsIHN1cGVySnNvbik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHRyYW5zZm9ybWF0aW9uOiBcIiArIHR5cGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHNpbXBsZVJ1bGVzQnlBbm5vdGF0aW9uW3R5cGVdO1xuICAgIGlmICghdHJhbnNmb3JtYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gdHJhbnNmb3JtYXRpb246IFwiICsgdHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2Zvcm1hdGlvbi51bnRyYW5zZm9ybShqc29uLCBzdXBlckpzb24pO1xuICB9XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9hY2Nlc3NEZWVwLmpzXG52YXIgZ2V0TnRoS2V5ID0gKHZhbHVlLCBuKSA9PiB7XG4gIGNvbnN0IGtleXMgPSB2YWx1ZS5rZXlzKCk7XG4gIHdoaWxlIChuID4gMCkge1xuICAgIGtleXMubmV4dCgpO1xuICAgIG4tLTtcbiAgfVxuICByZXR1cm4ga2V5cy5uZXh0KCkudmFsdWU7XG59O1xuZnVuY3Rpb24gdmFsaWRhdGVQYXRoKHBhdGgpIHtcbiAgaWYgKGluY2x1ZGVzKHBhdGgsIFwiX19wcm90b19fXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiX19wcm90b19fIGlzIG5vdCBhbGxvd2VkIGFzIGEgcHJvcGVydHlcIik7XG4gIH1cbiAgaWYgKGluY2x1ZGVzKHBhdGgsIFwicHJvdG90eXBlXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwicHJvdG90eXBlIGlzIG5vdCBhbGxvd2VkIGFzIGEgcHJvcGVydHlcIik7XG4gIH1cbiAgaWYgKGluY2x1ZGVzKHBhdGgsIFwiY29uc3RydWN0b3JcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJ1Y3RvciBpcyBub3QgYWxsb3dlZCBhcyBhIHByb3BlcnR5XCIpO1xuICB9XG59XG52YXIgZ2V0RGVlcCA9IChvYmplY3QsIHBhdGgpID0+IHtcbiAgdmFsaWRhdGVQYXRoKHBhdGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBrZXkgPSBwYXRoW2ldO1xuICAgIGlmIChpc1NldChvYmplY3QpKSB7XG4gICAgICBvYmplY3QgPSBnZXROdGhLZXkob2JqZWN0LCAra2V5KTtcbiAgICB9IGVsc2UgaWYgKGlzTWFwKG9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHJvdyA9ICtrZXk7XG4gICAgICBjb25zdCB0eXBlID0gK3BhdGhbKytpXSA9PT0gMCA/IFwia2V5XCIgOiBcInZhbHVlXCI7XG4gICAgICBjb25zdCBrZXlPZlJvdyA9IGdldE50aEtleShvYmplY3QsIHJvdyk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcImtleVwiOlxuICAgICAgICAgIG9iamVjdCA9IGtleU9mUm93O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICBvYmplY3QgPSBvYmplY3QuZ2V0KGtleU9mUm93KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59O1xudmFyIHNldERlZXAgPSAob2JqZWN0LCBwYXRoLCBtYXBwZXIpID0+IHtcbiAgdmFsaWRhdGVQYXRoKHBhdGgpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbWFwcGVyKG9iamVjdCk7XG4gIH1cbiAgbGV0IHBhcmVudCA9IG9iamVjdDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IHBhdGhbaV07XG4gICAgaWYgKGlzQXJyYXkocGFyZW50KSkge1xuICAgICAgY29uc3QgaW5kZXggPSAra2V5O1xuICAgICAgcGFyZW50ID0gcGFyZW50W2luZGV4XTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocGFyZW50KSkge1xuICAgICAgcGFyZW50ID0gcGFyZW50W2tleV07XG4gICAgfSBlbHNlIGlmIChpc1NldChwYXJlbnQpKSB7XG4gICAgICBjb25zdCByb3cgPSAra2V5O1xuICAgICAgcGFyZW50ID0gZ2V0TnRoS2V5KHBhcmVudCwgcm93KTtcbiAgICB9IGVsc2UgaWYgKGlzTWFwKHBhcmVudCkpIHtcbiAgICAgIGNvbnN0IGlzRW5kID0gaSA9PT0gcGF0aC5sZW5ndGggLSAyO1xuICAgICAgaWYgKGlzRW5kKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm93ID0gK2tleTtcbiAgICAgIGNvbnN0IHR5cGUgPSArcGF0aFsrK2ldID09PSAwID8gXCJrZXlcIiA6IFwidmFsdWVcIjtcbiAgICAgIGNvbnN0IGtleU9mUm93ID0gZ2V0TnRoS2V5KHBhcmVudCwgcm93KTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwia2V5XCI6XG4gICAgICAgICAgcGFyZW50ID0ga2V5T2ZSb3c7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5nZXQoa2V5T2ZSb3cpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0S2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICBpZiAoaXNBcnJheShwYXJlbnQpKSB7XG4gICAgcGFyZW50WytsYXN0S2V5XSA9IG1hcHBlcihwYXJlbnRbK2xhc3RLZXldKTtcbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHBhcmVudCkpIHtcbiAgICBwYXJlbnRbbGFzdEtleV0gPSBtYXBwZXIocGFyZW50W2xhc3RLZXldKTtcbiAgfVxuICBpZiAoaXNTZXQocGFyZW50KSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0TnRoS2V5KHBhcmVudCwgK2xhc3RLZXkpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gbWFwcGVyKG9sZFZhbHVlKTtcbiAgICBpZiAob2xkVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICBwYXJlbnQuZGVsZXRlKG9sZFZhbHVlKTtcbiAgICAgIHBhcmVudC5hZGQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNNYXAocGFyZW50KSkge1xuICAgIGNvbnN0IHJvdyA9ICtwYXRoW3BhdGgubGVuZ3RoIC0gMl07XG4gICAgY29uc3Qga2V5VG9Sb3cgPSBnZXROdGhLZXkocGFyZW50LCByb3cpO1xuICAgIGNvbnN0IHR5cGUgPSArbGFzdEtleSA9PT0gMCA/IFwia2V5XCIgOiBcInZhbHVlXCI7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwia2V5XCI6IHtcbiAgICAgICAgY29uc3QgbmV3S2V5ID0gbWFwcGVyKGtleVRvUm93KTtcbiAgICAgICAgcGFyZW50LnNldChuZXdLZXksIHBhcmVudC5nZXQoa2V5VG9Sb3cpKTtcbiAgICAgICAgaWYgKG5ld0tleSAhPT0ga2V5VG9Sb3cpIHtcbiAgICAgICAgICBwYXJlbnQuZGVsZXRlKGtleVRvUm93KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJ2YWx1ZVwiOiB7XG4gICAgICAgIHBhcmVudC5zZXQoa2V5VG9Sb3csIG1hcHBlcihwYXJlbnQuZ2V0KGtleVRvUm93KSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdXBlcmpzb25AMi4yLjEvbm9kZV9tb2R1bGVzL3N1cGVyanNvbi9kaXN0L3BsYWluZXIuanNcbmZ1bmN0aW9uIHRyYXZlcnNlKHRyZWUsIHdhbGtlcjIsIG9yaWdpbiA9IFtdKSB7XG4gIGlmICghdHJlZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3JFYWNoKHRyZWUsIChzdWJ0cmVlLCBrZXkpID0+IHRyYXZlcnNlKHN1YnRyZWUsIHdhbGtlcjIsIFsuLi5vcmlnaW4sIC4uLnBhcnNlUGF0aChrZXkpXSkpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBbbm9kZVZhbHVlLCBjaGlsZHJlbjJdID0gdHJlZTtcbiAgaWYgKGNoaWxkcmVuMikge1xuICAgIGZvckVhY2goY2hpbGRyZW4yLCAoY2hpbGQsIGtleSkgPT4ge1xuICAgICAgdHJhdmVyc2UoY2hpbGQsIHdhbGtlcjIsIFsuLi5vcmlnaW4sIC4uLnBhcnNlUGF0aChrZXkpXSk7XG4gICAgfSk7XG4gIH1cbiAgd2Fsa2VyMihub2RlVmFsdWUsIG9yaWdpbik7XG59XG5mdW5jdGlvbiBhcHBseVZhbHVlQW5ub3RhdGlvbnMocGxhaW4sIGFubm90YXRpb25zLCBzdXBlckpzb24pIHtcbiAgdHJhdmVyc2UoYW5ub3RhdGlvbnMsICh0eXBlLCBwYXRoKSA9PiB7XG4gICAgcGxhaW4gPSBzZXREZWVwKHBsYWluLCBwYXRoLCAodikgPT4gdW50cmFuc2Zvcm1WYWx1ZSh2LCB0eXBlLCBzdXBlckpzb24pKTtcbiAgfSk7XG4gIHJldHVybiBwbGFpbjtcbn1cbmZ1bmN0aW9uIGFwcGx5UmVmZXJlbnRpYWxFcXVhbGl0eUFubm90YXRpb25zKHBsYWluLCBhbm5vdGF0aW9ucykge1xuICBmdW5jdGlvbiBhcHBseShpZGVudGljYWxQYXRocywgcGF0aCkge1xuICAgIGNvbnN0IG9iamVjdCA9IGdldERlZXAocGxhaW4sIHBhcnNlUGF0aChwYXRoKSk7XG4gICAgaWRlbnRpY2FsUGF0aHMubWFwKHBhcnNlUGF0aCkuZm9yRWFjaCgoaWRlbnRpY2FsT2JqZWN0UGF0aCkgPT4ge1xuICAgICAgcGxhaW4gPSBzZXREZWVwKHBsYWluLCBpZGVudGljYWxPYmplY3RQYXRoLCAoKSA9PiBvYmplY3QpO1xuICAgIH0pO1xuICB9XG4gIGlmIChpc0FycmF5KGFubm90YXRpb25zKSkge1xuICAgIGNvbnN0IFtyb290LCBvdGhlcl0gPSBhbm5vdGF0aW9ucztcbiAgICByb290LmZvckVhY2goKGlkZW50aWNhbFBhdGgpID0+IHtcbiAgICAgIHBsYWluID0gc2V0RGVlcChwbGFpbiwgcGFyc2VQYXRoKGlkZW50aWNhbFBhdGgpLCAoKSA9PiBwbGFpbik7XG4gICAgfSk7XG4gICAgaWYgKG90aGVyKSB7XG4gICAgICBmb3JFYWNoKG90aGVyLCBhcHBseSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvckVhY2goYW5ub3RhdGlvbnMsIGFwcGx5KTtcbiAgfVxuICByZXR1cm4gcGxhaW47XG59XG52YXIgaXNEZWVwID0gKG9iamVjdCwgc3VwZXJKc29uKSA9PiBpc1BsYWluT2JqZWN0KG9iamVjdCkgfHwgaXNBcnJheShvYmplY3QpIHx8IGlzTWFwKG9iamVjdCkgfHwgaXNTZXQob2JqZWN0KSB8fCBpc0luc3RhbmNlT2ZSZWdpc3RlcmVkQ2xhc3Mob2JqZWN0LCBzdXBlckpzb24pO1xuZnVuY3Rpb24gYWRkSWRlbnRpdHkob2JqZWN0LCBwYXRoLCBpZGVudGl0aWVzKSB7XG4gIGNvbnN0IGV4aXN0aW5nU2V0ID0gaWRlbnRpdGllcy5nZXQob2JqZWN0KTtcbiAgaWYgKGV4aXN0aW5nU2V0KSB7XG4gICAgZXhpc3RpbmdTZXQucHVzaChwYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBpZGVudGl0aWVzLnNldChvYmplY3QsIFtwYXRoXSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdlbmVyYXRlUmVmZXJlbnRpYWxFcXVhbGl0eUFubm90YXRpb25zKGlkZW50aXRpdGVzLCBkZWR1cGUpIHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGxldCByb290RXF1YWxpdHlQYXRocyA9IHZvaWQgMDtcbiAgaWRlbnRpdGl0ZXMuZm9yRWFjaCgocGF0aHMpID0+IHtcbiAgICBpZiAocGF0aHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFkZWR1cGUpIHtcbiAgICAgIHBhdGhzID0gcGF0aHMubWFwKChwYXRoKSA9PiBwYXRoLm1hcChTdHJpbmcpKS5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCAtIGIubGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgW3JlcHJlc2VudGF0aXZlUGF0aCwgLi4uaWRlbnRpY2FsUGF0aHNdID0gcGF0aHM7XG4gICAgaWYgKHJlcHJlc2VudGF0aXZlUGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJvb3RFcXVhbGl0eVBhdGhzID0gaWRlbnRpY2FsUGF0aHMubWFwKHN0cmluZ2lmeVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbc3RyaW5naWZ5UGF0aChyZXByZXNlbnRhdGl2ZVBhdGgpXSA9IGlkZW50aWNhbFBhdGhzLm1hcChzdHJpbmdpZnlQYXRoKTtcbiAgICB9XG4gIH0pO1xuICBpZiAocm9vdEVxdWFsaXR5UGF0aHMpIHtcbiAgICBpZiAoaXNFbXB0eU9iamVjdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gW3Jvb3RFcXVhbGl0eVBhdGhzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtyb290RXF1YWxpdHlQYXRocywgcmVzdWx0XTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGlzRW1wdHlPYmplY3QocmVzdWx0KSA/IHZvaWQgMCA6IHJlc3VsdDtcbiAgfVxufVxudmFyIHdhbGtlciA9IChvYmplY3QsIGlkZW50aXRpZXMsIHN1cGVySnNvbiwgZGVkdXBlLCBwYXRoID0gW10sIG9iamVjdHNJblRoaXNQYXRoID0gW10sIHNlZW5PYmplY3RzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSkgPT4ge1xuICBjb25zdCBwcmltaXRpdmUgPSBpc1ByaW1pdGl2ZShvYmplY3QpO1xuICBpZiAoIXByaW1pdGl2ZSkge1xuICAgIGFkZElkZW50aXR5KG9iamVjdCwgcGF0aCwgaWRlbnRpdGllcyk7XG4gICAgY29uc3Qgc2VlbiA9IHNlZW5PYmplY3RzLmdldChvYmplY3QpO1xuICAgIGlmIChzZWVuKSB7XG4gICAgICByZXR1cm4gZGVkdXBlID8ge1xuICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlOiBudWxsXG4gICAgICB9IDogc2VlbjtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc0RlZXAob2JqZWN0LCBzdXBlckpzb24pKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWQyID0gdHJhbnNmb3JtVmFsdWUob2JqZWN0LCBzdXBlckpzb24pO1xuICAgIGNvbnN0IHJlc3VsdDIgPSB0cmFuc2Zvcm1lZDIgPyB7XG4gICAgICB0cmFuc2Zvcm1lZFZhbHVlOiB0cmFuc2Zvcm1lZDIudmFsdWUsXG4gICAgICBhbm5vdGF0aW9uczogW3RyYW5zZm9ybWVkMi50eXBlXVxuICAgIH0gOiB7XG4gICAgICB0cmFuc2Zvcm1lZFZhbHVlOiBvYmplY3RcbiAgICB9O1xuICAgIGlmICghcHJpbWl0aXZlKSB7XG4gICAgICBzZWVuT2JqZWN0cy5zZXQob2JqZWN0LCByZXN1bHQyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDI7XG4gIH1cbiAgaWYgKGluY2x1ZGVzKG9iamVjdHNJblRoaXNQYXRoLCBvYmplY3QpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkVmFsdWU6IG51bGxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHRyYW5zZm9ybWF0aW9uUmVzdWx0ID0gdHJhbnNmb3JtVmFsdWUob2JqZWN0LCBzdXBlckpzb24pO1xuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybWF0aW9uUmVzdWx0Py52YWx1ZSA/PyBvYmplY3Q7XG4gIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSBpc0FycmF5KHRyYW5zZm9ybWVkKSA/IFtdIDoge307XG4gIGNvbnN0IGlubmVyQW5ub3RhdGlvbnMgPSB7fTtcbiAgZm9yRWFjaCh0cmFuc2Zvcm1lZCwgKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gXCJfX3Byb3RvX19cIiB8fCBpbmRleCA9PT0gXCJjb25zdHJ1Y3RvclwiIHx8IGluZGV4ID09PSBcInByb3RvdHlwZVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERldGVjdGVkIHByb3BlcnR5ICR7aW5kZXh9LiBUaGlzIGlzIGEgcHJvdG90eXBlIHBvbGx1dGlvbiByaXNrLCBwbGVhc2UgcmVtb3ZlIGl0IGZyb20geW91ciBvYmplY3QuYCk7XG4gICAgfVxuICAgIGNvbnN0IHJlY3Vyc2l2ZVJlc3VsdCA9IHdhbGtlcih2YWx1ZSwgaWRlbnRpdGllcywgc3VwZXJKc29uLCBkZWR1cGUsIFsuLi5wYXRoLCBpbmRleF0sIFsuLi5vYmplY3RzSW5UaGlzUGF0aCwgb2JqZWN0XSwgc2Vlbk9iamVjdHMpO1xuICAgIHRyYW5zZm9ybWVkVmFsdWVbaW5kZXhdID0gcmVjdXJzaXZlUmVzdWx0LnRyYW5zZm9ybWVkVmFsdWU7XG4gICAgaWYgKGlzQXJyYXkocmVjdXJzaXZlUmVzdWx0LmFubm90YXRpb25zKSkge1xuICAgICAgaW5uZXJBbm5vdGF0aW9uc1tpbmRleF0gPSByZWN1cnNpdmVSZXN1bHQuYW5ub3RhdGlvbnM7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlY3Vyc2l2ZVJlc3VsdC5hbm5vdGF0aW9ucykpIHtcbiAgICAgIGZvckVhY2gocmVjdXJzaXZlUmVzdWx0LmFubm90YXRpb25zLCAodHJlZSwga2V5KSA9PiB7XG4gICAgICAgIGlubmVyQW5ub3RhdGlvbnNbZXNjYXBlS2V5KGluZGV4KSArIFwiLlwiICsga2V5XSA9IHRyZWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCByZXN1bHQgPSBpc0VtcHR5T2JqZWN0KGlubmVyQW5ub3RhdGlvbnMpID8ge1xuICAgIHRyYW5zZm9ybWVkVmFsdWUsXG4gICAgYW5ub3RhdGlvbnM6ICEhdHJhbnNmb3JtYXRpb25SZXN1bHQgPyBbdHJhbnNmb3JtYXRpb25SZXN1bHQudHlwZV0gOiB2b2lkIDBcbiAgfSA6IHtcbiAgICB0cmFuc2Zvcm1lZFZhbHVlLFxuICAgIGFubm90YXRpb25zOiAhIXRyYW5zZm9ybWF0aW9uUmVzdWx0ID8gW3RyYW5zZm9ybWF0aW9uUmVzdWx0LnR5cGUsIGlubmVyQW5ub3RhdGlvbnNdIDogaW5uZXJBbm5vdGF0aW9uc1xuICB9O1xuICBpZiAoIXByaW1pdGl2ZSkge1xuICAgIHNlZW5PYmplY3RzLnNldChvYmplY3QsIHJlc3VsdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9pcy13aGF0QDQuMS4xNi9ub2RlX21vZHVsZXMvaXMtd2hhdC9kaXN0L2luZGV4LmpzXG5mdW5jdGlvbiBnZXRUeXBlMihwYXlsb2FkKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocGF5bG9hZCkuc2xpY2UoOCwgLTEpO1xufVxuZnVuY3Rpb24gaXNBcnJheTIocGF5bG9hZCkge1xuICByZXR1cm4gZ2V0VHlwZTIocGF5bG9hZCkgPT09IFwiQXJyYXlcIjtcbn1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QyKHBheWxvYWQpIHtcbiAgaWYgKGdldFR5cGUyKHBheWxvYWQpICE9PSBcIk9iamVjdFwiKVxuICAgIHJldHVybiBmYWxzZTtcbiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBheWxvYWQpO1xuICByZXR1cm4gISFwcm90b3R5cGUgJiYgcHJvdG90eXBlLmNvbnN0cnVjdG9yID09PSBPYmplY3QgJiYgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29weS1hbnl0aGluZ0AzLjAuNS9ub2RlX21vZHVsZXMvY29weS1hbnl0aGluZy9kaXN0L2luZGV4LmpzXG5mdW5jdGlvbiBhc3NpZ25Qcm9wMihjYXJyeSwga2V5LCBuZXdWYWwsIG9yaWdpbmFsT2JqZWN0LCBpbmNsdWRlTm9uZW51bWVyYWJsZSkge1xuICBjb25zdCBwcm9wVHlwZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob3JpZ2luYWxPYmplY3QsIGtleSkgPyBcImVudW1lcmFibGVcIiA6IFwibm9uZW51bWVyYWJsZVwiO1xuICBpZiAocHJvcFR5cGUgPT09IFwiZW51bWVyYWJsZVwiKVxuICAgIGNhcnJ5W2tleV0gPSBuZXdWYWw7XG4gIGlmIChpbmNsdWRlTm9uZW51bWVyYWJsZSAmJiBwcm9wVHlwZSA9PT0gXCJub25lbnVtZXJhYmxlXCIpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FycnksIGtleSwge1xuICAgICAgdmFsdWU6IG5ld1ZhbCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gY29weSh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBpZiAoaXNBcnJheTIodGFyZ2V0KSkge1xuICAgIHJldHVybiB0YXJnZXQubWFwKChpdGVtKSA9PiBjb3B5KGl0ZW0sIG9wdGlvbnMpKTtcbiAgfVxuICBpZiAoIWlzUGxhaW5PYmplY3QyKHRhcmdldCkpIHtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIGNvbnN0IHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgY29uc3Qgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KTtcbiAgcmV0dXJuIFsuLi5wcm9wcywgLi4uc3ltYm9sc10ucmVkdWNlKChjYXJyeSwga2V5KSA9PiB7XG4gICAgaWYgKGlzQXJyYXkyKG9wdGlvbnMucHJvcHMpICYmICFvcHRpb25zLnByb3BzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9XG4gICAgY29uc3QgdmFsID0gdGFyZ2V0W2tleV07XG4gICAgY29uc3QgbmV3VmFsID0gY29weSh2YWwsIG9wdGlvbnMpO1xuICAgIGFzc2lnblByb3AyKGNhcnJ5LCBrZXksIG5ld1ZhbCwgdGFyZ2V0LCBvcHRpb25zLm5vbmVudW1lcmFibGUpO1xuICAgIHJldHVybiBjYXJyeTtcbiAgfSwge30pO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9pbmRleC5qc1xudmFyIFN1cGVySlNPTiA9IGNsYXNzIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBkZWR1cGVSZWZlcmVudGlhbEVxdWFsaXRpZXMgIElmIHRydWUsIFN1cGVySlNPTiB3aWxsIG1ha2Ugc3VyZSBvbmx5IG9uZSBpbnN0YW5jZSBvZiByZWZlcmVudGlhbGx5IGVxdWFsIG9iamVjdHMgYXJlIHNlcmlhbGl6ZWQgYW5kIHRoZSByZXN0IGFyZSByZXBsYWNlZCB3aXRoIGBudWxsYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHsgZGVkdXBlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgdGhpcy5jbGFzc1JlZ2lzdHJ5ID0gbmV3IENsYXNzUmVnaXN0cnkoKTtcbiAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KChzKSA9PiBzLmRlc2NyaXB0aW9uID8/IFwiXCIpO1xuICAgIHRoaXMuY3VzdG9tVHJhbnNmb3JtZXJSZWdpc3RyeSA9IG5ldyBDdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5KCk7XG4gICAgdGhpcy5hbGxvd2VkRXJyb3JQcm9wcyA9IFtdO1xuICAgIHRoaXMuZGVkdXBlID0gZGVkdXBlO1xuICB9XG4gIHNlcmlhbGl6ZShvYmplY3QpIHtcbiAgICBjb25zdCBpZGVudGl0aWVzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICBjb25zdCBvdXRwdXQgPSB3YWxrZXIob2JqZWN0LCBpZGVudGl0aWVzLCB0aGlzLCB0aGlzLmRlZHVwZSk7XG4gICAgY29uc3QgcmVzID0ge1xuICAgICAganNvbjogb3V0cHV0LnRyYW5zZm9ybWVkVmFsdWVcbiAgICB9O1xuICAgIGlmIChvdXRwdXQuYW5ub3RhdGlvbnMpIHtcbiAgICAgIHJlcy5tZXRhID0ge1xuICAgICAgICAuLi5yZXMubWV0YSxcbiAgICAgICAgdmFsdWVzOiBvdXRwdXQuYW5ub3RhdGlvbnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGVxdWFsaXR5QW5ub3RhdGlvbnMgPSBnZW5lcmF0ZVJlZmVyZW50aWFsRXF1YWxpdHlBbm5vdGF0aW9ucyhpZGVudGl0aWVzLCB0aGlzLmRlZHVwZSk7XG4gICAgaWYgKGVxdWFsaXR5QW5ub3RhdGlvbnMpIHtcbiAgICAgIHJlcy5tZXRhID0ge1xuICAgICAgICAuLi5yZXMubWV0YSxcbiAgICAgICAgcmVmZXJlbnRpYWxFcXVhbGl0aWVzOiBlcXVhbGl0eUFubm90YXRpb25zXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGRlc2VyaWFsaXplKHBheWxvYWQpIHtcbiAgICBjb25zdCB7IGpzb24sIG1ldGEgfSA9IHBheWxvYWQ7XG4gICAgbGV0IHJlc3VsdCA9IGNvcHkoanNvbik7XG4gICAgaWYgKG1ldGE/LnZhbHVlcykge1xuICAgICAgcmVzdWx0ID0gYXBwbHlWYWx1ZUFubm90YXRpb25zKHJlc3VsdCwgbWV0YS52YWx1ZXMsIHRoaXMpO1xuICAgIH1cbiAgICBpZiAobWV0YT8ucmVmZXJlbnRpYWxFcXVhbGl0aWVzKSB7XG4gICAgICByZXN1bHQgPSBhcHBseVJlZmVyZW50aWFsRXF1YWxpdHlBbm5vdGF0aW9ucyhyZXN1bHQsIG1ldGEucmVmZXJlbnRpYWxFcXVhbGl0aWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBzdHJpbmdpZnkob2JqZWN0KSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VyaWFsaXplKG9iamVjdCkpO1xuICB9XG4gIHBhcnNlKHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRlc2VyaWFsaXplKEpTT04ucGFyc2Uoc3RyaW5nKSk7XG4gIH1cbiAgcmVnaXN0ZXJDbGFzcyh2LCBvcHRpb25zKSB7XG4gICAgdGhpcy5jbGFzc1JlZ2lzdHJ5LnJlZ2lzdGVyKHYsIG9wdGlvbnMpO1xuICB9XG4gIHJlZ2lzdGVyU3ltYm9sKHYsIGlkZW50aWZpZXIpIHtcbiAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyKHYsIGlkZW50aWZpZXIpO1xuICB9XG4gIHJlZ2lzdGVyQ3VzdG9tKHRyYW5zZm9ybWVyLCBuYW1lKSB7XG4gICAgdGhpcy5jdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICAgIG5hbWUsXG4gICAgICAuLi50cmFuc2Zvcm1lclxuICAgIH0pO1xuICB9XG4gIGFsbG93RXJyb3JQcm9wcyguLi5wcm9wcykge1xuICAgIHRoaXMuYWxsb3dlZEVycm9yUHJvcHMucHVzaCguLi5wcm9wcyk7XG4gIH1cbn07XG5TdXBlckpTT04uZGVmYXVsdEluc3RhbmNlID0gbmV3IFN1cGVySlNPTigpO1xuU3VwZXJKU09OLnNlcmlhbGl6ZSA9IFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2Uuc2VyaWFsaXplLmJpbmQoU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZSk7XG5TdXBlckpTT04uZGVzZXJpYWxpemUgPSBTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlLmRlc2VyaWFsaXplLmJpbmQoU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZSk7XG5TdXBlckpTT04uc3RyaW5naWZ5ID0gU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZS5zdHJpbmdpZnkuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5wYXJzZSA9IFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UucGFyc2UuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5yZWdpc3RlckNsYXNzID0gU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZS5yZWdpc3RlckNsYXNzLmJpbmQoU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZSk7XG5TdXBlckpTT04ucmVnaXN0ZXJTeW1ib2wgPSBTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlLnJlZ2lzdGVyU3ltYm9sLmJpbmQoU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZSk7XG5TdXBlckpTT04ucmVnaXN0ZXJDdXN0b20gPSBTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlLnJlZ2lzdGVyQ3VzdG9tLmJpbmQoU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZSk7XG5TdXBlckpTT04uYWxsb3dFcnJvclByb3BzID0gU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZS5hbGxvd0Vycm9yUHJvcHMuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcbnZhciBzZXJpYWxpemUgPSBTdXBlckpTT04uc2VyaWFsaXplO1xuU3VwZXJKU09OLmRlc2VyaWFsaXplO1xudmFyIHN0cmluZ2lmeSA9IFN1cGVySlNPTi5zdHJpbmdpZnk7XG5TdXBlckpTT04ucGFyc2U7XG5TdXBlckpTT04ucmVnaXN0ZXJDbGFzcztcblN1cGVySlNPTi5yZWdpc3RlckN1c3RvbTtcblN1cGVySlNPTi5yZWdpc3RlclN5bWJvbDtcblN1cGVySlNPTi5hbGxvd0Vycm9yUHJvcHM7XG5cbi8vIHNyYy91dGlscy50c3hcbmZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnkpIHtcbiAgcmV0dXJuIHF1ZXJ5LnN0YXRlLmZldGNoU3RhdHVzID09PSBcImZldGNoaW5nXCIgPyBcImZldGNoaW5nXCIgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKSA/IFwiaW5hY3RpdmVcIiA6IHF1ZXJ5LnN0YXRlLmZldGNoU3RhdHVzID09PSBcInBhdXNlZFwiID8gXCJwYXVzZWRcIiA6IHF1ZXJ5LmlzU3RhbGUoKSA/IFwic3RhbGVcIiA6IFwiZnJlc2hcIjtcbn1cbmZ1bmN0aW9uIGdldFNpZGVkUHJvcChwcm9wLCBzaWRlKSB7XG4gIHJldHVybiBgJHtwcm9wfSR7c2lkZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHNpZGUuc2xpY2UoMSl9YDtcbn1cbmZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzQ29sb3Ioe1xuICBxdWVyeVN0YXRlLFxuICBvYnNlcnZlckNvdW50LFxuICBpc1N0YWxlXG59KSB7XG4gIHJldHVybiBxdWVyeVN0YXRlLmZldGNoU3RhdHVzID09PSBcImZldGNoaW5nXCIgPyBcImJsdWVcIiA6ICFvYnNlcnZlckNvdW50ID8gXCJncmF5XCIgOiBxdWVyeVN0YXRlLmZldGNoU3RhdHVzID09PSBcInBhdXNlZFwiID8gXCJwdXJwbGVcIiA6IGlzU3RhbGUgPyBcInllbGxvd1wiIDogXCJncmVlblwiO1xufVxuZnVuY3Rpb24gZ2V0TXV0YXRpb25TdGF0dXNDb2xvcih7XG4gIHN0YXR1cyxcbiAgaXNQYXVzZWRcbn0pIHtcbiAgcmV0dXJuIGlzUGF1c2VkID8gXCJwdXJwbGVcIiA6IHN0YXR1cyA9PT0gXCJlcnJvclwiID8gXCJyZWRcIiA6IHN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgPyBcInllbGxvd1wiIDogc3RhdHVzID09PSBcInN1Y2Nlc3NcIiA/IFwiZ3JlZW5cIiA6IFwiZ3JheVwiO1xufVxuZnVuY3Rpb24gZ2V0UXVlcnlTdGF0dXNDb2xvckJ5TGFiZWwobGFiZWwpIHtcbiAgcmV0dXJuIGxhYmVsID09PSBcImZyZXNoXCIgPyBcImdyZWVuXCIgOiBsYWJlbCA9PT0gXCJzdGFsZVwiID8gXCJ5ZWxsb3dcIiA6IGxhYmVsID09PSBcInBhdXNlZFwiID8gXCJwdXJwbGVcIiA6IGxhYmVsID09PSBcImluYWN0aXZlXCIgPyBcImdyYXlcIiA6IFwiYmx1ZVwiO1xufVxudmFyIGRpc3BsYXlWYWx1ZSA9ICh2YWx1ZSwgYmVhdXRpZnkgPSBmYWxzZSkgPT4ge1xuICBjb25zdCB7XG4gICAganNvblxuICB9ID0gc2VyaWFsaXplKHZhbHVlKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIGJlYXV0aWZ5ID8gMiA6IHZvaWQgMCk7XG59O1xudmFyIGdldFN0YXR1c1JhbmsgPSAocSkgPT4gcS5zdGF0ZS5mZXRjaFN0YXR1cyAhPT0gXCJpZGxlXCIgPyAwIDogIXEuZ2V0T2JzZXJ2ZXJzQ291bnQoKSA/IDMgOiBxLmlzU3RhbGUoKSA/IDIgOiAxO1xudmFyIHF1ZXJ5SGFzaFNvcnQgPSAoYSwgYikgPT4gYS5xdWVyeUhhc2gubG9jYWxlQ29tcGFyZShiLnF1ZXJ5SGFzaCk7XG52YXIgZGF0ZVNvcnQgPSAoYSwgYikgPT4gYS5zdGF0ZS5kYXRhVXBkYXRlZEF0IDwgYi5zdGF0ZS5kYXRhVXBkYXRlZEF0ID8gMSA6IC0xO1xudmFyIHN0YXR1c0FuZERhdGVTb3J0ID0gKGEsIGIpID0+IHtcbiAgaWYgKGdldFN0YXR1c1JhbmsoYSkgPT09IGdldFN0YXR1c1JhbmsoYikpIHtcbiAgICByZXR1cm4gZGF0ZVNvcnQoYSwgYik7XG4gIH1cbiAgcmV0dXJuIGdldFN0YXR1c1JhbmsoYSkgPiBnZXRTdGF0dXNSYW5rKGIpID8gMSA6IC0xO1xufTtcbnZhciBzb3J0Rm5zID0ge1xuICBzdGF0dXM6IHN0YXR1c0FuZERhdGVTb3J0LFxuICBcInF1ZXJ5IGhhc2hcIjogcXVlcnlIYXNoU29ydCxcbiAgXCJsYXN0IHVwZGF0ZWRcIjogZGF0ZVNvcnRcbn07XG52YXIgZ2V0TXV0YXRpb25TdGF0dXNSYW5rID0gKG0pID0+IG0uc3RhdGUuaXNQYXVzZWQgPyAwIDogbS5zdGF0ZS5zdGF0dXMgPT09IFwiZXJyb3JcIiA/IDIgOiBtLnN0YXRlLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgPyAxIDogMztcbnZhciBtdXRhdGlvbkRhdGVTb3J0ID0gKGEsIGIpID0+IGEuc3RhdGUuc3VibWl0dGVkQXQgPCBiLnN0YXRlLnN1Ym1pdHRlZEF0ID8gMSA6IC0xO1xudmFyIG11dGF0aW9uU3RhdHVzU29ydCA9IChhLCBiKSA9PiB7XG4gIGlmIChnZXRNdXRhdGlvblN0YXR1c1JhbmsoYSkgPT09IGdldE11dGF0aW9uU3RhdHVzUmFuayhiKSkge1xuICAgIHJldHVybiBtdXRhdGlvbkRhdGVTb3J0KGEsIGIpO1xuICB9XG4gIHJldHVybiBnZXRNdXRhdGlvblN0YXR1c1JhbmsoYSkgPiBnZXRNdXRhdGlvblN0YXR1c1JhbmsoYikgPyAxIDogLTE7XG59O1xudmFyIG11dGF0aW9uU29ydEZucyA9IHtcbiAgc3RhdHVzOiBtdXRhdGlvblN0YXR1c1NvcnQsXG4gIFwibGFzdCB1cGRhdGVkXCI6IG11dGF0aW9uRGF0ZVNvcnRcbn07XG52YXIgY29udmVydFJlbVRvUGl4ZWxzID0gKHJlbSkgPT4ge1xuICByZXR1cm4gcmVtICogcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpO1xufTtcbnZhciBnZXRQcmVmZXJyZWRDb2xvclNjaGVtZSA9ICgpID0+IHtcbiAgY29uc3QgW2NvbG9yU2NoZW1lLCBzZXRDb2xvclNjaGVtZV0gPSBjcmVhdGVTaWduYWwoXCJkYXJrXCIpO1xuICBvbk1vdW50KCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKTtcbiAgICBzZXRDb2xvclNjaGVtZShxdWVyeS5tYXRjaGVzID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIpO1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKGUpID0+IHtcbiAgICAgIHNldENvbG9yU2NoZW1lKGUubWF0Y2hlcyA/IFwiZGFya1wiIDogXCJsaWdodFwiKTtcbiAgICB9O1xuICAgIHF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgbGlzdGVuZXIpO1xuICAgIG9uQ2xlYW51cCgoKSA9PiBxdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGxpc3RlbmVyKSk7XG4gIH0pO1xuICByZXR1cm4gY29sb3JTY2hlbWU7XG59O1xudmFyIHVwZGF0ZU5lc3RlZERhdGFCeVBhdGggPSAob2xkRGF0YSwgdXBkYXRlUGF0aCwgdmFsdWUpID0+IHtcbiAgaWYgKHVwZGF0ZVBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChvbGREYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgY29uc3QgbmV3RGF0YSA9IG5ldyBNYXAob2xkRGF0YSk7XG4gICAgaWYgKHVwZGF0ZVBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICBuZXdEYXRhLnNldCh1cGRhdGVQYXRoWzBdLCB2YWx1ZSk7XG4gICAgICByZXR1cm4gbmV3RGF0YTtcbiAgICB9XG4gICAgY29uc3QgW2hlYWQsIC4uLnRhaWxdID0gdXBkYXRlUGF0aDtcbiAgICBuZXdEYXRhLnNldChoZWFkLCB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoKG5ld0RhdGEuZ2V0KGhlYWQpLCB0YWlsLCB2YWx1ZSkpO1xuICAgIHJldHVybiBuZXdEYXRhO1xuICB9XG4gIGlmIChvbGREYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgY29uc3Qgc2V0QXNBcnJheSA9IHVwZGF0ZU5lc3RlZERhdGFCeVBhdGgoQXJyYXkuZnJvbShvbGREYXRhKSwgdXBkYXRlUGF0aCwgdmFsdWUpO1xuICAgIHJldHVybiBuZXcgU2V0KHNldEFzQXJyYXkpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG9sZERhdGEpKSB7XG4gICAgY29uc3QgbmV3RGF0YSA9IFsuLi5vbGREYXRhXTtcbiAgICBpZiAodXBkYXRlUGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5ld0RhdGFbdXBkYXRlUGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiBuZXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSB1cGRhdGVQYXRoO1xuICAgIG5ld0RhdGFbaGVhZF0gPSB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoKG5ld0RhdGFbaGVhZF0sIHRhaWwsIHZhbHVlKTtcbiAgICByZXR1cm4gbmV3RGF0YTtcbiAgfVxuICBpZiAob2xkRGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIGNvbnN0IG5ld0RhdGEgPSB7XG4gICAgICAuLi5vbGREYXRhXG4gICAgfTtcbiAgICBpZiAodXBkYXRlUGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5ld0RhdGFbdXBkYXRlUGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiBuZXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSB1cGRhdGVQYXRoO1xuICAgIG5ld0RhdGFbaGVhZF0gPSB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoKG5ld0RhdGFbaGVhZF0sIHRhaWwsIHZhbHVlKTtcbiAgICByZXR1cm4gbmV3RGF0YTtcbiAgfVxuICByZXR1cm4gb2xkRGF0YTtcbn07XG52YXIgZGVsZXRlTmVzdGVkRGF0YUJ5UGF0aCA9IChvbGREYXRhLCBkZWxldGVQYXRoKSA9PiB7XG4gIGlmIChvbGREYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgY29uc3QgbmV3RGF0YSA9IG5ldyBNYXAob2xkRGF0YSk7XG4gICAgaWYgKGRlbGV0ZVBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICBuZXdEYXRhLmRlbGV0ZShkZWxldGVQYXRoWzBdKTtcbiAgICAgIHJldHVybiBuZXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSBkZWxldGVQYXRoO1xuICAgIG5ld0RhdGEuc2V0KGhlYWQsIGRlbGV0ZU5lc3RlZERhdGFCeVBhdGgobmV3RGF0YS5nZXQoaGVhZCksIHRhaWwpKTtcbiAgICByZXR1cm4gbmV3RGF0YTtcbiAgfVxuICBpZiAob2xkRGF0YSBpbnN0YW5jZW9mIFNldCkge1xuICAgIGNvbnN0IHNldEFzQXJyYXkgPSBkZWxldGVOZXN0ZWREYXRhQnlQYXRoKEFycmF5LmZyb20ob2xkRGF0YSksIGRlbGV0ZVBhdGgpO1xuICAgIHJldHVybiBuZXcgU2V0KHNldEFzQXJyYXkpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG9sZERhdGEpKSB7XG4gICAgY29uc3QgbmV3RGF0YSA9IFsuLi5vbGREYXRhXTtcbiAgICBpZiAoZGVsZXRlUGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBuZXdEYXRhLmZpbHRlcigoXywgaWR4KSA9PiBpZHgudG9TdHJpbmcoKSAhPT0gZGVsZXRlUGF0aFswXSk7XG4gICAgfVxuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IGRlbGV0ZVBhdGg7XG4gICAgbmV3RGF0YVtoZWFkXSA9IGRlbGV0ZU5lc3RlZERhdGFCeVBhdGgobmV3RGF0YVtoZWFkXSwgdGFpbCk7XG4gICAgcmV0dXJuIG5ld0RhdGE7XG4gIH1cbiAgaWYgKG9sZERhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICBjb25zdCBuZXdEYXRhID0ge1xuICAgICAgLi4ub2xkRGF0YVxuICAgIH07XG4gICAgaWYgKGRlbGV0ZVBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICBkZWxldGUgbmV3RGF0YVtkZWxldGVQYXRoWzBdXTtcbiAgICAgIHJldHVybiBuZXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSBkZWxldGVQYXRoO1xuICAgIG5ld0RhdGFbaGVhZF0gPSBkZWxldGVOZXN0ZWREYXRhQnlQYXRoKG5ld0RhdGFbaGVhZF0sIHRhaWwpO1xuICAgIHJldHVybiBuZXdEYXRhO1xuICB9XG4gIHJldHVybiBvbGREYXRhO1xufTtcbnZhciBzZXR1cFN0eWxlU2hlZXQgPSAobm9uY2UsIHRhcmdldCkgPT4ge1xuICBpZiAoIW5vbmNlKSByZXR1cm47XG4gIGNvbnN0IHN0eWxlRXhpc3RzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfZ29vYmVyXCIpIHx8IHRhcmdldD8ucXVlcnlTZWxlY3RvcihcIiNfZ29vYmVyXCIpO1xuICBpZiAoc3R5bGVFeGlzdHMpIHJldHVybjtcbiAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIGNvbnN0IHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7XG4gIHN0eWxlVGFnLmFwcGVuZENoaWxkKHRleHROb2RlKTtcbiAgc3R5bGVUYWcuaWQgPSBcIl9nb29iZXJcIjtcbiAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICBpZiAodGFyZ2V0KSB7XG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgJFRSQUNLLCBERVYsIER5bmFtaWMsIEZvciwgSW5kZXgsIE1hdGNoLCBQb3J0YWwsIFNob3csIFN3aXRjaCwgYWRkRXZlbnRMaXN0ZW5lciwgYmF0Y2gsIGNsYXNzTmFtZSwgY2xlYXJEZWxlZ2F0ZWRFdmVudHMsIGNvbnZlcnRSZW1Ub1BpeGVscywgY3JlYXRlQ29tcG9uZW50LCBjcmVhdGVDb21wdXRlZCwgY3JlYXRlQ29udGV4dCwgY3JlYXRlRWZmZWN0LCBjcmVhdGVNZW1vLCBjcmVhdGVSZW5kZXJFZmZlY3QsIGNyZWF0ZVJvb3QsIGNyZWF0ZVNpZ25hbCwgY3JlYXRlVW5pcXVlSWQsIGRlbGVnYXRlRXZlbnRzLCBkZWxldGVOZXN0ZWREYXRhQnlQYXRoLCBkaXNwbGF5VmFsdWUsIGdldE11dGF0aW9uU3RhdHVzQ29sb3IsIGdldE93bmVyLCBnZXRQcmVmZXJyZWRDb2xvclNjaGVtZSwgZ2V0UXVlcnlTdGF0dXNDb2xvciwgZ2V0UXVlcnlTdGF0dXNDb2xvckJ5TGFiZWwsIGdldFF1ZXJ5U3RhdHVzTGFiZWwsIGdldFNpZGVkUHJvcCwgaW5zZXJ0LCBpc1NlcnZlciwgbGF6eSwgbWVyZ2VQcm9wcywgbXV0YXRpb25Tb3J0Rm5zLCBvbiwgb25DbGVhbnVwLCBvbk1vdW50LCByZW5kZXIsIHNlcmlhbGl6ZSwgc2V0QXR0cmlidXRlLCBzZXR1cFN0eWxlU2hlZXQsIHNvcnRGbnMsIHNwbGl0UHJvcHMsIHNwcmVhZCwgc3RyaW5naWZ5LCB0ZW1wbGF0ZSwgdW50cmFjaywgdXBkYXRlTmVzdGVkRGF0YUJ5UGF0aCwgdXNlLCB1c2VDb250ZXh0LCB1c2VUcmFuc2l0aW9uIH07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFDQSxJQUFJQSxFQUFlLENBQ2pCLFFBQVMsT0FDVCxTQUFVLE9BQ1YsUUFBUyxPQUNULEtBQU0sR0FDTixjQUFlLENBQ2IsT0FBT0MsR0FBYSxLQUFLLFFBQVEsS0FBSyxDQUN4QyxFQUNBLGtCQUFtQixDQUNqQixPQUFPQSxHQUFhLEtBQUssUUFBUSxPQUFPLENBQzFDLENBQ0YsRUFDQSxTQUFTQSxHQUFhQyxFQUFPLENBQzNCLElBQU1DLEVBQU0sT0FBT0QsQ0FBSyxFQUFHRSxFQUFNRCxFQUFJLE9BQVMsRUFDOUMsT0FBT0gsRUFBYSxRQUFRLElBQU1JLEVBQU0sT0FBTyxhQUFhLEdBQUtBLENBQUcsRUFBSSxJQUFNRCxDQUNoRixDQUNBLFNBQVNFLEVBQWtCQyxFQUFTLENBQ2xDTixFQUFhLFFBQVVNLENBQ3pCLENBQ0EsU0FBU0MsSUFBcUIsQ0FDNUIsTUFBTyxDQUNMLEdBQUdQLEVBQWEsUUFDaEIsR0FBSUEsRUFBYSxpQkFBaUIsRUFDbEMsTUFBTyxDQUNULENBQ0YsQ0FDQSxJQUFJUSxHQUFTLEdBQ1RD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SSxJQUFJRixDQUFVLENBQzNCLENBQ0EsR0FBSSxNQUFNLFFBQVFMLENBQU8sRUFBRyxDQUMxQixJQUFNRSxFQUFVLENBQUMsR0FBR0YsQ0FBTyxFQUMzQixHQUFJTyxFQUFXLFNBQVcsRUFDeEIsT0FBT0wsRUFBUSxPQUFPLENBQUN6VyxFQUFHK1csSUFBUUEsRUFBSSxTQUFTLElBQU1ELEVBQVcsQ0FBQyxDQUFDLEVBRXBFLEdBQU0sQ0FBQ0osRUFBTSxHQUFHQyxDQUFJLEVBQUlHLEVBQ3hCLE9BQUFMLEVBQVFDLENBQUksRUFBSUcsR0FBdUJKLEVBQVFDLENBQUksRUFBR0MsQ0FBSSxFQUNuREYsQ0FDVCxDQUNBLEdBQUlGLGFBQW1CLE9BQVEsQ0FDN0IsSUFBTUUsRUFBVSxDQUNkLEdBQUdGLENBQ0wsRUFDQSxHQUFJTyxFQUFXLFNBQVcsRUFDeEIsY0FBT0wsRUFBUUssRUFBVyxDQUFDLENBQUMsRUFDckJMLEVBRVQsR0FBTSxDQUFDQyxFQUFNLEdBQUdDLENBQUksRUFBSUcsRUFDeEIsT0FBQUwsRUFBUUMsQ0FBSSxFQUFJRyxHQUF1QkosRUFBUUMsQ0FBSSxFQUFHQyxDQUFJLEVBQ25ERixDQUNULENBQ0EsT0FBT0YsQ0FDVCxFQUNJUyxHQUFrQixDQUFDQyxFQUFPbFcsSUFBVyxDQUd2QyxHQUZJLENBQUNrVyxHQUNlLFNBQVMsY0FBYyxVQUFVLEdBQUtsVyxHQUFRLGNBQWMsVUFBVSxFQUN6RSxPQUNqQixJQUFNbVcsRUFBVyxTQUFTLGNBQWMsT0FBTyxFQUN6Q0MsRUFBVyxTQUFTLGVBQWUsRUFBRSxFQUMzQ0QsRUFBUyxZQUFZQyxDQUFRLEVBQzdCRCxFQUFTLEdBQUssVUFDZEEsRUFBUyxhQUFhLFFBQVNELENBQUssRUFDaENsVyxFQUNGQSxFQUFPLFlBQVltVyxDQUFRLEVBRTNCLFNBQVMsS0FBSyxZQUFZQSxDQUFRLENBRXRDIiwKICAibmFtZXMiOiBbInNoYXJlZENvbmZpZyIsICJnZXRDb250ZXh0SWQiLCAiY291bnQiLCAibnVtIiwgImxlbiIsICJzZXRIeWRyYXRlQ29udGV4dCIsICJjb250ZXh0IiwgIm5leHRIeWRyYXRlQ29udGV4dCIsICJJU19ERVYiLCAiZXF1YWxGbiIsICJhIiwgImIiLCAiJFBST1hZIiwgIlNVUFBPUlRTX1BST1hZIiwgIiRUUkFDSyIsICJzaWduYWxPcHRpb25zIiwgIkVSUk9SIiwgInJ1bkVmZmVjdHMiLCAicnVuUXVldWUiLCAiU1RBTEUiLCAiUEVORElORyIsICJVTk9XTkVEIiwgIk5PX0lOSVQiLCAiT3duZXIiLCAiVHJhbnNpdGlvbiIsICJTY2hlZHVsZXIiLCAiRXh0ZXJuYWxTb3VyY2VDb25maWciLCAiTGlzdGVuZXIiLCAiVXBkYXRlcyIsICJFZmZlY3RzIiwgIkV4ZWNDb3VudCIsICJjcmVhdGVSb290IiwgImZuIiwgImRldGFjaGVkT3duZXIiLCAibGlzdGVuZXIiLCAib3duZXIiLCAidW5vd25lZCIsICJjdXJyZW50IiwgInJvb3QiLCAidXBkYXRlRm4iLCAidW50cmFjayIsICJjbGVhbk5vZGUiLCAicnVuVXBkYXRlcyIsICJjcmVhdGVTaWduYWwiLCAidmFsdWUiLCAib3B0aW9ucyIsICJzIiwgInNldHRlciIsICJ2YWx1ZTIiLCAid3JpdGVTaWduYWwiLCAicmVhZFNpZ25hbCIsICJjcmVhdGVDb21wdXRlZCIsICJjIiwgImNyZWF0ZUNvbXB1dGF0aW9uIiwgInVwZGF0ZUNvbXB1dGF0aW9uIiwgImNyZWF0ZVJlbmRlckVmZmVjdCIsICJjcmVhdGVFZmZlY3QiLCAicnVuVXNlckVmZmVjdHMiLCAiU3VzcGVuc2VDb250ZXh0IiwgInVzZUNvbnRleHQiLCAiY3JlYXRlTWVtbyIsICJpc1Byb21pc2UiLCAidiIsICJjcmVhdGVSZXNvdXJjZSIsICJwU291cmNlIiwgInBGZXRjaGVyIiwgInBPcHRpb25zIiwgInNvdXJjZSIsICJmZXRjaGVyIiwgInByIiwgImluaXRQIiwgImlkIiwgImxvYWRlZFVuZGVyVHJhbnNpdGlvbiIsICJzY2hlZHVsZWQiLCAicmVzb2x2ZWQiLCAiZHluYW1pYyIsICJjb250ZXh0cyIsICJzZXRWYWx1ZSIsICJlcnJvciIsICJzZXRFcnJvciIsICJ0cmFjayIsICJ0cmlnZ2VyIiwgInN0YXRlIiwgInNldFN0YXRlIiwgImxvYWRFbmQiLCAicCIsICJlcnJvcjIiLCAia2V5IiwgImNvbXBsZXRlTG9hZCIsICJlcnIiLCAicmVhZCIsICJsb2FkIiwgInJlZmV0Y2hpbmciLCAibG9va3VwIiwgImNhc3RFcnJvciIsICJlIiwgImJhdGNoIiwgIm9uIiwgImRlcHMiLCAiaXNBcnJheTMiLCAicHJldklucHV0IiwgImRlZmVyIiwgInByZXZWYWx1ZSIsICJpbnB1dCIsICJpIiwgInJlc3VsdCIsICJvbk1vdW50IiwgIm9uQ2xlYW51cCIsICJnZXRPd25lciIsICJydW5XaXRoT3duZXIiLCAibyIsICJwcmV2IiwgInByZXZMaXN0ZW5lciIsICJoYW5kbGVFcnJvciIsICJzdGFydFRyYW5zaXRpb24iLCAibCIsICJ0IiwgInJlcyIsICJ0cmFuc1BlbmRpbmciLCAic2V0VHJhbnNQZW5kaW5nIiwgInVzZVRyYW5zaXRpb24iLCAiY3JlYXRlQ29udGV4dCIsICJkZWZhdWx0VmFsdWUiLCAiY3JlYXRlUHJvdmlkZXIiLCAiY2hpbGRyZW4iLCAiY2hpbGRyZW4yIiwgIm1lbW8iLCAicmVzb2x2ZUNoaWxkcmVuIiwgInJ1bm5pbmdUcmFuc2l0aW9uIiwgInVwZGF0ZXMiLCAibG9va1Vwc3RyZWFtIiwgInNTbG90IiwgIm5vZGUiLCAiaXNDb21wIiwgIlRyYW5zaXRpb25SdW5uaW5nIiwgIm1hcmtEb3duc3RyZWFtIiwgInRpbWUiLCAicnVuQ29tcHV0YXRpb24iLCAibmV4dFZhbHVlIiwgImluaXQiLCAicHVyZSIsICJvcmRpbmFyeSIsICJ0cmlnZ2VySW5UcmFuc2l0aW9uIiwgImluVHJhbnNpdGlvbiIsICJ4IiwgInJ1blRvcCIsICJhbmNlc3RvcnMiLCAidG9wIiwgIndhaXQiLCAiY29tcGxldGVVcGRhdGVzIiwgInNjaGVkdWxlUXVldWUiLCAic291cmNlcyIsICJkaXNwb3NlZCIsICJlMiIsICJkIiwgInF1ZXVlIiwgIml0ZW0iLCAidGFza3MiLCAidXNlckxlbmd0aCIsICJpZ25vcmUiLCAiaW5kZXgiLCAib2JzIiwgIm4iLCAicmVzZXQiLCAicnVuRXJyb3JzIiwgImZucyIsICJmIiwgInJlc3VsdHMiLCAicHJvcHMiLCAiRkFMTEJBQ0siLCAiZGlzcG9zZSIsICJtYXBBcnJheSIsICJsaXN0IiwgIm1hcEZuIiwgIml0ZW1zIiwgIm1hcHBlZCIsICJkaXNwb3NlcnMiLCAiaW5kZXhlcyIsICJuZXdJdGVtcyIsICJuZXdMZW4iLCAiaiIsICJuZXdJbmRpY2VzIiwgIm5ld0luZGljZXNOZXh0IiwgInRlbXAiLCAidGVtcGRpc3Bvc2VycyIsICJ0ZW1wSW5kZXhlcyIsICJzdGFydCIsICJlbmQiLCAibmV3RW5kIiwgImRpc3Bvc2VyIiwgIm1hcHBlciIsICJzZXQiLCAiaW5kZXhBcnJheSIsICJzaWduYWxzIiwgImh5ZHJhdGlvbkVuYWJsZWQiLCAiY3JlYXRlQ29tcG9uZW50IiwgIkNvbXAiLCAidHJ1ZUZuIiwgInByb3BUcmFwcyIsICJfIiwgInByb3BlcnR5IiwgInJlY2VpdmVyIiwgInJlc29sdmVTb3VyY2UiLCAicmVzb2x2ZVNvdXJjZXMiLCAibGVuZ3RoIiwgIm1lcmdlUHJvcHMiLCAicHJveHkiLCAia2V5cyIsICJzb3VyY2VzTWFwIiwgImRlZmluZWQiLCAic291cmNlS2V5cyIsICJpMiIsICJkZXNjIiwgInNvdXJjZXMyIiwgInRhcmdldCIsICJkZWZpbmVkS2V5cyIsICJzcGxpdFByb3BzIiwgImJsb2NrZWQiLCAiayIsICJvdGhlck9iamVjdCIsICJvYmplY3RzIiwgInByb3BOYW1lIiwgImlzRGVmYXVsdERlc2MiLCAib2JqZWN0SW5kZXgiLCAibGF6eSIsICJjb21wIiwgIndyYXAiLCAiY3R4IiwgIm1vZCIsICJyIiwgImNvdW50ZXIiLCAiY3JlYXRlVW5pcXVlSWQiLCAibmFycm93ZWRFcnJvciIsICJuYW1lIiwgIkZvciIsICJmYWxsYmFjayIsICJJbmRleCIsICJTaG93IiwgImtleWVkIiwgImNvbmRpdGlvblZhbHVlIiwgImNvbmRpdGlvbiIsICJjaGlsZCIsICJTd2l0Y2giLCAiY2hzIiwgInN3aXRjaEZ1bmMiLCAiY2giLCAibXBzIiwgImZ1bmMiLCAibXAiLCAicHJldkZ1bmMiLCAic2VsIiwgIk1hdGNoIiwgIkRFViIsICJib29sZWFucyIsICJQcm9wZXJ0aWVzIiwgIkNoaWxkUHJvcGVydGllcyIsICJBbGlhc2VzIiwgIlByb3BBbGlhc2VzIiwgImdldFByb3BBbGlhcyIsICJwcm9wIiwgInRhZ05hbWUiLCAiRGVsZWdhdGVkRXZlbnRzIiwgIlNWR0VsZW1lbnRzIiwgIlNWR05hbWVzcGFjZSIsICJyZWNvbmNpbGVBcnJheXMiLCAicGFyZW50Tm9kZSIsICJiTGVuZ3RoIiwgImFFbmQiLCAiYkVuZCIsICJhU3RhcnQiLCAiYlN0YXJ0IiwgImFmdGVyIiwgIm1hcCIsICJzZXF1ZW5jZSIsICIkJEVWRU5UUyIsICJyZW5kZXIiLCAiY29kZSIsICJlbGVtZW50IiwgImRpc3Bvc2UyIiwgImluc2VydCIsICJ0ZW1wbGF0ZSIsICJodG1sIiwgImlzSW1wb3J0Tm9kZSIsICJpc1NWRyIsICJpc01hdGhNTCIsICJjcmVhdGUiLCAiZGVsZWdhdGVFdmVudHMiLCAiZXZlbnROYW1lcyIsICJkb2N1bWVudDIiLCAiZXZlbnRIYW5kbGVyIiwgImNsZWFyRGVsZWdhdGVkRXZlbnRzIiwgInNldEF0dHJpYnV0ZSIsICJpc0h5ZHJhdGluZyIsICJzZXRBdHRyaWJ1dGVOUyIsICJuYW1lc3BhY2UiLCAic2V0Qm9vbEF0dHJpYnV0ZSIsICJjbGFzc05hbWUiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJoYW5kbGVyIiwgImRlbGVnYXRlIiwgImhhbmRsZXJGbiIsICJjbGFzc0xpc3QiLCAiY2xhc3NLZXlzIiwgInByZXZLZXlzIiwgInRvZ2dsZUNsYXNzS2V5IiwgImNsYXNzVmFsdWUiLCAic3R5bGUiLCAibm9kZVN0eWxlIiwgInNwcmVhZCIsICJza2lwQ2hpbGRyZW4iLCAicHJldlByb3BzIiwgImluc2VydEV4cHJlc3Npb24iLCAidXNlIiwgImFzc2lnbiIsICJhcmciLCAicGFyZW50IiwgImFjY2Vzc29yIiwgIm1hcmtlciIsICJpbml0aWFsIiwgInNraXBSZWYiLCAiYXNzaWduUHJvcCIsICJnZXROZXh0RWxlbWVudCIsICJ0ZW1wbGF0ZTIiLCAiZ2V0SHlkcmF0aW9uS2V5IiwgInRvUHJvcGVydHlOYW1lIiwgInciLCAiY2xhc3NOYW1lcyIsICJuYW1lTGVuIiwgImlzQ0UiLCAiaXNQcm9wIiwgImlzQ2hpbGRQcm9wIiwgInByb3BBbGlhcyIsICJmb3JjZVByb3AiLCAiaCIsICJucyIsICJlbCIsICJldiIsICJvcmlUYXJnZXQiLCAib3JpQ3VycmVudFRhcmdldCIsICJyZXRhcmdldCIsICJoYW5kbGVOb2RlIiwgImRhdGEiLCAid2Fsa1VwVHJlZSIsICJwYXRoIiwgInVud3JhcEFycmF5IiwgImh5ZHJhdGluZyIsICJjbGVhbmVkIiwgIm11bHRpIiwgImNsZWFuQ2hpbGRyZW4iLCAiYXJyYXkiLCAiY3VycmVudEFycmF5IiwgIm5vcm1hbGl6ZUluY29taW5nQXJyYXkiLCAibm9kZXMiLCAiYXBwZW5kTm9kZXMiLCAibm9ybWFsaXplZCIsICJ1bndyYXAiLCAicmVwbGFjZW1lbnQiLCAiaW5zZXJ0ZWQiLCAiaXNQYXJlbnQiLCAiaXNTZXJ2ZXIiLCAiU1ZHX05BTUVTUEFDRSIsICJjcmVhdGVFbGVtZW50IiwgIlBvcnRhbCIsICJ1c2VTaGFkb3ciLCAibW91bnQiLCAiY29udGVudCIsICJjbGVhbiIsICJzZXRDbGVhbiIsICJjbGVhbnVwIiwgImNvbnRhaW5lciIsICJyZW5kZXJSb290IiwgImNyZWF0ZUR5bmFtaWMiLCAiY29tcG9uZW50IiwgImNhY2hlZCIsICJjb21wb25lbnQyIiwgImlzU3ZnIiwgIkR5bmFtaWMiLCAib3RoZXJzIiwgIkRvdWJsZUluZGV4ZWRLViIsICJSZWdpc3RyeSIsICJnZW5lcmF0ZUlkZW50aWZpZXIiLCAiaWRlbnRpZmllciIsICJDbGFzc1JlZ2lzdHJ5IiwgInZhbHVlc09mT2JqIiwgInJlY29yZCIsICJ2YWx1ZXMiLCAiZmluZCIsICJwcmVkaWNhdGUiLCAidmFsdWVzTm90TmV2ZXIiLCAiZm9yRWFjaCIsICJydW4iLCAiaW5jbHVkZXMiLCAiYXJyIiwgImZpbmRBcnIiLCAiQ3VzdG9tVHJhbnNmb3JtZXJSZWdpc3RyeSIsICJ0cmFuc2Zvcm1lciIsICJnZXRUeXBlIiwgInBheWxvYWQiLCAiaXNVbmRlZmluZWQiLCAiaXNOdWxsIiwgImlzUGxhaW5PYmplY3QiLCAiaXNFbXB0eU9iamVjdCIsICJpc0FycmF5IiwgImlzU3RyaW5nIiwgImlzTnVtYmVyIiwgImlzQm9vbGVhbiIsICJpc1JlZ0V4cCIsICJpc01hcCIsICJpc1NldCIsICJpc1N5bWJvbCIsICJpc0RhdGUiLCAiaXNFcnJvciIsICJpc05hTlZhbHVlIiwgImlzUHJpbWl0aXZlIiwgImlzQmlnaW50IiwgImlzSW5maW5pdGUiLCAiaXNUeXBlZEFycmF5IiwgImlzVVJMIiwgImVzY2FwZUtleSIsICJzdHJpbmdpZnlQYXRoIiwgInBhcnNlUGF0aCIsICJzdHJpbmciLCAic2VnbWVudCIsICJjaGFyIiwgImxhc3RTZWdtZW50IiwgInNpbXBsZVRyYW5zZm9ybWF0aW9uIiwgImlzQXBwbGljYWJsZSIsICJhbm5vdGF0aW9uIiwgInRyYW5zZm9ybSIsICJ1bnRyYW5zZm9ybSIsICJzaW1wbGVSdWxlcyIsICJzdXBlckpzb24iLCAiYmFzZUVycm9yIiwgInJlZ2V4IiwgImJvZHkiLCAiZmxhZ3MiLCAiY29tcG9zaXRlVHJhbnNmb3JtYXRpb24iLCAic3ltYm9sUnVsZSIsICJjb25zdHJ1Y3RvclRvTmFtZSIsICJvYmoiLCAiY3RvciIsICJ0eXBlZEFycmF5UnVsZSIsICJpc0luc3RhbmNlT2ZSZWdpc3RlcmVkQ2xhc3MiLCAicG90ZW50aWFsQ2xhc3MiLCAiY2xhc3NSdWxlIiwgImNsYXp6IiwgImFsbG93ZWRQcm9wcyIsICJjdXN0b21SdWxlIiwgImNvbXBvc2l0ZVJ1bGVzIiwgInRyYW5zZm9ybVZhbHVlIiwgImFwcGxpY2FibGVDb21wb3NpdGVSdWxlIiwgInJ1bGUiLCAiYXBwbGljYWJsZVNpbXBsZVJ1bGUiLCAic2ltcGxlUnVsZXNCeUFubm90YXRpb24iLCAidW50cmFuc2Zvcm1WYWx1ZSIsICJqc29uIiwgInR5cGUiLCAidHJhbnNmb3JtYXRpb24iLCAiZ2V0TnRoS2V5IiwgInZhbGlkYXRlUGF0aCIsICJnZXREZWVwIiwgIm9iamVjdCIsICJyb3ciLCAia2V5T2ZSb3ciLCAic2V0RGVlcCIsICJsYXN0S2V5IiwgIm9sZFZhbHVlIiwgIm5ld1ZhbHVlIiwgImtleVRvUm93IiwgIm5ld0tleSIsICJ0cmF2ZXJzZSIsICJ0cmVlIiwgIndhbGtlcjIiLCAib3JpZ2luIiwgInN1YnRyZWUiLCAibm9kZVZhbHVlIiwgImFwcGx5VmFsdWVBbm5vdGF0aW9ucyIsICJwbGFpbiIsICJhbm5vdGF0aW9ucyIsICJhcHBseVJlZmVyZW50aWFsRXF1YWxpdHlBbm5vdGF0aW9ucyIsICJhcHBseSIsICJpZGVudGljYWxQYXRocyIsICJpZGVudGljYWxPYmplY3RQYXRoIiwgIm90aGVyIiwgImlkZW50aWNhbFBhdGgiLCAiaXNEZWVwIiwgImFkZElkZW50aXR5IiwgImlkZW50aXRpZXMiLCAiZXhpc3RpbmdTZXQiLCAiZ2VuZXJhdGVSZWZlcmVudGlhbEVxdWFsaXR5QW5ub3RhdGlvbnMiLCAiaWRlbnRpdGl0ZXMiLCAiZGVkdXBlIiwgInJvb3RFcXVhbGl0eVBhdGhzIiwgInBhdGhzIiwgInJlcHJlc2VudGF0aXZlUGF0aCIsICJ3YWxrZXIiLCAib2JqZWN0c0luVGhpc1BhdGgiLCAic2Vlbk9iamVjdHMiLCAicHJpbWl0aXZlIiwgInNlZW4iLCAidHJhbnNmb3JtZWQyIiwgInJlc3VsdDIiLCAidHJhbnNmb3JtYXRpb25SZXN1bHQiLCAidHJhbnNmb3JtZWQiLCAidHJhbnNmb3JtZWRWYWx1ZSIsICJpbm5lckFubm90YXRpb25zIiwgInJlY3Vyc2l2ZVJlc3VsdCIsICJnZXRUeXBlMiIsICJpc0FycmF5MiIsICJpc1BsYWluT2JqZWN0MiIsICJwcm90b3R5cGUiLCAiYXNzaWduUHJvcDIiLCAiY2FycnkiLCAibmV3VmFsIiwgIm9yaWdpbmFsT2JqZWN0IiwgImluY2x1ZGVOb25lbnVtZXJhYmxlIiwgInByb3BUeXBlIiwgImNvcHkiLCAic3ltYm9scyIsICJ2YWwiLCAiU3VwZXJKU09OIiwgIm91dHB1dCIsICJlcXVhbGl0eUFubm90YXRpb25zIiwgIm1ldGEiLCAic2VyaWFsaXplIiwgInN0cmluZ2lmeSIsICJnZXRRdWVyeVN0YXR1c0xhYmVsIiwgInF1ZXJ5IiwgImdldFNpZGVkUHJvcCIsICJzaWRlIiwgImdldFF1ZXJ5U3RhdHVzQ29sb3IiLCAicXVlcnlTdGF0ZSIsICJvYnNlcnZlckNvdW50IiwgImlzU3RhbGUiLCAiZ2V0TXV0YXRpb25TdGF0dXNDb2xvciIsICJzdGF0dXMiLCAiaXNQYXVzZWQiLCAiZ2V0UXVlcnlTdGF0dXNDb2xvckJ5TGFiZWwiLCAibGFiZWwiLCAiZGlzcGxheVZhbHVlIiwgImJlYXV0aWZ5IiwgImdldFN0YXR1c1JhbmsiLCAicSIsICJxdWVyeUhhc2hTb3J0IiwgImRhdGVTb3J0IiwgInN0YXR1c0FuZERhdGVTb3J0IiwgInNvcnRGbnMiLCAiZ2V0TXV0YXRpb25TdGF0dXNSYW5rIiwgIm0iLCAibXV0YXRpb25EYXRlU29ydCIsICJtdXRhdGlvblN0YXR1c1NvcnQiLCAibXV0YXRpb25Tb3J0Rm5zIiwgImNvbnZlcnRSZW1Ub1BpeGVscyIsICJyZW0iLCAiZ2V0UHJlZmVycmVkQ29sb3JTY2hlbWUiLCAiY29sb3JTY2hlbWUiLCAic2V0Q29sb3JTY2hlbWUiLCAidXBkYXRlTmVzdGVkRGF0YUJ5UGF0aCIsICJvbGREYXRhIiwgInVwZGF0ZVBhdGgiLCAibmV3RGF0YSIsICJoZWFkIiwgInRhaWwiLCAic2V0QXNBcnJheSIsICJkZWxldGVOZXN0ZWREYXRhQnlQYXRoIiwgImRlbGV0ZVBhdGgiLCAiaWR4IiwgInNldHVwU3R5bGVTaGVldCIsICJub25jZSIsICJzdHlsZVRhZyIsICJ0ZXh0Tm9kZSJdCn0K
|