@asgardeo/auth-spa 0.3.9 → 0.3.10

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,6 +1,6 @@
1
1
  var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function n(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})})),e}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function r(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){m(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function c(){
2
2
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
3
- c=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",o=i.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,i){var r=e&&e.prototype instanceof m?e:m,c=Object.create(r.prototype),a=new W(i||[]);return c._invoke=function(t,e,n){var i="suspendedStart";return function(r,c){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw c;return C()}for(n.method=r,n.arg=c;;){var a=n.delegate;if(a){var o=G(a,n);if(o){if(o===s)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var l=d(t,e,n);if("normal"===l.type){if(i=n.done?"completed":"suspendedYield",l.arg===s)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i="completed",n.method="throw",n.arg=l.arg)}}}(t,n,a),c}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var s={};function m(){}function h(){}function b(){}var p={};l(p,r,(function(){return this}));var Z=Object.getPrototypeOf,I=Z&&Z(Z(v([])));I&&I!==e&&n.call(I,r)&&(p=I);var y=b.prototype=m.prototype=Object.create(p);function g(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function X(t,e){function i(r,c,a,o){var l=d(t[r],t,c);if("throw"!==l.type){var u=l.arg,s=u.value;return s&&"object"==typeof s&&n.call(s,"__await")?e.resolve(s.__await).then((function(t){i("next",t,a,o)}),(function(t){i("throw",t,a,o)})):e.resolve(s).then((function(t){u.value=t,a(u)}),(function(t){return i("throw",t,a,o)}))}o(l.arg)}var r;this._invoke=function(t,n){function c(){return new e((function(e,r){i(t,n,e,r)}))}return r=r?r.then(c,c):c()}}function G(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,G(t,e),"throw"===e.method))return s;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var i=d(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,s;var r=i.arg;return r?r.done?(e[t.resultName]=r.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,s):r:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,s)}function f(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function V(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function W(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function v(t){if(t){var e=t[r];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,c=function e(){for(;++i<t.length;)if(n.call(t,i))return e.value=t[i],e.done=!1,e;return e.value=void 0,e.done=!0,e};return c.next=c}}return{next:C}}function C(){return{value:void 0,done:!0}}return h.prototype=b,l(y,"constructor",b),l(b,"constructor",h),h.displayName=l(b,o,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===h||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,l(t,o,"GeneratorFunction")),t.prototype=Object.create(y),t},t.awrap=function(t){return{__await:t}},g(X.prototype),l(X.prototype,a,(function(){return this})),t.AsyncIterator=X,t.async=function(e,n,i,r,c){void 0===c&&(c=Promise);var a=new X(u(e,n,i,r),c);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(y),l(y,o,"Generator"),l(y,r,(function(){return this})),l(y,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var i=e.pop();if(i in t)return n.value=i,n.done=!1,n}return n.done=!0,n}},t.values=v,W.prototype={constructor:W,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(V),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(n,i){return a.type="throw",a.arg=t,e.next=n,i&&(e.method="next",e.arg=void 0),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var c=this.tryEntries[r],a=c.completion;if("root"===c.tryLoc)return i("end");if(c.tryLoc<=this.prev){var o=n.call(c,"catchLoc"),l=n.call(c,"finallyLoc");if(o&&l){if(this.prev<c.catchLoc)return i(c.catchLoc,!0);if(this.prev<c.finallyLoc)return i(c.finallyLoc)}else if(o){if(this.prev<c.catchLoc)return i(c.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return i(c.finallyLoc)}}}},abrupt:function(t,e){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var c=r;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var a=c?c.completion:{};return a.type=t,a.arg=e,c?(this.method="next",this.next=c.finallyLoc,s):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),s},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),V(n),s}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;V(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:v(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},t}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function o(t,e,n,i,r,c,a){try{var o=t[c](a),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function l(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var c=t.apply(e,n);function a(t){o(c,i,r,a,l,"next",t)}function l(t){o(c,i,r,a,l,"throw",t)}a(void 0)}))}}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&d(t.prototype,e),n&&d(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function m(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p(t,e)}function b(t){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}function p(t,e){return p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},p(t,e)}function Z(){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(t){return!1}}function I(t,e,n){return I=Z()?Reflect.construct:function(t,e,n){var i=[null];i.push.apply(i,e);var r=new(Function.bind.apply(t,i));return n&&p(r,n.prototype),r},I.apply(null,arguments)}function y(t){var e="function"==typeof Map?new Map:void 0;return y=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return I(t,arguments,b(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),p(i,t)},y(t)}function g(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function X(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return g(t)}function G(t){var e=Z();return function(){var n,i=b(t);if(e){var r=b(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return X(this,n)}}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var i,r,c=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(i=n.next()).done)&&(c.push(i.value),!e||c.length!==e);a=!0);}catch(t){o=!0,r=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw r}}return c}(t,e)||W(t,e)||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(t){return function(t){if(Array.isArray(t))return v(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||W(t)||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(t,e){if(t){if("string"==typeof t)return v(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(t,e):void 0}}function v(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function C(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=W(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}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,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,c=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var S=function(t){return t&&t.Math==Math&&t},Y=S("object"==("undefined"==typeof globalThis?"undefined":a(globalThis))&&globalThis)||S("object"==("undefined"==typeof window?"undefined":a(window))&&window)||S("object"==("undefined"==typeof self?"undefined":a(self))&&self)||S("object"==a(t)&&t)||function(){return this}()||Function("return this")(),R={},K=function(t){try{return!!t()}catch(t){return!0}},N=!K((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),L=!K((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),J=L,x=Function.prototype.call,H=J?x.bind(x):function(){return x.apply(x,arguments)},k={},U={}.propertyIsEnumerable,T=Object.getOwnPropertyDescriptor,w=T&&!U.call({1:2},1);k.f=w?function(t){var e=T(this,t);return!!e&&e.enumerable}:U;var F,A,B=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},z=L,j=Function.prototype,M=j.bind,Q=j.call,P=z&&M.bind(Q,Q),E=z?function(t){return t&&P(t)}:function(t){return t&&function(){return Q.apply(t,arguments)}},D=E,O=D({}.toString),_=D("".slice),q=function(t){return _(O(t),8,-1)},$=E,tt=K,et=q,nt=Y.Object,it=$("".split),rt=tt((function(){return!nt("z").propertyIsEnumerable(0)}))?function(t){return"String"==et(t)?it(t,""):nt(t)}:nt,ct=Y.TypeError,at=function(t){if(null==t)throw ct("Can't call method on "+t);return t},ot=rt,lt=at,ut=function(t){return ot(lt(t))},dt=function(t){return"function"==typeof t},st=dt,mt=function(t){return"object"==a(t)?null!==t:st(t)},ht=Y,bt=dt,pt=function(t){return bt(t)?t:void 0},Zt=function(t,e){return arguments.length<2?pt(ht[t]):ht[t]&&ht[t][e]},It=E({}.isPrototypeOf),yt=Zt("navigator","userAgent")||"",gt=Y,Xt=yt,Gt=gt.process,ft=gt.Deno,Vt=Gt&&Gt.versions||ft&&ft.version,Wt=Vt&&Vt.v8;Wt&&(A=(F=Wt.split("."))[0]>0&&F[0]<4?1:+(F[0]+F[1])),!A&&Xt&&(!(F=Xt.match(/Edge\/(\d+)/))||F[1]>=74)&&(F=Xt.match(/Chrome\/(\d+)/))&&(A=+F[1]);var vt=A,Ct=vt,St=K,Yt=!!Object.getOwnPropertySymbols&&!St((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&Ct&&Ct<41})),Rt=Yt&&!Symbol.sham&&"symbol"==a(Symbol.iterator),Kt=Zt,Nt=dt,Lt=It,Jt=Rt,xt=Y.Object,Ht=Jt?function(t){return"symbol"==a(t)}:function(t){var e=Kt("Symbol");return Nt(e)&&Lt(e.prototype,xt(t))},kt=Y.String,Ut=function(t){try{return kt(t)}catch(t){return"Object"}},Tt=dt,wt=Ut,Ft=Y.TypeError,At=function(t){if(Tt(t))return t;throw Ft(wt(t)+" is not a function")},Bt=At,zt=function(t,e){var n=t[e];return null==n?void 0:Bt(n)},jt=H,Mt=dt,Qt=mt,Pt=Y.TypeError,Et=function(t,e){var n,i;if("string"===e&&Mt(n=t.toString)&&!Qt(i=jt(n,t)))return i;if(Mt(n=t.valueOf)&&!Qt(i=jt(n,t)))return i;if("string"!==e&&Mt(n=t.toString)&&!Qt(i=jt(n,t)))return i;throw Pt("Can't convert object to primitive value")},Dt={exports:{}},Ot=Y,_t=Object.defineProperty,qt=function(t,e){try{_t(Ot,t,{value:e,configurable:!0,writable:!0})}catch(n){Ot[t]=e}return e},$t=qt,te=Y["__core-js_shared__"]||$t("__core-js_shared__",{}),ee=te;(Dt.exports=function(t,e){return ee[t]||(ee[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.22.6",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.6/LICENSE",source:"https://github.com/zloirock/core-js"});var ne=at,ie=Y.Object,re=function(t){return ie(ne(t))},ce=re,ae=E({}.hasOwnProperty),oe=Object.hasOwn||function(t,e){return ae(ce(t),e)},le=E,ue=0,de=Math.random(),se=le(1..toString),me=function(t){return"Symbol("+(void 0===t?"":t)+")_"+se(++ue+de,36)},he=Y,be=Dt.exports,pe=oe,Ze=me,Ie=Yt,ye=Rt,ge=be("wks"),Xe=he.Symbol,Ge=Xe&&Xe.for,fe=ye?Xe:Xe&&Xe.withoutSetter||Ze,Ve=function(t){if(!pe(ge,t)||!Ie&&"string"!=typeof ge[t]){var e="Symbol."+t;Ie&&pe(Xe,t)?ge[t]=Xe[t]:ge[t]=ye&&Ge?Ge(e):fe(e)}return ge[t]},We=H,ve=mt,Ce=Ht,Se=zt,Ye=Et,Re=Ve,Ke=Y.TypeError,Ne=Re("toPrimitive"),Le=function(t,e){if(!ve(t)||Ce(t))return t;var n,i=Se(t,Ne);if(i){if(void 0===e&&(e="default"),n=We(i,t,e),!ve(n)||Ce(n))return n;throw Ke("Can't convert object to primitive value")}return void 0===e&&(e="number"),Ye(t,e)},Je=Le,xe=Ht,He=function(t){var e=Je(t,"string");return xe(e)?e:e+""},ke=mt,Ue=Y.document,Te=ke(Ue)&&ke(Ue.createElement),we=function(t){return Te?Ue.createElement(t):{}},Fe=we,Ae=!N&&!K((function(){return 7!=Object.defineProperty(Fe("div"),"a",{get:function(){return 7}}).a})),Be=N,ze=H,je=k,Me=B,Qe=ut,Pe=He,Ee=oe,De=Ae,Oe=Object.getOwnPropertyDescriptor;R.f=Be?Oe:function(t,e){if(t=Qe(t),e=Pe(e),De)try{return Oe(t,e)}catch(t){}if(Ee(t,e))return Me(!ze(je.f,t,e),t[e])};var _e={},qe=N&&K((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),$e=Y,tn=mt,en=$e.String,nn=$e.TypeError,rn=function(t){if(tn(t))return t;throw nn(en(t)+" is not an object")},cn=N,an=Ae,on=qe,ln=rn,un=He,dn=Y.TypeError,sn=Object.defineProperty,mn=Object.getOwnPropertyDescriptor;_e.f=cn?on?function(t,e,n){if(ln(t),e=un(e),ln(n),"function"==typeof t&&"prototype"===e&&"value"in n&&"writable"in n&&!n.writable){var i=mn(t,e);i&&i.writable&&(t[e]=n.value,n={configurable:"configurable"in n?n.configurable:i.configurable,enumerable:"enumerable"in n?n.enumerable:i.enumerable,writable:!1})}return sn(t,e,n)}:sn:function(t,e,n){if(ln(t),e=un(e),ln(n),an)try{return sn(t,e,n)}catch(t){}if("get"in n||"set"in n)throw dn("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var hn=_e,bn=B,pn=N?function(t,e,n){return hn.f(t,e,bn(1,n))}:function(t,e,n){return t[e]=n,t},Zn={exports:{}},In=N,yn=oe,gn=Function.prototype,Xn=In&&Object.getOwnPropertyDescriptor,Gn=yn(gn,"name"),fn={EXISTS:Gn,PROPER:Gn&&"something"===function(){}.name,CONFIGURABLE:Gn&&(!In||In&&Xn(gn,"name").configurable)},Vn=dt,Wn=te,vn=E(Function.toString);Vn(Wn.inspectSource)||(Wn.inspectSource=function(t){return vn(t)});var Cn,Sn,Yn,Rn=Wn.inspectSource,Kn=dt,Nn=Rn,Ln=Y.WeakMap,Jn=Kn(Ln)&&/native code/.test(Nn(Ln)),xn=Dt.exports,Hn=me,kn=xn("keys"),Un=function(t){return kn[t]||(kn[t]=Hn(t))},Tn={},wn=Jn,Fn=Y,An=E,Bn=mt,zn=pn,jn=oe,Mn=te,Qn=Un,Pn=Tn,En=Fn.TypeError,Dn=Fn.WeakMap;if(wn||Mn.state){var On=Mn.state||(Mn.state=new Dn),_n=An(On.get),qn=An(On.has),$n=An(On.set);Cn=function(t,e){if(qn(On,t))throw new En("Object already initialized");return e.facade=t,$n(On,t,e),e},Sn=function(t){return _n(On,t)||{}},Yn=function(t){return qn(On,t)}}else{var ti=Qn("state");Pn[ti]=!0,Cn=function(t,e){if(jn(t,ti))throw new En("Object already initialized");return e.facade=t,zn(t,ti,e),e},Sn=function(t){return jn(t,ti)?t[ti]:{}},Yn=function(t){return jn(t,ti)}}var ei={set:Cn,get:Sn,has:Yn,enforce:function(t){return Yn(t)?Sn(t):Cn(t,{})},getterFor:function(t){return function(e){var n;if(!Bn(e)||(n=Sn(e)).type!==t)throw En("Incompatible receiver, "+t+" required");return n}}},ni=K,ii=dt,ri=oe,ci=N,ai=fn.CONFIGURABLE,oi=Rn,li=ei.enforce,ui=ei.get,di=Object.defineProperty,si=ci&&!ni((function(){return 8!==di((function(){}),"length",{value:8}).length})),mi=String(String).split("String"),hi=Zn.exports=function(t,e,n){if("Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!ri(t,"name")||ai&&t.name!==e)&&di(t,"name",{value:e,configurable:!0}),si&&n&&ri(n,"arity")&&t.length!==n.arity&&di(t,"length",{value:n.arity}),n&&ri(n,"constructor")&&n.constructor){if(ci)try{di(t,"prototype",{writable:!1})}catch(t){}}else t.prototype=void 0;var i=li(t);return ri(i,"source")||(i.source=mi.join("string"==typeof e?e:"")),t};Function.prototype.toString=hi((function(){return ii(this)&&ui(this).source||oi(this)}),"toString");var bi=dt,pi=pn,Zi=Zn.exports,Ii=qt,yi=function(t,e,n,i){i||(i={});var r=i.enumerable,c=void 0!==i.name?i.name:e;return bi(n)&&Zi(n,c,i),i.global?r?t[e]=n:Ii(e,n):(i.unsafe?t[e]&&(r=!0):delete t[e],r?t[e]=n:pi(t,e,n)),t},gi={},Xi=Math.ceil,Gi=Math.floor,fi=Math.trunc||function(t){var e=+t;return(e>0?Gi:Xi)(e)},Vi=fi,Wi=function(t){var e=+t;return e!=e||0===e?0:Vi(e)},vi=Wi,Ci=Math.max,Si=Math.min,Yi=function(t,e){var n=vi(t);return n<0?Ci(n+e,0):Si(n,e)},Ri=Wi,Ki=Math.min,Ni=function(t){return t>0?Ki(Ri(t),9007199254740991):0},Li=Ni,Ji=function(t){return Li(t.length)},xi=ut,Hi=Yi,ki=Ji,Ui=function(t){return function(e,n,i){var r,c=xi(e),a=ki(c),o=Hi(i,a);if(t&&n!=n){for(;a>o;)if((r=c[o++])!=r)return!0}else for(;a>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},Ti={includes:Ui(!0),indexOf:Ui(!1)},wi=oe,Fi=ut,Ai=Ti.indexOf,Bi=Tn,zi=E([].push),ji=function(t,e){var n,i=Fi(t),r=0,c=[];for(n in i)!wi(Bi,n)&&wi(i,n)&&zi(c,n);for(;e.length>r;)wi(i,n=e[r++])&&(~Ai(c,n)||zi(c,n));return c},Mi=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Qi=ji,Pi=Mi.concat("length","prototype");gi.f=Object.getOwnPropertyNames||function(t){return Qi(t,Pi)};var Ei={};Ei.f=Object.getOwnPropertySymbols;var Di=Zt,Oi=gi,_i=Ei,qi=rn,$i=E([].concat),tr=Di("Reflect","ownKeys")||function(t){var e=Oi.f(qi(t)),n=_i.f;return n?$i(e,n(t)):e},er=oe,nr=tr,ir=R,rr=_e,cr=function(t,e,n){for(var i=nr(e),r=rr.f,c=ir.f,a=0;a<i.length;a++){var o=i[a];er(t,o)||n&&er(n,o)||r(t,o,c(e,o))}},ar=K,or=dt,lr=/#|\.prototype\./,ur=function(t,e){var n=sr[dr(t)];return n==hr||n!=mr&&(or(e)?ar(e):!!e)},dr=ur.normalize=function(t){return String(t).replace(lr,".").toLowerCase()},sr=ur.data={},mr=ur.NATIVE="N",hr=ur.POLYFILL="P",br=ur,pr=Y,Zr=R.f,Ir=pn,yr=yi,gr=qt,Xr=cr,Gr=br,fr=function(t,e){var n,i,r,c,o,l=t.target,u=t.global,d=t.stat;if(n=u?pr:d?pr[l]||gr(l,{}):(pr[l]||{}).prototype)for(i in e){if(c=e[i],r=t.dontCallGetSet?(o=Zr(n,i))&&o.value:n[i],!Gr(u?i:l+(d?".":"#")+i,t.forced)&&void 0!==r){if(a(c)==a(r))continue;Xr(c,r)}(t.sham||r&&r.sham)&&Ir(c,"sham",!0),yr(n,i,c,t)}},Vr={};Vr[Ve("toStringTag")]="z";var Wr="[object z]"===String(Vr),vr=Y,Cr=Wr,Sr=dt,Yr=q,Rr=Ve("toStringTag"),Kr=vr.Object,Nr="Arguments"==Yr(function(){return arguments}()),Lr=Cr?Yr:function(t){var e,n,i;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Kr(t),Rr))?n:Nr?Yr(e):"Object"==(i=Yr(e))&&Sr(e.callee)?"Arguments":i},Jr=Lr,xr=Y.String,Hr=function(t){if("Symbol"===Jr(t))throw TypeError("Cannot convert a Symbol value to a string");return xr(t)},kr={},Ur=ji,Tr=Mi,wr=Object.keys||function(t){return Ur(t,Tr)},Fr=N,Ar=qe,Br=_e,zr=rn,jr=ut,Mr=wr;kr.f=Fr&&!Ar?Object.defineProperties:function(t,e){zr(t);for(var n,i=jr(e),r=Mr(e),c=r.length,a=0;c>a;)Br.f(t,n=r[a++],i[n]);return t};var Qr,Pr=Zt("document","documentElement"),Er=rn,Dr=kr,Or=Mi,_r=Tn,qr=Pr,$r=we,tc=Un("IE_PROTO"),ec=function(){},nc=function(t){return"<script>"+t+"<\/script>"},ic=function(t){t.write(nc("")),t.close();var e=t.parentWindow.Object;return t=null,e},rc=function(){try{Qr=new ActiveXObject("htmlfile")}catch(t){}var t,e;rc="undefined"!=typeof document?document.domain&&Qr?ic(Qr):((e=$r("iframe")).style.display="none",qr.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(nc("document.F=Object")),t.close(),t.F):ic(Qr);for(var n=Or.length;n--;)delete rc.prototype[Or[n]];return rc()};_r[tc]=!0;var cc=Object.create||function(t,e){var n;return null!==t?(ec.prototype=Er(t),n=new ec,ec.prototype=null,n[tc]=t):n=rc(),void 0===e?n:Dr.f(n,e)},ac={},oc=He,lc=_e,uc=B,dc=function(t,e,n){var i=oc(e);i in t?lc.f(t,i,uc(0,n)):t[i]=n},sc=Yi,mc=Ji,hc=dc,bc=Y.Array,pc=Math.max,Zc=function(t,e,n){for(var i=mc(t),r=sc(e,i),c=sc(void 0===n?i:n,i),a=bc(pc(c-r,0)),o=0;r<c;r++,o++)hc(a,o,t[r]);return a.length=o,a},Ic=q,yc=ut,gc=gi.f,Xc=Zc,Gc="object"==("undefined"==typeof window?"undefined":a(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];ac.f=function(t){return Gc&&"Window"==Ic(t)?function(t){try{return gc(t)}catch(t){return Xc(Gc)}}(t):gc(yc(t))};var fc={},Vc=Ve;fc.f=Vc;var Wc=Y,vc=oe,Cc=fc,Sc=_e.f,Yc=function(t){var e=Wc.Symbol||(Wc.Symbol={});vc(e,t)||Sc(e,t,{value:Cc.f(t)})},Rc=H,Kc=Zt,Nc=Ve,Lc=yi,Jc=function(){var t=Kc("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,i=Nc("toPrimitive");e&&!e[i]&&Lc(e,i,(function(t){return Rc(n,this)}),{arity:1})},xc=_e.f,Hc=oe,kc=Ve("toStringTag"),Uc=function(t,e,n){t&&!n&&(t=t.prototype),t&&!Hc(t,kc)&&xc(t,kc,{configurable:!0,value:e})},Tc=At,wc=L,Fc=E(E.bind),Ac=function(t,e){return Tc(t),void 0===e?t:wc?Fc(t,e):function(){return t.apply(e,arguments)}},Bc=q,zc=Array.isArray||function(t){return"Array"==Bc(t)},jc=E,Mc=K,Qc=dt,Pc=Lr,Ec=Rn,Dc=function(){},Oc=[],_c=Zt("Reflect","construct"),qc=/^\s*(?:class|function)\b/,$c=jc(qc.exec),ta=!qc.exec(Dc),ea=function(t){if(!Qc(t))return!1;try{return _c(Dc,Oc,t),!0}catch(t){return!1}},na=function(t){if(!Qc(t))return!1;switch(Pc(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ta||!!$c(qc,Ec(t))}catch(t){return!0}};na.sham=!0;var ia=!_c||Mc((function(){var t;return ea(ea.call)||!ea(Object)||!ea((function(){t=!0}))||t}))?na:ea,ra=Y,ca=zc,aa=ia,oa=mt,la=Ve("species"),ua=ra.Array,da=function(t){var e;return ca(t)&&(e=t.constructor,(aa(e)&&(e===ua||ca(e.prototype))||oa(e)&&null===(e=e[la]))&&(e=void 0)),void 0===e?ua:e},sa=function(t,e){return new(da(t))(0===e?0:e)},ma=Ac,ha=rt,ba=re,pa=Ji,Za=sa,Ia=E([].push),ya=function(t){var e=1==t,n=2==t,i=3==t,r=4==t,c=6==t,a=7==t,o=5==t||c;return function(l,u,d,s){for(var m,h,b=ba(l),p=ha(b),Z=ma(u,d),I=pa(p),y=0,g=s||Za,X=e?g(l,I):n||a?g(l,0):void 0;I>y;y++)if((o||y in p)&&(h=Z(m=p[y],y,b),t))if(e)X[y]=h;else if(h)switch(t){case 3:return!0;case 5:return m;case 6:return y;case 2:Ia(X,m)}else switch(t){case 4:return!1;case 7:Ia(X,m)}return c?-1:i||r?r:X}},ga={forEach:ya(0),map:ya(1),filter:ya(2),some:ya(3),every:ya(4),find:ya(5),findIndex:ya(6),filterReject:ya(7)},Xa=fr,Ga=Y,fa=H,Va=E,Wa=N,va=Yt,Ca=K,Sa=oe,Ya=It,Ra=rn,Ka=ut,Na=He,La=Hr,Ja=B,xa=cc,Ha=wr,ka=gi,Ua=ac,Ta=Ei,wa=R,Fa=_e,Aa=kr,Ba=k,za=yi,ja=Dt.exports,Ma=Tn,Qa=me,Pa=Ve,Ea=fc,Da=Yc,Oa=Jc,_a=Uc,qa=ei,$a=ga.forEach,to=Un("hidden"),eo=qa.set,no=qa.getterFor("Symbol"),io=Object.prototype,ro=Ga.Symbol,co=ro&&ro.prototype,ao=Ga.TypeError,oo=Ga.QObject,lo=wa.f,uo=Fa.f,so=Ua.f,mo=Ba.f,ho=Va([].push),bo=ja("symbols"),po=ja("op-symbols"),Zo=ja("wks"),Io=!oo||!oo.prototype||!oo.prototype.findChild,yo=Wa&&Ca((function(){return 7!=xa(uo({},"a",{get:function(){return uo(this,"a",{value:7}).a}})).a}))?function(t,e,n){var i=lo(io,e);i&&delete io[e],uo(t,e,n),i&&t!==io&&uo(io,e,i)}:uo,go=function(t,e){var n=bo[t]=xa(co);return eo(n,{type:"Symbol",tag:t,description:e}),Wa||(n.description=e),n},Xo=function(t,e,n){t===io&&Xo(po,e,n),Ra(t);var i=Na(e);return Ra(n),Sa(bo,i)?(n.enumerable?(Sa(t,to)&&t[to][i]&&(t[to][i]=!1),n=xa(n,{enumerable:Ja(0,!1)})):(Sa(t,to)||uo(t,to,Ja(1,{})),t[to][i]=!0),yo(t,i,n)):uo(t,i,n)},Go=function(t,e){Ra(t);var n=Ka(e),i=Ha(n).concat(vo(n));return $a(i,(function(e){Wa&&!fa(fo,n,e)||Xo(t,e,n[e])})),t},fo=function(t){var e=Na(t),n=fa(mo,this,e);return!(this===io&&Sa(bo,e)&&!Sa(po,e))&&(!(n||!Sa(this,e)||!Sa(bo,e)||Sa(this,to)&&this[to][e])||n)},Vo=function(t,e){var n=Ka(t),i=Na(e);if(n!==io||!Sa(bo,i)||Sa(po,i)){var r=lo(n,i);return!r||!Sa(bo,i)||Sa(n,to)&&n[to][i]||(r.enumerable=!0),r}},Wo=function(t){var e=so(Ka(t)),n=[];return $a(e,(function(t){Sa(bo,t)||Sa(Ma,t)||ho(n,t)})),n},vo=function(t){var e=t===io,n=so(e?po:Ka(t)),i=[];return $a(n,(function(t){!Sa(bo,t)||e&&!Sa(io,t)||ho(i,bo[t])})),i};va||(za(co=(ro=function(){if(Ya(co,this))throw ao("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?La(arguments[0]):void 0,e=Qa(t),n=function t(n){this===io&&fa(t,po,n),Sa(this,to)&&Sa(this[to],e)&&(this[to][e]=!1),yo(this,e,Ja(1,n))};return Wa&&Io&&yo(io,e,{configurable:!0,set:n}),go(e,t)}).prototype,"toString",(function(){return no(this).tag})),za(ro,"withoutSetter",(function(t){return go(Qa(t),t)})),Ba.f=fo,Fa.f=Xo,Aa.f=Go,wa.f=Vo,ka.f=Ua.f=Wo,Ta.f=vo,Ea.f=function(t){return go(Pa(t),t)},Wa&&(uo(co,"description",{configurable:!0,get:function(){return no(this).description}}),za(io,"propertyIsEnumerable",fo,{unsafe:!0}))),Xa({global:!0,constructor:!0,wrap:!0,forced:!va,sham:!va},{Symbol:ro}),$a(Ha(Zo),(function(t){Da(t)})),Xa({target:"Symbol",stat:!0,forced:!va},{useSetter:function(){Io=!0},useSimple:function(){Io=!1}}),Xa({target:"Object",stat:!0,forced:!va,sham:!Wa},{create:function(t,e){return void 0===e?xa(t):Go(xa(t),e)},defineProperty:Xo,defineProperties:Go,getOwnPropertyDescriptor:Vo}),Xa({target:"Object",stat:!0,forced:!va},{getOwnPropertyNames:Wo}),Oa(),_a(ro,"Symbol"),Ma[to]=!0;var Co=Yt&&!!Symbol.for&&!!Symbol.keyFor,So=fr,Yo=Zt,Ro=oe,Ko=Hr,No=Dt.exports,Lo=Co,Jo=No("string-to-symbol-registry"),xo=No("symbol-to-string-registry");So({target:"Symbol",stat:!0,forced:!Lo},{for:function(t){var e=Ko(t);if(Ro(Jo,e))return Jo[e];var n=Yo("Symbol")(e);return Jo[e]=n,xo[n]=e,n}});var Ho=fr,ko=oe,Uo=Ht,To=Ut,wo=Co,Fo=(0,Dt.exports)("symbol-to-string-registry");Ho({target:"Symbol",stat:!0,forced:!wo},{keyFor:function(t){if(!Uo(t))throw TypeError(To(t)+" is not a symbol");if(ko(Fo,t))return Fo[t]}});var Ao=L,Bo=Function.prototype,zo=Bo.apply,jo=Bo.call,Mo="object"==("undefined"==typeof Reflect?"undefined":a(Reflect))&&Reflect.apply||(Ao?jo.bind(zo):function(){return jo.apply(zo,arguments)}),Qo=E([].slice),Po=fr,Eo=Zt,Do=Mo,Oo=H,_o=E,qo=K,$o=zc,tl=dt,el=mt,nl=Ht,il=Qo,rl=Yt,cl=Eo("JSON","stringify"),al=_o(/./.exec),ol=_o("".charAt),ll=_o("".charCodeAt),ul=_o("".replace),dl=_o(1..toString),sl=/[\uD800-\uDFFF]/g,ml=/^[\uD800-\uDBFF]$/,hl=/^[\uDC00-\uDFFF]$/,bl=!rl||qo((function(){var t=Eo("Symbol")();return"[null]"!=cl([t])||"{}"!=cl({a:t})||"{}"!=cl(Object(t))})),pl=qo((function(){return'"\\udf06\\ud834"'!==cl("\udf06\ud834")||'"\\udead"'!==cl("\udead")})),Zl=function(t,e){var n=il(arguments),i=e;if((el(e)||void 0!==t)&&!nl(t))return $o(e)||(e=function(t,e){if(tl(i)&&(e=Oo(i,this,t,e)),!nl(e))return e}),n[1]=e,Do(cl,null,n)},Il=function(t,e,n){var i=ol(n,e-1),r=ol(n,e+1);return al(ml,t)&&!al(hl,r)||al(hl,t)&&!al(ml,i)?"\\u"+dl(ll(t,0),16):t};cl&&Po({target:"JSON",stat:!0,arity:3,forced:bl||pl},{stringify:function(t,e,n){var i=il(arguments),r=Do(bl?Zl:cl,null,i);return pl&&"string"==typeof r?ul(r,sl,Il):r}});var yl=Ei,gl=re;fr({target:"Object",stat:!0,forced:!Yt||K((function(){yl.f(1)}))},{getOwnPropertySymbols:function(t){var e=yl.f;return e?e(gl(t)):[]}});var Xl=fr,Gl=N,fl=Y,Vl=E,Wl=oe,vl=dt,Cl=It,Sl=Hr,Yl=_e.f,Rl=cr,Kl=fl.Symbol,Nl=Kl&&Kl.prototype;if(Gl&&vl(Kl)&&(!("description"in Nl)||void 0!==Kl().description)){var Ll={},Jl=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Sl(arguments[0]),e=Cl(Nl,this)?new Kl(t):void 0===t?Kl():Kl(t);return""===t&&(Ll[e]=!0),e};Rl(Jl,Kl),Jl.prototype=Nl,Nl.constructor=Jl;var xl="Symbol(test)"==String(Kl("test")),Hl=Vl(Nl.toString),kl=Vl(Nl.valueOf),Ul=/^Symbol\((.*)\)[^)]+$/,Tl=Vl("".replace),wl=Vl("".slice);Yl(Nl,"description",{configurable:!0,get:function(){var t=kl(this),e=Hl(t);if(Wl(Ll,t))return"";var n=xl?wl(e,7,-1):Tl(e,Ul,"$1");return""===n?void 0:n}}),Xl({global:!0,constructor:!0,forced:!0},{Symbol:Jl})}Yc("asyncIterator"),Yc("hasInstance"),Yc("isConcatSpreadable"),Yc("iterator"),Yc("match"),Yc("matchAll"),Yc("replace"),Yc("search"),Yc("species"),Yc("split");var Fl=Jc;Yc("toPrimitive"),Fl();var Al=Zt,Bl=Uc;Yc("toStringTag"),Bl(Al("Symbol"),"Symbol"),Yc("unscopables");var zl=K,jl=vt,Ml=Ve("species"),Ql=function(t){return jl>=51||!zl((function(){var e=[];return(e.constructor={})[Ml]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Pl=fr,El=Y,Dl=K,Ol=zc,_l=mt,ql=re,$l=Ji,tu=dc,eu=sa,nu=Ql,iu=vt,ru=Ve("isConcatSpreadable"),cu=El.TypeError,au=iu>=51||!Dl((function(){var t=[];return t[ru]=!1,t.concat()[0]!==t})),ou=nu("concat"),lu=function(t){if(!_l(t))return!1;var e=t[ru];return void 0!==e?!!e:Ol(t)};Pl({target:"Array",proto:!0,arity:1,forced:!au||!ou},{concat:function(t){var e,n,i,r,c,a=ql(this),o=eu(a,0),l=0;for(e=-1,i=arguments.length;e<i;e++)if(lu(c=-1===e?a:arguments[e])){if(l+(r=$l(c))>9007199254740991)throw cu("Maximum allowed index exceeded");for(n=0;n<r;n++,l++)n in c&&tu(o,l,c[n])}else{if(l>=9007199254740991)throw cu("Maximum allowed index exceeded");tu(o,l++,c)}return o.length=l,o}});var uu=re,du=Yi,su=Ji,mu=Math.min,hu=[].copyWithin||function(t,e){var n=uu(this),i=su(n),r=du(t,i),c=du(e,i),a=arguments.length>2?arguments[2]:void 0,o=mu((void 0===a?i:du(a,i))-c,i-r),l=1;for(c<r&&r<c+o&&(l=-1,c+=o-1,r+=o-1);o-- >0;)c in n?n[r]=n[c]:delete n[r],r+=l,c+=l;return n},bu=Ve,pu=cc,Zu=_e.f,Iu=bu("unscopables"),yu=Array.prototype;null==yu[Iu]&&Zu(yu,Iu,{configurable:!0,value:pu(null)});var gu=function(t){yu[Iu][t]=!0},Xu=gu;fr({target:"Array",proto:!0},{copyWithin:hu}),Xu("copyWithin");var Gu=re,fu=Yi,Vu=Ji,Wu=function(t){for(var e=Gu(this),n=Vu(e),i=arguments.length,r=fu(i>1?arguments[1]:void 0,n),c=i>2?arguments[2]:void 0,a=void 0===c?n:fu(c,n);a>r;)e[r++]=t;return e},vu=gu;fr({target:"Array",proto:!0},{fill:Wu}),vu("fill");var Cu=ga.filter;fr({target:"Array",proto:!0,forced:!Ql("filter")},{filter:function(t){return Cu(this,t,arguments.length>1?arguments[1]:void 0)}});var Su=fr,Yu=ga.find,Ru=gu,Ku=!0;"find"in[]&&Array(1).find((function(){Ku=!1})),Su({target:"Array",proto:!0,forced:Ku},{find:function(t){return Yu(this,t,arguments.length>1?arguments[1]:void 0)}}),Ru("find");var Nu=fr,Lu=ga.findIndex,Ju=gu,xu=!0;"findIndex"in[]&&Array(1).findIndex((function(){xu=!1})),Nu({target:"Array",proto:!0,forced:xu},{findIndex:function(t){return Lu(this,t,arguments.length>1?arguments[1]:void 0)}}),Ju("findIndex");var Hu=zc,ku=Ji,Uu=Ac,Tu=Y.TypeError,wu=function t(e,n,i,r,c,a,o,l){for(var u,d=c,s=0,m=!!o&&Uu(o,l);s<r;){if(s in i){if(u=m?m(i[s],s,n):i[s],a>0&&Hu(u))d=t(e,n,u,ku(u),d,a-1)-1;else{if(d>=9007199254740991)throw Tu("Exceed the acceptable array length");e[d]=u}d++}s++}return d},Fu=wu,Au=re,Bu=Ji,zu=Wi,ju=sa;fr({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=Au(this),n=Bu(e),i=ju(e,0);return i.length=Fu(i,e,e,n,0,void 0===t?1:zu(t)),i}});var Mu=wu,Qu=At,Pu=re,Eu=Ji,Du=sa;fr({target:"Array",proto:!0},{flatMap:function(t){var e,n=Pu(this),i=Eu(n);return Qu(t),(e=Du(n,0)).length=Mu(e,n,n,i,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var Ou=H,_u=rn,qu=zt,$u=function(t,e,n){var i,r;_u(t);try{if(!(i=qu(t,"return"))){if("throw"===e)throw n;return n}i=Ou(i,t)}catch(t){r=!0,i=t}if("throw"===e)throw n;if(r)throw i;return _u(i),n},td=rn,ed=$u,nd={},id=nd,rd=Ve("iterator"),cd=Array.prototype,ad=function(t){return void 0!==t&&(id.Array===t||cd[rd]===t)},od=Lr,ld=zt,ud=nd,dd=Ve("iterator"),sd=function(t){if(null!=t)return ld(t,dd)||ld(t,"@@iterator")||ud[od(t)]},md=H,hd=At,bd=rn,pd=Ut,Zd=sd,Id=Y.TypeError,yd=function(t,e){var n=arguments.length<2?Zd(t):e;if(hd(n))return bd(md(n,t));throw Id(pd(t)+" is not iterable")},gd=Ac,Xd=H,Gd=re,fd=function(t,e,n,i){try{return i?e(td(n)[0],n[1]):e(n)}catch(e){ed(t,"throw",e)}},Vd=ad,Wd=ia,vd=Ji,Cd=dc,Sd=yd,Yd=sd,Rd=Y.Array,Kd=function(t){var e=Gd(t),n=Wd(this),i=arguments.length,r=i>1?arguments[1]:void 0,c=void 0!==r;c&&(r=gd(r,i>2?arguments[2]:void 0));var a,o,l,u,d,s,m=Yd(e),h=0;if(!m||this==Rd&&Vd(m))for(a=vd(e),o=n?new this(a):Rd(a);a>h;h++)s=c?r(e[h],h):e[h],Cd(o,h,s);else for(d=(u=Sd(e,m)).next,o=n?new this:[];!(l=Xd(d,u)).done;h++)s=c?fd(u,r,[l.value,h],!0):l.value,Cd(o,h,s);return o.length=h,o},Nd=Ve("iterator"),Ld=!1;try{var Jd=0,xd={next:function(){return{done:!!Jd++}},return:function(){Ld=!0}};xd[Nd]=function(){return this},Array.from(xd,(function(){throw 2}))}catch(t){}var Hd=function(t,e){if(!e&&!Ld)return!1;var n=!1;try{var i={};i[Nd]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n},kd=Kd;fr({target:"Array",stat:!0,forced:!Hd((function(t){Array.from(t)}))},{from:kd});var Ud=Ti.includes,Td=gu;fr({target:"Array",proto:!0,forced:K((function(){return!Array(1).includes()}))},{includes:function(t){return Ud(this,t,arguments.length>1?arguments[1]:void 0)}}),Td("includes");var wd,Fd,Ad,Bd=!K((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),zd=Y,jd=oe,Md=dt,Qd=re,Pd=Bd,Ed=Un("IE_PROTO"),Dd=zd.Object,Od=Dd.prototype,_d=Pd?Dd.getPrototypeOf:function(t){var e=Qd(t);if(jd(e,Ed))return e[Ed];var n=e.constructor;return Md(n)&&e instanceof n?n.prototype:e instanceof Dd?Od:null},qd=K,$d=dt,ts=_d,es=yi,ns=Ve("iterator"),is=!1;[].keys&&("next"in(Ad=[].keys())?(Fd=ts(ts(Ad)))!==Object.prototype&&(wd=Fd):is=!0);var rs=null==wd||qd((function(){var t={};return wd[ns].call(t)!==t}));rs&&(wd={}),$d(wd[ns])||es(wd,ns,(function(){return this}));var cs={IteratorPrototype:wd,BUGGY_SAFARI_ITERATORS:is},as=cs.IteratorPrototype,os=cc,ls=B,us=Uc,ds=nd,ss=function(){return this},ms=function(t,e,n,i){var r=e+" Iterator";return t.prototype=os(as,{next:ls(+!i,n)}),us(t,r,!1),ds[r]=ss,t},hs=Y,bs=dt,ps=hs.String,Zs=hs.TypeError,Is=function(t){if("object"==a(t)||bs(t))return t;throw Zs("Can't set "+ps(t)+" as a prototype")},ys=E,gs=rn,Xs=Is,Gs=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=ys(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return gs(n),Xs(i),e?t(n,i):n.__proto__=i,n}}():void 0),fs=fr,Vs=H,Ws=dt,vs=ms,Cs=_d,Ss=Gs,Ys=Uc,Rs=pn,Ks=yi,Ns=nd,Ls=fn.PROPER,Js=fn.CONFIGURABLE,xs=cs.IteratorPrototype,Hs=cs.BUGGY_SAFARI_ITERATORS,ks=Ve("iterator"),Us=function(){return this},Ts=function(t,e,n,i,r,c,a){vs(n,e,i);var o,l,u,d=function(t){if(t===r&&p)return p;if(!Hs&&t in h)return h[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},s=e+" Iterator",m=!1,h=t.prototype,b=h[ks]||h["@@iterator"]||r&&h[r],p=!Hs&&b||d(r),Z="Array"==e&&h.entries||b;if(Z&&(o=Cs(Z.call(new t)))!==Object.prototype&&o.next&&(Cs(o)!==xs&&(Ss?Ss(o,xs):Ws(o[ks])||Ks(o,ks,Us)),Ys(o,s,!0)),Ls&&"values"==r&&b&&"values"!==b.name&&(Js?Rs(h,"name","values"):(m=!0,p=function(){return Vs(b,this)})),r)if(l={values:d("values"),keys:c?p:d("keys"),entries:d("entries")},a)for(u in l)(Hs||m||!(u in h))&&Ks(h,u,l[u]);else fs({target:e,proto:!0,forced:Hs||m},l);return h[ks]!==p&&Ks(h,ks,p,{name:r}),Ns[e]=p,l},ws=ut,Fs=gu,As=nd,Bs=ei,zs=_e.f,js=Ts,Ms=N,Qs=Bs.set,Ps=Bs.getterFor("Array Iterator"),Es=js(Array,"Array",(function(t,e){Qs(this,{type:"Array Iterator",target:ws(t),index:0,kind:e})}),(function(){var t=Ps(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:e[i],done:!1}:{value:[i,e[i]],done:!1}}),"values"),Ds=As.Arguments=As.Array;if(Fs("keys"),Fs("values"),Fs("entries"),Ms&&"values"!==Ds.name)try{zs(Ds,"name",{value:"values"})}catch(t){}var Os=K,_s=function(t,e){var n=[][t];return!!n&&Os((function(){n.call(null,e||function(){return 1},1)}))},qs=fr,$s=rt,tm=ut,em=_s,nm=E([].join),im=$s!=Object,rm=em("join",",");qs({target:"Array",proto:!0,forced:im||!rm},{join:function(t){return nm(tm(this),void 0===t?",":t)}});var cm=ga.map;fr({target:"Array",proto:!0,forced:!Ql("map")},{map:function(t){return cm(this,t,arguments.length>1?arguments[1]:void 0)}});var am=fr,om=K,lm=ia,um=dc,dm=Y.Array;am({target:"Array",stat:!0,forced:om((function(){function t(){}return!(dm.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(lm(this)?this:dm)(e);e>t;)um(n,t,arguments[t++]);return n.length=e,n}});var sm=fr,mm=Y,hm=zc,bm=ia,pm=mt,Zm=Yi,Im=Ji,ym=ut,gm=dc,Xm=Ve,Gm=Qo,fm=Ql("slice"),Vm=Xm("species"),Wm=mm.Array,vm=Math.max;sm({target:"Array",proto:!0,forced:!fm},{slice:function(t,e){var n,i,r,c=ym(this),a=Im(c),o=Zm(t,a),l=Zm(void 0===e?a:e,a);if(hm(c)&&(n=c.constructor,(bm(n)&&(n===Wm||hm(n.prototype))||pm(n)&&null===(n=n[Vm]))&&(n=void 0),n===Wm||void 0===n))return Gm(c,o,l);for(i=new(void 0===n?Wm:n)(vm(l-o,0)),r=0;o<l;o++,r++)o in c&&gm(i,r,c[o]);return i.length=r,i}});var Cm=Zc,Sm=Math.floor,Ym=function(t,e){for(var n,i,r=t.length,c=1;c<r;){for(i=c,n=t[c];i&&e(t[i-1],n)>0;)t[i]=t[--i];i!==c++&&(t[i]=n)}return t},Rm=function(t,e,n,i){for(var r=e.length,c=n.length,a=0,o=0;a<r||o<c;)t[a+o]=a<r&&o<c?i(e[a],n[o])<=0?e[a++]:n[o++]:a<r?e[a++]:n[o++];return t},Km=function t(e,n){var i=e.length,r=Sm(i/2);return i<8?Ym(e,n):Rm(e,t(Cm(e,0,r),n),t(Cm(e,r),n),n)},Nm=yt.match(/firefox\/(\d+)/i),Lm=!!Nm&&+Nm[1],Jm=/MSIE|Trident/.test(yt),xm=yt.match(/AppleWebKit\/(\d+)\./),Hm=!!xm&&+xm[1],km=fr,Um=E,Tm=At,wm=re,Fm=Ji,Am=Hr,Bm=K,zm=Km,jm=_s,Mm=Lm,Qm=Jm,Pm=vt,Em=Hm,Dm=[],Om=Um(Dm.sort),_m=Um(Dm.push),qm=Bm((function(){Dm.sort(void 0)})),$m=Bm((function(){Dm.sort(null)})),th=jm("sort"),eh=!Bm((function(){if(Pm)return Pm<70;if(!(Mm&&Mm>3)){if(Qm)return!0;if(Em)return Em<603;var t,e,n,i,r="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(i=0;i<47;i++)Dm.push({k:e+i,v:n})}for(Dm.sort((function(t,e){return e.v-t.v})),i=0;i<Dm.length;i++)e=Dm[i].k.charAt(0),r.charAt(r.length-1)!==e&&(r+=e);return"DGBEFHACIJK"!==r}}));km({target:"Array",proto:!0,forced:qm||!$m||!th||!eh},{sort:function(t){void 0!==t&&Tm(t);var e=wm(this);if(eh)return void 0===t?Om(e):Om(e,t);var n,i,r=[],c=Fm(e);for(i=0;i<c;i++)i in e&&_m(r,e[i]);for(zm(r,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:Am(e)>Am(n)?1:-1}}(t)),n=r.length,i=0;i<n;)e[i]=r[i++];for(;i<c;)delete e[i++];return e}});var nh=Zt,ih=_e,rh=N,ch=Ve("species"),ah=function(t){var e=nh(t),n=ih.f;rh&&e&&!e[ch]&&n(e,ch,{configurable:!0,get:function(){return this}})};ah("Array");var oh=fr,lh=Y,uh=Yi,dh=Wi,sh=Ji,mh=re,hh=sa,bh=dc,ph=Ql("splice"),Zh=lh.TypeError,Ih=Math.max,yh=Math.min;oh({target:"Array",proto:!0,forced:!ph},{splice:function(t,e){var n,i,r,c,a,o,l=mh(this),u=sh(l),d=uh(t,u),s=arguments.length;if(0===s?n=i=0:1===s?(n=0,i=u-d):(n=s-2,i=yh(Ih(dh(e),0),u-d)),u+n-i>9007199254740991)throw Zh("Maximum allowed length exceeded");for(r=hh(l,i),c=0;c<i;c++)(a=d+c)in l&&bh(r,c,l[a]);if(r.length=i,n<i){for(c=d;c<u-i;c++)o=c+n,(a=c+i)in l?l[o]=l[a]:delete l[o];for(c=u;c>u-i+n;c--)delete l[c-1]}else if(n>i)for(c=u-i;c>d;c--)o=c+n-1,(a=c+i-1)in l?l[o]=l[a]:delete l[o];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-i+n,r}}),gu("flat"),gu("flatMap");var gh="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Xh=yi,Gh=function(t,e,n){for(var i in e)Xh(t,i,e[i],n);return t},fh=It,Vh=Y.TypeError,Wh=function(t,e){if(fh(e,t))return t;throw Vh("Incorrect invocation")},vh=Wi,Ch=Ni,Sh=Y.RangeError,Yh=function(t){if(void 0===t)return 0;var e=vh(t),n=Ch(e);if(e!==n)throw Sh("Wrong length or index");return n},Rh=Y.Array,Kh=Math.abs,Nh=Math.pow,Lh=Math.floor,Jh=Math.log,xh=Math.LN2,Hh={pack:function(t,e,n){var i,r,c,a=Rh(n),o=8*n-e-1,l=(1<<o)-1,u=l>>1,d=23===e?Nh(2,-24)-Nh(2,-77):0,s=t<0||0===t&&1/t<0?1:0,m=0;for((t=Kh(t))!=t||t===1/0?(r=t!=t?1:0,i=l):(i=Lh(Jh(t)/xh),t*(c=Nh(2,-i))<1&&(i--,c*=2),(t+=i+u>=1?d/c:d*Nh(2,1-u))*c>=2&&(i++,c/=2),i+u>=l?(r=0,i=l):i+u>=1?(r=(t*c-1)*Nh(2,e),i+=u):(r=t*Nh(2,u-1)*Nh(2,e),i=0));e>=8;)a[m++]=255&r,r/=256,e-=8;for(i=i<<e|r,o+=e;o>0;)a[m++]=255&i,i/=256,o-=8;return a[--m]|=128*s,a},unpack:function(t,e){var n,i=t.length,r=8*i-e-1,c=(1<<r)-1,a=c>>1,o=r-7,l=i-1,u=t[l--],d=127&u;for(u>>=7;o>0;)d=256*d+t[l--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=e;o>0;)n=256*n+t[l--],o-=8;if(0===d)d=1-a;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=Nh(2,e),d-=a}return(u?-1:1)*n*Nh(2,d-e)}},kh=Y,Uh=E,Th=N,wh=gh,Fh=fn,Ah=pn,Bh=Gh,zh=K,jh=Wh,Mh=Wi,Qh=Ni,Ph=Yh,Eh=Hh,Dh=_d,Oh=Gs,_h=gi.f,qh=_e.f,$h=Wu,tb=Zc,eb=Uc,nb=Fh.PROPER,ib=Fh.CONFIGURABLE,rb=ei.get,cb=ei.set,ab=kh.ArrayBuffer,ob=ab,lb=ob&&ob.prototype,ub=kh.DataView,db=ub&&ub.prototype,sb=Object.prototype,mb=kh.Array,hb=kh.RangeError,bb=Uh($h),pb=Uh([].reverse),Zb=Eh.pack,Ib=Eh.unpack,yb=function(t){return[255&t]},gb=function(t){return[255&t,t>>8&255]},Xb=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Gb=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},fb=function(t){return Zb(t,23,4)},Vb=function(t){return Zb(t,52,8)},Wb=function(t,e){qh(t.prototype,e,{get:function(){return rb(this)[e]}})},vb=function(t,e,n,i){var r=Ph(n),c=rb(t);if(r+e>c.byteLength)throw hb("Wrong index");var a=rb(c.buffer).bytes,o=r+c.byteOffset,l=tb(a,o,o+e);return i?l:pb(l)},Cb=function(t,e,n,i,r,c){var a=Ph(n),o=rb(t);if(a+e>o.byteLength)throw hb("Wrong index");for(var l=rb(o.buffer).bytes,u=a+o.byteOffset,d=i(+r),s=0;s<e;s++)l[u+s]=d[c?s:e-s-1]};if(wh){var Sb=nb&&"ArrayBuffer"!==ab.name;if(zh((function(){ab(1)}))&&zh((function(){new ab(-1)}))&&!zh((function(){return new ab,new ab(1.5),new ab(NaN),Sb&&!ib})))Sb&&ib&&Ah(ab,"name","ArrayBuffer");else{(ob=function(t){return jh(this,lb),new ab(Ph(t))}).prototype=lb;for(var Yb,Rb=_h(ab),Kb=0;Rb.length>Kb;)(Yb=Rb[Kb++])in ob||Ah(ob,Yb,ab[Yb]);lb.constructor=ob}Oh&&Dh(db)!==sb&&Oh(db,sb);var Nb=new ub(new ob(2)),Lb=Uh(db.setInt8);Nb.setInt8(0,2147483648),Nb.setInt8(1,2147483649),!Nb.getInt8(0)&&Nb.getInt8(1)||Bh(db,{setInt8:function(t,e){Lb(this,t,e<<24>>24)},setUint8:function(t,e){Lb(this,t,e<<24>>24)}},{unsafe:!0})}else ob=function(t){jh(this,lb);var e=Ph(t);cb(this,{bytes:bb(mb(e),0),byteLength:e}),Th||(this.byteLength=e)},lb=ob.prototype,ub=function(t,e,n){jh(this,db),jh(t,lb);var i=rb(t).byteLength,r=Mh(e);if(r<0||r>i)throw hb("Wrong offset");if(r+(n=void 0===n?i-r:Qh(n))>i)throw hb("Wrong length");cb(this,{buffer:t,byteLength:n,byteOffset:r}),Th||(this.buffer=t,this.byteLength=n,this.byteOffset=r)},db=ub.prototype,Th&&(Wb(ob,"byteLength"),Wb(ub,"buffer"),Wb(ub,"byteLength"),Wb(ub,"byteOffset")),Bh(db,{getInt8:function(t){return vb(this,1,t)[0]<<24>>24},getUint8:function(t){return vb(this,1,t)[0]},getInt16:function(t){var e=vb(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=vb(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Gb(vb(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Gb(vb(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Ib(vb(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Ib(vb(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){Cb(this,1,t,yb,e)},setUint8:function(t,e){Cb(this,1,t,yb,e)},setInt16:function(t,e){Cb(this,2,t,gb,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){Cb(this,2,t,gb,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){Cb(this,4,t,Xb,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){Cb(this,4,t,Xb,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){Cb(this,4,t,fb,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){Cb(this,8,t,Vb,e,arguments.length>2?arguments[2]:void 0)}});eb(ob,"ArrayBuffer"),eb(ub,"DataView");var Jb={ArrayBuffer:ob,DataView:ub},xb=ah,Hb=Jb.ArrayBuffer;fr({global:!0,constructor:!0,forced:Y.ArrayBuffer!==Hb},{ArrayBuffer:Hb}),xb("ArrayBuffer");var kb=rn,Ub=Et,Tb=Y.TypeError,wb=oe,Fb=yi,Ab=function(t){if(kb(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw Tb("Incorrect hint");return Ub(this,t)},Bb=Ve("toPrimitive"),zb=Date.prototype;wb(zb,Bb)||Fb(zb,Bb,Ab);var jb=dt,Mb=mt,Qb=_e,Pb=_d,Eb=Ve,Db=Zn.exports,Ob=Eb("hasInstance"),_b=Function.prototype;Ob in _b||Qb.f(_b,Ob,{value:Db((function(t){if(!jb(this)||!Mb(t))return!1;var e=this.prototype;if(!Mb(e))return t instanceof this;for(;t=Pb(t);)if(e===t)return!0;return!1}),Ob)});var qb=N,$b=fn.EXISTS,tp=E,ep=_e.f,np=Function.prototype,ip=tp(np.toString),rp=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,cp=tp(rp.exec);qb&&!$b&&ep(np,"name",{configurable:!0,get:function(){try{return cp(rp,ip(this))[1]}catch(t){return""}}}),fr({global:!0},{globalThis:Y}),Uc(Y.JSON,"JSON",!0);var ap={exports:{}},op=K((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),lp=K,up=mt,dp=q,sp=op,mp=Object.isExtensible,hp=lp((function(){mp(1)}))||sp?function(t){return!!up(t)&&((!sp||"ArrayBuffer"!=dp(t))&&(!mp||mp(t)))}:mp,bp=!K((function(){return Object.isExtensible(Object.preventExtensions({}))})),pp=fr,Zp=E,Ip=Tn,yp=mt,gp=oe,Xp=_e.f,Gp=gi,fp=ac,Vp=hp,Wp=bp,vp=!1,Cp=me("meta"),Sp=0,Yp=function(t){Xp(t,Cp,{value:{objectID:"O"+Sp++,weakData:{}}})},Rp=ap.exports={enable:function(){Rp.enable=function(){},vp=!0;var t=Gp.f,e=Zp([].splice),n={};n[Cp]=1,t(n).length&&(Gp.f=function(n){for(var i=t(n),r=0,c=i.length;r<c;r++)if(i[r]===Cp){e(i,r,1);break}return i},pp({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:fp.f}))},fastKey:function(t,e){if(!yp(t))return"symbol"==a(t)?t:("string"==typeof t?"S":"P")+t;if(!gp(t,Cp)){if(!Vp(t))return"F";if(!e)return"E";Yp(t)}return t[Cp].objectID},getWeakData:function(t,e){if(!gp(t,Cp)){if(!Vp(t))return!0;if(!e)return!1;Yp(t)}return t[Cp].weakData},onFreeze:function(t){return Wp&&vp&&Vp(t)&&!gp(t,Cp)&&Yp(t),t}};Ip[Cp]=!0;var Kp=Ac,Np=H,Lp=rn,Jp=Ut,xp=ad,Hp=Ji,kp=It,Up=yd,Tp=sd,wp=$u,Fp=Y.TypeError,Ap=function(t,e){this.stopped=t,this.result=e},Bp=Ap.prototype,zp=function(t,e,n){var i,r,c,o,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),h=!(!n||!n.IS_ITERATOR),b=!(!n||!n.INTERRUPTED),p=Kp(e,s),Z=function(t){return i&&wp(i,"normal",t),new Ap(!0,t)},I=function(t){return m?(Lp(t),b?p(t[0],t[1],Z):p(t[0],t[1])):b?p(t,Z):p(t)};if(h)i=t;else{if(!(r=Tp(t)))throw Fp(Jp(t)+" is not iterable");if(xp(r)){for(c=0,o=Hp(t);o>c;c++)if((l=I(t[c]))&&kp(Bp,l))return l;return new Ap(!1)}i=Up(t,r)}for(u=i.next;!(d=Np(u,i)).done;){try{l=I(d.value)}catch(t){wp(i,"throw",t)}if("object"==a(l)&&l&&kp(Bp,l))return l}return new Ap(!1)},jp=dt,Mp=mt,Qp=Gs,Pp=function(t,e,n){var i,r;return Qp&&jp(i=e.constructor)&&i!==n&&Mp(r=i.prototype)&&r!==n.prototype&&Qp(t,r),t},Ep=fr,Dp=Y,Op=E,_p=br,qp=yi,$p=ap.exports,tZ=zp,eZ=Wh,nZ=dt,iZ=mt,rZ=K,cZ=Hd,aZ=Uc,oZ=Pp,lZ=function(t,e,n){var i=-1!==t.indexOf("Map"),r=-1!==t.indexOf("Weak"),c=i?"set":"add",a=Dp[t],o=a&&a.prototype,l=a,u={},d=function(t){var e=Op(o[t]);qp(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(r&&!iZ(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return r&&!iZ(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(r&&!iZ(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(_p(t,!nZ(a)||!(r||o.forEach&&!rZ((function(){(new a).entries().next()})))))l=n.getConstructor(e,t,i,c),$p.enable();else if(_p(t,!0)){var s=new l,m=s[c](r?{}:-0,1)!=s,h=rZ((function(){s.has(1)})),b=cZ((function(t){new a(t)})),p=!r&&rZ((function(){for(var t=new a,e=5;e--;)t[c](e,e);return!t.has(-0)}));b||((l=e((function(t,e){eZ(t,o);var n=oZ(new a,t,l);return null!=e&&tZ(e,n[c],{that:n,AS_ENTRIES:i}),n}))).prototype=o,o.constructor=l),(h||p)&&(d("delete"),d("has"),i&&d("get")),(p||m)&&d(c),r&&o.clear&&delete o.clear}return u[t]=l,Ep({global:!0,constructor:!0,forced:l!=a},u),aZ(l,t),r||n.setStrong(l,t,i),l},uZ=_e.f,dZ=cc,sZ=Gh,mZ=Ac,hZ=Wh,bZ=zp,pZ=Ts,ZZ=ah,IZ=N,yZ=ap.exports.fastKey,gZ=ei.set,XZ=ei.getterFor,GZ={getConstructor:function(t,e,n,i){var r=t((function(t,r){hZ(t,c),gZ(t,{type:e,index:dZ(null),first:void 0,last:void 0,size:0}),IZ||(t.size=0),null!=r&&bZ(r,t[i],{that:t,AS_ENTRIES:n})})),c=r.prototype,a=XZ(e),o=function(t,e,n){var i,r,c=a(t),o=l(t,e);return o?o.value=n:(c.last=o={index:r=yZ(e,!0),key:e,value:n,previous:i=c.last,next:void 0,removed:!1},c.first||(c.first=o),i&&(i.next=o),IZ?c.size++:t.size++,"F"!==r&&(c.index[r]=o)),t},l=function(t,e){var n,i=a(t),r=yZ(e);if("F"!==r)return i.index[r];for(n=i.first;n;n=n.next)if(n.key==e)return n};return sZ(c,{clear:function(){for(var t=a(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,IZ?t.size=0:this.size=0},delete:function(t){var e=this,n=a(e),i=l(e,t);if(i){var r=i.next,c=i.previous;delete n.index[i.index],i.removed=!0,c&&(c.next=r),r&&(r.previous=c),n.first==i&&(n.first=r),n.last==i&&(n.last=c),IZ?n.size--:e.size--}return!!i},forEach:function(t){for(var e,n=a(this),i=mZ(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(i(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!l(this,t)}}),sZ(c,n?{get:function(t){var e=l(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),IZ&&uZ(c,"size",{get:function(){return a(this).size}}),r},setStrong:function(t,e,n){var i=e+" Iterator",r=XZ(e),c=XZ(i);pZ(t,e,(function(t,e){gZ(this,{type:i,target:t,state:r(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),ZZ(e)}};lZ("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),GZ);var fZ=Math.log,VZ=Math.log1p||function(t){var e=+t;return e>-1e-8&&e<1e-8?e-e*e/2:fZ(1+e)},WZ=fr,vZ=VZ,CZ=Math.acosh,SZ=Math.log,YZ=Math.sqrt,RZ=Math.LN2;WZ({target:"Math",stat:!0,forced:!CZ||710!=Math.floor(CZ(Number.MAX_VALUE))||CZ(1/0)!=1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?SZ(e)+RZ:vZ(e-1+YZ(e-1)*YZ(e+1))}});var KZ=fr,NZ=Math.asinh,LZ=Math.log,JZ=Math.sqrt;KZ({target:"Math",stat:!0,forced:!(NZ&&1/NZ(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!=n?n<0?-t(-n):LZ(n+JZ(n*n+1)):n}});var xZ=fr,HZ=Math.atanh,kZ=Math.log;xZ({target:"Math",stat:!0,forced:!(HZ&&1/HZ(-0)<0)},{atanh:function(t){var e=+t;return 0==e?e:kZ((1+e)/(1-e))/2}});var UZ=Math.sign||function(t){var e=+t;return 0==e||e!=e?e:e<0?-1:1},TZ=fr,wZ=UZ,FZ=Math.abs,AZ=Math.pow;TZ({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return wZ(e)*AZ(FZ(e),1/3)}});var BZ=fr,zZ=Math.floor,jZ=Math.log,MZ=Math.LOG2E;BZ({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-zZ(jZ(e+.5)*MZ):32}});var QZ=Math.expm1,PZ=Math.exp,EZ=!QZ||QZ(10)>22025.465794806718||QZ(10)<22025.465794806718||-2e-17!=QZ(-2e-17)?function(t){var e=+t;return 0==e?e:e>-1e-6&&e<1e-6?e+e*e/2:PZ(e)-1}:QZ,DZ=fr,OZ=EZ,_Z=Math.cosh,qZ=Math.abs,$Z=Math.E;DZ({target:"Math",stat:!0,forced:!_Z||_Z(710)===1/0},{cosh:function(t){var e=OZ(qZ(t)-1)+1;return(e+1/(e*$Z*$Z))*($Z/2)}});var tI=EZ;fr({target:"Math",stat:!0,forced:tI!=Math.expm1},{expm1:tI});var eI=UZ,nI=Math.abs,iI=Math.pow,rI=iI(2,-52),cI=iI(2,-23),aI=iI(2,127)*(2-cI),oI=iI(2,-126),lI=Math.fround||function(t){var e,n,i=+t,r=nI(i),c=eI(i);return r<oI?c*function(t){return t+1/rI-1/rI}(r/oI/cI)*oI*cI:(n=(e=(1+cI/rI)*r)-(e-r))>aI||n!=n?c*(1/0):c*n};fr({target:"Math",stat:!0},{fround:lI});var uI=fr,dI=Math.hypot,sI=Math.abs,mI=Math.sqrt;uI({target:"Math",stat:!0,arity:2,forced:!!dI&&dI(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,i,r=0,c=0,a=arguments.length,o=0;c<a;)o<(n=sI(arguments[c++]))?(r=r*(i=o/n)*i+1,o=n):r+=n>0?(i=n/o)*i:n;return o===1/0?1/0:o*mI(r)}});var hI=fr,bI=K,pI=Math.imul;hI({target:"Math",stat:!0,forced:bI((function(){return-5!=pI(4294967295,5)||2!=pI.length}))},{imul:function(t,e){var n=65535,i=+t,r=+e,c=n&i,a=n&r;return 0|c*a+((n&i>>>16)*a+c*(n&r>>>16)<<16>>>0)}});var ZI=Math.log,II=Math.LOG10E;fr({target:"Math",stat:!0},{log10:Math.log10||function(t){return ZI(t)*II}}),fr({target:"Math",stat:!0},{log1p:VZ});var yI=fr,gI=Math.log,XI=Math.LN2;yI({target:"Math",stat:!0},{log2:function(t){return gI(t)/XI}}),fr({target:"Math",stat:!0},{sign:UZ});var GI=fr,fI=K,VI=EZ,WI=Math.abs,vI=Math.exp,CI=Math.E;GI({target:"Math",stat:!0,forced:fI((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return WI(e)<1?(VI(e)-VI(-e))/2:(vI(e-1)-vI(-e-1))*(CI/2)}});var SI=fr,YI=EZ,RI=Math.exp;SI({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=YI(e),i=YI(-e);return n==1/0?1:i==1/0?-1:(n-i)/(RI(e)+RI(-e))}}),Uc(Math,"Math",!0),fr({target:"Math",stat:!0},{trunc:fi});var KI=E(1..valueOf),NI="\t\n\v\f\r                 \u2028\u2029\ufeff",LI=at,JI=Hr,xI=E("".replace),HI="[\t\n\v\f\r                 \u2028\u2029\ufeff]",kI=RegExp("^"+HI+HI+"*"),UI=RegExp(HI+HI+"*$"),TI=function(t){return function(e){var n=JI(LI(e));return 1&t&&(n=xI(n,kI,"")),2&t&&(n=xI(n,UI,"")),n}},wI={start:TI(1),end:TI(2),trim:TI(3)},FI=N,AI=Y,BI=E,zI=br,jI=yi,MI=oe,QI=Pp,PI=It,EI=Ht,DI=Le,OI=K,_I=gi.f,qI=R.f,$I=_e.f,ty=KI,ey=wI.trim,ny=AI.Number,iy=ny.prototype,ry=AI.TypeError,cy=BI("".slice),ay=BI("".charCodeAt),oy=function(t){var e=DI(t,"number");return"bigint"==typeof e?e:ly(e)},ly=function(t){var e,n,i,r,c,a,o,l,u=DI(t,"number");if(EI(u))throw ry("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=ey(u),43===(e=ay(u,0))||45===e){if(88===(n=ay(u,2))||120===n)return NaN}else if(48===e){switch(ay(u,1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+u}for(a=(c=cy(u,2)).length,o=0;o<a;o++)if((l=ay(c,o))<48||l>r)return NaN;return parseInt(c,i)}return+u};if(zI("Number",!ny(" 0o1")||!ny("0b1")||ny("+0x1"))){for(var uy,dy=function(t){var e=arguments.length<1?0:ny(oy(t)),n=this;return PI(iy,n)&&OI((function(){ty(n)}))?QI(Object(e),n,dy):e},sy=FI?_I(ny):"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(","),my=0;sy.length>my;my++)MI(ny,uy=sy[my])&&!MI(dy,uy)&&$I(dy,uy,qI(ny,uy));dy.prototype=iy,iy.constructor=dy,jI(AI,"Number",dy,{constructor:!0})}fr({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var hy=Y.isFinite;fr({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&hy(t)}});var by=mt,py=Math.floor,Zy=Number.isInteger||function(t){return!by(t)&&isFinite(t)&&py(t)===t};fr({target:"Number",stat:!0},{isInteger:Zy}),fr({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Iy=fr,yy=Zy,gy=Math.abs;Iy({target:"Number",stat:!0},{isSafeInteger:function(t){return yy(t)&&gy(t)<=9007199254740991}}),fr({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),fr({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var Xy=Y,Gy=K,fy=Hr,Vy=wI.trim,Wy=E("".charAt),vy=Xy.parseFloat,Cy=Xy.Symbol,Sy=Cy&&Cy.iterator,Yy=1/vy("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||Sy&&!Gy((function(){vy(Object(Sy))}))?function(t){var e=Vy(fy(t)),n=vy(e);return 0===n&&"-"==Wy(e,0)?-0:n}:vy;fr({target:"Number",stat:!0,forced:Number.parseFloat!=Yy},{parseFloat:Yy});var Ry=Y,Ky=K,Ny=E,Ly=Hr,Jy=wI.trim,xy=Ry.parseInt,Hy=Ry.Symbol,ky=Hy&&Hy.iterator,Uy=/^[+-]?0x/i,Ty=Ny(Uy.exec),wy=8!==xy("\t\n\v\f\r                 \u2028\u2029\ufeff08")||22!==xy("\t\n\v\f\r                 \u2028\u2029\ufeff0x16")||ky&&!Ky((function(){xy(Object(ky))}))?function(t,e){var n=Jy(Ly(t));return xy(n,e>>>0||(Ty(Uy,n)?16:10))}:xy,Fy=wy;fr({target:"Number",stat:!0,forced:Number.parseInt!=Fy},{parseInt:Fy});var Ay=Wi,By=Hr,zy=at,jy=Y.RangeError,My=function(t){var e=By(zy(this)),n="",i=Ay(t);if(i<0||i==1/0)throw jy("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n},Qy=fr,Py=Y,Ey=E,Dy=Wi,Oy=KI,_y=My,qy=K,$y=Py.RangeError,tg=Py.String,eg=Math.floor,ng=Ey(_y),ig=Ey("".slice),rg=Ey(1..toFixed),cg=function t(e,n,i){return 0===n?i:n%2==1?t(e,n-1,i*e):t(e*e,n/2,i)},ag=function(t,e,n){for(var i=-1,r=n;++i<6;)r+=e*t[i],t[i]=r%1e7,r=eg(r/1e7)},og=function(t,e){for(var n=6,i=0;--n>=0;)i+=t[n],t[n]=eg(i/e),i=i%e*1e7},lg=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var i=tg(t[e]);n=""===n?i:n+ng("0",7-i.length)+i}return n};Qy({target:"Number",proto:!0,forced:qy((function(){return"0.000"!==rg(8e-5,3)||"1"!==rg(.9,0)||"1.25"!==rg(1.255,2)||"1000000000000000128"!==rg(0xde0b6b3a7640080,0)}))||!qy((function(){rg({})}))},{toFixed:function(t){var e,n,i,r,c=Oy(this),a=Dy(t),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw $y("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return tg(c);if(c<0&&(l="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*cg(2,69,1))-69,n=e<0?c*cg(2,-e,1):c/cg(2,e,1),n*=4503599627370496,(e=52-e)>0){for(ag(o,0,n),i=a;i>=7;)ag(o,1e7,0),i-=7;for(ag(o,cg(10,i,1),0),i=e-1;i>=23;)og(o,1<<23),i-=23;og(o,1<<i),ag(o,1,1),og(o,2),u=lg(o)}else ag(o,0,n),ag(o,1<<-e,0),u=lg(o)+ng("0",a);return u=a>0?l+((r=u.length)<=a?"0."+ng("0",a-r)+u:ig(u,0,r-a)+"."+ig(u,r-a)):l+u}});var ug=N,dg=E,sg=H,mg=K,hg=wr,bg=Ei,pg=k,Zg=re,Ig=rt,yg=Object.assign,gg=Object.defineProperty,Xg=dg([].concat),Gg=!yg||mg((function(){if(ug&&1!==yg({b:1},yg(gg({},"a",{enumerable:!0,get:function(){gg(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach((function(t){e[t]=t})),7!=yg({},t)[n]||hg(yg({},e)).join("")!=i}))?function(t,e){for(var n=Zg(t),i=arguments.length,r=1,c=bg.f,a=pg.f;i>r;)for(var o,l=Ig(arguments[r++]),u=c?Xg(hg(l),c(l)):hg(l),d=u.length,s=0;d>s;)o=u[s++],ug&&!sg(a,l,o)||(n[o]=l[o]);return n}:yg,fg=Gg;fr({target:"Object",stat:!0,arity:2,forced:Object.assign!==fg},{assign:fg});var Vg=Y,Wg=Hm,vg=!K((function(){if(!(Wg&&Wg<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete Vg[t]}})),Cg=At,Sg=re,Yg=_e;N&&fr({target:"Object",proto:!0,forced:vg},{__defineGetter__:function(t,e){Yg.f(Sg(this),t,{get:Cg(e),enumerable:!0,configurable:!0})}});var Rg=At,Kg=re,Ng=_e;N&&fr({target:"Object",proto:!0,forced:vg},{__defineSetter__:function(t,e){Ng.f(Kg(this),t,{set:Rg(e),enumerable:!0,configurable:!0})}});var Lg=N,Jg=E,xg=wr,Hg=ut,kg=Jg(k.f),Ug=Jg([].push),Tg=function(t){return function(e){for(var n,i=Hg(e),r=xg(i),c=r.length,a=0,o=[];c>a;)n=r[a++],Lg&&!kg(i,n)||Ug(o,t?[n,i[n]]:i[n]);return o}},wg={entries:Tg(!0),values:Tg(!1)},Fg=wg.entries;fr({target:"Object",stat:!0},{entries:function(t){return Fg(t)}});var Ag=fr,Bg=bp,zg=K,jg=mt,Mg=ap.exports.onFreeze,Qg=Object.freeze;Ag({target:"Object",stat:!0,forced:zg((function(){Qg(1)})),sham:!Bg},{freeze:function(t){return Qg&&jg(t)?Qg(Mg(t)):t}});var Pg=zp,Eg=dc;fr({target:"Object",stat:!0},{fromEntries:function(t){var e={};return Pg(t,(function(t,n){Eg(e,t,n)}),{AS_ENTRIES:!0}),e}});var Dg=fr,Og=K,_g=ut,qg=R.f,$g=N,tX=Og((function(){qg(1)}));Dg({target:"Object",stat:!0,forced:!$g||tX,sham:!$g},{getOwnPropertyDescriptor:function(t,e){return qg(_g(t),e)}});var eX=tr,nX=ut,iX=R,rX=dc;fr({target:"Object",stat:!0,sham:!N},{getOwnPropertyDescriptors:function(t){for(var e,n,i=nX(t),r=iX.f,c=eX(i),a={},o=0;c.length>o;)void 0!==(n=r(i,e=c[o++]))&&rX(a,e,n);return a}});var cX=fr,aX=K,oX=ac.f;cX({target:"Object",stat:!0,forced:aX((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:oX});var lX=re,uX=_d,dX=Bd;fr({target:"Object",stat:!0,forced:K((function(){uX(1)})),sham:!dX},{getPrototypeOf:function(t){return uX(lX(t))}});var sX=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};fr({target:"Object",stat:!0},{is:sX});var mX=hp;fr({target:"Object",stat:!0,forced:Object.isExtensible!==mX},{isExtensible:mX});var hX=fr,bX=K,pX=mt,ZX=q,IX=op,yX=Object.isFrozen;hX({target:"Object",stat:!0,forced:bX((function(){yX(1)}))||IX},{isFrozen:function(t){return!pX(t)||(!(!IX||"ArrayBuffer"!=ZX(t))||!!yX&&yX(t))}});var gX=fr,XX=K,GX=mt,fX=q,VX=op,WX=Object.isSealed;gX({target:"Object",stat:!0,forced:XX((function(){WX(1)}))||VX},{isSealed:function(t){return!GX(t)||(!(!VX||"ArrayBuffer"!=fX(t))||!!WX&&WX(t))}});var vX=re,CX=wr;fr({target:"Object",stat:!0,forced:K((function(){CX(1)}))},{keys:function(t){return CX(vX(t))}});var SX=fr,YX=N,RX=vg,KX=re,NX=He,LX=_d,JX=R.f;YX&&SX({target:"Object",proto:!0,forced:RX},{__lookupGetter__:function(t){var e,n=KX(this),i=NX(t);do{if(e=JX(n,i))return e.get}while(n=LX(n))}});var xX=fr,HX=N,kX=vg,UX=re,TX=He,wX=_d,FX=R.f;HX&&xX({target:"Object",proto:!0,forced:kX},{__lookupSetter__:function(t){var e,n=UX(this),i=TX(t);do{if(e=FX(n,i))return e.set}while(n=wX(n))}});var AX=fr,BX=mt,zX=ap.exports.onFreeze,jX=bp,MX=K,QX=Object.preventExtensions;AX({target:"Object",stat:!0,forced:MX((function(){QX(1)})),sham:!jX},{preventExtensions:function(t){return QX&&BX(t)?QX(zX(t)):t}});var PX=fr,EX=mt,DX=ap.exports.onFreeze,OX=bp,_X=K,qX=Object.seal;PX({target:"Object",stat:!0,forced:_X((function(){qX(1)})),sham:!OX},{seal:function(t){return qX&&EX(t)?qX(DX(t)):t}});var $X=Lr,tG=Wr?{}.toString:function(){return"[object "+$X(this)+"]"};Wr||yi(Object.prototype,"toString",tG,{unsafe:!0});var eG=wg.values;fr({target:"Object",stat:!0},{values:function(t){return eG(t)}});var nG,iG,rG,cG,aG="process"==q(Y.process),oG=ia,lG=Ut,uG=Y.TypeError,dG=function(t){if(oG(t))return t;throw uG(lG(t)+" is not a constructor")},sG=rn,mG=dG,hG=Ve("species"),bG=function(t,e){var n,i=sG(t).constructor;return void 0===i||null==(n=sG(i)[hG])?e:mG(n)},pG=Y.TypeError,ZG=function(t,e){if(t<e)throw pG("Not enough arguments");return t},IG=/(?:ipad|iphone|ipod).*applewebkit/i.test(yt),yG=Y,gG=Mo,XG=Ac,GG=dt,fG=oe,VG=K,WG=Pr,vG=Qo,CG=we,SG=ZG,YG=IG,RG=aG,KG=yG.setImmediate,NG=yG.clearImmediate,LG=yG.process,JG=yG.Dispatch,xG=yG.Function,HG=yG.MessageChannel,kG=yG.String,UG=0,TG={};try{nG=yG.location}catch(t){}var wG=function(t){if(fG(TG,t)){var e=TG[t];delete TG[t],e()}},FG=function(t){return function(){wG(t)}},AG=function(t){wG(t.data)},BG=function(t){yG.postMessage(kG(t),nG.protocol+"//"+nG.host)};KG&&NG||(KG=function(t){SG(arguments.length,1);var e=GG(t)?t:xG(t),n=vG(arguments,1);return TG[++UG]=function(){gG(e,void 0,n)},iG(UG),UG},NG=function(t){delete TG[t]},RG?iG=function(t){LG.nextTick(FG(t))}:JG&&JG.now?iG=function(t){JG.now(FG(t))}:HG&&!YG?(cG=(rG=new HG).port2,rG.port1.onmessage=AG,iG=XG(cG.postMessage,cG)):yG.addEventListener&&GG(yG.postMessage)&&!yG.importScripts&&nG&&"file:"!==nG.protocol&&!VG(BG)?(iG=BG,yG.addEventListener("message",AG,!1)):iG="onreadystatechange"in CG("script")?function(t){WG.appendChild(CG("script")).onreadystatechange=function(){WG.removeChild(this),wG(t)}}:function(t){setTimeout(FG(t),0)});var zG,jG,MG,QG,PG,EG,DG,OG,_G={set:KG,clear:NG},qG=Y,$G=/ipad|iphone|ipod/i.test(yt)&&void 0!==qG.Pebble,tf=/web0s(?!.*chrome)/i.test(yt),ef=Y,nf=Ac,rf=R.f,cf=_G.set,af=IG,of=$G,lf=tf,uf=aG,df=ef.MutationObserver||ef.WebKitMutationObserver,sf=ef.document,mf=ef.process,hf=ef.Promise,bf=rf(ef,"queueMicrotask"),pf=bf&&bf.value;pf||(zG=function(){var t,e;for(uf&&(t=mf.domain)&&t.exit();jG;){e=jG.fn,jG=jG.next;try{e()}catch(t){throw jG?QG():MG=void 0,t}}MG=void 0,t&&t.enter()},af||uf||lf||!df||!sf?!of&&hf&&hf.resolve?((DG=hf.resolve(void 0)).constructor=hf,OG=nf(DG.then,DG),QG=function(){OG(zG)}):uf?QG=function(){mf.nextTick(zG)}:(cf=nf(cf,ef),QG=function(){cf(zG)}):(PG=!0,EG=sf.createTextNode(""),new df(zG).observe(EG,{characterData:!0}),QG=function(){EG.data=PG=!PG}));var Zf=pf||function(t){var e={fn:t,next:void 0};MG&&(MG.next=e),jG||(jG=e,QG()),MG=e},If=Y,yf=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},gf=function(){this.head=null,this.tail=null};gf.prototype={add:function(t){var e={item:t,next:null};this.head?this.tail.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}};var Xf=gf,Gf=Y.Promise,ff="object"==("undefined"==typeof window?"undefined":a(window))&&"object"!=("undefined"==typeof Deno?"undefined":a(Deno)),Vf=Y,Wf=Gf,vf=dt,Cf=br,Sf=Rn,Yf=Ve,Rf=ff,Kf=vt;Wf&&Wf.prototype;var Nf=Yf("species"),Lf=!1,Jf=vf(Vf.PromiseRejectionEvent),xf=Cf("Promise",(function(){var t=Sf(Wf),e=t!==String(Wf);if(!e&&66===Kf)return!0;if(Kf>=51&&/native code/.test(t))return!1;var n=new Wf((function(t){t(1)})),i=function(t){t((function(){}),(function(){}))};return(n.constructor={})[Nf]=i,!(Lf=n.then((function(){}))instanceof i)||!e&&Rf&&!Jf})),Hf={CONSTRUCTOR:xf,REJECTION_EVENT:Jf,SUBCLASSING:Lf},kf={},Uf=At,Tf=function(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=i})),this.resolve=Uf(e),this.reject=Uf(n)};kf.f=function(t){return new Tf(t)};var wf,Ff,Af,Bf=fr,zf=aG,jf=Y,Mf=H,Qf=yi,Pf=Gs,Ef=Uc,Df=ah,Of=At,_f=dt,qf=mt,$f=Wh,tV=bG,eV=_G.set,nV=Zf,iV=function(t,e){var n=If.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))},rV=yf,cV=Xf,aV=ei,oV=Gf,lV=kf,uV=Hf.CONSTRUCTOR,dV=Hf.REJECTION_EVENT,sV=Hf.SUBCLASSING,mV=aV.getterFor("Promise"),hV=aV.set,bV=oV&&oV.prototype,pV=oV,ZV=bV,IV=jf.TypeError,yV=jf.document,gV=jf.process,XV=lV.f,GV=XV,fV=!!(yV&&yV.createEvent&&jf.dispatchEvent),VV=function(t){var e;return!(!qf(t)||!_f(e=t.then))&&e},WV=function(t,e){var n,i,r,c=e.value,a=1==e.state,o=a?t.ok:t.fail,l=t.resolve,u=t.reject,d=t.domain;try{o?(a||(2===e.rejection&&RV(e),e.rejection=1),!0===o?n=c:(d&&d.enter(),n=o(c),d&&(d.exit(),r=!0)),n===t.promise?u(IV("Promise-chain cycle")):(i=VV(n))?Mf(i,n,l,u):l(n)):u(c)}catch(t){d&&!r&&d.exit(),u(t)}},vV=function(t,e){t.notified||(t.notified=!0,nV((function(){for(var n,i=t.reactions;n=i.get();)WV(n,t);t.notified=!1,e&&!t.rejection&&SV(t)})))},CV=function(t,e,n){var i,r;fV?((i=yV.createEvent("Event")).promise=e,i.reason=n,i.initEvent(t,!1,!0),jf.dispatchEvent(i)):i={promise:e,reason:n},!dV&&(r=jf["on"+t])?r(i):"unhandledrejection"===t&&iV("Unhandled promise rejection",n)},SV=function(t){Mf(eV,jf,(function(){var e,n=t.facade,i=t.value;if(YV(t)&&(e=rV((function(){zf?gV.emit("unhandledRejection",i,n):CV("unhandledrejection",n,i)})),t.rejection=zf||YV(t)?2:1,e.error))throw e.value}))},YV=function(t){return 1!==t.rejection&&!t.parent},RV=function(t){Mf(eV,jf,(function(){var e=t.facade;zf?gV.emit("rejectionHandled",e):CV("rejectionhandled",e,t.value)}))},KV=function(t,e,n){return function(i){t(e,i,n)}},NV=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,vV(t,!0))},LV=function t(e,n,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===n)throw IV("Promise can't be resolved itself");var r=VV(n);r?nV((function(){var i={done:!1};try{Mf(r,n,KV(t,i,e),KV(NV,i,e))}catch(t){NV(i,t,e)}})):(e.value=n,e.state=1,vV(e,!1))}catch(t){NV({done:!1},t,e)}}};if(uV&&(ZV=(pV=function(t){$f(this,ZV),Of(t),Mf(wf,this);var e=mV(this);try{t(KV(LV,e),KV(NV,e))}catch(t){NV(e,t)}}).prototype,(wf=function(t){hV(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new cV,rejection:!1,state:0,value:void 0})}).prototype=Qf(ZV,"then",(function(t,e){var n=mV(this),i=XV(tV(this,pV));return n.parent=!0,i.ok=!_f(t)||t,i.fail=_f(e)&&e,i.domain=zf?gV.domain:void 0,0==n.state?n.reactions.add(i):nV((function(){WV(i,n)})),i.promise})),Ff=function(){var t=new wf,e=mV(t);this.promise=t,this.resolve=KV(LV,e),this.reject=KV(NV,e)},lV.f=XV=function(t){return t===pV||undefined===t?new Ff(t):GV(t)},_f(oV)&&bV!==Object.prototype)){Af=bV.then,sV||Qf(bV,"then",(function(t,e){var n=this;return new pV((function(t,e){Mf(Af,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete bV.constructor}catch(t){}Pf&&Pf(bV,ZV)}Bf({global:!0,constructor:!0,wrap:!0,forced:uV},{Promise:pV}),Ef(pV,"Promise",!1),Df("Promise");var JV=Gf,xV=Hf.CONSTRUCTOR||!Hd((function(t){JV.all(t).then(void 0,(function(){}))})),HV=H,kV=At,UV=kf,TV=yf,wV=zp;fr({target:"Promise",stat:!0,forced:xV},{all:function(t){var e=this,n=UV.f(e),i=n.resolve,r=n.reject,c=TV((function(){var n=kV(e.resolve),c=[],a=0,o=1;wV(t,(function(t){var l=a++,u=!1;o++,HV(n,e,t).then((function(t){u||(u=!0,c[l]=t,--o||i(c))}),r)})),--o||i(c)}));return c.error&&r(c.value),n.promise}});var FV=fr,AV=Hf.CONSTRUCTOR,BV=Gf,zV=Zt,jV=dt,MV=yi,QV=BV&&BV.prototype;if(FV({target:"Promise",proto:!0,forced:AV,real:!0},{catch:function(t){return this.then(void 0,t)}}),jV(BV)){var PV=zV("Promise").prototype.catch;QV.catch!==PV&&MV(QV,"catch",PV,{unsafe:!0})}var EV=H,DV=At,OV=kf,_V=yf,qV=zp;fr({target:"Promise",stat:!0,forced:xV},{race:function(t){var e=this,n=OV.f(e),i=n.reject,r=_V((function(){var r=DV(e.resolve);qV(t,(function(t){EV(r,e,t).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var $V=H,tW=kf;fr({target:"Promise",stat:!0,forced:Hf.CONSTRUCTOR},{reject:function(t){var e=tW.f(this);return $V(e.reject,void 0,t),e.promise}});var eW=rn,nW=mt,iW=kf,rW=function(t,e){if(eW(t),nW(e)&&e.constructor===t)return e;var n=iW.f(t);return(0,n.resolve)(e),n.promise},cW=fr,aW=Hf.CONSTRUCTOR,oW=rW;Zt("Promise"),cW({target:"Promise",stat:!0,forced:aW},{resolve:function(t){return oW(this,t)}});var lW=H,uW=At,dW=kf,sW=yf,mW=zp;fr({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=dW.f(e),i=n.resolve,r=n.reject,c=sW((function(){var n=uW(e.resolve),r=[],c=0,a=1;mW(t,(function(t){var o=c++,l=!1;a++,lW(n,e,t).then((function(t){l||(l=!0,r[o]={status:"fulfilled",value:t},--a||i(r))}),(function(t){l||(l=!0,r[o]={status:"rejected",reason:t},--a||i(r))}))})),--a||i(r)}));return c.error&&r(c.value),n.promise}});var hW=fr,bW=Gf,pW=K,ZW=Zt,IW=dt,yW=bG,gW=rW,XW=yi,GW=bW&&bW.prototype;if(hW({target:"Promise",proto:!0,real:!0,forced:!!bW&&pW((function(){GW.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=yW(this,ZW("Promise")),n=IW(t);return this.then(n?function(n){return gW(e,t()).then((function(){return n}))}:t,n?function(n){return gW(e,t()).then((function(){throw n}))}:t)}}),IW(bW)){var fW=ZW("Promise").prototype.finally;GW.finally!==fW&&XW(GW,"finally",fW,{unsafe:!0})}var VW=Mo,WW=At,vW=rn;fr({target:"Reflect",stat:!0,forced:!K((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return VW(WW(t),e,vW(n))}});var CW=E,SW=At,YW=mt,RW=oe,KW=Qo,NW=L,LW=Y.Function,JW=CW([].concat),xW=CW([].join),HW={},kW=function(t,e,n){if(!RW(HW,e)){for(var i=[],r=0;r<e;r++)i[r]="a["+r+"]";HW[e]=LW("C,a","return new C("+xW(i,",")+")")}return HW[e](t,n)},UW=NW?LW.bind:function(t){var e=SW(this),n=e.prototype,i=KW(arguments,1),r=function(){var n=JW(i,KW(arguments));return this instanceof r?kW(e,n.length,n):e.apply(t,n)};return YW(n)&&(r.prototype=n),r},TW=fr,wW=Mo,FW=UW,AW=dG,BW=rn,zW=mt,jW=cc,MW=K,QW=Zt("Reflect","construct"),PW=Object.prototype,EW=[].push,DW=MW((function(){function t(){}return!(QW((function(){}),[],t)instanceof t)})),OW=!MW((function(){QW((function(){}))})),_W=DW||OW;TW({target:"Reflect",stat:!0,forced:_W,sham:_W},{construct:function(t,e){AW(t),BW(e);var n=arguments.length<3?t:AW(arguments[2]);if(OW&&!DW)return QW(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var i=[null];return wW(EW,i,e),new(wW(FW,t,i))}var r=n.prototype,c=jW(zW(r)?r:PW),a=wW(t,c,e);return zW(a)?a:c}});var qW=N,$W=rn,tv=He,ev=_e;fr({target:"Reflect",stat:!0,forced:K((function(){Reflect.defineProperty(ev.f({},1,{value:1}),1,{value:2})})),sham:!qW},{defineProperty:function(t,e,n){$W(t);var i=tv(e);$W(n);try{return ev.f(t,i,n),!0}catch(t){return!1}}});var nv=fr,iv=rn,rv=R.f;nv({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=rv(iv(t),e);return!(n&&!n.configurable)&&delete t[e]}});var cv=oe,av=function(t){return void 0!==t&&(cv(t,"value")||cv(t,"writable"))},ov=H,lv=mt,uv=rn,dv=av,sv=R,mv=_d;fr({target:"Reflect",stat:!0},{get:function t(e,n){var i,r,c=arguments.length<3?e:arguments[2];return uv(e)===c?e[n]:(i=sv.f(e,n))?dv(i)?i.value:void 0===i.get?void 0:ov(i.get,c):lv(r=mv(e))?t(r,n,c):void 0}});var hv=rn,bv=R;fr({target:"Reflect",stat:!0,sham:!N},{getOwnPropertyDescriptor:function(t,e){return bv.f(hv(t),e)}});var pv=rn,Zv=_d;fr({target:"Reflect",stat:!0,sham:!Bd},{getPrototypeOf:function(t){return Zv(pv(t))}}),fr({target:"Reflect",stat:!0},{has:function(t,e){return e in t}});var Iv=rn,yv=hp;fr({target:"Reflect",stat:!0},{isExtensible:function(t){return Iv(t),yv(t)}}),fr({target:"Reflect",stat:!0},{ownKeys:tr});var gv=Zt,Xv=rn;fr({target:"Reflect",stat:!0,sham:!bp},{preventExtensions:function(t){Xv(t);try{var e=gv("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Gv=fr,fv=H,Vv=rn,Wv=mt,vv=av,Cv=_e,Sv=R,Yv=_d,Rv=B;var Kv=K((function(){var t=function(){},e=Cv.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Gv({target:"Reflect",stat:!0,forced:Kv},{set:function t(e,n,i){var r,c,a,o=arguments.length<4?e:arguments[3],l=Sv.f(Vv(e),n);if(!l){if(Wv(c=Yv(e)))return t(c,n,i,o);l=Rv(0)}if(vv(l)){if(!1===l.writable||!Wv(o))return!1;if(r=Sv.f(o,n)){if(r.get||r.set||!1===r.writable)return!1;r.value=i,Cv.f(o,n,r)}else Cv.f(o,n,Rv(0,i))}else{if(void 0===(a=l.set))return!1;fv(a,o,i)}return!0}});var Nv=rn,Lv=Is,Jv=Gs;Jv&&fr({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Nv(t),Lv(e);try{return Jv(t,e),!0}catch(t){return!1}}});var xv=mt,Hv=q,kv=Ve("match"),Uv=function(t){var e;return xv(t)&&(void 0!==(e=t[kv])?!!e:"RegExp"==Hv(t))},Tv=rn,wv=function(){var t=Tv(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},Fv=H,Av=oe,Bv=It,zv=wv,jv=RegExp.prototype,Mv=function(t){var e=t.flags;return void 0!==e||"flags"in jv||Av(t,"flags")||!Bv(jv,t)?e:Fv(zv,t)},Qv=K,Pv=Y.RegExp,Ev=Qv((function(){var t=Pv("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),Dv=Ev||Qv((function(){return!Pv("a","y").sticky})),Ov=Ev||Qv((function(){var t=Pv("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),_v={BROKEN_CARET:Ov,MISSED_STICKY:Dv,UNSUPPORTED_Y:Ev},qv=_e.f,$v=K,tC=Y.RegExp,eC=$v((function(){var t=tC(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),nC=K,iC=Y.RegExp,rC=nC((function(){var t=iC("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),cC=N,aC=Y,oC=E,lC=br,uC=Pp,dC=pn,sC=gi.f,mC=It,hC=Uv,bC=Hr,pC=Mv,ZC=_v,IC=function(t,e,n){n in t||qv(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})},yC=yi,gC=K,XC=oe,GC=ei.enforce,fC=ah,VC=eC,WC=rC,vC=Ve("match"),CC=aC.RegExp,SC=CC.prototype,YC=aC.SyntaxError,RC=oC(SC.exec),KC=oC("".charAt),NC=oC("".replace),LC=oC("".indexOf),JC=oC("".slice),xC=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,HC=/a/g,kC=/a/g,UC=new CC(HC)!==HC,TC=ZC.MISSED_STICKY,wC=ZC.UNSUPPORTED_Y,FC=cC&&(!UC||TC||VC||WC||gC((function(){return kC[vC]=!1,CC(HC)!=HC||CC(kC)==kC||"/a/i"!=CC(HC,"i")})));if(lC("RegExp",FC)){for(var AC=function(t,e){var n,i,r,c,a,o,l=mC(SC,this),u=hC(t),d=void 0===e,s=[],m=t;if(!l&&u&&d&&t.constructor===AC)return t;if((u||mC(SC,t))&&(t=t.source,d&&(e=pC(m))),t=void 0===t?"":bC(t),e=void 0===e?"":bC(e),m=t,VC&&"dotAll"in HC&&(i=!!e&&LC(e,"s")>-1)&&(e=NC(e,/s/g,"")),n=e,TC&&"sticky"in HC&&(r=!!e&&LC(e,"y")>-1)&&wC&&(e=NC(e,/y/g,"")),WC&&(c=function(t){for(var e,n=t.length,i=0,r="",c=[],a={},o=!1,l=!1,u=0,d="";i<=n;i++){if("\\"===(e=KC(t,i)))e+=KC(t,++i);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:RC(xC,JC(t,i+1))&&(i+=2,l=!0),r+=e,u++;continue;case">"===e&&l:if(""===d||XC(a,d))throw new YC("Invalid capture group name");a[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=e:r+=e}return[r,c]}(t),t=c[0],s=c[1]),a=uC(CC(t,e),l?this:SC,AC),(i||r||s.length)&&(o=GC(a),i&&(o.dotAll=!0,o.raw=AC(function(t){for(var e,n=t.length,i=0,r="",c=!1;i<=n;i++)"\\"!==(e=KC(t,i))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),r+=e):r+="[\\s\\S]":r+=e+KC(t,++i);return r}(t),n)),r&&(o.sticky=!0),s.length&&(o.groups=s)),t!==m)try{dC(a,"source",""===m?"(?:)":m)}catch(t){}return a},BC=sC(CC),zC=0;BC.length>zC;)IC(AC,CC,BC[zC++]);SC.constructor=AC,AC.prototype=SC,yC(aC,"RegExp",AC,{constructor:!0})}fC("RegExp");var jC=H,MC=E,QC=Hr,PC=wv,EC=_v,DC=Dt.exports,OC=cc,_C=ei.get,qC=eC,$C=rC,tS=DC("native-string-replace",String.prototype.replace),eS=RegExp.prototype.exec,nS=eS,iS=MC("".charAt),rS=MC("".indexOf),cS=MC("".replace),aS=MC("".slice),oS=function(){var t=/a/,e=/b*/g;return jC(eS,t,"a"),jC(eS,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),lS=EC.BROKEN_CARET,uS=void 0!==/()??/.exec("")[1];(oS||uS||lS||qC||$C)&&(nS=function(t){var e,n,i,r,c,a,o,l=this,u=_C(l),d=QC(t),s=u.raw;if(s)return s.lastIndex=l.lastIndex,e=jC(nS,s,d),l.lastIndex=s.lastIndex,e;var m=u.groups,h=lS&&l.sticky,b=jC(PC,l),p=l.source,Z=0,I=d;if(h&&(b=cS(b,"y",""),-1===rS(b,"g")&&(b+="g"),I=aS(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==iS(d,l.lastIndex-1))&&(p="(?: "+p+")",I=" "+I,Z++),n=new RegExp("^(?:"+p+")",b)),uS&&(n=new RegExp("^"+p+"$(?!\\s)",b)),oS&&(i=l.lastIndex),r=jC(eS,h?n:l,I),h?r?(r.input=aS(r.input,Z),r[0]=aS(r[0],Z),r.index=l.lastIndex,l.lastIndex+=r[0].length):l.lastIndex=0:oS&&r&&(l.lastIndex=l.global?r.index+r[0].length:i),uS&&r&&r.length>1&&jC(tS,r[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(r[c]=void 0)})),r&&m)for(r.groups=a=OC(null),c=0;c<m.length;c++)a[(o=m[c])[0]]=r[o[1]];return r});var dS=nS;fr({target:"RegExp",proto:!0,forced:/./.exec!==dS},{exec:dS});var sS=Zn.exports,mS=_e,hS=function(t,e,n){return n.get&&sS(n.get,e,{getter:!0}),n.set&&sS(n.set,e,{setter:!0}),mS.f(t,e,n)},bS=N,pS=hS,ZS=wv,IS=K,yS=RegExp.prototype;bS&&IS((function(){return"sy"!==Object.getOwnPropertyDescriptor(yS,"flags").get.call({dotAll:!0,sticky:!0})}))&&pS(yS,"flags",{configurable:!0,get:ZS});var gS=Y,XS=N,GS=_v.MISSED_STICKY,fS=q,VS=hS,WS=ei.get,vS=RegExp.prototype,CS=gS.TypeError;XS&&GS&&VS(vS,"sticky",{configurable:!0,get:function(){if(this!==vS){if("RegExp"===fS(this))return!!WS(this).sticky;throw CS("Incompatible receiver, RegExp required")}}});var SS,YS,RS=fr,KS=Y,NS=H,LS=E,JS=dt,xS=mt,HS=(SS=!1,(YS=/[ac]/).exec=function(){return SS=!0,/./.exec.apply(this,arguments)},!0===YS.test("abc")&&SS),kS=KS.Error,US=LS(/./.test);RS({target:"RegExp",proto:!0,forced:!HS},{test:function(t){var e=this.exec;if(!JS(e))return US(this,t);var n=NS(e,this,t);if(null!==n&&!xS(n))throw new kS("RegExp exec method returned something other than an Object or null");return!!n}});var TS=fn.PROPER,wS=yi,FS=rn,AS=Hr,BS=K,zS=Mv,jS=RegExp.prototype.toString,MS=BS((function(){return"/a/b"!=jS.call({source:"a",flags:"b"})})),QS=TS&&"toString"!=jS.name;(MS||QS)&&wS(RegExp.prototype,"toString",(function(){var t=FS(this);return"/"+AS(t.source)+"/"+AS(zS(t))}),{unsafe:!0}),lZ("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),GZ);var PS=E,ES=Wi,DS=Hr,OS=at,_S=PS("".charAt),qS=PS("".charCodeAt),$S=PS("".slice),tY=function(t){return function(e,n){var i,r,c=DS(OS(e)),a=ES(n),o=c.length;return a<0||a>=o?t?"":void 0:(i=qS(c,a))<55296||i>56319||a+1===o||(r=qS(c,a+1))<56320||r>57343?t?_S(c,a):i:t?$S(c,a,a+2):r-56320+(i-55296<<10)+65536}},eY={codeAt:tY(!1),charAt:tY(!0)},nY=eY.codeAt;fr({target:"String",proto:!0},{codePointAt:function(t){return nY(this,t)}});var iY,rY=Uv,cY=Y.TypeError,aY=function(t){if(rY(t))throw cY("The method doesn't accept regular expressions");return t},oY=Ve("match"),lY=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[oY]=!1,"/./"[t](e)}catch(t){}}return!1},uY=fr,dY=E,sY=R.f,mY=Ni,hY=Hr,bY=aY,pY=at,ZY=lY,IY=dY("".endsWith),yY=dY("".slice),gY=Math.min,XY=ZY("endsWith");uY({target:"String",proto:!0,forced:!!(XY||(iY=sY(String.prototype,"endsWith"),!iY||iY.writable))&&!XY},{endsWith:function(t){var e=hY(pY(this));bY(t);var n=arguments.length>1?arguments[1]:void 0,i=e.length,r=void 0===n?i:gY(mY(n),i),c=hY(t);return IY?IY(e,c,r):yY(e,r-c.length,r)===c}});var GY=fr,fY=E,VY=Yi,WY=Y.RangeError,vY=String.fromCharCode,CY=String.fromCodePoint,SY=fY([].join);GY({target:"String",stat:!0,arity:1,forced:!!CY&&1!=CY.length},{fromCodePoint:function(t){for(var e,n=[],i=arguments.length,r=0;i>r;){if(e=+arguments[r++],VY(e,1114111)!==e)throw WY(e+" is not a valid code point");n[r]=e<65536?vY(e):vY(55296+((e-=65536)>>10),e%1024+56320)}return SY(n,"")}});var YY=fr,RY=aY,KY=at,NY=Hr,LY=lY,JY=E("".indexOf);YY({target:"String",proto:!0,forced:!LY("includes")},{includes:function(t){return!!~JY(NY(KY(this)),NY(RY(t)),arguments.length>1?arguments[1]:void 0)}});var xY=eY.charAt,HY=Hr,kY=ei,UY=Ts,TY=kY.set,wY=kY.getterFor("String Iterator");UY(String,"String",(function(t){TY(this,{type:"String Iterator",string:HY(t),index:0})}),(function(){var t,e=wY(this),n=e.string,i=e.index;return i>=n.length?{value:void 0,done:!0}:(t=xY(n,i),e.index+=t.length,{value:t,done:!1})}));var FY=E,AY=yi,BY=dS,zY=K,jY=Ve,MY=pn,QY=jY("species"),PY=RegExp.prototype,EY=function(t,e,n,i){var r=jY(t),c=!zY((function(){var e={};return e[r]=function(){return 7},7!=""[t](e)})),a=c&&!zY((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[QY]=function(){return n},n.flags="",n[r]=/./[r]),n.exec=function(){return e=!0,null},n[r](""),!e}));if(!c||!a||n){var o=FY(/./[r]),l=e(r,""[t],(function(t,e,n,i,r){var a=FY(t),l=e.exec;return l===BY||l===PY.exec?c&&!r?{done:!0,value:o(e,n,i)}:{done:!0,value:a(n,e,i)}:{done:!1}}));AY(String.prototype,t,l[0]),AY(PY,r,l[1])}i&&MY(PY[r],"sham",!0)},DY=eY.charAt,OY=function(t,e,n){return e+(n?DY(t,e).length:1)},_Y=H,qY=rn,$Y=dt,tR=q,eR=dS,nR=Y.TypeError,iR=function(t,e){var n=t.exec;if($Y(n)){var i=_Y(n,t,e);return null!==i&&qY(i),i}if("RegExp"===tR(t))return _Y(eR,t,e);throw nR("RegExp#exec called on incompatible receiver")},rR=H,cR=rn,aR=Ni,oR=Hr,lR=at,uR=zt,dR=OY,sR=iR;EY("match",(function(t,e,n){return[function(e){var n=lR(this),i=null==e?void 0:uR(e,t);return i?rR(i,e,n):new RegExp(e)[t](oR(n))},function(t){var i=cR(this),r=oR(t),c=n(e,i,r);if(c.done)return c.value;if(!i.global)return sR(i,r);var a=i.unicode;i.lastIndex=0;for(var o,l=[],u=0;null!==(o=sR(i,r));){var d=oR(o[0]);l[u]=d,""===d&&(i.lastIndex=dR(r,aR(i.lastIndex),a)),u++}return 0===u?null:l}]}));var mR=fr,hR=Y,bR=H,pR=E,ZR=ms,IR=at,yR=Ni,gR=Hr,XR=rn,GR=Uv,fR=Mv,VR=zt,WR=yi,vR=K,CR=bG,SR=OY,YR=iR,RR=ei,KR=Ve("matchAll"),NR=RR.set,LR=RR.getterFor("RegExp String Iterator"),JR=RegExp.prototype,xR=hR.TypeError,HR=pR("".indexOf),kR=pR("".matchAll),UR=!!kR&&!vR((function(){kR("a",/./)})),TR=ZR((function(t,e,n,i){NR(this,{type:"RegExp String Iterator",regexp:t,string:e,global:n,unicode:i,done:!1})}),"RegExp String",(function(){var t=LR(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,i=YR(e,n);return null===i?{value:void 0,done:t.done=!0}:t.global?(""===gR(i[0])&&(e.lastIndex=SR(n,yR(e.lastIndex),t.unicode)),{value:i,done:!1}):(t.done=!0,{value:i,done:!1})})),wR=function(t){var e,n,i,r=XR(this),c=gR(t),a=CR(r,RegExp),o=gR(fR(r));return e=new a(a===RegExp?r.source:r,o),n=!!~HR(o,"g"),i=!!~HR(o,"u"),e.lastIndex=yR(r.lastIndex),new TR(e,c,n,i)};mR({target:"String",proto:!0,forced:UR},{matchAll:function(t){var e,n,i,r=IR(this);if(null!=t){if(GR(t)&&(e=gR(IR(fR(t))),!~HR(e,"g")))throw xR("`.matchAll` does not allow non-global regexes");if(UR)return kR(r,t);if(i=VR(t,KR))return bR(i,t,r)}else if(UR)return kR(r,t);return n=gR(r),new RegExp(t,"g")[KR](n)}}),KR in JR||WR(JR,KR,wR);var FR=E,AR=Ni,BR=Hr,zR=at,jR=FR(My),MR=FR("".slice),QR=Math.ceil,PR=function(t){return function(e,n,i){var r,c,a=BR(zR(e)),o=AR(n),l=a.length,u=void 0===i?" ":BR(i);return o<=l||""==u?a:((c=jR(u,QR((r=o-l)/u.length))).length>r&&(c=MR(c,0,r)),t?a+c:c+a)}},ER={start:PR(!1),end:PR(!0)},DR=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(yt),OR=ER.end;fr({target:"String",proto:!0,forced:DR},{padEnd:function(t){return OR(this,t,arguments.length>1?arguments[1]:void 0)}});var _R=ER.start;fr({target:"String",proto:!0,forced:DR},{padStart:function(t){return _R(this,t,arguments.length>1?arguments[1]:void 0)}});var qR=fr,$R=E,tK=ut,eK=re,nK=Hr,iK=Ji,rK=$R([].push),cK=$R([].join);qR({target:"String",stat:!0},{raw:function(t){for(var e=tK(eK(t).raw),n=iK(e),i=arguments.length,r=[],c=0;n>c;){if(rK(r,nK(e[c++])),c===n)return cK(r,"");c<i&&rK(r,nK(arguments[c]))}}}),fr({target:"String",proto:!0},{repeat:My});var aK=E,oK=re,lK=Math.floor,uK=aK("".charAt),dK=aK("".replace),sK=aK("".slice),mK=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,hK=/\$([$&'`]|\d{1,2})/g,bK=Mo,pK=H,ZK=E,IK=EY,yK=K,gK=rn,XK=dt,GK=Wi,fK=Ni,VK=Hr,WK=at,vK=OY,CK=zt,SK=function(t,e,n,i,r,c){var a=n+t.length,o=i.length,l=hK;return void 0!==r&&(r=oK(r),l=mK),dK(c,l,(function(c,l){var u;switch(uK(l,0)){case"$":return"$";case"&":return t;case"`":return sK(e,0,n);case"'":return sK(e,a);case"<":u=r[sK(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>o){var s=lK(d/10);return 0===s?c:s<=o?void 0===i[s-1]?uK(l,1):i[s-1]+uK(l,1):c}u=i[d-1]}return void 0===u?"":u}))},YK=iR,RK=Ve("replace"),KK=Math.max,NK=Math.min,LK=ZK([].concat),JK=ZK([].push),xK=ZK("".indexOf),HK=ZK("".slice),kK="$0"==="a".replace(/./,"$0"),UK=!!/./[RK]&&""===/./[RK]("a","$0"),TK=!yK((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));IK("replace",(function(t,e,n){var i=UK?"$":"$0";return[function(t,n){var i=WK(this),r=null==t?void 0:CK(t,RK);return r?pK(r,t,i,n):pK(e,VK(i),t,n)},function(t,r){var c=gK(this),a=VK(t);if("string"==typeof r&&-1===xK(r,i)&&-1===xK(r,"$<")){var o=n(e,c,a,r);if(o.done)return o.value}var l=XK(r);l||(r=VK(r));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=YK(c,a);if(null===m)break;if(JK(s,m),!u)break;""===VK(m[0])&&(c.lastIndex=vK(a,fK(c.lastIndex),d))}for(var h,b="",p=0,Z=0;Z<s.length;Z++){for(var I=VK((m=s[Z])[0]),y=KK(NK(GK(m.index),a.length),0),g=[],X=1;X<m.length;X++)JK(g,void 0===(h=m[X])?h:String(h));var G=m.groups;if(l){var f=LK([I],g,y,a);void 0!==G&&JK(f,G);var V=VK(bK(r,void 0,f))}else V=SK(I,a,y,g,G,r);y>=p&&(b+=HK(a,p,y)+V,p=y+I.length)}return b+HK(a,p)}]}),!TK||!kK||UK);var wK=H,FK=rn,AK=at,BK=sX,zK=Hr,jK=zt,MK=iR;EY("search",(function(t,e,n){return[function(e){var n=AK(this),i=null==e?void 0:jK(e,t);return i?wK(i,e,n):new RegExp(e)[t](zK(n))},function(t){var i=FK(this),r=zK(t),c=n(e,i,r);if(c.done)return c.value;var a=i.lastIndex;BK(a,0)||(i.lastIndex=0);var o=MK(i,r);return BK(i.lastIndex,a)||(i.lastIndex=a),null===o?-1:o.index}]}));var QK=Mo,PK=H,EK=E,DK=EY,OK=Uv,_K=rn,qK=at,$K=bG,tN=OY,eN=Ni,nN=Hr,iN=zt,rN=Zc,cN=iR,aN=dS,oN=K,lN=_v.UNSUPPORTED_Y,uN=Math.min,dN=[].push,sN=EK(/./.exec),mN=EK(dN),hN=EK("".slice),bN=!oN((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));DK("split",(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=nN(qK(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===t)return[i];if(!OK(t))return PK(e,i,t,r);for(var c,a,o,l=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,s=new RegExp(t.source,u+"g");(c=PK(aN,s,i))&&!((a=s.lastIndex)>d&&(mN(l,hN(i,d,c.index)),c.length>1&&c.index<i.length&&QK(dN,l,rN(c,1)),o=c[0].length,d=a,l.length>=r));)s.lastIndex===c.index&&s.lastIndex++;return d===i.length?!o&&sN(s,"")||mN(l,""):mN(l,hN(i,d)),l.length>r?rN(l,0,r):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:PK(e,this,t,n)}:e,[function(e,n){var r=qK(this),c=null==e?void 0:iN(e,t);return c?PK(c,e,r,n):PK(i,nN(r),e,n)},function(t,r){var c=_K(this),a=nN(t),o=n(i,c,a,r,i!==e);if(o.done)return o.value;var l=$K(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(lN?"g":"y"),s=new l(lN?"^(?:"+c.source+")":c,d),m=void 0===r?4294967295:r>>>0;if(0===m)return[];if(0===a.length)return null===cN(s,a)?[a]:[];for(var h=0,b=0,p=[];b<a.length;){s.lastIndex=lN?0:b;var Z,I=cN(s,lN?hN(a,b):a);if(null===I||(Z=uN(eN(s.lastIndex+(lN?b:0)),a.length))===h)b=tN(a,b,u);else{if(mN(p,hN(a,h,b)),p.length===m)return p;for(var y=1;y<=I.length-1;y++)if(mN(p,I[y]),p.length===m)return p;b=h=Z}}return mN(p,hN(a,h)),p}]}),!bN,lN);var pN=fr,ZN=E,IN=R.f,yN=Ni,gN=Hr,XN=aY,GN=at,fN=lY,VN=ZN("".startsWith),WN=ZN("".slice),vN=Math.min,CN=fN("startsWith"),SN=!CN&&!!function(){var t=IN(String.prototype,"startsWith");return t&&!t.writable}();pN({target:"String",proto:!0,forced:!SN&&!CN},{startsWith:function(t){var e=gN(GN(this));XN(t);var n=yN(vN(arguments.length>1?arguments[1]:void 0,e.length)),i=gN(t);return VN?VN(e,i,n):WN(e,n,n+i.length)===i}});var YN=fn.PROPER,RN=K,KN=NI,NN=function(t){return RN((function(){return!!KN[t]()||"​…᠎"!=="​…᠎"[t]()||YN&&KN[t].name!==t}))},LN=wI.trim;fr({target:"String",proto:!0,forced:NN("trim")},{trim:function(){return LN(this)}});var JN=wI.end,xN=NN("trimEnd")?function(){return JN(this)}:"".trimEnd;fr({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==xN},{trimRight:xN});fr({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==xN},{trimEnd:xN});var HN=wI.start,kN=NN("trimStart")?function(){return HN(this)}:"".trimStart;fr({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==kN},{trimLeft:kN});fr({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==kN},{trimStart:kN});var UN=at,TN=Hr,wN=/"/g,FN=E("".replace),AN=function(t,e,n,i){var r=TN(UN(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+FN(TN(i),wN,"&quot;")+'"'),c+">"+r+"</"+e+">"},BN=K,zN=function(t){return BN((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))},jN=AN;fr({target:"String",proto:!0,forced:zN("anchor")},{anchor:function(t){return jN(this,"a","name",t)}});var MN=AN;fr({target:"String",proto:!0,forced:zN("big")},{big:function(){return MN(this,"big","","")}});var QN=AN;fr({target:"String",proto:!0,forced:zN("blink")},{blink:function(){return QN(this,"blink","","")}});var PN=AN;fr({target:"String",proto:!0,forced:zN("bold")},{bold:function(){return PN(this,"b","","")}});var EN=AN;fr({target:"String",proto:!0,forced:zN("fixed")},{fixed:function(){return EN(this,"tt","","")}});var DN=AN;fr({target:"String",proto:!0,forced:zN("fontcolor")},{fontcolor:function(t){return DN(this,"font","color",t)}});var ON=AN;fr({target:"String",proto:!0,forced:zN("fontsize")},{fontsize:function(t){return ON(this,"font","size",t)}});var _N=AN;fr({target:"String",proto:!0,forced:zN("italics")},{italics:function(){return _N(this,"i","","")}});var qN=AN;fr({target:"String",proto:!0,forced:zN("link")},{link:function(t){return qN(this,"a","href",t)}});var $N=AN;fr({target:"String",proto:!0,forced:zN("small")},{small:function(){return $N(this,"small","","")}});var tL=AN;fr({target:"String",proto:!0,forced:zN("strike")},{strike:function(){return tL(this,"strike","","")}});var eL=AN;fr({target:"String",proto:!0,forced:zN("sub")},{sub:function(){return eL(this,"sub","","")}});var nL=AN;fr({target:"String",proto:!0,forced:zN("sup")},{sup:function(){return nL(this,"sup","","")}});var iL,rL,cL,aL={exports:{}},oL=gh,lL=N,uL=Y,dL=dt,sL=mt,mL=oe,hL=Lr,bL=Ut,pL=pn,ZL=yi,IL=_e.f,yL=It,gL=_d,XL=Gs,GL=Ve,fL=me,VL=uL.Int8Array,WL=VL&&VL.prototype,vL=uL.Uint8ClampedArray,CL=vL&&vL.prototype,SL=VL&&gL(VL),YL=WL&&gL(WL),RL=Object.prototype,KL=uL.TypeError,NL=GL("toStringTag"),LL=fL("TYPED_ARRAY_TAG"),JL=fL("TYPED_ARRAY_CONSTRUCTOR"),xL=oL&&!!XL&&"Opera"!==hL(uL.opera),HL=!1,kL={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},UL={BigInt64Array:8,BigUint64Array:8},TL=function(t){if(!sL(t))return!1;var e=hL(t);return mL(kL,e)||mL(UL,e)};for(iL in kL)(cL=(rL=uL[iL])&&rL.prototype)?pL(cL,JL,rL):xL=!1;for(iL in UL)(cL=(rL=uL[iL])&&rL.prototype)&&pL(cL,JL,rL);if((!xL||!dL(SL)||SL===Function.prototype)&&(SL=function(){throw KL("Incorrect invocation")},xL))for(iL in kL)uL[iL]&&XL(uL[iL],SL);if((!xL||!YL||YL===RL)&&(YL=SL.prototype,xL))for(iL in kL)uL[iL]&&XL(uL[iL].prototype,YL);if(xL&&gL(CL)!==YL&&XL(CL,YL),lL&&!mL(YL,NL))for(iL in HL=!0,IL(YL,NL,{get:function(){return sL(this)?this[LL]:void 0}}),kL)uL[iL]&&pL(uL[iL],LL,iL);var wL={NATIVE_ARRAY_BUFFER_VIEWS:xL,TYPED_ARRAY_CONSTRUCTOR:JL,TYPED_ARRAY_TAG:HL&&LL,aTypedArray:function(t){if(TL(t))return t;throw KL("Target is not a typed array")},aTypedArrayConstructor:function(t){if(dL(t)&&(!XL||yL(SL,t)))return t;throw KL(bL(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,i){if(lL){if(n)for(var r in kL){var c=uL[r];if(c&&mL(c.prototype,t))try{delete c.prototype[t]}catch(n){try{c.prototype[t]=e}catch(t){}}}YL[t]&&!n||ZL(YL,t,n?e:xL&&WL[t]||e,i)}},exportTypedArrayStaticMethod:function(t,e,n){var i,r;if(lL){if(XL){if(n)for(i in kL)if((r=uL[i])&&mL(r,t))try{delete r[t]}catch(t){}if(SL[t]&&!n)return;try{return ZL(SL,t,n?e:xL&&SL[t]||e)}catch(t){}}for(i in kL)!(r=uL[i])||r[t]&&!n||ZL(r,t,e)}},isView:function(t){if(!sL(t))return!1;var e=hL(t);return"DataView"===e||mL(kL,e)||mL(UL,e)},isTypedArray:TL,TypedArray:SL,TypedArrayPrototype:YL},FL=Y,AL=K,BL=Hd,zL=wL.NATIVE_ARRAY_BUFFER_VIEWS,jL=FL.ArrayBuffer,ML=FL.Int8Array,QL=!zL||!AL((function(){ML(1)}))||!AL((function(){new ML(-1)}))||!BL((function(t){new ML,new ML(null),new ML(1.5),new ML(t)}),!0)||AL((function(){return 1!==new ML(new jL(2),1,void 0).length})),PL=Wi,EL=Y.RangeError,DL=function(t){var e=PL(t);if(e<0)throw EL("The argument can't be less than 0");return e},OL=Y.RangeError,_L=function(t,e){var n=DL(t);if(n%e)throw OL("Wrong offset");return n},qL=Ac,$L=H,tJ=dG,eJ=re,nJ=Ji,iJ=yd,rJ=sd,cJ=ad,aJ=wL.aTypedArrayConstructor,oJ=function(t){var e,n,i,r,c,a,o=tJ(this),l=eJ(t),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=rJ(l);if(m&&!cJ(m))for(a=(c=iJ(l,m)).next,l=[];!(r=$L(a,c)).done;)l.push(r.value);for(s&&u>2&&(d=qL(d,arguments[2])),n=nJ(l),i=new(aJ(o))(n),e=0;n>e;e++)i[e]=s?d(l[e],e):l[e];return i},lJ=fr,uJ=Y,dJ=H,sJ=N,mJ=QL,hJ=wL,bJ=Jb,pJ=Wh,ZJ=B,IJ=pn,yJ=Zy,gJ=Ni,XJ=Yh,GJ=_L,fJ=He,VJ=oe,WJ=Lr,vJ=mt,CJ=Ht,SJ=cc,YJ=It,RJ=Gs,KJ=gi.f,NJ=oJ,LJ=ga.forEach,JJ=ah,xJ=_e,HJ=R,kJ=Pp,UJ=ei.get,TJ=ei.set,wJ=xJ.f,FJ=HJ.f,AJ=Math.round,BJ=uJ.RangeError,zJ=bJ.ArrayBuffer,jJ=zJ.prototype,MJ=bJ.DataView,QJ=hJ.NATIVE_ARRAY_BUFFER_VIEWS,PJ=hJ.TYPED_ARRAY_CONSTRUCTOR,EJ=hJ.TYPED_ARRAY_TAG,DJ=hJ.TypedArray,OJ=hJ.TypedArrayPrototype,_J=hJ.aTypedArrayConstructor,qJ=hJ.isTypedArray,$J=function(t,e){_J(t);for(var n=0,i=e.length,r=new t(i);i>n;)r[n]=e[n++];return r},tx=function(t,e){wJ(t,e,{get:function(){return UJ(this)[e]}})},ex=function(t){var e;return YJ(jJ,t)||"ArrayBuffer"==(e=WJ(t))||"SharedArrayBuffer"==e},nx=function(t,e){return qJ(t)&&!CJ(e)&&e in t&&yJ(+e)&&e>=0},ix=function(t,e){return e=fJ(e),nx(t,e)?ZJ(2,t[e]):FJ(t,e)},rx=function(t,e,n){return e=fJ(e),!(nx(t,e)&&vJ(n)&&VJ(n,"value"))||VJ(n,"get")||VJ(n,"set")||n.configurable||VJ(n,"writable")&&!n.writable||VJ(n,"enumerable")&&!n.enumerable?wJ(t,e,n):(t[e]=n.value,t)};sJ?(QJ||(HJ.f=ix,xJ.f=rx,tx(OJ,"buffer"),tx(OJ,"byteOffset"),tx(OJ,"byteLength"),tx(OJ,"length")),lJ({target:"Object",stat:!0,forced:!QJ},{getOwnPropertyDescriptor:ix,defineProperty:rx}),aL.exports=function(t,e,n){var i=t.match(/\d+$/)[0]/8,r=t+(n?"Clamped":"")+"Array",c="get"+t,a="set"+t,o=uJ[r],l=o,u=l&&l.prototype,d={},s=function(t,e){wJ(t,e,{get:function(){return function(t,e){var n=UJ(t);return n.view[c](e*i+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,r){var c=UJ(t);n&&(r=(r=AJ(r))<0?0:r>255?255:255&r),c.view[a](e*i+c.byteOffset,r,!0)}(this,e,t)},enumerable:!0})};QJ?mJ&&(l=e((function(t,e,n,r){return pJ(t,u),kJ(vJ(e)?ex(e)?void 0!==r?new o(e,GJ(n,i),r):void 0!==n?new o(e,GJ(n,i)):new o(e):qJ(e)?$J(l,e):dJ(NJ,l,e):new o(XJ(e)),t,l)})),RJ&&RJ(l,DJ),LJ(KJ(o),(function(t){t in l||IJ(l,t,o[t])})),l.prototype=u):(l=e((function(t,e,n,r){pJ(t,u);var c,a,o,d=0,m=0;if(vJ(e)){if(!ex(e))return qJ(e)?$J(l,e):dJ(NJ,l,e);c=e,m=GJ(n,i);var h=e.byteLength;if(void 0===r){if(h%i)throw BJ("Wrong length");if((a=h-m)<0)throw BJ("Wrong length")}else if((a=gJ(r)*i)+m>h)throw BJ("Wrong length");o=a/i}else o=XJ(e),c=new zJ(a=o*i);for(TJ(t,{buffer:c,byteOffset:m,byteLength:a,length:o,view:new MJ(c)});d<o;)s(t,d++)})),RJ&&RJ(l,DJ),u=l.prototype=SJ(OJ)),u.constructor!==l&&IJ(u,"constructor",l),IJ(u,PJ,l),EJ&&IJ(u,EJ,r);var m=l!=o;d[r]=l,lJ({global:!0,constructor:!0,forced:m,sham:!QJ},d),"BYTES_PER_ELEMENT"in l||IJ(l,"BYTES_PER_ELEMENT",i),"BYTES_PER_ELEMENT"in u||IJ(u,"BYTES_PER_ELEMENT",i),JJ(r)}):aL.exports=function(){},(0,aL.exports)("Float32",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Float64",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Int8",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Int16",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Int32",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}),!0),(0,aL.exports)("Uint16",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Uint32",(function(t){return function(e,n,i){return t(this,e,n,i)}}));var cx=wL,ax=E(hu),ox=cx.aTypedArray;(0,cx.exportTypedArrayMethod)("copyWithin",(function(t,e){return ax(ox(this),t,e,arguments.length>2?arguments[2]:void 0)}));var lx=ga.every,ux=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("every",(function(t){return lx(ux(this),t,arguments.length>1?arguments[1]:void 0)}));var dx=H,sx=Wu,mx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("fill",(function(t){var e=arguments.length;return dx(sx,mx(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}));var hx=Ji,bx=bG,px=wL.TYPED_ARRAY_CONSTRUCTOR,Zx=wL.aTypedArrayConstructor,Ix=function(t){return Zx(bx(t,t[px]))},yx=function(t,e){for(var n=0,i=hx(e),r=new t(i);i>n;)r[n]=e[n++];return r},gx=Ix,Xx=ga.filter,Gx=function(t,e){return yx(gx(t),e)},fx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("filter",(function(t){var e=Xx(fx(this),t,arguments.length>1?arguments[1]:void 0);return Gx(this,e)}));var Vx=ga.find,Wx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("find",(function(t){return Vx(Wx(this),t,arguments.length>1?arguments[1]:void 0)}));var vx=ga.findIndex,Cx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("findIndex",(function(t){return vx(Cx(this),t,arguments.length>1?arguments[1]:void 0)}));var Sx=ga.forEach,Yx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("forEach",(function(t){Sx(Yx(this),t,arguments.length>1?arguments[1]:void 0)})),(0,wL.exportTypedArrayStaticMethod)("from",oJ,QL);var Rx=Ti.includes,Kx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("includes",(function(t){return Rx(Kx(this),t,arguments.length>1?arguments[1]:void 0)}));var Nx=Ti.indexOf,Lx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("indexOf",(function(t){return Nx(Lx(this),t,arguments.length>1?arguments[1]:void 0)}));var Jx=Y,xx=K,Hx=E,kx=wL,Ux=Es,Tx=Ve("iterator"),wx=Jx.Uint8Array,Fx=Hx(Ux.values),Ax=Hx(Ux.keys),Bx=Hx(Ux.entries),zx=kx.aTypedArray,jx=kx.exportTypedArrayMethod,Mx=wx&&wx.prototype,Qx=!xx((function(){Mx[Tx].call([1])})),Px=!!Mx&&Mx.values&&Mx[Tx]===Mx.values&&"values"===Mx.values.name,Ex=function(){return Fx(zx(this))};jx("entries",(function(){return Bx(zx(this))}),Qx),jx("keys",(function(){return Ax(zx(this))}),Qx),jx("values",Ex,Qx||!Px,{name:"values"}),jx(Tx,Ex,Qx||!Px,{name:"values"});var Dx=wL.aTypedArray,Ox=wL.exportTypedArrayMethod,_x=E([].join);Ox("join",(function(t){return _x(Dx(this),t)}));var qx=Mo,$x=ut,tH=Wi,eH=Ji,nH=_s,iH=Math.min,rH=[].lastIndexOf,cH=!!rH&&1/[1].lastIndexOf(1,-0)<0,aH=nH("lastIndexOf"),oH=cH||!aH?function(t){if(cH)return qx(rH,this,arguments)||0;var e=$x(this),n=eH(e),i=n-1;for(arguments.length>1&&(i=iH(i,tH(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in e&&e[i]===t)return i||0;return-1}:rH,lH=Mo,uH=oH,dH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return lH(uH,dH(this),e>1?[t,arguments[1]]:[t])}));var sH=ga.map,mH=Ix,hH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("map",(function(t){return sH(hH(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(mH(t))(e)}))}));var bH=wL.aTypedArrayConstructor;(0,wL.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(bH(this))(e);e>t;)n[t]=arguments[t++];return n}),QL);var pH=At,ZH=re,IH=rt,yH=Ji,gH=Y.TypeError,XH=function(t){return function(e,n,i,r){pH(n);var c=ZH(e),a=IH(c),o=yH(c),l=t?o-1:0,u=t?-1:1;if(i<2)for(;;){if(l in a){r=a[l],l+=u;break}if(l+=u,t?l<0:o<=l)throw gH("Reduce of empty array with no initial value")}for(;t?l>=0:o>l;l+=u)l in a&&(r=n(r,a[l],l,c));return r}},GH={left:XH(!1),right:XH(!0)},fH=GH.left,VH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return fH(VH(this),t,e,e>1?arguments[1]:void 0)}));var WH=GH.right,vH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return WH(vH(this),t,e,e>1?arguments[1]:void 0)}));var CH=wL.aTypedArray,SH=wL.exportTypedArrayMethod,YH=Math.floor;SH("reverse",(function(){for(var t,e=this,n=CH(e).length,i=YH(n/2),r=0;r<i;)t=e[r],e[r++]=e[--n],e[n]=t;return e}));var RH=Y,KH=H,NH=wL,LH=Ji,JH=_L,xH=re,HH=K,kH=RH.RangeError,UH=RH.Int8Array,TH=UH&&UH.prototype,wH=TH&&TH.set,FH=NH.aTypedArray,AH=NH.exportTypedArrayMethod,BH=!HH((function(){var t=new Uint8ClampedArray(2);return KH(wH,t,{length:1,0:3},1),3!==t[1]})),zH=BH&&NH.NATIVE_ARRAY_BUFFER_VIEWS&&HH((function(){var t=new UH(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));AH("set",(function(t){FH(this);var e=JH(arguments.length>1?arguments[1]:void 0,1),n=xH(t);if(BH)return KH(wH,this,n,e);var i=this.length,r=LH(n),c=0;if(r+e>i)throw kH("Wrong length");for(;c<r;)this[e+c]=n[c++]}),!BH||zH);var jH=Ix,MH=Qo,QH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("slice",(function(t,e){for(var n=MH(QH(this),t,e),i=jH(this),r=0,c=n.length,a=new i(c);c>r;)a[r]=n[r++];return a}),K((function(){new Int8Array(1).slice()})));var PH=ga.some,EH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("some",(function(t){return PH(EH(this),t,arguments.length>1?arguments[1]:void 0)}));var DH=E,OH=K,_H=At,qH=Km,$H=Lm,tk=Jm,ek=vt,nk=Hm,ik=wL.aTypedArray,rk=wL.exportTypedArrayMethod,ck=Y.Uint16Array,ak=ck&&DH(ck.prototype.sort),ok=!(!ak||OH((function(){ak(new ck(2),null)}))&&OH((function(){ak(new ck(2),{})}))),lk=!!ak&&!OH((function(){if(ek)return ek<74;if($H)return $H<67;if(tk)return!0;if(nk)return nk<602;var t,e,n=new ck(516),i=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,i[t]=t-2*e+3;for(ak(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==i[t])return!0}));rk("sort",(function(t){return void 0!==t&&_H(t),lk?ak(this,t):qH(ik(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!lk||ok);var uk=Ni,dk=Yi,sk=Ix,mk=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("subarray",(function(t,e){var n=mk(this),i=n.length,r=dk(t,i);return new(sk(n))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,uk((void 0===e?i:dk(e,i))-r))}));var hk=Mo,bk=wL,pk=K,Zk=Qo,Ik=Y.Int8Array,yk=bk.aTypedArray,gk=bk.exportTypedArrayMethod,Xk=[].toLocaleString,Gk=!!Ik&&pk((function(){Xk.call(new Ik(1))}));gk("toLocaleString",(function(){return hk(Xk,Gk?Zk(yk(this)):yk(this),Zk(arguments))}),pk((function(){return[1,2].toLocaleString()!=new Ik([1,2]).toLocaleString()}))||!pk((function(){Ik.prototype.toLocaleString.call([1,2])})));var fk=wL.exportTypedArrayMethod,Vk=K,Wk=E,vk=Y.Uint8Array,Ck=vk&&vk.prototype||{},Sk=[].toString,Yk=Wk([].join);Vk((function(){Sk.call({})}))&&(Sk=function(){return Yk(this)});var Rk=Ck.toString!=Sk;fk("toString",Sk,Rk);var Kk=E,Nk=Gh,Lk=ap.exports.getWeakData,Jk=rn,xk=mt,Hk=Wh,kk=zp,Uk=oe,Tk=ei.set,wk=ei.getterFor,Fk=ga.find,Ak=ga.findIndex,Bk=Kk([].splice),zk=0,jk=function(t){return t.frozen||(t.frozen=new Mk)},Mk=function(){this.entries=[]},Qk=function(t,e){return Fk(t.entries,(function(t){return t[0]===e}))};Mk.prototype={get:function(t){var e=Qk(this,t);if(e)return e[1]},has:function(t){return!!Qk(this,t)},set:function(t,e){var n=Qk(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=Ak(this.entries,(function(e){return e[0]===t}));return~e&&Bk(this.entries,e,1),!!~e}};var Pk,Ek={getConstructor:function(t,e,n,i){var r=t((function(t,r){Hk(t,c),Tk(t,{type:e,id:zk++,frozen:void 0}),null!=r&&kk(r,t[i],{that:t,AS_ENTRIES:n})})),c=r.prototype,a=wk(e),o=function(t,e,n){var i=a(t),r=Lk(Jk(e),!0);return!0===r?jk(i).set(e,n):r[i.id]=n,t};return Nk(c,{delete:function(t){var e=a(this);if(!xk(t))return!1;var n=Lk(t);return!0===n?jk(e).delete(t):n&&Uk(n,e.id)&&delete n[e.id]},has:function(t){var e=a(this);if(!xk(t))return!1;var n=Lk(t);return!0===n?jk(e).has(t):n&&Uk(n,e.id)}}),Nk(c,n?{get:function(t){var e=a(this);if(xk(t)){var n=Lk(t);return!0===n?jk(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),r}},Dk=Y,Ok=E,_k=Gh,qk=ap.exports,$k=lZ,tU=Ek,eU=mt,nU=hp,iU=ei.enforce,rU=Jn,cU=!Dk.ActiveXObject&&"ActiveXObject"in Dk,aU=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},oU=$k("WeakMap",aU,tU);if(rU&&cU){Pk=tU.getConstructor(aU,"WeakMap",!0),qk.enable();var lU=oU.prototype,uU=Ok(lU.delete),dU=Ok(lU.has),sU=Ok(lU.get),mU=Ok(lU.set);_k(lU,{delete:function(t){if(eU(t)&&!nU(t)){var e=iU(this);return e.frozen||(e.frozen=new Pk),uU(this,t)||e.frozen.delete(t)}return uU(this,t)},has:function(t){if(eU(t)&&!nU(t)){var e=iU(this);return e.frozen||(e.frozen=new Pk),dU(this,t)||e.frozen.has(t)}return dU(this,t)},get:function(t){if(eU(t)&&!nU(t)){var e=iU(this);return e.frozen||(e.frozen=new Pk),dU(this,t)?sU(this,t):e.frozen.get(t)}return sU(this,t)},set:function(t,e){if(eU(t)&&!nU(t)){var n=iU(this);n.frozen||(n.frozen=new Pk),dU(this,t)?mU(this,t,e):n.frozen.set(t,e)}else mU(this,t,e);return this}})}lZ("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Ek);var hU={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},bU=we("span").classList,pU=bU&&bU.constructor&&bU.constructor.prototype,ZU=pU===Object.prototype?void 0:pU,IU=ga.forEach,yU=Y,gU=hU,XU=ZU,GU=_s("forEach")?[].forEach:function(t){return IU(this,t,arguments.length>1?arguments[1]:void 0)},fU=pn,VU=function(t){if(t&&t.forEach!==GU)try{fU(t,"forEach",GU)}catch(e){t.forEach=GU}};for(var WU in gU)gU[WU]&&VU(yU[WU]&&yU[WU].prototype);VU(XU);var vU=Y,CU=hU,SU=ZU,YU=Es,RU=pn,KU=Ve,NU=KU("iterator"),LU=KU("toStringTag"),JU=YU.values,xU=function(t,e){if(t){if(t[NU]!==JU)try{RU(t,NU,JU)}catch(e){t[NU]=JU}if(t[LU]||RU(t,LU,e),CU[e])for(var n in YU)if(t[n]!==YU[n])try{RU(t,n,YU[n])}catch(e){t[n]=YU[n]}}};for(var HU in CU)xU(vU[HU]&&vU[HU].prototype,HU);xU(SU,"DOMTokenList");var kU=_G.clear;fr({global:!0,bind:!0,enumerable:!0,forced:Y.clearImmediate!==kU},{clearImmediate:kU});var UU=_G.set;fr({global:!0,bind:!0,enumerable:!0,forced:Y.setImmediate!==UU},{setImmediate:UU});var TU=fr,wU=Zf,FU=At,AU=ZG,BU=aG,zU=Y.process;TU({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(t){AU(arguments.length,1),FU(t);var e=BU&&zU.domain;wU(e?e.bind(t):t)}});var jU=K,MU=Ve("iterator"),QU=!jU((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,i){e.delete("b"),n+=i+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[MU]||"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})),PU=E,EU=/[^\0-\u007E]/,DU=/[.\u3002\uFF0E\uFF61]/g,OU="Overflow: input needs wider integers to process",_U=Y.RangeError,qU=PU(DU.exec),$U=Math.floor,tT=String.fromCharCode,eT=PU("".charCodeAt),nT=PU([].join),iT=PU([].push),rT=PU("".replace),cT=PU("".split),aT=PU("".toLowerCase),oT=function(t){return t+22+75*(t<26)},lT=function(t,e,n){var i=0;for(t=n?$U(t/700):t>>1,t+=$U(t/e);t>455;)t=$U(t/35),i+=36;return $U(i+36*t/(t+38))},uT=function(t){var e=[];t=function(t){for(var e=[],n=0,i=t.length;n<i;){var r=eT(t,n++);if(r>=55296&&r<=56319&&n<i){var c=eT(t,n++);56320==(64512&c)?iT(e,((1023&r)<<10)+(1023&c)+65536):(iT(e,r),n--)}else iT(e,r)}return e}(t);var n,i,r=t.length,c=128,a=0,o=72;for(n=0;n<t.length;n++)(i=t[n])<128&&iT(e,tT(i));var l=e.length,u=l;for(l&&iT(e,"-");u<r;){var d=2147483647;for(n=0;n<t.length;n++)(i=t[n])>=c&&i<d&&(d=i);var s=u+1;if(d-c>$U((2147483647-a)/s))throw _U(OU);for(a+=(d-c)*s,c=d,n=0;n<t.length;n++){if((i=t[n])<c&&++a>2147483647)throw _U(OU);if(i==c){for(var m=a,h=36;;){var b=h<=o?1:h>=o+26?26:h-o;if(m<b)break;var p=m-b,Z=36-b;iT(e,tT(oT(b+p%Z))),m=$U(p/Z),h+=36}iT(e,tT(oT(m))),o=lT(a,s,u==l),a=0,u++}}a++,c++}return nT(e,"")},dT=fr,sT=Y,mT=H,hT=E,bT=N,pT=QU,ZT=yi,IT=Gh,yT=Uc,gT=ms,XT=ei,GT=Wh,fT=dt,VT=oe,WT=Ac,vT=Lr,CT=rn,ST=mt,YT=Hr,RT=cc,KT=B,NT=yd,LT=sd,JT=ZG,xT=Km,HT=Ve("iterator"),kT=XT.set,UT=XT.getterFor("URLSearchParams"),TT=XT.getterFor("URLSearchParamsIterator"),wT=Object.getOwnPropertyDescriptor,FT=function(t){if(!bT)return sT[t];var e=wT(sT,t);return e&&e.value},AT=FT("fetch"),BT=FT("Request"),zT=FT("Headers"),jT=BT&&BT.prototype,MT=zT&&zT.prototype,QT=sT.RegExp,PT=sT.TypeError,ET=sT.decodeURIComponent,DT=sT.encodeURIComponent,OT=hT("".charAt),_T=hT([].join),qT=hT([].push),$T=hT("".replace),tw=hT([].shift),ew=hT([].splice),nw=hT("".split),iw=hT("".slice),rw=/\+/g,cw=Array(4),aw=function(t){return cw[t-1]||(cw[t-1]=QT("((?:%[\\da-f]{2}){"+t+"})","gi"))},ow=function(t){try{return ET(t)}catch(e){return t}},lw=function(t){var e=$T(t,rw," "),n=4;try{return ET(e)}catch(t){for(;n;)e=$T(e,aw(n--),ow);return e}},uw=/[!'()~]|%20/g,dw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},sw=function(t){return dw[t]},mw=function(t){return $T(DT(t),uw,sw)},hw=gT((function(t,e){kT(this,{type:"URLSearchParamsIterator",iterator:NT(UT(t).entries),kind:e})}),"Iterator",(function(){var t=TT(this),e=t.kind,n=t.iterator.next(),i=n.value;return n.done||(n.value="keys"===e?i.key:"values"===e?i.value:[i.key,i.value]),n}),!0),bw=function(t){this.entries=[],this.url=null,void 0!==t&&(ST(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===OT(t,0)?iw(t,1):t:YT(t)))};bw.prototype={type:"URLSearchParams",bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,i,r,c,a,o,l=LT(t);if(l)for(n=(e=NT(t,l)).next;!(i=mT(n,e)).done;){if(c=(r=NT(CT(i.value))).next,(a=mT(c,r)).done||(o=mT(c,r)).done||!mT(c,r).done)throw PT("Expected sequence with length 2");qT(this.entries,{key:YT(a.value),value:YT(o.value)})}else for(var u in t)VT(t,u)&&qT(this.entries,{key:u,value:YT(t[u])})},parseQuery:function(t){if(t)for(var e,n,i=nw(t,"&"),r=0;r<i.length;)(e=i[r++]).length&&(n=nw(e,"="),qT(this.entries,{key:lw(tw(n)),value:lw(_T(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],i=0;i<e.length;)t=e[i++],qT(n,mw(t.key)+"="+mw(t.value));return _T(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var pw=function(){GT(this,Zw);var t=arguments.length>0?arguments[0]:void 0;kT(this,new bw(t))},Zw=pw.prototype;if(IT(Zw,{append:function(t,e){JT(arguments.length,2);var n=UT(this);qT(n.entries,{key:YT(t),value:YT(e)}),n.updateURL()},delete:function(t){JT(arguments.length,1);for(var e=UT(this),n=e.entries,i=YT(t),r=0;r<n.length;)n[r].key===i?ew(n,r,1):r++;e.updateURL()},get:function(t){JT(arguments.length,1);for(var e=UT(this).entries,n=YT(t),i=0;i<e.length;i++)if(e[i].key===n)return e[i].value;return null},getAll:function(t){JT(arguments.length,1);for(var e=UT(this).entries,n=YT(t),i=[],r=0;r<e.length;r++)e[r].key===n&&qT(i,e[r].value);return i},has:function(t){JT(arguments.length,1);for(var e=UT(this).entries,n=YT(t),i=0;i<e.length;)if(e[i++].key===n)return!0;return!1},set:function(t,e){JT(arguments.length,1);for(var n,i=UT(this),r=i.entries,c=!1,a=YT(t),o=YT(e),l=0;l<r.length;l++)(n=r[l]).key===a&&(c?ew(r,l--,1):(c=!0,n.value=o));c||qT(r,{key:a,value:o}),i.updateURL()},sort:function(){var t=UT(this);xT(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=UT(this).entries,i=WT(t,arguments.length>1?arguments[1]:void 0),r=0;r<n.length;)i((e=n[r++]).value,e.key,this)},keys:function(){return new hw(this,"keys")},values:function(){return new hw(this,"values")},entries:function(){return new hw(this,"entries")}},{enumerable:!0}),ZT(Zw,HT,Zw.entries,{name:"entries"}),ZT(Zw,"toString",(function(){return UT(this).serialize()}),{enumerable:!0}),yT(pw,"URLSearchParams"),dT({global:!0,constructor:!0,forced:!pT},{URLSearchParams:pw}),!pT&&fT(zT)){var Iw=hT(MT.has),yw=hT(MT.set),gw=function(t){if(ST(t)){var e,n=t.body;if("URLSearchParams"===vT(n))return e=t.headers?new zT(t.headers):new zT,Iw(e,"content-type")||yw(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),RT(t,{body:KT(0,YT(n)),headers:KT(0,e)})}return t};if(fT(AT)&&dT({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(t){return AT(t,arguments.length>1?gw(arguments[1]):{})}}),fT(BT)){var Xw=function(t){return GT(this,jT),new BT(t,arguments.length>1?gw(arguments[1]):{})};jT.constructor=Xw,Xw.prototype=jT,dT({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Xw})}}var Gw,fw=fr,Vw=N,Ww=QU,vw=Y,Cw=Ac,Sw=E,Yw=yi,Rw=hS,Kw=Wh,Nw=oe,Lw=Gg,Jw=Kd,xw=Zc,Hw=eY.codeAt,kw=function(t){var e,n,i=[],r=cT(rT(aT(t),DU,"."),".");for(e=0;e<r.length;e++)n=r[e],iT(i,qU(EU,n)?"xn--"+uT(n):n);return nT(i,".")},Uw=Hr,Tw=Uc,ww=ZG,Fw={URLSearchParams:pw,getState:UT},Aw=ei,Bw=Aw.set,zw=Aw.getterFor("URL"),jw=Fw.URLSearchParams,Mw=Fw.getState,Qw=vw.URL,Pw=vw.TypeError,Ew=vw.parseInt,Dw=Math.floor,Ow=Math.pow,_w=Sw("".charAt),qw=Sw(/./.exec),$w=Sw([].join),tF=Sw(1..toString),eF=Sw([].pop),nF=Sw([].push),iF=Sw("".replace),rF=Sw([].shift),cF=Sw("".split),aF=Sw("".slice),oF=Sw("".toLowerCase),lF=Sw([].unshift),uF=/[a-z]/i,dF=/[\d+-.a-z]/i,sF=/\d/,mF=/^0x/i,hF=/^[0-7]+$/,bF=/^\d+$/,pF=/^[\da-f]+$/i,ZF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,IF=/[\0\t\n\r #/:<>?@[\\\]^|]/,yF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,gF=/[\t\n\r]/g,XF=function(t){var e,n,i,r;if("number"==typeof t){for(e=[],n=0;n<4;n++)lF(e,t%256),t=Dw(t/256);return $w(e,".")}if("object"==a(t)){for(e="",i=function(t){for(var e=null,n=1,i=null,r=0,c=0;c<8;c++)0!==t[c]?(r>n&&(e=i,n=r),i=null,r=0):(null===i&&(i=c),++r);return r>n&&(e=i,n=r),e}(t),n=0;n<8;n++)r&&0===t[n]||(r&&(r=!1),i===n?(e+=n?":":"::",r=!0):(e+=tF(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},GF={},fF=Lw({},GF,{" ":1,'"':1,"<":1,">":1,"`":1}),VF=Lw({},fF,{"#":1,"?":1,"{":1,"}":1}),WF=Lw({},VF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),vF=function(t,e){var n=Hw(t,0);return n>32&&n<127&&!Nw(e,t)?t:encodeURIComponent(t)},CF={ftp:21,file:null,http:80,https:443,ws:80,wss:443},SF=function(t,e){var n;return 2==t.length&&qw(uF,_w(t,0))&&(":"==(n=_w(t,1))||!e&&"|"==n)},YF=function(t){var e;return t.length>1&&SF(aF(t,0,2))&&(2==t.length||"/"===(e=_w(t,2))||"\\"===e||"?"===e||"#"===e)},RF=function(t){return"."===t||"%2e"===oF(t)},KF={},NF={},LF={},JF={},xF={},HF={},kF={},UF={},TF={},wF={},FF={},AF={},BF={},zF={},jF={},MF={},QF={},PF={},EF={},DF={},OF={},_F=function t(e,n,i){var r,c,a,o=Uw(e);if(n){if(c=this.parse(o))throw Pw(c);this.searchParams=null}else{if(void 0!==i&&(r=new t(i,!0)),c=this.parse(o,null,r))throw Pw(c);(a=Mw(new jw)).bindURL(this),this.searchParams=a}};_F.prototype={type:"URL",parse:function(t,e,n){var i,r,c,a,o,l=this,u=e||KF,d=0,s="",m=!1,h=!1,b=!1;for(t=Uw(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=iF(t,yF,"")),t=iF(t,gF,""),i=Jw(t);d<=i.length;){switch(r=i[d],u){case KF:if(!r||!qw(uF,r)){if(e)return"Invalid scheme";u=LF;continue}s+=oF(r),u=NF;break;case NF:if(r&&(qw(dF,r)||"+"==r||"-"==r||"."==r))s+=oF(r);else{if(":"!=r){if(e)return"Invalid scheme";s="",u=LF,d=0;continue}if(e&&(l.isSpecial()!=Nw(CF,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,e)return void(l.isSpecial()&&CF[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=zF:l.isSpecial()&&n&&n.scheme==l.scheme?u=JF:l.isSpecial()?u=UF:"/"==i[d+1]?(u=xF,d++):(l.cannotBeABaseURL=!0,nF(l.path,""),u=EF)}break;case LF:if(!n||n.cannotBeABaseURL&&"#"!=r)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==r){l.scheme=n.scheme,l.path=xw(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=OF;break}u="file"==n.scheme?zF:HF;continue;case JF:if("/"!=r||"/"!=i[d+1]){u=HF;continue}u=TF,d++;break;case xF:if("/"==r){u=wF;break}u=PF;continue;case HF:if(l.scheme=n.scheme,r==Gw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.query=n.query;else if("/"==r||"\\"==r&&l.isSpecial())u=kF;else if("?"==r)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.query="",u=DF;else{if("#"!=r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.path.length--,u=PF;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.query=n.query,l.fragment="",u=OF}break;case kF:if(!l.isSpecial()||"/"!=r&&"\\"!=r){if("/"!=r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=PF;continue}u=wF}else u=TF;break;case UF:if(u=TF,"/"!=r||"/"!=_w(s,d+1))continue;d++;break;case TF:if("/"!=r&&"\\"!=r){u=wF;continue}break;case wF:if("@"==r){m&&(s="%40"+s),m=!0,c=Jw(s);for(var p=0;p<c.length;p++){var Z=c[p];if(":"!=Z||b){var I=vF(Z,WF);b?l.password+=I:l.username+=I}else b=!0}s=""}else if(r==Gw||"/"==r||"?"==r||"#"==r||"\\"==r&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=Jw(s).length+1,s="",u=FF}else s+=r;break;case FF:case AF:if(e&&"file"==l.scheme){u=MF;continue}if(":"!=r||h){if(r==Gw||"/"==r||"?"==r||"#"==r||"\\"==r&&l.isSpecial()){if(l.isSpecial()&&""==s)return"Invalid host";if(e&&""==s&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(s))return a;if(s="",u=QF,e)return;continue}"["==r?h=!0:"]"==r&&(h=!1),s+=r}else{if(""==s)return"Invalid host";if(a=l.parseHost(s))return a;if(s="",u=BF,e==AF)return}break;case BF:if(!qw(sF,r)){if(r==Gw||"/"==r||"?"==r||"#"==r||"\\"==r&&l.isSpecial()||e){if(""!=s){var y=Ew(s,10);if(y>65535)return"Invalid port";l.port=l.isSpecial()&&y===CF[l.scheme]?null:y,s=""}if(e)return;u=QF;continue}return"Invalid port"}s+=r;break;case zF:if(l.scheme="file","/"==r||"\\"==r)u=jF;else{if(!n||"file"!=n.scheme){u=PF;continue}if(r==Gw)l.host=n.host,l.path=xw(n.path),l.query=n.query;else if("?"==r)l.host=n.host,l.path=xw(n.path),l.query="",u=DF;else{if("#"!=r){YF($w(xw(i,d),""))||(l.host=n.host,l.path=xw(n.path),l.shortenPath()),u=PF;continue}l.host=n.host,l.path=xw(n.path),l.query=n.query,l.fragment="",u=OF}}break;case jF:if("/"==r||"\\"==r){u=MF;break}n&&"file"==n.scheme&&!YF($w(xw(i,d),""))&&(SF(n.path[0],!0)?nF(l.path,n.path[0]):l.host=n.host),u=PF;continue;case MF:if(r==Gw||"/"==r||"\\"==r||"?"==r||"#"==r){if(!e&&SF(s))u=PF;else if(""==s){if(l.host="",e)return;u=QF}else{if(a=l.parseHost(s))return a;if("localhost"==l.host&&(l.host=""),e)return;s="",u=QF}continue}s+=r;break;case QF:if(l.isSpecial()){if(u=PF,"/"!=r&&"\\"!=r)continue}else if(e||"?"!=r)if(e||"#"!=r){if(r!=Gw&&(u=PF,"/"!=r))continue}else l.fragment="",u=OF;else l.query="",u=DF;break;case PF:if(r==Gw||"/"==r||"\\"==r&&l.isSpecial()||!e&&("?"==r||"#"==r)){if(".."===(o=oF(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==r||"\\"==r&&l.isSpecial()||nF(l.path,"")):RF(s)?"/"==r||"\\"==r&&l.isSpecial()||nF(l.path,""):("file"==l.scheme&&!l.path.length&&SF(s)&&(l.host&&(l.host=""),s=_w(s,0)+":"),nF(l.path,s)),s="","file"==l.scheme&&(r==Gw||"?"==r||"#"==r))for(;l.path.length>1&&""===l.path[0];)rF(l.path);"?"==r?(l.query="",u=DF):"#"==r&&(l.fragment="",u=OF)}else s+=vF(r,VF);break;case EF:"?"==r?(l.query="",u=DF):"#"==r?(l.fragment="",u=OF):r!=Gw&&(l.path[0]+=vF(r,GF));break;case DF:e||"#"!=r?r!=Gw&&("'"==r&&l.isSpecial()?l.query+="%27":l.query+="#"==r?"%23":vF(r,GF)):(l.fragment="",u=OF);break;case OF:r!=Gw&&(l.fragment+=vF(r,fF))}d++}},parseHost:function(t){var e,n,i;if("["==_w(t,0)){if("]"!=_w(t,t.length-1))return"Invalid host";if(e=function(t){var e,n,i,r,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return _w(t,s)};if(":"==m()){if(":"!=_w(t,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(e=n=0;n<4&&qw(pF,m());)e=16*e+Ew(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(i=0;m();){if(r=null,i>0){if(!("."==m()&&i<4))return;s++}if(!qw(sF,m()))return;for(;qw(sF,m());){if(c=Ew(m(),10),null===r)r=c;else{if(0==r)return;r=10*r+c}if(r>255)return;s++}l[u]=256*l[u]+r,2!=++i&&4!=i||u++}if(4!=i)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=e}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(a=u-d,u=7;0!=u&&a>0;)o=l[u],l[u--]=l[d+a-1],l[d+--a]=o;else if(8!=u)return;return l}(aF(t,1,-1)),!e)return"Invalid host";this.host=e}else if(this.isSpecial()){if(t=kw(t),qw(ZF,t))return"Invalid host";if(e=function(t){var e,n,i,r,c,a,o,l=cF(t,".");if(l.length&&""==l[l.length-1]&&l.length--,(e=l.length)>4)return t;for(n=[],i=0;i<e;i++){if(""==(r=l[i]))return t;if(c=10,r.length>1&&"0"==_w(r,0)&&(c=qw(mF,r)?16:8,r=aF(r,8==c?1:2)),""===r)a=0;else{if(!qw(10==c?bF:8==c?hF:pF,r))return t;a=Ew(r,c)}nF(n,a)}for(i=0;i<e;i++)if(a=n[i],i==e-1){if(a>=Ow(256,5-e))return null}else if(a>255)return null;for(o=eF(n),i=0;i<n.length;i++)o+=n[i]*Ow(256,3-i);return o}(t),null===e)return"Invalid host";this.host=e}else{if(qw(IF,t))return"Invalid host";for(e="",n=Jw(t),i=0;i<n.length;i++)e+=vF(n[i],GF);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return Nw(CF,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&SF(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,i=t.password,r=t.host,c=t.port,a=t.path,o=t.query,l=t.fragment,u=e+":";return null!==r?(u+="//",t.includesCredentials()&&(u+=n+(i?":"+i:"")+"@"),u+=XF(r),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?a[0]:a.length?"/"+$w(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(t){var e=this.parse(t);if(e)throw Pw(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new qF(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+XF(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(Uw(t)+":",KF)},getUsername:function(){return this.username},setUsername:function(t){var e=Jw(Uw(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=vF(e[n],WF)}},getPassword:function(){return this.password},setPassword:function(t){var e=Jw(Uw(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=vF(e[n],WF)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?XF(t):XF(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,FF)},getHostname:function(){var t=this.host;return null===t?"":XF(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,AF)},getPort:function(){var t=this.port;return null===t?"":Uw(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=Uw(t))?this.port=null:this.parse(t,BF))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+$w(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,QF))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=Uw(t))?this.query=null:("?"==_w(t,0)&&(t=aF(t,1)),this.query="",this.parse(t,DF)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=Uw(t))?("#"==_w(t,0)&&(t=aF(t,1)),this.fragment="",this.parse(t,OF)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var qF=function(t){var e=Kw(this,$F),n=ww(arguments.length,1)>1?arguments[1]:void 0,i=Bw(e,new _F(t,!1,n));Vw||(e.href=i.serialize(),e.origin=i.getOrigin(),e.protocol=i.getProtocol(),e.username=i.getUsername(),e.password=i.getPassword(),e.host=i.getHost(),e.hostname=i.getHostname(),e.port=i.getPort(),e.pathname=i.getPathname(),e.search=i.getSearch(),e.searchParams=i.getSearchParams(),e.hash=i.getHash())},$F=qF.prototype,tA=function(t,e){return{get:function(){return zw(this)[t]()},set:e&&function(t){return zw(this)[e](t)},configurable:!0,enumerable:!0}};if(Vw&&(Rw($F,"href",tA("serialize","setHref")),Rw($F,"origin",tA("getOrigin")),Rw($F,"protocol",tA("getProtocol","setProtocol")),Rw($F,"username",tA("getUsername","setUsername")),Rw($F,"password",tA("getPassword","setPassword")),Rw($F,"host",tA("getHost","setHost")),Rw($F,"hostname",tA("getHostname","setHostname")),Rw($F,"port",tA("getPort","setPort")),Rw($F,"pathname",tA("getPathname","setPathname")),Rw($F,"search",tA("getSearch","setSearch")),Rw($F,"searchParams",tA("getSearchParams")),Rw($F,"hash",tA("getHash","setHash"))),Yw($F,"toJSON",(function(){return zw(this).serialize()}),{enumerable:!0}),Yw($F,"toString",(function(){return zw(this).serialize()}),{enumerable:!0}),Qw){var eA=Qw.createObjectURL,nA=Qw.revokeObjectURL;eA&&Yw(qF,"createObjectURL",Cw(eA,Qw)),nA&&Yw(qF,"revokeObjectURL",Cw(nA,Qw))}Tw(qF,"URL"),fw({global:!0,constructor:!0,forced:!Ww,sham:!Vw},{URL:qF});var iA,rA=H;function cA(t,e,n,i){return new(n||(n=Promise))((function(r,c){function a(t){try{l(i.next(t))}catch(t){c(t)}}function o(t){try{l(i.throw(t))}catch(t){c(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}l((i=i.apply(t,e||[])).next())}))}
3
+ c=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",o=i.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,i){var r=e&&e.prototype instanceof m?e:m,c=Object.create(r.prototype),a=new W(i||[]);return c._invoke=function(t,e,n){var i="suspendedStart";return function(r,c){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw c;return C()}for(n.method=r,n.arg=c;;){var a=n.delegate;if(a){var o=G(a,n);if(o){if(o===s)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var l=d(t,e,n);if("normal"===l.type){if(i=n.done?"completed":"suspendedYield",l.arg===s)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i="completed",n.method="throw",n.arg=l.arg)}}}(t,n,a),c}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var s={};function m(){}function h(){}function b(){}var p={};l(p,r,(function(){return this}));var Z=Object.getPrototypeOf,I=Z&&Z(Z(v([])));I&&I!==e&&n.call(I,r)&&(p=I);var y=b.prototype=m.prototype=Object.create(p);function g(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function X(t,e){function i(r,c,a,o){var l=d(t[r],t,c);if("throw"!==l.type){var u=l.arg,s=u.value;return s&&"object"==typeof s&&n.call(s,"__await")?e.resolve(s.__await).then((function(t){i("next",t,a,o)}),(function(t){i("throw",t,a,o)})):e.resolve(s).then((function(t){u.value=t,a(u)}),(function(t){return i("throw",t,a,o)}))}o(l.arg)}var r;this._invoke=function(t,n){function c(){return new e((function(e,r){i(t,n,e,r)}))}return r=r?r.then(c,c):c()}}function G(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,G(t,e),"throw"===e.method))return s;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var i=d(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,s;var r=i.arg;return r?r.done?(e[t.resultName]=r.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,s):r:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,s)}function f(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function V(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function W(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function v(t){if(t){var e=t[r];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,c=function e(){for(;++i<t.length;)if(n.call(t,i))return e.value=t[i],e.done=!1,e;return e.value=void 0,e.done=!0,e};return c.next=c}}return{next:C}}function C(){return{value:void 0,done:!0}}return h.prototype=b,l(y,"constructor",b),l(b,"constructor",h),h.displayName=l(b,o,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===h||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,l(t,o,"GeneratorFunction")),t.prototype=Object.create(y),t},t.awrap=function(t){return{__await:t}},g(X.prototype),l(X.prototype,a,(function(){return this})),t.AsyncIterator=X,t.async=function(e,n,i,r,c){void 0===c&&(c=Promise);var a=new X(u(e,n,i,r),c);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(y),l(y,o,"Generator"),l(y,r,(function(){return this})),l(y,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var i=e.pop();if(i in t)return n.value=i,n.done=!1,n}return n.done=!0,n}},t.values=v,W.prototype={constructor:W,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(V),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(n,i){return a.type="throw",a.arg=t,e.next=n,i&&(e.method="next",e.arg=void 0),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var c=this.tryEntries[r],a=c.completion;if("root"===c.tryLoc)return i("end");if(c.tryLoc<=this.prev){var o=n.call(c,"catchLoc"),l=n.call(c,"finallyLoc");if(o&&l){if(this.prev<c.catchLoc)return i(c.catchLoc,!0);if(this.prev<c.finallyLoc)return i(c.finallyLoc)}else if(o){if(this.prev<c.catchLoc)return i(c.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return i(c.finallyLoc)}}}},abrupt:function(t,e){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var c=r;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var a=c?c.completion:{};return a.type=t,a.arg=e,c?(this.method="next",this.next=c.finallyLoc,s):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),s},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),V(n),s}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;V(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:v(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},t}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function o(t,e,n,i,r,c,a){try{var o=t[c](a),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function l(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var c=t.apply(e,n);function a(t){o(c,i,r,a,l,"next",t)}function l(t){o(c,i,r,a,l,"throw",t)}a(void 0)}))}}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&d(t.prototype,e),n&&d(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function m(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p(t,e)}function b(t){return b=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}function p(t,e){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},p(t,e)}function Z(){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(t){return!1}}function I(t,e,n){return I=Z()?Reflect.construct.bind():function(t,e,n){var i=[null];i.push.apply(i,e);var r=new(Function.bind.apply(t,i));return n&&p(r,n.prototype),r},I.apply(null,arguments)}function y(t){var e="function"==typeof Map?new Map:void 0;return y=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return I(t,arguments,b(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),p(i,t)},y(t)}function g(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function X(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return g(t)}function G(t){var e=Z();return function(){var n,i=b(t);if(e){var r=b(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return X(this,n)}}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var i,r,c=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(i=n.next()).done)&&(c.push(i.value),!e||c.length!==e);a=!0);}catch(t){o=!0,r=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw r}}return c}(t,e)||W(t,e)||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(t){return function(t){if(Array.isArray(t))return v(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||W(t)||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(t,e){if(t){if("string"==typeof t)return v(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(t,e):void 0}}function v(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function C(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=W(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}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,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,c=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var S=function(t){return t&&t.Math==Math&&t},Y=S("object"==("undefined"==typeof globalThis?"undefined":a(globalThis))&&globalThis)||S("object"==("undefined"==typeof window?"undefined":a(window))&&window)||S("object"==("undefined"==typeof self?"undefined":a(self))&&self)||S("object"==a(t)&&t)||function(){return this}()||Function("return this")(),R={},K=function(t){try{return!!t()}catch(t){return!0}},N=!K((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),L=!K((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),J=L,x=Function.prototype.call,H=J?x.bind(x):function(){return x.apply(x,arguments)},k={},U={}.propertyIsEnumerable,T=Object.getOwnPropertyDescriptor,w=T&&!U.call({1:2},1);k.f=w?function(t){var e=T(this,t);return!!e&&e.enumerable}:U;var F,A,B=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},z=L,j=Function.prototype,M=j.bind,Q=j.call,P=z&&M.bind(Q,Q),E=z?function(t){return t&&P(t)}:function(t){return t&&function(){return Q.apply(t,arguments)}},D=E,O=D({}.toString),_=D("".slice),q=function(t){return _(O(t),8,-1)},$=E,tt=K,et=q,nt=Y.Object,it=$("".split),rt=tt((function(){return!nt("z").propertyIsEnumerable(0)}))?function(t){return"String"==et(t)?it(t,""):nt(t)}:nt,ct=Y.TypeError,at=function(t){if(null==t)throw ct("Can't call method on "+t);return t},ot=rt,lt=at,ut=function(t){return ot(lt(t))},dt=function(t){return"function"==typeof t},st=dt,mt=function(t){return"object"==a(t)?null!==t:st(t)},ht=Y,bt=dt,pt=function(t){return bt(t)?t:void 0},Zt=function(t,e){return arguments.length<2?pt(ht[t]):ht[t]&&ht[t][e]},It=E({}.isPrototypeOf),yt=Zt("navigator","userAgent")||"",gt=Y,Xt=yt,Gt=gt.process,ft=gt.Deno,Vt=Gt&&Gt.versions||ft&&ft.version,Wt=Vt&&Vt.v8;Wt&&(A=(F=Wt.split("."))[0]>0&&F[0]<4?1:+(F[0]+F[1])),!A&&Xt&&(!(F=Xt.match(/Edge\/(\d+)/))||F[1]>=74)&&(F=Xt.match(/Chrome\/(\d+)/))&&(A=+F[1]);var vt=A,Ct=vt,St=K,Yt=!!Object.getOwnPropertySymbols&&!St((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&Ct&&Ct<41})),Rt=Yt&&!Symbol.sham&&"symbol"==a(Symbol.iterator),Kt=Zt,Nt=dt,Lt=It,Jt=Rt,xt=Y.Object,Ht=Jt?function(t){return"symbol"==a(t)}:function(t){var e=Kt("Symbol");return Nt(e)&&Lt(e.prototype,xt(t))},kt=Y.String,Ut=function(t){try{return kt(t)}catch(t){return"Object"}},Tt=dt,wt=Ut,Ft=Y.TypeError,At=function(t){if(Tt(t))return t;throw Ft(wt(t)+" is not a function")},Bt=At,zt=function(t,e){var n=t[e];return null==n?void 0:Bt(n)},jt=H,Mt=dt,Qt=mt,Pt=Y.TypeError,Et=function(t,e){var n,i;if("string"===e&&Mt(n=t.toString)&&!Qt(i=jt(n,t)))return i;if(Mt(n=t.valueOf)&&!Qt(i=jt(n,t)))return i;if("string"!==e&&Mt(n=t.toString)&&!Qt(i=jt(n,t)))return i;throw Pt("Can't convert object to primitive value")},Dt={exports:{}},Ot=Y,_t=Object.defineProperty,qt=function(t,e){try{_t(Ot,t,{value:e,configurable:!0,writable:!0})}catch(n){Ot[t]=e}return e},$t=qt,te=Y["__core-js_shared__"]||$t("__core-js_shared__",{}),ee=te;(Dt.exports=function(t,e){return ee[t]||(ee[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.22.7",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.7/LICENSE",source:"https://github.com/zloirock/core-js"});var ne=at,ie=Y.Object,re=function(t){return ie(ne(t))},ce=re,ae=E({}.hasOwnProperty),oe=Object.hasOwn||function(t,e){return ae(ce(t),e)},le=E,ue=0,de=Math.random(),se=le(1..toString),me=function(t){return"Symbol("+(void 0===t?"":t)+")_"+se(++ue+de,36)},he=Y,be=Dt.exports,pe=oe,Ze=me,Ie=Yt,ye=Rt,ge=be("wks"),Xe=he.Symbol,Ge=Xe&&Xe.for,fe=ye?Xe:Xe&&Xe.withoutSetter||Ze,Ve=function(t){if(!pe(ge,t)||!Ie&&"string"!=typeof ge[t]){var e="Symbol."+t;Ie&&pe(Xe,t)?ge[t]=Xe[t]:ge[t]=ye&&Ge?Ge(e):fe(e)}return ge[t]},We=H,ve=mt,Ce=Ht,Se=zt,Ye=Et,Re=Ve,Ke=Y.TypeError,Ne=Re("toPrimitive"),Le=function(t,e){if(!ve(t)||Ce(t))return t;var n,i=Se(t,Ne);if(i){if(void 0===e&&(e="default"),n=We(i,t,e),!ve(n)||Ce(n))return n;throw Ke("Can't convert object to primitive value")}return void 0===e&&(e="number"),Ye(t,e)},Je=Le,xe=Ht,He=function(t){var e=Je(t,"string");return xe(e)?e:e+""},ke=mt,Ue=Y.document,Te=ke(Ue)&&ke(Ue.createElement),we=function(t){return Te?Ue.createElement(t):{}},Fe=we,Ae=!N&&!K((function(){return 7!=Object.defineProperty(Fe("div"),"a",{get:function(){return 7}}).a})),Be=N,ze=H,je=k,Me=B,Qe=ut,Pe=He,Ee=oe,De=Ae,Oe=Object.getOwnPropertyDescriptor;R.f=Be?Oe:function(t,e){if(t=Qe(t),e=Pe(e),De)try{return Oe(t,e)}catch(t){}if(Ee(t,e))return Me(!ze(je.f,t,e),t[e])};var _e={},qe=N&&K((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),$e=Y,tn=mt,en=$e.String,nn=$e.TypeError,rn=function(t){if(tn(t))return t;throw nn(en(t)+" is not an object")},cn=N,an=Ae,on=qe,ln=rn,un=He,dn=Y.TypeError,sn=Object.defineProperty,mn=Object.getOwnPropertyDescriptor;_e.f=cn?on?function(t,e,n){if(ln(t),e=un(e),ln(n),"function"==typeof t&&"prototype"===e&&"value"in n&&"writable"in n&&!n.writable){var i=mn(t,e);i&&i.writable&&(t[e]=n.value,n={configurable:"configurable"in n?n.configurable:i.configurable,enumerable:"enumerable"in n?n.enumerable:i.enumerable,writable:!1})}return sn(t,e,n)}:sn:function(t,e,n){if(ln(t),e=un(e),ln(n),an)try{return sn(t,e,n)}catch(t){}if("get"in n||"set"in n)throw dn("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var hn=_e,bn=B,pn=N?function(t,e,n){return hn.f(t,e,bn(1,n))}:function(t,e,n){return t[e]=n,t},Zn={exports:{}},In=N,yn=oe,gn=Function.prototype,Xn=In&&Object.getOwnPropertyDescriptor,Gn=yn(gn,"name"),fn={EXISTS:Gn,PROPER:Gn&&"something"===function(){}.name,CONFIGURABLE:Gn&&(!In||In&&Xn(gn,"name").configurable)},Vn=dt,Wn=te,vn=E(Function.toString);Vn(Wn.inspectSource)||(Wn.inspectSource=function(t){return vn(t)});var Cn,Sn,Yn,Rn=Wn.inspectSource,Kn=dt,Nn=Rn,Ln=Y.WeakMap,Jn=Kn(Ln)&&/native code/.test(Nn(Ln)),xn=Dt.exports,Hn=me,kn=xn("keys"),Un=function(t){return kn[t]||(kn[t]=Hn(t))},Tn={},wn=Jn,Fn=Y,An=E,Bn=mt,zn=pn,jn=oe,Mn=te,Qn=Un,Pn=Tn,En=Fn.TypeError,Dn=Fn.WeakMap;if(wn||Mn.state){var On=Mn.state||(Mn.state=new Dn),_n=An(On.get),qn=An(On.has),$n=An(On.set);Cn=function(t,e){if(qn(On,t))throw new En("Object already initialized");return e.facade=t,$n(On,t,e),e},Sn=function(t){return _n(On,t)||{}},Yn=function(t){return qn(On,t)}}else{var ti=Qn("state");Pn[ti]=!0,Cn=function(t,e){if(jn(t,ti))throw new En("Object already initialized");return e.facade=t,zn(t,ti,e),e},Sn=function(t){return jn(t,ti)?t[ti]:{}},Yn=function(t){return jn(t,ti)}}var ei={set:Cn,get:Sn,has:Yn,enforce:function(t){return Yn(t)?Sn(t):Cn(t,{})},getterFor:function(t){return function(e){var n;if(!Bn(e)||(n=Sn(e)).type!==t)throw En("Incompatible receiver, "+t+" required");return n}}},ni=K,ii=dt,ri=oe,ci=N,ai=fn.CONFIGURABLE,oi=Rn,li=ei.enforce,ui=ei.get,di=Object.defineProperty,si=ci&&!ni((function(){return 8!==di((function(){}),"length",{value:8}).length})),mi=String(String).split("String"),hi=Zn.exports=function(t,e,n){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!ri(t,"name")||ai&&t.name!==e)&&di(t,"name",{value:e,configurable:!0}),si&&n&&ri(n,"arity")&&t.length!==n.arity&&di(t,"length",{value:n.arity});try{n&&ri(n,"constructor")&&n.constructor?ci&&di(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var i=li(t);return ri(i,"source")||(i.source=mi.join("string"==typeof e?e:"")),t};Function.prototype.toString=hi((function(){return ii(this)&&ui(this).source||oi(this)}),"toString");var bi=dt,pi=pn,Zi=Zn.exports,Ii=qt,yi=function(t,e,n,i){i||(i={});var r=i.enumerable,c=void 0!==i.name?i.name:e;return bi(n)&&Zi(n,c,i),i.global?r?t[e]=n:Ii(e,n):(i.unsafe?t[e]&&(r=!0):delete t[e],r?t[e]=n:pi(t,e,n)),t},gi={},Xi=Math.ceil,Gi=Math.floor,fi=Math.trunc||function(t){var e=+t;return(e>0?Gi:Xi)(e)},Vi=fi,Wi=function(t){var e=+t;return e!=e||0===e?0:Vi(e)},vi=Wi,Ci=Math.max,Si=Math.min,Yi=function(t,e){var n=vi(t);return n<0?Ci(n+e,0):Si(n,e)},Ri=Wi,Ki=Math.min,Ni=function(t){return t>0?Ki(Ri(t),9007199254740991):0},Li=Ni,Ji=function(t){return Li(t.length)},xi=ut,Hi=Yi,ki=Ji,Ui=function(t){return function(e,n,i){var r,c=xi(e),a=ki(c),o=Hi(i,a);if(t&&n!=n){for(;a>o;)if((r=c[o++])!=r)return!0}else for(;a>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},Ti={includes:Ui(!0),indexOf:Ui(!1)},wi=oe,Fi=ut,Ai=Ti.indexOf,Bi=Tn,zi=E([].push),ji=function(t,e){var n,i=Fi(t),r=0,c=[];for(n in i)!wi(Bi,n)&&wi(i,n)&&zi(c,n);for(;e.length>r;)wi(i,n=e[r++])&&(~Ai(c,n)||zi(c,n));return c},Mi=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Qi=ji,Pi=Mi.concat("length","prototype");gi.f=Object.getOwnPropertyNames||function(t){return Qi(t,Pi)};var Ei={};Ei.f=Object.getOwnPropertySymbols;var Di=Zt,Oi=gi,_i=Ei,qi=rn,$i=E([].concat),tr=Di("Reflect","ownKeys")||function(t){var e=Oi.f(qi(t)),n=_i.f;return n?$i(e,n(t)):e},er=oe,nr=tr,ir=R,rr=_e,cr=function(t,e,n){for(var i=nr(e),r=rr.f,c=ir.f,a=0;a<i.length;a++){var o=i[a];er(t,o)||n&&er(n,o)||r(t,o,c(e,o))}},ar=K,or=dt,lr=/#|\.prototype\./,ur=function(t,e){var n=sr[dr(t)];return n==hr||n!=mr&&(or(e)?ar(e):!!e)},dr=ur.normalize=function(t){return String(t).replace(lr,".").toLowerCase()},sr=ur.data={},mr=ur.NATIVE="N",hr=ur.POLYFILL="P",br=ur,pr=Y,Zr=R.f,Ir=pn,yr=yi,gr=qt,Xr=cr,Gr=br,fr=function(t,e){var n,i,r,c,o,l=t.target,u=t.global,d=t.stat;if(n=u?pr:d?pr[l]||gr(l,{}):(pr[l]||{}).prototype)for(i in e){if(c=e[i],r=t.dontCallGetSet?(o=Zr(n,i))&&o.value:n[i],!Gr(u?i:l+(d?".":"#")+i,t.forced)&&void 0!==r){if(a(c)==a(r))continue;Xr(c,r)}(t.sham||r&&r.sham)&&Ir(c,"sham",!0),yr(n,i,c,t)}},Vr={};Vr[Ve("toStringTag")]="z";var Wr="[object z]"===String(Vr),vr=Y,Cr=Wr,Sr=dt,Yr=q,Rr=Ve("toStringTag"),Kr=vr.Object,Nr="Arguments"==Yr(function(){return arguments}()),Lr=Cr?Yr:function(t){var e,n,i;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Kr(t),Rr))?n:Nr?Yr(e):"Object"==(i=Yr(e))&&Sr(e.callee)?"Arguments":i},Jr=Lr,xr=Y.String,Hr=function(t){if("Symbol"===Jr(t))throw TypeError("Cannot convert a Symbol value to a string");return xr(t)},kr={},Ur=ji,Tr=Mi,wr=Object.keys||function(t){return Ur(t,Tr)},Fr=N,Ar=qe,Br=_e,zr=rn,jr=ut,Mr=wr;kr.f=Fr&&!Ar?Object.defineProperties:function(t,e){zr(t);for(var n,i=jr(e),r=Mr(e),c=r.length,a=0;c>a;)Br.f(t,n=r[a++],i[n]);return t};var Qr,Pr=Zt("document","documentElement"),Er=rn,Dr=kr,Or=Mi,_r=Tn,qr=Pr,$r=we,tc=Un("IE_PROTO"),ec=function(){},nc=function(t){return"<script>"+t+"<\/script>"},ic=function(t){t.write(nc("")),t.close();var e=t.parentWindow.Object;return t=null,e},rc=function(){try{Qr=new ActiveXObject("htmlfile")}catch(t){}var t,e;rc="undefined"!=typeof document?document.domain&&Qr?ic(Qr):((e=$r("iframe")).style.display="none",qr.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(nc("document.F=Object")),t.close(),t.F):ic(Qr);for(var n=Or.length;n--;)delete rc.prototype[Or[n]];return rc()};_r[tc]=!0;var cc=Object.create||function(t,e){var n;return null!==t?(ec.prototype=Er(t),n=new ec,ec.prototype=null,n[tc]=t):n=rc(),void 0===e?n:Dr.f(n,e)},ac={},oc=He,lc=_e,uc=B,dc=function(t,e,n){var i=oc(e);i in t?lc.f(t,i,uc(0,n)):t[i]=n},sc=Yi,mc=Ji,hc=dc,bc=Y.Array,pc=Math.max,Zc=function(t,e,n){for(var i=mc(t),r=sc(e,i),c=sc(void 0===n?i:n,i),a=bc(pc(c-r,0)),o=0;r<c;r++,o++)hc(a,o,t[r]);return a.length=o,a},Ic=q,yc=ut,gc=gi.f,Xc=Zc,Gc="object"==("undefined"==typeof window?"undefined":a(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];ac.f=function(t){return Gc&&"Window"==Ic(t)?function(t){try{return gc(t)}catch(t){return Xc(Gc)}}(t):gc(yc(t))};var fc={},Vc=Ve;fc.f=Vc;var Wc=Y,vc=oe,Cc=fc,Sc=_e.f,Yc=function(t){var e=Wc.Symbol||(Wc.Symbol={});vc(e,t)||Sc(e,t,{value:Cc.f(t)})},Rc=H,Kc=Zt,Nc=Ve,Lc=yi,Jc=function(){var t=Kc("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,i=Nc("toPrimitive");e&&!e[i]&&Lc(e,i,(function(t){return Rc(n,this)}),{arity:1})},xc=_e.f,Hc=oe,kc=Ve("toStringTag"),Uc=function(t,e,n){t&&!n&&(t=t.prototype),t&&!Hc(t,kc)&&xc(t,kc,{configurable:!0,value:e})},Tc=At,wc=L,Fc=E(E.bind),Ac=function(t,e){return Tc(t),void 0===e?t:wc?Fc(t,e):function(){return t.apply(e,arguments)}},Bc=q,zc=Array.isArray||function(t){return"Array"==Bc(t)},jc=E,Mc=K,Qc=dt,Pc=Lr,Ec=Rn,Dc=function(){},Oc=[],_c=Zt("Reflect","construct"),qc=/^\s*(?:class|function)\b/,$c=jc(qc.exec),ta=!qc.exec(Dc),ea=function(t){if(!Qc(t))return!1;try{return _c(Dc,Oc,t),!0}catch(t){return!1}},na=function(t){if(!Qc(t))return!1;switch(Pc(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ta||!!$c(qc,Ec(t))}catch(t){return!0}};na.sham=!0;var ia=!_c||Mc((function(){var t;return ea(ea.call)||!ea(Object)||!ea((function(){t=!0}))||t}))?na:ea,ra=Y,ca=zc,aa=ia,oa=mt,la=Ve("species"),ua=ra.Array,da=function(t){var e;return ca(t)&&(e=t.constructor,(aa(e)&&(e===ua||ca(e.prototype))||oa(e)&&null===(e=e[la]))&&(e=void 0)),void 0===e?ua:e},sa=function(t,e){return new(da(t))(0===e?0:e)},ma=Ac,ha=rt,ba=re,pa=Ji,Za=sa,Ia=E([].push),ya=function(t){var e=1==t,n=2==t,i=3==t,r=4==t,c=6==t,a=7==t,o=5==t||c;return function(l,u,d,s){for(var m,h,b=ba(l),p=ha(b),Z=ma(u,d),I=pa(p),y=0,g=s||Za,X=e?g(l,I):n||a?g(l,0):void 0;I>y;y++)if((o||y in p)&&(h=Z(m=p[y],y,b),t))if(e)X[y]=h;else if(h)switch(t){case 3:return!0;case 5:return m;case 6:return y;case 2:Ia(X,m)}else switch(t){case 4:return!1;case 7:Ia(X,m)}return c?-1:i||r?r:X}},ga={forEach:ya(0),map:ya(1),filter:ya(2),some:ya(3),every:ya(4),find:ya(5),findIndex:ya(6),filterReject:ya(7)},Xa=fr,Ga=Y,fa=H,Va=E,Wa=N,va=Yt,Ca=K,Sa=oe,Ya=It,Ra=rn,Ka=ut,Na=He,La=Hr,Ja=B,xa=cc,Ha=wr,ka=gi,Ua=ac,Ta=Ei,wa=R,Fa=_e,Aa=kr,Ba=k,za=yi,ja=Dt.exports,Ma=Tn,Qa=me,Pa=Ve,Ea=fc,Da=Yc,Oa=Jc,_a=Uc,qa=ei,$a=ga.forEach,to=Un("hidden"),eo=qa.set,no=qa.getterFor("Symbol"),io=Object.prototype,ro=Ga.Symbol,co=ro&&ro.prototype,ao=Ga.TypeError,oo=Ga.QObject,lo=wa.f,uo=Fa.f,so=Ua.f,mo=Ba.f,ho=Va([].push),bo=ja("symbols"),po=ja("op-symbols"),Zo=ja("wks"),Io=!oo||!oo.prototype||!oo.prototype.findChild,yo=Wa&&Ca((function(){return 7!=xa(uo({},"a",{get:function(){return uo(this,"a",{value:7}).a}})).a}))?function(t,e,n){var i=lo(io,e);i&&delete io[e],uo(t,e,n),i&&t!==io&&uo(io,e,i)}:uo,go=function(t,e){var n=bo[t]=xa(co);return eo(n,{type:"Symbol",tag:t,description:e}),Wa||(n.description=e),n},Xo=function(t,e,n){t===io&&Xo(po,e,n),Ra(t);var i=Na(e);return Ra(n),Sa(bo,i)?(n.enumerable?(Sa(t,to)&&t[to][i]&&(t[to][i]=!1),n=xa(n,{enumerable:Ja(0,!1)})):(Sa(t,to)||uo(t,to,Ja(1,{})),t[to][i]=!0),yo(t,i,n)):uo(t,i,n)},Go=function(t,e){Ra(t);var n=Ka(e),i=Ha(n).concat(vo(n));return $a(i,(function(e){Wa&&!fa(fo,n,e)||Xo(t,e,n[e])})),t},fo=function(t){var e=Na(t),n=fa(mo,this,e);return!(this===io&&Sa(bo,e)&&!Sa(po,e))&&(!(n||!Sa(this,e)||!Sa(bo,e)||Sa(this,to)&&this[to][e])||n)},Vo=function(t,e){var n=Ka(t),i=Na(e);if(n!==io||!Sa(bo,i)||Sa(po,i)){var r=lo(n,i);return!r||!Sa(bo,i)||Sa(n,to)&&n[to][i]||(r.enumerable=!0),r}},Wo=function(t){var e=so(Ka(t)),n=[];return $a(e,(function(t){Sa(bo,t)||Sa(Ma,t)||ho(n,t)})),n},vo=function(t){var e=t===io,n=so(e?po:Ka(t)),i=[];return $a(n,(function(t){!Sa(bo,t)||e&&!Sa(io,t)||ho(i,bo[t])})),i};va||(za(co=(ro=function(){if(Ya(co,this))throw ao("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?La(arguments[0]):void 0,e=Qa(t),n=function t(n){this===io&&fa(t,po,n),Sa(this,to)&&Sa(this[to],e)&&(this[to][e]=!1),yo(this,e,Ja(1,n))};return Wa&&Io&&yo(io,e,{configurable:!0,set:n}),go(e,t)}).prototype,"toString",(function(){return no(this).tag})),za(ro,"withoutSetter",(function(t){return go(Qa(t),t)})),Ba.f=fo,Fa.f=Xo,Aa.f=Go,wa.f=Vo,ka.f=Ua.f=Wo,Ta.f=vo,Ea.f=function(t){return go(Pa(t),t)},Wa&&(uo(co,"description",{configurable:!0,get:function(){return no(this).description}}),za(io,"propertyIsEnumerable",fo,{unsafe:!0}))),Xa({global:!0,constructor:!0,wrap:!0,forced:!va,sham:!va},{Symbol:ro}),$a(Ha(Zo),(function(t){Da(t)})),Xa({target:"Symbol",stat:!0,forced:!va},{useSetter:function(){Io=!0},useSimple:function(){Io=!1}}),Xa({target:"Object",stat:!0,forced:!va,sham:!Wa},{create:function(t,e){return void 0===e?xa(t):Go(xa(t),e)},defineProperty:Xo,defineProperties:Go,getOwnPropertyDescriptor:Vo}),Xa({target:"Object",stat:!0,forced:!va},{getOwnPropertyNames:Wo}),Oa(),_a(ro,"Symbol"),Ma[to]=!0;var Co=Yt&&!!Symbol.for&&!!Symbol.keyFor,So=fr,Yo=Zt,Ro=oe,Ko=Hr,No=Dt.exports,Lo=Co,Jo=No("string-to-symbol-registry"),xo=No("symbol-to-string-registry");So({target:"Symbol",stat:!0,forced:!Lo},{for:function(t){var e=Ko(t);if(Ro(Jo,e))return Jo[e];var n=Yo("Symbol")(e);return Jo[e]=n,xo[n]=e,n}});var Ho=fr,ko=oe,Uo=Ht,To=Ut,wo=Co,Fo=(0,Dt.exports)("symbol-to-string-registry");Ho({target:"Symbol",stat:!0,forced:!wo},{keyFor:function(t){if(!Uo(t))throw TypeError(To(t)+" is not a symbol");if(ko(Fo,t))return Fo[t]}});var Ao=L,Bo=Function.prototype,zo=Bo.apply,jo=Bo.call,Mo="object"==("undefined"==typeof Reflect?"undefined":a(Reflect))&&Reflect.apply||(Ao?jo.bind(zo):function(){return jo.apply(zo,arguments)}),Qo=E([].slice),Po=fr,Eo=Zt,Do=Mo,Oo=H,_o=E,qo=K,$o=zc,tl=dt,el=mt,nl=Ht,il=Qo,rl=Yt,cl=Eo("JSON","stringify"),al=_o(/./.exec),ol=_o("".charAt),ll=_o("".charCodeAt),ul=_o("".replace),dl=_o(1..toString),sl=/[\uD800-\uDFFF]/g,ml=/^[\uD800-\uDBFF]$/,hl=/^[\uDC00-\uDFFF]$/,bl=!rl||qo((function(){var t=Eo("Symbol")();return"[null]"!=cl([t])||"{}"!=cl({a:t})||"{}"!=cl(Object(t))})),pl=qo((function(){return'"\\udf06\\ud834"'!==cl("\udf06\ud834")||'"\\udead"'!==cl("\udead")})),Zl=function(t,e){var n=il(arguments),i=e;if((el(e)||void 0!==t)&&!nl(t))return $o(e)||(e=function(t,e){if(tl(i)&&(e=Oo(i,this,t,e)),!nl(e))return e}),n[1]=e,Do(cl,null,n)},Il=function(t,e,n){var i=ol(n,e-1),r=ol(n,e+1);return al(ml,t)&&!al(hl,r)||al(hl,t)&&!al(ml,i)?"\\u"+dl(ll(t,0),16):t};cl&&Po({target:"JSON",stat:!0,arity:3,forced:bl||pl},{stringify:function(t,e,n){var i=il(arguments),r=Do(bl?Zl:cl,null,i);return pl&&"string"==typeof r?ul(r,sl,Il):r}});var yl=Ei,gl=re;fr({target:"Object",stat:!0,forced:!Yt||K((function(){yl.f(1)}))},{getOwnPropertySymbols:function(t){var e=yl.f;return e?e(gl(t)):[]}});var Xl=fr,Gl=N,fl=Y,Vl=E,Wl=oe,vl=dt,Cl=It,Sl=Hr,Yl=_e.f,Rl=cr,Kl=fl.Symbol,Nl=Kl&&Kl.prototype;if(Gl&&vl(Kl)&&(!("description"in Nl)||void 0!==Kl().description)){var Ll={},Jl=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Sl(arguments[0]),e=Cl(Nl,this)?new Kl(t):void 0===t?Kl():Kl(t);return""===t&&(Ll[e]=!0),e};Rl(Jl,Kl),Jl.prototype=Nl,Nl.constructor=Jl;var xl="Symbol(test)"==String(Kl("test")),Hl=Vl(Nl.toString),kl=Vl(Nl.valueOf),Ul=/^Symbol\((.*)\)[^)]+$/,Tl=Vl("".replace),wl=Vl("".slice);Yl(Nl,"description",{configurable:!0,get:function(){var t=kl(this),e=Hl(t);if(Wl(Ll,t))return"";var n=xl?wl(e,7,-1):Tl(e,Ul,"$1");return""===n?void 0:n}}),Xl({global:!0,constructor:!0,forced:!0},{Symbol:Jl})}Yc("asyncIterator"),Yc("hasInstance"),Yc("isConcatSpreadable"),Yc("iterator"),Yc("match"),Yc("matchAll"),Yc("replace"),Yc("search"),Yc("species"),Yc("split");var Fl=Jc;Yc("toPrimitive"),Fl();var Al=Zt,Bl=Uc;Yc("toStringTag"),Bl(Al("Symbol"),"Symbol"),Yc("unscopables");var zl=K,jl=vt,Ml=Ve("species"),Ql=function(t){return jl>=51||!zl((function(){var e=[];return(e.constructor={})[Ml]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Pl=fr,El=Y,Dl=K,Ol=zc,_l=mt,ql=re,$l=Ji,tu=dc,eu=sa,nu=Ql,iu=vt,ru=Ve("isConcatSpreadable"),cu=El.TypeError,au=iu>=51||!Dl((function(){var t=[];return t[ru]=!1,t.concat()[0]!==t})),ou=nu("concat"),lu=function(t){if(!_l(t))return!1;var e=t[ru];return void 0!==e?!!e:Ol(t)};Pl({target:"Array",proto:!0,arity:1,forced:!au||!ou},{concat:function(t){var e,n,i,r,c,a=ql(this),o=eu(a,0),l=0;for(e=-1,i=arguments.length;e<i;e++)if(lu(c=-1===e?a:arguments[e])){if(l+(r=$l(c))>9007199254740991)throw cu("Maximum allowed index exceeded");for(n=0;n<r;n++,l++)n in c&&tu(o,l,c[n])}else{if(l>=9007199254740991)throw cu("Maximum allowed index exceeded");tu(o,l++,c)}return o.length=l,o}});var uu=re,du=Yi,su=Ji,mu=Math.min,hu=[].copyWithin||function(t,e){var n=uu(this),i=su(n),r=du(t,i),c=du(e,i),a=arguments.length>2?arguments[2]:void 0,o=mu((void 0===a?i:du(a,i))-c,i-r),l=1;for(c<r&&r<c+o&&(l=-1,c+=o-1,r+=o-1);o-- >0;)c in n?n[r]=n[c]:delete n[r],r+=l,c+=l;return n},bu=Ve,pu=cc,Zu=_e.f,Iu=bu("unscopables"),yu=Array.prototype;null==yu[Iu]&&Zu(yu,Iu,{configurable:!0,value:pu(null)});var gu=function(t){yu[Iu][t]=!0},Xu=gu;fr({target:"Array",proto:!0},{copyWithin:hu}),Xu("copyWithin");var Gu=re,fu=Yi,Vu=Ji,Wu=function(t){for(var e=Gu(this),n=Vu(e),i=arguments.length,r=fu(i>1?arguments[1]:void 0,n),c=i>2?arguments[2]:void 0,a=void 0===c?n:fu(c,n);a>r;)e[r++]=t;return e},vu=gu;fr({target:"Array",proto:!0},{fill:Wu}),vu("fill");var Cu=ga.filter;fr({target:"Array",proto:!0,forced:!Ql("filter")},{filter:function(t){return Cu(this,t,arguments.length>1?arguments[1]:void 0)}});var Su=fr,Yu=ga.find,Ru=gu,Ku=!0;"find"in[]&&Array(1).find((function(){Ku=!1})),Su({target:"Array",proto:!0,forced:Ku},{find:function(t){return Yu(this,t,arguments.length>1?arguments[1]:void 0)}}),Ru("find");var Nu=fr,Lu=ga.findIndex,Ju=gu,xu=!0;"findIndex"in[]&&Array(1).findIndex((function(){xu=!1})),Nu({target:"Array",proto:!0,forced:xu},{findIndex:function(t){return Lu(this,t,arguments.length>1?arguments[1]:void 0)}}),Ju("findIndex");var Hu=zc,ku=Ji,Uu=Ac,Tu=Y.TypeError,wu=function t(e,n,i,r,c,a,o,l){for(var u,d=c,s=0,m=!!o&&Uu(o,l);s<r;){if(s in i){if(u=m?m(i[s],s,n):i[s],a>0&&Hu(u))d=t(e,n,u,ku(u),d,a-1)-1;else{if(d>=9007199254740991)throw Tu("Exceed the acceptable array length");e[d]=u}d++}s++}return d},Fu=wu,Au=re,Bu=Ji,zu=Wi,ju=sa;fr({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=Au(this),n=Bu(e),i=ju(e,0);return i.length=Fu(i,e,e,n,0,void 0===t?1:zu(t)),i}});var Mu=wu,Qu=At,Pu=re,Eu=Ji,Du=sa;fr({target:"Array",proto:!0},{flatMap:function(t){var e,n=Pu(this),i=Eu(n);return Qu(t),(e=Du(n,0)).length=Mu(e,n,n,i,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var Ou=H,_u=rn,qu=zt,$u=function(t,e,n){var i,r;_u(t);try{if(!(i=qu(t,"return"))){if("throw"===e)throw n;return n}i=Ou(i,t)}catch(t){r=!0,i=t}if("throw"===e)throw n;if(r)throw i;return _u(i),n},td=rn,ed=$u,nd={},id=nd,rd=Ve("iterator"),cd=Array.prototype,ad=function(t){return void 0!==t&&(id.Array===t||cd[rd]===t)},od=Lr,ld=zt,ud=nd,dd=Ve("iterator"),sd=function(t){if(null!=t)return ld(t,dd)||ld(t,"@@iterator")||ud[od(t)]},md=H,hd=At,bd=rn,pd=Ut,Zd=sd,Id=Y.TypeError,yd=function(t,e){var n=arguments.length<2?Zd(t):e;if(hd(n))return bd(md(n,t));throw Id(pd(t)+" is not iterable")},gd=Ac,Xd=H,Gd=re,fd=function(t,e,n,i){try{return i?e(td(n)[0],n[1]):e(n)}catch(e){ed(t,"throw",e)}},Vd=ad,Wd=ia,vd=Ji,Cd=dc,Sd=yd,Yd=sd,Rd=Y.Array,Kd=function(t){var e=Gd(t),n=Wd(this),i=arguments.length,r=i>1?arguments[1]:void 0,c=void 0!==r;c&&(r=gd(r,i>2?arguments[2]:void 0));var a,o,l,u,d,s,m=Yd(e),h=0;if(!m||this==Rd&&Vd(m))for(a=vd(e),o=n?new this(a):Rd(a);a>h;h++)s=c?r(e[h],h):e[h],Cd(o,h,s);else for(d=(u=Sd(e,m)).next,o=n?new this:[];!(l=Xd(d,u)).done;h++)s=c?fd(u,r,[l.value,h],!0):l.value,Cd(o,h,s);return o.length=h,o},Nd=Ve("iterator"),Ld=!1;try{var Jd=0,xd={next:function(){return{done:!!Jd++}},return:function(){Ld=!0}};xd[Nd]=function(){return this},Array.from(xd,(function(){throw 2}))}catch(t){}var Hd=function(t,e){if(!e&&!Ld)return!1;var n=!1;try{var i={};i[Nd]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n},kd=Kd;fr({target:"Array",stat:!0,forced:!Hd((function(t){Array.from(t)}))},{from:kd});var Ud=Ti.includes,Td=gu;fr({target:"Array",proto:!0,forced:K((function(){return!Array(1).includes()}))},{includes:function(t){return Ud(this,t,arguments.length>1?arguments[1]:void 0)}}),Td("includes");var wd,Fd,Ad,Bd=!K((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),zd=Y,jd=oe,Md=dt,Qd=re,Pd=Bd,Ed=Un("IE_PROTO"),Dd=zd.Object,Od=Dd.prototype,_d=Pd?Dd.getPrototypeOf:function(t){var e=Qd(t);if(jd(e,Ed))return e[Ed];var n=e.constructor;return Md(n)&&e instanceof n?n.prototype:e instanceof Dd?Od:null},qd=K,$d=dt,ts=_d,es=yi,ns=Ve("iterator"),is=!1;[].keys&&("next"in(Ad=[].keys())?(Fd=ts(ts(Ad)))!==Object.prototype&&(wd=Fd):is=!0);var rs=null==wd||qd((function(){var t={};return wd[ns].call(t)!==t}));rs&&(wd={}),$d(wd[ns])||es(wd,ns,(function(){return this}));var cs={IteratorPrototype:wd,BUGGY_SAFARI_ITERATORS:is},as=cs.IteratorPrototype,os=cc,ls=B,us=Uc,ds=nd,ss=function(){return this},ms=function(t,e,n,i){var r=e+" Iterator";return t.prototype=os(as,{next:ls(+!i,n)}),us(t,r,!1),ds[r]=ss,t},hs=Y,bs=dt,ps=hs.String,Zs=hs.TypeError,Is=function(t){if("object"==a(t)||bs(t))return t;throw Zs("Can't set "+ps(t)+" as a prototype")},ys=E,gs=rn,Xs=Is,Gs=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=ys(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return gs(n),Xs(i),e?t(n,i):n.__proto__=i,n}}():void 0),fs=fr,Vs=H,Ws=dt,vs=ms,Cs=_d,Ss=Gs,Ys=Uc,Rs=pn,Ks=yi,Ns=nd,Ls=fn.PROPER,Js=fn.CONFIGURABLE,xs=cs.IteratorPrototype,Hs=cs.BUGGY_SAFARI_ITERATORS,ks=Ve("iterator"),Us=function(){return this},Ts=function(t,e,n,i,r,c,a){vs(n,e,i);var o,l,u,d=function(t){if(t===r&&p)return p;if(!Hs&&t in h)return h[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},s=e+" Iterator",m=!1,h=t.prototype,b=h[ks]||h["@@iterator"]||r&&h[r],p=!Hs&&b||d(r),Z="Array"==e&&h.entries||b;if(Z&&(o=Cs(Z.call(new t)))!==Object.prototype&&o.next&&(Cs(o)!==xs&&(Ss?Ss(o,xs):Ws(o[ks])||Ks(o,ks,Us)),Ys(o,s,!0)),Ls&&"values"==r&&b&&"values"!==b.name&&(Js?Rs(h,"name","values"):(m=!0,p=function(){return Vs(b,this)})),r)if(l={values:d("values"),keys:c?p:d("keys"),entries:d("entries")},a)for(u in l)(Hs||m||!(u in h))&&Ks(h,u,l[u]);else fs({target:e,proto:!0,forced:Hs||m},l);return h[ks]!==p&&Ks(h,ks,p,{name:r}),Ns[e]=p,l},ws=ut,Fs=gu,As=nd,Bs=ei,zs=_e.f,js=Ts,Ms=N,Qs=Bs.set,Ps=Bs.getterFor("Array Iterator"),Es=js(Array,"Array",(function(t,e){Qs(this,{type:"Array Iterator",target:ws(t),index:0,kind:e})}),(function(){var t=Ps(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:e[i],done:!1}:{value:[i,e[i]],done:!1}}),"values"),Ds=As.Arguments=As.Array;if(Fs("keys"),Fs("values"),Fs("entries"),Ms&&"values"!==Ds.name)try{zs(Ds,"name",{value:"values"})}catch(t){}var Os=K,_s=function(t,e){var n=[][t];return!!n&&Os((function(){n.call(null,e||function(){return 1},1)}))},qs=fr,$s=rt,tm=ut,em=_s,nm=E([].join),im=$s!=Object,rm=em("join",",");qs({target:"Array",proto:!0,forced:im||!rm},{join:function(t){return nm(tm(this),void 0===t?",":t)}});var cm=ga.map;fr({target:"Array",proto:!0,forced:!Ql("map")},{map:function(t){return cm(this,t,arguments.length>1?arguments[1]:void 0)}});var am=fr,om=K,lm=ia,um=dc,dm=Y.Array;am({target:"Array",stat:!0,forced:om((function(){function t(){}return!(dm.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(lm(this)?this:dm)(e);e>t;)um(n,t,arguments[t++]);return n.length=e,n}});var sm=fr,mm=Y,hm=zc,bm=ia,pm=mt,Zm=Yi,Im=Ji,ym=ut,gm=dc,Xm=Ve,Gm=Qo,fm=Ql("slice"),Vm=Xm("species"),Wm=mm.Array,vm=Math.max;sm({target:"Array",proto:!0,forced:!fm},{slice:function(t,e){var n,i,r,c=ym(this),a=Im(c),o=Zm(t,a),l=Zm(void 0===e?a:e,a);if(hm(c)&&(n=c.constructor,(bm(n)&&(n===Wm||hm(n.prototype))||pm(n)&&null===(n=n[Vm]))&&(n=void 0),n===Wm||void 0===n))return Gm(c,o,l);for(i=new(void 0===n?Wm:n)(vm(l-o,0)),r=0;o<l;o++,r++)o in c&&gm(i,r,c[o]);return i.length=r,i}});var Cm=Zc,Sm=Math.floor,Ym=function(t,e){for(var n,i,r=t.length,c=1;c<r;){for(i=c,n=t[c];i&&e(t[i-1],n)>0;)t[i]=t[--i];i!==c++&&(t[i]=n)}return t},Rm=function(t,e,n,i){for(var r=e.length,c=n.length,a=0,o=0;a<r||o<c;)t[a+o]=a<r&&o<c?i(e[a],n[o])<=0?e[a++]:n[o++]:a<r?e[a++]:n[o++];return t},Km=function t(e,n){var i=e.length,r=Sm(i/2);return i<8?Ym(e,n):Rm(e,t(Cm(e,0,r),n),t(Cm(e,r),n),n)},Nm=yt.match(/firefox\/(\d+)/i),Lm=!!Nm&&+Nm[1],Jm=/MSIE|Trident/.test(yt),xm=yt.match(/AppleWebKit\/(\d+)\./),Hm=!!xm&&+xm[1],km=fr,Um=E,Tm=At,wm=re,Fm=Ji,Am=Hr,Bm=K,zm=Km,jm=_s,Mm=Lm,Qm=Jm,Pm=vt,Em=Hm,Dm=[],Om=Um(Dm.sort),_m=Um(Dm.push),qm=Bm((function(){Dm.sort(void 0)})),$m=Bm((function(){Dm.sort(null)})),th=jm("sort"),eh=!Bm((function(){if(Pm)return Pm<70;if(!(Mm&&Mm>3)){if(Qm)return!0;if(Em)return Em<603;var t,e,n,i,r="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(i=0;i<47;i++)Dm.push({k:e+i,v:n})}for(Dm.sort((function(t,e){return e.v-t.v})),i=0;i<Dm.length;i++)e=Dm[i].k.charAt(0),r.charAt(r.length-1)!==e&&(r+=e);return"DGBEFHACIJK"!==r}}));km({target:"Array",proto:!0,forced:qm||!$m||!th||!eh},{sort:function(t){void 0!==t&&Tm(t);var e=wm(this);if(eh)return void 0===t?Om(e):Om(e,t);var n,i,r=[],c=Fm(e);for(i=0;i<c;i++)i in e&&_m(r,e[i]);for(zm(r,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:Am(e)>Am(n)?1:-1}}(t)),n=r.length,i=0;i<n;)e[i]=r[i++];for(;i<c;)delete e[i++];return e}});var nh=Zt,ih=_e,rh=N,ch=Ve("species"),ah=function(t){var e=nh(t),n=ih.f;rh&&e&&!e[ch]&&n(e,ch,{configurable:!0,get:function(){return this}})};ah("Array");var oh=fr,lh=Y,uh=Yi,dh=Wi,sh=Ji,mh=re,hh=sa,bh=dc,ph=Ql("splice"),Zh=lh.TypeError,Ih=Math.max,yh=Math.min;oh({target:"Array",proto:!0,forced:!ph},{splice:function(t,e){var n,i,r,c,a,o,l=mh(this),u=sh(l),d=uh(t,u),s=arguments.length;if(0===s?n=i=0:1===s?(n=0,i=u-d):(n=s-2,i=yh(Ih(dh(e),0),u-d)),u+n-i>9007199254740991)throw Zh("Maximum allowed length exceeded");for(r=hh(l,i),c=0;c<i;c++)(a=d+c)in l&&bh(r,c,l[a]);if(r.length=i,n<i){for(c=d;c<u-i;c++)o=c+n,(a=c+i)in l?l[o]=l[a]:delete l[o];for(c=u;c>u-i+n;c--)delete l[c-1]}else if(n>i)for(c=u-i;c>d;c--)o=c+n-1,(a=c+i-1)in l?l[o]=l[a]:delete l[o];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-i+n,r}}),gu("flat"),gu("flatMap");var gh="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Xh=yi,Gh=function(t,e,n){for(var i in e)Xh(t,i,e[i],n);return t},fh=It,Vh=Y.TypeError,Wh=function(t,e){if(fh(e,t))return t;throw Vh("Incorrect invocation")},vh=Wi,Ch=Ni,Sh=Y.RangeError,Yh=function(t){if(void 0===t)return 0;var e=vh(t),n=Ch(e);if(e!==n)throw Sh("Wrong length or index");return n},Rh=Y.Array,Kh=Math.abs,Nh=Math.pow,Lh=Math.floor,Jh=Math.log,xh=Math.LN2,Hh={pack:function(t,e,n){var i,r,c,a=Rh(n),o=8*n-e-1,l=(1<<o)-1,u=l>>1,d=23===e?Nh(2,-24)-Nh(2,-77):0,s=t<0||0===t&&1/t<0?1:0,m=0;for((t=Kh(t))!=t||t===1/0?(r=t!=t?1:0,i=l):(i=Lh(Jh(t)/xh),t*(c=Nh(2,-i))<1&&(i--,c*=2),(t+=i+u>=1?d/c:d*Nh(2,1-u))*c>=2&&(i++,c/=2),i+u>=l?(r=0,i=l):i+u>=1?(r=(t*c-1)*Nh(2,e),i+=u):(r=t*Nh(2,u-1)*Nh(2,e),i=0));e>=8;)a[m++]=255&r,r/=256,e-=8;for(i=i<<e|r,o+=e;o>0;)a[m++]=255&i,i/=256,o-=8;return a[--m]|=128*s,a},unpack:function(t,e){var n,i=t.length,r=8*i-e-1,c=(1<<r)-1,a=c>>1,o=r-7,l=i-1,u=t[l--],d=127&u;for(u>>=7;o>0;)d=256*d+t[l--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=e;o>0;)n=256*n+t[l--],o-=8;if(0===d)d=1-a;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=Nh(2,e),d-=a}return(u?-1:1)*n*Nh(2,d-e)}},kh=Y,Uh=E,Th=N,wh=gh,Fh=fn,Ah=pn,Bh=Gh,zh=K,jh=Wh,Mh=Wi,Qh=Ni,Ph=Yh,Eh=Hh,Dh=_d,Oh=Gs,_h=gi.f,qh=_e.f,$h=Wu,tb=Zc,eb=Uc,nb=Fh.PROPER,ib=Fh.CONFIGURABLE,rb=ei.get,cb=ei.set,ab=kh.ArrayBuffer,ob=ab,lb=ob&&ob.prototype,ub=kh.DataView,db=ub&&ub.prototype,sb=Object.prototype,mb=kh.Array,hb=kh.RangeError,bb=Uh($h),pb=Uh([].reverse),Zb=Eh.pack,Ib=Eh.unpack,yb=function(t){return[255&t]},gb=function(t){return[255&t,t>>8&255]},Xb=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Gb=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},fb=function(t){return Zb(t,23,4)},Vb=function(t){return Zb(t,52,8)},Wb=function(t,e){qh(t.prototype,e,{get:function(){return rb(this)[e]}})},vb=function(t,e,n,i){var r=Ph(n),c=rb(t);if(r+e>c.byteLength)throw hb("Wrong index");var a=rb(c.buffer).bytes,o=r+c.byteOffset,l=tb(a,o,o+e);return i?l:pb(l)},Cb=function(t,e,n,i,r,c){var a=Ph(n),o=rb(t);if(a+e>o.byteLength)throw hb("Wrong index");for(var l=rb(o.buffer).bytes,u=a+o.byteOffset,d=i(+r),s=0;s<e;s++)l[u+s]=d[c?s:e-s-1]};if(wh){var Sb=nb&&"ArrayBuffer"!==ab.name;if(zh((function(){ab(1)}))&&zh((function(){new ab(-1)}))&&!zh((function(){return new ab,new ab(1.5),new ab(NaN),Sb&&!ib})))Sb&&ib&&Ah(ab,"name","ArrayBuffer");else{(ob=function(t){return jh(this,lb),new ab(Ph(t))}).prototype=lb;for(var Yb,Rb=_h(ab),Kb=0;Rb.length>Kb;)(Yb=Rb[Kb++])in ob||Ah(ob,Yb,ab[Yb]);lb.constructor=ob}Oh&&Dh(db)!==sb&&Oh(db,sb);var Nb=new ub(new ob(2)),Lb=Uh(db.setInt8);Nb.setInt8(0,2147483648),Nb.setInt8(1,2147483649),!Nb.getInt8(0)&&Nb.getInt8(1)||Bh(db,{setInt8:function(t,e){Lb(this,t,e<<24>>24)},setUint8:function(t,e){Lb(this,t,e<<24>>24)}},{unsafe:!0})}else ob=function(t){jh(this,lb);var e=Ph(t);cb(this,{bytes:bb(mb(e),0),byteLength:e}),Th||(this.byteLength=e)},lb=ob.prototype,ub=function(t,e,n){jh(this,db),jh(t,lb);var i=rb(t).byteLength,r=Mh(e);if(r<0||r>i)throw hb("Wrong offset");if(r+(n=void 0===n?i-r:Qh(n))>i)throw hb("Wrong length");cb(this,{buffer:t,byteLength:n,byteOffset:r}),Th||(this.buffer=t,this.byteLength=n,this.byteOffset=r)},db=ub.prototype,Th&&(Wb(ob,"byteLength"),Wb(ub,"buffer"),Wb(ub,"byteLength"),Wb(ub,"byteOffset")),Bh(db,{getInt8:function(t){return vb(this,1,t)[0]<<24>>24},getUint8:function(t){return vb(this,1,t)[0]},getInt16:function(t){var e=vb(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=vb(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Gb(vb(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Gb(vb(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Ib(vb(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Ib(vb(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){Cb(this,1,t,yb,e)},setUint8:function(t,e){Cb(this,1,t,yb,e)},setInt16:function(t,e){Cb(this,2,t,gb,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){Cb(this,2,t,gb,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){Cb(this,4,t,Xb,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){Cb(this,4,t,Xb,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){Cb(this,4,t,fb,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){Cb(this,8,t,Vb,e,arguments.length>2?arguments[2]:void 0)}});eb(ob,"ArrayBuffer"),eb(ub,"DataView");var Jb={ArrayBuffer:ob,DataView:ub},xb=ah,Hb=Jb.ArrayBuffer;fr({global:!0,constructor:!0,forced:Y.ArrayBuffer!==Hb},{ArrayBuffer:Hb}),xb("ArrayBuffer");var kb=rn,Ub=Et,Tb=Y.TypeError,wb=oe,Fb=yi,Ab=function(t){if(kb(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw Tb("Incorrect hint");return Ub(this,t)},Bb=Ve("toPrimitive"),zb=Date.prototype;wb(zb,Bb)||Fb(zb,Bb,Ab);var jb=dt,Mb=mt,Qb=_e,Pb=_d,Eb=Ve,Db=Zn.exports,Ob=Eb("hasInstance"),_b=Function.prototype;Ob in _b||Qb.f(_b,Ob,{value:Db((function(t){if(!jb(this)||!Mb(t))return!1;var e=this.prototype;if(!Mb(e))return t instanceof this;for(;t=Pb(t);)if(e===t)return!0;return!1}),Ob)});var qb=N,$b=fn.EXISTS,tp=E,ep=_e.f,np=Function.prototype,ip=tp(np.toString),rp=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,cp=tp(rp.exec);qb&&!$b&&ep(np,"name",{configurable:!0,get:function(){try{return cp(rp,ip(this))[1]}catch(t){return""}}}),fr({global:!0},{globalThis:Y}),Uc(Y.JSON,"JSON",!0);var ap={exports:{}},op=K((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),lp=K,up=mt,dp=q,sp=op,mp=Object.isExtensible,hp=lp((function(){mp(1)}))||sp?function(t){return!!up(t)&&((!sp||"ArrayBuffer"!=dp(t))&&(!mp||mp(t)))}:mp,bp=!K((function(){return Object.isExtensible(Object.preventExtensions({}))})),pp=fr,Zp=E,Ip=Tn,yp=mt,gp=oe,Xp=_e.f,Gp=gi,fp=ac,Vp=hp,Wp=bp,vp=!1,Cp=me("meta"),Sp=0,Yp=function(t){Xp(t,Cp,{value:{objectID:"O"+Sp++,weakData:{}}})},Rp=ap.exports={enable:function(){Rp.enable=function(){},vp=!0;var t=Gp.f,e=Zp([].splice),n={};n[Cp]=1,t(n).length&&(Gp.f=function(n){for(var i=t(n),r=0,c=i.length;r<c;r++)if(i[r]===Cp){e(i,r,1);break}return i},pp({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:fp.f}))},fastKey:function(t,e){if(!yp(t))return"symbol"==a(t)?t:("string"==typeof t?"S":"P")+t;if(!gp(t,Cp)){if(!Vp(t))return"F";if(!e)return"E";Yp(t)}return t[Cp].objectID},getWeakData:function(t,e){if(!gp(t,Cp)){if(!Vp(t))return!0;if(!e)return!1;Yp(t)}return t[Cp].weakData},onFreeze:function(t){return Wp&&vp&&Vp(t)&&!gp(t,Cp)&&Yp(t),t}};Ip[Cp]=!0;var Kp=Ac,Np=H,Lp=rn,Jp=Ut,xp=ad,Hp=Ji,kp=It,Up=yd,Tp=sd,wp=$u,Fp=Y.TypeError,Ap=function(t,e){this.stopped=t,this.result=e},Bp=Ap.prototype,zp=function(t,e,n){var i,r,c,o,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),h=!(!n||!n.IS_ITERATOR),b=!(!n||!n.INTERRUPTED),p=Kp(e,s),Z=function(t){return i&&wp(i,"normal",t),new Ap(!0,t)},I=function(t){return m?(Lp(t),b?p(t[0],t[1],Z):p(t[0],t[1])):b?p(t,Z):p(t)};if(h)i=t;else{if(!(r=Tp(t)))throw Fp(Jp(t)+" is not iterable");if(xp(r)){for(c=0,o=Hp(t);o>c;c++)if((l=I(t[c]))&&kp(Bp,l))return l;return new Ap(!1)}i=Up(t,r)}for(u=i.next;!(d=Np(u,i)).done;){try{l=I(d.value)}catch(t){wp(i,"throw",t)}if("object"==a(l)&&l&&kp(Bp,l))return l}return new Ap(!1)},jp=dt,Mp=mt,Qp=Gs,Pp=function(t,e,n){var i,r;return Qp&&jp(i=e.constructor)&&i!==n&&Mp(r=i.prototype)&&r!==n.prototype&&Qp(t,r),t},Ep=fr,Dp=Y,Op=E,_p=br,qp=yi,$p=ap.exports,tZ=zp,eZ=Wh,nZ=dt,iZ=mt,rZ=K,cZ=Hd,aZ=Uc,oZ=Pp,lZ=function(t,e,n){var i=-1!==t.indexOf("Map"),r=-1!==t.indexOf("Weak"),c=i?"set":"add",a=Dp[t],o=a&&a.prototype,l=a,u={},d=function(t){var e=Op(o[t]);qp(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(r&&!iZ(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return r&&!iZ(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(r&&!iZ(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(_p(t,!nZ(a)||!(r||o.forEach&&!rZ((function(){(new a).entries().next()})))))l=n.getConstructor(e,t,i,c),$p.enable();else if(_p(t,!0)){var s=new l,m=s[c](r?{}:-0,1)!=s,h=rZ((function(){s.has(1)})),b=cZ((function(t){new a(t)})),p=!r&&rZ((function(){for(var t=new a,e=5;e--;)t[c](e,e);return!t.has(-0)}));b||((l=e((function(t,e){eZ(t,o);var n=oZ(new a,t,l);return null!=e&&tZ(e,n[c],{that:n,AS_ENTRIES:i}),n}))).prototype=o,o.constructor=l),(h||p)&&(d("delete"),d("has"),i&&d("get")),(p||m)&&d(c),r&&o.clear&&delete o.clear}return u[t]=l,Ep({global:!0,constructor:!0,forced:l!=a},u),aZ(l,t),r||n.setStrong(l,t,i),l},uZ=_e.f,dZ=cc,sZ=Gh,mZ=Ac,hZ=Wh,bZ=zp,pZ=Ts,ZZ=ah,IZ=N,yZ=ap.exports.fastKey,gZ=ei.set,XZ=ei.getterFor,GZ={getConstructor:function(t,e,n,i){var r=t((function(t,r){hZ(t,c),gZ(t,{type:e,index:dZ(null),first:void 0,last:void 0,size:0}),IZ||(t.size=0),null!=r&&bZ(r,t[i],{that:t,AS_ENTRIES:n})})),c=r.prototype,a=XZ(e),o=function(t,e,n){var i,r,c=a(t),o=l(t,e);return o?o.value=n:(c.last=o={index:r=yZ(e,!0),key:e,value:n,previous:i=c.last,next:void 0,removed:!1},c.first||(c.first=o),i&&(i.next=o),IZ?c.size++:t.size++,"F"!==r&&(c.index[r]=o)),t},l=function(t,e){var n,i=a(t),r=yZ(e);if("F"!==r)return i.index[r];for(n=i.first;n;n=n.next)if(n.key==e)return n};return sZ(c,{clear:function(){for(var t=a(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,IZ?t.size=0:this.size=0},delete:function(t){var e=this,n=a(e),i=l(e,t);if(i){var r=i.next,c=i.previous;delete n.index[i.index],i.removed=!0,c&&(c.next=r),r&&(r.previous=c),n.first==i&&(n.first=r),n.last==i&&(n.last=c),IZ?n.size--:e.size--}return!!i},forEach:function(t){for(var e,n=a(this),i=mZ(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(i(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!l(this,t)}}),sZ(c,n?{get:function(t){var e=l(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),IZ&&uZ(c,"size",{get:function(){return a(this).size}}),r},setStrong:function(t,e,n){var i=e+" Iterator",r=XZ(e),c=XZ(i);pZ(t,e,(function(t,e){gZ(this,{type:i,target:t,state:r(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),ZZ(e)}};lZ("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),GZ);var fZ=Math.log,VZ=Math.log1p||function(t){var e=+t;return e>-1e-8&&e<1e-8?e-e*e/2:fZ(1+e)},WZ=fr,vZ=VZ,CZ=Math.acosh,SZ=Math.log,YZ=Math.sqrt,RZ=Math.LN2;WZ({target:"Math",stat:!0,forced:!CZ||710!=Math.floor(CZ(Number.MAX_VALUE))||CZ(1/0)!=1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?SZ(e)+RZ:vZ(e-1+YZ(e-1)*YZ(e+1))}});var KZ=fr,NZ=Math.asinh,LZ=Math.log,JZ=Math.sqrt;KZ({target:"Math",stat:!0,forced:!(NZ&&1/NZ(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!=n?n<0?-t(-n):LZ(n+JZ(n*n+1)):n}});var xZ=fr,HZ=Math.atanh,kZ=Math.log;xZ({target:"Math",stat:!0,forced:!(HZ&&1/HZ(-0)<0)},{atanh:function(t){var e=+t;return 0==e?e:kZ((1+e)/(1-e))/2}});var UZ=Math.sign||function(t){var e=+t;return 0==e||e!=e?e:e<0?-1:1},TZ=fr,wZ=UZ,FZ=Math.abs,AZ=Math.pow;TZ({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return wZ(e)*AZ(FZ(e),1/3)}});var BZ=fr,zZ=Math.floor,jZ=Math.log,MZ=Math.LOG2E;BZ({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-zZ(jZ(e+.5)*MZ):32}});var QZ=Math.expm1,PZ=Math.exp,EZ=!QZ||QZ(10)>22025.465794806718||QZ(10)<22025.465794806718||-2e-17!=QZ(-2e-17)?function(t){var e=+t;return 0==e?e:e>-1e-6&&e<1e-6?e+e*e/2:PZ(e)-1}:QZ,DZ=fr,OZ=EZ,_Z=Math.cosh,qZ=Math.abs,$Z=Math.E;DZ({target:"Math",stat:!0,forced:!_Z||_Z(710)===1/0},{cosh:function(t){var e=OZ(qZ(t)-1)+1;return(e+1/(e*$Z*$Z))*($Z/2)}});var tI=EZ;fr({target:"Math",stat:!0,forced:tI!=Math.expm1},{expm1:tI});var eI=UZ,nI=Math.abs,iI=Math.pow,rI=iI(2,-52),cI=iI(2,-23),aI=iI(2,127)*(2-cI),oI=iI(2,-126),lI=Math.fround||function(t){var e,n,i=+t,r=nI(i),c=eI(i);return r<oI?c*function(t){return t+1/rI-1/rI}(r/oI/cI)*oI*cI:(n=(e=(1+cI/rI)*r)-(e-r))>aI||n!=n?c*(1/0):c*n};fr({target:"Math",stat:!0},{fround:lI});var uI=fr,dI=Math.hypot,sI=Math.abs,mI=Math.sqrt;uI({target:"Math",stat:!0,arity:2,forced:!!dI&&dI(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,i,r=0,c=0,a=arguments.length,o=0;c<a;)o<(n=sI(arguments[c++]))?(r=r*(i=o/n)*i+1,o=n):r+=n>0?(i=n/o)*i:n;return o===1/0?1/0:o*mI(r)}});var hI=fr,bI=K,pI=Math.imul;hI({target:"Math",stat:!0,forced:bI((function(){return-5!=pI(4294967295,5)||2!=pI.length}))},{imul:function(t,e){var n=65535,i=+t,r=+e,c=n&i,a=n&r;return 0|c*a+((n&i>>>16)*a+c*(n&r>>>16)<<16>>>0)}});var ZI=Math.log,II=Math.LOG10E;fr({target:"Math",stat:!0},{log10:Math.log10||function(t){return ZI(t)*II}}),fr({target:"Math",stat:!0},{log1p:VZ});var yI=fr,gI=Math.log,XI=Math.LN2;yI({target:"Math",stat:!0},{log2:function(t){return gI(t)/XI}}),fr({target:"Math",stat:!0},{sign:UZ});var GI=fr,fI=K,VI=EZ,WI=Math.abs,vI=Math.exp,CI=Math.E;GI({target:"Math",stat:!0,forced:fI((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return WI(e)<1?(VI(e)-VI(-e))/2:(vI(e-1)-vI(-e-1))*(CI/2)}});var SI=fr,YI=EZ,RI=Math.exp;SI({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=YI(e),i=YI(-e);return n==1/0?1:i==1/0?-1:(n-i)/(RI(e)+RI(-e))}}),Uc(Math,"Math",!0),fr({target:"Math",stat:!0},{trunc:fi});var KI=E(1..valueOf),NI="\t\n\v\f\r                 \u2028\u2029\ufeff",LI=at,JI=Hr,xI=E("".replace),HI="[\t\n\v\f\r                 \u2028\u2029\ufeff]",kI=RegExp("^"+HI+HI+"*"),UI=RegExp(HI+HI+"*$"),TI=function(t){return function(e){var n=JI(LI(e));return 1&t&&(n=xI(n,kI,"")),2&t&&(n=xI(n,UI,"")),n}},wI={start:TI(1),end:TI(2),trim:TI(3)},FI=N,AI=Y,BI=E,zI=br,jI=yi,MI=oe,QI=Pp,PI=It,EI=Ht,DI=Le,OI=K,_I=gi.f,qI=R.f,$I=_e.f,ty=KI,ey=wI.trim,ny=AI.Number,iy=ny.prototype,ry=AI.TypeError,cy=BI("".slice),ay=BI("".charCodeAt),oy=function(t){var e=DI(t,"number");return"bigint"==typeof e?e:ly(e)},ly=function(t){var e,n,i,r,c,a,o,l,u=DI(t,"number");if(EI(u))throw ry("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=ey(u),43===(e=ay(u,0))||45===e){if(88===(n=ay(u,2))||120===n)return NaN}else if(48===e){switch(ay(u,1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+u}for(a=(c=cy(u,2)).length,o=0;o<a;o++)if((l=ay(c,o))<48||l>r)return NaN;return parseInt(c,i)}return+u};if(zI("Number",!ny(" 0o1")||!ny("0b1")||ny("+0x1"))){for(var uy,dy=function(t){var e=arguments.length<1?0:ny(oy(t)),n=this;return PI(iy,n)&&OI((function(){ty(n)}))?QI(Object(e),n,dy):e},sy=FI?_I(ny):"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(","),my=0;sy.length>my;my++)MI(ny,uy=sy[my])&&!MI(dy,uy)&&$I(dy,uy,qI(ny,uy));dy.prototype=iy,iy.constructor=dy,jI(AI,"Number",dy,{constructor:!0})}fr({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var hy=Y.isFinite;fr({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&hy(t)}});var by=mt,py=Math.floor,Zy=Number.isInteger||function(t){return!by(t)&&isFinite(t)&&py(t)===t};fr({target:"Number",stat:!0},{isInteger:Zy}),fr({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Iy=fr,yy=Zy,gy=Math.abs;Iy({target:"Number",stat:!0},{isSafeInteger:function(t){return yy(t)&&gy(t)<=9007199254740991}}),fr({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),fr({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var Xy=Y,Gy=K,fy=Hr,Vy=wI.trim,Wy=E("".charAt),vy=Xy.parseFloat,Cy=Xy.Symbol,Sy=Cy&&Cy.iterator,Yy=1/vy("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||Sy&&!Gy((function(){vy(Object(Sy))}))?function(t){var e=Vy(fy(t)),n=vy(e);return 0===n&&"-"==Wy(e,0)?-0:n}:vy;fr({target:"Number",stat:!0,forced:Number.parseFloat!=Yy},{parseFloat:Yy});var Ry=Y,Ky=K,Ny=E,Ly=Hr,Jy=wI.trim,xy=Ry.parseInt,Hy=Ry.Symbol,ky=Hy&&Hy.iterator,Uy=/^[+-]?0x/i,Ty=Ny(Uy.exec),wy=8!==xy("\t\n\v\f\r                 \u2028\u2029\ufeff08")||22!==xy("\t\n\v\f\r                 \u2028\u2029\ufeff0x16")||ky&&!Ky((function(){xy(Object(ky))}))?function(t,e){var n=Jy(Ly(t));return xy(n,e>>>0||(Ty(Uy,n)?16:10))}:xy,Fy=wy;fr({target:"Number",stat:!0,forced:Number.parseInt!=Fy},{parseInt:Fy});var Ay=Wi,By=Hr,zy=at,jy=Y.RangeError,My=function(t){var e=By(zy(this)),n="",i=Ay(t);if(i<0||i==1/0)throw jy("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n},Qy=fr,Py=Y,Ey=E,Dy=Wi,Oy=KI,_y=My,qy=K,$y=Py.RangeError,tg=Py.String,eg=Math.floor,ng=Ey(_y),ig=Ey("".slice),rg=Ey(1..toFixed),cg=function t(e,n,i){return 0===n?i:n%2==1?t(e,n-1,i*e):t(e*e,n/2,i)},ag=function(t,e,n){for(var i=-1,r=n;++i<6;)r+=e*t[i],t[i]=r%1e7,r=eg(r/1e7)},og=function(t,e){for(var n=6,i=0;--n>=0;)i+=t[n],t[n]=eg(i/e),i=i%e*1e7},lg=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var i=tg(t[e]);n=""===n?i:n+ng("0",7-i.length)+i}return n};Qy({target:"Number",proto:!0,forced:qy((function(){return"0.000"!==rg(8e-5,3)||"1"!==rg(.9,0)||"1.25"!==rg(1.255,2)||"1000000000000000128"!==rg(0xde0b6b3a7640080,0)}))||!qy((function(){rg({})}))},{toFixed:function(t){var e,n,i,r,c=Oy(this),a=Dy(t),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw $y("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return tg(c);if(c<0&&(l="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*cg(2,69,1))-69,n=e<0?c*cg(2,-e,1):c/cg(2,e,1),n*=4503599627370496,(e=52-e)>0){for(ag(o,0,n),i=a;i>=7;)ag(o,1e7,0),i-=7;for(ag(o,cg(10,i,1),0),i=e-1;i>=23;)og(o,1<<23),i-=23;og(o,1<<i),ag(o,1,1),og(o,2),u=lg(o)}else ag(o,0,n),ag(o,1<<-e,0),u=lg(o)+ng("0",a);return u=a>0?l+((r=u.length)<=a?"0."+ng("0",a-r)+u:ig(u,0,r-a)+"."+ig(u,r-a)):l+u}});var ug=N,dg=E,sg=H,mg=K,hg=wr,bg=Ei,pg=k,Zg=re,Ig=rt,yg=Object.assign,gg=Object.defineProperty,Xg=dg([].concat),Gg=!yg||mg((function(){if(ug&&1!==yg({b:1},yg(gg({},"a",{enumerable:!0,get:function(){gg(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach((function(t){e[t]=t})),7!=yg({},t)[n]||hg(yg({},e)).join("")!=i}))?function(t,e){for(var n=Zg(t),i=arguments.length,r=1,c=bg.f,a=pg.f;i>r;)for(var o,l=Ig(arguments[r++]),u=c?Xg(hg(l),c(l)):hg(l),d=u.length,s=0;d>s;)o=u[s++],ug&&!sg(a,l,o)||(n[o]=l[o]);return n}:yg,fg=Gg;fr({target:"Object",stat:!0,arity:2,forced:Object.assign!==fg},{assign:fg});var Vg=Y,Wg=Hm,vg=!K((function(){if(!(Wg&&Wg<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete Vg[t]}})),Cg=At,Sg=re,Yg=_e;N&&fr({target:"Object",proto:!0,forced:vg},{__defineGetter__:function(t,e){Yg.f(Sg(this),t,{get:Cg(e),enumerable:!0,configurable:!0})}});var Rg=At,Kg=re,Ng=_e;N&&fr({target:"Object",proto:!0,forced:vg},{__defineSetter__:function(t,e){Ng.f(Kg(this),t,{set:Rg(e),enumerable:!0,configurable:!0})}});var Lg=N,Jg=E,xg=wr,Hg=ut,kg=Jg(k.f),Ug=Jg([].push),Tg=function(t){return function(e){for(var n,i=Hg(e),r=xg(i),c=r.length,a=0,o=[];c>a;)n=r[a++],Lg&&!kg(i,n)||Ug(o,t?[n,i[n]]:i[n]);return o}},wg={entries:Tg(!0),values:Tg(!1)},Fg=wg.entries;fr({target:"Object",stat:!0},{entries:function(t){return Fg(t)}});var Ag=fr,Bg=bp,zg=K,jg=mt,Mg=ap.exports.onFreeze,Qg=Object.freeze;Ag({target:"Object",stat:!0,forced:zg((function(){Qg(1)})),sham:!Bg},{freeze:function(t){return Qg&&jg(t)?Qg(Mg(t)):t}});var Pg=zp,Eg=dc;fr({target:"Object",stat:!0},{fromEntries:function(t){var e={};return Pg(t,(function(t,n){Eg(e,t,n)}),{AS_ENTRIES:!0}),e}});var Dg=fr,Og=K,_g=ut,qg=R.f,$g=N,tX=Og((function(){qg(1)}));Dg({target:"Object",stat:!0,forced:!$g||tX,sham:!$g},{getOwnPropertyDescriptor:function(t,e){return qg(_g(t),e)}});var eX=tr,nX=ut,iX=R,rX=dc;fr({target:"Object",stat:!0,sham:!N},{getOwnPropertyDescriptors:function(t){for(var e,n,i=nX(t),r=iX.f,c=eX(i),a={},o=0;c.length>o;)void 0!==(n=r(i,e=c[o++]))&&rX(a,e,n);return a}});var cX=fr,aX=K,oX=ac.f;cX({target:"Object",stat:!0,forced:aX((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:oX});var lX=re,uX=_d,dX=Bd;fr({target:"Object",stat:!0,forced:K((function(){uX(1)})),sham:!dX},{getPrototypeOf:function(t){return uX(lX(t))}});var sX=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};fr({target:"Object",stat:!0},{is:sX});var mX=hp;fr({target:"Object",stat:!0,forced:Object.isExtensible!==mX},{isExtensible:mX});var hX=fr,bX=K,pX=mt,ZX=q,IX=op,yX=Object.isFrozen;hX({target:"Object",stat:!0,forced:bX((function(){yX(1)}))||IX},{isFrozen:function(t){return!pX(t)||(!(!IX||"ArrayBuffer"!=ZX(t))||!!yX&&yX(t))}});var gX=fr,XX=K,GX=mt,fX=q,VX=op,WX=Object.isSealed;gX({target:"Object",stat:!0,forced:XX((function(){WX(1)}))||VX},{isSealed:function(t){return!GX(t)||(!(!VX||"ArrayBuffer"!=fX(t))||!!WX&&WX(t))}});var vX=re,CX=wr;fr({target:"Object",stat:!0,forced:K((function(){CX(1)}))},{keys:function(t){return CX(vX(t))}});var SX=fr,YX=N,RX=vg,KX=re,NX=He,LX=_d,JX=R.f;YX&&SX({target:"Object",proto:!0,forced:RX},{__lookupGetter__:function(t){var e,n=KX(this),i=NX(t);do{if(e=JX(n,i))return e.get}while(n=LX(n))}});var xX=fr,HX=N,kX=vg,UX=re,TX=He,wX=_d,FX=R.f;HX&&xX({target:"Object",proto:!0,forced:kX},{__lookupSetter__:function(t){var e,n=UX(this),i=TX(t);do{if(e=FX(n,i))return e.set}while(n=wX(n))}});var AX=fr,BX=mt,zX=ap.exports.onFreeze,jX=bp,MX=K,QX=Object.preventExtensions;AX({target:"Object",stat:!0,forced:MX((function(){QX(1)})),sham:!jX},{preventExtensions:function(t){return QX&&BX(t)?QX(zX(t)):t}});var PX=fr,EX=mt,DX=ap.exports.onFreeze,OX=bp,_X=K,qX=Object.seal;PX({target:"Object",stat:!0,forced:_X((function(){qX(1)})),sham:!OX},{seal:function(t){return qX&&EX(t)?qX(DX(t)):t}});var $X=Lr,tG=Wr?{}.toString:function(){return"[object "+$X(this)+"]"};Wr||yi(Object.prototype,"toString",tG,{unsafe:!0});var eG=wg.values;fr({target:"Object",stat:!0},{values:function(t){return eG(t)}});var nG,iG,rG,cG,aG="process"==q(Y.process),oG=ia,lG=Ut,uG=Y.TypeError,dG=function(t){if(oG(t))return t;throw uG(lG(t)+" is not a constructor")},sG=rn,mG=dG,hG=Ve("species"),bG=function(t,e){var n,i=sG(t).constructor;return void 0===i||null==(n=sG(i)[hG])?e:mG(n)},pG=Y.TypeError,ZG=function(t,e){if(t<e)throw pG("Not enough arguments");return t},IG=/(?:ipad|iphone|ipod).*applewebkit/i.test(yt),yG=Y,gG=Mo,XG=Ac,GG=dt,fG=oe,VG=K,WG=Pr,vG=Qo,CG=we,SG=ZG,YG=IG,RG=aG,KG=yG.setImmediate,NG=yG.clearImmediate,LG=yG.process,JG=yG.Dispatch,xG=yG.Function,HG=yG.MessageChannel,kG=yG.String,UG=0,TG={};try{nG=yG.location}catch(t){}var wG=function(t){if(fG(TG,t)){var e=TG[t];delete TG[t],e()}},FG=function(t){return function(){wG(t)}},AG=function(t){wG(t.data)},BG=function(t){yG.postMessage(kG(t),nG.protocol+"//"+nG.host)};KG&&NG||(KG=function(t){SG(arguments.length,1);var e=GG(t)?t:xG(t),n=vG(arguments,1);return TG[++UG]=function(){gG(e,void 0,n)},iG(UG),UG},NG=function(t){delete TG[t]},RG?iG=function(t){LG.nextTick(FG(t))}:JG&&JG.now?iG=function(t){JG.now(FG(t))}:HG&&!YG?(cG=(rG=new HG).port2,rG.port1.onmessage=AG,iG=XG(cG.postMessage,cG)):yG.addEventListener&&GG(yG.postMessage)&&!yG.importScripts&&nG&&"file:"!==nG.protocol&&!VG(BG)?(iG=BG,yG.addEventListener("message",AG,!1)):iG="onreadystatechange"in CG("script")?function(t){WG.appendChild(CG("script")).onreadystatechange=function(){WG.removeChild(this),wG(t)}}:function(t){setTimeout(FG(t),0)});var zG,jG,MG,QG,PG,EG,DG,OG,_G={set:KG,clear:NG},qG=Y,$G=/ipad|iphone|ipod/i.test(yt)&&void 0!==qG.Pebble,tf=/web0s(?!.*chrome)/i.test(yt),ef=Y,nf=Ac,rf=R.f,cf=_G.set,af=IG,of=$G,lf=tf,uf=aG,df=ef.MutationObserver||ef.WebKitMutationObserver,sf=ef.document,mf=ef.process,hf=ef.Promise,bf=rf(ef,"queueMicrotask"),pf=bf&&bf.value;pf||(zG=function(){var t,e;for(uf&&(t=mf.domain)&&t.exit();jG;){e=jG.fn,jG=jG.next;try{e()}catch(t){throw jG?QG():MG=void 0,t}}MG=void 0,t&&t.enter()},af||uf||lf||!df||!sf?!of&&hf&&hf.resolve?((DG=hf.resolve(void 0)).constructor=hf,OG=nf(DG.then,DG),QG=function(){OG(zG)}):uf?QG=function(){mf.nextTick(zG)}:(cf=nf(cf,ef),QG=function(){cf(zG)}):(PG=!0,EG=sf.createTextNode(""),new df(zG).observe(EG,{characterData:!0}),QG=function(){EG.data=PG=!PG}));var Zf=pf||function(t){var e={fn:t,next:void 0};MG&&(MG.next=e),jG||(jG=e,QG()),MG=e},If=Y,yf=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},gf=function(){this.head=null,this.tail=null};gf.prototype={add:function(t){var e={item:t,next:null};this.head?this.tail.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}};var Xf=gf,Gf=Y.Promise,ff="object"==("undefined"==typeof window?"undefined":a(window))&&"object"!=("undefined"==typeof Deno?"undefined":a(Deno)),Vf=Y,Wf=Gf,vf=dt,Cf=br,Sf=Rn,Yf=Ve,Rf=ff,Kf=vt;Wf&&Wf.prototype;var Nf=Yf("species"),Lf=!1,Jf=vf(Vf.PromiseRejectionEvent),xf=Cf("Promise",(function(){var t=Sf(Wf),e=t!==String(Wf);if(!e&&66===Kf)return!0;if(Kf>=51&&/native code/.test(t))return!1;var n=new Wf((function(t){t(1)})),i=function(t){t((function(){}),(function(){}))};return(n.constructor={})[Nf]=i,!(Lf=n.then((function(){}))instanceof i)||!e&&Rf&&!Jf})),Hf={CONSTRUCTOR:xf,REJECTION_EVENT:Jf,SUBCLASSING:Lf},kf={},Uf=At,Tf=function(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=i})),this.resolve=Uf(e),this.reject=Uf(n)};kf.f=function(t){return new Tf(t)};var wf,Ff,Af,Bf=fr,zf=aG,jf=Y,Mf=H,Qf=yi,Pf=Gs,Ef=Uc,Df=ah,Of=At,_f=dt,qf=mt,$f=Wh,tV=bG,eV=_G.set,nV=Zf,iV=function(t,e){var n=If.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))},rV=yf,cV=Xf,aV=ei,oV=Gf,lV=kf,uV=Hf.CONSTRUCTOR,dV=Hf.REJECTION_EVENT,sV=Hf.SUBCLASSING,mV=aV.getterFor("Promise"),hV=aV.set,bV=oV&&oV.prototype,pV=oV,ZV=bV,IV=jf.TypeError,yV=jf.document,gV=jf.process,XV=lV.f,GV=XV,fV=!!(yV&&yV.createEvent&&jf.dispatchEvent),VV=function(t){var e;return!(!qf(t)||!_f(e=t.then))&&e},WV=function(t,e){var n,i,r,c=e.value,a=1==e.state,o=a?t.ok:t.fail,l=t.resolve,u=t.reject,d=t.domain;try{o?(a||(2===e.rejection&&RV(e),e.rejection=1),!0===o?n=c:(d&&d.enter(),n=o(c),d&&(d.exit(),r=!0)),n===t.promise?u(IV("Promise-chain cycle")):(i=VV(n))?Mf(i,n,l,u):l(n)):u(c)}catch(t){d&&!r&&d.exit(),u(t)}},vV=function(t,e){t.notified||(t.notified=!0,nV((function(){for(var n,i=t.reactions;n=i.get();)WV(n,t);t.notified=!1,e&&!t.rejection&&SV(t)})))},CV=function(t,e,n){var i,r;fV?((i=yV.createEvent("Event")).promise=e,i.reason=n,i.initEvent(t,!1,!0),jf.dispatchEvent(i)):i={promise:e,reason:n},!dV&&(r=jf["on"+t])?r(i):"unhandledrejection"===t&&iV("Unhandled promise rejection",n)},SV=function(t){Mf(eV,jf,(function(){var e,n=t.facade,i=t.value;if(YV(t)&&(e=rV((function(){zf?gV.emit("unhandledRejection",i,n):CV("unhandledrejection",n,i)})),t.rejection=zf||YV(t)?2:1,e.error))throw e.value}))},YV=function(t){return 1!==t.rejection&&!t.parent},RV=function(t){Mf(eV,jf,(function(){var e=t.facade;zf?gV.emit("rejectionHandled",e):CV("rejectionhandled",e,t.value)}))},KV=function(t,e,n){return function(i){t(e,i,n)}},NV=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,vV(t,!0))},LV=function t(e,n,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===n)throw IV("Promise can't be resolved itself");var r=VV(n);r?nV((function(){var i={done:!1};try{Mf(r,n,KV(t,i,e),KV(NV,i,e))}catch(t){NV(i,t,e)}})):(e.value=n,e.state=1,vV(e,!1))}catch(t){NV({done:!1},t,e)}}};if(uV&&(ZV=(pV=function(t){$f(this,ZV),Of(t),Mf(wf,this);var e=mV(this);try{t(KV(LV,e),KV(NV,e))}catch(t){NV(e,t)}}).prototype,(wf=function(t){hV(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new cV,rejection:!1,state:0,value:void 0})}).prototype=Qf(ZV,"then",(function(t,e){var n=mV(this),i=XV(tV(this,pV));return n.parent=!0,i.ok=!_f(t)||t,i.fail=_f(e)&&e,i.domain=zf?gV.domain:void 0,0==n.state?n.reactions.add(i):nV((function(){WV(i,n)})),i.promise})),Ff=function(){var t=new wf,e=mV(t);this.promise=t,this.resolve=KV(LV,e),this.reject=KV(NV,e)},lV.f=XV=function(t){return t===pV||undefined===t?new Ff(t):GV(t)},_f(oV)&&bV!==Object.prototype)){Af=bV.then,sV||Qf(bV,"then",(function(t,e){var n=this;return new pV((function(t,e){Mf(Af,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete bV.constructor}catch(t){}Pf&&Pf(bV,ZV)}Bf({global:!0,constructor:!0,wrap:!0,forced:uV},{Promise:pV}),Ef(pV,"Promise",!1),Df("Promise");var JV=Gf,xV=Hf.CONSTRUCTOR||!Hd((function(t){JV.all(t).then(void 0,(function(){}))})),HV=H,kV=At,UV=kf,TV=yf,wV=zp;fr({target:"Promise",stat:!0,forced:xV},{all:function(t){var e=this,n=UV.f(e),i=n.resolve,r=n.reject,c=TV((function(){var n=kV(e.resolve),c=[],a=0,o=1;wV(t,(function(t){var l=a++,u=!1;o++,HV(n,e,t).then((function(t){u||(u=!0,c[l]=t,--o||i(c))}),r)})),--o||i(c)}));return c.error&&r(c.value),n.promise}});var FV=fr,AV=Hf.CONSTRUCTOR,BV=Gf,zV=Zt,jV=dt,MV=yi,QV=BV&&BV.prototype;if(FV({target:"Promise",proto:!0,forced:AV,real:!0},{catch:function(t){return this.then(void 0,t)}}),jV(BV)){var PV=zV("Promise").prototype.catch;QV.catch!==PV&&MV(QV,"catch",PV,{unsafe:!0})}var EV=H,DV=At,OV=kf,_V=yf,qV=zp;fr({target:"Promise",stat:!0,forced:xV},{race:function(t){var e=this,n=OV.f(e),i=n.reject,r=_V((function(){var r=DV(e.resolve);qV(t,(function(t){EV(r,e,t).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var $V=H,tW=kf;fr({target:"Promise",stat:!0,forced:Hf.CONSTRUCTOR},{reject:function(t){var e=tW.f(this);return $V(e.reject,void 0,t),e.promise}});var eW=rn,nW=mt,iW=kf,rW=function(t,e){if(eW(t),nW(e)&&e.constructor===t)return e;var n=iW.f(t);return(0,n.resolve)(e),n.promise},cW=fr,aW=Hf.CONSTRUCTOR,oW=rW;Zt("Promise"),cW({target:"Promise",stat:!0,forced:aW},{resolve:function(t){return oW(this,t)}});var lW=H,uW=At,dW=kf,sW=yf,mW=zp;fr({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=dW.f(e),i=n.resolve,r=n.reject,c=sW((function(){var n=uW(e.resolve),r=[],c=0,a=1;mW(t,(function(t){var o=c++,l=!1;a++,lW(n,e,t).then((function(t){l||(l=!0,r[o]={status:"fulfilled",value:t},--a||i(r))}),(function(t){l||(l=!0,r[o]={status:"rejected",reason:t},--a||i(r))}))})),--a||i(r)}));return c.error&&r(c.value),n.promise}});var hW=fr,bW=Gf,pW=K,ZW=Zt,IW=dt,yW=bG,gW=rW,XW=yi,GW=bW&&bW.prototype;if(hW({target:"Promise",proto:!0,real:!0,forced:!!bW&&pW((function(){GW.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=yW(this,ZW("Promise")),n=IW(t);return this.then(n?function(n){return gW(e,t()).then((function(){return n}))}:t,n?function(n){return gW(e,t()).then((function(){throw n}))}:t)}}),IW(bW)){var fW=ZW("Promise").prototype.finally;GW.finally!==fW&&XW(GW,"finally",fW,{unsafe:!0})}var VW=Mo,WW=At,vW=rn;fr({target:"Reflect",stat:!0,forced:!K((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return VW(WW(t),e,vW(n))}});var CW=E,SW=At,YW=mt,RW=oe,KW=Qo,NW=L,LW=Y.Function,JW=CW([].concat),xW=CW([].join),HW={},kW=function(t,e,n){if(!RW(HW,e)){for(var i=[],r=0;r<e;r++)i[r]="a["+r+"]";HW[e]=LW("C,a","return new C("+xW(i,",")+")")}return HW[e](t,n)},UW=NW?LW.bind:function(t){var e=SW(this),n=e.prototype,i=KW(arguments,1),r=function(){var n=JW(i,KW(arguments));return this instanceof r?kW(e,n.length,n):e.apply(t,n)};return YW(n)&&(r.prototype=n),r},TW=fr,wW=Mo,FW=UW,AW=dG,BW=rn,zW=mt,jW=cc,MW=K,QW=Zt("Reflect","construct"),PW=Object.prototype,EW=[].push,DW=MW((function(){function t(){}return!(QW((function(){}),[],t)instanceof t)})),OW=!MW((function(){QW((function(){}))})),_W=DW||OW;TW({target:"Reflect",stat:!0,forced:_W,sham:_W},{construct:function(t,e){AW(t),BW(e);var n=arguments.length<3?t:AW(arguments[2]);if(OW&&!DW)return QW(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var i=[null];return wW(EW,i,e),new(wW(FW,t,i))}var r=n.prototype,c=jW(zW(r)?r:PW),a=wW(t,c,e);return zW(a)?a:c}});var qW=N,$W=rn,tv=He,ev=_e;fr({target:"Reflect",stat:!0,forced:K((function(){Reflect.defineProperty(ev.f({},1,{value:1}),1,{value:2})})),sham:!qW},{defineProperty:function(t,e,n){$W(t);var i=tv(e);$W(n);try{return ev.f(t,i,n),!0}catch(t){return!1}}});var nv=fr,iv=rn,rv=R.f;nv({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=rv(iv(t),e);return!(n&&!n.configurable)&&delete t[e]}});var cv=oe,av=function(t){return void 0!==t&&(cv(t,"value")||cv(t,"writable"))},ov=H,lv=mt,uv=rn,dv=av,sv=R,mv=_d;fr({target:"Reflect",stat:!0},{get:function t(e,n){var i,r,c=arguments.length<3?e:arguments[2];return uv(e)===c?e[n]:(i=sv.f(e,n))?dv(i)?i.value:void 0===i.get?void 0:ov(i.get,c):lv(r=mv(e))?t(r,n,c):void 0}});var hv=rn,bv=R;fr({target:"Reflect",stat:!0,sham:!N},{getOwnPropertyDescriptor:function(t,e){return bv.f(hv(t),e)}});var pv=rn,Zv=_d;fr({target:"Reflect",stat:!0,sham:!Bd},{getPrototypeOf:function(t){return Zv(pv(t))}}),fr({target:"Reflect",stat:!0},{has:function(t,e){return e in t}});var Iv=rn,yv=hp;fr({target:"Reflect",stat:!0},{isExtensible:function(t){return Iv(t),yv(t)}}),fr({target:"Reflect",stat:!0},{ownKeys:tr});var gv=Zt,Xv=rn;fr({target:"Reflect",stat:!0,sham:!bp},{preventExtensions:function(t){Xv(t);try{var e=gv("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Gv=fr,fv=H,Vv=rn,Wv=mt,vv=av,Cv=_e,Sv=R,Yv=_d,Rv=B;var Kv=K((function(){var t=function(){},e=Cv.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Gv({target:"Reflect",stat:!0,forced:Kv},{set:function t(e,n,i){var r,c,a,o=arguments.length<4?e:arguments[3],l=Sv.f(Vv(e),n);if(!l){if(Wv(c=Yv(e)))return t(c,n,i,o);l=Rv(0)}if(vv(l)){if(!1===l.writable||!Wv(o))return!1;if(r=Sv.f(o,n)){if(r.get||r.set||!1===r.writable)return!1;r.value=i,Cv.f(o,n,r)}else Cv.f(o,n,Rv(0,i))}else{if(void 0===(a=l.set))return!1;fv(a,o,i)}return!0}});var Nv=rn,Lv=Is,Jv=Gs;Jv&&fr({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Nv(t),Lv(e);try{return Jv(t,e),!0}catch(t){return!1}}});var xv=mt,Hv=q,kv=Ve("match"),Uv=function(t){var e;return xv(t)&&(void 0!==(e=t[kv])?!!e:"RegExp"==Hv(t))},Tv=rn,wv=function(){var t=Tv(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},Fv=H,Av=oe,Bv=It,zv=wv,jv=RegExp.prototype,Mv=function(t){var e=t.flags;return void 0!==e||"flags"in jv||Av(t,"flags")||!Bv(jv,t)?e:Fv(zv,t)},Qv=K,Pv=Y.RegExp,Ev=Qv((function(){var t=Pv("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),Dv=Ev||Qv((function(){return!Pv("a","y").sticky})),Ov=Ev||Qv((function(){var t=Pv("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),_v={BROKEN_CARET:Ov,MISSED_STICKY:Dv,UNSUPPORTED_Y:Ev},qv=_e.f,$v=K,tC=Y.RegExp,eC=$v((function(){var t=tC(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),nC=K,iC=Y.RegExp,rC=nC((function(){var t=iC("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),cC=N,aC=Y,oC=E,lC=br,uC=Pp,dC=pn,sC=gi.f,mC=It,hC=Uv,bC=Hr,pC=Mv,ZC=_v,IC=function(t,e,n){n in t||qv(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})},yC=yi,gC=K,XC=oe,GC=ei.enforce,fC=ah,VC=eC,WC=rC,vC=Ve("match"),CC=aC.RegExp,SC=CC.prototype,YC=aC.SyntaxError,RC=oC(SC.exec),KC=oC("".charAt),NC=oC("".replace),LC=oC("".indexOf),JC=oC("".slice),xC=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,HC=/a/g,kC=/a/g,UC=new CC(HC)!==HC,TC=ZC.MISSED_STICKY,wC=ZC.UNSUPPORTED_Y,FC=cC&&(!UC||TC||VC||WC||gC((function(){return kC[vC]=!1,CC(HC)!=HC||CC(kC)==kC||"/a/i"!=CC(HC,"i")})));if(lC("RegExp",FC)){for(var AC=function(t,e){var n,i,r,c,a,o,l=mC(SC,this),u=hC(t),d=void 0===e,s=[],m=t;if(!l&&u&&d&&t.constructor===AC)return t;if((u||mC(SC,t))&&(t=t.source,d&&(e=pC(m))),t=void 0===t?"":bC(t),e=void 0===e?"":bC(e),m=t,VC&&"dotAll"in HC&&(i=!!e&&LC(e,"s")>-1)&&(e=NC(e,/s/g,"")),n=e,TC&&"sticky"in HC&&(r=!!e&&LC(e,"y")>-1)&&wC&&(e=NC(e,/y/g,"")),WC&&(c=function(t){for(var e,n=t.length,i=0,r="",c=[],a={},o=!1,l=!1,u=0,d="";i<=n;i++){if("\\"===(e=KC(t,i)))e+=KC(t,++i);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:RC(xC,JC(t,i+1))&&(i+=2,l=!0),r+=e,u++;continue;case">"===e&&l:if(""===d||XC(a,d))throw new YC("Invalid capture group name");a[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=e:r+=e}return[r,c]}(t),t=c[0],s=c[1]),a=uC(CC(t,e),l?this:SC,AC),(i||r||s.length)&&(o=GC(a),i&&(o.dotAll=!0,o.raw=AC(function(t){for(var e,n=t.length,i=0,r="",c=!1;i<=n;i++)"\\"!==(e=KC(t,i))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),r+=e):r+="[\\s\\S]":r+=e+KC(t,++i);return r}(t),n)),r&&(o.sticky=!0),s.length&&(o.groups=s)),t!==m)try{dC(a,"source",""===m?"(?:)":m)}catch(t){}return a},BC=sC(CC),zC=0;BC.length>zC;)IC(AC,CC,BC[zC++]);SC.constructor=AC,AC.prototype=SC,yC(aC,"RegExp",AC,{constructor:!0})}fC("RegExp");var jC=H,MC=E,QC=Hr,PC=wv,EC=_v,DC=Dt.exports,OC=cc,_C=ei.get,qC=eC,$C=rC,tS=DC("native-string-replace",String.prototype.replace),eS=RegExp.prototype.exec,nS=eS,iS=MC("".charAt),rS=MC("".indexOf),cS=MC("".replace),aS=MC("".slice),oS=function(){var t=/a/,e=/b*/g;return jC(eS,t,"a"),jC(eS,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),lS=EC.BROKEN_CARET,uS=void 0!==/()??/.exec("")[1];(oS||uS||lS||qC||$C)&&(nS=function(t){var e,n,i,r,c,a,o,l=this,u=_C(l),d=QC(t),s=u.raw;if(s)return s.lastIndex=l.lastIndex,e=jC(nS,s,d),l.lastIndex=s.lastIndex,e;var m=u.groups,h=lS&&l.sticky,b=jC(PC,l),p=l.source,Z=0,I=d;if(h&&(b=cS(b,"y",""),-1===rS(b,"g")&&(b+="g"),I=aS(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==iS(d,l.lastIndex-1))&&(p="(?: "+p+")",I=" "+I,Z++),n=new RegExp("^(?:"+p+")",b)),uS&&(n=new RegExp("^"+p+"$(?!\\s)",b)),oS&&(i=l.lastIndex),r=jC(eS,h?n:l,I),h?r?(r.input=aS(r.input,Z),r[0]=aS(r[0],Z),r.index=l.lastIndex,l.lastIndex+=r[0].length):l.lastIndex=0:oS&&r&&(l.lastIndex=l.global?r.index+r[0].length:i),uS&&r&&r.length>1&&jC(tS,r[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(r[c]=void 0)})),r&&m)for(r.groups=a=OC(null),c=0;c<m.length;c++)a[(o=m[c])[0]]=r[o[1]];return r});var dS=nS;fr({target:"RegExp",proto:!0,forced:/./.exec!==dS},{exec:dS});var sS=Zn.exports,mS=_e,hS=function(t,e,n){return n.get&&sS(n.get,e,{getter:!0}),n.set&&sS(n.set,e,{setter:!0}),mS.f(t,e,n)},bS=N,pS=hS,ZS=wv,IS=K,yS=RegExp.prototype;bS&&IS((function(){return"sy"!==Object.getOwnPropertyDescriptor(yS,"flags").get.call({dotAll:!0,sticky:!0})}))&&pS(yS,"flags",{configurable:!0,get:ZS});var gS=Y,XS=N,GS=_v.MISSED_STICKY,fS=q,VS=hS,WS=ei.get,vS=RegExp.prototype,CS=gS.TypeError;XS&&GS&&VS(vS,"sticky",{configurable:!0,get:function(){if(this!==vS){if("RegExp"===fS(this))return!!WS(this).sticky;throw CS("Incompatible receiver, RegExp required")}}});var SS,YS,RS=fr,KS=Y,NS=H,LS=E,JS=dt,xS=mt,HS=(SS=!1,(YS=/[ac]/).exec=function(){return SS=!0,/./.exec.apply(this,arguments)},!0===YS.test("abc")&&SS),kS=KS.Error,US=LS(/./.test);RS({target:"RegExp",proto:!0,forced:!HS},{test:function(t){var e=this.exec;if(!JS(e))return US(this,t);var n=NS(e,this,t);if(null!==n&&!xS(n))throw new kS("RegExp exec method returned something other than an Object or null");return!!n}});var TS=fn.PROPER,wS=yi,FS=rn,AS=Hr,BS=K,zS=Mv,jS=RegExp.prototype.toString,MS=BS((function(){return"/a/b"!=jS.call({source:"a",flags:"b"})})),QS=TS&&"toString"!=jS.name;(MS||QS)&&wS(RegExp.prototype,"toString",(function(){var t=FS(this);return"/"+AS(t.source)+"/"+AS(zS(t))}),{unsafe:!0}),lZ("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),GZ);var PS=E,ES=Wi,DS=Hr,OS=at,_S=PS("".charAt),qS=PS("".charCodeAt),$S=PS("".slice),tY=function(t){return function(e,n){var i,r,c=DS(OS(e)),a=ES(n),o=c.length;return a<0||a>=o?t?"":void 0:(i=qS(c,a))<55296||i>56319||a+1===o||(r=qS(c,a+1))<56320||r>57343?t?_S(c,a):i:t?$S(c,a,a+2):r-56320+(i-55296<<10)+65536}},eY={codeAt:tY(!1),charAt:tY(!0)},nY=eY.codeAt;fr({target:"String",proto:!0},{codePointAt:function(t){return nY(this,t)}});var iY,rY=Uv,cY=Y.TypeError,aY=function(t){if(rY(t))throw cY("The method doesn't accept regular expressions");return t},oY=Ve("match"),lY=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[oY]=!1,"/./"[t](e)}catch(t){}}return!1},uY=fr,dY=E,sY=R.f,mY=Ni,hY=Hr,bY=aY,pY=at,ZY=lY,IY=dY("".endsWith),yY=dY("".slice),gY=Math.min,XY=ZY("endsWith");uY({target:"String",proto:!0,forced:!!(XY||(iY=sY(String.prototype,"endsWith"),!iY||iY.writable))&&!XY},{endsWith:function(t){var e=hY(pY(this));bY(t);var n=arguments.length>1?arguments[1]:void 0,i=e.length,r=void 0===n?i:gY(mY(n),i),c=hY(t);return IY?IY(e,c,r):yY(e,r-c.length,r)===c}});var GY=fr,fY=E,VY=Yi,WY=Y.RangeError,vY=String.fromCharCode,CY=String.fromCodePoint,SY=fY([].join);GY({target:"String",stat:!0,arity:1,forced:!!CY&&1!=CY.length},{fromCodePoint:function(t){for(var e,n=[],i=arguments.length,r=0;i>r;){if(e=+arguments[r++],VY(e,1114111)!==e)throw WY(e+" is not a valid code point");n[r]=e<65536?vY(e):vY(55296+((e-=65536)>>10),e%1024+56320)}return SY(n,"")}});var YY=fr,RY=aY,KY=at,NY=Hr,LY=lY,JY=E("".indexOf);YY({target:"String",proto:!0,forced:!LY("includes")},{includes:function(t){return!!~JY(NY(KY(this)),NY(RY(t)),arguments.length>1?arguments[1]:void 0)}});var xY=eY.charAt,HY=Hr,kY=ei,UY=Ts,TY=kY.set,wY=kY.getterFor("String Iterator");UY(String,"String",(function(t){TY(this,{type:"String Iterator",string:HY(t),index:0})}),(function(){var t,e=wY(this),n=e.string,i=e.index;return i>=n.length?{value:void 0,done:!0}:(t=xY(n,i),e.index+=t.length,{value:t,done:!1})}));var FY=E,AY=yi,BY=dS,zY=K,jY=Ve,MY=pn,QY=jY("species"),PY=RegExp.prototype,EY=function(t,e,n,i){var r=jY(t),c=!zY((function(){var e={};return e[r]=function(){return 7},7!=""[t](e)})),a=c&&!zY((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[QY]=function(){return n},n.flags="",n[r]=/./[r]),n.exec=function(){return e=!0,null},n[r](""),!e}));if(!c||!a||n){var o=FY(/./[r]),l=e(r,""[t],(function(t,e,n,i,r){var a=FY(t),l=e.exec;return l===BY||l===PY.exec?c&&!r?{done:!0,value:o(e,n,i)}:{done:!0,value:a(n,e,i)}:{done:!1}}));AY(String.prototype,t,l[0]),AY(PY,r,l[1])}i&&MY(PY[r],"sham",!0)},DY=eY.charAt,OY=function(t,e,n){return e+(n?DY(t,e).length:1)},_Y=H,qY=rn,$Y=dt,tR=q,eR=dS,nR=Y.TypeError,iR=function(t,e){var n=t.exec;if($Y(n)){var i=_Y(n,t,e);return null!==i&&qY(i),i}if("RegExp"===tR(t))return _Y(eR,t,e);throw nR("RegExp#exec called on incompatible receiver")},rR=H,cR=rn,aR=Ni,oR=Hr,lR=at,uR=zt,dR=OY,sR=iR;EY("match",(function(t,e,n){return[function(e){var n=lR(this),i=null==e?void 0:uR(e,t);return i?rR(i,e,n):new RegExp(e)[t](oR(n))},function(t){var i=cR(this),r=oR(t),c=n(e,i,r);if(c.done)return c.value;if(!i.global)return sR(i,r);var a=i.unicode;i.lastIndex=0;for(var o,l=[],u=0;null!==(o=sR(i,r));){var d=oR(o[0]);l[u]=d,""===d&&(i.lastIndex=dR(r,aR(i.lastIndex),a)),u++}return 0===u?null:l}]}));var mR=fr,hR=Y,bR=H,pR=E,ZR=ms,IR=at,yR=Ni,gR=Hr,XR=rn,GR=Uv,fR=Mv,VR=zt,WR=yi,vR=K,CR=bG,SR=OY,YR=iR,RR=ei,KR=Ve("matchAll"),NR=RR.set,LR=RR.getterFor("RegExp String Iterator"),JR=RegExp.prototype,xR=hR.TypeError,HR=pR("".indexOf),kR=pR("".matchAll),UR=!!kR&&!vR((function(){kR("a",/./)})),TR=ZR((function(t,e,n,i){NR(this,{type:"RegExp String Iterator",regexp:t,string:e,global:n,unicode:i,done:!1})}),"RegExp String",(function(){var t=LR(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,i=YR(e,n);return null===i?{value:void 0,done:t.done=!0}:t.global?(""===gR(i[0])&&(e.lastIndex=SR(n,yR(e.lastIndex),t.unicode)),{value:i,done:!1}):(t.done=!0,{value:i,done:!1})})),wR=function(t){var e,n,i,r=XR(this),c=gR(t),a=CR(r,RegExp),o=gR(fR(r));return e=new a(a===RegExp?r.source:r,o),n=!!~HR(o,"g"),i=!!~HR(o,"u"),e.lastIndex=yR(r.lastIndex),new TR(e,c,n,i)};mR({target:"String",proto:!0,forced:UR},{matchAll:function(t){var e,n,i,r=IR(this);if(null!=t){if(GR(t)&&(e=gR(IR(fR(t))),!~HR(e,"g")))throw xR("`.matchAll` does not allow non-global regexes");if(UR)return kR(r,t);if(i=VR(t,KR))return bR(i,t,r)}else if(UR)return kR(r,t);return n=gR(r),new RegExp(t,"g")[KR](n)}}),KR in JR||WR(JR,KR,wR);var FR=E,AR=Ni,BR=Hr,zR=at,jR=FR(My),MR=FR("".slice),QR=Math.ceil,PR=function(t){return function(e,n,i){var r,c,a=BR(zR(e)),o=AR(n),l=a.length,u=void 0===i?" ":BR(i);return o<=l||""==u?a:((c=jR(u,QR((r=o-l)/u.length))).length>r&&(c=MR(c,0,r)),t?a+c:c+a)}},ER={start:PR(!1),end:PR(!0)},DR=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(yt),OR=ER.end;fr({target:"String",proto:!0,forced:DR},{padEnd:function(t){return OR(this,t,arguments.length>1?arguments[1]:void 0)}});var _R=ER.start;fr({target:"String",proto:!0,forced:DR},{padStart:function(t){return _R(this,t,arguments.length>1?arguments[1]:void 0)}});var qR=fr,$R=E,tK=ut,eK=re,nK=Hr,iK=Ji,rK=$R([].push),cK=$R([].join);qR({target:"String",stat:!0},{raw:function(t){for(var e=tK(eK(t).raw),n=iK(e),i=arguments.length,r=[],c=0;n>c;){if(rK(r,nK(e[c++])),c===n)return cK(r,"");c<i&&rK(r,nK(arguments[c]))}}}),fr({target:"String",proto:!0},{repeat:My});var aK=E,oK=re,lK=Math.floor,uK=aK("".charAt),dK=aK("".replace),sK=aK("".slice),mK=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,hK=/\$([$&'`]|\d{1,2})/g,bK=Mo,pK=H,ZK=E,IK=EY,yK=K,gK=rn,XK=dt,GK=Wi,fK=Ni,VK=Hr,WK=at,vK=OY,CK=zt,SK=function(t,e,n,i,r,c){var a=n+t.length,o=i.length,l=hK;return void 0!==r&&(r=oK(r),l=mK),dK(c,l,(function(c,l){var u;switch(uK(l,0)){case"$":return"$";case"&":return t;case"`":return sK(e,0,n);case"'":return sK(e,a);case"<":u=r[sK(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>o){var s=lK(d/10);return 0===s?c:s<=o?void 0===i[s-1]?uK(l,1):i[s-1]+uK(l,1):c}u=i[d-1]}return void 0===u?"":u}))},YK=iR,RK=Ve("replace"),KK=Math.max,NK=Math.min,LK=ZK([].concat),JK=ZK([].push),xK=ZK("".indexOf),HK=ZK("".slice),kK="$0"==="a".replace(/./,"$0"),UK=!!/./[RK]&&""===/./[RK]("a","$0"),TK=!yK((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));IK("replace",(function(t,e,n){var i=UK?"$":"$0";return[function(t,n){var i=WK(this),r=null==t?void 0:CK(t,RK);return r?pK(r,t,i,n):pK(e,VK(i),t,n)},function(t,r){var c=gK(this),a=VK(t);if("string"==typeof r&&-1===xK(r,i)&&-1===xK(r,"$<")){var o=n(e,c,a,r);if(o.done)return o.value}var l=XK(r);l||(r=VK(r));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=YK(c,a);if(null===m)break;if(JK(s,m),!u)break;""===VK(m[0])&&(c.lastIndex=vK(a,fK(c.lastIndex),d))}for(var h,b="",p=0,Z=0;Z<s.length;Z++){for(var I=VK((m=s[Z])[0]),y=KK(NK(GK(m.index),a.length),0),g=[],X=1;X<m.length;X++)JK(g,void 0===(h=m[X])?h:String(h));var G=m.groups;if(l){var f=LK([I],g,y,a);void 0!==G&&JK(f,G);var V=VK(bK(r,void 0,f))}else V=SK(I,a,y,g,G,r);y>=p&&(b+=HK(a,p,y)+V,p=y+I.length)}return b+HK(a,p)}]}),!TK||!kK||UK);var wK=H,FK=rn,AK=at,BK=sX,zK=Hr,jK=zt,MK=iR;EY("search",(function(t,e,n){return[function(e){var n=AK(this),i=null==e?void 0:jK(e,t);return i?wK(i,e,n):new RegExp(e)[t](zK(n))},function(t){var i=FK(this),r=zK(t),c=n(e,i,r);if(c.done)return c.value;var a=i.lastIndex;BK(a,0)||(i.lastIndex=0);var o=MK(i,r);return BK(i.lastIndex,a)||(i.lastIndex=a),null===o?-1:o.index}]}));var QK=Mo,PK=H,EK=E,DK=EY,OK=Uv,_K=rn,qK=at,$K=bG,tN=OY,eN=Ni,nN=Hr,iN=zt,rN=Zc,cN=iR,aN=dS,oN=K,lN=_v.UNSUPPORTED_Y,uN=Math.min,dN=[].push,sN=EK(/./.exec),mN=EK(dN),hN=EK("".slice),bN=!oN((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));DK("split",(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=nN(qK(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===t)return[i];if(!OK(t))return PK(e,i,t,r);for(var c,a,o,l=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,s=new RegExp(t.source,u+"g");(c=PK(aN,s,i))&&!((a=s.lastIndex)>d&&(mN(l,hN(i,d,c.index)),c.length>1&&c.index<i.length&&QK(dN,l,rN(c,1)),o=c[0].length,d=a,l.length>=r));)s.lastIndex===c.index&&s.lastIndex++;return d===i.length?!o&&sN(s,"")||mN(l,""):mN(l,hN(i,d)),l.length>r?rN(l,0,r):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:PK(e,this,t,n)}:e,[function(e,n){var r=qK(this),c=null==e?void 0:iN(e,t);return c?PK(c,e,r,n):PK(i,nN(r),e,n)},function(t,r){var c=_K(this),a=nN(t),o=n(i,c,a,r,i!==e);if(o.done)return o.value;var l=$K(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(lN?"g":"y"),s=new l(lN?"^(?:"+c.source+")":c,d),m=void 0===r?4294967295:r>>>0;if(0===m)return[];if(0===a.length)return null===cN(s,a)?[a]:[];for(var h=0,b=0,p=[];b<a.length;){s.lastIndex=lN?0:b;var Z,I=cN(s,lN?hN(a,b):a);if(null===I||(Z=uN(eN(s.lastIndex+(lN?b:0)),a.length))===h)b=tN(a,b,u);else{if(mN(p,hN(a,h,b)),p.length===m)return p;for(var y=1;y<=I.length-1;y++)if(mN(p,I[y]),p.length===m)return p;b=h=Z}}return mN(p,hN(a,h)),p}]}),!bN,lN);var pN=fr,ZN=E,IN=R.f,yN=Ni,gN=Hr,XN=aY,GN=at,fN=lY,VN=ZN("".startsWith),WN=ZN("".slice),vN=Math.min,CN=fN("startsWith"),SN=!CN&&!!function(){var t=IN(String.prototype,"startsWith");return t&&!t.writable}();pN({target:"String",proto:!0,forced:!SN&&!CN},{startsWith:function(t){var e=gN(GN(this));XN(t);var n=yN(vN(arguments.length>1?arguments[1]:void 0,e.length)),i=gN(t);return VN?VN(e,i,n):WN(e,n,n+i.length)===i}});var YN=fn.PROPER,RN=K,KN=NI,NN=function(t){return RN((function(){return!!KN[t]()||"​…᠎"!=="​…᠎"[t]()||YN&&KN[t].name!==t}))},LN=wI.trim;fr({target:"String",proto:!0,forced:NN("trim")},{trim:function(){return LN(this)}});var JN=wI.end,xN=NN("trimEnd")?function(){return JN(this)}:"".trimEnd;fr({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==xN},{trimRight:xN});fr({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==xN},{trimEnd:xN});var HN=wI.start,kN=NN("trimStart")?function(){return HN(this)}:"".trimStart;fr({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==kN},{trimLeft:kN});fr({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==kN},{trimStart:kN});var UN=at,TN=Hr,wN=/"/g,FN=E("".replace),AN=function(t,e,n,i){var r=TN(UN(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+FN(TN(i),wN,"&quot;")+'"'),c+">"+r+"</"+e+">"},BN=K,zN=function(t){return BN((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))},jN=AN;fr({target:"String",proto:!0,forced:zN("anchor")},{anchor:function(t){return jN(this,"a","name",t)}});var MN=AN;fr({target:"String",proto:!0,forced:zN("big")},{big:function(){return MN(this,"big","","")}});var QN=AN;fr({target:"String",proto:!0,forced:zN("blink")},{blink:function(){return QN(this,"blink","","")}});var PN=AN;fr({target:"String",proto:!0,forced:zN("bold")},{bold:function(){return PN(this,"b","","")}});var EN=AN;fr({target:"String",proto:!0,forced:zN("fixed")},{fixed:function(){return EN(this,"tt","","")}});var DN=AN;fr({target:"String",proto:!0,forced:zN("fontcolor")},{fontcolor:function(t){return DN(this,"font","color",t)}});var ON=AN;fr({target:"String",proto:!0,forced:zN("fontsize")},{fontsize:function(t){return ON(this,"font","size",t)}});var _N=AN;fr({target:"String",proto:!0,forced:zN("italics")},{italics:function(){return _N(this,"i","","")}});var qN=AN;fr({target:"String",proto:!0,forced:zN("link")},{link:function(t){return qN(this,"a","href",t)}});var $N=AN;fr({target:"String",proto:!0,forced:zN("small")},{small:function(){return $N(this,"small","","")}});var tL=AN;fr({target:"String",proto:!0,forced:zN("strike")},{strike:function(){return tL(this,"strike","","")}});var eL=AN;fr({target:"String",proto:!0,forced:zN("sub")},{sub:function(){return eL(this,"sub","","")}});var nL=AN;fr({target:"String",proto:!0,forced:zN("sup")},{sup:function(){return nL(this,"sup","","")}});var iL,rL,cL,aL={exports:{}},oL=gh,lL=N,uL=Y,dL=dt,sL=mt,mL=oe,hL=Lr,bL=Ut,pL=pn,ZL=yi,IL=_e.f,yL=It,gL=_d,XL=Gs,GL=Ve,fL=me,VL=uL.Int8Array,WL=VL&&VL.prototype,vL=uL.Uint8ClampedArray,CL=vL&&vL.prototype,SL=VL&&gL(VL),YL=WL&&gL(WL),RL=Object.prototype,KL=uL.TypeError,NL=GL("toStringTag"),LL=fL("TYPED_ARRAY_TAG"),JL=fL("TYPED_ARRAY_CONSTRUCTOR"),xL=oL&&!!XL&&"Opera"!==hL(uL.opera),HL=!1,kL={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},UL={BigInt64Array:8,BigUint64Array:8},TL=function(t){if(!sL(t))return!1;var e=hL(t);return mL(kL,e)||mL(UL,e)};for(iL in kL)(cL=(rL=uL[iL])&&rL.prototype)?pL(cL,JL,rL):xL=!1;for(iL in UL)(cL=(rL=uL[iL])&&rL.prototype)&&pL(cL,JL,rL);if((!xL||!dL(SL)||SL===Function.prototype)&&(SL=function(){throw KL("Incorrect invocation")},xL))for(iL in kL)uL[iL]&&XL(uL[iL],SL);if((!xL||!YL||YL===RL)&&(YL=SL.prototype,xL))for(iL in kL)uL[iL]&&XL(uL[iL].prototype,YL);if(xL&&gL(CL)!==YL&&XL(CL,YL),lL&&!mL(YL,NL))for(iL in HL=!0,IL(YL,NL,{get:function(){return sL(this)?this[LL]:void 0}}),kL)uL[iL]&&pL(uL[iL],LL,iL);var wL={NATIVE_ARRAY_BUFFER_VIEWS:xL,TYPED_ARRAY_CONSTRUCTOR:JL,TYPED_ARRAY_TAG:HL&&LL,aTypedArray:function(t){if(TL(t))return t;throw KL("Target is not a typed array")},aTypedArrayConstructor:function(t){if(dL(t)&&(!XL||yL(SL,t)))return t;throw KL(bL(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,i){if(lL){if(n)for(var r in kL){var c=uL[r];if(c&&mL(c.prototype,t))try{delete c.prototype[t]}catch(n){try{c.prototype[t]=e}catch(t){}}}YL[t]&&!n||ZL(YL,t,n?e:xL&&WL[t]||e,i)}},exportTypedArrayStaticMethod:function(t,e,n){var i,r;if(lL){if(XL){if(n)for(i in kL)if((r=uL[i])&&mL(r,t))try{delete r[t]}catch(t){}if(SL[t]&&!n)return;try{return ZL(SL,t,n?e:xL&&SL[t]||e)}catch(t){}}for(i in kL)!(r=uL[i])||r[t]&&!n||ZL(r,t,e)}},isView:function(t){if(!sL(t))return!1;var e=hL(t);return"DataView"===e||mL(kL,e)||mL(UL,e)},isTypedArray:TL,TypedArray:SL,TypedArrayPrototype:YL},FL=Y,AL=K,BL=Hd,zL=wL.NATIVE_ARRAY_BUFFER_VIEWS,jL=FL.ArrayBuffer,ML=FL.Int8Array,QL=!zL||!AL((function(){ML(1)}))||!AL((function(){new ML(-1)}))||!BL((function(t){new ML,new ML(null),new ML(1.5),new ML(t)}),!0)||AL((function(){return 1!==new ML(new jL(2),1,void 0).length})),PL=Wi,EL=Y.RangeError,DL=function(t){var e=PL(t);if(e<0)throw EL("The argument can't be less than 0");return e},OL=Y.RangeError,_L=function(t,e){var n=DL(t);if(n%e)throw OL("Wrong offset");return n},qL=Ac,$L=H,tJ=dG,eJ=re,nJ=Ji,iJ=yd,rJ=sd,cJ=ad,aJ=wL.aTypedArrayConstructor,oJ=function(t){var e,n,i,r,c,a,o=tJ(this),l=eJ(t),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=rJ(l);if(m&&!cJ(m))for(a=(c=iJ(l,m)).next,l=[];!(r=$L(a,c)).done;)l.push(r.value);for(s&&u>2&&(d=qL(d,arguments[2])),n=nJ(l),i=new(aJ(o))(n),e=0;n>e;e++)i[e]=s?d(l[e],e):l[e];return i},lJ=fr,uJ=Y,dJ=H,sJ=N,mJ=QL,hJ=wL,bJ=Jb,pJ=Wh,ZJ=B,IJ=pn,yJ=Zy,gJ=Ni,XJ=Yh,GJ=_L,fJ=He,VJ=oe,WJ=Lr,vJ=mt,CJ=Ht,SJ=cc,YJ=It,RJ=Gs,KJ=gi.f,NJ=oJ,LJ=ga.forEach,JJ=ah,xJ=_e,HJ=R,kJ=Pp,UJ=ei.get,TJ=ei.set,wJ=xJ.f,FJ=HJ.f,AJ=Math.round,BJ=uJ.RangeError,zJ=bJ.ArrayBuffer,jJ=zJ.prototype,MJ=bJ.DataView,QJ=hJ.NATIVE_ARRAY_BUFFER_VIEWS,PJ=hJ.TYPED_ARRAY_CONSTRUCTOR,EJ=hJ.TYPED_ARRAY_TAG,DJ=hJ.TypedArray,OJ=hJ.TypedArrayPrototype,_J=hJ.aTypedArrayConstructor,qJ=hJ.isTypedArray,$J=function(t,e){_J(t);for(var n=0,i=e.length,r=new t(i);i>n;)r[n]=e[n++];return r},tx=function(t,e){wJ(t,e,{get:function(){return UJ(this)[e]}})},ex=function(t){var e;return YJ(jJ,t)||"ArrayBuffer"==(e=WJ(t))||"SharedArrayBuffer"==e},nx=function(t,e){return qJ(t)&&!CJ(e)&&e in t&&yJ(+e)&&e>=0},ix=function(t,e){return e=fJ(e),nx(t,e)?ZJ(2,t[e]):FJ(t,e)},rx=function(t,e,n){return e=fJ(e),!(nx(t,e)&&vJ(n)&&VJ(n,"value"))||VJ(n,"get")||VJ(n,"set")||n.configurable||VJ(n,"writable")&&!n.writable||VJ(n,"enumerable")&&!n.enumerable?wJ(t,e,n):(t[e]=n.value,t)};sJ?(QJ||(HJ.f=ix,xJ.f=rx,tx(OJ,"buffer"),tx(OJ,"byteOffset"),tx(OJ,"byteLength"),tx(OJ,"length")),lJ({target:"Object",stat:!0,forced:!QJ},{getOwnPropertyDescriptor:ix,defineProperty:rx}),aL.exports=function(t,e,n){var i=t.match(/\d+$/)[0]/8,r=t+(n?"Clamped":"")+"Array",c="get"+t,a="set"+t,o=uJ[r],l=o,u=l&&l.prototype,d={},s=function(t,e){wJ(t,e,{get:function(){return function(t,e){var n=UJ(t);return n.view[c](e*i+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,r){var c=UJ(t);n&&(r=(r=AJ(r))<0?0:r>255?255:255&r),c.view[a](e*i+c.byteOffset,r,!0)}(this,e,t)},enumerable:!0})};QJ?mJ&&(l=e((function(t,e,n,r){return pJ(t,u),kJ(vJ(e)?ex(e)?void 0!==r?new o(e,GJ(n,i),r):void 0!==n?new o(e,GJ(n,i)):new o(e):qJ(e)?$J(l,e):dJ(NJ,l,e):new o(XJ(e)),t,l)})),RJ&&RJ(l,DJ),LJ(KJ(o),(function(t){t in l||IJ(l,t,o[t])})),l.prototype=u):(l=e((function(t,e,n,r){pJ(t,u);var c,a,o,d=0,m=0;if(vJ(e)){if(!ex(e))return qJ(e)?$J(l,e):dJ(NJ,l,e);c=e,m=GJ(n,i);var h=e.byteLength;if(void 0===r){if(h%i)throw BJ("Wrong length");if((a=h-m)<0)throw BJ("Wrong length")}else if((a=gJ(r)*i)+m>h)throw BJ("Wrong length");o=a/i}else o=XJ(e),c=new zJ(a=o*i);for(TJ(t,{buffer:c,byteOffset:m,byteLength:a,length:o,view:new MJ(c)});d<o;)s(t,d++)})),RJ&&RJ(l,DJ),u=l.prototype=SJ(OJ)),u.constructor!==l&&IJ(u,"constructor",l),IJ(u,PJ,l),EJ&&IJ(u,EJ,r);var m=l!=o;d[r]=l,lJ({global:!0,constructor:!0,forced:m,sham:!QJ},d),"BYTES_PER_ELEMENT"in l||IJ(l,"BYTES_PER_ELEMENT",i),"BYTES_PER_ELEMENT"in u||IJ(u,"BYTES_PER_ELEMENT",i),JJ(r)}):aL.exports=function(){},(0,aL.exports)("Float32",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Float64",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Int8",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Int16",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Int32",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}),!0),(0,aL.exports)("Uint16",(function(t){return function(e,n,i){return t(this,e,n,i)}})),(0,aL.exports)("Uint32",(function(t){return function(e,n,i){return t(this,e,n,i)}}));var cx=wL,ax=E(hu),ox=cx.aTypedArray;(0,cx.exportTypedArrayMethod)("copyWithin",(function(t,e){return ax(ox(this),t,e,arguments.length>2?arguments[2]:void 0)}));var lx=ga.every,ux=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("every",(function(t){return lx(ux(this),t,arguments.length>1?arguments[1]:void 0)}));var dx=H,sx=Wu,mx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("fill",(function(t){var e=arguments.length;return dx(sx,mx(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}));var hx=Ji,bx=bG,px=wL.TYPED_ARRAY_CONSTRUCTOR,Zx=wL.aTypedArrayConstructor,Ix=function(t){return Zx(bx(t,t[px]))},yx=function(t,e){for(var n=0,i=hx(e),r=new t(i);i>n;)r[n]=e[n++];return r},gx=Ix,Xx=ga.filter,Gx=function(t,e){return yx(gx(t),e)},fx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("filter",(function(t){var e=Xx(fx(this),t,arguments.length>1?arguments[1]:void 0);return Gx(this,e)}));var Vx=ga.find,Wx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("find",(function(t){return Vx(Wx(this),t,arguments.length>1?arguments[1]:void 0)}));var vx=ga.findIndex,Cx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("findIndex",(function(t){return vx(Cx(this),t,arguments.length>1?arguments[1]:void 0)}));var Sx=ga.forEach,Yx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("forEach",(function(t){Sx(Yx(this),t,arguments.length>1?arguments[1]:void 0)})),(0,wL.exportTypedArrayStaticMethod)("from",oJ,QL);var Rx=Ti.includes,Kx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("includes",(function(t){return Rx(Kx(this),t,arguments.length>1?arguments[1]:void 0)}));var Nx=Ti.indexOf,Lx=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("indexOf",(function(t){return Nx(Lx(this),t,arguments.length>1?arguments[1]:void 0)}));var Jx=Y,xx=K,Hx=E,kx=wL,Ux=Es,Tx=Ve("iterator"),wx=Jx.Uint8Array,Fx=Hx(Ux.values),Ax=Hx(Ux.keys),Bx=Hx(Ux.entries),zx=kx.aTypedArray,jx=kx.exportTypedArrayMethod,Mx=wx&&wx.prototype,Qx=!xx((function(){Mx[Tx].call([1])})),Px=!!Mx&&Mx.values&&Mx[Tx]===Mx.values&&"values"===Mx.values.name,Ex=function(){return Fx(zx(this))};jx("entries",(function(){return Bx(zx(this))}),Qx),jx("keys",(function(){return Ax(zx(this))}),Qx),jx("values",Ex,Qx||!Px,{name:"values"}),jx(Tx,Ex,Qx||!Px,{name:"values"});var Dx=wL.aTypedArray,Ox=wL.exportTypedArrayMethod,_x=E([].join);Ox("join",(function(t){return _x(Dx(this),t)}));var qx=Mo,$x=ut,tH=Wi,eH=Ji,nH=_s,iH=Math.min,rH=[].lastIndexOf,cH=!!rH&&1/[1].lastIndexOf(1,-0)<0,aH=nH("lastIndexOf"),oH=cH||!aH?function(t){if(cH)return qx(rH,this,arguments)||0;var e=$x(this),n=eH(e),i=n-1;for(arguments.length>1&&(i=iH(i,tH(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in e&&e[i]===t)return i||0;return-1}:rH,lH=Mo,uH=oH,dH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return lH(uH,dH(this),e>1?[t,arguments[1]]:[t])}));var sH=ga.map,mH=Ix,hH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("map",(function(t){return sH(hH(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(mH(t))(e)}))}));var bH=wL.aTypedArrayConstructor;(0,wL.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(bH(this))(e);e>t;)n[t]=arguments[t++];return n}),QL);var pH=At,ZH=re,IH=rt,yH=Ji,gH=Y.TypeError,XH=function(t){return function(e,n,i,r){pH(n);var c=ZH(e),a=IH(c),o=yH(c),l=t?o-1:0,u=t?-1:1;if(i<2)for(;;){if(l in a){r=a[l],l+=u;break}if(l+=u,t?l<0:o<=l)throw gH("Reduce of empty array with no initial value")}for(;t?l>=0:o>l;l+=u)l in a&&(r=n(r,a[l],l,c));return r}},GH={left:XH(!1),right:XH(!0)},fH=GH.left,VH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return fH(VH(this),t,e,e>1?arguments[1]:void 0)}));var WH=GH.right,vH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return WH(vH(this),t,e,e>1?arguments[1]:void 0)}));var CH=wL.aTypedArray,SH=wL.exportTypedArrayMethod,YH=Math.floor;SH("reverse",(function(){for(var t,e=this,n=CH(e).length,i=YH(n/2),r=0;r<i;)t=e[r],e[r++]=e[--n],e[n]=t;return e}));var RH=Y,KH=H,NH=wL,LH=Ji,JH=_L,xH=re,HH=K,kH=RH.RangeError,UH=RH.Int8Array,TH=UH&&UH.prototype,wH=TH&&TH.set,FH=NH.aTypedArray,AH=NH.exportTypedArrayMethod,BH=!HH((function(){var t=new Uint8ClampedArray(2);return KH(wH,t,{length:1,0:3},1),3!==t[1]})),zH=BH&&NH.NATIVE_ARRAY_BUFFER_VIEWS&&HH((function(){var t=new UH(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));AH("set",(function(t){FH(this);var e=JH(arguments.length>1?arguments[1]:void 0,1),n=xH(t);if(BH)return KH(wH,this,n,e);var i=this.length,r=LH(n),c=0;if(r+e>i)throw kH("Wrong length");for(;c<r;)this[e+c]=n[c++]}),!BH||zH);var jH=Ix,MH=Qo,QH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("slice",(function(t,e){for(var n=MH(QH(this),t,e),i=jH(this),r=0,c=n.length,a=new i(c);c>r;)a[r]=n[r++];return a}),K((function(){new Int8Array(1).slice()})));var PH=ga.some,EH=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("some",(function(t){return PH(EH(this),t,arguments.length>1?arguments[1]:void 0)}));var DH=E,OH=K,_H=At,qH=Km,$H=Lm,tk=Jm,ek=vt,nk=Hm,ik=wL.aTypedArray,rk=wL.exportTypedArrayMethod,ck=Y.Uint16Array,ak=ck&&DH(ck.prototype.sort),ok=!(!ak||OH((function(){ak(new ck(2),null)}))&&OH((function(){ak(new ck(2),{})}))),lk=!!ak&&!OH((function(){if(ek)return ek<74;if($H)return $H<67;if(tk)return!0;if(nk)return nk<602;var t,e,n=new ck(516),i=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,i[t]=t-2*e+3;for(ak(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==i[t])return!0}));rk("sort",(function(t){return void 0!==t&&_H(t),lk?ak(this,t):qH(ik(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!lk||ok);var uk=Ni,dk=Yi,sk=Ix,mk=wL.aTypedArray;(0,wL.exportTypedArrayMethod)("subarray",(function(t,e){var n=mk(this),i=n.length,r=dk(t,i);return new(sk(n))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,uk((void 0===e?i:dk(e,i))-r))}));var hk=Mo,bk=wL,pk=K,Zk=Qo,Ik=Y.Int8Array,yk=bk.aTypedArray,gk=bk.exportTypedArrayMethod,Xk=[].toLocaleString,Gk=!!Ik&&pk((function(){Xk.call(new Ik(1))}));gk("toLocaleString",(function(){return hk(Xk,Gk?Zk(yk(this)):yk(this),Zk(arguments))}),pk((function(){return[1,2].toLocaleString()!=new Ik([1,2]).toLocaleString()}))||!pk((function(){Ik.prototype.toLocaleString.call([1,2])})));var fk=wL.exportTypedArrayMethod,Vk=K,Wk=E,vk=Y.Uint8Array,Ck=vk&&vk.prototype||{},Sk=[].toString,Yk=Wk([].join);Vk((function(){Sk.call({})}))&&(Sk=function(){return Yk(this)});var Rk=Ck.toString!=Sk;fk("toString",Sk,Rk);var Kk=E,Nk=Gh,Lk=ap.exports.getWeakData,Jk=rn,xk=mt,Hk=Wh,kk=zp,Uk=oe,Tk=ei.set,wk=ei.getterFor,Fk=ga.find,Ak=ga.findIndex,Bk=Kk([].splice),zk=0,jk=function(t){return t.frozen||(t.frozen=new Mk)},Mk=function(){this.entries=[]},Qk=function(t,e){return Fk(t.entries,(function(t){return t[0]===e}))};Mk.prototype={get:function(t){var e=Qk(this,t);if(e)return e[1]},has:function(t){return!!Qk(this,t)},set:function(t,e){var n=Qk(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=Ak(this.entries,(function(e){return e[0]===t}));return~e&&Bk(this.entries,e,1),!!~e}};var Pk,Ek={getConstructor:function(t,e,n,i){var r=t((function(t,r){Hk(t,c),Tk(t,{type:e,id:zk++,frozen:void 0}),null!=r&&kk(r,t[i],{that:t,AS_ENTRIES:n})})),c=r.prototype,a=wk(e),o=function(t,e,n){var i=a(t),r=Lk(Jk(e),!0);return!0===r?jk(i).set(e,n):r[i.id]=n,t};return Nk(c,{delete:function(t){var e=a(this);if(!xk(t))return!1;var n=Lk(t);return!0===n?jk(e).delete(t):n&&Uk(n,e.id)&&delete n[e.id]},has:function(t){var e=a(this);if(!xk(t))return!1;var n=Lk(t);return!0===n?jk(e).has(t):n&&Uk(n,e.id)}}),Nk(c,n?{get:function(t){var e=a(this);if(xk(t)){var n=Lk(t);return!0===n?jk(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),r}},Dk=Y,Ok=E,_k=Gh,qk=ap.exports,$k=lZ,tU=Ek,eU=mt,nU=hp,iU=ei.enforce,rU=Jn,cU=!Dk.ActiveXObject&&"ActiveXObject"in Dk,aU=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},oU=$k("WeakMap",aU,tU);if(rU&&cU){Pk=tU.getConstructor(aU,"WeakMap",!0),qk.enable();var lU=oU.prototype,uU=Ok(lU.delete),dU=Ok(lU.has),sU=Ok(lU.get),mU=Ok(lU.set);_k(lU,{delete:function(t){if(eU(t)&&!nU(t)){var e=iU(this);return e.frozen||(e.frozen=new Pk),uU(this,t)||e.frozen.delete(t)}return uU(this,t)},has:function(t){if(eU(t)&&!nU(t)){var e=iU(this);return e.frozen||(e.frozen=new Pk),dU(this,t)||e.frozen.has(t)}return dU(this,t)},get:function(t){if(eU(t)&&!nU(t)){var e=iU(this);return e.frozen||(e.frozen=new Pk),dU(this,t)?sU(this,t):e.frozen.get(t)}return sU(this,t)},set:function(t,e){if(eU(t)&&!nU(t)){var n=iU(this);n.frozen||(n.frozen=new Pk),dU(this,t)?mU(this,t,e):n.frozen.set(t,e)}else mU(this,t,e);return this}})}lZ("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Ek);var hU={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},bU=we("span").classList,pU=bU&&bU.constructor&&bU.constructor.prototype,ZU=pU===Object.prototype?void 0:pU,IU=ga.forEach,yU=Y,gU=hU,XU=ZU,GU=_s("forEach")?[].forEach:function(t){return IU(this,t,arguments.length>1?arguments[1]:void 0)},fU=pn,VU=function(t){if(t&&t.forEach!==GU)try{fU(t,"forEach",GU)}catch(e){t.forEach=GU}};for(var WU in gU)gU[WU]&&VU(yU[WU]&&yU[WU].prototype);VU(XU);var vU=Y,CU=hU,SU=ZU,YU=Es,RU=pn,KU=Ve,NU=KU("iterator"),LU=KU("toStringTag"),JU=YU.values,xU=function(t,e){if(t){if(t[NU]!==JU)try{RU(t,NU,JU)}catch(e){t[NU]=JU}if(t[LU]||RU(t,LU,e),CU[e])for(var n in YU)if(t[n]!==YU[n])try{RU(t,n,YU[n])}catch(e){t[n]=YU[n]}}};for(var HU in CU)xU(vU[HU]&&vU[HU].prototype,HU);xU(SU,"DOMTokenList");var kU=_G.clear;fr({global:!0,bind:!0,enumerable:!0,forced:Y.clearImmediate!==kU},{clearImmediate:kU});var UU=_G.set;fr({global:!0,bind:!0,enumerable:!0,forced:Y.setImmediate!==UU},{setImmediate:UU});var TU=fr,wU=Zf,FU=At,AU=ZG,BU=aG,zU=Y.process;TU({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(t){AU(arguments.length,1),FU(t);var e=BU&&zU.domain;wU(e?e.bind(t):t)}});var jU=K,MU=Ve("iterator"),QU=!jU((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,i){e.delete("b"),n+=i+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[MU]||"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})),PU=E,EU=/[^\0-\u007E]/,DU=/[.\u3002\uFF0E\uFF61]/g,OU="Overflow: input needs wider integers to process",_U=Y.RangeError,qU=PU(DU.exec),$U=Math.floor,tT=String.fromCharCode,eT=PU("".charCodeAt),nT=PU([].join),iT=PU([].push),rT=PU("".replace),cT=PU("".split),aT=PU("".toLowerCase),oT=function(t){return t+22+75*(t<26)},lT=function(t,e,n){var i=0;for(t=n?$U(t/700):t>>1,t+=$U(t/e);t>455;)t=$U(t/35),i+=36;return $U(i+36*t/(t+38))},uT=function(t){var e=[];t=function(t){for(var e=[],n=0,i=t.length;n<i;){var r=eT(t,n++);if(r>=55296&&r<=56319&&n<i){var c=eT(t,n++);56320==(64512&c)?iT(e,((1023&r)<<10)+(1023&c)+65536):(iT(e,r),n--)}else iT(e,r)}return e}(t);var n,i,r=t.length,c=128,a=0,o=72;for(n=0;n<t.length;n++)(i=t[n])<128&&iT(e,tT(i));var l=e.length,u=l;for(l&&iT(e,"-");u<r;){var d=2147483647;for(n=0;n<t.length;n++)(i=t[n])>=c&&i<d&&(d=i);var s=u+1;if(d-c>$U((2147483647-a)/s))throw _U(OU);for(a+=(d-c)*s,c=d,n=0;n<t.length;n++){if((i=t[n])<c&&++a>2147483647)throw _U(OU);if(i==c){for(var m=a,h=36;;){var b=h<=o?1:h>=o+26?26:h-o;if(m<b)break;var p=m-b,Z=36-b;iT(e,tT(oT(b+p%Z))),m=$U(p/Z),h+=36}iT(e,tT(oT(m))),o=lT(a,s,u==l),a=0,u++}}a++,c++}return nT(e,"")},dT=fr,sT=Y,mT=H,hT=E,bT=N,pT=QU,ZT=yi,IT=Gh,yT=Uc,gT=ms,XT=ei,GT=Wh,fT=dt,VT=oe,WT=Ac,vT=Lr,CT=rn,ST=mt,YT=Hr,RT=cc,KT=B,NT=yd,LT=sd,JT=ZG,xT=Km,HT=Ve("iterator"),kT=XT.set,UT=XT.getterFor("URLSearchParams"),TT=XT.getterFor("URLSearchParamsIterator"),wT=Object.getOwnPropertyDescriptor,FT=function(t){if(!bT)return sT[t];var e=wT(sT,t);return e&&e.value},AT=FT("fetch"),BT=FT("Request"),zT=FT("Headers"),jT=BT&&BT.prototype,MT=zT&&zT.prototype,QT=sT.RegExp,PT=sT.TypeError,ET=sT.decodeURIComponent,DT=sT.encodeURIComponent,OT=hT("".charAt),_T=hT([].join),qT=hT([].push),$T=hT("".replace),tw=hT([].shift),ew=hT([].splice),nw=hT("".split),iw=hT("".slice),rw=/\+/g,cw=Array(4),aw=function(t){return cw[t-1]||(cw[t-1]=QT("((?:%[\\da-f]{2}){"+t+"})","gi"))},ow=function(t){try{return ET(t)}catch(e){return t}},lw=function(t){var e=$T(t,rw," "),n=4;try{return ET(e)}catch(t){for(;n;)e=$T(e,aw(n--),ow);return e}},uw=/[!'()~]|%20/g,dw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},sw=function(t){return dw[t]},mw=function(t){return $T(DT(t),uw,sw)},hw=gT((function(t,e){kT(this,{type:"URLSearchParamsIterator",iterator:NT(UT(t).entries),kind:e})}),"Iterator",(function(){var t=TT(this),e=t.kind,n=t.iterator.next(),i=n.value;return n.done||(n.value="keys"===e?i.key:"values"===e?i.value:[i.key,i.value]),n}),!0),bw=function(t){this.entries=[],this.url=null,void 0!==t&&(ST(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===OT(t,0)?iw(t,1):t:YT(t)))};bw.prototype={type:"URLSearchParams",bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,i,r,c,a,o,l=LT(t);if(l)for(n=(e=NT(t,l)).next;!(i=mT(n,e)).done;){if(c=(r=NT(CT(i.value))).next,(a=mT(c,r)).done||(o=mT(c,r)).done||!mT(c,r).done)throw PT("Expected sequence with length 2");qT(this.entries,{key:YT(a.value),value:YT(o.value)})}else for(var u in t)VT(t,u)&&qT(this.entries,{key:u,value:YT(t[u])})},parseQuery:function(t){if(t)for(var e,n,i=nw(t,"&"),r=0;r<i.length;)(e=i[r++]).length&&(n=nw(e,"="),qT(this.entries,{key:lw(tw(n)),value:lw(_T(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],i=0;i<e.length;)t=e[i++],qT(n,mw(t.key)+"="+mw(t.value));return _T(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var pw=function(){GT(this,Zw);var t=arguments.length>0?arguments[0]:void 0;kT(this,new bw(t))},Zw=pw.prototype;if(IT(Zw,{append:function(t,e){JT(arguments.length,2);var n=UT(this);qT(n.entries,{key:YT(t),value:YT(e)}),n.updateURL()},delete:function(t){JT(arguments.length,1);for(var e=UT(this),n=e.entries,i=YT(t),r=0;r<n.length;)n[r].key===i?ew(n,r,1):r++;e.updateURL()},get:function(t){JT(arguments.length,1);for(var e=UT(this).entries,n=YT(t),i=0;i<e.length;i++)if(e[i].key===n)return e[i].value;return null},getAll:function(t){JT(arguments.length,1);for(var e=UT(this).entries,n=YT(t),i=[],r=0;r<e.length;r++)e[r].key===n&&qT(i,e[r].value);return i},has:function(t){JT(arguments.length,1);for(var e=UT(this).entries,n=YT(t),i=0;i<e.length;)if(e[i++].key===n)return!0;return!1},set:function(t,e){JT(arguments.length,1);for(var n,i=UT(this),r=i.entries,c=!1,a=YT(t),o=YT(e),l=0;l<r.length;l++)(n=r[l]).key===a&&(c?ew(r,l--,1):(c=!0,n.value=o));c||qT(r,{key:a,value:o}),i.updateURL()},sort:function(){var t=UT(this);xT(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=UT(this).entries,i=WT(t,arguments.length>1?arguments[1]:void 0),r=0;r<n.length;)i((e=n[r++]).value,e.key,this)},keys:function(){return new hw(this,"keys")},values:function(){return new hw(this,"values")},entries:function(){return new hw(this,"entries")}},{enumerable:!0}),ZT(Zw,HT,Zw.entries,{name:"entries"}),ZT(Zw,"toString",(function(){return UT(this).serialize()}),{enumerable:!0}),yT(pw,"URLSearchParams"),dT({global:!0,constructor:!0,forced:!pT},{URLSearchParams:pw}),!pT&&fT(zT)){var Iw=hT(MT.has),yw=hT(MT.set),gw=function(t){if(ST(t)){var e,n=t.body;if("URLSearchParams"===vT(n))return e=t.headers?new zT(t.headers):new zT,Iw(e,"content-type")||yw(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),RT(t,{body:KT(0,YT(n)),headers:KT(0,e)})}return t};if(fT(AT)&&dT({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(t){return AT(t,arguments.length>1?gw(arguments[1]):{})}}),fT(BT)){var Xw=function(t){return GT(this,jT),new BT(t,arguments.length>1?gw(arguments[1]):{})};jT.constructor=Xw,Xw.prototype=jT,dT({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Xw})}}var Gw,fw=fr,Vw=N,Ww=QU,vw=Y,Cw=Ac,Sw=E,Yw=yi,Rw=hS,Kw=Wh,Nw=oe,Lw=Gg,Jw=Kd,xw=Zc,Hw=eY.codeAt,kw=function(t){var e,n,i=[],r=cT(rT(aT(t),DU,"."),".");for(e=0;e<r.length;e++)n=r[e],iT(i,qU(EU,n)?"xn--"+uT(n):n);return nT(i,".")},Uw=Hr,Tw=Uc,ww=ZG,Fw={URLSearchParams:pw,getState:UT},Aw=ei,Bw=Aw.set,zw=Aw.getterFor("URL"),jw=Fw.URLSearchParams,Mw=Fw.getState,Qw=vw.URL,Pw=vw.TypeError,Ew=vw.parseInt,Dw=Math.floor,Ow=Math.pow,_w=Sw("".charAt),qw=Sw(/./.exec),$w=Sw([].join),tF=Sw(1..toString),eF=Sw([].pop),nF=Sw([].push),iF=Sw("".replace),rF=Sw([].shift),cF=Sw("".split),aF=Sw("".slice),oF=Sw("".toLowerCase),lF=Sw([].unshift),uF=/[a-z]/i,dF=/[\d+-.a-z]/i,sF=/\d/,mF=/^0x/i,hF=/^[0-7]+$/,bF=/^\d+$/,pF=/^[\da-f]+$/i,ZF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,IF=/[\0\t\n\r #/:<>?@[\\\]^|]/,yF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,gF=/[\t\n\r]/g,XF=function(t){var e,n,i,r;if("number"==typeof t){for(e=[],n=0;n<4;n++)lF(e,t%256),t=Dw(t/256);return $w(e,".")}if("object"==a(t)){for(e="",i=function(t){for(var e=null,n=1,i=null,r=0,c=0;c<8;c++)0!==t[c]?(r>n&&(e=i,n=r),i=null,r=0):(null===i&&(i=c),++r);return r>n&&(e=i,n=r),e}(t),n=0;n<8;n++)r&&0===t[n]||(r&&(r=!1),i===n?(e+=n?":":"::",r=!0):(e+=tF(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},GF={},fF=Lw({},GF,{" ":1,'"':1,"<":1,">":1,"`":1}),VF=Lw({},fF,{"#":1,"?":1,"{":1,"}":1}),WF=Lw({},VF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),vF=function(t,e){var n=Hw(t,0);return n>32&&n<127&&!Nw(e,t)?t:encodeURIComponent(t)},CF={ftp:21,file:null,http:80,https:443,ws:80,wss:443},SF=function(t,e){var n;return 2==t.length&&qw(uF,_w(t,0))&&(":"==(n=_w(t,1))||!e&&"|"==n)},YF=function(t){var e;return t.length>1&&SF(aF(t,0,2))&&(2==t.length||"/"===(e=_w(t,2))||"\\"===e||"?"===e||"#"===e)},RF=function(t){return"."===t||"%2e"===oF(t)},KF={},NF={},LF={},JF={},xF={},HF={},kF={},UF={},TF={},wF={},FF={},AF={},BF={},zF={},jF={},MF={},QF={},PF={},EF={},DF={},OF={},_F=function t(e,n,i){var r,c,a,o=Uw(e);if(n){if(c=this.parse(o))throw Pw(c);this.searchParams=null}else{if(void 0!==i&&(r=new t(i,!0)),c=this.parse(o,null,r))throw Pw(c);(a=Mw(new jw)).bindURL(this),this.searchParams=a}};_F.prototype={type:"URL",parse:function(t,e,n){var i,r,c,a,o,l=this,u=e||KF,d=0,s="",m=!1,h=!1,b=!1;for(t=Uw(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=iF(t,yF,"")),t=iF(t,gF,""),i=Jw(t);d<=i.length;){switch(r=i[d],u){case KF:if(!r||!qw(uF,r)){if(e)return"Invalid scheme";u=LF;continue}s+=oF(r),u=NF;break;case NF:if(r&&(qw(dF,r)||"+"==r||"-"==r||"."==r))s+=oF(r);else{if(":"!=r){if(e)return"Invalid scheme";s="",u=LF,d=0;continue}if(e&&(l.isSpecial()!=Nw(CF,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,e)return void(l.isSpecial()&&CF[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=zF:l.isSpecial()&&n&&n.scheme==l.scheme?u=JF:l.isSpecial()?u=UF:"/"==i[d+1]?(u=xF,d++):(l.cannotBeABaseURL=!0,nF(l.path,""),u=EF)}break;case LF:if(!n||n.cannotBeABaseURL&&"#"!=r)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==r){l.scheme=n.scheme,l.path=xw(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=OF;break}u="file"==n.scheme?zF:HF;continue;case JF:if("/"!=r||"/"!=i[d+1]){u=HF;continue}u=TF,d++;break;case xF:if("/"==r){u=wF;break}u=PF;continue;case HF:if(l.scheme=n.scheme,r==Gw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.query=n.query;else if("/"==r||"\\"==r&&l.isSpecial())u=kF;else if("?"==r)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.query="",u=DF;else{if("#"!=r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.path.length--,u=PF;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=xw(n.path),l.query=n.query,l.fragment="",u=OF}break;case kF:if(!l.isSpecial()||"/"!=r&&"\\"!=r){if("/"!=r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=PF;continue}u=wF}else u=TF;break;case UF:if(u=TF,"/"!=r||"/"!=_w(s,d+1))continue;d++;break;case TF:if("/"!=r&&"\\"!=r){u=wF;continue}break;case wF:if("@"==r){m&&(s="%40"+s),m=!0,c=Jw(s);for(var p=0;p<c.length;p++){var Z=c[p];if(":"!=Z||b){var I=vF(Z,WF);b?l.password+=I:l.username+=I}else b=!0}s=""}else if(r==Gw||"/"==r||"?"==r||"#"==r||"\\"==r&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=Jw(s).length+1,s="",u=FF}else s+=r;break;case FF:case AF:if(e&&"file"==l.scheme){u=MF;continue}if(":"!=r||h){if(r==Gw||"/"==r||"?"==r||"#"==r||"\\"==r&&l.isSpecial()){if(l.isSpecial()&&""==s)return"Invalid host";if(e&&""==s&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(s))return a;if(s="",u=QF,e)return;continue}"["==r?h=!0:"]"==r&&(h=!1),s+=r}else{if(""==s)return"Invalid host";if(a=l.parseHost(s))return a;if(s="",u=BF,e==AF)return}break;case BF:if(!qw(sF,r)){if(r==Gw||"/"==r||"?"==r||"#"==r||"\\"==r&&l.isSpecial()||e){if(""!=s){var y=Ew(s,10);if(y>65535)return"Invalid port";l.port=l.isSpecial()&&y===CF[l.scheme]?null:y,s=""}if(e)return;u=QF;continue}return"Invalid port"}s+=r;break;case zF:if(l.scheme="file","/"==r||"\\"==r)u=jF;else{if(!n||"file"!=n.scheme){u=PF;continue}if(r==Gw)l.host=n.host,l.path=xw(n.path),l.query=n.query;else if("?"==r)l.host=n.host,l.path=xw(n.path),l.query="",u=DF;else{if("#"!=r){YF($w(xw(i,d),""))||(l.host=n.host,l.path=xw(n.path),l.shortenPath()),u=PF;continue}l.host=n.host,l.path=xw(n.path),l.query=n.query,l.fragment="",u=OF}}break;case jF:if("/"==r||"\\"==r){u=MF;break}n&&"file"==n.scheme&&!YF($w(xw(i,d),""))&&(SF(n.path[0],!0)?nF(l.path,n.path[0]):l.host=n.host),u=PF;continue;case MF:if(r==Gw||"/"==r||"\\"==r||"?"==r||"#"==r){if(!e&&SF(s))u=PF;else if(""==s){if(l.host="",e)return;u=QF}else{if(a=l.parseHost(s))return a;if("localhost"==l.host&&(l.host=""),e)return;s="",u=QF}continue}s+=r;break;case QF:if(l.isSpecial()){if(u=PF,"/"!=r&&"\\"!=r)continue}else if(e||"?"!=r)if(e||"#"!=r){if(r!=Gw&&(u=PF,"/"!=r))continue}else l.fragment="",u=OF;else l.query="",u=DF;break;case PF:if(r==Gw||"/"==r||"\\"==r&&l.isSpecial()||!e&&("?"==r||"#"==r)){if(".."===(o=oF(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==r||"\\"==r&&l.isSpecial()||nF(l.path,"")):RF(s)?"/"==r||"\\"==r&&l.isSpecial()||nF(l.path,""):("file"==l.scheme&&!l.path.length&&SF(s)&&(l.host&&(l.host=""),s=_w(s,0)+":"),nF(l.path,s)),s="","file"==l.scheme&&(r==Gw||"?"==r||"#"==r))for(;l.path.length>1&&""===l.path[0];)rF(l.path);"?"==r?(l.query="",u=DF):"#"==r&&(l.fragment="",u=OF)}else s+=vF(r,VF);break;case EF:"?"==r?(l.query="",u=DF):"#"==r?(l.fragment="",u=OF):r!=Gw&&(l.path[0]+=vF(r,GF));break;case DF:e||"#"!=r?r!=Gw&&("'"==r&&l.isSpecial()?l.query+="%27":l.query+="#"==r?"%23":vF(r,GF)):(l.fragment="",u=OF);break;case OF:r!=Gw&&(l.fragment+=vF(r,fF))}d++}},parseHost:function(t){var e,n,i;if("["==_w(t,0)){if("]"!=_w(t,t.length-1))return"Invalid host";if(e=function(t){var e,n,i,r,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return _w(t,s)};if(":"==m()){if(":"!=_w(t,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(e=n=0;n<4&&qw(pF,m());)e=16*e+Ew(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(i=0;m();){if(r=null,i>0){if(!("."==m()&&i<4))return;s++}if(!qw(sF,m()))return;for(;qw(sF,m());){if(c=Ew(m(),10),null===r)r=c;else{if(0==r)return;r=10*r+c}if(r>255)return;s++}l[u]=256*l[u]+r,2!=++i&&4!=i||u++}if(4!=i)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=e}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(a=u-d,u=7;0!=u&&a>0;)o=l[u],l[u--]=l[d+a-1],l[d+--a]=o;else if(8!=u)return;return l}(aF(t,1,-1)),!e)return"Invalid host";this.host=e}else if(this.isSpecial()){if(t=kw(t),qw(ZF,t))return"Invalid host";if(e=function(t){var e,n,i,r,c,a,o,l=cF(t,".");if(l.length&&""==l[l.length-1]&&l.length--,(e=l.length)>4)return t;for(n=[],i=0;i<e;i++){if(""==(r=l[i]))return t;if(c=10,r.length>1&&"0"==_w(r,0)&&(c=qw(mF,r)?16:8,r=aF(r,8==c?1:2)),""===r)a=0;else{if(!qw(10==c?bF:8==c?hF:pF,r))return t;a=Ew(r,c)}nF(n,a)}for(i=0;i<e;i++)if(a=n[i],i==e-1){if(a>=Ow(256,5-e))return null}else if(a>255)return null;for(o=eF(n),i=0;i<n.length;i++)o+=n[i]*Ow(256,3-i);return o}(t),null===e)return"Invalid host";this.host=e}else{if(qw(IF,t))return"Invalid host";for(e="",n=Jw(t),i=0;i<n.length;i++)e+=vF(n[i],GF);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return Nw(CF,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&SF(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,i=t.password,r=t.host,c=t.port,a=t.path,o=t.query,l=t.fragment,u=e+":";return null!==r?(u+="//",t.includesCredentials()&&(u+=n+(i?":"+i:"")+"@"),u+=XF(r),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?a[0]:a.length?"/"+$w(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(t){var e=this.parse(t);if(e)throw Pw(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new qF(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+XF(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(Uw(t)+":",KF)},getUsername:function(){return this.username},setUsername:function(t){var e=Jw(Uw(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=vF(e[n],WF)}},getPassword:function(){return this.password},setPassword:function(t){var e=Jw(Uw(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=vF(e[n],WF)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?XF(t):XF(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,FF)},getHostname:function(){var t=this.host;return null===t?"":XF(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,AF)},getPort:function(){var t=this.port;return null===t?"":Uw(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=Uw(t))?this.port=null:this.parse(t,BF))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+$w(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,QF))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=Uw(t))?this.query=null:("?"==_w(t,0)&&(t=aF(t,1)),this.query="",this.parse(t,DF)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=Uw(t))?("#"==_w(t,0)&&(t=aF(t,1)),this.fragment="",this.parse(t,OF)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var qF=function(t){var e=Kw(this,$F),n=ww(arguments.length,1)>1?arguments[1]:void 0,i=Bw(e,new _F(t,!1,n));Vw||(e.href=i.serialize(),e.origin=i.getOrigin(),e.protocol=i.getProtocol(),e.username=i.getUsername(),e.password=i.getPassword(),e.host=i.getHost(),e.hostname=i.getHostname(),e.port=i.getPort(),e.pathname=i.getPathname(),e.search=i.getSearch(),e.searchParams=i.getSearchParams(),e.hash=i.getHash())},$F=qF.prototype,tA=function(t,e){return{get:function(){return zw(this)[t]()},set:e&&function(t){return zw(this)[e](t)},configurable:!0,enumerable:!0}};if(Vw&&(Rw($F,"href",tA("serialize","setHref")),Rw($F,"origin",tA("getOrigin")),Rw($F,"protocol",tA("getProtocol","setProtocol")),Rw($F,"username",tA("getUsername","setUsername")),Rw($F,"password",tA("getPassword","setPassword")),Rw($F,"host",tA("getHost","setHost")),Rw($F,"hostname",tA("getHostname","setHostname")),Rw($F,"port",tA("getPort","setPort")),Rw($F,"pathname",tA("getPathname","setPathname")),Rw($F,"search",tA("getSearch","setSearch")),Rw($F,"searchParams",tA("getSearchParams")),Rw($F,"hash",tA("getHash","setHash"))),Yw($F,"toJSON",(function(){return zw(this).serialize()}),{enumerable:!0}),Yw($F,"toString",(function(){return zw(this).serialize()}),{enumerable:!0}),Qw){var eA=Qw.createObjectURL,nA=Qw.revokeObjectURL;eA&&Yw(qF,"createObjectURL",Cw(eA,Qw)),nA&&Yw(qF,"revokeObjectURL",Cw(nA,Qw))}Tw(qF,"URL"),fw({global:!0,constructor:!0,forced:!Ww,sham:!Vw},{URL:qF});var iA,rA=H;function cA(t,e,n,i){return new(n||(n=Promise))((function(r,c){function a(t){try{l(i.next(t))}catch(t){c(t)}}function o(t){try{l(i.throw(t))}catch(t){c(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}l((i=i.apply(t,e||[])).next())}))}
4
4
  /*! *****************************************************************************
5
5
  Copyright (c) Microsoft Corporation.
6
6
 
@@ -448,7 +448,7 @@ function(t){return aA(this,void 0,void 0,c().mark((function e(){return c().wrap(
448
448
  * @memberof AsgardeoAuthClient
449
449
  *
450
450
  * @preserve
451
- */},{key:"didSignOutFail",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),i=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&i}},{key:"clearUserSessionData",value:function(t){return aA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.clearUserSessionData(t);case 2:case"end":return e.stop()}}),e,this)})))}}]),t}();function xA(t,e,n){var i=void 0===e?null:e,r=function(t,e){var n=atob(t);if(e){for(var i=new Uint8Array(n.length),r=0,c=n.length;r<c;++r)i[r]=n.charCodeAt(r);return String.fromCharCode.apply(null,new Uint16Array(i.buffer))}return n}(t,void 0!==n&&n),c=r.indexOf("\n",10)+1,a=r.substring(c)+(i?"//# sourceMappingURL="+i:""),o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}var HA,kA,UA,TA,wA,FA,AA=(HA="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKCl7Ci8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi8Kcj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUsbj10Lmhhc093blByb3BlcnR5LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7dSh7fSwiIil9Y2F0Y2goZSl7dT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gYyhlLHQscixuKXt2YXIgYT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/dDpoLGk9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSksbz1uZXcgUyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybiBUKCl9Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPWsobyxyKTtpZihzKXtpZihzPT09bCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciB1PWYoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLHUuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixvKSxpfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Yzt2YXIgbD17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZCgpe312YXIgdj17fTt1KHYsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT1nJiZnKGcoRShbXSkpKTt5JiZ5IT09dCYmbi5jYWxsKHksaSkmJih2PXkpO3ZhciBtPWQucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gdyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gYihlLHQpe2Z1bmN0aW9uIHIoYSxpLG8scyl7dmFyIHU9ZihlW2FdLGUsaSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9mIGwmJm4uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2MudmFsdWU9ZSxvKGMpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxvLHMpfSkpfXModS5hcmcpfXZhciBhO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsYSl7cihlLG4sdCxhKX0pKX1yZXR1cm4gYT1hP2EudGhlbihpLGkpOmkoKX19ZnVuY3Rpb24gayhlLHQpe3ZhciByPWUuaXRlcmF0b3JbdC5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09dC5tZXRob2Qpe2lmKGUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLGsoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpKXJldHVybiBsO3QubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBsfXZhciBuPWYocixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09bi50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW4uYXJnLHQuZGVsZWdhdGU9bnVsbCxsO3ZhciBhPW4uYXJnO3JldHVybiBhP2EuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWEudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGwpOmE6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsbCl9ZnVuY3Rpb24geChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBfKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBTKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goeCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBFKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIHI9LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK3I8ZS5sZW5ndGg7KWlmKG4uY2FsbChlLHIpKXJldHVybiB0LnZhbHVlPWVbcl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBwLnByb3RvdHlwZT1kLHUobSwiY29uc3RydWN0b3IiLGQpLHUoZCwiY29uc3RydWN0b3IiLHApLHAuZGlzcGxheU5hbWU9dShkLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1wfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxkKTooZS5fX3Byb3RvX189ZCx1KGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtKSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSx3KGIucHJvdG90eXBlKSx1KGIucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPWIsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBiKGModCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sdyhtKSx1KG0scywiR2VuZXJhdG9yIiksdShtLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdShtLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUUsUy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmbi5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gcigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9bi5jYWxsKGksImNhdGNoTG9jIiksdT1uLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJnUpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxsKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGx9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksXyhyKSxsfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO18ocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpFKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxsfX0sZX1mdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe2EobyxuLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe2EobyxuLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZzKGUucHJvdG90eXBlLHQpLHImJnMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaChlLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGgoZSx0KX1mdW5jdGlvbiBwKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBkKGUsdCxyKXtyZXR1cm4gZD1wKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmaChhLHIucHJvdG90eXBlKSxhfSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB2KGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIHY9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIGQoZSxhcmd1bWVudHMsbCh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGgobixlKX0sdihlKX1mdW5jdGlvbiBnKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZyhlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PXAoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWwoZSk7aWYodCl7dmFyIGE9bCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geSh0aGlzLHIpfX1mdW5jdGlvbiB3KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8ayhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4geChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGsoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gayhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4geChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3goZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1rKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBTKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24gRShlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxpKXtmdW5jdGlvbiBvKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgVDshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFR8fChUPXt9KSk7dmFyIEE7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShBfHwoQT17fSkpO3ZhciBSLEM9InJlZnJlc2hfdG9rZW5fdGltZXIiLFA9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdLEQ9InNpZ25fb3V0X3VybCIsTz0ic2lnbl9vdXRfc3VjY2VzcyI7IWZ1bmN0aW9uKGUpe2UuSW5jbHVkZT0iaW5jbHVkZSIsZS5TYW1lT3JpZ2luPSJzYW1lLW9yaWdpbiIsZS5PbWl0PSJvbWl0In0oUnx8KFI9e30pKTt2YXIgST11KChmdW5jdGlvbiBlKHQscixuKXtvKHRoaXMsZSksdGhpcy5tZXNzYWdlPW4sdGhpcy5uYW1lPXIsdGhpcy5jb2RlPXQsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsKHRoaXMgaW5zdGFuY2VvZiBlP3RoaXMuY29uc3RydWN0b3I6dm9pZCAwKS5wcm90b3R5cGUpfSkpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsbnVsbCxbe2tleToiZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuYXNzaWduKHt9LGUpO251bGw9PXR8fGRlbGV0ZSB0LmlzcyxudWxsPT10fHxkZWxldGUgdC5hdWQsbnVsbD09dHx8ZGVsZXRlIHQuZXhwLG51bGw9PXR8fGRlbGV0ZSB0LmlhdCxudWxsPT10fHxkZWxldGUgdC5hY3IsbnVsbD09dHx8ZGVsZXRlIHQuYW1yLG51bGw9PXR8fGRlbGV0ZSB0LmF6cCxudWxsPT10fHxkZWxldGUgdC5hdXRoX3RpbWUsbnVsbD09dHx8ZGVsZXRlIHQubm9uY2UsbnVsbD09dHx8ZGVsZXRlIHQuY19oYXNoLG51bGw9PXR8fGRlbGV0ZSB0LmF0X2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQubmJmLG51bGw9PXR8fGRlbGV0ZSB0LmlzayxudWxsPT10fHxkZWxldGUgdC5zaWQ7dmFyIHI9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXcoZSwyKSxuPXRbMF0sYT10WzFdLGk9bi5zcGxpdCgiXyIpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMD09PXQ/ZTpbZVswXS50b1VwcGVyQ2FzZSgpXS5jb25jYXQoYihlLnNsaWNlKDEpKSkuam9pbigiIil9KSkuam9pbigiIik7cltpXT1hfSkpLHJ9fSx7a2V5OiJnZXRUb2tlblJlcXVlc3RIZWFkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifX19LHtrZXk6ImdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1wYXJzZUludChlLnNwbGl0KCIjIilbMV0pO3JldHVybiB0PyIiLmNvbmNhdCh0LCJfcmVxdWVzdF8iKS5jb25jYXQocik6InJlcXVlc3RfIi5jb25jYXQocil9fSx7a2V5OiJleHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4icGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KGUuc3BsaXQoInJlcXVlc3RfIilbMV0pKX19XSksZX0oKTtMLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkAiLHI9ZS5zdWIuc3BsaXQodCk7cmV0dXJuIHIubGVuZ3RoPjI/cltyLmxlbmd0aC0xXToiIn07dmFyIFUsSCxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciBhPXRoaXM7byh0aGlzLGUpLHRoaXMuX2RhdGFMYXllcj10LHRoaXMuX2NvbmZpZz1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YT1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fY3J5cHRvSGVscGVyPW59cmV0dXJuIHUoZSxbe2tleToicmVzb2x2ZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPXt9LHQubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gYT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKGEuZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhhLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7blt0XT0obnVsbD09YT92b2lkIDA6YS5lbmRwb2ludHMpP2EuZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQsbixhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKG49ZS5zZW50LGE9WyJhdXRob3JpemF0aW9uX2VuZHBvaW50IiwiZW5kX3Nlc3Npb25fZW5kcG9pbnQiLCJqd2tzX3VyaSIsImNoZWNrX3Nlc3Npb25faWZyYW1lIiwicmV2b2NhdGlvbl9lbmRwb2ludCIsInRva2VuX2VuZHBvaW50IiwiaXNzdWVyIiwidXNlcmluZm9fZW5kcG9pbnQiXSxuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpLmV2ZXJ5KChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTtyZXR1cm4gYS5pbmNsdWRlcyh0KX0pKSl7ZS5uZXh0PTc7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfSEVMUEVSLVJFRS1ORjAxIiwiTm8gcmVxdWlyZWQgZW5kcG9pbnRzLiIsIlJlcXVpcmVkIG9pZGMgZW5kcG9pbnRzIGFyZSBub3QgZGVmaW5lZCIpO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKG4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7dFtyXT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oe30sdCkpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQsbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdD17fSxlLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6aWYobj1lLnNlbnQsYT1uLmJhc2VVcmwpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0hFTFBFUl9SRUJPLU5GMDEiLCJCYXNlIFVSTCBub3QgZGVmaW5lZC4iLCJCYXNlIFVSTCBpcyBub3QgZGVmaW5lZCBpbiBBdXRoQ2xpZW50IGNvbmZpZy4iKTtjYXNlIDc6cmV0dXJuIG4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7dFtyXT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLGk9e2F1dGhvcml6YXRpb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi9hdXRob3JpemUiKSxlbmRfc2Vzc2lvbl9lbmRwb2ludDoiIi5jb25jYXQoYSkuY29uY2F0KCIvb2lkYy9sb2dvdXQiKSxpc3N1ZXI6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLGp3a3NfdXJpOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvandrcyIpLGNoZWNrX3Nlc3Npb25faWZyYW1lOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vaWRjL2NoZWNrc2Vzc2lvbiIpLHJldm9jYXRpb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi9yZXZva2UiKSx0b2tlbl9lbmRwb2ludDoiIi5jb25jYXQoYSkuY29uY2F0KCIvb2F1dGgyL3Rva2VuIiksdXNlcmluZm9fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi91c2VyaW5mbyIpfSxlLmFicnVwdCgicmV0dXJuIixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksdCkpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InZhbGlkYXRlSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXQuc2VudC5qd2tzX3VyaSx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoYT10LnNlbnQsbiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTX0FVVEhfSEVMUEVSLVZJVC1ORjAxIiwiSldLUyBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gSldLUyBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBKV0tTIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4gdC5wcmV2PTgsdC5uZXh0PTExLGZldGNoKG4se2NyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP1IuSW5jbHVkZTpSLlNhbWVPcmlnaW59KTtjYXNlIDExOmk9dC5zZW50LHQubmV4dD0xNzticmVhaztjYXNlIDE0OnRocm93IHQucHJldj0xNCx0LnQwPXQuY2F0Y2goOCksbmV3IEkoIkpTLUFVVEhfSEVMUEVSLVZJVC1ORTAyIiwiUmVxdWVzdCB0byBqd2tzIGVuZHBvaW50IGZhaWxlZC4iLG51bGwhPXQudDA/dC50MDoiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGp3a3MgZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iKTtjYXNlIDE3OmlmKDIwMD09PWkuc3RhdHVzJiZpLm9rKXt0Lm5leHQ9MjQ7YnJlYWt9cmV0dXJuIHQudDE9SSx0LnQyPSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgandrcyByZXF1ZXN0ICgiLmNvbmNhdChpLnN0YXR1c1RleHQsIikuIiksdC5uZXh0PTIyLGkuanNvbigpO2Nhc2UgMjI6dGhyb3cgdC50Mz10LnNlbnQsbmV3IHQudDEoIkpTLUFVVEhfSEVMUEVSLVZJVC1IRTAzIix0LnQyLHQudDMpO2Nhc2UgMjQ6cmV0dXJuIHQubmV4dD0yNix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjY6cmV0dXJuIG89dC5zZW50Lmlzc3Vlcix0Lm5leHQ9MjksaS5qc29uKCk7Y2FzZSAyOTpyZXR1cm4gcz10LnNlbnQsdT1zLmtleXMsdC5uZXh0PTMzLHRoaXMuX2NyeXB0b0hlbHBlci5nZXRKV0tGb3JUaGVJZFRva2VuKGUuc3BsaXQoIi4iKVswXSx1KTtjYXNlIDMzOnJldHVybiBjPXQuc2VudCx0LnQ0PXRoaXMuX2NyeXB0b0hlbHBlcix0LnQ1PWUsdC50Nj1jLHQubmV4dD0zOSx0aGlzLl9jb25maWcoKTtjYXNlIDM5OnJldHVybiB0LnQ3PXQuc2VudC5jbGllbnRJRCx0LnQ4PW51bGwhPW8/bzoiIix0LnQ5PXRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKGUpLnN1Yix0Lm5leHQ9NDQsdGhpcy5fY29uZmlnKCk7Y2FzZSA0NDpyZXR1cm4gdC50MTA9dC5zZW50LmNsb2NrVG9sZXJhbmNlLHQuYWJydXB0KCJyZXR1cm4iLHQudDQuaXNWYWxpZElkVG9rZW4uY2FsbCh0LnQ0LHQudDUsdC50Nix0LnQ3LHQudDgsdC50OSx0LnQxMCkpO2Nhc2UgNDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1s4LDE0XV0pfSkpKX19LHtrZXk6ImdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKSxvPUwuZ2V0VGVuYW50RG9tYWluRnJvbUlkVG9rZW5QYXlsb2FkKGkpLHM9bnVsbCE9PSh0PW51bGw9PWk/dm9pZCAwOmkudXNlcm5hbWUpJiZ2b2lkIDAhPT10P3Q6IiIsdT1udWxsIT09KHI9aS5naXZlbl9uYW1lKSYmdm9pZCAwIT09cj9yOiIiLGM9bnVsbCE9PShuPWkuZmFtaWx5X25hbWUpJiZ2b2lkIDAhPT1uP246IiIsZj11JiZjPyIiLmNvbmNhdCh1LCIgIikuY29uY2F0KGMpOnV8fGN8fCIiLGw9bnVsbCE9PShhPWkucHJlZmVycmVkX3VzZXJuYW1lKSYmdm9pZCAwIT09YT9hOmY7cmV0dXJuIE9iamVjdC5hc3NpZ24oe2Rpc3BsYXlOYW1lOmwsdGVuYW50RG9tYWluOm8sdXNlcm5hbWU6c30sTC5maWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQoaSkpfX0se2tleToicmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBpPSJvcGVuaWQiLHIubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbz1yLnNlbnQsci5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKHQpO2Nhc2UgNjpyZXR1cm4gcz1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsKG8uc2NvcGUmJm8uc2NvcGUubGVuZ3RoPjAmJihvLnNjb3BlLmluY2x1ZGVzKCJvcGVuaWQiKXx8by5zY29wZS5wdXNoKCJvcGVuaWQiKSxpPW8uc2NvcGUuam9pbigiICIpKSxlLnJlcGxhY2UoInt7dG9rZW59fSIscy5hY2Nlc3NfdG9rZW4pLnJlcGxhY2UoInt7dXNlcm5hbWV9fSIsdGhpcy5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8ocy5pZF90b2tlbikudXNlcm5hbWUpLnJlcGxhY2UoInt7c2NvcGV9fSIsaSkucmVwbGFjZSgie3tjbGllbnRJRH19IixvLmNsaWVudElEKS5yZXBsYWNlKCJ7e2NsaWVudFNlY3JldH19IixudWxsIT09KG49by5jbGllbnRTZWNyZXQpJiZ2b2lkIDAhPT1uP246IiIpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlU2Vzc2lvbkRhdGEoZSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJoYW5kbGVUb2tlblJlc3BvbnNlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6aWYoMjAwPT09ZS5zdGF0dXMmJmUub2spe24ubmV4dD03O2JyZWFrfXJldHVybiBuLnQwPUksbi50MT0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHRva2VuIHJlcXVlc3QgKCIuY29uY2F0KGUuc3RhdHVzVGV4dCwiKS4iKSxuLm5leHQ9NSxlLmpzb24oKTtjYXNlIDU6dGhyb3cgbi50Mj1uLnNlbnQsbmV3IG4udDAoIkpTLUFVVEhfSEVMUEVSLUhUUi1ORTAxIixuLnQxLG4udDIpO2Nhc2UgNzpyZXR1cm4gbi5uZXh0PTksZS5qc29uKCk7Y2FzZSA5OnJldHVybihhPW4uc2VudCkuY3JlYXRlZF9hdD0obmV3IERhdGUpLmdldFRpbWUoKSxuLm5leHQ9MTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAxMzppZighbi5zZW50LnZhbGlkYXRlSURUb2tlbil7bi5uZXh0PTE1O2JyZWFrfXJldHVybiBuLmFicnVwdCgicmV0dXJuIix0aGlzLnZhbGlkYXRlSWRUb2tlbihhLmlkX3Rva2VuKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBFKG8sdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YShhLHQpO2Nhc2UgMjpyZXR1cm4gbj17YWNjZXNzVG9rZW46YS5hY2Nlc3NfdG9rZW4sY3JlYXRlZEF0OmEuY3JlYXRlZF9hdCxleHBpcmVzSW46YS5leHBpcmVzX2luLGlkVG9rZW46YS5pZF90b2tlbixyZWZyZXNoVG9rZW46YS5yZWZyZXNoX3Rva2VuLHNjb3BlOmEuc2NvcGUsdG9rZW5UeXBlOmEudG9rZW5fdHlwZX0sZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxNTpyZXR1cm4gaT17YWNjZXNzVG9rZW46YS5hY2Nlc3NfdG9rZW4sY3JlYXRlZEF0OmEuY3JlYXRlZF9hdCxleHBpcmVzSW46YS5leHBpcmVzX2luLGlkVG9rZW46YS5pZF90b2tlbixyZWZyZXNoVG9rZW46YS5yZWZyZXNoX3Rva2VuLHNjb3BlOmEuc2NvcGUsdG9rZW5UeXBlOmEudG9rZW5fdHlwZX0sbi5uZXh0PTE4LHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YShhLHQpO2Nhc2UgMTg6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShpKSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2VuZXJhdGVQS0NFS2V5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG87cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGEoZSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxpPVtdLE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc3RhcnRzV2l0aCgicGtjZV9jb2RlX3ZlcmlmaWVyIikmJmkucHVzaChlKX0pKSxvPWkuc29ydCgpLnBvcCgpLHIuYWJydXB0KCJyZXR1cm4iLCJwa2NlX2NvZGVfdmVyaWZpZXIjIi5jb25jYXQocGFyc2VJbnQobnVsbCE9PSh0PW51bGw9PW8/dm9pZCAwOm8uc3BsaXQoIiMiKVsxXSkmJnZvaWQgMCE9PXQ/dDoiLTEiKSsxKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fV0pLGV9KCksaj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXR9cmV0dXJuIHUoZSxbe2tleToiZ2V0Q29kZVZlcmlmaWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuZ2VuZXJhdGVSYW5kb21CeXRlcygzMikpfX0se2tleToiZ2V0Q29kZUNoYWxsZW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTEVuY29kZSh0aGlzLl9jcnlwdG9VdGlscy5oYXNoU2hhMjU2KGUpKX19LHtrZXk6ImdldEpXS0ZvclRoZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1KU09OLnBhcnNlKHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlKSksYT1fKHQpO3RyeXtmb3IoYS5zKCk7IShyPWEubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtpZihuLmtpZD09PWkua2lkKXJldHVybiBpfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX10aHJvdyBuZXcgSSgiSlMtQ1JZUFRPX1VUSUwtR0pGVElULUlWMDEiLCJraWQgbm90IGZvdW5kLiIsIkZhaWxlZCB0byBmaW5kIHRoZSAna2lkJyBzcGVjaWZpZWQgaW4gdGhlIGlkX3Rva2VuLiAna2lkJyBmb3VuZCBpbiB0aGUgaGVhZGVyIDogIituLmtpZCsiLCBFeHBlY3RlZCB2YWx1ZXM6ICIrdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtpZH0pKS5qb2luKCIsICIpKX19LHtrZXk6ImlzVmFsaWRJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSl7cmV0dXJuIHRoaXMuX2NyeXB0b1V0aWxzLnZlcmlmeUp3dChlLHQsUCxyLG4sYSxpKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZT9Qcm9taXNlLnJlc29sdmUoITApOlByb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fSEVMUEVSLUlWSVQtSVYwMSIsIkludmFsaWQgSUQgdG9rZW4uIiwiSUQgdG9rZW4gdmFsaWRhdGlvbiByZXR1cm5lZCBmYWxzZSIpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQiPT09KG51bGw9PWU/dm9pZCAwOmUuY29kZSkmJiJuYmYiPT09KG51bGw9PWU/dm9pZCAwOmUuY2xhaW0pP1Byb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAyIiwiSldUIE5CRiBDTEFJTSBWQUxJREFUSU9OIEZBSUxFRCIsIkpXVCBOQkYgY2xhaW0gdmFsaWRhdGlvbiBoYXMgYmVlbiBmYWlsZWQiKSk6UHJvbWlzZS5yZWplY3QobmV3IEkoIkpTLUNSWVBUT19VVElMUy1JVklULUlWMDMiLCJKV1QgVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgdmFsaWRhdGlvbiBoYXMgYmVlbiBmYWlsZWQiKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9dGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRGVjb2RlKGUuc3BsaXQoIi4iKVsxXSk7cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2goZSl7dGhyb3cgbmV3IEkoIkpTLUNSWVBUT19VVElMLURJVC1JVjAxIiwiRGVjb2RpbmcgSUQgdG9rZW4gZmFpbGVkLiIsZSl9fX1dKSxlfSgpLE49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7dmFyIGE9dGhpcztvKHRoaXMsZSksdGhpcy5fY3J5cHRvVXRpbHM9bix0aGlzLl9jcnlwdG9IZWxwZXI9bmV3IGoobiksdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXI9bmV3IE0odCx0aGlzLl9jcnlwdG9IZWxwZXIpLHRoaXMuX2RhdGFMYXllcj10LHRoaXMuX2NvbmZpZz1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YT1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19cmV0dXJuIHUoZSxbe2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbixhLGk7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIHMsdSxjLGYsbCxoLHAsZCx2LGcseSxtLGIsayx4LFMsRSxULEEsUjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIoImF1dGhvcml6YXRpb25fZW5kcG9pbnQiKTtjYXNlIDI6cmV0dXJuIHM9ci5zZW50LHIubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZih1PXIuc2VudCxzJiYwIT09cy50cmltKCkubGVuZ3RoKXtyLm5leHQ9ODticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdBVS1ORjAxIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCBmb3VuZC4iLCJObyBhdXRob3JpemF0aW9uIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgZnJvbSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIGM9bmV3IFVSTChzKSwoZj1uZXcgTWFwKS5zZXQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksZi5zZXQoImNsaWVudF9pZCIsdS5jbGllbnRJRCksbD0ib3BlbmlkIix1LnNjb3BlJiZ1LnNjb3BlLmxlbmd0aD4wJiYodS5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fHUuc2NvcGUucHVzaCgib3BlbmlkIiksbD11LnNjb3BlLmpvaW4oIiAiKSksZi5zZXQoInNjb3BlIixsKSxmLnNldCgicmVkaXJlY3RfdXJpIix1LnNpZ25JblJlZGlyZWN0VVJMKSx1LnJlc3BvbnNlTW9kZSYmZi5zZXQoInJlc3BvbnNlX21vZGUiLHUucmVzcG9uc2VNb2RlKSxyLm5leHQ9MTQsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuZ2VuZXJhdGVQS0NFS2V5KHQpO2Nhc2UgMTQ6aWYoaD1yLnNlbnQsIXUuZW5hYmxlUEtDRSl7ci5uZXh0PTIxO2JyZWFrfXJldHVybiBwPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVWZXJpZmllcigpLGQ9bnVsbD09PShhPXRoaXMuX2NyeXB0b0hlbHBlcil8fHZvaWQgMD09PWE/dm9pZCAwOmEuZ2V0Q29kZUNoYWxsZW5nZShwKSxyLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoaCxwLHQpO2Nhc2UgMTk6Zi5zZXQoImNvZGVfY2hhbGxlbmdlX21ldGhvZCIsIlMyNTYiKSxmLnNldCgiY29kZV9jaGFsbGVuZ2UiLGQpO2Nhc2UgMjE6aWYodS5wcm9tcHQmJmYuc2V0KCJwcm9tcHQiLHUucHJvbXB0KSx2PWUpZm9yKGc9MCx5PU9iamVjdC5lbnRyaWVzKHYpO2c8eS5sZW5ndGg7ZysrKW09dyh5W2ddLDIpLGI9bVswXSxrPW1bMV0sIiIhPWImJiIiIT1rJiYic3RhdGUiIT09YiYmKHg9Yi5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSksZi5zZXQoeCxrLnRvU3RyaW5nKCkpKTtmLnNldCgic3RhdGUiLEwuZ2VuZXJhdGVTdGF0ZVBhcmFtRm9yUmVxdWVzdENvcnJlbGF0aW9uKGgsdj9udWxsPT09KGk9di5zdGF0ZSl8fHZvaWQgMD09PWk/dm9pZCAwOmkudG9TdHJpbmcoKToiIikpLFM9XyhmLmVudHJpZXMoKSk7dHJ5e2ZvcihTLnMoKTshKEU9Uy5uKCkpLmRvbmU7KVQ9dyhFLnZhbHVlLDIpLEE9VFswXSxSPVRbMV0sYy5zZWFyY2hQYXJhbXMuYXBwZW5kKEEsUil9Y2F0Y2goZSl7Uy5lKGUpfWZpbmFsbHl7Uy5mKCl9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLGMudG9TdHJpbmcoKSk7Y2FzZSAyODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG8sdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsYyxmO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBvPXIuc2VudC50b2tlbl9lbmRwb2ludCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYocz1yLnNlbnQsbyYmMCE9PW8udHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQxLU5GMDEiLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OmlmKHIudDA9dCwhci50MCl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLm5leHQ9MTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIix0LGEpO2Nhc2UgMTI6aWYoKHU9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChzLmNsaWVudElEKSkscy5jbGllbnRTZWNyZXQmJnMuY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmdS5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KHMuY2xpZW50U2VjcmV0KSksYz1lLHUucHVzaCgiY29kZT0iLmNvbmNhdChjKSksdS5wdXNoKCJncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZSIpLHUucHVzaCgicmVkaXJlY3RfdXJpPSIuY29uY2F0KHMuc2lnbkluUmVkaXJlY3RVUkwpKSxyLnQxPXMuZW5hYmxlUEtDRSwhci50MSl7ci5uZXh0PTI5O2JyZWFrfXJldHVybiByLnQyPXUsci50Mz0iY29kZV92ZXJpZmllcj0iLHIubmV4dD0yNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0obiksYSk7Y2FzZSAyNDpyZXR1cm4gci50ND1yLnNlbnQsci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Mi5wdXNoLmNhbGwoci50MixyLnQ1KSxyLm5leHQ9MjksdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKG4pLGEpO2Nhc2UgMjk6cmV0dXJuIHIucHJldj0yOSxyLm5leHQ9MzIsZmV0Y2gobyx7Ym9keTp1LmpvaW4oIiYiKSxjcmVkZW50aWFsczpzLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoTC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDMyOmY9ci5zZW50LHIubmV4dD0zODticmVhaztjYXNlIDM1OnRocm93IHIucHJldj0zNSxyLnQ2PXIuY2F0Y2goMjkpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMS1ORTAyIiwiUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIixudWxsIT1yLnQ2P3IudDY6IlRoZSByZXF1ZXN0IHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAzODppZihmLm9rKXtyLm5leHQ9NDU7YnJlYWt9cmV0dXJuIHIudDc9SSxyLnQ4PSJSZXF1ZXN0aW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQgd2l0aCAiLmNvbmNhdChmLnN0YXR1c1RleHQpLHIubmV4dD00MyxmLmpzb24oKTtjYXNlIDQzOnRocm93IHIudDk9ci5zZW50LG5ldyByLnQ3KCJKUy1BVVRIX0NPUkUtUkFUMS1IRTAzIixyLnQ4LHIudDkpO2Nhc2UgNDU6cmV0dXJuIHIubmV4dD00Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGYsYSk7Y2FzZSA0NzpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDQ4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksaSx0aGlzLFtbMjksMzVdXSl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGksbyxzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXQuc2VudC50b2tlbl9lbmRwb2ludCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIGE9dC5zZW50LHQubmV4dD04LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDg6aWYoKGk9dC5zZW50KS5yZWZyZXNoX3Rva2VuKXt0Lm5leHQ9MTE7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQyLU5GMDEiLCJObyByZWZyZXNoIHRva2VuIGZvdW5kLiIsIlRoZXJlIHdhcyBubyByZWZyZXNoIHRva2VuIGZvdW5kLiBBc2dhcmRlbyBkb2Vzbid0IHJldHVybiBhIHJlZnJlc2ggdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gZ3JhbnQgaXMgbm90IGVuYWJsZWQuIik7Y2FzZSAxMTppZihuJiYwIT09bi50cmltKCkubGVuZ3RoKXt0Lm5leHQ9MTM7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQyLU5GMDIiLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgd2FzIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDEzOnJldHVybihvPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoYS5jbGllbnRJRCkpLG8ucHVzaCgicmVmcmVzaF90b2tlbj0iLmNvbmNhdChpLnJlZnJlc2hfdG9rZW4pKSxvLnB1c2goImdyYW50X3R5cGU9cmVmcmVzaF90b2tlbiIpLGEuY2xpZW50U2VjcmV0JiZhLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJm8ucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChhLmNsaWVudFNlY3JldCkpLHQucHJldj0xNSx0Lm5leHQ9MTgsZmV0Y2gobix7Ym9keTpvLmpvaW4oIiYiKSxjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoTC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDE4OnM9dC5zZW50LHQubmV4dD0yNDticmVhaztjYXNlIDIxOnRocm93IHQucHJldj0yMSx0LnQwPXQuY2F0Y2goMTUpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1OUjAzIiwiUmVmcmVzaCBhY2Nlc3MgdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNDppZihzLm9rKXt0Lm5leHQ9MzE7YnJlYWt9cmV0dXJuIHQudDE9SSx0LnQyPSJSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQgd2l0aCAiLmNvbmNhdChzLnN0YXR1c1RleHQpLHQubmV4dD0yOSxzLmpzb24oKTtjYXNlIDI5OnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0NPUkUtUkFUMi1IRTA0Iix0LnQyLHQudDMpO2Nhc2UgMzE6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UocyxlKSk7Y2FzZSAzMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzE1LDIxXV0pfSkpKX19LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGksbztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQucmV2b2NhdGlvbl9lbmRwb2ludCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoYT10LnNlbnQsbiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQzLU5GMDEiLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuKGk9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChhLmNsaWVudElEKSksdC50MD1pLHQudDE9InRva2VuPSIsdC5uZXh0PTE0LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE0OnJldHVybiB0LnQyPXQuc2VudC5hY2Nlc3NfdG9rZW4sdC50Mz10LnQxLmNvbmNhdC5jYWxsKHQudDEsdC50MiksdC50MC5wdXNoLmNhbGwodC50MCx0LnQzKSxpLnB1c2goInRva2VuX3R5cGVfaGludD1hY2Nlc3NfdG9rZW4iKSx0LnByZXY9MTgsdC5uZXh0PTIxLGZldGNoKG4se2JvZHk6aS5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAyMTpvPXQuc2VudCx0Lm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNDp0aHJvdyB0LnByZXY9MjQsdC50ND10LmNhdGNoKDE4KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDMtTkUwMiIsIlRoZSByZXF1ZXN0IHRvIHJldm9rZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsbnVsbCE9dC50ND90LnQ0OiJUaGUgcmVxdWVzdCBzZW50IHRvIHJldm9rZSB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iKTtjYXNlIDI3OmlmKDIwMD09PW8uc3RhdHVzJiZvLm9rKXt0Lm5leHQ9MzQ7YnJlYWt9cmV0dXJuIHQudDU9SSx0LnQ2PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgcmV2b2tlIGFjY2VzcyB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChvLnN0YXR1c1RleHQsIikuIiksdC5uZXh0PTMyLG8uanNvbigpO2Nhc2UgMzI6dGhyb3cgdC50Nz10LnNlbnQsbmV3IHQudDUoIkpTLUFVVEhfQ09SRS1SQVQzLUhFMDMiLHQudDYsdC50Nyk7Y2FzZSAzNDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsKHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpLFByb21pc2UucmVzb2x2ZShvKSkpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxOCwyNF1dKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvLHMsdSxjLGYsbD10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBhPW4uc2VudCxuLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoaT1uLnNlbnQsKG89ZS50b2tlbkVuZHBvaW50JiYwIT09ZS50b2tlbkVuZHBvaW50LnRyaW0oKS5sZW5ndGg/ZS50b2tlbkVuZHBvaW50OmEudG9rZW5fZW5kcG9pbnQpJiYwIT09by50cmltKCkubGVuZ3RoKXtuLm5leHQ9ODticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLVJDRy1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4gbi5uZXh0PTEwLFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKGUuZGF0YSkubWFwKChmdW5jdGlvbihlKXt2YXIgbj13KGUsMiksYT1uWzBdLGk9blsxXTtyZXR1cm4gRShsLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MoaSx0KTtjYXNlIDI6cmV0dXJuIG49ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChhLCI9IikuY29uY2F0KG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxMDppZihzPW4uc2VudCx1PU9iamVjdC5hc3NpZ24oe30sTC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG4udDA9ZS5hdHRhY2hUb2tlbiwhbi50MCl7bi5uZXh0PTIzO2JyZWFrfXJldHVybiBuLnQxPU9iamVjdCxuLnQyPU9iamVjdC5hc3NpZ24oe30sdSksbi50Mz0iQmVhcmVyICIsbi5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDE5Om4udDQ9bi5zZW50LmFjY2Vzc190b2tlbixuLnQ1PW4udDMuY29uY2F0LmNhbGwobi50MyxuLnQ0KSxuLnQ2PXtBdXRob3JpemF0aW9uOm4udDV9LHU9bi50MS5hc3NpZ24uY2FsbChuLnQxLG4udDIsbi50Nik7Y2FzZSAyMzpyZXR1cm4gYz17Ym9keTpzLmpvaW4oIiYiKSxjcmVkZW50aWFsczppLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnModSksbWV0aG9kOiJQT1NUIn0sbi5wcmV2PTI0LG4ubmV4dD0yNyxmZXRjaChvLGMpO2Nhc2UgMjc6Zj1uLnNlbnQsbi5uZXh0PTMzO2JyZWFrO2Nhc2UgMzA6dGhyb3cgbi5wcmV2PTMwLG4udDc9bi5jYXRjaCgyNCksbmV3IEkoIkpTLUFVVEhfQ09SRS1SQ0ctTkUwMiIsIlRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdCBmYWlsZWQuIixudWxsIT1uLnQ3P24udDc6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgZmFpbGVkLiIpO2Nhc2UgMzM6aWYoMjAwPT09Zi5zdGF0dXMmJmYub2spe24ubmV4dD00MDticmVha31yZXR1cm4gbi50OD1JLG4udDk9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0aGUgY3VzdG9tIGdyYW50IHJlcXVlc3QuICgiLmNvbmNhdChmLnN0YXR1c1RleHQsIikiKSxuLm5leHQ9MzgsZi5qc29uKCk7Y2FzZSAzODp0aHJvdyBuLnQxMD1uLnNlbnQsbmV3IG4udDgoIkpTLUFVVEhfQ09SRS1SQ0ctSEUwMyIsbi50OSxuLnQxMCk7Y2FzZSA0MDppZighZS5yZXR1cm5zU2Vzc2lvbil7bi5uZXh0PTQ0O2JyZWFrfW4udDExPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoZix0KSxuLm5leHQ9NDk7YnJlYWs7Y2FzZSA0NDpyZXR1cm4gbi50MTI9UHJvbWlzZSxuLm5leHQ9NDcsZi5qc29uKCk7Y2FzZSA0NzpuLnQxMz1uLnNlbnQsbi50MTE9bi50MTIucmVzb2x2ZS5jYWxsKG4udDEyLG4udDEzKTtjYXNlIDQ5OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixuLnQxMSk7Y2FzZSA1MDpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyxbWzI0LDMwXV0pfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGEsaTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCxhPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhudWxsPT1uP3ZvaWQgMDpuLmlkX3Rva2VuKSxpPXthbGxvd2VkU2NvcGVzOm4uc2NvcGUsc2Vzc2lvblN0YXRlOm4uc2Vzc2lvbl9zdGF0ZX0sdC5hYnJ1cHQoInJldHVybiIsKE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWFbZV0mJiIiIT09YVtlXSYmbnVsbCE9PWFbZV18fGRlbGV0ZSBhW2VdfSkpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLGEpKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQuaWRfdG9rZW4sdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4obikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOmlmKG49dC5zZW50LHQudDA9IWUsIXQudDApe3QubmV4dD04O2JyZWFrfXJldHVybiB0Lm5leHQ9Nyx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNzp0LnQwPXQuc2VudDtjYXNlIDg6aWYoIXQudDApe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMTA6aWYoIShhPW4ud2VsbEtub3duRW5kcG9pbnQpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIHQucHJldj0xMix0Lm5leHQ9MTUsZmV0Y2goYSk7Y2FzZSAxNTppZigyMDA9PT0oaT10LnNlbnQpLnN0YXR1cyYmaS5vayl7dC5uZXh0PTE4O2JyZWFrfXRocm93IG5ldyBFcnJvcjtjYXNlIDE4OnQubmV4dD0yMzticmVhaztjYXNlIDIwOnRocm93IHQucHJldj0yMCx0LnQxPXQuY2F0Y2goMTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSEUwMSIsIkludmFsaWQgd2VsbC1rbm93biByZXNwb25zZSIsIlRoZSB3ZWxsIGtub3duIGVuZHBvaW50IHJlc3BvbnNlIGhhcyBiZWVuIGZhaWxlZCB3aXRoIGFuIGVycm9yLiIpO2Nhc2UgMjM6cmV0dXJuIHQudDI9dGhpcy5fZGF0YUxheWVyLHQudDM9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIsdC5uZXh0PTI3LGkuanNvbigpO2Nhc2UgMjc6cmV0dXJuIHQudDQ9dC5zZW50LHQubmV4dD0zMCx0LnQzLnJlc29sdmVFbmRwb2ludHMuY2FsbCh0LnQzLHQudDQpO2Nhc2UgMzA6cmV0dXJuIHQudDU9dC5zZW50LHQubmV4dD0zMyx0LnQyLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Mix0LnQ1KTtjYXNlIDMzOnJldHVybiB0Lm5leHQ9MzUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDM1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAzNjppZighbi5iYXNlVXJsKXt0Lm5leHQ9NTI7YnJlYWt9cmV0dXJuIHQucHJldj0zNyx0LnQ2PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NDEsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCgpO2Nhc2UgNDE6cmV0dXJuIHQudDc9dC5zZW50LHQubmV4dD00NCx0LnQ2LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Nix0LnQ3KTtjYXNlIDQ0OnQubmV4dD00OTticmVhaztjYXNlIDQ2OnRocm93IHQucHJldj00Nix0LnQ4PXQuY2F0Y2goMzcpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMiIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50OD90LnQ4OiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGJhc2UgdXJsIGZhaWxlZC4iKTtjYXNlIDQ5OnJldHVybiB0Lm5leHQ9NTEsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDUxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA1MjpyZXR1cm4gdC5wcmV2PTUyLHQudDk9dGhpcy5fZGF0YUxheWVyLHQubmV4dD01Nix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSgpO2Nhc2UgNTY6cmV0dXJuIHQudDEwPXQuc2VudCx0Lm5leHQ9NTksdC50OS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDksdC50MTApO2Nhc2UgNTk6dC5uZXh0PTY0O2JyZWFrO2Nhc2UgNjE6dGhyb3cgdC5wcmV2PTYxLHQudDExPXQuY2F0Y2goNTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMyIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50MTE/dC50MTE6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgZXhwbGljaXRseSBmYWlsZWQuIik7Y2FzZSA2NDpyZXR1cm4gdC5uZXh0PTY2LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA2NjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNjc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxMiwyMF0sWzM3LDQ2XSxbNTIsNjFdXSl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLGEsaSxvLHMsdSxjLGY7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBsKCl7dmFyIGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGg9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6bnVsbCE9PShlPWguYXV0aG9yaXphdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWU/ZToiIixjaGVja1Nlc3Npb25JZnJhbWU6bnVsbCE9PSh0PWguY2hlY2tfc2Vzc2lvbl9pZnJhbWUpJiZ2b2lkIDAhPT10P3Q6IiIsZW5kU2Vzc2lvbkVuZHBvaW50Om51bGwhPT0obj1oLmVuZF9zZXNzaW9uX2VuZHBvaW50KSYmdm9pZCAwIT09bj9uOiIiLGludHJvc3BlY3Rpb25FbmRwb2ludDpudWxsIT09KGE9aC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09YT9hOiIiLGlzc3VlcjpudWxsIT09KGk9aC5pc3N1ZXIpJiZ2b2lkIDAhPT1pP2k6IiIsandrc1VyaTpudWxsIT09KG89aC5qd2tzX3VyaSkmJnZvaWQgMCE9PW8/bzoiIixyZWdpc3RyYXRpb25FbmRwb2ludDpudWxsIT09KHM9aC5yZWdpc3RyYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1zP3M6IiIscmV2b2NhdGlvbkVuZHBvaW50Om51bGwhPT0odT1oLnJldm9jYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdG9rZW5FbmRwb2ludDpudWxsIT09KGM9aC50b2tlbl9lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIix1c2VyaW5mb0VuZHBvaW50Om51bGwhPT0oZj1oLnVzZXJpbmZvX2VuZHBvaW50KSYmdm9pZCAwIT09Zj9mOiIifSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYoci50MT10PXIuc2VudCxyLnQwPW51bGw9PT1yLnQxLHIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPXZvaWQgMCxyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gbz1yLnQyLHIubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0xNzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMSIsIlNpZ24tb3V0IGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBzaWduLW91dCBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBzaWduLW91dCBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDE3OnJldHVybiByLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTk6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0yMzticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAyMzppZighci50Myl7ci5uZXh0PTI3O2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0yODticmVhaztjYXNlIDI3OnIudDU9bi5pZF90b2tlbjtjYXNlIDI4OmlmKCh1PXIudDUpJiYwIT09dS50cmltKCkubGVuZ3RoKXtyLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDIiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigoYz1udWxsIT09KGE9bnVsbD09cz92b2lkIDA6cy5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1hP2E6bnVsbD09cz92b2lkIDA6cy5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT1jLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0zNDticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMyIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQodSwiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQoYywiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5nZXRTaWduT3V0VVJMKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9Qm9vbGVhbix0Lm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKGUpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdC50MCkodC50MSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKGUpLHQpO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpLGUsbik7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2lkPXQsdGhpcy5fc3RvcmU9cn1yZXR1cm4gdShlLFt7a2V5OiJzZXREYXRhSW5CdWxrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKHIudDE9bj1yLnNlbnQsci50MD1udWxsIT09ci50MSwhci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9bixyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gaT1yLnQyLG89aSYmSlNPTi5wYXJzZShpKSxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0KSx1PUpTT04uc3RyaW5naWZ5KHMpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsdSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihyLnQxPWE9ci5zZW50LHIudDA9bnVsbCE9PXIudDEsIXIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwIT09YTtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPWEsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89ci50MixzPW8mJkpTT04ucGFyc2UobyksdT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scyksYyh7fSx0LG4pKSxmPUpTT04uc3RyaW5naWZ5KHUpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsZik7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHU7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoci50MT1uPXIuc2VudCxyLnQwPW51bGwhPT1yLnQxLCFyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj1uLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9bnVsbDtjYXNlIDExOnJldHVybiBpPXIudDIsbz1pJiZKU09OLnBhcnNlKGkpLGRlbGV0ZShzPU9iamVjdC5hc3NpZ24oe30sbykpW3RdLHU9SlNPTi5zdHJpbmdpZnkocyksci5uZXh0PTE4LHRoaXMuX3N0b3JlLnNldERhdGEoZSx1KTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJfcmVzb2x2ZUtleSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCwiLSIpLmNvbmNhdCh0KToiIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPUpTT04sci5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLGUpKTtjYXNlIDM6aWYoci50Mj10PXIuc2VudCxyLnQxPW51bGwhPT1yLnQyLCFyLnQxKXtyLm5leHQ9NzticmVha31yLnQxPXZvaWQgMCE9PXQ7Y2FzZSA3OmlmKCFyLnQxKXtyLm5leHQ9MTE7YnJlYWt9ci50Mz10LHIubmV4dD0xMjticmVhaztjYXNlIDExOnIudDM9bnVsbDtjYXNlIDEyOnJldHVybiByLnQ0PXIudDMsci5hYnJ1cHQoInJldHVybiIsci50MC5wYXJzZS5jYWxsKHIudDAsci50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLG4mJkpTT04ucGFyc2UobilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSx0KSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixhJiZKU09OLnBhcnNlKGEpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpKTtjYXNlIDI6cmV0dXJuIGE9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLGEmJkpTT04ucGFyc2UoYSlbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoQS5Db25maWdEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSxuKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxuKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuU2Vzc2lvbkRhdGEsdCksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fV0pLGV9KCksSz17Y2xvY2tUb2xlcmFuY2U6MzAwLGVuYWJsZVBLQ0U6ITAscmVzcG9uc2VNb2RlOlQucXVlcnksc2NvcGU6WyJvcGVuaWQiXSxzZW5kQ29va2llc0luUmVxdWVzdHM6ITAsdmFsaWRhdGVJRFRva2VuOiEwfSxKPWZ1bmN0aW9uKCl7Ci8qKgogICAgICAgICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIC4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RvcmV9IHN0b3JlIC0gVGhlIHN0b3JlIG9iamVjdC4KICAgICAgICAgKgogICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICogYGBgCiAgICAgICAgICogY29uc3QgX3N0b3JlOiBTdG9yZSA9IG5ldyBEYXRhU3RvcmUoKTsKICAgICAgICAgKiBjb25zdCBhdXRoID0gbmV3IEFzZ2FyZGVvQXV0aENsaWVudDxDdXN0b21DbGllbnRDb25maWc+KF9zdG9yZSk7CiAgICAgICAgICogYGBgCiAgICAgICAgICoKICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjY29uc3RydWN0b3IKICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgKi8KZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSxlLl9pbnN0YW5jZUlEP2UuX2luc3RhbmNlSUQrPTE6ZS5faW5zdGFuY2VJRD0wLHRoaXMuX2RhdGFMYXllcj1uZXcgcSgiaW5zdGFuY2VfIi5jb25jYXQoZS5faW5zdGFuY2VJRCksdCksdGhpcy5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBOKHRoaXMuX2RhdGFMYXllcixyKSxlLl9hdXRoZW50aWNhdGlvbkNvcmU9bmV3IE4odGhpcy5fZGF0YUxheWVyLHIpfQovKioKICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBTREsgd2l0aCB0aGUgY29uZmlnIGRhdGEuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge0F1dGhDbGllbnRDb25maWc8VD59IGNvbmZpZyAtIFRoZSBjb25maWcgb2JqZWN0IHRvIGluaXRpYWxpemUgd2l0aC4KICAgICAgICAgKgogICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAqICAgICBzaWduSW5SZWRpcmVjdFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zaWduLWluIiwKICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAogICAgICAgICAqICAgICBiYXNlVXJsOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyIKICAgICAgICAgKiB9CiAgICAgICAgICoKICAgICAgICAgKiBhd2FpdCBhdXRoLmluaXRpYWxpemUoY29uZmlnKTsKICAgICAgICAgKgogICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpbml0aWFsaXplCiAgICAgICAgICoKICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgKi9yZXR1cm4gdShlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSyksZSkse3Njb3BlOltdLmNvbmNhdChiKG51bGwhPT0odD1LLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSxiKG51bGwhPT0oYT1udWxsPT09KG49ZS5zY29wZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1LP3ZvaWQgMDpLLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1hP2E6W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBgRGF0YUxheWVyYCBvYmplY3QgdGhhdCBhbGxvd3MgeW91IHRvIGFjY2VzcyBhdXRoZW50aWNhdGlvbiBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge0RhdGFMYXllcn0gLSBUaGUgYERhdGFMYXllcmAgb2JqZWN0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGRhdGEgPSBhdXRoLmdldERhdGFMYXllcigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldERhdGFMYXllcgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0RGF0YUxheWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhTGF5ZXJ9Ci8qKgogICAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGF1dGhvcml6YXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7R2V0QXV0aFVSTENvbmZpZ30gY29uZmlnIC0gKE9wdGlvbmFsKSBBIGNvbmZpZyBvYmplY3QgdG8gZm9yY2UgaW5pdGlhbGl6YXRpb24gYW5kIHBhc3MKICAgICAgICAgICAqIGN1c3RvbSBwYXRoIHBhcmFtZXRlcnMgc3VjaCBhcyB0aGUgZmlkcCBwYXJhbWV0ZXIuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLmdldEF1dGhvcml6YXRpb25VUkwoKS50aGVuKCh1cmwpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2codXJsKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEF1dGhvcml6YXRpb25VUkwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaT10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIG51bGw9PShhPU9iamVjdC5hc3NpZ24oe30sZSkpfHxkZWxldGUgYS5mb3JjZUluaXQsci5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6aWYoIXIuc2VudCl7ci5uZXh0PTg7YnJlYWt9ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChhLHQpLHIubmV4dD05O2JyZWFrO2Nhc2UgODpyLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YShudWxsPT1lP3ZvaWQgMDplLmZvcmNlSW5pdCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaS5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwoYSx0KX0pKTtjYXNlIDk6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDApO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHNlbmRzIGEgcmVxdWVzdCB0byBvYnRhaW4gdGhlIGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyBhIFByb21pc2UKICAgICAgICAgICAqIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGF1dGhvcml6YXRpb25Db2RlIC0gVGhlIGF1dGhvcml6YXRpb24gY29kZS4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uU3RhdGUgLSBUaGUgc2Vzc2lvbiBzdGF0ZS4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiByZXNwb25zZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLnJlcXVlc3RBY2Nlc3NUb2tlbihhdXRoQ29kZSwgc2Vzc2lvblN0YXRlKS50aGVuKCh0b2tlbik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyh0b2tlbik7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXF1ZXN0QWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG89dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgMjppZighci5zZW50KXtyLm5leHQ9NjticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LG4sYSksci5uZXh0PTc7YnJlYWs7Y2FzZSA2OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCExKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCxuLGEpfSkpO2Nhc2UgNzpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksaSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgY2xlYXJzIGFsbCBhdXRoZW50aWNhdGlvbiBkYXRhIGFuZCByZXR1cm5zIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHNpZ25PdXRVcmwgPSBhd2FpdCBhdXRoLnNpZ25PdXQoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzaWduT3V0CiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2lnbk91dChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGlzIGRvZXNuJ3QgY2xlYXIgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEuKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHNpZ25PdXRVcmwgPSBhd2FpdCBhdXRoLmdldFNpZ25PdXRVUkwoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRTaWduT3V0VVJMCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0U2lnbk91dFVSTChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBPSURDIHNlcnZpY2UgZW5kcG9pbnRzIHRoYXQgYXJlIGZldGNoZWQgZnJvbSB0aGUgYC53ZWxsLWtub3duYCBlbmRwb2ludC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPE9JRENFbmRwb2ludHM+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIE9JREMgc2VydmljZSBlbmRwb2ludHMuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgYXV0aC5nZXRPSURDU2VydmljZUVuZHBvaW50cygpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldE9JRENTZXJ2aWNlRW5kcG9pbnRzCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgcGF5bG9hZCBvZiB0aGUgSUQgdG9rZW4gYW5kIHJldHVybnMgaXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPERlY29kZWRJRFRva2VuUGF5bG9hZD59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGVjb2RlZCBJRCB0b2tlbiBwYXlsb2FkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGRlY29kZWRJZFRva2VuID0gYXdhaXQgYXV0aC5nZXREZWNvZGVkSURUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldERlY29kZWRJRFRva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldERlY29kZWRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBpZFRva2VuID0gYXdhaXQgYXV0aC5nZXRJRFRva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0SURUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGJhc2ljIHVzZXIgaW5mb3JtYXRpb24gb2J0YWluZWQgZnJvbSB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEJhc2ljVXNlckluZm8+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGJhc2ljIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgdXNlckluZm8gPSBhd2FpdCBhdXRoLmdldEJhc2ljVXNlckluZm8oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRCYXNpY1VzZXJJbmZvCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QmFzaWNVc2VySW5mbyhlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV2b2tlcyB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGlzIG1ldGhvZCBhbHNvIGNsZWFycyB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8RmV0Y2hSZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmV0dXJucyB0aGUgcmVzcG9uc2Ugb2YgdGhlIHJldm9rZS1hY2Nlc3MtdG9rZW4gcmVxdWVzdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmV2b2tlQWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJldm9rZUFjY2Vzc1Rva2VuKGUpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJlZnJlc2hlcyB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhY2Nlc3MKICAgICAgICAgICAqIHRva2VuIGFuZCBvdGhlciByZWxldmFudCBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiByZXNwb25zZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLnJlZnJlc2hBY2Nlc3NUb2tlbigpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlZnJlc2hBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlZnJlc2hBY2Nlc3NUb2tlbihlKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgYXV0aC5nZXRBY2Nlc3NUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEFjY2Vzc1Rva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBzZW5kcyBhIGN1c3RvbS1ncmFudCByZXF1ZXN0IGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlCiAgICAgICAgICAgKiBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZyBwYXNzZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtDdXN0b21HcmFudENvbmZpZ30gY29uZmlnIC0gQSBjb25maWcgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1c3RvbSBncmFudCBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlIHwgRmV0Y2hSZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGVwZW5kaW5nCiAgICAgICAgICAgKiBvbiB5b3VyIGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKICAgICAgICAgICAqICAgYXR0YWNoVG9rZW46IGZhbHNlLAogICAgICAgICAgICogICBkYXRhOiB7CiAgICAgICAgICAgKiAgICAgICBjbGllbnRfaWQ6ICJ7e2NsaWVudElEfX0iLAogICAgICAgICAgICogICAgICAgZ3JhbnRfdHlwZTogImFjY291bnRfc3dpdGNoIiwKICAgICAgICAgICAqICAgICAgIHNjb3BlOiAie3tzY29wZX19IiwKICAgICAgICAgICAqICAgICAgIHRva2VuOiAie3t0b2tlbn19IiwKICAgICAgICAgICAqICAgfSwKICAgICAgICAgICAqICAgaWQ6ICJhY2NvdW50LXN3aXRjaCIsCiAgICAgICAgICAgKiAgIHJldHVyblJlc3BvbnNlOiB0cnVlLAogICAgICAgICAgICogICByZXR1cm5zU2Vzc2lvbjogdHJ1ZSwKICAgICAgICAgICAqICAgc2lnbkluUmVxdWlyZWQ6IHRydWUKICAgICAgICAgICAqIH0KICAgICAgICAgICAqCiAgICAgICAgICAgKiBhdXRoLnJlcXVlc3RDdXN0b21HcmFudChjb25maWcpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RDdXN0b21HcmFudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEN1c3RvbUdyYW50KGUsdCl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIG5vdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXdhaXQgYXV0aC5pc0F1dGhlbnRpY2F0ZWQoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc0F1dGhlbnRpY2F0ZWQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmlzQXV0aGVudGljYXRlZChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgUEtDRSBjb2RlIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIC0gVGhlIHN0YXRlIHBhcmFtZXRlciB0aGF0IHdhcyBwYXNzZWQgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgUEtDRSBjb2RlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHBrY2UgPSBhd2FpdCBnZXRQS0NFQ29kZSgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFBLQ0VDb2RlCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0UEtDRUNvZGUoZSx0KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgUEtDRSBjb2RlIHRvIHRoZSBkYXRhIHN0b3JlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwa2NlIC0gVGhlIFBLQ0UgY29kZS4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBzdGF0ZSBwYXJhbWV0ZXIgdGhhdCB3YXMgcGFzc2VkIGluIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF3YWl0IGF1dGguc2V0UEtDRUNvZGUoInBrY2VfY29kZSIpCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjc2V0UEtDRUNvZGUKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNldFBLQ0VDb2RlKGUsdCxuKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSBzaWduLW91dCBpcyBzdWNjZXNzZnVsIG9yIG5vdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbk91dFJlZGlyZWN0VXJsIC0gVGhlIFVSTCB0byB3aGljaCB0aGUgdXNlciBoYXMgYmVlbiByZWRpcmVjdGVkIHRvIGFmdGVyIHNpZ25pbmctb3V0LgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhlIHNlcnZlciBhcHBlbmRzIHBhdGggcGFyYW1ldGVycyB0byB0aGUgYHNpZ25PdXRSZWRpcmVjdFVSTGAgYW5kIHRoZXNlIHBhdGggcGFyYW1ldGVycwogICAgICAgICAgICogIGFyZSByZXF1aXJlZCBmb3IgdGhpcyBtZXRob2QgdG8gZnVuY3Rpb24uKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiBzdWNjZXNzZnVsLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaXNTaWduT3V0U3VjY2Vzc2Z1bAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZToKLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgd2FzIHBhc3NlZCBpbnRvIHRoZSBjb25zdHJ1Y3RvciB3aGVuIGluc3RhbnRpYXRpbmcgdGhpcyBjbGFzcy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge1BhcnRpYWw8QXV0aENsaWVudENvbmZpZzxUPj59IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCB0byB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9ucyB3aXRoLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKICAgICAgICAgICAqICAgICBzaWduSW5SZWRpcmVjdFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zaWduLWluIiwKICAgICAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCiAgICAgICAgICAgKiAgICAgYmFzZVVybDogImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMiCiAgICAgICAgICAgKiB9CiAgICAgICAgICAgKgogICAgICAgICAgICogYXdhaXQgYXV0aC51cGRhdGVDb25maWcoY29uZmlnKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3VwZGF0ZUNvbmZpZwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqLwpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dLFt7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmIW59Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgc2lnbi1vdXQgaGFzIGZhaWxlZCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKICAgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2RpZFNpZ25PdXRGYWlsCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJkaWRTaWduT3V0RmFpbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJm59fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLEI9ImluaXQiOyFmdW5jdGlvbihlKXtlLkxvY2FsU3RvcmFnZT0ibG9jYWxTdG9yYWdlIixlLlNlc3Npb25TdG9yYWdlPSJzZXNzaW9uU3RvcmFnZSIsZS5XZWJXb3JrZXI9IndlYldvcmtlciIsZS5Ccm93c2VyTWVtb3J5PSJicm93c2VyTWVtb3J5In0oVXx8KFU9e30pKSxmdW5jdGlvbihlKXtlLlNpZ25Jbj0ic2lnbi1pbiIsZS5TaWduT3V0PSJzaWduLW91dCIsZS5Jbml0aWFsaXplPSJpbml0aWFsaXplIixlLkh0dHBSZXF1ZXN0U3RhcnQ9Imh0dHAtcmVxdWVzdC1zdGFydCIsZS5IdHRwUmVxdWVzdEZpbmlzaD0iaHR0cC1yZXF1ZXN0LWZpbmlzaCIsZS5IdHRwUmVxdWVzdEVycm9yPSJodHRwLXJlcXVlc3QtZXJyb3IiLGUuSHR0cFJlcXVlc3RTdWNjZXNzPSJodHRwLXJlcXVlc3Qtc3VjY2VzcyIsZS5SZXZva2VBY2Nlc3NUb2tlbj0icmV2b2tlLWFjY2Vzcy10b2tlbiIsZS5DdXN0b21HcmFudD0iY3VzdG9tLWdyYW50IixlLlNpZ25PdXRGYWlsZWQ9InNpZ24tb3V0LWZhaWxlZCJ9KEh8fChIPXt9KSk7dmFyIEY9InByb21wdE5vbmVSZXF1ZXN0U2VudCIsVz0iZXJyb3IiLHo9ImVycm9yX2Rlc2NyaXB0aW9uIixZPSJjdXN0b21fZ3JhbnRfY29uZmlnIixHPSJzdGF0ZSIsVj0iQWNjZXNzIHRva2VuIGlzIGludmFsaWQiLFg9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiAkKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9ZnVuY3Rpb24gWihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fXZhciBRPXtleHBvcnRzOnt9fSxlZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHQscil9fSx0ZT1lZSxyZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIG5lKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIGFlKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIGllKGUpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1yZS5jYWxsKGUpfWZ1bmN0aW9uIG9lKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PT1uKGUpfWZ1bmN0aW9uIHNlKGUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09cmUuY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiB1ZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09cmUuY2FsbChlKX1mdW5jdGlvbiBjZShlLHQpe2lmKG51bGwhPWUpaWYoIm9iamVjdCIhPT1uKGUpJiYoZT1bZV0pLG5lKGUpKWZvcih2YXIgcj0wLGE9ZS5sZW5ndGg7cjxhO3IrKyl0LmNhbGwobnVsbCxlW3JdLHIsZSk7ZWxzZSBmb3IodmFyIGkgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmdC5jYWxsKG51bGwsZVtpXSxpLGUpfXZhciBmZT17aXNBcnJheTpuZSxpc0FycmF5QnVmZmVyOmllLGlzQnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIWFlKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIWFlKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09cmUuY2FsbChlKX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmaWUoZS5idWZmZXIpfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6b2UsaXNQbGFpbk9iamVjdDpzZSxpc1VuZGVmaW5lZDphZSxpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09cmUuY2FsbChlKX0saXNGaWxlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PXJlLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1yZS5jYWxsKGUpfSxpc0Z1bmN0aW9uOnVlLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBvZShlKSYmdWUoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1yZS5jYWxsKGUpfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOmNlLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7c2UodFtuXSkmJnNlKHIpP3Rbbl09ZSh0W25dLHIpOnNlKHIpP3Rbbl09ZSh7fSxyKTpuZShyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspY2UoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGUodCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX0sbGU9ZmU7ZnVuY3Rpb24gaGUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIHBlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKGxlLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107bGUuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihsZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sbGUuZm9yRWFjaChlLChmdW5jdGlvbihlKXtsZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6bGUuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaGUodCkrIj0iK2hlKGUpKX0pKSl9KSksbj1hLmpvaW4oIiYiKX1pZihuKXt2YXIgaT1lLmluZGV4T2YoIiMiKTstMSE9PWkmJihlPWUuc2xpY2UoMCxpKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX0sZGU9ZmU7ZnVuY3Rpb24gdmUoKXt0aGlzLmhhbmRsZXJzPVtdfXZlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LHZlLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sdmUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7ZGUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIGdlPXZlLHllPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307ZnVuY3Rpb24gbWUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiB3ZSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGJlPW1lLGtlPXdlO2Z1bmN0aW9uIHhlKGUpe2lmKGJlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChiZT09PW1lfHwhYmUpJiZzZXRUaW1lb3V0KXJldHVybiBiZT1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGJlKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBiZS5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gYmUuY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgeWUuc2V0VGltZW91dCYmKGJlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiB5ZS5jbGVhclRpbWVvdXQmJihrZT1jbGVhclRpbWVvdXQpO3ZhciBfZSxTZT1bXSxFZT0hMSxUZT0tMTtmdW5jdGlvbiBBZSgpe0VlJiZfZSYmKEVlPSExLF9lLmxlbmd0aD9TZT1fZS5jb25jYXQoU2UpOlRlPS0xLFNlLmxlbmd0aCYmUmUoKSl9ZnVuY3Rpb24gUmUoKXtpZighRWUpe3ZhciBlPXhlKEFlKTtFZT0hMDtmb3IodmFyIHQ9U2UubGVuZ3RoO3Q7KXtmb3IoX2U9U2UsU2U9W107KytUZTx0OylfZSYmX2VbVGVdLnJ1bigpO1RlPS0xLHQ9U2UubGVuZ3RofV9lPW51bGwsRWU9ITEsZnVuY3Rpb24oZSl7aWYoa2U9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigoa2U9PT13ZXx8IWtlKSYmY2xlYXJUaW1lb3V0KXJldHVybiBrZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtrZShlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGtlLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4ga2UuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBDZShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fUNlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtmdW5jdGlvbiBQZSgpe312YXIgRGU9UGUsT2U9UGUsSWU9UGUsTGU9UGUsVWU9UGUsSGU9UGUsTWU9UGU7dmFyIGplPXllLnBlcmZvcm1hbmNlfHx7fSxOZT1qZS5ub3d8fGplLm1vek5vd3x8amUubXNOb3d8fGplLm9Ob3d8fGplLndlYmtpdE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07dmFyIHFlPW5ldyBEYXRlO3ZhciBLZT17bmV4dFRpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtTZS5wdXNoKG5ldyBDZShlLHQpKSwxIT09U2UubGVuZ3RofHxFZXx8eGUoUmUpfSx0aXRsZToiYnJvd3NlciIsYnJvd3NlcjohMCxlbnY6e30sYXJndjpbXSx2ZXJzaW9uOiIiLHZlcnNpb25zOnt9LG9uOkRlLGFkZExpc3RlbmVyOk9lLG9uY2U6SWUsb2ZmOkxlLHJlbW92ZUxpc3RlbmVyOlVlLHJlbW92ZUFsbExpc3RlbmVyczpIZSxlbWl0Ok1lLGJpbmRpbmc6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGNoZGlyOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihlKXt2YXIgdD0uMDAxKk5lLmNhbGwoamUpLHI9TWF0aC5mbG9vcih0KSxuPU1hdGguZmxvb3IodCUxKjFlOSk7cmV0dXJuIGUmJihyLT1lWzBdLChuLT1lWzFdKTwwJiYoci0tLG4rPTFlOSkpLFtyLG5dfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLXFlKS8xZTN9fSxKZT1LZSxCZT1mZSxGZT1mdW5jdGlvbihlLHQscixuLGEpe3JldHVybiBlLmNvbmZpZz10LHImJihlLmNvZGU9ciksZS5yZXF1ZXN0PW4sZS5yZXNwb25zZT1hLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX0sV2U9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LHplPUZlLFllPWZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIGk9bmV3IEVycm9yKGUpO3JldHVybiB6ZShpLHQscixuLGEpfSxHZT1ZZSxWZT1mZSxYZT1WZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihlLHQscixuLGEsaSl7dmFyIG89W107by5wdXNoKGUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KSksVmUuaXNOdW1iZXIocikmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHIpLnRvR01UU3RyaW5nKCkpLFZlLmlzU3RyaW5nKG4pJiZvLnB1c2goInBhdGg9IituKSxWZS5pc1N0cmluZyhhKSYmby5wdXNoKCJkb21haW49IithKSwhMD09PWkmJm8ucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPW8uam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319LCRlPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSl9LFplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9LFFlPWZlLGV0PVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0sdHQ9ZmUscnQ9dHQuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBuKGUpe3ZhciBuPWU7cmV0dXJuIHQmJihyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbiksbj1yLmhyZWYpLHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSx7aHJlZjpyLmhyZWYscHJvdG9jb2w6ci5wcm90b2NvbD9yLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpyLmhvc3Qsc2VhcmNoOnIuc2VhcmNoP3Iuc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6ci5oYXNoP3IuaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOnIuaG9zdG5hbWUscG9ydDpyLnBvcnQscGF0aG5hbWU6Ii8iPT09ci5wYXRobmFtZS5jaGFyQXQoMCk/ci5wYXRobmFtZToiLyIrci5wYXRobmFtZX19cmV0dXJuIGU9bih3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIHI9dHQuaXNTdHJpbmcodCk/bih0KTp0O3JldHVybiByLnByb3RvY29sPT09ZS5wcm90b2NvbCYmci5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfTtmdW5jdGlvbiBudChlKXt0aGlzLm1lc3NhZ2U9ZX1udC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sbnQucHJvdG90eXBlLl9fQ0FOQ0VMX189ITA7dmFyIGF0PW50LGl0PWZlLG90PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3QoR2UoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0sc3Q9WGUsdXQ9cGUsY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmISRlKHQpP1plKGUsdCk6dH0sZnQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGE9e307cmV0dXJuIGU/KFFlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PVFlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPVFlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYoYVt0XSYmZXQuaW5kZXhPZih0KT49MClyZXR1cm47YVt0XT0ic2V0LWNvb2tpZSI9PT10PyhhW3RdP2FbdF06W10pLmNvbmNhdChbcl0pOmFbdF0/YVt0XSsiLCAiK3I6cn19KSksYSk6YX0sbHQ9cnQsaHQ9WWUscHQ9V2UsZHQ9YXQsdnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuLGE9ZS5kYXRhLGk9ZS5oZWFkZXJzLG89ZS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24gcygpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixuKX1pdC5pc0Zvcm1EYXRhKGEpJiZkZWxldGUgaVsiQ29udGVudC1UeXBlIl07dmFyIHU9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGM9ZS5hdXRoLnVzZXJuYW1lfHwiIixmPWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7aS5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYysiOiIrZil9dmFyIGw9Y3QoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBoKCl7aWYodSl7dmFyIG49ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiB1P2Z0KHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsYT17ZGF0YTpvJiYidGV4dCIhPT1vJiYianNvbiIhPT1vP3UucmVzcG9uc2U6dS5yZXNwb25zZVRleHQsc3RhdHVzOnUuc3RhdHVzLHN0YXR1c1RleHQ6dS5zdGF0dXNUZXh0LGhlYWRlcnM6bixjb25maWc6ZSxyZXF1ZXN0OnV9O290KChmdW5jdGlvbihlKXt0KGUpLHMoKX0pLChmdW5jdGlvbihlKXtyKGUpLHMoKX0pLGEpLHU9bnVsbH19aWYodS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksdXQobCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSx1LnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gdT91Lm9ubG9hZGVuZD1oOnUub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSYmND09PXUucmVhZHlTdGF0ZSYmKDAhPT11LnN0YXR1c3x8dS5yZXNwb25zZVVSTCYmMD09PXUucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoaCl9LHUub25hYm9ydD1mdW5jdGlvbigpe3UmJihyKGh0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbCl9LHUub25lcnJvcj1mdW5jdGlvbigpe3IoaHQoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCx1KSksdT1udWxsfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixuPWUudHJhbnNpdGlvbmFsfHxwdDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSkscihodCh0LGUsbi5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGx9LGl0LmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8bHQobCkpJiZlLnhzcmZDb29raWVOYW1lP3N0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihpW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIHUmJml0LmZvckVhY2goaSwoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1hJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgaVt0XTp1LnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxpdC5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fCh1LndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxvJiYianNvbiIhPT1vJiYodS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmdS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJnUudXBsb2FkJiZ1LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYobj1mdW5jdGlvbihlKXt1JiYocighZXx8ZSYmZS50eXBlP25ldyBkdCgiY2FuY2VsZWQiKTplKSx1LmFib3J0KCksdT1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP24oKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbikpKSxhfHwoYT1udWxsKSx1LnNlbmQoYSl9KSl9LGd0PWZlLHl0PWZ1bmN0aW9uKGUsdCl7QmUuZm9yRWFjaChlLChmdW5jdGlvbihyLG4pe24hPT10JiZuLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPXIsZGVsZXRlIGVbbl0pfSkpfSxtdD1GZSx3dD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGJ0KGUsdCl7IWd0LmlzVW5kZWZpbmVkKGUpJiZndC5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIga3QseHQ9e3RyYW5zaXRpb25hbDpXZSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8dm9pZCAwIT09SmUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChKZSkpJiYoa3Q9dnQpLGt0KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiB5dCh0LCJBY2NlcHQiKSx5dCh0LCJDb250ZW50LVR5cGUiKSxndC5pc0Zvcm1EYXRhKGUpfHxndC5pc0FycmF5QnVmZmVyKGUpfHxndC5pc0J1ZmZlcihlKXx8Z3QuaXNTdHJlYW0oZSl8fGd0LmlzRmlsZShlKXx8Z3QuaXNCbG9iKGUpP2U6Z3QuaXNBcnJheUJ1ZmZlclZpZXcoZSk/ZS5idWZmZXI6Z3QuaXNVUkxTZWFyY2hQYXJhbXMoZSk/KGJ0KHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpndC5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0/KGJ0KHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQscil7aWYoZ3QuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxndC50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8eHQudHJhbnNpdGlvbmFsLHI9dCYmdC5zaWxlbnRKU09OUGFyc2luZyxuPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsYT0hciYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoYXx8biYmZ3QuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihhKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IG10KGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07Z3QuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7eHQuaGVhZGVyc1tlXT17fX0pKSxndC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe3h0LmhlYWRlcnNbZV09Z3QubWVyZ2Uod3QpfSkpO3ZhciBfdD14dCxTdD1mZSxFdD1fdCxUdD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX0sQXQ9ZmUsUnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXN8fEV0O3JldHVybiBTdC5mb3JFYWNoKHIsKGZ1bmN0aW9uKHIpe2U9ci5jYWxsKG4sZSx0KX0pKSxlfSxDdD1UdCxQdD1fdCxEdD1hdDtmdW5jdGlvbiBPdChlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgRHQoImNhbmNlbGVkIil9dmFyIEl0PWZlLEx0PWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIEl0LmlzUGxhaW5PYmplY3QoZSkmJkl0LmlzUGxhaW5PYmplY3QodCk/SXQubWVyZ2UoZSx0KTpJdC5pc1BsYWluT2JqZWN0KHQpP0l0Lm1lcmdlKHt9LHQpOkl0LmlzQXJyYXkodCk/dC5zbGljZSgpOnR9ZnVuY3Rpb24gYShyKXtyZXR1cm4gSXQuaXNVbmRlZmluZWQodFtyXSk/SXQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4oZVtyXSx0W3JdKX1mdW5jdGlvbiBpKGUpe2lmKCFJdC5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbih2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gbyhyKXtyZXR1cm4gSXQuaXNVbmRlZmluZWQodFtyXSk/SXQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4odm9pZCAwLHRbcl0pfWZ1bmN0aW9uIHMocil7cmV0dXJuIHIgaW4gdD9uKGVbcl0sdFtyXSk6ciBpbiBlP24odm9pZCAwLGVbcl0pOnZvaWQgMH12YXIgdT17dXJsOmksbWV0aG9kOmksZGF0YTppLGJhc2VVUkw6byx0cmFuc2Zvcm1SZXF1ZXN0Om8sdHJhbnNmb3JtUmVzcG9uc2U6byxwYXJhbXNTZXJpYWxpemVyOm8sdGltZW91dDpvLHRpbWVvdXRNZXNzYWdlOm8sd2l0aENyZWRlbnRpYWxzOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sdHJhbnNwb3J0Om8saHR0cEFnZW50Om8saHR0cHNBZ2VudDpvLGNhbmNlbFRva2VuOm8sc29ja2V0UGF0aDpvLHJlc3BvbnNlRW5jb2Rpbmc6byx2YWxpZGF0ZVN0YXR1czpzfTtyZXR1cm4gSXQuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD11W2VdfHxhLG49dChlKTtJdC5pc1VuZGVmaW5lZChuKSYmdCE9PXN8fChyW2VdPW4pfSkpLHJ9LFV0PSIwLjI2LjEiLEh0PVV0LE10PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtNdFtlXT1mdW5jdGlvbihyKXtyZXR1cm4gbihyKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIganQ9e307TXQudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIltBeGlvcyB2IitIdCsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixhLGkpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobihhLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFqdFthXSYmKGp0W2FdPSEwLGNvbnNvbGUud2FybihuKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUocixhLGkpfX07dmFyIE50PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxyKXtpZigib2JqZWN0IiE9PW4oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxpPWEubGVuZ3RoO2ktLSA+MDspe3ZhciBvPWFbaV0scz10W29dO2lmKHMpe3ZhciB1PWVbb10sYz12b2lkIDA9PT11fHxzKHUsbyxlKTtpZighMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIrbysiIG11c3QgYmUgIitjKX1lbHNlIGlmKCEwIT09cil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitvKX19LHZhbGlkYXRvcnM6TXR9LHF0PWZlLEt0PXBlLEp0PWdlLEJ0PWZ1bmN0aW9uKGUpe3JldHVybiBPdChlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9UnQuY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9QXQubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxBdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fFB0LmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBPdChlKSx0LmRhdGE9UnQuY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gQ3QodCl8fChPdChlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPVJ0LmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9LEZ0PUx0LFd0PU50LHp0PVd0LnZhbGlkYXRvcnM7ZnVuY3Rpb24gWXQoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBKdCxyZXNwb25zZTpuZXcgSnR9fVl0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiBlPyh0PXR8fHt9KS51cmw9ZTp0PWV8fHt9LCh0PUZ0KHRoaXMuZGVmYXVsdHMsdCkpLm1ldGhvZD90Lm1ldGhvZD10Lm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3QubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6dC5tZXRob2Q9ImdldCI7dmFyIHI9dC50cmFuc2l0aW9uYWw7dm9pZCAwIT09ciYmV3QuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzp6dC50cmFuc2l0aW9uYWwoenQuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6enQudHJhbnNpdGlvbmFsKHp0LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6enQudHJhbnNpdGlvbmFsKHp0LmJvb2xlYW4pfSwhMSk7dmFyIG49W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJ1bldoZW4mJiExPT09ZS5ydW5XaGVuKHQpfHwoYT1hJiZlLnN5bmNocm9ub3VzLG4udW5zaGlmdChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKSl9KSk7dmFyIGksbz1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIWEpe3ZhciBzPVtCdCx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShzLG4pLHM9cy5jb25jYXQobyksaT1Qcm9taXNlLnJlc29sdmUodCk7cy5sZW5ndGg7KWk9aS50aGVuKHMuc2hpZnQoKSxzLnNoaWZ0KCkpO3JldHVybiBpfWZvcih2YXIgdT10O24ubGVuZ3RoOyl7dmFyIGM9bi5zaGlmdCgpLGY9bi5zaGlmdCgpO3RyeXt1PWModSl9Y2F0Y2goZSl7ZihlKTticmVha319dHJ5e2k9QnQodSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7by5sZW5ndGg7KWk9aS50aGVuKG8uc2hpZnQoKSxvLnNoaWZ0KCkpO3JldHVybiBpfSxZdC5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPUZ0KHRoaXMuZGVmYXVsdHMsZSksS3QoZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0scXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe1l0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoRnQocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pKSxxdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe1l0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMucmVxdWVzdChGdChufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpyfSkpfX0pKTt2YXIgR3Q9WXQsVnQ9YXQ7ZnVuY3Rpb24gWHQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHIuX2xpc3RlbmVycyl7dmFyIHQsbj1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKylyLl9saXN0ZW5lcnNbdF0oZSk7ci5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iuc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiBuLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUodCl9LG59LGUoKGZ1bmN0aW9uKGUpe3IucmVhc29ufHwoci5yZWFzb249bmV3IFZ0KGUpLHQoci5yZWFzb24pKX0pKX1YdC5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxYdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxYdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LFh0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IFh0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgJHQ9WHQsWnQ9ZmUsUXQ9ZmUsZXI9ZWUsdHI9R3QscnI9THQ7dmFyIG5yPWZ1bmN0aW9uIGUodCl7dmFyIHI9bmV3IHRyKHQpLG49ZXIodHIucHJvdG90eXBlLnJlcXVlc3Qscik7cmV0dXJuIFF0LmV4dGVuZChuLHRyLnByb3RvdHlwZSxyKSxRdC5leHRlbmQobixyKSxuLmNyZWF0ZT1mdW5jdGlvbihyKXtyZXR1cm4gZShycih0LHIpKX0sbn0oX3QpO25yLkF4aW9zPXRyLG5yLkNhbmNlbD1hdCxuci5DYW5jZWxUb2tlbj0kdCxuci5pc0NhbmNlbD1UdCxuci5WRVJTSU9OPVV0LG5yLmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9LG5yLnNwcmVhZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19LG5yLmlzQXhpb3NFcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4gWnQuaXNPYmplY3QoZSkmJiEwPT09ZS5pc0F4aW9zRXJyb3J9LFEuZXhwb3J0cz1ucixRLmV4cG9ydHMuZGVmYXVsdD1ucjt2YXIgYXIsaXI9US5leHBvcnRzO3ZhciBvcj1hcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5hdHRhY2hUb2tlbj1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLmluaXQ9dGhpcy5pbml0LmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2suYmluZCh0aGlzKX1yZXR1cm4gdShlLFt7a2V5OiJyZXF1ZXN0SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLmF0dGFjaFRva2VuKGUpO2Nhc2UgMjpyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS5zaG91bGRFbmNvZGVUb0Zvcm1EYXRhKSYmKG49bnVsbD09ZT92b2lkIDA6ZS5kYXRhLGE9bmV3IEZvcm1EYXRhLE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe2EuYXBwZW5kKGUsbltlXSl9KSksZS5kYXRhPWEpLGFyLmlzSGFuZGxlckVuYWJsZWQmJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrKGUpLHQuYWJydXB0KCJyZXR1cm4iLGUpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZXJyb3JIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXt0aHJvdyBhci5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJnRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6InN1Y2Nlc3NIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXIuaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdD1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmFyLmlzSGFuZGxlckVuYWJsZWQ9ZSx0aGlzLmF0dGFjaFRva2VuPXQ7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJlbmFibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe2FyLmlzSGFuZGxlckVuYWJsZWQ9ITB9fSx7a2V5OiJkaXNhYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXthci5pc0hhbmRsZXJFbmFibGVkPSExfX0se2tleToiZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06YXIuREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVDthci5pc0hhbmRsZXJFbmFibGVkPSExLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YXIuaXNIYW5kbGVyRW5hYmxlZD0hMH0pLGUpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWV9fV0sW3trZXk6ImdldEluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuYXhpb3NJbnN0YW5jZXx8KHRoaXMuYXhpb3NJbnN0YW5jZT1pci5jcmVhdGUoe3dpdGhDcmVkZW50aWFsczohMH0pLHRoaXMuY2xpZW50SW5zdGFuY2V8fCh0aGlzLmNsaWVudEluc3RhbmNlPW5ldyBhciksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIFMoZSx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5jbGllbnRJbnN0YW5jZS5yZXF1ZXN0SGFuZGxlcih0KTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLnN1Y2Nlc3NIYW5kbGVyKHQpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLmVycm9ySGFuZGxlcih0KX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuYWxsPWlyLmFsbCx0aGlzLmF4aW9zSW5zdGFuY2Uuc3ByZWFkPWlyLnNwcmVhZCx0aGlzLmF4aW9zSW5zdGFuY2UuaW5pdD10aGlzLmNsaWVudEluc3RhbmNlLmluaXQsdGhpcy5heGlvc0luc3RhbmNlLmVuYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5lbmFibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0PXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSx0aGlzLmF4aW9zSW5zdGFuY2V9fV0pLGV9KCk7b3IuREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVD0xZTMsb3I9YXI9ZnVuY3Rpb24oZSx0LHIsYSl7dmFyIGksbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWE/YT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6YTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3Q/InVuZGVmaW5lZCI6bihSZWZsZWN0KSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixhKTtlbHNlIGZvcih2YXIgdT1lLmxlbmd0aC0xO3U+PTA7dS0tKShpPWVbdV0pJiYocz0obzwzP2kocyk6bz4zP2kodCxyLHMpOmkodCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30oW2Z1bmN0aW9uKGUpe31dLG9yKTt2YXIgc3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpLHRoaXMuX2RhdGE9bmV3IE1hcH1yZXR1cm4gdShlLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5zZXQoZSx0KTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsbnVsbCE9PShuPW51bGw9PT0odD10aGlzLl9kYXRhKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXQoZSkpJiZ2b2lkIDAhPT1uP246Int9Iik7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuZGVsZXRlKGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6ImdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybntibG9iOihudWxsPT1lP3ZvaWQgMDplLmRhdGEpaW5zdGFuY2VvZiBCbG9iP251bGw9PWU/dm9pZCAwOmUuZGF0YTpudWxsLGRhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiEwfX19LHtrZXk6ImdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybihudWxsPT1lP3ZvaWQgMDplLnRvSlNPTikmJmRlbGV0ZSBlLnRvSlNPTix7ZXJyb3I6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiExfX19XSksZX0oKSxjcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHUoZSxudWxsLFt7a2V5OiJyZW1vdmVBdXRob3JpemF0aW9uQ29kZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1sb2NhdGlvbi5ocmVmO2hpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGUucmVwbGFjZSgvXD9jb2RlPS4qJC8sIiIpKX19LHtrZXk6ImdldFBLQ0UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShlKSkmJnZvaWQgMCE9PXQ/dDoiIn19LHtrZXk6InNldFBLQ0UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShlLHQpfX0se2tleToic2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShELGUpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oRCkpJiZ2b2lkIDAhPT1lP2U6IiJ9fSx7a2V5OiJyZW1vdmVQS0NFIix2YWx1ZTpmdW5jdGlvbihlKXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGUpfX0se2tleToiY2FuQ29udGludWVTaWduSW4iLHZhbHVlOmZ1bmN0aW9uKHQscil7cmV0dXJuISh0JiYhZS5oYXNFcnJvckluVVJMKCkmJiFlLmhhc0F1dGhTZWFyY2hQYXJhbXNJblVSTCgpJiYhcil9fSx7a2V5OiJpc0luaXRpYWxpemVkU2lsZW50U2lnbkluIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBlLmlzU2lsZW50U3RhdGVQcmVzZW50SW5VUkwoKX19LHtrZXk6Indhc1NpZ25JbkNhbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCFlLmhhc0Vycm9ySW5VUkwoKSYmIWUuaGFzQXV0aFNlYXJjaFBhcmFtc0luVVJMKCl8fHRoaXMuaXNTaWxlbnRTdGF0ZVByZXNlbnRJblVSTCgpKX19LHtrZXk6Indhc1NpbGVudFNpZ25JbkNhbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJpbml0aWFsaXplZC1zaWxlbnQtc2lnbi1pbiIpLHQ9ZT9KU09OLnBhcnNlKGUpOm51bGw7cmV0dXJuIEJvb2xlYW4odCl9fSx7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIUouaXNTaWduT3V0U3VjY2Vzc2Z1bCh3aW5kb3cubG9jYXRpb24uaHJlZikpe2UubmV4dD02O2JyZWFrfXJldHVybiB0PXdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCI/IilbMF0saGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsdCksZS5uZXh0PTUsSi5jbGVhclVzZXJTZXNzaW9uRGF0YSgpO2Nhc2UgNTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsITApO2Nhc2UgNjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX19LHtrZXk6ImRpZFNpZ25PdXRGYWlsIix2YWx1ZTpmdW5jdGlvbigpe2lmKEouZGlkU2lnbk91dEZhaWwod2luZG93LmxvY2F0aW9uLmhyZWYpKXt2YXIgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx0PWUuc2VhcmNoUGFyYW1zLmdldChXKSxyPWUuc2VhcmNoUGFyYW1zLmdldCh6KSxuPXdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCI/IilbMF07cmV0dXJuIGhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLG4pLHtkZXNjcmlwdGlvbjpudWxsIT1yP3I6IiIsZXJyb3I6bnVsbCE9dD90OiIifX1yZXR1cm4hMX19LHtrZXk6ImlzU2lsZW50U3RhdGVQcmVzZW50SW5VUkwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpO3JldHVybiBudWxsIT09KGU9bnVsbD09dD92b2lkIDA6dC5pbmNsdWRlcygic2lnbi1pbi1zaWxlbnRseSIpKSYmdm9pZCAwIT09ZSYmZX19LHtrZXk6Imhhc0F1dGhTZWFyY2hQYXJhbXNJblVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LmxvY2F0aW9uLnNlYXJjaCx0PS9bPyZdY29kZT1bXiZdKy87cmV0dXJuIHQudGVzdChlKX19LHtrZXk6Imhhc0Vycm9ySW5VUkwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdy5sb2NhdGlvbi5ocmVmLHQ9bmV3IFVSTChlKTtyZXR1cm4hIXQuc2VhcmNoUGFyYW1zLmdldChXKSYmdC5zZWFyY2hQYXJhbXMuZ2V0KEcpIT09T319LHtrZXk6ImNhblNlbmRQcm9tcHROb25lUmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKEYpO3JldHVybiEoZT9KU09OLnBhcnNlKGUpOm51bGwpfX0se2tleToic2V0UHJvbXB0Tm9uZVJlcXVlc3RTZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKEYsSlNPTi5zdHJpbmdpZnkoZSkpfX0se2tleToid2FpdFRpbGxQYWdlUmVkaXJlY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG49bnVsbCE9ZT9lOjNlMyx0Lm5leHQ9MyxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoZSwxZTMqbil9KSk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfX1dKSxlfSgpLGZyPVtdLGxyPVtdLGhyPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LHByPSExO2Z1bmN0aW9uIGRyKCl7cHI9ITA7Zm9yKHZhciBlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIix0PTAscj1lLmxlbmd0aDt0PHI7Kyt0KWZyW3RdPWVbdF0sbHJbZS5jaGFyQ29kZUF0KHQpXT10O2xyWyItIi5jaGFyQ29kZUF0KDApXT02MixsclsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gdnIoZSx0LHIpe2Zvcih2YXIgbixhLGk9W10sbz10O288cjtvKz0zKW49KGVbb108PDE2KSsoZVtvKzFdPDw4KStlW28rMl0saS5wdXNoKGZyWyhhPW4pPj4xOCY2M10rZnJbYT4+MTImNjNdK2ZyW2E+PjYmNjNdK2ZyWzYzJmFdKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBncihlKXt2YXIgdDtwcnx8ZHIoKTtmb3IodmFyIHI9ZS5sZW5ndGgsbj1yJTMsYT0iIixpPVtdLG89MTYzODMscz0wLHU9ci1uO3M8dTtzKz1vKWkucHVzaCh2cihlLHMscytvPnU/dTpzK28pKTtyZXR1cm4gMT09PW4/KHQ9ZVtyLTFdLGErPWZyW3Q+PjJdLGErPWZyW3Q8PDQmNjNdLGErPSI9PSIpOjI9PT1uJiYodD0oZVtyLTJdPDw4KStlW3ItMV0sYSs9ZnJbdD4+MTBdLGErPWZyW3Q+PjQmNjNdLGErPWZyW3Q8PDImNjNdLGErPSI9IiksaS5wdXNoKGEpLGkuam9pbigiIil9ZnVuY3Rpb24geXIoZSx0LHIsbixhKXt2YXIgaSxvLHM9OCphLW4tMSx1PSgxPDxzKS0xLGM9dT4+MSxmPS03LGw9cj9hLTE6MCxoPXI/LTE6MSxwPWVbdCtsXTtmb3IobCs9aCxpPXAmKDE8PC1mKS0xLHA+Pj0tZixmKz1zO2Y+MDtpPTI1NippK2VbdCtsXSxsKz1oLGYtPTgpO2ZvcihvPWkmKDE8PC1mKS0xLGk+Pj0tZixmKz1uO2Y+MDtvPTI1NipvK2VbdCtsXSxsKz1oLGYtPTgpO2lmKDA9PT1pKWk9MS1jO2Vsc2V7aWYoaT09PXUpcmV0dXJuIG8/TmFOOjEvMCoocD8tMToxKTtvKz1NYXRoLnBvdygyLG4pLGktPWN9cmV0dXJuKHA/LTE6MSkqbypNYXRoLnBvdygyLGktbil9ZnVuY3Rpb24gbXIoZSx0LHIsbixhLGkpe3ZhciBvLHMsdSxjPTgqaS1hLTEsZj0oMTw8YyktMSxsPWY+PjEsaD0yMz09PWE/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLHA9bj8wOmktMSxkPW4/MTotMSx2PXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NYXRoLmFicyh0KSxpc05hTih0KXx8dD09PTEvMD8ocz1pc05hTih0KT8xOjAsbz1mKToobz1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSx0Kih1PU1hdGgucG93KDIsLW8pKTwxJiYoby0tLHUqPTIpLCh0Kz1vK2w+PTE/aC91OmgqTWF0aC5wb3coMiwxLWwpKSp1Pj0yJiYobysrLHUvPTIpLG8rbD49Zj8ocz0wLG89Zik6bytsPj0xPyhzPSh0KnUtMSkqTWF0aC5wb3coMixhKSxvKz1sKToocz10Kk1hdGgucG93KDIsbC0xKSpNYXRoLnBvdygyLGEpLG89MCkpO2E+PTg7ZVtyK3BdPTI1NSZzLHArPWQscy89MjU2LGEtPTgpO2ZvcihvPW88PGF8cyxjKz1hO2M+MDtlW3IrcF09MjU1Jm8scCs9ZCxvLz0yNTYsYy09OCk7ZVtyK3AtZF18PTEyOCp2fXZhciB3cj17fS50b1N0cmluZyxicj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT13ci5jYWxsKGUpfTtTci5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMD09PXllLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHllLlRZUEVEX0FSUkFZX1NVUFBPUlQ7dmFyIGtyPXhyKCk7ZnVuY3Rpb24geHIoKXtyZXR1cm4gU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gX3IoZSx0KXtpZih4cigpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9bmV3IFVpbnQ4QXJyYXkodCkpLl9fcHJvdG9fXz1Tci5wcm90b3R5cGU6KG51bGw9PT1lJiYoZT1uZXcgU3IodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gU3IoZSx0LHIpe2lmKCEoU3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIFNyKSlyZXR1cm4gbmV3IFNyKGUsdCxyKTtpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIklmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7cmV0dXJuIEFyKHRoaXMsZSl9cmV0dXJuIEVyKHRoaXMsZSx0LHIpfWZ1bmN0aW9uIEVyKGUsdCxyLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKHQuYnl0ZUxlbmd0aCxyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7dD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbik7U3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT10KS5fX3Byb3RvX189U3IucHJvdG90eXBlOmU9UnIoZSx0KTtyZXR1cm4gZX0oZSx0LHIsbik6InN0cmluZyI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09dHlwZW9mIHImJiIiIT09cnx8KHI9InV0ZjgiKTtpZighU3IuaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTt2YXIgbj0wfERyKHQsciksYT0oZT1fcihlLG4pKS53cml0ZSh0LHIpO2EhPT1uJiYoZT1lLnNsaWNlKDAsYSkpO3JldHVybiBlfShlLHQscik6ZnVuY3Rpb24oZSx0KXtpZihQcih0KSl7dmFyIHI9MHxDcih0Lmxlbmd0aCk7cmV0dXJuIDA9PT0oZT1fcihlLHIpKS5sZW5ndGh8fHQuY29weShlLDAsMCxyKSxlfWlmKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gdClyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQubGVuZ3RofHwobj10Lmxlbmd0aCkhPW4/X3IoZSwwKTpScihlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZicih0LmRhdGEpKXJldHVybiBScihlLHQuZGF0YSl9dmFyIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfShlLHQpfWZ1bmN0aW9uIFRyKGUpe2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJyl9ZnVuY3Rpb24gQXIoZSx0KXtpZihUcih0KSxlPV9yKGUsdDwwPzA6MHxDcih0KSksIVNyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKHZhciByPTA7cjx0OysrcillW3JdPTA7cmV0dXJuIGV9ZnVuY3Rpb24gUnIoZSx0KXt2YXIgcj10Lmxlbmd0aDwwPzA6MHxDcih0Lmxlbmd0aCk7ZT1fcihlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gQ3IoZSl7aWYoZT49eHIoKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIreHIoKS50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfGV9ZnVuY3Rpb24gUHIoZSl7cmV0dXJuIShudWxsPT1lfHwhZS5faXNCdWZmZXIpfWZ1bmN0aW9uIERyKGUsdCl7aWYoUHIoZSkpcmV0dXJuIGUubGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcmJihBcnJheUJ1ZmZlci5pc1ZpZXcoZSl8fGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpcmV0dXJuIGUuYnl0ZUxlbmd0aDsic3RyaW5nIiE9dHlwZW9mIGUmJihlPSIiK2UpO3ZhciByPWUubGVuZ3RoO2lmKDA9PT1yKXJldHVybiAwO2Zvcih2YXIgbj0hMTs7KXN3aXRjaCh0KXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiByO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSB2b2lkIDA6cmV0dXJuIGFuKGUpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqcjtjYXNlImhleCI6cmV0dXJuIHI+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gb24oZSkubGVuZ3RoO2RlZmF1bHQ6aWYobilyZXR1cm4gYW4oZSkubGVuZ3RoO3Q9KCIiK3QpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gT3IoZSx0LHIpe3ZhciBuPSExO2lmKCh2b2lkIDA9PT10fHx0PDApJiYodD0wKSx0PnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuIiI7aWYoKHI+Pj49MCk8PSh0Pj4+PTApKXJldHVybiIiO2ZvcihlfHwoZT0idXRmOCIpOzspc3dpdGNoKGUpe2Nhc2UiaGV4IjpyZXR1cm4gWXIodGhpcyx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIEJyKHRoaXMsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4gV3IodGhpcyx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHpyKHRoaXMsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIEpyKHRoaXMsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEdyKHRoaXMsdCxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPShlKyIiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIElyKGUsdCxyKXt2YXIgbj1lW3RdO2VbdF09ZVtyXSxlW3JdPW59ZnVuY3Rpb24gTHIoZSx0LHIsbixhKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuLTE7aWYoInN0cmluZyI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxyPStyLGlzTmFOKHIpJiYocj1hPzA6ZS5sZW5ndGgtMSkscjwwJiYocj1lLmxlbmd0aCtyKSxyPj1lLmxlbmd0aCl7aWYoYSlyZXR1cm4tMTtyPWUubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFhKXJldHVybi0xO3I9MH1pZigic3RyaW5nIj09dHlwZW9mIHQmJih0PVNyLmZyb20odCxuKSksUHIodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTpVcihlLHQscixuLGEpO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2E/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxyKTpVcihlLFt0XSxyLG4sYSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gVXIoZSx0LHIsbixhKXt2YXIgaSxvPTEscz1lLmxlbmd0aCx1PXQubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJigidWNzMiI9PT0obj1TdHJpbmcobikudG9Mb3dlckNhc2UoKSl8fCJ1Y3MtMiI9PT1ufHwidXRmMTZsZSI9PT1ufHwidXRmLTE2bGUiPT09bikpe2lmKGUubGVuZ3RoPDJ8fHQubGVuZ3RoPDIpcmV0dXJuLTE7bz0yLHMvPTIsdS89MixyLz0yfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gMT09PW8/ZVt0XTplLnJlYWRVSW50MTZCRSh0Km8pfWlmKGEpe3ZhciBmPS0xO2ZvcihpPXI7aTxzO2krKylpZihjKGUsaSk9PT1jKHQsLTE9PT1mPzA6aS1mKSl7aWYoLTE9PT1mJiYoZj1pKSxpLWYrMT09PXUpcmV0dXJuIGYqb31lbHNlLTEhPT1mJiYoaS09aS1mKSxmPS0xfWVsc2UgZm9yKHIrdT5zJiYocj1zLXUpLGk9cjtpPj0wO2ktLSl7Zm9yKHZhciBsPSEwLGg9MDtoPHU7aCsrKWlmKGMoZSxpK2gpIT09Yyh0LGgpKXtsPSExO2JyZWFrfWlmKGwpcmV0dXJuIGl9cmV0dXJuLTF9ZnVuY3Rpb24gSHIoZSx0LHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGE9ZS5sZW5ndGgtcjtuPyhuPU51bWJlcihuKSk+YSYmKG49YSk6bj1hO3ZhciBpPXQubGVuZ3RoO2lmKGklMiE9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtuPmkvMiYmKG49aS8yKTtmb3IodmFyIG89MDtvPG47KytvKXt2YXIgcz1wYXJzZUludCh0LnN1YnN0cigyKm8sMiksMTYpO2lmKGlzTmFOKHMpKXJldHVybiBvO2VbcitvXT1zfXJldHVybiBvfWZ1bmN0aW9uIE1yKGUsdCxyLG4pe3JldHVybiBzbihhbih0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBqcihlLHQscixuKXtyZXR1cm4gc24oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChyKSk7cmV0dXJuIHR9KHQpLGUscixuKX1mdW5jdGlvbiBOcihlLHQscixuKXtyZXR1cm4ganIoZSx0LHIsbil9ZnVuY3Rpb24gcXIoZSx0LHIsbil7cmV0dXJuIHNuKG9uKHQpLGUscixuKX1mdW5jdGlvbiBLcihlLHQscixuKXtyZXR1cm4gc24oZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbixhLGk9W10sbz0wO288ZS5sZW5ndGgmJiEoKHQtPTIpPDApOysrbyluPShyPWUuY2hhckNvZGVBdChvKSk+PjgsYT1yJTI1NixpLnB1c2goYSksaS5wdXNoKG4pO3JldHVybiBpfSh0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBKcihlLHQscil7cmV0dXJuIDA9PT10JiZyPT09ZS5sZW5ndGg/Z3IoZSk6Z3IoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiBCcihlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG49W10sYT10O2E8cjspe3ZhciBpLG8scyx1LGM9ZVthXSxmPW51bGwsbD1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKGErbDw9cilzd2l0Y2gobCl7Y2FzZSAxOmM8MTI4JiYoZj1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPWVbYSsxXSkpJiYodT0oMzEmYyk8PDZ8NjMmaSk+MTI3JiYoZj11KTticmVhaztjYXNlIDM6aT1lW2ErMV0sbz1lW2ErMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJih1PSgxNSZjKTw8MTJ8KDYzJmkpPDw2fDYzJm8pPjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGY9dSk7YnJlYWs7Y2FzZSA0Omk9ZVthKzFdLG89ZVthKzJdLHM9ZVthKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImcykmJih1PSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmbyk8PDZ8NjMmcyk+NjU1MzUmJnU8MTExNDExMiYmKGY9dSl9bnVsbD09PWY/KGY9NjU1MzMsbD0xKTpmPjY1NTM1JiYoZi09NjU1MzYsbi5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfDEwMjMmZiksbi5wdXNoKGYpLGErPWx9cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PUZyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz1GcikpO3JldHVybiByfShuKX1Tci5wb29sU2l6ZT04MTkyLFNyLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz1Tci5wcm90b3R5cGUsZX0sU3IuZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEVyKG51bGwsZSx0LHIpfSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYoU3IucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxTci5fX3Byb3RvX189VWludDhBcnJheSksU3IuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gVHIodCksdDw9MD9fcihlLHQpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBuP19yKGUsdCkuZmlsbChyLG4pOl9yKGUsdCkuZmlsbChyKTpfcihlLHQpfShudWxsLGUsdCxyKX0sU3IuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFyKG51bGwsZSl9LFNyLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gQXIobnVsbCxlKX0sU3IuaXNCdWZmZXI9dW4sU3IuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFQcihlKXx8IVByKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCxhPTAsaT1NYXRoLm1pbihyLG4pO2E8aTsrK2EpaWYoZVthXSE9PXRbYV0pe3I9ZVthXSxuPXRbYV07YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSxTci5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxTci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighYnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gU3IuYWxsb2MoMCk7dmFyIHI7aWYodm9pZCAwPT09dClmb3IodD0wLHI9MDtyPGUubGVuZ3RoOysrcil0Kz1lW3JdLmxlbmd0aDt2YXIgbj1Tci5hbGxvY1Vuc2FmZSh0KSxhPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighUHIoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLGEpLGErPWkubGVuZ3RofXJldHVybiBufSxTci5ieXRlTGVuZ3RoPURyLFNyLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsU3IucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilJcih0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sU3IucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NClJcih0aGlzLHQsdCszKSxJcih0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxTci5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz04KUlyKHRoaXMsdCx0KzcpLElyKHRoaXMsdCsxLHQrNiksSXIodGhpcyx0KzIsdCs1KSxJcih0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxTci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9Ccih0aGlzLDAsZSk6T3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxTci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFQcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09U3IuY29tcGFyZSh0aGlzLGUpfSxTci5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxTci5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQscixuLGEpe2lmKCFQcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1hJiYoYT10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fGE+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKG4+PWEmJnQ+PXIpcmV0dXJuIDA7aWYobj49YSlyZXR1cm4tMTtpZih0Pj1yKXJldHVybiAxO2lmKHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgaT0oYT4+Pj0wKS0obj4+Pj0wKSxvPShyPj4+PTApLSh0Pj4+PTApLHM9TWF0aC5taW4oaSxvKSx1PXRoaXMuc2xpY2UobixhKSxjPWUuc2xpY2UodCxyKSxmPTA7ZjxzOysrZilpZih1W2ZdIT09Y1tmXSl7aT11W2ZdLG89Y1tmXTticmVha31yZXR1cm4gaTxvPy0xOm88aT8xOjB9LFNyLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoZSx0LHIpfSxTci5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIExyKHRoaXMsZSx0LHIsITApfSxTci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMcih0aGlzLGUsdCxyLCExKX0sU3IucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMD09PXQpbj0idXRmOCIscj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBhPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+YSkmJihyPWEpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIGk9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBIcih0aGlzLGUsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBNcih0aGlzLGUsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4ganIodGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gTnIodGhpcyxlLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBxcih0aGlzLGUsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEtyKHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksaT0hMH19LFNyLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBGcj00MDk2O2Z1bmN0aW9uIFdyKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24genIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbYV0pO3JldHVybiBufWZ1bmN0aW9uIFlyKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIGE9IiIsaT10O2k8cjsrK2kpYSs9bm4oZVtpXSk7cmV0dXJuIGF9ZnVuY3Rpb24gR3IoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksYT0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gYX1mdW5jdGlvbiBWcihlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gWHIoZSx0LHIsbixhLGkpe2lmKCFQcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5hfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gJHIoZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgYT0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTthPGk7KythKWVbcithXT0odCYyNTU8PDgqKG4/YToxLWEpKT4+PjgqKG4/YToxLWEpfWZ1bmN0aW9uIFpyKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgYT0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTthPGk7KythKWVbcithXT10Pj4+OCoobj9hOjMtYSkmMjU1fWZ1bmN0aW9uIFFyKGUsdCxyLG4sYSxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gZW4oZSx0LHIsbixhKXtyZXR1cm4gYXx8UXIoZSwwLHIsNCksbXIoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gdG4oZSx0LHIsbixhKXtyZXR1cm4gYXx8UXIoZSwwLHIsOCksbXIoZSx0LHIsbiw1Miw4KSxyKzh9U3IucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aDtpZigoZT1+fmUpPDA/KGUrPW4pPDAmJihlPTApOmU+biYmKGU9biksKHQ9dm9pZCAwPT09dD9uOn5+dCk8MD8odCs9bik8MCYmKHQ9MCk6dD5uJiYodD1uKSx0PGUmJih0PWUpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQpKHI9dGhpcy5zdWJhcnJheShlLHQpKS5fX3Byb3RvX189U3IucHJvdG90eXBlO2Vsc2V7dmFyIGE9dC1lO3I9bmV3IFNyKGEsdm9pZCAwKTtmb3IodmFyIGk9MDtpPGE7KytpKXJbaV09dGhpc1tpK2VdfXJldHVybiByfSxTci5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0sYT0xLGk9MDsrK2k8dCYmKGEqPTI1Nik7KW4rPXRoaXNbZStpXSphO3JldHVybiBufSxTci5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZSstLXRdLGE9MTt0PjAmJihhKj0yNTYpOyluKz10aGlzW2UrLS10XSphO3JldHVybiBufSxTci5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0sU3IucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxTci5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXTw8OHx0aGlzW2UrMV19LFNyLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxTci5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sU3IucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0sYT0xLGk9MDsrK2k8dCYmKGEqPTI1Nik7KW4rPXRoaXNbZStpXSphO3JldHVybiBuPj0oYSo9MTI4KSYmKG4tPU1hdGgucG93KDIsOCp0KSksbn0sU3IucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXQsYT0xLGk9dGhpc1tlKy0tbl07bj4wJiYoYSo9MjU2KTspaSs9dGhpc1tlKy0tbl0qYTtyZXR1cm4gaT49KGEqPTEyOCkmJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LFNyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSxTci5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXt0fHxWcihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZV18dGhpc1tlKzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxTci5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxWcihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxTci5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LFNyLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDI0fHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXX0sU3IucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsNCx0aGlzLmxlbmd0aCkseXIodGhpcyxlLCEwLDIzLDQpfSxTci5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITEsMjMsNCl9LFNyLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw4LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITAsNTIsOCl9LFNyLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw4LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITEsNTIsOCl9LFNyLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fFhyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9MSxpPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihhKj0yNTYpOyl0aGlzW3QraV09ZS9hJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxYcih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBhPXItMSxpPTE7Zm9yKHRoaXNbdCthXT0yNTUmZTstLWE+PTAmJihpKj0yNTYpOyl0aGlzW3QrYV09ZS9pJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwxLDI1NSwwKSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSx0aGlzW3RdPTI1NSZlLHQrMX0sU3IucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiw2NTUzNSwwKSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6JHIodGhpcyxlLHQsITApLHQrMn0sU3IucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiw2NTUzNSwwKSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6JHIodGhpcyxlLHQsITEpLHQrMn0sU3IucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6WnIodGhpcyxlLHQsITApLHQrNH0sU3IucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6WnIodGhpcyxlLHQsITEpLHQrNH0sU3IucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtYcih0aGlzLGUsdCxyLGEtMSwtYSl9dmFyIGk9MCxvPTEscz0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYobyo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpLTFdJiYocz0xKSx0aGlzW3QraV09KGUvbz4+MCktcyYyNTU7cmV0dXJuIHQrcn0sU3IucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtYcih0aGlzLGUsdCxyLGEtMSwtYSl9dmFyIGk9ci0xLG89MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihvKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9vPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDEsMTI3LC0xMjgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LFNyLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTokcih0aGlzLGUsdCwhMCksdCsyfSxTci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6JHIodGhpcyxlLHQsITEpLHQrMn0sU3IucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6WnIodGhpcyxlLHQsITApLHQrNH0sU3IucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6WnIodGhpcyxlLHQsITEpLHQrNH0sU3IucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVuKHRoaXMsZSx0LCEwLHIpfSxTci5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZW4odGhpcyxlLHQsITEscil9LFNyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdG4odGhpcyxlLHQsITAscil9LFNyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdG4odGhpcyxlLHQsITEscil9LFNyLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIGEsaT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihhPWktMTthPj0wOy0tYSllW2ErdF09dGhpc1thK3JdO2Vsc2UgaWYoaTwxZTN8fCFTci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihhPTA7YTxpOysrYSllW2ErdF09dGhpc1thK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHIscitpKSx0KTtyZXR1cm4gaX0sU3IucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQ/KG49dCx0PTAscj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGE9ZS5jaGFyQ29kZUF0KDApO2E8MjU2JiYoZT1hKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIVNyLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBvPVByKGUpP2U6YW4obmV3IFNyKGUsbikudG9TdHJpbmcoKSkscz1vLmxlbmd0aDtmb3IoaT0wO2k8ci10OysraSl0aGlzW2krdF09b1tpJXNdfXJldHVybiB0aGlzfTt2YXIgcm49L1teK1wvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gbm4oZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGFuKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGE9bnVsbCxpPVtdLG89MDtvPG47KytvKXtpZigocj1lLmNoYXJDb2RlQXQobykpPjU1Mjk1JiZyPDU3MzQ0KXtpZighYSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKG8rMT09PW4peyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1hPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpLGE9cjtjb250aW51ZX1yPTY1NTM2KyhhLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGEmJih0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtpZihhPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2kucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7aS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2kucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7aS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiBvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaSxvO3ByfHxkcigpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxvPW5ldyBocigzKnMvNC1pKSxuPWk+MD9zLTQ6czt2YXIgdT0wO2Zvcih0PTAscj0wO3Q8bjt0Kz00LHIrPTMpYT1scltlLmNoYXJDb2RlQXQodCldPDwxOHxscltlLmNoYXJDb2RlQXQodCsxKV08PDEyfGxyW2UuY2hhckNvZGVBdCh0KzIpXTw8NnxscltlLmNoYXJDb2RlQXQodCszKV0sb1t1KytdPWE+PjE2JjI1NSxvW3UrK109YT4+OCYyNTUsb1t1KytdPTI1NSZhO3JldHVybiAyPT09aT8oYT1scltlLmNoYXJDb2RlQXQodCldPDwyfGxyW2UuY2hhckNvZGVBdCh0KzEpXT4+NCxvW3UrK109MjU1JmEpOjE9PT1pJiYoYT1scltlLmNoYXJDb2RlQXQodCldPDwxMHxscltlLmNoYXJDb2RlQXQodCsxKV08PDR8bHJbZS5jaGFyQ29kZUF0KHQrMildPj4yLG9bdSsrXT1hPj44JjI1NSxvW3UrK109MjU1JmEpLG99KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2Uocm4sIiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO2UubGVuZ3RoJTQhPTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIHNuKGUsdCxyLG4pe2Zvcih2YXIgYT0wO2E8biYmIShhK3I+PXQubGVuZ3RofHxhPj1lLmxlbmd0aCk7KythKXRbYStyXT1lW2FdO3JldHVybiBhfWZ1bmN0aW9uIHVuKGUpe3JldHVybiBudWxsIT1lJiYoISFlLl9pc0J1ZmZlcnx8Y24oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlYWRGbG9hdExFJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zbGljZSYmY24oZS5zbGljZSgwLDApKX0oZSkpfWZ1bmN0aW9uIGNuKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIGZuPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJ1ZmZlcjpTcixJTlNQRUNUX01BWF9CWVRFUzo1MCxTbG93QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybitlIT1lJiYoZT0wKSxTci5hbGxvYygrZSl9LGlzQnVmZmVyOnVuLGtNYXhMZW5ndGg6a3J9KSxsbj17ZXhwb3J0czp7fX0saG49e30scG49e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHBuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxwbi5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLHI9dCU0O2lmKCFyKXJldHVybiBlO3ZhciBuPXQsYT00LXIsaT10K2Esbz1Tci5hbGxvYyhpKTtmb3Ioby53cml0ZShlKTthLS07KW8ud3JpdGUoIj0iLG4rKyk7cmV0dXJuIG8udG9TdHJpbmcoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGhuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZG49cG47ZnVuY3Rpb24gdm4oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxTci5pc0J1ZmZlcihlKT95bihlLnRvU3RyaW5nKCJiYXNlNjQiKSk6eW4oU3IuZnJvbShlLHQpLnRvU3RyaW5nKCJiYXNlNjQiKSl9ZnVuY3Rpb24gZ24oZSl7cmV0dXJuIGU9ZS50b1N0cmluZygpLGRuLmRlZmF1bHQoZSkucmVwbGFjZSgvXC0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpfWZ1bmN0aW9uIHluKGUpe3JldHVybiBlLnJlcGxhY2UoLz0vZywiIikucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKX12YXIgbW4sd249dm47d24uZW5jb2RlPXZuLHduLmRlY29kZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFNyLmZyb20oZ24oZSksImJhc2U2NCIpLnRvU3RyaW5nKHQpfSx3bi50b0Jhc2U2ND1nbix3bi5mcm9tQmFzZTY0PXluLHduLnRvQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKGduKGUpLCJiYXNlNjQiKX0saG4uZGVmYXVsdD13biwobW49bG4pLmV4cG9ydHM9aG4uZGVmYXVsdCxtbi5leHBvcnRzLmRlZmF1bHQ9bW4uZXhwb3J0czt2YXIgYm49bG4uZXhwb3J0cyxrbj17ZXhwb3J0czp7fX07IWZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0LHIpe3ZhciBuPXt9OyFmdW5jdGlvbihlKXtlLl9fZXNNb2R1bGU9ITAsZS5kaWdlc3RMZW5ndGg9MzIsZS5ibG9ja1NpemU9NjQ7dmFyIHQ9bmV3IFVpbnQzMkFycmF5KFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKTtmdW5jdGlvbiByKGUscixuLGEsaSl7Zm9yKHZhciBvLHMsdSxjLGYsbCxoLHAsZCx2LGcseSxtO2k+PTY0Oyl7Zm9yKG89clswXSxzPXJbMV0sdT1yWzJdLGM9clszXSxmPXJbNF0sbD1yWzVdLGg9cls2XSxwPXJbN10sdj0wO3Y8MTY7disrKWc9YSs0KnYsZVt2XT0oMjU1Jm5bZ10pPDwyNHwoMjU1Jm5bZysxXSk8PDE2fCgyNTUmbltnKzJdKTw8OHwyNTUmbltnKzNdO2Zvcih2PTE2O3Y8NjQ7disrKXk9KChkPWVbdi0yXSk+Pj4xN3xkPDwxNSleKGQ+Pj4xOXxkPDwxMyleZD4+PjEwLG09KChkPWVbdi0xNV0pPj4+N3xkPDwyNSleKGQ+Pj4xOHxkPDwxNCleZD4+PjMsZVt2XT0oeStlW3YtN118MCkrKG0rZVt2LTE2XXwwKTtmb3Iodj0wO3Y8NjQ7disrKXk9KCgoZj4+PjZ8Zjw8MjYpXihmPj4+MTF8Zjw8MjEpXihmPj4+MjV8Zjw8NykpKyhmJmxefmYmaCl8MCkrKHArKHRbdl0rZVt2XXwwKXwwKXwwLG09KChvPj4+MnxvPDwzMCleKG8+Pj4xM3xvPDwxOSleKG8+Pj4yMnxvPDwxMCkpKyhvJnNebyZ1XnMmdSl8MCxwPWgsaD1sLGw9ZixmPWMreXwwLGM9dSx1PXMscz1vLG89eSttfDA7clswXSs9byxyWzFdKz1zLHJbMl0rPXUsclszXSs9YyxyWzRdKz1mLHJbNV0rPWwscls2XSs9aCxyWzddKz1wLGErPTY0LGktPTY0fXJldHVybiBhfXZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZGlnZXN0TGVuZ3RoPWUuZGlnZXN0TGVuZ3RoLHRoaXMuYmxvY2tTaXplPWUuYmxvY2tTaXplLHRoaXMuc3RhdGU9bmV3IEludDMyQXJyYXkoOCksdGhpcy50ZW1wPW5ldyBJbnQzMkFycmF5KDY0KSx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxMjgpLHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5yZXNldCgpfXJldHVybiB0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlWzBdPTE3NzkwMzM3MDMsdGhpcy5zdGF0ZVsxXT0zMTQ0MTM0Mjc3LHRoaXMuc3RhdGVbMl09MTAxMzkwNDI0Mix0aGlzLnN0YXRlWzNdPTI3NzM0ODA3NjIsdGhpcy5zdGF0ZVs0XT0xMzU5ODkzMTE5LHRoaXMuc3RhdGVbNV09MjYwMDgyMjkyNCx0aGlzLnN0YXRlWzZdPTUyODczNDYzNSx0aGlzLnN0YXRlWzddPTE1NDE0NTkyMjUsdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5idWZmZXIubGVuZ3RoO2UrKyl0aGlzLmJ1ZmZlcltlXT0wO2ZvcihlPTA7ZTx0aGlzLnRlbXAubGVuZ3RoO2UrKyl0aGlzLnRlbXBbZV09MDt0aGlzLnJlc2V0KCl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXQmJih0PWUubGVuZ3RoKSx0aGlzLmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiU0hBMjU2OiBjYW4ndCB1cGRhdGUgYmVjYXVzZSBoYXNoIHdhcyBmaW5pc2hlZC4iKTt2YXIgbj0wO2lmKHRoaXMuYnl0ZXNIYXNoZWQrPXQsdGhpcy5idWZmZXJMZW5ndGg+MCl7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw2NCYmdD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tOzY0PT09dGhpcy5idWZmZXJMZW5ndGgmJihyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsNjQpLHRoaXMuYnVmZmVyTGVuZ3RoPTApfWZvcih0Pj02NCYmKG49cih0aGlzLnRlbXAsdGhpcy5zdGF0ZSxlLG4sdCksdCU9NjQpO3Q+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmZpbmlzaGVkKXt2YXIgdD10aGlzLmJ5dGVzSGFzaGVkLG49dGhpcy5idWZmZXJMZW5ndGgsYT10LzUzNjg3MDkxMnwwLGk9dDw8MyxvPXQlNjQ8NTY/NjQ6MTI4O3RoaXMuYnVmZmVyW25dPTEyODtmb3IodmFyIHM9bisxO3M8by04O3MrKyl0aGlzLmJ1ZmZlcltzXT0wO3RoaXMuYnVmZmVyW28tOF09YT4+PjI0JjI1NSx0aGlzLmJ1ZmZlcltvLTddPWE+Pj4xNiYyNTUsdGhpcy5idWZmZXJbby02XT1hPj4+OCYyNTUsdGhpcy5idWZmZXJbby01XT1hPj4+MCYyNTUsdGhpcy5idWZmZXJbby00XT1pPj4+MjQmMjU1LHRoaXMuYnVmZmVyW28tM109aT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltvLTJdPWk+Pj44JjI1NSx0aGlzLmJ1ZmZlcltvLTFdPWk+Pj4wJjI1NSxyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsbyksdGhpcy5maW5pc2hlZD0hMH1mb3Iocz0wO3M8ODtzKyspZVs0KnMrMF09dGhpcy5zdGF0ZVtzXT4+PjI0JjI1NSxlWzQqcysxXT10aGlzLnN0YXRlW3NdPj4+MTYmMjU1LGVbNCpzKzJdPXRoaXMuc3RhdGVbc10+Pj44JjI1NSxlWzQqcyszXT10aGlzLnN0YXRlW3NdPj4+MCYyNTU7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sdC5wcm90b3R5cGUuX3NhdmVTdGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuc3RhdGUubGVuZ3RoO3QrKyllW3RdPXRoaXMuc3RhdGVbdF19LHQucHJvdG90eXBlLl9yZXN0b3JlU3RhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHRoaXMuc3RhdGUubGVuZ3RoO3IrKyl0aGlzLnN0YXRlW3JdPWVbcl07dGhpcy5ieXRlc0hhc2hlZD10LHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5idWZmZXJMZW5ndGg9MH0sdH0oKTtlLkhhc2g9bjt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5pbm5lcj1uZXcgbix0aGlzLm91dGVyPW5ldyBuLHRoaXMuYmxvY2tTaXplPXRoaXMuaW5uZXIuYmxvY2tTaXplLHRoaXMuZGlnZXN0TGVuZ3RoPXRoaXMuaW5uZXIuZGlnZXN0TGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KHRoaXMuYmxvY2tTaXplKTtpZihlLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSkobmV3IG4pLnVwZGF0ZShlKS5maW5pc2godCkuY2xlYW4oKTtlbHNlIGZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXRbcl09ZVtyXTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTU0O3RoaXMuaW5uZXIudXBkYXRlKHQpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49MTA2O3RoaXMub3V0ZXIudXBkYXRlKHQpLHRoaXMuaXN0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLm9zdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5pbm5lci5fc2F2ZVN0YXRlKHRoaXMuaXN0YXRlKSx0aGlzLm91dGVyLl9zYXZlU3RhdGUodGhpcy5vc3RhdGUpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT0wfXJldHVybiBlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlubmVyLl9yZXN0b3JlU3RhdGUodGhpcy5pc3RhdGUsdGhpcy5pbm5lci5ibG9ja1NpemUpLHRoaXMub3V0ZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLm9zdGF0ZSx0aGlzLm91dGVyLmJsb2NrU2l6ZSksdGhpc30sZS5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuaXN0YXRlLmxlbmd0aDtlKyspdGhpcy5vc3RhdGVbZV09dGhpcy5pc3RhdGVbZV09MDt0aGlzLmlubmVyLmNsZWFuKCksdGhpcy5vdXRlci5jbGVhbigpfSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKGUpLHRoaXN9LGUucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vdXRlci5maW5pc2hlZD90aGlzLm91dGVyLmZpbmlzaChlKToodGhpcy5pbm5lci5maW5pc2goZSksdGhpcy5vdXRlci51cGRhdGUoZSx0aGlzLmRpZ2VzdExlbmd0aCkuZmluaXNoKGUpKSx0aGlzfSxlLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LGV9KCk7ZnVuY3Rpb24gaShlKXt2YXIgdD0obmV3IG4pLnVwZGF0ZShlKSxyPXQuZGlnZXN0KCk7cmV0dXJuIHQuY2xlYW4oKSxyfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1uZXcgYShlKS51cGRhdGUodCksbj1yLmRpZ2VzdCgpO3JldHVybiByLmNsZWFuKCksbn1mdW5jdGlvbiBzKGUsdCxyLG4pe3ZhciBhPW5bMF07aWYoMD09PWEpdGhyb3cgbmV3IEVycm9yKCJoa2RmOiBjYW5ub3QgZXhwYW5kIG1vcmUiKTt0LnJlc2V0KCksYT4xJiZ0LnVwZGF0ZShlKSxyJiZ0LnVwZGF0ZShyKSx0LnVwZGF0ZShuKSx0LmZpbmlzaChlKSxuWzBdKyt9ZS5ITUFDPWEsZS5oYXNoPWksZS5kZWZhdWx0PWksZS5obWFjPW87dmFyIHU9bmV3IFVpbnQ4QXJyYXkoZS5kaWdlc3RMZW5ndGgpO2Z1bmN0aW9uIGMoZSx0LHIsbil7dm9pZCAwPT09dCYmKHQ9dSksdm9pZCAwPT09biYmKG49MzIpO2Zvcih2YXIgaT1uZXcgVWludDhBcnJheShbMV0pLGM9byh0LGUpLGY9bmV3IGEoYyksbD1uZXcgVWludDhBcnJheShmLmRpZ2VzdExlbmd0aCksaD1sLmxlbmd0aCxwPW5ldyBVaW50OEFycmF5KG4pLGQ9MDtkPG47ZCsrKWg9PT1sLmxlbmd0aCYmKHMobCxmLHIsaSksaD0wKSxwW2RdPWxbaCsrXTtyZXR1cm4gZi5jbGVhbigpLGwuZmlsbCgwKSxpLmZpbGwoMCkscH1mdW5jdGlvbiBmKGUsdCxyLG4pe2Zvcih2YXIgaT1uZXcgYShlKSxvPWkuZGlnZXN0TGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoNCksdT1uZXcgVWludDhBcnJheShvKSxjPW5ldyBVaW50OEFycmF5KG8pLGY9bmV3IFVpbnQ4QXJyYXkobiksbD0wO2wqbzxuO2wrKyl7dmFyIGg9bCsxO3NbMF09aD4+PjI0JjI1NSxzWzFdPWg+Pj4xNiYyNTUsc1syXT1oPj4+OCYyNTUsc1szXT1oPj4+MCYyNTUsaS5yZXNldCgpLGkudXBkYXRlKHQpLGkudXBkYXRlKHMpLGkuZmluaXNoKGMpO2Zvcih2YXIgcD0wO3A8bztwKyspdVtwXT1jW3BdO2ZvcihwPTI7cDw9cjtwKyspe2kucmVzZXQoKSxpLnVwZGF0ZShjKS5maW5pc2goYyk7Zm9yKHZhciBkPTA7ZDxvO2QrKyl1W2RdXj1jW2RdfWZvcihwPTA7cDxvJiZsKm8rcDxuO3ArKylmW2wqbytwXT11W3BdfWZvcihsPTA7bDxvO2wrKyl1W2xdPWNbbF09MDtmb3IobD0wO2w8NDtsKyspc1tsXT0wO3JldHVybiBpLmNsZWFuKCksZn1lLmhrZGY9YyxlLnBia2RmMj1mfShuKTt2YXIgYT1uLmRlZmF1bHQ7Zm9yKHZhciBpIGluIG4pYVtpXT1uW2ldO2UuZXhwb3J0cz1hfSgpfShrbik7dmFyIHhuPSQoa24uZXhwb3J0cyksX249Y3J5cHRvLFNuPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgQ3J5cHRvS2V5fSxFbj1uZXcgVGV4dEVuY29kZXIsVG49bmV3IFRleHREZWNvZGVyO2Z1bmN0aW9uIEFuKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG49dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5sZW5ndGh9KSwwKSxhPW5ldyBVaW50OEFycmF5KG4pLGk9MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXthLnNldChlLGkpLGkrPWUubGVuZ3RofSkpLGF9dmFyIFJuPWZ1bmN0aW9uKGUpe3ZhciB0PWU7dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJih0PVRuLmRlY29kZSh0KSksdD10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLnJlcGxhY2UoL1xzL2csIiIpO3RyeXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWF0b2IoZSkscj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKXJbbl09dC5jaGFyQ29kZUF0KG4pO3JldHVybiByfSh0KX1jYXRjaChlKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgaW5wdXQgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuIil9fSxDbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pPU0VfR0VORVJJQyIsbi5uYW1lPW4uY29uc3RydWN0b3IubmFtZSxudWxsPT09KGE9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpfHx2b2lkIDA9PT1hfHxhLmNhbGwoRXJyb3IsZyhuKSxuLmNvbnN0cnVjdG9yKSxufXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0dFTkVSSUMifX1dKSxyfSh2KEVycm9yKSksUG49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCIsbi5jbGFpbT1hLG4ucmVhc29uPWksbn1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIn19XSkscn0oQ24pLERuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InVuc3BlY2lmaWVkIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToidW5zcGVjaWZpZWQiO3JldHVybiBvKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KV1RfRVhQSVJFRCIsbi5jbGFpbT1hLG4ucmVhc29uPWksbn1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0VYUElSRUQifX1dKSxyfShDbiksT249ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQifX1dKSxyfShDbiksSW49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX05PVF9TVVBQT1JURUQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCJ9fV0pLHJ9KENuKSxMbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19JTlZBTElEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfSU5WQUxJRCJ9fV0pLHJ9KENuKSxVbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9JTlZBTElEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfSU5WQUxJRCJ9fV0pLHJ9KENuKSxIbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfSU5WQUxJRCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19JTlZBTElEIn19XSkscn0oQ24pLE1uPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19OT19NQVRDSElOR19LRVkiLGUubWVzc2FnZT0ibm8gYXBwbGljYWJsZSBrZXkgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTk9fTUFUQ0hJTkdfS0VZIn19XSkscn0oQ24pLGpuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIixlLm1lc3NhZ2U9Im11bHRpcGxlIG1hdGNoaW5nIGtleXMgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTVVMVElQTEVfTUFUQ0hJTkdfS0VZUyJ9fV0pLHJ9KENuKSxObj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCIsZS5tZXNzYWdlPSJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIn19XSkscn0oQ24pO2Z1bmN0aW9uIHFuKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFdlYlNvY2tldFBhaXJ9ZnVuY3Rpb24gS24oKXt0cnl7cmV0dXJuIHZvaWQgMCE9PUplLnZlcnNpb25zLm5vZGV9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIEpuKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiYWxnb3JpdGhtLm5hbWUiO3JldHVybiBuZXcgVHlwZUVycm9yKCJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgaXRzICIuY29uY2F0KHQsIiBtdXN0IGJlICIpLmNvbmNhdChlKSl9ZnVuY3Rpb24gQm4oZSx0KXtyZXR1cm4gZS5uYW1lPT09dH1mdW5jdGlvbiBGbihlKXtyZXR1cm4gcGFyc2VJbnQoZS5uYW1lLnNsaWNlKDQpLDEwKX1mdW5jdGlvbiBXbihlKXtzd2l0Y2goZSl7Y2FzZSJFUzI1NiI6cmV0dXJuIlAtMjU2IjtjYXNlIkVTMzg0IjpyZXR1cm4iUC0zODQiO2Nhc2UiRVM1MTIiOnJldHVybiJQLTUyMSI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVhY2hhYmxlIil9fWZ1bmN0aW9uIHpuKGUsdCl7aWYodC5sZW5ndGgmJiF0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiBlLnVzYWdlcy5pbmNsdWRlcyh0KX0pKSl7dmFyIHI9IkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgdXNhZ2VzIG11c3QgaW5jbHVkZSAiO2lmKHQubGVuZ3RoPjIpe3ZhciBuPXQucG9wKCk7cis9Im9uZSBvZiAiLmNvbmNhdCh0LmpvaW4oIiwgIiksIiwgb3IgIikuY29uY2F0KG4sIi4iKX1lbHNlIDI9PT10Lmxlbmd0aD9yKz0ib25lIG9mICIuY29uY2F0KHRbMF0sIiBvciAiKS5jb25jYXQodFsxXSwiLiIpOnIrPSIiLmNvbmNhdCh0WzBdLCIuIik7dGhyb3cgbmV3IFR5cGVFcnJvcihyKX19dmFyIFluPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iS2V5IG11c3QgYmUgIixyPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKylhW2ktMV09YXJndW1lbnRzW2ldO2lmKGEubGVuZ3RoPjIpe3ZhciBvPWEucG9wKCk7dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGEuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobywiLiIpfWVsc2UgMj09PWEubGVuZ3RoP3QrPSJvbmUgb2YgdHlwZSAiLmNvbmNhdChhWzBdLCIgb3IgIikuY29uY2F0KGFbMV0sIi4iKTp0Kz0ib2YgdHlwZSAiLmNvbmNhdChhWzBdLCIuIik7cmV0dXJuIG51bGw9PWU/dCs9IiBSZWNlaXZlZCAiLmNvbmNhdChlKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5uYW1lP3QrPSIgUmVjZWl2ZWQgZnVuY3Rpb24gIi5jb25jYXQoZS5uYW1lKToib2JqZWN0Ij09PW4oZSkmJm51bGwhPWUmJmUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZSYmKHQrPSIgUmVjZWl2ZWQgYW4gaW5zdGFuY2Ugb2YgIi5jb25jYXQoZS5jb25zdHJ1Y3Rvci5uYW1lKSksdH0sR249ZnVuY3Rpb24oZSl7cmV0dXJuIFNuKGUpfSxWbj1bIkNyeXB0b0tleSJdLFhuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG4sYT10LmZpbHRlcihCb29sZWFuKTtpZigwPT09YS5sZW5ndGh8fDE9PT1hLmxlbmd0aClyZXR1cm4hMDt2YXIgaSxvPV8oYSk7dHJ5e2ZvcihvLnMoKTshKGk9by5uKCkpLmRvbmU7KXt2YXIgcz1pLnZhbHVlLHU9T2JqZWN0LmtleXMocyk7aWYobiYmMCE9PW4uc2l6ZSlmb3IodmFyIGM9MCxmPXU7YzxmLmxlbmd0aDtjKyspe3ZhciBsPWZbY107aWYobi5oYXMobCkpcmV0dXJuITE7bi5hZGQobCl9ZWxzZSBuPW5ldyBTZXQodSl9fWNhdGNoKGUpe28uZShlKX1maW5hbGx5e28uZigpfXJldHVybiEwfTtmdW5jdGlvbiAkbihlKXtpZigib2JqZWN0IiE9PW4odD1lKXx8bnVsbD09PXR8fCJbb2JqZWN0IE9iamVjdF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiExO3ZhciB0O2lmKG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpcmV0dXJuITA7Zm9yKHZhciByPWU7bnVsbCE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTspcj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yocik7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PXJ9dmFyIFpuPWZ1bmN0aW9uKGUsdCl7aWYoZS5zdGFydHNXaXRoKCJSUyIpfHxlLnN0YXJ0c1dpdGgoIlBTIikpe3ZhciByPXQuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiByfHxyPDIwNDgpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIGtleSBtb2R1bHVzTGVuZ3RoIHRvIGJlIDIwNDggYml0cyBvciBsYXJnZXIiKSl9fTtmdW5jdGlvbiBRbihlKXt2YXIgdCxyO3N3aXRjaChlLmt0eSl7Y2FzZSJvY3QiOnN3aXRjaChlLmFsZyl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6dD17bmFtZToiSE1BQyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9WyJzaWduIiwidmVyaWZ5Il07YnJlYWs7Y2FzZSJBMTI4Q0JDLUhTMjU2IjpjYXNlIkExOTJDQkMtSFMzODQiOmNhc2UiQTI1NkNCQy1IUzUxMiI6dGhyb3cgbmV3IEluKCIiLmNvbmNhdChlLmFsZywiIGtleXMgY2Fubm90IGJlIGltcG9ydGVkIGFzIENyeXB0b0tleSBpbnN0YW5jZXMiKSk7Y2FzZSJBMTI4R0NNIjpjYXNlIkExOTJHQ00iOmNhc2UiQTI1NkdDTSI6Y2FzZSJBMTI4R0NNS1ciOmNhc2UiQTE5MkdDTUtXIjpjYXNlIkEyNTZHQ01LVyI6dD17bmFtZToiQUVTLUdDTSJ9LHI9WyJlbmNyeXB0IiwiZGVjcnlwdCJdO2JyZWFrO2Nhc2UiQTEyOEtXIjpjYXNlIkExOTJLVyI6Y2FzZSJBMjU2S1ciOnQ9e25hbWU6IkFFUy1LVyJ9LHI9WyJ3cmFwS2V5IiwidW53cmFwS2V5Il07YnJlYWs7Y2FzZSJQQkVTMi1IUzI1NitBMTI4S1ciOmNhc2UiUEJFUzItSFMzODQrQTE5MktXIjpjYXNlIlBCRVMyLUhTNTEyK0EyNTZLVyI6dD17bmFtZToiUEJLREYyIn0scj1bImRlcml2ZUJpdHMiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBJbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJSU0EiOnN3aXRjaChlLmFsZyl7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6dD17bmFtZToiUlNBLVBTUyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6dD17bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlNBLU9BRVAiOmNhc2UiUlNBLU9BRVAtMjU2IjpjYXNlIlJTQS1PQUVQLTM4NCI6Y2FzZSJSU0EtT0FFUC01MTIiOnQ9e25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtIi5jb25jYXQocGFyc2VJbnQoZS5hbGcuc2xpY2UoLTMpLDEwKXx8MSl9LHI9ZS5kP1siZGVjcnlwdCIsInVud3JhcEtleSJdOlsiZW5jcnlwdCIsIndyYXBLZXkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBJbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJFQyI6c3dpdGNoKGUuYWxnKXtjYXNlIkVTMjU2Ijp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0yNTYifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRVMzODQiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTM4NCJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzUxMiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtNTIxIn0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVDREgtRVMiOmNhc2UiRUNESC1FUytBMTI4S1ciOmNhc2UiRUNESC1FUytBMTkyS1ciOmNhc2UiRUNESC1FUytBMjU2S1ciOnQ9e25hbWU6IkVDREgiLG5hbWVkQ3VydmU6ZS5jcnZ9LHI9ZS5kP1siZGVyaXZlQml0cyJdOltdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlKHFuKCl8fEtuKCkpJiYiT0tQIjppZigiRWREU0EiIT09ZS5hbGcpdGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKTtzd2l0Y2goZS5jcnYpe2Nhc2UiRWQyNTUxOSI6dD17bmFtZToiTk9ERS1FRDI1NTE5IixuYW1lZEN1cnZlOiJOT0RFLUVEMjU1MTkifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UgS24oKSYmIkVkNDQ4Ijp0PXtuYW1lOiJOT0RFLUVENDQ4IixuYW1lZEN1cnZlOiJOT0RFLUVENDQ4In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBJbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImNydiIgKFN1YnR5cGUgb2YgS2V5IFBhaXIpIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpfXJldHVybnthbGdvcml0aG06dCxrZXlVc2FnZXM6cn19dmFyIGVhPWZ1bmN0aW9uKCl7dmFyIGU9aShyKCkubWFyaygoZnVuY3Rpb24gZShuKXt2YXIgYSxpLG8scyx1LGMsZixsLGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzPVFuKG4pLHU9cy5hbGdvcml0aG0sYz1zLmtleVVzYWdlcyxmPVt1LG51bGwhPT0oaT1uLmV4dCkmJnZvaWQgMCE9PWkmJmksbnVsbCE9PShvPW4ua2V5X29wcykmJnZvaWQgMCE9PW8/bzpjXSwiUEJLREYyIiE9PXUubmFtZSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChsPV9uLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KGwsWyJyYXciLFJuKG4uayldLmNvbmNhdChmKSkpO2Nhc2UgNDpyZXR1cm4gZGVsZXRlKGg9dCh7fSxuKSkuYWxnLGUuYWJydXB0KCJyZXR1cm4iLChhPV9uLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KGEsWyJqd2siLGhdLmNvbmNhdChmKSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiB0YShlLHQscil7cmV0dXJuIHJhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiByYSgpe3JldHVybihyYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCRuKG4pKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCJKV0sgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYoYXx8KGE9bi5hbGcpLCJzdHJpbmciPT10eXBlb2YgYSYmYSl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignImFsZyIgYXJndW1lbnQgaXMgcmVxdWlyZWQgd2hlbiAiandrLmFsZyIgaXMgbm90IHByZXNlbnQnKTtjYXNlIDU6ZS50MD1uLmt0eSxlLm5leHQ9Im9jdCI9PT1lLnQwPzg6IlJTQSI9PT1lLnQwPzE0OiJFQyI9PT1lLnQwfHwiT0tQIj09PWUudDA/MTY6MTc7YnJlYWs7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygbi5rJiZuLmspe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNzaW5nICJrIiAoS2V5IFZhbHVlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDEwOmlmKG51bGwhPWl8fChpPSEwIT09bi5leHQpLCFpKXtlLm5leHQ9MTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGVhKHQodCh7fSxuKSx7fSx7YWxnOmEsZXh0OiExfSkpKTtjYXNlIDEzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixSbihuLmspKTtjYXNlIDE0OmlmKHZvaWQgMD09PW4ub3RoKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IEluKCdSU0EgSldLICJvdGgiIChPdGhlciBQcmltZXMgSW5mbykgUGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQnKTtjYXNlIDE2OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlYSh0KHQoe30sbikse30se2FsZzphfSkpKTtjYXNlIDE3OnRocm93IG5ldyBJbignVW5zdXBwb3J0ZWQgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIG5hPWZ1bmN0aW9uKGUsdCxyKXtlLnN0YXJ0c1dpdGgoIkhTIil8fCJkaXIiPT09ZXx8ZS5zdGFydHNXaXRoKCJQQkVTMiIpfHwvXkFcZHszfSg/OkdDTSk/S1ckLy50ZXN0KGUpP2Z1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXtpZighR24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihZbi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKFZuKSxbIlVpbnQ4QXJyYXkiXSkpKTtpZigic2VjcmV0IiE9PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIHN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKX19KHQpOmZ1bmN0aW9uKGUsdCl7aWYoIUduKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoWW4uYXBwbHkodm9pZCAwLFtlXS5jb25jYXQoYihWbikpKSk7aWYoInNlY3JldCI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoVm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBub3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKTtpZigic2lnbiI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHNpZ25pbmcgbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZigiZGVjcnlwdCI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGRlY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZihlLmFsZ29yaXRobSYmInZlcmlmeSI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoVm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSB2ZXJpZnlpbmcgbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpO2lmKGUuYWxnb3JpdGhtJiYiZW5jcnlwdCI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoVm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBlbmNyeXB0aW9uIG11c3QgYmUgb2YgdHlwZSAicHVibGljIicpKX0odCxyKX07ZnVuY3Rpb24gYWEoZSx0LHIsbixhKXtpZih2b2lkIDAhPT1hLmNyaXQmJnZvaWQgMD09PW4uY3JpdCl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKTtpZighbnx8dm9pZCAwPT09bi5jcml0KXJldHVybiBuZXcgU2V0O2lmKCFBcnJheS5pc0FycmF5KG4uY3JpdCl8fDA9PT1uLmNyaXQubGVuZ3RofHxuLmNyaXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGh9KSkpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBhbiBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyB3aGVuIHByZXNlbnQnKTt2YXIgaTtpPXZvaWQgMCE9PXI/bmV3IE1hcChbXS5jb25jYXQoYihPYmplY3QuZW50cmllcyhyKSksYih0LmVudHJpZXMoKSkpKTp0O3ZhciBvLHM9XyhuLmNyaXQpO3RyeXtmb3Iocy5zKCk7IShvPXMubigpKS5kb25lOyl7dmFyIHU9by52YWx1ZTtpZighaS5oYXModSkpdGhyb3cgbmV3IEluKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBub3QgcmVjb2duaXplZCcpKTtpZih2b2lkIDA9PT1hW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBtaXNzaW5nJykpO2lmKGkuZ2V0KHUpJiZ2b2lkIDA9PT1uW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfXJldHVybiBuZXcgU2V0KG4uY3JpdCl9dmFyIGlhPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dCYmKCFBcnJheS5pc0FycmF5KHQpfHx0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZX0pKSkpdGhyb3cgbmV3IFR5cGVFcnJvcignIicuY29uY2F0KGUsJyIgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycpKTtpZih0KXJldHVybiBuZXcgU2V0KHQpfTtmdW5jdGlvbiBvYShlLHQpe3ZhciByPSJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpO3N3aXRjaChlKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkhNQUMifTtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6ZS5zbGljZSgtMyk+PjN9O2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUifTtjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOnQubmFtZWRDdXJ2ZX07Y2FzZShxbigpfHxLbigpKSYmIkVkRFNBIjp2YXIgbj10Lm5hbWVkQ3VydmU7cmV0dXJue25hbWU6bixuYW1lZEN1cnZlOm59O2RlZmF1bHQ6dGhyb3cgbmV3IEluKCJhbGcgIi5jb25jYXQoZSwiIGlzIG5vdCBzdXBwb3J0ZWQgZWl0aGVyIGJ5IEpPU0Ugb3IgeW91ciBqYXZhc2NyaXB0IHJ1bnRpbWUiKSl9fWZ1bmN0aW9uIHNhKGUsdCxyKXtpZihTbih0KSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6aWYoIUJuKGUuYWxnb3JpdGhtLCJITUFDIikpdGhyb3cgSm4oIkhNQUMiKTt2YXIgcj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihGbihlLmFsZ29yaXRobS5oYXNoKSE9PXIpdGhyb3cgSm4oIlNIQS0iLmNvbmNhdChyKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIlJTQVNTQS1QS0NTMS12MV81IikpdGhyb3cgSm4oIlJTQVNTQS1QS0NTMS12MV81Iik7dmFyIG49cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoRm4oZS5hbGdvcml0aG0uaGFzaCkhPT1uKXRocm93IEpuKCJTSEEtIi5jb25jYXQobiksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6aWYoIUJuKGUuYWxnb3JpdGhtLCJSU0EtUFNTIikpdGhyb3cgSm4oIlJTQS1QU1MiKTt2YXIgYT1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihGbihlLmFsZ29yaXRobS5oYXNoKSE9PWEpdGhyb3cgSm4oIlNIQS0iLmNvbmNhdChhKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIEtuKCkmJiJFZERTQSI6aWYoIk5PREUtRUQyNTUxOSIhPT1lLmFsZ29yaXRobS5uYW1lJiYiTk9ERS1FRDQ0OCIhPT1lLmFsZ29yaXRobS5uYW1lKXRocm93IEpuKCJOT0RFLUVEMjU1MTkgb3IgTk9ERS1FRDQ0OCIpO2JyZWFrO2Nhc2UgcW4oKSYmIkVkRFNBIjppZighQm4oZS5hbGdvcml0aG0sIk5PREUtRUQyNTUxOSIpKXRocm93IEpuKCJOT0RFLUVEMjU1MTkiKTticmVhaztjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIkVDRFNBIikpdGhyb3cgSm4oIkVDRFNBIik7dmFyIGk9V24odCk7aWYoZS5hbGdvcml0aG0ubmFtZWRDdXJ2ZSE9PWkpdGhyb3cgSm4oaSwiYWxnb3JpdGhtLm5hbWVkQ3VydmUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uIil9Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkobz4yP28tMjowKSx1PTI7dTxvO3UrKylzW3UtMl09YXJndW1lbnRzW3VdO3puKGUscyl9KHQsZSxyKSx0O2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtpZighZS5zdGFydHNXaXRoKCJIUyIpKXRocm93IG5ldyBUeXBlRXJyb3IoWW4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihWbikpKSk7cmV0dXJuIF9uLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsdCx7aGFzaDoiU0hBLSIuY29uY2F0KGUuc2xpY2UoLTMpKSxuYW1lOiJITUFDIn0sITEsW3JdKX10aHJvdyBuZXcgVHlwZUVycm9yKFluLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KGIoVm4pLFsiVWludDhBcnJheSJdKSkpfXZhciB1YT1mdW5jdGlvbigpe3ZhciBlPWkocigpLm1hcmsoKGZ1bmN0aW9uIGUodCxuLGEsaSl7dmFyIG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixzYSh0LG4sInZlcmlmeSIpO2Nhc2UgMjpyZXR1cm4gbz1lLnNlbnQsWm4odCxvKSxzPW9hKHQsby5hbGdvcml0aG0pLGUucHJldj01LGUubmV4dD04LF9uLnN1YnRsZS52ZXJpZnkocyxvLGEsaSk7Y2FzZSA4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMTE6cmV0dXJuIGUucHJldj0xMSxlLnQwPWUuY2F0Y2goNSksZS5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s1LDExXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4sYSl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBjYShlLHQscil7cmV0dXJuIGZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBmYSgpe3JldHVybiBmYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXt2YXIgbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCRuKG4pKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgTG4oIkZsYXR0ZW5lZCBKV1MgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYodm9pZCAwIT09bi5wcm90ZWN0ZWR8fHZvaWQgMCE9PW4uaGVhZGVyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgTG4oJ0ZsYXR0ZW5lZCBKV1MgbXVzdCBoYXZlIGVpdGhlciBvZiB0aGUgInByb3RlY3RlZCIgb3IgImhlYWRlciIgbWVtYmVycycpO2Nhc2UgNDppZih2b2lkIDA9PT1uLnByb3RlY3RlZHx8InN0cmluZyI9PXR5cGVvZiBuLnByb3RlY3RlZCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgNjppZih2b2lkIDAhPT1uLnBheWxvYWQpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBMbigiSldTIFBheWxvYWQgbWlzc2luZyIpO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIG4uc2lnbmF0dXJlKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgU2lnbmF0dXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEwOmlmKHZvaWQgMD09PW4uaGVhZGVyfHwkbihuLmhlYWRlcikpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgTG4oIkpXUyBVbnByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEyOmlmKHM9e30sIW4ucHJvdGVjdGVkKXtlLm5leHQ9MjI7YnJlYWt9dT1SbihuLnByb3RlY3RlZCksZS5wcmV2PTE1LHM9SlNPTi5wYXJzZShUbi5kZWNvZGUodSkpLGUubmV4dD0yMjticmVhaztjYXNlIDE5OnRocm93IGUucHJldj0xOSxlLnQwPWUuY2F0Y2goMTUpLG5ldyBMbigiSldTIFByb3RlY3RlZCBIZWFkZXIgaXMgaW52YWxpZCIpO2Nhc2UgMjI6aWYoWG4ocyxuLmhlYWRlcikpe2UubmV4dD0yNDticmVha310aHJvdyBuZXcgTG4oIkpXUyBQcm90ZWN0ZWQgYW5kIEpXUyBVbnByb3RlY3RlZCBIZWFkZXIgUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgZGlzam9pbnQiKTtjYXNlIDI0OmlmKGM9dCh0KHt9LHMpLG4uaGVhZGVyKSxmPWFhKExuLG5ldyBNYXAoW1siYjY0IiwhMF1dKSxudWxsPT1pP3ZvaWQgMDppLmNyaXQscyxjKSxsPSEwLCFmLmhhcygiYjY0Iikpe2UubmV4dD0zMTticmVha31pZigiYm9vbGVhbiI9PXR5cGVvZihsPXMuYjY0KSl7ZS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBMbignVGhlICJiNjQiIChiYXNlNjR1cmwtZW5jb2RlIHBheWxvYWQpIEhlYWRlciBQYXJhbWV0ZXIgbXVzdCBiZSBhIGJvb2xlYW4nKTtjYXNlIDMxOmlmKCJzdHJpbmciPT10eXBlb2YoaD1jLmFsZykmJmgpe2UubmV4dD0zNDticmVha310aHJvdyBuZXcgTG4oJ0pXUyAiYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG1pc3Npbmcgb3IgaW52YWxpZCcpO2Nhc2UgMzQ6aWYoIShwPWkmJmlhKCJhbGdvcml0aG1zIixpLmFsZ29yaXRobXMpKXx8cC5oYXMoaCkpe2UubmV4dD0zNzticmVha310aHJvdyBuZXcgT24oJyJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbm90IGFsbG93ZWQnKTtjYXNlIDM3OmlmKCFsKXtlLm5leHQ9NDI7YnJlYWt9aWYoInN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWQpe2UubmV4dD00MDticmVha310aHJvdyBuZXcgTG4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmciKTtjYXNlIDQwOmUubmV4dD00NDticmVhaztjYXNlIDQyOmlmKCJzdHJpbmciPT10eXBlb2Ygbi5wYXlsb2FkfHxuLnBheWxvYWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtlLm5leHQ9NDQ7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIFVpbnQ4QXJyYXkgaW5zdGFuY2UiKTtjYXNlIDQ0OmlmKGQ9ITEsImZ1bmN0aW9uIiE9dHlwZW9mIGEpe2UubmV4dD01MDticmVha31yZXR1cm4gZS5uZXh0PTQ4LGEocyxuKTtjYXNlIDQ4OmE9ZS5zZW50LGQ9ITA7Y2FzZSA1MDpyZXR1cm4gbmEoaCxhLCJ2ZXJpZnkiKSx2PUFuKEVuLmVuY29kZShudWxsIT09KG89bi5wcm90ZWN0ZWQpJiZ2b2lkIDAhPT1vP286IiIpLEVuLmVuY29kZSgiLiIpLCJzdHJpbmciPT10eXBlb2Ygbi5wYXlsb2FkP0VuLmVuY29kZShuLnBheWxvYWQpOm4ucGF5bG9hZCksZz1SbihuLnNpZ25hdHVyZSksZS5uZXh0PTU1LHVhKGgsYSxnLHYpO2Nhc2UgNTU6aWYoZS5zZW50KXtlLm5leHQ9NTg7YnJlYWt9dGhyb3cgbmV3IE5uO2Nhc2UgNTg6aWYoeT1sP1JuKG4ucGF5bG9hZCk6InN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWQ/RW4uZW5jb2RlKG4ucGF5bG9hZCk6bi5wYXlsb2FkLG09e3BheWxvYWQ6eX0sdm9pZCAwIT09bi5wcm90ZWN0ZWQmJihtLnByb3RlY3RlZEhlYWRlcj1zKSx2b2lkIDAhPT1uLmhlYWRlciYmKG0udW5wcm90ZWN0ZWRIZWFkZXI9bi5oZWFkZXIpLCFkKXtlLm5leHQ9NjQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxtKSx7fSx7a2V5OmF9KSk7Y2FzZSA2NDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbSk7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzE1LDE5XV0pfSkpKSxmYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbGEoZSx0LHIpe3JldHVybiBoYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaGEoKXtyZXR1cm4oaGE9aShyKCkubWFyaygoZnVuY3Rpb24gZShuLGEsaSl7dmFyIG8scyx1LGMsZixsO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYobiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihuPVRuLmRlY29kZShuKSksInN0cmluZyI9PXR5cGVvZiBuKXtlLm5leHQ9MzticmVha310aHJvdyBuZXcgTG4oIkNvbXBhY3QgSldTIG11c3QgYmUgYSBzdHJpbmcgb3IgVWludDhBcnJheSIpO2Nhc2UgMzppZihvPW4uc3BsaXQoIi4iKSxzPW9bMF0sdT1vWzFdLGM9b1syXSwzPT09by5sZW5ndGgpe2UubmV4dD02O2JyZWFrfXRocm93IG5ldyBMbigiSW52YWxpZCBDb21wYWN0IEpXUyIpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgsY2Eoe3BheWxvYWQ6dSxwcm90ZWN0ZWQ6cyxzaWduYXR1cmU6Y30sYSxpKTtjYXNlIDg6aWYoZj1lLnNlbnQsbD17cGF5bG9hZDpmLnBheWxvYWQscHJvdGVjdGVkSGVhZGVyOmYucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2YgYSl7ZS5uZXh0PTEyO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sbCkse30se2tleTpmLmtleX0pKTtjYXNlIDEyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixsKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHBhPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmZsb29yKGUuZ2V0VGltZSgpLzFlMyl9LGRhPTg2NDAwLHZhPS9eKFxkK3xcZCtcLlxkKykgPyhzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpJC9pLGdhPWZ1bmN0aW9uKGUpe3ZhciB0PXZhLmV4ZWMoZSk7aWYoIXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCB0aW1lIHBlcmlvZCBmb3JtYXQiKTt2YXIgcj1wYXJzZUZsb2F0KHRbMV0pO3N3aXRjaCh0WzJdLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2VjIjpjYXNlInNlY3MiOmNhc2Uic2Vjb25kIjpjYXNlInNlY29uZHMiOmNhc2UicyI6cmV0dXJuIE1hdGgucm91bmQocik7Y2FzZSJtaW51dGUiOmNhc2UibWludXRlcyI6Y2FzZSJtaW4iOmNhc2UibWlucyI6Y2FzZSJtIjpyZXR1cm4gTWF0aC5yb3VuZCg2MCpyKTtjYXNlImhvdXIiOmNhc2UiaG91cnMiOmNhc2UiaHIiOmNhc2UiaHJzIjpjYXNlImgiOnJldHVybiBNYXRoLnJvdW5kKDM2MDAqcik7Y2FzZSJkYXkiOmNhc2UiZGF5cyI6Y2FzZSJkIjpyZXR1cm4gTWF0aC5yb3VuZChyKmRhKTtjYXNlIndlZWsiOmNhc2Uid2Vla3MiOmNhc2UidyI6cmV0dXJuIE1hdGgucm91bmQoNjA0ODAwKnIpO2RlZmF1bHQ6cmV0dXJuIE1hdGgucm91bmQoMzE1NTc2MDAqcil9fSx5YT1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15hcHBsaWNhdGlvblwvLywiIil9LG1hPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QuaW5jbHVkZXMoZSk6ISFBcnJheS5pc0FycmF5KGUpJiZ0LnNvbWUoU2V0LnByb3RvdHlwZS5oYXMuYmluZChuZXcgU2V0KGUpKSl9LHdhPWZ1bmN0aW9uKGUsdCl7dmFyIHIsYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30saT1hLnR5cDtpZihpJiYoInN0cmluZyIhPXR5cGVvZiBlLnR5cHx8eWEoZS50eXApIT09eWEoaSkpKXRocm93IG5ldyBQbigndW5leHBlY3RlZCAidHlwIiBKV1QgaGVhZGVyIHZhbHVlJywidHlwIiwiY2hlY2tfZmFpbGVkIik7dHJ5e3I9SlNPTi5wYXJzZShUbi5kZWNvZGUodCkpfWNhdGNoKGUpe31pZighJG4ocikpdGhyb3cgbmV3IFVuKCJKV1QgQ2xhaW1zIFNldCBtdXN0IGJlIGEgdG9wLWxldmVsIEpTT04gb2JqZWN0Iik7dmFyIG89YS5pc3N1ZXI7aWYobyYmIShBcnJheS5pc0FycmF5KG8pP286W29dKS5pbmNsdWRlcyhyLmlzcykpdGhyb3cgbmV3IFBuKCd1bmV4cGVjdGVkICJpc3MiIGNsYWltIHZhbHVlJywiaXNzIiwiY2hlY2tfZmFpbGVkIik7dmFyIHM9YS5zdWJqZWN0O2lmKHMmJnIuc3ViIT09cyl0aHJvdyBuZXcgUG4oJ3VuZXhwZWN0ZWQgInN1YiIgY2xhaW0gdmFsdWUnLCJzdWIiLCJjaGVja19mYWlsZWQiKTt2YXIgdSxjPWEuYXVkaWVuY2U7aWYoYyYmIW1hKHIuYXVkLCJzdHJpbmciPT10eXBlb2YgYz9bY106YykpdGhyb3cgbmV3IFBuKCd1bmV4cGVjdGVkICJhdWQiIGNsYWltIHZhbHVlJywiYXVkIiwiY2hlY2tfZmFpbGVkIik7c3dpdGNoKG4oYS5jbG9ja1RvbGVyYW5jZSkpe2Nhc2Uic3RyaW5nIjp1PWdhKGEuY2xvY2tUb2xlcmFuY2UpO2JyZWFrO2Nhc2UibnVtYmVyIjp1PWEuY2xvY2tUb2xlcmFuY2U7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOnU9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2xvY2tUb2xlcmFuY2Ugb3B0aW9uIHR5cGUiKX12YXIgZj1hLmN1cnJlbnREYXRlLGw9cGEoZnx8bmV3IERhdGUpO2lmKCh2b2lkIDAhPT1yLmlhdHx8YS5tYXhUb2tlbkFnZSkmJiJudW1iZXIiIT10eXBlb2Ygci5pYXQpdGhyb3cgbmV3IFBuKCciaWF0IiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiaWF0IiwiaW52YWxpZCIpO2lmKHZvaWQgMCE9PXIubmJmKXtpZigibnVtYmVyIiE9dHlwZW9mIHIubmJmKXRocm93IG5ldyBQbignIm5iZiIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsIm5iZiIsImludmFsaWQiKTtpZihyLm5iZj5sK3UpdGhyb3cgbmV3IFBuKCcibmJmIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywibmJmIiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09ci5leHApe2lmKCJudW1iZXIiIT10eXBlb2Ygci5leHApdGhyb3cgbmV3IFBuKCciZXhwIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiZXhwIiwiaW52YWxpZCIpO2lmKHIuZXhwPD1sLXUpdGhyb3cgbmV3IERuKCciZXhwIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywiZXhwIiwiY2hlY2tfZmFpbGVkIil9aWYoYS5tYXhUb2tlbkFnZSl7dmFyIGg9bC1yLmlhdCxwPSJudW1iZXIiPT10eXBlb2YgYS5tYXhUb2tlbkFnZT9hLm1heFRva2VuQWdlOmdhKGEubWF4VG9rZW5BZ2UpO2lmKGgtdT5wKXRocm93IG5ldyBEbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAodG9vIGZhciBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKTtpZihoPDAtdSl0aHJvdyBuZXcgUG4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKGl0IHNob3VsZCBiZSBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKX1yZXR1cm4gcn07ZnVuY3Rpb24gYmEoKXtyZXR1cm4oYmE9aShyKCkubWFyaygoZnVuY3Rpb24gZShuLGEsaSl7dmFyIG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsbGEobixhLGkpO2Nhc2UgMjppZihzPWUuc2VudCwhKG51bGw9PT0obz1zLnByb3RlY3RlZEhlYWRlci5jcml0KXx8dm9pZCAwPT09bz92b2lkIDA6by5pbmNsdWRlcygiYjY0IikpfHwhMSE9PXMucHJvdGVjdGVkSGVhZGVyLmI2NCl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFVuKCJKV1RzIE1VU1QgTk9UIHVzZSB1bmVuY29kZWQgcGF5bG9hZCIpO2Nhc2UgNTppZih1PXdhKHMucHJvdGVjdGVkSGVhZGVyLHMucGF5bG9hZCxpKSxjPXtwYXlsb2FkOnUscHJvdGVjdGVkSGVhZGVyOnMucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2YgYSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxjKSx7fSx7a2V5OnMua2V5fSkpO2Nhc2UgOTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYyk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGthKGUpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIGUmJmUuc2xpY2UoMCwyKSl7Y2FzZSJSUyI6Y2FzZSJQUyI6cmV0dXJuIlJTQSI7Y2FzZSJFUyI6cmV0dXJuIkVDIjtjYXNlIkVkIjpyZXR1cm4iT0tQIjtkZWZhdWx0OnRocm93IG5ldyBJbignVW5zdXBwb3J0ZWQgImFsZyIgdmFsdWUgZm9yIGEgSlNPTiBXZWIgS2V5IFNldCcpfX1mdW5jdGlvbiB4YShlKXtyZXR1cm4gJG4oZSl9dmFyIF9hPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtpZihvKHRoaXMsZSksdGhpcy5fY2FjaGVkPW5ldyBXZWFrTWFwLCFmdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PT1uKGUpJiZBcnJheS5pc0FycmF5KGUua2V5cykmJmUua2V5cy5ldmVyeSh4YSl9KHQpKXRocm93IG5ldyBIbigiSlNPTiBXZWIgS2V5IFNldCBtYWxmb3JtZWQiKTt2YXIgcjt0aGlzLl9qd2tzPShyPXQsImZ1bmN0aW9uIj09dHlwZW9mIHN0cnVjdHVyZWRDbG9uZT9zdHJ1Y3R1cmVkQ2xvbmUocik6SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyKSkpfXZhciBhO3JldHVybiB1KGUsW3trZXk6ImdldEtleSIsdmFsdWU6KGE9aShyKCkubWFyaygoZnVuY3Rpb24gZShuLGEpe3ZhciBpLG8scyx1LGMsZixsLGgscDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGk9dCh0KHt9LG4pLGEuaGVhZGVyKSxvPWkuYWxnLHM9aS5raWQsdT1rYShvKSxjPXRoaXMuX2p3a3Mua2V5cy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0PXU9PT1lLmt0eTtpZih0JiYic3RyaW5nIj09dHlwZW9mIHMmJih0PXM9PT1lLmtpZCksdCYmInN0cmluZyI9PXR5cGVvZiBlLmFsZyYmKHQ9bz09PWUuYWxnKSx0JiYic3RyaW5nIj09dHlwZW9mIGUudXNlJiYodD0ic2lnIj09PWUudXNlKSx0JiZBcnJheS5pc0FycmF5KGUua2V5X29wcykmJih0PWUua2V5X29wcy5pbmNsdWRlcygidmVyaWZ5IikpLHQmJiJFZERTQSI9PT1vJiYodD0iRWQyNTUxOSI9PT1lLmNydnx8IkVkNDQ4Ij09PWUuY3J2KSx0KXN3aXRjaChvKXtjYXNlIkVTMjU2Ijp0PSJQLTI1NiI9PT1lLmNydjticmVhaztjYXNlIkVTMjU2SyI6dD0ic2VjcDI1NmsxIj09PWUuY3J2O2JyZWFrO2Nhc2UiRVMzODQiOnQ9IlAtMzg0Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVM1MTIiOnQ9IlAtNTIxIj09PWUuY3J2fXJldHVybiB0fSkpLGY9Y1swXSwwIT09KGw9Yy5sZW5ndGgpKXtlLm5leHQ9ODticmVha310aHJvdyBuZXcgTW47Y2FzZSA4OmlmKDE9PT1sKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IGpuO2Nhc2UgMTA6aWYodm9pZCAwIT09KGg9dGhpcy5fY2FjaGVkLmdldChmKXx8dGhpcy5fY2FjaGVkLnNldChmLHt9KS5nZXQoZikpW29dKXtlLm5leHQ9MTg7YnJlYWt9cmV0dXJuIGUubmV4dD0xNCx0YSh0KHQoe30sZikse30se2V4dDohMH0pLG8pO2Nhc2UgMTQ6aWYoISgocD1lLnNlbnQpaW5zdGFuY2VvZiBVaW50OEFycmF5fHwicHVibGljIiE9PXAudHlwZSkpe2UubmV4dD0xNzticmVha310aHJvdyBuZXcgSG4oIkpTT04gV2ViIEtleSBTZXQgbWVtYmVycyBtdXN0IGJlIHB1YmxpYyBrZXlzIik7Y2FzZSAxNzpoW29dPXA7Y2FzZSAxODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsaFtvXSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksZX0oKTt2YXIgU2E9e2V4cG9ydHM6e319LEVhPXtleHBvcnRzOnt9fSxUYT1aKGZuKTsKLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovCiFmdW5jdGlvbihlLHQpe3ZhciByPVRhLG49ci5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gbihlLHQscil9bi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjooYShyLHQpLHQuQnVmZmVyPWkpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEobixpKSxpLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUsdCxyKX0saS5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgYT1uKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygcj9hLmZpbGwodCxyKTphLmZpbGwodCk6YS5maWxsKDApLGF9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbihlKX0saS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gci5TbG93QnVmZmVyKGUpfX0oRWEsRWEuZXhwb3J0cyk7dmFyIEFhPTY1NTM2LFJhPTQyOTQ5NjcyOTU7dmFyIENhPUVhLmV4cG9ydHMuQnVmZmVyLFBhPVguY3J5cHRvfHxYLm1zQ3J5cHRvO1BhJiZQYS5nZXRSYW5kb21WYWx1ZXM/U2EuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU+UmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1DYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5BYSlmb3IodmFyIG49MDtuPGU7bis9QWEpUGEuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK0FhKSk7ZWxzZSBQYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIEplLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06U2EuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIERhPVNhLmV4cG9ydHMsT2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGJuLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBibi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKHhuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIERhKGUpfX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiBiYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsKHM9e2tleXM6W3RdfSxfYS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IF9hKHMpKSkse2FsZ29yaXRobXM6cixhdWRpZW5jZTpuLGNsb2NrVG9sZXJhbmNlOm8saXNzdWVyOmEsc3ViamVjdDppfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKTt2YXIgc319XSksZX0oKTtvcmlnaW4sVS5TZXNzaW9uU3RvcmFnZTt2YXIgSWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gdShlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiBuPXBhcnNlSW50KHQuZXhwaXJlc19pbiksYT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBTKGksdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihuPD0xMD9uOm4tMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDLEpTT04uc3RyaW5naWZ5KGEpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksTGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbSx3LGIsayx4LF8sRSxULEEsUixDLFAsRCxPLEksTCxVO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9bmV3IHNyLGk9bmV3IE9hLG89bmV3IEooYSxpKSxuLm5leHQ9NSxvLmluaXRpYWxpemUoZSk7Y2FzZSA1OmlmKHM9bmV3IElhKG8pLHU9dChvLHMpLGM9by5nZXREYXRhTGF5ZXIoKSxmPW9yLmdldEluc3RhbmNlKCksbi50MD1udWxsPT1mP3ZvaWQgMDpmLmluaXQsIW4udDApe24ubmV4dD0xMzticmVha31yZXR1cm4gbi5uZXh0PTEzLGYuaW5pdCghMCx1LmF0dGFjaFRva2VuKTtjYXNlIDEzOnJldHVybiBsPWZ1bmN0aW9uKGUpe3Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKGYsZSl9LGg9ZnVuY3Rpb24oZSl7dS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhmLGUpfSxwPWZ1bmN0aW9uKGUpeyhudWxsPT1mP3ZvaWQgMDpmLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spJiZmLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soZSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1Lmh0dHBSZXF1ZXN0KGYsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHUuaHR0cFJlcXVlc3RBbGwoZSxmKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxnPWZ1bmN0aW9uKCl7dS5lbmFibGVIdHRwSGFuZGxlcihmKX0seT1mdW5jdGlvbigpe3UuZGlzYWJsZUh0dHBIYW5kbGVyKGYpfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsby5nZXRBdXRob3JpemF0aW9uVVJMKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLHM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYT1uZXcgVVJMKGUpLGk9bnVsbCE9PShuPWEuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSkmJnZvaWQgMCE9PW4/bjoiIix0Lm5leHQ9NCxvLmdldFBLQ0VDb2RlKGkpO2Nhc2UgNDpyZXR1cm4gcz10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25VUkw6ZSxwa2NlOnN9KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSx3PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBzLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHMucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LGI9ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix1LnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQsdm9pZCAwLG4sYSk7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGkpfSkpKX0saz1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gcy5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxvLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixvLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxfPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sRT1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsdS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA2OnJldHVybiBlLnByZXY9NixlLnQwPWUuY2F0Y2goMCksZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZS50MCkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsNl1dKX0pKSl9LFQ9ZnVuY3Rpb24oKXtyZXR1cm4gby5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxSPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQz1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdS5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sUD1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gdS5nZXRBY2Nlc3NUb2tlbigpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIHUuaXNBdXRoZW50aWNhdGVkKCl9LEk9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixjLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEw9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixvLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGMuZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LG4uYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6eSxlbmFibGVIdHRwSGFuZGxlcjpnLGdldEFjY2Vzc1Rva2VuOkQsZ2V0QXV0aG9yaXphdGlvblVSTDptLGdldEJhc2ljVXNlckluZm86QSxnZXRDb25maWdEYXRhOlUsZ2V0RGVjb2RlZElEVG9rZW46UixnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6UCxnZXRTaWduT3V0VVJMOngsaHR0cFJlcXVlc3Q6ZCxodHRwUmVxdWVzdEFsbDp2LGlzQXV0aGVudGljYXRlZDpPLHJlZnJlc2hBY2Nlc3NUb2tlbjpFLHJlcXVlc3RBY2Nlc3NUb2tlbjpiLHJlcXVlc3RDdXN0b21HcmFudDpfLHJldm9rZUFjY2Vzc1Rva2VuOlQsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpwLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmgsc2V0U2Vzc2lvblN0YXRlOkksc2lnbk91dDprLHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjp3LHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4pfSkpKX0sVWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50PXQsdGhpcy5fZGF0YUxheWVyPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERhdGFMYXllcigpLHRoaXMuX3NwYUhlbHBlcj1yfXJldHVybiB1KGUsW3trZXk6ImF0dGFjaFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFPYmplY3QuYXNzaWduKHthdHRhY2hUb2tlbjohMH0sZSkuYXR0YWNoVG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdC50MD1PYmplY3QsdC50MT1PYmplY3QuYXNzaWduKHt9LGUuaGVhZGVycyksdC50Mj0iQmVhcmVyICIsdC5uZXh0PTcsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QWNjZXNzVG9rZW4oKTtjYXNlIDc6dC50Mz10LnNlbnQsdC50ND10LnQyLmNvbmNhdC5jYWxsKHQudDIsdC50MyksdC50NT17QXV0aG9yaXphdGlvbjp0LnQ0fSxlLmhlYWRlcnM9dC50MC5hc3NpZ24uY2FsbCh0LnQwLHQudDEsdC50NSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlLHQpeyhudWxsPT1lP3ZvaWQgMDplLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaykmJmUuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKHQpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KG51bGw9PWU/dm9pZCAwOmUuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2spJiZlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKHQpfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXsobnVsbD09ZT92b2lkIDA6ZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSYmZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKHQpfX0se2tleToiZW5hYmxlSHR0cEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpeyhudWxsPT1lP3ZvaWQgMDplLmVuYWJsZUhhbmRsZXIpJiZlLmVuYWJsZUhhbmRsZXIoKX19LHtrZXk6ImRpc2FibGVIdHRwSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7KG51bGw9PWU/dm9pZCAwOmUuZGlzYWJsZUhhbmRsZXIpJiZlLmRpc2FibGVIYW5kbGVyKCl9fSx7a2V5OiJpbml0aWFsaXplU2Vzc2lvbk1hbmdlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaSxvLHM7YS5pbml0aWFsaXplKGUuY2xpZW50SUQsbnVsbCE9PShpPXQuY2hlY2tTZXNzaW9uSWZyYW1lKSYmdm9pZCAwIT09aT9pOiIiLHIsbnVsbCE9PShvPWUuY2hlY2tTZXNzaW9uSW50ZXJ2YWwpJiZ2b2lkIDAhPT1vP286MyxudWxsIT09KHM9ZS5zZXNzaW9uUmVmcmVzaEludGVydmFsKSYmdm9pZCAwIT09cz9zOjMwMCxlLnNpZ25JblJlZGlyZWN0VVJMLG4pfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuLGEsaTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgcyx1LGMsZixsLGg9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG8pe2Zvcig7Oylzd2l0Y2goby5wcmV2PW8ubmV4dCl7Y2FzZSAwOmlmKHM9ITAsdT0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe28ubmV4dD0zOTticmVha31yZXR1cm4gcz0hMSxjPTAsby50MD1bXSxvLnQxPWIsby5uZXh0PTksdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDk6aWYoby50ND1uPW8uc2VudCxvLnQzPW51bGw9PT1vLnQ0LG8udDMpe28ubmV4dD0xMzticmVha31vLnQzPXZvaWQgMD09PW47Y2FzZSAxMzppZighby50Myl7by5uZXh0PTE3O2JyZWFrfW8udDU9dm9pZCAwLG8ubmV4dD0xODticmVhaztjYXNlIDE3Om8udDU9bi5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAxODppZihvLnQ2PWE9by50NSxvLnQyPW51bGwhPT1vLnQ2LCFvLnQyKXtvLm5leHQ9MjI7YnJlYWt9by50Mj12b2lkIDAhPT1hO2Nhc2UgMjI6aWYoIW8udDIpe28ubmV4dD0yNjticmVha31vLnQ3PWEsby5uZXh0PTI3O2JyZWFrO2Nhc2UgMjY6by50Nz1bXTtjYXNlIDI3Om8udDg9by50NyxvLnQ5PSgwLG8udDEpKG8udDgpLG8udDEwPVtlLmJhc2VVcmxdLGY9by50MC5jb25jYXQuY2FsbChvLnQwLG8udDksby50MTApO2Nhc2UgMzE6aWYoIShjPGYubGVuZ3RoKSl7by5uZXh0PTM5O2JyZWFrfWlmKCEobD1mW2NdKXx8IShudWxsPT09KGk9ZS50b2tlbkVuZHBvaW50KXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGFydHNXaXRoKGwpKSl7by5uZXh0PTM2O2JyZWFrfXJldHVybiB1PSEwLG8uYWJydXB0KCJicmVhayIsMzkpO2Nhc2UgMzY6YysrLG8ubmV4dD0zMTticmVhaztjYXNlIDM5OmlmKGUuc2hvdWxkUmVwbGF5QWZ0ZXJSZWZyZXNoJiZ0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihZLEpTT04uc3RyaW5naWZ5KGUpKSwhcyYmIXUpe28ubmV4dD00NDticmVha31yZXR1cm4gby5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVxdWVzdEN1c3RvbUdyYW50KGUpLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBTKGgsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQoZSksIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD02O2JyZWFrfXJldHVybiB0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA2OnJldHVybiByLmFicnVwdCgicmV0dXJuIixuKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDQ0OnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgSSgiU1BBLU1BSU5fVEhSRUFEX0NMSUVOVC1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDdXN0b21HcmFudENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoWSk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5wcmV2PTAsdC5uZXh0PTMsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiB0Lm5leHQ9NSx0aGlzLmdldEN1c3RvbUdyYW50Q29uZmlnRGF0YSgpO2Nhc2UgNTppZighKG49dC5zZW50KSl7dC5uZXh0PTk7YnJlYWt9cmV0dXJuIHQubmV4dD05LHRoaXMucmVxdWVzdEN1c3RvbUdyYW50KG4sZSk7Y2FzZSA5OnJldHVybiB0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gdC5wcmV2PTEzLHQudDA9dC5jYXRjaCgwKSx0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdCh0LnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzAsMTNdXSl9KSkpfX0se2tleToiaHR0cFJlcXVlc3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGEsaSxvKXt2YXIgcyx1O3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYygpe3ZhciBmLGwsaCxwLGQsdj10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oYyl7Zm9yKDs7KXN3aXRjaChjLnByZXY9Yy5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITEsYy5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6cmV0dXJuIGw9Yy5zZW50LGg9MCxjLnQwPVtdLGMudDE9YixjLm5leHQ9OSxudWxsPT1sP3ZvaWQgMDpsLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDk6aWYoYy50Mz1zPWMuc2VudCxjLnQyPW51bGwhPT1jLnQzLCFjLnQyKXtjLm5leHQ9MTM7YnJlYWt9Yy50Mj12b2lkIDAhPT1zO2Nhc2UgMTM6aWYoIWMudDIpe2MubmV4dD0xNzticmVha31jLnQ0PXMsYy5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6Yy50ND1bXTtjYXNlIDE4OmMudDU9Yy50NCxjLnQ2PSgwLGMudDEpKGMudDUpLGMudDc9W2wuYmFzZVVybF0scD1jLnQwLmNvbmNhdC5jYWxsKGMudDAsYy50NixjLnQ3KTtjYXNlIDIyOmlmKCEoaDxwLmxlbmd0aCkpe2MubmV4dD0zMDticmVha31pZighKGQ9cFtoXSl8fCEobnVsbD09PSh1PW51bGw9PXQ/dm9pZCAwOnQudXJsKXx8dm9pZCAwPT09dT92b2lkIDA6dS5zdGFydHNXaXRoKGQpKSl7Yy5uZXh0PTI3O2JyZWFrfXJldHVybiBmPSEwLGMuYWJydXB0KCJicmVhayIsMzApO2Nhc2UgMjc6aCsrLGMubmV4dD0yMjticmVhaztjYXNlIDMwOmlmKCFmKXtjLm5leHQ9MzQ7YnJlYWt9cmV0dXJuIGMuYWJydXB0KCJyZXR1cm4iLGUucmVxdWVzdCh0KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihzKXtyZXR1cm4gUyh2LHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHUoKXt2YXIgYyxmLGwsaCxwO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0oYz1udWxsPT1zP3ZvaWQgMDpzLnJlc3BvbnNlKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdGF0dXMpJiYobnVsbD09cz92b2lkIDA6cy5yZXNwb25zZSkpe3IubmV4dD0zMTticmVha31yZXR1cm4gci5wcmV2PTEsci5uZXh0PTQsdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4obyk7Y2FzZSA0Omg9ci5zZW50LHIubmV4dD0xNTticmVhaztjYXNlIDc6aWYoci5wcmV2PTcsci50MD1yLmNhdGNoKDEpLCFuKXtyLm5leHQ9MTQ7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3IubmV4dD0xMzticmVha31yZXR1cm4gci5uZXh0PTEzLGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtjb2RlOlZ9KSk7Y2FzZSAxMzoiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgMTQ6dGhyb3cgbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUi1TRTAxIixudWxsIT09KGY9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWY/ZjoiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obD1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bD9sOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxNTppZighaCl7ci5uZXh0PTMxO2JyZWFrfXJldHVybiByLnByZXY9MTYsci5uZXh0PTE5LGUucmVxdWVzdCh0KTtjYXNlIDE5OnJldHVybiBwPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUocCkpO2Nhc2UgMjM6aWYoci5wcmV2PTIzLHIudDE9ci5jYXRjaCgxNiksIW4pe3IubmV4dD0zMDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTI5O2JyZWFrfXJldHVybiByLm5leHQ9MjksYShyLnQxKTtjYXNlIDI5OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAzMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3Qoci50MSkpO2Nhc2UgMzE6aWYoIW4pe3IubmV4dD0zNjticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTM1O2JyZWFrfXJldHVybiByLm5leHQ9MzUsYShzKTtjYXNlIDM1OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAzNjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QocykpO2Nhc2UgMzc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSx1LHRoaXMsW1sxLDddLFsxNiwyM11dKX0pKSl9KSkpO2Nhc2UgMzQ6cmV0dXJuIGMuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gYy5zdG9wKCl9fSksYyx0aGlzKX0pKSl9fSx7a2V5OiJodHRwUmVxdWVzdEFsbCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSxpKXt2YXIgbyxzLHU7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBjKCl7dmFyIGYsbCxoLHAsZCx2LGcseSxtLHcsaz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oYyl7Zm9yKDs7KXN3aXRjaChjLnByZXY9Yy5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITAsYy5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6bD1jLnNlbnQsaD1fKGUpLGMucHJldj01LGgucygpO2Nhc2UgNzppZigocD1oLm4oKSkuZG9uZSl7Yy5uZXh0PTUwO2JyZWFrfXJldHVybiBkPXAudmFsdWUsdj0hMSxnPTAsYy50MD1bXSxjLnQxPWIsYy5uZXh0PTE1LGw7Y2FzZSAxNTppZihjLnQ0PW89Yy5zZW50LGMudDM9bnVsbD09PWMudDQsYy50Myl7Yy5uZXh0PTE5O2JyZWFrfWMudDM9dm9pZCAwPT09bztjYXNlIDE5OmlmKCFjLnQzKXtjLm5leHQ9MjM7YnJlYWt9Yy50NT12b2lkIDAsYy5uZXh0PTI0O2JyZWFrO2Nhc2UgMjM6Yy50NT1vLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDI0OmlmKGMudDY9cz1jLnQ1LGMudDI9bnVsbCE9PWMudDYsIWMudDIpe2MubmV4dD0yODticmVha31jLnQyPXZvaWQgMCE9PXM7Y2FzZSAyODppZighYy50Mil7Yy5uZXh0PTMyO2JyZWFrfWMudDc9cyxjLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMjpjLnQ3PVtdO2Nhc2UgMzM6Yy50OD1jLnQ3LGMudDk9KDAsYy50MSkoYy50OCksYy50MTA9W2wuYmFzZVVybF0seT1jLnQwLmNvbmNhdC5jYWxsKGMudDAsYy50OSxjLnQxMCk7Y2FzZSAzNzppZighKGc8eS5sZW5ndGgpKXtjLm5leHQ9NDU7YnJlYWt9aWYoIShtPXlbZ10pfHwhKG51bGw9PT0odT1kLnVybCl8fHZvaWQgMD09PXU/dm9pZCAwOnUuc3RhcnRzV2l0aChtKSkpe2MubmV4dD00MjticmVha31yZXR1cm4gdj0hMCxjLmFicnVwdCgiYnJlYWsiLDQ1KTtjYXNlIDQyOmcrKyxjLm5leHQ9Mzc7YnJlYWs7Y2FzZSA0NTppZih2KXtjLm5leHQ9NDg7YnJlYWt9cmV0dXJuIGY9ITEsYy5hYnJ1cHQoImJyZWFrIiw1MCk7Y2FzZSA0ODpjLm5leHQ9NzticmVhaztjYXNlIDUwOmMubmV4dD01NTticmVhaztjYXNlIDUyOmMucHJldj01MixjLnQxMT1jLmNhdGNoKDUpLGguZShjLnQxMSk7Y2FzZSA1NTpyZXR1cm4gYy5wcmV2PTU1LGguZigpLGMuZmluaXNoKDU1KTtjYXNlIDU4OmlmKHc9W10sIWYpe2MubmV4dD02NDticmVha31yZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt3LnB1c2godC5yZXF1ZXN0KGUpKX0pKSxjLmFicnVwdCgicmV0dXJuIiwobnVsbD09dD92b2lkIDA6dC5hbGwpJiZ0LmFsbCh3KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUyhrLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgcyx1LGMsZixsPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShzPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXR1cykmJihudWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKSl7by5uZXh0PTE3O2JyZWFrfXJldHVybiBvLnByZXY9MSxvLm5leHQ9NCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDQ6Zj1vLnNlbnQsby5uZXh0PTE1O2JyZWFrO2Nhc2UgNzppZihvLnByZXY9NyxvLnQwPW8uY2F0Y2goMSksIW4pe28ubmV4dD0xNDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7by5uZXh0PTEzO2JyZWFrfXJldHVybiBvLm5leHQ9MTMsYShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2NvZGU6Vn0pKTtjYXNlIDEzOiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAxNDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSQS1TRTAxIixudWxsIT09KHU9bnVsbD09PW8udDB8fHZvaWQgMD09PW8udDA/dm9pZCAwOm8udDAubmFtZSkmJnZvaWQgMCE9PXU/dToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0oYz1udWxsPT09by50MHx8dm9pZCAwPT09by50MD92b2lkIDA6by50MC5tZXNzYWdlKSYmdm9pZCAwIT09Yz9jOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxNTppZighZil7by5uZXh0PTE3O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0LmFsbCYmdC5hbGwodykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFMobCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighbil7dC5uZXh0PTU7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3QubmV4dD00O2JyZWFrfXJldHVybiB0Lm5leHQ9NCxhKGUpO2Nhc2UgNDoiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKSk7Y2FzZSAxNzppZighbil7by5uZXh0PTIyO2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtvLm5leHQ9MjE7YnJlYWt9cmV0dXJuIG8ubmV4dD0yMSxhKGUpO2Nhc2UgMjE6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDIyOnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAyMzpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNjQ6dGhyb3cgbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUkEtSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIik7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGMuc3RvcCgpfX0pLGMsdGhpcyxbWzUsNTIsNTUsNThdXSl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhLGkpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOmlmKChzPW8uc2VudCkuc3RvcmFnZSE9PVUuQnJvd3Nlck1lbW9yeXx8IXMuZW5hYmxlUEtDRXx8IXQpe28ubmV4dD05O2JyZWFrfXJldHVybiB1PWNyLmdldFBLQ0UoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpKSxvLm5leHQ9Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5zZXRQS0NFQ29kZShMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCksdSk7Y2FzZSA3Om8ubmV4dD0xMjticmVhaztjYXNlIDk6aWYocy5zdG9yYWdlIT09VS5XZWJXb3JrZXJ8fCFhKXtvLm5leHQ9MTI7YnJlYWt9cmV0dXJuIG8ubmV4dD0xMix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5zZXRQS0NFQ29kZShhLG51bGwhPWk/aToiIik7Y2FzZSAxMjppZighZSl7by5uZXh0PTE0O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZXF1ZXN0QWNjZXNzVG9rZW4oZSxudWxsIT10P3Q6IiIsbnVsbCE9aT9pOiIiKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBTKGMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocy5zdG9yYWdlPT09VS5XZWJXb3JrZXIpe2UubmV4dD0xMDticmVha31yZXR1cm4gZS50MD1jcixlLm5leHQ9NCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRTaWduT3V0VVJMKCk7Y2FzZSA0OmUudDE9ZS5zZW50LGUudDAuc2V0U2lnbk91dFVSTC5jYWxsKGUudDAsZS50MSksdGhpcy5fc3BhSGVscGVyJiYodGhpcy5fc3BhSGVscGVyLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCkpLG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZzLmVuYWJsZU9JRENTZXNzaW9uTWFuYWdlbWVudCYmbigpLGUubmV4dD0xMTticmVhaztjYXNlIDEwOnRoaXMuX3NwYUhlbHBlciYmdGhpcy5fc3BhSGVscGVyLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKTtjYXNlIDExOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE0OnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLVJBVDEtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gY29kZS4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIGZvdW5kLiIpKSk7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyl9KSkpfX0se2tleToidHJ5U2lnbkluU2lsZW50bHkiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsYz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6aWYoIWNyLmlzSW5pdGlhbGl6ZWRTaWxlbnRTaWduSW4oKSl7aS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGkubmV4dD0zLG4ucmVjZWl2ZVByb21wdE5vbmVSZXNwb25zZSgpO2Nhc2UgMzpyZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKHthbGxvd2VkU2NvcGVzOiIiLGRpc3BsYXlOYW1lOiIiLGVtYWlsOiIiLHNlc3Npb25TdGF0ZToiIixzdWI6IiIsdGVuYW50RG9tYWluOiIiLHVzZXJuYW1lOiIifSkpO2Nhc2UgNDpyZXR1cm4gbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnBJRnJhbWUiKSxzPW51bGw9PT0oYT1udWxsPT1vP3ZvaWQgMDpvLmNvbnRlbnREb2N1bWVudCl8fHZvaWQgMD09PWE/dm9pZCAwOmEuZ2V0RWxlbWVudEJ5SWQoInByb21wdE5vbmVJRnJhbWUiKSxpLnByZXY9NixpLm5leHQ9OSxlKCk7Y2FzZSA5OnU9aS5zZW50LHMuc3JjPXUsaS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6cmV0dXJuIGkucHJldj0xMyxpLnQwPWkuY2F0Y2goNiksaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoaS50MCkpO2Nhc2UgMTY6cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLG5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3ZhciBhPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSghMSl9KSwxZTQpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gaShvKXtyZXR1cm4gUyhjLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHMoKXt2YXIgdSxjLGYsbCxoO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6ImNoZWNrX3Nlc3Npb25fc2lnbmVkX291dCI9PShudWxsPT0oaD1vLmRhdGEpP3ZvaWQgMDpoLnR5cGUpJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLGNsZWFyVGltZW91dChhKSxlKCExKSksImNoZWNrX3Nlc3Npb25fc2lnbmVkX2luIj09KG51bGw9PWg/dm9pZCAwOmgudHlwZSkmJihudWxsPT09KHU9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09dT92b2lkIDA6dS5jb2RlKSYmdChudWxsPT09KGM9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jb2RlLG51bGw9PT0oZj1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnNlc3Npb25TdGF0ZSxudWxsPT09KGw9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09bD92b2lkIDA6bC5zdGF0ZSkudGhlbigoZnVuY3Rpb24odCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLGUodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpKSxuKGUpfSkpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEpfSkpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHMpfSkpKX0pKX0pKSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLGksbnVsbCxbWzYsMTNdXSl9KSkpfX0se2tleToiaGFuZGxlU2lnbkluIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHUsYztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gaT1yLnNlbnQsci5uZXh0PTUsZSgpO2Nhc2UgNTppZighci5zZW50KXtyLm5leHQ9NzticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKHthbGxvd2VkU2NvcGVzOiIiLGRpc3BsYXlOYW1lOiIiLGVtYWlsOiIiLHNlc3Npb25TdGF0ZToiIixzdWI6IiIsdGVuYW50RG9tYWluOiIiLHVzZXJuYW1lOiIifSkpO2Nhc2UgNzppZihpLnN0b3JhZ2U9PT1VLldlYldvcmtlcil7ci5uZXh0PTE5O2JyZWFrfXJldHVybiByLm5leHQ9MTAsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCk7Y2FzZSAxMDppZighci5zZW50KXtyLm5leHQ9MTk7YnJlYWt9cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSx0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGkuZW5hYmxlT0lEQ1Nlc3Npb25NYW5hZ2VtZW50JiZ0KCksci50MD1Qcm9taXNlLHIubmV4dD0xNyx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSAxNzpyZXR1cm4gci50MT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsci50MC5yZXNvbHZlLmNhbGwoci50MCxyLnQxKSk7Y2FzZSAxOTppZihvPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoVykscz1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KHopLCFvKXtyLm5leHQ9Mjc7YnJlYWt9dGhyb3codT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkuc2VhcmNoUGFyYW1zLmRlbGV0ZShXKSx1LnNlYXJjaFBhcmFtcy5kZWxldGUoeiksaGlzdG9yeS5wdXNoU3RhdGUobnVsbCxkb2N1bWVudC50aXRsZSx1LnRvU3RyaW5nKCkpLG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItU0ktU0UwMSIsbyxudWxsIT1zP3M6IiIpO2Nhc2UgMjc6aWYoaS5zdG9yYWdlIT09VS5XZWJXb3JrZXJ8fCFuKXtyLm5leHQ9MzM7YnJlYWt9cmV0dXJuIHIubmV4dD0zMCxuKCk7Y2FzZSAzMDppZighKGM9ci5zZW50KSl7ci5uZXh0PTMzO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDMzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QWNjZXNzVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpOyFmdW5jdGlvbihlKXt2YXIgdCxuPXNlbGY7bi5vbm1lc3NhZ2U9ZnVuY3Rpb24obil7dmFyIHM9bi5kYXRhLHU9bi5wb3J0cztyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBjLGYsbCxoLHAsZDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKHA9dVswXSxzLnR5cGU9PT1CfHx0KXtyLm5leHQ9NDticmVha31yZXR1cm4gcC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBJKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxyLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnIudDA9cy50eXBlLHIubmV4dD1yLnQwPT09Qj83OiJnZXRfYXV0aF91cmwiPT09ci50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ci50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PXIudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ci50MD8yODoic2lnbi1vdXQiPT09ci50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ci50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1yLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1yLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PXIudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PXIudDA/NzY6ImdldF9pZF90b2tlbiI9PT1yLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PXIudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1yLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1yLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1yLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ci50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1yLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ci50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ci50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1yLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiByLnByZXY9NyxkPU9iamVjdC5hc3NpZ24oe30scy5kYXRhKSxyLm5leHQ9MTEsTGEoZCxlKTtjYXNlIDExOih0PXIuc2VudCkuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhvKSx0LnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhhKSx0LnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGkpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxyLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODpyLnByZXY9MTgsci50MT1yLmNhdGNoKDcpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQxKSk7Y2FzZSAyMTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjI6cmV0dXJuIHQuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT1zP3ZvaWQgMDpzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIHQucmVxdWVzdEFjY2Vzc1Rva2VuKG51bGw9PT0oYz1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNvZGUsbnVsbD09PShmPW51bGw9PXM/dm9pZCAwOnMuZGF0YSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuc2Vzc2lvblN0YXRlLG51bGw9PT0obD1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnBrY2UsbnVsbD09PShoPW51bGw9PXM/dm9pZCAwOnMuZGF0YSl8fHZvaWQgMD09PWg/dm9pZCAwOmguc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIHQuaHR0cFJlcXVlc3Qocy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI4OnJldHVybiB0Lmh0dHBSZXF1ZXN0QWxsKHMuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gci5wcmV2PTMwLHIudDI9cCxyLnQzPXVyLHIubmV4dD0zNSx0LnNpZ25PdXQoKTtjYXNlIDM1OnIudDQ9ci5zZW50LHIudDU9ci50My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MyxyLnQ0KSxyLnQyLnBvc3RNZXNzYWdlLmNhbGwoci50MixyLnQ1KSxyLm5leHQ9NDM7YnJlYWs7Y2FzZSA0MDpyLnByZXY9NDAsci50Nj1yLmNhdGNoKDMwKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NikpO2Nhc2UgNDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiB0LnJlcXVlc3RDdXN0b21HcmFudChzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDY6cmV0dXJuIHQucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiByLnByZXY9NDgsci50Nz1wLHIudDg9dXIsci5uZXh0PTUzLHQuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTtjYXNlIDUzOnIudDk9ci5zZW50LHIudDEwPXIudDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDgsci50OSksci50Ny5wb3N0TWVzc2FnZS5jYWxsKHIudDcsci50MTApLHIubmV4dD02MTticmVhaztjYXNlIDU4OnIucHJldj01OCxyLnQxMT1yLmNhdGNoKDQ4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MTEpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gci5wcmV2PTYyLHIudDEyPXAsci50MTM9dXIsci5uZXh0PTY3LHQuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ci50MTQ9ci5zZW50LHIudDE1PXIudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQxMyxyLnQxNCksci50MTIucG9zdE1lc3NhZ2UuY2FsbChyLnQxMixyLnQxNSksci5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ci5wcmV2PTcyLHIudDE2PXIuY2F0Y2goNjIpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQxNikpO2Nhc2UgNzU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDc2OnJldHVybiByLnByZXY9NzYsci50MTc9cCxyLnQxOD11cixyLm5leHQ9ODEsdC5nZXREZWNvZGVkSURUb2tlbigpO2Nhc2UgODE6ci50MTk9ci5zZW50LHIudDIwPXIudDE4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQxOCxyLnQxOSksci50MTcucG9zdE1lc3NhZ2UuY2FsbChyLnQxNyxyLnQyMCksci5uZXh0PTg5O2JyZWFrO2Nhc2UgODY6ci5wcmV2PTg2LHIudDIxPXIuY2F0Y2goNzYpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQyMSkpO2Nhc2UgODk6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiByLnByZXY9OTAsci50MjI9cCxyLnQyMz11cixyLm5leHQ9OTUsdC5nZXRJRFRva2VuKCk7Y2FzZSA5NTpyLnQyND1yLnNlbnQsci50MjU9ci50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDIzLHIudDI0KSxyLnQyMi5wb3N0TWVzc2FnZS5jYWxsKHIudDIyLHIudDI1KSxyLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOnIucHJldj0xMDAsci50MjY9ci5jYXRjaCg5MCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gdC5lbmFibGVIdHRwSGFuZGxlcigpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxyLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIHQuZGlzYWJsZUh0dHBIYW5kbGVyKCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gci5wcmV2PTExMCxyLnQyNz1wLHIudDI4PXVyLHIubmV4dD0xMTUsdC5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTpyLnQyOT1yLnNlbnQsci50MzA9ci50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDI4LHIudDI5KSxyLnQyNy5wb3N0TWVzc2FnZS5jYWxsKHIudDI3LHIudDMwKSxyLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOnIucHJldj0xMjAsci50MzE9ci5jYXRjaCgxMTApLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQzMSkpO2Nhc2UgMTIzOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMjQ6cmV0dXJuIHIucHJldj0xMjQsci50MzI9cCxyLnQzMz11cixyLm5leHQ9MTI5LHQuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMTI5OnIudDM0PXIuc2VudCxyLnQzNT1yLnQzMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MzMsci50MzQpLHIudDMyLnBvc3RNZXNzYWdlLmNhbGwoci50MzIsci50MzUpLHIubmV4dD0xMzc7YnJlYWs7Y2FzZSAxMzQ6ci5wcmV2PTEzNCxyLnQzNj1yLmNhdGNoKDEyNCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEzODpyZXR1cm4gci5wcmV2PTEzOCxyLnQzNz1wLHIudDM4PXVyLHIubmV4dD0xNDMsdC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzpyLnQzOT1yLnNlbnQsci50NDA9ci50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDM4LHIudDM5KSxyLnQzNy5wb3N0TWVzc2FnZS5jYWxsKHIudDM3LHIudDQwKSxyLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OnIucHJldj0xNDgsci50NDE9ci5jYXRjaCgxMzgpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSh0LnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX1yZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTU0OnJldHVybiByLnByZXY9MTU0LHIudDQyPXAsci50NDM9dXIsci5uZXh0PTE1OSx0LnNldFNlc3Npb25TdGF0ZShudWxsPT1zP3ZvaWQgMDpzLmRhdGEpO2Nhc2UgMTU5OnIudDQ0PXIuc2VudCxyLnQ0NT1yLnQ0My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NDMsci50NDQpLHIudDQyLnBvc3RNZXNzYWdlLmNhbGwoci50NDIsci50NDUpLHIubmV4dD0xNjc7YnJlYWs7Y2FzZSAxNjQ6ci5wcmV2PTE2NCxyLnQ0Nj1yLmNhdGNoKDE1NCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDQ2KSk7Y2FzZSAxNjc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE2ODpyZXR1cm4gci5wcmV2PTE2OCxyLnQ0Nz1wLHIudDQ4PXVyLHIubmV4dD0xNzMsdC51cGRhdGVDb25maWcobnVsbD09cz92b2lkIDA6cy5kYXRhKTtjYXNlIDE3MzpyLnQ0OT1yLnNlbnQsci50NTA9ci50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDQ4LHIudDQ5KSxyLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKHIudDQ3LHIudDUwKSxyLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OnIucHJldj0xNzgsci50NTE9ci5jYXRjaCgxNjgpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIHIucHJldj0xODIsci50NTI9cCxyLnQ1Mz11cixyLm5leHQ9MTg3LHQuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OnIudDU0PXIuc2VudCxyLnQ1NT1yLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NTMsci50NTQpLHIudDUyLnBvc3RNZXNzYWdlLmNhbGwoci50NTIsci50NTUpLHIubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ci5wcmV2PTE5MixyLnQ1Nj1yLmNhdGNoKDE4MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE5NjpudWxsPT1wfHxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IEkoIlNQQS1DTElFTlRfV09SS0VSLU9OTVNHLUlWMDIiLCJUaGUgbWVzc2FnZSB0eXBlIGlzIGludmFsaWQuIiwiVGhlIG1lc3NhZ2UgdHlwZSBwcm92aWRlZCwgIi5jb25jYXQocy50eXBlLCIsIGlzIGludmFsaWQuIikpKSk7Y2FzZSAxOTc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLG51bGwsW1s3LDE4XSxbMzAsNDBdLFs0OCw1OF0sWzYyLDcyXSxbNzYsODZdLFs5MCwxMDBdLFsxMTAsMTIwXSxbMTI0LDEzNF0sWzEzOCwxNDhdLFsxNTQsMTY0XSxbMTY4LDE3OF0sWzE4MiwxOTJdXSl9KSkpfTt2YXIgYT1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LGk9ZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sbz1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfX0oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVYShlLHQpfSkpO3JldHVybnt9fSgpOwoK",kA=null,UA=!1,function(t){return TA=TA||xA(HA,kA,UA),new Worker(TA,t)});!function(t){t.LocalStorage="localStorage",t.SessionStorage="sessionStorage",t.WebWorker="webWorker",t.BrowserMemory="browserMemory"}(wA||(wA={})),function(t){t.SignIn="sign-in",t.SignOut="sign-out",t.Initialize="initialize",t.HttpRequestStart="http-request-start",t.HttpRequestFinish="http-request-finish",t.HttpRequestError="http-request-error",t.HttpRequestSuccess="http-request-success",t.RevokeAccessToken="revoke-access-token",t.CustomGrant="custom-grant",t.SignOutFailed="sign-out-failed"}(FA||(FA={}));var BA,zA,jA,MA,QA,PA,EA,DA,OA,_A,qA,$A,tB,eB,nB,iB,rB,cB="Y2hlY2tTZXNzaW9u",aB=function(){function t(e,n){u(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer(),this._spaHelper=n}return s(t,[{key:"attachToken",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Object.assign({attachToken:!0},t).attachToken){e.next=11;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=7,this._authenticationClient.getAccessToken();case 7:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5);case 11:case"end":return e.stop()}}),e,this)})))}},{key:"setHttpRequestStartCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestStartCallback)&&t.setHttpRequestStartCallback(e)}},{key:"setHttpRequestSuccessCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestSuccessCallback)&&t.setHttpRequestSuccessCallback(e)}},{key:"setHttpRequestFinishCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestFinishCallback)&&t.setHttpRequestFinishCallback(e)}},{key:"enableHttpHandler",value:function(t){(null==t?void 0:t.enableHandler)&&t.enableHandler()}},{key:"disableHttpHandler",value:function(t){(null==t?void 0:t.disableHandler)&&t.disableHandler()}},{key:"initializeSessionManger",value:function(t,e,n,i,r){var c,a,o;r.initialize(t.clientID,null!==(c=e.checkSessionIframe)&&void 0!==c?c:"",n,null!==(a=t.checkSessionInterval)&&void 0!==a?a:3,null!==(o=t.sessionRefreshInterval)&&void 0!==o?o:300,t.signInRedirectURL,i)}},{key:"requestCustomGrant",value:function(t,e){var n,i,r;return cA(this,void 0,void 0,c().mark((function a(){var o,l,u,d,s,m=this;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(o=!0,l=!1,!(null==t?void 0:t.tokenEndpoint)){a.next=39;break}return o=!1,u=0,a.t0=[],a.t1=V,a.next=9,this._dataLayer.getConfigData();case 9:if(a.t4=n=a.sent,a.t3=null===a.t4,a.t3){a.next=13;break}a.t3=void 0===n;case 13:if(!a.t3){a.next=17;break}a.t5=void 0,a.next=18;break;case 17:a.t5=n.resourceServerURLs;case 18:if(a.t6=i=a.t5,a.t2=null!==a.t6,!a.t2){a.next=22;break}a.t2=void 0!==i;case 22:if(!a.t2){a.next=26;break}a.t7=i,a.next=27;break;case 26:a.t7=[];case 27:a.t8=a.t7,a.t9=(0,a.t1)(a.t8),a.t10=[t.baseUrl],d=a.t0.concat.call(a.t0,a.t9,a.t10);case 31:if(!(u<d.length)){a.next=39;break}if(!(s=d[u])||!(null===(r=t.tokenEndpoint)||void 0===r?void 0:r.startsWith(s))){a.next=36;break}return l=!0,a.abrupt("break",39);case 36:u++,a.next=31;break;case 39:if(t.shouldReplayAfterRefresh&&this._dataLayer.setTemporaryDataParameter("custom_grant_config",JSON.stringify(t)),!o&&!l){a.next=44;break}return a.abrupt("return",this._authenticationClient.requestCustomGrant(t).then((function(n){return cA(m,void 0,void 0,c().mark((function i(){return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(e&&"function"==typeof e&&e(t),!t.returnsSession){i.next=6;break}return this._spaHelper.refreshAccessTokenAutomatically(),i.abrupt("return",this._authenticationClient.getBasicUserInfo());case 6:return i.abrupt("return",n);case 7:case"end":return i.stop()}}),i,this)})))})).catch((function(t){return Promise.reject(t)})));case 44:return a.abrupt("return",Promise.reject(new CA("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 a.stop()}}),a,this)})))}},{key:"getCustomGrantConfigData",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter("custom_grant_config");case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t,this)})))}},{key:"refreshAccessToken",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){var n;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._authenticationClient.refreshAccessToken();case 3:return e.next=5,this.getCustomGrantConfigData();case 5:if(!(n=e.sent)){e.next=9;break}return e.next=9,this.requestCustomGrant(n,t);case 9:return this._spaHelper.refreshAccessTokenAutomatically(),e.abrupt("return",this._authenticationClient.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,this,[[0,13]])})))}},{key:"httpRequest",value:function(t,e,n,i,r,a){var o,l;return cA(this,void 0,void 0,c().mark((function u(){var d,s,m,h,b,p=this;return c().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return d=!1,u.next=3,this._dataLayer.getConfigData();case 3:return s=u.sent,m=0,u.t0=[],u.t1=V,u.next=9,null==s?void 0:s.resourceServerURLs;case 9:if(u.t3=o=u.sent,u.t2=null!==u.t3,!u.t2){u.next=13;break}u.t2=void 0!==o;case 13:if(!u.t2){u.next=17;break}u.t4=o,u.next=18;break;case 17:u.t4=[];case 18:u.t5=u.t4,u.t6=(0,u.t1)(u.t5),u.t7=[s.baseUrl],h=u.t0.concat.call(u.t0,u.t6,u.t7);case 22:if(!(m<h.length)){u.next=30;break}if(!(b=h[m])||!(null===(l=null==e?void 0:e.url)||void 0===l?void 0:l.startsWith(b))){u.next=27;break}return d=!0,u.abrupt("break",30);case 27:m++,u.next=22;break;case 30:if(!d){u.next=34;break}return u.abrupt("return",t.request(e).then((function(t){return Promise.resolve(t)})).catch((function(o){return cA(p,void 0,void 0,c().mark((function l(){var u,d,s,m,h;return c().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(401!==(null===(u=null==o?void 0:o.response)||void 0===u?void 0:u.status)&&(null==o?void 0:o.response)){c.next=31;break}return c.prev=1,c.next=4,this.refreshAccessToken(a);case 4:m=c.sent,c.next=15;break;case 7:if(c.prev=7,c.t0=c.catch(1),!n){c.next=14;break}if("function"!=typeof i){c.next=13;break}return c.next=13,i(Object.assign(Object.assign({},o),{code:"Access token is invalid"}));case 13:"function"==typeof r&&r();case 14:throw new CA("SPA-AUTH_HELPER-HR-SE01",null!==(d=null===c.t0||void 0===c.t0?void 0:c.t0.name)&&void 0!==d?d:"Refresh token request failed.",null!==(s=null===c.t0||void 0===c.t0?void 0:c.t0.message)&&void 0!==s?s:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!m){c.next=31;break}return c.prev=16,c.next=19,t.request(e);case 19:return h=c.sent,c.abrupt("return",Promise.resolve(h));case 23:if(c.prev=23,c.t1=c.catch(16),!n){c.next=30;break}if("function"!=typeof i){c.next=29;break}return c.next=29,i(c.t1);case 29:"function"==typeof r&&r();case 30:return c.abrupt("return",Promise.reject(c.t1));case 31:if(!n){c.next=36;break}if("function"!=typeof i){c.next=35;break}return c.next=35,i(o);case 35:"function"==typeof r&&r();case 36:return c.abrupt("return",Promise.reject(o));case 37:case"end":return c.stop()}}),l,this,[[1,7],[16,23]])})))})));case 34:return u.abrupt("return",Promise.reject(new CA("SPA-AUTH_HELPER-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 u.stop()}}),u,this)})))}},{key:"httpRequestAll",value:function(t,e,n,i,r){var a,o,l;return cA(this,void 0,void 0,c().mark((function u(){var d,s,m,h,b,p,Z,I,y,g,X=this;return c().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return d=!0,u.next=3,this._dataLayer.getConfigData();case 3:s=u.sent,m=C(t),u.prev=5,m.s();case 7:if((h=m.n()).done){u.next=50;break}return b=h.value,p=!1,Z=0,u.t0=[],u.t1=V,u.next=15,s;case 15:if(u.t4=a=u.sent,u.t3=null===u.t4,u.t3){u.next=19;break}u.t3=void 0===a;case 19:if(!u.t3){u.next=23;break}u.t5=void 0,u.next=24;break;case 23:u.t5=a.resourceServerURLs;case 24:if(u.t6=o=u.t5,u.t2=null!==u.t6,!u.t2){u.next=28;break}u.t2=void 0!==o;case 28:if(!u.t2){u.next=32;break}u.t7=o,u.next=33;break;case 32:u.t7=[];case 33:u.t8=u.t7,u.t9=(0,u.t1)(u.t8),u.t10=[s.baseUrl],I=u.t0.concat.call(u.t0,u.t9,u.t10);case 37:if(!(Z<I.length)){u.next=45;break}if(!(y=I[Z])||!(null===(l=b.url)||void 0===l?void 0:l.startsWith(y))){u.next=42;break}return p=!0,u.abrupt("break",45);case 42:Z++,u.next=37;break;case 45:if(p){u.next=48;break}return d=!1,u.abrupt("break",50);case 48:u.next=7;break;case 50:u.next=55;break;case 52:u.prev=52,u.t11=u.catch(5),m.e(u.t11);case 55:return u.prev=55,m.f(),u.finish(55);case 58:if(g=[],!d){u.next=64;break}return t.forEach((function(t){g.push(e.request(t))})),u.abrupt("return",(null==e?void 0:e.all)&&e.all(g).then((function(t){return Promise.resolve(t)})).catch((function(t){return cA(X,void 0,void 0,c().mark((function a(){var o,l,u,d,s=this;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(401!==(null===(o=null==t?void 0:t.response)||void 0===o?void 0:o.status)&&(null==t?void 0:t.response)){a.next=17;break}return a.prev=1,a.next=4,this._authenticationClient.refreshAccessToken();case 4:d=a.sent,a.next=15;break;case 7:if(a.prev=7,a.t0=a.catch(1),!n){a.next=14;break}if("function"!=typeof i){a.next=13;break}return a.next=13,i(Object.assign(Object.assign({},t),{code:"Access token is invalid"}));case 13:"function"==typeof r&&r();case 14:throw new CA("SPA-AUTH_HELPER-HRA-SE01",null!==(l=null===a.t0||void 0===a.t0?void 0:a.t0.name)&&void 0!==l?l:"Refresh token request failed.",null!==(u=null===a.t0||void 0===a.t0?void 0:a.t0.message)&&void 0!==u?u:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!d){a.next=17;break}return a.abrupt("return",e.all&&e.all(g).then((function(t){return Promise.resolve(t)})).catch((function(t){return cA(s,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}if("function"!=typeof i){e.next=4;break}return e.next=4,i(t);case 4:"function"==typeof r&&r();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!n){a.next=22;break}if("function"!=typeof i){a.next=21;break}return a.next=21,i(t);case 21:"function"==typeof r&&r();case 22:return a.abrupt("return",Promise.reject(t));case 23:case"end":return a.stop()}}),a,this,[[1,7]])})))})));case 64:throw new CA("SPA-AUTH_HELPER-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 u.stop()}}),u,this,[[5,52,55,58]])})))}},{key:"requestAccessToken",value:function(t,e,n,i,r){return cA(this,void 0,void 0,c().mark((function a(){var o,l,u=this;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._dataLayer.getConfigData();case 2:if((o=a.sent).storage!==wA.BrowserMemory||!o.enablePKCE||!e){a.next=9;break}return l=uB.getPKCE(SA.extractPKCEKeyFromStateParam(e)),a.next=7,this._authenticationClient.setPKCECode(SA.extractPKCEKeyFromStateParam(e),l);case 7:a.next=12;break;case 9:if(o.storage!==wA.WebWorker||!i){a.next=12;break}return a.next=12,this._authenticationClient.setPKCECode(i,null!=r?r:"");case 12:if(!t){a.next=14;break}return a.abrupt("return",this._authenticationClient.requestAccessToken(t,null!=e?e:"",null!=r?r:"").then((function(){return cA(u,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o.storage===wA.WebWorker){t.next=10;break}return t.t0=uB,t.next=4,this._authenticationClient.getSignOutURL();case 4:t.t1=t.sent,t.t0.setSignOutURL.call(t.t0,t.t1),this._spaHelper&&(this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically()),n&&"function"==typeof n&&o.enableOIDCSessionManagement&&n(),t.next=11;break;case 10:this._spaHelper&&this._spaHelper.refreshAccessTokenAutomatically();case 11:return t.abrupt("return",this._authenticationClient.getBasicUserInfo());case 12:case"end":return t.stop()}}),t,this)})))})).catch((function(t){return Promise.reject(t)})));case 14:return a.abrupt("return",Promise.reject(new CA("SPA-AUTH_HELPER-RAT1-NF01","No authorization code.","No authorization code was found.")));case 15:case"end":return a.stop()}}),a,this)})))}},{key:"trySignInSilently",value:function(t,e,n){var i;return cA(this,void 0,void 0,c().mark((function r(){var a,o,l,u=this;return c().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!uB.isInitializedSilentSignIn()){r.next=4;break}return r.next=3,n.receivePromptNoneResponse();case 3:return r.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:return a=document.getElementById("rpIFrame"),o=null===(i=null==a?void 0:a.contentDocument)||void 0===i?void 0:i.getElementById("promptNoneIFrame"),r.prev=6,r.next=9,t();case 9:l=r.sent,o.src=l,r.next=16;break;case 13:return r.prev=13,r.t0=r.catch(6),r.abrupt("return",Promise.reject(r.t0));case 16:return r.abrupt("return",new Promise((function(t,n){var i=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function r(a){return cA(u,void 0,void 0,c().mark((function o(){var l,u,d,s,m;return c().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(m=a.data)?void 0:m.type)&&(window.removeEventListener("message",r),clearTimeout(i),t(!1)),"check_session_signed_in"==(null==m?void 0:m.type)&&(null===(l=null==m?void 0:m.data)||void 0===l?void 0:l.code)&&e(null===(u=null==m?void 0:m.data)||void 0===u?void 0:u.code,null===(d=null==m?void 0:m.data)||void 0===d?void 0:d.sessionState,null===(s=null==m?void 0:m.data)||void 0===s?void 0:s.state).then((function(e){window.removeEventListener("message",r),t(e)})).catch((function(t){window.removeEventListener("message",r),n(t)})).finally((function(){clearTimeout(i)}));case 3:case"end":return c.stop()}}),o)})))}))})));case 17:case"end":return r.stop()}}),r,null,[[6,13]])})))}},{key:"handleSignIn",value:function(t,e,n){return cA(this,void 0,void 0,c().mark((function i(){var r,a,o,l,u;return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getConfigData();case 2:return r=i.sent,i.next=5,t();case 5:if(!i.sent){i.next=7;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:if(r.storage===wA.WebWorker){i.next=19;break}return i.next=10,this._authenticationClient.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically(),r.enableOIDCSessionManagement&&e(),i.t0=Promise,i.next=17,this._authenticationClient.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if(a=new URL(window.location.href).searchParams.get("error"),o=new URL(window.location.href).searchParams.get("error_description"),!a){i.next=27;break}throw(l=new URL(window.location.href)).searchParams.delete("error"),l.searchParams.delete("error_description"),history.pushState(null,document.title,l.toString()),new CA("SPA-AUTH_HELPER-SI-SE01",a,null!=o?o:"");case 27:if(r.storage!==wA.WebWorker||!n){i.next=33;break}return i.next=30,n();case 30:if(!(u=i.sent)){i.next=33;break}return i.abrupt("return",u);case 33:case"end":return i.stop()}}),i,this)})))}},{key:"getBasicUserInfo",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"isAuthenticated",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}}]),t}(),oB=function(){function t(e){u(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return s(t,[{key:"refreshAccessTokenAutomatically",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e,n,i,r=this;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),i=setTimeout((function(){return cA(r,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(bA,JSON.stringify(i));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(bA);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(bA);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),lB=function(){function t(){u(this,t)}return s(t,null,[{key:"generateSuccessMessage",value:function(t){return{blob:(null==t?void 0:t.data)instanceof Blob?null==t?void 0:t.data:null,data:JSON.stringify(null!=t?t:""),success:!0}}},{key:"generateFailureMessage",value:function(t){return(null==t?void 0:t.toJSON)&&delete t.toJSON,{error:JSON.stringify(null!=t?t:""),success:!1}}}]),t}(),uB=function(){function t(){u(this,t)}return s(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(t){var e;return null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:""}},{key:"setPKCE",value:function(t,e){sessionStorage.setItem(t,e)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem(fA,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(fA))&&void 0!==t?t:""}},{key:"removePKCE",value:function(t){sessionStorage.removeItem(t)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem("initialized-silent-sign-in"),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!JA.isSignOutSuccessful(window.location.href)){t.next=6;break}return e=window.location.href.split("?")[0],history.pushState({},document.title,e),t.next=5,JA.clearUserSessionData();case 5:return t.abrupt("return",!0);case 6:return t.abrupt("return",!1);case 7:case"end":return t.stop()}}),t)})))}},{key:"didSignOutFail",value:function(){if(JA.didSignOutFail(window.location.href)){var t=new URL(window.location.href),e=t.searchParams.get("error"),n=t.searchParams.get("error_description"),i=window.location.href.split("?")[0];return history.pushState({},document.title,i),{description:null!=n?n:"",error:null!=e?e:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var t,e=new URL(window.location.href).searchParams.get("state");return null!==(t=null==e?void 0:e.includes("sign-in-silently"))&&void 0!==t&&t}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,e=new URL(t);return!!e.searchParams.get("error")&&e.searchParams.get("state")!==VA}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem("promptNoneRequestSent");return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem("promptNoneRequestSent",JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){var n;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),dB=($A=function(t,e,n,i,r,c,a){BA=t,zA=e,jA=n,QA=c,PA=r,qA=a,(MA=i)>-1&&tB(),PA>-1&&(r=setInterval((function(){iB()}),1e3*PA))},tB=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n,i,r;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=function(){var t;return cA(this,void 0,void 0,c().mark((function e(){var i,r,a,o,l;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,jA();case 2:i=e.sent,Boolean(BA)&&Boolean(i)&&(r="".concat(BA," ").concat(i),a=document.getElementById("rpIFrame"),o=null===(t=null==a?void 0:a.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(l=o.contentWindow)||l.postMessage(r,zA));case 4:case"end":return e.stop()}}),e)})))},zA&&BA&&QA){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",r=document.getElementById("rpIFrame"),(null===(e=null==r?void 0:r.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=zA+"?client_id="+BA+"&redirect_uri="+QA,t.next=9,i();case 9:DA=setInterval(i,1e3*MA),nB();case 11:case"end":return t.stop()}}),t)})))},eB=function(){clearInterval(DA),clearInterval(void 0)},nB=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return cA(this,void 0,void 0,c().mark((function n(){var i;return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((i=zA)&&!((null==i?void 0:i.indexOf(t.origin))<0)&&"set_session_state_from_iframe"!==(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,EA();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&iB();case 13:case"end":return n.stop()}}),n)})))}),!1)},iB=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n,i,r,a;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=document.getElementById("rpIFrame"),i=null===(e=null==n?void 0:n.contentDocument)||void 0===e?void 0:e.getElementById("promptNoneIFrame"),!uB.canSendPromptNoneRequest()){t.next=10;break}return uB.setPromptNoneRequestSent(!0),r=function t(e){var n,i,r;"set_session_state_from_iframe"===(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)&&(_A(null!==(r=null===(i=null==e?void 0:e.data)||void 0===i?void 0:i.data)&&void 0!==r?r:""),null===window||void 0===window||window.removeEventListener("message",t))},OA!==wA.BrowserMemory&&OA!==wA.WebWorker||null===window||void 0===window||window.addEventListener("message",r),t.next=8,qA({prompt:"none",responseMode:"query",state:cB});case 8:a=t.sent,i.src=a;case 10:case"end":return t.stop()}}),t)})))},rB=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var n,i,r,a,o,l,u,d,s,m;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=new URL(window.location.href).searchParams.get("state"),a=new URL(window.location.href).searchParams.get(GA),o=window.parent.parent,null===r||!r.includes(cB)&&!r.includes("sign-in-silently")){e.next=48;break}if(null===(l=new URL(window.location.href).searchParams.get("code"))||0===l.length){e.next=32;break}if(!r.includes("sign-in-silently")){e.next=15;break}return u={data:{code:l,sessionState:null!=a?a:"",state:r},type:"check_session_signed_in"},sessionStorage.setItem("initialized-silent-sign-in","false"),o.postMessage(u,o.origin),uB.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=14,uB.waitTillPageRedirect();case 14:return e.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),OA!==wA.LocalStorage&&OA!==wA.SessionStorage){e.next=23;break}if(e.t0=t,!e.t0){e.next=21;break}return e.next=21,t(d);case 21:e.next=25;break;case 23:s={data:null!=d?d:"",type:"set_session_state_from_iframe"},null===(i=null===(n=null===window||void 0===window?void 0:window.parent)||void 0===n?void 0:n.parent)||void 0===i||i.postMessage(s);case 25:return uB.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=29,uB.waitTillPageRedirect();case 29:return e.abrupt("return",!0);case 32:if(!r.includes("sign-in-silently")){e.next=40;break}return m={type:"check_session_signed_out"},window.parent.parent.postMessage(m,o.origin),uB.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=39,uB.waitTillPageRedirect();case 39:return e.abrupt("return",!0);case 40:return uB.setPromptNoneRequestSent(!1),e.next=43,EA();case 43:return o.location.href=e.sent,window.location.href="about:blank",e.next=47,uB.waitTillPageRedirect();case 47:return e.abrupt("return",!0);case 48:return e.abrupt("return",!1);case 49:case"end":return e.stop()}}),e)})))},function(t,e,n){return cA(void 0,void 0,void 0,c().mark((function i(){var r,a,o,l;return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:(a=document.createElement("iframe")).setAttribute("id","rpIFrame"),a.style.display="none",o=!1,a.onload=function(){var t,e,n,i,r=null==(a=document.getElementById("rpIFrame"))?void 0:a.contentDocument,c=null==r?void 0:r.createElement("iframe");c&&(c.setAttribute("id","opIFrame"),c.style.display="none");var l=null==r?void 0:r.createElement("iframe");l&&(l.setAttribute("id","promptNoneIFrame"),l.style.display="none"),c&&(null===(e=null===(t=null==a?void 0:a.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(c)),l&&(null===(i=null===(n=null==a?void 0:a.contentDocument)||void 0===n?void 0:n.body)||void 0===i||i.appendChild(l)),o=!0},null===(r=null===document||void 0===document?void 0:document.body)||void 0===r||r.appendChild(a),EA=t,OA=e,_A=n,l=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 10:if(!1!==o){i.next=15;break}return i.next=13,l();case 13:i.next=10;break;case 15:return i.abrupt("return",{initialize:$A,receivePromptNoneResponse:rB,reset:eB});case 16:case"end":return i.stop()}}),i)})))}),sB={exports:{}},mB=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}},hB=mB,bB=Object.prototype.toString;function pB(t){return Array.isArray(t)}function ZB(t){return void 0===t}function IB(t){return"[object ArrayBuffer]"===bB.call(t)}function yB(t){return null!==t&&"object"===a(t)}function gB(t){if("[object Object]"!==bB.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function XB(t){return"[object Function]"===bB.call(t)}function GB(t,e){if(null!=t)if("object"!==a(t)&&(t=[t]),pB(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.call(null,t[r],r,t)}var fB={isArray:pB,isArrayBuffer:IB,isBuffer:function(t){return null!==t&&!ZB(t)&&null!==t.constructor&&!ZB(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"[object FormData]"===bB.call(t)},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&IB(t.buffer)},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:yB,isPlainObject:gB,isUndefined:ZB,isDate:function(t){return"[object Date]"===bB.call(t)},isFile:function(t){return"[object File]"===bB.call(t)},isBlob:function(t){return"[object Blob]"===bB.call(t)},isFunction:XB,isStream:function(t){return yB(t)&&XB(t.pipe)},isURLSearchParams:function(t){return"[object URLSearchParams]"===bB.call(t)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:GB,merge:function t(){var e={};function n(n,i){gB(e[i])&&gB(n)?e[i]=t(e[i],n):gB(n)?e[i]=t({},n):pB(n)?e[i]=n.slice():e[i]=n}for(var i=0,r=arguments.length;i<r;i++)GB(arguments[i],n);return e},extend:function(t,e,n){return GB(e,(function(e,i){t[i]=n&&"function"==typeof e?hB(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}},VB=fB;function WB(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var vB=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(VB.isURLSearchParams(e))i=e.toString();else{var r=[];VB.forEach(e,(function(t,e){null!=t&&(VB.isArray(t)?e+="[]":t=[t],VB.forEach(t,(function(t){VB.isDate(t)?t=t.toISOString():VB.isObject(t)&&(t=JSON.stringify(t)),r.push(WB(e)+"="+WB(t))})))})),i=r.join("&")}if(i){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t},CB=fB;function SB(){this.handlers=[]}SB.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},SB.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},SB.prototype.forEach=function(t){CB.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var YB=SB,RB="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function KB(){throw new Error("setTimeout has not been defined")}function NB(){throw new Error("clearTimeout has not been defined")}var LB=KB,JB=NB;function xB(t){if(LB===setTimeout)return setTimeout(t,0);if((LB===KB||!LB)&&setTimeout)return LB=setTimeout,setTimeout(t,0);try{return LB(t,0)}catch(e){try{return LB.call(null,t,0)}catch(e){return LB.call(this,t,0)}}}"function"==typeof RB.setTimeout&&(LB=setTimeout),"function"==typeof RB.clearTimeout&&(JB=clearTimeout);var HB,kB=[],UB=!1,TB=-1;function wB(){UB&&HB&&(UB=!1,HB.length?kB=HB.concat(kB):TB=-1,kB.length&&FB())}function FB(){if(!UB){var t=xB(wB);UB=!0;for(var e=kB.length;e;){for(HB=kB,kB=[];++TB<e;)HB&&HB[TB].run();TB=-1,e=kB.length}HB=null,UB=!1,function(t){if(JB===clearTimeout)return clearTimeout(t);if((JB===NB||!JB)&&clearTimeout)return JB=clearTimeout,clearTimeout(t);try{JB(t)}catch(e){try{return JB.call(null,t)}catch(e){return JB.call(this,t)}}}(t)}}function AB(t,e){this.fun=t,this.array=e}AB.prototype.run=function(){this.fun.apply(null,this.array)};function BB(){}var zB=BB,jB=BB,MB=BB,QB=BB,PB=BB,EB=BB,DB=BB;var OB=RB.performance||{},_B=OB.now||OB.mozNow||OB.msNow||OB.oNow||OB.webkitNow||function(){return(new Date).getTime()};var qB=new Date;var $B={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];kB.push(new AB(t,e)),1!==kB.length||UB||xB(FB)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:zB,addListener:jB,once:MB,off:QB,removeListener:PB,removeAllListeners:EB,emit:DB,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*_B.call(OB),n=Math.floor(e),i=Math.floor(e%1*1e9);return t&&(n-=t[0],(i-=t[1])<0&&(n--,i+=1e9)),[n,i]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-qB)/1e3}},tz=$B,ez=fB,nz=function(t,e,n,i,r){return t.config=e,n&&(t.code=n),t.request=i,t.response=r,t.isAxiosError=!0,t.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}},t},iz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rz=nz,cz=function(t,e,n,i,r){var c=new Error(t);return rz(c,e,n,i,r)},az=cz,oz=fB,lz=oz.isStandardBrowserEnv()?{write:function(t,e,n,i,r,c){var a=[];a.push(t+"="+encodeURIComponent(e)),oz.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),oz.isString(i)&&a.push("path="+i),oz.isString(r)&&a.push("domain="+r),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},uz=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},dz=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t},sz=fB,mz=["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"],hz=fB,bz=hz.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var i=t;return e&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{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 t=i(window.location.href),function(e){var n=hz.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0};function pz(t){this.message=t}pz.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},pz.prototype.__CANCEL__=!0;var Zz=pz,Iz=fB,yz=function(t,e,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?e(az("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)},gz=lz,Xz=vB,Gz=function(t,e){return t&&!uz(e)?dz(t,e):e},fz=function(t){var e,n,i,r={};return t?(sz.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=sz.trim(t.substr(0,i)).toLowerCase(),n=sz.trim(t.substr(i+1)),e){if(r[e]&&mz.indexOf(e)>=0)return;r[e]="set-cookie"===e?(r[e]?r[e]:[]).concat([n]):r[e]?r[e]+", "+n:n}})),r):r},Vz=bz,Wz=cz,vz=iz,Cz=Zz,Sz=function(t){return new Promise((function(e,n){var i,r=t.data,c=t.headers,a=t.responseType;function o(){t.cancelToken&&t.cancelToken.unsubscribe(i),t.signal&&t.signal.removeEventListener("abort",i)}Iz.isFormData(r)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var u=t.auth.username||"",d=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=Gz(t.baseURL,t.url);function m(){if(l){var i="getAllResponseHeaders"in l?fz(l.getAllResponseHeaders()):null,r={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:t,request:l};yz((function(t){e(t),o()}),(function(t){n(t),o()}),r),l=null}}if(l.open(t.method.toUpperCase(),Xz(s,t.params,t.paramsSerializer),!0),l.timeout=t.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(Wz("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(Wz("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",i=t.transitional||vz;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(Wz(e,t,i.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},Iz.isStandardBrowserEnv()){var h=(t.withCredentials||Vz(s))&&t.xsrfCookieName?gz.read(t.xsrfCookieName):void 0;h&&(c[t.xsrfHeaderName]=h)}"setRequestHeader"in l&&Iz.forEach(c,(function(t,e){void 0===r&&"content-type"===e.toLowerCase()?delete c[e]:l.setRequestHeader(e,t)})),Iz.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),a&&"json"!==a&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(i=function(t){l&&(n(!t||t&&t.type?new Cz("canceled"):t),l.abort(),l=null)},t.cancelToken&&t.cancelToken.subscribe(i),t.signal&&(t.signal.aborted?i():t.signal.addEventListener("abort",i))),r||(r=null),l.send(r)}))},Yz=fB,Rz=function(t,e){ez.forEach(t,(function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])}))},Kz=nz,Nz={"Content-Type":"application/x-www-form-urlencoded"};function Lz(t,e){!Yz.isUndefined(t)&&Yz.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var Jz,xz={transitional:iz,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==tz&&"[object process]"===Object.prototype.toString.call(tz))&&(Jz=Sz),Jz),transformRequest:[function(t,e){return Rz(e,"Accept"),Rz(e,"Content-Type"),Yz.isFormData(t)||Yz.isArrayBuffer(t)||Yz.isBuffer(t)||Yz.isStream(t)||Yz.isFile(t)||Yz.isBlob(t)?t:Yz.isArrayBufferView(t)?t.buffer:Yz.isURLSearchParams(t)?(Lz(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):Yz.isObject(t)||e&&"application/json"===e["Content-Type"]?(Lz(e,"application/json"),function(t,e,n){if(Yz.isString(t))try{return(e||JSON.parse)(t),Yz.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||xz.transitional,n=e&&e.silentJSONParsing,i=e&&e.forcedJSONParsing,r=!n&&"json"===this.responseType;if(r||i&&Yz.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(r){if("SyntaxError"===t.name)throw Kz(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Yz.forEach(["delete","get","head"],(function(t){xz.headers[t]={}})),Yz.forEach(["post","put","patch"],(function(t){xz.headers[t]=Yz.merge(Nz)}));var Hz=xz,kz=fB,Uz=Hz,Tz=function(t){return!(!t||!t.__CANCEL__)},wz=fB,Fz=function(t,e,n){var i=this||Uz;return kz.forEach(n,(function(n){t=n.call(i,t,e)})),t},Az=Tz,Bz=Hz,zz=Zz;function jz(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new zz("canceled")}var Mz=fB,Qz=function(t,e){e=e||{};var n={};function i(t,e){return Mz.isPlainObject(t)&&Mz.isPlainObject(e)?Mz.merge(t,e):Mz.isPlainObject(e)?Mz.merge({},e):Mz.isArray(e)?e.slice():e}function r(n){return Mz.isUndefined(e[n])?Mz.isUndefined(t[n])?void 0:i(void 0,t[n]):i(t[n],e[n])}function c(t){if(!Mz.isUndefined(e[t]))return i(void 0,e[t])}function a(n){return Mz.isUndefined(e[n])?Mz.isUndefined(t[n])?void 0:i(void 0,t[n]):i(void 0,e[n])}function o(n){return n in e?i(t[n],e[n]):n in t?i(void 0,t[n]):void 0}var l={url:c,method:c,data:c,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return Mz.forEach(Object.keys(t).concat(Object.keys(e)),(function(t){var e=l[t]||r,i=e(t);Mz.isUndefined(i)&&e!==o||(n[t]=i)})),n},Pz="0.26.1",Ez=Pz,Dz={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){Dz[t]=function(n){return a(n)===t||"a"+(e<1?"n ":" ")+t}}));var Oz={};Dz.transitional=function(t,e,n){function i(t,e){return"[Axios v"+Ez+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,c){if(!1===t)throw new Error(i(r," has been removed"+(e?" in "+e:"")));return e&&!Oz[r]&&(Oz[r]=!0,console.warn(i(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,c)}};var _z={assertOptions:function(t,e,n){if("object"!==a(t))throw new TypeError("options must be an object");for(var i=Object.keys(t),r=i.length;r-- >0;){var c=i[r],o=e[c];if(o){var l=t[c],u=void 0===l||o(l,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:Dz},qz=fB,$z=vB,tj=YB,ej=function(t){return jz(t),t.headers=t.headers||{},t.data=Fz.call(t,t.data,t.headers,t.transformRequest),t.headers=wz.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),wz.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||Bz.adapter)(t).then((function(e){return jz(t),e.data=Fz.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return Az(e)||(jz(t),e&&e.response&&(e.response.data=Fz.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},nj=Qz,ij=_z,rj=ij.validators;function cj(t){this.defaults=t,this.interceptors={request:new tj,response:new tj}}cj.prototype.request=function(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},(e=nj(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=e.transitional;void 0!==n&&ij.assertOptions(n,{silentJSONParsing:rj.transitional(rj.boolean),forcedJSONParsing:rj.transitional(rj.boolean),clarifyTimeoutError:rj.transitional(rj.boolean)},!1);var i=[],r=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,i.unshift(t.fulfilled,t.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(t){a.push(t.fulfilled,t.rejected)})),!r){var o=[ej,void 0];for(Array.prototype.unshift.apply(o,i),o=o.concat(a),c=Promise.resolve(e);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=e;i.length;){var u=i.shift(),d=i.shift();try{l=u(l)}catch(t){d(t);break}}try{c=ej(l)}catch(t){return Promise.reject(t)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},cj.prototype.getUri=function(t){return t=nj(this.defaults,t),$z(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},qz.forEach(["delete","get","head","options"],(function(t){cj.prototype[t]=function(e,n){return this.request(nj(n||{},{method:t,url:e,data:(n||{}).data}))}})),qz.forEach(["post","put","patch"],(function(t){cj.prototype[t]=function(e,n,i){return this.request(nj(i||{},{method:t,url:e,data:n}))}}));var aj=cj,oj=Zz;function lj(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;this.promise.then((function(t){if(n._listeners){var e,i=n._listeners.length;for(e=0;e<i;e++)n._listeners[e](t);n._listeners=null}})),this.promise.then=function(t){var e,i=new Promise((function(t){n.subscribe(t),e=t})).then(t);return i.cancel=function(){n.unsubscribe(e)},i},t((function(t){n.reason||(n.reason=new oj(t),e(n.reason))}))}lj.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},lj.prototype.subscribe=function(t){this.reason?t(this.reason):this._listeners?this._listeners.push(t):this._listeners=[t]},lj.prototype.unsubscribe=function(t){if(this._listeners){var e=this._listeners.indexOf(t);-1!==e&&this._listeners.splice(e,1)}},lj.source=function(){var t,e=new lj((function(e){t=e}));return{token:e,cancel:t}};var uj=lj,dj=fB,sj=fB,mj=mB,hj=aj,bj=Qz;var pj=function t(e){var n=new hj(e),i=mj(hj.prototype.request,n);return sj.extend(i,hj.prototype,n),sj.extend(i,n),i.create=function(n){return t(bj(e,n))},i}(Hz);pj.Axios=hj,pj.Cancel=Zz,pj.CancelToken=uj,pj.isCancel=Tz,pj.VERSION=Pz,pj.all=function(t){return Promise.all(t)},pj.spread=function(t){return function(e){return t.apply(null,e)}},pj.isAxiosError=function(t){return dj.isObject(t)&&!0===t.isAxiosError},sB.exports=pj,sB.exports.default=pj;var Zj,Ij=sB.exports;var yj=Zj=function(){function t(){u(this,t),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(t,[{key:"requestHandler",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){var n,i;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,i=new FormData,Object.keys(n).forEach((function(t){i.append(t,n[t])})),t.data=i),Zj.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw Zj.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return Zj.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:Zj.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){Zj.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){Zj.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Zj.DEFAULT_HANDLER_DISABLE_TIMEOUT;Zj.isHandlerEnabled=!1,setTimeout((function(){Zj.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=Ij.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new Zj),this.axiosInstance.interceptors.request.use((function(e){return cA(t,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=Ij.all,this.axiosInstance.spread=Ij.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}}]),t}();yj.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,yj=Zj=function(t,e,n,i){var r,c=arguments.length,o=c<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,n):i;if("object"===("undefined"==typeof Reflect?"undefined":a(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,i);else for(var l=t.length-1;l>=0;l--)(r=t[l])&&(o=(c<3?r(o):c>3?r(e,n,o):r(e,n))||o);return c>3&&o&&Object.defineProperty(e,n,o),o}([function(t){}],yj);var gj=function(){function t(){u(this,t)}return s(t,[{key:"setData",value:function(t,e){return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),Xj=function(){function t(){u(this,t),this._data=new Map}return s(t,[{key:"setData",value:function(t,e){return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return cA(this,void 0,void 0,c().mark((function i(){return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return i.stop()}}),i,this)})))}},{key:"removeData",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),Gj=function(){function t(){u(this,t)}return s(t,[{key:"setData",value:function(t,e){return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),fj=[],Vj=[],Wj="undefined"!=typeof Uint8Array?Uint8Array:Array,vj=!1;function Cj(){vj=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)fj[e]=t[e],Vj[t.charCodeAt(e)]=e;Vj["-".charCodeAt(0)]=62,Vj["_".charCodeAt(0)]=63}function Sj(t,e,n){for(var i,r,c=[],a=e;a<n;a+=3)i=(t[a]<<16)+(t[a+1]<<8)+t[a+2],c.push(fj[(r=i)>>18&63]+fj[r>>12&63]+fj[r>>6&63]+fj[63&r]);return c.join("")}function Yj(t){var e;vj||Cj();for(var n=t.length,i=n%3,r="",c=[],a=16383,o=0,l=n-i;o<l;o+=a)c.push(Sj(t,o,o+a>l?l:o+a));return 1===i?(e=t[n-1],r+=fj[e>>2],r+=fj[e<<4&63],r+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],r+=fj[e>>10],r+=fj[e>>4&63],r+=fj[e<<2&63],r+="="),c.push(r),c.join("")}function Rj(t,e,n,i,r){var c,a,o=8*r-i-1,l=(1<<o)-1,u=l>>1,d=-7,s=n?r-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(a=c&(1<<-d)-1,c>>=-d,d+=i;d>0;a=256*a+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,i),c-=u}return(h?-1:1)*a*Math.pow(2,c-i)}function Kj(t,e,n,i,r,c){var a,o,l,u=8*c-r-1,d=(1<<u)-1,s=d>>1,m=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:c-1,b=i?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=d):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(a++,l/=2),a+s>=d?(o=0,a=d):a+s>=1?(o=(e*l-1)*Math.pow(2,r),a+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,r),a=0));r>=8;t[n+h]=255&o,h+=b,o/=256,r-=8);for(a=a<<r|o,u+=r;u>0;t[n+h]=255&a,h+=b,a/=256,u-=8);t[n+h-b]|=128*p}var Nj={}.toString,Lj=Array.isArray||function(t){return"[object Array]"==Nj.call(t)};kj.TYPED_ARRAY_SUPPORT=void 0===RB.TYPED_ARRAY_SUPPORT||RB.TYPED_ARRAY_SUPPORT;var Jj=xj();function xj(){return kj.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Hj(t,e){if(xj()<e)throw new RangeError("Invalid typed array length");return kj.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=kj.prototype:(null===t&&(t=new kj(e)),t.length=e),t}function kj(t,e,n){if(!(kj.TYPED_ARRAY_SUPPORT||this instanceof kj))return new kj(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return wj(this,t)}return Uj(this,t,e,n)}function Uj(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i);kj.TYPED_ARRAY_SUPPORT?(t=e).__proto__=kj.prototype:t=Fj(t,e);return t}(t,e,n,i):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!kj.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|zj(e,n),r=(t=Hj(t,i)).write(e,n);r!==i&&(t=t.slice(0,r));return t}(t,e,n):function(t,e){if(Bj(e)){var n=0|Aj(e.length);return 0===(t=Hj(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(i=e.length)!=i?Hj(t,0):Fj(t,e);if("Buffer"===e.type&&Lj(e.data))return Fj(t,e.data)}var i;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function Tj(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function wj(t,e){if(Tj(e),t=Hj(t,e<0?0:0|Aj(e)),!kj.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function Fj(t,e){var n=e.length<0?0:0|Aj(e.length);t=Hj(t,n);for(var i=0;i<n;i+=1)t[i]=255&e[i];return t}function Aj(t){if(t>=xj())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+xj().toString(16)+" bytes");return 0|t}function Bj(t){return!(null==t||!t._isBuffer)}function zj(t,e){if(Bj(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return pM(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return ZM(t).length;default:if(i)return pM(t).length;e=(""+e).toLowerCase(),i=!0}}function jj(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return rM(this,e,n);case"utf8":case"utf-8":return eM(this,e,n);case"ascii":return nM(this,e,n);case"latin1":case"binary":return iM(this,e,n);case"base64":return tM(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return cM(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function Mj(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function Qj(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=kj.from(e,i)),Bj(e))return 0===e.length?-1:Pj(t,e,n,i,r);if("number"==typeof e)return e&=255,kj.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):Pj(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function Pj(t,e,n,i,r){var c,a=1,o=t.length,l=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(r){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*a}else-1!==d&&(c-=c-d),d=-1}else for(n+l>o&&(n=o-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function Ej(t,e,n,i){n=Number(n)||0;var r=t.length-n;i?(i=Number(i))>r&&(i=r):i=r;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");i>c/2&&(i=c/2);for(var a=0;a<i;++a){var o=parseInt(e.substr(2*a,2),16);if(isNaN(o))return a;t[n+a]=o}return a}function Dj(t,e,n,i){return IM(pM(e,t.length-n),t,n,i)}function Oj(t,e,n,i){return IM(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,i)}function _j(t,e,n,i){return Oj(t,e,n,i)}function qj(t,e,n,i){return IM(ZM(e),t,n,i)}function $j(t,e,n,i){return IM(function(t,e){for(var n,i,r,c=[],a=0;a<t.length&&!((e-=2)<0);++a)i=(n=t.charCodeAt(a))>>8,r=n%256,c.push(r),c.push(i);return c}(e,t.length-n),t,n,i)}function tM(t,e,n){return 0===e&&n===t.length?Yj(t):Yj(t.slice(e,n))}function eM(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r<n;){var c,a,o,l,u=t[r],d=null,s=u>239?4:u>223?3:u>191?2:1;if(r+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[r+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=t[r+1],a=t[r+2],128==(192&c)&&128==(192&a)&&(l=(15&u)<<12|(63&c)<<6|63&a)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=t[r+1],a=t[r+2],o=t[r+3],128==(192&c)&&128==(192&a)&&128==(192&o)&&(l=(15&u)<<18|(63&c)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,i.push(d>>>10&1023|55296),d=56320|1023&d),i.push(d),r+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",i=0;for(;i<e;)n+=String.fromCharCode.apply(String,t.slice(i,i+=4096));return n}(i)}kj.poolSize=8192,kj._augment=function(t){return t.__proto__=kj.prototype,t},kj.from=function(t,e,n){return Uj(null,t,e,n)},kj.TYPED_ARRAY_SUPPORT&&(kj.prototype.__proto__=Uint8Array.prototype,kj.__proto__=Uint8Array),kj.alloc=function(t,e,n){return function(t,e,n,i){return Tj(e),e<=0?Hj(t,e):void 0!==n?"string"==typeof i?Hj(t,e).fill(n,i):Hj(t,e).fill(n):Hj(t,e)}(null,t,e,n)},kj.allocUnsafe=function(t){return wj(null,t)},kj.allocUnsafeSlow=function(t){return wj(null,t)},kj.isBuffer=yM,kj.compare=function(t,e){if(!Bj(t)||!Bj(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,i=e.length,r=0,c=Math.min(n,i);r<c;++r)if(t[r]!==e[r]){n=t[r],i=e[r];break}return n<i?-1:i<n?1:0},kj.isEncoding=function(t){switch(String(t).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}},kj.concat=function(t,e){if(!Lj(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return kj.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var i=kj.allocUnsafe(e),r=0;for(n=0;n<t.length;++n){var c=t[n];if(!Bj(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(i,r),r+=c.length}return i},kj.byteLength=zj,kj.prototype._isBuffer=!0,kj.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)Mj(this,e,e+1);return this},kj.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)Mj(this,e,e+3),Mj(this,e+1,e+2);return this},kj.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)Mj(this,e,e+7),Mj(this,e+1,e+6),Mj(this,e+2,e+5),Mj(this,e+3,e+4);return this},kj.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?eM(this,0,t):jj.apply(this,arguments)},kj.prototype.equals=function(t){if(!Bj(t))throw new TypeError("Argument must be a Buffer");return this===t||0===kj.compare(this,t)},kj.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},kj.prototype.compare=function(t,e,n,i,r){if(!Bj(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(r>>>=0)-(i>>>=0),a=(n>>>=0)-(e>>>=0),o=Math.min(c,a),l=this.slice(i,r),u=t.slice(e,n),d=0;d<o;++d)if(l[d]!==u[d]){c=l[d],a=u[d];break}return c<a?-1:a<c?1:0},kj.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},kj.prototype.indexOf=function(t,e,n){return Qj(this,t,e,n,!0)},kj.prototype.lastIndexOf=function(t,e,n){return Qj(this,t,e,n,!1)},kj.prototype.write=function(t,e,n,i){if(void 0===e)i="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)i=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var c=!1;;)switch(i){case"hex":return Ej(this,t,e,n);case"utf8":case"utf-8":return Dj(this,t,e,n);case"ascii":return Oj(this,t,e,n);case"latin1":case"binary":return _j(this,t,e,n);case"base64":return qj(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return $j(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),c=!0}},kj.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function nM(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(127&t[r]);return i}function iM(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(t[r]);return i}function rM(t,e,n){var i=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>i)&&(n=i);for(var r="",c=e;c<n;++c)r+=bM(t[c]);return r}function cM(t,e,n){for(var i=t.slice(e,n),r="",c=0;c<i.length;c+=2)r+=String.fromCharCode(i[c]+256*i[c+1]);return r}function aM(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function oM(t,e,n,i,r,c){if(!Bj(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||e<c)throw new RangeError('"value" argument is out of bounds');if(n+i>t.length)throw new RangeError("Index out of range")}function lM(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,c=Math.min(t.length-n,2);r<c;++r)t[n+r]=(e&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function uM(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,c=Math.min(t.length-n,4);r<c;++r)t[n+r]=e>>>8*(i?r:3-r)&255}function dM(t,e,n,i,r,c){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function sM(t,e,n,i,r){return r||dM(t,0,n,4),Kj(t,e,n,i,23,4),n+4}function mM(t,e,n,i,r){return r||dM(t,0,n,8),Kj(t,e,n,i,52,8),n+8}kj.prototype.slice=function(t,e){var n,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),kj.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=kj.prototype;else{var r=e-t;n=new kj(r,void 0);for(var c=0;c<r;++c)n[c]=this[c+t]}return n},kj.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i},kj.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},kj.prototype.readUInt8=function(t,e){return e||aM(t,1,this.length),this[t]},kj.prototype.readUInt16LE=function(t,e){return e||aM(t,2,this.length),this[t]|this[t+1]<<8},kj.prototype.readUInt16BE=function(t,e){return e||aM(t,2,this.length),this[t]<<8|this[t+1]},kj.prototype.readUInt32LE=function(t,e){return e||aM(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},kj.prototype.readUInt32BE=function(t,e){return e||aM(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},kj.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},kj.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=e,r=1,c=this[t+--i];i>0&&(r*=256);)c+=this[t+--i]*r;return c>=(r*=128)&&(c-=Math.pow(2,8*e)),c},kj.prototype.readInt8=function(t,e){return e||aM(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},kj.prototype.readInt16LE=function(t,e){e||aM(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},kj.prototype.readInt16BE=function(t,e){e||aM(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},kj.prototype.readInt32LE=function(t,e){return e||aM(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},kj.prototype.readInt32BE=function(t,e){return e||aM(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},kj.prototype.readFloatLE=function(t,e){return e||aM(t,4,this.length),Rj(this,t,!0,23,4)},kj.prototype.readFloatBE=function(t,e){return e||aM(t,4,this.length),Rj(this,t,!1,23,4)},kj.prototype.readDoubleLE=function(t,e){return e||aM(t,8,this.length),Rj(this,t,!0,52,8)},kj.prototype.readDoubleBE=function(t,e){return e||aM(t,8,this.length),Rj(this,t,!1,52,8)},kj.prototype.writeUIntLE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||oM(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,c=0;for(this[e]=255&t;++c<n&&(r*=256);)this[e+c]=t/r&255;return e+n},kj.prototype.writeUIntBE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||oM(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,c=1;for(this[e+r]=255&t;--r>=0&&(c*=256);)this[e+r]=t/c&255;return e+n},kj.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,1,255,0),kj.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},kj.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,65535,0),kj.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):lM(this,t,e,!0),e+2},kj.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,65535,0),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):lM(this,t,e,!1),e+2},kj.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,4294967295,0),kj.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):uM(this,t,e,!0),e+4},kj.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,4294967295,0),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):uM(this,t,e,!1),e+4},kj.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);oM(this,t,e,n,r-1,-r)}var c=0,a=1,o=0;for(this[e]=255&t;++c<n&&(a*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},kj.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);oM(this,t,e,n,r-1,-r)}var c=n-1,a=1,o=0;for(this[e+c]=255&t;--c>=0&&(a*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},kj.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,1,127,-128),kj.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},kj.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,32767,-32768),kj.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):lM(this,t,e,!0),e+2},kj.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,32767,-32768),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):lM(this,t,e,!1),e+2},kj.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,2147483647,-2147483648),kj.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):uM(this,t,e,!0),e+4},kj.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):uM(this,t,e,!1),e+4},kj.prototype.writeFloatLE=function(t,e,n){return sM(this,t,e,!0,n)},kj.prototype.writeFloatBE=function(t,e,n){return sM(this,t,e,!1,n)},kj.prototype.writeDoubleLE=function(t,e,n){return mM(this,t,e,!0,n)},kj.prototype.writeDoubleBE=function(t,e,n){return mM(this,t,e,!1,n)},kj.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,c=i-n;if(this===t&&n<e&&e<i)for(r=c-1;r>=0;--r)t[r+e]=this[r+n];else if(c<1e3||!kj.TYPED_ARRAY_SUPPORT)for(r=0;r<c;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},kj.prototype.fill=function(t,e,n,i){if("string"==typeof t){if("string"==typeof e?(i=e,e=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!kj.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var a=Bj(t)?t:pM(new kj(t,i).toString()),o=a.length;for(c=0;c<n-e;++c)this[c+e]=a[c%o]}return this};var hM=/[^+\/0-9A-Za-z-_]/g;function bM(t){return t<16?"0"+t.toString(16):t.toString(16)}function pM(t,e){var n;e=e||1/0;for(var i=t.length,r=null,c=[],a=0;a<i;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(a+1===i){(e-=3)>-1&&c.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&c.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=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((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function ZM(t){return function(t){var e,n,i,r,c,a;vj||Cj();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,a=new Wj(3*o/4-c),i=c>0?o-4:o;var l=0;for(e=0,n=0;e<i;e+=4,n+=3)r=Vj[t.charCodeAt(e)]<<18|Vj[t.charCodeAt(e+1)]<<12|Vj[t.charCodeAt(e+2)]<<6|Vj[t.charCodeAt(e+3)],a[l++]=r>>16&255,a[l++]=r>>8&255,a[l++]=255&r;return 2===c?(r=Vj[t.charCodeAt(e)]<<2|Vj[t.charCodeAt(e+1)]>>4,a[l++]=255&r):1===c&&(r=Vj[t.charCodeAt(e)]<<10|Vj[t.charCodeAt(e+1)]<<4|Vj[t.charCodeAt(e+2)]>>2,a[l++]=r>>8&255,a[l++]=255&r),a}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(hM,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function IM(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}function yM(t){return null!=t&&(!!t._isBuffer||gM(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&gM(t.slice(0,0))}(t))}function gM(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var XM=Object.freeze({__proto__:null,Buffer:kj,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),kj.alloc(+t)},isBuffer:yM,kMaxLength:Jj}),GM={exports:{}},fM={},VM={};Object.defineProperty(VM,"__esModule",{value:!0}),VM.default=function(t){var e=t.length,n=e%4;if(!n)return t;var i=e,r=4-n,c=e+r,a=kj.alloc(c);for(a.write(t);r--;)a.write("=",i++);return a.toString()},Object.defineProperty(fM,"__esModule",{value:!0});var WM=VM;function vM(t,e){return void 0===e&&(e="utf8"),kj.isBuffer(t)?SM(t.toString("base64")):SM(kj.from(t,e).toString("base64"))}function CM(t){return t=t.toString(),WM.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function SM(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var YM,RM=vM;RM.encode=vM,RM.decode=function(t,e){return void 0===e&&(e="utf8"),kj.from(CM(t),"base64").toString(e)},RM.toBase64=CM,RM.fromBase64=SM,RM.toBuffer=function(t){return kj.from(CM(t),"base64")},fM.default=RM,(YM=GM).exports=fM.default,YM.exports.default=YM.exports;var KM=GM.exports,NM={exports:{}};!function(t){!function(e,n){var i={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=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(t,n,i,r,c){for(var a,o,l,u,d,s,m,h,b,p,Z,I,y;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],p=0;p<16;p++)Z=r+4*p,t[p]=(255&i[Z])<<24|(255&i[Z+1])<<16|(255&i[Z+2])<<8|255&i[Z+3];for(p=16;p<64;p++)I=((b=t[p-2])>>>17|b<<15)^(b>>>19|b<<13)^b>>>10,y=((b=t[p-15])>>>7|b<<25)^(b>>>18|b<<14)^b>>>3,t[p]=(I+t[p-7]|0)+(y+t[p-16]|0);for(p=0;p<64;p++)I=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(e[p]+t[p]|0)|0)|0,y=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,h=m,m=s,s=d,d=u+I|0,u=l,l=o,o=a,a=I+y|0;n[0]+=a,n[1]+=o,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,r+=64,c-=64}return r}var i=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.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 e.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},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var i=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[i++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(i=n(this.temp,this.state,t,i,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[i++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,i=this.bufferLength,r=e/536870912|0,c=e<<3,a=e%64<56?64:128;this.buffer[i]=128;for(var o=i+1;o<a-8;o++)this.buffer[o]=0;this.buffer[a-8]=r>>>24&255,this.buffer[a-7]=r>>>16&255,this.buffer[a-6]=r>>>8&255,this.buffer[a-5]=r>>>0&255,this.buffer[a-4]=c>>>24&255,this.buffer[a-3]=c>>>16&255,this.buffer[a-2]=c>>>8&255,this.buffer[a-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,a),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=i;var r=function(){function t(t){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new i).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;this.inner.update(e);for(n=0;n<e.length;n++)e[n]^=106;this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new i).update(t),n=e.digest();return e.clean(),n}function a(t,e){var n=new r(t).update(e),i=n.digest();return n.clean(),i}function o(t,e,n,i){var r=i[0];if(0===r)throw new Error("hkdf: cannot expand more");e.reset(),r>1&&e.update(t),n&&e.update(n),e.update(i),e.finish(t),i[0]++}t.HMAC=r,t.hash=c,t.default=c,t.hmac=a;var l=new Uint8Array(t.digestLength);function u(t,e,n,i){void 0===e&&(e=l),void 0===i&&(i=32);for(var c=new Uint8Array([1]),u=a(e,t),d=new r(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(i),b=0;b<i;b++)m===s.length&&(o(s,d,n,c),m=0),h[b]=s[m++];return d.clean(),s.fill(0),c.fill(0),h}function d(t,e,n,i){for(var c=new r(t),a=c.digestLength,o=new Uint8Array(4),l=new Uint8Array(a),u=new Uint8Array(a),d=new Uint8Array(i),s=0;s*a<i;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var h=0;h<a;h++)l[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var b=0;b<a;b++)l[b]^=u[b]}for(h=0;h<a&&s*a+h<i;h++)d[s*a+h]=l[h]}for(s=0;s<a;s++)l[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}t.hkdf=u,t.pbkdf2=d}(i);var r=i.default;for(var c in i)r[c]=i[c];t.exports=r}()}(NM);var LM=e(NM.exports),JM=crypto,xM=function(t){return t instanceof CryptoKey},HM=new TextEncoder,kM=new TextDecoder;function UM(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i=e.reduce((function(t,e){return t+e.length}),0),r=new Uint8Array(i),c=0;return e.forEach((function(t){r.set(t,c),c+=t.length})),r}var TM=function(t){var e=t;e instanceof Uint8Array&&(e=kM.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(t){for(var e=atob(t),n=new Uint8Array(e.length),i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return n}(e)}catch(t){throw new TypeError("The input to be decoded is not correctly encoded.")}},wM=function(t){h(n,y(Error));var e=G(n);function n(t){var i,r;return u(this,n),(i=e.call(this,t)).code="ERR_JOSE_GENERIC",i.name=i.constructor.name,null===(r=Error.captureStackTrace)||void 0===r||r.call(Error,g(i),i.constructor),i}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(),FM=function(t){h(n,wM);var e=G(n);function n(t){var i,r=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),(i=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",i.claim=r,i.reason=c,i}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(),AM=function(t){h(n,wM);var e=G(n);function n(t){var i,r=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),(i=e.call(this,t)).code="ERR_JWT_EXPIRED",i.claim=r,i.reason=c,i}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(),BM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(),zM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(),jM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(),MM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(),QM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_INVALID",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(),PM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",t.message="no applicable key found in the JSON Web Key Set",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(),EM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",t.message="multiple matching keys found in the JSON Web Key Set",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(),DM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}();function OM(){return"function"==typeof WebSocketPair}function _M(){try{return void 0!==tz.versions.node}catch(t){return!1}}function qM(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(e," must be ").concat(t))}function $M(t,e){return t.name===e}function tQ(t){return parseInt(t.name.slice(4),10)}function eQ(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function nQ(t,e){if(e.length&&!e.some((function(e){return t.usages.includes(e)}))){var n="CryptoKey does not support this operation, its usages must include ";if(e.length>2){var i=e.pop();n+="one of ".concat(e.join(", "),", or ").concat(i,".")}else 2===e.length?n+="one of ".concat(e[0]," or ").concat(e[1],"."):n+="".concat(e[0],".");throw new TypeError(n)}}var iQ=function(t){for(var e="Key must be ",n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];if(i.length>2){var c=i.pop();e+="one of type ".concat(i.join(", "),", or ").concat(c,".")}else 2===i.length?e+="one of type ".concat(i[0]," or ").concat(i[1],"."):e+="of type ".concat(i[0],".");return null==t?e+=" Received ".concat(t):"function"==typeof t&&t.name?e+=" Received function ".concat(t.name):"object"===a(t)&&null!=t&&t.constructor&&t.constructor.name&&(e+=" Received an instance of ".concat(t.constructor.name)),e},rQ=function(t){return xM(t)},cQ=["CryptoKey"],aQ=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i,r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;var c,a=C(r);try{for(a.s();!(c=a.n()).done;){var o=c.value,l=Object.keys(o);if(i&&0!==i.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(i.has(s))return!1;i.add(s)}else i=new Set(l)}}catch(t){a.e(t)}finally{a.f()}return!0};function oQ(t){if("object"!==a(e=t)||null===e||"[object Object]"!==Object.prototype.toString.call(t))return!1;var e;if(null===Object.getPrototypeOf(t))return!0;for(var n=t;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(t)===n}var lQ=function(t,e){if(t.startsWith("RS")||t.startsWith("PS")){var n=e.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}};function uQ(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new zM("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.slice(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":e={name:"ECDSA",namedCurve:"P-256"},n=t.d?["sign"]:["verify"];break;case"ES384":e={name:"ECDSA",namedCurve:"P-384"},n=t.d?["sign"]:["verify"];break;case"ES512":e={name:"ECDSA",namedCurve:"P-521"},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(OM()||_M())&&"OKP":if("EdDSA"!==t.alg)throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(t.crv){case"Ed25519":e={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=t.d?["sign"]:["verify"];break;case _M()&&"Ed448":e={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=t.d?["sign"]:["verify"];break;default:throw new zM('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new zM('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}var dQ=function(){var t=l(c().mark((function t(e){var n,i,a,o,l,u,d,s,m;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=uQ(e),l=o.algorithm,u=o.keyUsages,d=[l,null!==(i=e.ext)&&void 0!==i&&i,null!==(a=e.key_ops)&&void 0!==a?a:u],"PBKDF2"!==l.name){t.next=4;break}return t.abrupt("return",(s=JM.subtle).importKey.apply(s,["raw",TM(e.k)].concat(d)));case 4:return delete(m=r({},e)).alg,t.abrupt("return",(n=JM.subtle).importKey.apply(n,["jwk",m].concat(d)));case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function sQ(t,e,n){return mQ.apply(this,arguments)}function mQ(){return(mQ=l(c().mark((function t(e,n,i){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(oQ(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:t.t0=e.kty,t.next="oct"===t.t0?8:"RSA"===t.t0?14:"EC"===t.t0||"OKP"===t.t0?16:17;break;case 8:if("string"==typeof e.k&&e.k){t.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=i||(i=!0!==e.ext),!i){t.next=13;break}return t.abrupt("return",dQ(r(r({},e),{},{alg:n,ext:!1})));case 13:return t.abrupt("return",TM(e.k));case 14:if(void 0===e.oth){t.next=16;break}throw new zM('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return t.abrupt("return",dQ(r(r({},e),{},{alg:n})));case 17:throw new zM('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var hQ=function(t,e,n){t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(t)?function(t){if(!(t instanceof Uint8Array)){if(!rQ(t))throw new TypeError(iQ.apply(void 0,[t].concat(V(cQ),["Uint8Array"])));if("secret"!==t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(e):function(t,e){if(!rQ(t))throw new TypeError(iQ.apply(void 0,[t].concat(V(cQ))));if("secret"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===e&&"public"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===e&&"public"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(t.algorithm&&"verify"===e&&"private"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(t.algorithm&&"encrypt"===e&&"private"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(e,n)};function bQ(t,e,n,i,r){if(void 0!==r.crit&&void 0===i.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!i||void 0===i.crit)return new Set;if(!Array.isArray(i.crit)||0===i.crit.length||i.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"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(e.entries()))):e;var a,o=C(i.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new zM('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===r[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===i[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){o.e(t)}finally{o.f()}return new Set(i.crit)}var pQ=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)};function ZQ(t,e){var n="SHA-".concat(t.slice(-3));switch(t){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:t.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:e.namedCurve};case(OM()||_M())&&"EdDSA":var i=e.namedCurve;return{name:i,namedCurve:i};default:throw new zM("alg ".concat(t," is not supported either by JOSE or your javascript runtime"))}}function IQ(t,e,n){if(xM(e))return function(t,e){switch(e){case"HS256":case"HS384":case"HS512":if(!$M(t.algorithm,"HMAC"))throw qM("HMAC");var n=parseInt(e.slice(2),10);if(tQ(t.algorithm.hash)!==n)throw qM("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!$M(t.algorithm,"RSASSA-PKCS1-v1_5"))throw qM("RSASSA-PKCS1-v1_5");var i=parseInt(e.slice(2),10);if(tQ(t.algorithm.hash)!==i)throw qM("SHA-".concat(i),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!$M(t.algorithm,"RSA-PSS"))throw qM("RSA-PSS");var r=parseInt(e.slice(2),10);if(tQ(t.algorithm.hash)!==r)throw qM("SHA-".concat(r),"algorithm.hash");break;case _M()&&"EdDSA":if("NODE-ED25519"!==t.algorithm.name&&"NODE-ED448"!==t.algorithm.name)throw qM("NODE-ED25519 or NODE-ED448");break;case OM()&&"EdDSA":if(!$M(t.algorithm,"NODE-ED25519"))throw qM("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!$M(t.algorithm,"ECDSA"))throw qM("ECDSA");var c=eQ(e);if(t.algorithm.namedCurve!==c)throw qM(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l<a;l++)o[l-2]=arguments[l];nQ(t,o)}(e,t,n),e;if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(iQ.apply(void 0,[e].concat(V(cQ))));return JM.subtle.importKey("raw",e,{hash:"SHA-".concat(t.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(iQ.apply(void 0,[e].concat(V(cQ),["Uint8Array"])))}var yQ=function(){var t=l(c().mark((function t(e,n,i,r){var a,o;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,IQ(e,n,"verify");case 2:return a=t.sent,lQ(e,a),o=ZQ(e,a.algorithm),t.prev=5,t.next=8,JM.subtle.verify(o,a,i,r);case 8:return t.abrupt("return",t.sent);case 11:return t.prev=11,t.t0=t.catch(5),t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[5,11]])})));return function(e,n,i,r){return t.apply(this,arguments)}}();function gQ(t,e,n){return XQ.apply(this,arguments)}function XQ(){return XQ=l(c().mark((function t(e,n,i){var a,o,l,u,d,s,m,h,b,p,Z,I,y;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(oQ(e)){t.next=2;break}throw new jM("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new jM('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new jM("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new jM("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new jM("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||oQ(e.header)){t.next=12;break}throw new jM("JWS Unprotected Header incorrect type");case 12:if(o={},!e.protected){t.next=22;break}l=TM(e.protected),t.prev=15,o=JSON.parse(kM.decode(l)),t.next=22;break;case 19:throw t.prev=19,t.t0=t.catch(15),new jM("JWS Protected Header is invalid");case 22:if(aQ(o,e.header)){t.next=24;break}throw new jM("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(u=r(r({},o),e.header),d=bQ(jM,new Map([["b64",!0]]),null==i?void 0:i.crit,o,u),s=!0,!d.has("b64")){t.next=31;break}if("boolean"==typeof(s=o.b64)){t.next=31;break}throw new jM('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(m=u.alg)&&m){t.next=34;break}throw new jM('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(h=i&&pQ("algorithms",i.algorithms))||h.has(m)){t.next=37;break}throw new BM('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!s){t.next=42;break}if("string"==typeof e.payload){t.next=40;break}throw new jM("JWS Payload must be a string");case 40:t.next=44;break;case 42:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=44;break}throw new jM("JWS Payload must be a string or an Uint8Array instance");case 44:if(b=!1,"function"!=typeof n){t.next=50;break}return t.next=48,n(o,e);case 48:n=t.sent,b=!0;case 50:return hQ(m,n,"verify"),p=UM(HM.encode(null!==(a=e.protected)&&void 0!==a?a:""),HM.encode("."),"string"==typeof e.payload?HM.encode(e.payload):e.payload),Z=TM(e.signature),t.next=55,yQ(m,n,Z,p);case 55:if(t.sent){t.next=58;break}throw new DM;case 58:if(I=s?TM(e.payload):"string"==typeof e.payload?HM.encode(e.payload):e.payload,y={payload:I},void 0!==e.protected&&(y.protectedHeader=o),void 0!==e.header&&(y.unprotectedHeader=e.header),!b){t.next=64;break}return t.abrupt("return",r(r({},y),{},{key:n}));case 64:return t.abrupt("return",y);case 65:case"end":return t.stop()}}),t,null,[[15,19]])}))),XQ.apply(this,arguments)}function GQ(t,e,n){return fQ.apply(this,arguments)}function fQ(){return fQ=l(c().mark((function t(e,n,i){var a,o,l,u,d,s;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=kM.decode(e)),"string"==typeof e){t.next=3;break}throw new jM("Compact JWS must be a string or Uint8Array");case 3:if(a=e.split("."),o=a[0],l=a[1],u=a[2],3===a.length){t.next=6;break}throw new jM("Invalid Compact JWS");case 6:return t.next=8,gQ({payload:l,protected:o,signature:u},n,i);case 8:if(d=t.sent,s={payload:d.payload,protectedHeader:d.protectedHeader},"function"!=typeof n){t.next=12;break}return t.abrupt("return",r(r({},s),{},{key:d.key}));case 12:return t.abrupt("return",s);case 13:case"end":return t.stop()}}),t)}))),fQ.apply(this,arguments)}var VQ=function(t){return Math.floor(t.getTime()/1e3)},WQ=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,vQ=function(t){var e=WQ.exec(t);if(!e)throw new TypeError("Invalid time period format");var n=parseFloat(e[1]);switch(e[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(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},CQ=function(t){return t.toLowerCase().replace(/^application\//,"")},SQ=function(t,e){return"string"==typeof t?e.includes(t):!!Array.isArray(t)&&e.some(Set.prototype.has.bind(new Set(t)))},YQ=function(t,e){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.typ;if(r&&("string"!=typeof t.typ||CQ(t.typ)!==CQ(r)))throw new FM('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(kM.decode(e))}catch(t){}if(!oQ(n))throw new MM("JWT Claims Set must be a top-level JSON object");var c=i.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new FM('unexpected "iss" claim value',"iss","check_failed");var o=i.subject;if(o&&n.sub!==o)throw new FM('unexpected "sub" claim value',"sub","check_failed");var l,u=i.audience;if(u&&!SQ(n.aud,"string"==typeof u?[u]:u))throw new FM('unexpected "aud" claim value',"aud","check_failed");switch(a(i.clockTolerance)){case"string":l=vQ(i.clockTolerance);break;case"number":l=i.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=i.currentDate,s=VQ(d||new Date);if((void 0!==n.iat||i.maxTokenAge)&&"number"!=typeof n.iat)throw new FM('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new FM('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new FM('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new FM('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new AM('"exp" claim timestamp check failed',"exp","check_failed")}if(i.maxTokenAge){var m=s-n.iat,h="number"==typeof i.maxTokenAge?i.maxTokenAge:vQ(i.maxTokenAge);if(m-l>h)throw new AM('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new FM('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function RQ(){return RQ=l(c().mark((function t(e,n,i){var a,o,l,u;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,GQ(e,n,i);case 2:if(o=t.sent,!(null===(a=o.protectedHeader.crit)||void 0===a?void 0:a.includes("b64"))||!1!==o.protectedHeader.b64){t.next=5;break}throw new MM("JWTs MUST NOT use unencoded payload");case 5:if(l=YQ(o.protectedHeader,o.payload,i),u={payload:l,protectedHeader:o.protectedHeader},"function"!=typeof n){t.next=9;break}return t.abrupt("return",r(r({},u),{},{key:o.key}));case 9:return t.abrupt("return",u);case 10:case"end":return t.stop()}}),t)}))),RQ.apply(this,arguments)}function KQ(t){switch("string"==typeof t&&t.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new zM('Unsupported "alg" value for a JSON Web Key Set')}}function NQ(t){return oQ(t)}var LQ=function(){function t(e){if(u(this,t),this._cached=new WeakMap,!function(t){return t&&"object"===a(t)&&Array.isArray(t.keys)&&t.keys.every(NQ)}(e))throw new QM("JSON Web Key Set malformed");var n;this._jwks=(n=e,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var e;return s(t,[{key:"getKey",value:(e=l(c().mark((function t(e,n){var i,a,o,l,u,d,s,m,h;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=r(r({},e),n.header),a=i.alg,o=i.kid,l=KQ(a),u=this._jwks.keys.filter((function(t){var e=l===t.kty;if(e&&"string"==typeof o&&(e=o===t.kid),e&&"string"==typeof t.alg&&(e=a===t.alg),e&&"string"==typeof t.use&&(e="sig"===t.use),e&&Array.isArray(t.key_ops)&&(e=t.key_ops.includes("verify")),e&&"EdDSA"===a&&(e="Ed25519"===t.crv||"Ed448"===t.crv),e)switch(a){case"ES256":e="P-256"===t.crv;break;case"ES256K":e="secp256k1"===t.crv;break;case"ES384":e="P-384"===t.crv;break;case"ES512":e="P-521"===t.crv}return e})),d=u[0],0!==(s=u.length)){t.next=8;break}throw new PM;case 8:if(1===s){t.next=10;break}throw new EM;case 10:if(void 0!==(m=this._cached.get(d)||this._cached.set(d,{}).get(d))[a]){t.next=18;break}return t.next=14,sQ(r(r({},d),{},{ext:!0}),a);case 14:if(!((h=t.sent)instanceof Uint8Array||"public"!==h.type)){t.next=17;break}throw new QM("JSON Web Key Set members must be public keys");case 17:m[a]=h;case 18:return t.abrupt("return",m[a]);case 19:case"end":return t.stop()}}),t,this)}))),function(t,n){return e.apply(this,arguments)})}]),t}();var JQ={exports:{}},xQ={exports:{}},HQ=n(XM);
451
+ */},{key:"didSignOutFail",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),i=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&i}},{key:"clearUserSessionData",value:function(t){return aA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.clearUserSessionData(t);case 2:case"end":return e.stop()}}),e,this)})))}}]),t}();function xA(t,e,n){var i=void 0===e?null:e,r=function(t,e){var n=atob(t);if(e){for(var i=new Uint8Array(n.length),r=0,c=n.length;r<c;++r)i[r]=n.charCodeAt(r);return String.fromCharCode.apply(null,new Uint16Array(i.buffer))}return n}(t,void 0!==n&&n),c=r.indexOf("\n",10)+1,a=r.substring(c)+(i?"//# sourceMappingURL="+i:""),o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}var HA,kA,UA,TA,wA,FA,AA=(HA="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKCl7Ci8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi8Kcj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUsbj10Lmhhc093blByb3BlcnR5LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7dSh7fSwiIil9Y2F0Y2goZSl7dT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gYyhlLHQscixuKXt2YXIgYT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/dDpoLGk9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSksbz1uZXcgUyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybiBUKCl9Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPWsobyxyKTtpZihzKXtpZihzPT09bCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciB1PWYoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLHUuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixvKSxpfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Yzt2YXIgbD17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZCgpe312YXIgdj17fTt1KHYsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT1nJiZnKGcoRShbXSkpKTt5JiZ5IT09dCYmbi5jYWxsKHksaSkmJih2PXkpO3ZhciBtPWQucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gYihlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gdyhlLHQpe2Z1bmN0aW9uIHIoYSxpLG8scyl7dmFyIHU9ZihlW2FdLGUsaSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9mIGwmJm4uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2MudmFsdWU9ZSxvKGMpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxvLHMpfSkpfXModS5hcmcpfXZhciBhO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsYSl7cihlLG4sdCxhKX0pKX1yZXR1cm4gYT1hP2EudGhlbihpLGkpOmkoKX19ZnVuY3Rpb24gayhlLHQpe3ZhciByPWUuaXRlcmF0b3JbdC5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09dC5tZXRob2Qpe2lmKGUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLGsoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpKXJldHVybiBsO3QubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBsfXZhciBuPWYocixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09bi50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW4uYXJnLHQuZGVsZWdhdGU9bnVsbCxsO3ZhciBhPW4uYXJnO3JldHVybiBhP2EuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWEudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGwpOmE6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsbCl9ZnVuY3Rpb24geChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBfKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBTKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goeCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBFKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIHI9LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK3I8ZS5sZW5ndGg7KWlmKG4uY2FsbChlLHIpKXJldHVybiB0LnZhbHVlPWVbcl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBwLnByb3RvdHlwZT1kLHUobSwiY29uc3RydWN0b3IiLGQpLHUoZCwiY29uc3RydWN0b3IiLHApLHAuZGlzcGxheU5hbWU9dShkLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1wfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxkKTooZS5fX3Byb3RvX189ZCx1KGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtKSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSxiKHcucHJvdG90eXBlKSx1KHcucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPXcsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyB3KGModCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sYihtKSx1KG0scywiR2VuZXJhdG9yIiksdShtLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdShtLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUUsUy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmbi5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gcigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9bi5jYWxsKGksImNhdGNoTG9jIiksdT1uLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJnUpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxsKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGx9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksXyhyKSxsfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO18ocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpFKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxsfX0sZX1mdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe2EobyxuLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe2EobyxuLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZzKGUucHJvdG90eXBlLHQpLHImJnMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaChlLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGwoZSl9ZnVuY3Rpb24gaChlLHQpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0saChlLHQpfWZ1bmN0aW9uIHAoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiBkPXAoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmaChhLHIucHJvdG90eXBlKSxhfSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB2KGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIHY9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIGQoZSxhcmd1bWVudHMsbCh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGgobixlKX0sdihlKX1mdW5jdGlvbiBnKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZyhlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PXAoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWwoZSk7aWYodCl7dmFyIGE9bCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geSh0aGlzLHIpfX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8ayhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4geChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGsoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gayhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4geChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3goZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1rKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBTKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24gRShlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxpKXtmdW5jdGlvbiBvKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgVDshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFR8fChUPXt9KSk7dmFyIEE7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShBfHwoQT17fSkpO3ZhciBSLEM9InJlZnJlc2hfdG9rZW5fdGltZXIiLFA9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdLEQ9InNpZ25fb3V0X3VybCIsTz0ic2lnbl9vdXRfc3VjY2VzcyI7IWZ1bmN0aW9uKGUpe2UuSW5jbHVkZT0iaW5jbHVkZSIsZS5TYW1lT3JpZ2luPSJzYW1lLW9yaWdpbiIsZS5PbWl0PSJvbWl0In0oUnx8KFI9e30pKTt2YXIgST11KChmdW5jdGlvbiBlKHQscixuKXtvKHRoaXMsZSksdGhpcy5tZXNzYWdlPW4sdGhpcy5uYW1lPXIsdGhpcy5jb2RlPXQsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsKHRoaXMgaW5zdGFuY2VvZiBlP3RoaXMuY29uc3RydWN0b3I6dm9pZCAwKS5wcm90b3R5cGUpfSkpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsbnVsbCxbe2tleToiZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuYXNzaWduKHt9LGUpO251bGw9PXR8fGRlbGV0ZSB0LmlzcyxudWxsPT10fHxkZWxldGUgdC5hdWQsbnVsbD09dHx8ZGVsZXRlIHQuZXhwLG51bGw9PXR8fGRlbGV0ZSB0LmlhdCxudWxsPT10fHxkZWxldGUgdC5hY3IsbnVsbD09dHx8ZGVsZXRlIHQuYW1yLG51bGw9PXR8fGRlbGV0ZSB0LmF6cCxudWxsPT10fHxkZWxldGUgdC5hdXRoX3RpbWUsbnVsbD09dHx8ZGVsZXRlIHQubm9uY2UsbnVsbD09dHx8ZGVsZXRlIHQuY19oYXNoLG51bGw9PXR8fGRlbGV0ZSB0LmF0X2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQubmJmLG51bGw9PXR8fGRlbGV0ZSB0LmlzayxudWxsPT10fHxkZWxldGUgdC5zaWQ7dmFyIHI9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWIoZSwyKSxuPXRbMF0sYT10WzFdLGk9bi5zcGxpdCgiXyIpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMD09PXQ/ZTpbZVswXS50b1VwcGVyQ2FzZSgpXS5jb25jYXQodyhlLnNsaWNlKDEpKSkuam9pbigiIil9KSkuam9pbigiIik7cltpXT1hfSkpLHJ9fSx7a2V5OiJnZXRUb2tlblJlcXVlc3RIZWFkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifX19LHtrZXk6ImdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1wYXJzZUludChlLnNwbGl0KCIjIilbMV0pO3JldHVybiB0PyIiLmNvbmNhdCh0LCJfcmVxdWVzdF8iKS5jb25jYXQocik6InJlcXVlc3RfIi5jb25jYXQocil9fSx7a2V5OiJleHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4icGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KGUuc3BsaXQoInJlcXVlc3RfIilbMV0pKX19XSksZX0oKTtMLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkAiLHI9ZS5zdWIuc3BsaXQodCk7cmV0dXJuIHIubGVuZ3RoPjI/cltyLmxlbmd0aC0xXToiIn07dmFyIFUsSCxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciBhPXRoaXM7byh0aGlzLGUpLHRoaXMuX2RhdGFMYXllcj10LHRoaXMuX2NvbmZpZz1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YT1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fY3J5cHRvSGVscGVyPW59cmV0dXJuIHUoZSxbe2tleToicmVzb2x2ZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPXt9LHQubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gYT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKGEuZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhhLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7blt0XT0obnVsbD09YT92b2lkIDA6YS5lbmRwb2ludHMpP2EuZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQsbixhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKG49ZS5zZW50LGE9WyJhdXRob3JpemF0aW9uX2VuZHBvaW50IiwiZW5kX3Nlc3Npb25fZW5kcG9pbnQiLCJqd2tzX3VyaSIsImNoZWNrX3Nlc3Npb25faWZyYW1lIiwicmV2b2NhdGlvbl9lbmRwb2ludCIsInRva2VuX2VuZHBvaW50IiwiaXNzdWVyIiwidXNlcmluZm9fZW5kcG9pbnQiXSxuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpLmV2ZXJ5KChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTtyZXR1cm4gYS5pbmNsdWRlcyh0KX0pKSl7ZS5uZXh0PTc7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfSEVMUEVSLVJFRS1ORjAxIiwiTm8gcmVxdWlyZWQgZW5kcG9pbnRzLiIsIlJlcXVpcmVkIG9pZGMgZW5kcG9pbnRzIGFyZSBub3QgZGVmaW5lZCIpO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKG4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7dFtyXT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oe30sdCkpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQsbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdD17fSxlLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6aWYobj1lLnNlbnQsYT1uLmJhc2VVcmwpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0hFTFBFUl9SRUJPLU5GMDEiLCJCYXNlIFVSTCBub3QgZGVmaW5lZC4iLCJCYXNlIFVSTCBpcyBub3QgZGVmaW5lZCBpbiBBdXRoQ2xpZW50IGNvbmZpZy4iKTtjYXNlIDc6cmV0dXJuIG4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7dFtyXT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLGk9e2F1dGhvcml6YXRpb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi9hdXRob3JpemUiKSxlbmRfc2Vzc2lvbl9lbmRwb2ludDoiIi5jb25jYXQoYSkuY29uY2F0KCIvb2lkYy9sb2dvdXQiKSxpc3N1ZXI6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLGp3a3NfdXJpOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvandrcyIpLGNoZWNrX3Nlc3Npb25faWZyYW1lOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vaWRjL2NoZWNrc2Vzc2lvbiIpLHJldm9jYXRpb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi9yZXZva2UiKSx0b2tlbl9lbmRwb2ludDoiIi5jb25jYXQoYSkuY29uY2F0KCIvb2F1dGgyL3Rva2VuIiksdXNlcmluZm9fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi91c2VyaW5mbyIpfSxlLmFicnVwdCgicmV0dXJuIixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksdCkpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InZhbGlkYXRlSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXQuc2VudC5qd2tzX3VyaSx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoYT10LnNlbnQsbiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTX0FVVEhfSEVMUEVSLVZJVC1ORjAxIiwiSldLUyBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gSldLUyBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBKV0tTIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4gdC5wcmV2PTgsdC5uZXh0PTExLGZldGNoKG4se2NyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP1IuSW5jbHVkZTpSLlNhbWVPcmlnaW59KTtjYXNlIDExOmk9dC5zZW50LHQubmV4dD0xNzticmVhaztjYXNlIDE0OnRocm93IHQucHJldj0xNCx0LnQwPXQuY2F0Y2goOCksbmV3IEkoIkpTLUFVVEhfSEVMUEVSLVZJVC1ORTAyIiwiUmVxdWVzdCB0byBqd2tzIGVuZHBvaW50IGZhaWxlZC4iLG51bGwhPXQudDA/dC50MDoiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGp3a3MgZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iKTtjYXNlIDE3OmlmKDIwMD09PWkuc3RhdHVzJiZpLm9rKXt0Lm5leHQ9MjQ7YnJlYWt9cmV0dXJuIHQudDE9SSx0LnQyPSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgandrcyByZXF1ZXN0ICgiLmNvbmNhdChpLnN0YXR1c1RleHQsIikuIiksdC5uZXh0PTIyLGkuanNvbigpO2Nhc2UgMjI6dGhyb3cgdC50Mz10LnNlbnQsbmV3IHQudDEoIkpTLUFVVEhfSEVMUEVSLVZJVC1IRTAzIix0LnQyLHQudDMpO2Nhc2UgMjQ6cmV0dXJuIHQubmV4dD0yNix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjY6cmV0dXJuIG89dC5zZW50Lmlzc3Vlcix0Lm5leHQ9MjksaS5qc29uKCk7Y2FzZSAyOTpyZXR1cm4gcz10LnNlbnQsdT1zLmtleXMsdC5uZXh0PTMzLHRoaXMuX2NyeXB0b0hlbHBlci5nZXRKV0tGb3JUaGVJZFRva2VuKGUuc3BsaXQoIi4iKVswXSx1KTtjYXNlIDMzOnJldHVybiBjPXQuc2VudCx0LnQ0PXRoaXMuX2NyeXB0b0hlbHBlcix0LnQ1PWUsdC50Nj1jLHQubmV4dD0zOSx0aGlzLl9jb25maWcoKTtjYXNlIDM5OnJldHVybiB0LnQ3PXQuc2VudC5jbGllbnRJRCx0LnQ4PW51bGwhPW8/bzoiIix0LnQ5PXRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKGUpLnN1Yix0Lm5leHQ9NDQsdGhpcy5fY29uZmlnKCk7Y2FzZSA0NDpyZXR1cm4gdC50MTA9dC5zZW50LmNsb2NrVG9sZXJhbmNlLHQuYWJydXB0KCJyZXR1cm4iLHQudDQuaXNWYWxpZElkVG9rZW4uY2FsbCh0LnQ0LHQudDUsdC50Nix0LnQ3LHQudDgsdC50OSx0LnQxMCkpO2Nhc2UgNDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1s4LDE0XV0pfSkpKX19LHtrZXk6ImdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKSxvPUwuZ2V0VGVuYW50RG9tYWluRnJvbUlkVG9rZW5QYXlsb2FkKGkpLHM9bnVsbCE9PSh0PW51bGw9PWk/dm9pZCAwOmkudXNlcm5hbWUpJiZ2b2lkIDAhPT10P3Q6IiIsdT1udWxsIT09KHI9aS5naXZlbl9uYW1lKSYmdm9pZCAwIT09cj9yOiIiLGM9bnVsbCE9PShuPWkuZmFtaWx5X25hbWUpJiZ2b2lkIDAhPT1uP246IiIsZj11JiZjPyIiLmNvbmNhdCh1LCIgIikuY29uY2F0KGMpOnV8fGN8fCIiLGw9bnVsbCE9PShhPWkucHJlZmVycmVkX3VzZXJuYW1lKSYmdm9pZCAwIT09YT9hOmY7cmV0dXJuIE9iamVjdC5hc3NpZ24oe2Rpc3BsYXlOYW1lOmwsdGVuYW50RG9tYWluOm8sdXNlcm5hbWU6c30sTC5maWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQoaSkpfX0se2tleToicmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBpPSJvcGVuaWQiLHIubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbz1yLnNlbnQsci5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKHQpO2Nhc2UgNjpyZXR1cm4gcz1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsKG8uc2NvcGUmJm8uc2NvcGUubGVuZ3RoPjAmJihvLnNjb3BlLmluY2x1ZGVzKCJvcGVuaWQiKXx8by5zY29wZS5wdXNoKCJvcGVuaWQiKSxpPW8uc2NvcGUuam9pbigiICIpKSxlLnJlcGxhY2UoInt7dG9rZW59fSIscy5hY2Nlc3NfdG9rZW4pLnJlcGxhY2UoInt7dXNlcm5hbWV9fSIsdGhpcy5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8ocy5pZF90b2tlbikudXNlcm5hbWUpLnJlcGxhY2UoInt7c2NvcGV9fSIsaSkucmVwbGFjZSgie3tjbGllbnRJRH19IixvLmNsaWVudElEKS5yZXBsYWNlKCJ7e2NsaWVudFNlY3JldH19IixudWxsIT09KG49by5jbGllbnRTZWNyZXQpJiZ2b2lkIDAhPT1uP246IiIpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlU2Vzc2lvbkRhdGEoZSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJoYW5kbGVUb2tlblJlc3BvbnNlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6aWYoMjAwPT09ZS5zdGF0dXMmJmUub2spe24ubmV4dD03O2JyZWFrfXJldHVybiBuLnQwPUksbi50MT0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHRva2VuIHJlcXVlc3QgKCIuY29uY2F0KGUuc3RhdHVzVGV4dCwiKS4iKSxuLm5leHQ9NSxlLmpzb24oKTtjYXNlIDU6dGhyb3cgbi50Mj1uLnNlbnQsbmV3IG4udDAoIkpTLUFVVEhfSEVMUEVSLUhUUi1ORTAxIixuLnQxLG4udDIpO2Nhc2UgNzpyZXR1cm4gbi5uZXh0PTksZS5qc29uKCk7Y2FzZSA5OnJldHVybihhPW4uc2VudCkuY3JlYXRlZF9hdD0obmV3IERhdGUpLmdldFRpbWUoKSxuLm5leHQ9MTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAxMzppZighbi5zZW50LnZhbGlkYXRlSURUb2tlbil7bi5uZXh0PTE1O2JyZWFrfXJldHVybiBuLmFicnVwdCgicmV0dXJuIix0aGlzLnZhbGlkYXRlSWRUb2tlbihhLmlkX3Rva2VuKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBFKG8sdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YShhLHQpO2Nhc2UgMjpyZXR1cm4gbj17YWNjZXNzVG9rZW46YS5hY2Nlc3NfdG9rZW4sY3JlYXRlZEF0OmEuY3JlYXRlZF9hdCxleHBpcmVzSW46YS5leHBpcmVzX2luLGlkVG9rZW46YS5pZF90b2tlbixyZWZyZXNoVG9rZW46YS5yZWZyZXNoX3Rva2VuLHNjb3BlOmEuc2NvcGUsdG9rZW5UeXBlOmEudG9rZW5fdHlwZX0sZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxNTpyZXR1cm4gaT17YWNjZXNzVG9rZW46YS5hY2Nlc3NfdG9rZW4sY3JlYXRlZEF0OmEuY3JlYXRlZF9hdCxleHBpcmVzSW46YS5leHBpcmVzX2luLGlkVG9rZW46YS5pZF90b2tlbixyZWZyZXNoVG9rZW46YS5yZWZyZXNoX3Rva2VuLHNjb3BlOmEuc2NvcGUsdG9rZW5UeXBlOmEudG9rZW5fdHlwZX0sbi5uZXh0PTE4LHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YShhLHQpO2Nhc2UgMTg6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShpKSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2VuZXJhdGVQS0NFS2V5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG87cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGEoZSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxpPVtdLE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc3RhcnRzV2l0aCgicGtjZV9jb2RlX3ZlcmlmaWVyIikmJmkucHVzaChlKX0pKSxvPWkuc29ydCgpLnBvcCgpLHIuYWJydXB0KCJyZXR1cm4iLCJwa2NlX2NvZGVfdmVyaWZpZXIjIi5jb25jYXQocGFyc2VJbnQobnVsbCE9PSh0PW51bGw9PW8/dm9pZCAwOm8uc3BsaXQoIiMiKVsxXSkmJnZvaWQgMCE9PXQ/dDoiLTEiKSsxKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fV0pLGV9KCksaj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXR9cmV0dXJuIHUoZSxbe2tleToiZ2V0Q29kZVZlcmlmaWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuZ2VuZXJhdGVSYW5kb21CeXRlcygzMikpfX0se2tleToiZ2V0Q29kZUNoYWxsZW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTEVuY29kZSh0aGlzLl9jcnlwdG9VdGlscy5oYXNoU2hhMjU2KGUpKX19LHtrZXk6ImdldEpXS0ZvclRoZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1KU09OLnBhcnNlKHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlKSksYT1fKHQpO3RyeXtmb3IoYS5zKCk7IShyPWEubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtpZihuLmtpZD09PWkua2lkKXJldHVybiBpfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX10aHJvdyBuZXcgSSgiSlMtQ1JZUFRPX1VUSUwtR0pGVElULUlWMDEiLCJraWQgbm90IGZvdW5kLiIsIkZhaWxlZCB0byBmaW5kIHRoZSAna2lkJyBzcGVjaWZpZWQgaW4gdGhlIGlkX3Rva2VuLiAna2lkJyBmb3VuZCBpbiB0aGUgaGVhZGVyIDogIituLmtpZCsiLCBFeHBlY3RlZCB2YWx1ZXM6ICIrdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtpZH0pKS5qb2luKCIsICIpKX19LHtrZXk6ImlzVmFsaWRJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSl7cmV0dXJuIHRoaXMuX2NyeXB0b1V0aWxzLnZlcmlmeUp3dChlLHQsUCxyLG4sYSxpKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZT9Qcm9taXNlLnJlc29sdmUoITApOlByb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fSEVMUEVSLUlWSVQtSVYwMSIsIkludmFsaWQgSUQgdG9rZW4uIiwiSUQgdG9rZW4gdmFsaWRhdGlvbiByZXR1cm5lZCBmYWxzZSIpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQiPT09KG51bGw9PWU/dm9pZCAwOmUuY29kZSkmJiJuYmYiPT09KG51bGw9PWU/dm9pZCAwOmUuY2xhaW0pP1Byb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAyIiwiSldUIE5CRiBDTEFJTSBWQUxJREFUSU9OIEZBSUxFRCIsIkpXVCBOQkYgY2xhaW0gdmFsaWRhdGlvbiBoYXMgYmVlbiBmYWlsZWQiKSk6UHJvbWlzZS5yZWplY3QobmV3IEkoIkpTLUNSWVBUT19VVElMUy1JVklULUlWMDMiLCJKV1QgVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgdmFsaWRhdGlvbiBoYXMgYmVlbiBmYWlsZWQiKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9dGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRGVjb2RlKGUuc3BsaXQoIi4iKVsxXSk7cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2goZSl7dGhyb3cgbmV3IEkoIkpTLUNSWVBUT19VVElMLURJVC1JVjAxIiwiRGVjb2RpbmcgSUQgdG9rZW4gZmFpbGVkLiIsZSl9fX1dKSxlfSgpLE49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7dmFyIGE9dGhpcztvKHRoaXMsZSksdGhpcy5fY3J5cHRvVXRpbHM9bix0aGlzLl9jcnlwdG9IZWxwZXI9bmV3IGoobiksdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXI9bmV3IE0odCx0aGlzLl9jcnlwdG9IZWxwZXIpLHRoaXMuX2RhdGFMYXllcj10LHRoaXMuX2NvbmZpZz1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YT1mdW5jdGlvbigpe3JldHVybiBFKGEsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19cmV0dXJuIHUoZSxbe2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbixhLGk7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIHMsdSxjLGYsbCxoLHAsZCx2LGcseSxtLHcsayx4LFMsRSxULEEsUjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIoImF1dGhvcml6YXRpb25fZW5kcG9pbnQiKTtjYXNlIDI6cmV0dXJuIHM9ci5zZW50LHIubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZih1PXIuc2VudCxzJiYwIT09cy50cmltKCkubGVuZ3RoKXtyLm5leHQ9ODticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdBVS1ORjAxIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCBmb3VuZC4iLCJObyBhdXRob3JpemF0aW9uIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgZnJvbSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIGM9bmV3IFVSTChzKSwoZj1uZXcgTWFwKS5zZXQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksZi5zZXQoImNsaWVudF9pZCIsdS5jbGllbnRJRCksbD0ib3BlbmlkIix1LnNjb3BlJiZ1LnNjb3BlLmxlbmd0aD4wJiYodS5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fHUuc2NvcGUucHVzaCgib3BlbmlkIiksbD11LnNjb3BlLmpvaW4oIiAiKSksZi5zZXQoInNjb3BlIixsKSxmLnNldCgicmVkaXJlY3RfdXJpIix1LnNpZ25JblJlZGlyZWN0VVJMKSx1LnJlc3BvbnNlTW9kZSYmZi5zZXQoInJlc3BvbnNlX21vZGUiLHUucmVzcG9uc2VNb2RlKSxyLm5leHQ9MTQsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuZ2VuZXJhdGVQS0NFS2V5KHQpO2Nhc2UgMTQ6aWYoaD1yLnNlbnQsIXUuZW5hYmxlUEtDRSl7ci5uZXh0PTIxO2JyZWFrfXJldHVybiBwPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVWZXJpZmllcigpLGQ9bnVsbD09PShhPXRoaXMuX2NyeXB0b0hlbHBlcil8fHZvaWQgMD09PWE/dm9pZCAwOmEuZ2V0Q29kZUNoYWxsZW5nZShwKSxyLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoaCxwLHQpO2Nhc2UgMTk6Zi5zZXQoImNvZGVfY2hhbGxlbmdlX21ldGhvZCIsIlMyNTYiKSxmLnNldCgiY29kZV9jaGFsbGVuZ2UiLGQpO2Nhc2UgMjE6aWYodS5wcm9tcHQmJmYuc2V0KCJwcm9tcHQiLHUucHJvbXB0KSx2PWUpZm9yKGc9MCx5PU9iamVjdC5lbnRyaWVzKHYpO2c8eS5sZW5ndGg7ZysrKW09Yih5W2ddLDIpLHc9bVswXSxrPW1bMV0sIiIhPXcmJiIiIT1rJiYic3RhdGUiIT09dyYmKHg9dy5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSksZi5zZXQoeCxrLnRvU3RyaW5nKCkpKTtmLnNldCgic3RhdGUiLEwuZ2VuZXJhdGVTdGF0ZVBhcmFtRm9yUmVxdWVzdENvcnJlbGF0aW9uKGgsdj9udWxsPT09KGk9di5zdGF0ZSl8fHZvaWQgMD09PWk/dm9pZCAwOmkudG9TdHJpbmcoKToiIikpLFM9XyhmLmVudHJpZXMoKSk7dHJ5e2ZvcihTLnMoKTshKEU9Uy5uKCkpLmRvbmU7KVQ9YihFLnZhbHVlLDIpLEE9VFswXSxSPVRbMV0sYy5zZWFyY2hQYXJhbXMuYXBwZW5kKEEsUil9Y2F0Y2goZSl7Uy5lKGUpfWZpbmFsbHl7Uy5mKCl9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLGMudG9TdHJpbmcoKSk7Y2FzZSAyODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG8sdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsYyxmO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBvPXIuc2VudC50b2tlbl9lbmRwb2ludCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYocz1yLnNlbnQsbyYmMCE9PW8udHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQxLU5GMDEiLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OmlmKHIudDA9dCwhci50MCl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLm5leHQ9MTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIix0LGEpO2Nhc2UgMTI6aWYoKHU9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChzLmNsaWVudElEKSkscy5jbGllbnRTZWNyZXQmJnMuY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmdS5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KHMuY2xpZW50U2VjcmV0KSksYz1lLHUucHVzaCgiY29kZT0iLmNvbmNhdChjKSksdS5wdXNoKCJncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZSIpLHUucHVzaCgicmVkaXJlY3RfdXJpPSIuY29uY2F0KHMuc2lnbkluUmVkaXJlY3RVUkwpKSxyLnQxPXMuZW5hYmxlUEtDRSwhci50MSl7ci5uZXh0PTI5O2JyZWFrfXJldHVybiByLnQyPXUsci50Mz0iY29kZV92ZXJpZmllcj0iLHIubmV4dD0yNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0obiksYSk7Y2FzZSAyNDpyZXR1cm4gci50ND1yLnNlbnQsci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Mi5wdXNoLmNhbGwoci50MixyLnQ1KSxyLm5leHQ9MjksdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKG4pLGEpO2Nhc2UgMjk6cmV0dXJuIHIucHJldj0yOSxyLm5leHQ9MzIsZmV0Y2gobyx7Ym9keTp1LmpvaW4oIiYiKSxjcmVkZW50aWFsczpzLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoTC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDMyOmY9ci5zZW50LHIubmV4dD0zODticmVhaztjYXNlIDM1OnRocm93IHIucHJldj0zNSxyLnQ2PXIuY2F0Y2goMjkpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMS1ORTAyIiwiUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIixudWxsIT1yLnQ2P3IudDY6IlRoZSByZXF1ZXN0IHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAzODppZihmLm9rKXtyLm5leHQ9NDU7YnJlYWt9cmV0dXJuIHIudDc9SSxyLnQ4PSJSZXF1ZXN0aW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQgd2l0aCAiLmNvbmNhdChmLnN0YXR1c1RleHQpLHIubmV4dD00MyxmLmpzb24oKTtjYXNlIDQzOnRocm93IHIudDk9ci5zZW50LG5ldyByLnQ3KCJKUy1BVVRIX0NPUkUtUkFUMS1IRTAzIixyLnQ4LHIudDkpO2Nhc2UgNDU6cmV0dXJuIHIubmV4dD00Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGYsYSk7Y2FzZSA0NzpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDQ4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksaSx0aGlzLFtbMjksMzVdXSl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGksbyxzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXQuc2VudC50b2tlbl9lbmRwb2ludCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIGE9dC5zZW50LHQubmV4dD04LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDg6aWYoKGk9dC5zZW50KS5yZWZyZXNoX3Rva2VuKXt0Lm5leHQ9MTE7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQyLU5GMDEiLCJObyByZWZyZXNoIHRva2VuIGZvdW5kLiIsIlRoZXJlIHdhcyBubyByZWZyZXNoIHRva2VuIGZvdW5kLiBBc2dhcmRlbyBkb2Vzbid0IHJldHVybiBhIHJlZnJlc2ggdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gZ3JhbnQgaXMgbm90IGVuYWJsZWQuIik7Y2FzZSAxMTppZihuJiYwIT09bi50cmltKCkubGVuZ3RoKXt0Lm5leHQ9MTM7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQyLU5GMDIiLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgd2FzIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDEzOnJldHVybihvPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoYS5jbGllbnRJRCkpLG8ucHVzaCgicmVmcmVzaF90b2tlbj0iLmNvbmNhdChpLnJlZnJlc2hfdG9rZW4pKSxvLnB1c2goImdyYW50X3R5cGU9cmVmcmVzaF90b2tlbiIpLGEuY2xpZW50U2VjcmV0JiZhLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJm8ucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChhLmNsaWVudFNlY3JldCkpLHQucHJldj0xNSx0Lm5leHQ9MTgsZmV0Y2gobix7Ym9keTpvLmpvaW4oIiYiKSxjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoTC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDE4OnM9dC5zZW50LHQubmV4dD0yNDticmVhaztjYXNlIDIxOnRocm93IHQucHJldj0yMSx0LnQwPXQuY2F0Y2goMTUpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1OUjAzIiwiUmVmcmVzaCBhY2Nlc3MgdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNDppZihzLm9rKXt0Lm5leHQ9MzE7YnJlYWt9cmV0dXJuIHQudDE9SSx0LnQyPSJSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQgd2l0aCAiLmNvbmNhdChzLnN0YXR1c1RleHQpLHQubmV4dD0yOSxzLmpzb24oKTtjYXNlIDI5OnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0NPUkUtUkFUMi1IRTA0Iix0LnQyLHQudDMpO2Nhc2UgMzE6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UocyxlKSk7Y2FzZSAzMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzE1LDIxXV0pfSkpKX19LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGksbztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQucmV2b2NhdGlvbl9lbmRwb2ludCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoYT10LnNlbnQsbiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQzLU5GMDEiLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuKGk9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChhLmNsaWVudElEKSksdC50MD1pLHQudDE9InRva2VuPSIsdC5uZXh0PTE0LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE0OnJldHVybiB0LnQyPXQuc2VudC5hY2Nlc3NfdG9rZW4sdC50Mz10LnQxLmNvbmNhdC5jYWxsKHQudDEsdC50MiksdC50MC5wdXNoLmNhbGwodC50MCx0LnQzKSxpLnB1c2goInRva2VuX3R5cGVfaGludD1hY2Nlc3NfdG9rZW4iKSx0LnByZXY9MTgsdC5uZXh0PTIxLGZldGNoKG4se2JvZHk6aS5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAyMTpvPXQuc2VudCx0Lm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNDp0aHJvdyB0LnByZXY9MjQsdC50ND10LmNhdGNoKDE4KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDMtTkUwMiIsIlRoZSByZXF1ZXN0IHRvIHJldm9rZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsbnVsbCE9dC50ND90LnQ0OiJUaGUgcmVxdWVzdCBzZW50IHRvIHJldm9rZSB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iKTtjYXNlIDI3OmlmKDIwMD09PW8uc3RhdHVzJiZvLm9rKXt0Lm5leHQ9MzQ7YnJlYWt9cmV0dXJuIHQudDU9SSx0LnQ2PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgcmV2b2tlIGFjY2VzcyB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChvLnN0YXR1c1RleHQsIikuIiksdC5uZXh0PTMyLG8uanNvbigpO2Nhc2UgMzI6dGhyb3cgdC50Nz10LnNlbnQsbmV3IHQudDUoIkpTLUFVVEhfQ09SRS1SQVQzLUhFMDMiLHQudDYsdC50Nyk7Y2FzZSAzNDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsKHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpLFByb21pc2UucmVzb2x2ZShvKSkpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxOCwyNF1dKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvLHMsdSxjLGYsbD10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBhPW4uc2VudCxuLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoaT1uLnNlbnQsKG89ZS50b2tlbkVuZHBvaW50JiYwIT09ZS50b2tlbkVuZHBvaW50LnRyaW0oKS5sZW5ndGg/ZS50b2tlbkVuZHBvaW50OmEudG9rZW5fZW5kcG9pbnQpJiYwIT09by50cmltKCkubGVuZ3RoKXtuLm5leHQ9ODticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLVJDRy1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4gbi5uZXh0PTEwLFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKGUuZGF0YSkubWFwKChmdW5jdGlvbihlKXt2YXIgbj1iKGUsMiksYT1uWzBdLGk9blsxXTtyZXR1cm4gRShsLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MoaSx0KTtjYXNlIDI6cmV0dXJuIG49ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChhLCI9IikuY29uY2F0KG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxMDppZihzPW4uc2VudCx1PU9iamVjdC5hc3NpZ24oe30sTC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG4udDA9ZS5hdHRhY2hUb2tlbiwhbi50MCl7bi5uZXh0PTIzO2JyZWFrfXJldHVybiBuLnQxPU9iamVjdCxuLnQyPU9iamVjdC5hc3NpZ24oe30sdSksbi50Mz0iQmVhcmVyICIsbi5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDE5Om4udDQ9bi5zZW50LmFjY2Vzc190b2tlbixuLnQ1PW4udDMuY29uY2F0LmNhbGwobi50MyxuLnQ0KSxuLnQ2PXtBdXRob3JpemF0aW9uOm4udDV9LHU9bi50MS5hc3NpZ24uY2FsbChuLnQxLG4udDIsbi50Nik7Y2FzZSAyMzpyZXR1cm4gYz17Ym9keTpzLmpvaW4oIiYiKSxjcmVkZW50aWFsczppLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnModSksbWV0aG9kOiJQT1NUIn0sbi5wcmV2PTI0LG4ubmV4dD0yNyxmZXRjaChvLGMpO2Nhc2UgMjc6Zj1uLnNlbnQsbi5uZXh0PTMzO2JyZWFrO2Nhc2UgMzA6dGhyb3cgbi5wcmV2PTMwLG4udDc9bi5jYXRjaCgyNCksbmV3IEkoIkpTLUFVVEhfQ09SRS1SQ0ctTkUwMiIsIlRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdCBmYWlsZWQuIixudWxsIT1uLnQ3P24udDc6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgZmFpbGVkLiIpO2Nhc2UgMzM6aWYoMjAwPT09Zi5zdGF0dXMmJmYub2spe24ubmV4dD00MDticmVha31yZXR1cm4gbi50OD1JLG4udDk9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0aGUgY3VzdG9tIGdyYW50IHJlcXVlc3QuICgiLmNvbmNhdChmLnN0YXR1c1RleHQsIikiKSxuLm5leHQ9MzgsZi5qc29uKCk7Y2FzZSAzODp0aHJvdyBuLnQxMD1uLnNlbnQsbmV3IG4udDgoIkpTLUFVVEhfQ09SRS1SQ0ctSEUwMyIsbi50OSxuLnQxMCk7Y2FzZSA0MDppZighZS5yZXR1cm5zU2Vzc2lvbil7bi5uZXh0PTQ0O2JyZWFrfW4udDExPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoZix0KSxuLm5leHQ9NDk7YnJlYWs7Y2FzZSA0NDpyZXR1cm4gbi50MTI9UHJvbWlzZSxuLm5leHQ9NDcsZi5qc29uKCk7Y2FzZSA0NzpuLnQxMz1uLnNlbnQsbi50MTE9bi50MTIucmVzb2x2ZS5jYWxsKG4udDEyLG4udDEzKTtjYXNlIDQ5OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixuLnQxMSk7Y2FzZSA1MDpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyxbWzI0LDMwXV0pfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGEsaTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCxhPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhudWxsPT1uP3ZvaWQgMDpuLmlkX3Rva2VuKSxpPXthbGxvd2VkU2NvcGVzOm4uc2NvcGUsc2Vzc2lvblN0YXRlOm4uc2Vzc2lvbl9zdGF0ZX0sdC5hYnJ1cHQoInJldHVybiIsKE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWFbZV0mJiIiIT09YVtlXSYmbnVsbCE9PWFbZV18fGRlbGV0ZSBhW2VdfSkpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLGEpKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQuaWRfdG9rZW4sdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4obikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOmlmKG49dC5zZW50LHQudDA9IWUsIXQudDApe3QubmV4dD04O2JyZWFrfXJldHVybiB0Lm5leHQ9Nyx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNzp0LnQwPXQuc2VudDtjYXNlIDg6aWYoIXQudDApe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMTA6aWYoIShhPW4ud2VsbEtub3duRW5kcG9pbnQpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIHQucHJldj0xMix0Lm5leHQ9MTUsZmV0Y2goYSk7Y2FzZSAxNTppZigyMDA9PT0oaT10LnNlbnQpLnN0YXR1cyYmaS5vayl7dC5uZXh0PTE4O2JyZWFrfXRocm93IG5ldyBFcnJvcjtjYXNlIDE4OnQubmV4dD0yMzticmVhaztjYXNlIDIwOnRocm93IHQucHJldj0yMCx0LnQxPXQuY2F0Y2goMTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSEUwMSIsIkludmFsaWQgd2VsbC1rbm93biByZXNwb25zZSIsIlRoZSB3ZWxsIGtub3duIGVuZHBvaW50IHJlc3BvbnNlIGhhcyBiZWVuIGZhaWxlZCB3aXRoIGFuIGVycm9yLiIpO2Nhc2UgMjM6cmV0dXJuIHQudDI9dGhpcy5fZGF0YUxheWVyLHQudDM9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIsdC5uZXh0PTI3LGkuanNvbigpO2Nhc2UgMjc6cmV0dXJuIHQudDQ9dC5zZW50LHQubmV4dD0zMCx0LnQzLnJlc29sdmVFbmRwb2ludHMuY2FsbCh0LnQzLHQudDQpO2Nhc2UgMzA6cmV0dXJuIHQudDU9dC5zZW50LHQubmV4dD0zMyx0LnQyLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Mix0LnQ1KTtjYXNlIDMzOnJldHVybiB0Lm5leHQ9MzUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDM1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAzNjppZighbi5iYXNlVXJsKXt0Lm5leHQ9NTI7YnJlYWt9cmV0dXJuIHQucHJldj0zNyx0LnQ2PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NDEsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCgpO2Nhc2UgNDE6cmV0dXJuIHQudDc9dC5zZW50LHQubmV4dD00NCx0LnQ2LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Nix0LnQ3KTtjYXNlIDQ0OnQubmV4dD00OTticmVhaztjYXNlIDQ2OnRocm93IHQucHJldj00Nix0LnQ4PXQuY2F0Y2goMzcpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMiIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50OD90LnQ4OiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGJhc2UgdXJsIGZhaWxlZC4iKTtjYXNlIDQ5OnJldHVybiB0Lm5leHQ9NTEsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDUxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA1MjpyZXR1cm4gdC5wcmV2PTUyLHQudDk9dGhpcy5fZGF0YUxheWVyLHQubmV4dD01Nix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSgpO2Nhc2UgNTY6cmV0dXJuIHQudDEwPXQuc2VudCx0Lm5leHQ9NTksdC50OS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDksdC50MTApO2Nhc2UgNTk6dC5uZXh0PTY0O2JyZWFrO2Nhc2UgNjE6dGhyb3cgdC5wcmV2PTYxLHQudDExPXQuY2F0Y2goNTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMyIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50MTE/dC50MTE6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgZXhwbGljaXRseSBmYWlsZWQuIik7Y2FzZSA2NDpyZXR1cm4gdC5uZXh0PTY2LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA2NjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNjc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxMiwyMF0sWzM3LDQ2XSxbNTIsNjFdXSl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLGEsaSxvLHMsdSxjLGY7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBsKCl7dmFyIGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGg9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6bnVsbCE9PShlPWguYXV0aG9yaXphdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWU/ZToiIixjaGVja1Nlc3Npb25JZnJhbWU6bnVsbCE9PSh0PWguY2hlY2tfc2Vzc2lvbl9pZnJhbWUpJiZ2b2lkIDAhPT10P3Q6IiIsZW5kU2Vzc2lvbkVuZHBvaW50Om51bGwhPT0obj1oLmVuZF9zZXNzaW9uX2VuZHBvaW50KSYmdm9pZCAwIT09bj9uOiIiLGludHJvc3BlY3Rpb25FbmRwb2ludDpudWxsIT09KGE9aC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09YT9hOiIiLGlzc3VlcjpudWxsIT09KGk9aC5pc3N1ZXIpJiZ2b2lkIDAhPT1pP2k6IiIsandrc1VyaTpudWxsIT09KG89aC5qd2tzX3VyaSkmJnZvaWQgMCE9PW8/bzoiIixyZWdpc3RyYXRpb25FbmRwb2ludDpudWxsIT09KHM9aC5yZWdpc3RyYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1zP3M6IiIscmV2b2NhdGlvbkVuZHBvaW50Om51bGwhPT0odT1oLnJldm9jYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdG9rZW5FbmRwb2ludDpudWxsIT09KGM9aC50b2tlbl9lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIix1c2VyaW5mb0VuZHBvaW50Om51bGwhPT0oZj1oLnVzZXJpbmZvX2VuZHBvaW50KSYmdm9pZCAwIT09Zj9mOiIifSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYoci50MT10PXIuc2VudCxyLnQwPW51bGw9PT1yLnQxLHIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPXZvaWQgMCxyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gbz1yLnQyLHIubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0xNzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMSIsIlNpZ24tb3V0IGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBzaWduLW91dCBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBzaWduLW91dCBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDE3OnJldHVybiByLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTk6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0yMzticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAyMzppZighci50Myl7ci5uZXh0PTI3O2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0yODticmVhaztjYXNlIDI3OnIudDU9bi5pZF90b2tlbjtjYXNlIDI4OmlmKCh1PXIudDUpJiYwIT09dS50cmltKCkubGVuZ3RoKXtyLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDIiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigoYz1udWxsIT09KGE9bnVsbD09cz92b2lkIDA6cy5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1hP2E6bnVsbD09cz92b2lkIDA6cy5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT1jLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0zNDticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMyIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQodSwiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQoYywiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5nZXRTaWduT3V0VVJMKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9Qm9vbGVhbix0Lm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKGUpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdC50MCkodC50MSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKGUpLHQpO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpLGUsbik7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2lkPXQsdGhpcy5fc3RvcmU9cn1yZXR1cm4gdShlLFt7a2V5OiJzZXREYXRhSW5CdWxrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKHIudDE9bj1yLnNlbnQsci50MD1udWxsIT09ci50MSwhci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9bixyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gaT1yLnQyLG89aSYmSlNPTi5wYXJzZShpKSxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0KSx1PUpTT04uc3RyaW5naWZ5KHMpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsdSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihyLnQxPWE9ci5zZW50LHIudDA9bnVsbCE9PXIudDEsIXIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwIT09YTtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPWEsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89ci50MixzPW8mJkpTT04ucGFyc2UobyksdT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scyksYyh7fSx0LG4pKSxmPUpTT04uc3RyaW5naWZ5KHUpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsZik7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHU7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoci50MT1uPXIuc2VudCxyLnQwPW51bGwhPT1yLnQxLCFyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj1uLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9bnVsbDtjYXNlIDExOnJldHVybiBpPXIudDIsbz1pJiZKU09OLnBhcnNlKGkpLGRlbGV0ZShzPU9iamVjdC5hc3NpZ24oe30sbykpW3RdLHU9SlNPTi5zdHJpbmdpZnkocyksci5uZXh0PTE4LHRoaXMuX3N0b3JlLnNldERhdGEoZSx1KTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJfcmVzb2x2ZUtleSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCwiLSIpLmNvbmNhdCh0KToiIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPUpTT04sci5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLGUpKTtjYXNlIDM6aWYoci50Mj10PXIuc2VudCxyLnQxPW51bGwhPT1yLnQyLCFyLnQxKXtyLm5leHQ9NzticmVha31yLnQxPXZvaWQgMCE9PXQ7Y2FzZSA3OmlmKCFyLnQxKXtyLm5leHQ9MTE7YnJlYWt9ci50Mz10LHIubmV4dD0xMjticmVhaztjYXNlIDExOnIudDM9bnVsbDtjYXNlIDEyOnJldHVybiByLnQ0PXIudDMsci5hYnJ1cHQoInJldHVybiIsci50MC5wYXJzZS5jYWxsKHIudDAsci50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLG4mJkpTT04ucGFyc2UobilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSx0KSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixhJiZKU09OLnBhcnNlKGEpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpKTtjYXNlIDI6cmV0dXJuIGE9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLGEmJkpTT04ucGFyc2UoYSlbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoQS5Db25maWdEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSxuKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxuKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuU2Vzc2lvbkRhdGEsdCksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fV0pLGV9KCksSz17Y2xvY2tUb2xlcmFuY2U6MzAwLGVuYWJsZVBLQ0U6ITAscmVzcG9uc2VNb2RlOlQucXVlcnksc2NvcGU6WyJvcGVuaWQiXSxzZW5kQ29va2llc0luUmVxdWVzdHM6ITAsdmFsaWRhdGVJRFRva2VuOiEwfSxKPWZ1bmN0aW9uKCl7Ci8qKgogICAgICAgICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIC4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RvcmV9IHN0b3JlIC0gVGhlIHN0b3JlIG9iamVjdC4KICAgICAgICAgKgogICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICogYGBgCiAgICAgICAgICogY29uc3QgX3N0b3JlOiBTdG9yZSA9IG5ldyBEYXRhU3RvcmUoKTsKICAgICAgICAgKiBjb25zdCBhdXRoID0gbmV3IEFzZ2FyZGVvQXV0aENsaWVudDxDdXN0b21DbGllbnRDb25maWc+KF9zdG9yZSk7CiAgICAgICAgICogYGBgCiAgICAgICAgICoKICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjY29uc3RydWN0b3IKICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgKi8KZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSxlLl9pbnN0YW5jZUlEP2UuX2luc3RhbmNlSUQrPTE6ZS5faW5zdGFuY2VJRD0wLHRoaXMuX2RhdGFMYXllcj1uZXcgcSgiaW5zdGFuY2VfIi5jb25jYXQoZS5faW5zdGFuY2VJRCksdCksdGhpcy5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBOKHRoaXMuX2RhdGFMYXllcixyKSxlLl9hdXRoZW50aWNhdGlvbkNvcmU9bmV3IE4odGhpcy5fZGF0YUxheWVyLHIpfQovKioKICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBTREsgd2l0aCB0aGUgY29uZmlnIGRhdGEuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge0F1dGhDbGllbnRDb25maWc8VD59IGNvbmZpZyAtIFRoZSBjb25maWcgb2JqZWN0IHRvIGluaXRpYWxpemUgd2l0aC4KICAgICAgICAgKgogICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAqICAgICBzaWduSW5SZWRpcmVjdFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zaWduLWluIiwKICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAogICAgICAgICAqICAgICBiYXNlVXJsOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyIKICAgICAgICAgKiB9CiAgICAgICAgICoKICAgICAgICAgKiBhd2FpdCBhdXRoLmluaXRpYWxpemUoY29uZmlnKTsKICAgICAgICAgKgogICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpbml0aWFsaXplCiAgICAgICAgICoKICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgKi9yZXR1cm4gdShlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSyksZSkse3Njb3BlOltdLmNvbmNhdCh3KG51bGwhPT0odD1LLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSx3KG51bGwhPT0oYT1udWxsPT09KG49ZS5zY29wZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1LP3ZvaWQgMDpLLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1hP2E6W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBgRGF0YUxheWVyYCBvYmplY3QgdGhhdCBhbGxvd3MgeW91IHRvIGFjY2VzcyBhdXRoZW50aWNhdGlvbiBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge0RhdGFMYXllcn0gLSBUaGUgYERhdGFMYXllcmAgb2JqZWN0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGRhdGEgPSBhdXRoLmdldERhdGFMYXllcigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldERhdGFMYXllcgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0RGF0YUxheWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhTGF5ZXJ9Ci8qKgogICAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGF1dGhvcml6YXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7R2V0QXV0aFVSTENvbmZpZ30gY29uZmlnIC0gKE9wdGlvbmFsKSBBIGNvbmZpZyBvYmplY3QgdG8gZm9yY2UgaW5pdGlhbGl6YXRpb24gYW5kIHBhc3MKICAgICAgICAgICAqIGN1c3RvbSBwYXRoIHBhcmFtZXRlcnMgc3VjaCBhcyB0aGUgZmlkcCBwYXJhbWV0ZXIuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLmdldEF1dGhvcml6YXRpb25VUkwoKS50aGVuKCh1cmwpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2codXJsKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEF1dGhvcml6YXRpb25VUkwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaT10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIG51bGw9PShhPU9iamVjdC5hc3NpZ24oe30sZSkpfHxkZWxldGUgYS5mb3JjZUluaXQsci5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6aWYoIXIuc2VudCl7ci5uZXh0PTg7YnJlYWt9ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChhLHQpLHIubmV4dD05O2JyZWFrO2Nhc2UgODpyLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YShudWxsPT1lP3ZvaWQgMDplLmZvcmNlSW5pdCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaS5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwoYSx0KX0pKTtjYXNlIDk6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDApO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHNlbmRzIGEgcmVxdWVzdCB0byBvYnRhaW4gdGhlIGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyBhIFByb21pc2UKICAgICAgICAgICAqIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGF1dGhvcml6YXRpb25Db2RlIC0gVGhlIGF1dGhvcml6YXRpb24gY29kZS4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uU3RhdGUgLSBUaGUgc2Vzc2lvbiBzdGF0ZS4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiByZXNwb25zZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLnJlcXVlc3RBY2Nlc3NUb2tlbihhdXRoQ29kZSwgc2Vzc2lvblN0YXRlKS50aGVuKCh0b2tlbik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyh0b2tlbik7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXF1ZXN0QWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG89dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgMjppZighci5zZW50KXtyLm5leHQ9NjticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LG4sYSksci5uZXh0PTc7YnJlYWs7Y2FzZSA2OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCExKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCxuLGEpfSkpO2Nhc2UgNzpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksaSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgY2xlYXJzIGFsbCBhdXRoZW50aWNhdGlvbiBkYXRhIGFuZCByZXR1cm5zIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHNpZ25PdXRVcmwgPSBhd2FpdCBhdXRoLnNpZ25PdXQoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzaWduT3V0CiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2lnbk91dChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGlzIGRvZXNuJ3QgY2xlYXIgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEuKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHNpZ25PdXRVcmwgPSBhd2FpdCBhdXRoLmdldFNpZ25PdXRVUkwoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRTaWduT3V0VVJMCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0U2lnbk91dFVSTChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBPSURDIHNlcnZpY2UgZW5kcG9pbnRzIHRoYXQgYXJlIGZldGNoZWQgZnJvbSB0aGUgYC53ZWxsLWtub3duYCBlbmRwb2ludC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPE9JRENFbmRwb2ludHM+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIE9JREMgc2VydmljZSBlbmRwb2ludHMuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgYXV0aC5nZXRPSURDU2VydmljZUVuZHBvaW50cygpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldE9JRENTZXJ2aWNlRW5kcG9pbnRzCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgcGF5bG9hZCBvZiB0aGUgSUQgdG9rZW4gYW5kIHJldHVybnMgaXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPERlY29kZWRJRFRva2VuUGF5bG9hZD59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGVjb2RlZCBJRCB0b2tlbiBwYXlsb2FkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGRlY29kZWRJZFRva2VuID0gYXdhaXQgYXV0aC5nZXREZWNvZGVkSURUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldERlY29kZWRJRFRva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldERlY29kZWRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBpZFRva2VuID0gYXdhaXQgYXV0aC5nZXRJRFRva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0SURUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGJhc2ljIHVzZXIgaW5mb3JtYXRpb24gb2J0YWluZWQgZnJvbSB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEJhc2ljVXNlckluZm8+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGJhc2ljIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgdXNlckluZm8gPSBhd2FpdCBhdXRoLmdldEJhc2ljVXNlckluZm8oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRCYXNpY1VzZXJJbmZvCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QmFzaWNVc2VySW5mbyhlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV2b2tlcyB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGlzIG1ldGhvZCBhbHNvIGNsZWFycyB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8RmV0Y2hSZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmV0dXJucyB0aGUgcmVzcG9uc2Ugb2YgdGhlIHJldm9rZS1hY2Nlc3MtdG9rZW4gcmVxdWVzdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmV2b2tlQWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJldm9rZUFjY2Vzc1Rva2VuKGUpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJlZnJlc2hlcyB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhY2Nlc3MKICAgICAgICAgICAqIHRva2VuIGFuZCBvdGhlciByZWxldmFudCBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiByZXNwb25zZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhdXRoLnJlZnJlc2hBY2Nlc3NUb2tlbigpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlZnJlc2hBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlZnJlc2hBY2Nlc3NUb2tlbihlKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgYXV0aC5nZXRBY2Nlc3NUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEFjY2Vzc1Rva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBzZW5kcyBhIGN1c3RvbS1ncmFudCByZXF1ZXN0IGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlCiAgICAgICAgICAgKiBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZyBwYXNzZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtDdXN0b21HcmFudENvbmZpZ30gY29uZmlnIC0gQSBjb25maWcgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1c3RvbSBncmFudCBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlIHwgRmV0Y2hSZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGVwZW5kaW5nCiAgICAgICAgICAgKiBvbiB5b3VyIGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKICAgICAgICAgICAqICAgYXR0YWNoVG9rZW46IGZhbHNlLAogICAgICAgICAgICogICBkYXRhOiB7CiAgICAgICAgICAgKiAgICAgICBjbGllbnRfaWQ6ICJ7e2NsaWVudElEfX0iLAogICAgICAgICAgICogICAgICAgZ3JhbnRfdHlwZTogImFjY291bnRfc3dpdGNoIiwKICAgICAgICAgICAqICAgICAgIHNjb3BlOiAie3tzY29wZX19IiwKICAgICAgICAgICAqICAgICAgIHRva2VuOiAie3t0b2tlbn19IiwKICAgICAgICAgICAqICAgfSwKICAgICAgICAgICAqICAgaWQ6ICJhY2NvdW50LXN3aXRjaCIsCiAgICAgICAgICAgKiAgIHJldHVyblJlc3BvbnNlOiB0cnVlLAogICAgICAgICAgICogICByZXR1cm5zU2Vzc2lvbjogdHJ1ZSwKICAgICAgICAgICAqICAgc2lnbkluUmVxdWlyZWQ6IHRydWUKICAgICAgICAgICAqIH0KICAgICAgICAgICAqCiAgICAgICAgICAgKiBhdXRoLnJlcXVlc3RDdXN0b21HcmFudChjb25maWcpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RDdXN0b21HcmFudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEN1c3RvbUdyYW50KGUsdCl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIG5vdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXdhaXQgYXV0aC5pc0F1dGhlbnRpY2F0ZWQoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc0F1dGhlbnRpY2F0ZWQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmlzQXV0aGVudGljYXRlZChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgUEtDRSBjb2RlIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIC0gVGhlIHN0YXRlIHBhcmFtZXRlciB0aGF0IHdhcyBwYXNzZWQgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgUEtDRSBjb2RlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHBrY2UgPSBhd2FpdCBnZXRQS0NFQ29kZSgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFBLQ0VDb2RlCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0UEtDRUNvZGUoZSx0KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgUEtDRSBjb2RlIHRvIHRoZSBkYXRhIHN0b3JlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwa2NlIC0gVGhlIFBLQ0UgY29kZS4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBzdGF0ZSBwYXJhbWV0ZXIgdGhhdCB3YXMgcGFzc2VkIGluIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF3YWl0IGF1dGguc2V0UEtDRUNvZGUoInBrY2VfY29kZSIpCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjc2V0UEtDRUNvZGUKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNldFBLQ0VDb2RlKGUsdCxuKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSBzaWduLW91dCBpcyBzdWNjZXNzZnVsIG9yIG5vdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbk91dFJlZGlyZWN0VXJsIC0gVGhlIFVSTCB0byB3aGljaCB0aGUgdXNlciBoYXMgYmVlbiByZWRpcmVjdGVkIHRvIGFmdGVyIHNpZ25pbmctb3V0LgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhlIHNlcnZlciBhcHBlbmRzIHBhdGggcGFyYW1ldGVycyB0byB0aGUgYHNpZ25PdXRSZWRpcmVjdFVSTGAgYW5kIHRoZXNlIHBhdGggcGFyYW1ldGVycwogICAgICAgICAgICogIGFyZSByZXF1aXJlZCBmb3IgdGhpcyBtZXRob2QgdG8gZnVuY3Rpb24uKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiBzdWNjZXNzZnVsLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaXNTaWduT3V0U3VjY2Vzc2Z1bAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZToKLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgd2FzIHBhc3NlZCBpbnRvIHRoZSBjb25zdHJ1Y3RvciB3aGVuIGluc3RhbnRpYXRpbmcgdGhpcyBjbGFzcy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge1BhcnRpYWw8QXV0aENsaWVudENvbmZpZzxUPj59IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCB0byB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9ucyB3aXRoLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKICAgICAgICAgICAqICAgICBzaWduSW5SZWRpcmVjdFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zaWduLWluIiwKICAgICAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCiAgICAgICAgICAgKiAgICAgYmFzZVVybDogImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMiCiAgICAgICAgICAgKiB9CiAgICAgICAgICAgKgogICAgICAgICAgICogYXdhaXQgYXV0aC51cGRhdGVDb25maWcoY29uZmlnKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3VwZGF0ZUNvbmZpZwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqLwpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dLFt7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmIW59Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgc2lnbi1vdXQgaGFzIGZhaWxlZCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKICAgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2RpZFNpZ25PdXRGYWlsCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJkaWRTaWduT3V0RmFpbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJm59fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLEI9ImluaXQiOyFmdW5jdGlvbihlKXtlLkxvY2FsU3RvcmFnZT0ibG9jYWxTdG9yYWdlIixlLlNlc3Npb25TdG9yYWdlPSJzZXNzaW9uU3RvcmFnZSIsZS5XZWJXb3JrZXI9IndlYldvcmtlciIsZS5Ccm93c2VyTWVtb3J5PSJicm93c2VyTWVtb3J5In0oVXx8KFU9e30pKSxmdW5jdGlvbihlKXtlLlNpZ25Jbj0ic2lnbi1pbiIsZS5TaWduT3V0PSJzaWduLW91dCIsZS5Jbml0aWFsaXplPSJpbml0aWFsaXplIixlLkh0dHBSZXF1ZXN0U3RhcnQ9Imh0dHAtcmVxdWVzdC1zdGFydCIsZS5IdHRwUmVxdWVzdEZpbmlzaD0iaHR0cC1yZXF1ZXN0LWZpbmlzaCIsZS5IdHRwUmVxdWVzdEVycm9yPSJodHRwLXJlcXVlc3QtZXJyb3IiLGUuSHR0cFJlcXVlc3RTdWNjZXNzPSJodHRwLXJlcXVlc3Qtc3VjY2VzcyIsZS5SZXZva2VBY2Nlc3NUb2tlbj0icmV2b2tlLWFjY2Vzcy10b2tlbiIsZS5DdXN0b21HcmFudD0iY3VzdG9tLWdyYW50IixlLlNpZ25PdXRGYWlsZWQ9InNpZ24tb3V0LWZhaWxlZCJ9KEh8fChIPXt9KSk7dmFyIEY9InByb21wdE5vbmVSZXF1ZXN0U2VudCIsVz0iZXJyb3IiLHo9ImVycm9yX2Rlc2NyaXB0aW9uIixZPSJjdXN0b21fZ3JhbnRfY29uZmlnIixHPSJzdGF0ZSIsVj0iQWNjZXNzIHRva2VuIGlzIGludmFsaWQiLFg9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiAkKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9ZnVuY3Rpb24gWihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fXZhciBRPXtleHBvcnRzOnt9fSxlZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHQscil9fSx0ZT1lZSxyZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIG5lKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIGFlKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIGllKGUpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1yZS5jYWxsKGUpfWZ1bmN0aW9uIG9lKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PT1uKGUpfWZ1bmN0aW9uIHNlKGUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09cmUuY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiB1ZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09cmUuY2FsbChlKX1mdW5jdGlvbiBjZShlLHQpe2lmKG51bGwhPWUpaWYoIm9iamVjdCIhPT1uKGUpJiYoZT1bZV0pLG5lKGUpKWZvcih2YXIgcj0wLGE9ZS5sZW5ndGg7cjxhO3IrKyl0LmNhbGwobnVsbCxlW3JdLHIsZSk7ZWxzZSBmb3IodmFyIGkgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmdC5jYWxsKG51bGwsZVtpXSxpLGUpfXZhciBmZT17aXNBcnJheTpuZSxpc0FycmF5QnVmZmVyOmllLGlzQnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIWFlKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIWFlKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09cmUuY2FsbChlKX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmaWUoZS5idWZmZXIpfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6b2UsaXNQbGFpbk9iamVjdDpzZSxpc1VuZGVmaW5lZDphZSxpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09cmUuY2FsbChlKX0saXNGaWxlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PXJlLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1yZS5jYWxsKGUpfSxpc0Z1bmN0aW9uOnVlLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBvZShlKSYmdWUoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1yZS5jYWxsKGUpfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOmNlLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7c2UodFtuXSkmJnNlKHIpP3Rbbl09ZSh0W25dLHIpOnNlKHIpP3Rbbl09ZSh7fSxyKTpuZShyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspY2UoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGUodCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX0sbGU9ZmU7ZnVuY3Rpb24gaGUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIHBlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKGxlLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107bGUuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihsZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sbGUuZm9yRWFjaChlLChmdW5jdGlvbihlKXtsZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6bGUuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaGUodCkrIj0iK2hlKGUpKX0pKSl9KSksbj1hLmpvaW4oIiYiKX1pZihuKXt2YXIgaT1lLmluZGV4T2YoIiMiKTstMSE9PWkmJihlPWUuc2xpY2UoMCxpKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX0sZGU9ZmU7ZnVuY3Rpb24gdmUoKXt0aGlzLmhhbmRsZXJzPVtdfXZlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LHZlLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sdmUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7ZGUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIGdlPXZlLHllPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307ZnVuY3Rpb24gbWUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBiZSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIHdlPW1lLGtlPWJlO2Z1bmN0aW9uIHhlKGUpe2lmKHdlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKCh3ZT09PW1lfHwhd2UpJiZzZXRUaW1lb3V0KXJldHVybiB3ZT1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIHdlKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiB3ZS5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gd2UuY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgeWUuc2V0VGltZW91dCYmKHdlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiB5ZS5jbGVhclRpbWVvdXQmJihrZT1jbGVhclRpbWVvdXQpO3ZhciBfZSxTZT1bXSxFZT0hMSxUZT0tMTtmdW5jdGlvbiBBZSgpe0VlJiZfZSYmKEVlPSExLF9lLmxlbmd0aD9TZT1fZS5jb25jYXQoU2UpOlRlPS0xLFNlLmxlbmd0aCYmUmUoKSl9ZnVuY3Rpb24gUmUoKXtpZighRWUpe3ZhciBlPXhlKEFlKTtFZT0hMDtmb3IodmFyIHQ9U2UubGVuZ3RoO3Q7KXtmb3IoX2U9U2UsU2U9W107KytUZTx0OylfZSYmX2VbVGVdLnJ1bigpO1RlPS0xLHQ9U2UubGVuZ3RofV9lPW51bGwsRWU9ITEsZnVuY3Rpb24oZSl7aWYoa2U9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigoa2U9PT1iZXx8IWtlKSYmY2xlYXJUaW1lb3V0KXJldHVybiBrZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtrZShlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGtlLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4ga2UuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBDZShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fUNlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtmdW5jdGlvbiBQZSgpe312YXIgRGU9UGUsT2U9UGUsSWU9UGUsTGU9UGUsVWU9UGUsSGU9UGUsTWU9UGU7dmFyIGplPXllLnBlcmZvcm1hbmNlfHx7fSxOZT1qZS5ub3d8fGplLm1vek5vd3x8amUubXNOb3d8fGplLm9Ob3d8fGplLndlYmtpdE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07dmFyIHFlPW5ldyBEYXRlO3ZhciBLZT17bmV4dFRpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtTZS5wdXNoKG5ldyBDZShlLHQpKSwxIT09U2UubGVuZ3RofHxFZXx8eGUoUmUpfSx0aXRsZToiYnJvd3NlciIsYnJvd3NlcjohMCxlbnY6e30sYXJndjpbXSx2ZXJzaW9uOiIiLHZlcnNpb25zOnt9LG9uOkRlLGFkZExpc3RlbmVyOk9lLG9uY2U6SWUsb2ZmOkxlLHJlbW92ZUxpc3RlbmVyOlVlLHJlbW92ZUFsbExpc3RlbmVyczpIZSxlbWl0Ok1lLGJpbmRpbmc6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGNoZGlyOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihlKXt2YXIgdD0uMDAxKk5lLmNhbGwoamUpLHI9TWF0aC5mbG9vcih0KSxuPU1hdGguZmxvb3IodCUxKjFlOSk7cmV0dXJuIGUmJihyLT1lWzBdLChuLT1lWzFdKTwwJiYoci0tLG4rPTFlOSkpLFtyLG5dfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLXFlKS8xZTN9fSxKZT1LZSxCZT1mZSxGZT1mdW5jdGlvbihlLHQscixuLGEpe3JldHVybiBlLmNvbmZpZz10LHImJihlLmNvZGU9ciksZS5yZXF1ZXN0PW4sZS5yZXNwb25zZT1hLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX0sV2U9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LHplPUZlLFllPWZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIGk9bmV3IEVycm9yKGUpO3JldHVybiB6ZShpLHQscixuLGEpfSxHZT1ZZSxWZT1mZSxYZT1WZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihlLHQscixuLGEsaSl7dmFyIG89W107by5wdXNoKGUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KSksVmUuaXNOdW1iZXIocikmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHIpLnRvR01UU3RyaW5nKCkpLFZlLmlzU3RyaW5nKG4pJiZvLnB1c2goInBhdGg9IituKSxWZS5pc1N0cmluZyhhKSYmby5wdXNoKCJkb21haW49IithKSwhMD09PWkmJm8ucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPW8uam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319LCRlPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSl9LFplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9LFFlPWZlLGV0PVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0sdHQ9ZmUscnQ9dHQuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBuKGUpe3ZhciBuPWU7cmV0dXJuIHQmJihyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbiksbj1yLmhyZWYpLHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSx7aHJlZjpyLmhyZWYscHJvdG9jb2w6ci5wcm90b2NvbD9yLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpyLmhvc3Qsc2VhcmNoOnIuc2VhcmNoP3Iuc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6ci5oYXNoP3IuaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOnIuaG9zdG5hbWUscG9ydDpyLnBvcnQscGF0aG5hbWU6Ii8iPT09ci5wYXRobmFtZS5jaGFyQXQoMCk/ci5wYXRobmFtZToiLyIrci5wYXRobmFtZX19cmV0dXJuIGU9bih3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIHI9dHQuaXNTdHJpbmcodCk/bih0KTp0O3JldHVybiByLnByb3RvY29sPT09ZS5wcm90b2NvbCYmci5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfTtmdW5jdGlvbiBudChlKXt0aGlzLm1lc3NhZ2U9ZX1udC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sbnQucHJvdG90eXBlLl9fQ0FOQ0VMX189ITA7dmFyIGF0PW50LGl0PWZlLG90PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3QoR2UoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0sc3Q9WGUsdXQ9cGUsY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmISRlKHQpP1plKGUsdCk6dH0sZnQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGE9e307cmV0dXJuIGU/KFFlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PVFlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPVFlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYoYVt0XSYmZXQuaW5kZXhPZih0KT49MClyZXR1cm47YVt0XT0ic2V0LWNvb2tpZSI9PT10PyhhW3RdP2FbdF06W10pLmNvbmNhdChbcl0pOmFbdF0/YVt0XSsiLCAiK3I6cn19KSksYSk6YX0sbHQ9cnQsaHQ9WWUscHQ9V2UsZHQ9YXQsdnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuLGE9ZS5kYXRhLGk9ZS5oZWFkZXJzLG89ZS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24gcygpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixuKX1pdC5pc0Zvcm1EYXRhKGEpJiZkZWxldGUgaVsiQ29udGVudC1UeXBlIl07dmFyIHU9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGM9ZS5hdXRoLnVzZXJuYW1lfHwiIixmPWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7aS5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYysiOiIrZil9dmFyIGw9Y3QoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBoKCl7aWYodSl7dmFyIG49ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiB1P2Z0KHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsYT17ZGF0YTpvJiYidGV4dCIhPT1vJiYianNvbiIhPT1vP3UucmVzcG9uc2U6dS5yZXNwb25zZVRleHQsc3RhdHVzOnUuc3RhdHVzLHN0YXR1c1RleHQ6dS5zdGF0dXNUZXh0LGhlYWRlcnM6bixjb25maWc6ZSxyZXF1ZXN0OnV9O290KChmdW5jdGlvbihlKXt0KGUpLHMoKX0pLChmdW5jdGlvbihlKXtyKGUpLHMoKX0pLGEpLHU9bnVsbH19aWYodS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksdXQobCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSx1LnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gdT91Lm9ubG9hZGVuZD1oOnUub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSYmND09PXUucmVhZHlTdGF0ZSYmKDAhPT11LnN0YXR1c3x8dS5yZXNwb25zZVVSTCYmMD09PXUucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoaCl9LHUub25hYm9ydD1mdW5jdGlvbigpe3UmJihyKGh0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbCl9LHUub25lcnJvcj1mdW5jdGlvbigpe3IoaHQoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCx1KSksdT1udWxsfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixuPWUudHJhbnNpdGlvbmFsfHxwdDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSkscihodCh0LGUsbi5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGx9LGl0LmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8bHQobCkpJiZlLnhzcmZDb29raWVOYW1lP3N0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihpW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIHUmJml0LmZvckVhY2goaSwoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1hJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgaVt0XTp1LnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxpdC5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fCh1LndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxvJiYianNvbiIhPT1vJiYodS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmdS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJnUudXBsb2FkJiZ1LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYobj1mdW5jdGlvbihlKXt1JiYocighZXx8ZSYmZS50eXBlP25ldyBkdCgiY2FuY2VsZWQiKTplKSx1LmFib3J0KCksdT1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP24oKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbikpKSxhfHwoYT1udWxsKSx1LnNlbmQoYSl9KSl9LGd0PWZlLHl0PWZ1bmN0aW9uKGUsdCl7QmUuZm9yRWFjaChlLChmdW5jdGlvbihyLG4pe24hPT10JiZuLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPXIsZGVsZXRlIGVbbl0pfSkpfSxtdD1GZSxidD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIHd0KGUsdCl7IWd0LmlzVW5kZWZpbmVkKGUpJiZndC5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIga3QseHQ9e3RyYW5zaXRpb25hbDpXZSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8dm9pZCAwIT09SmUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChKZSkpJiYoa3Q9dnQpLGt0KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiB5dCh0LCJBY2NlcHQiKSx5dCh0LCJDb250ZW50LVR5cGUiKSxndC5pc0Zvcm1EYXRhKGUpfHxndC5pc0FycmF5QnVmZmVyKGUpfHxndC5pc0J1ZmZlcihlKXx8Z3QuaXNTdHJlYW0oZSl8fGd0LmlzRmlsZShlKXx8Z3QuaXNCbG9iKGUpP2U6Z3QuaXNBcnJheUJ1ZmZlclZpZXcoZSk/ZS5idWZmZXI6Z3QuaXNVUkxTZWFyY2hQYXJhbXMoZSk/KHd0KHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpndC5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0/KHd0KHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQscil7aWYoZ3QuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxndC50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8eHQudHJhbnNpdGlvbmFsLHI9dCYmdC5zaWxlbnRKU09OUGFyc2luZyxuPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsYT0hciYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoYXx8biYmZ3QuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihhKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IG10KGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07Z3QuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7eHQuaGVhZGVyc1tlXT17fX0pKSxndC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe3h0LmhlYWRlcnNbZV09Z3QubWVyZ2UoYnQpfSkpO3ZhciBfdD14dCxTdD1mZSxFdD1fdCxUdD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX0sQXQ9ZmUsUnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXN8fEV0O3JldHVybiBTdC5mb3JFYWNoKHIsKGZ1bmN0aW9uKHIpe2U9ci5jYWxsKG4sZSx0KX0pKSxlfSxDdD1UdCxQdD1fdCxEdD1hdDtmdW5jdGlvbiBPdChlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgRHQoImNhbmNlbGVkIil9dmFyIEl0PWZlLEx0PWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIEl0LmlzUGxhaW5PYmplY3QoZSkmJkl0LmlzUGxhaW5PYmplY3QodCk/SXQubWVyZ2UoZSx0KTpJdC5pc1BsYWluT2JqZWN0KHQpP0l0Lm1lcmdlKHt9LHQpOkl0LmlzQXJyYXkodCk/dC5zbGljZSgpOnR9ZnVuY3Rpb24gYShyKXtyZXR1cm4gSXQuaXNVbmRlZmluZWQodFtyXSk/SXQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4oZVtyXSx0W3JdKX1mdW5jdGlvbiBpKGUpe2lmKCFJdC5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbih2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gbyhyKXtyZXR1cm4gSXQuaXNVbmRlZmluZWQodFtyXSk/SXQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4odm9pZCAwLHRbcl0pfWZ1bmN0aW9uIHMocil7cmV0dXJuIHIgaW4gdD9uKGVbcl0sdFtyXSk6ciBpbiBlP24odm9pZCAwLGVbcl0pOnZvaWQgMH12YXIgdT17dXJsOmksbWV0aG9kOmksZGF0YTppLGJhc2VVUkw6byx0cmFuc2Zvcm1SZXF1ZXN0Om8sdHJhbnNmb3JtUmVzcG9uc2U6byxwYXJhbXNTZXJpYWxpemVyOm8sdGltZW91dDpvLHRpbWVvdXRNZXNzYWdlOm8sd2l0aENyZWRlbnRpYWxzOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sdHJhbnNwb3J0Om8saHR0cEFnZW50Om8saHR0cHNBZ2VudDpvLGNhbmNlbFRva2VuOm8sc29ja2V0UGF0aDpvLHJlc3BvbnNlRW5jb2Rpbmc6byx2YWxpZGF0ZVN0YXR1czpzfTtyZXR1cm4gSXQuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD11W2VdfHxhLG49dChlKTtJdC5pc1VuZGVmaW5lZChuKSYmdCE9PXN8fChyW2VdPW4pfSkpLHJ9LFV0PSIwLjI2LjEiLEh0PVV0LE10PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtNdFtlXT1mdW5jdGlvbihyKXtyZXR1cm4gbihyKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIganQ9e307TXQudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIltBeGlvcyB2IitIdCsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixhLGkpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobihhLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFqdFthXSYmKGp0W2FdPSEwLGNvbnNvbGUud2FybihuKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUocixhLGkpfX07dmFyIE50PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxyKXtpZigib2JqZWN0IiE9PW4oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxpPWEubGVuZ3RoO2ktLSA+MDspe3ZhciBvPWFbaV0scz10W29dO2lmKHMpe3ZhciB1PWVbb10sYz12b2lkIDA9PT11fHxzKHUsbyxlKTtpZighMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIrbysiIG11c3QgYmUgIitjKX1lbHNlIGlmKCEwIT09cil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitvKX19LHZhbGlkYXRvcnM6TXR9LHF0PWZlLEt0PXBlLEp0PWdlLEJ0PWZ1bmN0aW9uKGUpe3JldHVybiBPdChlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9UnQuY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9QXQubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxBdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fFB0LmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBPdChlKSx0LmRhdGE9UnQuY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gQ3QodCl8fChPdChlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPVJ0LmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9LEZ0PUx0LFd0PU50LHp0PVd0LnZhbGlkYXRvcnM7ZnVuY3Rpb24gWXQoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBKdCxyZXNwb25zZTpuZXcgSnR9fVl0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiBlPyh0PXR8fHt9KS51cmw9ZTp0PWV8fHt9LCh0PUZ0KHRoaXMuZGVmYXVsdHMsdCkpLm1ldGhvZD90Lm1ldGhvZD10Lm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3QubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6dC5tZXRob2Q9ImdldCI7dmFyIHI9dC50cmFuc2l0aW9uYWw7dm9pZCAwIT09ciYmV3QuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzp6dC50cmFuc2l0aW9uYWwoenQuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6enQudHJhbnNpdGlvbmFsKHp0LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6enQudHJhbnNpdGlvbmFsKHp0LmJvb2xlYW4pfSwhMSk7dmFyIG49W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJ1bldoZW4mJiExPT09ZS5ydW5XaGVuKHQpfHwoYT1hJiZlLnN5bmNocm9ub3VzLG4udW5zaGlmdChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKSl9KSk7dmFyIGksbz1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIWEpe3ZhciBzPVtCdCx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShzLG4pLHM9cy5jb25jYXQobyksaT1Qcm9taXNlLnJlc29sdmUodCk7cy5sZW5ndGg7KWk9aS50aGVuKHMuc2hpZnQoKSxzLnNoaWZ0KCkpO3JldHVybiBpfWZvcih2YXIgdT10O24ubGVuZ3RoOyl7dmFyIGM9bi5zaGlmdCgpLGY9bi5zaGlmdCgpO3RyeXt1PWModSl9Y2F0Y2goZSl7ZihlKTticmVha319dHJ5e2k9QnQodSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7by5sZW5ndGg7KWk9aS50aGVuKG8uc2hpZnQoKSxvLnNoaWZ0KCkpO3JldHVybiBpfSxZdC5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPUZ0KHRoaXMuZGVmYXVsdHMsZSksS3QoZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0scXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe1l0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoRnQocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pKSxxdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe1l0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMucmVxdWVzdChGdChufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpyfSkpfX0pKTt2YXIgR3Q9WXQsVnQ9YXQ7ZnVuY3Rpb24gWHQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHIuX2xpc3RlbmVycyl7dmFyIHQsbj1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKylyLl9saXN0ZW5lcnNbdF0oZSk7ci5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iuc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiBuLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUodCl9LG59LGUoKGZ1bmN0aW9uKGUpe3IucmVhc29ufHwoci5yZWFzb249bmV3IFZ0KGUpLHQoci5yZWFzb24pKX0pKX1YdC5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxYdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxYdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LFh0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IFh0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgJHQ9WHQsWnQ9ZmUsUXQ9ZmUsZXI9ZWUsdHI9R3QscnI9THQ7dmFyIG5yPWZ1bmN0aW9uIGUodCl7dmFyIHI9bmV3IHRyKHQpLG49ZXIodHIucHJvdG90eXBlLnJlcXVlc3Qscik7cmV0dXJuIFF0LmV4dGVuZChuLHRyLnByb3RvdHlwZSxyKSxRdC5leHRlbmQobixyKSxuLmNyZWF0ZT1mdW5jdGlvbihyKXtyZXR1cm4gZShycih0LHIpKX0sbn0oX3QpO25yLkF4aW9zPXRyLG5yLkNhbmNlbD1hdCxuci5DYW5jZWxUb2tlbj0kdCxuci5pc0NhbmNlbD1UdCxuci5WRVJTSU9OPVV0LG5yLmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9LG5yLnNwcmVhZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19LG5yLmlzQXhpb3NFcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4gWnQuaXNPYmplY3QoZSkmJiEwPT09ZS5pc0F4aW9zRXJyb3J9LFEuZXhwb3J0cz1ucixRLmV4cG9ydHMuZGVmYXVsdD1ucjt2YXIgYXIsaXI9US5leHBvcnRzO3ZhciBvcj1hcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5hdHRhY2hUb2tlbj1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLmluaXQ9dGhpcy5pbml0LmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2suYmluZCh0aGlzKX1yZXR1cm4gdShlLFt7a2V5OiJyZXF1ZXN0SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLmF0dGFjaFRva2VuKGUpO2Nhc2UgMjpyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS5zaG91bGRFbmNvZGVUb0Zvcm1EYXRhKSYmKG49bnVsbD09ZT92b2lkIDA6ZS5kYXRhLGE9bmV3IEZvcm1EYXRhLE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe2EuYXBwZW5kKGUsbltlXSl9KSksZS5kYXRhPWEpLGFyLmlzSGFuZGxlckVuYWJsZWQmJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrKGUpLHQuYWJydXB0KCJyZXR1cm4iLGUpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZXJyb3JIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXt0aHJvdyBhci5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJnRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6InN1Y2Nlc3NIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXIuaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdD1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmFyLmlzSGFuZGxlckVuYWJsZWQ9ZSx0aGlzLmF0dGFjaFRva2VuPXQ7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJlbmFibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe2FyLmlzSGFuZGxlckVuYWJsZWQ9ITB9fSx7a2V5OiJkaXNhYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXthci5pc0hhbmRsZXJFbmFibGVkPSExfX0se2tleToiZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06YXIuREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVDthci5pc0hhbmRsZXJFbmFibGVkPSExLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YXIuaXNIYW5kbGVyRW5hYmxlZD0hMH0pLGUpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWV9fV0sW3trZXk6ImdldEluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuYXhpb3NJbnN0YW5jZXx8KHRoaXMuYXhpb3NJbnN0YW5jZT1pci5jcmVhdGUoe3dpdGhDcmVkZW50aWFsczohMH0pLHRoaXMuY2xpZW50SW5zdGFuY2V8fCh0aGlzLmNsaWVudEluc3RhbmNlPW5ldyBhciksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIFMoZSx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5jbGllbnRJbnN0YW5jZS5yZXF1ZXN0SGFuZGxlcih0KTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLnN1Y2Nlc3NIYW5kbGVyKHQpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLmVycm9ySGFuZGxlcih0KX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuYWxsPWlyLmFsbCx0aGlzLmF4aW9zSW5zdGFuY2Uuc3ByZWFkPWlyLnNwcmVhZCx0aGlzLmF4aW9zSW5zdGFuY2UuaW5pdD10aGlzLmNsaWVudEluc3RhbmNlLmluaXQsdGhpcy5heGlvc0luc3RhbmNlLmVuYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5lbmFibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0PXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSx0aGlzLmF4aW9zSW5zdGFuY2V9fV0pLGV9KCk7b3IuREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVD0xZTMsb3I9YXI9ZnVuY3Rpb24oZSx0LHIsYSl7dmFyIGksbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWE/YT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6YTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3Q/InVuZGVmaW5lZCI6bihSZWZsZWN0KSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixhKTtlbHNlIGZvcih2YXIgdT1lLmxlbmd0aC0xO3U+PTA7dS0tKShpPWVbdV0pJiYocz0obzwzP2kocyk6bz4zP2kodCxyLHMpOmkodCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30oW2Z1bmN0aW9uKGUpe31dLG9yKTt2YXIgc3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpLHRoaXMuX2RhdGE9bmV3IE1hcH1yZXR1cm4gdShlLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5zZXQoZSx0KTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsbnVsbCE9PShuPW51bGw9PT0odD10aGlzLl9kYXRhKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXQoZSkpJiZ2b2lkIDAhPT1uP246Int9Iik7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuZGVsZXRlKGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6ImdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybntibG9iOihudWxsPT1lP3ZvaWQgMDplLmRhdGEpaW5zdGFuY2VvZiBCbG9iP251bGw9PWU/dm9pZCAwOmUuZGF0YTpudWxsLGRhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiEwfX19LHtrZXk6ImdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybihudWxsPT1lP3ZvaWQgMDplLnRvSlNPTikmJmRlbGV0ZSBlLnRvSlNPTix7ZXJyb3I6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiExfX19XSksZX0oKSxjcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHUoZSxudWxsLFt7a2V5OiJyZW1vdmVBdXRob3JpemF0aW9uQ29kZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1sb2NhdGlvbi5ocmVmO2hpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGUucmVwbGFjZSgvXD9jb2RlPS4qJC8sIiIpKX19LHtrZXk6ImdldFBLQ0UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShlKSkmJnZvaWQgMCE9PXQ/dDoiIn19LHtrZXk6InNldFBLQ0UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShlLHQpfX0se2tleToic2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShELGUpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oRCkpJiZ2b2lkIDAhPT1lP2U6IiJ9fSx7a2V5OiJyZW1vdmVQS0NFIix2YWx1ZTpmdW5jdGlvbihlKXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGUpfX0se2tleToiY2FuQ29udGludWVTaWduSW4iLHZhbHVlOmZ1bmN0aW9uKHQscil7cmV0dXJuISh0JiYhZS5oYXNFcnJvckluVVJMKCkmJiFlLmhhc0F1dGhTZWFyY2hQYXJhbXNJblVSTCgpJiYhcil9fSx7a2V5OiJpc0luaXRpYWxpemVkU2lsZW50U2lnbkluIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBlLmlzU2lsZW50U3RhdGVQcmVzZW50SW5VUkwoKX19LHtrZXk6Indhc1NpZ25JbkNhbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCFlLmhhc0Vycm9ySW5VUkwoKSYmIWUuaGFzQXV0aFNlYXJjaFBhcmFtc0luVVJMKCl8fHRoaXMuaXNTaWxlbnRTdGF0ZVByZXNlbnRJblVSTCgpKX19LHtrZXk6Indhc1NpbGVudFNpZ25JbkNhbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJpbml0aWFsaXplZC1zaWxlbnQtc2lnbi1pbiIpLHQ9ZT9KU09OLnBhcnNlKGUpOm51bGw7cmV0dXJuIEJvb2xlYW4odCl9fSx7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIUouaXNTaWduT3V0U3VjY2Vzc2Z1bCh3aW5kb3cubG9jYXRpb24uaHJlZikpe2UubmV4dD02O2JyZWFrfXJldHVybiB0PXdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCI/IilbMF0saGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsdCksZS5uZXh0PTUsSi5jbGVhclVzZXJTZXNzaW9uRGF0YSgpO2Nhc2UgNTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsITApO2Nhc2UgNjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX19LHtrZXk6ImRpZFNpZ25PdXRGYWlsIix2YWx1ZTpmdW5jdGlvbigpe2lmKEouZGlkU2lnbk91dEZhaWwod2luZG93LmxvY2F0aW9uLmhyZWYpKXt2YXIgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx0PWUuc2VhcmNoUGFyYW1zLmdldChXKSxyPWUuc2VhcmNoUGFyYW1zLmdldCh6KSxuPXdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCI/IilbMF07cmV0dXJuIGhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLG4pLHtkZXNjcmlwdGlvbjpudWxsIT1yP3I6IiIsZXJyb3I6bnVsbCE9dD90OiIifX1yZXR1cm4hMX19LHtrZXk6ImlzU2lsZW50U3RhdGVQcmVzZW50SW5VUkwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpO3JldHVybiBudWxsIT09KGU9bnVsbD09dD92b2lkIDA6dC5pbmNsdWRlcygic2lnbi1pbi1zaWxlbnRseSIpKSYmdm9pZCAwIT09ZSYmZX19LHtrZXk6Imhhc0F1dGhTZWFyY2hQYXJhbXNJblVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LmxvY2F0aW9uLnNlYXJjaCx0PS9bPyZdY29kZT1bXiZdKy87cmV0dXJuIHQudGVzdChlKX19LHtrZXk6Imhhc0Vycm9ySW5VUkwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdy5sb2NhdGlvbi5ocmVmLHQ9bmV3IFVSTChlKTtyZXR1cm4hIXQuc2VhcmNoUGFyYW1zLmdldChXKSYmdC5zZWFyY2hQYXJhbXMuZ2V0KEcpIT09T319LHtrZXk6ImNhblNlbmRQcm9tcHROb25lUmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKEYpO3JldHVybiEoZT9KU09OLnBhcnNlKGUpOm51bGwpfX0se2tleToic2V0UHJvbXB0Tm9uZVJlcXVlc3RTZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKEYsSlNPTi5zdHJpbmdpZnkoZSkpfX0se2tleToid2FpdFRpbGxQYWdlUmVkaXJlY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG49bnVsbCE9ZT9lOjNlMyx0Lm5leHQ9MyxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoZSwxZTMqbil9KSk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfX1dKSxlfSgpLGZyPVtdLGxyPVtdLGhyPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LHByPSExO2Z1bmN0aW9uIGRyKCl7cHI9ITA7Zm9yKHZhciBlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIix0PTAscj1lLmxlbmd0aDt0PHI7Kyt0KWZyW3RdPWVbdF0sbHJbZS5jaGFyQ29kZUF0KHQpXT10O2xyWyItIi5jaGFyQ29kZUF0KDApXT02MixsclsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gdnIoZSx0LHIpe2Zvcih2YXIgbixhLGk9W10sbz10O288cjtvKz0zKW49KGVbb108PDE2KSsoZVtvKzFdPDw4KStlW28rMl0saS5wdXNoKGZyWyhhPW4pPj4xOCY2M10rZnJbYT4+MTImNjNdK2ZyW2E+PjYmNjNdK2ZyWzYzJmFdKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBncihlKXt2YXIgdDtwcnx8ZHIoKTtmb3IodmFyIHI9ZS5sZW5ndGgsbj1yJTMsYT0iIixpPVtdLG89MTYzODMscz0wLHU9ci1uO3M8dTtzKz1vKWkucHVzaCh2cihlLHMscytvPnU/dTpzK28pKTtyZXR1cm4gMT09PW4/KHQ9ZVtyLTFdLGErPWZyW3Q+PjJdLGErPWZyW3Q8PDQmNjNdLGErPSI9PSIpOjI9PT1uJiYodD0oZVtyLTJdPDw4KStlW3ItMV0sYSs9ZnJbdD4+MTBdLGErPWZyW3Q+PjQmNjNdLGErPWZyW3Q8PDImNjNdLGErPSI9IiksaS5wdXNoKGEpLGkuam9pbigiIil9ZnVuY3Rpb24geXIoZSx0LHIsbixhKXt2YXIgaSxvLHM9OCphLW4tMSx1PSgxPDxzKS0xLGM9dT4+MSxmPS03LGw9cj9hLTE6MCxoPXI/LTE6MSxwPWVbdCtsXTtmb3IobCs9aCxpPXAmKDE8PC1mKS0xLHA+Pj0tZixmKz1zO2Y+MDtpPTI1NippK2VbdCtsXSxsKz1oLGYtPTgpO2ZvcihvPWkmKDE8PC1mKS0xLGk+Pj0tZixmKz1uO2Y+MDtvPTI1NipvK2VbdCtsXSxsKz1oLGYtPTgpO2lmKDA9PT1pKWk9MS1jO2Vsc2V7aWYoaT09PXUpcmV0dXJuIG8/TmFOOjEvMCoocD8tMToxKTtvKz1NYXRoLnBvdygyLG4pLGktPWN9cmV0dXJuKHA/LTE6MSkqbypNYXRoLnBvdygyLGktbil9ZnVuY3Rpb24gbXIoZSx0LHIsbixhLGkpe3ZhciBvLHMsdSxjPTgqaS1hLTEsZj0oMTw8YyktMSxsPWY+PjEsaD0yMz09PWE/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLHA9bj8wOmktMSxkPW4/MTotMSx2PXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NYXRoLmFicyh0KSxpc05hTih0KXx8dD09PTEvMD8ocz1pc05hTih0KT8xOjAsbz1mKToobz1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSx0Kih1PU1hdGgucG93KDIsLW8pKTwxJiYoby0tLHUqPTIpLCh0Kz1vK2w+PTE/aC91OmgqTWF0aC5wb3coMiwxLWwpKSp1Pj0yJiYobysrLHUvPTIpLG8rbD49Zj8ocz0wLG89Zik6bytsPj0xPyhzPSh0KnUtMSkqTWF0aC5wb3coMixhKSxvKz1sKToocz10Kk1hdGgucG93KDIsbC0xKSpNYXRoLnBvdygyLGEpLG89MCkpO2E+PTg7ZVtyK3BdPTI1NSZzLHArPWQscy89MjU2LGEtPTgpO2ZvcihvPW88PGF8cyxjKz1hO2M+MDtlW3IrcF09MjU1Jm8scCs9ZCxvLz0yNTYsYy09OCk7ZVtyK3AtZF18PTEyOCp2fXZhciBicj17fS50b1N0cmluZyx3cj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1ici5jYWxsKGUpfTtTci5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMD09PXllLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHllLlRZUEVEX0FSUkFZX1NVUFBPUlQ7dmFyIGtyPXhyKCk7ZnVuY3Rpb24geHIoKXtyZXR1cm4gU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gX3IoZSx0KXtpZih4cigpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9bmV3IFVpbnQ4QXJyYXkodCkpLl9fcHJvdG9fXz1Tci5wcm90b3R5cGU6KG51bGw9PT1lJiYoZT1uZXcgU3IodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gU3IoZSx0LHIpe2lmKCEoU3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIFNyKSlyZXR1cm4gbmV3IFNyKGUsdCxyKTtpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIklmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7cmV0dXJuIEFyKHRoaXMsZSl9cmV0dXJuIEVyKHRoaXMsZSx0LHIpfWZ1bmN0aW9uIEVyKGUsdCxyLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKHQuYnl0ZUxlbmd0aCxyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7dD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbik7U3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT10KS5fX3Byb3RvX189U3IucHJvdG90eXBlOmU9UnIoZSx0KTtyZXR1cm4gZX0oZSx0LHIsbik6InN0cmluZyI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09dHlwZW9mIHImJiIiIT09cnx8KHI9InV0ZjgiKTtpZighU3IuaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTt2YXIgbj0wfERyKHQsciksYT0oZT1fcihlLG4pKS53cml0ZSh0LHIpO2EhPT1uJiYoZT1lLnNsaWNlKDAsYSkpO3JldHVybiBlfShlLHQscik6ZnVuY3Rpb24oZSx0KXtpZihQcih0KSl7dmFyIHI9MHxDcih0Lmxlbmd0aCk7cmV0dXJuIDA9PT0oZT1fcihlLHIpKS5sZW5ndGh8fHQuY29weShlLDAsMCxyKSxlfWlmKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gdClyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQubGVuZ3RofHwobj10Lmxlbmd0aCkhPW4/X3IoZSwwKTpScihlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZ3cih0LmRhdGEpKXJldHVybiBScihlLHQuZGF0YSl9dmFyIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfShlLHQpfWZ1bmN0aW9uIFRyKGUpe2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJyl9ZnVuY3Rpb24gQXIoZSx0KXtpZihUcih0KSxlPV9yKGUsdDwwPzA6MHxDcih0KSksIVNyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKHZhciByPTA7cjx0OysrcillW3JdPTA7cmV0dXJuIGV9ZnVuY3Rpb24gUnIoZSx0KXt2YXIgcj10Lmxlbmd0aDwwPzA6MHxDcih0Lmxlbmd0aCk7ZT1fcihlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gQ3IoZSl7aWYoZT49eHIoKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIreHIoKS50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfGV9ZnVuY3Rpb24gUHIoZSl7cmV0dXJuIShudWxsPT1lfHwhZS5faXNCdWZmZXIpfWZ1bmN0aW9uIERyKGUsdCl7aWYoUHIoZSkpcmV0dXJuIGUubGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcmJihBcnJheUJ1ZmZlci5pc1ZpZXcoZSl8fGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpcmV0dXJuIGUuYnl0ZUxlbmd0aDsic3RyaW5nIiE9dHlwZW9mIGUmJihlPSIiK2UpO3ZhciByPWUubGVuZ3RoO2lmKDA9PT1yKXJldHVybiAwO2Zvcih2YXIgbj0hMTs7KXN3aXRjaCh0KXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiByO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSB2b2lkIDA6cmV0dXJuIGFuKGUpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqcjtjYXNlImhleCI6cmV0dXJuIHI+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gb24oZSkubGVuZ3RoO2RlZmF1bHQ6aWYobilyZXR1cm4gYW4oZSkubGVuZ3RoO3Q9KCIiK3QpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gT3IoZSx0LHIpe3ZhciBuPSExO2lmKCh2b2lkIDA9PT10fHx0PDApJiYodD0wKSx0PnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuIiI7aWYoKHI+Pj49MCk8PSh0Pj4+PTApKXJldHVybiIiO2ZvcihlfHwoZT0idXRmOCIpOzspc3dpdGNoKGUpe2Nhc2UiaGV4IjpyZXR1cm4gWXIodGhpcyx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIEJyKHRoaXMsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4gV3IodGhpcyx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHpyKHRoaXMsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIEpyKHRoaXMsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEdyKHRoaXMsdCxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPShlKyIiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIElyKGUsdCxyKXt2YXIgbj1lW3RdO2VbdF09ZVtyXSxlW3JdPW59ZnVuY3Rpb24gTHIoZSx0LHIsbixhKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuLTE7aWYoInN0cmluZyI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxyPStyLGlzTmFOKHIpJiYocj1hPzA6ZS5sZW5ndGgtMSkscjwwJiYocj1lLmxlbmd0aCtyKSxyPj1lLmxlbmd0aCl7aWYoYSlyZXR1cm4tMTtyPWUubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFhKXJldHVybi0xO3I9MH1pZigic3RyaW5nIj09dHlwZW9mIHQmJih0PVNyLmZyb20odCxuKSksUHIodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTpVcihlLHQscixuLGEpO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2E/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxyKTpVcihlLFt0XSxyLG4sYSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gVXIoZSx0LHIsbixhKXt2YXIgaSxvPTEscz1lLmxlbmd0aCx1PXQubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJigidWNzMiI9PT0obj1TdHJpbmcobikudG9Mb3dlckNhc2UoKSl8fCJ1Y3MtMiI9PT1ufHwidXRmMTZsZSI9PT1ufHwidXRmLTE2bGUiPT09bikpe2lmKGUubGVuZ3RoPDJ8fHQubGVuZ3RoPDIpcmV0dXJuLTE7bz0yLHMvPTIsdS89MixyLz0yfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gMT09PW8/ZVt0XTplLnJlYWRVSW50MTZCRSh0Km8pfWlmKGEpe3ZhciBmPS0xO2ZvcihpPXI7aTxzO2krKylpZihjKGUsaSk9PT1jKHQsLTE9PT1mPzA6aS1mKSl7aWYoLTE9PT1mJiYoZj1pKSxpLWYrMT09PXUpcmV0dXJuIGYqb31lbHNlLTEhPT1mJiYoaS09aS1mKSxmPS0xfWVsc2UgZm9yKHIrdT5zJiYocj1zLXUpLGk9cjtpPj0wO2ktLSl7Zm9yKHZhciBsPSEwLGg9MDtoPHU7aCsrKWlmKGMoZSxpK2gpIT09Yyh0LGgpKXtsPSExO2JyZWFrfWlmKGwpcmV0dXJuIGl9cmV0dXJuLTF9ZnVuY3Rpb24gSHIoZSx0LHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGE9ZS5sZW5ndGgtcjtuPyhuPU51bWJlcihuKSk+YSYmKG49YSk6bj1hO3ZhciBpPXQubGVuZ3RoO2lmKGklMiE9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtuPmkvMiYmKG49aS8yKTtmb3IodmFyIG89MDtvPG47KytvKXt2YXIgcz1wYXJzZUludCh0LnN1YnN0cigyKm8sMiksMTYpO2lmKGlzTmFOKHMpKXJldHVybiBvO2VbcitvXT1zfXJldHVybiBvfWZ1bmN0aW9uIE1yKGUsdCxyLG4pe3JldHVybiBzbihhbih0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBqcihlLHQscixuKXtyZXR1cm4gc24oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChyKSk7cmV0dXJuIHR9KHQpLGUscixuKX1mdW5jdGlvbiBOcihlLHQscixuKXtyZXR1cm4ganIoZSx0LHIsbil9ZnVuY3Rpb24gcXIoZSx0LHIsbil7cmV0dXJuIHNuKG9uKHQpLGUscixuKX1mdW5jdGlvbiBLcihlLHQscixuKXtyZXR1cm4gc24oZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbixhLGk9W10sbz0wO288ZS5sZW5ndGgmJiEoKHQtPTIpPDApOysrbyluPShyPWUuY2hhckNvZGVBdChvKSk+PjgsYT1yJTI1NixpLnB1c2goYSksaS5wdXNoKG4pO3JldHVybiBpfSh0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBKcihlLHQscil7cmV0dXJuIDA9PT10JiZyPT09ZS5sZW5ndGg/Z3IoZSk6Z3IoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiBCcihlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG49W10sYT10O2E8cjspe3ZhciBpLG8scyx1LGM9ZVthXSxmPW51bGwsbD1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKGErbDw9cilzd2l0Y2gobCl7Y2FzZSAxOmM8MTI4JiYoZj1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPWVbYSsxXSkpJiYodT0oMzEmYyk8PDZ8NjMmaSk+MTI3JiYoZj11KTticmVhaztjYXNlIDM6aT1lW2ErMV0sbz1lW2ErMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJih1PSgxNSZjKTw8MTJ8KDYzJmkpPDw2fDYzJm8pPjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGY9dSk7YnJlYWs7Y2FzZSA0Omk9ZVthKzFdLG89ZVthKzJdLHM9ZVthKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImcykmJih1PSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmbyk8PDZ8NjMmcyk+NjU1MzUmJnU8MTExNDExMiYmKGY9dSl9bnVsbD09PWY/KGY9NjU1MzMsbD0xKTpmPjY1NTM1JiYoZi09NjU1MzYsbi5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfDEwMjMmZiksbi5wdXNoKGYpLGErPWx9cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PUZyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz1GcikpO3JldHVybiByfShuKX1Tci5wb29sU2l6ZT04MTkyLFNyLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz1Tci5wcm90b3R5cGUsZX0sU3IuZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEVyKG51bGwsZSx0LHIpfSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYoU3IucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxTci5fX3Byb3RvX189VWludDhBcnJheSksU3IuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gVHIodCksdDw9MD9fcihlLHQpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBuP19yKGUsdCkuZmlsbChyLG4pOl9yKGUsdCkuZmlsbChyKTpfcihlLHQpfShudWxsLGUsdCxyKX0sU3IuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFyKG51bGwsZSl9LFNyLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gQXIobnVsbCxlKX0sU3IuaXNCdWZmZXI9dW4sU3IuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFQcihlKXx8IVByKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCxhPTAsaT1NYXRoLm1pbihyLG4pO2E8aTsrK2EpaWYoZVthXSE9PXRbYV0pe3I9ZVthXSxuPXRbYV07YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSxTci5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxTci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighd3IoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gU3IuYWxsb2MoMCk7dmFyIHI7aWYodm9pZCAwPT09dClmb3IodD0wLHI9MDtyPGUubGVuZ3RoOysrcil0Kz1lW3JdLmxlbmd0aDt2YXIgbj1Tci5hbGxvY1Vuc2FmZSh0KSxhPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighUHIoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLGEpLGErPWkubGVuZ3RofXJldHVybiBufSxTci5ieXRlTGVuZ3RoPURyLFNyLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsU3IucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilJcih0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sU3IucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NClJcih0aGlzLHQsdCszKSxJcih0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxTci5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz04KUlyKHRoaXMsdCx0KzcpLElyKHRoaXMsdCsxLHQrNiksSXIodGhpcyx0KzIsdCs1KSxJcih0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxTci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9Ccih0aGlzLDAsZSk6T3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxTci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFQcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09U3IuY29tcGFyZSh0aGlzLGUpfSxTci5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxTci5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQscixuLGEpe2lmKCFQcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1hJiYoYT10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fGE+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKG4+PWEmJnQ+PXIpcmV0dXJuIDA7aWYobj49YSlyZXR1cm4tMTtpZih0Pj1yKXJldHVybiAxO2lmKHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgaT0oYT4+Pj0wKS0obj4+Pj0wKSxvPShyPj4+PTApLSh0Pj4+PTApLHM9TWF0aC5taW4oaSxvKSx1PXRoaXMuc2xpY2UobixhKSxjPWUuc2xpY2UodCxyKSxmPTA7ZjxzOysrZilpZih1W2ZdIT09Y1tmXSl7aT11W2ZdLG89Y1tmXTticmVha31yZXR1cm4gaTxvPy0xOm88aT8xOjB9LFNyLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoZSx0LHIpfSxTci5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIExyKHRoaXMsZSx0LHIsITApfSxTci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMcih0aGlzLGUsdCxyLCExKX0sU3IucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMD09PXQpbj0idXRmOCIscj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBhPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+YSkmJihyPWEpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIGk9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBIcih0aGlzLGUsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBNcih0aGlzLGUsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4ganIodGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gTnIodGhpcyxlLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBxcih0aGlzLGUsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEtyKHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksaT0hMH19LFNyLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBGcj00MDk2O2Z1bmN0aW9uIFdyKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24genIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbYV0pO3JldHVybiBufWZ1bmN0aW9uIFlyKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIGE9IiIsaT10O2k8cjsrK2kpYSs9bm4oZVtpXSk7cmV0dXJuIGF9ZnVuY3Rpb24gR3IoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksYT0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gYX1mdW5jdGlvbiBWcihlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gWHIoZSx0LHIsbixhLGkpe2lmKCFQcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5hfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gJHIoZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgYT0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTthPGk7KythKWVbcithXT0odCYyNTU8PDgqKG4/YToxLWEpKT4+PjgqKG4/YToxLWEpfWZ1bmN0aW9uIFpyKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgYT0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTthPGk7KythKWVbcithXT10Pj4+OCoobj9hOjMtYSkmMjU1fWZ1bmN0aW9uIFFyKGUsdCxyLG4sYSxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gZW4oZSx0LHIsbixhKXtyZXR1cm4gYXx8UXIoZSwwLHIsNCksbXIoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gdG4oZSx0LHIsbixhKXtyZXR1cm4gYXx8UXIoZSwwLHIsOCksbXIoZSx0LHIsbiw1Miw4KSxyKzh9U3IucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aDtpZigoZT1+fmUpPDA/KGUrPW4pPDAmJihlPTApOmU+biYmKGU9biksKHQ9dm9pZCAwPT09dD9uOn5+dCk8MD8odCs9bik8MCYmKHQ9MCk6dD5uJiYodD1uKSx0PGUmJih0PWUpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQpKHI9dGhpcy5zdWJhcnJheShlLHQpKS5fX3Byb3RvX189U3IucHJvdG90eXBlO2Vsc2V7dmFyIGE9dC1lO3I9bmV3IFNyKGEsdm9pZCAwKTtmb3IodmFyIGk9MDtpPGE7KytpKXJbaV09dGhpc1tpK2VdfXJldHVybiByfSxTci5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0sYT0xLGk9MDsrK2k8dCYmKGEqPTI1Nik7KW4rPXRoaXNbZStpXSphO3JldHVybiBufSxTci5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZSstLXRdLGE9MTt0PjAmJihhKj0yNTYpOyluKz10aGlzW2UrLS10XSphO3JldHVybiBufSxTci5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0sU3IucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxTci5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXTw8OHx0aGlzW2UrMV19LFNyLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxTci5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sU3IucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0sYT0xLGk9MDsrK2k8dCYmKGEqPTI1Nik7KW4rPXRoaXNbZStpXSphO3JldHVybiBuPj0oYSo9MTI4KSYmKG4tPU1hdGgucG93KDIsOCp0KSksbn0sU3IucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fFZyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXQsYT0xLGk9dGhpc1tlKy0tbl07bj4wJiYoYSo9MjU2KTspaSs9dGhpc1tlKy0tbl0qYTtyZXR1cm4gaT49KGEqPTEyOCkmJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LFNyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSxTci5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXt0fHxWcihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZV18dGhpc1tlKzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxTci5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxWcihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxTci5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LFNyLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDI0fHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXX0sU3IucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsNCx0aGlzLmxlbmd0aCkseXIodGhpcyxlLCEwLDIzLDQpfSxTci5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITEsMjMsNCl9LFNyLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw4LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITAsNTIsOCl9LFNyLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw4LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITEsNTIsOCl9LFNyLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fFhyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9MSxpPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihhKj0yNTYpOyl0aGlzW3QraV09ZS9hJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxYcih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBhPXItMSxpPTE7Zm9yKHRoaXNbdCthXT0yNTUmZTstLWE+PTAmJihpKj0yNTYpOyl0aGlzW3QrYV09ZS9pJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwxLDI1NSwwKSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSx0aGlzW3RdPTI1NSZlLHQrMX0sU3IucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiw2NTUzNSwwKSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6JHIodGhpcyxlLHQsITApLHQrMn0sU3IucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiw2NTUzNSwwKSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6JHIodGhpcyxlLHQsITEpLHQrMn0sU3IucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6WnIodGhpcyxlLHQsITApLHQrNH0sU3IucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6WnIodGhpcyxlLHQsITEpLHQrNH0sU3IucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtYcih0aGlzLGUsdCxyLGEtMSwtYSl9dmFyIGk9MCxvPTEscz0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYobyo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpLTFdJiYocz0xKSx0aGlzW3QraV09KGUvbz4+MCktcyYyNTU7cmV0dXJuIHQrcn0sU3IucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtYcih0aGlzLGUsdCxyLGEtMSwtYSl9dmFyIGk9ci0xLG89MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihvKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9vPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDEsMTI3LC0xMjgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LFNyLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTokcih0aGlzLGUsdCwhMCksdCsyfSxTci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6JHIodGhpcyxlLHQsITEpLHQrMn0sU3IucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6WnIodGhpcyxlLHQsITApLHQrNH0sU3IucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6WnIodGhpcyxlLHQsITEpLHQrNH0sU3IucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVuKHRoaXMsZSx0LCEwLHIpfSxTci5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZW4odGhpcyxlLHQsITEscil9LFNyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdG4odGhpcyxlLHQsITAscil9LFNyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdG4odGhpcyxlLHQsITEscil9LFNyLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIGEsaT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihhPWktMTthPj0wOy0tYSllW2ErdF09dGhpc1thK3JdO2Vsc2UgaWYoaTwxZTN8fCFTci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihhPTA7YTxpOysrYSllW2ErdF09dGhpc1thK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHIscitpKSx0KTtyZXR1cm4gaX0sU3IucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQ/KG49dCx0PTAscj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGE9ZS5jaGFyQ29kZUF0KDApO2E8MjU2JiYoZT1hKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIVNyLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBvPVByKGUpP2U6YW4obmV3IFNyKGUsbikudG9TdHJpbmcoKSkscz1vLmxlbmd0aDtmb3IoaT0wO2k8ci10OysraSl0aGlzW2krdF09b1tpJXNdfXJldHVybiB0aGlzfTt2YXIgcm49L1teK1wvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gbm4oZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGFuKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGE9bnVsbCxpPVtdLG89MDtvPG47KytvKXtpZigocj1lLmNoYXJDb2RlQXQobykpPjU1Mjk1JiZyPDU3MzQ0KXtpZighYSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKG8rMT09PW4peyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1hPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpLGE9cjtjb250aW51ZX1yPTY1NTM2KyhhLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGEmJih0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtpZihhPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2kucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7aS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2kucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7aS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiBvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaSxvO3ByfHxkcigpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxvPW5ldyBocigzKnMvNC1pKSxuPWk+MD9zLTQ6czt2YXIgdT0wO2Zvcih0PTAscj0wO3Q8bjt0Kz00LHIrPTMpYT1scltlLmNoYXJDb2RlQXQodCldPDwxOHxscltlLmNoYXJDb2RlQXQodCsxKV08PDEyfGxyW2UuY2hhckNvZGVBdCh0KzIpXTw8NnxscltlLmNoYXJDb2RlQXQodCszKV0sb1t1KytdPWE+PjE2JjI1NSxvW3UrK109YT4+OCYyNTUsb1t1KytdPTI1NSZhO3JldHVybiAyPT09aT8oYT1scltlLmNoYXJDb2RlQXQodCldPDwyfGxyW2UuY2hhckNvZGVBdCh0KzEpXT4+NCxvW3UrK109MjU1JmEpOjE9PT1pJiYoYT1scltlLmNoYXJDb2RlQXQodCldPDwxMHxscltlLmNoYXJDb2RlQXQodCsxKV08PDR8bHJbZS5jaGFyQ29kZUF0KHQrMildPj4yLG9bdSsrXT1hPj44JjI1NSxvW3UrK109MjU1JmEpLG99KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2Uocm4sIiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO2UubGVuZ3RoJTQhPTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIHNuKGUsdCxyLG4pe2Zvcih2YXIgYT0wO2E8biYmIShhK3I+PXQubGVuZ3RofHxhPj1lLmxlbmd0aCk7KythKXRbYStyXT1lW2FdO3JldHVybiBhfWZ1bmN0aW9uIHVuKGUpe3JldHVybiBudWxsIT1lJiYoISFlLl9pc0J1ZmZlcnx8Y24oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlYWRGbG9hdExFJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zbGljZSYmY24oZS5zbGljZSgwLDApKX0oZSkpfWZ1bmN0aW9uIGNuKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIGZuPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJ1ZmZlcjpTcixJTlNQRUNUX01BWF9CWVRFUzo1MCxTbG93QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybitlIT1lJiYoZT0wKSxTci5hbGxvYygrZSl9LGlzQnVmZmVyOnVuLGtNYXhMZW5ndGg6a3J9KSxsbj17ZXhwb3J0czp7fX0saG49e30scG49e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHBuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxwbi5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLHI9dCU0O2lmKCFyKXJldHVybiBlO3ZhciBuPXQsYT00LXIsaT10K2Esbz1Tci5hbGxvYyhpKTtmb3Ioby53cml0ZShlKTthLS07KW8ud3JpdGUoIj0iLG4rKyk7cmV0dXJuIG8udG9TdHJpbmcoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGhuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZG49cG47ZnVuY3Rpb24gdm4oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxTci5pc0J1ZmZlcihlKT95bihlLnRvU3RyaW5nKCJiYXNlNjQiKSk6eW4oU3IuZnJvbShlLHQpLnRvU3RyaW5nKCJiYXNlNjQiKSl9ZnVuY3Rpb24gZ24oZSl7cmV0dXJuIGU9ZS50b1N0cmluZygpLGRuLmRlZmF1bHQoZSkucmVwbGFjZSgvXC0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpfWZ1bmN0aW9uIHluKGUpe3JldHVybiBlLnJlcGxhY2UoLz0vZywiIikucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKX12YXIgbW4sYm49dm47Ym4uZW5jb2RlPXZuLGJuLmRlY29kZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFNyLmZyb20oZ24oZSksImJhc2U2NCIpLnRvU3RyaW5nKHQpfSxibi50b0Jhc2U2ND1nbixibi5mcm9tQmFzZTY0PXluLGJuLnRvQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKGduKGUpLCJiYXNlNjQiKX0saG4uZGVmYXVsdD1ibiwobW49bG4pLmV4cG9ydHM9aG4uZGVmYXVsdCxtbi5leHBvcnRzLmRlZmF1bHQ9bW4uZXhwb3J0czt2YXIgd249bG4uZXhwb3J0cyxrbj17ZXhwb3J0czp7fX07IWZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0LHIpe3ZhciBuPXt9OyFmdW5jdGlvbihlKXtlLl9fZXNNb2R1bGU9ITAsZS5kaWdlc3RMZW5ndGg9MzIsZS5ibG9ja1NpemU9NjQ7dmFyIHQ9bmV3IFVpbnQzMkFycmF5KFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKTtmdW5jdGlvbiByKGUscixuLGEsaSl7Zm9yKHZhciBvLHMsdSxjLGYsbCxoLHAsZCx2LGcseSxtO2k+PTY0Oyl7Zm9yKG89clswXSxzPXJbMV0sdT1yWzJdLGM9clszXSxmPXJbNF0sbD1yWzVdLGg9cls2XSxwPXJbN10sdj0wO3Y8MTY7disrKWc9YSs0KnYsZVt2XT0oMjU1Jm5bZ10pPDwyNHwoMjU1Jm5bZysxXSk8PDE2fCgyNTUmbltnKzJdKTw8OHwyNTUmbltnKzNdO2Zvcih2PTE2O3Y8NjQ7disrKXk9KChkPWVbdi0yXSk+Pj4xN3xkPDwxNSleKGQ+Pj4xOXxkPDwxMyleZD4+PjEwLG09KChkPWVbdi0xNV0pPj4+N3xkPDwyNSleKGQ+Pj4xOHxkPDwxNCleZD4+PjMsZVt2XT0oeStlW3YtN118MCkrKG0rZVt2LTE2XXwwKTtmb3Iodj0wO3Y8NjQ7disrKXk9KCgoZj4+PjZ8Zjw8MjYpXihmPj4+MTF8Zjw8MjEpXihmPj4+MjV8Zjw8NykpKyhmJmxefmYmaCl8MCkrKHArKHRbdl0rZVt2XXwwKXwwKXwwLG09KChvPj4+MnxvPDwzMCleKG8+Pj4xM3xvPDwxOSleKG8+Pj4yMnxvPDwxMCkpKyhvJnNebyZ1XnMmdSl8MCxwPWgsaD1sLGw9ZixmPWMreXwwLGM9dSx1PXMscz1vLG89eSttfDA7clswXSs9byxyWzFdKz1zLHJbMl0rPXUsclszXSs9YyxyWzRdKz1mLHJbNV0rPWwscls2XSs9aCxyWzddKz1wLGErPTY0LGktPTY0fXJldHVybiBhfXZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZGlnZXN0TGVuZ3RoPWUuZGlnZXN0TGVuZ3RoLHRoaXMuYmxvY2tTaXplPWUuYmxvY2tTaXplLHRoaXMuc3RhdGU9bmV3IEludDMyQXJyYXkoOCksdGhpcy50ZW1wPW5ldyBJbnQzMkFycmF5KDY0KSx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxMjgpLHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5yZXNldCgpfXJldHVybiB0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlWzBdPTE3NzkwMzM3MDMsdGhpcy5zdGF0ZVsxXT0zMTQ0MTM0Mjc3LHRoaXMuc3RhdGVbMl09MTAxMzkwNDI0Mix0aGlzLnN0YXRlWzNdPTI3NzM0ODA3NjIsdGhpcy5zdGF0ZVs0XT0xMzU5ODkzMTE5LHRoaXMuc3RhdGVbNV09MjYwMDgyMjkyNCx0aGlzLnN0YXRlWzZdPTUyODczNDYzNSx0aGlzLnN0YXRlWzddPTE1NDE0NTkyMjUsdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5idWZmZXIubGVuZ3RoO2UrKyl0aGlzLmJ1ZmZlcltlXT0wO2ZvcihlPTA7ZTx0aGlzLnRlbXAubGVuZ3RoO2UrKyl0aGlzLnRlbXBbZV09MDt0aGlzLnJlc2V0KCl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXQmJih0PWUubGVuZ3RoKSx0aGlzLmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiU0hBMjU2OiBjYW4ndCB1cGRhdGUgYmVjYXVzZSBoYXNoIHdhcyBmaW5pc2hlZC4iKTt2YXIgbj0wO2lmKHRoaXMuYnl0ZXNIYXNoZWQrPXQsdGhpcy5idWZmZXJMZW5ndGg+MCl7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw2NCYmdD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tOzY0PT09dGhpcy5idWZmZXJMZW5ndGgmJihyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsNjQpLHRoaXMuYnVmZmVyTGVuZ3RoPTApfWZvcih0Pj02NCYmKG49cih0aGlzLnRlbXAsdGhpcy5zdGF0ZSxlLG4sdCksdCU9NjQpO3Q+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmZpbmlzaGVkKXt2YXIgdD10aGlzLmJ5dGVzSGFzaGVkLG49dGhpcy5idWZmZXJMZW5ndGgsYT10LzUzNjg3MDkxMnwwLGk9dDw8MyxvPXQlNjQ8NTY/NjQ6MTI4O3RoaXMuYnVmZmVyW25dPTEyODtmb3IodmFyIHM9bisxO3M8by04O3MrKyl0aGlzLmJ1ZmZlcltzXT0wO3RoaXMuYnVmZmVyW28tOF09YT4+PjI0JjI1NSx0aGlzLmJ1ZmZlcltvLTddPWE+Pj4xNiYyNTUsdGhpcy5idWZmZXJbby02XT1hPj4+OCYyNTUsdGhpcy5idWZmZXJbby01XT1hPj4+MCYyNTUsdGhpcy5idWZmZXJbby00XT1pPj4+MjQmMjU1LHRoaXMuYnVmZmVyW28tM109aT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltvLTJdPWk+Pj44JjI1NSx0aGlzLmJ1ZmZlcltvLTFdPWk+Pj4wJjI1NSxyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsbyksdGhpcy5maW5pc2hlZD0hMH1mb3Iocz0wO3M8ODtzKyspZVs0KnMrMF09dGhpcy5zdGF0ZVtzXT4+PjI0JjI1NSxlWzQqcysxXT10aGlzLnN0YXRlW3NdPj4+MTYmMjU1LGVbNCpzKzJdPXRoaXMuc3RhdGVbc10+Pj44JjI1NSxlWzQqcyszXT10aGlzLnN0YXRlW3NdPj4+MCYyNTU7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sdC5wcm90b3R5cGUuX3NhdmVTdGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuc3RhdGUubGVuZ3RoO3QrKyllW3RdPXRoaXMuc3RhdGVbdF19LHQucHJvdG90eXBlLl9yZXN0b3JlU3RhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHRoaXMuc3RhdGUubGVuZ3RoO3IrKyl0aGlzLnN0YXRlW3JdPWVbcl07dGhpcy5ieXRlc0hhc2hlZD10LHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5idWZmZXJMZW5ndGg9MH0sdH0oKTtlLkhhc2g9bjt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5pbm5lcj1uZXcgbix0aGlzLm91dGVyPW5ldyBuLHRoaXMuYmxvY2tTaXplPXRoaXMuaW5uZXIuYmxvY2tTaXplLHRoaXMuZGlnZXN0TGVuZ3RoPXRoaXMuaW5uZXIuZGlnZXN0TGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KHRoaXMuYmxvY2tTaXplKTtpZihlLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSkobmV3IG4pLnVwZGF0ZShlKS5maW5pc2godCkuY2xlYW4oKTtlbHNlIGZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXRbcl09ZVtyXTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTU0O3RoaXMuaW5uZXIudXBkYXRlKHQpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49MTA2O3RoaXMub3V0ZXIudXBkYXRlKHQpLHRoaXMuaXN0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLm9zdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5pbm5lci5fc2F2ZVN0YXRlKHRoaXMuaXN0YXRlKSx0aGlzLm91dGVyLl9zYXZlU3RhdGUodGhpcy5vc3RhdGUpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT0wfXJldHVybiBlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlubmVyLl9yZXN0b3JlU3RhdGUodGhpcy5pc3RhdGUsdGhpcy5pbm5lci5ibG9ja1NpemUpLHRoaXMub3V0ZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLm9zdGF0ZSx0aGlzLm91dGVyLmJsb2NrU2l6ZSksdGhpc30sZS5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuaXN0YXRlLmxlbmd0aDtlKyspdGhpcy5vc3RhdGVbZV09dGhpcy5pc3RhdGVbZV09MDt0aGlzLmlubmVyLmNsZWFuKCksdGhpcy5vdXRlci5jbGVhbigpfSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKGUpLHRoaXN9LGUucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vdXRlci5maW5pc2hlZD90aGlzLm91dGVyLmZpbmlzaChlKToodGhpcy5pbm5lci5maW5pc2goZSksdGhpcy5vdXRlci51cGRhdGUoZSx0aGlzLmRpZ2VzdExlbmd0aCkuZmluaXNoKGUpKSx0aGlzfSxlLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LGV9KCk7ZnVuY3Rpb24gaShlKXt2YXIgdD0obmV3IG4pLnVwZGF0ZShlKSxyPXQuZGlnZXN0KCk7cmV0dXJuIHQuY2xlYW4oKSxyfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1uZXcgYShlKS51cGRhdGUodCksbj1yLmRpZ2VzdCgpO3JldHVybiByLmNsZWFuKCksbn1mdW5jdGlvbiBzKGUsdCxyLG4pe3ZhciBhPW5bMF07aWYoMD09PWEpdGhyb3cgbmV3IEVycm9yKCJoa2RmOiBjYW5ub3QgZXhwYW5kIG1vcmUiKTt0LnJlc2V0KCksYT4xJiZ0LnVwZGF0ZShlKSxyJiZ0LnVwZGF0ZShyKSx0LnVwZGF0ZShuKSx0LmZpbmlzaChlKSxuWzBdKyt9ZS5ITUFDPWEsZS5oYXNoPWksZS5kZWZhdWx0PWksZS5obWFjPW87dmFyIHU9bmV3IFVpbnQ4QXJyYXkoZS5kaWdlc3RMZW5ndGgpO2Z1bmN0aW9uIGMoZSx0LHIsbil7dm9pZCAwPT09dCYmKHQ9dSksdm9pZCAwPT09biYmKG49MzIpO2Zvcih2YXIgaT1uZXcgVWludDhBcnJheShbMV0pLGM9byh0LGUpLGY9bmV3IGEoYyksbD1uZXcgVWludDhBcnJheShmLmRpZ2VzdExlbmd0aCksaD1sLmxlbmd0aCxwPW5ldyBVaW50OEFycmF5KG4pLGQ9MDtkPG47ZCsrKWg9PT1sLmxlbmd0aCYmKHMobCxmLHIsaSksaD0wKSxwW2RdPWxbaCsrXTtyZXR1cm4gZi5jbGVhbigpLGwuZmlsbCgwKSxpLmZpbGwoMCkscH1mdW5jdGlvbiBmKGUsdCxyLG4pe2Zvcih2YXIgaT1uZXcgYShlKSxvPWkuZGlnZXN0TGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoNCksdT1uZXcgVWludDhBcnJheShvKSxjPW5ldyBVaW50OEFycmF5KG8pLGY9bmV3IFVpbnQ4QXJyYXkobiksbD0wO2wqbzxuO2wrKyl7dmFyIGg9bCsxO3NbMF09aD4+PjI0JjI1NSxzWzFdPWg+Pj4xNiYyNTUsc1syXT1oPj4+OCYyNTUsc1szXT1oPj4+MCYyNTUsaS5yZXNldCgpLGkudXBkYXRlKHQpLGkudXBkYXRlKHMpLGkuZmluaXNoKGMpO2Zvcih2YXIgcD0wO3A8bztwKyspdVtwXT1jW3BdO2ZvcihwPTI7cDw9cjtwKyspe2kucmVzZXQoKSxpLnVwZGF0ZShjKS5maW5pc2goYyk7Zm9yKHZhciBkPTA7ZDxvO2QrKyl1W2RdXj1jW2RdfWZvcihwPTA7cDxvJiZsKm8rcDxuO3ArKylmW2wqbytwXT11W3BdfWZvcihsPTA7bDxvO2wrKyl1W2xdPWNbbF09MDtmb3IobD0wO2w8NDtsKyspc1tsXT0wO3JldHVybiBpLmNsZWFuKCksZn1lLmhrZGY9YyxlLnBia2RmMj1mfShuKTt2YXIgYT1uLmRlZmF1bHQ7Zm9yKHZhciBpIGluIG4pYVtpXT1uW2ldO2UuZXhwb3J0cz1hfSgpfShrbik7dmFyIHhuPSQoa24uZXhwb3J0cyksX249Y3J5cHRvLFNuPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgQ3J5cHRvS2V5fSxFbj1uZXcgVGV4dEVuY29kZXIsVG49bmV3IFRleHREZWNvZGVyO2Z1bmN0aW9uIEFuKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG49dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5sZW5ndGh9KSwwKSxhPW5ldyBVaW50OEFycmF5KG4pLGk9MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXthLnNldChlLGkpLGkrPWUubGVuZ3RofSkpLGF9dmFyIFJuPWZ1bmN0aW9uKGUpe3ZhciB0PWU7dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJih0PVRuLmRlY29kZSh0KSksdD10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLnJlcGxhY2UoL1xzL2csIiIpO3RyeXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWF0b2IoZSkscj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKXJbbl09dC5jaGFyQ29kZUF0KG4pO3JldHVybiByfSh0KX1jYXRjaChlKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgaW5wdXQgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuIil9fSxDbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pPU0VfR0VORVJJQyIsbi5uYW1lPW4uY29uc3RydWN0b3IubmFtZSxudWxsPT09KGE9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpfHx2b2lkIDA9PT1hfHxhLmNhbGwoRXJyb3IsZyhuKSxuLmNvbnN0cnVjdG9yKSxufXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0dFTkVSSUMifX1dKSxyfSh2KEVycm9yKSksUG49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCIsbi5jbGFpbT1hLG4ucmVhc29uPWksbn1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIn19XSkscn0oQ24pLERuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InVuc3BlY2lmaWVkIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToidW5zcGVjaWZpZWQiO3JldHVybiBvKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KV1RfRVhQSVJFRCIsbi5jbGFpbT1hLG4ucmVhc29uPWksbn1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0VYUElSRUQifX1dKSxyfShDbiksT249ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQifX1dKSxyfShDbiksSW49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX05PVF9TVVBQT1JURUQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCJ9fV0pLHJ9KENuKSxMbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19JTlZBTElEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfSU5WQUxJRCJ9fV0pLHJ9KENuKSxVbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9JTlZBTElEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfSU5WQUxJRCJ9fV0pLHJ9KENuKSxIbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfSU5WQUxJRCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19JTlZBTElEIn19XSkscn0oQ24pLE1uPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19OT19NQVRDSElOR19LRVkiLGUubWVzc2FnZT0ibm8gYXBwbGljYWJsZSBrZXkgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTk9fTUFUQ0hJTkdfS0VZIn19XSkscn0oQ24pLGpuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIixlLm1lc3NhZ2U9Im11bHRpcGxlIG1hdGNoaW5nIGtleXMgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTVVMVElQTEVfTUFUQ0hJTkdfS0VZUyJ9fV0pLHJ9KENuKSxObj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCIsZS5tZXNzYWdlPSJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIn19XSkscn0oQ24pO2Z1bmN0aW9uIHFuKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFdlYlNvY2tldFBhaXJ9ZnVuY3Rpb24gS24oKXt0cnl7cmV0dXJuIHZvaWQgMCE9PUplLnZlcnNpb25zLm5vZGV9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIEpuKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiYWxnb3JpdGhtLm5hbWUiO3JldHVybiBuZXcgVHlwZUVycm9yKCJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgaXRzICIuY29uY2F0KHQsIiBtdXN0IGJlICIpLmNvbmNhdChlKSl9ZnVuY3Rpb24gQm4oZSx0KXtyZXR1cm4gZS5uYW1lPT09dH1mdW5jdGlvbiBGbihlKXtyZXR1cm4gcGFyc2VJbnQoZS5uYW1lLnNsaWNlKDQpLDEwKX1mdW5jdGlvbiBXbihlKXtzd2l0Y2goZSl7Y2FzZSJFUzI1NiI6cmV0dXJuIlAtMjU2IjtjYXNlIkVTMzg0IjpyZXR1cm4iUC0zODQiO2Nhc2UiRVM1MTIiOnJldHVybiJQLTUyMSI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVhY2hhYmxlIil9fWZ1bmN0aW9uIHpuKGUsdCl7aWYodC5sZW5ndGgmJiF0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiBlLnVzYWdlcy5pbmNsdWRlcyh0KX0pKSl7dmFyIHI9IkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgdXNhZ2VzIG11c3QgaW5jbHVkZSAiO2lmKHQubGVuZ3RoPjIpe3ZhciBuPXQucG9wKCk7cis9Im9uZSBvZiAiLmNvbmNhdCh0LmpvaW4oIiwgIiksIiwgb3IgIikuY29uY2F0KG4sIi4iKX1lbHNlIDI9PT10Lmxlbmd0aD9yKz0ib25lIG9mICIuY29uY2F0KHRbMF0sIiBvciAiKS5jb25jYXQodFsxXSwiLiIpOnIrPSIiLmNvbmNhdCh0WzBdLCIuIik7dGhyb3cgbmV3IFR5cGVFcnJvcihyKX19dmFyIFluPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iS2V5IG11c3QgYmUgIixyPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKylhW2ktMV09YXJndW1lbnRzW2ldO2lmKGEubGVuZ3RoPjIpe3ZhciBvPWEucG9wKCk7dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGEuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobywiLiIpfWVsc2UgMj09PWEubGVuZ3RoP3QrPSJvbmUgb2YgdHlwZSAiLmNvbmNhdChhWzBdLCIgb3IgIikuY29uY2F0KGFbMV0sIi4iKTp0Kz0ib2YgdHlwZSAiLmNvbmNhdChhWzBdLCIuIik7cmV0dXJuIG51bGw9PWU/dCs9IiBSZWNlaXZlZCAiLmNvbmNhdChlKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5uYW1lP3QrPSIgUmVjZWl2ZWQgZnVuY3Rpb24gIi5jb25jYXQoZS5uYW1lKToib2JqZWN0Ij09PW4oZSkmJm51bGwhPWUmJmUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZSYmKHQrPSIgUmVjZWl2ZWQgYW4gaW5zdGFuY2Ugb2YgIi5jb25jYXQoZS5jb25zdHJ1Y3Rvci5uYW1lKSksdH0sR249ZnVuY3Rpb24oZSl7cmV0dXJuIFNuKGUpfSxWbj1bIkNyeXB0b0tleSJdLFhuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG4sYT10LmZpbHRlcihCb29sZWFuKTtpZigwPT09YS5sZW5ndGh8fDE9PT1hLmxlbmd0aClyZXR1cm4hMDt2YXIgaSxvPV8oYSk7dHJ5e2ZvcihvLnMoKTshKGk9by5uKCkpLmRvbmU7KXt2YXIgcz1pLnZhbHVlLHU9T2JqZWN0LmtleXMocyk7aWYobiYmMCE9PW4uc2l6ZSlmb3IodmFyIGM9MCxmPXU7YzxmLmxlbmd0aDtjKyspe3ZhciBsPWZbY107aWYobi5oYXMobCkpcmV0dXJuITE7bi5hZGQobCl9ZWxzZSBuPW5ldyBTZXQodSl9fWNhdGNoKGUpe28uZShlKX1maW5hbGx5e28uZigpfXJldHVybiEwfTtmdW5jdGlvbiAkbihlKXtpZigib2JqZWN0IiE9PW4odD1lKXx8bnVsbD09PXR8fCJbb2JqZWN0IE9iamVjdF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiExO3ZhciB0O2lmKG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpcmV0dXJuITA7Zm9yKHZhciByPWU7bnVsbCE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTspcj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yocik7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PXJ9dmFyIFpuPWZ1bmN0aW9uKGUsdCl7aWYoZS5zdGFydHNXaXRoKCJSUyIpfHxlLnN0YXJ0c1dpdGgoIlBTIikpe3ZhciByPXQuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiByfHxyPDIwNDgpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIGtleSBtb2R1bHVzTGVuZ3RoIHRvIGJlIDIwNDggYml0cyBvciBsYXJnZXIiKSl9fTtmdW5jdGlvbiBRbihlKXt2YXIgdCxyO3N3aXRjaChlLmt0eSl7Y2FzZSJvY3QiOnN3aXRjaChlLmFsZyl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6dD17bmFtZToiSE1BQyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9WyJzaWduIiwidmVyaWZ5Il07YnJlYWs7Y2FzZSJBMTI4Q0JDLUhTMjU2IjpjYXNlIkExOTJDQkMtSFMzODQiOmNhc2UiQTI1NkNCQy1IUzUxMiI6dGhyb3cgbmV3IEluKCIiLmNvbmNhdChlLmFsZywiIGtleXMgY2Fubm90IGJlIGltcG9ydGVkIGFzIENyeXB0b0tleSBpbnN0YW5jZXMiKSk7Y2FzZSJBMTI4R0NNIjpjYXNlIkExOTJHQ00iOmNhc2UiQTI1NkdDTSI6Y2FzZSJBMTI4R0NNS1ciOmNhc2UiQTE5MkdDTUtXIjpjYXNlIkEyNTZHQ01LVyI6dD17bmFtZToiQUVTLUdDTSJ9LHI9WyJlbmNyeXB0IiwiZGVjcnlwdCJdO2JyZWFrO2Nhc2UiQTEyOEtXIjpjYXNlIkExOTJLVyI6Y2FzZSJBMjU2S1ciOnQ9e25hbWU6IkFFUy1LVyJ9LHI9WyJ3cmFwS2V5IiwidW53cmFwS2V5Il07YnJlYWs7Y2FzZSJQQkVTMi1IUzI1NitBMTI4S1ciOmNhc2UiUEJFUzItSFMzODQrQTE5MktXIjpjYXNlIlBCRVMyLUhTNTEyK0EyNTZLVyI6dD17bmFtZToiUEJLREYyIn0scj1bImRlcml2ZUJpdHMiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBJbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJSU0EiOnN3aXRjaChlLmFsZyl7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6dD17bmFtZToiUlNBLVBTUyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6dD17bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlNBLU9BRVAiOmNhc2UiUlNBLU9BRVAtMjU2IjpjYXNlIlJTQS1PQUVQLTM4NCI6Y2FzZSJSU0EtT0FFUC01MTIiOnQ9e25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtIi5jb25jYXQocGFyc2VJbnQoZS5hbGcuc2xpY2UoLTMpLDEwKXx8MSl9LHI9ZS5kP1siZGVjcnlwdCIsInVud3JhcEtleSJdOlsiZW5jcnlwdCIsIndyYXBLZXkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBJbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJFQyI6c3dpdGNoKGUuYWxnKXtjYXNlIkVTMjU2Ijp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0yNTYifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRVMzODQiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTM4NCJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzUxMiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtNTIxIn0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVDREgtRVMiOmNhc2UiRUNESC1FUytBMTI4S1ciOmNhc2UiRUNESC1FUytBMTkyS1ciOmNhc2UiRUNESC1FUytBMjU2S1ciOnQ9e25hbWU6IkVDREgiLG5hbWVkQ3VydmU6ZS5jcnZ9LHI9ZS5kP1siZGVyaXZlQml0cyJdOltdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlKHFuKCl8fEtuKCkpJiYiT0tQIjppZigiRWREU0EiIT09ZS5hbGcpdGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKTtzd2l0Y2goZS5jcnYpe2Nhc2UiRWQyNTUxOSI6dD17bmFtZToiTk9ERS1FRDI1NTE5IixuYW1lZEN1cnZlOiJOT0RFLUVEMjU1MTkifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UgS24oKSYmIkVkNDQ4Ijp0PXtuYW1lOiJOT0RFLUVENDQ4IixuYW1lZEN1cnZlOiJOT0RFLUVENDQ4In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBJbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImNydiIgKFN1YnR5cGUgb2YgS2V5IFBhaXIpIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpfXJldHVybnthbGdvcml0aG06dCxrZXlVc2FnZXM6cn19dmFyIGVhPWZ1bmN0aW9uKCl7dmFyIGU9aShyKCkubWFyaygoZnVuY3Rpb24gZShuKXt2YXIgYSxpLG8scyx1LGMsZixsLGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzPVFuKG4pLHU9cy5hbGdvcml0aG0sYz1zLmtleVVzYWdlcyxmPVt1LG51bGwhPT0oaT1uLmV4dCkmJnZvaWQgMCE9PWkmJmksbnVsbCE9PShvPW4ua2V5X29wcykmJnZvaWQgMCE9PW8/bzpjXSwiUEJLREYyIiE9PXUubmFtZSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChsPV9uLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KGwsWyJyYXciLFJuKG4uayldLmNvbmNhdChmKSkpO2Nhc2UgNDpyZXR1cm4gZGVsZXRlKGg9dCh7fSxuKSkuYWxnLGUuYWJydXB0KCJyZXR1cm4iLChhPV9uLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KGEsWyJqd2siLGhdLmNvbmNhdChmKSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiB0YShlLHQscil7cmV0dXJuIHJhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiByYSgpe3JldHVybihyYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCRuKG4pKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCJKV0sgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYoYXx8KGE9bi5hbGcpLCJzdHJpbmciPT10eXBlb2YgYSYmYSl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignImFsZyIgYXJndW1lbnQgaXMgcmVxdWlyZWQgd2hlbiAiandrLmFsZyIgaXMgbm90IHByZXNlbnQnKTtjYXNlIDU6ZS50MD1uLmt0eSxlLm5leHQ9Im9jdCI9PT1lLnQwPzg6IlJTQSI9PT1lLnQwPzE0OiJFQyI9PT1lLnQwfHwiT0tQIj09PWUudDA/MTY6MTc7YnJlYWs7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygbi5rJiZuLmspe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNzaW5nICJrIiAoS2V5IFZhbHVlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDEwOmlmKG51bGwhPWl8fChpPSEwIT09bi5leHQpLCFpKXtlLm5leHQ9MTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGVhKHQodCh7fSxuKSx7fSx7YWxnOmEsZXh0OiExfSkpKTtjYXNlIDEzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixSbihuLmspKTtjYXNlIDE0OmlmKHZvaWQgMD09PW4ub3RoKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IEluKCdSU0EgSldLICJvdGgiIChPdGhlciBQcmltZXMgSW5mbykgUGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQnKTtjYXNlIDE2OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlYSh0KHQoe30sbikse30se2FsZzphfSkpKTtjYXNlIDE3OnRocm93IG5ldyBJbignVW5zdXBwb3J0ZWQgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIG5hPWZ1bmN0aW9uKGUsdCxyKXtlLnN0YXJ0c1dpdGgoIkhTIil8fCJkaXIiPT09ZXx8ZS5zdGFydHNXaXRoKCJQQkVTMiIpfHwvXkFcZHszfSg/OkdDTSk/S1ckLy50ZXN0KGUpP2Z1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXtpZighR24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihZbi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdCh3KFZuKSxbIlVpbnQ4QXJyYXkiXSkpKTtpZigic2VjcmV0IiE9PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIHN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKX19KHQpOmZ1bmN0aW9uKGUsdCl7aWYoIUduKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoWW4uYXBwbHkodm9pZCAwLFtlXS5jb25jYXQodyhWbikpKSk7aWYoInNlY3JldCI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoVm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBub3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKTtpZigic2lnbiI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHNpZ25pbmcgbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZigiZGVjcnlwdCI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGRlY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZihlLmFsZ29yaXRobSYmInZlcmlmeSI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoVm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSB2ZXJpZnlpbmcgbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpO2lmKGUuYWxnb3JpdGhtJiYiZW5jcnlwdCI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoVm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBlbmNyeXB0aW9uIG11c3QgYmUgb2YgdHlwZSAicHVibGljIicpKX0odCxyKX07ZnVuY3Rpb24gYWEoZSx0LHIsbixhKXtpZih2b2lkIDAhPT1hLmNyaXQmJnZvaWQgMD09PW4uY3JpdCl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKTtpZighbnx8dm9pZCAwPT09bi5jcml0KXJldHVybiBuZXcgU2V0O2lmKCFBcnJheS5pc0FycmF5KG4uY3JpdCl8fDA9PT1uLmNyaXQubGVuZ3RofHxuLmNyaXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGh9KSkpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBhbiBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyB3aGVuIHByZXNlbnQnKTt2YXIgaTtpPXZvaWQgMCE9PXI/bmV3IE1hcChbXS5jb25jYXQodyhPYmplY3QuZW50cmllcyhyKSksdyh0LmVudHJpZXMoKSkpKTp0O3ZhciBvLHM9XyhuLmNyaXQpO3RyeXtmb3Iocy5zKCk7IShvPXMubigpKS5kb25lOyl7dmFyIHU9by52YWx1ZTtpZighaS5oYXModSkpdGhyb3cgbmV3IEluKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBub3QgcmVjb2duaXplZCcpKTtpZih2b2lkIDA9PT1hW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBtaXNzaW5nJykpO2lmKGkuZ2V0KHUpJiZ2b2lkIDA9PT1uW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfXJldHVybiBuZXcgU2V0KG4uY3JpdCl9dmFyIGlhPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dCYmKCFBcnJheS5pc0FycmF5KHQpfHx0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZX0pKSkpdGhyb3cgbmV3IFR5cGVFcnJvcignIicuY29uY2F0KGUsJyIgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycpKTtpZih0KXJldHVybiBuZXcgU2V0KHQpfTtmdW5jdGlvbiBvYShlLHQpe3ZhciByPSJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpO3N3aXRjaChlKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkhNQUMifTtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6ZS5zbGljZSgtMyk+PjN9O2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUifTtjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOnQubmFtZWRDdXJ2ZX07Y2FzZShxbigpfHxLbigpKSYmIkVkRFNBIjp2YXIgbj10Lm5hbWVkQ3VydmU7cmV0dXJue25hbWU6bixuYW1lZEN1cnZlOm59O2RlZmF1bHQ6dGhyb3cgbmV3IEluKCJhbGcgIi5jb25jYXQoZSwiIGlzIG5vdCBzdXBwb3J0ZWQgZWl0aGVyIGJ5IEpPU0Ugb3IgeW91ciBqYXZhc2NyaXB0IHJ1bnRpbWUiKSl9fWZ1bmN0aW9uIHNhKGUsdCxyKXtpZihTbih0KSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6aWYoIUJuKGUuYWxnb3JpdGhtLCJITUFDIikpdGhyb3cgSm4oIkhNQUMiKTt2YXIgcj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihGbihlLmFsZ29yaXRobS5oYXNoKSE9PXIpdGhyb3cgSm4oIlNIQS0iLmNvbmNhdChyKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIlJTQVNTQS1QS0NTMS12MV81IikpdGhyb3cgSm4oIlJTQVNTQS1QS0NTMS12MV81Iik7dmFyIG49cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoRm4oZS5hbGdvcml0aG0uaGFzaCkhPT1uKXRocm93IEpuKCJTSEEtIi5jb25jYXQobiksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6aWYoIUJuKGUuYWxnb3JpdGhtLCJSU0EtUFNTIikpdGhyb3cgSm4oIlJTQS1QU1MiKTt2YXIgYT1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihGbihlLmFsZ29yaXRobS5oYXNoKSE9PWEpdGhyb3cgSm4oIlNIQS0iLmNvbmNhdChhKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIEtuKCkmJiJFZERTQSI6aWYoIk5PREUtRUQyNTUxOSIhPT1lLmFsZ29yaXRobS5uYW1lJiYiTk9ERS1FRDQ0OCIhPT1lLmFsZ29yaXRobS5uYW1lKXRocm93IEpuKCJOT0RFLUVEMjU1MTkgb3IgTk9ERS1FRDQ0OCIpO2JyZWFrO2Nhc2UgcW4oKSYmIkVkRFNBIjppZighQm4oZS5hbGdvcml0aG0sIk5PREUtRUQyNTUxOSIpKXRocm93IEpuKCJOT0RFLUVEMjU1MTkiKTticmVhaztjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIkVDRFNBIikpdGhyb3cgSm4oIkVDRFNBIik7dmFyIGk9V24odCk7aWYoZS5hbGdvcml0aG0ubmFtZWRDdXJ2ZSE9PWkpdGhyb3cgSm4oaSwiYWxnb3JpdGhtLm5hbWVkQ3VydmUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uIil9Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkobz4yP28tMjowKSx1PTI7dTxvO3UrKylzW3UtMl09YXJndW1lbnRzW3VdO3puKGUscyl9KHQsZSxyKSx0O2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtpZighZS5zdGFydHNXaXRoKCJIUyIpKXRocm93IG5ldyBUeXBlRXJyb3IoWW4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQodyhWbikpKSk7cmV0dXJuIF9uLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsdCx7aGFzaDoiU0hBLSIuY29uY2F0KGUuc2xpY2UoLTMpKSxuYW1lOiJITUFDIn0sITEsW3JdKX10aHJvdyBuZXcgVHlwZUVycm9yKFluLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KHcoVm4pLFsiVWludDhBcnJheSJdKSkpfXZhciB1YT1mdW5jdGlvbigpe3ZhciBlPWkocigpLm1hcmsoKGZ1bmN0aW9uIGUodCxuLGEsaSl7dmFyIG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixzYSh0LG4sInZlcmlmeSIpO2Nhc2UgMjpyZXR1cm4gbz1lLnNlbnQsWm4odCxvKSxzPW9hKHQsby5hbGdvcml0aG0pLGUucHJldj01LGUubmV4dD04LF9uLnN1YnRsZS52ZXJpZnkocyxvLGEsaSk7Y2FzZSA4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMTE6cmV0dXJuIGUucHJldj0xMSxlLnQwPWUuY2F0Y2goNSksZS5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s1LDExXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4sYSl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBjYShlLHQscil7cmV0dXJuIGZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBmYSgpe3JldHVybiBmYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXt2YXIgbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCRuKG4pKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgTG4oIkZsYXR0ZW5lZCBKV1MgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYodm9pZCAwIT09bi5wcm90ZWN0ZWR8fHZvaWQgMCE9PW4uaGVhZGVyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgTG4oJ0ZsYXR0ZW5lZCBKV1MgbXVzdCBoYXZlIGVpdGhlciBvZiB0aGUgInByb3RlY3RlZCIgb3IgImhlYWRlciIgbWVtYmVycycpO2Nhc2UgNDppZih2b2lkIDA9PT1uLnByb3RlY3RlZHx8InN0cmluZyI9PXR5cGVvZiBuLnByb3RlY3RlZCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgNjppZih2b2lkIDAhPT1uLnBheWxvYWQpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBMbigiSldTIFBheWxvYWQgbWlzc2luZyIpO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIG4uc2lnbmF0dXJlKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgU2lnbmF0dXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEwOmlmKHZvaWQgMD09PW4uaGVhZGVyfHwkbihuLmhlYWRlcikpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgTG4oIkpXUyBVbnByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEyOmlmKHM9e30sIW4ucHJvdGVjdGVkKXtlLm5leHQ9MjI7YnJlYWt9dT1SbihuLnByb3RlY3RlZCksZS5wcmV2PTE1LHM9SlNPTi5wYXJzZShUbi5kZWNvZGUodSkpLGUubmV4dD0yMjticmVhaztjYXNlIDE5OnRocm93IGUucHJldj0xOSxlLnQwPWUuY2F0Y2goMTUpLG5ldyBMbigiSldTIFByb3RlY3RlZCBIZWFkZXIgaXMgaW52YWxpZCIpO2Nhc2UgMjI6aWYoWG4ocyxuLmhlYWRlcikpe2UubmV4dD0yNDticmVha310aHJvdyBuZXcgTG4oIkpXUyBQcm90ZWN0ZWQgYW5kIEpXUyBVbnByb3RlY3RlZCBIZWFkZXIgUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgZGlzam9pbnQiKTtjYXNlIDI0OmlmKGM9dCh0KHt9LHMpLG4uaGVhZGVyKSxmPWFhKExuLG5ldyBNYXAoW1siYjY0IiwhMF1dKSxudWxsPT1pP3ZvaWQgMDppLmNyaXQscyxjKSxsPSEwLCFmLmhhcygiYjY0Iikpe2UubmV4dD0zMTticmVha31pZigiYm9vbGVhbiI9PXR5cGVvZihsPXMuYjY0KSl7ZS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBMbignVGhlICJiNjQiIChiYXNlNjR1cmwtZW5jb2RlIHBheWxvYWQpIEhlYWRlciBQYXJhbWV0ZXIgbXVzdCBiZSBhIGJvb2xlYW4nKTtjYXNlIDMxOmlmKCJzdHJpbmciPT10eXBlb2YoaD1jLmFsZykmJmgpe2UubmV4dD0zNDticmVha310aHJvdyBuZXcgTG4oJ0pXUyAiYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG1pc3Npbmcgb3IgaW52YWxpZCcpO2Nhc2UgMzQ6aWYoIShwPWkmJmlhKCJhbGdvcml0aG1zIixpLmFsZ29yaXRobXMpKXx8cC5oYXMoaCkpe2UubmV4dD0zNzticmVha310aHJvdyBuZXcgT24oJyJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbm90IGFsbG93ZWQnKTtjYXNlIDM3OmlmKCFsKXtlLm5leHQ9NDI7YnJlYWt9aWYoInN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWQpe2UubmV4dD00MDticmVha310aHJvdyBuZXcgTG4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmciKTtjYXNlIDQwOmUubmV4dD00NDticmVhaztjYXNlIDQyOmlmKCJzdHJpbmciPT10eXBlb2Ygbi5wYXlsb2FkfHxuLnBheWxvYWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtlLm5leHQ9NDQ7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIFVpbnQ4QXJyYXkgaW5zdGFuY2UiKTtjYXNlIDQ0OmlmKGQ9ITEsImZ1bmN0aW9uIiE9dHlwZW9mIGEpe2UubmV4dD01MDticmVha31yZXR1cm4gZS5uZXh0PTQ4LGEocyxuKTtjYXNlIDQ4OmE9ZS5zZW50LGQ9ITA7Y2FzZSA1MDpyZXR1cm4gbmEoaCxhLCJ2ZXJpZnkiKSx2PUFuKEVuLmVuY29kZShudWxsIT09KG89bi5wcm90ZWN0ZWQpJiZ2b2lkIDAhPT1vP286IiIpLEVuLmVuY29kZSgiLiIpLCJzdHJpbmciPT10eXBlb2Ygbi5wYXlsb2FkP0VuLmVuY29kZShuLnBheWxvYWQpOm4ucGF5bG9hZCksZz1SbihuLnNpZ25hdHVyZSksZS5uZXh0PTU1LHVhKGgsYSxnLHYpO2Nhc2UgNTU6aWYoZS5zZW50KXtlLm5leHQ9NTg7YnJlYWt9dGhyb3cgbmV3IE5uO2Nhc2UgNTg6aWYoeT1sP1JuKG4ucGF5bG9hZCk6InN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWQ/RW4uZW5jb2RlKG4ucGF5bG9hZCk6bi5wYXlsb2FkLG09e3BheWxvYWQ6eX0sdm9pZCAwIT09bi5wcm90ZWN0ZWQmJihtLnByb3RlY3RlZEhlYWRlcj1zKSx2b2lkIDAhPT1uLmhlYWRlciYmKG0udW5wcm90ZWN0ZWRIZWFkZXI9bi5oZWFkZXIpLCFkKXtlLm5leHQ9NjQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxtKSx7fSx7a2V5OmF9KSk7Y2FzZSA2NDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbSk7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzE1LDE5XV0pfSkpKSxmYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbGEoZSx0LHIpe3JldHVybiBoYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaGEoKXtyZXR1cm4oaGE9aShyKCkubWFyaygoZnVuY3Rpb24gZShuLGEsaSl7dmFyIG8scyx1LGMsZixsO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYobiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihuPVRuLmRlY29kZShuKSksInN0cmluZyI9PXR5cGVvZiBuKXtlLm5leHQ9MzticmVha310aHJvdyBuZXcgTG4oIkNvbXBhY3QgSldTIG11c3QgYmUgYSBzdHJpbmcgb3IgVWludDhBcnJheSIpO2Nhc2UgMzppZihvPW4uc3BsaXQoIi4iKSxzPW9bMF0sdT1vWzFdLGM9b1syXSwzPT09by5sZW5ndGgpe2UubmV4dD02O2JyZWFrfXRocm93IG5ldyBMbigiSW52YWxpZCBDb21wYWN0IEpXUyIpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgsY2Eoe3BheWxvYWQ6dSxwcm90ZWN0ZWQ6cyxzaWduYXR1cmU6Y30sYSxpKTtjYXNlIDg6aWYoZj1lLnNlbnQsbD17cGF5bG9hZDpmLnBheWxvYWQscHJvdGVjdGVkSGVhZGVyOmYucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2YgYSl7ZS5uZXh0PTEyO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sbCkse30se2tleTpmLmtleX0pKTtjYXNlIDEyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixsKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHBhPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmZsb29yKGUuZ2V0VGltZSgpLzFlMyl9LGRhPTg2NDAwLHZhPS9eKFxkK3xcZCtcLlxkKykgPyhzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpJC9pLGdhPWZ1bmN0aW9uKGUpe3ZhciB0PXZhLmV4ZWMoZSk7aWYoIXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCB0aW1lIHBlcmlvZCBmb3JtYXQiKTt2YXIgcj1wYXJzZUZsb2F0KHRbMV0pO3N3aXRjaCh0WzJdLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2VjIjpjYXNlInNlY3MiOmNhc2Uic2Vjb25kIjpjYXNlInNlY29uZHMiOmNhc2UicyI6cmV0dXJuIE1hdGgucm91bmQocik7Y2FzZSJtaW51dGUiOmNhc2UibWludXRlcyI6Y2FzZSJtaW4iOmNhc2UibWlucyI6Y2FzZSJtIjpyZXR1cm4gTWF0aC5yb3VuZCg2MCpyKTtjYXNlImhvdXIiOmNhc2UiaG91cnMiOmNhc2UiaHIiOmNhc2UiaHJzIjpjYXNlImgiOnJldHVybiBNYXRoLnJvdW5kKDM2MDAqcik7Y2FzZSJkYXkiOmNhc2UiZGF5cyI6Y2FzZSJkIjpyZXR1cm4gTWF0aC5yb3VuZChyKmRhKTtjYXNlIndlZWsiOmNhc2Uid2Vla3MiOmNhc2UidyI6cmV0dXJuIE1hdGgucm91bmQoNjA0ODAwKnIpO2RlZmF1bHQ6cmV0dXJuIE1hdGgucm91bmQoMzE1NTc2MDAqcil9fSx5YT1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15hcHBsaWNhdGlvblwvLywiIil9LG1hPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QuaW5jbHVkZXMoZSk6ISFBcnJheS5pc0FycmF5KGUpJiZ0LnNvbWUoU2V0LnByb3RvdHlwZS5oYXMuYmluZChuZXcgU2V0KGUpKSl9LGJhPWZ1bmN0aW9uKGUsdCl7dmFyIHIsYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30saT1hLnR5cDtpZihpJiYoInN0cmluZyIhPXR5cGVvZiBlLnR5cHx8eWEoZS50eXApIT09eWEoaSkpKXRocm93IG5ldyBQbigndW5leHBlY3RlZCAidHlwIiBKV1QgaGVhZGVyIHZhbHVlJywidHlwIiwiY2hlY2tfZmFpbGVkIik7dHJ5e3I9SlNPTi5wYXJzZShUbi5kZWNvZGUodCkpfWNhdGNoKGUpe31pZighJG4ocikpdGhyb3cgbmV3IFVuKCJKV1QgQ2xhaW1zIFNldCBtdXN0IGJlIGEgdG9wLWxldmVsIEpTT04gb2JqZWN0Iik7dmFyIG89YS5pc3N1ZXI7aWYobyYmIShBcnJheS5pc0FycmF5KG8pP286W29dKS5pbmNsdWRlcyhyLmlzcykpdGhyb3cgbmV3IFBuKCd1bmV4cGVjdGVkICJpc3MiIGNsYWltIHZhbHVlJywiaXNzIiwiY2hlY2tfZmFpbGVkIik7dmFyIHM9YS5zdWJqZWN0O2lmKHMmJnIuc3ViIT09cyl0aHJvdyBuZXcgUG4oJ3VuZXhwZWN0ZWQgInN1YiIgY2xhaW0gdmFsdWUnLCJzdWIiLCJjaGVja19mYWlsZWQiKTt2YXIgdSxjPWEuYXVkaWVuY2U7aWYoYyYmIW1hKHIuYXVkLCJzdHJpbmciPT10eXBlb2YgYz9bY106YykpdGhyb3cgbmV3IFBuKCd1bmV4cGVjdGVkICJhdWQiIGNsYWltIHZhbHVlJywiYXVkIiwiY2hlY2tfZmFpbGVkIik7c3dpdGNoKG4oYS5jbG9ja1RvbGVyYW5jZSkpe2Nhc2Uic3RyaW5nIjp1PWdhKGEuY2xvY2tUb2xlcmFuY2UpO2JyZWFrO2Nhc2UibnVtYmVyIjp1PWEuY2xvY2tUb2xlcmFuY2U7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOnU9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2xvY2tUb2xlcmFuY2Ugb3B0aW9uIHR5cGUiKX12YXIgZj1hLmN1cnJlbnREYXRlLGw9cGEoZnx8bmV3IERhdGUpO2lmKCh2b2lkIDAhPT1yLmlhdHx8YS5tYXhUb2tlbkFnZSkmJiJudW1iZXIiIT10eXBlb2Ygci5pYXQpdGhyb3cgbmV3IFBuKCciaWF0IiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiaWF0IiwiaW52YWxpZCIpO2lmKHZvaWQgMCE9PXIubmJmKXtpZigibnVtYmVyIiE9dHlwZW9mIHIubmJmKXRocm93IG5ldyBQbignIm5iZiIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsIm5iZiIsImludmFsaWQiKTtpZihyLm5iZj5sK3UpdGhyb3cgbmV3IFBuKCcibmJmIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywibmJmIiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09ci5leHApe2lmKCJudW1iZXIiIT10eXBlb2Ygci5leHApdGhyb3cgbmV3IFBuKCciZXhwIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiZXhwIiwiaW52YWxpZCIpO2lmKHIuZXhwPD1sLXUpdGhyb3cgbmV3IERuKCciZXhwIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywiZXhwIiwiY2hlY2tfZmFpbGVkIil9aWYoYS5tYXhUb2tlbkFnZSl7dmFyIGg9bC1yLmlhdCxwPSJudW1iZXIiPT10eXBlb2YgYS5tYXhUb2tlbkFnZT9hLm1heFRva2VuQWdlOmdhKGEubWF4VG9rZW5BZ2UpO2lmKGgtdT5wKXRocm93IG5ldyBEbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAodG9vIGZhciBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKTtpZihoPDAtdSl0aHJvdyBuZXcgUG4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKGl0IHNob3VsZCBiZSBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKX1yZXR1cm4gcn07ZnVuY3Rpb24gd2EoKXtyZXR1cm4od2E9aShyKCkubWFyaygoZnVuY3Rpb24gZShuLGEsaSl7dmFyIG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsbGEobixhLGkpO2Nhc2UgMjppZihzPWUuc2VudCwhKG51bGw9PT0obz1zLnByb3RlY3RlZEhlYWRlci5jcml0KXx8dm9pZCAwPT09bz92b2lkIDA6by5pbmNsdWRlcygiYjY0IikpfHwhMSE9PXMucHJvdGVjdGVkSGVhZGVyLmI2NCl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFVuKCJKV1RzIE1VU1QgTk9UIHVzZSB1bmVuY29kZWQgcGF5bG9hZCIpO2Nhc2UgNTppZih1PWJhKHMucHJvdGVjdGVkSGVhZGVyLHMucGF5bG9hZCxpKSxjPXtwYXlsb2FkOnUscHJvdGVjdGVkSGVhZGVyOnMucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2YgYSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxjKSx7fSx7a2V5OnMua2V5fSkpO2Nhc2UgOTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYyk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGthKGUpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIGUmJmUuc2xpY2UoMCwyKSl7Y2FzZSJSUyI6Y2FzZSJQUyI6cmV0dXJuIlJTQSI7Y2FzZSJFUyI6cmV0dXJuIkVDIjtjYXNlIkVkIjpyZXR1cm4iT0tQIjtkZWZhdWx0OnRocm93IG5ldyBJbignVW5zdXBwb3J0ZWQgImFsZyIgdmFsdWUgZm9yIGEgSlNPTiBXZWIgS2V5IFNldCcpfX1mdW5jdGlvbiB4YShlKXtyZXR1cm4gJG4oZSl9dmFyIF9hPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtpZihvKHRoaXMsZSksdGhpcy5fY2FjaGVkPW5ldyBXZWFrTWFwLCFmdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PT1uKGUpJiZBcnJheS5pc0FycmF5KGUua2V5cykmJmUua2V5cy5ldmVyeSh4YSl9KHQpKXRocm93IG5ldyBIbigiSlNPTiBXZWIgS2V5IFNldCBtYWxmb3JtZWQiKTt2YXIgcjt0aGlzLl9qd2tzPShyPXQsImZ1bmN0aW9uIj09dHlwZW9mIHN0cnVjdHVyZWRDbG9uZT9zdHJ1Y3R1cmVkQ2xvbmUocik6SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyKSkpfXZhciBhO3JldHVybiB1KGUsW3trZXk6ImdldEtleSIsdmFsdWU6KGE9aShyKCkubWFyaygoZnVuY3Rpb24gZShuLGEpe3ZhciBpLG8scyx1LGMsZixsLGgscDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGk9dCh0KHt9LG4pLGEuaGVhZGVyKSxvPWkuYWxnLHM9aS5raWQsdT1rYShvKSxjPXRoaXMuX2p3a3Mua2V5cy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0PXU9PT1lLmt0eTtpZih0JiYic3RyaW5nIj09dHlwZW9mIHMmJih0PXM9PT1lLmtpZCksdCYmInN0cmluZyI9PXR5cGVvZiBlLmFsZyYmKHQ9bz09PWUuYWxnKSx0JiYic3RyaW5nIj09dHlwZW9mIGUudXNlJiYodD0ic2lnIj09PWUudXNlKSx0JiZBcnJheS5pc0FycmF5KGUua2V5X29wcykmJih0PWUua2V5X29wcy5pbmNsdWRlcygidmVyaWZ5IikpLHQmJiJFZERTQSI9PT1vJiYodD0iRWQyNTUxOSI9PT1lLmNydnx8IkVkNDQ4Ij09PWUuY3J2KSx0KXN3aXRjaChvKXtjYXNlIkVTMjU2Ijp0PSJQLTI1NiI9PT1lLmNydjticmVhaztjYXNlIkVTMjU2SyI6dD0ic2VjcDI1NmsxIj09PWUuY3J2O2JyZWFrO2Nhc2UiRVMzODQiOnQ9IlAtMzg0Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVM1MTIiOnQ9IlAtNTIxIj09PWUuY3J2fXJldHVybiB0fSkpLGY9Y1swXSwwIT09KGw9Yy5sZW5ndGgpKXtlLm5leHQ9ODticmVha310aHJvdyBuZXcgTW47Y2FzZSA4OmlmKDE9PT1sKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IGpuO2Nhc2UgMTA6aWYodm9pZCAwIT09KGg9dGhpcy5fY2FjaGVkLmdldChmKXx8dGhpcy5fY2FjaGVkLnNldChmLHt9KS5nZXQoZikpW29dKXtlLm5leHQ9MTg7YnJlYWt9cmV0dXJuIGUubmV4dD0xNCx0YSh0KHQoe30sZikse30se2V4dDohMH0pLG8pO2Nhc2UgMTQ6aWYoISgocD1lLnNlbnQpaW5zdGFuY2VvZiBVaW50OEFycmF5fHwicHVibGljIiE9PXAudHlwZSkpe2UubmV4dD0xNzticmVha310aHJvdyBuZXcgSG4oIkpTT04gV2ViIEtleSBTZXQgbWVtYmVycyBtdXN0IGJlIHB1YmxpYyBrZXlzIik7Y2FzZSAxNzpoW29dPXA7Y2FzZSAxODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsaFtvXSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksZX0oKTt2YXIgU2E9e2V4cG9ydHM6e319LEVhPXtleHBvcnRzOnt9fSxUYT1aKGZuKTsKLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovCiFmdW5jdGlvbihlLHQpe3ZhciByPVRhLG49ci5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gbihlLHQscil9bi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjooYShyLHQpLHQuQnVmZmVyPWkpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEobixpKSxpLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUsdCxyKX0saS5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgYT1uKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygcj9hLmZpbGwodCxyKTphLmZpbGwodCk6YS5maWxsKDApLGF9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbihlKX0saS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gci5TbG93QnVmZmVyKGUpfX0oRWEsRWEuZXhwb3J0cyk7dmFyIEFhPTY1NTM2LFJhPTQyOTQ5NjcyOTU7dmFyIENhPUVhLmV4cG9ydHMuQnVmZmVyLFBhPVguY3J5cHRvfHxYLm1zQ3J5cHRvO1BhJiZQYS5nZXRSYW5kb21WYWx1ZXM/U2EuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU+UmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1DYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5BYSlmb3IodmFyIG49MDtuPGU7bis9QWEpUGEuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK0FhKSk7ZWxzZSBQYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIEplLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06U2EuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIERhPVNhLmV4cG9ydHMsT2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHduLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB3bi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKHhuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIERhKGUpfX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiB3YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsKHM9e2tleXM6W3RdfSxfYS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IF9hKHMpKSkse2FsZ29yaXRobXM6cixhdWRpZW5jZTpuLGNsb2NrVG9sZXJhbmNlOm8saXNzdWVyOmEsc3ViamVjdDppfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKTt2YXIgc319XSksZX0oKTtvcmlnaW4sVS5TZXNzaW9uU3RvcmFnZTt2YXIgSWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gdShlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiBuPXBhcnNlSW50KHQuZXhwaXJlc19pbiksYT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBTKGksdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihuPD0xMD9uOm4tMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDLEpTT04uc3RyaW5naWZ5KGEpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksTGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbSxiLHcsayx4LF8sRSxULEEsUixDLFAsRCxPLEksTCxVO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9bmV3IHNyLGk9bmV3IE9hLG89bmV3IEooYSxpKSxuLm5leHQ9NSxvLmluaXRpYWxpemUoZSk7Y2FzZSA1OmlmKHM9bmV3IElhKG8pLHU9dChvLHMpLGM9by5nZXREYXRhTGF5ZXIoKSxmPW9yLmdldEluc3RhbmNlKCksbi50MD1udWxsPT1mP3ZvaWQgMDpmLmluaXQsIW4udDApe24ubmV4dD0xMzticmVha31yZXR1cm4gbi5uZXh0PTEzLGYuaW5pdCghMCx1LmF0dGFjaFRva2VuKTtjYXNlIDEzOnJldHVybiBsPWZ1bmN0aW9uKGUpe3Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKGYsZSl9LGg9ZnVuY3Rpb24oZSl7dS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhmLGUpfSxwPWZ1bmN0aW9uKGUpeyhudWxsPT1mP3ZvaWQgMDpmLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spJiZmLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soZSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1Lmh0dHBSZXF1ZXN0KGYsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHUuaHR0cFJlcXVlc3RBbGwoZSxmKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxnPWZ1bmN0aW9uKCl7dS5lbmFibGVIdHRwSGFuZGxlcihmKX0seT1mdW5jdGlvbigpe3UuZGlzYWJsZUh0dHBIYW5kbGVyKGYpfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsby5nZXRBdXRob3JpemF0aW9uVVJMKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLHM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYT1uZXcgVVJMKGUpLGk9bnVsbCE9PShuPWEuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSkmJnZvaWQgMCE9PW4/bjoiIix0Lm5leHQ9NCxvLmdldFBLQ0VDb2RlKGkpO2Nhc2UgNDpyZXR1cm4gcz10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25VUkw6ZSxwa2NlOnN9KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxiPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBzLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHMucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHc9ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix1LnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQsdm9pZCAwLG4sYSk7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGkpfSkpKX0saz1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gcy5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxvLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixvLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxfPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sRT1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsdS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA2OnJldHVybiBlLnByZXY9NixlLnQwPWUuY2F0Y2goMCksZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZS50MCkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsNl1dKX0pKSl9LFQ9ZnVuY3Rpb24oKXtyZXR1cm4gby5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxSPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQz1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdS5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sUD1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gdS5nZXRBY2Nlc3NUb2tlbigpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIHUuaXNBdXRoZW50aWNhdGVkKCl9LEk9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixjLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEw9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixvLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGMuZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LG4uYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6eSxlbmFibGVIdHRwSGFuZGxlcjpnLGdldEFjY2Vzc1Rva2VuOkQsZ2V0QXV0aG9yaXphdGlvblVSTDptLGdldEJhc2ljVXNlckluZm86QSxnZXRDb25maWdEYXRhOlUsZ2V0RGVjb2RlZElEVG9rZW46UixnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6UCxnZXRTaWduT3V0VVJMOngsaHR0cFJlcXVlc3Q6ZCxodHRwUmVxdWVzdEFsbDp2LGlzQXV0aGVudGljYXRlZDpPLHJlZnJlc2hBY2Nlc3NUb2tlbjpFLHJlcXVlc3RBY2Nlc3NUb2tlbjp3LHJlcXVlc3RDdXN0b21HcmFudDpfLHJldm9rZUFjY2Vzc1Rva2VuOlQsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpwLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmgsc2V0U2Vzc2lvblN0YXRlOkksc2lnbk91dDprLHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjpiLHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4pfSkpKX0sVWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50PXQsdGhpcy5fZGF0YUxheWVyPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERhdGFMYXllcigpLHRoaXMuX3NwYUhlbHBlcj1yfXJldHVybiB1KGUsW3trZXk6ImF0dGFjaFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFPYmplY3QuYXNzaWduKHthdHRhY2hUb2tlbjohMH0sZSkuYXR0YWNoVG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdC50MD1PYmplY3QsdC50MT1PYmplY3QuYXNzaWduKHt9LGUuaGVhZGVycyksdC50Mj0iQmVhcmVyICIsdC5uZXh0PTcsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QWNjZXNzVG9rZW4oKTtjYXNlIDc6dC50Mz10LnNlbnQsdC50ND10LnQyLmNvbmNhdC5jYWxsKHQudDIsdC50MyksdC50NT17QXV0aG9yaXphdGlvbjp0LnQ0fSxlLmhlYWRlcnM9dC50MC5hc3NpZ24uY2FsbCh0LnQwLHQudDEsdC50NSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlLHQpeyhudWxsPT1lP3ZvaWQgMDplLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaykmJmUuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKHQpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KG51bGw9PWU/dm9pZCAwOmUuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2spJiZlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKHQpfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXsobnVsbD09ZT92b2lkIDA6ZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSYmZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKHQpfX0se2tleToiZW5hYmxlSHR0cEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpeyhudWxsPT1lP3ZvaWQgMDplLmVuYWJsZUhhbmRsZXIpJiZlLmVuYWJsZUhhbmRsZXIoKX19LHtrZXk6ImRpc2FibGVIdHRwSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7KG51bGw9PWU/dm9pZCAwOmUuZGlzYWJsZUhhbmRsZXIpJiZlLmRpc2FibGVIYW5kbGVyKCl9fSx7a2V5OiJpbml0aWFsaXplU2Vzc2lvbk1hbmdlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaSxvLHM7YS5pbml0aWFsaXplKGUuY2xpZW50SUQsbnVsbCE9PShpPXQuY2hlY2tTZXNzaW9uSWZyYW1lKSYmdm9pZCAwIT09aT9pOiIiLHIsbnVsbCE9PShvPWUuY2hlY2tTZXNzaW9uSW50ZXJ2YWwpJiZ2b2lkIDAhPT1vP286MyxudWxsIT09KHM9ZS5zZXNzaW9uUmVmcmVzaEludGVydmFsKSYmdm9pZCAwIT09cz9zOjMwMCxlLnNpZ25JblJlZGlyZWN0VVJMLG4pfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuLGEsaTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgcyx1LGMsZixsLGg9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG8pe2Zvcig7Oylzd2l0Y2goby5wcmV2PW8ubmV4dCl7Y2FzZSAwOmlmKHM9ITAsdT0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe28ubmV4dD0zOTticmVha31yZXR1cm4gcz0hMSxjPTAsby50MD1bXSxvLnQxPXcsby5uZXh0PTksdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDk6aWYoby50ND1uPW8uc2VudCxvLnQzPW51bGw9PT1vLnQ0LG8udDMpe28ubmV4dD0xMzticmVha31vLnQzPXZvaWQgMD09PW47Y2FzZSAxMzppZighby50Myl7by5uZXh0PTE3O2JyZWFrfW8udDU9dm9pZCAwLG8ubmV4dD0xODticmVhaztjYXNlIDE3Om8udDU9bi5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAxODppZihvLnQ2PWE9by50NSxvLnQyPW51bGwhPT1vLnQ2LCFvLnQyKXtvLm5leHQ9MjI7YnJlYWt9by50Mj12b2lkIDAhPT1hO2Nhc2UgMjI6aWYoIW8udDIpe28ubmV4dD0yNjticmVha31vLnQ3PWEsby5uZXh0PTI3O2JyZWFrO2Nhc2UgMjY6by50Nz1bXTtjYXNlIDI3Om8udDg9by50NyxvLnQ5PSgwLG8udDEpKG8udDgpLG8udDEwPVtlLmJhc2VVcmxdLGY9by50MC5jb25jYXQuY2FsbChvLnQwLG8udDksby50MTApO2Nhc2UgMzE6aWYoIShjPGYubGVuZ3RoKSl7by5uZXh0PTM5O2JyZWFrfWlmKCEobD1mW2NdKXx8IShudWxsPT09KGk9ZS50b2tlbkVuZHBvaW50KXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGFydHNXaXRoKGwpKSl7by5uZXh0PTM2O2JyZWFrfXJldHVybiB1PSEwLG8uYWJydXB0KCJicmVhayIsMzkpO2Nhc2UgMzY6YysrLG8ubmV4dD0zMTticmVhaztjYXNlIDM5OmlmKGUuc2hvdWxkUmVwbGF5QWZ0ZXJSZWZyZXNoJiZ0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihZLEpTT04uc3RyaW5naWZ5KGUpKSwhcyYmIXUpe28ubmV4dD00NDticmVha31yZXR1cm4gby5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVxdWVzdEN1c3RvbUdyYW50KGUpLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBTKGgsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQoZSksIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD02O2JyZWFrfXJldHVybiB0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA2OnJldHVybiByLmFicnVwdCgicmV0dXJuIixuKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDQ0OnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgSSgiU1BBLU1BSU5fVEhSRUFEX0NMSUVOVC1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDdXN0b21HcmFudENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoWSk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5wcmV2PTAsdC5uZXh0PTMsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiB0Lm5leHQ9NSx0aGlzLmdldEN1c3RvbUdyYW50Q29uZmlnRGF0YSgpO2Nhc2UgNTppZighKG49dC5zZW50KSl7dC5uZXh0PTk7YnJlYWt9cmV0dXJuIHQubmV4dD05LHRoaXMucmVxdWVzdEN1c3RvbUdyYW50KG4sZSk7Y2FzZSA5OnJldHVybiB0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gdC5wcmV2PTEzLHQudDA9dC5jYXRjaCgwKSx0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdCh0LnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzAsMTNdXSl9KSkpfX0se2tleToiaHR0cFJlcXVlc3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGEsaSxvKXt2YXIgcyx1O3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYygpe3ZhciBmLGwsaCxwLGQsdj10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oYyl7Zm9yKDs7KXN3aXRjaChjLnByZXY9Yy5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITEsYy5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6cmV0dXJuIGw9Yy5zZW50LGg9MCxjLnQwPVtdLGMudDE9dyxjLm5leHQ9OSxudWxsPT1sP3ZvaWQgMDpsLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDk6aWYoYy50Mz1zPWMuc2VudCxjLnQyPW51bGwhPT1jLnQzLCFjLnQyKXtjLm5leHQ9MTM7YnJlYWt9Yy50Mj12b2lkIDAhPT1zO2Nhc2UgMTM6aWYoIWMudDIpe2MubmV4dD0xNzticmVha31jLnQ0PXMsYy5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6Yy50ND1bXTtjYXNlIDE4OmMudDU9Yy50NCxjLnQ2PSgwLGMudDEpKGMudDUpLGMudDc9W2wuYmFzZVVybF0scD1jLnQwLmNvbmNhdC5jYWxsKGMudDAsYy50NixjLnQ3KTtjYXNlIDIyOmlmKCEoaDxwLmxlbmd0aCkpe2MubmV4dD0zMDticmVha31pZighKGQ9cFtoXSl8fCEobnVsbD09PSh1PW51bGw9PXQ/dm9pZCAwOnQudXJsKXx8dm9pZCAwPT09dT92b2lkIDA6dS5zdGFydHNXaXRoKGQpKSl7Yy5uZXh0PTI3O2JyZWFrfXJldHVybiBmPSEwLGMuYWJydXB0KCJicmVhayIsMzApO2Nhc2UgMjc6aCsrLGMubmV4dD0yMjticmVhaztjYXNlIDMwOmlmKCFmKXtjLm5leHQ9MzQ7YnJlYWt9cmV0dXJuIGMuYWJydXB0KCJyZXR1cm4iLGUucmVxdWVzdCh0KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihzKXtyZXR1cm4gUyh2LHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHUoKXt2YXIgYyxmLGwsaCxwO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0oYz1udWxsPT1zP3ZvaWQgMDpzLnJlc3BvbnNlKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdGF0dXMpJiYobnVsbD09cz92b2lkIDA6cy5yZXNwb25zZSkpe3IubmV4dD0zMTticmVha31yZXR1cm4gci5wcmV2PTEsci5uZXh0PTQsdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4obyk7Y2FzZSA0Omg9ci5zZW50LHIubmV4dD0xNTticmVhaztjYXNlIDc6aWYoci5wcmV2PTcsci50MD1yLmNhdGNoKDEpLCFuKXtyLm5leHQ9MTQ7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3IubmV4dD0xMzticmVha31yZXR1cm4gci5uZXh0PTEzLGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtjb2RlOlZ9KSk7Y2FzZSAxMzoiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgMTQ6dGhyb3cgbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUi1TRTAxIixudWxsIT09KGY9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWY/ZjoiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obD1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bD9sOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxNTppZighaCl7ci5uZXh0PTMxO2JyZWFrfXJldHVybiByLnByZXY9MTYsci5uZXh0PTE5LGUucmVxdWVzdCh0KTtjYXNlIDE5OnJldHVybiBwPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUocCkpO2Nhc2UgMjM6aWYoci5wcmV2PTIzLHIudDE9ci5jYXRjaCgxNiksIW4pe3IubmV4dD0zMDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTI5O2JyZWFrfXJldHVybiByLm5leHQ9MjksYShyLnQxKTtjYXNlIDI5OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAzMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3Qoci50MSkpO2Nhc2UgMzE6aWYoIW4pe3IubmV4dD0zNjticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTM1O2JyZWFrfXJldHVybiByLm5leHQ9MzUsYShzKTtjYXNlIDM1OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAzNjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QocykpO2Nhc2UgMzc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSx1LHRoaXMsW1sxLDddLFsxNiwyM11dKX0pKSl9KSkpO2Nhc2UgMzQ6cmV0dXJuIGMuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gYy5zdG9wKCl9fSksYyx0aGlzKX0pKSl9fSx7a2V5OiJodHRwUmVxdWVzdEFsbCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSxpKXt2YXIgbyxzLHU7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBjKCl7dmFyIGYsbCxoLHAsZCx2LGcseSxtLGIsaz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oYyl7Zm9yKDs7KXN3aXRjaChjLnByZXY9Yy5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITAsYy5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6bD1jLnNlbnQsaD1fKGUpLGMucHJldj01LGgucygpO2Nhc2UgNzppZigocD1oLm4oKSkuZG9uZSl7Yy5uZXh0PTUwO2JyZWFrfXJldHVybiBkPXAudmFsdWUsdj0hMSxnPTAsYy50MD1bXSxjLnQxPXcsYy5uZXh0PTE1LGw7Y2FzZSAxNTppZihjLnQ0PW89Yy5zZW50LGMudDM9bnVsbD09PWMudDQsYy50Myl7Yy5uZXh0PTE5O2JyZWFrfWMudDM9dm9pZCAwPT09bztjYXNlIDE5OmlmKCFjLnQzKXtjLm5leHQ9MjM7YnJlYWt9Yy50NT12b2lkIDAsYy5uZXh0PTI0O2JyZWFrO2Nhc2UgMjM6Yy50NT1vLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDI0OmlmKGMudDY9cz1jLnQ1LGMudDI9bnVsbCE9PWMudDYsIWMudDIpe2MubmV4dD0yODticmVha31jLnQyPXZvaWQgMCE9PXM7Y2FzZSAyODppZighYy50Mil7Yy5uZXh0PTMyO2JyZWFrfWMudDc9cyxjLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMjpjLnQ3PVtdO2Nhc2UgMzM6Yy50OD1jLnQ3LGMudDk9KDAsYy50MSkoYy50OCksYy50MTA9W2wuYmFzZVVybF0seT1jLnQwLmNvbmNhdC5jYWxsKGMudDAsYy50OSxjLnQxMCk7Y2FzZSAzNzppZighKGc8eS5sZW5ndGgpKXtjLm5leHQ9NDU7YnJlYWt9aWYoIShtPXlbZ10pfHwhKG51bGw9PT0odT1kLnVybCl8fHZvaWQgMD09PXU/dm9pZCAwOnUuc3RhcnRzV2l0aChtKSkpe2MubmV4dD00MjticmVha31yZXR1cm4gdj0hMCxjLmFicnVwdCgiYnJlYWsiLDQ1KTtjYXNlIDQyOmcrKyxjLm5leHQ9Mzc7YnJlYWs7Y2FzZSA0NTppZih2KXtjLm5leHQ9NDg7YnJlYWt9cmV0dXJuIGY9ITEsYy5hYnJ1cHQoImJyZWFrIiw1MCk7Y2FzZSA0ODpjLm5leHQ9NzticmVhaztjYXNlIDUwOmMubmV4dD01NTticmVhaztjYXNlIDUyOmMucHJldj01MixjLnQxMT1jLmNhdGNoKDUpLGguZShjLnQxMSk7Y2FzZSA1NTpyZXR1cm4gYy5wcmV2PTU1LGguZigpLGMuZmluaXNoKDU1KTtjYXNlIDU4OmlmKGI9W10sIWYpe2MubmV4dD02NDticmVha31yZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtiLnB1c2godC5yZXF1ZXN0KGUpKX0pKSxjLmFicnVwdCgicmV0dXJuIiwobnVsbD09dD92b2lkIDA6dC5hbGwpJiZ0LmFsbChiKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUyhrLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgcyx1LGMsZixsPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShzPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXR1cykmJihudWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKSl7by5uZXh0PTE3O2JyZWFrfXJldHVybiBvLnByZXY9MSxvLm5leHQ9NCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDQ6Zj1vLnNlbnQsby5uZXh0PTE1O2JyZWFrO2Nhc2UgNzppZihvLnByZXY9NyxvLnQwPW8uY2F0Y2goMSksIW4pe28ubmV4dD0xNDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7by5uZXh0PTEzO2JyZWFrfXJldHVybiBvLm5leHQ9MTMsYShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2NvZGU6Vn0pKTtjYXNlIDEzOiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAxNDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSQS1TRTAxIixudWxsIT09KHU9bnVsbD09PW8udDB8fHZvaWQgMD09PW8udDA/dm9pZCAwOm8udDAubmFtZSkmJnZvaWQgMCE9PXU/dToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0oYz1udWxsPT09by50MHx8dm9pZCAwPT09by50MD92b2lkIDA6by50MC5tZXNzYWdlKSYmdm9pZCAwIT09Yz9jOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxNTppZighZil7by5uZXh0PTE3O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0LmFsbCYmdC5hbGwoYikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFMobCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighbil7dC5uZXh0PTU7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3QubmV4dD00O2JyZWFrfXJldHVybiB0Lm5leHQ9NCxhKGUpO2Nhc2UgNDoiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKSk7Y2FzZSAxNzppZighbil7by5uZXh0PTIyO2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtvLm5leHQ9MjE7YnJlYWt9cmV0dXJuIG8ubmV4dD0yMSxhKGUpO2Nhc2UgMjE6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDIyOnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAyMzpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNjQ6dGhyb3cgbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUkEtSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIik7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGMuc3RvcCgpfX0pLGMsdGhpcyxbWzUsNTIsNTUsNThdXSl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhLGkpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOmlmKChzPW8uc2VudCkuc3RvcmFnZSE9PVUuQnJvd3Nlck1lbW9yeXx8IXMuZW5hYmxlUEtDRXx8IXQpe28ubmV4dD05O2JyZWFrfXJldHVybiB1PWNyLmdldFBLQ0UoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpKSxvLm5leHQ9Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5zZXRQS0NFQ29kZShMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCksdSk7Y2FzZSA3Om8ubmV4dD0xMjticmVhaztjYXNlIDk6aWYocy5zdG9yYWdlIT09VS5XZWJXb3JrZXJ8fCFhKXtvLm5leHQ9MTI7YnJlYWt9cmV0dXJuIG8ubmV4dD0xMix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5zZXRQS0NFQ29kZShhLG51bGwhPWk/aToiIik7Y2FzZSAxMjppZighZSl7by5uZXh0PTE0O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZXF1ZXN0QWNjZXNzVG9rZW4oZSxudWxsIT10P3Q6IiIsbnVsbCE9aT9pOiIiKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBTKGMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocy5zdG9yYWdlPT09VS5XZWJXb3JrZXIpe2UubmV4dD0xMDticmVha31yZXR1cm4gZS50MD1jcixlLm5leHQ9NCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRTaWduT3V0VVJMKCk7Y2FzZSA0OmUudDE9ZS5zZW50LGUudDAuc2V0U2lnbk91dFVSTC5jYWxsKGUudDAsZS50MSksdGhpcy5fc3BhSGVscGVyJiYodGhpcy5fc3BhSGVscGVyLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCkpLG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZzLmVuYWJsZU9JRENTZXNzaW9uTWFuYWdlbWVudCYmbigpLGUubmV4dD0xMTticmVhaztjYXNlIDEwOnRoaXMuX3NwYUhlbHBlciYmdGhpcy5fc3BhSGVscGVyLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKTtjYXNlIDExOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE0OnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLVJBVDEtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gY29kZS4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIGZvdW5kLiIpKSk7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyl9KSkpfX0se2tleToidHJ5U2lnbkluU2lsZW50bHkiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsYz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6aWYoIWNyLmlzSW5pdGlhbGl6ZWRTaWxlbnRTaWduSW4oKSl7aS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGkubmV4dD0zLG4ucmVjZWl2ZVByb21wdE5vbmVSZXNwb25zZSgpO2Nhc2UgMzpyZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKHthbGxvd2VkU2NvcGVzOiIiLGRpc3BsYXlOYW1lOiIiLGVtYWlsOiIiLHNlc3Npb25TdGF0ZToiIixzdWI6IiIsdGVuYW50RG9tYWluOiIiLHVzZXJuYW1lOiIifSkpO2Nhc2UgNDpyZXR1cm4gbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnBJRnJhbWUiKSxzPW51bGw9PT0oYT1udWxsPT1vP3ZvaWQgMDpvLmNvbnRlbnREb2N1bWVudCl8fHZvaWQgMD09PWE/dm9pZCAwOmEuZ2V0RWxlbWVudEJ5SWQoInByb21wdE5vbmVJRnJhbWUiKSxpLnByZXY9NixpLm5leHQ9OSxlKCk7Y2FzZSA5OnU9aS5zZW50LHMuc3JjPXUsaS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6cmV0dXJuIGkucHJldj0xMyxpLnQwPWkuY2F0Y2goNiksaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoaS50MCkpO2Nhc2UgMTY6cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLG5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3ZhciBhPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSghMSl9KSwxZTQpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gaShvKXtyZXR1cm4gUyhjLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHMoKXt2YXIgdSxjLGYsbCxoO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6ImNoZWNrX3Nlc3Npb25fc2lnbmVkX291dCI9PShudWxsPT0oaD1vLmRhdGEpP3ZvaWQgMDpoLnR5cGUpJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLGNsZWFyVGltZW91dChhKSxlKCExKSksImNoZWNrX3Nlc3Npb25fc2lnbmVkX2luIj09KG51bGw9PWg/dm9pZCAwOmgudHlwZSkmJihudWxsPT09KHU9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09dT92b2lkIDA6dS5jb2RlKSYmdChudWxsPT09KGM9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jb2RlLG51bGw9PT0oZj1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnNlc3Npb25TdGF0ZSxudWxsPT09KGw9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09bD92b2lkIDA6bC5zdGF0ZSkudGhlbigoZnVuY3Rpb24odCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLGUodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpKSxuKGUpfSkpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEpfSkpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHMpfSkpKX0pKX0pKSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLGksbnVsbCxbWzYsMTNdXSl9KSkpfX0se2tleToiaGFuZGxlU2lnbkluIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHUsYztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gaT1yLnNlbnQsci5uZXh0PTUsZSgpO2Nhc2UgNTppZighci5zZW50KXtyLm5leHQ9NzticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKHthbGxvd2VkU2NvcGVzOiIiLGRpc3BsYXlOYW1lOiIiLGVtYWlsOiIiLHNlc3Npb25TdGF0ZToiIixzdWI6IiIsdGVuYW50RG9tYWluOiIiLHVzZXJuYW1lOiIifSkpO2Nhc2UgNzppZihpLnN0b3JhZ2U9PT1VLldlYldvcmtlcil7ci5uZXh0PTE5O2JyZWFrfXJldHVybiByLm5leHQ9MTAsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCk7Y2FzZSAxMDppZighci5zZW50KXtyLm5leHQ9MTk7YnJlYWt9cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSx0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGkuZW5hYmxlT0lEQ1Nlc3Npb25NYW5hZ2VtZW50JiZ0KCksci50MD1Qcm9taXNlLHIubmV4dD0xNyx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSAxNzpyZXR1cm4gci50MT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsci50MC5yZXNvbHZlLmNhbGwoci50MCxyLnQxKSk7Y2FzZSAxOTppZihvPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoVykscz1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KHopLCFvKXtyLm5leHQ9Mjc7YnJlYWt9dGhyb3codT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkuc2VhcmNoUGFyYW1zLmRlbGV0ZShXKSx1LnNlYXJjaFBhcmFtcy5kZWxldGUoeiksaGlzdG9yeS5wdXNoU3RhdGUobnVsbCxkb2N1bWVudC50aXRsZSx1LnRvU3RyaW5nKCkpLG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItU0ktU0UwMSIsbyxudWxsIT1zP3M6IiIpO2Nhc2UgMjc6aWYoaS5zdG9yYWdlIT09VS5XZWJXb3JrZXJ8fCFuKXtyLm5leHQ9MzM7YnJlYWt9cmV0dXJuIHIubmV4dD0zMCxuKCk7Y2FzZSAzMDppZighKGM9ci5zZW50KSl7ci5uZXh0PTMzO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDMzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QWNjZXNzVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpOyFmdW5jdGlvbihlKXt2YXIgdCxuPXNlbGY7bi5vbm1lc3NhZ2U9ZnVuY3Rpb24obil7dmFyIHM9bi5kYXRhLHU9bi5wb3J0cztyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBjLGYsbCxoLHAsZDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKHA9dVswXSxzLnR5cGU9PT1CfHx0KXtyLm5leHQ9NDticmVha31yZXR1cm4gcC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBJKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxyLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnIudDA9cy50eXBlLHIubmV4dD1yLnQwPT09Qj83OiJnZXRfYXV0aF91cmwiPT09ci50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ci50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PXIudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ci50MD8yODoic2lnbi1vdXQiPT09ci50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ci50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1yLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1yLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PXIudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PXIudDA/NzY6ImdldF9pZF90b2tlbiI9PT1yLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PXIudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1yLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1yLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1yLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ci50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1yLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ci50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ci50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1yLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiByLnByZXY9NyxkPU9iamVjdC5hc3NpZ24oe30scy5kYXRhKSxyLm5leHQ9MTEsTGEoZCxlKTtjYXNlIDExOih0PXIuc2VudCkuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhvKSx0LnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhhKSx0LnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGkpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxyLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODpyLnByZXY9MTgsci50MT1yLmNhdGNoKDcpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQxKSk7Y2FzZSAyMTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjI6cmV0dXJuIHQuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT1zP3ZvaWQgMDpzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIHQucmVxdWVzdEFjY2Vzc1Rva2VuKG51bGw9PT0oYz1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNvZGUsbnVsbD09PShmPW51bGw9PXM/dm9pZCAwOnMuZGF0YSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuc2Vzc2lvblN0YXRlLG51bGw9PT0obD1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnBrY2UsbnVsbD09PShoPW51bGw9PXM/dm9pZCAwOnMuZGF0YSl8fHZvaWQgMD09PWg/dm9pZCAwOmguc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIHQuaHR0cFJlcXVlc3Qocy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI4OnJldHVybiB0Lmh0dHBSZXF1ZXN0QWxsKHMuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gci5wcmV2PTMwLHIudDI9cCxyLnQzPXVyLHIubmV4dD0zNSx0LnNpZ25PdXQoKTtjYXNlIDM1OnIudDQ9ci5zZW50LHIudDU9ci50My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MyxyLnQ0KSxyLnQyLnBvc3RNZXNzYWdlLmNhbGwoci50MixyLnQ1KSxyLm5leHQ9NDM7YnJlYWs7Y2FzZSA0MDpyLnByZXY9NDAsci50Nj1yLmNhdGNoKDMwKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NikpO2Nhc2UgNDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiB0LnJlcXVlc3RDdXN0b21HcmFudChzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDY6cmV0dXJuIHQucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiByLnByZXY9NDgsci50Nz1wLHIudDg9dXIsci5uZXh0PTUzLHQuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTtjYXNlIDUzOnIudDk9ci5zZW50LHIudDEwPXIudDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDgsci50OSksci50Ny5wb3N0TWVzc2FnZS5jYWxsKHIudDcsci50MTApLHIubmV4dD02MTticmVhaztjYXNlIDU4OnIucHJldj01OCxyLnQxMT1yLmNhdGNoKDQ4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MTEpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gci5wcmV2PTYyLHIudDEyPXAsci50MTM9dXIsci5uZXh0PTY3LHQuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ci50MTQ9ci5zZW50LHIudDE1PXIudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQxMyxyLnQxNCksci50MTIucG9zdE1lc3NhZ2UuY2FsbChyLnQxMixyLnQxNSksci5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ci5wcmV2PTcyLHIudDE2PXIuY2F0Y2goNjIpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQxNikpO2Nhc2UgNzU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDc2OnJldHVybiByLnByZXY9NzYsci50MTc9cCxyLnQxOD11cixyLm5leHQ9ODEsdC5nZXREZWNvZGVkSURUb2tlbigpO2Nhc2UgODE6ci50MTk9ci5zZW50LHIudDIwPXIudDE4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQxOCxyLnQxOSksci50MTcucG9zdE1lc3NhZ2UuY2FsbChyLnQxNyxyLnQyMCksci5uZXh0PTg5O2JyZWFrO2Nhc2UgODY6ci5wcmV2PTg2LHIudDIxPXIuY2F0Y2goNzYpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQyMSkpO2Nhc2UgODk6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiByLnByZXY9OTAsci50MjI9cCxyLnQyMz11cixyLm5leHQ9OTUsdC5nZXRJRFRva2VuKCk7Y2FzZSA5NTpyLnQyND1yLnNlbnQsci50MjU9ci50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDIzLHIudDI0KSxyLnQyMi5wb3N0TWVzc2FnZS5jYWxsKHIudDIyLHIudDI1KSxyLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOnIucHJldj0xMDAsci50MjY9ci5jYXRjaCg5MCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gdC5lbmFibGVIdHRwSGFuZGxlcigpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxyLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIHQuZGlzYWJsZUh0dHBIYW5kbGVyKCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gci5wcmV2PTExMCxyLnQyNz1wLHIudDI4PXVyLHIubmV4dD0xMTUsdC5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTpyLnQyOT1yLnNlbnQsci50MzA9ci50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDI4LHIudDI5KSxyLnQyNy5wb3N0TWVzc2FnZS5jYWxsKHIudDI3LHIudDMwKSxyLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOnIucHJldj0xMjAsci50MzE9ci5jYXRjaCgxMTApLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQzMSkpO2Nhc2UgMTIzOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMjQ6cmV0dXJuIHIucHJldj0xMjQsci50MzI9cCxyLnQzMz11cixyLm5leHQ9MTI5LHQuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMTI5OnIudDM0PXIuc2VudCxyLnQzNT1yLnQzMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MzMsci50MzQpLHIudDMyLnBvc3RNZXNzYWdlLmNhbGwoci50MzIsci50MzUpLHIubmV4dD0xMzc7YnJlYWs7Y2FzZSAxMzQ6ci5wcmV2PTEzNCxyLnQzNj1yLmNhdGNoKDEyNCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEzODpyZXR1cm4gci5wcmV2PTEzOCxyLnQzNz1wLHIudDM4PXVyLHIubmV4dD0xNDMsdC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzpyLnQzOT1yLnNlbnQsci50NDA9ci50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDM4LHIudDM5KSxyLnQzNy5wb3N0TWVzc2FnZS5jYWxsKHIudDM3LHIudDQwKSxyLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OnIucHJldj0xNDgsci50NDE9ci5jYXRjaCgxMzgpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSh0LnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX1yZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTU0OnJldHVybiByLnByZXY9MTU0LHIudDQyPXAsci50NDM9dXIsci5uZXh0PTE1OSx0LnNldFNlc3Npb25TdGF0ZShudWxsPT1zP3ZvaWQgMDpzLmRhdGEpO2Nhc2UgMTU5OnIudDQ0PXIuc2VudCxyLnQ0NT1yLnQ0My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NDMsci50NDQpLHIudDQyLnBvc3RNZXNzYWdlLmNhbGwoci50NDIsci50NDUpLHIubmV4dD0xNjc7YnJlYWs7Y2FzZSAxNjQ6ci5wcmV2PTE2NCxyLnQ0Nj1yLmNhdGNoKDE1NCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDQ2KSk7Y2FzZSAxNjc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE2ODpyZXR1cm4gci5wcmV2PTE2OCxyLnQ0Nz1wLHIudDQ4PXVyLHIubmV4dD0xNzMsdC51cGRhdGVDb25maWcobnVsbD09cz92b2lkIDA6cy5kYXRhKTtjYXNlIDE3MzpyLnQ0OT1yLnNlbnQsci50NTA9ci50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDQ4LHIudDQ5KSxyLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKHIudDQ3LHIudDUwKSxyLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OnIucHJldj0xNzgsci50NTE9ci5jYXRjaCgxNjgpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIHIucHJldj0xODIsci50NTI9cCxyLnQ1Mz11cixyLm5leHQ9MTg3LHQuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OnIudDU0PXIuc2VudCxyLnQ1NT1yLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NTMsci50NTQpLHIudDUyLnBvc3RNZXNzYWdlLmNhbGwoci50NTIsci50NTUpLHIubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ci5wcmV2PTE5MixyLnQ1Nj1yLmNhdGNoKDE4MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE5NjpudWxsPT1wfHxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IEkoIlNQQS1DTElFTlRfV09SS0VSLU9OTVNHLUlWMDIiLCJUaGUgbWVzc2FnZSB0eXBlIGlzIGludmFsaWQuIiwiVGhlIG1lc3NhZ2UgdHlwZSBwcm92aWRlZCwgIi5jb25jYXQocy50eXBlLCIsIGlzIGludmFsaWQuIikpKSk7Y2FzZSAxOTc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLG51bGwsW1s3LDE4XSxbMzAsNDBdLFs0OCw1OF0sWzYyLDcyXSxbNzYsODZdLFs5MCwxMDBdLFsxMTAsMTIwXSxbMTI0LDEzNF0sWzEzOCwxNDhdLFsxNTQsMTY0XSxbMTY4LDE3OF0sWzE4MiwxOTJdXSl9KSkpfTt2YXIgYT1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LGk9ZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sbz1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfX0oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVYShlLHQpfSkpO3JldHVybnt9fSgpOwoK",kA=null,UA=!1,function(t){return TA=TA||xA(HA,kA,UA),new Worker(TA,t)});!function(t){t.LocalStorage="localStorage",t.SessionStorage="sessionStorage",t.WebWorker="webWorker",t.BrowserMemory="browserMemory"}(wA||(wA={})),function(t){t.SignIn="sign-in",t.SignOut="sign-out",t.Initialize="initialize",t.HttpRequestStart="http-request-start",t.HttpRequestFinish="http-request-finish",t.HttpRequestError="http-request-error",t.HttpRequestSuccess="http-request-success",t.RevokeAccessToken="revoke-access-token",t.CustomGrant="custom-grant",t.SignOutFailed="sign-out-failed"}(FA||(FA={}));var BA,zA,jA,MA,QA,PA,EA,DA,OA,_A,qA,$A,tB,eB,nB,iB,rB,cB="Y2hlY2tTZXNzaW9u",aB=function(){function t(e,n){u(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer(),this._spaHelper=n}return s(t,[{key:"attachToken",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Object.assign({attachToken:!0},t).attachToken){e.next=11;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=7,this._authenticationClient.getAccessToken();case 7:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5);case 11:case"end":return e.stop()}}),e,this)})))}},{key:"setHttpRequestStartCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestStartCallback)&&t.setHttpRequestStartCallback(e)}},{key:"setHttpRequestSuccessCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestSuccessCallback)&&t.setHttpRequestSuccessCallback(e)}},{key:"setHttpRequestFinishCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestFinishCallback)&&t.setHttpRequestFinishCallback(e)}},{key:"enableHttpHandler",value:function(t){(null==t?void 0:t.enableHandler)&&t.enableHandler()}},{key:"disableHttpHandler",value:function(t){(null==t?void 0:t.disableHandler)&&t.disableHandler()}},{key:"initializeSessionManger",value:function(t,e,n,i,r){var c,a,o;r.initialize(t.clientID,null!==(c=e.checkSessionIframe)&&void 0!==c?c:"",n,null!==(a=t.checkSessionInterval)&&void 0!==a?a:3,null!==(o=t.sessionRefreshInterval)&&void 0!==o?o:300,t.signInRedirectURL,i)}},{key:"requestCustomGrant",value:function(t,e){var n,i,r;return cA(this,void 0,void 0,c().mark((function a(){var o,l,u,d,s,m=this;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(o=!0,l=!1,!(null==t?void 0:t.tokenEndpoint)){a.next=39;break}return o=!1,u=0,a.t0=[],a.t1=V,a.next=9,this._dataLayer.getConfigData();case 9:if(a.t4=n=a.sent,a.t3=null===a.t4,a.t3){a.next=13;break}a.t3=void 0===n;case 13:if(!a.t3){a.next=17;break}a.t5=void 0,a.next=18;break;case 17:a.t5=n.resourceServerURLs;case 18:if(a.t6=i=a.t5,a.t2=null!==a.t6,!a.t2){a.next=22;break}a.t2=void 0!==i;case 22:if(!a.t2){a.next=26;break}a.t7=i,a.next=27;break;case 26:a.t7=[];case 27:a.t8=a.t7,a.t9=(0,a.t1)(a.t8),a.t10=[t.baseUrl],d=a.t0.concat.call(a.t0,a.t9,a.t10);case 31:if(!(u<d.length)){a.next=39;break}if(!(s=d[u])||!(null===(r=t.tokenEndpoint)||void 0===r?void 0:r.startsWith(s))){a.next=36;break}return l=!0,a.abrupt("break",39);case 36:u++,a.next=31;break;case 39:if(t.shouldReplayAfterRefresh&&this._dataLayer.setTemporaryDataParameter("custom_grant_config",JSON.stringify(t)),!o&&!l){a.next=44;break}return a.abrupt("return",this._authenticationClient.requestCustomGrant(t).then((function(n){return cA(m,void 0,void 0,c().mark((function i(){return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(e&&"function"==typeof e&&e(t),!t.returnsSession){i.next=6;break}return this._spaHelper.refreshAccessTokenAutomatically(),i.abrupt("return",this._authenticationClient.getBasicUserInfo());case 6:return i.abrupt("return",n);case 7:case"end":return i.stop()}}),i,this)})))})).catch((function(t){return Promise.reject(t)})));case 44:return a.abrupt("return",Promise.reject(new CA("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 a.stop()}}),a,this)})))}},{key:"getCustomGrantConfigData",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter("custom_grant_config");case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t,this)})))}},{key:"refreshAccessToken",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){var n;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._authenticationClient.refreshAccessToken();case 3:return e.next=5,this.getCustomGrantConfigData();case 5:if(!(n=e.sent)){e.next=9;break}return e.next=9,this.requestCustomGrant(n,t);case 9:return this._spaHelper.refreshAccessTokenAutomatically(),e.abrupt("return",this._authenticationClient.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,this,[[0,13]])})))}},{key:"httpRequest",value:function(t,e,n,i,r,a){var o,l;return cA(this,void 0,void 0,c().mark((function u(){var d,s,m,h,b,p=this;return c().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return d=!1,u.next=3,this._dataLayer.getConfigData();case 3:return s=u.sent,m=0,u.t0=[],u.t1=V,u.next=9,null==s?void 0:s.resourceServerURLs;case 9:if(u.t3=o=u.sent,u.t2=null!==u.t3,!u.t2){u.next=13;break}u.t2=void 0!==o;case 13:if(!u.t2){u.next=17;break}u.t4=o,u.next=18;break;case 17:u.t4=[];case 18:u.t5=u.t4,u.t6=(0,u.t1)(u.t5),u.t7=[s.baseUrl],h=u.t0.concat.call(u.t0,u.t6,u.t7);case 22:if(!(m<h.length)){u.next=30;break}if(!(b=h[m])||!(null===(l=null==e?void 0:e.url)||void 0===l?void 0:l.startsWith(b))){u.next=27;break}return d=!0,u.abrupt("break",30);case 27:m++,u.next=22;break;case 30:if(!d){u.next=34;break}return u.abrupt("return",t.request(e).then((function(t){return Promise.resolve(t)})).catch((function(o){return cA(p,void 0,void 0,c().mark((function l(){var u,d,s,m,h;return c().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(401!==(null===(u=null==o?void 0:o.response)||void 0===u?void 0:u.status)&&(null==o?void 0:o.response)){c.next=31;break}return c.prev=1,c.next=4,this.refreshAccessToken(a);case 4:m=c.sent,c.next=15;break;case 7:if(c.prev=7,c.t0=c.catch(1),!n){c.next=14;break}if("function"!=typeof i){c.next=13;break}return c.next=13,i(Object.assign(Object.assign({},o),{code:"Access token is invalid"}));case 13:"function"==typeof r&&r();case 14:throw new CA("SPA-AUTH_HELPER-HR-SE01",null!==(d=null===c.t0||void 0===c.t0?void 0:c.t0.name)&&void 0!==d?d:"Refresh token request failed.",null!==(s=null===c.t0||void 0===c.t0?void 0:c.t0.message)&&void 0!==s?s:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!m){c.next=31;break}return c.prev=16,c.next=19,t.request(e);case 19:return h=c.sent,c.abrupt("return",Promise.resolve(h));case 23:if(c.prev=23,c.t1=c.catch(16),!n){c.next=30;break}if("function"!=typeof i){c.next=29;break}return c.next=29,i(c.t1);case 29:"function"==typeof r&&r();case 30:return c.abrupt("return",Promise.reject(c.t1));case 31:if(!n){c.next=36;break}if("function"!=typeof i){c.next=35;break}return c.next=35,i(o);case 35:"function"==typeof r&&r();case 36:return c.abrupt("return",Promise.reject(o));case 37:case"end":return c.stop()}}),l,this,[[1,7],[16,23]])})))})));case 34:return u.abrupt("return",Promise.reject(new CA("SPA-AUTH_HELPER-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 u.stop()}}),u,this)})))}},{key:"httpRequestAll",value:function(t,e,n,i,r){var a,o,l;return cA(this,void 0,void 0,c().mark((function u(){var d,s,m,h,b,p,Z,I,y,g,X=this;return c().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return d=!0,u.next=3,this._dataLayer.getConfigData();case 3:s=u.sent,m=C(t),u.prev=5,m.s();case 7:if((h=m.n()).done){u.next=50;break}return b=h.value,p=!1,Z=0,u.t0=[],u.t1=V,u.next=15,s;case 15:if(u.t4=a=u.sent,u.t3=null===u.t4,u.t3){u.next=19;break}u.t3=void 0===a;case 19:if(!u.t3){u.next=23;break}u.t5=void 0,u.next=24;break;case 23:u.t5=a.resourceServerURLs;case 24:if(u.t6=o=u.t5,u.t2=null!==u.t6,!u.t2){u.next=28;break}u.t2=void 0!==o;case 28:if(!u.t2){u.next=32;break}u.t7=o,u.next=33;break;case 32:u.t7=[];case 33:u.t8=u.t7,u.t9=(0,u.t1)(u.t8),u.t10=[s.baseUrl],I=u.t0.concat.call(u.t0,u.t9,u.t10);case 37:if(!(Z<I.length)){u.next=45;break}if(!(y=I[Z])||!(null===(l=b.url)||void 0===l?void 0:l.startsWith(y))){u.next=42;break}return p=!0,u.abrupt("break",45);case 42:Z++,u.next=37;break;case 45:if(p){u.next=48;break}return d=!1,u.abrupt("break",50);case 48:u.next=7;break;case 50:u.next=55;break;case 52:u.prev=52,u.t11=u.catch(5),m.e(u.t11);case 55:return u.prev=55,m.f(),u.finish(55);case 58:if(g=[],!d){u.next=64;break}return t.forEach((function(t){g.push(e.request(t))})),u.abrupt("return",(null==e?void 0:e.all)&&e.all(g).then((function(t){return Promise.resolve(t)})).catch((function(t){return cA(X,void 0,void 0,c().mark((function a(){var o,l,u,d,s=this;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(401!==(null===(o=null==t?void 0:t.response)||void 0===o?void 0:o.status)&&(null==t?void 0:t.response)){a.next=17;break}return a.prev=1,a.next=4,this._authenticationClient.refreshAccessToken();case 4:d=a.sent,a.next=15;break;case 7:if(a.prev=7,a.t0=a.catch(1),!n){a.next=14;break}if("function"!=typeof i){a.next=13;break}return a.next=13,i(Object.assign(Object.assign({},t),{code:"Access token is invalid"}));case 13:"function"==typeof r&&r();case 14:throw new CA("SPA-AUTH_HELPER-HRA-SE01",null!==(l=null===a.t0||void 0===a.t0?void 0:a.t0.name)&&void 0!==l?l:"Refresh token request failed.",null!==(u=null===a.t0||void 0===a.t0?void 0:a.t0.message)&&void 0!==u?u:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!d){a.next=17;break}return a.abrupt("return",e.all&&e.all(g).then((function(t){return Promise.resolve(t)})).catch((function(t){return cA(s,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}if("function"!=typeof i){e.next=4;break}return e.next=4,i(t);case 4:"function"==typeof r&&r();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!n){a.next=22;break}if("function"!=typeof i){a.next=21;break}return a.next=21,i(t);case 21:"function"==typeof r&&r();case 22:return a.abrupt("return",Promise.reject(t));case 23:case"end":return a.stop()}}),a,this,[[1,7]])})))})));case 64:throw new CA("SPA-AUTH_HELPER-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 u.stop()}}),u,this,[[5,52,55,58]])})))}},{key:"requestAccessToken",value:function(t,e,n,i,r){return cA(this,void 0,void 0,c().mark((function a(){var o,l,u=this;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._dataLayer.getConfigData();case 2:if((o=a.sent).storage!==wA.BrowserMemory||!o.enablePKCE||!e){a.next=9;break}return l=uB.getPKCE(SA.extractPKCEKeyFromStateParam(e)),a.next=7,this._authenticationClient.setPKCECode(SA.extractPKCEKeyFromStateParam(e),l);case 7:a.next=12;break;case 9:if(o.storage!==wA.WebWorker||!i){a.next=12;break}return a.next=12,this._authenticationClient.setPKCECode(i,null!=r?r:"");case 12:if(!t){a.next=14;break}return a.abrupt("return",this._authenticationClient.requestAccessToken(t,null!=e?e:"",null!=r?r:"").then((function(){return cA(u,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o.storage===wA.WebWorker){t.next=10;break}return t.t0=uB,t.next=4,this._authenticationClient.getSignOutURL();case 4:t.t1=t.sent,t.t0.setSignOutURL.call(t.t0,t.t1),this._spaHelper&&(this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically()),n&&"function"==typeof n&&o.enableOIDCSessionManagement&&n(),t.next=11;break;case 10:this._spaHelper&&this._spaHelper.refreshAccessTokenAutomatically();case 11:return t.abrupt("return",this._authenticationClient.getBasicUserInfo());case 12:case"end":return t.stop()}}),t,this)})))})).catch((function(t){return Promise.reject(t)})));case 14:return a.abrupt("return",Promise.reject(new CA("SPA-AUTH_HELPER-RAT1-NF01","No authorization code.","No authorization code was found.")));case 15:case"end":return a.stop()}}),a,this)})))}},{key:"trySignInSilently",value:function(t,e,n){var i;return cA(this,void 0,void 0,c().mark((function r(){var a,o,l,u=this;return c().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!uB.isInitializedSilentSignIn()){r.next=4;break}return r.next=3,n.receivePromptNoneResponse();case 3:return r.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:return a=document.getElementById("rpIFrame"),o=null===(i=null==a?void 0:a.contentDocument)||void 0===i?void 0:i.getElementById("promptNoneIFrame"),r.prev=6,r.next=9,t();case 9:l=r.sent,o.src=l,r.next=16;break;case 13:return r.prev=13,r.t0=r.catch(6),r.abrupt("return",Promise.reject(r.t0));case 16:return r.abrupt("return",new Promise((function(t,n){var i=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function r(a){return cA(u,void 0,void 0,c().mark((function o(){var l,u,d,s,m;return c().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(m=a.data)?void 0:m.type)&&(window.removeEventListener("message",r),clearTimeout(i),t(!1)),"check_session_signed_in"==(null==m?void 0:m.type)&&(null===(l=null==m?void 0:m.data)||void 0===l?void 0:l.code)&&e(null===(u=null==m?void 0:m.data)||void 0===u?void 0:u.code,null===(d=null==m?void 0:m.data)||void 0===d?void 0:d.sessionState,null===(s=null==m?void 0:m.data)||void 0===s?void 0:s.state).then((function(e){window.removeEventListener("message",r),t(e)})).catch((function(t){window.removeEventListener("message",r),n(t)})).finally((function(){clearTimeout(i)}));case 3:case"end":return c.stop()}}),o)})))}))})));case 17:case"end":return r.stop()}}),r,null,[[6,13]])})))}},{key:"handleSignIn",value:function(t,e,n){return cA(this,void 0,void 0,c().mark((function i(){var r,a,o,l,u;return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getConfigData();case 2:return r=i.sent,i.next=5,t();case 5:if(!i.sent){i.next=7;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:if(r.storage===wA.WebWorker){i.next=19;break}return i.next=10,this._authenticationClient.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically(),r.enableOIDCSessionManagement&&e(),i.t0=Promise,i.next=17,this._authenticationClient.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if(a=new URL(window.location.href).searchParams.get("error"),o=new URL(window.location.href).searchParams.get("error_description"),!a){i.next=27;break}throw(l=new URL(window.location.href)).searchParams.delete("error"),l.searchParams.delete("error_description"),history.pushState(null,document.title,l.toString()),new CA("SPA-AUTH_HELPER-SI-SE01",a,null!=o?o:"");case 27:if(r.storage!==wA.WebWorker||!n){i.next=33;break}return i.next=30,n();case 30:if(!(u=i.sent)){i.next=33;break}return i.abrupt("return",u);case 33:case"end":return i.stop()}}),i,this)})))}},{key:"getBasicUserInfo",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"isAuthenticated",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}}]),t}(),oB=function(){function t(e){u(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return s(t,[{key:"refreshAccessTokenAutomatically",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e,n,i,r=this;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),i=setTimeout((function(){return cA(r,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(bA,JSON.stringify(i));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(bA);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(bA);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),lB=function(){function t(){u(this,t)}return s(t,null,[{key:"generateSuccessMessage",value:function(t){return{blob:(null==t?void 0:t.data)instanceof Blob?null==t?void 0:t.data:null,data:JSON.stringify(null!=t?t:""),success:!0}}},{key:"generateFailureMessage",value:function(t){return(null==t?void 0:t.toJSON)&&delete t.toJSON,{error:JSON.stringify(null!=t?t:""),success:!1}}}]),t}(),uB=function(){function t(){u(this,t)}return s(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(t){var e;return null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:""}},{key:"setPKCE",value:function(t,e){sessionStorage.setItem(t,e)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem(fA,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(fA))&&void 0!==t?t:""}},{key:"removePKCE",value:function(t){sessionStorage.removeItem(t)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem("initialized-silent-sign-in"),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!JA.isSignOutSuccessful(window.location.href)){t.next=6;break}return e=window.location.href.split("?")[0],history.pushState({},document.title,e),t.next=5,JA.clearUserSessionData();case 5:return t.abrupt("return",!0);case 6:return t.abrupt("return",!1);case 7:case"end":return t.stop()}}),t)})))}},{key:"didSignOutFail",value:function(){if(JA.didSignOutFail(window.location.href)){var t=new URL(window.location.href),e=t.searchParams.get("error"),n=t.searchParams.get("error_description"),i=window.location.href.split("?")[0];return history.pushState({},document.title,i),{description:null!=n?n:"",error:null!=e?e:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var t,e=new URL(window.location.href).searchParams.get("state");return null!==(t=null==e?void 0:e.includes("sign-in-silently"))&&void 0!==t&&t}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,e=new URL(t);return!!e.searchParams.get("error")&&e.searchParams.get("state")!==VA}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem("promptNoneRequestSent");return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem("promptNoneRequestSent",JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){var n;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),dB=($A=function(t,e,n,i,r,c,a){BA=t,zA=e,jA=n,QA=c,PA=r,qA=a,(MA=i)>-1&&tB(),PA>-1&&(r=setInterval((function(){iB()}),1e3*PA))},tB=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n,i,r;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=function(){var t;return cA(this,void 0,void 0,c().mark((function e(){var i,r,a,o,l;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,jA();case 2:i=e.sent,Boolean(BA)&&Boolean(i)&&(r="".concat(BA," ").concat(i),a=document.getElementById("rpIFrame"),o=null===(t=null==a?void 0:a.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(l=o.contentWindow)||l.postMessage(r,zA));case 4:case"end":return e.stop()}}),e)})))},zA&&BA&&QA){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",r=document.getElementById("rpIFrame"),(null===(e=null==r?void 0:r.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=zA+"?client_id="+BA+"&redirect_uri="+QA,t.next=9,i();case 9:DA=setInterval(i,1e3*MA),nB();case 11:case"end":return t.stop()}}),t)})))},eB=function(){clearInterval(DA),clearInterval(void 0)},nB=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return cA(this,void 0,void 0,c().mark((function n(){var i;return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((i=zA)&&!((null==i?void 0:i.indexOf(t.origin))<0)&&"set_session_state_from_iframe"!==(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,EA();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&iB();case 13:case"end":return n.stop()}}),n)})))}),!1)},iB=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n,i,r,a;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=document.getElementById("rpIFrame"),i=null===(e=null==n?void 0:n.contentDocument)||void 0===e?void 0:e.getElementById("promptNoneIFrame"),!uB.canSendPromptNoneRequest()){t.next=10;break}return uB.setPromptNoneRequestSent(!0),r=function t(e){var n,i,r;"set_session_state_from_iframe"===(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)&&(_A(null!==(r=null===(i=null==e?void 0:e.data)||void 0===i?void 0:i.data)&&void 0!==r?r:""),null===window||void 0===window||window.removeEventListener("message",t))},OA!==wA.BrowserMemory&&OA!==wA.WebWorker||null===window||void 0===window||window.addEventListener("message",r),t.next=8,qA({prompt:"none",responseMode:"query",state:cB});case 8:a=t.sent,i.src=a;case 10:case"end":return t.stop()}}),t)})))},rB=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var n,i,r,a,o,l,u,d,s,m;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=new URL(window.location.href).searchParams.get("state"),a=new URL(window.location.href).searchParams.get(GA),o=window.parent.parent,null===r||!r.includes(cB)&&!r.includes("sign-in-silently")){e.next=48;break}if(null===(l=new URL(window.location.href).searchParams.get("code"))||0===l.length){e.next=32;break}if(!r.includes("sign-in-silently")){e.next=15;break}return u={data:{code:l,sessionState:null!=a?a:"",state:r},type:"check_session_signed_in"},sessionStorage.setItem("initialized-silent-sign-in","false"),o.postMessage(u,o.origin),uB.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=14,uB.waitTillPageRedirect();case 14:return e.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),OA!==wA.LocalStorage&&OA!==wA.SessionStorage){e.next=23;break}if(e.t0=t,!e.t0){e.next=21;break}return e.next=21,t(d);case 21:e.next=25;break;case 23:s={data:null!=d?d:"",type:"set_session_state_from_iframe"},null===(i=null===(n=null===window||void 0===window?void 0:window.parent)||void 0===n?void 0:n.parent)||void 0===i||i.postMessage(s);case 25:return uB.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=29,uB.waitTillPageRedirect();case 29:return e.abrupt("return",!0);case 32:if(!r.includes("sign-in-silently")){e.next=40;break}return m={type:"check_session_signed_out"},window.parent.parent.postMessage(m,o.origin),uB.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=39,uB.waitTillPageRedirect();case 39:return e.abrupt("return",!0);case 40:return uB.setPromptNoneRequestSent(!1),e.next=43,EA();case 43:return o.location.href=e.sent,window.location.href="about:blank",e.next=47,uB.waitTillPageRedirect();case 47:return e.abrupt("return",!0);case 48:return e.abrupt("return",!1);case 49:case"end":return e.stop()}}),e)})))},function(t,e,n){return cA(void 0,void 0,void 0,c().mark((function i(){var r,a,o,l;return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:(a=document.createElement("iframe")).setAttribute("id","rpIFrame"),a.style.display="none",o=!1,a.onload=function(){var t,e,n,i,r=null==(a=document.getElementById("rpIFrame"))?void 0:a.contentDocument,c=null==r?void 0:r.createElement("iframe");c&&(c.setAttribute("id","opIFrame"),c.style.display="none");var l=null==r?void 0:r.createElement("iframe");l&&(l.setAttribute("id","promptNoneIFrame"),l.style.display="none"),c&&(null===(e=null===(t=null==a?void 0:a.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(c)),l&&(null===(i=null===(n=null==a?void 0:a.contentDocument)||void 0===n?void 0:n.body)||void 0===i||i.appendChild(l)),o=!0},null===(r=null===document||void 0===document?void 0:document.body)||void 0===r||r.appendChild(a),EA=t,OA=e,_A=n,l=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 10:if(!1!==o){i.next=15;break}return i.next=13,l();case 13:i.next=10;break;case 15:return i.abrupt("return",{initialize:$A,receivePromptNoneResponse:rB,reset:eB});case 16:case"end":return i.stop()}}),i)})))}),sB={exports:{}},mB=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}},hB=mB,bB=Object.prototype.toString;function pB(t){return Array.isArray(t)}function ZB(t){return void 0===t}function IB(t){return"[object ArrayBuffer]"===bB.call(t)}function yB(t){return null!==t&&"object"===a(t)}function gB(t){if("[object Object]"!==bB.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function XB(t){return"[object Function]"===bB.call(t)}function GB(t,e){if(null!=t)if("object"!==a(t)&&(t=[t]),pB(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.call(null,t[r],r,t)}var fB={isArray:pB,isArrayBuffer:IB,isBuffer:function(t){return null!==t&&!ZB(t)&&null!==t.constructor&&!ZB(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"[object FormData]"===bB.call(t)},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&IB(t.buffer)},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:yB,isPlainObject:gB,isUndefined:ZB,isDate:function(t){return"[object Date]"===bB.call(t)},isFile:function(t){return"[object File]"===bB.call(t)},isBlob:function(t){return"[object Blob]"===bB.call(t)},isFunction:XB,isStream:function(t){return yB(t)&&XB(t.pipe)},isURLSearchParams:function(t){return"[object URLSearchParams]"===bB.call(t)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:GB,merge:function t(){var e={};function n(n,i){gB(e[i])&&gB(n)?e[i]=t(e[i],n):gB(n)?e[i]=t({},n):pB(n)?e[i]=n.slice():e[i]=n}for(var i=0,r=arguments.length;i<r;i++)GB(arguments[i],n);return e},extend:function(t,e,n){return GB(e,(function(e,i){t[i]=n&&"function"==typeof e?hB(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}},VB=fB;function WB(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var vB=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(VB.isURLSearchParams(e))i=e.toString();else{var r=[];VB.forEach(e,(function(t,e){null!=t&&(VB.isArray(t)?e+="[]":t=[t],VB.forEach(t,(function(t){VB.isDate(t)?t=t.toISOString():VB.isObject(t)&&(t=JSON.stringify(t)),r.push(WB(e)+"="+WB(t))})))})),i=r.join("&")}if(i){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t},CB=fB;function SB(){this.handlers=[]}SB.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},SB.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},SB.prototype.forEach=function(t){CB.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var YB=SB,RB="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function KB(){throw new Error("setTimeout has not been defined")}function NB(){throw new Error("clearTimeout has not been defined")}var LB=KB,JB=NB;function xB(t){if(LB===setTimeout)return setTimeout(t,0);if((LB===KB||!LB)&&setTimeout)return LB=setTimeout,setTimeout(t,0);try{return LB(t,0)}catch(e){try{return LB.call(null,t,0)}catch(e){return LB.call(this,t,0)}}}"function"==typeof RB.setTimeout&&(LB=setTimeout),"function"==typeof RB.clearTimeout&&(JB=clearTimeout);var HB,kB=[],UB=!1,TB=-1;function wB(){UB&&HB&&(UB=!1,HB.length?kB=HB.concat(kB):TB=-1,kB.length&&FB())}function FB(){if(!UB){var t=xB(wB);UB=!0;for(var e=kB.length;e;){for(HB=kB,kB=[];++TB<e;)HB&&HB[TB].run();TB=-1,e=kB.length}HB=null,UB=!1,function(t){if(JB===clearTimeout)return clearTimeout(t);if((JB===NB||!JB)&&clearTimeout)return JB=clearTimeout,clearTimeout(t);try{JB(t)}catch(e){try{return JB.call(null,t)}catch(e){return JB.call(this,t)}}}(t)}}function AB(t,e){this.fun=t,this.array=e}AB.prototype.run=function(){this.fun.apply(null,this.array)};function BB(){}var zB=BB,jB=BB,MB=BB,QB=BB,PB=BB,EB=BB,DB=BB;var OB=RB.performance||{},_B=OB.now||OB.mozNow||OB.msNow||OB.oNow||OB.webkitNow||function(){return(new Date).getTime()};var qB=new Date;var $B={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];kB.push(new AB(t,e)),1!==kB.length||UB||xB(FB)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:zB,addListener:jB,once:MB,off:QB,removeListener:PB,removeAllListeners:EB,emit:DB,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*_B.call(OB),n=Math.floor(e),i=Math.floor(e%1*1e9);return t&&(n-=t[0],(i-=t[1])<0&&(n--,i+=1e9)),[n,i]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-qB)/1e3}},tz=$B,ez=fB,nz=function(t,e,n,i,r){return t.config=e,n&&(t.code=n),t.request=i,t.response=r,t.isAxiosError=!0,t.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}},t},iz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rz=nz,cz=function(t,e,n,i,r){var c=new Error(t);return rz(c,e,n,i,r)},az=cz,oz=fB,lz=oz.isStandardBrowserEnv()?{write:function(t,e,n,i,r,c){var a=[];a.push(t+"="+encodeURIComponent(e)),oz.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),oz.isString(i)&&a.push("path="+i),oz.isString(r)&&a.push("domain="+r),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},uz=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},dz=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t},sz=fB,mz=["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"],hz=fB,bz=hz.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var i=t;return e&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{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 t=i(window.location.href),function(e){var n=hz.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0};function pz(t){this.message=t}pz.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},pz.prototype.__CANCEL__=!0;var Zz=pz,Iz=fB,yz=function(t,e,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?e(az("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)},gz=lz,Xz=vB,Gz=function(t,e){return t&&!uz(e)?dz(t,e):e},fz=function(t){var e,n,i,r={};return t?(sz.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=sz.trim(t.substr(0,i)).toLowerCase(),n=sz.trim(t.substr(i+1)),e){if(r[e]&&mz.indexOf(e)>=0)return;r[e]="set-cookie"===e?(r[e]?r[e]:[]).concat([n]):r[e]?r[e]+", "+n:n}})),r):r},Vz=bz,Wz=cz,vz=iz,Cz=Zz,Sz=function(t){return new Promise((function(e,n){var i,r=t.data,c=t.headers,a=t.responseType;function o(){t.cancelToken&&t.cancelToken.unsubscribe(i),t.signal&&t.signal.removeEventListener("abort",i)}Iz.isFormData(r)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var u=t.auth.username||"",d=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=Gz(t.baseURL,t.url);function m(){if(l){var i="getAllResponseHeaders"in l?fz(l.getAllResponseHeaders()):null,r={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:t,request:l};yz((function(t){e(t),o()}),(function(t){n(t),o()}),r),l=null}}if(l.open(t.method.toUpperCase(),Xz(s,t.params,t.paramsSerializer),!0),l.timeout=t.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(Wz("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(Wz("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",i=t.transitional||vz;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(Wz(e,t,i.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},Iz.isStandardBrowserEnv()){var h=(t.withCredentials||Vz(s))&&t.xsrfCookieName?gz.read(t.xsrfCookieName):void 0;h&&(c[t.xsrfHeaderName]=h)}"setRequestHeader"in l&&Iz.forEach(c,(function(t,e){void 0===r&&"content-type"===e.toLowerCase()?delete c[e]:l.setRequestHeader(e,t)})),Iz.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),a&&"json"!==a&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(i=function(t){l&&(n(!t||t&&t.type?new Cz("canceled"):t),l.abort(),l=null)},t.cancelToken&&t.cancelToken.subscribe(i),t.signal&&(t.signal.aborted?i():t.signal.addEventListener("abort",i))),r||(r=null),l.send(r)}))},Yz=fB,Rz=function(t,e){ez.forEach(t,(function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])}))},Kz=nz,Nz={"Content-Type":"application/x-www-form-urlencoded"};function Lz(t,e){!Yz.isUndefined(t)&&Yz.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var Jz,xz={transitional:iz,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==tz&&"[object process]"===Object.prototype.toString.call(tz))&&(Jz=Sz),Jz),transformRequest:[function(t,e){return Rz(e,"Accept"),Rz(e,"Content-Type"),Yz.isFormData(t)||Yz.isArrayBuffer(t)||Yz.isBuffer(t)||Yz.isStream(t)||Yz.isFile(t)||Yz.isBlob(t)?t:Yz.isArrayBufferView(t)?t.buffer:Yz.isURLSearchParams(t)?(Lz(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):Yz.isObject(t)||e&&"application/json"===e["Content-Type"]?(Lz(e,"application/json"),function(t,e,n){if(Yz.isString(t))try{return(e||JSON.parse)(t),Yz.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||xz.transitional,n=e&&e.silentJSONParsing,i=e&&e.forcedJSONParsing,r=!n&&"json"===this.responseType;if(r||i&&Yz.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(r){if("SyntaxError"===t.name)throw Kz(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Yz.forEach(["delete","get","head"],(function(t){xz.headers[t]={}})),Yz.forEach(["post","put","patch"],(function(t){xz.headers[t]=Yz.merge(Nz)}));var Hz=xz,kz=fB,Uz=Hz,Tz=function(t){return!(!t||!t.__CANCEL__)},wz=fB,Fz=function(t,e,n){var i=this||Uz;return kz.forEach(n,(function(n){t=n.call(i,t,e)})),t},Az=Tz,Bz=Hz,zz=Zz;function jz(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new zz("canceled")}var Mz=fB,Qz=function(t,e){e=e||{};var n={};function i(t,e){return Mz.isPlainObject(t)&&Mz.isPlainObject(e)?Mz.merge(t,e):Mz.isPlainObject(e)?Mz.merge({},e):Mz.isArray(e)?e.slice():e}function r(n){return Mz.isUndefined(e[n])?Mz.isUndefined(t[n])?void 0:i(void 0,t[n]):i(t[n],e[n])}function c(t){if(!Mz.isUndefined(e[t]))return i(void 0,e[t])}function a(n){return Mz.isUndefined(e[n])?Mz.isUndefined(t[n])?void 0:i(void 0,t[n]):i(void 0,e[n])}function o(n){return n in e?i(t[n],e[n]):n in t?i(void 0,t[n]):void 0}var l={url:c,method:c,data:c,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return Mz.forEach(Object.keys(t).concat(Object.keys(e)),(function(t){var e=l[t]||r,i=e(t);Mz.isUndefined(i)&&e!==o||(n[t]=i)})),n},Pz="0.26.1",Ez=Pz,Dz={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){Dz[t]=function(n){return a(n)===t||"a"+(e<1?"n ":" ")+t}}));var Oz={};Dz.transitional=function(t,e,n){function i(t,e){return"[Axios v"+Ez+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,c){if(!1===t)throw new Error(i(r," has been removed"+(e?" in "+e:"")));return e&&!Oz[r]&&(Oz[r]=!0,console.warn(i(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,c)}};var _z={assertOptions:function(t,e,n){if("object"!==a(t))throw new TypeError("options must be an object");for(var i=Object.keys(t),r=i.length;r-- >0;){var c=i[r],o=e[c];if(o){var l=t[c],u=void 0===l||o(l,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:Dz},qz=fB,$z=vB,tj=YB,ej=function(t){return jz(t),t.headers=t.headers||{},t.data=Fz.call(t,t.data,t.headers,t.transformRequest),t.headers=wz.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),wz.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||Bz.adapter)(t).then((function(e){return jz(t),e.data=Fz.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return Az(e)||(jz(t),e&&e.response&&(e.response.data=Fz.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},nj=Qz,ij=_z,rj=ij.validators;function cj(t){this.defaults=t,this.interceptors={request:new tj,response:new tj}}cj.prototype.request=function(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},(e=nj(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=e.transitional;void 0!==n&&ij.assertOptions(n,{silentJSONParsing:rj.transitional(rj.boolean),forcedJSONParsing:rj.transitional(rj.boolean),clarifyTimeoutError:rj.transitional(rj.boolean)},!1);var i=[],r=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,i.unshift(t.fulfilled,t.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(t){a.push(t.fulfilled,t.rejected)})),!r){var o=[ej,void 0];for(Array.prototype.unshift.apply(o,i),o=o.concat(a),c=Promise.resolve(e);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=e;i.length;){var u=i.shift(),d=i.shift();try{l=u(l)}catch(t){d(t);break}}try{c=ej(l)}catch(t){return Promise.reject(t)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},cj.prototype.getUri=function(t){return t=nj(this.defaults,t),$z(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},qz.forEach(["delete","get","head","options"],(function(t){cj.prototype[t]=function(e,n){return this.request(nj(n||{},{method:t,url:e,data:(n||{}).data}))}})),qz.forEach(["post","put","patch"],(function(t){cj.prototype[t]=function(e,n,i){return this.request(nj(i||{},{method:t,url:e,data:n}))}}));var aj=cj,oj=Zz;function lj(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;this.promise.then((function(t){if(n._listeners){var e,i=n._listeners.length;for(e=0;e<i;e++)n._listeners[e](t);n._listeners=null}})),this.promise.then=function(t){var e,i=new Promise((function(t){n.subscribe(t),e=t})).then(t);return i.cancel=function(){n.unsubscribe(e)},i},t((function(t){n.reason||(n.reason=new oj(t),e(n.reason))}))}lj.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},lj.prototype.subscribe=function(t){this.reason?t(this.reason):this._listeners?this._listeners.push(t):this._listeners=[t]},lj.prototype.unsubscribe=function(t){if(this._listeners){var e=this._listeners.indexOf(t);-1!==e&&this._listeners.splice(e,1)}},lj.source=function(){var t,e=new lj((function(e){t=e}));return{token:e,cancel:t}};var uj=lj,dj=fB,sj=fB,mj=mB,hj=aj,bj=Qz;var pj=function t(e){var n=new hj(e),i=mj(hj.prototype.request,n);return sj.extend(i,hj.prototype,n),sj.extend(i,n),i.create=function(n){return t(bj(e,n))},i}(Hz);pj.Axios=hj,pj.Cancel=Zz,pj.CancelToken=uj,pj.isCancel=Tz,pj.VERSION=Pz,pj.all=function(t){return Promise.all(t)},pj.spread=function(t){return function(e){return t.apply(null,e)}},pj.isAxiosError=function(t){return dj.isObject(t)&&!0===t.isAxiosError},sB.exports=pj,sB.exports.default=pj;var Zj,Ij=sB.exports;var yj=Zj=function(){function t(){u(this,t),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(t,[{key:"requestHandler",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){var n,i;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,i=new FormData,Object.keys(n).forEach((function(t){i.append(t,n[t])})),t.data=i),Zj.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw Zj.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return Zj.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:Zj.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){Zj.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){Zj.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Zj.DEFAULT_HANDLER_DISABLE_TIMEOUT;Zj.isHandlerEnabled=!1,setTimeout((function(){Zj.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=Ij.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new Zj),this.axiosInstance.interceptors.request.use((function(e){return cA(t,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=Ij.all,this.axiosInstance.spread=Ij.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}}]),t}();yj.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,yj=Zj=function(t,e,n,i){var r,c=arguments.length,o=c<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,n):i;if("object"===("undefined"==typeof Reflect?"undefined":a(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,i);else for(var l=t.length-1;l>=0;l--)(r=t[l])&&(o=(c<3?r(o):c>3?r(e,n,o):r(e,n))||o);return c>3&&o&&Object.defineProperty(e,n,o),o}([function(t){}],yj);var gj=function(){function t(){u(this,t)}return s(t,[{key:"setData",value:function(t,e){return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),Xj=function(){function t(){u(this,t),this._data=new Map}return s(t,[{key:"setData",value:function(t,e){return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return cA(this,void 0,void 0,c().mark((function i(){return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return i.stop()}}),i,this)})))}},{key:"removeData",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),Gj=function(){function t(){u(this,t)}return s(t,[{key:"setData",value:function(t,e){return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return cA(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return cA(this,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),fj=[],Vj=[],Wj="undefined"!=typeof Uint8Array?Uint8Array:Array,vj=!1;function Cj(){vj=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)fj[e]=t[e],Vj[t.charCodeAt(e)]=e;Vj["-".charCodeAt(0)]=62,Vj["_".charCodeAt(0)]=63}function Sj(t,e,n){for(var i,r,c=[],a=e;a<n;a+=3)i=(t[a]<<16)+(t[a+1]<<8)+t[a+2],c.push(fj[(r=i)>>18&63]+fj[r>>12&63]+fj[r>>6&63]+fj[63&r]);return c.join("")}function Yj(t){var e;vj||Cj();for(var n=t.length,i=n%3,r="",c=[],a=16383,o=0,l=n-i;o<l;o+=a)c.push(Sj(t,o,o+a>l?l:o+a));return 1===i?(e=t[n-1],r+=fj[e>>2],r+=fj[e<<4&63],r+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],r+=fj[e>>10],r+=fj[e>>4&63],r+=fj[e<<2&63],r+="="),c.push(r),c.join("")}function Rj(t,e,n,i,r){var c,a,o=8*r-i-1,l=(1<<o)-1,u=l>>1,d=-7,s=n?r-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(a=c&(1<<-d)-1,c>>=-d,d+=i;d>0;a=256*a+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,i),c-=u}return(h?-1:1)*a*Math.pow(2,c-i)}function Kj(t,e,n,i,r,c){var a,o,l,u=8*c-r-1,d=(1<<u)-1,s=d>>1,m=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:c-1,b=i?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=d):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(a++,l/=2),a+s>=d?(o=0,a=d):a+s>=1?(o=(e*l-1)*Math.pow(2,r),a+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,r),a=0));r>=8;t[n+h]=255&o,h+=b,o/=256,r-=8);for(a=a<<r|o,u+=r;u>0;t[n+h]=255&a,h+=b,a/=256,u-=8);t[n+h-b]|=128*p}var Nj={}.toString,Lj=Array.isArray||function(t){return"[object Array]"==Nj.call(t)};kj.TYPED_ARRAY_SUPPORT=void 0===RB.TYPED_ARRAY_SUPPORT||RB.TYPED_ARRAY_SUPPORT;var Jj=xj();function xj(){return kj.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Hj(t,e){if(xj()<e)throw new RangeError("Invalid typed array length");return kj.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=kj.prototype:(null===t&&(t=new kj(e)),t.length=e),t}function kj(t,e,n){if(!(kj.TYPED_ARRAY_SUPPORT||this instanceof kj))return new kj(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return wj(this,t)}return Uj(this,t,e,n)}function Uj(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i);kj.TYPED_ARRAY_SUPPORT?(t=e).__proto__=kj.prototype:t=Fj(t,e);return t}(t,e,n,i):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!kj.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|zj(e,n),r=(t=Hj(t,i)).write(e,n);r!==i&&(t=t.slice(0,r));return t}(t,e,n):function(t,e){if(Bj(e)){var n=0|Aj(e.length);return 0===(t=Hj(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(i=e.length)!=i?Hj(t,0):Fj(t,e);if("Buffer"===e.type&&Lj(e.data))return Fj(t,e.data)}var i;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function Tj(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function wj(t,e){if(Tj(e),t=Hj(t,e<0?0:0|Aj(e)),!kj.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function Fj(t,e){var n=e.length<0?0:0|Aj(e.length);t=Hj(t,n);for(var i=0;i<n;i+=1)t[i]=255&e[i];return t}function Aj(t){if(t>=xj())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+xj().toString(16)+" bytes");return 0|t}function Bj(t){return!(null==t||!t._isBuffer)}function zj(t,e){if(Bj(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return pM(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return ZM(t).length;default:if(i)return pM(t).length;e=(""+e).toLowerCase(),i=!0}}function jj(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return rM(this,e,n);case"utf8":case"utf-8":return eM(this,e,n);case"ascii":return nM(this,e,n);case"latin1":case"binary":return iM(this,e,n);case"base64":return tM(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return cM(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function Mj(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function Qj(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=kj.from(e,i)),Bj(e))return 0===e.length?-1:Pj(t,e,n,i,r);if("number"==typeof e)return e&=255,kj.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):Pj(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function Pj(t,e,n,i,r){var c,a=1,o=t.length,l=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(r){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*a}else-1!==d&&(c-=c-d),d=-1}else for(n+l>o&&(n=o-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function Ej(t,e,n,i){n=Number(n)||0;var r=t.length-n;i?(i=Number(i))>r&&(i=r):i=r;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");i>c/2&&(i=c/2);for(var a=0;a<i;++a){var o=parseInt(e.substr(2*a,2),16);if(isNaN(o))return a;t[n+a]=o}return a}function Dj(t,e,n,i){return IM(pM(e,t.length-n),t,n,i)}function Oj(t,e,n,i){return IM(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,i)}function _j(t,e,n,i){return Oj(t,e,n,i)}function qj(t,e,n,i){return IM(ZM(e),t,n,i)}function $j(t,e,n,i){return IM(function(t,e){for(var n,i,r,c=[],a=0;a<t.length&&!((e-=2)<0);++a)i=(n=t.charCodeAt(a))>>8,r=n%256,c.push(r),c.push(i);return c}(e,t.length-n),t,n,i)}function tM(t,e,n){return 0===e&&n===t.length?Yj(t):Yj(t.slice(e,n))}function eM(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r<n;){var c,a,o,l,u=t[r],d=null,s=u>239?4:u>223?3:u>191?2:1;if(r+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[r+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=t[r+1],a=t[r+2],128==(192&c)&&128==(192&a)&&(l=(15&u)<<12|(63&c)<<6|63&a)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=t[r+1],a=t[r+2],o=t[r+3],128==(192&c)&&128==(192&a)&&128==(192&o)&&(l=(15&u)<<18|(63&c)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,i.push(d>>>10&1023|55296),d=56320|1023&d),i.push(d),r+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",i=0;for(;i<e;)n+=String.fromCharCode.apply(String,t.slice(i,i+=4096));return n}(i)}kj.poolSize=8192,kj._augment=function(t){return t.__proto__=kj.prototype,t},kj.from=function(t,e,n){return Uj(null,t,e,n)},kj.TYPED_ARRAY_SUPPORT&&(kj.prototype.__proto__=Uint8Array.prototype,kj.__proto__=Uint8Array),kj.alloc=function(t,e,n){return function(t,e,n,i){return Tj(e),e<=0?Hj(t,e):void 0!==n?"string"==typeof i?Hj(t,e).fill(n,i):Hj(t,e).fill(n):Hj(t,e)}(null,t,e,n)},kj.allocUnsafe=function(t){return wj(null,t)},kj.allocUnsafeSlow=function(t){return wj(null,t)},kj.isBuffer=yM,kj.compare=function(t,e){if(!Bj(t)||!Bj(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,i=e.length,r=0,c=Math.min(n,i);r<c;++r)if(t[r]!==e[r]){n=t[r],i=e[r];break}return n<i?-1:i<n?1:0},kj.isEncoding=function(t){switch(String(t).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}},kj.concat=function(t,e){if(!Lj(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return kj.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var i=kj.allocUnsafe(e),r=0;for(n=0;n<t.length;++n){var c=t[n];if(!Bj(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(i,r),r+=c.length}return i},kj.byteLength=zj,kj.prototype._isBuffer=!0,kj.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)Mj(this,e,e+1);return this},kj.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)Mj(this,e,e+3),Mj(this,e+1,e+2);return this},kj.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)Mj(this,e,e+7),Mj(this,e+1,e+6),Mj(this,e+2,e+5),Mj(this,e+3,e+4);return this},kj.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?eM(this,0,t):jj.apply(this,arguments)},kj.prototype.equals=function(t){if(!Bj(t))throw new TypeError("Argument must be a Buffer");return this===t||0===kj.compare(this,t)},kj.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},kj.prototype.compare=function(t,e,n,i,r){if(!Bj(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(r>>>=0)-(i>>>=0),a=(n>>>=0)-(e>>>=0),o=Math.min(c,a),l=this.slice(i,r),u=t.slice(e,n),d=0;d<o;++d)if(l[d]!==u[d]){c=l[d],a=u[d];break}return c<a?-1:a<c?1:0},kj.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},kj.prototype.indexOf=function(t,e,n){return Qj(this,t,e,n,!0)},kj.prototype.lastIndexOf=function(t,e,n){return Qj(this,t,e,n,!1)},kj.prototype.write=function(t,e,n,i){if(void 0===e)i="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)i=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var c=!1;;)switch(i){case"hex":return Ej(this,t,e,n);case"utf8":case"utf-8":return Dj(this,t,e,n);case"ascii":return Oj(this,t,e,n);case"latin1":case"binary":return _j(this,t,e,n);case"base64":return qj(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return $j(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),c=!0}},kj.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function nM(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(127&t[r]);return i}function iM(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(t[r]);return i}function rM(t,e,n){var i=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>i)&&(n=i);for(var r="",c=e;c<n;++c)r+=bM(t[c]);return r}function cM(t,e,n){for(var i=t.slice(e,n),r="",c=0;c<i.length;c+=2)r+=String.fromCharCode(i[c]+256*i[c+1]);return r}function aM(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function oM(t,e,n,i,r,c){if(!Bj(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||e<c)throw new RangeError('"value" argument is out of bounds');if(n+i>t.length)throw new RangeError("Index out of range")}function lM(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,c=Math.min(t.length-n,2);r<c;++r)t[n+r]=(e&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function uM(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,c=Math.min(t.length-n,4);r<c;++r)t[n+r]=e>>>8*(i?r:3-r)&255}function dM(t,e,n,i,r,c){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function sM(t,e,n,i,r){return r||dM(t,0,n,4),Kj(t,e,n,i,23,4),n+4}function mM(t,e,n,i,r){return r||dM(t,0,n,8),Kj(t,e,n,i,52,8),n+8}kj.prototype.slice=function(t,e){var n,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),kj.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=kj.prototype;else{var r=e-t;n=new kj(r,void 0);for(var c=0;c<r;++c)n[c]=this[c+t]}return n},kj.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i},kj.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},kj.prototype.readUInt8=function(t,e){return e||aM(t,1,this.length),this[t]},kj.prototype.readUInt16LE=function(t,e){return e||aM(t,2,this.length),this[t]|this[t+1]<<8},kj.prototype.readUInt16BE=function(t,e){return e||aM(t,2,this.length),this[t]<<8|this[t+1]},kj.prototype.readUInt32LE=function(t,e){return e||aM(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},kj.prototype.readUInt32BE=function(t,e){return e||aM(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},kj.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},kj.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||aM(t,e,this.length);for(var i=e,r=1,c=this[t+--i];i>0&&(r*=256);)c+=this[t+--i]*r;return c>=(r*=128)&&(c-=Math.pow(2,8*e)),c},kj.prototype.readInt8=function(t,e){return e||aM(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},kj.prototype.readInt16LE=function(t,e){e||aM(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},kj.prototype.readInt16BE=function(t,e){e||aM(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},kj.prototype.readInt32LE=function(t,e){return e||aM(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},kj.prototype.readInt32BE=function(t,e){return e||aM(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},kj.prototype.readFloatLE=function(t,e){return e||aM(t,4,this.length),Rj(this,t,!0,23,4)},kj.prototype.readFloatBE=function(t,e){return e||aM(t,4,this.length),Rj(this,t,!1,23,4)},kj.prototype.readDoubleLE=function(t,e){return e||aM(t,8,this.length),Rj(this,t,!0,52,8)},kj.prototype.readDoubleBE=function(t,e){return e||aM(t,8,this.length),Rj(this,t,!1,52,8)},kj.prototype.writeUIntLE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||oM(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,c=0;for(this[e]=255&t;++c<n&&(r*=256);)this[e+c]=t/r&255;return e+n},kj.prototype.writeUIntBE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||oM(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,c=1;for(this[e+r]=255&t;--r>=0&&(c*=256);)this[e+r]=t/c&255;return e+n},kj.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,1,255,0),kj.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},kj.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,65535,0),kj.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):lM(this,t,e,!0),e+2},kj.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,65535,0),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):lM(this,t,e,!1),e+2},kj.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,4294967295,0),kj.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):uM(this,t,e,!0),e+4},kj.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,4294967295,0),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):uM(this,t,e,!1),e+4},kj.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);oM(this,t,e,n,r-1,-r)}var c=0,a=1,o=0;for(this[e]=255&t;++c<n&&(a*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},kj.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);oM(this,t,e,n,r-1,-r)}var c=n-1,a=1,o=0;for(this[e+c]=255&t;--c>=0&&(a*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},kj.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,1,127,-128),kj.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},kj.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,32767,-32768),kj.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):lM(this,t,e,!0),e+2},kj.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,2,32767,-32768),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):lM(this,t,e,!1),e+2},kj.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,2147483647,-2147483648),kj.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):uM(this,t,e,!0),e+4},kj.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||oM(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),kj.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):uM(this,t,e,!1),e+4},kj.prototype.writeFloatLE=function(t,e,n){return sM(this,t,e,!0,n)},kj.prototype.writeFloatBE=function(t,e,n){return sM(this,t,e,!1,n)},kj.prototype.writeDoubleLE=function(t,e,n){return mM(this,t,e,!0,n)},kj.prototype.writeDoubleBE=function(t,e,n){return mM(this,t,e,!1,n)},kj.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,c=i-n;if(this===t&&n<e&&e<i)for(r=c-1;r>=0;--r)t[r+e]=this[r+n];else if(c<1e3||!kj.TYPED_ARRAY_SUPPORT)for(r=0;r<c;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},kj.prototype.fill=function(t,e,n,i){if("string"==typeof t){if("string"==typeof e?(i=e,e=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!kj.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var a=Bj(t)?t:pM(new kj(t,i).toString()),o=a.length;for(c=0;c<n-e;++c)this[c+e]=a[c%o]}return this};var hM=/[^+\/0-9A-Za-z-_]/g;function bM(t){return t<16?"0"+t.toString(16):t.toString(16)}function pM(t,e){var n;e=e||1/0;for(var i=t.length,r=null,c=[],a=0;a<i;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(a+1===i){(e-=3)>-1&&c.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&c.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=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((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function ZM(t){return function(t){var e,n,i,r,c,a;vj||Cj();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,a=new Wj(3*o/4-c),i=c>0?o-4:o;var l=0;for(e=0,n=0;e<i;e+=4,n+=3)r=Vj[t.charCodeAt(e)]<<18|Vj[t.charCodeAt(e+1)]<<12|Vj[t.charCodeAt(e+2)]<<6|Vj[t.charCodeAt(e+3)],a[l++]=r>>16&255,a[l++]=r>>8&255,a[l++]=255&r;return 2===c?(r=Vj[t.charCodeAt(e)]<<2|Vj[t.charCodeAt(e+1)]>>4,a[l++]=255&r):1===c&&(r=Vj[t.charCodeAt(e)]<<10|Vj[t.charCodeAt(e+1)]<<4|Vj[t.charCodeAt(e+2)]>>2,a[l++]=r>>8&255,a[l++]=255&r),a}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(hM,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function IM(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}function yM(t){return null!=t&&(!!t._isBuffer||gM(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&gM(t.slice(0,0))}(t))}function gM(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var XM=Object.freeze({__proto__:null,Buffer:kj,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),kj.alloc(+t)},isBuffer:yM,kMaxLength:Jj}),GM={exports:{}},fM={},VM={};Object.defineProperty(VM,"__esModule",{value:!0}),VM.default=function(t){var e=t.length,n=e%4;if(!n)return t;var i=e,r=4-n,c=e+r,a=kj.alloc(c);for(a.write(t);r--;)a.write("=",i++);return a.toString()},Object.defineProperty(fM,"__esModule",{value:!0});var WM=VM;function vM(t,e){return void 0===e&&(e="utf8"),kj.isBuffer(t)?SM(t.toString("base64")):SM(kj.from(t,e).toString("base64"))}function CM(t){return t=t.toString(),WM.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function SM(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var YM,RM=vM;RM.encode=vM,RM.decode=function(t,e){return void 0===e&&(e="utf8"),kj.from(CM(t),"base64").toString(e)},RM.toBase64=CM,RM.fromBase64=SM,RM.toBuffer=function(t){return kj.from(CM(t),"base64")},fM.default=RM,(YM=GM).exports=fM.default,YM.exports.default=YM.exports;var KM=GM.exports,NM={exports:{}};!function(t){!function(e,n){var i={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=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(t,n,i,r,c){for(var a,o,l,u,d,s,m,h,b,p,Z,I,y;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],p=0;p<16;p++)Z=r+4*p,t[p]=(255&i[Z])<<24|(255&i[Z+1])<<16|(255&i[Z+2])<<8|255&i[Z+3];for(p=16;p<64;p++)I=((b=t[p-2])>>>17|b<<15)^(b>>>19|b<<13)^b>>>10,y=((b=t[p-15])>>>7|b<<25)^(b>>>18|b<<14)^b>>>3,t[p]=(I+t[p-7]|0)+(y+t[p-16]|0);for(p=0;p<64;p++)I=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(e[p]+t[p]|0)|0)|0,y=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,h=m,m=s,s=d,d=u+I|0,u=l,l=o,o=a,a=I+y|0;n[0]+=a,n[1]+=o,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,r+=64,c-=64}return r}var i=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.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 e.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},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var i=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[i++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(i=n(this.temp,this.state,t,i,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[i++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,i=this.bufferLength,r=e/536870912|0,c=e<<3,a=e%64<56?64:128;this.buffer[i]=128;for(var o=i+1;o<a-8;o++)this.buffer[o]=0;this.buffer[a-8]=r>>>24&255,this.buffer[a-7]=r>>>16&255,this.buffer[a-6]=r>>>8&255,this.buffer[a-5]=r>>>0&255,this.buffer[a-4]=c>>>24&255,this.buffer[a-3]=c>>>16&255,this.buffer[a-2]=c>>>8&255,this.buffer[a-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,a),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=i;var r=function(){function t(t){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new i).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;this.inner.update(e);for(n=0;n<e.length;n++)e[n]^=106;this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new i).update(t),n=e.digest();return e.clean(),n}function a(t,e){var n=new r(t).update(e),i=n.digest();return n.clean(),i}function o(t,e,n,i){var r=i[0];if(0===r)throw new Error("hkdf: cannot expand more");e.reset(),r>1&&e.update(t),n&&e.update(n),e.update(i),e.finish(t),i[0]++}t.HMAC=r,t.hash=c,t.default=c,t.hmac=a;var l=new Uint8Array(t.digestLength);function u(t,e,n,i){void 0===e&&(e=l),void 0===i&&(i=32);for(var c=new Uint8Array([1]),u=a(e,t),d=new r(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(i),b=0;b<i;b++)m===s.length&&(o(s,d,n,c),m=0),h[b]=s[m++];return d.clean(),s.fill(0),c.fill(0),h}function d(t,e,n,i){for(var c=new r(t),a=c.digestLength,o=new Uint8Array(4),l=new Uint8Array(a),u=new Uint8Array(a),d=new Uint8Array(i),s=0;s*a<i;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var h=0;h<a;h++)l[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var b=0;b<a;b++)l[b]^=u[b]}for(h=0;h<a&&s*a+h<i;h++)d[s*a+h]=l[h]}for(s=0;s<a;s++)l[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}t.hkdf=u,t.pbkdf2=d}(i);var r=i.default;for(var c in i)r[c]=i[c];t.exports=r}()}(NM);var LM=e(NM.exports),JM=crypto,xM=function(t){return t instanceof CryptoKey},HM=new TextEncoder,kM=new TextDecoder;function UM(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i=e.reduce((function(t,e){return t+e.length}),0),r=new Uint8Array(i),c=0;return e.forEach((function(t){r.set(t,c),c+=t.length})),r}var TM=function(t){var e=t;e instanceof Uint8Array&&(e=kM.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(t){for(var e=atob(t),n=new Uint8Array(e.length),i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return n}(e)}catch(t){throw new TypeError("The input to be decoded is not correctly encoded.")}},wM=function(t){h(n,y(Error));var e=G(n);function n(t){var i,r;return u(this,n),(i=e.call(this,t)).code="ERR_JOSE_GENERIC",i.name=i.constructor.name,null===(r=Error.captureStackTrace)||void 0===r||r.call(Error,g(i),i.constructor),i}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(),FM=function(t){h(n,wM);var e=G(n);function n(t){var i,r=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),(i=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",i.claim=r,i.reason=c,i}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(),AM=function(t){h(n,wM);var e=G(n);function n(t){var i,r=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),(i=e.call(this,t)).code="ERR_JWT_EXPIRED",i.claim=r,i.reason=c,i}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(),BM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(),zM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(),jM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(),MM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(),QM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_INVALID",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(),PM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",t.message="no applicable key found in the JSON Web Key Set",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(),EM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",t.message="multiple matching keys found in the JSON Web Key Set",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(),DM=function(t){h(n,wM);var e=G(n);function n(){var t;return u(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}();function OM(){return"function"==typeof WebSocketPair}function _M(){try{return void 0!==tz.versions.node}catch(t){return!1}}function qM(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(e," must be ").concat(t))}function $M(t,e){return t.name===e}function tQ(t){return parseInt(t.name.slice(4),10)}function eQ(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function nQ(t,e){if(e.length&&!e.some((function(e){return t.usages.includes(e)}))){var n="CryptoKey does not support this operation, its usages must include ";if(e.length>2){var i=e.pop();n+="one of ".concat(e.join(", "),", or ").concat(i,".")}else 2===e.length?n+="one of ".concat(e[0]," or ").concat(e[1],"."):n+="".concat(e[0],".");throw new TypeError(n)}}var iQ=function(t){for(var e="Key must be ",n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];if(i.length>2){var c=i.pop();e+="one of type ".concat(i.join(", "),", or ").concat(c,".")}else 2===i.length?e+="one of type ".concat(i[0]," or ").concat(i[1],"."):e+="of type ".concat(i[0],".");return null==t?e+=" Received ".concat(t):"function"==typeof t&&t.name?e+=" Received function ".concat(t.name):"object"===a(t)&&null!=t&&t.constructor&&t.constructor.name&&(e+=" Received an instance of ".concat(t.constructor.name)),e},rQ=function(t){return xM(t)},cQ=["CryptoKey"],aQ=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i,r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;var c,a=C(r);try{for(a.s();!(c=a.n()).done;){var o=c.value,l=Object.keys(o);if(i&&0!==i.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(i.has(s))return!1;i.add(s)}else i=new Set(l)}}catch(t){a.e(t)}finally{a.f()}return!0};function oQ(t){if("object"!==a(e=t)||null===e||"[object Object]"!==Object.prototype.toString.call(t))return!1;var e;if(null===Object.getPrototypeOf(t))return!0;for(var n=t;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(t)===n}var lQ=function(t,e){if(t.startsWith("RS")||t.startsWith("PS")){var n=e.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}};function uQ(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new zM("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.slice(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":e={name:"ECDSA",namedCurve:"P-256"},n=t.d?["sign"]:["verify"];break;case"ES384":e={name:"ECDSA",namedCurve:"P-384"},n=t.d?["sign"]:["verify"];break;case"ES512":e={name:"ECDSA",namedCurve:"P-521"},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(OM()||_M())&&"OKP":if("EdDSA"!==t.alg)throw new zM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(t.crv){case"Ed25519":e={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=t.d?["sign"]:["verify"];break;case _M()&&"Ed448":e={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=t.d?["sign"]:["verify"];break;default:throw new zM('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new zM('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}var dQ=function(){var t=l(c().mark((function t(e){var n,i,a,o,l,u,d,s,m;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=uQ(e),l=o.algorithm,u=o.keyUsages,d=[l,null!==(i=e.ext)&&void 0!==i&&i,null!==(a=e.key_ops)&&void 0!==a?a:u],"PBKDF2"!==l.name){t.next=4;break}return t.abrupt("return",(s=JM.subtle).importKey.apply(s,["raw",TM(e.k)].concat(d)));case 4:return delete(m=r({},e)).alg,t.abrupt("return",(n=JM.subtle).importKey.apply(n,["jwk",m].concat(d)));case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function sQ(t,e,n){return mQ.apply(this,arguments)}function mQ(){return(mQ=l(c().mark((function t(e,n,i){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(oQ(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:t.t0=e.kty,t.next="oct"===t.t0?8:"RSA"===t.t0?14:"EC"===t.t0||"OKP"===t.t0?16:17;break;case 8:if("string"==typeof e.k&&e.k){t.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=i||(i=!0!==e.ext),!i){t.next=13;break}return t.abrupt("return",dQ(r(r({},e),{},{alg:n,ext:!1})));case 13:return t.abrupt("return",TM(e.k));case 14:if(void 0===e.oth){t.next=16;break}throw new zM('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return t.abrupt("return",dQ(r(r({},e),{},{alg:n})));case 17:throw new zM('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var hQ=function(t,e,n){t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(t)?function(t){if(!(t instanceof Uint8Array)){if(!rQ(t))throw new TypeError(iQ.apply(void 0,[t].concat(V(cQ),["Uint8Array"])));if("secret"!==t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(e):function(t,e){if(!rQ(t))throw new TypeError(iQ.apply(void 0,[t].concat(V(cQ))));if("secret"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===e&&"public"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===e&&"public"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(t.algorithm&&"verify"===e&&"private"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(t.algorithm&&"encrypt"===e&&"private"===t.type)throw new TypeError("".concat(cQ.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(e,n)};function bQ(t,e,n,i,r){if(void 0!==r.crit&&void 0===i.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!i||void 0===i.crit)return new Set;if(!Array.isArray(i.crit)||0===i.crit.length||i.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"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(e.entries()))):e;var a,o=C(i.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new zM('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===r[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===i[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){o.e(t)}finally{o.f()}return new Set(i.crit)}var pQ=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)};function ZQ(t,e){var n="SHA-".concat(t.slice(-3));switch(t){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:t.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:e.namedCurve};case(OM()||_M())&&"EdDSA":var i=e.namedCurve;return{name:i,namedCurve:i};default:throw new zM("alg ".concat(t," is not supported either by JOSE or your javascript runtime"))}}function IQ(t,e,n){if(xM(e))return function(t,e){switch(e){case"HS256":case"HS384":case"HS512":if(!$M(t.algorithm,"HMAC"))throw qM("HMAC");var n=parseInt(e.slice(2),10);if(tQ(t.algorithm.hash)!==n)throw qM("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!$M(t.algorithm,"RSASSA-PKCS1-v1_5"))throw qM("RSASSA-PKCS1-v1_5");var i=parseInt(e.slice(2),10);if(tQ(t.algorithm.hash)!==i)throw qM("SHA-".concat(i),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!$M(t.algorithm,"RSA-PSS"))throw qM("RSA-PSS");var r=parseInt(e.slice(2),10);if(tQ(t.algorithm.hash)!==r)throw qM("SHA-".concat(r),"algorithm.hash");break;case _M()&&"EdDSA":if("NODE-ED25519"!==t.algorithm.name&&"NODE-ED448"!==t.algorithm.name)throw qM("NODE-ED25519 or NODE-ED448");break;case OM()&&"EdDSA":if(!$M(t.algorithm,"NODE-ED25519"))throw qM("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!$M(t.algorithm,"ECDSA"))throw qM("ECDSA");var c=eQ(e);if(t.algorithm.namedCurve!==c)throw qM(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l<a;l++)o[l-2]=arguments[l];nQ(t,o)}(e,t,n),e;if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(iQ.apply(void 0,[e].concat(V(cQ))));return JM.subtle.importKey("raw",e,{hash:"SHA-".concat(t.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(iQ.apply(void 0,[e].concat(V(cQ),["Uint8Array"])))}var yQ=function(){var t=l(c().mark((function t(e,n,i,r){var a,o;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,IQ(e,n,"verify");case 2:return a=t.sent,lQ(e,a),o=ZQ(e,a.algorithm),t.prev=5,t.next=8,JM.subtle.verify(o,a,i,r);case 8:return t.abrupt("return",t.sent);case 11:return t.prev=11,t.t0=t.catch(5),t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[5,11]])})));return function(e,n,i,r){return t.apply(this,arguments)}}();function gQ(t,e,n){return XQ.apply(this,arguments)}function XQ(){return XQ=l(c().mark((function t(e,n,i){var a,o,l,u,d,s,m,h,b,p,Z,I,y;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(oQ(e)){t.next=2;break}throw new jM("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new jM('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new jM("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new jM("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new jM("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||oQ(e.header)){t.next=12;break}throw new jM("JWS Unprotected Header incorrect type");case 12:if(o={},!e.protected){t.next=22;break}l=TM(e.protected),t.prev=15,o=JSON.parse(kM.decode(l)),t.next=22;break;case 19:throw t.prev=19,t.t0=t.catch(15),new jM("JWS Protected Header is invalid");case 22:if(aQ(o,e.header)){t.next=24;break}throw new jM("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(u=r(r({},o),e.header),d=bQ(jM,new Map([["b64",!0]]),null==i?void 0:i.crit,o,u),s=!0,!d.has("b64")){t.next=31;break}if("boolean"==typeof(s=o.b64)){t.next=31;break}throw new jM('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(m=u.alg)&&m){t.next=34;break}throw new jM('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(h=i&&pQ("algorithms",i.algorithms))||h.has(m)){t.next=37;break}throw new BM('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!s){t.next=42;break}if("string"==typeof e.payload){t.next=40;break}throw new jM("JWS Payload must be a string");case 40:t.next=44;break;case 42:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=44;break}throw new jM("JWS Payload must be a string or an Uint8Array instance");case 44:if(b=!1,"function"!=typeof n){t.next=50;break}return t.next=48,n(o,e);case 48:n=t.sent,b=!0;case 50:return hQ(m,n,"verify"),p=UM(HM.encode(null!==(a=e.protected)&&void 0!==a?a:""),HM.encode("."),"string"==typeof e.payload?HM.encode(e.payload):e.payload),Z=TM(e.signature),t.next=55,yQ(m,n,Z,p);case 55:if(t.sent){t.next=58;break}throw new DM;case 58:if(I=s?TM(e.payload):"string"==typeof e.payload?HM.encode(e.payload):e.payload,y={payload:I},void 0!==e.protected&&(y.protectedHeader=o),void 0!==e.header&&(y.unprotectedHeader=e.header),!b){t.next=64;break}return t.abrupt("return",r(r({},y),{},{key:n}));case 64:return t.abrupt("return",y);case 65:case"end":return t.stop()}}),t,null,[[15,19]])}))),XQ.apply(this,arguments)}function GQ(t,e,n){return fQ.apply(this,arguments)}function fQ(){return fQ=l(c().mark((function t(e,n,i){var a,o,l,u,d,s;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=kM.decode(e)),"string"==typeof e){t.next=3;break}throw new jM("Compact JWS must be a string or Uint8Array");case 3:if(a=e.split("."),o=a[0],l=a[1],u=a[2],3===a.length){t.next=6;break}throw new jM("Invalid Compact JWS");case 6:return t.next=8,gQ({payload:l,protected:o,signature:u},n,i);case 8:if(d=t.sent,s={payload:d.payload,protectedHeader:d.protectedHeader},"function"!=typeof n){t.next=12;break}return t.abrupt("return",r(r({},s),{},{key:d.key}));case 12:return t.abrupt("return",s);case 13:case"end":return t.stop()}}),t)}))),fQ.apply(this,arguments)}var VQ=function(t){return Math.floor(t.getTime()/1e3)},WQ=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,vQ=function(t){var e=WQ.exec(t);if(!e)throw new TypeError("Invalid time period format");var n=parseFloat(e[1]);switch(e[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(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},CQ=function(t){return t.toLowerCase().replace(/^application\//,"")},SQ=function(t,e){return"string"==typeof t?e.includes(t):!!Array.isArray(t)&&e.some(Set.prototype.has.bind(new Set(t)))},YQ=function(t,e){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.typ;if(r&&("string"!=typeof t.typ||CQ(t.typ)!==CQ(r)))throw new FM('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(kM.decode(e))}catch(t){}if(!oQ(n))throw new MM("JWT Claims Set must be a top-level JSON object");var c=i.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new FM('unexpected "iss" claim value',"iss","check_failed");var o=i.subject;if(o&&n.sub!==o)throw new FM('unexpected "sub" claim value',"sub","check_failed");var l,u=i.audience;if(u&&!SQ(n.aud,"string"==typeof u?[u]:u))throw new FM('unexpected "aud" claim value',"aud","check_failed");switch(a(i.clockTolerance)){case"string":l=vQ(i.clockTolerance);break;case"number":l=i.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=i.currentDate,s=VQ(d||new Date);if((void 0!==n.iat||i.maxTokenAge)&&"number"!=typeof n.iat)throw new FM('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new FM('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new FM('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new FM('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new AM('"exp" claim timestamp check failed',"exp","check_failed")}if(i.maxTokenAge){var m=s-n.iat,h="number"==typeof i.maxTokenAge?i.maxTokenAge:vQ(i.maxTokenAge);if(m-l>h)throw new AM('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new FM('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function RQ(){return RQ=l(c().mark((function t(e,n,i){var a,o,l,u;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,GQ(e,n,i);case 2:if(o=t.sent,!(null===(a=o.protectedHeader.crit)||void 0===a?void 0:a.includes("b64"))||!1!==o.protectedHeader.b64){t.next=5;break}throw new MM("JWTs MUST NOT use unencoded payload");case 5:if(l=YQ(o.protectedHeader,o.payload,i),u={payload:l,protectedHeader:o.protectedHeader},"function"!=typeof n){t.next=9;break}return t.abrupt("return",r(r({},u),{},{key:o.key}));case 9:return t.abrupt("return",u);case 10:case"end":return t.stop()}}),t)}))),RQ.apply(this,arguments)}function KQ(t){switch("string"==typeof t&&t.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new zM('Unsupported "alg" value for a JSON Web Key Set')}}function NQ(t){return oQ(t)}var LQ=function(){function t(e){if(u(this,t),this._cached=new WeakMap,!function(t){return t&&"object"===a(t)&&Array.isArray(t.keys)&&t.keys.every(NQ)}(e))throw new QM("JSON Web Key Set malformed");var n;this._jwks=(n=e,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var e;return s(t,[{key:"getKey",value:(e=l(c().mark((function t(e,n){var i,a,o,l,u,d,s,m,h;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=r(r({},e),n.header),a=i.alg,o=i.kid,l=KQ(a),u=this._jwks.keys.filter((function(t){var e=l===t.kty;if(e&&"string"==typeof o&&(e=o===t.kid),e&&"string"==typeof t.alg&&(e=a===t.alg),e&&"string"==typeof t.use&&(e="sig"===t.use),e&&Array.isArray(t.key_ops)&&(e=t.key_ops.includes("verify")),e&&"EdDSA"===a&&(e="Ed25519"===t.crv||"Ed448"===t.crv),e)switch(a){case"ES256":e="P-256"===t.crv;break;case"ES256K":e="secp256k1"===t.crv;break;case"ES384":e="P-384"===t.crv;break;case"ES512":e="P-521"===t.crv}return e})),d=u[0],0!==(s=u.length)){t.next=8;break}throw new PM;case 8:if(1===s){t.next=10;break}throw new EM;case 10:if(void 0!==(m=this._cached.get(d)||this._cached.set(d,{}).get(d))[a]){t.next=18;break}return t.next=14,sQ(r(r({},d),{},{ext:!0}),a);case 14:if(!((h=t.sent)instanceof Uint8Array||"public"!==h.type)){t.next=17;break}throw new QM("JSON Web Key Set members must be public keys");case 17:m[a]=h;case 18:return t.abrupt("return",m[a]);case 19:case"end":return t.stop()}}),t,this)}))),function(t,n){return e.apply(this,arguments)})}]),t}();var JQ={exports:{}},xQ={exports:{}},HQ=n(XM);
452
452
  /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
453
453
  !function(t,e){var n=HQ,i=n.Buffer;function r(t,e){for(var n in t)e[n]=t[n]}function c(t,e,n){return i(t,e,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(r(n,e),e.Buffer=c),c.prototype=Object.create(i.prototype),r(i,c),c.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,n)},c.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=i(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},c.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},c.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}}(xQ,xQ.exports);var kQ=xQ.exports.Buffer,UQ=t.crypto||t.msCrypto;UQ&&UQ.getRandomValues?JQ.exports=function(t,e){if(t>4294967295)throw new RangeError("requested too many random bytes");var n=kQ.allocUnsafe(t);if(t>0)if(t>65536)for(var i=0;i<t;i+=65536)UQ.getRandomValues(n.slice(i,i+65536));else UQ.getRandomValues(n);if("function"==typeof e)return tz.nextTick((function(){e(null,n)}));return n}:JQ.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var TQ=JQ.exports,wQ=function(){function t(){u(this,t)}return s(t,[{key:"base64URLEncode",value:function(t){return KM.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(t){return KM.decode(t).toString()}},{key:"hashSha256",value:function(t){return kj.from(LM((new TextEncoder).encode(t)))}},{key:"generateRandomBytes",value:function(t){return TQ(t)}},{key:"verifyJwt",value:function(t,e,n,i,r,c,a){return function(t,e,n){return RQ.apply(this,arguments)}(t,(o={keys:[e]},LQ.prototype.getKey.bind(new LQ(o))),{algorithms:n,audience:i,clockTolerance:a,issuer:r,subject:c}).then((function(){return Promise.resolve(!0)}));var o}}]),t}(),FQ=function(t){switch(t){case wA.LocalStorage:return new gj;case wA.SessionStorage:return new Gj;case wA.BrowserMemory:return new Xj;default:return new Gj}},AQ=function(t,e){return cA(void 0,void 0,void 0,c().mark((function n(){var i,r,a,o,l,u,d,s,m,h,b,p,Z,I,y,g,X,G,f,V,W,v,C,S,Y,R,K,N,L,J,x,H,k,U,T,w,F,A,B,z;return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=FQ(t.storage),a=new wQ,o=new JA(r,a),n.next=5,o.initialize(t);case 5:return l=new oB(o),u=o.getDataLayer(),n.next=9,dB((function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.signOut());case 1:case"end":return t.stop()}}),t)})))}),null!==(i=t.storage)&&void 0!==i?i:wA.SessionStorage,(function(t){return u.setSessionDataParameter(GA,null!=t?t:"")}));case 9:if(d=n.sent,s=e(o,l),m=!1,h=yj.getInstance(),b=!0,n.t0=null==h?void 0:h.init,!n.t0){n.next=18;break}return n.next=18,h.init(!0,s.attachToken);case 18:return I=function(t){s.setHttpRequestStartCallback(h,t)},y=function(t){s.setHttpRequestSuccessCallback(h,t)},g=function(t){s.setHttpRequestFinishCallback(h,t),Z=t},X=function(t){p=t},G=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.httpRequest(h,t,b,p,Z);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},f=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.httpRequestAll(t,h,b,p,Z);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},V=function(){return h},W=function(){return s.enableHttpHandler(h),b=!0,!0},v=function(){return s.disableHttpHandler(h),b=!1,!0},C=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.getOIDCServiceEndpoints();case 2:return e=t.sent,t.next=5,u.getConfigData();case 5:n=t.sent,s.initializeSessionManger(n,e,(function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.getBasicUserInfo();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),(function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.getAuthorizationURL(t));case 1:case"end":return e.stop()}}),e)})))}),d);case 7:case"end":return t.stop()}}),t)})))},S=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d.receivePromptNoneResponse((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u.setSessionDataParameter(GA,null!=t?t:"");case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))}));case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},Y=function(e,n,i,r){return cA(void 0,void 0,void 0,c().mark((function a(){var l,u,d,m,h,b,p;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,s.handleSignIn(S,C);case 2:if(!(m=a.sent)){a.next=7;break}return a.abrupt("return",m);case 7:if((null==t?void 0:t.responseMode)===iA.formPost&&n?(h=n,b=null!=i?i:"",p=null!=r?r:""):(h=null!==(l=new URL(window.location.href).searchParams.get(XA))&&void 0!==l?l:"",b=null!==(u=new URL(window.location.href).searchParams.get(GA))&&void 0!==u?u:"",p=null!==(d=new URL(window.location.href).searchParams.get(WA))&&void 0!==d?d:"",uB.removeAuthorizationCode()),!h||!p){a.next=10;break}return a.abrupt("return",x(h,b,p));case 10:return a.abrupt("return",o.getAuthorizationURL(e).then((function(e){return cA(void 0,void 0,void 0,c().mark((function n(){var i;return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.storage!==wA.BrowserMemory||!t.enablePKCE){n.next=8;break}return i=SA.extractPKCEKeyFromStateParam(p),n.t0=uB,n.t1=i,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=e,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 11:case"end":return a.stop()}}),a)})))},R=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.isAuthenticated();case 2:if(t.t0=t.sent,!t.t0){t.next=5;break}t.t0=!m;case 5:if(!t.t0){t.next=11;break}return t.next=8,o.signOut();case 8:location.href=t.sent,t.next=18;break;case 11:return location.href=uB.getSignOutURL(),t.next=14,u.removeOIDCProviderMetaData();case 14:return t.next=16,u.removeTemporaryData();case 16:return t.next=18,u.removeSessionData();case 18:return l.clearRefreshTokenTimeout(),t.next=21,uB.waitTillPageRedirect();case 21:return t.abrupt("return",!0);case 22:case"end":return t.stop()}}),t)})))},K=function(t){t.preventSignOutURLUpdate&&(m=!0)},N=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.requestCustomGrant(t,K);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},L=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,s.refreshAccessToken(K);case 3:return t.abrupt("return",t.sent);case 6:return t.prev=6,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 9:case"end":return t.stop()}}),t,null,[[0,6]])})))},J=function(){return o.revokeAccessToken().then((function(){return d.reset(),l.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},x=function(t,e,n){return cA(void 0,void 0,void 0,c().mark((function i(){return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,s.requestAccessToken(t,e,C,void 0,n);case 2:return i.abrupt("return",i.sent);case 3:case"end":return i.stop()}}),i)})))},H=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n,i,r,a;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u.getConfigData();case 2:return e=t.sent,t.next=5,o.getAuthorizationURL({prompt:"none",state:"sign-in-silently"});case 5:if(n=t.sent,(i=new URL(n)).searchParams.set("response_mode","query"),r=i.toString(),e.storage!==wA.BrowserMemory||!e.enablePKCE){t.next=17;break}return a=i.searchParams.get(WA),t.t0=uB,t.t1=SA.extractPKCEKeyFromStateParam(null!=a?a:""),t.next=15,o.getPKCECode(null!=a?a:"");case 15:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 17:return t.abrupt("return",r);case 18:case"end":return t.stop()}}),t)})))},k=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.trySignInSilently(H,x,d);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},U=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},T=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},w=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s.getIDToken());case 1:case"end":return t.stop()}}),t)})))},F=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},A=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s.getAccessToken());case 1:case"end":return t.stop()}}),t)})))},B=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s.isAuthenticated());case 1:case"end":return t.stop()}}),t)})))},z=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var n,i,r;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u.getConfigData();case 2:return n=e.sent,i=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),r=Object.assign(Object.assign({},n),t),e.next=7,o.updateConfig(r);case 7:r.enableOIDCSessionManagement&&i&&(d.reset(),C());case 8:case"end":return e.stop()}}),e)})))},n.abrupt("return",{disableHttpHandler:v,enableHttpHandler:W,getAccessToken:A,getBasicUserInfo:U,getDecodedIDToken:T,getHttpClient:V,getIDToken:w,getOIDCServiceEndpoints:F,httpRequest:G,httpRequestAll:f,isAuthenticated:B,refreshAccessToken:L,requestCustomGrant:N,revokeAccessToken:J,setHttpRequestErrorCallback:X,setHttpRequestFinishCallback:g,setHttpRequestStartCallback:I,setHttpRequestSuccessCallback:y,signIn:Y,signOut:R,trySignInSilently:k,updateConfig:z});case 46:case"end":return n.stop()}}),n)})))},BQ=function(t){switch(t){case wA.LocalStorage:return new gj;case wA.SessionStorage:return new Gj;case wA.BrowserMemory:return new Xj;default:return new Gj}},zQ=function(t,e,n){return cA(void 0,void 0,void 0,c().mark((function i(){var r,a,o,l,u,d,s,m,h,b,p,Z,I,y,g,X,G,f,V,W,v,C,S,Y,R,K,N,L,J,x,H,k,U,T,w,F,A,B,z,j,M,Q,P;return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return o=null!==(r=null==t?void 0:t.requestTimeout)&&void 0!==r?r:6e4,l=!0,u=!1,d=BQ(t.storage),s=new wQ,m=new JA(d,s),i.next=8,m.initialize(t);case 8:return h=new oB(m),i.next=11,dB((function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={type:"sign-out"},t.prev=1,t.next=4,I(e);case 4:return n=t.sent,t.abrupt("return",n);case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",uB.getSignOutURL());case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))}),t.storage,(function(t){return W(t)}));case 11:return b=i.sent,p=n(m,h),Z=new e,I=function(t){var e=new MessageChannel;return Z.postMessage(t,[e.port2]),new Promise((function(t,n){var i=setTimeout((function(){n(new CA("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+o/1e3+" since dispatching the request"))}),o);return e.port1.onmessage=function(e){var r=e.data;if(clearTimeout(i),null==r?void 0:r.success){var c=(null==r?void 0:r.data)?JSON.parse(null==r?void 0:r.data):null;(null==r?void 0:r.blob)&&(c.data=null==r?void 0:r.blob),t(c)}else n(r.error?JSON.parse(r.error):null)}}))},y=function(t){return I({data:t,type:"request-custom-grant"}).then((function(e){return t.preventSignOutURLUpdate&&(u=!0),Promise.resolve(e)})).catch((function(t){return Promise.reject(t)}))},g=function(t){return I({data:t,type:"http-request"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!l){e.next=5;break}if("function"!=typeof a.requestErrorCallback){e.next=4;break}return e.next=4,a.requestErrorCallback(t);case 4:"function"==typeof a.requestFinishCallback&&a.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},X=function(t){return I({data:t,type:"http-request-all"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!l){e.next=5;break}if("function"!=typeof a.requestErrorCallback){e.next=4;break}return e.next=4,a.requestErrorCallback(t);case 4:"function"==typeof a.requestFinishCallback&&a.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},G=function(){return I({type:"enable_http_handler"}).then((function(){return l=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},f=function(){return I({type:"disable_http_handler"}).then((function(){return l=!1,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},V=function(){return a||(a={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),Z.onmessage=function(t){var e=t.data;switch(e.type){case"request-finish":(null==a?void 0:a.requestFinishCallback)&&(null==a||a.requestFinishCallback());break;case"request-start":(null==a?void 0:a.requestStartCallback)&&(null==a||a.requestStartCallback());break;case"request-success":(null==a?void 0:a.requestSuccessCallback)&&(null==a||a.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},I({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},W=function(t){return I({data:t,type:"set_session_state"})},v=function(){return I({type:"start_auto_refresh_token"})},C=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,k();case 2:return e=t.sent,t.next=5,U();case 5:n=t.sent,p.initializeSessionManger(n,e,(function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),(function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R(t);case 2:return e.abrupt("return",e.sent.authorizationURL);case 3:case"end":return e.stop()}}),e)})))}),b);case 7:case"end":return t.stop()}}),t)})))},S=function(){return cA(void 0,void 0,void 0,c().mark((function t(){var e,n,i,r,a,o,l,u;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,U();case 2:return n=t.sent,i={data:{prompt:"none",state:"sign-in-silently"},type:"get_auth_url"},t.next=6,I(i);case 6:return r=t.sent,a=SA.extractPKCEKeyFromStateParam(null!==(e=new URL(r.authorizationURL).searchParams.get(WA))&&void 0!==e?e:""),r.pkce&&n.enablePKCE&&uB.setPKCE(a,r.pkce),o=r.authorizationURL,(l=new URL(o)).searchParams.set("response_mode","query"),u=l.toString(),t.abrupt("return",u);case 14:case"end":return t.stop()}}),t)})))},Y=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.trySignInSilently(S,K,b);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},R=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var n,i;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,U();case 2:return n=e.sent,i={data:t,type:"get_auth_url"},e.abrupt("return",I(i).then((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var i,r;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.pkce&&n.enablePKCE&&(r=SA.extractPKCEKeyFromStateParam(null!==(i=new URL(t.authorizationURL).searchParams.get(WA))&&void 0!==i?i:""),uB.setPKCE(r,t.pkce)),e.abrupt("return",Promise.resolve(t));case 2:case"end":return e.stop()}}),e)})))})));case 5:case"end":return e.stop()}}),e)})))},K=function(t,e,n){return cA(void 0,void 0,void 0,c().mark((function i(){var r,a,o;return c().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,U();case 2:return r=i.sent,a=SA.extractPKCEKeyFromStateParam(n),o={data:{code:t,pkce:r.enablePKCE?uB.getPKCE(a):void 0,sessionState:e,state:n},type:"request_get_token"},r.enablePKCE&&uB.removePKCE(a),i.abrupt("return",I(o).then((function(t){return I({type:"get_sign_out_url"}).then((function(e){return uB.setSignOutURL(e),r.enableOIDCSessionManagement&&C(),v(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))})).catch((function(t){return Promise.reject(t)})));case 7:case"end":return i.stop()}}),i)})))},N=function(){return cA(void 0,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,b.receivePromptNoneResponse((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",W(t));case 1:case"end":return e.stop()}}),e)})))}));case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},L=function(){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,A();case 2:if(!e.sent){e.next=7;break}return e.next=5,v();case 5:return t.enableOIDCSessionManagement&&C(),e.abrupt("return",T());case 7:case"end":return e.stop()}}),e)})))},J=function(e,n,i,r){return cA(void 0,void 0,void 0,c().mark((function a(){var o,l,u,d,s,m,h;return c().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,p.handleSignIn(N,C,L);case 2:if(!(d=a.sent)){a.next=7;break}return a.abrupt("return",d);case 7:if((null==t?void 0:t.responseMode)===iA.formPost&&n?(s=n,m=null!=i?i:"",h=null!=r?r:""):(s=null!==(o=new URL(window.location.href).searchParams.get(XA))&&void 0!==o?o:"",m=null!==(l=new URL(window.location.href).searchParams.get(GA))&&void 0!==l?l:"",h=null!==(u=new URL(window.location.href).searchParams.get(WA))&&void 0!==u?u:"",uB.removeAuthorizationCode()),!s||!h){a.next=10;break}return a.abrupt("return",K(s,m,h));case 10:return a.abrupt("return",R(e).then((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return location.href=t.authorizationURL,e.next=3,uB.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 11:case"end":return a.stop()}}),a)})))},x=function(){return A().then((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var n;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||u){e.next=5;break}return n={type:"sign-out"},e.abrupt("return",I(n).then((function(t){return cA(void 0,void 0,void 0,c().mark((function e(){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return window.location.href=t,e.next=3,uB.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve(!0));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 5:return window.location.href=uB.getSignOutURL(),e.next=8,uB.waitTillPageRedirect();case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)}))},H=function(){return I({type:"revoke-access-token"}).then((function(t){return b.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},k=function(){return I({type:"get-oidc-service-endpoints"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},U=function(){return I({type:"get_config_data"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},T=function(){return I({type:"get-basic-user-info"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},w=function(){return I({type:"get-decoded-id-token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},F=function(){return I({type:"get_id_token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},A=function(){return I({type:"is_authenticated"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},B=function(){return I({type:"refresh_access-token"})},z=function(t){t&&"function"==typeof t&&(a.requestSuccessCallback=t)},j=function(t){t&&"function"==typeof t&&(a.requestErrorCallback=t)},M=function(t){t&&"function"==typeof t&&(a.requestStartCallback=t)},Q=function(t){t&&"function"==typeof t&&(a.requestFinishCallback=t)},P=function(t){return cA(void 0,void 0,void 0,c().mark((function e(){var n,i,r,a;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,U();case 2:return n=e.sent,i=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),r=Object.assign(Object.assign({},n),t),a={data:r,type:"update_config"},e.next=8,I(a);case 8:r.enableOIDCSessionManagement&&i&&(b.reset(),C());case 9:case"end":return e.stop()}}),e)})))},i.abrupt("return",{disableHttpHandler:f,enableHttpHandler:G,getBasicUserInfo:T,getDecodedIDToken:w,getIDToken:F,getOIDCServiceEndpoints:k,httpRequest:g,httpRequestAll:X,initialize:V,isAuthenticated:A,refreshAccessToken:B,requestCustomGrant:y,revokeAccessToken:H,setHttpRequestErrorCallback:j,setHttpRequestFinishCallback:Q,setHttpRequestStartCallback:M,setHttpRequestSuccessCallback:z,signIn:J,signOut:x,trySignInSilently:Y,updateConfig:P});case 46:case"end":return i.stop()}}),i)})))},jQ={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:wA.SessionStorage},MQ=function(){function t(e){u(this,t),this._authHelper=aB,this._worker=AA,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:"instantiateAuthHelper",value:function(t){this._authHelper=t||aB}},{key:"instantiateWorker",value:function(t){this._worker=t||AA}},{key:"_isInitialized",value:function(){return cA(this,void 0,void 0,c().mark((function t(){var e,n;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._startedInitialize){t.next=2;break}return t.abrupt("return",!1);case 2:e=0,n=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 4:if(this._initialized){t.next=11;break}return 1e4===e&&console.warn("It is taking longer than usual for the object to be initialized"),t.next=8,n();case 8:e++,t.next=4;break;case 11:return t.abrupt("return",!0);case 12:case"end":return t.stop()}}),t,this)})))}},{key:"_validateMethod",value:function(){return cA(this,void 0,void 0,c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(t.sent){t.next=4;break}return t.abrupt("return",Promise.reject());case 4:return t.next=6,this.isAuthenticated();case 6:if(t.sent){t.next=8;break}return t.abrupt("return",Promise.reject());case 8:return t.abrupt("return",!0);case 9:case"end":return t.stop()}}),t,this)})))}
454
454
  /**