@asgardeo/auth-spa 0.3.4 → 0.3.5

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.
@@ -1,4 +1,4 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AsgardeoAuth={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function a(e,t,n,r,i,c,o){try{var a=e[c](o),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var c=e.apply(t,n);function o(e){a(c,r,i,o,l,"next",e)}function l(e){a(c,r,i,o,l,"throw",e)}o(void 0)}))}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&d(e.prototype,t),n&&d(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&b(e,t)}function Z(e){return Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Z(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function I(e,t,n){return I=p()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&b(i,n.prototype),i},I.apply(null,arguments)}function g(e){var t="function"==typeof Map?new Map:void 0;return g=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return I(e,arguments,Z(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),b(r,e)},g(e)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function X(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return y(e)}function G(e){var t=p();return function(){var n,r=Z(e);if(t){var i=Z(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return X(this,n)}}function V(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,c=[],o=!0,a=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);o=!0);}catch(e){a=!0,i=e}finally{try{o||null==n.return||n.return()}finally{if(a)throw i}}return c}(e,t)||W(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||W(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=W(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,o=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,c=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw c}}}}var S=function(e){return e&&e.Math==Math&&e},R=S("object"==("undefined"==typeof globalThis?"undefined":o(globalThis))&&globalThis)||S("object"==("undefined"==typeof window?"undefined":o(window))&&window)||S("object"==("undefined"==typeof self?"undefined":o(self))&&self)||S("object"==o(t)&&t)||function(){return this}()||Function("return this")(),Y={},J=function(e){try{return!!e()}catch(e){return!0}},K=!J((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),N=!J((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),L=N,H=Function.prototype.call,x=L?H.bind(H):function(){return H.apply(H,arguments)},U={},k={}.propertyIsEnumerable,T=Object.getOwnPropertyDescriptor,w=T&&!k.call({1:2},1);U.f=w?function(e){var t=T(this,e);return!!t&&t.enumerable}:k;var A,F,B=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},z=N,j=Function.prototype,Q=j.bind,M=j.call,P=z&&Q.bind(M,M),E=z?function(e){return e&&P(e)}:function(e){return e&&function(){return M.apply(e,arguments)}},D=E,O=D({}.toString),_=D("".slice),q=function(e){return _(O(e),8,-1)},$=E,ee=J,te=q,ne=R.Object,re=$("".split),ie=ee((function(){return!ne("z").propertyIsEnumerable(0)}))?function(e){return"String"==te(e)?re(e,""):ne(e)}:ne,ce=R.TypeError,oe=function(e){if(null==e)throw ce("Can't call method on "+e);return e},ae=ie,le=oe,ue=function(e){return ae(le(e))},de=function(e){return"function"==typeof e},se=de,me=function(e){return"object"==o(e)?null!==e:se(e)},he=R,Ze=de,be=function(e){return Ze(e)?e:void 0},pe=function(e,t){return arguments.length<2?be(he[e]):he[e]&&he[e][t]},Ie=E({}.isPrototypeOf),ge=pe("navigator","userAgent")||"",ye=R,Xe=ge,Ge=ye.process,Ve=ye.Deno,fe=Ge&&Ge.versions||Ve&&Ve.version,We=fe&&fe.v8;We&&(F=(A=We.split("."))[0]>0&&A[0]<4?1:+(A[0]+A[1])),!F&&Xe&&(!(A=Xe.match(/Edge\/(\d+)/))||A[1]>=74)&&(A=Xe.match(/Chrome\/(\d+)/))&&(F=+A[1]);var Ce=F,ve=Ce,Se=J,Re=!!Object.getOwnPropertySymbols&&!Se((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&ve&&ve<41})),Ye=Re&&!Symbol.sham&&"symbol"==o(Symbol.iterator),Je=pe,Ke=de,Ne=Ie,Le=Ye,He=R.Object,xe=Le?function(e){return"symbol"==o(e)}:function(e){var t=Je("Symbol");return Ke(t)&&Ne(t.prototype,He(e))},Ue=R.String,ke=function(e){try{return Ue(e)}catch(e){return"Object"}},Te=de,we=ke,Ae=R.TypeError,Fe=function(e){if(Te(e))return e;throw Ae(we(e)+" is not a function")},Be=Fe,ze=function(e,t){var n=e[t];return null==n?void 0:Be(n)},je=x,Qe=de,Me=me,Pe=R.TypeError,Ee=function(e,t){var n,r;if("string"===t&&Qe(n=e.toString)&&!Me(r=je(n,e)))return r;if(Qe(n=e.valueOf)&&!Me(r=je(n,e)))return r;if("string"!==t&&Qe(n=e.toString)&&!Me(r=je(n,e)))return r;throw Pe("Can't convert object to primitive value")},De={exports:{}},Oe=R,_e=Object.defineProperty,qe=function(e,t){try{_e(Oe,e,{value:t,configurable:!0,writable:!0})}catch(n){Oe[e]=t}return t},$e=qe,et="__core-js_shared__",tt=R[et]||$e(et,{}),nt=tt;(De.exports=function(e,t){return nt[e]||(nt[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.1",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.1/LICENSE",source:"https://github.com/zloirock/core-js"});var rt=oe,it=R.Object,ct=function(e){return it(rt(e))},ot=ct,at=E({}.hasOwnProperty),lt=Object.hasOwn||function(e,t){return at(ot(e),t)},ut=E,dt=0,st=Math.random(),mt=ut(1..toString),ht=function(e){return"Symbol("+(void 0===e?"":e)+")_"+mt(++dt+st,36)},Zt=R,bt=De.exports,pt=lt,It=ht,gt=Re,yt=Ye,Xt=bt("wks"),Gt=Zt.Symbol,Vt=Gt&&Gt.for,ft=yt?Gt:Gt&&Gt.withoutSetter||It,Wt=function(e){if(!pt(Xt,e)||!gt&&"string"!=typeof Xt[e]){var t="Symbol."+e;gt&&pt(Gt,e)?Xt[e]=Gt[e]:Xt[e]=yt&&Vt?Vt(t):ft(t)}return Xt[e]},Ct=x,vt=me,St=xe,Rt=ze,Yt=Ee,Jt=Wt,Kt=R.TypeError,Nt=Jt("toPrimitive"),Lt=function(e,t){if(!vt(e)||St(e))return e;var n,r=Rt(e,Nt);if(r){if(void 0===t&&(t="default"),n=Ct(r,e,t),!vt(n)||St(n))return n;throw Kt("Can't convert object to primitive value")}return void 0===t&&(t="number"),Yt(e,t)},Ht=Lt,xt=xe,Ut=function(e){var t=Ht(e,"string");return xt(t)?t:t+""},kt=me,Tt=R.document,wt=kt(Tt)&&kt(Tt.createElement),At=function(e){return wt?Tt.createElement(e):{}},Ft=At,Bt=!K&&!J((function(){return 7!=Object.defineProperty(Ft("div"),"a",{get:function(){return 7}}).a})),zt=K,jt=x,Qt=U,Mt=B,Pt=ue,Et=Ut,Dt=lt,Ot=Bt,_t=Object.getOwnPropertyDescriptor;Y.f=zt?_t:function(e,t){if(e=Pt(e),t=Et(t),Ot)try{return _t(e,t)}catch(e){}if(Dt(e,t))return Mt(!jt(Qt.f,e,t),e[t])};var qt={},$t=K&&J((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),en=R,tn=me,nn=en.String,rn=en.TypeError,cn=function(e){if(tn(e))return e;throw rn(nn(e)+" is not an object")},on=K,an=Bt,ln=$t,un=cn,dn=Ut,sn=R.TypeError,mn=Object.defineProperty,hn=Object.getOwnPropertyDescriptor,Zn="enumerable",bn="configurable",pn="writable";qt.f=on?ln?function(e,t,n){if(un(e),t=dn(t),un(n),"function"==typeof e&&"prototype"===t&&"value"in n&&pn in n&&!n.writable){var r=hn(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:bn in n?n.configurable:r.configurable,enumerable:Zn in n?n.enumerable:r.enumerable,writable:!1})}return mn(e,t,n)}:mn:function(e,t,n){if(un(e),t=dn(t),un(n),an)try{return mn(e,t,n)}catch(e){}if("get"in n||"set"in n)throw sn("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var In=qt,gn=B,yn=K?function(e,t,n){return In.f(e,t,gn(1,n))}:function(e,t,n){return e[t]=n,e},Xn={exports:{}},Gn=de,Vn=tt,fn=E(Function.toString);Gn(Vn.inspectSource)||(Vn.inspectSource=function(e){return fn(e)});var Wn,Cn,vn,Sn=Vn.inspectSource,Rn=de,Yn=Sn,Jn=R.WeakMap,Kn=Rn(Jn)&&/native code/.test(Yn(Jn)),Nn=De.exports,Ln=ht,Hn=Nn("keys"),xn=function(e){return Hn[e]||(Hn[e]=Ln(e))},Un={},kn=Kn,Tn=R,wn=E,An=me,Fn=yn,Bn=lt,zn=tt,jn=xn,Qn=Un,Mn="Object already initialized",Pn=Tn.TypeError,En=Tn.WeakMap;if(kn||zn.state){var Dn=zn.state||(zn.state=new En),On=wn(Dn.get),_n=wn(Dn.has),qn=wn(Dn.set);Wn=function(e,t){if(_n(Dn,e))throw new Pn(Mn);return t.facade=e,qn(Dn,e,t),t},Cn=function(e){return On(Dn,e)||{}},vn=function(e){return _n(Dn,e)}}else{var $n=jn("state");Qn[$n]=!0,Wn=function(e,t){if(Bn(e,$n))throw new Pn(Mn);return t.facade=e,Fn(e,$n,t),t},Cn=function(e){return Bn(e,$n)?e[$n]:{}},vn=function(e){return Bn(e,$n)}}var er={set:Wn,get:Cn,has:vn,enforce:function(e){return vn(e)?Cn(e):Wn(e,{})},getterFor:function(e){return function(t){var n;if(!An(t)||(n=Cn(t)).type!==e)throw Pn("Incompatible receiver, "+e+" required");return n}}},tr=K,nr=lt,rr=Function.prototype,ir=tr&&Object.getOwnPropertyDescriptor,cr=nr(rr,"name"),or={EXISTS:cr,PROPER:cr&&"something"===function(){}.name,CONFIGURABLE:cr&&(!tr||tr&&ir(rr,"name").configurable)},ar=R,lr=de,ur=lt,dr=yn,sr=qe,mr=Sn,hr=or.CONFIGURABLE,Zr=er.get,br=er.enforce,pr=String(String).split("String");(Xn.exports=function(e,t,n,r){var i,c=!!r&&!!r.unsafe,o=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet,l=r&&void 0!==r.name?r.name:t;lr(n)&&("Symbol("===String(l).slice(0,7)&&(l="["+String(l).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!ur(n,"name")||hr&&n.name!==l)&&dr(n,"name",l),(i=br(n)).source||(i.source=pr.join("string"==typeof l?l:""))),e!==ar?(c?!a&&e[t]&&(o=!0):delete e[t],o?e[t]=n:dr(e,t,n)):o?e[t]=n:sr(t,n)})(Function.prototype,"toString",(function(){return lr(this)&&Zr(this).source||mr(this)}));var Ir={},gr=Math.ceil,yr=Math.floor,Xr=function(e){var t=+e;return t!=t||0===t?0:(t>0?yr:gr)(t)},Gr=Xr,Vr=Math.max,fr=Math.min,Wr=function(e,t){var n=Gr(e);return n<0?Vr(n+t,0):fr(n,t)},Cr=Xr,vr=Math.min,Sr=function(e){return e>0?vr(Cr(e),9007199254740991):0},Rr=Sr,Yr=function(e){return Rr(e.length)},Jr=ue,Kr=Wr,Nr=Yr,Lr=function(e){return function(t,n,r){var i,c=Jr(t),o=Nr(c),a=Kr(r,o);if(e&&n!=n){for(;o>a;)if((i=c[a++])!=i)return!0}else for(;o>a;a++)if((e||a in c)&&c[a]===n)return e||a||0;return!e&&-1}},Hr={includes:Lr(!0),indexOf:Lr(!1)},xr=lt,Ur=ue,kr=Hr.indexOf,Tr=Un,wr=E([].push),Ar=function(e,t){var n,r=Ur(e),i=0,c=[];for(n in r)!xr(Tr,n)&&xr(r,n)&&wr(c,n);for(;t.length>i;)xr(r,n=t[i++])&&(~kr(c,n)||wr(c,n));return c},Fr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Br=Ar,zr=Fr.concat("length","prototype");Ir.f=Object.getOwnPropertyNames||function(e){return Br(e,zr)};var jr={};jr.f=Object.getOwnPropertySymbols;var Qr=pe,Mr=Ir,Pr=jr,Er=cn,Dr=E([].concat),Or=Qr("Reflect","ownKeys")||function(e){var t=Mr.f(Er(e)),n=Pr.f;return n?Dr(t,n(e)):t},_r=lt,qr=Or,$r=Y,ei=qt,ti=function(e,t,n){for(var r=qr(t),i=ei.f,c=$r.f,o=0;o<r.length;o++){var a=r[o];_r(e,a)||n&&_r(n,a)||i(e,a,c(t,a))}},ni=J,ri=de,ii=/#|\.prototype\./,ci=function(e,t){var n=ai[oi(e)];return n==ui||n!=li&&(ri(t)?ni(t):!!t)},oi=ci.normalize=function(e){return String(e).replace(ii,".").toLowerCase()},ai=ci.data={},li=ci.NATIVE="N",ui=ci.POLYFILL="P",di=ci,si=R,mi=Y.f,hi=yn,Zi=Xn.exports,bi=qe,pi=ti,Ii=di,gi=function(e,t){var n,r,i,c,a,l=e.target,u=e.global,d=e.stat;if(n=u?si:d?si[l]||bi(l,{}):(si[l]||{}).prototype)for(r in t){if(c=t[r],i=e.noTargetGet?(a=mi(n,r))&&a.value:n[r],!Ii(u?r:l+(d?".":"#")+r,e.forced)&&void 0!==i){if(o(c)==o(i))continue;pi(c,i)}(e.sham||i&&i.sham)&&hi(c,"sham",!0),Zi(n,r,c,e)}},yi={};yi[Wt("toStringTag")]="z";var Xi="[object z]"===String(yi),Gi=R,Vi=Xi,fi=de,Wi=q,Ci=Wt("toStringTag"),vi=Gi.Object,Si="Arguments"==Wi(function(){return arguments}()),Ri=Vi?Wi:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=vi(e),Ci))?n:Si?Wi(t):"Object"==(r=Wi(t))&&fi(t.callee)?"Arguments":r},Yi=Ri,Ji=R.String,Ki=function(e){if("Symbol"===Yi(e))throw TypeError("Cannot convert a Symbol value to a string");return Ji(e)},Ni={},Li=Ar,Hi=Fr,xi=Object.keys||function(e){return Li(e,Hi)},Ui=K,ki=$t,Ti=qt,wi=cn,Ai=ue,Fi=xi;Ni.f=Ui&&!ki?Object.defineProperties:function(e,t){wi(e);for(var n,r=Ai(t),i=Fi(t),c=i.length,o=0;c>o;)Ti.f(e,n=i[o++],r[n]);return e};var Bi,zi=pe("document","documentElement"),ji=cn,Qi=Ni,Mi=Fr,Pi=Un,Ei=zi,Di=At,Oi=xn("IE_PROTO"),_i=function(){},qi=function(e){return"<script>"+e+"</"+"script>"},$i=function(e){e.write(qi("")),e.close();var t=e.parentWindow.Object;return e=null,t},ec=function(){try{Bi=new ActiveXObject("htmlfile")}catch(e){}var e,t;ec="undefined"!=typeof document?document.domain&&Bi?$i(Bi):((t=Di("iframe")).style.display="none",Ei.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(qi("document.F=Object")),e.close(),e.F):$i(Bi);for(var n=Mi.length;n--;)delete ec.prototype[Mi[n]];return ec()};Pi[Oi]=!0;var tc=Object.create||function(e,t){var n;return null!==e?(_i.prototype=ji(e),n=new _i,_i.prototype=null,n[Oi]=e):n=ec(),void 0===t?n:Qi.f(n,t)},nc={},rc=Ut,ic=qt,cc=B,oc=function(e,t,n){var r=rc(t);r in e?ic.f(e,r,cc(0,n)):e[r]=n},ac=Wr,lc=Yr,uc=oc,dc=R.Array,sc=Math.max,mc=function(e,t,n){for(var r=lc(e),i=ac(t,r),c=ac(void 0===n?r:n,r),o=dc(sc(c-i,0)),a=0;i<c;i++,a++)uc(o,a,e[i]);return o.length=a,o},hc=q,Zc=ue,bc=Ir.f,pc=mc,Ic="object"==("undefined"==typeof window?"undefined":o(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];nc.f=function(e){return Ic&&"Window"==hc(e)?function(e){try{return bc(e)}catch(e){return pc(Ic)}}(e):bc(Zc(e))};var gc={},yc=Wt;gc.f=yc;var Xc=R,Gc=lt,Vc=gc,fc=qt.f,Wc=function(e){var t=Xc.Symbol||(Xc.Symbol={});Gc(t,e)||fc(t,e,{value:Vc.f(e)})},Cc=x,vc=pe,Sc=Wt,Rc=Xn.exports,Yc=function(){var e=vc("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,r=Sc("toPrimitive");t&&!t[r]&&Rc(t,r,(function(e){return Cc(n,this)}))},Jc=qt.f,Kc=lt,Nc=Wt("toStringTag"),Lc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Kc(e,Nc)&&Jc(e,Nc,{configurable:!0,value:t})},Hc=Fe,xc=N,Uc=E(E.bind),kc=function(e,t){return Hc(e),void 0===t?e:xc?Uc(e,t):function(){return e.apply(t,arguments)}},Tc=q,wc=Array.isArray||function(e){return"Array"==Tc(e)},Ac=E,Fc=J,Bc=de,zc=Ri,jc=Sn,Qc=function(){},Mc=[],Pc=pe("Reflect","construct"),Ec=/^\s*(?:class|function)\b/,Dc=Ac(Ec.exec),Oc=!Ec.exec(Qc),_c=function(e){if(!Bc(e))return!1;try{return Pc(Qc,Mc,e),!0}catch(e){return!1}},qc=function(e){if(!Bc(e))return!1;switch(zc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Oc||!!Dc(Ec,jc(e))}catch(e){return!0}};qc.sham=!0;var $c=!Pc||Fc((function(){var e;return _c(_c.call)||!_c(Object)||!_c((function(){e=!0}))||e}))?qc:_c,eo=R,to=wc,no=$c,ro=me,io=Wt("species"),co=eo.Array,oo=function(e){var t;return to(e)&&(t=e.constructor,(no(t)&&(t===co||to(t.prototype))||ro(t)&&null===(t=t[io]))&&(t=void 0)),void 0===t?co:t},ao=function(e,t){return new(oo(e))(0===t?0:t)},lo=kc,uo=ie,so=ct,mo=Yr,ho=ao,Zo=E([].push),bo=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,c=6==e,o=7==e,a=5==e||c;return function(l,u,d,s){for(var m,h,Z=so(l),b=uo(Z),p=lo(u,d),I=mo(b),g=0,y=s||ho,X=t?y(l,I):n||o?y(l,0):void 0;I>g;g++)if((a||g in b)&&(h=p(m=b[g],g,Z),e))if(t)X[g]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return g;case 2:Zo(X,m)}else switch(e){case 4:return!1;case 7:Zo(X,m)}return c?-1:r||i?i:X}},po={forEach:bo(0),map:bo(1),filter:bo(2),some:bo(3),every:bo(4),find:bo(5),findIndex:bo(6),filterReject:bo(7)},Io=gi,go=R,yo=x,Xo=E,Go=K,Vo=Re,fo=J,Wo=lt,Co=Ie,vo=cn,So=ue,Ro=Ut,Yo=Ki,Jo=B,Ko=tc,No=xi,Lo=Ir,Ho=nc,xo=jr,Uo=Y,ko=qt,To=Ni,wo=U,Ao=Xn.exports,Fo=De.exports,Bo=Un,zo=ht,jo=Wt,Qo=gc,Mo=Wc,Po=Yc,Eo=Lc,Do=er,Oo=po.forEach,_o=xn("hidden"),qo="Symbol",$o=Do.set,ea=Do.getterFor(qo),ta=Object.prototype,na=go.Symbol,ra=na&&na.prototype,ia=go.TypeError,ca=go.QObject,oa=Uo.f,aa=ko.f,la=Ho.f,ua=wo.f,da=Xo([].push),sa=Fo("symbols"),ma=Fo("op-symbols"),ha=Fo("wks"),Za=!ca||!ca.prototype||!ca.prototype.findChild,ba=Go&&fo((function(){return 7!=Ko(aa({},"a",{get:function(){return aa(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=oa(ta,t);r&&delete ta[t],aa(e,t,n),r&&e!==ta&&aa(ta,t,r)}:aa,pa=function(e,t){var n=sa[e]=Ko(ra);return $o(n,{type:qo,tag:e,description:t}),Go||(n.description=t),n},Ia=function(e,t,n){e===ta&&Ia(ma,t,n),vo(e);var r=Ro(t);return vo(n),Wo(sa,r)?(n.enumerable?(Wo(e,_o)&&e[_o][r]&&(e[_o][r]=!1),n=Ko(n,{enumerable:Jo(0,!1)})):(Wo(e,_o)||aa(e,_o,Jo(1,{})),e[_o][r]=!0),ba(e,r,n)):aa(e,r,n)},ga=function(e,t){vo(e);var n=So(t),r=No(n).concat(Va(n));return Oo(r,(function(t){Go&&!yo(ya,n,t)||Ia(e,t,n[t])})),e},ya=function(e){var t=Ro(e),n=yo(ua,this,t);return!(this===ta&&Wo(sa,t)&&!Wo(ma,t))&&(!(n||!Wo(this,t)||!Wo(sa,t)||Wo(this,_o)&&this[_o][t])||n)},Xa=function(e,t){var n=So(e),r=Ro(t);if(n!==ta||!Wo(sa,r)||Wo(ma,r)){var i=oa(n,r);return!i||!Wo(sa,r)||Wo(n,_o)&&n[_o][r]||(i.enumerable=!0),i}},Ga=function(e){var t=la(So(e)),n=[];return Oo(t,(function(e){Wo(sa,e)||Wo(Bo,e)||da(n,e)})),n},Va=function(e){var t=e===ta,n=la(t?ma:So(e)),r=[];return Oo(n,(function(e){!Wo(sa,e)||t&&!Wo(ta,e)||da(r,sa[e])})),r};Vo||(na=function(){if(Co(ra,this))throw ia("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Yo(arguments[0]):void 0,t=zo(e),n=function e(n){this===ta&&yo(e,ma,n),Wo(this,_o)&&Wo(this[_o],t)&&(this[_o][t]=!1),ba(this,t,Jo(1,n))};return Go&&Za&&ba(ta,t,{configurable:!0,set:n}),pa(t,e)},Ao(ra=na.prototype,"toString",(function(){return ea(this).tag})),Ao(na,"withoutSetter",(function(e){return pa(zo(e),e)})),wo.f=ya,ko.f=Ia,To.f=ga,Uo.f=Xa,Lo.f=Ho.f=Ga,xo.f=Va,Qo.f=function(e){return pa(jo(e),e)},Go&&(aa(ra,"description",{configurable:!0,get:function(){return ea(this).description}}),Ao(ta,"propertyIsEnumerable",ya,{unsafe:!0}))),Io({global:!0,wrap:!0,forced:!Vo,sham:!Vo},{Symbol:na}),Oo(No(ha),(function(e){Mo(e)})),Io({target:qo,stat:!0,forced:!Vo},{useSetter:function(){Za=!0},useSimple:function(){Za=!1}}),Io({target:"Object",stat:!0,forced:!Vo,sham:!Go},{create:function(e,t){return void 0===t?Ko(e):ga(Ko(e),t)},defineProperty:Ia,defineProperties:ga,getOwnPropertyDescriptor:Xa}),Io({target:"Object",stat:!0,forced:!Vo},{getOwnPropertyNames:Ga}),Po(),Eo(na,qo),Bo[_o]=!0;var fa=Re&&!!Symbol.for&&!!Symbol.keyFor,Wa=gi,Ca=pe,va=lt,Sa=Ki,Ra=De.exports,Ya=fa,Ja=Ra("string-to-symbol-registry"),Ka=Ra("symbol-to-string-registry");Wa({target:"Symbol",stat:!0,forced:!Ya},{for:function(e){var t=Sa(e);if(va(Ja,t))return Ja[t];var n=Ca("Symbol")(t);return Ja[t]=n,Ka[n]=t,n}});var Na=gi,La=lt,Ha=xe,xa=ke,Ua=fa,ka=(0,De.exports)("symbol-to-string-registry");Na({target:"Symbol",stat:!0,forced:!Ua},{keyFor:function(e){if(!Ha(e))throw TypeError(xa(e)+" is not a symbol");if(La(ka,e))return ka[e]}});var Ta=N,wa=Function.prototype,Aa=wa.apply,Fa=wa.call,Ba="object"==("undefined"==typeof Reflect?"undefined":o(Reflect))&&Reflect.apply||(Ta?Fa.bind(Aa):function(){return Fa.apply(Aa,arguments)}),za=E([].slice),ja=gi,Qa=pe,Ma=Ba,Pa=x,Ea=E,Da=J,Oa=wc,_a=de,qa=me,$a=xe,el=za,tl=Re,nl=Qa("JSON","stringify"),rl=Ea(/./.exec),il=Ea("".charAt),cl=Ea("".charCodeAt),ol=Ea("".replace),al=Ea(1..toString),ll=/[\uD800-\uDFFF]/g,ul=/^[\uD800-\uDBFF]$/,dl=/^[\uDC00-\uDFFF]$/,sl=!tl||Da((function(){var e=Qa("Symbol")();return"[null]"!=nl([e])||"{}"!=nl({a:e})||"{}"!=nl(Object(e))})),ml=Da((function(){return'"\\udf06\\ud834"'!==nl("\udf06\ud834")||'"\\udead"'!==nl("\udead")})),hl=function(e,t){var n=el(arguments),r=t;if((qa(t)||void 0!==e)&&!$a(e))return Oa(t)||(t=function(e,t){if(_a(r)&&(t=Pa(r,this,e,t)),!$a(t))return t}),n[1]=t,Ma(nl,null,n)},Zl=function(e,t,n){var r=il(n,t-1),i=il(n,t+1);return rl(ul,e)&&!rl(dl,i)||rl(dl,e)&&!rl(ul,r)?"\\u"+al(cl(e,0),16):e};nl&&ja({target:"JSON",stat:!0,forced:sl||ml},{stringify:function(e,t,n){var r=el(arguments),i=Ma(sl?hl:nl,null,r);return ml&&"string"==typeof i?ol(i,ll,Zl):i}});var bl=jr,pl=ct;gi({target:"Object",stat:!0,forced:!Re||J((function(){bl.f(1)}))},{getOwnPropertySymbols:function(e){var t=bl.f;return t?t(pl(e)):[]}});var Il=gi,gl=K,yl=R,Xl=E,Gl=lt,Vl=de,fl=Ie,Wl=Ki,Cl=qt.f,vl=ti,Sl=yl.Symbol,Rl=Sl&&Sl.prototype;if(gl&&Vl(Sl)&&(!("description"in Rl)||void 0!==Sl().description)){var Yl={},Jl=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:Wl(arguments[0]),t=fl(Rl,this)?new Sl(e):void 0===e?Sl():Sl(e);return""===e&&(Yl[t]=!0),t};vl(Jl,Sl),Jl.prototype=Rl,Rl.constructor=Jl;var Kl="Symbol(test)"==String(Sl("test")),Nl=Xl(Rl.toString),Ll=Xl(Rl.valueOf),Hl=/^Symbol\((.*)\)[^)]+$/,xl=Xl("".replace),Ul=Xl("".slice);Cl(Rl,"description",{configurable:!0,get:function(){var e=Ll(this),t=Nl(e);if(Gl(Yl,e))return"";var n=Kl?Ul(t,7,-1):xl(t,Hl,"$1");return""===n?void 0:n}}),Il({global:!0,forced:!0},{Symbol:Jl})}Wc("asyncIterator"),Wc("hasInstance"),Wc("isConcatSpreadable"),Wc("iterator"),Wc("match"),Wc("matchAll"),Wc("replace"),Wc("search"),Wc("species"),Wc("split");var kl=Yc;Wc("toPrimitive"),kl();var Tl=pe,wl=Lc;Wc("toStringTag"),wl(Tl("Symbol"),"Symbol"),Wc("unscopables");var Al=J,Fl=Ce,Bl=Wt("species"),zl=function(e){return Fl>=51||!Al((function(){var t=[];return(t.constructor={})[Bl]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},jl=gi,Ql=R,Ml=J,Pl=wc,El=me,Dl=ct,Ol=Yr,_l=oc,ql=ao,$l=zl,eu=Ce,tu=Wt("isConcatSpreadable"),nu=9007199254740991,ru="Maximum allowed index exceeded",iu=Ql.TypeError,cu=eu>=51||!Ml((function(){var e=[];return e[tu]=!1,e.concat()[0]!==e})),ou=$l("concat"),au=function(e){if(!El(e))return!1;var t=e[tu];return void 0!==t?!!t:Pl(e)};jl({target:"Array",proto:!0,forced:!cu||!ou},{concat:function(e){var t,n,r,i,c,o=Dl(this),a=ql(o,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(au(c=-1===t?o:arguments[t])){if(l+(i=Ol(c))>nu)throw iu(ru);for(n=0;n<i;n++,l++)n in c&&_l(a,l,c[n])}else{if(l>=nu)throw iu(ru);_l(a,l++,c)}return a.length=l,a}});var lu=ct,uu=Wr,du=Yr,su=Math.min,mu=[].copyWithin||function(e,t){var n=lu(this),r=du(n),i=uu(e,r),c=uu(t,r),o=arguments.length>2?arguments[2]:void 0,a=su((void 0===o?r:uu(o,r))-c,r-i),l=1;for(c<i&&i<c+a&&(l=-1,c+=a-1,i+=a-1);a-- >0;)c in n?n[i]=n[c]:delete n[i],i+=l,c+=l;return n},hu=tc,Zu=qt,bu=Wt("unscopables"),pu=Array.prototype;null==pu[bu]&&Zu.f(pu,bu,{configurable:!0,value:hu(null)});var Iu=function(e){pu[bu][e]=!0},gu=Iu;gi({target:"Array",proto:!0},{copyWithin:mu}),gu("copyWithin");var yu=ct,Xu=Wr,Gu=Yr,Vu=function(e){for(var t=yu(this),n=Gu(t),r=arguments.length,i=Xu(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,o=void 0===c?n:Xu(c,n);o>i;)t[i++]=e;return t},fu=Iu;gi({target:"Array",proto:!0},{fill:Vu}),fu("fill");var Wu=po.filter;gi({target:"Array",proto:!0,forced:!zl("filter")},{filter:function(e){return Wu(this,e,arguments.length>1?arguments[1]:void 0)}});var Cu=gi,vu=po.find,Su=Iu,Ru="find",Yu=!0;Ru in[]&&Array(1).find((function(){Yu=!1})),Cu({target:"Array",proto:!0,forced:Yu},{find:function(e){return vu(this,e,arguments.length>1?arguments[1]:void 0)}}),Su(Ru);var Ju=gi,Ku=po.findIndex,Nu=Iu,Lu="findIndex",Hu=!0;Lu in[]&&Array(1).findIndex((function(){Hu=!1})),Ju({target:"Array",proto:!0,forced:Hu},{findIndex:function(e){return Ku(this,e,arguments.length>1?arguments[1]:void 0)}}),Nu(Lu);var xu=wc,Uu=Yr,ku=kc,Tu=R.TypeError,wu=function e(t,n,r,i,c,o,a,l){for(var u,d=c,s=0,m=!!a&&ku(a,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],o>0&&xu(u))d=e(t,n,u,Uu(u),d,o-1)-1;else{if(d>=9007199254740991)throw Tu("Exceed the acceptable array length");t[d]=u}d++}s++}return d},Au=wu,Fu=ct,Bu=Yr,zu=Xr,ju=ao;gi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Fu(this),n=Bu(t),r=ju(t,0);return r.length=Au(r,t,t,n,0,void 0===e?1:zu(e)),r}});var Qu=wu,Mu=Fe,Pu=ct,Eu=Yr,Du=ao;gi({target:"Array",proto:!0},{flatMap:function(e){var t,n=Pu(this),r=Eu(n);return Mu(e),(t=Du(n,0)).length=Qu(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var Ou=x,_u=cn,qu=ze,$u=function(e,t,n){var r,i;_u(e);try{if(!(r=qu(e,"return"))){if("throw"===t)throw n;return n}r=Ou(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return _u(r),n},ed=cn,td=$u,nd={},rd=nd,id=Wt("iterator"),cd=Array.prototype,od=function(e){return void 0!==e&&(rd.Array===e||cd[id]===e)},ad=Ri,ld=ze,ud=nd,dd=Wt("iterator"),sd=function(e){if(null!=e)return ld(e,dd)||ld(e,"@@iterator")||ud[ad(e)]},md=x,hd=Fe,Zd=cn,bd=ke,pd=sd,Id=R.TypeError,gd=function(e,t){var n=arguments.length<2?pd(e):t;if(hd(n))return Zd(md(n,e));throw Id(bd(e)+" is not iterable")},yd=kc,Xd=x,Gd=ct,Vd=function(e,t,n,r){try{return r?t(ed(n)[0],n[1]):t(n)}catch(t){td(e,"throw",t)}},fd=od,Wd=$c,Cd=Yr,vd=oc,Sd=gd,Rd=sd,Yd=R.Array,Jd=function(e){var t=Gd(e),n=Wd(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=yd(i,r>2?arguments[2]:void 0));var o,a,l,u,d,s,m=Rd(t),h=0;if(!m||this==Yd&&fd(m))for(o=Cd(t),a=n?new this(o):Yd(o);o>h;h++)s=c?i(t[h],h):t[h],vd(a,h,s);else for(d=(u=Sd(t,m)).next,a=n?new this:[];!(l=Xd(d,u)).done;h++)s=c?Vd(u,i,[l.value,h],!0):l.value,vd(a,h,s);return a.length=h,a},Kd=Wt("iterator"),Nd=!1;try{var Ld=0,Hd={next:function(){return{done:!!Ld++}},return:function(){Nd=!0}};Hd[Kd]=function(){return this},Array.from(Hd,(function(){throw 2}))}catch(e){}var xd=function(e,t){if(!t&&!Nd)return!1;var n=!1;try{var r={};r[Kd]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Ud=Jd;gi({target:"Array",stat:!0,forced:!xd((function(e){Array.from(e)}))},{from:Ud});var kd=Hr.includes,Td=Iu;gi({target:"Array",proto:!0},{includes:function(e){return kd(this,e,arguments.length>1?arguments[1]:void 0)}}),Td("includes");var wd,Ad,Fd,Bd=!J((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),zd=R,jd=lt,Qd=de,Md=ct,Pd=Bd,Ed=xn("IE_PROTO"),Dd=zd.Object,Od=Dd.prototype,_d=Pd?Dd.getPrototypeOf:function(e){var t=Md(e);if(jd(t,Ed))return t[Ed];var n=t.constructor;return Qd(n)&&t instanceof n?n.prototype:t instanceof Dd?Od:null},qd=J,$d=de,es=_d,ts=Xn.exports,ns=Wt("iterator"),rs=!1;[].keys&&("next"in(Fd=[].keys())?(Ad=es(es(Fd)))!==Object.prototype&&(wd=Ad):rs=!0);var is=null==wd||qd((function(){var e={};return wd[ns].call(e)!==e}));is&&(wd={}),$d(wd[ns])||ts(wd,ns,(function(){return this}));var cs={IteratorPrototype:wd,BUGGY_SAFARI_ITERATORS:rs},os=cs.IteratorPrototype,as=tc,ls=B,us=Lc,ds=nd,ss=function(){return this},ms=function(e,t,n,r){var i=t+" Iterator";return e.prototype=as(os,{next:ls(+!r,n)}),us(e,i,!1),ds[i]=ss,e},hs=R,Zs=de,bs=hs.String,ps=hs.TypeError,Is=function(e){if("object"==o(e)||Zs(e))return e;throw ps("Can't set "+bs(e)+" as a prototype")},gs=E,ys=cn,Xs=Is,Gs=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=gs(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return ys(n),Xs(r),t?e(n,r):n.__proto__=r,n}}():void 0),Vs=gi,fs=x,Ws=or,Cs=de,vs=ms,Ss=_d,Rs=Gs,Ys=Lc,Js=yn,Ks=Xn.exports,Ns=nd,Ls=Ws.PROPER,Hs=Ws.CONFIGURABLE,xs=cs.IteratorPrototype,Us=cs.BUGGY_SAFARI_ITERATORS,ks=Wt("iterator"),Ts="keys",ws="values",As="entries",Fs=function(){return this},Bs=function(e,t,n,r,i,c,o){vs(n,t,r);var a,l,u,d=function(e){if(e===i&&b)return b;if(!Us&&e in h)return h[e];switch(e){case Ts:case ws:case As:return function(){return new n(this,e)}}return function(){return new n(this)}},s=t+" Iterator",m=!1,h=e.prototype,Z=h[ks]||h["@@iterator"]||i&&h[i],b=!Us&&Z||d(i),p="Array"==t&&h.entries||Z;if(p&&(a=Ss(p.call(new e)))!==Object.prototype&&a.next&&(Ss(a)!==xs&&(Rs?Rs(a,xs):Cs(a[ks])||Ks(a,ks,Fs)),Ys(a,s,!0)),Ls&&i==ws&&Z&&Z.name!==ws&&(Hs?Js(h,"name",ws):(m=!0,b=function(){return fs(Z,this)})),i)if(l={values:d(ws),keys:c?b:d(Ts),entries:d(As)},o)for(u in l)(Us||m||!(u in h))&&Ks(h,u,l[u]);else Vs({target:t,proto:!0,forced:Us||m},l);return h[ks]!==b&&Ks(h,ks,b,{name:i}),Ns[t]=b,l},zs=ue,js=Iu,Qs=nd,Ms=er,Ps=qt.f,Es=Bs,Ds=K,Os="Array Iterator",_s=Ms.set,qs=Ms.getterFor(Os),$s=Es(Array,"Array",(function(e,t){_s(this,{type:Os,target:zs(e),index:0,kind:t})}),(function(){var e=qs(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),em=Qs.Arguments=Qs.Array;if(js("keys"),js("values"),js("entries"),Ds&&"values"!==em.name)try{Ps(em,"name",{value:"values"})}catch(e){}var tm=J,nm=function(e,t){var n=[][e];return!!n&&tm((function(){n.call(null,t||function(){return 1},1)}))},rm=gi,im=ie,cm=ue,om=nm,am=E([].join),lm=im!=Object,um=om("join",",");rm({target:"Array",proto:!0,forced:lm||!um},{join:function(e){return am(cm(this),void 0===e?",":e)}});var dm=po.map;gi({target:"Array",proto:!0,forced:!zl("map")},{map:function(e){return dm(this,e,arguments.length>1?arguments[1]:void 0)}});var sm=gi,mm=J,hm=$c,Zm=oc,bm=R.Array;sm({target:"Array",stat:!0,forced:mm((function(){function e(){}return!(bm.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(hm(this)?this:bm)(t);t>e;)Zm(n,e,arguments[e++]);return n.length=t,n}});var pm=gi,Im=R,gm=wc,ym=$c,Xm=me,Gm=Wr,Vm=Yr,fm=ue,Wm=oc,Cm=Wt,vm=za,Sm=zl("slice"),Rm=Cm("species"),Ym=Im.Array,Jm=Math.max;pm({target:"Array",proto:!0,forced:!Sm},{slice:function(e,t){var n,r,i,c=fm(this),o=Vm(c),a=Gm(e,o),l=Gm(void 0===t?o:t,o);if(gm(c)&&(n=c.constructor,(ym(n)&&(n===Ym||gm(n.prototype))||Xm(n)&&null===(n=n[Rm]))&&(n=void 0),n===Ym||void 0===n))return vm(c,a,l);for(r=new(void 0===n?Ym:n)(Jm(l-a,0)),i=0;a<l;a++,i++)a in c&&Wm(r,i,c[a]);return r.length=i,r}});var Km=mc,Nm=Math.floor,Lm=function(e,t){for(var n,r,i=e.length,c=1;c<i;){for(r=c,n=e[c];r&&t(e[r-1],n)>0;)e[r]=e[--r];r!==c++&&(e[r]=n)}return e},Hm=function(e,t,n,r){for(var i=t.length,c=n.length,o=0,a=0;o<i||a<c;)e[o+a]=o<i&&a<c?r(t[o],n[a])<=0?t[o++]:n[a++]:o<i?t[o++]:n[a++];return e},xm=function e(t,n){var r=t.length,i=Nm(r/2);return r<8?Lm(t,n):Hm(t,e(Km(t,0,i),n),e(Km(t,i),n),n)},Um=ge.match(/firefox\/(\d+)/i),km=!!Um&&+Um[1],Tm=/MSIE|Trident/.test(ge),wm=ge.match(/AppleWebKit\/(\d+)\./),Am=!!wm&&+wm[1],Fm=gi,Bm=E,zm=Fe,jm=ct,Qm=Yr,Mm=Ki,Pm=J,Em=xm,Dm=nm,Om=km,_m=Tm,qm=Ce,$m=Am,eh=[],th=Bm(eh.sort),nh=Bm(eh.push),rh=Pm((function(){eh.sort(void 0)})),ih=Pm((function(){eh.sort(null)})),ch=Dm("sort"),oh=!Pm((function(){if(qm)return qm<70;if(!(Om&&Om>3)){if(_m)return!0;if($m)return $m<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)eh.push({k:t+r,v:n})}for(eh.sort((function(e,t){return t.v-e.v})),r=0;r<eh.length;r++)t=eh[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));Fm({target:"Array",proto:!0,forced:rh||!ih||!ch||!oh},{sort:function(e){void 0!==e&&zm(e);var t=jm(this);if(oh)return void 0===e?th(t):th(t,e);var n,r,i=[],c=Qm(t);for(r=0;r<c;r++)r in t&&nh(i,t[r]);for(Em(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:Mm(t)>Mm(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var ah=pe,lh=qt,uh=K,dh=Wt("species"),sh=function(e){var t=ah(e),n=lh.f;uh&&t&&!t[dh]&&n(t,dh,{configurable:!0,get:function(){return this}})};sh("Array");var mh=gi,hh=R,Zh=Wr,bh=Xr,ph=Yr,Ih=ct,gh=ao,yh=oc,Xh=zl("splice"),Gh=hh.TypeError,Vh=Math.max,fh=Math.min,Wh=9007199254740991,Ch="Maximum allowed length exceeded";mh({target:"Array",proto:!0,forced:!Xh},{splice:function(e,t){var n,r,i,c,o,a,l=Ih(this),u=ph(l),d=Zh(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=fh(Vh(bh(t),0),u-d)),u+n-r>Wh)throw Gh(Ch);for(i=gh(l,r),c=0;c<r;c++)(o=d+c)in l&&yh(i,c,l[o]);if(i.length=r,n<r){for(c=d;c<u-r;c++)a=c+n,(o=c+r)in l?l[a]=l[o]:delete l[a];for(c=u;c>u-r+n;c--)delete l[c-1]}else if(n>r)for(c=u-r;c>d;c--)a=c+n-1,(o=c+r-1)in l?l[a]=l[o]:delete l[a];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-r+n,i}}),Iu("flat"),Iu("flatMap");var vh="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Sh=Xn.exports,Rh=function(e,t,n){for(var r in t)Sh(e,r,t[r],n);return e},Yh=Ie,Jh=R.TypeError,Kh=function(e,t){if(Yh(t,e))return e;throw Jh("Incorrect invocation")},Nh=Xr,Lh=Sr,Hh=R.RangeError,xh=function(e){if(void 0===e)return 0;var t=Nh(e),n=Lh(t);if(t!==n)throw Hh("Wrong length or index");return n},Uh=R.Array,kh=Math.abs,Th=Math.pow,wh=Math.floor,Ah=Math.log,Fh=Math.LN2,Bh={pack:function(e,t,n){var r,i,c,o=Uh(n),a=8*n-t-1,l=(1<<a)-1,u=l>>1,d=23===t?Th(2,-24)-Th(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=kh(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=wh(Ah(e)/Fh),e*(c=Th(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*Th(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*Th(2,t),r+=u):(i=e*Th(2,u-1)*Th(2,t),r=0));t>=8;)o[m++]=255&i,i/=256,t-=8;for(r=r<<t|i,a+=t;a>0;)o[m++]=255&r,r/=256,a-=8;return o[--m]|=128*s,o},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,c=(1<<i)-1,o=c>>1,a=i-7,l=r-1,u=e[l--],d=127&u;for(u>>=7;a>0;)d=256*d+e[l--],a-=8;for(n=d&(1<<-a)-1,d>>=-a,a+=t;a>0;)n=256*n+e[l--],a-=8;if(0===d)d=1-o;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=Th(2,t),d-=o}return(u?-1:1)*n*Th(2,d-t)}},zh=R,jh=E,Qh=K,Mh=vh,Ph=or,Eh=yn,Dh=Rh,Oh=J,_h=Kh,qh=Xr,$h=Sr,eZ=xh,tZ=Bh,nZ=_d,rZ=Gs,iZ=Ir.f,cZ=qt.f,oZ=Vu,aZ=mc,lZ=Lc,uZ=Ph.PROPER,dZ=Ph.CONFIGURABLE,sZ=er.get,mZ=er.set,hZ="ArrayBuffer",ZZ="DataView",bZ="Wrong index",pZ=zh.ArrayBuffer,IZ=pZ,gZ=IZ&&IZ.prototype,yZ=zh.DataView,XZ=yZ&&yZ.prototype,GZ=Object.prototype,VZ=zh.Array,fZ=zh.RangeError,WZ=jh(oZ),CZ=jh([].reverse),vZ=tZ.pack,SZ=tZ.unpack,RZ=function(e){return[255&e]},YZ=function(e){return[255&e,e>>8&255]},JZ=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},KZ=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},NZ=function(e){return vZ(e,23,4)},LZ=function(e){return vZ(e,52,8)},HZ=function(e,t){cZ(e.prototype,t,{get:function(){return sZ(this)[t]}})},xZ=function(e,t,n,r){var i=eZ(n),c=sZ(e);if(i+t>c.byteLength)throw fZ(bZ);var o=sZ(c.buffer).bytes,a=i+c.byteOffset,l=aZ(o,a,a+t);return r?l:CZ(l)},UZ=function(e,t,n,r,i,c){var o=eZ(n),a=sZ(e);if(o+t>a.byteLength)throw fZ(bZ);for(var l=sZ(a.buffer).bytes,u=o+a.byteOffset,d=r(+i),s=0;s<t;s++)l[u+s]=d[c?s:t-s-1]};if(Mh){var kZ=uZ&&pZ.name!==hZ;if(Oh((function(){pZ(1)}))&&Oh((function(){new pZ(-1)}))&&!Oh((function(){return new pZ,new pZ(1.5),new pZ(NaN),kZ&&!dZ})))kZ&&dZ&&Eh(pZ,"name",hZ);else{(IZ=function(e){return _h(this,gZ),new pZ(eZ(e))}).prototype=gZ;for(var TZ,wZ=iZ(pZ),AZ=0;wZ.length>AZ;)(TZ=wZ[AZ++])in IZ||Eh(IZ,TZ,pZ[TZ]);gZ.constructor=IZ}rZ&&nZ(XZ)!==GZ&&rZ(XZ,GZ);var FZ=new yZ(new IZ(2)),BZ=jh(XZ.setInt8);FZ.setInt8(0,2147483648),FZ.setInt8(1,2147483649),!FZ.getInt8(0)&&FZ.getInt8(1)||Dh(XZ,{setInt8:function(e,t){BZ(this,e,t<<24>>24)},setUint8:function(e,t){BZ(this,e,t<<24>>24)}},{unsafe:!0})}else IZ=function(e){_h(this,gZ);var t=eZ(e);mZ(this,{bytes:WZ(VZ(t),0),byteLength:t}),Qh||(this.byteLength=t)},gZ=IZ.prototype,yZ=function(e,t,n){_h(this,XZ),_h(e,gZ);var r=sZ(e).byteLength,i=qh(t);if(i<0||i>r)throw fZ("Wrong offset");if(i+(n=void 0===n?r-i:$h(n))>r)throw fZ("Wrong length");mZ(this,{buffer:e,byteLength:n,byteOffset:i}),Qh||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},XZ=yZ.prototype,Qh&&(HZ(IZ,"byteLength"),HZ(yZ,"buffer"),HZ(yZ,"byteLength"),HZ(yZ,"byteOffset")),Dh(XZ,{getInt8:function(e){return xZ(this,1,e)[0]<<24>>24},getUint8:function(e){return xZ(this,1,e)[0]},getInt16:function(e){var t=xZ(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=xZ(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return KZ(xZ(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return KZ(xZ(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return SZ(xZ(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return SZ(xZ(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){UZ(this,1,e,RZ,t)},setUint8:function(e,t){UZ(this,1,e,RZ,t)},setInt16:function(e,t){UZ(this,2,e,YZ,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){UZ(this,2,e,YZ,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){UZ(this,4,e,JZ,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){UZ(this,4,e,JZ,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){UZ(this,4,e,NZ,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){UZ(this,8,e,LZ,t,arguments.length>2?arguments[2]:void 0)}});lZ(IZ,hZ),lZ(yZ,ZZ);var zZ={ArrayBuffer:IZ,DataView:yZ},jZ=sh,QZ="ArrayBuffer",MZ=zZ.ArrayBuffer;gi({global:!0,forced:R.ArrayBuffer!==MZ},{ArrayBuffer:MZ}),jZ(QZ);var PZ=cn,EZ=Ee,DZ=R.TypeError,OZ=lt,_Z=Xn.exports,qZ=function(e){if(PZ(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw DZ("Incorrect hint");return EZ(this,e)},$Z=Wt("toPrimitive"),eb=Date.prototype;OZ(eb,$Z)||_Z(eb,$Z,qZ);var tb=de,nb=me,rb=qt,ib=_d,cb=Wt("hasInstance"),ob=Function.prototype;cb in ob||rb.f(ob,cb,{value:function(e){if(!tb(this)||!nb(e))return!1;var t=this.prototype;if(!nb(t))return e instanceof this;for(;e=ib(e);)if(t===e)return!0;return!1}});var ab=K,lb=or.EXISTS,ub=E,db=qt.f,sb=Function.prototype,mb=ub(sb.toString),hb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Zb=ub(hb.exec);ab&&!lb&&db(sb,"name",{configurable:!0,get:function(){try{return Zb(hb,mb(this))[1]}catch(e){return""}}}),gi({global:!0},{globalThis:R}),Lc(R.JSON,"JSON",!0);var bb={exports:{}},pb=J((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),Ib=J,gb=me,yb=q,Xb=pb,Gb=Object.isExtensible,Vb=Ib((function(){Gb(1)}))||Xb?function(e){return!!gb(e)&&((!Xb||"ArrayBuffer"!=yb(e))&&(!Gb||Gb(e)))}:Gb,fb=!J((function(){return Object.isExtensible(Object.preventExtensions({}))})),Wb=gi,Cb=E,vb=Un,Sb=me,Rb=lt,Yb=qt.f,Jb=Ir,Kb=nc,Nb=Vb,Lb=fb,Hb=!1,xb=ht("meta"),Ub=0,kb=function(e){Yb(e,xb,{value:{objectID:"O"+Ub++,weakData:{}}})},Tb=bb.exports={enable:function(){Tb.enable=function(){},Hb=!0;var e=Jb.f,t=Cb([].splice),n={};n[xb]=1,e(n).length&&(Jb.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===xb){t(r,i,1);break}return r},Wb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:Kb.f}))},fastKey:function(e,t){if(!Sb(e))return"symbol"==o(e)?e:("string"==typeof e?"S":"P")+e;if(!Rb(e,xb)){if(!Nb(e))return"F";if(!t)return"E";kb(e)}return e[xb].objectID},getWeakData:function(e,t){if(!Rb(e,xb)){if(!Nb(e))return!0;if(!t)return!1;kb(e)}return e[xb].weakData},onFreeze:function(e){return Lb&&Hb&&Nb(e)&&!Rb(e,xb)&&kb(e),e}};vb[xb]=!0;var wb=kc,Ab=x,Fb=cn,Bb=ke,zb=od,jb=Yr,Qb=Ie,Mb=gd,Pb=sd,Eb=$u,Db=R.TypeError,Ob=function(e,t){this.stopped=e,this.result=t},_b=Ob.prototype,qb=function(e,t,n){var r,i,c,a,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),h=!(!n||!n.IS_ITERATOR),Z=!(!n||!n.INTERRUPTED),b=wb(t,s),p=function(e){return r&&Eb(r,"normal",e),new Ob(!0,e)},I=function(e){return m?(Fb(e),Z?b(e[0],e[1],p):b(e[0],e[1])):Z?b(e,p):b(e)};if(h)r=e;else{if(!(i=Pb(e)))throw Db(Bb(e)+" is not iterable");if(zb(i)){for(c=0,a=jb(e);a>c;c++)if((l=I(e[c]))&&Qb(_b,l))return l;return new Ob(!1)}r=Mb(e,i)}for(u=r.next;!(d=Ab(u,r)).done;){try{l=I(d.value)}catch(e){Eb(r,"throw",e)}if("object"==o(l)&&l&&Qb(_b,l))return l}return new Ob(!1)},$b=de,ep=me,tp=Gs,np=function(e,t,n){var r,i;return tp&&$b(r=t.constructor)&&r!==n&&ep(i=r.prototype)&&i!==n.prototype&&tp(e,i),e},rp=gi,ip=R,cp=E,op=di,ap=Xn.exports,lp=bb.exports,up=qb,dp=Kh,sp=de,mp=me,hp=J,Zp=xd,bp=Lc,pp=np,Ip=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",o=ip[e],a=o&&o.prototype,l=o,u={},d=function(e){var t=cp(a[e]);ap(a,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!mp(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!mp(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!mp(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(op(e,!sp(o)||!(i||a.forEach&&!hp((function(){(new o).entries().next()})))))l=n.getConstructor(t,e,r,c),lp.enable();else if(op(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,h=hp((function(){s.has(1)})),Z=Zp((function(e){new o(e)})),b=!i&&hp((function(){for(var e=new o,t=5;t--;)e[c](t,t);return!e.has(-0)}));Z||((l=t((function(e,t){dp(e,a);var n=pp(new o,e,l);return null!=t&&up(t,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=a,a.constructor=l),(h||b)&&(d("delete"),d("has"),r&&d("get")),(b||m)&&d(c),i&&a.clear&&delete a.clear}return u[e]=l,rp({global:!0,forced:l!=o},u),bp(l,e),i||n.setStrong(l,e,r),l},gp=qt.f,yp=tc,Xp=Rh,Gp=kc,Vp=Kh,fp=qb,Wp=Bs,Cp=sh,vp=K,Sp=bb.exports.fastKey,Rp=er.set,Yp=er.getterFor,Jp={getConstructor:function(e,t,n,r){var i=e((function(e,i){Vp(e,c),Rp(e,{type:t,index:yp(null),first:void 0,last:void 0,size:0}),vp||(e.size=0),null!=i&&fp(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=Yp(t),a=function(e,t,n){var r,i,c=o(e),a=l(e,t);return a?a.value=n:(c.last=a={index:i=Sp(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=a),r&&(r.next=a),vp?c.size++:e.size++,"F"!==i&&(c.index[i]=a)),e},l=function(e,t){var n,r=o(e),i=Sp(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return Xp(c,{clear:function(){for(var e=o(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,vp?e.size=0:this.size=0},delete:function(e){var t=this,n=o(t),r=l(t,e);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),vp?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=o(this),r=Gp(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!l(this,e)}}),Xp(c,n?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return a(this,0===e?0:e,t)}}:{add:function(e){return a(this,e=0===e?0:e,e)}}),vp&&gp(c,"size",{get:function(){return o(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=Yp(t),c=Yp(r);Wp(e,t,(function(e,t){Rp(this,{type:r,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=c(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Cp(t)}};Ip("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Jp);var Kp=Math.log,Np=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Kp(1+e)},Lp=gi,Hp=Np,xp=Math.acosh,Up=Math.log,kp=Math.sqrt,Tp=Math.LN2;Lp({target:"Math",stat:!0,forced:!xp||710!=Math.floor(xp(Number.MAX_VALUE))||xp(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Up(e)+Tp:Hp(e-1+kp(e-1)*kp(e+1))}});var wp=gi,Ap=Math.asinh,Fp=Math.log,Bp=Math.sqrt;wp({target:"Math",stat:!0,forced:!(Ap&&1/Ap(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Fp(t+Bp(t*t+1)):t}});var zp=gi,jp=Math.atanh,Qp=Math.log;zp({target:"Math",stat:!0,forced:!(jp&&1/jp(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:Qp((1+e)/(1-e))/2}});var Mp=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},Pp=gi,Ep=Mp,Dp=Math.abs,Op=Math.pow;Pp({target:"Math",stat:!0},{cbrt:function(e){return Ep(e=+e)*Op(Dp(e),1/3)}});var _p=gi,qp=Math.floor,$p=Math.log,eI=Math.LOG2E;_p({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-qp($p(e+.5)*eI):32}});var tI=Math.expm1,nI=Math.exp,rI=!tI||tI(10)>22025.465794806718||tI(10)<22025.465794806718||-2e-17!=tI(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:nI(e)-1}:tI,iI=gi,cI=rI,oI=Math.cosh,aI=Math.abs,lI=Math.E;iI({target:"Math",stat:!0,forced:!oI||oI(710)===1/0},{cosh:function(e){var t=cI(aI(e)-1)+1;return(t+1/(t*lI*lI))*(lI/2)}});var uI=rI;gi({target:"Math",stat:!0,forced:uI!=Math.expm1},{expm1:uI});var dI=Mp,sI=Math.abs,mI=Math.pow,hI=mI(2,-52),ZI=mI(2,-23),bI=mI(2,127)*(2-ZI),pI=mI(2,-126),II=Math.fround||function(e){var t,n,r=sI(e),i=dI(e);return r<pI?i*function(e){return e+1/hI-1/hI}(r/pI/ZI)*pI*ZI:(n=(t=(1+ZI/hI)*r)-(t-r))>bI||n!=n?i*(1/0):i*n};gi({target:"Math",stat:!0},{fround:II});var gI=gi,yI=Math.hypot,XI=Math.abs,GI=Math.sqrt;gI({target:"Math",stat:!0,forced:!!yI&&yI(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,c=0,o=arguments.length,a=0;c<o;)a<(n=XI(arguments[c++]))?(i=i*(r=a/n)*r+1,a=n):i+=n>0?(r=n/a)*r:n;return a===1/0?1/0:a*GI(i)}});var VI=gi,fI=J,WI=Math.imul;VI({target:"Math",stat:!0,forced:fI((function(){return-5!=WI(4294967295,5)||2!=WI.length}))},{imul:function(e,t){var n=65535,r=+e,i=+t,c=n&r,o=n&i;return 0|c*o+((n&r>>>16)*o+c*(n&i>>>16)<<16>>>0)}});var CI=Math.log,vI=Math.LOG10E;gi({target:"Math",stat:!0},{log10:Math.log10||function(e){return CI(e)*vI}}),gi({target:"Math",stat:!0},{log1p:Np});var SI=gi,RI=Math.log,YI=Math.LN2;SI({target:"Math",stat:!0},{log2:function(e){return RI(e)/YI}}),gi({target:"Math",stat:!0},{sign:Mp});var JI=gi,KI=J,NI=rI,LI=Math.abs,HI=Math.exp,xI=Math.E;JI({target:"Math",stat:!0,forced:KI((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return LI(e=+e)<1?(NI(e)-NI(-e))/2:(HI(e-1)-HI(-e-1))*(xI/2)}});var UI=gi,kI=rI,TI=Math.exp;UI({target:"Math",stat:!0},{tanh:function(e){var t=kI(e=+e),n=kI(-e);return t==1/0?1:n==1/0?-1:(t-n)/(TI(e)+TI(-e))}}),Lc(Math,"Math",!0);var wI=gi,AI=Math.ceil,FI=Math.floor;wI({target:"Math",stat:!0},{trunc:function(e){return(e>0?FI:AI)(e)}});var BI=E(1..valueOf),zI="\t\n\v\f\r                 \u2028\u2029\ufeff",jI=oe,QI=Ki,MI=E("".replace),PI="[\t\n\v\f\r                 \u2028\u2029\ufeff]",EI=RegExp("^"+PI+PI+"*"),DI=RegExp(PI+PI+"*$"),OI=function(e){return function(t){var n=QI(jI(t));return 1&e&&(n=MI(n,EI,"")),2&e&&(n=MI(n,DI,"")),n}},_I={start:OI(1),end:OI(2),trim:OI(3)},qI=K,$I=R,eg=E,tg=di,ng=Xn.exports,rg=lt,ig=np,cg=Ie,og=xe,ag=Lt,lg=J,ug=Ir.f,dg=Y.f,sg=qt.f,mg=BI,hg=_I.trim,Zg="Number",bg=$I.Number,pg=bg.prototype,Ig=$I.TypeError,gg=eg("".slice),yg=eg("".charCodeAt),Xg=function(e){var t=ag(e,"number");return"bigint"==typeof t?t:Gg(t)},Gg=function(e){var t,n,r,i,c,o,a,l,u=ag(e,"number");if(og(u))throw Ig("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=hg(u),43===(t=yg(u,0))||45===t){if(88===(n=yg(u,2))||120===n)return NaN}else if(48===t){switch(yg(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(o=(c=gg(u,2)).length,a=0;a<o;a++)if((l=yg(c,a))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(tg(Zg,!bg(" 0o1")||!bg("0b1")||bg("+0x1"))){for(var Vg,fg=function(e){var t=arguments.length<1?0:bg(Xg(e)),n=this;return cg(pg,n)&&lg((function(){mg(n)}))?ig(Object(t),n,fg):t},Wg=qI?ug(bg):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),Cg=0;Wg.length>Cg;Cg++)rg(bg,Vg=Wg[Cg])&&!rg(fg,Vg)&&sg(fg,Vg,dg(bg,Vg));fg.prototype=pg,pg.constructor=fg,ng($I,Zg,fg)}gi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var vg=R.isFinite;gi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&vg(e)}});var Sg=me,Rg=Math.floor,Yg=Number.isInteger||function(e){return!Sg(e)&&isFinite(e)&&Rg(e)===e};gi({target:"Number",stat:!0},{isInteger:Yg}),gi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Jg=gi,Kg=Yg,Ng=Math.abs;Jg({target:"Number",stat:!0},{isSafeInteger:function(e){return Kg(e)&&Ng(e)<=9007199254740991}}),gi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),gi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var Lg=R,Hg=J,xg=Ki,Ug=_I.trim,kg=E("".charAt),Tg=Lg.parseFloat,wg=Lg.Symbol,Ag=wg&&wg.iterator,Fg=1/Tg("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||Ag&&!Hg((function(){Tg(Object(Ag))}))?function(e){var t=Ug(xg(e)),n=Tg(t);return 0===n&&"-"==kg(t,0)?-0:n}:Tg;gi({target:"Number",stat:!0,forced:Number.parseFloat!=Fg},{parseFloat:Fg});var Bg=R,zg=J,jg=E,Qg=Ki,Mg=_I.trim,Pg=zI,Eg=Bg.parseInt,Dg=Bg.Symbol,Og=Dg&&Dg.iterator,_g=/^[+-]?0x/i,qg=jg(_g.exec),$g=8!==Eg(Pg+"08")||22!==Eg(Pg+"0x16")||Og&&!zg((function(){Eg(Object(Og))}))?function(e,t){var n=Mg(Qg(e));return Eg(n,t>>>0||(qg(_g,n)?16:10))}:Eg,ey=$g;gi({target:"Number",stat:!0,forced:Number.parseInt!=ey},{parseInt:ey});var ty=Xr,ny=Ki,ry=oe,iy=R.RangeError,cy=function(e){var t=ny(ry(this)),n="",r=ty(e);if(r<0||r==1/0)throw iy("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},oy=gi,ay=R,ly=E,uy=Xr,dy=BI,sy=cy,my=J,hy=ay.RangeError,Zy=ay.String,by=Math.floor,py=ly(sy),Iy=ly("".slice),gy=ly(1..toFixed),yy=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},Xy=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=by(i/1e7)},Gy=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=by(r/t),r=r%t*1e7},Vy=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=Zy(e[t]);n=""===n?r:n+py("0",7-r.length)+r}return n};oy({target:"Number",proto:!0,forced:my((function(){return"0.000"!==gy(8e-5,3)||"1"!==gy(.9,0)||"1.25"!==gy(1.255,2)||"1000000000000000128"!==gy(0xde0b6b3a7640080,0)}))||!my((function(){gy({})}))},{toFixed:function(e){var t,n,r,i,c=dy(this),o=uy(e),a=[0,0,0,0,0,0],l="",u="0";if(o<0||o>20)throw hy("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return Zy(c);if(c<0&&(l="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*yy(2,69,1))-69,n=t<0?c*yy(2,-t,1):c/yy(2,t,1),n*=4503599627370496,(t=52-t)>0){for(Xy(a,0,n),r=o;r>=7;)Xy(a,1e7,0),r-=7;for(Xy(a,yy(10,r,1),0),r=t-1;r>=23;)Gy(a,1<<23),r-=23;Gy(a,1<<r),Xy(a,1,1),Gy(a,2),u=Vy(a)}else Xy(a,0,n),Xy(a,1<<-t,0),u=Vy(a)+py("0",o);return u=o>0?l+((i=u.length)<=o?"0."+py("0",o-i)+u:Iy(u,0,i-o)+"."+Iy(u,i-o)):l+u}});var fy=K,Wy=E,Cy=x,vy=J,Sy=xi,Ry=jr,Yy=U,Jy=ct,Ky=ie,Ny=Object.assign,Ly=Object.defineProperty,Hy=Wy([].concat),xy=!Ny||vy((function(){if(fy&&1!==Ny({b:1},Ny(Ly({},"a",{enumerable:!0,get:function(){Ly(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=Ny({},e)[n]||Sy(Ny({},t)).join("")!=r}))?function(e,t){for(var n=Jy(e),r=arguments.length,i=1,c=Ry.f,o=Yy.f;r>i;)for(var a,l=Ky(arguments[i++]),u=c?Hy(Sy(l),c(l)):Sy(l),d=u.length,s=0;d>s;)a=u[s++],fy&&!Cy(o,l,a)||(n[a]=l[a]);return n}:Ny,Uy=xy;gi({target:"Object",stat:!0,forced:Object.assign!==Uy},{assign:Uy});var ky=R,Ty=Am,wy=!J((function(){if(!(Ty&&Ty<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete ky[e]}})),Ay=Fe,Fy=ct,By=qt;K&&gi({target:"Object",proto:!0,forced:wy},{__defineGetter__:function(e,t){By.f(Fy(this),e,{get:Ay(t),enumerable:!0,configurable:!0})}});var zy=Fe,jy=ct,Qy=qt;K&&gi({target:"Object",proto:!0,forced:wy},{__defineSetter__:function(e,t){Qy.f(jy(this),e,{set:zy(t),enumerable:!0,configurable:!0})}});var My=K,Py=E,Ey=xi,Dy=ue,Oy=Py(U.f),_y=Py([].push),qy=function(e){return function(t){for(var n,r=Dy(t),i=Ey(r),c=i.length,o=0,a=[];c>o;)n=i[o++],My&&!Oy(r,n)||_y(a,e?[n,r[n]]:r[n]);return a}},$y={entries:qy(!0),values:qy(!1)},eX=$y.entries;gi({target:"Object",stat:!0},{entries:function(e){return eX(e)}});var tX=gi,nX=fb,rX=J,iX=me,cX=bb.exports.onFreeze,oX=Object.freeze;tX({target:"Object",stat:!0,forced:rX((function(){oX(1)})),sham:!nX},{freeze:function(e){return oX&&iX(e)?oX(cX(e)):e}});var aX=qb,lX=oc;gi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return aX(e,(function(e,n){lX(t,e,n)}),{AS_ENTRIES:!0}),t}});var uX=gi,dX=J,sX=ue,mX=Y.f,hX=K,ZX=dX((function(){mX(1)}));uX({target:"Object",stat:!0,forced:!hX||ZX,sham:!hX},{getOwnPropertyDescriptor:function(e,t){return mX(sX(e),t)}});var bX=Or,pX=ue,IX=Y,gX=oc;gi({target:"Object",stat:!0,sham:!K},{getOwnPropertyDescriptors:function(e){for(var t,n,r=pX(e),i=IX.f,c=bX(r),o={},a=0;c.length>a;)void 0!==(n=i(r,t=c[a++]))&&gX(o,t,n);return o}});var yX=gi,XX=J,GX=nc.f;yX({target:"Object",stat:!0,forced:XX((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:GX});var VX=ct,fX=_d,WX=Bd;gi({target:"Object",stat:!0,forced:J((function(){fX(1)})),sham:!WX},{getPrototypeOf:function(e){return fX(VX(e))}});var CX=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};gi({target:"Object",stat:!0},{is:CX});var vX=Vb;gi({target:"Object",stat:!0,forced:Object.isExtensible!==vX},{isExtensible:vX});var SX=gi,RX=J,YX=me,JX=q,KX=pb,NX=Object.isFrozen;SX({target:"Object",stat:!0,forced:RX((function(){NX(1)}))||KX},{isFrozen:function(e){return!YX(e)||(!(!KX||"ArrayBuffer"!=JX(e))||!!NX&&NX(e))}});var LX=gi,HX=J,xX=me,UX=q,kX=pb,TX=Object.isSealed;LX({target:"Object",stat:!0,forced:HX((function(){TX(1)}))||kX},{isSealed:function(e){return!xX(e)||(!(!kX||"ArrayBuffer"!=UX(e))||!!TX&&TX(e))}});var wX=ct,AX=xi;gi({target:"Object",stat:!0,forced:J((function(){AX(1)}))},{keys:function(e){return AX(wX(e))}});var FX=gi,BX=K,zX=wy,jX=ct,QX=Ut,MX=_d,PX=Y.f;BX&&FX({target:"Object",proto:!0,forced:zX},{__lookupGetter__:function(e){var t,n=jX(this),r=QX(e);do{if(t=PX(n,r))return t.get}while(n=MX(n))}});var EX=gi,DX=K,OX=wy,_X=ct,qX=Ut,$X=_d,eG=Y.f;DX&&EX({target:"Object",proto:!0,forced:OX},{__lookupSetter__:function(e){var t,n=_X(this),r=qX(e);do{if(t=eG(n,r))return t.set}while(n=$X(n))}});var tG=gi,nG=me,rG=bb.exports.onFreeze,iG=fb,cG=J,oG=Object.preventExtensions;tG({target:"Object",stat:!0,forced:cG((function(){oG(1)})),sham:!iG},{preventExtensions:function(e){return oG&&nG(e)?oG(rG(e)):e}});var aG=gi,lG=me,uG=bb.exports.onFreeze,dG=fb,sG=J,mG=Object.seal;aG({target:"Object",stat:!0,forced:sG((function(){mG(1)})),sham:!dG},{seal:function(e){return mG&&lG(e)?mG(uG(e)):e}});var hG=Ri,ZG=Xi?{}.toString:function(){return"[object "+hG(this)+"]"},bG=Xi,pG=Xn.exports,IG=ZG;bG||pG(Object.prototype,"toString",IG,{unsafe:!0});var gG=$y.values;gi({target:"Object",stat:!0},{values:function(e){return gG(e)}});var yG,XG,GG,VG,fG="process"==q(R.process),WG=$c,CG=ke,vG=R.TypeError,SG=function(e){if(WG(e))return e;throw vG(CG(e)+" is not a constructor")},RG=cn,YG=SG,JG=Wt("species"),KG=function(e,t){var n,r=RG(e).constructor;return void 0===r||null==(n=RG(r)[JG])?t:YG(n)},NG=R.TypeError,LG=function(e,t){if(e<t)throw NG("Not enough arguments");return e},HG=/(?:ipad|iphone|ipod).*applewebkit/i.test(ge),xG=R,UG=Ba,kG=kc,TG=de,wG=lt,AG=J,FG=zi,BG=za,zG=At,jG=LG,QG=HG,MG=fG,PG=xG.setImmediate,EG=xG.clearImmediate,DG=xG.process,OG=xG.Dispatch,_G=xG.Function,qG=xG.MessageChannel,$G=xG.String,eV=0,tV={},nV="onreadystatechange";try{yG=xG.location}catch(e){}var rV=function(e){if(wG(tV,e)){var t=tV[e];delete tV[e],t()}},iV=function(e){return function(){rV(e)}},cV=function(e){rV(e.data)},oV=function(e){xG.postMessage($G(e),yG.protocol+"//"+yG.host)};PG&&EG||(PG=function(e){jG(arguments.length,1);var t=TG(e)?e:_G(e),n=BG(arguments,1);return tV[++eV]=function(){UG(t,void 0,n)},XG(eV),eV},EG=function(e){delete tV[e]},MG?XG=function(e){DG.nextTick(iV(e))}:OG&&OG.now?XG=function(e){OG.now(iV(e))}:qG&&!QG?(VG=(GG=new qG).port2,GG.port1.onmessage=cV,XG=kG(VG.postMessage,VG)):xG.addEventListener&&TG(xG.postMessage)&&!xG.importScripts&&yG&&"file:"!==yG.protocol&&!AG(oV)?(XG=oV,xG.addEventListener("message",cV,!1)):XG=nV in zG("script")?function(e){FG.appendChild(zG("script")).onreadystatechange=function(){FG.removeChild(this),rV(e)}}:function(e){setTimeout(iV(e),0)});var aV,lV,uV,dV,sV,mV,hV,ZV,bV={set:PG,clear:EG},pV=R,IV=/ipad|iphone|ipod/i.test(ge)&&void 0!==pV.Pebble,gV=/web0s(?!.*chrome)/i.test(ge),yV=R,XV=kc,GV=Y.f,VV=bV.set,fV=HG,WV=IV,CV=gV,vV=fG,SV=yV.MutationObserver||yV.WebKitMutationObserver,RV=yV.document,YV=yV.process,JV=yV.Promise,KV=GV(yV,"queueMicrotask"),NV=KV&&KV.value;NV||(aV=function(){var e,t;for(vV&&(e=YV.domain)&&e.exit();lV;){t=lV.fn,lV=lV.next;try{t()}catch(e){throw lV?dV():uV=void 0,e}}uV=void 0,e&&e.enter()},fV||vV||CV||!SV||!RV?!WV&&JV&&JV.resolve?((hV=JV.resolve(void 0)).constructor=JV,ZV=XV(hV.then,hV),dV=function(){ZV(aV)}):vV?dV=function(){YV.nextTick(aV)}:(VV=XV(VV,yV),dV=function(){VV(aV)}):(sV=!0,mV=RV.createTextNode(""),new SV(aV).observe(mV,{characterData:!0}),dV=function(){mV.data=sV=!sV}));var LV=NV||function(e){var t={fn:e,next:void 0};uV&&(uV.next=t),lV||(lV=t,dV()),uV=t},HV=R,xV=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},UV=function(){this.head=null,this.tail=null};UV.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var kV=UV,TV=R.Promise,wV="object"==("undefined"==typeof window?"undefined":o(window))&&"object"!=("undefined"==typeof Deno?"undefined":o(Deno)),AV=R,FV=TV,BV=de,zV=di,jV=Sn,QV=Wt,MV=wV,PV=Ce;FV&&FV.prototype;var EV=QV("species"),DV=!1,OV=BV(AV.PromiseRejectionEvent),_V=zV("Promise",(function(){var e=jV(FV),t=e!==String(FV);if(!t&&66===PV)return!0;if(PV>=51&&/native code/.test(e))return!1;var n=new FV((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[EV]=r,!(DV=n.then((function(){}))instanceof r)||!t&&MV&&!OV})),qV={CONSTRUCTOR:_V,REJECTION_EVENT:OV,SUBCLASSING:DV},$V={},ef=Fe,tf=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=ef(t),this.reject=ef(n)};$V.f=function(e){return new tf(e)};var nf,rf,cf,of=gi,af=fG,lf=R,uf=x,df=Xn.exports,sf=Rh,mf=Gs,hf=Lc,Zf=sh,bf=Fe,pf=de,If=me,gf=Kh,yf=KG,Xf=bV.set,Gf=LV,Vf=function(e,t){var n=HV.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},ff=xV,Wf=kV,Cf=er,vf=TV,Sf=$V,Rf="Promise",Yf=qV.CONSTRUCTOR,Jf=qV.REJECTION_EVENT,Kf=qV.SUBCLASSING,Nf=Cf.getterFor(Rf),Lf=Cf.set,Hf=vf&&vf.prototype,xf=vf,Uf=Hf,kf=lf.TypeError,Tf=lf.document,wf=lf.process,Af=Sf.f,Ff=Af,Bf=!!(Tf&&Tf.createEvent&&lf.dispatchEvent),zf="unhandledrejection",jf=function(e){var t;return!(!If(e)||!pf(t=e.then))&&t},Qf=function(e,t){var n,r,i,c=t.value,o=1==t.state,a=o?e.ok:e.fail,l=e.resolve,u=e.reject,d=e.domain;try{a?(o||(2===t.rejection&&Of(t),t.rejection=1),!0===a?n=c:(d&&d.enter(),n=a(c),d&&(d.exit(),i=!0)),n===e.promise?u(kf("Promise-chain cycle")):(r=jf(n))?uf(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},Mf=function(e,t){e.notified||(e.notified=!0,Gf((function(){for(var n,r=e.reactions;n=r.get();)Qf(n,e);e.notified=!1,t&&!e.rejection&&Ef(e)})))},Pf=function(e,t,n){var r,i;Bf?((r=Tf.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),lf.dispatchEvent(r)):r={promise:t,reason:n},!Jf&&(i=lf["on"+e])?i(r):e===zf&&Vf("Unhandled promise rejection",n)},Ef=function(e){uf(Xf,lf,(function(){var t,n=e.facade,r=e.value;if(Df(e)&&(t=ff((function(){af?wf.emit("unhandledRejection",r,n):Pf(zf,n,r)})),e.rejection=af||Df(e)?2:1,t.error))throw t.value}))},Df=function(e){return 1!==e.rejection&&!e.parent},Of=function(e){uf(Xf,lf,(function(){var t=e.facade;af?wf.emit("rejectionHandled",t):Pf("rejectionhandled",t,e.value)}))},_f=function(e,t,n){return function(r){e(t,r,n)}},qf=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,Mf(e,!0))},$f=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw kf("Promise can't be resolved itself");var i=jf(n);i?Gf((function(){var r={done:!1};try{uf(i,n,_f(e,r,t),_f(qf,r,t))}catch(e){qf(r,e,t)}})):(t.value=n,t.state=1,Mf(t,!1))}catch(e){qf({done:!1},e,t)}}};if(Yf&&(Uf=(xf=function(e){gf(this,Uf),bf(e),uf(nf,this);var t=Nf(this);try{e(_f($f,t),_f(qf,t))}catch(e){qf(t,e)}}).prototype,(nf=function(e){Lf(this,{type:Rf,done:!1,notified:!1,parent:!1,reactions:new Wf,rejection:!1,state:0,value:void 0})}).prototype=sf(Uf,{then:function(e,t){var n=Nf(this),r=Af(yf(this,xf));return n.parent=!0,r.ok=!pf(e)||e,r.fail=pf(t)&&t,r.domain=af?wf.domain:void 0,0==n.state?n.reactions.add(r):Gf((function(){Qf(r,n)})),r.promise}}),rf=function(){var e=new nf,t=Nf(e);this.promise=e,this.resolve=_f($f,t),this.reject=_f(qf,t)},Sf.f=Af=function(e){return e===xf||undefined===e?new rf(e):Ff(e)},pf(vf)&&Hf!==Object.prototype)){cf=Hf.then,Kf||df(Hf,"then",(function(e,t){var n=this;return new xf((function(e,t){uf(cf,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete Hf.constructor}catch(e){}mf&&mf(Hf,Uf)}of({global:!0,wrap:!0,forced:Yf},{Promise:xf}),hf(xf,Rf,!1),Zf(Rf);var eW=TV,tW=qV.CONSTRUCTOR||!xd((function(e){eW.all(e).then(void 0,(function(){}))})),nW=x,rW=Fe,iW=$V,cW=xV,oW=qb;gi({target:"Promise",stat:!0,forced:tW},{all:function(e){var t=this,n=iW.f(t),r=n.resolve,i=n.reject,c=cW((function(){var n=rW(t.resolve),c=[],o=0,a=1;oW(e,(function(e){var l=o++,u=!1;a++,nW(n,t,e).then((function(e){u||(u=!0,c[l]=e,--a||r(c))}),i)})),--a||r(c)}));return c.error&&i(c.value),n.promise}});var aW=gi,lW=qV.CONSTRUCTOR,uW=TV,dW=pe,sW=de,mW=Xn.exports,hW=uW&&uW.prototype;if(aW({target:"Promise",proto:!0,forced:lW,real:!0},{catch:function(e){return this.then(void 0,e)}}),sW(uW)){var ZW=dW("Promise").prototype.catch;hW.catch!==ZW&&mW(hW,"catch",ZW,{unsafe:!0})}var bW=x,pW=Fe,IW=$V,gW=xV,yW=qb;gi({target:"Promise",stat:!0,forced:tW},{race:function(e){var t=this,n=IW.f(t),r=n.reject,i=gW((function(){var i=pW(t.resolve);yW(e,(function(e){bW(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var XW=x,GW=$V;gi({target:"Promise",stat:!0,forced:qV.CONSTRUCTOR},{reject:function(e){var t=GW.f(this);return XW(t.reject,void 0,e),t.promise}});var VW=cn,fW=me,WW=$V,CW=function(e,t){if(VW(e),fW(t)&&t.constructor===e)return t;var n=WW.f(e);return(0,n.resolve)(t),n.promise},vW=gi,SW=qV.CONSTRUCTOR,RW=CW;pe("Promise"),vW({target:"Promise",stat:!0,forced:SW},{resolve:function(e){return RW(this,e)}});var YW=x,JW=Fe,KW=$V,NW=xV,LW=qb;gi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=KW.f(t),r=n.resolve,i=n.reject,c=NW((function(){var n=JW(t.resolve),i=[],c=0,o=1;LW(e,(function(e){var a=c++,l=!1;o++,YW(n,t,e).then((function(e){l||(l=!0,i[a]={status:"fulfilled",value:e},--o||r(i))}),(function(e){l||(l=!0,i[a]={status:"rejected",reason:e},--o||r(i))}))})),--o||r(i)}));return c.error&&i(c.value),n.promise}});var HW=gi,xW=TV,UW=J,kW=pe,TW=de,wW=KG,AW=CW,FW=Xn.exports,BW=xW&&xW.prototype;if(HW({target:"Promise",proto:!0,real:!0,forced:!!xW&&UW((function(){BW.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=wW(this,kW("Promise")),n=TW(e);return this.then(n?function(n){return AW(t,e()).then((function(){return n}))}:e,n?function(n){return AW(t,e()).then((function(){throw n}))}:e)}}),TW(xW)){var zW=kW("Promise").prototype.finally;BW.finally!==zW&&FW(BW,"finally",zW,{unsafe:!0})}var jW=Ba,QW=Fe,MW=cn;gi({target:"Reflect",stat:!0,forced:!J((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return jW(QW(e),t,MW(n))}});var PW=E,EW=Fe,DW=me,OW=lt,_W=za,qW=N,$W=R.Function,eC=PW([].concat),tC=PW([].join),nC={},rC=function(e,t,n){if(!OW(nC,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";nC[t]=$W("C,a","return new C("+tC(r,",")+")")}return nC[t](e,n)},iC=qW?$W.bind:function(e){var t=EW(this),n=t.prototype,r=_W(arguments,1),i=function(){var n=eC(r,_W(arguments));return this instanceof i?rC(t,n.length,n):t.apply(e,n)};return DW(n)&&(i.prototype=n),i},cC=gi,oC=Ba,aC=iC,lC=SG,uC=cn,dC=me,sC=tc,mC=J,hC=pe("Reflect","construct"),ZC=Object.prototype,bC=[].push,pC=mC((function(){function e(){}return!(hC((function(){}),[],e)instanceof e)})),IC=!mC((function(){hC((function(){}))})),gC=pC||IC;cC({target:"Reflect",stat:!0,forced:gC,sham:gC},{construct:function(e,t){lC(e),uC(t);var n=arguments.length<3?e:lC(arguments[2]);if(IC&&!pC)return hC(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return oC(bC,r,t),new(oC(aC,e,r))}var i=n.prototype,c=sC(dC(i)?i:ZC),o=oC(e,c,t);return dC(o)?o:c}});var yC=K,XC=cn,GC=Ut,VC=qt;gi({target:"Reflect",stat:!0,forced:J((function(){Reflect.defineProperty(VC.f({},1,{value:1}),1,{value:2})})),sham:!yC},{defineProperty:function(e,t,n){XC(e);var r=GC(t);XC(n);try{return VC.f(e,r,n),!0}catch(e){return!1}}});var fC=gi,WC=cn,CC=Y.f;fC({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=CC(WC(e),t);return!(n&&!n.configurable)&&delete e[t]}});var vC=lt,SC=function(e){return void 0!==e&&(vC(e,"value")||vC(e,"writable"))},RC=x,YC=me,JC=cn,KC=SC,NC=Y,LC=_d;gi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return JC(t)===c?t[n]:(r=NC.f(t,n))?KC(r)?r.value:void 0===r.get?void 0:RC(r.get,c):YC(i=LC(t))?e(i,n,c):void 0}});var HC=cn,xC=Y;gi({target:"Reflect",stat:!0,sham:!K},{getOwnPropertyDescriptor:function(e,t){return xC.f(HC(e),t)}});var UC=cn,kC=_d;gi({target:"Reflect",stat:!0,sham:!Bd},{getPrototypeOf:function(e){return kC(UC(e))}}),gi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var TC=cn,wC=Vb;gi({target:"Reflect",stat:!0},{isExtensible:function(e){return TC(e),wC(e)}}),gi({target:"Reflect",stat:!0},{ownKeys:Or});var AC=pe,FC=cn;gi({target:"Reflect",stat:!0,sham:!fb},{preventExtensions:function(e){FC(e);try{var t=AC("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var BC=gi,zC=x,jC=cn,QC=me,MC=SC,PC=qt,EC=Y,DC=_d,OC=B;var _C=J((function(){var e=function(){},t=PC.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));BC({target:"Reflect",stat:!0,forced:_C},{set:function e(t,n,r){var i,c,o,a=arguments.length<4?t:arguments[3],l=EC.f(jC(t),n);if(!l){if(QC(c=DC(t)))return e(c,n,r,a);l=OC(0)}if(MC(l)){if(!1===l.writable||!QC(a))return!1;if(i=EC.f(a,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,PC.f(a,n,i)}else PC.f(a,n,OC(0,r))}else{if(void 0===(o=l.set))return!1;zC(o,a,r)}return!0}});var qC=cn,$C=Is,ev=Gs;ev&&gi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){qC(e),$C(t);try{return ev(e,t),!0}catch(e){return!1}}});var tv=me,nv=q,rv=Wt("match"),iv=function(e){var t;return tv(e)&&(void 0!==(t=e[rv])?!!t:"RegExp"==nv(e))},cv=cn,ov=function(){var e=cv(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},av=x,lv=lt,uv=Ie,dv=ov,sv=RegExp.prototype,mv=function(e){var t=e.flags;return void 0!==t||"flags"in sv||lv(e,"flags")||!uv(sv,e)?t:av(dv,e)},hv=J,Zv=R.RegExp,bv=hv((function(){var e=Zv("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),pv=bv||hv((function(){return!Zv("a","y").sticky})),Iv=bv||hv((function(){var e=Zv("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),gv={BROKEN_CARET:Iv,MISSED_STICKY:pv,UNSUPPORTED_Y:bv},yv=qt.f,Xv=J,Gv=R.RegExp,Vv=Xv((function(){var e=Gv(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),fv=J,Wv=R.RegExp,Cv=fv((function(){var e=Wv("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),vv=K,Sv=R,Rv=E,Yv=di,Jv=np,Kv=yn,Nv=Ir.f,Lv=Ie,Hv=iv,xv=Ki,Uv=mv,kv=gv,Tv=function(e,t,n){n in e||yv(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})},wv=Xn.exports,Av=J,Fv=lt,Bv=er.enforce,zv=sh,jv=Vv,Qv=Cv,Mv=Wt("match"),Pv=Sv.RegExp,Ev=Pv.prototype,Dv=Sv.SyntaxError,Ov=Rv(Ev.exec),_v=Rv("".charAt),qv=Rv("".replace),$v=Rv("".indexOf),eS=Rv("".slice),tS=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,nS=/a/g,rS=/a/g,iS=new Pv(nS)!==nS,cS=kv.MISSED_STICKY,oS=kv.UNSUPPORTED_Y,aS=vv&&(!iS||cS||jv||Qv||Av((function(){return rS[Mv]=!1,Pv(nS)!=nS||Pv(rS)==rS||"/a/i"!=Pv(nS,"i")})));if(Yv("RegExp",aS)){for(var lS=function(e,t){var n,r,i,c,o,a,l=Lv(Ev,this),u=Hv(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===lS)return e;if((u||Lv(Ev,e))&&(e=e.source,d&&(t=Uv(m))),e=void 0===e?"":xv(e),t=void 0===t?"":xv(t),m=e,jv&&"dotAll"in nS&&(r=!!t&&$v(t,"s")>-1)&&(t=qv(t,/s/g,"")),n=t,cS&&"sticky"in nS&&(i=!!t&&$v(t,"y")>-1)&&oS&&(t=qv(t,/y/g,"")),Qv&&(c=function(e){for(var t,n=e.length,r=0,i="",c=[],o={},a=!1,l=!1,u=0,d="";r<=n;r++){if("\\"===(t=_v(e,r)))t+=_v(e,++r);else if("]"===t)a=!1;else if(!a)switch(!0){case"["===t:a=!0;break;case"("===t:Ov(tS,eS(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||Fv(o,d))throw new Dv("Invalid capture group name");o[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=t:i+=t}return[i,c]}(e),e=c[0],s=c[1]),o=Jv(Pv(e,t),l?this:Ev,lS),(r||i||s.length)&&(a=Bv(o),r&&(a.dotAll=!0,a.raw=lS(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=_v(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+_v(e,++r);return i}(e),n)),i&&(a.sticky=!0),s.length&&(a.groups=s)),e!==m)try{Kv(o,"source",""===m?"(?:)":m)}catch(e){}return o},uS=Nv(Pv),dS=0;uS.length>dS;)Tv(lS,Pv,uS[dS++]);Ev.constructor=lS,lS.prototype=Ev,wv(Sv,"RegExp",lS)}zv("RegExp");var sS=x,mS=E,hS=Ki,ZS=ov,bS=gv,pS=De.exports,IS=tc,gS=er.get,yS=Vv,XS=Cv,GS=pS("native-string-replace",String.prototype.replace),VS=RegExp.prototype.exec,fS=VS,WS=mS("".charAt),CS=mS("".indexOf),vS=mS("".replace),SS=mS("".slice),RS=function(){var e=/a/,t=/b*/g;return sS(VS,e,"a"),sS(VS,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),YS=bS.BROKEN_CARET,JS=void 0!==/()??/.exec("")[1];(RS||JS||YS||yS||XS)&&(fS=function(e){var t,n,r,i,c,o,a,l=this,u=gS(l),d=hS(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=sS(fS,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,h=YS&&l.sticky,Z=sS(ZS,l),b=l.source,p=0,I=d;if(h&&(Z=vS(Z,"y",""),-1===CS(Z,"g")&&(Z+="g"),I=SS(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==WS(d,l.lastIndex-1))&&(b="(?: "+b+")",I=" "+I,p++),n=new RegExp("^(?:"+b+")",Z)),JS&&(n=new RegExp("^"+b+"$(?!\\s)",Z)),RS&&(r=l.lastIndex),i=sS(VS,h?n:l,I),h?i?(i.input=SS(i.input,p),i[0]=SS(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:RS&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),JS&&i&&i.length>1&&sS(GS,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=o=IS(null),c=0;c<m.length;c++)o[(a=m[c])[0]]=i[a[1]];return i});var KS=fS;gi({target:"RegExp",proto:!0,forced:/./.exec!==KS},{exec:KS});var NS=K,LS=qt,HS=ov,xS=J,US=RegExp.prototype;NS&&xS((function(){return"sy"!==Object.getOwnPropertyDescriptor(US,"flags").get.call({dotAll:!0,sticky:!0})}))&&LS.f(US,"flags",{configurable:!0,get:HS});var kS=R,TS=K,wS=gv.MISSED_STICKY,AS=q,FS=qt.f,BS=er.get,zS=RegExp.prototype,jS=kS.TypeError;TS&&wS&&FS(zS,"sticky",{configurable:!0,get:function(){if(this!==zS){if("RegExp"===AS(this))return!!BS(this).sticky;throw jS("Incompatible receiver, RegExp required")}}});var QS,MS,PS=gi,ES=R,DS=x,OS=E,_S=de,qS=me,$S=(QS=!1,(MS=/[ac]/).exec=function(){return QS=!0,/./.exec.apply(this,arguments)},!0===MS.test("abc")&&QS),eR=ES.Error,tR=OS(/./.test);PS({target:"RegExp",proto:!0,forced:!$S},{test:function(e){var t=this.exec;if(!_S(t))return tR(this,e);var n=DS(t,this,e);if(null!==n&&!qS(n))throw new eR("RegExp exec method returned something other than an Object or null");return!!n}});var nR=or.PROPER,rR=Xn.exports,iR=cn,cR=Ki,oR=J,aR=mv,lR="toString",uR=RegExp.prototype.toString,dR=oR((function(){return"/a/b"!=uR.call({source:"a",flags:"b"})})),sR=nR&&uR.name!=lR;(dR||sR)&&rR(RegExp.prototype,lR,(function(){var e=iR(this);return"/"+cR(e.source)+"/"+cR(aR(e))}),{unsafe:!0}),Ip("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Jp);var mR=E,hR=Xr,ZR=Ki,bR=oe,pR=mR("".charAt),IR=mR("".charCodeAt),gR=mR("".slice),yR=function(e){return function(t,n){var r,i,c=ZR(bR(t)),o=hR(n),a=c.length;return o<0||o>=a?e?"":void 0:(r=IR(c,o))<55296||r>56319||o+1===a||(i=IR(c,o+1))<56320||i>57343?e?pR(c,o):r:e?gR(c,o,o+2):i-56320+(r-55296<<10)+65536}},XR={codeAt:yR(!1),charAt:yR(!0)},GR=XR.codeAt;gi({target:"String",proto:!0},{codePointAt:function(e){return GR(this,e)}});var VR,fR=iv,WR=R.TypeError,CR=function(e){if(fR(e))throw WR("The method doesn't accept regular expressions");return e},vR=Wt("match"),SR=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[vR]=!1,"/./"[e](t)}catch(e){}}return!1},RR=gi,YR=E,JR=Y.f,KR=Sr,NR=Ki,LR=CR,HR=oe,xR=SR,UR=YR("".endsWith),kR=YR("".slice),TR=Math.min,wR=xR("endsWith");RR({target:"String",proto:!0,forced:!!(wR||(VR=JR(String.prototype,"endsWith"),!VR||VR.writable))&&!wR},{endsWith:function(e){var t=NR(HR(this));LR(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:TR(KR(n),r),c=NR(e);return UR?UR(t,c,i):kR(t,i-c.length,i)===c}});var AR=gi,FR=E,BR=Wr,zR=R.RangeError,jR=String.fromCharCode,QR=String.fromCodePoint,MR=FR([].join);AR({target:"String",stat:!0,forced:!!QR&&1!=QR.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],BR(t,1114111)!==t)throw zR(t+" is not a valid code point");n[i]=t<65536?jR(t):jR(55296+((t-=65536)>>10),t%1024+56320)}return MR(n,"")}});var PR=gi,ER=CR,DR=oe,OR=Ki,_R=SR,qR=E("".indexOf);PR({target:"String",proto:!0,forced:!_R("includes")},{includes:function(e){return!!~qR(OR(DR(this)),OR(ER(e)),arguments.length>1?arguments[1]:void 0)}});var $R=XR.charAt,eY=Ki,tY=er,nY=Bs,rY="String Iterator",iY=tY.set,cY=tY.getterFor(rY);nY(String,"String",(function(e){iY(this,{type:rY,string:eY(e),index:0})}),(function(){var e,t=cY(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=$R(n,r),t.index+=e.length,{value:e,done:!1})}));var oY=E,aY=Xn.exports,lY=KS,uY=J,dY=Wt,sY=yn,mY=dY("species"),hY=RegExp.prototype,ZY=function(e,t,n,r){var i=dY(e),c=!uY((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),o=c&&!uY((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[mY]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!o||n){var a=oY(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var o=oY(e),l=t.exec;return l===lY||l===hY.exec?c&&!i?{done:!0,value:a(t,n,r)}:{done:!0,value:o(n,t,r)}:{done:!1}}));aY(String.prototype,e,l[0]),aY(hY,i,l[1])}r&&sY(hY[i],"sham",!0)},bY=XR.charAt,pY=function(e,t,n){return t+(n?bY(e,t).length:1)},IY=x,gY=cn,yY=de,XY=q,GY=KS,VY=R.TypeError,fY=function(e,t){var n=e.exec;if(yY(n)){var r=IY(n,e,t);return null!==r&&gY(r),r}if("RegExp"===XY(e))return IY(GY,e,t);throw VY("RegExp#exec called on incompatible receiver")},WY=x,CY=cn,vY=Sr,SY=Ki,RY=oe,YY=ze,JY=pY,KY=fY;ZY("match",(function(e,t,n){return[function(t){var n=RY(this),r=null==t?void 0:YY(t,e);return r?WY(r,t,n):new RegExp(t)[e](SY(n))},function(e){var r=CY(this),i=SY(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return KY(r,i);var o=r.unicode;r.lastIndex=0;for(var a,l=[],u=0;null!==(a=KY(r,i));){var d=SY(a[0]);l[u]=d,""===d&&(r.lastIndex=JY(i,vY(r.lastIndex),o)),u++}return 0===u?null:l}]}));var NY=gi,LY=R,HY=x,xY=E,UY=ms,kY=oe,TY=Sr,wY=Ki,AY=cn,FY=iv,BY=mv,zY=ze,jY=Xn.exports,QY=J,MY=KG,PY=pY,EY=fY,DY=er,OY=Wt("matchAll"),_Y="RegExp String",qY="RegExp String Iterator",$Y=DY.set,eJ=DY.getterFor(qY),tJ=RegExp.prototype,nJ=LY.TypeError,rJ=xY("".indexOf),iJ=xY("".matchAll),cJ=!!iJ&&!QY((function(){iJ("a",/./)})),oJ=UY((function(e,t,n,r){$Y(this,{type:qY,regexp:e,string:t,global:n,unicode:r,done:!1})}),_Y,(function(){var e=eJ(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=EY(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===wY(r[0])&&(t.lastIndex=PY(n,TY(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),aJ=function(e){var t,n,r,i=AY(this),c=wY(e),o=MY(i,RegExp),a=wY(BY(i));return t=new o(o===RegExp?i.source:i,a),n=!!~rJ(a,"g"),r=!!~rJ(a,"u"),t.lastIndex=TY(i.lastIndex),new oJ(t,c,n,r)};NY({target:"String",proto:!0,forced:cJ},{matchAll:function(e){var t,n,r,i=kY(this);if(null!=e){if(FY(e)&&(t=wY(kY(BY(e))),!~rJ(t,"g")))throw nJ("`.matchAll` does not allow non-global regexes");if(cJ)return iJ(i,e);if(r=zY(e,OY))return HY(r,e,i)}else if(cJ)return iJ(i,e);return n=wY(i),new RegExp(e,"g")[OY](n)}}),OY in tJ||jY(tJ,OY,aJ);var lJ=E,uJ=Sr,dJ=Ki,sJ=oe,mJ=lJ(cy),hJ=lJ("".slice),ZJ=Math.ceil,bJ=function(e){return function(t,n,r){var i,c,o=dJ(sJ(t)),a=uJ(n),l=o.length,u=void 0===r?" ":dJ(r);return a<=l||""==u?o:((c=mJ(u,ZJ((i=a-l)/u.length))).length>i&&(c=hJ(c,0,i)),e?o+c:c+o)}},pJ={start:bJ(!1),end:bJ(!0)},IJ=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(ge),gJ=pJ.end;gi({target:"String",proto:!0,forced:IJ},{padEnd:function(e){return gJ(this,e,arguments.length>1?arguments[1]:void 0)}});var yJ=pJ.start;gi({target:"String",proto:!0,forced:IJ},{padStart:function(e){return yJ(this,e,arguments.length>1?arguments[1]:void 0)}});var XJ=gi,GJ=E,VJ=ue,fJ=ct,WJ=Ki,CJ=Yr,vJ=GJ([].push),SJ=GJ([].join);XJ({target:"String",stat:!0},{raw:function(e){for(var t=VJ(fJ(e).raw),n=CJ(t),r=arguments.length,i=[],c=0;n>c;){if(vJ(i,WJ(t[c++])),c===n)return SJ(i,"");c<r&&vJ(i,WJ(arguments[c]))}}}),gi({target:"String",proto:!0},{repeat:cy});var RJ=E,YJ=ct,JJ=Math.floor,KJ=RJ("".charAt),NJ=RJ("".replace),LJ=RJ("".slice),HJ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,xJ=/\$([$&'`]|\d{1,2})/g,UJ=Ba,kJ=x,TJ=E,wJ=ZY,AJ=J,FJ=cn,BJ=de,zJ=Xr,jJ=Sr,QJ=Ki,MJ=oe,PJ=pY,EJ=ze,DJ=function(e,t,n,r,i,c){var o=n+e.length,a=r.length,l=xJ;return void 0!==i&&(i=YJ(i),l=HJ),NJ(c,l,(function(c,l){var u;switch(KJ(l,0)){case"$":return"$";case"&":return e;case"`":return LJ(t,0,n);case"'":return LJ(t,o);case"<":u=i[LJ(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>a){var s=JJ(d/10);return 0===s?c:s<=a?void 0===r[s-1]?KJ(l,1):r[s-1]+KJ(l,1):c}u=r[d-1]}return void 0===u?"":u}))},OJ=fY,_J=Wt("replace"),qJ=Math.max,$J=Math.min,eK=TJ([].concat),tK=TJ([].push),nK=TJ("".indexOf),rK=TJ("".slice),iK="$0"==="a".replace(/./,"$0"),cK=!!/./[_J]&&""===/./[_J]("a","$0"),oK=!AJ((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));wJ("replace",(function(e,t,n){var r=cK?"$":"$0";return[function(e,n){var r=MJ(this),i=null==e?void 0:EJ(e,_J);return i?kJ(i,e,r,n):kJ(t,QJ(r),e,n)},function(e,i){var c=FJ(this),o=QJ(e);if("string"==typeof i&&-1===nK(i,r)&&-1===nK(i,"$<")){var a=n(t,c,o,i);if(a.done)return a.value}var l=BJ(i);l||(i=QJ(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=OJ(c,o);if(null===m)break;if(tK(s,m),!u)break;""===QJ(m[0])&&(c.lastIndex=PJ(o,jJ(c.lastIndex),d))}for(var h,Z="",b=0,p=0;p<s.length;p++){for(var I=QJ((m=s[p])[0]),g=qJ($J(zJ(m.index),o.length),0),y=[],X=1;X<m.length;X++)tK(y,void 0===(h=m[X])?h:String(h));var G=m.groups;if(l){var V=eK([I],y,g,o);void 0!==G&&tK(V,G);var f=QJ(UJ(i,void 0,V))}else f=DJ(I,o,g,y,G,i);g>=b&&(Z+=rK(o,b,g)+f,b=g+I.length)}return Z+rK(o,b)}]}),!oK||!iK||cK);var aK=x,lK=cn,uK=oe,dK=CX,sK=Ki,mK=ze,hK=fY;ZY("search",(function(e,t,n){return[function(t){var n=uK(this),r=null==t?void 0:mK(t,e);return r?aK(r,t,n):new RegExp(t)[e](sK(n))},function(e){var r=lK(this),i=sK(e),c=n(t,r,i);if(c.done)return c.value;var o=r.lastIndex;dK(o,0)||(r.lastIndex=0);var a=hK(r,i);return dK(r.lastIndex,o)||(r.lastIndex=o),null===a?-1:a.index}]}));var ZK=Ba,bK=x,pK=E,IK=ZY,gK=iv,yK=cn,XK=oe,GK=KG,VK=pY,fK=Sr,WK=Ki,CK=ze,vK=mc,SK=fY,RK=KS,YK=J,JK=gv.UNSUPPORTED_Y,KK=4294967295,NK=Math.min,LK=[].push,HK=pK(/./.exec),xK=pK(LK),UK=pK("".slice),kK=!YK((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));IK("split",(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=WK(XK(this)),i=void 0===n?KK:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!gK(e))return bK(t,r,e,i);for(var c,o,a,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,s=new RegExp(e.source,u+"g");(c=bK(RK,s,r))&&!((o=s.lastIndex)>d&&(xK(l,UK(r,d,c.index)),c.length>1&&c.index<r.length&&ZK(LK,l,vK(c,1)),a=c[0].length,d=o,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!a&&HK(s,"")||xK(l,""):xK(l,UK(r,d)),l.length>i?vK(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:bK(t,this,e,n)}:t,[function(t,n){var i=XK(this),c=null==t?void 0:CK(t,e);return c?bK(c,t,i,n):bK(r,WK(i),t,n)},function(e,i){var c=yK(this),o=WK(e),a=n(r,c,o,i,r!==t);if(a.done)return a.value;var l=GK(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(JK?"g":"y"),s=new l(JK?"^(?:"+c.source+")":c,d),m=void 0===i?KK:i>>>0;if(0===m)return[];if(0===o.length)return null===SK(s,o)?[o]:[];for(var h=0,Z=0,b=[];Z<o.length;){s.lastIndex=JK?0:Z;var p,I=SK(s,JK?UK(o,Z):o);if(null===I||(p=NK(fK(s.lastIndex+(JK?Z:0)),o.length))===h)Z=VK(o,Z,u);else{if(xK(b,UK(o,h,Z)),b.length===m)return b;for(var g=1;g<=I.length-1;g++)if(xK(b,I[g]),b.length===m)return b;Z=h=p}}return xK(b,UK(o,h)),b}]}),!kK,JK);var TK=gi,wK=E,AK=Y.f,FK=Sr,BK=Ki,zK=CR,jK=oe,QK=SR,MK=wK("".startsWith),PK=wK("".slice),EK=Math.min,DK=QK("startsWith"),OK=!DK&&!!function(){var e=AK(String.prototype,"startsWith");return e&&!e.writable}();TK({target:"String",proto:!0,forced:!OK&&!DK},{startsWith:function(e){var t=BK(jK(this));zK(e);var n=FK(EK(arguments.length>1?arguments[1]:void 0,t.length)),r=BK(e);return MK?MK(t,r,n):PK(t,n,n+r.length)===r}});var _K=or.PROPER,qK=J,$K=zI,eN=function(e){return qK((function(){return!!$K[e]()||"​…᠎"!=="​…᠎"[e]()||_K&&$K[e].name!==e}))},tN=_I.trim;gi({target:"String",proto:!0,forced:eN("trim")},{trim:function(){return tN(this)}});var nN=_I.end,rN=eN("trimEnd")?function(){return nN(this)}:"".trimEnd;gi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==rN},{trimRight:rN});gi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==rN},{trimEnd:rN});var iN=_I.start,cN=eN("trimStart")?function(){return iN(this)}:"".trimStart;gi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==cN},{trimLeft:cN});gi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==cN},{trimStart:cN});var oN=oe,aN=Ki,lN=/"/g,uN=E("".replace),dN=function(e,t,n,r){var i=aN(oN(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+uN(aN(r),lN,"&quot;")+'"'),c+">"+i+"</"+t+">"},sN=J,mN=function(e){return sN((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},hN=dN;gi({target:"String",proto:!0,forced:mN("anchor")},{anchor:function(e){return hN(this,"a","name",e)}});var ZN=dN;gi({target:"String",proto:!0,forced:mN("big")},{big:function(){return ZN(this,"big","","")}});var bN=dN;gi({target:"String",proto:!0,forced:mN("blink")},{blink:function(){return bN(this,"blink","","")}});var pN=dN;gi({target:"String",proto:!0,forced:mN("bold")},{bold:function(){return pN(this,"b","","")}});var IN=dN;gi({target:"String",proto:!0,forced:mN("fixed")},{fixed:function(){return IN(this,"tt","","")}});var gN=dN;gi({target:"String",proto:!0,forced:mN("fontcolor")},{fontcolor:function(e){return gN(this,"font","color",e)}});var yN=dN;gi({target:"String",proto:!0,forced:mN("fontsize")},{fontsize:function(e){return yN(this,"font","size",e)}});var XN=dN;gi({target:"String",proto:!0,forced:mN("italics")},{italics:function(){return XN(this,"i","","")}});var GN=dN;gi({target:"String",proto:!0,forced:mN("link")},{link:function(e){return GN(this,"a","href",e)}});var VN=dN;gi({target:"String",proto:!0,forced:mN("small")},{small:function(){return VN(this,"small","","")}});var fN=dN;gi({target:"String",proto:!0,forced:mN("strike")},{strike:function(){return fN(this,"strike","","")}});var WN=dN;gi({target:"String",proto:!0,forced:mN("sub")},{sub:function(){return WN(this,"sub","","")}});var CN=dN;gi({target:"String",proto:!0,forced:mN("sup")},{sup:function(){return CN(this,"sup","","")}});var vN,SN,RN,YN={exports:{}},JN=vh,KN=K,NN=R,LN=de,HN=me,xN=lt,UN=Ri,kN=ke,TN=yn,wN=Xn.exports,AN=qt.f,FN=Ie,BN=_d,zN=Gs,jN=Wt,QN=ht,MN=NN.Int8Array,PN=MN&&MN.prototype,EN=NN.Uint8ClampedArray,DN=EN&&EN.prototype,ON=MN&&BN(MN),_N=PN&&BN(PN),qN=Object.prototype,$N=NN.TypeError,eL=jN("toStringTag"),tL=QN("TYPED_ARRAY_TAG"),nL=QN("TYPED_ARRAY_CONSTRUCTOR"),rL=JN&&!!zN&&"Opera"!==UN(NN.opera),iL=!1,cL={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},oL={BigInt64Array:8,BigUint64Array:8},aL=function(e){if(!HN(e))return!1;var t=UN(e);return xN(cL,t)||xN(oL,t)};for(vN in cL)(RN=(SN=NN[vN])&&SN.prototype)?TN(RN,nL,SN):rL=!1;for(vN in oL)(RN=(SN=NN[vN])&&SN.prototype)&&TN(RN,nL,SN);if((!rL||!LN(ON)||ON===Function.prototype)&&(ON=function(){throw $N("Incorrect invocation")},rL))for(vN in cL)NN[vN]&&zN(NN[vN],ON);if((!rL||!_N||_N===qN)&&(_N=ON.prototype,rL))for(vN in cL)NN[vN]&&zN(NN[vN].prototype,_N);if(rL&&BN(DN)!==_N&&zN(DN,_N),KN&&!xN(_N,eL))for(vN in iL=!0,AN(_N,eL,{get:function(){return HN(this)?this[tL]:void 0}}),cL)NN[vN]&&TN(NN[vN],tL,vN);var lL={NATIVE_ARRAY_BUFFER_VIEWS:rL,TYPED_ARRAY_CONSTRUCTOR:nL,TYPED_ARRAY_TAG:iL&&tL,aTypedArray:function(e){if(aL(e))return e;throw $N("Target is not a typed array")},aTypedArrayConstructor:function(e){if(LN(e)&&(!zN||FN(ON,e)))return e;throw $N(kN(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(KN){if(n)for(var i in cL){var c=NN[i];if(c&&xN(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}_N[e]&&!n||wN(_N,e,n?t:rL&&PN[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(KN){if(zN){if(n)for(r in cL)if((i=NN[r])&&xN(i,e))try{delete i[e]}catch(e){}if(ON[e]&&!n)return;try{return wN(ON,e,n?t:rL&&ON[e]||t)}catch(e){}}for(r in cL)!(i=NN[r])||i[e]&&!n||wN(i,e,t)}},isView:function(e){if(!HN(e))return!1;var t=UN(e);return"DataView"===t||xN(cL,t)||xN(oL,t)},isTypedArray:aL,TypedArray:ON,TypedArrayPrototype:_N},uL=R,dL=J,sL=xd,mL=lL.NATIVE_ARRAY_BUFFER_VIEWS,hL=uL.ArrayBuffer,ZL=uL.Int8Array,bL=!mL||!dL((function(){ZL(1)}))||!dL((function(){new ZL(-1)}))||!sL((function(e){new ZL,new ZL(null),new ZL(1.5),new ZL(e)}),!0)||dL((function(){return 1!==new ZL(new hL(2),1,void 0).length})),pL=Xr,IL=R.RangeError,gL=function(e){var t=pL(e);if(t<0)throw IL("The argument can't be less than 0");return t},yL=R.RangeError,XL=function(e,t){var n=gL(e);if(n%t)throw yL("Wrong offset");return n},GL=kc,VL=x,fL=SG,WL=ct,CL=Yr,vL=gd,SL=sd,RL=od,YL=lL.aTypedArrayConstructor,JL=function(e){var t,n,r,i,c,o,a=fL(this),l=WL(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=SL(l);if(m&&!RL(m))for(o=(c=vL(l,m)).next,l=[];!(i=VL(o,c)).done;)l.push(i.value);for(s&&u>2&&(d=GL(d,arguments[2])),n=CL(l),r=new(YL(a))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},KL=gi,NL=R,LL=x,HL=K,xL=bL,UL=lL,kL=zZ,TL=Kh,wL=B,AL=yn,FL=Yg,BL=Sr,zL=xh,jL=XL,QL=Ut,ML=lt,PL=Ri,EL=me,DL=xe,OL=tc,_L=Ie,qL=Gs,$L=Ir.f,eH=JL,tH=po.forEach,nH=sh,rH=qt,iH=Y,cH=np,oH=er.get,aH=er.set,lH=rH.f,uH=iH.f,dH=Math.round,sH=NL.RangeError,mH=kL.ArrayBuffer,hH=mH.prototype,ZH=kL.DataView,bH=UL.NATIVE_ARRAY_BUFFER_VIEWS,pH=UL.TYPED_ARRAY_CONSTRUCTOR,IH=UL.TYPED_ARRAY_TAG,gH=UL.TypedArray,yH=UL.TypedArrayPrototype,XH=UL.aTypedArrayConstructor,GH=UL.isTypedArray,VH="BYTES_PER_ELEMENT",fH="Wrong length",WH=function(e,t){XH(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},CH=function(e,t){lH(e,t,{get:function(){return oH(this)[t]}})},vH=function(e){var t;return _L(hH,e)||"ArrayBuffer"==(t=PL(e))||"SharedArrayBuffer"==t},SH=function(e,t){return GH(e)&&!DL(t)&&t in e&&FL(+t)&&t>=0},RH=function(e,t){return t=QL(t),SH(e,t)?wL(2,e[t]):uH(e,t)},YH=function(e,t,n){return t=QL(t),!(SH(e,t)&&EL(n)&&ML(n,"value"))||ML(n,"get")||ML(n,"set")||n.configurable||ML(n,"writable")&&!n.writable||ML(n,"enumerable")&&!n.enumerable?lH(e,t,n):(e[t]=n.value,e)};HL?(bH||(iH.f=RH,rH.f=YH,CH(yH,"buffer"),CH(yH,"byteOffset"),CH(yH,"byteLength"),CH(yH,"length")),KL({target:"Object",stat:!0,forced:!bH},{getOwnPropertyDescriptor:RH,defineProperty:YH}),YN.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,o="set"+e,a=NL[i],l=a,u=l&&l.prototype,d={},s=function(e,t){lH(e,t,{get:function(){return function(e,t){var n=oH(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=oH(e);n&&(i=(i=dH(i))<0?0:i>255?255:255&i),c.view[o](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};bH?xL&&(l=t((function(e,t,n,i){return TL(e,u),cH(EL(t)?vH(t)?void 0!==i?new a(t,jL(n,r),i):void 0!==n?new a(t,jL(n,r)):new a(t):GH(t)?WH(l,t):LL(eH,l,t):new a(zL(t)),e,l)})),qL&&qL(l,gH),tH($L(a),(function(e){e in l||AL(l,e,a[e])})),l.prototype=u):(l=t((function(e,t,n,i){TL(e,u);var c,o,a,d=0,m=0;if(EL(t)){if(!vH(t))return GH(t)?WH(l,t):LL(eH,l,t);c=t,m=jL(n,r);var h=t.byteLength;if(void 0===i){if(h%r)throw sH(fH);if((o=h-m)<0)throw sH(fH)}else if((o=BL(i)*r)+m>h)throw sH(fH);a=o/r}else a=zL(t),c=new mH(o=a*r);for(aH(e,{buffer:c,byteOffset:m,byteLength:o,length:a,view:new ZH(c)});d<a;)s(e,d++)})),qL&&qL(l,gH),u=l.prototype=OL(yH)),u.constructor!==l&&AL(u,"constructor",l),AL(u,pH,l),IH&&AL(u,IH,i),d[i]=l,KL({global:!0,forced:l!=a,sham:!bH},d),VH in l||AL(l,VH,r),VH in u||AL(u,VH,r),nH(i)}):YN.exports=function(){},(0,YN.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,YN.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YN.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var JH=lL,KH=E(mu),NH=JH.aTypedArray;(0,JH.exportTypedArrayMethod)("copyWithin",(function(e,t){return KH(NH(this),e,t,arguments.length>2?arguments[2]:void 0)}));var LH=po.every,HH=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("every",(function(e){return LH(HH(this),e,arguments.length>1?arguments[1]:void 0)}));var xH=x,UH=Vu,kH=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return xH(UH,kH(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var TH=Yr,wH=KG,AH=lL.TYPED_ARRAY_CONSTRUCTOR,FH=lL.aTypedArrayConstructor,BH=function(e){return FH(wH(e,e[AH]))},zH=function(e,t){for(var n=0,r=TH(t),i=new e(r);r>n;)i[n]=t[n++];return i},jH=BH,QH=po.filter,MH=function(e,t){return zH(jH(e),t)},PH=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("filter",(function(e){var t=QH(PH(this),e,arguments.length>1?arguments[1]:void 0);return MH(this,t)}));var EH=po.find,DH=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("find",(function(e){return EH(DH(this),e,arguments.length>1?arguments[1]:void 0)}));var OH=po.findIndex,_H=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("findIndex",(function(e){return OH(_H(this),e,arguments.length>1?arguments[1]:void 0)}));var qH=po.forEach,$H=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("forEach",(function(e){qH($H(this),e,arguments.length>1?arguments[1]:void 0)})),(0,lL.exportTypedArrayStaticMethod)("from",JL,bL);var ex=Hr.includes,tx=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("includes",(function(e){return ex(tx(this),e,arguments.length>1?arguments[1]:void 0)}));var nx=Hr.indexOf,rx=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("indexOf",(function(e){return nx(rx(this),e,arguments.length>1?arguments[1]:void 0)}));var ix=R,cx=J,ox=E,ax=lL,lx=$s,ux=Wt("iterator"),dx=ix.Uint8Array,sx=ox(lx.values),mx=ox(lx.keys),hx=ox(lx.entries),Zx=ax.aTypedArray,bx=ax.exportTypedArrayMethod,px=dx&&dx.prototype,Ix=!cx((function(){px[ux].call([1])})),gx=!!px&&px.values&&px[ux]===px.values&&"values"===px.values.name,yx=function(){return sx(Zx(this))};bx("entries",(function(){return hx(Zx(this))}),Ix),bx("keys",(function(){return mx(Zx(this))}),Ix),bx("values",yx,Ix||!gx,{name:"values"}),bx(ux,yx,Ix||!gx,{name:"values"});var Xx=lL.aTypedArray,Gx=lL.exportTypedArrayMethod,Vx=E([].join);Gx("join",(function(e){return Vx(Xx(this),e)}));var fx=Ba,Wx=ue,Cx=Xr,vx=Yr,Sx=nm,Rx=Math.min,Yx=[].lastIndexOf,Jx=!!Yx&&1/[1].lastIndexOf(1,-0)<0,Kx=Sx("lastIndexOf"),Nx=Jx||!Kx?function(e){if(Jx)return fx(Yx,this,arguments)||0;var t=Wx(this),n=vx(t),r=n-1;for(arguments.length>1&&(r=Rx(r,Cx(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:Yx,Lx=Ba,Hx=Nx,xx=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return Lx(Hx,xx(this),t>1?[e,arguments[1]]:[e])}));var Ux=po.map,kx=BH,Tx=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("map",(function(e){return Ux(Tx(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(kx(e))(t)}))}));var wx=lL.aTypedArrayConstructor;(0,lL.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(wx(this))(t);t>e;)n[e]=arguments[e++];return n}),bL);var Ax=Fe,Fx=ct,Bx=ie,zx=Yr,jx=R.TypeError,Qx=function(e){return function(t,n,r,i){Ax(n);var c=Fx(t),o=Bx(c),a=zx(c),l=e?a-1:0,u=e?-1:1;if(r<2)for(;;){if(l in o){i=o[l],l+=u;break}if(l+=u,e?l<0:a<=l)throw jx("Reduce of empty array with no initial value")}for(;e?l>=0:a>l;l+=u)l in o&&(i=n(i,o[l],l,c));return i}},Mx={left:Qx(!1),right:Qx(!0)},Px=Mx.left,Ex=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return Px(Ex(this),e,t,t>1?arguments[1]:void 0)}));var Dx=Mx.right,Ox=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return Dx(Ox(this),e,t,t>1?arguments[1]:void 0)}));var _x=lL.aTypedArray,qx=lL.exportTypedArrayMethod,$x=Math.floor;qx("reverse",(function(){for(var e,t=this,n=_x(t).length,r=$x(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var eU=R,tU=x,nU=lL,rU=Yr,iU=XL,cU=ct,oU=J,aU=eU.RangeError,lU=eU.Int8Array,uU=lU&&lU.prototype,dU=uU&&uU.set,sU=nU.aTypedArray,mU=nU.exportTypedArrayMethod,hU=!oU((function(){var e=new Uint8ClampedArray(2);return tU(dU,e,{length:1,0:3},1),3!==e[1]})),ZU=hU&&nU.NATIVE_ARRAY_BUFFER_VIEWS&&oU((function(){var e=new lU(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));mU("set",(function(e){sU(this);var t=iU(arguments.length>1?arguments[1]:void 0,1),n=cU(e);if(hU)return tU(dU,this,n,t);var r=this.length,i=rU(n),c=0;if(i+t>r)throw aU("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!hU||ZU);var bU=BH,pU=za,IU=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("slice",(function(e,t){for(var n=pU(IU(this),e,t),r=bU(this),i=0,c=n.length,o=new r(c);c>i;)o[i]=n[i++];return o}),J((function(){new Int8Array(1).slice()})));var gU=po.some,yU=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("some",(function(e){return gU(yU(this),e,arguments.length>1?arguments[1]:void 0)}));var XU=E,GU=J,VU=Fe,fU=xm,WU=km,CU=Tm,vU=Ce,SU=Am,RU=lL.aTypedArray,YU=lL.exportTypedArrayMethod,JU=R.Uint16Array,KU=JU&&XU(JU.prototype.sort),NU=!(!KU||GU((function(){KU(new JU(2),null)}))&&GU((function(){KU(new JU(2),{})}))),LU=!!KU&&!GU((function(){if(vU)return vU<74;if(WU)return WU<67;if(CU)return!0;if(SU)return SU<602;var e,t,n=new JU(516),r=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(KU(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));YU("sort",(function(e){return void 0!==e&&VU(e),LU?KU(this,e):fU(RU(this),function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!LU||NU);var HU=Sr,xU=Wr,UU=BH,kU=lL.aTypedArray;(0,lL.exportTypedArrayMethod)("subarray",(function(e,t){var n=kU(this),r=n.length,i=xU(e,r);return new(UU(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,HU((void 0===t?r:xU(t,r))-i))}));var TU=Ba,wU=lL,AU=J,FU=za,BU=R.Int8Array,zU=wU.aTypedArray,jU=wU.exportTypedArrayMethod,QU=[].toLocaleString,MU=!!BU&&AU((function(){QU.call(new BU(1))}));jU("toLocaleString",(function(){return TU(QU,MU?FU(zU(this)):zU(this),FU(arguments))}),AU((function(){return[1,2].toLocaleString()!=new BU([1,2]).toLocaleString()}))||!AU((function(){BU.prototype.toLocaleString.call([1,2])})));var PU=lL.exportTypedArrayMethod,EU=J,DU=E,OU=R.Uint8Array,_U=OU&&OU.prototype||{},qU=[].toString,$U=DU([].join);EU((function(){qU.call({})}))&&(qU=function(){return $U(this)});var ek=_U.toString!=qU;PU("toString",qU,ek);var tk=E,nk=Rh,rk=bb.exports.getWeakData,ik=cn,ck=me,ok=Kh,ak=qb,lk=lt,uk=er.set,dk=er.getterFor,sk=po.find,mk=po.findIndex,hk=tk([].splice),Zk=0,bk=function(e){return e.frozen||(e.frozen=new pk)},pk=function(){this.entries=[]},Ik=function(e,t){return sk(e.entries,(function(e){return e[0]===t}))};pk.prototype={get:function(e){var t=Ik(this,e);if(t)return t[1]},has:function(e){return!!Ik(this,e)},set:function(e,t){var n=Ik(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=mk(this.entries,(function(t){return t[0]===e}));return~t&&hk(this.entries,t,1),!!~t}};var gk,yk={getConstructor:function(e,t,n,r){var i=e((function(e,i){ok(e,c),uk(e,{type:t,id:Zk++,frozen:void 0}),null!=i&&ak(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=dk(t),a=function(e,t,n){var r=o(e),i=rk(ik(t),!0);return!0===i?bk(r).set(t,n):i[r.id]=n,e};return nk(c,{delete:function(e){var t=o(this);if(!ck(e))return!1;var n=rk(e);return!0===n?bk(t).delete(e):n&&lk(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!ck(e))return!1;var n=rk(e);return!0===n?bk(t).has(e):n&&lk(n,t.id)}}),nk(c,n?{get:function(e){var t=o(this);if(ck(e)){var n=rk(e);return!0===n?bk(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return a(this,e,t)}}:{add:function(e){return a(this,e,!0)}}),i}},Xk=R,Gk=E,Vk=Rh,fk=bb.exports,Wk=Ip,Ck=yk,vk=me,Sk=Vb,Rk=er.enforce,Yk=Kn,Jk=!Xk.ActiveXObject&&"ActiveXObject"in Xk,Kk=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},Nk=Wk("WeakMap",Kk,Ck);if(Yk&&Jk){gk=Ck.getConstructor(Kk,"WeakMap",!0),fk.enable();var Lk=Nk.prototype,Hk=Gk(Lk.delete),xk=Gk(Lk.has),Uk=Gk(Lk.get),kk=Gk(Lk.set);Vk(Lk,{delete:function(e){if(vk(e)&&!Sk(e)){var t=Rk(this);return t.frozen||(t.frozen=new gk),Hk(this,e)||t.frozen.delete(e)}return Hk(this,e)},has:function(e){if(vk(e)&&!Sk(e)){var t=Rk(this);return t.frozen||(t.frozen=new gk),xk(this,e)||t.frozen.has(e)}return xk(this,e)},get:function(e){if(vk(e)&&!Sk(e)){var t=Rk(this);return t.frozen||(t.frozen=new gk),xk(this,e)?Uk(this,e):t.frozen.get(e)}return Uk(this,e)},set:function(e,t){if(vk(e)&&!Sk(e)){var n=Rk(this);n.frozen||(n.frozen=new gk),xk(this,e)?kk(this,e,t):n.frozen.set(e,t)}else kk(this,e,t);return this}})}Ip("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),yk);var Tk={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},wk=At("span").classList,Ak=wk&&wk.constructor&&wk.constructor.prototype,Fk=Ak===Object.prototype?void 0:Ak,Bk=po.forEach,zk=nm("forEach")?[].forEach:function(e){return Bk(this,e,arguments.length>1?arguments[1]:void 0)},jk=R,Qk=Tk,Mk=Fk,Pk=zk,Ek=yn,Dk=function(e){if(e&&e.forEach!==Pk)try{Ek(e,"forEach",Pk)}catch(t){e.forEach=Pk}};for(var Ok in Qk)Qk[Ok]&&Dk(jk[Ok]&&jk[Ok].prototype);Dk(Mk);var _k=R,qk=Tk,$k=Fk,eT=$s,tT=yn,nT=Wt,rT=nT("iterator"),iT=nT("toStringTag"),cT=eT.values,oT=function(e,t){if(e){if(e[rT]!==cT)try{tT(e,rT,cT)}catch(t){e[rT]=cT}if(e[iT]||tT(e,iT,t),qk[t])for(var n in eT)if(e[n]!==eT[n])try{tT(e,n,eT[n])}catch(t){e[n]=eT[n]}}};for(var aT in qk)oT(_k[aT]&&_k[aT].prototype,aT);oT($k,"DOMTokenList");var lT=bV.clear;gi({global:!0,bind:!0,enumerable:!0,forced:R.clearImmediate!==lT},{clearImmediate:lT});var uT=bV.set;gi({global:!0,bind:!0,enumerable:!0,forced:R.setImmediate!==uT},{setImmediate:uT});var dT=gi,sT=LV,mT=Fe,hT=LG,ZT=fG,bT=R.process;dT({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){hT(arguments.length,1),mT(e);var t=ZT&&bT.domain;sT(t?t.bind(e):e)}});var pT=J,IT=Wt("iterator"),gT=!pT((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[IT]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),yT=E,XT=2147483647,GT=/[^\0-\u007E]/,VT=/[.\u3002\uFF0E\uFF61]/g,fT="Overflow: input needs wider integers to process",WT=R.RangeError,CT=yT(VT.exec),vT=Math.floor,ST=String.fromCharCode,RT=yT("".charCodeAt),YT=yT([].join),JT=yT([].push),KT=yT("".replace),NT=yT("".split),LT=yT("".toLowerCase),HT=function(e){return e+22+75*(e<26)},xT=function(e,t,n){var r=0;for(e=n?vT(e/700):e>>1,e+=vT(e/t);e>455;)e=vT(e/35),r+=36;return vT(r+36*e/(e+38))},UT=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=RT(e,n++);if(i>=55296&&i<=56319&&n<r){var c=RT(e,n++);56320==(64512&c)?JT(t,((1023&i)<<10)+(1023&c)+65536):(JT(t,i),n--)}else JT(t,i)}return t}(e);var n,r,i=e.length,c=128,o=0,a=72;for(n=0;n<e.length;n++)(r=e[n])<128&&JT(t,ST(r));var l=t.length,u=l;for(l&&JT(t,"-");u<i;){var d=XT;for(n=0;n<e.length;n++)(r=e[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>vT((XT-o)/s))throw WT(fT);for(o+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++o>XT)throw WT(fT);if(r==c){for(var m=o,h=36;;){var Z=h<=a?1:h>=a+26?26:h-a;if(m<Z)break;var b=m-Z,p=36-Z;JT(t,ST(HT(Z+b%p))),m=vT(b/p),h+=36}JT(t,ST(HT(m))),a=xT(o,s,u==l),o=0,u++}}o++,c++}return YT(t,"")},kT=gi,TT=R,wT=x,AT=E,FT=K,BT=gT,zT=Xn.exports,jT=Rh,QT=Lc,MT=ms,PT=er,ET=Kh,DT=de,OT=lt,_T=kc,qT=Ri,$T=cn,ew=me,tw=Ki,nw=tc,rw=B,iw=gd,cw=sd,ow=LG,aw=xm,lw=Wt("iterator"),uw="URLSearchParams",dw="URLSearchParamsIterator",sw=PT.set,mw=PT.getterFor(uw),hw=PT.getterFor(dw),Zw=Object.getOwnPropertyDescriptor,bw=function(e){if(!FT)return TT(e);var t=Zw(TT,e);return t&&t.value},pw=bw("fetch"),Iw=bw("Request"),gw=bw("Headers"),yw=Iw&&Iw.prototype,Xw=gw&&gw.prototype,Gw=TT.RegExp,Vw=TT.TypeError,fw=TT.decodeURIComponent,Ww=TT.encodeURIComponent,Cw=AT("".charAt),vw=AT([].join),Sw=AT([].push),Rw=AT("".replace),Yw=AT([].shift),Jw=AT([].splice),Kw=AT("".split),Nw=AT("".slice),Lw=/\+/g,Hw=Array(4),xw=function(e){return Hw[e-1]||(Hw[e-1]=Gw("((?:%[\\da-f]{2}){"+e+"})","gi"))},Uw=function(e){try{return fw(e)}catch(t){return e}},kw=function(e){var t=Rw(e,Lw," "),n=4;try{return fw(t)}catch(e){for(;n;)t=Rw(t,xw(n--),Uw);return t}},Tw=/[!'()~]|%20/g,ww={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Aw=function(e){return ww[e]},Fw=function(e){return Rw(Ww(e),Tw,Aw)},Bw=MT((function(e,t){sw(this,{type:dw,iterator:iw(mw(e).entries),kind:t})}),"Iterator",(function(){var e=hw(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),zw=function(e){this.entries=[],this.url=null,void 0!==e&&(ew(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Cw(e,0)?Nw(e,1):e:tw(e)))};zw.prototype={type:uw,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,o,a,l=cw(e);if(l)for(n=(t=iw(e,l)).next;!(r=wT(n,t)).done;){if(c=(i=iw($T(r.value))).next,(o=wT(c,i)).done||(a=wT(c,i)).done||!wT(c,i).done)throw Vw("Expected sequence with length 2");Sw(this.entries,{key:tw(o.value),value:tw(a.value)})}else for(var u in e)OT(e,u)&&Sw(this.entries,{key:u,value:tw(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=Kw(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=Kw(t,"="),Sw(this.entries,{key:kw(Yw(n)),value:kw(vw(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],Sw(n,Fw(e.key)+"="+Fw(e.value));return vw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var jw=function(){ET(this,Qw);var e=arguments.length>0?arguments[0]:void 0;sw(this,new zw(e))},Qw=jw.prototype;if(jT(Qw,{append:function(e,t){ow(arguments.length,2);var n=mw(this);Sw(n.entries,{key:tw(e),value:tw(t)}),n.updateURL()},delete:function(e){ow(arguments.length,1);for(var t=mw(this),n=t.entries,r=tw(e),i=0;i<n.length;)n[i].key===r?Jw(n,i,1):i++;t.updateURL()},get:function(e){ow(arguments.length,1);for(var t=mw(this).entries,n=tw(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){ow(arguments.length,1);for(var t=mw(this).entries,n=tw(e),r=[],i=0;i<t.length;i++)t[i].key===n&&Sw(r,t[i].value);return r},has:function(e){ow(arguments.length,1);for(var t=mw(this).entries,n=tw(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){ow(arguments.length,1);for(var n,r=mw(this),i=r.entries,c=!1,o=tw(e),a=tw(t),l=0;l<i.length;l++)(n=i[l]).key===o&&(c?Jw(i,l--,1):(c=!0,n.value=a));c||Sw(i,{key:o,value:a}),r.updateURL()},sort:function(){var e=mw(this);aw(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=mw(this).entries,r=_T(e,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new Bw(this,"keys")},values:function(){return new Bw(this,"values")},entries:function(){return new Bw(this,"entries")}},{enumerable:!0}),zT(Qw,lw,Qw.entries,{name:"entries"}),zT(Qw,"toString",(function(){return mw(this).serialize()}),{enumerable:!0}),QT(jw,uw),kT({global:!0,forced:!BT},{URLSearchParams:jw}),!BT&&DT(gw)){var Mw=AT(Xw.has),Pw=AT(Xw.set),Ew=function(e){if(ew(e)){var t,n=e.body;if(qT(n)===uw)return t=e.headers?new gw(e.headers):new gw,Mw(t,"content-type")||Pw(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),nw(e,{body:rw(0,tw(n)),headers:rw(0,t)})}return e};if(DT(pw)&&kT({global:!0,enumerable:!0,noTargetGet:!0,forced:!0},{fetch:function(e){return pw(e,arguments.length>1?Ew(arguments[1]):{})}}),DT(Iw)){var Dw=function(e){return ET(this,yw),new Iw(e,arguments.length>1?Ew(arguments[1]):{})};yw.constructor=Dw,Dw.prototype=yw,kT({global:!0,forced:!0,noTargetGet:!0},{Request:Dw})}}var Ow,_w={URLSearchParams:jw,getState:mw},qw=gi,$w=K,eA=gT,tA=R,nA=kc,rA=E,iA=Ni.f,cA=Xn.exports,oA=Kh,aA=lt,lA=xy,uA=Jd,dA=mc,sA=XR.codeAt,mA=function(e){var t,n,r=[],i=NT(KT(LT(e),VT,"."),".");for(t=0;t<i.length;t++)n=i[t],JT(r,CT(GT,n)?"xn--"+UT(n):n);return YT(r,".")},hA=Ki,ZA=Lc,bA=LG,pA=_w,IA=er,gA=IA.set,yA=IA.getterFor("URL"),XA=pA.URLSearchParams,GA=pA.getState,VA=tA.URL,fA=tA.TypeError,WA=tA.parseInt,CA=Math.floor,vA=Math.pow,SA=rA("".charAt),RA=rA(/./.exec),YA=rA([].join),JA=rA(1..toString),KA=rA([].pop),NA=rA([].push),LA=rA("".replace),HA=rA([].shift),xA=rA("".split),UA=rA("".slice),kA=rA("".toLowerCase),TA=rA([].unshift),wA="Invalid scheme",AA="Invalid host",FA="Invalid port",BA=/[a-z]/i,zA=/[\d+-.a-z]/i,jA=/\d/,QA=/^0x/i,MA=/^[0-7]+$/,PA=/^\d+$/,EA=/^[\da-f]+$/i,DA=/[\0\t\n\r #%/:<>?@[\\\]^|]/,OA=/[\0\t\n\r #/:<>?@[\\\]^|]/,_A=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,qA=/[\t\n\r]/g,$A=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)TA(t,e%256),e=CA(e/256);return YA(t,".")}if("object"==o(e)){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,c=0;c<8;c++)0!==e[c]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=JA(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},eF={},tF=lA({},eF,{" ":1,'"':1,"<":1,">":1,"`":1}),nF=lA({},tF,{"#":1,"?":1,"{":1,"}":1}),rF=lA({},nF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),iF=function(e,t){var n=sA(e,0);return n>32&&n<127&&!aA(t,e)?e:encodeURIComponent(e)},cF={ftp:21,file:null,http:80,https:443,ws:80,wss:443},oF=function(e,t){var n;return 2==e.length&&RA(BA,SA(e,0))&&(":"==(n=SA(e,1))||!t&&"|"==n)},aF=function(e){var t;return e.length>1&&oF(UA(e,0,2))&&(2==e.length||"/"===(t=SA(e,2))||"\\"===t||"?"===t||"#"===t)},lF=function(e){return"."===e||"%2e"===kA(e)},uF={},dF={},sF={},mF={},hF={},ZF={},bF={},pF={},IF={},gF={},yF={},XF={},GF={},VF={},fF={},WF={},CF={},vF={},SF={},RF={},YF={},JF=function e(t,n,r){var i,c,o,a=hA(t);if(n){if(c=this.parse(a))throw fA(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(a,null,i))throw fA(c);(o=GA(new XA)).bindURL(this),this.searchParams=o}};JF.prototype={type:"URL",parse:function(e,t,n){var r,i,c,o,a,l=this,u=t||uF,d=0,s="",m=!1,h=!1,Z=!1;for(e=hA(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=LA(e,_A,"")),e=LA(e,qA,""),r=uA(e);d<=r.length;){switch(i=r[d],u){case uF:if(!i||!RA(BA,i)){if(t)return wA;u=sF;continue}s+=kA(i),u=dF;break;case dF:if(i&&(RA(zA,i)||"+"==i||"-"==i||"."==i))s+=kA(i);else{if(":"!=i){if(t)return wA;s="",u=sF,d=0;continue}if(t&&(l.isSpecial()!=aA(cF,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&cF[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=VF:l.isSpecial()&&n&&n.scheme==l.scheme?u=mF:l.isSpecial()?u=pF:"/"==r[d+1]?(u=hF,d++):(l.cannotBeABaseURL=!0,NA(l.path,""),u=SF)}break;case sF:if(!n||n.cannotBeABaseURL&&"#"!=i)return wA;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=dA(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=YF;break}u="file"==n.scheme?VF:ZF;continue;case mF:if("/"!=i||"/"!=r[d+1]){u=ZF;continue}u=IF,d++;break;case hF:if("/"==i){u=gF;break}u=vF;continue;case ZF:if(l.scheme=n.scheme,i==Ow)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dA(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=bF;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dA(n.path),l.query="",u=RF;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dA(n.path),l.path.length--,u=vF;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dA(n.path),l.query=n.query,l.fragment="",u=YF}break;case bF:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=vF;continue}u=gF}else u=IF;break;case pF:if(u=IF,"/"!=i||"/"!=SA(s,d+1))continue;d++;break;case IF:if("/"!=i&&"\\"!=i){u=gF;continue}break;case gF:if("@"==i){m&&(s="%40"+s),m=!0,c=uA(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||Z){var I=iF(p,rF);Z?l.password+=I:l.username+=I}else Z=!0}s=""}else if(i==Ow||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=uA(s).length+1,s="",u=yF}else s+=i;break;case yF:case XF:if(t&&"file"==l.scheme){u=WF;continue}if(":"!=i||h){if(i==Ow||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==s)return AA;if(t&&""==s&&(l.includesCredentials()||null!==l.port))return;if(o=l.parseHost(s))return o;if(s="",u=CF,t)return;continue}"["==i?h=!0:"]"==i&&(h=!1),s+=i}else{if(""==s)return AA;if(o=l.parseHost(s))return o;if(s="",u=GF,t==XF)return}break;case GF:if(!RA(jA,i)){if(i==Ow||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var g=WA(s,10);if(g>65535)return FA;l.port=l.isSpecial()&&g===cF[l.scheme]?null:g,s=""}if(t)return;u=CF;continue}return FA}s+=i;break;case VF:if(l.scheme="file","/"==i||"\\"==i)u=fF;else{if(!n||"file"!=n.scheme){u=vF;continue}if(i==Ow)l.host=n.host,l.path=dA(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=dA(n.path),l.query="",u=RF;else{if("#"!=i){aF(YA(dA(r,d),""))||(l.host=n.host,l.path=dA(n.path),l.shortenPath()),u=vF;continue}l.host=n.host,l.path=dA(n.path),l.query=n.query,l.fragment="",u=YF}}break;case fF:if("/"==i||"\\"==i){u=WF;break}n&&"file"==n.scheme&&!aF(YA(dA(r,d),""))&&(oF(n.path[0],!0)?NA(l.path,n.path[0]):l.host=n.host),u=vF;continue;case WF:if(i==Ow||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&oF(s))u=vF;else if(""==s){if(l.host="",t)return;u=CF}else{if(o=l.parseHost(s))return o;if("localhost"==l.host&&(l.host=""),t)return;s="",u=CF}continue}s+=i;break;case CF:if(l.isSpecial()){if(u=vF,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=Ow&&(u=vF,"/"!=i))continue}else l.fragment="",u=YF;else l.query="",u=RF;break;case vF:if(i==Ow||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(a=kA(a=s))||"%2e."===a||".%2e"===a||"%2e%2e"===a?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||NA(l.path,"")):lF(s)?"/"==i||"\\"==i&&l.isSpecial()||NA(l.path,""):("file"==l.scheme&&!l.path.length&&oF(s)&&(l.host&&(l.host=""),s=SA(s,0)+":"),NA(l.path,s)),s="","file"==l.scheme&&(i==Ow||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)HA(l.path);"?"==i?(l.query="",u=RF):"#"==i&&(l.fragment="",u=YF)}else s+=iF(i,nF);break;case SF:"?"==i?(l.query="",u=RF):"#"==i?(l.fragment="",u=YF):i!=Ow&&(l.path[0]+=iF(i,eF));break;case RF:t||"#"!=i?i!=Ow&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":iF(i,eF)):(l.fragment="",u=YF);break;case YF:i!=Ow&&(l.fragment+=iF(i,tF))}d++}},parseHost:function(e){var t,n,r;if("["==SA(e,0)){if("]"!=SA(e,e.length-1))return AA;if(t=function(e){var t,n,r,i,c,o,a,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return SA(e,s)};if(":"==m()){if(":"!=SA(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&RA(EA,m());)t=16*t+WA(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!RA(jA,m()))return;for(;RA(jA,m());){if(c=WA(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=t}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(o=u-d,u=7;0!=u&&o>0;)a=l[u],l[u--]=l[d+o-1],l[d+--o]=a;else if(8!=u)return;return l}(UA(e,1,-1)),!t)return AA;this.host=t}else if(this.isSpecial()){if(e=mA(e),RA(DA,e))return AA;if(t=function(e){var t,n,r,i,c,o,a,l=xA(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(c=10,i.length>1&&"0"==SA(i,0)&&(c=RA(QA,i)?16:8,i=UA(i,8==c?1:2)),""===i)o=0;else{if(!RA(10==c?PA:8==c?MA:EA,i))return e;o=WA(i,c)}NA(n,o)}for(r=0;r<t;r++)if(o=n[r],r==t-1){if(o>=vA(256,5-t))return null}else if(o>255)return null;for(a=KA(n),r=0;r<n.length;r++)a+=n[r]*vA(256,3-r);return a}(e),null===t)return AA;this.host=t}else{if(RA(OA,e))return AA;for(t="",n=uA(e),r=0;r<n.length;r++)t+=iF(n[r],eF);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return aA(cF,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&oF(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,n=e.username,r=e.password,i=e.host,c=e.port,o=e.path,a=e.query,l=e.fragment,u=t+":";return null!==i?(u+="//",e.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=$A(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?o[0]:o.length?"/"+YA(o,"/"):"",null!==a&&(u+="?"+a),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw fA(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new KF(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+$A(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(hA(e)+":",uF)},getUsername:function(){return this.username},setUsername:function(e){var t=uA(hA(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=iF(t[n],rF)}},getPassword:function(){return this.password},setPassword:function(e){var t=uA(hA(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=iF(t[n],rF)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?$A(e):$A(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,yF)},getHostname:function(){var e=this.host;return null===e?"":$A(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,XF)},getPort:function(){var e=this.port;return null===e?"":hA(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=hA(e))?this.port=null:this.parse(e,GF))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+YA(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,CF))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=hA(e))?this.query=null:("?"==SA(e,0)&&(e=UA(e,1)),this.query="",this.parse(e,RF)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=hA(e))?("#"==SA(e,0)&&(e=UA(e,1)),this.fragment="",this.parse(e,YF)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var KF=function(e){var t=oA(this,NF),n=bA(arguments.length,1)>1?arguments[1]:void 0,r=gA(t,new JF(e,!1,n));$w||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},NF=KF.prototype,LF=function(e,t){return{get:function(){return yA(this)[e]()},set:t&&function(e){return yA(this)[t](e)},configurable:!0,enumerable:!0}};if($w&&iA(NF,{href:LF("serialize","setHref"),origin:LF("getOrigin"),protocol:LF("getProtocol","setProtocol"),username:LF("getUsername","setUsername"),password:LF("getPassword","setPassword"),host:LF("getHost","setHost"),hostname:LF("getHostname","setHostname"),port:LF("getPort","setPort"),pathname:LF("getPathname","setPathname"),search:LF("getSearch","setSearch"),searchParams:LF("getSearchParams"),hash:LF("getHash","setHash")}),cA(NF,"toJSON",(function(){return yA(this).serialize()}),{enumerable:!0}),cA(NF,"toString",(function(){return yA(this).serialize()}),{enumerable:!0}),VA){var HF=VA.createObjectURL,xF=VA.revokeObjectURL;HF&&cA(KF,"createObjectURL",nA(HF,VA)),xF&&cA(KF,"revokeObjectURL",nA(xF,VA))}ZA(KF,"URL"),qw({global:!0,forced:!eA,sham:!$w},{URL:KF});var UF=x;function kF(e,t,n,r){return new(n||(n=Promise))((function(i,c){function o(e){try{l(r.next(e))}catch(e){c(e)}}function a(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AsgardeoAuth={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function a(e,t,n,r,i,c,o){try{var a=e[c](o),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var c=e.apply(t,n);function o(e){a(c,r,i,o,l,"next",e)}function l(e){a(c,r,i,o,l,"throw",e)}o(void 0)}))}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&d(e.prototype,t),n&&d(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&b(e,t)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function I(e,t,n){return I=p()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&b(i,n.prototype),i},I.apply(null,arguments)}function g(e){var t="function"==typeof Map?new Map:void 0;return g=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return I(e,arguments,h(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),b(r,e)},g(e)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function X(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return y(e)}function G(e){var t=p();return function(){var n,r=h(e);if(t){var i=h(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return X(this,n)}}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,c=[],o=!0,a=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);o=!0);}catch(e){a=!0,i=e}finally{try{o||null==n.return||n.return()}finally{if(a)throw i}}return c}(e,t)||W(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function V(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||W(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=W(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,o=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,c=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw c}}}}var R=function(e){return e&&e.Math==Math&&e},S=R("object"==("undefined"==typeof globalThis?"undefined":o(globalThis))&&globalThis)||R("object"==("undefined"==typeof window?"undefined":o(window))&&window)||R("object"==("undefined"==typeof self?"undefined":o(self))&&self)||R("object"==o(t)&&t)||function(){return this}()||Function("return this")(),Y={},J=function(e){try{return!!e()}catch(e){return!0}},K=!J((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),L=!J((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),N=L,H=Function.prototype.call,x=N?H.bind(H):function(){return H.apply(H,arguments)},k={},U={}.propertyIsEnumerable,A=Object.getOwnPropertyDescriptor,w=A&&!U.call({1:2},1);k.f=w?function(e){var t=A(this,e);return!!t&&t.enumerable}:U;var F,T,B=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},z=L,j=Function.prototype,M=j.bind,Q=j.call,P=z&&M.bind(Q,Q),E=z?function(e){return e&&P(e)}:function(e){return e&&function(){return Q.apply(e,arguments)}},O=E,D=O({}.toString),_=O("".slice),q=function(e){return _(D(e),8,-1)},$=E,ee=J,te=q,ne=S.Object,re=$("".split),ie=ee((function(){return!ne("z").propertyIsEnumerable(0)}))?function(e){return"String"==te(e)?re(e,""):ne(e)}:ne,ce=S.TypeError,oe=function(e){if(null==e)throw ce("Can't call method on "+e);return e},ae=ie,le=oe,ue=function(e){return ae(le(e))},de=function(e){return"function"==typeof e},se=de,me=function(e){return"object"==o(e)?null!==e:se(e)},Ze=S,he=de,be=function(e){return he(e)?e:void 0},pe=function(e,t){return arguments.length<2?be(Ze[e]):Ze[e]&&Ze[e][t]},Ie=E({}.isPrototypeOf),ge=pe("navigator","userAgent")||"",ye=S,Xe=ge,Ge=ye.process,fe=ye.Deno,Ve=Ge&&Ge.versions||fe&&fe.version,We=Ve&&Ve.v8;We&&(T=(F=We.split("."))[0]>0&&F[0]<4?1:+(F[0]+F[1])),!T&&Xe&&(!(F=Xe.match(/Edge\/(\d+)/))||F[1]>=74)&&(F=Xe.match(/Chrome\/(\d+)/))&&(T=+F[1]);var Ce=T,ve=Ce,Re=J,Se=!!Object.getOwnPropertySymbols&&!Re((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&ve&&ve<41})),Ye=Se&&!Symbol.sham&&"symbol"==o(Symbol.iterator),Je=pe,Ke=de,Le=Ie,Ne=Ye,He=S.Object,xe=Ne?function(e){return"symbol"==o(e)}:function(e){var t=Je("Symbol");return Ke(t)&&Le(t.prototype,He(e))},ke=S.String,Ue=function(e){try{return ke(e)}catch(e){return"Object"}},Ae=de,we=Ue,Fe=S.TypeError,Te=function(e){if(Ae(e))return e;throw Fe(we(e)+" is not a function")},Be=Te,ze=function(e,t){var n=e[t];return null==n?void 0:Be(n)},je=x,Me=de,Qe=me,Pe=S.TypeError,Ee=function(e,t){var n,r;if("string"===t&&Me(n=e.toString)&&!Qe(r=je(n,e)))return r;if(Me(n=e.valueOf)&&!Qe(r=je(n,e)))return r;if("string"!==t&&Me(n=e.toString)&&!Qe(r=je(n,e)))return r;throw Pe("Can't convert object to primitive value")},Oe={exports:{}},De=S,_e=Object.defineProperty,qe=function(e,t){try{_e(De,e,{value:t,configurable:!0,writable:!0})}catch(n){De[e]=t}return t},$e=qe,et="__core-js_shared__",tt=S[et]||$e(et,{}),nt=tt;(Oe.exports=function(e,t){return nt[e]||(nt[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.2",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE",source:"https://github.com/zloirock/core-js"});var rt=oe,it=S.Object,ct=function(e){return it(rt(e))},ot=ct,at=E({}.hasOwnProperty),lt=Object.hasOwn||function(e,t){return at(ot(e),t)},ut=E,dt=0,st=Math.random(),mt=ut(1..toString),Zt=function(e){return"Symbol("+(void 0===e?"":e)+")_"+mt(++dt+st,36)},ht=S,bt=Oe.exports,pt=lt,It=Zt,gt=Se,yt=Ye,Xt=bt("wks"),Gt=ht.Symbol,ft=Gt&&Gt.for,Vt=yt?Gt:Gt&&Gt.withoutSetter||It,Wt=function(e){if(!pt(Xt,e)||!gt&&"string"!=typeof Xt[e]){var t="Symbol."+e;gt&&pt(Gt,e)?Xt[e]=Gt[e]:Xt[e]=yt&&ft?ft(t):Vt(t)}return Xt[e]},Ct=x,vt=me,Rt=xe,St=ze,Yt=Ee,Jt=Wt,Kt=S.TypeError,Lt=Jt("toPrimitive"),Nt=function(e,t){if(!vt(e)||Rt(e))return e;var n,r=St(e,Lt);if(r){if(void 0===t&&(t="default"),n=Ct(r,e,t),!vt(n)||Rt(n))return n;throw Kt("Can't convert object to primitive value")}return void 0===t&&(t="number"),Yt(e,t)},Ht=Nt,xt=xe,kt=function(e){var t=Ht(e,"string");return xt(t)?t:t+""},Ut=me,At=S.document,wt=Ut(At)&&Ut(At.createElement),Ft=function(e){return wt?At.createElement(e):{}},Tt=Ft,Bt=!K&&!J((function(){return 7!=Object.defineProperty(Tt("div"),"a",{get:function(){return 7}}).a})),zt=K,jt=x,Mt=k,Qt=B,Pt=ue,Et=kt,Ot=lt,Dt=Bt,_t=Object.getOwnPropertyDescriptor;Y.f=zt?_t:function(e,t){if(e=Pt(e),t=Et(t),Dt)try{return _t(e,t)}catch(e){}if(Ot(e,t))return Qt(!jt(Mt.f,e,t),e[t])};var qt={},$t=K&&J((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),en=S,tn=me,nn=en.String,rn=en.TypeError,cn=function(e){if(tn(e))return e;throw rn(nn(e)+" is not an object")},on=K,an=Bt,ln=$t,un=cn,dn=kt,sn=S.TypeError,mn=Object.defineProperty,Zn=Object.getOwnPropertyDescriptor,hn="enumerable",bn="configurable",pn="writable";qt.f=on?ln?function(e,t,n){if(un(e),t=dn(t),un(n),"function"==typeof e&&"prototype"===t&&"value"in n&&pn in n&&!n.writable){var r=Zn(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:bn in n?n.configurable:r.configurable,enumerable:hn in n?n.enumerable:r.enumerable,writable:!1})}return mn(e,t,n)}:mn:function(e,t,n){if(un(e),t=dn(t),un(n),an)try{return mn(e,t,n)}catch(e){}if("get"in n||"set"in n)throw sn("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var In=qt,gn=B,yn=K?function(e,t,n){return In.f(e,t,gn(1,n))}:function(e,t,n){return e[t]=n,e},Xn={exports:{}},Gn=de,fn=tt,Vn=E(Function.toString);Gn(fn.inspectSource)||(fn.inspectSource=function(e){return Vn(e)});var Wn,Cn,vn,Rn=fn.inspectSource,Sn=de,Yn=Rn,Jn=S.WeakMap,Kn=Sn(Jn)&&/native code/.test(Yn(Jn)),Ln=Oe.exports,Nn=Zt,Hn=Ln("keys"),xn=function(e){return Hn[e]||(Hn[e]=Nn(e))},kn={},Un=Kn,An=S,wn=E,Fn=me,Tn=yn,Bn=lt,zn=tt,jn=xn,Mn=kn,Qn="Object already initialized",Pn=An.TypeError,En=An.WeakMap;if(Un||zn.state){var On=zn.state||(zn.state=new En),Dn=wn(On.get),_n=wn(On.has),qn=wn(On.set);Wn=function(e,t){if(_n(On,e))throw new Pn(Qn);return t.facade=e,qn(On,e,t),t},Cn=function(e){return Dn(On,e)||{}},vn=function(e){return _n(On,e)}}else{var $n=jn("state");Mn[$n]=!0,Wn=function(e,t){if(Bn(e,$n))throw new Pn(Qn);return t.facade=e,Tn(e,$n,t),t},Cn=function(e){return Bn(e,$n)?e[$n]:{}},vn=function(e){return Bn(e,$n)}}var er={set:Wn,get:Cn,has:vn,enforce:function(e){return vn(e)?Cn(e):Wn(e,{})},getterFor:function(e){return function(t){var n;if(!Fn(t)||(n=Cn(t)).type!==e)throw Pn("Incompatible receiver, "+e+" required");return n}}},tr=K,nr=lt,rr=Function.prototype,ir=tr&&Object.getOwnPropertyDescriptor,cr=nr(rr,"name"),or={EXISTS:cr,PROPER:cr&&"something"===function(){}.name,CONFIGURABLE:cr&&(!tr||tr&&ir(rr,"name").configurable)},ar=S,lr=de,ur=lt,dr=yn,sr=qe,mr=Rn,Zr=or.CONFIGURABLE,hr=er.get,br=er.enforce,pr=String(String).split("String");(Xn.exports=function(e,t,n,r){var i,c=!!r&&!!r.unsafe,o=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet,l=r&&void 0!==r.name?r.name:t;lr(n)&&("Symbol("===String(l).slice(0,7)&&(l="["+String(l).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!ur(n,"name")||Zr&&n.name!==l)&&dr(n,"name",l),(i=br(n)).source||(i.source=pr.join("string"==typeof l?l:""))),e!==ar?(c?!a&&e[t]&&(o=!0):delete e[t],o?e[t]=n:dr(e,t,n)):o?e[t]=n:sr(t,n)})(Function.prototype,"toString",(function(){return lr(this)&&hr(this).source||mr(this)}));var Ir={},gr=Math.ceil,yr=Math.floor,Xr=function(e){var t=+e;return t!=t||0===t?0:(t>0?yr:gr)(t)},Gr=Xr,fr=Math.max,Vr=Math.min,Wr=function(e,t){var n=Gr(e);return n<0?fr(n+t,0):Vr(n,t)},Cr=Xr,vr=Math.min,Rr=function(e){return e>0?vr(Cr(e),9007199254740991):0},Sr=Rr,Yr=function(e){return Sr(e.length)},Jr=ue,Kr=Wr,Lr=Yr,Nr=function(e){return function(t,n,r){var i,c=Jr(t),o=Lr(c),a=Kr(r,o);if(e&&n!=n){for(;o>a;)if((i=c[a++])!=i)return!0}else for(;o>a;a++)if((e||a in c)&&c[a]===n)return e||a||0;return!e&&-1}},Hr={includes:Nr(!0),indexOf:Nr(!1)},xr=lt,kr=ue,Ur=Hr.indexOf,Ar=kn,wr=E([].push),Fr=function(e,t){var n,r=kr(e),i=0,c=[];for(n in r)!xr(Ar,n)&&xr(r,n)&&wr(c,n);for(;t.length>i;)xr(r,n=t[i++])&&(~Ur(c,n)||wr(c,n));return c},Tr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Br=Fr,zr=Tr.concat("length","prototype");Ir.f=Object.getOwnPropertyNames||function(e){return Br(e,zr)};var jr={};jr.f=Object.getOwnPropertySymbols;var Mr=pe,Qr=Ir,Pr=jr,Er=cn,Or=E([].concat),Dr=Mr("Reflect","ownKeys")||function(e){var t=Qr.f(Er(e)),n=Pr.f;return n?Or(t,n(e)):t},_r=lt,qr=Dr,$r=Y,ei=qt,ti=function(e,t,n){for(var r=qr(t),i=ei.f,c=$r.f,o=0;o<r.length;o++){var a=r[o];_r(e,a)||n&&_r(n,a)||i(e,a,c(t,a))}},ni=J,ri=de,ii=/#|\.prototype\./,ci=function(e,t){var n=ai[oi(e)];return n==ui||n!=li&&(ri(t)?ni(t):!!t)},oi=ci.normalize=function(e){return String(e).replace(ii,".").toLowerCase()},ai=ci.data={},li=ci.NATIVE="N",ui=ci.POLYFILL="P",di=ci,si=S,mi=Y.f,Zi=yn,hi=Xn.exports,bi=qe,pi=ti,Ii=di,gi=function(e,t){var n,r,i,c,a,l=e.target,u=e.global,d=e.stat;if(n=u?si:d?si[l]||bi(l,{}):(si[l]||{}).prototype)for(r in t){if(c=t[r],i=e.noTargetGet?(a=mi(n,r))&&a.value:n[r],!Ii(u?r:l+(d?".":"#")+r,e.forced)&&void 0!==i){if(o(c)==o(i))continue;pi(c,i)}(e.sham||i&&i.sham)&&Zi(c,"sham",!0),hi(n,r,c,e)}},yi={};yi[Wt("toStringTag")]="z";var Xi="[object z]"===String(yi),Gi=S,fi=Xi,Vi=de,Wi=q,Ci=Wt("toStringTag"),vi=Gi.Object,Ri="Arguments"==Wi(function(){return arguments}()),Si=fi?Wi:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=vi(e),Ci))?n:Ri?Wi(t):"Object"==(r=Wi(t))&&Vi(t.callee)?"Arguments":r},Yi=Si,Ji=S.String,Ki=function(e){if("Symbol"===Yi(e))throw TypeError("Cannot convert a Symbol value to a string");return Ji(e)},Li={},Ni=Fr,Hi=Tr,xi=Object.keys||function(e){return Ni(e,Hi)},ki=K,Ui=$t,Ai=qt,wi=cn,Fi=ue,Ti=xi;Li.f=ki&&!Ui?Object.defineProperties:function(e,t){wi(e);for(var n,r=Fi(t),i=Ti(t),c=i.length,o=0;c>o;)Ai.f(e,n=i[o++],r[n]);return e};var Bi,zi=pe("document","documentElement"),ji=cn,Mi=Li,Qi=Tr,Pi=kn,Ei=zi,Oi=Ft,Di=xn("IE_PROTO"),_i=function(){},qi=function(e){return"<script>"+e+"</"+"script>"},$i=function(e){e.write(qi("")),e.close();var t=e.parentWindow.Object;return e=null,t},ec=function(){try{Bi=new ActiveXObject("htmlfile")}catch(e){}var e,t;ec="undefined"!=typeof document?document.domain&&Bi?$i(Bi):((t=Oi("iframe")).style.display="none",Ei.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(qi("document.F=Object")),e.close(),e.F):$i(Bi);for(var n=Qi.length;n--;)delete ec.prototype[Qi[n]];return ec()};Pi[Di]=!0;var tc=Object.create||function(e,t){var n;return null!==e?(_i.prototype=ji(e),n=new _i,_i.prototype=null,n[Di]=e):n=ec(),void 0===t?n:Mi.f(n,t)},nc={},rc=kt,ic=qt,cc=B,oc=function(e,t,n){var r=rc(t);r in e?ic.f(e,r,cc(0,n)):e[r]=n},ac=Wr,lc=Yr,uc=oc,dc=S.Array,sc=Math.max,mc=function(e,t,n){for(var r=lc(e),i=ac(t,r),c=ac(void 0===n?r:n,r),o=dc(sc(c-i,0)),a=0;i<c;i++,a++)uc(o,a,e[i]);return o.length=a,o},Zc=q,hc=ue,bc=Ir.f,pc=mc,Ic="object"==("undefined"==typeof window?"undefined":o(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];nc.f=function(e){return Ic&&"Window"==Zc(e)?function(e){try{return bc(e)}catch(e){return pc(Ic)}}(e):bc(hc(e))};var gc={},yc=Wt;gc.f=yc;var Xc=S,Gc=lt,fc=gc,Vc=qt.f,Wc=function(e){var t=Xc.Symbol||(Xc.Symbol={});Gc(t,e)||Vc(t,e,{value:fc.f(e)})},Cc=x,vc=pe,Rc=Wt,Sc=Xn.exports,Yc=function(){var e=vc("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,r=Rc("toPrimitive");t&&!t[r]&&Sc(t,r,(function(e){return Cc(n,this)}))},Jc=qt.f,Kc=lt,Lc=Wt("toStringTag"),Nc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Kc(e,Lc)&&Jc(e,Lc,{configurable:!0,value:t})},Hc=Te,xc=L,kc=E(E.bind),Uc=function(e,t){return Hc(e),void 0===t?e:xc?kc(e,t):function(){return e.apply(t,arguments)}},Ac=q,wc=Array.isArray||function(e){return"Array"==Ac(e)},Fc=E,Tc=J,Bc=de,zc=Si,jc=Rn,Mc=function(){},Qc=[],Pc=pe("Reflect","construct"),Ec=/^\s*(?:class|function)\b/,Oc=Fc(Ec.exec),Dc=!Ec.exec(Mc),_c=function(e){if(!Bc(e))return!1;try{return Pc(Mc,Qc,e),!0}catch(e){return!1}},qc=function(e){if(!Bc(e))return!1;switch(zc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Dc||!!Oc(Ec,jc(e))}catch(e){return!0}};qc.sham=!0;var $c=!Pc||Tc((function(){var e;return _c(_c.call)||!_c(Object)||!_c((function(){e=!0}))||e}))?qc:_c,eo=S,to=wc,no=$c,ro=me,io=Wt("species"),co=eo.Array,oo=function(e){var t;return to(e)&&(t=e.constructor,(no(t)&&(t===co||to(t.prototype))||ro(t)&&null===(t=t[io]))&&(t=void 0)),void 0===t?co:t},ao=function(e,t){return new(oo(e))(0===t?0:t)},lo=Uc,uo=ie,so=ct,mo=Yr,Zo=ao,ho=E([].push),bo=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,c=6==e,o=7==e,a=5==e||c;return function(l,u,d,s){for(var m,Z,h=so(l),b=uo(h),p=lo(u,d),I=mo(b),g=0,y=s||Zo,X=t?y(l,I):n||o?y(l,0):void 0;I>g;g++)if((a||g in b)&&(Z=p(m=b[g],g,h),e))if(t)X[g]=Z;else if(Z)switch(e){case 3:return!0;case 5:return m;case 6:return g;case 2:ho(X,m)}else switch(e){case 4:return!1;case 7:ho(X,m)}return c?-1:r||i?i:X}},po={forEach:bo(0),map:bo(1),filter:bo(2),some:bo(3),every:bo(4),find:bo(5),findIndex:bo(6),filterReject:bo(7)},Io=gi,go=S,yo=x,Xo=E,Go=K,fo=Se,Vo=J,Wo=lt,Co=Ie,vo=cn,Ro=ue,So=kt,Yo=Ki,Jo=B,Ko=tc,Lo=xi,No=Ir,Ho=nc,xo=jr,ko=Y,Uo=qt,Ao=Li,wo=k,Fo=Xn.exports,To=Oe.exports,Bo=kn,zo=Zt,jo=Wt,Mo=gc,Qo=Wc,Po=Yc,Eo=Nc,Oo=er,Do=po.forEach,_o=xn("hidden"),qo="Symbol",$o=Oo.set,ea=Oo.getterFor(qo),ta=Object.prototype,na=go.Symbol,ra=na&&na.prototype,ia=go.TypeError,ca=go.QObject,oa=ko.f,aa=Uo.f,la=Ho.f,ua=wo.f,da=Xo([].push),sa=To("symbols"),ma=To("op-symbols"),Za=To("wks"),ha=!ca||!ca.prototype||!ca.prototype.findChild,ba=Go&&Vo((function(){return 7!=Ko(aa({},"a",{get:function(){return aa(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=oa(ta,t);r&&delete ta[t],aa(e,t,n),r&&e!==ta&&aa(ta,t,r)}:aa,pa=function(e,t){var n=sa[e]=Ko(ra);return $o(n,{type:qo,tag:e,description:t}),Go||(n.description=t),n},Ia=function(e,t,n){e===ta&&Ia(ma,t,n),vo(e);var r=So(t);return vo(n),Wo(sa,r)?(n.enumerable?(Wo(e,_o)&&e[_o][r]&&(e[_o][r]=!1),n=Ko(n,{enumerable:Jo(0,!1)})):(Wo(e,_o)||aa(e,_o,Jo(1,{})),e[_o][r]=!0),ba(e,r,n)):aa(e,r,n)},ga=function(e,t){vo(e);var n=Ro(t),r=Lo(n).concat(fa(n));return Do(r,(function(t){Go&&!yo(ya,n,t)||Ia(e,t,n[t])})),e},ya=function(e){var t=So(e),n=yo(ua,this,t);return!(this===ta&&Wo(sa,t)&&!Wo(ma,t))&&(!(n||!Wo(this,t)||!Wo(sa,t)||Wo(this,_o)&&this[_o][t])||n)},Xa=function(e,t){var n=Ro(e),r=So(t);if(n!==ta||!Wo(sa,r)||Wo(ma,r)){var i=oa(n,r);return!i||!Wo(sa,r)||Wo(n,_o)&&n[_o][r]||(i.enumerable=!0),i}},Ga=function(e){var t=la(Ro(e)),n=[];return Do(t,(function(e){Wo(sa,e)||Wo(Bo,e)||da(n,e)})),n},fa=function(e){var t=e===ta,n=la(t?ma:Ro(e)),r=[];return Do(n,(function(e){!Wo(sa,e)||t&&!Wo(ta,e)||da(r,sa[e])})),r};fo||(na=function(){if(Co(ra,this))throw ia("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Yo(arguments[0]):void 0,t=zo(e),n=function e(n){this===ta&&yo(e,ma,n),Wo(this,_o)&&Wo(this[_o],t)&&(this[_o][t]=!1),ba(this,t,Jo(1,n))};return Go&&ha&&ba(ta,t,{configurable:!0,set:n}),pa(t,e)},Fo(ra=na.prototype,"toString",(function(){return ea(this).tag})),Fo(na,"withoutSetter",(function(e){return pa(zo(e),e)})),wo.f=ya,Uo.f=Ia,Ao.f=ga,ko.f=Xa,No.f=Ho.f=Ga,xo.f=fa,Mo.f=function(e){return pa(jo(e),e)},Go&&(aa(ra,"description",{configurable:!0,get:function(){return ea(this).description}}),Fo(ta,"propertyIsEnumerable",ya,{unsafe:!0}))),Io({global:!0,wrap:!0,forced:!fo,sham:!fo},{Symbol:na}),Do(Lo(Za),(function(e){Qo(e)})),Io({target:qo,stat:!0,forced:!fo},{useSetter:function(){ha=!0},useSimple:function(){ha=!1}}),Io({target:"Object",stat:!0,forced:!fo,sham:!Go},{create:function(e,t){return void 0===t?Ko(e):ga(Ko(e),t)},defineProperty:Ia,defineProperties:ga,getOwnPropertyDescriptor:Xa}),Io({target:"Object",stat:!0,forced:!fo},{getOwnPropertyNames:Ga}),Po(),Eo(na,qo),Bo[_o]=!0;var Va=Se&&!!Symbol.for&&!!Symbol.keyFor,Wa=gi,Ca=pe,va=lt,Ra=Ki,Sa=Oe.exports,Ya=Va,Ja=Sa("string-to-symbol-registry"),Ka=Sa("symbol-to-string-registry");Wa({target:"Symbol",stat:!0,forced:!Ya},{for:function(e){var t=Ra(e);if(va(Ja,t))return Ja[t];var n=Ca("Symbol")(t);return Ja[t]=n,Ka[n]=t,n}});var La=gi,Na=lt,Ha=xe,xa=Ue,ka=Va,Ua=(0,Oe.exports)("symbol-to-string-registry");La({target:"Symbol",stat:!0,forced:!ka},{keyFor:function(e){if(!Ha(e))throw TypeError(xa(e)+" is not a symbol");if(Na(Ua,e))return Ua[e]}});var Aa=L,wa=Function.prototype,Fa=wa.apply,Ta=wa.call,Ba="object"==("undefined"==typeof Reflect?"undefined":o(Reflect))&&Reflect.apply||(Aa?Ta.bind(Fa):function(){return Ta.apply(Fa,arguments)}),za=E([].slice),ja=gi,Ma=pe,Qa=Ba,Pa=x,Ea=E,Oa=J,Da=wc,_a=de,qa=me,$a=xe,el=za,tl=Se,nl=Ma("JSON","stringify"),rl=Ea(/./.exec),il=Ea("".charAt),cl=Ea("".charCodeAt),ol=Ea("".replace),al=Ea(1..toString),ll=/[\uD800-\uDFFF]/g,ul=/^[\uD800-\uDBFF]$/,dl=/^[\uDC00-\uDFFF]$/,sl=!tl||Oa((function(){var e=Ma("Symbol")();return"[null]"!=nl([e])||"{}"!=nl({a:e})||"{}"!=nl(Object(e))})),ml=Oa((function(){return'"\\udf06\\ud834"'!==nl("\udf06\ud834")||'"\\udead"'!==nl("\udead")})),Zl=function(e,t){var n=el(arguments),r=t;if((qa(t)||void 0!==e)&&!$a(e))return Da(t)||(t=function(e,t){if(_a(r)&&(t=Pa(r,this,e,t)),!$a(t))return t}),n[1]=t,Qa(nl,null,n)},hl=function(e,t,n){var r=il(n,t-1),i=il(n,t+1);return rl(ul,e)&&!rl(dl,i)||rl(dl,e)&&!rl(ul,r)?"\\u"+al(cl(e,0),16):e};nl&&ja({target:"JSON",stat:!0,forced:sl||ml},{stringify:function(e,t,n){var r=el(arguments),i=Qa(sl?Zl:nl,null,r);return ml&&"string"==typeof i?ol(i,ll,hl):i}});var bl=jr,pl=ct;gi({target:"Object",stat:!0,forced:!Se||J((function(){bl.f(1)}))},{getOwnPropertySymbols:function(e){var t=bl.f;return t?t(pl(e)):[]}});var Il=gi,gl=K,yl=S,Xl=E,Gl=lt,fl=de,Vl=Ie,Wl=Ki,Cl=qt.f,vl=ti,Rl=yl.Symbol,Sl=Rl&&Rl.prototype;if(gl&&fl(Rl)&&(!("description"in Sl)||void 0!==Rl().description)){var Yl={},Jl=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:Wl(arguments[0]),t=Vl(Sl,this)?new Rl(e):void 0===e?Rl():Rl(e);return""===e&&(Yl[t]=!0),t};vl(Jl,Rl),Jl.prototype=Sl,Sl.constructor=Jl;var Kl="Symbol(test)"==String(Rl("test")),Ll=Xl(Sl.toString),Nl=Xl(Sl.valueOf),Hl=/^Symbol\((.*)\)[^)]+$/,xl=Xl("".replace),kl=Xl("".slice);Cl(Sl,"description",{configurable:!0,get:function(){var e=Nl(this),t=Ll(e);if(Gl(Yl,e))return"";var n=Kl?kl(t,7,-1):xl(t,Hl,"$1");return""===n?void 0:n}}),Il({global:!0,forced:!0},{Symbol:Jl})}Wc("asyncIterator"),Wc("hasInstance"),Wc("isConcatSpreadable"),Wc("iterator"),Wc("match"),Wc("matchAll"),Wc("replace"),Wc("search"),Wc("species"),Wc("split");var Ul=Yc;Wc("toPrimitive"),Ul();var Al=pe,wl=Nc;Wc("toStringTag"),wl(Al("Symbol"),"Symbol"),Wc("unscopables");var Fl=J,Tl=Ce,Bl=Wt("species"),zl=function(e){return Tl>=51||!Fl((function(){var t=[];return(t.constructor={})[Bl]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},jl=gi,Ml=S,Ql=J,Pl=wc,El=me,Ol=ct,Dl=Yr,_l=oc,ql=ao,$l=zl,eu=Ce,tu=Wt("isConcatSpreadable"),nu=9007199254740991,ru="Maximum allowed index exceeded",iu=Ml.TypeError,cu=eu>=51||!Ql((function(){var e=[];return e[tu]=!1,e.concat()[0]!==e})),ou=$l("concat"),au=function(e){if(!El(e))return!1;var t=e[tu];return void 0!==t?!!t:Pl(e)};jl({target:"Array",proto:!0,forced:!cu||!ou},{concat:function(e){var t,n,r,i,c,o=Ol(this),a=ql(o,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(au(c=-1===t?o:arguments[t])){if(l+(i=Dl(c))>nu)throw iu(ru);for(n=0;n<i;n++,l++)n in c&&_l(a,l,c[n])}else{if(l>=nu)throw iu(ru);_l(a,l++,c)}return a.length=l,a}});var lu=ct,uu=Wr,du=Yr,su=Math.min,mu=[].copyWithin||function(e,t){var n=lu(this),r=du(n),i=uu(e,r),c=uu(t,r),o=arguments.length>2?arguments[2]:void 0,a=su((void 0===o?r:uu(o,r))-c,r-i),l=1;for(c<i&&i<c+a&&(l=-1,c+=a-1,i+=a-1);a-- >0;)c in n?n[i]=n[c]:delete n[i],i+=l,c+=l;return n},Zu=tc,hu=qt,bu=Wt("unscopables"),pu=Array.prototype;null==pu[bu]&&hu.f(pu,bu,{configurable:!0,value:Zu(null)});var Iu=function(e){pu[bu][e]=!0},gu=Iu;gi({target:"Array",proto:!0},{copyWithin:mu}),gu("copyWithin");var yu=ct,Xu=Wr,Gu=Yr,fu=function(e){for(var t=yu(this),n=Gu(t),r=arguments.length,i=Xu(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,o=void 0===c?n:Xu(c,n);o>i;)t[i++]=e;return t},Vu=Iu;gi({target:"Array",proto:!0},{fill:fu}),Vu("fill");var Wu=po.filter;gi({target:"Array",proto:!0,forced:!zl("filter")},{filter:function(e){return Wu(this,e,arguments.length>1?arguments[1]:void 0)}});var Cu=gi,vu=po.find,Ru=Iu,Su="find",Yu=!0;Su in[]&&Array(1).find((function(){Yu=!1})),Cu({target:"Array",proto:!0,forced:Yu},{find:function(e){return vu(this,e,arguments.length>1?arguments[1]:void 0)}}),Ru(Su);var Ju=gi,Ku=po.findIndex,Lu=Iu,Nu="findIndex",Hu=!0;Nu in[]&&Array(1).findIndex((function(){Hu=!1})),Ju({target:"Array",proto:!0,forced:Hu},{findIndex:function(e){return Ku(this,e,arguments.length>1?arguments[1]:void 0)}}),Lu(Nu);var xu=wc,ku=Yr,Uu=Uc,Au=S.TypeError,wu=function e(t,n,r,i,c,o,a,l){for(var u,d=c,s=0,m=!!a&&Uu(a,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],o>0&&xu(u))d=e(t,n,u,ku(u),d,o-1)-1;else{if(d>=9007199254740991)throw Au("Exceed the acceptable array length");t[d]=u}d++}s++}return d},Fu=wu,Tu=ct,Bu=Yr,zu=Xr,ju=ao;gi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Tu(this),n=Bu(t),r=ju(t,0);return r.length=Fu(r,t,t,n,0,void 0===e?1:zu(e)),r}});var Mu=wu,Qu=Te,Pu=ct,Eu=Yr,Ou=ao;gi({target:"Array",proto:!0},{flatMap:function(e){var t,n=Pu(this),r=Eu(n);return Qu(e),(t=Ou(n,0)).length=Mu(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var Du=x,_u=cn,qu=ze,$u=function(e,t,n){var r,i;_u(e);try{if(!(r=qu(e,"return"))){if("throw"===t)throw n;return n}r=Du(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return _u(r),n},ed=cn,td=$u,nd={},rd=nd,id=Wt("iterator"),cd=Array.prototype,od=function(e){return void 0!==e&&(rd.Array===e||cd[id]===e)},ad=Si,ld=ze,ud=nd,dd=Wt("iterator"),sd=function(e){if(null!=e)return ld(e,dd)||ld(e,"@@iterator")||ud[ad(e)]},md=x,Zd=Te,hd=cn,bd=Ue,pd=sd,Id=S.TypeError,gd=function(e,t){var n=arguments.length<2?pd(e):t;if(Zd(n))return hd(md(n,e));throw Id(bd(e)+" is not iterable")},yd=Uc,Xd=x,Gd=ct,fd=function(e,t,n,r){try{return r?t(ed(n)[0],n[1]):t(n)}catch(t){td(e,"throw",t)}},Vd=od,Wd=$c,Cd=Yr,vd=oc,Rd=gd,Sd=sd,Yd=S.Array,Jd=function(e){var t=Gd(e),n=Wd(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=yd(i,r>2?arguments[2]:void 0));var o,a,l,u,d,s,m=Sd(t),Z=0;if(!m||this==Yd&&Vd(m))for(o=Cd(t),a=n?new this(o):Yd(o);o>Z;Z++)s=c?i(t[Z],Z):t[Z],vd(a,Z,s);else for(d=(u=Rd(t,m)).next,a=n?new this:[];!(l=Xd(d,u)).done;Z++)s=c?fd(u,i,[l.value,Z],!0):l.value,vd(a,Z,s);return a.length=Z,a},Kd=Wt("iterator"),Ld=!1;try{var Nd=0,Hd={next:function(){return{done:!!Nd++}},return:function(){Ld=!0}};Hd[Kd]=function(){return this},Array.from(Hd,(function(){throw 2}))}catch(e){}var xd=function(e,t){if(!t&&!Ld)return!1;var n=!1;try{var r={};r[Kd]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},kd=Jd;gi({target:"Array",stat:!0,forced:!xd((function(e){Array.from(e)}))},{from:kd});var Ud=Hr.includes,Ad=Iu;gi({target:"Array",proto:!0},{includes:function(e){return Ud(this,e,arguments.length>1?arguments[1]:void 0)}}),Ad("includes");var wd,Fd,Td,Bd=!J((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),zd=S,jd=lt,Md=de,Qd=ct,Pd=Bd,Ed=xn("IE_PROTO"),Od=zd.Object,Dd=Od.prototype,_d=Pd?Od.getPrototypeOf:function(e){var t=Qd(e);if(jd(t,Ed))return t[Ed];var n=t.constructor;return Md(n)&&t instanceof n?n.prototype:t instanceof Od?Dd:null},qd=J,$d=de,es=_d,ts=Xn.exports,ns=Wt("iterator"),rs=!1;[].keys&&("next"in(Td=[].keys())?(Fd=es(es(Td)))!==Object.prototype&&(wd=Fd):rs=!0);var is=null==wd||qd((function(){var e={};return wd[ns].call(e)!==e}));is&&(wd={}),$d(wd[ns])||ts(wd,ns,(function(){return this}));var cs={IteratorPrototype:wd,BUGGY_SAFARI_ITERATORS:rs},os=cs.IteratorPrototype,as=tc,ls=B,us=Nc,ds=nd,ss=function(){return this},ms=function(e,t,n,r){var i=t+" Iterator";return e.prototype=as(os,{next:ls(+!r,n)}),us(e,i,!1),ds[i]=ss,e},Zs=S,hs=de,bs=Zs.String,ps=Zs.TypeError,Is=function(e){if("object"==o(e)||hs(e))return e;throw ps("Can't set "+bs(e)+" as a prototype")},gs=E,ys=cn,Xs=Is,Gs=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=gs(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return ys(n),Xs(r),t?e(n,r):n.__proto__=r,n}}():void 0),fs=gi,Vs=x,Ws=or,Cs=de,vs=ms,Rs=_d,Ss=Gs,Ys=Nc,Js=yn,Ks=Xn.exports,Ls=nd,Ns=Ws.PROPER,Hs=Ws.CONFIGURABLE,xs=cs.IteratorPrototype,ks=cs.BUGGY_SAFARI_ITERATORS,Us=Wt("iterator"),As="keys",ws="values",Fs="entries",Ts=function(){return this},Bs=function(e,t,n,r,i,c,o){vs(n,t,r);var a,l,u,d=function(e){if(e===i&&b)return b;if(!ks&&e in Z)return Z[e];switch(e){case As:case ws:case Fs:return function(){return new n(this,e)}}return function(){return new n(this)}},s=t+" Iterator",m=!1,Z=e.prototype,h=Z[Us]||Z["@@iterator"]||i&&Z[i],b=!ks&&h||d(i),p="Array"==t&&Z.entries||h;if(p&&(a=Rs(p.call(new e)))!==Object.prototype&&a.next&&(Rs(a)!==xs&&(Ss?Ss(a,xs):Cs(a[Us])||Ks(a,Us,Ts)),Ys(a,s,!0)),Ns&&i==ws&&h&&h.name!==ws&&(Hs?Js(Z,"name",ws):(m=!0,b=function(){return Vs(h,this)})),i)if(l={values:d(ws),keys:c?b:d(As),entries:d(Fs)},o)for(u in l)(ks||m||!(u in Z))&&Ks(Z,u,l[u]);else fs({target:t,proto:!0,forced:ks||m},l);return Z[Us]!==b&&Ks(Z,Us,b,{name:i}),Ls[t]=b,l},zs=ue,js=Iu,Ms=nd,Qs=er,Ps=qt.f,Es=Bs,Os=K,Ds="Array Iterator",_s=Qs.set,qs=Qs.getterFor(Ds),$s=Es(Array,"Array",(function(e,t){_s(this,{type:Ds,target:zs(e),index:0,kind:t})}),(function(){var e=qs(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),em=Ms.Arguments=Ms.Array;if(js("keys"),js("values"),js("entries"),Os&&"values"!==em.name)try{Ps(em,"name",{value:"values"})}catch(e){}var tm=J,nm=function(e,t){var n=[][e];return!!n&&tm((function(){n.call(null,t||function(){return 1},1)}))},rm=gi,im=ie,cm=ue,om=nm,am=E([].join),lm=im!=Object,um=om("join",",");rm({target:"Array",proto:!0,forced:lm||!um},{join:function(e){return am(cm(this),void 0===e?",":e)}});var dm=po.map;gi({target:"Array",proto:!0,forced:!zl("map")},{map:function(e){return dm(this,e,arguments.length>1?arguments[1]:void 0)}});var sm=gi,mm=J,Zm=$c,hm=oc,bm=S.Array;sm({target:"Array",stat:!0,forced:mm((function(){function e(){}return!(bm.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(Zm(this)?this:bm)(t);t>e;)hm(n,e,arguments[e++]);return n.length=t,n}});var pm=gi,Im=S,gm=wc,ym=$c,Xm=me,Gm=Wr,fm=Yr,Vm=ue,Wm=oc,Cm=Wt,vm=za,Rm=zl("slice"),Sm=Cm("species"),Ym=Im.Array,Jm=Math.max;pm({target:"Array",proto:!0,forced:!Rm},{slice:function(e,t){var n,r,i,c=Vm(this),o=fm(c),a=Gm(e,o),l=Gm(void 0===t?o:t,o);if(gm(c)&&(n=c.constructor,(ym(n)&&(n===Ym||gm(n.prototype))||Xm(n)&&null===(n=n[Sm]))&&(n=void 0),n===Ym||void 0===n))return vm(c,a,l);for(r=new(void 0===n?Ym:n)(Jm(l-a,0)),i=0;a<l;a++,i++)a in c&&Wm(r,i,c[a]);return r.length=i,r}});var Km=mc,Lm=Math.floor,Nm=function(e,t){for(var n,r,i=e.length,c=1;c<i;){for(r=c,n=e[c];r&&t(e[r-1],n)>0;)e[r]=e[--r];r!==c++&&(e[r]=n)}return e},Hm=function(e,t,n,r){for(var i=t.length,c=n.length,o=0,a=0;o<i||a<c;)e[o+a]=o<i&&a<c?r(t[o],n[a])<=0?t[o++]:n[a++]:o<i?t[o++]:n[a++];return e},xm=function e(t,n){var r=t.length,i=Lm(r/2);return r<8?Nm(t,n):Hm(t,e(Km(t,0,i),n),e(Km(t,i),n),n)},km=ge.match(/firefox\/(\d+)/i),Um=!!km&&+km[1],Am=/MSIE|Trident/.test(ge),wm=ge.match(/AppleWebKit\/(\d+)\./),Fm=!!wm&&+wm[1],Tm=gi,Bm=E,zm=Te,jm=ct,Mm=Yr,Qm=Ki,Pm=J,Em=xm,Om=nm,Dm=Um,_m=Am,qm=Ce,$m=Fm,eZ=[],tZ=Bm(eZ.sort),nZ=Bm(eZ.push),rZ=Pm((function(){eZ.sort(void 0)})),iZ=Pm((function(){eZ.sort(null)})),cZ=Om("sort"),oZ=!Pm((function(){if(qm)return qm<70;if(!(Dm&&Dm>3)){if(_m)return!0;if($m)return $m<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)eZ.push({k:t+r,v:n})}for(eZ.sort((function(e,t){return t.v-e.v})),r=0;r<eZ.length;r++)t=eZ[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));Tm({target:"Array",proto:!0,forced:rZ||!iZ||!cZ||!oZ},{sort:function(e){void 0!==e&&zm(e);var t=jm(this);if(oZ)return void 0===e?tZ(t):tZ(t,e);var n,r,i=[],c=Mm(t);for(r=0;r<c;r++)r in t&&nZ(i,t[r]);for(Em(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:Qm(t)>Qm(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var aZ=pe,lZ=qt,uZ=K,dZ=Wt("species"),sZ=function(e){var t=aZ(e),n=lZ.f;uZ&&t&&!t[dZ]&&n(t,dZ,{configurable:!0,get:function(){return this}})};sZ("Array");var mZ=gi,ZZ=S,hZ=Wr,bZ=Xr,pZ=Yr,IZ=ct,gZ=ao,yZ=oc,XZ=zl("splice"),GZ=ZZ.TypeError,fZ=Math.max,VZ=Math.min,WZ=9007199254740991,CZ="Maximum allowed length exceeded";mZ({target:"Array",proto:!0,forced:!XZ},{splice:function(e,t){var n,r,i,c,o,a,l=IZ(this),u=pZ(l),d=hZ(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=VZ(fZ(bZ(t),0),u-d)),u+n-r>WZ)throw GZ(CZ);for(i=gZ(l,r),c=0;c<r;c++)(o=d+c)in l&&yZ(i,c,l[o]);if(i.length=r,n<r){for(c=d;c<u-r;c++)a=c+n,(o=c+r)in l?l[a]=l[o]:delete l[a];for(c=u;c>u-r+n;c--)delete l[c-1]}else if(n>r)for(c=u-r;c>d;c--)a=c+n-1,(o=c+r-1)in l?l[a]=l[o]:delete l[a];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-r+n,i}}),Iu("flat"),Iu("flatMap");var vZ="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,RZ=Xn.exports,SZ=function(e,t,n){for(var r in t)RZ(e,r,t[r],n);return e},YZ=Ie,JZ=S.TypeError,KZ=function(e,t){if(YZ(t,e))return e;throw JZ("Incorrect invocation")},LZ=Xr,NZ=Rr,HZ=S.RangeError,xZ=function(e){if(void 0===e)return 0;var t=LZ(e),n=NZ(t);if(t!==n)throw HZ("Wrong length or index");return n},kZ=S.Array,UZ=Math.abs,AZ=Math.pow,wZ=Math.floor,FZ=Math.log,TZ=Math.LN2,BZ={pack:function(e,t,n){var r,i,c,o=kZ(n),a=8*n-t-1,l=(1<<a)-1,u=l>>1,d=23===t?AZ(2,-24)-AZ(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=UZ(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=wZ(FZ(e)/TZ),e*(c=AZ(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*AZ(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*AZ(2,t),r+=u):(i=e*AZ(2,u-1)*AZ(2,t),r=0));t>=8;)o[m++]=255&i,i/=256,t-=8;for(r=r<<t|i,a+=t;a>0;)o[m++]=255&r,r/=256,a-=8;return o[--m]|=128*s,o},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,c=(1<<i)-1,o=c>>1,a=i-7,l=r-1,u=e[l--],d=127&u;for(u>>=7;a>0;)d=256*d+e[l--],a-=8;for(n=d&(1<<-a)-1,d>>=-a,a+=t;a>0;)n=256*n+e[l--],a-=8;if(0===d)d=1-o;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=AZ(2,t),d-=o}return(u?-1:1)*n*AZ(2,d-t)}},zZ=S,jZ=E,MZ=K,QZ=vZ,PZ=or,EZ=yn,OZ=SZ,DZ=J,_Z=KZ,qZ=Xr,$Z=Rr,eh=xZ,th=BZ,nh=_d,rh=Gs,ih=Ir.f,ch=qt.f,oh=fu,ah=mc,lh=Nc,uh=PZ.PROPER,dh=PZ.CONFIGURABLE,sh=er.get,mh=er.set,Zh="ArrayBuffer",hh="DataView",bh="Wrong index",ph=zZ.ArrayBuffer,Ih=ph,gh=Ih&&Ih.prototype,yh=zZ.DataView,Xh=yh&&yh.prototype,Gh=Object.prototype,fh=zZ.Array,Vh=zZ.RangeError,Wh=jZ(oh),Ch=jZ([].reverse),vh=th.pack,Rh=th.unpack,Sh=function(e){return[255&e]},Yh=function(e){return[255&e,e>>8&255]},Jh=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},Kh=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Lh=function(e){return vh(e,23,4)},Nh=function(e){return vh(e,52,8)},Hh=function(e,t){ch(e.prototype,t,{get:function(){return sh(this)[t]}})},xh=function(e,t,n,r){var i=eh(n),c=sh(e);if(i+t>c.byteLength)throw Vh(bh);var o=sh(c.buffer).bytes,a=i+c.byteOffset,l=ah(o,a,a+t);return r?l:Ch(l)},kh=function(e,t,n,r,i,c){var o=eh(n),a=sh(e);if(o+t>a.byteLength)throw Vh(bh);for(var l=sh(a.buffer).bytes,u=o+a.byteOffset,d=r(+i),s=0;s<t;s++)l[u+s]=d[c?s:t-s-1]};if(QZ){var Uh=uh&&ph.name!==Zh;if(DZ((function(){ph(1)}))&&DZ((function(){new ph(-1)}))&&!DZ((function(){return new ph,new ph(1.5),new ph(NaN),Uh&&!dh})))Uh&&dh&&EZ(ph,"name",Zh);else{(Ih=function(e){return _Z(this,gh),new ph(eh(e))}).prototype=gh;for(var Ah,wh=ih(ph),Fh=0;wh.length>Fh;)(Ah=wh[Fh++])in Ih||EZ(Ih,Ah,ph[Ah]);gh.constructor=Ih}rh&&nh(Xh)!==Gh&&rh(Xh,Gh);var Th=new yh(new Ih(2)),Bh=jZ(Xh.setInt8);Th.setInt8(0,2147483648),Th.setInt8(1,2147483649),!Th.getInt8(0)&&Th.getInt8(1)||OZ(Xh,{setInt8:function(e,t){Bh(this,e,t<<24>>24)},setUint8:function(e,t){Bh(this,e,t<<24>>24)}},{unsafe:!0})}else Ih=function(e){_Z(this,gh);var t=eh(e);mh(this,{bytes:Wh(fh(t),0),byteLength:t}),MZ||(this.byteLength=t)},gh=Ih.prototype,yh=function(e,t,n){_Z(this,Xh),_Z(e,gh);var r=sh(e).byteLength,i=qZ(t);if(i<0||i>r)throw Vh("Wrong offset");if(i+(n=void 0===n?r-i:$Z(n))>r)throw Vh("Wrong length");mh(this,{buffer:e,byteLength:n,byteOffset:i}),MZ||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},Xh=yh.prototype,MZ&&(Hh(Ih,"byteLength"),Hh(yh,"buffer"),Hh(yh,"byteLength"),Hh(yh,"byteOffset")),OZ(Xh,{getInt8:function(e){return xh(this,1,e)[0]<<24>>24},getUint8:function(e){return xh(this,1,e)[0]},getInt16:function(e){var t=xh(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=xh(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return Kh(xh(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return Kh(xh(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Rh(xh(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Rh(xh(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){kh(this,1,e,Sh,t)},setUint8:function(e,t){kh(this,1,e,Sh,t)},setInt16:function(e,t){kh(this,2,e,Yh,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){kh(this,2,e,Yh,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){kh(this,4,e,Jh,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){kh(this,4,e,Jh,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){kh(this,4,e,Lh,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){kh(this,8,e,Nh,t,arguments.length>2?arguments[2]:void 0)}});lh(Ih,Zh),lh(yh,hh);var zh={ArrayBuffer:Ih,DataView:yh},jh=sZ,Mh="ArrayBuffer",Qh=zh.ArrayBuffer;gi({global:!0,forced:S.ArrayBuffer!==Qh},{ArrayBuffer:Qh}),jh(Mh);var Ph=cn,Eh=Ee,Oh=S.TypeError,Dh=lt,_h=Xn.exports,qh=function(e){if(Ph(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw Oh("Incorrect hint");return Eh(this,e)},$h=Wt("toPrimitive"),eb=Date.prototype;Dh(eb,$h)||_h(eb,$h,qh);var tb=de,nb=me,rb=qt,ib=_d,cb=Wt("hasInstance"),ob=Function.prototype;cb in ob||rb.f(ob,cb,{value:function(e){if(!tb(this)||!nb(e))return!1;var t=this.prototype;if(!nb(t))return e instanceof this;for(;e=ib(e);)if(t===e)return!0;return!1}});var ab=K,lb=or.EXISTS,ub=E,db=qt.f,sb=Function.prototype,mb=ub(sb.toString),Zb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,hb=ub(Zb.exec);ab&&!lb&&db(sb,"name",{configurable:!0,get:function(){try{return hb(Zb,mb(this))[1]}catch(e){return""}}}),gi({global:!0},{globalThis:S}),Nc(S.JSON,"JSON",!0);var bb={exports:{}},pb=J((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),Ib=J,gb=me,yb=q,Xb=pb,Gb=Object.isExtensible,fb=Ib((function(){Gb(1)}))||Xb?function(e){return!!gb(e)&&((!Xb||"ArrayBuffer"!=yb(e))&&(!Gb||Gb(e)))}:Gb,Vb=!J((function(){return Object.isExtensible(Object.preventExtensions({}))})),Wb=gi,Cb=E,vb=kn,Rb=me,Sb=lt,Yb=qt.f,Jb=Ir,Kb=nc,Lb=fb,Nb=Vb,Hb=!1,xb=Zt("meta"),kb=0,Ub=function(e){Yb(e,xb,{value:{objectID:"O"+kb++,weakData:{}}})},Ab=bb.exports={enable:function(){Ab.enable=function(){},Hb=!0;var e=Jb.f,t=Cb([].splice),n={};n[xb]=1,e(n).length&&(Jb.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===xb){t(r,i,1);break}return r},Wb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:Kb.f}))},fastKey:function(e,t){if(!Rb(e))return"symbol"==o(e)?e:("string"==typeof e?"S":"P")+e;if(!Sb(e,xb)){if(!Lb(e))return"F";if(!t)return"E";Ub(e)}return e[xb].objectID},getWeakData:function(e,t){if(!Sb(e,xb)){if(!Lb(e))return!0;if(!t)return!1;Ub(e)}return e[xb].weakData},onFreeze:function(e){return Nb&&Hb&&Lb(e)&&!Sb(e,xb)&&Ub(e),e}};vb[xb]=!0;var wb=Uc,Fb=x,Tb=cn,Bb=Ue,zb=od,jb=Yr,Mb=Ie,Qb=gd,Pb=sd,Eb=$u,Ob=S.TypeError,Db=function(e,t){this.stopped=e,this.result=t},_b=Db.prototype,qb=function(e,t,n){var r,i,c,a,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),Z=!(!n||!n.IS_ITERATOR),h=!(!n||!n.INTERRUPTED),b=wb(t,s),p=function(e){return r&&Eb(r,"normal",e),new Db(!0,e)},I=function(e){return m?(Tb(e),h?b(e[0],e[1],p):b(e[0],e[1])):h?b(e,p):b(e)};if(Z)r=e;else{if(!(i=Pb(e)))throw Ob(Bb(e)+" is not iterable");if(zb(i)){for(c=0,a=jb(e);a>c;c++)if((l=I(e[c]))&&Mb(_b,l))return l;return new Db(!1)}r=Qb(e,i)}for(u=r.next;!(d=Fb(u,r)).done;){try{l=I(d.value)}catch(e){Eb(r,"throw",e)}if("object"==o(l)&&l&&Mb(_b,l))return l}return new Db(!1)},$b=de,ep=me,tp=Gs,np=function(e,t,n){var r,i;return tp&&$b(r=t.constructor)&&r!==n&&ep(i=r.prototype)&&i!==n.prototype&&tp(e,i),e},rp=gi,ip=S,cp=E,op=di,ap=Xn.exports,lp=bb.exports,up=qb,dp=KZ,sp=de,mp=me,Zp=J,hp=xd,bp=Nc,pp=np,Ip=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",o=ip[e],a=o&&o.prototype,l=o,u={},d=function(e){var t=cp(a[e]);ap(a,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!mp(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!mp(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!mp(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(op(e,!sp(o)||!(i||a.forEach&&!Zp((function(){(new o).entries().next()})))))l=n.getConstructor(t,e,r,c),lp.enable();else if(op(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,Z=Zp((function(){s.has(1)})),h=hp((function(e){new o(e)})),b=!i&&Zp((function(){for(var e=new o,t=5;t--;)e[c](t,t);return!e.has(-0)}));h||((l=t((function(e,t){dp(e,a);var n=pp(new o,e,l);return null!=t&&up(t,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=a,a.constructor=l),(Z||b)&&(d("delete"),d("has"),r&&d("get")),(b||m)&&d(c),i&&a.clear&&delete a.clear}return u[e]=l,rp({global:!0,forced:l!=o},u),bp(l,e),i||n.setStrong(l,e,r),l},gp=qt.f,yp=tc,Xp=SZ,Gp=Uc,fp=KZ,Vp=qb,Wp=Bs,Cp=sZ,vp=K,Rp=bb.exports.fastKey,Sp=er.set,Yp=er.getterFor,Jp={getConstructor:function(e,t,n,r){var i=e((function(e,i){fp(e,c),Sp(e,{type:t,index:yp(null),first:void 0,last:void 0,size:0}),vp||(e.size=0),null!=i&&Vp(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=Yp(t),a=function(e,t,n){var r,i,c=o(e),a=l(e,t);return a?a.value=n:(c.last=a={index:i=Rp(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=a),r&&(r.next=a),vp?c.size++:e.size++,"F"!==i&&(c.index[i]=a)),e},l=function(e,t){var n,r=o(e),i=Rp(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return Xp(c,{clear:function(){for(var e=o(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,vp?e.size=0:this.size=0},delete:function(e){var t=this,n=o(t),r=l(t,e);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),vp?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=o(this),r=Gp(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!l(this,e)}}),Xp(c,n?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return a(this,0===e?0:e,t)}}:{add:function(e){return a(this,e=0===e?0:e,e)}}),vp&&gp(c,"size",{get:function(){return o(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=Yp(t),c=Yp(r);Wp(e,t,(function(e,t){Sp(this,{type:r,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=c(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Cp(t)}};Ip("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Jp);var Kp=Math.log,Lp=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Kp(1+e)},Np=gi,Hp=Lp,xp=Math.acosh,kp=Math.log,Up=Math.sqrt,Ap=Math.LN2;Np({target:"Math",stat:!0,forced:!xp||710!=Math.floor(xp(Number.MAX_VALUE))||xp(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?kp(e)+Ap:Hp(e-1+Up(e-1)*Up(e+1))}});var wp=gi,Fp=Math.asinh,Tp=Math.log,Bp=Math.sqrt;wp({target:"Math",stat:!0,forced:!(Fp&&1/Fp(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Tp(t+Bp(t*t+1)):t}});var zp=gi,jp=Math.atanh,Mp=Math.log;zp({target:"Math",stat:!0,forced:!(jp&&1/jp(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:Mp((1+e)/(1-e))/2}});var Qp=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},Pp=gi,Ep=Qp,Op=Math.abs,Dp=Math.pow;Pp({target:"Math",stat:!0},{cbrt:function(e){return Ep(e=+e)*Dp(Op(e),1/3)}});var _p=gi,qp=Math.floor,$p=Math.log,eI=Math.LOG2E;_p({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-qp($p(e+.5)*eI):32}});var tI=Math.expm1,nI=Math.exp,rI=!tI||tI(10)>22025.465794806718||tI(10)<22025.465794806718||-2e-17!=tI(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:nI(e)-1}:tI,iI=gi,cI=rI,oI=Math.cosh,aI=Math.abs,lI=Math.E;iI({target:"Math",stat:!0,forced:!oI||oI(710)===1/0},{cosh:function(e){var t=cI(aI(e)-1)+1;return(t+1/(t*lI*lI))*(lI/2)}});var uI=rI;gi({target:"Math",stat:!0,forced:uI!=Math.expm1},{expm1:uI});var dI=Qp,sI=Math.abs,mI=Math.pow,ZI=mI(2,-52),hI=mI(2,-23),bI=mI(2,127)*(2-hI),pI=mI(2,-126),II=Math.fround||function(e){var t,n,r=sI(e),i=dI(e);return r<pI?i*function(e){return e+1/ZI-1/ZI}(r/pI/hI)*pI*hI:(n=(t=(1+hI/ZI)*r)-(t-r))>bI||n!=n?i*(1/0):i*n};gi({target:"Math",stat:!0},{fround:II});var gI=gi,yI=Math.hypot,XI=Math.abs,GI=Math.sqrt;gI({target:"Math",stat:!0,forced:!!yI&&yI(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,c=0,o=arguments.length,a=0;c<o;)a<(n=XI(arguments[c++]))?(i=i*(r=a/n)*r+1,a=n):i+=n>0?(r=n/a)*r:n;return a===1/0?1/0:a*GI(i)}});var fI=gi,VI=J,WI=Math.imul;fI({target:"Math",stat:!0,forced:VI((function(){return-5!=WI(4294967295,5)||2!=WI.length}))},{imul:function(e,t){var n=65535,r=+e,i=+t,c=n&r,o=n&i;return 0|c*o+((n&r>>>16)*o+c*(n&i>>>16)<<16>>>0)}});var CI=Math.log,vI=Math.LOG10E;gi({target:"Math",stat:!0},{log10:Math.log10||function(e){return CI(e)*vI}}),gi({target:"Math",stat:!0},{log1p:Lp});var RI=gi,SI=Math.log,YI=Math.LN2;RI({target:"Math",stat:!0},{log2:function(e){return SI(e)/YI}}),gi({target:"Math",stat:!0},{sign:Qp});var JI=gi,KI=J,LI=rI,NI=Math.abs,HI=Math.exp,xI=Math.E;JI({target:"Math",stat:!0,forced:KI((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return NI(e=+e)<1?(LI(e)-LI(-e))/2:(HI(e-1)-HI(-e-1))*(xI/2)}});var kI=gi,UI=rI,AI=Math.exp;kI({target:"Math",stat:!0},{tanh:function(e){var t=UI(e=+e),n=UI(-e);return t==1/0?1:n==1/0?-1:(t-n)/(AI(e)+AI(-e))}}),Nc(Math,"Math",!0);var wI=gi,FI=Math.ceil,TI=Math.floor;wI({target:"Math",stat:!0},{trunc:function(e){return(e>0?TI:FI)(e)}});var BI=E(1..valueOf),zI="\t\n\v\f\r                 \u2028\u2029\ufeff",jI=oe,MI=Ki,QI=E("".replace),PI="[\t\n\v\f\r                 \u2028\u2029\ufeff]",EI=RegExp("^"+PI+PI+"*"),OI=RegExp(PI+PI+"*$"),DI=function(e){return function(t){var n=MI(jI(t));return 1&e&&(n=QI(n,EI,"")),2&e&&(n=QI(n,OI,"")),n}},_I={start:DI(1),end:DI(2),trim:DI(3)},qI=K,$I=S,eg=E,tg=di,ng=Xn.exports,rg=lt,ig=np,cg=Ie,og=xe,ag=Nt,lg=J,ug=Ir.f,dg=Y.f,sg=qt.f,mg=BI,Zg=_I.trim,hg="Number",bg=$I.Number,pg=bg.prototype,Ig=$I.TypeError,gg=eg("".slice),yg=eg("".charCodeAt),Xg=function(e){var t=ag(e,"number");return"bigint"==typeof t?t:Gg(t)},Gg=function(e){var t,n,r,i,c,o,a,l,u=ag(e,"number");if(og(u))throw Ig("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=Zg(u),43===(t=yg(u,0))||45===t){if(88===(n=yg(u,2))||120===n)return NaN}else if(48===t){switch(yg(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(o=(c=gg(u,2)).length,a=0;a<o;a++)if((l=yg(c,a))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(tg(hg,!bg(" 0o1")||!bg("0b1")||bg("+0x1"))){for(var fg,Vg=function(e){var t=arguments.length<1?0:bg(Xg(e)),n=this;return cg(pg,n)&&lg((function(){mg(n)}))?ig(Object(t),n,Vg):t},Wg=qI?ug(bg):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),Cg=0;Wg.length>Cg;Cg++)rg(bg,fg=Wg[Cg])&&!rg(Vg,fg)&&sg(Vg,fg,dg(bg,fg));Vg.prototype=pg,pg.constructor=Vg,ng($I,hg,Vg)}gi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var vg=S.isFinite;gi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&vg(e)}});var Rg=me,Sg=Math.floor,Yg=Number.isInteger||function(e){return!Rg(e)&&isFinite(e)&&Sg(e)===e};gi({target:"Number",stat:!0},{isInteger:Yg}),gi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Jg=gi,Kg=Yg,Lg=Math.abs;Jg({target:"Number",stat:!0},{isSafeInteger:function(e){return Kg(e)&&Lg(e)<=9007199254740991}}),gi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),gi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var Ng=S,Hg=J,xg=Ki,kg=_I.trim,Ug=E("".charAt),Ag=Ng.parseFloat,wg=Ng.Symbol,Fg=wg&&wg.iterator,Tg=1/Ag("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||Fg&&!Hg((function(){Ag(Object(Fg))}))?function(e){var t=kg(xg(e)),n=Ag(t);return 0===n&&"-"==Ug(t,0)?-0:n}:Ag;gi({target:"Number",stat:!0,forced:Number.parseFloat!=Tg},{parseFloat:Tg});var Bg=S,zg=J,jg=E,Mg=Ki,Qg=_I.trim,Pg=zI,Eg=Bg.parseInt,Og=Bg.Symbol,Dg=Og&&Og.iterator,_g=/^[+-]?0x/i,qg=jg(_g.exec),$g=8!==Eg(Pg+"08")||22!==Eg(Pg+"0x16")||Dg&&!zg((function(){Eg(Object(Dg))}))?function(e,t){var n=Qg(Mg(e));return Eg(n,t>>>0||(qg(_g,n)?16:10))}:Eg,ey=$g;gi({target:"Number",stat:!0,forced:Number.parseInt!=ey},{parseInt:ey});var ty=Xr,ny=Ki,ry=oe,iy=S.RangeError,cy=function(e){var t=ny(ry(this)),n="",r=ty(e);if(r<0||r==1/0)throw iy("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},oy=gi,ay=S,ly=E,uy=Xr,dy=BI,sy=cy,my=J,Zy=ay.RangeError,hy=ay.String,by=Math.floor,py=ly(sy),Iy=ly("".slice),gy=ly(1..toFixed),yy=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},Xy=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=by(i/1e7)},Gy=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=by(r/t),r=r%t*1e7},fy=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=hy(e[t]);n=""===n?r:n+py("0",7-r.length)+r}return n};oy({target:"Number",proto:!0,forced:my((function(){return"0.000"!==gy(8e-5,3)||"1"!==gy(.9,0)||"1.25"!==gy(1.255,2)||"1000000000000000128"!==gy(0xde0b6b3a7640080,0)}))||!my((function(){gy({})}))},{toFixed:function(e){var t,n,r,i,c=dy(this),o=uy(e),a=[0,0,0,0,0,0],l="",u="0";if(o<0||o>20)throw Zy("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return hy(c);if(c<0&&(l="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*yy(2,69,1))-69,n=t<0?c*yy(2,-t,1):c/yy(2,t,1),n*=4503599627370496,(t=52-t)>0){for(Xy(a,0,n),r=o;r>=7;)Xy(a,1e7,0),r-=7;for(Xy(a,yy(10,r,1),0),r=t-1;r>=23;)Gy(a,1<<23),r-=23;Gy(a,1<<r),Xy(a,1,1),Gy(a,2),u=fy(a)}else Xy(a,0,n),Xy(a,1<<-t,0),u=fy(a)+py("0",o);return u=o>0?l+((i=u.length)<=o?"0."+py("0",o-i)+u:Iy(u,0,i-o)+"."+Iy(u,i-o)):l+u}});var Vy=K,Wy=E,Cy=x,vy=J,Ry=xi,Sy=jr,Yy=k,Jy=ct,Ky=ie,Ly=Object.assign,Ny=Object.defineProperty,Hy=Wy([].concat),xy=!Ly||vy((function(){if(Vy&&1!==Ly({b:1},Ly(Ny({},"a",{enumerable:!0,get:function(){Ny(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=Ly({},e)[n]||Ry(Ly({},t)).join("")!=r}))?function(e,t){for(var n=Jy(e),r=arguments.length,i=1,c=Sy.f,o=Yy.f;r>i;)for(var a,l=Ky(arguments[i++]),u=c?Hy(Ry(l),c(l)):Ry(l),d=u.length,s=0;d>s;)a=u[s++],Vy&&!Cy(o,l,a)||(n[a]=l[a]);return n}:Ly,ky=xy;gi({target:"Object",stat:!0,forced:Object.assign!==ky},{assign:ky});var Uy=S,Ay=Fm,wy=!J((function(){if(!(Ay&&Ay<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete Uy[e]}})),Fy=Te,Ty=ct,By=qt;K&&gi({target:"Object",proto:!0,forced:wy},{__defineGetter__:function(e,t){By.f(Ty(this),e,{get:Fy(t),enumerable:!0,configurable:!0})}});var zy=Te,jy=ct,My=qt;K&&gi({target:"Object",proto:!0,forced:wy},{__defineSetter__:function(e,t){My.f(jy(this),e,{set:zy(t),enumerable:!0,configurable:!0})}});var Qy=K,Py=E,Ey=xi,Oy=ue,Dy=Py(k.f),_y=Py([].push),qy=function(e){return function(t){for(var n,r=Oy(t),i=Ey(r),c=i.length,o=0,a=[];c>o;)n=i[o++],Qy&&!Dy(r,n)||_y(a,e?[n,r[n]]:r[n]);return a}},$y={entries:qy(!0),values:qy(!1)},eX=$y.entries;gi({target:"Object",stat:!0},{entries:function(e){return eX(e)}});var tX=gi,nX=Vb,rX=J,iX=me,cX=bb.exports.onFreeze,oX=Object.freeze;tX({target:"Object",stat:!0,forced:rX((function(){oX(1)})),sham:!nX},{freeze:function(e){return oX&&iX(e)?oX(cX(e)):e}});var aX=qb,lX=oc;gi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return aX(e,(function(e,n){lX(t,e,n)}),{AS_ENTRIES:!0}),t}});var uX=gi,dX=J,sX=ue,mX=Y.f,ZX=K,hX=dX((function(){mX(1)}));uX({target:"Object",stat:!0,forced:!ZX||hX,sham:!ZX},{getOwnPropertyDescriptor:function(e,t){return mX(sX(e),t)}});var bX=Dr,pX=ue,IX=Y,gX=oc;gi({target:"Object",stat:!0,sham:!K},{getOwnPropertyDescriptors:function(e){for(var t,n,r=pX(e),i=IX.f,c=bX(r),o={},a=0;c.length>a;)void 0!==(n=i(r,t=c[a++]))&&gX(o,t,n);return o}});var yX=gi,XX=J,GX=nc.f;yX({target:"Object",stat:!0,forced:XX((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:GX});var fX=ct,VX=_d,WX=Bd;gi({target:"Object",stat:!0,forced:J((function(){VX(1)})),sham:!WX},{getPrototypeOf:function(e){return VX(fX(e))}});var CX=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};gi({target:"Object",stat:!0},{is:CX});var vX=fb;gi({target:"Object",stat:!0,forced:Object.isExtensible!==vX},{isExtensible:vX});var RX=gi,SX=J,YX=me,JX=q,KX=pb,LX=Object.isFrozen;RX({target:"Object",stat:!0,forced:SX((function(){LX(1)}))||KX},{isFrozen:function(e){return!YX(e)||(!(!KX||"ArrayBuffer"!=JX(e))||!!LX&&LX(e))}});var NX=gi,HX=J,xX=me,kX=q,UX=pb,AX=Object.isSealed;NX({target:"Object",stat:!0,forced:HX((function(){AX(1)}))||UX},{isSealed:function(e){return!xX(e)||(!(!UX||"ArrayBuffer"!=kX(e))||!!AX&&AX(e))}});var wX=ct,FX=xi;gi({target:"Object",stat:!0,forced:J((function(){FX(1)}))},{keys:function(e){return FX(wX(e))}});var TX=gi,BX=K,zX=wy,jX=ct,MX=kt,QX=_d,PX=Y.f;BX&&TX({target:"Object",proto:!0,forced:zX},{__lookupGetter__:function(e){var t,n=jX(this),r=MX(e);do{if(t=PX(n,r))return t.get}while(n=QX(n))}});var EX=gi,OX=K,DX=wy,_X=ct,qX=kt,$X=_d,eG=Y.f;OX&&EX({target:"Object",proto:!0,forced:DX},{__lookupSetter__:function(e){var t,n=_X(this),r=qX(e);do{if(t=eG(n,r))return t.set}while(n=$X(n))}});var tG=gi,nG=me,rG=bb.exports.onFreeze,iG=Vb,cG=J,oG=Object.preventExtensions;tG({target:"Object",stat:!0,forced:cG((function(){oG(1)})),sham:!iG},{preventExtensions:function(e){return oG&&nG(e)?oG(rG(e)):e}});var aG=gi,lG=me,uG=bb.exports.onFreeze,dG=Vb,sG=J,mG=Object.seal;aG({target:"Object",stat:!0,forced:sG((function(){mG(1)})),sham:!dG},{seal:function(e){return mG&&lG(e)?mG(uG(e)):e}});var ZG=Si,hG=Xi?{}.toString:function(){return"[object "+ZG(this)+"]"},bG=Xi,pG=Xn.exports,IG=hG;bG||pG(Object.prototype,"toString",IG,{unsafe:!0});var gG=$y.values;gi({target:"Object",stat:!0},{values:function(e){return gG(e)}});var yG,XG,GG,fG,VG="process"==q(S.process),WG=$c,CG=Ue,vG=S.TypeError,RG=function(e){if(WG(e))return e;throw vG(CG(e)+" is not a constructor")},SG=cn,YG=RG,JG=Wt("species"),KG=function(e,t){var n,r=SG(e).constructor;return void 0===r||null==(n=SG(r)[JG])?t:YG(n)},LG=S.TypeError,NG=function(e,t){if(e<t)throw LG("Not enough arguments");return e},HG=/(?:ipad|iphone|ipod).*applewebkit/i.test(ge),xG=S,kG=Ba,UG=Uc,AG=de,wG=lt,FG=J,TG=zi,BG=za,zG=Ft,jG=NG,MG=HG,QG=VG,PG=xG.setImmediate,EG=xG.clearImmediate,OG=xG.process,DG=xG.Dispatch,_G=xG.Function,qG=xG.MessageChannel,$G=xG.String,ef=0,tf={},nf="onreadystatechange";try{yG=xG.location}catch(e){}var rf=function(e){if(wG(tf,e)){var t=tf[e];delete tf[e],t()}},cf=function(e){return function(){rf(e)}},of=function(e){rf(e.data)},af=function(e){xG.postMessage($G(e),yG.protocol+"//"+yG.host)};PG&&EG||(PG=function(e){jG(arguments.length,1);var t=AG(e)?e:_G(e),n=BG(arguments,1);return tf[++ef]=function(){kG(t,void 0,n)},XG(ef),ef},EG=function(e){delete tf[e]},QG?XG=function(e){OG.nextTick(cf(e))}:DG&&DG.now?XG=function(e){DG.now(cf(e))}:qG&&!MG?(fG=(GG=new qG).port2,GG.port1.onmessage=of,XG=UG(fG.postMessage,fG)):xG.addEventListener&&AG(xG.postMessage)&&!xG.importScripts&&yG&&"file:"!==yG.protocol&&!FG(af)?(XG=af,xG.addEventListener("message",of,!1)):XG=nf in zG("script")?function(e){TG.appendChild(zG("script")).onreadystatechange=function(){TG.removeChild(this),rf(e)}}:function(e){setTimeout(cf(e),0)});var lf,uf,df,sf,mf,Zf,hf,bf,pf={set:PG,clear:EG},If=S,gf=/ipad|iphone|ipod/i.test(ge)&&void 0!==If.Pebble,yf=/web0s(?!.*chrome)/i.test(ge),Xf=S,Gf=Uc,ff=Y.f,Vf=pf.set,Wf=HG,Cf=gf,vf=yf,Rf=VG,Sf=Xf.MutationObserver||Xf.WebKitMutationObserver,Yf=Xf.document,Jf=Xf.process,Kf=Xf.Promise,Lf=ff(Xf,"queueMicrotask"),Nf=Lf&&Lf.value;Nf||(lf=function(){var e,t;for(Rf&&(e=Jf.domain)&&e.exit();uf;){t=uf.fn,uf=uf.next;try{t()}catch(e){throw uf?sf():df=void 0,e}}df=void 0,e&&e.enter()},Wf||Rf||vf||!Sf||!Yf?!Cf&&Kf&&Kf.resolve?((hf=Kf.resolve(void 0)).constructor=Kf,bf=Gf(hf.then,hf),sf=function(){bf(lf)}):Rf?sf=function(){Jf.nextTick(lf)}:(Vf=Gf(Vf,Xf),sf=function(){Vf(lf)}):(mf=!0,Zf=Yf.createTextNode(""),new Sf(lf).observe(Zf,{characterData:!0}),sf=function(){Zf.data=mf=!mf}));var Hf=Nf||function(e){var t={fn:e,next:void 0};df&&(df.next=t),uf||(uf=t,sf()),df=t},xf=S,kf=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},Uf=function(){this.head=null,this.tail=null};Uf.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var Af=Uf,wf=S.Promise,Ff="object"==("undefined"==typeof window?"undefined":o(window))&&"object"!=("undefined"==typeof Deno?"undefined":o(Deno)),Tf=S,Bf=wf,zf=de,jf=di,Mf=Rn,Qf=Wt,Pf=Ff,Ef=Ce;Bf&&Bf.prototype;var Of=Qf("species"),Df=!1,_f=zf(Tf.PromiseRejectionEvent),qf=jf("Promise",(function(){var e=Mf(Bf),t=e!==String(Bf);if(!t&&66===Ef)return!0;if(Ef>=51&&/native code/.test(e))return!1;var n=new Bf((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[Of]=r,!(Df=n.then((function(){}))instanceof r)||!t&&Pf&&!_f})),$f={CONSTRUCTOR:qf,REJECTION_EVENT:_f,SUBCLASSING:Df},eV={},tV=Te,nV=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=tV(t),this.reject=tV(n)};eV.f=function(e){return new nV(e)};var rV,iV,cV,oV=gi,aV=VG,lV=S,uV=x,dV=Xn.exports,sV=SZ,mV=Gs,ZV=Nc,hV=sZ,bV=Te,pV=de,IV=me,gV=KZ,yV=KG,XV=pf.set,GV=Hf,fV=function(e,t){var n=xf.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},VV=kf,WV=Af,CV=er,vV=wf,RV=eV,SV="Promise",YV=$f.CONSTRUCTOR,JV=$f.REJECTION_EVENT,KV=$f.SUBCLASSING,LV=CV.getterFor(SV),NV=CV.set,HV=vV&&vV.prototype,xV=vV,kV=HV,UV=lV.TypeError,AV=lV.document,wV=lV.process,FV=RV.f,TV=FV,BV=!!(AV&&AV.createEvent&&lV.dispatchEvent),zV="unhandledrejection",jV=function(e){var t;return!(!IV(e)||!pV(t=e.then))&&t},MV=function(e,t){var n,r,i,c=t.value,o=1==t.state,a=o?e.ok:e.fail,l=e.resolve,u=e.reject,d=e.domain;try{a?(o||(2===t.rejection&&DV(t),t.rejection=1),!0===a?n=c:(d&&d.enter(),n=a(c),d&&(d.exit(),i=!0)),n===e.promise?u(UV("Promise-chain cycle")):(r=jV(n))?uV(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},QV=function(e,t){e.notified||(e.notified=!0,GV((function(){for(var n,r=e.reactions;n=r.get();)MV(n,e);e.notified=!1,t&&!e.rejection&&EV(e)})))},PV=function(e,t,n){var r,i;BV?((r=AV.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),lV.dispatchEvent(r)):r={promise:t,reason:n},!JV&&(i=lV["on"+e])?i(r):e===zV&&fV("Unhandled promise rejection",n)},EV=function(e){uV(XV,lV,(function(){var t,n=e.facade,r=e.value;if(OV(e)&&(t=VV((function(){aV?wV.emit("unhandledRejection",r,n):PV(zV,n,r)})),e.rejection=aV||OV(e)?2:1,t.error))throw t.value}))},OV=function(e){return 1!==e.rejection&&!e.parent},DV=function(e){uV(XV,lV,(function(){var t=e.facade;aV?wV.emit("rejectionHandled",t):PV("rejectionhandled",t,e.value)}))},_V=function(e,t,n){return function(r){e(t,r,n)}},qV=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,QV(e,!0))},$V=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw UV("Promise can't be resolved itself");var i=jV(n);i?GV((function(){var r={done:!1};try{uV(i,n,_V(e,r,t),_V(qV,r,t))}catch(e){qV(r,e,t)}})):(t.value=n,t.state=1,QV(t,!1))}catch(e){qV({done:!1},e,t)}}};if(YV&&(kV=(xV=function(e){gV(this,kV),bV(e),uV(rV,this);var t=LV(this);try{e(_V($V,t),_V(qV,t))}catch(e){qV(t,e)}}).prototype,(rV=function(e){NV(this,{type:SV,done:!1,notified:!1,parent:!1,reactions:new WV,rejection:!1,state:0,value:void 0})}).prototype=sV(kV,{then:function(e,t){var n=LV(this),r=FV(yV(this,xV));return n.parent=!0,r.ok=!pV(e)||e,r.fail=pV(t)&&t,r.domain=aV?wV.domain:void 0,0==n.state?n.reactions.add(r):GV((function(){MV(r,n)})),r.promise}}),iV=function(){var e=new rV,t=LV(e);this.promise=e,this.resolve=_V($V,t),this.reject=_V(qV,t)},RV.f=FV=function(e){return e===xV||undefined===e?new iV(e):TV(e)},pV(vV)&&HV!==Object.prototype)){cV=HV.then,KV||dV(HV,"then",(function(e,t){var n=this;return new xV((function(e,t){uV(cV,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete HV.constructor}catch(e){}mV&&mV(HV,kV)}oV({global:!0,wrap:!0,forced:YV},{Promise:xV}),ZV(xV,SV,!1),hV(SV);var eW=wf,tW=$f.CONSTRUCTOR||!xd((function(e){eW.all(e).then(void 0,(function(){}))})),nW=x,rW=Te,iW=eV,cW=kf,oW=qb;gi({target:"Promise",stat:!0,forced:tW},{all:function(e){var t=this,n=iW.f(t),r=n.resolve,i=n.reject,c=cW((function(){var n=rW(t.resolve),c=[],o=0,a=1;oW(e,(function(e){var l=o++,u=!1;a++,nW(n,t,e).then((function(e){u||(u=!0,c[l]=e,--a||r(c))}),i)})),--a||r(c)}));return c.error&&i(c.value),n.promise}});var aW=gi,lW=$f.CONSTRUCTOR,uW=wf,dW=pe,sW=de,mW=Xn.exports,ZW=uW&&uW.prototype;if(aW({target:"Promise",proto:!0,forced:lW,real:!0},{catch:function(e){return this.then(void 0,e)}}),sW(uW)){var hW=dW("Promise").prototype.catch;ZW.catch!==hW&&mW(ZW,"catch",hW,{unsafe:!0})}var bW=x,pW=Te,IW=eV,gW=kf,yW=qb;gi({target:"Promise",stat:!0,forced:tW},{race:function(e){var t=this,n=IW.f(t),r=n.reject,i=gW((function(){var i=pW(t.resolve);yW(e,(function(e){bW(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var XW=x,GW=eV;gi({target:"Promise",stat:!0,forced:$f.CONSTRUCTOR},{reject:function(e){var t=GW.f(this);return XW(t.reject,void 0,e),t.promise}});var fW=cn,VW=me,WW=eV,CW=function(e,t){if(fW(e),VW(t)&&t.constructor===e)return t;var n=WW.f(e);return(0,n.resolve)(t),n.promise},vW=gi,RW=$f.CONSTRUCTOR,SW=CW;pe("Promise"),vW({target:"Promise",stat:!0,forced:RW},{resolve:function(e){return SW(this,e)}});var YW=x,JW=Te,KW=eV,LW=kf,NW=qb;gi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=KW.f(t),r=n.resolve,i=n.reject,c=LW((function(){var n=JW(t.resolve),i=[],c=0,o=1;NW(e,(function(e){var a=c++,l=!1;o++,YW(n,t,e).then((function(e){l||(l=!0,i[a]={status:"fulfilled",value:e},--o||r(i))}),(function(e){l||(l=!0,i[a]={status:"rejected",reason:e},--o||r(i))}))})),--o||r(i)}));return c.error&&i(c.value),n.promise}});var HW=gi,xW=wf,kW=J,UW=pe,AW=de,wW=KG,FW=CW,TW=Xn.exports,BW=xW&&xW.prototype;if(HW({target:"Promise",proto:!0,real:!0,forced:!!xW&&kW((function(){BW.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=wW(this,UW("Promise")),n=AW(e);return this.then(n?function(n){return FW(t,e()).then((function(){return n}))}:e,n?function(n){return FW(t,e()).then((function(){throw n}))}:e)}}),AW(xW)){var zW=UW("Promise").prototype.finally;BW.finally!==zW&&TW(BW,"finally",zW,{unsafe:!0})}var jW=Ba,MW=Te,QW=cn;gi({target:"Reflect",stat:!0,forced:!J((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return jW(MW(e),t,QW(n))}});var PW=E,EW=Te,OW=me,DW=lt,_W=za,qW=L,$W=S.Function,eC=PW([].concat),tC=PW([].join),nC={},rC=function(e,t,n){if(!DW(nC,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";nC[t]=$W("C,a","return new C("+tC(r,",")+")")}return nC[t](e,n)},iC=qW?$W.bind:function(e){var t=EW(this),n=t.prototype,r=_W(arguments,1),i=function(){var n=eC(r,_W(arguments));return this instanceof i?rC(t,n.length,n):t.apply(e,n)};return OW(n)&&(i.prototype=n),i},cC=gi,oC=Ba,aC=iC,lC=RG,uC=cn,dC=me,sC=tc,mC=J,ZC=pe("Reflect","construct"),hC=Object.prototype,bC=[].push,pC=mC((function(){function e(){}return!(ZC((function(){}),[],e)instanceof e)})),IC=!mC((function(){ZC((function(){}))})),gC=pC||IC;cC({target:"Reflect",stat:!0,forced:gC,sham:gC},{construct:function(e,t){lC(e),uC(t);var n=arguments.length<3?e:lC(arguments[2]);if(IC&&!pC)return ZC(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return oC(bC,r,t),new(oC(aC,e,r))}var i=n.prototype,c=sC(dC(i)?i:hC),o=oC(e,c,t);return dC(o)?o:c}});var yC=K,XC=cn,GC=kt,fC=qt;gi({target:"Reflect",stat:!0,forced:J((function(){Reflect.defineProperty(fC.f({},1,{value:1}),1,{value:2})})),sham:!yC},{defineProperty:function(e,t,n){XC(e);var r=GC(t);XC(n);try{return fC.f(e,r,n),!0}catch(e){return!1}}});var VC=gi,WC=cn,CC=Y.f;VC({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=CC(WC(e),t);return!(n&&!n.configurable)&&delete e[t]}});var vC=lt,RC=function(e){return void 0!==e&&(vC(e,"value")||vC(e,"writable"))},SC=x,YC=me,JC=cn,KC=RC,LC=Y,NC=_d;gi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return JC(t)===c?t[n]:(r=LC.f(t,n))?KC(r)?r.value:void 0===r.get?void 0:SC(r.get,c):YC(i=NC(t))?e(i,n,c):void 0}});var HC=cn,xC=Y;gi({target:"Reflect",stat:!0,sham:!K},{getOwnPropertyDescriptor:function(e,t){return xC.f(HC(e),t)}});var kC=cn,UC=_d;gi({target:"Reflect",stat:!0,sham:!Bd},{getPrototypeOf:function(e){return UC(kC(e))}}),gi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var AC=cn,wC=fb;gi({target:"Reflect",stat:!0},{isExtensible:function(e){return AC(e),wC(e)}}),gi({target:"Reflect",stat:!0},{ownKeys:Dr});var FC=pe,TC=cn;gi({target:"Reflect",stat:!0,sham:!Vb},{preventExtensions:function(e){TC(e);try{var t=FC("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var BC=gi,zC=x,jC=cn,MC=me,QC=RC,PC=qt,EC=Y,OC=_d,DC=B;var _C=J((function(){var e=function(){},t=PC.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));BC({target:"Reflect",stat:!0,forced:_C},{set:function e(t,n,r){var i,c,o,a=arguments.length<4?t:arguments[3],l=EC.f(jC(t),n);if(!l){if(MC(c=OC(t)))return e(c,n,r,a);l=DC(0)}if(QC(l)){if(!1===l.writable||!MC(a))return!1;if(i=EC.f(a,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,PC.f(a,n,i)}else PC.f(a,n,DC(0,r))}else{if(void 0===(o=l.set))return!1;zC(o,a,r)}return!0}});var qC=cn,$C=Is,ev=Gs;ev&&gi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){qC(e),$C(t);try{return ev(e,t),!0}catch(e){return!1}}});var tv=me,nv=q,rv=Wt("match"),iv=function(e){var t;return tv(e)&&(void 0!==(t=e[rv])?!!t:"RegExp"==nv(e))},cv=cn,ov=function(){var e=cv(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},av=x,lv=lt,uv=Ie,dv=ov,sv=RegExp.prototype,mv=function(e){var t=e.flags;return void 0!==t||"flags"in sv||lv(e,"flags")||!uv(sv,e)?t:av(dv,e)},Zv=J,hv=S.RegExp,bv=Zv((function(){var e=hv("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),pv=bv||Zv((function(){return!hv("a","y").sticky})),Iv=bv||Zv((function(){var e=hv("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),gv={BROKEN_CARET:Iv,MISSED_STICKY:pv,UNSUPPORTED_Y:bv},yv=qt.f,Xv=J,Gv=S.RegExp,fv=Xv((function(){var e=Gv(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),Vv=J,Wv=S.RegExp,Cv=Vv((function(){var e=Wv("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),vv=K,Rv=S,Sv=E,Yv=di,Jv=np,Kv=yn,Lv=Ir.f,Nv=Ie,Hv=iv,xv=Ki,kv=mv,Uv=gv,Av=function(e,t,n){n in e||yv(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})},wv=Xn.exports,Fv=J,Tv=lt,Bv=er.enforce,zv=sZ,jv=fv,Mv=Cv,Qv=Wt("match"),Pv=Rv.RegExp,Ev=Pv.prototype,Ov=Rv.SyntaxError,Dv=Sv(Ev.exec),_v=Sv("".charAt),qv=Sv("".replace),$v=Sv("".indexOf),eR=Sv("".slice),tR=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,nR=/a/g,rR=/a/g,iR=new Pv(nR)!==nR,cR=Uv.MISSED_STICKY,oR=Uv.UNSUPPORTED_Y,aR=vv&&(!iR||cR||jv||Mv||Fv((function(){return rR[Qv]=!1,Pv(nR)!=nR||Pv(rR)==rR||"/a/i"!=Pv(nR,"i")})));if(Yv("RegExp",aR)){for(var lR=function(e,t){var n,r,i,c,o,a,l=Nv(Ev,this),u=Hv(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===lR)return e;if((u||Nv(Ev,e))&&(e=e.source,d&&(t=kv(m))),e=void 0===e?"":xv(e),t=void 0===t?"":xv(t),m=e,jv&&"dotAll"in nR&&(r=!!t&&$v(t,"s")>-1)&&(t=qv(t,/s/g,"")),n=t,cR&&"sticky"in nR&&(i=!!t&&$v(t,"y")>-1)&&oR&&(t=qv(t,/y/g,"")),Mv&&(c=function(e){for(var t,n=e.length,r=0,i="",c=[],o={},a=!1,l=!1,u=0,d="";r<=n;r++){if("\\"===(t=_v(e,r)))t+=_v(e,++r);else if("]"===t)a=!1;else if(!a)switch(!0){case"["===t:a=!0;break;case"("===t:Dv(tR,eR(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||Tv(o,d))throw new Ov("Invalid capture group name");o[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=t:i+=t}return[i,c]}(e),e=c[0],s=c[1]),o=Jv(Pv(e,t),l?this:Ev,lR),(r||i||s.length)&&(a=Bv(o),r&&(a.dotAll=!0,a.raw=lR(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=_v(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+_v(e,++r);return i}(e),n)),i&&(a.sticky=!0),s.length&&(a.groups=s)),e!==m)try{Kv(o,"source",""===m?"(?:)":m)}catch(e){}return o},uR=Lv(Pv),dR=0;uR.length>dR;)Av(lR,Pv,uR[dR++]);Ev.constructor=lR,lR.prototype=Ev,wv(Rv,"RegExp",lR)}zv("RegExp");var sR=x,mR=E,ZR=Ki,hR=ov,bR=gv,pR=Oe.exports,IR=tc,gR=er.get,yR=fv,XR=Cv,GR=pR("native-string-replace",String.prototype.replace),fR=RegExp.prototype.exec,VR=fR,WR=mR("".charAt),CR=mR("".indexOf),vR=mR("".replace),RR=mR("".slice),SR=function(){var e=/a/,t=/b*/g;return sR(fR,e,"a"),sR(fR,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),YR=bR.BROKEN_CARET,JR=void 0!==/()??/.exec("")[1];(SR||JR||YR||yR||XR)&&(VR=function(e){var t,n,r,i,c,o,a,l=this,u=gR(l),d=ZR(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=sR(VR,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,Z=YR&&l.sticky,h=sR(hR,l),b=l.source,p=0,I=d;if(Z&&(h=vR(h,"y",""),-1===CR(h,"g")&&(h+="g"),I=RR(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==WR(d,l.lastIndex-1))&&(b="(?: "+b+")",I=" "+I,p++),n=new RegExp("^(?:"+b+")",h)),JR&&(n=new RegExp("^"+b+"$(?!\\s)",h)),SR&&(r=l.lastIndex),i=sR(fR,Z?n:l,I),Z?i?(i.input=RR(i.input,p),i[0]=RR(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:SR&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),JR&&i&&i.length>1&&sR(GR,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=o=IR(null),c=0;c<m.length;c++)o[(a=m[c])[0]]=i[a[1]];return i});var KR=VR;gi({target:"RegExp",proto:!0,forced:/./.exec!==KR},{exec:KR});var LR=K,NR=qt,HR=ov,xR=J,kR=RegExp.prototype;LR&&xR((function(){return"sy"!==Object.getOwnPropertyDescriptor(kR,"flags").get.call({dotAll:!0,sticky:!0})}))&&NR.f(kR,"flags",{configurable:!0,get:HR});var UR=S,AR=K,wR=gv.MISSED_STICKY,FR=q,TR=qt.f,BR=er.get,zR=RegExp.prototype,jR=UR.TypeError;AR&&wR&&TR(zR,"sticky",{configurable:!0,get:function(){if(this!==zR){if("RegExp"===FR(this))return!!BR(this).sticky;throw jR("Incompatible receiver, RegExp required")}}});var MR,QR,PR=gi,ER=S,OR=x,DR=E,_R=de,qR=me,$R=(MR=!1,(QR=/[ac]/).exec=function(){return MR=!0,/./.exec.apply(this,arguments)},!0===QR.test("abc")&&MR),eS=ER.Error,tS=DR(/./.test);PR({target:"RegExp",proto:!0,forced:!$R},{test:function(e){var t=this.exec;if(!_R(t))return tS(this,e);var n=OR(t,this,e);if(null!==n&&!qR(n))throw new eS("RegExp exec method returned something other than an Object or null");return!!n}});var nS=or.PROPER,rS=Xn.exports,iS=cn,cS=Ki,oS=J,aS=mv,lS="toString",uS=RegExp.prototype.toString,dS=oS((function(){return"/a/b"!=uS.call({source:"a",flags:"b"})})),sS=nS&&uS.name!=lS;(dS||sS)&&rS(RegExp.prototype,lS,(function(){var e=iS(this);return"/"+cS(e.source)+"/"+cS(aS(e))}),{unsafe:!0}),Ip("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Jp);var mS=E,ZS=Xr,hS=Ki,bS=oe,pS=mS("".charAt),IS=mS("".charCodeAt),gS=mS("".slice),yS=function(e){return function(t,n){var r,i,c=hS(bS(t)),o=ZS(n),a=c.length;return o<0||o>=a?e?"":void 0:(r=IS(c,o))<55296||r>56319||o+1===a||(i=IS(c,o+1))<56320||i>57343?e?pS(c,o):r:e?gS(c,o,o+2):i-56320+(r-55296<<10)+65536}},XS={codeAt:yS(!1),charAt:yS(!0)},GS=XS.codeAt;gi({target:"String",proto:!0},{codePointAt:function(e){return GS(this,e)}});var fS,VS=iv,WS=S.TypeError,CS=function(e){if(VS(e))throw WS("The method doesn't accept regular expressions");return e},vS=Wt("match"),RS=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[vS]=!1,"/./"[e](t)}catch(e){}}return!1},SS=gi,YS=E,JS=Y.f,KS=Rr,LS=Ki,NS=CS,HS=oe,xS=RS,kS=YS("".endsWith),US=YS("".slice),AS=Math.min,wS=xS("endsWith");SS({target:"String",proto:!0,forced:!!(wS||(fS=JS(String.prototype,"endsWith"),!fS||fS.writable))&&!wS},{endsWith:function(e){var t=LS(HS(this));NS(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:AS(KS(n),r),c=LS(e);return kS?kS(t,c,i):US(t,i-c.length,i)===c}});var FS=gi,TS=E,BS=Wr,zS=S.RangeError,jS=String.fromCharCode,MS=String.fromCodePoint,QS=TS([].join);FS({target:"String",stat:!0,forced:!!MS&&1!=MS.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],BS(t,1114111)!==t)throw zS(t+" is not a valid code point");n[i]=t<65536?jS(t):jS(55296+((t-=65536)>>10),t%1024+56320)}return QS(n,"")}});var PS=gi,ES=CS,OS=oe,DS=Ki,_S=RS,qS=E("".indexOf);PS({target:"String",proto:!0,forced:!_S("includes")},{includes:function(e){return!!~qS(DS(OS(this)),DS(ES(e)),arguments.length>1?arguments[1]:void 0)}});var $S=XS.charAt,eY=Ki,tY=er,nY=Bs,rY="String Iterator",iY=tY.set,cY=tY.getterFor(rY);nY(String,"String",(function(e){iY(this,{type:rY,string:eY(e),index:0})}),(function(){var e,t=cY(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=$S(n,r),t.index+=e.length,{value:e,done:!1})}));var oY=E,aY=Xn.exports,lY=KR,uY=J,dY=Wt,sY=yn,mY=dY("species"),ZY=RegExp.prototype,hY=function(e,t,n,r){var i=dY(e),c=!uY((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),o=c&&!uY((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[mY]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!o||n){var a=oY(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var o=oY(e),l=t.exec;return l===lY||l===ZY.exec?c&&!i?{done:!0,value:a(t,n,r)}:{done:!0,value:o(n,t,r)}:{done:!1}}));aY(String.prototype,e,l[0]),aY(ZY,i,l[1])}r&&sY(ZY[i],"sham",!0)},bY=XS.charAt,pY=function(e,t,n){return t+(n?bY(e,t).length:1)},IY=x,gY=cn,yY=de,XY=q,GY=KR,fY=S.TypeError,VY=function(e,t){var n=e.exec;if(yY(n)){var r=IY(n,e,t);return null!==r&&gY(r),r}if("RegExp"===XY(e))return IY(GY,e,t);throw fY("RegExp#exec called on incompatible receiver")},WY=x,CY=cn,vY=Rr,RY=Ki,SY=oe,YY=ze,JY=pY,KY=VY;hY("match",(function(e,t,n){return[function(t){var n=SY(this),r=null==t?void 0:YY(t,e);return r?WY(r,t,n):new RegExp(t)[e](RY(n))},function(e){var r=CY(this),i=RY(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return KY(r,i);var o=r.unicode;r.lastIndex=0;for(var a,l=[],u=0;null!==(a=KY(r,i));){var d=RY(a[0]);l[u]=d,""===d&&(r.lastIndex=JY(i,vY(r.lastIndex),o)),u++}return 0===u?null:l}]}));var LY=gi,NY=S,HY=x,xY=E,kY=ms,UY=oe,AY=Rr,wY=Ki,FY=cn,TY=iv,BY=mv,zY=ze,jY=Xn.exports,MY=J,QY=KG,PY=pY,EY=VY,OY=er,DY=Wt("matchAll"),_Y="RegExp String",qY="RegExp String Iterator",$Y=OY.set,eJ=OY.getterFor(qY),tJ=RegExp.prototype,nJ=NY.TypeError,rJ=xY("".indexOf),iJ=xY("".matchAll),cJ=!!iJ&&!MY((function(){iJ("a",/./)})),oJ=kY((function(e,t,n,r){$Y(this,{type:qY,regexp:e,string:t,global:n,unicode:r,done:!1})}),_Y,(function(){var e=eJ(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=EY(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===wY(r[0])&&(t.lastIndex=PY(n,AY(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),aJ=function(e){var t,n,r,i=FY(this),c=wY(e),o=QY(i,RegExp),a=wY(BY(i));return t=new o(o===RegExp?i.source:i,a),n=!!~rJ(a,"g"),r=!!~rJ(a,"u"),t.lastIndex=AY(i.lastIndex),new oJ(t,c,n,r)};LY({target:"String",proto:!0,forced:cJ},{matchAll:function(e){var t,n,r,i=UY(this);if(null!=e){if(TY(e)&&(t=wY(UY(BY(e))),!~rJ(t,"g")))throw nJ("`.matchAll` does not allow non-global regexes");if(cJ)return iJ(i,e);if(r=zY(e,DY))return HY(r,e,i)}else if(cJ)return iJ(i,e);return n=wY(i),new RegExp(e,"g")[DY](n)}}),DY in tJ||jY(tJ,DY,aJ);var lJ=E,uJ=Rr,dJ=Ki,sJ=oe,mJ=lJ(cy),ZJ=lJ("".slice),hJ=Math.ceil,bJ=function(e){return function(t,n,r){var i,c,o=dJ(sJ(t)),a=uJ(n),l=o.length,u=void 0===r?" ":dJ(r);return a<=l||""==u?o:((c=mJ(u,hJ((i=a-l)/u.length))).length>i&&(c=ZJ(c,0,i)),e?o+c:c+o)}},pJ={start:bJ(!1),end:bJ(!0)},IJ=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(ge),gJ=pJ.end;gi({target:"String",proto:!0,forced:IJ},{padEnd:function(e){return gJ(this,e,arguments.length>1?arguments[1]:void 0)}});var yJ=pJ.start;gi({target:"String",proto:!0,forced:IJ},{padStart:function(e){return yJ(this,e,arguments.length>1?arguments[1]:void 0)}});var XJ=gi,GJ=E,fJ=ue,VJ=ct,WJ=Ki,CJ=Yr,vJ=GJ([].push),RJ=GJ([].join);XJ({target:"String",stat:!0},{raw:function(e){for(var t=fJ(VJ(e).raw),n=CJ(t),r=arguments.length,i=[],c=0;n>c;){if(vJ(i,WJ(t[c++])),c===n)return RJ(i,"");c<r&&vJ(i,WJ(arguments[c]))}}}),gi({target:"String",proto:!0},{repeat:cy});var SJ=E,YJ=ct,JJ=Math.floor,KJ=SJ("".charAt),LJ=SJ("".replace),NJ=SJ("".slice),HJ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,xJ=/\$([$&'`]|\d{1,2})/g,kJ=Ba,UJ=x,AJ=E,wJ=hY,FJ=J,TJ=cn,BJ=de,zJ=Xr,jJ=Rr,MJ=Ki,QJ=oe,PJ=pY,EJ=ze,OJ=function(e,t,n,r,i,c){var o=n+e.length,a=r.length,l=xJ;return void 0!==i&&(i=YJ(i),l=HJ),LJ(c,l,(function(c,l){var u;switch(KJ(l,0)){case"$":return"$";case"&":return e;case"`":return NJ(t,0,n);case"'":return NJ(t,o);case"<":u=i[NJ(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>a){var s=JJ(d/10);return 0===s?c:s<=a?void 0===r[s-1]?KJ(l,1):r[s-1]+KJ(l,1):c}u=r[d-1]}return void 0===u?"":u}))},DJ=VY,_J=Wt("replace"),qJ=Math.max,$J=Math.min,eK=AJ([].concat),tK=AJ([].push),nK=AJ("".indexOf),rK=AJ("".slice),iK="$0"==="a".replace(/./,"$0"),cK=!!/./[_J]&&""===/./[_J]("a","$0"),oK=!FJ((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));wJ("replace",(function(e,t,n){var r=cK?"$":"$0";return[function(e,n){var r=QJ(this),i=null==e?void 0:EJ(e,_J);return i?UJ(i,e,r,n):UJ(t,MJ(r),e,n)},function(e,i){var c=TJ(this),o=MJ(e);if("string"==typeof i&&-1===nK(i,r)&&-1===nK(i,"$<")){var a=n(t,c,o,i);if(a.done)return a.value}var l=BJ(i);l||(i=MJ(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=DJ(c,o);if(null===m)break;if(tK(s,m),!u)break;""===MJ(m[0])&&(c.lastIndex=PJ(o,jJ(c.lastIndex),d))}for(var Z,h="",b=0,p=0;p<s.length;p++){for(var I=MJ((m=s[p])[0]),g=qJ($J(zJ(m.index),o.length),0),y=[],X=1;X<m.length;X++)tK(y,void 0===(Z=m[X])?Z:String(Z));var G=m.groups;if(l){var f=eK([I],y,g,o);void 0!==G&&tK(f,G);var V=MJ(kJ(i,void 0,f))}else V=OJ(I,o,g,y,G,i);g>=b&&(h+=rK(o,b,g)+V,b=g+I.length)}return h+rK(o,b)}]}),!oK||!iK||cK);var aK=x,lK=cn,uK=oe,dK=CX,sK=Ki,mK=ze,ZK=VY;hY("search",(function(e,t,n){return[function(t){var n=uK(this),r=null==t?void 0:mK(t,e);return r?aK(r,t,n):new RegExp(t)[e](sK(n))},function(e){var r=lK(this),i=sK(e),c=n(t,r,i);if(c.done)return c.value;var o=r.lastIndex;dK(o,0)||(r.lastIndex=0);var a=ZK(r,i);return dK(r.lastIndex,o)||(r.lastIndex=o),null===a?-1:a.index}]}));var hK=Ba,bK=x,pK=E,IK=hY,gK=iv,yK=cn,XK=oe,GK=KG,fK=pY,VK=Rr,WK=Ki,CK=ze,vK=mc,RK=VY,SK=KR,YK=J,JK=gv.UNSUPPORTED_Y,KK=4294967295,LK=Math.min,NK=[].push,HK=pK(/./.exec),xK=pK(NK),kK=pK("".slice),UK=!YK((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));IK("split",(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=WK(XK(this)),i=void 0===n?KK:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!gK(e))return bK(t,r,e,i);for(var c,o,a,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,s=new RegExp(e.source,u+"g");(c=bK(SK,s,r))&&!((o=s.lastIndex)>d&&(xK(l,kK(r,d,c.index)),c.length>1&&c.index<r.length&&hK(NK,l,vK(c,1)),a=c[0].length,d=o,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!a&&HK(s,"")||xK(l,""):xK(l,kK(r,d)),l.length>i?vK(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:bK(t,this,e,n)}:t,[function(t,n){var i=XK(this),c=null==t?void 0:CK(t,e);return c?bK(c,t,i,n):bK(r,WK(i),t,n)},function(e,i){var c=yK(this),o=WK(e),a=n(r,c,o,i,r!==t);if(a.done)return a.value;var l=GK(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(JK?"g":"y"),s=new l(JK?"^(?:"+c.source+")":c,d),m=void 0===i?KK:i>>>0;if(0===m)return[];if(0===o.length)return null===RK(s,o)?[o]:[];for(var Z=0,h=0,b=[];h<o.length;){s.lastIndex=JK?0:h;var p,I=RK(s,JK?kK(o,h):o);if(null===I||(p=LK(VK(s.lastIndex+(JK?h:0)),o.length))===Z)h=fK(o,h,u);else{if(xK(b,kK(o,Z,h)),b.length===m)return b;for(var g=1;g<=I.length-1;g++)if(xK(b,I[g]),b.length===m)return b;h=Z=p}}return xK(b,kK(o,Z)),b}]}),!UK,JK);var AK=gi,wK=E,FK=Y.f,TK=Rr,BK=Ki,zK=CS,jK=oe,MK=RS,QK=wK("".startsWith),PK=wK("".slice),EK=Math.min,OK=MK("startsWith"),DK=!OK&&!!function(){var e=FK(String.prototype,"startsWith");return e&&!e.writable}();AK({target:"String",proto:!0,forced:!DK&&!OK},{startsWith:function(e){var t=BK(jK(this));zK(e);var n=TK(EK(arguments.length>1?arguments[1]:void 0,t.length)),r=BK(e);return QK?QK(t,r,n):PK(t,n,n+r.length)===r}});var _K=or.PROPER,qK=J,$K=zI,eL=function(e){return qK((function(){return!!$K[e]()||"​…᠎"!=="​…᠎"[e]()||_K&&$K[e].name!==e}))},tL=_I.trim;gi({target:"String",proto:!0,forced:eL("trim")},{trim:function(){return tL(this)}});var nL=_I.end,rL=eL("trimEnd")?function(){return nL(this)}:"".trimEnd;gi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==rL},{trimRight:rL});gi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==rL},{trimEnd:rL});var iL=_I.start,cL=eL("trimStart")?function(){return iL(this)}:"".trimStart;gi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==cL},{trimLeft:cL});gi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==cL},{trimStart:cL});var oL=oe,aL=Ki,lL=/"/g,uL=E("".replace),dL=function(e,t,n,r){var i=aL(oL(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+uL(aL(r),lL,"&quot;")+'"'),c+">"+i+"</"+t+">"},sL=J,mL=function(e){return sL((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},ZL=dL;gi({target:"String",proto:!0,forced:mL("anchor")},{anchor:function(e){return ZL(this,"a","name",e)}});var hL=dL;gi({target:"String",proto:!0,forced:mL("big")},{big:function(){return hL(this,"big","","")}});var bL=dL;gi({target:"String",proto:!0,forced:mL("blink")},{blink:function(){return bL(this,"blink","","")}});var pL=dL;gi({target:"String",proto:!0,forced:mL("bold")},{bold:function(){return pL(this,"b","","")}});var IL=dL;gi({target:"String",proto:!0,forced:mL("fixed")},{fixed:function(){return IL(this,"tt","","")}});var gL=dL;gi({target:"String",proto:!0,forced:mL("fontcolor")},{fontcolor:function(e){return gL(this,"font","color",e)}});var yL=dL;gi({target:"String",proto:!0,forced:mL("fontsize")},{fontsize:function(e){return yL(this,"font","size",e)}});var XL=dL;gi({target:"String",proto:!0,forced:mL("italics")},{italics:function(){return XL(this,"i","","")}});var GL=dL;gi({target:"String",proto:!0,forced:mL("link")},{link:function(e){return GL(this,"a","href",e)}});var fL=dL;gi({target:"String",proto:!0,forced:mL("small")},{small:function(){return fL(this,"small","","")}});var VL=dL;gi({target:"String",proto:!0,forced:mL("strike")},{strike:function(){return VL(this,"strike","","")}});var WL=dL;gi({target:"String",proto:!0,forced:mL("sub")},{sub:function(){return WL(this,"sub","","")}});var CL=dL;gi({target:"String",proto:!0,forced:mL("sup")},{sup:function(){return CL(this,"sup","","")}});var vL,RL,SL,YL={exports:{}},JL=vZ,KL=K,LL=S,NL=de,HL=me,xL=lt,kL=Si,UL=Ue,AL=yn,wL=Xn.exports,FL=qt.f,TL=Ie,BL=_d,zL=Gs,jL=Wt,ML=Zt,QL=LL.Int8Array,PL=QL&&QL.prototype,EL=LL.Uint8ClampedArray,OL=EL&&EL.prototype,DL=QL&&BL(QL),_L=PL&&BL(PL),qL=Object.prototype,$L=LL.TypeError,eN=jL("toStringTag"),tN=ML("TYPED_ARRAY_TAG"),nN=ML("TYPED_ARRAY_CONSTRUCTOR"),rN=JL&&!!zL&&"Opera"!==kL(LL.opera),iN=!1,cN={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},oN={BigInt64Array:8,BigUint64Array:8},aN=function(e){if(!HL(e))return!1;var t=kL(e);return xL(cN,t)||xL(oN,t)};for(vL in cN)(SL=(RL=LL[vL])&&RL.prototype)?AL(SL,nN,RL):rN=!1;for(vL in oN)(SL=(RL=LL[vL])&&RL.prototype)&&AL(SL,nN,RL);if((!rN||!NL(DL)||DL===Function.prototype)&&(DL=function(){throw $L("Incorrect invocation")},rN))for(vL in cN)LL[vL]&&zL(LL[vL],DL);if((!rN||!_L||_L===qL)&&(_L=DL.prototype,rN))for(vL in cN)LL[vL]&&zL(LL[vL].prototype,_L);if(rN&&BL(OL)!==_L&&zL(OL,_L),KL&&!xL(_L,eN))for(vL in iN=!0,FL(_L,eN,{get:function(){return HL(this)?this[tN]:void 0}}),cN)LL[vL]&&AL(LL[vL],tN,vL);var lN={NATIVE_ARRAY_BUFFER_VIEWS:rN,TYPED_ARRAY_CONSTRUCTOR:nN,TYPED_ARRAY_TAG:iN&&tN,aTypedArray:function(e){if(aN(e))return e;throw $L("Target is not a typed array")},aTypedArrayConstructor:function(e){if(NL(e)&&(!zL||TL(DL,e)))return e;throw $L(UL(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(KL){if(n)for(var i in cN){var c=LL[i];if(c&&xL(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}_L[e]&&!n||wL(_L,e,n?t:rN&&PL[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(KL){if(zL){if(n)for(r in cN)if((i=LL[r])&&xL(i,e))try{delete i[e]}catch(e){}if(DL[e]&&!n)return;try{return wL(DL,e,n?t:rN&&DL[e]||t)}catch(e){}}for(r in cN)!(i=LL[r])||i[e]&&!n||wL(i,e,t)}},isView:function(e){if(!HL(e))return!1;var t=kL(e);return"DataView"===t||xL(cN,t)||xL(oN,t)},isTypedArray:aN,TypedArray:DL,TypedArrayPrototype:_L},uN=S,dN=J,sN=xd,mN=lN.NATIVE_ARRAY_BUFFER_VIEWS,ZN=uN.ArrayBuffer,hN=uN.Int8Array,bN=!mN||!dN((function(){hN(1)}))||!dN((function(){new hN(-1)}))||!sN((function(e){new hN,new hN(null),new hN(1.5),new hN(e)}),!0)||dN((function(){return 1!==new hN(new ZN(2),1,void 0).length})),pN=Xr,IN=S.RangeError,gN=function(e){var t=pN(e);if(t<0)throw IN("The argument can't be less than 0");return t},yN=S.RangeError,XN=function(e,t){var n=gN(e);if(n%t)throw yN("Wrong offset");return n},GN=Uc,fN=x,VN=RG,WN=ct,CN=Yr,vN=gd,RN=sd,SN=od,YN=lN.aTypedArrayConstructor,JN=function(e){var t,n,r,i,c,o,a=VN(this),l=WN(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=RN(l);if(m&&!SN(m))for(o=(c=vN(l,m)).next,l=[];!(i=fN(o,c)).done;)l.push(i.value);for(s&&u>2&&(d=GN(d,arguments[2])),n=CN(l),r=new(YN(a))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},KN=gi,LN=S,NN=x,HN=K,xN=bN,kN=lN,UN=zh,AN=KZ,wN=B,FN=yn,TN=Yg,BN=Rr,zN=xZ,jN=XN,MN=kt,QN=lt,PN=Si,EN=me,ON=xe,DN=tc,_N=Ie,qN=Gs,$N=Ir.f,eH=JN,tH=po.forEach,nH=sZ,rH=qt,iH=Y,cH=np,oH=er.get,aH=er.set,lH=rH.f,uH=iH.f,dH=Math.round,sH=LN.RangeError,mH=UN.ArrayBuffer,ZH=mH.prototype,hH=UN.DataView,bH=kN.NATIVE_ARRAY_BUFFER_VIEWS,pH=kN.TYPED_ARRAY_CONSTRUCTOR,IH=kN.TYPED_ARRAY_TAG,gH=kN.TypedArray,yH=kN.TypedArrayPrototype,XH=kN.aTypedArrayConstructor,GH=kN.isTypedArray,fH="BYTES_PER_ELEMENT",VH="Wrong length",WH=function(e,t){XH(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},CH=function(e,t){lH(e,t,{get:function(){return oH(this)[t]}})},vH=function(e){var t;return _N(ZH,e)||"ArrayBuffer"==(t=PN(e))||"SharedArrayBuffer"==t},RH=function(e,t){return GH(e)&&!ON(t)&&t in e&&TN(+t)&&t>=0},SH=function(e,t){return t=MN(t),RH(e,t)?wN(2,e[t]):uH(e,t)},YH=function(e,t,n){return t=MN(t),!(RH(e,t)&&EN(n)&&QN(n,"value"))||QN(n,"get")||QN(n,"set")||n.configurable||QN(n,"writable")&&!n.writable||QN(n,"enumerable")&&!n.enumerable?lH(e,t,n):(e[t]=n.value,e)};HN?(bH||(iH.f=SH,rH.f=YH,CH(yH,"buffer"),CH(yH,"byteOffset"),CH(yH,"byteLength"),CH(yH,"length")),KN({target:"Object",stat:!0,forced:!bH},{getOwnPropertyDescriptor:SH,defineProperty:YH}),YL.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,o="set"+e,a=LN[i],l=a,u=l&&l.prototype,d={},s=function(e,t){lH(e,t,{get:function(){return function(e,t){var n=oH(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=oH(e);n&&(i=(i=dH(i))<0?0:i>255?255:255&i),c.view[o](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};bH?xN&&(l=t((function(e,t,n,i){return AN(e,u),cH(EN(t)?vH(t)?void 0!==i?new a(t,jN(n,r),i):void 0!==n?new a(t,jN(n,r)):new a(t):GH(t)?WH(l,t):NN(eH,l,t):new a(zN(t)),e,l)})),qN&&qN(l,gH),tH($N(a),(function(e){e in l||FN(l,e,a[e])})),l.prototype=u):(l=t((function(e,t,n,i){AN(e,u);var c,o,a,d=0,m=0;if(EN(t)){if(!vH(t))return GH(t)?WH(l,t):NN(eH,l,t);c=t,m=jN(n,r);var Z=t.byteLength;if(void 0===i){if(Z%r)throw sH(VH);if((o=Z-m)<0)throw sH(VH)}else if((o=BN(i)*r)+m>Z)throw sH(VH);a=o/r}else a=zN(t),c=new mH(o=a*r);for(aH(e,{buffer:c,byteOffset:m,byteLength:o,length:a,view:new hH(c)});d<a;)s(e,d++)})),qN&&qN(l,gH),u=l.prototype=DN(yH)),u.constructor!==l&&FN(u,"constructor",l),FN(u,pH,l),IH&&FN(u,IH,i),d[i]=l,KN({global:!0,forced:l!=a,sham:!bH},d),fH in l||FN(l,fH,r),fH in u||FN(u,fH,r),nH(i)}):YL.exports=function(){},(0,YL.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,YL.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,YL.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var JH=lN,KH=E(mu),LH=JH.aTypedArray;(0,JH.exportTypedArrayMethod)("copyWithin",(function(e,t){return KH(LH(this),e,t,arguments.length>2?arguments[2]:void 0)}));var NH=po.every,HH=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("every",(function(e){return NH(HH(this),e,arguments.length>1?arguments[1]:void 0)}));var xH=x,kH=fu,UH=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return xH(kH,UH(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var AH=Yr,wH=KG,FH=lN.TYPED_ARRAY_CONSTRUCTOR,TH=lN.aTypedArrayConstructor,BH=function(e){return TH(wH(e,e[FH]))},zH=function(e,t){for(var n=0,r=AH(t),i=new e(r);r>n;)i[n]=t[n++];return i},jH=BH,MH=po.filter,QH=function(e,t){return zH(jH(e),t)},PH=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("filter",(function(e){var t=MH(PH(this),e,arguments.length>1?arguments[1]:void 0);return QH(this,t)}));var EH=po.find,OH=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("find",(function(e){return EH(OH(this),e,arguments.length>1?arguments[1]:void 0)}));var DH=po.findIndex,_H=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("findIndex",(function(e){return DH(_H(this),e,arguments.length>1?arguments[1]:void 0)}));var qH=po.forEach,$H=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("forEach",(function(e){qH($H(this),e,arguments.length>1?arguments[1]:void 0)})),(0,lN.exportTypedArrayStaticMethod)("from",JN,bN);var ex=Hr.includes,tx=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("includes",(function(e){return ex(tx(this),e,arguments.length>1?arguments[1]:void 0)}));var nx=Hr.indexOf,rx=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("indexOf",(function(e){return nx(rx(this),e,arguments.length>1?arguments[1]:void 0)}));var ix=S,cx=J,ox=E,ax=lN,lx=$s,ux=Wt("iterator"),dx=ix.Uint8Array,sx=ox(lx.values),mx=ox(lx.keys),Zx=ox(lx.entries),hx=ax.aTypedArray,bx=ax.exportTypedArrayMethod,px=dx&&dx.prototype,Ix=!cx((function(){px[ux].call([1])})),gx=!!px&&px.values&&px[ux]===px.values&&"values"===px.values.name,yx=function(){return sx(hx(this))};bx("entries",(function(){return Zx(hx(this))}),Ix),bx("keys",(function(){return mx(hx(this))}),Ix),bx("values",yx,Ix||!gx,{name:"values"}),bx(ux,yx,Ix||!gx,{name:"values"});var Xx=lN.aTypedArray,Gx=lN.exportTypedArrayMethod,fx=E([].join);Gx("join",(function(e){return fx(Xx(this),e)}));var Vx=Ba,Wx=ue,Cx=Xr,vx=Yr,Rx=nm,Sx=Math.min,Yx=[].lastIndexOf,Jx=!!Yx&&1/[1].lastIndexOf(1,-0)<0,Kx=Rx("lastIndexOf"),Lx=Jx||!Kx?function(e){if(Jx)return Vx(Yx,this,arguments)||0;var t=Wx(this),n=vx(t),r=n-1;for(arguments.length>1&&(r=Sx(r,Cx(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:Yx,Nx=Ba,Hx=Lx,xx=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return Nx(Hx,xx(this),t>1?[e,arguments[1]]:[e])}));var kx=po.map,Ux=BH,Ax=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("map",(function(e){return kx(Ax(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(Ux(e))(t)}))}));var wx=lN.aTypedArrayConstructor;(0,lN.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(wx(this))(t);t>e;)n[e]=arguments[e++];return n}),bN);var Fx=Te,Tx=ct,Bx=ie,zx=Yr,jx=S.TypeError,Mx=function(e){return function(t,n,r,i){Fx(n);var c=Tx(t),o=Bx(c),a=zx(c),l=e?a-1:0,u=e?-1:1;if(r<2)for(;;){if(l in o){i=o[l],l+=u;break}if(l+=u,e?l<0:a<=l)throw jx("Reduce of empty array with no initial value")}for(;e?l>=0:a>l;l+=u)l in o&&(i=n(i,o[l],l,c));return i}},Qx={left:Mx(!1),right:Mx(!0)},Px=Qx.left,Ex=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return Px(Ex(this),e,t,t>1?arguments[1]:void 0)}));var Ox=Qx.right,Dx=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return Ox(Dx(this),e,t,t>1?arguments[1]:void 0)}));var _x=lN.aTypedArray,qx=lN.exportTypedArrayMethod,$x=Math.floor;qx("reverse",(function(){for(var e,t=this,n=_x(t).length,r=$x(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var ek=S,tk=x,nk=lN,rk=Yr,ik=XN,ck=ct,ok=J,ak=ek.RangeError,lk=ek.Int8Array,uk=lk&&lk.prototype,dk=uk&&uk.set,sk=nk.aTypedArray,mk=nk.exportTypedArrayMethod,Zk=!ok((function(){var e=new Uint8ClampedArray(2);return tk(dk,e,{length:1,0:3},1),3!==e[1]})),hk=Zk&&nk.NATIVE_ARRAY_BUFFER_VIEWS&&ok((function(){var e=new lk(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));mk("set",(function(e){sk(this);var t=ik(arguments.length>1?arguments[1]:void 0,1),n=ck(e);if(Zk)return tk(dk,this,n,t);var r=this.length,i=rk(n),c=0;if(i+t>r)throw ak("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!Zk||hk);var bk=BH,pk=za,Ik=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("slice",(function(e,t){for(var n=pk(Ik(this),e,t),r=bk(this),i=0,c=n.length,o=new r(c);c>i;)o[i]=n[i++];return o}),J((function(){new Int8Array(1).slice()})));var gk=po.some,yk=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("some",(function(e){return gk(yk(this),e,arguments.length>1?arguments[1]:void 0)}));var Xk=E,Gk=J,fk=Te,Vk=xm,Wk=Um,Ck=Am,vk=Ce,Rk=Fm,Sk=lN.aTypedArray,Yk=lN.exportTypedArrayMethod,Jk=S.Uint16Array,Kk=Jk&&Xk(Jk.prototype.sort),Lk=!(!Kk||Gk((function(){Kk(new Jk(2),null)}))&&Gk((function(){Kk(new Jk(2),{})}))),Nk=!!Kk&&!Gk((function(){if(vk)return vk<74;if(Wk)return Wk<67;if(Ck)return!0;if(Rk)return Rk<602;var e,t,n=new Jk(516),r=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(Kk(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));Yk("sort",(function(e){return void 0!==e&&fk(e),Nk?Kk(this,e):Vk(Sk(this),function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!Nk||Lk);var Hk=Rr,xk=Wr,kk=BH,Uk=lN.aTypedArray;(0,lN.exportTypedArrayMethod)("subarray",(function(e,t){var n=Uk(this),r=n.length,i=xk(e,r);return new(kk(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,Hk((void 0===t?r:xk(t,r))-i))}));var Ak=Ba,wk=lN,Fk=J,Tk=za,Bk=S.Int8Array,zk=wk.aTypedArray,jk=wk.exportTypedArrayMethod,Mk=[].toLocaleString,Qk=!!Bk&&Fk((function(){Mk.call(new Bk(1))}));jk("toLocaleString",(function(){return Ak(Mk,Qk?Tk(zk(this)):zk(this),Tk(arguments))}),Fk((function(){return[1,2].toLocaleString()!=new Bk([1,2]).toLocaleString()}))||!Fk((function(){Bk.prototype.toLocaleString.call([1,2])})));var Pk=lN.exportTypedArrayMethod,Ek=J,Ok=E,Dk=S.Uint8Array,_k=Dk&&Dk.prototype||{},qk=[].toString,$k=Ok([].join);Ek((function(){qk.call({})}))&&(qk=function(){return $k(this)});var eU=_k.toString!=qk;Pk("toString",qk,eU);var tU=E,nU=SZ,rU=bb.exports.getWeakData,iU=cn,cU=me,oU=KZ,aU=qb,lU=lt,uU=er.set,dU=er.getterFor,sU=po.find,mU=po.findIndex,ZU=tU([].splice),hU=0,bU=function(e){return e.frozen||(e.frozen=new pU)},pU=function(){this.entries=[]},IU=function(e,t){return sU(e.entries,(function(e){return e[0]===t}))};pU.prototype={get:function(e){var t=IU(this,e);if(t)return t[1]},has:function(e){return!!IU(this,e)},set:function(e,t){var n=IU(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=mU(this.entries,(function(t){return t[0]===e}));return~t&&ZU(this.entries,t,1),!!~t}};var gU,yU={getConstructor:function(e,t,n,r){var i=e((function(e,i){oU(e,c),uU(e,{type:t,id:hU++,frozen:void 0}),null!=i&&aU(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=dU(t),a=function(e,t,n){var r=o(e),i=rU(iU(t),!0);return!0===i?bU(r).set(t,n):i[r.id]=n,e};return nU(c,{delete:function(e){var t=o(this);if(!cU(e))return!1;var n=rU(e);return!0===n?bU(t).delete(e):n&&lU(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!cU(e))return!1;var n=rU(e);return!0===n?bU(t).has(e):n&&lU(n,t.id)}}),nU(c,n?{get:function(e){var t=o(this);if(cU(e)){var n=rU(e);return!0===n?bU(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return a(this,e,t)}}:{add:function(e){return a(this,e,!0)}}),i}},XU=S,GU=E,fU=SZ,VU=bb.exports,WU=Ip,CU=yU,vU=me,RU=fb,SU=er.enforce,YU=Kn,JU=!XU.ActiveXObject&&"ActiveXObject"in XU,KU=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},LU=WU("WeakMap",KU,CU);if(YU&&JU){gU=CU.getConstructor(KU,"WeakMap",!0),VU.enable();var NU=LU.prototype,HU=GU(NU.delete),xU=GU(NU.has),kU=GU(NU.get),UU=GU(NU.set);fU(NU,{delete:function(e){if(vU(e)&&!RU(e)){var t=SU(this);return t.frozen||(t.frozen=new gU),HU(this,e)||t.frozen.delete(e)}return HU(this,e)},has:function(e){if(vU(e)&&!RU(e)){var t=SU(this);return t.frozen||(t.frozen=new gU),xU(this,e)||t.frozen.has(e)}return xU(this,e)},get:function(e){if(vU(e)&&!RU(e)){var t=SU(this);return t.frozen||(t.frozen=new gU),xU(this,e)?kU(this,e):t.frozen.get(e)}return kU(this,e)},set:function(e,t){if(vU(e)&&!RU(e)){var n=SU(this);n.frozen||(n.frozen=new gU),xU(this,e)?UU(this,e,t):n.frozen.set(e,t)}else UU(this,e,t);return this}})}Ip("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),yU);var AU={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},wU=Ft("span").classList,FU=wU&&wU.constructor&&wU.constructor.prototype,TU=FU===Object.prototype?void 0:FU,BU=po.forEach,zU=nm("forEach")?[].forEach:function(e){return BU(this,e,arguments.length>1?arguments[1]:void 0)},jU=S,MU=AU,QU=TU,PU=zU,EU=yn,OU=function(e){if(e&&e.forEach!==PU)try{EU(e,"forEach",PU)}catch(t){e.forEach=PU}};for(var DU in MU)MU[DU]&&OU(jU[DU]&&jU[DU].prototype);OU(QU);var _U=S,qU=AU,$U=TU,eA=$s,tA=yn,nA=Wt,rA=nA("iterator"),iA=nA("toStringTag"),cA=eA.values,oA=function(e,t){if(e){if(e[rA]!==cA)try{tA(e,rA,cA)}catch(t){e[rA]=cA}if(e[iA]||tA(e,iA,t),qU[t])for(var n in eA)if(e[n]!==eA[n])try{tA(e,n,eA[n])}catch(t){e[n]=eA[n]}}};for(var aA in qU)oA(_U[aA]&&_U[aA].prototype,aA);oA($U,"DOMTokenList");var lA=pf.clear;gi({global:!0,bind:!0,enumerable:!0,forced:S.clearImmediate!==lA},{clearImmediate:lA});var uA=pf.set;gi({global:!0,bind:!0,enumerable:!0,forced:S.setImmediate!==uA},{setImmediate:uA});var dA=gi,sA=Hf,mA=Te,ZA=NG,hA=VG,bA=S.process;dA({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){ZA(arguments.length,1),mA(e);var t=hA&&bA.domain;sA(t?t.bind(e):e)}});var pA=J,IA=Wt("iterator"),gA=!pA((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[IA]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),yA=E,XA=2147483647,GA=/[^\0-\u007E]/,fA=/[.\u3002\uFF0E\uFF61]/g,VA="Overflow: input needs wider integers to process",WA=S.RangeError,CA=yA(fA.exec),vA=Math.floor,RA=String.fromCharCode,SA=yA("".charCodeAt),YA=yA([].join),JA=yA([].push),KA=yA("".replace),LA=yA("".split),NA=yA("".toLowerCase),HA=function(e){return e+22+75*(e<26)},xA=function(e,t,n){var r=0;for(e=n?vA(e/700):e>>1,e+=vA(e/t);e>455;)e=vA(e/35),r+=36;return vA(r+36*e/(e+38))},kA=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=SA(e,n++);if(i>=55296&&i<=56319&&n<r){var c=SA(e,n++);56320==(64512&c)?JA(t,((1023&i)<<10)+(1023&c)+65536):(JA(t,i),n--)}else JA(t,i)}return t}(e);var n,r,i=e.length,c=128,o=0,a=72;for(n=0;n<e.length;n++)(r=e[n])<128&&JA(t,RA(r));var l=t.length,u=l;for(l&&JA(t,"-");u<i;){var d=XA;for(n=0;n<e.length;n++)(r=e[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>vA((XA-o)/s))throw WA(VA);for(o+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++o>XA)throw WA(VA);if(r==c){for(var m=o,Z=36;;){var h=Z<=a?1:Z>=a+26?26:Z-a;if(m<h)break;var b=m-h,p=36-h;JA(t,RA(HA(h+b%p))),m=vA(b/p),Z+=36}JA(t,RA(HA(m))),a=xA(o,s,u==l),o=0,u++}}o++,c++}return YA(t,"")},UA=gi,AA=S,wA=x,FA=E,TA=K,BA=gA,zA=Xn.exports,jA=SZ,MA=Nc,QA=ms,PA=er,EA=KZ,OA=de,DA=lt,_A=Uc,qA=Si,$A=cn,ew=me,tw=Ki,nw=tc,rw=B,iw=gd,cw=sd,ow=NG,aw=xm,lw=Wt("iterator"),uw="URLSearchParams",dw="URLSearchParamsIterator",sw=PA.set,mw=PA.getterFor(uw),Zw=PA.getterFor(dw),hw=Object.getOwnPropertyDescriptor,bw=function(e){if(!TA)return AA[e];var t=hw(AA,e);return t&&t.value},pw=bw("fetch"),Iw=bw("Request"),gw=bw("Headers"),yw=Iw&&Iw.prototype,Xw=gw&&gw.prototype,Gw=AA.RegExp,fw=AA.TypeError,Vw=AA.decodeURIComponent,Ww=AA.encodeURIComponent,Cw=FA("".charAt),vw=FA([].join),Rw=FA([].push),Sw=FA("".replace),Yw=FA([].shift),Jw=FA([].splice),Kw=FA("".split),Lw=FA("".slice),Nw=/\+/g,Hw=Array(4),xw=function(e){return Hw[e-1]||(Hw[e-1]=Gw("((?:%[\\da-f]{2}){"+e+"})","gi"))},kw=function(e){try{return Vw(e)}catch(t){return e}},Uw=function(e){var t=Sw(e,Nw," "),n=4;try{return Vw(t)}catch(e){for(;n;)t=Sw(t,xw(n--),kw);return t}},Aw=/[!'()~]|%20/g,ww={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Fw=function(e){return ww[e]},Tw=function(e){return Sw(Ww(e),Aw,Fw)},Bw=QA((function(e,t){sw(this,{type:dw,iterator:iw(mw(e).entries),kind:t})}),"Iterator",(function(){var e=Zw(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),zw=function(e){this.entries=[],this.url=null,void 0!==e&&(ew(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Cw(e,0)?Lw(e,1):e:tw(e)))};zw.prototype={type:uw,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,o,a,l=cw(e);if(l)for(n=(t=iw(e,l)).next;!(r=wA(n,t)).done;){if(c=(i=iw($A(r.value))).next,(o=wA(c,i)).done||(a=wA(c,i)).done||!wA(c,i).done)throw fw("Expected sequence with length 2");Rw(this.entries,{key:tw(o.value),value:tw(a.value)})}else for(var u in e)DA(e,u)&&Rw(this.entries,{key:u,value:tw(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=Kw(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=Kw(t,"="),Rw(this.entries,{key:Uw(Yw(n)),value:Uw(vw(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],Rw(n,Tw(e.key)+"="+Tw(e.value));return vw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var jw=function(){EA(this,Mw);var e=arguments.length>0?arguments[0]:void 0;sw(this,new zw(e))},Mw=jw.prototype;if(jA(Mw,{append:function(e,t){ow(arguments.length,2);var n=mw(this);Rw(n.entries,{key:tw(e),value:tw(t)}),n.updateURL()},delete:function(e){ow(arguments.length,1);for(var t=mw(this),n=t.entries,r=tw(e),i=0;i<n.length;)n[i].key===r?Jw(n,i,1):i++;t.updateURL()},get:function(e){ow(arguments.length,1);for(var t=mw(this).entries,n=tw(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){ow(arguments.length,1);for(var t=mw(this).entries,n=tw(e),r=[],i=0;i<t.length;i++)t[i].key===n&&Rw(r,t[i].value);return r},has:function(e){ow(arguments.length,1);for(var t=mw(this).entries,n=tw(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){ow(arguments.length,1);for(var n,r=mw(this),i=r.entries,c=!1,o=tw(e),a=tw(t),l=0;l<i.length;l++)(n=i[l]).key===o&&(c?Jw(i,l--,1):(c=!0,n.value=a));c||Rw(i,{key:o,value:a}),r.updateURL()},sort:function(){var e=mw(this);aw(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=mw(this).entries,r=_A(e,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new Bw(this,"keys")},values:function(){return new Bw(this,"values")},entries:function(){return new Bw(this,"entries")}},{enumerable:!0}),zA(Mw,lw,Mw.entries,{name:"entries"}),zA(Mw,"toString",(function(){return mw(this).serialize()}),{enumerable:!0}),MA(jw,uw),UA({global:!0,forced:!BA},{URLSearchParams:jw}),!BA&&OA(gw)){var Qw=FA(Xw.has),Pw=FA(Xw.set),Ew=function(e){if(ew(e)){var t,n=e.body;if(qA(n)===uw)return t=e.headers?new gw(e.headers):new gw,Qw(t,"content-type")||Pw(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),nw(e,{body:rw(0,tw(n)),headers:rw(0,t)})}return e};if(OA(pw)&&UA({global:!0,enumerable:!0,noTargetGet:!0,forced:!0},{fetch:function(e){return pw(e,arguments.length>1?Ew(arguments[1]):{})}}),OA(Iw)){var Ow=function(e){return EA(this,yw),new Iw(e,arguments.length>1?Ew(arguments[1]):{})};yw.constructor=Ow,Ow.prototype=yw,UA({global:!0,forced:!0,noTargetGet:!0},{Request:Ow})}}var Dw,_w={URLSearchParams:jw,getState:mw},qw=gi,$w=K,eF=gA,tF=S,nF=Uc,rF=E,iF=Li.f,cF=Xn.exports,oF=KZ,aF=lt,lF=xy,uF=Jd,dF=mc,sF=XS.codeAt,mF=function(e){var t,n,r=[],i=LA(KA(NA(e),fA,"."),".");for(t=0;t<i.length;t++)n=i[t],JA(r,CA(GA,n)?"xn--"+kA(n):n);return YA(r,".")},ZF=Ki,hF=Nc,bF=NG,pF=_w,IF=er,gF=IF.set,yF=IF.getterFor("URL"),XF=pF.URLSearchParams,GF=pF.getState,fF=tF.URL,VF=tF.TypeError,WF=tF.parseInt,CF=Math.floor,vF=Math.pow,RF=rF("".charAt),SF=rF(/./.exec),YF=rF([].join),JF=rF(1..toString),KF=rF([].pop),LF=rF([].push),NF=rF("".replace),HF=rF([].shift),xF=rF("".split),kF=rF("".slice),UF=rF("".toLowerCase),AF=rF([].unshift),wF="Invalid scheme",FF="Invalid host",TF="Invalid port",BF=/[a-z]/i,zF=/[\d+-.a-z]/i,jF=/\d/,MF=/^0x/i,QF=/^[0-7]+$/,PF=/^\d+$/,EF=/^[\da-f]+$/i,OF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,DF=/[\0\t\n\r #/:<>?@[\\\]^|]/,_F=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,qF=/[\t\n\r]/g,$F=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)AF(t,e%256),e=CF(e/256);return YF(t,".")}if("object"==o(e)){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,c=0;c<8;c++)0!==e[c]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=JF(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},eT={},tT=lF({},eT,{" ":1,'"':1,"<":1,">":1,"`":1}),nT=lF({},tT,{"#":1,"?":1,"{":1,"}":1}),rT=lF({},nT,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),iT=function(e,t){var n=sF(e,0);return n>32&&n<127&&!aF(t,e)?e:encodeURIComponent(e)},cT={ftp:21,file:null,http:80,https:443,ws:80,wss:443},oT=function(e,t){var n;return 2==e.length&&SF(BF,RF(e,0))&&(":"==(n=RF(e,1))||!t&&"|"==n)},aT=function(e){var t;return e.length>1&&oT(kF(e,0,2))&&(2==e.length||"/"===(t=RF(e,2))||"\\"===t||"?"===t||"#"===t)},lT=function(e){return"."===e||"%2e"===UF(e)},uT={},dT={},sT={},mT={},ZT={},hT={},bT={},pT={},IT={},gT={},yT={},XT={},GT={},fT={},VT={},WT={},CT={},vT={},RT={},ST={},YT={},JT=function e(t,n,r){var i,c,o,a=ZF(t);if(n){if(c=this.parse(a))throw VF(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(a,null,i))throw VF(c);(o=GF(new XF)).bindURL(this),this.searchParams=o}};JT.prototype={type:"URL",parse:function(e,t,n){var r,i,c,o,a,l=this,u=t||uT,d=0,s="",m=!1,Z=!1,h=!1;for(e=ZF(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=NF(e,_F,"")),e=NF(e,qF,""),r=uF(e);d<=r.length;){switch(i=r[d],u){case uT:if(!i||!SF(BF,i)){if(t)return wF;u=sT;continue}s+=UF(i),u=dT;break;case dT:if(i&&(SF(zF,i)||"+"==i||"-"==i||"."==i))s+=UF(i);else{if(":"!=i){if(t)return wF;s="",u=sT,d=0;continue}if(t&&(l.isSpecial()!=aF(cT,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&cT[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=fT:l.isSpecial()&&n&&n.scheme==l.scheme?u=mT:l.isSpecial()?u=pT:"/"==r[d+1]?(u=ZT,d++):(l.cannotBeABaseURL=!0,LF(l.path,""),u=RT)}break;case sT:if(!n||n.cannotBeABaseURL&&"#"!=i)return wF;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=dF(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=YT;break}u="file"==n.scheme?fT:hT;continue;case mT:if("/"!=i||"/"!=r[d+1]){u=hT;continue}u=IT,d++;break;case ZT:if("/"==i){u=gT;break}u=vT;continue;case hT:if(l.scheme=n.scheme,i==Dw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=bT;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query="",u=ST;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.path.length--,u=vT;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query=n.query,l.fragment="",u=YT}break;case bT:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=vT;continue}u=gT}else u=IT;break;case pT:if(u=IT,"/"!=i||"/"!=RF(s,d+1))continue;d++;break;case IT:if("/"!=i&&"\\"!=i){u=gT;continue}break;case gT:if("@"==i){m&&(s="%40"+s),m=!0,c=uF(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||h){var I=iT(p,rT);h?l.password+=I:l.username+=I}else h=!0}s=""}else if(i==Dw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=uF(s).length+1,s="",u=yT}else s+=i;break;case yT:case XT:if(t&&"file"==l.scheme){u=WT;continue}if(":"!=i||Z){if(i==Dw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==s)return FF;if(t&&""==s&&(l.includesCredentials()||null!==l.port))return;if(o=l.parseHost(s))return o;if(s="",u=CT,t)return;continue}"["==i?Z=!0:"]"==i&&(Z=!1),s+=i}else{if(""==s)return FF;if(o=l.parseHost(s))return o;if(s="",u=GT,t==XT)return}break;case GT:if(!SF(jF,i)){if(i==Dw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var g=WF(s,10);if(g>65535)return TF;l.port=l.isSpecial()&&g===cT[l.scheme]?null:g,s=""}if(t)return;u=CT;continue}return TF}s+=i;break;case fT:if(l.scheme="file","/"==i||"\\"==i)u=VT;else{if(!n||"file"!=n.scheme){u=vT;continue}if(i==Dw)l.host=n.host,l.path=dF(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=dF(n.path),l.query="",u=ST;else{if("#"!=i){aT(YF(dF(r,d),""))||(l.host=n.host,l.path=dF(n.path),l.shortenPath()),u=vT;continue}l.host=n.host,l.path=dF(n.path),l.query=n.query,l.fragment="",u=YT}}break;case VT:if("/"==i||"\\"==i){u=WT;break}n&&"file"==n.scheme&&!aT(YF(dF(r,d),""))&&(oT(n.path[0],!0)?LF(l.path,n.path[0]):l.host=n.host),u=vT;continue;case WT:if(i==Dw||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&oT(s))u=vT;else if(""==s){if(l.host="",t)return;u=CT}else{if(o=l.parseHost(s))return o;if("localhost"==l.host&&(l.host=""),t)return;s="",u=CT}continue}s+=i;break;case CT:if(l.isSpecial()){if(u=vT,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=Dw&&(u=vT,"/"!=i))continue}else l.fragment="",u=YT;else l.query="",u=ST;break;case vT:if(i==Dw||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(a=UF(a=s))||"%2e."===a||".%2e"===a||"%2e%2e"===a?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||LF(l.path,"")):lT(s)?"/"==i||"\\"==i&&l.isSpecial()||LF(l.path,""):("file"==l.scheme&&!l.path.length&&oT(s)&&(l.host&&(l.host=""),s=RF(s,0)+":"),LF(l.path,s)),s="","file"==l.scheme&&(i==Dw||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)HF(l.path);"?"==i?(l.query="",u=ST):"#"==i&&(l.fragment="",u=YT)}else s+=iT(i,nT);break;case RT:"?"==i?(l.query="",u=ST):"#"==i?(l.fragment="",u=YT):i!=Dw&&(l.path[0]+=iT(i,eT));break;case ST:t||"#"!=i?i!=Dw&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":iT(i,eT)):(l.fragment="",u=YT);break;case YT:i!=Dw&&(l.fragment+=iT(i,tT))}d++}},parseHost:function(e){var t,n,r;if("["==RF(e,0)){if("]"!=RF(e,e.length-1))return FF;if(t=function(e){var t,n,r,i,c,o,a,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return RF(e,s)};if(":"==m()){if(":"!=RF(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&SF(EF,m());)t=16*t+WF(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!SF(jF,m()))return;for(;SF(jF,m());){if(c=WF(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=t}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(o=u-d,u=7;0!=u&&o>0;)a=l[u],l[u--]=l[d+o-1],l[d+--o]=a;else if(8!=u)return;return l}(kF(e,1,-1)),!t)return FF;this.host=t}else if(this.isSpecial()){if(e=mF(e),SF(OF,e))return FF;if(t=function(e){var t,n,r,i,c,o,a,l=xF(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(c=10,i.length>1&&"0"==RF(i,0)&&(c=SF(MF,i)?16:8,i=kF(i,8==c?1:2)),""===i)o=0;else{if(!SF(10==c?PF:8==c?QF:EF,i))return e;o=WF(i,c)}LF(n,o)}for(r=0;r<t;r++)if(o=n[r],r==t-1){if(o>=vF(256,5-t))return null}else if(o>255)return null;for(a=KF(n),r=0;r<n.length;r++)a+=n[r]*vF(256,3-r);return a}(e),null===t)return FF;this.host=t}else{if(SF(DF,e))return FF;for(t="",n=uF(e),r=0;r<n.length;r++)t+=iT(n[r],eT);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return aF(cT,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&oT(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,n=e.username,r=e.password,i=e.host,c=e.port,o=e.path,a=e.query,l=e.fragment,u=t+":";return null!==i?(u+="//",e.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=$F(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?o[0]:o.length?"/"+YF(o,"/"):"",null!==a&&(u+="?"+a),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw VF(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new KT(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+$F(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(ZF(e)+":",uT)},getUsername:function(){return this.username},setUsername:function(e){var t=uF(ZF(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=iT(t[n],rT)}},getPassword:function(){return this.password},setPassword:function(e){var t=uF(ZF(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=iT(t[n],rT)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?$F(e):$F(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,yT)},getHostname:function(){var e=this.host;return null===e?"":$F(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,XT)},getPort:function(){var e=this.port;return null===e?"":ZF(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=ZF(e))?this.port=null:this.parse(e,GT))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+YF(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,CT))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=ZF(e))?this.query=null:("?"==RF(e,0)&&(e=kF(e,1)),this.query="",this.parse(e,ST)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=ZF(e))?("#"==RF(e,0)&&(e=kF(e,1)),this.fragment="",this.parse(e,YT)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var KT=function(e){var t=oF(this,LT),n=bF(arguments.length,1)>1?arguments[1]:void 0,r=gF(t,new JT(e,!1,n));$w||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},LT=KT.prototype,NT=function(e,t){return{get:function(){return yF(this)[e]()},set:t&&function(e){return yF(this)[t](e)},configurable:!0,enumerable:!0}};if($w&&iF(LT,{href:NT("serialize","setHref"),origin:NT("getOrigin"),protocol:NT("getProtocol","setProtocol"),username:NT("getUsername","setUsername"),password:NT("getPassword","setPassword"),host:NT("getHost","setHost"),hostname:NT("getHostname","setHostname"),port:NT("getPort","setPort"),pathname:NT("getPathname","setPathname"),search:NT("getSearch","setSearch"),searchParams:NT("getSearchParams"),hash:NT("getHash","setHash")}),cF(LT,"toJSON",(function(){return yF(this).serialize()}),{enumerable:!0}),cF(LT,"toString",(function(){return yF(this).serialize()}),{enumerable:!0}),fF){var HT=fF.createObjectURL,xT=fF.revokeObjectURL;HT&&cF(KT,"createObjectURL",nF(HT,fF)),xT&&cF(KT,"revokeObjectURL",nF(xT,fF))}hF(KT,"URL"),qw({global:!0,forced:!eF,sham:!$w},{URL:KT});var kT=x;function UT(e,t,n,r){return new(n||(n=Promise))((function(i,c){function o(e){try{l(r.next(e))}catch(e){c(e)}}function a(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -12,7 +12,7 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function TF(e,t,n,r){return new(n||(n=Promise))((function(i,c){function o(e){try{l(r.next(e))}catch(e){c(e)}}function a(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}gi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return UF(URL.prototype.toString,this)}}),e.ResponseMode=void 0,function(e){e.formPost="form_post",e.query="query"}(e.ResponseMode||(e.ResponseMode={}));e.Stores=void 0,function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(e.Stores||(e.Stores={}));var wF,AF="refresh_token_timer",FF=["RS256","RS512","RS384","PS256"],BF="code",zF="session_state",jF="sign_out_url",QF="sign_out_success",MF="state";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(wF||(wF={}));var PF=s((function e(t,n,r){u(this,e),this.message=r,this.name=n,this.code=t,Object.setPrototypeOf(this,(this instanceof e?this.constructor:void 0).prototype)})),EF=function(){function e(){u(this,e)}return s(e,null,[{key:"filterClaimsFromIDTokenPayload",value:function(e){var t=Object.assign({},e);null==t||delete t.iss,null==t||delete t.aud,null==t||delete t.exp,null==t||delete t.iat,null==t||delete t.acr,null==t||delete t.amr,null==t||delete t.azp,null==t||delete t.auth_time,null==t||delete t.nonce,null==t||delete t.c_hash,null==t||delete t.at_hash,null==t||delete t.nbf,null==t||delete t.isk,null==t||delete t.sid;var n={};return Object.entries(t).forEach((function(e){var t=V(e,2),r=t[0],i=t[1],c=r.split("_").map((function(e,t){return 0===t?e:[e[0].toUpperCase()].concat(f(e.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(e,t){var n=parseInt(e.split("#")[1]);return t?"".concat(t,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(e){return"pkce_code_verifier#".concat(parseInt(e.split("request_")[1]))}}]),e}();EF.getTenantDomainFromIdTokenPayload=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=e.sub.split(t);return n.length>2?n[n.length-1]:""};var DF,OF,_F=function(){function e(t,n){var r=this;u(this,e),this._dataLayer=t,this._config=function(){return TF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return TF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._cryptoHelper=n}return s(e,[{key:"resolveEndpoints",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n={},t.next=3,this._config();case 3:return r=t.sent,t.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));n[t]=(null==r?void 0:r.endpoints)?r.endpoints[e]:""})),Object.assign(Object.assign({},e),n)));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return TF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=["authorization_endpoint","end_session_endpoint","jwks_uri","check_session_iframe","revocation_endpoint","token_endpoint","issuer","userinfo_endpoint"],n.endpoints&&Object.keys(null==n?void 0:n.endpoints).every((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));return r.includes(t)}))){e.next=7;break}throw new PF("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return e.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),Object.assign({},t)));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return TF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=n.baseUrl){e.next=7;break}throw new PF("JS-AUTH_HELPER_REBO-NF01","Base URL not defined.","Base URL is not defined in AuthClient config.");case 7:return n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),i={authorization_endpoint:"".concat(r).concat("/oauth2/authorize"),end_session_endpoint:"".concat(r).concat("/oidc/logout"),issuer:"".concat(r).concat("/oauth2/token"),jwks_uri:"".concat(r).concat("/oauth2/jwks"),check_session_iframe:"".concat(r).concat("/oidc/checksession"),revocation_endpoint:"".concat(r).concat("/oauth2/revoke"),token_endpoint:"".concat(r).concat("/oauth2/token"),userinfo_endpoint:"".concat(r).concat("/oauth2/userinfo")},e.abrupt("return",Object.assign(Object.assign({},i),t));case 10:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=t.sent.jwks_uri,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new PF("JS_AUTH_HELPER-VIT-NF01","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");case 8:return t.prev=8,t.next=11,fetch(n,{credentials:r.sendCookiesInRequests?wF.Include:wF.SameOrigin});case 11:i=t.sent,t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(8),new PF("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=t.t0?t.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){t.next=24;break}return t.t1=PF,t.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),t.next=22,i.json();case 22:throw t.t3=t.sent,new t.t1("JS-AUTH_HELPER-VIT-HE03",t.t2,t.t3);case 24:return t.next=26,this._oidcProviderMetaData();case 26:return c=t.sent.issuer,t.next=29,i.json();case 29:return o=t.sent,a=o.keys,t.next=33,this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],a);case 33:return l=t.sent,t.t4=this._cryptoHelper,t.t5=e,t.t6=l,t.next=39,this._config();case 39:return t.t7=t.sent.clientID,t.t8=null!=c?c:"",t.t9=this._cryptoHelper.decodeIDToken(e).sub,t.next=44,this._config();case 44:return t.t10=t.sent.clockTolerance,t.abrupt("return",t.t4.isValidIdToken.call(t.t4,t.t5,t.t6,t.t7,t.t8,t.t9,t.t10));case 46:case"end":return t.stop()}}),t,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),o=EF.getTenantDomainFromIdTokenPayload(c),a=null!==(t=null==c?void 0:c.username)&&void 0!==t?t:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=l&&u?"".concat(l," ").concat(u):l||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:o,username:a},EF.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(t);case 6:return o=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),e.replace("{{token}}",o.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(o.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeTemporaryData(e);case 2:return t.next=4,this._dataLayer.removeSessionData(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(e,t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status&&e.ok){n.next=7;break}return n.t0=PF,n.t1="Invalid response status received for token request (".concat(e.statusText,")."),n.next=5,e.json();case 5:throw n.t2=n.sent,new n.t0("JS-AUTH_HELPER-HTR-NE01",n.t1,n.t2);case 7:return n.next=9,e.json();case 9:return(r=n.sent).created_at=(new Date).getTime(),n.next=13,this._config();case 13:if(!n.sent.validateIDToken){n.next=15;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(){return TF(c,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setSessionData(r,t);case 2:return n={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},e.abrupt("return",Promise.resolve(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 15:return i={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=18,this._dataLayer.setSessionData(r,t);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(e);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(e){e.startsWith("pkce_code_verifier")&&i.push(e)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(t=null==c?void 0:c.split("#")[1])&&void 0!==t?t:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),e}(),qF=function(){function e(t){u(this,e),this._cryptoUtils=t}return s(e,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(e){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(e))}},{key:"getJWKForTheIdToken",value:function(e,t){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(e)),i=v(t);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(e){i.e(e)}finally{i.f()}throw new PF("JS-CRYPTO_UTIL-GJFTIT-IV01","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+t.map((function(e){return e.kid})).join(", "))}},{key:"isValidIdToken",value:function(e,t,n,r,i,c){return this._cryptoUtils.verifyJwt(e,t,FF,n,r,i,c).then((function(e){return e?Promise.resolve(!0):Promise.reject(new PF("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(e){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==e?void 0:e.code)&&"nbf"===(null==e?void 0:e.claim)?Promise.reject(new PF("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new PF("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new PF("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",e)}}}]),e}(),$F=function(){function e(t,n){var r=this;u(this,e),this._cryptoUtils=n,this._cryptoHelper=new qF(n),this._authenticationHelper=new _F(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return TF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return TF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}}return s(e,[{key:"getAuthorizationURL",value:function(e,t){var n,r,i;return TF(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d,s,m,h,Z,b,p,I,g;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return o=c.sent,c.next=5,this._config();case 5:if(a=c.sent,o&&0!==o.trim().length){c.next=8;break}throw new PF("JS-AUTH_CORE-GAU-NF01","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return(l=new URL(o)).searchParams.append("response_type","code"),l.searchParams.append("client_id",a.clientID),u="openid",a.scope&&a.scope.length>0&&(a.scope.includes("openid")||a.scope.push("openid"),u=a.scope.join(" ")),l.searchParams.append("scope",u),l.searchParams.append("redirect_uri",a.signInRedirectURL),a.responseMode&&l.searchParams.append("response_mode",a.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(d=c.sent,!a.enablePKCE){c.next=21;break}return s=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),m=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(s),c.next=19,this._dataLayer.setTemporaryDataParameter(d,s,t);case 19:l.searchParams.append("code_challenge_method","S256"),l.searchParams.append("code_challenge",m);case 21:if(a.prompt&&l.searchParams.append("prompt",a.prompt),h=e)for(Z=0,b=Object.entries(h);Z<b.length;Z++)p=V(b[Z],2),I=p[0],g=p[1],""!=I&&""!=g&&"state"!==I&&l.searchParams.append(I,g.toString());return c.abrupt("return",(l.searchParams.append("state",EF.generateStateParamForRequestCorrelation(d,h?null===(i=h.state)||void 0===i?void 0:i.toString():"")),l.toString()));case 25:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(o=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new PF("JS-AUTH_CORE-RAT1-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:if(i.t0=t,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",t,r);case 12:if((a=[]).push("client_id=".concat(o.clientID)),o.clientSecret&&o.clientSecret.trim().length>0&&a.push("client_secret=".concat(o.clientSecret)),l=e,a.push("code=".concat(l)),a.push("grant_type=authorization_code"),a.push("redirect_uri=".concat(o.signInRedirectURL)),i.t1=o.enablePKCE,!i.t1){i.next=29;break}return i.t2=a,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(EF.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(EF.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:a.join("&"),credentials:o.sendCookiesInRequests?wF.Include:wF.SameOrigin,headers:new Headers(EF.getTokenRequestHeaders()),method:"POST"});case 32:u=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new PF("JS-AUTH_CORE-RAT1-NE02","Requesting access token failed",null!=i.t6?i.t6:"The request to get the access token from the server failed.");case 38:if(u.ok){i.next=45;break}return i.t7=PF,i.t8="Requesting access token failed with ".concat(u.statusText),i.next=43,u.json();case 43:throw i.t9=i.sent,new i.t7("JS-AUTH_CORE-RAT1-HE03",i.t8,i.t9);case 45:return i.next=47,this._authenticationHelper.handleTokenResponse(u,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.token_endpoint,t.next=5,this._config();case 5:return r=t.sent,t.next=8,this._dataLayer.getSessionData(e);case 8:if((i=t.sent).refresh_token){t.next=11;break}throw new PF("JS-AUTH_CORE-RAT2-NF01","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.");case 11:if(n&&0!==n.trim().length){t.next=13;break}throw new PF("JS-AUTH_CORE-RAT2-NF02","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.");case 13:return(c=[]).push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),t.prev=15,t.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?wF.Include:wF.SameOrigin,headers:new Headers(EF.getTokenRequestHeaders()),method:"POST"});case 18:o=t.sent,t.next=24;break;case 21:throw t.prev=21,t.t0=t.catch(15),new PF("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=t.t0?t.t0:"The request to refresh the access token failed.");case 24:if(o.ok){t.next=31;break}return t.t1=PF,t.t2="Refreshing access token failed with ".concat(o.statusText),t.next=29,o.json();case 29:throw t.t3=t.sent,new t.t1("JS-AUTH_CORE-RAT2-HE04",t.t2,t.t3);case 31:return t.abrupt("return",this._authenticationHelper.handleTokenResponse(o,e));case 32:case"end":return t.stop()}}),t,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new PF("JS-AUTH_CORE-RAT3-NF01","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.");case 8:return(i=[]).push("client_id=".concat(r.clientID)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData(e);case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.prev=18,t.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?wF.Include:wF.SameOrigin,headers:new Headers(EF.getTokenRequestHeaders()),method:"POST"});case 21:c=t.sent,t.next=27;break;case 24:throw t.prev=24,t.t4=t.catch(18),new PF("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=t.t4?t.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){t.next=34;break}return t.t5=PF,t.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),t.next=32,c.json();case 32:throw t.t7=t.sent,new t.t5("JS-AUTH_CORE-RAT3-HE03",t.t6,t.t7);case 34:return t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),Promise.resolve(c)));case 35:case"end":return t.stop()}}),t,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(e,t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=e.tokenEndpoint&&0!==e.tokenEndpoint.trim().length?e.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new PF("JS-AUTH_CORE-RCG-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:return n.next=10,Promise.all(Object.entries(e.data).map((function(e){var n=V(e,2),r=n[0],i=n[1];return TF(d,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,t);case 2:return n=e.sent,e.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 10:if(o=n.sent,a=Object.assign({},EF.getTokenRequestHeaders()),n.t0=e.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},a),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(t);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},a=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return l={body:o.join("&"),credentials:i.sendCookiesInRequests?wF.Include:wF.SameOrigin,headers:new Headers(a),method:"POST"},n.prev=24,n.next=27,fetch(c,l);case 27:u=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new PF("JS-AUTH_CORE-RCG-NE02","The custom grant request failed.",null!=n.t7?n.t7:"The request sent to get the custom grant failed.");case 33:if(200===u.status&&u.ok){n.next=40;break}return n.t8=PF,n.t9="Invalid response status received for the custom grant request. (".concat(u.statusText,")"),n.next=38,u.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!e.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(u,t),n.next=49;break;case 44:return n.t12=Promise,n.next=47,u.json();case 47:n.t13=n.sent,n.t11=n.t12.resolve.call(n.t12,n.t13);case 49:return n.abrupt("return",n.t11);case 50:case"end":return n.stop()}}),n,this,[[24,30]])})))}},{key:"getBasicUserInfo",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},t.abrupt("return",(Object.keys(r).forEach((function(e){void 0!==r[e]&&""!==r[e]&&null!==r[e]||delete r[e]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent.id_token,t.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:if(n=t.sent,t.t0=!e,!t.t0){t.next=8;break}return t.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:t.t0=t.sent;case 8:if(!t.t0){t.next=10;break}return t.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){t.next=36;break}return t.prev=12,t.next=15,fetch(r);case 15:if(200===(i=t.sent).status&&i.ok){t.next=18;break}throw new Error;case 18:t.next=23;break;case 20:throw t.prev=20,t.t1=t.catch(12),new PF("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return t.t2=this._dataLayer,t.t3=this._authenticationHelper,t.next=27,i.json();case 27:return t.t4=t.sent,t.next=30,t.t3.resolveEndpoints.call(t.t3,t.t4);case 30:return t.t5=t.sent,t.next=33,t.t2.setOIDCProviderMetaData.call(t.t2,t.t5);case 33:return t.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return t.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){t.next=52;break}return t.prev=37,t.t6=this._dataLayer,t.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return t.t7=t.sent,t.next=44,t.t6.setOIDCProviderMetaData.call(t.t6,t.t7);case 44:t.next=49;break;case 46:throw t.prev=46,t.t8=t.catch(37),new PF("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=t.t8?t.t8:"Resolving endpoints by base url failed.");case 49:return t.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return t.abrupt("return",Promise.resolve());case 52:return t.prev=52,t.t9=this._dataLayer,t.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return t.t10=t.sent,t.next=59,t.t9.setOIDCProviderMetaData.call(t.t9,t.t10);case 59:t.next=64;break;case 61:throw t.prev=61,t.t11=t.catch(52),new PF("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=t.t11?t.t11:"Resolving endpoints by explicitly failed.");case 64:return t.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return t.abrupt("return",Promise.resolve());case 67:case"end":return t.stop()}}),t,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var e,t,n,r,i,c,o,a,l,u;return TF(this,void 0,void 0,regeneratorRuntime.mark((function d(){var s;return regeneratorRuntime.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,this._oidcProviderMetaData();case 2:return s=d.sent,d.abrupt("return",{authorizationEndpoint:null!==(e=s.authorization_endpoint)&&void 0!==e?e:"",checkSessionIframe:null!==(t=s.check_session_iframe)&&void 0!==t?t:"",endSessionEndpoint:null!==(n=s.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=s.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=s.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=s.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(o=s.registration_endpoint)&&void 0!==o?o:"",revocationEndpoint:null!==(a=s.revocation_endpoint)&&void 0!==a?a:"",tokenEndpoint:null!==(l=s.token_endpoint)&&void 0!==l?l:"",userinfoEndpoint:null!==(u=s.userinfo_endpoint)&&void 0!==u?u:""});case 4:case"end":return d.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(o=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new PF("JS-AUTH_CORE-GSOU-NF01","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(e);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((a=i.t5)&&0!==a.trim().length){i.next=31;break}throw new PF("JS-AUTH_CORE-GSOU-NF02","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((l=null!==(r=null==o?void 0:o.signOutRedirectURL)&&void 0!==r?r:null==o?void 0:o.signInRedirectURL)&&0!==l.trim().length){i.next=34;break}throw new PF("JS-AUTH_CORE-GSOU-NF03","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(a,"&post_logout_redirect_uri=").concat(l,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL(e);case 2:return n=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(e){var t;return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(e);case 2:if(n.t1=t=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===t;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=t.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken(e);case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(EF.extractPKCEKeyFromStateParam(e),t);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(EF.extractPKCEKeyFromStateParam(t),e,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setConfigData(e);case 2:return t.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return t.stop()}}),t,this)})))}}]),e}(),eB=function(){function t(e,n){u(this,t),this._id=e,this._store=n}return s(t,[{key:"setDataInBulk",value:function(e,t){var n;return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),o=Object.assign(Object.assign({},c),t),a=JSON.stringify(o),r.next=17,this._store.setData(e,a);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(e,t,n){var r;return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(e);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,o=c&&JSON.parse(c),a=Object.assign(Object.assign({},o),m({},t,n)),l=JSON.stringify(a),i.next=17,this._store.setData(e,l);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(e,t){var n;return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(o=Object.assign({},c))[t],a=JSON.stringify(o),r.next=18,this._store.setData(e,a);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(e,t){return t?"".concat(e,"-").concat(this._id,"-").concat(t):"".concat(e,"-").concat(this._id)}},{key:"setConfigData",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.TemporaryData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionData",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.SessionData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"getConfigData",value:function(){var t;return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var t;return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryData",value:function(t){var n;return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.TemporaryData,t));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionData",value:function(t){var n;return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.SessionData,t));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigData",value:function(){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.ConfigData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryData",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.TemporaryData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionData",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.SessionData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigDataParameter",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.TemporaryData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionDataParameter",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.SessionData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"setConfigDataParameter",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.ConfigData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(t,n,r){return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.TemporaryData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"setSessionDataParameter",value:function(t,n,r){return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.SessionData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"removeConfigDataParameter",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.TemporaryData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeSessionDataParameter",value:function(t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.SessionData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}}]),t}(),tB={clockTolerance:300,enablePKCE:!0,responseMode:e.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},nB=function(){
15
+ ***************************************************************************** */function AT(e,t,n,r){return new(n||(n=Promise))((function(i,c){function o(e){try{l(r.next(e))}catch(e){c(e)}}function a(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}gi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return kT(URL.prototype.toString,this)}}),e.ResponseMode=void 0,function(e){e.formPost="form_post",e.query="query"}(e.ResponseMode||(e.ResponseMode={}));e.Stores=void 0,function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(e.Stores||(e.Stores={}));var wT,FT="refresh_token_timer",TT=["RS256","RS512","RS384","PS256"],BT="code",zT="session_state",jT="sign_out_url",MT="sign_out_success",QT="state";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(wT||(wT={}));var PT=s((function e(t,n,r){u(this,e),this.message=r,this.name=n,this.code=t,Object.setPrototypeOf(this,(this instanceof e?this.constructor:void 0).prototype)})),ET=function(){function e(){u(this,e)}return s(e,null,[{key:"filterClaimsFromIDTokenPayload",value:function(e){var t=Object.assign({},e);null==t||delete t.iss,null==t||delete t.aud,null==t||delete t.exp,null==t||delete t.iat,null==t||delete t.acr,null==t||delete t.amr,null==t||delete t.azp,null==t||delete t.auth_time,null==t||delete t.nonce,null==t||delete t.c_hash,null==t||delete t.at_hash,null==t||delete t.nbf,null==t||delete t.isk,null==t||delete t.sid;var n={};return Object.entries(t).forEach((function(e){var t=f(e,2),r=t[0],i=t[1],c=r.split("_").map((function(e,t){return 0===t?e:[e[0].toUpperCase()].concat(V(e.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(e,t){var n=parseInt(e.split("#")[1]);return t?"".concat(t,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(e){return"pkce_code_verifier#".concat(parseInt(e.split("request_")[1]))}}]),e}();ET.getTenantDomainFromIdTokenPayload=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=e.sub.split(t);return n.length>2?n[n.length-1]:""};var OT,DT,_T=function(){function e(t,n){var r=this;u(this,e),this._dataLayer=t,this._config=function(){return AT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return AT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._cryptoHelper=n}return s(e,[{key:"resolveEndpoints",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n={},t.next=3,this._config();case 3:return r=t.sent,t.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));n[t]=(null==r?void 0:r.endpoints)?r.endpoints[e]:""})),Object.assign(Object.assign({},e),n)));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return AT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=["authorization_endpoint","end_session_endpoint","jwks_uri","check_session_iframe","revocation_endpoint","token_endpoint","issuer","userinfo_endpoint"],n.endpoints&&Object.keys(null==n?void 0:n.endpoints).every((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));return r.includes(t)}))){e.next=7;break}throw new PT("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return e.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),Object.assign({},t)));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return AT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=n.baseUrl){e.next=7;break}throw new PT("JS-AUTH_HELPER_REBO-NF01","Base URL not defined.","Base URL is not defined in AuthClient config.");case 7:return n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),i={authorization_endpoint:"".concat(r).concat("/oauth2/authorize"),end_session_endpoint:"".concat(r).concat("/oidc/logout"),issuer:"".concat(r).concat("/oauth2/token"),jwks_uri:"".concat(r).concat("/oauth2/jwks"),check_session_iframe:"".concat(r).concat("/oidc/checksession"),revocation_endpoint:"".concat(r).concat("/oauth2/revoke"),token_endpoint:"".concat(r).concat("/oauth2/token"),userinfo_endpoint:"".concat(r).concat("/oauth2/userinfo")},e.abrupt("return",Object.assign(Object.assign({},i),t));case 10:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=t.sent.jwks_uri,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new PT("JS_AUTH_HELPER-VIT-NF01","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");case 8:return t.prev=8,t.next=11,fetch(n,{credentials:r.sendCookiesInRequests?wT.Include:wT.SameOrigin});case 11:i=t.sent,t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(8),new PT("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=t.t0?t.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){t.next=24;break}return t.t1=PT,t.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),t.next=22,i.json();case 22:throw t.t3=t.sent,new t.t1("JS-AUTH_HELPER-VIT-HE03",t.t2,t.t3);case 24:return t.next=26,this._oidcProviderMetaData();case 26:return c=t.sent.issuer,t.next=29,i.json();case 29:return o=t.sent,a=o.keys,t.next=33,this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],a);case 33:return l=t.sent,t.t4=this._cryptoHelper,t.t5=e,t.t6=l,t.next=39,this._config();case 39:return t.t7=t.sent.clientID,t.t8=null!=c?c:"",t.t9=this._cryptoHelper.decodeIDToken(e).sub,t.next=44,this._config();case 44:return t.t10=t.sent.clockTolerance,t.abrupt("return",t.t4.isValidIdToken.call(t.t4,t.t5,t.t6,t.t7,t.t8,t.t9,t.t10));case 46:case"end":return t.stop()}}),t,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),o=ET.getTenantDomainFromIdTokenPayload(c),a=null!==(t=null==c?void 0:c.username)&&void 0!==t?t:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=l&&u?"".concat(l," ").concat(u):l||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:o,username:a},ET.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(t);case 6:return o=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),e.replace("{{token}}",o.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(o.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeTemporaryData(e);case 2:return t.next=4,this._dataLayer.removeSessionData(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(e,t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status&&e.ok){n.next=7;break}return n.t0=PT,n.t1="Invalid response status received for token request (".concat(e.statusText,")."),n.next=5,e.json();case 5:throw n.t2=n.sent,new n.t0("JS-AUTH_HELPER-HTR-NE01",n.t1,n.t2);case 7:return n.next=9,e.json();case 9:return(r=n.sent).created_at=(new Date).getTime(),n.next=13,this._config();case 13:if(!n.sent.validateIDToken){n.next=15;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(){return AT(c,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setSessionData(r,t);case 2:return n={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},e.abrupt("return",Promise.resolve(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 15:return i={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=18,this._dataLayer.setSessionData(r,t);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(e);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(e){e.startsWith("pkce_code_verifier")&&i.push(e)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(t=null==c?void 0:c.split("#")[1])&&void 0!==t?t:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),e}(),qT=function(){function e(t){u(this,e),this._cryptoUtils=t}return s(e,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(e){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(e))}},{key:"getJWKForTheIdToken",value:function(e,t){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(e)),i=v(t);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(e){i.e(e)}finally{i.f()}throw new PT("JS-CRYPTO_UTIL-GJFTIT-IV01","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+t.map((function(e){return e.kid})).join(", "))}},{key:"isValidIdToken",value:function(e,t,n,r,i,c){return this._cryptoUtils.verifyJwt(e,t,TT,n,r,i,c).then((function(e){return e?Promise.resolve(!0):Promise.reject(new PT("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(e){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==e?void 0:e.code)&&"nbf"===(null==e?void 0:e.claim)?Promise.reject(new PT("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new PT("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new PT("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",e)}}}]),e}(),$T=function(){function e(t,n){var r=this;u(this,e),this._cryptoUtils=n,this._cryptoHelper=new qT(n),this._authenticationHelper=new _T(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return AT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return AT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}}return s(e,[{key:"getAuthorizationURL",value:function(e,t){var n,r,i;return AT(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d,s,m,Z,h,b,p,I,g,y,X,G,V,W,C,R;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return o=c.sent,c.next=5,this._config();case 5:if(a=c.sent,o&&0!==o.trim().length){c.next=8;break}throw new PT("JS-AUTH_CORE-GAU-NF01","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return l=new URL(o),(u=new Map).set("response_type","code"),u.set("client_id",a.clientID),d="openid",a.scope&&a.scope.length>0&&(a.scope.includes("openid")||a.scope.push("openid"),d=a.scope.join(" ")),u.set("scope",d),u.set("redirect_uri",a.signInRedirectURL),a.responseMode&&u.set("response_mode",a.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(s=c.sent,!a.enablePKCE){c.next=21;break}return m=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),Z=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(m),c.next=19,this._dataLayer.setTemporaryDataParameter(s,m,t);case 19:u.set("code_challenge_method","S256"),u.set("code_challenge",Z);case 21:if(a.prompt&&u.set("prompt",a.prompt),h=e)for(b=0,p=Object.entries(h);b<p.length;b++)I=f(p[b],2),g=I[0],y=I[1],""!=g&&""!=y&&"state"!==g&&(X=g.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())})),u.set(X,y.toString()));u.set("state",ET.generateStateParamForRequestCorrelation(s,h?null===(i=h.state)||void 0===i?void 0:i.toString():"")),G=v(u.entries());try{for(G.s();!(V=G.n()).done;)W=f(V.value,2),C=W[0],R=W[1],l.searchParams.append(C,R)}catch(e){G.e(e)}finally{G.f()}return c.abrupt("return",l.toString());case 28:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(o=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new PT("JS-AUTH_CORE-RAT1-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:if(i.t0=t,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",t,r);case 12:if((a=[]).push("client_id=".concat(o.clientID)),o.clientSecret&&o.clientSecret.trim().length>0&&a.push("client_secret=".concat(o.clientSecret)),l=e,a.push("code=".concat(l)),a.push("grant_type=authorization_code"),a.push("redirect_uri=".concat(o.signInRedirectURL)),i.t1=o.enablePKCE,!i.t1){i.next=29;break}return i.t2=a,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(ET.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(ET.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:a.join("&"),credentials:o.sendCookiesInRequests?wT.Include:wT.SameOrigin,headers:new Headers(ET.getTokenRequestHeaders()),method:"POST"});case 32:u=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new PT("JS-AUTH_CORE-RAT1-NE02","Requesting access token failed",null!=i.t6?i.t6:"The request to get the access token from the server failed.");case 38:if(u.ok){i.next=45;break}return i.t7=PT,i.t8="Requesting access token failed with ".concat(u.statusText),i.next=43,u.json();case 43:throw i.t9=i.sent,new i.t7("JS-AUTH_CORE-RAT1-HE03",i.t8,i.t9);case 45:return i.next=47,this._authenticationHelper.handleTokenResponse(u,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.token_endpoint,t.next=5,this._config();case 5:return r=t.sent,t.next=8,this._dataLayer.getSessionData(e);case 8:if((i=t.sent).refresh_token){t.next=11;break}throw new PT("JS-AUTH_CORE-RAT2-NF01","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.");case 11:if(n&&0!==n.trim().length){t.next=13;break}throw new PT("JS-AUTH_CORE-RAT2-NF02","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.");case 13:return(c=[]).push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),t.prev=15,t.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?wT.Include:wT.SameOrigin,headers:new Headers(ET.getTokenRequestHeaders()),method:"POST"});case 18:o=t.sent,t.next=24;break;case 21:throw t.prev=21,t.t0=t.catch(15),new PT("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=t.t0?t.t0:"The request to refresh the access token failed.");case 24:if(o.ok){t.next=31;break}return t.t1=PT,t.t2="Refreshing access token failed with ".concat(o.statusText),t.next=29,o.json();case 29:throw t.t3=t.sent,new t.t1("JS-AUTH_CORE-RAT2-HE04",t.t2,t.t3);case 31:return t.abrupt("return",this._authenticationHelper.handleTokenResponse(o,e));case 32:case"end":return t.stop()}}),t,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new PT("JS-AUTH_CORE-RAT3-NF01","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.");case 8:return(i=[]).push("client_id=".concat(r.clientID)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData(e);case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.prev=18,t.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?wT.Include:wT.SameOrigin,headers:new Headers(ET.getTokenRequestHeaders()),method:"POST"});case 21:c=t.sent,t.next=27;break;case 24:throw t.prev=24,t.t4=t.catch(18),new PT("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=t.t4?t.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){t.next=34;break}return t.t5=PT,t.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),t.next=32,c.json();case 32:throw t.t7=t.sent,new t.t5("JS-AUTH_CORE-RAT3-HE03",t.t6,t.t7);case 34:return t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),Promise.resolve(c)));case 35:case"end":return t.stop()}}),t,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(e,t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=e.tokenEndpoint&&0!==e.tokenEndpoint.trim().length?e.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new PT("JS-AUTH_CORE-RCG-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:return n.next=10,Promise.all(Object.entries(e.data).map((function(e){var n=f(e,2),r=n[0],i=n[1];return AT(d,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,t);case 2:return n=e.sent,e.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 10:if(o=n.sent,a=Object.assign({},ET.getTokenRequestHeaders()),n.t0=e.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},a),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(t);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},a=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return l={body:o.join("&"),credentials:i.sendCookiesInRequests?wT.Include:wT.SameOrigin,headers:new Headers(a),method:"POST"},n.prev=24,n.next=27,fetch(c,l);case 27:u=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new PT("JS-AUTH_CORE-RCG-NE02","The custom grant request failed.",null!=n.t7?n.t7:"The request sent to get the custom grant failed.");case 33:if(200===u.status&&u.ok){n.next=40;break}return n.t8=PT,n.t9="Invalid response status received for the custom grant request. (".concat(u.statusText,")"),n.next=38,u.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!e.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(u,t),n.next=49;break;case 44:return n.t12=Promise,n.next=47,u.json();case 47:n.t13=n.sent,n.t11=n.t12.resolve.call(n.t12,n.t13);case 49:return n.abrupt("return",n.t11);case 50:case"end":return n.stop()}}),n,this,[[24,30]])})))}},{key:"getBasicUserInfo",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},t.abrupt("return",(Object.keys(r).forEach((function(e){void 0!==r[e]&&""!==r[e]&&null!==r[e]||delete r[e]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent.id_token,t.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:if(n=t.sent,t.t0=!e,!t.t0){t.next=8;break}return t.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:t.t0=t.sent;case 8:if(!t.t0){t.next=10;break}return t.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){t.next=36;break}return t.prev=12,t.next=15,fetch(r);case 15:if(200===(i=t.sent).status&&i.ok){t.next=18;break}throw new Error;case 18:t.next=23;break;case 20:throw t.prev=20,t.t1=t.catch(12),new PT("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return t.t2=this._dataLayer,t.t3=this._authenticationHelper,t.next=27,i.json();case 27:return t.t4=t.sent,t.next=30,t.t3.resolveEndpoints.call(t.t3,t.t4);case 30:return t.t5=t.sent,t.next=33,t.t2.setOIDCProviderMetaData.call(t.t2,t.t5);case 33:return t.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return t.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){t.next=52;break}return t.prev=37,t.t6=this._dataLayer,t.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return t.t7=t.sent,t.next=44,t.t6.setOIDCProviderMetaData.call(t.t6,t.t7);case 44:t.next=49;break;case 46:throw t.prev=46,t.t8=t.catch(37),new PT("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=t.t8?t.t8:"Resolving endpoints by base url failed.");case 49:return t.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return t.abrupt("return",Promise.resolve());case 52:return t.prev=52,t.t9=this._dataLayer,t.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return t.t10=t.sent,t.next=59,t.t9.setOIDCProviderMetaData.call(t.t9,t.t10);case 59:t.next=64;break;case 61:throw t.prev=61,t.t11=t.catch(52),new PT("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=t.t11?t.t11:"Resolving endpoints by explicitly failed.");case 64:return t.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return t.abrupt("return",Promise.resolve());case 67:case"end":return t.stop()}}),t,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var e,t,n,r,i,c,o,a,l,u;return AT(this,void 0,void 0,regeneratorRuntime.mark((function d(){var s;return regeneratorRuntime.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,this._oidcProviderMetaData();case 2:return s=d.sent,d.abrupt("return",{authorizationEndpoint:null!==(e=s.authorization_endpoint)&&void 0!==e?e:"",checkSessionIframe:null!==(t=s.check_session_iframe)&&void 0!==t?t:"",endSessionEndpoint:null!==(n=s.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=s.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=s.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=s.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(o=s.registration_endpoint)&&void 0!==o?o:"",revocationEndpoint:null!==(a=s.revocation_endpoint)&&void 0!==a?a:"",tokenEndpoint:null!==(l=s.token_endpoint)&&void 0!==l?l:"",userinfoEndpoint:null!==(u=s.userinfo_endpoint)&&void 0!==u?u:""});case 4:case"end":return d.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(o=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new PT("JS-AUTH_CORE-GSOU-NF01","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(e);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((a=i.t5)&&0!==a.trim().length){i.next=31;break}throw new PT("JS-AUTH_CORE-GSOU-NF02","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((l=null!==(r=null==o?void 0:o.signOutRedirectURL)&&void 0!==r?r:null==o?void 0:o.signInRedirectURL)&&0!==l.trim().length){i.next=34;break}throw new PT("JS-AUTH_CORE-GSOU-NF03","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(a,"&post_logout_redirect_uri=").concat(l,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL(e);case 2:return n=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(e){var t;return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(e);case 2:if(n.t1=t=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===t;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=t.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken(e);case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(ET.extractPKCEKeyFromStateParam(e),t);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(ET.extractPKCEKeyFromStateParam(t),e,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setConfigData(e);case 2:return t.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return t.stop()}}),t,this)})))}}]),e}(),eB=function(){function t(e,n){u(this,t),this._id=e,this._store=n}return s(t,[{key:"setDataInBulk",value:function(e,t){var n;return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),o=Object.assign(Object.assign({},c),t),a=JSON.stringify(o),r.next=17,this._store.setData(e,a);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(e,t,n){var r;return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(e);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,o=c&&JSON.parse(c),a=Object.assign(Object.assign({},o),m({},t,n)),l=JSON.stringify(a),i.next=17,this._store.setData(e,l);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(e,t){var n;return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(o=Object.assign({},c))[t],a=JSON.stringify(o),r.next=18,this._store.setData(e,a);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(e,t){return t?"".concat(e,"-").concat(this._id,"-").concat(t):"".concat(e,"-").concat(this._id)}},{key:"setConfigData",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.TemporaryData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionData",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.SessionData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"getConfigData",value:function(){var t;return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var t;return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryData",value:function(t){var n;return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.TemporaryData,t));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionData",value:function(t){var n;return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.SessionData,t));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigData",value:function(){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.ConfigData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryData",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.TemporaryData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionData",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.SessionData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigDataParameter",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.TemporaryData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionDataParameter",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.SessionData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"setConfigDataParameter",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.ConfigData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(t,n,r){return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.TemporaryData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"setSessionDataParameter",value:function(t,n,r){return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.SessionData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"removeConfigDataParameter",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.TemporaryData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeSessionDataParameter",value:function(t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.SessionData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}}]),t}(),tB={clockTolerance:300,enablePKCE:!0,responseMode:e.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},nB=function(){
16
16
  /**
17
17
  * This is the constructor method that returns an instance of the .
18
18
  *
@@ -27,7 +27,7 @@
27
27
  * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#constructor
28
28
  * @preserve
29
29
  */
30
- function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new eB("instance_".concat(e._instanceID),t),this._authenticationCore=new $F(this._dataLayer,n)}
30
+ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new eB("instance_".concat(e._instanceID),t),this._authenticationCore=new $T(this._dataLayer,n)}
31
31
  /**
32
32
  *
33
33
  * This method initializes the SDK with the config data.
@@ -46,7 +46,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
46
46
  * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#initialize
47
47
  *
48
48
  * @preserve
49
- */return s(e,[{key:"initialize",value:function(e){var t,n,r;return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},tB),e),{scope:[].concat(f(null!==(t=tB.scope)&&void 0!==t?t:[]),f(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==tB?void 0:tB.scope)||void 0===t?void 0:t.includes(e))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}
49
+ */return s(e,[{key:"initialize",value:function(e){var t,n,r;return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},tB),e),{scope:[].concat(V(null!==(t=tB.scope)&&void 0!==t?t:[]),V(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==tB?void 0:tB.scope)||void 0===t?void 0:t.includes(e))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}
50
50
  /**
51
51
  * This method returns the `DataLayer` object that allows you to access authentication data.
52
52
  *
@@ -87,7 +87,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
87
87
  * @memberof AsgardeoAuthClient
88
88
  *
89
89
  * @preserve
90
- */},{key:"getAuthorizationURL",value:function(e,t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},e))||delete r.forceInit,n.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!n.sent){n.next=8;break}n.t0=this._authenticationCore.getAuthorizationURL(r,t),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==e?void 0:e.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,t)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}
90
+ */},{key:"getAuthorizationURL",value:function(e,t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},e))||delete r.forceInit,n.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!n.sent){n.next=8;break}n.t0=this._authenticationCore.getAuthorizationURL(r,t),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==e?void 0:e.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,t)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}
91
91
  /**
92
92
  * This is an async method that sends a request to obtain the access token and returns a Promise
93
93
  * that resolves with the token and other relevant data.
@@ -113,7 +113,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
113
113
  * @memberof AsgardeoAuthClient
114
114
  *
115
115
  * @preserve
116
- */},{key:"requestAccessToken",value:function(e,t,n,r){return TF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c=this;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!i.sent){i.next=6;break}i.t0=this._authenticationCore.requestAccessToken(e,t,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(e,t,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}
116
+ */},{key:"requestAccessToken",value:function(e,t,n,r){return AT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c=this;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!i.sent){i.next=6;break}i.t0=this._authenticationCore.requestAccessToken(e,t,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(e,t,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}
117
117
  /**
118
118
  * This method clears all authentication data and returns the sign-out URL.
119
119
  *
@@ -132,7 +132,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
132
132
  * @memberof AsgardeoAuthClient
133
133
  *
134
134
  * @preserve
135
- */},{key:"signOut",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut(e));case 1:case"end":return t.stop()}}),t,this)})))}
135
+ */},{key:"signOut",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut(e));case 1:case"end":return t.stop()}}),t,this)})))}
136
136
  /**
137
137
  * This method returns the sign-out URL.
138
138
  *
@@ -153,7 +153,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
153
153
  * @memberof AsgardeoAuthClient
154
154
  *
155
155
  * @preserve
156
- */},{key:"getSignOutURL",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL(e));case 1:case"end":return t.stop()}}),t,this)})))}
156
+ */},{key:"getSignOutURL",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL(e));case 1:case"end":return t.stop()}}),t,this)})))}
157
157
  /**
158
158
  * This method returns OIDC service endpoints that are fetched from the `.well-known` endpoint.
159
159
  *
@@ -169,7 +169,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
169
169
  * @memberof AsgardeoAuthClient
170
170
  *
171
171
  * @preserve
172
- */},{key:"getOIDCServiceEndpoints",value:function(){return TF(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e,this)})))}
172
+ */},{key:"getOIDCServiceEndpoints",value:function(){return AT(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e,this)})))}
173
173
  /**
174
174
  * This method decodes the payload of the ID token and returns it.
175
175
  *
@@ -188,7 +188,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
188
188
  * @memberof AsgardeoAuthClient
189
189
  *
190
190
  * @preserve
191
- */},{key:"getDecodedIDToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
191
+ */},{key:"getDecodedIDToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
192
192
  /**
193
193
  * This method returns the ID token.
194
194
  *
@@ -207,7 +207,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
207
207
  * @memberof AsgardeoAuthClient
208
208
  *
209
209
  * @preserve
210
- */},{key:"getIDToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
210
+ */},{key:"getIDToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
211
211
  /**
212
212
  * This method returns the basic user information obtained from the ID token.
213
213
  *
@@ -226,7 +226,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
226
226
  * @memberof AsgardeoAuthClient
227
227
  *
228
228
  * @preserve
229
- */},{key:"getBasicUserInfo",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo(e));case 1:case"end":return t.stop()}}),t,this)})))}
229
+ */},{key:"getBasicUserInfo",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo(e));case 1:case"end":return t.stop()}}),t,this)})))}
230
230
  /**
231
231
  * This method revokes the access token.
232
232
  *
@@ -294,7 +294,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
294
294
  * @memberof AsgardeoAuthClient
295
295
  *
296
296
  * @preserve
297
- */},{key:"getAccessToken",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
297
+ */},{key:"getAccessToken",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
298
298
  /**
299
299
  * This method sends a custom-grant request and returns a Promise that resolves with the response
300
300
  * depending on the config passed.
@@ -353,7 +353,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
353
353
  * @memberof AsgardeoAuthClient
354
354
  *
355
355
  * @preserve
356
- */},{key:"isAuthenticated",value:function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated(e));case 1:case"end":return t.stop()}}),t,this)})))}
356
+ */},{key:"isAuthenticated",value:function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated(e));case 1:case"end":return t.stop()}}),t,this)})))}
357
357
  /**
358
358
  * This method returns the PKCE code generated during the generation of the authentication URL.
359
359
  *
@@ -373,7 +373,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
373
373
  * @memberof AsgardeoAuthClient
374
374
  *
375
375
  * @preserve
376
- */},{key:"getPKCECode",value:function(e,t){return TF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(e,t));case 1:case"end":return n.stop()}}),n,this)})))}
376
+ */},{key:"getPKCECode",value:function(e,t){return AT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(e,t));case 1:case"end":return n.stop()}}),n,this)})))}
377
377
  /**
378
378
  * This method sets the PKCE code to the data store.
379
379
  *
@@ -392,7 +392,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
392
392
  * @memberof AsgardeoAuthClient
393
393
  *
394
394
  * @preserve
395
- */},{key:"setPKCECode",value:function(e,t,n){return TF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(e,t,n);case 2:case"end":return r.stop()}}),r,this)})))}
395
+ */},{key:"setPKCECode",value:function(e,t,n){return AT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(e,t,n);case 2:case"end":return r.stop()}}),r,this)})))}
396
396
  /**
397
397
  * This method returns if the sign-out is successful or not.
398
398
  *
@@ -430,7 +430,7 @@ function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
430
430
  *
431
431
  * @preserve
432
432
  */
433
- function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.updateConfig(e);case 2:case"end":return t.stop()}}),t,this)})))}}],[{key:"isSignOutSuccessful",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}
433
+ function(e){return AT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.updateConfig(e);case 2:case"end":return t.stop()}}),t,this)})))}}],[{key:"isSignOutSuccessful",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}
434
434
  /**
435
435
  * This method returns if the sign-out has failed or not.
436
436
  *
@@ -446,9 +446,9 @@ function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){r
446
446
  * @memberof AsgardeoAuthClient
447
447
  *
448
448
  * @preserve
449
- */},{key:"didSignOutFail",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}}]),e}(),rB="sign-out",iB="get_auth_url",cB="check_session_signed_in",oB="check_session_signed_out",aB="set_session_state_from_iframe";e.Storage=void 0,(DF=e.Storage||(e.Storage={})).LocalStorage="localStorage",DF.SessionStorage="sessionStorage",DF.WebWorker="webWorker",DF.BrowserMemory="browserMemory",e.Hooks=void 0,(OF=e.Hooks||(e.Hooks={})).SignIn="sign-in",OF.SignOut="sign-out",OF.Initialize="initialize",OF.HttpRequestStart="http-request-start",OF.HttpRequestFinish="http-request-finish",OF.HttpRequestError="http-request-error",OF.HttpRequestSuccess="http-request-success",OF.RevokeAccessToken="revoke-access-token",OF.CustomGrant="custom-grant",OF.SignOutFailed="sign-out-failed";var lB,uB,dB,sB,mB,hB,ZB,bB,pB,IB,gB,yB,XB,GB,VB,fB,WB,CB="rpIFrame",vB="promptNoneIFrame",SB="Y2hlY2tTZXNzaW9u",RB="sign-in-silently",YB="initialized-silent-sign-in",JB="promptNoneRequestSent",KB="error",NB="error_description",LB="custom_grant_config",HB="state",xB="Access token is invalid",UB=function(){function e(t){u(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return s(e,[{key:"refreshAccessTokenAutomatically",value:function(){return kF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(!(t=e.sent).refresh_token){e.next=9;break}return n=parseInt(t.expires_in),r=setTimeout((function(){return kF(i,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return e.stop()}}),e,this)})))}),1e3*(n<=10?n:n-10)),e.next=9,this._dataLayer.setTemporaryDataParameter(AF,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return kF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getTemporaryDataParameter(AF);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(AF);case 6:e.t1=e.sent,t=e.t0.parse.call(e.t0,e.t1),clearTimeout(t);case 9:case"end":return e.stop()}}),e,this)})))}}]),e}(),kB=function(){function e(){u(this,e)}return s(e,null,[{key:"removeAuthorizationCode",value:function(){var e=location.href;history.pushState({},document.title,e.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(e){var t;return null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:""}},{key:"setPKCE",value:function(e,t){sessionStorage.setItem(e,t)}},{key:"setSignOutURL",value:function(e){sessionStorage.setItem(jF,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(jF))&&void 0!==e?e:""}},{key:"removePKCE",value:function(e){sessionStorage.removeItem(e)}},{key:"canContinueSignIn",value:function(t,n){return!(t&&!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return e.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var e=sessionStorage.getItem(YB),t=e?JSON.parse(e):null;return Boolean(t)}},{key:"isSignOutSuccessful",value:function(){if(nB.isSignOutSuccessful(window.location.href)){var e=window.location.href.split("?")[0];return history.pushState({},document.title,e),!0}return!1}},{key:"didSignOutFail",value:function(){if(nB.didSignOutFail(window.location.href)){var e=new URL(window.location.href),t=e.searchParams.get(KB),n=e.searchParams.get(NB),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=t?t:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var e,t=new URL(window.location.href).searchParams.get("state");return null!==(e=null==t?void 0:t.includes(RB))&&void 0!==e&&e}},{key:"hasAuthSearchParamsInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,t=/[?&]code=[^&]+/;return t.test(e)}},{key:"hasErrorInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,t=new URL(e);return!!t.searchParams.get(KB)&&t.searchParams.get(HB)!==QF}},{key:"canSendPromptNoneRequest",value:function(){var e=sessionStorage.getItem(JB);return!(e?JSON.parse(e):null)}},{key:"setPromptNoneRequestSent",value:function(e){sessionStorage.setItem(JB,JSON.stringify(e))}},{key:"waitTillPageRedirect",value:function(e){return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=null!=e?e:3e3,t.next=3,new Promise((function(e){return setTimeout(e,1e3*n)}));case 3:case"end":return t.stop()}}),t)})))}}]),e}(),TB=(yB=function(e,t,n,r,i,c,o){lB=e,uB=t,dB=n,mB=c,hB=i,gB=o,(sB=r)>-1&&XB(),hB>-1&&(i=setInterval((function(){fB()}),1e3*hB))},XB=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i,c,o,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,dB();case 2:r=t.sent,Boolean(lB)&&Boolean(r)&&(i="".concat(lB," ").concat(r),c=document.getElementById(CB),o=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.getElementById(n),null==(a=o.contentWindow)||a.postMessage(i,uB));case 4:case"end":return t.stop()}}),t)})))},uB&&lB&&mB){e.next=3;break}return e.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(CB),(null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(n)).src=uB+"?client_id="+lB+"&redirect_uri="+mB,e.next=9,r();case 9:bB=setInterval(r,1e3*sB),VB();case 11:case"end":return e.stop()}}),e)})))},GB=function(){clearInterval(bB),clearInterval(void 0)},VB=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=uB)&&!((null==r?void 0:r.indexOf(e.origin))<0)&&(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.type)!==aB){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==e.data){n.next=6;break}n.next=13;break;case 6:if("error"!==e.data){n.next=12;break}return n.next=9,ZB();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&fB();case 13:case"end":return n.stop()}}),n)})))}),!1)},fB=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=document.getElementById(CB),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(vB),!kB.canSendPromptNoneRequest()){t.next=10;break}return kB.setPromptNoneRequestSent(!0),c=function e(t){var n,r,i;(null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.type)===aB&&(IB(null!==(i=null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",e))},pB!==e.Storage.BrowserMemory&&pB!==e.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),t.next=8,gB({prompt:"none",state:SB});case 8:o=t.sent,i.src=o;case 10:case"end":return t.stop()}}),t)})))},WB=function(t){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d,s,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get(HB),o=new URL(window.location.href).searchParams.get(zF),a=window.parent.parent,null===c||!c.includes(SB)&&!c.includes(RB)){n.next=48;break}if(null===(l=new URL(window.location.href).searchParams.get("code"))||0===l.length){n.next=32;break}if(!c.includes(RB)){n.next=15;break}return u={data:{code:l,sessionState:null!=o?o:"",state:c},type:cB},sessionStorage.setItem(YB,"false"),a.postMessage(u,a.origin),kB.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,kB.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),pB!==e.Storage.LocalStorage&&pB!==e.Storage.SessionStorage){n.next=23;break}if(n.t0=t,!n.t0){n.next=21;break}return n.next=21,t(d);case 21:n.next=25;break;case 23:s={data:null!=d?d:"",type:aB},null===(i=null===(r=null===window||void 0===window?void 0:window.parent)||void 0===r?void 0:r.parent)||void 0===i||i.postMessage(s);case 25:return kB.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,kB.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(RB)){n.next=40;break}return m={type:oB},window.parent.parent.postMessage(m,a.origin),kB.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,kB.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return kB.setPromptNoneRequestSent(!1),n.next=43,ZB();case 43:return a.location.href=n.sent,window.location.href="about:blank",n.next=47,kB.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(e,t,n){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id",CB),c.style.display="none",o=!1,c.onload=function(){var e,t,n,r,i=null==(c=document.getElementById(CB))?void 0:c.contentDocument,a=null==i?void 0:i.createElement("iframe");a&&(a.setAttribute("id","opIFrame"),a.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id",vB),l.style.display="none"),a&&(null===(t=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.body)||void 0===t||t.appendChild(a)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),o=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),ZB=e,pB=t,IB=n,a=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 10:if(!1!==o){r.next=15;break}return r.next=13,a();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:yB,receivePromptNoneResponse:WB,reset:GB});case 16:case"end":return r.stop()}}),r)})))}),wB={exports:{}},AB=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},FB=AB,BB=Object.prototype.toString;function zB(e){return Array.isArray(e)}function jB(e){return void 0===e}function QB(e){return"[object ArrayBuffer]"===BB.call(e)}function MB(e){return null!==e&&"object"===o(e)}function PB(e){if("[object Object]"!==BB.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function EB(e){return"[object Function]"===BB.call(e)}function DB(e,t){if(null!=e)if("object"!==o(e)&&(e=[e]),zB(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var OB={isArray:zB,isArrayBuffer:QB,isBuffer:function(e){return null!==e&&!jB(e)&&null!==e.constructor&&!jB(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===BB.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&QB(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:MB,isPlainObject:PB,isUndefined:jB,isDate:function(e){return"[object Date]"===BB.call(e)},isFile:function(e){return"[object File]"===BB.call(e)},isBlob:function(e){return"[object Blob]"===BB.call(e)},isFunction:EB,isStream:function(e){return MB(e)&&EB(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===BB.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:DB,merge:function e(){var t={};function n(n,r){PB(t[r])&&PB(n)?t[r]=e(t[r],n):PB(n)?t[r]=e({},n):zB(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)DB(arguments[r],n);return t},extend:function(e,t,n){return DB(t,(function(t,r){e[r]=n&&"function"==typeof t?FB(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},_B=OB;function qB(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var $B=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(_B.isURLSearchParams(t))r=t.toString();else{var i=[];_B.forEach(t,(function(e,t){null!=e&&(_B.isArray(e)?t+="[]":e=[e],_B.forEach(e,(function(e){_B.isDate(e)?e=e.toISOString():_B.isObject(e)&&(e=JSON.stringify(e)),i.push(qB(t)+"="+qB(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},ez=OB;function tz(){this.handlers=[]}tz.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},tz.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},tz.prototype.forEach=function(e){ez.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var nz=tz,rz="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function iz(){throw new Error("setTimeout has not been defined")}function cz(){throw new Error("clearTimeout has not been defined")}var oz=iz,az=cz;function lz(e){if(oz===setTimeout)return setTimeout(e,0);if((oz===iz||!oz)&&setTimeout)return oz=setTimeout,setTimeout(e,0);try{return oz(e,0)}catch(t){try{return oz.call(null,e,0)}catch(t){return oz.call(this,e,0)}}}"function"==typeof rz.setTimeout&&(oz=setTimeout),"function"==typeof rz.clearTimeout&&(az=clearTimeout);var uz,dz=[],sz=!1,mz=-1;function hz(){sz&&uz&&(sz=!1,uz.length?dz=uz.concat(dz):mz=-1,dz.length&&Zz())}function Zz(){if(!sz){var e=lz(hz);sz=!0;for(var t=dz.length;t;){for(uz=dz,dz=[];++mz<t;)uz&&uz[mz].run();mz=-1,t=dz.length}uz=null,sz=!1,function(e){if(az===clearTimeout)return clearTimeout(e);if((az===cz||!az)&&clearTimeout)return az=clearTimeout,clearTimeout(e);try{az(e)}catch(t){try{return az.call(null,e)}catch(t){return az.call(this,e)}}}(e)}}function bz(e,t){this.fun=e,this.array=t}bz.prototype.run=function(){this.fun.apply(null,this.array)};function pz(){}var Iz=pz,gz=pz,yz=pz,Xz=pz,Gz=pz,Vz=pz,fz=pz;var Wz=rz.performance||{},Cz=Wz.now||Wz.mozNow||Wz.msNow||Wz.oNow||Wz.webkitNow||function(){return(new Date).getTime()};var vz=new Date;var Sz={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];dz.push(new bz(e,t)),1!==dz.length||sz||lz(Zz)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Iz,addListener:gz,once:yz,off:Xz,removeListener:Gz,removeAllListeners:Vz,emit:fz,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Cz.call(Wz),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-vz)/1e3}},Rz=Sz,Yz=OB,Jz=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},Kz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Nz=Jz,Lz=function(e,t,n,r,i){var c=new Error(e);return Nz(c,t,n,r,i)},Hz=Lz,xz=OB,Uz=xz.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var o=[];o.push(e+"="+encodeURIComponent(t)),xz.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),xz.isString(r)&&o.push("path="+r),xz.isString(i)&&o.push("domain="+i),!0===c&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},kz=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},Tz=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},wz=OB,Az=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Fz=OB,Bz=Fz.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=Fz.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function zz(e){this.message=e}zz.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},zz.prototype.__CANCEL__=!0;var jz=zz,Qz=OB,Mz=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(Hz("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},Pz=Uz,Ez=$B,Dz=function(e,t){return e&&!kz(t)?Tz(e,t):t},Oz=function(e){var t,n,r,i={};return e?(wz.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=wz.trim(e.substr(0,r)).toLowerCase(),n=wz.trim(e.substr(r+1)),t){if(i[t]&&Az.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},_z=Bz,qz=Lz,$z=Kz,ej=jz,tj=function(e){return new Promise((function(t,n){var r,i=e.data,c=e.headers,o=e.responseType;function a(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}Qz.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=Dz(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?Oz(l.getAllResponseHeaders()):null,i={data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};Mz((function(e){t(e),a()}),(function(e){n(e),a()}),i),l=null}}if(l.open(e.method.toUpperCase(),Ez(s,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(qz("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(qz("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||$z;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(qz(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},Qz.isStandardBrowserEnv()){var h=(e.withCredentials||_z(s))&&e.xsrfCookieName?Pz.read(e.xsrfCookieName):void 0;h&&(c[e.xsrfHeaderName]=h)}"setRequestHeader"in l&&Qz.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),Qz.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new ej("canceled"):e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},nj=OB,rj=function(e,t){Yz.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},ij=Jz,cj={"Content-Type":"application/x-www-form-urlencoded"};function oj(e,t){!nj.isUndefined(e)&&nj.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var aj,lj={transitional:Kz,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==Rz&&"[object process]"===Object.prototype.toString.call(Rz))&&(aj=tj),aj),transformRequest:[function(e,t){return rj(t,"Accept"),rj(t,"Content-Type"),nj.isFormData(e)||nj.isArrayBuffer(e)||nj.isBuffer(e)||nj.isStream(e)||nj.isFile(e)||nj.isBlob(e)?e:nj.isArrayBufferView(e)?e.buffer:nj.isURLSearchParams(e)?(oj(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):nj.isObject(e)||t&&"application/json"===t["Content-Type"]?(oj(t,"application/json"),function(e,t,n){if(nj.isString(e))try{return(t||JSON.parse)(e),nj.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||lj.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&nj.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw ij(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};nj.forEach(["delete","get","head"],(function(e){lj.headers[e]={}})),nj.forEach(["post","put","patch"],(function(e){lj.headers[e]=nj.merge(cj)}));var uj=lj,dj=OB,sj=uj,mj=function(e){return!(!e||!e.__CANCEL__)},hj=OB,Zj=function(e,t,n){var r=this||sj;return dj.forEach(n,(function(n){e=n.call(r,e,t)})),e},bj=mj,pj=uj,Ij=jz;function gj(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ij("canceled")}var yj=OB,Xj=function(e,t){t=t||{};var n={};function r(e,t){return yj.isPlainObject(e)&&yj.isPlainObject(t)?yj.merge(e,t):yj.isPlainObject(t)?yj.merge({},t):yj.isArray(t)?t.slice():t}function i(n){return yj.isUndefined(t[n])?yj.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!yj.isUndefined(t[e]))return r(void 0,t[e])}function o(n){return yj.isUndefined(t[n])?yj.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function a(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var l={url:c,method:c,data:c,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a};return yj.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);yj.isUndefined(r)&&t!==a||(n[e]=r)})),n},Gj="0.26.1",Vj=Gj,fj={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){fj[e]=function(n){return o(n)===e||"a"+(t<1?"n ":" ")+e}}));var Wj={};fj.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Vj+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,c){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!Wj[i]&&(Wj[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,c)}};var Cj={assertOptions:function(e,t,n){if("object"!==o(e))throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var c=r[i],a=t[c];if(a){var l=e[c],u=void 0===l||a(l,c,e);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:fj},vj=OB,Sj=$B,Rj=nz,Yj=function(e){return gj(e),e.headers=e.headers||{},e.data=Zj.call(e,e.data,e.headers,e.transformRequest),e.headers=hj.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),hj.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||pj.adapter)(e).then((function(t){return gj(e),t.data=Zj.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return bj(t)||(gj(e),t&&t.response&&(t.response.data=Zj.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Jj=Xj,Kj=Cj,Nj=Kj.validators;function Lj(e){this.defaults=e,this.interceptors={request:new Rj,response:new Rj}}Lj.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=Jj(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&Kj.assertOptions(n,{silentJSONParsing:Nj.transitional(Nj.boolean),forcedJSONParsing:Nj.transitional(Nj.boolean),clarifyTimeoutError:Nj.transitional(Nj.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var c,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!i){var a=[Yj,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(o),c=Promise.resolve(t);a.length;)c=c.then(a.shift(),a.shift());return c}for(var l=t;r.length;){var u=r.shift(),d=r.shift();try{l=u(l)}catch(e){d(e);break}}try{c=Yj(l)}catch(e){return Promise.reject(e)}for(;o.length;)c=c.then(o.shift(),o.shift());return c},Lj.prototype.getUri=function(e){return e=Jj(this.defaults,e),Sj(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},vj.forEach(["delete","get","head","options"],(function(e){Lj.prototype[e]=function(t,n){return this.request(Jj(n||{},{method:e,url:t,data:(n||{}).data}))}})),vj.forEach(["post","put","patch"],(function(e){Lj.prototype[e]=function(t,n,r){return this.request(Jj(r||{},{method:e,url:t,data:n}))}}));var Hj=Lj,xj=jz;function Uj(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new xj(e),t(n.reason))}))}Uj.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Uj.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},Uj.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},Uj.source=function(){var e,t=new Uj((function(t){e=t}));return{token:t,cancel:e}};var kj=Uj,Tj=OB,wj=OB,Aj=AB,Fj=Hj,Bj=Xj;var zj=function e(t){var n=new Fj(t),r=Aj(Fj.prototype.request,n);return wj.extend(r,Fj.prototype,n),wj.extend(r,n),r.create=function(n){return e(Bj(t,n))},r}(uj);zj.Axios=Fj,zj.Cancel=jz,zj.CancelToken=kj,zj.isCancel=mj,zj.VERSION=Gj,zj.all=function(e){return Promise.all(e)},zj.spread=function(e){return function(t){return e.apply(null,t)}},zj.isAxiosError=function(e){return Tj.isObject(e)&&!0===e.isAxiosError},wB.exports=zj,wB.exports.default=zj;var jj,Qj=wB.exports;var Mj=jj=function(){function e(){u(this,e),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return s(e,[{key:"requestHandler",value:function(e){return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.attachToken(e);case 2:return(null==e?void 0:e.shouldEncodeToFormData)&&(n=null==e?void 0:e.data,r=new FormData,Object.keys(n).forEach((function(e){r.append(e,n[e])})),e.data=r),jj.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(e),t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)})))}},{key:"errorHandler",value:function(e){throw jj.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"successHandler",value:function(e){return jj.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"init",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:jj.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){jj.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){jj.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jj.DEFAULT_HANDLER_DISABLE_TIMEOUT;jj.isHandlerEnabled=!1,setTimeout((function(){jj.isHandlerEnabled=!0}),e)}},{key:"setHttpRequestStartCallback",value:function(e){this.requestStartCallback=e}},{key:"setHttpRequestSuccessCallback",value:function(e){this.requestSuccessCallback=e}},{key:"setHttpRequestErrorCallback",value:function(e){this.requestErrorCallback=e}},{key:"setHttpRequestFinishCallback",value:function(e){this.requestFinishCallback=e}}],[{key:"getInstance",value:function(){var e=this;return this.axiosInstance||(this.axiosInstance=Qj.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new jj),this.axiosInstance.interceptors.request.use((function(t){return kF(e,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.clientInstance.requestHandler(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))})),this.axiosInstance.interceptors.response.use((function(t){return e.clientInstance.successHandler(t)}),(function(t){return e.clientInstance.errorHandler(t)})),this.axiosInstance.all=Qj.all,this.axiosInstance.spread=Qj.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),e}();Mj.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,Mj=jj=function(e,t,n,r){var i,c=arguments.length,a=c<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":o(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(a=(c<3?i(a):c>3?i(t,n,a):i(t,n))||a);return c>3&&a&&Object.defineProperty(t,n,a),a}([function(e){}],Mj);var Pj=function(){function e(){u(this,e)}return s(e,[{key:"setData",value:function(e,t){return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=localStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:localStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),Ej=function(){function e(){u(this,e),this._data=new Map}return s(e,[{key:"setData",value:function(e,t){return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(e,t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(e){var t,n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(t=this._data)||void 0===t?void 0:t.get(e))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(e){return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._data.delete(e);case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),Dj=function(){function e(){u(this,e)}return s(e,[{key:"setData",value:function(e,t){return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:sessionStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),Oj=[],_j=[],qj="undefined"!=typeof Uint8Array?Uint8Array:Array,$j=!1;function eQ(){$j=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Oj[t]=e[t],_j[e.charCodeAt(t)]=t;_j["-".charCodeAt(0)]=62,_j["_".charCodeAt(0)]=63}function tQ(e,t,n){for(var r,i,c=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],c.push(Oj[(i=r)>>18&63]+Oj[i>>12&63]+Oj[i>>6&63]+Oj[63&i]);return c.join("")}function nQ(e){var t;$j||eQ();for(var n=e.length,r=n%3,i="",c=[],o=16383,a=0,l=n-r;a<l;a+=o)c.push(tQ(e,a,a+o>l?l:a+o));return 1===r?(t=e[n-1],i+=Oj[t>>2],i+=Oj[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=Oj[t>>10],i+=Oj[t>>4&63],i+=Oj[t<<2&63],i+="="),c.push(i),c.join("")}function rQ(e,t,n,r,i){var c,o,a=8*i-r-1,l=(1<<a)-1,u=l>>1,d=-7,s=n?i-1:0,m=n?-1:1,h=e[t+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=a;d>0;c=256*c+e[t+s],s+=m,d-=8);for(o=c&(1<<-d)-1,c>>=-d,d+=r;d>0;o=256*o+e[t+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,r),c-=u}return(h?-1:1)*o*Math.pow(2,c-r)}function iQ(e,t,n,r,i,c){var o,a,l,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,Z=r?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(o++,l/=2),o+s>=d?(a=0,o=d):o+s>=1?(a=(t*l-1)*Math.pow(2,i),o+=s):(a=t*Math.pow(2,s-1)*Math.pow(2,i),o=0));i>=8;e[n+h]=255&a,h+=Z,a/=256,i-=8);for(o=o<<i|a,u+=i;u>0;e[n+h]=255&o,h+=Z,o/=256,u-=8);e[n+h-Z]|=128*b}var cQ={}.toString,oQ=Array.isArray||function(e){return"[object Array]"==cQ.call(e)};dQ.TYPED_ARRAY_SUPPORT=void 0===rz.TYPED_ARRAY_SUPPORT||rz.TYPED_ARRAY_SUPPORT;var aQ=lQ();function lQ(){return dQ.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function uQ(e,t){if(lQ()<t)throw new RangeError("Invalid typed array length");return dQ.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=dQ.prototype:(null===e&&(e=new dQ(t)),e.length=t),e}function dQ(e,t,n){if(!(dQ.TYPED_ARRAY_SUPPORT||this instanceof dQ))return new dQ(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return hQ(this,e)}return sQ(this,e,t,n)}function sQ(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);dQ.TYPED_ARRAY_SUPPORT?(e=t).__proto__=dQ.prototype:e=ZQ(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!dQ.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|IQ(t,n),i=(e=uQ(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(pQ(t)){var n=0|bQ(t.length);return 0===(e=uQ(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?uQ(e,0):ZQ(e,t);if("Buffer"===t.type&&oQ(t.data))return ZQ(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function mQ(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function hQ(e,t){if(mQ(t),e=uQ(e,t<0?0:0|bQ(t)),!dQ.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function ZQ(e,t){var n=t.length<0?0:0|bQ(t.length);e=uQ(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function bQ(e){if(e>=lQ())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+lQ().toString(16)+" bytes");return 0|e}function pQ(e){return!(null==e||!e._isBuffer)}function IQ(e,t){if(pQ(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return jQ(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return QQ(e).length;default:if(r)return jQ(e).length;t=(""+t).toLowerCase(),r=!0}}function gQ(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return LQ(this,t,n);case"utf8":case"utf-8":return YQ(this,t,n);case"ascii":return KQ(this,t,n);case"latin1":case"binary":return NQ(this,t,n);case"base64":return RQ(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return HQ(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function yQ(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function XQ(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=dQ.from(t,r)),pQ(t))return 0===t.length?-1:GQ(e,t,n,r,i);if("number"==typeof t)return t&=255,dQ.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):GQ(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function GQ(e,t,n,r,i){var c,o=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,l/=2,n/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var d=-1;for(c=n;c<a;c++)if(u(e,c)===u(t,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*o}else-1!==d&&(c-=c-d),d=-1}else for(n+l>a&&(n=a-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(e,c+m)!==u(t,m)){s=!1;break}if(s)return c}return-1}function VQ(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=t.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var o=0;o<r;++o){var a=parseInt(t.substr(2*o,2),16);if(isNaN(a))return o;e[n+o]=a}return o}function fQ(e,t,n,r){return MQ(jQ(t,e.length-n),e,n,r)}function WQ(e,t,n,r){return MQ(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function CQ(e,t,n,r){return WQ(e,t,n,r)}function vQ(e,t,n,r){return MQ(QQ(t),e,n,r)}function SQ(e,t,n,r){return MQ(function(e,t){for(var n,r,i,c=[],o=0;o<e.length&&!((t-=2)<0);++o)r=(n=e.charCodeAt(o))>>8,i=n%256,c.push(i),c.push(r);return c}(t,e.length-n),e,n,r)}function RQ(e,t,n){return 0===t&&n===e.length?nQ(e):nQ(e.slice(t,n))}function YQ(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var c,o,a,l,u=e[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=e[i+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=e[i+1],o=e[i+2],128==(192&c)&&128==(192&o)&&(l=(15&u)<<12|(63&c)<<6|63&o)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=e[i+1],o=e[i+2],a=e[i+3],128==(192&c)&&128==(192&o)&&128==(192&a)&&(l=(15&u)<<18|(63&c)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(e){var t=e.length;if(t<=JQ)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=JQ));return n}(r)}dQ.poolSize=8192,dQ._augment=function(e){return e.__proto__=dQ.prototype,e},dQ.from=function(e,t,n){return sQ(null,e,t,n)},dQ.TYPED_ARRAY_SUPPORT&&(dQ.prototype.__proto__=Uint8Array.prototype,dQ.__proto__=Uint8Array),dQ.alloc=function(e,t,n){return function(e,t,n,r){return mQ(t),t<=0?uQ(e,t):void 0!==n?"string"==typeof r?uQ(e,t).fill(n,r):uQ(e,t).fill(n):uQ(e,t)}(null,e,t,n)},dQ.allocUnsafe=function(e){return hQ(null,e)},dQ.allocUnsafeSlow=function(e){return hQ(null,e)},dQ.isBuffer=PQ,dQ.compare=function(e,t){if(!pQ(e)||!pQ(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,c=Math.min(n,r);i<c;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},dQ.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},dQ.concat=function(e,t){if(!oQ(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return dQ.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=dQ.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!pQ(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},dQ.byteLength=IQ,dQ.prototype._isBuffer=!0,dQ.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)yQ(this,t,t+1);return this},dQ.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)yQ(this,t,t+3),yQ(this,t+1,t+2);return this},dQ.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)yQ(this,t,t+7),yQ(this,t+1,t+6),yQ(this,t+2,t+5),yQ(this,t+3,t+4);return this},dQ.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?YQ(this,0,e):gQ.apply(this,arguments)},dQ.prototype.equals=function(e){if(!pQ(e))throw new TypeError("Argument must be a Buffer");return this===e||0===dQ.compare(this,e)},dQ.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},dQ.prototype.compare=function(e,t,n,r,i){if(!pQ(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var c=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),a=Math.min(c,o),l=this.slice(r,i),u=e.slice(t,n),d=0;d<a;++d)if(l[d]!==u[d]){c=l[d],o=u[d];break}return c<o?-1:o<c?1:0},dQ.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},dQ.prototype.indexOf=function(e,t,n){return XQ(this,e,t,n,!0)},dQ.prototype.lastIndexOf=function(e,t,n){return XQ(this,e,t,n,!1)},dQ.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return VQ(this,e,t,n);case"utf8":case"utf-8":return fQ(this,e,t,n);case"ascii":return WQ(this,e,t,n);case"latin1":case"binary":return CQ(this,e,t,n);case"base64":return vQ(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return SQ(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},dQ.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var JQ=4096;function KQ(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function NQ(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function LQ(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=t;c<n;++c)i+=zQ(e[c]);return i}function HQ(e,t,n){for(var r=e.slice(t,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function xQ(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function UQ(e,t,n,r,i,c){if(!pQ(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<c)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function kQ(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,c=Math.min(e.length-n,2);i<c;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function TQ(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,c=Math.min(e.length-n,4);i<c;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function wQ(e,t,n,r,i,c){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function AQ(e,t,n,r,i){return i||wQ(e,0,n,4),iQ(e,t,n,r,23,4),n+4}function FQ(e,t,n,r,i){return i||wQ(e,0,n,8),iQ(e,t,n,r,52,8),n+8}dQ.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),dQ.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=dQ.prototype;else{var i=t-e;n=new dQ(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},dQ.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||xQ(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},dQ.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||xQ(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},dQ.prototype.readUInt8=function(e,t){return t||xQ(e,1,this.length),this[e]},dQ.prototype.readUInt16LE=function(e,t){return t||xQ(e,2,this.length),this[e]|this[e+1]<<8},dQ.prototype.readUInt16BE=function(e,t){return t||xQ(e,2,this.length),this[e]<<8|this[e+1]},dQ.prototype.readUInt32LE=function(e,t){return t||xQ(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},dQ.prototype.readUInt32BE=function(e,t){return t||xQ(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},dQ.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||xQ(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},dQ.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||xQ(e,t,this.length);for(var r=t,i=1,c=this[e+--r];r>0&&(i*=256);)c+=this[e+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*t)),c},dQ.prototype.readInt8=function(e,t){return t||xQ(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},dQ.prototype.readInt16LE=function(e,t){t||xQ(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},dQ.prototype.readInt16BE=function(e,t){t||xQ(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},dQ.prototype.readInt32LE=function(e,t){return t||xQ(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},dQ.prototype.readInt32BE=function(e,t){return t||xQ(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},dQ.prototype.readFloatLE=function(e,t){return t||xQ(e,4,this.length),rQ(this,e,!0,23,4)},dQ.prototype.readFloatBE=function(e,t){return t||xQ(e,4,this.length),rQ(this,e,!1,23,4)},dQ.prototype.readDoubleLE=function(e,t){return t||xQ(e,8,this.length),rQ(this,e,!0,52,8)},dQ.prototype.readDoubleBE=function(e,t){return t||xQ(e,8,this.length),rQ(this,e,!1,52,8)},dQ.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UQ(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[t]=255&e;++c<n&&(i*=256);)this[t+c]=e/i&255;return t+n},dQ.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UQ(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[t+i]=255&e;--i>=0&&(c*=256);)this[t+i]=e/c&255;return t+n},dQ.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,1,255,0),dQ.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},dQ.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,2,65535,0),dQ.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):kQ(this,e,t,!0),t+2},dQ.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,2,65535,0),dQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):kQ(this,e,t,!1),t+2},dQ.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,4,4294967295,0),dQ.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):TQ(this,e,t,!0),t+4},dQ.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,4,4294967295,0),dQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):TQ(this,e,t,!1),t+4},dQ.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);UQ(this,e,t,n,i-1,-i)}var c=0,o=1,a=0;for(this[t]=255&e;++c<n&&(o*=256);)e<0&&0===a&&0!==this[t+c-1]&&(a=1),this[t+c]=(e/o>>0)-a&255;return t+n},dQ.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);UQ(this,e,t,n,i-1,-i)}var c=n-1,o=1,a=0;for(this[t+c]=255&e;--c>=0&&(o*=256);)e<0&&0===a&&0!==this[t+c+1]&&(a=1),this[t+c]=(e/o>>0)-a&255;return t+n},dQ.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,1,127,-128),dQ.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},dQ.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,2,32767,-32768),dQ.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):kQ(this,e,t,!0),t+2},dQ.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,2,32767,-32768),dQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):kQ(this,e,t,!1),t+2},dQ.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,4,2147483647,-2147483648),dQ.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):TQ(this,e,t,!0),t+4},dQ.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||UQ(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),dQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):TQ(this,e,t,!1),t+4},dQ.prototype.writeFloatLE=function(e,t,n){return AQ(this,e,t,!0,n)},dQ.prototype.writeFloatBE=function(e,t,n){return AQ(this,e,t,!1,n)},dQ.prototype.writeDoubleLE=function(e,t,n){return FQ(this,e,t,!0,n)},dQ.prototype.writeDoubleBE=function(e,t,n){return FQ(this,e,t,!1,n)},dQ.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,c=r-n;if(this===e&&n<t&&t<r)for(i=c-1;i>=0;--i)e[i+t]=this[i+n];else if(c<1e3||!dQ.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+c),t);return c},dQ.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!dQ.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var c;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(c=t;c<n;++c)this[c]=e;else{var o=pQ(e)?e:jQ(new dQ(e,r).toString()),a=o.length;for(c=0;c<n-t;++c)this[c+t]=o[c%a]}return this};var BQ=/[^+\/0-9A-Za-z-_]/g;function zQ(e){return e<16?"0"+e.toString(16):e.toString(16)}function jQ(e,t){var n;t=t||1/0;for(var r=e.length,i=null,c=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&c.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;c.push(n)}else if(n<2048){if((t-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function QQ(e){return function(e){var t,n,r,i,c,o;$j||eQ();var a=e.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[a-2]?2:"="===e[a-1]?1:0,o=new qj(3*a/4-c),r=c>0?a-4:a;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)i=_j[e.charCodeAt(t)]<<18|_j[e.charCodeAt(t+1)]<<12|_j[e.charCodeAt(t+2)]<<6|_j[e.charCodeAt(t+3)],o[l++]=i>>16&255,o[l++]=i>>8&255,o[l++]=255&i;return 2===c?(i=_j[e.charCodeAt(t)]<<2|_j[e.charCodeAt(t+1)]>>4,o[l++]=255&i):1===c&&(i=_j[e.charCodeAt(t)]<<10|_j[e.charCodeAt(t+1)]<<4|_j[e.charCodeAt(t+2)]>>2,o[l++]=i>>8&255,o[l++]=255&i),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(BQ,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function MQ(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function PQ(e){return null!=e&&(!!e._isBuffer||EQ(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&EQ(e.slice(0,0))}(e))}function EQ(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var DQ=Object.freeze({__proto__:null,Buffer:dQ,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),dQ.alloc(+e)},isBuffer:PQ,kMaxLength:aQ}),OQ={exports:{}},_Q={},qQ={};Object.defineProperty(qQ,"__esModule",{value:!0}),qQ.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,o=dQ.alloc(c);for(o.write(e);i--;)o.write("=",r++);return o.toString()},Object.defineProperty(_Q,"__esModule",{value:!0});var $Q=qQ;function eM(e,t){return void 0===t&&(t="utf8"),dQ.isBuffer(e)?nM(e.toString("base64")):nM(dQ.from(e,t).toString("base64"))}function tM(e){return e=e.toString(),$Q.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function nM(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var rM=eM;rM.encode=eM,rM.decode=function(e,t){return void 0===t&&(t="utf8"),dQ.from(tM(e),"base64").toString(t)},rM.toBase64=tM,rM.fromBase64=nM,rM.toBuffer=function(e){return dQ.from(tM(e),"base64")},_Q.default=rM,function(e){e.exports=_Q.default,e.exports.default=e.exports}(OQ);var iM=OQ.exports,cM={exports:{}};!function(e){!function(t,n){var r={};!function(e){e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(e,n,r,i,c){for(var o,a,l,u,d,s,m,h,Z,b,p,I,g;c>=64;){for(o=n[0],a=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],b=0;b<16;b++)p=i+4*b,e[b]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(b=16;b<64;b++)I=((Z=e[b-2])>>>17|Z<<15)^(Z>>>19|Z<<13)^Z>>>10,g=((Z=e[b-15])>>>7|Z<<25)^(Z>>>18|Z<<14)^Z>>>3,e[b]=(I+e[b-7]|0)+(g+e[b-16]|0);for(b=0;b<64;b++)I=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(t[b]+e[b]|0)|0)|0,g=((o>>>2|o<<30)^(o>>>13|o<<19)^(o>>>22|o<<10))+(o&a^o&l^a&l)|0,h=m,m=s,s=d,d=u+I|0,u=l,l=a,a=o,o=I+g|0;n[0]+=o,n[1]+=a,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,i+=64,c-=64}return i}var r=function(){function t(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()},t.prototype.update=function(e,t){if(void 0===t&&(t=e.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[r++],t--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(r=n(this.temp,this.state,e,r,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[r++],t--;return this},t.prototype.finish=function(e){if(!this.finished){var t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,c=t<<3,o=t%64<56?64:128;this.buffer[r]=128;for(var a=r+1;a<o-8;a++)this.buffer[a]=0;this.buffer[o-8]=i>>>24&255,this.buffer[o-7]=i>>>16&255,this.buffer[o-6]=i>>>8&255,this.buffer[o-5]=i>>>0&255,this.buffer[o-4]=c>>>24&255,this.buffer[o-3]=c>>>16&255,this.buffer[o-2]=c>>>8&255,this.buffer[o-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,o),this.finished=!0}for(a=0;a<8;a++)e[4*a+0]=this.state[a]>>>24&255,e[4*a+1]=this.state[a]>>>16&255,e[4*a+2]=this.state[a]>>>8&255,e[4*a+3]=this.state[a]>>>0&255;return this},t.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},t.prototype._saveState=function(e){for(var t=0;t<this.state.length;t++)e[t]=this.state[t]},t.prototype._restoreState=function(e,t){for(var n=0;n<this.state.length;n++)this.state[n]=e[n];this.bytesHashed=t,this.finished=!1,this.bufferLength=0},t}();e.Hash=r;var i=function(){function e(e){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var t=new Uint8Array(this.blockSize);if(e.length>this.blockSize)(new r).update(e).finish(t).clean();else for(var n=0;n<e.length;n++)t[n]=e[n];for(n=0;n<t.length;n++)t[n]^=54;this.inner.update(t);for(n=0;n<t.length;n++)t[n]^=106;this.outer.update(t),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<t.length;n++)t[n]=0}return e.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},e.prototype.clean=function(){for(var e=0;e<this.istate.length;e++)this.ostate[e]=this.istate[e]=0;this.inner.clean(),this.outer.clean()},e.prototype.update=function(e){return this.inner.update(e),this},e.prototype.finish=function(e){return this.outer.finished?this.outer.finish(e):(this.inner.finish(e),this.outer.update(e,this.digestLength).finish(e)),this},e.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},e}();function c(e){var t=(new r).update(e),n=t.digest();return t.clean(),n}function o(e,t){var n=new i(e).update(t),r=n.digest();return n.clean(),r}function a(e,t,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");t.reset(),i>1&&t.update(e),n&&t.update(n),t.update(r),t.finish(e),r[0]++}e.HMAC=i,e.hash=c,e.default=c,e.hmac=o;var l=new Uint8Array(e.digestLength);function u(e,t,n,r){void 0===t&&(t=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=o(t,e),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(r),Z=0;Z<r;Z++)m===s.length&&(a(s,d,n,c),m=0),h[Z]=s[m++];return d.clean(),s.fill(0),c.fill(0),h}function d(e,t,n,r){for(var c=new i(e),o=c.digestLength,a=new Uint8Array(4),l=new Uint8Array(o),u=new Uint8Array(o),d=new Uint8Array(r),s=0;s*o<r;s++){var m=s+1;a[0]=m>>>24&255,a[1]=m>>>16&255,a[2]=m>>>8&255,a[3]=m>>>0&255,c.reset(),c.update(t),c.update(a),c.finish(u);for(var h=0;h<o;h++)l[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var Z=0;Z<o;Z++)l[Z]^=u[Z]}for(h=0;h<o&&s*o+h<r;h++)d[s*o+h]=l[h]}for(s=0;s<o;s++)l[s]=u[s]=0;for(s=0;s<4;s++)a[s]=0;return c.clean(),d}e.hkdf=u,e.pbkdf2=d}(r);var i=r.default;for(var c in r)i[c]=r[c];e.exports=i}()}(cM);var oM=n(cM.exports),aM=crypto;function lM(e){try{return null!=e&&"boolean"==typeof e.extractable&&"string"==typeof e.algorithm.name&&"string"==typeof e.type}catch(e){return!1}}var uM=new TextEncoder,dM=new TextDecoder;function sM(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return e+t.length}),0),i=new Uint8Array(r),c=0;return t.forEach((function(e){i.set(e,c),c+=e.length})),i}var mM=function(e){var t=e;t instanceof Uint8Array&&(t=dM.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){for(var t=atob(e),n=new Uint8Array(t.length),r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},hM=function(e){h(n,e);var t=G(n);function n(e){var r,i;return u(this,n),(r=t.call(this,e)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,y(r),r.constructor),r}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(g(Error)),ZM=function(e){h(n,e);var t=G(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return u(this,n),(r=t.call(this,e)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(hM),bM=function(e){h(n,e);var t=G(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return u(this,n),(r=t.call(this,e)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(hM),pM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",e}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(hM),IM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",e}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(hM),gM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(hM),yM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWT_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(hM),XM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(hM),GM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",e.message="no applicable key found in the JSON Web Key Set",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(hM),VM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",e.message="multiple matching keys found in the JSON Web Key Set",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(hM),fM=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",e.message="signature verification failed",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}(hM);function WM(){return"function"==typeof WebSocketPair}function CM(){try{return void 0!==Rz.versions.node}catch(e){return!1}}function vM(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(t," must be ").concat(e))}function SM(e,t){return e.name===t}function RM(e){return parseInt(e.name.slice(4),10)}function YM(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function JM(e,t){if(t.length&&!t.some((function(t){return e.usages.includes(t)}))){var n="CryptoKey does not support this operation, its usages must include ";if(t.length>2){var r=t.pop();n+="one of ".concat(t.join(", "),", or ").concat(r,".")}else 2===t.length?n+="one of ".concat(t[0]," or ").concat(t[1],"."):n+="".concat(t[0],".");throw new TypeError(n)}}var KM=function(e){for(var t="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var c=r.pop();t+="one of type ".concat(r.join(", "),", or ").concat(c,".")}else 2===r.length?t+="one of type ".concat(r[0]," or ").concat(r[1],"."):t+="of type ".concat(r[0],".");return null==e?t+=" Received ".concat(e):"function"==typeof e&&e.name?t+=" Received function ".concat(e.name):"object"===o(e)&&null!=e&&e.constructor&&e.constructor.name&&(t+=" Received an instance of ".concat(e.constructor.name)),t},NM=function(e){return lM(e)},LM=["CryptoKey"],HM=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=t.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,o=v(i);try{for(o.s();!(c=o.n()).done;){var a=c.value,l=Object.keys(a);if(r&&0!==r.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(r.has(s))return!1;r.add(s)}else r=new Set(l)}}catch(e){o.e(e)}finally{o.f()}return!0};function xM(e){if("object"!==o(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}var UM=function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){var n=t.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(e," requires key modulusLength to be 2048 bits or larger"))}};function kM(e){var t,n;switch(e.kty){case"oct":switch(e.alg){case"HS256":case"HS384":case"HS512":t={name:"HMAC",hash:"SHA-".concat(e.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new IM("".concat(e.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":t={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":t={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":t={name:"PBKDF2"},n=["deriveBits"];break;default:throw new IM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(e.alg.slice(-3),10)||1)},n=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new IM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},n=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},n=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},n=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},n=e.d?["deriveBits"]:[];break;default:throw new IM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(WM()||CM())&&"OKP":if("EdDSA"!==e.alg)throw new IM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(e.crv){case"Ed25519":t={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=e.d?["sign"]:["verify"];break;case CM()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new IM('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new IM('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var TM=function(){var e=l(regeneratorRuntime.mark((function e(t){var n,r,i,o,a,l,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=kM(t),a=o.algorithm,l=o.keyUsages,u=[a,null!==(r=t.ext)&&void 0!==r&&r,null!==(i=t.key_ops)&&void 0!==i?i:l],"PBKDF2"!==a.name){e.next=4;break}return e.abrupt("return",(d=aM.subtle).importKey.apply(d,["raw",mM(t.k)].concat(u)));case 4:return delete(s=c({},t)).alg,e.abrupt("return",(n=aM.subtle).importKey.apply(n,["jwk",s].concat(u)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function wM(e,t,n){return AM.apply(this,arguments)}function AM(){return(AM=l(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(xM(t)){e.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=t.alg),"string"==typeof n&&n){e.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:e.t0=t.kty,e.next="oct"===e.t0?8:"RSA"===e.t0?14:"EC"===e.t0||"OKP"===e.t0?16:17;break;case 8:if("string"==typeof t.k&&t.k){e.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==t.ext),!r){e.next=13;break}return e.abrupt("return",TM(c(c({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",mM(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new IM('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",TM(c(c({},t),{},{alg:n})));case 17:throw new IM('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var FM=function(e,t,n){e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?function(e){if(!(e instanceof Uint8Array)){if(!NM(e))throw new TypeError(KM.apply(void 0,[e].concat(f(LM),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(LM.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!NM(e))throw new TypeError(KM.apply(void 0,[e].concat(f(LM))));if("secret"===e.type)throw new TypeError("".concat(LM.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(LM.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(LM.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(LM.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(LM.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function BM(e,t,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(e){return"string"!=typeof e||0===e.length})))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(f(Object.entries(n)),f(t.entries()))):t;var o,a=v(r.crit);try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!c.has(l))throw new IM('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new e('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new e('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(e){a.e(e)}finally{a.f()}return new Set(r.crit)}var zM=function(e,t){if(void 0!==t&&(!Array.isArray(t)||t.some((function(e){return"string"!=typeof e}))))throw new TypeError('"'.concat(e,'" option must be an array of strings'));if(t)return new Set(t)};function jM(e,t){var n="SHA-".concat(e.slice(-3));switch(e){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:e.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:t.namedCurve};case(WM()||CM())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new IM("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function QM(e,t,n){if(lM(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!SM(e.algorithm,"HMAC"))throw vM("HMAC");var n=parseInt(t.slice(2),10);if(RM(e.algorithm.hash)!==n)throw vM("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!SM(e.algorithm,"RSASSA-PKCS1-v1_5"))throw vM("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(RM(e.algorithm.hash)!==r)throw vM("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!SM(e.algorithm,"RSA-PSS"))throw vM("RSA-PSS");var i=parseInt(t.slice(2),10);if(RM(e.algorithm.hash)!==i)throw vM("SHA-".concat(i),"algorithm.hash");break;case CM()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw vM("NODE-ED25519 or NODE-ED448");break;case WM()&&"EdDSA":if(!SM(e.algorithm,"NODE-ED25519"))throw vM("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!SM(e.algorithm,"ECDSA"))throw vM("ECDSA");var c=YM(t);if(e.algorithm.namedCurve!==c)throw vM(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var o=arguments.length,a=new Array(o>2?o-2:0),l=2;l<o;l++)a[l-2]=arguments[l];JM(e,a)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(KM.apply(void 0,[t].concat(f(LM))));return aM.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(KM.apply(void 0,[t].concat(f(LM),["Uint8Array"])))}var MM=function(){var e=l(regeneratorRuntime.mark((function e(t,n,r,i){var c,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,QM(t,n,"verify");case 2:return c=e.sent,UM(t,c),o=jM(t,c.algorithm),e.prev=5,e.next=8,aM.subtle.verify(o,c,r,i);case 8:return e.abrupt("return",e.sent);case 11:return e.prev=11,e.t0=e.catch(5),e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(t,n,r,i){return e.apply(this,arguments)}}();function PM(e,t,n){return EM.apply(this,arguments)}function EM(){return EM=l(regeneratorRuntime.mark((function e(t,n,r){var i,o,a,l,u,d,s,m,h,Z,b,p,I;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(xM(t)){e.next=2;break}throw new gM("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new gM('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===t.protected||"string"==typeof t.protected){e.next=6;break}throw new gM("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new gM("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new gM("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||xM(t.header)){e.next=12;break}throw new gM("JWS Unprotected Header incorrect type");case 12:if(o={},!t.protected){e.next=22;break}a=mM(t.protected),e.prev=15,o=JSON.parse(dM.decode(a)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new gM("JWS Protected Header is invalid");case 22:if(HM(o,t.header)){e.next=24;break}throw new gM("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=c(c({},o),t.header),u=BM(gM,new Map([["b64",!0]]),null==r?void 0:r.crit,o,l),d=!0,!u.has("b64")){e.next=31;break}if("boolean"==typeof(d=o.b64)){e.next=31;break}throw new gM('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(s=l.alg)&&s){e.next=34;break}throw new gM('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&zM("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new pM('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){e.next=42;break}if("string"==typeof t.payload){e.next=40;break}throw new gM("JWS Payload must be a string");case 40:e.next=44;break;case 42:if("string"==typeof t.payload||t.payload instanceof Uint8Array){e.next=44;break}throw new gM("JWS Payload must be a string or an Uint8Array instance");case 44:if(h=!1,"function"!=typeof n){e.next=50;break}return e.next=48,n(o,t);case 48:n=e.sent,h=!0;case 50:return FM(s,n,"verify"),Z=sM(uM.encode(null!==(i=t.protected)&&void 0!==i?i:""),uM.encode("."),"string"==typeof t.payload?uM.encode(t.payload):t.payload),b=mM(t.signature),e.next=55,MM(s,n,b,Z);case 55:if(e.sent){e.next=58;break}throw new fM;case 58:if(p=d?mM(t.payload):"string"==typeof t.payload?uM.encode(t.payload):t.payload,I={payload:p},void 0!==t.protected&&(I.protectedHeader=o),void 0!==t.header&&(I.unprotectedHeader=t.header),!h){e.next=64;break}return e.abrupt("return",c(c({},I),{},{key:n}));case 64:return e.abrupt("return",I);case 65:case"end":return e.stop()}}),e,null,[[15,19]])}))),EM.apply(this,arguments)}function DM(e,t,n){return OM.apply(this,arguments)}function OM(){return OM=l(regeneratorRuntime.mark((function e(t,n,r){var i,o,a,l,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array&&(t=dM.decode(t)),"string"==typeof t){e.next=3;break}throw new gM("Compact JWS must be a string or Uint8Array");case 3:if(i=t.split("."),o=i[0],a=i[1],l=i[2],3===i.length){e.next=6;break}throw new gM("Invalid Compact JWS");case 6:return e.next=8,PM({payload:a,protected:o,signature:l},n,r);case 8:if(u=e.sent,d={payload:u.payload,protectedHeader:u.protectedHeader},"function"!=typeof n){e.next=12;break}return e.abrupt("return",c(c({},d),{},{key:u.key}));case 12:return e.abrupt("return",d);case 13:case"end":return e.stop()}}),e)}))),OM.apply(this,arguments)}var _M=function(e){return Math.floor(e.getTime()/1e3)},qM=86400,$M=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,eP=function(e){var t=$M.exec(e);if(!t)throw new TypeError("Invalid time period format");var n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(n*qM);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},tP=function(e){return e.toLowerCase().replace(/^application\//,"")},nP=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},rP=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||tP(e.typ)!==tP(i)))throw new ZM('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(dM.decode(t))}catch(e){}if(!xM(n))throw new yM("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new ZM('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new ZM('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!nP(n.aud,"string"==typeof u?[u]:u))throw new ZM('unexpected "aud" claim value',"aud","check_failed");switch(o(r.clockTolerance)){case"string":l=eP(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=r.currentDate,s=_M(d||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new ZM('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new ZM('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new ZM('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new ZM('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new bM('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,h="number"==typeof r.maxTokenAge?r.maxTokenAge:eP(r.maxTokenAge);if(m-l>h)throw new bM('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new ZM('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function iP(){return iP=l(regeneratorRuntime.mark((function e(t,n,r){var i,o,a,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,DM(t,n,r);case 2:if(o=e.sent,!(null===(i=o.protectedHeader.crit)||void 0===i?void 0:i.includes("b64"))||!1!==o.protectedHeader.b64){e.next=5;break}throw new yM("JWTs MUST NOT use unencoded payload");case 5:if(a=rP(o.protectedHeader,o.payload,r),l={payload:a,protectedHeader:o.protectedHeader},"function"!=typeof n){e.next=9;break}return e.abrupt("return",c(c({},l),{},{key:o.key}));case 9:return e.abrupt("return",l);case 10:case"end":return e.stop()}}),e)}))),iP.apply(this,arguments)}function cP(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new IM('Unsupported "alg" value for a JSON Web Key Set')}}function oP(e){return xM(e)}var aP=function(){function e(t){if(u(this,e),this._cached=new WeakMap,!function(e){return e&&"object"===o(e)&&Array.isArray(e.keys)&&e.keys.every(oP)}(t))throw new XM("JSON Web Key Set malformed");var n;this._jwks=(n=t,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var t;return s(e,[{key:"getKey",value:(t=l(regeneratorRuntime.mark((function e(t,n){var r,i,o,a,l,u,d,s,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=c(c({},t),n.header),i=r.alg,o=r.kid,a=cP(i),l=this._jwks.keys.filter((function(e){var t=a===e.kty;if(t&&"string"==typeof o&&(t=o===e.kid),t&&"string"==typeof e.alg&&(t=i===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===i&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(i){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t})),u=l[0],0!==(d=l.length)){e.next=8;break}throw new GM;case 8:if(1===d){e.next=10;break}throw new VM;case 10:if(void 0!==(s=this._cached.get(u)||this._cached.set(u,{}).get(u))[i]){e.next=18;break}return e.next=14,wM(c(c({},u),{},{ext:!0}),i);case 14:if(!((m=e.sent)instanceof Uint8Array||"public"!==m.type)){e.next=17;break}throw new XM("JSON Web Key Set members must be public keys");case 17:s[i]=m;case 18:return e.abrupt("return",s[i]);case 19:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var lP={exports:{}},uP={exports:{}},dP=r(DQ);
449
+ */},{key:"didSignOutFail",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}}]),e}(),rB="sign-out",iB="get_auth_url",cB="check_session_signed_in",oB="check_session_signed_out",aB="set_session_state_from_iframe";e.Storage=void 0,(OT=e.Storage||(e.Storage={})).LocalStorage="localStorage",OT.SessionStorage="sessionStorage",OT.WebWorker="webWorker",OT.BrowserMemory="browserMemory",e.Hooks=void 0,(DT=e.Hooks||(e.Hooks={})).SignIn="sign-in",DT.SignOut="sign-out",DT.Initialize="initialize",DT.HttpRequestStart="http-request-start",DT.HttpRequestFinish="http-request-finish",DT.HttpRequestError="http-request-error",DT.HttpRequestSuccess="http-request-success",DT.RevokeAccessToken="revoke-access-token",DT.CustomGrant="custom-grant",DT.SignOutFailed="sign-out-failed";var lB,uB,dB,sB,mB,ZB,hB,bB,pB,IB,gB,yB,XB,GB,fB,VB,WB,CB="rpIFrame",vB="promptNoneIFrame",RB="Y2hlY2tTZXNzaW9u",SB="sign-in-silently",YB="initialized-silent-sign-in",JB="promptNoneRequestSent",KB="error",LB="error_description",NB="custom_grant_config",HB="state",xB="Access token is invalid",kB=function(){function e(t){u(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return s(e,[{key:"refreshAccessTokenAutomatically",value:function(){return UT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(!(t=e.sent).refresh_token){e.next=9;break}return n=parseInt(t.expires_in),r=setTimeout((function(){return UT(i,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return e.stop()}}),e,this)})))}),1e3*(n<=10?n:n-10)),e.next=9,this._dataLayer.setTemporaryDataParameter(FT,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return UT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getTemporaryDataParameter(FT);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(FT);case 6:e.t1=e.sent,t=e.t0.parse.call(e.t0,e.t1),clearTimeout(t);case 9:case"end":return e.stop()}}),e,this)})))}}]),e}(),UB=function(){function e(){u(this,e)}return s(e,null,[{key:"removeAuthorizationCode",value:function(){var e=location.href;history.pushState({},document.title,e.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(e){var t;return null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:""}},{key:"setPKCE",value:function(e,t){sessionStorage.setItem(e,t)}},{key:"setSignOutURL",value:function(e){sessionStorage.setItem(jT,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(jT))&&void 0!==e?e:""}},{key:"removePKCE",value:function(e){sessionStorage.removeItem(e)}},{key:"canContinueSignIn",value:function(t,n){return!(t&&!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return e.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var e=sessionStorage.getItem(YB),t=e?JSON.parse(e):null;return Boolean(t)}},{key:"isSignOutSuccessful",value:function(){if(nB.isSignOutSuccessful(window.location.href)){var e=window.location.href.split("?")[0];return history.pushState({},document.title,e),!0}return!1}},{key:"didSignOutFail",value:function(){if(nB.didSignOutFail(window.location.href)){var e=new URL(window.location.href),t=e.searchParams.get(KB),n=e.searchParams.get(LB),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=t?t:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var e,t=new URL(window.location.href).searchParams.get("state");return null!==(e=null==t?void 0:t.includes(SB))&&void 0!==e&&e}},{key:"hasAuthSearchParamsInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,t=/[?&]code=[^&]+/;return t.test(e)}},{key:"hasErrorInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,t=new URL(e);return!!t.searchParams.get(KB)&&t.searchParams.get(HB)!==MT}},{key:"canSendPromptNoneRequest",value:function(){var e=sessionStorage.getItem(JB);return!(e?JSON.parse(e):null)}},{key:"setPromptNoneRequestSent",value:function(e){sessionStorage.setItem(JB,JSON.stringify(e))}},{key:"waitTillPageRedirect",value:function(e){return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=null!=e?e:3e3,t.next=3,new Promise((function(e){return setTimeout(e,1e3*n)}));case 3:case"end":return t.stop()}}),t)})))}}]),e}(),AB=(yB=function(e,t,n,r,i,c,o){lB=e,uB=t,dB=n,mB=c,ZB=i,gB=o,(sB=r)>-1&&XB(),ZB>-1&&(i=setInterval((function(){VB()}),1e3*ZB))},XB=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i,c,o,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,dB();case 2:r=t.sent,Boolean(lB)&&Boolean(r)&&(i="".concat(lB," ").concat(r),c=document.getElementById(CB),o=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.getElementById(n),null==(a=o.contentWindow)||a.postMessage(i,uB));case 4:case"end":return t.stop()}}),t)})))},uB&&lB&&mB){e.next=3;break}return e.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(CB),(null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(n)).src=uB+"?client_id="+lB+"&redirect_uri="+mB,e.next=9,r();case 9:bB=setInterval(r,1e3*sB),fB();case 11:case"end":return e.stop()}}),e)})))},GB=function(){clearInterval(bB),clearInterval(void 0)},fB=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=uB)&&!((null==r?void 0:r.indexOf(e.origin))<0)&&(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.type)!==aB){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==e.data){n.next=6;break}n.next=13;break;case 6:if("error"!==e.data){n.next=12;break}return n.next=9,hB();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&VB();case 13:case"end":return n.stop()}}),n)})))}),!1)},VB=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=document.getElementById(CB),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(vB),!UB.canSendPromptNoneRequest()){t.next=10;break}return UB.setPromptNoneRequestSent(!0),c=function e(t){var n,r,i;(null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.type)===aB&&(IB(null!==(i=null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",e))},pB!==e.Storage.BrowserMemory&&pB!==e.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),t.next=8,gB({prompt:"none",state:RB,responseMode:"query"});case 8:o=t.sent,i.src=o;case 10:case"end":return t.stop()}}),t)})))},WB=function(t){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d,s,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get(HB),o=new URL(window.location.href).searchParams.get(zT),a=window.parent.parent,null===c||!c.includes(RB)&&!c.includes(SB)){n.next=48;break}if(null===(l=new URL(window.location.href).searchParams.get("code"))||0===l.length){n.next=32;break}if(!c.includes(SB)){n.next=15;break}return u={data:{code:l,sessionState:null!=o?o:"",state:c},type:cB},sessionStorage.setItem(YB,"false"),a.postMessage(u,a.origin),UB.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,UB.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),pB!==e.Storage.LocalStorage&&pB!==e.Storage.SessionStorage){n.next=23;break}if(n.t0=t,!n.t0){n.next=21;break}return n.next=21,t(d);case 21:n.next=25;break;case 23:s={data:null!=d?d:"",type:aB},null===(i=null===(r=null===window||void 0===window?void 0:window.parent)||void 0===r?void 0:r.parent)||void 0===i||i.postMessage(s);case 25:return UB.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,UB.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(SB)){n.next=40;break}return m={type:oB},window.parent.parent.postMessage(m,a.origin),UB.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,UB.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return UB.setPromptNoneRequestSent(!1),n.next=43,hB();case 43:return a.location.href=n.sent,window.location.href="about:blank",n.next=47,UB.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(e,t,n){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id",CB),c.style.display="none",o=!1,c.onload=function(){var e,t,n,r,i=null==(c=document.getElementById(CB))?void 0:c.contentDocument,a=null==i?void 0:i.createElement("iframe");a&&(a.setAttribute("id","opIFrame"),a.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id",vB),l.style.display="none"),a&&(null===(t=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.body)||void 0===t||t.appendChild(a)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),o=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),hB=e,pB=t,IB=n,a=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 10:if(!1!==o){r.next=15;break}return r.next=13,a();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:yB,receivePromptNoneResponse:WB,reset:GB});case 16:case"end":return r.stop()}}),r)})))}),wB={exports:{}},FB=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},TB=FB,BB=Object.prototype.toString;function zB(e){return Array.isArray(e)}function jB(e){return void 0===e}function MB(e){return"[object ArrayBuffer]"===BB.call(e)}function QB(e){return null!==e&&"object"===o(e)}function PB(e){if("[object Object]"!==BB.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function EB(e){return"[object Function]"===BB.call(e)}function OB(e,t){if(null!=e)if("object"!==o(e)&&(e=[e]),zB(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var DB={isArray:zB,isArrayBuffer:MB,isBuffer:function(e){return null!==e&&!jB(e)&&null!==e.constructor&&!jB(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===BB.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&MB(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:QB,isPlainObject:PB,isUndefined:jB,isDate:function(e){return"[object Date]"===BB.call(e)},isFile:function(e){return"[object File]"===BB.call(e)},isBlob:function(e){return"[object Blob]"===BB.call(e)},isFunction:EB,isStream:function(e){return QB(e)&&EB(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===BB.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:OB,merge:function e(){var t={};function n(n,r){PB(t[r])&&PB(n)?t[r]=e(t[r],n):PB(n)?t[r]=e({},n):zB(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)OB(arguments[r],n);return t},extend:function(e,t,n){return OB(t,(function(t,r){e[r]=n&&"function"==typeof t?TB(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},_B=DB;function qB(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var $B=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(_B.isURLSearchParams(t))r=t.toString();else{var i=[];_B.forEach(t,(function(e,t){null!=e&&(_B.isArray(e)?t+="[]":e=[e],_B.forEach(e,(function(e){_B.isDate(e)?e=e.toISOString():_B.isObject(e)&&(e=JSON.stringify(e)),i.push(qB(t)+"="+qB(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},ez=DB;function tz(){this.handlers=[]}tz.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},tz.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},tz.prototype.forEach=function(e){ez.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var nz=tz,rz="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function iz(){throw new Error("setTimeout has not been defined")}function cz(){throw new Error("clearTimeout has not been defined")}var oz=iz,az=cz;function lz(e){if(oz===setTimeout)return setTimeout(e,0);if((oz===iz||!oz)&&setTimeout)return oz=setTimeout,setTimeout(e,0);try{return oz(e,0)}catch(t){try{return oz.call(null,e,0)}catch(t){return oz.call(this,e,0)}}}"function"==typeof rz.setTimeout&&(oz=setTimeout),"function"==typeof rz.clearTimeout&&(az=clearTimeout);var uz,dz=[],sz=!1,mz=-1;function Zz(){sz&&uz&&(sz=!1,uz.length?dz=uz.concat(dz):mz=-1,dz.length&&hz())}function hz(){if(!sz){var e=lz(Zz);sz=!0;for(var t=dz.length;t;){for(uz=dz,dz=[];++mz<t;)uz&&uz[mz].run();mz=-1,t=dz.length}uz=null,sz=!1,function(e){if(az===clearTimeout)return clearTimeout(e);if((az===cz||!az)&&clearTimeout)return az=clearTimeout,clearTimeout(e);try{az(e)}catch(t){try{return az.call(null,e)}catch(t){return az.call(this,e)}}}(e)}}function bz(e,t){this.fun=e,this.array=t}bz.prototype.run=function(){this.fun.apply(null,this.array)};function pz(){}var Iz=pz,gz=pz,yz=pz,Xz=pz,Gz=pz,fz=pz,Vz=pz;var Wz=rz.performance||{},Cz=Wz.now||Wz.mozNow||Wz.msNow||Wz.oNow||Wz.webkitNow||function(){return(new Date).getTime()};var vz=new Date;var Rz={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];dz.push(new bz(e,t)),1!==dz.length||sz||lz(hz)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Iz,addListener:gz,once:yz,off:Xz,removeListener:Gz,removeAllListeners:fz,emit:Vz,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Cz.call(Wz),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-vz)/1e3}},Sz=Rz,Yz=DB,Jz=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},Kz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Lz=Jz,Nz=function(e,t,n,r,i){var c=new Error(e);return Lz(c,t,n,r,i)},Hz=Nz,xz=DB,kz=xz.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var o=[];o.push(e+"="+encodeURIComponent(t)),xz.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),xz.isString(r)&&o.push("path="+r),xz.isString(i)&&o.push("domain="+i),!0===c&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},Uz=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},Az=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},wz=DB,Fz=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Tz=DB,Bz=Tz.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=Tz.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function zz(e){this.message=e}zz.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},zz.prototype.__CANCEL__=!0;var jz=zz,Mz=DB,Qz=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(Hz("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},Pz=kz,Ez=$B,Oz=function(e,t){return e&&!Uz(t)?Az(e,t):t},Dz=function(e){var t,n,r,i={};return e?(wz.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=wz.trim(e.substr(0,r)).toLowerCase(),n=wz.trim(e.substr(r+1)),t){if(i[t]&&Fz.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},_z=Bz,qz=Nz,$z=Kz,ej=jz,tj=function(e){return new Promise((function(t,n){var r,i=e.data,c=e.headers,o=e.responseType;function a(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}Mz.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=Oz(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?Dz(l.getAllResponseHeaders()):null,i={data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};Qz((function(e){t(e),a()}),(function(e){n(e),a()}),i),l=null}}if(l.open(e.method.toUpperCase(),Ez(s,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(qz("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(qz("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||$z;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(qz(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},Mz.isStandardBrowserEnv()){var Z=(e.withCredentials||_z(s))&&e.xsrfCookieName?Pz.read(e.xsrfCookieName):void 0;Z&&(c[e.xsrfHeaderName]=Z)}"setRequestHeader"in l&&Mz.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),Mz.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new ej("canceled"):e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},nj=DB,rj=function(e,t){Yz.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},ij=Jz,cj={"Content-Type":"application/x-www-form-urlencoded"};function oj(e,t){!nj.isUndefined(e)&&nj.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var aj,lj={transitional:Kz,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==Sz&&"[object process]"===Object.prototype.toString.call(Sz))&&(aj=tj),aj),transformRequest:[function(e,t){return rj(t,"Accept"),rj(t,"Content-Type"),nj.isFormData(e)||nj.isArrayBuffer(e)||nj.isBuffer(e)||nj.isStream(e)||nj.isFile(e)||nj.isBlob(e)?e:nj.isArrayBufferView(e)?e.buffer:nj.isURLSearchParams(e)?(oj(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):nj.isObject(e)||t&&"application/json"===t["Content-Type"]?(oj(t,"application/json"),function(e,t,n){if(nj.isString(e))try{return(t||JSON.parse)(e),nj.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||lj.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&nj.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw ij(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};nj.forEach(["delete","get","head"],(function(e){lj.headers[e]={}})),nj.forEach(["post","put","patch"],(function(e){lj.headers[e]=nj.merge(cj)}));var uj=lj,dj=DB,sj=uj,mj=function(e){return!(!e||!e.__CANCEL__)},Zj=DB,hj=function(e,t,n){var r=this||sj;return dj.forEach(n,(function(n){e=n.call(r,e,t)})),e},bj=mj,pj=uj,Ij=jz;function gj(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ij("canceled")}var yj=DB,Xj=function(e,t){t=t||{};var n={};function r(e,t){return yj.isPlainObject(e)&&yj.isPlainObject(t)?yj.merge(e,t):yj.isPlainObject(t)?yj.merge({},t):yj.isArray(t)?t.slice():t}function i(n){return yj.isUndefined(t[n])?yj.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!yj.isUndefined(t[e]))return r(void 0,t[e])}function o(n){return yj.isUndefined(t[n])?yj.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function a(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var l={url:c,method:c,data:c,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a};return yj.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);yj.isUndefined(r)&&t!==a||(n[e]=r)})),n},Gj="0.26.1",fj=Gj,Vj={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Vj[e]=function(n){return o(n)===e||"a"+(t<1?"n ":" ")+e}}));var Wj={};Vj.transitional=function(e,t,n){function r(e,t){return"[Axios v"+fj+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,c){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!Wj[i]&&(Wj[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,c)}};var Cj={assertOptions:function(e,t,n){if("object"!==o(e))throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var c=r[i],a=t[c];if(a){var l=e[c],u=void 0===l||a(l,c,e);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:Vj},vj=DB,Rj=$B,Sj=nz,Yj=function(e){return gj(e),e.headers=e.headers||{},e.data=hj.call(e,e.data,e.headers,e.transformRequest),e.headers=Zj.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Zj.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||pj.adapter)(e).then((function(t){return gj(e),t.data=hj.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return bj(t)||(gj(e),t&&t.response&&(t.response.data=hj.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Jj=Xj,Kj=Cj,Lj=Kj.validators;function Nj(e){this.defaults=e,this.interceptors={request:new Sj,response:new Sj}}Nj.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=Jj(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&Kj.assertOptions(n,{silentJSONParsing:Lj.transitional(Lj.boolean),forcedJSONParsing:Lj.transitional(Lj.boolean),clarifyTimeoutError:Lj.transitional(Lj.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var c,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!i){var a=[Yj,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(o),c=Promise.resolve(t);a.length;)c=c.then(a.shift(),a.shift());return c}for(var l=t;r.length;){var u=r.shift(),d=r.shift();try{l=u(l)}catch(e){d(e);break}}try{c=Yj(l)}catch(e){return Promise.reject(e)}for(;o.length;)c=c.then(o.shift(),o.shift());return c},Nj.prototype.getUri=function(e){return e=Jj(this.defaults,e),Rj(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},vj.forEach(["delete","get","head","options"],(function(e){Nj.prototype[e]=function(t,n){return this.request(Jj(n||{},{method:e,url:t,data:(n||{}).data}))}})),vj.forEach(["post","put","patch"],(function(e){Nj.prototype[e]=function(t,n,r){return this.request(Jj(r||{},{method:e,url:t,data:n}))}}));var Hj=Nj,xj=jz;function kj(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new xj(e),t(n.reason))}))}kj.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},kj.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},kj.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},kj.source=function(){var e,t=new kj((function(t){e=t}));return{token:t,cancel:e}};var Uj=kj,Aj=DB,wj=DB,Fj=FB,Tj=Hj,Bj=Xj;var zj=function e(t){var n=new Tj(t),r=Fj(Tj.prototype.request,n);return wj.extend(r,Tj.prototype,n),wj.extend(r,n),r.create=function(n){return e(Bj(t,n))},r}(uj);zj.Axios=Tj,zj.Cancel=jz,zj.CancelToken=Uj,zj.isCancel=mj,zj.VERSION=Gj,zj.all=function(e){return Promise.all(e)},zj.spread=function(e){return function(t){return e.apply(null,t)}},zj.isAxiosError=function(e){return Aj.isObject(e)&&!0===e.isAxiosError},wB.exports=zj,wB.exports.default=zj;var jj,Mj=wB.exports;var Qj=jj=function(){function e(){u(this,e),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return s(e,[{key:"requestHandler",value:function(e){return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.attachToken(e);case 2:return(null==e?void 0:e.shouldEncodeToFormData)&&(n=null==e?void 0:e.data,r=new FormData,Object.keys(n).forEach((function(e){r.append(e,n[e])})),e.data=r),jj.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(e),t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)})))}},{key:"errorHandler",value:function(e){throw jj.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"successHandler",value:function(e){return jj.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"init",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:jj.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){jj.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){jj.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jj.DEFAULT_HANDLER_DISABLE_TIMEOUT;jj.isHandlerEnabled=!1,setTimeout((function(){jj.isHandlerEnabled=!0}),e)}},{key:"setHttpRequestStartCallback",value:function(e){this.requestStartCallback=e}},{key:"setHttpRequestSuccessCallback",value:function(e){this.requestSuccessCallback=e}},{key:"setHttpRequestErrorCallback",value:function(e){this.requestErrorCallback=e}},{key:"setHttpRequestFinishCallback",value:function(e){this.requestFinishCallback=e}}],[{key:"getInstance",value:function(){var e=this;return this.axiosInstance||(this.axiosInstance=Mj.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new jj),this.axiosInstance.interceptors.request.use((function(t){return UT(e,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.clientInstance.requestHandler(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))})),this.axiosInstance.interceptors.response.use((function(t){return e.clientInstance.successHandler(t)}),(function(t){return e.clientInstance.errorHandler(t)})),this.axiosInstance.all=Mj.all,this.axiosInstance.spread=Mj.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),e}();Qj.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,Qj=jj=function(e,t,n,r){var i,c=arguments.length,a=c<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":o(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(a=(c<3?i(a):c>3?i(t,n,a):i(t,n))||a);return c>3&&a&&Object.defineProperty(t,n,a),a}([function(e){}],Qj);var Pj=function(){function e(){u(this,e)}return s(e,[{key:"setData",value:function(e,t){return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=localStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:localStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),Ej=function(){function e(){u(this,e),this._data=new Map}return s(e,[{key:"setData",value:function(e,t){return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(e,t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(e){var t,n;return UT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(t=this._data)||void 0===t?void 0:t.get(e))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(e){return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._data.delete(e);case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),Oj=function(){function e(){u(this,e)}return s(e,[{key:"setData",value:function(e,t){return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:sessionStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),Dj=[],_j=[],qj="undefined"!=typeof Uint8Array?Uint8Array:Array,$j=!1;function eM(){$j=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Dj[t]=e[t],_j[e.charCodeAt(t)]=t;_j["-".charCodeAt(0)]=62,_j["_".charCodeAt(0)]=63}function tM(e,t,n){for(var r,i,c=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],c.push(Dj[(i=r)>>18&63]+Dj[i>>12&63]+Dj[i>>6&63]+Dj[63&i]);return c.join("")}function nM(e){var t;$j||eM();for(var n=e.length,r=n%3,i="",c=[],o=16383,a=0,l=n-r;a<l;a+=o)c.push(tM(e,a,a+o>l?l:a+o));return 1===r?(t=e[n-1],i+=Dj[t>>2],i+=Dj[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=Dj[t>>10],i+=Dj[t>>4&63],i+=Dj[t<<2&63],i+="="),c.push(i),c.join("")}function rM(e,t,n,r,i){var c,o,a=8*i-r-1,l=(1<<a)-1,u=l>>1,d=-7,s=n?i-1:0,m=n?-1:1,Z=e[t+s];for(s+=m,c=Z&(1<<-d)-1,Z>>=-d,d+=a;d>0;c=256*c+e[t+s],s+=m,d-=8);for(o=c&(1<<-d)-1,c>>=-d,d+=r;d>0;o=256*o+e[t+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return o?NaN:1/0*(Z?-1:1);o+=Math.pow(2,r),c-=u}return(Z?-1:1)*o*Math.pow(2,c-r)}function iM(e,t,n,r,i,c){var o,a,l,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,Z=r?0:c-1,h=r?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(o++,l/=2),o+s>=d?(a=0,o=d):o+s>=1?(a=(t*l-1)*Math.pow(2,i),o+=s):(a=t*Math.pow(2,s-1)*Math.pow(2,i),o=0));i>=8;e[n+Z]=255&a,Z+=h,a/=256,i-=8);for(o=o<<i|a,u+=i;u>0;e[n+Z]=255&o,Z+=h,o/=256,u-=8);e[n+Z-h]|=128*b}var cM={}.toString,oM=Array.isArray||function(e){return"[object Array]"==cM.call(e)};dM.TYPED_ARRAY_SUPPORT=void 0===rz.TYPED_ARRAY_SUPPORT||rz.TYPED_ARRAY_SUPPORT;var aM=lM();function lM(){return dM.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function uM(e,t){if(lM()<t)throw new RangeError("Invalid typed array length");return dM.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=dM.prototype:(null===e&&(e=new dM(t)),e.length=t),e}function dM(e,t,n){if(!(dM.TYPED_ARRAY_SUPPORT||this instanceof dM))return new dM(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return ZM(this,e)}return sM(this,e,t,n)}function sM(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);dM.TYPED_ARRAY_SUPPORT?(e=t).__proto__=dM.prototype:e=hM(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!dM.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|IM(t,n),i=(e=uM(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(pM(t)){var n=0|bM(t.length);return 0===(e=uM(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?uM(e,0):hM(e,t);if("Buffer"===t.type&&oM(t.data))return hM(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function mM(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function ZM(e,t){if(mM(t),e=uM(e,t<0?0:0|bM(t)),!dM.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function hM(e,t){var n=t.length<0?0:0|bM(t.length);e=uM(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function bM(e){if(e>=lM())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+lM().toString(16)+" bytes");return 0|e}function pM(e){return!(null==e||!e._isBuffer)}function IM(e,t){if(pM(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return jM(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return MM(e).length;default:if(r)return jM(e).length;t=(""+t).toLowerCase(),r=!0}}function gM(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return NM(this,t,n);case"utf8":case"utf-8":return YM(this,t,n);case"ascii":return KM(this,t,n);case"latin1":case"binary":return LM(this,t,n);case"base64":return SM(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return HM(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function yM(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function XM(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=dM.from(t,r)),pM(t))return 0===t.length?-1:GM(e,t,n,r,i);if("number"==typeof t)return t&=255,dM.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):GM(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function GM(e,t,n,r,i){var c,o=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,l/=2,n/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var d=-1;for(c=n;c<a;c++)if(u(e,c)===u(t,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*o}else-1!==d&&(c-=c-d),d=-1}else for(n+l>a&&(n=a-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(e,c+m)!==u(t,m)){s=!1;break}if(s)return c}return-1}function fM(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=t.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var o=0;o<r;++o){var a=parseInt(t.substr(2*o,2),16);if(isNaN(a))return o;e[n+o]=a}return o}function VM(e,t,n,r){return QM(jM(t,e.length-n),e,n,r)}function WM(e,t,n,r){return QM(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function CM(e,t,n,r){return WM(e,t,n,r)}function vM(e,t,n,r){return QM(MM(t),e,n,r)}function RM(e,t,n,r){return QM(function(e,t){for(var n,r,i,c=[],o=0;o<e.length&&!((t-=2)<0);++o)r=(n=e.charCodeAt(o))>>8,i=n%256,c.push(i),c.push(r);return c}(t,e.length-n),e,n,r)}function SM(e,t,n){return 0===t&&n===e.length?nM(e):nM(e.slice(t,n))}function YM(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var c,o,a,l,u=e[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=e[i+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=e[i+1],o=e[i+2],128==(192&c)&&128==(192&o)&&(l=(15&u)<<12|(63&c)<<6|63&o)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=e[i+1],o=e[i+2],a=e[i+3],128==(192&c)&&128==(192&o)&&128==(192&a)&&(l=(15&u)<<18|(63&c)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(e){var t=e.length;if(t<=JM)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=JM));return n}(r)}dM.poolSize=8192,dM._augment=function(e){return e.__proto__=dM.prototype,e},dM.from=function(e,t,n){return sM(null,e,t,n)},dM.TYPED_ARRAY_SUPPORT&&(dM.prototype.__proto__=Uint8Array.prototype,dM.__proto__=Uint8Array),dM.alloc=function(e,t,n){return function(e,t,n,r){return mM(t),t<=0?uM(e,t):void 0!==n?"string"==typeof r?uM(e,t).fill(n,r):uM(e,t).fill(n):uM(e,t)}(null,e,t,n)},dM.allocUnsafe=function(e){return ZM(null,e)},dM.allocUnsafeSlow=function(e){return ZM(null,e)},dM.isBuffer=PM,dM.compare=function(e,t){if(!pM(e)||!pM(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,c=Math.min(n,r);i<c;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},dM.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},dM.concat=function(e,t){if(!oM(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return dM.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=dM.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!pM(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},dM.byteLength=IM,dM.prototype._isBuffer=!0,dM.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)yM(this,t,t+1);return this},dM.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)yM(this,t,t+3),yM(this,t+1,t+2);return this},dM.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)yM(this,t,t+7),yM(this,t+1,t+6),yM(this,t+2,t+5),yM(this,t+3,t+4);return this},dM.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?YM(this,0,e):gM.apply(this,arguments)},dM.prototype.equals=function(e){if(!pM(e))throw new TypeError("Argument must be a Buffer");return this===e||0===dM.compare(this,e)},dM.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},dM.prototype.compare=function(e,t,n,r,i){if(!pM(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var c=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),a=Math.min(c,o),l=this.slice(r,i),u=e.slice(t,n),d=0;d<a;++d)if(l[d]!==u[d]){c=l[d],o=u[d];break}return c<o?-1:o<c?1:0},dM.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},dM.prototype.indexOf=function(e,t,n){return XM(this,e,t,n,!0)},dM.prototype.lastIndexOf=function(e,t,n){return XM(this,e,t,n,!1)},dM.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return fM(this,e,t,n);case"utf8":case"utf-8":return VM(this,e,t,n);case"ascii":return WM(this,e,t,n);case"latin1":case"binary":return CM(this,e,t,n);case"base64":return vM(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return RM(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},dM.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var JM=4096;function KM(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function LM(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function NM(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=t;c<n;++c)i+=zM(e[c]);return i}function HM(e,t,n){for(var r=e.slice(t,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function xM(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function kM(e,t,n,r,i,c){if(!pM(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<c)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function UM(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,c=Math.min(e.length-n,2);i<c;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function AM(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,c=Math.min(e.length-n,4);i<c;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function wM(e,t,n,r,i,c){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function FM(e,t,n,r,i){return i||wM(e,0,n,4),iM(e,t,n,r,23,4),n+4}function TM(e,t,n,r,i){return i||wM(e,0,n,8),iM(e,t,n,r,52,8),n+8}dM.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),dM.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=dM.prototype;else{var i=t-e;n=new dM(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},dM.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||xM(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},dM.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||xM(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},dM.prototype.readUInt8=function(e,t){return t||xM(e,1,this.length),this[e]},dM.prototype.readUInt16LE=function(e,t){return t||xM(e,2,this.length),this[e]|this[e+1]<<8},dM.prototype.readUInt16BE=function(e,t){return t||xM(e,2,this.length),this[e]<<8|this[e+1]},dM.prototype.readUInt32LE=function(e,t){return t||xM(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},dM.prototype.readUInt32BE=function(e,t){return t||xM(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},dM.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||xM(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},dM.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||xM(e,t,this.length);for(var r=t,i=1,c=this[e+--r];r>0&&(i*=256);)c+=this[e+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*t)),c},dM.prototype.readInt8=function(e,t){return t||xM(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},dM.prototype.readInt16LE=function(e,t){t||xM(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},dM.prototype.readInt16BE=function(e,t){t||xM(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},dM.prototype.readInt32LE=function(e,t){return t||xM(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},dM.prototype.readInt32BE=function(e,t){return t||xM(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},dM.prototype.readFloatLE=function(e,t){return t||xM(e,4,this.length),rM(this,e,!0,23,4)},dM.prototype.readFloatBE=function(e,t){return t||xM(e,4,this.length),rM(this,e,!1,23,4)},dM.prototype.readDoubleLE=function(e,t){return t||xM(e,8,this.length),rM(this,e,!0,52,8)},dM.prototype.readDoubleBE=function(e,t){return t||xM(e,8,this.length),rM(this,e,!1,52,8)},dM.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||kM(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[t]=255&e;++c<n&&(i*=256);)this[t+c]=e/i&255;return t+n},dM.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||kM(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[t+i]=255&e;--i>=0&&(c*=256);)this[t+i]=e/c&255;return t+n},dM.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,1,255,0),dM.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},dM.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,2,65535,0),dM.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):UM(this,e,t,!0),t+2},dM.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,2,65535,0),dM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):UM(this,e,t,!1),t+2},dM.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,4,4294967295,0),dM.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):AM(this,e,t,!0),t+4},dM.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,4,4294967295,0),dM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):AM(this,e,t,!1),t+4},dM.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);kM(this,e,t,n,i-1,-i)}var c=0,o=1,a=0;for(this[t]=255&e;++c<n&&(o*=256);)e<0&&0===a&&0!==this[t+c-1]&&(a=1),this[t+c]=(e/o>>0)-a&255;return t+n},dM.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);kM(this,e,t,n,i-1,-i)}var c=n-1,o=1,a=0;for(this[t+c]=255&e;--c>=0&&(o*=256);)e<0&&0===a&&0!==this[t+c+1]&&(a=1),this[t+c]=(e/o>>0)-a&255;return t+n},dM.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,1,127,-128),dM.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},dM.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,2,32767,-32768),dM.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):UM(this,e,t,!0),t+2},dM.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,2,32767,-32768),dM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):UM(this,e,t,!1),t+2},dM.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,4,2147483647,-2147483648),dM.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):AM(this,e,t,!0),t+4},dM.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||kM(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),dM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):AM(this,e,t,!1),t+4},dM.prototype.writeFloatLE=function(e,t,n){return FM(this,e,t,!0,n)},dM.prototype.writeFloatBE=function(e,t,n){return FM(this,e,t,!1,n)},dM.prototype.writeDoubleLE=function(e,t,n){return TM(this,e,t,!0,n)},dM.prototype.writeDoubleBE=function(e,t,n){return TM(this,e,t,!1,n)},dM.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,c=r-n;if(this===e&&n<t&&t<r)for(i=c-1;i>=0;--i)e[i+t]=this[i+n];else if(c<1e3||!dM.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+c),t);return c},dM.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!dM.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var c;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(c=t;c<n;++c)this[c]=e;else{var o=pM(e)?e:jM(new dM(e,r).toString()),a=o.length;for(c=0;c<n-t;++c)this[c+t]=o[c%a]}return this};var BM=/[^+\/0-9A-Za-z-_]/g;function zM(e){return e<16?"0"+e.toString(16):e.toString(16)}function jM(e,t){var n;t=t||1/0;for(var r=e.length,i=null,c=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&c.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;c.push(n)}else if(n<2048){if((t-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function MM(e){return function(e){var t,n,r,i,c,o;$j||eM();var a=e.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[a-2]?2:"="===e[a-1]?1:0,o=new qj(3*a/4-c),r=c>0?a-4:a;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)i=_j[e.charCodeAt(t)]<<18|_j[e.charCodeAt(t+1)]<<12|_j[e.charCodeAt(t+2)]<<6|_j[e.charCodeAt(t+3)],o[l++]=i>>16&255,o[l++]=i>>8&255,o[l++]=255&i;return 2===c?(i=_j[e.charCodeAt(t)]<<2|_j[e.charCodeAt(t+1)]>>4,o[l++]=255&i):1===c&&(i=_j[e.charCodeAt(t)]<<10|_j[e.charCodeAt(t+1)]<<4|_j[e.charCodeAt(t+2)]>>2,o[l++]=i>>8&255,o[l++]=255&i),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(BM,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function QM(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function PM(e){return null!=e&&(!!e._isBuffer||EM(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&EM(e.slice(0,0))}(e))}function EM(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var OM=Object.freeze({__proto__:null,Buffer:dM,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),dM.alloc(+e)},isBuffer:PM,kMaxLength:aM}),DM={exports:{}},_M={},qM={};Object.defineProperty(qM,"__esModule",{value:!0}),qM.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,o=dM.alloc(c);for(o.write(e);i--;)o.write("=",r++);return o.toString()},Object.defineProperty(_M,"__esModule",{value:!0});var $M=qM;function eQ(e,t){return void 0===t&&(t="utf8"),dM.isBuffer(e)?nQ(e.toString("base64")):nQ(dM.from(e,t).toString("base64"))}function tQ(e){return e=e.toString(),$M.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function nQ(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var rQ=eQ;rQ.encode=eQ,rQ.decode=function(e,t){return void 0===t&&(t="utf8"),dM.from(tQ(e),"base64").toString(t)},rQ.toBase64=tQ,rQ.fromBase64=nQ,rQ.toBuffer=function(e){return dM.from(tQ(e),"base64")},_M.default=rQ,function(e){e.exports=_M.default,e.exports.default=e.exports}(DM);var iQ=DM.exports,cQ={exports:{}};!function(e){!function(t,n){var r={};!function(e){e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(e,n,r,i,c){for(var o,a,l,u,d,s,m,Z,h,b,p,I,g;c>=64;){for(o=n[0],a=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],Z=n[7],b=0;b<16;b++)p=i+4*b,e[b]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(b=16;b<64;b++)I=((h=e[b-2])>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,g=((h=e[b-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,e[b]=(I+e[b-7]|0)+(g+e[b-16]|0);for(b=0;b<64;b++)I=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(Z+(t[b]+e[b]|0)|0)|0,g=((o>>>2|o<<30)^(o>>>13|o<<19)^(o>>>22|o<<10))+(o&a^o&l^a&l)|0,Z=m,m=s,s=d,d=u+I|0,u=l,l=a,a=o,o=I+g|0;n[0]+=o,n[1]+=a,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=Z,i+=64,c-=64}return i}var r=function(){function t(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()},t.prototype.update=function(e,t){if(void 0===t&&(t=e.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[r++],t--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(r=n(this.temp,this.state,e,r,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[r++],t--;return this},t.prototype.finish=function(e){if(!this.finished){var t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,c=t<<3,o=t%64<56?64:128;this.buffer[r]=128;for(var a=r+1;a<o-8;a++)this.buffer[a]=0;this.buffer[o-8]=i>>>24&255,this.buffer[o-7]=i>>>16&255,this.buffer[o-6]=i>>>8&255,this.buffer[o-5]=i>>>0&255,this.buffer[o-4]=c>>>24&255,this.buffer[o-3]=c>>>16&255,this.buffer[o-2]=c>>>8&255,this.buffer[o-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,o),this.finished=!0}for(a=0;a<8;a++)e[4*a+0]=this.state[a]>>>24&255,e[4*a+1]=this.state[a]>>>16&255,e[4*a+2]=this.state[a]>>>8&255,e[4*a+3]=this.state[a]>>>0&255;return this},t.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},t.prototype._saveState=function(e){for(var t=0;t<this.state.length;t++)e[t]=this.state[t]},t.prototype._restoreState=function(e,t){for(var n=0;n<this.state.length;n++)this.state[n]=e[n];this.bytesHashed=t,this.finished=!1,this.bufferLength=0},t}();e.Hash=r;var i=function(){function e(e){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var t=new Uint8Array(this.blockSize);if(e.length>this.blockSize)(new r).update(e).finish(t).clean();else for(var n=0;n<e.length;n++)t[n]=e[n];for(n=0;n<t.length;n++)t[n]^=54;this.inner.update(t);for(n=0;n<t.length;n++)t[n]^=106;this.outer.update(t),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<t.length;n++)t[n]=0}return e.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},e.prototype.clean=function(){for(var e=0;e<this.istate.length;e++)this.ostate[e]=this.istate[e]=0;this.inner.clean(),this.outer.clean()},e.prototype.update=function(e){return this.inner.update(e),this},e.prototype.finish=function(e){return this.outer.finished?this.outer.finish(e):(this.inner.finish(e),this.outer.update(e,this.digestLength).finish(e)),this},e.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},e}();function c(e){var t=(new r).update(e),n=t.digest();return t.clean(),n}function o(e,t){var n=new i(e).update(t),r=n.digest();return n.clean(),r}function a(e,t,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");t.reset(),i>1&&t.update(e),n&&t.update(n),t.update(r),t.finish(e),r[0]++}e.HMAC=i,e.hash=c,e.default=c,e.hmac=o;var l=new Uint8Array(e.digestLength);function u(e,t,n,r){void 0===t&&(t=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=o(t,e),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,Z=new Uint8Array(r),h=0;h<r;h++)m===s.length&&(a(s,d,n,c),m=0),Z[h]=s[m++];return d.clean(),s.fill(0),c.fill(0),Z}function d(e,t,n,r){for(var c=new i(e),o=c.digestLength,a=new Uint8Array(4),l=new Uint8Array(o),u=new Uint8Array(o),d=new Uint8Array(r),s=0;s*o<r;s++){var m=s+1;a[0]=m>>>24&255,a[1]=m>>>16&255,a[2]=m>>>8&255,a[3]=m>>>0&255,c.reset(),c.update(t),c.update(a),c.finish(u);for(var Z=0;Z<o;Z++)l[Z]=u[Z];for(Z=2;Z<=n;Z++){c.reset(),c.update(u).finish(u);for(var h=0;h<o;h++)l[h]^=u[h]}for(Z=0;Z<o&&s*o+Z<r;Z++)d[s*o+Z]=l[Z]}for(s=0;s<o;s++)l[s]=u[s]=0;for(s=0;s<4;s++)a[s]=0;return c.clean(),d}e.hkdf=u,e.pbkdf2=d}(r);var i=r.default;for(var c in r)i[c]=r[c];e.exports=i}()}(cQ);var oQ=n(cQ.exports),aQ=crypto,lQ=function(e){return e instanceof CryptoKey},uQ=new TextEncoder,dQ=new TextDecoder;function sQ(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return e+t.length}),0),i=new Uint8Array(r),c=0;return t.forEach((function(e){i.set(e,c),c+=e.length})),i}var mQ=function(e){var t=e;t instanceof Uint8Array&&(t=dQ.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){for(var t=atob(e),n=new Uint8Array(t.length),r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},ZQ=function(e){Z(n,e);var t=G(n);function n(e){var r,i;return u(this,n),(r=t.call(this,e)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,y(r),r.constructor),r}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(g(Error)),hQ=function(e){Z(n,e);var t=G(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return u(this,n),(r=t.call(this,e)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(ZQ),bQ=function(e){Z(n,e);var t=G(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return u(this,n),(r=t.call(this,e)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(ZQ),pQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",e}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(ZQ),IQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",e}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(ZQ),gQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(ZQ),yQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWT_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(ZQ),XQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(ZQ),GQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",e.message="no applicable key found in the JSON Web Key Set",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(ZQ),fQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",e.message="multiple matching keys found in the JSON Web Key Set",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(ZQ),VQ=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",e.message="signature verification failed",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}(ZQ);function WQ(){return"function"==typeof WebSocketPair}function CQ(){try{return void 0!==Sz.versions.node}catch(e){return!1}}function vQ(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(t," must be ").concat(e))}function RQ(e,t){return e.name===t}function SQ(e){return parseInt(e.name.slice(4),10)}function YQ(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function JQ(e,t){if(t.length&&!t.some((function(t){return e.usages.includes(t)}))){var n="CryptoKey does not support this operation, its usages must include ";if(t.length>2){var r=t.pop();n+="one of ".concat(t.join(", "),", or ").concat(r,".")}else 2===t.length?n+="one of ".concat(t[0]," or ").concat(t[1],"."):n+="".concat(t[0],".");throw new TypeError(n)}}var KQ=function(e){for(var t="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var c=r.pop();t+="one of type ".concat(r.join(", "),", or ").concat(c,".")}else 2===r.length?t+="one of type ".concat(r[0]," or ").concat(r[1],"."):t+="of type ".concat(r[0],".");return null==e?t+=" Received ".concat(e):"function"==typeof e&&e.name?t+=" Received function ".concat(e.name):"object"===o(e)&&null!=e&&e.constructor&&e.constructor.name&&(t+=" Received an instance of ".concat(e.constructor.name)),t},LQ=function(e){return lQ(e)},NQ=["CryptoKey"],HQ=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=t.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,o=v(i);try{for(o.s();!(c=o.n()).done;){var a=c.value,l=Object.keys(a);if(r&&0!==r.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(r.has(s))return!1;r.add(s)}else r=new Set(l)}}catch(e){o.e(e)}finally{o.f()}return!0};function xQ(e){if("object"!==o(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}var kQ=function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){var n=t.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(e," requires key modulusLength to be 2048 bits or larger"))}};function UQ(e){var t,n;switch(e.kty){case"oct":switch(e.alg){case"HS256":case"HS384":case"HS512":t={name:"HMAC",hash:"SHA-".concat(e.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new IQ("".concat(e.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":t={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":t={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":t={name:"PBKDF2"},n=["deriveBits"];break;default:throw new IQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(e.alg.slice(-3),10)||1)},n=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new IQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},n=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},n=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},n=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},n=e.d?["deriveBits"]:[];break;default:throw new IQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(WQ()||CQ())&&"OKP":if("EdDSA"!==e.alg)throw new IQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(e.crv){case"Ed25519":t={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=e.d?["sign"]:["verify"];break;case CQ()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new IQ('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new IQ('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var AQ=function(){var e=l(regeneratorRuntime.mark((function e(t){var n,r,i,o,a,l,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=UQ(t),a=o.algorithm,l=o.keyUsages,u=[a,null!==(r=t.ext)&&void 0!==r&&r,null!==(i=t.key_ops)&&void 0!==i?i:l],"PBKDF2"!==a.name){e.next=4;break}return e.abrupt("return",(d=aQ.subtle).importKey.apply(d,["raw",mQ(t.k)].concat(u)));case 4:return delete(s=c({},t)).alg,e.abrupt("return",(n=aQ.subtle).importKey.apply(n,["jwk",s].concat(u)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function wQ(e,t,n){return FQ.apply(this,arguments)}function FQ(){return(FQ=l(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(xQ(t)){e.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=t.alg),"string"==typeof n&&n){e.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:e.t0=t.kty,e.next="oct"===e.t0?8:"RSA"===e.t0?14:"EC"===e.t0||"OKP"===e.t0?16:17;break;case 8:if("string"==typeof t.k&&t.k){e.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==t.ext),!r){e.next=13;break}return e.abrupt("return",AQ(c(c({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",mQ(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new IQ('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",AQ(c(c({},t),{},{alg:n})));case 17:throw new IQ('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var TQ=function(e,t,n){e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?function(e){if(!(e instanceof Uint8Array)){if(!LQ(e))throw new TypeError(KQ.apply(void 0,[e].concat(V(NQ),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(NQ.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!LQ(e))throw new TypeError(KQ.apply(void 0,[e].concat(V(NQ))));if("secret"===e.type)throw new TypeError("".concat(NQ.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(NQ.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(NQ.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(NQ.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(NQ.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function BQ(e,t,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(e){return"string"!=typeof e||0===e.length})))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(V(Object.entries(n)),V(t.entries()))):t;var o,a=v(r.crit);try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!c.has(l))throw new IQ('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new e('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new e('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(e){a.e(e)}finally{a.f()}return new Set(r.crit)}var zQ=function(e,t){if(void 0!==t&&(!Array.isArray(t)||t.some((function(e){return"string"!=typeof e}))))throw new TypeError('"'.concat(e,'" option must be an array of strings'));if(t)return new Set(t)};function jQ(e,t){var n="SHA-".concat(e.slice(-3));switch(e){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:e.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:t.namedCurve};case(WQ()||CQ())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new IQ("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function MQ(e,t,n){if(lQ(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!RQ(e.algorithm,"HMAC"))throw vQ("HMAC");var n=parseInt(t.slice(2),10);if(SQ(e.algorithm.hash)!==n)throw vQ("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!RQ(e.algorithm,"RSASSA-PKCS1-v1_5"))throw vQ("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(SQ(e.algorithm.hash)!==r)throw vQ("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!RQ(e.algorithm,"RSA-PSS"))throw vQ("RSA-PSS");var i=parseInt(t.slice(2),10);if(SQ(e.algorithm.hash)!==i)throw vQ("SHA-".concat(i),"algorithm.hash");break;case CQ()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw vQ("NODE-ED25519 or NODE-ED448");break;case WQ()&&"EdDSA":if(!RQ(e.algorithm,"NODE-ED25519"))throw vQ("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!RQ(e.algorithm,"ECDSA"))throw vQ("ECDSA");var c=YQ(t);if(e.algorithm.namedCurve!==c)throw vQ(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var o=arguments.length,a=new Array(o>2?o-2:0),l=2;l<o;l++)a[l-2]=arguments[l];JQ(e,a)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(KQ.apply(void 0,[t].concat(V(NQ))));return aQ.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(KQ.apply(void 0,[t].concat(V(NQ),["Uint8Array"])))}var QQ=function(){var e=l(regeneratorRuntime.mark((function e(t,n,r,i){var c,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,MQ(t,n,"verify");case 2:return c=e.sent,kQ(t,c),o=jQ(t,c.algorithm),e.prev=5,e.next=8,aQ.subtle.verify(o,c,r,i);case 8:return e.abrupt("return",e.sent);case 11:return e.prev=11,e.t0=e.catch(5),e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(t,n,r,i){return e.apply(this,arguments)}}();function PQ(e,t,n){return EQ.apply(this,arguments)}function EQ(){return EQ=l(regeneratorRuntime.mark((function e(t,n,r){var i,o,a,l,u,d,s,m,Z,h,b,p,I;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(xQ(t)){e.next=2;break}throw new gQ("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new gQ('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===t.protected||"string"==typeof t.protected){e.next=6;break}throw new gQ("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new gQ("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new gQ("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||xQ(t.header)){e.next=12;break}throw new gQ("JWS Unprotected Header incorrect type");case 12:if(o={},!t.protected){e.next=22;break}a=mQ(t.protected),e.prev=15,o=JSON.parse(dQ.decode(a)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new gQ("JWS Protected Header is invalid");case 22:if(HQ(o,t.header)){e.next=24;break}throw new gQ("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=c(c({},o),t.header),u=BQ(gQ,new Map([["b64",!0]]),null==r?void 0:r.crit,o,l),d=!0,!u.has("b64")){e.next=31;break}if("boolean"==typeof(d=o.b64)){e.next=31;break}throw new gQ('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(s=l.alg)&&s){e.next=34;break}throw new gQ('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&zQ("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new pQ('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){e.next=42;break}if("string"==typeof t.payload){e.next=40;break}throw new gQ("JWS Payload must be a string");case 40:e.next=44;break;case 42:if("string"==typeof t.payload||t.payload instanceof Uint8Array){e.next=44;break}throw new gQ("JWS Payload must be a string or an Uint8Array instance");case 44:if(Z=!1,"function"!=typeof n){e.next=50;break}return e.next=48,n(o,t);case 48:n=e.sent,Z=!0;case 50:return TQ(s,n,"verify"),h=sQ(uQ.encode(null!==(i=t.protected)&&void 0!==i?i:""),uQ.encode("."),"string"==typeof t.payload?uQ.encode(t.payload):t.payload),b=mQ(t.signature),e.next=55,QQ(s,n,b,h);case 55:if(e.sent){e.next=58;break}throw new VQ;case 58:if(p=d?mQ(t.payload):"string"==typeof t.payload?uQ.encode(t.payload):t.payload,I={payload:p},void 0!==t.protected&&(I.protectedHeader=o),void 0!==t.header&&(I.unprotectedHeader=t.header),!Z){e.next=64;break}return e.abrupt("return",c(c({},I),{},{key:n}));case 64:return e.abrupt("return",I);case 65:case"end":return e.stop()}}),e,null,[[15,19]])}))),EQ.apply(this,arguments)}function OQ(e,t,n){return DQ.apply(this,arguments)}function DQ(){return DQ=l(regeneratorRuntime.mark((function e(t,n,r){var i,o,a,l,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array&&(t=dQ.decode(t)),"string"==typeof t){e.next=3;break}throw new gQ("Compact JWS must be a string or Uint8Array");case 3:if(i=t.split("."),o=i[0],a=i[1],l=i[2],3===i.length){e.next=6;break}throw new gQ("Invalid Compact JWS");case 6:return e.next=8,PQ({payload:a,protected:o,signature:l},n,r);case 8:if(u=e.sent,d={payload:u.payload,protectedHeader:u.protectedHeader},"function"!=typeof n){e.next=12;break}return e.abrupt("return",c(c({},d),{},{key:u.key}));case 12:return e.abrupt("return",d);case 13:case"end":return e.stop()}}),e)}))),DQ.apply(this,arguments)}var _Q=function(e){return Math.floor(e.getTime()/1e3)},qQ=86400,$Q=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,eP=function(e){var t=$Q.exec(e);if(!t)throw new TypeError("Invalid time period format");var n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(n*qQ);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},tP=function(e){return e.toLowerCase().replace(/^application\//,"")},nP=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},rP=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||tP(e.typ)!==tP(i)))throw new hQ('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(dQ.decode(t))}catch(e){}if(!xQ(n))throw new yQ("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new hQ('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new hQ('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!nP(n.aud,"string"==typeof u?[u]:u))throw new hQ('unexpected "aud" claim value',"aud","check_failed");switch(o(r.clockTolerance)){case"string":l=eP(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=r.currentDate,s=_Q(d||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new hQ('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new hQ('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new hQ('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new hQ('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new bQ('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,Z="number"==typeof r.maxTokenAge?r.maxTokenAge:eP(r.maxTokenAge);if(m-l>Z)throw new bQ('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new hQ('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function iP(){return iP=l(regeneratorRuntime.mark((function e(t,n,r){var i,o,a,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,OQ(t,n,r);case 2:if(o=e.sent,!(null===(i=o.protectedHeader.crit)||void 0===i?void 0:i.includes("b64"))||!1!==o.protectedHeader.b64){e.next=5;break}throw new yQ("JWTs MUST NOT use unencoded payload");case 5:if(a=rP(o.protectedHeader,o.payload,r),l={payload:a,protectedHeader:o.protectedHeader},"function"!=typeof n){e.next=9;break}return e.abrupt("return",c(c({},l),{},{key:o.key}));case 9:return e.abrupt("return",l);case 10:case"end":return e.stop()}}),e)}))),iP.apply(this,arguments)}function cP(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new IQ('Unsupported "alg" value for a JSON Web Key Set')}}function oP(e){return xQ(e)}var aP=function(){function e(t){if(u(this,e),this._cached=new WeakMap,!function(e){return e&&"object"===o(e)&&Array.isArray(e.keys)&&e.keys.every(oP)}(t))throw new XQ("JSON Web Key Set malformed");var n;this._jwks=(n=t,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var t;return s(e,[{key:"getKey",value:(t=l(regeneratorRuntime.mark((function e(t,n){var r,i,o,a,l,u,d,s,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=c(c({},t),n.header),i=r.alg,o=r.kid,a=cP(i),l=this._jwks.keys.filter((function(e){var t=a===e.kty;if(t&&"string"==typeof o&&(t=o===e.kid),t&&"string"==typeof e.alg&&(t=i===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===i&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(i){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t})),u=l[0],0!==(d=l.length)){e.next=8;break}throw new GQ;case 8:if(1===d){e.next=10;break}throw new fQ;case 10:if(void 0!==(s=this._cached.get(u)||this._cached.set(u,{}).get(u))[i]){e.next=18;break}return e.next=14,wQ(c(c({},u),{},{ext:!0}),i);case 14:if(!((m=e.sent)instanceof Uint8Array||"public"!==m.type)){e.next=17;break}throw new XQ("JSON Web Key Set members must be public keys");case 17:s[i]=m;case 18:return e.abrupt("return",s[i]);case 19:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var lP={exports:{}},uP={exports:{}},dP=r(OM);
450
450
  /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
451
- !function(e,t){var n=dP,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function c(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},c.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},c.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},c.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(uP,uP.exports);var sP=65536,mP=4294967295;var hP=uP.exports.Buffer,ZP=t.crypto||t.msCrypto;ZP&&ZP.getRandomValues?lP.exports=function(e,t){if(e>mP)throw new RangeError("requested too many random bytes");var n=hP.allocUnsafe(e);if(e>0)if(e>sP)for(var r=0;r<e;r+=sP)ZP.getRandomValues(n.slice(r,r+sP));else ZP.getRandomValues(n);if("function"==typeof t)return Rz.nextTick((function(){t(null,n)}));return n}:lP.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var bP=lP.exports,pP=function(){function e(){u(this,e)}return s(e,[{key:"base64URLEncode",value:function(e){return iM.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return iM.decode(e).toString()}},{key:"hashSha256",value:function(e){return dQ.from(oM((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return bP(e)}},{key:"verifyJwt",value:function(e,t,n,r,i,c,o){return function(e,t,n){return iP.apply(this,arguments)}(e,(a={keys:[t]},aP.prototype.getKey.bind(new aP(a))),{algorithms:n,audience:r,clockTolerance:o,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var a}}]),e}(),IP=function(t){switch(t){case e.Storage.LocalStorage:return new Pj;case e.Storage.SessionStorage:return new Dj;case e.Storage.BrowserMemory:return new Ej;default:return new Dj}},gP=function(t){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d,s,m,h,Z,b,p,I,g,y,X,G,V,W,C,S,R,Y,J,K,N,L,H,x,U,k,T,w,A,F,B;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=IP(t.storage),c=new pP,o=new nB(i,c),n.next=5,o.initialize(t);case 5:return a=new UB(o),l=o.getDataLayer(),n.next=9,TB((function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.signOut());case 1:case"end":return e.stop()}}),e)})))}),null!==(r=t.storage)&&void 0!==r?r:e.Storage.SessionStorage,(function(e){return l.setSessionDataParameter(zF,null!=e?e:"")}));case 9:if(u=n.sent,d=!1,s=Mj.getInstance(),m=!0,b=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Object.assign({attachToken:!0},e).attachToken){t.next=11;break}return t.t0=Object,t.t1=Object.assign({},e.headers),t.t2="Bearer ",t.next=7,o.getAccessToken();case 7:t.t3=t.sent,t.t4=t.t2.concat.call(t.t2,t.t3),t.t5={Authorization:t.t4},e.headers=t.t0.assign.call(t.t0,t.t1,t.t5);case 11:case"end":return t.stop()}}),t)})))},n.t0=null==s?void 0:s.init,!n.t0){n.next=18;break}return n.next=18,s.init(!0,b);case 18:return p=function(e){(null==s?void 0:s.setHttpRequestStartCallback)&&s.setHttpRequestStartCallback(e)},I=function(e){(null==s?void 0:s.setHttpRequestSuccessCallback)&&s.setHttpRequestSuccessCallback(e)},g=function(e){(null==s?void 0:s.setHttpRequestFinishCallback)&&s.setHttpRequestFinishCallback(e),Z=e},y=function(e){h=e},X=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.next=3,l.getConfigData();case 3:return c=t.sent,o=0,t.t0=[],t.t1=f,t.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=13;break}t.t2=void 0!==n;case 13:if(!t.t2){t.next=17;break}t.t4=n,t.next=18;break;case 17:t.t4=[];case 18:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[c.baseUrl],a=t.t0.concat.call(t.t0,t.t6,t.t7);case 22:if(!(o<a.length)){t.next=30;break}if(!(u=a[o])||!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(u))){t.next=27;break}return i=!0,t.abrupt("break",30);case 27:o++,t.next=22;break;case 30:if(!i){t.next=34;break}return t.abrupt("return",s.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status)&&(null==t?void 0:t.response)){n.next=31;break}return n.prev=1,n.next=4,K();case 4:o=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!m){n.next=14;break}if("function"!=typeof h){n.next=13;break}return n.next=13,h(Object.assign(Object.assign({},t),{code:xB}));case 13:"function"==typeof Z&&Z();case 14:throw new PF("SPA-MAIN_THREAD_CLIENT-HR-SE01",null!==(i=null===n.t0||void 0===n.t0?void 0:n.t0.name)&&void 0!==i?i:"Refresh token request failed.",null!==(c=null===n.t0||void 0===n.t0?void 0:n.t0.message)&&void 0!==c?c:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!o){n.next=31;break}return n.prev=16,n.next=19,s.request(e);case 19:return a=n.sent,n.abrupt("return",Promise.resolve(a));case 23:if(n.prev=23,n.t1=n.catch(16),!m){n.next=30;break}if("function"!=typeof h){n.next=29;break}return n.next=29,h(n.t1);case 29:"function"==typeof Z&&Z();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!m){n.next=36;break}if("function"!=typeof h){n.next=35;break}return n.next=35,h(t);case 35:"function"==typeof Z&&Z();case 36:return n.abrupt("return",Promise.reject(t));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:throw new PF("SPA-MAIN_THREAD_CLIENT-HR-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 35:case"end":return t.stop()}}),t)})))},G=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,u,d,b,p,I,g,y,X;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=!0,t.next=3,l.getConfigData();case 3:a=t.sent,u=v(e),t.prev=5,u.s();case 7:if((d=u.n()).done){t.next=50;break}return b=d.value,p=!1,I=0,t.t0=[],t.t1=f,t.next=15,a;case 15:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=19;break}t.t3=void 0===n;case 19:if(!t.t3){t.next=23;break}t.t5=void 0,t.next=24;break;case 23:t.t5=n.resourceServerURLs;case 24:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=28;break}t.t2=void 0!==r;case 28:if(!t.t2){t.next=32;break}t.t7=r,t.next=33;break;case 32:t.t7=[];case 33:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[a.baseUrl],g=t.t0.concat.call(t.t0,t.t9,t.t10);case 37:if(!(I<g.length)){t.next=45;break}if(!(y=g[I])||!(null===(i=b.url)||void 0===i?void 0:i.startsWith(y))){t.next=42;break}return p=!0,t.abrupt("break",45);case 42:I++,t.next=37;break;case 45:if(p){t.next=48;break}return c=!1,t.abrupt("break",50);case 48:t.next=7;break;case 50:t.next=55;break;case 52:t.prev=52,t.t11=t.catch(5),u.e(t.t11);case 55:return t.prev=55,u.f(),t.finish(55);case 58:if(X=[],!c){t.next=64;break}return e.forEach((function(e){X.push(s.request(e))})),t.abrupt("return",(null==s?void 0:s.all)&&s.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!==(null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status)&&(null==e?void 0:e.response)){t.next=17;break}return t.prev=1,t.next=4,o.refreshAccessToken();case 4:c=t.sent,t.next=15;break;case 7:if(t.prev=7,t.t0=t.catch(1),!m){t.next=14;break}if("function"!=typeof h){t.next=13;break}return t.next=13,h(Object.assign(Object.assign({},e),{code:xB}));case 13:"function"==typeof Z&&Z();case 14:throw new PF("SPA-MAIN_THREAD_CLIENT-HRA-SE01",null!==(r=null===t.t0||void 0===t.t0?void 0:t.t0.name)&&void 0!==r?r:"Refresh token request failed.",null!==(i=null===t.t0||void 0===t.t0?void 0:t.t0.message)&&void 0!==i?i:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!c){t.next=17;break}return t.abrupt("return",s.all&&s.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!m){t.next=5;break}if("function"!=typeof h){t.next=4;break}return t.next=4,h(e);case 4:"function"==typeof Z&&Z();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))})));case 17:if(!m){t.next=22;break}if("function"!=typeof h){t.next=21;break}return t.next=21,h(e);case 21:"function"==typeof Z&&Z();case 22:return t.abrupt("return",Promise.reject(e));case 23:case"end":return t.stop()}}),t,null,[[1,7]])})))})));case 64:throw new PF("SPA-MAIN_THREAD_CLIENT-HRA-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 65:case"end":return t.stop()}}),t,null,[[5,52,55,58]])})))},V=function(){return s},W=function(){return(null==s?void 0:s.enableHandler)&&s.enableHandler(),m=!0,!0},C=function(){return(null==s?void 0:s.disableHandler)&&s.disableHandler(),m=!1,!0},S=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getOIDCServiceEndpoints();case 2:return i=e.sent,e.next=5,l.getConfigData();case 5:c=e.sent,u.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getBasicUserInfo();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.getAuthorizationURL(e));case 1:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},R=function(t,n,r,i){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var d,s,m,h,Z,b,p,I,g,y;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,l.getConfigData();case 2:return h=c.sent,c.next=5,u.receivePromptNoneResponse((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.setSessionDataParameter(zF,null!=e?e:"");case 2:return t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return c.next=10,o.isAuthenticated();case 10:if(!c.sent){c.next=19;break}return a.clearRefreshTokenTimeout(),a.refreshAccessTokenAutomatically(),h.enableOIDCSessionManagement&&S(),c.t0=Promise,c.next=17,o.getBasicUserInfo();case 17:return c.t1=c.sent,c.abrupt("return",c.t0.resolve.call(c.t0,c.t1));case 19:if((null==h?void 0:h.responseMode)===e.ResponseMode.formPost&&n?(Z=n,b=null!=r?r:"",p=null!=i?i:""):(Z=null!==(d=new URL(window.location.href).searchParams.get(BF))&&void 0!==d?d:"",b=null!==(s=new URL(window.location.href).searchParams.get(zF))&&void 0!==s?s:"",p=null!==(m=new URL(window.location.href).searchParams.get(MF))&&void 0!==m?m:"",kB.removeAuthorizationCode()),!Z||!p){c.next=22;break}return c.abrupt("return",L(Z,b,p));case 22:if(I=new URL(window.location.href).searchParams.get(KB),g=new URL(window.location.href).searchParams.get(NB),!I){c.next=30;break}throw(y=new URL(window.location.href)).searchParams.delete(KB),y.searchParams.delete(NB),history.pushState(null,document.title,y.toString()),new PF("SPA-MAIN_THREAD_CLIENT-SI-SE01",I,null!=g?g:"");case 30:return c.abrupt("return",o.getAuthorizationURL(t).then((function(t){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(h.storage!==e.Storage.BrowserMemory||!h.enablePKCE){n.next=8;break}return r=EF.extractPKCEKeyFromStateParam(p),n.t0=kB,n.t1=r,n.next=6,o.getPKCECode(p);case 6:n.t2=n.sent,n.t0.setPKCE.call(n.t0,n.t1,n.t2);case 8:return location.href=t,n.next=11,kB.waitTillPageRedirect();case 11:return n.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return n.stop()}}),n)})))})));case 31:case"end":return c.stop()}}),c)})))},Y=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.isAuthenticated();case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}e.t0=!d;case 5:if(!e.t0){e.next=11;break}return e.next=8,o.signOut();case 8:location.href=e.sent,e.next=18;break;case 11:return location.href=kB.getSignOutURL(),e.next=14,l.removeOIDCProviderMetaData();case 14:return e.next=16,l.removeTemporaryData();case 16:return e.next=18,l.removeSessionData();case 18:return a.clearRefreshTokenTimeout(),e.next=21,kB.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},J=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,u,s,m,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=!0,u=!1,!(null==e?void 0:e.tokenEndpoint)){t.next=39;break}return c=!1,s=0,t.t0=[],t.t1=f,t.next=9,l.getConfigData();case 9:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=13;break}t.t3=void 0===n;case 13:if(!t.t3){t.next=17;break}t.t5=void 0,t.next=18;break;case 17:t.t5=n.resourceServerURLs;case 18:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=22;break}t.t2=void 0!==r;case 22:if(!t.t2){t.next=26;break}t.t7=r,t.next=27;break;case 26:t.t7=[];case 27:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[e.baseUrl],m=t.t0.concat.call(t.t0,t.t9,t.t10);case 31:if(!(s<m.length)){t.next=39;break}if(!(h=m[s])||!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(h))){t.next=36;break}return u=!0,t.abrupt("break",39);case 36:s++,t.next=31;break;case 39:if(e.shouldReplayAfterRefresh&&l.setTemporaryDataParameter(LB,JSON.stringify(e)),!c&&!u){t.next=44;break}return t.abrupt("return",o.requestCustomGrant(e).then((function(t){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.preventSignOutURLUpdate&&(d=!0),!e.returnsSession){n.next=6;break}return a.refreshAccessTokenAutomatically(),n.abrupt("return",o.getBasicUserInfo());case 6:return n.abrupt("return",t);case 7:case"end":return n.stop()}}),n)})))})).catch((function(e){return Promise.reject(e)})));case 44:return t.abrupt("return",Promise.reject(new PF("SPA-MAIN_THREAD_CLIENT-RCG-IV01","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 45:case"end":return t.stop()}}),t)})))},K=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.refreshAccessToken();case 3:return e.next=5,B();case 5:if(!(t=e.sent)){e.next=9;break}return e.next=9,J(t);case 9:return a.refreshAccessTokenAutomatically(),e.abrupt("return",o.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))},N=function(){return o.revokeAccessToken().then((function(){return u.reset(),a.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},L=function(t,n,r){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var c,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.getConfigData();case 2:if((c=i.sent).storage!==e.Storage.BrowserMemory||!c.enablePKCE){i.next=7;break}return u=kB.getPKCE(EF.extractPKCEKeyFromStateParam(r)),i.next=7,o.setPKCECode(EF.extractPKCEKeyFromStateParam(r),u);case 7:return i.abrupt("return",o.requestAccessToken(t,n,r).then((function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=kB,e.next=3,o.getSignOutURL();case 3:return e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),a.clearRefreshTokenTimeout(),a.refreshAccessTokenAutomatically(),c.enableOIDCSessionManagement&&S(),e.abrupt("return",o.getBasicUserInfo());case 9:case"end":return e.stop()}}),e)})))})).catch((function(e){return Promise.reject(e)})));case 8:case"end":return i.stop()}}),i)})))},H=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,d,s,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:if(r=t.sent,!kB.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,u.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(CB),c=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.getElementById(vB),t.prev=9,t.next=12,o.getAuthorizationURL({prompt:"none",state:RB});case 12:if(a=t.sent,(d=new URL(a)).searchParams.set("response_mode","query"),s=d.toString(),r.storage!==e.Storage.BrowserMemory||!r.enablePKCE){t.next=24;break}return m=d.searchParams.get(MF),t.t0=kB,t.t1=EF.extractPKCEKeyFromStateParam(null!=m?m:""),t.next=22,o.getPKCECode(null!=m?m:"");case 22:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 24:c.src=s,t.next=30;break;case 27:return t.prev=27,t.t3=t.catch(9),t.abrupt("return",Promise.reject(t.t3));case 30:return t.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(u=i.data)?void 0:u.type)==oB&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==u?void 0:u.type)==cB&&(null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.code)&&L(u.data.code,null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.sessionState,null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 31:case"end":return t.stop()}}),t,null,[[9,27]])})))},x=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getBasicUserInfo());case 1:case"end":return e.stop()}}),e)})))},U=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getDecodedIDToken());case 1:case"end":return e.stop()}}),e)})))},k=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getIDToken());case 1:case"end":return e.stop()}}),e)})))},T=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e)})))},w=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getAccessToken());case 1:case"end":return e.stop()}}),e)})))},A=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.isAuthenticated());case 1:case"end":return e.stop()}}),e)})))},F=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),t.next=7,o.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(u.reset(),S());case 8:case"end":return t.stop()}}),t)})))},B=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.getTemporaryDataParameter(LB);case 2:if(!(t=e.sent)){e.next=7;break}return e.abrupt("return",JSON.parse(t));case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e)})))},n.abrupt("return",{disableHttpHandler:C,enableHttpHandler:W,getAccessToken:w,getBasicUserInfo:x,getDecodedIDToken:U,getHttpClient:V,getIDToken:k,getOIDCServiceEndpoints:T,httpRequest:X,httpRequestAll:G,isAuthenticated:A,refreshAccessToken:K,requestCustomGrant:J,revokeAccessToken:N,setHttpRequestErrorCallback:y,setHttpRequestFinishCallback:g,setHttpRequestStartCallback:p,setHttpRequestSuccessCallback:I,signIn:R,signOut:Y,trySignInSilently:H,updateConfig:F});case 44:case"end":return n.stop()}}),n)})))};function yP(e,t,n){var r=void 0===t?null:t,i=function(e,t){var n=atob(e);if(t){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(e,void 0!==n&&n),c=i.indexOf("\n",10)+1,o=i.substring(c)+(r?"//# sourceMappingURL="+r:""),a=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(a)}var XP,GP,VP,fP,WP=(XP="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLG8saSl7dHJ5e3ZhciBzPWVbb10oaSksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24oaSxhLG8scyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24oaSxhLG8scyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZpKGUucHJvdG90eXBlLHQpLHImJmkoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxvPVtdLGk9ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEoaT0obj1yLm5leHQoKSkuZG9uZSkmJihvLnB1c2gobi52YWx1ZSksIXR8fG8ubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gb30oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gaT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtpfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLG8pe2Z1bmN0aW9uIGkoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGkscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24geChlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxvKXtmdW5jdGlvbiBpKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgUzshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFN8fChTPXt9KSk7dmFyIEU7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShFfHwoRT17fSkpO3ZhciBULEE9InJlZnJlc2hfdG9rZW5fdGltZXIiLEM9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFR8fChUPXt9KSk7dmFyIFA9cygoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMiksbj10WzBdLGE9dFsxXSxvPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3Jbb109YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7RC5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBPLEksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1yfXJldHVybiBzKGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3JbdF09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkscikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihyPWUuc2VudCxuPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sci5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIG4uaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBQKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChyLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKHI9ZS5zZW50LG49ci5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiByLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxhPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQobikuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBQKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChyLHtjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2lufSk7Y2FzZSAxMTphPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBQKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1hLnN0YXR1cyYmYS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPVAsdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoYS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixhLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGEuanNvbigpO2Nhc2UgMjk6cmV0dXJuIGk9dC5zZW50LHM9aS5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0scyk7Y2FzZSAzMzpyZXR1cm4gdT10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9dSx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLG89dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksaT1ELmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChvKSxzPW51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPW8uZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1vLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1vLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjppLHVzZXJuYW1lOnN9LEQuZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKG8pKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0ib3BlbmlkIixuLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89bi5zZW50LG4ubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIGk9bi5zZW50LG4uYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksYT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLGkuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKGkuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGEpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShyPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09cj9yOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtyLm5leHQ9NzticmVha31yZXR1cm4gci50MD1QLHIudDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksci5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IHIudDI9ci5zZW50LG5ldyByLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsci50MSxyLnQyKTtjYXNlIDc6cmV0dXJuIHIubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4obj1yLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksci5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIXIuc2VudC52YWxpZGF0ZUlEVG9rZW4pe3IubmV4dD0xNTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4obi5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4geChvLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDI6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGE9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDE4OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoYSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsYT1bXSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZhLnB1c2goZSl9KSksbz1hLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiBzKGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Uih0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBvPXIudmFsdWU7aWYobi5raWQ9PT1vLmtpZClyZXR1cm4gb319Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IFAoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLG8pe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LEMscixuLGEsbykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgUCgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgUCgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBQKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBQKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXIsdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBMKHIpLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBVKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiBzKGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbygpe3ZhciBpLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSxiO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlcigiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIpO2Nhc2UgMjpyZXR1cm4gaT1vLnNlbnQsby5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHM9by5zZW50LGkmJjAhPT1pLnRyaW0oKS5sZW5ndGgpe28ubmV4dD04O2JyZWFrfXRocm93IG5ldyBQKCJKUy1BVVRIX0NPUkUtR0FVLU5GMDEiLCJObyBhdXRob3JpemF0aW9uIGVuZHBvaW50IGZvdW5kLiIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSBmcm9tIHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4odT1uZXcgVVJMKGkpKS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV90eXBlIiwiY29kZSIpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgiY2xpZW50X2lkIixzLmNsaWVudElEKSxjPSJvcGVuaWQiLHMuc2NvcGUmJnMuc2NvcGUubGVuZ3RoPjAmJihzLnNjb3BlLmluY2x1ZGVzKCJvcGVuaWQiKXx8cy5zY29wZS5wdXNoKCJvcGVuaWQiKSxjPXMuc2NvcGUuam9pbigiICIpKSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInNjb3BlIixjKSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlZGlyZWN0X3VyaSIscy5zaWduSW5SZWRpcmVjdFVSTCkscy5yZXNwb25zZU1vZGUmJnUuc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVzcG9uc2VfbW9kZSIscy5yZXNwb25zZU1vZGUpLG8ubmV4dD0xNCx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZW5lcmF0ZVBLQ0VLZXkodCk7Y2FzZSAxNDppZihmPW8uc2VudCwhcy5lbmFibGVQS0NFKXtvLm5leHQ9MjE7YnJlYWt9cmV0dXJuIGw9bnVsbD09PShyPXRoaXMuX2NyeXB0b0hlbHBlcil8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0Q29kZVZlcmlmaWVyKCksaD1udWxsPT09KG49dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRDb2RlQ2hhbGxlbmdlKGwpLG8ubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihmLGwsdCk7Y2FzZSAxOTp1LnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlX21ldGhvZCIsIlMyNTYiKSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlIixoKTtjYXNlIDIxOmlmKHMucHJvbXB0JiZ1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInByb21wdCIscy5wcm9tcHQpLHA9ZSlmb3IoZD0wLHY9T2JqZWN0LmVudHJpZXMocCk7ZDx2Lmxlbmd0aDtkKyspZz15KHZbZF0sMiksbT1nWzBdLGI9Z1sxXSwiIiE9bSYmIiIhPWImJiJzdGF0ZSIhPT1tJiZ1LnNlYXJjaFBhcmFtcy5hcHBlbmQobSxiLnRvU3RyaW5nKCkpO3JldHVybiBvLmFicnVwdCgicmV0dXJuIiwodS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJzdGF0ZSIsRC5nZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24oZixwP251bGw9PT0oYT1wLnN0YXRlKXx8dm9pZCAwPT09YT92b2lkIDA6YS50b1N0cmluZygpOiIiKSksdS50b1N0cmluZygpKSk7Y2FzZSAyNTpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgbyxpLHMsdSxjO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBvPWEuc2VudC50b2tlbl9lbmRwb2ludCxhLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoaT1hLnNlbnQsbyYmMCE9PW8udHJpbSgpLmxlbmd0aCl7YS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1SQVQxLU5GMDEiLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OmlmKGEudDA9dCwhYS50MCl7YS5uZXh0PTEyO2JyZWFrfXJldHVybiBhLm5leHQ9MTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIix0LG4pO2Nhc2UgMTI6aWYoKHM9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChpLmNsaWVudElEKSksaS5jbGllbnRTZWNyZXQmJmkuY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmcy5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KGkuY2xpZW50U2VjcmV0KSksdT1lLHMucHVzaCgiY29kZT0iLmNvbmNhdCh1KSkscy5wdXNoKCJncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZSIpLHMucHVzaCgicmVkaXJlY3RfdXJpPSIuY29uY2F0KGkuc2lnbkluUmVkaXJlY3RVUkwpKSxhLnQxPWkuZW5hYmxlUEtDRSwhYS50MSl7YS5uZXh0PTI5O2JyZWFrfXJldHVybiBhLnQyPXMsYS50Mz0iY29kZV92ZXJpZmllcj0iLGEubmV4dD0yNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihELmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0ociksbik7Y2FzZSAyNDpyZXR1cm4gYS50ND1hLnNlbnQsYS50NT1hLnQzLmNvbmNhdC5jYWxsKGEudDMsYS50NCksYS50Mi5wdXNoLmNhbGwoYS50MixhLnQ1KSxhLm5leHQ9MjksdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoRC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHIpLG4pO2Nhc2UgMjk6cmV0dXJuIGEucHJldj0yOSxhLm5leHQ9MzIsZmV0Y2gobyx7Ym9keTpzLmpvaW4oIiYiKSxjcmVkZW50aWFsczppLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDMyOmM9YS5zZW50LGEubmV4dD0zODticmVhaztjYXNlIDM1OnRocm93IGEucHJldj0zNSxhLnQ2PWEuY2F0Y2goMjkpLG5ldyBQKCJKUy1BVVRIX0NPUkUtUkFUMS1ORTAyIiwiUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIixudWxsIT1hLnQ2P2EudDY6IlRoZSByZXF1ZXN0IHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAzODppZihjLm9rKXthLm5leHQ9NDU7YnJlYWt9cmV0dXJuIGEudDc9UCxhLnQ4PSJSZXF1ZXN0aW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQgd2l0aCAiLmNvbmNhdChjLnN0YXR1c1RleHQpLGEubmV4dD00MyxjLmpzb24oKTtjYXNlIDQzOnRocm93IGEudDk9YS5zZW50LG5ldyBhLnQ3KCJKUy1BVVRIX0NPUkUtUkFUMS1IRTAzIixhLnQ4LGEudDkpO2Nhc2UgNDU6cmV0dXJuIGEubmV4dD00Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGMsbik7Y2FzZSA0NzpyZXR1cm4gYS5hYnJ1cHQoInJldHVybiIsYS5zZW50KTtjYXNlIDQ4OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzLFtbMjksMzVdXSl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsbyxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC50b2tlbl9lbmRwb2ludCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIG49dC5zZW50LHQubmV4dD04LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDg6aWYoKGE9dC5zZW50KS5yZWZyZXNoX3Rva2VuKXt0Lm5leHQ9MTE7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1SQVQyLU5GMDEiLCJObyByZWZyZXNoIHRva2VuIGZvdW5kLiIsIlRoZXJlIHdhcyBubyByZWZyZXNoIHRva2VuIGZvdW5kLiBBc2dhcmRlbyBkb2Vzbid0IHJldHVybiBhIHJlZnJlc2ggdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gZ3JhbnQgaXMgbm90IGVuYWJsZWQuIik7Y2FzZSAxMTppZihyJiYwIT09ci50cmltKCkubGVuZ3RoKXt0Lm5leHQ9MTM7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1SQVQyLU5GMDIiLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgd2FzIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDEzOnJldHVybihvPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQobi5jbGllbnRJRCkpLG8ucHVzaCgicmVmcmVzaF90b2tlbj0iLmNvbmNhdChhLnJlZnJlc2hfdG9rZW4pKSxvLnB1c2goImdyYW50X3R5cGU9cmVmcmVzaF90b2tlbiIpLG4uY2xpZW50U2VjcmV0JiZuLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJm8ucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChuLmNsaWVudFNlY3JldCkpLHQucHJldj0xNSx0Lm5leHQ9MTgsZmV0Y2gocix7Ym9keTpvLmpvaW4oIiYiKSxjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDE4Omk9dC5zZW50LHQubmV4dD0yNDticmVhaztjYXNlIDIxOnRocm93IHQucHJldj0yMSx0LnQwPXQuY2F0Y2goMTUpLG5ldyBQKCJKUy1BVVRIX0NPUkUtUkFUMi1OUjAzIiwiUmVmcmVzaCBhY2Nlc3MgdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNDppZihpLm9rKXt0Lm5leHQ9MzE7YnJlYWt9cmV0dXJuIHQudDE9UCx0LnQyPSJSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQgd2l0aCAiLmNvbmNhdChpLnN0YXR1c1RleHQpLHQubmV4dD0yOSxpLmpzb24oKTtjYXNlIDI5OnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0NPUkUtUkFUMi1IRTA0Iix0LnQyLHQudDMpO2Nhc2UgMzE6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoaSxlKSk7Y2FzZSAzMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzE1LDIxXV0pfSkpKX19LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQucmV2b2NhdGlvbl9lbmRwb2ludCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYobj10LnNlbnQsciYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1SQVQzLU5GMDEiLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuKGE9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChuLmNsaWVudElEKSksdC50MD1hLHQudDE9InRva2VuPSIsdC5uZXh0PTE0LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE0OnJldHVybiB0LnQyPXQuc2VudC5hY2Nlc3NfdG9rZW4sdC50Mz10LnQxLmNvbmNhdC5jYWxsKHQudDEsdC50MiksdC50MC5wdXNoLmNhbGwodC50MCx0LnQzKSxhLnB1c2goInRva2VuX3R5cGVfaGludD1hY2Nlc3NfdG9rZW4iKSx0LnByZXY9MTgsdC5uZXh0PTIxLGZldGNoKHIse2JvZHk6YS5qb2luKCImIiksY3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEQuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAyMTpvPXQuc2VudCx0Lm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNDp0aHJvdyB0LnByZXY9MjQsdC50ND10LmNhdGNoKDE4KSxuZXcgUCgiSlMtQVVUSF9DT1JFLVJBVDMtTkUwMiIsIlRoZSByZXF1ZXN0IHRvIHJldm9rZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsbnVsbCE9dC50ND90LnQ0OiJUaGUgcmVxdWVzdCBzZW50IHRvIHJldm9rZSB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iKTtjYXNlIDI3OmlmKDIwMD09PW8uc3RhdHVzJiZvLm9rKXt0Lm5leHQ9MzQ7YnJlYWt9cmV0dXJuIHQudDU9UCx0LnQ2PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgcmV2b2tlIGFjY2VzcyB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChvLnN0YXR1c1RleHQsIikuIiksdC5uZXh0PTMyLG8uanNvbigpO2Nhc2UgMzI6dGhyb3cgdC50Nz10LnNlbnQsbmV3IHQudDUoIkpTLUFVVEhfQ09SRS1SQVQzLUhFMDMiLHQudDYsdC50Nyk7Y2FzZSAzNDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsKHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpLFByb21pc2UucmVzb2x2ZShvKSkpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxOCwyNF1dKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvLGkscyx1LGMsZj10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoYT1yLnNlbnQsKG89ZS50b2tlbkVuZHBvaW50JiYwIT09ZS50b2tlbkVuZHBvaW50LnRyaW0oKS5sZW5ndGg/ZS50b2tlbkVuZHBvaW50Om4udG9rZW5fZW5kcG9pbnQpJiYwIT09by50cmltKCkubGVuZ3RoKXtyLm5leHQ9ODticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLVJDRy1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4gci5uZXh0PTEwLFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKGUuZGF0YSkubWFwKChmdW5jdGlvbihlKXt2YXIgcj15KGUsMiksbj1yWzBdLGE9clsxXTtyZXR1cm4geChmLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MoYSx0KTtjYXNlIDI6cmV0dXJuIHI9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChuLCI9IikuY29uY2F0KHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxMDppZihpPXIuc2VudCxzPU9iamVjdC5hc3NpZ24oe30sRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLHIudDA9ZS5hdHRhY2hUb2tlbiwhci50MCl7ci5uZXh0PTIzO2JyZWFrfXJldHVybiByLnQxPU9iamVjdCxyLnQyPU9iamVjdC5hc3NpZ24oe30scyksci50Mz0iQmVhcmVyICIsci5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDE5OnIudDQ9ci5zZW50LmFjY2Vzc190b2tlbixyLnQ1PXIudDMuY29uY2F0LmNhbGwoci50MyxyLnQ0KSxyLnQ2PXtBdXRob3JpemF0aW9uOnIudDV9LHM9ci50MS5hc3NpZ24uY2FsbChyLnQxLHIudDIsci50Nik7Y2FzZSAyMzpyZXR1cm4gdT17Ym9keTppLmpvaW4oIiYiKSxjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMocyksbWV0aG9kOiJQT1NUIn0sci5wcmV2PTI0LHIubmV4dD0yNyxmZXRjaChvLHUpO2Nhc2UgMjc6Yz1yLnNlbnQsci5uZXh0PTMzO2JyZWFrO2Nhc2UgMzA6dGhyb3cgci5wcmV2PTMwLHIudDc9ci5jYXRjaCgyNCksbmV3IFAoIkpTLUFVVEhfQ09SRS1SQ0ctTkUwMiIsIlRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdCBmYWlsZWQuIixudWxsIT1yLnQ3P3IudDc6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgZmFpbGVkLiIpO2Nhc2UgMzM6aWYoMjAwPT09Yy5zdGF0dXMmJmMub2spe3IubmV4dD00MDticmVha31yZXR1cm4gci50OD1QLHIudDk9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0aGUgY3VzdG9tIGdyYW50IHJlcXVlc3QuICgiLmNvbmNhdChjLnN0YXR1c1RleHQsIikiKSxyLm5leHQ9MzgsYy5qc29uKCk7Y2FzZSAzODp0aHJvdyByLnQxMD1yLnNlbnQsbmV3IHIudDgoIkpTLUFVVEhfQ09SRS1SQ0ctSEUwMyIsci50OSxyLnQxMCk7Y2FzZSA0MDppZighZS5yZXR1cm5zU2Vzc2lvbil7ci5uZXh0PTQ0O2JyZWFrfXIudDExPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoYyx0KSxyLm5leHQ9NDk7YnJlYWs7Y2FzZSA0NDpyZXR1cm4gci50MTI9UHJvbWlzZSxyLm5leHQ9NDcsYy5qc29uKCk7Y2FzZSA0NzpyLnQxMz1yLnNlbnQsci50MTE9ci50MTIucmVzb2x2ZS5jYWxsKHIudDEyLHIudDEzKTtjYXNlIDQ5OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQxMSk7Y2FzZSA1MDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyxbWzI0LDMwXV0pfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCxuPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhudWxsPT1yP3ZvaWQgMDpyLmlkX3Rva2VuKSxhPXthbGxvd2VkU2NvcGVzOnIuc2NvcGUsc2Vzc2lvblN0YXRlOnIuc2Vzc2lvbl9zdGF0ZX0sdC5hYnJ1cHQoInJldHVybiIsKE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PW5bZV0mJiIiIT09bltlXSYmbnVsbCE9PW5bZV18fGRlbGV0ZSBuW2VdfSkpLGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLG4pKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuaWRfdG9rZW4sdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4ocikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOmlmKHI9dC5zZW50LHQudDA9IWUsIXQudDApe3QubmV4dD04O2JyZWFrfXJldHVybiB0Lm5leHQ9Nyx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNzp0LnQwPXQuc2VudDtjYXNlIDg6aWYoIXQudDApe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMTA6aWYoIShuPXIud2VsbEtub3duRW5kcG9pbnQpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIHQucHJldj0xMix0Lm5leHQ9MTUsZmV0Y2gobik7Y2FzZSAxNTppZigyMDA9PT0oYT10LnNlbnQpLnN0YXR1cyYmYS5vayl7dC5uZXh0PTE4O2JyZWFrfXRocm93IG5ldyBFcnJvcjtjYXNlIDE4OnQubmV4dD0yMzticmVhaztjYXNlIDIwOnRocm93IHQucHJldj0yMCx0LnQxPXQuY2F0Y2goMTIpLG5ldyBQKCJKUy1BVVRIX0NPUkUtR09QTUQtSEUwMSIsIkludmFsaWQgd2VsbC1rbm93biByZXNwb25zZSIsIlRoZSB3ZWxsIGtub3duIGVuZHBvaW50IHJlc3BvbnNlIGhhcyBiZWVuIGZhaWxlZCB3aXRoIGFuIGVycm9yLiIpO2Nhc2UgMjM6cmV0dXJuIHQudDI9dGhpcy5fZGF0YUxheWVyLHQudDM9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIsdC5uZXh0PTI3LGEuanNvbigpO2Nhc2UgMjc6cmV0dXJuIHQudDQ9dC5zZW50LHQubmV4dD0zMCx0LnQzLnJlc29sdmVFbmRwb2ludHMuY2FsbCh0LnQzLHQudDQpO2Nhc2UgMzA6cmV0dXJuIHQudDU9dC5zZW50LHQubmV4dD0zMyx0LnQyLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Mix0LnQ1KTtjYXNlIDMzOnJldHVybiB0Lm5leHQ9MzUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDM1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAzNjppZighci5iYXNlVXJsKXt0Lm5leHQ9NTI7YnJlYWt9cmV0dXJuIHQucHJldj0zNyx0LnQ2PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NDEsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCgpO2Nhc2UgNDE6cmV0dXJuIHQudDc9dC5zZW50LHQubmV4dD00NCx0LnQ2LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Nix0LnQ3KTtjYXNlIDQ0OnQubmV4dD00OTticmVhaztjYXNlIDQ2OnRocm93IHQucHJldj00Nix0LnQ4PXQuY2F0Y2goMzcpLG5ldyBQKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMiIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50OD90LnQ4OiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGJhc2UgdXJsIGZhaWxlZC4iKTtjYXNlIDQ5OnJldHVybiB0Lm5leHQ9NTEsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDUxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA1MjpyZXR1cm4gdC5wcmV2PTUyLHQudDk9dGhpcy5fZGF0YUxheWVyLHQubmV4dD01Nix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSgpO2Nhc2UgNTY6cmV0dXJuIHQudDEwPXQuc2VudCx0Lm5leHQ9NTksdC50OS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDksdC50MTApO2Nhc2UgNTk6dC5uZXh0PTY0O2JyZWFrO2Nhc2UgNjE6dGhyb3cgdC5wcmV2PTYxLHQudDExPXQuY2F0Y2goNTIpLG5ldyBQKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMyIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50MTE/dC50MTE6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgZXhwbGljaXRseSBmYWlsZWQuIik7Y2FzZSA2NDpyZXR1cm4gdC5uZXh0PTY2LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA2NjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNjc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxMiwyMF0sWzM3LDQ2XSxbNTIsNjFdXSl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4sYSxvLGkscyx1LGM7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBmKCl7dmFyIGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihmKXtmb3IoOzspc3dpdGNoKGYucHJldj1mLm5leHQpe2Nhc2UgMDpyZXR1cm4gZi5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGw9Zi5zZW50LGYuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6bnVsbCE9PShlPWwuYXV0aG9yaXphdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWU/ZToiIixjaGVja1Nlc3Npb25JZnJhbWU6bnVsbCE9PSh0PWwuY2hlY2tfc2Vzc2lvbl9pZnJhbWUpJiZ2b2lkIDAhPT10P3Q6IiIsZW5kU2Vzc2lvbkVuZHBvaW50Om51bGwhPT0ocj1sLmVuZF9zZXNzaW9uX2VuZHBvaW50KSYmdm9pZCAwIT09cj9yOiIiLGludHJvc3BlY3Rpb25FbmRwb2ludDpudWxsIT09KG49bC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09bj9uOiIiLGlzc3VlcjpudWxsIT09KGE9bC5pc3N1ZXIpJiZ2b2lkIDAhPT1hP2E6IiIsandrc1VyaTpudWxsIT09KG89bC5qd2tzX3VyaSkmJnZvaWQgMCE9PW8/bzoiIixyZWdpc3RyYXRpb25FbmRwb2ludDpudWxsIT09KGk9bC5yZWdpc3RyYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1pP2k6IiIscmV2b2NhdGlvbkVuZHBvaW50Om51bGwhPT0ocz1sLnJldm9jYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1zP3M6IiIsdG9rZW5FbmRwb2ludDpudWxsIT09KHU9bC50b2tlbl9lbmRwb2ludCkmJnZvaWQgMCE9PXU/dToiIix1c2VyaW5mb0VuZHBvaW50Om51bGwhPT0oYz1sLnVzZXJpbmZvX2VuZHBvaW50KSYmdm9pZCAwIT09Yz9jOiIifSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZi5zdG9wKCl9fSksZix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYoYS50MT10PWEuc2VudCxhLnQwPW51bGw9PT1hLnQxLGEudDApe2EubmV4dD02O2JyZWFrfWEudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIWEudDApe2EubmV4dD0xMDticmVha31hLnQyPXZvaWQgMCxhLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDphLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gbz1hLnQyLGEubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKGk9YS5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe2EubmV4dD0xNzticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMSIsIlNpZ24tb3V0IGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBzaWduLW91dCBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBzaWduLW91dCBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDE3OnJldHVybiBhLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTk6aWYoYS50ND1yPWEuc2VudCxhLnQzPW51bGw9PT1hLnQ0LGEudDMpe2EubmV4dD0yMzticmVha31hLnQzPXZvaWQgMD09PXI7Y2FzZSAyMzppZighYS50Myl7YS5uZXh0PTI3O2JyZWFrfWEudDU9dm9pZCAwLGEubmV4dD0yODticmVhaztjYXNlIDI3OmEudDU9ci5pZF90b2tlbjtjYXNlIDI4OmlmKChzPWEudDUpJiYwIT09cy50cmltKCkubGVuZ3RoKXthLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDIiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigodT1udWxsIT09KG49bnVsbD09aT92b2lkIDA6aS5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1uP246bnVsbD09aT92b2lkIDA6aS5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT11LnRyaW0oKS5sZW5ndGgpe2EubmV4dD0zNDticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMyIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQocywiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQodSwiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5nZXRTaWduT3V0VVJMKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpLHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9Qm9vbGVhbix0Lm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKGUpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdC50MCkodC50MSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoRC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKGUpLHQpO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoRC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpLGUscik7Y2FzZSAyOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixuLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLE09ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2lkPXQsdGhpcy5fc3RvcmU9cn1yZXR1cm4gcyhlLFt7a2V5OiJzZXREYXRhSW5CdWxrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLG8saSxzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1uLnQyLG89YSYmSlNPTi5wYXJzZShhKSxpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0KSxzPUpTT04uc3RyaW5naWZ5KGkpLG4ubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUscyk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgbyxpLHMsYztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihhLnQxPW49YS5zZW50LGEudDA9bnVsbCE9PWEudDEsIWEudDApe2EubmV4dD02O2JyZWFrfWEudDA9dm9pZCAwIT09bjtjYXNlIDY6aWYoIWEudDApe2EubmV4dD0xMDticmVha31hLnQyPW4sYS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6YS50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89YS50MixpPW8mJkpTT04ucGFyc2Uobykscz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksdSh7fSx0LHIpKSxjPUpTT04uc3RyaW5naWZ5KHMpLGEubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsYyk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsbyxpLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYobi50MT1yPW4uc2VudCxuLnQwPW51bGwhPT1uLnQxLCFuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMCE9PXI7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj1yLG4ubmV4dD0xMTticmVhaztjYXNlIDEwOm4udDI9bnVsbDtjYXNlIDExOnJldHVybiBhPW4udDIsbz1hJiZKU09OLnBhcnNlKGEpLGRlbGV0ZShpPU9iamVjdC5hc3NpZ24oe30sbykpW3RdLHM9SlNPTi5zdHJpbmdpZnkoaSksbi5uZXh0PTE4LHRoaXMuX3N0b3JlLnNldERhdGEoZSxzKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJfcmVzb2x2ZUtleSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCwiLSIpLmNvbmNhdCh0KToiIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPUpTT04sci5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLGUpKTtjYXNlIDM6aWYoci50Mj10PXIuc2VudCxyLnQxPW51bGwhPT1yLnQyLCFyLnQxKXtyLm5leHQ9NzticmVha31yLnQxPXZvaWQgMCE9PXQ7Y2FzZSA3OmlmKCFyLnQxKXtyLm5leHQ9MTE7YnJlYWt9ci50Mz10LHIubmV4dD0xMjticmVhaztjYXNlIDExOnIudDM9bnVsbDtjYXNlIDEyOnJldHVybiByLnQ0PXIudDMsci5hYnJ1cHQoInJldHVybiIsci50MC5wYXJzZS5jYWxsKHIudDAsci50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLG4mJkpTT04ucGFyc2UobilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSxyKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxyKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsdCksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fV0pLGV9KCksaj17Y2xvY2tUb2xlcmFuY2U6MzAwLGVuYWJsZVBLQ0U6ITAscmVzcG9uc2VNb2RlOlMucXVlcnksc2NvcGU6WyJvcGVuaWQiXSxzZW5kQ29va2llc0luUmVxdWVzdHM6ITAsdmFsaWRhdGVJRFRva2VuOiEwfSxOPWZ1bmN0aW9uKCl7Ci8qKgogICAgICAgICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIC4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RvcmV9IHN0b3JlIC0gVGhlIHN0b3JlIG9iamVjdC4KICAgICAgICAgKgogICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICogYGBgCiAgICAgICAgICogY29uc3QgX3N0b3JlOiBTdG9yZSA9IG5ldyBEYXRhU3RvcmUoKTsKICAgICAgICAgKiBjb25zdCBhdXRoID0gbmV3IEFzZ2FyZGVvQXV0aENsaWVudDxDdXN0b21DbGllbnRDb25maWc+KF9zdG9yZSk7CiAgICAgICAgICogYGBgCiAgICAgICAgICoKICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjY29uc3RydWN0b3IKICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgKi8KZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSxlLl9pbnN0YW5jZUlEP2UuX2luc3RhbmNlSUQrPTE6ZS5faW5zdGFuY2VJRD0wLHRoaXMuX2RhdGFMYXllcj1uZXcgTSgiaW5zdGFuY2VfIi5jb25jYXQoZS5faW5zdGFuY2VJRCksdCksdGhpcy5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBIKHRoaXMuX2RhdGFMYXllcixyKX0KLyoqCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyB0aGUgU0RLIHdpdGggdGhlIGNvbmZpZyBkYXRhLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtBdXRoQ2xpZW50Q29uZmlnPFQ+fSBjb25maWcgLSBUaGUgY29uZmlnIG9iamVjdCB0byBpbml0aWFsaXplIHdpdGguCiAgICAgICAgICoKICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKICAgICAgICAgKiAgICAgc2lnbkluUmVkaXJlY3RVUkw6ICJodHRwOi8vbG9jYWxob3N0OjMwMDAvc2lnbi1pbiIsCiAgICAgICAgICogICAgIGNsaWVudElEOiAiY2xpZW50IElEIiwKICAgICAgICAgKiAgICAgYmFzZVVybDogImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMiCiAgICAgICAgICogfQogICAgICAgICAqCiAgICAgICAgICogYXdhaXQgYXV0aC5pbml0aWFsaXplKGNvbmZpZyk7CiAgICAgICAgICoKICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaW5pdGlhbGl6ZQogICAgICAgICAqCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovcmV0dXJuIHMoZSxbe2tleToiaW5pdGlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGopLGUpLHtzY29wZTpbXS5jb25jYXQoYihudWxsIT09KHQ9ai5zY29wZSkmJnZvaWQgMCE9PXQ/dDpbXSksYihudWxsIT09KG49bnVsbD09PShyPWUuc2NvcGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIShudWxsPT09KHQ9bnVsbD09aj92b2lkIDA6ai5zY29wZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZSkpfSkpKSYmdm9pZCAwIT09bj9uOltdKSl9KSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYERhdGFMYXllcmAgb2JqZWN0IHRoYXQgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYXV0aGVudGljYXRpb24gZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtEYXRhTGF5ZXJ9IC0gVGhlIGBEYXRhTGF5ZXJgIG9iamVjdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBkYXRhID0gYXV0aC5nZXREYXRhTGF5ZXIoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREYXRhTGF5ZXIKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfQovKioKICAgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge0dldEF1dGhVUkxDb25maWd9IGNvbmZpZyAtIChPcHRpb25hbCkgQSBjb25maWcgb2JqZWN0IHRvIGZvcmNlIGluaXRpYWxpemF0aW9uIGFuZCBwYXNzCiAgICAgICAgICAgKiBjdXN0b20gcGF0aCBwYXJhbWV0ZXJzIHN1Y2ggYXMgdGhlIGZpZHAgcGFyYW1ldGVyLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5nZXRBdXRob3JpemF0aW9uVVJMKCkudGhlbigodXJsKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHVybCk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBdXRob3JpemF0aW9uVVJMCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGE9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBudWxsPT0obj1PYmplY3QuYXNzaWduKHt9LGUpKXx8ZGVsZXRlIG4uZm9yY2VJbml0LHIubmV4dD00LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA0OmlmKCFyLnNlbnQpe3IubmV4dD04O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwobix0KSxyLm5leHQ9OTticmVhaztjYXNlIDg6ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEobnVsbD09ZT92b2lkIDA6ZS5mb3JjZUluaXQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGEuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCl9KSk7Y2FzZSA5OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCBzZW5kcyBhIHJlcXVlc3QgdG8gb2J0YWluIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlCiAgICAgICAgICAgKiB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIGFuZCBvdGhlciByZWxldmFudCBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JpemF0aW9uQ29kZSAtIFRoZSBhdXRob3JpemF0aW9uIGNvZGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvblN0YXRlIC0gVGhlIHNlc3Npb24gc3RhdGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZXF1ZXN0QWNjZXNzVG9rZW4oYXV0aENvZGUsIHNlc3Npb25TdGF0ZSkudGhlbigodG9rZW4pPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2codG9rZW4pOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDI6aWYoIWEuc2VudCl7YS5uZXh0PTY7YnJlYWt9YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCxyLG4pLGEubmV4dD03O2JyZWFrO2Nhc2UgNjphLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gby5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKX0pKTtjYXNlIDc6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGEudDApO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYXV0aGVudGljYXRpb24gZGF0YSBhbmQgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBzaWduT3V0VXJsID0gYXdhaXQgYXV0aC5zaWduT3V0KCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjc2lnbk91dAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNpZ25PdXQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhpcyBkb2Vzbid0IGNsZWFyIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBzaWduT3V0VXJsID0gYXdhaXQgYXV0aC5nZXRTaWduT3V0VVJMKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0U2lnbk91dFVSTAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFNpZ25PdXRVUkwoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cyB0aGF0IGFyZSBmZXRjaGVkIGZyb20gdGhlIGAud2VsbC1rbm93bmAgZW5kcG9pbnQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxPSURDRW5kcG9pbnRzPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBPSURDIHNlcnZpY2UgZW5kcG9pbnRzLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGVuZHBvaW50cyA9IGF3YWl0IGF1dGguZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRPSURDU2VydmljZUVuZHBvaW50cwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGRlY29kZXMgdGhlIHBheWxvYWQgb2YgdGhlIElEIHRva2VuIGFuZCByZXR1cm5zIGl0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxEZWNvZGVkSURUb2tlblBheWxvYWQ+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlY29kZWQgSUQgdG9rZW4gcGF5bG9hZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBkZWNvZGVkSWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0RGVjb2RlZElEVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREZWNvZGVkSURUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXREZWNvZGVkSURUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgaWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0SURUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldElEVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uIG9idGFpbmVkIGZyb20gdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxCYXNpY1VzZXJJbmZvPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgYXV0aC5nZXRCYXNpY1VzZXJJbmZvKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QmFzaWNVc2VySW5mbwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldm9rZXMgdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhpcyBtZXRob2QgYWxzbyBjbGVhcnMgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEuKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEZldGNoUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJldHVybnMgdGhlIHJlc3BvbnNlIG9mIHRoZSByZXZva2UtYWNjZXNzLXRva2VuIHJlcXVlc3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3Jldm9rZUFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXZva2VBY2Nlc3NUb2tlbihlKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZWZyZXNoZXMgdGhlIGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYWNjZXNzCiAgICAgICAgICAgKiB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZWZyZXNoQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZWZyZXNoQWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oZSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGF1dGguZ2V0QWNjZXNzVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBjdXN0b20tZ3JhbnQgcmVxdWVzdCBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZQogICAgICAgICAgICogZGVwZW5kaW5nIG9uIHRoZSBjb25maWcgcGFzc2VkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7Q3VzdG9tR3JhbnRDb25maWd9IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCBjb250YWluaW5nIHRoZSBjdXN0b20gZ3JhbnQgY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZSB8IEZldGNoUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRlcGVuZGluZwogICAgICAgICAgICogb24geW91ciBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICAgKiAgIGF0dGFjaFRva2VuOiBmYWxzZSwKICAgICAgICAgICAqICAgZGF0YTogewogICAgICAgICAgICogICAgICAgY2xpZW50X2lkOiAie3tjbGllbnRJRH19IiwKICAgICAgICAgICAqICAgICAgIGdyYW50X3R5cGU6ICJhY2NvdW50X3N3aXRjaCIsCiAgICAgICAgICAgKiAgICAgICBzY29wZTogInt7c2NvcGV9fSIsCiAgICAgICAgICAgKiAgICAgICB0b2tlbjogInt7dG9rZW59fSIsCiAgICAgICAgICAgKiAgIH0sCiAgICAgICAgICAgKiAgIGlkOiAiYWNjb3VudC1zd2l0Y2giLAogICAgICAgICAgICogICByZXR1cm5SZXNwb25zZTogdHJ1ZSwKICAgICAgICAgICAqICAgcmV0dXJuc1Nlc3Npb246IHRydWUsCiAgICAgICAgICAgKiAgIHNpZ25JblJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgKiB9CiAgICAgICAgICAgKgogICAgICAgICAgICogYXV0aC5yZXF1ZXN0Q3VzdG9tR3JhbnQoY29uZmlnKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXF1ZXN0Q3VzdG9tR3JhbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RDdXN0b21HcmFudChlLHQpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYHRydWVgIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF3YWl0IGF1dGguaXNBdXRoZW50aWNhdGVkKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaXNBdXRoZW50aWNhdGVkCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5pc0F1dGhlbnRpY2F0ZWQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIFBLQ0UgY29kZSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBzdGF0ZSBwYXJhbWV0ZXIgdGhhdCB3YXMgcGFzc2VkIGluIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIFBLQ0UgY29kZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBwa2NlID0gYXdhaXQgZ2V0UEtDRUNvZGUoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRQS0NFQ29kZQogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFBLQ0VDb2RlKGUsdCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIFBLQ0UgY29kZSB0byB0aGUgZGF0YSBzdG9yZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGtjZSAtIFRoZSBQS0NFIGNvZGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgcGFyYW1ldGVyIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLnNldFBLQ0VDb2RlKCJwa2NlX2NvZGUiKQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NldFBLQ0VDb2RlCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zZXRQS0NFQ29kZShlLHQscik7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgc2lnbi1vdXQgaXMgc3VjY2Vzc2Z1bCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKICAgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzU2lnbk91dFN1Y2Nlc3NmdWwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3Igd2hlbiBpbnN0YW50aWF0aW5nIHRoaXMgY2xhc3MuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtQYXJ0aWFsPEF1dGhDbGllbnRDb25maWc8VD4+fSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgdG8gdXBkYXRlIHRoZSBTREsgY29uZmlndXJhdGlvbnMgd2l0aC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICAgKiAgICAgc2lnbkluUmVkaXJlY3RVUkw6ICJodHRwOi8vbG9jYWxob3N0OjMwMDAvc2lnbi1pbiIsCiAgICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAogICAgICAgICAgICogICAgIGJhc2VVcmw6ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgogICAgICAgICAgICogfQogICAgICAgICAgICoKICAgICAgICAgICAqIGF3YWl0IGF1dGgudXBkYXRlQ29uZmlnKGNvbmZpZyk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciN1cGRhdGVDb25maWcKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi8KZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSxbe2tleToiaXNTaWduT3V0U3VjY2Vzc2Z1bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJiFufQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGhhcyBmYWlsZWQgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduT3V0UmVkaXJlY3RVcmwgLSBUaGUgVVJMIHRvIHdoaWNoIHRoZSB1c2VyIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgc2lnbmluZy1vdXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCiAgICAgICAgICAgKiAgYXJlIHJlcXVpcmVkIGZvciB0aGlzIG1ldGhvZCB0byBmdW5jdGlvbi4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNkaWRTaWduT3V0RmFpbAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiZufX1dKSxlfSgpLHE9ImluaXQiOyFmdW5jdGlvbihlKXtlLkxvY2FsU3RvcmFnZT0ibG9jYWxTdG9yYWdlIixlLlNlc3Npb25TdG9yYWdlPSJzZXNzaW9uU3RvcmFnZSIsZS5XZWJXb3JrZXI9IndlYldvcmtlciIsZS5Ccm93c2VyTWVtb3J5PSJicm93c2VyTWVtb3J5In0oT3x8KE89e30pKSxmdW5jdGlvbihlKXtlLlNpZ25Jbj0ic2lnbi1pbiIsZS5TaWduT3V0PSJzaWduLW91dCIsZS5Jbml0aWFsaXplPSJpbml0aWFsaXplIixlLkh0dHBSZXF1ZXN0U3RhcnQ9Imh0dHAtcmVxdWVzdC1zdGFydCIsZS5IdHRwUmVxdWVzdEZpbmlzaD0iaHR0cC1yZXF1ZXN0LWZpbmlzaCIsZS5IdHRwUmVxdWVzdEVycm9yPSJodHRwLXJlcXVlc3QtZXJyb3IiLGUuSHR0cFJlcXVlc3RTdWNjZXNzPSJodHRwLXJlcXVlc3Qtc3VjY2VzcyIsZS5SZXZva2VBY2Nlc3NUb2tlbj0icmV2b2tlLWFjY2Vzcy10b2tlbiIsZS5DdXN0b21HcmFudD0iY3VzdG9tLWdyYW50IixlLlNpZ25PdXRGYWlsZWQ9InNpZ24tb3V0LWZhaWxlZCJ9KEl8fChJPXt9KSk7dmFyIEs9ImN1c3RvbV9ncmFudF9jb25maWciLEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gcyhlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiByPXBhcnNlSW50KHQuZXhwaXJlc19pbiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBfKGEsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihyPD0xMD9yOnItMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBLEpTT04uc3RyaW5naWZ5KG4pKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OiJnZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm57YmxvYjoobnVsbD09ZT92b2lkIDA6ZS5kYXRhKWluc3RhbmNlb2YgQmxvYj9udWxsPT1lP3ZvaWQgMDplLmRhdGE6bnVsbCxkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMH19fSx7a2V5OiJnZW5lcmF0ZUZhaWx1cmVNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS50b0pTT04pJiZkZWxldGUgZS50b0pTT04se2Vycm9yOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMX19fV0pLGV9KCksRj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIFcoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX1mdW5jdGlvbiB6KGUpe2lmKGUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuLmdldD9uOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW3JdfX0pfSkpLHR9dmFyIFY9e2V4cG9ydHM6e319LFk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sRz1ZLFg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiAkKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIFooZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gUShlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09WC5jYWxsKGUpfWZ1bmN0aW9uIGVlKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PT1yKGUpfWZ1bmN0aW9uIHRlKGUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09WC5jYWxsKGUpKXJldHVybiExO3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIHJlKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1YLmNhbGwoZSl9ZnVuY3Rpb24gbmUoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09cihlKSYmKGU9W2VdKSwkKGUpKWZvcih2YXIgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl0LmNhbGwobnVsbCxlW25dLG4sZSk7ZWxzZSBmb3IodmFyIG8gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmdC5jYWxsKG51bGwsZVtvXSxvLGUpfXZhciBhZT17aXNBcnJheTokLGlzQXJyYXlCdWZmZXI6USxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFaKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIVooZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZvcm1EYXRhXSI9PT1YLmNhbGwoZSl9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6ZSYmZS5idWZmZXImJlEoZS5idWZmZXIpfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6ZWUsaXNQbGFpbk9iamVjdDp0ZSxpc1VuZGVmaW5lZDpaLGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1YLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1YLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1YLmNhbGwoZSl9LGlzRnVuY3Rpb246cmUsaXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGVlKGUpJiZyZShlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBVUkxTZWFyY2hQYXJhbXNdIj09PVguY2FsbChlKX0saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KX0sZm9yRWFjaDpuZSxtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gcihyLG4pe3RlKHRbbl0pJiZ0ZShyKT90W25dPWUodFtuXSxyKTp0ZShyKT90W25dPWUoe30scik6JChyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspbmUoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/Ryh0LHIpOnR9KSksZX0sdHJpbTpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxzdHJpcEJPTTpmdW5jdGlvbihlKXtyZXR1cm4gNjUyNzk9PT1lLmNoYXJDb2RlQXQoMCkmJihlPWUuc2xpY2UoMSkpLGV9fSxvZT1hZTtmdW5jdGlvbiBpZShlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX12YXIgc2U9ZnVuY3Rpb24oZSx0LHIpe2lmKCF0KXJldHVybiBlO3ZhciBuO2lmKHIpbj1yKHQpO2Vsc2UgaWYob2UuaXNVUkxTZWFyY2hQYXJhbXModCkpbj10LnRvU3RyaW5nKCk7ZWxzZXt2YXIgYT1bXTtvZS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUsdCl7bnVsbCE9ZSYmKG9lLmlzQXJyYXkoZSk/dCs9IltdIjplPVtlXSxvZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe29lLmlzRGF0ZShlKT9lPWUudG9JU09TdHJpbmcoKTpvZS5pc09iamVjdChlKSYmKGU9SlNPTi5zdHJpbmdpZnkoZSkpLGEucHVzaChpZSh0KSsiPSIraWUoZSkpfSkpKX0pKSxuPWEuam9pbigiJiIpfWlmKG4pe3ZhciBvPWUuaW5kZXhPZigiIyIpOy0xIT09byYmKGU9ZS5zbGljZSgwLG8pKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStufXJldHVybiBlfSx1ZT1hZTtmdW5jdGlvbiBjZSgpe3RoaXMuaGFuZGxlcnM9W119Y2UucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czohIXImJnIuc3luY2hyb25vdXMscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sY2UucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfSxjZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXt1ZS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsKGZ1bmN0aW9uKHQpe251bGwhPT10JiZlKHQpfSkpfTt2YXIgZmU9Y2UsbGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtmdW5jdGlvbiBoZSgpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHBlKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX12YXIgZGU9aGUsdmU9cGU7ZnVuY3Rpb24gZ2UoZSl7aWYoZGU9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKGRlPT09aGV8fCFkZSkmJnNldFRpbWVvdXQpcmV0dXJuIGRlPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gZGUoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGRlLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBkZS5jYWxsKHRoaXMsZSwwKX19fSJmdW5jdGlvbiI9PXR5cGVvZiBsZS5zZXRUaW1lb3V0JiYoZGU9c2V0VGltZW91dCksImZ1bmN0aW9uIj09dHlwZW9mIGxlLmNsZWFyVGltZW91dCYmKHZlPWNsZWFyVGltZW91dCk7dmFyIG1lLHllPVtdLGJlPSExLHdlPS0xO2Z1bmN0aW9uIGtlKCl7YmUmJm1lJiYoYmU9ITEsbWUubGVuZ3RoP3llPW1lLmNvbmNhdCh5ZSk6d2U9LTEseWUubGVuZ3RoJiZSZSgpKX1mdW5jdGlvbiBSZSgpe2lmKCFiZSl7dmFyIGU9Z2Uoa2UpO2JlPSEwO2Zvcih2YXIgdD15ZS5sZW5ndGg7dDspe2ZvcihtZT15ZSx5ZT1bXTsrK3dlPHQ7KW1lJiZtZVt3ZV0ucnVuKCk7d2U9LTEsdD15ZS5sZW5ndGh9bWU9bnVsbCxiZT0hMSxmdW5jdGlvbihlKXtpZih2ZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKCh2ZT09PXBlfHwhdmUpJiZjbGVhclRpbWVvdXQpcmV0dXJuIHZlPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e3ZlKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gdmUuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiB2ZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIF9lKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9X2UucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIHhlKCl7fXZhciBTZT14ZSxFZT14ZSxUZT14ZSxBZT14ZSxDZT14ZSxQZT14ZSxEZT14ZTt2YXIgT2U9bGUucGVyZm9ybWFuY2V8fHt9LEllPU9lLm5vd3x8T2UubW96Tm93fHxPZS5tc05vd3x8T2Uub05vd3x8T2Uud2Via2l0Tm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfTt2YXIgVWU9bmV3IERhdGU7dmFyIExlPXtuZXh0VGljazpmdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3llLnB1c2gobmV3IF9lKGUsdCkpLDEhPT15ZS5sZW5ndGh8fGJlfHxnZShSZSl9LHRpdGxlOiJicm93c2VyIixicm93c2VyOiEwLGVudjp7fSxhcmd2OltdLHZlcnNpb246IiIsdmVyc2lvbnM6e30sb246U2UsYWRkTGlzdGVuZXI6RWUsb25jZTpUZSxvZmY6QWUscmVtb3ZlTGlzdGVuZXI6Q2UscmVtb3ZlQWxsTGlzdGVuZXJzOlBlLGVtaXQ6RGUsYmluZGluZzpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGN3ZDpmdW5jdGlvbigpe3JldHVybiIvIn0sY2hkaXI6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sdW1hc2s6ZnVuY3Rpb24oKXtyZXR1cm4gMH0saHJ0aW1lOmZ1bmN0aW9uKGUpe3ZhciB0PS4wMDEqSWUuY2FsbChPZSkscj1NYXRoLmZsb29yKHQpLG49TWF0aC5mbG9vcih0JTEqMWU5KTtyZXR1cm4gZSYmKHItPWVbMF0sKG4tPWVbMV0pPDAmJihyLS0sbis9MWU5KSksW3Isbl19LHBsYXRmb3JtOiJicm93c2VyIixyZWxlYXNlOnt9LGNvbmZpZzp7fSx1cHRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUtVWUpLzFlM319LEhlPUxlLE1lPWFlLGplPWZ1bmN0aW9uKGUsdCxyLG4sYSl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPWEsZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxlfSxOZT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0scWU9amUsS2U9ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgbz1uZXcgRXJyb3IoZSk7cmV0dXJuIHFlKG8sdCxyLG4sYSl9LEplPUtlLEJlPWFlLEZlPUJlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/e3dyaXRlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvKXt2YXIgaT1bXTtpLnB1c2goZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxCZS5pc051bWJlcihyKSYmaS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUocikudG9HTVRTdHJpbmcoKSksQmUuaXNTdHJpbmcobikmJmkucHVzaCgicGF0aD0iK24pLEJlLmlzU3RyaW5nKGEpJiZpLnB1c2goImRvbWFpbj0iK2EpLCEwPT09byYmaS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9aS5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitlKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihlKXt0aGlzLndyaXRlKGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX0sV2U9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChlKX0semU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrdC5yZXBsYWNlKC9eXC8rLywiIik6ZX0sVmU9YWUsWWU9WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSxHZT1hZSxYZT1HZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIGUsdD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIG4oZSl7dmFyIG49ZTtyZXR1cm4gdCYmKHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSxuPXIuaHJlZiksci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHtocmVmOnIuaHJlZixwcm90b2NvbDpyLnByb3RvY29sP3IucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnIuaG9zdCxzZWFyY2g6ci5zZWFyY2g/ci5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpyLmhhc2g/ci5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6ci5ob3N0bmFtZSxwb3J0OnIucG9ydCxwYXRobmFtZToiLyI9PT1yLnBhdGhuYW1lLmNoYXJBdCgwKT9yLnBhdGhuYW1lOiIvIityLnBhdGhuYW1lfX1yZXR1cm4gZT1uKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0KXt2YXIgcj1HZS5pc1N0cmluZyh0KT9uKHQpOnQ7cmV0dXJuIHIucHJvdG9jb2w9PT1lLnByb3RvY29sJiZyLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9O2Z1bmN0aW9uICRlKGUpe3RoaXMubWVzc2FnZT1lfSRlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSwkZS5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgWmU9JGUsUWU9YWUsZXQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIuY29uZmlnLnZhbGlkYXRlU3RhdHVzO3Iuc3RhdHVzJiZuJiYhbihyLnN0YXR1cyk/dChKZSgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Iuc3RhdHVzLHIuY29uZmlnLG51bGwsci5yZXF1ZXN0LHIpKTplKHIpfSx0dD1GZSxydD1zZSxudD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYhV2UodCk/emUoZSx0KTp0fSxhdD1mdW5jdGlvbihlKXt2YXIgdCxyLG4sYT17fTtyZXR1cm4gZT8oVmUuZm9yRWFjaChlLnNwbGl0KCJcbiIpLChmdW5jdGlvbihlKXtpZihuPWUuaW5kZXhPZigiOiIpLHQ9VmUudHJpbShlLnN1YnN0cigwLG4pKS50b0xvd2VyQ2FzZSgpLHI9VmUudHJpbShlLnN1YnN0cihuKzEpKSx0KXtpZihhW3RdJiZZZS5pbmRleE9mKHQpPj0wKXJldHVybjthW3RdPSJzZXQtY29va2llIj09PXQ/KGFbdF0/YVt0XTpbXSkuY29uY2F0KFtyXSk6YVt0XT9hW3RdKyIsICIrcjpyfX0pKSxhKTphfSxvdD1YZSxpdD1LZSxzdD1OZSx1dD1aZSxjdD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7dmFyIG4sYT1lLmRhdGEsbz1lLmhlYWRlcnMsaT1lLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiBzKCl7ZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShuKSxlLnNpZ25hbCYmZS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pfVFlLmlzRm9ybURhdGEoYSkmJmRlbGV0ZSBvWyJDb250ZW50LVR5cGUiXTt2YXIgdT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgYz1lLmF1dGgudXNlcm5hbWV8fCIiLGY9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtvLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShjKyI6IitmKX12YXIgbD1udChlLmJhc2VVUkwsZS51cmwpO2Z1bmN0aW9uIGgoKXtpZih1KXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIHU/YXQodS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxhPXtkYXRhOmkmJiJ0ZXh0IiE9PWkmJiJqc29uIiE9PWk/dS5yZXNwb25zZTp1LnJlc3BvbnNlVGV4dCxzdGF0dXM6dS5zdGF0dXMsc3RhdHVzVGV4dDp1LnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6dX07ZXQoKGZ1bmN0aW9uKGUpe3QoZSkscygpfSksKGZ1bmN0aW9uKGUpe3IoZSkscygpfSksYSksdT1udWxsfX1pZih1Lm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSxydChsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLHUudGltZW91dD1lLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiB1P3Uub25sb2FkZW5kPWg6dS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt1JiY0PT09dS5yZWFkeVN0YXRlJiYoMCE9PXUuc3RhdHVzfHx1LnJlc3BvbnNlVVJMJiYwPT09dS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpKSYmc2V0VGltZW91dChoKX0sdS5vbmFib3J0PWZ1bmN0aW9uKCl7dSYmKHIoaXQoIlJlcXVlc3QgYWJvcnRlZCIsZSwiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsKX0sdS5vbmVycm9yPWZ1bmN0aW9uKCl7cihpdCgiTmV0d29yayBFcnJvciIsZSxudWxsLHUpKSx1PW51bGx9LHUub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLG49ZS50cmFuc2l0aW9uYWx8fHN0O2UudGltZW91dEVycm9yTWVzc2FnZSYmKHQ9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKGl0KHQsZSxuLmNsYXJpZnlUaW1lb3V0RXJyb3I/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbH0sUWUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIHA9KGUud2l0aENyZWRlbnRpYWxzfHxvdChsKSkmJmUueHNyZkNvb2tpZU5hbWU/dHQucmVhZChlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7cCYmKG9bZS54c3JmSGVhZGVyTmFtZV09cCl9InNldFJlcXVlc3RIZWFkZXIiaW4gdSYmUWUuZm9yRWFjaChvLChmdW5jdGlvbihlLHQpe3ZvaWQgMD09PWEmJiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBvW3RdOnUuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpLFFlLmlzVW5kZWZpbmVkKGUud2l0aENyZWRlbnRpYWxzKXx8KHUud2l0aENyZWRlbnRpYWxzPSEhZS53aXRoQ3JlZGVudGlhbHMpLGkmJiJqc29uIiE9PWkmJih1LnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZ1LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIGUub25VcGxvYWRQcm9ncmVzcyYmdS51cGxvYWQmJnUudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uVXBsb2FkUHJvZ3Jlc3MpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihuPWZ1bmN0aW9uKGUpe3UmJihyKCFlfHxlJiZlLnR5cGU/bmV3IHV0KCJjYW5jZWxlZCIpOmUpLHUuYWJvcnQoKSx1PW51bGwpfSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnN1YnNjcmliZShuKSxlLnNpZ25hbCYmKGUuc2lnbmFsLmFib3J0ZWQ/bigpOmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixuKSkpLGF8fChhPW51bGwpLHUuc2VuZChhKX0pKX0sZnQ9YWUsbHQ9ZnVuY3Rpb24oZSx0KXtNZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LGh0PWplLHB0PXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gZHQoZSx0KXshZnQuaXNVbmRlZmluZWQoZSkmJmZ0LmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciB2dCxndD17dHJhbnNpdGlvbmFsOk5lLGFkYXB0ZXI6KCgidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0fHx2b2lkIDAhPT1IZSYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEhlKSkmJih2dD1jdCksdnQpLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGx0KHQsIkFjY2VwdCIpLGx0KHQsIkNvbnRlbnQtVHlwZSIpLGZ0LmlzRm9ybURhdGEoZSl8fGZ0LmlzQXJyYXlCdWZmZXIoZSl8fGZ0LmlzQnVmZmVyKGUpfHxmdC5pc1N0cmVhbShlKXx8ZnQuaXNGaWxlKGUpfHxmdC5pc0Jsb2IoZSk/ZTpmdC5pc0FycmF5QnVmZmVyVmlldyhlKT9lLmJ1ZmZlcjpmdC5pc1VSTFNlYXJjaFBhcmFtcyhlKT8oZHQodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOmZ0LmlzT2JqZWN0KGUpfHx0JiYiYXBwbGljYXRpb24vanNvbiI9PT10WyJDb250ZW50LVR5cGUiXT8oZHQodCwiYXBwbGljYXRpb24vanNvbiIpLGZ1bmN0aW9uKGUsdCxyKXtpZihmdC5pc1N0cmluZyhlKSl0cnl7cmV0dXJuKHR8fEpTT04ucGFyc2UpKGUpLGZ0LnRyaW0oZSl9Y2F0Y2goZSl7aWYoIlN5bnRheEVycm9yIiE9PWUubmFtZSl0aHJvdyBlfXJldHVybihyfHxKU09OLnN0cmluZ2lmeSkoZSl9KGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJhbnNpdGlvbmFsfHxndC50cmFuc2l0aW9uYWwscj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG49dCYmdC5mb3JjZWRKU09OUGFyc2luZyxhPSFyJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihhfHxuJiZmdC5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKGEpe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgaHQoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtmdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXtndC5oZWFkZXJzW2VdPXt9fSkpLGZ0LmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Z3QuaGVhZGVyc1tlXT1mdC5tZXJnZShwdCl9KSk7dmFyIG10PWd0LHl0PWFlLGJ0PW10LHd0PWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLl9fQ0FOQ0VMX18pfSxrdD1hZSxSdD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpc3x8YnQ7cmV0dXJuIHl0LmZvckVhY2gociwoZnVuY3Rpb24ocil7ZT1yLmNhbGwobixlLHQpfSkpLGV9LF90PXd0LHh0PW10LFN0PVplO2Z1bmN0aW9uIEV0KGUpe2lmKGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGUuc2lnbmFsJiZlLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBTdCgiY2FuY2VsZWQiKX12YXIgVHQ9YWUsQXQ9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9O3ZhciByPXt9O2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gVHQuaXNQbGFpbk9iamVjdChlKSYmVHQuaXNQbGFpbk9iamVjdCh0KT9UdC5tZXJnZShlLHQpOlR0LmlzUGxhaW5PYmplY3QodCk/VHQubWVyZ2Uoe30sdCk6VHQuaXNBcnJheSh0KT90LnNsaWNlKCk6dH1mdW5jdGlvbiBhKHIpe3JldHVybiBUdC5pc1VuZGVmaW5lZCh0W3JdKT9UdC5pc1VuZGVmaW5lZChlW3JdKT92b2lkIDA6bih2b2lkIDAsZVtyXSk6bihlW3JdLHRbcl0pfWZ1bmN0aW9uIG8oZSl7aWYoIVR0LmlzVW5kZWZpbmVkKHRbZV0pKXJldHVybiBuKHZvaWQgMCx0W2VdKX1mdW5jdGlvbiBpKHIpe3JldHVybiBUdC5pc1VuZGVmaW5lZCh0W3JdKT9UdC5pc1VuZGVmaW5lZChlW3JdKT92b2lkIDA6bih2b2lkIDAsZVtyXSk6bih2b2lkIDAsdFtyXSl9ZnVuY3Rpb24gcyhyKXtyZXR1cm4gciBpbiB0P24oZVtyXSx0W3JdKTpyIGluIGU/bih2b2lkIDAsZVtyXSk6dm9pZCAwfXZhciB1PXt1cmw6byxtZXRob2Q6byxkYXRhOm8sYmFzZVVSTDppLHRyYW5zZm9ybVJlcXVlc3Q6aSx0cmFuc2Zvcm1SZXNwb25zZTppLHBhcmFtc1NlcmlhbGl6ZXI6aSx0aW1lb3V0OmksdGltZW91dE1lc3NhZ2U6aSx3aXRoQ3JlZGVudGlhbHM6aSxhZGFwdGVyOmkscmVzcG9uc2VUeXBlOmkseHNyZkNvb2tpZU5hbWU6aSx4c3JmSGVhZGVyTmFtZTppLG9uVXBsb2FkUHJvZ3Jlc3M6aSxvbkRvd25sb2FkUHJvZ3Jlc3M6aSxkZWNvbXByZXNzOmksbWF4Q29udGVudExlbmd0aDppLG1heEJvZHlMZW5ndGg6aSx0cmFuc3BvcnQ6aSxodHRwQWdlbnQ6aSxodHRwc0FnZW50OmksY2FuY2VsVG9rZW46aSxzb2NrZXRQYXRoOmkscmVzcG9uc2VFbmNvZGluZzppLHZhbGlkYXRlU3RhdHVzOnN9O3JldHVybiBUdC5mb3JFYWNoKE9iamVjdC5rZXlzKGUpLmNvbmNhdChPYmplY3Qua2V5cyh0KSksKGZ1bmN0aW9uKGUpe3ZhciB0PXVbZV18fGEsbj10KGUpO1R0LmlzVW5kZWZpbmVkKG4pJiZ0IT09c3x8KHJbZV09bil9KSkscn0sQ3Q9IjAuMjYuMSIsUHQ9Q3QsRHQ9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe0R0W2VdPWZ1bmN0aW9uKG4pe3JldHVybiByKG4pPT09ZXx8ImEiKyh0PDE/Im4gIjoiICIpK2V9fSkpO3ZhciBPdD17fTtEdC50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4iW0F4aW9zIHYiK1B0KyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrZSsiJyIrdCsocj8iLiAiK3I6IiIpfXJldHVybiBmdW5jdGlvbihyLGEsbyl7aWYoITE9PT1lKXRocm93IG5ldyBFcnJvcihuKGEsIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpKTtyZXR1cm4gdCYmIU90W2FdJiYoT3RbYV09ITAsY29uc29sZS53YXJuKG4oYSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShyLGEsbyl9fTt2YXIgSXQ9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvYmplY3QiIT09cihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBhPU9iamVjdC5rZXlzKGUpLG89YS5sZW5ndGg7by0tID4wOyl7dmFyIGk9YVtvXSxzPXRbaV07aWYocyl7dmFyIHU9ZVtpXSxjPXZvaWQgMD09PXV8fHModSxpLGUpO2lmKCEwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIitpKyIgbXVzdCBiZSAiK2MpfWVsc2UgaWYoITAhPT1uKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2kpfX0sdmFsaWRhdG9yczpEdH0sVXQ9YWUsTHQ9c2UsSHQ9ZmUsTXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEV0KGUpLGUuaGVhZGVycz1lLmhlYWRlcnN8fHt9LGUuZGF0YT1SdC5jYWxsKGUsZS5kYXRhLGUuaGVhZGVycyxlLnRyYW5zZm9ybVJlcXVlc3QpLGUuaGVhZGVycz1rdC5tZXJnZShlLmhlYWRlcnMuY29tbW9ufHx7fSxlLmhlYWRlcnNbZS5tZXRob2RdfHx7fSxlLmhlYWRlcnMpLGt0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sKGZ1bmN0aW9uKHQpe2RlbGV0ZSBlLmhlYWRlcnNbdF19KSksKGUuYWRhcHRlcnx8eHQuYWRhcHRlcikoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIEV0KGUpLHQuZGF0YT1SdC5jYWxsKGUsdC5kYXRhLHQuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSx0fSksKGZ1bmN0aW9uKHQpe3JldHVybiBfdCh0KXx8KEV0KGUpLHQmJnQucmVzcG9uc2UmJih0LnJlc3BvbnNlLmRhdGE9UnQuY2FsbChlLHQucmVzcG9uc2UuZGF0YSx0LnJlc3BvbnNlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdCh0KX0pKX0sanQ9QXQsTnQ9SXQscXQ9TnQudmFsaWRhdG9ycztmdW5jdGlvbiBLdChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IEh0LHJlc3BvbnNlOm5ldyBIdH19S3QucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSx0KXsic3RyaW5nIj09dHlwZW9mIGU/KHQ9dHx8e30pLnVybD1lOnQ9ZXx8e30sKHQ9anQodGhpcy5kZWZhdWx0cyx0KSkubWV0aG9kP3QubWV0aG9kPXQubWV0aG9kLnRvTG93ZXJDYXNlKCk6dGhpcy5kZWZhdWx0cy5tZXRob2Q/dC5tZXRob2Q9dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTp0Lm1ldGhvZD0iZ2V0Ijt2YXIgcj10LnRyYW5zaXRpb25hbDt2b2lkIDAhPT1yJiZOdC5hc3NlcnRPcHRpb25zKHIse3NpbGVudEpTT05QYXJzaW5nOnF0LnRyYW5zaXRpb25hbChxdC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbil9LCExKTt2YXIgbj1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUucnVuV2hlbiYmITE9PT1lLnJ1bldoZW4odCl8fChhPWEmJmUuc3luY2hyb25vdXMsbi51bnNoaWZ0KGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpKX0pKTt2YXIgbyxpPVtdO2lmKHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kucHVzaChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKX0pKSwhYSl7dmFyIHM9W010LHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KHMsbikscz1zLmNvbmNhdChpKSxvPVByb21pc2UucmVzb2x2ZSh0KTtzLmxlbmd0aDspbz1vLnRoZW4ocy5zaGlmdCgpLHMuc2hpZnQoKSk7cmV0dXJuIG99Zm9yKHZhciB1PXQ7bi5sZW5ndGg7KXt2YXIgYz1uLnNoaWZ0KCksZj1uLnNoaWZ0KCk7dHJ5e3U9Yyh1KX1jYXRjaChlKXtmKGUpO2JyZWFrfX10cnl7bz1NdCh1KX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9Zm9yKDtpLmxlbmd0aDspbz1vLnRoZW4oaS5zaGlmdCgpLGkuc2hpZnQoKSk7cmV0dXJuIG99LEt0LnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9anQodGhpcy5kZWZhdWx0cyxlKSxMdChlLnVybCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cPy8sIiIpfSxVdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSwoZnVuY3Rpb24oZSl7S3QucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChqdChyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YToocnx8e30pLmRhdGF9KSl9fSkpLFV0LmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7S3QucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGp0KG58fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOnJ9KSl9fSkpO3ZhciBKdD1LdCxCdD1aZTtmdW5jdGlvbiBGdChlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0PWV9KSk7dmFyIHI9dGhpczt0aGlzLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7aWYoci5fbGlzdGVuZXJzKXt2YXIgdCxuPXIuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKXIuX2xpc3RlbmVyc1t0XShlKTtyLl9saXN0ZW5lcnM9bnVsbH19KSksdGhpcy5wcm9taXNlLnRoZW49ZnVuY3Rpb24oZSl7dmFyIHQsbj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ci5zdWJzY3JpYmUoZSksdD1lfSkpLnRoZW4oZSk7cmV0dXJuIG4uY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZSh0KX0sbn0sZSgoZnVuY3Rpb24oZSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgQnQoZSksdChyLnJlYXNvbikpfSkpfUZ0LnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LEZ0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dGhpcy5yZWFzb24/ZSh0aGlzLnJlYXNvbik6dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19LEZ0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLl9saXN0ZW5lcnMpe3ZhciB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfX0sRnQuc291cmNlPWZ1bmN0aW9uKCl7dmFyIGUsdD1uZXcgRnQoKGZ1bmN0aW9uKHQpe2U9dH0pKTtyZXR1cm57dG9rZW46dCxjYW5jZWw6ZX19O3ZhciBXdD1GdCx6dD1hZSxWdD1hZSxZdD1ZLEd0PUp0LFh0PUF0O3ZhciAkdD1mdW5jdGlvbiBlKHQpe3ZhciByPW5ldyBHdCh0KSxuPVl0KEd0LnByb3RvdHlwZS5yZXF1ZXN0LHIpO3JldHVybiBWdC5leHRlbmQobixHdC5wcm90b3R5cGUsciksVnQuZXh0ZW5kKG4sciksbi5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUoWHQodCxyKSl9LG59KG10KTskdC5BeGlvcz1HdCwkdC5DYW5jZWw9WmUsJHQuQ2FuY2VsVG9rZW49V3QsJHQuaXNDYW5jZWw9d3QsJHQuVkVSU0lPTj1DdCwkdC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSwkdC5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSwkdC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHp0LmlzT2JqZWN0KGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfSxWLmV4cG9ydHM9JHQsVi5leHBvcnRzLmRlZmF1bHQ9JHQ7dmFyIFp0LFF0PVYuZXhwb3J0czt2YXIgZXI9WnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpLHRoaXMuYXR0YWNoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5pbml0PXRoaXMuaW5pdC5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHMoZSxbe2tleToicmVxdWVzdEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5hdHRhY2hUb2tlbihlKTtjYXNlIDI6cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2hvdWxkRW5jb2RlVG9Gb3JtRGF0YSkmJihyPW51bGw9PWU/dm9pZCAwOmUuZGF0YSxuPW5ldyBGb3JtRGF0YSxPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKXtuLmFwcGVuZChlLHJbZV0pfSkpLGUuZGF0YT1uKSxadC5pc0hhbmRsZXJFbmFibGVkJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayhlKSx0LmFicnVwdCgicmV0dXJuIixlKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImVycm9ySGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhyb3cgWnQuaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiZ0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJzdWNjZXNzSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFp0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJnRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpadC5pc0hhbmRsZXJFbmFibGVkPWUsdGhpcy5hdHRhY2hUb2tlbj10O2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZW5hYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXtadC5pc0hhbmRsZXJFbmFibGVkPSEwfX0se2tleToiZGlzYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMX19LHtrZXk6ImRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlp0LkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe1p0LmlzSGFuZGxlckVuYWJsZWQ9ITB9KSxlKX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1lfX1dLFt7a2V5OiJnZXRJbnN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmF4aW9zSW5zdGFuY2V8fCh0aGlzLmF4aW9zSW5zdGFuY2U9UXQuY3JlYXRlKHt3aXRoQ3JlZGVudGlhbHM6ITB9KSx0aGlzLmNsaWVudEluc3RhbmNlfHwodGhpcy5jbGllbnRJbnN0YW5jZT1uZXcgWnQpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBfKGUsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuY2xpZW50SW5zdGFuY2UucmVxdWVzdEhhbmRsZXIodCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5zdWNjZXNzSGFuZGxlcih0KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5lcnJvckhhbmRsZXIodCl9KSksdGhpcy5heGlvc0luc3RhbmNlLmFsbD1RdC5hbGwsdGhpcy5heGlvc0luc3RhbmNlLnNwcmVhZD1RdC5zcHJlYWQsdGhpcy5heGlvc0luc3RhbmNlLmluaXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5pbml0LHRoaXMuYXhpb3NJbnN0YW5jZS5lbmFibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZW5hYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dD10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQsdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayksdGhpcy5heGlvc0luc3RhbmNlfX1dKSxlfSgpO2VyLkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ9MWUzLGVyPVp0PWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciBvLGk9YXJndW1lbnRzLmxlbmd0aCxzPWk8Mz90Om51bGw9PT1hP2E9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOmE7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0PyJ1bmRlZmluZWQiOnIoUmVmbGVjdCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LG4sYSk7ZWxzZSBmb3IodmFyIHU9ZS5sZW5ndGgtMTt1Pj0wO3UtLSkobz1lW3VdKSYmKHM9KGk8Mz9vKHMpOmk+Mz9vKHQsbixzKTpvKHQsbikpfHxzKTtyZXR1cm4gaT4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHMpLHN9KFtmdW5jdGlvbihlKXt9XSxlcik7dmFyIHRyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKSx0aGlzLl9kYXRhPW5ldyBNYXB9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuc2V0KGUsdCk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG51bGwhPT0ocj1udWxsPT09KHQ9dGhpcy5fZGF0YSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0KGUpKSYmdm9pZCAwIT09cj9yOiJ7fSIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLmRlbGV0ZShlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxycj1bXSxucj1bXSxhcj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxvcj0hMTtmdW5jdGlvbiBpcigpe29yPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClyclt0XT1lW3RdLG5yW2UuY2hhckNvZGVBdCh0KV09dDtuclsiLSIuY2hhckNvZGVBdCgwKV09NjIsbnJbIl8iLmNoYXJDb2RlQXQoMCldPTYzfWZ1bmN0aW9uIHNyKGUsdCxyKXtmb3IodmFyIG4sYSxvPVtdLGk9dDtpPHI7aSs9MyluPShlW2ldPDwxNikrKGVbaSsxXTw8OCkrZVtpKzJdLG8ucHVzaChyclsoYT1uKT4+MTgmNjNdK3JyW2E+PjEyJjYzXStyclthPj42JjYzXStycls2MyZhXSk7cmV0dXJuIG8uam9pbigiIil9ZnVuY3Rpb24gdXIoZSl7dmFyIHQ7b3J8fGlyKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLGE9IiIsbz1bXSxpPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9aSlvLnB1c2goc3IoZSxzLHMraT51P3U6cytpKSk7cmV0dXJuIDE9PT1uPyh0PWVbci0xXSxhKz1yclt0Pj4yXSxhKz1yclt0PDw0JjYzXSxhKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLGErPXJyW3Q+PjEwXSxhKz1yclt0Pj40JjYzXSxhKz1yclt0PDwyJjYzXSxhKz0iPSIpLG8ucHVzaChhKSxvLmpvaW4oIiIpfWZ1bmN0aW9uIGNyKGUsdCxyLG4sYSl7dmFyIG8saSxzPTgqYS1uLTEsdT0oMTw8cyktMSxjPXU+PjEsZj0tNyxsPXI/YS0xOjAsaD1yPy0xOjEscD1lW3QrbF07Zm9yKGwrPWgsbz1wJigxPDwtZiktMSxwPj49LWYsZis9cztmPjA7bz0yNTYqbytlW3QrbF0sbCs9aCxmLT04KTtmb3IoaT1vJigxPDwtZiktMSxvPj49LWYsZis9bjtmPjA7aT0yNTYqaStlW3QrbF0sbCs9aCxmLT04KTtpZigwPT09bylvPTEtYztlbHNle2lmKG89PT11KXJldHVybiBpP05hTjoxLzAqKHA/LTE6MSk7aSs9TWF0aC5wb3coMixuKSxvLT1jfXJldHVybihwPy0xOjEpKmkqTWF0aC5wb3coMixvLW4pfWZ1bmN0aW9uIGZyKGUsdCxyLG4sYSxvKXt2YXIgaSxzLHUsYz04Km8tYS0xLGY9KDE8PGMpLTEsbD1mPj4xLGg9MjM9PT1hP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDpvLTEsZD1uPzE6LTEsdj10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLGk9Zik6KGk9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoodT1NYXRoLnBvdygyLC1pKSk8MSYmKGktLSx1Kj0yKSwodCs9aStsPj0xP2gvdTpoKk1hdGgucG93KDIsMS1sKSkqdT49MiYmKGkrKyx1Lz0yKSxpK2w+PWY/KHM9MCxpPWYpOmkrbD49MT8ocz0odCp1LTEpKk1hdGgucG93KDIsYSksaSs9bCk6KHM9dCpNYXRoLnBvdygyLGwtMSkqTWF0aC5wb3coMixhKSxpPTApKTthPj04O2VbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixhLT04KTtmb3IoaT1pPDxhfHMsYys9YTtjPjA7ZVtyK3BdPTI1NSZpLHArPWQsaS89MjU2LGMtPTgpO2VbcitwLWRdfD0xMjgqdn12YXIgbHI9e30udG9TdHJpbmcsaHI9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09bHIuY2FsbChlKX07Z3IuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDA9PT1sZS5UWVBFRF9BUlJBWV9TVVBQT1JUfHxsZS5UWVBFRF9BUlJBWV9TVVBQT1JUO3ZhciBwcj1kcigpO2Z1bmN0aW9uIGRyKCl7cmV0dXJuIGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzfWZ1bmN0aW9uIHZyKGUsdCl7aWYoZHIoKTx0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO3JldHVybiBnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPW5ldyBVaW50OEFycmF5KHQpKS5fX3Byb3RvX189Z3IucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IGdyKHQpKSxlLmxlbmd0aD10KSxlfWZ1bmN0aW9uIGdyKGUsdCxyKXtpZighKGdyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBncikpcmV0dXJuIG5ldyBncihlLHQscik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBicih0aGlzLGUpfXJldHVybiBtcih0aGlzLGUsdCxyKX1mdW5jdGlvbiBtcihlLHQscixuKXtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mdW5jdGlvbihlLHQscixuKXtpZih0LmJ5dGVMZW5ndGgscjwwfHx0LmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHQuYnl0ZUxlbmd0aDxyKyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kcyIpO3Q9dm9pZCAwPT09ciYmdm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQscik6bmV3IFVpbnQ4QXJyYXkodCxyLG4pO2dyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9dCkuX19wcm90b19fPWdyLnByb3RvdHlwZTplPXdyKGUsdCk7cmV0dXJuIGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7InN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4Iik7aWYoIWdyLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIG49MHxfcih0LHIpLGE9KGU9dnIoZSxuKSkud3JpdGUodCxyKTthIT09biYmKGU9ZS5zbGljZSgwLGEpKTtyZXR1cm4gZX0oZSx0LHIpOmZ1bmN0aW9uKGUsdCl7aWYoUnIodCkpe3ZhciByPTB8a3IodC5sZW5ndGgpO3JldHVybiAwPT09KGU9dnIoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uP3ZyKGUsMCk6d3IoZSx0KTtpZigiQnVmZmVyIj09PXQudHlwZSYmaHIodC5kYXRhKSlyZXR1cm4gd3IoZSx0LmRhdGEpfXZhciBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKX0oZSx0KX1mdW5jdGlvbiB5cihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIGJyKGUsdCl7aWYoeXIodCksZT12cihlLHQ8MD8wOjB8a3IodCkpLCFnci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIHdyKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8a3IodC5sZW5ndGgpO2U9dnIoZSxyKTtmb3IodmFyIG49MDtuPHI7bis9MSllW25dPTI1NSZ0W25dO3JldHVybiBlfWZ1bmN0aW9uIGtyKGUpe2lmKGU+PWRyKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK2RyKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIFJyKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBfcihlLHQpe2lmKFJyKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBYcihlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuICRyKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIFhyKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIHhyKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIE5yKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBMcih0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIE1yKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBqcih0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBVcih0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBxcih0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBTcihlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIEVyKGUsdCxyLG4sYSl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9YT8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKGEpcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighYSlyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1nci5mcm9tKHQsbikpLFJyKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6VHIoZSx0LHIsbixhKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9hP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQscik6VHIoZSxbdF0scixuLGEpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIFRyKGUsdCxyLG4sYSl7dmFyIG8saT0xLHM9ZS5sZW5ndGgsdT10Lmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoInVjczIiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8InV0ZjE2bGUiPT09bnx8InV0Zi0xNmxlIj09PW4pKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO2k9MixzLz0yLHUvPTIsci89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1pP2VbdF06ZS5yZWFkVUludDE2QkUodCppKX1pZihhKXt2YXIgZj0tMTtmb3Iobz1yO288cztvKyspaWYoYyhlLG8pPT09Yyh0LC0xPT09Zj8wOm8tZikpe2lmKC0xPT09ZiYmKGY9byksby1mKzE9PT11KXJldHVybiBmKml9ZWxzZS0xIT09ZiYmKG8tPW8tZiksZj0tMX1lbHNlIGZvcihyK3U+cyYmKHI9cy11KSxvPXI7bz49MDtvLS0pe2Zvcih2YXIgbD0hMCxoPTA7aDx1O2grKylpZihjKGUsbytoKSE9PWModCxoKSl7bD0hMTticmVha31pZihsKXJldHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIEFyKGUsdCxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBhPWUubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPmEmJihuPWEpOm49YTt2YXIgbz10Lmxlbmd0aDtpZihvJTIhPTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5vLzImJihuPW8vMik7Zm9yKHZhciBpPTA7aTxuOysraSl7dmFyIHM9cGFyc2VJbnQodC5zdWJzdHIoMippLDIpLDE2KTtpZihpc05hTihzKSlyZXR1cm4gaTtlW3IraV09c31yZXR1cm4gaX1mdW5jdGlvbiBDcihlLHQscixuKXtyZXR1cm4gWnIoWHIodCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gUHIoZSx0LHIsbil7cmV0dXJuIFpyKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDsrK3IpdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQocikpO3JldHVybiB0fSh0KSxlLHIsbil9ZnVuY3Rpb24gRHIoZSx0LHIsbil7cmV0dXJuIFByKGUsdCxyLG4pfWZ1bmN0aW9uIE9yKGUsdCxyLG4pe3JldHVybiBacigkcih0KSxlLHIsbil9ZnVuY3Rpb24gSXIoZSx0LHIsbil7cmV0dXJuIFpyKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sYSxvPVtdLGk9MDtpPGUubGVuZ3RoJiYhKCh0LT0yKTwwKTsrK2kpbj0ocj1lLmNoYXJDb2RlQXQoaSkpPj44LGE9ciUyNTYsby5wdXNoKGEpLG8ucHVzaChuKTtyZXR1cm4gb30odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gVXIoZSx0LHIpe3JldHVybiAwPT09dCYmcj09PWUubGVuZ3RoP3VyKGUpOnVyKGUuc2xpY2UodCxyKSl9ZnVuY3Rpb24gTHIoZSx0LHIpe3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBuPVtdLGE9dDthPHI7KXt2YXIgbyxpLHMsdSxjPWVbYV0sZj1udWxsLGw9Yz4yMzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihhK2w8PXIpc3dpdGNoKGwpe2Nhc2UgMTpjPDEyOCYmKGY9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYobz1lW2ErMV0pKSYmKHU9KDMxJmMpPDw2fDYzJm8pPjEyNyYmKGY9dSk7YnJlYWs7Y2FzZSAzOm89ZVthKzFdLGk9ZVthKzJdLDEyOD09KDE5MiZvKSYmMTI4PT0oMTkyJmkpJiYodT0oMTUmYyk8PDEyfCg2MyZvKTw8Nnw2MyZpKT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihmPXUpO2JyZWFrO2Nhc2UgNDpvPWVbYSsxXSxpPWVbYSsyXSxzPWVbYSszXSwxMjg9PSgxOTImbykmJjEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJnMpJiYodT0oMTUmYyk8PDE4fCg2MyZvKTw8MTJ8KDYzJmkpPDw2fDYzJnMpPjY1NTM1JiZ1PDExMTQxMTImJihmPXUpfW51bGw9PT1mPyhmPTY1NTMzLGw9MSk6Zj42NTUzNSYmKGYtPTY1NTM2LG4ucHVzaChmPj4+MTAmMTAyM3w1NTI5NiksZj01NjMyMHwxMDIzJmYpLG4ucHVzaChmKSxhKz1sfXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtpZih0PD1IcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7dmFyIHI9IiIsbj0wO2Zvcig7bjx0OylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKG4sbis9SHIpKTtyZXR1cm4gcn0obil9Z3IucG9vbFNpemU9ODE5Mixnci5fYXVnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX189Z3IucHJvdG90eXBlLGV9LGdyLmZyb209ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBtcihudWxsLGUsdCxyKX0sZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmKGdyLnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUsZ3IuX19wcm90b19fPVVpbnQ4QXJyYXkpLGdyLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHlyKHQpLHQ8PTA/dnIoZSx0KTp2b2lkIDAhPT1yPyJzdHJpbmciPT10eXBlb2Ygbj92cihlLHQpLmZpbGwocixuKTp2cihlLHQpLmZpbGwocik6dnIoZSx0KX0obnVsbCxlLHQscil9LGdyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBicihudWxsLGUpfSxnci5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGJyKG51bGwsZSl9LGdyLmlzQnVmZmVyPVFyLGdyLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtpZighUnIoZSl8fCFScih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoZT09PXQpcmV0dXJuIDA7Zm9yKHZhciByPWUubGVuZ3RoLG49dC5sZW5ndGgsYT0wLG89TWF0aC5taW4ocixuKTthPG87KythKWlmKGVbYV0hPT10W2FdKXtyPWVbYV0sbj10W2FdO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sZ3IuaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sZ3IuY29uY2F0PWZ1bmN0aW9uKGUsdCl7aWYoIWhyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGdyLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49Z3IuYWxsb2NVbnNhZmUodCksYT0wO2ZvcihyPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBvPWVbcl07aWYoIVJyKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtvLmNvcHkobixhKSxhKz1vLmxlbmd0aH1yZXR1cm4gbn0sZ3IuYnl0ZUxlbmd0aD1fcixnci5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLGdyLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTIpU3IodGhpcyx0LHQrMSk7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTQpU3IodGhpcyx0LHQrMyksU3IodGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30sZ3IucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClTcih0aGlzLHQsdCs3KSxTcih0aGlzLHQrMSx0KzYpLFNyKHRoaXMsdCsyLHQrNSksU3IodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sZ3IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/THIodGhpcywwLGUpOnhyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ3IucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighUnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09ZXx8MD09PWdyLmNvbXBhcmUodGhpcyxlKX0sZ3IucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKGU9dGhpcy50b1N0cmluZygiaGV4IiwwLDUwKS5tYXRjaCgvLnsyfS9nKS5qb2luKCIgIiksdGhpcy5sZW5ndGg+NTAmJihlKz0iIC4uLiAiKSksIjxCdWZmZXIgIitlKyI+In0sZ3IucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0LHIsbixhKXtpZighUnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO2lmKHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PXImJihyPWU/ZS5sZW5ndGg6MCksdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09YSYmKGE9dGhpcy5sZW5ndGgpLHQ8MHx8cj5lLmxlbmd0aHx8bjwwfHxhPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPj1hJiZ0Pj1yKXJldHVybiAwO2lmKG4+PWEpcmV0dXJuLTE7aWYodD49cilyZXR1cm4gMTtpZih0aGlzPT09ZSlyZXR1cm4gMDtmb3IodmFyIG89KGE+Pj49MCktKG4+Pj49MCksaT0ocj4+Pj0wKS0odD4+Pj0wKSxzPU1hdGgubWluKG8saSksdT10aGlzLnNsaWNlKG4sYSksYz1lLnNsaWNlKHQsciksZj0wO2Y8czsrK2YpaWYodVtmXSE9PWNbZl0pe289dVtmXSxpPWNbZl07YnJlYWt9cmV0dXJuIG88aT8tMTppPG8/MTowfSxnci5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sZ3IucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBFcih0aGlzLGUsdCxyLCEwKX0sZ3IucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIodGhpcyxlLHQsciwhMSl9LGdyLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgYT10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPmEpJiYocj1hKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBvPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gQXIodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gQ3IodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIFByKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIERyKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gT3IodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBJcih0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKG8pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLG89ITB9fSxnci5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgSHI9NDA5NjtmdW5jdGlvbiBNcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JmVbYV0pO3JldHVybiBufWZ1bmN0aW9uIGpyKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZShlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBOcihlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBhPSIiLG89dDtvPHI7KytvKWErPUdyKGVbb10pO3JldHVybiBhfWZ1bmN0aW9uIHFyKGUsdCxyKXtmb3IodmFyIG49ZS5zbGljZSh0LHIpLGE9IiIsbz0wO288bi5sZW5ndGg7bys9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10rMjU2Km5bbysxXSk7cmV0dXJuIGF9ZnVuY3Rpb24gS3IoZSx0LHIpe2lmKGUlMSE9MHx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihlK3Q+cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIEpyKGUsdCxyLG4sYSxvKXtpZighUnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHQ+YXx8dDxvKXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIEJyKGUsdCxyLG4pe3Q8MCYmKHQ9NjU1MzUrdCsxKTtmb3IodmFyIGE9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsMik7YTxvOysrYSllW3IrYV09KHQmMjU1PDw4KihuP2E6MS1hKSk+Pj44KihuP2E6MS1hKX1mdW5jdGlvbiBGcihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGE9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7YTxvOysrYSllW3IrYV09dD4+PjgqKG4/YTozLWEpJjI1NX1mdW5jdGlvbiBXcihlLHQscixuLGEsbyl7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIHpyKGUsdCxyLG4sYSl7cmV0dXJuIGF8fFdyKGUsMCxyLDQpLGZyKGUsdCxyLG4sMjMsNCkscis0fWZ1bmN0aW9uIFZyKGUsdCxyLG4sYSl7cmV0dXJuIGF8fFdyKGUsMCxyLDgpLGZyKGUsdCxyLG4sNTIsOCkscis4fWdyLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5sZW5ndGg7aWYoKGU9fn5lKTwwPyhlKz1uKTwwJiYoZT0wKTplPm4mJihlPW4pLCh0PXZvaWQgMD09PXQ/bjp+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksdDxlJiYodD1lKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPWdyLnByb3RvdHlwZTtlbHNle3ZhciBhPXQtZTtyPW5ldyBncihhLHZvaWQgMCk7Zm9yKHZhciBvPTA7bzxhOysrbylyW29dPXRoaXNbbytlXX1yZXR1cm4gcn0sZ3IucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGE9MSxvPTA7KytvPHQmJihhKj0yNTYpOyluKz10aGlzW2Urb10qYTtyZXR1cm4gbn0sZ3IucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxhPTE7dD4wJiYoYSo9MjU2KTspbis9dGhpc1tlKy0tdF0qYTtyZXR1cm4gbn0sZ3IucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDEsdGhpcy5sZW5ndGgpLHRoaXNbZV19LGdyLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OH0sZ3IucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxnci5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbZSszXX0sZ3IucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbZV0rKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9LGdyLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGE9MSxvPTA7KytvPHQmJihhKj0yNTYpOyluKz10aGlzW2Urb10qYTtyZXR1cm4gbj49KGEqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LGdyLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10LGE9MSxvPXRoaXNbZSstLW5dO24+MCYmKGEqPTI1Nik7KW8rPXRoaXNbZSstLW5dKmE7cmV0dXJuIG8+PShhKj0xMjgpJiYoby09TWF0aC5wb3coMiw4KnQpKSxvfSxnci5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0sZ3IucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8S3IoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZ3IucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8S3IoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZ3IucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxnci5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LGdyLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMCwyMyw0KX0sZ3IucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCExLDIzLDQpfSxnci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsOCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCEwLDUyLDgpfSxnci5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsOCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCExLDUyLDgpfSxnci5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxKcih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBhPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoYSo9MjU2KTspdGhpc1t0K29dPWUvYSYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8SnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT1yLTEsbz0xO2Zvcih0aGlzW3QrYV09MjU1JmU7LS1hPj0wJiYobyo9MjU2KTspdGhpc1t0K2FdPWUvbyYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMSwyNTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsNjU1MzUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkJyKHRoaXMsZSx0LCEwKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsNjU1MzUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkJyKHRoaXMsZSx0LCExKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOkZyKHRoaXMsZSx0LCEwKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOkZyKHRoaXMsZSx0LCExKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGE9TWF0aC5wb3coMiw4KnItMSk7SnIodGhpcyxlLHQscixhLTEsLWEpfXZhciBvPTAsaT0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK288ciYmKGkqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3Qrby0xXSYmKHM9MSksdGhpc1t0K29dPShlL2k+PjApLXMmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGE9TWF0aC5wb3coMiw4KnItMSk7SnIodGhpcyxlLHQscixhLTEsLWEpfXZhciBvPXItMSxpPTEscz0wO2Zvcih0aGlzW3Qrb109MjU1JmU7LS1vPj0wJiYoaSo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtvKzFdJiYocz0xKSx0aGlzW3Qrb109KGUvaT4+MCktcyYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwxLDEyNywtMTI4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxnci5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6QnIodGhpcyxlLHQsITApLHQrMn0sZ3IucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkJyKHRoaXMsZSx0LCExKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkZyKHRoaXMsZSx0LCEwKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOkZyKHRoaXMsZSx0LCExKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB6cih0aGlzLGUsdCwhMCxyKX0sZ3IucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHpyKHRoaXMsZSx0LCExLHIpfSxnci5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFZyKHRoaXMsZSx0LCEwLHIpfSxnci5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFZyKHRoaXMsZSx0LCExLHIpfSxnci5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQscixuKXtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8bi1yJiYobj1lLmxlbmd0aC10K3IpO3ZhciBhLG89bi1yO2lmKHRoaXM9PT1lJiZyPHQmJnQ8bilmb3IoYT1vLTE7YT49MDstLWEpZVthK3RdPXRoaXNbYStyXTtlbHNlIGlmKG88MWUzfHwhZ3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoYT0wO2E8bzsrK2EpZVthK3RdPXRoaXNbYStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LGdyLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBhPWUuY2hhckNvZGVBdCgwKTthPDI1NiYmKGU9YSl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFnci5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT10eXBlb2YgZSYmKGUmPTI1NSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPD10KXJldHVybiB0aGlzO3ZhciBvO2lmKHQ+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsZXx8KGU9MCksIm51bWJlciI9PXR5cGVvZiBlKWZvcihvPXQ7bzxyOysrbyl0aGlzW29dPWU7ZWxzZXt2YXIgaT1ScihlKT9lOlhyKG5ldyBncihlLG4pLnRvU3RyaW5nKCkpLHM9aS5sZW5ndGg7Zm9yKG89MDtvPHItdDsrK28pdGhpc1tvK3RdPWlbbyVzXX1yZXR1cm4gdGhpc307dmFyIFlyPS9bXitcLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIEdyKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBYcihlLHQpe3ZhciByO3Q9dHx8MS8wO2Zvcih2YXIgbj1lLmxlbmd0aCxhPW51bGwsbz1bXSxpPTA7aTxuOysraSl7aWYoKHI9ZS5jaGFyQ29kZUF0KGkpKT41NTI5NSYmcjw1NzM0NCl7aWYoIWEpe2lmKHI+NTYzMTkpeyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihpKzE9PT1uKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9YT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KSxhPXI7Y29udGludWV9cj02NTUzNisoYS01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBhJiYodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7aWYoYT1udWxsLHI8MTI4KXtpZigodC09MSk8MClicmVhaztvLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKCh0LT0yKTwwKWJyZWFrO28ucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigodC09Myk8MClicmVhaztvLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKCh0LT00KTwwKWJyZWFrO28ucHVzaChyPj4xOHwyNDAscj4+MTImNjN8MTI4LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX19cmV0dXJuIG99ZnVuY3Rpb24gJHIoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLG8saTtvcnx8aXIoKTt2YXIgcz1lLmxlbmd0aDtpZihzJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTtvPSI9Ij09PWVbcy0yXT8yOiI9Ij09PWVbcy0xXT8xOjAsaT1uZXcgYXIoMypzLzQtbyksbj1vPjA/cy00OnM7dmFyIHU9MDtmb3IodD0wLHI9MDt0PG47dCs9NCxyKz0zKWE9bnJbZS5jaGFyQ29kZUF0KHQpXTw8MTh8bnJbZS5jaGFyQ29kZUF0KHQrMSldPDwxMnxucltlLmNoYXJDb2RlQXQodCsyKV08PDZ8bnJbZS5jaGFyQ29kZUF0KHQrMyldLGlbdSsrXT1hPj4xNiYyNTUsaVt1KytdPWE+PjgmMjU1LGlbdSsrXT0yNTUmYTtyZXR1cm4gMj09PW8/KGE9bnJbZS5jaGFyQ29kZUF0KHQpXTw8MnxucltlLmNoYXJDb2RlQXQodCsxKV0+PjQsaVt1KytdPTI1NSZhKToxPT09byYmKGE9bnJbZS5jaGFyQ29kZUF0KHQpXTw8MTB8bnJbZS5jaGFyQ29kZUF0KHQrMSldPDw0fG5yW2UuY2hhckNvZGVBdCh0KzIpXT4+MixpW3UrK109YT4+OCYyNTUsaVt1KytdPTI1NSZhKSxpfShmdW5jdGlvbihlKXtpZigoZT1mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfShlKS5yZXBsYWNlKFlyLCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtlLmxlbmd0aCU0IT0wOyllKz0iPSI7cmV0dXJuIGV9KGUpKX1mdW5jdGlvbiBacihlLHQscixuKXtmb3IodmFyIGE9MDthPG4mJiEoYStyPj10Lmxlbmd0aHx8YT49ZS5sZW5ndGgpOysrYSl0W2Ercl09ZVthXTtyZXR1cm4gYX1mdW5jdGlvbiBRcihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fGVuKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJmVuKGUuc2xpY2UoMCwwKSl9KGUpKX1mdW5jdGlvbiBlbihlKXtyZXR1cm4hIWUuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfXZhciB0bj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxCdWZmZXI6Z3IsSU5TUEVDVF9NQVhfQllURVM6NTAsU2xvd0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4rZSE9ZSYmKGU9MCksZ3IuYWxsb2MoK2UpfSxpc0J1ZmZlcjpRcixrTWF4TGVuZ3RoOnByfSkscm49e2V4cG9ydHM6e319LG5uPXt9LGFuPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYW4uZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxyPXQlNDtpZighcilyZXR1cm4gZTt2YXIgbj10LGE9NC1yLG89dCthLGk9Z3IuYWxsb2Mobyk7Zm9yKGkud3JpdGUoZSk7YS0tOylpLndyaXRlKCI9IixuKyspO3JldHVybiBpLnRvU3RyaW5nKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShubiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG9uPWFuO2Z1bmN0aW9uIHNuKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksZ3IuaXNCdWZmZXIoZSk/Y24oZS50b1N0cmluZygiYmFzZTY0IikpOmNuKGdyLmZyb20oZSx0KS50b1N0cmluZygiYmFzZTY0IikpfWZ1bmN0aW9uIHVuKGUpe3JldHVybiBlPWUudG9TdHJpbmcoKSxvbi5kZWZhdWx0KGUpLnJlcGxhY2UoL1wtL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKX1mdW5jdGlvbiBjbihlKXtyZXR1cm4gZS5yZXBsYWNlKC89L2csIiIpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIil9dmFyIGZuLGxuPXNuO2xuLmVuY29kZT1zbixsbi5kZWNvZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxnci5mcm9tKHVuKGUpLCJiYXNlNjQiKS50b1N0cmluZyh0KX0sbG4udG9CYXNlNjQ9dW4sbG4uZnJvbUJhc2U2ND1jbixsbi50b0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gZ3IuZnJvbSh1bihlKSwiYmFzZTY0Iil9LG5uLmRlZmF1bHQ9bG4sKGZuPXJuKS5leHBvcnRzPW5uLmRlZmF1bHQsZm4uZXhwb3J0cy5kZWZhdWx0PWZuLmV4cG9ydHM7dmFyIGhuPXJuLmV4cG9ydHMscG49e2V4cG9ydHM6e319OyFmdW5jdGlvbihlKXshZnVuY3Rpb24odCxyKXt2YXIgbj17fTshZnVuY3Rpb24oZSl7ZS5fX2VzTW9kdWxlPSEwLGUuZGlnZXN0TGVuZ3RoPTMyLGUuYmxvY2tTaXplPTY0O3ZhciB0PW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSk7ZnVuY3Rpb24gcihlLHIsbixhLG8pe2Zvcih2YXIgaSxzLHUsYyxmLGwsaCxwLGQsdixnLG0seTtvPj02NDspe2ZvcihpPXJbMF0scz1yWzFdLHU9clsyXSxjPXJbM10sZj1yWzRdLGw9cls1XSxoPXJbNl0scD1yWzddLHY9MDt2PDE2O3YrKylnPWErNCp2LGVbdl09KDI1NSZuW2ddKTw8MjR8KDI1NSZuW2crMV0pPDwxNnwoMjU1Jm5bZysyXSk8PDh8MjU1Jm5bZyszXTtmb3Iodj0xNjt2PDY0O3YrKyltPSgoZD1lW3YtMl0pPj4+MTd8ZDw8MTUpXihkPj4+MTl8ZDw8MTMpXmQ+Pj4xMCx5PSgoZD1lW3YtMTVdKT4+Pjd8ZDw8MjUpXihkPj4+MTh8ZDw8MTQpXmQ+Pj4zLGVbdl09KG0rZVt2LTddfDApKyh5K2Vbdi0xNl18MCk7Zm9yKHY9MDt2PDY0O3YrKyltPSgoKGY+Pj42fGY8PDI2KV4oZj4+PjExfGY8PDIxKV4oZj4+PjI1fGY8PDcpKSsoZiZsXn5mJmgpfDApKyhwKyh0W3ZdK2Vbdl18MCl8MCl8MCx5PSgoaT4+PjJ8aTw8MzApXihpPj4+MTN8aTw8MTkpXihpPj4+MjJ8aTw8MTApKSsoaSZzXmkmdV5zJnUpfDAscD1oLGg9bCxsPWYsZj1jK218MCxjPXUsdT1zLHM9aSxpPW0reXwwO3JbMF0rPWksclsxXSs9cyxyWzJdKz11LHJbM10rPWMscls0XSs9ZixyWzVdKz1sLHJbNl0rPWgscls3XSs9cCxhKz02NCxvLT02NH1yZXR1cm4gYX12YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpZ2VzdExlbmd0aD1lLmRpZ2VzdExlbmd0aCx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZSx0aGlzLnN0YXRlPW5ldyBJbnQzMkFycmF5KDgpLHRoaXMudGVtcD1uZXcgSW50MzJBcnJheSg2NCksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTI4KSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXMucmVzZXQoKX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZVswXT0xNzc5MDMzNzAzLHRoaXMuc3RhdGVbMV09MzE0NDEzNDI3Nyx0aGlzLnN0YXRlWzJdPTEwMTM5MDQyNDIsdGhpcy5zdGF0ZVszXT0yNzczNDgwNzYyLHRoaXMuc3RhdGVbNF09MTM1OTg5MzExOSx0aGlzLnN0YXRlWzVdPTI2MDA4MjI5MjQsdGhpcy5zdGF0ZVs2XT01Mjg3MzQ2MzUsdGhpcy5zdGF0ZVs3XT0xNTQxNDU5MjI1LHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpc30sdC5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuYnVmZmVyLmxlbmd0aDtlKyspdGhpcy5idWZmZXJbZV09MDtmb3IoZT0wO2U8dGhpcy50ZW1wLmxlbmd0aDtlKyspdGhpcy50ZW1wW2VdPTA7dGhpcy5yZXNldCgpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD1lLmxlbmd0aCksdGhpcy5maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoIlNIQTI1NjogY2FuJ3QgdXBkYXRlIGJlY2F1c2UgaGFzaCB3YXMgZmluaXNoZWQuIik7dmFyIG49MDtpZih0aGlzLmJ5dGVzSGFzaGVkKz10LHRoaXMuYnVmZmVyTGVuZ3RoPjApe2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8NjQmJnQ+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTs2ND09PXRoaXMuYnVmZmVyTGVuZ3RoJiYocih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLDY0KSx0aGlzLmJ1ZmZlckxlbmd0aD0wKX1mb3IodD49NjQmJihuPXIodGhpcy50ZW1wLHRoaXMuc3RhdGUsZSxuLHQpLHQlPTY0KTt0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtpZighdGhpcy5maW5pc2hlZCl7dmFyIHQ9dGhpcy5ieXRlc0hhc2hlZCxuPXRoaXMuYnVmZmVyTGVuZ3RoLGE9dC81MzY4NzA5MTJ8MCxvPXQ8PDMsaT10JTY0PDU2PzY0OjEyODt0aGlzLmJ1ZmZlcltuXT0xMjg7Zm9yKHZhciBzPW4rMTtzPGktODtzKyspdGhpcy5idWZmZXJbc109MDt0aGlzLmJ1ZmZlcltpLThdPWE+Pj4yNCYyNTUsdGhpcy5idWZmZXJbaS03XT1hPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2ktNl09YT4+PjgmMjU1LHRoaXMuYnVmZmVyW2ktNV09YT4+PjAmMjU1LHRoaXMuYnVmZmVyW2ktNF09bz4+PjI0JjI1NSx0aGlzLmJ1ZmZlcltpLTNdPW8+Pj4xNiYyNTUsdGhpcy5idWZmZXJbaS0yXT1vPj4+OCYyNTUsdGhpcy5idWZmZXJbaS0xXT1vPj4+MCYyNTUscih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLGkpLHRoaXMuZmluaXNoZWQ9ITB9Zm9yKHM9MDtzPDg7cysrKWVbNCpzKzBdPXRoaXMuc3RhdGVbc10+Pj4yNCYyNTUsZVs0KnMrMV09dGhpcy5zdGF0ZVtzXT4+PjE2JjI1NSxlWzQqcysyXT10aGlzLnN0YXRlW3NdPj4+OCYyNTUsZVs0KnMrM109dGhpcy5zdGF0ZVtzXT4+PjAmMjU1O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LHQucHJvdG90eXBlLl9zYXZlU3RhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLnN0YXRlLmxlbmd0aDt0KyspZVt0XT10aGlzLnN0YXRlW3RdfSx0LnByb3RvdHlwZS5fcmVzdG9yZVN0YXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjx0aGlzLnN0YXRlLmxlbmd0aDtyKyspdGhpcy5zdGF0ZVtyXT1lW3JdO3RoaXMuYnl0ZXNIYXNoZWQ9dCx0aGlzLmZpbmlzaGVkPSExLHRoaXMuYnVmZmVyTGVuZ3RoPTB9LHR9KCk7ZS5IYXNoPW47dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuaW5uZXI9bmV3IG4sdGhpcy5vdXRlcj1uZXcgbix0aGlzLmJsb2NrU2l6ZT10aGlzLmlubmVyLmJsb2NrU2l6ZSx0aGlzLmRpZ2VzdExlbmd0aD10aGlzLmlubmVyLmRpZ2VzdExlbmd0aDt2YXIgdD1uZXcgVWludDhBcnJheSh0aGlzLmJsb2NrU2l6ZSk7aWYoZS5sZW5ndGg+dGhpcy5ibG9ja1NpemUpKG5ldyBuKS51cGRhdGUoZSkuZmluaXNoKHQpLmNsZWFuKCk7ZWxzZSBmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj01NDt0aGlzLmlubmVyLnVwZGF0ZSh0KTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTEwNjt0aGlzLm91dGVyLnVwZGF0ZSh0KSx0aGlzLmlzdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5vc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMuaW5uZXIuX3NhdmVTdGF0ZSh0aGlzLmlzdGF0ZSksdGhpcy5vdXRlci5fc2F2ZVN0YXRlKHRoaXMub3N0YXRlKTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl09MH1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbm5lci5fcmVzdG9yZVN0YXRlKHRoaXMuaXN0YXRlLHRoaXMuaW5uZXIuYmxvY2tTaXplKSx0aGlzLm91dGVyLl9yZXN0b3JlU3RhdGUodGhpcy5vc3RhdGUsdGhpcy5vdXRlci5ibG9ja1NpemUpLHRoaXN9LGUucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmlzdGF0ZS5sZW5ndGg7ZSsrKXRoaXMub3N0YXRlW2VdPXRoaXMuaXN0YXRlW2VdPTA7dGhpcy5pbm5lci5jbGVhbigpLHRoaXMub3V0ZXIuY2xlYW4oKX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlKSx0aGlzfSxlLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3V0ZXIuZmluaXNoZWQ/dGhpcy5vdXRlci5maW5pc2goZSk6KHRoaXMuaW5uZXIuZmluaXNoKGUpLHRoaXMub3V0ZXIudXBkYXRlKGUsdGhpcy5kaWdlc3RMZW5ndGgpLmZpbmlzaChlKSksdGhpc30sZS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSxlfSgpO2Z1bmN0aW9uIG8oZSl7dmFyIHQ9KG5ldyBuKS51cGRhdGUoZSkscj10LmRpZ2VzdCgpO3JldHVybiB0LmNsZWFuKCkscn1mdW5jdGlvbiBpKGUsdCl7dmFyIHI9bmV3IGEoZSkudXBkYXRlKHQpLG49ci5kaWdlc3QoKTtyZXR1cm4gci5jbGVhbigpLG59ZnVuY3Rpb24gcyhlLHQscixuKXt2YXIgYT1uWzBdO2lmKDA9PT1hKXRocm93IG5ldyBFcnJvcigiaGtkZjogY2Fubm90IGV4cGFuZCBtb3JlIik7dC5yZXNldCgpLGE+MSYmdC51cGRhdGUoZSksciYmdC51cGRhdGUociksdC51cGRhdGUobiksdC5maW5pc2goZSksblswXSsrfWUuSE1BQz1hLGUuaGFzaD1vLGUuZGVmYXVsdD1vLGUuaG1hYz1pO3ZhciB1PW5ldyBVaW50OEFycmF5KGUuZGlnZXN0TGVuZ3RoKTtmdW5jdGlvbiBjKGUsdCxyLG4pe3ZvaWQgMD09PXQmJih0PXUpLHZvaWQgMD09PW4mJihuPTMyKTtmb3IodmFyIG89bmV3IFVpbnQ4QXJyYXkoWzFdKSxjPWkodCxlKSxmPW5ldyBhKGMpLGw9bmV3IFVpbnQ4QXJyYXkoZi5kaWdlc3RMZW5ndGgpLGg9bC5sZW5ndGgscD1uZXcgVWludDhBcnJheShuKSxkPTA7ZDxuO2QrKyloPT09bC5sZW5ndGgmJihzKGwsZixyLG8pLGg9MCkscFtkXT1sW2grK107cmV0dXJuIGYuY2xlYW4oKSxsLmZpbGwoMCksby5maWxsKDApLHB9ZnVuY3Rpb24gZihlLHQscixuKXtmb3IodmFyIG89bmV3IGEoZSksaT1vLmRpZ2VzdExlbmd0aCxzPW5ldyBVaW50OEFycmF5KDQpLHU9bmV3IFVpbnQ4QXJyYXkoaSksYz1uZXcgVWludDhBcnJheShpKSxmPW5ldyBVaW50OEFycmF5KG4pLGw9MDtsKmk8bjtsKyspe3ZhciBoPWwrMTtzWzBdPWg+Pj4yNCYyNTUsc1sxXT1oPj4+MTYmMjU1LHNbMl09aD4+PjgmMjU1LHNbM109aD4+PjAmMjU1LG8ucmVzZXQoKSxvLnVwZGF0ZSh0KSxvLnVwZGF0ZShzKSxvLmZpbmlzaChjKTtmb3IodmFyIHA9MDtwPGk7cCsrKXVbcF09Y1twXTtmb3IocD0yO3A8PXI7cCsrKXtvLnJlc2V0KCksby51cGRhdGUoYykuZmluaXNoKGMpO2Zvcih2YXIgZD0wO2Q8aTtkKyspdVtkXV49Y1tkXX1mb3IocD0wO3A8aSYmbCppK3A8bjtwKyspZltsKmkrcF09dVtwXX1mb3IobD0wO2w8aTtsKyspdVtsXT1jW2xdPTA7Zm9yKGw9MDtsPDQ7bCsrKXNbbF09MDtyZXR1cm4gby5jbGVhbigpLGZ9ZS5oa2RmPWMsZS5wYmtkZjI9Zn0obik7dmFyIGE9bi5kZWZhdWx0O2Zvcih2YXIgbyBpbiBuKWFbb109bltvXTtlLmV4cG9ydHM9YX0oKX0ocG4pO3ZhciBkbj1XKHBuLmV4cG9ydHMpLHZuPWNyeXB0bztmdW5jdGlvbiBnbihlKXt0cnl7cmV0dXJuIG51bGwhPWUmJiJib29sZWFuIj09dHlwZW9mIGUuZXh0cmFjdGFibGUmJiJzdHJpbmciPT10eXBlb2YgZS5hbGdvcml0aG0ubmFtZSYmInN0cmluZyI9PXR5cGVvZiBlLnR5cGV9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciBtbj1uZXcgVGV4dEVuY29kZXIseW49bmV3IFRleHREZWNvZGVyO2Z1bmN0aW9uIGJuKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG49dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5sZW5ndGh9KSwwKSxhPW5ldyBVaW50OEFycmF5KG4pLG89MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXthLnNldChlLG8pLG8rPWUubGVuZ3RofSkpLGF9dmFyIHduPWZ1bmN0aW9uKGUpe3ZhciB0PWU7dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJih0PXluLmRlY29kZSh0KSksdD10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLnJlcGxhY2UoL1xzL2csIiIpO3RyeXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWF0b2IoZSkscj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKXJbbl09dC5jaGFyQ29kZUF0KG4pO3JldHVybiByfSh0KX1jYXRjaChlKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgaW5wdXQgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuIil9fSxrbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pPU0VfR0VORVJJQyIsbi5uYW1lPW4uY29uc3RydWN0b3IubmFtZSxudWxsPT09KGE9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpfHx2b2lkIDA9PT1hfHxhLmNhbGwoRXJyb3IsdihuKSxuLmNvbnN0cnVjdG9yKSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0dFTkVSSUMifX1dKSxyfShkKEVycm9yKSksUm49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCIsbi5jbGFpbT1hLG4ucmVhc29uPWksbn1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIn19XSkscn0oa24pLF9uPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InVuc3BlY2lmaWVkIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToidW5zcGVjaWZpZWQiO3JldHVybiBvKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KV1RfRVhQSVJFRCIsbi5jbGFpbT1hLG4ucmVhc29uPWksbn1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0VYUElSRUQifX1dKSxyfShrbikseG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQifX1dKSxyfShrbiksU249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX05PVF9TVVBQT1JURUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCJ9fV0pLHJ9KGtuKSxFbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfSU5WQUxJRCJ9fV0pLHJ9KGtuKSxUbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfSU5WQUxJRCJ9fV0pLHJ9KGtuKSxBbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfSU5WQUxJRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19JTlZBTElEIn19XSkscn0oa24pLENuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19OT19NQVRDSElOR19LRVkiLGUubWVzc2FnZT0ibm8gYXBwbGljYWJsZSBrZXkgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTk9fTUFUQ0hJTkdfS0VZIn19XSkscn0oa24pLFBuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIixlLm1lc3NhZ2U9Im11bHRpcGxlIG1hdGNoaW5nIGtleXMgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTVVMVElQTEVfTUFUQ0hJTkdfS0VZUyJ9fV0pLHJ9KGtuKSxEbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCIsZS5tZXNzYWdlPSJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIn19XSkscn0oa24pO2Z1bmN0aW9uIE9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFdlYlNvY2tldFBhaXJ9ZnVuY3Rpb24gSW4oKXt0cnl7cmV0dXJuIHZvaWQgMCE9PUhlLnZlcnNpb25zLm5vZGV9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIFVuKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiYWxnb3JpdGhtLm5hbWUiO3JldHVybiBuZXcgVHlwZUVycm9yKCJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgaXRzICIuY29uY2F0KHQsIiBtdXN0IGJlICIpLmNvbmNhdChlKSl9ZnVuY3Rpb24gTG4oZSx0KXtyZXR1cm4gZS5uYW1lPT09dH1mdW5jdGlvbiBIbihlKXtyZXR1cm4gcGFyc2VJbnQoZS5uYW1lLnNsaWNlKDQpLDEwKX1mdW5jdGlvbiBNbihlKXtzd2l0Y2goZSl7Y2FzZSJFUzI1NiI6cmV0dXJuIlAtMjU2IjtjYXNlIkVTMzg0IjpyZXR1cm4iUC0zODQiO2Nhc2UiRVM1MTIiOnJldHVybiJQLTUyMSI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVhY2hhYmxlIil9fWZ1bmN0aW9uIGpuKGUsdCl7aWYodC5sZW5ndGgmJiF0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiBlLnVzYWdlcy5pbmNsdWRlcyh0KX0pKSl7dmFyIHI9IkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgdXNhZ2VzIG11c3QgaW5jbHVkZSAiO2lmKHQubGVuZ3RoPjIpe3ZhciBuPXQucG9wKCk7cis9Im9uZSBvZiAiLmNvbmNhdCh0LmpvaW4oIiwgIiksIiwgb3IgIikuY29uY2F0KG4sIi4iKX1lbHNlIDI9PT10Lmxlbmd0aD9yKz0ib25lIG9mICIuY29uY2F0KHRbMF0sIiBvciAiKS5jb25jYXQodFsxXSwiLiIpOnIrPSIiLmNvbmNhdCh0WzBdLCIuIik7dGhyb3cgbmV3IFR5cGVFcnJvcihyKX19dmFyIE5uPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iS2V5IG11c3QgYmUgIixuPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkobj4xP24tMTowKSxvPTE7bzxuO28rKylhW28tMV09YXJndW1lbnRzW29dO2lmKGEubGVuZ3RoPjIpe3ZhciBpPWEucG9wKCk7dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGEuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQoaSwiLiIpfWVsc2UgMj09PWEubGVuZ3RoP3QrPSJvbmUgb2YgdHlwZSAiLmNvbmNhdChhWzBdLCIgb3IgIikuY29uY2F0KGFbMV0sIi4iKTp0Kz0ib2YgdHlwZSAiLmNvbmNhdChhWzBdLCIuIik7cmV0dXJuIG51bGw9PWU/dCs9IiBSZWNlaXZlZCAiLmNvbmNhdChlKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5uYW1lP3QrPSIgUmVjZWl2ZWQgZnVuY3Rpb24gIi5jb25jYXQoZS5uYW1lKToib2JqZWN0Ij09PXIoZSkmJm51bGwhPWUmJmUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZSYmKHQrPSIgUmVjZWl2ZWQgYW4gaW5zdGFuY2Ugb2YgIi5jb25jYXQoZS5jb25zdHJ1Y3Rvci5uYW1lKSksdH0scW49ZnVuY3Rpb24oZSl7cmV0dXJuIGduKGUpfSxLbj1bIkNyeXB0b0tleSJdLEpuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG4sYT10LmZpbHRlcihCb29sZWFuKTtpZigwPT09YS5sZW5ndGh8fDE9PT1hLmxlbmd0aClyZXR1cm4hMDt2YXIgbyxpPVIoYSk7dHJ5e2ZvcihpLnMoKTshKG89aS5uKCkpLmRvbmU7KXt2YXIgcz1vLnZhbHVlLHU9T2JqZWN0LmtleXMocyk7aWYobiYmMCE9PW4uc2l6ZSlmb3IodmFyIGM9MCxmPXU7YzxmLmxlbmd0aDtjKyspe3ZhciBsPWZbY107aWYobi5oYXMobCkpcmV0dXJuITE7bi5hZGQobCl9ZWxzZSBuPW5ldyBTZXQodSl9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiEwfTtmdW5jdGlvbiBCbihlKXtpZigib2JqZWN0IiE9PXIodD1lKXx8bnVsbD09PXR8fCJbb2JqZWN0IE9iamVjdF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiExO3ZhciB0O2lmKG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpcmV0dXJuITA7Zm9yKHZhciBuPWU7bnVsbCE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTspbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW59dmFyIEZuPWZ1bmN0aW9uKGUsdCl7aWYoZS5zdGFydHNXaXRoKCJSUyIpfHxlLnN0YXJ0c1dpdGgoIlBTIikpe3ZhciByPXQuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiByfHxyPDIwNDgpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIGtleSBtb2R1bHVzTGVuZ3RoIHRvIGJlIDIwNDggYml0cyBvciBsYXJnZXIiKSl9fTtmdW5jdGlvbiBXbihlKXt2YXIgdCxyO3N3aXRjaChlLmt0eSl7Y2FzZSJvY3QiOnN3aXRjaChlLmFsZyl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6dD17bmFtZToiSE1BQyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9WyJzaWduIiwidmVyaWZ5Il07YnJlYWs7Y2FzZSJBMTI4Q0JDLUhTMjU2IjpjYXNlIkExOTJDQkMtSFMzODQiOmNhc2UiQTI1NkNCQy1IUzUxMiI6dGhyb3cgbmV3IFNuKCIiLmNvbmNhdChlLmFsZywiIGtleXMgY2Fubm90IGJlIGltcG9ydGVkIGFzIENyeXB0b0tleSBpbnN0YW5jZXMiKSk7Y2FzZSJBMTI4R0NNIjpjYXNlIkExOTJHQ00iOmNhc2UiQTI1NkdDTSI6Y2FzZSJBMTI4R0NNS1ciOmNhc2UiQTE5MkdDTUtXIjpjYXNlIkEyNTZHQ01LVyI6dD17bmFtZToiQUVTLUdDTSJ9LHI9WyJlbmNyeXB0IiwiZGVjcnlwdCJdO2JyZWFrO2Nhc2UiQTEyOEtXIjpjYXNlIkExOTJLVyI6Y2FzZSJBMjU2S1ciOnQ9e25hbWU6IkFFUy1LVyJ9LHI9WyJ3cmFwS2V5IiwidW53cmFwS2V5Il07YnJlYWs7Y2FzZSJQQkVTMi1IUzI1NitBMTI4S1ciOmNhc2UiUEJFUzItSFMzODQrQTE5MktXIjpjYXNlIlBCRVMyLUhTNTEyK0EyNTZLVyI6dD17bmFtZToiUEJLREYyIn0scj1bImRlcml2ZUJpdHMiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJSU0EiOnN3aXRjaChlLmFsZyl7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6dD17bmFtZToiUlNBLVBTUyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6dD17bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlNBLU9BRVAiOmNhc2UiUlNBLU9BRVAtMjU2IjpjYXNlIlJTQS1PQUVQLTM4NCI6Y2FzZSJSU0EtT0FFUC01MTIiOnQ9e25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtIi5jb25jYXQocGFyc2VJbnQoZS5hbGcuc2xpY2UoLTMpLDEwKXx8MSl9LHI9ZS5kP1siZGVjcnlwdCIsInVud3JhcEtleSJdOlsiZW5jcnlwdCIsIndyYXBLZXkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJFQyI6c3dpdGNoKGUuYWxnKXtjYXNlIkVTMjU2Ijp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0yNTYifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRVMzODQiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTM4NCJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzUxMiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtNTIxIn0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVDREgtRVMiOmNhc2UiRUNESC1FUytBMTI4S1ciOmNhc2UiRUNESC1FUytBMTkyS1ciOmNhc2UiRUNESC1FUytBMjU2S1ciOnQ9e25hbWU6IkVDREgiLG5hbWVkQ3VydmU6ZS5jcnZ9LHI9ZS5kP1siZGVyaXZlQml0cyJdOltdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlKE9uKCl8fEluKCkpJiYiT0tQIjppZigiRWREU0EiIT09ZS5hbGcpdGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKTtzd2l0Y2goZS5jcnYpe2Nhc2UiRWQyNTUxOSI6dD17bmFtZToiTk9ERS1FRDI1NTE5IixuYW1lZEN1cnZlOiJOT0RFLUVEMjU1MTkifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UgSW4oKSYmIkVkNDQ4Ijp0PXtuYW1lOiJOT0RFLUVENDQ4IixuYW1lZEN1cnZlOiJOT0RFLUVENDQ4In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImNydiIgKFN1YnR5cGUgb2YgS2V5IFBhaXIpIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpfXJldHVybnthbGdvcml0aG06dCxrZXlVc2FnZXM6cn19dmFyIHpuPWZ1bmN0aW9uKCl7dmFyIGU9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyKXt2YXIgbixhLG8saSxzLHUsYyxmLGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihpPVduKHIpLHM9aS5hbGdvcml0aG0sdT1pLmtleVVzYWdlcyxjPVtzLG51bGwhPT0oYT1yLmV4dCkmJnZvaWQgMCE9PWEmJmEsbnVsbCE9PShvPXIua2V5X29wcykmJnZvaWQgMCE9PW8/bzp1XSwiUEJLREYyIiE9PXMubmFtZSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChmPXZuLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KGYsWyJyYXciLHduKHIuayldLmNvbmNhdChjKSkpO2Nhc2UgNDpyZXR1cm4gZGVsZXRlKGw9dCh7fSxyKSkuYWxnLGUuYWJydXB0KCJyZXR1cm4iLChuPXZuLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KG4sWyJqd2siLGxdLmNvbmNhdChjKSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBWbihlLHQscil7cmV0dXJuIFluLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBZbigpe3JldHVybihZbj1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKEJuKHIpKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCJKV0sgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYobnx8KG49ci5hbGcpLCJzdHJpbmciPT10eXBlb2YgbiYmbil7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignImFsZyIgYXJndW1lbnQgaXMgcmVxdWlyZWQgd2hlbiAiandrLmFsZyIgaXMgbm90IHByZXNlbnQnKTtjYXNlIDU6ZS50MD1yLmt0eSxlLm5leHQ9Im9jdCI9PT1lLnQwPzg6IlJTQSI9PT1lLnQwPzE0OiJFQyI9PT1lLnQwfHwiT0tQIj09PWUudDA/MTY6MTc7YnJlYWs7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygci5rJiZyLmspe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNzaW5nICJrIiAoS2V5IFZhbHVlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDEwOmlmKG51bGwhPWF8fChhPSEwIT09ci5leHQpLCFhKXtlLm5leHQ9MTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHpuKHQodCh7fSxyKSx7fSx7YWxnOm4sZXh0OiExfSkpKTtjYXNlIDEzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix3bihyLmspKTtjYXNlIDE0OmlmKHZvaWQgMD09PXIub3RoKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IFNuKCdSU0EgSldLICJvdGgiIChPdGhlciBQcmltZXMgSW5mbykgUGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQnKTtjYXNlIDE2OnJldHVybiBlLmFicnVwdCgicmV0dXJuIix6bih0KHQoe30scikse30se2FsZzpufSkpKTtjYXNlIDE3OnRocm93IG5ldyBTbignVW5zdXBwb3J0ZWQgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIEduPWZ1bmN0aW9uKGUsdCxyKXtlLnN0YXJ0c1dpdGgoIkhTIil8fCJkaXIiPT09ZXx8ZS5zdGFydHNXaXRoKCJQQkVTMiIpfHwvXkFcZHszfSg/OkdDTSk/S1ckLy50ZXN0KGUpP2Z1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXtpZighcW4oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKEtuKSxbIlVpbnQ4QXJyYXkiXSkpKTtpZigic2VjcmV0IiE9PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIHN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKX19KHQpOmZ1bmN0aW9uKGUsdCl7aWYoIXFuKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFtlXS5jb25jYXQoYihLbikpKSk7aWYoInNlY3JldCI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBub3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKTtpZigic2lnbiI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHNpZ25pbmcgbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZigiZGVjcnlwdCI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGRlY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZihlLmFsZ29yaXRobSYmInZlcmlmeSI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSB2ZXJpZnlpbmcgbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpO2lmKGUuYWxnb3JpdGhtJiYiZW5jcnlwdCI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBlbmNyeXB0aW9uIG11c3QgYmUgb2YgdHlwZSAicHVibGljIicpKX0odCxyKX07ZnVuY3Rpb24gWG4oZSx0LHIsbixhKXtpZih2b2lkIDAhPT1hLmNyaXQmJnZvaWQgMD09PW4uY3JpdCl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKTtpZighbnx8dm9pZCAwPT09bi5jcml0KXJldHVybiBuZXcgU2V0O2lmKCFBcnJheS5pc0FycmF5KG4uY3JpdCl8fDA9PT1uLmNyaXQubGVuZ3RofHxuLmNyaXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGh9KSkpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBhbiBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyB3aGVuIHByZXNlbnQnKTt2YXIgbztvPXZvaWQgMCE9PXI/bmV3IE1hcChbXS5jb25jYXQoYihPYmplY3QuZW50cmllcyhyKSksYih0LmVudHJpZXMoKSkpKTp0O3ZhciBpLHM9UihuLmNyaXQpO3RyeXtmb3Iocy5zKCk7IShpPXMubigpKS5kb25lOyl7dmFyIHU9aS52YWx1ZTtpZighby5oYXModSkpdGhyb3cgbmV3IFNuKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBub3QgcmVjb2duaXplZCcpKTtpZih2b2lkIDA9PT1hW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBtaXNzaW5nJykpO2lmKG8uZ2V0KHUpJiZ2b2lkIDA9PT1uW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfXJldHVybiBuZXcgU2V0KG4uY3JpdCl9dmFyICRuPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dCYmKCFBcnJheS5pc0FycmF5KHQpfHx0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZX0pKSkpdGhyb3cgbmV3IFR5cGVFcnJvcignIicuY29uY2F0KGUsJyIgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycpKTtpZih0KXJldHVybiBuZXcgU2V0KHQpfTtmdW5jdGlvbiBabihlLHQpe3ZhciByPSJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpO3N3aXRjaChlKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkhNQUMifTtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6ZS5zbGljZSgtMyk+PjN9O2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUifTtjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOnQubmFtZWRDdXJ2ZX07Y2FzZShPbigpfHxJbigpKSYmIkVkRFNBIjp2YXIgbj10Lm5hbWVkQ3VydmU7cmV0dXJue25hbWU6bixuYW1lZEN1cnZlOm59O2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCJhbGcgIi5jb25jYXQoZSwiIGlzIG5vdCBzdXBwb3J0ZWQgZWl0aGVyIGJ5IEpPU0Ugb3IgeW91ciBqYXZhc2NyaXB0IHJ1bnRpbWUiKSl9fWZ1bmN0aW9uIFFuKGUsdCxyKXtpZihnbih0KSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6aWYoIUxuKGUuYWxnb3JpdGhtLCJITUFDIikpdGhyb3cgVW4oIkhNQUMiKTt2YXIgcj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihIbihlLmFsZ29yaXRobS5oYXNoKSE9PXIpdGhyb3cgVW4oIlNIQS0iLmNvbmNhdChyKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIlJTQVNTQS1QS0NTMS12MV81IikpdGhyb3cgVW4oIlJTQVNTQS1QS0NTMS12MV81Iik7dmFyIG49cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoSG4oZS5hbGdvcml0aG0uaGFzaCkhPT1uKXRocm93IFVuKCJTSEEtIi5jb25jYXQobiksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6aWYoIUxuKGUuYWxnb3JpdGhtLCJSU0EtUFNTIikpdGhyb3cgVW4oIlJTQS1QU1MiKTt2YXIgYT1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihIbihlLmFsZ29yaXRobS5oYXNoKSE9PWEpdGhyb3cgVW4oIlNIQS0iLmNvbmNhdChhKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIEluKCkmJiJFZERTQSI6aWYoIk5PREUtRUQyNTUxOSIhPT1lLmFsZ29yaXRobS5uYW1lJiYiTk9ERS1FRDQ0OCIhPT1lLmFsZ29yaXRobS5uYW1lKXRocm93IFVuKCJOT0RFLUVEMjU1MTkgb3IgTk9ERS1FRDQ0OCIpO2JyZWFrO2Nhc2UgT24oKSYmIkVkRFNBIjppZighTG4oZS5hbGdvcml0aG0sIk5PREUtRUQyNTUxOSIpKXRocm93IFVuKCJOT0RFLUVEMjU1MTkiKTticmVhaztjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIkVDRFNBIikpdGhyb3cgVW4oIkVDRFNBIik7dmFyIG89TW4odCk7aWYoZS5hbGdvcml0aG0ubmFtZWRDdXJ2ZSE9PW8pdGhyb3cgVW4obywiYWxnb3JpdGhtLm5hbWVkQ3VydmUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uIil9Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkoaT4yP2ktMjowKSx1PTI7dTxpO3UrKylzW3UtMl09YXJndW1lbnRzW3VdO2puKGUscyl9KHQsZSxyKSx0O2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtpZighZS5zdGFydHNXaXRoKCJIUyIpKXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihLbikpKSk7cmV0dXJuIHZuLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsdCx7aGFzaDoiU0hBLSIuY29uY2F0KGUuc2xpY2UoLTMpKSxuYW1lOiJITUFDIn0sITEsW3JdKX10aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KGIoS24pLFsiVWludDhBcnJheSJdKSkpfXZhciBlYT1mdW5jdGlvbigpe3ZhciBlPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4sYSl7dmFyIG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixRbih0LHIsInZlcmlmeSIpO2Nhc2UgMjpyZXR1cm4gbz1lLnNlbnQsRm4odCxvKSxpPVpuKHQsby5hbGdvcml0aG0pLGUucHJldj01LGUubmV4dD04LHZuLnN1YnRsZS52ZXJpZnkoaSxvLG4sYSk7Y2FzZSA4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMTE6cmV0dXJuIGUucHJldj0xMSxlLnQwPWUuY2F0Y2goNSksZS5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s1LDExXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4sYSl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiB0YShlLHQscil7cmV0dXJuIHJhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiByYSgpe3JldHVybiByYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdSxjLGYsbCxoLHAsZCx2LGcsbTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKEJuKHIpKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgRW4oIkZsYXR0ZW5lZCBKV1MgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYodm9pZCAwIT09ci5wcm90ZWN0ZWR8fHZvaWQgMCE9PXIuaGVhZGVyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgRW4oJ0ZsYXR0ZW5lZCBKV1MgbXVzdCBoYXZlIGVpdGhlciBvZiB0aGUgInByb3RlY3RlZCIgb3IgImhlYWRlciIgbWVtYmVycycpO2Nhc2UgNDppZih2b2lkIDA9PT1yLnByb3RlY3RlZHx8InN0cmluZyI9PXR5cGVvZiByLnByb3RlY3RlZCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgNjppZih2b2lkIDAhPT1yLnBheWxvYWQpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFBheWxvYWQgbWlzc2luZyIpO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIHIuc2lnbmF0dXJlKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgU2lnbmF0dXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEwOmlmKHZvaWQgMD09PXIuaGVhZGVyfHxCbihyLmhlYWRlcikpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgRW4oIkpXUyBVbnByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEyOmlmKGk9e30sIXIucHJvdGVjdGVkKXtlLm5leHQ9MjI7YnJlYWt9cz13bihyLnByb3RlY3RlZCksZS5wcmV2PTE1LGk9SlNPTi5wYXJzZSh5bi5kZWNvZGUocykpLGUubmV4dD0yMjticmVhaztjYXNlIDE5OnRocm93IGUucHJldj0xOSxlLnQwPWUuY2F0Y2goMTUpLG5ldyBFbigiSldTIFByb3RlY3RlZCBIZWFkZXIgaXMgaW52YWxpZCIpO2Nhc2UgMjI6aWYoSm4oaSxyLmhlYWRlcikpe2UubmV4dD0yNDticmVha310aHJvdyBuZXcgRW4oIkpXUyBQcm90ZWN0ZWQgYW5kIEpXUyBVbnByb3RlY3RlZCBIZWFkZXIgUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgZGlzam9pbnQiKTtjYXNlIDI0OmlmKHU9dCh0KHt9LGkpLHIuaGVhZGVyKSxjPVhuKEVuLG5ldyBNYXAoW1siYjY0IiwhMF1dKSxudWxsPT1hP3ZvaWQgMDphLmNyaXQsaSx1KSxmPSEwLCFjLmhhcygiYjY0Iikpe2UubmV4dD0zMTticmVha31pZigiYm9vbGVhbiI9PXR5cGVvZihmPWkuYjY0KSl7ZS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBFbignVGhlICJiNjQiIChiYXNlNjR1cmwtZW5jb2RlIHBheWxvYWQpIEhlYWRlciBQYXJhbWV0ZXIgbXVzdCBiZSBhIGJvb2xlYW4nKTtjYXNlIDMxOmlmKCJzdHJpbmciPT10eXBlb2YobD11LmFsZykmJmwpe2UubmV4dD0zNDticmVha310aHJvdyBuZXcgRW4oJ0pXUyAiYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG1pc3Npbmcgb3IgaW52YWxpZCcpO2Nhc2UgMzQ6aWYoIShoPWEmJiRuKCJhbGdvcml0aG1zIixhLmFsZ29yaXRobXMpKXx8aC5oYXMobCkpe2UubmV4dD0zNzticmVha310aHJvdyBuZXcgeG4oJyJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbm90IGFsbG93ZWQnKTtjYXNlIDM3OmlmKCFmKXtlLm5leHQ9NDI7YnJlYWt9aWYoInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQpe2UubmV4dD00MDticmVha310aHJvdyBuZXcgRW4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmciKTtjYXNlIDQwOmUubmV4dD00NDticmVhaztjYXNlIDQyOmlmKCJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkfHxyLnBheWxvYWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtlLm5leHQ9NDQ7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIFVpbnQ4QXJyYXkgaW5zdGFuY2UiKTtjYXNlIDQ0OmlmKHA9ITEsImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2UubmV4dD01MDticmVha31yZXR1cm4gZS5uZXh0PTQ4LG4oaSxyKTtjYXNlIDQ4Om49ZS5zZW50LHA9ITA7Y2FzZSA1MDpyZXR1cm4gR24obCxuLCJ2ZXJpZnkiKSxkPWJuKG1uLmVuY29kZShudWxsIT09KG89ci5wcm90ZWN0ZWQpJiZ2b2lkIDAhPT1vP286IiIpLG1uLmVuY29kZSgiLiIpLCJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkP21uLmVuY29kZShyLnBheWxvYWQpOnIucGF5bG9hZCksdj13bihyLnNpZ25hdHVyZSksZS5uZXh0PTU1LGVhKGwsbix2LGQpO2Nhc2UgNTU6aWYoZS5zZW50KXtlLm5leHQ9NTg7YnJlYWt9dGhyb3cgbmV3IERuO2Nhc2UgNTg6aWYoZz1mP3duKHIucGF5bG9hZCk6InN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQ/bW4uZW5jb2RlKHIucGF5bG9hZCk6ci5wYXlsb2FkLG09e3BheWxvYWQ6Z30sdm9pZCAwIT09ci5wcm90ZWN0ZWQmJihtLnByb3RlY3RlZEhlYWRlcj1pKSx2b2lkIDAhPT1yLmhlYWRlciYmKG0udW5wcm90ZWN0ZWRIZWFkZXI9ci5oZWFkZXIpLCFwKXtlLm5leHQ9NjQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxtKSx7fSx7a2V5Om59KSk7Y2FzZSA2NDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbSk7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzE1LDE5XV0pfSkpKSxyYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbmEoZSx0LHIpe3JldHVybiBhYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYWEoKXtyZXR1cm4oYWE9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7dmFyIG8saSxzLHUsYyxmO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYociBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihyPXluLmRlY29kZShyKSksInN0cmluZyI9PXR5cGVvZiByKXtlLm5leHQ9MzticmVha310aHJvdyBuZXcgRW4oIkNvbXBhY3QgSldTIG11c3QgYmUgYSBzdHJpbmcgb3IgVWludDhBcnJheSIpO2Nhc2UgMzppZihvPXIuc3BsaXQoIi4iKSxpPW9bMF0scz1vWzFdLHU9b1syXSwzPT09by5sZW5ndGgpe2UubmV4dD02O2JyZWFrfXRocm93IG5ldyBFbigiSW52YWxpZCBDb21wYWN0IEpXUyIpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgsdGEoe3BheWxvYWQ6cyxwcm90ZWN0ZWQ6aSxzaWduYXR1cmU6dX0sbixhKTtjYXNlIDg6aWYoYz1lLnNlbnQsZj17cGF5bG9hZDpjLnBheWxvYWQscHJvdGVjdGVkSGVhZGVyOmMucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTEyO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sZikse30se2tleTpjLmtleX0pKTtjYXNlIDEyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixmKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIG9hPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmZsb29yKGUuZ2V0VGltZSgpLzFlMyl9LGlhPTg2NDAwLHNhPS9eKFxkK3xcZCtcLlxkKykgPyhzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpJC9pLHVhPWZ1bmN0aW9uKGUpe3ZhciB0PXNhLmV4ZWMoZSk7aWYoIXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCB0aW1lIHBlcmlvZCBmb3JtYXQiKTt2YXIgcj1wYXJzZUZsb2F0KHRbMV0pO3N3aXRjaCh0WzJdLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2VjIjpjYXNlInNlY3MiOmNhc2Uic2Vjb25kIjpjYXNlInNlY29uZHMiOmNhc2UicyI6cmV0dXJuIE1hdGgucm91bmQocik7Y2FzZSJtaW51dGUiOmNhc2UibWludXRlcyI6Y2FzZSJtaW4iOmNhc2UibWlucyI6Y2FzZSJtIjpyZXR1cm4gTWF0aC5yb3VuZCg2MCpyKTtjYXNlImhvdXIiOmNhc2UiaG91cnMiOmNhc2UiaHIiOmNhc2UiaHJzIjpjYXNlImgiOnJldHVybiBNYXRoLnJvdW5kKDM2MDAqcik7Y2FzZSJkYXkiOmNhc2UiZGF5cyI6Y2FzZSJkIjpyZXR1cm4gTWF0aC5yb3VuZChyKmlhKTtjYXNlIndlZWsiOmNhc2Uid2Vla3MiOmNhc2UidyI6cmV0dXJuIE1hdGgucm91bmQoNjA0ODAwKnIpO2RlZmF1bHQ6cmV0dXJuIE1hdGgucm91bmQoMzE1NTc2MDAqcil9fSxjYT1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15hcHBsaWNhdGlvblwvLywiIil9LGZhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QuaW5jbHVkZXMoZSk6ISFBcnJheS5pc0FycmF5KGUpJiZ0LnNvbWUoU2V0LnByb3RvdHlwZS5oYXMuYmluZChuZXcgU2V0KGUpKSl9LGxhPWZ1bmN0aW9uKGUsdCl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30sbz1hLnR5cDtpZihvJiYoInN0cmluZyIhPXR5cGVvZiBlLnR5cHx8Y2EoZS50eXApIT09Y2EobykpKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAidHlwIiBKV1QgaGVhZGVyIHZhbHVlJywidHlwIiwiY2hlY2tfZmFpbGVkIik7dHJ5e249SlNPTi5wYXJzZSh5bi5kZWNvZGUodCkpfWNhdGNoKGUpe31pZighQm4obikpdGhyb3cgbmV3IFRuKCJKV1QgQ2xhaW1zIFNldCBtdXN0IGJlIGEgdG9wLWxldmVsIEpTT04gb2JqZWN0Iik7dmFyIGk9YS5pc3N1ZXI7aWYoaSYmIShBcnJheS5pc0FycmF5KGkpP2k6W2ldKS5pbmNsdWRlcyhuLmlzcykpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJpc3MiIGNsYWltIHZhbHVlJywiaXNzIiwiY2hlY2tfZmFpbGVkIik7dmFyIHM9YS5zdWJqZWN0O2lmKHMmJm4uc3ViIT09cyl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgInN1YiIgY2xhaW0gdmFsdWUnLCJzdWIiLCJjaGVja19mYWlsZWQiKTt2YXIgdSxjPWEuYXVkaWVuY2U7aWYoYyYmIWZhKG4uYXVkLCJzdHJpbmciPT10eXBlb2YgYz9bY106YykpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJhdWQiIGNsYWltIHZhbHVlJywiYXVkIiwiY2hlY2tfZmFpbGVkIik7c3dpdGNoKHIoYS5jbG9ja1RvbGVyYW5jZSkpe2Nhc2Uic3RyaW5nIjp1PXVhKGEuY2xvY2tUb2xlcmFuY2UpO2JyZWFrO2Nhc2UibnVtYmVyIjp1PWEuY2xvY2tUb2xlcmFuY2U7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOnU9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2xvY2tUb2xlcmFuY2Ugb3B0aW9uIHR5cGUiKX12YXIgZj1hLmN1cnJlbnREYXRlLGw9b2EoZnx8bmV3IERhdGUpO2lmKCh2b2lkIDAhPT1uLmlhdHx8YS5tYXhUb2tlbkFnZSkmJiJudW1iZXIiIT10eXBlb2Ygbi5pYXQpdGhyb3cgbmV3IFJuKCciaWF0IiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiaWF0IiwiaW52YWxpZCIpO2lmKHZvaWQgMCE9PW4ubmJmKXtpZigibnVtYmVyIiE9dHlwZW9mIG4ubmJmKXRocm93IG5ldyBSbignIm5iZiIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsIm5iZiIsImludmFsaWQiKTtpZihuLm5iZj5sK3UpdGhyb3cgbmV3IFJuKCcibmJmIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywibmJmIiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09bi5leHApe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5leHApdGhyb3cgbmV3IFJuKCciZXhwIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiZXhwIiwiaW52YWxpZCIpO2lmKG4uZXhwPD1sLXUpdGhyb3cgbmV3IF9uKCciZXhwIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywiZXhwIiwiY2hlY2tfZmFpbGVkIil9aWYoYS5tYXhUb2tlbkFnZSl7dmFyIGg9bC1uLmlhdCxwPSJudW1iZXIiPT10eXBlb2YgYS5tYXhUb2tlbkFnZT9hLm1heFRva2VuQWdlOnVhKGEubWF4VG9rZW5BZ2UpO2lmKGgtdT5wKXRocm93IG5ldyBfbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAodG9vIGZhciBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKTtpZihoPDAtdSl0aHJvdyBuZXcgUm4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKGl0IHNob3VsZCBiZSBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKX1yZXR1cm4gbn07ZnVuY3Rpb24gaGEoKXtyZXR1cm4oaGE9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7dmFyIG8saSxzLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsbmEocixuLGEpO2Nhc2UgMjppZihpPWUuc2VudCwhKG51bGw9PT0obz1pLnByb3RlY3RlZEhlYWRlci5jcml0KXx8dm9pZCAwPT09bz92b2lkIDA6by5pbmNsdWRlcygiYjY0IikpfHwhMSE9PWkucHJvdGVjdGVkSGVhZGVyLmI2NCl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFRuKCJKV1RzIE1VU1QgTk9UIHVzZSB1bmVuY29kZWQgcGF5bG9hZCIpO2Nhc2UgNTppZihzPWxhKGkucHJvdGVjdGVkSGVhZGVyLGkucGF5bG9hZCxhKSx1PXtwYXlsb2FkOnMscHJvdGVjdGVkSGVhZGVyOmkucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSx1KSx7fSx7a2V5Omkua2V5fSkpO2Nhc2UgOTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHBhKGUpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIGUmJmUuc2xpY2UoMCwyKSl7Y2FzZSJSUyI6Y2FzZSJQUyI6cmV0dXJuIlJTQSI7Y2FzZSJFUyI6cmV0dXJuIkVDIjtjYXNlIkVkIjpyZXR1cm4iT0tQIjtkZWZhdWx0OnRocm93IG5ldyBTbignVW5zdXBwb3J0ZWQgImFsZyIgdmFsdWUgZm9yIGEgSlNPTiBXZWIgS2V5IFNldCcpfX1mdW5jdGlvbiBkYShlKXtyZXR1cm4gQm4oZSl9dmFyIHZhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtpZihvKHRoaXMsZSksdGhpcy5fY2FjaGVkPW5ldyBXZWFrTWFwLCFmdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PT1yKGUpJiZBcnJheS5pc0FycmF5KGUua2V5cykmJmUua2V5cy5ldmVyeShkYSl9KHQpKXRocm93IG5ldyBBbigiSlNPTiBXZWIgS2V5IFNldCBtYWxmb3JtZWQiKTt2YXIgbjt0aGlzLl9qd2tzPShuPXQsImZ1bmN0aW9uIj09dHlwZW9mIHN0cnVjdHVyZWRDbG9uZT9zdHJ1Y3R1cmVkQ2xvbmUobik6SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuKSkpfXZhciBuO3JldHVybiBzKGUsW3trZXk6ImdldEtleSIsdmFsdWU6KG49YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4pe3ZhciBhLG8saSxzLHUsYyxmLGwsaDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGE9dCh0KHt9LHIpLG4uaGVhZGVyKSxvPWEuYWxnLGk9YS5raWQscz1wYShvKSx1PXRoaXMuX2p3a3Mua2V5cy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0PXM9PT1lLmt0eTtpZih0JiYic3RyaW5nIj09dHlwZW9mIGkmJih0PWk9PT1lLmtpZCksdCYmInN0cmluZyI9PXR5cGVvZiBlLmFsZyYmKHQ9bz09PWUuYWxnKSx0JiYic3RyaW5nIj09dHlwZW9mIGUudXNlJiYodD0ic2lnIj09PWUudXNlKSx0JiZBcnJheS5pc0FycmF5KGUua2V5X29wcykmJih0PWUua2V5X29wcy5pbmNsdWRlcygidmVyaWZ5IikpLHQmJiJFZERTQSI9PT1vJiYodD0iRWQyNTUxOSI9PT1lLmNydnx8IkVkNDQ4Ij09PWUuY3J2KSx0KXN3aXRjaChvKXtjYXNlIkVTMjU2Ijp0PSJQLTI1NiI9PT1lLmNydjticmVhaztjYXNlIkVTMjU2SyI6dD0ic2VjcDI1NmsxIj09PWUuY3J2O2JyZWFrO2Nhc2UiRVMzODQiOnQ9IlAtMzg0Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVM1MTIiOnQ9IlAtNTIxIj09PWUuY3J2fXJldHVybiB0fSkpLGM9dVswXSwwIT09KGY9dS5sZW5ndGgpKXtlLm5leHQ9ODticmVha310aHJvdyBuZXcgQ247Y2FzZSA4OmlmKDE9PT1mKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IFBuO2Nhc2UgMTA6aWYodm9pZCAwIT09KGw9dGhpcy5fY2FjaGVkLmdldChjKXx8dGhpcy5fY2FjaGVkLnNldChjLHt9KS5nZXQoYykpW29dKXtlLm5leHQ9MTg7YnJlYWt9cmV0dXJuIGUubmV4dD0xNCxWbih0KHQoe30sYykse30se2V4dDohMH0pLG8pO2Nhc2UgMTQ6aWYoISgoaD1lLnNlbnQpaW5zdGFuY2VvZiBVaW50OEFycmF5fHwicHVibGljIiE9PWgudHlwZSkpe2UubmV4dD0xNzticmVha310aHJvdyBuZXcgQW4oIkpTT04gV2ViIEtleSBTZXQgbWVtYmVycyBtdXN0IGJlIHB1YmxpYyBrZXlzIik7Y2FzZSAxNzpsW29dPWg7Y2FzZSAxODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbFtvXSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksZX0oKTt2YXIgZ2E9e2V4cG9ydHM6e319LG1hPXtleHBvcnRzOnt9fSx5YT16KHRuKTsKLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovCiFmdW5jdGlvbihlLHQpe3ZhciByPXlhLG49ci5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBvKGUsdCxyKXtyZXR1cm4gbihlLHQscil9bi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjooYShyLHQpLHQuQnVmZmVyPW8pLG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEobixvKSxvLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUsdCxyKX0sby5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgYT1uKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygcj9hLmZpbGwodCxyKTphLmZpbGwodCk6YS5maWxsKDApLGF9LG8uYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbihlKX0sby5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gci5TbG93QnVmZmVyKGUpfX0obWEsbWEuZXhwb3J0cyk7dmFyIGJhPTY1NTM2LHdhPTQyOTQ5NjcyOTU7dmFyIGthPW1hLmV4cG9ydHMuQnVmZmVyLFJhPUYuY3J5cHRvfHxGLm1zQ3J5cHRvO1JhJiZSYS5nZXRSYW5kb21WYWx1ZXM/Z2EuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU+d2EpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1rYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5iYSlmb3IodmFyIG49MDtuPGU7bis9YmEpUmEuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK2JhKSk7ZWxzZSBSYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIEhlLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06Z2EuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIF9hLHhhPWdhLmV4cG9ydHMsU2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiBzKGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGhuLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBobi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBnci5mcm9tKGRuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHhhKGUpfX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsbyxpKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiBoYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsKHM9e2tleXM6W3RdfSx2YS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IHZhKHMpKSkse2FsZ29yaXRobXM6cixhdWRpZW5jZTpuLGNsb2NrVG9sZXJhbmNlOmksaXNzdWVyOmEsc3ViamVjdDpvfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKTt2YXIgc319XSksZX0oKSxFYT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvLGkscyx1LGMsZixsLGgscCxkLHYsZyxtLHksdyxrLHgsUyxFLFQsQSxDLEQsTyxJLFUsTCxILE07cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj1uZXcgdHIsbj1uZXcgU2EsYT1uZXcgTihyLG4pLHQubmV4dD01LGEuaW5pdGlhbGl6ZShlKTtjYXNlIDU6aWYobz1uZXcgSihhKSxpPWEuZ2V0RGF0YUxheWVyKCkscz1lci5nZXRJbnN0YW5jZSgpLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFPYmplY3QuYXNzaWduKHthdHRhY2hUb2tlbjohMH0sZSkuYXR0YWNoVG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdC50MD1PYmplY3QsdC50MT1PYmplY3QuYXNzaWduKHt9LGUuaGVhZGVycyksdC50Mj0iQmVhcmVyICIsdC5uZXh0PTcsYS5nZXRBY2Nlc3NUb2tlbigpO2Nhc2UgNzp0LnQzPXQuc2VudCx0LnQ0PXQudDIuY29uY2F0LmNhbGwodC50Mix0LnQzKSx0LnQ1PXtBdXRob3JpemF0aW9uOnQudDR9LGUuaGVhZGVycz10LnQwLmFzc2lnbi5jYWxsKHQudDAsdC50MSx0LnQ1KTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSx0LnQwPW51bGw9PXM/dm9pZCAwOnMuaW5pdCwhdC50MCl7dC5uZXh0PTEzO2JyZWFrfXJldHVybiB0Lm5leHQ9MTMscy5pbml0KCEwLHUpO2Nhc2UgMTM6cmV0dXJuIGM9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKSYmcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSl9LGY9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGUpfSxsPWZ1bmN0aW9uKGUpeyhudWxsPT1zP3ZvaWQgMDpzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soZSl9LGg9ZnVuY3Rpb24odCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG8sdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiB1PSExLGM9MCxyLnQwPVtdLHIudDE9YixyLm5leHQ9NixpLmdldENvbmZpZ0RhdGEoKTtjYXNlIDY6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0xMDticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAxMDppZighci50Myl7ci5uZXh0PTE0O2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0xNTticmVhaztjYXNlIDE0OnIudDU9bi5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAxNTppZihyLnQ2PWE9ci50NSxyLnQyPW51bGwhPT1yLnQ2LCFyLnQyKXtyLm5leHQ9MTk7YnJlYWt9ci50Mj12b2lkIDAhPT1hO2Nhc2UgMTk6aWYoIXIudDIpe3IubmV4dD0yMzticmVha31yLnQ3PWEsci5uZXh0PTI0O2JyZWFrO2Nhc2UgMjM6ci50Nz1bXTtjYXNlIDI0OnIudDg9ci50NyxyLnQ5PSgwLHIudDEpKHIudDgpLHIudDEwPVtlLmJhc2VVcmxdLGY9ci50MC5jb25jYXQuY2FsbChyLnQwLHIudDksci50MTApO2Nhc2UgMjg6aWYoIShjPGYubGVuZ3RoKSl7ci5uZXh0PTM2O2JyZWFrfWlmKCEobD1mW2NdKXx8IShudWxsPT09KG89bnVsbD09dD92b2lkIDA6dC51cmwpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0YXJ0c1dpdGgobCkpKXtyLm5leHQ9MzM7YnJlYWt9cmV0dXJuIHU9ITAsci5hYnJ1cHQoImJyZWFrIiwzNik7Y2FzZSAzMzpjKyssci5uZXh0PTI4O2JyZWFrO2Nhc2UgMzY6aWYoIXUpe3IubmV4dD00MDticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIscy5yZXF1ZXN0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnN0YXR1cykmJihudWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKSl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLnByZXY9MSxyLm5leHQ9NCxTKCk7Y2FzZSA0Omk9ci5zZW50LHIubmV4dD0xMDticmVhaztjYXNlIDc6dGhyb3cgci5wcmV2PTcsci50MD1yLmNhdGNoKDEpLG5ldyBQKCJTUEEtV09SS0VSX0NPUkUtSFItU0UwMSIsbnVsbCE9PShhPW51bGw9PT1yLnQwfHx2b2lkIDA9PT1yLnQwP3ZvaWQgMDpyLnQwLm5hbWUpJiZ2b2lkIDAhPT1hP2E6IlJlZnJlc2ggdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT09KG89bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubWVzc2FnZSkmJnZvaWQgMCE9PW8/bzoiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmb2xsb3dpbmcgYSA0MDEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLiIpO2Nhc2UgMTA6aWYoIWkpe3IubmV4dD0xMjticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIscy5yZXF1ZXN0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLG51bGwsW1sxLDddXSl9KSkpfSkpKTtjYXNlIDQwOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiU1BBLVdPUktFUl9DT1JFLUhSLUlWMDIiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0MTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIpfSkpKX0scD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyx1LGMsZixsLGgscCxkLHYsZztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnU9ITAsYz1SKHQpLHIucHJldj0yLGMucygpO2Nhc2UgNDppZigoZj1jLm4oKSkuZG9uZSl7ci5uZXh0PTQ3O2JyZWFrfXJldHVybiBsPWYudmFsdWUsaD0hMSxwPTAsci50MD1bXSxyLnQxPWIsci5uZXh0PTEyLGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTI6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0xNjticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAxNjppZighci50Myl7ci5uZXh0PTIwO2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0yMTticmVhaztjYXNlIDIwOnIudDU9bi5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAyMTppZihyLnQ2PWE9ci50NSxyLnQyPW51bGwhPT1yLnQ2LCFyLnQyKXtyLm5leHQ9MjU7YnJlYWt9ci50Mj12b2lkIDAhPT1hO2Nhc2UgMjU6aWYoIXIudDIpe3IubmV4dD0yOTticmVha31yLnQ3PWEsci5uZXh0PTMwO2JyZWFrO2Nhc2UgMjk6ci50Nz1bXTtjYXNlIDMwOnIudDg9ci50NyxyLnQ5PSgwLHIudDEpKHIudDgpLHIudDEwPVtlLmJhc2VVcmxdLGQ9ci50MC5jb25jYXQuY2FsbChyLnQwLHIudDksci50MTApO2Nhc2UgMzQ6aWYoIShwPGQubGVuZ3RoKSl7ci5uZXh0PTQyO2JyZWFrfWlmKCEodj1kW3BdKXx8IShudWxsPT09KG89bC51cmwpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0YXJ0c1dpdGgodikpKXtyLm5leHQ9Mzk7YnJlYWt9cmV0dXJuIGg9ITAsci5hYnJ1cHQoImJyZWFrIiw0Mik7Y2FzZSAzOTpwKyssci5uZXh0PTM0O2JyZWFrO2Nhc2UgNDI6aWYoaCl7ci5uZXh0PTQ1O2JyZWFrfXJldHVybiB1PSExLHIuYWJydXB0KCJicmVhayIsNDcpO2Nhc2UgNDU6ci5uZXh0PTQ7YnJlYWs7Y2FzZSA0NzpyLm5leHQ9NTI7YnJlYWs7Y2FzZSA0OTpyLnByZXY9NDksci50MTE9ci5jYXRjaCgyKSxjLmUoci50MTEpO2Nhc2UgNTI6cmV0dXJuIHIucHJldj01MixjLmYoKSxyLmZpbmlzaCg1Mik7Y2FzZSA1NTppZihnPVtdLCF1KXtyLm5leHQ9NjE7YnJlYWt9cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zy5wdXNoKHMucmVxdWVzdChlKSl9KSksci5hYnJ1cHQoInJldHVybiIsKG51bGw9PXM/dm9pZCAwOnMuYWxsKSYmcy5hbGwoZykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzKSl7dC5uZXh0PTEyO2JyZWFrfXJldHVybiB0LnByZXY9MSx0Lm5leHQ9NCxTKCk7Y2FzZSA0Om89dC5zZW50LHQubmV4dD0xMDticmVhaztjYXNlIDc6dGhyb3cgdC5wcmV2PTcsdC50MD10LmNhdGNoKDEpLG5ldyBQKCJTUEEtV09SS0VSX0NPUkUtSFJBLVNFMDEiLG51bGwhPT0obj1udWxsPT09dC50MHx8dm9pZCAwPT09dC50MD92b2lkIDA6dC50MC5uYW1lKSYmdm9pZCAwIT09bj9uOiJSZWZyZXNoIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9PShhPW51bGw9PT10LnQwfHx2b2lkIDA9PT10LnQwP3ZvaWQgMDp0LnQwLm1lc3NhZ2UpJiZ2b2lkIDAhPT1hP2E6IkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZm9sbG93aW5nIGEgNDAxIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4iKTtjYXNlIDEwOmlmKCFvKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHMuYWxsJiZzLmFsbChnKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgMTI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KGUpKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCxudWxsLFtbMSw3XV0pfSkpKX0pKSk7Y2FzZSA2MTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIlNQQS1XT1JLRVJfQ09SRS1IUkEtSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDYyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscixudWxsLFtbMiw0OSw1Miw1NV1dKX0pKSl9LGQ9ZnVuY3Rpb24oKXtzLmVuYWJsZUhhbmRsZXImJnMuZW5hYmxlSGFuZGxlcigpfSx2PWZ1bmN0aW9uKCl7cy5kaXNhYmxlSGFuZGxlciYmcy5kaXNhYmxlSGFuZGxlcigpfSxnPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYS5nZXRBdXRob3JpemF0aW9uVVJMKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1uZXcgVVJMKGUpLG89bnVsbCE9PShyPW4uc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSkmJnZvaWQgMCE9PXI/cjoiIix0Lm5leHQ9NCxhLmdldFBLQ0VDb2RlKG8pO2Nhc2UgNDpyZXR1cm4gaT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25VUkw6ZSxwa2NlOml9KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxtPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHk9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHMoKXt2YXIgdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHMpe2Zvcig7Oylzd2l0Y2gocy5wcmV2PXMubmV4dCl7Y2FzZSAwOnJldHVybiBzLm5leHQ9MixpLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6aWYodT1zLnNlbnQsIXJ8fCF1LmVuYWJsZVBLQ0Upe3MubmV4dD02O2JyZWFrfXJldHVybiBzLm5leHQ9NixhLnNldFBLQ0VDb2RlKHIsbnVsbCE9bj9uOiIiKTtjYXNlIDY6aWYoIWUpe3MubmV4dD04O2JyZWFrfXJldHVybiBzLmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RBY2Nlc3NUb2tlbihlLG51bGwhPXQ/dDoiIixudWxsIT1uP246IiciKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxhLmdldEJhc2ljVXNlckluZm8oKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDg6cmV0dXJuIHMuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBQKCJTUEEtV09SS0VSX0NPUkUtUkFUMS1ORjAxIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlLiIsIk5vIGF1dGhvcml6YXRpb24gY29kZSB3YXMgZm91bmQuIikpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBzLnN0b3AoKX19KSxzKX0pKSl9LHc9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksZS5uZXh0PTMsYS5zaWduT3V0KCk7Y2FzZSAzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0saz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsYS5nZXRTaWduT3V0VVJMKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0seD1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4scyx1LGMsZixsLGg7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih1PSEwLGM9ITEsIShudWxsPT1lP3ZvaWQgMDplLnRva2VuRW5kcG9pbnQpKXt0Lm5leHQ9Mzk7YnJlYWt9cmV0dXJuIHU9ITEsZj0wLHQudDA9W10sdC50MT1iLHQubmV4dD05LGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgOTppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTEzO2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDEzOmlmKCF0LnQzKXt0Lm5leHQ9MTc7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE4OmlmKHQudDY9bj10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yMjticmVha310LnQyPXZvaWQgMCE9PW47Y2FzZSAyMjppZighdC50Mil7dC5uZXh0PTI2O2JyZWFrfXQudDc9bix0Lm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNjp0LnQ3PVtdO2Nhc2UgMjc6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W2UuYmFzZVVybF0sbD10LnQwLmNvbmNhdC5jYWxsKHQudDAsdC50OSx0LnQxMCk7Y2FzZSAzMTppZighKGY8bC5sZW5ndGgpKXt0Lm5leHQ9Mzk7YnJlYWt9aWYoIShoPWxbZl0pfHwhKG51bGw9PT0ocz1lLnRva2VuRW5kcG9pbnQpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXJ0c1dpdGgoaCkpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIGM9ITAsdC5hYnJ1cHQoImJyZWFrIiwzOSk7Y2FzZSAzNjpmKyssdC5uZXh0PTMxO2JyZWFrO2Nhc2UgMzk6aWYoZS5zaG91bGRSZXBsYXlBZnRlclJlZnJlc2gmJmkuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihLLEpTT04uc3RyaW5naWZ5KGUpKSwhdSYmIWMpe3QubmV4dD00NDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCFlLnJldHVybnNTZXNzaW9uKXtyLm5leHQ9NTticmVha31yZXR1cm4gby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksci5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgNTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdCk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNDQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBQKCJTUEEtV09SS0VSX0NPUkUtUkNHLUlWMDEiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCB0b2tlbiBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0NTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sUz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsYS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIGUubmV4dD01LE0oKTtjYXNlIDU6aWYoISh0PWUuc2VudCkpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLm5leHQ9OSx4KHQpO2Nhc2UgOTpyZXR1cm4gby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTM6cmV0dXJuIGUucHJldj0xMyxlLnQwPWUuY2F0Y2goMCksZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZS50MCkpO2Nhc2UgMTY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1swLDEzXV0pfSkpKX0sRT1mdW5jdGlvbigpe3JldHVybiBhLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9LFQ9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEE9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxDPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxEPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTz1mdW5jdGlvbigpe3JldHVybiBhLmdldEFjY2Vzc1Rva2VuKCl9LEk9ZnVuY3Rpb24oKXtyZXR1cm4gYS5pc0F1dGhlbnRpY2F0ZWQoKX0sVT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLGkuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sTD1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLGEudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sSD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsaS5nZXRDb25maWdEYXRhKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsaS5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEspO2Nhc2UgMjppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLEpTT04ucGFyc2UodCkpO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx0LmFicnVwdCgicmV0dXJuIix7ZGlzYWJsZUh0dHBIYW5kbGVyOnYsZW5hYmxlSHR0cEhhbmRsZXI6ZCxnZXRBY2Nlc3NUb2tlbjpPLGdldEF1dGhvcml6YXRpb25VUkw6ZyxnZXRCYXNpY1VzZXJJbmZvOlQsZ2V0Q29uZmlnRGF0YTpILGdldERlY29kZWRJRFRva2VuOkEsZ2V0SURUb2tlbjpDLGdldE9JRENTZXJ2aWNlRW5kcG9pbnRzOkQsZ2V0U2lnbk91dFVSTDprLGh0dHBSZXF1ZXN0OmgsaHR0cFJlcXVlc3RBbGw6cCxpc0F1dGhlbnRpY2F0ZWQ6SSxyZWZyZXNoQWNjZXNzVG9rZW46UyxyZXF1ZXN0QWNjZXNzVG9rZW46eSxyZXF1ZXN0Q3VzdG9tR3JhbnQ6eCxyZXZva2VBY2Nlc3NUb2tlbjpFLHNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s6bCxzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s6YyxzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjazpmLHNldFNlc3Npb25TdGF0ZTpVLHNpZ25PdXQ6dyxzdGFydEF1dG9SZWZyZXNoVG9rZW46bSx1cGRhdGVDb25maWc6TH0pO2Nhc2UgMzk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFRhPXNlbGY7VGEub25tZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPWUucG9ydHM7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbixhLG8saSxzLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzPXJbMF0sdC50eXBlPT09cXx8X2Epe2UubmV4dD00O2JyZWFrfXJldHVybiBzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgUCgiU1BBLUNMSUVOVF9XT1JLRVItT05NU0ctTkYwMSIsIlRoZSB3ZWIgd29ya2VyIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuIiwiVGhlIGluaXRpYWxpemUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgdGhlIHNwZWNpZmllZCBvcGVyYXRpb24gY2FuIGJlIGNhcnJpZWQgb3V0LiIpKSksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDplLnQwPXQudHlwZSxlLm5leHQ9ZS50MD09PXE/NzoiZ2V0X2F1dGhfdXJsIj09PWUudDA/MjI6InJlcXVlc3RfZ2V0X3Rva2VuIj09PWUudDA/MjQ6Imh0dHAtcmVxdWVzdCI9PT1lLnQwPzI2OiJodHRwLXJlcXVlc3QtYWxsIj09PWUudDA/Mjg6InNpZ24tb3V0Ij09PWUudDA/MzA6InJlcXVlc3QtY3VzdG9tLWdyYW50Ij09PWUudDA/NDQ6InJldm9rZS1hY2Nlc3MtdG9rZW4iPT09ZS50MD80NjoiZ2V0LW9pZGMtc2VydmljZS1lbmRwb2ludHMiPT09ZS50MD80ODoiZ2V0LWJhc2ljLXVzZXItaW5mbyI9PT1lLnQwPzYyOiJnZXQtZGVjb2RlZC1pZC10b2tlbiI9PT1lLnQwPzc2OiJnZXRfaWRfdG9rZW4iPT09ZS50MD85MDoiZW5hYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNDoiZGlzYWJsZV9odHRwX2hhbmRsZXIiPT09ZS50MD8xMDc6ImlzX2F1dGhlbnRpY2F0ZWQiPT09ZS50MD8xMTA6ImdldF9zaWduX291dF91cmwiPT09ZS50MD8xMjQ6InJlZnJlc2hfYWNjZXNzLXRva2VuIj09PWUudDA/MTM4OiJzdGFydF9hdXRvX3JlZnJlc2hfdG9rZW4iPT09ZS50MD8xNTI6InNldF9zZXNzaW9uX3N0YXRlIj09PWUudDA/MTU0OiJ1cGRhdGVfY29uZmlnIj09PWUudDA/MTY4OiJnZXRfY29uZmlnX2RhdGEiPT09ZS50MD8xODI6MTk2O2JyZWFrO2Nhc2UgNzpyZXR1cm4gZS5wcmV2PTcsdT1PYmplY3QuYXNzaWduKHt9LHQuZGF0YSksZS5uZXh0PTExLEVhKHUpO2Nhc2UgMTE6KF9hPWUuc2VudCkuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhQYSksX2Euc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKEFhKSxfYS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhDYSkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5uZXh0PTIxO2JyZWFrO2Nhc2UgMTg6ZS5wcmV2PTE4LGUudDE9ZS5jYXRjaCg3KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQxKSk7Y2FzZSAyMTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjI6cmV0dXJuIF9hLmdldEF1dGhvcml6YXRpb25VUkwobnVsbD09dD92b2lkIDA6dC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyNDpyZXR1cm4gX2EucmVxdWVzdEFjY2Vzc1Rva2VuKG51bGw9PT0obj1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvZGUsbnVsbD09PShhPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PWE/dm9pZCAwOmEuc2Vzc2lvblN0YXRlLG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnBrY2UsbnVsbD09PShpPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI2OnJldHVybiBfYS5odHRwUmVxdWVzdCh0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI4OnJldHVybiBfYS5odHRwUmVxdWVzdEFsbCh0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDMwOnJldHVybiBlLnByZXY9MzAsZS50Mj1zLGUudDM9QixlLm5leHQ9MzUsX2Euc2lnbk91dCgpO2Nhc2UgMzU6ZS50ND1lLnNlbnQsZS50NT1lLnQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzLGUudDQpLGUudDIucG9zdE1lc3NhZ2UuY2FsbChlLnQyLGUudDUpLGUubmV4dD00MzticmVhaztjYXNlIDQwOmUucHJldj00MCxlLnQ2PWUuY2F0Y2goMzApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDYpKTtjYXNlIDQzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NDpyZXR1cm4gX2EucmVxdWVzdEN1c3RvbUdyYW50KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDY6cmV0dXJuIF9hLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDg6cmV0dXJuIGUucHJldj00OCxlLnQ3PXMsZS50OD1CLGUubmV4dD01MyxfYS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpO2Nhc2UgNTM6ZS50OT1lLnNlbnQsZS50MTA9ZS50OC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50OCxlLnQ5KSxlLnQ3LnBvc3RNZXNzYWdlLmNhbGwoZS50NyxlLnQxMCksZS5uZXh0PTYxO2JyZWFrO2Nhc2UgNTg6ZS5wcmV2PTU4LGUudDExPWUuY2F0Y2goNDgpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDExKSk7Y2FzZSA2MTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNjI6cmV0dXJuIGUucHJldj02MixlLnQxMj1zLGUudDEzPUIsZS5uZXh0PTY3LF9hLmdldEJhc2ljVXNlckluZm8oKTtjYXNlIDY3OmUudDE0PWUuc2VudCxlLnQxNT1lLnQxMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MTMsZS50MTQpLGUudDEyLnBvc3RNZXNzYWdlLmNhbGwoZS50MTIsZS50MTUpLGUubmV4dD03NTticmVhaztjYXNlIDcyOmUucHJldj03MixlLnQxNj1lLmNhdGNoKDYyKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQxNikpO2Nhc2UgNzU6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDc2OnJldHVybiBlLnByZXY9NzYsZS50MTc9cyxlLnQxOD1CLGUubmV4dD04MSxfYS5nZXREZWNvZGVkSURUb2tlbigpO2Nhc2UgODE6ZS50MTk9ZS5zZW50LGUudDIwPWUudDE4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxOCxlLnQxOSksZS50MTcucG9zdE1lc3NhZ2UuY2FsbChlLnQxNyxlLnQyMCksZS5uZXh0PTg5O2JyZWFrO2Nhc2UgODY6ZS5wcmV2PTg2LGUudDIxPWUuY2F0Y2goNzYpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDIxKSk7Y2FzZSA4OTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgOTA6cmV0dXJuIGUucHJldj05MCxlLnQyMj1zLGUudDIzPUIsZS5uZXh0PTk1LF9hLmdldElEVG9rZW4oKTtjYXNlIDk1OmUudDI0PWUuc2VudCxlLnQyNT1lLnQyMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MjMsZS50MjQpLGUudDIyLnBvc3RNZXNzYWdlLmNhbGwoZS50MjIsZS50MjUpLGUubmV4dD0xMDM7YnJlYWs7Y2FzZSAxMDA6ZS5wcmV2PTEwMCxlLnQyNj1lLmNhdGNoKDkwKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyNikpO2Nhc2UgMTAzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDQ6cmV0dXJuIF9hLmVuYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTA3OnJldHVybiBfYS5kaXNhYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMTA6cmV0dXJuIGUucHJldj0xMTAsZS50Mjc9cyxlLnQyOD1CLGUubmV4dD0xMTUsX2EuaXNBdXRoZW50aWNhdGVkKCk7Y2FzZSAxMTU6ZS50Mjk9ZS5zZW50LGUudDMwPWUudDI4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyOCxlLnQyOSksZS50MjcucG9zdE1lc3NhZ2UuY2FsbChlLnQyNyxlLnQzMCksZS5uZXh0PTEyMzticmVhaztjYXNlIDEyMDplLnByZXY9MTIwLGUudDMxPWUuY2F0Y2goMTEwKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzMSkpO2Nhc2UgMTIzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMjQ6cmV0dXJuIGUucHJldj0xMjQsZS50MzI9cyxlLnQzMz1CLGUubmV4dD0xMjksX2EuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMTI5OmUudDM0PWUuc2VudCxlLnQzNT1lLnQzMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MzMsZS50MzQpLGUudDMyLnBvc3RNZXNzYWdlLmNhbGwoZS50MzIsZS50MzUpLGUubmV4dD0xMzc7YnJlYWs7Y2FzZSAxMzQ6ZS5wcmV2PTEzNCxlLnQzNj1lLmNhdGNoKDEyNCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzYpKTtjYXNlIDEzNzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTM4OnJldHVybiBlLnByZXY9MTM4LGUudDM3PXMsZS50Mzg9QixlLm5leHQ9MTQzLF9hLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMTQzOmUudDM5PWUuc2VudCxlLnQ0MD1lLnQzOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MzgsZS50MzkpLGUudDM3LnBvc3RNZXNzYWdlLmNhbGwoZS50MzcsZS50NDApLGUubmV4dD0xNTE7YnJlYWs7Y2FzZSAxNDg6ZS5wcmV2PTE0OCxlLnQ0MT1lLmNhdGNoKDEzOCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NDEpKTtjYXNlIDE1MTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTUyOnRyeXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShfYS5zdGFydEF1dG9SZWZyZXNoVG9rZW4oKSkpfWNhdGNoKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX1yZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTU0OnJldHVybiBlLnByZXY9MTU0LGUudDQyPXMsZS50NDM9QixlLm5leHQ9MTU5LF9hLnNldFNlc3Npb25TdGF0ZShudWxsPT10P3ZvaWQgMDp0LmRhdGEpO2Nhc2UgMTU5OmUudDQ0PWUuc2VudCxlLnQ0NT1lLnQ0My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NDMsZS50NDQpLGUudDQyLnBvc3RNZXNzYWdlLmNhbGwoZS50NDIsZS50NDUpLGUubmV4dD0xNjc7YnJlYWs7Y2FzZSAxNjQ6ZS5wcmV2PTE2NCxlLnQ0Nj1lLmNhdGNoKDE1NCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NDYpKTtjYXNlIDE2NzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTY4OnJldHVybiBlLnByZXY9MTY4LGUudDQ3PXMsZS50NDg9QixlLm5leHQ9MTczLF9hLnVwZGF0ZUNvbmZpZyhudWxsPT10P3ZvaWQgMDp0LmRhdGEpO2Nhc2UgMTczOmUudDQ5PWUuc2VudCxlLnQ1MD1lLnQ0OC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NDgsZS50NDkpLGUudDQ3LnBvc3RNZXNzYWdlLmNhbGwoZS50NDcsZS50NTApLGUubmV4dD0xODE7YnJlYWs7Y2FzZSAxNzg6ZS5wcmV2PTE3OCxlLnQ1MT1lLmNhdGNoKDE2OCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NTEpKTtjYXNlIDE4MTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTgyOnJldHVybiBlLnByZXY9MTgyLGUudDUyPXMsZS50NTM9QixlLm5leHQ9MTg3LF9hLmdldENvbmZpZ0RhdGEoKTtjYXNlIDE4NzplLnQ1ND1lLnNlbnQsZS50NTU9ZS50NTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDUzLGUudDU0KSxlLnQ1Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDUyLGUudDU1KSxlLm5leHQ9MTk1O2JyZWFrO2Nhc2UgMTkyOmUucHJldj0xOTIsZS50NTY9ZS5jYXRjaCgxODIpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE5NjpudWxsPT1zfHxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgUCgiU1BBLUNMSUVOVF9XT1JLRVItT05NU0ctSVYwMiIsIlRoZSBtZXNzYWdlIHR5cGUgaXMgaW52YWxpZC4iLCJUaGUgbWVzc2FnZSB0eXBlIHByb3ZpZGVkLCAiLmNvbmNhdCh0LnR5cGUsIiwgaXMgaW52YWxpZC4iKSkpKTtjYXNlIDE5NzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzcsMThdLFszMCw0MF0sWzQ4LDU4XSxbNjIsNzJdLFs3Niw4Nl0sWzkwLDEwMF0sWzExMCwxMjBdLFsxMjQsMTM0XSxbMTM4LDE0OF0sWzE1NCwxNjRdLFsxNjgsMTc4XSxbMTgyLDE5Ml1dKX0pKSl9O3ZhciBBYT1mdW5jdGlvbigpe1RhLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LXN0YXJ0In0pfSxDYT1mdW5jdGlvbihlKXtUYS5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sUGE9ZnVuY3Rpb24oKXtUYS5wb3N0TWVzc2FnZSh7dHlwZToicmVxdWVzdC1maW5pc2gifSl9O3JldHVybnt9fSgpOwoK",GP=null,VP=!1,function(e){return fP=fP||yP(XP,GP,VP),new Worker(fP,e)}),CP=function(t){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d,s,m,h,Z,b,p,I,g,y,X,G,V,f,W,C,v,S,R,Y,J,K,N,L,H,x,U,k;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=null!==(r=null==t?void 0:t.requestTimeout)&&void 0!==r?r:6e4,o=!0,a=!1,n.next=5,TB((function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={type:rB},e.prev=1,e.next=4,d(t);case 4:return n=e.sent,e.abrupt("return",n);case 8:return e.prev=8,e.t0=e.catch(1),e.abrupt("return",kB.getSignOutURL());case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))}),t.storage,(function(e){return I(e)}));case 5:return l=n.sent,u=new WP,d=function(e){var t=new MessageChannel;return u.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new PF("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+c/1e3+" since dispatching the request"))}),c);return t.port1.onmessage=function(t){var i=t.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),e(c)}else n(i.error?JSON.parse(i.error):null)}}))},s=function(e){return d({data:e,type:"request-custom-grant"}).then((function(t){return e.preventSignOutURLUpdate&&(a=!0),Promise.resolve(t)})).catch((function(e){return Promise.reject(e)}))},m=function(e){return d({data:e,type:"http-request"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!o){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},h=function(e){return d({data:e,type:"http-request-all"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!o){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},Z=function(){return d({type:"enable_http_handler"}).then((function(){return o=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},b=function(){return d({type:"disable_http_handler"}).then((function(){return o=!1,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},p=function(){return i||(i={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),u.onmessage=function(e){var t=e.data;switch(t.type){case"request-finish":(null==i?void 0:i.requestFinishCallback)&&(null==i||i.requestFinishCallback());break;case"request-start":(null==i?void 0:i.requestStartCallback)&&(null==i||i.requestStartCallback());break;case"request-success":(null==i?void 0:i.requestSuccessCallback)&&(null==i||i.requestSuccessCallback(t.data?JSON.parse(t.data):null))}},d({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},I=function(e){return d({data:e,type:"set_session_state"})},g=function(){return d({type:"start_auto_refresh_token"})},y=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v();case 2:return i=e.sent,e.next=5,S();case 5:c=e.sent,l.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,G(e);case 2:return t.abrupt("return",t.sent.authorizationURL);case 3:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},X=function(){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c,o,a,u,s,m,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,S();case 2:if(r=e.sent,!kB.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,l.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(CB),c=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(vB),o={data:{prompt:"none",state:RB},type:iB},e.prev=10,e.next=13,d(o);case 13:a=e.sent,u=EF.extractPKCEKeyFromStateParam(null!==(n=new URL(a.authorizationURL).searchParams.get(MF))&&void 0!==n?n:""),a.pkce&&r.enablePKCE&&kB.setPKCE(u,a.pkce),s=a.authorizationURL,(m=new URL(s)).searchParams.set("response_mode","query"),h=m.toString(),c.src=h,e.next=26;break;case 23:return e.prev=23,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 26:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(d=i.data)?void 0:d.type)==oB&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==d?void 0:d.type)==cB&&(null===(o=null==d?void 0:d.data)||void 0===o?void 0:o.code)&&V(null===(a=null==d?void 0:d.data)||void 0===a?void 0:a.code,null===(l=null==d?void 0:d.data)||void 0===l?void 0:l.sessionState,null===(u=null==d?void 0:d.data)||void 0===u?void 0:u.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 27:case"end":return e.stop()}}),e,null,[[10,23]])})))},G=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S();case 2:return n=t.sent,r={data:e,type:iB},t.abrupt("return",d(r).then((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.pkce&&n.enablePKCE&&(i=EF.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(MF))&&void 0!==r?r:""),kB.setPKCE(i,e.pkce)),t.abrupt("return",Promise.resolve(e));case 2:case"end":return t.stop()}}),t)})))})));case 5:case"end":return t.stop()}}),t)})))},V=function(e,t,n){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,S();case 2:return i=r.sent,c=EF.extractPKCEKeyFromStateParam(n),o={data:{code:e,pkce:i.enablePKCE?kB.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&kB.removePKCE(c),r.abrupt("return",d(o).then((function(e){return d({type:"get_sign_out_url"}).then((function(t){return kB.setSignOutURL(t),i.enableOIDCSessionManagement&&y(),g(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))})).catch((function(e){return Promise.reject(e)})));case 7:case"end":return r.stop()}}),r)})))},f=function(t,n,r,i){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,u,d,s,m,h,Z,b,p;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,S();case 2:return d=c.sent,c.next=5,l.receivePromptNoneResponse((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",I(e));case 1:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(s=new URL(window.location.href).searchParams.get(KB),m=new URL(window.location.href).searchParams.get(NB),!s){c.next=16;break}throw(h=new URL(window.location.href)).searchParams.delete(KB),h.searchParams.delete(NB),history.pushState(null,document.title,h.toString()),new PF("SPA-WEB_WORKER_CLIENT-SI-SE01",s,null!=m?m:"");case 16:return c.next=18,K();case 18:if(!c.sent){c.next=23;break}return c.next=21,g();case 21:return d.enableOIDCSessionManagement&&y(),c.abrupt("return",R());case 23:if((null==d?void 0:d.responseMode)===e.ResponseMode.formPost&&n?(Z=n,b=null!=r?r:"",p=null!=i?i:""):(Z=null!==(o=new URL(window.location.href).searchParams.get(BF))&&void 0!==o?o:"",b=null!==(a=new URL(window.location.href).searchParams.get(zF))&&void 0!==a?a:"",p=null!==(u=new URL(window.location.href).searchParams.get(MF))&&void 0!==u?u:"",kB.removeAuthorizationCode()),!Z||!p){c.next=26;break}return c.abrupt("return",V(Z,b,p));case 26:return c.abrupt("return",G(t).then((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return location.href=e.authorizationURL,t.next=3,kB.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 27:case"end":return c.stop()}}),c)})))},W=function(){return K().then((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||a){t.next=5;break}return n={type:rB},t.abrupt("return",d(n).then((function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return window.location.href=e,t.next=3,kB.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve(!0));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 5:return window.location.href=kB.getSignOutURL(),t.next=8,kB.waitTillPageRedirect();case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)}))},C=function(){return d({type:"revoke-access-token"}).then((function(e){return l.reset(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},v=function(){return d({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},S=function(){return d({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},R=function(){return d({type:"get-basic-user-info"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},Y=function(){return d({type:"get-decoded-id-token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=function(){return d({type:"get_id_token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},K=function(){return d({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},N=function(){return d({type:"refresh_access-token"})},L=function(e){e&&"function"==typeof e&&(i.requestSuccessCallback=e)},H=function(e){e&&"function"==typeof e&&(i.requestErrorCallback=e)},x=function(e){e&&"function"==typeof e&&(i.requestStartCallback=e)},U=function(e){e&&"function"==typeof e&&(i.requestFinishCallback=e)},k=function(e){return kF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),c={data:i,type:"update_config"},t.next=8,d(c);case 8:i.enableOIDCSessionManagement&&r&&(l.reset(),y());case 9:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:b,enableHttpHandler:Z,getBasicUserInfo:R,getDecodedIDToken:Y,getIDToken:J,getOIDCServiceEndpoints:v,httpRequest:m,httpRequestAll:h,initialize:p,isAuthenticated:K,refreshAccessToken:N,requestCustomGrant:s,revokeAccessToken:C,setHttpRequestErrorCallback:H,setHttpRequestFinishCallback:U,setHttpRequestStartCallback:x,setHttpRequestSuccessCallback:L,signIn:f,signOut:W,trySignInSilently:X,updateConfig:k});case 36:case"end":return n.stop()}}),n)})))},vP={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:e.Storage.SessionStorage},SP="primaryInstance",RP=function(){function t(e){u(this,t),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=e}return s(t,[{key:"_isInitialized",value:function(){return kF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._startedInitialize){e.next=2;break}return e.abrupt("return",!1);case 2:t=0,n=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 4:if(this._initialized){e.next=11;break}return 1e4===t&&console.warn("It is taking longer than usual for the object to be initialized"),e.next=8,n();case 8:t++,e.next=4;break;case 11:return e.abrupt("return",!0);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"_validateMethod",value:function(){return kF(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(e.sent){e.next=4;break}return e.abrupt("return",Promise.reject());case 4:return e.next=6,this.isAuthenticated();case 6:if(e.sent){e.next=8;break}return e.abrupt("return",Promise.reject());case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}}),e,this)})))}
451
+ !function(e,t){var n=dP,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function c(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},c.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},c.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},c.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(uP,uP.exports);var sP=65536,mP=4294967295;var ZP=uP.exports.Buffer,hP=t.crypto||t.msCrypto;hP&&hP.getRandomValues?lP.exports=function(e,t){if(e>mP)throw new RangeError("requested too many random bytes");var n=ZP.allocUnsafe(e);if(e>0)if(e>sP)for(var r=0;r<e;r+=sP)hP.getRandomValues(n.slice(r,r+sP));else hP.getRandomValues(n);if("function"==typeof t)return Sz.nextTick((function(){t(null,n)}));return n}:lP.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var bP=lP.exports,pP=function(){function e(){u(this,e)}return s(e,[{key:"base64URLEncode",value:function(e){return iQ.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return iQ.decode(e).toString()}},{key:"hashSha256",value:function(e){return dM.from(oQ((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return bP(e)}},{key:"verifyJwt",value:function(e,t,n,r,i,c,o){return function(e,t,n){return iP.apply(this,arguments)}(e,(a={keys:[t]},aP.prototype.getKey.bind(new aP(a))),{algorithms:n,audience:r,clockTolerance:o,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var a}}]),e}(),IP=function(t){switch(t){case e.Storage.LocalStorage:return new Pj;case e.Storage.SessionStorage:return new Oj;case e.Storage.BrowserMemory:return new Ej;default:return new Oj}},gP=function(t){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d,s,m,Z,h,b,p,I,g,y,X,G,f,W,C,R,S,Y,J,K,L,N,H,x,k,U,A,w,F,T,B;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=IP(t.storage),c=new pP,o=new nB(i,c),n.next=5,o.initialize(t);case 5:return a=new kB(o),l=o.getDataLayer(),n.next=9,AB((function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.signOut());case 1:case"end":return e.stop()}}),e)})))}),null!==(r=t.storage)&&void 0!==r?r:e.Storage.SessionStorage,(function(e){return l.setSessionDataParameter(zT,null!=e?e:"")}));case 9:if(u=n.sent,d=!1,s=Qj.getInstance(),m=!0,b=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Object.assign({attachToken:!0},e).attachToken){t.next=11;break}return t.t0=Object,t.t1=Object.assign({},e.headers),t.t2="Bearer ",t.next=7,o.getAccessToken();case 7:t.t3=t.sent,t.t4=t.t2.concat.call(t.t2,t.t3),t.t5={Authorization:t.t4},e.headers=t.t0.assign.call(t.t0,t.t1,t.t5);case 11:case"end":return t.stop()}}),t)})))},n.t0=null==s?void 0:s.init,!n.t0){n.next=18;break}return n.next=18,s.init(!0,b);case 18:return p=function(e){(null==s?void 0:s.setHttpRequestStartCallback)&&s.setHttpRequestStartCallback(e)},I=function(e){(null==s?void 0:s.setHttpRequestSuccessCallback)&&s.setHttpRequestSuccessCallback(e)},g=function(e){(null==s?void 0:s.setHttpRequestFinishCallback)&&s.setHttpRequestFinishCallback(e),h=e},y=function(e){Z=e},X=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.next=3,l.getConfigData();case 3:return c=t.sent,o=0,t.t0=[],t.t1=V,t.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=13;break}t.t2=void 0!==n;case 13:if(!t.t2){t.next=17;break}t.t4=n,t.next=18;break;case 17:t.t4=[];case 18:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[c.baseUrl],a=t.t0.concat.call(t.t0,t.t6,t.t7);case 22:if(!(o<a.length)){t.next=30;break}if(!(u=a[o])||!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(u))){t.next=27;break}return i=!0,t.abrupt("break",30);case 27:o++,t.next=22;break;case 30:if(!i){t.next=34;break}return t.abrupt("return",s.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status)&&(null==t?void 0:t.response)){n.next=31;break}return n.prev=1,n.next=4,K();case 4:o=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!m){n.next=14;break}if("function"!=typeof Z){n.next=13;break}return n.next=13,Z(Object.assign(Object.assign({},t),{code:xB}));case 13:"function"==typeof h&&h();case 14:throw new PT("SPA-MAIN_THREAD_CLIENT-HR-SE01",null!==(i=null===n.t0||void 0===n.t0?void 0:n.t0.name)&&void 0!==i?i:"Refresh token request failed.",null!==(c=null===n.t0||void 0===n.t0?void 0:n.t0.message)&&void 0!==c?c:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!o){n.next=31;break}return n.prev=16,n.next=19,s.request(e);case 19:return a=n.sent,n.abrupt("return",Promise.resolve(a));case 23:if(n.prev=23,n.t1=n.catch(16),!m){n.next=30;break}if("function"!=typeof Z){n.next=29;break}return n.next=29,Z(n.t1);case 29:"function"==typeof h&&h();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!m){n.next=36;break}if("function"!=typeof Z){n.next=35;break}return n.next=35,Z(t);case 35:"function"==typeof h&&h();case 36:return n.abrupt("return",Promise.reject(t));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:throw new PT("SPA-MAIN_THREAD_CLIENT-HR-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 35:case"end":return t.stop()}}),t)})))},G=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,u,d,b,p,I,g,y,X;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=!0,t.next=3,l.getConfigData();case 3:a=t.sent,u=v(e),t.prev=5,u.s();case 7:if((d=u.n()).done){t.next=50;break}return b=d.value,p=!1,I=0,t.t0=[],t.t1=V,t.next=15,a;case 15:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=19;break}t.t3=void 0===n;case 19:if(!t.t3){t.next=23;break}t.t5=void 0,t.next=24;break;case 23:t.t5=n.resourceServerURLs;case 24:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=28;break}t.t2=void 0!==r;case 28:if(!t.t2){t.next=32;break}t.t7=r,t.next=33;break;case 32:t.t7=[];case 33:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[a.baseUrl],g=t.t0.concat.call(t.t0,t.t9,t.t10);case 37:if(!(I<g.length)){t.next=45;break}if(!(y=g[I])||!(null===(i=b.url)||void 0===i?void 0:i.startsWith(y))){t.next=42;break}return p=!0,t.abrupt("break",45);case 42:I++,t.next=37;break;case 45:if(p){t.next=48;break}return c=!1,t.abrupt("break",50);case 48:t.next=7;break;case 50:t.next=55;break;case 52:t.prev=52,t.t11=t.catch(5),u.e(t.t11);case 55:return t.prev=55,u.f(),t.finish(55);case 58:if(X=[],!c){t.next=64;break}return e.forEach((function(e){X.push(s.request(e))})),t.abrupt("return",(null==s?void 0:s.all)&&s.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!==(null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status)&&(null==e?void 0:e.response)){t.next=17;break}return t.prev=1,t.next=4,o.refreshAccessToken();case 4:c=t.sent,t.next=15;break;case 7:if(t.prev=7,t.t0=t.catch(1),!m){t.next=14;break}if("function"!=typeof Z){t.next=13;break}return t.next=13,Z(Object.assign(Object.assign({},e),{code:xB}));case 13:"function"==typeof h&&h();case 14:throw new PT("SPA-MAIN_THREAD_CLIENT-HRA-SE01",null!==(r=null===t.t0||void 0===t.t0?void 0:t.t0.name)&&void 0!==r?r:"Refresh token request failed.",null!==(i=null===t.t0||void 0===t.t0?void 0:t.t0.message)&&void 0!==i?i:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!c){t.next=17;break}return t.abrupt("return",s.all&&s.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!m){t.next=5;break}if("function"!=typeof Z){t.next=4;break}return t.next=4,Z(e);case 4:"function"==typeof h&&h();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))})));case 17:if(!m){t.next=22;break}if("function"!=typeof Z){t.next=21;break}return t.next=21,Z(e);case 21:"function"==typeof h&&h();case 22:return t.abrupt("return",Promise.reject(e));case 23:case"end":return t.stop()}}),t,null,[[1,7]])})))})));case 64:throw new PT("SPA-MAIN_THREAD_CLIENT-HRA-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 65:case"end":return t.stop()}}),t,null,[[5,52,55,58]])})))},f=function(){return s},W=function(){return(null==s?void 0:s.enableHandler)&&s.enableHandler(),m=!0,!0},C=function(){return(null==s?void 0:s.disableHandler)&&s.disableHandler(),m=!1,!0},R=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getOIDCServiceEndpoints();case 2:return i=e.sent,e.next=5,l.getConfigData();case 5:c=e.sent,u.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getBasicUserInfo();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.getAuthorizationURL(e));case 1:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},S=function(t,n,r,i){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var d,s,m,Z,h,b,p,I,g,y;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,l.getConfigData();case 2:return Z=c.sent,c.next=5,u.receivePromptNoneResponse((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.setSessionDataParameter(zT,null!=e?e:"");case 2:return t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return c.next=10,o.isAuthenticated();case 10:if(!c.sent){c.next=19;break}return a.clearRefreshTokenTimeout(),a.refreshAccessTokenAutomatically(),Z.enableOIDCSessionManagement&&R(),c.t0=Promise,c.next=17,o.getBasicUserInfo();case 17:return c.t1=c.sent,c.abrupt("return",c.t0.resolve.call(c.t0,c.t1));case 19:if((null==Z?void 0:Z.responseMode)===e.ResponseMode.formPost&&n?(h=n,b=null!=r?r:"",p=null!=i?i:""):(h=null!==(d=new URL(window.location.href).searchParams.get(BT))&&void 0!==d?d:"",b=null!==(s=new URL(window.location.href).searchParams.get(zT))&&void 0!==s?s:"",p=null!==(m=new URL(window.location.href).searchParams.get(QT))&&void 0!==m?m:"",UB.removeAuthorizationCode()),!h||!p){c.next=22;break}return c.abrupt("return",N(h,b,p));case 22:if(I=new URL(window.location.href).searchParams.get(KB),g=new URL(window.location.href).searchParams.get(LB),!I){c.next=30;break}throw(y=new URL(window.location.href)).searchParams.delete(KB),y.searchParams.delete(LB),history.pushState(null,document.title,y.toString()),new PT("SPA-MAIN_THREAD_CLIENT-SI-SE01",I,null!=g?g:"");case 30:return c.abrupt("return",o.getAuthorizationURL(t).then((function(t){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(Z.storage!==e.Storage.BrowserMemory||!Z.enablePKCE){n.next=8;break}return r=ET.extractPKCEKeyFromStateParam(p),n.t0=UB,n.t1=r,n.next=6,o.getPKCECode(p);case 6:n.t2=n.sent,n.t0.setPKCE.call(n.t0,n.t1,n.t2);case 8:return location.href=t,n.next=11,UB.waitTillPageRedirect();case 11:return n.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return n.stop()}}),n)})))})));case 31:case"end":return c.stop()}}),c)})))},Y=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.isAuthenticated();case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}e.t0=!d;case 5:if(!e.t0){e.next=11;break}return e.next=8,o.signOut();case 8:location.href=e.sent,e.next=18;break;case 11:return location.href=UB.getSignOutURL(),e.next=14,l.removeOIDCProviderMetaData();case 14:return e.next=16,l.removeTemporaryData();case 16:return e.next=18,l.removeSessionData();case 18:return a.clearRefreshTokenTimeout(),e.next=21,UB.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},J=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,u,s,m,Z;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=!0,u=!1,!(null==e?void 0:e.tokenEndpoint)){t.next=39;break}return c=!1,s=0,t.t0=[],t.t1=V,t.next=9,l.getConfigData();case 9:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=13;break}t.t3=void 0===n;case 13:if(!t.t3){t.next=17;break}t.t5=void 0,t.next=18;break;case 17:t.t5=n.resourceServerURLs;case 18:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=22;break}t.t2=void 0!==r;case 22:if(!t.t2){t.next=26;break}t.t7=r,t.next=27;break;case 26:t.t7=[];case 27:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[e.baseUrl],m=t.t0.concat.call(t.t0,t.t9,t.t10);case 31:if(!(s<m.length)){t.next=39;break}if(!(Z=m[s])||!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(Z))){t.next=36;break}return u=!0,t.abrupt("break",39);case 36:s++,t.next=31;break;case 39:if(e.shouldReplayAfterRefresh&&l.setTemporaryDataParameter(NB,JSON.stringify(e)),!c&&!u){t.next=44;break}return t.abrupt("return",o.requestCustomGrant(e).then((function(t){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.preventSignOutURLUpdate&&(d=!0),!e.returnsSession){n.next=6;break}return a.refreshAccessTokenAutomatically(),n.abrupt("return",o.getBasicUserInfo());case 6:return n.abrupt("return",t);case 7:case"end":return n.stop()}}),n)})))})).catch((function(e){return Promise.reject(e)})));case 44:return t.abrupt("return",Promise.reject(new PT("SPA-MAIN_THREAD_CLIENT-RCG-IV01","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 45:case"end":return t.stop()}}),t)})))},K=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.refreshAccessToken();case 3:return e.next=5,B();case 5:if(!(t=e.sent)){e.next=9;break}return e.next=9,J(t);case 9:return a.refreshAccessTokenAutomatically(),e.abrupt("return",o.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))},L=function(){return o.revokeAccessToken().then((function(){return u.reset(),a.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},N=function(t,n,r){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var c,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.getConfigData();case 2:if((c=i.sent).storage!==e.Storage.BrowserMemory||!c.enablePKCE){i.next=7;break}return u=UB.getPKCE(ET.extractPKCEKeyFromStateParam(r)),i.next=7,o.setPKCECode(ET.extractPKCEKeyFromStateParam(r),u);case 7:return i.abrupt("return",o.requestAccessToken(t,n,r).then((function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=UB,e.next=3,o.getSignOutURL();case 3:return e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),a.clearRefreshTokenTimeout(),a.refreshAccessTokenAutomatically(),c.enableOIDCSessionManagement&&R(),e.abrupt("return",o.getBasicUserInfo());case 9:case"end":return e.stop()}}),e)})))})).catch((function(e){return Promise.reject(e)})));case 8:case"end":return i.stop()}}),i)})))},H=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,d,s,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:if(r=t.sent,!UB.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,u.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(CB),c=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.getElementById(vB),t.prev=9,t.next=12,o.getAuthorizationURL({prompt:"none",state:SB});case 12:if(a=t.sent,(d=new URL(a)).searchParams.set("response_mode","query"),s=d.toString(),r.storage!==e.Storage.BrowserMemory||!r.enablePKCE){t.next=24;break}return m=d.searchParams.get(QT),t.t0=UB,t.t1=ET.extractPKCEKeyFromStateParam(null!=m?m:""),t.next=22,o.getPKCECode(null!=m?m:"");case 22:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 24:c.src=s,t.next=30;break;case 27:return t.prev=27,t.t3=t.catch(9),t.abrupt("return",Promise.reject(t.t3));case 30:return t.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(u=i.data)?void 0:u.type)==oB&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==u?void 0:u.type)==cB&&(null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.code)&&N(u.data.code,null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.sessionState,null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 31:case"end":return t.stop()}}),t,null,[[9,27]])})))},x=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getBasicUserInfo());case 1:case"end":return e.stop()}}),e)})))},k=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getDecodedIDToken());case 1:case"end":return e.stop()}}),e)})))},U=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getIDToken());case 1:case"end":return e.stop()}}),e)})))},A=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e)})))},w=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getAccessToken());case 1:case"end":return e.stop()}}),e)})))},F=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.isAuthenticated());case 1:case"end":return e.stop()}}),e)})))},T=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),t.next=7,o.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(u.reset(),R());case 8:case"end":return t.stop()}}),t)})))},B=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.getTemporaryDataParameter(NB);case 2:if(!(t=e.sent)){e.next=7;break}return e.abrupt("return",JSON.parse(t));case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e)})))},n.abrupt("return",{disableHttpHandler:C,enableHttpHandler:W,getAccessToken:w,getBasicUserInfo:x,getDecodedIDToken:k,getHttpClient:f,getIDToken:U,getOIDCServiceEndpoints:A,httpRequest:X,httpRequestAll:G,isAuthenticated:F,refreshAccessToken:K,requestCustomGrant:J,revokeAccessToken:L,setHttpRequestErrorCallback:y,setHttpRequestFinishCallback:g,setHttpRequestStartCallback:p,setHttpRequestSuccessCallback:I,signIn:S,signOut:Y,trySignInSilently:H,updateConfig:T});case 44:case"end":return n.stop()}}),n)})))};function yP(e,t,n){var r=void 0===t?null:t,i=function(e,t){var n=atob(e);if(t){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(e,void 0!==n&&n),c=i.indexOf("\n",10)+1,o=i.substring(c)+(r?"//# sourceMappingURL="+r:""),a=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(a)}var XP,GP,fP,VP,WP=(XP="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLG8saSl7dHJ5e3ZhciBzPWVbb10oaSksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24oaSxhLG8scyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24oaSxhLG8scyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZpKGUucHJvdG90eXBlLHQpLHImJmkoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxvPVtdLGk9ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEoaT0obj1yLm5leHQoKSkuZG9uZSkmJihvLnB1c2gobi52YWx1ZSksIXR8fG8ubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gb30oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gaT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtpfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLG8pe2Z1bmN0aW9uIGkoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGkscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24geChlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxvKXtmdW5jdGlvbiBpKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgUzshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFN8fChTPXt9KSk7dmFyIEU7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShFfHwoRT17fSkpO3ZhciBULEE9InJlZnJlc2hfdG9rZW5fdGltZXIiLEM9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFR8fChUPXt9KSk7dmFyIEQ9cygoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMiksbj10WzBdLGE9dFsxXSxvPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3Jbb109YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7Ty5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBQLEksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1yfXJldHVybiBzKGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3JbdF09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkscikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihyPWUuc2VudCxuPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sci5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIG4uaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChyLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKHI9ZS5zZW50LG49ci5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiByLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxhPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQobikuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChyLHtjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2lufSk7Y2FzZSAxMTphPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBEKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1hLnN0YXR1cyYmYS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPUQsdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoYS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixhLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGEuanNvbigpO2Nhc2UgMjk6cmV0dXJuIGk9dC5zZW50LHM9aS5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0scyk7Y2FzZSAzMzpyZXR1cm4gdT10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9dSx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLG89dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksaT1PLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChvKSxzPW51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPW8uZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1vLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1vLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjppLHVzZXJuYW1lOnN9LE8uZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKG8pKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0ib3BlbmlkIixuLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89bi5zZW50LG4ubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIGk9bi5zZW50LG4uYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksYT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLGkuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKGkuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGEpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShyPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09cj9yOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtyLm5leHQ9NzticmVha31yZXR1cm4gci50MD1ELHIudDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksci5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IHIudDI9ci5zZW50LG5ldyByLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsci50MSxyLnQyKTtjYXNlIDc6cmV0dXJuIHIubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4obj1yLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksci5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIXIuc2VudC52YWxpZGF0ZUlEVG9rZW4pe3IubmV4dD0xNTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4obi5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4geChvLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDI6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGE9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDE4OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoYSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsYT1bXSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZhLnB1c2goZSl9KSksbz1hLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiBzKGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Uih0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBvPXIudmFsdWU7aWYobi5raWQ9PT1vLmtpZClyZXR1cm4gb319Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IEQoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLG8pe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LEMscixuLGEsbykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBEKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBEKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXIsdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBMKHIpLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBVKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiBzKGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbygpe3ZhciBpLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSxiLHcsayxfLHgsUyxFLFQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBpPW8uc2VudCxvLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYocz1vLnNlbnQsaSYmMCE9PWkudHJpbSgpLmxlbmd0aCl7by5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiB1PW5ldyBVUkwoaSksKGM9bmV3IE1hcCkuc2V0KCJyZXNwb25zZV90eXBlIiwiY29kZSIpLGMuc2V0KCJjbGllbnRfaWQiLHMuY2xpZW50SUQpLGY9Im9wZW5pZCIscy5zY29wZSYmcy5zY29wZS5sZW5ndGg+MCYmKHMuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxzLnNjb3BlLnB1c2goIm9wZW5pZCIpLGY9cy5zY29wZS5qb2luKCIgIikpLGMuc2V0KCJzY29wZSIsZiksYy5zZXQoInJlZGlyZWN0X3VyaSIscy5zaWduSW5SZWRpcmVjdFVSTCkscy5yZXNwb25zZU1vZGUmJmMuc2V0KCJyZXNwb25zZV9tb2RlIixzLnJlc3BvbnNlTW9kZSksby5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGw9by5zZW50LCFzLmVuYWJsZVBLQ0Upe28ubmV4dD0yMTticmVha31yZXR1cm4gaD1udWxsPT09KHI9dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRDb2RlVmVyaWZpZXIoKSxwPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVDaGFsbGVuZ2UoaCksby5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGwsaCx0KTtjYXNlIDE5OmMuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksYy5zZXQoImNvZGVfY2hhbGxlbmdlIixwKTtjYXNlIDIxOmlmKHMucHJvbXB0JiZjLnNldCgicHJvbXB0IixzLnByb21wdCksZD1lKWZvcih2PTAsZz1PYmplY3QuZW50cmllcyhkKTt2PGcubGVuZ3RoO3YrKyltPXkoZ1t2XSwyKSxiPW1bMF0sdz1tWzFdLCIiIT1iJiYiIiE9dyYmInN0YXRlIiE9PWImJihrPWIucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpLGMuc2V0KGssdy50b1N0cmluZygpKSk7Yy5zZXQoInN0YXRlIixPLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihsLGQ/bnVsbD09PShhPWQuc3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvU3RyaW5nKCk6IiIpKSxfPVIoYy5lbnRyaWVzKCkpO3RyeXtmb3IoXy5zKCk7ISh4PV8ubigpKS5kb25lOylTPXkoeC52YWx1ZSwyKSxFPVNbMF0sVD1TWzFdLHUuc2VhcmNoUGFyYW1zLmFwcGVuZChFLFQpfWNhdGNoKGUpe18uZShlKX1maW5hbGx5e18uZigpfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix1LnRvU3RyaW5nKCkpO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLHUsYztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbz1hLnNlbnQudG9rZW5fZW5kcG9pbnQsYS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGk9YS5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe2EubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMS1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODppZihhLnQwPXQsIWEudDApe2EubmV4dD0xMjticmVha31yZXR1cm4gYS5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsdCxuKTtjYXNlIDEyOmlmKChzPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoaS5jbGllbnRJRCkpLGkuY2xpZW50U2VjcmV0JiZpLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJnMucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChpLmNsaWVudFNlY3JldCkpLHU9ZSxzLnB1c2goImNvZGU9Ii5jb25jYXQodSkpLHMucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSxzLnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChpLnNpZ25JblJlZGlyZWN0VVJMKSksYS50MT1pLmVuYWJsZVBLQ0UsIWEudDEpe2EubmV4dD0yOTticmVha31yZXR1cm4gYS50Mj1zLGEudDM9ImNvZGVfdmVyaWZpZXI9IixhLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTy5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHIpLG4pO2Nhc2UgMjQ6cmV0dXJuIGEudDQ9YS5zZW50LGEudDU9YS50My5jb25jYXQuY2FsbChhLnQzLGEudDQpLGEudDIucHVzaC5jYWxsKGEudDIsYS50NSksYS5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShyKSxuKTtjYXNlIDI5OnJldHVybiBhLnByZXY9MjksYS5uZXh0PTMyLGZldGNoKG8se2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6aS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAzMjpjPWEuc2VudCxhLm5leHQ9Mzg7YnJlYWs7Y2FzZSAzNTp0aHJvdyBhLnByZXY9MzUsYS50Nj1hLmNhdGNoKDI5KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDEtTkUwMiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsbnVsbCE9YS50Nj9hLnQ2OiJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMzg6aWYoYy5vayl7YS5uZXh0PTQ1O2JyZWFrfXJldHVybiBhLnQ3PUQsYS50OD0iUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoYy5zdGF0dXNUZXh0KSxhLm5leHQ9NDMsYy5qc29uKCk7Y2FzZSA0Mzp0aHJvdyBhLnQ5PWEuc2VudCxuZXcgYS50NygiSlMtQVVUSF9DT1JFLVJBVDEtSEUwMyIsYS50OCxhLnQ5KTtjYXNlIDQ1OnJldHVybiBhLm5leHQ9NDcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShjLG4pO2Nhc2UgNDc6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGEuc2VudCk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyxbWzI5LDM1XV0pfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBuPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChhPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAxIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpO2Nhc2UgMTE6aWYociYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAyIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxMzpyZXR1cm4obz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG4uY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQoYS5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxuLmNsaWVudFNlY3JldCYmbi5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQobi5jbGllbnRTZWNyZXQpKSx0LnByZXY9MTUsdC5uZXh0PTE4LGZldGNoKHIse2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAxODppPXQuc2VudCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTp0aHJvdyB0LnByZXY9MjEsdC50MD10LmNhdGNoKDE1KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDItTlIwMyIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjQ6aWYoaS5vayl7dC5uZXh0PTMxO2JyZWFrfXJldHVybiB0LnQxPUQsdC50Mj0iUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoaS5zdGF0dXNUZXh0KSx0Lm5leHQ9MjksaS5qc29uKCk7Y2FzZSAyOTp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9DT1JFLVJBVDItSEUwNCIsdC50Mix0LnQzKTtjYXNlIDMxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGksZSkpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxNSwyMV1dKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMy1ORjAxIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybihhPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQobi5jbGllbnRJRCkpLHQudDA9YSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksYS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5wcmV2PTE4LHQubmV4dD0yMSxmZXRjaChyLHtib2R5OmEuam9pbigiJiIpLGNyZWRlbnRpYWxzOm4uc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMjE6bz10LnNlbnQsdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjQ6dGhyb3cgdC5wcmV2PTI0LHQudDQ9dC5jYXRjaCgxOCksbmV3IEQoIkpTLUFVVEhfQ09SRS1SQVQzLU5FMDIiLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPXQudDQ/dC50NDoiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNzppZigyMDA9PT1vLnN0YXR1cyYmby5vayl7dC5uZXh0PTM0O2JyZWFrfXJldHVybiB0LnQ1PUQsdC50Nj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoby5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0zMixvLmpzb24oKTtjYXNlIDMyOnRocm93IHQudDc9dC5zZW50LG5ldyB0LnQ1KCJKUy1BVVRIX0NPUkUtUkFUMy1IRTAzIix0LnQ2LHQudDcpO2Nhc2UgMzQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUobykpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTgsMjRdXSl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyxpLHMsdSxjLGY9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9ci5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDpuLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1SQ0ctTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHIubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9eShlLDIpLG49clswXSxhPXJbMV07cmV0dXJuIHgoZix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGEsdCk7Y2FzZSAyOnJldHVybiByPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobiwiPSIpLmNvbmNhdChyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYoaT1yLnNlbnQscz1PYmplY3QuYXNzaWduKHt9LE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxyLnQwPWUuYXR0YWNoVG9rZW4sIXIudDApe3IubmV4dD0yMzticmVha31yZXR1cm4gci50MT1PYmplY3Qsci50Mj1PYmplY3QuYXNzaWduKHt9LHMpLHIudDM9IkJlYXJlciAiLHIubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpyLnQ0PXIuc2VudC5hY2Nlc3NfdG9rZW4sci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Nj17QXV0aG9yaXphdGlvbjpyLnQ1fSxzPXIudDEuYXNzaWduLmNhbGwoci50MSxyLnQyLHIudDYpO2Nhc2UgMjM6cmV0dXJuIHU9e2JvZHk6aS5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHMpLG1ldGhvZDoiUE9TVCJ9LHIucHJldj0yNCxyLm5leHQ9MjcsZmV0Y2gobyx1KTtjYXNlIDI3OmM9ci5zZW50LHIubmV4dD0zMzticmVhaztjYXNlIDMwOnRocm93IHIucHJldj0zMCxyLnQ3PXIuY2F0Y2goMjQpLG5ldyBEKCJKUy1BVVRIX0NPUkUtUkNHLU5FMDIiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9ci50Nz9yLnQ3OiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iKTtjYXNlIDMzOmlmKDIwMD09PWMuc3RhdHVzJiZjLm9rKXtyLm5leHQ9NDA7YnJlYWt9cmV0dXJuIHIudDg9RCxyLnQ5PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiAoIi5jb25jYXQoYy5zdGF0dXNUZXh0LCIpIiksci5uZXh0PTM4LGMuanNvbigpO2Nhc2UgMzg6dGhyb3cgci50MTA9ci5zZW50LG5ldyByLnQ4KCJKUy1BVVRIX0NPUkUtUkNHLUhFMDMiLHIudDksci50MTApO2Nhc2UgNDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD00NDticmVha31yLnQxMT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGMsdCksci5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIHIudDEyPVByb21pc2Usci5uZXh0PTQ3LGMuanNvbigpO2Nhc2UgNDc6ci50MTM9ci5zZW50LHIudDExPXIudDEyLnJlc29sdmUuY2FsbChyLnQxMixyLnQxMyk7Y2FzZSA0OTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MTEpO2Nhc2UgNTA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMsW1syNCwzMF1dKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsbj10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8obnVsbD09cj92b2lkIDA6ci5pZF90b2tlbiksYT17YWxsb3dlZFNjb3BlczpyLnNjb3BlLHNlc3Npb25TdGF0ZTpyLnNlc3Npb25fc3RhdGV9LHQuYWJydXB0KCJyZXR1cm4iLChPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2b2lkIDAhPT1uW2VdJiYiIiE9PW5bZV0mJm51bGwhPT1uW2VdfHxkZWxldGUgbltlXX0pKSxhPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSxuKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LmlkX3Rva2VuLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudC5pZF90b2tlbik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2NvbmZpZygpO2Nhc2UgMjppZihyPXQuc2VudCx0LnQwPSFlLCF0LnQwKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5uZXh0PTcsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDc6dC50MD10LnNlbnQ7Y2FzZSA4OmlmKCF0LnQwKXt0Lm5leHQ9MTA7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDEwOmlmKCEobj1yLndlbGxLbm93bkVuZHBvaW50KSl7dC5uZXh0PTM2O2JyZWFrfXJldHVybiB0LnByZXY9MTIsdC5uZXh0PTE1LGZldGNoKG4pO2Nhc2UgMTU6aWYoMjAwPT09KGE9dC5zZW50KS5zdGF0dXMmJmEub2spe3QubmV4dD0xODticmVha310aHJvdyBuZXcgRXJyb3I7Y2FzZSAxODp0Lm5leHQ9MjM7YnJlYWs7Y2FzZSAyMDp0aHJvdyB0LnByZXY9MjAsdC50MT10LmNhdGNoKDEyKSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUhFMDEiLCJJbnZhbGlkIHdlbGwta25vd24gcmVzcG9uc2UiLCJUaGUgd2VsbCBrbm93biBlbmRwb2ludCByZXNwb25zZSBoYXMgYmVlbiBmYWlsZWQgd2l0aCBhbiBlcnJvci4iKTtjYXNlIDIzOnJldHVybiB0LnQyPXRoaXMuX2RhdGFMYXllcix0LnQzPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLHQubmV4dD0yNyxhLmpzb24oKTtjYXNlIDI3OnJldHVybiB0LnQ0PXQuc2VudCx0Lm5leHQ9MzAsdC50My5yZXNvbHZlRW5kcG9pbnRzLmNhbGwodC50Myx0LnQ0KTtjYXNlIDMwOnJldHVybiB0LnQ1PXQuc2VudCx0Lm5leHQ9MzMsdC50Mi5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDIsdC50NSk7Y2FzZSAzMzpyZXR1cm4gdC5uZXh0PTM1LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSAzNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMzY6aWYoIXIuYmFzZVVybCl7dC5uZXh0PTUyO2JyZWFrfXJldHVybiB0LnByZXY9MzcsdC50Nj10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTQxLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwoKTtjYXNlIDQxOnJldHVybiB0LnQ3PXQuc2VudCx0Lm5leHQ9NDQsdC50Ni5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDYsdC50Nyk7Y2FzZSA0NDp0Lm5leHQ9NDk7YnJlYWs7Y2FzZSA0Njp0aHJvdyB0LnByZXY9NDYsdC50OD10LmNhdGNoKDM3KSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDIiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDg/dC50ODoiUmVzb2x2aW5nIGVuZHBvaW50cyBieSBiYXNlIHVybCBmYWlsZWQuIik7Y2FzZSA0OTpyZXR1cm4gdC5uZXh0PTUxLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA1MTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNTI6cmV0dXJuIHQucHJldj01Mix0LnQ5PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NTYsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkoKTtjYXNlIDU2OnJldHVybiB0LnQxMD10LnNlbnQsdC5uZXh0PTU5LHQudDkuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQ5LHQudDEwKTtjYXNlIDU5OnQubmV4dD02NDticmVhaztjYXNlIDYxOnRocm93IHQucHJldj02MSx0LnQxMT10LmNhdGNoKDUyKSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDMiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDExP3QudDExOiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGV4cGxpY2l0bHkgZmFpbGVkLiIpO2Nhc2UgNjQ6cmV0dXJuIHQubmV4dD02Nix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgNjY6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDY3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTIsMjBdLFszNyw0Nl0sWzUyLDYxXV0pfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscixuLGEsbyxpLHMsdSxjO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZigpe3ZhciBsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZil7Zm9yKDs7KXN3aXRjaChmLnByZXY9Zi5uZXh0KXtjYXNlIDA6cmV0dXJuIGYubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBsPWYuc2VudCxmLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50Om51bGwhPT0oZT1sLmF1dGhvcml6YXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1lP2U6IiIsY2hlY2tTZXNzaW9uSWZyYW1lOm51bGwhPT0odD1sLmNoZWNrX3Nlc3Npb25faWZyYW1lKSYmdm9pZCAwIT09dD90OiIiLGVuZFNlc3Npb25FbmRwb2ludDpudWxsIT09KHI9bC5lbmRfc2Vzc2lvbl9lbmRwb2ludCkmJnZvaWQgMCE9PXI/cjoiIixpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6bnVsbCE9PShuPWwuaW50cm9zcGVjdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PW4/bjoiIixpc3N1ZXI6bnVsbCE9PShhPWwuaXNzdWVyKSYmdm9pZCAwIT09YT9hOiIiLGp3a3NVcmk6bnVsbCE9PShvPWwuandrc191cmkpJiZ2b2lkIDAhPT1vP286IiIscmVnaXN0cmF0aW9uRW5kcG9pbnQ6bnVsbCE9PShpPWwucmVnaXN0cmF0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09aT9pOiIiLHJldm9jYXRpb25FbmRwb2ludDpudWxsIT09KHM9bC5yZXZvY2F0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09cz9zOiIiLHRva2VuRW5kcG9pbnQ6bnVsbCE9PSh1PWwudG9rZW5fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdXNlcmluZm9FbmRwb2ludDpudWxsIT09KGM9bC51c2VyaW5mb19lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGYuc3RvcCgpfX0pLGYsdGhpcyl9KSkpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKGEudDE9dD1hLnNlbnQsYS50MD1udWxsPT09YS50MSxhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj12b2lkIDAsYS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6YS50Mj10LmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIG89YS50MixhLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihpPWEuc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXthLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDEiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gYS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE5OmlmKGEudDQ9cj1hLnNlbnQsYS50Mz1udWxsPT09YS50NCxhLnQzKXthLm5leHQ9MjM7YnJlYWt9YS50Mz12b2lkIDA9PT1yO2Nhc2UgMjM6aWYoIWEudDMpe2EubmV4dD0yNzticmVha31hLnQ1PXZvaWQgMCxhLm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzphLnQ1PXIuaWRfdG9rZW47Y2FzZSAyODppZigocz1hLnQ1KSYmMCE9PXMudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAyIiwiSUQgdG9rZW4gbm90IGZvdW5kLiIsIk5vIElEIHRva2VuIGNvdWxkIGJlIGZvdW5kLiBFaXRoZXIgdGhlIHNlc3Npb24gaW5mb3JtYXRpb24gaXMgbG9zdCBvciB5b3UgaGF2ZSBub3Qgc2lnbmVkIGluLiIpO2Nhc2UgMzE6aWYoKHU9bnVsbCE9PShuPW51bGw9PWk/dm9pZCAwOmkuc2lnbk91dFJlZGlyZWN0VVJMKSYmdm9pZCAwIT09bj9uOm51bGw9PWk/dm9pZCAwOmkuc2lnbkluUmVkaXJlY3RVUkwpJiYwIT09dS50cmltKCkubGVuZ3RoKXthLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDMiLCJObyBzaWduLW91dCByZWRpcmVjdCBVUkwgZm91bmQuIiwiVGhlIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBjYW5ub3QgYmUgZm91bmQgb3IgdGhlIFVSTCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4gTm8gc2lnbi1pbiByZWRpcmVjdCBVUkwgaGFzIGJlZW4gZm91bmQgZWl0aGVyLiAiKTtjYXNlIDM0OnJldHVybiBhLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobywiP2lkX3Rva2VuX2hpbnQ9IikuY29uY2F0KHMsIiZwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk9IikuY29uY2F0KHUsIiZzdGF0ZT1zaWduX291dF9zdWNjZXNzIikpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuZ2V0U2lnbk91dFVSTChlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjppZihyLnQxPXQ9ci5zZW50LHIudDA9bnVsbD09PXIudDEsci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDA9PT10O2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9dm9pZCAwLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9dC5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUJvb2xlYW4sdC5uZXh0PTMsdGhpcy5nZXRBY2Nlc3NUb2tlbihlKTtjYXNlIDM6cmV0dXJuIHQudDE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCgwLHQudDApKHQudDEpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShlKSx0KTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSxlLHIpO2Nhc2UgMjpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCEwKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSx0aGlzLl9pZD10LHRoaXMuX3N0b3JlPXJ9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YUluQnVsayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGkscztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGE9bi50MixvPWEmJkpTT04ucGFyc2UoYSksaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbyksdCkscz1KU09OLnN0cmluZ2lmeShpKSxuLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLGM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoYS50MT1uPWEuc2VudCxhLnQwPW51bGwhPT1hLnQxLCFhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj1uLGEubmV4dD0xMTticmVhaztjYXNlIDEwOmEudDI9bnVsbDtjYXNlIDExOnJldHVybiBvPWEudDIsaT1vJiZKU09OLnBhcnNlKG8pLHM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHUoe30sdCxyKSksYz1KU09OLnN0cmluZ2lmeShzKSxhLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLGMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLG8saSxzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1uLnQyLG89YSYmSlNPTi5wYXJzZShhKSxkZWxldGUoaT1PYmplY3QuYXNzaWduKHt9LG8pKVt0XSxzPUpTT04uc3RyaW5naWZ5KGkpLG4ubmV4dD0xOCx0aGlzLl9zdG9yZS5zZXREYXRhKGUscyk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiX3Jlc29sdmVLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQsIi0iKS5jb25jYXQodCk6IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQpfX0se2tleToic2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLGo9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpTLnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sTj1mdW5jdGlvbigpewovKioKICAgICAgICAgKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSAuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge1N0b3JlfSBzdG9yZSAtIFRoZSBzdG9yZSBvYmplY3QuCiAgICAgICAgICoKICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAqIGBgYAogICAgICAgICAqIGNvbnN0IF9zdG9yZTogU3RvcmUgPSBuZXcgRGF0YVN0b3JlKCk7CiAgICAgICAgICogY29uc3QgYXV0aCA9IG5ldyBBc2dhcmRlb0F1dGhDbGllbnQ8Q3VzdG9tQ2xpZW50Q29uZmlnPihfc3RvcmUpOwogICAgICAgICAqIGBgYAogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2NvbnN0cnVjdG9yCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovCmZ1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IE0oImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgSCh0aGlzLl9kYXRhTGF5ZXIscil9Ci8qKgogICAgICAgICAqCiAgICAgICAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFNESyB3aXRoIHRoZSBjb25maWcgZGF0YS4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7QXV0aENsaWVudENvbmZpZzxUPn0gY29uZmlnIC0gVGhlIGNvbmZpZyBvYmplY3QgdG8gaW5pdGlhbGl6ZSB3aXRoLgogICAgICAgICAqCiAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAogICAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCiAgICAgICAgICogICAgIGJhc2VVcmw6ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgogICAgICAgICAqIH0KICAgICAgICAgKgogICAgICAgICAqIGF3YWl0IGF1dGguaW5pdGlhbGl6ZShjb25maWcpOwogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2luaXRpYWxpemUKICAgICAgICAgKgogICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAqL3JldHVybiBzKGUsW3trZXk6ImluaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxqKSxlKSx7c2NvcGU6W10uY29uY2F0KGIobnVsbCE9PSh0PWouc2NvcGUpJiZ2b2lkIDAhPT10P3Q6W10pLGIobnVsbCE9PShuPW51bGw9PT0ocj1lLnNjb3BlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEobnVsbD09PSh0PW51bGw9PWo/dm9pZCAwOmouc2NvcGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmluY2x1ZGVzKGUpKX0pKSkmJnZvaWQgMCE9PW4/bjpbXSkpfSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBEYXRhTGF5ZXJgIG9iamVjdCB0aGF0IGFsbG93cyB5b3UgdG8gYWNjZXNzIGF1dGhlbnRpY2F0aW9uIGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7RGF0YUxheWVyfSAtIFRoZSBgRGF0YUxheWVyYCBvYmplY3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZGF0YSA9IGF1dGguZ2V0RGF0YUxheWVyKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGF0YUxheWVyCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXREYXRhTGF5ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFMYXllcn0KLyoqCiAgICAgICAgICAgKiBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtHZXRBdXRoVVJMQ29uZmlnfSBjb25maWcgLSAoT3B0aW9uYWwpIEEgY29uZmlnIG9iamVjdCB0byBmb3JjZSBpbml0aWFsaXphdGlvbiBhbmQgcGFzcwogICAgICAgICAgICogY3VzdG9tIHBhdGggcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBmaWRwIHBhcmFtZXRlci4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGF1dGhvcml6YXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGguZ2V0QXV0aG9yaXphdGlvblVSTCgpLnRoZW4oKHVybCk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyh1cmwpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QXV0aG9yaXphdGlvblVSTAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KG49T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBuLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBhLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChuLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgc2VuZHMgYSByZXF1ZXN0IHRvIG9idGFpbiB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZQogICAgICAgICAgICogdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYXV0aG9yaXphdGlvbkNvZGUgLSBUaGUgYXV0aG9yaXphdGlvbiBjb2RlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25TdGF0ZSAtIFRoZSBzZXNzaW9uIHN0YXRlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIHJlc3BvbnNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmVxdWVzdEFjY2Vzc1Rva2VuKGF1dGhDb2RlLCBzZXNzaW9uU3RhdGUpLnRoZW4oKHRva2VuKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHRva2VuKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgbz10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFhLnNlbnQpe2EubmV4dD02O2JyZWFrfWEudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKSxhLm5leHQ9NzticmVhaztjYXNlIDY6YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8uX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LHIsbil9KSk7Y2FzZSA3OnJldHVybiBhLmFicnVwdCgicmV0dXJuIixhLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIGF1dGhlbnRpY2F0aW9uIGRhdGEgYW5kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguc2lnbk91dCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NpZ25PdXQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoaXMgZG9lc24ndCBjbGVhciB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguZ2V0U2lnbk91dFVSTCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFNpZ25PdXRVUkwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIE9JREMgc2VydmljZSBlbmRwb2ludHMgdGhhdCBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBgLndlbGwta25vd25gIGVuZHBvaW50LgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8T0lEQ0VuZHBvaW50cz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBlbmRwb2ludHMgPSBhd2FpdCBhdXRoLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBwYXlsb2FkIG9mIHRoZSBJRCB0b2tlbiBhbmQgcmV0dXJucyBpdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8RGVjb2RlZElEVG9rZW5QYXlsb2FkPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBkZWNvZGVkIElEIHRva2VuIHBheWxvYWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZGVjb2RlZElkVG9rZW4gPSBhd2FpdCBhdXRoLmdldERlY29kZWRJRFRva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGVjb2RlZElEVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGlkVG9rZW4gPSBhd2FpdCBhdXRoLmdldElEVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRJRFRva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0SURUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbiBvYnRhaW5lZCBmcm9tIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8QmFzaWNVc2VySW5mbz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCB1c2VySW5mbyA9IGF3YWl0IGF1dGguZ2V0QmFzaWNVc2VySW5mbygpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEJhc2ljVXNlckluZm8KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRCYXNpY1VzZXJJbmZvKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoaXMgbWV0aG9kIGFsc28gY2xlYXJzIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxGZXRjaFJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXR1cm5zIHRoZSByZXNwb25zZSBvZiB0aGUgcmV2b2tlLWFjY2Vzcy10b2tlbiByZXF1ZXN0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXZva2VBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmV2b2tlQWNjZXNzVG9rZW4oZSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmVmcmVzaGVzIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmV3IGFjY2VzcwogICAgICAgICAgICogdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIHJlc3BvbnNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmVmcmVzaEFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVmcmVzaEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVmcmVzaEFjY2Vzc1Rva2VuKGUpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBhdXRoLmdldEFjY2Vzc1Rva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QWNjZXNzVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgY3VzdG9tLWdyYW50IHJlcXVlc3QgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UKICAgICAgICAgICAqIGRlcGVuZGluZyBvbiB0aGUgY29uZmlnIHBhc3NlZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge0N1c3RvbUdyYW50Q29uZmlnfSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgY29udGFpbmluZyB0aGUgY3VzdG9tIGdyYW50IGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2UgfCBGZXRjaFJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkZXBlbmRpbmcKICAgICAgICAgICAqIG9uIHlvdXIgY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAgICogICBhdHRhY2hUb2tlbjogZmFsc2UsCiAgICAgICAgICAgKiAgIGRhdGE6IHsKICAgICAgICAgICAqICAgICAgIGNsaWVudF9pZDogInt7Y2xpZW50SUR9fSIsCiAgICAgICAgICAgKiAgICAgICBncmFudF90eXBlOiAiYWNjb3VudF9zd2l0Y2giLAogICAgICAgICAgICogICAgICAgc2NvcGU6ICJ7e3Njb3BlfX0iLAogICAgICAgICAgICogICAgICAgdG9rZW46ICJ7e3Rva2VufX0iLAogICAgICAgICAgICogICB9LAogICAgICAgICAgICogICBpZDogImFjY291bnQtc3dpdGNoIiwKICAgICAgICAgICAqICAgcmV0dXJuUmVzcG9uc2U6IHRydWUsCiAgICAgICAgICAgKiAgIHJldHVybnNTZXNzaW9uOiB0cnVlLAogICAgICAgICAgICogICBzaWduSW5SZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICogfQogICAgICAgICAgICoKICAgICAgICAgICAqIGF1dGgucmVxdWVzdEN1c3RvbUdyYW50KGNvbmZpZykudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEN1c3RvbUdyYW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSx0KX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLmlzQXV0aGVudGljYXRlZCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzQXV0aGVudGljYXRlZAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuaXNBdXRoZW50aWNhdGVkKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBQS0NFIGNvZGUgZ2VuZXJhdGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgcGFyYW1ldGVyIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBQS0NFIGNvZGUuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgcGtjZSA9IGF3YWl0IGdldFBLQ0VDb2RlKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0UEtDRUNvZGUKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZShlLHQpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBQS0NFIGNvZGUgdG8gdGhlIGRhdGEgc3RvcmUuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBrY2UgLSBUaGUgUEtDRSBjb2RlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIC0gVGhlIHN0YXRlIHBhcmFtZXRlciB0aGF0IHdhcyBwYXNzZWQgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXdhaXQgYXV0aC5zZXRQS0NFQ29kZSgicGtjZV9jb2RlIikKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzZXRQS0NFQ29kZQogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2V0UEtDRUNvZGUoZSx0LHIpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGlzIHN1Y2Nlc3NmdWwgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduT3V0UmVkaXJlY3RVcmwgLSBUaGUgVVJMIHRvIHdoaWNoIHRoZSB1c2VyIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgc2lnbmluZy1vdXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCiAgICAgICAgICAgKiAgYXJlIHJlcXVpcmVkIGZvciB0aGlzIG1ldGhvZCB0byBmdW5jdGlvbi4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc1NpZ25PdXRTdWNjZXNzZnVsCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOgovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgcGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yIHdoZW4gaW5zdGFudGlhdGluZyB0aGlzIGNsYXNzLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7UGFydGlhbDxBdXRoQ2xpZW50Q29uZmlnPFQ+Pn0gY29uZmlnIC0gQSBjb25maWcgb2JqZWN0IHRvIHVwZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb25zIHdpdGguCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAogICAgICAgICAgICogICAgIGNsaWVudElEOiAiY2xpZW50IElEIiwKICAgICAgICAgICAqICAgICBiYXNlVXJsOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyIKICAgICAgICAgICAqIH0KICAgICAgICAgICAqCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLnVwZGF0ZUNvbmZpZyhjb25maWcpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjdXBkYXRlQ29uZmlnCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovCmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0sW3trZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiYhbn0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSBzaWduLW91dCBoYXMgZmFpbGVkIG9yIG5vdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbk91dFJlZGlyZWN0VXJsIC0gVGhlIFVSTCB0byB3aGljaCB0aGUgdXNlciBoYXMgYmVlbiByZWRpcmVjdGVkIHRvIGFmdGVyIHNpZ25pbmctb3V0LgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhlIHNlcnZlciBhcHBlbmRzIHBhdGggcGFyYW1ldGVycyB0byB0aGUgYHNpZ25PdXRSZWRpcmVjdFVSTGAgYW5kIHRoZXNlIHBhdGggcGFyYW1ldGVycwogICAgICAgICAgICogIGFyZSByZXF1aXJlZCBmb3IgdGhpcyBtZXRob2QgdG8gZnVuY3Rpb24uKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiBzdWNjZXNzZnVsLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZGlkU2lnbk91dEZhaWwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImRpZFNpZ25PdXRGYWlsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmbn19XSksZX0oKSxxPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KFB8fChQPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCIsZS5TaWduT3V0RmFpbGVkPSJzaWduLW91dC1mYWlsZWQifShJfHwoST17fSkpO3ZhciBLPSJjdXN0b21fZ3JhbnRfY29uZmlnIixKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtvKHRoaXMsZSksdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQ9dCx0aGlzLl9kYXRhTGF5ZXI9dGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0RGF0YUxheWVyKCl9cmV0dXJuIHMoZSxbe2tleToicmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4sYT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZighKHQ9ZS5zZW50KS5yZWZyZXNoX3Rva2VuKXtlLm5leHQ9OTticmVha31yZXR1cm4gcj1wYXJzZUludCh0LmV4cGlyZXNfaW4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gXyhhLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pLDFlMyoocjw9MTA/cjpyLTEwKSksZS5uZXh0PTksdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSxKU09OLnN0cmluZ2lmeShuKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclJlZnJlc2hUb2tlblRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSk7Y2FzZSAyOmlmKCFlLnNlbnQpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLnQwPUpTT04sZS5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSk7Y2FzZSA2OmUudDE9ZS5zZW50LHQ9ZS50MC5wYXJzZS5jYWxsKGUudDAsZS50MSksY2xlYXJUaW1lb3V0KHQpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiBzKGUsbnVsbCxbe2tleToiZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2I6KG51bGw9PWU/dm9pZCAwOmUuZGF0YSlpbnN0YW5jZW9mIEJsb2I/bnVsbD09ZT92b2lkIDA6ZS5kYXRhOm51bGwsZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITB9fX0se2tleToiZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUudG9KU09OKSYmZGVsZXRlIGUudG9KU09OLHtlcnJvcjpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITF9fX1dKSxlfSgpLEY9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiBXKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9ZnVuY3Rpb24geihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fXZhciBWPXtleHBvcnRzOnt9fSxZPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxuPTA7bjxyLmxlbmd0aDtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUuYXBwbHkodCxyKX19LEc9WSxYPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gJChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBaKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIFEoZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PVguY2FsbChlKX1mdW5jdGlvbiBlZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09cihlKX1mdW5jdGlvbiB0ZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PVguY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiByZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09WC5jYWxsKGUpfWZ1bmN0aW9uIG5lKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9PXIoZSkmJihlPVtlXSksJChlKSlmb3IodmFyIG49MCxhPWUubGVuZ3RoO248YTtuKyspdC5jYWxsKG51bGwsZVtuXSxuLGUpO2Vsc2UgZm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJnQuY2FsbChudWxsLGVbb10sbyxlKX12YXIgYWU9e2lzQXJyYXk6JCxpc0FycmF5QnVmZmVyOlEsaXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhWihlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFaKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09WC5jYWxsKGUpfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZRKGUuYnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OmVlLGlzUGxhaW5PYmplY3Q6dGUsaXNVbmRlZmluZWQ6Wixpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09WC5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09WC5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09WC5jYWxsKGUpfSxpc0Z1bmN0aW9uOnJlLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBlZShlKSYmcmUoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1YLmNhbGwoZSl9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6bmUsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXt0ZSh0W25dKSYmdGUocik/dFtuXT1lKHRbbl0scik6dGUocik/dFtuXT1lKHt9LHIpOiQocik/dFtuXT1yLnNsaWNlKCk6dFtuXT1yfWZvcih2YXIgbj0wLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKW5lKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbmUodCwoZnVuY3Rpb24odCxuKXtlW25dPXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0P0codCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX0sb2U9YWU7ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIHNlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKG9lLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107b2UuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihvZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sb2UuZm9yRWFjaChlLChmdW5jdGlvbihlKXtvZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6b2UuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaWUodCkrIj0iK2llKGUpKX0pKSl9KSksbj1hLmpvaW4oIiYiKX1pZihuKXt2YXIgbz1lLmluZGV4T2YoIiMiKTstMSE9PW8mJihlPWUuc2xpY2UoMCxvKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX0sdWU9YWU7ZnVuY3Rpb24gY2UoKXt0aGlzLmhhbmRsZXJzPVtdfWNlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LGNlLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sY2UucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7dWUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIGZlPWNlLGxlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307ZnVuY3Rpb24gaGUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBwZSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGRlPWhlLHZlPXBlO2Z1bmN0aW9uIGdlKGUpe2lmKGRlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChkZT09PWhlfHwhZGUpJiZzZXRUaW1lb3V0KXJldHVybiBkZT1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGRlKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBkZS5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gZGUuY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgbGUuc2V0VGltZW91dCYmKGRlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBsZS5jbGVhclRpbWVvdXQmJih2ZT1jbGVhclRpbWVvdXQpO3ZhciBtZSx5ZT1bXSxiZT0hMSx3ZT0tMTtmdW5jdGlvbiBrZSgpe2JlJiZtZSYmKGJlPSExLG1lLmxlbmd0aD95ZT1tZS5jb25jYXQoeWUpOndlPS0xLHllLmxlbmd0aCYmUmUoKSl9ZnVuY3Rpb24gUmUoKXtpZighYmUpe3ZhciBlPWdlKGtlKTtiZT0hMDtmb3IodmFyIHQ9eWUubGVuZ3RoO3Q7KXtmb3IobWU9eWUseWU9W107Kyt3ZTx0OyltZSYmbWVbd2VdLnJ1bigpO3dlPS0xLHQ9eWUubGVuZ3RofW1lPW51bGwsYmU9ITEsZnVuY3Rpb24oZSl7aWYodmU9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigodmU9PT1wZXx8IXZlKSYmY2xlYXJUaW1lb3V0KXJldHVybiB2ZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXt2ZShlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHZlLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gdmUuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBfZShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fV9lLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtmdW5jdGlvbiB4ZSgpe312YXIgU2U9eGUsRWU9eGUsVGU9eGUsQWU9eGUsQ2U9eGUsRGU9eGUsT2U9eGU7dmFyIFBlPWxlLnBlcmZvcm1hbmNlfHx7fSxJZT1QZS5ub3d8fFBlLm1vek5vd3x8UGUubXNOb3d8fFBlLm9Ob3d8fFBlLndlYmtpdE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07dmFyIFVlPW5ldyBEYXRlO3ZhciBMZT17bmV4dFRpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTt5ZS5wdXNoKG5ldyBfZShlLHQpKSwxIT09eWUubGVuZ3RofHxiZXx8Z2UoUmUpfSx0aXRsZToiYnJvd3NlciIsYnJvd3NlcjohMCxlbnY6e30sYXJndjpbXSx2ZXJzaW9uOiIiLHZlcnNpb25zOnt9LG9uOlNlLGFkZExpc3RlbmVyOkVlLG9uY2U6VGUsb2ZmOkFlLHJlbW92ZUxpc3RlbmVyOkNlLHJlbW92ZUFsbExpc3RlbmVyczpEZSxlbWl0Ok9lLGJpbmRpbmc6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGNoZGlyOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihlKXt2YXIgdD0uMDAxKkllLmNhbGwoUGUpLHI9TWF0aC5mbG9vcih0KSxuPU1hdGguZmxvb3IodCUxKjFlOSk7cmV0dXJuIGUmJihyLT1lWzBdLChuLT1lWzFdKTwwJiYoci0tLG4rPTFlOSkpLFtyLG5dfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLVVlKS8xZTN9fSxIZT1MZSxNZT1hZSxqZT1mdW5jdGlvbihlLHQscixuLGEpe3JldHVybiBlLmNvbmZpZz10LHImJihlLmNvZGU9ciksZS5yZXF1ZXN0PW4sZS5yZXNwb25zZT1hLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX0sTmU9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LHFlPWplLEtlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIG89bmV3IEVycm9yKGUpO3JldHVybiBxZShvLHQscixuLGEpfSxKZT1LZSxCZT1hZSxGZT1CZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihlLHQscixuLGEsbyl7dmFyIGk9W107aS5wdXNoKGUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KSksQmUuaXNOdW1iZXIocikmJmkucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHIpLnRvR01UU3RyaW5nKCkpLEJlLmlzU3RyaW5nKG4pJiZpLnB1c2goInBhdGg9IituKSxCZS5pc1N0cmluZyhhKSYmaS5wdXNoKCJkb21haW49IithKSwhMD09PW8mJmkucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWkuam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319LFdlPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSl9LHplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9LFZlPWFlLFllPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0sR2U9YWUsWGU9R2UuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBuKGUpe3ZhciBuPWU7cmV0dXJuIHQmJihyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbiksbj1yLmhyZWYpLHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSx7aHJlZjpyLmhyZWYscHJvdG9jb2w6ci5wcm90b2NvbD9yLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpyLmhvc3Qsc2VhcmNoOnIuc2VhcmNoP3Iuc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6ci5oYXNoP3IuaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOnIuaG9zdG5hbWUscG9ydDpyLnBvcnQscGF0aG5hbWU6Ii8iPT09ci5wYXRobmFtZS5jaGFyQXQoMCk/ci5wYXRobmFtZToiLyIrci5wYXRobmFtZX19cmV0dXJuIGU9bih3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIHI9R2UuaXNTdHJpbmcodCk/bih0KTp0O3JldHVybiByLnByb3RvY29sPT09ZS5wcm90b2NvbCYmci5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfTtmdW5jdGlvbiAkZShlKXt0aGlzLm1lc3NhZ2U9ZX0kZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sJGUucHJvdG90eXBlLl9fQ0FOQ0VMX189ITA7dmFyIFplPSRlLFFlPWFlLGV0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3QoSmUoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0sdHQ9RmUscnQ9c2UsbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmIVdlKHQpP3plKGUsdCk6dH0sYXQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGE9e307cmV0dXJuIGU/KFZlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PVZlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPVZlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYoYVt0XSYmWWUuaW5kZXhPZih0KT49MClyZXR1cm47YVt0XT0ic2V0LWNvb2tpZSI9PT10PyhhW3RdP2FbdF06W10pLmNvbmNhdChbcl0pOmFbdF0/YVt0XSsiLCAiK3I6cn19KSksYSk6YX0sb3Q9WGUsaXQ9S2Usc3Q9TmUsdXQ9WmUsY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuLGE9ZS5kYXRhLG89ZS5oZWFkZXJzLGk9ZS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24gcygpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixuKX1RZS5pc0Zvcm1EYXRhKGEpJiZkZWxldGUgb1siQ29udGVudC1UeXBlIl07dmFyIHU9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGM9ZS5hdXRoLnVzZXJuYW1lfHwiIixmPWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7by5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYysiOiIrZil9dmFyIGw9bnQoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBoKCl7aWYodSl7dmFyIG49ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiB1P2F0KHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsYT17ZGF0YTppJiYidGV4dCIhPT1pJiYianNvbiIhPT1pP3UucmVzcG9uc2U6dS5yZXNwb25zZVRleHQsc3RhdHVzOnUuc3RhdHVzLHN0YXR1c1RleHQ6dS5zdGF0dXNUZXh0LGhlYWRlcnM6bixjb25maWc6ZSxyZXF1ZXN0OnV9O2V0KChmdW5jdGlvbihlKXt0KGUpLHMoKX0pLChmdW5jdGlvbihlKXtyKGUpLHMoKX0pLGEpLHU9bnVsbH19aWYodS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCkscnQobCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSx1LnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gdT91Lm9ubG9hZGVuZD1oOnUub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSYmND09PXUucmVhZHlTdGF0ZSYmKDAhPT11LnN0YXR1c3x8dS5yZXNwb25zZVVSTCYmMD09PXUucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoaCl9LHUub25hYm9ydD1mdW5jdGlvbigpe3UmJihyKGl0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbCl9LHUub25lcnJvcj1mdW5jdGlvbigpe3IoaXQoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCx1KSksdT1udWxsfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixuPWUudHJhbnNpdGlvbmFsfHxzdDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSkscihpdCh0LGUsbi5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGx9LFFlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8b3QobCkpJiZlLnhzcmZDb29raWVOYW1lP3R0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihvW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIHUmJlFlLmZvckVhY2gobywoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1hJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgb1t0XTp1LnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxRZS5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fCh1LndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxpJiYianNvbiIhPT1pJiYodS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmdS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJnUudXBsb2FkJiZ1LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYobj1mdW5jdGlvbihlKXt1JiYocighZXx8ZSYmZS50eXBlP25ldyB1dCgiY2FuY2VsZWQiKTplKSx1LmFib3J0KCksdT1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP24oKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbikpKSxhfHwoYT1udWxsKSx1LnNlbmQoYSl9KSl9LGZ0PWFlLGx0PWZ1bmN0aW9uKGUsdCl7TWUuZm9yRWFjaChlLChmdW5jdGlvbihyLG4pe24hPT10JiZuLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPXIsZGVsZXRlIGVbbl0pfSkpfSxodD1qZSxwdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGR0KGUsdCl7IWZ0LmlzVW5kZWZpbmVkKGUpJiZmdC5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgdnQsZ3Q9e3RyYW5zaXRpb25hbDpOZSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8dm9pZCAwIT09SGUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChIZSkpJiYodnQ9Y3QpLHZ0KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiBsdCh0LCJBY2NlcHQiKSxsdCh0LCJDb250ZW50LVR5cGUiKSxmdC5pc0Zvcm1EYXRhKGUpfHxmdC5pc0FycmF5QnVmZmVyKGUpfHxmdC5pc0J1ZmZlcihlKXx8ZnQuaXNTdHJlYW0oZSl8fGZ0LmlzRmlsZShlKXx8ZnQuaXNCbG9iKGUpP2U6ZnQuaXNBcnJheUJ1ZmZlclZpZXcoZSk/ZS5idWZmZXI6ZnQuaXNVUkxTZWFyY2hQYXJhbXMoZSk/KGR0KHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpmdC5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0/KGR0KHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQscil7aWYoZnQuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxmdC50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8Z3QudHJhbnNpdGlvbmFsLHI9dCYmdC5zaWxlbnRKU09OUGFyc2luZyxuPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsYT0hciYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoYXx8biYmZnQuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihhKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IGh0KGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07ZnQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7Z3QuaGVhZGVyc1tlXT17fX0pKSxmdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe2d0LmhlYWRlcnNbZV09ZnQubWVyZ2UocHQpfSkpO3ZhciBtdD1ndCx5dD1hZSxidD1tdCx3dD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX0sa3Q9YWUsUnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXN8fGJ0O3JldHVybiB5dC5mb3JFYWNoKHIsKGZ1bmN0aW9uKHIpe2U9ci5jYWxsKG4sZSx0KX0pKSxlfSxfdD13dCx4dD1tdCxTdD1aZTtmdW5jdGlvbiBFdChlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgU3QoImNhbmNlbGVkIil9dmFyIFR0PWFlLEF0PWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIFR0LmlzUGxhaW5PYmplY3QoZSkmJlR0LmlzUGxhaW5PYmplY3QodCk/VHQubWVyZ2UoZSx0KTpUdC5pc1BsYWluT2JqZWN0KHQpP1R0Lm1lcmdlKHt9LHQpOlR0LmlzQXJyYXkodCk/dC5zbGljZSgpOnR9ZnVuY3Rpb24gYShyKXtyZXR1cm4gVHQuaXNVbmRlZmluZWQodFtyXSk/VHQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4oZVtyXSx0W3JdKX1mdW5jdGlvbiBvKGUpe2lmKCFUdC5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbih2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gaShyKXtyZXR1cm4gVHQuaXNVbmRlZmluZWQodFtyXSk/VHQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4odm9pZCAwLHRbcl0pfWZ1bmN0aW9uIHMocil7cmV0dXJuIHIgaW4gdD9uKGVbcl0sdFtyXSk6ciBpbiBlP24odm9pZCAwLGVbcl0pOnZvaWQgMH12YXIgdT17dXJsOm8sbWV0aG9kOm8sZGF0YTpvLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksYWRhcHRlcjppLHJlc3BvbnNlVHlwZTppLHhzcmZDb29raWVOYW1lOmkseHNyZkhlYWRlck5hbWU6aSxvblVwbG9hZFByb2dyZXNzOmksb25Eb3dubG9hZFByb2dyZXNzOmksZGVjb21wcmVzczppLG1heENvbnRlbnRMZW5ndGg6aSxtYXhCb2R5TGVuZ3RoOmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzfTtyZXR1cm4gVHQuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD11W2VdfHxhLG49dChlKTtUdC5pc1VuZGVmaW5lZChuKSYmdCE9PXN8fChyW2VdPW4pfSkpLHJ9LEN0PSIwLjI2LjEiLER0PUN0LE90PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtPdFtlXT1mdW5jdGlvbihuKXtyZXR1cm4gcihuKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgUHQ9e307T3QudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIltBeGlvcyB2IitEdCsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixhLG8pe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobihhLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFQdFthXSYmKFB0W2FdPSEwLGNvbnNvbGUud2FybihuKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUocixhLG8pfX07dmFyIEl0PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxuKXtpZigib2JqZWN0IiE9PXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxvPWEubGVuZ3RoO28tLSA+MDspe3ZhciBpPWFbb10scz10W2ldO2lmKHMpe3ZhciB1PWVbaV0sYz12b2lkIDA9PT11fHxzKHUsaSxlKTtpZighMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIraSsiIG11c3QgYmUgIitjKX1lbHNlIGlmKCEwIT09bil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitpKX19LHZhbGlkYXRvcnM6T3R9LFV0PWFlLEx0PXNlLEh0PWZlLE10PWZ1bmN0aW9uKGUpe3JldHVybiBFdChlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9UnQuY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9a3QubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxrdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fHh0LmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBFdChlKSx0LmRhdGE9UnQuY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gX3QodCl8fChFdChlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPVJ0LmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9LGp0PUF0LE50PUl0LHF0PU50LnZhbGlkYXRvcnM7ZnVuY3Rpb24gS3QoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBIdCxyZXNwb25zZTpuZXcgSHR9fUt0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiBlPyh0PXR8fHt9KS51cmw9ZTp0PWV8fHt9LCh0PWp0KHRoaXMuZGVmYXVsdHMsdCkpLm1ldGhvZD90Lm1ldGhvZD10Lm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3QubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6dC5tZXRob2Q9ImdldCI7dmFyIHI9dC50cmFuc2l0aW9uYWw7dm9pZCAwIT09ciYmTnQuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pfSwhMSk7dmFyIG49W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJ1bldoZW4mJiExPT09ZS5ydW5XaGVuKHQpfHwoYT1hJiZlLnN5bmNocm9ub3VzLG4udW5zaGlmdChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKSl9KSk7dmFyIG8saT1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIWEpe3ZhciBzPVtNdCx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShzLG4pLHM9cy5jb25jYXQoaSksbz1Qcm9taXNlLnJlc29sdmUodCk7cy5sZW5ndGg7KW89by50aGVuKHMuc2hpZnQoKSxzLnNoaWZ0KCkpO3JldHVybiBvfWZvcih2YXIgdT10O24ubGVuZ3RoOyl7dmFyIGM9bi5zaGlmdCgpLGY9bi5zaGlmdCgpO3RyeXt1PWModSl9Y2F0Y2goZSl7ZihlKTticmVha319dHJ5e289TXQodSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7aS5sZW5ndGg7KW89by50aGVuKGkuc2hpZnQoKSxpLnNoaWZ0KCkpO3JldHVybiBvfSxLdC5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPWp0KHRoaXMuZGVmYXVsdHMsZSksTHQoZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0sVXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe0t0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoanQocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pKSxVdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe0t0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMucmVxdWVzdChqdChufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpyfSkpfX0pKTt2YXIgSnQ9S3QsQnQ9WmU7ZnVuY3Rpb24gRnQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHIuX2xpc3RlbmVycyl7dmFyIHQsbj1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKylyLl9saXN0ZW5lcnNbdF0oZSk7ci5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iuc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiBuLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUodCl9LG59LGUoKGZ1bmN0aW9uKGUpe3IucmVhc29ufHwoci5yZWFzb249bmV3IEJ0KGUpLHQoci5yZWFzb24pKX0pKX1GdC5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxGdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxGdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LEZ0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IEZ0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgV3Q9RnQsenQ9YWUsVnQ9YWUsWXQ9WSxHdD1KdCxYdD1BdDt2YXIgJHQ9ZnVuY3Rpb24gZSh0KXt2YXIgcj1uZXcgR3QodCksbj1ZdChHdC5wcm90b3R5cGUucmVxdWVzdCxyKTtyZXR1cm4gVnQuZXh0ZW5kKG4sR3QucHJvdG90eXBlLHIpLFZ0LmV4dGVuZChuLHIpLG4uY3JlYXRlPWZ1bmN0aW9uKHIpe3JldHVybiBlKFh0KHQscikpfSxufShtdCk7JHQuQXhpb3M9R3QsJHQuQ2FuY2VsPVplLCR0LkNhbmNlbFRva2VuPVd0LCR0LmlzQ2FuY2VsPXd0LCR0LlZFUlNJT049Q3QsJHQuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sJHQuc3ByZWFkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX0sJHQuaXNBeGlvc0Vycm9yPWZ1bmN0aW9uKGUpe3JldHVybiB6dC5pc09iamVjdChlKSYmITA9PT1lLmlzQXhpb3NFcnJvcn0sVi5leHBvcnRzPSR0LFYuZXhwb3J0cy5kZWZhdWx0PSR0O3ZhciBadCxRdD1WLmV4cG9ydHM7dmFyIGVyPVp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKSx0aGlzLmF0dGFjaFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiBzKGUsW3trZXk6InJlcXVlc3RIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuYXR0YWNoVG9rZW4oZSk7Y2FzZSAyOnJldHVybihudWxsPT1lP3ZvaWQgMDplLnNob3VsZEVuY29kZVRvRm9ybURhdGEpJiYocj1udWxsPT1lP3ZvaWQgMDplLmRhdGEsbj1uZXcgRm9ybURhdGEsT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5hcHBlbmQoZSxyW2VdKX0pKSxlLmRhdGE9biksWnQuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IFp0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBadC5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6WnQuaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe1p0LmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpadC5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO1p0LmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtadC5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPVF0LmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IFp0KSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gXyhlLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9UXQuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9UXQuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTtlci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyxlcj1adD1mdW5jdGlvbihlLHQsbixhKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgscz1pPDM/dDpudWxsPT09YT9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTphO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpyKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLGEpO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKG89ZVt1XSkmJihzPShpPDM/byhzKTppPjM/byh0LG4scyk6byh0LG4pKXx8cyk7cmV0dXJuIGk+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixzKSxzfShbZnVuY3Rpb24oZSl7fV0sZXIpO3ZhciB0cj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiBzKGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscjtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixudWxsIT09KHI9bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PXI/cjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCkscnI9W10sbnI9W10sYXI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksb3I9ITE7ZnVuY3Rpb24gaXIoKXtvcj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpcnJbdF09ZVt0XSxucltlLmNoYXJDb2RlQXQodCldPXQ7bnJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLG5yWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiBzcihlLHQscil7Zm9yKHZhciBuLGEsbz1bXSxpPXQ7aTxyO2krPTMpbj0oZVtpXTw8MTYpKyhlW2krMV08PDgpK2VbaSsyXSxvLnB1c2gocnJbKGE9bik+PjE4JjYzXStyclthPj4xMiY2M10rcnJbYT4+NiY2M10rcnJbNjMmYV0pO3JldHVybiBvLmpvaW4oIiIpfWZ1bmN0aW9uIHVyKGUpe3ZhciB0O29yfHxpcigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxhPSIiLG89W10saT0xNjM4MyxzPTAsdT1yLW47czx1O3MrPWkpby5wdXNoKHNyKGUscyxzK2k+dT91OnMraSkpO3JldHVybiAxPT09bj8odD1lW3ItMV0sYSs9cnJbdD4+Ml0sYSs9cnJbdDw8NCY2M10sYSs9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxhKz1yclt0Pj4xMF0sYSs9cnJbdD4+NCY2M10sYSs9cnJbdDw8MiY2M10sYSs9Ij0iKSxvLnB1c2goYSksby5qb2luKCIiKX1mdW5jdGlvbiBjcihlLHQscixuLGEpe3ZhciBvLGkscz04KmEtbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsbD1yP2EtMTowLGg9cj8tMToxLHA9ZVt0K2xdO2ZvcihsKz1oLG89cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO289MjU2Km8rZVt0K2xdLGwrPWgsZi09OCk7Zm9yKGk9byYoMTw8LWYpLTEsbz4+PS1mLGYrPW47Zj4wO2k9MjU2KmkrZVt0K2xdLGwrPWgsZi09OCk7aWYoMD09PW8pbz0xLWM7ZWxzZXtpZihvPT09dSlyZXR1cm4gaT9OYU46MS8wKihwPy0xOjEpO2krPU1hdGgucG93KDIsbiksby09Y31yZXR1cm4ocD8tMToxKSppKk1hdGgucG93KDIsby1uKX1mdW5jdGlvbiBmcihlLHQscixuLGEsbyl7dmFyIGkscyx1LGM9OCpvLWEtMSxmPSgxPDxjKS0xLGw9Zj4+MSxoPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6by0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxpPWYpOihpPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtaSkpPDEmJihpLS0sdSo9MiksKHQrPWkrbD49MT9oL3U6aCpNYXRoLnBvdygyLDEtbCkpKnU+PTImJihpKyssdS89MiksaStsPj1mPyhzPTAsaT1mKTppK2w+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLGEpLGkrPWwpOihzPXQqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsYSksaT0wKSk7YT49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKGk9aTw8YXxzLGMrPWE7Yz4wO2VbcitwXT0yNTUmaSxwKz1kLGkvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIGxyPXt9LnRvU3RyaW5nLGhyPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PWxyLmNhbGwoZSl9O2dyLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09bGUuVFlQRURfQVJSQVlfU1VQUE9SVHx8bGUuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIgcHI9ZHIoKTtmdW5jdGlvbiBkcigpe3JldHVybiBnci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiB2cihlLHQpe2lmKGRyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPWdyLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBncih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBncihlLHQscil7aWYoIShnci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgZ3IpKXJldHVybiBuZXcgZ3IoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gYnIodGhpcyxlKX1yZXR1cm4gbXIodGhpcyxlLHQscil9ZnVuY3Rpb24gbXIoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTtnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU6ZT13cihlLHQpO3JldHVybiBlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFnci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8X3IodCxyKSxhPShlPXZyKGUsbikpLndyaXRlKHQscik7YSE9PW4mJihlPWUuc2xpY2UoMCxhKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKFJyKHQpKXt2YXIgcj0wfGtyKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPXZyKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj92cihlLDApOndyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJmhyKHQuZGF0YSkpcmV0dXJuIHdyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24geXIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBicihlLHQpe2lmKHlyKHQpLGU9dnIoZSx0PDA/MDowfGtyKHQpKSwhZ3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiB3cihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfGtyKHQubGVuZ3RoKTtlPXZyKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBrcihlKXtpZihlPj1kcigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitkcigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBScihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24gX3IoZSx0KXtpZihScihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gWHIoZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiAkcihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBYcihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiB4cihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBOcih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gTHIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBNcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ganIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gVXIodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gcXIodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gU3IoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBFcihlLHQscixuLGEpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWE/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihhKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWEpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9Z3IuZnJvbSh0LG4pKSxScih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOlRyKGUsdCxyLG4sYSk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/YT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOlRyKGUsW3RdLHIsbixhKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBUcihlLHQscixuLGEpe3ZhciBvLGk9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtpPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09aT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqaSl9aWYoYSl7dmFyIGY9LTE7Zm9yKG89cjtvPHM7bysrKWlmKGMoZSxvKT09PWModCwtMT09PWY/MDpvLWYpKXtpZigtMT09PWYmJihmPW8pLG8tZisxPT09dSlyZXR1cm4gZippfWVsc2UtMSE9PWYmJihvLT1vLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksbz1yO28+PTA7by0tKXtmb3IodmFyIGw9ITAsaD0wO2g8dTtoKyspaWYoYyhlLG8raCkhPT1jKHQsaCkpe2w9ITE7YnJlYWt9aWYobClyZXR1cm4gb31yZXR1cm4tMX1mdW5jdGlvbiBBcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgYT1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5hJiYobj1hKTpuPWE7dmFyIG89dC5sZW5ndGg7aWYobyUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+by8yJiYobj1vLzIpO2Zvcih2YXIgaT0wO2k8bjsrK2kpe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqaSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGk7ZVtyK2ldPXN9cmV0dXJuIGl9ZnVuY3Rpb24gQ3IoZSx0LHIsbil7cmV0dXJuIFpyKFhyKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIERyKGUsdCxyLG4pe3JldHVybiBacihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIE9yKGUsdCxyLG4pe3JldHVybiBEcihlLHQscixuKX1mdW5jdGlvbiBQcihlLHQscixuKXtyZXR1cm4gWnIoJHIodCksZSxyLG4pfWZ1bmN0aW9uIElyKGUsdCxyLG4pe3JldHVybiBacihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGEsbz1bXSxpPTA7aTxlLmxlbmd0aCYmISgodC09Mik8MCk7KytpKW49KHI9ZS5jaGFyQ29kZUF0KGkpKT4+OCxhPXIlMjU2LG8ucHVzaChhKSxvLnB1c2gobik7cmV0dXJuIG99KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIFVyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD91cihlKTp1cihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIExyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPXQ7YTxyOyl7dmFyIG8saSxzLHUsYz1lW2FdLGY9bnVsbCxsPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStsPD1yKXN3aXRjaChsKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKG89ZVthKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZvKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzpvPWVbYSsxXSxpPWVbYSsyXSwxMjg9PSgxOTImbykmJjEyOD09KDE5MiZpKSYmKHU9KDE1JmMpPDwxMnwoNjMmbyk8PDZ8NjMmaSk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6bz1lW2ErMV0saT1lW2ErMl0scz1lW2ErM10sMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmbyk8PDEyfCg2MyZpKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxsPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksYSs9bH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9SHIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO3ZhciByPSIiLG49MDtmb3IoO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPUhyKSk7cmV0dXJuIHJ9KG4pfWdyLnBvb2xTaXplPTgxOTIsZ3IuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPWdyLnByb3RvdHlwZSxlfSxnci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbXIobnVsbCxlLHQscil9LGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihnci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLGdyLl9fcHJvdG9fXz1VaW50OEFycmF5KSxnci5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB5cih0KSx0PD0wP3ZyKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/dnIoZSx0KS5maWxsKHIsbik6dnIoZSx0KS5maWxsKHIpOnZyKGUsdCl9KG51bGwsZSx0LHIpfSxnci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gYnIobnVsbCxlKX0sZ3IuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiBicihudWxsLGUpfSxnci5pc0J1ZmZlcj1Rcixnci5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIVJyKGUpfHwhUnIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGE9MCxvPU1hdGgubWluKHIsbik7YTxvOysrYSlpZihlW2FdIT09dFthXSl7cj1lW2FdLG49dFthXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LGdyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGdyLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFocihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBnci5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPWdyLmFsbG9jVW5zYWZlKHQpLGE9MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgbz1lW3JdO2lmKCFScihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7by5jb3B5KG4sYSksYSs9by5sZW5ndGh9cmV0dXJuIG59LGdyLmJ5dGVMZW5ndGg9X3IsZ3IucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxnci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKVNyKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxnci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KVNyKHRoaXMsdCx0KzMpLFNyKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpU3IodGhpcyx0LHQrNyksU3IodGhpcyx0KzEsdCs2KSxTcih0aGlzLHQrMix0KzUpLFNyKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0xyKHRoaXMsMCxlKTp4ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGdyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1nci5jb21wYXJlKHRoaXMsZSl9LGdyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPjUwJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LGdyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWEmJihhPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49YSYmdD49cilyZXR1cm4gMDtpZihuPj1hKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBvPShhPj4+PTApLShuPj4+PTApLGk9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihvLGkpLHU9dGhpcy5zbGljZShuLGEpLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtvPXVbZl0saT1jW2ZdO2JyZWFrfXJldHVybiBvPGk/LTE6aTxvPzE6MH0sZ3IucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LGdyLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIodGhpcyxlLHQsciwhMCl9LGdyLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIEVyKHRoaXMsZSx0LHIsITEpfSxnci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgdCluPXQscj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGE9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09cnx8cj5hKSYmKHI9YSksZS5sZW5ndGg+MCYmKHI8MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgbz0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIEFyKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIENyKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBEcih0aGlzLGUsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBPcih0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIFByKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gSXIodGhpcyxlLHQscik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxvPSEwfX0sZ3IucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEhyPTQwOTY7ZnVuY3Rpb24gTXIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBqcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24gTnIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixvPXQ7bzxyOysrbylhKz1HcihlW29dKTtyZXR1cm4gYX1mdW5jdGlvbiBxcihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxhPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBhfWZ1bmN0aW9uIEtyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBKcihlLHQscixuLGEsbyl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0PmF8fHQ8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBCcihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBhPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2E8bzsrK2EpZVtyK2FdPSh0JjI1NTw8OCoobj9hOjEtYSkpPj4+OCoobj9hOjEtYSl9ZnVuY3Rpb24gRnIoZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBhPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO2E8bzsrK2EpZVtyK2FdPXQ+Pj44KihuP2E6My1hKSYyNTV9ZnVuY3Rpb24gV3IoZSx0LHIsbixhLG8pe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB6cihlLHQscixuLGEpe3JldHVybiBhfHxXcihlLDAsciw0KSxmcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBWcihlLHQscixuLGEpe3JldHVybiBhfHxXcihlLDAsciw4KSxmcihlLHQscixuLDUyLDgpLHIrOH1nci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU7ZWxzZXt2YXIgYT10LWU7cj1uZXcgZ3IoYSx2b2lkIDApO2Zvcih2YXIgbz0wO288YTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LGdyLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsbz0wOysrbzx0JiYoYSo9MjU2KTspbis9dGhpc1tlK29dKmE7cmV0dXJuIG59LGdyLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sYT0xO3Q+MCYmKGEqPTI1Nik7KW4rPXRoaXNbZSstLXRdKmE7cmV0dXJuIG59LGdyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxnci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LGdyLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sZ3IucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGdyLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxnci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsbz0wOysrbzx0JiYoYSo9MjU2KTspbis9dGhpc1tlK29dKmE7cmV0dXJuIG4+PShhKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxnci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxhPTEsbz10aGlzW2UrLS1uXTtuPjAmJihhKj0yNTYpOylvKz10aGlzW2UrLS1uXSphO3JldHVybiBvPj0oYSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sZ3IucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LGdyLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fEtyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGdyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fEtyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGdyLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sZ3IucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxnci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSxjcih0aGlzLGUsITAsMjMsNCl9LGdyLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMSwyMyw0KX0sZ3IucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDgsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMCw1Miw4KX0sZ3IucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDgsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMSw1Miw4KX0sZ3IucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8SnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLG89MDtmb3IodGhpc1t0XT0yNTUmZTsrK288ciYmKGEqPTI1Nik7KXRoaXNbdCtvXT1lL2EmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fEpyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9ci0xLG89MTtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKG8qPTI1Nik7KXRoaXNbdCthXT1lL28mMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDEsMjU1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxnci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDY1NTM1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpCcih0aGlzLGUsdCwhMCksdCsyfSxnci5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDY1NTM1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpCcih0aGlzLGUsdCwhMSksdCsyfSxnci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpGcih0aGlzLGUsdCwhMCksdCs0fSxnci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGcih0aGlzLGUsdCwhMSksdCs0fSxnci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0pyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgbz0wLGk9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihpKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9pPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxnci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0pyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgbz1yLTEsaT0xLHM9MDtmb3IodGhpc1t0K29dPTI1NSZlOy0tbz49MCYmKGkqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QrbysxXSYmKHM9MSksdGhpc1t0K29dPShlL2k+PjApLXMmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMSwxMjcsLTEyOCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sZ3IucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkJyKHRoaXMsZSx0LCEwKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpCcih0aGlzLGUsdCwhMSksdCsyfSxnci5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpGcih0aGlzLGUsdCwhMCksdCs0fSxnci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGcih0aGlzLGUsdCwhMSksdCs0fSxnci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4genIodGhpcyxlLHQsITAscil9LGdyLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB6cih0aGlzLGUsdCwhMSxyKX0sZ3IucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMCxyKX0sZ3IucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMSxyKX0sZ3IucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgYSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGE9by0xO2E+PTA7LS1hKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBpZihvPDFlM3x8IWdyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPG87KythKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK28pLHQpO3JldHVybiBvfSxnci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgYT1lLmNoYXJDb2RlQXQoMCk7YTwyNTYmJihlPWEpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhZ3IuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pfWVsc2UibnVtYmVyIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobz10O288cjsrK28pdGhpc1tvXT1lO2Vsc2V7dmFyIGk9UnIoZSk/ZTpYcihuZXcgZ3IoZSxuKS50b1N0cmluZygpKSxzPWkubGVuZ3RoO2ZvcihvPTA7bzxyLXQ7KytvKXRoaXNbbyt0XT1pW28lc119cmV0dXJuIHRoaXN9O3ZhciBZcj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBHcihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gWHIoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsYT1udWxsLG89W10saT0wO2k8bjsrK2kpe2lmKChyPWUuY2hhckNvZGVBdChpKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoaSsxPT09bil7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7by5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztvLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7by5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztvLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBvfWZ1bmN0aW9uICRyKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxvLGk7b3J8fGlyKCk7dmFyIHM9ZS5sZW5ndGg7aWYocyU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7bz0iPSI9PT1lW3MtMl0/MjoiPSI9PT1lW3MtMV0/MTowLGk9bmV3IGFyKDMqcy80LW8pLG49bz4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylhPW5yW2UuY2hhckNvZGVBdCh0KV08PDE4fG5yW2UuY2hhckNvZGVBdCh0KzEpXTw8MTJ8bnJbZS5jaGFyQ29kZUF0KHQrMildPDw2fG5yW2UuY2hhckNvZGVBdCh0KzMpXSxpW3UrK109YT4+MTYmMjU1LGlbdSsrXT1hPj44JjI1NSxpW3UrK109MjU1JmE7cmV0dXJuIDI9PT1vPyhhPW5yW2UuY2hhckNvZGVBdCh0KV08PDJ8bnJbZS5jaGFyQ29kZUF0KHQrMSldPj40LGlbdSsrXT0yNTUmYSk6MT09PW8mJihhPW5yW2UuY2hhckNvZGVBdCh0KV08PDEwfG5yW2UuY2hhckNvZGVBdCh0KzEpXTw8NHxucltlLmNoYXJDb2RlQXQodCsyKV0+PjIsaVt1KytdPWE+PjgmMjU1LGlbdSsrXT0yNTUmYSksaX0oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShZciwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gWnIoZSx0LHIsbil7Zm9yKHZhciBhPTA7YTxuJiYhKGErcj49dC5sZW5ndGh8fGE+PWUubGVuZ3RoKTsrK2EpdFthK3JdPWVbYV07cmV0dXJuIGF9ZnVuY3Rpb24gUXIoZSl7cmV0dXJuIG51bGwhPWUmJighIWUuX2lzQnVmZmVyfHxlbihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlJiZlbihlLnNsaWNlKDAsMCkpfShlKSl9ZnVuY3Rpb24gZW4oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgdG49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQnVmZmVyOmdyLElOU1BFQ1RfTUFYX0JZVEVTOjUwLFNsb3dCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLGdyLmFsbG9jKCtlKX0saXNCdWZmZXI6UXIsa01heExlbmd0aDpwcn0pLHJuPXtleHBvcnRzOnt9fSxubj17fSxhbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYW4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGFuLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgscj10JTQ7aWYoIXIpcmV0dXJuIGU7dmFyIG49dCxhPTQtcixvPXQrYSxpPWdyLmFsbG9jKG8pO2ZvcihpLndyaXRlKGUpO2EtLTspaS53cml0ZSgiPSIsbisrKTtyZXR1cm4gaS50b1N0cmluZygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobm4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvbj1hbjtmdW5jdGlvbiBzbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLGdyLmlzQnVmZmVyKGUpP2NuKGUudG9TdHJpbmcoImJhc2U2NCIpKTpjbihnci5mcm9tKGUsdCkudG9TdHJpbmcoImJhc2U2NCIpKX1mdW5jdGlvbiB1bihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksb24uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24gY24oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfXZhciBmbixsbj1zbjtsbi5lbmNvZGU9c24sbG4uZGVjb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksZ3IuZnJvbSh1bihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LGxuLnRvQmFzZTY0PXVuLGxuLmZyb21CYXNlNjQ9Y24sbG4udG9CdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20odW4oZSksImJhc2U2NCIpfSxubi5kZWZhdWx0PWxuLChmbj1ybikuZXhwb3J0cz1ubi5kZWZhdWx0LGZuLmV4cG9ydHMuZGVmYXVsdD1mbi5leHBvcnRzO3ZhciBobj1ybi5leHBvcnRzLHBuPXtleHBvcnRzOnt9fTshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQscil7dmFyIG49e307IWZ1bmN0aW9uKGUpe2UuX19lc01vZHVsZT0hMCxlLmRpZ2VzdExlbmd0aD0zMixlLmJsb2NrU2l6ZT02NDt2YXIgdD1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2Z1bmN0aW9uIHIoZSxyLG4sYSxvKXtmb3IodmFyIGkscyx1LGMsZixsLGgscCxkLHYsZyxtLHk7bz49NjQ7KXtmb3IoaT1yWzBdLHM9clsxXSx1PXJbMl0sYz1yWzNdLGY9cls0XSxsPXJbNV0saD1yWzZdLHA9cls3XSx2PTA7djwxNjt2KyspZz1hKzQqdixlW3ZdPSgyNTUmbltnXSk8PDI0fCgyNTUmbltnKzFdKTw8MTZ8KDI1NSZuW2crMl0pPDw4fDI1NSZuW2crM107Zm9yKHY9MTY7djw2NDt2KyspbT0oKGQ9ZVt2LTJdKT4+PjE3fGQ8PDE1KV4oZD4+PjE5fGQ8PDEzKV5kPj4+MTAseT0oKGQ9ZVt2LTE1XSk+Pj43fGQ8PDI1KV4oZD4+PjE4fGQ8PDE0KV5kPj4+MyxlW3ZdPShtK2Vbdi03XXwwKSsoeStlW3YtMTZdfDApO2Zvcih2PTA7djw2NDt2KyspbT0oKChmPj4+NnxmPDwyNileKGY+Pj4xMXxmPDwyMSleKGY+Pj4yNXxmPDw3KSkrKGYmbF5+ZiZoKXwwKSsocCsodFt2XStlW3ZdfDApfDApfDAseT0oKGk+Pj4yfGk8PDMwKV4oaT4+PjEzfGk8PDE5KV4oaT4+PjIyfGk8PDEwKSkrKGkmc15pJnVecyZ1KXwwLHA9aCxoPWwsbD1mLGY9YyttfDAsYz11LHU9cyxzPWksaT1tK3l8MDtyWzBdKz1pLHJbMV0rPXMsclsyXSs9dSxyWzNdKz1jLHJbNF0rPWYscls1XSs9bCxyWzZdKz1oLHJbN10rPXAsYSs9NjQsby09NjR9cmV0dXJuIGF9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5kaWdlc3RMZW5ndGg9ZS5kaWdlc3RMZW5ndGgsdGhpcy5ibG9ja1NpemU9ZS5ibG9ja1NpemUsdGhpcy5zdGF0ZT1uZXcgSW50MzJBcnJheSg4KSx0aGlzLnRlbXA9bmV3IEludDMyQXJyYXkoNjQpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDEyOCksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLnJlc2V0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVbMF09MTc3OTAzMzcwMyx0aGlzLnN0YXRlWzFdPTMxNDQxMzQyNzcsdGhpcy5zdGF0ZVsyXT0xMDEzOTA0MjQyLHRoaXMuc3RhdGVbM109Mjc3MzQ4MDc2Mix0aGlzLnN0YXRlWzRdPTEzNTk4OTMxMTksdGhpcy5zdGF0ZVs1XT0yNjAwODIyOTI0LHRoaXMuc3RhdGVbNl09NTI4NzM0NjM1LHRoaXMuc3RhdGVbN109MTU0MTQ1OTIyNSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXN9LHQucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJ1ZmZlci5sZW5ndGg7ZSsrKXRoaXMuYnVmZmVyW2VdPTA7Zm9yKGU9MDtlPHRoaXMudGVtcC5sZW5ndGg7ZSsrKXRoaXMudGVtcFtlXT0wO3RoaXMucmVzZXQoKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ZS5sZW5ndGgpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJTSEEyNTY6IGNhbid0IHVwZGF0ZSBiZWNhdXNlIGhhc2ggd2FzIGZpbmlzaGVkLiIpO3ZhciBuPTA7aWYodGhpcy5ieXRlc0hhc2hlZCs9dCx0aGlzLmJ1ZmZlckxlbmd0aD4wKXtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPDY0JiZ0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07NjQ9PT10aGlzLmJ1ZmZlckxlbmd0aCYmKHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCw2NCksdGhpcy5idWZmZXJMZW5ndGg9MCl9Zm9yKHQ+PTY0JiYobj1yKHRoaXMudGVtcCx0aGlzLnN0YXRlLGUsbix0KSx0JT02NCk7dD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmluaXNoZWQpe3ZhciB0PXRoaXMuYnl0ZXNIYXNoZWQsbj10aGlzLmJ1ZmZlckxlbmd0aCxhPXQvNTM2ODcwOTEyfDAsbz10PDwzLGk9dCU2NDw1Nj82NDoxMjg7dGhpcy5idWZmZXJbbl09MTI4O2Zvcih2YXIgcz1uKzE7czxpLTg7cysrKXRoaXMuYnVmZmVyW3NdPTA7dGhpcy5idWZmZXJbaS04XT1hPj4+MjQmMjU1LHRoaXMuYnVmZmVyW2ktN109YT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltpLTZdPWE+Pj44JjI1NSx0aGlzLmJ1ZmZlcltpLTVdPWE+Pj4wJjI1NSx0aGlzLmJ1ZmZlcltpLTRdPW8+Pj4yNCYyNTUsdGhpcy5idWZmZXJbaS0zXT1vPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2ktMl09bz4+PjgmMjU1LHRoaXMuYnVmZmVyW2ktMV09bz4+PjAmMjU1LHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCxpKSx0aGlzLmZpbmlzaGVkPSEwfWZvcihzPTA7czw4O3MrKyllWzQqcyswXT10aGlzLnN0YXRlW3NdPj4+MjQmMjU1LGVbNCpzKzFdPXRoaXMuc3RhdGVbc10+Pj4xNiYyNTUsZVs0KnMrMl09dGhpcy5zdGF0ZVtzXT4+PjgmMjU1LGVbNCpzKzNdPXRoaXMuc3RhdGVbc10+Pj4wJjI1NTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSx0LnByb3RvdHlwZS5fc2F2ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zdGF0ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5zdGF0ZVt0XX0sdC5wcm90b3R5cGUuX3Jlc3RvcmVTdGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dGhpcy5zdGF0ZS5sZW5ndGg7cisrKXRoaXMuc3RhdGVbcl09ZVtyXTt0aGlzLmJ5dGVzSGFzaGVkPXQsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmJ1ZmZlckxlbmd0aD0wfSx0fSgpO2UuSGFzaD1uO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlubmVyPW5ldyBuLHRoaXMub3V0ZXI9bmV3IG4sdGhpcy5ibG9ja1NpemU9dGhpcy5pbm5lci5ibG9ja1NpemUsdGhpcy5kaWdlc3RMZW5ndGg9dGhpcy5pbm5lci5kaWdlc3RMZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpO2lmKGUubGVuZ3RoPnRoaXMuYmxvY2tTaXplKShuZXcgbikudXBkYXRlKGUpLmZpbmlzaCh0KS5jbGVhbigpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdFtyXT1lW3JdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49NTQ7dGhpcy5pbm5lci51cGRhdGUodCk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj0xMDY7dGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPTB9cmV0dXJuIGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLmlzdGF0ZSx0aGlzLmlubmVyLmJsb2NrU2l6ZSksdGhpcy5vdXRlci5fcmVzdG9yZVN0YXRlKHRoaXMub3N0YXRlLHRoaXMub3V0ZXIuYmxvY2tTaXplKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5pc3RhdGUubGVuZ3RoO2UrKyl0aGlzLm9zdGF0ZVtlXT10aGlzLmlzdGF0ZVtlXT0wO3RoaXMuaW5uZXIuY2xlYW4oKSx0aGlzLm91dGVyLmNsZWFuKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoZSksdGhpc30sZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm91dGVyLmZpbmlzaGVkP3RoaXMub3V0ZXIuZmluaXNoKGUpOih0aGlzLmlubmVyLmZpbmlzaChlKSx0aGlzLm91dGVyLnVwZGF0ZShlLHRoaXMuZGlnZXN0TGVuZ3RoKS5maW5pc2goZSkpLHRoaXN9LGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sZX0oKTtmdW5jdGlvbiBvKGUpe3ZhciB0PShuZXcgbikudXBkYXRlKGUpLHI9dC5kaWdlc3QoKTtyZXR1cm4gdC5jbGVhbigpLHJ9ZnVuY3Rpb24gaShlLHQpe3ZhciByPW5ldyBhKGUpLnVwZGF0ZSh0KSxuPXIuZGlnZXN0KCk7cmV0dXJuIHIuY2xlYW4oKSxufWZ1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGE9blswXTtpZigwPT09YSl0aHJvdyBuZXcgRXJyb3IoImhrZGY6IGNhbm5vdCBleHBhbmQgbW9yZSIpO3QucmVzZXQoKSxhPjEmJnQudXBkYXRlKGUpLHImJnQudXBkYXRlKHIpLHQudXBkYXRlKG4pLHQuZmluaXNoKGUpLG5bMF0rK31lLkhNQUM9YSxlLmhhc2g9byxlLmRlZmF1bHQ9byxlLmhtYWM9aTt2YXIgdT1uZXcgVWludDhBcnJheShlLmRpZ2VzdExlbmd0aCk7ZnVuY3Rpb24gYyhlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBvPW5ldyBVaW50OEFycmF5KFsxXSksYz1pKHQsZSksZj1uZXcgYShjKSxsPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxoPWwubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspaD09PWwubGVuZ3RoJiYocyhsLGYscixvKSxoPTApLHBbZF09bFtoKytdO3JldHVybiBmLmNsZWFuKCksbC5maWxsKDApLG8uZmlsbCgwKSxwfWZ1bmN0aW9uIGYoZSx0LHIsbil7Zm9yKHZhciBvPW5ldyBhKGUpLGk9by5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KGkpLGM9bmV3IFVpbnQ4QXJyYXkoaSksZj1uZXcgVWludDhBcnJheShuKSxsPTA7bCppPG47bCsrKXt2YXIgaD1sKzE7c1swXT1oPj4+MjQmMjU1LHNbMV09aD4+PjE2JjI1NSxzWzJdPWg+Pj44JjI1NSxzWzNdPWg+Pj4wJjI1NSxvLnJlc2V0KCksby51cGRhdGUodCksby51cGRhdGUocyksby5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxpO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7by5yZXNldCgpLG8udXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPGk7ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPGkmJmwqaStwPG47cCsrKWZbbCppK3BdPXVbcF19Zm9yKGw9MDtsPGk7bCsrKXVbbF09Y1tsXT0wO2ZvcihsPTA7bDw0O2wrKylzW2xdPTA7cmV0dXJuIG8uY2xlYW4oKSxmfWUuaGtkZj1jLGUucGJrZGYyPWZ9KG4pO3ZhciBhPW4uZGVmYXVsdDtmb3IodmFyIG8gaW4gbilhW29dPW5bb107ZS5leHBvcnRzPWF9KCl9KHBuKTt2YXIgZG49Vyhwbi5leHBvcnRzKSx2bj1jcnlwdG8sZ249ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDcnlwdG9LZXl9LG1uPW5ldyBUZXh0RW5jb2Rlcix5bj1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gYm4oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbj10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkobiksbz0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2Euc2V0KGUsbyksbys9ZS5sZW5ndGh9KSksYX12YXIgd249ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9eW4uZGVjb2RlKHQpKSx0PXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucmVwbGFjZSgvXHMvZywiIik7dHJ5e3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9KHQpfWNhdGNoKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKX19LGtuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYTtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLG51bGw9PT0oYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl8fHZvaWQgMD09PWF8fGEuY2FsbChFcnJvcix2KG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfR0VORVJJQyJ9fV0pLHJ9KGQoRXJyb3IpKSxSbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQifX1dKSxyfShrbiksX249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfRVhQSVJFRCJ9fV0pLHJ9KGtuKSx4bj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCJ9fV0pLHJ9KGtuKSxTbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIn19XSkscn0oa24pLEVuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19JTlZBTElEIn19XSkscn0oa24pLFRuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9JTlZBTElEIn19XSkscn0oa24pLEFuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX0lOVkFMSUQifX1dKSxyfShrbiksQ249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX05PX01BVENISU5HX0tFWSIsZS5tZXNzYWdlPSJubyBhcHBsaWNhYmxlIGtleSBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19OT19NQVRDSElOR19LRVkifX1dKSxyfShrbiksRG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMiLGUubWVzc2FnZT0ibXVsdGlwbGUgbWF0Y2hpbmcga2V5cyBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIn19XSkscn0oa24pLE9uPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQifX1dKSxyfShrbik7ZnVuY3Rpb24gUG4oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgV2ViU29ja2V0UGFpcn1mdW5jdGlvbiBJbigpe3RyeXtyZXR1cm4gdm9pZCAwIT09SGUudmVyc2lvbnMubm9kZX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gVW4oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJhbGdvcml0aG0ubmFtZSI7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgIi5jb25jYXQodCwiIG11c3QgYmUgIikuY29uY2F0KGUpKX1mdW5jdGlvbiBMbihlLHQpe3JldHVybiBlLm5hbWU9PT10fWZ1bmN0aW9uIEhuKGUpe3JldHVybiBwYXJzZUludChlLm5hbWUuc2xpY2UoNCksMTApfWZ1bmN0aW9uIE1uKGUpe3N3aXRjaChlKXtjYXNlIkVTMjU2IjpyZXR1cm4iUC0yNTYiO2Nhc2UiRVMzODQiOnJldHVybiJQLTM4NCI7Y2FzZSJFUzUxMiI6cmV0dXJuIlAtNTIxIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gam4oZSx0KXtpZih0Lmxlbmd0aCYmIXQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXNhZ2VzLmluY2x1ZGVzKHQpfSkpKXt2YXIgcj0iQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyB1c2FnZXMgbXVzdCBpbmNsdWRlICI7aWYodC5sZW5ndGg+Mil7dmFyIG49dC5wb3AoKTtyKz0ib25lIG9mICIuY29uY2F0KHQuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobiwiLiIpfWVsc2UgMj09PXQubGVuZ3RoP3IrPSJvbmUgb2YgIi5jb25jYXQodFswXSwiIG9yICIpLmNvbmNhdCh0WzFdLCIuIik6cis9IiIuY29uY2F0KHRbMF0sIi4iKTt0aHJvdyBuZXcgVHlwZUVycm9yKHIpfX12YXIgTm49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJLZXkgbXVzdCBiZSAiLG49YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShuPjE/bi0xOjApLG89MTtvPG47bysrKWFbby0xXT1hcmd1bWVudHNbb107aWYoYS5sZW5ndGg+Mil7dmFyIGk9YS5wb3AoKTt0Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYS5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChpLCIuIil9ZWxzZSAyPT09YS5sZW5ndGg/dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGFbMF0sIiBvciAiKS5jb25jYXQoYVsxXSwiLiIpOnQrPSJvZiB0eXBlICIuY29uY2F0KGFbMF0sIi4iKTtyZXR1cm4gbnVsbD09ZT90Kz0iIFJlY2VpdmVkICIuY29uY2F0KGUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWU/dCs9IiBSZWNlaXZlZCBmdW5jdGlvbiAiLmNvbmNhdChlLm5hbWUpOiJvYmplY3QiPT09cihlKSYmbnVsbCE9ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lJiYodCs9IiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAiLmNvbmNhdChlLmNvbnN0cnVjdG9yLm5hbWUpKSx0fSxxbj1mdW5jdGlvbihlKXtyZXR1cm4gZ24oZSl9LEtuPVsiQ3J5cHRvS2V5Il0sSm49ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixhPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1hLmxlbmd0aHx8MT09PWEubGVuZ3RoKXJldHVybiEwO3ZhciBvLGk9UihhKTt0cnl7Zm9yKGkucygpOyEobz1pLm4oKSkuZG9uZTspe3ZhciBzPW8udmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKWZvcih2YXIgYz0wLGY9dTtjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtpZihuLmhhcyhsKSlyZXR1cm4hMTtuLmFkZChsKX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuITB9O2Z1bmN0aW9uIEJuKGUpe2lmKCJvYmplY3QiIT09cih0PWUpfHxudWxsPT09dHx8IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ7aWYobnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMDtmb3IodmFyIG49ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pOyluPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bn12YXIgRm49ZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIHI9dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIHJ8fHI8MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19O2Z1bmN0aW9uIFduKGUpe3ZhciB0LHI7c3dpdGNoKGUua3R5KXtjYXNlIm9jdCI6c3dpdGNoKGUuYWxnKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjp0PXtuYW1lOiJITUFDIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgU24oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSU0EtT0FFUCI6Y2FzZSJSU0EtT0FFUC0yNTYiOmNhc2UiUlNBLU9BRVAtMzg0IjpjYXNlIlJTQS1PQUVQLTUxMiI6dD17bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0iLmNvbmNhdChwYXJzZUludChlLmFsZy5zbGljZSgtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzM4NCI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTNTEyIjp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC01MjEifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UoUG4oKXx8SW4oKSkmJiJPS1AiOmlmKCJFZERTQSIhPT1lLmFsZyl0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpO3N3aXRjaChlLmNydil7Y2FzZSJFZDI1NTE5Ijp0PXtuYW1lOiJOT0RFLUVEMjU1MTkiLG5hbWVkQ3VydmU6Ik5PREUtRUQyNTUxOSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSBJbigpJiYiRWQ0NDgiOnQ9e25hbWU6Ik5PREUtRUQ0NDgiLG5hbWVkQ3VydmU6Ik5PREUtRUQ0NDgifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiY3J2IiAoU3VidHlwZSBvZiBLZXkgUGFpcikgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX12YXIgem49ZnVuY3Rpb24oKXt2YXIgZT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIpe3ZhciBuLGEsbyxpLHMsdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGk9V24ocikscz1pLmFsZ29yaXRobSx1PWkua2V5VXNhZ2VzLGM9W3MsbnVsbCE9PShhPXIuZXh0KSYmdm9pZCAwIT09YSYmYSxudWxsIT09KG89ci5rZXlfb3BzKSYmdm9pZCAwIT09bz9vOnVdLCJQQktERjIiIT09cy5uYW1lKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKGY9dm4uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkoZixbInJhdyIsd24oci5rKV0uY29uY2F0KGMpKSk7Y2FzZSA0OnJldHVybiBkZWxldGUobD10KHt9LHIpKS5hbGcsZS5hYnJ1cHQoInJldHVybiIsKG49dm4uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkobixbImp3ayIsbF0uY29uY2F0KGMpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIFZuKGUsdCxyKXtyZXR1cm4gWW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFluKCl7cmV0dXJuKFluPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoQm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihufHwobj1yLmFsZyksInN0cmluZyI9PXR5cGVvZiBuJiZuKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNTplLnQwPXIua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/ODoiUlNBIj09PWUudDA/MTQ6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xNjoxNzticmVhaztjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiByLmsmJnIuayl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgImsiIChLZXkgVmFsdWUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTA6aWYobnVsbCE9YXx8KGE9ITAhPT1yLmV4dCksIWEpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsem4odCh0KHt9LHIpLHt9LHthbGc6bixleHQ6ITF9KSkpO2Nhc2UgMTM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHduKHIuaykpO2Nhc2UgMTQ6aWYodm9pZCAwPT09ci5vdGgpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgU24oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCcpO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHpuKHQodCh7fSxyKSx7fSx7YWxnOm59KSkpO2Nhc2UgMTc6dGhyb3cgbmV3IFNuKCdVbnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgR249ZnVuY3Rpb24oZSx0LHIpe2Uuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fC9eQVxkezN9KD86R0NNKT9LVyQvLnRlc3QoZSk/ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2lmKCFxbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoS24pLFsiVWludDhBcnJheSJdKSkpO2lmKCJzZWNyZXQiIT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpfX0odCk6ZnVuY3Rpb24oZSx0KXtpZighcW4oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKEtuKSkpKTtpZigic2VjcmV0Ij09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpO2lmKCJzaWduIj09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gc2lnbmluZyBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKCJkZWNyeXB0Ij09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZGVjcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKGUuYWxnb3JpdGhtJiYidmVyaWZ5Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHZlcmlmeWluZyBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSk7aWYoZS5hbGdvcml0aG0mJiJlbmNyeXB0Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGVuY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpfSh0LHIpfTtmdW5jdGlvbiBYbihlLHQscixuLGEpe2lmKHZvaWQgMCE9PWEuY3JpdCYmdm9pZCAwPT09bi5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFufHx2b2lkIDA9PT1uLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkobi5jcml0KXx8MD09PW4uY3JpdC5sZW5ndGh8fG4uY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBvO289dm9pZCAwIT09cj9uZXcgTWFwKFtdLmNvbmNhdChiKE9iamVjdC5lbnRyaWVzKHIpKSxiKHQuZW50cmllcygpKSkpOnQ7dmFyIGkscz1SKG4uY3JpdCk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KXt2YXIgdT1pLnZhbHVlO2lmKCFvLmhhcyh1KSl0aHJvdyBuZXcgU24oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG5vdCByZWNvZ25pemVkJykpO2lmKHZvaWQgMD09PWFbdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG1pc3NpbmcnKSk7aWYoby5nZXQodSkmJnZvaWQgMD09PW5bdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG5ldyBTZXQobi5jcml0KX12YXIgJG49ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9O2Z1bmN0aW9uIFpuKGUsdCl7dmFyIHI9IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSk7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDplLnNsaWNlKC0zKT4+M307Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6dC5uYW1lZEN1cnZlfTtjYXNlKFBuKCl8fEluKCkpJiYiRWREU0EiOnZhciBuPXQubmFtZWRDdXJ2ZTtyZXR1cm57bmFtZTpuLG5hbWVkQ3VydmU6bn07ZGVmYXVsdDp0aHJvdyBuZXcgU24oImFsZyAiLmNvbmNhdChlLCIgaXMgbm90IHN1cHBvcnRlZCBlaXRoZXIgYnkgSk9TRSBvciB5b3VyIGphdmFzY3JpcHQgcnVudGltZSIpKX19ZnVuY3Rpb24gUW4oZSx0LHIpe2lmKGduKHQpKXJldHVybiBmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIkhNQUMiKSl0aHJvdyBVbigiSE1BQyIpO3ZhciByPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09cil0aHJvdyBVbigiU0hBLSIuY29uY2F0KHIpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiUlNBU1NBLVBLQ1MxLXYxXzUiKSl0aHJvdyBVbigiUlNBU1NBLVBLQ1MxLXYxXzUiKTt2YXIgbj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihIbihlLmFsZ29yaXRobS5oYXNoKSE9PW4pdGhyb3cgVW4oIlNIQS0iLmNvbmNhdChuKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIlJTQS1QU1MiKSl0aHJvdyBVbigiUlNBLVBTUyIpO3ZhciBhPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09YSl0aHJvdyBVbigiU0hBLSIuY29uY2F0KGEpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UgSW4oKSYmIkVkRFNBIjppZigiTk9ERS1FRDI1NTE5IiE9PWUuYWxnb3JpdGhtLm5hbWUmJiJOT0RFLUVENDQ4IiE9PWUuYWxnb3JpdGhtLm5hbWUpdGhyb3cgVW4oIk5PREUtRUQyNTUxOSBvciBOT0RFLUVENDQ4Iik7YnJlYWs7Y2FzZSBQbigpJiYiRWREU0EiOmlmKCFMbihlLmFsZ29yaXRobSwiTk9ERS1FRDI1NTE5IikpdGhyb3cgVW4oIk5PREUtRUQyNTUxOSIpO2JyZWFrO2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiRUNEU0EiKSl0aHJvdyBVbigiRUNEU0EiKTt2YXIgbz1Nbih0KTtpZihlLmFsZ29yaXRobS5uYW1lZEN1cnZlIT09byl0aHJvdyBVbihvLCJhbGdvcml0aG0ubmFtZWRDdXJ2ZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iKX1mb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheShpPjI/aS0yOjApLHU9Mjt1PGk7dSsrKXNbdS0yXT1hcmd1bWVudHNbdV07am4oZSxzKX0odCxlLHIpLHQ7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2lmKCFlLnN0YXJ0c1dpdGgoIkhTIikpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKEtuKSkpKTtyZXR1cm4gdm4uc3VidGxlLmltcG9ydEtleSgicmF3Iix0LHtoYXNoOiJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpLG5hbWU6IkhNQUMifSwhMSxbcl0pfXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihLbiksWyJVaW50OEFycmF5Il0pKSl9dmFyIGVhPWZ1bmN0aW9uKCl7dmFyIGU9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LHIsbixhKXt2YXIgbyxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLFFuKHQsciwidmVyaWZ5Iik7Y2FzZSAyOnJldHVybiBvPWUuc2VudCxGbih0LG8pLGk9Wm4odCxvLmFsZ29yaXRobSksZS5wcmV2PTUsZS5uZXh0PTgsdm4uc3VidGxlLnZlcmlmeShpLG8sbixhKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAxMTpyZXR1cm4gZS5wcmV2PTExLGUudDA9ZS5jYXRjaCg1KSxlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzUsMTFdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIHRhKGUsdCxyKXtyZXR1cm4gcmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJhKCl7cmV0dXJuIHJhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBvLGkscyx1LGMsZixsLGgscCxkLHYsZyxtO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoQm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBFbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT1yLnByb3RlY3RlZHx8dm9pZCAwIT09ci5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBFbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PXIucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIHIucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgRW4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PXIucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygci5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgRW4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09ci5oZWFkZXJ8fEJuKHIuaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYoaT17fSwhci5wcm90ZWN0ZWQpe2UubmV4dD0yMjticmVha31zPXduKHIucHJvdGVjdGVkKSxlLnByZXY9MTUsaT1KU09OLnBhcnNlKHluLmRlY29kZShzKSksZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMTk6dGhyb3cgZS5wcmV2PTE5LGUudDA9ZS5jYXRjaCgxNSksbmV3IEVuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpcyBpbnZhbGlkIik7Y2FzZSAyMjppZihKbihpLHIuaGVhZGVyKSl7ZS5uZXh0PTI0O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFByb3RlY3RlZCBhbmQgSldTIFVucHJvdGVjdGVkIEhlYWRlciBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBkaXNqb2ludCIpO2Nhc2UgMjQ6aWYodT10KHQoe30saSksci5oZWFkZXIpLGM9WG4oRW4sbmV3IE1hcChbWyJiNjQiLCEwXV0pLG51bGw9PWE/dm9pZCAwOmEuY3JpdCxpLHUpLGY9ITAsIWMuaGFzKCJiNjQiKSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJib29sZWFuIj09dHlwZW9mKGY9aS5iNjQpKXtlLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEVuKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMzE6aWYoInN0cmluZyI9PXR5cGVvZihsPXUuYWxnKSYmbCl7ZS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBFbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAzNDppZighKGg9YSYmJG4oImFsZ29yaXRobXMiLGEuYWxnb3JpdGhtcykpfHxoLmhhcyhsKSl7ZS5uZXh0PTM3O2JyZWFrfXRocm93IG5ldyB4bignImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBub3QgYWxsb3dlZCcpO2Nhc2UgMzc6aWYoIWYpe2UubmV4dD00MjticmVha31pZigic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZCl7ZS5uZXh0PTQwO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyIpO2Nhc2UgNDA6ZS5uZXh0PTQ0O2JyZWFrO2Nhc2UgNDI6aWYoInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWR8fHIucGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2UubmV4dD00NDticmVha310aHJvdyBuZXcgRW4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gVWludDhBcnJheSBpbnN0YW5jZSIpO2Nhc2UgNDQ6aWYocD0hMSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTUwO2JyZWFrfXJldHVybiBlLm5leHQ9NDgsbihpLHIpO2Nhc2UgNDg6bj1lLnNlbnQscD0hMDtjYXNlIDUwOnJldHVybiBHbihsLG4sInZlcmlmeSIpLGQ9Ym4obW4uZW5jb2RlKG51bGwhPT0obz1yLnByb3RlY3RlZCkmJnZvaWQgMCE9PW8/bzoiIiksbW4uZW5jb2RlKCIuIiksInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQ/bW4uZW5jb2RlKHIucGF5bG9hZCk6ci5wYXlsb2FkKSx2PXduKHIuc2lnbmF0dXJlKSxlLm5leHQ9NTUsZWEobCxuLHYsZCk7Y2FzZSA1NTppZihlLnNlbnQpe2UubmV4dD01ODticmVha310aHJvdyBuZXcgT247Y2FzZSA1ODppZihnPWY/d24oci5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZD9tbi5lbmNvZGUoci5wYXlsb2FkKTpyLnBheWxvYWQsbT17cGF5bG9hZDpnfSx2b2lkIDAhPT1yLnByb3RlY3RlZCYmKG0ucHJvdGVjdGVkSGVhZGVyPWkpLHZvaWQgMCE9PXIuaGVhZGVyJiYobS51bnByb3RlY3RlZEhlYWRlcj1yLmhlYWRlciksIXApe2UubmV4dD02NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LG0pLHt9LHtrZXk6bn0pKTtjYXNlIDY0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixtKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMTUsMTldXSl9KSkpLHJhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBuYShlLHQscil7cmV0dXJuIGFhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhYSgpe3JldHVybihhYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdSxjLGY7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyIGluc3RhbmNlb2YgVWludDhBcnJheSYmKHI9eW4uZGVjb2RlKHIpKSwic3RyaW5nIj09dHlwZW9mIHIpe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBFbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAzOmlmKG89ci5zcGxpdCgiLiIpLGk9b1swXSxzPW9bMV0sdT1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IEVuKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCx0YSh7cGF5bG9hZDpzLHByb3RlY3RlZDppLHNpZ25hdHVyZTp1fSxuLGEpO2Nhc2UgODppZihjPWUuc2VudCxmPXtwYXlsb2FkOmMucGF5bG9hZCxwcm90ZWN0ZWRIZWFkZXI6Yy5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxmKSx7fSx7a2V5OmMua2V5fSkpO2Nhc2UgMTI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGYpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgb2E9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5nZXRUaW1lKCkvMWUzKX0saWE9ODY0MDAsc2E9L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksdWE9ZnVuY3Rpb24oZSl7dmFyIHQ9c2EuZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKHIqaWEpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LGNhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sZmE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC5pbmNsdWRlcyhlKTohIUFycmF5LmlzQXJyYXkoZSkmJnQuc29tZShTZXQucHJvdG90eXBlLmhhcy5iaW5kKG5ldyBTZXQoZSkpKX0sbGE9ZnVuY3Rpb24oZSx0KXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxvPWEudHlwO2lmKG8mJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHxjYShlLnR5cCkhPT1jYShvKSkpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7bj1KU09OLnBhcnNlKHluLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCFCbihuKSl0aHJvdyBuZXcgVG4oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgaT1hLmlzc3VlcjtpZihpJiYhKEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmluY2x1ZGVzKG4uaXNzKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgImlzcyIgY2xhaW0gdmFsdWUnLCJpc3MiLCJjaGVja19mYWlsZWQiKTt2YXIgcz1hLnN1YmplY3Q7aWYocyYmbi5zdWIhPT1zKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAic3ViIiBjbGFpbSB2YWx1ZScsInN1YiIsImNoZWNrX2ZhaWxlZCIpO3ZhciB1LGM9YS5hdWRpZW5jZTtpZihjJiYhZmEobi5hdWQsInN0cmluZyI9PXR5cGVvZiBjP1tjXTpjKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gocihhLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOnU9dWEoYS5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOnU9YS5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6dT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBmPWEuY3VycmVudERhdGUsbD1vYShmfHxuZXcgRGF0ZSk7aWYoKHZvaWQgMCE9PW4uaWF0fHxhLm1heFRva2VuQWdlKSYmIm51bWJlciIhPXR5cGVvZiBuLmlhdCl0aHJvdyBuZXcgUm4oJyJpYXQiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJpYXQiLCJpbnZhbGlkIik7aWYodm9pZCAwIT09bi5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5uYmYpdGhyb3cgbmV3IFJuKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKG4ubmJmPmwrdSl0aHJvdyBuZXcgUm4oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1uLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiBuLmV4cCl0aHJvdyBuZXcgUm4oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYobi5leHA8PWwtdSl0aHJvdyBuZXcgX24oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihhLm1heFRva2VuQWdlKXt2YXIgaD1sLW4uaWF0LHA9Im51bWJlciI9PXR5cGVvZiBhLm1heFRva2VuQWdlP2EubWF4VG9rZW5BZ2U6dWEoYS5tYXhUb2tlbkFnZSk7aWYoaC11PnApdGhyb3cgbmV3IF9uKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkICh0b28gZmFyIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpO2lmKGg8MC11KXRocm93IG5ldyBSbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfXJldHVybiBufTtmdW5jdGlvbiBoYSgpe3JldHVybihoYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixuYShyLG4sYSk7Y2FzZSAyOmlmKGk9ZS5zZW50LCEobnVsbD09PShvPWkucHJvdGVjdGVkSGVhZGVyLmNyaXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKCJiNjQiKSl8fCExIT09aS5wcm90ZWN0ZWRIZWFkZXIuYjY0KXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVG4oIkpXVHMgTVVTVCBOT1QgdXNlIHVuZW5jb2RlZCBwYXlsb2FkIik7Y2FzZSA1OmlmKHM9bGEoaS5wcm90ZWN0ZWRIZWFkZXIsaS5wYXlsb2FkLGEpLHU9e3BheWxvYWQ6cyxwcm90ZWN0ZWRIZWFkZXI6aS5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LHUpLHt9LHtrZXk6aS5rZXl9KSk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1KTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcGEoZSl7c3dpdGNoKCJzdHJpbmciPT10eXBlb2YgZSYmZS5zbGljZSgwLDIpKXtjYXNlIlJTIjpjYXNlIlBTIjpyZXR1cm4iUlNBIjtjYXNlIkVTIjpyZXR1cm4iRUMiO2Nhc2UiRWQiOnJldHVybiJPS1AiO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdVbnN1cHBvcnRlZCAiYWxnIiB2YWx1ZSBmb3IgYSBKU09OIFdlYiBLZXkgU2V0Jyl9fWZ1bmN0aW9uIGRhKGUpe3JldHVybiBCbihlKX12YXIgdmE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKG8odGhpcyxlKSx0aGlzLl9jYWNoZWQ9bmV3IFdlYWtNYXAsIWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PXIoZSkmJkFycmF5LmlzQXJyYXkoZS5rZXlzKSYmZS5rZXlzLmV2ZXJ5KGRhKX0odCkpdGhyb3cgbmV3IEFuKCJKU09OIFdlYiBLZXkgU2V0IG1hbGZvcm1lZCIpO3ZhciBuO3RoaXMuX2p3a3M9KG49dCwiZnVuY3Rpb24iPT10eXBlb2Ygc3RydWN0dXJlZENsb25lP3N0cnVjdHVyZWRDbG9uZShuKTpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG4pKSl9dmFyIG47cmV0dXJuIHMoZSxbe2tleToiZ2V0S2V5Iix2YWx1ZToobj1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbil7dmFyIGEsbyxpLHMsdSxjLGYsbCxoO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYT10KHQoe30sciksbi5oZWFkZXIpLG89YS5hbGcsaT1hLmtpZCxzPXBhKG8pLHU9dGhpcy5fandrcy5rZXlzLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9cz09PWUua3R5O2lmKHQmJiJzdHJpbmciPT10eXBlb2YgaSYmKHQ9aT09PWUua2lkKSx0JiYic3RyaW5nIj09dHlwZW9mIGUuYWxnJiYodD1vPT09ZS5hbGcpLHQmJiJzdHJpbmciPT10eXBlb2YgZS51c2UmJih0PSJzaWciPT09ZS51c2UpLHQmJkFycmF5LmlzQXJyYXkoZS5rZXlfb3BzKSYmKHQ9ZS5rZXlfb3BzLmluY2x1ZGVzKCJ2ZXJpZnkiKSksdCYmIkVkRFNBIj09PW8mJih0PSJFZDI1NTE5Ij09PWUuY3J2fHwiRWQ0NDgiPT09ZS5jcnYpLHQpc3dpdGNoKG8pe2Nhc2UiRVMyNTYiOnQ9IlAtMjU2Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVMyNTZLIjp0PSJzZWNwMjU2azEiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzM4NCI6dD0iUC0zODQiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzUxMiI6dD0iUC01MjEiPT09ZS5jcnZ9cmV0dXJuIHR9KSksYz11WzBdLDAhPT0oZj11Lmxlbmd0aCkpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBDbjtjYXNlIDg6aWYoMT09PWYpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgRG47Y2FzZSAxMDppZih2b2lkIDAhPT0obD10aGlzLl9jYWNoZWQuZ2V0KGMpfHx0aGlzLl9jYWNoZWQuc2V0KGMse30pLmdldChjKSlbb10pe2UubmV4dD0xODticmVha31yZXR1cm4gZS5uZXh0PTE0LFZuKHQodCh7fSxjKSx7fSx7ZXh0OiEwfSksbyk7Y2FzZSAxNDppZighKChoPWUuc2VudClpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJwdWJsaWMiIT09aC50eXBlKSl7ZS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBBbigiSlNPTiBXZWIgS2V5IFNldCBtZW1iZXJzIG11c3QgYmUgcHVibGljIGtleXMiKTtjYXNlIDE3Omxbb109aDtjYXNlIDE4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixsW29dKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxlfSgpO3ZhciBnYT17ZXhwb3J0czp7fX0sbWE9e2V4cG9ydHM6e319LHlhPXoodG4pOwovKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi8KIWZ1bmN0aW9uKGUsdCl7dmFyIHI9eWEsbj1yLkJ1ZmZlcjtmdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfWZ1bmN0aW9uIG8oZSx0LHIpe3JldHVybiBuKGUsdCxyKX1uLmZyb20mJm4uYWxsb2MmJm4uYWxsb2NVbnNhZmUmJm4uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihhKHIsdCksdC5CdWZmZXI9byksby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksYShuLG8pLG8uZnJvbT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIG4oZSx0LHIpfSxvLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBhPW4oZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiByP2EuZmlsbCh0LHIpOmEuZmlsbCh0KTphLmZpbGwoMCksYX0sby5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUpfSxvLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fShtYSxtYS5leHBvcnRzKTt2YXIgYmE9NjU1MzYsd2E9NDI5NDk2NzI5NTt2YXIga2E9bWEuZXhwb3J0cy5CdWZmZXIsUmE9Ri5jcnlwdG98fEYubXNDcnlwdG87UmEmJlJhLmdldFJhbmRvbVZhbHVlcz9nYS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZT53YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciByPWthLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmJhKWZvcih2YXIgbj0wO248ZTtuKz1iYSlSYS5nZXRSYW5kb21WYWx1ZXMoci5zbGljZShuLG4rYmEpKTtlbHNlIFJhLmdldFJhbmRvbVZhbHVlcyhyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gSGUubmV4dFRpY2soKGZ1bmN0aW9uKCl7dChudWxsLHIpfSkpO3JldHVybiByfTpnYS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfTt2YXIgX2EseGE9Z2EuZXhwb3J0cyxTYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxbe2tleToiYmFzZTY0VVJMRW5jb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gaG4uZW5jb2RlKGUpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX19LHtrZXk6ImJhc2U2NFVSTERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGhuLmRlY29kZShlKS50b1N0cmluZygpfX0se2tleToiaGFzaFNoYTI1NiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20oZG4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSl9fSx7a2V5OiJnZW5lcmF0ZVJhbmRvbUJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geGEoZSl9fSx7a2V5OiJ2ZXJpZnlKd3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSwocz17a2V5czpbdF19LHZhLnByb3RvdHlwZS5nZXRLZXkuYmluZChuZXcgdmEocykpKSx7YWxnb3JpdGhtczpyLGF1ZGllbmNlOm4sY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6YSxzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpO3ZhciBzfX1dKSxlfSgpLEVhPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saSxzLHUsYyxmLGwsaCxwLGQsdixnLG0seSx3LGsseCxTLEUsVCxBLEMsTyxQLEksVSxMLEgsTTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyB0cixuPW5ldyBTYSxhPW5ldyBOKHIsbiksdC5uZXh0PTUsYS5pbml0aWFsaXplKGUpO2Nhc2UgNTppZihvPW5ldyBKKGEpLGk9YS5nZXREYXRhTGF5ZXIoKSxzPWVyLmdldEluc3RhbmNlKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxhLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09cz92b2lkIDA6cy5pbml0LCF0LnQwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQubmV4dD0xMyxzLmluaXQoITAsdSk7Y2FzZSAxMzpyZXR1cm4gYz1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0sZj1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGw9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0saD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9ITEsYz0wLHIudDA9W10sci50MT1iLHIubmV4dD02LGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTEwO2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDEwOmlmKCFyLnQzKXtyLm5leHQ9MTQ7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTE1O2JyZWFrO2Nhc2UgMTQ6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE1OmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0xOTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAxOTppZighci50Mil7ci5uZXh0PTIzO2JyZWFrfXIudDc9YSxyLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzpyLnQ3PVtdO2Nhc2UgMjQ6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZj1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAyODppZighKGM8Zi5sZW5ndGgpKXtyLm5leHQ9MzY7YnJlYWt9aWYoIShsPWZbY10pfHwhKG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aChsKSkpe3IubmV4dD0zMzticmVha31yZXR1cm4gdT0hMCxyLmFicnVwdCgiYnJlYWsiLDM2KTtjYXNlIDMzOmMrKyxyLm5leHQ9Mjg7YnJlYWs7Y2FzZSAzNjppZighdSl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc3RhdHVzKSYmKG51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpKXtyLm5leHQ9MTI7YnJlYWt9cmV0dXJuIHIucHJldj0xLHIubmV4dD00LFMoKTtjYXNlIDQ6aT1yLnNlbnQsci5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyByLnByZXY9NyxyLnQwPXIuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUi1TRTAxIixudWxsIT09KGE9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWE/YToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obz1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bz9vOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxMDppZighaSl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDEyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBEKCJTUEEtV09SS0VSX0NPUkUtSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSxwPWZ1bmN0aW9uKHQpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvLHUsYyxmLGwsaCxwLGQsdixnO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dT0hMCxjPVIodCksci5wcmV2PTIsYy5zKCk7Y2FzZSA0OmlmKChmPWMubigpKS5kb25lKXtyLm5leHQ9NDc7YnJlYWt9cmV0dXJuIGw9Zi52YWx1ZSxoPSExLHA9MCxyLnQwPVtdLHIudDE9YixyLm5leHQ9MTIsaS5nZXRDb25maWdEYXRhKCk7Y2FzZSAxMjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTE2O2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDE2OmlmKCFyLnQzKXtyLm5leHQ9MjA7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTIxO2JyZWFrO2Nhc2UgMjA6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDIxOmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0yNTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAyNTppZighci50Mil7ci5uZXh0PTI5O2JyZWFrfXIudDc9YSxyLm5leHQ9MzA7YnJlYWs7Y2FzZSAyOTpyLnQ3PVtdO2Nhc2UgMzA6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZD1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAzNDppZighKHA8ZC5sZW5ndGgpKXtyLm5leHQ9NDI7YnJlYWt9aWYoISh2PWRbcF0pfHwhKG51bGw9PT0obz1sLnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aCh2KSkpe3IubmV4dD0zOTticmVha31yZXR1cm4gaD0hMCxyLmFicnVwdCgiYnJlYWsiLDQyKTtjYXNlIDM5OnArKyxyLm5leHQ9MzQ7YnJlYWs7Y2FzZSA0MjppZihoKXtyLm5leHQ9NDU7YnJlYWt9cmV0dXJuIHU9ITEsci5hYnJ1cHQoImJyZWFrIiw0Nyk7Y2FzZSA0NTpyLm5leHQ9NDticmVhaztjYXNlIDQ3OnIubmV4dD01MjticmVhaztjYXNlIDQ5OnIucHJldj00OSxyLnQxMT1yLmNhdGNoKDIpLGMuZShyLnQxMSk7Y2FzZSA1MjpyZXR1cm4gci5wcmV2PTUyLGMuZigpLHIuZmluaXNoKDUyKTtjYXNlIDU1OmlmKGc9W10sIXUpe3IubmV4dD02MTticmVha31yZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXtnLnB1c2gocy5yZXF1ZXN0KGUpKX0pKSxyLmFicnVwdCgicmV0dXJuIiwobnVsbD09cz92b2lkIDA6cy5hbGwpJiZzLmFsbChnKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMpKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuIHQucHJldj0xLHQubmV4dD00LFMoKTtjYXNlIDQ6bz10LnNlbnQsdC5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyB0LnByZXY9Nyx0LnQwPXQuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUkEtU0UwMSIsbnVsbCE9PShuPW51bGw9PT10LnQwfHx2b2lkIDA9PT10LnQwP3ZvaWQgMDp0LnQwLm5hbWUpJiZ2b2lkIDAhPT1uP246IlJlZnJlc2ggdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT09KGE9bnVsbD09PXQudDB8fHZvaWQgMD09PXQudDA/dm9pZCAwOnQudDAubWVzc2FnZSkmJnZvaWQgMCE9PWE/YToiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmb2xsb3dpbmcgYSA0MDEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLiIpO2Nhc2UgMTA6aWYoIW8pe3QubmV4dD0xMjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIscy5hbGwmJnMuYWxsKGcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxLDddXSl9KSkpfSkpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgRCgiU1BBLVdPUktFUl9DT1JFLUhSQS1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNjI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLG51bGwsW1syLDQ5LDUyLDU1XV0pfSkpKX0sZD1mdW5jdGlvbigpe3MuZW5hYmxlSGFuZGxlciYmcy5lbmFibGVIYW5kbGVyKCl9LHY9ZnVuY3Rpb24oKXtzLmRpc2FibGVIYW5kbGVyJiZzLmRpc2FibGVIYW5kbGVyKCl9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPW5ldyBVUkwoZSksbz1udWxsIT09KHI9bi5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpKSYmdm9pZCAwIT09cj9yOiIiLHQubmV4dD00LGEuZ2V0UEtDRUNvZGUobyk7Y2FzZSA0OnJldHVybiBpPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDplLHBrY2U6aX0pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LG09ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0seT1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcygpe3ZhciB1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocyl7Zm9yKDs7KXN3aXRjaChzLnByZXY9cy5uZXh0KXtjYXNlIDA6cmV0dXJuIHMubmV4dD0yLGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjppZih1PXMuc2VudCwhcnx8IXUuZW5hYmxlUEtDRSl7cy5uZXh0PTY7YnJlYWt9cmV0dXJuIHMubmV4dD02LGEuc2V0UEtDRUNvZGUocixudWxsIT1uP246IiIpO2Nhc2UgNjppZighZSl7cy5uZXh0PTg7YnJlYWt9cmV0dXJuIHMuYWJydXB0KCJyZXR1cm4iLGEucmVxdWVzdEFjY2Vzc1Rva2VuKGUsbnVsbCE9dD90OiIiLG51bGwhPW4/bjoiJyIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGEuZ2V0QmFzaWNVc2VySW5mbygpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgODpyZXR1cm4gcy5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQVQxLU5GMDEiLCJObyBhdXRob3JpemF0aW9uIGNvZGUuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlIHdhcyBmb3VuZC4iKSkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHMuc3RvcCgpfX0pLHMpfSkpKX0sdz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxhLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxrPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixhLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixzLHUsYyxmLGwsaDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHU9ITAsYz0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe3QubmV4dD0zOTticmVha31yZXR1cm4gdT0hMSxmPTAsdC50MD1bXSx0LnQxPWIsdC5uZXh0PTksaS5nZXRDb25maWdEYXRhKCk7Y2FzZSA5OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTM7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTM6aWYoIXQudDMpe3QubmV4dD0xNzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMTg6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTIyO2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDIyOmlmKCF0LnQyKXt0Lm5leHQ9MjY7YnJlYWt9dC50Nz1uLHQubmV4dD0yNzticmVhaztjYXNlIDI2OnQudDc9W107Y2FzZSAyNzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bZS5iYXNlVXJsXSxsPXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDMxOmlmKCEoZjxsLmxlbmd0aCkpe3QubmV4dD0zOTticmVha31pZighKGg9bFtmXSl8fCEobnVsbD09PShzPWUudG9rZW5FbmRwb2ludCl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhcnRzV2l0aChoKSkpe3QubmV4dD0zNjticmVha31yZXR1cm4gYz0hMCx0LmFicnVwdCgiYnJlYWsiLDM5KTtjYXNlIDM2OmYrKyx0Lm5leHQ9MzE7YnJlYWs7Y2FzZSAzOTppZihlLnNob3VsZFJlcGxheUFmdGVyUmVmcmVzaCYmaS5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEssSlNPTi5zdHJpbmdpZnkoZSkpLCF1JiYhYyl7dC5uZXh0PTQ0O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RDdXN0b21HcmFudChlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD01O2JyZWFrfXJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxyLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA0NDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9MyxhLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsTSgpO2Nhc2UgNTppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUubmV4dD05LHgodCk7Y2FzZSA5OnJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsMTNdXSl9KSkpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIGEucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0sVD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE89ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWNjZXNzVG9rZW4oKX0sST1mdW5jdGlvbigpe3JldHVybiBhLmlzQXV0aGVudGljYXRlZCgpfSxVPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsaS5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxMPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsYS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxIPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixpLmdldENvbmZpZ0RhdGEoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxNPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixpLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoSyk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHQuYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6dixlbmFibGVIdHRwSGFuZGxlcjpkLGdldEFjY2Vzc1Rva2VuOlAsZ2V0QXV0aG9yaXphdGlvblVSTDpnLGdldEJhc2ljVXNlckluZm86VCxnZXRDb25maWdEYXRhOkgsZ2V0RGVjb2RlZElEVG9rZW46QSxnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6TyxnZXRTaWduT3V0VVJMOmssaHR0cFJlcXVlc3Q6aCxodHRwUmVxdWVzdEFsbDpwLGlzQXV0aGVudGljYXRlZDpJLHJlZnJlc2hBY2Nlc3NUb2tlbjpTLHJlcXVlc3RBY2Nlc3NUb2tlbjp5LHJlcXVlc3RDdXN0b21HcmFudDp4LHJldm9rZUFjY2Vzc1Rva2VuOkUsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpjLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmYsc2V0U2Vzc2lvblN0YXRlOlUsc2lnbk91dDp3LHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjptLHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sVGE9c2VsZjtUYS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLHI9ZS5wb3J0cztyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuLGEsbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHM9clswXSx0LnR5cGU9PT1xfHxfYSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09cT83OiJnZXRfYXV0aF91cmwiPT09ZS50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ZS50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PWUudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ZS50MD8yODoic2lnbi1vdXQiPT09ZS50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ZS50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1lLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1lLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PWUudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PWUudDA/NzY6ImdldF9pZF90b2tlbiI9PT1lLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1lLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1lLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ZS50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1lLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ZS50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ZS50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1lLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiBlLnByZXY9Nyx1PU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKSxlLm5leHQ9MTEsRWEodSk7Y2FzZSAxMTooX2E9ZS5zZW50KS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKERhKSxfYS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soQWEpLF9hLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKENhKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODplLnByZXY9MTgsZS50MT1lLmNhdGNoKDcpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4gX2EuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI0OnJldHVybiBfYS5yZXF1ZXN0QWNjZXNzVG9rZW4obnVsbD09PShuPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY29kZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zZXNzaW9uU3RhdGUsbnVsbD09PShvPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW8/dm9pZCAwOm8ucGtjZSxudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMzA6cmV0dXJuIGUucHJldj0zMCxlLnQyPXMsZS50Mz1CLGUubmV4dD0zNSxfYS5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NikpO2Nhc2UgNDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiBfYS5yZXF1ZXN0Q3VzdG9tR3JhbnQodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4gX2EucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0ODpyZXR1cm4gZS5wcmV2PTQ4LGUudDc9cyxlLnQ4PUIsZS5uZXh0PTUzLF9hLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTEpKTtjYXNlIDYxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gZS5wcmV2PTYyLGUudDEyPXMsZS50MTM9QixlLm5leHQ9NjcsX2EuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ZS50MTQ9ZS5zZW50LGUudDE1PWUudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxMyxlLnQxNCksZS50MTIucG9zdE1lc3NhZ2UuY2FsbChlLnQxMixlLnQxNSksZS5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ZS5wcmV2PTcyLGUudDE2PWUuY2F0Y2goNjIpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PUIsZS5uZXh0PTgxLF9hLmdldERlY29kZWRJRFRva2VuKCk7Y2FzZSA4MTplLnQxOT1lLnNlbnQsZS50MjA9ZS50MTguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDE4LGUudDE5KSxlLnQxNy5wb3N0TWVzc2FnZS5jYWxsKGUudDE3LGUudDIwKSxlLm5leHQ9ODk7YnJlYWs7Y2FzZSA4NjplLnByZXY9ODYsZS50MjE9ZS5jYXRjaCg3Nikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjEpKTtjYXNlIDg5OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA5MDpyZXR1cm4gZS5wcmV2PTkwLGUudDIyPXMsZS50MjM9QixlLm5leHQ9OTUsX2EuZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gX2EuZW5hYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIF9hLmRpc2FibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PUIsZS5uZXh0PTExNSxfYS5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTplLnQyOT1lLnNlbnQsZS50MzA9ZS50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDI4LGUudDI5KSxlLnQyNy5wb3N0TWVzc2FnZS5jYWxsKGUudDI3LGUudDMwKSxlLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOmUucHJldj0xMjAsZS50MzE9ZS5jYXRjaCgxMTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDMxKSk7Y2FzZSAxMjM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEyNDpyZXR1cm4gZS5wcmV2PTEyNCxlLnQzMj1zLGUudDMzPUIsZS5uZXh0PTEyOSxfYS5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzNikpO2Nhc2UgMTM3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMzg6cmV0dXJuIGUucHJldj0xMzgsZS50Mzc9cyxlLnQzOD1CLGUubmV4dD0xNDMsX2EucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAxNDM6ZS50Mzk9ZS5zZW50LGUudDQwPWUudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzOCxlLnQzOSksZS50MzcucG9zdE1lc3NhZ2UuY2FsbChlLnQzNyxlLnQ0MCksZS5uZXh0PTE1MTticmVhaztjYXNlIDE0ODplLnByZXY9MTQ4LGUudDQxPWUuY2F0Y2goMTM4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKF9hLnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTQ6cmV0dXJuIGUucHJldj0xNTQsZS50NDI9cyxlLnQ0Mz1CLGUubmV4dD0xNTksX2Euc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0NikpO2Nhc2UgMTY3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNjg6cmV0dXJuIGUucHJldj0xNjgsZS50NDc9cyxlLnQ0OD1CLGUubmV4dD0xNzMsX2EudXBkYXRlQ29uZmlnKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNzM6ZS50NDk9ZS5zZW50LGUudDUwPWUudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0OCxlLnQ0OSksZS50NDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ0NyxlLnQ1MCksZS5uZXh0PTE4MTticmVhaztjYXNlIDE3ODplLnByZXY9MTc4LGUudDUxPWUuY2F0Y2goMTY4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1CLGUubmV4dD0xODcsX2EuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OmUudDU0PWUuc2VudCxlLnQ1NT1lLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NTMsZS50NTQpLGUudDUyLnBvc3RNZXNzYWdlLmNhbGwoZS50NTIsZS50NTUpLGUubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ZS5wcmV2PTE5MixlLnQ1Nj1lLmNhdGNoKDE4Mikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NTYpKTtjYXNlIDE5NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTk2Om51bGw9PXN8fHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1JVjAyIiwiVGhlIG1lc3NhZ2UgdHlwZSBpcyBpbnZhbGlkLiIsIlRoZSBtZXNzYWdlIHR5cGUgcHJvdmlkZWQsICIuY29uY2F0KHQudHlwZSwiLCBpcyBpbnZhbGlkLiIpKSkpO2Nhc2UgMTk3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNywxOF0sWzMwLDQwXSxbNDgsNThdLFs2Miw3Ml0sWzc2LDg2XSxbOTAsMTAwXSxbMTEwLDEyMF0sWzEyNCwxMzRdLFsxMzgsMTQ4XSxbMTU0LDE2NF0sWzE2OCwxNzhdLFsxODIsMTkyXV0pfSkpKX07dmFyIEFhPWZ1bmN0aW9uKCl7VGEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LENhPWZ1bmN0aW9uKGUpe1RhLnBvc3RNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksdHlwZToicmVxdWVzdC1zdWNjZXNzIn0pfSxEYT1mdW5jdGlvbigpe1RhLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LWZpbmlzaCJ9KX07cmV0dXJue319KCk7Cgo=",GP=null,fP=!1,function(e){return VP=VP||yP(XP,GP,fP),new Worker(VP,e)}),CP=function(t){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d,s,m,Z,h,b,p,I,g,y,X,G,f,V,W,C,v,R,S,Y,J,K,L,N,H,x,k,U;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=null!==(r=null==t?void 0:t.requestTimeout)&&void 0!==r?r:6e4,o=!0,a=!1,n.next=5,AB((function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={type:rB},e.prev=1,e.next=4,d(t);case 4:return n=e.sent,e.abrupt("return",n);case 8:return e.prev=8,e.t0=e.catch(1),e.abrupt("return",UB.getSignOutURL());case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))}),t.storage,(function(e){return I(e)}));case 5:return l=n.sent,u=new WP,d=function(e){var t=new MessageChannel;return u.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new PT("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+c/1e3+" since dispatching the request"))}),c);return t.port1.onmessage=function(t){var i=t.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),e(c)}else n(i.error?JSON.parse(i.error):null)}}))},s=function(e){return d({data:e,type:"request-custom-grant"}).then((function(t){return e.preventSignOutURLUpdate&&(a=!0),Promise.resolve(t)})).catch((function(e){return Promise.reject(e)}))},m=function(e){return d({data:e,type:"http-request"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!o){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},Z=function(e){return d({data:e,type:"http-request-all"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!o){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},h=function(){return d({type:"enable_http_handler"}).then((function(){return o=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},b=function(){return d({type:"disable_http_handler"}).then((function(){return o=!1,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},p=function(){return i||(i={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),u.onmessage=function(e){var t=e.data;switch(t.type){case"request-finish":(null==i?void 0:i.requestFinishCallback)&&(null==i||i.requestFinishCallback());break;case"request-start":(null==i?void 0:i.requestStartCallback)&&(null==i||i.requestStartCallback());break;case"request-success":(null==i?void 0:i.requestSuccessCallback)&&(null==i||i.requestSuccessCallback(t.data?JSON.parse(t.data):null))}},d({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},I=function(e){return d({data:e,type:"set_session_state"})},g=function(){return d({type:"start_auto_refresh_token"})},y=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v();case 2:return i=e.sent,e.next=5,R();case 5:c=e.sent,l.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,S();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,G(e);case 2:return t.abrupt("return",t.sent.authorizationURL);case 3:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},X=function(){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c,o,a,u,s,m,Z;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R();case 2:if(r=e.sent,!UB.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,l.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(CB),c=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(vB),o={data:{prompt:"none",state:SB},type:iB},e.prev=10,e.next=13,d(o);case 13:a=e.sent,u=ET.extractPKCEKeyFromStateParam(null!==(n=new URL(a.authorizationURL).searchParams.get(QT))&&void 0!==n?n:""),a.pkce&&r.enablePKCE&&UB.setPKCE(u,a.pkce),s=a.authorizationURL,(m=new URL(s)).searchParams.set("response_mode","query"),Z=m.toString(),c.src=Z,e.next=26;break;case 23:return e.prev=23,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 26:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(d=i.data)?void 0:d.type)==oB&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==d?void 0:d.type)==cB&&(null===(o=null==d?void 0:d.data)||void 0===o?void 0:o.code)&&f(null===(a=null==d?void 0:d.data)||void 0===a?void 0:a.code,null===(l=null==d?void 0:d.data)||void 0===l?void 0:l.sessionState,null===(u=null==d?void 0:d.data)||void 0===u?void 0:u.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 27:case"end":return e.stop()}}),e,null,[[10,23]])})))},G=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R();case 2:return n=t.sent,r={data:e,type:iB},t.abrupt("return",d(r).then((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.pkce&&n.enablePKCE&&(i=ET.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(QT))&&void 0!==r?r:""),UB.setPKCE(i,e.pkce)),t.abrupt("return",Promise.resolve(e));case 2:case"end":return t.stop()}}),t)})))})));case 5:case"end":return t.stop()}}),t)})))},f=function(e,t,n){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,R();case 2:return i=r.sent,c=ET.extractPKCEKeyFromStateParam(n),o={data:{code:e,pkce:i.enablePKCE?UB.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&UB.removePKCE(c),r.abrupt("return",d(o).then((function(e){return d({type:"get_sign_out_url"}).then((function(t){return UB.setSignOutURL(t),i.enableOIDCSessionManagement&&y(),g(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))})).catch((function(e){return Promise.reject(e)})));case 7:case"end":return r.stop()}}),r)})))},V=function(t,n,r,i){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,u,d,s,m,Z,h,b,p;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,R();case 2:return d=c.sent,c.next=5,l.receivePromptNoneResponse((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",I(e));case 1:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(s=new URL(window.location.href).searchParams.get(KB),m=new URL(window.location.href).searchParams.get(LB),!s){c.next=16;break}throw(Z=new URL(window.location.href)).searchParams.delete(KB),Z.searchParams.delete(LB),history.pushState(null,document.title,Z.toString()),new PT("SPA-WEB_WORKER_CLIENT-SI-SE01",s,null!=m?m:"");case 16:return c.next=18,K();case 18:if(!c.sent){c.next=23;break}return c.next=21,g();case 21:return d.enableOIDCSessionManagement&&y(),c.abrupt("return",S());case 23:if((null==d?void 0:d.responseMode)===e.ResponseMode.formPost&&n?(h=n,b=null!=r?r:"",p=null!=i?i:""):(h=null!==(o=new URL(window.location.href).searchParams.get(BT))&&void 0!==o?o:"",b=null!==(a=new URL(window.location.href).searchParams.get(zT))&&void 0!==a?a:"",p=null!==(u=new URL(window.location.href).searchParams.get(QT))&&void 0!==u?u:"",UB.removeAuthorizationCode()),!h||!p){c.next=26;break}return c.abrupt("return",f(h,b,p));case 26:return c.abrupt("return",G(t).then((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return location.href=e.authorizationURL,t.next=3,UB.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 27:case"end":return c.stop()}}),c)})))},W=function(){return K().then((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||a){t.next=5;break}return n={type:rB},t.abrupt("return",d(n).then((function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return window.location.href=e,t.next=3,UB.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve(!0));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 5:return window.location.href=UB.getSignOutURL(),t.next=8,UB.waitTillPageRedirect();case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)}))},C=function(){return d({type:"revoke-access-token"}).then((function(e){return l.reset(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},v=function(){return d({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},R=function(){return d({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},S=function(){return d({type:"get-basic-user-info"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},Y=function(){return d({type:"get-decoded-id-token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=function(){return d({type:"get_id_token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},K=function(){return d({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},L=function(){return d({type:"refresh_access-token"})},N=function(e){e&&"function"==typeof e&&(i.requestSuccessCallback=e)},H=function(e){e&&"function"==typeof e&&(i.requestErrorCallback=e)},x=function(e){e&&"function"==typeof e&&(i.requestStartCallback=e)},k=function(e){e&&"function"==typeof e&&(i.requestFinishCallback=e)},U=function(e){return UT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),c={data:i,type:"update_config"},t.next=8,d(c);case 8:i.enableOIDCSessionManagement&&r&&(l.reset(),y());case 9:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:b,enableHttpHandler:h,getBasicUserInfo:S,getDecodedIDToken:Y,getIDToken:J,getOIDCServiceEndpoints:v,httpRequest:m,httpRequestAll:Z,initialize:p,isAuthenticated:K,refreshAccessToken:L,requestCustomGrant:s,revokeAccessToken:C,setHttpRequestErrorCallback:H,setHttpRequestFinishCallback:k,setHttpRequestStartCallback:x,setHttpRequestSuccessCallback:N,signIn:V,signOut:W,trySignInSilently:X,updateConfig:U});case 36:case"end":return n.stop()}}),n)})))},vP={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:e.Storage.SessionStorage},RP="primaryInstance",SP=function(){function t(e){u(this,t),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=e}return s(t,[{key:"_isInitialized",value:function(){return UT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._startedInitialize){e.next=2;break}return e.abrupt("return",!1);case 2:t=0,n=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 4:if(this._initialized){e.next=11;break}return 1e4===t&&console.warn("It is taking longer than usual for the object to be initialized"),e.next=8,n();case 8:t++,e.next=4;break;case 11:return e.abrupt("return",!0);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"_validateMethod",value:function(){return UT(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(e.sent){e.next=4;break}return e.abrupt("return",Promise.reject());case 4:return e.next=6,this.isAuthenticated();case 6:if(e.sent){e.next=8;break}return e.abrupt("return",Promise.reject());case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}}),e,this)})))}
452
452
  /**
453
453
  * This method returns the instance of the singleton class.
454
454
  *
@@ -487,7 +487,7 @@ function(e){return TF(this,void 0,void 0,regeneratorRuntime.mark((function t(){r
487
487
  *
488
488
  * @preserve
489
489
  */
490
- function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a=this;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(this._storage=null!==(n=t.storage)&&void 0!==n?n:e.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===e.Storage.WebWorker){r.next=15;break}if(this._client){r.next=10;break}return i=t,c=Object.assign({},vP),r.next=9,gP(Object.assign(Object.assign({},c),i));case 9:this._client=r.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),r.abrupt("return",Promise.resolve(!0));case 15:if(this._client){r.next=21;break}return o=t,r.next=19,CP(Object.assign(Object.assign({},vP),o));case 19:return this._client=r.sent,r.abrupt("return",this._client.initialize().then((function(){return a._onInitialize&&a._onInitialize(!0),a._initialized=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)})));case 21:return r.abrupt("return",Promise.resolve(!0));case 22:case"end":return r.stop()}}),r,this)})))}
490
+ function(t){var n;return UT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a=this;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(this._storage=null!==(n=t.storage)&&void 0!==n?n:e.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===e.Storage.WebWorker){r.next=15;break}if(this._client){r.next=10;break}return i=t,c=Object.assign({},vP),r.next=9,gP(Object.assign(Object.assign({},c),i));case 9:this._client=r.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),r.abrupt("return",Promise.resolve(!0));case 15:if(this._client){r.next=21;break}return o=t,r.next=19,CP(Object.assign(Object.assign({},vP),o));case 19:return this._client=r.sent,r.abrupt("return",this._client.initialize().then((function(){return a._onInitialize&&a._onInitialize(!0),a._initialized=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)})));case 21:return r.abrupt("return",Promise.resolve(!0));case 22:case"end":return r.stop()}}),r,this)})))}
491
491
  /**
492
492
  * This method returns a Promise that resolves with the basic user information obtained from the ID token.
493
493
  *
@@ -507,7 +507,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
507
507
  * @memberof AsgardeoSPAClient
508
508
  *
509
509
  * @preserve
510
- */},{key:"getBasicUserInfo",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getBasicUserInfo());case 3:case"end":return t.stop()}}),t,this)})))}
510
+ */},{key:"getBasicUserInfo",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getBasicUserInfo());case 3:case"end":return t.stop()}}),t,this)})))}
511
511
  /**
512
512
  * This method initiates the authentication flow. This should be called twice.
513
513
  * 1. To initiate the authentication flow.
@@ -543,7 +543,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
543
543
  * @memberof AsgardeoSPAClient
544
544
  *
545
545
  * @preserve
546
- */},{key:"signIn",value:function(e,t,n,r){var i;return kF(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o=this;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(kB.canContinueSignIn(Boolean(null==e?void 0:e.callOnlyOnRedirect),t)){c.next=4;break}return c.abrupt("return");case 4:return null==e||delete e.callOnlyOnRedirect,c.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(e,t,n,r).then((function(e){return o._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&o._onSignInCallback(e),e})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(!kB.wasSignInCalled()){t.next=4;break}return t.abrupt("return");case 4:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.trySignInSilently().then((function(e){if(n._onSignInCallback&&e){var t=e;(t.allowedScopes||t.displayName||t.email||t.username)&&n._onSignInCallback(t)}return e})));case 5:case"end":return t.stop()}}),t,this)})))}
546
+ */},{key:"signIn",value:function(e,t,n,r){var i;return UT(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o=this;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(UB.canContinueSignIn(Boolean(null==e?void 0:e.callOnlyOnRedirect),t)){c.next=4;break}return c.abrupt("return");case 4:return null==e||delete e.callOnlyOnRedirect,c.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(e,t,n,r).then((function(e){return o._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&o._onSignInCallback(e),e})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(!UB.wasSignInCalled()){t.next=4;break}return t.abrupt("return");case 4:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.trySignInSilently().then((function(e){if(n._onSignInCallback&&e){var t=e;(t.allowedScopes||t.displayName||t.email||t.username)&&n._onSignInCallback(t)}return e})));case 5:case"end":return t.stop()}}),t,this)})))}
547
547
  /**
548
548
  * This method initiates the sign-out flow.
549
549
  *
@@ -563,7 +563,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
563
563
  * @memberof AsgardeoSPAClient
564
564
  *
565
565
  * @preserve
566
- */},{key:"signOut",value:function(){var e,t;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(e=this._client)||void 0===e?void 0:e.signOut();case 4:if(n.t1=t=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==t;case 8:if(!n.t0){n.next=12;break}n.t2=t,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}
566
+ */},{key:"signOut",value:function(){var e,t;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(e=this._client)||void 0===e?void 0:e.signOut();case 4:if(n.t1=t=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==t;case 8:if(!n.t0){n.next=12;break}n.t2=t,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}
567
567
  /**
568
568
  * This method sends an API request to a protected endpoint.
569
569
  * The access token is automatically attached to the header of the request.
@@ -600,7 +600,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
600
600
  * @memberof AsgardeoSPAClient
601
601
  *
602
602
  * @preserve
603
- */},{key:"httpRequest",value:function(e){var t;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequest(e));case 3:case"end":return n.stop()}}),n,this)})))}
603
+ */},{key:"httpRequest",value:function(e){var t;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequest(e));case 3:case"end":return n.stop()}}),n,this)})))}
604
604
  /**
605
605
  * This method sends multiple API requests to a protected endpoint.
606
606
  * The access token is automatically attached to the header of the request.
@@ -647,7 +647,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
647
647
  * @memberof AsgardeoSPAClient
648
648
  *
649
649
  * @preserve
650
- */},{key:"httpRequestAll",value:function(e){var t;return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequestAll(e));case 3:case"end":return n.stop()}}),n,this)})))}
650
+ */},{key:"httpRequestAll",value:function(e){var t;return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequestAll(e));case 3:case"end":return n.stop()}}),n,this)})))}
651
651
  /**
652
652
  * This method allows you to send a request with a custom grant.
653
653
  *
@@ -678,7 +678,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
678
678
  * @memberof AsgardeoSPAClient
679
679
  *
680
680
  * @preserve
681
- */},{key:"requestCustomGrant",value:function(e){var t,n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(e.id){r.next=9;break}return r.abrupt("return",Promise.reject(new PF("SPA-AUTH_CLIENT-RCG-NF01","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(t=this._client)||void 0===t?void 0:t.requestCustomGrant(e);case 11:return i=r.sent,(c=this._onCustomGrant.get(e.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(e.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}
681
+ */},{key:"requestCustomGrant",value:function(e){var t,n;return UT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(e.id){r.next=9;break}return r.abrupt("return",Promise.reject(new PT("SPA-AUTH_CLIENT-RCG-NF01","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(t=this._client)||void 0===t?void 0:t.requestCustomGrant(e);case 11:return i=r.sent,(c=this._onCustomGrant.get(e.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(e.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}
682
682
  /**
683
683
  * This method ends a user session. The access token is revoked and the session information is destroyed.
684
684
  *
@@ -698,7 +698,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
698
698
  * @memberof AsgardeoSPAClient
699
699
  *
700
700
  * @preserve
701
- */},{key:"revokeAccessToken",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.next=4,null===(e=this._client)||void 0===e?void 0:e.revokeAccessToken();case 4:if(n=t.sent,t.t0=this._onEndUserSession,!t.t0){t.next=9;break}return t.next=9,this._onEndUserSession(n);case 9:return t.abrupt("return",n);case 10:case"end":return t.stop()}}),t,this)})))}
701
+ */},{key:"revokeAccessToken",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.next=4,null===(e=this._client)||void 0===e?void 0:e.revokeAccessToken();case 4:if(n=t.sent,t.t0=this._onEndUserSession,!t.t0){t.next=9;break}return t.next=9,this._onEndUserSession(n);case 9:return t.abrupt("return",n);case 10:case"end":return t.stop()}}),t,this)})))}
702
702
  /**
703
703
  * This method returns a Promise that resolves with an object containing the service endpoints.
704
704
  *
@@ -718,7 +718,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
718
718
  * @memberof AsgardeoSPAClient
719
719
  *
720
720
  * @preserve
721
- */},{key:"getOIDCServiceEndpoints",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getOIDCServiceEndpoints());case 3:case"end":return t.stop()}}),t,this)})))}
721
+ */},{key:"getOIDCServiceEndpoints",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getOIDCServiceEndpoints());case 3:case"end":return t.stop()}}),t,this)})))}
722
722
  /**
723
723
  * This methods returns the Axios http client.
724
724
  *
@@ -727,7 +727,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
727
727
  * @memberof AsgardeoSPAClient
728
728
  *
729
729
  * @preserve
730
- */},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==e.Storage.WebWorker)return this._client.getHttpClient();throw new PF("SPA-AUTH_CLIENT-GHC-IV01","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new PF("SPA-AUTH_CLIENT-GHC-NF02","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}
730
+ */},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==e.Storage.WebWorker)return this._client.getHttpClient();throw new PT("SPA-AUTH_CLIENT-GHC-IV01","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new PT("SPA-AUTH_CLIENT-GHC-NF02","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}
731
731
  /**
732
732
  * This method decodes the payload of the id token and returns it.
733
733
  *
@@ -747,7 +747,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
747
747
  * @memberof AsgardeoSPAClient
748
748
  *
749
749
  * @preserve
750
- */},{key:"getDecodedIDToken",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getDecodedIDToken());case 3:case"end":return t.stop()}}),t,this)})))}
750
+ */},{key:"getDecodedIDToken",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getDecodedIDToken());case 3:case"end":return t.stop()}}),t,this)})))}
751
751
  /**
752
752
  * This method return the ID token.
753
753
  *
@@ -763,7 +763,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
763
763
  * @memberof AsgardeoAuthClient
764
764
  *
765
765
  * @preserve
766
- */},{key:"getIDToken",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getIDToken());case 3:case"end":return t.stop()}}),t,this)})))}
766
+ */},{key:"getIDToken",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getIDToken());case 3:case"end":return t.stop()}}),t,this)})))}
767
767
  /**
768
768
  * This method return a Promise that resolves with the access token.
769
769
  *
@@ -785,7 +785,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
785
785
  * @memberof AsgardeoSPAClient
786
786
  *
787
787
  * @preserve
788
- */},{key:"getAccessToken",value:function(){return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:if(!this._storage||![(e.Storage.WebWorker,e.Storage.BrowserMemory)].includes(this._storage)){t.next=4;break}return t.abrupt("return",Promise.reject(new PF("SPA-AUTH_CLIENT-GAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,t.abrupt("return",n.getAccessToken());case 6:case"end":return t.stop()}}),t,this)})))}
788
+ */},{key:"getAccessToken",value:function(){return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:if(!this._storage||![(e.Storage.WebWorker,e.Storage.BrowserMemory)].includes(this._storage)){t.next=4;break}return t.abrupt("return",Promise.reject(new PT("SPA-AUTH_CLIENT-GAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,t.abrupt("return",n.getAccessToken());case 6:case"end":return t.stop()}}),t,this)})))}
789
789
  /**
790
790
  * This method refreshes the access token.
791
791
  *
@@ -806,7 +806,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
806
806
  * @memberof AsgardeoSPAClient
807
807
  *
808
808
  * @preserve
809
- */},{key:"refreshAccessToken",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.refreshAccessToken());case 3:case"end":return t.stop()}}),t,this)})))}
809
+ */},{key:"refreshAccessToken",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.refreshAccessToken());case 3:case"end":return t.stop()}}),t,this)})))}
810
810
  /**
811
811
  * This method specifies if the user is authenticated or not.
812
812
  *
@@ -815,7 +815,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
815
815
  * @memberof AsgardeoSPAClient
816
816
  *
817
817
  * @preserve
818
- */},{key:"isAuthenticated",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.isAuthenticated());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"on",value:function(t,n,r){var i,c,o,a;return kF(this,void 0,void 0,regeneratorRuntime.mark((function l(){var u;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){l.next=32;break}l.t0=t,l.next=l.t0===e.Hooks.SignIn?6:l.t0===e.Hooks.SignOut?8:l.t0===e.Hooks.RevokeAccessToken?11:l.t0===e.Hooks.Initialize?13:l.t0===e.Hooks.HttpRequestError?15:l.t0===e.Hooks.HttpRequestFinish?17:l.t0===e.Hooks.HttpRequestStart?19:l.t0===e.Hooks.HttpRequestSuccess?21:l.t0===e.Hooks.CustomGrant?23:l.t0===e.Hooks.SignOutFailed?25:29;break;case 6:return this._onSignInCallback=n,l.abrupt("break",30);case 8:return this._onSignOutCallback=n,kB.isSignOutSuccessful()&&this._onSignOutCallback(),l.abrupt("break",30);case 11:return this._onEndUserSession=n,l.abrupt("break",30);case 13:return this._onInitialize=n,l.abrupt("break",30);case 15:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),l.abrupt("break",30);case 17:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),l.abrupt("break",30);case 19:return null===(o=this._client)||void 0===o||o.setHttpRequestStartCallback(n),l.abrupt("break",30);case 21:return null===(a=this._client)||void 0===a||a.setHttpRequestSuccessCallback(n),l.abrupt("break",30);case 23:return r&&this._onCustomGrant.set(r,n),l.abrupt("break",30);case 25:return this._onSignOutFailedCallback=n,(u=kB.didSignOutFail())&&this._onSignOutFailedCallback(u),l.abrupt("break",30);case 29:throw new PF("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 30:l.next=33;break;case 32:throw new PF("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 33:case"end":return l.stop()}}),l,this)})))}
818
+ */},{key:"isAuthenticated",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.isAuthenticated());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"on",value:function(t,n,r){var i,c,o,a;return UT(this,void 0,void 0,regeneratorRuntime.mark((function l(){var u;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){l.next=32;break}l.t0=t,l.next=l.t0===e.Hooks.SignIn?6:l.t0===e.Hooks.SignOut?8:l.t0===e.Hooks.RevokeAccessToken?11:l.t0===e.Hooks.Initialize?13:l.t0===e.Hooks.HttpRequestError?15:l.t0===e.Hooks.HttpRequestFinish?17:l.t0===e.Hooks.HttpRequestStart?19:l.t0===e.Hooks.HttpRequestSuccess?21:l.t0===e.Hooks.CustomGrant?23:l.t0===e.Hooks.SignOutFailed?25:29;break;case 6:return this._onSignInCallback=n,l.abrupt("break",30);case 8:return this._onSignOutCallback=n,UB.isSignOutSuccessful()&&this._onSignOutCallback(),l.abrupt("break",30);case 11:return this._onEndUserSession=n,l.abrupt("break",30);case 13:return this._onInitialize=n,l.abrupt("break",30);case 15:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),l.abrupt("break",30);case 17:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),l.abrupt("break",30);case 19:return null===(o=this._client)||void 0===o||o.setHttpRequestStartCallback(n),l.abrupt("break",30);case 21:return null===(a=this._client)||void 0===a||a.setHttpRequestSuccessCallback(n),l.abrupt("break",30);case 23:return r&&this._onCustomGrant.set(r,n),l.abrupt("break",30);case 25:return this._onSignOutFailedCallback=n,(u=UB.didSignOutFail())&&this._onSignOutFailedCallback(u),l.abrupt("break",30);case 29:throw new PT("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 30:l.next=33;break;case 32:throw new PT("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 33:case"end":return l.stop()}}),l,this)})))}
819
819
  /**
820
820
  * This method enables callback functions attached to the http client.
821
821
  *
@@ -831,7 +831,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
831
831
  * @memberof AsgardeoSPAClient
832
832
  *
833
833
  * @preserve
834
- */},{key:"enableHttpHandler",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.enableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}
834
+ */},{key:"enableHttpHandler",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.enableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}
835
835
  /**
836
836
  * This method disables callback functions attached to the http client.
837
837
  *
@@ -847,7 +847,7 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
847
847
  * @memberof AsgardeoSPAClient
848
848
  *
849
849
  * @preserve
850
- */},{key:"disableHttpHandler",value:function(){var e;return kF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.disableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}
850
+ */},{key:"disableHttpHandler",value:function(){var e;return UT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.disableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}
851
851
  /**
852
852
  * This method updates the configuration that was passed into the constructor when instantiating this class.
853
853
  *
@@ -867,5 +867,5 @@ function(t){var n;return kF(this,void 0,void 0,regeneratorRuntime.mark((function
867
867
  * @memberof AsgardeoAuthClient
868
868
  *
869
869
  * @preserve
870
- */},{key:"updateConfig",value:function(t){return kF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==e.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(t);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(t);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(e){var n,r;return e&&(null===(n=this._instances)||void 0===n?void 0:n.get(e))?this._instances.get(e):!e&&(null===(r=this._instances)||void 0===r?void 0:r.get(SP))?this._instances.get(SP):e?(this._instances.set(e,new t(e)),this._instances.get(e)):(this._instances.set(SP,new t(SP)),this._instances.get(SP))}}]),t}();RP._instances=new Map;var YP=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).onmessage=function(){return null},e}return s(n)}(g(Worker));e.AUTHORIZATION_CODE=BF,e.AsgardeoAuthClient=nB,e.AsgardeoAuthException=PF,e.AsgardeoSPAClient=RP,e.AuthenticationUtils=EF,e.CLAIM_VALIDATION_ERROR="ERR_JWT_CLAIM_VALIDATION_FAILED",e.CLIENT_ID_TAG="{{clientID}}",e.CLIENT_SECRET_TAG="{{clientSecret}}",e.DataLayer=eB,e.NBF_CLAIM="nbf",e.OIDC_SCOPE="openid",e.PKCE_CODE_VERIFIER="pkce_code_verifier",e.PKCE_SEPARATOR="#",e.REFRESH_TOKEN_TIMER=AF,e.SCOPE_TAG="{{scope}}",e.SESSION_STATE=zF,e.SIGN_OUT_SUCCESS_PARAM=QF,e.SIGN_OUT_URL=jF,e.SPAUtils=kB,e.STATE=MF,e.SUPPORTED_SIGNATURE_ALGORITHMS=FF,e.TOKEN_TAG="{{token}}",e.USERNAME_TAG="{{username}}",e.WebWorkerClass=YP,Object.defineProperty(e,"__esModule",{value:!0})}));
870
+ */},{key:"updateConfig",value:function(t){return UT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==e.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(t);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(t);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(e){var n,r;return e&&(null===(n=this._instances)||void 0===n?void 0:n.get(e))?this._instances.get(e):!e&&(null===(r=this._instances)||void 0===r?void 0:r.get(RP))?this._instances.get(RP):e?(this._instances.set(e,new t(e)),this._instances.get(e)):(this._instances.set(RP,new t(RP)),this._instances.get(RP))}}]),t}();SP._instances=new Map;var YP=function(e){Z(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).onmessage=function(){return null},e}return s(n)}(g(Worker));e.AUTHORIZATION_CODE=BT,e.AsgardeoAuthClient=nB,e.AsgardeoAuthException=PT,e.AsgardeoSPAClient=SP,e.AuthenticationUtils=ET,e.CLAIM_VALIDATION_ERROR="ERR_JWT_CLAIM_VALIDATION_FAILED",e.CLIENT_ID_TAG="{{clientID}}",e.CLIENT_SECRET_TAG="{{clientSecret}}",e.DataLayer=eB,e.NBF_CLAIM="nbf",e.OIDC_SCOPE="openid",e.PKCE_CODE_VERIFIER="pkce_code_verifier",e.PKCE_SEPARATOR="#",e.REFRESH_TOKEN_TIMER=FT,e.SCOPE_TAG="{{scope}}",e.SESSION_STATE=zT,e.SIGN_OUT_SUCCESS_PARAM=MT,e.SIGN_OUT_URL=jT,e.SPAUtils=UB,e.STATE=QT,e.SUPPORTED_SIGNATURE_ALGORITHMS=TT,e.TOKEN_TAG="{{token}}",e.USERNAME_TAG="{{username}}",e.WebWorkerClass=YP,Object.defineProperty(e,"__esModule",{value:!0})}));
871
871
  //# sourceMappingURL=asgardeo-spa.production.js.map