w-web-perm 1.0.86 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/{chunk-vendors.18034562.css → chunk-vendors.b16f7333.css} +1 -1
- package/dist/index.tmp +1 -1
- package/dist/js/{app-legacy.aaaa3681.js → app-legacy.72f6cac9.js} +1 -1
- package/dist/js/{app.aaaa3681.js → app.72f6cac9.js} +1 -1
- package/dist/js/{chunk-vendors.d85138b8.js → chunk-vendors-legacy.22ee28bb.js} +2 -2
- package/dist/js/{chunk-vendors-legacy.d85138b8.js → chunk-vendors.22ee28bb.js} +2 -2
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +1 -1
- package/docs/global.html +1 -1
- package/docs/index.html +1 -1
- package/docs/server_WWebPerm.mjs.html +1 -1
- package/docs/server_procCore.mjs.html +1 -1
- package/docs/src_fetchJson.mjs.html +1 -1
- package/package.json +12 -12
package/dist/w-web-perm.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-web-perm v1.
|
|
2
|
+
* w-web-perm v1.1.2
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("url"),require("pino"),require("readline")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","url","pino","readline"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-perm"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.url,e.pino,e.readline)}(this,function(e,t,n,s,r,i,u,o,a,l){"use strict";var c="undefined"!=typeof document?document.currentScript:null,D=Array.isArray,M="object"==typeof global&&global&&global.Object===Object&&global,d="object"==typeof self&&self&&self.Object===Object&&self,w=M||d||Function("return this")(),y=w.Symbol,L=Object.prototype,I=L.hasOwnProperty,g=L.toString,m=y?y.toStringTag:void 0;var p=Object.prototype.toString;var C=y?y.toStringTag:void 0;function f(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":C&&C in Object(e)?function(e){var t=I.call(e,m),n=e[m];try{e[m]=void 0;var s=!0}catch(e){}var r=g.call(e);return s&&(t?e[m]=n:delete e[m]),r}(e):function(e){return p.call(e)}(e)}function h(e){return null!=e&&"object"==typeof e}function N(e){return"symbol"==typeof e||h(e)&&"[object Symbol]"==f(e)}var b=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,x=/^\w*$/;function T(e,t){if(D(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!N(e))||(x.test(e)||!b.test(e)||null!=t&&e in Object(t))}function A(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function E(e){if(!A(e))return!1;var t=f(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var S,Z=w["__core-js_shared__"],v=(S=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||""))?"Symbol(src)_1."+S:"";var X=Function.prototype.toString;function Y(e){if(null!=e){try{return X.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var z=/^\[object .+?Constructor\]$/,j=Function.prototype,G=Object.prototype,K=j.toString,F=G.hasOwnProperty,W=RegExp("^"+K.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U(e){return!(!A(e)||(t=e,v&&v in t))&&(E(e)?W:z).test(Y(e));var t}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return U(n)?n:void 0}var k=V(Object,"create");var Q=Object.prototype.hasOwnProperty;var B=Object.prototype.hasOwnProperty;function H(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}function J(e,t){return e===t||e!=e&&t!=t}function P(e,t){for(var n=e.length;n--;)if(J(e[n][0],t))return n;return-1}H.prototype.clear=function(){this.__data__=k?k(null):{},this.size=0},H.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},H.prototype.get=function(e){var t=this.__data__;if(k){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return Q.call(t,e)?t[e]:void 0},H.prototype.has=function(e){var t=this.__data__;return k?void 0!==t[e]:B.call(t,e)},H.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=k&&void 0===t?"__lodash_hash_undefined__":t,this};var R=Array.prototype.splice;function O(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}O.prototype.clear=function(){this.__data__=[],this.size=0},O.prototype.delete=function(e){var t=this.__data__,n=P(t,e);return!(n<0)&&(n==t.length-1?t.pop():R.call(t,n,1),--this.size,!0)},O.prototype.get=function(e){var t=this.__data__,n=P(t,e);return n<0?void 0:t[n][1]},O.prototype.has=function(e){return P(this.__data__,e)>-1},O.prototype.set=function(e,t){var n=this.__data__,s=P(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this};var _=V(w,"Map");function $(e,t){var n,s,r=e.__data__;return("string"==(s=typeof(n=t))||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==n:null===n)?r["string"==typeof t?"string":"hash"]:r.map}function q(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}q.prototype.clear=function(){this.size=0,this.__data__={hash:new H,map:new(_||O),string:new H}},q.prototype.delete=function(e){var t=$(this,e).delete(e);return this.size-=t?1:0,t},q.prototype.get=function(e){return $(this,e).get(e)},q.prototype.has=function(e){return $(this,e).has(e)},q.prototype.set=function(e,t){var n=$(this,e),s=n.size;return n.set(e,t),this.size+=n.size==s?0:1,this};function ee(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var s=arguments,r=t?t.apply(this,s):s[0],i=n.cache;if(i.has(r))return i.get(r);var u=e.apply(this,s);return n.cache=i.set(r,u)||i,u};return n.cache=new(ee.Cache||q),n}ee.Cache=q;var te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ne=/\\(\\)?/g,se=function(e){var t=ee(e,function(e){return 500===n.size&&n.clear(),e}),n=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(te,function(e,n,s,r){t.push(s?r.replace(ne,"$1"):n||e)}),t}),re=se;function ie(e,t){for(var n=-1,s=null==e?0:e.length,r=Array(s);++n<s;)r[n]=t(e[n],n,e);return r}var ue=y?y.prototype:void 0,oe=ue?ue.toString:void 0;function ae(e){if("string"==typeof e)return e;if(D(e))return ie(e,ae)+"";if(N(e))return oe?oe.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function le(e){return null==e?"":ae(e)}function ce(e,t){return D(e)?e:T(e,t)?[e]:re(le(e))}function De(e){if("string"==typeof e||N(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Me(e,t){for(var n=0,s=(t=ce(t,e)).length;null!=e&&n<s;)e=e[De(t[n++])];return n&&n==s?e:void 0}function de(e,t,n){var s=null==e?void 0:Me(e,t);return void 0===s?n:s}function we(e){var t=this.__data__=new O(e);this.size=t.size}we.prototype.clear=function(){this.__data__=new O,this.size=0},we.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},we.prototype.get=function(e){return this.__data__.get(e)},we.prototype.has=function(e){return this.__data__.has(e)},we.prototype.set=function(e,t){var n=this.__data__;if(n instanceof O){var s=n.__data__;if(!_||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new q(s)}return n.set(e,t),this.size=n.size,this};function ye(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new q;++t<n;)this.add(e[t])}function Le(e,t){for(var n=-1,s=null==e?0:e.length;++n<s;)if(t(e[n],n,e))return!0;return!1}function Ie(e,t){return e.has(t)}ye.prototype.add=ye.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},ye.prototype.has=function(e){return this.__data__.has(e)};function ge(e,t,n,s,r,i){var u=1&n,o=e.length,a=t.length;if(o!=a&&!(u&&a>o))return!1;var l=i.get(e),c=i.get(t);if(l&&c)return l==t&&c==e;var D=-1,M=!0,d=2&n?new ye:void 0;for(i.set(e,t),i.set(t,e);++D<o;){var w=e[D],y=t[D];if(s)var L=u?s(y,w,D,t,e,i):s(w,y,D,e,t,i);if(void 0!==L){if(L)continue;M=!1;break}if(d){if(!Le(t,function(e,t){if(!Ie(d,t)&&(w===e||r(w,e,n,s,i)))return d.push(t)})){M=!1;break}}else if(w!==y&&!r(w,y,n,s,i)){M=!1;break}}return i.delete(e),i.delete(t),M}var me=w.Uint8Array;function pe(e){var t=-1,n=Array(e.size);return e.forEach(function(e,s){n[++t]=[s,e]}),n}function Ce(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var fe=y?y.prototype:void 0,he=fe?fe.valueOf:void 0;function Ne(e,t){for(var n=-1,s=t.length,r=e.length;++n<s;)e[r+n]=t[n];return e}function be(e,t,n){var s=t(e);return D(e)?s:Ne(s,n(e))}function xe(e,t){for(var n=-1,s=null==e?0:e.length,r=0,i=[];++n<s;){var u=e[n];t(u,n,e)&&(i[r++]=u)}return i}function Te(){return[]}var Ae=Object.prototype.propertyIsEnumerable,Ee=Object.getOwnPropertySymbols,Se=Ee?function(e){return null==e?[]:(e=Object(e),xe(Ee(e),function(t){return Ae.call(e,t)}))}:Te;function Ze(e){return h(e)&&"[object Arguments]"==f(e)}var ve=Object.prototype,Xe=ve.hasOwnProperty,Ye=ve.propertyIsEnumerable,ze=Ze(function(){return arguments}())?Ze:function(e){return h(e)&&Xe.call(e,"callee")&&!Ye.call(e,"callee")},je=ze;var Ge="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ke=Ge&&"object"==typeof module&&module&&!module.nodeType&&module,Fe=Ke&&Ke.exports===Ge?w.Buffer:void 0,We=(Fe?Fe.isBuffer:void 0)||function(){return!1},Ue=/^(?:0|[1-9]\d*)$/;function Ve(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ue.test(e))&&e>-1&&e%1==0&&e<t}function ke(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Qe={};function Be(e){return function(t){return e(t)}}Qe["[object Float32Array]"]=Qe["[object Float64Array]"]=Qe["[object Int8Array]"]=Qe["[object Int16Array]"]=Qe["[object Int32Array]"]=Qe["[object Uint8Array]"]=Qe["[object Uint8ClampedArray]"]=Qe["[object Uint16Array]"]=Qe["[object Uint32Array]"]=!0,Qe["[object Arguments]"]=Qe["[object Array]"]=Qe["[object ArrayBuffer]"]=Qe["[object Boolean]"]=Qe["[object DataView]"]=Qe["[object Date]"]=Qe["[object Error]"]=Qe["[object Function]"]=Qe["[object Map]"]=Qe["[object Number]"]=Qe["[object Object]"]=Qe["[object RegExp]"]=Qe["[object Set]"]=Qe["[object String]"]=Qe["[object WeakMap]"]=!1;var He="object"==typeof exports&&exports&&!exports.nodeType&&exports,Je=He&&"object"==typeof module&&module&&!module.nodeType&&module,Pe=Je&&Je.exports===He&&M.process,Re=function(){try{var e=Je&&Je.require&&Je.require("util").types;return e||Pe&&Pe.binding&&Pe.binding("util")}catch(e){}}(),Oe=Re&&Re.isTypedArray,_e=Oe?Be(Oe):function(e){return h(e)&&ke(e.length)&&!!Qe[f(e)]},$e=Object.prototype.hasOwnProperty;function qe(e,t){var n=D(e),s=!n&&je(e),r=!n&&!s&&We(e),i=!n&&!s&&!r&&_e(e),u=n||s||r||i,o=u?function(e,t){for(var n=-1,s=Array(e);++n<e;)s[n]=t(n);return s}(e.length,String):[],a=o.length;for(var l in e)!t&&!$e.call(e,l)||u&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Ve(l,a))||o.push(l);return o}var et=Object.prototype;function tt(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||et)}function nt(e,t){return function(n){return e(t(n))}}var st=nt(Object.keys,Object),rt=Object.prototype.hasOwnProperty;function it(e){if(!tt(e))return st(e);var t=[];for(var n in Object(e))rt.call(e,n)&&"constructor"!=n&&t.push(n);return t}function ut(e){return null!=e&&ke(e.length)&&!E(e)}function ot(e){return ut(e)?qe(e):it(e)}function at(e){return be(e,ot,Se)}var lt=Object.prototype.hasOwnProperty;var ct=V(w,"DataView"),Dt=V(w,"Promise"),Mt=V(w,"Set"),dt=V(w,"WeakMap"),wt="[object Map]",yt="[object Promise]",Lt="[object Set]",It="[object WeakMap]",gt="[object DataView]",mt=Y(ct),pt=Y(_),Ct=Y(Dt),ft=Y(Mt),ht=Y(dt),Nt=f;(ct&&Nt(new ct(new ArrayBuffer(1)))!=gt||_&&Nt(new _)!=wt||Dt&&Nt(Dt.resolve())!=yt||Mt&&Nt(new Mt)!=Lt||dt&&Nt(new dt)!=It)&&(Nt=function(e){var t=f(e),n="[object Object]"==t?e.constructor:void 0,s=n?Y(n):"";if(s)switch(s){case mt:return gt;case pt:return wt;case Ct:return yt;case ft:return Lt;case ht:return It}return t});var bt=Nt,xt="[object Arguments]",Tt="[object Array]",At="[object Object]",Et=Object.prototype.hasOwnProperty;function St(e,t,n,s,r,i){var u=D(e),o=D(t),a=u?Tt:bt(e),l=o?Tt:bt(t),c=(a=a==xt?At:a)==At,M=(l=l==xt?At:l)==At,d=a==l;if(d&&We(e)){if(!We(t))return!1;u=!0,c=!1}if(d&&!c)return i||(i=new we),u||_e(e)?ge(e,t,n,s,r,i):function(e,t,n,s,r,i,u){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new me(e),new me(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return J(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=pe;case"[object Set]":var a=1&s;if(o||(o=Ce),e.size!=t.size&&!a)return!1;var l=u.get(e);if(l)return l==t;s|=2,u.set(e,t);var c=ge(o(e),o(t),s,r,i,u);return u.delete(e),c;case"[object Symbol]":if(he)return he.call(e)==he.call(t)}return!1}(e,t,a,n,s,r,i);if(!(1&n)){var w=c&&Et.call(e,"__wrapped__"),y=M&&Et.call(t,"__wrapped__");if(w||y){var L=w?e.value():e,I=y?t.value():t;return i||(i=new we),r(L,I,n,s,i)}}return!!d&&(i||(i=new we),function(e,t,n,s,r,i){var u=1&n,o=at(e),a=o.length;if(a!=at(t).length&&!u)return!1;for(var l=a;l--;){var c=o[l];if(!(u?c in t:lt.call(t,c)))return!1}var D=i.get(e),M=i.get(t);if(D&&M)return D==t&&M==e;var d=!0;i.set(e,t),i.set(t,e);for(var w=u;++l<a;){var y=e[c=o[l]],L=t[c];if(s)var I=u?s(L,y,c,t,e,i):s(y,L,c,e,t,i);if(!(void 0===I?y===L||r(y,L,n,s,i):I)){d=!1;break}w||(w="constructor"==c)}if(d&&!w){var g=e.constructor,m=t.constructor;g==m||!("constructor"in e)||!("constructor"in t)||"function"==typeof g&&g instanceof g&&"function"==typeof m&&m instanceof m||(d=!1)}return i.delete(e),i.delete(t),d}(e,t,n,s,r,i))}function Zt(e,t,n,s,r){return e===t||(null==e||null==t||!h(e)&&!h(t)?e!=e&&t!=t:St(e,t,n,s,Zt,r))}function vt(e){return e==e&&!A(e)}function Xt(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function Yt(e){var t=function(e){for(var t=ot(e),n=t.length;n--;){var s=t[n],r=e[s];t[n]=[s,r,vt(r)]}return t}(e);return 1==t.length&&t[0][2]?Xt(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,s){var r=n.length,i=r,u=!s;if(null==e)return!i;for(e=Object(e);r--;){var o=n[r];if(u&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++r<i;){var a=(o=n[r])[0],l=e[a],c=o[1];if(u&&o[2]){if(void 0===l&&!(a in e))return!1}else{var D=new we;if(s)var M=s(l,c,a,e,t,D);if(!(void 0===M?Zt(c,l,3,s,D):M))return!1}}return!0}(n,e,t)}}function zt(e,t){return null!=e&&t in Object(e)}function jt(e,t){return null!=e&&function(e,t,n){for(var s=-1,r=(t=ce(t,e)).length,i=!1;++s<r;){var u=De(t[s]);if(!(i=null!=e&&n(e,u)))break;e=e[u]}return i||++s!=r?i:!!(r=null==e?0:e.length)&&ke(r)&&Ve(u,r)&&(D(e)||je(e))}(e,t,zt)}function Gt(e){return e}function Kt(e){return function(t){return null==t?void 0:t[e]}}function Ft(e){return T(e)?Kt(De(e)):function(e){return function(t){return Me(t,e)}}(e)}function Wt(e){return"function"==typeof e?e:null==e?Gt:"object"==typeof e?D(e)?function(e,t){return T(e)&&vt(t)?Xt(De(e),t):function(n){var s=de(n,e);return void 0===s&&s===t?jt(n,e):Zt(t,s,3)}}(e[0],e[1]):Yt(e):Ft(e)}var Ut,Vt=function(e,t,n){for(var s=-1,r=Object(e),i=n(e),u=i.length;u--;){var o=i[Ut?u:++s];if(!1===t(r[o],o,r))break}return e};var kt=function(e,t){return function(n,s){if(null==n)return n;if(!ut(n))return e(n,s);for(var r=n.length,i=t?r:-1,u=Object(n);(t?i--:++i<r)&&!1!==s(u[i],i,u););return n}}(function(e,t){return e&&Vt(e,t,ot)}),Qt=kt;function Bt(e,t){var n=-1,s=ut(e)?Array(e.length):[];return Qt(e,function(e,r,i){s[++n]=t(e,r,i)}),s}function Ht(e,t){return(D(e)?ie:Bt)(e,Wt(t))}var Jt=Array.prototype.join;function Pt(e){return"[object Object]"===Object.prototype.toString.call(e)}function Rt(e){if(Pt(e)){for(let t in e)return!0;return!1}return!1}function Ot(e){return"[object String]"===Object.prototype.toString.call(e)}function _t(e){return!(!Ot(e)||""===e)}var $t=/\s/;var qt=/^\s+/;function en(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&$t.test(e.charAt(t)););return t}(e)+1).replace(qt,""):e}var tn=/^[-+]0x[0-9a-f]+$/i,nn=/^0b[01]+$/i,sn=/^0o[0-7]+$/i,rn=parseInt;function un(e){if("number"==typeof e)return e;if(N(e))return NaN;if(A(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=A(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=en(e);var n=nn.test(e);return n||sn.test(e)?rn(e.slice(2),n?2:8):tn.test(e)?NaN:+e}var on=1/0;function an(e){return e?(e=un(e))===on||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ln(e){var t=an(e),n=t%1;return t==t?n?t-n:t:0}function cn(e){return!0===(t=e)||!1===t||h(t)&&"[object Boolean]"==f(t);var t}function Dn(e){return e!=e}function Mn(e){let t=!1;if(_t(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Dn(e))return!1;t=!0}return t}function dn(e){if(!Mn(e))return 0;return an(e)}function wn(e,t={}){let n=de(t,"useLimitSafe",null);return cn(n)||(n=!1),!!Mn(e)&&(e=dn(e),n?Number.isSafeInteger(e):"number"==typeof(s=e)&&s==ln(s));var s}var yn=w.isFinite,Ln=Math.min;var In,gn=(In=Math["round"],function(e,t){if(e=un(e),(t=null==t?0:Ln(ln(t),292))&&yn(e)){var n=(le(e)+"e").split("e");return+((n=(le(In(n[0]+"e"+(+n[1]+t)))+"e").split("e"))[0]+"e"+(+n[1]-t))}return In(e)});function mn(e,t={}){let n=de(t,"useClampSafe",null);cn(n)||(n=!1);let s=de(t,"useLimitSafe",null);cn(s)||(s=!1);let r=de(t,"returnWithStateAndMsg",null);cn(r)||(r=!1);let i=e=>r?{state:"success",msg:e}:e,u=e=>{if(r)return{state:"error",msg:e};throw new Error(e)};if(!Mn(e))return i(0);let o=null;try{e=dn(e),o=gn(e),n&&(o>Number.MAX_SAFE_INTEGER?o=Number.MAX_SAFE_INTEGER:o<Number.MIN_SAFE_INTEGER&&(o=Number.MIN_SAFE_INTEGER))}catch(e){return u(e.toString())}return s&&!Number.isSafeInteger(Number(o))?u(`v[${e}] is not a safe integer`):("0"===String(o)&&(o=0),i(o))}function pn(e,t={}){if(!wn(e,t))return!1;return mn(e)>0}function Cn(e){return"[object Array]"===Object.prototype.toString.call(e)}function fn(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function hn(e){if(Pt(e)){for(let t in e)return!1;return!0}return!1}function Nn(e){return!!Cn(e)&&0===e.length}function bn(e){return!!fn(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!hn(e)||(!!function(e){return!(!Ot(e)||""!==e)}(e)||(!!Nn(e)||!!Dn(e)))))}function xn(e){return!!Cn(e)&&(0!==e.length&&(1!==e.length||!bn(e[0])))}var Tn=nt(Object.getPrototypeOf,Object),An=Function.prototype,En=Object.prototype,Sn=An.toString,Zn=En.hasOwnProperty,vn=Sn.call(Object);function Xn(e){if(!h(e)||"[object Object]"!=f(e))return!1;var t=Tn(e);if(null===t)return!0;var n=Zn.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Sn.call(n)==vn}function Yn(e){if(!h(e))return!1;var t=f(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Xn(e)}function zn(e){return Yn(e)}function jn(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Gn(e){let t,n=Object.prototype.toString.call(e);if(t="[object Promise]"===n,t)return!0;if("[object Function]"!==n)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kn(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!_t(e))return s("invalid v");let r={};try{r=JSON.parse(e)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function Fn(e,t={}){if(!wn(e,t))return!1;return mn(e)>=0}function Wn(e,t){return _t(e)&&Fn(t)?0===(t=mn(t))?"":e.substring(0,t):""}function Un(e,t){if(!_t(e))return"";if(!Fn(t))return"";if(0===(t=mn(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function Vn(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}let kn=function(e){if(!jn(e))throw new Error("fn is not a function");return function(){let t=Vn(),n=null,s=null;try{n=e.apply(this,arguments)}catch(e){s=e}return null!==s?t.resolve({state:"error",msg:s}):Gn(n)?n.then(e=>{t.resolve({state:"success",msg:e})}).catch(e=>{"cancelled"===de(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})}):t.resolve({state:"success",msg:n}),t}};function Qn(e,t={}){let n=de(t,"fs"),s=!1;try{n.statSync(e),s=!0}catch{s=!1}return s}function Bn(e,t={}){let n=de(t,"fs");if(!Qn(e,{fs:n}))return!1;let s=n.lstatSync(e);return!s.isFile()&&!s.isSymbolicLink()}function Hn(e){return Bn(e,{fs:t})}function Jn(e,t={}){let n=de(t,"fs");return!!Qn(e,{fs:n})&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function Pn(e){return Jn(e,{fs:t})}function Rn(e,t,n){if(!_t(e))return"";if(!_t(t))return"";if(!Ot(n))return"";return String(e).replaceAll(t,n)}function On(e,t){for(var n=-1,s=null==e?0:e.length;++n<s&&!1!==t(e[n],n,e););return e}function _n(e,t){var n;return(D(e)?On:Qt)(e,"function"==typeof(n=t)?n:Gt)}function $n(e,t,n=""){if(!xn(t))return{};let s={};return _n(t,function(t){s[t]=de(e,t,n)}),s}function qn(e,t,n=""){if(!xn(e))return[];if(!xn(t))return[];return Ht(e,e=>$n(e,t,n))}var es="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ts(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ns(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];return n.push.apply(n,arguments),new(Function.bind.apply(t,n))}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}),n}var ss={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,s="millisecond",r="second",i="minute",u="hour",o="day",a="week",l="month",c="quarter",D="year",M="date",d="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},I=function(e,t,n){var s=String(e);return!s||s.length>=t?e:""+Array(t+1-s.length).join(n)+e},g={s:I,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),s=Math.floor(n/60),r=n%60;return(t<=0?"+":"-")+I(s,2,"0")+":"+I(r,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var s=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(s,l),i=n-r<0,u=t.clone().add(s+(i?-1:1),l);return+(-(s+(n-r)/(i?r-u:u-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:D,w:a,d:o,D:M,h:u,m:i,s:r,ms:s,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},m="en",p={};p[m]=L;var C="$isDayjsObject",f=function(e){return e instanceof x||!(!e||!e[C])},h=function e(t,n,s){var r;if(!t)return m;if("string"==typeof t){var i=t.toLowerCase();p[i]&&(r=i),n&&(p[i]=n,r=i);var u=t.split("-");if(!r&&u.length>1)return e(u[0])}else{var o=t.name;p[o]=t,r=o}return!s&&r&&(m=r),r||!s&&m},N=function(e,t){if(f(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},b=g;b.l=h,b.i=f,b.w=function(e,t){return N(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function L(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[C]=!0}var I=L.prototype;return I.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var s=t.match(w);if(s){var r=s[2]-1||0,i=(s[7]||"0").substring(0,3);return n?new Date(Date.UTC(s[1],r,s[3]||1,s[4]||0,s[5]||0,s[6]||0,i)):new Date(s[1],r,s[3]||1,s[4]||0,s[5]||0,s[6]||0,i)}}return new Date(t)}(e),this.init()},I.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},I.$utils=function(){return b},I.isValid=function(){return!(this.$d.toString()===d)},I.isSame=function(e,t){var n=N(e);return this.startOf(t)<=n&&n<=this.endOf(t)},I.isAfter=function(e,t){return N(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<N(e)},I.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(e,t){var n=this,s=!!b.u(t)||t,c=b.p(e),d=function(e,t){var r=b.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?r:r.endOf(o)},w=function(e,t){return b.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,L=this.$M,I=this.$D,g="set"+(this.$u?"UTC":"");switch(c){case D:return s?d(1,0):d(31,11);case l:return s?d(1,L):d(0,L+1);case a:var m=this.$locale().weekStart||0,p=(y<m?y+7:y)-m;return d(s?I-p:I+(6-p),L);case o:case M:return w(g+"Hours",0);case u:return w(g+"Minutes",1);case i:return w(g+"Seconds",2);case r:return w(g+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var n,a=b.p(e),c="set"+(this.$u?"UTC":""),d=(n={},n[o]=c+"Date",n[M]=c+"Date",n[l]=c+"Month",n[D]=c+"FullYear",n[u]=c+"Hours",n[i]=c+"Minutes",n[r]=c+"Seconds",n[s]=c+"Milliseconds",n)[a],w=a===o?this.$D+(t-this.$W):t;if(a===l||a===D){var y=this.clone().set(M,1);y.$d[d](w),y.init(),this.$d=y.set(M,Math.min(this.$D,y.daysInMonth())).$d}else d&&this.$d[d](w);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[b.p(e)]()},I.add=function(s,c){var M,d=this;s=Number(s);var w=b.p(c),y=function(e){var t=N(d);return b.w(t.date(t.date()+Math.round(e*s)),d)};if(w===l)return this.set(l,this.$M+s);if(w===D)return this.set(D,this.$y+s);if(w===o)return y(1);if(w===a)return y(7);var L=(M={},M[i]=t,M[u]=n,M[r]=e,M)[w]||1,I=this.$d.getTime()+s*L;return b.w(I,this)},I.subtract=function(e,t){return this.add(-1*e,t)},I.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||d;var s=e||"YYYY-MM-DDTHH:mm:ssZ",r=b.z(this),i=this.$H,u=this.$m,o=this.$M,a=n.weekdays,l=n.months,c=n.meridiem,D=function(e,n,r,i){return e&&(e[n]||e(t,s))||r[n].slice(0,i)},M=function(e){return b.s(i%12||12,e,"0")},w=c||function(e,t,n){var s=e<12?"AM":"PM";return n?s.toLowerCase():s};return s.replace(y,function(e,s){return s||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return o+1;case"MM":return b.s(o+1,2,"0");case"MMM":return D(n.monthsShort,o,l,3);case"MMMM":return D(l,o);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return D(n.weekdaysMin,t.$W,a,2);case"ddd":return D(n.weekdaysShort,t.$W,a,3);case"dddd":return a[t.$W];case"H":return String(i);case"HH":return b.s(i,2,"0");case"h":return M(1);case"hh":return M(2);case"a":return w(i,u,!0);case"A":return w(i,u,!1);case"m":return String(u);case"mm":return b.s(u,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return r}return null}(e)||r.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(s,M,d){var w,y=this,L=b.p(M),I=N(s),g=(I.utcOffset()-this.utcOffset())*t,m=this-I,p=function(){return b.m(y,I)};switch(L){case D:w=p()/12;break;case l:w=p();break;case c:w=p()/3;break;case a:w=(m-g)/6048e5;break;case o:w=(m-g)/864e5;break;case u:w=m/n;break;case i:w=m/t;break;case r:w=m/e;break;default:w=m}return d?w:b.a(w)},I.daysInMonth=function(){return this.endOf(l).$D},I.$locale=function(){return p[this.$L]},I.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),s=h(e,t,!0);return s&&(n.$L=s),n},I.clone=function(){return b.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},L}(),T=x.prototype;return N.prototype=T,[["$ms",s],["$s",r],["$m",i],["$H",u],["$W",o],["$M",l],["$y",D],["$D",M]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),N.extend=function(e,t){return e.$i||(e(t,x,N),e.$i=!0),N},N.locale=h,N.isDayjs=f,N.unix=function(e){return N(1e3*e)},N.en=p[m],N.Ls=p,N.p={},N}()}(ss);var rs=ts(ss.exports);function is(){if(!jn(rs))throw new Error("invalid dayjs");return rs().format("YYYY-MM-DDTHH:mm:ssZ")}let us="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),os=us.length;function as(e=32){let t=[];e=pn(e)?mn(e):32;for(let n=0;n<e;n++)t[n]=us[0|Math.random()*os];return t.join("")}var ls={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),a=n?n+t:t;return e._events[a]?e._events[a].fn?e._events[a]=[e._events[a],o]:e._events[a].push(o):(e._events[a]=o,e._eventsCount++),e}function u(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var a,l,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(l=1,a=new Array(D-1);l<D;l++)a[l-1]=arguments[l];c.fn.apply(c.context,a)}else{var M,d=c.length;for(l=0;l<d;l++)switch(c[l].once&&this.removeListener(e,c[l].fn,void 0,!0),D){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,t);break;case 3:c[l].fn.call(c[l].context,t,s);break;case 4:c[l].fn.call(c[l].context,t,s,r);break;default:if(!a)for(M=1,a=new Array(D-1);M<D;M++)a[M-1]=arguments[M];c[l].fn.apply(c[l].context,a)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var a=0,l=[],c=o.length;a<c;a++)(o[a].fn!==t||r&&!o[a].once||s&&o[a].context!==s)&&l.push(o[a]);l.length?this._events[i]=1===l.length?l[0]:l:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}(ls);var cs=ts(ls.exports);function Ds(){return new cs}let Ms=2147483647;async function ds(e,t={}){let n=null,s=Vn();if(!jn(e))return s.reject("waitfunction需輸入函數f"),s;let r=async()=>{let t=e();return Gn(t)&&(t=await t),t};if(n=await r(),!0===n)return s.resolve(),s;let i=de(t,"attemptNum",null);pn(i)||(i=200);let u=de(t,"timeInterval",null);pn(u)||(u=1e3),u=Math.min(u,Ms);let o=0,a=setInterval(async()=>{o+=1,n=await r(),!0===n&&(clearInterval(a),s.resolve()),o>i&&(clearInterval(a),s.reject(`exceeded attemptNum[${i}]`))},u);return s}function ws(e){return function(e,t={}){let n=de(t,"fs");if(Bn(e,{fs:n}))return{success:"input folder is already exists: "+e};if(Qn(e,{fs:n}))return{error:"input path already exists: "+e};try{n.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function ys(e,t,n=[],s={}){let r=s.funSettle,i=s.tag||"evem",u=(t,...n)=>e.emit(t,...n);jn(s.funEmit)&&(u=s.funEmit);try{return u(t,...n)}catch(s){if(jn(r))try{r(s)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?u("error",{fun:"listener",name:t,msg:s,args:n}):console.error(`[wsemi ${i}] listener of '${String(t)}' threw:`,s)}catch(e){try{console.error(`[wsemi ${i}] listener of '${String(t)}' threw, and reporting it also threw:`,e,s)}catch(e){}}return!1}}function Ls(e,t,n=[],s={}){let r=s.ms;return pn(r)||(r=1),r=mn(r),r=Math.min(r,Ms),setTimeout(()=>{ys(e,t,n,s)},r)}function Is(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function gs(e,t){try{let n=new WeakSet,s=[],r=JSON.stringify(e,function(e,r){for(;s.length>0&&s[s.length-1]!==this;)s.pop();if(s.length>=t)return"[Deep]";if("bigint"==typeof r)return String(r);if(null!==r&&"object"==typeof r){if(n.has(r))return"[Circular]";n.add(r),s.push(r)}return r});return"string"==typeof r?r:""}catch(e){return""}}function ms(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=Is(()=>JSON.parse(e));if(""!==t)return t}return e}function ps(e,t){if(void 0===e)return"";if(null===e)return"null";let n=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==n)return n;let s=gs(e,t);if(""!==s&&"{}"!==s)return ms(s);let r=Is(()=>String(e));return""!==r&&"[object Object]"!==r?r:s}function Cs(e,t){let n=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||n.add(e);let s=e,r=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=s.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(n.has(e))break;n.add(e)}let i=hs(e,{...t,useCause:!1,useAggregate:!1});""!==i&&r.push(i),s=e}return r.join(" <- ")}function fs(e,t){let n=null;try{n=e.errors}catch(e){return""}if(!Array.isArray(n)||0===n.length)return"";let s=[];for(let r=0;r<n.length&&r<t.levelCauseMax;r++){if(n[r]===e)continue;let i=hs(n[r],{...t,useCause:!1,useAggregate:!1});""!==i&&s.push(i)}return s.join("; ")}function hs(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let n=null,s=!1;try{n=e.message,s=!0}catch(e){s=!1}if(s&&"string"==typeof n){if(""!==n){let s=n;if(t.useCause){let n=Cs(e,t);""!==n&&(s=`${s} <- ${n}`)}if(t.useAggregate){let n=fs(e,t);""!==n&&(s=`${s} [${n}]`)}return s}let s=Cs(e,t);return""!==s?s:""}if(s){let e=ps(n,t.levelJsonMax);if(""!==e)return e}let r=Cs(e,t);if(""!==r)return r;if(t.useAggregate){let n=fs(e,t);if(""!==n)return n}let i=gs(e,t.levelJsonMax),u=ms(i);if(""!==u&&"{}"!==u)return u;let o=Is(()=>String(e));if(""!==o&&"[object Object]"!==o)return o;let a=Is(()=>Object.prototype.toString.call(e));return""!==a&&"[object Object]"!==a?a:""!==i?i:""}function Ns(e,t={}){let n=de(t,"useCause",null);cn(n)||(n=!1);let s=de(t,"useAggregate",null);cn(s)||(s=!1);let r=de(t,"levelCauseMax",null);pn(r,{useLimitSafe:!0})||(r=8),r=mn(r);let i=de(t,"levelJsonMax",null);pn(i,{useLimitSafe:!0})||(i=6),i=mn(i);let u=de(t,"lengthMessageMax",null);pn(u,{useLimitSafe:!0})||(u=0),u=mn(u);let o={useCause:n,useAggregate:s,levelCauseMax:r,levelJsonMax:i,lengthMessageMax:u},a="";try{a=hs(e,o)}catch(e){return a="",a}return _t(a)?(o.lengthMessageMax>0&&a.length>o.lengthMessageMax&&(a=o.lengthMessageMax>3?a.slice(0,o.lengthMessageMax-3)+"...":a.slice(0,o.lengthMessageMax)),a):(a="",a)}function bs(e){if(!(_t(e)||Mn(e)||N(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var xs={exports:{}};var Ts,As={exports:{}},Es=ns(Object.freeze({__proto__:null,default:{}}));function Ss(){return Ts||(Ts=1,function(e){var t;e.exports=(t=t||function(e,t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==es&&es.crypto&&(n=es.crypto),!n)try{n=Es}catch(e){}var s=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),i={},u=i.lib={},o=u.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},a=u.WordArray=o.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,r=e.sigBytes;if(this.clamp(),s%4)for(var i=0;i<r;i++){var u=n[i>>>2]>>>24-i%4*8&255;t[s+i>>>2]|=u<<24-(s+i)%4*8}else for(var o=0;o<r;o+=4)t[s+o>>>2]=n[o>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(s());return new a.init(t,e)}}),l=i.enc={},c=l.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],r=0;r<n;r++){var i=t[r>>>2]>>>24-r%4*8&255;s.push((i>>>4).toString(16)),s.push((15&i).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new a.init(n,t/2)}},D=l.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],r=0;r<n;r++){var i=t[r>>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(i))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new a.init(n,t)}},M=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(D.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return D.parse(unescape(encodeURIComponent(e)))}},d=u.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=M.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,s=this._data,r=s.words,i=s.sigBytes,u=this.blockSize,o=i/(4*u),l=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*u,c=e.min(4*l,i);if(l){for(var D=0;D<l;D+=u)this._doProcessBlock(r,D);n=r.splice(0,l),s.sigBytes-=c}return new a.init(n,c)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});u.Hasher=d.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new w.HMAC.init(e,n).finalize(t)}}});var w=i.algo={};return i}(Math),t)}(As)),As.exports}!function(e){e.exports=Ss().enc.Utf8}(xs);var Zs=ts(xs.exports),vs={exports:{}};!function(e){var t;e.exports=(t=Ss(),function(){var e=t,n=e.lib.WordArray;function s(e,t,s){for(var r=[],i=0,u=0;u<t;u++)if(u%4){var o=s[e.charCodeAt(u-1)]<<u%4*2|s[e.charCodeAt(u)]>>>6-u%4*2;r[i>>>2]|=o<<24-i%4*8,i++}return n.create(r,i)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,s=this._map;e.clamp();for(var r=[],i=0;i<n;i+=3)for(var u=(t[i>>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o<n;o++)r.push(s.charAt(u>>>6*(3-o)&63));var a=s.charAt(64);if(a)for(;r.length%4;)r.push(a);return r.join("")},parse:function(e){var t=e.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var i=0;i<n.length;i++)r[n.charCodeAt(i)]=i}var u=n.charAt(64);if(u){var o=e.indexOf(u);-1!==o&&(t=o)}return s(e,t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(vs);var Xs=ts(vs.exports);function Ys(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!_t(e))return s("invalid str");let r="";try{let t=Zs.parse(e);r=Xs.stringify(t)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function zs(e,t){return!!Pt(e)&&(!(!_t(t)&&!Mn(t))&&t in e)}function js(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Gs(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Ks(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function Fs(e){if(!(js(e)||(t=e,"[object Blob]"===Object.prototype.toString.call(t))||Gs(e)||Ks(e)))return null;var t;try{if(Mn(e.byteLength))return e.byteLength}catch(e){}try{if(Mn(e.length))return e.length}catch(e){}try{if(Mn(e.size))return e.size}catch(e){}return null}let Ws=/[\t\n\f\r ]/g,Us=/^[A-Za-z0-9+/]*={0,2}$/,Vs=/=+$/;function ks(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!_t(e))return s("invalid str");let r=null;try{let t=Ys(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`str2b64: ${t.msg}`);let n=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!Ot(e))return s("invalid b64");let r=e.replace(Ws,"");if(!Us.test(r))return s("invalid b64, contains characters outside the base64 alphabet or misplaced padding");let i=r.length-r.replace(Vs,"").length,u=(r.length-i)%4;if(0===i&&1===u)return s(`invalid b64, the last chunk has only 1 character[${r.length}]`);if(1===i&&3!==u)return s("invalid b64, malformed padding, 1 padding requires the last chunk to have 3 characters");if(2===i&&2!==u)return s("invalid b64, malformed padding, 2 paddings require the last chunk to have 2 characters");let o=null;try{let e=Xs.parse(r),t=e.words,n=e.sigBytes;o=new Uint8Array(n);for(let e=0;e<n;e++){let n=t[e>>>2]>>>24-e%4*8&255;o[e]=n}}catch(e){return s(e.toString())}return n?{state:"success",msg:o}:o}(t.msg,{returnWithStateAndMsg:!0});if("error"===n.state)return s(`b642u8arr: ${n.msg}`);r=n.msg}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function Qs(e,t,n=0,s=!0,r=52,i=8){return function(e,t,n,s,r,i){if(!Mn(e))return null;if(!Gs(t))return null;if(!wn(n))return null;if(!cn(s))return null;if(!wn(r))return null;if(!wn(i))return null;let u,o,a;e=dn(e);let l=8*i-r-1,c=(1<<l)-1,D=c>>1,M=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=s?i-1:0,w=s?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,u=c):(u=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-u))<1&&(u--,a*=2),(e+=u+D>=1?M/a:M*Math.pow(2,1-D))*a>=2&&(u++,a/=2),u+D>=c?(o=0,u=c):u+D>=1?(o=(e*a-1)*Math.pow(2,r),u+=D):(o=e*Math.pow(2,D-1)*Math.pow(2,r),u=0));r>=8;t[n+d]=255&o,d+=w,o/=256,r-=8);for(u=u<<r|o,l+=r;l>0;t[n+d]=255&u,d+=w,u/=256,l-=8);return t[n+d-w]|=128*y,null}(e,t,n,s,r,i)}function Bs(e){let t=0;_n(e,e=>{t+=Fs(e)});let n=new Uint8Array(t),s=0;return _n(e,e=>{let t=function(e){return js(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);n.set(t,s),s+=t.length}),n}function Hs(e,t={}){let n=[],s=new Uint8Array,r=de(t,"returnWithStateAndMsg",null);cn(r)||(r=!1);let i=e=>r?{state:"error",msg:e}:new Uint8Array;if(!(u=e,Cn(u)&&u.length>=1||Rt(e)))return i("invalid data, data is not an effective object or a non-empty array");var u;let o=[],a=[];function l(e){o.push(Fs(e)),a.push(e)}try{let t=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{results:"",binarys:[]};if(!Pt(e)&&!Cn(e))return s("invalid data, data is not an object or array");if(hn(e)||Nn(e))return s("invalid data, data is an empty object or empty array");let r=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,i="",u=[];try{let t=-1;i=JSON.stringify(e,function(e,n){if(Gs(n)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return u.push(n),e}if(Ks(n)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return u.push(n),e}if(js(n)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return u.push(n),e}return Yn(n)&&(n=n.toString()),_t(n)&&91===n.charCodeAt(0)&&r.test(n)?"[BlazeForPreventEscape]"+n:n})}catch(e){return s(e.toString())}return n?{state:"success",msg:{results:i,binarys:u}}:{results:i,binarys:u}}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return i(`obj2stru8arr: ${t.msg}`);let r=t.msg;l(ks(r.results)),_n(r.binarys,e=>{l(e)});let u=o,c=ks(JSON.stringify(u)),D=new Uint8Array(8);Qs(Fs(c),D),n.push(D),n.push(c),_n(a,e=>{n.push(e)}),s=Bs(n)}catch(e){return i(e.toString())}return r?{state:"success",msg:s}:s}function Js(e,t=0,n=!0,s=52,r=8){return function(e,t,n,s,r){if(!Gs(e))return null;if(!wn(t))return null;if(!cn(n))return null;if(!wn(s))return null;if(!wn(r))return null;let i,u,o=8*r-s-1,a=(1<<o)-1,l=a>>1,c=-7,D=n?0:r-1,M=n?1:-1,d=e[t+D];for(D+=M,i=d&(1<<-c)-1,d>>=-c,c+=o;c>0;i=256*i+e[t+D],D+=M,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=s;c>0;u=256*u+e[t+D],D+=M,c-=8);if(0===i)i=1-l;else{if(i===a)return u?NaN:1/0*(d?-1:1);u+=Math.pow(2,s),i-=l}return(d?-1:1)*u*Math.pow(2,i-s)}(e,t,n,s,r)}var Ps={exports:{}};!function(e){var t;e.exports=(t=Ss(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,s=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,s=[],r=0;r<t;r++)s[r>>>2]|=e[r]<<24-r%4*8;n.call(this,s,t)}else n.apply(this,arguments)};s.prototype=e}}(),t.lib.WordArray)}(Ps);var Rs=ts(Ps.exports);function Os(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Gs(e))return s("invalid u8a");let r="";try{let t=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Gs(e))return s("invalid u8a");let r="";try{r=Rs.create(e).toString(Xs)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`u8arr2b64: ${t.msg}`);r=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!_t(e))return s("invalid b64");let r="";try{r=Xs.parse(e).toString(Zs)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}(t.msg)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function _s(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!Rt(e))return s("invalid data");let r=null,i=null;try{r=e.results,i=e.binarys}catch(e){return s(e.toString())}if(!_t(r))return s("invalid results");if(!Cn(i))return s("invalid binarys");let u=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,o=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,a={};try{a=JSON.parse(r,function(e,t){if(!_t(t)||91!==t.charCodeAt(0))return t;let n=u.exec(t);if(null===n)return o.test(t)?t.slice(23):t;let s=Number(n[2]);if(s>=i.length)throw new Error(`binary index out of range[${s}], binarys.length[${i.length}]`);return((e,t,n)=>{if("Uint16Array"===e&&!Ks(n)){if(!Gs(n))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(n.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${n.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===n.byteOffset&&n.byteLength===n.buffer.byteLength?n:new Uint8Array(n);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!js(n)){if(!Gs(n))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}return n})(n[1],s,i[s])})}catch(e){return s(e.toString())}return n?{state:"success",msg:a}:a}function $s(e,t={}){let n={},s=de(t,"returnWithStateAndMsg",null);cn(s)||(s=!1);let r=e=>s?{state:"error",msg:e}:{};if(!Gs(e))return r("invalid u8a");try{let t=8,s=e.slice(0,t),i=e.slice(t,Fs(e)),u=Js(s),o=i.slice(0,u),a=i.slice(u,Fs(i)),l=Os(o,{returnWithStateAndMsg:!0});if("error"===l.state)return r(`u8arr2str: ${l.msg}`);let c=l.msg,D=function(e,t){let n=0,s=0,r=[];return _n(t,t=>{s=n+t;let i=e.slice(n,s);n=s,r.push(i)}),r}(a,JSON.parse(c)),M=Os(D.shift(),{returnWithStateAndMsg:!0});if("error"===M.state)return r(`u8arr2str: ${M.msg}`);let d=_s({results:M.msg,binarys:D},{returnWithStateAndMsg:!0});if("error"===d.state)return r(`stru8arr2obj: ${d.msg}`);n=d.msg}catch(e){return r(e.toString())}return s?{state:"success",msg:n}:n}function qs(e){return function(e,t={}){let n=de(t,"fs");if(!Qn(e,{fs:n}))return{success:"file does not exist: "+e};if(!Jn(e,{fs:n}))return{error:"input path is not a file: "+e};try{n.unlinkSync(e)}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function er(e){return _t(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let tr={permission:200,param:200,app:200,output:200,packet:200,internal:200},nr={main:{apiType:"main",api:"apiMain",authFrom:"header",statusOf:tr},ulctr:{apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:tr},slc:{apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:tr},dwgfn:{apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:tr,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{apiType:"download",api:"apiDownload",authFrom:"header",statusOf:tr,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var sr=Kt("length"),rr=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ir(e){return rr.test(e)}var ur="\\ud800-\\udfff",or="["+ur+"]",ar="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",lr="\\ud83c[\\udffb-\\udfff]",cr="[^"+ur+"]",Dr="(?:\\ud83c[\\udde6-\\uddff]){2}",Mr="[\\ud800-\\udbff][\\udc00-\\udfff]",dr="(?:"+ar+"|"+lr+")"+"?",wr="[\\ufe0e\\ufe0f]?",yr=wr+dr+("(?:\\u200d(?:"+[cr,Dr,Mr].join("|")+")"+wr+dr+")*"),Lr="(?:"+[cr+ar+"?",ar,Dr,Mr,or].join("|")+")",Ir=RegExp(lr+"(?="+lr+")|"+Lr+yr,"g");function gr(e){return ir(e)?function(e){for(var t=Ir.lastIndex=0;Ir.test(e);)++t;return t}(e):sr(e)}function mr(e){if(null==e)return 0;if(ut(e))return"string"==typeof(t=e)||!D(t)&&h(t)&&"[object String]"==f(t)?gr(e):e.length;var t,n=bt(e);return"[object Map]"==n||"[object Set]"==n?e.size:it(e).length}function pr(e,t,n){var s=-1,r=e.length;t<0&&(t=-t>r?0:r+t),(n=n>r?r:n)<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(r);++s<r;)i[s]=e[s+t];return i}function Cr(e){return e!=e}function fr(e,t,n){return t==t?function(e,t,n){for(var s=n-1,r=e.length;++s<r;)if(e[s]===t)return s;return-1}(e,t,n):function(e,t,n,s){for(var r=e.length,i=n+(s?1:-1);s?i--:++i<r;)if(t(e[i],i,e))return i;return-1}(e,Cr,n)}var hr="\\ud800-\\udfff",Nr="["+hr+"]",br="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",xr="\\ud83c[\\udffb-\\udfff]",Tr="[^"+hr+"]",Ar="(?:\\ud83c[\\udde6-\\uddff]){2}",Er="[\\ud800-\\udbff][\\udc00-\\udfff]",Sr="(?:"+br+"|"+xr+")"+"?",Zr="[\\ufe0e\\ufe0f]?",vr=Zr+Sr+("(?:\\u200d(?:"+[Tr,Ar,Er].join("|")+")"+Zr+Sr+")*"),Xr="(?:"+[Tr+br+"?",br,Ar,Er,Nr].join("|")+")",Yr=RegExp(xr+"(?="+xr+")|"+Xr+vr,"g");function zr(e){return ir(e)?function(e){return e.match(Yr)||[]}(e):function(e){return e.split("")}(e)}function jr(e,t,n){if((e=le(e))&&(n||void 0===t))return en(e);if(!e||!(t=ae(t)))return e;var s=zr(e),r=zr(t),i=function(e,t){for(var n=-1,s=e.length;++n<s&&fr(t,e[n],0)>-1;);return n}(s,r),u=function(e,t){for(var n=e.length;n--&&fr(t,e[n],0)>-1;);return n}(s,r)+1;return function(e,t,n){var s=e.length;return n=void 0===n?s:n,!t&&n>=s?e:pr(e,t,n)}(s,i,u).join("")}function Gr(e,t){if(!_t(e))return[];if(!_t(t))return[];let n=function(e,t){return _t(e)&&_t(t)?e.split(t):[]}(e,t);n=Ht(n,jr);let s=[];return _n(n,function(e){_t(e)&&s.push(e)}),s}const Kr=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function Fr(e,t={}){let n=de(t,"fs"),s=de(t,"chunkSize");if(Mn(s)||(s=67108864),s=dn(s),!Jn(e,{fs:n}))return Promise.reject("fp is not a file");let r=Vn();try{let{create64:t}=await async function(){return function(e){const{exports:{mem:t,xxh32:n,xxh64:s,init32:r,update32:i,digest32:u,init64:o,update64:a,digest64:l}}=e;let c=new Uint8Array(t.buffer);function D(e,n){if(t.buffer.byteLength<e+n){const s=Math.ceil((e+n-t.buffer.byteLength)/65536);t.grow(s),c=new Uint8Array(t.buffer)}}function M(e,t,n,s,r,i){D(e);const u=new Uint8Array(e);return c.set(u),n(0,t),u.set(c.subarray(0,e)),{update(t){let n;return c.set(u),"string"==typeof t?(D(3*t.length,e),n=L.encodeInto(t,c.subarray(e)).written):(D(t.byteLength,e),c.set(t,e),n=t.byteLength),s(0,e,n),u.set(c.subarray(0,e)),this},digest:()=>(c.set(u),i(r(0)))}}function d(e){return e>>>0}const w=2n**64n-1n;function y(e){return e&w}const L=new TextEncoder;function I(e,t=0){return D(3*e.length,0),d(n(0,L.encodeInto(e,c).written,t))}function g(e,t=0n){return D(3*e.length,0),y(s(0,L.encodeInto(e,c).written,t))}return{h32:I,h32ToString:(e,t=0)=>I(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(D(e.byteLength,0),c.set(e),d(n(0,e.byteLength,t))),create32:(e=0)=>M(48,e,r,i,u,d),h64:g,h64ToString:(e,t=0n)=>g(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(D(e.byteLength,0),c.set(e),y(s(0,e.byteLength,t))),create64:(e=0n)=>M(88,e,o,a,l,y)}}((await WebAssembly.instantiate(Kr)).instance)}(),i=t(),u=n.createReadStream(e,{highWaterMark:s});u.on("data",e=>{i.update(e)}),u.on("end",()=>{let e=i.digest().toString(16).padStart(16,"0");r.resolve(e)}),u.on("error",r.reject)}catch(e){r.reject(e.toString())}return r}var Wr={exports:{}};!function(e){var t,n;e.exports=(t=u,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),a=n?n+t:t;return e._events[a]?e._events[a].fn?e._events[a]=[e._events[a],o]:e._events[a].push(o):(e._events[a]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var a,l,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(l=1,a=new Array(D-1);l<D;l++)a[l-1]=arguments[l];c.fn.apply(c.context,a)}else{var M,d=c.length;for(l=0;l<d;l++)switch(c[l].once&&this.removeListener(e,c[l].fn,void 0,!0),D){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,t);break;case 3:c[l].fn.call(c[l].context,t,s);break;case 4:c[l].fn.call(c[l].context,t,s,r);break;default:if(!a)for(M=1,a=new Array(D-1);M<D;M++)a[M-1]=arguments[M];c[l].fn.apply(c[l].context,a)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var a=0,l=[],c=o.length;a<c;a++)(o[a].fn!==t||r&&!o[a].once||s&&o[a].context!==s)&&l.push(o[a]);l.length?this._events[i]=1===l.length?l[0]:l:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(r="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LGk9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PWl8fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUscz1jLmhhc093blByb3BlcnR5LGY9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIix2PWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDp2JiZ2IGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1zLmNhbGwodCxsKSxyPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgaT1mLmNhbGwodCk7cmV0dXJuIG4mJihlP3RbbF09cjpkZWxldGUgdFtsXSksaX0odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZnKHQpPT1kfXZhciBTPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGo9L15cdyokLztmdW5jdGlvbiB3KHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfXZhciBtPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLCQ9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIHg9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLEY9T2JqZWN0LnByb3RvdHlwZSxMPXoudG9TdHJpbmcsUD1GLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitMLmNhbGwoUCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighdyh0KXx8KGU9dCwkJiYkIGluIGUpKXJldHVybiExO3ZhciBlLHI9ZnVuY3Rpb24odCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9Zyh0KTtyZXR1cm4gZT09T3x8ZT09RXx8ZT09bXx8ZT09Tn0odCk/VDpJO3JldHVybiByLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB4LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIE0ocik/cjp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxlKXtmb3IodmFyIHIsbixpPXQubGVuZ3RoO2ktLTspaWYoKHI9dFtpXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gaTtyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gQy5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PWVbdF06Ry5jYWxsKGUsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLHJbdF09VSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgWD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEIodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Qi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxCLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPXEoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6WC5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LEIucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9cShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LEIucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxCLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49cShyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfTt2YXIgRD1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxlKXt2YXIgcixuLGk9dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9pWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOmkubWFwfWZ1bmN0aW9uIEoodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoRHx8Qiksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPUgodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxpPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sbz1yLmNhY2hlO2lmKG8uaGFzKGkpKXJldHVybiBvLmdldChpKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9by5zZXQoaSx1KXx8byx1fTtyZXR1cm4gci5jYWNoZT1uZXcoUS5DYWNoZXx8Sikscn1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLGV0PS9cXChcXCk/L2cscnQ9KFY9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxyLG4saSl7ZS5wdXNoKG4/aS5yZXBsYWNlKGV0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9cnQ7dmFyIGl0PTEvMCxvdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1vdD9vdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkobik7KytyPG47KWlbcl09ZSh0W3JdLHIsdCk7cmV0dXJuIGl9KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihuKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFfKHQpKXx8ai50ZXN0KHQpfHwhUy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06bnQoY3QodCkpfXZhciBmdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1mdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbbHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIHB0KHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7cmV0dXJuISFwdCh0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIHZ0KCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgZSBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIFN0KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFidCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghZHQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIWd0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIV90KHQpKSkpKX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hKCFkdCh0KXx8IiI9PT10KX12YXIgd3Q9L1xzLzt2YXIgbXQ9L15ccysvO2Z1bmN0aW9uIE90KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZ3dC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKG10LCIiKTp0fXZhciBFdD1OYU4sTnQ9L15bLStdMHhbMC05YS1mXSskL2ksQXQ9L14wYlswMV0rJC9pLFJ0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKF8odCkpcmV0dXJuIEV0O2lmKHcodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXcoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PU90KHQpO3ZhciByPUF0LnRlc3QodCk7cmV0dXJuIHJ8fFJ0LnRlc3QodCk/JHQodC5zbGljZSgyKSxyPzI6OCk6TnQudGVzdCh0KT9FdDordH12YXIgSXQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1JdHx8dD09PS1JdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBMdCh0KXt2YXIgZT1GdCh0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIFB0PSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBUdCh0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGIoZSkmJmcoZSk9PVB0O3ZhciBlfWZ1bmN0aW9uIE10KHQpe2xldCBlPSExO2lmKGp0KHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKF90KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24ga3QodCl7aWYoIU10KHQpKXJldHVybiAwO3JldHVybiBGdCh0KX1mdW5jdGlvbiBVdCh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIFR0KHIpfHwocj0hMSksISFNdCh0KSYmKHQ9a3QodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PUx0KG4pKTt2YXIgbn12YXIgQ3Q9dS5pc0Zpbml0ZSxHdD1NYXRoLm1pbjt2YXIgV3Q9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXh0KHQpLChyPW51bGw9PXI/MDpHdChMdChyKSwyOTIpKSYmQ3QodCkpe3ZhciBuPShjdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oY3QoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIikscXQ9V3Q7ZnVuY3Rpb24gWHQodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO1R0KHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtUdChuKXx8KG49ITEpO2xldCBpPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7VHQoaSl8fChpPSExKTtsZXQgbz10PT5pP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYoaSlyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighTXQodCkpcmV0dXJuIG8oMCk7bGV0IGE9bnVsbDt0cnl7dD1rdCh0KSxhPXF0KHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLG8oYSkpfWZ1bmN0aW9uIEJ0KHQsZT17fSl7aWYoIVV0KHQsZSkpcmV0dXJuITE7cmV0dXJuIFh0KHQpPj0wfWZ1bmN0aW9uIER0KHQsZSl7aWYoIWp0KHQpKXJldHVybiIiO2lmKCFCdChlKSlyZXR1cm4iIjtpZigwPT09KGU9WHQoZSkpKXJldHVybiIiO2xldCByPXQubGVuZ3RoLWU7cmV0dXJuIHI8MCYmKHI9MCksdC5zdWJzdHJpbmcocixyK2UpfWZ1bmN0aW9uIEh0KHQsZSl7cmV0dXJuIGp0KHQpJiZCdChlKT8wPT09KGU9WHQoZSkpP3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4ganQodCkmJkJ0KGUpPzA9PT0oZT1YdChlKSk/IiI6dC5zdWJzdHJpbmcoMCxlKToiIn0odCx0Lmxlbmd0aC1lKToiIn1mdW5jdGlvbiBKdCh0KXtpZighanQodCkpcmV0dXJue3BhdGg6IiIsaXNSb290OiExfTtmb3IoO3QuaW5kZXhPZigiXFxcXCIpPj0wOyl0PXQucmVwbGFjZSgiXFxcXCIsIlxcIik7Zm9yKDt0LmluZGV4T2YoIi8vIik+PTA7KXQ9dC5yZXBsYWNlKCIvLyIsIi8iKTtpZigiOiI9PT1EdCh0LDEpKXJldHVybntwYXRoOmAke3R9XFxgLGlzUm9vdDohMH07aWYoIlxcIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIjoiPT09RHQoZSwxKT97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fWlmKCIvIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIDA9PT1lLmxlbmd0aD97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fXJldHVybntwYXRoOnQsaXNSb290OiExfX1mdW5jdGlvbiBLdCh0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1lLnBhdGg7dHJ5e3I9ci5zcGxpdCgiXFwiKS5wb3AoKS5zcGxpdCgiLyIpLnBvcCgpfWNhdGNoKHQpe31yZXR1cm4gcn1mdW5jdGlvbiBRdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBWdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZigheXQodCx7ZnM6cn0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtyLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIFl0KHQsZSxuPXt9KXtsZXQgaT0iIixvPWh0KG4sImZzIik7aWYoIWd0KHU9dCl8fDA9PT11Lmxlbmd0aHx8MT09PXUubGVuZ3RoJiZTdCh1WzBdKSl0aHJvdyBuZXcgRXJyb3IoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgdTtsZXQgYT1mdW5jdGlvbih0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1LdCh0PWUucGF0aCk7aWYoIWp0KHIpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxyLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KGUpLGM9aHQobiwiZm5PdXQiLCIiKTtqdChjKXx8KGM9S3QoZSkpLFF0KGEse2ZzOm99KXx8ZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1odChlLCJmcyIpO2lmKFF0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOnJ9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e3IubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOm99KTtsZXQgcz12dCgpO3MuY2F0Y2goKCgpPT57fSkpO2xldCBmPW51bGwsbD1udWxsLGg9dnQoKTtoLmNhdGNoKCgoKT0+e30pKTt0cnl7Zj1vLmNyZWF0ZVdyaXRlU3RyZWFtKGUpLGYub24oImVycm9yIiwodD0+e2w9dCxpPXQubWVzc2FnZSxoLnJlamVjdCh0KSxzLnJlamVjdChpKX0pKSxmLm9uKCJmaW5pc2giLCgoKT0+e2xldCB0PXtmaWxlbmFtZTpjLHBhdGg6ZX07cy5yZXNvbHZlKHQpfSkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtpZihudWxsIT09bCl0aHJvdyBsO2xldCBuPXRbZV07aWYoIXl0KG4se2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO2xldCBpPWFzeW5jKCk9PntsZXQgdD1vLmNyZWF0ZVJlYWRTdHJlYW0obiksZT1udWxsO2ZvciBhd2FpdChsZXQgbiBvZiB0KXtpZihudWxsIT09bCl0aHJvdyBsO2xldCB0PSExLGk9bmV3IFByb21pc2UoKChlLHIpPT57dD0hZi53cml0ZShuLCh0PT57dD9yKHQpOmUoKX0pKX0pKTtpLmNhdGNoKCgoKT0+e30pKSxlPWksdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtyLm9uY2UoZiwiZHJhaW4iKSxoXSl9aWYobnVsbCE9PWUmJmF3YWl0IGUsbnVsbCE9PWwpdGhyb3cgbDtWdChuLHtmczpvfSl9O2F3YWl0IGkoKX1mLmVuZCgpfWNhdGNoKHQpe2k9aHQodCwibWVzc2FnZSIsU3RyaW5nKHQpKTt0cnl7Zi5kZXN0cm95KCl9Y2F0Y2godCl7fXMucmVqZWN0KGkpfXJldHVybiBzfWNvbnN0IFp0PW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHRlKHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPWh0KGUsImNodW5rU2l6ZSIpO2lmKE10KG4pfHwobj02NzEwODg2NCksbj1rdChuKSwheXQodCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBpPXZ0KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOmksdXBkYXRlMzI6byxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6c319PXQ7bGV0IGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4saSxvKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIGYuc2V0KHUpLHIoMCxlKSx1LnNldChmLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIGYuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Zy5lbmNvZGVJbnRvKGUsZi5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLGYuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KGYuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4oZi5zZXQodSksbyhpKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiB2KHQpe3JldHVybiB0Jnl9Y29uc3QgZz1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LGU9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxnLmVuY29kZUludG8odCxmKS53cml0dGVuLGUpKX1mdW5jdGlvbiBTKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHYobigwLGcuZW5jb2RlSW50byh0LGYpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWIpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLGYuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsaSxvLHUscCksaDY0OlMsaDY0VG9TdHJpbmc6KHQsZT1kKT0+Uyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCksZi5zZXQodCksdihuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMscyx2KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShadCkpLmluc3RhbmNlKX0oKSxvPWUoKSx1PXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTt1Lm9uKCJkYXRhIiwodD0+e28udXBkYXRlKHQpfSkpLHUub24oImVuZCIsKCgpPT57bGV0IHQ9by5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtpLnJlc29sdmUodCl9KSksdS5vbigiZXJyb3IiLGkucmVqZWN0KX1jYXRjaCh0KXtpLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBpfWxldCBtZXJnZVNsaWNlcz1hc3luYyhyLG4saSxvKT0+e2xldCB1PVtdO2ZvcihsZXQgbz0wO288bjtvKyspe2xldCBuPXQucmVzb2x2ZShpLGAke3J9XyR7b31gKTtpZigheXQobix7ZnM6ZX0pKXRocm93IG5ldyBFcnJvcihgZnBJblske259XSBpcyBub3QgYSBmaWxlYCk7dS5wdXNoKG4pfWxldCBhPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQscixuPXt9KXtyZXR1cm4gWXQodCxyLHtmczplLC4uLm59KX0odSxvKTtyZXR1cm57Li4uYSxoYXNoOmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIHRlKHQse2ZzOmUsLi4ucn0pfShvKX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuatpOS6jOebo+iBveacg+mYu+atok5vZGXpoJDoqK3nmoR3b3JrZXLntYLmraLooYzngrosIOS9v3dvcmtlcuW0qea9sOW+jOS7jeWtmOa0u+epuui9iSwKICAgIC8v5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOS6i+S7tiwgcGVuZGluZyBwcm9taXNl5rC45LmF5oe4572uLCDkuJTlrZjmtLvmrq3lsY13b3JrZXLmnIPku6Tlrr/kuLvnqIvluo/nhKHms5XpgIDlh7o7CiAgICAvL+enu+mZpOW+jHdvcmtlcuS+nemgkOioreihjOeCuuatu+S6oSwgZXJyb3Lkuovku7blgrPoh7PlpJblsaQsIOeUseWkluWxpOaVtOaJuXJlamVjdCBwZW5kaW5nCiAgICAvLyBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAvLyAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIC8vIH0pCiAgICAvLyBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICAvLyB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQoKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(r,"base64").toString("utf8"));var r;function i(){let s=new n,r={},i=!1,u=!1;function o(e){for(let t in r){let n=r[t];delete r[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function a(e){i||(i=!0,o(e))}let l=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){a(e)}}(t);if(!l)return a("invalid worker"),null;function c(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(i)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let r=0;r<e;r++)t[r]=n[0|Math.random()*s];return t.join("")}();r[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return l.postMessage(n),s.once(t,n=>{delete r[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return l.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),l.on("error",a),l.on("exit",e=>{u||a("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};l.postMessage(e)}([...arguments]),s.main=c,s.main=c,s.terminate=function(){l?(u=!0,l.terminate(),l=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(Wr);var Ur=ts(Wr.exports);let Vr=new Set,kr=new Map,Qr=(t,n,s="")=>{let r=e.resolve(n,t);return{fp:r,fpm:`${r}.merging`,fpd:`${r}.done`,fpe:`${r}.error`,fpr:_t(s)?`${r}.q${s}.ro`:""}},Br=e=>{let t=qs(e);if(Pn(e))throw new Error(`can not remove ${e}: ${Ns(de(t,"error"))}`)},Hr=async(e,n)=>{Vr.add(n.fp);try{let s=await function(e,n={}){return Fr(e,{fs:t,...n})}(n.fp);if(s===e)return t.writeFileSync(n.fpd,"","utf8"),{state:"done"};let r=`merged file[${n.fp}] is incomplete: hash[${s}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(n.fpe,r,"utf8")}catch(e){console.log(`can not write ${n.fpe}`,e)}return{state:"mismatch",reason:r}}catch(e){return{state:"error",reason:`verify merged file[${n.fp}] error: ${Ns(e)}`}}finally{Vr.delete(n.fp)}},Jr=async(e,n,s)=>{let r=`${function(){if(!jn(rs))throw new Error("invalid dayjs");return rs().format("YYYYMMDDHHmmss")}()}|${as(6)}|${e}`,i=Qr(e,s);if(Vr.has(i.fp))return r;let u=Pn(i.fpe),o=Pn(i.fp);if(!u&&o){let t=await Hr(e,i);if("done"===t.state)return r;if("error"===t.state)throw new Error(t.reason)}return Br(i.fpd),Br(i.fpe),Vr.add(i.fp),setTimeout(()=>{Ur(e,n,s,i.fpm).then(n=>{let s=de(n,"hash","");if(s!==e)throw new Error(`merged file hash[${s}] != fileHash[${e}]`);t.renameSync(i.fpm,i.fp),t.writeFileSync(i.fpd,"","utf8")}).catch(e=>{console.log(e),qs(i.fpm);let n=Ns(e);try{t.writeFileSync(i.fpe,n,"utf8")}catch(e){console.log(`can not write ${i.fpe}`,e)}}).finally(()=>{Vr.delete(i.fp)})},1),r},Pr=async(e,n,s={})=>{let r=de(s,"funConsume"),i=de(s,"funLog");jn(i)||(i=e=>{console.log(e)});let u=Gr(e,"|"),o=de(u,0,""),a=de(u,1,""),l=de(u,2,"");if(3!==mr(u)||!er(o)||!er(a)||!er(l)){let t=`invalid queueId[${Ns(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let c=Qr(l,n,`${o}${a}`);if(Pn(c.fpr)){let e=((e,n)=>{try{let s=$s(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==de(s,"state"))return n(`stored result ${e.fpr} is corrupted, treat as not stored: ${de(s,"msg","unknown error")}`),{ok:!1};let r=s.msg;return Pt(r)&&zs(r,"ro")?{ok:!0,ro:r.ro}:(n(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return n(`can not read stored result ${e.fpr}: ${Ns(t)}`),{ok:!1}}})(c,i);if(e.ok)return{state:"success",msg:e.ro,path:c.fp,from:"stored"}}if(Pn(c.fpe)){let e="";try{e=t.readFileSync(c.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:c.fp}}if(Vr.has(c.fp))return{state:"merging",msg:"",path:c.fp};let D=Pn(c.fp),M=Pn(c.fpd);if(D&&!M){let e=await Hr(l,c);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:c.fp};M=!0}if(D&&M){if(!jn(r))return{state:"success",msg:"",path:c.fp};let n=await((e,n,s,r)=>{let i=kr.get(e);return i||(i=Promise.resolve().then(()=>s(n.fp)).then(e=>{e=void 0===e?null:e;try{let s=Hs({ro:e},{returnWithStateAndMsg:!0});if("success"!==de(s,"state"))return e;t.writeFileSync(n.fpr,Buffer.from(s.msg));let r=$s(s.msg,{returnWithStateAndMsg:!0});if("success"===de(r,"state")&&Pt(r.msg)&&zs(r.msg,"ro"))return r.msg.ro}catch(e){r(`can not store consumed result to ${n.fpr}: ${Ns(e)}`)}return e}).finally(()=>{kr.delete(e)}),kr.set(e,i),i)})(e,c,r,i);return{state:"success",msg:n,path:c.fp,from:"consumed"}}return!D&&M?{state:"error",msg:"merged file already consumed",reason:`merged file[${c.fp}] no longer exists and no stored result for queueId[${e}]`,path:c.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${l}] (never pushed, or artifacts removed)`,path:c.fp}};var Rr={exports:{}};!function(e){var t,n;e.exports=(t=u,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),a=n?n+t:t;return e._events[a]?e._events[a].fn?e._events[a]=[e._events[a],o]:e._events[a].push(o):(e._events[a]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var a,l,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(l=1,a=new Array(D-1);l<D;l++)a[l-1]=arguments[l];c.fn.apply(c.context,a)}else{var M,d=c.length;for(l=0;l<d;l++)switch(c[l].once&&this.removeListener(e,c[l].fn,void 0,!0),D){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,t);break;case 3:c[l].fn.call(c[l].context,t,s);break;case 4:c[l].fn.call(c[l].context,t,s,r);break;default:if(!a)for(M=1,a=new Array(D-1);M<D;M++)a[M-1]=arguments[M];c[l].fn.apply(c[l].context,a)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var a=0,l=[],c=o.length;a<c;a++)(o[a].fn!==t||r&&!o[a].once||s&&o[a].context!==s)&&l.push(o[a]);l.length?this._events[i]=1===l.length?l[0]:l:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(r="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRj05MDA3MTk5MjU0NzQwOTkxLE49L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmTi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLEZ0PSJbb2JqZWN0IERhdGFWaWV3XSIsTnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1GdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBOdDpyZXR1cm4gRnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLEZlPSJbb2JqZWN0IFJlZ0V4cF0iLE5lPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxwPWM9PWY7aWYocCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBGZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBOZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgaD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9LZShzLGYsUWV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gRnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIE5yKHQsZSl7cmV0dXJuKE8odCk/cmU6RnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVFyKHQpKXJldHVybltdO2lmKCFRcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBRcih0KSYmUXIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPU5yKHIsS3IpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtRcih0KSYmbi5wdXNoKHQpfSkpLG59dmFyIFpyPU5hTix0bj0vXlstK10weFswLTlhLWZdKyQvaSxlbj0vXjBiWzAxXSskL2kscm49L14wb1swLTddKyQvaSxubj1wYXJzZUludDtmdW5jdGlvbiBvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIFpyO2lmKEoodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUooZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PSRyKHQpO3ZhciByPWVuLnRlc3QodCk7cmV0dXJuIHJ8fHJuLnRlc3QodCk/bm4odC5zbGljZSgyKSxyPzI6OCk6dG4udGVzdCh0KT9acjordH12YXIgdW49MS8wLGFuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBjbih0KXtyZXR1cm4gdD8odD1vbih0KSk9PT11bnx8dD09PS11bj8odDwwPy0xOjEpKmFuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBmbih0KXt2YXIgZT1jbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIHNuPSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBsbih0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGcoZSkmJmQoZSk9PXNuO3ZhciBlfWZ1bmN0aW9uIHBuKHQpe2xldCBlPSExO2lmKFFyKHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSh0KSlyZXR1cm4hMTtlPSEwfXJldHVybiBlfWZ1bmN0aW9uIGhuKHQpe2lmKCFwbih0KSlyZXR1cm4gMDtyZXR1cm4gY24odCl9ZnVuY3Rpb24gdm4odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3JldHVybiBsbihyKXx8KHI9ITEpLCEhcG4odCkmJih0PWhuKHQpLHI/TnVtYmVyLmlzU2FmZUludGVnZXIodCk6Im51bWJlciI9PXR5cGVvZihuPXQpJiZuPT1mbihuKSk7dmFyIG59dmFyIHluPWEuaXNGaW5pdGUsYm49TWF0aC5taW47dmFyIGRuPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGhbdF07cmV0dXJuIGZ1bmN0aW9uKHQscil7aWYodD1vbih0KSwocj1udWxsPT1yPzA6Ym4oZm4ociksMjkyKSkmJnluKHQpKXt2YXIgbj0oZHIodCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKG49KGRyKGUoblswXSsiZSIrKCtuWzFdK3IpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtuWzFdLXIpKX1yZXR1cm4gZSh0KX19KCJyb3VuZCIpLGduPWRuO2Z1bmN0aW9uIF9uKHQsZT17fSl7bGV0IHI9d3IoZSwidXNlQ2xhbXBTYWZlIixudWxsKTtsbihyKXx8KHI9ITEpO2xldCBuPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7bG4obil8fChuPSExKTtsZXQgbz13cihlLCJyZXR1cm5XaXRoU3RhdGVBbmRNc2ciLG51bGwpO2xuKG8pfHwobz0hMSk7bGV0IHU9dD0+bz97c3RhdGU6InN1Y2Nlc3MiLG1zZzp0fTp0LGk9dD0+e2lmKG8pcmV0dXJue3N0YXRlOiJlcnJvciIsbXNnOnR9O3Rocm93IG5ldyBFcnJvcih0KX07aWYoIXBuKHQpKXJldHVybiB1KDApO2xldCBhPW51bGw7dHJ5e3Q9aG4odCksYT1nbih0KSxyJiYoYT5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUj9hPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSOmE8TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVImJihhPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSl9Y2F0Y2godCl7cmV0dXJuIGkodC50b1N0cmluZygpKX1yZXR1cm4gbiYmIU51bWJlci5pc1NhZmVJbnRlZ2VyKE51bWJlcihhKSk/aShgdlske3R9XSBpcyBub3QgYSBzYWZlIGludGVnZXJgKTooIjAiPT09U3RyaW5nKGEpJiYoYT0wKSx1KGEpKX1mdW5jdGlvbiBqbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT49MH1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59ZnVuY3Rpb24gd24odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO3JldHVybiEhbW4odCx7ZnM6cn0pJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBTbih0KXtyZXR1cm4gd24odCx7ZnM6ZX0pfWZ1bmN0aW9uIE9uKHQsZSl7dmFyIHI9W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbixvKXtlKHQsbixvKSYmci5wdXNoKHQpfSkpLHJ9ZnVuY3Rpb24gQW4odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO2lmKCFtbih0LHtmczpyfSkpcmV0dXJuITE7bGV0IG49ci5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gem4odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIUFuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmZnVuY3Rpb24odCxlPXt9KXtyZXR1cm4hIXZuKHQsZSkmJl9uKHQpPjB9KGUpJiYoZT1fbihlKSk8MSYmKGU9MSksZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gQW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9ZnVuY3Rpb24gRW4odCxlPTEscj17fSl7bGV0IG49d3IociwicGF0aCIpLG89d3IociwiZnMiKTtpZighQW4odCx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZmRbJHt0fV0gaXMgbm90IGEgZm9sZGVyYCk7bGV0IHU9W107dmFyIGksYTtyZXR1cm4gdT16bih0LGUse3BhdGg6bixmczpvfSksYT17aXNGb2xkZXI6ITF9LHU9KE8oaT11KT9UZTpPbikoaSx4cihhKSksdT1Ocih1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKHBuKG4pfHwobj02NzEwODg2NCksbj1obihuKSwhd24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQucmVzb2x2ZSh1LG8pLGE9ITE7aWYoYT1TbihpKSwham4ocix7dXNlTGltaXRTYWZlOiEwfSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19cj1fbihyKTtsZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gRm4odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxTbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBFbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLnN0YXJ0c1dpdGgoYCR7b31fYCksdT0hMTt0cnl7bGV0IHI9ZS5zdGF0U3luYyh0LnBhdGgpO3U9ci5zaXplPjAmJnIuc2l6ZTw9bn1jYXRjaChlKXtjb25zb2xlLmxvZygiY2hlY2sgZWFjaCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsdC5wYXRoLGUpfWlmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWpuKHIpKXJldHVybiB2b2lkIGNvbnNvbGUubG9nKGBza2lwIGZpbGVbJHt0Lm5hbWV9XTogY2FuIG5vdCBwYXJzZSBjaHVuayBpbmRleGApO3I9X24ocikscy5wdXNoKHIpfXZhciBpLGF9KSl9bGV0IGw9ZWUocyk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOmwsc2xrczpzfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewoKICAgIC8v5YOF5LuldW5jYXVnaHRFeGNlcHRpb25Nb25pdG9y6KiY6YyELCDkuI3lj6/oqLvlhop1bmNhdWdodEV4Y2VwdGlvbuiIh3VuaGFuZGxlZFJlamVjdGlvbuebo+iBvToKICAgIC8v5pa8d29ya2Vy5YWn6Ki75YaK5q2k5LqM55uj6IG95pyD6Zi75q2iTm9kZemgkOioreeahHdvcmtlcue1guatouihjOeCuiwg5L2/d29ya2Vy5bSp5r2w5b6M5LuN5a2Y5rS756m66L2JLAogICAgLy/lpJblsaTmlLbkuI3liLBlcnJvci9leGl05LqL5Lu2LCBwZW5kaW5nIHByb21pc2XmsLjkuYXmh7jnva4sIOS4lOWtmOa0u+aureWxjXdvcmtlcuacg+S7pOWuv+S4u+eoi+W6j+eEoeazlemAgOWHujsKICAgIC8v56e76Zmk5b6Md29ya2Vy5L6d6aCQ6Kit6KGM54K65q275LqhLCBlcnJvcuS6i+S7tuWCs+iHs+WkluWxpCwg55Sx5aSW5bGk5pW05om5cmVqZWN0IHBlbmRpbmcKICAgIC8vIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIC8vIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIC8vIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCgp9CmNhdGNoKGVycil7fQoK",Buffer.from(r,"base64").toString("utf8"));var r;function i(){let s=new n,r={},i=!1,u=!1;function o(e){for(let t in r){let n=r[t];delete r[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function a(e){i||(i=!0,o(e))}let l=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){a(e)}}(t);if(!l)return a("invalid worker"),null;function c(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(i)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let r=0;r<e;r++)t[r]=n[0|Math.random()*s];return t.join("")}();r[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return l.postMessage(n),s.once(t,n=>{delete r[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return l.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),l.on("error",a),l.on("exit",e=>{u||a("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};l.postMessage(e)}([...arguments]),s.main=c,s.main=c,s.terminate=function(){l?(u=!0,l.terminate(),l=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(Rr);var Or=ts(Rr.exports),_r={exports:{}};!function(e){var t,n;e.exports=(t=u,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),a=n?n+t:t;return e._events[a]?e._events[a].fn?e._events[a]=[e._events[a],o]:e._events[a].push(o):(e._events[a]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var a,l,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(l=1,a=new Array(D-1);l<D;l++)a[l-1]=arguments[l];c.fn.apply(c.context,a)}else{var M,d=c.length;for(l=0;l<d;l++)switch(c[l].once&&this.removeListener(e,c[l].fn,void 0,!0),D){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,t);break;case 3:c[l].fn.call(c[l].context,t,s);break;case 4:c[l].fn.call(c[l].context,t,s,r);break;default:if(!a)for(M=1,a=new Array(D-1);M<D;M++)a[M-1]=arguments[M];c[l].fn.apply(c[l].context,a)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var a=0,l=[],c=o.length;a<c;a++)(o[a].fn!==t||r&&!o[a].once||s&&o[a].context!==s)&&l.push(o[a]);l.length?this._events[i]=1===l.length?l[0]:l:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(r="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIsdj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHkodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6diYmdiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmeSh0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gRSh0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT15KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBOLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oTj0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrTjoiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBrKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihFKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBCKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gayhyKT9yOnZvaWQgMH12YXIgVT1CKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPUIoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB2dD1PYmplY3QucHJvdG90eXBlO3ZhciB5dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9eXQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx2dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1CKGksIkRhdGFWaWV3IiksanQ9QihpLCJQcm9taXNlIiksU3Q9QihpLCJTZXQiKSx3dD1CKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD15OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1FdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT15KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gTnQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFFKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIga3QsQnQ9KGt0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2t0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTpCdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnkoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB2ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24geWUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ5KGUpPT12ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZGUodCl7bGV0IGU9ITE7aWYoYmUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gZ2UodCl7aWYoIWRlKHQpKXJldHVybiAwO3JldHVybiBwZSh0KX1mdW5jdGlvbiBfZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIHllKHIpfHwocj0hMSksISFkZSh0KSYmKHQ9Z2UodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWhlKG4pKTt2YXIgbn12YXIgamU9aS5pc0Zpbml0ZSxTZT1NYXRoLm1pbjt2YXIgd2U9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PWZlKHQpLChyPW51bGw9PXI/MDpTZShoZShyKSwyOTIpKSYmamUodCkpe3ZhciBuPShmdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZnQoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksbWU9d2U7ZnVuY3Rpb24gT2UodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO3llKHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTt5ZShuKXx8KG49ITEpO2xldCBvPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7eWUobyl8fChvPSExKTtsZXQgaT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighZGUodCkpcmV0dXJuIGkoMCk7bGV0IGE9bnVsbDt0cnl7dD1nZSh0KSxhPW1lKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLGkoYSkpfWZ1bmN0aW9uIEFlKHQsZT17fSl7aWYoIV9lKHQsZSkpcmV0dXJuITE7cmV0dXJuIE9lKHQpPj0wfWNvbnN0IEVlPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIE5lKHQsZT17fSl7aWYocj10LCJbb2JqZWN0IEJsb2JdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSYmIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpcmV0dXJuIGNvbnNvbGUubG9nKCJpbnAiLHQpLFByb21pc2UucmVqZWN0KCJpbnAgaXMgbm90IGEgQmxvYiBvciBGaWxlIik7dmFyIHI7bGV0IG49aHQoZSwiY2h1bmtTaXplIik7ZGUobil8fChuPTY3MTA4ODY0KSxuPWdlKG4pO2xldHtjcmVhdGU2NDpvfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLHIoMCxlKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyxpLHUsaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShFZSkpLmluc3RhbmNlKX0oKSxpPW8oKSx1PTA7Zm9yKDt1PHQuc2l6ZTspe2xldCBlPXQuc2xpY2UodSx1K24pLHI9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO2kudXBkYXRlKG5ldyBVaW50OEFycmF5KHIpKSx1Kz1ufXJldHVybiBpLmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpfWxldCBjaGVja1NsaWNlc0hhc2g9YXN5bmMocixuLG8pPT57aWYoIShiZShpPW4pJiZpLmxlbmd0aDw9MTI4JiYvXltBLVphLXowLTldKyQvLnRlc3QoaSkpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZUhhc2gifX12YXIgaTtpZighQXJyYXkuaXNBcnJheShyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTbGljZUhhc2hzIn19aWYoMD09PXRlKHIpKXtyZXR1cm57ZXJyb3I6Im5vIGZpbGVTbGljZUhhc2hzIn19bGV0IHU9YCR7bn1fYCxhPWUucmVhZGRpclN5bmMobyksYz1uZXcgU2V0O2ZvcihsZXQgdCBvZiBhKXtpZighdC5zdGFydHNXaXRoKHUpKWNvbnRpbnVlO2xldCBlPXQuc2xpY2UodS5sZW5ndGgpO0FlKGUpJiZTdHJpbmcoT2UoZSkpPT09ZSYmYy5hZGQoT2UoZSkpfWxldCBmPVtdLHM9bmV3IFNldDtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IHU9cltpXSxhPWh0KHUsImkiKTtpZighQWUoYSkpY29udGludWU7aWYoYT1PZShhKSwhYy5oYXMoYSl8fHMuaGFzKGEpKWNvbnRpbnVlO3MuYWRkKGEpO2xldCBsPXQucmVzb2x2ZShvLGAke259XyR7YX1gKSxwPSIiO3RyeXtwPWF3YWl0IE5lKG5ldyBCbG9iKFtlLnJlYWRGaWxlU3luYyhsKV0pKX1jYXRjaCh0KXtjb250aW51ZX1odCh1LCJoIik9PT1wJiZmLnB1c2goYSl9cmV0dXJue3Nsa3M6Zn19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewoKICAgIC8v5YOF5LuldW5jYXVnaHRFeGNlcHRpb25Nb25pdG9y6KiY6YyELCDkuI3lj6/oqLvlhop1bmNhdWdodEV4Y2VwdGlvbuiIh3VuaGFuZGxlZFJlamVjdGlvbuebo+iBvToKICAgIC8v5pa8d29ya2Vy5YWn6Ki75YaK5q2k5LqM55uj6IG95pyD6Zi75q2iTm9kZemgkOioreeahHdvcmtlcue1guatouihjOeCuiwg5L2/d29ya2Vy5bSp5r2w5b6M5LuN5a2Y5rS756m66L2JLAogICAgLy/lpJblsaTmlLbkuI3liLBlcnJvci9leGl05LqL5Lu2LCBwZW5kaW5nIHByb21pc2XmsLjkuYXmh7jnva4sIOS4lOWtmOa0u+aureWxjXdvcmtlcuacg+S7pOWuv+S4u+eoi+W6j+eEoeazlemAgOWHujsKICAgIC8v56e76Zmk5b6Md29ya2Vy5L6d6aCQ6Kit6KGM54K65q275LqhLCBlcnJvcuS6i+S7tuWCs+iHs+WkluWxpCwg55Sx5aSW5bGk5pW05om5cmVqZWN0IHBlbmRpbmcKICAgIC8vIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIC8vIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIC8vIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCgp9CmNhdGNoKGVycil7fQoK",Buffer.from(r,"base64").toString("utf8"));var r;function i(){let s=new n,r={},i=!1,u=!1;function o(e){for(let t in r){let n=r[t];delete r[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function a(e){i||(i=!0,o(e))}let l=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){a(e)}}(t);if(!l)return a("invalid worker"),null;function c(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(i)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let r=0;r<e;r++)t[r]=n[0|Math.random()*s];return t.join("")}();r[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return l.postMessage(n),s.once(t,n=>{delete r[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return l.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),l.on("error",a),l.on("exit",e=>{u||a("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};l.postMessage(e)}([...arguments]),s.main=c,s.main=c,s.terminate=function(){l?(u=!0,l.terminate(),l=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(_r);var $r=ts(_r.exports);function qr(e,t){try{return{ok:!0,value:t()}}catch(t){let n=Ns(t);return{ok:!1,stage:e,cause:_t(n)?n:"unknown error"}}}function ei(e,t){try{return i.validateHeaderValue(e,t),!0}catch(e){return!1}}function ti(e,t,n,s={}){let i=!0===de(s,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let u=qr("identify streamRead",()=>e instanceof r.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!u.ok)return{error:"invalid streamRead",reason:`${u.stage} failed: ${u.cause}`};if(u.value.isReadable){if(u.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(u.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(i)return{source:e};let s=qr("setup pipeline",()=>{let s=0,i=!1,u=new r.Transform({transform(e,n,r){if(s+=e.length,s>t)return i=!0,void r(new Error(`streamRead sent more than fileSize[${t}] bytes`));r(null,e)},flush(e){if(s!==t)return i=!0,void e(new Error(`streamRead ended at ${s} bytes but fileSize is ${t}`));e()}});return r.pipeline(e,u,e=>{e&&i&&n(Ns(e))}),u});return s.ok?{source:s.value}:{error:"invalid streamRead",reason:`${s.stage} failed: ${s.cause}`}}let o=qr("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(Ot(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||cn(e)||"object"==typeof e&&!1===function(e){try{return jn(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:Ns(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(zs(o.value,"unserializable")){let e=o.value.unserializable;return{error:"invalid streamRead",reason:_t(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===o.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let a=o.value.buf;return a.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${a.length} bytes but fileSize is ${t}`}:{source:a}}let ni=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function si(e,t){let n=qr(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Fn(e,{useLimitSafe:!0})}(t)?{ok:!0,value:mn(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!_t(t))return{ok:!1};let n=bs(t);return _t(n)?"fileType"===e?ei("Content-Type",n)?{ok:!0,value:n}:{ok:!1}:{ok:!0,value:ni(n)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return n.ok?{ok:n.value.ok,value:n.value.value,cause:""}:{ok:!1,value:void 0,cause:n.cause}}function ri(e){try{e&&jn(e.pipe)&&jn(e.destroy)&&e.destroy()}catch(e){}}function ii(e){return void 0===e||jn(e)||"symbol"==typeof e?null:e}function ui(e,t,n={}){let s=new r.Readable;s._read=()=>{},s.push(t),s.push(null);let i=de(n,"returnType",""),u=de(n,"returnMsg",""),o=e.response(s).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",s.readableLength);return _t(i)&&o.header("Return-Type",i),_t(u)&&ei("Return-Msg",u)&&o.header("Return-Msg",u),o}function oi(i={}){let u={useLimitSafe:!0},o=de(i,"port");(!pn(o,u)||mn(o)>65535)&&(o=8080),o=mn(o);let a=de(i,"useInert");cn(a)||(a=!0);let l=de(i,"pathStaticFiles");_t(l)||(l="dist");let c=de(i,"pathUploadTemp");_t(c)||(c="./uploadTemp");let D="";if(!Hn(c)){let e=ws(c);zs(e,"error")&&(D=Ns(e.error))}let M=de(i,"apiName");_t(M)||(M="api");let d=de(i,"tokenType");_t(d)||(d="Bearer");let w=de(i,"sizeSlice");pn(w,u)||(w=1048576),w=mn(w);let y=de(i,"sizeMsg");pn(y,u)||(y=104857600),y=mn(y);let L=de(i,"verifyConn");jn(L)||(L=()=>!0);let I=de(i,"corsOrigins",[]);xn(I)||(I=["*"]);let g=de(i,"delayForSlice","");(!Fn(g,u)||mn(g)>2147483647)&&(g=100),g=mn(g);let m=null;m=de(i,"serverHapi")?i.serverHapi:n.server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:I,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}});let p=Ds(),C={tag:"w-converhp"},f=(e,...t)=>ys(p,e,t,{...C,funSettle:()=>{let n=t[t.length-1];Gn(n)&&n.reject(`listener of event[${e}] error`)},funEmit:N}),h=(e,...t)=>Ls(p,e,t,{...C,funEmit:N});function N(e,...t){if("error"===e&&Rt(t[0])&&"listener"===t[0].fun){let e=de(t[0],"name",""),n=de(t[0],"msg");return console.log(`listener of event[${e}] error`,n),p.emit("error",`listener of event[${e}] error: ${Ns(n)}`)}return p.emit(e,...t)}_t(D)&&h("error",`create pathUploadTemp[${c}] error: ${D}`);let b=(e,t,n)=>{let s=Vn(),r=Vn();return r.then(t=>{void 0===t&&(t=null);let r=typeof t;if("function"===r||"symbol"===r)return s.reject("output can not be serialized"),void f("error",`event[${e}] output can not be serialized: output is a ${r}`);s.resolve(jn(n)?n(t):t)}).catch(e=>{s.reject(e)}),function(e,t,n,s,r,i){if(0===e.listenerCount(n)){let e=`no listener for event[${n}]`;return r.reject(e),i(e),!1}t(n,...s,r)}(p,f,e,t,r,e=>{f("error",e)}),s};async function x(e){return b("upload",[e])}async function T(e){return b("download",[e])}let A=`${bs(d)} `,E=(e,t)=>{let n=de(e,"headers");n=Rt(n)?n:"";let s=de(e,"query");s=Rt(s)?s:"";let r="",i="";return"query"===t.authFrom?(i=de(s,"token",""),i=_t(i)?i:"",_t(i)&&(r=`${d} ${i}`)):(r=de(n,"authorization",""),r=_t(r)?r:"",i=r.startsWith(A)?r.slice(A.length):""),{headers:n,query:s,authorization:r,token:i}},S=(e,t)=>{let n=(n,s,r)=>function(e,t,n={}){_t(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let s=de(n,"retryable",!0),r={error:t};!1===s&&(r.retryable=!1);let i=ui(e,Hs(r),{returnType:"error",returnMsg:t});return!1===s&&i.header("Return-Retryable","false"),i}(e,s,r).code(t.statusOf[n]);return{permission:()=>n("permission","permission denied"),param:e=>n("param",e,{retryable:!1}),app:e=>n("app",e),output:e=>n("output",e),packet:e=>n("packet",e),internal:e=>n("internal",e)}},Z=async(e,t,n,s)=>!0!==await async function(e){let t=!1;try{t=L(e),Gn(t)&&(t=await t)}catch(n){t=!1,console.log(`verifyConn error for apiType[${de(e,"apiType","")}]`,n),f("error",`verifyConn error for apiType[${de(e,"apiType","")}]: ${Ns(n)}`)}return!0===t}({apiType:n.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?s.permission():(f("handler",{api:n.api,headers:t.headers,query:t.query}),null),v=(e,t,n,s)=>{let r=function(e,t){let n={};for(let s of t){let t=qr(`read field[${s}]`,()=>de(e,s));if(!t.ok)return{ok:!1,field:s,cause:t.cause,fields:n};n[s]=t.value}return{ok:!0,fields:n}}(e,n.fields.map(e=>e.name));if(!r.ok)return ri(de(r.fields,"streamRead")),f("error",`download fileId[${t}] output error: can not read field[${r.field}]: ${r.cause}`),{ok:!1,res:s.output("invalid streamRead")};let i={streamRead:r.fields.streamRead};for(let e of n.fields){if("streamRead"===e.name)continue;let n=si(e.name,r.fields[e.name]);if(n.ok){i[e.name]=n.value;continue}if(!0===e.optional&&!_t(n.cause)){i[e.name]="";continue}ri(i.streamRead);let u="fileSize"===e.name?`[${Ns(r.fields.fileSize)}]`:"";return f("error",`download fileId[${t}] output error: invalid ${e.name}${u}${_t(n.cause)?`: ${n.cause}`:""}`),{ok:!1,res:s.output(`invalid ${e.name}`)}}return{ok:!0,v:i}},X=async(e,t,n,s)=>{let r={},i="";await n.then(e=>{r.success=e,i="success"}).catch(e=>{r.error=e,i="error"});let u=function(e,t){let n={};for(let t of Object.keys(e))n[t]=ii(e[t]);let s=Hs(n,{returnWithStateAndMsg:!0});return"success"!==de(s,"state")?(t(de(s,"msg","unknown error")),null):s.msg}(r,e=>{f("error",`${s} output can not be serialized: ${e}`)});return null===u?t.internal("output can not be serialized"):ui(e,u,{returnType:i,returnMsg:"need to parse"})},Y=e=>(t,n,s)=>{if(413===de(s,"output.statusCode"))throw s;return f("error",`invalid request packet for ${e.api}: ${Ns(s)}`),S(n,e).packet("invalid request packet").takeover()},z={path:`/${M}/main`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=nr.main,s=S(t,n),i=E(e,n),u=await Z(e,i,n,s);if(u)return u;let o=null;try{o=await(()=>{let t=Vn(),n=[],s=0,i=!1,u=new r.Writable({write(e,t,r){if(s+=e.length,s>y)return n=[],i=!0,void r();n.push(e),r()}});return u.on("finish",()=>{}),e.payload.pipe(u),e.payload.on("end",()=>{if(i)return void t.reject("payload too large");let e=Buffer.concat(n);n=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),f("error",`receive payload error: ${Ns(e)}`),t.reject(`receive payload error: ${Ns(e)}`)}),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${y}`}).code(413);throw e}let a=$s(new Uint8Array(o),{returnWithStateAndMsg:!0});if("success"!==de(a,"state")||!Rt(a.msg)){let e=Ns(de(a,"msg",""));return f("error",`invalid request packet for apiMain: ${_t(e)?e:"not an effective object"}`),s.packet("invalid request packet")}let l=a.msg;return X(t,s,async function(e){return b("execute",[de(e,"func",""),de(e,"input",null)],t=>(e.output=t,delete e.input,e))}(l),`execute func[${Ns(de(l,"func",""))}]`)}},j={path:`/${M}/ulctr`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:Y(nr.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=nr.ulctr,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(e,"payload.mode","");if("check-total-hash"!==u&&"check-slices-hash"!==u&&"merge-slices-push"!==u&&"merge-slices-get"!==u)return s.param(`invalid mode[${Ns(u)}] in payload`);let o=de(e,"payload.fileHash","");if(!er(o))return s.param("invalid fileHash in payload");let a=de(e,"payload.chunkTotal","");if("merge-slices-push"===u){if(!pn(a))return s.param("invalid chunkTotal in payload");a=mn(a)}let l=de(e,"payload.filename",""),D=function(e,t="unknown"){if(!_t(e))return t;let n=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return n=n.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),n=n.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(n)&&(n=`_${n}`),""===n?t:n}(l,""),M=e=>Rt(e)&&zs(e,"error")?`${u}: ${bs(e.error)}`:"",d=async(e,t)=>{try{return await t()}catch(t){return f("error",`upload-controller mode[${u}] ${e} error: ${Ns(t)}`),Promise.reject(`${u} failed`)}};return X(t,s,(async()=>{let t=null;if("check-total-hash"===u){let n=de(e,"payload.fileSize","");t=await d("check total hash",()=>Or(n,w,o,c));let s=M(t);if(_t(s))return Promise.reject(s);if(t.bAllHash){let e={from:"check-total-hash",filename:l,filenameSafe:D,path:t.path},n=await x(e);t={...t,msg:n}}delete t.path,t.sizeSlice=w}else if("check-slices-hash"===u){let n=de(e,"payload.fileSliceHashs",[]);t=await d("check slices hash",()=>$r(n,o,c));let s=M(t);if(_t(s))return Promise.reject(s)}else if("merge-slices-push"===u){t={queueId:await d("push merge task",()=>Jr(o,a,c))}}else if("merge-slices-get"===u){let n=de(e,"payload.queueId",""),s=await Pr(n,c,{funConsume:async e=>await x({from:"merge-slices-get",filename:l,filenameSafe:D,path:e}),funLog:e=>{f("error",e)}});t={state:s.state,msg:s.msg,queueId:n,filename:l},"error"===s.state&&_t(s.reason)&&f("error",`${s.msg} for fileHash[${o}]: ${s.reason}`)}return t})(),`upload-controller mode[${u}]`)}},G={path:`/${M}/slc`,method:"POST",options:{payload:{maxBytes:w,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,s){let r=nr.slc,i=S(s,r),u=E(n,r),o=await Z(n,u,r,i);if(o)return o;let a=de(u.headers,"chunk-index",""),l=de(u.headers,"chunk-total",""),D=de(u.headers,"package-id","");if(!Fn(a))return i.param("invalid chunkIndex in headers");if(a=mn(a),!Fn(l))return i.param("invalid chunkTotal in headers");if(l=mn(l),!er(D))return i.param("invalid packageId in headers");let M=e.resolve(c,`${D}_${a}`),d=t.createWriteStream(M),y=()=>{let e=Vn(),t=0,s=!1,r=!1,i=!1,u=!1;d.on("error",t=>{r||s||i||(r=!0,n.payload.unpipe(d),n.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${a+1}/${l}] of packageId[${D}] err`,t),f("error",`write chunk[${a+1}/${l}] of packageId[${D}] error: ${Ns(t)}`),e.reject(`write chunk[${a+1}/${l}] of packageId[${D}] error`))}),d.on("close",()=>{s||r||i?qs(M):u&&!0===d.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${a+1}/${l}] of packageId[${D}] done`)},g)}),n.payload.on("data",e=>{s||(t+=e.length,t>w&&(s=!0,n.payload.unpipe(d),n.payload.resume(),d.destroy()))}),n.payload.pipe(d),n.payload.on("end",()=>{u=!0,r||s&&e.reject("payload too large")});let o=t=>{i||u||r||(i=!0,d.destroy(),f("error",`receive chunk[${a+1}/${l}] of packageId[${D}] error: ${t}`),e.reject(`receive chunk[${a+1}/${l}] of packageId[${D}] error: ${t}`))};return n.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${a+1}/${l}] of packageId[${D}] err`,e),o(Ns(e))}),n.payload.on("close",()=>{o("closed before end")}),e},L={},I="",m="";try{let e=await y();L.success=e,I="success",m="need to parse"}catch(e){if("payload too large"===e)return s.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${w}`}).code(413);L.error=e,I="error",m="need to parse"}return ui(s,Hs(L),{returnType:I,returnMsg:m})}},K={path:`/${M}/dwgfn`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:Y(nr.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=nr.dwgfn,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(e,"payload.fileId","");if(!_t(u))return s.param("invalid fileId in payload");let o={fileId:u,token:r.token},a={};if(await T(o).then(e=>{a.success=e}).catch(e=>{a.error=e}),zs(a,"error"))return s.app("can not get file from fileId");let l=v(de(a,"success"),u,n,s);return l.ok?(ri(l.v.streamRead),X(t,s,Promise.resolve({filename:l.v.filename}),`download fileId[${u}]`)):l.res}},F={path:`/${M}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=nr.dwgf,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(r.query,"fileId","");if(u=_t(u)?u:"",!_t(u))return s.param("invalid fileId in query");let o={fileId:u,token:r.token},a={};if(await T(o).then(e=>{a.success=e}).catch(e=>{a.error=e}),zs(a,"error"))return s.app("can not get file from fileId");let l=v(de(a,"success"),u,n,s);if(!l.ok)return l.res;let c=l.v.streamRead,D=l.v.fileSize,M=l.v.fileType,d=l.v.filename,w=ti(c,D,e=>{f("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===bs(de(e,"method","")).toLowerCase()});if(w.error)return ri(c),f("error",`download fileId[${u}] output error: ${w.reason}`),s.output(w.error);let y=t.response(w.source).type(M).header("Content-Encoding","identity").header("Content-Length",D).header("Content-Disposition",_t(d)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(bs(e)),n="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}n+=t}return n.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(d)}`:"attachment");return y}},W={path:`/${M}/dw`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:Y(nr.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=nr.dw,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(e,"payload.fileId","");if(!_t(u))return s.param("invalid fileId in payload");let o={fileId:u,token:r.token},a={};if(await T(o).then(e=>{a.success=e}).catch(e=>{a.error=e}),zs(a,"error"))return s.app("can not get file from fileId");let l=v(de(a,"success"),u,n,s);if(!l.ok)return l.res;let c=l.v.streamRead,D=Ys(l.v.filename),M=l.v.fileSize,d=l.v.fileType,w=ti(c,M,e=>{f("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===bs(de(e,"method","")).toLowerCase()});return w.error?(ri(c),f("error",`download fileId[${u}] output error: ${w.reason}`),s.output(w.error)):t.response(w.source).type(d).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${D}"`).header("Content-Length",M)}};let U=null;if(de(i,"serverHapi"))try{m.route([z,j,G,K,F,W])}catch(e){console.log("register routes error",e),h("error",`register routes error: ${Ns(e)}`)}else U=async function(){a&&await m.register(s);let e=[];if(a){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}};e=[...e,t]}e=[...e,z,j,G,K,F,W],m.route(e),await m.start(),console.log(`Server running at: ${m.info.uri}`)}().catch(e=>{console.log("start server error",e),h("error",`start server error: ${Ns(e)}`)});return p.stop=async()=>{try{Gn(U)&&await U,await m.stop()}catch(e){console.log("stop server error",e),f("error",`stop server error: ${Ns(e)}`)}},p}var ai=function(){return w.Date.now()},li=Math.max,ci=Math.min;function Di(e,t,n){var s,r,i,u,o,a,l=0,c=!1,D=!1,M=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function d(t){var n=s,i=r;return s=r=void 0,l=t,u=e.apply(i,n)}function w(e){var n=e-a;return void 0===a||n>=t||n<0||D&&e-l>=i}function y(){var e=ai();if(w(e))return L(e);o=setTimeout(y,function(e){var n=t-(e-a);return D?ci(n,i-(e-l)):n}(e))}function L(e){return o=void 0,M&&s?d(e):(s=r=void 0,u)}function I(){var e=ai(),n=w(e);if(s=arguments,r=this,a=e,n){if(void 0===o)return function(e){return l=e,o=setTimeout(y,t),c?d(e):u}(a);if(D)return clearTimeout(o),o=setTimeout(y,t),d(a)}return void 0===o&&(o=setTimeout(y,t)),u}return t=un(t)||0,A(n)&&(c=!!n.leading,i=(D="maxWait"in n)?li(un(n.maxWait)||0,t):i,M="trailing"in n?!!n.trailing:M),I.cancel=function(){void 0!==o&&clearTimeout(o),l=0,s=a=r=o=void 0},I.flush=function(){return void 0===o?u:L(ai())},I}var Mi=function(){try{var e=V(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),di=Mi;function wi(e,t,n){"__proto__"==t&&di?di(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function yi(e,t,n){(void 0!==n&&!J(e[t],n)||void 0===n&&!(t in e))&&wi(e,t,n)}var Li="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ii=Li&&"object"==typeof module&&module&&!module.nodeType&&module,gi=Ii&&Ii.exports===Li?w.Buffer:void 0,mi=gi?gi.allocUnsafe:void 0;function pi(e,t){if(t)return e.slice();var n=e.length,s=mi?mi(n):new e.constructor(n);return e.copy(s),s}function Ci(e){var t=new e.constructor(e.byteLength);return new me(t).set(new me(e)),t}function fi(e,t){var n=t?Ci(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){var n=-1,s=e.length;for(t||(t=Array(s));++n<s;)t[n]=e[n];return t}var Ni=Object.create,bi=function(){function e(){}return function(t){if(!A(t))return{};if(Ni)return Ni(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function xi(e){return"function"!=typeof e.constructor||tt(e)?{}:bi(Tn(e))}function Ti(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Ai=Object.prototype.hasOwnProperty;function Ei(e,t,n){var s=e[t];Ai.call(e,t)&&J(s,n)&&(void 0!==n||t in e)||wi(e,t,n)}function Si(e,t,n,s){var r=!n;n||(n={});for(var i=-1,u=t.length;++i<u;){var o=t[i],a=s?s(n[o],e[o],o,n,e):void 0;void 0===a&&(a=e[o]),r?wi(n,o,a):Ei(n,o,a)}return n}var Zi=Object.prototype.hasOwnProperty;function vi(e){if(!A(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=tt(e),n=[];for(var s in e)("constructor"!=s||!t&&Zi.call(e,s))&&n.push(s);return n}function Xi(e){return ut(e)?qe(e,!0):vi(e)}function Yi(e,t,n,s,r,i,u){var o=Ti(e,n),a=Ti(t,n),l=u.get(a);if(l)yi(e,n,l);else{var c,M=i?i(o,a,n+"",e,t,u):void 0,d=void 0===M;if(d){var w=D(a),y=!w&&We(a),L=!w&&!y&&_e(a);M=a,w||y||L?D(o)?M=o:h(c=o)&&ut(c)?M=hi(o):y?(d=!1,M=pi(a,!0)):L?(d=!1,M=fi(a,!0)):M=[]:Xn(a)||je(a)?(M=o,je(o)?M=function(e){return Si(e,Xi(e))}(o):A(o)&&!E(o)||(M=xi(a))):d=!1}d&&(u.set(a,M),r(M,a,s,i,u),u.delete(a)),yi(e,n,M)}}function zi(e,t,n,s,r){e!==t&&Vt(t,function(i,u){if(r||(r=new we),A(i))Yi(e,t,u,n,zi,s,r);else{var o=s?s(Ti(e,u),i,u+"",e,t,r):void 0;void 0===o&&(o=i),yi(e,u,o)}},Xi)}var ji=Math.max;var Gi=di?function(e,t){return di(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:Gt,Ki=Gi,Fi=Date.now;var Wi=function(e){var t=0,n=0;return function(){var s=Fi(),r=16-(s-n);if(n=s,r>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Ki),Ui=Wi;function Vi(e,t){return Ui(function(e,t,n){return t=ji(void 0===t?e.length-1:t,0),function(){for(var s=arguments,r=-1,i=ji(s.length-t,0),u=Array(i);++r<i;)u[r]=s[t+r];r=-1;for(var o=Array(t+1);++r<t;)o[r]=s[r];return o[t]=n(u),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,o)}}(e,t,Gt),e+"")}function ki(e,t,n){if(!A(n))return!1;var s=typeof t;return!!("number"==s?ut(n)&&Ve(t,n.length):"string"==s&&t in n)&&J(n[t],e)}var Qi,Bi=(Qi=function(e,t,n){zi(e,t,n)},Vi(function(e,t){var n=-1,s=t.length,r=s>1?t[s-1]:void 0,i=s>2?t[2]:void 0;for(r=Qi.length>3&&"function"==typeof r?(s--,r):void 0,i&&ki(t[0],t[1],i)&&(r=s<3?void 0:r,s=1),e=Object(e);++n<s;){var u=t[n];u&&Qi(e,u,n,r)}return e}));function Hi(e,n={}){let s={};if(Rt(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Ds()),!zs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let r=de(n,"fpTableTags","");_t(r)||(r="./tableTags.json");let i=de(n,"genTag");jn(i)||(i=()=>is()+"|"+as(6));let u=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)};function o(){let e={};try{if(t.existsSync(r)){let n=Kn(t.readFileSync(r,"utf8"));Rt(n)&&(e=n)}}catch(e){u("error",{msg:"readTableTags catch",err:e})}return e}function a(){try{let e=function(e,t=!1,n={}){let s=de(n,"returnWithStateAndMsg",null);cn(s)||(s=!1);let r=e=>s?{state:"error",msg:e}:"";if(fn(e))return r("invalid v");let i="";try{i=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return r(e.toString())}return s?{state:"success",msg:i}:i}(s);t.writeFileSync(r,e,"utf8")}catch(e){u("error",{msg:"writeTableTags catch",err:e})}}let l=Di(()=>{a(),u("changeTableTags",s)},200);return e.readTableTags=o,e.writeTableTags=a,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)s=e;else if("useStorageOnly"===t)s=o();else if("useInputFirst"===t)s=Bi(o(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);s=Bi(e,o())}a()},e.setTableTags=function(e={}){s=Bi(s,e),a()},e.getTableTags=function(){return s},e.updateTableTag=function(e){s[e]=i(),l()},e}var Ji=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Ne(t,Se(e)),e=Tn(e);return t}:Te;function Pi(e){return be(e,Xi,Ji)}var Ri=Object.prototype.hasOwnProperty;var Oi=/\w*$/;var _i=y?y.prototype:void 0,$i=_i?_i.valueOf:void 0;function qi(e,t,n){var s,r,i,u=e.constructor;switch(t){case"[object ArrayBuffer]":return Ci(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return function(e,t){var n=t?Ci(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return fi(e,n);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return(i=new(r=e).constructor(r.source,Oi.exec(r))).lastIndex=r.lastIndex,i;case"[object Symbol]":return s=e,$i?Object($i.call(s)):{}}}var eu=Re&&Re.isMap,tu=eu?Be(eu):function(e){return h(e)&&"[object Map]"==bt(e)};var nu=Re&&Re.isSet,su=nu?Be(nu):function(e){return h(e)&&"[object Set]"==bt(e)},ru="[object Arguments]",iu="[object Function]",uu="[object Object]",ou={};function au(e,t,n,s,r,i){var u,o=1&t,a=2&t,l=4&t;if(n&&(u=r?n(e,s,r,i):n(e)),void 0!==u)return u;if(!A(e))return e;var c=D(e);if(c){if(u=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Ri.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!o)return hi(e,u)}else{var M=bt(e),d=M==iu||"[object GeneratorFunction]"==M;if(We(e))return pi(e,o);if(M==uu||M==ru||d&&!r){if(u=a||d?{}:xi(e),!o)return a?function(e,t){return Si(e,Ji(e),t)}(e,function(e,t){return e&&Si(t,Xi(t),e)}(u,e)):function(e,t){return Si(e,Se(e),t)}(e,function(e,t){return e&&Si(t,ot(t),e)}(u,e))}else{if(!ou[M])return r?e:{};u=qi(e,M,o)}}i||(i=new we);var w=i.get(e);if(w)return w;i.set(e,u),su(e)?e.forEach(function(s){u.add(au(s,t,n,s,e,i))}):tu(e)&&e.forEach(function(s,r){u.set(r,au(s,t,n,r,e,i))});var y=c?void 0:(l?a?Pi:at:a?Xi:ot)(e);return On(y||e,function(s,r){y&&(s=e[r=s]),Ei(u,r,au(s,t,n,r,e,i))}),u}ou[ru]=ou["[object Array]"]=ou["[object ArrayBuffer]"]=ou["[object DataView]"]=ou["[object Boolean]"]=ou["[object Date]"]=ou["[object Float32Array]"]=ou["[object Float64Array]"]=ou["[object Int8Array]"]=ou["[object Int16Array]"]=ou["[object Int32Array]"]=ou["[object Map]"]=ou["[object Number]"]=ou[uu]=ou["[object RegExp]"]=ou["[object Set]"]=ou["[object String]"]=ou["[object Symbol]"]=ou["[object Uint8Array]"]=ou["[object Uint8ClampedArray]"]=ou["[object Uint16Array]"]=ou["[object Uint32Array]"]=!0,ou["[object Error]"]=ou[iu]=ou["[object WeakMap]"]=!1;function lu(e){return au(e,5)}function cu(e={}){let t=Ds(),n={},s=null,r=de(e,"timeAlive");pn(r)||(r=1e4),r=mn(r),r=Math.min(r,Ms);let i=de(e,"timeDetect");return pn(i)||(i=50),i=mn(i),i=Math.min(i,Ms),t.trigger=function(e,u){_t(e)?(zs(n,e)||setTimeout(()=>{ys(t,"message",[{eventName:"enter",key:e,data:u,now:mr(n)}],{tag:"alive"})},1),n[e]={data:u,time:Date.now()},null===s&&(s=setInterval(()=>{_n(n,(e,s)=>{if(Date.now()-e.time>r){let e=lu(n[s]);delete n[s],ys(t,"message",[{eventName:"leave",key:s,data:e.data,now:mr(n)}],{tag:"alive"})}}),Rt(n)||(clearInterval(s),s=null)},i))):console.log("trigger need key")},t.get=function(){let e=[];return _n(n,(t,n)=>{e.push({key:n,data:t.data})}),e=lu(e),e},t}function Du(e,t={}){let n={};if(Rt(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Ds()),!zs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)},r=cu(),i=setInterval(()=>{let e=Ht(r.get(),"key"),t={};_n(e,e=>{t[e]=de(n,e,[])}),n=t},1e3);r.on("message",function({eventName:e,key:t,data:n,now:r}){"enter"===e?s("clientEnter",t,n):"leave"===e&&s("clientLeave",t,n),s("clientChange",r)}),e.on("execute",function(e,t,i){if("[sys:polling]"===e)try{let e=de(t,"clientId",""),s=de(n,e,[]);s=lu(s),n[e]=[],r.trigger(e,t),i.resolve(s)}catch(e){s("error",e),i.reject("[sys:polling] error")}});return e.getClients=r.get,e.getMessages=()=>lu(n),e.broadcast=e=>{if(!Rt(n))return;let t={};_n(n,(n,s)=>{n.push({mode:"broadcast",data:e}),t[s]=n}),n=t},e.clearBroadcast=()=>{clearInterval(i)},e}let Mu=(e,t)=>{let n={};return _n(e,e=>{let s=e,r=de(t,e,"");_t(r)&&(n[s]=r)}),n};function du(e,t,n,s={}){if(!Rt(e))throw new Error("invalid instWConverServer");if(0===mr(t))return e;if(!Rt(n))return e;let r=de(s,"genTag");jn(r)||(r=()=>is()+"|"+as(6));let i={};return _n(t,e=>{i[e]=r()}),e.initTableTags(i,"useInputOnly"),_n(t,t=>{let s=n[t];if(!s)throw new Error(`invalid kpOrm[${t}]`);try{s.on("change",()=>{e.updateTableTag(t)})}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}}),e.on("changeTableTags",n=>{e.broadcast({mode:"syncKpTable",data:Mu(t,n)})}),e}function wu(e,t,n,s){for(var r=n-1,i=e.length;++r<i;)if(s(e[r],t))return r;return-1}var yu=Array.prototype.splice;function Lu(e,t){return e&&e.length&&t&&t.length?function(e,t,n,s){var r=s?wu:fr,i=-1,u=t.length,o=e;for(e===t&&(t=hi(t)),n&&(o=ie(e,Be(n)));++i<u;)for(var a=0,l=t[i],c=n?n(l):l;(a=r(o,c,a,s))>-1;)o!==e&&yu.call(o,a,1),yu.call(e,a,1);return e}(e,t):e}function Iu(e,t={}){if(!Rt(e))throw new Error("invalid instWConverServer");let n=de(t,"getUserIdByToken",null);jn(n)||(n=async()=>"");let s=de(t,"useDbOrm",null);cn(s)||(s=!1);let r=null;if(s&&(r=de(t,"operOrm",null),!jn(r)))throw new Error("invalid opt.operOrm when useDbOrm=true");let i=[];if(s&&(i=de(t,"tableNames",null),!Cn(i)))throw new Error("invalid opt.tableNames when useDbOrm=true");let u=[];s&&(u=de(t,"methods",null),Cn(u)||(u=["select","insert","save","del"]));let o=de(t,"kpFunExt",null);let a={};async function l(e,t,s){if(!_t(e))return s.resolve({state:"error",msg:"invalid func"}),s;let r="";if(!zs(t,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(r=bs(t.__sysToken__),!zs(t,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;t=t.__sysInputArgs__;let i="";if(i=n(r),Gn(i)&&(i=await i),_t(i)||(i=""),"[sys:getFuncList]"===e){let e=ot(a);e=function(e,t){if(!xn(e))return[];if((Pt(t)||Mn(t)||Ot(t)||cn(t))&&(t=[t]),!xn(t))return e;let n=lu(e);return Lu(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!zs(a,e))return s.resolve({state:"error",msg:`invalid func[${e}]`}),s;let u=a[e];try{let e=await kn(u)(i,...t);s.resolve(e)}catch(t){s.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return s}return s&&(i=lu(i),a=function(e,t,n){let s={};return _n(e,e=>{_n(t,t=>{s[`${e}.${t}`]=async function(s,r){return await n(s,e,t,r)}})}),s}(i,u,r)),Rt(o)&&_n(o,(e,t)=>{a[t]=e}),e.on("execute",async function(t,n,s){await l(t,n,s).catch(n=>{e.emit("error",n),s.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})})}),e}function gu(e,t={}){if(Rt(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Ds()),!zs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=de(t,"fpTableTags",null);_t(n)||(n="./tableTags.json");let s=de(t,"genTag");jn(s)||(s=()=>is()+"|"+as(6)),e=new Du(e=new Hi(e,{fpTableTags:n,genTag:s}));let r=de(t,"useDbOrm",null);cn(r)||(r=!0);let i=de(t,"kpOrm",null),u=de(t,"operOrm",null),o=de(t,"tableNamesExec",null),a=de(t,"methodsExec",null),l=de(t,"tableNamesSync",null),c=de(t,"getUserIdByToken",null),D=de(t,"kpFunExt",null);if(Rt(D)||(D={}),D={...D,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:Mu(l,t)}}},e=new Iu(e,{getUserIdByToken:c,useDbOrm:r,operOrm:u,tableNames:o,methods:a,kpFunExt:D}),r){if(!Pt(i))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new du(e,l,i,{genTag:s})}return e}function mu(e={}){let t=Ds(),r=null,i=null,u=de(e,"port");wn(u)||(u=8080);let o=de(e,"corsOrigins",[]);xn(o)||(o=["http://localhost"]);let a=de(e,"delayForSlice","");Fn(a)||(a=100),a=mn(a);let l=de(e,"useInert");cn(l)||(l=!0);let c=de(e,"pathStaticFiles");_t(c)||(c="dist");let D=de(e,"apis");xn(D)||(D=[]);let M=de(e,"apiName");_t(M)||(M="api");let d=de(e,"pathUploadTemp");_t(d)||(d="./uploadTemp"),Hn(d)||ws(d);let w=de(e,"tokenType");_t(w)||(w="Bearer");let y=de(e,"sizeSlice");pn(y)||(y=1048576);let L=de(e,"sizeMsg");pn(L)||(L=104857600);let I=de(e,"verifyConn");jn(I)||(I=()=>!0);let g=de(e,"getUserIdByToken",null),m=de(e,"useDbOrm",null);cn(m)||(m=!0);let p=de(e,"kpOrm",null),C=de(e,"operOrm",null),f=de(e,"tableNamesExec",null),h=de(e,"methodsExec",null),N=de(e,"tableNamesSync",null),b=de(e,"kpFunExt",null),x=de(e,"fpTableTags",null);_t(x)||(x=de(e,"fnTableTags",null));let T=de(e,"genTag");jn(T)||(T=()=>is()+"|"+as(6));let A=de(e,"useShowLog");cn(A)||(A=!0);(async()=>{await(async()=>{r=new n.Server({port:u,routes:{timeout:{server:!1,socket:!1},cors:{origin:o,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}}),l&&await r.register(s);let e=[];l&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}}]),e=[...e,...D],r.route(e)})(),await(async()=>{i=new oi({serverHapi:r,apiName:M,pathUploadTemp:d,tokenType:w,sizeSlice:y,sizeMsg:L,verifyConn:I,corsOrigins:o,delayForSlice:a}),i.on("clientChange",function(e){A&&console.log(`Server[port:${u}]: now clients: ${e}`)})})(),await(async()=>{i=new gu(i,{getUserIdByToken:g,useDbOrm:m,kpOrm:p,operOrm:C,tableNamesExec:f,tableNamesSync:N,methodsExec:h,kpFunExt:b,fpTableTags:x,genTag:T}),i.on("error",e=>{t.emit("error",e)})})(),await r.start(),A&&console.log(`Server running at: ${r.info.uri}`)})().catch(e=>{t.emit("error",e)}),process.on("unhandledRejection",e=>{console.log("unhandledRejection",e),t.emit("error",{mode:"unhandledRejection",err:e})}),process.on("uncaughtException",e=>{console.log("uncaughtException",e),t.emit("error",{mode:"uncaughtException",err:e})});return t.getServer=async()=>(await ds(()=>null!==r),r),t.getInstWConverServer=async()=>(await ds(()=>null!==i),i),t}function pu(e,t){let n=Vn();if(!Cn(e)&&!Pt(e))return n.reject("rs is not an array or object"),n;let s=!1;if(Pt(e)){s=!0;let t=[];_n(e,(e,n)=>{t.push({k:n,v:e})}),e=t}jn(t)||(t=function(e){return e});let r=-1,i=[];return e.reduce(function(e,n){return e.then(function(e){i.push(e),r+=1;let u=r,o=n;return s&&(u=n.k,o=n.v),jn(t)?t(o,u):o})},Promise.resolve()).then(function(e){var t,s,r,u;i.push(e),u=null==(t=i)?0:t.length,i=u?pr(t,(s=r||void 0===s?1:ln(s))<0?0:s,u):[],n.resolve(i)}).catch(function(e){n.reject(e)}),n}let Cu={backup:async function(e){return await pu(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,n,s,r=!1){if(!Pn(e))throw console.log("fp",e),new Error("fp is not exist");if(!Rt(n))throw console.log("woItems",n),new Error("invalid woItems");jn(s)||(s=null),cn(r)||(r=!1);let i=t.readFileSync(e,"utf8");i=jr(i);let u=Kn(i);jn(s)&&s(),await pu(u,async e=>{console.log("recover...",e.name),r&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return mr(e.data)>0&&(t=await n[e.name].insert(e.data)),t})}};function fu(){if(!jn(rs))throw new Error("invalid dayjs");return rs().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var hu={exports:{}},Nu={},bu={exports:{}},xu={};function Tu(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Au=/javascript\s*\:/gim;xu.whiteList=Tu(),xu.getDefaultWhiteList=Tu,xu.onAttr=function(e,t,n){},xu.onIgnoreAttr=function(e,t,n){},xu.safeAttrValue=function(e,t){return Au.test(t)?"":t};var Eu={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,r;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,r=e.length;s<r;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var Su=function(e,t){";"!==(e=Eu.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,s=!1,r=0,i=0,u="";function o(){if(!s){var n=Eu.trim(e.slice(r,i)),o=n.indexOf(":");if(-1!==o){var a=Eu.trim(n.slice(0,o)),l=Eu.trim(n.slice(o+1));if(a){var c=t(r,u.length,a,l,n);c&&(u+=c+"; ")}}}r=i+1}for(;i<n;i++){var a=e[i];if("/"===a&&"*"===e[i+1]){var l=e.indexOf("*/",i+2);if(-1===l)break;r=(i=l+1)+1,s=!1}else"("===a?s=!0:")"===a?s=!1:";"===a?s||o():"\n"===a&&o()}return Eu.trim(u)},Zu=xu,vu=Su;function Xu(e){return null==e}function Yu(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||Zu.whiteList,e.onAttr=e.onAttr||Zu.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||Zu.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||Zu.safeAttrValue,this.options=e}Yu.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,s=t.onAttr,r=t.onIgnoreAttr,i=t.safeAttrValue;return vu(e,function(e,t,u,o,a){var l=n[u],c=!1;if(!0===l?c=l:"function"==typeof l?c=l(o):l instanceof RegExp&&(c=l.test(o)),!0!==c&&(c=!1),o=i(u,o)){var D,M={position:t,sourcePosition:e,source:a,isWhite:c};return c?Xu(D=s(u,o,M))?u+":"+o:D:Xu(D=r(u,o,M))?void 0:D}})};var zu=Yu;!function(e,t){var n=xu,s=zu;for(var r in(t=e.exports=function(e,t){return new s(t).process(e)}).FilterCSS=s,n)t[r]=n[r];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(bu,bu.exports);var ju=bu.exports,Gu={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,r;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,r=e.length;s<r;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},Ku=ju.FilterCSS,Fu=ju.getDefaultWhiteList,Wu=Gu;function Uu(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var Vu=new Ku;function ku(e){return e.replace(Qu,"<").replace(Bu,">")}var Qu=/</g,Bu=/>/g,Hu=/"/g,Ju=/"/g,Pu=/&#([a-zA-Z0-9]*);?/gim,Ru=/:?/gim,Ou=/&newline;?/gim,_u=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,$u=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,qu=/u\s*r\s*l\s*\(.*/gi;function eo(e){return e.replace(Hu,""")}function to(e){return e.replace(Ju,'"')}function no(e){return e.replace(Pu,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function so(e){return e.replace(Ru,":").replace(Ou," ")}function ro(e){for(var t="",n=0,s=e.length;n<s;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return Wu.trim(t)}function io(e){return e=ro(e=so(e=no(e=to(e))))}function uo(e){return e=ku(e=eo(e))}Nu.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},Nu.getDefaultWhiteList=Uu,Nu.onTag=function(e,t,n){},Nu.onIgnoreTag=function(e,t,n){},Nu.onTagAttr=function(e,t,n){},Nu.onIgnoreTagAttr=function(e,t,n){},Nu.safeAttrValue=function(e,t,n,s){if(n=io(n),"href"===t||"src"===t){if("#"===(n=Wu.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(_u.lastIndex=0,_u.test(n))return""}else if("style"===t){if($u.lastIndex=0,$u.test(n))return"";if(qu.lastIndex=0,qu.test(n)&&(_u.lastIndex=0,_u.test(n)))return"";!1!==s&&(n=(s=s||Vu).process(n))}return n=uo(n)},Nu.escapeHtml=ku,Nu.escapeQuote=eo,Nu.unescapeQuote=to,Nu.escapeHtmlEntities=no,Nu.escapeDangerHtml5Entities=so,Nu.clearNonPrintableCharacter=ro,Nu.friendlyAttrValue=io,Nu.escapeAttrValue=uo,Nu.onIgnoreTagStripAll=function(){return""},Nu.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),s=[],r=!1;return{onIgnoreTag:function(i,u,o){if(function(t){return!!n||-1!==Wu.indexOf(e,t)}(i)){if(o.isClosing){var a="[/removed]",l=o.position+10;return s.push([!1!==r?r:o.position,l]),r=!1,a}return r||(r=o.position),"[removed]"}return t(i,u,o)},remove:function(e){var t="",n=0;return Wu.forEach(s,function(s){t+=e.slice(n,s[0]),n=s[1]}),t+=e.slice(n)}}},Nu.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var s=e.indexOf("\x3c!--",n);if(-1===s){t+=e.slice(n);break}t+=e.slice(n,s);var r=e.indexOf("--\x3e",s);if(-1===r)break;n=r+3}return t},Nu.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},Nu.attributeWrapSign='"',Nu.cssFilter=Vu,Nu.getDefaultCSSWhiteList=Fu;var oo={},ao=Gu;function lo(e){var t,n=ao.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=ao.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function co(e){return"</"===e.slice(0,2)}var Do=/[^a-zA-Z0-9\\_:.-]/gim;function Mo(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function wo(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function yo(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Lo(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}oo.parseTag=function(e,t,n){var s="",r=0,i=!1,u=!1,o=0,a=e.length,l="",c="";e:for(o=0;o<a;o++){var D=e.charAt(o);if(!1===i){if("<"===D){i=o;continue}}else if(!1===u){if("<"===D){s+=n(e.slice(r,o)),i=o,r=o;continue}if(">"===D||o===a-1){s+=n(e.slice(r,i)),l=lo(c=e.slice(i,o+1)),s+=t(i,s.length,l,c,co(c)),r=o+1,i=!1;continue}if('"'===D||"'"===D)for(var M=1,d=e.charAt(o-M);""===d.trim()||"="===d;){if("="===d){u=D;continue e}d=e.charAt(o-++M)}}else if(D===u){u=!1;continue}}return r<a&&(s+=n(e.substr(r))),s},oo.parseAttr=function(e,t){var n=0,s=0,r=[],i=!1,u=e.length;function o(e,n){if(!((e=(e=ao.trim(e)).replace(Do,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&r.push(s)}}for(var a=0;a<u;a++){var l,c=e.charAt(a);if(!1!==i||"="!==c)if(!1===i||a!==s)if(/\s|\n|\t/.test(c)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(l=Mo(e,a))){o(ao.trim(e.slice(n,a))),i=!1,n=a+1;continue}a=l-1;continue}if(-1===(l=yo(e,a-1))){o(i,Lo(ao.trim(e.slice(n,a)))),i=!1,n=a+1;continue}}else;else{if(-1===(l=e.indexOf(c,a+1)))break;o(i,ao.trim(e.slice(s+1,l))),i=!1,n=(a=l)+1}else i=e.slice(n,a),n=a+1,s='"'===e.charAt(n)||"'"===e.charAt(n)?n:wo(e,a+1)}return n<e.length&&(!1===i?o(e.slice(n)):o(i,Lo(ao.trim(e.slice(n))))),ao.trim(r.join(" "))};var Io=ju.FilterCSS,go=Nu,mo=oo,po=mo.parseTag,Co=mo.parseAttr,fo=Gu;function ho(e){return null==e}function No(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=go.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(e){return e.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}(e.whiteList||e.allowList):e.whiteList=go.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":go.attributeWrapSign,e.onTag=e.onTag||go.onTag,e.onTagAttr=e.onTagAttr||go.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||go.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||go.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||go.safeAttrValue,e.escapeHtml=e.escapeHtml||go.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new Io(e.css))}No.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,s=n.whiteList,r=n.onTag,i=n.onIgnoreTag,u=n.onTagAttr,o=n.onIgnoreTagAttr,a=n.safeAttrValue,l=n.escapeHtml,c=t.attributeWrapSign,D=t.cssFilter;n.stripBlankChar&&(e=go.stripBlankChar(e)),n.allowCommentTag||(e=go.stripCommentTag(e));var M=!1;n.stripIgnoreTagBody&&(M=go.StripTagBody(n.stripIgnoreTagBody,i),i=M.onIgnoreTag);var d=po(e,function(e,t,n,M,d){var w={sourcePosition:e,position:t,isClosing:d,isWhite:Object.prototype.hasOwnProperty.call(s,n)},y=r(n,M,w);if(!ho(y))return y;if(w.isWhite){if(w.isClosing)return"</"+n+">";var L=function(e){var t=fo.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=fo.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=fo.trim(e.slice(0,-1))),{html:e,closing:n}}(M),I=s[n],g=Co(L.html,function(e,t){var s=-1!==fo.indexOf(I,e),r=u(n,e,t,s);return ho(r)?s?(t=a(n,e,t,D))?e+"="+c+t+c:e:ho(r=o(n,e,t,s))?void 0:r:r});return M="<"+n,g&&(M+=" "+g),L.closing&&(M+=" /"),M+=">"}return ho(y=i(n,M,w))?l(M):y},l);return M&&(d=M.remove(d)),d};var bo=No;!function(e,t){var n=Nu,s=oo,r=bo;function i(e,t){return new r(t).process(e)}(t=e.exports=i).filterXSS=i,t.FilterXSS=r,function(){for(var e in n)t[e]=n[e];for(var r in s)t[r]=s[r]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(hu,hu.exports);var xo=ts(hu.exports);function To(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Ao(e){let t=function(){let e=To();return xo||e.xss}();let n=function e(n){return Cn(n)||Pt(n)?(_n(n,function(t,s){n[s]=e(t)}),n):_t(n)?t(n,{onIgnoreTagAttr:function(e,n,s,r){if("style"===n)return n+'="'+t.escapeAttrValue(s)+'"'}}):n}(lu(e));return n}let Eo=null,So=null;function Zo(e,t,n,s="save"){if(!Rt(Eo))throw console.log("ds",Eo),new Error("invalid ds");let r=Eo[e].keys,i=!1;Cn(n)||(i=!0,n=[n]);let u=fu();return s.indexOf("insert")>=0&&(r.indexOf("userId")>=0&&_n(n,(e,s)=>{n[s].userId=t}),r.indexOf("timeCreate")>=0&&_n(n,(e,t)=>{n[t].timeCreate=u}),r.indexOf("userIdUpdate")>=0&&_n(n,(e,s)=>{n[s].userIdUpdate=t}),r.indexOf("timeUpdate")>=0&&_n(n,(e,t)=>{n[t].timeUpdate=u})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(r.indexOf("userIdUpdate")>=0&&_n(n,(e,s)=>{n[s].userIdUpdate=t}),r.indexOf("timeUpdate")>=0&&_n(n,(e,t)=>{n[t].timeUpdate=u})),n=Ht(n,(e,t)=>{let n={};return _n(e,(e,t)=>{e=Ao(e),n[t]=e}),n}),n=i?n[0]:n}async function vo(e,t,n,s){let r,i=null;if(!Rt(So))return Promise.reject("無有效woItems");let u=de(So,t,null);if(null===u)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(r=await u.select(s).catch(e=>{console.log(`${t}.select catch`,e),i="取得資料失敗"}),_t(i))return Promise.reject(i)}else if("insert"===n||"save"===n){try{s=Zo(t,e,s,n)}catch(e){return console.log("adjustData catch",e.toString()),i="調整資料失敗",Promise.reject(i)}if("insert"===n?r=await u.insert(s).catch(e=>{console.log(`${t}.save catch`,e),i="新增資料失敗"}):"save"===n&&(r=await u.save(s).catch(e=>{console.log(`${t}.save catch`,e),i="儲存資料失敗"})),_t(i))return Promise.reject(i);r=Cn(s)?Ht(s,e=>({id:e.id})):{id:s.id}}else if("del"===n)r=await u.del(s).catch(e=>{console.log(`${t}.del catch`,e),i="刪除資料失敗"});else if("delAll"===n)r=await u.delAll(s).catch(e=>{console.log(`${t}.delAll catch`,e),i="刪除資料失敗"});else if("mix"===n){if(!Rt(s))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;r=[];let o=de(s,"add",[]);if(mr(o)>0){try{o=Zo(t,e,o,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),i="調整資料失敗",Promise.reject(i)}if(await u.insert(o).catch(e=>{console.log(`${t}.save catch`,e),i="新增資料失敗"}),_t(i))return Promise.reject(i);n=Ht(o,e=>({id:e.id})),r=[...r,...n]}let a=de(s,"del",[]);if(mr(a)>0){if(await u.del(a).catch(e=>{console.log(`${t}.save catch`,e),i="刪除資料失敗"}),_t(i))return Promise.reject(i);n=Ht(a,e=>({id:e.id})),r=[...r,...n]}let l=de(s,"diff",[]);if(mr(l)>0){try{l=Zo(t,e,l)}catch(e){return console.log("adjustData catch",e.toString()),i="調整資料失敗",Promise.reject(i)}if(await u.save(l).catch(e=>{console.log(`${t}.save catch`,e),i="變更資料失敗"}),_t(i))return Promise.reject(i);n=Ht(l,e=>({id:e.id})),r=[...r,...n]}}else i=`invalid mode: ${n}`;return _t(i)?Promise.reject(i):r}function Xo(e,t){return Eo=e,So=t,vo}function Yo(e,t){var n=[];return Qt(e,function(e,s,r){t(e,s,r)&&n.push(e)}),n}function zo(e,t){return(D(e)?xe:Yo)(e,Wt(t))}function jo(e,t=null){if(!Cn(e)){let e=Vn();return e.reject("pms is not an array"),e}return e.reduce((e,t)=>e.then(t),Promise.resolve(t))}let Go=[],Ko=[],Fo=[],Wo=null,Uo=null,Vo=!0,ko=!0;function Qo(e){setTimeout(()=>{Go.push(e)},1)}function Bo(e){setTimeout(()=>{Ko.push(e)},1)}function Ho(e){setTimeout(()=>{Fo.push(e)},1)}async function Jo(e,t,n,s){if(!jn(Wo))return Promise.reject("invalid mapOrm");if(Vo&&!_t(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let r="n";if(Vo){if(!jn(Uo))return Promise.reject("invalid getUserById");let t=await Uo(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");r=de(t,"isAdmin"),"y"!==r&&"n"!==r&&(r="n");let n=de(t,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",e),console.log("oSelf",t),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await pu(Go,i=>i({woName:t,userId:e,isAdmin:r,mode:n,input:s})),mr(Ko)>0){let i={woName:t,userId:e,isAdmin:r,mode:n,input:s},u=await jo(Ko,i);s=u.input}let i=await Wo(e,t,n,s);return ko&&"n"===r&&"select"===n&&Cn(i)&&(i=zo(i,e=>!zs(e,"isActive")||!("n"===e.isActive))),mr(Fo)>0&&(i=await jo(Fo,{woName:t,userId:e,isAdmin:r,mode:n,input:s,output:i})),i}function Po(e,t,n,s,r={}){let i=function(e,t,n,s){if(!Rt(e))throw console.log("ds",e),new Error("invalid ds");if(!jn(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!_t(n))throw console.log("url",n),new Error("invalid url");if(!_t(s))throw console.log("db",s),new Error("invalid db");let r={};return _n(ot(e),e=>{let i=new t({url:n,db:s,cl:e});r[e]=i}),r}(e,t,n,s),u=function(e,t={}){return jn(e)?(Wo=e,Vo=de(t,"useCheckUser"),cn(Vo)||(Vo=!0),Uo=de(t,"getUserById"),ko=de(t,"useExcludeWhenNotAdmin"),cn(ko)||(ko=!0),{addFunCheck:Qo,addFunPreProcessing:Bo,addFunPostProcessing:Ho,procOrm:Jo}):Promise.reject("invalid mapOrm")}(Xo(e,i),r);return{...Cu,woItems:i,closeAll:async()=>{await pu(i,async e=>{e&&jn(e.close)&&await e.close()})},...u}}const Ro=[];for(let e=0;e<256;++e)Ro.push((e+256).toString(16).slice(1));const Oo=new Uint8Array(16);function _o(){return crypto.getRandomValues(Oo)}const $o={};function qo(e,t,n){let s;if(e)s=ea(e.random??e.rng?.()??_o(),e.msecs,e.seq,t,n);else{const e=Date.now(),r=_o();!function(e,t,n){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=ta(n),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}($o,e,r),s=ea(r,$o.msecs,$o.seq,t,n)}return t??function(e,t=0){return(Ro[e[t+0]]+Ro[e[t+1]]+Ro[e[t+2]]+Ro[e[t+3]]+"-"+Ro[e[t+4]]+Ro[e[t+5]]+"-"+Ro[e[t+6]]+Ro[e[t+7]]+"-"+Ro[e[t+8]]+Ro[e[t+9]]+"-"+Ro[e[t+10]]+Ro[e[t+11]]+Ro[e[t+12]]+Ro[e[t+13]]+Ro[e[t+14]]+Ro[e[t+15]]).toLowerCase()}(s)}function ea(e,t,n,s,r=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(s){if(r<0||r+16>s.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`)}else s=new Uint8Array(16),r=0;return t??=Date.now(),n??=ta(e),s[r++]=t/1099511627776&255,s[r++]=t/4294967296&255,s[r++]=t/16777216&255,s[r++]=t/65536&255,s[r++]=t/256&255,s[r++]=255&t,s[r++]=112|n>>>28&15,s[r++]=n>>>20&255,s[r++]=128|n>>>14&63,s[r++]=n>>>6&255,s[r++]=n<<2&255|3&e[10],s[r++]=e[11],s[r++]=e[12],s[r++]=e[13],s[r++]=e[14],s[r++]=e[15],s}function ta(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function na(){return qo()}function sa(e,t){if(!Pt(e))return{};if(!xn(t))return{};let n={};return _n(t,function(t){zs(e,t)&&(n[t]=de(e,t))}),n}let ra="grups",ia={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},cpemis:{name:"權限清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ua=(e={})=>{let t=$n(e,ot(ia));return t.id=`${na()}`,t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},oa="pemis",aa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},crules:{name:"管控對象清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},la=(e={})=>{let t=$n(e,ot(aa));return t.id=`${na()}`,t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ca="targets",Da={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},Ma=(e={})=>{let t=$n(e,ot(Da));return t.id=`${na()}`,t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},da="users",wa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},cgrups:{name:"權限群組清單",type:"TEXT"},isAdmin:{name:"是否為系統管理員",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},ya=(e={})=>{let t=$n(e,ot(wa));return t.id=`${na()}`,t.isAdmin="n",t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t};function La(e,t={}){let n=de(t,"useCreateStorage");cn(n)||(n=!1);let{keyTable:s,tableNameCht:r,tableNameEng:i,settings:u,parser:o,funNew:a,funTest:l,ext:c}=e;if(!_t(s))throw new Error(`invalid keyTable[${s}]`);if(_t(r)||(r=s),_t(i)||(i=s),!Rt(u))throw new Error("invalid settings");Rt(c)||(c=null),Rt(o)||(o=null),jn(a)||(a=null);let D=null;jn(l)&&(D=async e=>{if(!Rt(e))throw new Error("invalid wo");if(!zs(e,s))throw console.log(e),new Error(`keyTable[${s}] is not in wo`);let t=[];try{t=l(),Gn(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${s}] funTest catch`,e),new Error(e)}if(0!==mr(t))return n&&await e[s].createStorage(),await e[s].save(t),t});let M={},d={};return _n(ot(u),e=>{let t=de(u,`${e}.name`,"");_t(t)&&(M[e]=t);let n=de(u,`${e}.type`,"");_t(n)&&(d[e]=n)}),{...e,keyTable:s,tableNameCht:r,tableNameEng:i,settings:u,keys:ot(u),kpType:d,kpHead:M,parser:o,funNew:a,funTest:l,funTestAndSave:D,ext:c}}let Ia={grups:{keyTable:ra,tableNameCht:"權限群組設定",tableNameEng:"Permission groups",settings:ia,funNew:ua,funTest:()=>{let e=[["權限群組M1","\n {\n '權限P1': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M2","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M3","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'AND',\n 'isActive': 'y',\n },\n }\n "],["權限群組M4","\n {\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P4': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "]];return e=Ht(e,([e,t],n)=>{let s=ua({userId:"id-for-admin",order:n,name:e,description:`${e}的說明`,cpemis:t});return s.id=`id-for-${e}`,s=sa(s,ot(ia)),s}),console.log(`已產生: ${ra} 測試資料`,e),e}},pemis:{keyTable:oa,tableNameCht:"權限設定",tableNameEng:"Permissions",settings:aa,funNew:la,funTest:()=>{let e=[["權限P1","{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }"],["權限P2","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }"],["權限P3","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }"],["權限P4","{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }"]];return e=Ht(e,([e,t],n)=>{let s=la({userId:"id-for-admin",order:n,name:e,description:`${e}的說明`,crules:t});return s.id=`id-for-${e}`,s=sa(s,ot(aa)),s}),console.log(`已產生: ${oa} 測試資料`,e),e}},targets:{keyTable:ca,tableNameCht:"管控對象",tableNameEng:"Targets",settings:Da,funNew:Ma,funTest:()=>{let e=["專案A/頁A/區塊A","專案A/頁A/區塊A/執行按鈕","專案A/頁A/區塊A/分析按鈕","專案A/頁B/區塊A","專案A/頁B/區塊A/執行按鈕","專案A/頁B/區塊A/分析按鈕","專案A/頁B/區塊B/展開按鈕","專案A/頁B/區塊B/下載按鈕","專案A/頁C","專案B/頁A/區塊A","專案B/頁A/區塊A/顯示綜合報表","專案B/頁A/區塊A/顯示當前數據","專案B/頁A/區塊B","專案B/頁A/區塊B/下載報表按鈕","專案B/頁A/區塊B/下載數據按鈕","專案B/頁A/區塊C","專案B/頁B/區塊A","專案B/頁B/區塊A/待辦事項清單","專案B/頁B/區塊A/相關資源清單","專案B/頁B/區塊B","專案B/頁B/區塊B/顯示後台按鈕","專案B/頁B/區塊B/轉跳主站按鈕"];return e=Ht(e,(e,t)=>{let n=Ma({userId:"id-for-admin",order:t,description:`${e}的說明`});return n.id=e,n=sa(n,ot(Da)),n}),console.log(`已產生: ${ca} 測試資料`,e),e}},users:{keyTable:da,tableNameCht:"使用者",tableNameEng:"Users",settings:wa,funNew:ya,funTest:()=>{let e=[["peter","teamA","\n { \n '權限群組M1': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["mary","teamA","\n { \n '權限群組M2': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["john","teamA","\n { \n '權限群組M3': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["admin","","\n { \n '權限群組M4': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","y"]];return e=Ht(e,([e,t,n,s],r)=>{let i=ya({userId:"id-for-admin",order:r,name:e,email:`${e}@example.com`,from:t,cgrups:n,isAdmin:s});return i.id=`id-for-${e}`,i.isAdmin=s,i=sa(i,ot(wa)),i}),console.log(`已產生: ${da} 測試資料`,e),e}}},ga={};for(let e in Ia)ga[e]=La(Ia[e],{useCreateStorage:!1});var ma={exports:{}};!function(e){e.exports=function(){function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)}),n=e(function(e){var t=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=t)});n.version;var s=function(e){return"object"==typeof e?null!==e:"function"==typeof e},r=function(e){if(!s(e))throw TypeError(e+" is not an object!");return e},i=function(e){try{return!!e()}catch(e){return!0}},u=!i(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),o=t.document,a=s(o)&&s(o.createElement),l=function(e){return a?o.createElement(e):{}},c=!u&&!i(function(){return 7!=Object.defineProperty(l("div"),"a",{get:function(){return 7}}).a}),D=function(e,t){if(!s(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!s(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!s(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!s(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},M=Object.defineProperty,d={f:u?Object.defineProperty:function(e,t,n){if(r(e),t=D(t,!0),r(n),c)try{return M(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},w=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=u?function(e,t,n){return d.f(e,t,w(1,n))}:function(e,t,n){return e[t]=n,e},L={}.hasOwnProperty,I=function(e,t){return L.call(e,t)},g=0,m=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++g+m).toString(36))},C=e(function(e){var s="__core-js_shared__",r=t[s]||(t[s]={});(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),f=C("native-function-to-string",Function.toString),h=e(function(e){var s=p("src"),r="toString",i=(""+f).split(r);n.inspectSource=function(e){return f.call(e)},(e.exports=function(e,n,r,u){var o="function"==typeof r;o&&(I(r,"name")||y(r,"name",n)),e[n]!==r&&(o&&(I(r,s)||y(r,s,e[n]?""+e[n]:i.join(String(n)))),e===t?e[n]=r:u?e[n]?e[n]=r:y(e,n,r):(delete e[n],y(e,n,r)))})(Function.prototype,r,function(){return"function"==typeof this&&this[s]||f.call(this)})}),N=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},b=function(e,t,n){if(N(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,s){return e.call(t,n,s)};case 3:return function(n,s,r){return e.call(t,n,s,r)}}return function(){return e.apply(t,arguments)}},x="prototype",T=function(e,s,r){var i,u,o,a,l=e&T.F,c=e&T.G,D=e&T.S,M=e&T.P,d=e&T.B,w=c?t:D?t[s]||(t[s]={}):(t[s]||{})[x],L=c?n:n[s]||(n[s]={}),I=L[x]||(L[x]={});for(i in c&&(r=s),r)o=((u=!l&&w&&void 0!==w[i])?w:r)[i],a=d&&u?b(o,t):M&&"function"==typeof o?b(Function.call,o):o,w&&h(w,i,o,e&T.U),L[i]!=o&&y(L,i,a),M&&I[i]!=o&&(I[i]=o)};t.core=n,T.F=1,T.G=2,T.S=4,T.P=8,T.B=16,T.W=32,T.U=64,T.R=128;var A,E=T,S=Math.ceil,Z=Math.floor,v=function(e){return isNaN(e=+e)?0:(e>0?Z:S)(e)},X=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Y=(A=!1,function(e,t){var n,s,r=String(X(e)),i=v(t),u=r.length;return i<0||i>=u?A?"":void 0:(n=r.charCodeAt(i))<55296||n>56319||i+1===u||(s=r.charCodeAt(i+1))<56320||s>57343?A?r.charAt(i):n:A?r.slice(i,i+2):s-56320+(n-55296<<10)+65536});E(E.P,"String",{codePointAt:function(e){return Y(this,e)}}),n.String.codePointAt;var z=Math.max,j=Math.min,G=function(e,t){return(e=v(e))<0?z(e+t,0):j(e,t)},K=String.fromCharCode,F=String.fromCodePoint;E(E.S+E.F*(!!F&&1!=F.length),"String",{fromCodePoint:function(e){for(var t,n=arguments,s=[],r=arguments.length,i=0;r>i;){if(t=+n[i++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");s.push(t<65536?K(t):K(55296+((t-=65536)>>10),t%1024+56320))}return s.join("")}}),n.String.fromCodePoint;var W,U,V,k,Q,B,H,J,P,R,O,_,$,q,ee={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},te={isSpaceSeparator:function(e){return"string"==typeof e&&ee.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||ee.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||ee.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}},ne=function(e,t){W=String(e),U="start",V=[],k=0,Q=1,B=0,H=void 0,J=void 0,P=void 0;do{H=re(),de[U]()}while("eof"!==H.type);return"function"==typeof t?se({"":P},"",t):P};function se(e,t,n){var s=e[t];if(null!=s&&"object"==typeof s)if(Array.isArray(s))for(var r=0;r<s.length;r++){var i=String(r),u=se(s,i,n);void 0===u?delete s[i]:Object.defineProperty(s,i,{value:u,writable:!0,enumerable:!0,configurable:!0})}else for(var o in s){var a=se(s,o,n);void 0===a?delete s[o]:Object.defineProperty(s,o,{value:a,writable:!0,enumerable:!0,configurable:!0})}return n.call(e,t,s)}function re(){for(R="default",O="",_=!1,$=1;;){q=ie();var e=oe[R]();if(e)return e}}function ie(){if(W[k])return String.fromCodePoint(W.codePointAt(k))}function ue(){var e=ie();return"\n"===e?(Q++,B=0):e?B+=e.length:B++,e&&(k+=e.length),e}var oe={default:function(){switch(q){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void ue();case"/":return ue(),void(R="comment");case void 0:return ue(),ae("eof")}if(!te.isSpaceSeparator(q))return oe[U]();ue()},comment:function(){switch(q){case"*":return ue(),void(R="multiLineComment");case"/":return ue(),void(R="singleLineComment")}throw Le(ue())},multiLineComment:function(){switch(q){case"*":return ue(),void(R="multiLineCommentAsterisk");case void 0:throw Le(ue())}ue()},multiLineCommentAsterisk:function(){switch(q){case"*":return void ue();case"/":return ue(),void(R="default");case void 0:throw Le(ue())}ue(),R="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return ue(),void(R="default");case void 0:return ue(),ae("eof")}ue()},value:function(){switch(q){case"{":case"[":return ae("punctuator",ue());case"n":return ue(),le("ull"),ae("null",null);case"t":return ue(),le("rue"),ae("boolean",!0);case"f":return ue(),le("alse"),ae("boolean",!1);case"-":case"+":return"-"===ue()&&($=-1),void(R="sign");case".":return O=ue(),void(R="decimalPointLeading");case"0":return O=ue(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=ue(),void(R="decimalInteger");case"I":return ue(),le("nfinity"),ae("numeric",1/0);case"N":return ue(),le("aN"),ae("numeric",NaN);case'"':case"'":return _='"'===ue(),O="",void(R="string")}throw Le(ue())},identifierNameStartEscape:function(){if("u"!==q)throw Le(ue());ue();var e=Me();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw ge()}O+=e,R="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"":case"":return void(O+=ue());case"\\":return ue(),void(R="identifierNameEscape")}if(!te.isIdContinueChar(q))return ae("identifier",O);O+=ue()},identifierNameEscape:function(){if("u"!==q)throw Le(ue());ue();var e=Me();switch(e){case"$":case"_":case"":case"":break;default:if(!te.isIdContinueChar(e))throw ge()}O+=e,R="identifierName"},sign:function(){switch(q){case".":return O=ue(),void(R="decimalPointLeading");case"0":return O=ue(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=ue(),void(R="decimalInteger");case"I":return ue(),le("nfinity"),ae("numeric",$*(1/0));case"N":return ue(),le("aN"),ae("numeric",NaN)}throw Le(ue())},zero:function(){switch(q){case".":return O+=ue(),void(R="decimalPoint");case"e":case"E":return O+=ue(),void(R="decimalExponent");case"x":case"X":return O+=ue(),void(R="hexadecimal")}return ae("numeric",0*$)},decimalInteger:function(){switch(q){case".":return O+=ue(),void(R="decimalPoint");case"e":case"E":return O+=ue(),void(R="decimalExponent")}if(!te.isDigit(q))return ae("numeric",$*Number(O));O+=ue()},decimalPointLeading:function(){if(te.isDigit(q))return O+=ue(),void(R="decimalFraction");throw Le(ue())},decimalPoint:function(){switch(q){case"e":case"E":return O+=ue(),void(R="decimalExponent")}return te.isDigit(q)?(O+=ue(),void(R="decimalFraction")):ae("numeric",$*Number(O))},decimalFraction:function(){switch(q){case"e":case"E":return O+=ue(),void(R="decimalExponent")}if(!te.isDigit(q))return ae("numeric",$*Number(O));O+=ue()},decimalExponent:function(){switch(q){case"+":case"-":return O+=ue(),void(R="decimalExponentSign")}if(te.isDigit(q))return O+=ue(),void(R="decimalExponentInteger");throw Le(ue())},decimalExponentSign:function(){if(te.isDigit(q))return O+=ue(),void(R="decimalExponentInteger");throw Le(ue())},decimalExponentInteger:function(){if(!te.isDigit(q))return ae("numeric",$*Number(O));O+=ue()},hexadecimal:function(){if(te.isHexDigit(q))return O+=ue(),void(R="hexadecimalInteger");throw Le(ue())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return ae("numeric",$*Number(O));O+=ue()},string:function(){switch(q){case"\\":return ue(),void(O+=ce());case'"':return _?(ue(),ae("string",O)):void(O+=ue());case"'":return _?void(O+=ue()):(ue(),ae("string",O));case"\n":case"\r":throw Le(ue());case"\u2028":case"\u2029":me(q);break;case void 0:throw Le(ue())}O+=ue()},start:function(){switch(q){case"{":case"[":return ae("punctuator",ue())}R="value"},beforePropertyName:function(){switch(q){case"$":case"_":return O=ue(),void(R="identifierName");case"\\":return ue(),void(R="identifierNameStartEscape");case"}":return ae("punctuator",ue());case'"':case"'":return _='"'===ue(),void(R="string")}if(te.isIdStartChar(q))return O+=ue(),void(R="identifierName");throw Le(ue())},afterPropertyName:function(){if(":"===q)return ae("punctuator",ue());throw Le(ue())},beforePropertyValue:function(){R="value"},afterPropertyValue:function(){switch(q){case",":case"}":return ae("punctuator",ue())}throw Le(ue())},beforeArrayValue:function(){if("]"===q)return ae("punctuator",ue());R="value"},afterArrayValue:function(){switch(q){case",":case"]":return ae("punctuator",ue())}throw Le(ue())},end:function(){throw Le(ue())}};function ae(e,t){return{type:e,value:t,line:Q,column:B}}function le(e){for(var t=0,n=e;t<n.length;t+=1){var s=n[t];if(ie()!==s)throw Le(ue());ue()}}function ce(){switch(ie()){case"b":return ue(),"\b";case"f":return ue(),"\f";case"n":return ue(),"\n";case"r":return ue(),"\r";case"t":return ue(),"\t";case"v":return ue(),"\v";case"0":if(ue(),te.isDigit(ie()))throw Le(ue());return"\0";case"x":return ue(),De();case"u":return ue(),Me();case"\n":case"\u2028":case"\u2029":return ue(),"";case"\r":return ue(),"\n"===ie()&&ue(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Le(ue())}return ue()}function De(){var e="",t=ie();if(!te.isHexDigit(t))throw Le(ue());if(e+=ue(),t=ie(),!te.isHexDigit(t))throw Le(ue());return e+=ue(),String.fromCodePoint(parseInt(e,16))}function Me(){for(var e="",t=4;t-- >0;){var n=ie();if(!te.isHexDigit(n))throw Le(ue());e+=ue()}return String.fromCodePoint(parseInt(e,16))}var de={start:function(){if("eof"===H.type)throw Ie();we()},beforePropertyName:function(){switch(H.type){case"identifier":case"string":return J=H.value,void(U="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===H.type)throw Ie();U="beforePropertyValue"},beforePropertyValue:function(){if("eof"===H.type)throw Ie();we()},beforeArrayValue:function(){if("eof"===H.type)throw Ie();"punctuator"!==H.type||"]"!==H.value?we():ye()},afterPropertyValue:function(){if("eof"===H.type)throw Ie();switch(H.value){case",":return void(U="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===H.type)throw Ie();switch(H.value){case",":return void(U="beforeArrayValue");case"]":ye()}},end:function(){}};function we(){var e;switch(H.type){case"punctuator":switch(H.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=H.value}if(void 0===P)P=e;else{var t=V[V.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,J,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)V.push(e),U=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var n=V[V.length-1];U=null==n?"end":Array.isArray(n)?"afterArrayValue":"afterPropertyValue"}}function ye(){V.pop();var e=V[V.length-1];U=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Le(e){return Ce(void 0===e?"JSON5: invalid end of input at "+Q+":"+B:"JSON5: invalid character '"+pe(e)+"' at "+Q+":"+B)}function Ie(){return Ce("JSON5: invalid end of input at "+Q+":"+B)}function ge(){return Ce("JSON5: invalid identifier character at "+Q+":"+(B-=5))}function me(e){console.warn("JSON5: '"+pe(e)+"' in strings is not valid ECMAScript; consider escaping")}function pe(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){var n=e.charCodeAt(0).toString(16);return"\\x"+("00"+n).substring(n.length)}return e}function Ce(e){var t=new SyntaxError(e);return t.lineNumber=Q,t.columnNumber=B,t}var fe=function(e,t,n){var s,r,i,u=[],o="",a="";if(null==t||"object"!=typeof t||Array.isArray(t)||(n=t.space,i=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){s=[];for(var l=0,c=t;l<c.length;l+=1){var D=c[l],M=void 0;"string"==typeof D?M=D:("number"==typeof D||D instanceof String||D instanceof Number)&&(M=String(D)),void 0!==M&&s.indexOf(M)<0&&s.push(M)}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),"number"==typeof n?n>0&&(n=Math.min(10,Math.floor(n)),a=" ".substr(0,n)):"string"==typeof n&&(a=n.substr(0,10)),d("",{"":e});function d(e,t){var n=t[e];switch(null!=n&&("function"==typeof n.toJSON5?n=n.toJSON5(e):"function"==typeof n.toJSON&&(n=n.toJSON(e))),r&&(n=r.call(t,e,n)),n instanceof Number?n=Number(n):n instanceof String?n=String(n):n instanceof Boolean&&(n=n.valueOf()),n){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof n?w(n):"number"==typeof n?String(n):"object"==typeof n?Array.isArray(n)?I(n):y(n):void 0}function w(e){for(var t={"'":.1,'"':.2},n={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},s="",r=0;r<e.length;r++){var u=e[r];switch(u){case"'":case'"':t[u]++,s+=u;continue;case"\0":if(te.isDigit(e[r+1])){s+="\\x00";continue}}if(n[u])s+=n[u];else if(u<" "){var o=u.charCodeAt(0).toString(16);s+="\\x"+("00"+o).substring(o.length)}else s+=u}var a=i||Object.keys(t).reduce(function(e,n){return t[e]<t[n]?e:n});return a+(s=s.replace(new RegExp(a,"g"),n[a]))+a}function y(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=a;for(var n,r,i=[],l=0,c=s||Object.keys(e);l<c.length;l+=1){var D=c[l],M=d(D,e);if(void 0!==M){var w=L(D)+":";""!==a&&(w+=" "),w+=M,i.push(w)}}if(0===i.length)n="{}";else if(""===a)n="{"+(r=i.join(","))+"}";else{var y=",\n"+o;r=i.join(y),n="{\n"+o+r+",\n"+t+"}"}return u.pop(),o=t,n}function L(e){if(0===e.length)return w(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return w(e);for(var n=t.length;n<e.length;n++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(n))))return w(e);return e}function I(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=a;for(var n,s=[],r=0;r<e.length;r++){var i=d(String(r),e);s.push(void 0!==i?i:"null")}if(0===s.length)n="[]";else if(""===a)n="["+s.join(",")+"]";else{var l=",\n"+o,c=s.join(l);n="[\n"+o+c+",\n"+t+"]"}return u.pop(),o=t,n}},he={parse:ne,stringify:fe},Ne=he,be=Ne;return be}()}(ma);var pa=ts(ma.exports),Ca=y?y.isConcatSpreadable:void 0;function fa(e){return D(e)||je(e)||!!(Ca&&e&&e[Ca])}function ha(e,t,n,s,r){var i=-1,u=e.length;for(n||(n=fa),r||(r=[]);++i<u;){var o=e[i];t>0&&n(o)?t>1?ha(o,t-1,n,s,r):Ne(r,o):s||(r[r.length]=o)}return r}function Na(e,t){if(e!==t){var n=void 0!==e,s=null===e,r=e==e,i=N(e),u=void 0!==t,o=null===t,a=t==t,l=N(t);if(!o&&!l&&!i&&e>t||i&&u&&a&&!o&&!l||s&&u&&a||!n&&a||!r)return 1;if(!s&&!i&&!l&&e<t||l&&n&&r&&!s&&!i||o&&n&&r||!u&&r||!a)return-1}return 0}function ba(e,t,n){t=t.length?ie(t,function(e){return D(e)?function(t){return Me(t,1===e.length?e[0]:e)}:e}):[Gt];var s=-1;return t=ie(t,Be(Wt)),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(Bt(e,function(e,n,r){return{criteria:ie(t,function(t){return t(e)}),index:++s,value:e}}),function(e,t){return function(e,t,n){for(var s=-1,r=e.criteria,i=t.criteria,u=r.length,o=n.length;++s<u;){var a=Na(r[s],i[s]);if(a)return s>=o?a:a*("desc"==n[s]?-1:1)}return e.index-t.index}(e,t,n)})}var xa=Vi(function(e,t){if(null==e)return[];var n=t.length;return n>1&&ki(e,t[0],t[1])?t=[]:n>2&&ki(t[0],t[1],t[2])&&(t=[t[0]]),ba(e,ha(t,1),[])});function Ta(e,t,n,s){let r=e=>{let t={};try{t=pa.parse(e)}catch(t){console.log("c",e),console.log(t)}let n=[];try{n=(e=>{let t=[];return _n(e,(e,n)=>{let s={name:n};s=Rt(e)?{...s,...e}:{...s,isActive:e},t.push(s)}),t})(t)}catch(n){console.log("c",e),console.log("kp",t),console.log(n)}return n},i=(e,t,n)=>{let s=[];return _n(e,e=>{let r=de(e,n,"");_n(t,t=>{let i=de(t,n,"");if(r===i)return s.push({...e,data:t}),!1})}),s},u=e=>{let t=[];if(_n(e,e=>{let n=de(e,"mode","");if("OR"!==n&&"AND"!==n)return!0;let s=de(e,"rules",[]),r={};_n(s,e=>{r[e.name]=e.isActive}),t.push({mode:n,kpRule:r})}),0===mr(t))return[];let n=zo(t,{mode:"OR"}),s=zo(t,{mode:"AND"}),r=null;mr(n)>0?r=de(n,"0.kpRule"):mr(s)>0&&(r=de(s,"0.kpRule")),_n(n,e=>{let t=de(e,"kpRule",{});r=((e,t)=>{let n={};return _n([e,t],e=>{_n(e,(e,t)=>{zs(n,t)||(n[t]="n"),"y"===n[t]||"y"===e?n[t]="y":n[t]="n"})}),n})(r,t)}),_n(s,(e,t)=>{let n=de(e,"kpRule",{});r=((e,t)=>{let n=lu(e);return _n([t],e=>{_n(e,(e,t)=>{zs(n,t)||(n[t]="n"),"y"===n[t]&&"y"===e?n[t]="y":n[t]="n"})}),n})(r,n)});let i=[];return _n(r,(e,t)=>{i.push({name:t,isActive:e})}),i},o=de(e,"cgrups",""),a=r(o);a=i(a,t,"name"),a=zo(a,{isActive:"y"}),a=Ht(a,e=>{let t=de(e,"data.cpemis",""),s=r(t);return s=zo(s,{isActive:"y"}),s=i(s,n,"name"),e.data._pemis=s,e}),a=Ht(a,e=>{let t=de(e,"data._pemis",[]);return t=Ht(t,e=>{let t=de(e,"data.crules",""),n=r(t);return e.data._rules=n,e}),e.data._pemis=t,e});let l=[];{let e=[];_n(a,t=>{let n=t.mode,s=t.data._pemis,r=[];_n(s,e=>{let t=e.mode,n=e.data._rules;r.push({mode:t,rules:n})});let i={mode:n,rules:u(r)};e.push(i)}),l=u(e)}{let e={};_n(l,t=>{e[t.name]=t.isActive});let t=[];_n(s,n=>{t.push({name:n.id,isActive:de(e,n.id,"n")})}),l=t}return{grups:a,rules:l}}function Aa(e,t){return Zt(e,t)}function Ea(e,t){function n(e){return Cn(e)?e:[e]}if(bn(e))return!1;if(0===(e=n(e)).length)return!1;if(bn(e))return!1;if(0===(t=n(t)).length)return!1;for(let n=0;n<e.length;n++)for(let s=0;s<t.length;s++)if(Aa(e[n],t[s]))return!0;return!1}function Sa(e,t,{srLog:n,kmx:s}){let r=async(r,i,u,o,a={})=>{let l=de(a,"pickKeysOnly",null);return await s("updateTabItems:"+r,async()=>{if(xn(l)){let t=await e[r].select();u=function(e,t,n,s){let r={};_n(t,e=>{let t=de(e,n,"");_t(t)&&(r[t]=e)});let i=xa(e,"order");return i=Ht(i,e=>{let t={...e},i=de(e,n,""),u=de(r,i,null);return null!==u&&_n(s,e=>{zs(u,e)&&(t[e]=u[e])}),t}),i}(t,u,o,l),n.info({event:"updateTabItems-pickKeysOnly",keyTable:r,userId:i,pickKeysOnly:l})}u=Ht(u=qn(u,ga[r].keys),(e,t)=>(e.order=t+1,e));let s=(e,t)=>{let s=null,i={};return _n(e,(e,u)=>{let o=de(e,t,"");return _t(o)?zs(i,o)?(n.error({event:"updateTabItems-ckKey-error",keyTable:r,key:t,msg:"saveRowFieldDuplicate",row:u,value:o}),s="saveRowFieldDuplicate",!1):void(i[o]=!0):(n.error({event:"updateTabItems-ckKey-error",keyTable:r,key:t,msg:"saveRowFieldInvalid",row:u}),s="saveRowFieldInvalid",!1)}),s},a=null;if(Ea(r,["targets"])&&(a=s(u,"id"),null!==a))return Promise.reject(a);if(Ea(r,["pemis","grups"])&&(a=s(u,"name"),null!==a))return Promise.reject(a);if(Ea(r,["users"])&&(a=s(u,"email"),null!==a))return Promise.reject(a);let c=await e[r].select(),D=u,M=function(e,t,n,s={}){let r=de(s,"withInfor");cn(r)||(r=!0);let i={del:[],add:[],same:[],diff:[]};if(!_t(n))return console.log("invalid key"),r&&(i.infor={}),i;Cn(e)||(e=[e]),Cn(t)||(t=[t]),e=zo(e,e=>zs(e,n)),t=zo(t,e=>zs(e,n));let u=new Map(t.map(e=>[e[n],e]));for(let t of e){let e=u.get(t[n]);e?(JSON.stringify(t)===JSON.stringify(e)?i.same.push(e):i.diff.push(e),u.delete(t[n])):i.del.push(t)}if(i.add=Array.from(u.values()),r){let e={};for(let t of i.del)e[t[n]]="del";for(let t of i.add)e[t[n]]="add";for(let t of i.diff)e[t[n]]="diff";for(let t of i.same)e[t[n]]="same";i.infor=e}return i}(c,D,o);return mr(M.del)>0&&await t(i,r,"del",M.del),mr(M.add)>0&&await t(i,r,"insert",M.add),mr(M.diff)>0&&await t(i,r,"save",M.diff),D})},i=(e,t,s)=>{n.error({event:e,userId:t,msg:"string"==typeof s?s:s&&s.message||e})};return{updateTargets:async(e,t)=>{try{await r("targets",e,t,"id")}catch(t){throw i("updateTargets-error",e,t),t}return n.info({event:"updateTargets-success",userId:e}),"saveTabItemsSuccess"},updatePemis:async(e,t)=>{try{await r("pemis",e,t,"name")}catch(t){throw i("updatePemis-error",e,t),t}return n.info({event:"updatePemis-success",userId:e}),"saveTabItemsSuccess"},updateGrups:async(e,t)=>{try{await r("grups",e,t,"name")}catch(t){throw i("updateGrups-error",e,t),t}return n.info({event:"updateGrups-success",userId:e}),"saveTabItemsSuccess"},updateUsers:async(e,t,s={})=>{try{await r("users",e,t,"id",s)}catch(t){throw i("updateUsers-error",e,t),t}return n.info({event:"updateUsers-success",userId:e}),"saveTabItemsSuccess"}}}let Za={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en",cht:"zh-tw"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},saveChanges:{eng:"Save changes",cht:"儲存變更"},id:{eng:"Id",cht:"主鍵"},from:{eng:"From",cht:"來源"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},screenFull:{eng:"Max size",cht:"最大化尺寸"},screenNormal:{eng:"Normal size",cht:"預設尺寸"},checkAllYes:{eng:"Check all",cht:"全選使用"},checkAllNo:{eng:"Uncheck all",cht:"全不選使用"},checkAllInv:{eng:"Reverse all",cht:"全反選使用"},operEnable:{eng:"Enable",cht:"是否使用"},operPemiMode:{eng:"Operator",cht:"合併權限模式"},operGrupMode:{eng:"Operator",cht:"合併權限群組模式"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},cannotConnectServer:{eng:"Cannot connect to server",cht:"無法連線至伺服器"},saveRowFieldInvalid:{eng:"Invalid field value in saved data",cht:"儲存資料的欄位值無效"},saveRowFieldDuplicate:{eng:"Duplicate field value in saved data",cht:"儲存資料的欄位值重複"},saveTabItemsSuccess:{eng:"Saved successfully",cht:"儲存成功"},cannotGetUserId:{eng:"Cannot get the user id",cht:"無法取得使用者 Id"},cannotGetUserEmail:{eng:"Cannot get the email of user",cht:"無法取得使用者 Email"},cannotGetUserName:{eng:"Cannot get the name of user",cht:"無法取得使用者名稱"},cannotGetUserRole:{eng:"Cannot get the role of user",cht:"無法取得使用者角色"},cannotFindUserFromToken:{eng:"Cannot identify the user from token",cht:"無法由 token 識別使用者"},cannotGetUserProp:{eng:"Cannot get the property of user",cht:"無法取得使用者對應屬性"},cannotGetUserFromPerm:{eng:"Cannot find the user in permission system",cht:"無法於權限系統取得使用者"},userNoPermission:{eng:"User does not have permission",cht:"使用者權限不足"},invalidPayload:{eng:"Invalid payload in request",cht:"請求內容無效"},invalidFromInPayload:{eng:"Invalid from in payload",cht:"請求來源欄位無效"},invalidRowsInPayload:{eng:"Invalid rows in payload",cht:"請求資料列無效"},invalidFrom:{eng:"Invalid from",cht:"來源欄位無效"},invalidRows:{eng:"Invalid rows",cht:"資料列無效"},cannotGetUserRules:{eng:"Cannot get rules of user",cht:"無法取得使用者權限規則"},tokenNoPermission:{eng:"Token does not have permission",cht:"權限不足"},userIdNoPermrules:{eng:"The user id does not have permission rules",cht:"此使用者沒有權限規則"},invalidKeyTable:{eng:"Invalid key table",cht:"資料表名稱無效"},cannotFindUserId:{eng:"Cannot find the user id",cht:"無法找到使用者 Id"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},showTabCols:{eng:"Show columns",cht:"顯示欄位"},belongUsers:{eng:"Use users",cht:"管控所屬使用者"},belongGrups:{eng:"Use groups",cht:"管控所屬權限群組"},belongGrupsNames:{eng:"Use permission groups",cht:"所屬權限群組名稱"},belongPemisNames:{eng:"Use permissions",cht:"所屬權限名稱"},chipsShowAll:{eng:"Show all",cht:"展開全部"},chipsPopupTitle:{eng:"{title} ({n} in total)",cht:"{title}:共 {n} 項"},isAdmin:{eng:"Administrator",cht:"是否為系統管理員"},isActive:{eng:"Active",cht:"是否有效"},errInNames:{eng:"Name errors",cht:"名稱出現錯誤待修復"},errInIds:{eng:"ID errors",cht:"ID 出現錯誤待修復"},errInEmails:{eng:"Email errors",cht:"Email出現錯誤待修復"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},mmTargets:{eng:"Targets",cht:"管理對象"},mmTargetsMsg:{eng:"Targets generally refer to entities such as pages, data, etc., and can also include features or services.",cht:"對象泛指實體的頁面、數據等,亦可為的功能或服務。"},mmPemis:{eng:"Permissions",cht:"管理權限"},mmPemisMsg:{eng:"Permissions are primarily used to set rules for enabling or disabling various objects.",cht:"權限主要為用來設定各種對象之使用或禁用規則。"},mmGrups:{eng:"Permission groups",cht:"管理權限群組"},mmGrupsMsg:{eng:"Permission groups are primarily used to configure combinations of different permissions.",cht:"權限群組主要為用來設定組合各種權限。"},mmUsers:{eng:"Users",cht:"管理使用者"},mmUsersMsg:{eng:"Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.",cht:"使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。"},targetId:{eng:"Target",cht:"對象名稱"},targetIdEmpty:{eng:"Invalid name",cht:"尚未給予有效對象名稱"},targetIdDuplicate:{eng:"Duplicate target",cht:"對象名稱出現重複"},targetAddEmpty:{eng:"No target",cht:"尚未新增管理資料"},targetAdd:{eng:"Add target",cht:"新增對象"},targetAddNameNew:{eng:"New target",cht:"新對象"},targetAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},targetCopy:{eng:"Copy target",cht:"複製對象"},targetCopyNameNew:{eng:"copy",cht:"複製"},targetDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},targetEnable:{eng:"Enable",cht:"是否使用"},targetSaveTargetsFail:{eng:"Failed to save targets",cht:"儲存對象數據失敗"},targetSaveTargetsSuccess:{eng:"Save targets successfully",cht:"儲存對象數據成功"},pemiName:{eng:"Name of permission",cht:"權限名稱"},pemiNameEmpty:{eng:"Invalid name of permission",cht:"尚未給予有效權限名稱"},pemiNameDuplicate:{eng:"Duplicate name of permission",cht:"權限名稱出現重複"},pemiAddEmpty:{eng:"No permission",cht:"尚未新增權限資料"},pemiAdd:{eng:"Add permission",cht:"新增權限"},pemiAddNameNew:{eng:"New permission",cht:"新權限"},pemiAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},pemiCopy:{eng:"Copy permission",cht:"複製權限"},pemiCopyNameNew:{eng:"copy",cht:"複製"},pemiDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},pemiCrules:{eng:"Rules of permission",cht:"管控對象"},pemiEditBlngGrupsNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditBlngGrupsNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiEditCrules:{eng:"Edit rules of permission",cht:"編輯使用對象"},pemiEditCrulesForDisplay:{eng:"Rules of permission",cht:"展示使用對象"},pemiEditCrulesNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditCrulesNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiRnderCrulesNoRule:{eng:"No rule",cht:"無使用任何對象"},pemiRnderCrulesHasNRule:{eng:"Has {n} rule(s){nms}",cht:"使用共 {n} 項對象{nms}"},pemiSavePemisFail:{eng:"Failed to save permissions",cht:"儲存權限數據失敗"},pemiSavePemisSuccess:{eng:"Save permissions successfully",cht:"儲存權限數據成功"},pemiBlngEditGrups:{eng:"Edit permission groups",cht:"編輯所屬權限群組"},pemiBlngEditGrupsForDisplay:{eng:"Permission groups",cht:"展示所屬權限群組"},pemiBlngRnderNoGrup:{eng:"No permission groups",cht:"無所屬權限群組"},pemiBlngRnderGrups:{eng:"Has {n} permission group(s){nms}",cht:"共被 {n} 個權限群組{nms}使用"},pemiBlngPemiNow:{eng:"Now permission",cht:"目前權限"},pemiBlngEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},pemiBlngEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiBlngDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},cruleEditNoTargetId:{eng:"Can not find the id of target",cht:"無法找到對象Id"},cruleEditNoTargetData:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cruleDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},grupName:{eng:"Name of permission group",cht:"權限群組名稱"},grupNameEmpty:{eng:"Invalid name of permission group",cht:"尚未給予有效權限群組名稱"},grupNameDuplicate:{eng:"Duplicate name of permission group",cht:"權限群組名稱出現重複"},grupAddEmpty:{eng:"No permission group",cht:"尚未新增權限群組資料"},grupAdd:{eng:"Add permission group",cht:"新增權限群組"},grupAddNameNew:{eng:"New permission group",cht:"新權限群組"},grupAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},grupCopy:{eng:"Copy permission group",cht:"複製權限群組"},grupCopyNameNew:{eng:"copy",cht:"複製"},grupDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},grupCpemis:{eng:"Permissions",cht:"管控使用權限"},grupEditBlngNoGrupId:{eng:"Can not find the id of permission group",cht:"無法找到權限群組Id"},grupEditBlngNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupEditCpemis:{eng:"Edit list of permission group",cht:"編輯使用權限"},grupEditCpemisForDisplay:{eng:"List of permission group",cht:"展示使用權限"},grupRnderCpemisNoPermission:{eng:"No permission",cht:"無使用任何權限"},grupRnderCpemisHasNPermissions:{eng:"Has {n} permission(s){nms}",cht:"使用 {n} 項權限{nms}"},grupSaveGrupsEmpty:{eng:"No user",cht:"未有變更權限群組資料"},grupSaveGrupsFail:{eng:"Failed to save permission groups",cht:"儲存權限群組數據失敗"},grupSaveGrupsSuccess:{eng:"Save permission groups successfully",cht:"儲存權限群組數據成功"},grupBlngEditUsers:{eng:"Edit permission group of users",cht:"編輯所屬使用者"},grupBlngEditUsersForDisplay:{eng:"Permission group of users",cht:"展示所屬使用者"},grupBlngRnderNoUser:{eng:"No users",cht:"無所屬使用者"},grupBlngRnderUsers:{eng:"Has {n} user(s){nms}",cht:"共被 {n} 位使用者{nms}使用"},grupBlngGrupNow:{eng:"Now permission group",cht:"目前權限群組"},grupBlngEditNoGrupName:{eng:"Can not find the name of permission group",cht:"無法找到權限群組名稱"},grupBlngEditNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupBlngDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},cpemiEditNoName:{eng:"Can not find the name of target",cht:"無法找到對象名稱"},cpemiEditNoTarget:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cpemiDeleteCheckTargets:{eng:"Delete targets(s)",cht:"刪除勾選對象"},userName:{eng:"Name of user",cht:"使用者名稱"},userNameEmpty:{eng:"Invalid name of user",cht:"尚未給予有效使用者名稱"},userNameDuplicate:{eng:"Duplicate name of user",cht:"使用者名稱出現重複"},userEmailEmpty:{eng:"Empty email of user",cht:"尚未給予使用者Email"},userEmailError:{eng:"Invalid email of user",cht:"使用者Email格式錯誤"},userEmailDuplicate:{eng:"Duplicate email of user",cht:"使用者Email出現重複"},userAddEmpty:{eng:"No user",cht:"尚未新增使用者資料"},userAdd:{eng:"Add user",cht:"新增使用者"},userAddNameNew:{eng:"New user",cht:"新使用者"},userAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},userCopy:{eng:"Copy user",cht:"複製使用者"},userCopyNameNew:{eng:"copy",cht:"複製"},userDeleteCheckUsers:{eng:"Delete user(s)",cht:"刪除勾選使用者"},userCgrups:{eng:"Permission groups",cht:"管控使用權限群組"},userEditCgrups:{eng:"Edit list of user",cht:"編輯使用權限群組"},userEditCgrupsForDisplay:{eng:"Permission groups of user",cht:"展示使用權限群組"},userEditCgrupsNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditCgrupsNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者資料"},userSaveUsersEmpty:{eng:"No user",cht:"未有變更使用者資料"},userSaveUsersFail:{eng:"Failed to save users",cht:"儲存使用者數據失敗"},userSaveUsersSuccess:{eng:"Save users successfully",cht:"儲存使用者數據成功"},userEditNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者數據"},userRnderCgrupsNoGroup:{eng:"No permission group",cht:"無使用任何權限群組"},userRnderCgrupsHasNGroups:{eng:"Has {n} permission group(s){nms}",cht:"使用 {n} 項權限群組{nms}"},cgrupEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},cgrupEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},cgrupDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},show:{eng:"Show",cht:"顯示"},active:{eng:"Active",cht:"啟用"},userId:{eng:"ID of the created user",cht:"創建使用者主鍵"},timeCreate:{eng:"Created time",cht:"創建時間"},userIdUpdate:{eng:"ID of the updated user",cht:"最新變更使用者主鍵"},timeUpdate:{eng:"Updated time",cht:"更新時間"},invalidUrl:{eng:"Invalid url",cht:"網址無效"},invalidTokenTar:{eng:"Invalid target token",cht:"目標 token 無效"},invalidTokenSelf:{eng:"Invalid self token",cht:"自身 token 無效"},invalidUserIdTar:{eng:"Invalid target user id",cht:"目標使用者 Id 無效"},noTokenInUrl:{eng:"Missing token in url",cht:"網址缺少 token"},noTokenUserIdInUrl:{eng:"Missing token or userId in url",cht:"網址缺少 token 或 userId"},cannotGetUserByUrl:{eng:"Cannot get user by url",cht:"無法由網址取得使用者"},cannotGetUserDataByUrl:{eng:"Cannot get user data by url",cht:"無法由網址取得使用者資料"},noUserDataByUrl:{eng:"No user data by url",cht:"該網址無使用者資料"},noUserDataAfterConvert:{eng:"No user data after permission conversion",cht:"權限轉換後無使用者資料"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},staEventTitle:{eng:"Event Frequency",cht:"事件發生頻率"},staTimeHr:{eng:"Hourly",cht:"每小時"},staTimeDay:{eng:"Daily",cht:"每日"},staTotal:{eng:"Total",cht:"全部加總"},staNoData:{eng:"No event data",cht:"尚無事件資料"},getDataError:{eng:"Failed to load data",cht:"資料載入失敗"},staTableTitle:{eng:"Event Statistics",cht:"事件統計表"},staColEvent:{eng:"Event",cht:"事件"},staColLast1Day:{eng:"Last 1 Day",cht:"最近1日"},staColLast8Hour:{eng:"Last 8 Hours",cht:"最近8小時"},staColLast4Hour:{eng:"Last 4 Hours",cht:"最近4小時"},staColLast1Hour:{eng:"Last 1 Hour",cht:"最近1小時"}},va=(e={})=>{let t=de(e,"kpLangExt");Rt(t)||(t={});let n=de(e,"webName");Rt(n)||(n={});let s=de(e,"webDescription");Rt(s)||(s={});let r={};r={...r,...Za},Rt(t)&&(r={...r,...t}),Rt(n)&&(r={...r,webName:{...n}}),Rt(s)&&(r={...r,webDescription:{...s}});let i={};return _n(["eng","cht"],e=>{let t={};_n(r,(n,s)=>{t[s]=n[e]}),i[e]=t}),i},Xa=o.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL($a).href:"undefined"==typeof document?location.href:c&&"SCRIPT"===c.tagName.toUpperCase()&&c.src||new URL("w-web-perm.umd.js",document.baseURI).href),Ya=e.dirname(Xa);let za=(n={})=>{let s=de(n,"logFd","");_t(s)||(s="./logs");let r=de(n,"logInterval","");_t(r)||(r="hr");let i=de(n,"logNumKeep",null),u={fdLog:s,interval:r};if(null!=i&&""!==i){if(!pn(i))throw new Error(`invalid logNumKeep[${i}], must be positive integer`);u.numKeep=mn(i)}let o=function(n={}){let s=Ds(),r=de(n,"timeZone",null),i=de(n,"fdLog");_t(i)||(i="./_logs");let u=de(n,"interval");"day"!==u&&"hr"!==u&&(u="day");let o=de(n,"numKeep");pn(o)||(o="day"===u?365:8760),o=mn(o);let l=a.transport({targets:[{level:"info",target:e.resolve(Ya,"./formatter.mjs"),options:{interval:u,fdLog:i,timeZone:r}}]}),c=a(l),D=()=>{try{if(!Hn(i))return;let n="hr"===u?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,r=t.readdirSync(i).filter(e=>n.test(e));r.sort();let a=r.length-o;if(a<=0)return;let l=r.slice(0,a);for(let n of l){let r=e.join(i,n);try{t.unlinkSync(r),s.emit("delete",{fp:r,fn:n})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}};D();let M=setInterval(D,36e5);M.unref();let d=null,w=e=>{let t=c[e].bind(c);return(...n)=>{try{s.emit(e,{args:n})}catch(e){}t(...n)}};return s.fatal=w("fatal"),s.error=w("error"),s.warn=w("warn"),s.info=w("info"),s.debug=w("debug"),s.trace=w("trace"),s.cleanLogs=D,s.clear=(e={})=>{if(null!==d)return d;let t=de(e,"timeLimit");pn(t)||(t=6e4),d=Vn();let n=!1,s=()=>{n||(n=!0,clearInterval(M),d.resolve())},r=setTimeout(()=>{try{l.worker.terminate()}catch(e){}s()},t);try{c.flush(e=>{if(e||l.closed)return clearTimeout(r),void s();l.once("close",()=>{clearTimeout(r),s()}),l.end()})}catch(e){clearTimeout(r),s()}return d},s}(u);return o};function ja(){let e=Ds(),t={};function n(t,n){Ls(e,t,[n],{tag:"cache"})}function s(e,s={}){if(zs(t,e))return;let r=de(s,"fun");jn(r)||(r=async()=>{});let i=de(s,"inputs");Cn(i)||(i=[]);let u=de(s,"timeExpired");pn(u)||(u=5e3),u=mn(u);let o=de(s,"timeFrom");"end"!==o&&(o="start");let a=de(s,"useCacheWhenError");cn(a)||(a=!1);let l=de(s,"useCloneDeep");cn(l)||(l=!0),t[e]={needExec:!0,fun:r,pm:null,gen:0,inputs:i,value:null,time:null,timeExpired:u,timeFrom:o,useCacheWhenError:a,useCloneDeep:l},n("message",{fun:"set",key:e,timeExpired:u,timeFrom:o,useCacheWhenError:a,useCloneDeep:l})}async function r(e,s={}){if(zs(t,e)){let r=t[e],i=de(s,"useCloneDeep");if(cn(i)||(i=r.useCloneDeep),r.pm)return n("message",{fun:"get",key:e,msg:"waiting"}),await r.pm,i?lu(r.value):r.value;let u=Date.now(),o=r.needExec,a=u-r.time;if(o?n("message",{fun:"get",key:e,msg:"execute first"}):r.timeExpired>0&&a>r.timeExpired&&(n("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:a}),o=!0),o){n("message",{fun:"get",key:e,msg:"fun start"}),r.needExec=!1;let t=r.gen,s=async()=>{try{let s;try{s=await r.fun(...r.inputs)}catch(i){if(n("error",{fun:"get",key:e,msg:i}),!r.useCacheWhenError)throw r.gen===t&&(r.needExec=!0),i;s=void 0}r.gen===t&&(r.value=s,r.time="end"===r.timeFrom?Date.now():u)}finally{r.pm=null,n("message",{fun:"get",key:e,msg:"fun end"})}};r.pm=s(),await r.pm}else n("message",{fun:"get",key:e,msg:"use cache"});return i?lu(r.value):r.value}return n("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=s,e.getProxy=async function(e,t={}){return s(e,t),r(e,t)},e.get=r,e.update=function(e,s){zs(t,e)&&(n("message",{fun:"updateValue",key:e}),t[e].value=s,t[e].time=Date.now(),t[e].gen+=1)},e.clear=function(e){zs(t,e)&&(n("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){zs(t,e)&&(n("message",{fun:"remove",key:e}),delete t[e])},e}function Ga(n,s=1){return function(e,t=1,n={}){let s=1,r=de(n,"path"),i=de(n,"fs");if(!Bn(e,{fs:i}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&pn(t)&&(t=mn(t))<1&&(t=1),function e(n){let u=[];return Bn(n,{fs:i})?(_n(i.readdirSync(n),function(o){let a=r.resolve(n,o),l=null;try{l=i.statSync(a)}catch(e){}l&&l.isDirectory()?(u.push({isFolder:!0,level:s,path:a,name:r.basename(a)}),s+=1,(s<=t||null===t)&&(u=u.concat(e(a))),s-=1):u.push({isFolder:!1,level:s,path:a,name:r.basename(a)})}),u):u}(e)}(n,s,{path:e,fs:t})}let Ka=new Map,Fa=new Map;function Wa(e){let t=de(e,"fdLog");return _t(t)||(t="./logs"),t}function Ua(e,n,s){let r=Ga(e);r=r.filter(e=>!de(e,"isFolder",!1)),r=function(e,t,n){let s=t.format(n);return zo(e,e=>{let t=de(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=s.slice(0,t.length)})}(r,n,s);let i=[];for(let e of r)try{let n=t.statSync(e.path);if(!n.isFile())continue;i.push({path:e.path,name:e.name,size:n.size,mtimeMs:n.mtimeMs})}catch(e){}return i}function Va(e){let t=new Map;return n=>{let s=Math.floor(n/6e4),r=t.get(s);return void 0===r&&(r=rs(6e4*s).format(e),t.set(s,r)),r}}function ka(e,n){return new Promise((s,r)=>{let i=null,u=t.createReadStream(e,{encoding:"utf8"}),o=l.createInterface({input:u,crlfDelay:1/0});o.on("line",n);let a=e=>{i=e,o.close()};u.on("error",a),o.on("error",a),u.on("close",()=>{i?r(i):s()})})}function Qa(e){let t=null;try{t=JSON.parse(e)}catch(e){return null}return null===t||"object"!=typeof t?null:t}async function Ba(e,t,n,s=null){jn(s)||(s=Va(n));let r={minTimeMs:null,ev:{}};return await ka(e,e=>{let n=Qa(e);if(null===n)return;let i=n.event;if(!_t(i))return;let u=function(e){return"number"==typeof e?e:_t(e)?rs(e).valueOf():NaN}(n.time);if(Number.isNaN(u))return;if((null===r.minTimeMs||u<r.minTimeMs)&&(r.minTimeMs=u),!(u>t))return;let o=s(u),a=r.ev[o];void 0===a&&(a={count:0,kp:{}},r.ev[o]=a),a.count+=1,a.kp[i]=(a.kp[i]||0)+1}),r}async function Ha(e,t,n){let s=Va(n),r=[];for(let i of e)try{let e=await Ba(i.path,t,n,s);r.push({name:i.name,ok:!0,agg:e})}catch(e){r.push({name:i.name,ok:!1,err:String(de(e,"message",e))})}return r}function Ja(e,t){for(let n in t.ev){let s=t.ev[n],r=e[n];void 0===r&&(r={count:0,kp:{}},e[n]=r),r.count+=s.count;for(let e in s.kp)r.kp[e]=(r.kp[e]||0)+s.kp[e]}return e}async function Pa(t,n={}){let s=!1!==de(n,"useCache"),r=de(n,"scanFiles");jn(r)||(r=Ha);let i=de(n,"srLog",null),u=Ua(t.fdLog,t.tStart,t.fmt),o=function(e){let t=Ka.get(e);return t||(t=new Map,Ka.set(e,t)),t}((a=t.fdLog,l=t.fmt,`${e.resolve(a)}|${l}`));var a,l;let c=[],D={};for(let e of u){let n=s?o.get(e.name):void 0;void 0!==n&&n.size===e.size&&n.mtimeMs===e.mtimeMs&&(null===n.minTimeMs||n.minTimeMs>n.scanTStartMs&&n.minTimeMs>t.tStartMs)?D[e.name]=n.agg:c.push(e)}if(s){let e=new Set(u.map(e=>e.name));for(let t of o.keys())e.has(t)||o.delete(t)}let M=[];if(c.length>0){let e=await r(c.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),n={};for(let t of e)n[t.name]=t;for(let e of c){let r=n[e.name];if(r&&r.ok)D[e.name]=r.agg,s&&o.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:r.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:r.agg});else{let t=de(r,"err","no result");M.push({name:e.name,err:t}),s&&o.delete(e.name),i&&jn(i.warn)&&i.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let d={};for(let e of u){let t=D[e.name];t&&Ja(d,t)}let w=function(e,t){let n={};for(let e of t)n[e]={count:0};for(let t in e){let s=e[t];n[t]={count:s.count,...s.kp}}return Object.keys(n).sort().map(e=>({time:e,data:n[e]}))}(d,t.kpTime);return{rs:w,stat:{nFiles:u.length,nScanned:c.length,nCached:u.length-c.length,errors:M}}}function Ra(t=7,n="hr",s={}){let r=function(e=7,t="hr",n={}){let s=Wa(n),r=function(e){return"day"===e?"day":"hr"}(t),i="day"===r?"YYYY-MM-DD":"YYYY-MM-DDTHH",u="day"===r?"day":"hour",o=de(n,"timeNow"),a="number"==typeof o?rs(o):rs(),l=a.subtract(e,"day"),c=l.valueOf(),D=l.startOf(u),M=a.startOf(u),d=[];for(;!D.isAfter(M);)d.push(D.format(i)),D=D.add(1,u);return{fdLog:s,timeInterval:r,fmt:i,unit:u,tStart:l,tStartMs:c,kpTime:d,timeNow:a.valueOf()}}(t,n,s),i=JSON.stringify([e.resolve(r.fdLog),t,r.timeInterval,de(s,"timeNow",null)]);if(Fa.has(i))return Fa.get(i);let u=Pa(r,s).finally(()=>{Fa.delete(i)});return Fa.set(i,u),u}function Oa(e,t){return null==e?t:"number"==typeof e?e:rs(e).valueOf()}async function _a(e,t){let n={},s=[];for(let r of e)try{await ka(r.path,e=>{let s=Qa(e);if(null===s)return;let r=s.event;if(!_t(r))return;let i=Oa(s.time,t),u=(o=(t-i)/36e5)<0?Math.ceil(o)||0:Math.floor(o);var o;u<0||u>24||(n[r]||(n[r]={last1Day:0,last8Hour:0,last4Hour:0,last1Hour:0}),u<=24&&(n[r].last1Day+=1),u<=8&&(n[r].last8Hour+=1),u<=4&&(n[r].last4Hour+=1),u<=1&&(n[r].last1Hour+=1))})}catch(e){s.push({name:r.name,err:String(de(e,"message",e))})}return{kp:n,errors:s}}let $a=o.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL($a).href:"undefined"==typeof document?location.href:c&&"SCRIPT"===c.tagName.toUpperCase()&&c.src||new URL("w-web-perm.umd.js",document.baseURI).href),qa=e.dirname($a),el=e.resolve(qa,"staLogsCore.shellWorker.mjs");function tl(e,t=el){let n=Vn(),s=new u.Worker(t),r=!1,i=(e,t)=>{r||(r=!0,e(t));try{s.terminate()}catch(e){}};return s.on("message",e=>{"done"===e.mode?i(n.resolve,e.payload):"error"===e.mode&&i(n.reject,e.payload)}),s.on("error",e=>{i(n.reject,e)}),s.on("exit",e=>{i(n.reject,new Error(`staLogs worker exited without result, code=${e}`))}),s.postMessage(e),n}async function nl(e,t,n){return 0===e.length?[]:tl({kind:"scan",files:e,tStartMs:t,fmt:n})}async function sl(e,t){return 0===e.length?{kp:{},errors:[]}:tl({kind:"table",files:e,nowMs:t})}function rl(e={}){return async function(e={}){let t=Wa(e),n=de(e,"timeNow"),s="number"==typeof n?rs(n):rs(),r=s.valueOf(),i=de(e,"scanTableFiles");jn(i)||(i=_a);let u=de(e,"srLog",null),o=Ua(t,s.subtract(25,"hour"),"YYYY-MM-DDTHH"),{kp:a,errors:l}=await i(o.map(e=>({path:e.path,name:e.name})),r);for(let e of l)u&&jn(u.warn)&&u.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:e.err});let c=[];for(let e in a)c.push({event:e,...a[e]});return c.sort((e,t)=>t.last1Day-e.last1Day),{rs:c,stat:{nFiles:o.length,errors:l}}}({...e,scanTableFiles:sl})}async function il(e=7,t="hr",n={}){let s=await function(e=7,t="hr",n={}){return Ra(e,t,{...n,scanFiles:nl})}(e,t,n);return s.rs}function ul(e={}){let t=de(e,"fdLog","");_t(t)||(t="./logs");let n=de(e,"mock",!1),s=de(e,"srLog",null),r=async(e=7,r="hr")=>{if(n)return function(e="hr"){let t="day"===e?"YYYY-MM-DD":"YYYY-MM-DDTHH",n="hr"===e?"hour":"day",s="hr"===e?48:7,r=["verifyConn","updateTargets-success","checkUser-error","api/getPerm-success","getWebInfor-success"],i=rs("2025-01-01T00:00:00"),u=[];for(let e=0;e<s;e++){let s=i.add(e,n),o={count:0};r.forEach((t,n)=>{let s=Math.round(20+15*Math.sin((e+3*n)/4));o[t]=s,o.count+=s}),u.push({time:s.format(t),data:o})}return u}(r);return await il(e,r,{fdLog:t,srLog:s})},i=ja(),u=async()=>{if(n)return[{event:"verifyConn",last1Day:240,last8Hour:90,last4Hour:50,last1Hour:15},{event:"updateTargets-success",last1Day:180,last8Hour:70,last4Hour:38,last1Hour:11},{event:"checkUser-error",last1Day:120,last8Hour:45,last4Hour:24,last1Hour:7},{event:"api/getPerm-success",last1Day:90,last8Hour:33,last4Hour:18,last1Hour:5},{event:"getWebInfor-success",last1Day:60,last8Hour:22,last4Hour:12,last1Hour:3}];let e=await async function(e={}){return(await rl(e)).rs}({fdLog:t,srLog:s});return e},o=ja(),a={getStaEvent:async(e,t=7,n="hr")=>{let s=`${t}:${n}`,u=await i.getProxy(s,{fun:r,inputs:[t,n],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEvent"));return Array.isArray(u)?u:Promise.reject("cannotGetStaEvent")},getStaEventTable:async e=>{let t=await o.getProxy("staEventTable",{fun:u,inputs:[],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEventTable"));return Array.isArray(t)?t:Promise.reject("cannotGetStaEventTable")}};return a}return function(n,s,r,i,u,o,a={}){let l=null;if(!jn(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!_t(s))throw console.log("invalid url",s),new Error("invalid url");if(!_t(r))throw console.log("invalid db",r),new Error("invalid db");if(!jn(i))throw console.log("invalid getUserByToken",i),new Error("invalid getUserByToken");if(!jn(u))throw console.log("invalid verifyClientUser",u),new Error("invalid verifyClientUser");if(!jn(o))throw console.log("invalid verifyAppUser",o),new Error("invalid verifyAppUser");let c=de(a,"serverPort");pn(c)||(c=11006),c=mn(c);let D=de(a,"useCheckUser",!1),M=de(a,"getUserById",null),d=de(a,"useExcludeWhenNotAdmin",!1),w=de(a,"webName",{}),y=de(a,"webDescription",{}),L=de(a,"webLogo",""),I=de(a,"subfolder","");var g,m;_t(I)&&("/"===Un(I,1)&&(m=1,I=_t(g=I)&&Fn(m)?0===(m=mn(m))?g:Wn(g,g.length-m):""),"/"!==Wn(I,1)&&(I=`/${I}`));let p=de(a,"urlRedirect",""),C=de(a,"showLanguage","n"),f=de(a,"language","eng"),h=de(a,"showModeEditTargets","n"),N=de(a,"showModeEditPemis","n"),b=de(a,"showModeEditGrups","n"),x=de(a,"showModeEditUsers","n"),T=de(a,"modeEditTargets","n"),A=de(a,"modeEditPemis","n"),E=de(a,"modeEditGrups","n"),S=de(a,"modeEditUsers","n"),Z=de(a,"widthTargetId",""),v=de(a,"widthTargetDescription",""),X=de(a,"widthPemisName",""),Y=de(a,"widthPemisDescription",""),z=de(a,"widthGrupsName",""),j=de(a,"widthGrupsDescription",""),G=de(a,"widthUsersName",""),K=de(a,"widthUsersEmail",""),F=de(a,"widthUsersDescription",""),W=de(a,"mappingBy","");"id"!==W&&"email"!==W&&"name"!==W&&(W="id");let U=de(a,"kpLangExt",null),V=va({kpLangExt:U,webName:w,webDescription:y}),k=za(a),Q={useCheckUser:D,getUserById:M,useExcludeWhenNotAdmin:d},B={};try{B=Po(ga,n,s,r,Q)}catch(e){throw console.log(e),k.error({event:"WServOrm-init-error",msg:e&&e.message||"WServOrmInitFailed"}),e}let{woItems:H,procOrm:J}=B,P=new function(){let e=new Map,t=new Map;return async(n,s)=>{let r=(e.get(n)||Promise.resolve()).then(async()=>await s(),async()=>await s());e.set(n,r.catch(()=>{})),t.set(n,(t.get(n)||0)+1);try{return await r}finally{let s=t.get(n)-1;s<=0?(t.delete(n),e.delete(n)):t.set(n,s)}}},R=Sa(H,J,{srLog:k,kmx:P}),O=de(a,"logFd","");_t(O)||(O="./logs");let _=ul({fdLog:O,mock:de(a,"staEventMock",!1),srLog:k}),$=async e=>{let t=null;if(_t(e)&&(t=i(e),Gn(t)&&(t=await t)),!Rt(t))return console.log("token",e),k.error({event:"getTokenUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");await(async e=>{if(!_t(de(e,"id","")))return console.log("user",e),k.error({event:"checkUser-error",msg:"cannotGetUserId"}),Promise.reject("cannotGetUserId");if(!_t(de(e,"email","")))return console.log("user",e),k.error({event:"checkUser-error",msg:"cannotGetUserEmail"}),Promise.reject("cannotGetUserEmail");if(!_t(de(e,"name","")))return console.log("user",e),k.error({event:"checkUser-error",msg:"cannotGetUserName"}),Promise.reject("cannotGetUserName");let t=de(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),k.error({event:"checkUser-error",msg:"cannotGetUserRole"}),Promise.reject("cannotGetUserRole"))})(t);let n=de(t,W,"");if(!_t(n))return console.log("userSelf",t),console.log("mappingBy",W),k.error({event:"getTokenUser-error",msg:"cannotGetUserProp",mappingBy:W}),Promise.reject("cannotGetUserProp");let s=await H.users.select({[W]:n,isActive:"y"});return s=de(s,0,null),Rt(s)?s:(console.log("userSelf",t),console.log("mappingBy",W),k.error({event:"getTokenUser-error",msg:"cannotGetUserFromPerm",mappingBy:W}),Promise.reject("cannotGetUserFromPerm"))},q=async(e,t="")=>{let n=await $(e),s=u(n,t);return Gn(s)&&(s=await s),s?n:(console.log("user",n),k.error({event:"getAndVerifyClientUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},ee=async(e,t="")=>{let n=null;if(_t(e)&&(n=i(e),Gn(n)&&(n=await n)),!Rt(n))return console.log("token",e),k.error({event:"getAndVerifyAppUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");let s=o(n,t);return Gn(s)&&(s=await s),s?n:(console.log("user",n),k.error({event:"getAndVerifyAppUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},te=async(e,t="")=>(await q(e,t),!0),ne=async e=>{let t=await(async(e,t)=>{let n=await H.users.select({[e]:t,isActive:"y"});return n=de(n,0,null),Rt(n)?n:null})("id",e);return Rt(t)?t:null},se=async e=>{let t=await ne(e),n=Ta(t,await H.grups.select(),await H.pemis.select(),await H.targets.select());if(!Rt(n))return console.log("userId",e),k.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules");let s=Ht(de(n,"grups",[]),"name");var r,i;return i=";",s=null==(r=s)?"":Jt.call(r,i),{user:{...t,grupsNames:s},rules:de(n,"rules",[])}},re="dist",ie="./node_modules/w-web-perm/dist";Hn(ie)&&(re=ie);let ue="index.html";try{let n=e.resolve(re,"index.tmp");if(Pn(n)||(n=e.resolve(re,ue)),!Pn(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let s=e.resolve(re,ue),r=t.readFileSync(n,"utf8");r=Rn(r,"/mperm/","{sfd}/"),r=Rn(r,"{sfd}",I),r=Rn(r,"{urlRedirect}",p),r=Rn(r,"{language}",f),t.writeFileSync(s,r,"utf8")}catch(e){console.log(e),console.log(`can not generate ${ue}`)}let oe=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let n=await kn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("token",t),console.log("[API]getUserByToken/check token: invalid token"),k.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await q(t,"getUserByToken");return Rt(n)?(k.info({event:"api/getUserByToken-success",userId:de(n,"id","")}),n):(console.log("token",t),console.log("[API]getUserByToken/check user: invalid user"),k.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getPerm",handler:async function(e,t){let n=await kn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("token",t),console.log("[API]getPerm/check token: invalid token"),k.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await q(t,"getPerm");if(!Rt(n))return console.log("token",t),console.log("[API]getPerm/check userSelf: invalid userSelf"),k.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=de(n,"id","");if(!_t(s))return console.log("token",t),console.log("userSelf",n),console.log("[API]getPerm/check userIdSelf: invalid userIdSelf"),k.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await se(s);return Rt(r)?(k.info({event:"api/getPerm-success",userId:s}),r):(console.log("token",t),console.log("userSelf",n),console.log("userIdSelf",s),console.log("[API]getPerm/check userWithRulesSelf: invalid userWithRulesSelf"),k.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getPermUserInfor",handler:async function(e,t){let n=await kn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("[API]getPermUserInfor/check tokenSelf: invalid tokenSelf"),k.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!Rt(await ee(t,"getPermUserInfor")))return console.log("req.query",de(e,"query")),console.log("tokenSelf",t),console.log("[API]getPermUserInfor/check userSelf: invalid userSelf"),k.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=de(e,"query.userId","");if(!_t(n))return console.log("req.query",de(e,"query")),console.log("tokenSelf",t),console.log("[API]getPermUserInfor/check userIdFind: invalid userIdFind"),k.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=await se(n);return Rt(s)?(k.info({event:"api/getPermUserInfor-success",userId:n}),s):(console.log("userIdFind",n),console.log("[API]getPermUserInfor/check userWithRulesFind: invalid userWithRulesFind"),k.error({event:"api/getPermUserInfor-error",msg:"userIdNoPermrules"}),Promise.reject("userIdNoPermrules"))})();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let n=await kn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("token",t),console.log("[API]syncAndReplaceTabs/check token: invalid token"),k.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=de(e,"query.keyTable","");if(!_t(n))return console.log("req.query",de(e,"query")),console.log("keyTable",n),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),k.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!["targets","pemis","grups","users"].includes(n))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",n),k.error({event:"api/syncAndReplaceTabs-error",msg:"invalidKeyTable",keyTable:n}),Promise.reject("invalidKeyTable");let s=await ee(t,"syncAndReplaceTabs");if(!Rt(s))return console.log("token",t),console.log("[API]syncAndReplaceTabs/check user: invalid user"),k.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=de(s,"id","");if(!_t(r))return console.log("token",t),console.log("user",s),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),k.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let i=await(async e=>{let t=de(e,"payload");if(_t(t)&&(t=Kn(t)),!Rt(t))return console.log("payload",t),k.error({event:"parsePayload-error",msg:"invalidPayload"}),Promise.reject("invalidPayload");let n=de(t,"from","");if(!_t(n))return console.log("payload",t),k.error({event:"parsePayload-error",msg:"invalidFromInPayload"}),Promise.reject("invalidFromInPayload");let s=de(t,"rows",[]);return xn(s)?{from:n,rows:s}:(console.log("payload",t),k.error({event:"parsePayload-error",msg:"invalidRowsInPayload"}),Promise.reject("invalidRowsInPayload"))})(e),u=await(async(e,t,n)=>await P("syncAndReplaceTabs:"+n,async()=>{let s=de(t,"from","");if(!_t(s))return console.log("inp",t),k.error({event:"syncAndReplaceTabs-error",msg:"invalidFrom",keyTable:n}),Promise.reject("invalidFrom");let r=de(t,"rows",[]);return xn(r)?(r=Ht(r,(e,t)=>(e.from=s,e)),r=qn(r,ga[n].keys),await H[n].delAll({from:s}),await J(e,n,"insert",r)):(console.log("inp",t),console.log("keyTable",n),k.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",keyTable:n}),Promise.reject("invalidRows"))}))(r,i,n);return k.info({event:"api/syncAndReplaceTabs-success",userId:r,keyTable:n}),u})();return zn(n.msg)&&(n.msg=n.msg.message),n}}],ae=ot(ga);return l=new mu({port:c,pathStaticFiles:re,apiName:"api",apis:oe,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:s,req:r})=>{let i=function(e,t){return _t(e)&&Fn(t)?0===(t=mn(t))?e:Un(e,e.length-t):""}(t,7);if(!_t(i))return console.log("apiType",e),console.log("authorization",t),console.log("invalid token"),!1;let u=!1,o="";await te(i,e).then(()=>{u=!0}).catch(e=>{o="string"==typeof e?e:e&&e.message||"checkTokenFail"});let a=de(s,"x-forwarded-for","").split(",")[0].trim();_t(a)||(a=de(r,"info.remoteAddress","")||de(r,"socket.remoteAddress","")||de(r,"connection.remoteAddress",""));let l=de(s,"origin",""),c=de(s,"referer","");return u?k.info({event:"verifyConn",ok:u,apiType:e,ip:a,origin:l,referer:c}):k.error({event:"verifyConn-error",ok:u,apiType:e,ip:a,origin:l,referer:c,msg:o}),u},getUserIdByToken:async e=>{let t=de(await i(e),"id","");return _t(t)?t:(console.log("token",e),console.log("userId",t),k.error({event:"getUserIdByToken-error",msg:"cannotFindUserId"}),Promise.reject("cannotFindUserId"))},corsOrigins:["*"],useDbOrm:!0,kpOrm:H,operOrm:J,tableNamesExec:ae,methodsExec:["select","insert","save","del","delAll"],tableNamesSync:ae,kpFunExt:{getWebInfor:e=>(k.info({event:"getWebInfor-success",userId:e}),{webLogo:L,showLanguage:C,language:f,kpLang:V,showModeEditTargets:h,showModeEditPemis:N,showModeEditGrups:b,showModeEditUsers:x,modeEditTargets:T,modeEditPemis:A,modeEditGrups:E,modeEditUsers:S,widthTargetId:Z,widthTargetDescription:v,widthPemisName:X,widthPemisDescription:Y,widthGrupsName:z,widthGrupsDescription:j,widthUsersName:G,widthUsersEmail:K,widthUsersDescription:F}),updateTargets:R.updateTargets,updatePemis:R.updatePemis,updateGrups:R.updateGrups,updateUsers:(e,t)=>{let n="for:grups"===S?{pickKeysOnly:["cgrups"]}:{};return R.updateUsers(e,t,n)},getStaEvent:async(e,t,n)=>{try{let s=await _.getStaEvent(e,t,n);return k.info({event:"getStaEvent-success",userId:e}),s}catch(t){throw k.error({event:"getStaEvent-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEvent"}),t}},getStaEventTable:async e=>{try{let t=await _.getStaEventTable(e);return k.info({event:"getStaEventTable-success",userId:e}),t}catch(t){throw k.error({event:"getStaEventTable-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEventTable"}),t}}},fpTableTags:"tableTags-web-perm.json"}),l}});
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("url"),require("pino"),require("readline")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","url","pino","readline"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-perm"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.url,e.pino,e.readline)}(this,function(e,t,n,s,r,i,u,o,l,a){"use strict";var c="undefined"!=typeof document?document.currentScript:null,D=Array.isArray,M="object"==typeof global&&global&&global.Object===Object&&global,d="object"==typeof self&&self&&self.Object===Object&&self,w=M||d||Function("return this")(),y=w.Symbol,L=Object.prototype,I=L.hasOwnProperty,g=L.toString,m=y?y.toStringTag:void 0;var C=Object.prototype.toString;var p=y?y.toStringTag:void 0;function f(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":p&&p in Object(e)?function(e){var t=I.call(e,m),n=e[m];try{e[m]=void 0;var s=!0}catch(e){}var r=g.call(e);return s&&(t?e[m]=n:delete e[m]),r}(e):function(e){return C.call(e)}(e)}function h(e){return null!=e&&"object"==typeof e}function N(e){return"symbol"==typeof e||h(e)&&"[object Symbol]"==f(e)}var b=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,x=/^\w*$/;function T(e,t){if(D(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!N(e))||(x.test(e)||!b.test(e)||null!=t&&e in Object(t))}function A(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function E(e){if(!A(e))return!1;var t=f(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var S,Z=w["__core-js_shared__"],v=(S=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||""))?"Symbol(src)_1."+S:"";var X=Function.prototype.toString;function Y(e){if(null!=e){try{return X.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var z=/^\[object .+?Constructor\]$/,j=Function.prototype,G=Object.prototype,K=j.toString,F=G.hasOwnProperty,W=RegExp("^"+K.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U(e){return!(!A(e)||(t=e,v&&v in t))&&(E(e)?W:z).test(Y(e));var t}function k(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return U(n)?n:void 0}var V=k(Object,"create");var Q=Object.prototype.hasOwnProperty;var B=Object.prototype.hasOwnProperty;function H(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}function J(e,t){return e===t||e!=e&&t!=t}function P(e,t){for(var n=e.length;n--;)if(J(e[n][0],t))return n;return-1}H.prototype.clear=function(){this.__data__=V?V(null):{},this.size=0},H.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},H.prototype.get=function(e){var t=this.__data__;if(V){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return Q.call(t,e)?t[e]:void 0},H.prototype.has=function(e){var t=this.__data__;return V?void 0!==t[e]:B.call(t,e)},H.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=V&&void 0===t?"__lodash_hash_undefined__":t,this};var R=Array.prototype.splice;function O(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}O.prototype.clear=function(){this.__data__=[],this.size=0},O.prototype.delete=function(e){var t=this.__data__,n=P(t,e);return!(n<0)&&(n==t.length-1?t.pop():R.call(t,n,1),--this.size,!0)},O.prototype.get=function(e){var t=this.__data__,n=P(t,e);return n<0?void 0:t[n][1]},O.prototype.has=function(e){return P(this.__data__,e)>-1},O.prototype.set=function(e,t){var n=this.__data__,s=P(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this};var _=k(w,"Map");function $(e,t){var n,s,r=e.__data__;return("string"==(s=typeof(n=t))||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==n:null===n)?r["string"==typeof t?"string":"hash"]:r.map}function q(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}q.prototype.clear=function(){this.size=0,this.__data__={hash:new H,map:new(_||O),string:new H}},q.prototype.delete=function(e){var t=$(this,e).delete(e);return this.size-=t?1:0,t},q.prototype.get=function(e){return $(this,e).get(e)},q.prototype.has=function(e){return $(this,e).has(e)},q.prototype.set=function(e,t){var n=$(this,e),s=n.size;return n.set(e,t),this.size+=n.size==s?0:1,this};function ee(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var s=arguments,r=t?t.apply(this,s):s[0],i=n.cache;if(i.has(r))return i.get(r);var u=e.apply(this,s);return n.cache=i.set(r,u)||i,u};return n.cache=new(ee.Cache||q),n}ee.Cache=q;var te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ne=/\\(\\)?/g,se=function(e){var t=ee(e,function(e){return 500===n.size&&n.clear(),e}),n=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(te,function(e,n,s,r){t.push(s?r.replace(ne,"$1"):n||e)}),t}),re=se;function ie(e,t){for(var n=-1,s=null==e?0:e.length,r=Array(s);++n<s;)r[n]=t(e[n],n,e);return r}var ue=y?y.prototype:void 0,oe=ue?ue.toString:void 0;function le(e){if("string"==typeof e)return e;if(D(e))return ie(e,le)+"";if(N(e))return oe?oe.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ae(e){return null==e?"":le(e)}function ce(e,t){return D(e)?e:T(e,t)?[e]:re(ae(e))}function De(e){if("string"==typeof e||N(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Me(e,t){for(var n=0,s=(t=ce(t,e)).length;null!=e&&n<s;)e=e[De(t[n++])];return n&&n==s?e:void 0}function de(e,t,n){var s=null==e?void 0:Me(e,t);return void 0===s?n:s}function we(e){var t=this.__data__=new O(e);this.size=t.size}we.prototype.clear=function(){this.__data__=new O,this.size=0},we.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},we.prototype.get=function(e){return this.__data__.get(e)},we.prototype.has=function(e){return this.__data__.has(e)},we.prototype.set=function(e,t){var n=this.__data__;if(n instanceof O){var s=n.__data__;if(!_||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new q(s)}return n.set(e,t),this.size=n.size,this};function ye(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new q;++t<n;)this.add(e[t])}function Le(e,t){for(var n=-1,s=null==e?0:e.length;++n<s;)if(t(e[n],n,e))return!0;return!1}function Ie(e,t){return e.has(t)}ye.prototype.add=ye.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},ye.prototype.has=function(e){return this.__data__.has(e)};function ge(e,t,n,s,r,i){var u=1&n,o=e.length,l=t.length;if(o!=l&&!(u&&l>o))return!1;var a=i.get(e),c=i.get(t);if(a&&c)return a==t&&c==e;var D=-1,M=!0,d=2&n?new ye:void 0;for(i.set(e,t),i.set(t,e);++D<o;){var w=e[D],y=t[D];if(s)var L=u?s(y,w,D,t,e,i):s(w,y,D,e,t,i);if(void 0!==L){if(L)continue;M=!1;break}if(d){if(!Le(t,function(e,t){if(!Ie(d,t)&&(w===e||r(w,e,n,s,i)))return d.push(t)})){M=!1;break}}else if(w!==y&&!r(w,y,n,s,i)){M=!1;break}}return i.delete(e),i.delete(t),M}var me=w.Uint8Array;function Ce(e){var t=-1,n=Array(e.size);return e.forEach(function(e,s){n[++t]=[s,e]}),n}function pe(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var fe=y?y.prototype:void 0,he=fe?fe.valueOf:void 0;function Ne(e,t){for(var n=-1,s=t.length,r=e.length;++n<s;)e[r+n]=t[n];return e}function be(e,t,n){var s=t(e);return D(e)?s:Ne(s,n(e))}function xe(e,t){for(var n=-1,s=null==e?0:e.length,r=0,i=[];++n<s;){var u=e[n];t(u,n,e)&&(i[r++]=u)}return i}function Te(){return[]}var Ae=Object.prototype.propertyIsEnumerable,Ee=Object.getOwnPropertySymbols,Se=Ee?function(e){return null==e?[]:(e=Object(e),xe(Ee(e),function(t){return Ae.call(e,t)}))}:Te;function Ze(e){return h(e)&&"[object Arguments]"==f(e)}var ve=Object.prototype,Xe=ve.hasOwnProperty,Ye=ve.propertyIsEnumerable,ze=Ze(function(){return arguments}())?Ze:function(e){return h(e)&&Xe.call(e,"callee")&&!Ye.call(e,"callee")},je=ze;var Ge="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ke=Ge&&"object"==typeof module&&module&&!module.nodeType&&module,Fe=Ke&&Ke.exports===Ge?w.Buffer:void 0,We=(Fe?Fe.isBuffer:void 0)||function(){return!1},Ue=/^(?:0|[1-9]\d*)$/;function ke(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ue.test(e))&&e>-1&&e%1==0&&e<t}function Ve(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Qe={};function Be(e){return function(t){return e(t)}}Qe["[object Float32Array]"]=Qe["[object Float64Array]"]=Qe["[object Int8Array]"]=Qe["[object Int16Array]"]=Qe["[object Int32Array]"]=Qe["[object Uint8Array]"]=Qe["[object Uint8ClampedArray]"]=Qe["[object Uint16Array]"]=Qe["[object Uint32Array]"]=!0,Qe["[object Arguments]"]=Qe["[object Array]"]=Qe["[object ArrayBuffer]"]=Qe["[object Boolean]"]=Qe["[object DataView]"]=Qe["[object Date]"]=Qe["[object Error]"]=Qe["[object Function]"]=Qe["[object Map]"]=Qe["[object Number]"]=Qe["[object Object]"]=Qe["[object RegExp]"]=Qe["[object Set]"]=Qe["[object String]"]=Qe["[object WeakMap]"]=!1;var He="object"==typeof exports&&exports&&!exports.nodeType&&exports,Je=He&&"object"==typeof module&&module&&!module.nodeType&&module,Pe=Je&&Je.exports===He&&M.process,Re=function(){try{var e=Je&&Je.require&&Je.require("util").types;return e||Pe&&Pe.binding&&Pe.binding("util")}catch(e){}}(),Oe=Re&&Re.isTypedArray,_e=Oe?Be(Oe):function(e){return h(e)&&Ve(e.length)&&!!Qe[f(e)]},$e=Object.prototype.hasOwnProperty;function qe(e,t){var n=D(e),s=!n&&je(e),r=!n&&!s&&We(e),i=!n&&!s&&!r&&_e(e),u=n||s||r||i,o=u?function(e,t){for(var n=-1,s=Array(e);++n<e;)s[n]=t(n);return s}(e.length,String):[],l=o.length;for(var a in e)!t&&!$e.call(e,a)||u&&("length"==a||r&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||ke(a,l))||o.push(a);return o}var et=Object.prototype;function tt(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||et)}function nt(e,t){return function(n){return e(t(n))}}var st=nt(Object.keys,Object),rt=Object.prototype.hasOwnProperty;function it(e){if(!tt(e))return st(e);var t=[];for(var n in Object(e))rt.call(e,n)&&"constructor"!=n&&t.push(n);return t}function ut(e){return null!=e&&Ve(e.length)&&!E(e)}function ot(e){return ut(e)?qe(e):it(e)}function lt(e){return be(e,ot,Se)}var at=Object.prototype.hasOwnProperty;var ct=k(w,"DataView"),Dt=k(w,"Promise"),Mt=k(w,"Set"),dt=k(w,"WeakMap"),wt="[object Map]",yt="[object Promise]",Lt="[object Set]",It="[object WeakMap]",gt="[object DataView]",mt=Y(ct),Ct=Y(_),pt=Y(Dt),ft=Y(Mt),ht=Y(dt),Nt=f;(ct&&Nt(new ct(new ArrayBuffer(1)))!=gt||_&&Nt(new _)!=wt||Dt&&Nt(Dt.resolve())!=yt||Mt&&Nt(new Mt)!=Lt||dt&&Nt(new dt)!=It)&&(Nt=function(e){var t=f(e),n="[object Object]"==t?e.constructor:void 0,s=n?Y(n):"";if(s)switch(s){case mt:return gt;case Ct:return wt;case pt:return yt;case ft:return Lt;case ht:return It}return t});var bt=Nt,xt="[object Arguments]",Tt="[object Array]",At="[object Object]",Et=Object.prototype.hasOwnProperty;function St(e,t,n,s,r,i){var u=D(e),o=D(t),l=u?Tt:bt(e),a=o?Tt:bt(t),c=(l=l==xt?At:l)==At,M=(a=a==xt?At:a)==At,d=l==a;if(d&&We(e)){if(!We(t))return!1;u=!0,c=!1}if(d&&!c)return i||(i=new we),u||_e(e)?ge(e,t,n,s,r,i):function(e,t,n,s,r,i,u){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new me(e),new me(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return J(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=Ce;case"[object Set]":var l=1&s;if(o||(o=pe),e.size!=t.size&&!l)return!1;var a=u.get(e);if(a)return a==t;s|=2,u.set(e,t);var c=ge(o(e),o(t),s,r,i,u);return u.delete(e),c;case"[object Symbol]":if(he)return he.call(e)==he.call(t)}return!1}(e,t,l,n,s,r,i);if(!(1&n)){var w=c&&Et.call(e,"__wrapped__"),y=M&&Et.call(t,"__wrapped__");if(w||y){var L=w?e.value():e,I=y?t.value():t;return i||(i=new we),r(L,I,n,s,i)}}return!!d&&(i||(i=new we),function(e,t,n,s,r,i){var u=1&n,o=lt(e),l=o.length;if(l!=lt(t).length&&!u)return!1;for(var a=l;a--;){var c=o[a];if(!(u?c in t:at.call(t,c)))return!1}var D=i.get(e),M=i.get(t);if(D&&M)return D==t&&M==e;var d=!0;i.set(e,t),i.set(t,e);for(var w=u;++a<l;){var y=e[c=o[a]],L=t[c];if(s)var I=u?s(L,y,c,t,e,i):s(y,L,c,e,t,i);if(!(void 0===I?y===L||r(y,L,n,s,i):I)){d=!1;break}w||(w="constructor"==c)}if(d&&!w){var g=e.constructor,m=t.constructor;g==m||!("constructor"in e)||!("constructor"in t)||"function"==typeof g&&g instanceof g&&"function"==typeof m&&m instanceof m||(d=!1)}return i.delete(e),i.delete(t),d}(e,t,n,s,r,i))}function Zt(e,t,n,s,r){return e===t||(null==e||null==t||!h(e)&&!h(t)?e!=e&&t!=t:St(e,t,n,s,Zt,r))}function vt(e){return e==e&&!A(e)}function Xt(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function Yt(e){var t=function(e){for(var t=ot(e),n=t.length;n--;){var s=t[n],r=e[s];t[n]=[s,r,vt(r)]}return t}(e);return 1==t.length&&t[0][2]?Xt(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,s){var r=n.length,i=r,u=!s;if(null==e)return!i;for(e=Object(e);r--;){var o=n[r];if(u&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++r<i;){var l=(o=n[r])[0],a=e[l],c=o[1];if(u&&o[2]){if(void 0===a&&!(l in e))return!1}else{var D=new we;if(s)var M=s(a,c,l,e,t,D);if(!(void 0===M?Zt(c,a,3,s,D):M))return!1}}return!0}(n,e,t)}}function zt(e,t){return null!=e&&t in Object(e)}function jt(e,t){return null!=e&&function(e,t,n){for(var s=-1,r=(t=ce(t,e)).length,i=!1;++s<r;){var u=De(t[s]);if(!(i=null!=e&&n(e,u)))break;e=e[u]}return i||++s!=r?i:!!(r=null==e?0:e.length)&&Ve(r)&&ke(u,r)&&(D(e)||je(e))}(e,t,zt)}function Gt(e){return e}function Kt(e){return function(t){return null==t?void 0:t[e]}}function Ft(e){return T(e)?Kt(De(e)):function(e){return function(t){return Me(t,e)}}(e)}function Wt(e){return"function"==typeof e?e:null==e?Gt:"object"==typeof e?D(e)?function(e,t){return T(e)&&vt(t)?Xt(De(e),t):function(n){var s=de(n,e);return void 0===s&&s===t?jt(n,e):Zt(t,s,3)}}(e[0],e[1]):Yt(e):Ft(e)}var Ut,kt=function(e,t,n){for(var s=-1,r=Object(e),i=n(e),u=i.length;u--;){var o=i[Ut?u:++s];if(!1===t(r[o],o,r))break}return e};var Vt=function(e,t){return function(n,s){if(null==n)return n;if(!ut(n))return e(n,s);for(var r=n.length,i=t?r:-1,u=Object(n);(t?i--:++i<r)&&!1!==s(u[i],i,u););return n}}(function(e,t){return e&&kt(e,t,ot)}),Qt=Vt;function Bt(e,t){var n=-1,s=ut(e)?Array(e.length):[];return Qt(e,function(e,r,i){s[++n]=t(e,r,i)}),s}function Ht(e,t){return(D(e)?ie:Bt)(e,Wt(t))}var Jt=Array.prototype.join;function Pt(e){return"[object Object]"===Object.prototype.toString.call(e)}function Rt(e){if(Pt(e)){for(let t in e)return!0;return!1}return!1}function Ot(e){return"[object String]"===Object.prototype.toString.call(e)}function _t(e){return!(!Ot(e)||""===e)}var $t=/\s/;var qt=/^\s+/;function en(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&$t.test(e.charAt(t)););return t}(e)+1).replace(qt,""):e}var tn=/^[-+]0x[0-9a-f]+$/i,nn=/^0b[01]+$/i,sn=/^0o[0-7]+$/i,rn=parseInt;function un(e){if("number"==typeof e)return e;if(N(e))return NaN;if(A(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=A(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=en(e);var n=nn.test(e);return n||sn.test(e)?rn(e.slice(2),n?2:8):tn.test(e)?NaN:+e}var on=1/0;function ln(e){return e?(e=un(e))===on||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function an(e){var t=ln(e),n=t%1;return t==t?n?t-n:t:0}function cn(e){return!0===(t=e)||!1===t||h(t)&&"[object Boolean]"==f(t);var t}function Dn(e){return e!=e}function Mn(e){let t=!1;if(_t(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Dn(e))return!1;t=!0}return t}function dn(e){if(!Mn(e))return 0;return ln(e)}function wn(e,t={}){let n=de(t,"useLimitSafe",null);return cn(n)||(n=!1),!!Mn(e)&&(e=dn(e),n?Number.isSafeInteger(e):"number"==typeof(s=e)&&s==an(s));var s}var yn=w.isFinite,Ln=Math.min;var In,gn=(In=Math["round"],function(e,t){if(e=un(e),(t=null==t?0:Ln(an(t),292))&&yn(e)){var n=(ae(e)+"e").split("e");return+((n=(ae(In(n[0]+"e"+(+n[1]+t)))+"e").split("e"))[0]+"e"+(+n[1]-t))}return In(e)});function mn(e,t={}){let n=de(t,"useClampSafe",null);cn(n)||(n=!1);let s=de(t,"useLimitSafe",null);cn(s)||(s=!1);let r=de(t,"returnWithStateAndMsg",null);cn(r)||(r=!1);let i=e=>r?{state:"success",msg:e}:e,u=e=>{if(r)return{state:"error",msg:e};throw new Error(e)};if(!Mn(e))return i(0);let o=null;try{e=dn(e),o=gn(e),n&&(o>Number.MAX_SAFE_INTEGER?o=Number.MAX_SAFE_INTEGER:o<Number.MIN_SAFE_INTEGER&&(o=Number.MIN_SAFE_INTEGER))}catch(e){return u(e.toString())}return s&&!Number.isSafeInteger(Number(o))?u(`v[${e}] is not a safe integer`):("0"===String(o)&&(o=0),i(o))}function Cn(e,t={}){if(!wn(e,t))return!1;return mn(e)>0}function pn(e){return"[object Array]"===Object.prototype.toString.call(e)}function fn(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function hn(e){if(Pt(e)){for(let t in e)return!1;return!0}return!1}function Nn(e){return!!pn(e)&&0===e.length}function bn(e){return!!fn(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!hn(e)||(!!function(e){return!(!Ot(e)||""!==e)}(e)||(!!Nn(e)||!!Dn(e)))))}function xn(e){return!!pn(e)&&(0!==e.length&&(1!==e.length||!bn(e[0])))}var Tn=nt(Object.getPrototypeOf,Object),An=Function.prototype,En=Object.prototype,Sn=An.toString,Zn=En.hasOwnProperty,vn=Sn.call(Object);function Xn(e){if(!h(e)||"[object Object]"!=f(e))return!1;var t=Tn(e);if(null===t)return!0;var n=Zn.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Sn.call(n)==vn}function Yn(e){if(!h(e))return!1;var t=f(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Xn(e)}function zn(e){return Yn(e)}function jn(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Gn(e){let t,n=Object.prototype.toString.call(e);if(t="[object Promise]"===n,t)return!0;if("[object Function]"!==n)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kn(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!_t(e))return s("invalid v");let r={};try{r=JSON.parse(e)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function Fn(e,t={}){if(!wn(e,t))return!1;return mn(e)>=0}function Wn(e,t){return _t(e)&&Fn(t)?0===(t=mn(t))?"":e.substring(0,t):""}function Un(e,t){if(!_t(e))return"";if(!Fn(t))return"";if(0===(t=mn(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function kn(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}let Vn=function(e){if(!jn(e))throw new Error("fn is not a function");return function(){let t=kn(),n=null,s=null;try{n=e.apply(this,arguments)}catch(e){s=e}return null!==s?t.resolve({state:"error",msg:s}):Gn(n)?n.then(e=>{t.resolve({state:"success",msg:e})}).catch(e=>{"cancelled"===de(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})}):t.resolve({state:"success",msg:n}),t}};function Qn(e,t={}){let n=de(t,"fs"),s=!1;try{n.statSync(e),s=!0}catch{s=!1}return s}function Bn(e,t={}){let n=de(t,"fs");if(!Qn(e,{fs:n}))return!1;let s=n.lstatSync(e);return!s.isFile()&&!s.isSymbolicLink()}function Hn(e){return Bn(e,{fs:t})}function Jn(e,t={}){let n=de(t,"fs");return!!Qn(e,{fs:n})&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function Pn(e){return Jn(e,{fs:t})}function Rn(e,t,n){if(!_t(e))return"";if(!_t(t))return"";if(!Ot(n))return"";return String(e).replaceAll(t,n)}function On(e,t){for(var n=-1,s=null==e?0:e.length;++n<s&&!1!==t(e[n],n,e););return e}function _n(e,t){var n;return(D(e)?On:Qt)(e,"function"==typeof(n=t)?n:Gt)}function $n(e,t,n=""){if(!xn(t))return{};let s={};return _n(t,function(t){s[t]=de(e,t,n)}),s}function qn(e,t,n=""){if(!xn(e))return[];if(!xn(t))return[];return Ht(e,e=>$n(e,t,n))}var es="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ts(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ns(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];return n.push.apply(n,arguments),new(Function.bind.apply(t,n))}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}),n}var ss={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,s="millisecond",r="second",i="minute",u="hour",o="day",l="week",a="month",c="quarter",D="year",M="date",d="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},I=function(e,t,n){var s=String(e);return!s||s.length>=t?e:""+Array(t+1-s.length).join(n)+e},g={s:I,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),s=Math.floor(n/60),r=n%60;return(t<=0?"+":"-")+I(s,2,"0")+":"+I(r,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var s=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(s,a),i=n-r<0,u=t.clone().add(s+(i?-1:1),a);return+(-(s+(n-r)/(i?r-u:u-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:a,y:D,w:l,d:o,D:M,h:u,m:i,s:r,ms:s,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},m="en",C={};C[m]=L;var p="$isDayjsObject",f=function(e){return e instanceof x||!(!e||!e[p])},h=function e(t,n,s){var r;if(!t)return m;if("string"==typeof t){var i=t.toLowerCase();C[i]&&(r=i),n&&(C[i]=n,r=i);var u=t.split("-");if(!r&&u.length>1)return e(u[0])}else{var o=t.name;C[o]=t,r=o}return!s&&r&&(m=r),r||!s&&m},N=function(e,t){if(f(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},b=g;b.l=h,b.i=f,b.w=function(e,t){return N(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function L(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[p]=!0}var I=L.prototype;return I.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var s=t.match(w);if(s){var r=s[2]-1||0,i=(s[7]||"0").substring(0,3);return n?new Date(Date.UTC(s[1],r,s[3]||1,s[4]||0,s[5]||0,s[6]||0,i)):new Date(s[1],r,s[3]||1,s[4]||0,s[5]||0,s[6]||0,i)}}return new Date(t)}(e),this.init()},I.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},I.$utils=function(){return b},I.isValid=function(){return!(this.$d.toString()===d)},I.isSame=function(e,t){var n=N(e);return this.startOf(t)<=n&&n<=this.endOf(t)},I.isAfter=function(e,t){return N(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<N(e)},I.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(e,t){var n=this,s=!!b.u(t)||t,c=b.p(e),d=function(e,t){var r=b.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?r:r.endOf(o)},w=function(e,t){return b.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,L=this.$M,I=this.$D,g="set"+(this.$u?"UTC":"");switch(c){case D:return s?d(1,0):d(31,11);case a:return s?d(1,L):d(0,L+1);case l:var m=this.$locale().weekStart||0,C=(y<m?y+7:y)-m;return d(s?I-C:I+(6-C),L);case o:case M:return w(g+"Hours",0);case u:return w(g+"Minutes",1);case i:return w(g+"Seconds",2);case r:return w(g+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var n,l=b.p(e),c="set"+(this.$u?"UTC":""),d=(n={},n[o]=c+"Date",n[M]=c+"Date",n[a]=c+"Month",n[D]=c+"FullYear",n[u]=c+"Hours",n[i]=c+"Minutes",n[r]=c+"Seconds",n[s]=c+"Milliseconds",n)[l],w=l===o?this.$D+(t-this.$W):t;if(l===a||l===D){var y=this.clone().set(M,1);y.$d[d](w),y.init(),this.$d=y.set(M,Math.min(this.$D,y.daysInMonth())).$d}else d&&this.$d[d](w);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[b.p(e)]()},I.add=function(s,c){var M,d=this;s=Number(s);var w=b.p(c),y=function(e){var t=N(d);return b.w(t.date(t.date()+Math.round(e*s)),d)};if(w===a)return this.set(a,this.$M+s);if(w===D)return this.set(D,this.$y+s);if(w===o)return y(1);if(w===l)return y(7);var L=(M={},M[i]=t,M[u]=n,M[r]=e,M)[w]||1,I=this.$d.getTime()+s*L;return b.w(I,this)},I.subtract=function(e,t){return this.add(-1*e,t)},I.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||d;var s=e||"YYYY-MM-DDTHH:mm:ssZ",r=b.z(this),i=this.$H,u=this.$m,o=this.$M,l=n.weekdays,a=n.months,c=n.meridiem,D=function(e,n,r,i){return e&&(e[n]||e(t,s))||r[n].slice(0,i)},M=function(e){return b.s(i%12||12,e,"0")},w=c||function(e,t,n){var s=e<12?"AM":"PM";return n?s.toLowerCase():s};return s.replace(y,function(e,s){return s||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return o+1;case"MM":return b.s(o+1,2,"0");case"MMM":return D(n.monthsShort,o,a,3);case"MMMM":return D(a,o);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return D(n.weekdaysMin,t.$W,l,2);case"ddd":return D(n.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(i);case"HH":return b.s(i,2,"0");case"h":return M(1);case"hh":return M(2);case"a":return w(i,u,!0);case"A":return w(i,u,!1);case"m":return String(u);case"mm":return b.s(u,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return r}return null}(e)||r.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(s,M,d){var w,y=this,L=b.p(M),I=N(s),g=(I.utcOffset()-this.utcOffset())*t,m=this-I,C=function(){return b.m(y,I)};switch(L){case D:w=C()/12;break;case a:w=C();break;case c:w=C()/3;break;case l:w=(m-g)/6048e5;break;case o:w=(m-g)/864e5;break;case u:w=m/n;break;case i:w=m/t;break;case r:w=m/e;break;default:w=m}return d?w:b.a(w)},I.daysInMonth=function(){return this.endOf(a).$D},I.$locale=function(){return C[this.$L]},I.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),s=h(e,t,!0);return s&&(n.$L=s),n},I.clone=function(){return b.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},L}(),T=x.prototype;return N.prototype=T,[["$ms",s],["$s",r],["$m",i],["$H",u],["$W",o],["$M",a],["$y",D],["$D",M]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),N.extend=function(e,t){return e.$i||(e(t,x,N),e.$i=!0),N},N.locale=h,N.isDayjs=f,N.unix=function(e){return N(1e3*e)},N.en=C[m],N.Ls=C,N.p={},N}()}(ss);var rs=ts(ss.exports);function is(){if(!jn(rs))throw new Error("invalid dayjs");return rs().format("YYYY-MM-DDTHH:mm:ssZ")}let us="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),os=us.length;function ls(e=32){let t=[];e=Cn(e)?mn(e):32;for(let n=0;n<e;n++)t[n]=us[0|Math.random()*os];return t.join("")}var as={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(a=1,l=new Array(D-1);a<D;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var M,d=c.length;for(a=0;a<d;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),D){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,s);break;case 4:c[a].fn.call(c[a].context,t,s,r);break;default:if(!l)for(M=1,l=new Array(D-1);M<D;M++)l[M-1]=arguments[M];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||r&&!o[l].once||s&&o[l].context!==s)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}(as);var cs=ts(as.exports);function Ds(){return new cs}let Ms=2147483647;async function ds(e,t={}){let n=null,s=kn();if(!jn(e))return s.reject("waitfunction需輸入函數f"),s;let r=async()=>{let t=e();return Gn(t)&&(t=await t),t};if(n=await r(),!0===n)return s.resolve(),s;let i=de(t,"attemptNum",null);Cn(i)||(i=200);let u=de(t,"timeInterval",null);Cn(u)||(u=1e3),u=Math.min(u,Ms);let o=0,l=setInterval(async()=>{o+=1,n=await r(),!0===n&&(clearInterval(l),s.resolve()),o>i&&(clearInterval(l),s.reject(`exceeded attemptNum[${i}]`))},u);return s}function ws(e){return function(e,t={}){let n=de(t,"fs");if(Bn(e,{fs:n}))return{success:"input folder is already exists: "+e};if(Qn(e,{fs:n}))return{error:"input path already exists: "+e};try{n.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function ys(e,t,n=[],s={}){let r=s.funSettle,i=s.tag||"evem",u=(t,...n)=>e.emit(t,...n);jn(s.funEmit)&&(u=s.funEmit);try{return u(t,...n)}catch(s){if(jn(r))try{r(s)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?u("error",{fun:"listener",name:t,msg:s,args:n}):console.error(`[wsemi ${i}] listener of '${String(t)}' threw:`,s)}catch(e){try{console.error(`[wsemi ${i}] listener of '${String(t)}' threw, and reporting it also threw:`,e,s)}catch(e){}}return!1}}function Ls(e,t,n=[],s={}){let r=s.ms;return Cn(r)||(r=1),r=mn(r),r=Math.min(r,Ms),setTimeout(()=>{ys(e,t,n,s)},r)}function Is(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function gs(e,t){try{let n=new WeakSet,s=[],r=JSON.stringify(e,function(e,r){for(;s.length>0&&s[s.length-1]!==this;)s.pop();if(s.length>=t)return"[Deep]";if("bigint"==typeof r)return String(r);if(null!==r&&"object"==typeof r){if(n.has(r))return"[Circular]";n.add(r),s.push(r)}return r});return"string"==typeof r?r:""}catch(e){return""}}function ms(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=Is(()=>JSON.parse(e));if(""!==t)return t}return e}function Cs(e,t){if(void 0===e)return"";if(null===e)return"null";let n=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==n)return n;let s=gs(e,t);if(""!==s&&"{}"!==s)return ms(s);let r=Is(()=>String(e));return""!==r&&"[object Object]"!==r?r:s}function ps(e,t){let n=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||n.add(e);let s=e,r=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=s.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(n.has(e))break;n.add(e)}let i=hs(e,{...t,useCause:!1,useAggregate:!1});""!==i&&r.push(i),s=e}return r.join(" <- ")}function fs(e,t){let n=null;try{n=e.errors}catch(e){return""}if(!Array.isArray(n)||0===n.length)return"";let s=[];for(let r=0;r<n.length&&r<t.levelCauseMax;r++){if(n[r]===e)continue;let i=hs(n[r],{...t,useCause:!1,useAggregate:!1});""!==i&&s.push(i)}return s.join("; ")}function hs(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let n=null,s=!1;try{n=e.message,s=!0}catch(e){s=!1}if(s&&"string"==typeof n){if(""!==n){let s=n;if(t.useCause){let n=ps(e,t);""!==n&&(s=`${s} <- ${n}`)}if(t.useAggregate){let n=fs(e,t);""!==n&&(s=`${s} [${n}]`)}return s}let s=ps(e,t);return""!==s?s:""}if(s){let e=Cs(n,t.levelJsonMax);if(""!==e)return e}let r=ps(e,t);if(""!==r)return r;if(t.useAggregate){let n=fs(e,t);if(""!==n)return n}let i=gs(e,t.levelJsonMax),u=ms(i);if(""!==u&&"{}"!==u)return u;let o=Is(()=>String(e));if(""!==o&&"[object Object]"!==o)return o;let l=Is(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==i?i:""}function Ns(e,t={}){let n=de(t,"useCause",null);cn(n)||(n=!1);let s=de(t,"useAggregate",null);cn(s)||(s=!1);let r=de(t,"levelCauseMax",null);Cn(r,{useLimitSafe:!0})||(r=8),r=mn(r);let i=de(t,"levelJsonMax",null);Cn(i,{useLimitSafe:!0})||(i=6),i=mn(i);let u=de(t,"lengthMessageMax",null);Cn(u,{useLimitSafe:!0})||(u=0),u=mn(u);let o={useCause:n,useAggregate:s,levelCauseMax:r,levelJsonMax:i,lengthMessageMax:u},l="";try{l=hs(e,o)}catch(e){return l="",l}return _t(l)?(o.lengthMessageMax>0&&l.length>o.lengthMessageMax&&(l=o.lengthMessageMax>3?l.slice(0,o.lengthMessageMax-3)+"...":l.slice(0,o.lengthMessageMax)),l):(l="",l)}function bs(e){if(!(_t(e)||Mn(e)||N(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var xs={exports:{}};var Ts,As={exports:{}},Es=ns(Object.freeze({__proto__:null,default:{}}));function Ss(){return Ts||(Ts=1,function(e){var t;e.exports=(t=t||function(e,t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==es&&es.crypto&&(n=es.crypto),!n)try{n=Es}catch(e){}var s=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),i={},u=i.lib={},o=u.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=u.WordArray=o.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,r=e.sigBytes;if(this.clamp(),s%4)for(var i=0;i<r;i++){var u=n[i>>>2]>>>24-i%4*8&255;t[s+i>>>2]|=u<<24-(s+i)%4*8}else for(var o=0;o<r;o+=4)t[s+o>>>2]=n[o>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(s());return new l.init(t,e)}}),a=i.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],r=0;r<n;r++){var i=t[r>>>2]>>>24-r%4*8&255;s.push((i>>>4).toString(16)),s.push((15&i).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new l.init(n,t/2)}},D=a.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],r=0;r<n;r++){var i=t[r>>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(i))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new l.init(n,t)}},M=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(D.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return D.parse(unescape(encodeURIComponent(e)))}},d=u.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=M.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,s=this._data,r=s.words,i=s.sigBytes,u=this.blockSize,o=i/(4*u),a=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*u,c=e.min(4*a,i);if(a){for(var D=0;D<a;D+=u)this._doProcessBlock(r,D);n=r.splice(0,a),s.sigBytes-=c}return new l.init(n,c)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});u.Hasher=d.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new w.HMAC.init(e,n).finalize(t)}}});var w=i.algo={};return i}(Math),t)}(As)),As.exports}!function(e){e.exports=Ss().enc.Utf8}(xs);var Zs=ts(xs.exports),vs={exports:{}};!function(e){var t;e.exports=(t=Ss(),function(){var e=t,n=e.lib.WordArray;function s(e,t,s){for(var r=[],i=0,u=0;u<t;u++)if(u%4){var o=s[e.charCodeAt(u-1)]<<u%4*2|s[e.charCodeAt(u)]>>>6-u%4*2;r[i>>>2]|=o<<24-i%4*8,i++}return n.create(r,i)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,s=this._map;e.clamp();for(var r=[],i=0;i<n;i+=3)for(var u=(t[i>>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o<n;o++)r.push(s.charAt(u>>>6*(3-o)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var i=0;i<n.length;i++)r[n.charCodeAt(i)]=i}var u=n.charAt(64);if(u){var o=e.indexOf(u);-1!==o&&(t=o)}return s(e,t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(vs);var Xs=ts(vs.exports);function Ys(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!_t(e))return s("invalid str");let r="";try{let t=Zs.parse(e);r=Xs.stringify(t)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function zs(e,t){return!!Pt(e)&&(!(!_t(t)&&!Mn(t))&&t in e)}function js(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Gs(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Ks(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function Fs(e){if(!(js(e)||function(e){let t=Object.prototype.toString.call(e);if("[object Blob]"===t||"[object File]"===t)return!0;try{if("undefined"!=typeof Blob&&e instanceof Blob)return!0}catch(e){}return!1}(e)||Gs(e)||Ks(e)))return null;try{if(Mn(e.byteLength))return e.byteLength}catch(e){}try{if(Mn(e.length))return e.length}catch(e){}try{if(Mn(e.size))return e.size}catch(e){}return null}let Ws=/[\t\n\f\r ]/g,Us=/^[A-Za-z0-9+/]*={0,2}$/,ks=/=+$/;function Vs(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!_t(e))return s("invalid str");let r=null;try{let t=Ys(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`str2b64: ${t.msg}`);let n=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!Ot(e))return s("invalid b64");let r=e.replace(Ws,"");if(!Us.test(r))return s("invalid b64, contains characters outside the base64 alphabet or misplaced padding");let i=r.length-r.replace(ks,"").length,u=(r.length-i)%4;if(0===i&&1===u)return s(`invalid b64, the last chunk has only 1 character[${r.length}]`);if(1===i&&3!==u)return s("invalid b64, malformed padding, 1 padding requires the last chunk to have 3 characters");if(2===i&&2!==u)return s("invalid b64, malformed padding, 2 paddings require the last chunk to have 2 characters");let o=null;try{let e=Xs.parse(r),t=e.words,n=e.sigBytes;o=new Uint8Array(n);for(let e=0;e<n;e++){let n=t[e>>>2]>>>24-e%4*8&255;o[e]=n}}catch(e){return s(e.toString())}return n?{state:"success",msg:o}:o}(t.msg,{returnWithStateAndMsg:!0});if("error"===n.state)return s(`b642u8arr: ${n.msg}`);r=n.msg}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function Qs(e,t,n=0,s=!0,r=52,i=8){return function(e,t,n,s,r,i){if(!Mn(e))return null;if(!Gs(t))return null;if(!wn(n))return null;if(!cn(s))return null;if(!wn(r))return null;if(!wn(i))return null;let u,o,l;e=dn(e);let a=8*i-r-1,c=(1<<a)-1,D=c>>1,M=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=s?i-1:0,w=s?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,u=c):(u=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-u))<1&&(u--,l*=2),(e+=u+D>=1?M/l:M*Math.pow(2,1-D))*l>=2&&(u++,l/=2),u+D>=c?(o=0,u=c):u+D>=1?(o=(e*l-1)*Math.pow(2,r),u+=D):(o=e*Math.pow(2,D-1)*Math.pow(2,r),u=0));r>=8;t[n+d]=255&o,d+=w,o/=256,r-=8);for(u=u<<r|o,a+=r;a>0;t[n+d]=255&u,d+=w,u/=256,a-=8);return t[n+d-w]|=128*y,null}(e,t,n,s,r,i)}function Bs(e){let t=0;_n(e,e=>{t+=Fs(e)});let n=new Uint8Array(t),s=0;return _n(e,e=>{let t=function(e){return js(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);n.set(t,s),s+=t.length}),n}function Hs(e,t={}){let n=[],s=new Uint8Array,r=de(t,"returnWithStateAndMsg",null);cn(r)||(r=!1);let i=e=>r?{state:"error",msg:e}:new Uint8Array;if(!(u=e,pn(u)&&u.length>=1||Rt(e)))return i("invalid data, data is not an effective object or a non-empty array");var u;let o=[],l=[];function a(e){o.push(Fs(e)),l.push(e)}try{let t=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{results:"",binarys:[]};if(!Pt(e)&&!pn(e))return s("invalid data, data is not an object or array");if(hn(e)||Nn(e))return s("invalid data, data is an empty object or empty array");let r=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,i="",u=[];try{let t=-1;i=JSON.stringify(e,function(e,n){if(Gs(n)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return u.push(n),e}if(Ks(n)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return u.push(n),e}if(js(n)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return u.push(n),e}return Yn(n)&&(n=n.toString()),_t(n)&&91===n.charCodeAt(0)&&r.test(n)?"[BlazeForPreventEscape]"+n:n})}catch(e){return s(e.toString())}return n?{state:"success",msg:{results:i,binarys:u}}:{results:i,binarys:u}}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return i(`obj2stru8arr: ${t.msg}`);let r=t.msg;a(Vs(r.results)),_n(r.binarys,e=>{a(e)});let u=o,c=Vs(JSON.stringify(u)),D=new Uint8Array(8);Qs(Fs(c),D),n.push(D),n.push(c),_n(l,e=>{n.push(e)}),s=Bs(n)}catch(e){return i(e.toString())}return r?{state:"success",msg:s}:s}function Js(e,t=0,n=!0,s=52,r=8){return function(e,t,n,s,r){if(!Gs(e))return null;if(!wn(t))return null;if(!cn(n))return null;if(!wn(s))return null;if(!wn(r))return null;let i,u,o=8*r-s-1,l=(1<<o)-1,a=l>>1,c=-7,D=n?0:r-1,M=n?1:-1,d=e[t+D];for(D+=M,i=d&(1<<-c)-1,d>>=-c,c+=o;c>0;i=256*i+e[t+D],D+=M,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=s;c>0;u=256*u+e[t+D],D+=M,c-=8);if(0===i)i=1-a;else{if(i===l)return u?NaN:1/0*(d?-1:1);u+=Math.pow(2,s),i-=a}return(d?-1:1)*u*Math.pow(2,i-s)}(e,t,n,s,r)}var Ps={exports:{}};!function(e){var t;e.exports=(t=Ss(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,s=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,s=[],r=0;r<t;r++)s[r>>>2]|=e[r]<<24-r%4*8;n.call(this,s,t)}else n.apply(this,arguments)};s.prototype=e}}(),t.lib.WordArray)}(Ps);var Rs=ts(Ps.exports);function Os(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Gs(e))return s("invalid u8a");let r="";try{let t=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Gs(e))return s("invalid u8a");let r="";try{r=Rs.create(e).toString(Xs)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`u8arr2b64: ${t.msg}`);r=function(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!_t(e))return s("invalid b64");let r="";try{r=Xs.parse(e).toString(Zs)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}(t.msg)}catch(e){return s(e.toString())}return n?{state:"success",msg:r}:r}function _s(e,t={}){let n=de(t,"returnWithStateAndMsg",null);cn(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!Rt(e))return s("invalid data");let r=null,i=null;try{r=e.results,i=e.binarys}catch(e){return s(e.toString())}if(!_t(r))return s("invalid results");if(!pn(i))return s("invalid binarys");let u=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,o=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l={};try{l=JSON.parse(r,function(e,t){if(!_t(t)||91!==t.charCodeAt(0))return t;let n=u.exec(t);if(null===n)return o.test(t)?t.slice(23):t;let s=Number(n[2]);if(s>=i.length)throw new Error(`binary index out of range[${s}], binarys.length[${i.length}]`);return((e,t,n)=>{if("Uint16Array"===e&&!Ks(n)){if(!Gs(n))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(n.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${n.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===n.byteOffset&&n.byteLength===n.buffer.byteLength?n:new Uint8Array(n);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!js(n)){if(!Gs(n))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}return n})(n[1],s,i[s])})}catch(e){return s(e.toString())}return n?{state:"success",msg:l}:l}function $s(e,t={}){let n={},s=de(t,"returnWithStateAndMsg",null);cn(s)||(s=!1);let r=e=>s?{state:"error",msg:e}:{};if(!Gs(e))return r("invalid u8a");try{let t=8,s=e.slice(0,t),i=e.slice(t,Fs(e)),u=Js(s),o=i.slice(0,u),l=i.slice(u,Fs(i)),a=Os(o,{returnWithStateAndMsg:!0});if("error"===a.state)return r(`u8arr2str: ${a.msg}`);let c=a.msg,D=function(e,t){let n=0,s=0,r=[];return _n(t,t=>{s=n+t;let i=e.slice(n,s);n=s,r.push(i)}),r}(l,JSON.parse(c)),M=Os(D.shift(),{returnWithStateAndMsg:!0});if("error"===M.state)return r(`u8arr2str: ${M.msg}`);let d=_s({results:M.msg,binarys:D},{returnWithStateAndMsg:!0});if("error"===d.state)return r(`stru8arr2obj: ${d.msg}`);n=d.msg}catch(e){return r(e.toString())}return s?{state:"success",msg:n}:n}function qs(e){return function(e,t={}){let n=de(t,"fs");if(!Qn(e,{fs:n}))return{success:"file does not exist: "+e};if(!Jn(e,{fs:n}))return{error:"input path is not a file: "+e};try{n.unlinkSync(e)}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function er(e){return _t(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let tr={permission:200,param:200,app:200,output:200,packet:200,internal:200},nr={main:{apiType:"main",api:"apiMain",authFrom:"header",statusOf:tr},ulctr:{apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:tr},slc:{apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:tr},dwgfn:{apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:tr,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{apiType:"download",api:"apiDownload",authFrom:"header",statusOf:tr,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var sr=Kt("length"),rr=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ir(e){return rr.test(e)}var ur="\\ud800-\\udfff",or="["+ur+"]",lr="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",ar="\\ud83c[\\udffb-\\udfff]",cr="[^"+ur+"]",Dr="(?:\\ud83c[\\udde6-\\uddff]){2}",Mr="[\\ud800-\\udbff][\\udc00-\\udfff]",dr="(?:"+lr+"|"+ar+")"+"?",wr="[\\ufe0e\\ufe0f]?",yr=wr+dr+("(?:\\u200d(?:"+[cr,Dr,Mr].join("|")+")"+wr+dr+")*"),Lr="(?:"+[cr+lr+"?",lr,Dr,Mr,or].join("|")+")",Ir=RegExp(ar+"(?="+ar+")|"+Lr+yr,"g");function gr(e){return ir(e)?function(e){for(var t=Ir.lastIndex=0;Ir.test(e);)++t;return t}(e):sr(e)}function mr(e){if(null==e)return 0;if(ut(e))return"string"==typeof(t=e)||!D(t)&&h(t)&&"[object String]"==f(t)?gr(e):e.length;var t,n=bt(e);return"[object Map]"==n||"[object Set]"==n?e.size:it(e).length}function Cr(e,t,n){var s=-1,r=e.length;t<0&&(t=-t>r?0:r+t),(n=n>r?r:n)<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(r);++s<r;)i[s]=e[s+t];return i}function pr(e){return e!=e}function fr(e,t,n){return t==t?function(e,t,n){for(var s=n-1,r=e.length;++s<r;)if(e[s]===t)return s;return-1}(e,t,n):function(e,t,n,s){for(var r=e.length,i=n+(s?1:-1);s?i--:++i<r;)if(t(e[i],i,e))return i;return-1}(e,pr,n)}var hr="\\ud800-\\udfff",Nr="["+hr+"]",br="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",xr="\\ud83c[\\udffb-\\udfff]",Tr="[^"+hr+"]",Ar="(?:\\ud83c[\\udde6-\\uddff]){2}",Er="[\\ud800-\\udbff][\\udc00-\\udfff]",Sr="(?:"+br+"|"+xr+")"+"?",Zr="[\\ufe0e\\ufe0f]?",vr=Zr+Sr+("(?:\\u200d(?:"+[Tr,Ar,Er].join("|")+")"+Zr+Sr+")*"),Xr="(?:"+[Tr+br+"?",br,Ar,Er,Nr].join("|")+")",Yr=RegExp(xr+"(?="+xr+")|"+Xr+vr,"g");function zr(e){return ir(e)?function(e){return e.match(Yr)||[]}(e):function(e){return e.split("")}(e)}function jr(e,t,n){if((e=ae(e))&&(n||void 0===t))return en(e);if(!e||!(t=le(t)))return e;var s=zr(e),r=zr(t),i=function(e,t){for(var n=-1,s=e.length;++n<s&&fr(t,e[n],0)>-1;);return n}(s,r),u=function(e,t){for(var n=e.length;n--&&fr(t,e[n],0)>-1;);return n}(s,r)+1;return function(e,t,n){var s=e.length;return n=void 0===n?s:n,!t&&n>=s?e:Cr(e,t,n)}(s,i,u).join("")}function Gr(e,t){if(!_t(e))return[];if(!_t(t))return[];let n=function(e,t){return _t(e)&&_t(t)?e.split(t):[]}(e,t);n=Ht(n,jr);let s=[];return _n(n,function(e){_t(e)&&s.push(e)}),s}const Kr=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function Fr(e,t={}){let n=de(t,"fs"),s=de(t,"chunkSize");if(Mn(s)||(s=67108864),s=dn(s),!Jn(e,{fs:n}))return Promise.reject("fp is not a file");let r=kn();try{let{create64:t}=await async function(){return function(e){const{exports:{mem:t,xxh32:n,xxh64:s,init32:r,update32:i,digest32:u,init64:o,update64:l,digest64:a}}=e;let c=new Uint8Array(t.buffer);function D(e,n){if(t.buffer.byteLength<e+n){const s=Math.ceil((e+n-t.buffer.byteLength)/65536);t.grow(s),c=new Uint8Array(t.buffer)}}function M(e,t,n,s,r,i){D(e);const u=new Uint8Array(e);return c.set(u),n(0,t),u.set(c.subarray(0,e)),{update(t){let n;return c.set(u),"string"==typeof t?(D(3*t.length,e),n=L.encodeInto(t,c.subarray(e)).written):(D(t.byteLength,e),c.set(t,e),n=t.byteLength),s(0,e,n),u.set(c.subarray(0,e)),this},digest:()=>(c.set(u),i(r(0)))}}function d(e){return e>>>0}const w=2n**64n-1n;function y(e){return e&w}const L=new TextEncoder;function I(e,t=0){return D(3*e.length,0),d(n(0,L.encodeInto(e,c).written,t))}function g(e,t=0n){return D(3*e.length,0),y(s(0,L.encodeInto(e,c).written,t))}return{h32:I,h32ToString:(e,t=0)=>I(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(D(e.byteLength,0),c.set(e),d(n(0,e.byteLength,t))),create32:(e=0)=>M(48,e,r,i,u,d),h64:g,h64ToString:(e,t=0n)=>g(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(D(e.byteLength,0),c.set(e),y(s(0,e.byteLength,t))),create64:(e=0n)=>M(88,e,o,l,a,y)}}((await WebAssembly.instantiate(Kr)).instance)}(),i=t(),u=n.createReadStream(e,{highWaterMark:s});u.on("data",e=>{i.update(e)}),u.on("end",()=>{let e=i.digest().toString(16).padStart(16,"0");r.resolve(e)}),u.on("error",r.reject)}catch(e){r.reject(e.toString())}return r}var Wr={exports:{}};!function(e){var t,n;e.exports=(t=u,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(a=1,l=new Array(D-1);a<D;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var M,d=c.length;for(a=0;a<d;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),D){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,s);break;case 4:c[a].fn.call(c[a].context,t,s,r);break;default:if(!l)for(M=1,l=new Array(D-1);M<D;M++)l[M-1]=arguments[M];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||r&&!o[l].once||s&&o[l].context!==s)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(r="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LGk9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PWl8fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUscz1jLmhhc093blByb3BlcnR5LGY9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIix2PWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDp2JiZ2IGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1zLmNhbGwodCxsKSxyPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgaT1mLmNhbGwodCk7cmV0dXJuIG4mJihlP3RbbF09cjpkZWxldGUgdFtsXSksaX0odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZnKHQpPT1kfXZhciBTPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGo9L15cdyokLztmdW5jdGlvbiB3KHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfXZhciBtPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLCQ9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIHg9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLEY9T2JqZWN0LnByb3RvdHlwZSxMPXoudG9TdHJpbmcsUD1GLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitMLmNhbGwoUCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighdyh0KXx8KGU9dCwkJiYkIGluIGUpKXJldHVybiExO3ZhciBlLHI9ZnVuY3Rpb24odCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9Zyh0KTtyZXR1cm4gZT09T3x8ZT09RXx8ZT09bXx8ZT09Tn0odCk/VDpJO3JldHVybiByLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB4LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIE0ocik/cjp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxlKXtmb3IodmFyIHIsbixpPXQubGVuZ3RoO2ktLTspaWYoKHI9dFtpXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gaTtyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gQy5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PWVbdF06Ry5jYWxsKGUsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLHJbdF09VSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgWD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEIodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Qi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxCLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPXEoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6WC5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LEIucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9cShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LEIucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxCLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49cShyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfTt2YXIgRD1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxlKXt2YXIgcixuLGk9dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9pWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOmkubWFwfWZ1bmN0aW9uIEoodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoRHx8Qiksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPUgodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxpPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sbz1yLmNhY2hlO2lmKG8uaGFzKGkpKXJldHVybiBvLmdldChpKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9by5zZXQoaSx1KXx8byx1fTtyZXR1cm4gci5jYWNoZT1uZXcoUS5DYWNoZXx8Sikscn1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLGV0PS9cXChcXCk/L2cscnQ9KFY9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxyLG4saSl7ZS5wdXNoKG4/aS5yZXBsYWNlKGV0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9cnQ7dmFyIGl0PTEvMCxvdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1vdD9vdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkobik7KytyPG47KWlbcl09ZSh0W3JdLHIsdCk7cmV0dXJuIGl9KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihuKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFfKHQpKXx8ai50ZXN0KHQpfHwhUy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06bnQoY3QodCkpfXZhciBmdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1mdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbbHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIHB0KHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7cmV0dXJuISFwdCh0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIHZ0KCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgZSBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIFN0KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFidCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghZHQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIWd0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIV90KHQpKSkpKX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hKCFkdCh0KXx8IiI9PT10KX12YXIgd3Q9L1xzLzt2YXIgbXQ9L15ccysvO2Z1bmN0aW9uIE90KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZ3dC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKG10LCIiKTp0fXZhciBFdD1OYU4sTnQ9L15bLStdMHhbMC05YS1mXSskL2ksQXQ9L14wYlswMV0rJC9pLFJ0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKF8odCkpcmV0dXJuIEV0O2lmKHcodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXcoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PU90KHQpO3ZhciByPUF0LnRlc3QodCk7cmV0dXJuIHJ8fFJ0LnRlc3QodCk/JHQodC5zbGljZSgyKSxyPzI6OCk6TnQudGVzdCh0KT9FdDordH12YXIgSXQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1JdHx8dD09PS1JdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBMdCh0KXt2YXIgZT1GdCh0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIFB0PSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBUdCh0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGIoZSkmJmcoZSk9PVB0O3ZhciBlfWZ1bmN0aW9uIE10KHQpe2xldCBlPSExO2lmKGp0KHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKF90KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24ga3QodCl7aWYoIU10KHQpKXJldHVybiAwO3JldHVybiBGdCh0KX1mdW5jdGlvbiBVdCh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIFR0KHIpfHwocj0hMSksISFNdCh0KSYmKHQ9a3QodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PUx0KG4pKTt2YXIgbn12YXIgQ3Q9dS5pc0Zpbml0ZSxHdD1NYXRoLm1pbjt2YXIgV3Q9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXh0KHQpLChyPW51bGw9PXI/MDpHdChMdChyKSwyOTIpKSYmQ3QodCkpe3ZhciBuPShjdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oY3QoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIikscXQ9V3Q7ZnVuY3Rpb24gWHQodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO1R0KHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtUdChuKXx8KG49ITEpO2xldCBpPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7VHQoaSl8fChpPSExKTtsZXQgbz10PT5pP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYoaSlyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighTXQodCkpcmV0dXJuIG8oMCk7bGV0IGE9bnVsbDt0cnl7dD1rdCh0KSxhPXF0KHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLG8oYSkpfWZ1bmN0aW9uIEJ0KHQsZT17fSl7aWYoIVV0KHQsZSkpcmV0dXJuITE7cmV0dXJuIFh0KHQpPj0wfWZ1bmN0aW9uIER0KHQsZSl7aWYoIWp0KHQpKXJldHVybiIiO2lmKCFCdChlKSlyZXR1cm4iIjtpZigwPT09KGU9WHQoZSkpKXJldHVybiIiO2xldCByPXQubGVuZ3RoLWU7cmV0dXJuIHI8MCYmKHI9MCksdC5zdWJzdHJpbmcocixyK2UpfWZ1bmN0aW9uIEh0KHQsZSl7cmV0dXJuIGp0KHQpJiZCdChlKT8wPT09KGU9WHQoZSkpP3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4ganQodCkmJkJ0KGUpPzA9PT0oZT1YdChlKSk/IiI6dC5zdWJzdHJpbmcoMCxlKToiIn0odCx0Lmxlbmd0aC1lKToiIn1mdW5jdGlvbiBKdCh0KXtpZighanQodCkpcmV0dXJue3BhdGg6IiIsaXNSb290OiExfTtmb3IoO3QuaW5kZXhPZigiXFxcXCIpPj0wOyl0PXQucmVwbGFjZSgiXFxcXCIsIlxcIik7Zm9yKDt0LmluZGV4T2YoIi8vIik+PTA7KXQ9dC5yZXBsYWNlKCIvLyIsIi8iKTtpZigiOiI9PT1EdCh0LDEpKXJldHVybntwYXRoOmAke3R9XFxgLGlzUm9vdDohMH07aWYoIlxcIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIjoiPT09RHQoZSwxKT97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fWlmKCIvIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIDA9PT1lLmxlbmd0aD97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fXJldHVybntwYXRoOnQsaXNSb290OiExfX1mdW5jdGlvbiBLdCh0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1lLnBhdGg7dHJ5e3I9ci5zcGxpdCgiXFwiKS5wb3AoKS5zcGxpdCgiLyIpLnBvcCgpfWNhdGNoKHQpe31yZXR1cm4gcn1mdW5jdGlvbiBRdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBWdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZigheXQodCx7ZnM6cn0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtyLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIFl0KHQsZSxuPXt9KXtsZXQgaT0iIixvPWh0KG4sImZzIik7aWYoIWd0KHU9dCl8fDA9PT11Lmxlbmd0aHx8MT09PXUubGVuZ3RoJiZTdCh1WzBdKSl0aHJvdyBuZXcgRXJyb3IoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgdTtsZXQgYT1mdW5jdGlvbih0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1LdCh0PWUucGF0aCk7aWYoIWp0KHIpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxyLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KGUpLGM9aHQobiwiZm5PdXQiLCIiKTtqdChjKXx8KGM9S3QoZSkpLFF0KGEse2ZzOm99KXx8ZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1odChlLCJmcyIpO2lmKFF0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOnJ9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e3IubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOm99KTtsZXQgcz12dCgpO3MuY2F0Y2goKCgpPT57fSkpO2xldCBmPW51bGwsbD1udWxsLGg9dnQoKTtoLmNhdGNoKCgoKT0+e30pKTt0cnl7Zj1vLmNyZWF0ZVdyaXRlU3RyZWFtKGUpLGYub24oImVycm9yIiwodD0+e2w9dCxpPXQubWVzc2FnZSxoLnJlamVjdCh0KSxzLnJlamVjdChpKX0pKSxmLm9uKCJmaW5pc2giLCgoKT0+e2xldCB0PXtmaWxlbmFtZTpjLHBhdGg6ZX07cy5yZXNvbHZlKHQpfSkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtpZihudWxsIT09bCl0aHJvdyBsO2xldCBuPXRbZV07aWYoIXl0KG4se2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO2xldCBpPWFzeW5jKCk9PntsZXQgdD1vLmNyZWF0ZVJlYWRTdHJlYW0obiksZT1udWxsO2ZvciBhd2FpdChsZXQgbiBvZiB0KXtpZihudWxsIT09bCl0aHJvdyBsO2xldCB0PSExLGk9bmV3IFByb21pc2UoKChlLHIpPT57dD0hZi53cml0ZShuLCh0PT57dD9yKHQpOmUoKX0pKX0pKTtpLmNhdGNoKCgoKT0+e30pKSxlPWksdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtyLm9uY2UoZiwiZHJhaW4iKSxoXSl9aWYobnVsbCE9PWUmJmF3YWl0IGUsbnVsbCE9PWwpdGhyb3cgbDtWdChuLHtmczpvfSl9O2F3YWl0IGkoKX1mLmVuZCgpfWNhdGNoKHQpe2k9aHQodCwibWVzc2FnZSIsU3RyaW5nKHQpKTt0cnl7Zi5kZXN0cm95KCl9Y2F0Y2godCl7fXMucmVqZWN0KGkpfXJldHVybiBzfWNvbnN0IFp0PW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHRlKHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPWh0KGUsImNodW5rU2l6ZSIpO2lmKE10KG4pfHwobj02NzEwODg2NCksbj1rdChuKSwheXQodCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBpPXZ0KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOmksdXBkYXRlMzI6byxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6c319PXQ7bGV0IGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4saSxvKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIGYuc2V0KHUpLHIoMCxlKSx1LnNldChmLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIGYuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Zy5lbmNvZGVJbnRvKGUsZi5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLGYuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KGYuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4oZi5zZXQodSksbyhpKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiB2KHQpe3JldHVybiB0Jnl9Y29uc3QgZz1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LGU9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxnLmVuY29kZUludG8odCxmKS53cml0dGVuLGUpKX1mdW5jdGlvbiBTKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHYobigwLGcuZW5jb2RlSW50byh0LGYpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWIpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLGYuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsaSxvLHUscCksaDY0OlMsaDY0VG9TdHJpbmc6KHQsZT1kKT0+Uyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCksZi5zZXQodCksdihuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMscyx2KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShadCkpLmluc3RhbmNlKX0oKSxvPWUoKSx1PXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTt1Lm9uKCJkYXRhIiwodD0+e28udXBkYXRlKHQpfSkpLHUub24oImVuZCIsKCgpPT57bGV0IHQ9by5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtpLnJlc29sdmUodCl9KSksdS5vbigiZXJyb3IiLGkucmVqZWN0KX1jYXRjaCh0KXtpLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBpfWxldCBtZXJnZVNsaWNlcz1hc3luYyhyLG4saSxvKT0+e2xldCB1PVtdO2ZvcihsZXQgbz0wO288bjtvKyspe2xldCBuPXQucmVzb2x2ZShpLGAke3J9XyR7b31gKTtpZigheXQobix7ZnM6ZX0pKXRocm93IG5ldyBFcnJvcihgZnBJblske259XSBpcyBub3QgYSBmaWxlYCk7dS5wdXNoKG4pfWxldCBhPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQscixuPXt9KXtyZXR1cm4gWXQodCxyLHtmczplLC4uLm59KX0odSxvKTtyZXR1cm57Li4uYSxoYXNoOmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIHRlKHQse2ZzOmUsLi4ucn0pfShvKX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuatpOS6jOebo+iBveacg+mYu+atok5vZGXpoJDoqK3nmoR3b3JrZXLntYLmraLooYzngrosIOS9v3dvcmtlcuW0qea9sOW+jOS7jeWtmOa0u+epuui9iSwKICAgIC8v5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOS6i+S7tiwgcGVuZGluZyBwcm9taXNl5rC45LmF5oe4572uLCDkuJTlrZjmtLvmrq3lsY13b3JrZXLmnIPku6Tlrr/kuLvnqIvluo/nhKHms5XpgIDlh7o7CiAgICAvL+enu+mZpOW+jHdvcmtlcuS+nemgkOioreihjOeCuuatu+S6oSwgZXJyb3Lkuovku7blgrPoh7PlpJblsaQsIOeUseWkluWxpOaVtOaJuXJlamVjdCBwZW5kaW5nCiAgICAvLyBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAvLyAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIC8vIH0pCiAgICAvLyBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICAvLyB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQoKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(r,"base64").toString("utf8"));var r;function i(){let s=new n,r={},i=!1,u=!1;function o(e){for(let t in r){let n=r[t];delete r[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){i||(i=!0,o(e))}let a=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!a)return l("invalid worker"),null;function c(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(i)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let r=0;r<e;r++)t[r]=n[0|Math.random()*s];return t.join("")}();r[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return a.postMessage(n),s.once(t,n=>{delete r[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return a.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),a.on("error",l),a.on("exit",e=>{u||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};a.postMessage(e)}([...arguments]),s.main=c,s.main=c,s.terminate=function(){a?(u=!0,a.terminate(),a=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(Wr);var Ur=ts(Wr.exports);let kr=new Set,Vr=new Map,Qr=(t,n,s="")=>{let r=e.resolve(n,t);return{fp:r,fpm:`${r}.merging`,fpd:`${r}.done`,fpe:`${r}.error`,fpr:_t(s)?`${r}.q${s}.ro`:""}},Br=e=>{let t=qs(e);if(Pn(e))throw new Error(`can not remove ${e}: ${Ns(de(t,"error"))}`)},Hr=async(e,n)=>{kr.add(n.fp);try{let s=await function(e,n={}){return Fr(e,{fs:t,...n})}(n.fp);if(s===e)return t.writeFileSync(n.fpd,"","utf8"),{state:"done"};let r=`merged file[${n.fp}] is incomplete: hash[${s}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(n.fpe,r,"utf8")}catch(e){console.log(`can not write ${n.fpe}`,e)}return{state:"mismatch",reason:r}}catch(e){return{state:"error",reason:`verify merged file[${n.fp}] error: ${Ns(e)}`}}finally{kr.delete(n.fp)}},Jr=async(e,n,s)=>{let r=`${function(){if(!jn(rs))throw new Error("invalid dayjs");return rs().format("YYYYMMDDHHmmss")}()}|${ls(6)}|${e}`,i=Qr(e,s);if(kr.has(i.fp))return r;let u=Pn(i.fpe),o=Pn(i.fp);if(!u&&o){let t=await Hr(e,i);if("done"===t.state)return r;if("error"===t.state)throw new Error(t.reason)}return Br(i.fpd),Br(i.fpe),kr.add(i.fp),setTimeout(()=>{Ur(e,n,s,i.fpm).then(n=>{let s=de(n,"hash","");if(s!==e)throw new Error(`merged file hash[${s}] != fileHash[${e}]`);t.renameSync(i.fpm,i.fp),t.writeFileSync(i.fpd,"","utf8")}).catch(e=>{console.log(e),qs(i.fpm);let n=Ns(e);try{t.writeFileSync(i.fpe,n,"utf8")}catch(e){console.log(`can not write ${i.fpe}`,e)}}).finally(()=>{kr.delete(i.fp)})},1),r},Pr=async(e,n,s={})=>{let r=de(s,"funConsume"),i=de(s,"funLog");jn(i)||(i=e=>{console.log(e)});let u=Gr(e,"|"),o=de(u,0,""),l=de(u,1,""),a=de(u,2,"");if(3!==mr(u)||!er(o)||!er(l)||!er(a)){let t=`invalid queueId[${Ns(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let c=Qr(a,n,`${o}${l}`);if(Pn(c.fpr)){let e=((e,n)=>{try{let s=$s(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==de(s,"state"))return n(`stored result ${e.fpr} is corrupted, treat as not stored: ${de(s,"msg","unknown error")}`),{ok:!1};let r=s.msg;return Pt(r)&&zs(r,"ro")?{ok:!0,ro:r.ro}:(n(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return n(`can not read stored result ${e.fpr}: ${Ns(t)}`),{ok:!1}}})(c,i);if(e.ok)return{state:"success",msg:e.ro,path:c.fp,from:"stored"}}if(Pn(c.fpe)){let e="";try{e=t.readFileSync(c.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:c.fp}}if(kr.has(c.fp))return{state:"merging",msg:"",path:c.fp};let D=Pn(c.fp),M=Pn(c.fpd);if(D&&!M){let e=await Hr(a,c);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:c.fp};M=!0}if(D&&M){if(!jn(r))return{state:"success",msg:"",path:c.fp};let n=await((e,n,s,r)=>{let i=Vr.get(e);return i||(i=Promise.resolve().then(()=>s(n.fp)).then(e=>{e=void 0===e?null:e;try{let s=Hs({ro:e},{returnWithStateAndMsg:!0});if("success"!==de(s,"state"))return e;t.writeFileSync(n.fpr,Buffer.from(s.msg));let r=$s(s.msg,{returnWithStateAndMsg:!0});if("success"===de(r,"state")&&Pt(r.msg)&&zs(r.msg,"ro"))return r.msg.ro}catch(e){r(`can not store consumed result to ${n.fpr}: ${Ns(e)}`)}return e}).finally(()=>{Vr.delete(e)}),Vr.set(e,i),i)})(e,c,r,i);return{state:"success",msg:n,path:c.fp,from:"consumed"}}return!D&&M?{state:"error",msg:"merged file already consumed",reason:`merged file[${c.fp}] no longer exists and no stored result for queueId[${e}]`,path:c.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${a}] (never pushed, or artifacts removed)`,path:c.fp}};var Rr={exports:{}};!function(e){var t,n;e.exports=(t=u,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(a=1,l=new Array(D-1);a<D;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var M,d=c.length;for(a=0;a<d;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),D){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,s);break;case 4:c[a].fn.call(c[a].context,t,s,r);break;default:if(!l)for(M=1,l=new Array(D-1);M<D;M++)l[M-1]=arguments[M];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||r&&!o[l].once||s&&o[l].context!==s)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(r="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRj05MDA3MTk5MjU0NzQwOTkxLE49L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmTi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLEZ0PSJbb2JqZWN0IERhdGFWaWV3XSIsTnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1GdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBOdDpyZXR1cm4gRnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLEZlPSJbb2JqZWN0IFJlZ0V4cF0iLE5lPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxwPWM9PWY7aWYocCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBGZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBOZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgaD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9LZShzLGYsUWV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gRnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIE5yKHQsZSl7cmV0dXJuKE8odCk/cmU6RnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVFyKHQpKXJldHVybltdO2lmKCFRcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBRcih0KSYmUXIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPU5yKHIsS3IpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtRcih0KSYmbi5wdXNoKHQpfSkpLG59dmFyIFpyPU5hTix0bj0vXlstK10weFswLTlhLWZdKyQvaSxlbj0vXjBiWzAxXSskL2kscm49L14wb1swLTddKyQvaSxubj1wYXJzZUludDtmdW5jdGlvbiBvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIFpyO2lmKEoodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUooZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PSRyKHQpO3ZhciByPWVuLnRlc3QodCk7cmV0dXJuIHJ8fHJuLnRlc3QodCk/bm4odC5zbGljZSgyKSxyPzI6OCk6dG4udGVzdCh0KT9acjordH12YXIgdW49MS8wLGFuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBjbih0KXtyZXR1cm4gdD8odD1vbih0KSk9PT11bnx8dD09PS11bj8odDwwPy0xOjEpKmFuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBmbih0KXt2YXIgZT1jbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIHNuPSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBsbih0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGcoZSkmJmQoZSk9PXNuO3ZhciBlfWZ1bmN0aW9uIHBuKHQpe2xldCBlPSExO2lmKFFyKHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSh0KSlyZXR1cm4hMTtlPSEwfXJldHVybiBlfWZ1bmN0aW9uIGhuKHQpe2lmKCFwbih0KSlyZXR1cm4gMDtyZXR1cm4gY24odCl9ZnVuY3Rpb24gdm4odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3JldHVybiBsbihyKXx8KHI9ITEpLCEhcG4odCkmJih0PWhuKHQpLHI/TnVtYmVyLmlzU2FmZUludGVnZXIodCk6Im51bWJlciI9PXR5cGVvZihuPXQpJiZuPT1mbihuKSk7dmFyIG59dmFyIHluPWEuaXNGaW5pdGUsYm49TWF0aC5taW47dmFyIGRuPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGhbdF07cmV0dXJuIGZ1bmN0aW9uKHQscil7aWYodD1vbih0KSwocj1udWxsPT1yPzA6Ym4oZm4ociksMjkyKSkmJnluKHQpKXt2YXIgbj0oZHIodCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKG49KGRyKGUoblswXSsiZSIrKCtuWzFdK3IpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtuWzFdLXIpKX1yZXR1cm4gZSh0KX19KCJyb3VuZCIpLGduPWRuO2Z1bmN0aW9uIF9uKHQsZT17fSl7bGV0IHI9d3IoZSwidXNlQ2xhbXBTYWZlIixudWxsKTtsbihyKXx8KHI9ITEpO2xldCBuPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7bG4obil8fChuPSExKTtsZXQgbz13cihlLCJyZXR1cm5XaXRoU3RhdGVBbmRNc2ciLG51bGwpO2xuKG8pfHwobz0hMSk7bGV0IHU9dD0+bz97c3RhdGU6InN1Y2Nlc3MiLG1zZzp0fTp0LGk9dD0+e2lmKG8pcmV0dXJue3N0YXRlOiJlcnJvciIsbXNnOnR9O3Rocm93IG5ldyBFcnJvcih0KX07aWYoIXBuKHQpKXJldHVybiB1KDApO2xldCBhPW51bGw7dHJ5e3Q9aG4odCksYT1nbih0KSxyJiYoYT5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUj9hPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSOmE8TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVImJihhPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSl9Y2F0Y2godCl7cmV0dXJuIGkodC50b1N0cmluZygpKX1yZXR1cm4gbiYmIU51bWJlci5pc1NhZmVJbnRlZ2VyKE51bWJlcihhKSk/aShgdlske3R9XSBpcyBub3QgYSBzYWZlIGludGVnZXJgKTooIjAiPT09U3RyaW5nKGEpJiYoYT0wKSx1KGEpKX1mdW5jdGlvbiBqbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT49MH1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59ZnVuY3Rpb24gd24odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO3JldHVybiEhbW4odCx7ZnM6cn0pJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBTbih0KXtyZXR1cm4gd24odCx7ZnM6ZX0pfWZ1bmN0aW9uIE9uKHQsZSl7dmFyIHI9W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbixvKXtlKHQsbixvKSYmci5wdXNoKHQpfSkpLHJ9ZnVuY3Rpb24gQW4odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO2lmKCFtbih0LHtmczpyfSkpcmV0dXJuITE7bGV0IG49ci5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gem4odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIUFuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmZnVuY3Rpb24odCxlPXt9KXtyZXR1cm4hIXZuKHQsZSkmJl9uKHQpPjB9KGUpJiYoZT1fbihlKSk8MSYmKGU9MSksZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gQW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9ZnVuY3Rpb24gRW4odCxlPTEscj17fSl7bGV0IG49d3IociwicGF0aCIpLG89d3IociwiZnMiKTtpZighQW4odCx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZmRbJHt0fV0gaXMgbm90IGEgZm9sZGVyYCk7bGV0IHU9W107dmFyIGksYTtyZXR1cm4gdT16bih0LGUse3BhdGg6bixmczpvfSksYT17aXNGb2xkZXI6ITF9LHU9KE8oaT11KT9UZTpPbikoaSx4cihhKSksdT1Ocih1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKHBuKG4pfHwobj02NzEwODg2NCksbj1obihuKSwhd24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQucmVzb2x2ZSh1LG8pLGE9ITE7aWYoYT1TbihpKSwham4ocix7dXNlTGltaXRTYWZlOiEwfSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19cj1fbihyKTtsZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gRm4odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxTbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBFbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLnN0YXJ0c1dpdGgoYCR7b31fYCksdT0hMTt0cnl7bGV0IHI9ZS5zdGF0U3luYyh0LnBhdGgpO3U9ci5zaXplPjAmJnIuc2l6ZTw9bn1jYXRjaChlKXtjb25zb2xlLmxvZygiY2hlY2sgZWFjaCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsdC5wYXRoLGUpfWlmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWpuKHIpKXJldHVybiB2b2lkIGNvbnNvbGUubG9nKGBza2lwIGZpbGVbJHt0Lm5hbWV9XTogY2FuIG5vdCBwYXJzZSBjaHVuayBpbmRleGApO3I9X24ocikscy5wdXNoKHIpfXZhciBpLGF9KSl9bGV0IGw9ZWUocyk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOmwsc2xrczpzfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewoKICAgIC8v5YOF5LuldW5jYXVnaHRFeGNlcHRpb25Nb25pdG9y6KiY6YyELCDkuI3lj6/oqLvlhop1bmNhdWdodEV4Y2VwdGlvbuiIh3VuaGFuZGxlZFJlamVjdGlvbuebo+iBvToKICAgIC8v5pa8d29ya2Vy5YWn6Ki75YaK5q2k5LqM55uj6IG95pyD6Zi75q2iTm9kZemgkOioreeahHdvcmtlcue1guatouihjOeCuiwg5L2/d29ya2Vy5bSp5r2w5b6M5LuN5a2Y5rS756m66L2JLAogICAgLy/lpJblsaTmlLbkuI3liLBlcnJvci9leGl05LqL5Lu2LCBwZW5kaW5nIHByb21pc2XmsLjkuYXmh7jnva4sIOS4lOWtmOa0u+aureWxjXdvcmtlcuacg+S7pOWuv+S4u+eoi+W6j+eEoeazlemAgOWHujsKICAgIC8v56e76Zmk5b6Md29ya2Vy5L6d6aCQ6Kit6KGM54K65q275LqhLCBlcnJvcuS6i+S7tuWCs+iHs+WkluWxpCwg55Sx5aSW5bGk5pW05om5cmVqZWN0IHBlbmRpbmcKICAgIC8vIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIC8vIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIC8vIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCgp9CmNhdGNoKGVycil7fQoK",Buffer.from(r,"base64").toString("utf8"));var r;function i(){let s=new n,r={},i=!1,u=!1;function o(e){for(let t in r){let n=r[t];delete r[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){i||(i=!0,o(e))}let a=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!a)return l("invalid worker"),null;function c(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(i)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let r=0;r<e;r++)t[r]=n[0|Math.random()*s];return t.join("")}();r[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return a.postMessage(n),s.once(t,n=>{delete r[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return a.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),a.on("error",l),a.on("exit",e=>{u||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};a.postMessage(e)}([...arguments]),s.main=c,s.main=c,s.terminate=function(){a?(u=!0,a.terminate(),a=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(Rr);var Or=ts(Rr.exports),_r={exports:{}};!function(e){var t,n;e.exports=(t=u,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,s,i,u){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,i||e,u),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,i=s.length,u=new Array(i);r<i;r++)u[r]=s[r].fn;return u},o.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,i,u){var o=n?n+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],D=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),D){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,i),!0;case 6:return c.fn.call(c.context,t,s,r,i,u),!0}for(a=1,l=new Array(D-1);a<D;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var M,d=c.length;for(a=0;a<d;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),D){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,s);break;case 4:c[a].fn.call(c[a].context,t,s,r);break;default:if(!l)for(M=1,l=new Array(D-1);M<D;M++)l[M-1]=arguments[M];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,s,r){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||r&&!o[l].once||s&&o[l].context!==s)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&u(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(r="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmdih0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gRSh0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT12KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBOLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oTj0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrTjoiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBCKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihFKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gQihyKT9yOnZvaWQgMH12YXIgVT1rKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPWsoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB5dD1PYmplY3QucHJvdG90eXBlO3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9dnQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx5dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1rKGksIkRhdGFWaWV3IiksanQ9ayhpLCJQcm9taXNlIiksU3Q9ayhpLCJTZXQiKSx3dD1rKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD12OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1FdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gTnQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFFKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIgQnQsa3Q9KEJ0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W0J0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTprdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnYoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB5ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gdmUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ2KGUpPT15ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZGUodCl7bGV0IGU9ITE7aWYoYmUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gZ2UodCl7aWYoIWRlKHQpKXJldHVybiAwO3JldHVybiBwZSh0KX1mdW5jdGlvbiBfZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIHZlKHIpfHwocj0hMSksISFkZSh0KSYmKHQ9Z2UodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWhlKG4pKTt2YXIgbn12YXIgamU9aS5pc0Zpbml0ZSxTZT1NYXRoLm1pbjt2YXIgd2U9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PWZlKHQpLChyPW51bGw9PXI/MDpTZShoZShyKSwyOTIpKSYmamUodCkpe3ZhciBuPShmdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZnQoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksbWU9d2U7ZnVuY3Rpb24gT2UodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO3ZlKHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTt2ZShuKXx8KG49ITEpO2xldCBvPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7dmUobyl8fChvPSExKTtsZXQgaT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighZGUodCkpcmV0dXJuIGkoMCk7bGV0IGE9bnVsbDt0cnl7dD1nZSh0KSxhPW1lKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLGkoYSkpfWZ1bmN0aW9uIEFlKHQsZT17fSl7aWYoIV9lKHQsZSkpcmV0dXJuITE7cmV0dXJuIE9lKHQpPj0wfWNvbnN0IEVlPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIE5lKHQsZT17fSl7aWYoIWZ1bmN0aW9uKHQpe2xldCBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KTtpZigiW29iamVjdCBCbG9iXSI9PT1lfHwiW29iamVjdCBGaWxlXSI9PT1lKXJldHVybiEwO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJnQgaW5zdGFuY2VvZiBCbG9iKXJldHVybiEwfWNhdGNoKHQpe31yZXR1cm4hMX0odCkmJihyPXQsIltvYmplY3QgRmlsZV0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpKSlyZXR1cm4gY29uc29sZS5sb2coImlucCIsdCksUHJvbWlzZS5yZWplY3QoImlucCBpcyBub3QgYSBCbG9iIG9yIEZpbGUiKTt2YXIgcjtsZXQgbj1odChlLCJjaHVua1NpemUiKTtkZShuKXx8KG49NjcxMDg4NjQpLG49Z2Uobik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEVlKSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZighKGJlKGk9bikmJmkubGVuZ3RoPD0xMjgmJi9eW0EtWmEtejAtOV0rJC8udGVzdChpKSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlSGFzaCJ9fXZhciBpO2lmKCFBcnJheS5pc0FycmF5KHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNsaWNlSGFzaHMifX1pZigwPT09dGUocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgdT1gJHtufV9gLGE9ZS5yZWFkZGlyU3luYyhvKSxjPW5ldyBTZXQ7Zm9yKGxldCB0IG9mIGEpe2lmKCF0LnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5zbGljZSh1Lmxlbmd0aCk7QWUoZSkmJlN0cmluZyhPZShlKSk9PT1lJiZjLmFkZChPZShlKSl9bGV0IGY9W10scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgdT1yW2ldLGE9aHQodSwiaSIpO2lmKCFBZShhKSljb250aW51ZTtpZihhPU9lKGEpLCFjLmhhcyhhKXx8cy5oYXMoYSkpY29udGludWU7cy5hZGQoYSk7bGV0IGw9dC5yZXNvbHZlKG8sYCR7bn1fJHthfWApLHA9IiI7dHJ5e3A9YXdhaXQgTmUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGwpXSkpfWNhdGNoKHQpe2NvbnRpbnVlfWh0KHUsImgiKT09PXAmJmYucHVzaChhKX1yZXR1cm57c2xrczpmfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1NsaWNlc0hhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tTbGljZXNIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CgogICAgLy/lg4Xku6V1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3LoqJjpjIQsIOS4jeWPr+iou+WGinVuY2F1Z2h0RXhjZXB0aW9u6IiHdW5oYW5kbGVkUmVqZWN0aW9u55uj6IG9OgogICAgLy/mlrx3b3JrZXLlhafoqLvlhormraTkuoznm6Pogb3mnIPpmLvmraJOb2Rl6aCQ6Kit55qEd29ya2Vy57WC5q2i6KGM54K6LCDkvb93b3JrZXLltKnmvbDlvozku43lrZjmtLvnqbrovYksCiAgICAvL+WkluWxpOaUtuS4jeWIsGVycm9yL2V4aXTkuovku7YsIHBlbmRpbmcgcHJvbWlzZeawuOS5heaHuOe9riwg5LiU5a2Y5rS75q6t5bGNd29ya2Vy5pyD5Luk5a6/5Li756iL5bqP54Sh5rOV6YCA5Ye6OwogICAgLy/np7vpmaTlvox3b3JrZXLkvp3poJDoqK3ooYzngrrmrbvkuqEsIGVycm9y5LqL5Lu25YKz6Iez5aSW5bGkLCDnlLHlpJblsaTmlbTmiblyZWplY3QgcGVuZGluZwogICAgLy8gcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICAvLyB9KQogICAgLy8gcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAvLyAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(r,"base64").toString("utf8"));var r;function i(){let s=new n,r={},i=!1,u=!1;function o(e){for(let t in r){let n=r[t];delete r[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){i||(i=!0,o(e))}let a=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!a)return l("invalid worker"),null;function c(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(i)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let r=0;r<e;r++)t[r]=n[0|Math.random()*s];return t.join("")}();r[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return a.postMessage(n),s.once(t,n=>{delete r[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return a.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),a.on("error",l),a.on("exit",e=>{u||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};a.postMessage(e)}([...arguments]),s.main=c,s.main=c,s.terminate=function(){a?(u=!0,a.terminate(),a=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(_r);var $r=ts(_r.exports);function qr(e,t){try{return{ok:!0,value:t()}}catch(t){let n=Ns(t);return{ok:!1,stage:e,cause:_t(n)?n:"unknown error"}}}function ei(e,t){try{return i.validateHeaderValue(e,t),!0}catch(e){return!1}}function ti(e,t,n,s={}){let i=!0===de(s,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let u=qr("identify streamRead",()=>e instanceof r.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!u.ok)return{error:"invalid streamRead",reason:`${u.stage} failed: ${u.cause}`};if(u.value.isReadable){if(u.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(u.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(i)return{source:e};let s=qr("setup pipeline",()=>{let s=0,i=!1,u=new r.Transform({transform(e,n,r){if(s+=e.length,s>t)return i=!0,void r(new Error(`streamRead sent more than fileSize[${t}] bytes`));r(null,e)},flush(e){if(s!==t)return i=!0,void e(new Error(`streamRead ended at ${s} bytes but fileSize is ${t}`));e()}});return r.pipeline(e,u,e=>{e&&i&&n(Ns(e))}),u});return s.ok?{source:s.value}:{error:"invalid streamRead",reason:`${s.stage} failed: ${s.cause}`}}let o=qr("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(Ot(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||cn(e)||"object"==typeof e&&!1===function(e){try{return jn(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:Ns(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(zs(o.value,"unserializable")){let e=o.value.unserializable;return{error:"invalid streamRead",reason:_t(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===o.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=o.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let ni=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function si(e,t){let n=qr(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Fn(e,{useLimitSafe:!0})}(t)?{ok:!0,value:mn(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!_t(t))return{ok:!1};let n=bs(t);return _t(n)?"fileType"===e?ei("Content-Type",n)?{ok:!0,value:n}:{ok:!1}:{ok:!0,value:ni(n)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return n.ok?{ok:n.value.ok,value:n.value.value,cause:""}:{ok:!1,value:void 0,cause:n.cause}}function ri(e){try{e&&jn(e.pipe)&&jn(e.destroy)&&e.destroy()}catch(e){}}function ii(e){return void 0===e||jn(e)||"symbol"==typeof e?null:e}function ui(e,t,n={}){let s=new r.Readable;s._read=()=>{},s.push(t),s.push(null);let i=de(n,"returnType",""),u=de(n,"returnMsg",""),o=e.response(s).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",s.readableLength);return _t(i)&&o.header("Return-Type",i),_t(u)&&ei("Return-Msg",u)&&o.header("Return-Msg",u),o}function oi(i={}){let u={useLimitSafe:!0},o=de(i,"port");(!Cn(o,u)||mn(o)>65535)&&(o=8080),o=mn(o);let l=de(i,"useInert");cn(l)||(l=!0);let a=de(i,"pathStaticFiles");_t(a)||(a="dist");let c=de(i,"pathUploadTemp");_t(c)||(c="./uploadTemp");let D="";if(!Hn(c)){let e=ws(c);zs(e,"error")&&(D=Ns(e.error))}let M=de(i,"apiName");_t(M)||(M="api");let d=de(i,"tokenType");_t(d)||(d="Bearer");let w=de(i,"sizeSlice");Cn(w,u)||(w=1048576),w=mn(w);let y=de(i,"sizeMsg");Cn(y,u)||(y=104857600),y=mn(y);let L=de(i,"verifyConn");jn(L)||(L=()=>!0);let I=de(i,"corsOrigins",[]);xn(I)||(I=["*"]);let g=de(i,"delayForSlice","");(!Fn(g,u)||mn(g)>2147483647)&&(g=100),g=mn(g);let m=null;m=de(i,"serverHapi")?i.serverHapi:n.server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:I,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}});let C=Ds(),p={tag:"w-converhp"},f=(e,...t)=>ys(C,e,t,{...p,funSettle:()=>{let n=t[t.length-1];Gn(n)&&n.reject(`listener of event[${e}] error`)},funEmit:N}),h=(e,...t)=>Ls(C,e,t,{...p,funEmit:N});function N(e,...t){if("error"===e&&Rt(t[0])&&"listener"===t[0].fun){let e=de(t[0],"name",""),n=de(t[0],"msg");return console.log(`listener of event[${e}] error`,n),C.emit("error",`listener of event[${e}] error: ${Ns(n)}`)}return C.emit(e,...t)}_t(D)&&h("error",`create pathUploadTemp[${c}] error: ${D}`);let b=(e,t,n)=>{let s=kn(),r=kn();return r.then(t=>{void 0===t&&(t=null);let r=typeof t;if("function"===r||"symbol"===r)return s.reject("output can not be serialized"),void f("error",`event[${e}] output can not be serialized: output is a ${r}`);s.resolve(jn(n)?n(t):t)}).catch(e=>{s.reject(e)}),function(e,t,n,s,r,i){if(0===e.listenerCount(n)){let e=`no listener for event[${n}]`;return r.reject(e),i(e),!1}t(n,...s,r)}(C,f,e,t,r,e=>{f("error",e)}),s};async function x(e){return b("upload",[e])}async function T(e){return b("download",[e])}let A=`${bs(d)} `,E=(e,t)=>{let n=de(e,"headers");n=Rt(n)?n:"";let s=de(e,"query");s=Rt(s)?s:"";let r="",i="";return"query"===t.authFrom?(i=de(s,"token",""),i=_t(i)?i:"",_t(i)&&(r=`${d} ${i}`)):(r=de(n,"authorization",""),r=_t(r)?r:"",i=r.startsWith(A)?r.slice(A.length):""),{headers:n,query:s,authorization:r,token:i}},S=(e,t)=>{let n=(n,s,r)=>function(e,t,n={}){_t(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let s=de(n,"retryable",!0),r={error:t};!1===s&&(r.retryable=!1);let i=ui(e,Hs(r),{returnType:"error",returnMsg:t});return!1===s&&i.header("Return-Retryable","false"),i}(e,s,r).code(t.statusOf[n]);return{permission:()=>n("permission","permission denied"),param:e=>n("param",e,{retryable:!1}),app:e=>n("app",e),output:e=>n("output",e),packet:e=>n("packet",e),internal:e=>n("internal",e)}},Z=async(e,t,n,s)=>!0!==await async function(e){let t=!1;try{t=L(e),Gn(t)&&(t=await t)}catch(n){t=!1,console.log(`verifyConn error for apiType[${de(e,"apiType","")}]`,n),f("error",`verifyConn error for apiType[${de(e,"apiType","")}]: ${Ns(n)}`)}return!0===t}({apiType:n.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?s.permission():(f("handler",{api:n.api,headers:t.headers,query:t.query}),null),v=(e,t,n,s)=>{let r=function(e,t){let n={};for(let s of t){let t=qr(`read field[${s}]`,()=>de(e,s));if(!t.ok)return{ok:!1,field:s,cause:t.cause,fields:n};n[s]=t.value}return{ok:!0,fields:n}}(e,n.fields.map(e=>e.name));if(!r.ok)return ri(de(r.fields,"streamRead")),f("error",`download fileId[${t}] output error: can not read field[${r.field}]: ${r.cause}`),{ok:!1,res:s.output("invalid streamRead")};let i={streamRead:r.fields.streamRead};for(let e of n.fields){if("streamRead"===e.name)continue;let n=si(e.name,r.fields[e.name]);if(n.ok){i[e.name]=n.value;continue}if(!0===e.optional&&!_t(n.cause)){i[e.name]="";continue}ri(i.streamRead);let u="fileSize"===e.name?`[${Ns(r.fields.fileSize)}]`:"";return f("error",`download fileId[${t}] output error: invalid ${e.name}${u}${_t(n.cause)?`: ${n.cause}`:""}`),{ok:!1,res:s.output(`invalid ${e.name}`)}}return{ok:!0,v:i}},X=async(e,t,n,s)=>{let r={},i="";await n.then(e=>{r.success=e,i="success"}).catch(e=>{r.error=e,i="error"});let u=function(e,t){let n={};for(let t of Object.keys(e))n[t]=ii(e[t]);let s=Hs(n,{returnWithStateAndMsg:!0});return"success"!==de(s,"state")?(t(de(s,"msg","unknown error")),null):s.msg}(r,e=>{f("error",`${s} output can not be serialized: ${e}`)});return null===u?t.internal("output can not be serialized"):ui(e,u,{returnType:i,returnMsg:"need to parse"})},Y=e=>(t,n,s)=>{if(413===de(s,"output.statusCode"))throw s;return f("error",`invalid request packet for ${e.api}: ${Ns(s)}`),S(n,e).packet("invalid request packet").takeover()},z={path:`/${M}/main`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=nr.main,s=S(t,n),i=E(e,n),u=await Z(e,i,n,s);if(u)return u;let o=null;try{o=await(()=>{let t=kn(),n=[],s=0,i=!1,u=new r.Writable({write(e,t,r){if(s+=e.length,s>y)return n=[],i=!0,void r();n.push(e),r()}});return u.on("finish",()=>{}),e.payload.pipe(u),e.payload.on("end",()=>{if(i)return void t.reject("payload too large");let e=Buffer.concat(n);n=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),f("error",`receive payload error: ${Ns(e)}`),t.reject(`receive payload error: ${Ns(e)}`)}),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${y}`}).code(413);throw e}let l=$s(new Uint8Array(o),{returnWithStateAndMsg:!0});if("success"!==de(l,"state")||!Rt(l.msg)){let e=Ns(de(l,"msg",""));return f("error",`invalid request packet for apiMain: ${_t(e)?e:"not an effective object"}`),s.packet("invalid request packet")}let a=l.msg;return X(t,s,async function(e){return b("execute",[de(e,"func",""),de(e,"input",null)],t=>(e.output=t,delete e.input,e))}(a),`execute func[${Ns(de(a,"func",""))}]`)}},j={path:`/${M}/ulctr`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:Y(nr.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=nr.ulctr,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(e,"payload.mode","");if("check-total-hash"!==u&&"check-slices-hash"!==u&&"merge-slices-push"!==u&&"merge-slices-get"!==u)return s.param(`invalid mode[${Ns(u)}] in payload`);let o=de(e,"payload.fileHash","");if(!er(o))return s.param("invalid fileHash in payload");let l=de(e,"payload.chunkTotal","");if("merge-slices-push"===u){if(!Cn(l))return s.param("invalid chunkTotal in payload");l=mn(l)}let a=de(e,"payload.filename",""),D=function(e,t="unknown"){if(!_t(e))return t;let n=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return n=n.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),n=n.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(n)&&(n=`_${n}`),""===n?t:n}(a,""),M=e=>Rt(e)&&zs(e,"error")?`${u}: ${bs(e.error)}`:"",d=async(e,t)=>{try{return await t()}catch(t){return f("error",`upload-controller mode[${u}] ${e} error: ${Ns(t)}`),Promise.reject(`${u} failed`)}};return X(t,s,(async()=>{let t=null;if("check-total-hash"===u){let n=de(e,"payload.fileSize","");t=await d("check total hash",()=>Or(n,w,o,c));let s=M(t);if(_t(s))return Promise.reject(s);if(t.bAllHash){let e={from:"check-total-hash",filename:a,filenameSafe:D,path:t.path},n=await x(e);t={...t,msg:n}}delete t.path,t.sizeSlice=w}else if("check-slices-hash"===u){let n=de(e,"payload.fileSliceHashs",[]);t=await d("check slices hash",()=>$r(n,o,c));let s=M(t);if(_t(s))return Promise.reject(s)}else if("merge-slices-push"===u){t={queueId:await d("push merge task",()=>Jr(o,l,c))}}else if("merge-slices-get"===u){let n=de(e,"payload.queueId",""),s=await Pr(n,c,{funConsume:async e=>await x({from:"merge-slices-get",filename:a,filenameSafe:D,path:e}),funLog:e=>{f("error",e)}});t={state:s.state,msg:s.msg,queueId:n,filename:a},"error"===s.state&&_t(s.reason)&&f("error",`${s.msg} for fileHash[${o}]: ${s.reason}`)}return t})(),`upload-controller mode[${u}]`)}},G={path:`/${M}/slc`,method:"POST",options:{payload:{maxBytes:w,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,s){let r=nr.slc,i=S(s,r),u=E(n,r),o=await Z(n,u,r,i);if(o)return o;let l=de(u.headers,"chunk-index",""),a=de(u.headers,"chunk-total",""),D=de(u.headers,"package-id","");if(!Fn(l))return i.param("invalid chunkIndex in headers");if(l=mn(l),!Fn(a))return i.param("invalid chunkTotal in headers");if(a=mn(a),!er(D))return i.param("invalid packageId in headers");let M=e.resolve(c,`${D}_${l}`),d=t.createWriteStream(M),y=()=>{let e=kn(),t=0,s=!1,r=!1,i=!1,u=!1;d.on("error",t=>{r||s||i||(r=!0,n.payload.unpipe(d),n.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${a}] of packageId[${D}] err`,t),f("error",`write chunk[${l+1}/${a}] of packageId[${D}] error: ${Ns(t)}`),e.reject(`write chunk[${l+1}/${a}] of packageId[${D}] error`))}),d.on("close",()=>{s||r||i?qs(M):u&&!0===d.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${a}] of packageId[${D}] done`)},g)}),n.payload.on("data",e=>{s||(t+=e.length,t>w&&(s=!0,n.payload.unpipe(d),n.payload.resume(),d.destroy()))}),n.payload.pipe(d),n.payload.on("end",()=>{u=!0,r||s&&e.reject("payload too large")});let o=t=>{i||u||r||(i=!0,d.destroy(),f("error",`receive chunk[${l+1}/${a}] of packageId[${D}] error: ${t}`),e.reject(`receive chunk[${l+1}/${a}] of packageId[${D}] error: ${t}`))};return n.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${a}] of packageId[${D}] err`,e),o(Ns(e))}),n.payload.on("close",()=>{o("closed before end")}),e},L={},I="",m="";try{let e=await y();L.success=e,I="success",m="need to parse"}catch(e){if("payload too large"===e)return s.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${w}`}).code(413);L.error=e,I="error",m="need to parse"}return ui(s,Hs(L),{returnType:I,returnMsg:m})}},K={path:`/${M}/dwgfn`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:Y(nr.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=nr.dwgfn,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(e,"payload.fileId","");if(!_t(u))return s.param("invalid fileId in payload");let o={fileId:u,token:r.token},l={};if(await T(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),zs(l,"error"))return s.app("can not get file from fileId");let a=v(de(l,"success"),u,n,s);return a.ok?(ri(a.v.streamRead),X(t,s,Promise.resolve({filename:a.v.filename}),`download fileId[${u}]`)):a.res}},F={path:`/${M}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=nr.dwgf,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(r.query,"fileId","");if(u=_t(u)?u:"",!_t(u))return s.param("invalid fileId in query");let o={fileId:u,token:r.token},l={};if(await T(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),zs(l,"error"))return s.app("can not get file from fileId");let a=v(de(l,"success"),u,n,s);if(!a.ok)return a.res;let c=a.v.streamRead,D=a.v.fileSize,M=a.v.fileType,d=a.v.filename,w=ti(c,D,e=>{f("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===bs(de(e,"method","")).toLowerCase()});if(w.error)return ri(c),f("error",`download fileId[${u}] output error: ${w.reason}`),s.output(w.error);let y=t.response(w.source).type(M).header("Content-Encoding","identity").header("Content-Length",D).header("Content-Disposition",_t(d)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(bs(e)),n="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}n+=t}return n.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(d)}`:"attachment");return y}},W={path:`/${M}/dw`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:Y(nr.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=nr.dw,s=S(t,n),r=E(e,n),i=await Z(e,r,n,s);if(i)return i;let u=de(e,"payload.fileId","");if(!_t(u))return s.param("invalid fileId in payload");let o={fileId:u,token:r.token},l={};if(await T(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),zs(l,"error"))return s.app("can not get file from fileId");let a=v(de(l,"success"),u,n,s);if(!a.ok)return a.res;let c=a.v.streamRead,D=Ys(a.v.filename),M=a.v.fileSize,d=a.v.fileType,w=ti(c,M,e=>{f("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===bs(de(e,"method","")).toLowerCase()});return w.error?(ri(c),f("error",`download fileId[${u}] output error: ${w.reason}`),s.output(w.error)):t.response(w.source).type(d).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${D}"`).header("Content-Length",M)}};let U=null;if(de(i,"serverHapi"))try{m.route([z,j,G,K,F,W])}catch(e){console.log("register routes error",e),h("error",`register routes error: ${Ns(e)}`)}else U=async function(){l&&await m.register(s);let e=[];if(l){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${a}/`}}};e=[...e,t]}e=[...e,z,j,G,K,F,W],m.route(e),await m.start(),console.log(`Server running at: ${m.info.uri}`)}().catch(e=>{console.log("start server error",e),h("error",`start server error: ${Ns(e)}`)});return C.stop=async()=>{try{Gn(U)&&await U,await m.stop()}catch(e){console.log("stop server error",e),f("error",`stop server error: ${Ns(e)}`)}},C}var li=function(){return w.Date.now()},ai=Math.max,ci=Math.min;function Di(e,t,n){var s,r,i,u,o,l,a=0,c=!1,D=!1,M=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function d(t){var n=s,i=r;return s=r=void 0,a=t,u=e.apply(i,n)}function w(e){var n=e-l;return void 0===l||n>=t||n<0||D&&e-a>=i}function y(){var e=li();if(w(e))return L(e);o=setTimeout(y,function(e){var n=t-(e-l);return D?ci(n,i-(e-a)):n}(e))}function L(e){return o=void 0,M&&s?d(e):(s=r=void 0,u)}function I(){var e=li(),n=w(e);if(s=arguments,r=this,l=e,n){if(void 0===o)return function(e){return a=e,o=setTimeout(y,t),c?d(e):u}(l);if(D)return clearTimeout(o),o=setTimeout(y,t),d(l)}return void 0===o&&(o=setTimeout(y,t)),u}return t=un(t)||0,A(n)&&(c=!!n.leading,i=(D="maxWait"in n)?ai(un(n.maxWait)||0,t):i,M="trailing"in n?!!n.trailing:M),I.cancel=function(){void 0!==o&&clearTimeout(o),a=0,s=l=r=o=void 0},I.flush=function(){return void 0===o?u:L(li())},I}var Mi=function(){try{var e=k(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),di=Mi;function wi(e,t,n){"__proto__"==t&&di?di(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function yi(e,t,n){(void 0!==n&&!J(e[t],n)||void 0===n&&!(t in e))&&wi(e,t,n)}var Li="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ii=Li&&"object"==typeof module&&module&&!module.nodeType&&module,gi=Ii&&Ii.exports===Li?w.Buffer:void 0,mi=gi?gi.allocUnsafe:void 0;function Ci(e,t){if(t)return e.slice();var n=e.length,s=mi?mi(n):new e.constructor(n);return e.copy(s),s}function pi(e){var t=new e.constructor(e.byteLength);return new me(t).set(new me(e)),t}function fi(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){var n=-1,s=e.length;for(t||(t=Array(s));++n<s;)t[n]=e[n];return t}var Ni=Object.create,bi=function(){function e(){}return function(t){if(!A(t))return{};if(Ni)return Ni(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function xi(e){return"function"!=typeof e.constructor||tt(e)?{}:bi(Tn(e))}function Ti(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Ai=Object.prototype.hasOwnProperty;function Ei(e,t,n){var s=e[t];Ai.call(e,t)&&J(s,n)&&(void 0!==n||t in e)||wi(e,t,n)}function Si(e,t,n,s){var r=!n;n||(n={});for(var i=-1,u=t.length;++i<u;){var o=t[i],l=s?s(n[o],e[o],o,n,e):void 0;void 0===l&&(l=e[o]),r?wi(n,o,l):Ei(n,o,l)}return n}var Zi=Object.prototype.hasOwnProperty;function vi(e){if(!A(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=tt(e),n=[];for(var s in e)("constructor"!=s||!t&&Zi.call(e,s))&&n.push(s);return n}function Xi(e){return ut(e)?qe(e,!0):vi(e)}function Yi(e,t,n,s,r,i,u){var o=Ti(e,n),l=Ti(t,n),a=u.get(l);if(a)yi(e,n,a);else{var c,M=i?i(o,l,n+"",e,t,u):void 0,d=void 0===M;if(d){var w=D(l),y=!w&&We(l),L=!w&&!y&&_e(l);M=l,w||y||L?D(o)?M=o:h(c=o)&&ut(c)?M=hi(o):y?(d=!1,M=Ci(l,!0)):L?(d=!1,M=fi(l,!0)):M=[]:Xn(l)||je(l)?(M=o,je(o)?M=function(e){return Si(e,Xi(e))}(o):A(o)&&!E(o)||(M=xi(l))):d=!1}d&&(u.set(l,M),r(M,l,s,i,u),u.delete(l)),yi(e,n,M)}}function zi(e,t,n,s,r){e!==t&&kt(t,function(i,u){if(r||(r=new we),A(i))Yi(e,t,u,n,zi,s,r);else{var o=s?s(Ti(e,u),i,u+"",e,t,r):void 0;void 0===o&&(o=i),yi(e,u,o)}},Xi)}var ji=Math.max;var Gi=di?function(e,t){return di(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:Gt,Ki=Gi,Fi=Date.now;var Wi=function(e){var t=0,n=0;return function(){var s=Fi(),r=16-(s-n);if(n=s,r>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Ki),Ui=Wi;function ki(e,t){return Ui(function(e,t,n){return t=ji(void 0===t?e.length-1:t,0),function(){for(var s=arguments,r=-1,i=ji(s.length-t,0),u=Array(i);++r<i;)u[r]=s[t+r];r=-1;for(var o=Array(t+1);++r<t;)o[r]=s[r];return o[t]=n(u),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,o)}}(e,t,Gt),e+"")}function Vi(e,t,n){if(!A(n))return!1;var s=typeof t;return!!("number"==s?ut(n)&&ke(t,n.length):"string"==s&&t in n)&&J(n[t],e)}var Qi,Bi=(Qi=function(e,t,n){zi(e,t,n)},ki(function(e,t){var n=-1,s=t.length,r=s>1?t[s-1]:void 0,i=s>2?t[2]:void 0;for(r=Qi.length>3&&"function"==typeof r?(s--,r):void 0,i&&Vi(t[0],t[1],i)&&(r=s<3?void 0:r,s=1),e=Object(e);++n<s;){var u=t[n];u&&Qi(e,u,n,r)}return e}));function Hi(e,n={}){let s={};if(Rt(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Ds()),!zs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let r=de(n,"fpTableTags","");_t(r)||(r="./tableTags.json");let i=de(n,"genTag");jn(i)||(i=()=>is()+"|"+ls(6));let u=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)};function o(){let e={};try{if(t.existsSync(r)){let n=Kn(t.readFileSync(r,"utf8"));Rt(n)&&(e=n)}}catch(e){u("error",{msg:"readTableTags catch",err:e})}return e}function l(){try{let e=function(e,t=!1,n={}){let s=de(n,"returnWithStateAndMsg",null);cn(s)||(s=!1);let r=e=>s?{state:"error",msg:e}:"";if(fn(e))return r("invalid v");let i="";try{i=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return r(e.toString())}return s?{state:"success",msg:i}:i}(s);t.writeFileSync(r,e,"utf8")}catch(e){u("error",{msg:"writeTableTags catch",err:e})}}let a=Di(()=>{l(),u("changeTableTags",s)},200);return e.readTableTags=o,e.writeTableTags=l,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)s=e;else if("useStorageOnly"===t)s=o();else if("useInputFirst"===t)s=Bi(o(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);s=Bi(e,o())}l()},e.setTableTags=function(e={}){s=Bi(s,e),l()},e.getTableTags=function(){return s},e.updateTableTag=function(e){s[e]=i(),a()},e}var Ji=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Ne(t,Se(e)),e=Tn(e);return t}:Te;function Pi(e){return be(e,Xi,Ji)}var Ri=Object.prototype.hasOwnProperty;var Oi=/\w*$/;var _i=y?y.prototype:void 0,$i=_i?_i.valueOf:void 0;function qi(e,t,n){var s,r,i,u=e.constructor;switch(t){case"[object ArrayBuffer]":return pi(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return function(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return fi(e,n);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return(i=new(r=e).constructor(r.source,Oi.exec(r))).lastIndex=r.lastIndex,i;case"[object Symbol]":return s=e,$i?Object($i.call(s)):{}}}var eu=Re&&Re.isMap,tu=eu?Be(eu):function(e){return h(e)&&"[object Map]"==bt(e)};var nu=Re&&Re.isSet,su=nu?Be(nu):function(e){return h(e)&&"[object Set]"==bt(e)},ru="[object Arguments]",iu="[object Function]",uu="[object Object]",ou={};function lu(e,t,n,s,r,i){var u,o=1&t,l=2&t,a=4&t;if(n&&(u=r?n(e,s,r,i):n(e)),void 0!==u)return u;if(!A(e))return e;var c=D(e);if(c){if(u=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Ri.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!o)return hi(e,u)}else{var M=bt(e),d=M==iu||"[object GeneratorFunction]"==M;if(We(e))return Ci(e,o);if(M==uu||M==ru||d&&!r){if(u=l||d?{}:xi(e),!o)return l?function(e,t){return Si(e,Ji(e),t)}(e,function(e,t){return e&&Si(t,Xi(t),e)}(u,e)):function(e,t){return Si(e,Se(e),t)}(e,function(e,t){return e&&Si(t,ot(t),e)}(u,e))}else{if(!ou[M])return r?e:{};u=qi(e,M,o)}}i||(i=new we);var w=i.get(e);if(w)return w;i.set(e,u),su(e)?e.forEach(function(s){u.add(lu(s,t,n,s,e,i))}):tu(e)&&e.forEach(function(s,r){u.set(r,lu(s,t,n,r,e,i))});var y=c?void 0:(a?l?Pi:lt:l?Xi:ot)(e);return On(y||e,function(s,r){y&&(s=e[r=s]),Ei(u,r,lu(s,t,n,r,e,i))}),u}ou[ru]=ou["[object Array]"]=ou["[object ArrayBuffer]"]=ou["[object DataView]"]=ou["[object Boolean]"]=ou["[object Date]"]=ou["[object Float32Array]"]=ou["[object Float64Array]"]=ou["[object Int8Array]"]=ou["[object Int16Array]"]=ou["[object Int32Array]"]=ou["[object Map]"]=ou["[object Number]"]=ou[uu]=ou["[object RegExp]"]=ou["[object Set]"]=ou["[object String]"]=ou["[object Symbol]"]=ou["[object Uint8Array]"]=ou["[object Uint8ClampedArray]"]=ou["[object Uint16Array]"]=ou["[object Uint32Array]"]=!0,ou["[object Error]"]=ou[iu]=ou["[object WeakMap]"]=!1;function au(e){return lu(e,5)}function cu(e={}){let t=Ds(),n={},s=null,r=de(e,"timeAlive");Cn(r)||(r=1e4),r=mn(r),r=Math.min(r,Ms);let i=de(e,"timeDetect");return Cn(i)||(i=50),i=mn(i),i=Math.min(i,Ms),t.trigger=function(e,u){_t(e)?(zs(n,e)||setTimeout(()=>{ys(t,"message",[{eventName:"enter",key:e,data:u,now:mr(n)}],{tag:"alive"})},1),n[e]={data:u,time:Date.now()},null===s&&(s=setInterval(()=>{_n(n,(e,s)=>{if(Date.now()-e.time>r){let e=au(n[s]);delete n[s],ys(t,"message",[{eventName:"leave",key:s,data:e.data,now:mr(n)}],{tag:"alive"})}}),Rt(n)||(clearInterval(s),s=null)},i))):console.log("trigger need key")},t.get=function(){let e=[];return _n(n,(t,n)=>{e.push({key:n,data:t.data})}),e=au(e),e},t}function Du(e,t={}){let n={};if(Rt(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Ds()),!zs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)},r=cu(),i=setInterval(()=>{let e=Ht(r.get(),"key"),t={};_n(e,e=>{t[e]=de(n,e,[])}),n=t},1e3);r.on("message",function({eventName:e,key:t,data:n,now:r}){"enter"===e?s("clientEnter",t,n):"leave"===e&&s("clientLeave",t,n),s("clientChange",r)}),e.on("execute",function(e,t,i){if("[sys:polling]"===e)try{let e=de(t,"clientId",""),s=de(n,e,[]);s=au(s),n[e]=[],r.trigger(e,t),i.resolve(s)}catch(e){s("error",e),i.reject("[sys:polling] error")}});return e.getClients=r.get,e.getMessages=()=>au(n),e.broadcast=e=>{if(!Rt(n))return;let t={};_n(n,(n,s)=>{n.push({mode:"broadcast",data:e}),t[s]=n}),n=t},e.clearBroadcast=()=>{clearInterval(i)},e}let Mu=(e,t)=>{let n={};return _n(e,e=>{let s=e,r=de(t,e,"");_t(r)&&(n[s]=r)}),n};function du(e,t,n,s={}){if(!Rt(e))throw new Error("invalid instWConverServer");if(0===mr(t))return e;if(!Rt(n))return e;let r=de(s,"genTag");jn(r)||(r=()=>is()+"|"+ls(6));let i={};return _n(t,e=>{i[e]=r()}),e.initTableTags(i,"useInputOnly"),_n(t,t=>{let s=n[t];if(!s)throw new Error(`invalid kpOrm[${t}]`);try{s.on("change",()=>{e.updateTableTag(t)})}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}}),e.on("changeTableTags",n=>{e.broadcast({mode:"syncKpTable",data:Mu(t,n)})}),e}function wu(e,t,n,s){for(var r=n-1,i=e.length;++r<i;)if(s(e[r],t))return r;return-1}var yu=Array.prototype.splice;function Lu(e,t){return e&&e.length&&t&&t.length?function(e,t,n,s){var r=s?wu:fr,i=-1,u=t.length,o=e;for(e===t&&(t=hi(t)),n&&(o=ie(e,Be(n)));++i<u;)for(var l=0,a=t[i],c=n?n(a):a;(l=r(o,c,l,s))>-1;)o!==e&&yu.call(o,l,1),yu.call(e,l,1);return e}(e,t):e}function Iu(e,t={}){if(!Rt(e))throw new Error("invalid instWConverServer");let n=de(t,"getUserIdByToken",null);jn(n)||(n=async()=>"");let s=de(t,"useDbOrm",null);cn(s)||(s=!1);let r=null;if(s&&(r=de(t,"operOrm",null),!jn(r)))throw new Error("invalid opt.operOrm when useDbOrm=true");let i=[];if(s&&(i=de(t,"tableNames",null),!pn(i)))throw new Error("invalid opt.tableNames when useDbOrm=true");let u=[];s&&(u=de(t,"methods",null),pn(u)||(u=["select","insert","save","del"]));let o=de(t,"kpFunExt",null);let l={};async function a(e,t,s){if(!_t(e))return s.resolve({state:"error",msg:"invalid func"}),s;let r="";if(!zs(t,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(r=bs(t.__sysToken__),!zs(t,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;t=t.__sysInputArgs__;let i="";if(i=n(r),Gn(i)&&(i=await i),_t(i)||(i=""),"[sys:getFuncList]"===e){let e=ot(l);e=function(e,t){if(!xn(e))return[];if((Pt(t)||Mn(t)||Ot(t)||cn(t))&&(t=[t]),!xn(t))return e;let n=au(e);return Lu(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!zs(l,e))return s.resolve({state:"error",msg:`invalid func[${e}]`}),s;let u=l[e];try{let e=await Vn(u)(i,...t);s.resolve(e)}catch(t){s.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return s}return s&&(i=au(i),l=function(e,t,n){let s={};return _n(e,e=>{_n(t,t=>{s[`${e}.${t}`]=async function(s,r){return await n(s,e,t,r)}})}),s}(i,u,r)),Rt(o)&&_n(o,(e,t)=>{l[t]=e}),e.on("execute",async function(t,n,s){await a(t,n,s).catch(n=>{e.emit("error",n),s.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})})}),e}function gu(e,t={}){if(Rt(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Ds()),!zs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=de(t,"fpTableTags",null);_t(n)||(n="./tableTags.json");let s=de(t,"genTag");jn(s)||(s=()=>is()+"|"+ls(6)),e=new Du(e=new Hi(e,{fpTableTags:n,genTag:s}));let r=de(t,"useDbOrm",null);cn(r)||(r=!0);let i=de(t,"kpOrm",null),u=de(t,"operOrm",null),o=de(t,"tableNamesExec",null),l=de(t,"methodsExec",null),a=de(t,"tableNamesSync",null),c=de(t,"getUserIdByToken",null),D=de(t,"kpFunExt",null);if(Rt(D)||(D={}),D={...D,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:Mu(a,t)}}},e=new Iu(e,{getUserIdByToken:c,useDbOrm:r,operOrm:u,tableNames:o,methods:l,kpFunExt:D}),r){if(!Pt(i))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new du(e,a,i,{genTag:s})}return e}function mu(e={}){let t=Ds(),r=null,i=null,u=de(e,"port");wn(u)||(u=8080);let o=de(e,"corsOrigins",[]);xn(o)||(o=["http://localhost"]);let l=de(e,"delayForSlice","");Fn(l)||(l=100),l=mn(l);let a=de(e,"useInert");cn(a)||(a=!0);let c=de(e,"pathStaticFiles");_t(c)||(c="dist");let D=de(e,"apis");xn(D)||(D=[]);let M=de(e,"apiName");_t(M)||(M="api");let d=de(e,"pathUploadTemp");_t(d)||(d="./uploadTemp"),Hn(d)||ws(d);let w=de(e,"tokenType");_t(w)||(w="Bearer");let y=de(e,"sizeSlice");Cn(y)||(y=1048576);let L=de(e,"sizeMsg");Cn(L)||(L=104857600);let I=de(e,"verifyConn");jn(I)||(I=()=>!0);let g=de(e,"getUserIdByToken",null),m=de(e,"useDbOrm",null);cn(m)||(m=!0);let C=de(e,"kpOrm",null),p=de(e,"operOrm",null),f=de(e,"tableNamesExec",null),h=de(e,"methodsExec",null),N=de(e,"tableNamesSync",null),b=de(e,"kpFunExt",null),x=de(e,"fpTableTags",null);_t(x)||(x=de(e,"fnTableTags",null));let T=de(e,"genTag");jn(T)||(T=()=>is()+"|"+ls(6));let A=de(e,"useShowLog");cn(A)||(A=!0);(async()=>{await(async()=>{r=new n.Server({port:u,routes:{timeout:{server:!1,socket:!1},cors:{origin:o,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}}),a&&await r.register(s);let e=[];a&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}}]),e=[...e,...D],r.route(e)})(),await(async()=>{i=new oi({serverHapi:r,apiName:M,pathUploadTemp:d,tokenType:w,sizeSlice:y,sizeMsg:L,verifyConn:I,corsOrigins:o,delayForSlice:l}),i.on("clientChange",function(e){A&&console.log(`Server[port:${u}]: now clients: ${e}`)})})(),await(async()=>{i=new gu(i,{getUserIdByToken:g,useDbOrm:m,kpOrm:C,operOrm:p,tableNamesExec:f,tableNamesSync:N,methodsExec:h,kpFunExt:b,fpTableTags:x,genTag:T}),i.on("error",e=>{t.emit("error",e)})})(),await r.start(),A&&console.log(`Server running at: ${r.info.uri}`)})().catch(e=>{t.emit("error",e)}),process.on("unhandledRejection",e=>{console.log("unhandledRejection",e),t.emit("error",{mode:"unhandledRejection",err:e})}),process.on("uncaughtException",e=>{console.log("uncaughtException",e),t.emit("error",{mode:"uncaughtException",err:e})});return t.getServer=async()=>(await ds(()=>null!==r),r),t.getInstWConverServer=async()=>(await ds(()=>null!==i),i),t}function Cu(e,t){let n=kn();if(!pn(e)&&!Pt(e))return n.reject("rs is not an array or object"),n;let s=!1;if(Pt(e)){s=!0;let t=[];_n(e,(e,n)=>{t.push({k:n,v:e})}),e=t}jn(t)||(t=function(e){return e});let r=-1,i=[];return e.reduce(function(e,n){return e.then(function(e){i.push(e),r+=1;let u=r,o=n;return s&&(u=n.k,o=n.v),jn(t)?t(o,u):o})},Promise.resolve()).then(function(e){var t,s,r,u;i.push(e),u=null==(t=i)?0:t.length,i=u?Cr(t,(s=r||void 0===s?1:an(s))<0?0:s,u):[],n.resolve(i)}).catch(function(e){n.reject(e)}),n}let pu={backup:async function(e){return await Cu(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,n,s,r=!1){if(!Pn(e))throw console.log("fp",e),new Error("fp is not exist");if(!Rt(n))throw console.log("woItems",n),new Error("invalid woItems");jn(s)||(s=null),cn(r)||(r=!1);let i=t.readFileSync(e,"utf8");i=jr(i);let u=Kn(i);jn(s)&&s(),await Cu(u,async e=>{console.log("recover...",e.name),r&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return mr(e.data)>0&&(t=await n[e.name].insert(e.data)),t})}};function fu(){if(!jn(rs))throw new Error("invalid dayjs");return rs().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var hu={exports:{}},Nu={},bu={exports:{}},xu={};function Tu(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Au=/javascript\s*\:/gim;xu.whiteList=Tu(),xu.getDefaultWhiteList=Tu,xu.onAttr=function(e,t,n){},xu.onIgnoreAttr=function(e,t,n){},xu.safeAttrValue=function(e,t){return Au.test(t)?"":t};var Eu={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,r;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,r=e.length;s<r;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var Su=function(e,t){";"!==(e=Eu.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,s=!1,r=0,i=0,u="";function o(){if(!s){var n=Eu.trim(e.slice(r,i)),o=n.indexOf(":");if(-1!==o){var l=Eu.trim(n.slice(0,o)),a=Eu.trim(n.slice(o+1));if(l){var c=t(r,u.length,l,a,n);c&&(u+=c+"; ")}}}r=i+1}for(;i<n;i++){var l=e[i];if("/"===l&&"*"===e[i+1]){var a=e.indexOf("*/",i+2);if(-1===a)break;r=(i=a+1)+1,s=!1}else"("===l?s=!0:")"===l?s=!1:";"===l?s||o():"\n"===l&&o()}return Eu.trim(u)},Zu=xu,vu=Su;function Xu(e){return null==e}function Yu(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||Zu.whiteList,e.onAttr=e.onAttr||Zu.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||Zu.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||Zu.safeAttrValue,this.options=e}Yu.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,s=t.onAttr,r=t.onIgnoreAttr,i=t.safeAttrValue;return vu(e,function(e,t,u,o,l){var a=n[u],c=!1;if(!0===a?c=a:"function"==typeof a?c=a(o):a instanceof RegExp&&(c=a.test(o)),!0!==c&&(c=!1),o=i(u,o)){var D,M={position:t,sourcePosition:e,source:l,isWhite:c};return c?Xu(D=s(u,o,M))?u+":"+o:D:Xu(D=r(u,o,M))?void 0:D}})};var zu=Yu;!function(e,t){var n=xu,s=zu;for(var r in(t=e.exports=function(e,t){return new s(t).process(e)}).FilterCSS=s,n)t[r]=n[r];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(bu,bu.exports);var ju=bu.exports,Gu={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,r;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,r=e.length;s<r;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},Ku=ju.FilterCSS,Fu=ju.getDefaultWhiteList,Wu=Gu;function Uu(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var ku=new Ku;function Vu(e){return e.replace(Qu,"<").replace(Bu,">")}var Qu=/</g,Bu=/>/g,Hu=/"/g,Ju=/"/g,Pu=/&#([a-zA-Z0-9]*);?/gim,Ru=/:?/gim,Ou=/&newline;?/gim,_u=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,$u=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,qu=/u\s*r\s*l\s*\(.*/gi;function eo(e){return e.replace(Hu,""")}function to(e){return e.replace(Ju,'"')}function no(e){return e.replace(Pu,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function so(e){return e.replace(Ru,":").replace(Ou," ")}function ro(e){for(var t="",n=0,s=e.length;n<s;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return Wu.trim(t)}function io(e){return e=ro(e=so(e=no(e=to(e))))}function uo(e){return e=Vu(e=eo(e))}Nu.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},Nu.getDefaultWhiteList=Uu,Nu.onTag=function(e,t,n){},Nu.onIgnoreTag=function(e,t,n){},Nu.onTagAttr=function(e,t,n){},Nu.onIgnoreTagAttr=function(e,t,n){},Nu.safeAttrValue=function(e,t,n,s){if(n=io(n),"href"===t||"src"===t){if("#"===(n=Wu.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(_u.lastIndex=0,_u.test(n))return""}else if("style"===t){if($u.lastIndex=0,$u.test(n))return"";if(qu.lastIndex=0,qu.test(n)&&(_u.lastIndex=0,_u.test(n)))return"";!1!==s&&(n=(s=s||ku).process(n))}return n=uo(n)},Nu.escapeHtml=Vu,Nu.escapeQuote=eo,Nu.unescapeQuote=to,Nu.escapeHtmlEntities=no,Nu.escapeDangerHtml5Entities=so,Nu.clearNonPrintableCharacter=ro,Nu.friendlyAttrValue=io,Nu.escapeAttrValue=uo,Nu.onIgnoreTagStripAll=function(){return""},Nu.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),s=[],r=!1;return{onIgnoreTag:function(i,u,o){if(function(t){return!!n||-1!==Wu.indexOf(e,t)}(i)){if(o.isClosing){var l="[/removed]",a=o.position+10;return s.push([!1!==r?r:o.position,a]),r=!1,l}return r||(r=o.position),"[removed]"}return t(i,u,o)},remove:function(e){var t="",n=0;return Wu.forEach(s,function(s){t+=e.slice(n,s[0]),n=s[1]}),t+=e.slice(n)}}},Nu.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var s=e.indexOf("\x3c!--",n);if(-1===s){t+=e.slice(n);break}t+=e.slice(n,s);var r=e.indexOf("--\x3e",s);if(-1===r)break;n=r+3}return t},Nu.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},Nu.attributeWrapSign='"',Nu.cssFilter=ku,Nu.getDefaultCSSWhiteList=Fu;var oo={},lo=Gu;function ao(e){var t,n=lo.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=lo.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function co(e){return"</"===e.slice(0,2)}var Do=/[^a-zA-Z0-9\\_:.-]/gim;function Mo(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function wo(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function yo(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Lo(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}oo.parseTag=function(e,t,n){var s="",r=0,i=!1,u=!1,o=0,l=e.length,a="",c="";e:for(o=0;o<l;o++){var D=e.charAt(o);if(!1===i){if("<"===D){i=o;continue}}else if(!1===u){if("<"===D){s+=n(e.slice(r,o)),i=o,r=o;continue}if(">"===D||o===l-1){s+=n(e.slice(r,i)),a=ao(c=e.slice(i,o+1)),s+=t(i,s.length,a,c,co(c)),r=o+1,i=!1;continue}if('"'===D||"'"===D)for(var M=1,d=e.charAt(o-M);""===d.trim()||"="===d;){if("="===d){u=D;continue e}d=e.charAt(o-++M)}}else if(D===u){u=!1;continue}}return r<l&&(s+=n(e.substr(r))),s},oo.parseAttr=function(e,t){var n=0,s=0,r=[],i=!1,u=e.length;function o(e,n){if(!((e=(e=lo.trim(e)).replace(Do,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&r.push(s)}}for(var l=0;l<u;l++){var a,c=e.charAt(l);if(!1!==i||"="!==c)if(!1===i||l!==s)if(/\s|\n|\t/.test(c)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(a=Mo(e,l))){o(lo.trim(e.slice(n,l))),i=!1,n=l+1;continue}l=a-1;continue}if(-1===(a=yo(e,l-1))){o(i,Lo(lo.trim(e.slice(n,l)))),i=!1,n=l+1;continue}}else;else{if(-1===(a=e.indexOf(c,l+1)))break;o(i,lo.trim(e.slice(s+1,a))),i=!1,n=(l=a)+1}else i=e.slice(n,l),n=l+1,s='"'===e.charAt(n)||"'"===e.charAt(n)?n:wo(e,l+1)}return n<e.length&&(!1===i?o(e.slice(n)):o(i,Lo(lo.trim(e.slice(n))))),lo.trim(r.join(" "))};var Io=ju.FilterCSS,go=Nu,mo=oo,Co=mo.parseTag,po=mo.parseAttr,fo=Gu;function ho(e){return null==e}function No(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=go.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(e){return e.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}(e.whiteList||e.allowList):e.whiteList=go.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":go.attributeWrapSign,e.onTag=e.onTag||go.onTag,e.onTagAttr=e.onTagAttr||go.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||go.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||go.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||go.safeAttrValue,e.escapeHtml=e.escapeHtml||go.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new Io(e.css))}No.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,s=n.whiteList,r=n.onTag,i=n.onIgnoreTag,u=n.onTagAttr,o=n.onIgnoreTagAttr,l=n.safeAttrValue,a=n.escapeHtml,c=t.attributeWrapSign,D=t.cssFilter;n.stripBlankChar&&(e=go.stripBlankChar(e)),n.allowCommentTag||(e=go.stripCommentTag(e));var M=!1;n.stripIgnoreTagBody&&(M=go.StripTagBody(n.stripIgnoreTagBody,i),i=M.onIgnoreTag);var d=Co(e,function(e,t,n,M,d){var w={sourcePosition:e,position:t,isClosing:d,isWhite:Object.prototype.hasOwnProperty.call(s,n)},y=r(n,M,w);if(!ho(y))return y;if(w.isWhite){if(w.isClosing)return"</"+n+">";var L=function(e){var t=fo.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=fo.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=fo.trim(e.slice(0,-1))),{html:e,closing:n}}(M),I=s[n],g=po(L.html,function(e,t){var s=-1!==fo.indexOf(I,e),r=u(n,e,t,s);return ho(r)?s?(t=l(n,e,t,D))?e+"="+c+t+c:e:ho(r=o(n,e,t,s))?void 0:r:r});return M="<"+n,g&&(M+=" "+g),L.closing&&(M+=" /"),M+=">"}return ho(y=i(n,M,w))?a(M):y},a);return M&&(d=M.remove(d)),d};var bo=No;!function(e,t){var n=Nu,s=oo,r=bo;function i(e,t){return new r(t).process(e)}(t=e.exports=i).filterXSS=i,t.FilterXSS=r,function(){for(var e in n)t[e]=n[e];for(var r in s)t[r]=s[r]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(hu,hu.exports);var xo=ts(hu.exports);function To(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Ao(e){let t=function(){let e=To();return xo||e.xss}();let n=function e(n){return pn(n)||Pt(n)?(_n(n,function(t,s){n[s]=e(t)}),n):_t(n)?t(n,{onIgnoreTagAttr:function(e,n,s,r){if("style"===n)return n+'="'+t.escapeAttrValue(s)+'"'}}):n}(au(e));return n}let Eo=null,So=null;function Zo(e,t,n,s="save"){if(!Rt(Eo))throw console.log("ds",Eo),new Error("invalid ds");let r=Eo[e].keys,i=!1;pn(n)||(i=!0,n=[n]);let u=fu();return s.indexOf("insert")>=0&&(r.indexOf("userId")>=0&&_n(n,(e,s)=>{n[s].userId=t}),r.indexOf("timeCreate")>=0&&_n(n,(e,t)=>{n[t].timeCreate=u}),r.indexOf("userIdUpdate")>=0&&_n(n,(e,s)=>{n[s].userIdUpdate=t}),r.indexOf("timeUpdate")>=0&&_n(n,(e,t)=>{n[t].timeUpdate=u})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(r.indexOf("userIdUpdate")>=0&&_n(n,(e,s)=>{n[s].userIdUpdate=t}),r.indexOf("timeUpdate")>=0&&_n(n,(e,t)=>{n[t].timeUpdate=u})),n=Ht(n,(e,t)=>{let n={};return _n(e,(e,t)=>{e=Ao(e),n[t]=e}),n}),n=i?n[0]:n}async function vo(e,t,n,s){let r,i=null;if(!Rt(So))return Promise.reject("無有效woItems");let u=de(So,t,null);if(null===u)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(r=await u.select(s).catch(e=>{console.log(`${t}.select catch`,e),i="取得資料失敗"}),_t(i))return Promise.reject(i)}else if("insert"===n||"save"===n){try{s=Zo(t,e,s,n)}catch(e){return console.log("adjustData catch",e.toString()),i="調整資料失敗",Promise.reject(i)}if("insert"===n?r=await u.insert(s).catch(e=>{console.log(`${t}.save catch`,e),i="新增資料失敗"}):"save"===n&&(r=await u.save(s).catch(e=>{console.log(`${t}.save catch`,e),i="儲存資料失敗"})),_t(i))return Promise.reject(i);r=pn(s)?Ht(s,e=>({id:e.id})):{id:s.id}}else if("del"===n)r=await u.del(s).catch(e=>{console.log(`${t}.del catch`,e),i="刪除資料失敗"});else if("delAll"===n)r=await u.delAll(s).catch(e=>{console.log(`${t}.delAll catch`,e),i="刪除資料失敗"});else if("mix"===n){if(!Rt(s))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;r=[];let o=de(s,"add",[]);if(mr(o)>0){try{o=Zo(t,e,o,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),i="調整資料失敗",Promise.reject(i)}if(await u.insert(o).catch(e=>{console.log(`${t}.save catch`,e),i="新增資料失敗"}),_t(i))return Promise.reject(i);n=Ht(o,e=>({id:e.id})),r=[...r,...n]}let l=de(s,"del",[]);if(mr(l)>0){if(await u.del(l).catch(e=>{console.log(`${t}.save catch`,e),i="刪除資料失敗"}),_t(i))return Promise.reject(i);n=Ht(l,e=>({id:e.id})),r=[...r,...n]}let a=de(s,"diff",[]);if(mr(a)>0){try{a=Zo(t,e,a)}catch(e){return console.log("adjustData catch",e.toString()),i="調整資料失敗",Promise.reject(i)}if(await u.save(a).catch(e=>{console.log(`${t}.save catch`,e),i="變更資料失敗"}),_t(i))return Promise.reject(i);n=Ht(a,e=>({id:e.id})),r=[...r,...n]}}else i=`invalid mode: ${n}`;return _t(i)?Promise.reject(i):r}function Xo(e,t){return Eo=e,So=t,vo}function Yo(e,t){var n=[];return Qt(e,function(e,s,r){t(e,s,r)&&n.push(e)}),n}function zo(e,t){return(D(e)?xe:Yo)(e,Wt(t))}function jo(e,t=null){if(!pn(e)){let e=kn();return e.reject("pms is not an array"),e}return e.reduce((e,t)=>e.then(t),Promise.resolve(t))}let Go=[],Ko=[],Fo=[],Wo=null,Uo=null,ko=!0,Vo=!0;function Qo(e){setTimeout(()=>{Go.push(e)},1)}function Bo(e){setTimeout(()=>{Ko.push(e)},1)}function Ho(e){setTimeout(()=>{Fo.push(e)},1)}async function Jo(e,t,n,s){if(!jn(Wo))return Promise.reject("invalid mapOrm");if(ko&&!_t(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let r="n";if(ko){if(!jn(Uo))return Promise.reject("invalid getUserById");let t=await Uo(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");r=de(t,"isAdmin"),"y"!==r&&"n"!==r&&(r="n");let n=de(t,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",e),console.log("oSelf",t),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await Cu(Go,i=>i({woName:t,userId:e,isAdmin:r,mode:n,input:s})),mr(Ko)>0){let i={woName:t,userId:e,isAdmin:r,mode:n,input:s},u=await jo(Ko,i);s=u.input}let i=await Wo(e,t,n,s);return Vo&&"n"===r&&"select"===n&&pn(i)&&(i=zo(i,e=>!zs(e,"isActive")||!("n"===e.isActive))),mr(Fo)>0&&(i=await jo(Fo,{woName:t,userId:e,isAdmin:r,mode:n,input:s,output:i})),i}function Po(e,t,n,s,r={}){let i=function(e,t,n,s){if(!Rt(e))throw console.log("ds",e),new Error("invalid ds");if(!jn(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!_t(n))throw console.log("url",n),new Error("invalid url");if(!_t(s))throw console.log("db",s),new Error("invalid db");let r={};return _n(ot(e),e=>{let i=new t({url:n,db:s,cl:e});r[e]=i}),r}(e,t,n,s),u=function(e,t={}){return jn(e)?(Wo=e,ko=de(t,"useCheckUser"),cn(ko)||(ko=!0),Uo=de(t,"getUserById"),Vo=de(t,"useExcludeWhenNotAdmin"),cn(Vo)||(Vo=!0),{addFunCheck:Qo,addFunPreProcessing:Bo,addFunPostProcessing:Ho,procOrm:Jo}):Promise.reject("invalid mapOrm")}(Xo(e,i),r);return{...pu,woItems:i,closeAll:async()=>{await Cu(i,async e=>{e&&jn(e.close)&&await e.close()})},...u}}const Ro=[];for(let e=0;e<256;++e)Ro.push((e+256).toString(16).slice(1));const Oo=new Uint8Array(16);function _o(){return crypto.getRandomValues(Oo)}const $o={};function qo(e,t,n){let s;if(e)s=el(e.random??e.rng?.()??_o(),e.msecs,e.seq,t,n);else{const e=Date.now(),r=_o();!function(e,t,n){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=tl(n),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}($o,e,r),s=el(r,$o.msecs,$o.seq,t,n)}return t??function(e,t=0){return(Ro[e[t+0]]+Ro[e[t+1]]+Ro[e[t+2]]+Ro[e[t+3]]+"-"+Ro[e[t+4]]+Ro[e[t+5]]+"-"+Ro[e[t+6]]+Ro[e[t+7]]+"-"+Ro[e[t+8]]+Ro[e[t+9]]+"-"+Ro[e[t+10]]+Ro[e[t+11]]+Ro[e[t+12]]+Ro[e[t+13]]+Ro[e[t+14]]+Ro[e[t+15]]).toLowerCase()}(s)}function el(e,t,n,s,r=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(s){if(r<0||r+16>s.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`)}else s=new Uint8Array(16),r=0;return t??=Date.now(),n??=tl(e),s[r++]=t/1099511627776&255,s[r++]=t/4294967296&255,s[r++]=t/16777216&255,s[r++]=t/65536&255,s[r++]=t/256&255,s[r++]=255&t,s[r++]=112|n>>>28&15,s[r++]=n>>>20&255,s[r++]=128|n>>>14&63,s[r++]=n>>>6&255,s[r++]=n<<2&255|3&e[10],s[r++]=e[11],s[r++]=e[12],s[r++]=e[13],s[r++]=e[14],s[r++]=e[15],s}function tl(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function nl(){return qo()}function sl(e,t){if(!Pt(e))return{};if(!xn(t))return{};let n={};return _n(t,function(t){zs(e,t)&&(n[t]=de(e,t))}),n}let rl="grups",il={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},cpemis:{name:"權限清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ul=(e={})=>{let t=$n(e,ot(il));return t.id=`${nl()}`,t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ol="pemis",ll={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},crules:{name:"管控對象清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},al=(e={})=>{let t=$n(e,ot(ll));return t.id=`${nl()}`,t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},cl="targets",Dl={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},Ml=(e={})=>{let t=$n(e,ot(Dl));return t.id=`${nl()}`,t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},dl="users",wl={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},cgrups:{name:"權限群組清單",type:"TEXT"},isAdmin:{name:"是否為系統管理員",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},yl=(e={})=>{let t=$n(e,ot(wl));return t.id=`${nl()}`,t.isAdmin="n",t.userIdUpdate=t.userId,t.timeCreate=fu(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t};function Ll(e,t={}){let n=de(t,"useCreateStorage");cn(n)||(n=!1);let{keyTable:s,tableNameCht:r,tableNameEng:i,settings:u,parser:o,funNew:l,funTest:a,ext:c}=e;if(!_t(s))throw new Error(`invalid keyTable[${s}]`);if(_t(r)||(r=s),_t(i)||(i=s),!Rt(u))throw new Error("invalid settings");Rt(c)||(c=null),Rt(o)||(o=null),jn(l)||(l=null);let D=null;jn(a)&&(D=async e=>{if(!Rt(e))throw new Error("invalid wo");if(!zs(e,s))throw console.log(e),new Error(`keyTable[${s}] is not in wo`);let t=[];try{t=a(),Gn(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${s}] funTest catch`,e),new Error(e)}if(0!==mr(t))return n&&await e[s].createStorage(),await e[s].save(t),t});let M={},d={};return _n(ot(u),e=>{let t=de(u,`${e}.name`,"");_t(t)&&(M[e]=t);let n=de(u,`${e}.type`,"");_t(n)&&(d[e]=n)}),{...e,keyTable:s,tableNameCht:r,tableNameEng:i,settings:u,keys:ot(u),kpType:d,kpHead:M,parser:o,funNew:l,funTest:a,funTestAndSave:D,ext:c}}let Il={grups:{keyTable:rl,tableNameCht:"權限群組設定",tableNameEng:"Permission groups",settings:il,funNew:ul,funTest:()=>{let e=[["權限群組M1","\n {\n '權限P1': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M2","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M3","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'AND',\n 'isActive': 'y',\n },\n }\n "],["權限群組M4","\n {\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P4': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "]];return e=Ht(e,([e,t],n)=>{let s=ul({userId:"id-for-admin",order:n,name:e,description:`${e}的說明`,cpemis:t});return s.id=`id-for-${e}`,s=sl(s,ot(il)),s}),console.log(`已產生: ${rl} 測試資料`,e),e}},pemis:{keyTable:ol,tableNameCht:"權限設定",tableNameEng:"Permissions",settings:ll,funNew:al,funTest:()=>{let e=[["權限P1","{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }"],["權限P2","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }"],["權限P3","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }"],["權限P4","{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }"]];return e=Ht(e,([e,t],n)=>{let s=al({userId:"id-for-admin",order:n,name:e,description:`${e}的說明`,crules:t});return s.id=`id-for-${e}`,s=sl(s,ot(ll)),s}),console.log(`已產生: ${ol} 測試資料`,e),e}},targets:{keyTable:cl,tableNameCht:"管控對象",tableNameEng:"Targets",settings:Dl,funNew:Ml,funTest:()=>{let e=["專案A/頁A/區塊A","專案A/頁A/區塊A/執行按鈕","專案A/頁A/區塊A/分析按鈕","專案A/頁B/區塊A","專案A/頁B/區塊A/執行按鈕","專案A/頁B/區塊A/分析按鈕","專案A/頁B/區塊B/展開按鈕","專案A/頁B/區塊B/下載按鈕","專案A/頁C","專案B/頁A/區塊A","專案B/頁A/區塊A/顯示綜合報表","專案B/頁A/區塊A/顯示當前數據","專案B/頁A/區塊B","專案B/頁A/區塊B/下載報表按鈕","專案B/頁A/區塊B/下載數據按鈕","專案B/頁A/區塊C","專案B/頁B/區塊A","專案B/頁B/區塊A/待辦事項清單","專案B/頁B/區塊A/相關資源清單","專案B/頁B/區塊B","專案B/頁B/區塊B/顯示後台按鈕","專案B/頁B/區塊B/轉跳主站按鈕"];return e=Ht(e,(e,t)=>{let n=Ml({userId:"id-for-admin",order:t,description:`${e}的說明`});return n.id=e,n=sl(n,ot(Dl)),n}),console.log(`已產生: ${cl} 測試資料`,e),e}},users:{keyTable:dl,tableNameCht:"使用者",tableNameEng:"Users",settings:wl,funNew:yl,funTest:()=>{let e=[["peter","teamA","\n { \n '權限群組M1': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["mary","teamA","\n { \n '權限群組M2': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["john","teamA","\n { \n '權限群組M3': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["admin","","\n { \n '權限群組M4': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","y"]];return e=Ht(e,([e,t,n,s],r)=>{let i=yl({userId:"id-for-admin",order:r,name:e,email:`${e}@example.com`,from:t,cgrups:n,isAdmin:s});return i.id=`id-for-${e}`,i.isAdmin=s,i=sl(i,ot(wl)),i}),console.log(`已產生: ${dl} 測試資料`,e),e}}},gl={};for(let e in Il)gl[e]=Ll(Il[e],{useCreateStorage:!1});var ml={exports:{}};!function(e){e.exports=function(){function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)}),n=e(function(e){var t=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=t)});n.version;var s=function(e){return"object"==typeof e?null!==e:"function"==typeof e},r=function(e){if(!s(e))throw TypeError(e+" is not an object!");return e},i=function(e){try{return!!e()}catch(e){return!0}},u=!i(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),o=t.document,l=s(o)&&s(o.createElement),a=function(e){return l?o.createElement(e):{}},c=!u&&!i(function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}),D=function(e,t){if(!s(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!s(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!s(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!s(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},M=Object.defineProperty,d={f:u?Object.defineProperty:function(e,t,n){if(r(e),t=D(t,!0),r(n),c)try{return M(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},w=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=u?function(e,t,n){return d.f(e,t,w(1,n))}:function(e,t,n){return e[t]=n,e},L={}.hasOwnProperty,I=function(e,t){return L.call(e,t)},g=0,m=Math.random(),C=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++g+m).toString(36))},p=e(function(e){var s="__core-js_shared__",r=t[s]||(t[s]={});(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),f=p("native-function-to-string",Function.toString),h=e(function(e){var s=C("src"),r="toString",i=(""+f).split(r);n.inspectSource=function(e){return f.call(e)},(e.exports=function(e,n,r,u){var o="function"==typeof r;o&&(I(r,"name")||y(r,"name",n)),e[n]!==r&&(o&&(I(r,s)||y(r,s,e[n]?""+e[n]:i.join(String(n)))),e===t?e[n]=r:u?e[n]?e[n]=r:y(e,n,r):(delete e[n],y(e,n,r)))})(Function.prototype,r,function(){return"function"==typeof this&&this[s]||f.call(this)})}),N=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},b=function(e,t,n){if(N(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,s){return e.call(t,n,s)};case 3:return function(n,s,r){return e.call(t,n,s,r)}}return function(){return e.apply(t,arguments)}},x="prototype",T=function(e,s,r){var i,u,o,l,a=e&T.F,c=e&T.G,D=e&T.S,M=e&T.P,d=e&T.B,w=c?t:D?t[s]||(t[s]={}):(t[s]||{})[x],L=c?n:n[s]||(n[s]={}),I=L[x]||(L[x]={});for(i in c&&(r=s),r)o=((u=!a&&w&&void 0!==w[i])?w:r)[i],l=d&&u?b(o,t):M&&"function"==typeof o?b(Function.call,o):o,w&&h(w,i,o,e&T.U),L[i]!=o&&y(L,i,l),M&&I[i]!=o&&(I[i]=o)};t.core=n,T.F=1,T.G=2,T.S=4,T.P=8,T.B=16,T.W=32,T.U=64,T.R=128;var A,E=T,S=Math.ceil,Z=Math.floor,v=function(e){return isNaN(e=+e)?0:(e>0?Z:S)(e)},X=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Y=(A=!1,function(e,t){var n,s,r=String(X(e)),i=v(t),u=r.length;return i<0||i>=u?A?"":void 0:(n=r.charCodeAt(i))<55296||n>56319||i+1===u||(s=r.charCodeAt(i+1))<56320||s>57343?A?r.charAt(i):n:A?r.slice(i,i+2):s-56320+(n-55296<<10)+65536});E(E.P,"String",{codePointAt:function(e){return Y(this,e)}}),n.String.codePointAt;var z=Math.max,j=Math.min,G=function(e,t){return(e=v(e))<0?z(e+t,0):j(e,t)},K=String.fromCharCode,F=String.fromCodePoint;E(E.S+E.F*(!!F&&1!=F.length),"String",{fromCodePoint:function(e){for(var t,n=arguments,s=[],r=arguments.length,i=0;r>i;){if(t=+n[i++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");s.push(t<65536?K(t):K(55296+((t-=65536)>>10),t%1024+56320))}return s.join("")}}),n.String.fromCodePoint;var W,U,k,V,Q,B,H,J,P,R,O,_,$,q,ee={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},te={isSpaceSeparator:function(e){return"string"==typeof e&&ee.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||ee.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||ee.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}},ne=function(e,t){W=String(e),U="start",k=[],V=0,Q=1,B=0,H=void 0,J=void 0,P=void 0;do{H=re(),de[U]()}while("eof"!==H.type);return"function"==typeof t?se({"":P},"",t):P};function se(e,t,n){var s=e[t];if(null!=s&&"object"==typeof s)if(Array.isArray(s))for(var r=0;r<s.length;r++){var i=String(r),u=se(s,i,n);void 0===u?delete s[i]:Object.defineProperty(s,i,{value:u,writable:!0,enumerable:!0,configurable:!0})}else for(var o in s){var l=se(s,o,n);void 0===l?delete s[o]:Object.defineProperty(s,o,{value:l,writable:!0,enumerable:!0,configurable:!0})}return n.call(e,t,s)}function re(){for(R="default",O="",_=!1,$=1;;){q=ie();var e=oe[R]();if(e)return e}}function ie(){if(W[V])return String.fromCodePoint(W.codePointAt(V))}function ue(){var e=ie();return"\n"===e?(Q++,B=0):e?B+=e.length:B++,e&&(V+=e.length),e}var oe={default:function(){switch(q){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void ue();case"/":return ue(),void(R="comment");case void 0:return ue(),le("eof")}if(!te.isSpaceSeparator(q))return oe[U]();ue()},comment:function(){switch(q){case"*":return ue(),void(R="multiLineComment");case"/":return ue(),void(R="singleLineComment")}throw Le(ue())},multiLineComment:function(){switch(q){case"*":return ue(),void(R="multiLineCommentAsterisk");case void 0:throw Le(ue())}ue()},multiLineCommentAsterisk:function(){switch(q){case"*":return void ue();case"/":return ue(),void(R="default");case void 0:throw Le(ue())}ue(),R="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return ue(),void(R="default");case void 0:return ue(),le("eof")}ue()},value:function(){switch(q){case"{":case"[":return le("punctuator",ue());case"n":return ue(),ae("ull"),le("null",null);case"t":return ue(),ae("rue"),le("boolean",!0);case"f":return ue(),ae("alse"),le("boolean",!1);case"-":case"+":return"-"===ue()&&($=-1),void(R="sign");case".":return O=ue(),void(R="decimalPointLeading");case"0":return O=ue(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=ue(),void(R="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",1/0);case"N":return ue(),ae("aN"),le("numeric",NaN);case'"':case"'":return _='"'===ue(),O="",void(R="string")}throw Le(ue())},identifierNameStartEscape:function(){if("u"!==q)throw Le(ue());ue();var e=Me();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw ge()}O+=e,R="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"":case"":return void(O+=ue());case"\\":return ue(),void(R="identifierNameEscape")}if(!te.isIdContinueChar(q))return le("identifier",O);O+=ue()},identifierNameEscape:function(){if("u"!==q)throw Le(ue());ue();var e=Me();switch(e){case"$":case"_":case"":case"":break;default:if(!te.isIdContinueChar(e))throw ge()}O+=e,R="identifierName"},sign:function(){switch(q){case".":return O=ue(),void(R="decimalPointLeading");case"0":return O=ue(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=ue(),void(R="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",$*(1/0));case"N":return ue(),ae("aN"),le("numeric",NaN)}throw Le(ue())},zero:function(){switch(q){case".":return O+=ue(),void(R="decimalPoint");case"e":case"E":return O+=ue(),void(R="decimalExponent");case"x":case"X":return O+=ue(),void(R="hexadecimal")}return le("numeric",0*$)},decimalInteger:function(){switch(q){case".":return O+=ue(),void(R="decimalPoint");case"e":case"E":return O+=ue(),void(R="decimalExponent")}if(!te.isDigit(q))return le("numeric",$*Number(O));O+=ue()},decimalPointLeading:function(){if(te.isDigit(q))return O+=ue(),void(R="decimalFraction");throw Le(ue())},decimalPoint:function(){switch(q){case"e":case"E":return O+=ue(),void(R="decimalExponent")}return te.isDigit(q)?(O+=ue(),void(R="decimalFraction")):le("numeric",$*Number(O))},decimalFraction:function(){switch(q){case"e":case"E":return O+=ue(),void(R="decimalExponent")}if(!te.isDigit(q))return le("numeric",$*Number(O));O+=ue()},decimalExponent:function(){switch(q){case"+":case"-":return O+=ue(),void(R="decimalExponentSign")}if(te.isDigit(q))return O+=ue(),void(R="decimalExponentInteger");throw Le(ue())},decimalExponentSign:function(){if(te.isDigit(q))return O+=ue(),void(R="decimalExponentInteger");throw Le(ue())},decimalExponentInteger:function(){if(!te.isDigit(q))return le("numeric",$*Number(O));O+=ue()},hexadecimal:function(){if(te.isHexDigit(q))return O+=ue(),void(R="hexadecimalInteger");throw Le(ue())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return le("numeric",$*Number(O));O+=ue()},string:function(){switch(q){case"\\":return ue(),void(O+=ce());case'"':return _?(ue(),le("string",O)):void(O+=ue());case"'":return _?void(O+=ue()):(ue(),le("string",O));case"\n":case"\r":throw Le(ue());case"\u2028":case"\u2029":me(q);break;case void 0:throw Le(ue())}O+=ue()},start:function(){switch(q){case"{":case"[":return le("punctuator",ue())}R="value"},beforePropertyName:function(){switch(q){case"$":case"_":return O=ue(),void(R="identifierName");case"\\":return ue(),void(R="identifierNameStartEscape");case"}":return le("punctuator",ue());case'"':case"'":return _='"'===ue(),void(R="string")}if(te.isIdStartChar(q))return O+=ue(),void(R="identifierName");throw Le(ue())},afterPropertyName:function(){if(":"===q)return le("punctuator",ue());throw Le(ue())},beforePropertyValue:function(){R="value"},afterPropertyValue:function(){switch(q){case",":case"}":return le("punctuator",ue())}throw Le(ue())},beforeArrayValue:function(){if("]"===q)return le("punctuator",ue());R="value"},afterArrayValue:function(){switch(q){case",":case"]":return le("punctuator",ue())}throw Le(ue())},end:function(){throw Le(ue())}};function le(e,t){return{type:e,value:t,line:Q,column:B}}function ae(e){for(var t=0,n=e;t<n.length;t+=1){var s=n[t];if(ie()!==s)throw Le(ue());ue()}}function ce(){switch(ie()){case"b":return ue(),"\b";case"f":return ue(),"\f";case"n":return ue(),"\n";case"r":return ue(),"\r";case"t":return ue(),"\t";case"v":return ue(),"\v";case"0":if(ue(),te.isDigit(ie()))throw Le(ue());return"\0";case"x":return ue(),De();case"u":return ue(),Me();case"\n":case"\u2028":case"\u2029":return ue(),"";case"\r":return ue(),"\n"===ie()&&ue(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Le(ue())}return ue()}function De(){var e="",t=ie();if(!te.isHexDigit(t))throw Le(ue());if(e+=ue(),t=ie(),!te.isHexDigit(t))throw Le(ue());return e+=ue(),String.fromCodePoint(parseInt(e,16))}function Me(){for(var e="",t=4;t-- >0;){var n=ie();if(!te.isHexDigit(n))throw Le(ue());e+=ue()}return String.fromCodePoint(parseInt(e,16))}var de={start:function(){if("eof"===H.type)throw Ie();we()},beforePropertyName:function(){switch(H.type){case"identifier":case"string":return J=H.value,void(U="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===H.type)throw Ie();U="beforePropertyValue"},beforePropertyValue:function(){if("eof"===H.type)throw Ie();we()},beforeArrayValue:function(){if("eof"===H.type)throw Ie();"punctuator"!==H.type||"]"!==H.value?we():ye()},afterPropertyValue:function(){if("eof"===H.type)throw Ie();switch(H.value){case",":return void(U="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===H.type)throw Ie();switch(H.value){case",":return void(U="beforeArrayValue");case"]":ye()}},end:function(){}};function we(){var e;switch(H.type){case"punctuator":switch(H.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=H.value}if(void 0===P)P=e;else{var t=k[k.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,J,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)k.push(e),U=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var n=k[k.length-1];U=null==n?"end":Array.isArray(n)?"afterArrayValue":"afterPropertyValue"}}function ye(){k.pop();var e=k[k.length-1];U=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Le(e){return pe(void 0===e?"JSON5: invalid end of input at "+Q+":"+B:"JSON5: invalid character '"+Ce(e)+"' at "+Q+":"+B)}function Ie(){return pe("JSON5: invalid end of input at "+Q+":"+B)}function ge(){return pe("JSON5: invalid identifier character at "+Q+":"+(B-=5))}function me(e){console.warn("JSON5: '"+Ce(e)+"' in strings is not valid ECMAScript; consider escaping")}function Ce(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){var n=e.charCodeAt(0).toString(16);return"\\x"+("00"+n).substring(n.length)}return e}function pe(e){var t=new SyntaxError(e);return t.lineNumber=Q,t.columnNumber=B,t}var fe=function(e,t,n){var s,r,i,u=[],o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(n=t.space,i=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){s=[];for(var a=0,c=t;a<c.length;a+=1){var D=c[a],M=void 0;"string"==typeof D?M=D:("number"==typeof D||D instanceof String||D instanceof Number)&&(M=String(D)),void 0!==M&&s.indexOf(M)<0&&s.push(M)}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),"number"==typeof n?n>0&&(n=Math.min(10,Math.floor(n)),l=" ".substr(0,n)):"string"==typeof n&&(l=n.substr(0,10)),d("",{"":e});function d(e,t){var n=t[e];switch(null!=n&&("function"==typeof n.toJSON5?n=n.toJSON5(e):"function"==typeof n.toJSON&&(n=n.toJSON(e))),r&&(n=r.call(t,e,n)),n instanceof Number?n=Number(n):n instanceof String?n=String(n):n instanceof Boolean&&(n=n.valueOf()),n){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof n?w(n):"number"==typeof n?String(n):"object"==typeof n?Array.isArray(n)?I(n):y(n):void 0}function w(e){for(var t={"'":.1,'"':.2},n={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},s="",r=0;r<e.length;r++){var u=e[r];switch(u){case"'":case'"':t[u]++,s+=u;continue;case"\0":if(te.isDigit(e[r+1])){s+="\\x00";continue}}if(n[u])s+=n[u];else if(u<" "){var o=u.charCodeAt(0).toString(16);s+="\\x"+("00"+o).substring(o.length)}else s+=u}var l=i||Object.keys(t).reduce(function(e,n){return t[e]<t[n]?e:n});return l+(s=s.replace(new RegExp(l,"g"),n[l]))+l}function y(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var n,r,i=[],a=0,c=s||Object.keys(e);a<c.length;a+=1){var D=c[a],M=d(D,e);if(void 0!==M){var w=L(D)+":";""!==l&&(w+=" "),w+=M,i.push(w)}}if(0===i.length)n="{}";else if(""===l)n="{"+(r=i.join(","))+"}";else{var y=",\n"+o;r=i.join(y),n="{\n"+o+r+",\n"+t+"}"}return u.pop(),o=t,n}function L(e){if(0===e.length)return w(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return w(e);for(var n=t.length;n<e.length;n++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(n))))return w(e);return e}function I(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var n,s=[],r=0;r<e.length;r++){var i=d(String(r),e);s.push(void 0!==i?i:"null")}if(0===s.length)n="[]";else if(""===l)n="["+s.join(",")+"]";else{var a=",\n"+o,c=s.join(a);n="[\n"+o+c+",\n"+t+"]"}return u.pop(),o=t,n}},he={parse:ne,stringify:fe},Ne=he,be=Ne;return be}()}(ml);var Cl=ts(ml.exports),pl=y?y.isConcatSpreadable:void 0;function fl(e){return D(e)||je(e)||!!(pl&&e&&e[pl])}function hl(e,t,n,s,r){var i=-1,u=e.length;for(n||(n=fl),r||(r=[]);++i<u;){var o=e[i];t>0&&n(o)?t>1?hl(o,t-1,n,s,r):Ne(r,o):s||(r[r.length]=o)}return r}function Nl(e,t){if(e!==t){var n=void 0!==e,s=null===e,r=e==e,i=N(e),u=void 0!==t,o=null===t,l=t==t,a=N(t);if(!o&&!a&&!i&&e>t||i&&u&&l&&!o&&!a||s&&u&&l||!n&&l||!r)return 1;if(!s&&!i&&!a&&e<t||a&&n&&r&&!s&&!i||o&&n&&r||!u&&r||!l)return-1}return 0}function bl(e,t,n){t=t.length?ie(t,function(e){return D(e)?function(t){return Me(t,1===e.length?e[0]:e)}:e}):[Gt];var s=-1;return t=ie(t,Be(Wt)),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(Bt(e,function(e,n,r){return{criteria:ie(t,function(t){return t(e)}),index:++s,value:e}}),function(e,t){return function(e,t,n){for(var s=-1,r=e.criteria,i=t.criteria,u=r.length,o=n.length;++s<u;){var l=Nl(r[s],i[s]);if(l)return s>=o?l:l*("desc"==n[s]?-1:1)}return e.index-t.index}(e,t,n)})}var xl=ki(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Vi(e,t[0],t[1])?t=[]:n>2&&Vi(t[0],t[1],t[2])&&(t=[t[0]]),bl(e,hl(t,1),[])});function Tl(e,t,n,s){let r=e=>{let t={};try{t=Cl.parse(e)}catch(t){console.log("c",e),console.log(t)}let n=[];try{n=(e=>{let t=[];return _n(e,(e,n)=>{let s={name:n};s=Rt(e)?{...s,...e}:{...s,isActive:e},t.push(s)}),t})(t)}catch(n){console.log("c",e),console.log("kp",t),console.log(n)}return n},i=(e,t,n)=>{let s=[];return _n(e,e=>{let r=de(e,n,"");_n(t,t=>{let i=de(t,n,"");if(r===i)return s.push({...e,data:t}),!1})}),s},u=e=>{let t=[];if(_n(e,e=>{let n=de(e,"mode","");if("OR"!==n&&"AND"!==n)return!0;let s=de(e,"rules",[]),r={};_n(s,e=>{r[e.name]=e.isActive}),t.push({mode:n,kpRule:r})}),0===mr(t))return[];let n=zo(t,{mode:"OR"}),s=zo(t,{mode:"AND"}),r=null;mr(n)>0?r=de(n,"0.kpRule"):mr(s)>0&&(r=de(s,"0.kpRule")),_n(n,e=>{let t=de(e,"kpRule",{});r=((e,t)=>{let n={};return _n([e,t],e=>{_n(e,(e,t)=>{zs(n,t)||(n[t]="n"),"y"===n[t]||"y"===e?n[t]="y":n[t]="n"})}),n})(r,t)}),_n(s,(e,t)=>{let n=de(e,"kpRule",{});r=((e,t)=>{let n=au(e);return _n([t],e=>{_n(e,(e,t)=>{zs(n,t)||(n[t]="n"),"y"===n[t]&&"y"===e?n[t]="y":n[t]="n"})}),n})(r,n)});let i=[];return _n(r,(e,t)=>{i.push({name:t,isActive:e})}),i},o=de(e,"cgrups",""),l=r(o);l=i(l,t,"name"),l=zo(l,{isActive:"y"}),l=Ht(l,e=>{let t=de(e,"data.cpemis",""),s=r(t);return s=zo(s,{isActive:"y"}),s=i(s,n,"name"),e.data._pemis=s,e}),l=Ht(l,e=>{let t=de(e,"data._pemis",[]);return t=Ht(t,e=>{let t=de(e,"data.crules",""),n=r(t);return e.data._rules=n,e}),e.data._pemis=t,e});let a=[];{let e=[];_n(l,t=>{let n=t.mode,s=t.data._pemis,r=[];_n(s,e=>{let t=e.mode,n=e.data._rules;r.push({mode:t,rules:n})});let i={mode:n,rules:u(r)};e.push(i)}),a=u(e)}{let e={};_n(a,t=>{e[t.name]=t.isActive});let t=[];_n(s,n=>{t.push({name:n.id,isActive:de(e,n.id,"n")})}),a=t}return{grups:l,rules:a}}function Al(e,t){return Zt(e,t)}function El(e,t){function n(e){return pn(e)?e:[e]}if(bn(e))return!1;if(0===(e=n(e)).length)return!1;if(bn(e))return!1;if(0===(t=n(t)).length)return!1;for(let n=0;n<e.length;n++)for(let s=0;s<t.length;s++)if(Al(e[n],t[s]))return!0;return!1}function Sl(e,t,{srLog:n,kmx:s}){let r=async(r,i,u,o,l={})=>{let a=de(l,"pickKeysOnly",null);return await s("updateTabItems:"+r,async()=>{if(xn(a)){let t=await e[r].select();u=function(e,t,n,s){let r={};_n(t,e=>{let t=de(e,n,"");_t(t)&&(r[t]=e)});let i=xl(e,"order");return i=Ht(i,e=>{let t={...e},i=de(e,n,""),u=de(r,i,null);return null!==u&&_n(s,e=>{zs(u,e)&&(t[e]=u[e])}),t}),i}(t,u,o,a),n.info({event:"updateTabItems-pickKeysOnly",keyTable:r,userId:i,pickKeysOnly:a})}u=Ht(u=qn(u,gl[r].keys),(e,t)=>(e.order=t+1,e));let s=(e,t)=>{let s=null,i={};return _n(e,(e,u)=>{let o=de(e,t,"");return _t(o)?zs(i,o)?(n.error({event:"updateTabItems-ckKey-error",keyTable:r,key:t,msg:"saveRowFieldDuplicate",row:u,value:o}),s="saveRowFieldDuplicate",!1):void(i[o]=!0):(n.error({event:"updateTabItems-ckKey-error",keyTable:r,key:t,msg:"saveRowFieldInvalid",row:u}),s="saveRowFieldInvalid",!1)}),s},l=null;if(El(r,["targets"])&&(l=s(u,"id"),null!==l))return Promise.reject(l);if(El(r,["pemis","grups"])&&(l=s(u,"name"),null!==l))return Promise.reject(l);if(El(r,["users"])&&(l=s(u,"email"),null!==l))return Promise.reject(l);let c=await e[r].select(),D=u,M=function(e,t,n,s={}){let r=de(s,"withInfor");cn(r)||(r=!0);let i={del:[],add:[],same:[],diff:[]};if(!_t(n))return console.log("invalid key"),r&&(i.infor={}),i;pn(e)||(e=[e]),pn(t)||(t=[t]),e=zo(e,e=>zs(e,n)),t=zo(t,e=>zs(e,n));let u=new Map(t.map(e=>[e[n],e]));for(let t of e){let e=u.get(t[n]);e?(JSON.stringify(t)===JSON.stringify(e)?i.same.push(e):i.diff.push(e),u.delete(t[n])):i.del.push(t)}if(i.add=Array.from(u.values()),r){let e={};for(let t of i.del)e[t[n]]="del";for(let t of i.add)e[t[n]]="add";for(let t of i.diff)e[t[n]]="diff";for(let t of i.same)e[t[n]]="same";i.infor=e}return i}(c,D,o);return mr(M.del)>0&&await t(i,r,"del",M.del),mr(M.add)>0&&await t(i,r,"insert",M.add),mr(M.diff)>0&&await t(i,r,"save",M.diff),D})},i=(e,t,s)=>{n.error({event:e,userId:t,msg:"string"==typeof s?s:s&&s.message||e})};return{updateTargets:async(e,t)=>{try{await r("targets",e,t,"id")}catch(t){throw i("updateTargets-error",e,t),t}return n.info({event:"updateTargets-success",userId:e}),"saveTabItemsSuccess"},updatePemis:async(e,t)=>{try{await r("pemis",e,t,"name")}catch(t){throw i("updatePemis-error",e,t),t}return n.info({event:"updatePemis-success",userId:e}),"saveTabItemsSuccess"},updateGrups:async(e,t)=>{try{await r("grups",e,t,"name")}catch(t){throw i("updateGrups-error",e,t),t}return n.info({event:"updateGrups-success",userId:e}),"saveTabItemsSuccess"},updateUsers:async(e,t,s={})=>{try{await r("users",e,t,"id",s)}catch(t){throw i("updateUsers-error",e,t),t}return n.info({event:"updateUsers-success",userId:e}),"saveTabItemsSuccess"}}}let Zl={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en",cht:"zh-tw"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},saveChanges:{eng:"Save changes",cht:"儲存變更"},id:{eng:"Id",cht:"主鍵"},from:{eng:"From",cht:"來源"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},screenFull:{eng:"Max size",cht:"最大化尺寸"},screenNormal:{eng:"Normal size",cht:"預設尺寸"},checkAllYes:{eng:"Check all",cht:"全選使用"},checkAllNo:{eng:"Uncheck all",cht:"全不選使用"},checkAllInv:{eng:"Reverse all",cht:"全反選使用"},operEnable:{eng:"Enable",cht:"是否使用"},operPemiMode:{eng:"Operator",cht:"合併權限模式"},operGrupMode:{eng:"Operator",cht:"合併權限群組模式"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},cannotConnectServer:{eng:"Cannot connect to server",cht:"無法連線至伺服器"},saveRowFieldInvalid:{eng:"Invalid field value in saved data",cht:"儲存資料的欄位值無效"},saveRowFieldDuplicate:{eng:"Duplicate field value in saved data",cht:"儲存資料的欄位值重複"},saveTabItemsSuccess:{eng:"Saved successfully",cht:"儲存成功"},cannotGetUserId:{eng:"Cannot get the user id",cht:"無法取得使用者 Id"},cannotGetUserEmail:{eng:"Cannot get the email of user",cht:"無法取得使用者 Email"},cannotGetUserName:{eng:"Cannot get the name of user",cht:"無法取得使用者名稱"},cannotGetUserRole:{eng:"Cannot get the role of user",cht:"無法取得使用者角色"},cannotFindUserFromToken:{eng:"Cannot identify the user from token",cht:"無法由 token 識別使用者"},cannotGetUserProp:{eng:"Cannot get the property of user",cht:"無法取得使用者對應屬性"},cannotGetUserFromPerm:{eng:"Cannot find the user in permission system",cht:"無法於權限系統取得使用者"},userNoPermission:{eng:"User does not have permission",cht:"使用者權限不足"},invalidPayload:{eng:"Invalid payload in request",cht:"請求內容無效"},invalidFromInPayload:{eng:"Invalid from in payload",cht:"請求來源欄位無效"},invalidRowsInPayload:{eng:"Invalid rows in payload",cht:"請求資料列無效"},invalidFrom:{eng:"Invalid from",cht:"來源欄位無效"},invalidRows:{eng:"Invalid rows",cht:"資料列無效"},cannotGetUserRules:{eng:"Cannot get rules of user",cht:"無法取得使用者權限規則"},tokenNoPermission:{eng:"Token does not have permission",cht:"權限不足"},userIdNoPermrules:{eng:"The user id does not have permission rules",cht:"此使用者沒有權限規則"},invalidKeyTable:{eng:"Invalid key table",cht:"資料表名稱無效"},cannotFindUserId:{eng:"Cannot find the user id",cht:"無法找到使用者 Id"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},showTabCols:{eng:"Show columns",cht:"顯示欄位"},belongUsers:{eng:"Use users",cht:"管控所屬使用者"},belongGrups:{eng:"Use groups",cht:"管控所屬權限群組"},belongGrupsNames:{eng:"Use permission groups",cht:"所屬權限群組名稱"},belongPemisNames:{eng:"Use permissions",cht:"所屬權限名稱"},chipsShowAll:{eng:"Show all",cht:"展開全部"},chipsPopupTitle:{eng:"{title} ({n} in total)",cht:"{title}:共 {n} 項"},isAdmin:{eng:"Administrator",cht:"是否為系統管理員"},isActive:{eng:"Active",cht:"是否有效"},errInNames:{eng:"Name errors",cht:"名稱出現錯誤待修復"},errInIds:{eng:"ID errors",cht:"ID 出現錯誤待修復"},errInEmails:{eng:"Email errors",cht:"Email出現錯誤待修復"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},mmTargets:{eng:"Targets",cht:"管理對象"},mmTargetsMsg:{eng:"Targets generally refer to entities such as pages, data, etc., and can also include features or services.",cht:"對象泛指實體的頁面、數據等,亦可為的功能或服務。"},mmPemis:{eng:"Permissions",cht:"管理權限"},mmPemisMsg:{eng:"Permissions are primarily used to set rules for enabling or disabling various objects.",cht:"權限主要為用來設定各種對象之使用或禁用規則。"},mmGrups:{eng:"Permission groups",cht:"管理權限群組"},mmGrupsMsg:{eng:"Permission groups are primarily used to configure combinations of different permissions.",cht:"權限群組主要為用來設定組合各種權限。"},mmUsers:{eng:"Users",cht:"管理使用者"},mmUsersMsg:{eng:"Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.",cht:"使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。"},targetId:{eng:"Target",cht:"對象名稱"},targetIdEmpty:{eng:"Invalid name",cht:"尚未給予有效對象名稱"},targetIdDuplicate:{eng:"Duplicate target",cht:"對象名稱出現重複"},targetAddEmpty:{eng:"No target",cht:"尚未新增管理資料"},targetAdd:{eng:"Add target",cht:"新增對象"},targetAddNameNew:{eng:"New target",cht:"新對象"},targetAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},targetCopy:{eng:"Copy target",cht:"複製對象"},targetCopyNameNew:{eng:"copy",cht:"複製"},targetDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},targetEnable:{eng:"Enable",cht:"是否使用"},targetSaveTargetsFail:{eng:"Failed to save targets",cht:"儲存對象數據失敗"},targetSaveTargetsSuccess:{eng:"Save targets successfully",cht:"儲存對象數據成功"},pemiName:{eng:"Name of permission",cht:"權限名稱"},pemiNameEmpty:{eng:"Invalid name of permission",cht:"尚未給予有效權限名稱"},pemiNameDuplicate:{eng:"Duplicate name of permission",cht:"權限名稱出現重複"},pemiAddEmpty:{eng:"No permission",cht:"尚未新增權限資料"},pemiAdd:{eng:"Add permission",cht:"新增權限"},pemiAddNameNew:{eng:"New permission",cht:"新權限"},pemiAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},pemiCopy:{eng:"Copy permission",cht:"複製權限"},pemiCopyNameNew:{eng:"copy",cht:"複製"},pemiDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},pemiCrules:{eng:"Rules of permission",cht:"管控對象"},pemiEditBlngGrupsNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditBlngGrupsNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiEditCrules:{eng:"Edit rules of permission",cht:"編輯使用對象"},pemiEditCrulesForDisplay:{eng:"Rules of permission",cht:"展示使用對象"},pemiEditCrulesNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditCrulesNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiRnderCrulesNoRule:{eng:"No rule",cht:"無使用任何對象"},pemiRnderCrulesHasNRule:{eng:"Has {n} rule(s){nms}",cht:"使用共 {n} 項對象{nms}"},pemiSavePemisFail:{eng:"Failed to save permissions",cht:"儲存權限數據失敗"},pemiSavePemisSuccess:{eng:"Save permissions successfully",cht:"儲存權限數據成功"},pemiBlngEditGrups:{eng:"Edit permission groups",cht:"編輯所屬權限群組"},pemiBlngEditGrupsForDisplay:{eng:"Permission groups",cht:"展示所屬權限群組"},pemiBlngRnderNoGrup:{eng:"No permission groups",cht:"無所屬權限群組"},pemiBlngRnderGrups:{eng:"Has {n} permission group(s){nms}",cht:"共被 {n} 個權限群組{nms}使用"},pemiBlngPemiNow:{eng:"Now permission",cht:"目前權限"},pemiBlngEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},pemiBlngEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiBlngDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},cruleEditNoTargetId:{eng:"Can not find the id of target",cht:"無法找到對象Id"},cruleEditNoTargetData:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cruleDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},grupName:{eng:"Name of permission group",cht:"權限群組名稱"},grupNameEmpty:{eng:"Invalid name of permission group",cht:"尚未給予有效權限群組名稱"},grupNameDuplicate:{eng:"Duplicate name of permission group",cht:"權限群組名稱出現重複"},grupAddEmpty:{eng:"No permission group",cht:"尚未新增權限群組資料"},grupAdd:{eng:"Add permission group",cht:"新增權限群組"},grupAddNameNew:{eng:"New permission group",cht:"新權限群組"},grupAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},grupCopy:{eng:"Copy permission group",cht:"複製權限群組"},grupCopyNameNew:{eng:"copy",cht:"複製"},grupDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},grupCpemis:{eng:"Permissions",cht:"管控使用權限"},grupEditBlngNoGrupId:{eng:"Can not find the id of permission group",cht:"無法找到權限群組Id"},grupEditBlngNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupEditCpemis:{eng:"Edit list of permission group",cht:"編輯使用權限"},grupEditCpemisForDisplay:{eng:"List of permission group",cht:"展示使用權限"},grupRnderCpemisNoPermission:{eng:"No permission",cht:"無使用任何權限"},grupRnderCpemisHasNPermissions:{eng:"Has {n} permission(s){nms}",cht:"使用 {n} 項權限{nms}"},grupSaveGrupsEmpty:{eng:"No user",cht:"未有變更權限群組資料"},grupSaveGrupsFail:{eng:"Failed to save permission groups",cht:"儲存權限群組數據失敗"},grupSaveGrupsSuccess:{eng:"Save permission groups successfully",cht:"儲存權限群組數據成功"},grupBlngEditUsers:{eng:"Edit permission group of users",cht:"編輯所屬使用者"},grupBlngEditUsersForDisplay:{eng:"Permission group of users",cht:"展示所屬使用者"},grupBlngRnderNoUser:{eng:"No users",cht:"無所屬使用者"},grupBlngRnderUsers:{eng:"Has {n} user(s){nms}",cht:"共被 {n} 位使用者{nms}使用"},grupBlngGrupNow:{eng:"Now permission group",cht:"目前權限群組"},grupBlngEditNoGrupName:{eng:"Can not find the name of permission group",cht:"無法找到權限群組名稱"},grupBlngEditNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupBlngDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},cpemiEditNoName:{eng:"Can not find the name of target",cht:"無法找到對象名稱"},cpemiEditNoTarget:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cpemiDeleteCheckTargets:{eng:"Delete targets(s)",cht:"刪除勾選對象"},userName:{eng:"Name of user",cht:"使用者名稱"},userNameEmpty:{eng:"Invalid name of user",cht:"尚未給予有效使用者名稱"},userNameDuplicate:{eng:"Duplicate name of user",cht:"使用者名稱出現重複"},userEmailEmpty:{eng:"Empty email of user",cht:"尚未給予使用者Email"},userEmailError:{eng:"Invalid email of user",cht:"使用者Email格式錯誤"},userEmailDuplicate:{eng:"Duplicate email of user",cht:"使用者Email出現重複"},userAddEmpty:{eng:"No user",cht:"尚未新增使用者資料"},userAdd:{eng:"Add user",cht:"新增使用者"},userAddNameNew:{eng:"New user",cht:"新使用者"},userAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},userCopy:{eng:"Copy user",cht:"複製使用者"},userCopyNameNew:{eng:"copy",cht:"複製"},userDeleteCheckUsers:{eng:"Delete user(s)",cht:"刪除勾選使用者"},userCgrups:{eng:"Permission groups",cht:"管控使用權限群組"},userEditCgrups:{eng:"Edit list of user",cht:"編輯使用權限群組"},userEditCgrupsForDisplay:{eng:"Permission groups of user",cht:"展示使用權限群組"},userEditCgrupsNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditCgrupsNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者資料"},userSaveUsersEmpty:{eng:"No user",cht:"未有變更使用者資料"},userSaveUsersFail:{eng:"Failed to save users",cht:"儲存使用者數據失敗"},userSaveUsersSuccess:{eng:"Save users successfully",cht:"儲存使用者數據成功"},userEditNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者數據"},userRnderCgrupsNoGroup:{eng:"No permission group",cht:"無使用任何權限群組"},userRnderCgrupsHasNGroups:{eng:"Has {n} permission group(s){nms}",cht:"使用 {n} 項權限群組{nms}"},cgrupEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},cgrupEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},cgrupDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},show:{eng:"Show",cht:"顯示"},active:{eng:"Active",cht:"啟用"},userId:{eng:"ID of the created user",cht:"創建使用者主鍵"},timeCreate:{eng:"Created time",cht:"創建時間"},userIdUpdate:{eng:"ID of the updated user",cht:"最新變更使用者主鍵"},timeUpdate:{eng:"Updated time",cht:"更新時間"},invalidUrl:{eng:"Invalid url",cht:"網址無效"},invalidTokenTar:{eng:"Invalid target token",cht:"目標 token 無效"},invalidTokenSelf:{eng:"Invalid self token",cht:"自身 token 無效"},invalidUserIdTar:{eng:"Invalid target user id",cht:"目標使用者 Id 無效"},noTokenInUrl:{eng:"Missing token in url",cht:"網址缺少 token"},noTokenUserIdInUrl:{eng:"Missing token or userId in url",cht:"網址缺少 token 或 userId"},cannotGetUserByUrl:{eng:"Cannot get user by url",cht:"無法由網址取得使用者"},cannotGetUserDataByUrl:{eng:"Cannot get user data by url",cht:"無法由網址取得使用者資料"},noUserDataByUrl:{eng:"No user data by url",cht:"該網址無使用者資料"},noUserDataAfterConvert:{eng:"No user data after permission conversion",cht:"權限轉換後無使用者資料"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},staEventTitle:{eng:"Event Frequency",cht:"事件發生頻率"},staTimeHr:{eng:"Hourly",cht:"每小時"},staTimeDay:{eng:"Daily",cht:"每日"},staTotal:{eng:"Total",cht:"全部加總"},staNoData:{eng:"No event data",cht:"尚無事件資料"},getDataError:{eng:"Failed to load data",cht:"資料載入失敗"},staTableTitle:{eng:"Event Statistics",cht:"事件統計表"},staColEvent:{eng:"Event",cht:"事件"},staColLast1Day:{eng:"Last 1 Day",cht:"最近1日"},staColLast8Hour:{eng:"Last 8 Hours",cht:"最近8小時"},staColLast4Hour:{eng:"Last 4 Hours",cht:"最近4小時"},staColLast1Hour:{eng:"Last 1 Hour",cht:"最近1小時"}},vl=(e={})=>{let t=de(e,"kpLangExt");Rt(t)||(t={});let n=de(e,"webName");Rt(n)||(n={});let s=de(e,"webDescription");Rt(s)||(s={});let r={};r={...r,...Zl},Rt(t)&&(r={...r,...t}),Rt(n)&&(r={...r,webName:{...n}}),Rt(s)&&(r={...r,webDescription:{...s}});let i={};return _n(["eng","cht"],e=>{let t={};_n(r,(n,s)=>{t[s]=n[e]}),i[e]=t}),i},Xl=o.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL($l).href:"undefined"==typeof document?location.href:c&&"SCRIPT"===c.tagName.toUpperCase()&&c.src||new URL("w-web-perm.umd.js",document.baseURI).href),Yl=e.dirname(Xl);let zl=(n={})=>{let s=de(n,"logFd","");_t(s)||(s="./logs");let r=de(n,"logInterval","");_t(r)||(r="hr");let i=de(n,"logNumKeep",null),u={fdLog:s,interval:r};if(null!=i&&""!==i){if(!Cn(i))throw new Error(`invalid logNumKeep[${i}], must be positive integer`);u.numKeep=mn(i)}let o=function(n={}){let s=Ds(),r=de(n,"timeZone",null),i=de(n,"fdLog");_t(i)||(i="./_logs");let u=de(n,"interval");"day"!==u&&"hr"!==u&&(u="day");let o=de(n,"numKeep");Cn(o)||(o="day"===u?365:8760),o=mn(o);let a=l.transport({targets:[{level:"info",target:e.resolve(Yl,"./formatter.mjs"),options:{interval:u,fdLog:i,timeZone:r}}]}),c=l(a),D=()=>{try{if(!Hn(i))return;let n="hr"===u?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,r=t.readdirSync(i).filter(e=>n.test(e));r.sort();let l=r.length-o;if(l<=0)return;let a=r.slice(0,l);for(let n of a){let r=e.join(i,n);try{t.unlinkSync(r),s.emit("delete",{fp:r,fn:n})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}};D();let M=setInterval(D,36e5);M.unref();let d=null,w=e=>{let t=c[e].bind(c);return(...n)=>{try{s.emit(e,{args:n})}catch(e){}t(...n)}};return s.fatal=w("fatal"),s.error=w("error"),s.warn=w("warn"),s.info=w("info"),s.debug=w("debug"),s.trace=w("trace"),s.cleanLogs=D,s.clear=(e={})=>{if(null!==d)return d;let t=de(e,"timeLimit");Cn(t)||(t=6e4),d=kn();let n=!1,s=()=>{n||(n=!0,clearInterval(M),d.resolve())},r=setTimeout(()=>{try{a.worker.terminate()}catch(e){}s()},t);try{c.flush(e=>{if(e||a.closed)return clearTimeout(r),void s();a.once("close",()=>{clearTimeout(r),s()}),a.end()})}catch(e){clearTimeout(r),s()}return d},s}(u);return o};function jl(){let e=Ds(),t={};function n(t,n){Ls(e,t,[n],{tag:"cache"})}function s(e,s={}){if(zs(t,e))return;let r=de(s,"fun");jn(r)||(r=async()=>{});let i=de(s,"inputs");pn(i)||(i=[]);let u=de(s,"timeExpired");Cn(u)||(u=5e3),u=mn(u);let o=de(s,"timeFrom");"end"!==o&&(o="start");let l=de(s,"useCacheWhenError");cn(l)||(l=!1);let a=de(s,"useCloneDeep");cn(a)||(a=!0),t[e]={needExec:!0,fun:r,pm:null,gen:0,inputs:i,value:null,time:null,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a},n("message",{fun:"set",key:e,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a})}async function r(e,s={}){if(zs(t,e)){let r=t[e],i=de(s,"useCloneDeep");if(cn(i)||(i=r.useCloneDeep),r.pm)return n("message",{fun:"get",key:e,msg:"waiting"}),await r.pm,i?au(r.value):r.value;let u=Date.now(),o=r.needExec,l=u-r.time;if(o?n("message",{fun:"get",key:e,msg:"execute first"}):r.timeExpired>0&&l>r.timeExpired&&(n("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:l}),o=!0),o){n("message",{fun:"get",key:e,msg:"fun start"}),r.needExec=!1;let t=r.gen,s=async()=>{try{let s;try{s=await r.fun(...r.inputs)}catch(i){if(n("error",{fun:"get",key:e,msg:i}),!r.useCacheWhenError)throw r.gen===t&&(r.needExec=!0),i;s=void 0}r.gen===t&&(r.value=s,r.time="end"===r.timeFrom?Date.now():u)}finally{r.pm=null,n("message",{fun:"get",key:e,msg:"fun end"})}};r.pm=s(),await r.pm}else n("message",{fun:"get",key:e,msg:"use cache"});return i?au(r.value):r.value}return n("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=s,e.getProxy=async function(e,t={}){return s(e,t),r(e,t)},e.get=r,e.update=function(e,s){zs(t,e)&&(n("message",{fun:"updateValue",key:e}),t[e].value=s,t[e].time=Date.now(),t[e].gen+=1)},e.clear=function(e){zs(t,e)&&(n("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){zs(t,e)&&(n("message",{fun:"remove",key:e}),delete t[e])},e}function Gl(n,s=1){return function(e,t=1,n={}){let s=1,r=de(n,"path"),i=de(n,"fs");if(!Bn(e,{fs:i}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&Cn(t)&&(t=mn(t))<1&&(t=1),function e(n){let u=[];return Bn(n,{fs:i})?(_n(i.readdirSync(n),function(o){let l=r.resolve(n,o),a=null;try{a=i.statSync(l)}catch(e){}a&&a.isDirectory()?(u.push({isFolder:!0,level:s,path:l,name:r.basename(l)}),s+=1,(s<=t||null===t)&&(u=u.concat(e(l))),s-=1):u.push({isFolder:!1,level:s,path:l,name:r.basename(l)})}),u):u}(e)}(n,s,{path:e,fs:t})}let Kl=new Map,Fl=new Map;function Wl(e){let t=de(e,"fdLog");return _t(t)||(t="./logs"),t}function Ul(e,n,s){let r=Gl(e);r=r.filter(e=>!de(e,"isFolder",!1)),r=function(e,t,n){let s=t.format(n);return zo(e,e=>{let t=de(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=s.slice(0,t.length)})}(r,n,s);let i=[];for(let e of r)try{let n=t.statSync(e.path);if(!n.isFile())continue;i.push({path:e.path,name:e.name,size:n.size,mtimeMs:n.mtimeMs})}catch(e){}return i}function kl(e){let t=new Map;return n=>{let s=Math.floor(n/6e4),r=t.get(s);return void 0===r&&(r=rs(6e4*s).format(e),t.set(s,r)),r}}function Vl(e,n){return new Promise((s,r)=>{let i=null,u=t.createReadStream(e,{encoding:"utf8"}),o=a.createInterface({input:u,crlfDelay:1/0});o.on("line",n);let l=e=>{i=e,o.close()};u.on("error",l),o.on("error",l),u.on("close",()=>{i?r(i):s()})})}function Ql(e){let t=null;try{t=JSON.parse(e)}catch(e){return null}return null===t||"object"!=typeof t?null:t}async function Bl(e,t,n,s=null){jn(s)||(s=kl(n));let r={minTimeMs:null,ev:{}};return await Vl(e,e=>{let n=Ql(e);if(null===n)return;let i=n.event;if(!_t(i))return;let u=function(e){return"number"==typeof e?e:_t(e)?rs(e).valueOf():NaN}(n.time);if(Number.isNaN(u))return;if((null===r.minTimeMs||u<r.minTimeMs)&&(r.minTimeMs=u),!(u>t))return;let o=s(u),l=r.ev[o];void 0===l&&(l={count:0,kp:{}},r.ev[o]=l),l.count+=1,l.kp[i]=(l.kp[i]||0)+1}),r}async function Hl(e,t,n){let s=kl(n),r=[];for(let i of e)try{let e=await Bl(i.path,t,n,s);r.push({name:i.name,ok:!0,agg:e})}catch(e){r.push({name:i.name,ok:!1,err:String(de(e,"message",e))})}return r}function Jl(e,t){for(let n in t.ev){let s=t.ev[n],r=e[n];void 0===r&&(r={count:0,kp:{}},e[n]=r),r.count+=s.count;for(let e in s.kp)r.kp[e]=(r.kp[e]||0)+s.kp[e]}return e}async function Pl(t,n={}){let s=!1!==de(n,"useCache"),r=de(n,"scanFiles");jn(r)||(r=Hl);let i=de(n,"srLog",null),u=Ul(t.fdLog,t.tStart,t.fmt),o=function(e){let t=Kl.get(e);return t||(t=new Map,Kl.set(e,t)),t}((l=t.fdLog,a=t.fmt,`${e.resolve(l)}|${a}`));var l,a;let c=[],D={};for(let e of u){let n=s?o.get(e.name):void 0;void 0!==n&&n.size===e.size&&n.mtimeMs===e.mtimeMs&&(null===n.minTimeMs||n.minTimeMs>n.scanTStartMs&&n.minTimeMs>t.tStartMs)?D[e.name]=n.agg:c.push(e)}if(s){let e=new Set(u.map(e=>e.name));for(let t of o.keys())e.has(t)||o.delete(t)}let M=[];if(c.length>0){let e=await r(c.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),n={};for(let t of e)n[t.name]=t;for(let e of c){let r=n[e.name];if(r&&r.ok)D[e.name]=r.agg,s&&o.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:r.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:r.agg});else{let t=de(r,"err","no result");M.push({name:e.name,err:t}),s&&o.delete(e.name),i&&jn(i.warn)&&i.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let d={};for(let e of u){let t=D[e.name];t&&Jl(d,t)}let w=function(e,t){let n={};for(let e of t)n[e]={count:0};for(let t in e){let s=e[t];n[t]={count:s.count,...s.kp}}return Object.keys(n).sort().map(e=>({time:e,data:n[e]}))}(d,t.kpTime);return{rs:w,stat:{nFiles:u.length,nScanned:c.length,nCached:u.length-c.length,errors:M}}}function Rl(t=7,n="hr",s={}){let r=function(e=7,t="hr",n={}){let s=Wl(n),r=function(e){return"day"===e?"day":"hr"}(t),i="day"===r?"YYYY-MM-DD":"YYYY-MM-DDTHH",u="day"===r?"day":"hour",o=de(n,"timeNow"),l="number"==typeof o?rs(o):rs(),a=l.subtract(e,"day"),c=a.valueOf(),D=a.startOf(u),M=l.startOf(u),d=[];for(;!D.isAfter(M);)d.push(D.format(i)),D=D.add(1,u);return{fdLog:s,timeInterval:r,fmt:i,unit:u,tStart:a,tStartMs:c,kpTime:d,timeNow:l.valueOf()}}(t,n,s),i=JSON.stringify([e.resolve(r.fdLog),t,r.timeInterval,de(s,"timeNow",null)]);if(Fl.has(i))return Fl.get(i);let u=Pl(r,s).finally(()=>{Fl.delete(i)});return Fl.set(i,u),u}function Ol(e,t){return null==e?t:"number"==typeof e?e:rs(e).valueOf()}async function _l(e,t){let n={},s=[];for(let r of e)try{await Vl(r.path,e=>{let s=Ql(e);if(null===s)return;let r=s.event;if(!_t(r))return;let i=Ol(s.time,t),u=(o=(t-i)/36e5)<0?Math.ceil(o)||0:Math.floor(o);var o;u<0||u>24||(n[r]||(n[r]={last1Day:0,last8Hour:0,last4Hour:0,last1Hour:0}),u<=24&&(n[r].last1Day+=1),u<=8&&(n[r].last8Hour+=1),u<=4&&(n[r].last4Hour+=1),u<=1&&(n[r].last1Hour+=1))})}catch(e){s.push({name:r.name,err:String(de(e,"message",e))})}return{kp:n,errors:s}}let $l=o.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL($l).href:"undefined"==typeof document?location.href:c&&"SCRIPT"===c.tagName.toUpperCase()&&c.src||new URL("w-web-perm.umd.js",document.baseURI).href),ql=e.dirname($l),ea=e.resolve(ql,"staLogsCore.shellWorker.mjs");function ta(e,t=ea){let n=kn(),s=new u.Worker(t),r=!1,i=(e,t)=>{r||(r=!0,e(t));try{s.terminate()}catch(e){}};return s.on("message",e=>{"done"===e.mode?i(n.resolve,e.payload):"error"===e.mode&&i(n.reject,e.payload)}),s.on("error",e=>{i(n.reject,e)}),s.on("exit",e=>{i(n.reject,new Error(`staLogs worker exited without result, code=${e}`))}),s.postMessage(e),n}async function na(e,t,n){return 0===e.length?[]:ta({kind:"scan",files:e,tStartMs:t,fmt:n})}async function sa(e,t){return 0===e.length?{kp:{},errors:[]}:ta({kind:"table",files:e,nowMs:t})}function ra(e={}){return async function(e={}){let t=Wl(e),n=de(e,"timeNow"),s="number"==typeof n?rs(n):rs(),r=s.valueOf(),i=de(e,"scanTableFiles");jn(i)||(i=_l);let u=de(e,"srLog",null),o=Ul(t,s.subtract(25,"hour"),"YYYY-MM-DDTHH"),{kp:l,errors:a}=await i(o.map(e=>({path:e.path,name:e.name})),r);for(let e of a)u&&jn(u.warn)&&u.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:e.err});let c=[];for(let e in l)c.push({event:e,...l[e]});return c.sort((e,t)=>t.last1Day-e.last1Day),{rs:c,stat:{nFiles:o.length,errors:a}}}({...e,scanTableFiles:sa})}async function ia(e=7,t="hr",n={}){let s=await function(e=7,t="hr",n={}){return Rl(e,t,{...n,scanFiles:na})}(e,t,n);return s.rs}function ua(e={}){let t=de(e,"fdLog","");_t(t)||(t="./logs");let n=de(e,"mock",!1),s=de(e,"srLog",null),r=async(e=7,r="hr")=>{if(n)return function(e="hr"){let t="day"===e?"YYYY-MM-DD":"YYYY-MM-DDTHH",n="hr"===e?"hour":"day",s="hr"===e?48:7,r=["verifyConn","updateTargets-success","checkUser-error","api/getPerm-success","getWebInfor-success"],i=rs("2025-01-01T00:00:00"),u=[];for(let e=0;e<s;e++){let s=i.add(e,n),o={count:0};r.forEach((t,n)=>{let s=Math.round(20+15*Math.sin((e+3*n)/4));o[t]=s,o.count+=s}),u.push({time:s.format(t),data:o})}return u}(r);return await ia(e,r,{fdLog:t,srLog:s})},i=jl(),u=async()=>{if(n)return[{event:"verifyConn",last1Day:240,last8Hour:90,last4Hour:50,last1Hour:15},{event:"updateTargets-success",last1Day:180,last8Hour:70,last4Hour:38,last1Hour:11},{event:"checkUser-error",last1Day:120,last8Hour:45,last4Hour:24,last1Hour:7},{event:"api/getPerm-success",last1Day:90,last8Hour:33,last4Hour:18,last1Hour:5},{event:"getWebInfor-success",last1Day:60,last8Hour:22,last4Hour:12,last1Hour:3}];let e=await async function(e={}){return(await ra(e)).rs}({fdLog:t,srLog:s});return e},o=jl(),l={getStaEvent:async(e,t=7,n="hr")=>{let s=`${t}:${n}`,u=await i.getProxy(s,{fun:r,inputs:[t,n],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEvent"));return Array.isArray(u)?u:Promise.reject("cannotGetStaEvent")},getStaEventTable:async e=>{let t=await o.getProxy("staEventTable",{fun:u,inputs:[],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEventTable"));return Array.isArray(t)?t:Promise.reject("cannotGetStaEventTable")}};return l}return function(n,s,r,i,u,o,l={}){let a=null;if(!jn(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!_t(s))throw console.log("invalid url",s),new Error("invalid url");if(!_t(r))throw console.log("invalid db",r),new Error("invalid db");if(!jn(i))throw console.log("invalid getUserByToken",i),new Error("invalid getUserByToken");if(!jn(u))throw console.log("invalid verifyClientUser",u),new Error("invalid verifyClientUser");if(!jn(o))throw console.log("invalid verifyAppUser",o),new Error("invalid verifyAppUser");let c=de(l,"serverPort");Cn(c)||(c=11006),c=mn(c);let D=de(l,"useCheckUser",!1),M=de(l,"getUserById",null),d=de(l,"useExcludeWhenNotAdmin",!1),w=de(l,"webName",{}),y=de(l,"webDescription",{}),L=de(l,"webLogo",""),I=de(l,"subfolder","");var g,m;_t(I)&&("/"===Un(I,1)&&(m=1,I=_t(g=I)&&Fn(m)?0===(m=mn(m))?g:Wn(g,g.length-m):""),"/"!==Wn(I,1)&&(I=`/${I}`));let C=de(l,"urlRedirect",""),p=de(l,"showLanguage","n"),f=de(l,"language","eng"),h=de(l,"showModeEditTargets","n"),N=de(l,"showModeEditPemis","n"),b=de(l,"showModeEditGrups","n"),x=de(l,"showModeEditUsers","n"),T=de(l,"modeEditTargets","n"),A=de(l,"modeEditPemis","n"),E=de(l,"modeEditGrups","n"),S=de(l,"modeEditUsers","n"),Z=de(l,"widthTargetId",""),v=de(l,"widthTargetDescription",""),X=de(l,"widthPemisName",""),Y=de(l,"widthPemisDescription",""),z=de(l,"widthGrupsName",""),j=de(l,"widthGrupsDescription",""),G=de(l,"widthUsersName",""),K=de(l,"widthUsersEmail",""),F=de(l,"widthUsersDescription",""),W=de(l,"mappingBy","");"id"!==W&&"email"!==W&&"name"!==W&&(W="id");let U=de(l,"kpLangExt",null),k=vl({kpLangExt:U,webName:w,webDescription:y}),V=zl(l),Q={useCheckUser:D,getUserById:M,useExcludeWhenNotAdmin:d},B={};try{B=Po(gl,n,s,r,Q)}catch(e){throw console.log(e),V.error({event:"WServOrm-init-error",msg:e&&e.message||"WServOrmInitFailed"}),e}let{woItems:H,procOrm:J}=B,P=new function(){let e=new Map,t=new Map;return async(n,s)=>{let r=(e.get(n)||Promise.resolve()).then(async()=>await s(),async()=>await s());e.set(n,r.catch(()=>{})),t.set(n,(t.get(n)||0)+1);try{return await r}finally{let s=t.get(n)-1;s<=0?(t.delete(n),e.delete(n)):t.set(n,s)}}},R=Sl(H,J,{srLog:V,kmx:P}),O=de(l,"logFd","");_t(O)||(O="./logs");let _=ua({fdLog:O,mock:de(l,"staEventMock",!1),srLog:V}),$=async e=>{let t=null;if(_t(e)&&(t=i(e),Gn(t)&&(t=await t)),!Rt(t))return console.log("token",e),V.error({event:"getTokenUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");await(async e=>{if(!_t(de(e,"id","")))return console.log("user",e),V.error({event:"checkUser-error",msg:"cannotGetUserId"}),Promise.reject("cannotGetUserId");if(!_t(de(e,"email","")))return console.log("user",e),V.error({event:"checkUser-error",msg:"cannotGetUserEmail"}),Promise.reject("cannotGetUserEmail");if(!_t(de(e,"name","")))return console.log("user",e),V.error({event:"checkUser-error",msg:"cannotGetUserName"}),Promise.reject("cannotGetUserName");let t=de(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),V.error({event:"checkUser-error",msg:"cannotGetUserRole"}),Promise.reject("cannotGetUserRole"))})(t);let n=de(t,W,"");if(!_t(n))return console.log("userSelf",t),console.log("mappingBy",W),V.error({event:"getTokenUser-error",msg:"cannotGetUserProp",mappingBy:W}),Promise.reject("cannotGetUserProp");let s=await H.users.select({[W]:n,isActive:"y"});return s=de(s,0,null),Rt(s)?s:(console.log("userSelf",t),console.log("mappingBy",W),V.error({event:"getTokenUser-error",msg:"cannotGetUserFromPerm",mappingBy:W}),Promise.reject("cannotGetUserFromPerm"))},q=async(e,t="")=>{let n=await $(e),s=u(n,t);return Gn(s)&&(s=await s),s?n:(console.log("user",n),V.error({event:"getAndVerifyClientUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},ee=async(e,t="")=>{let n=null;if(_t(e)&&(n=i(e),Gn(n)&&(n=await n)),!Rt(n))return console.log("token",e),V.error({event:"getAndVerifyAppUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");let s=o(n,t);return Gn(s)&&(s=await s),s?n:(console.log("user",n),V.error({event:"getAndVerifyAppUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},te=async(e,t="")=>(await q(e,t),!0),ne=async e=>{let t=await(async(e,t)=>{let n=await H.users.select({[e]:t,isActive:"y"});return n=de(n,0,null),Rt(n)?n:null})("id",e);return Rt(t)?t:null},se=async e=>{let t=await ne(e),n=Tl(t,await H.grups.select(),await H.pemis.select(),await H.targets.select());if(!Rt(n))return console.log("userId",e),V.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules");let s=Ht(de(n,"grups",[]),"name");var r,i;return i=";",s=null==(r=s)?"":Jt.call(r,i),{user:{...t,grupsNames:s},rules:de(n,"rules",[])}},re="dist",ie="./node_modules/w-web-perm/dist";Hn(ie)&&(re=ie);let ue="index.html";try{let n=e.resolve(re,"index.tmp");if(Pn(n)||(n=e.resolve(re,ue)),!Pn(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let s=e.resolve(re,ue),r=t.readFileSync(n,"utf8");r=Rn(r,"/mperm/","{sfd}/"),r=Rn(r,"{sfd}",I),r=Rn(r,"{urlRedirect}",C),r=Rn(r,"{language}",f),t.writeFileSync(s,r,"utf8")}catch(e){console.log(e),console.log(`can not generate ${ue}`)}let oe=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let n=await Vn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("token",t),console.log("[API]getUserByToken/check token: invalid token"),V.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await q(t,"getUserByToken");return Rt(n)?(V.info({event:"api/getUserByToken-success",userId:de(n,"id","")}),n):(console.log("token",t),console.log("[API]getUserByToken/check user: invalid user"),V.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getPerm",handler:async function(e,t){let n=await Vn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("token",t),console.log("[API]getPerm/check token: invalid token"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await q(t,"getPerm");if(!Rt(n))return console.log("token",t),console.log("[API]getPerm/check userSelf: invalid userSelf"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=de(n,"id","");if(!_t(s))return console.log("token",t),console.log("userSelf",n),console.log("[API]getPerm/check userIdSelf: invalid userIdSelf"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await se(s);return Rt(r)?(V.info({event:"api/getPerm-success",userId:s}),r):(console.log("token",t),console.log("userSelf",n),console.log("userIdSelf",s),console.log("[API]getPerm/check userWithRulesSelf: invalid userWithRulesSelf"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getPermUserInfor",handler:async function(e,t){let n=await Vn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("[API]getPermUserInfor/check tokenSelf: invalid tokenSelf"),V.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!Rt(await ee(t,"getPermUserInfor")))return console.log("req.query",de(e,"query")),console.log("tokenSelf",t),console.log("[API]getPermUserInfor/check userSelf: invalid userSelf"),V.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=de(e,"query.userId","");if(!_t(n))return console.log("req.query",de(e,"query")),console.log("tokenSelf",t),console.log("[API]getPermUserInfor/check userIdFind: invalid userIdFind"),V.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=await se(n);return Rt(s)?(V.info({event:"api/getPermUserInfor-success",userId:n}),s):(console.log("userIdFind",n),console.log("[API]getPermUserInfor/check userWithRulesFind: invalid userWithRulesFind"),V.error({event:"api/getPermUserInfor-error",msg:"userIdNoPermrules"}),Promise.reject("userIdNoPermrules"))})();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let n=await Vn(async function(){let t=de(e,"query.token","");if(!_t(t))return console.log("req.query",de(e,"query")),console.log("token",t),console.log("[API]syncAndReplaceTabs/check token: invalid token"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=de(e,"query.keyTable","");if(!_t(n))return console.log("req.query",de(e,"query")),console.log("keyTable",n),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!["targets","pemis","grups","users"].includes(n))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",n),V.error({event:"api/syncAndReplaceTabs-error",msg:"invalidKeyTable",keyTable:n}),Promise.reject("invalidKeyTable");let s=await ee(t,"syncAndReplaceTabs");if(!Rt(s))return console.log("token",t),console.log("[API]syncAndReplaceTabs/check user: invalid user"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=de(s,"id","");if(!_t(r))return console.log("token",t),console.log("user",s),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let i=await(async e=>{let t=de(e,"payload");if(_t(t)&&(t=Kn(t)),!Rt(t))return console.log("payload",t),V.error({event:"parsePayload-error",msg:"invalidPayload"}),Promise.reject("invalidPayload");let n=de(t,"from","");if(!_t(n))return console.log("payload",t),V.error({event:"parsePayload-error",msg:"invalidFromInPayload"}),Promise.reject("invalidFromInPayload");let s=de(t,"rows",[]);return xn(s)?{from:n,rows:s}:(console.log("payload",t),V.error({event:"parsePayload-error",msg:"invalidRowsInPayload"}),Promise.reject("invalidRowsInPayload"))})(e),u=await(async(e,t,n)=>await P("syncAndReplaceTabs:"+n,async()=>{let s=de(t,"from","");if(!_t(s))return console.log("inp",t),V.error({event:"syncAndReplaceTabs-error",msg:"invalidFrom",keyTable:n}),Promise.reject("invalidFrom");let r=de(t,"rows",[]);return xn(r)?(r=Ht(r,(e,t)=>(e.from=s,e)),r=qn(r,gl[n].keys),await H[n].delAll({from:s}),await J(e,n,"insert",r)):(console.log("inp",t),console.log("keyTable",n),V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",keyTable:n}),Promise.reject("invalidRows"))}))(r,i,n);return V.info({event:"api/syncAndReplaceTabs-success",userId:r,keyTable:n}),u})();return zn(n.msg)&&(n.msg=n.msg.message),n}}],le=ot(gl);return a=new mu({port:c,pathStaticFiles:re,apiName:"api",apis:oe,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:s,req:r})=>{let i=function(e,t){return _t(e)&&Fn(t)?0===(t=mn(t))?e:Un(e,e.length-t):""}(t,7);if(!_t(i))return console.log("apiType",e),console.log("authorization",t),console.log("invalid token"),!1;let u=!1,o="";await te(i,e).then(()=>{u=!0}).catch(e=>{o="string"==typeof e?e:e&&e.message||"checkTokenFail"});let l=de(s,"x-forwarded-for","").split(",")[0].trim();_t(l)||(l=de(r,"info.remoteAddress","")||de(r,"socket.remoteAddress","")||de(r,"connection.remoteAddress",""));let a=de(s,"origin",""),c=de(s,"referer","");return u?V.info({event:"verifyConn",ok:u,apiType:e,ip:l,origin:a,referer:c}):V.error({event:"verifyConn-error",ok:u,apiType:e,ip:l,origin:a,referer:c,msg:o}),u},getUserIdByToken:async e=>{let t=de(await i(e),"id","");return _t(t)?t:(console.log("token",e),console.log("userId",t),V.error({event:"getUserIdByToken-error",msg:"cannotFindUserId"}),Promise.reject("cannotFindUserId"))},corsOrigins:["*"],useDbOrm:!0,kpOrm:H,operOrm:J,tableNamesExec:le,methodsExec:["select","insert","save","del","delAll"],tableNamesSync:le,kpFunExt:{getWebInfor:e=>(V.info({event:"getWebInfor-success",userId:e}),{webLogo:L,showLanguage:p,language:f,kpLang:k,showModeEditTargets:h,showModeEditPemis:N,showModeEditGrups:b,showModeEditUsers:x,modeEditTargets:T,modeEditPemis:A,modeEditGrups:E,modeEditUsers:S,widthTargetId:Z,widthTargetDescription:v,widthPemisName:X,widthPemisDescription:Y,widthGrupsName:z,widthGrupsDescription:j,widthUsersName:G,widthUsersEmail:K,widthUsersDescription:F}),updateTargets:R.updateTargets,updatePemis:R.updatePemis,updateGrups:R.updateGrups,updateUsers:(e,t)=>{let n="for:grups"===S?{pickKeysOnly:["cgrups"]}:{};return R.updateUsers(e,t,n)},getStaEvent:async(e,t,n)=>{try{let s=await _.getStaEvent(e,t,n);return V.info({event:"getStaEvent-success",userId:e}),s}catch(t){throw V.error({event:"getStaEvent-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEvent"}),t}},getStaEventTable:async e=>{try{let t=await _.getStaEventTable(e);return V.info({event:"getStaEventTable-success",userId:e}),t}catch(t){throw V.error({event:"getStaEventTable-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEventTable"}),t}}},fpTableTags:"tableTags-web-perm.json"}),a}});
|
|
7
7
|
//# sourceMappingURL=w-web-perm.umd.js.map
|